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:
Eskil Abrahamsen Blomfeldt 2019-04-08 12:58:17 +02:00
parent 28c9e0e606
commit 9d1905da9c
5 changed files with 5 additions and 34 deletions

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -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);

View File

@ -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;