PDFBox "This font does not permit subsetting" - 可以在没有子集的情况下使用字体吗?

PDFBox "This font does not permit subsetting" - Possible to use font without subsetting?

我将 PDFBox (2.0.11) 用于 create/edit PDF,并且在使用两种总是导致异常的字体时遇到了如下问题

This font does not permit subsetting

尽管可以使用 Everything fonts 等其他工具对字体进行子集化,但没有任何问题。

是否可以在 PDFbox 中使用字体而不对其进行子集化,或者是否有其他方法可以解决此问题?

异常信息:

Exception in thread "main" java.io.IOException: This font does not permit subsetting
    at org.apache.pdfbox.pdmodel.font.TrueTypeEmbedder.subset(TrueTypeEmbedder.java:298)
    at org.apache.pdfbox.pdmodel.font.PDType0Font.subset(PDType0Font.java:239)

已解决:

这里是一个关于如何在不对其进行子集化的情况下加载字体的工作示例:

File fontFile1 = new File("/fonts/fontfile.ttf");
InputStream fontFile1Stream = new FileInputStream(fontFile1);
PDType0Font product_title_font = PDType0Font.load(doc, fontFile1Stream, false);

是的,你仍然可以使用没有子集化的字体,使用

PDType0Font.load(PDDocument doc, InputStream input, boolean embedSubset)

最后一个参数 = false。你的文件会更大,仅此而已。如果另一个产品可以子集字体,则意味着它不遵守许可设置,或者 PDFBox 中存在错误。在可以显示 os2 table 的工具中打开您的字体,例如DTL OTMaster 光。在那里寻找 "fstype" 条目。 https://docs.microsoft.com/en-us/typography/opentype/spec/os2#fstype