Variable Fonts Guide

Variable Fonts sind eine Weiterentwicklung der OpenType-Schrift-Spezifikation, die es ermöglicht, viele verschiedene Variationen eines Schriftbilds in einer einzigen Datei zu integrieren, anstatt für jede Breite, jedes Gewicht oder jeden Stil eine separate Schriftdatei zu haben. Sie ermöglichen es Ihnen, über CSS und eine einzelne @font-face-Referenz auf alle in einer bestimmten Schriftdatei enthaltenen Variationen zuzugreifen. Dieser Artikel gibt Ihnen alles, was Sie wissen müssen, um den Einstieg in die Verwendung variabler Schriftarten zu erleichtern.

Hinweis: Um variable Schriftarten auf Ihrem Betriebssystem zu verwenden, müssen Sie sicherstellen, dass es auf dem neuesten Stand ist. Beispielsweise benötigen Linux-Betriebssysteme die neueste Linux FreeType-Version, und macOS vor High Sierra (10.13) unterstützt variable Schriftarten nicht. Wenn Ihr Betriebssystem nicht auf dem neuesten Stand ist, können Sie variable Schriftarten weder auf Webseiten noch in den Firefox Developer Tools nutzen.

Variable Fonts: Was sie sind und wie sie sich unterscheiden

Um besser zu verstehen, was an variablen Schriftarten anders ist, lohnt es sich, einen Blick darauf zu werfen, wie nicht variable Schriftarten sind und wie sie im Vergleich abschneiden.

Standard- (oder statische) Schriftarten

In der Vergangenheit wurde ein Schriftbild als mehrere einzelne Schriftarten produziert, wobei jede Schriftart eine spezifische Kombination aus Breite/Gewicht/Stil darstellte. So hatten Sie separate Dateien für 'Roboto Regular', 'Roboto Bold' und 'Roboto Bold Italic' — was bedeutete, dass Sie am Ende 20 oder 30 verschiedene Schriftdateien hatten, um ein komplettes Schriftbild darzustellen (für ein großes Schriftbild mit unterschiedlichen Breiten konnte es auch mehrere Male so viele sein).

In einem solchen Szenario brauchten Sie mindestens vier Dateien für eine typische Verwendung eines Schriftbilds auf einer Seite mit Fließtext: regular, italic, bold und bold italic. Wenn Sie mehr Gewichte hinzufügen wollten, wie ein leichteres für Bildunterschriften oder ein schwereres für zusätzliche Hervorhebungen, bedeutete das mehrere weitere Dateien. Dies führt zu mehr HTTP-Anfragen und mehr heruntergeladenen Daten (in der Regel etwa 20k oder mehr pro Datei).

Variable Schriftarten

Mit einer variablen Schriftart können all diese Permutationen in einer einzigen Datei enthalten sein. Diese Datei wäre größer als eine einzelne Schrift, aber in den meisten Fällen kleiner oder ungefähr die gleiche Größe wie die 4, die Sie für Fließtext laden könnten. Der Vorteil bei der Wahl der variablen Schriftart ist, dass Sie Zugriff auf das gesamte Spektrum der verfügbaren Gewichte, Breiten und Stile haben, anstatt auf nur die wenigen beschränkt zu sein, die Sie zuvor separat geladen hätten.

Dies ermöglicht gängige typografische Techniken, wie z.B. das Setzen von Überschriften in unterschiedlichen Gewichten, um die Lesbarkeit in jeder Größe zu verbessern, oder die Verwendung einer etwas schmaleren Breite für datenreiche Darstellungen. Zum Vergleich: In einem typografischen System für ein Magazin ist es üblich, 10–15 oder mehr verschiedene Gewichtungs- und Breitenkombinationen im gesamten Werk zu verwenden — was ein deutlich breiteres Stilspektrum bietet als derzeit im Web üblich ist (oder allein aus Leistungsgründen praktisch ist).

