Bug 1724907 - Don't use system-ui as a fallback generic. r=jfkthame

As it's usually not very useful. I don't know how easily we can add a
reliable test for this, let me know if you come up with an idea to do
that.

Differential Revision: https://phabricator.services.mozilla.com/D122222
This commit is contained in:
Emilio Cobos Álvarez 2021-08-10 14:19:04 +00:00
Родитель 9cfa0db31b
Коммит 59692ca913
2 изменённых файлов: 11 добавлений и 8 удалений

Просмотреть файл

@ -1876,10 +1876,14 @@ void gfxFontGroup::BuildFontList() {
fonts);
} else {
MOZ_ASSERT(name.IsGeneric());
if (mFirstGeneric == StyleGenericFontFamily::None) {
mFirstGeneric = name.AsGeneric();
const StyleGenericFontFamily generic = name.AsGeneric();
// system-ui is usually a single family, so it doesn't work great as
// fallback. Prefer the following generic or the language default instead.
if (mFallbackGeneric == StyleGenericFontFamily::None &&
generic != StyleGenericFontFamily::SystemUi) {
mFallbackGeneric = generic;
}
pfl->AddGenericFonts(name.AsGeneric(), mLanguage, fonts);
pfl->AddGenericFonts(generic, mLanguage, fonts);
if (mTextPerf) {
mTextPerf->current.genericLookups++;
}
@ -3690,8 +3694,8 @@ gfxFont* gfxFontGroup::WhichPrefFontSupportsChar(
for (i = 0; i < numLangs; i++) {
eFontPrefLang currentLang = prefLangs[i];
StyleGenericFontFamily generic =
mFirstGeneric != StyleGenericFontFamily::None
? mFirstGeneric
mFallbackGeneric != StyleGenericFontFamily::None
? mFallbackGeneric
: pfl->GetDefaultGeneric(currentLang);
gfxPlatformFontList::PrefFontList* families =
pfl->GetPrefFontsLangGroup(generic, currentLang);

Просмотреть файл

@ -1416,9 +1416,8 @@ class gfxFontGroup final : public gfxTextRunFactory {
bool mExplicitLanguage; // Does mLanguage come from an explicit attribute?
// First CSS generic in the list, if any (used to select among font prefs
// during fallback)
mozilla::StyleGenericFontFamily mFirstGeneric =
// Generic font family used to select among font prefs during fallback.
mozilla::StyleGenericFontFamily mFallbackGeneric =
mozilla::StyleGenericFontFamily::None;
uint32_t mFontListGeneration = 0; // platform font list generation for this