From 9d56e9eae67bcde3f102503229e98f802d6d048c Mon Sep 17 00:00:00 2001 From: Liang Qi Date: Wed, 18 Sep 2013 14:31:43 +0200 Subject: test: fix tst_QFont::defaultFamily on Mac OS X 10.8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Task-number: QTBUG-32834 Change-Id: Iac771eb0a544ae58d203717c39a13d2d21e3c3ed Reviewed-by: Tor Arne Vestbø --- .../fontdatabases/mac/qcoretextfontdatabase.mm | 60 +++++++++++----------- 1 file changed, 30 insertions(+), 30 deletions(-) (limited to 'src/platformsupport') diff --git a/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm b/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm index 5139f11d23..0032dc2aff 100644 --- a/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm +++ b/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm @@ -372,43 +372,43 @@ QStringList QCoreTextFontDatabase::fallbacksForFamily(const QString &family, QFo static QHash fallbackLists; + if (!family.isEmpty()) { #if QT_MAC_PLATFORM_SDK_EQUAL_OR_ABOVE(__MAC_10_8, __IPHONE_6_0) - // CTFontCopyDefaultCascadeListForLanguages is available in the SDK + // CTFontCopyDefaultCascadeListForLanguages is available in the SDK #if QT_MAC_DEPLOYMENT_TARGET_BELOW(__MAC_10_8, __IPHONE_6_0) - // But we have to feature check at runtime - if (&CTFontCopyDefaultCascadeListForLanguages) + // But we have to feature check at runtime + if (&CTFontCopyDefaultCascadeListForLanguages) #endif - { - if (fallbackLists.contains(family)) - return fallbackLists.value(family); - - if (!familyNameToPsName.contains(family)) - const_cast(this)->populateFontDatabase(); - - QCFType font = CTFontCreateWithName(QCFString(familyNameToPsName[family]), 12.0, NULL); - if (font) { - NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - NSArray *languages = [defaults stringArrayForKey: @"AppleLanguages"]; - - QCFType cascadeList = (CFArrayRef) CTFontCopyDefaultCascadeListForLanguages(font, (CFArrayRef) languages); - if (cascadeList) { - QStringList fallbackList; - const int numCascades = CFArrayGetCount(cascadeList); - for (int i = 0; i < numCascades; ++i) { - CTFontDescriptorRef fontFallback = (CTFontDescriptorRef) CFArrayGetValueAtIndex(cascadeList, i); - QCFString fallbackFamilyName = (CFStringRef) CTFontDescriptorCopyLocalizedAttribute(fontFallback, kCTFontFamilyNameAttribute, NULL); - fallbackList.append(QCFString::toQString(fallbackFamilyName)); + { + if (fallbackLists.contains(family)) + return fallbackLists.value(family); + + if (!familyNameToPsName.contains(family)) + const_cast(this)->populateFontDatabase(); + + QCFType font = CTFontCreateWithName(QCFString(familyNameToPsName[family]), 12.0, NULL); + if (font) { + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + NSArray *languages = [defaults stringArrayForKey: @"AppleLanguages"]; + + QCFType cascadeList = (CFArrayRef) CTFontCopyDefaultCascadeListForLanguages(font, (CFArrayRef) languages); + if (cascadeList) { + QStringList fallbackList; + const int numCascades = CFArrayGetCount(cascadeList); + for (int i = 0; i < numCascades; ++i) { + CTFontDescriptorRef fontFallback = (CTFontDescriptorRef) CFArrayGetValueAtIndex(cascadeList, i); + QCFString fallbackFamilyName = (CFStringRef) CTFontDescriptorCopyLocalizedAttribute(fontFallback, kCTFontFamilyNameAttribute, NULL); + fallbackList.append(QCFString::toQString(fallbackFamilyName)); + } + fallbackLists[family] = fallbackList; } - fallbackLists[family] = fallbackList; } - } - if (fallbackLists.contains(family)) - return fallbackLists.value(family); - } -#else - Q_UNUSED(family); + if (fallbackLists.contains(family)) + return fallbackLists.value(family); + } #endif + } // We were not able to find a fallback for the specific family, // so we fall back to the stylehint. -- cgit v1.2.3