HIG: Typography
Source: Apple HIG — Typography
System Fonts
- San Francisco (SF): SF Pro, SF Compact, SF Mono, SF Arabic, SF Armenian, SF Georgian, SF Hebrew — plus Rounded variants
- New York (NY): Serif family, works well alongside SF
- Variable font format with dynamic optical sizes — no need to pick discrete optical sizes
Default & Minimum Text Sizes
| Platform |
Default |
Minimum |
| iOS, iPadOS |
17 pt |
11 pt |
| macOS |
13 pt |
10 pt |
| tvOS |
29 pt |
23 pt |
| visionOS |
17 pt |
12 pt |
| watchOS |
16 pt |
12 pt |
Text Styles (iOS/iPadOS — Large/Default)
| Style |
Weight |
Size |
Leading |
Emphasized |
| Large Title |
Regular |
34 pt |
41 pt |
Bold |
| Title 1 |
Regular |
28 pt |
34 pt |
Bold |
| Title 2 |
Regular |
22 pt |
28 pt |
Bold |
| Title 3 |
Regular |
20 pt |
25 pt |
Semibold |
| Headline |
Semibold |
17 pt |
22 pt |
Semibold |
| Body |
Regular |
17 pt |
22 pt |
Semibold |
| Callout |
Regular |
16 pt |
21 pt |
Semibold |
| Subhead |
Regular |
15 pt |
20 pt |
Semibold |
| Footnote |
Regular |
13 pt |
18 pt |
Semibold |
| Caption 1 |
Regular |
12 pt |
16 pt |
Semibold |
| Caption 2 |
Regular |
11 pt |
13 pt |
Semibold |
macOS Text Styles
| Style |
Weight |
Size |
Line Height |
Emphasized |
| Large Title |
Regular |
26 pt |
32 pt |
Bold |
| Title 1 |
Regular |
22 pt |
26 pt |
Bold |
| Title 2 |
Regular |
17 pt |
22 pt |
Bold |
| Title 3 |
Regular |
15 pt |
20 pt |
Semibold |
| Headline |
Bold |
13 pt |
16 pt |
Heavy |
| Body |
Regular |
13 pt |
16 pt |
Semibold |
| Callout |
Regular |
12 pt |
15 pt |
Semibold |
| Subheadline |
Regular |
11 pt |
14 pt |
Semibold |
| Footnote |
Regular |
10 pt |
13 pt |
Semibold |
| Caption 1 |
Regular |
10 pt |
13 pt |
Medium |
| Caption 2 |
Medium |
10 pt |
13 pt |
Semibold |
tvOS Text Styles
| Style |
Weight |
Size |
Leading |
Emphasized |
| Title 1 |
Medium |
76 pt |
96 pt |
Bold |
| Title 2 |
Medium |
57 pt |
66 pt |
Bold |
| Title 3 |
Medium |
48 pt |
56 pt |
Bold |
| Headline |
Medium |
38 pt |
46 pt |
Bold |
| Subtitle 1 |
Regular |
38 pt |
46 pt |
Medium |
| Callout |
Medium |
31 pt |
38 pt |
Bold |
| Body |
Medium |
29 pt |
36 pt |
Bold |
| Caption 1 |
Medium |
25 pt |
32 pt |
Bold |
| Caption 2 |
Medium |
23 pt |
30 pt |
Bold |
Best Practices
- Avoid light font weights (Ultralight, Thin, Light) — prefer Regular, Medium, Semibold, Bold
- Minimize the number of typefaces — too many obscures hierarchy
- Use
bold() in SwiftUI (not fontWeight(.bold)) so the system picks context-appropriate weight
- Use
Font.Design.default for system font, Font.Design.serif for New York
- Don't embed system fonts — use the APIs
Dynamic Type
- System-level feature in iOS, iPadOS, tvOS, visionOS, watchOS
- Text styles scale proportionately when people change text size
- Support Larger Accessibility Text Sizes (AX1-AX5 go up to 60pt body)
- Consider adjusting layout at large sizes (stack horizontally placed items vertically)
- Keep text truncation minimal — display as much useful text as possible
- Maintain consistent information hierarchy regardless of font size
- Use
isAccessibilityCategory to detect when accessibility sizes are active
Custom Fonts
- Always use
relativeTo: with .font(.custom()) to support Dynamic Type
- Use
@ScaledMetric (iOS 18-) or .font(.body.scaled(by:)) (iOS 26+) for custom sizing
- Implement accessibility features (Bold Text, Dynamic Type) for custom fonts
visionOS Specifics
- Uses bolder body and title styles, plus Extra Large Title 1 and 2
- Prefer 2D text — 3D text is harder to read
- Use billboarding for text associated with spatial objects
- Maximize contrast between text and container background
Tracking Values (SF Pro — Key Sizes)
| Size |
Tracking (pt) |
| 11 pt |
+0.06 |
| 12 pt |
0.0 |
| 13 pt |
-0.08 |
| 17 pt (body) |
-0.43 |
| 22 pt |
-0.26 |
| 28 pt |
+0.38 |
| 34 pt |
+0.40 |
| 48 pt |
+0.35 |
| 72 pt |
+0.14 |
| 96 pt |
0.0 |