我正在尝试替换数学字体中的字母,使其与主字体匹配。奇怪的是,这适用于斜体版本,但不适用于粗体和罗马字体。这是为什么?
\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 中没有定义。