Revert "Avoid populating font family aliases if family matched"
This reverts commit 69d525a6fa.
The change introduced behavior changes on Windows, where family
aliases are used to build a full set of styles for a family.
Change-Id: I64ca1cf5febf0a6277cbe0a0041ccdb76da72196
Pick-to: 6.3 6.2 5.15
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
bb10
parent
9a74d94ff5
commit
344e0e7141
|
|
@ -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<int> 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);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue