summaryrefslogtreecommitdiff
path: root/macros/plain/contrib/pdcmac/pdcfsel.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/plain/contrib/pdcmac/pdcfsel.dtx')
-rw-r--r--macros/plain/contrib/pdcmac/pdcfsel.dtx607
1 files changed, 607 insertions, 0 deletions
diff --git a/macros/plain/contrib/pdcmac/pdcfsel.dtx b/macros/plain/contrib/pdcmac/pdcfsel.dtx
new file mode 100644
index 0000000000..397d6c029d
--- /dev/null
+++ b/macros/plain/contrib/pdcmac/pdcfsel.dtx
@@ -0,0 +1,607 @@
+% pdcfsel.dtx -- documentation & source for pdcfsel.tex -*-tex-*-
+
+%%%@TeX-document-file {
+%%% title = "PDCFSEL, a font selection scheme for TeX",
+%%% filename = "$texmf/doc/plain/pdcmac/pdcfsel.dtx",
+%%% version = "$Revision: 3.5 $",
+%%% package = "pdcmac 1.0",
+%%% date = "$Date: 1995/03/28 19:05:54 $",
+%%% author = "P. Damian Cugley",
+%%% email = "damian.cugley@comlab.ox.ac.uk",
+%%% address = "Oxford University Computing Laboratory,"
+%%% Parks Road, Oxford OX1 3QD, UK",
+%%% abstract = "This document describes and defines pdcfsel.tex,
+%%% a file of definitions for managing font selection in
+%%% documents based on the plain TeX macros.
+%%% Running plain TeX on this file produces both the
+%%% definitions file and the printed documentation.",
+%%% copyright = "Copyright (c) 1991-1995 P. Damian Cugley",
+%%% copying = "This program is free software; you can redistribute
+%%% it and/or modify it under the terms of the GNU
+%%% General Public License as published by the Free
+%%% Software Foundation; either version 2 of the License,
+%%% or (at your option) any later version.",
+%%% notice = "This program is distributed in the hope that it will
+%%% be useful, but WITHOUT ANY WARRANTY; without even the
+%%% implied warranty of MERCHANTABILITY or FITNESS FOR A
+%%% PARTICULAR PURPOSE. See the GNU General Public
+%%% License for more details.",
+%%% notice = "You should have received a copy of the GNU General
+%%% Public License along with this program; if not, write
+%%% to the Free Software Foundation, Inc., 675 Mass Ave,
+%%% Cambridge, MA 02139, USA.",
+%%% codetable = "USASCII",
+%%% dependencies = "pdccode.tex"
+%%%}
+
+%{{{ pdcfsel
+%{{{ premable
+
+\relax
+\input pdccode
+
+\document
+\rcs$Id: pdcfsel.dtx,v 3.5 1995/03/28 19:05:54 pdc Exp $\endrcs
+
+\codefile{pdcfsel.tex}
+
+%}}} premable
+%{{{ intro
+
+\author{P. Damian Cugley}
+\title{PDCFSEL, a font-selection scheme for \TeX}
+\section{Introduction}
+
+ This document describes PDCFSEL, a file of font selection macros
+ designed to be used with documents using the plain \TeX\ format
+ (rather than \LaTeX, for example).
+
+ The PDCFSEL macros perform a similar function to the so-called
+ New Font Selection Scheme~2 (used in \LaTeX~2e). PDCFSEL uses a
+ simpler model of font selection, and so is a smaller
+ package---about 110~lines of code---which is just as well as a
+ copy of it will probably need to be included with documents
+ using it. The description of which fonts are used in a document
+ can be relatively compact, despite not using any special
+ database files.
+
+\subsec{Organizing fonts into fontsets}
+
+ We can arrange the fonts used in an imaginary \TeX\ document in
+ a table like so (with an asterisk marking fonts that have to be
+ scaled to fit):
+ $$\def\*{{\rm*}}
+\vbox{\halign{\strut#\hfil&\quad\vrule#&&\quad\tt#\hfil\cr
+ && |\rm|&|\it|&|\bf|&|\bi|&|\mi|&|\sy|\cr
+\noalign{\nointerlineskip}\omit& height \jot\cr
+\noalign{\hrule}\omit& height 1\jot\cr
+\noalign{\nointerlineskip}%
+ body text&& cmr10& cmti10& cmbx10& cmbxti10& cmmi10& cmsy10\cr
+ footnotes&& cmr8& cmti8& cmbx8& cmbxti10\*& cmmi8& cmsy8\cr
+ script&& cmr7& cmti7& cmbx7& cmbxti10\*& cmmi7& cmsy7\cr
+ scriptscript&& cmr5& cmti7\*& cmbx5& cmbxti10\*& cmmi5& cmsy5\cr
+\noalign{\nointerlineskip}\omit& height\jot depth\jot&\multispan6\dotfill\cr
+\noalign{\nointerlineskip}%
+ heading&& cmss12& cmssi12& -&-&-&-\cr
+ subheading&& cmss10& cmssi10& -&-&-&-\cr
+}}
+ $$
+ The column headings are {\it font nicknames}. These nicknames
+ are used as described in the {\it\TeX book} to switch between
+ fonts in the same row. Each has a corresponding {\it fam}
+ used in maths mode, with symbolic names like |\itfam| and
+ |\bffam| (we define $\hbox{|\rmfam|}=0 $ for consistency).
+ I~have added nicknames |\mi| and |\sy| for maths italic and
+ maths symbol respectively.
+
+ Each row of the table is a {\it fontset}. Plain \TeX\ defines a
+ single fontset (which is like the `body text' row of this
+ table); in Appendix~E, Knuth discusses formats that switch
+ between different fontsets with macros like |\ninepoint| and
+ |\eightpoint|. \LaTeX~2.09 uses many fontsets, called
+ |\normalsize|, |\large|, and so on. (NFSS~2 uses a more complex
+ system, where size, weight, and slant may be changed
+ independently of each other.)
+
+ In this table, subheadings and body text have different fontsets
+ in the above, even though the fonts are the same size. Also,
+ there are no |\sf| fonts; the headings are printed in sanserif
+ by using a fontset with |\rm| mapped on to a sanserif font.
+ This is more logical and flexible than the \LaTeX\ approach.
+
+ We can call font families which allow this table to work tidily
+ `regular', and families (like Computer Modern) that require
+ exceptions `irregular'. The above table has one exception
+ (|\it| in scriptscript must use a scaled font); the CM Bold
+ Extended Text Italic fonts can be described as regular if we
+ think of the `body text' entry as being `|cmbxti10 at 10pt|', so
+ that the fonts in that column are scaled fonts without
+ exception. To make font specification compact, we want to take
+ advantage of regular families as much as possible, while not
+ making it difficult to include exceptions.
+
+\subsec{Introduction to using PCDFSEL}
+
+ PDCFSEL uses no databases of font families, and loads no fonts
+ by default. This makes it more flexible, but also requires
+ document designers to write a `mini-database' of those fonts
+ used in the document. The above scheme might be defined as
+ follows:
+\smallskip
+\halign{\indent#\hfil\cr
+ |\input pdcfsel|\cr
+\noalign{\smallbreak}%
+ |\newfam\bifam|\cr
+\noalign{\smallbreak}%
+ |\def\texttemplate{%|\cr
+ | \m{rm}{cmr}\m{it}{cmti}\m{bf}{cmbx}\@\m{bi}{cmbxti10}%|\cr
+ | \M{mi}{cmmi}\M{sy}{cmsy}%|\cr
+ |}|\cr
+ |\loadfont\scriptscriptit{cmti7 at 5pt }|\cr
+ |\xfontset{scriptscript}\texttemplate{5}|\cr
+ |\xfontset{script}\texttemplate{7}|\cr
+ |\fontset{note}\texttemplate{8}{10pt}{scriptscript}{scriptscript}|\cr
+ |\fontset{body}\texttemplate{10}{12pt}{script}{scriptscript}|\cr
+\noalign{\smallbreak}%
+ |\def\headingtemplate{%|\cr
+ | \f{rm}{cmss}\f{it}{cmssi}%|\cr
+ |}|\cr
+ |\fontset{subheading}\headingtemplate{10}{12pt}{subheading}{subheading}|\cr
+ |\fontset{heading}\headingtemplate{12}{14pt}{subheading}{subheading}|\cr
+\noalign{\smallbreak}%
+ |\bodyfonts|\cr
+}
+\smallbreak
+\noindent
+ This defines commands |\bodyfonts|, |\notefonts|,
+ |\headingfonts| and |\subheadingfonts| which switch between
+ fontsets. (The {\it script} and {\it scriptscript} fontsets,
+ which are defined with |\xfontset|, are used only in maths
+ mode and don't need `-|fonts|' commands.) These -|fonts|
+ commands are not usually used directly in documents;
+ |\notefonts| will be used in some |\footnote| command,
+ |\headingfonts| in some heading-generating command, and so on.
+
+ Changes of fontset are accompanied by changes in parameters like
+ |\baselineskip| and pseudo-parameters like |\smallskipamount|,
+ and give definitions to the {\it maths font tables}
+ |\textfont\rmfam|, \dots, |\scriptscriptfont\syfam| (for those
+ fonts that will be used in maths mode).
+
+ We want font nickname commands to be efficient, because they
+ are expected to be more common than changes between rows in
+ the table. In this implementation, after an invocation of
+ |\bodyfonts|, the macro |\rm| expands to exactly `|\fam\rmfam
+ \bodyrm|'.
+
+\subsec{How the rest of this document is organized}
+
+ The remainder of this document is a description of all of
+ |pdcfsel.tex|, including more details of how the commands it
+ defines are used.
+
+ Running this document (|pdcfsel.dtx|) through plain \TeX\
+ creates the definitions file (|pdcfsel.tex|) in addition to
+ the usual |dvi| and |log| files. This way the macros and
+ their documentation may be kept together in one file. The
+ definition lines are numbered.
+
+ The definitions start with macros for loading individual
+ fonts, followed by the macros used to group fonts into
+ fontsets.
+%}}} intro
+%{{{ getting started
+
+\section{Getting started}
+
+\subsec{File identification}
+
+ We start with some comments indentifying the file.
+\code
+ |% pdcfsel.tex -- macros for loading fonts -*-tex-*-
+ |
+ |%%%@TeX-document-file {
+ |%%% title = "PDC Font Selection Scheme",
+ |%%% filename = "$texmf/tex/plain/pdcmac/pdcfsel.tex",
+ \|\%\%\% version \space\space\space= "\fileversion",
+ \|\%\%\% Date \space\space\space\space\space\space= "\filedate",
+ \|\%\%\% creator\space\space\space\space= "\filename",
+ |%%% package = "pdcmac 1.0",
+ |%%% author = "P. Damian Cugley",
+ |%%% email = "damian.cugley@comlab.ox.ac.uk",
+ |%%% address = "Oxford University Computing Laboratory,"
+ |%%% Parks Road, Oxford OX1 3QD, UK",
+ |%%% abstract = "A file of definitions for managing font
+ |%%% selection in documents based on the plain
+ |%%% TeX macros.
+ |%%% This file was generated by running
+ |%%% plain TeX on pdcfsel.dtx.",
+ |%%% dependencies = ""
+ |%%%}
+ |
+ \|\string\message\{\fileversion\space\string<%
+ \fileauthor\space\filedate\string>\}
+\endcode
+
+\subsec{Private names}
+
+ Macros internal to FSEL all have names starting `|\FSEL|'.
+
+\subsec{Macros for edefs}
+
+ These save typing |\expandafter| a lot. The expression
+ `|\expcs|\<token>\arg{\<tokens>}', creates a csname from
+ \<tokens> and applies \<token> to the result. In the body of an
+ |\edef|, The expression `|\noexpcs|\arg{\<tokens>}' converts
+ \<tokens> to a csname without expanding the result.
+\code
+ |\def\expcs#1#2{\expandafter#1\csname#2\endcsname}
+ |\def\noexpcs{\expcs\noexpand}
+\endcode
+%}}} getting started
+%{{{ selecting demand-loading
+
+\section{Selecting auto-loading mode}
+
+ The flag |\ifFSELautoload| is true, fonts are auto-loaded when
+ they first used instead of all at the start. This is useful
+ when not all the fonts described by the fontsets will be
+ needed. The flag is set with the user command
+ |\autoloadfonts|.
+
+ When demand-loading, the fonts used
+ are written to a file named after the document with a |.fnt|
+ suffix. This checklist might
+ be used to decide which fonts need to be sent with the
+ document if it is being sent to someone to compile on a
+ different \TeX\ system.
+\code
+ |\newif\ifFSELautoload
+ |\def\autoloadfonts{
+ | \FSELautoloadtrue
+ | \csname newwrite\endcsname \FSELfile
+ | \immediate\openout\FSELfile=\jobname.fnt
+ |}
+\endcode
+%}}} selecting demand-loading
+%{{{ making csname for one font
+
+\section{How to set up the csname for one font}
+
+ The macro |\loadfont| is used to load individual fonts, defining
+ a control sequence name (csname) which may be used later to
+ switch to that font. When not demand-loading fonts, this is
+ just like |\global\font| followed by expanding the
+ |\everyloadfont| macro.
+
+ If the csname is already defined, then this command does
+ nothing. This is so that irregularities in the font scheme for
+ the document can be allowed for. Parameter |#1| is the csname,
+ for example `|\bodyrm|', and |#2| is the external name, for
+ example `|cmr10|' or `|cmr10 at 12pt|'.
+\code
+ |\def\loadfont#1#2{%
+ | \ifx#1\relax
+ | \FSELloadfont#1{#2}%
+ | \else\ifx#1\UNDEFINED
+ | \FSELloadfont#1{#2}%
+ | \fi\fi
+ |}
+\endcode
+ (We have to compare |#1| against both |\relax|, which is
+ produced by |\csname|--|\endcsname|, and a completely undefined
+ csname.) The macro |\FSELloadfont| doesa the actual work of
+ loading the font.
+\code
+ |\def\FSELloadfont#1#2{%
+ | \ifFSELautoload
+\endcode
+\begingroup \leftskip=\parindent \advance\leftskip4\fontdimen6\tentt
+\noindent{\it Demand-loading}. We don't load the font, instead we
+ define a csname as a macro. When expanded this new macro will
+ (a)~write the font name to the |fnt| file; (b)~define the macro
+ |\subfont| to load |cmr10| instead (in case \TeX\ stops with a
+ `font not loadable' message); (c)~load the font for real (this
+ overwrites the macro); (d)~call |\everyloadfont| for per-font
+ customization and (e)~switch to the new font.
+\par\endgroup
+\code
+ | \edef#1{%
+ | \write\FSELfile{#2}%
+ | \def\noexpand\subfont{\global\font\noexpand#1cmr10 }%
+ | \global\font\noexpand#1#2\relax
+ | \noexpand\everyloadfont\noexpand#1{#2}%
+ | \noexpand#1%
+ | }%
+ | \else
+\endcode
+\leftline{\hskip4\fontdimen6\tentt \indent{\it Immediate loading}.}
+\code
+ | \global\font#1#2\relax \everyloadfont#1{#2}%
+ | \fi
+ |}
+\endcode
+
+ The macro |\everyloadfont| is expanded immediately after
+ actually loading a font. (The definition used is that one
+ current when the font is actually loaded, not the one current
+ when |\loadfont| was executed.) Its |#1| parameter is always a
+ \<fontdef token>, i.e., it can be to used as a parameter to
+ |\fontdimen1|. The |#2| parameter is the external name of the
+ font.
+\code
+ |\def\everyloadfont#1#2{}
+\endcode
+ For example, in a document with a ragged-right margin, this
+ might be used to suppress the stretch and
+ shrink of interword spaces by being defined as follows
+ $$
+\vbox{\halign{#\hfil\cr
+ |\def\everyloadfont#1#2{%|\cr
+ | \fontdimen3#1=0pt \fontdimen4#1=0pt|\cr
+ |}|\cr
+}}
+ $$
+%}}} making csname for one font
+%{{{ making a fontset
+
+\section{How to set up a fontset}
+
+ Now that we know how to define individual font csnames, we
+ need the mechanism for grouping them in to fontsets. A
+ fontset is defined by a template macro which says what font
+ nicknames are defined and gives part of the external font
+ name. The template macro takes no parameters and expands to
+ a list each of whose elements are of the form
+ $$
+\vbox{\halign{$#$\hfil&\quad#\hfil\cr
+ \<type> \arg{\<nickname>} \arg{\<partial name>}&
+ or\cr
+ \cs{@} \<type> \arg{\<nickname>} \arg{\<external name>}&
+ for a scaled font.\cr
+}}
+ $$
+ where a \<type> is one of the control sequences |\f|, |\m| or
+ |\M|, and \<nickname> is the two- or three-letter nickname
+ used for the font (without any leading backslash), for example
+ |rm|, |it|, |bf|. There must be a font fam called
+ |\|\<nickname>|fam| (|\rmfam|, |\itfam| etc.\ are already
+ defined).
+
+ If there is no |\@|, then the \<partial name> is a font name
+ sans the size specification, such as |cmr|. The size in
+ points will be appended to this (|cmr| + $10\pt$ = |cmr10|).
+ If |\@| is included then the \<external name> is the complete
+ font name, such as |cmr10| or |ptmr|. This will be followed
+ by `{\tt\char32 at\char32 10pt\char32 }', say.
+
+ The \<type> specifies how much support for mathematics this font
+ requires. This is because maths mode requires that all fonts
+ that might be used in a formula be loaded (because the font
+ tables |\textfont|, |\scriptfont| and |\scriptscriptfont| must
+ be set). The code |\f| means that the font is not used in
+ maths, |\m| means that |\textfont| and |\scriptfont| will be set
+ correctly for this fam, and |\M| means that |\scriptscriptfont|
+ will also be set. In these cases there must be a corresponding
+ token ending in `-|fam|' that expands to the fam number.
+
+ The fontset name is a sequence of \<letter>s, like `|body|',
+ `|note|', `|script|', `|heading|'. This is turned into a
+ fontset selection macro by adding `|\|' to the front and
+ `|fonts|' to the end (e.g., |\bodyfonts|). The csnames for
+ loaded fonts are formed from the fontset name + the nickname
+ (e.g., |\bodyrm|).
+
+\subsec{Defining the csnames for a fontset}
+
+ The macro |\xfontset| defines all the csnames for the fonts in a
+ fontset, without defining a `-|fonts|' macro. This is used to
+ define a fontset that is never selected in its own right (e.g.,
+ its fonts are used only as subscripts and superscripts), and
+ also used internally by the |\fontset| command. Its arguments
+ are |#1| the fontset name, |#2| the csname of a template macro,
+ and |#3| a \<number> that specifies the font size (sans the
+ `|pt|').
+\code
+ |\def\xfontset#1#2#3{
+ | \def\f##1##2{\expcs\loadfont{#1##1}{##2#3}}
+ | \let\m=\f \let\M=\f
+ | \def\@##1##2##3{\expcs\loadfont{#1##2}{##3 at #3pt }}
+ | #2
+ |}
+\endcode
+
+\subsec{Defining a complete fontset}
+
+ The user command |\fontset| is used to define a complete
+ fontset. Its parameters are
+ |#1| (a string of letters) is the fontset name,
+ |#2| (a csname) is a template macro,
+ |#3| (a \<number>) is size in points,
+ |#4| (a \<skip>) is baseline skip,
+ |#5| (a fontset name) is the scriptstyle fontset, and
+ |#6| (a fontset name) is the scriptscriptstyle fontset.
+\code
+ |% Set up a fontset -- define \#1fonts
+ |\def\fontset#1#2#3#4#5#6{%
+ | \xfontset{#1}{#2}{#3}%
+\endcode
+\begingroup\leftskip=\parindent \advance\leftskip2\fontdimen6\tentt
+\noindent
+ Now to define the |\#1fonts| macro. When demand-loading, this
+ macro will call |\#1mathfonts| (to ensure the fonts needed for
+ maths are loaded). Then it will call |\FSELnicknames| to
+ define |\rm|, |\it|, etc., and to define |\textfont\rmfam|, etc.
+ Finally it will set the baseline skip and related parameters and
+ switch to the new |\rm| font.
+\par\endgroup
+\code
+ | \expcs\edef{#1fonts}{%
+ | \ifFSELautoload \noexpcs{#1mathsfonts}\fi
+ | \noexpand\FSELnicknames{#1}{#5}{#6}\noexpand#2%
+ | \noexpand\setbaselineskip{#4}%
+ | \noexpand\rm
+ | }%
+\endcode
+\begingroup\leftskip=\parindent \advance\leftskip2\fontdimen6\tentt
+\noindent
+ If we are demand-loading, we must define |\#1mathsfonts| as well.
+\par\endgroup
+\code
+ | \ifFSELautoload
+ | \expcs\def{#1mathsfonts}{\FSELloadmaths{#1}{#5}{#6}#2}%
+ | \fi
+ |}
+\endcode
+
+\subsec{Setting font nicknames}
+
+ |\FSELnicknames|
+ gives definitions to |\f|, |\m| and |\M| so that expanding the
+ template macro defines |\rm| and the like. If the fontset name
+ is |ffff|, and a nickname |xx| is introduced with |\f|, the
+ macro |\xx| is defined to |\ffffxx|. If it is introduced with
+ |\m|, then the font table entries |\textfont\xxfam| and |\scriptfont\xxfam| are also
+ set, and |\xx| expands to `|\fam\xxfam \ffffxx|'. If it is
+ introduced with |\M| then |\scriptscriptfont\xxfam| is also set.
+
+ The parameters are |#1| the fontset name, |#2| the fontset name
+ for scriptstyle, and |#3| the fontset name for
+ scriptscriptstyle. The implicit fourth parameter is the
+ template macro.
+\code
+ |\def\FSELnicknames#1#2#3{%
+ | \let\@\relax
+ | \def\f##1##2{%
+ | \expcs\edef{##1}{\noexpcs{#1##1}}%
+ | }%
+ | \def\m##1##2{%
+ | \expcs\textfont{##1fam}\csname#1##1\endcsname
+ | \expcs\scriptfont{##1fam}\csname#2##1\endcsname
+ | \expcs\edef{##1}{%
+ | \fam\expcs\noexpand{##1fam}%
+ | \expcs\noexpand{#1##1}%
+ | }%
+ | }%
+ | \def\M##1{%
+ | \expcs\scriptscriptfont{##1fam}\csname#3##1\endcsname
+ | \m{##1}%
+ | }%
+ |}
+\endcode
+
+\subsec{Setting the baseline skip}
+ The second helper macro, |\setbaselineskip|, sets
+ |\baselineskip| and a bunch of related paramaters and
+ pseudo-parameters like |\smallskipamount|. It takes one
+ parameter, a \<skip>.
+\notepar
+ My definitions for the skips that go before and after displays
+ put less white\-space around displays than is set in plain \TeX.
+ This can be changed by redefining this macro in a style file.
+\endnotepar
+\code
+ |\def\setbaselineskip#1{%
+ | \baselineskip#1\relax \normalbaselineskip\baselineskip
+ | \jot0.25\baselineskip
+ | \smallskipamount 0.25\baselineskip plus 0.083\baselineskip
+ | minus 0.083\baselineskip
+ | \medskipamount 0.5\baselineskip plus 0.167\baselineskip
+ | minus 0.167\baselineskip
+ | \bigskipamount 1\baselineskip plus 0.333\baselineskip
+ | minus 0.333\baselineskip
+ | \abovedisplayskip\medskipamount
+ | \abovedisplayshortskip\abovedisplayskip
+ | \advance\abovedisplayshortskip-1\abovedisplayskip
+ | \belowdisplayskip\medskipamount
+ | \belowdisplayshortskip\smallskipamount
+ |}
+\endcode
+
+\subsec{Loading maths fonts}
+ Finally, we need to force the fonts used in maths at a given
+ size to be loaded. for |\f| fonts this does nothing; for |\m|
+ fonts it loads the text and script fonts; for |\M| fonts it also
+ loads the scriptscript font.
+
+ This is done the first time this fontset is selected, even if no
+ formulas are used (rather than trying to do something
+ complicated like use |\everymath|\dots). Because this macro
+ only needs to be used once for each fontset, it finishes by
+ redefining |\#1mathfonts| to be the same as |\relax|.
+
+ Its parameters are |#1| the fontset name, |#2| the fontset name
+ for scriptstyle, and |#3| the fontset name for scriptscriptstyle.
+\code
+ |\def\FSELloadmaths#1#2#3{%
+ | \let\@\relax \def\f##1##2{}%
+ | \def\m##1##2{\csname#1##1\endcsname \csname#2##1\endcsname}%
+ | \def\M##1{\csname#3##1\endcsname \m{##1}}%
+ | \global\expcs\let{#1mathsfonts}\relax
+ |}
+\endcode
+
+%}}} making a fontset
+%{{{ finishing up
+
+\section{Finishing up}
+
+ We define |\rmfam|, |\mifam| and |\syfam| as aliases for the
+ numbers $0$, $1$ and $2$. This is so that the maths fonts may
+ be included in the font templates without any special
+ arrangements. The names |\itfam|, |\bffam|, |\ttfam|, and |\slfam| are set in |plain.tex|.
+\code
+ |\chardef\rmfam=0 \chardef\mifam=1 \chardef\syfam=2
+\endcode
+ Note that we do not include an alias for the the maths
+ extension font's fam number. This is because there is only
+ one maths extension font---|cmex10|---used for all sizes, so it
+ does not belong in any fontset.
+
+\section{Summary of user commands}
+
+ The following lists the user commands provided by FSEL. A
+ \<fontset name> is a sequence of letters like |note|;
+ \<points> is a \TeX\ \<number> representing size in points
+ (without any final |pt|); an \<external name> is the external
+ name for a font (e.g., `|cmr12|').
+
+\medskip\hrule\medskip
+
+\begingroup \parindent=0pt
+
+ |\autoloadfonts|
+
+ |\loadfont|\<csname>\arg{\<external name>}
+
+ |\xfontset|\arg{\<fontset name>}\<csname>\arg{\<points>}
+
+ |\fontset|\arg{\<fontset
+ name>}\<csname>\arg{\<points>}\arg{\<skip>}\arg{\<fontset
+ name>}\arg{\<fontset name>}
+
+ |\def\everyloadfont#1#2{| \dots\ |}|
+
+ |\def\setbaselineskip#1{| \dots\ |}|
+
+\medskip\hrule\medskip
+
+\endgroup
+
+%}}} finishing up
+%{{{ bugs
+
+\section{Bugs}
+
+ FSEL clobbers the macros |\f|, |\m|, |\M| and |\@|.
+%}}} bugs
+\endcodefile
+\enddocument
+\bye
+
+%}}} pdcfsel
+
+%Local variables:
+%fold-folded-p: t
+%fill-prefix: " "
+%End: