如何在 PDF 中找到 Type 3 字体的确切位置?

如何在 PDF 中找到 Type 3 字体的确切位置?

在生成 PDF 时,我们经常会用到一些 Type 3 字体。我们可以通过提供 来查找 PDF 中是否存在 Type 3 字体pdffonts <filename.pdf>。此外,还可以通过提供以下内容来查找确切的页面:

 for i in `seq 1 1 \`pdfinfo test.pdf|grep 'Pages'|cut -d: -f2|sed -e 's/ //g'\``
 do
   echo Page $i;
   pdffonts -f $i -l $i test.pdf|grep 'Type 3';
 done

这将列出每个页面中 Type 3 字体的存在情况。我的问题是,我们能否找到页面中 Type 3 字体出现的确切位置。是否有任何简单的方法或开源程序可以实现这一点?在某些情况下,我们需要花费数小时反复试验才能找到导致问题的确切字体。

答案1

tracefnt带有选项的包loading 会告诉您一些有关已加载字体名称 (TFM) 的信息,这些信息可能有助于查找。但 LaTeX 对字体的类型 (PK、Type 1、TTF 等) 一无所知,因为这是输出驱动程序级别的一部分。

下面的例子甚至tracefnt在之前就加载\documentclass以捕获标准字体cmr10

\RequirePackage[loading]{tracefnt}
\documentclass{article}
\usepackage[weather]{ifsym}
\pagestyle{empty}
\begin{document}
  Weather: \FilledSunCloud
\end{document}

结果

相关.log文件条目为:

LaTeX Font Info:    External font `cmr10 at10.0pt' loaded as
(Font)              OT1/cmr/m/n/10  on input line 64.

LaTeX Font Info:    External font `ifwea10 at10.0pt' loaded as
(Font)              U/ifwea/m/n/10  on input line 10.

TeX 将查找cmr10.tfmifwea10.tfmLaTeX 字体OT1/cmr/m/n/10U/ifwea/m/n/10( <encoding>/<family>/<series>/<shape>/<size>)。

输出驱动程序将查找虚拟字体,这些字体可能包含所用字形到其他字体的映射。并且它将查找映射文件,确定应使用哪个实际字体文件(Type 1、TTF、PK 等)。

如果 pdfTeX 在 PDF 模式下使用,那么它会在 pdfTeX 运行结束时打印所使用的字体:

<.../texmf-var/fonts/pk/ljfour/public/ifsym/ifwea10.600pk>
<.../texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb>

希望这能为您提供一些线索,以便更快地识别有问题的字体。

相关内容