# XeLaTeX: lost \perp in Cambria math?

Occasionally I noted that Cambria Math fonts or the unicode-math package might have wrong definition of \perp math symbol. Attached picture shows that \perp is not printed properly while \bot is.

This test is produced by the following code.

\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}

The missing character is reported in the log file:

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]

This same file can be conditionally compiled with both xelatex and pdflatex just to check that standard fonts use same glyph to print both \bot and \perp. So, I guess that error may reside in the unicode-math package. Could somebody check is this guess correct?

I would also appreciate any advice how to redefine the \perp command to make it working for a while before the problem will be corrected by the font/package developers.

• BTW, \ifpdf is misused here since it does not check for pdftex but rather for \pdfoutput value so it will be true with luatex and false with pdftex/luatex in dvi mode, which is not really what you want. So \ifxetex ... \else ... \fi is more appropriate in this case (you may also check for luatex if you want to support it too). – Khaled Hosny Mar 7 '11 at 20:59