我正在准备一篇论文,准备提交给 ACM 论文集和数字图书馆。但是,我一直收到出版社发来的“您的 pdf 和 .ps 文件都使用 type 3 字体,您需要使用 type 1 字体”的错误信息。
我已生成 PS 和 PDF 格式的图表,并且均使用 type 3 字体。我希望尽可能避免任何需要我重现图表(使用 matplotlib 和 python)的解决方案(重新计算的计算时间意味着我会错过最后期限)。
我尝试了以下命令:
dvips -P pdf -t letter -o <file>.ps <file>.dvi
也
\usepackage[T1]{fontenc}
\usepackage{lmodern}
在我的 PS 文件和 PDFS 中仍然可以获得 Type 3 字体
pdffonts <file>.pdf
name type emb sub uni object ID
------------------------------------ ----------------- --- --- --- ---------
LBEWKO+NimbusSanL-Regu Type 1C yes yes no 10 0
PUBBEM+NimbusSanL-Bold Type 1C yes yes no 8 0
YFYECG+CMSY10 Type 1C yes yes yes 18 0
AHPFBS+NimbusRomNo9L-ReguItal Type 1C yes yes no 16 0
AXUBMJ+NimbusRomNo9L-Regu Type 1C yes yes no 14 0
YSSGKF+NimbusRomNo9L-Medi Type 1C yes yes no 12 0
[none] Type 3 yes no no 67 0
JCUPWZ+CMR10 Type 1C yes yes no 69 0
[none] Type 3 yes no no 35 0
[none] Type 3 yes no no 51 0
[none] Type 3 yes no no 71 0
[none] Type 3 yes no no 65 0
[none] Type 3 yes no no 93 0
[none] Type 3 yes no no 66 0
[none] Type 3 yes no no 59 0
[none] Type 3 yes no no 68 0
[none] Type 3 yes no no 63 0
ITCMPN+Helvetica-Bold Type 1C yes yes no 117 0
WZLTXN+Helvetica TrueType yes yes yes 121 0
FKSFIN+CMMI10 Type 1C yes yes no 125 0
JVZHNQ+Helvetica-Bold TrueType yes yes yes 123 0
MTASZJ+Helvetica Type 1C yes yes no 115 0
KXKKTR+Symbol Type 1C yes yes no 119 0
GQCMLS+StandardSymL Type 1C yes yes no 132 0
EDAHZQ+Helvetica TrueType yes yes no 138 0
JWFHTI+Helvetica-BoldOblique TrueType yes yes yes 142 0
XUKNTB+HelveticaNeue TrueType yes yes yes 134 0
KRAGHG+Helvetica-Bold TrueType yes yes yes 144 0
MAUGEX+Helvetica_00 TrueType yes yes no 140 0
[none] Type 3 yes no no 152 0
[none] Type 3 yes no no 160 0
[none] Type 3 yes no no 174 0
[none] Type 3 yes no no 154 0
[none] Type 3 yes no no 168 0
[none] Type 3 yes no no 176 0
[none] Type 3 yes no no 162 0
[none] Type 3 yes no no 167 0
[none] Type 3 yes no no 175 0
[none] Type 3 yes no no 169 0
SITHQP+NimbusMonL-Regu Type 1C yes yes no 190 0
我想知道我该如何纠正字体类型问题。有没有办法事后更改 PDF 或 PS 图的字体,以生成符合 PDF 和 PS 版本的论文,而无需任何 Type 3 字体?
附言:我希望得到详细的解释,因为我是新手,刚刚开始使用这些工具。我不介意不太理想的解决方法。
更新:1. 有问题的图片可以从以下网址下载此 Dropbox 链接
答案1
如果pkfix
无法pkfix-helper
提供帮助,最简单的方法是使用一种工具,该工具可以将包含嵌入字体的文本的文档转换为曲线/轮廓。这样就不会出现任何类型的嵌入字体,也不会带来麻烦。它还可以节省寻找合适替换字体等的努力。
由于您的.ps
文件包含DocumentMedia
DSC 注释,我们可以利用它们来节省一些工作。
$ grep DocumentMedia class_1_best_describer_mention.ps
%%DocumentMedia: 555x608 555 608 0 () ()
在几乎所有主要的基于矢量的绘图程序中打开.ps
文件。例如,在打开文件时CorelDraw
选择或在导出为时选择。在其他程序中,它可能被称为或类似名称。Import text as curves
.ps
Export text as curves
.eps
Create Outlines
编辑导出的文件并在开始行附近的某处.eps
添加上面的行。%%DocumentMedia:
%%BoundingBox:
如果你愿意的话,你可以将.eps
结局改为.ps
。
创建.pdf
文件。从DocumentMedia
上面的行中取出尺寸,并将它们放入下面的命令中,放入相应的 DEVICE*POINTS 选项中。
$ ps2pdf -dDEVICEWIDTHPOINTS=555 -dDEVICEHEIGHTPOINTS=608 class_1_best_describer_mention-2.ps class_1_best_describer_mention-2.pdf
现在您有了可以通过的文件。
然而,最好的方法是按照避免在 matplotlib 绘图中使用 Type 3 字体。
我已经转换了您提供的示例文件,如果仍然需要的话,我会提供它们。
答案2
如果您正在使用dvips
并且 CM(Computer Modern)字体适合您的文档,请尝试以下操作:
$ dvips -P cmz -t letter -f <file>.dvi -o <file>.ps
该-P
选项指定一台打印机并-P cmz
指定T1 Computer Modern 打印机字体。
更详细的解释可以在TeX 常见问题解答。