Eine Anmerkung zu Schriftfamilien, Gewichten und Varianten

Vielleicht ist Ihnen aufgefallen, dass wir darüber gesprochen haben, eine spezifische Schriftdatei für jedes Gewicht und jeden Stil (d.h. fett und kursiv und fett kursiv) zu haben, anstatt sich darauf zu verlassen, dass der Browser sie synthetisiert. Der Grund dafür ist, dass die meisten Schriftbilder sehr spezifische Designs für fettere Gewichte und Kursivschriften haben, die oft komplett unterschiedliche Zeichen beinhalten (zum Beispiel sind kleingeschriebene 'a' und 'g' in Kursivschriften häufig ziemlich unterschiedlich). Um das Design des Schriftbilds möglichst genau widerzuspiegeln und Unterschiede zwischen Browsern zu vermeiden, wie sie die verschiedenen Stile möglicherweise synthetisieren oder nicht, ist es genauer, die spezifischen Schriftdateien dort zu laden, wo nötig, wenn Sie eine nicht-variable Schrift verwenden.

Sie könnten auch feststellen, dass einige variable Schriftarten in zwei Dateien aufgeteilt kommen: eine für die Grundformen und alle ihre Variationen und eine, die die kursiven Variationen enthält. Dies wird manchmal getan, um die Gesamtdateigröße zu reduzieren, falls die Kursivschriften nicht benötigt oder genutzt werden. In allen Fällen ist es dennoch möglich, sie mit einem gemeinsamen font-family-Namen zu verknüpfen, sodass Sie sie mit demselben font-family und dem entsprechenden font-style aufrufen können.

Einführung in die 'Variation Axis'

Das Herzstück des neuen variablen Schriftartenformats ist das Konzept einer Achseder Variation, die den zulässigen Bereich dieses bestimmten Aspekts des Schriftbilddesigns beschreibt. So beschreibt die 'Gewichtsachse', wie leicht oder wie fett die Buchstabenformen sein können; die 'Breitenachse' beschreibt, wie schmal oder wie breit sie sein können; die 'Kursivachse' beschreibt, ob kursive Buchstabenformen vorhanden sind und entsprechend ein- oder ausgeschaltet werden können, usw. Beachten Sie, dass eine Achse ein Bereich oder eine binäre Auswahl sein kann. Gewicht kann im Bereich von 1–999 liegen, während Kursiv 0 oder 1 (aus oder an) sein kann.

Wie in der Spezifikation definiert, gibt es zwei Arten von Achsen: registrierte und benutzerdefinierte:

  • Registrierte Achsen sind diejenigen, die am häufigsten vorkommen und häufig genug sind, dass die Autoren der Spezifikation es für sinnvoll erachteten, sie zu standardisieren. Die fünf derzeit registrierten Achsen sind Gewicht, Breite, Schräge, Kursiv und optische Größe. Das W3C hat sich verpflichtet, sie auf bestehende CSS-Attribute abzubilden, und in einem Fall ein neues einzuführen, das Sie weiter unten sehen werden.
  • Benutzerdefinierte Achsen sind grenzenlos: Der Schriftgestalter kann jede beliebige Achse definieren und eingrenzen, die er möchte, und muss ihr innerhalb des Schriftdateiformats lediglich einen vierstelligen Tag zuweisen. Diese vierstelligen Tags können in CSS verwendet werden, um einen Punkt entlang dieser Achse der Variation anzugeben, wie in den unten stehenden Codebeispielen gezeigt wird.

Registrierte Achsen und bestehende CSS-Attribute

