texlive:如何确定字体包含在哪个包中?

texlive:如何确定字体包含在哪个包中?

我编写了一个脚本,反复运行lualatex file.tex以安装缺失的软件包,但对于缺失的字体,我却很难做到这一点。当出现类似

! 9pt 处的字体 \OT1/ppl/m/n/9=pplr7t 无法加载:未找到度量数据或度量数据错误。

出现,我想确定包含 的包ppl。有没有办法通过算法做到这一点?

(例如,当缺少x.styx.cls文件时,我能够运行tlmgr search --file x.sty并解析出它所在的包。如果ppl.some_extension每个字体都有一个文件并且 tlmgr 可以搜索,那就太完美了。)

该脚本可以找到这里

答案1

嗯,您的消息说 pplr7t.tfm 丢失,所以如果 tlmgr 能够在包中找到单个文件tlmgr search --file pplr7t.tfm就应该可以工作(我有 miktex 所以我不知道)。

答案2

该消息与特定品牌、样式、字体和字体大小有关,但字体度量信息不可用。名称(在本例中为 pplr7t)是较长名称的缩写,称为“Berry 名称”。您可以在fontname.pdf' (TeX Live 系统上的文件 texdoc fontname.pdf 中找到名称的构造方式)。在本例中,请求的是 Adob​​e Palatino 字体(“p”=adobe,“pl”=Palatino,“r”=regular Roman)。

Berry 这个名字的由来是(引自fontname.pdf

这是基本方案(这里的空格只是为了方便阅读):

S TT W [V...] [N] [E] [DD] 其中

S代表字体的供应商。

TT 代表字体名称。

W代表权重。

V... 表示变体,如果其和宽度均为正常,则省略。许多字体都有多个变体。

N 表示编码,如果编码是非标准的,则省略。编码包含在变体部分中(参见第 2.4 节 [变体],第 20 页)。

E 代表宽度(“扩展”),如果是正常的话则省略。

DD 代表设计尺寸(十进制),如果字体是线性缩放的,则省略。

缺少字体可能是因为您的系统上未安装字体但是需要该字体(通过软件包或您自己的命令),或者因为已安装字体但是没有特定的字型、粗细、大小等组合(例如,许多字体不支持半粗体并且几乎不支持斜体小写字母),或者因为已安装了所查找的字体但是 TeX 字体度量文件(.tfm)或字体映射文件(.map)存在问题,或者因为安装字体时命令mktexlsrtexhash)和updmap-sys未运行或运行不正确(这些命令是正确设置 updmap.cfg 文件所必需的,该文件列出了用户或系统上可用的所有字体映射)。网站上有许多问题和答案,详细介绍了这些具体要点。

答案3

ppl是 Palatino 的缩写。我想你漏掉了这些行

\usepackage{tgpagella}
\usepackage{fontspec}

或者选择 LuaLaTeX(更好的选择)

\documentclass{article}

\usepackage{fontspec}

\setmainfont{TeX Gyre Pagella} 


\begin{document}


Text in Palatino


\end{document}

相关内容