[UIFont familyName]
is supported back to iPhone OS 2.0 (before 2.0, third-party apps were not allowed on iPhone or iPod touch) , so I would use that to check to see if a font family exists on the current device, and if it doesn’t exist, use a suitable fall-back font for that version of iOS. Here’s John Gruber’s list of iPhone fonts from the original iPhone in 2007 (contrasted with the fonts in Mac OS X of the day). I haven’t checked them all, but the iOS fonts I did check are still in iOS 5:
Here’s an example of using [UIFont familyName]
:
NSLog (@"Font families: %@", [UIFont familyNames]);
This will produce a list like this:
Font families: (
Thonburi,
“Snell Roundhand”,
“Academy Engraved LET”, … et cetera.
Once you know the family name, you can use the UIFont
class method fontNamesForFamilyName
to get an NSArray of the names of all the fonts in the family. For example:
NSLog (@"Courier New family fonts: %@", [UIFont fontNamesForFamilyName:@"Courier New"]);
That will produce a list like this:
Courier New family fonts: (
CourierNewPSMT,
“CourierNewPS-BoldMT”,
“CourierNewPS-BoldItalicMT”,
“CourierNewPS-ItalicMT”
)
The following example code prints a list of each font in every family on the current device:
NSArray *fontFamilies = [UIFont familyNames];
for (int i = 0; i < [fontFamilies count]; i++)
{
NSString *fontFamily = [fontFamilies objectAtIndex:i];
NSArray *fontNames = [UIFont fontNamesForFamilyName:[fontFamilies objectAtIndex:i]];
NSLog (@"%@: %@", fontFamily, fontNames);
}
For more information, check out the iOS Developer Reference document for the UIFont
class methods familyNames and fontNamesForFamilyName:.