使用 fontspec 替换 siunitx 中文本字体中缺失的字符(减号)

使用 fontspec 替换 siunitx 中文本字体中缺失的字符(减号)

我被迫使用商业广告(尤尼韦尔斯) 字体在我的演示文稿中,显然不包含专用的\minus符号,它被称为。(虽然我不确定它是\minus还是别的什么。)所以如果我输入

\SI{-1984}{m^{-42}}

我没有看到任何减号。不幸的是,我没有找到任何具有相同行为的免费字体。但我希望你明白我的意思。

我怎样才能包括缺失的减号从另一种字体到我的文本字体正常工作?


以下是 MWE:

\documentclass{beamer}

\usefonttheme{professionalfonts}
\usepackage{siunitx}
\usepackage{fontspec}
\usepackage{unicode-math}

\setmainfont{Univers 45 Light} 
\setmathfont{XITS Math}

\setbeamerfont{normal text}{family=\rmfamily,series=\normalfont}

\AtBeginDocument{
\usebeamerfont{normal text}
\sisetup{detect-all}
\sisetup{math-rm=\mathrm, text-rm=\rmfamily}
\sisetup{per-mode=fraction,fraction-function=\sfrac}
}

\begin{document}

\begin{frame}
The dash - is working. But the minus sign in \alert{siunitx} (e.g. \SI{-1984}{m^{-42}}) isn't, apart from when it is used in math-mode (e.g. $\SI{-1984}{m^{-42}}$). But in text I'd like to use my text font.
\end{frame}

\end{document}

给我输出:

在此处输入图片描述

使用其他字体时我没有遇到这个问题。


我尝试了各种方法,前两种方法出现了语法错误:

\setmainfont[\minus="2212]{XITS Math}

或者像我习惯使用的数学字体那样:

\setmainfont[range={="2212}]{XITS Math}

我也找到了这个代码,

\newunicodechar{"2212}{{\fontspec{XITS Math}"2212}}
\newunicodechar{\minus}{{\fontspec{XITS Math}\minus}}
\newunicodechar{-}{{\fontspec{XITS Math}-}}

他们都没有工作。

还有其他建议吗?


我使用的字体确实包含该字符\char"2013,但它不包含\char"2212,但在我看来,这是由当输入减号时。

egreg 的建议

\usepackage{newunicodechar}
\newunicodechar{^^^^2212}{\char"2013}

为单位工作

\SI{-1984}{m^{^^^^2212 42}}) 

但对于数字则不行,因为^^^^2212它是一个无效的数字字符。

相关内容