2013-09-01 7 views
1

Я добавил некоторые пользовательские шрифты истинного типа в моем приложении iOS из Xcode app-info.plist (используя ключ «Шрифты, предоставляемые приложением»).Как я могу получить имена шрифтов в моем приложении iOS?

iOS автоматически распознает их как доступные шрифты в приложении, и я могу получить имена всех семейств шрифтов, включая системные шрифты, поддерживаемые iOS, с использованием [UIFont familyNames].

Но я хочу знать, какие шрифты из системных шрифтов iOS, а какие шрифты - из пользовательских шрифтов, которые я добавил в комплекте.

Есть ли какой-либо программный способ дифференцировать вложенные шрифты из системных шрифтов или просто способ получить все вложенные имена шрифтов?

ответ

2

Это непринужденно сорвано с another answer Оно должно предоставить вам все имена шрифтов из ваших объединенных шрифтов.

NSDictionary* infoDict = [[NSBundle mainBundle] infoDictionary]; 
NSArray* fontFiles = [infoDict objectForKey:@"UIAppFonts"]; 

for (NSString *fontFile in fontFiles) { 
    NSLog(@"file name: %@", fontFile); 
    NSURL *url = [[NSBundle mainBundle] URLForResource:fontFile withExtension:NULL]; 
    NSData *fontData = [NSData dataWithContentsOfURL:url]; 
    CGDataProviderRef fontDataProvider = CGDataProviderCreateWithCFData((__bridge CFDataRef)fontData); 
    CGFontRef loadedFont = CGFontCreateWithDataProvider(fontDataProvider); 
    NSString *fullName = CFBridgingRelease(CGFontCopyFullName(loadedFont)); 
    CGFontRelease(loadedFont); 
    CGDataProviderRelease(fontDataProvider); 
    NSLog(@"font name: %@", fullName); 
} 

Этот ответ получил бы вам правильное имя шрифта, но если вы просто хотите имя шрифта из информации списка свойств:

NSDictionary* infoDict = [[NSBundle mainBundle] infoDictionary]; 
NSArray *arrayOfFontStringNames = infoDict[@"UIAppFonts"]; 
+0

Спасибо, но я должен фактически заново создавать шрифты из комплекта файлы, чтобы получить имена? Есть ли более эффективные способы, если у меня их много? – atisman

+0

Упрощение - это просто получить массив имен шрифтов. –

+0

Предлагаемое упрощение не будет искать имена шрифтов, а также имена файлов шрифтов. Но я бы согласился с оригинальным ответом, потому что похоже, что в настоящее время нет другого пути. – atisman

Смежные вопросы