By Bob Poláček, updated
Type scale
A type scale is the set of text sizes an interface uses, each a step with its own size, line height and weight. Apple names its steps Dynamic Type text styles, such as body and title1, and Material 3 names them roles, such as bodyLarge and headlineSmall.
By Bob Poláček, updated
Type scale on iOS and Android
Also called Dynamic Type, iOS font sizes. The same idea in each system, with the values Appetite UI gives it.
| iOS | Android (Material 3) | Appetite UI | |
|---|---|---|---|
| Name | Dynamic Type text styles, largeTitle to caption2 | Type scale roles: display, headline, title, body, label | Typography collection, steps xs to 6xl |
In the kit
The components, drawn live from the kit’s tokens. Tap them: they behave as the Figma prototype does.
6xl60 / 64 · tracking -1.2 (-2%)Inter Display · wrap balanceHero numerals
5xl48 / 52 · tracking -0.96 (-2%)Inter Display · wrap balanceDisplay
4xl36 / 40 · tracking -0.54 (-1.5%)Inter Display · wrap balanceDisplay small
3xl30 / 36 · tracking -0.45 (-1.5%)Inter Display · wrap balanceHeadline large
2xl24 / 32 · tracking -0.24 (-1%)Inter Display · wrap balanceHeadline, screen titles
xl20 / 28 · tracking 0Inter · wrap balanceTitle large, card and sheet headers
lg18 / 28 · tracking 0Inter · wrap prettyTitle, list section headers
base16 / 24 · tracking 0Inter · wrap prettyBody, the default reading size
sm14 / 20 · tracking +0.1Inter · wrap prettyBody small, secondary text and list subtitles
xs12 / 16 · tracking +0.1Inter · wrap prettyCaption and label, badges, timestamps, tab labels
In practice
Both systems let people change the text size on their phone, Dynamic Type on iOS and font scale on Android, so a step is a starting size that the app scales, not a fixed number.
Appetite UI has one scale for both platforms, from xs 12 to 6xl 60 in Inter and Inter Display, and maps each step to the Apple text style and the Material 3 role that resolve to it. Its System mode returns the platforms’ own published sizes instead, such as Apple’s 17 point body and Material’s 57 sp displayLarge.
| Step | Apple text style | Material 3 role |
|---|---|---|
| 6xl 60 | none | displayLarge |
| 5xl 48 | none | displayMedium |
| 4xl 36 | largeTitle | displaySmall |
| 3xl 30 | title1 | headlineLarge, headlineMedium |
| 2xl 24 | none | headlineSmall |
| xl 20 | title2, title3 | titleLarge |
| lg 18 | headline, body | none |
| base 16 | callout | titleMedium, bodyLarge |
| sm 14 | subheadline | titleSmall, bodyMedium, labelLarge |
| xs 12 | footnote, caption1, caption2, tabBarLabel | bodySmall, labelMedium, labelSmall |
Questions
How do Material 3 type roles map to iOS text styles?
Through the step they share. In Appetite UI, base 16 is Apple’s callout and Material’s titleMedium and bodyLarge, sm 14 is subheadline and titleSmall, bodyMedium and labelLarge, and xs 12 holds footnote and the captions beside bodySmall and the small labels. The table on this page lists every step.
Does a Figma file support Dynamic Type?
A Figma file draws the default size; scaling with the reader’s text size happens in the app. Appetite UI’s System mode gives each step the platform’s published default, such as Apple’s 17 point body, so a frame can show the native sizes without being rebuilt.
Sources
The pages the facts above rest on.
- Apple Human Interface Guidelines: Typography, read October 13, 2026
- Material Design 3: Type scale tokens, read October 13, 2026