Fontspec:当字形缺失时,返回使用其他字体

Fontspec:当字形缺失时,返回使用其他字体

当主字体缺少一些字形时,是否可以告诉 fontspec 回退到另一种字体?在下面的示例中,TeX Gyre Termes 缺少 SUBSCRIPT ONE 字形(尽管日志文件中似乎没有任何警告!),我想告诉 luatex 使用另一种字体(例如 Libertine)的字形。

\documentclass{article}
\usepackage{fontspec}
\setmainfont{TeX Gyre Termes}
\begin{document}
onesub₁ onesup¹
\end{document}

(我意识到在这种情况下我可以使用数学下标,但我的内容是从书目数据库中提取的,不应该使用特定于 TeX 的编码。)

答案1

日志文件显示一条警告:

Missing character: There is no ₁ (U+2081) in font TeXGyreTermes:mode=node;script=latn;language=DFLT;+tlig;!

您可以为下标数字定义一个动作:

\documentclass{article}
\usepackage{fontspec}
\usepackage{newunicodechar}
\setmainfont{TeX Gyre Termes}
\newfontfamily{\fallback}{Libertinus Serif}

\newunicodechar{₁}{%
  {\iffontchar\font`₁ \else\fallback\fi₁}%
}

\begin{document}

onesub₁ onesup¹

\end{document}

在此处输入图片描述

或者,使用\textsubscript

\documentclass{article}
\usepackage{fontspec}
\usepackage{newunicodechar}
\setmainfont{TeX Gyre Termes}

\newunicodechar{₁}{%
  {\iffontchar\font`₁ ₁\else\textsubscript{1}\fi}%
}

\begin{document}

onesub₁ onesup¹

\end{document}

在此处输入图片描述

相关内容