Ich wollte eine eigene Schrift. Was ich nicht wollte, war ein Jahr Zeichnen. Also habe ich dort angefangen, wo die Lizenz es erlaubt: Geist steht unter der SIL Open Font License 1.1, und die OFL existiert genau dafür — Ableitungen sind ausdrücklich vorgesehen, solange die Herkunft mitgeliefert wird.
Das hier ist also keine Schrift, die ich gezeichnet habe. Es ist eine, die ich neu gebaut habe. Und das Interessante daran war am Ende nicht das Zeichnen.
Was tatsächlich geändert wurde
Ein Rebranding wäre gewesen: Familie umbenennen, ausliefern, fertig. So lief es nicht. Proportionen, x-Höhe, Zeichenbreiten, Laufweite und Kerning wurden neu kalibriert, und die Kombinationen, die als Erstes auffallen, gingen durch mehrere Runden:
Oundo, wo eine Ableitung zuerst aus dem Gleichgewicht kipptm,iundn, weil der Rhythmus in kleinen Graden genau daran hängt- Ziffern und die Zeichen, auf die Interfaces tatsächlich angewiesen sind
Jedes davon wurde visuell und technisch korrigiert, mehrfach. Was ausgeliefert wird:
| Achse | Was drin ist |
|---|---|
| Schnitte | Regular 400, Medium 500, SemiBold 600, Bold 700 |
| Formate | TTF, OTF, WOFF2, dazu kleinere Latin-Subsets fürs Web |
| Abdeckung | Erweitertes Latein, Vietnamesisch, Kyrillisch, UI-Symbole |
| OpenType | Ziffernfunktionen, inklusive tabellarisch |
| Abhängigkeiten | Keine, auch keine Peer Dependencies, seit 0.6.1 |
Der Teil, den niemand sieht, bis er kaputt ist
Wer Konturen ändert, macht alles ungültig, was daran ausgerichtet war. Das GPOS-Kerning musste neu gebaut werden, ebenso die Mark-to-Base-, Mark-to-Ligature- und Mark-to-Mark-Anker — jeder Akzent, jedes diakritische Zeichen neu verankert an Konturen, die sich verschoben hatten.
Drei weitere Dinge, die in keinem Specimen auftauchen:
- Combining Marks behalten eine Advance Width von null. Stimmt das nicht, bekommt akzentuierter Text stillschweigend Abstände, die niemand bestellt hat.
- Die vertikalen Metriken vermeiden Clipping unter Windows. Verschiedene Plattformen lesen verschiedene Metrik-Felder; die falsche Kombination schneidet Oberlängen auf einem System ab und sieht bei dir tadellos aus.
- TTF und WOFF2 sind für kleine Grade gehintet. Eine Schrift, die bei 48 px souverän wirkt, kann in einer Tabellenzelle bei 12 px auseinanderfallen.
Nichts davon ist auf dem Poster zu sehen, das man postet. Alles davon ist in einem Formularfeld zu sehen.
Wie Software behandelt
Hier liegt die Verschiebung, die das Projekt getragen hat. Schriftprojekte werden üblicherweise über Specimen begutachtet — Seite rendern, Augen zusammenkneifen, nachjustieren. Das erwischt, worin das Auge gut ist, und übersieht den Rest.
Die Release-Kriterien sind deshalb Prüfungen, keine Eindrücke:
- FontBakery meldet weder FAIL noch FATAL noch ERROR, in TTF und OTF. Nicht „weitgehend sauber" — null.
- Neun Playwright-Checks decken die Darstellung von 10 bis 18 Pixeln ab, dazu Baselines, Überlauf, tabellarische Ziffern und visuelle Regression, in Chromium, Firefox und WebKit.
- Der Build ist reproduzierbar, ein Release also etwas, das man neu erzeugen kann, statt etwas, das man auf einer Platte findet.
Für das Band von 10 bis 18 Pixeln würde ich am lautesten argumentieren. Dort steht Interface-Text tatsächlich, und genau diesen Bereich zeigt eine Specimen-Seite nie.
Packaging gehört zum Entwurf
Die Schrift liegt als zutat-font auf npm und als vollständiges GitHub-Release, Quellcode und Build-Pipeline sind öffentlich. Das Paket enthält vier komplette WOFF2-Dateien, vier Latin-Subsets, Next.js-Wrapper, TypeScript-Typen und Plain-CSS-Exports.
Seit 0.6.1 hat es keine Dependencies und keine Peer Dependencies, besteht npm audit ohne Findings und wird über GitHub Trusted Publishing mit Provenance ausgeliefert.
Der letzte Punkt wiegt schwerer, als er klingt. Ein Font-Paket ist ein Supply-Chain-Artefakt wie jedes andere. Wer eines in eine Produktiv-App holt, sollte nachvollziehen können, woher die Datei stammt.
Was die AI gemacht hat, und was nicht
Die mechanische Hälfte hat die AI getragen: Konturen transformieren, Varianten erzeugen, sich durch repetitive Korrekturen arbeiten, schneller als ich von Hand.
Entschieden hat sie nichts. Welche von vier o-Varianten neben einem n richtig sitzt, ob die Laufweite bei 11 px zu eng liest, wann eine Korrektur weit genug gegangen ist — das blieb jedes Mal eine Urteilsfrage, und dorthin ging der Großteil der Runden.
Ehrlich zusammengefasst: Die AI hat die Kosten pro Iteration gedrückt, wodurch ich mehr Runden gedreht habe, als ich sonst gedreht hätte. Die Notwendigkeit, dass jemand hinsieht und eine Meinung hat, hat sie nicht abgeschafft.
Was das nicht klärt
- Es ist eine Ableitung, und das ist eine echte Einschränkung. Von Geist aus zu starten hieß, Entscheidungen zu erben, die ich nicht getroffen habe. Ein Teil der Kalibrierung war Arbeit gegen das Original statt mit ihm.
- Saubere Toolchain ist nicht dasselbe wie gute Schrift. Ein bestandener FontBakery-Lauf sagt, dass die Datei wohlgeformt ist, nicht dass die Buchstaben taugen. Das sind zwei Fragen, und nur für eine gibt es einen Prüfer.
- Eine Familie, ein Gestalter, keine Kritik. Schrift wird besser, wenn Leute draufschauen, die selbst Schrift zeichnen. Meine hat das nicht durchlaufen.
Next
Was ich daraus in jede Gestaltungsarbeit mitnehmen würde:
- Specimen schmeicheln. Teste in den Graden, in denen die Sache benutzt wird.
- Ein Release-Kriterium, das nicht durchfallen kann, ist keins.
- Packaging, Provenance und Audit-Status gehören zum Artefakt, nicht zum Papierkram danach.
- AI verkürzt die Schleife zwischen Versuchen. Den Geschmack, der zwischen ihnen auswählt, liefert sie nicht — dieselbe Trennung, nach der ich Modelle route.
Offen sind variable Schnitte. Alles oben ist statisch, und eine variable Achse würde die ganze Metrik- und Hinting-Geschichte deutlich schwerer machen. Ob sich das lohnt, habe ich noch nicht entschieden.
Falls du selbst eine Schrift ausgeliefert hast, oder eine Ableitung: Mich würde interessieren, wie deine Release-Checkliste aussieht, und ob darauf je etwas angeschlagen hat, das dein Auge schon abgenickt hatte.
Zutat Sans ist eine modifizierte Schrift, abgeleitet von Geist von Vercel, basement.studio und Mitwirkenden, veröffentlicht unter der SIL Open Font License 1.1. Name, Spacing-System, Produktionspipeline, Tests, Dokumentation und Packaging gehören zum eigenständigen Zutat-Projekt.
Baust du an etwas Ähnlichem?
Ich schreibe hier über Setups, die ich selbst benutze. Wenn du an etwas Vergleichbarem arbeitest, würde mich interessieren, wie dein Workflow aussieht.