Skip to main content

Typography

How text is set: roles, sizes and line height.

display36px · 1.25 · 700Apply for support with housing costs
title28px · 1.25 · 700Apply for support with housing costs
heading22px · 1.25 · 700Step 2 of 4: Your home
body19px · 1.6 · 400A person with low vision zooms to 200% and applies for a benefit with a screen magnifier.
label18px · 1.6 · 700Continue
caption16px · 1.6 · 400A person with low vision zooms to 200% and applies for a benefit with a screen magnifier.
data19px · 1.6 · 400Steps done 2 of 4 · Documents sent 3 · Time left to apply 12 days · Time this takes About 10 minutes

The five answers​

QuestionAnswerWhy
Which text roles does it need?Core: heading, body, labelFew roles keep pages predictable.
How many steps does the type scale take?Only the steps the screens needOnly the sizes the screens need, each clearly different.
How are sizes and line heights defined?A ratio, line heights in proportionLine height grows with text size for zoom users.
How large is body text?LargeLarge text is readable for more people.
Where does type do the most work?Forms and labelsType matters most in form labels and hints.

Tokens​

Each token points to another token. Values live only on primitives, below.

TokenPoints to
type.display.font-familyaccessible-first.theme.base.type.display.font-family → font.family.atkinson-hyperlegible
type.display.font-sizefont.size.36
type.display.line-heightfont.line-height.1_25
type.display.font-weightfont.weight.700
type.title.font-familyaccessible-first.theme.base.type.title.font-family → font.family.atkinson-hyperlegible
type.title.font-sizefont.size.28
type.title.line-heightfont.line-height.1_25
type.title.font-weightfont.weight.700
type.heading.font-familyaccessible-first.theme.base.type.heading.font-family → font.family.atkinson-hyperlegible
type.heading.font-sizefont.size.22
type.heading.line-heightfont.line-height.1_25
type.heading.font-weightfont.weight.700
type.body.font-familyaccessible-first.theme.base.type.body.font-family → font.family.atkinson-hyperlegible
type.body.font-sizefont.size.19
type.body.line-heightfont.line-height.1_6
type.body.font-weightfont.weight.400
type.label.font-familyaccessible-first.theme.base.type.label.font-family → font.family.atkinson-hyperlegible
type.label.font-sizefont.size.18
type.label.line-heightfont.line-height.1_6
type.label.font-weightfont.weight.700
type.caption.font-familyaccessible-first.theme.base.type.caption.font-family → font.family.atkinson-hyperlegible
type.caption.font-sizefont.size.16
type.caption.line-heightfont.line-height.1_6
type.caption.font-weightfont.weight.400
type.data.font-familyaccessible-first.theme.base.type.data.font-family → font.family.atkinson-hyperlegible
type.data.font-sizefont.size.19
type.data.line-heightfont.line-height.1_6
type.data.font-weightfont.weight.400

The raw values these tokens end at are on Primitives › Type.

When to use what​

SituationUseNotWhy
Page titletype.titletype.displayThe same title size on every page tells people where they are. The display size changes from page to page and pushes the content down.
A number in a tabletype.bodyA small or mono fontEvery number must be readable at large size.
Paragraph or help texttype.body, short sentencestype.captionLarge text and short lines lower effort.
Field label or column headertype.label, above the field, always visibleA placeholder as the labelLabels must stay visible while typing.