在生成 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.tfm
和ifwea10.tfm
LaTeX 字体OT1/cmr/m/n/10
和U/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>
希望这能为您提供一些线索,以便更快地识别有问题的字体。