IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

[JAR][POLICE] Utiliser une police ttf dans un fichier jar


Sujet :

Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 36
    Points : 28
    Points
    28
    Par défaut [JAR][POLICE] Utiliser une police ttf dans un fichier jar
    Voilà mon problème : j'ai un fichier jar, contenant à la racine les images et le fichier indigojo.ttf
    Dans ma classe principale, j'appelle la création de la nouvelle police comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
        public static void loadFonts()
        {
            try {
                policeEcriture25 = new Font(Font.createFont(Font.TRUETYPE_FONT,new FileInputStream(new File("indigojo.ttf"))).getFamily(),Font.BOLD,25);   
                policeEcriture35 = new Font(Font.createFont(Font.TRUETYPE_FONT,new FileInputStream(new File("indigojo.ttf"))).getFamily(),Font.BOLD,35);   
                policeEcriture50 = new Font(Font.createFont(Font.TRUETYPE_FONT,new FileInputStream(new File("indigojo.ttf"))).getFamily(),Font.BOLD,50);   
                policeEcriture75 = new Font(Font.createFont(Font.TRUETYPE_FONT,new FileInputStream(new File("indigojo.ttf"))).getFamily(),Font.BOLD,75);   
            }
            catch(Exception e){
                policeEcriture25 = new Font ("Serif", Font.BOLD, 25);
                policeEcriture35 = new Font ("Serif", Font.BOLD, 35);
                policeEcriture50 = new Font ("Serif", Font.BOLD, 50);
                policeEcriture75 = new Font ("Serif", Font.BOLD, 75);
            }
        }
    code appelé par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        public static void main(String args[])
        {
    	//chargement des Fonts
            loadFonts();
    Si quelqu'un avait une idée du pourquoi ça ne marche que quand la font est copiée dans le répertoire FONT de windows...
    Merci beaucoup d'avance !

  2. #2
    Membre actif
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2002
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mars 2002
    Messages : 192
    Points : 252
    Points
    252
    Par défaut
    Ton problème vient de la façon dont tu cherches à charger l'InputStream.
    Utilise un classloader qui a chargé une classe de ton jar.
    Ex :
    ds mon jar j'ai :
    - LoadFonts.java
    - SF Burlington Script.ttf

    et voici le code pour charger la font :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class LoadFonts {
        public Font loadFont() {
            try {
                return new Font(Font.createFont(Font.TRUETYPE_FONT, getClass().getResourceAsStream("SF Burlington Script.ttf")).getFamily(), Font.BOLD,25);   
            }
            catch(Exception e){
                return new Font ("Serif", Font.BOLD, 25);
            }
        }
        public static void main(String[] args) {
            Font f = new LoadFonts().loadFont();
            System.out.println(f.toString());
        }
    }
    en résultat on charge bien la font voulue :
    java.awt.Font[family=SF Burlington Script,name=SF Burlington Script,style=bold,size=25]
    Quelques tips Java & autres : mon blog

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 36
    Points : 28
    Points
    28
    Par défaut
    J'ai effectué ta manip' :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    policeEcriture25 = new Font(Font.createFont(Font.TRUETYPE_FONT,getClass().getClassLoader().getResourceAsStream("./indigojo.ttf")).getFamily(),Font.BOLD,25);
    Je m'assure que le chargement s'effectue correctement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(getClass().getClassLoader().getResourceAsStream("./indigojo.ttf"));
    me renvoit
    java.io.BufferedInputStream@f99ff5
    Pour parachever le tout je fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(policeEcriture25);
    et là...
    java.awt.Font[family=Dialog,name=Indigo Joker,style=bold,size=25]
    Seulement...
    La police affichée par mon appli via
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    g.setFont(policeEcriture25);
    g.drawString("Level", 20, 70);
    n'est pas du tout la bonne...
    Une idée ?

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 36
    Points : 28
    Points
    28
    Par défaut
    J'ai trouvé pour que ça marche. Il fallait mettre :
    policeEcriture25 = Font.createFont(0, getClass().getResourceAsStream("/indigojo.ttf")).deriveFont(Font.BOLD,25F);
    Merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utiliser une police spéciale dans mon programme
    Par Coussati dans le forum Débuter
    Réponses: 10
    Dernier message: 25/11/2011, 19h54
  2. [Free Pascal] Créer et utiliser une police
    Par xavier faure dans le forum Free Pascal
    Réponses: 4
    Dernier message: 06/05/2007, 20h55
  3. Réponses: 10
    Dernier message: 08/02/2007, 13h18
  4. [FOP][Java] comment utiliser une police
    Par elzedo dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 01/12/2006, 18h40
  5. Réponses: 1
    Dernier message: 06/10/2006, 10h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo