为什么我喜欢的字体选择会以这种方式覆盖 CM?

为什么我喜欢的字体选择会以这种方式覆盖 CM?

偶尔,我会尝试一些非常规的字体选择。我偶尔才这么做,这意味着我对这些机制非常不了解。今天我想起我对此不了解的另一个原因:主要资源提供的文档不太一致。

在查找书法字体时LaTeX 字体目录,我很高兴地发现龙虾二,它是 TeXLive 发行版的一部分,看起来是一款非常适合少量使用的字体。以下是 LaTeX 字体目录对其用法的说明:

用法

\usepackage{LobsterTwo}
\usepackage[T1]{fontenc}

样式示例

\LobsterTwo

LobserTwo 字体的示例文本

这强烈暗示我 LobsterTwo 不会将自己设为主要字体选择,并且\LobsterTwo可以使用宏(\sffamily我想是的)。但是,当我在一个简单的文档中尝试它时,行为并不像我所期望的那样:

\documentclass{article}
\usepackage{LobsterTwo}
\usepackage[T1]{fontenc}
\begin{document}

{\LobsterTwo Yay, a new font!}

Hey, wait, \underline{this} isn't Computer Modern \ldots

\end{document}

对我来说,最小示例的输出令人惊讶

我不总是在尝试新字体时会出现这种行为,事实上,我怀疑当我过去遇到这种行为时,我干脆放弃尝试使用有问题的字体。所以这可能是一个问题,即了解使用已包含在 TeX 发行版中的字体的正确工作流程是什么。

当然,我可以立即添加一些代码,\begin{document}强制将字体选择为 Computer Modern。但是,这必须在我选择使用的文档中进行修改,例如 Palatino 或 Times。(当然,这些字体的软件包的行为方式与 LobsterTwo 相同,因此在这些情况下,我可以在 LobsterTwo 之后简单地加载软件包 — 但在这种情况下,我还必须删除代码以恢复 CM,这使得这些更改不那么本地化。)

简而言之,我知道如果我想使用 LobsterTwo(或类似的字体),我可以恢复 CM有时,但希望 CM 成为默认字体。但当我想使用不同的默认字体时,这有点麻烦,而且需要非本地维护。如果我能从一开始就阻止 LobsterTwo 成为默认字体,或者在之后立即撤消它,那就更好了。

当然现在有一个工作流程可以优雅地完成此操作。但它是什么呢?

答案1

这完全取决于包,与任何包一样,无论是否与字体相关,它定义的命令都具有很大的灵活性。

看看LobsterTwo.sty最后几行

  \def\LobsterTwofamily{Lbstr-LF}
  \renewcommand*\rmdefault{\LobsterTwofamily}
  \newcommand*\LobsterTwo{\fontfamily{\LobsterTwofamily}\selectfont}

因此它定义了一个 NFSS 家族Lbstr-LF,可以像cmr表示 Computer Modern Roman 的家族一样使用。

然后它还将该字体系列设为默认的罗马字体并定义\LobsterTwo切换回该字体系列的命令。

\let\oldrmdefault\rmdefault
\usepackage{LobsterTwo}
\let\rmdefault\oldrmdefault

可能是您想要的,因为该包似乎没有不重新定义默认值的选项。

答案2

我个人建议您在可以的情况下在 LuaTeX 中使用现代字体,在必须的情况下在 PDFTeX 中使用传统的 8 位字体。 Lobster Two 是 OpenType 字体的转换。

如果你下载并运行

\usepackage{fontspec}
\newfontfamily{LobsterTwo}[
  Scale = MatchUppercase ,
  Ligatures = Common ,
  UprightFont = *-Regular ,
  ItalicFont = *-Italic ,
  BoldFont = *-Bold ,
  BoldItalicFont = *-BoldItalic ,
  Extension = .otf ]

您不会遇到这个问题,并且还会获得它的所有连字符。

您还可以在该字体包之后加载另一个字体包,并覆盖其字体设置。

相关内容