Wie man @font-face in CSS verwendet

Wie man @font-face in CSS verwendet

Der @font-face-Befehl ermöglicht es, benutzerdefinierte Schriften auf einer Webseite zu laden. Sobald er zu einem Stylesheet hinzugefügt wird, fordert der Befehl den Browser auf, die Schriftart von ihrem Hosting-Ort herunterzuladen und sie gemäß den CSS-Anweisungen anzuzeigen.

Ohne diese Regel sind unsere Designs auf die Schriftarten beschränkt, die bereits auf dem Computer des Benutzers installiert sind, und diese variieren je nach verwendetem System. Hier sehen wir eine gute Übersicht über vorhandene Systemschriften.

Allgemeine Browserunterstützung

Praktische Ebene der Browserunterstützung

Die Unterstützung für WOFF und WOFF 2 nimmt stark zu, daher können wir wahrscheinlich Folgendes verwenden:

@font-face {
  font-family: 'MyWebFont';
  src: url('myfont.woff2') format('woff2'), url('myfont.woff') format('woff');
}

Heutzutage können Sie wahrscheinlich auch nur WOFF2 verwenden:

@font-face {
  font-family: 'MyWebFont';
  src: url('myfont.woff2') format('woff2');
}

Der einzige praktische Grund, WOFF zusätzlich zu verwenden, besteht darin, die Unterstützung für Internet Explorer 11 zu gewährleisten.

Tiefstmögliche Browserunterstützung

Dies ist die Methode mit der derzeit tiefsten Unterstützung. Die @font-face-Regel sollte dem Stylesheet vor allen anderen Stilen hinzugefügt werden.

