summaryrefslogtreecommitdiffstats
path: root/src/gui/text/qfontdatabase.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/gui/text/qfontdatabase.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/gui/text/qfontdatabase.cpp')
-rw-r--r--src/gui/text/qfontdatabase.cpp24
1 files changed, 21 insertions, 3 deletions
diff --git a/src/gui/text/qfontdatabase.cpp b/src/gui/text/qfontdatabase.cpp
index fa9cae4359..77262d66f0 100644
--- a/src/gui/text/qfontdatabase.cpp
+++ b/src/gui/text/qfontdatabase.cpp
@@ -349,6 +349,7 @@ struct QtFontFamily
#endif
QString name;
+ QStringList aliases;
int count;
QtFontFoundry **foundries;
@@ -996,6 +997,25 @@ unsigned int bestFoundry(int script, unsigned int score, int styleStrategy,
return score;
}
+static bool matchFamilyName(const QString &familyName, QtFontFamily *f)
+{
+ if (familyName.isEmpty())
+ return true;
+
+ if (f->name.compare(familyName, Qt::CaseInsensitive) == 0)
+ return true;
+
+ QStringList::const_iterator it = f->aliases.constBegin();
+ while (it != f->aliases.constEnd()) {
+ if ((*it).compare(familyName, Qt::CaseInsensitive) == 0)
+ return true;
+
+ ++it;
+ }
+
+ return false;
+}
+
/*!
\internal
@@ -1045,9 +1065,7 @@ static void match(int script, const QFontDef &request,
test.family = db->families[x];
test.familyIndex = x;
- if (!family_name.isEmpty()
- && test.family->name.compare(family_name, Qt::CaseInsensitive) != 0
- )
+ if (!matchFamilyName(family_name, test.family))
continue;
if (family_name.isEmpty())