[Tex/LaTex] the origin of the family/series/shape distinction

tex-history

I've recently started to learn LaTeX, and have just come across the distinction between font commands and declarations. As a learner it seems unnecessarily complex that whereas the commands follow a regular text- pattern, the declarations distinguish between -family/-series/-shape.

My question is: What motivated the distinction between -family, -series and -shape in font declarations? In the answers of another question (\bfseries is to \textbf as WHAT is to \textsf), there is considerable explanation of what the different font elements mean in LaTeX and how they fit together, but my question is why they were designed like that in the first place.

Best Answer

That particular terminology was introduced by Rainer Schöpf and Frank Mittelbach in the New Font Selection Scheme, which was originally a variant version of LaTeX 2.09 but then formed the core of the LaTeX2e release of LaTeX.

It does however correspond fairly closely to natural language terminology with fonts and also to classifications used by later systems such as CSS for styling fonts on the web where you have font-family: Times Roman, font-weight: bold, font-style: italic.

In the primitive TeX font loader each font is a distinct entity so there is no connection between computer modern roman and computer modern bold, so you can not ask for the bold version of the current font.

The NFSS classifies fonts according to family, series (weight) etc so if you use \itshape it just changes the shape to it and then tries to select a font with all the other properties unchanged.

The declarations are the lower level form, and each is named to tell you which "axis" it changes, so \itshape changes the shape axis to it etc. the \text... command forms that take an argument change one or more of the font axes and do some work on inserting automatic italic correction, and we dropped the axis part of the names in those cases, just to keep the names shorter.

The original LaTeX2.09/NFSS version introduced the terminology of the axes in internal font declarations but instead of having user level commands \bfseries and \textbf it re-defined the existing "two letter" commands such as \bf to mean bold version of current font, rather than always switch to the same bold font whatever the context. This caused some compatibility issues and confusion and when NFSS was re-done to produce LaTeX2e the current command set was introduced with \bfseries meaning bold version of current font and \bf not being defined by default, but defined in the standard classes as (more or less) \normalfont\bfseries to give a backward compatible definition that always selected the bold version of the default document font.