Start · Sprachen · JavaScript · Referenz · FontFace.variationSettings

FontFace.variationSettings

Eigenschaft

Liest oder setzt die niedrigstufigen Variationsachsen einer OpenType-/TrueType-Schrift als String. Entspricht dem <code>font-variation-settings</code>-Deskriptor von <code>@font-face</code>.

seit JavaScript Chrome/Edge 62+, Safari 11+; in Firefox nicht verf Kategorie: webapi

Signatur

FontFace.variationSettings

Beschreibung

Die Eigenschaft variationSettings eines FontFace-Objekts enthält die Variationsachsen einer variablen Schrift (Variable Font) als String. Sie entspricht dem Deskriptor font-variation-settings innerhalb einer @font-face-Regel. Der Standardwert ist "normal".

Der Wert ist eine kommagetrennte Liste von Paaren aus Achsen-Tag und Zahl, z. B. '"wght" 650, "wdth" 85'. Jedes Achsen-Tag besteht aus genau vier ASCII-Zeichen in Anführungszeichen. Dabei wird Groß- und Kleinschreibung unterschieden: Registrierte Achsen wie wght, wdth, slnt, ital und opsz schreibt man klein. Eigene Achsen des Schriftherstellers (z. B. GRAD) schreibt man groß.

Den Wert kannst du auf zwei Wegen festlegen: beim Erzeugen über das Deskriptor-Objekt des Konstruktors (new FontFace(family, source, { variationSettings })) oder nachträglich durch Zuweisung. Sinnvoll ist das, wenn du Schriften dynamisch per FontFaceSet (document.fonts) lädst und eigene Achsen voreinstellen willst, für die es keinen CSS-Deskriptor auf höherer Ebene gibt.

Für registrierte Achsen solltest du lieber die höheren Eigenschaften weight, stretch und style verwenden. variationSettings ist ein niedrigstufiges Werkzeug und überschreibt diese Werte, ohne den Browser zu informieren. Das kann zum Beispiel die Auswahl der passenden Schrift oder synthetischen Fettdruck stören.

Parameter

Name Typ Default Beschreibung
$value string "normal" Beim Setzen: "normal" oder eine kommagetrennte Liste aus "tag" zahl, z. B. '"wght" 700, "GRAD" 50'. Bei ungültiger Syntax wird ein SyntaxError (DOMException) ausgelöst.

Rückgabewert

Typ
string
Beschreibung
Die aktuellen Variationseinstellungen als CSS-String, ansonsten "normal". Der Browser kann den String normalisieren, z. B. Leerzeichen oder die Schreibweise der Zahlen anpassen.

Beispiele

Variable Schrift mit Variationen laden

const font = new FontFace(
  'RobotoFlex',
  'url(/fonts/RobotoFlex.woff2) format("woff2")',
  { variationSettings: '"wdth" 110, "GRAD" 50' }
);

console.log(font.variationSettings);

const loaded = await font.load();
document.fonts.add(loaded);
document.body.style.fontFamily = 'RobotoFlex, sans-serif';
"wdth" 110, "GRAD" 50

Standardwert lesen und nachträglich ändern

const font = new FontFace('Inter', 'url(/fonts/Inter.var.woff2)');
console.log(font.variationSettings); // Standardwert

font.variationSettings = '"opsz" 32';
console.log(font.variationSettings);
normal "opsz" 32

Ungültige Werte abfangen

const font = new FontFace('Demo', 'url(/fonts/demo.woff2)');

const setVariation = (face, value) => {
  try {
    face.variationSettings = value;
    return true;
  } catch (err) {
    console.warn(`Ungültiger Wert: ${err.name}`);
    return false;
  }
};

setVariation(font, '"wght" 600');   // gültig
setVariation(font, 'wght 600');     // Tag ohne Anführungszeichen
setVariation(font, '"wg" 600');     // Tag hat nicht 4 Zeichen
Ungültiger Wert: SyntaxError Ungültiger Wert: SyntaxError

Alle geladenen Schriften mit Variationen auflisten

await document.fonts.ready;

const variableFaces = [...document.fonts]
  .filter((face) => face.variationSettings !== 'normal')
  .map((face) => ({ family: face.family, settings: face.variationSettings }));

console.table(variableFaces);

// Wichtig · Fallstricke

  • Browser-Unterstützung: Chromium-Browser und Safari unterstützen die Eigenschaft. Firefox stellt sie am FontFace-Objekt nicht bereit. Prüfe die Unterstützung vorher, z. B. mit 'variationSettings' in FontFace.prototype.
  • Groß- und Kleinschreibung: Achsen-Tags werden nach Groß-/Kleinschreibung unterschieden. "WGHT" ist nicht die registrierte Gewichtsachse "wght". Achsen, die die Schrift nicht kennt, werden stillschweigend ignoriert.
  • Vorrang: Für Gewicht, Breite und Neigung besser weight, stretch und style verwenden. variationSettings wird später angewendet, überschreibt diese Werte und macht die Auswahl der passenden Schrift unzuverlässig.
  • Nicht-variable Schriften: Die Einstellung hat keine sichtbare Wirkung, wenn die Schriftdatei keine Variationsachsen enthält.
  • Werte außerhalb des Bereichs: Der Browser begrenzt sie auf den Bereich, den die Schrift unterstützt. Einen Fehler gibt es dabei nicht.
  • Nachträgliche Änderung: Wenn du den Wert nach dem Hinzufügen zu document.fonts änderst, wird bereits gerenderter Text je nach Browser nicht immer sofort neu dargestellt. Am zuverlässigsten ist es, den Wert vor load() zu setzen.