java - iText 变音符号(例如 D̂、M̂ 等)无法在 PDF 上正确显示

标签 java pdf itext

当我尝试创建包含与标题中字符类似的字符的 PDF 时,我遇到了 iText 问题。 发生的情况是重音符号没有正确地位于字母上方,而是紧挨着它,或者(取决于我使用的字体)有点“合并”到它里面(见下面我使用 FreeSans 的屏幕截图)。

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/

相关文章:

pdf - pdflatex 的相对优点是什么?

php - PDF 解析器 PHP 库不工作

c# - 使用 itextsharp 创建的 pdf 中的错误尺寸图像

java - RxJava : OnNext Unsubscribe is not working

java - Android 应用程序在创建打开 Intent 时崩溃

Java 标记接口(interface)

python - 如何在 Python 中解锁 "secured"(读保护)PDF?

java - 如何用虚线给文本加下划线?

java - 使用 iText 在 PDF 中禁用 PushbuttonField

java - 为什么 H2 数据库仅在某些测试中告诉我我的表不存在