Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

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.

enter image description here

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.

share|improve this question
1  
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
add comment

1 Answer 1

up vote 14 down vote accepted

The character in question is U+27C2, which doesn't exist in Cambria Math. In this case you should use \mathrel\bot instead (the \mathrel is necessary to get the spacing right).

As a long-term solution we should implement fall-back characters in unicode-math. U+27C2 is intended for the perpendicular relation as indicated by Unicode; MathML, on the other hand, suggests to use U+22A5 for that purpose. Currently \perp is hard-wired to map to U+27C2, and \bot maps to U+22A5. The correct solution would be to have \perp map to U+22A5 if U+27C2 is not available. I'll add that to the issue tracker, but I have no time to look after it during the next couple of weeks.

share|improve this answer
    
May I remind this your promise. \perp is not printed still altough I am using the most recent version of miktex. –  Igor Kotelnikov Jan 7 '13 at 9:03
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.