ios-typography
iOS typography — Dynamic Type, SF, and data-grade numerics
Source: Apple HIG Typography + SwiftUI Font docs + WWDC 2026 (iOS 27 / "What's New in SwiftUI", Apple Developer), cross-checked across research passes (June 2026). iOS 26 is the shipping baseline; iOS 27 (WWDC 2026) is the current cycle — and it changes nothing here: iOS 27's "refined typography" is Liquid Glass v2 visual polish (weight/spacing tuning for readability + hierarchy), not a new text style, weight, or scale. The system below holds through iOS 27. Apple says: use the built-in text styles, prefer SF, avoid thin weights, support Dynamic Type.
1. The SF family system
Four system typefaces — SwiftUI selects optical sizes automatically:
- SF Pro — default UI sans (
.fontDesign(.default)). Auto-switches Text (small) vs Display (large) optical sizes. - SF Pro Rounded — friendlier; great for large numerics / health-app tone (
.fontDesign(.rounded)). - SF Mono — fixed-width, code/data (
.fontDesign(.monospaced)). - New York — system serif, editorial/reading (
.fontDesign(.serif)).
Weights run Ultralight→Black. Don't embed system fonts — use the Font.Design constants. Default iOS text size is 17 pt; minimum 11 pt.
Verify-at-source flag (width styles): SF Pro also exposes width axes (Compressed / Condensed / Standard / Expanded), surfaced in SwiftUI's font tooling. Use only on large display numerals/titles where the compression earns its keep — never on body text. Confirm the exact API (
Font.Width/ awidth:parameter) and that it stays Dynamic-Type-safe against current SwiftUI docs before shipping; the canonical hierarchy below is built from size + weight + Design, not width.
2. Dynamic Type built-in text styles (default "Large" size)
Use these, not hard-coded sizes — they scale with the user's setting, hit larger accessibility sizes, and switch the SF optical variant automatically.