Просто обновил свой iPod touch до iOS 7.0.3 и "HelveticaNeue-Italic", похоже, исчез. Когда я запрашиваю по телефону с помощью:
[UIFont fontNamesForFamilyName:@"Helvetica Neue"]
Я получаю следующие имена шрифтов (13):
HelveticaNeue-BoldItalic,
HelveticaNeue-Light,
HelveticaNeue-UltraLightItalic,
HelveticaNeue-CondensedBold,
HelveticaNeue-MediumItalic,
HelveticaNeue-Thin,
HelveticaNeue-Medium,
HelveticaNeue-ThinItalic,
HelveticaNeue-LightItalic,
HelveticaNeue-UltraLight,
HelveticaNeue-Bold,
HelveticaNeue,
HelveticaNeue-CondensedBlack
Когда я выполняю тот же запрос, запущенный в симуляторе, я получаю (14):
HelveticaNeue-BoldItalic,
HelveticaNeue-Light,
**HelveticaNeue-Italic,**
HelveticaNeue-UltraLightItalic,
HelveticaNeue-CondensedBold,
HelveticaNeue-MediumItalic,
HelveticaNeue-Thin,
HelveticaNeue-Medium,
HelveticaNeue-Thin_Italic,
HelveticaNeue-LightItalic,
HelveticaNeue-UltraLight,
HelveticaNeue-Bold,
HelveticaNeue,
HelveticaNeue-CondensedBlack
Кто-нибудь еще видит это?
---- Новая информация ----
Я вернулся к видео WWDC 2013 "Использование шрифта с текстовым комплектом", и интересная часть начинается в 12:22. Ведущий рассказывает о "MetaFonts" в OS X в качестве примера. Он говорит, что шрифт под вызовами вроде:
+ (NSFont *)messageFontOfSize:(CGFloat)fontSize
не гарантируется возврат одного и того же основного шрифта в разных версиях или даже в разных целях. Его примером была Люсинда Гранде. Он, похоже, не говорил, что использование "HelveticaNeue-Italic" может уйти от версии к версии.
Итак, я построил эксперимент в iOS 7. Я создал свой шрифт со следующим кодом:
UIFontDescriptor *fontDescriptor = [UIFontDescriptor fontDescriptorWithName:@"Helvetica Neue" size:16.0];
UIFontDescriptor *symbolicFontDescriptor = [fontDescriptor fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitItalic];
UIFont *fontWithDescriptor = [UIFont fontWithDescriptor:symbolicFontDescriptor size:16.0];
Я получил верный UIFont для fontWithDescriptor, и когда я запросил шрифт для fontName с помощью
[fontWithDescriptor fontName]
Я вернулся...
HelveticaNeue-Italic
Показать рисунок
Таким образом, возможным ответом на 7.0.3 представляется код выше.
---- Дальнейшая настройка ----
Хотя решение работало выше, я не думаю, что это формально правильно. Я перешел на следующее решение
UIFontDescriptor *fontDescriptor = [[UIFontDescriptor alloc] init];
UIFontDescriptor *fontDescriptorForHelveticaNeue = [fontDescriptor fontDescriptorWithFamily:@"Helvetica Neue"];
UIFontDescriptor *symbolicFontDescriptor = [fontDescriptorForHelveticaNeue fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitItalic];
textFont = [UIFont fontWithDescriptor:symbolicFontDescriptor size:textFontPointSize];
Это, кажется, делает все правильно. Я пробовал предыдущий подход с другим семейством шрифтов, и он, похоже, путался с именем fontName и fontFamily. Надеюсь, это поможет!