Start · Sprachen · JavaScript · Referenz · FontData.postscriptName

FontData.postscriptName

Eigenschaft

Schreibgeschützte Eigenschaft, die den PostScript-Namen einer lokal installierten Schrift als <code>string</code> liefert, z. B. <code>"Arial-BoldMT"</code>.

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

Signatur

FontData.postscriptName

Beschreibung

Die Eigenschaft postscriptName eines FontData-Objekts gibt den PostScript-Namen der Schrift zurück. An FontData-Objekte kommt man über die Local Font Access API, genauer über window.queryLocalFonts(). Der PostScript-Name steht in der name-Tabelle der Schriftdatei (Name-ID 6). Er bezeichnet einen einzelnen Schnitt eindeutig, etwa "Helvetica-BoldOblique" oder "Roboto-Regular".

Anders als family (z. B. "Roboto") oder fullName (z. B. "Roboto Regular") enthält der PostScript-Name keine Leerzeichen. Er ist deshalb ein guter Schlüssel, um Schriften eindeutig zu erkennen, zu speichern oder gezielt abzufragen. Diesen Namen erwartet auch die Option postscriptNames von queryLocalFonts(), mit der man die Ergebnisliste auf bestimmte Schriften einschränkt.

Typische Einsatzzwecke sind Grafik- und Design-Anwendungen im Browser: Schriftauswahl-Menüs, der Austausch von Dokumenten zwischen Desktop- und Web-Programmen (PDF, SVG und PostScript verweisen auf Schriften über diesen Namen) und das Zuordnen gespeicherter Projekteinstellungen zu lokal installierten Schriften.

Rückgabewert

Typ
string
Beschreibung
Der PostScript-Name des Schriftschnitts, z. B. "Arial-BoldMT". Die Eigenschaft ist schreibgeschützt.

Beispiele

PostScript-Namen aller lokalen Schriften auflisten

// Muss durch eine Nutzeraktion ausgelöst werden (z. B. Klick)
document.querySelector('#fonts-laden').addEventListener('click', async () => {
  if (!('queryLocalFonts' in window)) {
    console.warn('Local Font Access API wird nicht unterstützt.');
    return;
  }
  try {
    const fonts = await window.queryLocalFonts();
    for (const font of fonts.slice(0, 3)) {
      console.log(font.postscriptName);
    }
  } catch (err) {
    console.error(`Zugriff verweigert: ${err.name}`);
  }
});
AcademyEngravedLetPlain AmericanTypewriter AmericanTypewriter-Bold

Gezielt nach PostScript-Namen filtern

const ladeGespeicherteSchriften = async () => {
  // Namen, z. B. aus einem gespeicherten Projekt
  const gewuenscht = ['Arial-BoldMT', 'Helvetica-Oblique'];
  const fonts = await window.queryLocalFonts({ postscriptNames: gewuenscht });

  const gefunden = new Set(fonts.map((f) => f.postscriptName));
  const fehlend = gewuenscht.filter((name) => !gefunden.has(name));

  console.log('Verfügbar:', [...gefunden]);
  console.log('Fehlend:', fehlend);
};

document.querySelector('#projekt-oeffnen').addEventListener('click', ladeGespeicherteSchriften);
Verfügbar: ["Arial-BoldMT"] Fehlend: ["Helvetica-Oblique"]

Schriftauswahl mit PostScript-Namen als eindeutigem Wert

const select = document.querySelector('#schriftwahl');

document.querySelector('#fonts-laden').addEventListener('click', async () => {
  const fonts = await window.queryLocalFonts();
  // Map: PostScript-Name → FontData (eindeutiger Schlüssel)
  const fontMap = new Map(fonts.map((f) => [f.postscriptName, f]));

  for (const [psName, font] of fontMap) {
    select.append(new Option(font.fullName, psName));
  }

  select.addEventListener('change', () => {
    const font = fontMap.get(select.value);
    console.log(`${font.postscriptName} gehört zur Familie ${font.family} (${font.style})`);
  });
});
Roboto-BoldItalic gehört zur Familie Roboto (Bold Italic)

// Wichtig · Fallstricke

  • Experimentell und nur in Chromium: Die Local Font Access API gibt es in Chrome, Edge und Opera ab Version 103. Firefox und Safari unterstützen sie nicht. Vor der Nutzung sollte man mit 'queryLocalFonts' in window prüfen, ob sie verfügbar ist.
  • Nur mit Berechtigung und im sicheren Kontext: queryLocalFonts() funktioniert nur über HTTPS und nur als Reaktion auf eine Nutzeraktion (transient activation). Außerdem muss der Nutzer die Berechtigung local-fonts erteilen. Andernfalls wird die Abfrage mit SecurityError bzw. NotAllowedError abgelehnt. Die Permissions Policy local-fonts kann den Zugriff zusätzlich blockieren, z. B. in iframes.
  • Datenschutz: Die Liste der installierten Schriften eignet sich für Fingerprinting. Man sollte deshalb nur so viele Schriften abfragen wie nötig und die Namen nicht ohne Grund an Server schicken.
  • Eindeutigkeit nicht garantiert: In der Regel ist der PostScript-Name eindeutig. Fehlerhafte oder doppelt installierte Schriften (z. B. verschiedene Versionen derselben Schrift) können aber denselben Namen haben. Groß- und Kleinschreibung zählt beim Vergleich.
  • Die Eigenschaft ist schreibgeschützt. Eine Zuweisung wird ignoriert und löst im Strict Mode einen TypeError aus.