如何让 fontspec 智能地使用非系统字体变体?

如何让 fontspec 智能地使用非系统字体变体?

我想将字体包含在/include/fonts/文档旁边的目录中foo.tex,这样我就不必将字体安装到系统中。我可以成功使用它来实现这一点:

\setmainfont[
  Path=include/fonts/,
  UprightFont=*,
  BoldFont=*-Italic,
  ItalicFont=*-Italic,
  BoldItalicFont=*-Italic
]{OFLGoudyStM}

但是,手动指定所有变体非常麻烦,而fontspec使用字体名称(而不是字体文件名)内置了智能功能来执行此操作。有没有办法兼顾两全其美:能够将字体保存在相对于文件的目录中.tex,但让 fontspec 自动找出所有变体?

因此,实际上,在完美的世界中,我只希望能够使用以下内容,并让 fontspec 找到自己的所有变体(请注意,我在这里使用字体名称,而不是文件名):

\setmainfont[
  Path=include/fonts/
]{OFL Sorts Mill Goudy}

以下是一个完整的例子(仅供参考):

\documentclass{article}
\usepackage{fontspec}
\begin{document}
% This works only if the font file is named OFLGoudyStM.otf
% and in the current path. Contrary to docs, TEXINPUTS is not searched.
% Also, the different variants like italic can no longer be automatically
% inferred and need to be explicitly specified
% \setmainfont[
%   ExternalLocation,
% ]{OFLGoudyStM}
% This will find the system font
\setmainfont{OFL Sorts Mill Goudy}

\newfontfamily\headingFont[
  Path=include/fonts/,
  Extension=.ttf,
  UprightFont=*-Lig,
  BoldFont=*-Lig,
  ItalicFont=*-LigIta,
  BoldItalicFont=*-LigIta
]{Lato}

\LARGE{This is some \textit{text.}}
\end{document}

相关内容