Signatur
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
"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}`);
}
});
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);
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})`);
});
});
// 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 windowprü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 Berechtigunglocal-fontserteilen. Andernfalls wird die Abfrage mitSecurityErrorbzw.NotAllowedErrorabgelehnt. Die Permissions Policylocal-fontskann 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
TypeErroraus.