iText 变音符号(例如 D̂、M̂ 等)无法在 PDF 上正确显示
iText diacritic characters such as D̂, M̂ and so on not displayed correctly on PDF
当我尝试创建包含与标题中字符类似的字符的 PDF 时,我遇到了 iText 问题。
发生的情况是重音符号没有正确地位于字母上方,而是紧挨着它,或者(取决于我使用的字体)有点 "merged" 进入它(见下面我使用 FreeSans 的屏幕截图)。
我知道有这个问题的字符都是"composite"个字符。我的意思是它们由两个 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, see the chapter 2 of the "iText 7: building blocks" tutorial (please scroll towards the end of the chapter) to find out how it works. You can get a free trial version of pdfCalligraph here 的详细信息。
当我尝试创建包含与标题中字符类似的字符的 PDF 时,我遇到了 iText 问题。 发生的情况是重音符号没有正确地位于字母上方,而是紧挨着它,或者(取决于我使用的字体)有点 "merged" 进入它(见下面我使用 FreeSans 的屏幕截图)。
我知道有这个问题的字符都是"composite"个字符。我的意思是它们由两个 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, see the chapter 2 of the "iText 7: building blocks" tutorial (please scroll towards the end of the chapter) to find out how it works. You can get a free trial version of pdfCalligraph here 的详细信息。