mitmario.dev

@font-face

@font-face registriert eine eigene Schriftart, die du dann mit font-family verwenden kannst. Die At-Rule definiert den Namen der Schrift, die Quelle (URL oder lokale Datei) und optionale Eigenschaften wie Gewicht und Stil. Mit dem Descriptor font-display steuerst du, wie der Browser Text anzeigt, während die Schrift noch lädt. Das Format woff2 ist heute der Standard: Es bietet die beste Kompression und wird von allen modernen Browsern unterstützt. Richtig eingesetzt, ermöglicht @font-face die volle Kontrolle über die Typografie deiner Website.

Steckbrief @font-face
Syntax
@font-face { font-family: <name>; src: <url> [format()]; }
Initialwert
N/A (At-Rule)
Vererbt
Nein
Animierbar
Nein
Kategorie
Typografie
Werte
5
Beispiele
4
Browser
5 von 5
E-Mail
2 von 5
Stand
15.02.2026

Grundlagen

@font-face ist keine reguläre CSS-Eigenschaft, sondern eine At-Rule: eine spezielle Anweisung, die eine Schriftart beim Browser registriert. Die Mindest-Angaben sind font-family (der Name, unter dem du die Schrift verwendest) und src (wo die Schriftdatei liegt). Der Browser lädt die Schrift erst, wenn sie tatsächlich auf der Seite verwendet wird, nicht schon beim Einlesen der @font-face-Regel.

Der src-Descriptor unterstützt url() für externe Dateien und local() für lokal installierte Schriften. Du kannst mehrere Quellen angeben, getrennt durch Komma: Der Browser nimmt die erste, die funktioniert. Mit format() gibst du an, welches Format die Datei hat, damit der Browser Formate überspringen kann, die er nicht unterstützt. Für moderne Browser reicht woff2 allein aus; woff als Fallback ist nur für sehr alte Browser nötig.

font-display ist der wichtigste Performance-Descriptor. Er steuert, was passiert, während die Schrift lädt: Text unsichtbar machen (FOIT, Flash of Invisible Text), sofort einen Fallback zeigen und bei Laden tauschen (FOUT, Flash of Unstyled Text), oder die Schrift optional nur verwenden wenn sie schnell genug da ist. Für die meisten Websites ist font-display: swap oder font-display: fallback die beste Wahl.

Syntax & Werte

5 Werte

font-display Werte

Wert Beschreibung Beispiel
auto Browser entscheidet über das Ladeverhalten (Standard). Meistens wie block. font-display: auto
block Text unsichtbar bis Schrift geladen (FOIT). Block-Phase bis zu 3 Sekunden. font-display: block
swap Sofort Fallback-Schrift anzeigen, bei Laden austauschen (FOUT). Schrift wird immer geladen. font-display: swap
fallback Kurze Block-Phase (100ms), dann Fallback. Tauscht nur, wenn Schrift innerhalb ca. 3s geladen. font-display: fallback
optional Kurze Block-Phase, verwendet Schrift nur wenn sofort verfügbar. Beste Performance. font-display: optional

Beispiele

4 Beispiele

Eine einfache @font-face-Regel mit woff2-Format und einem Fallback auf woff. Der font-display: swap sorgt dafür, dass Text sofort sichtbar ist.