In diesem Abschnitt demonstrieren wir die fünf registrierten Achsen mit Beispielen und dem entsprechenden CSS. Wo möglich, werden sowohl die Standard- als auch die Low-Level-Syntax enthalten. Die Low-Level-Syntax (font-variation-settings) war der erste Mechanismus, der implementiert wurde, um die frühen Implementierungen der Unterstützung für variable Schriftarten zu testen und ist notwendig, um neue oder benutzerdefinierte Achsen jenseits der fünf registrierten zu nutzen. Das W3C beabsichtigte jedoch, dass diese Syntax nicht verwendet werden sollte, wenn andere Attribute verfügbar sind. Daher sollte wann immer möglich das entsprechende Attribut verwendet werden, wobei die Low-Level-Syntax von font-variation-settings nur verwendet werden sollte, um Werte oder Achsen festzulegen, die anderweitig nicht verfügbar sind.

Anmerkungen

  1. Bei der Verwendung von font-variation-settings ist es wichtig zu beachten, dass Achsennamen Groß- und Kleinschreibung unterscheiden. Die Namen der registrierten Achsen müssen in Kleinschreibung und die benutzerdefinierten Achsen in Großschreibung sein. Zum Beispiel:

    css
    font-variation-settings:
      "wght" 375,
      "GRAD" 88;
    

    wght (Gewicht) ist eine registrierte Achse, und GRAD (Grad) ist eine benutzerdefinierte Achse.

  2. Wenn Sie Werte mit font-variation-settings festgelegt haben und einen dieser Werte ändern möchten, müssen Sie alle erneut deklarieren (ähnlich wie bei der Festlegung von OpenType-Schriftfunktionen mit font-feature-settings). Sie können diese Einschränkung umgehen, indem Sie CSS Custom Properties (CSS-Variablen) für die einzelnen Werte verwenden und den Wert einer individuellen benutzerdefinierten Eigenschaft ändern. Beispielcode folgt am Ende der Anleitung.

Gewicht

Gewicht (repräsentiert durch den wght-Tag) definiert die Designachse, wie dünn oder dick (leicht oder schwer, in typografischen Begriffen) die Striche der Buchstabenformen sein können. Schon lange besteht in CSS die Möglichkeit, dies über die font-weight-Eigenschaft anzugeben, die numerische Werte im Bereich von 100 bis 900 in Schritten von 100 und Schlüsselwörter wie normal oder bold annimmt, die Aliase für ihre entsprechenden numerischen Werte (400 und 700 in diesem Fall) sind. Diese werden weiterhin bei nicht variablen oder variablen Schriften angewendet, aber bei variablen Schriften ist jetzt jede Nummer von 1 bis 1000 gültig.

Es sollte beachtet werden, dass es derzeit keine Möglichkeit in der @font-face-Deklaration gibt, einen spezifischen Punkt auf der Variationsachse einer variablen Schrift dem Schlüsselwort bold (oder einem anderen Schlüsselwort) zuzuweisen. Dies lässt sich in der Regel recht einfach lösen, erfordert jedoch einen zusätzlichen Schritt beim Verfassen Ihres CSS:

css
font-weight: 375;

font-variation-settings: "wght" 375;

Klicken Sie auf "Play" in den Codeblöcken unten, um das Beispiel im MDN Playground zu bearbeiten. Bearbeiten Sie den CSS-Code, um mit den Werten von font-weight zu spielen.

css
/* weight range is 300 to 900 */
.p1 {
  font-weight: 625;
}

/* weight range is 300 to 900 */
.p2 {
  font-variation-settings: "wght" 625;
}

/* Adjust with slider & custom property */
.p3 {
  font-variation-settings: "wght" var(--text-axis);
}

Breite

Breite (repräsentiert durch den wdth-Tag) definiert die Designachse, wie schmal oder breit (kondensiert oder erweitert, in typografischen Begriffen) die Buchstabenformen sein können. Dies wird normalerweise in CSS mit der font-stretch-Eigenschaft festgelegt, mit Werten, die als Prozentsatz über oder unter 'normal' (100%) ausgedrückt werden. Jede Zahl größer als 0 ist technisch gesehen gültig — jedoch ist es weit wahrscheinlicher, dass der Bereich näher bei 100% liegt, wie z.B. 75%-125%. Wenn ein Zahlenwert außerhalb des Bereichs, der in der Schrift kodiert ist, angegeben wird, sollte der Browser die Schrift mit dem nächstgelegenen erlaubten Wert rendern.

