summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/windows/qwindowsfontdatabase.cpp
diff options
context:
space:
mode:
authorjian liang <jianliang79@gmail.com>2012-02-13 21:26:28 +0800
committerQt by Nokia <qt-info@nokia.com>2012-02-16 04:23:20 +0100
commit0347ac1982477923ce93722ddd52bb9cb700961f (patch)
treee92e717472ac55c112356e717ee556ede82db553 /src/plugins/platforms/windows/qwindowsfontdatabase.cpp
parentdfddabe1157bc6d826612b82d5bfb301205e7ad5 (diff)
Use english name to match font in windows platform
In windows platform, simplified chinese envrionment, the default font family name is "SimSun" which is not in the font list generated by EnumFontFamiliesEx(), this will cause chinese font can't be displayed. This patch will generate font's english name during font enumeration in windows platform, and take font's english name into consideration in font matching. The english name generation code is taken from Qt4.8 Change-Id: Ie939ec0c8c08c628a835c7a53fb22d0545626d9c Reviewed-by: Jiang Jiang <jiang.jiang@nokia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Diffstat (limited to 'src/plugins/platforms/windows/qwindowsfontdatabase.cpp')
-rw-r--r--src/plugins/platforms/windows/qwindowsfontdatabase.cpp17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/plugins/platforms/windows/qwindowsfontdatabase.cpp b/src/plugins/platforms/windows/qwindowsfontdatabase.cpp
index fa95f4f529..1df985c8a7 100644
--- a/src/plugins/platforms/windows/qwindowsfontdatabase.cpp
+++ b/src/plugins/platforms/windows/qwindowsfontdatabase.cpp
@@ -329,6 +329,11 @@ static inline QFontDatabase::WritingSystem writingSystemFromScript(const QString
return QFontDatabase::Any;
}
+extern bool localizedName(const QString &name);
+extern QString getEnglishName(const QString &familyName);
+
+Q_GUI_EXPORT void qt_registerAliasToFontFamily(const QString &familyName, const QString &alias);
+
static bool addFontToDatabase(QString familyName, const QString &scriptName,
const TEXTMETRIC *textmetric,
const FONTSIGNATURE *signature,
@@ -365,10 +370,10 @@ static bool addFontToDatabase(QString familyName, const QString &scriptName,
<< " stretch=" << stretch;
}
-/* Fixme: omitted for the moment
- if(ttf && localizedName(familyName) && family->english_name.isEmpty())
- family->english_name = getEnglishName(familyName);
-*/
+ QString englishName;
+ if (ttf && localizedName(familyName))
+ englishName = getEnglishName(familyName);
+
QSupportedWritingSystems writingSystems;
if (type & TRUETYPE_FONTTYPE) {
quint32 unicodeRange[4] = {
@@ -405,6 +410,10 @@ static bool addFontToDatabase(QString familyName, const QString &scriptName,
if (weight <= QFont::DemiBold && style != QFont::StyleItalic)
QPlatformFontDatabase::registerFont(familyName, foundryName, QFont::Bold,
QFont::StyleItalic, stretch, antialias, scalable, size, fixed, writingSystems, 0);
+
+ if (!englishName.isEmpty())
+ qt_registerAliasToFontFamily(familyName, englishName);
+
return true;
}