По причинам, связанным с лицензированием, я должен расшифровать файл шрифта и загрузить его в память, а затем зарегистрировать его вместо чтения непосредственно из URL-адреса. Для этого я должен использовать CTFontManagerRegisterGraphicsFont
.CTFontManagerRegisterGraphicsFont не регистрирует фамилию
Проблемная часть возникает, когда я пытаюсь использовать [NSFont fontWithName:@"Open Sans" size:21.0]
, где он будет принимать только название PostScript шрифта (т.е. («OpenSans» или «OpenSans-Bold» для жирного веса) и не будет работать с фамилией «Open Sans».
Если шрифт регистрируется с помощью ATSApplicationFontsPath
в info.plist файле или с помощью CTFontManagerRegisterFontsForURLs
я могу использовать фамилию шрифта. Но я не могу сделать это таким образом.
(«Open Sans» используется здесь в качестве примера)
Вот код, который я использую для регистрации f ОНТ.
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
Сообщите мне, если он работает, поэтому я могу добавить ответ. –