Hinweis: Das % Symbol wird nicht verwendet, wenn font-variation-settings genutzt wird.

css
font-stretch: 115%;

font-variation-settings: "wdth" 115;

Klicken Sie auf "Play" in den Codeblöcken unten, um das Beispiel im MDN Playground zu bearbeiten. Ändern Sie den CSS-Code, um mit den Breitenwerten der Schrift zu spielen.

css
/* width range is 55% to 100% */
.p1 {
  font-stretch: 60%;
}

/* width range is an integer from 55 to 100 */
.p2 {
  font-variation-settings: "wdth" 60;
}

/* Adjust with slider & custom property */
.p3 {
  font-variation-settings: "wdth" var(--text-axis);
}

Kursiv

Die Kursivachse (ital) kann im Bereich [0-1] gesetzt werden, wobei 0 "nicht kursiv," 0.5 "halb kursiv," und 1 "voll kursiv" spezifiziert. Kursivdesigns enthalten oft dramatisch unterschiedliche Buchstabenformen im Vergleich zu ihren aufrechten Gegenstücken, sodass beim Übergang von aufrecht zu kursiv normalerweise mehrere Glyphe (oder Zeichen) Anpassungen vorgenommen werden. Kursiv und oblique werden oft ziemlich austauschbar verwendet, sind jedoch in Wahrheit ziemlich unterschiedlich. Oblique wird in diesem Kontext mit dem Begriff slant definiert (siehe den nachstehenden Abschnitt), und eine Schriftart hätte typischerweise das eine oder das andere, aber nicht beides.

In CSS werden sowohl kursiv als auch oblique per font-style-Eigenschaft auf Text angewendet. Beachten Sie auch die Einführung von font-synthesis: none; — was verhindert, dass Browser versehentlich die Variationsachse und ein synthetisiertes Kursiv anwenden. Dies kann auch verwendet werden, um Faux-Bold zu verhindern.

css
font-style: italic;

font-variation-settings: "ital" 1;

font-synthesis: none;

Klicken Sie auf "Play" in den Codeblöcken unten, um das Beispiel im MDN Playground zu bearbeiten. Bearbeiten Sie den CSS-Code, um mit Kursivwerten zu spielen.

css
/* font-style: italic, with and without font-synthesis */
.p1 {
  font-style: italic;
}

.p1-no-synthesis {
  font-style: italic;
  font-synthesis: none;
}

/* italic range is 0 or 1 */
.p2 {
  font-variation-settings: "ital" 1;
  font-synthesis: none;
}

/* Adjust with slider & custom property */
.p3 {
  font-synthesis: none;
  font-variation-settings: "ital" var(--text-axis);
}

Schräge

Schräge (repräsentiert durch den slnt-Tag), oder wie es oft genannt wird, 'oblique' — unterscheidet sich von echten Kursivschriften darin, dass sie den Winkel der Buchstabenformen verändert, aber keine Art von Zeichenaustausch durchführt. Es ist auch variabel, da es als numerischer Bereich ausgedrückt wird. Dies ermöglicht es, die Schrift entlang der Schrägachse zu variieren. Der erlaubte Bereich liegt zwischen -90 und 90 Grad.

Die beiden Eigenschaften, die die Schräge steuern können, sind font-style und font-variation-settings. Die folgenden beiden Eigenschaftsdeklarationen sind gleich:

font-style: oblique 14deg;

font-variation-settings: "slnt" -14;

