Fonts 为什么即使我指定不嵌入,iText也会嵌入字体?

Fonts 为什么即使我指定不嵌入,iText也会嵌入字体?,fonts,itext,Fonts,Itext,我正在使用Noto字体创建pdf,并希望嵌入字体而不是不嵌入字体。我的代码 FontFactory.register("c:/temp/fonts/NotoSansCJKsc-Regular.otf", "my_nato_font"); Font myBoldFont = FontFactory.getFont("my_nato_font", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); 当我创建pdf并按CTRL+D组合键时,我可以看到

我正在使用Noto字体创建pdf,并希望嵌入字体而不是不嵌入字体。我的代码

   FontFactory.register("c:/temp/fonts/NotoSansCJKsc-Regular.otf", "my_nato_font");
   Font myBoldFont = FontFactory.getFont("my_nato_font", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
当我创建pdf并按CTRL+D组合键时,我可以看到字体已经嵌入

但是一旦我选择了

   FontFactory.register("c:/temp/fonts/NotoSansCJKsc-Regular.otf", "my_nato_font");
   Font myBoldFont = FontFactory.getFont("my_nato_font");
文件大小减小,字体不嵌入。现在我看不到我添加到pdf中的汉字

我的问题

  • 为什么“嵌入”选项仍不嵌入字体
  • 由于Noto字体是由google开源的,并且由adobe支持,所以我认为最终用户应该能够查看文档,即使不需要嵌入它们。我的理解错了吗

  • 如果您使用的是Identity-H,字体应嵌入,因为如果不忽略
    嵌入的
    参数,则iText将创建一个违反ISO-32000-1的PDF:

    第9.7.5.2节:

    Identity-H和Identity-V CMAP不得与非嵌入式字体一起使用

    Adobe拥有大量关于PDF软件的专利。Adobe授予任何人免费使用这些专利的权利,条件是您创建符合PDF规范的PDF文件


    如果您调整iText,使其不会嵌入带有Identity-H CMAP的字体,您将违反PDF规范,这也可能导致一些专利侵权。

    Perfect。解释一切。谢谢