我有一个从pdflatex创建的文档,嵌入了R pdf图。我现在正试图将它发送到要求嵌入所有字体的打印机(lulu)。我认为,没问题,
# gs -dNOPAUSE -dBATCH -dNOPLATFONTS -sDEVICE=pdfwrite \
-dEmbedAllFonts=true -sOutputFile=book-gs.pdf -f book.pdf
但令我失望的是,有些字体仍未嵌入:
# pdffonts book-gs.pdf | egrep 'no [yn]'
name type encoding emb sub uni object ID
ZapfDingbats Type 1 ZapfDingbats no no yes 1170 0
Symbol Type 1 Symbol no no no 1933 0
奇怪的是,pdf文档打印并且看起来很好,所以字体必须以某种方式存活。我尝试过与adobe acrobat程序类似的东西,但我遇到了同样的问题。
建议表示赞赏。
真诚地,/ iaw
答案 0 :(得分:3)
为了同样有问题的其他人的利益;这里的问题是有三个参数影响字体嵌入,它们以一些令人困惑的方式交互(抱歉,但这些参数是由Adobe定义的,而不是我们......)
有/ NeverEmbed,一个从不要嵌入的字体数组,/ AlwaysEmbed,一个总是要嵌入的字体数组(如果使用的话,显然)和/ EmbedAllFonts。
你不能将字体放入NeverEmbed和AlwaysEmbed,这是一个错误。
如果在AlwaysEmbed中设置字体,则无论EmbedAllFonts的设置如何,它们都将被嵌入。
如果您在NeverEmbed中设置字体,则无论EmbedAllFonts的设置如何,它们都不会被嵌入。
如果一个字体既不在AlwaysEmbed列表中也不在NeverEmbed列表中,那么如果EmbedAllFonts为真,它将被嵌入,否则不会嵌入。
现在,Ghostscript从EmbedAllFonts开始为true,因此除非您因某种原因将其设置为false,否则不需要操作它。所以....为什么它没有嵌入标准字体?那是因为NeverEmbed列表默认设置为包括所有base 13字体。 (这个
因此,如果要嵌入这些字体,则需要使用PDFSETTINGS = / prepress或/ printer,或者需要将NeverEmbed设置为空。我推荐后者:
-c "<</NeverEmbed []>> setdistillerparams" -f
答案 1 :(得分:0)
是默认情况下实际上嵌入了Courier / Helvetica吗?当谈到MiKTeX的ghostscript(mgs)时,默认情况下,一个64位的脚本会默认嵌入它们,而32位的脚本则不会。请参阅:https://github.com/MiKTeX/miktex/issues/296。此致,伊万