diff --git a/src/gui/text/qfontdatabase.cpp b/src/gui/text/qfontdatabase.cpp index 0ee8423edc..7012ca0869 100644 --- a/src/gui/text/qfontdatabase.cpp +++ b/src/gui/text/qfontdatabase.cpp @@ -905,13 +905,6 @@ static QtFontStyle *bestStyle(QtFontFoundry *foundry, const QtFontStyle::Key &st return foundry->styles[best]; } -enum { - FamilyMismatch = 0x800000, - ScriptMismatch = 0x080000, - PitchMismatch = 0x004000, - StyleMismatch = 0x002000, - BitmapScaledPenalty = 0x001000 -}; static unsigned int bestFoundry(int script, unsigned int score, int styleStrategy, @@ -1015,16 +1008,20 @@ unsigned int bestFoundry(int script, unsigned int score, int styleStrategy, unsigned int this_score = 0x0000; - + enum { + PitchMismatch = 0x4000, + StyleMismatch = 0x2000, + BitmapScaledPenalty = 0x1000 + }; if (pitch != '*') { if ((pitch == 'm' && !family->fixedPitch) || (pitch == 'p' && family->fixedPitch)) - this_score |= PitchMismatch; + this_score += PitchMismatch; } if (styleKey != style->key) - this_score |= StyleMismatch; + this_score += StyleMismatch; if (!style->smoothScalable && px != size->pixelSize) // bitmap scaled - this_score |= BitmapScaledPenalty; + this_score += BitmapScaledPenalty; if (px != pixelSize) // close, but not exact, size match this_score += qAbs(px - pixelSize); @@ -1109,14 +1106,11 @@ static int match(int script, if (!matchFamilyName(family_name, test.family)) continue; - score &= ~FamilyMismatch; - test.family->ensurePopulated(); // Check if family is supported in the script we want if (writingSystem != QFontDatabase::Any && !familySupportsWritingSystem(test.family, writingSystem)) continue; - score &= ~ScriptMismatch; // as we know the script is supported, we can be sure // to find a matching font here. @@ -2416,7 +2410,7 @@ QFontEngine *QFontDatabasePrivate::findFont(const QFontDef &req, QList blackListed; unsigned int score = UINT_MAX; int index = match(multi ? QChar::Script_Common : script, request, family_name, foundry_name, &desc, blackListed, &score); - if ((score & FamilyMismatch) && QGuiApplicationPrivate::platformIntegration()->fontDatabase()->populateFamilyAliases(family_name)) { + if (score > 0 && QGuiApplicationPrivate::platformIntegration()->fontDatabase()->populateFamilyAliases(family_name)) { // We populated family aliases (e.g. localized families), so try again index = match(multi ? QChar::Script_Common : script, request, family_name, foundry_name, &desc, blackListed); }