Каков наилучший способ определения поддерживаемых стилей шрифта на iOS?

Я не могу найти простой способ определить, поддерживает ли шрифт жирный или курсивный стиль шрифта в iOS. Мое текущее решение основано на попытке создать CTFont с желаемым стилем шрифта:

CTFontRef ctFont = CTFontCreateWithName(fontName, pointSize, NULL); CTFontRef boldFont = CTFontCreateCopyWithSymbolicTraits(ctFont, 0.0, NULL, kCTFontBoldTrait, kCTFontBoldTrait); if (boldFont) { // supports bold font face } 

Хотя это прекрасно работает, это как-то не похоже на лучший способ сделать это. Есть ли способ лучше?

Если вы используете UIFont, я думаю, вы могли бы просто перебрать fontNamesForFamilyName:

 for (NSString *fontName : [UIFont fontNamesForFamilyName:fontName]) { if ([fontName rangeOfString:@"Bold"].location != NSNotFound) { //supports bold font face } } 

Может быть, не намного лучше … И жирный шрифт не всегда определяется текстом «Жирный», некоторые используют свет и средний. http://www.iphonedevsdk.com/forum/iphone-sdk-development/6000-list-uifonts-available.html

Иногда сложно даже определить фамилию, особенно для пользовательских шрифтов. Обычно просто распечатывайте все шрифты, чтобы проверить доступные шрифты. Вы можете определить все стили, например, жирным шрифтом, курсивом, сгущенным жирным шрифтом и т. Д., Из этого

 NSArray *familyNames = [UIFont familyNames]; for (NSString *familyName in familyNames) { NSSArray *fontNames = [UIFont fontNamesForFamilyName:familyName]; NSLog(@"%@", fontNames); }