Revert "Fix font matching of typographic families on Windows"
This reverts commit bcd2fa484a
.
There was a report that this caused infinite recursion on some
systems, so we revert it for now and re-add it later when the
issue has been resolved.
Task-number: QTBUG-74983
Change-Id: I747e0437232d72d7a87eb602b10fa09c7130ce8f
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
This commit is contained in:
parent
28c9e0e606
commit
9d1905da9c
@ -804,13 +804,6 @@ QString qt_resolveFontFamilyAlias(const QString &alias)
|
||||
return alias;
|
||||
}
|
||||
|
||||
bool qt_isFontFamilyPopulated(const QString &familyName)
|
||||
{
|
||||
QFontDatabasePrivate *d = privateDb();
|
||||
QtFontFamily *f = d->family(familyName, QFontDatabasePrivate::RequestFamily);
|
||||
return f != nullptr && f->populated;
|
||||
}
|
||||
|
||||
/*!
|
||||
Returns a list of alternative fonts for the specified \a family and
|
||||
\a style and \a script using the \a styleHint given.
|
||||
|
@ -60,7 +60,6 @@ void qt_registerFont(const QString &familyname, const QString &stylename,
|
||||
|
||||
void qt_registerFontFamily(const QString &familyName);
|
||||
void qt_registerAliasToFontFamily(const QString &familyName, const QString &alias);
|
||||
bool qt_isFontFamilyPopulated(const QString &familyName);
|
||||
|
||||
/*!
|
||||
Registers the pre-rendered QPF2 font contained in the given \a dataArray.
|
||||
@ -666,16 +665,6 @@ void QPlatformFontDatabase::registerAliasToFontFamily(const QString &familyName,
|
||||
qt_registerAliasToFontFamily(familyName, alias);
|
||||
}
|
||||
|
||||
/*!
|
||||
Helper function that returns true if the font family has already been registered and populated.
|
||||
|
||||
\since 5.14
|
||||
*/
|
||||
bool QPlatformFontDatabase::isFamilyPopulated(const QString &familyName)
|
||||
{
|
||||
return qt_isFontFamilyPopulated(familyName);
|
||||
}
|
||||
|
||||
/*!
|
||||
\class QPlatformFontDatabase
|
||||
\since 5.0
|
||||
|
@ -139,8 +139,6 @@ public:
|
||||
|
||||
static void registerFontFamily(const QString &familyName);
|
||||
static void registerAliasToFontFamily(const QString &familyName, const QString &alias);
|
||||
|
||||
static bool isFamilyPopulated(const QString &familyName);
|
||||
};
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
@ -1012,8 +1012,7 @@ static bool addFontToDatabase(QString familyName,
|
||||
const LOGFONT &logFont,
|
||||
const TEXTMETRIC *textmetric,
|
||||
const FONTSIGNATURE *signature,
|
||||
int type,
|
||||
QWindowsFontDatabase *db)
|
||||
int type)
|
||||
{
|
||||
// the "@family" fonts are just the same as "family". Ignore them.
|
||||
if (familyName.isEmpty() || familyName.at(0) == QLatin1Char('@') || familyName.startsWith(QLatin1String("WST_")))
|
||||
@ -1093,12 +1092,6 @@ static bool addFontToDatabase(QString familyName,
|
||||
writingSystems.setSupported(ws);
|
||||
}
|
||||
|
||||
// We came here from populating a different font family, so we have
|
||||
// to ensure the entire typographic family is populated before we
|
||||
// mark it as such inside registerFont()
|
||||
if (!subFamilyName.isEmpty() && familyName != subFamilyName && !QPlatformFontDatabase::isFamilyPopulated(familyName))
|
||||
db->populateFamily(familyName);
|
||||
|
||||
QPlatformFontDatabase::registerFont(familyName, styleName, foundryName, weight,
|
||||
style, stretch, antialias, scalable, size, fixed, writingSystems, createFontFile(faceName));
|
||||
|
||||
@ -1125,7 +1118,7 @@ static bool addFontToDatabase(QString familyName,
|
||||
}
|
||||
|
||||
static int QT_WIN_CALLBACK storeFont(const LOGFONT *logFont, const TEXTMETRIC *textmetric,
|
||||
DWORD type, LPARAM lParam)
|
||||
DWORD type, LPARAM)
|
||||
{
|
||||
const ENUMLOGFONTEX *f = reinterpret_cast<const ENUMLOGFONTEX *>(logFont);
|
||||
const QString familyName = QString::fromWCharArray(f->elfLogFont.lfFaceName);
|
||||
@ -1137,7 +1130,7 @@ static int QT_WIN_CALLBACK storeFont(const LOGFONT *logFont, const TEXTMETRIC *t
|
||||
const FONTSIGNATURE *signature = nullptr;
|
||||
if (type & TRUETYPE_FONTTYPE)
|
||||
signature = &reinterpret_cast<const NEWTEXTMETRICEX *>(textmetric)->ntmFontSig;
|
||||
addFontToDatabase(familyName, styleName, *logFont, textmetric, signature, type, reinterpret_cast<QWindowsFontDatabase *>(lParam));
|
||||
addFontToDatabase(familyName, styleName, *logFont, textmetric, signature, type);
|
||||
|
||||
// keep on enumerating
|
||||
return 1;
|
||||
@ -1156,7 +1149,7 @@ void QWindowsFontDatabase::populateFamily(const QString &familyName)
|
||||
familyName.toWCharArray(lf.lfFaceName);
|
||||
lf.lfFaceName[familyName.size()] = 0;
|
||||
lf.lfPitchAndFamily = 0;
|
||||
EnumFontFamiliesEx(dummy, &lf, storeFont, reinterpret_cast<LPARAM>(this), 0);
|
||||
EnumFontFamiliesEx(dummy, &lf, storeFont, 0, 0);
|
||||
ReleaseDC(0, dummy);
|
||||
}
|
||||
|
||||
@ -1597,7 +1590,7 @@ QStringList QWindowsFontDatabase::addApplicationFont(const QByteArray &fontData,
|
||||
GetTextMetrics(hdc, &textMetrics);
|
||||
|
||||
addFontToDatabase(familyName, styleName, lf, &textMetrics, &signatures.at(j),
|
||||
TRUETYPE_FONTTYPE, this);
|
||||
TRUETYPE_FONTTYPE);
|
||||
|
||||
SelectObject(hdc, oldobj);
|
||||
DeleteObject(hfont);
|
||||
|
@ -96,8 +96,6 @@ public:
|
||||
QWindowsFontDatabase();
|
||||
~QWindowsFontDatabase() override;
|
||||
|
||||
void ensureFamilyPopulated(const QString &familyName);
|
||||
|
||||
void populateFontDatabase() override;
|
||||
void populateFamily(const QString &familyName) override;
|
||||
QFontEngine *fontEngine(const QFontDef &fontDef, void *handle) override;
|
||||
|
Loading…
Reference in New Issue
Block a user