Fix for fontconfig 2.9 behavior change
authorJiang Jiang <jiang.jiang@nokia.com>
Thu, 22 Mar 2012 12:14:24 +0000 (13:14 +0100)
committerQt by Nokia <qt-info@nokia.com>
Mon, 26 Mar 2012 07:12:05 +0000 (09:12 +0200)
Start from 2.9, fontconfig will reset the result to FcResultNoMatch at
the beginning of FcFontSort().

According to
http://lists.freedesktop.org/archives/fontconfig/2012-March/003857.html
the result value of FcFontSort() can be ignored, checking the nfont
value of the fontset returned is sufficient.

The fix works for pre-2.9 versions as well, since those versions don't
touch the result at all.

Change-Id: Iba6c1157e314088a90867292a4bd970bb873e284
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp

index 279a1fb..bf05433 100644 (file)
@@ -641,17 +641,15 @@ QStringList QFontconfigDatabase::fallbacksForFamily(const QString family, const
     FcPatternDestroy(pattern);
 
     if (fontSet) {
-        if (result == FcResultMatch) {
-            for (int i = 0; i < fontSet->nfont; i++) {
-                FcChar8 *value = 0;
-                if (FcPatternGetString(fontSet->fonts[i], FC_FAMILY, 0, &value) != FcResultMatch)
-                    continue;
-                //         capitalize(value);
-                QString familyName = QString::fromUtf8((const char *)value);
-                if (!fallbackFamilies.contains(familyName,Qt::CaseInsensitive) &&
-                    familyName.compare(family, Qt::CaseInsensitive)) {
-                    fallbackFamilies << familyName;
-                }
+        for (int i = 0; i < fontSet->nfont; i++) {
+            FcChar8 *value = 0;
+            if (FcPatternGetString(fontSet->fonts[i], FC_FAMILY, 0, &value) != FcResultMatch)
+                continue;
+            //         capitalize(value);
+            QString familyName = QString::fromUtf8((const char *)value);
+            if (!fallbackFamilies.contains(familyName,Qt::CaseInsensitive) &&
+                familyName.compare(family, Qt::CaseInsensitive)) {
+                fallbackFamilies << familyName;
             }
         }
         FcFontSetDestroy(fontSet);