@font-face {
  font-family: 'MyWebFont';
  src: url('webfont.eot'); /* IE9 Compat Modes */
  src: url('webfont.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
       url('webfont.woff2') format('woff2'), /* Super Modern Browsers */
       url('webfont.woff') format('woff'), /* Pretty Modern Browsers */
       url('webfont.ttf') format('truetype'), /* Safari, Android, iOS */
       url('webfont.svg#svgFontName') format('svg'); /* Legacy iOS */
}

Verwenden Sie es dann, um Elemente wie folgt zu gestalten:

body {
  font-family: 'MyWebFont', Fallback, sans-serif;
}

Etwas tiefere Browserunterstützung

Wenn Sie eine Art Kompromiss zwischen vollständiger Unterstützung und praktischer Unterstützung benötigen, können Sie eine .ttf-Datei hinzufügen:

@font-face {
  font-family: 'MyWebFont';
  src: url('myfont.woff2') format('woff2'),
       url('myfont.woff') format('woff'),
       url('myfont.ttf') format('truetype');
}

Alternative Techniken

@import

Obwohl @font-face ideal für Schriften ist, die auf unseren eigenen Servern gehostet werden, gibt es Situationen, in denen eine gehostete Schriftlösung besser ist. Google Fonts bietet dies als Möglichkeit zur Verwendung eigener Schriften an. Hier ist ein Beispiel für die Verwendung von @import, um die Schriftart Open Sans von Google Fonts zu laden:

@import url(//fonts.googleapis.com/css?family=Open+Sans);

Dann können wir es verwenden, um Elemente zu gestalten:

body {
  font-family: 'Open Sans', sans-serif;
}

Wenn Sie die URL der Schriftart öffnen, können Sie tatsächlich die ganze Arbeit sehen, die hinter den Kulissen mit @font-face geleistet wird.

LESEN  Junglück – Natürliche Kosmetik für Haut und Haar

Ein Vorteil der Verwendung eines gehosteten Dienstes besteht darin, dass wahrscheinlich alle Schriftartenvarianten enthalten sind, was eine tiefe Cross-Browser-Kompatibilität gewährleistet, ohne alle diese Dateien selbst hosten zu müssen.

eines Stylesheets

Alternativ könnten Sie dieselbe Ressource verlinken wie jede andere CSS-Datei, und zwar innerhalb des HTML-Dokuments anstelle des CSS. Unter Verwendung desselben Beispiels von Google Fonts würden wir Folgendes verwenden:

<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Open+Sans&display=swap" rel="stylesheet">

Dann können wir unsere Elemente wie bei den anderen Methoden gestalten:

body {
  font-family: 'Open Sans', sans-serif;
}

Auch hier werden die @font-face-Regeln importiert, jedoch anstelle von Injektion in unser Stylesheet werden sie unserem HTML hinzugefügt.

Es ist im Grunde dasselbe… beide Techniken laden die benötigten Ressourcen.

Verständnis der Schriftarten-Dateitypen

Die ursprüngliche Passage am Anfang des Beitrags enthält Verweise auf viele Dateien mit merkwürdigen Erweiterungen. Lassen Sie uns jeden einzelnen überprüfen und ein besseres Verständnis dafür entwickeln, was sie bedeuten.

WOFF / WOFF2

Steht für: Web Open Font Format.

Speziell für die Verwendung im Web entwickelt und von Mozilla in Zusammenarbeit mit anderen Organisationen entwickelt, laden WOFF-Schriften oft schneller als andere Formate, da sie eine komprimierte Version der Struktur der OpenType (OTF)- und TrueType (TTF)-Schriften verwenden. Dieses Format kann auch Metadaten und Lizenzinformationen in der Schriftdatei enthalten. Dieses Format ist der Sieger und darauf steuern alle Browser zu.

WOFF2 ist die nächste Generation von WOFF und bietet eine bessere Komprimierung als das Original.

SVG / SVGZ

Steht für: Skalierbare Vektorgrafiken (Schriftart)

SVG ist eine vektorbasierte Nachbildung der Schriftart, die viel kleiner in der Dateigröße ist und sich daher ideal für den mobilen Einsatz eignet. Dieses Format ist das einzige, das von Safari für iOS bis zur Version 4.1 und niedriger erlaubt ist. SVG-Schriften werden derzeit nicht von Firefox, IE oder IE Mobile unterstützt. Firefox hat die Implementierung auf unbestimmte Zeit verschoben, um sich auf WOFF zu konzentrieren.

LESEN  Tauchen Sie ein in die Welt der Apple Produkte

SVGZ ist die komprimierte Version von SVG.

EOT

Steht für: Embedded Open Type.

Dieses Format wurde von Microsoft (den ursprünglichen Innovatoren von @font-face) erstellt und ist ein proprietärer Dateistandard, der nur von IE unterstützt wird. Tatsächlich ist es das einzige Format, das von IE8 und älteren Versionen erkannt wird, wenn @font-face verwendet wird.

OTF / TTF

Steht für: OpenType-Schrift und TrueType-Schrift.

Das WOFF-Format wurde ursprünglich als Reaktion auf OTF und TTF entwickelt, unter anderem weil diese Formate leicht (und illegal) kopiert werden konnten. OpenType bietet jedoch Funktionen, die für viele Designer interessant sein könnten (wie Ligaturen und Ähnliches).

Ein Hinweis zur Leistung

Web-Schriften sind großartig für das Design, aber es ist auch wichtig, ihre Auswirkungen auf die Leistung zu verstehen. Benutzerdefinierte Schriften führen oft zu einer Leistungseinbuße, da die Schriftart heruntergeladen werden muss, bevor sie angezeigt wird.

Ein häufiges Problem war früher ein Moment, in dem die Schriften zunächst als Ersatz geladen wurden und dann zur heruntergeladenen Schriftart wechselten. Paul Irish hat einen älteren Beitrag dazu (namens “FOUT”: Flash of Unstyled Text).

Heutzutage verstecken die Browser den Text in der Regel standardmäßig, bevor die benutzerdefinierte Schriftart geladen ist. Besser oder schlechter? Sie entscheiden. Sie können dies durch verschiedene Techniken etwas kontrollieren. Das geht etwas über den Rahmen dieses Artikels hinaus, aber hier sind drei Artikel von Zach Leatherman, um Sie auf den richtigen Weg zu bringen:

  • Besseres @font-face mit Font Load Events
  • Wie wir Web-Schriften verantwortungsbewusst verwenden oder einen @font-face-Palm vermeiden
  • Flash of Faux Text – noch mehr zum Thema Schriftartenladen
LESEN  Alle Apps mit Spatial 3D Audio – Apple AirPods Pro, Galaxy Buds Pro und mehr!

Hier sind einige weitere Überlegungen bei der Verwendung von benutzerdefinierten Schriften:

Achten Sie auf die Dateigröße

Schriftarten können überraschend umfangreich sein, daher sollten Sie sich für Optionen entscheiden, die leichtere Versionen anbieten. Beispielsweise sollte eine Schriftart, die 50 KB wiegt, bevorzugt werden im Vergleich zu einer Schriftart, die 400 KB wiegt.

Begrenzen Sie den Zeichensatz, wenn möglich

Benötigen Sie wirklich die fetten und schwarzen Varianten einer Schriftart? Es ist eine gute Idee, Ihre Schriftsätze so einzuschränken, dass nur das geladen wird, was tatsächlich verwendet wird. Hier finden Sie einige gute Tipps dazu.

Verwenden Sie systemeigene Schriftarten für kleine Bildschirme

Viele Geräte haben schlechte Verbindungen. Ein Trick könnte sein, größere Bildschirme anzuvisieren, wenn die benutzerdefinierte Schriftart geladen wird, indem Sie @media verwenden.

In diesem Beispiel erhält der Bildschirm kleiner als 1000px eine Systemschriftart und Bildschirme mit einer solchen oder größeren Breite erhalten die benutzerdefinierte Schriftart.

@media (min-width: 1000px) {
  body {
    font-family: 'FontName', Fallback, sans-serif;
  }
}

Schriftarten-Dienste

Es gibt eine Reihe von Diensten, die Schriften hosten und Zugriff auf kommerziell lizenzierte Schriften bieten. Die Vorteile der Verwendung eines Dienstes liegen oft darin, dass eine große Auswahl an legalen Schriften effizient geliefert wird (z.B. indem sie auf einem schnellen CDN bereitgestellt werden).

Hier sind einige gehostete Schriftservices:

  • Cloud Typography
  • Typekit
  • Fontdeck
  • Webtype
  • Fontspring
  • Typotheque
  • Fonts.com
  • Google Fonts
  • Font Squirrel

Was ist mit Icon-Schriften?

Es stimmt, dass @font-face eine Schriftdatei laden kann, die mit Symbolen gefüllt ist und für ein Symbolsystem verwendet werden kann. Ich denke jedoch, dass Sie mit SVG als Symbolsystem viel besser dran sind. Hier ist ein Vergleich der beiden Methoden.

Nächste Schritte mit @font-face

Weitere Informationen zur @font-face-Leistung

Verwandte CSS-Eigenschaften

Weitere Ressourcen zu @font-face

  • CSS Fonts Module Level 4 (W3C)
  • Wie man die URL-Sache in der @font-face-Regel verwendet (DigitalOcean)