Grundlegende @font-face Deklaration
@font-face {
  font-family: "MeineSchrift";
  src:
    url("/fonts/meineschrift.woff2") format("woff2"),
    url("/fonts/meineschrift.woff") format("woff");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

/* Verwendung */
body {
  font-family: "MeineSchrift", sans-serif;
}

Barrierefreiheit

Verwende font-display: swap oder font-display: fallback, damit Text immer lesbar ist, während die Schrift lädt. font-display: block macht Text bis zu 3 Sekunden unsichtbar. Das ist ein Barrierefreiheitsproblem, weil Nutzer nichts lesen können. Screenreader lesen den Text zwar trotzdem vor, aber sehende Nutzer mit langsamen Verbindungen sehen eine leere Seite.

Wähle eine Fallback-Schrift, die der Web-Font in Größe und Laufweite ähnelt. Ein großer Unterschied zwischen Fallback und Web-Font verursacht Layout Shifts beim Austausch, was für Nutzer mit vestibulären Störungen oder Konzentrationsschwierigkeiten problematisch sein kann. Die CSS-Eigenschaft size-adjust in @font-face kann helfen, die Metriken der Fallback-Schrift an die Web-Font anzugleichen.

Lade nicht zu viele Schriften und Schnitte. Jede Schriftdatei ist eine HTTP-Anfrage, die die Ladezeit erhöht. Auf langsamen Verbindungen oder älteren Geräten kann das zu spürbaren Verzögerungen führen. Für die meisten Websites reichen 2-3 Schriftschnitte (Regular, Bold, eventuell Italic).

Häufige Fehler

6 Fehler
01 Nur woff laden statt woff2
woff2 bietet ca. 30% bessere Kompression als woff. Alle modernen Browser unterstützen woff2, ein woff-Fallback ist nur noch für sehr alte Browser nötig.
02 font-display vergessen
Ohne explizites font-display gilt auto, was in den meisten Browsern wie block funktioniert: Text ist unsichtbar, bis die Schrift geladen ist. Setze immer font-display: swap oder fallback.
03 Zu viele Schriftschnitte laden
Jeder Schnitt (Regular, Bold, Italic, Bold Italic, Light, Medium…) ist eine separate HTTP-Anfrage. Lade nur die Gewichte, die du tatsächlich verwendest. Zwei oder drei Schnitte reichen für die meisten Websites.
04 local() falsch verwenden
local("Inter") sucht nach einer lokal installierten Schrift mit exakt diesem Namen. Der Name muss dem PostScript-Namen oder dem Full-Name der Schrift entsprechen, nicht dem Dateinamen.
05 Variable Font laden und trotzdem einzelne Gewichte definieren
Wenn du einen Variable Font mit font-weight: 100 900 lädst, brauchst du keine separaten @font-face-Regeln für einzelne Gewichte. Die Range-Deklaration deckt alles ab.
06 font-family-Name in @font-face anders schreiben als in der Nutzung
@font-face { font-family: "Inter"; } und body { font-family: "inter"; } funktioniert, weil CSS case-insensitive ist. Aber "Inter" und "Inter Regular" sind verschiedene Namen. Halte den Namen konsistent.

Browser-Kompatibilität

5 von 5

@font-face wird von allen Browsern vollständig unterstützt. woff2 wird seit 2015/2016 von allen modernen Browsern unterstützt. font-display wird seit 2018 von allen modernen Browsern unterstützt. Variable Fonts werden seit 2018 breit unterstützt.

  • Chrome

    Komplett

  • Firefox

    Komplett

  • Safari

    Komplett

  • Edge

    Komplett

  • Opera

    Komplett

Email-Kompatibilität

2 von 5

@font-face wird in HTML-Emails nur von wenigen Clients unterstützt. Die meisten Clients ignorieren Web-Fonts komplett und verwenden ihre Standard-Schriften.

  • Apple Mail

    Komplett

    Unterstützt @font-face und Web-Fonts vollständig

  • Gmail

    Keine

    @font-face wird komplett entfernt. Nur System-Schriften möglich

  • Outlook

    Keine

    @font-face wird nicht unterstützt. Fallback auf Times New Roman oder Calibri

  • Thunderbird

    Komplett

    Unterstützt @font-face

  • Yahoo Mail

    Keine

    @font-face wird entfernt

Newsletter

einmal die Woche, kostenlos

Neue Artikel und Videos, was sich auf der Lernplattform tut, und ab und zu ein Sonderpreis zum Kursstart. Kurz genug, dass du es auch liest.

Zuletzt verschickt · KW 40

Einmal alles neu, und die Lernplattform ist da

Danach kommt eine Mail mit Bestätigungslink, erst dann bist du eingetragen. Abmelden geht unten in jeder Ausgabe. Mehr dazu in der Datenschutzerklärung.