当前字体文件的完整路径

当前字体文件的完整路径

有没有办法打印当前字体文件的完整路径(包括文件名和扩展名)?我对以下引擎感兴趣:pdfTeX、XeTeX、LuaTeX 及其对应的 LaTeX。我并不一定需要一种适用于所有这些引擎的方法;方法可能因引擎而异。

答案1

测试文件

\def\showcurrentfontpath{%
  \immediate\write20{}%
  \immediate\write20{Current font at line \the\inputlineno}%
  \immediate\write18{kpsewhich \fontname\font.tfm}%
  \immediate\write20{}%
}

abc\showcurrentfontpath

{\it abc\showcurrentfontpath}

\bye

编译后pdftex控制台将显示

Current font at line 8
/usr/local/texlive/2017/texmf-dist/fonts/tfm/public/cm/cmr10.tfm


Current font at line 10
/usr/local/texlive/2017/texmf-dist/fonts/tfm/public/cm/cmti10.tfm

如果需要打印输出,请使用以下文件进行编译pdftex -shell-escape

\def\showcurrentfontpath{%
  \begingroup\edef\x{\fontname\font.tfm}%
  \par\noindent
  \tt Current font at line \the\inputlineno:%
  \par\noindent
  \input"|kpsewhich \x"
  \endgroup
}

abc\showcurrentfontpath

{\it abc\showcurrentfontpath}


\bye

在此处输入图片描述

-recorder另一种方法是使用命令行选项运行引擎,这将写入一个.fls包含每个输入文件信息的文件。但是,预加载的字体(如上述两种)不会显示,因为它们已在格式创建时输入。

对于 XeTeX,你需要挂接xdvipdfmx,但不幸的是它不会显示.pfb文件的完整路径:使用

xetex -output-driver="xdvipdfmx -vv" test

并且.tfm文件将显示其完整路径以及 OpenType 或 TrueType 字体。.pfb正如我所说,不是。

答案2

这是为了补充egreg 的精彩回答

egreg 的宏会打印出文件的完整路径.tmf,但不会打印出字形文件的完整路径。它适用于所有三个引擎。

要查看字形文件,请按以下步骤操作。

  • pdflatex+ lualatex:字形文件的完整路径将写入文件.log。(建议技术员lualatex) 和米科( pdflatex)。)
    或者,将-recorder选项添加到命令行。完整路径将写入文件.fls。(egreg 在他的回答中建议。)

  • xelatex\XeTeXtracingfonts=1:在命令前添加\documentclass。完整路径将写入.log文件。(由 Ulrike Fischer 建议这里这里

* 感谢 David Carlisle让我意识到TeX 字体规范分布在tmf文件和字形文件中。

相关内容