Window: queryLocalFonts() Methode
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Die window.queryLocalFonts()
Methode gibt ein Promise
zurück, das mit einem Array von FontData
-Objekten erfüllt wird, die die lokal verfügbaren Schriftarten darstellen.
Um diese Methode zu verwenden, muss der Benutzer die Berechtigung local-fonts
erteilen (der Berechtigungsstatus kann über die Permissions API abgefragt werden). Zusätzlich kann dieses Feature durch eine auf Ihrem Server festgelegte Permissions Policy blockiert werden.
Syntax
queryLocalFonts(options)
Parameter
options
Optional-
Enthält optionale Konfigurationsparameter. Derzeit ist nur eine Eigenschaft definiert:
postscriptNames
Optional-
Ein Array von Schrift-PostScript-Namen. Wenn dies angegeben ist, werden nur Schriften mit PostScript-Namen, die in dem Array übereinstimmen, in die Ergebnisse aufgenommen; andernfalls werden alle Schriften in die Ergebnisse aufgenommen.
Rückgabewert
Ausnahmen
NotAllowedError
DOMException
-
Der Benutzer hat die Erlaubnis zur Nutzung dieser Funktion in der Berechtigungsaufforderung des Browsers nach dem ersten Aufruf der Methode verweigert.
SecurityError
DOMException
-
Die Nutzung dieser Funktion wurde durch eine Permissions Policy blockiert, oder sie wurde nicht durch eine Benutzerinteraktion wie einen Tastendruck aufgerufen, oder der aktuelle origin ist ein undurchsichtiger Ursprung.
Beispiele
Für eine funktionierende Live-Demo siehe Font Select Demo.
Schriften aufzählen
Das folgende Snippet fragt nach allen verfügbaren Schriften und protokolliert Metadaten. Dies könnte beispielsweise verwendet werden, um ein Schriftartenauswahl-Steuerelement zu füllen.
async function logFontData() {
try {
const availableFonts = await window.queryLocalFonts();
for (const fontData of availableFonts) {
console.log(fontData.postscriptName);
console.log(fontData.fullName);
console.log(fontData.family);
console.log(fontData.style);
}
} catch (err) {
console.error(err.name, err.message);
}
}
Begrenzung der zurückgegebenen Ergebnisse
Um die zurückgegebenen Schriftdaten auf nur eine bestimmte Liste von Schriftarten zu beschränken, verwenden Sie die Option postscriptNames
.
async function returnSpecificFonts() {
const availableFonts = await window.queryLocalFonts({
postscriptNames: ["Verdana", "Verdana-Bold", "Verdana-Italic"],
});
return availableFonts;
}
Zugriff auf niedrigstufige Daten
Die blob()
-Methode bietet Zugriff auf niedrigstufige SFNT-Daten — dies ist ein Schriftdateiformat, das andere Schriftformate wie PostScript, TrueType, OpenType oder Web Open Font Format (WOFF) enthalten kann.
async function computeOutlineFormat() {
try {
const availableFonts = await window.queryLocalFonts({
postscriptNames: ["ComicSansMS"],
});
for (const fontData of availableFonts) {
// `blob()` returns a Blob containing valid and complete
// SFNT-wrapped font data.
const sfnt = await fontData.blob();
// Slice out only the bytes we need: the first 4 bytes are the SFNT
// version info.
// Spec: https://learn.microsoft.com/en-us/typography/opentype/spec/otff#organization-of-an-opentype-font
const sfntVersion = await sfnt.slice(0, 4).text();
let outlineFormat = "UNKNOWN";
switch (sfntVersion) {
case "\x00\x01\x00\x00":
case "true":
case "typ1":
outlineFormat = "truetype";
break;
case "OTTO":
outlineFormat = "cff";
break;
}
console.log("Outline format:", outlineFormat);
}
} catch (err) {
console.error(err.name, err.message);
}
}
Spezifikationen
Specification |
---|
Local Font Access API # dom-window-querylocalfonts |