好的,我已经掌握了 fontspec,我可以说
\setromanfont[Mapping=tex-text,Ligatures=Common,Numbers=OldStyle]{Sabon LT Std}
事实上,为了达到效果,我可以这样说
\newfontfamily{\ultrablack}[UprightFont={Syntax LT Std Ultra Black}]{Syntax LT Std}
瞧!我可以相对轻松地在字体和粗细之间切换。相对而言。
但说我希望能够做正确的 nfss 事情:
\fontfamily{pxt}\fontseries{c}\fontshape{n}\fontsize{12pt}{14.4pt}\selectfont
确实有选择器可以指定UprightFont
、Bold
和BoldItalic
,Italic
但不能指定SemiBold
、UltraBlack
或Light Condensed
。除非我遗漏了什么。
欢迎任何指点或建议。
谢谢。
答案1
如果您想设置一个具有比使用 fontspec 的标准选项更多的形状/粗细的系列,我认为最好编写合适的 .fd 文件。您可以在 euenc 包中找到示例(针对 lmr/lmss/lmtt 系列)。对于 xelatex,您应该编写 eu1XXX.fd 文件。eu2 适用于 lualatex。–
编辑2017
fontspec
现在可以选择FontFace
添加更多形状和重量,因此不再需要 .fd 文件。
但是如果有人想这样做:在当前的 texsystems 中,lualatex 和 xelatex 的标准编码名称现在是 TU,所以应该写 TUxxx.fd-files。
答案2
Ulrike Fischer 的回答很好,但我举一个例子EB Garamond 的 GitHub 版本。
\newfontfamily\ebgaramond{EBGaramond}[
UprightFont = *-Regular ,
ItalicFont = *-Italic ,
BoldFont = *-Bold ,
ItalicFont = *-Italic ,
FontFace = {mb}{n}{*-Medium},
FontFace = {mb}{it}{*-MediumItalic},
FontFace = {sb}{n}{*-SemiBold},
FontFace = {sb}{it}{*-SemiBoldItalic},
FontFace = {eb}{n}{*-ExtraBold},
FontFace = {eb}{it}{*-ExtraBoldItalic},
Extension = .otf ]
字体系列的缩写,如sb
和eb
,取自LaTeX 字体安装指南。请注意,mb
和db
在许多其他列表中均不存在(例如LaTeX 伴侣)。Medium ( {mb}
) 介于 Regular 和 Semibold 之间,Demibold ( {db}
) 介于 Semibold 和 Bold 之间。如果 Regular 和 Bold 之间只有一种粗细,我建议将其设置为{sb}
,例如 Computer Modern Demi 就是这样的。
您可能还会发现定义如下命令很方便:
\DeclareRobustCommand\sbseries{\fontseries{sb}\selectfont}
\DeclareTextFontCommand{\textsb}{\sbseries}
这声明\textsb{...}
和\sbseries
命令类似于\textbf{}
和\bfseries
。