diff options
author | Jiang Jiang <jiang.jiang@nokia.com> | 2012-08-20 10:37:01 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-08-21 13:41:01 +0200 |
commit | bc7cf82dc17f6825fd9fed7068d2d0cd14719e5b (patch) | |
tree | 9ed6a7b5fb5dc715ff96f0cdaa35186512bdb24b /src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm | |
parent | a59906e0f3f620d9241e27e7f13aa620a58c6df9 (diff) |
Replace deprecated ATS calls with CTFontManager calls in 10.8
Change-Id: I81c0361059319575e55621123d40b7c6f3c6b699
Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com>
Diffstat (limited to 'src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm')
-rw-r--r-- | src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm | 49 |
1 files changed, 48 insertions, 1 deletions
diff --git a/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm b/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm index 50f49b1da3..7d778e13a3 100644 --- a/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm +++ b/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm @@ -351,9 +351,51 @@ QStringList QCoreTextFontDatabase::fallbacksForFamily(const QString family, cons } #ifndef Q_OS_IOS -OSErr qt_mac_create_fsref(const QString &file, FSRef *fsref); QStringList QCoreTextFontDatabase::addApplicationFont(const QByteArray &fontData, const QString &fileName) { +#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_8 + if (QSysInfo::QSysInfo::MacintoshVersion >= QSysInfo::MV_10_8) { + CTFontRef font = NULL; + + if (!fontData.isEmpty()) { + QCFType<CGDataProviderRef> dataProvider = CGDataProviderCreateWithData(NULL, + fontData.constData(), fontData.size(), NULL); + CGFontRef cgFont = CGFontCreateWithDataProvider(dataProvider); + if (cgFont) { + CFErrorRef error; + bool success = CTFontManagerRegisterGraphicsFont(cgFont, &error); + if (success) { + font = CTFontCreateWithGraphicsFont(cgFont, 0.0, NULL, NULL); + } else { + NSLog(@"Unable to register font: %@", error); + CFRelease(error); + } + } + } else { + CFErrorRef error; + QCFType<CFURLRef> fontURL = CFURLCreateWithFileSystemPath(NULL, QCFString(fileName), 0, false); + bool success = CTFontManagerRegisterFontsForURL(fontURL, kCTFontManagerScopeProcess, &error); + if (success) { + const void *keys[] = { fontURL }; + const void *values[] = { kCTFontURLAttribute }; + QCFType<CFDictionaryRef> attributes = CFDictionaryCreate(NULL, keys, values, 1, + &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); + QCFType<CTFontDescriptorRef> descriptor = CTFontDescriptorCreateWithAttributes(attributes); + font = CTFontCreateWithFontDescriptor(descriptor, 0.0, NULL); + } else { + NSLog(@"Unable to register font: %@", error); + CFRelease(error); + } + } + + if (font) { + QStringList families; + families.append(QCFString(CTFontCopyFamilyName(font))); + CFRelease(font); + return families; + } + } else { +#else ATSFontContainerRef fontContainer; OSStatus e; @@ -363,6 +405,7 @@ QStringList QCoreTextFontDatabase::addApplicationFont(const QByteArray &fontData kATSOptionFlagsDefault, &fontContainer); } else { FSRef ref; + OSErr qt_mac_create_fsref(const QString &file, FSRef *fsref); if (qt_mac_create_fsref(fileName, &ref) != noErr) return QStringList(); e = ATSFontActivateFromFileReference(&ref, kATSFontContextLocal, kATSFontFormatUnspecified, 0, @@ -388,6 +431,10 @@ QStringList QCoreTextFontDatabase::addApplicationFont(const QByteArray &fontData return families; } +#endif +#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_8 + } +#endif return QStringList(); } |