字体中缺少连字导致 PDFBox 3.0 中文本丢失

问题描述 投票:0回答:1

我在使用 PDFBox 3.0 时遇到了 PDFBox 2 中不会出现的问题。以加载的 TTF 字体显示文本时,所有出现的字符串“ft”都会被替换为“”。我已将范围缩小到字体文件中缺少“ft”的连字。在以前的版本中,这只会打印“ft”,但在 3.0 中,这现在是空白区域。有什么方法可以关闭字体的连字或后备,以便文本可以正确打印吗?

代码示例:

PDFont font = PDType0Font.load(doc, getClass().getResourceAsStream(PATH_TO_FONT));
contentStream.setFont(font, 20);
contentStream.beginText();
contentStream.showText("This is a gift message. f t.");
contentStream.endText();

这将显示“这是一条 gi 消息。” ft.'在 PDF 上。 (这与内置字体配合得很好。)

我也尝试过以下方法但没有成功:

TrueTypeFont ttf = new TTFParser().parse(...);
ttf.disableGsubFeature("liga");
PDFont font = PDType0Font.load(doc, ttf, false);
java fonts pdfbox
1个回答
0
投票

在 3.0.3 中可以作为 PDFBOX-5808 中不相关补丁的一部分。 必须通过调用

在 TrueTypeFont 级别将其关闭
TrueTypeFont ttf = new TTFParser().parse(new RandomAccessReadBufferedFile("c:/windows/fonts/calibri.ttf"));
ttf.setEnableGsub(false);
PDFont font = PDType0Font.load(doc, ttf, true);

关闭文档后,请不要忘记致电

ttf.close()

您可以通过下载快照版本来测试它: https://repository.apache.org/content/groups/snapshots/org/apache/pdfbox/pdfbox-app/3.0.3-SNAPSHOT/

© www.soinside.com 2019 - 2024. All rights reserved.