Bevorzugen Sie die font-style-Eigenschaft vor der font-variation-settings-Eigenschaft. Das deg-Schlüsselwort wird nicht verwendet, wenn die font-variation-settings-Eigenschaft verwendet wird. Im Fall der font-variation-settings-Eigenschaft bedeutet ein positiver Winkel eine gegen den Uhrzeigersinn verlaufende Schräge.

Im folgenden Live-Beispiel können Sie die Schräge anpassen.

css
.font-style {
  font-style: oblique 5deg;
}

.font-variation {
  font-variation-settings: "slnt" -5;
}

.adjustable {
  font-variation-settings: "slnt" var(--slant-angle);
}

Optische Größe

Dies ist etwas Neues für digitale Schriftarten und CSS, aber es ist eine jahrhundertealte Technik im Entwerfen und Erstellen von Metallschriften. Optische Größenanpassung bezieht sich auf die Praxis, die Gesamtdicke der Striche von Buchstabenformen basierend auf der physischen Größe zu variieren. Wenn die Größe sehr klein war (z.B. ein Äquivalent zu 10 oder 12px), hätten die Zeichen eine insgesamt dickere Linienführung, und vielleicht andere kleine Modifikationen, um sicherzustellen, dass sie bei einer physisch kleineren Größe reproduziert und lesbar wären. Umgekehrt, wenn eine viel größere Größe verwendet wurde (wie 48 oder 60px), könnte es viel größere Variationen in der Stärke und Gewichtung der Striche geben, was das Schriftbild designmäßig mehr im Einklang mit der ursprünglichen Absicht zeigt.

Obwohl dies ursprünglich dazu gedacht war, den Tinten- und Papierdruckprozess auszugleichen (sehr dünne Linien bei kleinen Größen druckten oft nicht und gaben den Buchstabenformen ein gebrochenes Aussehen), ist es gut auf digitale Displays übertragbar, wenn es darum geht, die Bildschirmqualität und physische Größenwiedergabe auszugleichen.

Optische Größenwerte sind in der Regel dazu gedacht, automatisch entsprechend font-size angewendet zu werden, können aber auch mit der Low-Level-Syntax font-variation-settings manipuliert werden.

Es gibt ein neues Attribut, font-optical-sizing, das geschaffen wurde, um variable Schriftarten in CSS zu unterstützen. Bei der Verwendung von font-optical-sizing sind die einzigen zulässigen Werte auto oder none — dieses Attribut ermöglicht es daher nur, die optische Größenanpassung ein- oder auszuschalten. Wenn jedoch font-variation-settings: 'opsz' <num> verwendet wird, können Sie einen numerischen Wert angeben. In den meisten Fällen würde man den font-size (die physische Größe, in der der Text gerendert wird) mit dem opsz-Wert abgleichen (was die Art und Weise ist, wie optische Größen im auto-Modus angewendet werden sollen). Die Option, einen spezifischen Wert zu liefern, wird bereitgestellt, um, falls es notwendig ist, die Standardeinstellung für Lesbarkeit, Ästhetik oder aus einem anderen Grund zu überschreiben – ein spezifischer Wert angewendet werden kann.

css
font-optical-sizing: auto;

font-variation-settings: "opsz" 36;

Klicken Sie auf "Play" in den Codeblöcken unten, um das Beispiel im MDN Playground zu bearbeiten. Bearbeiten Sie den CSS-Code, um mit Werten der optischen Größe zu spielen.

css
.p1 {
  font-optical-sizing: none;
}
/* font-optical-sizing can be auto or none */
.p2 {
  font-optical-sizing: auto;
}

/* optical range is from 8 to 144 */
.p3 {
  font-variation-settings: "opsz" 64;
}

/* Adjust with slider & custom property */
.p4 {
  font-variation-settings: "opsz" var(--text-axis);
}

Benutzerdefinierte Achsen

Benutzerdefinierte Achsen sind genau das: sie können jede Achse der Designvariation sein, die sich der Schriftgestalter vorstellt. Einige werden möglicherweise ziemlich häufig werden — oder sogar registriert — aber das wird nur die Zeit zeigen.

