Как вы можете загрузить шрифт (TTF) из файла с помощью Core Text?

До OSX 10.6 были доступны ATSFontActivateFromFileSpecification/ATSFontActivateFromFileReference и могут быть использованы для загрузки шрифта из файла. Я не могу найти ничего подобного в Core Text.

Ответы

Ответ 1

Вы можете получить 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);   

Ответ 2

Похоже, что CTFontManagerCreateFontDescriptorsFromURL - это замена основного текста.

Ответ 3

NSURL *fontURL = [[NSBundle mainBundle] URLForResource:@"Crystal" withExtension:@"ttf"];
    assert(fontURL);
    CFErrorRef error = NULL;
    if (!CTFontManagerRegisterFontsForURL((__bridge CFURLRef)fontURL, kCTFontManagerScopeProcess, &error))
    {
        CFShow(error);
        abort();
    }