FOUT, FOIT, FOFT

Avatar of Chris Coyier
Chris Coyier am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Erinnern Sie sich an FOUT? Bei der Verwendung einer benutzerdefinierten Schriftart über @font-face zeigten Browser bis zum Laden der benutzerdefinierten Schriftart eine Fallback-Schriftart im Schriftstapel an. Dies führte zu einem **„Flash of Unstyled Text“** – was beunruhigend war und Layout-Verschiebungen verursachen konnte. Wir haben Techniken dagegen entwickelt, zum Beispiel den Text unsichtbar machen, bis die Schriftart bereit ist.

Vor einigen Jahren begannen Browser, die Handhabung dessen zu ändern. Sie erkannten, wenn Text in einer benutzerdefinierten Schriftart gesetzt war, die noch nicht geladen war, und machten ihn unsichtbar, bis die Schriftart geladen war (oder X Sekunden vergangen waren). Das ist FOIT: **„Flash of Invisible Text“**. Wenn eine Schriftart fehlschlägt oder lange dauert, sind diese X Sekunden für Personen, die sich zu Recht um die Renderzeit-Performance sorgen, zu lang. Im schlimmsten Fall kann dieses Verhalten zu permanent unsichtbarem Inhalt führen.

Heutzutage versuchen wir, FOIT auf verschiedene Weise zu bekämpfen. In Faster Font Loading with Font Events schlägt Jonathan Suh die Verwendung einer Bibliothek vor, um zu erkennen, ob eine benutzerdefinierte Schriftart geladen wurde, und erst dann eine Klasse auf dem Dokument zu ändern, um den Text in dieser Schriftart zu setzen. Dies macht das Verhalten wie FOUT – beschleunigt lesbaren Inhalt auf Kosten einiger jarring visueller Veränderungen.

Zach Leatherman hat auch viel darüber geschrieben. In Better @font-face with Font Load Events schlägt er ebenfalls vor, auf das Laden der Schriftart zu warten, bevor eine Klasse gesetzt wird, um die Typografie festzulegen. Er geht auch darauf ein, was nötig ist, um einen Schriftart-Download auszulösen (es ist nicht so einfach wie eine @font-face-Deklaration). Scott Jehl bestätigt dies in Font Loading Revisited with Font Events, einschließlich eines Abschnitts über Cookies und Caching.

Zachs neuester Trick beinhaltete FOFT: **„Flash of Faux Text“**. Die Idee dabei ist, nur auf die römische Variante der benutzerdefinierten Schriftart zu warten und den Text sofort damit zu setzen. Sie zwingen den Browser, „faux bold“ und „faux italic“ zu erstellen, wo nötig, die durch die echten Versionen ersetzt werden, sobald diese heruntergeladen sind.

Vitaly Friedman schrieb über ihren Ansatz auf Smashing Magazine, wo sie tatsächlich localStorage verwenden, um die Schriftart zu cachen. Dies führt beim ersten Seitenaufruf zu einem FOUT und bei nachfolgenden Aufrufen zu einem (schnellen) FOIT.

Ich finde es einfach interessant, wie wir uns bei diesen Dingen hin und her bewegen. Der Browser verhält sich auf die eine Weise und wir überlisten ihn, sich auf eine andere Weise zu verhalten. Er ändert sich zu dieser Weise, und wir überlisten ihn, sich auf die alte Weise zu verhalten.