From db2764db3466221ad680d63ff2224cdd016fc351 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Wed, 27 Apr 2016 15:18:29 +0400 Subject: Get rid of requiresOpenType() helper There is already an array of writing systems for which GSUB|GPOS table is required (also rename it from "openType" to "capabilityForWritingSystem", to reflect its meaning). Change-Id: I7cfd4a80d5ca13f9312b3644b2bd738d6015c71c Reviewed-by: Eskil Abrahamsen Blomfeldt --- .../fontconfig/qfontconfigdatabase.cpp | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) (limited to 'src/platformsupport') diff --git a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp index c15e0a1183..ca79224850 100644 --- a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp +++ b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp @@ -62,12 +62,6 @@ static inline int mapToQtWeightForRange(int fcweight, int fcLower, int fcUpper, return qtLower + ((fcweight - fcLower) * (qtUpper - qtLower)) / (fcUpper - fcLower); } -static inline bool requiresOpenType(int writingSystem) -{ - return ((writingSystem >= QFontDatabase::Syriac && writingSystem <= QFontDatabase::Sinhala) - || writingSystem == QFontDatabase::Khmer || writingSystem == QFontDatabase::Nko); -} - static inline int weightFromFcWeight(int fcweight) { // Font Config uses weights from 0 to 215 (the highest enum value) while QFont ranges from @@ -293,10 +287,10 @@ static const char *languageForWritingSystem[] = { Q_STATIC_ASSERT(sizeof(languageForWritingSystem) / sizeof(const char *) == QFontDatabase::WritingSystemsCount); #if FC_VERSION >= 20297 -// Newer FontConfig let's us sort out fonts that contain certain glyphs, but no -// open type tables for is directly. Do this so we don't pick some strange -// pseudo unicode font -static const char *openType[] = { +// Newer FontConfig let's us sort out fonts that report certain scripts support, +// but no open type tables for handling them correctly. +// Check the reported script presence in the FC_CAPABILITY's "otlayout:" section. +static const char *capabilityForWritingSystem[] = { 0, // Any 0, // Latin 0, // Greek @@ -332,7 +326,7 @@ static const char *openType[] = { 0, // Runic "nko " // N'Ko }; -Q_STATIC_ASSERT(sizeof(openType) / sizeof(const char *) == QFontDatabase::WritingSystemsCount); +Q_STATIC_ASSERT(sizeof(capabilityForWritingSystem) / sizeof(*capabilityForWritingSystem) == QFontDatabase::WritingSystemsCount); #endif static const char *getFcFamilyForStyleHint(const QFont::StyleHint style) @@ -438,11 +432,10 @@ static void populateFromPattern(FcPattern *pattern) #if FC_VERSION >= 20297 FcChar8 *cap = Q_NULLPTR; for (int j = 1; j < QFontDatabase::WritingSystemsCount; ++j) { - if (writingSystems.supported(QFontDatabase::WritingSystem(j)) - && requiresOpenType(j) && openType[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), openType[j]) == 0) + if (res == FcResultMatch && strstr(reinterpret_cast(cap), capabilityForWritingSystem[j]) == 0) writingSystems.setSupported(QFontDatabase::WritingSystem(j),false); } } -- cgit v1.2.3