我遇到了以下问题:
一般来说,我有一个应用程序,人们可以键入和粘贴任何类型的东西,然后他们可以将其导出为PDF。 您可以输入任何类型的unicode,因此我需要支持许多字符。 我目前的解决方案是使用复合字体,一切正常。但随着PDF输出,我陷入了麻烦。 PDF库不能很好地处理复合字体。我已经尝试了几种方法使它工作(并已经在stackoverflow中询问了一个问题),但我没有解决方案。 库(iText)使用字体映射器来匹配字体。
我正在谈论的复合字体以这种方式初始化:
private static final Font WIDGET_FONT = StyleContext.getDefaultStyleContext().getFont("Trebuchet MS", Font.PLAIN, FONT_SIZE);
所以我的下一个希望是通过使用纯粹的"物理字体+后备"来摆脱复合字体。 - 解决方案。我现在已经使用一种后备字体用于我的用户可以嵌入的特殊表情符号,并且它工作正常。此外,PDF库可以很好地处理它,因为它只是将字形作为小图像插入。不可选择或任何东西,但这对我来说没问题。 这个解决方案看起来像这样:
// Font creation
private static final Font WIDGET_FONT = new Font("Trebuchet MS", Font.PLAIN, FONT_SIZE);
// Fallbacks are in the /lib/fonts/fallback - folder in java
条款" physical"和"逻辑"字体,以及整个复合字体解决方案,我从这个来源得到: http://elliotth.blogspot.de/2007/04/far-east-asian-fonts-with-java-7-on.html
但是当我只使用物理字体+后备时,许多不常见的unicode-chars都不会被渲染。不知何故,即使一切配置都很好,后备机制也不会对它们起作用。我已经尝试了java字体配置文件和fallback-folder的几个东西,但没有任何效果。
有人可以帮忙吗?
问候,
安迪