EXT-6580 restrict size of linux's fallback font list
reviewed and approved for hotfix branch by Q.master
parent
8654ba5e25
commit
ac10340316
|
|
@ -2543,6 +2543,7 @@ std::vector<std::string> LLWindowSDL::getDynamicFallbackFontList()
|
|||
// Use libfontconfig to find us a nice ordered list of fallback fonts
|
||||
// specific to this system.
|
||||
std::string final_fallback("/usr/share/fonts/truetype/kochi/kochi-gothic.ttf");
|
||||
const int max_font_count_cutoff = 40; // fonts are expensive in the current system, don't enumerate an arbitrary number of them
|
||||
// Our 'ideal' font properties which define the sorting results.
|
||||
// slant=0 means Roman, index=0 means the first face in a font file
|
||||
// (the one we actually use), weight=80 means medium weight,
|
||||
|
|
@ -2558,7 +2559,6 @@ std::vector<std::string> LLWindowSDL::getDynamicFallbackFontList()
|
|||
std::vector<std::string> rtns;
|
||||
FcFontSet *fs = NULL;
|
||||
FcPattern *sortpat = NULL;
|
||||
int font_count = 0;
|
||||
|
||||
llinfos << "Getting system font list from FontConfig..." << llendl;
|
||||
|
||||
|
|
@ -2602,12 +2602,13 @@ std::vector<std::string> LLWindowSDL::getDynamicFallbackFontList()
|
|||
FcPatternDestroy(sortpat);
|
||||
}
|
||||
|
||||
int found_font_count = 0;
|
||||
if (fs)
|
||||
{
|
||||
// Get the full pathnames to the fonts, where available,
|
||||
// which is what we really want.
|
||||
int i;
|
||||
for (i=0; i<fs->nfont; ++i)
|
||||
found_font_count = fs->nfont;
|
||||
for (int i=0; i<fs->nfont; ++i)
|
||||
{
|
||||
FcChar8 *filename;
|
||||
if (FcResultMatch == FcPatternGetString(fs->fonts[i],
|
||||
|
|
@ -2616,7 +2617,8 @@ std::vector<std::string> LLWindowSDL::getDynamicFallbackFontList()
|
|||
&& filename)
|
||||
{
|
||||
rtns.push_back(std::string((const char*)filename));
|
||||
++font_count;
|
||||
if (rtns.size() >= max_font_count_cutoff)
|
||||
break; // hit limit
|
||||
}
|
||||
}
|
||||
FcFontSetDestroy (fs);
|
||||
|
|
@ -2629,7 +2631,7 @@ std::vector<std::string> LLWindowSDL::getDynamicFallbackFontList()
|
|||
{
|
||||
lldebugs << " file: " << *it << llendl;
|
||||
}
|
||||
llinfos << "Using " << font_count << " system font(s)." << llendl;
|
||||
llinfos << "Using " << rtns.size() << "/" << found_font_count << " system fonts." << llendl;
|
||||
|
||||
rtns.push_back(final_fallback);
|
||||
return rtns;
|
||||
|
|
|
|||
Loading…
Reference in New Issue