Ho appena aggiornato il mio iPod touch a iOS 7.0.3 e "HelveticaNeue-Italic" sembra essere scomparso. Quando eseguo una query al telefono con:
[UIFont fontNamesForFamilyName:@"Helvetica Neue"]
Ottengo i seguenti 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 eseguo la stessa query in esecuzione nel simulatore ottengo (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
Qualcun altro lo vede?
---- Nuova informazione ----
Sono tornato al video del WWDC 2013 "Using Font with Text Kit" e la parte interessante inizia alle 12:22. Il presentatore parla di "MetaFonts" in OS X come esempio. Quello che dice è che il carattere sotto chiama come:
+ (NSFont *)messageFontOfSize:(CGFloat)fontSize
non è garantito che restituisca lo stesso carattere sottostante tra versioni o usi diversi. Il suo esempio è stato Lucinda Grande. Non sembrava dire che l'uso di "HelveticaNeue-Italic" potesse passare da una versione all'altra.
Quindi ho costruito un esperimento in iOS 7. Ho creato il mio font con il seguente codice:
UIFontDescriptor *fontDescriptor = [UIFontDescriptor fontDescriptorWithName:@"Helvetica Neue" size:16.0];
UIFontDescriptor *symbolicFontDescriptor = [fontDescriptor fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitItalic];
UIFont *fontWithDescriptor = [UIFont fontWithDescriptor:symbolicFontDescriptor size:16.0];
Ho ricevuto un UIFont valido per fontWithDescriptor e quando ho richiesto il font per fontName con:
[fontWithDescriptor fontName]
Sono tornato...
HelveticaNeue-Italic
Vai a capire???
Quindi una possibile risposta a 7.0.3 sembra essere il codice sopra.
---- Ulteriori ritocchi ----
Sebbene la soluzione abbia funzionato sopra, non penso che sia formalmente corretta. Sono passato alla seguente soluzione
UIFontDescriptor *fontDescriptor = [[UIFontDescriptor alloc] init];
UIFontDescriptor *fontDescriptorForHelveticaNeue = [fontDescriptor fontDescriptorWithFamily:@"Helvetica Neue"];
UIFontDescriptor *symbolicFontDescriptor = [fontDescriptorForHelveticaNeue fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitItalic];
textFont = [UIFont fontWithDescriptor:symbolicFontDescriptor size:textFontPointSize];
Questo sembra fare tutte le cose giuste. Ho provato l'approccio precedente con un'altra famiglia di font e mi è sembrato di essere confuso con fontName e fontFamily. Spero che questo ti aiuti!