PSTricks + pdfLaTeX 导致字体无法嵌入到最终的 PDF 中

PSTricks + pdfLaTeX 导致字体无法嵌入到最终的 PDF 中

我希望最终的 PDF 能够嵌入所有字体。psdots在 pstricks 中使用特殊功能会导致此操作失败。以下是导致非嵌入字体的 MWE:

\documentclass[10pt]{article}

\usepackage{pstricks,epsfig,pst-node}
\usepackage{auto-pst-pdf}

\begin{document}

\begin{pspicture}(0,0)(3,3)
\psdots[dotstyle=asterisk](0,0)
\psdots[dotstyle=o](0,0)
\psdots[dotstyle=triangle*](0,0)
\psdots[dotstyle=diamond*](0,0)
\psdots[dotstyle=pentagon*](0,0)
\end{pspicture}

\end{document}

以下是输出pdffonts

[mishchea@linty mwe]$ pdffonts mwe.pdf 
name                                 type              encoding         emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
SDXKYB+CMR10                         Type 1            Builtin          yes yes no       6  0
Times-Roman                          Type 1            Standard         no  no  no      13  0
[none]                               Type 3            Custom           yes no  no      14  0

答案1

如果你想嵌入标准 PostScript 字体,那么使用

\usepackage[dvips={-h tir_____.pfb}]{auto-pst-pdf}


这是 Times-Roman 的设置。字体文件(在本例中tir_____.pfb)可在网上免费获取。如果您想嵌入全部然后,标准 PostScript 字体使用自己的config.ps文件,该文件默认启用这些字体的嵌入,例如:

[...]
 % Partially download Type 1 fonts by default.  Only reason not to do
% this is if you encounter bugs.  (Please report them to
% @email{tex-k@@mail.tug.org} if you do.)
j

% load extra header files, in this case fonts used by pstricks header
% and perhaps in other places, bit of a waste but better save than sorry
h hvb_____.pfb
h hv______.pfb
h tir_____.pfb
h tii_____.pfb
h tib_____.pfb
h pzdr.pfb
[...]

kpsewhich config.ps在终端中运行会告诉您当前文件config.ps的位置,例如:

voss@shania:~> kpsewhich config.ps
/usr/local/texlive/2012/texmf/dvips/config/config.ps

下面是使用上述 -h 选项运行的示例的输出:

voss@shania:~> pdffonts Test/Namenlos-4.pdf
name                    type              encoding         emb sub uni object ID
----------------------- ----------------- ---------------- --- --- --- ---------
SDXKYB+CMR10            Type 1            Builtin          yes yes no       6  0
GNSOXG+Times-Roman      Type 1C           WinAnsi          yes yes no      13  0
[none]                  Type 3            Custom           yes no  no      14  0

答案2

我认为最好使用standalone类并按照编译顺序编译源代码latex-dvips-ps2pdf以获得紧密的单一 PDF 输出,如下所示,

在此处输入图片描述

% this file name is goo.tex
\documentclass[10pt,pstricks,border=12pt]{standalone}
\usepackage{pst-node}

\begin{document}

\begin{pspicture}[showgrid=bottom](-1,-1)(5,5)
\psframe[fillstyle=solid,fillcolor=yellow,opacity=0.1](-1,-1)(5,5)
\psdots[dotstyle=asterisk](0,0)
\psdots[dotstyle=o](1,1)
\psdots[dotstyle=triangle*](2,2)
\psdots[dotstyle=diamond*](3,3)
\psdots[dotstyle=pentagon*](4,4)
\end{pspicture}

\end{document}

调用pdffonts goo.pdf会产生如下输出,

在此处输入图片描述

技巧和窍门:

  • 首先,为主 LaTeX 输入文件中的standalone每个 PSTricks创建一个带有类的单个 LaTeX 输入文件。pspicture

  • 其次,按顺序编译每个standalone基于的 LaTeX 输入文件latex-dvips-ps2pdf以生成 PDF 输出。

  • 第三,从主 LaTeX 输入文件中,使用 导入那些 PDF 输出,\includegraphics并使用 编译主 LaTeX 输入文件pdflatex

  • 完毕!

主 LaTeX 输入文件是否嵌入字体?

% this file name is main.tex
\documentclass[12]{article}
\usepackage{graphicx}
\begin{document}
\includegraphics{goo}
\end{document}

编译它以pdflatex main生成一个名为的 PDF 文件main.pdf。然后检查字体如下,

在此处输入图片描述

相关内容