Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to check if a font is available in version of iOS?

Tags:

ios

iphone

ios4

I'm currently working on an app that uses the "ChalkboardSE-Regular" font and my deployment target is 4.0+. This font was not available in 4.1 but it is supported in 4.3. What would be the best way to go about checking if the font exists and if it does not, use another supported font on the <4.1 versions of iOS. [UIFont familyName] returns a list of these fonts "Chalkboard SE"

Thanks in advance!

T

like image 497
tg2007 Avatar asked Dec 16 '11 03:12

tg2007


People also ask

How do I get fonts for iOS?

You can download fonts from the App Store app , then use them in documents you create on iPhone. After you download an app containing fonts from the App Store, open the app to install the fonts. To manage installed fonts, go to Settings > General, then tap Fonts.

How do I add fonts to iOS 14?

Go to Settings > General > Fonts, and you will see a list of all your installed fonts and also the prompt to download fonts from the App Store (in iOS 13). With iOS 14, there is no such prompt. Tap any font file to view information about the font, such as copyright, file size, and typefaces it includes.

What font is used in iOS 13?

San Francisco is the default font for iPhone and iPad.


1 Answers

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

  • http://daringfireball.net/misc/2007/07/iphone-osx-fonts

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

like image 175
Steve HHH Avatar answered Oct 06 '22 14:10

Steve HHH