texinfo-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

branch master updated: * contrib/texifont: Remove subdirectory. It has b


From: Gavin D. Smith
Subject: branch master updated: * contrib/texifont: Remove subdirectory. It has been untouched for over 10 years and has no prospect of further development.
Date: Sun, 05 Nov 2023 11:20:11 -0500

This is an automated email from the git hooks/post-receive script.

gavin pushed a commit to branch master
in repository texinfo.

The following commit(s) were added to refs/heads/master by this push:
     new ac66f355d6 * contrib/texifont: Remove subdirectory.  It has been 
untouched for over 10 years and has no prospect of further development.
ac66f355d6 is described below

commit ac66f355d698dc8d43234aaa66d65922124f75ba
Author: Gavin Smith <gavinsmith0123@gmail.com>
AuthorDate: Sun Nov 5 16:20:02 2023 +0000

    * contrib/texifont: Remove subdirectory.  It has been untouched
    for over 10 years and has no prospect of further development.
---
 ChangeLog                          |    3 +
 contrib/README                     |   10 +-
 contrib/texifont/README            |   30 -
 contrib/texifont/enctest.tex       |   45 -
 contrib/texifont/fattr.tex         |  803 -----------------
 contrib/texifont/fattr.tex.pairs   |  644 --------------
 contrib/texifont/fdefs.tex         |  176 ----
 contrib/texifont/fsel.tex          | 1703 ------------------------------------
 contrib/texifont/ftest.tex         |  445 ----------
 contrib/texifont/ienc.tex          |  544 ------------
 contrib/texifont/oenc.tex          |  990 ---------------------
 contrib/texifont/otest.tex         |  157 ----
 contrib/texifont/sample.cp1251     |   24 -
 contrib/texifont/sample.koi8r      |   24 -
 contrib/texifont/sample.latin1     |   18 -
 contrib/texifont/sample.latin2     |   18 -
 contrib/texifont/sample.latin9     |   19 -
 contrib/texifont/tests/Makefile    |   29 -
 contrib/texifont/tests/newfont.out |   76 --
 contrib/texifont/tests/newfont.tex |   55 --
 contrib/texifont/tests/subst.tex   |   21 -
 contrib/texifont/texifont.pdf      |  Bin 180951 -> 0 bytes
 contrib/texifont/texifont.txi      |  680 --------------
 23 files changed, 5 insertions(+), 6509 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index b96cbb1280..f547d19455 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2023-11-05  Gavin Smith <gavinsmith0123@gmail.com>
 
+       * contrib/texifont: Remove subdirectory.  It has been untouched
+       for over 10 years and has no prospect of further development.
+
 2023-11-05  Gavin Smith <gavinsmith0123@gmail.com>
 
        Revert documentlanguage fix
diff --git a/contrib/README b/contrib/README
index 7e4a942a9c..d1cb66fa9f 100644
--- a/contrib/README
+++ b/contrib/README
@@ -13,16 +13,10 @@ They are all free software, but not officially part of 
Texinfo, and the
 Texinfo maintainers don't support them (and generally have no knowledge
 about them, just passing them on).
 
