An example of using custom fonts with dynamic type making use of the UIFontMetrics class introduced with iOS 11. It provides examples using the Noteworthy font which is built-in to iOS and the NotoSerif font which was downloaded from google fonts:
Refer to LICENSE.txt if you plan on using NotoSans in a shipping application.
This project requires iOS 11
A utility class to help you use custom fonts with dynamic type.
To use this class you must supply the name of a style dictionary for the font when creating the class. The style dictionary should be stored as a property list file in the main bundle.
The style dictionary contains an entry for each text style that uses the raw string value for each UIFontTextStyle as the key.
The value of each entry is a dictionary with two keys:
- fontName: A String which is the font name.
- fontSize: A number which is the point size to use at the
.largecontent size.
For example to use a 17 pt Noteworthy-Bold font for the .headline style at the .large content size:
<dict>
<key>UICTFontTextStyleHeadline</key>
<dict>
<key>fontName</key>
<string>Noteworthy-Bold</string>
<key>fontSize</key>
<integer>17</integer>
</dict>
</dict>
You do not need to include an entry for every text style but if you try to use a text style that is not included in the dictionary it will fallback to the system preferred font.
See the following blog post for further details: