我有一个带有JLabel、JTextField和其他Java组件的applet。另一方面,我有unicode字体"AR“、"AR-ExtB”(扩展B区)和"AR-Plus“(私用补充区-A),这些都是.ttf文件。我希望applet在每个GUI组件上使用三个.ttf文件,这取决于用户输入的代码点。
1)我知道这些组件无法使用多种字体。因此,将字体设置为组件的显式方法不是一个选项。
2)有一种方法可以通过修改$ java _HOME/lib目录中的fontconfig.properties文件来实现这一点,例如,"Dialog“(逻辑)字体将三个.ttf文件映射为一个逻辑字体,但问题是所有其他.ttf应用程序也都有这些字体,这不是需要的场景。
3)“后备字体”,当屏幕上没有其他字体可以显示字形时使用。这也不是一个解决方案,因为它将只显示JAVA默认字体未涵盖的字符。
问题是:
有谁知道如何在每个 Swing组件中使用这些.ttf文件作为字体,但只在Applet中使用,而不是对在JVM ?上运行的所有应用程序进行全局操作。
发布于 2016-07-21 05:11:54
要像使用字体一样使用TTF文件,需要加载TTF文件并创建这样设置的Font对象。
try {
GraphicsEnvironment ge =
GraphicsEnvironment.getLocalGraphicsEnvironment();
ge.registerFont(Font.createFont(Font.TRUETYPE_FONT, new File("A.ttf")));
} catch (IOException|FontFormatException e) {
//Handle exception
}
在此之后,可以使用字体对象。
使用逻辑字体检查Oracle文档
-苏曼
https://stackoverflow.com/questions/16775944
复制