【问题标题】:Loading font from TTF file works on Mac but not on Linux从 TTF 文件加载字体适用于 Mac 但不适用于 Linux
【发布时间】:2012-11-13 10:49:34
【问题描述】:

我有一个生成图像的 servlet。我想从 TTF 文件加载它使用的字体,以便 servlet 不依赖于该特定服务器上可用的字体。

我使用 java.awt.Font.createFont() 加载字体。当我在 Mac OS X 上的本地 Glassfish 上测试它时,它工作正常,但是当我在 Linux 服务器上的 Glassfish 上尝试它时,我得到以下异常:

java.awt.FontFormatException: bad table, tag=1279872591
    at sun.font.TrueTypeFont.init(TrueTypeFont.java:
    at sun.font.TrueTypeFont.<init>(TrueTypeFont.java:162)
    at sun.font.FontManager.createFont2D(FontManager.java:2264)

我的印象是 TTF 文件的解析完全是在 Java 中完成的,因此不是特定于平台的。这个假设是错误的吗?还是有其他原因导致失败?

【问题讨论】:

标签: java truetype


【解决方案1】:

在 Linux 上,在控制台中启动 JVM 并使用它来访问 awt 或 swing 组件有时会导致问题,因为不包括 X11 支持。您应该尝试使用headless mode 来启动服务器。

【讨论】:

  • 谢谢,但不幸的是,Glassfish 中的 java.awt.headless 系统属性已设置为 true :(
【解决方案2】:

我意识到这是一个老问题,但我遇到了这个问题并最终通过使用旧版本中的相同文件覆盖服务器上的 ttf 来解决它。我想他们一定是在转移或其他什么过程中被损坏了。

如果有其他人经过这里,可能值得一试。

【讨论】:

    猜你喜欢
    • 2016-09-16
    • 1970-01-01
    • 2018-04-08
    • 2018-12-07
    • 1970-01-01
    • 2011-03-09
    • 1970-01-01
    • 1970-01-01
    • 2012-02-08
    相关资源
    最近更新 更多