Sanjoy: Überprüfen, ob User Schriftart besitzt

Hallo liebe Helfer,

ich entwerfe gerade einen "Font Picker". Gleich zu Beginn meiner Überlegungen dazu:
1. Kann ich irgendwie überprüfen, ob ein User eine bestimmte Schriftart besitzt?
2. Kann Clientseitig (also per Javascript) abgefragt werden, welche Schriftarten der Browser/der User insgesamt "besitzt"?

Vielen Dank und viele Grüße
Sanjoy

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

    Ja, in dem du in das Unterverzeichniss Fonts im windows Verzeichniss nachschaust.

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

    nein.

    Struppi.

  1. 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:)
  2. Hi,

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

    Ja. Nimm einen Teststring und geb den gewünschten, sowie einen Standardfont an. Hat der Client nur den (nachgeordneten) Standardfont, so sind die Maße bekannt. Sind die Maße anders, so hat der User den zu testenden Font.

    [http://anton-kirsanov.com/font_detection/]

    An die Fontliste selbst kommt man mit Java (s. Marc), oder mit ActiveX.

    Gruß, Cybaer

    --
    Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
    1. (grummel)

      http://anton-kirsanov.com/font_detection/

      Gruß, Cybaer

      --
      Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
      1. http://anton-kirsanov.com/font_detection/

        Muss ich da was beachten?
        Mir sagt das Skript bei jeder Schriftart sie wäre nicht installiert.

        Struppi.

        1. Hi,

          Muss ich da was beachten?

          Fontnamen richtig schreiben. ;-)

          Mir sagt das Skript bei jeder Schriftart sie wäre nicht installiert.

          Hmm, bei mir (Moz/Linux) findet er die, die er hat. Frühere Tests auf IE/Win verliefen auch problemlos ...

          Gruß, Cybaer

          --
          Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
          1. Muss ich da was beachten?

            Fontnamen richtig schreiben. ;-)

            'Arial' ist ja so schwer nicht.

            Mir sagt das Skript bei jeder Schriftart sie wäre nicht installiert.

            Hmm, bei mir (Moz/Linux) findet er die, die er hat. Frühere Tests auf IE/Win verliefen auch problemlos ...

            OK, im IE 7 geht's, aber mit FF/WinXP, nicht.
            Ist aber auch eine unsichere Methode.

            Struppi.

            1. Hi,

              Fontnamen richtig schreiben. ;-)
              'Arial' ist ja so schwer nicht.

              :-)

              Hmm, bei mir (Moz/Linux) findet er die, die er hat. Frühere Tests auf IE/Win verliefen auch problemlos ...
              OK, im IE 7 geht's, aber mit FF/WinXP, nicht.

              Jo, stimmt! :-o

              Ist aber auch eine unsichere Methode.

              Besser als nix ... :)

              Gruß, Cybaer

              --
              Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
  3. Hellihello Sanjoy,

    kennst Du sifr? Da gibts auch einige fertige Fonts zum freien Download.

    Gruß,

    frankx