summaryrefslogtreecommitdiffstats
path: root/src/platformsupport/fontdatabases
diff options
context:
space:
mode:
Diffstat (limited to 'src/platformsupport/fontdatabases')
-rw-r--r--src/platformsupport/fontdatabases/windows/qwindowsfontdatabase.cpp13
-rw-r--r--src/platformsupport/fontdatabases/windows/qwindowsfontdatabase_ft.cpp13
2 files changed, 22 insertions, 4 deletions
diff --git a/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase.cpp b/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase.cpp
index a5779fc291..ab1fc9d647 100644
--- a/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase.cpp
+++ b/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase.cpp
@@ -1154,7 +1154,7 @@ void QWindowsFontDatabase::populateFamily(const QString &familyName)
ReleaseDC(0, dummy);
}
-static int QT_WIN_CALLBACK populateFontFamilies(const LOGFONT *logFont, const TEXTMETRIC *,
+static int QT_WIN_CALLBACK populateFontFamilies(const LOGFONT *logFont, const TEXTMETRIC *textmetric,
DWORD, LPARAM)
{
// the "@family" fonts are just the same as "family". Ignore them.
@@ -1163,6 +1163,13 @@ static int QT_WIN_CALLBACK populateFontFamilies(const LOGFONT *logFont, const TE
if (faceNameW[0] && faceNameW[0] != L'@' && wcsncmp(faceNameW, L"WST_", 4)) {
const QString faceName = QString::fromWCharArray(faceNameW);
QPlatformFontDatabase::registerFontFamily(faceName);
+ // Register current font's english name as alias
+ const bool ttf = (textmetric->tmPitchAndFamily & TMPF_TRUETYPE);
+ if (ttf && qt_localizedName(faceName)) {
+ const QString englishName = qt_getEnglishName(faceName);
+ if (!englishName.isEmpty())
+ QPlatformFontDatabase::registerAliasToFontFamily(faceName, englishName);
+ }
}
return 1; // continue
}
@@ -1178,7 +1185,9 @@ void QWindowsFontDatabase::populateFontDatabase()
EnumFontFamiliesEx(dummy, &lf, populateFontFamilies, 0, 0);
ReleaseDC(0, dummy);
// Work around EnumFontFamiliesEx() not listing the system font.
- QPlatformFontDatabase::registerFontFamily(QWindowsFontDatabase::systemDefaultFont().family());
+ QString systemDefaultFamily = QWindowsFontDatabase::systemDefaultFont().family();
+ if (QPlatformFontDatabase::resolveFontFamilyAlias(systemDefaultFamily).isEmpty())
+ QPlatformFontDatabase::registerFontFamily(systemDefaultFamily);
}
typedef QSharedPointer<QWindowsFontEngineData> QWindowsFontEngineDataPtr;
diff --git a/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase_ft.cpp b/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase_ft.cpp
index df84198862..ebb82baf6f 100644
--- a/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase_ft.cpp
+++ b/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase_ft.cpp
@@ -362,8 +362,15 @@ static int QT_WIN_CALLBACK populateFontFamilies(const LOGFONT *logFont, const TE
if (!key && ttf && qt_localizedName(faceName))
key = findFontKey(qt_getEnglishName(faceName));
}
- if (key)
+ if (key) {
QPlatformFontDatabase::registerFontFamily(faceName);
+ // Register current font's english name as alias
+ if (ttf && qt_localizedName(faceName)) {
+ const QString englishName = qt_getEnglishName(faceName);
+ if (!englishName.isEmpty())
+ QPlatformFontDatabase::registerAliasToFontFamily(faceName, englishName);
+ }
+ }
}
return 1; // continue
}
@@ -378,7 +385,9 @@ void QWindowsFontDatabaseFT::populateFontDatabase()
EnumFontFamiliesEx(dummy, &lf, populateFontFamilies, 0, 0);
ReleaseDC(0, dummy);
// Work around EnumFontFamiliesEx() not listing the system font
- QPlatformFontDatabase::registerFontFamily(QWindowsFontDatabase::systemDefaultFont().family());
+ QString systemDefaultFamily = QWindowsFontDatabase::systemDefaultFont().family();
+ if (QPlatformFontDatabase::resolveFontFamilyAlias(systemDefaultFamily).isEmpty())
+ QPlatformFontDatabase::registerFontFamily(systemDefaultFamily);
}
QFontEngine * QWindowsFontDatabaseFT::fontEngine(const QFontDef &fontDef, void *handle)