Java 6 下字体显示不正确

Posted

技术标签:

【中文标题】Java 6 下字体显示不正确【英文标题】:Fonts displaying incorrectly under Java 6 【发布时间】:2013-01-01 07:57:46 【问题描述】:

我正在使用 IcePDF 库在 Web 应用程序中显示 PDF。 Java 6(jdk1.6.0_37 32bits)下,字体显示不正确(替换为一些默认字体)

在 Java 7 下看起来还可以。

我需要在我的应用程序中使用 Java 6,您知道导致这种行为的原因是什么吗?

【问题讨论】:

生成这两个 PDF 的 IcePDF 代码是否在同一台计算机上运行(安装了 Java6 和 Java7)? 是的,我在开发 PC 上的 JBoss 下运行应用程序,我只从 JRE 6 切换到 JRE 7。 根据幻灯片 38 和 39:donaldojdk.files.wordpress.com/2011/11/55j7.pdf 支持一些新的字体类型。也许正在工作的字体是 OpenType/CFF 字体,而在 Java6 中它正在回退到默认字体 第一张幻灯片使用了错误的字体 glyphs,但是正确的字体度量 - 即每个字符的位置与 Java 7 完全相同。这表明要么PDF 本身定位每个字符,或者字体在 Java 6 中已部分但未完全加载。抱歉,不是答案,但可能有助于调试。 您能否提供用于插图的 PDF 的链接? 【参考方案1】:

您可以随时将字体导入到您的库中..

你可以试试这个:

Font font = Font.createFont(Font.TRUETYPE_FONT, fontStream);

接下来,

GraphicsEnvironment.getLocalGraphicsEnvironment().registerFont(font);

还有,

new Font("nameOfFont", Font.BOLD, 13)

【讨论】:

【参考方案2】:

ICEpdf Pro 支持 OpenType/CFF 字体。如果您在开源版本中遇到字体替换问题,请尝试在您的服务器实例上安装以下字体。 http://www.icesoft.org/wiki/display/PDF/Optimized+Font+Substitution

【讨论】:

【参考方案3】:

以下步骤可能会对您有所帮助。我希望您在 RedHat 操作系统中获得此功能。

    将所需的字体文件复制到以下构建版本的 \Java\jre6\lib\fonts\ 目录。

    将 Java 和 JRE 设置为此构建并对其进行测试。

    java 版本“1.6.0_15”Java(TM) SE 运行时环境(内部版本 1.6.0_15-b03)Java HotSpot(TM) 服务器 VM(内部版本 14.1-b02,混合模式)

我预计你的问题会解决。

【讨论】:

以上是关于Java 6 下字体显示不正确的主要内容,如果未能解决你的问题,请参考以下文章

Android 应用显示不完整的文本和不正确的字体

linux下java窗口,正确显示中文

如何从 Opentype 字体的 GPOS 表中使用和提取字距调整对,以在 Java 中将字形正确显示为 Path2D?

在 OBJ C 中为给定文本找到正确的字体大小?

显示和字体较大时手动计算可用宽度不正确

NSControl 对象内的日文字体渲染不正确