From 4c6324b5a770254ac66f80583bcdce9cb5e282c4 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Wed, 27 Apr 2016 15:25:07 +0400 Subject: 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 --- .../fontconfig/qfontconfigdatabase.cpp | 24 +++++++++++----------- 1 file changed, 12 insertions(+), 12 deletions(-) (limited to 'src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp') 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(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(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; -- cgit v1.2.3