Marc Reichelt: Überprüfen, ob User Schriftart besitzt

Beitrag lesen

Hallo Sanjoy,

  1. Kann ich irgendwie überprüfen, ob ein User eine bestimmte Schriftart besitzt?

Mit JavaScript alleine nicht.

  1. Kann Clientseitig (also per Javascript) abgefragt werden, welche Schriftarten der Browser/der User insgesamt "besitzt"?

Auch hier: Mit JavaScript alleine nicht - aber man kann dafür ein JavaApplet verwenden, und dann mit JavaScript darauf zugreifen (sofern Java auf dem Rechner des Clients installiert ist).
Auf die Idee gekommen bin ich vorhin, als ich auf exampledepot.com nach "fonts" gesuchst habe und auf das Beispiel e651. Listing All Available Font Families gestoßen bin.

In Java nämlich ist das Auslesen der Schriftarten eine Leichtigkeit - man muss nur noch wissen, wie man die so gefundenen Daten an JavaScript überträgt.
Und sieh an: So schwer ist das prinzipiell gar nicht - die Kommunikation zwischen einem Java-Applet und JavaScript funktionert viel besser als bei Flash und JavaScript (siehe SELFHTML: applets).

Ich musste das auch gleich mal ausprobieren, und habe ein einfaches Beispiel erstellt, mit dem man die Schriftarten in JavaScript abfragen kann - du findest es hier (Java 5 oder höher erforderlich).

Das Java-Applet wird hier von folgendem Code erzeugt:

import java.applet.Applet;  
import java.awt.Graphics;  
import java.awt.GraphicsEnvironment;  
import java.util.ArrayList;  
  
public class FontReader extends Applet {  
  
 // alle Schriftarten - public, damit wir mit JavaScript darauf zugreifen können  
 public ArrayList<String> fontNames = null;  
  
 public FontReader() {  
  super();  
  // Schriftarten auslesen  
  fontNames = new ArrayList<String>();  
  String[] tempNames = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();  
  for (String fontName : tempNames) {  
   fontNames.add(fontName);  
  }  
 }  
  
 // damit wir das Applet sehen wird es gekennzeichnet  
 @Override  
 public void paint(Graphics g) {  
  g.drawString("Das Applet", 25, 25);  
 }  
  
}

Getestet habe ich es nun im Konqueror und in Firefox unter Linux, und da geht es (nachdem der Konqueror mehrmals die Begegnung mit dem Zaunpfahl machen musste) ohne Probleme.

Eine elegante Lösung ist das nicht, aber du könntest beispielsweise den Nutzern, bei denen Java aktiviert ist, über einen Button anbieten, ihre eigenen Systemschriftarten laden zu lassen - das wäre dann auch elegant. :)

Grüße

Marc Reichelt || http://www.marcreichelt.de/

--
Linux is like a wigwam - no windows, no gates and an Apache inside!
Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)