2011-05-05 25 views
7

Come risolvere il problema con i caratteri personalizzati in Java?Caratteri personalizzati in Java

Ad esempio, la mia app utilizza font, che non è su tutti i computer. Posso in qualche modo includerlo nell'eseguibile compilato e quindi chiamarlo da lì, se non esiste sul computer client?

Quali sono altre alternative? Potrei fare tutti i caratteri char come immagini (prima, in qualche app di grafica) e quindi visualizzare l'immagine per ogni carattere ... ok?

risposta

18

Ecco un metodo di utilità che sto usando per caricare un file di font da un file .ttf (può essere in bundle):

private static final Font SERIF_FONT = new Font("serif", Font.PLAIN, 24); 

private static Font getFont(String name) { 
    Font font = null; 
    if (name == null) { 
     return SERIF_FONT; 
    } 

    try { 
     // load from a cache map, if exists 
     if (fonts != null && (font = fonts.get(name)) != null) { 
      return font; 
     } 
     String fName = Params.get().getFontPath() + name; 
     File fontFile = new File(fName); 
     font = Font.createFont(Font.TRUETYPE_FONT, fontFile); 
     GraphicsEnvironment ge = GraphicsEnvironment 
       .getLocalGraphicsEnvironment(); 

     ge.registerFont(font); 

     fonts.put(name, font); 
    } catch (Exception ex) { 
     log.info(name + " not loaded. Using serif font."); 
     font = SERIF_FONT; 
    } 
    return font; 
} 
+1

+1 per 'ge.registerFont (carattere);' – Serhiy

6

È possibile includere il carattere con voi applicazione e crearlo "on-the-fly"

InputStream is = this.getResourceAsStream(font_file_name); 
Font font = Font.createFont(Font.TRUETYPE_FONT, is); 
Problemi correlati