Grad

Grad könnte eine der häufigeren benutzerdefinierten Achsen werden, da es eine bekannte Geschichte im Schriftbilddesign hat. Die Praxis, verschiedene Grade eines Schriftbildes zu entwerfen, wurde oft als Reaktion auf die beabsichtigte Verwendung und den Druckvorgang durchgeführt. Der Begriff 'Grad' bezieht sich auf das relative Gewicht oder die Dichte des Schriftbilddesigns, unterscheidet sich jedoch von traditionellem 'Gewicht' darin, dass sich der physische Raum, den der Text einnimmt, nicht ändert, sodass das Ändern des Textgrades das gesamte Layout des Textes oder der umgebenden Elemente nicht ändert. Dies macht Grad zu einer nützlichen Variationsachse, da es variiert oder animiert werden kann, ohne einen Reflow des Textes selbst zu verursachen.

css
font-variation-settings: "GRAD" 88;

Klicken Sie auf "Play" in den Codeblöcken unten, um das Beispiel im MDN Playground zu bearbeiten. Bearbeiten Sie den CSS-Code, um mit den Gradwerten der Schrift zu spielen.

css
/* grade range is 88 to 150 */
.p1 {
  font-size: 64px;
  font-variation-settings: "GRAD" 88;
}

/* Adjust with slider & custom property */
.p2 {
  font-size: 64px;
  font-variation-settings: "GRAD" var(--text-axis);
}

Verwendung einer variablen Schriftart: @font-face Änderungen

Die Syntax zum Laden von variabler Schriftarten ist sehr ähnlich zu jeder anderen Webschrift, mit einigen bemerkenswerten Unterschieden, die durch Upgrades der traditionellen @font-face-Syntax bereitgestellt werden, die jetzt in modernen Browsern verfügbar sind.

Die Grundsyntax ist dieselbe, aber die Schrifttechnologie kann spezifiziert werden, und erlaubte Bereiche für Deskriptoren wie font-weight und font-stretch können angegeben werden, anstatt nach dem Namen der geladenen Schriftdatei benannt zu werden.

Beispiel für eine Standard-Upright- (Roman-) Schrift

css
@font-face {
  font-family: "MyVariableFontName";
  src: url("path/to/font/file/my-variable-font.woff2")
    format("woff2-variations");
  font-weight: 125 950;
  font-stretch: 75% 125%;

  font-style: normal;
}

In diesem Fall gibt die Deklaration font-style: normal an, dass diese Schriftdatei verwendet werden soll, wenn font-family auf MyVariableFontName gesetzt ist und font-style auf normal gesetzt ist. Alternativ könnten Sie auch font-style: oblique 0deg oder font-style: oblique 0deg 20deg verwenden, um anzugeben, dass die Schrift normale aufrechte Glyphen hat (angegeben durch 0deg).

Beispiel für eine Schrift, die nur Kursivschriften und keine aufrechten Zeichen enthält

css
@font-face {
  font-family: "MyVariableFontName";
  src: url("path/to/font/file/my-variable-font.woff2")
    format("woff2-variations");
  font-weight: 125 950;
  font-stretch: 75% 125%;

  font-style: italic;
}

In diesem Fall zeigt die Deklaration font-style: italic an, dass diese Schriftdatei verwendet werden soll, wenn font-family auf MyVariableFontName gesetzt ist und font-style auf italic gesetzt ist. Alternativ könnten Sie font-style: oblique 14deg verwenden, um anzugeben, dass die Schrift kursivierte Glyphen hat.

Beispiel für eine Schrift, die eine Oblique- (Slant-) Achse enthält

css
@font-face {
  font-family: "MyVariableFontName";
  src: url("path/to/font/file/my-variable-font.woff2")
    format("woff2-variations");
  font-weight: 125 950;
  font-stretch: 75% 125%;

  font-style: oblique 0deg 12deg;
}

In diesem Fall gibt der Wert oblique 0deg 12deg an, dass diese Schriftdatei verwendet werden soll, wenn in einer Stilregel die font-family-Eigenschaft auf MyVariableFontName gesetzt ist und die font-style-Eigenschaft oblique mit einem Winkel zwischen null und einschließlich 12 Grad ist.

Hinweis: Nicht alle Browser haben die vollständige Syntax für Schriftformats implementiert, also testen Sie sorgfältig. Alle Browser, die variable Schriftarten unterstützen, werden sie trotzdem rendern, wenn Sie das Format auf nur das Dateiformat setzen, anstatt auf format-variations (d.h. woff2 statt woff2-variations), aber es ist am besten, die korrekte Syntax zu verwenden, wenn möglich.

Hinweis: Das Angeben von Wertebereichen für font-weight, font-stretch und font-style verhindert, dass der Browser versucht, eine Achse außerhalb dieses Bereichs zu rendern, wenn das entsprechende Attribut (d.h. font-weight oder font-stretch) verwendet wird, blockiert Sie jedoch nicht, einen ungültigen Wert über font-variation-settings festzulegen. Verwenden Sie dies daher mit Vorsicht.

Arbeiten mit älteren Browsern

Die Unterstützung für variable Schriftarten kann mit CSS-Featureabfragen überprüft werden (siehe @supports), sodass es möglich ist, variable Schriftarten in Produktion zu verwenden und das CSS, das die variablen Schriftarten aufruft, innerhalb eines Featureabfrageblocks zu kapseln.

css
h1 {
  font-family: some-non-variable-font-family;
}

@supports (font-variation-settings: "wdth" 115) {
  h1 {
    font-family: some-variable-font-family;
  }
}

Beispielseiten

Die folgenden Beispielseiten zeigen zwei verschiedene Möglichkeiten, Ihre CSS zu strukturieren. Die erste verwendet die Standardattribute, wo immer möglich. Das zweite Beispiel verwendet CSS Custom Properties, um Werte für eine font-variation-settings-Zeichenfolge festzulegen und zeigt, wie Sie einzelne variable Werte leichter aktualisieren können, indem Sie eine einzelne Variable überschreiben, anstatt die ganze Zeichenfolge neu zu schreiben. Beachten Sie den Hover-Effekt auf dem h2, der nur den benutzerdefinierten Eigenschaftenwert der Gradachse ändert. Klicken Sie auf "Play" in den Codeblöcken unten, um das Beispiel im MDN Playground zu bearbeiten:

css
.container1 h1 {
  font-optical-sizing: auto;
  font-size: 5rem;
  font-stretch: 85%;
  font-weight: 450;
}
.container1 h2 {
  font-optical-sizing: auto;
  font-size: 2.25rem;
  font-stretch: 90%;
  font-weight: 575;
}
.container1 p {
  font-optical-sizing: auto;
  font-size: 1rem;
  font-stretch: 100%;
  font-weight: 375;
}
.demo2 {
  --text-wght: 375;
  --text-wdth: 100;
  --text-opsz: 16;
  --text-GRAD: 88;
}
.container2 > * {
  font-size: 5rem;
  font-variation-settings:
    "wght" var(--text-wght),
    "wdth" var(--text-wdth),
    "opsz" var(--text-opsz),
    "GRAD" var(--text-GRAD);
}
.container2 h1 {
  --text-wght: 450;
  --text-wdth: 85;
  --text-opsz: 80;
  font-size: 5rem;
}
.container2 h2 {
  --text-wght: 575;
  --text-wdth: 95;
  --text-opsz: 36;
  font-size: 2.25rem;
}
.container2 h2:hover {
  --text-GRAD: 130;
}
.container2 p {
  font-size: 1rem;
}

Ressourcen