Texte

Das Performance-Budget einer Schrift

·4 min read

Diese Seite wurde mit AI-Unterstützung übersetzt. Das englische Original ist maßgeblich.

Der vorherige Essay dieser Reihe argumentierte, dass viele Anwendungen gar keine Fonts ausliefern sollten. Dieser hier gilt den Oberflächen, auf denen die Schrift ihre Bytes verdient — denn „sie ist das Laden wert" ist der Punkt, an dem die Ingenieursarbeit beginnt, nicht der, an dem sie endet. Ein Webfont ist eine renderblockierende Abhängigkeit für den wichtigsten Inhalt der Seite. Budgetiere ihn entsprechend.

Eine Datei, jeder Schriftschnitt

Die Entscheidung mit der größten Hebelwirkung ist die Dateiarchitektur. Eine traditionelle Schriftfamilie wird als statische Instanzen ausgeliefert — Regular, Kursiv, Fett, vielleicht ein Display-Schnitt — jede ein eigener Request, zusammen leicht 300–400 KB. Ein Variable Font trägt denselben Umfang (oft mehr: jedes Gewicht von 100 bis 900) in einer Datei, die typischerweise weniger wiegt als zwei statische.

Eine statische Familie aus vier Dateien mit 380 KB gegenüber einem einzelnen Subset-Variable-Font mit 92 KB und demselben Umfang.

Weniger Dateien bedeuten auch weniger Gelegenheiten für partielles Laden — kein Aufblitzen von echter Kursive und falschem Fett, während die Bold-Datei hinterherhinkt. Und die zusätzlichen Achsen der variablen Datei sind funktional: optische Größenanpassung für kleinen Text, Grade für dunkle Themes — Fähigkeiten, keine Nutzlast.

Subsetting mit Konsequenz

Die meisten Fontdateien bestehen überwiegend aus Zeichen, die die eigene Oberfläche nie rendern wird. Subsetting — das Beschneiden der Datei auf die tatsächlich genutzten Schriftsysteme und Zeichen — halbiert einen lateinischen Font routinemäßig, und unicode-range erlaubt es, breitere Abdeckung vorzuhalten, ohne vorab dafür zu bezahlen: Man deklariert das lateinische Subset und das erweiterte Subset als getrennte Faces, und der Browser lädt die Erweiterung nur, wenn ein passendes Zeichen auftaucht. Werkzeuge wie pyftsubset/fonttools machen daraus einen Build-Schritt statt eines Bastelprojekts. WOFF2 versteht sich von selbst; wer 2026 noch etwas anderes ausliefert, sollte dort anfangen.

font-display, ehrlich gewählt

Das Ladeverhalten ist eine Produktentscheidung im CSS-Kostüm:

  • block verbirgt den Text, während der Font lädt. Fast nie vertretbar — man tauscht die Zeit der Leser gegen die Eitelkeit der Marke.
  • swap zeigt sofort den Fallback und wechselt, sobald der Font eintrifft. Richtig für Leseoberflächen — aber es macht den Moment des Wechsels zu deinem Problem, wovon der nächste Abschnitt handelt.
  • optional verwendet den Font nur, wenn er bereits im Cache liegt (grob: sofort oder nie). Für hochperformante Anwendungen, die auf einem Webfont bestehen, ist das die ehrliche Einstellung — der erste Besuch liest im Fallback, jeder spätere bekommt die Hausschrift, und nichts verschiebt sich je.
Drei font-display-Strategien auf einer Zeitachse: block verbirgt Text, swap zeigt den Fallback und verschiebt dann, optional verschiebt nie.

Den Wechsel zur Unsichtbarkeit konstruieren

Wer sich für swap entscheidet, muss den Layout-Shift selbst eliminieren. Der moderne Werkzeugkasten schafft das nahezu perfekt: ein Fallback-@font-face auf Basis einer lokalen Systemschrift, mit size-adjust, ascent-override und descent-override so abgestimmt, dass der Fallback denselben Raum einnimmt wie der Webfont. Der Text rendert sofort im angepassten Fallback; der Webfont trifft ein; nichts bewegt sich. Diese Website macht genau das — der Georgia-Fallback der Display-Schrift ist metrisch skaliert, sodass der Wechsel ein Wechsel der Stimme ist, nicht des Layouts.

Dieselbe nominelle Größe in zwei Schriften: Die x-Höhen widersprechen sich, bis font-size-adjust den Fallback normalisiert.

Zum Abschluss die Auslieferungshygiene: selbst hosten (ein Font-CDN eines Drittanbieters ist eine Datenschutzfrage und ein Verbindungsaufbau, den man nicht braucht), die eine kritische Datei preloaden und unveränderliche Cache-Header setzen, damit die Kosten pro Nutzer genau einmal anfallen — für immer.

Das vollständige Budget für eine ernsthafte Textschrift, so umgesetzt: ein vorab geladenes variables WOFF2, auf die eigenen Sprachen beschnitten, ~40–90 KB, swap mit einem metrisch kompatiblen Fallback oder gleich optional. Das ist günstiger als die meisten Hero-Bilder — und genau das ist der Maßstab, den die Schrift von Anfang an erfüllen musste.