【问题标题】:Does Java work with PCF fonts?Java 是否适用于 PCF 字体?
【发布时间】:2010-09-24 05:41:03
【问题描述】:

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

【问题讨论】:

  • 幽默地说,如果你在 Google 上搜索“Java PCF 字体”,你会得到这个 Stack Overflow 页面!

标签: java linux fonts x11


【解决方案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 及更高版本。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 经过我们所做的所有研究之后,似乎每个版本的 JRE 在字体处理方面都发生了巨大的变化,而现代版本不再支持 PCF 字体。 PCFFont 项目接缝是使用 PCF 字体的唯一方法,但它不能轻易地注入到我们的项目中。
    • 最后我们决定改用合适的 TTf 字体。所以 PCF 字体出来了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-20
    • 2016-08-21
    • 1970-01-01
    • 1970-01-01
    • 2019-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多