偶尔我注意到Cambria Math
字体或unicode-math
软件包中数学符号的定义可能存在错误\perp
。附图显示\perp
打印不正确\bot
。
该测试由以下代码生成。
\documentclass{article}
\usepackage{ifpdf,ifxetex}
\ifpdf
\usepackage[utf8]{inputenc} % source file encoding
\usepackage[T1]{fontenc} % cyrillic font encoding
\fi
\ifxetex
\usepackage{fontspec}
%\defaultfontfeatures{Mapping=tex-text}
\setmainfont{Cambria}
\usepackage[math-style=TeX]{unicode-math}
\setmathfont{Cambria Math}
\fi
\begin{document}%
\[
p_{\perp}
,\qquad
\vec{A} \perp \vec{B}
\]
\[
p_{\bot}
,\qquad
\vec{A} \bot \vec{B}
\]
\end{document}
日志文件中报告了缺失的字符:
Missing character: There is no вџ‚ in font Cambria Math/ICU:script=math;languag
e=DFLT;+ssty=0;!
Missing character: There is no вџ‚ in font Cambria Math/ICU:script=math;languag
e=DFLT;!
[1]
可以有条件地使用 和 编译同一个文件xelatex
,pdflatex
只是为了检查标准字体是否使用相同的字形来打印 和\bot
。\perp
所以,我猜这个错误可能存在于unicode-math
包中。有人能检查一下这个猜测是否正确吗?
我也很感激任何关于如何重新定义\perp
命令以使其在字体/包开发人员纠正问题之前工作一段时间的建议。
答案1
有问题的字符是 U+27C2,这在 Cambria Math 中不存在。在这种情况下,您应该使用\mathrel\bot
(这\mathrel
是获得正确间距所必需的)。
作为长期解决方案,我们应该在 中实现后备字符unicode-math
。U+27C2 用于 Unicode 所指示的垂直关系;另一方面,MathML 建议为此目的使用 U+22A5。目前\perp
硬连线为映射到 U+27C2,并\bot
映射到 U+22A5。正确的解决方案是\perp
如果 U+27C2 不可用,则映射到 U+22A5。我会将其添加到问题跟踪器中,但在接下来的几周内我没有时间处理它。