0

我有一个带有 JLabel、JTextField 和其他 Java Swing 组件的小程序。另一方面,我有 .ttf 文件的 unicode 字体“AR”、“AR-ExtB”(扩展 B 区域)和“AR-Plus”(补充私人使用区域-A)。我希望小程序在每个 GUI 组件上使用三个 .ttf 文件,具体取决于用户输入的代码点。

1) 我知道这些组件无法使用多种字体。因此,将字体设置为组件的显式方法不是一种选择。

2)好吧,有一种方法可以通过修改 $JAVA_HOME/lib 目录中的 fontconfig.properties 文件来完成此操作,例如,“Dialog”(逻辑)字体已将三个 .ttf 文件映射为一种逻辑字体,但问题是所有其他 java 应用程序也会有这些字体,这不是想要的场景。

3) “Fallback fonts”,当没有其他字体可以在屏幕上显示字形时使用。这也不是一个解决方案,因为它只会显示 JAVA 默认字体未覆盖的字符。

问题是:

有谁知道如何在每个 GUI Swing 组件中使用这些 .ttf 文件作为字体,但仅限于 Applet 中,而不是全局用于在 JVM 上运行的所有应用程序?

4

1 回答 1

0

要将 TTF 文件用作字体,您需要加载它并创建一个像这样设置的字体对象。

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

在此之后,可以使用字体对象。

使用逻辑字体检查Oracle 文档

——苏曼

于 2016-07-21T13:11:54.473 回答