4

When I scale up a math font using the unicode-math package, the placement of the superscript is too low. How can I globally adjust the placement of superscripts for this scaled math font?

\documentclass{article}

\usepackage{unicode-math}
\setmathfont[Scale=1]{latinmodern-math.otf}

\begin{document}

\[ \nu_e + \beta^+\]
\setmathfont[Scale=2.8]{latinmodern-math.otf}
\[ \nu_e + \beta^+\]

\end{document}
3
  • 1
    The placement is low in luatex but raised as expected in xetex Commented Mar 10, 2015 at 10:36
  • It doesn't matter whether you scale the font inside the document or load it scaled to begin with.
    – egreg
    Commented Mar 10, 2015 at 11:59
  • 1
    Issue raised: github.com/wspr/unicode-math/issues/287
    – egreg
    Commented Mar 10, 2015 at 16:20

1 Answer 1

4

It's a bug in unicode-math-luatex: if you try

\documentclass{article}

\usepackage{unicode-math}
\setmathfont[Scale=2.8]{latinmodern-math.otf}

\begin{document}

\[\nu_e + \beta^+\]

\end{document}

you get

LuaTeX output

with LuaLaTeX, while you get the expected

XeTeX output

with XeLaTeX.

If I add \showthe\Umathsupshiftup\displaystyle in the formula, I get 3.62994pt with LuaLaTeX and \showthe\fontdimen13\textfont2 gives 3.63pt with XeLaTeX.

When I use \showlists, the box where the superscript is typeset is

.\hbox(11.42676+1.6268)x15.80873, shifted -3.62994, direction TLT
..\EU2/latinmodern-math.otf(0)/m/n/6.99997 +

with LuaLaTeX, while it is

.\hbox(11.42676+1.6268)x15.74875, shifted -10.16402
..\EU1/latinmodern-math.otf(0)/m/n/6.99997 glyph#12

with XeLaTeX. Since

10.16402/2.8 = 3.63001

the conclusion is that LuaLaTeX doesn't apply the scaling to the math font parameters,

Notice that this seems restricted to superscripts, because the box with the subscript is

.\hbox(8.66316+0.2156)x13.82913, shifted 5.22322, direction TLT
..\EU2/latinmodern-math.otf(0)/m/n/6.99997 𝑒

in LuaLaTeX and

.\hbox(8.66316+0.2156)x13.76915, shifted 6.916
..\EU1/latinmodern-math.otf(0)/m/n/6.99997 glyph#1354

with XeLaTeX; still a difference, but much less noticeable (XeLaTeX seems wrong in this respect, because it seems to assume the presence of a superscript; the placement is the same if \nu^{}_e is used).

It doesn't seem to depend on the font, because the same problem shows with XITS Math or Asana Math.

If I use

\documentclass{article}

\usepackage{unicode-math}
\setmathfont[Scale=2.8]{latinmodern-math.otf}

\makeatletter
\AtBeginDocument{%
  \check@mathfonts
  \Umathsupshiftup\displaystyle=10.16402pt                                  
}


\begin{document}

\[
\nu_e + \beta^+_{}
\]

\end{document}

the output is correct

enter image description here

Of course this is just a hack.

8
  • isn't that more of a comment than an answer? (at least, it's same as my comment:-) Commented Mar 10, 2015 at 11:54
  • @DavidCarlisle Trying to make a sense out of the parameters
    – egreg
    Commented Mar 10, 2015 at 11:56
  • Nice @egreg. One question: what does the command \check@mathfonts do? Commented Mar 10, 2015 at 16:11
  • 1
    @StevenGardiner It ensures the assignments of fonts to math groups is up-to-date with the current font size.
    – egreg
    Commented Mar 10, 2015 at 16:14
  • As of unicode-math v0.8m, the output is wrong with XeTeX, too. Commented Jan 21, 2019 at 17:35

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .