A study of our type.
You know the difference between a menu you can read at a glance and one you have to squint at. Every piece of type on this website is set below as itself, at its real size, with the reason it’s set that way: three typefaces, one ladder of sizes and one rule for the space between lines. Nothing was chosen by eye and left there.
I · The faces
Three typefaces, each with one job
A typeface, or face, is one design of letters. We use three, and like the people in a good kitchen, each has one station and never cooks at another’s. That alone settles most questions before anyone has to ask them.
- Archivo
- Titles and headings. A grotesque, the plain, sturdy kind of letter without the small feet called serifs, drawn by Héctor Gatti at the Argentine foundry Omnibus-Type and released in 2012. It has the weight and plainness of a poster, and it is free for anyone to use.
- Atkinson Hyperlegible Next
- Everything you read. Made by the Braille Institute for readers with low vision, with letters drawn so that none can be mistaken for another. We chose it because a typeface that works for people who struggle to read works well for everyone else, too.
- Atkinson Hyperlegible Mono
- Labels, numbers, dates and sources. The same family, monospaced, meaning every letter takes the same width, so the labels feel related to the reading text while looking clearly different from it.
II · The scale
Every size is a rung on one ladder
A ladder is easy to climb because nobody placed its rungs by eye. There are thirteen type sizes on this site, and no others. Each is about 1.27 times the one below it, the square root of the golden ratio, so every second rung is the golden ratio itself.
That gives the ladder a useful property: from the reading size up, each size is very nearly the two sizes two steps below it added together. Sixteen and twenty-six make forty-two. Every size also has to sit on a grid of 4px units, with half-pixel steps for type, so the steps are close to the ratio rather than exact. The widest miss is 3.2%.
Sizes change in whole steps at five named screen widths, never smoothly. A size that grew continuously with the window would spend most of its life between the rungs.
The ladder, as set
Leading is the space from one line to the next; the rule column is what the golden rule for it gives. The largest sizes are set only in capitals, which have no tails below the line, and run tighter.
| Token | Size | Step | Leading | Rule | Used for |
|---|---|---|---|---|---|
--text-xs | 10px | — | 16px | own, 1.5 | On the ladder, kept in reserve |
--text-sm | 12.5px | ×1.250 | 20px | own, 1.5 | Labels, captions and sources |
--text-base | 16px | ×1.280 | 24px | own, 1.5 | Interface text: buttons, form fields, short notes |
--text-lg | 20px | ×1.250 | 32px | 32px ✓ | Reading: every paragraph of argument |
--text-xl | 26px | ×1.300 | 36px | 36px ✓ | Third-level headings |
--text-2xl | 32px | ×1.231 | 44px | 44px ✓ | Second-level headings |
--text-3xl | 42px | ×1.313 | 52px | 52px ✓ | Display titles on phones; homepage headlines |
--text-4xl | 52px | ×1.238 | 64px | 64px ✓ | On the ladder, kept in reserve |
--text-5xl | 68px | ×1.308 | 80px | 80px ✓ | Display titles from 640px |
--text-6xl | 84px | ×1.235 | 80px | 96px, set tighter | Homepage poster, phones |
--text-7xl | 108px | ×1.286 | 100px | 120px, set tighter | Homepage poster, 1024px |
--text-8xl | 136px | ×1.259 | 124px | 144px, set tighter | Homepage poster, 640px and 1280px |
--text-9xl | 172px | ×1.265 | 156px | 180px, set tighter | Homepage poster, 1440px |
III · The leading
One rule for the space between lines
Lines of text are like rows of seats: too close and they feel cramped, too far apart and you lose your place. Printers call the distance from one line to the next leading. Ours is the type size multiplied by φ raised to the power of twenty over the size, rounded to the 4px grid.
leading = size × φ20 / size
At our reading size, 20px, that is exactly φ, a line of 32px. As the type grows, the multiplier relaxes toward one, so headings sit closer together than body text. The point is the gap a reader actually sees: the air between one line and the next stays near 12px at every size (40 on 52, 52 on 64, 68 on 80) instead of swelling with the letters, so the rows feel equally roomy whether the type is small or large. A careful typesetter used to do this by hand.
On reading pages like this one there is a second rule, the reading rhythm. Every baseline, the invisible line the letters sit on, lands on one grid, a reading line apart, the way a book page is set. Each block keeps its own leading; the space between blocks grows, by never more than a line, until the next baseline lands. The grid button at the top shows these lines on the whole page. Here they are always on, and they line up across both columns.
A computer checks the rule, and every other rule on this page, each time the site is built. If anyone sets a size that is off the ladder, or a leading the rule does not give, the build stops and says which line of which stylesheet is wrong.
IV · Every piece of type
Seven settings, and the reason for each
Seven settings cover every word on this website. Each sample below is set with the site’s own styles, so what you see is the real thing.
Make good work.
.gc-display| Setting | CSS | As set |
|---|---|---|
| FaceArchivo, weight 900 | font-family, font-weight | |
| Size and leading68 / 80 from 640px; 42 / 52 below | font-size / line-height | |
| Letter spacing−0.045em | letter-spacing | |
| Word spacing+0.08em | word-spacing |
01 Display
A page title is read once, from a distance, as a shape. Archivo is a grotesque with nineteenth-century bones, sturdy enough to carry a whole sentence at poster size without looking shouty.
Big type looks loose at its natural spacing, because the gaps grow along with the letters, so we pull the letters in by 4.5% of their size. Tightening letters tightens the spaces between words too, so we give the words a little back and they stay words.
On a phone the title drops by whole steps of the ladder, from 68 / 80 to 42 / 52, rather than shrinking smoothly. A size that shrank smoothly would spend its time between the rungs; whole steps keep every size on the ladder.
Three typefaces, each with one job
.gc-h1| Setting | CSS | As set |
|---|---|---|
| FaceArchivo, weight 800 | font-family, font-weight | |
| Size and leading40 / 52 | font-size / line-height | |
| Letter spacing−0.01em | letter-spacing |
02 Section heading
This is the one size set off the ladder, and on purpose. It is measured against the lines of reading text instead: two lines of body text are 64px, and 40 is to 64 as 5 is to 8, the golden ratio in whole numbers.
A slightly lighter weight than the display keeps a heading from competing with the title above it. We measured its tightest common letter pair, and at −0.01em they still sit 0.015em apart, so no two letters touch.
One rule for the space between lines
.gc-h3| Setting | CSS | As set |
|---|---|---|
| FaceArchivo, weight 800 | font-family, font-weight | |
| Second level32 / 44 | | 32 / 44 |
| Third level26 / 36 | | 26 / 36 |
03 Second and third headings
Each heading level is one step down the ladder from the last, so you can see which heading sits under which without a single size chosen by eye.
The space between their lines comes from the same rule as everything else on the page. Lines of large type sit closer together than lines of small type, so that the air between lines stays close to the same.
Look at the middle of a sunflower. Each new seed grows a fixed turn around from the last, about 137.5 degrees, so the seeds never line up behind one another, and the head packs tight with no gaps.
.gc-text| Setting | CSS | As set |
|---|---|---|
| FaceAtkinson Hyperlegible Next, weight 350 | font-family, font-weight | |
| Size and leading20 / 32, the golden ratio itself | font-size / line-height | |
| Letter spacing+0.05em | letter-spacing | |
| Word spacing+0.02em | word-spacing | |
| Measure624px, about 65 characters a line | max-width | 624px, about 65 characters a line |
| ColorFull ink, never gray | color | Full ink, never gray |
04 Reading
The Braille Institute commissioned Atkinson Hyperlegible for people with low vision, and drew it with a panel of readers who have it. Letters that are easily confused, such as a capital I, a lower-case l and the number 1, are drawn to look unmistakably different. The 2025 edition, Next, added weights and the monospaced companion we use for labels.
We set it a little lighter than the regular weight, at 350, because at 400 its strokes came out heavier than the fonts it replaced. We measured the gaps: 0.05em of extra letter spacing makes the gap between letters about a third of a letter’s width, the spacing the British Dyslexia Association recommends, and the space between words stays at least three and a half times that.
Twenty pixels on thirty-two is 5 : 8. Six hundred and twenty-four pixels of it holds about 65 characters, the middle of the range typographers have recommended for a comfortable line since long before screens.
A lead paragraph is set at exactly the same size and in the same full ink, rather than a size larger. There is one reading size on this site, so the eye never has to adjust between the introduction and the argument.
Your email address
.gc-typestudy__interface| Setting | CSS | As set |
|---|---|---|
| FaceAtkinson Hyperlegible Next, weight 350 | font-family, font-weight | |
| Size and leading16 / 24 | font-size / line-height |
05 Interface
Text that you scan rather than read, such as buttons, form fields and short notes, uses the conventional 16px on 24, a line height of 1.5. Below reading size the golden rule would set lines too tight, so small text keeps this looser spacing.
Sixteen pixels is also the smallest size an iPhone accepts in a form field without zooming in when someone taps it, which can throw the whole page off to one side.
The rule is not there to replace the eye. It gives the work a steady edge.
.gc-pull| Setting | CSS | As set |
|---|---|---|
| FaceArchivo, weight 800 | font-family, font-weight | |
| Size and leading32 / 36 | font-size / line-height | |
| Measureφ⁵, about 11em | max-width | φ⁵, about 11em |
| MarkA hairline above and below | border | A hairline above and below |
06 Pull quote
A pull quote is a sentence the page stands behind, so it is set as a statement: in the heading face, at a heading’s size and measure, between two hairlines. Nothing marks it in the margin, and nothing is set in italic.
II · The scale
.gc-apparatus| Setting | CSS | As set |
|---|---|---|
| FaceAtkinson Hyperlegible Mono, weight 500 | font-family, font-weight | |
| Size and leading12.5 / 20, in capitals | font-size / line-height | |
| Letter spacing+0.12em, or +0.06em in captions | letter-spacing |
07 Apparatus
Think of the signs in a library: the shelf numbers aren’t the books, but they help you find them. On this site, anything that names or measures the content, rather than being the content, is set in the monospaced face, small, in capitals and spaced out. We call it apparatus: section numbers, dates, labels, sources and captions.
A monospaced face is already evenly spaced, so it needs much less extra spacing than capitals in a proportional face would. Past about 0.14em, words stop reading as words.
Because apparatus is always set this way, a reader learns within a page or two to skim past it, or to look straight for it, the way you stop noticing shelf numbers until you need one.
V · Why it matters
Type is how a page treats people
Most people never notice type that is set well. They only notice that they kept reading.
The people who notice type that is set badly are the ones it leaves out: a reader with low vision squinting at gray text, a dyslexic reader losing the line in a paragraph that runs too wide, an older reader whose phone made the letters smaller than they can see. Every setting on this page is a small decision in their favor.
We wrote the rules down and let a computer keep them so that the decision is made once, carefully, and never quietly undone. The story of the proportion behind it is in The golden ratio, without the legends.