2011-05-05 90 views
7

¿Cómo solucionar el problema con las fuentes personalizadas en Java?Fuentes personalizadas en Java

Por ejemplo, mi aplicación utiliza una fuente que no está en todas las computadoras. ¿Puedo de alguna manera incluirlo en el ejecutable compilado y luego llamarlo desde allí, si no existe en la computadora del cliente?

¿Cuáles son las otras alternativas? Podría hacer todos los tipos de caracteres como imágenes (antes, en alguna aplicación de gráficos) y luego mostrar la imagen para cada carácter ... ¿está bien?

Respuesta

18

He aquí un método de utilidad que estoy usando para cargar un archivo de fuente de un archivo .ttf (puede ser incluido):

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 para 'ge.registerFont (font);' – Serhiy

6

Puede incluir la fuente con la aplicación y que crearla "sobre la marcha"

InputStream is = this.getResourceAsStream(font_file_name); 
Font font = Font.createFont(Font.TRUETYPE_FONT, is); 
Cuestiones relacionadas