From 3c3c445dafc2e0d6ef2af1b9af17a66484131cbc Mon Sep 17 00:00:00 2001 From: Jiang Jiang Date: Thu, 22 Mar 2012 13:14:24 +0100 Subject: Fix for fontconfig 2.9 behavior change 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 --- .../fontdatabases/fontconfig/qfontconfigdatabase.cpp | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) (limited to 'src/platformsupport') diff --git a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp index 279a1fbc22..bf05433b22 100644 --- a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp +++ b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp @@ -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); -- cgit v1.2.3