Start · Sprachen · JavaScript · Referenz · FontData.style

FontData.style

Eigenschaft

Schreibgeschützte Eigenschaft, die den Stilnamen des Schriftschnitts als String liefert, z. B. <code>"Regular"</code>, <code>"Bold"</code> oder <code>"Italic"</code>.

seit JavaScript Experimentell: Chromium 103+ (Local Font Access AP Kategorie: webapi

Signatur

FontData.style

Beschreibung

Die Eigenschaft style eines FontData-Objekts gibt den Stil des lokal installierten Schriftschnitts als String zurück, z. B. "Regular", "Bold Italic" oder "Condensed Light". Der Wert stammt aus der Namenstabelle der Schriftdatei (OpenType-Subfamily-Name). FontData-Objekte erhält man über window.queryLocalFonts() aus der Local Font Access API.

Typische Einsatzzwecke sind Design-Werkzeuge, Grafik- und Textverarbeitungsanwendungen im Browser. Dort sollen Nutzer eine Schriftfamilie (family) auswählen und danach einen konkreten Schnitt (style). Mit style kann man die Schnitte einer Familie gruppieren, sortieren und in einer Auswahlliste anzeigen.

Beachte: style ist ein freier Text aus der Schriftdatei und kein CSS-Wert. Er entspricht nicht der CSS-Eigenschaft font-style (normal/italic/oblique). Die Bezeichnungen hängen vom Hersteller ab („Bold“, „Fett“, „Heavy“, „Black“ …) und können lokalisiert sein. Wenn du eine Schrift gezielt per CSS ansprechen willst, nimm besser postscriptName oder fullName zusammen mit local() in @font-face.

Rückgabewert

Typ
string
Beschreibung
Der Stilname des Schriftschnitts, z. B. "Regular", "Bold" oder "Italic". Die Eigenschaft ist schreibgeschützt.

Beispiele

Stile aller lokalen Schriften ausgeben

// Muss durch eine Nutzeraktion ausgelöst werden (z. B. Klick)
document.querySelector('#fonts-laden').addEventListener('click', async () => {
  try {
    const fonts = await window.queryLocalFonts();
    for (const font of fonts.slice(0, 5)) {
      console.log(`${font.family} – ${font.style}`);
    }
  } catch (err) {
    console.error('Zugriff verweigert oder nicht unterstützt:', err.name);
  }
});
Arial – Regular Arial – Bold Arial – Italic Arial – Bold Italic Courier New – Regular

Schnitte nach Familie gruppieren (z. B. für ein Auswahlmenü)

const gruppiereNachFamilie = async () => {
  const fonts = await window.queryLocalFonts();
  const familien = new Map();
  for (const { family, style } of fonts) {
    if (!familien.has(family)) familien.set(family, []);
    familien.get(family).push(style);
  }
  return familien;
};

button.addEventListener('click', async () => {
  const familien = await gruppiereNachFamilie();
  console.log(familien.get('Georgia'));
});
["Regular", "Bold", "Italic", "Bold Italic"]

Nur bestimmte Schnitte filtern und per @font-face nutzen

button.addEventListener('click', async () => {
  const fonts = await window.queryLocalFonts();
  // style ist Freitext – daher tolerant vergleichen
  const fett = fonts.filter((f) => /bold|fett/i.test(f.style));
  const erste = fett[0];
  if (!erste) return;

  const face = new FontFace('MeineFett', `local("${erste.postscriptName}")`);
  await face.load();
  document.fonts.add(face);
  document.body.style.fontFamily = 'MeineFett, sans-serif';
  console.log(`Verwende ${erste.fullName} (Stil: ${erste.style})`);
});
Verwende Arial Bold (Stil: Bold)

// Wichtig · Fallstricke

  • Experimentell und eingeschränkt verfügbar: Die Local Font Access API gibt es nur in Chromium-Browsern (Chrome, Edge, Opera ab Version 103) auf dem Desktop. Firefox und Safari unterstützen sie nicht. Prüfe die Unterstützung vorher mit 'queryLocalFonts' in window.
  • Berechtigung und Kontext: queryLocalFonts() funktioniert nur in einem sicheren Kontext (HTTPS), braucht eine Nutzeraktion (transiente Aktivierung) und die Berechtigung local-fonts. Die Permissions-Policy local-fonts kann den Zugriff in iframes sperren. Lehnt der Nutzer ab, wird ein SecurityError bzw. NotAllowedError ausgelöst.
  • Kein CSS-Wert: style ist kein gültiger Wert für die CSS-Eigenschaft font-style. Übernimm ihn nicht direkt ins CSS. Leite Gewicht und Kursivschrift nur mit Vorsicht aus dem String ab, weil Hersteller unterschiedliche und teils lokalisierte Namen verwenden.
  • Datenschutz: Die Liste der installierten Schriften eignet sich zum Fingerprinting. Frage sie deshalb nur ab, wenn du sie wirklich brauchst.