使用 fontspec 最小化所需的前导码

使用 fontspec 最小化所需的前导码

我使用 xetex 和 fontspec 来处理这样的自定义字体:

\usepackage{fontspec}

\setmainfont{AGaramondPro}[Path = fonts/garamond/,%
  BoldFont = *-Bold.otf,
  BoldItalicFont = *-BoldItalic.otf,
  ItalicFont = *-Italic.otf,
  UprightFont = *-Regular.otf,
  RawFeature={%
    +onum  % odd style figures
}]
\newfontfamily{\special}[Path = fonts/garamond/,%
  BoldFont = *-Bold.otf,
  BoldItalicFont = *-BoldItalic.otf,
  ItalicFont = *-Italic.otf,
  UprightFont = *-Regular.otf,
  RawFeature={+c2sc,+scmp}]{AGaramondPro}

我一直问自己是否可以将它干燥,所以我只定义一次字体。

上面的字体只是一个例子。我还有其他字体,我想为所有实例启用/禁用某些 RawFeatures,而无需到处复制粘贴...

所以目标是我可以做类似的事情

lorem {\ttfamily ipsum \special{dolor} amet} 

然后dolor设置为 Garamond 小写字母,而不是单声道。

答案1

您可以将重复的代码移动到一个文件中,GaramondPro.fontspec然后多次加载并进行修改。文档给出了示例包含My Charis.fontspec以下行:

\defaultfontfeatures[My Charis]
{
  Extension = .ttf ,
  UprightFont = CharisSILR,
  BoldFont = CharisSILB,
  ItalicFont = CharisSILI,
  BoldItalicFont = CharisSILBI,
  % <any other desired options>
}

相关内容