当我尝试创建包含与标题中字符类似的字符的 PDF 时,我遇到了 iText 问题。 发生的情况是重音符号没有正确地位于字母上方,而是紧挨着它,或者(取决于我使用的字体)有点“合并”到它里面(见下面我使用 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));
如有任何帮助,我们将不胜感激。
提前致谢!
最佳答案
您需要将 iText 7 与 pdfCalligraph 模块一起使用。这种组合需要访问 OTF 表以根据大小、高度等正确对齐字符。
有关 pdfCalligraph 的更多信息, 请参阅 chapter 2 of the "iText 7: building blocks"教程(请滚动至本章末尾)以了解其工作原理。您可以获得 pdfCalligraph 的免费试用版 here .
关于java - iText 变音符号(例如 D̂、M̂ 等)无法在 PDF 上正确显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38223093/