Acabei de atualizar meu iPod touch para iOS 7.0.3 e "HelveticaNeue-Italic" parece ter desaparecido. Quando faço uma consulta ao telefone com:
[UIFont fontNamesForFamilyName:@"Helvetica Neue"]
Eu obtenho os seguintes 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
Quando faço a mesma consulta em execução no simulador, recebo (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
Alguém mais viu isso?
---- Nova informação ----
Voltei para o vídeo WWDC 2013 "Using Font with Text Kit" e a parte interessante começa às 12h22. O apresentador fala sobre "MetaFonts" no OS X como um exemplo. O que ele diz é que a fonte em chamadas como:
+ (NSFont *)messageFontOfSize:(CGFloat)fontSize
não é garantido que retornem a mesma fonte subjacente em todas as versões ou mesmo em usos diferentes. Seu exemplo foi Lucinda Grande. Ele não parecia estar dizendo que o uso de "HelveticaNeue-Italic" poderia ir de uma versão para outra.
Então, construí um experimento no iOS 7. Criei minha fonte com o seguinte código:
UIFontDescriptor *fontDescriptor = [UIFontDescriptor fontDescriptorWithName:@"Helvetica Neue" size:16.0];
UIFontDescriptor *symbolicFontDescriptor = [fontDescriptor fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitItalic];
UIFont *fontWithDescriptor = [UIFont fontWithDescriptor:symbolicFontDescriptor size:16.0];
Eu recebi um UIFont válido para fontWithDescriptor e quando consultei a fonte para fontName com:
[fontWithDescriptor fontName]
Eu voltei...
HelveticaNeue-Italic
Vai saber???
Portanto, uma possível resposta para 7.0.3 parece ser o código acima.
---- Ajustes adicionais ----
Embora a solução tenha funcionado acima, não acho que seja formalmente correta. Eu mudei para a seguinte solução
UIFontDescriptor *fontDescriptor = [[UIFontDescriptor alloc] init];
UIFontDescriptor *fontDescriptorForHelveticaNeue = [fontDescriptor fontDescriptorWithFamily:@"Helvetica Neue"];
UIFontDescriptor *symbolicFontDescriptor = [fontDescriptorForHelveticaNeue fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitItalic];
textFont = [UIFont fontWithDescriptor:symbolicFontDescriptor size:textFontPointSize];
Isso parece fazer todas as coisas certas. Eu tentei a abordagem anterior com outra família de fontes e pareceu ficar confusa com the fontName e fontFamily. Espero que isto ajude!