问题 1

问题 1

我使用 TeX 已有大约 20 年了,现在正在尝试学习 LaTeX。字体一直是 TeX/LaTeX 中最棘手的部分,我完全不知所措。我尝试遵循本指南ftp://ftp.dante.de/tex-archive/info/tex-font-errors-cheatsheet/tex-font-cheatsheet.pdf这看起来很棒,但虽然它可能帮助我找出我做错的地方,但它并不能帮助我找出如何做正确的事。

问题 1

我设置了这些命令

\usepackage{bookman}
\newcommand*{\largeheadfont}{\fontfamily{pbk}\fontsize{28pt}{28pt}\selectfont}
{\largeheadfont \textsc MyName}

LaTeX 已决定使用名为 的字体pbklc7t。我有两个文件:

/usr/share/texmf/fonts/tfm/adobe/bookman/pbklc7t.tfm
/usr/share/texmf/fonts/vf/adobe/bookman/pbklc7t.vf

但显然,这还不足以真正生成字体。

mktexpk: don't know how to create bitmap font for pbklc7t.

我检查了我的各种地图文件,没有找到任何关于的引用pbklc7t。我确实看到了以下引用

dvipdfm.map:  pbkd8r 8r ubkd8a
psfonts.map:  pbkd8r Bookman-Demi "TeXBase1Encoding ReEncodeFont" <8r.enc
pdftex.map:   pbkd8r URWBookmanL-DemiBold "TeXBase1Encoding ReEncodeFont" <8r.enc <ubkd8a.pfb

因此显然我缺少和/或找不到pbklc7t填充适当的地图文件以使用该字体所需的文件。

我的下一步是什么?我该在哪里找到我需要的文件pbklc7t,或者我如何让 LaTeX 使用我实际拥有的 pbk 字体之一?

编辑

根据@egreg 的建议,我得到了这个:

INPUT /usr/share/texmf/tex/latex/psnfss/ot1pbk.fd
INPUT /usr/share/texmf/fonts/tfm/adobe/bookman/pbkl7t.tfm
INPUT /usr/share/texmf/fonts/tfm/adobe/bookman/pbkl7t.tfm
INPUT /usr/share/texmf/fonts/tfm/adobe/bookman/pbklc7t.tfm
OUTPUT test.dvi
INPUT test.aux

我没有得到 .vf 文件或 .map 文件或 pbkl8r.tfm 文件中的所有额外行。

问题2

(此处已更新,因此部分评论可能已过时)

过去,我很喜欢一种叫做 的字体cmdunh10。所以我尝试了那个字体。

\usepackage[T1]{fontenc}
\newcommand*{\largeheadfont}{\fontfamily{cmdh}\fontsize{28pt}{28pt}\selectfont}
{\largeheadfont\textsc{MyName}}

我没有收到小写字母。我收到的是这些消息:

