使用 unicode-math 将 otf 字体加载为 mathfont 范围

使用 unicode-math 将 otf 字体加载为 mathfont 范围

我正在尝试替换数学字体中的字母,使其与主字体匹配。奇怪的是,这适用于斜体版本,但不适用于粗体和罗马字体。这是为什么?

\documentclass{article}

\usepackage{unicode-math}

\defaultfontfeatures{Extension = .otf}
\setmainfont[ItalicFont = *-Italic, 
             BoldFont = *-Bold]{BemboStd}
\setmathfont{latinmodern-math}
\setmathfont[range=\mathrm]{BemboStd}
\setmathfont[range=\mathit]{BemboStd-Italic}
\setmathfont[range=\mathbf]{BemboStd-Bold}

\begin{document}

\noindent
abc \textit{abc} \textbf{abc} \\
$ \mathrm{abc} \ abc \ \mathbf{abc} $

\end{document}

在此处输入图片描述

编辑:为了可能对下一个人有帮助,我现在正在使用

\setmathfont[range=\mathup/{latin,Latin}]{BemboStd}
\setmathfont[range=\mathit/{latin,Latin}]{BemboStd-Italic}
\setmathfont[range=\mathbfup/{latin,Latin}]{BemboStd-Bold}

仅替换普通字母,而保留所有希腊字母和\partial字形。

答案1

\mathrm\mathup和代替\mathbf\mathbfup作品:

\documentclass{article}

\usepackage{unicode-math}

\defaultfontfeatures{Extension = .otf}
\setmainfont[ItalicFont = *-Italic,
             BoldFont = *-Bold]{BemboStd}
\setmathfont{latinmodern-math}
\setmathfont[range=\mathup]{BemboStd}
\setmathfont[range=\mathit]{BemboStd-Italic}
\setmathfont[range=\mathbfup]{BemboStd-Bold}

\begin{document}

\noindent
abc \textit{abc} \textbf{abc} \\
$ \mathrm{abc} \ abc \ \mathbf{abc} $

\end{document} 

在此处输入图片描述

unicode-math您可以在下表(文档第 9 页)中找到为什么此方法有效而您的解决方案无效的原因

在此处输入图片描述

正如您所见\mathrm\mathbf字母表在 Unicode 中没有定义。

相关内容