%% Fonts \newcount\thespacing \newdimen\size \begingroup \edef\specialAt{{ \string a\string t }}% \def\x#1{% \def\getfontsize##1=##2{% The user level macro \expandafter\getfontsizE\fontname##2#1\relax{##1}% }% \def\getfontsizE##1#1##2\relax##3{% {\def\tmp{##2}\expandafter}% \ifx\tmp\empty % empty #2 = Loaded at designsize \begingroup \font\tmpfont"##1" scaled 2000 \getfontsize\dimen0=\tmpfont \divide\dimen0 by 2 \expandafter \endgroup \expandafter\getfontsiZe\the\dimen0\relax{##3}% \else% Otherwise #2 holds the size. But is is followed by " at ", so we have to strip that \getfontsiZE{##3}##2% \fi }% \def\getfontsiZE##1##2#1{##1=##2}% Strip " at " \def\getfontsiZe##1\relax##2{##2=##1}% }% \expandafter\expandafter\expandafter \endgroup \expandafter\x\specialAt % From StackOverflow { \catcode`\@=11 \global\let\f@nt\font \gdef\spacing{\afterassignment\adjs \thespacing} \gdef\adjs{%adjust spacing \baselineskip=\size \multiply\baselineskip by \thespacing \divide\baselineskip by 100\relax} \gdef\font#1{% \def\orig{#1}\edef\realname{\csname\string#1@font\endcsname} \afterassignment\xfont \expandafter\f@nt\realname } \gdef\xfont{ \expandafter\getfontsize\expandafter\dimen0\expandafter=\realname \setbox0=\hbox{\vphantom(}% \dimen1=\ht0\advance\dimen1 by 1.5pt% \expandafter\edef\orig{\realname\size\the\dimen0\setbox\strutbox=\hbox{\vrule depth \the\dp0\space height \the\dimen0\space width 0pt}\adjs} } }