Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is it possible to use iOS 7's modified Helvetica in apps?

Tags:

ios

ios7

uifont

For iOS 7, Apple made a special modified version of Helvetica Thin/Light that has rounded periods and colons:

enter image description here

Compare this to using Helvetica-Neue Thin or Helvetica-Neue Light in Xcode:

enter image description here

Is it possible to develop apps with the special modified version with the rounded colons and periods?

EDIT: Turns out these round colons and periods are not custom designed by Apple, they are "character alternates" and you can see them in your favorite font glyph viewer.

like image 410
inorganik Avatar asked Feb 06 '14 04:02

inorganik


1 Answers

Here's how to do it. Even reading the documentation, it's very unclear.

First, you have to get the characteristics of a font, which will give you the constants to use in your UIFontDescriptorFeatureSettingsAttribute. I got mine from this post.

This gives you feature type identifier keys, and your options for their values, the feature selector identifier keys.

NSArray *timerDisplaySettings = @[
                                      @{ UIFontFeatureTypeIdentifierKey: @(6),
                                        UIFontFeatureSelectorIdentifierKey: @(1)
                                     },
                                      @{ UIFontFeatureTypeIdentifierKey: @(17),
                                        UIFontFeatureSelectorIdentifierKey: @(1)
                                        }];

then you create a font descriptor by adding to a descriptor - this way you can specify the font name and family via UIFont:

UIFont *font = [UIFont fontWithName:@"HelveticaNeue-UltraLight" size:32];

UIFontDescriptor *originalDescriptor = [font fontDescriptor];
UIFontDescriptor *timerDescriptor =[originalDescriptor fontDescriptorByAddingAttributes: @{ UIFontDescriptorFeatureSettingsAttribute: timerDisplaySettings }];

Then, close the loop and create the font with your descriptor. (The size "0.0" simply means we aren't scaling it from its original size of 32.

UIFont *timerFont = [UIFont fontWithDescriptor: timerDescriptor size:0.0];
like image 61
inorganik Avatar answered Oct 22 '22 00:10

inorganik