我希望从文件中导入一个字体系列,该系列有超浅、浅、常规、中等、粗体和黑色。如果我能以某种方式定义一个系列,然后在使用不同粗细时进行属性设置,而不是定义几个不同的字体名称并根据需要进行选择,那就太好了。这可能吗?我正在使用 xelatex 和 fontspec。有没有可以替代 fontspec 的简单解决方案?
答案1
的手册fontspec
提到了关键FontFace
。因此,我们假设您的字体是
BestFont-ExtraLight.otf
BestFont-ExtraLightItalic.otf
BestFont-Light.otf
BestFont-LightItalic.otf
BestFont-Regular.otf
BestFont-Italic.otf
BestFont-Medium.otf
BestFont-MediumItalic.otf
BestFont-Bold.otf
BestFont-BoldItalic.otf
BestFont-Black.otf
BestFont-BlackItalic.otf
然后你应该能够提供字体定义
\setmainfont{BestFont}[
Extension=.otf,
UprightFont=*-Regular,
ItalicFont=*-Italic,
BoldFont=*-Bold,
BoldItalicFont=*-BoldItalic,
FontFace={xl}{n}{*-ExtraLight},
FontFace={xl}{it}{*-ExtraLightItalic},
FontFace={l}{n}{*-Light},
FontFace={l}{it}{*-LightItalic},
FontFace={mb}{n}{*-Medium},
FontFace={mb}{it}{*-MediumItalic},
FontFace={k}{n}{*-Black},
FontFace={k}{it}{*-BlackItalic},
]
现实世界的例子:
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Raleway}[
Extension=.otf,
UprightFont=*-Regular,
ItalicFont=*-Regular-Italic,
BoldFont=*-Bold,
BoldItalicFont=*-Bold-Italic,
FontFace={xl}{n}{*-ExtraLight},
FontFace={xl}{it}{*-ExtraLight-Italic},
FontFace={l}{n}{*-Light},
FontFace={l}{it}{*-Light-Italic},
FontFace={mb}{n}{*-Medium},
FontFace={mb}{it}{*-Medium-Italic},
FontFace={k}{n}{*-Black},
FontFace={k}{it}{*-Black-Italic},
]
\begin{document}
\newcommand{\test}[2]{%
#1: {\fontseries{#2}\selectfont This is upright. \itshape This is italic}\par
}
\test{ExtraLight}{xl}
\test{Light}{l}
\test{Regular}{m}
\test{Medium}{mb}
\test{Bold}{bx}
\test{Black}{k}
\end{document}
现在你也可以自己定义字体切换命令:
\DeclareRobustCommand\xlseries{\fontseries{xl}\selectfont}
\DeclareTextFontCommand{\textxl}{\xlseries}
\DeclareRobustCommand\lseries{\fontseries{l}\selectfont}
\DeclareTextFontCommand{\textl}{\lseries}
\DeclareRobustCommand\mbseries{\fontseries{mb}\selectfont}
\DeclareTextFontCommand{\textmb}{\mbseries}
\DeclareRobustCommand\kseries{\fontseries{k}\selectfont}
\DeclareTextFontCommand{\textk}{\kseries}