15

在 OSX 10.6 之前,ATSFontActivateFromFileSpecification/ATSFontActivateFromFileReference 可用,可用于从文件加载字体。我在核心文本中找不到类似的东西。

4

4 回答 4

19

您可以通过 aCTFontRef从字体文件中获取 a 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);   
于 2010-04-24T04:16:58.927 回答
11

看起来CTFontManagerCreateFontDescriptorsFromURL是核心文本替换。

于 2010-04-24T03:37:59.047 回答
4
NSURL *fontURL = [[NSBundle mainBundle] URLForResource:@"Crystal" withExtension:@"ttf"];
    assert(fontURL);
    CFErrorRef error = NULL;
    if (!CTFontManagerRegisterFontsForURL((__bridge CFURLRef)fontURL, kCTFontManagerScopeProcess, &error))
    {
        CFShow(error);
        abort();
    }
于 2013-07-10T08:54:49.803 回答
3

这是 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)
于 2020-02-02T22:34:00.050 回答