如何使用 fontspec 和 XeLaTeX 从字体系列中选择特定粗细

如何使用 fontspec 和 XeLaTeX 从字体系列中选择特定粗细

我已经在我的操作系统上安装了一种开放类型字体,并且想使用 XeLaTeX 在 LaTeX 文档中使用它。

它工作正常,但是当我像这样定义字体系列时:

\ifxetex
  \newfontfamily{\neosans}{NeoSans} 
\else
\fi

当我使用\selectfont\neosans它时,只需选择该字体的常规版本。但是,我想使用浅色版本!

就算我写\newfontfamily{\neosans}{NeoSans-Light}\newfontfamily{\neosans}{NeoSans Light}还是选择Regular版本。

我想要使​​用的字体规格如下(不过是丹麦语):

图片链接

我的问题是

如何使用浅色版字体?

答案1

我没有 NeoSans,但尝试了另一种字体:

\documentclass{article}
\usepackage{fontspec}
\newfontfamily{\os}{Open Sans}
\newfontfamily{\osl}[UprightFont={* Light}]{Open Sans}
\begin{document}
{Normal: \os Open Sans\par}
{Light: \osl Open Sans Light\par}
\end{document}

你看第二行确实选择了浅色版本。

在此处输入图片描述

请注意,这\selectfont不是必需的(并且不执行任何操作)。

在您的情况下,您可能还想更改斜体和粗体版本:

\newfontfamily{\neosans}
  [Ligatures=TeX, % recommended
   UprightFont={* Light},
   ItalicFont={* Light Italic},
   BoldFont={* Medium},
   BoldItalicFont={* Medium Italic}]
  {NeoSans}

如果您希望将 NeoSans 用作标准无衬线字体,则不要这样\newfontfamily{\neosans}\setsansfont

\setsansfont
  [Ligatures=TeX, % recommended
   UprightFont={* Light},
   ItalicFont={* Light Italic},
   BoldFont={* Medium},
   BoldItalicFont={* Medium Italic}]
  {NeoSans}

答案2

许多人会建议不要在同一文档中混合使用同一种字体的多种粗细,但 LaTeX 确实为 Light(){l}以及{el}{ul}{sb}和标准化了字体系列名称。{eb}{ub}

因此,这个替代方案可能(我还没有测试过)让屏幕截图中的所有样式都作为同一系列的一部分。

\newfontfamily\neosans{NeoSans}[
  % Ligatures = ..., etc.
  UprightFont = *-Regular ,
  ItalicFont = *-Italic ,
  BoldFont = *-Bold ,
  BoldItalicFont = *-BoldItalic ,
  FontFace = {l}{n}{*-Light},
  FontFace = {l}{it}{*-LightItalic},
  FontFace = {sb}{n}{*-Medium},
  FontFace = {sb}{it}{*-MediumItalic},
  FontFace = {eb}{n}{*-Black},
  FontFace = {eb}{it}{*-BlackItalic},
  Extention = .otf ]

这假定您正在加载的具有 PostScript 轮廓的字体fontspec具有*.otf扩展名。

选择除常规或粗体之外的粗细的标准 LaTeX 命令是,例如为了方便\fontseries{eb}\selectfont和与其他一些软件包的兼容性,您可以定义如下命令:

\DeclareRobustCommand{\sbseries}{\fontseries{sb}\selectfont}
\DeclareTextFontCommand{\textsb}{\sbseries}
\DeclareRobustCommand{\ebseries}{\fontseries{eb}\selectfont}
\DeclareTextFontCommand{\texteb}{\ebseries}
\DeclareRobustCommand{\ltseries}{\fontseries{l}\selectfont}
\DeclareTextFontCommand{\textlt}{\ltseries}

\ltseries这使得您可以按照自己的意愿\bfseries\texteb{foo}意愿进行书写\textmd{foo}

相关内容