如何生成没有任何 Type3 字体的 pdf?

如何生成没有任何 Type3 字体的 pdf?

对于出版商,我必须生成不包含任何 Type3 字体的 pdf 文件。

到目前为止,我认为pdflatex在当前的 LaTeX 发行版上使用应该足以获得没有任何 Type3 字体的 pdf 文件,但对于当前文档而言,情况并非如此:

$ pdffonts paper.pdf
name                                 type              emb sub uni object ID
------------------------------------ ----------------- --- --- --- ---------
ZFUCHW+NimbusRomNo9L-Medi            Type 1            yes yes no      41  0
VNQOQC+NimbusRomNo9L-Regu            Type 1            yes yes no      42  0
[none]                               Type 3            yes no  no      43  0
NXAFJF+NimbusRomNo9L-ReguItal        Type 1            yes yes no      46  0
CBNMRR+NimbusRomNo9L-MediItal        Type 1            yes yes no      48  0
MNSAJN+NimbusRomNo9L-Regu-Slant_167  Type 1            yes yes no      52  0
FJTKHV+CMSY7                         Type 1            yes yes no      53  0
VVITQE+CMMI9                         Type 1            yes yes no      54  0
CHSHRJ+CMR9                          Type 1            yes yes no      56  0
EAPUQB+CMR6                          Type 1            yes yes no      57  0
KBHVYI+CMMI6                         Type 1            yes yes no      58  0
EHULJT+CMTI9                         Type 1            yes yes no      59  0
JLLCEK+CMSY9                         Type 1            yes yes no      61  0
YEIEPQ+CMEX9                         Type 1            yes yes no      64  0
DFKMIY+CMSY8                         Type 1            yes yes no      84  0
NEDAGG+CMSY6                         Type 1            yes yes no      87  0
QDTWCG+MSBM10                        Type 1            yes yes no     127  0
[none]                               Type 3            yes no  no     198  0
OKAOPP+CMMI8                         Type 1            yes yes no     199  0
TIGOKK+CMR8                          Type 1            yes yes no     200  0
GWSFMB+CMTI8                         Type 1            yes yes no     201  0
[none]                               Type 3            yes no  no     397  0

令我惊讶的是,所有的 Type3 字体都没有真实的名字。

文档使用 documentclass sigplanconf。对于图形,仅使用tikzlistings包(不使用 graphicx 包,即不\includegraphics使用且不嵌入 postscript 文件)。

我正在使用带有 TeX Live 的 Ubuntu 10.04:

$ pdflatex --version
pdfTeX 3.1415926-1.40.10-2.2 (TeX Live 2009/Debian)

我发现了一个有关 Type1 字体的 ACM 常见问题解答,但它似乎已经过时了,并且建议的方法仍然会产生带有 Type3 字体的 pdf 文件。

pk 字体:pk在 doc.log 中查找字体时我发现了以下输出:

 75i,27n,56p,866b,2711s stack positions out of 5000i,500n,10000p,200000b,50000s
 </mnt/max/.texmf-var/fonts/pk/ljfour/jknappen/ec/ectt0800.600pk> </mnt/max/.texmf-var/fonts
 /pk/ljfour/jknappen/ec/ectt0900.600pk>{/usr/share/texmf-texlive/fonts/enc/dvips/base/8r.enc} 
 </mnt/max/.texmf-var/fonts/pk/ljfour/jknappen/ec/ecss0900.600pk>

这可能是什么原因?缺少一些字体包吗?还是与 tikz 有关?

答案1

查看 pdflatex 日志文件的末尾。它会告诉您包含哪些字体以及哪些是位图 (pk) 字体。

答案2

首先,现在大多数人都使用 pdflatex。如果可能的话,将每个图像都更改为 pdf,使用 pdf 替换 eps 文件

     convert file.eps file.pdf

convert 位于 imagemagick 包中。删除 epsfig 并改用 includegraphics。

下次运行:

     pdffonts final_upload_document.pdf | less

确保问题确实出在 Type 3 字体上。如果不是,那么问题很可能与文件名中的空格有关。

下次运行:

     pdffonts each_image.pdf

在单个 pdf 文件上查找任意 3 型字体,以找出导致问题的图像。这可能是 xfig 或 matlab 问题,也可能是其他图像生成器的问题。

如果所包含的 pdf 没有产生问题,那么很可能是包含诸如黑板字体之类的内容导致了源 latex 文件内部出现问题。

使用上述方法,我发现,如果您使用导出到 latex+pdf 部分,那么除了 matlab 之外,xfig 也会导致相同的伪影。

当您找到 pdf + latex 文件时,您可以运行:

  xfig -specialtext -latexfonts -startlatexFont default

使用正确的设置启动 xfig。您还可能会发现,就像我的情况一样,xfig 图像是几年前生成的,原本要放到论文中,但现在它甚至无法在较新版本的 xfig 中打开,并出现 sigsegv 错误。在这种情况下,您唯一的选择是使用上面的 xfig 调用重新生成图像。

答案3

Type 3 字体是不是默认情况下为位图字体。这意味着只有不是 1 型。这就是为什么 Type 3 字体也可以是矢量字体的原因。如果日志文件中没有列出 pk 字体,则说明您已包含此类 Type 3 字体。它也可以通过带有\includegraphics

答案4

我也遇到了 matplotlib 生成的图像的问题,并尝试了这里提出的其他建议,但都没有真正起到作用。最终起作用的是我在这里找到的建议(http://phyletica.org/matplotlib-fonts/):

import matplotlib.pyplot as plt
plt.rcParams['pdf.fonttype'] = 42

重新生成图像后,我的 PDF 终于不再有 Type3 字体了。

相关内容