Same rules, both rows: cap height, x-height and baseline land in identical places.
cap height
140.6Vigil 140.0
x-height
100.4Vigil 100.0
x ÷ cap
0.714matches exactly
line box
1.200em — matches Vigil
set width
+5.7%lowercase at Regular; the rest is serifs
Stem-matched, the pairing is serif 300 beside sans 400: at the same nominal weight the serif's stems run heavier, so the pairing steps down a stop — the serif's new 200 sits nearest the sans at 275, not at 200. Set them at one size on one baseline and nothing shifts.
Reproportioned, not just re-drawn.
Three of the things that make it fit beside the sans — each one measurable, none of them cosmetic.
bhklcap linebaseline
Ascenders flat on the capThe ascenders of b, h, k and l stop dead on the cap line, exactly as Vigil's do — so caps and lowercase share one ceiling instead of two.
soursour
Wider at Regular, all serifsThe gray ghost is Vigil at the same size, from the same left edge. The gap grows letter by letter: at Regular the lowercase sets 5.7% wider. It is weight-dependent — 1.5% at 200, 15% at 900 — and all of it is serifs.
IIII
Stem-matched at 300 : 400Serif 300 beside sans 400. At the same number the serif always reads heavier, so the pairing steps down one stop.
Eight weights, one axis, 200 to 900.
Archaeology
Scroll drives the axis200
ExtraLight200Coffee winning its daily argument with everything else.
Light300Coffee winning its daily argument with everything else.
Regular400Coffee winning its daily argument with everything else.
Medium500Coffee winning its daily argument with everything else.
SemiBold600Coffee winning its daily argument with everything else.
Bold700Coffee winning its daily argument with everything else.
ExtraBold800Coffee winning its daily argument with everything else.
Black900Coffee winning its daily argument with everything else.
A real italic, not a slant.
Handgloves & bibliography
Separate drawings, separate file, separate rhythm: the italic narrows, picks up a written slope and swaps its a for a single-story one. Which is the point of an italic — it should sound like a different tone of voice inside the same sentence, the way this phrase does, and not like the roman leaning over to get a better look.
Reads at every size.
64 / 1.05
Coffee winning its daily argument with everything else.
40 / 1.15
The first one went in slightly off. Not crooked. Not perfect. It held.
28 / 1.3
Not crooked. Not perfect. It held.
20 / 1.55
Claire’s kitchen, when she made this pie, was a different country. Every bowl she owned. The counter a disaster by the second step. She’d push the flour bag to one side with her elbow, and it would leave a white shadow that stayed there until everything was done. She hummed. She pushed things five minutes past where they should have stopped. She cleaned at the end, if at all. The proof of the cook was in the residue.
17 / 1.62
Claire’s kitchen, when she made this pie, was a different country. Every bowl she owned. The counter a disaster by the second step. She’d push the flour bag to one side with her elbow, and it would leave a white shadow that stayed there until everything was done. She hummed. She pushed things five minutes past where they should have stopped. She cleaned at the end, if at all. The proof of the cook was in the residue.
14 / 1.55
Claire’s kitchen, when she made this pie, was a different country. Every bowl she owned. The counter a disaster by the second step. She’d push the flour bag to one side with her elbow, and it would leave a white shadow that stayed there until everything was done. She hummed. She pushed things five minutes past where they should have stopped. She cleaned at the end, if at all. The proof of the cook was in the residue.
Fourteen is the floor for running text and the leading opens as the size drops. Measure caps out around 34 em — past that the eye loses the line return.
Built for long attention.
Claire’s kitchen, when she made this pie, was a different country. Every bowl she owned. The counter a disaster by the second step. She’d push the flour bag to one side with her elbow, and it would leave a white shadow that stayed there until everything was done. She hummed. She pushed things five minutes past where they should have stopped. She cleaned at the end, if at all. The proof of the cook was in the residue.1. Old-style figures sit inside the x-height, so a footnote at 12 points stays quiet beside 17-point text.
Long-form reading
Essays, books, documentation. Generous x-height, sturdy stems, and a descender that matches the sans — set it at 17/1.6 and forget it's there.
The proof of the cook was in the residue.Pull quotes & openers
Editorial display
The italic is a real italic, not a slant. At 26px and up the bracketed serifs and the calligraphic a do the talking.
Lining figures by default for UI, old-style on onum for prose and tables. Both are tabular on request.
Wrong job, honestly.
Serif — don’t
Storage used128.4 GB
Sync interval15 min
Retention90 days
Regionus-east-1
Sans — do
Storage used128.4 GB
Sync interval15 min
Retention90 days
Regionus-east-1
Dense UI under 14px
At 12px the serifs thicken into the counters and the rows stop scanning. Side by side the sans is quieter and the numbers land faster.
Serif — don’t
OverviewPricingChangelog
Sans — do
OverviewPricingChangelog
Tracked-out all-caps nav
Wide letterspacing pulls the serifs apart until each word reads as separate marks. The sans holds together at the same tracking.
Serif — don’t
Terms apply to all accounts created after the effective date. Charges accrue monthly and are billed in arrears. Notice periods run from receipt, not dispatch.
Sans — do
Terms apply to all accounts created after the effective date. Charges accrue monthly and are billed in arrears. Notice periods run from receipt, not dispatch.
10px legal copy
At caption sizes the contrast between stem and serif collapses on low-DPI screens. There’s no hinted static cut yet either — that’s on the list.
Rule of thumb: content in the serif, interface in the sans. Everything above 14px and meant to be read is fair game.
Content in the serif, interface in the sans.
Chapter twenty-nine
The window was closing
Keno Vigil4 September 20269 min read
Sarah had ordered for both of them. In two years, she had never done that. Luna stood in the doorway, her hand still on the strap of her bag, and looked at the second cup already on the table and understood that, whatever this was, Sarah had practiced it.
Eighteen months ago they had been two people doing what a nine-person shop did, and that had been the whole business — not the taste, not the decks, the ratio. Now every shop in the region had the same tools sitting on the same desks.
Serif: headline, body, italicsSans: eyebrow, byline, rail, buttonOne size, one baseline, no adjustment.
Variations, live.
Fewer things, measured faster.
Volume 12 · No. 48 · 2026 · pp. 137–149
Nothing hurried, nothing missing.
Latin, Cyrillic, Greek.
Latin
Handgloves
The first one went in slightly off. Not crooked. Not perfect. It held.
Latin, Cyrillic and Greek, about 2,300 glyphs inherited from Vollkorn. Lining figures by default, old-style on onum, small caps and tabular figures — all live in the build below.
Where it stands.
cap height
140.6 — Vigil 140.0
x-height
100.4 — Vigil 100.0
x-height ÷ cap
0.714 — matches exactly
ascender
flat on the cap, as Vigil's is
descender
40.0 — Vigil 40.0
line box
1.200 em — matches Vigil
lowercase width
5.7% wider than Vigil at Regular; 1.5% at 200, 15% at 900
figures
lining by default, old-style on onum
weight axis
200–900, roman and italic
Variable roman and italic on one weight axis from 200 to 900, and sixteen static instances, hinted. Version 1.100. Free under the SIL Open Font License, like the sans.
The package is the sixteen hinted statics, the variable roman and italic, web fonts for all of them, the license and the FONTLOG. No email, no account.