首页 文章

如何使GhostScript PS2PDF停止对字体进行子集化

提问于
浏览
4

我正在使用GhostScript附带的ps2pdf14实用程序,我遇到了字体问题 .

我传递给命令的指令似乎并不重要,它坚持对源文档中找到的任何字体进行子集化 .

例如

-dPDFSETTINGS#/ prepress -dEmbedAllFonts #true -dSubsetFonts #false -dMaxSubsetPct#0

注意#是因为命令在windows上运行,它与=相同 .

如果有人知道如何告诉ps2pdf不要使用子集字体,我会非常感激 .

谢谢

-------------------------- Notes ----------------------- -------------------

源文件是包含嵌入字体的pdf,因此它是已经嵌入在源文件中的字体,我需要阻止它作为目标文件中的子集 .

目前所有源文件嵌入字体都是子集,在某些情况下,这从字体名称来看并不明显,即它不包含散列,并且乍一看似乎是完整字体,但宽度数组在所有情况下都是子集 .

2 回答

  • 0

    我不确定你到底想要达到什么目标 . 可能根本没有嵌入字体(甚至不作为子集)?或者是"I want not subset, but the complete font"?

    注1:

    • ps2pdf14 实用程序是一个批处理文件,它使用预先设置的命令行参数数组调用实际 gswin32c.exe . 如果您自己完全构造gswin32c命令行,则可以更灵活地进行实验 .

    注2:

    • Ghostscript无法从源PDF(至少AFAIK)中取消嵌入字体 .

    我一直使用以下命令行成功控制字体嵌入策略:

    gswin32c.exe ^
        -dBATCH ^
        -dNOPAUSE ^
        -sOutputFile=c:/path/to/my/output.pdf ^
        -sDEVICE=pdfwrite ^
        -dPDFSETTINGS=/prepress ^
        -dCompressFonts=false ^
        -dSubsetFonts=false ^
        -dEmbedAllFonts=true ^
        -c ".setpdfwrite <</NeverEmbed [ ]>> setdistillerparams" ^
        -f c:/path/to/my/postscript.ps
    

    前一个完全嵌入所有字体(甚至是“Base 14”字体)(没有子集) . 下一个没有嵌入任何字体:

    gswin32c.exe ^
        -dBATCH ^
        -dNOPAUSE ^
        -sOutputFile=c:/path/to/my/output.pdf ^
        -sDEVICE=pdfwrite ^
        -dPDFSETTINGS=/default ^
        -dEmbedAllFonts=false ^
        -c ".setpdfwrite <</AlwaysEmbed [ ]>> setdistillerparams" ^
        -f c:/path/to/my/postscript.ps
    

    注3:

    • .setpdfwrite部分调用被认为对PDF创建有益的默认值 . 如果它出现在命令行的最后,它可能会覆盖您之前设置的内容 . 因此, /NeverEmbed [ ] 和/或 /AlwaysEmbed [ ] p部件在调用输入文件之前添加了 afterwards .
  • 5

    尝试创建包含以下项的设置文件

    << / SubsetFonts false >> setdistillerparams

相关问题