Signatur
Beschreibung
Die Eigenschaft size gehört zum Interface FontFaceSet aus der CSS Font Loading API. Sie ist schreibgeschützt und liefert die Anzahl der FontFace-Objekte, die das Set gerade enthält. Meistens greifen Sie darüber zu: document.fonts.size. In Web Workern heißt der Zugriff self.fonts.size.
Gezählt werden alle Schriftschnitte im Set, egal ob sie schon geladen sind. Dazu gehören Schriften, die Sie per document.fonts.add() hinzugefügt haben, und Schriften aus @font-face-Regeln in eingebundenen Stylesheets. Jeder Schnitt zählt einzeln. Eine Schriftfamilie mit den Stärken 400 und 700 ergibt also den Wert 2.
FontFaceSet verhält sich wie ein Set. size entspricht daher Set.prototype.size. Die Eigenschaft ist nützlich, um Fehler bei der Schrifteinbindung zu finden, um zu prüfen, ob dynamisch hinzugefügte Schriften angekommen sind, oder um Schriften für Oberflächen zu zählen. Wie viele Schriften schon geladen sind, erfahren Sie nur über den Zustand der einzelnen Einträge (FontFace.status).
Rückgabewert
FontFace-Objekte im Set.Beispiele
Anzahl registrierter Schriften abfragen
// Zählt alle Schriftschnitte im Dokument (aus @font-face und per JavaScript hinzugefügte)
console.log(`Registrierte Schriftschnitte: ${document.fonts.size}`);
Größe vor und nach add()/delete() vergleichen
const inter = new FontFace(
'Inter',
'url(/fonts/inter-var.woff2) format("woff2")',
{ weight: '100 900' }
);
const vorher = document.fonts.size;
document.fonts.add(inter);
console.log(document.fonts.size - vorher); // 1
document.fonts.delete(inter);
console.log(document.fonts.size === vorher); // true
Geladene und ausstehende Schriften zählen
const fontStatistik = async () => {
await document.fonts.ready;
const alle = [...document.fonts];
const geladen = alle.filter((f) => f.status === 'loaded').length;
console.log(`${geladen} von ${document.fonts.size} Schnitten geladen`);
};
fontStatistik();
Schriften in einem Web Worker zählen
// worker.js
const font = new FontFace('Roboto', 'url(/fonts/roboto.woff2)');
self.fonts.add(font);
await font.load();
self.postMessage({ anzahl: self.fonts.size });
// Wichtig · Fallstricke
- Geladen und registriert sind zwei verschiedene Dinge:
sizezählt auch Schriften mit dem Statusunloadedodererror. Aussize > 0folgt also nicht, dass eine Schrift nutzbar ist. Prüfen Sie dafürFontFace.status,document.fonts.check()oderdocument.fonts.ready. - Unterschiede zwischen Browsern: Die Browser zählen Schriften aus CSS (
@font-face) nicht zu jedem Zeitpunkt gleich. Das betrifft vor allem Stylesheets, die noch nicht geparst sind, und Stylesheets von anderen Ursprüngen. Direkt nach dem Seitenstart kann der Wert deshalb schwanken. Warten Sie aufdocument.fonts.readyoderDOMContentLoaded. - Jeder Schriftschnitt ist ein eigener Eintrag. Eine Familie mit mehreren Stärken oder Stilen zählt also mehrfach.
- Die Eigenschaft ist schreibgeschützt. Eine Zuweisung wie
document.fonts.size = 0ignoriert der Browser stillschweigend; im Strict Mode löst sie einenTypeErroraus. Zum Leeren dientclear(). Diese Methode entfernt aber nur Schriften, die per JavaScript hinzugefügt wurden, keine aus CSS. - Kompatibilität: Chrome, Edge, Firefox und Safari unterstützen die Eigenschaft in aktuellen Versionen.
self.fontsin Workern gibt es erst in neueren Browserversionen.