On 10/10/2016 3:35 pm, Antonis Tsolomitis wrote:

2. Run xelatex on my example (set at 12pt). You will see in the output
that the exponent is smaller than the
    base, although we have instructed in the Math table the engine/font
to upscale the exponents to 120%

3. Now modify my attached file by removing the 12pt in the documentclass
options.
    Re run xelatex. You will see that now the exponent scales properly
and it is larger that the base.

Could be a bug in the unicode-math package. I just do not know.


I'm pretty sure this is a bug in unicode-math (or more specifically, perhaps, a failure of its interaction with the document class options). There's code in unicode-math that is supposed to calculate the script and scriptscript sizes using the percentages specified in the font (exposed in xetex through \fontdimen10 and \fontdimen11 when an opentype math font is loaded). But apparently when a non-10pt option is passed to the document class, this is overriding unicode-math's computation and loading the script and scriptscript fonts at default sizes provided from somewhere else.

This isn't a xetex bug; the MATH-table values are correctly exposed through the \fontdimen parameter, regardless of the size at which the font is loaded. You can confirm this by adding some tracing to your example:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass[a4paper,12pt]{book}

\usepackage[no-math]{fontspec}
\usepackage{unicode-math}
\setmathfont{Asana-Math.otf}

\begin{document}

$e^{\epsilon}$

% convert ScriptPercentScaleDown and ScriptScriptPercentScaleDown
% fontdimens to numbers, to see what scaling _should_ have been used
% for \scriptfont and \scriptscriptfont
\count255=\fontdimen10\textfont0 \showthe\count255
\count255=\fontdimen11\textfont0 \showthe\count255

% confirm that these fontdimens are not affected by font size
\font\test="Asana Math:script=math" at 10pt
\count255=\fontdimen10\test \showthe\count255
\count255=\fontdimen11\test \showthe\count255

\font\test="Asana Math:script=math" at 12pt
\count255=\fontdimen10\test \showthe\count255
\count255=\fontdimen11\test \showthe\count255

% see what unicode-math has decided to load
\showthe\textfont0
\showthe\scriptfont0
\showthe\scriptscriptfont0

\end{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

When running this with (unmodified) Asana Math, for example, the values of \fontdimen10 and \fontdimen11 are 73 and 60 (percent) in all cases, whether they're coming from \textfont0 (with any size option on the documentclass) or from the explicitly-loaded \test font at any size. But the final three \showthe commands will confirm that only with the 10pt option (or no size option) has this scaling actually been used; with either the 11pt or 12pt options, we get 8pt and 6pt for the script and scriptscript fonts respectively.

I think you should report this as an issue for the unicode-math package. It probably needs to take some additional steps to ensure that its computed sizes override what the document class (or latex kernel) is doing.

JK



--------------------------------------------------
Subscriptions, Archive, and List information, etc.:
 http://tug.org/mailman/listinfo/xetex

Reply via email to