Gibt es in Javascript eine Möglichkeit, die Namen aller Schriftarten (oder Schriftfamilien) abzurufen, die der Browser anzeigen kann? (Ich möchte dem Benutzer ein Dropdown-Menü mit einer Liste aller verfügbaren Schriftarten geben und dem Benutzer die Auswahl einer Schriftart ermöglichen.) Ich würde es vorziehen, diese Liste nicht vorab fest zu codieren oder vom Server herunterzusenden. (Intuitiv scheint es so, als ob der Browser wissen sollte, welche Schriftarten er hat, und dies sollte irgendwie Javascript ausgesetzt sein.)
quelle
Ja da ist! Ich bin so froh, dass Sie diese Frage gestellt haben, weil ich sie jetzt auch verwenden möchte.
+1 für Frage, und hier ist deine Antwort :)
http://www.lalit.org/lab/javascript-css-font-detect
Code von http://www.lalit.org/wordpress/wp-content/uploads/2008/05/fontdetect.js?ver=0.3
Zusammenfassung
quelle
Es gibt eine Möglichkeit, dies mit zu tun
document.fonts
Der zurückgegebene Wert ist die FontFaceSet-Schnittstelle des Dokuments. Die FontFaceSet-Oberfläche ist nützlich zum Laden neuer Schriftarten, zum Überprüfen des Status zuvor geladener Schriftarten usw.
Ich habe es getestet, ohne irgendwelche Schriftarten im HTML zu verknüpfen, dann die Roboto-Schrift verknüpft, erneut getestet und es wurde zum Ergebnis hinzugefügt.
quelle
quelle
Bei meiner Suche danach habe ich auch Font.js gefunden , das ein Font-Objekt ähnlich wie Image hinzufügt, sodass überprüft werden kann, wann eine Schriftart tatsächlich einsatzbereit ist. Funktioniert auch mit installierten / System-Schriftarten. Nachteil ist IE9 + nur aufgrund der Notwendigkeit
Object.defineProperty
(andere Browser haben es), aber wenn Sie modernes Web tun, scheint dies eine noch bessere Option zu sein. (Ich werde leider mit der obigen Antwort weitermachen müssen, positiv bewertet und vorerst weitermachen. :))quelle
Ich habe oben zwei Methoden zu Lalit Patels Detektor hinzugefügt:
Damit können Sie tun:
Code:
quelle
FontFaceSet.check () Lösung
Windows 10-Schriftartenliste
MacOS / iOS-Schriftartenliste
FontFaceSet.check ()
quelle
Möglicherweise könnte dies auf eine ganz andere Art und Weise geschehen, indem ein Spritesheet mit bekannten Schriftbildern für ein bestimmtes Zeichen verwendet und dieses mit Schnappschüssen eines Canvas-Elements verglichen wird, auf dem dasselbe Zeichen gezeichnet wird, mit dem, was der Browser als dieselbe Schriftart meldet. Der Vergleich kann mit so etwas wie resemble.js durchgeführt werden .
Dies ist langsamer, sollte es uns aber auch ermöglichen, zu erkennen, wann der Browser lügt.
quelle
Die kurze Antwort lautet. An der Erkennung von Schriftarten in Browsern im Jahr 2020 hat sich nicht viel geändert, außer dass die Verwendung von Flash jetzt eine noch schlechtere Idee ist .
Derzeit gibt es kein natives Browser-System, um alle verfügbaren Schriftarten aufzulisten. Mit Browsern können Sie jedoch mithilfe der FontFaceSet-API überprüfen, ob eine Schriftart geladen / bereit ist . Es wird in modernen Browsern ziemlich gut unterstützt.
Dies soll zeigen, ob eine Webschrift vollständig heruntergeladen wurde, aber auch für Systemschriftarten funktioniert. Der Haken ist, dass Sie eine Liste der zu überprüfenden Schriftarten bereitstellen müssen .
In Verbindung mit einem
user agent
Test (nicht immer genau) können Sie eine Liste gängiger Systemschriftarten erstellen für jeden Gerätetyp . Testen Sie dann diese und alle von Ihnen geladenen Web-Schriftarten.HINWEIS: Dadurch erhalten Sie KEINE vollständige Liste der verfügbaren Schriftarten. Sie können jedoch nach Schriftarten suchen, die üblicherweise von MS Office- oder Adobe-Produkten installiert werden.
quelle
Ich habe kürzlich festgestellt, dass die Änderung von der Zeichenfläche ignoriert wird, wenn ich den Wert context.font für eine HTML5-Zeichenfläche auf etwas Ungültiges wie "Junk" setze. Ich weiß nicht, ob dies browserspezifisch ist, aber es scheint auf Chrome so zu funktionieren. Ich habe auch andere Beiträge gesehen ( HTML 5-Canvas-Schrift wird ignoriert ), die darauf hinweisen, dass dies in anderen Browsern geschieht.
Man könnte dann eine Zeichenfolge mit dem Standardwert "10px sans serif" ( https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/font ) ausschreiben und die Schriftart festlegen zu einem testen Sie und schreiben den String erneut. Wenn es mit der ersten Zeichnung identisch ist, ist die Schriftart nicht verfügbar.
quelle