And is the answer that the bodyfont is a conglomerate
of more properties than just the font, including interlinespace?
You can read font-ini.mkvi :
%D \macros %D {setupbodyfont,switchtobodyfont}
%D %D The next two macros are user ones. With \type{\setupbodyfont} %D one can set the document bodyfont size, font family, style %D and/or options defined in files, for example: %D %D \starttyping %D \setupbodyfont[modern,12pt,roman]
%D \stoptyping %D %D This command affects the document as a whole: text, headers %D and footers. The second macro however affects only the text: %D %D \starttyping %D \switchtobodyfont[10pt] %D \stoptyping
%D %D So we've got: %D %D \showsetup{setupbodyfont} %D \showsetup{switchtobodyfont} %D %D Both macros look alike. The second one also has to take %D all kind of keywords into account.
If you follow switchtobodyfont you can see
unexpanded\def\font_basics_switchtobodyfont#specification% {\edef\m_font_step{\bodyfontvariable{#specification}}% \ifx\m_font_step\empty
\font_helpers_set_font\zerocount{#specification}% \else \font_helpers_switch_bodyfont_step % so we have a fast [small] switch \fi \the\everybodyfont \the\everyswitchtobodyfont}
\unexpanded\def\switchtobodyfont[#specification]% could become an ifx {\doifsomething{#specification}{\font_basics_switchtobodyfont{#specification}}}
The token register \everybodyfont and
\everyswitchtobodyfont take care for spaces:
(still in font-ini.mkvi)
%D {everybodyfont,Everybodyfont,everyglobalbodyfont} %D %D Every change in bodyfont size has conseqences for the baseline
%D distance and skips between paragraphs. These are initialized %D in other modules. Here we only provide the hooks that %D garantees their handling.
%D At the system level one can initialize thing like:
%D
%D \starttyping %D \appendtoks \setupspacing \to \everybodyfont %D \stoptyping