[XeTeX] Scaling fonts in fontspec changes the relative gap in 100 °C when using siunitx

Joseph Wright joseph.wright at morningstar2.co.uk
Thu Nov 24 15:18:00 CET 2011


On 24/11/2011 13:56, Tobias Schoel wrote:
> Hi,
> 
> consider this minimal example:
> 
> \documentclass{minimal}
> 
> \newcommand{\phont}{Asana Math}
> \newcommand{\Phont}{TeX Gyre Pagella}
> 
> \usepackage{fontspec}
> \setmainfont{\Phont}
> \usepackage{unicode-math}
> \setmathfont{\phont}
> 
> \usepackage{siunitx}
> \sisetup{%
> math-celsius=℃,
> text-celsius=℃,
> detect-all
> }
> 
> \begin{document}
> \setmainfont[Scale=1]{\Phont}
> \SI{100}{\celsius}
> 
> \setmainfont[Scale=2]{\Phont}
> \SI{100}{\celsius}
> 
> \setmainfont[Scale=3]{\Phont}
> \SI{100}{\celsius}
> 
> \setmainfont[Scale=4]{\Phont}
> \SI{100}{\celsius}
> 
> \setmainfont[Scale=5]{\Phont}
> \SI{100}{\celsius}
> 
> \setmainfont[Scale=6]{\Phont}
> \SI{100}{\celsius}
> 
> \setmainfont[Scale=7]{\Phont}
> \SI{100}{\celsius}
> 
> \setmainfont[Scale=8]{\Phont}
> \SI{100}{\celsius}
> 
> \setmainfont[Scale=9]{\Phont}
> \SI{100}{\celsius}
> 
> \setmainfont[Scale=10]{\Phont}
> \SI{100}{\celsius}
> 
> \clearpage
> \renewcommand{\Phont}{TeX Gyre Pagella Bold}
> 
> \setmainfont[Scale=1]{\Phont}
> \SI{100}{\celsius}
> 
> \setmainfont[Scale=2]{\Phont}
> \SI{100}{\celsius}
> 
> \setmainfont[Scale=3]{\Phont}
> \SI{100}{\celsius}
> 
> \setmainfont[Scale=4]{\Phont}
> \SI{100}{\celsius}
> 
> \setmainfont[Scale=5]{\Phont}
> \SI{100}{\celsius}
> 
> \setmainfont[Scale=6]{\Phont}
> \SI{100}{\celsius}
> 
> \setmainfont[Scale=7]{\Phont}
> \SI{100}{\celsius}
> 
> \setmainfont[Scale=8]{\Phont}
> \SI{100}{\celsius}
> 
> \setmainfont[Scale=9]{\Phont}
> \SI{100}{\celsius}
> 
> \setmainfont[Scale=10]{\Phont}
> \SI{100}{\celsius}
> 
> \clearpage
> 
> \setmathfont[Scale=1]{\phont}
> \(\SI{100}{\celsius}\)
> 
> \setmathfont[Scale=2]{\phont}
> \(\SI{100}{\celsius}\)
> 
> \setmathfont[Scale=3]{\phont}
> \(\SI{100}{\celsius}\)
> 
> \setmathfont[Scale=4]{\phont}
> \(\SI{100}{\celsius}\)
> 
> \setmathfont[Scale=5]{\phont}
> \(\SI{100}{\celsius}\)
> 
> \setmathfont[Scale=6]{\phont}
> \(\SI{100}{\celsius}\)
> 
> \setmathfont[Scale=7]{\phont}
> \(\SI{100}{\celsius}\)
> 
> \setmathfont[Scale=8]{\phont}
> \(\SI{100}{\celsius}\)
> 
> \setmathfont[Scale=9]{\phont}
> \(\SI{100}{\celsius}\)
> 
> \setmathfont[Scale=10]{\phont}
> \(\SI{100}{\celsius}\)
> \end{document}
> 
> When scaling the fonts, it seems to me, that the gap between 100 and °C
> (actually its ℃=u2103), which some fonts don't have but TeX Gyre Pagella
> and Asana Math do, gets smaller in relation to the overall size.
> 
> What is the reason for this?
> 
> bye
> 
> Toscho
> 

The 'gap' here is the product marker for multiplication of the value by
the unit. This is by default a thin space, and is always set in math
mode using the current siunitx approach. You can force the use of the
text mode font with

  \sisetup{number-unit-product = \text{\,}}

Now, the reason that this is in math mode is because I was aiming at the
case where products are actually shown as such, using \cdot or \times.
It seemed (when I initially wrote siunitx) that forcing math mode here
was the most sensible approach.

In siunitx v2.4 (current release), I dropped several of these 'always
math' ideas, and am currently seeing what feedback I get on this. *If*
this seems acceptable to users, I may alter the behaviour of the
'product-like' options to also require \ensuremath to guarantee math
mode for symbols. This would be a breaking change, and so I feel it is
best to first see how the changes in v2.4 work in practice.
-- 
Joseph Wright


More information about the XeTeX mailing list