macOS typography
Read references/typography-system.md when creating a design system, adding custom fonts, changing text hierarchy, building dense tables, or reviewing readability and text scaling.
Workflow
- Inventory semantic roles: window title, section heading, body, lead, label, metadata, code, and numbers.
- Map roles to SwiftUI text styles before considering custom point sizes.
- Establish hierarchy with style, weight, spacing, and foreground hierarchy.
- Cap long-form measure and test wrapping, truncation, localisation expansion, and accessibility settings.
- Use monospaced digits for changing or column-aligned numbers; reserve monospaced text for code and technical data.
- Test supported macOS versions, narrow and wide windows, dense data views, and the largest supported text settings.
Guardrails
- Do not hard-code a point size without text-style-relative scaling and a documented requirement.
- Do not put essential content in
.caption2; use .caption sparingly.
- Use
bold() for contextual emphasis. Give explicit weights a named hierarchy role.
- De-emphasise with semantic foreground styles instead of thin weights or low opacity.
- Avoid fixed-height frames around text.
- Do not ship a custom font without a redistribution licence, fallback, localisation glyph coverage, and accessibility review.
Output
Provide a role-to-style table, affected windows and views, wrapping/truncation behaviour, text-scaling results, and custom-font licence or fallback concerns.
1---2name: apple-typography3description: Design or review semantic typography, readable measure, hierarchy, emphasis, numeric alignment, text scaling, and macOS text behaviour in SwiftUI.4license: MIT5---67# macOS typography89Read `references/typography-system.md` when creating a design system, adding custom fonts, changing text hierarchy, building dense tables, or reviewing readability and text scaling.1011## Workflow12131. Inventory semantic roles: window title, section heading, body, lead, label, metadata, code, and numbers.142. Map roles to SwiftUI text styles before considering custom point sizes.153. Establish hierarchy with style, weight, spacing, and foreground hierarchy.164. Cap long-form measure and test wrapping, truncation, localisation expansion, and accessibility settings.175. Use monospaced digits for changing or column-aligned numbers; reserve monospaced text for code and technical data.186. Test supported macOS versions, narrow and wide windows, dense data views, and the largest supported text settings.1920## Guardrails2122- Do not hard-code a point size without text-style-relative scaling and a documented requirement.23- Do not put essential content in `.caption2`; use `.caption` sparingly.24- Use `bold()` for contextual emphasis. Give explicit weights a named hierarchy role.25- De-emphasise with semantic foreground styles instead of thin weights or low opacity.26- Avoid fixed-height frames around text.27- Do not ship a custom font without a redistribution licence, fallback, localisation glyph coverage, and accessibility review.2829## Output3031Provide a role-to-style table, affected windows and views, wrapping/truncation behaviour, text-scaling results, and custom-font licence or fallback concerns.