¿Cómo puedo usar una fuente personalizada en Java?

Escribí un progtwig en Java que usa una fuente especial que por defecto no existe en ningún sistema operativo.

¿Es posible en Java agregar esta fuente especial al sistema de operación? Por ejemplo, en Windows, para copiar esta fuente en la carpeta especial Fonts.

Si es posible, ¿cómo?

Si incluye un archivo de fuente (otf, ttf, etc.) en su paquete, puede usar la fuente en su aplicación a través del método descrito aquí:

Oracle Java SE 6: java.awt.Font

Hay un tutorial disponible de Oracle que muestra este ejemplo:

try { GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); ge.registerFont(Font.createFont(Font.TRUETYPE_FONT, new File("A.ttf"))); } catch (IOException|FontFormatException e) { //Handle exception } 

Probablemente envolveré esto en algún tipo de cargador de recursos para no volver a cargar el archivo del paquete cada vez que quiera usarlo.

Una respuesta más relacionada con su pregunta original sería instalar la fuente como parte del proceso de instalación de su aplicación. Ese proceso dependerá del método de instalación que elija. Si no es una aplicación de escritorio, deberá consultar los enlaces proporcionados.

¡Así es como lo hice!

 //create the font try { //create the font to use. Specify the size! Font customFont = Font.createFont(Font.TRUETYPE_FONT, new File("Fonts\\custom_font.ttf")).deriveFont(12f); GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); //register the font ge.registerFont(Font.createFont(Font.TRUETYPE_FONT, new File("Fonts\\custom_font.ttf"))); } catch (IOException e) { e.printStackTrace(); } catch(FontFormatException e) { e.printStackTrace(); } //use the font yourSwingComponent.setFont(customFont); 

Desde el tutorial de Java , debe crear una nueva fuente y registrarla en el entorno de gráficos:

 GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); ge.registerFont(Font.createFont(Font.TRUETYPE_FONT, new File("A.ttf"))); 

Una vez hecho este paso, la fuente está disponible en llamadas a getAvailableFontFamilyNames() y se puede usar en constructores de fonts.

Si desea utilizar la fuente para dibujar con graphics2d o similar, esto funciona:

 InputStream stream = ClassLoader.getSystemClassLoader().getResourceAsStream("roboto-bold.ttf") Font font = Font.createFont(Font.TRUETYPE_FONT, stream).deriveFont(48f) 

Puede cargar una fuente desde un Archivo o InputStream . Luego puede alimentarse al método Component.setFont () (o similar) para su uso.