由於與許可有關的原因,我必須解密字體文件並將其加載到內存中,然後註冊它,而不是直接從URL中讀取。爲此,我必須使用CTFontManagerRegisterGraphicsFont
。CTFontManagerRegisterGraphicsFont沒有註冊姓氏
當我嘗試使用[NSFont fontWithName:@"Open Sans" size:21.0]
,它只接受字體的PostScript名稱(例如(「OpenSans或OpenSans-Bold用於粗體重量)並且不會使用姓氏」Open Sans「時,出現問題的部分。
如果字體在Info.plist文件使用ATSApplicationFontsPath
或使用CTFontManagerRegisterFontsForURLs
然後我可以使用的字體的系列名稱。但我不能做這種方式註冊。
(「打開三世」這裏用作例子)
這裏是我用來註冊f ONT。
NSString *fontPath = [[NSBundle mainBundle] pathForResource:@"OpenSans-Regular" ofType:@"ttf" inDirectory:@"Fonts"];
NSData *fontData = [NSData dataWithContentsOfFile:fontPath];
CGDataProviderRef fontProviderRef = CGDataProviderCreateWithCFData((CFDataRef)fontData);
CGFontRef fontRef = CGFontCreateWithDataProvider(fontProviderRef);
CFErrorRef error;
if (! CTFontManagerRegisterGraphicsFont(fontRef, &error)) {
CFStringRef errorDescription = CFErrorCopyDescription(error);
NSLog(@"Failed to load font: %@", errorDescription);
CFRelease(errorDescription);
}
CFRelease(fontRef);
CFRelease(fontProviderRef);
有沒有辦法讓字體系列名可用於NSFont CTFontManagerRegisterGraphicsFont
?
(使用Xcode的5和定位的Mac OS X> = 10.8)
您是否嘗試過使用字體描述符來創建帶有姓氏的字體? –
@LeoNatan還沒有嘗試過,會做。 – Salaryman
讓我知道它是否有效,以便我可以添加答案。 –