On Wed, Jan 16, 2019 at 6:29 PM User 19087
Or I use {\switchtobodyfont[...]\symbol[ShortForty]} in the document. At that point the body font may have been switched to a size whose environment defines different values for 'x' and 'xx'. Or perhaps the current or default body font, via \definebodyfont, overrides the 'x' and 'xx' sizes. In either case it would be more flexible to query the current values of 'x' and 'xx' rather than hardcoding the values of 'n' and 'm'.
On Fri, Jan 18, 2019 at 6:47 AM Wolfgang Schuster
The default sizes (12pt, 14.4pt etc,) set the x and xx sizes to a fixed size which leads to differences and the scale factor.
That's yet another reason to avoiding fixing the values of the 'm' and 'n' sizes. As of now, you have to first decide your font size, lookup the 'x' and 'xx' sizes in font-pre.mkiv and do a little math... every time you switch fonts. Instead I've come up with a function that doesn't depend on hardcoded globals: \define[2]\tosize{% \setbox0=\hbox{\tf x}% \setbox1=\hbox{#1 x}% \startluacode tex.dimen[2] = tex.getdimen("bodyfontsize") * tex.box[1].height / tex.box[0].height \stopluacode% {\switchtobodyfont[\the\dimen2]#2}% } \tosize{\tfx}{\symbol[ShortForty]} However I worry that measuring individual letter sizes to deduce the actual font size may not be foolproof, especially with optical sizes and so on. There must be some other method (at least via luatex) to obtain the 'x' and 'xx' sizes as workable dimensions. thanks,