Zutat Sans
A Geist derivative, reshaped with AI assistance
Zutat Sans is a static sans family built on Geist, not a rebrand of it. Proportions, x-height, character widths, tracking and kerning were recalibrated, and the pairs that break first — O/o, m, i, n, figures and the glyphs UI actually leans on — went through several rounds of visual and technical correction.
The point of the project was to treat a typeface the way you treat software: a reproducible build, regression tests, browser QA, security patches and release criteria you can measure rather than eyeball.
It stays a modified Geist under the SIL Open Font License 1.1. The name, the spacing system, the production pipeline, the tests, the docs and the packaging are the part that is mine.
Features
- Regular 400, Medium 500, SemiBold 600 and Bold 700
- TTF, OTF and WOFF2, plus smaller Latin web subsets
- Extended Latin, Vietnamese, Cyrillic, UI symbols and OpenType figure features
- GPOS kerning and mark anchors rebuilt against the new contours
- Zero dependencies and zero peer dependencies since 0.6.1
Specimen
Tech Stack
FontBakery
Reports no FAIL, FATAL or ERROR across the TTF and OTF builds.
Playwright
Nine checks covering 10–18px rendering, baselines, overflow, tabular figures and visual regression in Chromium, Firefox and WebKit.
npm + Trusted Publishing
Shipped as zutat-font with provenance, clean npm audit, Next.js wrappers, TypeScript types and plain CSS exports.
Herausforderungen & Erkenntnisse
The metrics nobody sees until they break
Combining marks keep a zero advance width, the vertical metrics avoid clipping on Windows, and the TTF and WOFF2 builds are hinted for small sizes. None of it shows in a specimen image; all of it shows in a text field at 12px.
Attribution is not optional
The OFL requires the lineage to travel with every derivative. Both notices ship with the package: Vercel 2023 for Geist, mine for the modifications.
AI has no eye
A model transforms outlines and generates variants quickly. Deciding which variant is right stayed a human judgment, and that is where most of the rounds went.
Zeitplan
2026