San Francisco (SF) is the system font on all Apple platforms; the SF Pro variant is the system font in macOS. Using the system font gives your text legibility, clarity, and consistency with apps across Apple platforms. Download the San Francisco family of fonts here.
Beginning in macOS 11, the system provides the San Francisco fonts in the variable font format. This format combines different font styles together in one file, and supports interpolation between styles to create intermediate ones. With interpolation, typefaces can adapt to all sizes while appearing specifically designed for each size.
Interpolation also enables optical sizing, which refers to the creation of different typographic designs to fit different sizes. In macOS 11 and later, the system font supports dynamic optical sizes, merging the discrete optical sizes Text and Display into a single, continuous design. This design allows each glyph or letterform to be interpolated to produce a structure that’s precisely adapted to the point size.
NOTE Using variable fonts in a design tool that’s running on an earlier version of macOS may produce unexpected results. In this case, continue using Text and Display.
Use built-in text styles whenever possible. In macOS 11 and later, you can use the built-in text styles to express content in ways that are visually distinct, while retaining optimal legibility. For example, use the Body text style for primary content, and use the Footnote and Caption text styles for labels and secondary content. The table below lists the weight, size, line height, and emphasized weight for each style. For developer guidance, see NSFont.TextStyle.
|Text style||Weight||Size (points)||Line height (points)||Emphasized weight|
Modify leading to improve readability or conserve space. Leading is the space between lines of text. In some cases, text layouts work better when you increase or decrease this space. When you display text in wide columns or long passages, more space between lines (loose leading) can make it easier for people to keep their place while moving from one line to the next. Conversely, if you need to display two lines of text in an area where height is constrained — for example, in a list row — decreasing the space between lines (tight leading) can help the text fit well. If you need to display three or more lines of text, avoid tight leading even in areas where height is limited. The system defines API that lets you increase or decrease the space between lines by two points; for developer guidance, see loose and tight (SwiftUI), and looseLeading and tightLeading (AppKit).
Emphasize important information. Use font weight, size, and color to highlight the most important information in your app.
Minimize the number of typefaces you use in your interface. Mixing too many different typefaces can make your app seem fragmented and sloppy.
Make sure custom fonts are legible. Custom fonts are supported on macOS, but may be tough to read. Unless your app has a compelling need for a custom font, such as for branding purposes or to create an immersive gaming experience, it’s usually best to stick with the system fonts. If you do use a custom font, make sure it’s easily readable, even at small sizes.
Use the standard Fonts panel for user font changes. If your app supports typography and text layout, use the standard Fonts panel to obtain the user’s font selection rather than designing a custom font-picker. The Fonts panel is familiar to people and includes controls for selecting a font and adjusting attributes such as typeface, size, and color. For developer guidance, see NSFontPanel.
Use dynamic system font variants to match the text appearance of standard controls. Dynamic system font variants give your text the same look and feel of the text that appears in standard system-provided controls. Use these variants to achieve a look that’s consistent with other apps on the platform.
|Dynamic font variant||API|
|Document text (user)||userFontOfSize|
|Monospaced document text (user fixed pitch)||userFixedPitchFontOfSize|
|Bold system font||boldSystemFontOfSize|
Adjust tracking as needed in interface mockups. In a running app, the system font dynamically adjusts tracking at every point size. To produce an accurate interface mockup of a UI that uses the variable system fonts, you don’t have to choose a discrete optical size at certain point sizes, but you might need to adjust the tracking. In this situation, you can use the SF Pro tracking values listed below or see Apple Design Resources.
|Size (points)||Tracking (1/1000em)||Tracking (points)|
In interface mockups, use text size to determine when to use SF Pro Text and Display. If you use the Text and Display discrete optical sizes in an interface mockup, you need to use different variants at different text sizes. Specifically, use SF Pro Text for text 19 points or smaller, and SF Pro Display for text 20 points or larger. If you need to adjust tracking, see the tracking values available in Apple Design Resources.