Start · Sprachen · JavaScript · Referenz · HTMLFontElement.face

HTMLFontElement.face

Eigenschaft

Veraltete Eigenschaft, die das <code>face</code>-Attribut eines <code>&lt;font&gt;</code>-Elements als String liest und setzt, also eine kommagetrennte Liste von Schriftnamen.

seit JavaScript Baseline: alle Browser (veraltet, nur aus Kompatib deprecated seit ja Kategorie: webapi

Signatur

HTMLFontElement.face

Beschreibung

Die Eigenschaft HTMLFontElement.face spiegelt das HTML-Attribut face des veralteten <font>-Elements wider. Der Wert ist ein String mit einem oder mehreren Schriftnamen, getrennt durch Kommas, zum Beispiel "Arial, Helvetica, sans-serif". Der Browser nimmt die erste Schrift aus der Liste, die auf dem System verfügbar ist.

Lesen und Schreiben wirken direkt auf das Attribut: Wenn du face setzt, ändert sich getAttribute("face") genauso, und umgekehrt. Fehlt das Attribut, liefert die Eigenschaft einen leeren String "".

Brauchen wirst du die Eigenschaft praktisch nur, wenn du alten HTML-Code auswerten, bereinigen oder in modernes Markup umwandeln willst, etwa bei der Migration alter CMS-Inhalte. In neuem Code legst du Schriften mit CSS fest, also mit font-family oder element.style.fontFamily.

Rückgabewert

Typ
string
Beschreibung
Der aktuelle Wert des face-Attributs als kommagetrennte Liste von Schriftnamen. Fehlt das Attribut, ist der Wert ein leerer String "". Die Eigenschaft ist les- und schreibbar.

Beispiele

Schriftliste eines <font>-Elements auslesen

// HTML: <font id="alt" face="Verdana, Arial, sans-serif">Alter Text</font>
const fontEl = document.getElementById('alt');
console.log(fontEl.face);
console.log(fontEl.face.split(',').map(s => s.trim()));
Verdana, Arial, sans-serif ["Verdana", "Arial", "sans-serif"]

face setzen und Attribut-Spiegelung prüfen

const fontEl = document.createElement('font');
console.log(JSON.stringify(fontEl.face)); // Attribut fehlt noch

fontEl.face = 'Georgia, serif';
console.log(fontEl.getAttribute('face'));
console.log(fontEl.outerHTML);
"" Georgia, serif <font face="Georgia, serif"></font>

Migration: <font> durch <span> mit CSS ersetzen

// Alle alten <font>-Elemente in <span>-Elemente mit font-family umwandeln
const migrateFontTags = (root = document) => {
  root.querySelectorAll('font').forEach((fontEl) => {
    const span = document.createElement('span');
    if (fontEl.face) span.style.fontFamily = fontEl.face;
    if (fontEl.color) span.style.color = fontEl.color;
    span.append(...fontEl.childNodes);
    fontEl.replaceWith(span);
  });
};

document.body.innerHTML = '<p><font face="Courier New, monospace">Code</font></p>';
migrateFontTags();
console.log(document.body.innerHTML);
<p><span style="font-family: &quot;Courier New&quot;, monospace;">Code</span></p>

// Wichtig · Fallstricke

  • Veraltet: <font> ist seit HTML 4.01 abgelöst und in HTML5 nicht mehr konform. Alle Browser unterstützen face zwar weiterhin, aber nur damit alte Seiten funktionieren. Für neuen Code nimm CSS (font-family).
  • Keine Prüfung: Der Browser nimmt jeden String an und prüft weder die Schriftnamen noch deren Verfügbarkeit. Welche Schrift tatsächlich angezeigt wird, verrät face nicht. Dafür gibt es getComputedStyle(el).fontFamily bzw. document.fonts.check().
  • CSS gewinnt: Das Attribut wird wie eine CSS-Regel mit geringster Spezifität behandelt. Jede Autoren-CSS-Regel mit font-family überschreibt es.
  • Anführungszeichen: Schriftnamen mit Leerzeichen werden im Attribut ohne CSS-Anführungszeichen gespeichert. Überträgst du sie auf style.fontFamily, setzt der Browser die Anführungszeichen bei der Serialisierung meist selbst.
  • Der Wert wird nicht bereinigt. Wenn du Nutzereingaben in face oder in font-family übernimmst, lass sie nur als Wert zuweisen und bau sie nicht per innerHTML zusammen, sonst droht XSS.