Signatur
Beschreibung
Die Eigenschaft fullName der Schnittstelle FontData gibt den vollständigen, gut lesbaren Namen eines Schriftschnitts zurück. Er setzt sich meist aus Familienname und Stil zusammen, z. B. "Helvetica Neue Light" oder "Arial Bold Italic". Der Wert stammt aus der Name-Tabelle der Schriftdatei (OpenType-Name-ID 4).
FontData-Objekte erhält man über die Local Font Access API, genauer über window.queryLocalFonts(). Damit können Webanwendungen wie Grafik- oder Textprogramme die auf dem Gerät installierten Schriften auflisten und dem Nutzer in einem Schriftmenü anbieten.
fullName eignet sich vor allem als Anzeigename in Auswahllisten. Zum Gruppieren nach Familien sollte man family nutzen, als eindeutigen Schlüssel für CSS oder queryLocalFonts({ postscriptNames }) hingegen postscriptName.
Rückgabewert
"Roboto Medium Italic". Schreibgeschützt.Beispiele
Vollständige Namen aller lokalen Schriften ausgeben
const listFonts = async () => {
try {
// Muss durch eine Nutzergeste ausgelöst werden
const fonts = await window.queryLocalFonts();
fonts.slice(0, 3).forEach((font) => console.log(font.fullName));
} catch (err) {
console.error('Zugriff verweigert oder nicht unterstützt:', err.name);
}
};
document.querySelector('#fonts-btn').addEventListener('click', listFonts);
Schriftauswahl-Menü mit fullName als Anzeigetext
const select = document.querySelector('#font-select');
document.querySelector('#load-fonts').addEventListener('click', async () => {
if (!('queryLocalFonts' in window)) {
select.append(new Option('Local Font Access nicht verfügbar', ''));
return;
}
const fonts = await window.queryLocalFonts();
fonts
.sort((a, b) => a.fullName.localeCompare(b.fullName, 'de'))
.forEach((font) => {
// Anzeige: fullName, Wert: eindeutiger postscriptName
select.append(new Option(font.fullName, font.postscriptName));
});
});
Schnitte einer Familie mit fullName, family und style vergleichen
const showFamily = async (familyName) => {
const fonts = await window.queryLocalFonts();
const rows = fonts
.filter((f) => f.family === familyName)
.map(({ fullName, family, style, postscriptName }) => ({ fullName, family, style, postscriptName }));
console.table(rows);
};
document.querySelector('#show').addEventListener('click', () => showFamily('Arial'));
// Wichtig · Fallstricke
- Experimentell & eingeschränkte Unterstützung: Die Local Font Access API gibt es nur in Chromium-basierten Browsern (ab Version 103), und zwar auf Desktop-Systemen. Firefox und Safari unterstützen sie nicht, deshalb vorher mit
'queryLocalFonts' in windowprüfen. - Berechtigung & sicherer Kontext:
queryLocalFonts()funktioniert nur über HTTPS, braucht eine Nutzergeste (transient activation) und die Berechtigunglocal-fonts. Lehnt der Nutzer ab oder blockiert eine Permissions-Policy den Zugriff, wird einSecurityErrorbzw.NotAllowedErrorausgelöst. - Nicht eindeutig:
fullNamekann lokalisiert sein und sich zwischen Betriebssystemen oder Schriftversionen unterscheiden. Als Schlüssel istpostscriptNamebesser geeignet. - Datenschutz: Die Liste installierter Schriften lässt sich für Fingerprinting missbrauchen. Deshalb ist der Zugriff an eine Berechtigung gebunden.
- Die Eigenschaft ist schreibgeschützt. Eine Zuweisung wird ignoriert (im Strict Mode gibt es einen
TypeError).