使用数学模式的花哨字体,缺少符号时则返回 XITS

使用数学模式的花哨字体,缺少符号时则返回 XITS

我在环境中使用了一种傻乎乎的字体,因此里面的文本看起来与周围的文本截然不同。但是,我很难让数学模式看起来很傻,但又清晰易读。

\documentclass{minimal}
\usepackage{fontspec}
\usepackage{unicode-math}
\setmathfont{XITS Math}
\begin{document}
Normal text. $abc$.
\begingroup
\fontspec{Handwriting - Dakota}%
\setmathfont{Handwriting - Dakota}%
Silly text $abc$ or even just  $2 - 4 + \frac{2}{3} + x^2$
\endgroup
Normal text. $10-8=2$.
\end{document}

但是,$abc$没有显示,可能是因为字体没有unicode-math要求的特殊脚本。我只想使用相当普通的字符,不需要 unicode 输入。另一方面,mathspec我认为该包只允许一种字体,所以我必须在整个文档中进行愚蠢的数学运算。

我认为有些字体甚至更稀疏。它们有连字符,但$10-8$没有减号,大概是因为字体缺少这样的符号。

是否有某种方法可以使用愚蠢的字体来显示字母和数字(在这个环境中),但对于任何缺失的符号则恢复为“真实”字体?

答案1

使用range选项;\mathit作为变量、\mathup数字(当然还有其他直立符号):

\documentclass{minimal}
\usepackage{fontspec}
\usepackage{unicode-math}
\setmathfont{XITS Math}
\begin{document}
Normal text. $abc$.
\begingroup
\fontspec{Handwriting - Dakota}%
\setmathfont[range={\mathit,\mathup}]{Handwriting - Dakota}%
Silly text $abc$ or even just  $2 - 4 + \frac{2}{3} + x^2$
\endgroup
Normal text. $10-8=2$.
\end{document}

您甚至可以通过添加例如从中挤出更多的符号:

\setmathfont[range={`\+,`\<,`\>,`\=,`\{,`\},`\|,`\(,`\)}]{Handwriting - Dakota}

相关内容