5

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

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

例如

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

注意#是因为该命令是在Windows上运行的,所以和=是一样的。

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

--------------------------注意事项------------------------ ------------------

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

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

4

2 回答 2

5

我不确定你到底想要达到什么目的。可能根本没有嵌入字体(甚至不是子集)?还是“我想要的不是子集,而是完整的字体”?

注1:

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

笔记2:

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

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

  gswin32c.exe ^
    -分贝^
    -dNOPAUSE ^
    -sOutputFile=c:/path/to/my/output.pdf ^
    -sDEVICE=pdfwrite ^
    -dPDFSETTINGS=/prepress ^
    -dCompressFonts=假 ^
    -dSubsetFonts=假 ^
    -dEmbedAllFonts=真 ^
    -c ".setpdfwrite <</NeverEmbed [ ]>> setdistillerparams" ^
    -fc:/path/to/my/postscript.ps

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

  gswin32c.exe ^
    -分贝^
    -dNOPAUSE ^
    -sOutputFile=c:/path/to/my/output.pdf ^
    -sDEVICE=pdfwrite ^
    -dPDFSETTINGS=/默认 ^
    -dEmbedAllFonts=假 ^
    -c ".setpdfwrite <</AlwaysEmbed [ ]>> setdistillerparams" ^
    -fc:/path/to/my/postscript.ps

注3:

  • .setpdfwrite 部分调用被认为有利于 PDF 创建的默认值。如果它最后出现在命令行上,它可能会覆盖您之前设置的内容。因此,在调用输入文件之前 添加/NeverEmbed [ ]和/或/AlwaysEmbed [ ]p 部分。
于 2010-06-05T22:16:07.347 回答
0

尝试创建一个包含以下内容的设置文件:

<< /SubsetFonts false >> setdistillerparams

于 2009-09-17T15:48:18.567 回答