如何使Ghostscript的`ps2pdf14`停止对字体进行子集化

Gav*_*vin 5 pdf fonts embedding ghostscript

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

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

例如

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

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

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

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

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

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

Kur*_*fle 5

我不确定你到底想要实现什么.可能根本没有嵌入字体(甚至不作为子集)?或者它是"我不想要子集,但完整的字体"?

注1:

  • ps2pdf14实用程序是一个批处理文件,它gswin32c.exe使用预先设置的命令行参数数组调用real .如果您自己完全构造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部分.