在OSX 10.6之前,ATSFontActivateFromFileSpecification / ATSFontActivateFromFileReference可用,可用于从文件加载字体。我在Core Text中找不到类似的东西。
答案 0 :(得分:18)
您可以通过CTFontRef
来获取字体文件中的CGFontRef
:
CFURLRef url = CFURLCreateWithFileSystemPath(kCFAllocatorDefault, CFSTR("/path/to/font"), kCFURLPOSIXPathStyle, false);
CGDataProviderRef dataProvider = CGDataProviderCreateWithURL(url);
CGFontRef theCGFont = CGFontCreateWithDataProvider(dataProvider);
CTFontRef theCTFont = CTFontCreateWithGraphicsFont(theCGFont);
CFRelease(theCGFont);
CFRelease(dataProvider);
CFRelease(url);
// do something with the CTFontRef here
CFRelease(theCTFont);
答案 1 :(得分:10)
看起来CTFontManagerCreateFontDescriptorsFromURL
是核心文本的替代品。
答案 2 :(得分:4)
NSURL *fontURL = [[NSBundle mainBundle] URLForResource:@"Crystal" withExtension:@"ttf"];
assert(fontURL);
CFErrorRef error = NULL;
if (!CTFontManagerRegisterFontsForURL((__bridge CFURLRef)fontURL, kCTFontManagerScopeProcess, &error))
{
CFShow(error);
abort();
}
答案 3 :(得分:2)
这是2020年如何执行此操作的更新版本。现在要简单得多。使用12作为任意类型的大小。
let fontURL = URL(fileURLWithPath: "path/to/font.otf")
let fd = CTFontManagerCreateFontDescriptorsFromURL(fontURL as CFURL) as! [CTFontDescriptor]
let theCTFont = CTFontCreateWithFontDescriptor(fd[0], 12.0, nil)