summaryrefslogtreecommitdiffstats
path: root/src/platformsupport
diff options
context:
space:
mode:
authorKonstantin Ritt <ritt.ks@gmail.com>2016-04-27 15:25:07 +0400
committerKonstantin Ritt <ritt.ks@gmail.com>2016-04-27 20:20:21 +0000
commit4c6324b5a770254ac66f80583bcdce9cb5e282c4 (patch)
tree2719b109f0b3f5ad88197eb1a2c78a3a53456e0a /src/platformsupport
parentdb2764db3466221ad680d63ff2224cdd016fc351 (diff)
Micro optimization to QFontconfigDatabase
Do not set WritingSystem supported just to unset it afterwards; test in-place and fallback gracefully. Change-Id: I6910019c08fcf3909b924c27271547aae2ea0ff1 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Diffstat (limited to 'src/platformsupport')
-rw-r--r--src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp24
1 files changed, 12 insertions, 12 deletions
diff --git a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
index ca79224850..8ebabf3419 100644
--- a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
+++ b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
@@ -409,11 +409,23 @@ static void populateFromPattern(FcPattern *pattern)
FcResult res = FcPatternGetLangSet(pattern, FC_LANG, 0, &langset);
if (res == FcResultMatch) {
bool hasLang = false;
+#if FC_VERSION >= 20297
+ FcChar8 *cap = Q_NULLPTR;
+ FcResult capRes = FcResultNoMatch;
+#endif
for (int j = 1; j < QFontDatabase::WritingSystemsCount; ++j) {
const FcChar8 *lang = (const FcChar8*) languageForWritingSystem[j];
if (lang) {
FcLangResult langRes = FcLangSetHasLang(langset, lang);
if (langRes != FcLangDifferentLang) {
+#if FC_VERSION >= 20297
+ if (capabilityForWritingSystem[j] != Q_NULLPTR) {
+ if (cap == Q_NULLPTR)
+ capRes = FcPatternGetString(pattern, FC_CAPABILITY, 0, &cap);
+ if (capRes == FcResultMatch && strstr(reinterpret_cast<const char *>(cap), capabilityForWritingSystem[j]) == 0)
+ continue;
+ }
+#endif
writingSystems.setSupported(QFontDatabase::WritingSystem(j));
hasLang = true;
}
@@ -429,18 +441,6 @@ static void populateFromPattern(FcPattern *pattern)
writingSystems.setSupported(QFontDatabase::Other);
}
-#if FC_VERSION >= 20297
- FcChar8 *cap = Q_NULLPTR;
- for (int j = 1; j < QFontDatabase::WritingSystemsCount; ++j) {
- if (capabilityForWritingSystem[j] && writingSystems.supported(QFontDatabase::WritingSystem(j))) {
- if (cap == Q_NULLPTR)
- res = FcPatternGetString(pattern, FC_CAPABILITY, 0, &cap);
- if (res == FcResultMatch && strstr(reinterpret_cast<const char *>(cap), capabilityForWritingSystem[j]) == 0)
- writingSystems.setSupported(QFontDatabase::WritingSystem(j),false);
- }
- }
-#endif
-
FontFile *fontFile = new FontFile;
fontFile->fileName = QString::fromLocal8Bit((const char *)file_value);
fontFile->indexValue = indexValue;