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>
This commit is contained in:
Konstantin Ritt 2016-04-27 15:25:07 +04:00
parent db2764db34
commit 4c6324b5a7

View File

@ -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;