1

我正在尝试让 IBM jre 在我的 linux 机器上使用默认 X11 安装中的 PCF 字体。特别是 adobe-helvetica 字体。我已经尝试修改 jre/lib 文件夹中的 fontconfig.properties,但无论我做什么 Java 接缝都可以使用其他字体。我想有一些算法如何 java VM 尝试将 java 逻辑字体链接到系统中的实际物理字体,即使在配置中指定的字体无法使用的情况下也是如此。在 Windows 上这很简单,但在 Linux 上,除了 TrueType 字体之外,我无法让它使用任何东西。
有人有在 Linux 上的 IBM jre 上配置字体的经验吗?

4

2 回答 2

1

我整个上午都在学习 Java 字体。有很多限制,其中一些在 Java 1.6 中被删除。我没有任何答案,但这里有一些我掌握的信息可能会有所帮助。

Java 在内部区分系统字体和创建的字体。(Sun 的新闻快讯:最好通过子类化明确这一点!) 系统字体似乎是安装在 JRE 中的字体,可能加上安装在系统上的一些字体。但显然不是您系统上安装的所有字体;我的 Linux 系统上也有 adobe-helvetica,但似乎无法以我能想到的任何名称从 Java 访问它。

同时,您可以使用 Font.createFont() 方法从字体文件创建字体。您必须指定字体文件类型。我发现在 Font 类中指定这些类型的唯一常量是 TRUETYPE_FONT 和 TYPE1_FONT。所以看起来如果 PCF 字体可用,它并没有通过提供一个常量来指定它们来明确。也许别人知道的更多。我确实在网上看到了一些关于在 Java ME 中使用位图字体的信息,因此必须以某种方式使用其他类型的字体。

创建字体后,您可以使用 GraphicsEnvironment.registerFont() 调用将其添加到 JVM 的可用字体概念中,但这仅适用于 Java 1.6 及更高版本。

于 2008-12-17T18:36:33.427 回答
1

PCFFont似乎提供了使用 Java 中的 PCF 字体的能力。不幸的是,我认为它是通过一个不扩展 java.awt.Font 类的自定义 PCFFont 类来实现的,所以我想说它的用处可能是有限的。但是,它可能会为编写可以处理 PCF 字体的自定义 Font 子类提供一些实现细节的指针。找到源代码并不是很明显。该确切类的代码在这里

我想说作者似乎有点困惑,因为他谈到将 TrueType 字体转换为 PCF 以便您可以将它们与他的库一起使用,并且 Java 已经原生支持 TrueType 字体。但他似乎是 Sun 的工程师,所以也许他知道的比我想象的要多;此外,这可能已经过时了(Java 有没有不支持 TrueType 的时候?)。

于 2008-12-17T18:45:52.910 回答