-The texifont/ subdirectory was an attempt at implementing a generalized
-font system, but it remains incomplete.  See the README there.
-
-In contrast, the two txipsfonts-* files are attempts by Torsten Bronger
-and Stephen Gildea, respectively, to use base PostScript fonts instead
+The two txipsfonts-* files are attempts by Torsten Bronger and 
+Stephen Gildea, respectively, to use base PostScript fonts instead
 of Computer Modern, in the simplest way.  (I could not find the right
 version of the original texinfo.tex on which Torsten's file was based.)
-Adapting one of these to actually be installable would doubtless be much
-simpler (which is not to say simple) than finalizing texifont/, though
-of course much less featureful.
 
 The perldoc-all subdirectory is about making Texinfo out of the standard
 Perl *.pod files.
diff --git a/contrib/texifont/README b/contrib/texifont/README
deleted file mode 100644
index cafd7dc4b7..0000000000
--- a/contrib/texifont/README
+++ /dev/null
@@ -1,30 +0,0 @@
-texinfo/contrib/texifont/README
-
-Everything in this directory is public domain.
-
-The main source file is fsel.tex, tested by ftest.tex, documentation
-(such as it is) in texifont.txi.
-
-The story here is that Oleg Katsitadze and I (Karl Berry) collaborated
-in the mid-2000s on a new font system for Texinfo (and that could work
-with Eplain).  Oleg wrote essentially all the code, while I advised on
-the design, etc.
-
-The idea was to support all the widely-available free font families and
-widely used input encodings.  getting away from of the current
-hardwiring of Computer Modern in texinfo.tex.  The example at the end of
-documentation gives the basic flavor.  As it stands, it is not hooked
-into texinfo.tex or Texinfo documents at all.  That is not the hard part :).
-
-Unfortunately, it never came to fruition.  Even more unfortunately, Oleg
-and I can't even give any real specifics of what the "next thing" to do
-is, we've lost the details in the haze of time.  As I recall, the
-current problem was something about caching of glyphs to avoid
-unnecessary (and greatly excessive) switching of fonts.  In addition,
-"attributes" (fattr.tex) were starting to come into play.  But it all
-remains a work in progress.
-
-Anyway, I'm not sanguine about anyone ever doing anything with this, but
-just in case some super-duper TeX hacker has too much time on their
-hands :) and wants to pick it up, here it is.  Contact
-bug-texinfo@gnu.org ...
diff --git a/contrib/texifont/enctest.tex b/contrib/texifont/enctest.tex
deleted file mode 100644
index eef8c6bb05..0000000000
--- a/contrib/texifont/enctest.tex
+++ /dev/null
@@ -1,45 +0,0 @@
-\catcode`\@=11
-\input ienc
-\input oenc
-\input fsel
-\catcode`\@=12
-
-\def\changedocenc#1 {%
-  \message{^^J** #1}%
-  \documentencoding #1
-}
-
-\hfuzz=\maxdimen
-%\tracingfonts2
-
-\setfontencoding{T1}\setfontfamily{LMRoman}\selectfont
-\changedocenc ISO-8859-1
-\input sample.latin1 % Icelandic
-
-\bigskip
-\changedocenc ISO-8859-15
-\input sample.latin9 % French
-
-\bigskip
-\changedocenc ISO-8859-2
-\input sample.latin2 % Czech
-
-\bigskip
-\changedocenc ISO-8859-2
-\setfontencoding{OT1}\setfontfamily{CMRoman}\selectfont
-\input sample.latin2 % Czech
-
-\bigskip
-\setfontencoding{T2A}\setfontfamily{LHRoman}\selectfont
-\changedocenc KOI8-R
-\input sample.koi8r % Russian
-
-\bigskip
-\changedocenc CP1251
-\input sample.cp1251 % Russian
-
-\bye
-
-% Local variables:
-% compile-command: "tex --interact=nonstopmode enctest.tex"
-% End:
diff --git a/contrib/texifont/fattr.tex b/contrib/texifont/fattr.tex
deleted file mode 100644
index 0843cf4bcf..0000000000
--- a/contrib/texifont/fattr.tex
+++ /dev/null
@@ -1,803 +0,0 @@
-% font set              Computer Modern, Latin Modern, Bera
-%   font family         CMRoman, CMTypewriter, CMSansSerif
-%
-% font feature          slant, weight, width
-%   font attribute      sl, it, bold, cond
-%
-% fontfile
-%
-% Font features and attributes:
-%
-%     size              design point size
-%     encoding          ot1, oml, oms, omx, t1, ts1, t2a
-%     slant             up, sl, it, ui, cursive
-%     weight            lt, med, semib, bold, bx,
-%     width             cond, normal, ext
-%     figures           oldfigures, liningfigures
-%     caps              normalcaps, allcaps, smallcaps, nocaps
-
-\catcode`@=11
-%
-% \fsz:CMRoman/<OT1>/<up>/<med>/<normal>/<liningfigures>/<normalcaps>
-% ->
-% cmr5/5,cmr7/7,cmr8/8,cmr9/9,cmr10/10,cmr12/12,cmr17/17,.
-%
-% {CMRoman}{b}{bx}
-% {OML,CMRoman}{m}{up}
-% {OML,CMRoman}{bx}{up}
-% {OML,CMRoman}{b}{bx}
-% {CMSans}{it}{sl}
-% {CMSans}{b}{bx}
-% {CMSans,OML}{}{CMRoman}
-% {ConcreteRoman}{b}{LMSans,b}
-% {OT1,CMMath}{}{CMRoman,n}
-% {OMX,CMMath}{bx}{m}
-%
-
-\input eplain
-
-%
-%
-%
-% Font-related logging.  Meanings of \ftracelevel values are:
-%
-%   0 - none
-%   1 - warning
-%   2 - debug
-%   3 - verbose
-\newcount\ftracelevel
-\ftracelevel=1
-%
-\def\f@warning{\f@trace0}%
-\def\f@debug  {\f@trace1}%
-\def\f@verbose{\f@trace2}%
-\def\f@trace#1{%
-  \ifnum#1<\ftracelevel
-    \expandafter\message
-  \else
-    \expandafter\gobble
-  \fi
-}%
-%
-%
-%
-% Defining new fonts.
-%
-% \newfont MAG-FACTOR FILE-NAME DESIGN-SIZE [ATTRIBUTES]
-%
-% If ATTRIBUTES is not given, will reuse ATTRIBUTES from the
-% last \newfont call with ATTRIBUTES given.  To define a font with
-% empty attributes, pass \empty or {} for ATTRIBUTES.
-\let\newfont@last@attributes\empty
-%
-{\catcode`\^^M=12 % Comment out all line ends from now on.
-\gdef\newfont{\begingroup \catcode`\^^M=12 \@newfont}%
-\gdef\@newfont#1 #2 #3^^M{\endgroup%
-  \def\newfont@mag{#1}%
-  \def\newfont@fname{#2}%
-  \@new@font#3 ^^M%
-}%
-\gdef\@new@font #1 #2^^M{% DESIGN-SIZE [ATTRIBUTES]
-  \get@dimen{#1}% Convert font size into a dimen.
-  \if^^M#2^^M% Assume #2 contains no (leading) ^^Ms.
-    % #2 is empty, continue to use the current \newfont@last@attributes.
-  \else%
-    \@new@font@#2^^M% Redefine \newfont@last@attributes, removing the space.
-  \fi%
-  \def@newfont%
-}%
-\gdef\@new@font@#1 ^^M{\def\newfont@last@attributes{#1}}%
-}%
-%
-%\def\def@newfont{%
-%  
\message{^^J.\newfont@mag.\newfont@fname.\the\dimen@.\newfont@last@attributes.}%
-%}%
-%
-\def\def@newfont{%
-  % Empty \ff@temp0, \ff@temp1, ..., \ff@temp<MAX-ITEM-IDX>.
-  \ff@temp@reset
-  \for\ff@temp@i:=\newfont@last@attributes\do{%
-    \f@get@af\ff@temp@i
-    \expandafter\edef\csname ff@temp\tempb\endcsname{\tempa\space}%
-  }%
-  % Combine all \f@temp<X> into \f@name.
-  \edef\f@name{f:\ff@temp@collect}%
-  \expandafter\let\expandafter\temp \csname \f@name \endcsname
-  %
-  \ifx\temp\relax
-    \let\do\relax
-    \expandafter\xdef\csname\f@name\endcsname
-      {\do \the\dimen@ \space \newfont@mag\space {\newfont@fname}}%
-    \f@debug{^^J\the\inputlineno: Started font def with
-             "\csname \f@name\endcsname".}%
-  \else
-    \edef\newfont@size{\the\dimen@}%
-    \divide\dimen@ by1000
-    \multiply\dimen@ by\newfont@mag\relax
-    \let\newfont@prefix\empty
-    \let\do\newfont@insert
-    % Try inserting the new size.
-    \temp\relax
-    % If the new size hasn't been inserted, append it now.
-    \ifx\do\newfont@insert
-      \let\do\relax
-      \expandafter\xdef\csname\f@name\endcsname {%
-        \newfont@prefix \do \newfont@size\space \newfont@mag\space 
{\newfont@fname}%
-      }%
-      \f@debug{^^J\the\inputlineno: Updated font def to
-               "\csname \f@name\endcsname".}%
-    \fi
-  \fi
-}%
-%
-% \newfont@insert FONT-SIZE MAG-FACTOR FILE-NAME
-%
-% Insert new font file into the list of font files in \newfont@prefix,
-% preserving ascending order of scaled design sizes.
-%
-% Pass in new font's design size in \newfont@size, mag factor
-% in \newfont@mag, font file name in \newfont@fname, pre-computed
-% scaled size in \dimen@.
-\def\newfont@insert#1 #2 #3{%
-  \toks@=\expandafter{\newfont@prefix}%
-  % We are comparing scaled font sizes, not design sizes.
-  \dimen@ii=#1\divide\dimen@ii by1000 \multiply\dimen@ii by#2\relax
-  %
-  \ifdim \dimen@ii < \dimen@
-    % Not inserting yet, go on to the next font file.
-    \edef\newfont@prefix{\the\toks@ \noexpand\do #1 #2 {#3}}%
-  \else
-    % Time to insert the new font file.  If we are adding a font file
-    % for the same design size/mag factor, the new def will override
-    % the old, but give out a warning.
-    \def\newfont@next{\noexpand\do #1 #2 {#3}}%
-    \ifnum #2=\newfont@mag
-      \ifdim #1=\newfont@size
-        \f@warning{^^J\the\inputlineno: Warning: Replacing font "#3" (#1@#2)
-          with font "\newfont@fname" (\newfont@size @\newfont@mag).}%
-        \let\newfont@next\empty
-      \fi
-    \fi
-    \edef\newfont@prefix{\the\toks@
-      \noexpand\do \newfont@size \space \newfont@mag \space {\newfont@fname}%
-      \newfont@next}%
-    % No need to parse further, just append the rest of the list.
-    \expandafter\newfont@append
-  \fi
-}%
-%
-\def\newfont@append#1\relax{%
-  \let\do\relax
-  \expandafter\xdef\csname\f@name\endcsname {\newfont@prefix #1}%
-  \f@debug{^^J\the\inputlineno: Updated font def to
-           "\csname \f@name\endcsname".}%
-}%
-%
-%
-%
-% Defining new font features and attributes.
-%
-\newcount\fcacheidx % Font cache index.
-\newcount\ffeatcount % Font feature count.
-% We'll build up the following as we add font features.
-\let\ff@reset\empty
-\let\ff@collect\empty
-\let\ff@temp@reset\empty
-\let\ff@temp@collect\empty
-%
-% \newfontattr FONTFEATURE FONTATTR
-\def\newfontattr #1 #2 {%
-  % Define a new font attribute, if it's not defined yet.
-  \expandafter\ifx\csname fa:#2\endcsname \relax
-  \else
-    \errmessage{Font attribute "#2" already defined as part
-      of font feature "\csname ff@\csname faf:#2\endcsname\endcsname"}%
-  \fi
-  \expandafter\xdef\csname fa:#2\endcsname{\the\fcacheidx}%
-  \expandafter\xdef\csname fa@\the\fcacheidx\endcsname{#2}%
-  % Invalidate current font cache (and update index for the next font
-  % attribute).
-  \global\advance\fcacheidx by1
-  %
-  % Define a new font feature, if it's not defined yet.
-  \expandafter\ifx\csname ff:#1\endcsname \relax
-    \expandafter\xdef\csname ff:#1\endcsname{\the\ffeatcount}%
-    \expandafter\xdef\csname ff@\the\ffeatcount\endcsname{#1}%
-    % Update \ff@reset to clear the new font feature cell \ffN.
-    \toks@=\expandafter{\ff@reset}%
-    \xdef\ff@reset{\the\toks@
-      \let\expandafter\noexpand\csname ff\the\ffeatcount\endcsname
-        \noexpand\empty}%
-    % Update \ff@temp@reset to clear the new font feature cell \ff@tempN.
-    \toks@=\expandafter{\ff@temp@reset}%
-    \xdef\ff@temp@reset{\the\toks@
-      \let\expandafter\noexpand\csname ff@temp\the\ffeatcount\endcsname
-        \noexpand\empty}%
-    % Update \ff@collect to include the new font feature cell \ffN.
-    \toks@=\expandafter{\ff@collect}%
-    \xdef\ff@collect{\the\toks@
-      ^^A\expandafter\noexpand\csname ff\the\ffeatcount\endcsname}%
-    % Update \ff@temp@collect to include the new font feature cell \ffN.
-    \toks@=\expandafter{\ff@temp@collect}%
-    \xdef\ff@temp@collect{\the\toks@
-      ^^A\expandafter\noexpand\csname ff@temp\the\ffeatcount\endcsname}%
-    % Set \ffN to \empty, otherwise it will be set to \relax the first
-    % time we try to access it through \csname...\endcsname, and we
-    % depend on it to be either a number or \empty.
-    \global\expandafter\let\csname ff\the\ffeatcount\endcsname \empty
-    %
-    \global\advance\ffeatcount by1
-    % We've added a new font feature, so we should invalidate current
-    % font cache.  But we've already done so above when adding the new
-    % font attribute.
-    %\global\advance\fcacheidx by1
-  \fi
-  % Assign the font attribute to the font feature.
-  \expandafter\xdef\csname faf:#2\endcsname{\csname ff:#1\endcsname}%
-}%
-%
-% \newfontattrs FONTFEATURE FONTATTRIBUTE[,...]
-\def\newfontattrs #1 #2 {%
-  \for\temp:=#2\do{\newfontattr #1 {\temp} }%
-}%
-%
-%
-%
-% Setting a font.
-%
-\newcount\f@base@mag \f@base@mag=1000
-\newcount\f@count@
-% Set a font based on the current values of \ff0, \ff1, ..., or
-% execute #1 if such font is not defined.
-\def\f@setfont#1{%
-  \f@verbose{^^J\the\inputlineno: (Started search for a font.}%
-  % Check the cache.
-  \expandafter\let\expandafter\temp
-    \csname f\the\fcacheidx:\the\f@cur@size:\ff@collect\endcsname
-  \ifx\temp\relax
-    % Not in the cache.
-    \let\do\relax
-    \expandafter\let\expandafter\temp \csname f:\ff@collect\endcsname
-    \ifx\temp\relax
-      \f@debug{^^JFont is not defined.}%
-      #1% Execute the no-font action.
-    \else
-      \dimen@=\z@ % Fake previous size for the first font in the list.
-      \let\f@fname\empty
-      \let\do\f@search@size
-      \global\dimen@i=\f@cur@size
-      \temp\relax
-      \ifnum\f@base@mag=\f@count@ \else
-        \global\divide\dimen@i by\f@base@mag
-        \global\multiply\dimen@i by\f@count@
-      \fi
-      \f@debug{Found font "\f@fname", mag factor \the\f@count@,
-        scaled size \the\dimen@i.}%
-      % Save it in the cache.
-      \global \expandafter\font
-        \csname f\the\fcacheidx:\the\f@cur@size:\ff@collect\endcsname
-        \f@fname \space at\the\dimen@i
-      % Set it.
-      \csname f\the\fcacheidx:\the\f@cur@size:\ff@collect\endcsname
-    \fi
-  \else
-    % Got a cache hit.
-    \f@debug{Found font in the cache.}%
-    \temp
-  \fi
-  \f@verbose{Ended search for a font.)}%
-}%
-%
-% \f@search@size DESIGN-SIZE MAG-FACTOR FILE-NAME
-%
-% Pass in the desired font size in \dimen@i.  Font file name is saved
-% in \f@fname, font's mag factor in \f@count@.
-\def\f@search@size #1 #2 #3{%
-  \f@verbose{Looking at font def "#3" (#1@#2).}%
-  \dimen@ii=\dimen@ % Get the size of the previous font from the list.
-  % Scale design size of the next font as per current base mag factor.
-  \dimen@=#1\relax
-  \ifnum#2=\f@base@mag \else
-    \divide\dimen@ by\f@base@mag \multiply\dimen@ by#2\relax
-  \fi
-  % Calculate the "dividing" point size.
-  \count@=\dimen@ % Don't clobber \dimen@.
-  \advance\count@ by-\dimen@ii % Curr size - prev size.
-  % Don't do the following line -- .3333*3pt < 1pt.
-  %\advance\dimen@ii by.3333\count@ % 1/3 of the way from prev to curr.
-  \divide\count@ by3
-  \advance\dimen@ii by\count@ sp% 1/3 of the way from prev to curr.
-  %
-  \ifdim \dimen@i > \dimen@ii
-    % The previous font's size is too small.  The current font might
-    % or might not be the one we need, but we assume it is, in case
-    % it's the last one in the list.
-    \def\f@fname{#3}%
-    \f@count@=#2\relax
-  \else
-    % The target size is close enough to the prev font's size, so we take that.
-    \ifx\f@fname\empty
-      % This is the case when we need a size smaller than the very
-      % first font in the list.
-      \def\f@fname{#3}%
-      \f@count@=#2\relax
-    \fi
-    \expandafter\f@search@gobble
-  \fi
-}%
-%
-\def\f@search@gobble#1\relax{}%
-%
-%
-%
-% Font feature manipulations.
-%
-\newdimen\f@cur@size \f@cur@size=10pt
-% \setfont{ATTRS}
-\def\setfont{%
-  % Empty \ff0, \ff1, ..., \ff<ffeature_count - 1>.
-  \ff@reset
-  \addfontattrs % Substitutes and sets the font.
-}%
-%
-% \modfont{REM-FEATURES}{ADD-OR-MOD-ATTRS}
-\def\modfont#1{%
-  \unsetfontfeatures{#1}%
-  \addfontattrs % Substitutes and sets the font.
-}%
-%
-% \addfontattrs{ADD-OR-MOD-ATTRS}
-\def\addfontattrs#1{%
-  % For each feature with attribute in #1, set \ff<f> to `<a> ', where
-  % <f> is the feature index and <a> is the attribute index.  For a
-  % number or a dimen in #1, set \f@cur@size.  Dimen specs starting
-  % with '.' (e.g., '.1pt') are not supported.
-  \for\f@i:=#1\do{%
-    \expandafter\gobble@to@finish % Gobbles 'pt' when \f@i is '10pt'.
-      \ifnum9<1\f@i\relax
-    \finish
-        % A number or a dimen.
-        \get@dimen{\f@i}%
-        \f@cur@size=\dimen@
-      \else
-    \finish
-        % Not a number.
-        \f@get@af\f@i
-        \expandafter\edef\csname ff\tempb\endcsname {\tempa\space}%
-      \fi
-  }%
-  % Try to set the font; if it's not defined, do substitution and try
-  % to set the resulting font.  Do font substitution inside a group so
-  % that the current set of font attributes is not clobbered.
-  \f@setfont{{\f@subst \f@setfont{\f@err@nofont}\expandafter}\the\font}%
-}%
-%
-% Take a dimension or a number, and save it in \dimen@.  In case of a
-% number, assume `pt' units.
-\def\get@dimen#1{%
-  \afterassignment\gobble@to@finish
-  \dimen@#1pt \finish
-}%
-\def\gobble@to@finish#1\finish{}%
-%
-\def\f@err@nofont{%
-  \dumpfontfeatures
-  \errmessage{^^JFound no font def for the selected feature set}%
-}%
-%
-% \remfontfeatures{REM-FEATURES}
-\def\remfontfeatures#1{%
-  \unsetfontfeatures{#1}%
-  % Try to set the font; if it's not defined, do substitution and try
-  % to set the resulting font.  Do font substitution inside a group so
-  % that the current set of font attributes is not clobbered.
-  \f@setfont{{\f@subst \f@setfont{\f@err@nofont}\expandafter}\the\font}%
-}%
-%
-\def\unsetfontfeatures#1{%
-  % Unset \ff<f> for each feature <f> in #1.
-  \for\f@i:=#1\do{%
-    \expandafter\let\expandafter\temp\csname ff:\f@i\endcsname
-    \ifx\temp\relax
-      \errmessage{Undefined font feature "\f@i"}%
-    \fi
-    \expandafter\let \csname ff\temp\endcsname \empty
-  }%
-}%
-%
-% Pretty-print the current settings of font features.
-\def\dumpfontfeatures{%
-  \message{^^J\the\inputlineno: font size \the\f@cur@size, features (}%
-  \@dumpfontfeatures\message
-  \message{).}%
-}%
-%
-\def\@dumpfontfeatures#1{%
-  \fori0\ffeatcount{%
-    \edef\temp{\csname ff\the\count@\endcsname}%
-    #1{%
-      \csname ff@\the\count@\endcsname=%
-      \ifx\temp\empty
-        <unset>%
-      \else
-        \expandafter\dump@ff\temp
-      \fi
-    }%
-  }%
-}%
-%
-\def\dump@ff#1 {\csname fa@#1\endcsname}%
-%
-%
-%
-% Construction of font filter strings.
-%
-% \fontsubstpre =MATCH-ATTR -REM-FEATURES +ADD-OR-MOD-ATTRS
-%
-% Install a new font substitution to be applied before other font
-% substitutions.
-\def\fontsubstpre{%
-  \let\fontsubst@mklist\fontsubst@pre
-  \@fontsubst
-}%
-%
-% \fontsubstpost =MATCH-ATTR -REM-FEATURES +ADD-OR-MOD-ATTRS
-%
-% Install a new font substitution to be applied after other font
-% substitutions.
-\def\fontsubstpost{%
-  \let\fontsubst@mklist\fontsubst@post
-  \@fontsubst
-}%
-%
-% \@fontsubst =MATCH-ATTR -REM-FEATURES +ADD-OR-MOD-ATTRS
-\def\@fontsubst{%
-  % Construct the match string in \fontsubst@match@list.
-  \f@mk@falist\fontsubst@\fontsubst@match@list % =MATCH-ATTR
-}%
-%
-% \fontsubst@ -REM-FEATURES +ADD-OR-MOD-ATTRS
-\def\fontsubst@{%
-  % Construct the rem string in \fontsubst@rem@list.
-  \f@mk@flist\fontsubst@@\fontsubst@rem@list % -REM-FEATURES
-}%
-%
-% \fontsubst@ +ADD-OR-MOD-ATTRS
-\def\fontsubst@@{%
-  % Construct the add string in \fontsubst@add@list.
-  \f@mk@falist\fontsubst@fin\fontsubst@add@list% +ADD-OR-MOD-ATTRS
-}%
-%
-\def\fontsubst@fin{%
-  % Add the new substitution to either head or tail of the current
-  % substitution list.
-  \let\@end\relax
-  \edef\f@subst@list{\fontsubst@mklist}%
-}%
-%
-\def\fontsubst@pre{%
-  \fontsubst@match@list \@end
-  \fontsubst@rem@list   \@end
-  \fontsubst@add@list   \@end
-  \f@subst@list
-}%
-%
-\def\fontsubst@post{%
-  \f@subst@list
-  \fontsubst@match@list \@end
-  \fontsubst@rem@list   \@end
-  \fontsubst@add@list   \@end
-}%
-%
-% Initialize the font substitution list to empty.
-\let\f@subst@list\empty
-%
-% Given the name of an attribute, return index of the attribute
-% in \tempa and index of the attribute's feature in \tempb.
-\def\f@get@af#1{%
-  % Get attribute's index.
-  \expandafter\let\expandafter\tempa\csname fa:#1\endcsname
-  \ifx\tempa\relax
-    \errmessage{Undefined font attribute "#1"}%
-  \fi
-  % Get feature index for the attribute.
-  \expandafter\let\expandafter\tempb\csname faf:#1\endcsname
-  \ifx\tempb\relax
-    \errmessage{Undefined font attribute "#1"}%
-  \fi
-}%
-%
-% Given a comma-separated list of attributes #4, construct a string
-% (saving it in macro #2) as a sequence of `F.A,' specs, where F is
-% the index of the feature to which attribute belongs, and A is the
-% index of the attribute.  After that, call #1.  #3 is an ignored
-% syntax sugar ("=" or "+") from the user-visible command.
-\def\f@mk@falist#1#2#3#4 {%
-  \let#2\empty % Start with a clean slate.
-  \let\do\relax
-  \for\f@i:=#4\do{%
-    \f@get@af\f@i
-    \edef#2{#2\do\tempb.\tempa,}% Append the spec to the list.
-  }%
-  #1%
-}%
-%
-% Given a comma-separated list of features #4, construct a string
-% (saving it in macro #2) as a sequence of `F,' specs, where F is the
-% feature index.  After that, call #1.  After that, call #1.  #3 is an
-% ignored syntax sugar ("-") from the user-visible command.
-\def\f@mk@flist#1#2#3#4 {%
-  \let#2\empty
-  \let\do\relax
-  \for\f@i:=#4\do{%
-    \expandafter\let\expandafter\temp\csname ff:\f@i\endcsname
-    \ifx\temp\relax
-      \errmessage{Undefined font feature "\f@i"}%
-    \fi
-    \edef#2{#2\do\temp,}%
-  }%
-  #1%
-}%
-%
-% \fori{FROM-INCL}{TO-EXCL}{EXEC}
-\def\fori#1#2#3{%
-  \count@=#1\relax
-  \loop
-    #3\relax
-    \advance\count@ by1
-  \ifnum\count@<#2\repeat
-}%
-%
-%
-%
-% Generic filter parsing macros.  Configure by defining these
-% callbacks (before running \f@run@filter on the filter string):
-%
-%   \f@do@filter@match#1.#2,  - match the pair filter/attribute.
-%   \f@do@filter@rem          - unset feature `F,'.
-%   \f@do@filter@add          - add the pair `F.A,'.
-%   \f@hook@filter@end        - action at the end of the filter (upon
-%                               successful match).
-%   \f@hook@filter@skip       - action for \f@filter@gobble@this
-%                               and \f@filter@gobble@all.
-%
-% To skip one filter, \f@do@filter@match can
-% call \f@filter@gobble@this.  To skip all remaining filters,
-% call \f@filter@gobble@all.
-%
-% Note:  Theoretically, we can use a construct like
-%
-%   \csname ff@\csname faf:A\endcsname\endcsname
-%
-% to get the feature corresponding to attribute A.  But this would
-% fail with an incomprehensible error message (`missing \endcsname')
-% if \csname faf:A\endcsname is undefined, so we'd have to test this
-% before each use.  To avoid the overhead, we just add the font
-% feature index to the font filter.
-%
-%
-% \f@run@filter
-%   [MATCH-ATTR\@end REM-FEATURES\@end ADD-OR-MOD-ATTRS\@end [...]]\relax
-\def\f@run@filter{%
-  \let\do\f@do@filter@match
-  \let\@end\f@run@filter@rem
-}%
-%
-% \f@run@filter@rem REM-FEATURES\@end ADD-OR-MOD-ATTRS\@end ... \relax
-\def\f@run@filter@rem{%
-  \let\do\f@do@filter@rem
-  \let\@end\f@run@filter@add
-}%
-%
-% \f@run@filter@add ADD-OR-MOD-ATTRS\@end ... \relax
-\def\f@run@filter@add{%
-  \let\do\f@do@filter@add
-  \let\@end\f@hook@filter@end
-}%
-%
-\def\f@filter@gobble@this#1\@end#2\@end#3\@end{\f@hook@filter@skip 
\f@run@filter}%
-\def\f@filter@gobble@all#1\relax{\f@hook@filter@skip}%
-%
-%
-%
-% Filter parsing callbacks for font substitution.
-%
-% Apply only the first font substitution matching the current font.
-\def\f@subst@once{%
-  \let\f@do@filter@match\f@subst@match@init
-  \let\f@do@filter@rem\f@subst@rem
-  \let\f@do@filter@add\f@subst@add
-  \let\f@hook@filter@end\f@subst@nomore
-  \let\f@hook@filter@skip\f@subst@skip
-  \expandafter\f@run@filter \f@subst@list \relax
-}%
-%
-% Apply all font substitutions in order, allowing substitutions to be
-% chained.
-\def\f@subst{%
-  \let\f@do@filter@match\f@subst@match@init
-  \let\f@do@filter@rem\f@subst@rem
-  \let\f@do@filter@add\f@subst@add
-  \let\f@hook@filter@end\f@subst@again
-  \let\f@hook@filter@skip\f@subst@skip
-  \f@verbose{^^J\the\inputlineno: (Running font substitution filter:}%
-  \expandafter\f@run@filter \f@subst@list \relax
-  \f@verbose{^^J)}%
-}%
-%
-% Match one feature.
-\def\f@subst@match@init{%
-  \f@verbose{^^J(}%
-  \let\do\f@subst@match
-  \do
-}%
-%
-\def\f@subst@match#1.#2,{%
-  \f@verbose{^^Jmatching \csname ff@#1\endcsname.\csname fa@#2\endcsname}%
-  % This funky way to compare the two numbers takes care of \ff#1
-  % being \empty.  However, keep in mind that if \ff#1 is undefined,
-  % the following will make it a \relax.  Space at the end of \ff#1
-  % will be gobbled by TeX, because it's a space following a number.
-  \ifnum 1#2=1\csname ff#1\endcsname \else
-    \f@verbose{^^J  skipping, unmatched
-      \csname ff@#1\endcsname.\csname fa@#2\endcsname}%
-    \expandafter\f@filter@gobble@this % Skip to the next filter.
-  \fi
-}%
-%
-% Remove one feature.
-\def\f@subst@rem#1,{%
-  \f@verbose{^^Junsetting \csname ff@#1\endcsname}%
-  \expandafter\let\csname ff#1\endcsname \empty
-}%
-%
-% Add attribute #2 (which must belong to feature #1).
-\def\f@subst@add#1.#2,{%
-  \f@verbose{^^Jadding \csname ff@#1\endcsname.\csname fa@#2\endcsname}%
-  \expandafter\def\csname ff#1\endcsname{#2 }%
-}%
-%
-\def\f@subst@nomore{\f@verbose{^^J)}\f@filter@gobble@all}%
-\def\f@subst@again{\f@verbose{^^J)}\f@run@filter}%
-\def\f@subst@skip{\f@verbose{^^J)}}%
-%
-%
-%
-% Filter parsing callbacks for pretty-printing the current font filter
-% string.
-%
-% Pretty-print the current font filter string.
-\def\dumpfontfilter{\f@dump@filter\f@subst@list}%
-%
-% Pretty-print the given font filter string.
-\def\f@dump@filter#1{%
-  \let\f@do@filter@match\f@dump@match@init
-  \let\f@do@filter@rem\f@dump@rem@init
-  \let\f@do@filter@add\f@dump@add@init
-  \let\f@hook@filter@end\f@dump@again
-  \let\f@hook@filter@skip\relax
-  \message{\the\inputlineno: (Dumping font substitution filter:}%
-  \expandafter\f@run@filter #1\relax
-  \message{^^J)}%
-}%
-\def\f@dump@match@init{%
-  \message{^^J(^^J=}%
-  \def\do##1.##2,{\message{\csname ff@##1\endcsname.\csname fa@##2\endcsname}}%
-  \do
-}%
-\def\f@dump@rem@init{%
-  \message{^^J-}%
-  \def\do##1,{\message{\csname ff@##1\endcsname}}%
-  \do
-}%
-\def\f@dump@add@init{%
-  \message{^^J+}%
-  \def\do##1.##2,{\message{\csname ff@##1\endcsname.\csname fa@##2\endcsname}}%
-  \do
-}%
-\def\f@dump@again{\message{^^J)}\f@run@filter}%
-
-\endinput
-
-
-\ftracelevel=3
-
-\newfontattr family   CMRoman
-\newfontattr family   CMTypewriter
-\newfontattr family   CMSansSerif
-\newfontattr encoding OT1
-\newfontattr encoding OML
-\newfontattr encoding OMS
-\newfontattr encoding OMX
-\newfontattr slant    up
-\newfontattr slant    sl
-\newfontattr slant    it
-\newfontattr slant    ui
-
-\fontsubstpre =CMRoman -slant +OT1
-%\dumpfontfilter
-
-\fontsubstpre =up - +CMRoman,OML
-%\dumpfontfilter
-
-\fontsubstpost =CMTypewriter -encoding +
-%\dumpfontfilter
-
-\fontsubstpost =CMRoman,up,OML -slant +OMX
-%\dumpfontfilter
-
-\fontsubstpre =it,CMTypewriter,OMX -family,encoding +OT1
-%\dumpfontfilter
-
-\fontsubstpost =CMSansSerif,ui -encoding +CMTypewriter,OMX,it
-%\dumpfontfilter
-
-\fontsubstpost =it,CMTypewriter,OMX -encoding,family +ui,OMS
-
-\dumpfontfilter
-\dumpfontfeatures
-
-%\newfont 10 cmbx10 {}
-%\message{^^J***\f@name}
-\newfont 10 1000 cmti10 CMRoman,it,OT1
-\message{^^J***\f@name}
-\newfont 10 1000 cmt10 CMRoman,OT1
-\message{^^J***\f@name}
-\newfont 12pt 1000 cmti12 CMRoman,it,OT1
-\message{^^J***\f@name}
-\newfont 10 1000 cmmi10 ui,OMS
-\message{^^J***\f@name}
-\newfont 8 1000 cmti8 CMRoman,it,OT1
-\message{^^J***\f@name}
-\newfont 11 1000 cmti11 CMRoman,it,OT1
-\message{^^J***\f@name}
-\newfont 8 1000 cmt8 CMRoman,OT1
-\message{^^J***\f@name}
-\newfont 9 1000 cmt9 CMRoman,OT1
-\message{^^J***\f@name}
-\newfont 0.2cm 1000 cmti1cm CMRoman,it,OT1
-\message{^^J***\f@name}
-\newfont 1.in 1000 cmin it,OT1
-\message{^^J***\f@name}
-\newfont 5. 1000 cmot1 OT1
-\message{^^J***\f@name}
-
-\setfont        {CMRoman,it,0.3cm,OMS}% -> family=CMRoman encoding=OT1 
slant=<unset>
-\dumpfontfeatures
-\setfont        {CMTypewriter,it,OMX}%  -> family=<unset> encoding=OT1 slant=it
-\dumpfontfeatures
-\addfontattrs   {7,up}%                 -> family=CMRoman encoding=OT1 
slant=<unset>
-\dumpfontfeatures
-\remfontfeatures{family}%               -> family=<unset> encoding=OT1 
slant=<unset>
-\dumpfontfeatures
-\modfont        {}{CMSansSerif,ui}%     -> family=<unset> encoding=OMS slant=ui
-\dumpfontfeatures
-\remfontfeatures{}%                     -> family=<unset> encoding=OMS slant=ui
-\dumpfontfeatures
-\addfontattrs   {}%                     -> family=<unset> encoding=OMS slant=ui
-\dumpfontfeatures
-\modfont        {}{}%                   -> family=<unset> encoding=OMS slant=ui
-\dumpfontfeatures
-
-\message{^^J*********************************************************}
-
-\newfontattr family   TestFamily
-\newfont 5. 1000 sz5-1.0-1 TestFamily
-\message{^^J***\f@name}
-\newfont 5. 1000 sz5-1.0-2 TestFamily
-\message{^^J***\f@name}
-\newfont 5. 1400 sz5-1.4-1 TestFamily
-\message{^^J***\f@name}
-\newfont 5. 900 sz5-0.9-1 TestFamily
-\message{^^J***\f@name}
-\newfont 5. 900 sz5-0.9-2 TestFamily
-\message{^^J***\f@name}
-\newfont 5. 1400 sz5-1.4-2 TestFamily
-\message{^^J***\f@name}
-\setfont        {CMRoman,9pt}%          ->
-
-
-\newfont 10 1000 cmr10 CMRoman,rm,OT1
-\message{^^J***\f@name}
-
-\bye
diff --git a/contrib/texifont/fattr.tex.pairs b/contrib/texifont/fattr.tex.pairs
deleted file mode 100644
index 675c7073b2..0000000000
--- a/contrib/texifont/fattr.tex.pairs
+++ /dev/null
@@ -1,644 +0,0 @@
-% font set              Computer Modern, Latin Modern, Bera
-%   font family         CMRoman, CMTypewriter, CMSansSerif
-%
-% font feature          slant, weight, width
-%   font attribute      sl, it, bold, cond
-%
-% fontfile
-%
-% Font features and attributes:
-%
-%     size              design point size
-%     encoding          ot1, oml, oms, omx, t1, ts1, t2a
-%     slant             up, sl, it, ui, cursive
-%     weight            lt, med, semib, bold, bx,
-%     width             cond, normal, ext
-%     figures           oldfigures, liningfigures
-%     caps              normalcaps, allcaps, smallcaps, nocaps
-
-\input eplain
-
-\catcode`@=11
-%
-% \fsz:CMRoman/<OT1>/<up>/<med>/<normal>/<liningfigures>/<normalcaps>
-% ->
-% cmr5/5,cmr7/7,cmr8/8,cmr9/9,cmr10/10,cmr12/12,cmr17/17,.
-%
-% {CMRoman}{b}{bx}
-% {OML,CMRoman}{m}{up}
-% {OML,CMRoman}{bx}{up}
-% {OML,CMRoman}{b}{bx}
-% {CMSans}{it}{sl}
-% {CMSans}{b}{bx}
-% {CMSans,OML}{}{CMRoman}
-% {ConcreteRoman}{b}{LMSans,b}
-% {OT1,CMMath}{}{CMRoman,n}
-% {OMX,CMMath}{bx}{m}
-%
-
-%
-%
-%
-% Font-related logging.  Meanings of \ftracelevel values are:
-%
-%   0 - none
-%   1 - warning
-%   2 - debug
-%   3 - verbose
-\newcount\ftracelevel
-\ftracelevel=1
-%
-\def\f@warning{\f@trace0 }%
-\def\f@debug  {\f@trace1 }%
-\def\f@verbose{\f@trace2 }%
-\def\f@trace#1{%
-  \ifnum#1<\ftracelevel
-    \expandafter\message
-  \else
-    \expandafter\gobble
-  \fi
-}%
-%
-%
-%
-% Construction of font filter strings.
-%
-% \fontsubstpre{MATCH-ATTR}{REM-FEATURES}{ADD-OR-MOD-ATTRS}
-%
-% Install a new font substitution to be applied before other font
-% substitutions.
-\def\fontsubstpre{%
-  \let\fontsubst@mklist\fontsubst@pre
-  \@fontsubst
-}%
-%
-% \fontsubstpost{MATCH-ATTR}{REM-FEATURES}{ADD-OR-MOD-ATTRS}
-%
-% Install a new font substitution to be applied after other font
-% substitutions.
-\def\fontsubstpost{%
-  \let\fontsubst@mklist\fontsubst@post
-  \@fontsubst
-}%
-%
-% \@fontsubst{MATCH-ATTR}{REM-FEATURES}{ADD-OR-MOD-ATTRS}
-\def\@fontsubst{%
-  % Construct the match string in \fontsubst@match@list.
-  \f@mk@falist\fontsubst@\fontsubst@match@list%{MATCH-ATTR}
-}%
-%
-% \fontsubst@{REM-FEATURES}{ADD-OR-MOD-ATTRS}
-\def\fontsubst@{%
-  % Construct the rem string in \fontsubst@rem@list.
-  \f@mk@flist\fontsubst@@\fontsubst@rem@list%{REM-FEATURES}
-}%
-%
-% \fontsubst@{ADD-OR-MOD-ATTRS}
-\def\fontsubst@@{%
-  % Construct the add string in \fontsubst@add@list.
-  \f@mk@falist\fontsubst@fin\fontsubst@add@list%{ADD-OR-MOD-ATTRS}
-}%
-%
-\def\fontsubst@fin{%
-  % Add the new substitution to either head or tail of the current
-  % substitution list.
-  \let\@end\relax
-  \edef\f@subst@list{\fontsubst@mklist}%
-}%
-%
-\def\fontsubst@pre{%
-  \fontsubst@match@list \@end
-  \fontsubst@rem@list   \@end
-  \fontsubst@add@list   \@end
-  \f@subst@list
-}%
-%
-\def\fontsubst@post{%
-  \f@subst@list
-  \fontsubst@match@list \@end
-  \fontsubst@rem@list   \@end
-  \fontsubst@add@list   \@end
-}%
-%
-% Initialize the font substitution list to empty.
-\let\f@subst@list\empty
-%
-% Given the name of an attribute, return index of the attribute
-% in \tempa and index of the attribute's feature in \tempb.
-\def\f@get@af#1{%
-  % Get attribute's index.
-  \expandafter\let\expandafter\tempa\csname fa:#1\endcsname
-  \ifx\tempa\relax
-    \errmessage{Undefined font attribute `#1'}%
-  \fi
-  % Get feature index for the attribute.
-  \expandafter\let\expandafter\tempb\csname faf:#1\endcsname
-  \ifx\tempb\relax
-    \errmessage{Undefined font attribute `#1'}%
-  \fi
-}%
-%
-% Given a comma-separated list of attributes #3, construct a string
-% (saving it in macro #2) as a sequence of `F.A,' specs, where F is
-% the index of the feature to which attribute belongs, and A is the
-% index of the attribute.  After that, call #1.
-\def\f@mk@falist#1#2#3{%
-  \let#2\empty % Start with a clean slate.
-  \let\do\relax
-  \for\f@i:=#3\do{%
-    \f@get@af\f@i
-    \edef#2{#2\do\tempb.\tempa,}% Append the spec to the list.
-  }%
-  #1%
-}%
-%
-% Given a comma-separated list of features #3, construct a string
-% (saving it in macro #2) as a sequence of `F,' specs, where F is the
-% feature index.  After that, call #1.
-\def\f@mk@flist#1#2#3{%
-  \let#2\empty
-  \let\do\relax
-  \for\f@i:=#3\do{%
-    \expandafter\let\expandafter\temp\csname ff:\f@i\endcsname
-    \ifx\temp\relax
-      \errmessage{Undefined font feature `\f@i'}%
-    \fi
-    \edef#2{#2\do\temp,}%
-  }%
-  #1%
-}%
-%
-% \fori{FROM-INCL}{TO-EXCL}{EXEC}
-\def\fori#1#2#3{%
-  \count@=#1\relax
-  \loop
-    #3\relax
-    \advance\count@ by1
-  \ifnum\count@<#2\repeat
-}%
-%
-%
-%
-% Font feature manipulations.
-%
-% \setfont{ATTRS}
-\def\setfont{%
-  % Empty \ff0, \ff1, ..., \ff<ffeature_count - 1>.
-  \ff@reset
-  \addfontattrs % Substitutes and sets the font.
-}%
-%
-% \modfont{REM-FEATURES}{ADD-OR-MOD-ATTRS}
-\def\modfont#1{%
-  \unsetfontfeatures{#1}%
-  \addfontattrs % Substitutes and sets the font.
-}%
-%
-% \addfontattrs{ADD-OR-MOD-ATTRS}
-\def\addfontattrs#1{%
-  % For each feature with attribute in #1, set \ff<f> to <a>, where
-  % <f> is the feature index and <a> is the attribute index.
-  \for\f@i:=#1\do{%
-    \f@get@af\f@i
-    \expandafter\let\csname ff\tempb\endcsname \tempa
-  }%
-  % Substitute the font.
-  \f@subst
-  % Set the font, if we've found one.
-}%
-%
-% \remfontfeatures{REM-FEATURES}
-\def\remfontfeatures#1{%
-  \unsetfontfeatures{#1}%
-  % Substitute the font.
-  \f@subst
-  % Set the font, if we've found one.
-}%
-%
-\def\unsetfontfeatures#1{%
-  % Unset \ff<f> for each feature <f> in #1.
-  \for\f@i:=#1\do{%
-    \expandafter\let\expandafter\temp\csname ff:\f@i\endcsname
-    \ifx\temp\relax
-      \errmessage{Undefined font feature `\f@i'}%
-    \fi
-    \expandafter\let \csname ff\temp\endcsname \empty
-  }%
-}%
-%
-% Pretty-print the current settings of font features.
-\def\dumpfontfeatures{%
-  \def\fa@{}% This will be used for features which are not set,
-            % for which \ffN is \empty.
-  \message{^^JCurrent font features: (}%
-  \fori0\ffeatcount{\message{%
-    \csname ff@\the\count@\endcsname.%
-    \expandafter\dump@ff\expandafter{\csname ff\the\count@\endcsname}}}%
-  \message{)}%
-}%
-\def\dump@ff#1{\csname fa@#1\endcsname}%
-%
-%
-%
-% Generic filter parsing macros.  Configure by defining these
-% callbacks (before running \f@run@filter on the filter string):
-%
-%   \f@do@filter@match#1.#2,  - match the pair filter/attribute
-%   \f@do@filter@rem    - unset feature `F,'
-%   \f@do@filter@add    - add the pair `F.A,'
-%   \f@end@filter@add   - action at the end of the filter.
-%
-% We could avoid adding font feature together with an attribute and
-% use a construct like \csname ff@\csname faf:A\endcsname\endcsname
-% to get the feature corresponding to attribute A.  But this would
-% fail with an incomprehensible error message (`missing \endcsname')
-% if \csname faf:A\endcsname is undefined, so we'd have to test this
-% before each use.  To avoid the overhead, we just add the font
-% feature index to the font filter.
-%
-% \f@run@filter
-%   [MATCH-ATTR\@end REM-FEATURES\@end ADD-OR-MOD-ATTRS\@end [...]]\relax
-\def\f@run@filter{%
-  \let\do\f@do@filter@match
-  \let\@end\f@run@filter@rem
-}%
-\def\f@run@filter@again{\f@verbose{^^J)}\f@run@filter}%
-%
-% \f@run@filter@rem REM-FEATURES\@end ADD-OR-MOD-ATTRS\@end ... \relax
-\def\f@run@filter@rem{%
-  \let\do\f@do@filter@rem
-  \let\@end\f@run@filter@add
-}%
-%
-% \f@run@filter@add ADD-OR-MOD-ATTRS\@end ... \relax
-\def\f@run@filter@add{%
-  \let\do\f@do@filter@add
-  \let\@end\f@end@filter@add
-}%
-%
-\def\f@filter@gobble@this#1\@end#2\@end#3\@end{\f@run@filter@again}%
-\def\f@filter@gobble@all#1\relax{}%
-%
-%
-%
-% Filter parsing callbacks for font substitution.
-%
-% Apply only the first font substitution matching the current font.
-\def\f@subst@once{%
-  \let\f@do@filter@match\f@subst@match@init
-  \let\f@do@filter@rem\f@subst@rem
-  \let\f@do@filter@add\f@subst@add
-  \let\f@end@filter@add\f@subst@nomore
-  \expandafter\f@run@filter \f@subst@list \relax
-}%
-%
-% Apply all font substitutions in order, allowing substitutions to be
-% chained.
-\def\f@subst{%
-  \let\f@do@filter@match\f@subst@match@init
-  \let\f@do@filter@rem\f@subst@rem
-  \let\f@do@filter@add\f@subst@add
-  \let\f@end@filter@add\f@run@filter@again
-  \expandafter\f@run@filter \f@subst@list \relax
-}%
-%
-% Match one feature.
-\def\f@subst@match@init{%
-  \f@verbose{^^J(}%
-  \let\do\f@subst@match
-  \do
-}%
-%
-\def\f@subst@match#1.#2,{%
-  \f@verbose{^^Jmatching \csname ff@#1\endcsname.\csname fa@#2\endcsname}%
-  % This funky way to compare the two numbers takes care of \ff#1
-  % being \empty.  However, keep in mind that if \ff#1 is undefined,
-  % the following will make it a \relax.
-  \ifnum 1#2=1\csname ff#1\endcsname \else
-    \f@verbose{^^J  skipping unmatched
-      \csname ff@#1\endcsname.\csname fa@#2\endcsname}%
-    \expandafter\f@filter@gobble@this % Skip to the next filter.
-  \fi
-}%
-%
-% Remove one feature.
-\def\f@subst@rem#1,{%
-  \f@verbose{^^Junsetting \csname ff@#1\endcsname}%
-  \expandafter\let\csname ff#1\endcsname \empty
-}%
-%
-% Add attribute #2 (which must belong to feature #1).
-\def\f@subst@add#1.#2,{%
-  \f@verbose{^^Jadding \csname ff@#1\endcsname.\csname fa@#2\endcsname}%
-  \expandafter\def\csname ff#1\endcsname{#2}%
-}%
-%
-\def\f@subst@nomore{\f@verbose{^^J)}\f@filter@gobble@all}%
-%
-%
-%
-% Filter parsing callbacks for pretty-printing the current font filter
-% string.
-%
-%\def\dumpfontfilter{%
-%}%
-% Pretty-print the current font filter string.
-\def\dumpfontfilter{\f@dump@filter\f@subst@list}%
-%
-% Pretty-print the given font filter string.
-\def\f@dump@filter#1{%
-  \message{^^J(}%
-  \let\do\space
-  \expandafter\f@dump@filter@#1\relax
-}%
-%
-\def\f@dump@filter@#1\@end#2\@end#3\@end#4\relax{%
-  \message{^^J=#1^^J-#2^^J+#3^^J}%
-  \def\temp{#4}%
-  \ifx\temp\empty
-    \message{^^J)}%
-    \expandafter\f@filter@gobble@all
-  \else
-    \expandafter\f@dump@filter@
-  \fi
-  #4\relax
-}%
-%
-%
-%
-% Defining new font features.
-%
-\newcount\fcacheidx % Font cache index.
-\newcount\ffeatcount % Font feature count.
-\let\ff@reset\empty % We'll build this up as we add font features.
-%
-% \newfontattr FONTFEATURE FONTATTR
-\def\newfontattr #1 #2 {%
-  % Define a new font attribute, if it's not defined yet.
-  \expandafter\ifx\csname fa:#2\endcsname \relax
-  \else
-    \errmessage{Font attribute `#2' already defined as part
-      of font feature `\csname ff@\csname faf:#2\endcsname\endcsname'}%
-  \fi
-  \expandafter\xdef\csname fa:#2\endcsname{\the\fcacheidx}%
-  \expandafter\xdef\csname fa@\the\fcacheidx\endcsname{#2}%
-  % Invalidate current font cache (and update index for the next font
-  % attribute).
-  \global\advance\fcacheidx by1
-  %
-  % Define a new font feature, if it's not defined yet.
-  \expandafter\ifx\csname ff:#1\endcsname \relax
-    \expandafter\xdef\csname ff:#1\endcsname{\the\ffeatcount}%
-    \expandafter\xdef\csname ff@\the\ffeatcount\endcsname{#1}%
-    % Update \ff@reset to clear the new font feature cell \ffN.
-    \toks@=\expandafter{\ff@reset}%
-    \xdef\ff@reset{\the\toks@
-      \let\expandafter\noexpand\csname ff\the\ffeatcount\endcsname
-        \noexpand\empty}%
-    % Set \ffN to \empty, otherwise it will be set to \relax the first
-    % time we try to access it through \csname...\endcsname, and we
-    % depend on it to be either a number or \empty.
-    \global\expandafter\let\csname ff\the\ffeatcount\endcsname \empty
-    %
-    \global\advance\ffeatcount by1
-    % We've added a new font feature, so we should invalidate current
-    % font cache.  But we've already done so above when adding the new
-    % font attribute.
-    %\global\advance\fcacheidx by1
-  \fi
-  % Assign the font attribute to the font feature.
-  \expandafter\xdef\csname faf:#2\endcsname{\csname ff:#1\endcsname}%
-}%
-%
-% \newfontfamily FONTSET FONTFAMILY
-\def\newfontfamily #1 #2 {%
-  \f@def{fset}{#1}{ffam}{#2}{Font family}%
-  \f@defadd{fset:#1}{#2}%
-}%
-%
-% \f@def {PARENT-PREFIX} {PARENT-NAME} {CHILD-PREFIX} {CHILD-NAME} 
{CHILD-DESCR}
-\def\f@def#1#2#3#4#5{%
-  % Define parent.
-  \expandafter\gdef\csname #1:#2\endcsname
-  \expandafter\ifx\csname#1:#2\endcsname\relax
-    \expandafter\gdef\csname#1:#2\endcsname{}%
-  \else
-    \let\do\space
-    \errmessage{#3 #2 already defined as `\csname#1:#2\endcsname'}%
-  \fi
-}%
-
-
-
-\ftracelevel=3
-
-\newfontattr family   CMRoman
-\newfontattr family   CMTypewriter
-\newfontattr family   CMSansSerif
-\newfontattr encoding OT1
-\newfontattr encoding OML
-\newfontattr encoding OMS
-\newfontattr encoding OMX
-\newfontattr slant    up
-\newfontattr slant    sl
-\newfontattr slant    it
-\newfontattr slant    ui
-
-%\expandafter\def\csname ff:family\endcsname{0}%
-%\expandafter\def\csname ff:encoding\endcsname{1}%
-%\expandafter\def\csname ff:slant\endcsname{2}%
-%
-%\expandafter\def\csname fa:CMRoman\endcsname{0}%
-%\expandafter\def\csname fa:CMTypewriter\endcsname{1}%
-%\expandafter\def\csname fa:CMSansSerif\endcsname{2}%
-%
-%\expandafter\def\csname fa:OT1\endcsname{3}%
-%\expandafter\def\csname fa:OML\endcsname{4}%
-%\expandafter\def\csname fa:OMS\endcsname{5}%
-%\expandafter\def\csname fa:OMX\endcsname{6}%
-%
-%\expandafter\def\csname fa:up\endcsname{7}%
-%\expandafter\def\csname fa:sl\endcsname{8}%
-%\expandafter\def\csname fa:it\endcsname{9}%
-%\expandafter\def\csname fa:ui\endcsname{10}%
-%
-%\ffeatcount=3
-%\fattrcount=11
-%
-%\expandafter\def\csname faf:CMRoman\endcsname{0}%
-%\expandafter\def\csname faf:CMTypewriter\endcsname{0}%
-%\expandafter\def\csname faf:CMSansSerif\endcsname{0}%
-%
-%\expandafter\def\csname faf:OT1\endcsname{1}%
-%\expandafter\def\csname faf:OML\endcsname{1}%
-%\expandafter\def\csname faf:OMS\endcsname{1}%
-%\expandafter\def\csname faf:OMX\endcsname{1}%
-%
-%\expandafter\def\csname faf:up\endcsname{2}%
-%\expandafter\def\csname faf:sl\endcsname{2}%
-%\expandafter\def\csname faf:it\endcsname{2}%
-%\expandafter\def\csname faf:ui\endcsname{2}%
-
-\let\do\relax
-
-\fontsubstpre{CMRoman}{slant}{OT1}
-\message{^^J\f@subst@list}
-
-\fontsubstpre{up}{}{CMRoman,OML}
-\message{^^J\f@subst@list}
-
-\fontsubstpost{CMSansSerif}{}{OMX}
-\message{^^J\f@subst@list}
-
-\fontsubstpost{CMTypewriter}{encoding}{}
-\message{^^J\f@subst@list}
-
-\fontsubstpost{CMRoman,up,OML}{slant}{OT1}
-\message{^^J\f@subst@list}
-
-\fontsubstpre{it,CMTypewriter,OMX}{family,encoding}{OT1}
-\message{^^J\f@subst@list}
-
-\fontsubstpost{it,CMTypewriter,OMX}{encoding,family}{ui,OMS}
-\message{^^J\f@subst@list}
-
-%        0.0, 2.9, 1.5
-\setfont{CMRoman,it,OMS}% -> , 4, 9
-\dumpfontfeatures
-%        0.1, 2.9, 1.5
-%\setfont{CMTypewriter,it,OMS}% -> 1, , 9
-%%        0.2, 2.9, 1.5
-%\setfont{CMSansSerif,it,OMS}% -> 2, 6, 9
-%%        0.1, 2.9, 1.6
-%\setfont{CMTypewriter,it,OMX}% -> , 5, 10
-%%        0.0, 2.7, 1.3
-%\setfont{CMRoman,up,OT1}% -> , 4, 7
-%        0.0, 2.7, 1.4
-%\setfont{CMRoman,up,OML}% -> 0, 3, 
-\dumpfontfilter
-
-
-%%        0.0, 2.9, 1.4
-%\setfont{CMRoman,it,OML}% -> , 4, 9
-%\dumpffs
-%\modfont{}{CMTypewriter}% -> 1, 4, 9 -> 1, , 9
-%\dumpffs
-%\modfont{slant}{ui,CMSansSerif}% -> 2, , 10 ->
-%\dumpffs
-
-\bye
-
-
-
-% \setfont{CMRoman,b,sl}
-% \modfont{}{up} % CMRoman,b,up
-
-
-\def\test{ii,iv,iii,i}
-\def\i{0}
-\def\ii{1}
-\def\iii{2}
-\def\iv{3}
-
-\count0=2147483647
-\count@=-1
-
-% \f@sort{MAX-ITEM-IDX}{ITEMS}{ITEM-CS-PREFIX}
-\def\f@sort#1#2#3{%
-  \let\f@sorted\empty
-  % Empty \f@sort0, \f@sort1, ..., \f@sort<MAX-ITEM-IDX>.
-  \fori{0}{#1}{\expandafter\let\csname f@sort\the\count@\endcsname \empty}%
-  % Set \f@sort<X>, where <X> is the value of \<ITEM-CS-PREFIX><ITEM>.
-  \for\f@sort@i:=#2\do{%
-    \expandafter\edef\csname f@sort\csname#3\f@sort@i\endcsname\endcsname{%
-      \csname \f@sort@i\endcsname,%
-    }%
-  }%
-  % Combine all \f@sort<X> into \f@sorted.
-  \fori{0}{#1}{%
-    \edef\f@sorted{%
-      \f@sorted
-      \csname f@sort\the\count@\endcsname
-    }%
-  }%
-}%
-
-\f@sort{4}{\test}{}
-\show\f@sorted
-\bye
-
-
-
-
-% \f@def {PREFIX} {NAME} {DESCR}
-\f@def#1#2#3{%
-  \expandafter\ifx\csname#1:#2\endcsname\relax
-    \expandafter\gdef\csname#1:#2\endcsname{}%
-  \else
-    \let\do\space
-    \errmessage{#3 #2 already defined as `\csname#1:#2\endcsname'}%
-  \fi
-}%
-
-% \f@defadd {PARENT} {CHILD}
-\f@defadd#1#2{%
-  \let\do\relax
-  \expandafter\edef\expandafter\temp\expandafter{%
-    \csname #1\endcsname \do #2}%
-  \global\expandafter\let\csname #1\endcsname \temp
-}%
-
-% \newfontset FONTSET
-\def\newfontset #1 {%
-  \f@def{fset}{#1}{Font set}
-}%
-
-% \newfontfamily FONTSET FONTFAMILY
-\def\newfontfamily #1 #2 {%
-  \f@def{ffam}{#2}{Font family}%
-  \f@defadd{fset:#1}{#2}%
-}%
-
-% \newfontfeature FONTFEATURE
-\def\newfontfeature #1 {%
-  \f@def{ff}{#1}{Font feature}%
-}%
-
-% \newfontattr FONTFEATURE FONTATTR
-\def\newfontattr #1 #2 {%
-  \f@def{fa}{#2}{Font attribute}%
-  \f@defadd{ff:#1}{#2}%
-}%
-
-% \newfont FONTFAMILY SIZE ENCODING ATTRIBUTES
-\def\newfont #1 #2 #3 #4 {%
-}%
-
-\def\f@addattrchar#1#2{%
-\bgroup
-  \uccode`a=#2%
-  \uppercase{%
-\egroup
-    \xdef#1{a#1}%
-  }%
-}%
-
-\def\fori#1#2#3{%
-  \count@=#1\relax
-  \loop
-    #3\relax
-    \advance\count@ by1
-  \ifnum\count@<#2\repeat
-}%
-
-\def\f@resetattrs#1{%
- \gdef#1{fa:}%
- \fori{0}{20}{\f@addattrchar#1{`\*}}%
-}%
-
-\newcount\numfontfeatures
-
-\f@resetattrs\f@attributes
-\show\f@attributes
-
-\bye
diff --git a/contrib/texifont/fdefs.tex b/contrib/texifont/fdefs.tex
deleted file mode 100644
index a16eac514f..0000000000
--- a/contrib/texifont/fdefs.tex
+++ /dev/null
@@ -1,176 +0,0 @@
-\input fattr
-\ftracelevel=4
-
-\newfontattrs encoding  OT1,OMS,OML,OMX,T1,TS1,T2A
-\newfontattrs slant     upright,slanted,italic,unitalic,cursive
-\newfontattrs weight    light,medium,semibold,bold,boldext
-\newfontattrs figstyle  oldfigs,liningfigs
-\newfontattrs caps      normalcaps,capssmallcaps,allcaps,nocaps
-
-%
-%
-%\newfont 1000 aoeu 12.3 aa,b,c
-%\newfont 1000 hhth 83.6pt
-%\newfont 1000 xufd 24.8 
-%
-%\newfont 1000 huxo 8.3pt dd
-%\newfont 1000 ofeo 35.4
-%\newfont 1000 ixqe 217pt 
-%
-%\newfont 1000 huxo 9pt {}
-%\newfont 1000 ofeo 2pt 
-%\newfont 1000 ixqe 4
-%\bye
-%
-%
-
-
-%
-% Computer Modern Roman.
-%
-\newfontattr family CMRoman
-% Medium weight.
-% Upright.
-\newfont 1000 cmr5   5  CMRoman,OT1,upright,medium,liningfigs,normalcaps
-\newfont 1000 cmr6   6  {}
-\newfont 1000 cmr7   7  {}
-\newfont 1000 cmr8   8  {}
-\newfont 1000 cmr9   9  {}
-\newfont 1000 cmr10  10 {}
-\newfont 1000 cmr12  12 {}
-\newfont 1000 cmr17  17 {}
-% Italic.
-\newfont 1000 cmti7  7  CMRoman,OT1,italic,medium,liningfigs,normalcaps
-\newfont 1000 cmti8  8  {}
-\newfont 1000 cmti9  9  {}
-\newfont 1000 cmti10 10 {}
-\newfont 1000 cmti12 12 {}
-% Slanted.
-\newfont 1000 cmsl6  6  CMRoman,OT1,slanted,medium,liningfigs,normalcaps % 
From cmextra.
-\newfont 1000 cmsl8  8  {}
-\newfont 1000 cmsl9  9  {}
-\newfont 1000 cmsl10 10 {}
-\newfont 1000 cmsl12 12 {}
-% Caps and small caps.
-\newfont 1000 cmcsc10 10 CMRoman,OT1,upright,medium,liningfigs,capssmallcaps
-% Unslanted italic (for slanted pound sterling).
-\newfont 1000 cmu10   10 CMRoman,OT1,unitalic,medium,liningfigs,normalcaps
-%
-% Bold weight.
-\newfont 1000 cmb10  10 CMRoman,OT1,upright,bold,liningfigs,normalcaps
-\fontsubstpost =CMRoman,bold - +boldext
-%
-% Bold extended.
-% Upright.
-\newfont 1000 cmbx5  5  CMRoman,OT1,upright,boldext,liningfigs,normalcaps
-\newfont 1000 cmbx6  6  {}
-\newfont 1000 cmbx7  7  {}
-\newfont 1000 cmbx8  8  {}
-\newfont 1000 cmbx9  9  {}
-\newfont 1000 cmbx10 10 {}
-\newfont 1000 cmbx12 12 {}
-% Italic.
-\newfont 1000 cmbxti7  7  CMRoman,OT1,italic,boldext,liningfigs,normalcaps  % 
from cmextra
-\newfont 1000 cmbxti10 10 {}
-\newfont 1000 cmbxti12 12 {} % from cmextra
-% Slanted.
-\newfont 1000 cmbxsl10 10 CMRoman,OT1,slanted,boldext,liningfigs,normalcaps
-%
-% Math letters.
-\fontsubstpost =CMRoman,OML - +upright
-\fontsubstpost =CMRoman,OML - +oldfigs
-% Medium weight.
-\newfont 1000 cmmi5  5  CMRoman,OML,upright,medium,oldfigs,normalcaps
-\newfont 1000 cmmi6  6  {}
-\newfont 1000 cmmi7  7  {}
-\newfont 1000 cmmi8  8  {}
-\newfont 1000 cmmi9  9  {}
-\newfont 1000 cmmi10 10 {}
-\newfont 1000 cmmi12 12 {}
-% Bold extended.
-\newfont 1000 cmmib5  5  CMRoman,OML,upright,boldext,oldfigs,normalcaps
-\newfont 1000 cmmib6  6  {}
-\newfont 1000 cmmib7  7  {}
-\newfont 1000 cmmib8  8  {}
-\newfont 1000 cmmib9  9  {}
-\newfont 1000 cmmib10 10 {}
-%
-% Math symbols.
-\fontsubstpost =CMRoman,OMS - +upright
-% Medium weight.
-\newfont 1000 cmsy5  5  CMRoman,OMS,upright,medium
-\newfont 1000 cmsy6  6  {}
-\newfont 1000 cmsy7  7  {}
-\newfont 1000 cmsy8  8  {}
-\newfont 1000 cmsy9  9  {}
-\newfont 1000 cmsy10 10 {}
-% Bold extended.
-\newfont 1000 cmbsy5  5  CMRoman,OMS,upright,boldext
-\newfont 1000 cmbsy6  6  {}
-\newfont 1000 cmbsy7  7  {}
-\newfont 1000 cmbsy8  8  {}
-\newfont 1000 cmbsy9  9  {}
-\newfont 1000 cmbsy10 10 {}
-%
-% Computer Modern Sans.
-%
-\newfontattr family CMSans
-\fontsubstpost =CMSans,OML - +CMRoman
-\fontsubstpost =CMSans,OMS - +CMRoman
-\fontsubstpost =CMSans,italic - +slanted
-\fontsubstpost =CMSans,bold - +boldext
-% Medium weight.
-% Upright.
-\newfont 1000 cmss8  8  CMSans,OT1,upright,medium,liningfigs,normalcaps
-\newfont 1000 cmss9  9  {}
-\newfont 1000 cmss10 10 {}
-\newfont 1000 cmss12 12 {}
-\newfont 1000 cmss17 17 {}
-% Slanted.
-\newfont 1000 cmssi8  8  CMSans,OT1,slanted,medium,liningfigs,normalcaps
-\newfont 1000 cmssi9  9  {}
-\newfont 1000 cmssi10 10 {}
-\newfont 1000 cmssi12 12 {}
-\newfont 1000 cmssi17 17 {}
-%
-% Bold extended.
-\newfont 1000 cmssbx10  10 CMSans,OT1,upright,boldext,liningfigs,normalcaps
-\newfont 1000 cmssbxo10 10 CMSans,OT1,slanted,boldext,liningfigs,normalcaps % 
from cmextra
-%
-% Computer Modern Typewriter.
-%
-\newfontattr family CMMono
-\fontsubstpost =CMMono,OML - +CMRoman,oldfigs
-\fontsubstpost =CMMono,OMS - +CMRoman
-% Medium weight.
-% Upright.
-\newfont 1000 cmtt8  8  CMMono,OT1,upright,medium,liningfigs,normalcaps
-\newfont 1000 cmtt9  9  {}
-\newfont 1000 cmtt10 10 {}
-\newfont 1000 cmtt12 12 {}
-% Italic.
-\newfont 1000 cmitt9  9  CMMono,OT1,italic,medium,liningfigs,normalcaps % from 
cmextra
-\newfont 1000 cmitt10 10 {}
-\newfont 1000 cmitt12 12 {} % from cmextra
-% Slanted.
-\newfont 1000 cmsltt9  9  CMMono,OT1,slanted,medium,liningfigs,normalcaps % 
from cmextra
-\newfont 1000 cmsltt10 10 {}
-
-
-\setfont{OML,CMRoman,upright,medium,liningfigs,normalcaps}
-
-ABCabcdf
-
-\addfontattrs{CMMono}
-\dumpfontfeatures
-ABCabcdf
-
-\addfontattrs{CMRoman}
-\dumpfontfeatures
-ABCabcdf
-
-\addfontattrs{OT1}
-\dumpfontfeatures
-ABCabcdf
-
-\bye
diff --git a/contrib/texifont/fsel.tex b/contrib/texifont/fsel.tex
deleted file mode 100644
index 332ff6092a..0000000000
--- a/contrib/texifont/fsel.tex
+++ /dev/null
@@ -1,1703 +0,0 @@
-%
-% These are in Texinfo.
-%
-% We never want plain's \outer definition of \+ in Texinfo.
-% For @tex, we can use \tabalign.
-\let\+ = \relax
-%
-\def\gobble#1{}%
-\def\linenumber{l.\the\inputlineno:\space}%
-\newlinechar = `^^J
-% Set the baselineskip to #1, and the lineskip and strut size
-% correspondingly.  There is no deep meaning behind these magic numbers
-% used as factors; they just match (closely enough) what Knuth defined.
-%
-\def\lineskipfactor{.08333}%
-\def\strutheightpercent{.70833}%
-\def\strutdepthpercent {.29167}%
-%
-\def\setleading#1{%
-  \normalbaselineskip = #1\relax
-  \normallineskip = \lineskipfactor\normalbaselineskip
-  \normalbaselines
-  \setbox\strutbox =\hbox{%
-    \vrule width0pt height\strutheightpercent\baselineskip
-                    depth \strutdepthpercent \baselineskip
-  }%
-}%
-%
-% End of Texinfo defs.
-%
-% Specify amount and type of font-related logging:
-%   0   notifications and warnings go to the log file only;
-%   1   only warning go to the console;
-%   2   notifications and warnings go to the console;
-%   3   notifications go to the console, all warnings are made into errors.
-%
-% In all cases notifications and warnings go to the log file.
-\newcount\tracingfonts
-\tracingfonts1
-%
-\def\fontnotify{%
-  \ifcase\tracingfonts
-    \expandafter\wlog
-  \or % 1
-    \expandafter\wlog
-  \else % 2-...
-    \expandafter\message
-  \fi
-}%
-%
-\def\fontwarn{%
-  \ifcase\tracingfonts
-    \expandafter\wlog
-  \or % 1
-    \expandafter\message
-  \or % 2
-    \expandafter\message
-  \else % 3-...
-    \expandafter\errmessage
-  \fi
-}%
-%
-% We will sometimes temporarily turn these off (e.g., to avoid
-% \message and \setbox interfering with \accent).
-\let\@setleading\setleading
-\let\@fontnotify\fontnotify
-\let\@fontwarn\fontwarn
-% Font and shape identification strings.
-\def\shape@string{\f@encoding/\f@family/\f@series/\f@shape}%
-\def\font@string{\shape@string/\f@size:\base@fntscale}%
-%
-% \declarefontfamily FAMILY FACTOR LINESKIP
-%
-% Declare font FAMILY, and set it's scale FACTOR (relative to the
-% Computer Modern family) and LINESKIP factor (which will be applied
-% to the current font size to obtain basic baseline skip).  Every font
-% family must be declared before any font declaration \declarefont
-% using that family.
-\def\declarefontfamily#1 #2 #3 {%
-  % Warn if the family has already been declared.
-  \expandafter \ifx \csname fam@scale/#1\endcsname\relax \else
-    \fontwarn{^^JWarning: redeclaring font family `#1'.}%
-  \fi
-  \expandafter\def\csname fam@scale/#1\endcsname{#2}%
-  \expandafter\def\csname fam@lskip/#1\endcsname{#3}%
-  % Initialize the family's encoding list to an empty list.
-  \expandafter\let \csname fam@enc@list/#1\endcsname \empty
-}%
-%
-% \declaremathfontfamily FAMILY FACTOR LINESKIP TEXTENC L-SKEW S-SKEW
-%
-% Declare math font family.  Parameters:
-%
-%   FAMILY      font family name;
-%   FACTOR      scale factor (relative to the Computer Modern family);
-%   LINESKIP    lineskip factor (which will be applied to the current
-%               font size to obtain basic baseline skip);
-%   TEXTENC     font encoding to use for the family 0 (this is to
-%               distinguish fonts with T1 and OT1 encodings for the
-%               `text' font, since T1 and OT1 have accents in
-%               different slots);
-%   L-SKEW      skew char for family 1 (math letters);
-%   S-SKEW      skew char for family 2 (math symbols).
-\def\declaremathfontfamily#1 #2 #3 #4 #5 #6 {%
-  \declarefontfamily #1 #2 #3
-  \expandafter\def\csname fam@textenc/#1\endcsname{#4}%
-  \expandafter\def\csname fam@ml-sc/#1\endcsname{#5}%
-  \expandafter\def\csname fam@ms-sc/#1\endcsname{#6}%
-}%
-%
-% \mathfontfamilyhook FAMILY {TEXT}
-%
-% Define a hook to be called every time the fonts for math FAMILY are
-% set up.
-\def\mathfontfamilyhook#1 #2{%
-  \expandafter\def\csname fmath@hook@#1\endcsname{#2}%
-}%
-%
-% \mathfontfamilyprehook FAMILY {TEXT}
-%
-% Define a hook to be called when the math FAMILY is loaded.
-\def\mathfontfamilyprehook#1 #2{%
-  \expandafter\def\csname fmath@pre-hook@#1\endcsname{#2}%
-}%
-%
-% \mathfontfamilyposthook FAMILY {TEXT}
-%
-% Define a hook to be called when the math FAMILY is unloaded.
-\def\mathfontfamilyposthook#1 #2{%
-  \expandafter\def\csname fmath@post-hook@#1\endcsname{#2}%
-}%
-%
-% \fontbasefamily FAMILY
-%
-% Declare FAMILY as the "base" family, which means that its fonts
-% will be displayed at their "natural" sizes, and all other families
-% will be scaled to match FAMILY.
-\def\fontbasefamily#1 {%
-  % Check that the family has been declared.
-  \expandafter \ifx \csname fam@scale/#1\endcsname\relax
-    \errmessage{Error: setting base family to an unknown family `#1'}%
-  \fi
-  \edef\base@fntscale{\csname fam@scale/#1\endcsname}%
-  % Reload the current font (it may change if the base factor changed).
-  \selectfont
-}%
-%
-% \fontfamily STYLE FAMILY
-%
-% FIXME doc.
-\def\mathword{math}%
-\let\f@family@math\empty % Avoid `Undefined' errors in \csname the first time.
-\def\fontfamily#1 #2 {%
-  \edef\temp{#1}%
-  \ifx\temp\mathword
-    % Call post-hook for the old math family.
-    \csname fmath@post-hook@\f@family@math\endcsname
-    \expandafter\edef \csname f@family@\mathword\endcsname{#2}%
-    % Define accents for the encoding of the \fam0 font.
-    \expandafter\csname \csname fam@textenc/#2\endcsname 
@math@textenc\endcsname
-    % FIXME Need to call \resetmathfonts now, or call pre-hook after
-    % the first call to \resetmathfonts, otherwise errors are possible
-    % about undefined glyphs.
-    % Call pre-hook for the new math family.
-    \csname fmath@pre-hook@#2\endcsname
-  \else
-    \expandafter\edef \csname f@family@#1\endcsname{#2}%
-  \fi
-}%
-%
-% FIXME Rename.
-\def\selectfont@style#1{%
-  \expandafter\let\expandafter \f@family \csname f@family@#1\endcsname
-  \selectfont
-}%
-%
-% \declarefont ENC FAMILY SER SH L-U SZ FONT
-%
-% Declare a FAMILY font in ENC encoding, SER series and SH shape, for
-% the size range L-U.  SZ is the design size of the font, FONT is the
-% font file name.  L-U defines the size range as [L,U).  All sizes (L,
-% U, SZ) may contain optional unit specifier; if it is missing, `pt'
-% is assumed.
-\def\declarefont #1 #2 #3 #4 #5-#6 #7 #8 {%
-  % Check that FAMILY has been declared.
-  \expandafter \ifx \csname fam@scale/#2\endcsname\relax
-    \errmessage{Error: declaring font `#8' for an unknown family `#2'}%
-  \fi
-  % Convert all sizes into integers, scaled 10 times.
-  \fnt@size@to@int{#5}\edef\tempa{\number\dimen@}% L
-  \fnt@size@to@int{#6}\edef\tempb{\number\dimen@}% U
-  \fnt@size@to@int{#7}\edef\tempc{\number\dimen@}% SZ
-  % Construct internal font shape name as \sh/ENC/FAMILY/SER/SH.
-  \expandafter\def\expandafter\temp\expandafter{%
-    \csname sh/#1/#2/#3/#4\endcsname
-  }%
-  % Add the font specification as the quad L U SZ FONT to the
-  % beginning of the font list for this shape.
-  \expandafter\ifx\temp\relax
-    \let\tempd\empty
-  \else
-    \edef\tempd{\temp}% Previous def of the shape name.
-  \fi
-  \expandafter\edef\temp{\tempa\space\tempb\space\tempc\space#8 \tempd}%
-  % Add the encoding to the list of encodings for this family, if it's
-  % not been added yet.
-  \expandafter\ifx \csname fam@enc/#2/#1\endcsname \relax
-    \expandafter\let\expandafter\temp \csname fam@enc@list/#2\endcsname
-    \expandafter\edef \csname fam@enc@list/#2\endcsname{\temp\space #1}%
-  \fi
-  % Set the flag that this family supports this encoding.
-  \expandafter\let\csname fam@enc/#2/#1\endcsname\empty
-}%
-%
-% \fontmap ENC1 FAM1 SER1 SH1 > ENC2 FAM2 SER2 SH2
-%
-% Define font mapping.  Ideally, any of the attributes can be an `*',
-% but only a useful subset is currently supported for the first half
-% (see \search@font@map).  It should be easy to extend this subset if
-% need be.
-%
-% If an `*' appears in the first half (`from-attributes'), its
-% meaning is "apply this map to fonts having anything for this
-% attribute".  If an `*' appears in the second half (`to-attributes'),
-% its meaning is "leave this attribute unchanged from the respective
-% from-attribute".
-%
-%           E1 F1 S1 s1 > E2 F2 S2 s2
-\def\fontmap#1 #2 #3 #4 > #5 #6 #7 #8 {%
-  \expandafter\def\csname fmap/#1/#2/#3/#4\endcsname{#5/#6/#7/#8}%
-}%
-%
-% \fontmapshape FAMILY1 SH1 > FAMILY2 SH2
-%
-% Define generic shape mapping:  requests for FAMILY1 fonts in shape
-% SH1 and any encoding and series will be redirected to FAMILY2 fonts
-% in shape SH2 and the same encoding and series.
-\def\fontmapshape#1 #2 > #3 #4 {%
-  \fontmap * #1 * #2 > * #3 * #4
-}%
-%
-% \fontmapseries FAMILY1 SER1 > FAMILY2 SER2
-%
-% Define generic series mapping:  requests for FAMILY1 fonts in series
-% SER1 and any encoding and shape will be redirected to FAMILY2 fonts
-% in series SER2 and the same encoding and shape.
-\def\fontmapseries#1 #2 > #3 #4 {%
-  \fontmap * #1 #2 * > * #3 #4 *
-}%
-%
-% \fontmapfamily FAMILY1 ENC FAMILY2
-%
-% Define family mapping:  requests for FAMILY1 fonts in encoding ENC
-% will be redirected to FAMILY2 fonts in the same encoding.
-\def\fontmapfamily#1 #2 #3 {%
-  \fontmap #2 #1 * * > * #3 * *
-  % Remember that this family supports this encoding.
-  \expandafter\let\csname fam@enc/#1/#2\endcsname\empty
-}%
-%
-% Take a dimension or a number (in which case assume `pt' units) and
-% convert it into an integer (in \dimen@) ten times the dimension's
-% representation in points.  We attempt to round properly, to the
-% extent that TeX's integer arithmetics allows.  Note that we take
-% 0.1pt = 6554 (6553.6 rounded to the nearest integer), but maybe
-% 6553 would have been better because it rounds the 100ths of a point
-% better (e.g., in 10.85pt), for which we care more than for the
-% 1000ths / 10000ths of a point (e.g., in 10.849pt).
-\def\fnt@size@to@int#1{%
-  \get@dimen{#1}%
-  \advance\dimen@ by.05pt % 0.1pt / 2.
-  \divide\dimen@ by6554 % = 0.1pt = (Xpt / 0.1pt * 0.1pt) * 10 / 1pt.
-}%
-% Take a dimension or a number, and save it in \dimen@.  In case of a
-% number, assume `pt' units.
-\def\get@dimen#1{%
-  \afterassignment\gobble@to@finish
-  \dimen@#1pt \finish
-}%
-\def\gobble@to@finish#1\finish{}%
-%
-% These generally should not be used by the end user.  To actually
-% select the font specified by one or several of the following, say
-% \selectfont.
-\def\setfontencoding{\edef\f@encoding}%
-\def\setfontfamily{\edef\f@family}%
-\def\setfontseries{\edef\f@series}%
-\def\setfontshape{\edef\f@shape}%
-\def\setfontsize#1{\fnt@size@to@int{#1}\edef\f@size{\number\dimen@}}%
-% User-space commands to set (some of) the above.
-\def\mdseries{\setfontseries{m}\selectfont}%
-\def\bfseries{\setfontseries{bx}\selectfont}%
-\def\upshape{\setfontshape{n}\selectfont}%
-\def\itshape{\setfontshape{it}\selectfont}%
-\def\slshape{\setfontshape{sl}\selectfont}%
-\def\scshape{\setfontshape{sc}\selectfont}%
-%
-% Scale \f@size.
-\def\scale@f@size#1{%
-  \scalecount\f@size{#1}%
-  \edef\f@size{\number\count@}%
-}%
-% Scale the current font.  #1 is the magnification factor.
-\def\scalefont#1{%
-  \scale@f@size{#1}%
-  \selectfont
-}%
-% Scale current font size by #1.  Result in \dimen@ (in points).
-% Clobbers \dimen@.
-\def\scalefontsize#1{%
-  \scalecount\f@size{#1}%
-  \dimen@=\count@\p@
-  \divide\dimen@ by10
-}%
-% Scale integer #1 by #2, taking care of the rounding.  Result in
-% \count@.
-\def\scalecount#1#2{%
-  \count@#1%
-  \multiply\count@ by#2%
-  \advance\count@ by500%
-  \divide\count@ by1000
-}%
-%
-% Parameters for math fonts.
-%
-% FIXME These parameters probably have to be per-font-family.
-\def\mf@scr@factor{700 }%
-\def\mf@scrscr@factor{500 }%
-% Theoretically, these have to be per-font-family, but practically
-% plain TeX settings work with most families; and for families with
-% which these don't work (PXMath, TXMath, CharterMath, ArevMath) these
-% settings are still the best possible -- do these families have a bug
-% (or maybe some weird design decisions)?
-\def\big@factor{850 }%
-\def\Big@factor{1150 }%
-\def\bigg@factor{1450 }%
-\def\Bigg@factor{1750 }%
-%
-% Setup math fonts.  This is called for every math mode switch from
-% \everymath.  Texinfo doesn't use display math, so we don't bother
-% with \everydisplay.  NOTE:  One alternative to setting math fonts at
-% the beginning of every math mode is to set them at every change of a
-% font attribute which affects math fonts (i.e., size, series, but
-% _not_ shape). This would mean that lots of fonts will be loaded,
-% while in most cases the user will never use math with those settings.
-\everymath{\resetmathfonts}%
-\def\resetmathfonts{%
-  % Save all current font attributes -- we'll clobber them.
-  \let\reset@f@encoding\f@encoding
-  \let\reset@f@family\f@family
-  \let\reset@f@series\f@series
-  \let\reset@f@shape\f@shape
-  \let\reset@f@size\f@size
-  \let\reset@fontwarn\@fontwarn
-  % Don't report non-existent fonts -- we'll ignore them and hope that
-  % the user won't use them.
-  \let\@fontwarn\gobble
-  % Set math families for the style switches.
-  \selectmathfont@style{roman}\rmfam
-  \selectmathfont@style{sans}\sffam
-  \selectmathfont@style{mono}\ttfam
-  \let\f@family\reset@f@family
-  \itshape \setup@m@family\itfam
-  \slshape \setup@m@family\slfam
-  \setfontshape{n}\bfseries \setup@m@family\bffam
-  % Restore warnings.
-  \let\@fontwarn\reset@fontwarn
-  % Now set the math fonts.  The shape is always a `.'.
-  \let\f@family\f@family@math
-  \let\f@series\reset@f@series
-  \def\f@shape{.}%
-  % Text size.
-  \setup@m@families\textfont
-  % Script size.
-  \scale@f@size\mf@scr@factor
-  \setup@m@families\scriptfont
-  % Script-script size.
-  \let\f@size\reset@f@size
-  \scale@f@size\mf@scrscr@factor
-  \setup@m@families\scriptscriptfont
-  % Call the fonts hook for this family.
-  \let\f@size\reset@f@size
-  \csname fmath@hook@\f@family@math\endcsname
-  % Restore font attributes.
-  \let\f@encoding\reset@f@encoding
-  \let\f@family\reset@f@family
-  \let\f@series\reset@f@series
-  \let\f@shape\reset@f@shape
-  \let\f@size\reset@f@size
-  \selectfont
-}%
-%
-% Select style #1 and set math family #2 to the font. FIXME Rename.
-\def\selectmathfont@style#1#2{%
-  \selectfont@style{#1}%
-  \setup@m@family{#2}%
-}%
-% Set \textfont of math family #1 to \c@font@command, unless the
-% font command is \relax.
-\def\setup@m@family#1{%
-  \expandafter\ifx\c@font@command\relax\else
-    \textfont#1=\c@font@command
-  \fi
-}%
-% Set up #1 (\textfont, \scriptfont or \scriptscriptfont) fonts for
-% families 0, 1, 2 and 3 with the current size.  \f@family must be set
-% to the math font family.
-\def\setup@m@families#1{%
-  \setfontencoding{\csname fam@textenc/\f@family\endcsname}\search@font
-    #10=\c@font@command
-  \setfontencoding{OML}\search@font #11 = \c@font@command
-    \skewchar\c@font@command = \csname fam@ml-sc/\f@family\endcsname
-  \setfontencoding{OMS}\search@font #12 = \c@font@command
-    \skewchar\c@font@command = \csname fam@ms-sc/\f@family\endcsname
-  \setfontencoding{OMX}\search@font #13 = \c@font@command
-}%
-%
-% We need separate \rmfam -- math fonts define their own "text" fonts
-% which they use for the accents, and the user's "roman" family should
-% not interfere with that.
-\newfam\rmfam
-\def\rm{\selectfont@style{roman}\fam=\rmfam}%
-\newfam\sffam % \sffam is not in plain TeX.
-\def\sf{\selectfont@style{sans}\fam=\sffam}%
-\let\li = \sf % Sometimes we call it \li, not \sf.
-\def\tt{\selectfont@style{mono}\fam=\ttfam}%
-\def\it{\itshape \fam=\itfam}%
-\def\sl{\slshape \fam=\slfam}%
-\def\bf{\bfseries \fam=\bffam}%
-% We don't need math for this font style.
-\def\ttsl{\setfontshape{sl}\selectfont@style{mono}}%
-%
-\def\@big#1#2{%
-  {\hbox{$
-    \expandafter\scalefontsize \csname#1@factor\endcsname
-    \left#2\vbox to\dimen@{}\right.\n@space
-  $}}%
-}%
-\def\big{\@big{big}}%
-\def\Big{\@big{Big}}%
-\def\bigg{\@big{bigg}}%
-\def\Bigg{\@big{Bigg}}%
-%
-% The accents are in different slots in OT1 and T1, so these will
-% redefine the accents (see \setfontfamily).
-\expandafter\def\csname OT1@math@textenc\endcsname{%
-  \def\acute{\mathaccent"7013 }%
-  \def\grave{\mathaccent"7012 }%
-  \def\ddot{\mathaccent"707F }%
-  \def\tilde{\mathaccent"707E }%
-  \def\bar{\mathaccent"7016 }%
-  \def\breve{\mathaccent"7015 }%
-  \def\check{\mathaccent"7014 }%
-  \def\hat{\mathaccent"705E }%
-  \def\dot{\mathaccent"705F }%
-}%
-\expandafter\def\csname T1@math@textenc\endcsname{%
-  \def\acute{\mathaccent"7001 }%
-  \def\grave{\mathaccent"7000 }%
-  \def\ddot{\mathaccent"7004 }%
-  \def\tilde{\mathaccent"7003 }%
-  \def\bar{\mathaccent"7009 }%
-  \def\breve{\mathaccent"7008 }%
-  \def\check{\mathaccent"7007 }%
-  \def\hat{\mathaccent"7002 }%
-  \def\dot{\mathaccent"700A }%
-}%
-%
-% We keep track of the combinations of current encoding list (set by
-% @documentencoding) and current font family encoding list, for the
-% sake of glyph caching.
-\newcount\enclist@curr
-\newcount\enclist@count
-%
-\def\update@enclist@index{%
-  \expandafter\let\expandafter\temp \csname fam@enc@list/\f@family\endcsname
-  \edef\temp{\f@encoding/\cur@fenc@list/\temp}%
-  \expandafter\ifx \csname el@\temp\endcsname \relax
-    \global\advance \enclist@count by1
-    \expandafter\xdef \csname el@\temp\endcsname {\the\enclist@count}%
-    \enclist@curr=\enclist@count\relax
-  \else
-    \enclist@curr=\csname el@\temp\endcsname\relax
-  \fi
-}%
-%
-% \selectfont
-%
-% Select the font as specified by the values of \f@... and set line
-% skip and strut box for the font's size.
-\def\selectfont{%
-  \search@font
-  \c@font@command % Select the font.
-  \update@enclist@index % For proper glyph caching.
-  % Set strutbox and line skips accordingly.
-  \ifx\temp\relax\else
-    % The code below only produces lineskips which are multiples of
-    % 0.1pt.  The maximum dimension it can deal with is 214.7pt.  This
-    % means that, for a font with the relative factor of 1000 and the
-    % lineskip factor of 1200, the maximum font size is 178.9pt (which
-    % is 214.7pt / 1.2), which should be more than enough for Texinfo.
-    \count@\csname fam@lskip/\f@family\endcsname % This family's lineskip 
factor.
-    \multiply\count@ by\f@size % Requested font size (in pt, x10).
-    \multiply\count@ by\csname fam@scale/\f@family\endcsname % This family's 
factor.
-    \divide\count@ by\base@fntscale % Base factor.
-    \advance\count@ by500 % For the rounding.
-    \divide\count@ by1000
-    \dimen@\count@ pt
-    \divide\dimen@ by10
-    \@fontnotify{^^J\linenumber Setting line skip to \the\dimen@.}%
-    \@setleading\dimen@
-  \fi
-}%
-%
-\def\search@font{%
-  % Expand \font@string once now, we might use it several times.
-  \edef\c@font@string{\font@string}%
-  % Also define a shortcut for the corresponding font command.
-  \edef\c@font@command{\expandafter\noexpand \csname\c@font@string\endcsname}%
-  % First check if the requested font is in the cache.
-  \expandafter\let\expandafter \temp \c@font@command
-  \ifx\temp\relax
-    % No, it's not in the cache, search for the font.
-    \search@font@size
-    \expandafter\let\expandafter \temp \c@font@command
-    \ifx\temp\relax
-      % The font is not found, check whether it is mapped.
-      \search@font@map
-      \expandafter\let\expandafter \temp \c@font@command
-      \ifx\temp\relax
-        % No, it's not mapped either, issue a warning.
-        \@fontwarn{^^J\linenumber Warning: font \c@font@string\space
-                   is not declared, leaving the font unchanged.}%
-      \fi
-    \fi
-  \else
-    % The font is in the cache, report it.
-    \@fontnotify{^^J\linenumber In font cache: \c@font@string\space
-                 (\fontname\csname\c@font@string\endcsname).}%
-  \fi
-}%
-%
-% Search for the font as specified by the values of \f@...  If it's
-% found, load it and add it to the cache.
-\def\search@font@size{%
-  % Check that there's a definition for the requested font shape
-  % (declared by \declarefont).
-  \expandafter\let\expandafter \temp \csname sh/\shape@string\endcsname
-  \ifx\temp\relax \else
-    % The shape was defined.  It should contain mapping of size ranges
-    % to fonts.  Search the font for the requested size.
-    \expandafter\parse@font@range\temp\finish
-  \fi
-}%
-%                    L  U  SZ FN the-rest-of-the-list
-\def\parse@font@range#1 #2 #3 #4 #5\finish{%
-  % See if we have not yet reached the end of the list.
-  \def\temp{#5}%
-  \ifx\temp\empty
-    \let\next\gobble % Yeah, the end, gobble \finish below.
-  \else
-    \let\next\parse@font@range % No, continue recursively.
-  \fi
-  % If \f@size belongs in [#1,#2), we have found our range.
-  \ifnum\f@size<#1 \else \ifnum\f@size<#2
-    \load@font{#4}{#3}%
-    \let\next\gobble@to@finish % Stop the recursive list search.
-  \fi\fi
-  \next#5\finish
-}%
-%
-% Load the font as specified by \f@... and add it to the cache.  #1 is
-% the font file name, #2 is the design size.
-\def\load@font#1#2{%
-  % Calculate the scale factor for this font.  Because of the way we
-  % do this, the maximum possible font size, for a font with the
-  % relative factor of 1000, is 214.7pt, which should be more than
-  % enough for Texinfo.
-  \count@ \csname fam@scale/\f@family\endcsname % This family's factor.
-  \multiply\count@ by\f@size % Requested size.
-  \multiply\count@ by1000
-  \divide\count@ by#2 % This font's design size.
-  \divide\count@ by\base@fntscale % Base factor.
-  % Report the font.
-  \@fontnotify{^^J\linenumber Adding to font cache:
-               \c@font@string \space -> #1 scaled \the\count@.}%
-  % Load it.  The name we define will be used in "cache" lookups of
-  % this font.
-  \global\expandafter\font \c@font@command #1 scaled \count@\relax
-}%
-%
-% Search font mappings for the requested font (as per the \f@...
-% macros) and set \c@font@command if it's found.  Mappings can contain
-% globbing characters (`*'), but for the from-attributes, we only
-% support a subset of possible combinations, see the comments below.
-% To-attributes can have any combination of `*'s.
-\def\search@font@map{%
-  % * F1 * s1
-  \if\fmap@exists *\f@family*\f@shape
-  \else
-    % * F1 S1 *
-    \if\fmap@exists *\f@family\f@series*%
-    \else
-      % ENC F1 S1 *
-      \if\fmap@exists \f@encoding\f@family\f@series*%
-      \else
-        % ENC F1 * *
-        \if\fmap@exists \f@encoding\f@family**%
-        \fi
-      \fi
-    \fi
-  \fi
-}%
-%
-% Note:  calls \font@apply@map if the map exists.
-\def\fmap@exists#1#2#3#4{%
-  TT\fi % Cancel out the preceding \if -- we'll roll our own.
-  \expandafter\let\expandafter\@fmap \csname fmap/#1/#2/#3/#4\endcsname
-  \ifx\@fmap\relax
-    \fmap@exists@false
-  \else
-    \@fontnotify{^^J\linenumber Mapping font: #1/#2/#3/#4 -> \@fmap.}%
-    \expandafter\font@apply@map \@fmap\finish
-    \fmap@exists@true
-  \fi
-}%
-\def\fmap@exists@false{\expandafter\iffalse}%
-\def\fmap@exists@true{\expandafter\iftrue}%
-%
-\def\font@apply@map#1/#2/#3/#4\finish{%
-  \begingroup % Save the \f@... and \c@font@... macros.
-    \font@set@attrib \f@encoding{#1}%
-    \font@set@attrib \f@family  {#2}%
-    \font@set@attrib \f@series  {#3}%
-    \font@set@attrib \f@shape   {#4}%
-    \selectfont
-    \global\expandafter\let\expandafter \gtemp \c@font@command
-  \endgroup % Restore the \f@... and \c@font@... macros.
-  % Define the font selection command for the new font.
-  \global\expandafter\let \c@font@command \gtemp
-}%
-%
-\def\asteriskword{*}%
-%
-\def\font@set@attrib#1#2{%
-  \edef\temp{#2}%
-  \ifx\temp\asteriskword
-    % Leave the attribute unchanged.
-  \else
-    \let#1\temp
-  \fi
-}%
-%
-% Computer Modern Roman.
-%
-\declarefontfamily CMRoman 1000 1200
-% Medium weight.
-% Upright.               ser sh [l,u)     sz font
-\declarefont OT1 CMRoman m   n  0-5.5      5  cmr5
-\declarefont OT1 CMRoman m   n  5.5-6.5    6  cmr6
-\declarefont OT1 CMRoman m   n  6.5-7.5    7  cmr7
-\declarefont OT1 CMRoman m   n  7.5-8.5    8  cmr8
-\declarefont OT1 CMRoman m   n  8.5-9.5    9  cmr9
-\declarefont OT1 CMRoman m   n  9.5-10.5   10 cmr10
-\declarefont OT1 CMRoman m   n  10.5-14    12 cmr12
-\declarefont OT1 CMRoman m   n  14-10000   17 cmr17
-% Italic.
-\declarefont OT1 CMRoman m   it 0-7.5      7  cmti7
-\declarefont OT1 CMRoman m   it 7.5-8.5    8  cmti8
-\declarefont OT1 CMRoman m   it 8.5-9.5    9  cmti9
-\declarefont OT1 CMRoman m   it 9.5-10.5   10 cmti10
-\declarefont OT1 CMRoman m   it 10.5-10000 12 cmti12
-% Slanted.
-\declarefont OT1 CMRoman m   sl 0-6.8      6  cmsl6 % from cmextra
-\declarefont OT1 CMRoman m   sl 6.8-8.5    8  cmsl8
-\declarefont OT1 CMRoman m   sl 8.5-9.5    9  cmsl9
-\declarefont OT1 CMRoman m   sl 9.5-10.5   10 cmsl10
-\declarefont OT1 CMRoman m   sl 10.5-10000 12 cmsl12
-% Caps and small caps.
-\declarefont OT1 CMRoman m   sc 0-10000    10 cmcsc10
-% Unslanted italic (for slanted pound sterling).
-\declarefont OT1 CMRoman m   ui 0-10000    10 cmu10
-%
-% Bold weight.
-\declarefont OT1 CMRoman b   n  0-10000    10 cmb10
-\fontmapseries CMRoman b > * bx
-%
-% Bold extended.
-% Upright.               ser sh [l,u)      sz font
-\declarefont OT1 CMRoman bx  n  0-5.5      5  cmbx5
-\declarefont OT1 CMRoman bx  n  5.5-6.5    6  cmbx6
-\declarefont OT1 CMRoman bx  n  6.5-7.5    7  cmbx7
-\declarefont OT1 CMRoman bx  n  7.5-8.5    8  cmbx8
-\declarefont OT1 CMRoman bx  n  8.5-9.5    9  cmbx9
-\declarefont OT1 CMRoman bx  n  9.5-10.5   10 cmbx10
-\declarefont OT1 CMRoman bx  n  10.5-10000 12 cmbx12
-% Italic.
-\declarefont OT1 CMRoman bx  it 0-8.5      7  cmbxti7  % from cmextra
-\declarefont OT1 CMRoman bx  it 8.5-11     10 cmbxti10
-\declarefont OT1 CMRoman bx  it 11-10000   12 cmbxti12 % from cmextra
-% Slanted.
-\declarefont OT1 CMRoman bx  sl 0-10000    10 cmbxsl10
-%
-% Math letters.
-\fontmap OML CMRoman m * > * * * n
-\fontmap OML CMRoman bx * > * * * n
-\fontmap OML CMRoman b * > * * bx *
-% Medium weight.         ser sh [l,u)      sz font
-\declarefont OML CMRoman m   n  0-5.5      5  cmmi5
-\declarefont OML CMRoman m   n  5.5-6.5    6  cmmi6
-\declarefont OML CMRoman m   n  6.5-7.5    7  cmmi7
-\declarefont OML CMRoman m   n  7.5-8.5    8  cmmi8
-\declarefont OML CMRoman m   n  8.5-9.5    9  cmmi9
-\declarefont OML CMRoman m   n  9.5-10.5   10 cmmi10
-\declarefont OML CMRoman m   n  10.5-10000 12 cmmi12
-% Bold extended.
-\declarefont OML CMRoman bx  n  0-5.5      5  cmmib5
-\declarefont OML CMRoman bx  n  5.5-6.5    6  cmmib6
-\declarefont OML CMRoman bx  n  6.5-7.5    7  cmmib7
-\declarefont OML CMRoman bx  n  7.5-8.5    8  cmmib8
-\declarefont OML CMRoman bx  n  8.5-9.5    9  cmmib9
-\declarefont OML CMRoman bx  n  9.5-10000  10 cmmib10
-%
-% Math symbols.
-\fontmap OMS CMRoman m * > * * * n
-\fontmap OMS CMRoman bx * > * * * n
-\fontmap OMS CMRoman b * > * * bx *
-% Medium weight.         ser sh [l,u)      sz font
-\declarefont OMS CMRoman m   n  0-5.5      5  cmsy5
-\declarefont OMS CMRoman m   n  5.5-6.5    6  cmsy6
-\declarefont OMS CMRoman m   n  6.5-7.5    7  cmsy7
-\declarefont OMS CMRoman m   n  7.5-8.5    8  cmsy8
-\declarefont OMS CMRoman m   n  8.5-9.5    9  cmsy9
-\declarefont OMS CMRoman m   n  9.5-10000  10 cmsy10
-% Bold extended.
-\declarefont OMS CMRoman bx  n  0-5.5      5  cmbsy5
-\declarefont OMS CMRoman bx  n  5.5-6.5    6  cmbsy6
-\declarefont OMS CMRoman bx  n  6.5-7.5    7  cmbsy7
-\declarefont OMS CMRoman bx  n  7.5-8.5    8  cmbsy8
-\declarefont OMS CMRoman bx  n  8.5-9.5    9  cmbsy9
-\declarefont OMS CMRoman bx  n  9.5-10000  10 cmbsy10
-%
-% Computer Modern Sans.
-%
-\declarefontfamily CMSans 1000 1200
-\fontmapshape CMSans it > * sl
-\fontmapseries CMSans b > * bx
-\fontmapfamily CMSans OML CMRoman
-\fontmapfamily CMSans OMS CMRoman
-% Medium weight.
-% Upright.              ser sh [l,u)     sz font
-\declarefont OT1 CMSans m   n  0-8.5     8  cmss8
-\declarefont OT1 CMSans m   n  8.5-9.5   9  cmss9
-\declarefont OT1 CMSans m   n  9.5-10.5  10 cmss10
-\declarefont OT1 CMSans m   n  10.5-14   12 cmss12
-\declarefont OT1 CMSans m   n  14-10000  17 cmss17
-% Slanted.
-\declarefont OT1 CMSans m   sl 0-8.5     8  cmssi8
-\declarefont OT1 CMSans m   sl 8.5-9.5   9  cmssi9
-\declarefont OT1 CMSans m   sl 9.5-10.5  10 cmssi10
-\declarefont OT1 CMSans m   sl 10.5-14   12 cmssi12
-\declarefont OT1 CMSans m   sl 14-10000  17 cmssi17
-%
-% Bold extended.
-\declarefont OT1 CMSans bx  n  0-10000   10 cmssbx10
-\declarefont OT1 CMSans bx  sl 0-10000   10 cmssbxo10 % from cmextra
-%
-% Computer Modern Typewriter.
-%
-\declarefontfamily CMMono 1000 1200
-\fontmapfamily CMMono OML CMRoman
-\fontmapfamily CMMono OMS CMRoman
-% Medium weight.
-% Upright.              ser sh [l,u)      sz font
-\declarefont OT1 CMMono m   n  0-8.5      8  cmtt8
-\declarefont OT1 CMMono m   n  8.5-9.5    9  cmtt9
-\declarefont OT1 CMMono m   n  9.5-10.5   10 cmtt10
-\declarefont OT1 CMMono m   n  10.5-10000 12 cmtt12
-% Italic.
-\declarefont OT1 CMMono m   it 0-9.5      9  cmitt9  % from cmextra
-\declarefont OT1 CMMono m   it 9.5-10.5   10 cmitt10
-\declarefont OT1 CMMono m   it 10.5-10000 12 cmitt12 % from cmextra
-% Slanted.
-\declarefont OT1 CMMono m   sl 0-9.5      9  cmsltt9  % from cmextra
-\declarefont OT1 CMMono m   sl 9.5-10000  10 cmsltt10
-%
-% Latin Modern Roman.
-%
-\declarefontfamily LMRoman 1000 1200
-% Medium weight.
-% Upright.              ser sh [l,u)     sz font
-\declarefont T1 LMRoman m   n  0-5.5     5  ec-lmr5
-\declarefont T1 LMRoman m   n  5.5-6.5   6  ec-lmr6
-\declarefont T1 LMRoman m   n  6.5-7.5   7  ec-lmr7
-\declarefont T1 LMRoman m   n  7.5-8.5   8  ec-lmr8
-\declarefont T1 LMRoman m   n  8.5-9.5   9  ec-lmr9
-\declarefont T1 LMRoman m   n  9.5-10.5  10 ec-lmr10
-\declarefont T1 LMRoman m   n  10.5-14   12 ec-lmr12
-\declarefont T1 LMRoman m   n  14-10000  17 ec-lmr17
-\declarefont TS1 LMRoman m  n  0-5.5     5  ts1-lmr5
-\declarefont TS1 LMRoman m  n  5.5-6.5   6  ts1-lmr6
-\declarefont TS1 LMRoman m  n  6.5-7.5   7  ts1-lmr7
-\declarefont TS1 LMRoman m  n  7.5-8.5   8  ts1-lmr8
-\declarefont TS1 LMRoman m  n  8.5-9.5   9  ts1-lmr9
-\declarefont TS1 LMRoman m  n  9.5-10.5  10 ts1-lmr10
-\declarefont TS1 LMRoman m  n  10.5-14   12 ts1-lmr12
-\declarefont TS1 LMRoman m  n  14-10000  17 ts1-lmr17
-% Italic.
-\declarefont T1 LMRoman m   it 0-7.5      7  ec-lmri7
-\declarefont T1 LMRoman m   it 7.5-8.5    8  ec-lmri8
-\declarefont T1 LMRoman m   it 8.5-9.5    9  ec-lmri9
-\declarefont T1 LMRoman m   it 9.5-10.5   10 ec-lmri10
-\declarefont T1 LMRoman m   it 10.5-10000 12 ec-lmri12
-\declarefont TS1 LMRoman m  it 0-7.5      7  ts1-lmri7
-\declarefont TS1 LMRoman m  it 7.5-8.5    8  ts1-lmri8
-\declarefont TS1 LMRoman m  it 8.5-9.5    9  ts1-lmri9
-\declarefont TS1 LMRoman m  it 9.5-10.5   10 ts1-lmri10
-\declarefont TS1 LMRoman m  it 10.5-10000 12 ts1-lmri12
-% Slanted.
-\declarefont T1 LMRoman m   sl 6.8-8.5    8  ec-lmro8
-\declarefont T1 LMRoman m   sl 8.5-9.5    9  ec-lmro9
-\declarefont T1 LMRoman m   sl 9.5-10.5   10 ec-lmro10
-\declarefont T1 LMRoman m   sl 10.5-14    12 ec-lmro12
-\declarefont T1 LMRoman m   sl 14-10000   17 ec-lmro17
-\declarefont TS1 LMRoman m  sl 6.8-8.5    8  ts1-lmro8
-\declarefont TS1 LMRoman m  sl 8.5-9.5    9  ts1-lmro9
-\declarefont TS1 LMRoman m  sl 9.5-10.5   10 ts1-lmro10
-\declarefont TS1 LMRoman m  sl 10.5-14    12 ts1-lmro12
-\declarefont TS1 LMRoman m  sl 14-10000   17 ts1-lmro17
-% Caps and small caps.
-\declarefont T1 LMRoman m   sc 0-10000    10 ec-lmcsc10
-\declarefont TS1 LMRoman m  sc 0-10000    10 ts1-lmcsc10
-%
-% Bold weight.
-\declarefont T1 LMRoman b   n  0-10000    10 ec-lmb10
-\fontmapseries LMRoman b > * bx % For the `it' shape.
-\declarefont T1 LMRoman b   sl 0-10000    10 ec-lmbo10
-\declarefont TS1 LMRoman b  n  0-10000    10 ts1-lmb10
-\declarefont TS1 LMRoman b  sl 0-10000    10 ts1-lmbo10
-%
-% Bold extended.
-% Upright.              ser sh [l,u)      sz font
-\declarefont T1 LMRoman bx  n  0-5.5      5  ec-lmbx5
-\declarefont T1 LMRoman bx  n  5.5-6.5    6  ec-lmbx6
-\declarefont T1 LMRoman bx  n  6.5-7.5    7  ec-lmbx7
-\declarefont T1 LMRoman bx  n  7.5-8.5    8  ec-lmbx8
-\declarefont T1 LMRoman bx  n  8.5-9.5    9  ec-lmbx9
-\declarefont T1 LMRoman bx  n  9.5-10.5   10 ec-lmbx10
-\declarefont T1 LMRoman bx  n  10.5-10000 12 ec-lmbx12
-\declarefont TS1 LMRoman bx n  0-5.5      5  ts1-lmbx5
-\declarefont TS1 LMRoman bx n  5.5-6.5    6  ts1-lmbx6
-\declarefont TS1 LMRoman bx n  6.5-7.5    7  ts1-lmbx7
-\declarefont TS1 LMRoman bx n  7.5-8.5    8  ts1-lmbx8
-\declarefont TS1 LMRoman bx n  8.5-9.5    9  ts1-lmbx9
-\declarefont TS1 LMRoman bx n  9.5-10.5   10 ts1-lmbx10
-\declarefont TS1 LMRoman bx n  10.5-10000 12 ts1-lmbx12
-% Italic.
-\declarefont T1 LMRoman bx  it 0-10000    10 ec-lmbxi10
-\declarefont TS1 LMRoman bx it 0-10000    10 ts1-lmbxi10
-% Slanted.
-\declarefont T1 LMRoman bx  sl 0-10000    10 ec-lmbxo10
-\declarefont TS1 LMRoman bx sl 0-10000    10 ts1-lmbxo10
-%
-% Latin Modern Sans.
-%
-\declarefontfamily LMSans 1000 1200
-\fontmapshape LMSans it > * sl
-\fontmapseries LMSans b > * bx
-% Medium weight.
-% Upright.             ser sh [l,u)     sz font
-\declarefont T1 LMSans m   n  0-8.5     8  ec-lmss8
-\declarefont T1 LMSans m   n  8.5-9.5   9  ec-lmss9
-\declarefont T1 LMSans m   n  9.5-10.5  10 ec-lmss10
-\declarefont T1 LMSans m   n  10.5-14   12 ec-lmss12
-\declarefont T1 LMSans m   n  14-10000  17 ec-lmss17
-% Slanted.
-\declarefont T1 LMSans m   sl 0-8.5     8  ec-lmsso8
-\declarefont T1 LMSans m   sl 8.5-9.5   9  ec-lmsso9
-\declarefont T1 LMSans m   sl 9.5-10.5  10 ec-lmsso10
-\declarefont T1 LMSans m   sl 10.5-14   12 ec-lmsso12
-\declarefont T1 LMSans m   sl 14-10000  17 ec-lmsso17
-%
-% Bold extended.
-\declarefont T1 LMSans bx  n  0-10000   10 ec-lmssbx10
-\declarefont T1 LMSans bx  sl 0-10000   10 ec-lmssbo10
-%
-% Latin Modern Typewriter.
-%
-\declarefontfamily LMMono 1000 1200
-% Medium weight.
-% Upright.             ser sh [l,u)      sz font
-\declarefont T1 LMMono m   n  0-8.5      8  ec-lmtt8
-\declarefont T1 LMMono m   n  8.5-9.5    9  ec-lmtt9
-\declarefont T1 LMMono m   n  9.5-10.5   10 ec-lmtt10
-\declarefont T1 LMMono m   n  10.5-10000 12 ec-lmtt12
-% Italic.
-\declarefont T1 LMMono m   it 0-10000    10 ec-lmtti10
-% Slanted.
-\declarefont T1 LMMono m   sl 0-10000    10 ec-lmtto10
-%
-% Computer Modern Bright.
-%
-\declarefontfamily CMBright 1000 1250
-\fontmapshape CMBright it > * sl
-\fontmapseries CMBright bx > * sb
-% Medium weight.
-% Upright.               ser sh [l,u)      sz font
-\declarefont T1 CMBright m   n  0-8.5      8  ebmr8
-\declarefont T1 CMBright m   n  8.5-9.5    9  ebmr9
-\declarefont T1 CMBright m   n  9.5-14     10 ebmr10
-\declarefont T1 CMBright m   n  14-10000   17 ebmr17
-% Slanted.
-\declarefont T1 CMBright m   sl 0-8.5      8  ebmo8
-\declarefont T1 CMBright m   sl 8.5-9.5    9  ebmo9
-\declarefont T1 CMBright m   sl 9.5-14     10 ebmo10
-\declarefont T1 CMBright m   sl 14-10000   17 ebmo17
-%
-% Semi-bold weight.
-% Upright.
-\declarefont T1 CMBright sb  n  0-8.5      8  ebsr8
-\declarefont T1 CMBright sb  n  8.5-9.5    9  ebsr9
-\declarefont T1 CMBright sb  n  9.5-14     10 ebsr10
-\declarefont T1 CMBright sb  n  14-10000   17 ebsr17
-% Slanted.
-\declarefont T1 CMBright sb  sl 0-8.5      8  ebso8
-\declarefont T1 CMBright sb  sl 8.5-9.5    9  ebso9
-\declarefont T1 CMBright sb  sl 9.5-14     10 ebso10
-\declarefont T1 CMBright sb  sl 14-10000   17 ebso17
-%
-% Bold extended.
-\declarefont T1 CMBright bx  n  0-10000    10 ebbx10
-%
-% Computer Modern Bright Typewriter.
-%
-\declarefontfamily CMBrightMono 1000 1250
-\fontmapshape CMBrightMono it > * sl
-% Medium weight.             ser sh [l,u)      sz font
-\declarefont T1 CMBrightMono m   n  0-10000    10 ebtl10
-\declarefont T1 CMBrightMono m   sl 0-10000    10 ebto10
-%
-% European Concrete Roman.
-%
-\declarefontfamily ConcreteRoman 1000 1250
-\fontmapseries ConcreteRoman b > LMSans b
-\fontmapseries ConcreteRoman bx > LMSans bx
-% Medium weight.
-% Upright.                    ser sh [l,u)      sz font
-\declarefont T1 ConcreteRoman m   n  0-5.5      5  eorm5
-\declarefont T1 ConcreteRoman m   n  5.5-6.5    6  eorm6
-\declarefont T1 ConcreteRoman m   n  6.5-7.5    7  eorm7
-\declarefont T1 ConcreteRoman m   n  7.5-8.5    8  eorm8
-\declarefont T1 ConcreteRoman m   n  8.5-9.5    9  eorm9
-\declarefont T1 ConcreteRoman m   n  9.5-10000  10 eorm10
-% Italic.
-\declarefont T1 ConcreteRoman m   it  0-10000   10 eoti10
-% Slanted.
-\declarefont T1 ConcreteRoman m   sl 0-5.5      5  eosl5
-\declarefont T1 ConcreteRoman m   sl 5.5-6.5    6  eosl6
-\declarefont T1 ConcreteRoman m   sl 6.5-7.5    7  eosl7
-\declarefont T1 ConcreteRoman m   sl 7.5-8.5    8  eosl8
-\declarefont T1 ConcreteRoman m   sl 8.5-9.5    9  eosl9
-\declarefont T1 ConcreteRoman m   sl 9.5-10000  10 eosl10
-% Caps and small caps.
-\declarefont T1 ConcreteRoman m   sc  0-10000   10 eocc10
-%
-% LH Roman.
-%
-\declarefontfamily LHRoman 1000 1200
-\fontmapfamily LHRoman T1 LMRoman
-\fontmapfamily LHRoman TS1 LMRoman
-% Medium weight.
-% Upright.               ser sh [l,u)    sz font
-\declarefont T2A LHRoman m   n  0-5.5    5  larm0500
-\declarefont T2A LHRoman m   n  5.5-6.5  6  larm0600
-\declarefont T2A LHRoman m   n  6.5-7.5  7  larm0700
-\declarefont T2A LHRoman m   n  7.5-8.5  8  larm0800
-\declarefont T2A LHRoman m   n  8.5-9.5  9  larm0900
-\declarefont T2A LHRoman m   n  9.5-10.4 10 larm1000
-\declarefont T2A LHRoman m   n  10.4-11.4 10.95 larm1095
-\declarefont T2A LHRoman m   n  11.4-13.1 12    larm1200
-\declarefont T2A LHRoman m   n  13.1-15.6 14.4  larm1440
-\declarefont T2A LHRoman m   n  15.6-18.8 17.28 larm1728
-\declarefont T2A LHRoman m   n  18.8-22.5 20.74 larm2074
-\declarefont T2A LHRoman m   n  22.5-27   24.88 larm2488
-\declarefont T2A LHRoman m   n  27-32.5   29.86 larm2986
-\declarefont T2A LHRoman m   n  32.5-10000 35.83 larm3583
-% Bold weight.           ser sh [l,u)    sz font
-\declarefont T2A LHRoman b   n  0-5.5    5  larb0500
-\declarefont T2A LHRoman b   n  5.5-6.5  6  larb0600
-\declarefont T2A LHRoman b   n  6.5-7.5  7  larb0700
-\declarefont T2A LHRoman b   n  7.5-8.5  8  larb0800
-\declarefont T2A LHRoman b   n  8.5-9.5  9  larb0900
-\declarefont T2A LHRoman b   n  9.5-10.4 10 larb1000
-\declarefont T2A LHRoman b   n  10.4-11.4 10.95 larb1095
-\declarefont T2A LHRoman b   n  11.4-13.1 12    larb1200
-\declarefont T2A LHRoman b   n  13.1-15.6 14.4  larb1440
-\declarefont T2A LHRoman b   n  15.6-18.8 17.28 larb1728
-\declarefont T2A LHRoman b   n  18.8-22.5 20.74 larb2074
-\declarefont T2A LHRoman b   n  22.5-27   24.88 larb2488
-\declarefont T2A LHRoman b   n  27-32.5   29.86 larb2986
-\declarefont T2A LHRoman b   n  32.5-10000 35.83 larb3583
-% Bold extended.         ser sh [l,u)    sz font
-\declarefont T2A LHRoman bx  n  0-5.5    5  labx0500
-\declarefont T2A LHRoman bx  n  5.5-6.5  6  labx0600
-\declarefont T2A LHRoman bx  n  6.5-7.5  7  labx0700
-\declarefont T2A LHRoman bx  n  7.5-8.5  8  labx0800
-\declarefont T2A LHRoman bx  n  8.5-9.5  9  labx0900
-\declarefont T2A LHRoman bx  n  9.5-10.4 10 labx1000
-\declarefont T2A LHRoman bx  n  10.4-11.4 10.95 labx1095
-\declarefont T2A LHRoman bx  n  11.4-13.1 12    labx1200
-\declarefont T2A LHRoman bx  n  13.1-15.6 14.4  labx1440
-\declarefont T2A LHRoman bx  n  15.6-18.8 17.28 labx1728
-\declarefont T2A LHRoman bx  n  18.8-22.5 20.74 labx2074
-\declarefont T2A LHRoman bx  n  22.5-27   24.88 labx2488
-\declarefont T2A LHRoman bx  n  27-32.5   29.86 labx2986
-\declarefont T2A LHRoman bx  n  32.5-10000 35.83 labx3583
-%
-% Bera Roman (Bitstream Vera Serif).
-%
-\declarefontfamily BeraRoman 900 1375
-\fontmapshape BeraRoman it > * sl
-\fontmapseries BeraRoman b > * bx
-% Medium weight.            ser sh [l,u)     sz font
-\declarefont T1 BeraRoman   m   n  0-10000   10 fver8t
-\declarefont T1 BeraRoman   m   sl 0-10000   10 fvero8t
-% Bold extended.
-\declarefont T1 BeraRoman   bx  n  0-10000   10 fveb8t
-\declarefont T1 BeraRoman   bx  sl 0-10000   10 fvebo8t
-%
-% Bera Sans (Bitstream Vera Sans).
-%
-\declarefontfamily BeraSans 900 1375
-\fontmapshape BeraSans it > * sl
-\fontmapseries BeraSans b > * bx
-% Medium weight.            ser sh [l,u)     sz font
-\declarefont T1 BeraSans    m   n  0-10000   10 fvsr8t
-\declarefont T1 BeraSans    m   sl 0-10000   10 fvsro8t
-% Bold extended.
-\declarefont T1 BeraSans    bx  n  0-10000   10 fvsb8t
-\declarefont T1 BeraSans    bx  sl 0-10000   10 fvsbo8t
-%
-% Bera Mono (Bitstream Vera Mono).
-%
-\declarefontfamily BeraMono 900 1375
-\fontmapshape BeraMono it > * sl
-\fontmapseries BeraMono bx > * b
-% Medium weight.            ser sh [l,u)     sz font
-\declarefont T1 BeraMono    m   n  0-10000   10 fvmr8t
-\declarefont T1 BeraMono    m   sl 0-10000   10 fvmro8t
-% Bold weight.
-\declarefont T1 BeraMono    b   n  0-10000   10 fvmb8t
-\declarefont T1 BeraMono    b   sl 0-10000   10 fvmbo8t
-%
-% Bitstream Charter.
-%
-\declarefontfamily Charter 1000 1275
-\fontmapseries Charter b > * bx
-% Medium weight.        ser sh [l,u)     sz font
-\declarefont T1 Charter m   n  0-10000   10 bchr8t
-\declarefont T1 Charter m   it 0-10000   10 bchri8t
-\declarefont T1 Charter m   sl 0-10000   10 bchro8t
-\declarefont T1 Charter m   sc 0-10000   10 bchrc8t
-% Bold extended.
-\declarefont T1 Charter bx  n  0-10000   10 bchb8t
-\declarefont T1 Charter bx  it 0-10000   10 bchbi8t
-\declarefont T1 Charter bx  sl 0-10000   10 bchbo8t
-\declarefont T1 Charter bx  sc 0-10000   10 bchbc8t
-%
-% URW Nimbus Roman (Times) + TeX Gyre Termes.
-%
-\declarefontfamily NimbusRoman 1000 1200
-\fontmapseries NimbusRoman b > * bx
-\fontmapshape NimbusRoman sl > * it % For TS1.
-\fontmapshape NimbusRoman sc > * n  % For TS1.
-% Medium weight.             ser sh [l,u)     sz font
-\declarefont T1  NimbusRoman m   n  0-10000   10 ptmr8t
-\declarefont TS1 NimbusRoman m   n  0-10000   10 ts1-qtmr
-\declarefont T1  NimbusRoman m   it 0-10000   10 ptmri8t
-\declarefont TS1 NimbusRoman m   it 0-10000   10 ts1-qtmri
-\declarefont T1  NimbusRoman m   sl 0-10000   10 ptmro8t
-\declarefont T1  NimbusRoman m   sc 0-10000   10 ptmrc8t
-% Bold extended.
-\declarefont T1  NimbusRoman bx  n  0-10000   10 ptmb8t
-\declarefont TS1 NimbusRoman bx  n  0-10000   10 ts1-qtmb
-\declarefont T1  NimbusRoman bx  it 0-10000   10 ptmbi8t
-\declarefont TS1 NimbusRoman bx  it 0-10000   10 ts1-qtmbi
-\declarefont T1  NimbusRoman bx  sl 0-10000   10 ptmbo8t
-\declarefont T1  NimbusRoman bx  sc 0-10000   10 ptmbc8t
-%
-% URW Nimbus Sans (Helvetica).
-%
-\declarefontfamily NimbusSans 950 1250
-\fontmapshape NimbusSans it > * sl
-\fontmapseries NimbusSans b > * bx
-% Medium weight.           ser sh [l,u)     sz font
-\declarefont T1 NimbusSans m   n  0-10000   10 phvr8t
-\declarefont T1 NimbusSans m   sl 0-10000   10 phvro8t
-\declarefont T1 NimbusSans m   sc 0-10000   10 phvrc8t
-% Bold extended.
-\declarefont T1 NimbusSans bx  n  0-10000   10 phvb8t
-\declarefont T1 NimbusSans bx  sl 0-10000   10 phvbo8t
-\declarefont T1 NimbusSans bx  sc 0-10000   10 phvbc8t
-%
-% URW Nimbus Mono (Courier).
-%
-\declarefontfamily NimbusMono 1000 1200
-\fontmapshape NimbusMono it > * sl
-\fontmapseries NimbusMono bx > * b
-% Medium weight.           ser sh [l,u)     sz font
-\declarefont T1 NimbusMono m   n  0-10000   10 pcrr8t
-\declarefont T1 NimbusMono m   sl 0-10000   10 pcrro8t
-\declarefont T1 NimbusMono m   sc 0-10000   10 pcrrc8t
-% Bold weight.
-\declarefont T1 NimbusMono b   n  0-10000   10 pcrb8t
-\declarefont T1 NimbusMono b   sl 0-10000   10 pcrbo8t
-\declarefont T1 NimbusMono b   sc 0-10000   10 pcrbc8t
-%
-% URW Palladio (Palatino) + TeX Gyre Pagella.
-%
-\declarefontfamily URWPalladio 1000 1275
-\fontmapseries URWPalladio b > * bx
-\fontmapshape URWPalladio sl > * it % For TS1.
-\fontmapshape URWPalladio sc > * n  % For TS1.
-% Medium weight.             ser sh [l,u)     sz font
-\declarefont T1  URWPalladio m   n  0-10000   10 pplr8t
-\declarefont TS1 URWPalladio m   n  0-10000   10 ts1-qplr
-\declarefont T1  URWPalladio m   it 0-10000   10 pplri8t
-\declarefont TS1 URWPalladio m   it 0-10000   10 ts1-qplri
-\declarefont T1  URWPalladio m   sl 0-10000   10 pplro8t
-\declarefont T1  URWPalladio m   sc 0-10000   10 pplrc8t
-% Bold extended.
-\declarefont T1  URWPalladio bx  n  0-10000   10 pplb8t
-\declarefont TS1 URWPalladio bx  n  0-10000   10 ts1-qplb
-\declarefont T1  URWPalladio bx  it 0-10000   10 pplbi8t
-\declarefont TS1 URWPalladio bx  it 0-10000   10 ts1-qplbi
-\declarefont T1  URWPalladio bx  sl 0-10000   10 pplbo8t
-\declarefont T1  URWPalladio bx  sc 0-10000   10 pplbc8t
-%
-% URW Bookman.
-%
-\declarefontfamily URWBookman 1000 1260
-\fontmapshape URWBookman it > * sl
-\fontmapseries URWBookman bx > * b
-% Medium weight.           ser sh [l,u)     sz font
-\declarefont T1 URWBookman m   n  0-10000   10 pbkl8t
-\declarefont T1 URWBookman m   sl 0-10000   10 pbklo8t
-\declarefont T1 URWBookman m   sc 0-10000   10 pbklc8t
-% Bold weight.
-\declarefont T1 URWBookman b   n  0-10000   10 pbkd8t
-\declarefont T1 URWBookman b   sl 0-10000   10 pbkdo8t
-\declarefont T1 URWBookman b   sc 0-10000   10 pbkdc8t
-%
-% URW Century Schoolbook.
-%
-\declarefontfamily CenturySchoolbook 1000 1300
-\fontmapseries CenturySchoolbook b > * bx
-% Medium weight.                  ser sh [l,u)     sz font
-\declarefont T1 CenturySchoolbook m   n  0-10000   10 pncr8t
-\declarefont T1 CenturySchoolbook m   it 0-10000   10 pncri8t
-\declarefont T1 CenturySchoolbook m   sl 0-10000   10 pncro8t
-\declarefont T1 CenturySchoolbook m   sc 0-10000   10 pncrc8t
-% Bold extended.
-\declarefont T1 CenturySchoolbook bx  n  0-10000   10 pncb8t
-\declarefont T1 CenturySchoolbook bx  it 0-10000   10 pncbi8t
-\declarefont T1 CenturySchoolbook bx  sl 0-10000   10 pncbo8t
-\declarefont T1 CenturySchoolbook bx  sc 0-10000   10 pncbc8t
-%
-% Antykwa Torunska.
-%
-\declarefontfamily AntykwaTorunska 1000 1280
-\fontmapshape AntykwaTorunska sl > * it
-\fontmapseries AntykwaTorunska b > * bx
-% Medium weight.                ser sh [l,u)     sz font
-\declarefont T1 AntykwaTorunska m   n  0-10000   10 ec-anttr
-\declarefont T1 AntykwaTorunska m   it 0-10000   10 ec-anttri
-\declarefont T1 AntykwaTorunska m   sc 0-10000   10 ec-anttrcap
-% Bold extended.
-\declarefont T1 AntykwaTorunska bx  n  0-10000   10 ec-anttb
-\declarefont T1 AntykwaTorunska bx  it 0-10000   10 ec-anttbi
-\declarefont T1 AntykwaTorunska bx  sc 0-10000   10 ec-anttbcap
-%
-% Iwona.
-%
-\declarefontfamily Iwona 1000 1200
-\fontmapshape Iwona it > * sl
-\fontmapseries Iwona bx > * b
-% Light weight.        ser sh [l,u)     sz font
-\declarefont T1 Iwona  l   n  0-10000   10 ec-iwonal
-\declarefont T1 Iwona  l   sl 0-10000   10 ec-iwonali
-\declarefont T1 Iwona  l   sc 0-10000   10 ec-iwonalcap
-% Light condensed.
-\declarefont T1 Iwona  lc  n  0-10000   10 ec-iwonacl
-\declarefont T1 Iwona  lc  sl 0-10000   10 ec-iwonacli
-\declarefont T1 Iwona  lc  sc 0-10000   10 ec-iwonaclcap
-% Medium weight.
-\declarefont T1 Iwona  m   n  0-10000   10 ec-iwonar
-\declarefont T1 Iwona  m   sl 0-10000   10 ec-iwonari
-\declarefont T1 Iwona  m   sc 0-10000   10 ec-iwonarcap
-% Medium condensed.
-\declarefont T1 Iwona  c   n  0-10000   10 ec-iwonacr
-\declarefont T1 Iwona  c   sl 0-10000   10 ec-iwonacri
-\declarefont T1 Iwona  c   sc 0-10000   10 ec-iwonacrcap
-% Semi-bold weight. 
-\declarefont T1 Iwona  sb  n  0-10000   10 ec-iwonam
-\declarefont T1 Iwona  sb  sl 0-10000   10 ec-iwonami
-\declarefont T1 Iwona  sb  sc 0-10000   10 ec-iwonamcap
-% Semi-bold condensed. ser sh [l,u)     sz font
-\declarefont T1 Iwona  sbc n  0-10000   10 ec-iwonacm
-\declarefont T1 Iwona  sbc sl 0-10000   10 ec-iwonacmi
-\declarefont T1 Iwona  sbc sc 0-10000   10 ec-iwonacmcap
-% Bold weight.
-\declarefont T1 Iwona  b   n  0-10000   10 ec-iwonab
-\declarefont T1 Iwona  b   sl 0-10000   10 ec-iwonabi
-\declarefont T1 Iwona  b   sc 0-10000   10 ec-iwonabcap
-% Bold condensed.
-\declarefont T1 Iwona  bc  n  0-10000   10 ec-iwonacb
-\declarefont T1 Iwona  bc  sl 0-10000   10 ec-iwonacbi
-\declarefont T1 Iwona  bc  sc 0-10000   10 ec-iwonacbcap
-% Extra bold weight.
-\declarefont T1 Iwona  eb  n  0-10000   10 ec-iwonah
-\declarefont T1 Iwona  eb  sl 0-10000   10 ec-iwonahi
-\declarefont T1 Iwona  eb  sc 0-10000   10 ec-iwonahcap
-% Extra bold condensed.
-\declarefont T1 Iwona  ebc n  0-10000   10 ec-iwonach
-\declarefont T1 Iwona  ebc sl 0-10000   10 ec-iwonachi
-\declarefont T1 Iwona  ebc sc 0-10000   10 ec-iwonachcap
-%
-% URW Gothic (AvantGarde).
-%
-\declarefontfamily URWGothic 900 1450
-\fontmapshape URWGothic it > * sl
-\fontmapseries URWGothic bx > * b
-% Medium weight.          ser sh [l,u)     sz font
-\declarefont T1 URWGothic m   n  0-10000   10 pagk8t
-\declarefont T1 URWGothic m   sl 0-10000   10 pagko8t
-\declarefont T1 URWGothic m   sc 0-10000   10 pagkc8t
-% Bold weight.
-\declarefont T1 URWGothic b   n  0-10000   10 pagd8t
-\declarefont T1 URWGothic b   sl 0-10000   10 pagdo8t
-\declarefont T1 URWGothic b   sc 0-10000   10 pagdc8t
-%
-% URW Chancery.
-%
-\declarefontfamily URWChancery 1150 1150
-% Medium weight.            ser sh [l,u)     sz font
-\declarefont T1 URWChancery m   it 0-10000   10 pzcmi8t
-%
-% Eurosym.  The T1 encoding we use is just a stub.
-%
-\declarefontfamily Eurosym 1000 1200
-\fontmapshape Eurosym it > * sl
-\fontmapshape Eurosym sc > * n
-\fontmapseries Eurosym bx > * b
-% Medium weight.        ser sh [l,u)     sz font
-\declarefont T1 Eurosym m   n   0-10000  10 feymr10
-\declarefont T1 Eurosym m   sl  0-10000  10 feymo10
-% Bold weight.
-\declarefont T1 Eurosym b   n   0-10000  10 feybr10
-\declarefont T1 Eurosym b   sl  0-10000  10 feybo10
-%
-% Math fonts.
-%
-% Macros to restore some plain TeX math defs, needed by post-hooks of
-% some math font families, e.g., Belleek and EulerMath.  `\cm@...'
-% are "action" macros; `\@cm@...' are saved plain TeX defs.  We only
-% restore the defs which can be clobbered by the pre-hooks; add new
-% ones as they become needed.
-\def\cm@digits{%
-  \mathcode`0"7030
-  \mathcode`1"7031
-  \mathcode`2"7032
-  \mathcode`3"7033
-  \mathcode`4"7034
-  \mathcode`5"7035
-  \mathcode`6"7036
-  \mathcode`7"7037
-  \mathcode`8"7038
-  \mathcode`9"7039
-}%
-%
-\def\cm@upper@greek{%
-  \let\Gamma\@cm@Gamma
-  \let\Delta\@cm@Delta
-  \let\Theta\@cm@Theta
-  \let\Lambda\@cm@Lambda
-  \let\Xi\@cm@Xi
-  \let\Pi\@cm@Pi
-  \let\Sigma\@cm@Sigma
-  \let\Upsilon\@cm@Upsilon
-  \let\Phi\@cm@Phi
-  \let\Psi\@cm@Psi
-  \let\Omega\@cm@Omega
-}%
-\let\@cm@Gamma\Gamma
-\let\@cm@Delta\Delta
-\let\@cm@Theta\Theta
-\let\@cm@Lambda\Lambda
-\let\@cm@Xi\Xi
-\let\@cm@Pi\Pi
-\let\@cm@Sigma\Sigma
-\let\@cm@Upsilon\Upsilon
-\let\@cm@Phi\Phi
-\let\@cm@Psi\Psi
-\let\@cm@Omega\Omega
-\let\@cm@varsigma\varsigma
-\let\@cm@varrho\varrho
-%
-\def\cm@lower@greek{%
-  \let\varsigma\@cm@varsigma
-  \let\varrho\@cm@varrho
-}%
-\let\@cm@varsigma\varsigma
-\let\@cm@varrho\varrho
-%
-\def\cm@ordinary{%
-  \mathcode`!"5021 % Why the heck is this a closing delimiter?
-  \let\infty\@cm@infty
-  \let\Re\@cm@Re
-  \let\Im\@cm@Im
-}%
-\let\@cm@infty\infty
-\let\@cm@Re\Re
-\let\@cm@Im\Im
-%
-\def\cm@binary{%
-  \mathcode`+="202B
-  \let\triangleleft\@cm@triangleleft
-  \let\triangleright\@cm@triangleright
-}%
-\let\@cm@triangleleft\triangleleft
-\let\@cm@triangleright\triangleright
-%
-\def\cm@relations{%
-  \mathcode`:"303A
-  \mathcode`="303D
-  \let\relbar\@cm@relbar
-  \let\Relbar\@cm@Relbar
-}%
-\let\@cm@relbar\relbar
-\let\@cm@Relbar\Relbar
-%
-\def\cm@delims{%
-  \mathcode`("4028 \delcode`("028300
-  \mathcode`)"5029 \delcode`)"029301
-  \mathcode`["405B \delcode`["05B302
-  \mathcode`]"505D \delcode`]"05D303
-  \delcode`/"02F30E
-}%
-%
-\def\cm@vec{\let\vec\@cm@vec}%
-\let\@cm@vec\vec
-%
-{\catcode`'\active
-\gdef\cm@prime{\let'\@cm@prime}%
-\global\let\@cm@prime'%
-\gdef\def@active@prime{\def'}%
-}%
-%
-\def\cm@fillarrows{%
-  \let\rightarrowfill\@cm@rightarrowfill
-  \let\leftarrowfill\@cm@leftarrowfill
-}%
-\let\@cm@rightarrowfill\rightarrowfill
-\let\@cm@leftarrowfill\leftarrowfill
-%
-% Computer Modern Math.
-%
-\declaremathfontfamily CMMath 1000 1200 OT1 127 48
-\fontmap OT1 CMMath * * > * CMRoman * n
-\fontmapseries CMMath b > * bx
-\fontmap OMX CMMath bx * > * * m *
-% Math letters.
-% Medium weight.        ser sh [l,u)      sz font
-\declarefont OML CMMath m   .  0-5.5      5  cmmi5
-\declarefont OML CMMath m   .  5.5-6.5    6  cmmi6
-\declarefont OML CMMath m   .  6.5-7.5    7  cmmi7
-\declarefont OML CMMath m   .  7.5-8.5    8  cmmi8
-\declarefont OML CMMath m   .  8.5-9.5    9  cmmi9
-\declarefont OML CMMath m   .  9.5-10.5   10 cmmi10
-\declarefont OML CMMath m   .  10.5-10000 12 cmmi12
-%
-% Bold extended.
-\declarefont OML CMMath bx  .  0-5.5      5  cmmib5
-\declarefont OML CMMath bx  .  5.5-6.5    6  cmmib6
-\declarefont OML CMMath bx  .  6.5-7.5    7  cmmib7
-\declarefont OML CMMath bx  .  7.5-8.5    8  cmmib8
-\declarefont OML CMMath bx  .  8.5-9.5    9  cmmib9
-\declarefont OML CMMath bx  .  9.5-10000  10 cmmib10
-%
-% Math symbols.
-% Medium weight.        ser sh [l,u)      sz font
-\declarefont OMS CMMath m   .  0-5.5      5  cmsy5
-\declarefont OMS CMMath m   .  5.5-6.5    6  cmsy6
-\declarefont OMS CMMath m   .  6.5-7.5    7  cmsy7
-\declarefont OMS CMMath m   .  7.5-8.5    8  cmsy8
-\declarefont OMS CMMath m   .  8.5-9.5    9  cmsy9
-\declarefont OMS CMMath m   .  9.5-10000  10 cmsy10
-% Bold extended.
-\declarefont OMS CMMath bx  .  0-5.5      5  cmbsy5
-\declarefont OMS CMMath bx  .  5.5-6.5    6  cmbsy6
-\declarefont OMS CMMath bx  .  6.5-7.5    7  cmbsy7
-\declarefont OMS CMMath bx  .  7.5-8.5    8  cmbsy8
-\declarefont OMS CMMath bx  .  8.5-9.5    9  cmbsy9
-\declarefont OMS CMMath bx  .  9.5-10000  10 cmbsy10
-%
-% Math operators.
-% Medium weight.
-\declarefont OMX CMMath m   .  0-7.5      7  cmex7
-\declarefont OMX CMMath m   .  7.5-8.5    8  cmex8
-\declarefont OMX CMMath m   .  8.5-9.5    9  cmex9
-\declarefont OMX CMMath m   .  9.5-10000  10 cmex10
-%
-% Computer Modern Bright Math.
-%
-\declaremathfontfamily CMBrightMath 1000 1250 OT1 127 48
-\fontmapseries CMBrightMath bx > * m
-\fontmapfamily CMBrightMath OMX CMMath
-%                             ser sh [l,u)      sz font
-\declarefont OT1 CMBrightMath m . 0-8.5     8  cmbr8
-\declarefont OT1 CMBrightMath m . 8.5-9.5   9  cmbr9
-\declarefont OT1 CMBrightMath m . 9.5-14    10 cmbr10
-\declarefont OT1 CMBrightMath m . 14-10000  17 cmbr17
-\declarefont OML CMBrightMath m . 0-8.5     8  cmbrmi8
-\declarefont OML CMBrightMath m . 8.5-9.5   9  cmbrmi9
-\declarefont OML CMBrightMath m . 9.5-10000 10 cmbrmi10
-\declarefont OMS CMBrightMath m . 0-8.5     8  cmbrsy8
-\declarefont OMS CMBrightMath m . 8.5-9.5   9  cmbrsy9
-\declarefont OMS CMBrightMath m . 9.5-10000 10 cmbrsy10
-%
-% Belleek.
-%
-\declaremathfontfamily Belleek 1000 1200 OT1 45 -1
-\fontmapseries Belleek bx > * m
-\mathfontfamilyprehook Belleek {%
-  % Uppercase Greek letters.
-  \mathchardef\Gamma"130
-  \mathchardef\Delta"131
-  \mathchardef\Theta"132
-  \mathchardef\Lambda"133
-  \mathchardef\Xi"134
-  \mathchardef\Pi"135
-  \mathchardef\Sigma"136
-  \mathchardef\Upsilon"137
-  \mathchardef\Phi"138
-  \mathchardef\Psi"139
-  \mathchardef\Omega"17F
-  % Binary operations.
-  \mathchardef\triangleleft"2247
-  \mathchardef\triangleright"2246
-  % Relations.
-  \mathchardef\Relbar"3248
-  % Delimiters.
-  \mathcode`("412E \delcode`(="12E300
-  \mathcode`)"512F \delcode`)="12F301
-  % Accents.
-  \def\vec{\mathaccent"0245 }%
-  % FIXME Other glyphs: mtmi: \tieaccent
-}%
-\mathfontfamilyposthook Belleek {%
-  \cm@upper@greek
-  \cm@binary
-  \cm@relations
-  \cm@delims
-  \cm@vec
-}%
-\declarefont OT1 Belleek m . 0-10000 10 ptmr7t
-\declarefont OT1 Belleek bx . 0-10000 10 ptmb7t
-\declarefont OML Belleek m . 0-10000 10 mtmi
-\declarefont OMS Belleek m . 0-10000 10 mtsy
-\declarefont OMX Belleek m . 0-10000 10 mtex
-%
-% Pazo Math.
-%
-\declaremathfontfamily PazoMath 1000 1275 OT1 127 48
-\fontmapseries PazoMath bx > * b
-\fontmap OMX PazoMath b * > * * m *
-%                         ser sh [l,u)    sz font
-\declarefont OT1 PazoMath m   .  0-10000 10 zplmr7t
-\declarefont OT1 PazoMath b   .  0-10000 10 zplmb7t
-\declarefont OML PazoMath m   .  0-10000 10 zplmr7m
-\declarefont OML PazoMath b   .  0-10000 10 zplmb7m
-\declarefont OMS PazoMath m   .  0-10000 10 zplmr7y
-\declarefont OMS PazoMath b   .  0-10000 10 zplmb7y
-\declarefont OMX PazoMath m   .  0-10000 10 zplmr7v
-%
-% PX Fonts Math.
-%
-\declaremathfontfamily PXFontsMath 1000 1275 OT1 127 48
-\fontmapseries PXFontsMath bx > * b
-\declarefont OT1 PXFontsMath m   .  0-10000 10 pxr
-\declarefont OT1 PXFontsMath b   .  0-10000 10 pxb
-\declarefont OML PXFontsMath m   .  0-10000 10 pxmi
-\declarefont OML PXFontsMath b   .  0-10000 10 pxbmi
-\declarefont OMS PXFontsMath m   .  0-10000 10 pxsy
-\declarefont OMS PXFontsMath b   .  0-10000 10 pxbsy
-\declarefont OMX PXFontsMath m   .  0-10000 10 pxex
-\declarefont OMX PXFontsMath b   .  0-10000 10 pxbex
-%
-% TX Fonts Math.
-%
-\declaremathfontfamily TXFontsMath 1000 1200 OT1 127 48
-\fontmapseries TXFontsMath bx > * b
-\declarefont OT1 TXFontsMath m   .  0-10000 10 txr
-\declarefont OT1 TXFontsMath b   .  0-10000 10 txb
-\declarefont OML TXFontsMath m   .  0-10000 10 txmi
-\declarefont OML TXFontsMath b   .  0-10000 10 txbmi
-\declarefont OMS TXFontsMath m   .  0-10000 10 txsy
-\declarefont OMS TXFontsMath b   .  0-10000 10 txbsy
-\declarefont OMX TXFontsMath m   .  0-10000 10 txex
-\declarefont OMX TXFontsMath b   .  0-10000 10 txbex
-%
-% Charter Math (from Math Design).
-%
-\declaremathfontfamily CharterMath 1000 1275 OT1 127 48
-
-\fontmapseries CharterMath b > * bx
-\declarefont OT1 CharterMath m  . 0-10000 10 mdbchr7t
-\declarefont OT1 CharterMath bx . 0-10000 10 mdbchb7t
-\declarefont OML CharterMath m  . 0-10000 10 mdbchri7m
-\declarefont OML CharterMath bx . 0-10000 10 mdbchbi7m
-\declarefont OMS CharterMath m  . 0-10000 10 mdbchr7y
-\declarefont OMS CharterMath bx . 0-10000 10 mdbchb7y
-\declarefont OMX CharterMath m  . 0-10000 10 mdbchr7v
-\declarefont OMX CharterMath bx . 0-10000 10 mdbchb7v
-%
-% Arev Math.
-%
-% FIXME LaTeX has 127 for \textfont0.  What's it for?
-\declaremathfontfamily ArevMath 900 1375 OT1 127 48
-\fontmapseries ArevMath b > * bx
-\fontmapseries ArevMath bx > * m
-\fontmapfamily ArevMath OMX CharterMath
-\declarefont OT1 ArevMath m  . 0-10000 10 zavmr7t
-\declarefont OT1 ArevMath bx . 0-10000 10 zavmb7t
-\declarefont OML ArevMath m  . 0-10000 10 zavmri7m
-\declarefont OML ArevMath bx . 0-10000 10 zavmbi7m
-\declarefont OMS ArevMath m  . 0-10000 10 zavmr7y
-%
-% Iwona Math.
-%
-\declaremathfontfamily IwonaMath 1000 1200 OT1 -1 -1
-\fontmapseries IwonaMath bx > * b
-\declarefont OT1 IwonaMath l   . 0-10000 10 rm-iwonal
-\declarefont OT1 IwonaMath lc  . 0-10000 10 rm-iwonacl
-\declarefont OT1 IwonaMath m   . 0-10000 10 rm-iwonar
-\declarefont OT1 IwonaMath c   . 0-10000 10 rm-iwonacr
-\declarefont OT1 IwonaMath sb  . 0-10000 10 rm-iwonam
-\declarefont OT1 IwonaMath sbc . 0-10000 10 rm-iwonacm
-\declarefont OT1 IwonaMath b   . 0-10000 10 rm-iwonab
-\declarefont OT1 IwonaMath bc  . 0-10000 10 rm-iwonacb
-\declarefont OT1 IwonaMath eb  . 0-10000 10 rm-iwonah
-\declarefont OT1 IwonaMath ebc . 0-10000 10 rm-iwonach
-% Math letters.
-\declarefont OML IwonaMath l   . 0-10000 10 mi-iwonali
-\declarefont OML IwonaMath lc  . 0-10000 10 mi-iwonacli
-\declarefont OML IwonaMath m   . 0-10000 10 mi-iwonari
-\declarefont OML IwonaMath c   . 0-10000 10 mi-iwonacri
-\declarefont OML IwonaMath sb  . 0-10000 10 mi-iwonami
-\declarefont OML IwonaMath sbc . 0-10000 10 mi-iwonacmi
-\declarefont OML IwonaMath b   . 0-10000 10 mi-iwonabi
-\declarefont OML IwonaMath bc  . 0-10000 10 mi-iwonacbi
-\declarefont OML IwonaMath eb  . 0-10000 10 mi-iwonahi
-\declarefont OML IwonaMath ebc . 0-10000 10 mi-iwonachi
-% Math symbols.
-\declarefont OMS IwonaMath l   . 0-10000 10 sy-iwonalz
-\declarefont OMS IwonaMath lc  . 0-10000 10 sy-iwonaclz
-\declarefont OMS IwonaMath m   . 0-10000 10 sy-iwonarz
-\declarefont OMS IwonaMath c   . 0-10000 10 sy-iwonacrz
-\declarefont OMS IwonaMath sb  . 0-10000 10 sy-iwonamz
-\declarefont OMS IwonaMath sbc . 0-10000 10 sy-iwonacmz
-\declarefont OMS IwonaMath b   . 0-10000 10 sy-iwonabz
-\declarefont OMS IwonaMath bc  . 0-10000 10 sy-iwonacbz
-\declarefont OMS IwonaMath eb  . 0-10000 10 sy-iwonahz
-\declarefont OMS IwonaMath ebc . 0-10000 10 sy-iwonachz
-% Math operators.
-\declarefont OMX IwonaMath l   . 0-10000 10 ex-iwonal
-\declarefont OMX IwonaMath lc  . 0-10000 10 ex-iwonacl
-\declarefont OMX IwonaMath m   . 0-10000 10 ex-iwonar
-\declarefont OMX IwonaMath c   . 0-10000 10 ex-iwonacr
-\declarefont OMX IwonaMath sb  . 0-10000 10 ex-iwonam
-\declarefont OMX IwonaMath sbc . 0-10000 10 ex-iwonacm
-\declarefont OMX IwonaMath b   . 0-10000 10 ex-iwonab
-\declarefont OMX IwonaMath bc  . 0-10000 10 ex-iwonacb
-\declarefont OMX IwonaMath eb  . 0-10000 10 ex-iwonah
-\declarefont OMX IwonaMath ebc . 0-10000 10 ex-iwonach
-%
-% Euler Math.
-%
-\declaremathfontfamily EulerMath 1000 1250 T1 127 176
-\fontmapseries EulerMath bx > * m
-% Text font.
-\declarefont T1 EulerMath m . 0-5.5     5  eorm5
-\declarefont T1 EulerMath m . 5.5-6.5   6  eorm6
-\declarefont T1 EulerMath m . 6.5-7.5   7  eorm7
-\declarefont T1 EulerMath m . 7.5-8.5   8  eorm8
-\declarefont T1 EulerMath m . 8.5-9.5   9  eorm9
-\declarefont T1 EulerMath m . 9.5-10000 10 eorm10
-% Math letters.
-\declarefont OML EulerMath m  . 0-6       5  zeurm5
-\declarefont OML EulerMath m  . 6-8       7  zeurm7
-\declarefont OML EulerMath m  . 8-10000   10 zeurm10
-\declarefont OML EulerMath bx . 0-6       5  zeurb5
-\declarefont OML EulerMath bx . 6-8       7  zeurb7
-\declarefont OML EulerMath bx . 8-10000   10 zeurb10
-% Math symbols.
-\declarefont OMS EulerMath m  . 0-6       5  zeusm5
-\declarefont OMS EulerMath m  . 6-8       7  zeusm7
-\declarefont OMS EulerMath m  . 8-10000   10 zeusm10
-\declarefont OMS EulerMath bx . 0-6       5  zeusb5
-\declarefont OMS EulerMath bx . 6-8       7  zeusb7
-\declarefont OMS EulerMath bx . 8-10000   10 zeusb10
-% Extra math operators.
-\declarefont OMX EulerMath m . 0-10000 10 zeuex10
-% Hooks.  Based on gkpmac.tex and eulervm.sty.
-\mathfontfamilyprehook EulerMath {%
-  % Digits.
-  \mathcode`0"7130
-  \mathcode`1"7131
-  \mathcode`2"7132
-  \mathcode`3"7133
-  \mathcode`4"7134
-  \mathcode`5"7135
-  \mathcode`6"7136
-  \mathcode`7"7137
-  \mathcode`8"7138
-  \mathcode`9"7139
-  % Uppercase Greek letters.
-  \mathchardef\Gamma"100
-  \mathchardef\Delta"101
-  \mathchardef\Theta"102
-  \mathchardef\Lambda"103
-  \mathchardef\Xi"104
-  \mathchardef\Pi"105
-  \mathchardef\Sigma"106
-  \mathchardef\Upsilon"107
-  \mathchardef\Phi"108
-  \mathchardef\Psi"109
-  \mathchardef\Omega"10A
-  % Euler doesn't have these.
-  \let\varsigma\sigma
-  \let\varrho\rho
-  % Ordinary.
-  \mathcode`!"02A1
-  \mathchardef\infty"0399
-  \mathchardef\Re"023C
-  \mathchardef\Im"023D
-  % Binary operations.
-  \mathcode`+"22AB
-  % Relations.
-  \mathcode`:"32BA
-  \mathcode`="32BD
-  \mathchardef\bar@minus"181
-  \def\relbar{\mathrel{\smash\bar@minus}}%
-  \mathchardef\Relbar"3182
-  % Delimiters.
-  \mathcode`("42A8 \delcode`("2A8300
-  \mathcode`)"52A9 \delcode`)"2A9301
-  \mathcode`["42DB \delcode`["2DB302
-  \mathcode`]"52DD \delcode`]"2DD303
-  \delcode`/"13D30E
-  % Miscellaneous.
-  \def@active@prime{^\bgroup\mskip2mu\prim@s}%
-  \def\rightarrowfill{$\m@th\bar@minus\mkern-6mu%
-       \cleaders\hbox{$\mkern-2mu\bar@minus\mkern-2mu$}\hfill
-       \mkern-6mu\mathord\rightarrow$}%
-  \def\leftarrowfill{$\m@th\mathord\leftarrow\mkern-6mu%
-       \cleaders\hbox{$\mkern-2mu\bar@minus\mkern-2mu$}\hfill
-       \mkern-6mu\bar@minus$}%
-}%
-%
-\mathfontfamilyposthook EulerMath {%
-  \cm@digits
-  \cm@upper@greek
-  \cm@lower@greek
-  \cm@ordinary
-  \cm@binary
-  \cm@relations
-  \cm@delims
-  \cm@prime
-  \cm@fillarrows
-}%
-%
-% FIXME TeX-Gyre, Kerkis, Fourier-GUTenberg, Antykwa Torunska.
-%
-% Defaults.
-\setfontencoding{OT1}%
-\setfontfamily{CMRoman}%
-\setfontseries{m}%
-\setfontshape{n}%
-\setfontsize{11}%
-% Set some internal parameters for bootstrapping.
-\expandafter\let\expandafter\cur@fenc@list
-  \csname denc@fenc@list/US-ASCII\endcsname
-\fontbasefamily CMRoman % This calls \selectfont.
-%
-\fontfamily roman CMRoman
-\fontfamily sans CMSans
-\fontfamily mono CMMono
-\fontfamily math CMMath
-%
-\documentencoding US-ASCII
-%
-\endinput
diff --git a/contrib/texifont/ftest.tex b/contrib/texifont/ftest.tex
deleted file mode 100644
index 566d8fa3d9..0000000000
--- a/contrib/texifont/ftest.tex
+++ /dev/null
@@ -1,445 +0,0 @@
-\catcode`\@=11
-\input ienc
-\input oenc
-\input fsel
-\catcode`\@=12
-
-\tracingstats1
-\tracingfonts=0 % For this font sampler, too many messages.
-
-\hoffset=-.25in
-\hsize=7in
-\parindent=.5in
-% Avoid any over- and underfull boxes and hyphenation.
-\raggedbottom
-\tolerance=10000
-\hbadness=10000
-\hfuzz=\maxdimen
-\hyphenpenalty=10000
-\rightskip=0pt plus2pc
-
-
-\def\title#1{%
-  \vfil\eject
-  \begingroup
-    \immediate\write16{*** #1}
-    \setfontfamily{CMRoman}
-    \setfontseries{bx}
-    \setfontshape{n}
-    \setfontsize{17}
-    \selectfont
-    \noindent #1\vskip12pt
-  \endgroup
-}
-
-\def\dofamilies{%
-  \begingroup
-    \do{CMRoman}%
-    \do{CMSans}%
-    \do{CMMono}%
-    \setfontencoding{T1}%
-    \do{LMRoman}%
-    \do{LMSans}%
-    \do{LMMono}%
-    \do{CMBright}
-    \do{CMBrightMono}
-    \do{ConcreteRoman}%
-    \do{BeraRoman}%
-    \do{BeraSans}%
-    \do{BeraMono}%
-    \do{Charter}%
-    \do{NimbusRoman}%
-    \do{NimbusSans}%
-    \do{NimbusMono}%
-    \do{URWPalladio}%
-    \do{URWBookman}%
-    \do{CenturySchoolbook}%
-    \do{AntykwaTorunska}%
-    \do{Iwona}%
-    \do{URWGothic}%
-    \setfontshape{it}%
-    \do{URWChancery}%
-  \endgroup
-}
-
-
-% 
-% Font switching test.
-%
-\title{Font/base family switching}
-
-\begingroup
-  \def\teststring{%
-    \begingroup
-      \par
-      Default (CMRoman~OT1 medium upright 11pt)~--
-      \setfontseries{b}\selectfont bold~--
-      \bfseries                 bold extended~--
-      \itshape                  italic~--
-      \mdseries                 medium~--
-
-      \setfontsize{14}\selectfont  14\thinspace pt~--
-      \slshape                  slanted~--
-      \setfontencoding{T1}%
-      \setfontfamily{NimbusRoman}\selectfont NimbusRoman~T1~--
-      \itshape                  italic~--
-      \setfontfamily{NimbusSans}\selectfont NimbusSans~--
-      \upshape                  upright~--
-      \bfseries                 bold extended~--
-      \setfontfamily{NimbusMono}\selectfont NimbusMono~--
-
-      \setfontsize{10}\selectfont  10\thinspace pt~--
-      \itshape                  italic~--
-      \mdseries                 medium~--
-      \upshape                  upright~--
-      \setfontfamily{LMSans}\selectfont LMSans~--
-      \itshape                  italic~--
-      \setfontfamily{ConcreteRoman}\selectfont ConcreteRoman~--
-      \upshape                  upright
-      \vskip1pc
-    \endgroup
-  }
-
-  Now the base family is CMRoman:
-  \teststring
-
-  \fontbasefamily NimbusSans
-  Now the base family is NimbusSans:
-  \teststring
-\endgroup
-
-
-% 
-% Math test.
-%
-\title{Math}
-
-\begingroup
-  \def\teststring{%
-    $\displaystyle
-      \Longrightarrow
-      5! - f'(x) + \Re z \times \Im z;\quad
-      \bar u < \tilde e + \vec p - \hat x \cdot \widehat x \ge
-        \widehat{xy} = \widehat{xyz};\allowbreak\quad
-      \gamma, \epsilon, \varepsilon, \sigma, \varsigma, \rho, \varrho,
-        \Gamma, {\it \Gamma};\allowbreak\quad
-      (\exp i),\> [\mathop{\sf sin} \varphi],\>
-        \{\mathop{\tt lim}_{x_1\to\infty} c^{-x_1}\};\allowbreak\quad
-      \biggl(\sum_{i=1}^n a^{b_i}\biggr);\quad
-      \int_{y_2,\ldots,y_n\ge0} x\mskip\thinmuskip dy_2;\quad
-      (| \bigl(\big| \Bigl(\Big| \biggl(\bigg| \Biggl(\Bigg|.
-    $
-  }
-  \def\testfamily#1 #2 #3 #4 {%
-    \par
-    \setfontfamily{#1}\selectfont
-    \fontfamily roman #1
-    \fontfamily sans #2
-    \fontfamily mono #3
-    \fontfamily math #4
-    \hangindent=\parindent \hangafter=1
-    \noindent #4:\quad \teststring\medskip
-  }%
-  \def\test{%
-    \setfontencoding{OT1}%
-    \testfamily CMRoman CMSans CMMono CMMath
-    \setfontencoding{T1}%
-    \testfamily LMRoman LMSans LMMono CMMath
-    \testfamily ConcreteRoman LMSans LMMono EulerMath
-    \testfamily CMBright CMBright CMBrightMono CMBrightMath
-    \testfamily URWPalladio NimbusSans BeraMono PazoMath
-    \testfamily URWPalladio NimbusSans BeraMono PXFontsMath
-    \testfamily NimbusRoman NimbusSans NimbusMono TXFontsMath
-    \testfamily NimbusRoman NimbusSans NimbusMono Belleek
-    \testfamily Charter NimbusSans NimbusMono CharterMath
-    \testfamily BeraSans BeraSans BeraMono ArevMath
-    \testfamily Iwona Iwona LMMono IwonaMath
-  }
-  \test
-  \vskip1pc \hrule \nobreak\vskip1pc
-
-  \bfseries
-  \test
-  \vskip1pc \hrule \nobreak\vskip1pc
-
-  \mdseries\itshape
-  \test
-  \vskip1pc \hrule \nobreak\vskip1pc
-
-  \upshape\setfontsize{17}\selectfont
-  \test
-\endgroup
-
-
-% 
-% Test for relative font scaling.
-%
-\title{Relative scaling of font families}
-
-\begingroup
-  \def\do#1{%
-     {\setfontfamily{CMRoman}\setfontencoding{OT1}\selectfont CMRoman}\quad
-     {\setfontfamily{#1}\selectfont #1}\smallskip
-  }
-  \line{\vbox{\hsize=.5\hsize \dofamilies}\qquad
-        \vbox{\hsize=.5\hsize \setfontseries{bx}\dofamilies}}
-\endgroup
-
-% 
-% Test for baseline skips.
-%
-\title{Baseline skips}
-
-\begingroup
-  \def\do#1{%
-    \begingroup
-      \setfontfamily{#1}\selectfont
-      (#1).
-      Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed
-      bibendum nulla id ante. Suspendisse nibh elit, ultricies
-      commodo, ultrices eget, sagittis a, erat. Praesent et
-      augue. Morbi sem. Phasellus augue. Ut bibendum. Sed urna enim,
-      luctus et, gravida vel, malesuada quis, velit. Fusce egestas
-      sapien quis leo.
-      \vskip5pt
-    \endgroup
-  }
-  \dofamilies
-\endgroup
-
-% 
-% Showcase for the font families we support.
-%
-\title{Font families showcase}
-
-\def\teststring{What a mess. }
-\def\test#1{%
-  #1%
-  \upshape \teststring
-  \itshape \teststring
-  \slshape \teststring
-  \scshape \teststring
-}
-
-\def\nextfamily#1 {%
-  \vskip2ex\relax
-  
\setfontfamily{#1}\setfontsize{11}\setfontseries{m}\setfontshape{n}\selectfont
-  \hrule
-  \nobreak\vskip2ex\relax
-}
-
-\def\nextsize#1 {%
-  \vskip1ex
-  \setfontsize{#1}\setfontseries{m}\setfontshape{n}\selectfont
-  \textindent{\numwithunit{#1}:}%
-  \test\mdseries\par
-  \test{\setfontseries{b}\selectfont}\par
-  \test\bfseries\par
-}%
-\def\numwithunit#1{%
-  \def\num{#1}%
-  \afterassignment\getunit
-  \dimen255=#1pt\relax
-}%
-\def\getunit#1\relax{%
-  \def\temp{#1}%
-  \num \ifx\temp\empty \thinspace [pt]\fi
-}%
-
-
-\nextfamily CMRoman
-CMRoman.  The ``bold'' and ``bold extended'' series are missing the
-``caps and small caps'' shape.  The ``italic'' and ``slanted'' shapes
-of the ``bold'' series are mapped to the corresponding shapes of the
-``bold extended'' series.
-\nextsize 10
-\nextsize 1pc
-
-\nextfamily CMSans
-CMSans.  For all series, ``italic'' is mapped to ``slanted''.  All
-series are missing the ``caps and small caps'' shape.  Entire ``bold''
-series is mapped to the ``bold extended'' series.
-\nextsize 10
-\nextsize 1pc
-
-\nextfamily CMMono
-CMMono.  There are no ``bold'' and ``bold extended'' series.  All
-series are missing the ``caps and small caps'' shape.
-\nextsize 10
-\nextsize 1pc
-
-\nextfamily LMRoman
-LMRoman.  Maps to CMRoman for the OT1 encodings, so this is actually
-CMRoman now.
-\nextsize 10
-\nextsize 1pc
-
-\nextfamily LMSans
-LMSans.  Maps to CMSans for the OT1 encodings, so this is actually
-CMSans now.
-\nextsize 10
-\nextsize 1pc
-
-\nextfamily LMMono
-LMMono.  Maps to CMMono for the OT1 encodings, so this is actually
-CMMono now.
-\nextsize 10
-\nextsize 1pc
-
-
-\setfontencoding{T1}
-
-\nextfamily LMRoman
-LMRoman T1.
-\nextsize 10
-\nextsize 1pc
-
-\nextfamily LMSans
-LMSans T1.  The ``bold'' series is mapped to the ``bold extended''
-series.
-\nextsize 10
-\nextsize 1pc
-
-\nextfamily LMMono
-LMMono T1.  The ``bold'' and ``bold extended'' series are missing.
-\nextsize 10
-\nextsize 1pc
-
-\nextfamily CMBright
-CMBright T1.
-\nextsize 10
-\nextsize 1pc
-
-\nextfamily CMBrightMono
-CMBrightMono T1.
-\nextsize 10
-\nextsize 1pc
-
-\nextfamily ConcreteRoman
-ConcreteRoman T1.  Only the T1 encoding is currently defined.  The
-``bold'' and ``bold extended'' series are mapped to LMSans T1.
-\nextsize 10
-\nextsize 1pc
-
-\nextfamily BeraRoman
-BeraRoman.  The ``bold'' series maps to the ``bold extended'' series.
-``Slanted'' shapes are artificially slanted.  All series are missing
-the ``caps and small caps'' shape.
-\nextsize 10
-\nextsize 1pc
-
-\nextfamily BeraSans
-BeraSans.  The ``bold'' series is mapped to the ``bold extended''
-series.  All series are missing the ``caps and small caps'' shape.
-\nextsize 10
-\nextsize 1pc
-
-\nextfamily BeraMono
-BeraMono.  The ``bold extended'' series is mapped to the ``bold''
-series.  All series are missing the ``caps and small caps'' shape.
-\nextsize 10
-\nextsize 1pc
-
-\nextfamily Charter
-Charter.  The ``bold'' series is mapped to the ``bold extended''
-series.
-\nextsize 10
-\nextsize 1pc
-
-\nextfamily NimbusRoman
-NimbusRoman.  The ``bold'' series is mapped to the ``bold extended''
-series.
-\nextsize 10
-\nextsize 1pc
-
-\nextfamily NimbusSans
-NimbusSans.  For all series, ``italic'' is mapped to ``slanted''.  The
-``bold'' series is mapped to the ``bold extended'' series.  In one
-case, this results in double mapping:  bx/it maps to b/it which maps
-to b/sl (check out the log file).
-\nextsize 10
-\nextsize 1pc
-
-\nextfamily NimbusMono
-NimbusMono.  For all series, ``italic'' is mapped to ``slanted''.  The
-``bold extended'' series is mapped to the ``bold'' series.  In one
-case, this results in double mapping:  bx/it maps to b/it which maps
-to b/sl (check out the log file).
-\nextsize 10
-\nextsize 1pc
-
-\nextfamily URWPalladio
-URWPalladio.  The ``bold'' series is mapped to the ``bold extended''
-series.
-\nextsize 10
-\nextsize 1pc
-
-\nextfamily URWBookman
-URWBookman.  The ``bold extended'' series is mapped to the ``bold''
-series.
-\nextsize 10
-\nextsize 1pc
-
-\nextfamily CenturySchoolbook
-CenturySchoolbook.  The ``bold'' series is mapped to the ``bold
-extended'' series.
-\nextsize 10
-\nextsize 1pc
-
-\nextfamily AntykwaTorunska
-AntykwaTorunska.  The ``bold'' series is mapped to the ``bold
-extended'' series.  For all series, ``slanted'' is mapped to
-``italic''.
-\nextsize 10
-\nextsize 1pc
-
-
-
-\nextfamily Iwona
-Iwona.  The ``bold extended'' series is mapped to the ``bold'' series.
-For all series, ``italic'' is mapped to ``slanted''.
-\nextsize 10
-\nextsize 1pc
-
-\vskip 1pc
-\setfontsize{10pt}\setfontseries{m}\setfontshape{n}\selectfont
-Iwona also supports ``light'', ``semi-bold'' and ``extra-bold''
-series, with ``condensed'' variants:
-
-\def\\#1{\setfontseries{#1}\selectfont\teststring}
-
-\\{l} (light).\par
-\\{lc} (light condensed).
-
-\\{m} (medium).\par
-\\{c} (medium condensed).
-
-\\{sb} (semi-bold).\par
-\\{sbc} (semi-bold condensed).
-
-\\{b} (bold).\par
-\\{bc} (bold condensed).
-
-\\{eb} (extra-bold).\par
-\\{ebc} (extra-bold condensed).
-
-
-
-\nextfamily URWGothic
-URWGothic.  The ``bold extended'' series is mapped to the ``bold''
-series.
-\nextsize 10
-\nextsize 1pc
-
-\nextfamily URWChancery
-\itshape
-URWChancery.  Only the ``medium italic'' shape is available.
-\nextsize 10
-\nextsize 1pc
-
-\bye
-
-% Local variables:
-% compile-command: "tex --interact=nonstopmode ftest"
-% page-delimiter: "^% \f"
-% End:
diff --git a/contrib/texifont/ienc.tex b/contrib/texifont/ienc.tex
deleted file mode 100644
index 275235aa6f..0000000000
--- a/contrib/texifont/ienc.tex
+++ /dev/null
@@ -1,544 +0,0 @@
-% Some of the macros here (\iCh, \@iCh, \@denc@loop) originated in
-% LaTeX's inputenc.dtx (\DeclareInputText, \DeclareInputMath,
-% \@inpenc@loop).  It's not clear whether copyright applies on these
-% small fragments, especially since they have been modified, but just
-% in case, we have permission from the LaTeX Project to distribute
-% them under the GPL.
-%
-% The idea is quite simple -- make all non-ASCII characters active and
-% give them encoding-independent definitions.  The font encoding code
-% will map these definitions to relevant font slots based on the
-% current font encoding.
-%
-%
-% \iCh SLOT{TEXT}
-%
-% Define expansion of active character SLOT (*three* arguments as
-% decimal digits) to be TEXT commands.  Since in text space matters,
-% we have to guard against TEXT which end in a macro, by checking
-% whether TEXT's \meaning ends in a space.  If it does, then we add
-% braces around the definition, in order to avoid any space after the
-% active char being gobbled up once the text is written out to an
-% auxiliary file.  FIXME Is this needed?
-\def\iCh#1#2#3#4{%
-  \def\tempa##1 ${}%$ font-lock fix.
-  \def\tempb{#4}%
-  \ifcat_\expandafter\tempa\meaning\tempb$ $_%
-    \@iCh{#1#2#3}{#4}%
-  \else
-    \@iCh{#1#2#3}{{#4}}%
-  \fi
-}%
-%
-% \@iCh{SLOT}{TEXT}
-%
-% Define expansion of active character SLOT to be TEXT commands.
-% To get the active character, we use the fact that \uppercase
-% preserves catcodes of characters:  we (temporarily) declare the
-% SLOT char to be the uppercase of ~ (which is active while we're in
-% texinfo.tex) and then "uppercase" it.
-\def\@iCh#1{%
-  \bgroup
-    \uccode`\~#1%
-    \uppercase{%
-  \egroup
-      \def~%
-    }%
-}%
-%
-% \documentencoding ENC
-%
-% Set input encoding to ENC.  It first sets all the characters
-% 128-255 to be active (and sets their initial definition to be
-% \@denc@undefined).  It then calls the macro which defines the
-% input encoding.  Name of the current encoding is stored in
-% \documenttencodingname.
-\def\documentencoding#1 {%
-  % Make sure that the encoding is defined.
-  \expandafter\ifx\csname denc/#1\endcsname \relax
-    \message{^^JWarning:  document encoding `#1' is not defined,^^J
-             leaving document encoding unchanged.}%
-  \else
-    % Keyboard characters which don't get a definition will be mapped to
-    % \@denc@undefined.
-    \edef\@denc@undefined{\noexpand\@denc@undefined@{#1}}%
-    % Save encoding name.
-    \edef\documentencodingname{#1}%
-    % Make all potential input characters active.
-    \@denc@loop\^^80\^^ff%
-    % Call the command which will redefine the active characters
-    % according to the document encoding.
-    \csname denc/#1\endcsname
-    % Set up the current font encoding list, which defines priority of
-    % font encodings when searching for a glyph.
-    \expandafter\let\expandafter\cur@fenc@list
-      \csname denc@fenc@list/#1\endcsname
-    % Update encoding list index, for proper glyph caching.
-    \update@enclist@index
-  \fi
-}%
-%
-% Default definition for active characters.
-\def\@denc@undefined@#1{%
-  \errmessage{Keyboard character used is undefined in input encoding `#1'}%
-}%
-%
-% Make characters #1 to #2 inclusive active and undefined.
-\def\@denc@loop#1#2{%
-  \count@`#1\relax
-  \loop
-    \catcode\count@\active
-    \bgroup
-      \uccode`\~\count@
-      \uppercase{%
-    \egroup
-        \let~\@denc@undefined
-      }%
-  \ifnum\count@<`#2\relax
-    \advance\count@\@ne
-  \repeat
-}%
-%
-% \denc@begin{ENC}{FENC-LIST}{DEF-COMMANDS}
-%
-% Define input ("document") encoding ENC and save DEF-COMMANDS which
-% set up the encoding.  FENC-LIST defines priorities of font encodings
-% which are searched for glyphs while this document encoding is
-% active.
-\def\denc@define#1#2{%
-  \expandafter\edef\csname denc@fenc@list/#1\endcsname{#2\space}%
-  \expandafter\def\csname denc/#1\endcsname
-}%
-%
-% US-ASCII -- leaves all characters above 127 as undefined.
-\denc@define{US-ASCII}{OT1 OMS OML}{}%
-% End of US-ASCII.
-%
-% Characters common to ISO-8859-1 and ISO-8859-15.
-\def\denc@common@latin@i@xv{%
-\iCh160\tie
-\iCh161\exclamdown
-\iCh162\textcent
-\iCh163\pounds
-\iCh165\textyen
-\iCh167\textsection
-\iCh169\copyright
-\iCh170\ordf
-\iCh171\textguillemotleft
-\iCh172\textlnot % FIXME What about \lnot?
-\iCh173\-%
-\iCh174\registeredsymbol
-\iCh175{\={}}%
-\iCh176\textdegree
-\iCh177\textplusminus
-\iCh178\texttwosuperior
-\iCh179\textthreesuperior
-\iCh181\textmu
-\iCh182\textparagraph
-\iCh183\textperiodcentered
-\iCh185\textonesuperior
-\iCh186\ordm
-\iCh187\textguillemotright
-\iCh191\questiondown
-\iCh192{\`A}%
-\iCh193{\'A}%
-\iCh194{\^A}%
-\iCh195{\~A}%
-\iCh196{\"A}%
-\iCh197{\ringaccent A}%
-\iCh198\AE
-\iCh199{\,C}%
-\iCh200{\`E}%
-\iCh201{\'E}%
-\iCh202{\^E}%
-\iCh203{\"E}%
-\iCh204{\`I}%
-\iCh205{\'I}%
-\iCh206{\^I}%
-\iCh207{\"I}%
-\iCh208\DH
-\iCh209{\~N}%
-\iCh210{\`O}%
-\iCh211{\'O}%
-\iCh212{\^O}%
-\iCh213{\~O}%
-\iCh214{\"O}%
-\iCh215\textmultiply
-\iCh216\O
-\iCh217{\`U}%
-\iCh218{\'U}%
-\iCh219{\^U}%
-\iCh220{\"U}%
-\iCh221{\'Y}%
-\iCh222\TH
-\iCh223\ss
-\iCh224{\`a}%
-\iCh225{\'a}%
-\iCh226{\^a}%
-\iCh227{\~a}%
-\iCh228{\"a}%
-\iCh229{\ringaccent a}%
-\iCh230\ae
-\iCh231{\,c}%
-\iCh232{\`e}%
-\iCh233{\'e}%
-\iCh234{\^e}%
-\iCh235{\"e}%
-\iCh236{\`i}%
-\iCh237{\'i}%
-\iCh238{\^i}%
-\iCh239{\"i}%
-\iCh240\dh
-\iCh241{\~n}%
-\iCh242{\`o}%
-\iCh243{\'o}%
-\iCh244{\^o}%
-\iCh245{\~o}%
-\iCh246{\"o}%
-\iCh247\textdivide
-\iCh248\o
-\iCh249{\`u}%
-\iCh250{\'u}%
-\iCh251{\^u}%
-\iCh252{\"u}%
-\iCh253{\'y}%
-\iCh254\th
-\iCh255{\"y}%
-}% End of characters common to ISO-8859-1 and ISO-8859-15.
-%
-% ISO-8859-1.
-\denc@define{ISO-8859-1}{T1 TS1 OT1 OMS OML}{%
-\denc@common@latin@i@xv
-\iCh164\textcurrency
-\iCh166\textbrokenbar
-\iCh168{\"{}}%
-\iCh180{\'{}}%
-\iCh184{\,{}}% FIXME LaTeX has it as `\c\ ' (`\ ' instead of `{}'), check why 
(alignment?).
-\iCh188\textonequarter
-\iCh189\textonehalf
-\iCh190\textthreequarters
-}% End of ISO-8859-1.
-%
-% ISO-8859-15.
-\denc@define{ISO-8859-15}{T1 TS1 OT1 OMS OML}{%
-\denc@common@latin@i@xv
-\iCh164\euro
-\iCh166{\v S}%
-\iCh168{\v s}%
-\iCh180{\v Z}%
-\iCh184{\v z}%
-\iCh188\OE
-\iCh189\oe
-\iCh190{\"Y}%
-}% End of ISO-8859-15.
-%
-% ISO-8859-2.
-\denc@define{ISO-8859-2}{T1 TS1 OT1 OMS OML}{%
-\iCh160\tie
-\iCh161{\k A}%
-\iCh162{\u{}}%
-\iCh163{\L}%
-\iCh164\textcurrency
-\iCh165{\v L}%
-\iCh166{\' S}%
-\iCh167\textsection
-\iCh168{\"{}}%
-\iCh169{\v S}%
-\iCh170{\, S}%
-\iCh171{\v T}%
-\iCh172{\'Z}%
-\iCh173\-%
-\iCh174{\v Z}%
-\iCh175{\dotaccent Z}%
-\iCh176\textdegree
-\iCh177{\k a}%
-\iCh178{\k{}}% FIXME LaTeX has it as `\k\ ' (`\ ' instead of `{}'), check why 
(alignment?).
-\iCh179\l
-\iCh180{\'{}}%
-\iCh181{\v l}%
-\iCh182{\'s}%
-\iCh183{\v{}}%
-\iCh184{\,{}}% FIXME LaTeX has it as `\c\ ' (`\ ' instead of `{}'), check why 
(alignment?).
-\iCh185{\v s}%
-\iCh186{\, s}%
-\iCh187{\v t}%
-\iCh188{\'z}%
-\iCh189{\H{}}%
-\iCh190{\v z}%
-\iCh191{\dotaccent z}%
-\iCh192{\'R}%
-\iCh193{\'A}%
-\iCh194{\^A}%
-\iCh195{\u A}%
-\iCh196{\"A}%
-\iCh197{\'L}%
-\iCh198{\'C}%
-\iCh199{\,C}%
-\iCh200{\v C}%
-\iCh201{\'E}%
-\iCh202{\k E}%
-\iCh203{\"E}%
-\iCh204{\v E}%
-\iCh205{\'I}%
-\iCh206{\^I}%
-\iCh207{\v D}%
-\iCh208\DJ
-\iCh209{\'N}%
-\iCh210{\v N}%
-\iCh211{\'O}%
-\iCh212{\^O}%
-\iCh213{\H O}%
-\iCh214{\"O}%
-\iCh215\textmultiply
-\iCh216{\v R}%
-\iCh217{\ringaccent U}%
-\iCh218{\'U}%
-\iCh219{\H U}%
-\iCh220{\"U}%
-\iCh221{\'Y}%
-\iCh222{\,T}%
-\iCh223{\ss}%
-\iCh224{\'r}%
-\iCh225{\'a}%
-\iCh226{\^a}%
-\iCh227{\u a}%
-\iCh228{\"a}%
-\iCh229{\'l}%
-\iCh230{\'c}%
-\iCh231{\,c}%
-\iCh232{\v c}%
-\iCh233{\'e}%
-\iCh234{\k e}%
-\iCh235{\"e}%
-\iCh236{\v e}%
-\iCh237{\'i}%
-\iCh238{\^i}%
-\iCh239{\v d}%
-\iCh240\dj
-\iCh241{\'n}%
-\iCh242{\v n}%
-\iCh243{\'o}%
-\iCh244{\^o}%
-\iCh245{\H o}%
-\iCh246{\"o}%
-\iCh247\textdivide
-\iCh248{\v r}%
-\iCh249{\ringaccent u}%
-\iCh250{\'u}%
-\iCh251{\H u}%
-\iCh252{\"u}%
-\iCh253{\'y}%
-\iCh254{\,t}%
-\iCh255{\dotaccent{}}%
-}% End of ISO-8859-2.
-%
-% KOI8-R.
-\denc@define{KOI8-R}{T2A T1 TS1 OT1 OMS OML}{%
-% FIXME \textblacksquare, \surd, \sim, \leq, \geq?
-\iCh149\bullet
-\iCh154\tie
-\iCh156\textdegree
-\iCh157\texttwosuperior
-\iCh158\textperiodcentered
-\iCh159\textdivide
-\iCh163\cyryo
-\iCh179\CYRYO
-\iCh191\copyright
-\iCh192\cyryu
-\iCh193\cyra
-\iCh194\cyrb
-\iCh195\cyrc
-\iCh196\cyrd
-\iCh197\cyre
-\iCh198\cyrf
-\iCh199\cyrg
-\iCh200\cyrh
-\iCh201\cyri
-\iCh202\cyrishrt
-\iCh203\cyrk
-\iCh204\cyrl
-\iCh205\cyrm
-\iCh206\cyrn
-\iCh207\cyro
-\iCh208\cyrp
-\iCh209\cyrya
-\iCh210\cyrr
-\iCh211\cyrs
-\iCh212\cyrt
-\iCh213\cyru
-\iCh214\cyrzh
-\iCh215\cyrv
-\iCh216\cyrsftsn
-\iCh217\cyrery
-\iCh218\cyrz
-\iCh219\cyrsh
-\iCh220\cyrerev
-\iCh221\cyrshch
-\iCh222\cyrch
-\iCh223\cyrhrdsn
-\iCh224\CYRYU
-\iCh225\CYRA
-\iCh226\CYRB
-\iCh227\CYRC
-\iCh228\CYRD
-\iCh229\CYRE
-\iCh230\CYRF
-\iCh231\CYRG
-\iCh232\CYRH
-\iCh233\CYRI
-\iCh234\CYRISHRT
-\iCh235\CYRK
-\iCh236\CYRL
-\iCh237\CYRM
-\iCh238\CYRN
-\iCh239\CYRO
-\iCh240\CYRP
-\iCh241\CYRYA
-\iCh242\CYRR
-\iCh243\CYRS
-\iCh244\CYRT
-\iCh245\CYRU
-\iCh246\CYRZH
-\iCh247\CYRV
-\iCh248\CYRSFTSN
-\iCh249\CYRERY
-\iCh250\CYRZ
-\iCh251\CYRSH
-\iCh252\CYREREV
-\iCh253\CYRSHCH
-\iCh254\CYRCH
-\iCh255\CYRHRDSN
-}% End of KOI8-R.
-%
-% CP1251.
-\denc@define{CP1251}{T2A T1 TS1 OT1 OMS OML}{%
-\iCh128\CYRDJE
-\iCh129{\'\CYRG}%
-\iCh130\textquotesinglbase
-\iCh131{\'\cyrg}%
-\iCh132\textquotedblbase
-\iCh133\dots
-\iCh134\textdagger
-\iCh135\textdaggerdbl
-\iCh136\euro
-\iCh137\textperthousand
-\iCh138\CYRLJE
-\iCh139\textguilsinglleft
-\iCh140\CYRNJE
-\iCh141{\'\CYRK}%
-\iCh142\CYRTSHE
-\iCh143\CYRDZHE
-\iCh144\cyrdje
-\iCh145\textquoteleft
-\iCh146\textquoteright
-\iCh147\textquotedblleft
-\iCh148\textquotedblright
-\iCh149\bullet
-\iCh150\textendash
-\iCh151\textemdash
-\iCh153\texttrademark
-\iCh154\cyrlje
-\iCh155\textguilsinglright
-\iCh156\cyrnje
-\iCh157{\'\cyrk}%
-\iCh158\cyrtshe
-\iCh159\cyrdzhe
-\iCh160\tie
-\iCh161\CYRUSHRT
-\iCh162\cyrushrt
-\iCh163\CYRJE
-\iCh164\textcurrency
-\iCh165\CYRGUP
-\iCh166\textbrokenbar
-\iCh167\textsection
-\iCh168\CYRYO
-\iCh169\copyright
-\iCh170\CYRIE
-\iCh171\textguillemotleft
-\iCh172\textlnot
-\iCh173\-%
-\iCh174\registeredsymbol
-\iCh175\CYRYI
-\iCh176\textdegree
-\iCh177\textplusminus
-\iCh178\CYRII
-\iCh179\cyrii
-\iCh180\cyrgup
-\iCh181\textmu
-\iCh182\textparagraph
-\iCh183\textperiodcentered
-\iCh184\cyryo
-\iCh185\textnumero
-\iCh186\cyrie
-\iCh187\textguillemotright
-\iCh188\cyrje
-\iCh189\CYRDZE
-\iCh190\cyrdze
-\iCh191\cyryi
-\iCh192\CYRA
-\iCh193\CYRB
-\iCh194\CYRV
-\iCh195\CYRG
-\iCh196\CYRD
-\iCh197\CYRE
-\iCh198\CYRZH
-\iCh199\CYRZ
-\iCh200\CYRI
-\iCh201\CYRISHRT
-\iCh202\CYRK
-\iCh203\CYRL
-\iCh204\CYRM
-\iCh205\CYRN
-\iCh206\CYRO
-\iCh207\CYRP
-\iCh208\CYRR
-\iCh209\CYRS
-\iCh210\CYRT
-\iCh211\CYRU
-\iCh212\CYRF
-\iCh213\CYRH
-\iCh214\CYRC
-\iCh215\CYRCH
-\iCh216\CYRSH
-\iCh217\CYRSHCH
-\iCh218\CYRHRDSN
-\iCh219\CYRERY
-\iCh220\CYRSFTSN
-\iCh221\CYREREV
-\iCh222\CYRYU
-\iCh223\CYRYA
-\iCh224\cyra
-\iCh225\cyrb
-\iCh226\cyrv
-\iCh227\cyrg
-\iCh228\cyrd
-\iCh229\cyre
-\iCh230\cyrzh
-\iCh231\cyrz
-\iCh232\cyri
-\iCh233\cyrishrt
-\iCh234\cyrk
-\iCh235\cyrl
-\iCh236\cyrm
-\iCh237\cyrn
-\iCh238\cyro
-\iCh239\cyrp
-\iCh240\cyrr
-\iCh241\cyrs
-\iCh242\cyrt
-\iCh243\cyru
-\iCh244\cyrf
-\iCh245\cyrh
-\iCh246\cyrc
-\iCh247\cyrch
-\iCh248\cyrsh
-\iCh249\cyrshch
-\iCh250\cyrhrdsn
-\iCh251\cyrery
-\iCh252\cyrsftsn
-\iCh253\cyrerev
-\iCh254\cyryu
-\iCh255\cyrya
-}% End of CP1251.
-%
-\endinput
diff --git a/contrib/texifont/oenc.tex b/contrib/texifont/oenc.tex
deleted file mode 100644
index 2caa27cc7d..0000000000
--- a/contrib/texifont/oenc.tex
+++ /dev/null
@@ -1,990 +0,0 @@
-%
-% Intro
-% =====
-%
-% A glyph can be accessed with one of the three different kinds of
-% macros:
-%
-%   command     a macro without arguments, e.g., |\textdegree|;
-%
-%   composite   a macro taking one argument, producing a single glyph
-%               from a font;
-%
-%   accent      a macro taking one argument, producing a glyph (the
-%               argument) with another glyph (accent) superimposed.
-%
-% Accents can place an accent mark on any glyph, but typographically
-% this often doesn't look good.  Therefore some fonts provide some
-% accented glyphs designed by a designer ("composites").  For example,
-% typing |\'a| will result in the acute accent (|\'|) being placed
-% over the glyph |a| in some encodings (e.g., in OT1), but will
-% produce a single glyph (|a| with acute) in others (e.g., T1).
-%
-% Note that a font may contain both composites (for some letters) and
-% accent marks.  When a composite is not available in the font, the
-% accent can be used to typeset the desired glyph.
-%
-% Besides the visual advantages, composites are preferable for a
-% technical reason -- TeX does not hyphenate words which contain
-% accents.
-%
-% Glyph searching
-% ===============
-%
-% Glyph searching means identifying a font encoding which both
-% contains the glyph and is supported by the current font family.
-%
-% The simplest approach at glyph searching is to search through the
-% list of encodings in which the glyph exists to find the first one
-% supported by the current font family.
-%
-% This however can result in using unnecessarily large number of
-% fonts.  In order to decrease the font usage we can provide hints to
-% the glyph searching mechanism as to which font encodings are the
-% most likely to contain glyphs under different circumstances.
-%
-% There is some relation between input encodings and font encodings,
-% although it is not necessarily a one-to-one (or a many-to-one)
-% mapping.  Each input encoding defines a list of font encodings which
-% should be tried first (we call it "the current font encoding list",
-% |\cur@fenc@list|).  These are encodings which cover the input
-% encoding completely.  Only if we don't find an encoding in this list
-% which is both supported by the current font family and contains the
-% glyph, we start searching the glyph's encoding list.
-%
-% Searching for a glyph involves an ambiguity -- the same glyph be
-% typeset as either an accent over a letter, or as a single composite
-% glyph.  Ideally a composite is preferable, but if an accent is
-% available without changing the current font, we might prefer the
-% accent.
-%
-% This is how we do the searching:
-%
-% 1) Check the current encoding + current font encoding list (set up
-%    by |@documentencoding|) "breadth-first", i.e., preferring accents
-%    in an earlier encoding over composites in later encodings.  This
-%    is to hopefully minimize the font usage, as we would find "the
-%    earliest" usable font.
-%
-% 2) If the glyph was not found in step 1, search the glyph's encoding
-%    list.  We now prefer composites -- we'll consider an accent only
-%    when none of the composite's encodings is supported by the
-%    current font family.  We now don't care about font usage and
-%    search "the best" glyph, as this is a (supposedly rare) situation
-%    when a "non-standard" font will get used anyway, e.g., when a
-%    user requests a Cyrillic glyph while inside a Latin environment.
-%
-% Cache
-% =====
-%
-% After we've found the glyph we can cache it, i.e., arrange for the
-% the glyph's macro the next time to typeset the glyph without doing
-% the searching again.
-%
-% Such cache however must be aware of changes in settings which affect
-% glyph searching, which are:
-%
-% 1) the current font encoding (E);
-% 2) the current font encoding list, set up by |@documentencoding| (EL);
-% 3) font encoding list of the current font family (FEL).
-%
-% Therefore, the first thing we do is assign a unique index to every
-% combination of E+EL+FEL we encounter in the document.  Whenever we
-% change E, EL or FEL we check if the new combination have already
-% been assigned an index; if not, we allocate next index for the new
-% combination (see |\update@enclist@index|).  When we cache a glyph we
-% use this index to remember for which combination of E+EL+FEL this
-% cache entry is for.
-%
-% This is how glyph caching works.  Let's say we have to typeset
-% |\'a|.  |\'| (being a composite or an accent) calls a macro named
-% |\N\'-a| (single command sequence, N is the index of the current
-% E+EL+FEL combination) if it's defined; if it's not defined, |\'|
-% calls glyph searching macro.  After the glyph searching macro finds
-% the glyph corresponding to |\'a|, it defines the macro named
-% |\N\'-a| to typeset that glyph (using either accent or composite,
-% whatever was found), so the next time we encounter |\'a| we won't
-% search for the glyph (unless the E+EL+FEL combination has changed
-% and |\'a| had not yet been cached for that combo).
-%
-% The drawback of this method is that TeX's memory gets filled with
-% many cache entries for every E+EL+FEL combo ever used in the
-% document.  It's possible to construct the glyph cache in a way to
-% avoid this -- for example, to define only one cache macro for |\'a|,
-% and add to it a new branch for each new E+EL+FEL combination, but
-% naturally this will be slower.
-%
-% Internal macros ("variables")
-% =============================
-%
-% fenc@enc          font encoding currently being defined.
-%
-% fenc@list/NAME    list of encodings for the glyph NAME.
-%
-% cur@fenc@list     "the current font encoding list" (see "Glyph
-%                   searching" above).
-%
-% ENC/NAME          definition of glyph NAME in encoding ENC.
-%
-% @enc              encoding of the glyph (set after finding the
-%                   glyph / retrieving the glyph from the cache).
-%
-% cache@enc@ENC     macro that defines \@enc to be ENC.
-%
-% N\NAME            cache entry for glyph \NAME under a combination of
-%                   E+EL+FEL number N.
-%
-%
-%
-% \fCmd{COMMAND}{TEXT}
-%
-% Define a command that does not take arguments.  Call \f@restore@enc
-% inside TEXT if you need to restore the original encoding (remember,
-% before the command is called, the encoding is changed to the one for
-% which the command was defined, which can be different from the
-% current user's encoding).
-\def\fCmd#1#2{%
-  \def#1{\f@search@command #1}%
-  \f@def@enc@glyph#1%
-    {\f@change@enc #2\f@enc@egroup}%
-}%
-%
-% \fSym{COMMAND}{SLOT}
-%
-% Define a font glyph in SLOT.
-\def\fSym#1#2{\fCmd{#1}{\char#2 }}%
-%
-% \fCmdd{COMMAND}{TEXT}
-%
-% Define a command that takes one argument.  Call \f@restore@enc
-% inside TEXT before typesetting the argument, to restore the original
-% encoding (remember, before the command is called, the encoding is
-% changed to the one for which the command was defined, which can be
-% different from the current user's encoding).
-\def\fCmdd#1#2{%
-  \def#1{\f@search@accent #1}% When searching, treat it as an accent.
-  \f@def@enc@glyph#1%
-    ##1{\f@change@enc #2\f@enc@egroup}%
-}%
-%
-% \fCmp{COMMAND}{ARG}{TEXT}
-%
-% Define a composite command.  If there's a corresponding accent,
-% composite will override the accent when the argument is ARG.
-\def\fCmp#1#2#3{%
-  \def#1{\f@search@composite #1}%
-  \f@def@enc@glyph{#1-\string#2}%
-    {\f@change@enc #3\f@enc@egroup}%
-}%
-%
-% \fCmpSym{COMMAND}{ARG}{SLOT}
-%
-% Same as \fCmp, but define a composite glyph in SLOT.
-\def\fCmpSym#1#2#3{\fCmp#1#2{\char#3}}%
-%
-% \fAcc{COMMAND}{SLOT}
-%
-% Define an accent in SLOT.  If there are corresponding composite
-% commands for some arguments, they will override the accent for those
-% arguments.
-\def\fAcc#1#2{%
-  \def#1{\f@search@accent #1}%
-  \f@def@enc@glyph#1%
-    {\f@do@accent{#2}}%
-}%
-%
-%
-%
-% \f@def@enc@glyph{NAME}{DEF}
-%
-% Define a glyph in the current encoding.
-\def\f@def@enc@glyph#1{%
-  % Add the font encoding to the encoding list for the command.
-  \expandafter\def\expandafter\temp\expandafter{%
-    \csname fenc@list/\string#1\endcsname
-  }%
-  \expandafter\ifx\temp\relax
-    \let\tempa\empty
-  \else
-    \edef\tempa{\temp}%
-  \fi
-  \expandafter\edef\temp{\fenc@enc\space\tempa}%
-  % Start definition of the glyph command for the current encoding.
-  \expandafter\def \csname\fenc@enc/\string#1\endcsname
-}%
-%
-% \f@change@enc
-%
-% Start a group with \f@enc@bgroup and change font encoding to \@enc,
-% if the current encoding is different.  The original encoding is
-% saved, call \f@restore@enc inside the command's def to restore it.
-\def\f@change@enc{%
-  \f@enc@bgroup
-  % Save original encoding -- the glyph macro might need to restore
-  % it, e.g., to typeset its argument.
-  \let\f@orig@enc\f@encoding
-  % Switch encoding, if needed.  \@enc is set when the glyph is
-  % found or retrieved from the cache.
-  \ifx\f@encoding\@enc \else
-    \setfontencoding{\@enc}\selectfont
-  \fi
-}%
-%
-% \f@restore@enc
-%
-% Restore encoding saved by \f@change@enc.
-\def\f@restore@enc{%
-  \ifx\f@orig@enc\f@encoding \else
-    \setfontencoding{\f@orig@enc}\selectfont
-  \fi
-}%
-%
-% These are used by glyphs to start and end a group isolating a font
-% encoding change.  Accents turn these off to avoid any grouping
-% inside their argument, because grouping breaks accents.
-\let\f@enc@bgroup\bgroup
-\let\f@enc@egroup\egroup
-%
-% \f@do@accent{SLOT}{ARG}
-%
-% Typeset an accent in SLOT over the ARG.
-\def\f@do@accent#1#2{%
-  \bgroup
-    % Avoid starting any more groups -- they're not needed because we
-    % already have one, and a group between the accent and the
-    % accented letter will break the accent.
-    \let\f@enc@bgroup\empty
-    \let\f@enc@egroup\empty
-    % Preload any fonts in advance, to prevent grouping (possible when
-    % loading fonts) from messing with the accent.  Also save the
-    % space factor of the argument -- we'll need to restore it,
-    % otherwise, e.g., \'A will have the factor of 1000 instead of 999.
-    \setbox\z@\hbox{#2%
-      \xdef\f@do@accent@spacefactor{\spacefactor\the\spacefactor}}%
-    % Save the current font encoding and switch it.
-    \f@change@enc
-    % Start the accent.
-    \accent#1
-    % Turn off \fontnotify and \setleading, because their \message and
-    % \setbox will break the accent.  We don't turn off \fontwarn
-    % because a warning would mean that the fonts are broken anyway,
-    % and a warning might help diagnosing.
-    \let\@fontnotify\gobble
-    \let\@setleading\gobble
-    % Restore the original encoding.
-    \f@restore@enc
-    % Typeset the argument.
-    #2\f@do@accent@spacefactor % Restore the space factor.
-  \egroup
-}%
-%
-%
-%
-% \f@search@command{COMMAND}
-%
-% Search for the glyph COMMAND and typeset it.
-\def\f@search@command#1{%
-  % Check the cache of the current font encoding list.
-  \expandafter\let \expandafter\temp
-    \csname \the\enclist@curr\string#1\endcsname
-  %
-  \ifx\temp\relax
-    % The glyph is not in the cache, search.
-    %\message{^^J Glyph command `\string#1' is not
-    %  in the cache (idx \the\enclist@curr).}%
-    \def\f@search@cmd{\string#1}%
-    \let\f@search@arg\empty
-    \let\f@accent@arg\empty
-    \f@search@encodings
-  \else
-    % The glyph is in the cache.
-    %\message{^^J Glyph command `\string#1' is
-    %  in the cache (idx \the\enclist@curr).}%
-    \temp
-  \fi
-}%
-%
-% \f@search@composite{COMMAND}{ARGUMENT}
-%
-% Search for the composite COMMAND + ARGUMENT and typeset it.  If such
-% composite is not defined but an accent named COMMAND is, the accent
-% will be substituted.
-\def\f@search@composite#1#2{%
-  % Check the cache with the current font encoding list.  \empty after
-  % #2 is for a situation like \'{} (empty ARGUMENT).
-  \expandafter\let \expandafter\temp
-    \csname \the\enclist@curr\string#1-\string#2\empty\endcsname
-  %
-  \ifx\temp\relax
-    % The glyph is not in the cache, search.
-    %\message{^^J Glyph composite `\string#1{\string#2\empty}' is not
-    %  in the cache (idx \the\enclist@curr).}%
-    \def\f@search@arg{-\string#2\empty}%
-    \def\f@search@cmd{\string#1}%
-    \def\f@accent@arg{{#2}}%
-    \f@search@encodings
-  \else
-    % The glyph is in the cache.
-    %\message{^^J Glyph composite `\string#1{\string#2\empty}' is
-    %  in the cache (idx \the\enclist@curr).}%
-    \temp
-  \fi
-}%
-%
-% \f@search@accent{COMMAND}{ARGUMENT}
-%
-% Search for the accent COMMAND and typeset it over the ARGUMENT.  If a
-% composite with the name COMMAND is defined with the ARGUMENT, it
-% might be used in preference to the accent.
-\let\f@search@accent\f@search@composite
-%
-%
-%
-% \f@search@encodings
-%
-% Search for a glyph (accent/composite/command), first in the current
-% encoding, then in the current font encoding list (set up by
-% @documentencoding), then in all encodings in which the glyph
-% appears.  After the glyph is found, define the cache entry for the
-% glyph and typeset the glyph.
-\def\f@search@encodings{%
-  \let\@enc\relax
-  \let\f@cache@arg\f@search@arg
-  % Check the current font encoding + the current font encoding list
-  % breadth-first.  We want to find a glyph as early in the list as
-  % possible (to hopefully minimize number of fonts that get loaded),
-  % therefore we prefer an accent in an earlier encoding over a
-  % composite in a later encoding, hence the "breadth first" search.
-  \edef\temp{\f@encoding\space\cur@fenc@list}%
-  \f@search@breadthfirst \temp
-  %
-  \ifx\@enc\relax
-    % Nothing found, so we try a different tactic.  We check encoding
-    % list of the glyph to find the first encoding which is supported
-    % by the current font family.  One complication is that a glyph
-    % can appear as a command, a composite or an accent, so we need to
-    % check all possibilities (but preferring composites over
-    % accents).
-    %
-    % Check the composite.  If \f@search@arg is \empty, this will check
-    % encoding list of the command, which is exactly what we need.
-    \expandafter\f@search@glyph
-      \csname fenc@list/\f@search@cmd\f@search@arg\endcsname
-    %
-    \ifx\@enc\relax
-      % Nothing found, check the font encoding list of the command / accent.
-      \let\f@search@arg\empty % It's not a composite, so we don't need arg 
part.
-      \expandafter\f@search@glyph
-        \csname fenc@list/\f@search@cmd\endcsname
-      %
-      \ifx\@enc\relax
-        % Still nothing found, which means the current family does not
-        % support any of the composite's / command's / accent's encodings.
-        \errmessage{^^JThe font family \f@family\space does not support
-                    the command `\f@search@cmd\f@cache@arg'}%
-      \fi
-    \else
-      % We've found a composite (or a command), so we don't need the arg below.
-      \let\f@accent@arg\empty
-    \fi
-  \fi
-  % Make the cache entry.
-  \edef\temp##1{%
-    \expandafter\gdef\expandafter\noexpand
-      \csname \the\enclist@curr\f@search@cmd\f@cache@arg\endcsname{%
-        % Set \@enc to the encoding of the glyph.
-        \expandafter\noexpand
-          \csname cache@enc@\@enc\endcsname
-        % Call the glyph's definition for the encoding we've found.
-        \expandafter\noexpand
-          \csname\@enc/\f@search@cmd\f@search@arg\endcsname ##1%
-      }%
-  }%
-  \expandafter\temp\expandafter{\f@accent@arg}%
-  % Typeset the glyph.
-  \csname \the\enclist@curr\f@search@cmd\f@cache@arg\endcsname
-}%
-%
-% \f@search@breadthfirst \ENC-LIST
-%
-% Search (recursively) for a glyph in encodings from \ENC-LIST,
-% preferring an accent in an earlier encoding over a composite in a
-% later encoding.  When the glyph is found, \@enc, \f@search@arg and
-% \f@accent@arg are set accordingly (see \f@search@encodings).
-\def\f@search@breadthfirst#1{%
-  \let\next\@f@search@breadthfirst % \@f@search@breadthfirst needs this.
-  \expandafter\@f@search@breadthfirst #1\finish
-}%
-%
-\def\@f@search@breadthfirst#1 #2\finish{%
-  % See if this is the last encoding in the list.
-  \def\temp{#2}%
-  \ifx\temp\empty % Yes, gobble the list's sentinel.
-    \let\next\gobble@to@finish
-  \fi
-  % See if this encoding is supported by the current family.
-  \expandafter\ifx \csname fam@enc/\f@family/#1\endcsname \relax
-  \else
-    % See if the encoding contains the composite (or the command, when
-    % \f@search@arg is \empty).
-    \expandafter\ifx \csname #1/\f@search@cmd\f@search@arg\endcsname \relax
-      % No, but maybe the encoding contains the accent.  (This might
-      % also check the second time for the command if it was not found
-      % above.)
-      \expandafter\ifx \csname #1/\f@search@cmd\endcsname \relax \else
-        \let\f@search@arg\empty % \f@search@encodings needs this.
-        \def\@enc{#1}%
-        \let\next\gobble@to@finish % Gobble the rest of the list.
-      \fi
-    \else % Yes, this encoding contains the composite (or a command).
-      \let\f@accent@arg\empty % \f@search@encodings needs this.
-      \def\@enc{#1}%
-      \let\next\gobble@to@finish % Gobble the rest of the list.
-    \fi
-  \fi
-  %
-  \next#2\finish
-}%
-%
-% \f@search@glyph \ENC-LIST
-%
-% Search (recursively) for a particular type of glyph
-% (command/composite/accent, determined by the combination of
-% \f@search@cmd and \f@search@arg) in encodings from \ENC-LIST.
-\def\f@search@glyph#1{%
-  \ifx#1\relax \else
-    \let\next\@f@search@glyph % \@f@search@glyph needs this.
-    \expandafter\@f@search@glyph#1\finish
-  \fi
-}%
-%
-\def\@f@search@glyph#1 #2\finish{%
-  % See if this is the last encoding in the list.
-  \def\temp{#2}%
-  \ifx\temp\empty % Yes, gobble the list's sentinel.
-    \let\next\gobble@to@finish
-  \fi
-  % See if this encoding is supported by the current family.
-  \expandafter\ifx \csname fam@enc/\f@family/#1\endcsname \relax
-  \else % Yes, see if the encoding contains the glyph.
-    \expandafter\ifx \csname #1/\f@search@cmd\f@search@arg\endcsname \relax
-    \else
-      \def\@enc{#1}%
-      \let\next\gobble@to@finish % Gobble the rest of the list.
-    \fi
-  \fi
-  %
-  \next#2\finish
-}%
-%
-%
-%
-% Font ("output") encodings.  LaTeX's ltoutenc.dtx v1.99h has been
-% used as reference.
-%
-% Some commands common to several encodings.
-%
-\def\registeredsymbol{\leavevmode\raise.7ex\hbox{\textregistered}}
-\def\@euro{{\setfontfamily{Eurosym}\setfontencoding{T1}\selectfont\char101}}%
-\def\aa{\ringaccent a}%
-\def\AA{\ringaccent A}%
-\def\@cedilla#1#2{{\setbox\z@\hbox{\f@restore@enc #2}%
-  \ifdim\ht\z@=1ex\accent#1 \f@restore@enc #2%
-    \else\ooalign{\unhbox\z@\crcr\hidewidth\char#1\hidewidth}\fi}}%
-\def\@udotaccent#1{{\o@lign{\relax\f@restore@enc#1\crcr
-  \hidewidth\sh@ft{-1ex}.\hidewidth}}}%
-\def\@ubaraccent#1#2{{\o@lign{\relax\f@restore@enc#2\crcr
-  \hidewidth\sh@ft{-3ex}\vbox to.2ex{\hbox{\char#1}\vss}\hidewidth}}}%
-%
-% This defines encoding used when defining font glyph and commands.
-\def\fenc@begin#1{%
-  \def\fenc@enc{#1}%
-  \expandafter\def\csname cache@enc@#1\endcsname{\def\@enc{#1}}%
-}%
-%
-% OT1.
-\fenc@begin{OT1}
-\fSym\ptexi{16}
-\fSym\j{17}
-\fAcc\`{18}
-\fCmp\`i{\f@restore@enc\`\ptexi}
-\fAcc\'{19}
-\fCmp\'i{\f@restore@enc\'\ptexi}
-\fAcc\v{20}
-\fAcc\u{21}
-\fAcc\={22}
-\fAcc\ringaccent{23}
-\fCmp\ringaccent A{\leavevmode\setbox0\hbox{!}\dimen@\ht0\advance\dimen@-1ex%
-  \rlap{\raise.67\dimen@\hbox{\char'27}}A}
-\fSym\ss{25}
-\fSym\ae{26}
-\fSym\oe{27}
-\fSym\o{28}
-\fSym\AE{29}
-\fSym\OE{30}
-\fSym\O{31}
-\fCmd\l{\char32l}
-\fCmd\L{\leavevmode\setbox0\hbox{L}\hbox to\wd0{\hss\char32L}}
-\fCmd\textquotedblright{`\"}
-\fCmd\textdollar{{\ifdim\fontdimen\@ne\font>\z@\slshape\else\upshape\fi\$}}
-\fCmd\textquoteright{`\'}
-\fCmd\exclamdown{!`}
-\fCmd\questiondown{?`}
-\fSym\textquotedblleft{92}
-\fAcc\^{94}
-\fCmp\^i{\f@restore@enc\^\ptexi}
-\fAcc\dotaccent{95}
-\fCmpSym\dotaccent i{`\i}
-\fCmpSym\dotaccent\i{`\i}
-\fCmd\textquoteleft{`\`}
-\fSym\textendash{123}
-\fSym\textemdash{124}
-\fAcc\H{125}
-\fAcc\~{126}
-\fAcc\"{127}
-\fCmp\"i{\f@restore@enc\"\ptexi}
-\fCmd\pounds{{\ifdim\fontdimen\@ne\font>\z@\itshape\else
-  \setfontshape{ui}\selectfont\fi\$}}
-\fCmd\euro\@euro
-\fCmdd\,{\@cedilla{24}{#1}}
-\fCmdd\udotaccent{\@udotaccent{#1}}
-\fCmdd\ubaraccent{\@ubaraccent{22}{#1}}
-\fCmd\ordf{\leavevmode\raise1ex\hbox{\scalefont{727}\underbar{a}}}
-\fCmd\ordm{\leavevmode\raise1ex\hbox{\scalefont{727}\underbar{o}}}
-\fCmd\ij{\nobreak\hskip\z@skip i\kern-0.02em j\nobreak\hskip\z@skip}
-\fCmd\IJ{\nobreak\hskip\z@skip I\kern-0.02em J\nobreak\hskip\z@skip}
-\fCmd\textonesuperior{$^{\hbox{\scalefont{727}1}}$}
-\fCmd\texttwosuperior{$^{\hbox{\scalefont{727}2}}$}
-\fCmd\textthreesuperior{$^{\hbox{\scalefont{727}3}}$}
-\fCmd\textonequarter{$\hbox{\scalefont{727}1}\over\hbox{\scalefont{727}4}$}
-\fCmd\textonehalf{$\hbox{\scalefont{727}1}\over\hbox{\scalefont{727}2}$}
-\fCmd\textthreequarters{$\hbox{\scalefont{727}3}\over\hbox{\scalefont{727}4}$}
-% End of OT1.
-%
-% OML.
-\fenc@begin{OML}
-\fSym\textless{`\<}
-\fSym\textgreater{`\>}
-%\fSym\star{63}% FIXME this requires redefining \point.
-\fAcc\tieaccent{127}
-% End of OML.
-%
-% OMS.
-\fenc@begin{OMS}
-\fSym\minus0
-\fSym\textperiodcentered1
-\fSym\textmultiply2
-\fSym\texttimes2
-\fSym\textdivide4
-\fSym\textdiv4
-\fSym\textplusminus6
-\fSym\textpm6
-\fSym\bullet{15}
-\fCmd\textdegree{$^{\hbox{\char14}}$}%
-% FIXME @result, @expansion, @print, @equiv?
-\fSym\{{102}
-\fSym\}{103}
-\fSym\textbackslash{110}% FIXME name.
-\fSym\textsection{120}
-\fSym\textdagger{121}
-\fSym\textdaggerdbl{122}
-\fSym\textparagraph{123}
-\fSym\textbigcircle{13}
-\def\oms@textcircled#1{{\ooalign{%
-  \hfil\raise.32ex\hbox{\f@restore@enc\scalefont{600}#1}\hfil\crcr
-       \raise.35ex\hbox{\scalefont{780}\textbigcircle}}}}%
-\fCmdd\textcircled{\oms@textcircled{#1}}
-\fCmd\textregistered{\oms@textcircled{R}}
-\fCmd\copyright{\oms@textcircled{\kern-.05em C}}
-% End of OMS.
-%
-% Common glyphs of the T* encodings.
-\def\t@oenc@common{%
-\fAcc\`0
-\fAcc\'1
-\fAcc\^2
-\fAcc\~3
-\fAcc\"4
-\fAcc\H5
-\fAcc\ringaccent6
-\fAcc\v7
-\fAcc\u8
-\fAcc\=9
-\fAcc\dotaccent{10}
-\fCmpSym\dotaccent i{`\i}
-\fCmpSym\dotaccent\i{`\i}
-\fCmdd\,{\@cedilla{11}{##1}}
-\fCmdd\k{{\ooalign{\relax\f@restore@enc ##1\crcr\hidewidth\char12}}}
-\fCmdd\ogonekcentered{{\ooalign{\relax\f@restore@enc 
##1\crcr\hidewidth\char12\hidewidth}}}
-\fCmp\k o{\f@restore@enc\ogonekcentered o}
-\fCmp\k O{\f@restore@enc\ogonekcentered O}
-\fSym\textquotedblleft{16}
-\fSym\textquotedblright{17}
-\fSym\textendash{21}
-\fSym\textemdash{22}
-\fCmd\textperthousand{\%\char 24 }
-\fCmd\textpertenthousand{\%\char 24\char 24 }
-\fSym\ptexi{25}
-\fSym\j{26}
-\fSym\textvisiblespace{32}
-\fCmd\textquotedbl{`\"}
-\fCmd\textdollar{`\$}
-\fSym\textquoteright{`\'}
-\fSym\textless{`\<}
-\fSym\textgreater{`\>}
-\fSym\textbackslash{92}% FIXME name.
-\fSym\textquoteleft{`\`}
-\fSym\{{123}
-\fSym\}{125}
-\fCmdd\udotaccent{\@udotaccent{##1}}
-\fCmdd\ubaraccent{\@ubaraccent{9}{##1}}
-}%
-% End of common glyphs of the T* encodings.
-%
-% T1.
-\fenc@begin{T1}
-\t@oenc@common % The common glyphs.
-\fSym\textquotesinglbase{13}% FIXME LaTeX calls it `\quotesinglbase'.
-\fSym\textguilsinglleft{14}% FIXME LaTeX calls it `\guilsinglleft'.
-\fSym\textguilsinglright{15}% FIXME LaTeX calls it `\guilsinglright'.
-\fSym\textquotedblbase{18}% FIXME LaTeX calls it `\quotedblbase'.
-\fSym\textguillemotleft{19}% FIXME LaTeX calls it `\guillemotleft'.
-\fSym\textguillemotright{20}% FIXME LaTeX calls it `\guillemotright'.
-\fCmpSym\u A{128}
-\fCmpSym\k A{129}
-\fCmpSym\'C{130}
-\fCmpSym\v C{131}
-\fCmpSym\v D{132}
-\fCmpSym\v E{133}
-\fCmpSym\k E{134}
-\fCmpSym\u G{135}
-\fCmpSym\'L{136}
-\fCmpSym\v L{137}
-\fSym\L{138}
-\fCmpSym\'N{139}
-\fCmpSym\v N{140}
-\fSym\NG{141}
-\fCmpSym\H O{142}
-\fCmpSym\'R{143}
-\fCmpSym\v R{144}
-\fCmpSym\'S{145}
-\fCmpSym\v S{146}
-\fCmpSym\,S{147}
-\fCmpSym\v T{148}
-\fCmpSym\,T{149}
-\fCmpSym\H U{150}
-\fCmpSym\ringaccent U{151}
-\fCmpSym\"Y{152}
-\fCmpSym\'Z{153}
-\fCmpSym\v Z{154}
-\fCmpSym\dotaccent Z{155}
-\fSym\IJ{156}
-\fCmpSym\dotaccent I{157}
-\fSym\dj{158}% FIXME AGL calls it dcroat.
-\fSym\textsection{159}
-\fCmpSym\u a{160}
-\fCmpSym\k a{161}
-\fCmpSym\'c{162}
-\fCmpSym\v c{163}
-\fCmpSym\v d{164}
-\fCmpSym\v e{165}
-\fCmpSym\k e{166}
-\fCmpSym\u g{167}
-\fCmpSym\'l{168}
-\fCmpSym\v l{169}
-\fSym\l{170}
-\fCmpSym\'n{171}
-\fCmpSym\v n{172}
-\fSym\ng{173}
-\fCmpSym\H o{174}
-\fCmpSym\'r{175}
-\fCmpSym\v r{176}
-\fCmpSym\'s{177}
-\fCmpSym\v s{178}
-\fCmpSym\,s{179}
-\fCmpSym\v t{180}
-\fCmpSym\,t{181}
-\fCmpSym\H u{182}
-\fCmpSym\ringaccent u{183}
-\fCmpSym\"y{184}
-\fCmpSym\'z{185}
-\fCmpSym\v z{186}
-\fCmpSym\dotaccent z{187}
-\fSym\ij{188}
-\fSym\exclamdown{189}
-\fSym\questiondown{190}
-\fSym\pounds{191}
-\fCmpSym\`A{192}
-\fCmpSym\'A{193}
-\fCmpSym\^A{194}
-\fCmpSym\~A{195}
-\fCmpSym\"A{196}
-\fCmpSym\ringaccent A{197}
-\fSym\AE{198}
-\fCmpSym\,C{199}
-\fCmpSym\`E{200}
-\fCmpSym\'E{201}
-\fCmpSym\^E{202}
-\fCmpSym\"E{203}
-\fCmpSym\`I{204}
-\fCmpSym\'I{205}
-\fCmpSym\^I{206}
-\fCmpSym\"I{207}
-\fSym\DH{208}% FIXME AGL calls it eth.
-\fSym\DJ{208}% FIXME AGL calls it dcroat.
-\fCmpSym\~N{209}
-\fCmpSym\`O{210}
-\fCmpSym\'O{211}
-\fCmpSym\^O{212}
-\fCmpSym\~O{213}
-\fCmpSym\"O{214}
-\fSym\OE{215}
-\fSym\O{216}
-\fCmpSym\`U{217}
-\fCmpSym\'U{218}
-\fCmpSym\^U{219}
-\fCmpSym\"U{220}
-\fCmpSym\'Y{221}
-\fSym\TH{222}% FIXME AGL calls it thorn.
-\fSym\SS{223}
-\fCmpSym\`a{224}
-\fCmpSym\'a{225}
-\fCmpSym\^a{226}
-\fCmpSym\~a{227}
-\fCmpSym\"a{228}
-\fCmpSym\ringaccent a{229}
-\fSym\ae{230}
-\fCmpSym\,c{231}
-\fCmpSym\`e{232}
-\fCmpSym\'e{233}
-\fCmpSym\^e{234}
-\fCmpSym\"e{235}
-\fCmpSym\`i{236}
-\fCmpSym\'i{237}
-\fCmpSym\^i{238}
-\fCmpSym\"i{239}
-\fSym\dh{240}% FIXME AGL calls it eth.
-\fCmpSym\~n{241}
-\fCmpSym\`o{242}
-\fCmpSym\'o{243}
-\fCmpSym\^o{244}
-\fCmpSym\~o{245}
-\fCmpSym\"o{246}
-\fSym\oe{247}
-\fSym\o{248}
-\fCmpSym\`u{249}
-\fCmpSym\'u{250}
-\fCmpSym\^u{251}
-\fCmpSym\"u{252}
-\fCmpSym\'y{253}
-\fSym\th{254}% FIXME AGL calls it thorn.
-\fSym\ss{255}
-% End of T1.
-%
-% T2A.
-\fenc@begin{T2A}
-\t@oenc@common % The common glyphs.
-\fSym\CYRpalochka{13}
-\fAcc\f{18}
-\fAcc\C{19}
-\fAcc\U{20}
-\fSym\textnumero{157}
-\fSym\textsection{158}
-\fSym\textquotedblbase{189}% FIXME LaTeX calls this \quotedblbase.
-\fSym\textguillemotleft{190}% FIXME LaTeX calls it `\guillemotleft'.
-\fSym\textguillemotright{191}% FIXME LaTeX calls it `\guillemotright'.
-\fSym\CYRA{192}
-\fSym\cyra{224}
-\fSym\CYRB{193}
-\fSym\cyrb{225}
-\fSym\CYRV{194}
-\fSym\cyrv{226}
-\fSym\CYRG{195}
-\fSym\cyrg{227}
-\fSym\CYRD{196}
-\fSym\cyrd{228}
-\fSym\CYRE{197}
-\fSym\cyre{229}
-\fSym\CYRZH{198}
-\fSym\cyrzh{230}
-\fSym\CYRZ{199}
-\fSym\cyrz{231}
-\fSym\CYRI{200}
-\fSym\cyri{232}
-\fSym\CYRISHRT{201}
-\fSym\cyrishrt{233}
-\fSym\CYRK{202}
-\fSym\cyrk{234}
-\fSym\CYRL{203}
-\fSym\cyrl{235}
-\fSym\CYRM{204}
-\fSym\cyrm{236}
-\fSym\CYRN{205}
-\fSym\cyrn{237}
-\fSym\CYRO{206}
-\fSym\cyro{238}
-\fSym\CYRP{207}
-\fSym\cyrp{239}
-\fSym\CYRR{208}
-\fSym\cyrr{240}
-\fSym\CYRS{209}
-\fSym\cyrs{241}
-\fSym\CYRT{210}
-\fSym\cyrt{242}
-\fSym\CYRU{211}
-\fSym\cyru{243}
-\fSym\CYRF{212}
-\fSym\cyrf{244}
-\fSym\CYRH{213}
-\fSym\cyrh{245}
-\fSym\CYRC{214}
-\fSym\cyrc{246}
-\fSym\CYRCH{215}
-\fSym\cyrch{247}
-\fSym\CYRSH{216}
-\fSym\cyrsh{248}
-\fSym\CYRSHCH{217}
-\fSym\cyrshch{249}
-\fSym\CYRHRDSN{218}
-\fSym\cyrhrdsn{250}
-\fSym\CYRERY{219}
-\fSym\cyrery{251}
-\fSym\CYRSFTSN{220}
-\fSym\cyrsftsn{252}
-\fSym\CYREREV{221}
-\fSym\cyrerev{253}
-\fSym\CYRYU{222}
-\fSym\cyryu{254}
-\fSym\CYRYA{223}
-\fSym\cyrya{255}
-\fSym\CYRGUP{128}
-\fSym\cyrgup{160}
-\fSym\CYRGHCRS{129}
-\fSym\cyrghcrs{161}
-\fSym\CYRDJE{130}
-\fSym\cyrdje{162}
-\fSym\CYRTSHE{131}
-\fSym\cyrtshe{163}
-\fSym\CYRSHHA{132}
-\fSym\cyrshha{164}
-\fSym\CYRZHDSC{133}
-\fSym\cyrzhdsc{165}
-\fSym\CYRZDSC{134}
-\fSym\cyrzdsc{166}
-\fSym\CYRLJE{135}
-\fSym\cyrlje{167}
-\fSym\CYRYI{136}
-\fSym\cyryi{168}
-\fSym\CYRKDSC{137}
-\fSym\cyrkdsc{169}
-\fSym\CYRKBEAK{138}
-\fSym\cyrkbeak{170}
-\fSym\CYRKVCRS{139}
-\fSym\cyrkvcrs{171}
-\fSym\CYRAE{140}
-\fSym\cyrae{172}
-\fSym\CYRNDSC{141}
-\fSym\cyrndsc{173}
-\fSym\CYRNG{142}
-\fSym\cyrng{174}
-\fSym\CYRDZE{143}
-\fSym\cyrdze{175}
-\fSym\CYROTLD{144}
-\fSym\cyrotld{176}
-\fSym\CYRSDSC{145}
-\fSym\cyrsdsc{177}
-\fSym\CYRUSHRT{146}
-\fSym\cyrushrt{178}
-\fSym\CYRY{147}
-\fSym\cyry{179}
-\fSym\CYRYHCRS{148}
-\fSym\cyryhcrs{180}
-\fSym\CYRHDSC{149}
-\fSym\cyrhdsc{181}
-\fSym\CYRDZHE{150}
-\fSym\cyrdzhe{182}
-\fSym\CYRCHVCRS{151}
-\fSym\cyrchvcrs{183}
-\fSym\CYRCHRDSC{152}
-\fSym\cyrchrdsc{184}
-\fSym\CYRIE{153}
-\fSym\cyrie{185}
-\fSym\CYRSCHWA{154}
-\fSym\cyrschwa{186}
-\fSym\CYRNJE{155}
-\fSym\cyrnje{187}
-\fSym\CYRYO{156}
-\fSym\cyryo{188}
-\fSym\CYRII{73}
-\fSym\cyrii{105}
-\fSym\CYRJE{74}
-\fSym\cyrje{106}
-\fSym\CYRQ{81}
-\fSym\cyrq{113}
-\fSym\CYRW{87}
-\fSym\cyrw{119}
-\fCmpSym\"\CYRE{156}
-\fCmpSym\"\cyre{188}
-\fCmpSym\U\CYRI{201}
-\fCmpSym\U\cyri{233}
-\fCmpSym\"\CYRII{136}
-\fCmpSym\"\cyrii{168}
-\fCmpSym\,\CYRZ{134}
-\fCmpSym\,\cyrz{166}
-\fCmpSym\k\CYRS{145}
-\fCmpSym\k\cyrs{177}
-\fCmpSym\U\CYRU{146}
-\fCmpSym\U\cyru{178}
-% End of T2A.
-%
-% TS1.
-\fenc@begin{TS1}
-\fAcc\tieaccent{26}
-\fCmd\textdollar{`\$}
-\fSym\textfractionsolidus{47}
-\fSym\minus{61}
-\fSym\textbigcircle{79}
-\fCmdd\textcircled{{\ooalign{\hfil\raise.34ex%
-  \hbox{\f@restore@enc\scalefont{560}#1}\hfil\crcr\hbox{\textbigcircle}}}}
-%\fSym\star{98}% FIXME this requires redefining \point.
-\fSym\textdagger{132}
-\fSym\textdaggerdbl{133}
-\fSym\textperthousand{135}
-\fSym\bullet{136}
-\fSym\texttrademark{151}
-\fSym\textpertenthousand{152}
-\fSym\textnumero{155}
-\fSym\textcent{162}
-\fSym\pounds{163}
-\fSym\textcurrency{164}
-\fSym\textyen{165}
-\fSym\textbrokenbar{166}
-\fSym\textsection{167}
-\fSym\copyright{169}
-\fSym\ordf{170}
-\fSym\textlnot{172}% FIXME What about \lnot?
-\fSym\textregistered{174}
-\fSym\textdegree{176}
-\fSym\textplusminus{177}
-\fSym\textpm{177}
-\fSym\texttwosuperior{178}
-\fSym\textthreesuperior{179}
-\fSym\textmu{181}
-\fSym\textparagraph{182}
-\fSym\textperiodcentered{183}
-\fSym\textonesuperior{185}
-\fSym\ordm{186}
-\fSym\textonequarter{188}
-\fSym\textonehalf{189}
-\fSym\textthreequarters{190}
-\fSym\euro{191}
-\fSym\textmultiply{214}
-\fSym\texttimes{214}
-\fSym\textdivide{246}
-\fSym\textdiv{246}
-% End of TS1.
-%
-% Free the memory.
-\let\t@oenc@common\undefined
-%
-\endinput
diff --git a/contrib/texifont/otest.tex b/contrib/texifont/otest.tex
deleted file mode 100644
index 3ef337a03c..0000000000
--- a/contrib/texifont/otest.tex
+++ /dev/null
@@ -1,157 +0,0 @@
-\catcode`\@=11
-\input ienc
-\input oenc
-\input fsel
-
-
-%\tracingfonts2
-\def\msg#1{\medskip\leftline{#1}\message{^^J^^J** #1}\ignorespaces}
-
-
-
-\msg{Copyright and registered}
-
-x\copyright\ x\registeredsymbol
-
-{\setfontencoding{T1}\setfontfamily{LMRoman}\selectfont
-x\copyright\ x\registeredsymbol}
-
-
-
-% Declare a test font family, with very different fonts (visually) for
-% OT1 and T1.
-\declarefontfamily TestFam 1000 1200
-\fontmapfamily TestFam OT1 CMSans
-\fontmapfamily TestFam T1 URWPalladio
-\fontmapfamily TestFam TS1 LMRoman
-\fontmapfamily TestFam OML CMRoman
-\fontmapfamily TestFam OMS CMRoman
-\fontmapfamily TestFam T2A LHRoman
-
-% Define some encoding-specific glyphs.
-\fenc@begin{OT1}
-\fAcc\a{19}% \'
-\fCmp\a e{\'e}
-\fCmp\a E{\f@restore@enc\'e}
-\fCmp\a g{\'g}
-\fCmp\a G{\f@restore@enc\'g}
-\fCmp\a m{\b{oo}}
-\fCmp\a M{\f@restore@enc\b{oo}}
-\fCmp\a n{\b \copyright}
-\fCmp\a N{\f@restore@enc\b \copyright}
-\fCmd\copyright{WrongEncoding}
-%
-\fenc@begin{OML}
-\fAcc\b{127}% \tieafter
-
-\catcode`\@=12
-
-
-
-\msg{Dollar, pounds, euro (in OT1)}
-
-\textdollar{\itshape\textdollar}
-{\bfseries\textdollar{\itshape\textdollar}}
-
-% There's no bold `ui' font, so we don't get a bold \pounds.
-\pounds{\itshape\pounds}
-{\bfseries\pounds{\itshape\pounds}}
-
-\euro{\itshape\euro}
-{\bfseries\euro{\itshape\euro}}
-
-
-
-\msg{Cache}
-% To see this test working, you must uncomment the messages in
-% \f@search@command and \f@search@composite (but this will break
-% accents, so for other test comment them out again).
-
-% The cache is global and does not depend on font shape.
-{\bf
-  \textregistered\textless\'a\texttimes\'g \tieaccent{oo}
-  \message{^^J*}
-}\quad
-\textregistered\textless\'a\texttimes\'g \tieaccent{oo}
-\message{^^J**}
-
-\documentencoding ISO-8859-1
-% Now the new cache will be filled because \documentencoding changed
-% the current font encoding list.
-{\bf
-  \textregistered\textless\'a\texttimes\'g \tieaccent{oo}
-  \message{^^J*}
-}\quad
-\textregistered\textless\'a\texttimes\'g \tieaccent{oo}
-\message{^^J**}
-
-\setfontencoding{T1}\setfontfamily{TestFam}\selectfont
-% Again, another cache because encodings list of TestFam is different
-% from that of CMRoman.
-{\bf
-  \textregistered\textless\'a\texttimes\'g \tieaccent{oo} \CYRZH
-  \message{^^J*}
-}\quad
-\textregistered\textless\'a\texttimes\'g \tieaccent{oo} \CYRZH
-\message{^^J**}
-
-
-% We are now in ISO-8859-1 input encoding and T1 encoding of TestFam.
-
-
-\msg{Accents}
-\'{}
-\'a
-\'�
-\'\copyright
-\quad
-% |a| in T1 (the current encoding), the accent in OT1 (the only
-% encoding containing |\a|).
-\a a
-\a �
-\a \copyright
-\quad
-% Argument of the accent can contain an expandable command (including
-% an active character) only as a first token.  But even then, it's
-% best if it's the only token in the argument, because |\bf a| and
-% |\bfa| will not be distinguished by the cache.
-\a{\bf c}
-%\a{\bf �}% Doesn't work.
-\def\boldohat{\bf �}%
-\a\boldohat
-%\a{\bf \ae}% Doesn't work.
-\def\boldae{\bf\ae}%
-\a\boldae
-
-
-
-\msg{Composites}
-\'e
-\'g
-\quad
-% Improperly defined composite -- |\a e| does not restore the original
-% encoding before calling another glyph macro (|\'e|), which results
-% in |e| being typeset in the encoding of the |\a e| composite (OT1).
-\a e
-\a g
-% Now the original encoding is properly restored -- therefore |\'e|
-% is called from T1; since T1 contains the composite |\'e|, we get
-% that.  For |\'g| we get an accent since there's no such composite.
-\a E
-\a G
-\quad
-% A more complex example with the actual accent coming from yet
-% another encoding.
-\a m
-\a M
-\quad
-% And now even the accent's argument is from a different encoding.
-\a n
-\a N
-
-\bye
-
-% Local variables:
-% compile-command: "tex --interact=nonstopmode otest.tex"
-% coding: latin-1
-% End:
diff --git a/contrib/texifont/sample.cp1251 b/contrib/texifont/sample.cp1251
deleted file mode 100644
index 66bb18d042..0000000000
--- a/contrib/texifont/sample.cp1251
+++ /dev/null
@@ -1,24 +0,0 @@
-% -*- mode: TeX; coding: cp1251; -*-
-% From http://www.unicode.org/standard/translations/russian.html
-�� ����� ������� ���������� ����� �������� ���� � �������. � ��� ����,
-����� ��� ����� ������� � ������ ����� ��� ������ �������, �������
-������ ������� ������ ���� ���������� � ������������ �����. �� ����,
-��� �������� Unicode, � ���� ����� �������� ����� ��������� ����
-��������� ����������� ��������. �� �� ���� �� ���� ���� �� ���� �����
-�������������, ����� ������� ��� ����������� �������: ��������, ������
-��� ����������� ����, �������� � �������� ������ ������������
-����������, ���������� ���� ������������ ��������� ���������
-���������. �� �������� ����� ���� � ��� ���������� �����, ������,
-�����������, �� ������������ ������ ������� �����������, ���������� �
-���� ��� ������ ������������ �����, ����� ���������� � �����������
-�������.
-
-����� ����, ��� ��� ����� ����������� ����� ���� �� ���� ����������
-���� � ������. � �������, ��� ������ ��������� ����� ������������ ����
-� ��� �� ��� ��� ������������� ���� ������ �������� ��� �����������
-������ ���� ����� � ��� �� �����. � ���� �������� ��� ������
-����������, � �������� �������, ����������� ������������ ���������
-������ ���������, ������� ����� ������������, �� ���� � ����� ���
-�������� ������ �� ������ ��������� ��� ��� �� �������������� � ������
-��������� ������ ��������� ����, ��� ��� ������ �������� ������������.
-\endinput
diff --git a/contrib/texifont/sample.koi8r b/contrib/texifont/sample.koi8r
deleted file mode 100644
index d8db28bfb9..0000000000
--- a/contrib/texifont/sample.koi8r
+++ /dev/null
@@ -1,24 +0,0 @@
-% -*- mode: TeX; coding: koi8-r; -*-
-% From http://www.unicode.org/standard/translations/russian.html
-�� ����� ������� ���������� ����� �������� ���� � �������. � ��� ����,
-����� ��� ����� ������� � ������ ����� ��� ������ �������, �������
-������ ������� ������ ���� ���������� � ������������ �����. �� ����,
-��� �������� Unicode, � ���� ����� �������� ����� ��������� ����
-��������� ����������� ��������. �� �� ���� �� ���� ���� �� ���� �����
-�������������, ����� ������� ��� ����������� �������: ��������, ������
-��� ����������� ����, �������� � �������� ������ ������������
-����������, ���������� ���� ������������ ��������� ���������
-���������. �� �������� �ޣ�� ���� � ��� ���������� �����, ������,
-�����������, �� ������������ ������ ������� �����������, ���������� �
-���� ��� ������ ������������ �����, ����� ���������� � �����������
-�������.
-
-����� ����, ��� ��� ����� ����������� ����� ���� �� ���� ����������
-���� � ������. � �������, ��� ������ ��������� ����� ������������ ����
-� ��� �� ��� ��� ������������� ���� ������ �������� ��� �����������
-������ ���� ����� � ��� �� �����. � ���� �������� ��� ������
-����������, � �������� �������, ����������� ������������ ���������
-������ ���������, ������� ����� ������������, �� ���� � ����� ���
-�������� ������ �� ������ ��������� ��� ��� �� �������������� � ������
-��������� ������ ��������� ����, ��� ��� ������ �������� ������ģ�����.
-\endinput
diff --git a/contrib/texifont/sample.latin1 b/contrib/texifont/sample.latin1
deleted file mode 100644
index 79f39dd59b..0000000000
--- a/contrib/texifont/sample.latin1
+++ /dev/null
@@ -1,18 +0,0 @@
-% -*- mode: TeX; coding: latin-1; -*-
-% From http://www.unicode.org/standard/translations/icelandic.html
-T�lvur geta � e�li s�nu a�eins unni� me� t�lur. ��r geyma b�kstafi og
-�nnur skrift�kn me� �v� a� �thluta �eim t�lu. ��ur en Unicode kom til
-voru hundru� mismunandi t�lkunarkerfa sem �thlutu�u �essum
-t�lum. Ekkert eitt t�lkunarkerfi gat innihaldi� n�gilegan fj�lda
-skrift�kna; t.d. �arfnast Evr�pusambandi� nokkurra mismunandi kerfa
-til a� spanna �ll tungum�l �ess. Jafnvel fyrir eitt tungum�l, eins og
-ensku, var eitt t�lkunarkerfi ekki n�g fyrir alla b�kstafi,
-greinarmerki og algengustu einingat�kn.
-
-T�lkunarkerfin hafa einnig veri� � andst��u hvert vi� anna�, �.e. tv�
-kerfi geta nota� s�mu t�lu fyrir tv� �l�k skrift�kn e�a nota� tv�r
-mismunandi t�lur fyrir sama t�kni�. S�rhver t�lva �arf (s�rstaklega
-mi�larar) a� sty�ja margs konar t�lkanir � st�fum; engu a� s��ur er
-alltaf h�tta � stafabrenglun �egar g�gn fara � milli t�lva og � milli
-mismunandi t�lkunarkerfa.
-\endinput
diff --git a/contrib/texifont/sample.latin2 b/contrib/texifont/sample.latin2
deleted file mode 100644
index eb29f8ac0c..0000000000
--- a/contrib/texifont/sample.latin2
+++ /dev/null
@@ -1,18 +0,0 @@
-% -*- mode: TeX; coding: latin-2; -*-
-% From http://www.unicode.org/standard/translations/czech.html
-Po��ta�e, ze sv� podstaty, pracuj� pouze s ��sly. P�smena a dal��
-znaky ukl�daj� tak, �e ka�d�mu z nich p�i�ad� ��slo. P�ed vznikem
-Unicode existovaly stovky rozd�ln�ch k�dovac�ch syst�m� pro
-p�i�azov�n� t�chto ��sel. ��dn� z t�chto k�dov�n� nemohlo obsahovat
-dostatek znak�: nap��klad Evropsk� unie sama pot�ebuje n�kolik r�zn�ch
-k�dov�n�, aby pokryla v�echny sv� jazyky. Dokonce i pro jeden jedin�
-jazyk, jako je angli�tina, nevyhovovalo ��dn� k�dov�n� pro v�echny
-p�smena, interpunkci a b�n� pou��van� technick� symboly.
-
-Tyto k�dovac� syst�my tak� byly v konfliktu jeden s druh�m. To
-znamen�, �e dv� k�dov�n� mohou pou��vat stejn� ��slo pro dva r�zn�
-znaky, nebo pou��vat r�zn� ��sla pro stejn� znak. Jak�koli po��ta�
-(zvl�t� servery) mus� podporovat mnoho r�zn�ch k�dov�n�; p�esto,
-kdykoli jsou data p�ed�v�na mezi r�zn�mi k�dov�n�mi nebo platformami,
-hroz�, �e tato data budou po�kozena.
-\endinput
diff --git a/contrib/texifont/sample.latin9 b/contrib/texifont/sample.latin9
deleted file mode 100644
index 47f8193b9e..0000000000
--- a/contrib/texifont/sample.latin9
+++ /dev/null
@@ -1,19 +0,0 @@
-% -*- mode: TeX; coding: latin-9; -*-
-% From http://www.unicode.org/standard/translations/french.html
-Fondamentalement, les ordinateurs ne comprennent que les nombres. Ils
-codent les lettres et autres caract�res sous formes de nombres. Avant
-l'invention d'Unicode, des centaines de syst�mes de codage de
-caract�res ont �t� cr��s. Pas un seul d'entre eux n'�tait satisfaisant:
-par exemple, l'Union Europ�enne a besoin de plusieurs syst�mes de
-codage pour couvrir toutes ses langues d'usage. M�me pour une seule
-langue comme le fran�ais, aucun syst�me de codage ne couvrait toutes
-les lettres, les signes de ponctuation et les symboles techniques en
-usage courant.
-
-Ces syst�mes de codage sont souvent incompatibles entre eux. Ainsi,
-deux syst�mes peuvent utiliser le m�me nombre pour deux caract�res
-diff�rents ou utiliser diff�rents nombres pour le m�me caract�re. Les
-ordinateurs, et plus particuli�rement les serveurs, doivent supporter
-plusieurs syst�mes de codage de caract�res, ce qui cr�e un risque de
-corruption des donn�es � chaque transition.
-\endinput
diff --git a/contrib/texifont/tests/Makefile b/contrib/texifont/tests/Makefile
deleted file mode 100644
index 7355fa4e1d..0000000000
--- a/contrib/texifont/tests/Makefile
+++ /dev/null
@@ -1,29 +0,0 @@
-TEX=tex
-DIFF=diff
-
-define run_test
-$(TEX) $@.tex 2>&1 \
-  | $(DIFF) -u -I '^This is TeX, Version 3\..*' $@.out -
-endef
-
-$(foreach target,newfont subst,$def_test)
-
-define def_test
-all: $(target)
-$(target)::
-       $(run_test)
-endef
-
-#.PHONY: all
-#
-#$(call def_test,newfont)
-#
-#all: newfont
-#
-#all: subst
-#
-#newfont::
-#      $(run_test)
-#
-#subst::
-#      $(run_test)
diff --git a/contrib/texifont/tests/newfont.out 
b/contrib/texifont/tests/newfont.out
deleted file mode 100644
index 57636a2698..0000000000
--- a/contrib/texifont/tests/newfont.out
+++ /dev/null
@@ -1,76 +0,0 @@
-This is TeX, Version 3.141592 (Web2C 7.5.6)
-(./newfont.tex (../fattr.tex (/usr/share/texmf-texlive/tex/eplain/eplain.tex))
-
-**** Simple font defs. 
-17: Started font def with "\do 8.0pt 1000 {a8}".
-
-18: Updated font def to "\do 8.0pt 1000 {a8}\do 10.0pt 1000 {a10}".
-
-19: Updated font def to "\do 8.0pt 1000 {a8}\do 10.0pt 1000 {a10}\do 12.0pt 100
-0 {a12}".
-
-21: Warning: Replacing font "a12" (12.0pt@1000) with font "b12" (12.0pt@1000).
-
-21: Updated font def to "\do 8.0pt 1000 {a8}\do 10.0pt 1000 {a10}\do 12.0pt 100
-0 {b12}".
-
-22: Warning: Replacing font "a10" (10.0pt@1000) with font "b10" (10.0pt@1000).
-
-22: Updated font def to "\do 8.0pt 1000 {a8}\do 10.0pt 1000 {b10}\do 12.0pt 100
-0 {b12}".
-
-23: Warning: Replacing font "a8" (8.0pt@1000) with font "b8" (8.0pt@1000).
-
-23: Updated font def to "\do 8.0pt 1000 {b8}\do 10.0pt 1000 {b10}\do 12.0pt 100
-0 {b12}". 
-**** Simple font defs with mag factor variations.
-
-27: Started font def with "\do 12.0pt 1000 {c12}".
-
-28: Updated font def to "\do 8.0pt 1000 {c8}\do 12.0pt 1000 {c12}".
-
-29: Updated font def to "\do 8.0pt 1000 {c8}\do 10.0pt 1000 {c10}\do 12.0pt 100
-0 {c12}".
-
-31: Updated font def to "\do 8.0pt 1000 {c8}\do 10.0pt 1000 {c10}\do 10.0pt 120
-0 {c10}\do 12.0pt 1000 {c12}".
-
-32: Updated font def to "\do 8.0pt 1000 {c8}\do 10.0pt 1000 {c10}\do 10.0pt 120
-0 {c10}\do 12.0pt 1000 {c12}\do 12.0pt 1100 {c12}".
-
-33: Updated font def to "\do 8.0pt 1000 {c8}\do 10.0pt 1000 {c10}\do 8.0pt 1300
- {c8}\do 10.0pt 1200 {c10}\do 12.0pt 1000 {c12}\do 12.0pt 1100 {c12}".
-
-**** Same design size and mag factor, different feature sets.
-
-37: Started font def with "\do 10.0pt 1000 {d10}".
-
-38: Started font def with "\do 10.0pt 1000 {d10}".
-
-39: Started font def with "\do 10.0pt 1000 {d10}".
-
-40: Started font def with "\do 10.0pt 1000 {d10}".
-
-41: Started font def with "\do 10.0pt 1000 {d10}".
-
-42: Started font def with "\do 10.0pt 1000 {d10}".
-
-**** Same design size, different mag factors.
-
-46: Started font def with "\do 10.0pt 1000 {e1.0}".
-
-47: Updated font def to "\do 10.0pt 1000 {e1.0}\do 10.0pt 1400 {e1.4}".
-
-48: Updated font def to "\do 10.0pt 800 {e0.8}\do 10.0pt 1000 {e1.0}\do 10.0pt 
-1400 {e1.4}". 
-50: Started font def with "\do 10.0pt 1000 {f1.0}".
-
-51: Updated font def to "\do 10.0pt 800 {f0.8}\do 10.0pt 1000 {f1.0}".
-
-52: Updated font def to "\do 10.0pt 800 {f0.8}\do 10.0pt 1000 {f1.0}\do 10.0pt 
-1400 {f1.4}".
-
-53: Updated font def to "\do 10.0pt 800 {f0.8}\do 10.0pt 1000 {f1.0}\do 10.0pt 
-1200 {f1.2}\do 10.0pt 1400 {f1.4}". )
-No pages of output.
-Transcript written on newfont.log.
diff --git a/contrib/texifont/tests/newfont.tex 
b/contrib/texifont/tests/newfont.tex
deleted file mode 100644
index 2934eef85d..0000000000
--- a/contrib/texifont/tests/newfont.tex
+++ /dev/null
@@ -1,55 +0,0 @@
-\input ../fattr
-
-\ftracelevel=3
-
-\newfontattr family     Fam1
-\newfontattr family     Fam2
-\newfontattr family     Fam3
-\newfontattr encoding   Enc1
-\newfontattr encoding   Enc2
-\newfontattr encoding   Enc3
-\newfontattr encoding   Enc4
-\newfontattr slant      Slant1
-\newfontattr slant      Slant2
-
-\message{^^J**** Simple font defs.}
-
-\newfont 8  1000 a8  Fam1
-\newfont 10 1000 a10 Fam1
-\newfont 12 1000 a12 Fam1
-
-\newfont 12 1000 b12 Fam1
-\newfont 10 1000 b10 Fam1
-\newfont 8  1000 b8  Fam1
-
-\message{^^J**** Simple font defs with mag factor variations.}
-
-\newfont 12 1000 c12 Fam1,Enc1
-\newfont 8  1000 c8  Enc1,Fam1
-\newfont 10 1000 c10 Fam1,Enc1
-
-\newfont 10 1200 c10 Fam1,Enc1
-\newfont 12 1100 c12 Fam1,Enc1
-\newfont 8  1300 c8  Fam1,Enc1
-
-\message{^^J**** Same design size and mag factor, different feature sets.}
-
-\newfont 10 1000 d10 Fam2
-\newfont 10 1000 d10 Fam2,Enc2
-\newfont 10 1000 d10 Fam1,Enc2
-\newfont 10 1000 d10 Fam1,Enc3
-\newfont 10 1000 d10 Fam1,Enc2,Slant1
-\newfont 10 1000 d10 Fam1,Slant2,Enc2
-
-\message{^^J**** Same design size, different mag factors.}
-
-\newfont 10 1000 e1.0 Fam3
-\newfont 10 1400 e1.4 Fam3
-\newfont 10 800  e0.8 Fam3
-
-\newfont 10 1000 f1.0 Fam3,Enc4
-\newfont 10 800  f0.8 Fam3,Enc4
-\newfont 10 1400 f1.4 Fam3,Enc4
-\newfont 10 1200 f1.2 Fam3,Enc4
-
-\bye
diff --git a/contrib/texifont/tests/subst.tex b/contrib/texifont/tests/subst.tex
deleted file mode 100644
index fb9ee38a0b..0000000000
--- a/contrib/texifont/tests/subst.tex
+++ /dev/null
@@ -1,21 +0,0 @@
-\input ../fattr
-
-\ftracelevel=3
-
-\newfontattr family     Fam1
-\newfontattr family     Fam2
-\newfontattr family     Fam3
-\newfontattr encoding   Enc1
-\newfontattr encoding   Enc2
-\newfontattr encoding   Enc3
-\newfontattr encoding   Enc4
-\newfontattr slant      Slant1
-\newfontattr slant      Slant2
-\newfontattr slant      Slant3
-\newfontattr slant      Slant4
-
-\fontsubstpre   = Fam1
-                - slant
-                + Enc1
-
-\bye
diff --git a/contrib/texifont/texifont.pdf b/contrib/texifont/texifont.pdf
deleted file mode 100644
index 1ef7d7f186..0000000000
Binary files a/contrib/texifont/texifont.pdf and /dev/null differ
diff --git a/contrib/texifont/texifont.txi b/contrib/texifont/texifont.txi
deleted file mode 100644
index 42b820cc32..0000000000
--- a/contrib/texifont/texifont.txi
+++ /dev/null
@@ -1,680 +0,0 @@
-\input texinfo.tex   @c -*-texinfo-*-
-@setfilename texifont
-@settitle GNU Texinfo font subsystem
-
-@c Originally written by Oleg Katsidatze and Karl Berry, 2006.
-@c Public domain.
-
-@syncodeindex fn cp
-
-@titlepage
-@title GNU Texinfo font subsystem
-@end titlepage
-
-
-@contents
-
-
-@ifnottex
-@node Top
-@top GNU Texinfo font subsystem
-
-Unfinished chapter on GNU Texinfo font subsystem, also unfinished.
-@end ifnottex
-
-@menu
-* Font management::             Defining font families.
-* Index::               
-@end menu
-
-
-@node Font management
-@chapter Font management
-
-Texinfo's font management macros allow customization of fonts used in
-the printed document.
-
-
-@menu
-* Introduction::                
-* Font definition macros::      
-* Font selection macros::       
-* Font substitution macros::    
-* Font collections::            
-* Input encodings::             
-* Font encodings::              
-@end menu
-
-@node Introduction
-@section Introduction
-
-In this chapter we introduce the basic concepts of font management in
-Texinfo.
-
-@menu
-* Font features and attributes::  
-* Current font attribute set::  
-* Font substitution::           
-@end menu
-
-@node Font features and attributes
-@subsection Font features and attributes
-
-@cindex font feature
-@cindex feature, of font
-@cindex font attribute
-@cindex attribute, of font
-Each font can be characterized by a number of @dfn{features}.  For
-example, a font can be characterized by weight (boldness of glyph
-strokes), slant (inclination of glyph strokes), etc.
-
-Font @dfn{attribute} is a particular representation of a feature.  For
-example, the ``weight'' feature can be represented by attributes
-``light'', ``medium'', ``semibold'', ``bold'', etc.; the ``slant''
-feature by attributes ``upright'', ``slanted'', ``italic'', etc.
-
-Most font features describe physical appearance of a font.  However,
-two special features describe organizational aspects of fonts---font
-family and font encoding.
-
-@cindex font family
-@cindex family, of font
-A collection of related fonts is grouped into a @dfn{font family}.
-All fonts in a font family generally have the same or similar design,
-representing variations on that particular design.  For example, a
-font family may include an upright font, an italic font and a bold
-upright font.  Examples of font families:  Computer Modern Roman,
-Times, Helvetica.
-
-@cindex font encoding
-@cindex encoding, of font
-@dfn{Font encoding} specifies the set and the order of characters
-represented within a font.  Examples of font encodings: OT1 (Latin
-upper- and lower-case characters, arabic numerals and some additional
-glyphs), T1 (characters of Western-European scripts), T2A (characters
-of Cyrillic scripts).  For a guide to @TeX{} font encodings, see
-@url{http://@/www.ctan.org/@/tex-archive/@/help/@/Catalogue/@/entries/@/encguide.html}.
-
-
-@node Current font attribute set
-@subsection Current font attribute set
-
-At font definition time, each font is associated with a set of
-attributes.  Naturally, only one attribute can be specified per
-feature, but not every feature has to be represented.
-
-A font then can be selected by specifying a list of attributes.  At
-all times, Texinfo maintains a @dfn{current font attribute set}.
-Texinfo provides macros to initialize this set, as well as to modify
-it by adding attributes or removing attributes corresponding to
-certain features.  If a font definition is found which matches every
-attribute in the resulting attribute set, the corresponding font is
-selected.
-
-For example, let's assume the current font attribute set consists of
-the following attributes:
-
-@table @samp
-@item CMRoman
-``family'' feature
-@item OT1 
-``encoding'' feature
-@item bold
-``weight'' feature
-@end table
-
-@noindent
-If now we instruct Texinfo to add attributes @samp{light} and
-@samp{italic} and to remove the @samp{encoding} feature, the font
-attribute set becomes:
-
-@table @samp
-@item CMRoman
-@item light
-replaces the @samp{bold} attribute of the ``weight'' feature
-@item italic
-``slant'' feature
-@end table
-
-@noindent
-Of course, in order for this font change specification to be
-successful, a font must be associated previously with such font
-attribute set.
-
-
-@node Font substitution
-@subsection Font substitution
-
-Sometimes it can be convenient to replace some attributes when a font
-with a certain set of attributes is requested.  For example, a font
-family may contain slanted but not italic fonts.  If we only define
-slanted fonts, all macros explicitly requesting italic font will fail
-when such font family is used.  But we may decide that it is
-acceptable to use slanted fonts wherever italic fonts are being used.
-To achieve this, one solution is to create fake italic font
-definitions by duplicating definitions of slanted fonts and replacing
-the @samp{slanted} attribute with @samp{italic}.  An alternative,
-simpler solution is to define font substitution, indicating that all
-requests for a font with the @samp{italic} attribute should be
-satisfied with a font with the @samp{slanted} attribute and all other
-font attributes unchanged.
-
-It is possible to specify more complex font substitutions which
-replace/add several attributes and/or remove attributes corresponding
-to certain features.  All defined substitutions are applied in turn,
-starting with the current font attribute set, with the later
-substitutions performed on the result of the previous, so that it's
-possible to define chains of substitutions.  Note that font
-substitution works with attribute sets; only the final attribute set
-is used to look up the corresponding font, so intermediate sets do not
-have to be associated with any font.
-
-Unlike font selection, font substitution is ``permissive'', that is,
-in order for a font substitution to be applied, its attribute set
-doesn't need to match the current font attribute set exactly, it can
-just be a subset of the font attribute set.  For example, if a font
-substitution is defined to apply to the set of two attributes
-@samp{CMRoman} and @samp{OT1}, the substitution will also apply to any
-of the following attribute sets:
-
-@itemize
-@item @samp{CMRoman}, @samp{OT1}, @samp{upright};
-@item @samp{CMRoman}, @samp{OT1}, @samp{bold};
-@item @samp{CMRoman}, @samp{OT1}, @samp{upright}, @samp{bold};
-@end itemize
-
-@noindent
-but to none of the following:
-
-@itemize
-@item @samp{CMRoman};
-@item @samp{OT1};
-@item @samp{CMRoman}, @samp{upright};
-@item @samp{OT1}, @samp{upright}.
-@end itemize
-
-
-``Restrictive'' font substitutions, where attribute sets have to mach
-exactly, are (currently?) not supported.
-
-
-@node Other
-@subsection Other
-
-@dfn{Scaling factor} is an integer equal to magnification ratio
-times@tie{}1000.
-
-
-@node Font definition macros
-@section Font definition macros
-
-@findex newfontarrs
-Font attributes can be defined with the command
-
-@example
-@@newfontatrrs @var{feature} @var{attribute-list}
-@end example
-
-@noindent
-where @var{feature} is the font feature to associate the attributes
-with, @var{attribute-list} is a comma-separated list of one or more
-attributes to define.  It is not an error to define an already defined
-attribute, as long as that attribute is associated with the same font
-feature as before.
-
-For example, the following command
-
-@example
-@@newfontattrs encoding OT1,OMS,OML,OMX
-@end example
-
-@noindent
-defines the classic @TeX{} font encodings.  After the above
-definition, the following command will be valid:
-
-@example
-@@newfontattrs encoding OT1,T1
-@end example
-
-@noindent
-but the following command will generate an error (feature names are
-case-sensitive):
-
-@example
-@@newfontattrs Encoding OT1
-@end example
-
-@findex newfont
-A font can be defined with the command
-
-@example
-@@newfont @var{scale} @var{font} @var{size} 
@var{lskip}[,@var{reduced},@var{small},@var{smaller}] [@var{attr-list}]
-@end example
-
-@noindent
-Here optional parts are in square brackets.  The arguments are as
-follows:
-
-@table @var
-@item scale
-Font's relative scaling factor (see below).
-
-@item font
-Font file name (e.g., @file{cmr10}).
-
-@item size
-Design size of the font (see below) specified as a @TeX{} dimension or
-a number (in which case @TeX{} points are assumed).
-
-@item lskip
-Recommended line skip scaling factor which will be multiplied by the
-selected font size to get the actual line skip.
-
-@item reduced
-Scaling factor for a reduced-size font (``one size smaller''), used
-for acronyms.  Default is 909 (10/11).
-
-@item small
-Scaling factor for a small-size font (``two sizes smaller''), used
-for indices, footnotes, small examples, etc.  Default is 818 (9/11).
-
-@item smaller
-Scaling factor for an even-smaller-size font (``three sizes
-smaller''), used for superscripts, subscripts, the @LaTeX{} logo, etc.
-Default is 727 (8/11).
-
-@item attr-list
-List of attributes to associate with the font.  If omitted, attributes
-from the last @code{@@newfont} command are applied.
-@end table
-
-@i{This scheme doesn't provide for situation when we want different
-@var{reduced}, @var{small} and @var{smaller} settings for the same
-font for different size ranges.}
-
-
-@cindex scaling factor, of a font
-@cindex font scaling factor
-Different font families have different notions of font size.  For
-example, Bera fonts at 10@dmn{pt} look much bigger than Computer
-Modern fonts at 10@dmn{pt}.  When mixing fonts and font families,
-their sizes must be scaled to achieve visual uniformity.  This is what
-the relative scaling factor (the first argument of @code{@@newfont})
-is for---it specifies the scaling factor which needs to be applied to
-a font to match a corresponding font from the Computer Modern
-collection of fonts (which are the default fonts of Texinfo).
-
-@i{Maybe it makes better sense to specify @var{scale} for the entire
-family and not for individual fonts.  Not sure if fonts from the same
-family would ever need different scaling factors.  One (hypothetical?)
-case I can think of is when a font family provides fonts at several
-design sizes, and those design sizes scale differently to the
-corresponding Computer Modern design sizes, so each design size has to
-be tweaked individually.}
-
-@cindex design size, of a font
-@cindex size, design, of a font
-@cindex font design size
-Each font has a @dfn{design size}, which is the size in which the
-designer intended the font to be displayed (the @var{size} argument of
-@code{@@newfont}).  To produce a font in a size other than the design
-size, Texinfo can scale a font.  Many font families provide fonts in
-only one design size, usually 10@dmn{pt}.  When fonts are provided in
-several design sizes, it is best to define all the provided design
-sizes.
-
-For example, Computer Modern Roman font family provides five design
-sizes (7@dmn{pt}, 8@dmn{pt}, 9@dmn{pt}, 10@dmn{pt} and 12@dmn{pt}) for
-the italic medium-weight face, but only one design size (10@dmn{pt})
-for the upright caps and small caps face.  The font encoding for both
-faces is @acronym{OT1}.  Therefore, part of the definition of the
-CMRoman font family dealing with italic and caps and small caps faces
-might look like the following:
-
-@example
-@@newfontattrs family   CMRoman
-@@newfontattrs encoding OT1
-@@newfontattrs slant    upright,italic
-@@newfontattrs caps     normalcaps,capssmallcaps
-
-@@newfont 1000 cmti7   7  1350 CMRoman,OT1,italic,normalcaps
-@@newfont 1000 cmti8   8  1300
-@@newfont 1000 cmti9   9  1250,1
-@@newfont 1000 cmti10  10 1200
-@@newfont 1000 cmti12  12 1150
-@@newfont 1000 cmcsc10 10 1200 CMRoman,OT1,upright,capssmallcaps
-@end example
-
-
-@node Font selection macros
-@section Font selection macros
-
-@findex setfont
-@cindex setting current attributes list
-@cindex current attributes list, setting
-@cindex setting a font
-@cindex selecting a font
-@cindex font, setting
-@cindex font, selecting
-The @code{@@setfont} command sets the current attribute list and then
-selects the font associated with that list:
-
-@example
-@@setfont@{@var{attribute-list}@}
-@end example
-
-@findex modfont
-If you don't want to specify all attributes but just want to add
-certain attributes to the current attribute list and/or remove
-attributes for certain features, use the command
-
-@example
-@@modfont@{@var{feature-list}@}@{@var{attribute-list}@}
-@end example
-
-@noindent
-Any attributes corresponding to features from @var{feature-list} will
-be removed from the current attribute list, attributes from
-@var{attribute-list} will be added to it, and the resulting attribute
-list will be used by Texinfo to select a font.
-
-
-@menu
-* Relative font scaling::       
-@end menu
-
-@node Relative font scaling
-@subsection Relative font scaling
-
-@cindex scaling of fonts
-@findex fontbasescale
-By default, all fonts are scaled to match the Computer Modern fonts,
-and the Computer Modern fonts come out at their ``natural'' sizes.
-This happens when base font scaling factor is set to 1000, the
-relative scaling factor of the Computer Modern fonts.  You can set a
-different base scaling factor using the command
-
-@example
-@@fontbasescale @var{scale}
-@end example
-
-@noindent
-If @var{scale} is omitted, the current font's relative scaling factor
-will be used.
-
-
-@node Font substitution macros
-@section Font substitution macros
-
-Each font substitution consists of three sets:  filter (set of
-attributes), removed features (set of features) and added attributes
-(set of attributes).  When selecting a font, Texinfo applies the list
-of defined substitutions to the current attribute list, and uses the
-resulting attribute list to selects a font.
-
- examines each substitution in turn, applying
-those whose filter matches the current attribute list (i.e., those
-whose filter contains each attribute from the list) to the result of
-the previous substitutions on the current attribute list.  The
-resulting attribute list as used to select a font.
-
-To add a substitution to the head of the substitution list, use the
-command
-
-@example
-@@fontsubstpre =@var{filter} -@var{removed-features} +@var{added-attributes}
-@end example
-
-The following command adds a substitution to the tail of the
-substitution list:
-@example
-@@fontsubstpost =@var{filter} -@var{removed-features} +@var{added-attributes}
-@end example
-
-
-@node Font collections
-@section Font collections
-
-@code{@@declarefontcollection}
-
-@code{@@fontcollection}
-
-
-@menu
-* Font styles::                 
-* Font style selection::        
-* Font styles for document elements::  
-@end menu
-
-@node Font styles
-@subsection Font styles
-
-@cindex font styles
-@cindex styles, fonts
-Font styles are a way to apply one of the defined font families to the
-text.  It is possible to specify font styles for the various elements
-of a document individually, such as body text, page headings and
-footings, table of contents, indexes, and chapter, section, subsection
-and sub-subsection titles.
-
-@menu
-* Font style selection::        
-* Font styles for document elements::  
-@end menu
-
-
-@node Font style selection
-@subsection Font style selection
-
-Below are the styles defined by Texinfo, with the corresponding
-default meanings and commands which select them.  All the style
-commands take a single argument in braces and typeset it according to
-font attributes specified for the style.
-
-@table @samp
-@findex serif
-@item serif
-serifed fonts (CMRoman), applied with @code{@@serif}.
-
-@findex sansserif
-@item sans
-sans serif fonts (CMSans), applied with @code{@@sansserif}.
-
-@findex t
-@item mono
-monospace fonts (CMMono), applied with @code{@@t}.
-
-@findex r
-@item default
-fonts used in absence of any style switches, and applied with
-@code{@@r} (CMRoman).
-
-@item math
-fonts used in math mode (CMMath), no explicit switches.
-@end table
-
-For example, the command
-
-@example
-@@sansserif@{text@}
-@end example
-
-@noindent
-typesets @samp{text} using the @samp{sans} font style (which results
-in a sans serif font by default).
-
-
-@node Font styles for document elements
-@subsection Font styles for document elements
-
-It is possible to customize each of the above styles separately for
-each element of the document.  Texinfo associates styles with the
-following elements:
-
-@table @samp
-@item *
-Default, used for body text.  Attributes from this `element' are also
-inherited by other elements, unless those elements redefine them.
-
-@item heading
-@itemx footing
-Page headings and footings.
-
-@item toc
-The table of contents.
-
-@item shorttoc
-The short table of contents.
-
-@item shorttocchapter
-Chapters in the short table of contents.
-
-@item index
-Indexes.
-
-@item indexinitials
-Initials in the index.
-
-@item title
-Document title.
-
-@item chapter
-@itemx section
-@itemx subsection
-@itemx subsubsection
-Chapter, section, subsection and sub-subsection titles.
-@end table
-
-@findex fontfamily
-To associate a font family with a particular style for a particular
-document element, use the following command:
-
-@example
-@@fontfamily @var{element} @var{style} @var{family}
-@end example
-
-@findex fontaxes
-To specify which font axes should be used, use the command
-
-@example
-@@fontaxes @var{element} @var{style} @var{axes}
-@end example
-
-@noindent
-where @var{axes} is a comma-separated list of axes, or a single
-@samp{.} if none.
-
-@findex fontsize
-@findex fontshape
-@findex fontweight
-The following commands will set font size, shape and weight to be used
-for a document element:
-
-@example
-@@fontsize   @var{element} @var{point-size}
-@@fontshape  @var{element} @var{shape}
-@@fontweight @var{element} @var{weight}
-@end example
-
-@findex unsetfonts
-Before you start defining font attributes for the styles, it might be
-a good idea to @code{@@unsetfonts}, which unsets all font attribute
-definitions except the defaults, which are set as follows:
-
-@example
-@@fontfamily * default CMRoman
-@@fontfamily * serif   CMRoman
-@@fontfamily * sans    CMSans
-@@fontfamily * mono    CMMono
-@@fontfamily * math    CMMath
-
-@@fontaxes   * default .
-@@fontaxes   * serif   .
-@@fontaxes   * sans    .
-@@fontaxes   * mono    .
-@@fontaxes   * math    .
-
-@@fontsize   * 11
-@@fontweight * m
-@@fontshape  * n
-@end example
-
-@findex setfonts
-@findex resetfonts
-After you have finished specifying font attributes for the styles, you
-should activate them with @code{@@setfonts}.  To revert to the default
-styles, call @code{@@resetfonts}.
-
-Below is a complete example of a document style specification.
-
-@example
-@@c Use Computer Modern fonts with no axes (the defaults).
-@@unsetfonts
-
-@@c The body text will be 12pt medium-weight upright font.
-@@fontsize * 12
-
-@@c Page headings are in a smaller italic font; footings are in
-@@c smaller upright.
-@@fontsize  heading 10
-@@fontshape heading it
-@@fontsize  footing 10
-
-@@c TOC is in the default face and smaller; indexes are in the default
-@@c face and even smaller.
-@@fontsize toc   11
-@@fontsize index 10
-
-@@c Font attributes for the title.  We are not going to use @@serif,
-@@c @@sans, etc., so we don't care about non-default styles.
-@@fontfamily title * SomeFunkyFontFamily
-@@fontaxes   title * of,pf
-@@fontsize   title 20
-@@fontweight title bx
-@@fontshape  title it
-
-@@c Use sans fonts for chapters, sections and subsections.  We exchange
-@@c the meanings of @@sans and @@serif.
-
-@@fontfamily chapter *     CMSans
-@@fontfamily chapter serif CMSans
-@@fontfamily chapter sans  CMRoman
-@@fontfamily chapter math  CMBrightMath
-@@fontsize   chapter 17
-
-@@fontfamily section *     CMSans
-@@fontfamily section serif CMSans
-@@fontfamily section sans  CMRoman
-@@fontfamily section math  CMBrightMath
-@@fontsize   section 14
-
-@@fontfamily subsection *     CMSans
-@@fontfamily subsection serif CMSans
-@@fontfamily subsection sans  CMRoman
-@@fontfamily subsection math  CMBrightMath
-@@fontsize   subsection 12
-
-@@c Don't forget to activate the styles.
-@@setfonts
-@end example
-
-
-@node Input encodings
-@section Input encodings
-
-
-@node Font encodings
-@section Font encodings
-
-
-@node Index
-@unnumbered Index
-
-@printindex cp
-
-
-@bye
-
-@c Local variables:
-@c compile-command:  "texi2pdf texifont.txi && xpdf -remote key -raise -reload"
-@c End:



reply via email to

[Prev in Thread] Current Thread [Next in Thread]