定义字体的子系列

定义字体的子系列

我希望从文件中导入一个字体系列,该系列有超浅、浅、常规、中等、粗体和黑色。如果我能以某种方式定义一个系列,然后在使用不同粗细时进行属性设置,而不是定义几个不同的字体名称并根据需要进行选择,那就太好了。这可能吗?我正在使用 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}

相关内容