PDFBox "This font does not permit subsetting" - 可以使用字体而不带子集?



我使用PDFBox(2.0.11(创建/编辑PDF,并在使用两种字体时遇到困难,这总是导致如下所示的异常

This font does not permit subsetting

即使可以使用其他工具(如Everything字体(对字体进行子集设置,也不会出现任何问题。

是否可以在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表的工具中打开字体,例如DTL OTMaster Light。在那里查找"fstype"条目。https://learn.microsoft.com/en-us/typography/opentype/spec/os2#fstype

最新更新