LaTeX Font Warning: Font shape `T1/cmdh/m/n' in size <28> not available
(Font)              size <29.86> substituted on input line 23.
LaTeX Font Warning: Font shape `T1/cmdh/m/sc' undefined
(Font)              using `T1/cmdh/m/n' instead on input line 23.
LaTeX Font Warning: Some font shapes were not available, defaults substituted.

在我看来,这Font shape 'T1/cmdh/m/sc' undefined意味着“没有可用的小写字母”。

此外,我以为 mktexpk 应该知道如何获取我的字体并生成我想要的大小,但我得到的却是 29.86 pt。为什么没有发生这种情况?

字体可能cmdh没有小型大写字母吗? 有什么方法可以确定字体是否有小型大写字母?

答案1

问题 1

如果我继续pdflatex

\documentclass{article}

\usepackage{bookman}
\newcommand*{\largeheadfont}{\fontfamily{pbk}\fontsize{28pt}{28pt}\selectfont}

\begin{document}

{\largeheadfont \textsc{MyName}}

\end{document}

使用该选项-recorder,系统会生成一个扩展名的文件.fls,其中包含以下信息:

INPUT /usr/local/texlive/2017/texmf-dist/tex/latex/psnfss/ot1pbk.fd
INPUT /usr/local/texlive/2017/texmf-dist/fonts/tfm/adobe/bookman/pbkl7t.tfm
INPUT /usr/local/texlive/2017/texmf-dist/fonts/tfm/adobe/bookman/pbkl7t.tfm
INPUT /usr/local/texlive/2017/texmf-dist/fonts/tfm/adobe/bookman/pbklc7t.tfm
INPUT /usr/local/texlive/2017/texmf-dist/fonts/vf/adobe/bookman/pbklc7t.vf
INPUT /usr/local/texlive/2017/texmf-dist/fonts/tfm/adobe/bookman/pbkl8r.tfm
INPUT /usr/local/texlive/2017/texmf-dist/fonts/tfm/adobe/bookman/pbkl8r.tfm
INPUT /usr/local/texlive/2017/texmf-var/fonts/map/pdftex/updmap/pdftex.map
INPUT /usr/local/texlive/2017/texmf-dist/fonts/vf/adobe/bookman/pbkl7t.vf
INPUT /usr/local/texlive/2017/texmf-dist/fonts/tfm/adobe/bookman/pbkl8r.tfm
INPUT /usr/local/texlive/2017/texmf-dist/fonts/enc/dvips/base/8r.enc
INPUT /usr/local/texlive/2017/texmf-dist/fonts/type1/urw/bookman/ubkl8a.pfb

我们怎样读它?

该文件ot1pbk.fd包含将 TeX 字体名称与文件关联的信息.tfm。具体来说,我们可以在其中找到

\DeclareFontShape{OT1}{pbk}{m}{sc}{<->ssub * pbk/l/sc}{}

它告诉 LaTeX,当系列中存在中等粗细的小型大写字体时pbk,应该用细细的小型大写字体替换它;反过来,这定义为

\DeclareFontShape{OT1}{pbk}{l}{sc}{
   <-> pbklc7t
}{}

OK,现在我们知道了\largeheadfont\textsc{MyName},TeX 会加载对应的字体pbklc7t.tfm

让我们回到文件。在显示文件已读入的.fls那一行之后,我们发现也已加载。是的,是一个.tfmpbklc7t.vfpbklc7t虚拟字体,由两个副本构建pbkl8r.tfm(它是一种假的小型大写字体,其中小写字母是缩放的大写字母)。

类似的行pbkl7t.tfm是因为页码而存在的,这里不需要关心。

应该pdftex.map包含一行pbkl8r,事实上,在我的计算机上有

pbkl8r URWBookmanL-Ligh " TeXBase1Encoding ReEncodeFont " <8r.enc <ubkl8a.pfb

对应于生成PDF文件的8r.enc(重新编码向量)和字体文件的输入。ubkl8a.pfb

如果你收到消息

mktexpk: don't know how to create bitmap font for pbklc7t.

那么你的 TeX 系统就有问题。安装满的从头开始的新 TeX Live 2017 可以提供帮助。

问题2

ot1cmdh.fd除了不相关的评论外,该文件还包含

\ProvidesFile{t1cmdh.fd}
        [2014/09/29 v2.5h Standard LaTeX font definitions]
\providecommand{\EC@family}[5]{%
  \DeclareFontShape{#1}{#2}{#3}{#4}%
  {<5><6><7><8><9><10><10.95><12><14.4>%
   <17.28><20.74><24.88><29.86><35.83>genb*#5}{}}
\DeclareFontFamily{T1}{cmdh}{}
\EC@family{T1}{cmdh}{m}{n}{ecdh}
\endinput

这意味着它只cmdh适用于固定大小、中等粗细和正常形状。请求 28pt 的字体将导致 29.86pt 的字体被替换。更重要的是,没有定义小写字母形状,因此当您请求它时,您将获得正常形状,这就是警告

LaTeX Font Warning: Font shape `T1/cmdh/m/sc' undefined
(Font)              using `T1/cmdh/m/n' instead on input line 23.

确切的意思是:你不能获取根本不存在的字体。

相关内容