Thank you, I'll try that later. On Tue, May 31, 2022 at 9:42 AM Max Chernoff wrote: > > Thanks Max that works perfectly! But It would still be useful if I could > > change families inside a MPpage. > > Sure, but you'll need to store the x-heights first: > > \starttexdefinition storexheight [#1] > % Placing the first use of \switchtobodyfont inside a group messes > % with the definitions, so we need to reset the font family > manually. > \edef\oldfontclass{\fontclass} > > \switchtobodyfont[#1] > \expandafter\newcount\csname #1_xheight\endcsname > \global\csname #1_xheight\endcsname=\numexpr 100 * > \number\dimexpr1em\relax / \number\dimexpr1ex\relax \relax > > \switchtobodyfont[\oldfontclass] > \stoptexdefinition > > \starttexdefinition setxheight [#1][#2] > % Combining these two lines into one sometimes fails. No idea why. > \switchtobodyfont[#1] > \switchtobodyfont[\the\dimexpr#2 * \csname #1_xheight\endcsname / > 100 \relax] > \stoptexdefinition > > \storexheight[adventor] > \storexheight[pagella] > \storexheight[heros] > > \starttext > \startMPpage > draw textext.origin("\setxheight[adventor][1cm]Hello!"); > > draw (0, 1cm) -- (6cm, 1cm); > \stopMPpage > > \startMPpage > draw textext.origin("\setxheight[pagella][1cm]Hello!"); > > draw (0, 1cm) -- (6cm, 1cm); > \stopMPpage > > \startMPpage > draw textext.origin("\setxheight[heros][6pt]Hello!"); > draw textext.origin("\setxheight[heros][24pt]Hello!"); > > draw (0, 6pt) -- (6cm, 6pt); > draw (0, 24pt) -- (6cm, 24pt); > \stopMPpage > \stoptext > > It's pretty ugly code, but it seems to work alright. > > -- Max > >