New — free and open source

Hover a letter to drop the serifs

The sans grew serifs and kept its skeleton. Same cap height, same x-height, same line box — a second voice, not a second system.

One skeleton, two voices.

HandglovesVigil 400capx-heightbaseline
HandglovesVigil Serif 300capx-heightbaseline

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.
sour
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.
II II
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

  1. ExtraLight200Coffee winning its daily argument with everything else.
  2. Light300Coffee winning its daily argument with everything else.
  3. Regular400Coffee winning its daily argument with everything else.
  4. Medium500Coffee winning its daily argument with everything else.
  5. SemiBold600Coffee winning its daily argument with everything else.
  6. Bold700Coffee winning its daily argument with everything else.
  7. ExtraBold800Coffee winning its daily argument with everything else.
  8. 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.

  1. 64 / 1.05

    Coffee winning its daily argument with everything else.

  2. 40 / 1.15

    The first one went in slightly off. Not crooked. Not perfect. It held.

  3. 28 / 1.3

    Not crooked. Not perfect. It held.

  4. 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.

  5. 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.

  6. 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.

Line item20252026
Subscriptions1,2841,961
Services318402
Licensing96145
Other4138

Old-style tabular figures — columns align, numerals don't shout.

Reports & numbers

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

Sans — do

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

Sans — do

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

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.

Cyrillic

Хангловес

Толстая чёрная библиография содержала восемнадцать выделенных названий, переплетённых в библиотеках позади здания.

Greek

Χειρόκτια

Η παχιά μαύρη βιβλιογραφία περιείχε δεκαοκτώ επισημασμένους τίτλους, δεμένους σε βιβλιοθήκες πίσω από το κτίριο.

About 2,300 glyphs inherited from Vollkorn, carried through the reproportioning. Central and Eastern European Latin included.

Small caps smcp

The Quarterly Review

Old-style onum

1,024.19

Lining lnum

1,024.19

Tabular tnum

11,111

ABCDEFGHIJKLMNOPQRSTUVWXYZ

abcdefghijklmnopqrstuvwxyz

0123456789 & @ # $ % — “quotes” Il1 O0 rn m

АБВГДЕЖЗИЙКЛМНОПРСТ абвгдежзийклмнопрст αβγδεζηθικλμνξοπρστυφχψω

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 height140.6 — Vigil 140.0
x-height100.4 — Vigil 100.0
x-height ÷ cap0.714 — matches exactly
ascenderflat on the cap, as Vigil's is
descender40.0 — Vigil 40.0
line box1.200 em — matches Vigil
lowercase width5.7% wider than Vigil at Regular; 1.5% at 200, 15% at 900
figureslining by default, old-style on onum
weight axis200–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.

Embed

@font-face { font-family: "Vigil Serif"; src: url("https://www.vigilfont.com/fonts/VigilSerif-wght-.woff2") format("woff2"); font-weight: 200 900; }
@font-face { font-family: "Vigil Serif"; src: url("https://www.vigilfont.com/fonts/VigilSerif-Italic-wght-.woff2") format("woff2"); font-weight: 200 900; font-style: italic; }

Or take the hosted one-liner: vigil.css now declares the serif alongside the sans, so one stylesheet gives you both families.

Download Vigil SerifDownload the sansTell me what breaks

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.