Start · Sprachen · JavaScript · Referenz · FontData.family

FontData.family

Eigenschaft

Die schreibgeschützte Eigenschaft <code>family</code> eines <code>FontData</code>-Objekts gibt den Namen der Schriftfamilie zurück, z. B. <code>"Arial"</code>.

seit JavaScript Experimentell: Chromium 103+ (Chrome, Edge, Opera) Kategorie: webapi

Signatur

FontData.family

Beschreibung

Die Eigenschaft family gehört zur Local Font Access API. Jedes FontData-Objekt, das window.queryLocalFonts() liefert, steht für ein einzelnes lokal installiertes Schriftbild (z. B. „Arial Bold Italic“). family enthält dabei den Namen der Familie, zu der dieses Schriftbild gehört, zum Beispiel "Arial".

Damit lassen sich die oft sehr vielen Einzelschnitte nach Familie gruppieren, etwa für eine Schriftauswahl in Grafik- oder Design-Anwendungen. Die übrigen Eigenschaften ergänzen das: fullName enthält den vollständigen Namen, style den Schnitt (z. B. "Bold Italic") und postscriptName einen eindeutigen PostScript-Bezeichner.

Der Wert eignet sich direkt für CSS: Du kannst ihn in font-family verwenden oder mit local() in einer FontFace-Quelle angeben. Weil Familiennamen Leerzeichen enthalten können, solltest du sie in CSS in Anführungszeichen setzen.

Rückgabewert

Typ
string
Beschreibung
Der Name der Schriftfamilie des Schriftbilds, z. B. "Arial" oder "Segoe UI". Die Eigenschaft ist schreibgeschützt.

Beispiele

Familiennamen 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) {
      console.log(`${font.family} – ${font.style}`);
    }
  } catch (err) {
    console.error('Zugriff verweigert oder nicht unterstützt:', err.name);
  }
});
Arial – Regular Arial – Bold Arial – Italic ...

Schriftbilder nach Familie gruppieren (Schriftauswahl)

const gruppiereNachFamilie = async () => {
  const fonts = await window.queryLocalFonts();
  const familien = Map.groupBy(fonts, (font) => font.family);

  const select = document.querySelector('#familie');
  for (const [family, schnitte] of familien) {
    const option = new Option(`${family} (${schnitte.length} Schnitte)`, family);
    select.append(option);
  }
  return familien;
};

document.querySelector('#laden').addEventListener('click', gruppiereNachFamilie);

Gewählte Familie per CSS anwenden

document.querySelector('#nur-arial').addEventListener('click', async () => {
  // Optional nur bestimmte Schriften per PostScript-Namen anfragen
  const [font] = await window.queryLocalFonts({ postscriptNames: ['Arial-BoldMT'] });
  if (!font) return console.log('Schrift nicht installiert');

  // Familiennamen in Anführungszeichen setzen (Leerzeichen!)
  document.querySelector('#vorschau').style.fontFamily = `"${font.family}", sans-serif`;
  console.log(font.family, '/', font.fullName);
});
Arial / Arial Bold

// Wichtig · Fallstricke

  • Experimentell und eingeschränkt verfügbar: nur in Chromium-Browsern (ab Version 103) und nur in sicheren Kontexten (HTTPS). Prüfe vorher mit 'queryLocalFonts' in window, ob die API vorhanden ist.
  • Berechtigung und Nutzeraktion: queryLocalFonts() braucht die Berechtigung local-fonts und eine Nutzeraktion. Lehnt der Nutzer ab, wird ein SecurityError geworfen. In iframes muss zusätzlich die Permissions-Policy local-fonts erlaubt sein.
  • Datenschutz: Die Liste installierter Schriften kann zum Fingerprinting dienen. Frage sie deshalb nur an, wenn du sie wirklich brauchst.
  • Eine Familie kommt meist mehrfach vor, nämlich einmal pro Schnitt. Für eindeutige Familiennamen hilft new Set(fonts.map(f => f.family)).
  • Die Namen stammen aus den Schriftdateien selbst. Schreibweise und Lokalisierung können sich daher je nach Betriebssystem unterscheiden.