Fontspec - 自定义字体形状功能

Fontspec - 自定义字体形状功能

我希望能够添加(或删除)字体形状的功能。

我已经阅读了fontspec包装手册的第三章第 3 章,标题为不同字体形状具有不同的特征。因此可以使用BoldFeaturesItalicFeatures等等,这解决了我的这些字体形状的问题。

但是,如果我定义了自定义字体形状怎么办?例如,我创建了一个半粗体字体;我该如何定义类似SemiboldFeatures或 的内容SemiboldItalicFeatures

例如寻找的定义ItalicFeatures并没有多大帮助......

\@@_keys_define_code:nnn {fontspec-preparse} {ItalicFeatures}
  {
    \clist_put_right:Nn \l_@@_fontfeat_it_clist {#1}
  }

例子:

\documentclass{article}

\usepackage{fontspec}
\setmainfont{LibertinusSerif}[FontFace={sb}{n}{Font=*-Semibold}, FontFace={sb}{it}{Font=*-SemiboldItalic}]

\begin{document}
firefly \textit{firefly}\quad 
{\addfontfeatures{ItalicFeatures={Ligatures=CommonOff}} firefly \textit{firefly}}

firefly {\fontseries{sb}\fontshape{it}\selectfont firefly}\quad 
{\addfontfeatures{SemiboldItalicFeatures={Ligatures=CommonOff}} firefly {\fontseries{sb}\fontshape{it}\selectfont firefly}}
\end{document}

事实上,我需要这样的功能,因为我想在某些特定于字体的半粗体变体的上下文中应用字距调整。

不过,我认为它在其他环境和其他字体(例如具有多种变体的 Arial)中也会很有用。

答案1

我不认为

\addfontfeatures{ItalicFeatures={Ligatures=CommonOff}

作品。

无论如何,您可以在声明以下内容后指定您想要的功能Font

\documentclass{article}

\usepackage{fontspec}
\setmainfont{LibertinusSerif}[
  UprightFont=*-Regular,
  ItalicFont=*-Italic,
  BoldFont=*-Bold,
  BoldItalicFont=*-BoldItalic,
  FontFace={sb}{n}{Font=*-Semibold,Ligatures=CommonOff},
  FontFace={sb}{it}{Font=*-SemiboldItalic,Ligatures=CommonOff},
]

\begin{document}

With ligatures

firefly \textit{firefly}

Without ligatures

{\addfontfeatures{Ligatures=CommonOff} firefly \textit{firefly}}

Without ligatures

{\fontseries{sb}\fontshape{n}\selectfont firefly}

{\fontseries{sb}\fontshape{it}\selectfont firefly}

\end{document}

在此处输入图片描述

相关内容