summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@digia.com>2013-11-28 09:07:36 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-11-28 16:25:03 +0100
commit6aa496c3665f8c337f5484515770dab47260c1fc (patch)
treefbaf403b6233ae00483f0bdafa195522a5b9f20f /src
parentcb6c51f026cfe35c6dc42fed20dd6919795649c6 (diff)
Streamline font match() function.
Determine writing system before executing the loop. Change-Id: I6c462bdef4d70860e76c7cc9d939e3e92983b173 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Diffstat (limited to 'src')
-rw-r--r--src/gui/text/qfontdatabase.cpp16
1 files changed, 6 insertions, 10 deletions
diff --git a/src/gui/text/qfontdatabase.cpp b/src/gui/text/qfontdatabase.cpp
index 9ff23cd325..61c93dc2ac 100644
--- a/src/gui/text/qfontdatabase.cpp
+++ b/src/gui/text/qfontdatabase.cpp
@@ -499,6 +499,8 @@ static const int scriptForWritingSystem[] = {
QChar::Script_Nko // Nko
};
+Q_STATIC_ASSERT(sizeof(scriptForWritingSystem) / sizeof(scriptForWritingSystem[0]) == QFontDatabase::WritingSystemsCount);
+
int qt_script_for_writing_system(QFontDatabase::WritingSystem writingSystem)
{
return scriptForWritingSystem[writingSystem];
@@ -882,6 +884,8 @@ static int match(int script, const QFontDef &request,
load(family_name, script);
+ const size_t writingSystem = std::find(scriptForWritingSystem, scriptForWritingSystem + QFontDatabase::WritingSystemsCount, script) - scriptForWritingSystem;
+
QFontDatabasePrivate *db = privateDb();
for (int x = 0; x < db->count; ++x) {
if (blacklistedFamilies.contains(x))
@@ -896,17 +900,9 @@ static int match(int script, const QFontDef &request,
if (family_name.isEmpty())
load(test.family->name, script);
- bool supported = (script == QChar::Script_Common);
- for (int ws = 1; !supported && ws < QFontDatabase::WritingSystemsCount; ++ws) {
- if (scriptForWritingSystem[ws] != script)
- continue;
- if (test.family->writingSystems[ws] & QtFontFamily::Supported)
- supported = true;
- }
- if (!supported) {
- // family not supported in the script we want
+ // Check if family is supported in the script we want
+ if (script != QChar::Script_Common && !(test.family->writingSystems[writingSystem] & QtFontFamily::Supported))
continue;
- }
// as we know the script is supported, we can be sure
// to find a matching font here.