diff options
author | jian liang <jianliang79@gmail.com> | 2012-02-13 21:26:28 +0800 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-02-16 04:23:20 +0100 |
commit | 0347ac1982477923ce93722ddd52bb9cb700961f (patch) | |
tree | e92e717472ac55c112356e717ee556ede82db553 /src/plugins/platforms/windows/qwindowsfontdatabase.cpp | |
parent | dfddabe1157bc6d826612b82d5bfb301205e7ad5 (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.cpp | 17 |
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; } |