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 下字体显示不正确的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Opentype 字体的 GPOS 表中使用和提取字距调整对,以在 Java 中将字形正确显示为 Path2D?