[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:.