Start · Sprachen · JavaScript · Referenz · FontFace.descentOverride

FontFace.descentOverride

Eigenschaft

Liest oder setzt den <code>descent-override</code>-Deskriptor einer Schrift, also den Unterlängen-Wert, mit dem die Zeilenhöhe berechnet wird.

seit JavaScript Chrome/Edge 87+, Firefox 89+; Safari: nicht unters Kategorie: webapi

Signatur

FontFace.descentOverride

Beschreibung

Die Eigenschaft descentOverride eines FontFace-Objekts entspricht dem CSS-Deskriptor descent-override in einer @font-face-Regel. Sie legt fest, wie groß die Unterlänge (der Bereich unter der Grundlinie) für das Zeilenlayout sein soll. Der Wert ist ein String, entweder "normal" (die Metrik aus der Schriftdatei wird verwendet) oder ein Prozentwert wie "20%". Der Prozentwert bezieht sich auf die verwendete Schriftgröße.

Gebraucht wird die Eigenschaft vor allem, um Layoutverschiebungen (CLS) beim Laden von Webfonts zu verringern. Man passt damit die Metriken einer Ersatzschrift (z. B. einer lokalen Arial) an die eigentliche Webfont an. So bleibt die Zeilenhöhe gleich, wenn die Webfont nachgeladen wird und die Ersatzschrift ablöst. Meist setzt man descentOverride zusammen mit ascentOverride, lineGapOverride und size-adjust.

Man kann den Wert im Konstruktor über das Deskriptor-Objekt übergeben (new FontFace(name, source, { descentOverride: "20%" })) oder später direkt an der Eigenschaft ändern. Ein ungültiger Wert löst beim Setzen einen SyntaxError aus.

Parameter

Name Typ Default Beschreibung
$value string "normal" Nur beim Setzen: "normal" oder ein nicht negativer Prozentwert wie "25%".

Rückgabewert

Typ
string
Beschreibung
Der aktuelle Wert des Deskriptors, z. B. "normal" oder "22%".

Beispiele

Deskriptor im Konstruktor setzen und auslesen

const font = new FontFace(
  'Inter',
  'url(/fonts/inter.woff2) format("woff2")',
  { descentOverride: '24%' }
);

console.log(font.descentOverride);
24%

Metrisch angepasste Ersatzschrift gegen Layoutverschiebung

// Lokale Arial so anpassen, dass sie die Maße von "Inter" nachbildet
const fallback = new FontFace('Inter Fallback', 'local("Arial")', {
  ascentOverride: '90%',
  descentOverride: '22.43%',
  lineGapOverride: '0%',
  sizeAdjust: '107%'
});

await fallback.load();
document.fonts.add(fallback);

document.body.style.fontFamily = '"Inter", "Inter Fallback", sans-serif';
console.log(fallback.descentOverride);
22.43%

Wert nachträglich ändern und Fehler abfangen

const font = new FontFace('Demo', 'local("Georgia")');
console.log(font.descentOverride); // Standardwert

font.descentOverride = '30%';
console.log(font.descentOverride);

try {
  font.descentOverride = 'riesig';
} catch (err) {
  console.log(err.name);
}
normal 30% SyntaxError

// Wichtig · Fallstricke

  • Browserunterstützung: Chromium-Browser ab Version 87 und Firefox ab 89 unterstützen die Eigenschaft. Safari unterstützt weder descentOverride noch den CSS-Deskriptor descent-override. Dort wird der Wert ignoriert. Vor der Nutzung prüfen, z. B. mit 'descentOverride' in FontFace.prototype.
  • Der Prozentwert bezieht sich auf die verwendete Schriftgröße und nicht auf die Em-Box aus der Schriftdatei. Negative Werte sind ungültig.
  • Die Eigenschaft wirkt sich nur auf das Zeilenlayout aus. Die Glyphen selbst werden weder verschoben noch skaliert. Um die Größe anzupassen, nimmt man sizeAdjust.
  • Passende Override-Werte lassen sich mit Werkzeugen wie „Fontaine“ oder dem Next.js-Font-Optimizer aus den Metriken der Schriftdatei berechnen. Ausprobierte Schätzwerte führen oft zu sichtbaren Sprüngen.