Только что обновил свой iPod touch до iOS 7.0.3, и "HelveticaNeue-Italic", похоже, исчез. Когда я спрашиваю по телефону:
[UIFont fontNamesForFamilyName:@"Helvetica Neue"]
Я получаю следующие fontNames (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. Надеюсь это поможет!