当我尝试创建包含标题中的字符的PDF时,我遇到了iText的问题。 会发生什么情况是,重音circonflexe不能正确地位于字母上方,而是紧挨着它或(取决于我使用的字体)稍微“合并”到它(请参阅下面我使用FreeSans的屏幕截图)。
我知道有这个问题的所有字符都是“复合”字符。我的意思是它们由两个unicode字符组成。例如,“D”表示为“\ u0044 \ u0302”,而所有常用字符当然表示为“\ uXXXX”。 所以我很确定它与此有关。 例如,具有正常unicode表示的“Ê”显示得很好。
这是一个很小的代码片段,希望包含您需要知道的所有内容:
String TEXT = "\u0044\u0302 \u004A\u030C \u004C\u0302 \u004D\u0302 \u004E\u0302 \u0064\u0302 \u006C\u0302 \u006D\u0302 \u006E\u0302";//D̂ J̌ L̂ M̂ N̂ d̂ l̂ m̂ n̂
BaseFont bf = BaseFont.createFont("FreeSans.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
document.add(new Paragraph(TEXT, font));
任何帮助都将受到高度赞赏。
提前致谢!
答案 0 :(得分:3)
您需要将iText 7与模块pdfCalligraph一起使用。这种构图需要访问OTF表,以根据大小,高度等正确对齐字符。
有关pdfCalligraph的更多信息,请参阅chapter 2 of the "iText 7: building blocks"教程(请滚到本章末尾)以了解其工作原理。您可以获得pdfCalligraph here的免费试用版。