通过包或 fontspec 加载字体

通过包或 fontspec 加载字体

在 Xe(La)TeX 中,通过其包(即 )加载字体和通过( )\usepackage{tgpagella}加载字体有什么区别。fontspec\fontspec{TeX Gyre Pagella}

使用软件包加载时,是否会使用 OTF 字体?由于软件包中包含 TFM,我想知道是否fontspec可以或不使用它们,或者是否fontspec构建自己的字体?在有软件包可用的情况下使用有什么缺点吗fontspec?在我看来,该软件包包含 TeX 特定的信息,如果我只是通过 加载它,这些信息可能会丢失(?)fontspec

答案1

许多 TrueType 和 OpenType 字体都已打包,主要是为了给使用 和 的用户提供latex一些使用和pdflatex的用户所享受的多样性。许多(如果不是全部的话)软件包都可以与和以及 一起使用,这对于那些尚未决定使用哪种引擎或计划与他人共享源文件但不知道他们使用哪种引擎的人来说很方便。对于没有时间或意愿阅读手册或研究字体功能的或用户来说,这也很方便——但我不认为很多人会属于这一类,因为 和 最明显的吸引力在于它们对字体的处理。xelatexlualatexxelatexlualatexlatexpdflatexxelatexlualatexfontspecxelatexlualatex

并非所有软件包都提供所有功能的选项。像 EB Garamond 这样的字体功能非常丰富,因此在这里进行充分讨论会太长,因此让我们考虑一种小巧且相对简单的字体 Quattrocento。据 报道,它的功能otfinfo包括:

aalt   Access All Alternates
frac   Fractions
kern   Kerning
liga   Standard Ligatures
ordn   Ordinals
salt   Stylistic Alternates
sups   Superscript

该软件包提供了几个选项,其中包括rm、、和缩放。没有使用上级的选项,如选项,但这可能是sf件好事,因为字体只有 1-3 的上级(如果不需要兼容,您可以加载,但要知道超过三个脚注会出现问题)。此外,没有使用样式替代的选项,这会影响 M、W 和 Q。sfdefaultfootnotefiguresMinionPropdflatexrealscripts

现在,无论如何都可以获得替代方案,如下所示:

\documentclass{article}
\usepackage{quattrocento}
\begin{document}
My Wee Quokka

\addfontfeatures{Style=Alternate}
My Wee Quokka
\end{document}

示例输出

这是可行的,因为当与或 一起使用时,quattrocento.styloads会起作用。(正如 cfr 指出的,并非所有软件包都这样做。)出于同样的原因,你也可以写fontspecxelatexlualatex\defaultfontfeatures{Style=Alternate} \usepackage{quattrocento},但由于它是在之后加载的,因此不会产生任何效果。

当然,\addfontfeatures{...}在文档中使用 意味着失去与其他引擎兼容的优势。至于软件包的另一个优势,即不必阅读手册fontspec和检查字体,如果您没有做过这些事情,您将不知道这些功能的存在以及您可以使用 获得它们\addfontfeatures{...}。就我个人而言,我宁愿阅读fontspec文档并检查我喜欢的字体,也不愿花时间阅读许多字体包的文档。

值得注意的是,有些软件包是基于 Google 的网络字体而非原始字体,而且网络字体是针对网络优化的,而不是针对打印优化的。例如,为了加快网络字体的下载速度,可能会删除部分或全部替代字体;在这种情况下,基于网络字体构建的软件包也会缺少替代字体。而且,有时网络字体会添加人工斜体或粗体字重,这对于网络来说还算不错,但对于打印来说就不够了。

即使打包者希望通过包选项提供 OpenType 字体的所有功能,某些功能可能难以实现或无法实现pdflatex。例如随机化;我不是程序员,但我无法想象在 中如何做到这一点pdflatex。如果打包者不想添加仅适用于某些引擎的选项,那么xelatex或的用户lualatex将错过该软件包可以完成的所有功能。

因此,如果您很着急并且碰巧记得包的名称但不记得fontspec调用,请使用包;但如果您使用xelatexlualatex并且关心字体,请fontspec在相信包具有与 相同的性能之前,仔细使用或检查字体和包fontspec

答案2

在最新的 TeXLive 2014 中,有一些支持所有引擎的字体包: xelatex、、和:lualatexpdflatexlatex

accanthis
Alegreya
cabin
cinzel
ClearSans
ebgaramond
FiraSans
gillius
gillius2
libertine
librebaskerville
librecaslon
LobsterTwo
merriweather
mintspirit
minspirit2
newtxmath
quattrocento
sourcecodepro
sourcesanspro

相关内容