summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/fonts/fontinst
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2009-05-23 00:14:50 +0000
committerKarl Berry <karl@freefriends.org>2009-05-23 00:14:50 +0000
commitac7c62d7555a6cebca926dc51ebc39cb235982db (patch)
tree8411809d969764b8f25e7ad5082c08f3577aee00 /Master/texmf-dist/doc/fonts/fontinst
parentaf6a89d1cc9fae03dc3a8dc7b19e324266bf0596 (diff)
use doc subdirs
git-svn-id: svn://tug.org/texlive/trunk@13408 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/fonts/fontinst')
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/README116
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/encspecs/encspecs.tex1334
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/encspecs/omxdraft.etx985
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/encspecs/ot1draft.etx1027
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/encspecs/t1draft.etx1484
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/examples/basicex.tex431
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/examples/basicex2.tex50
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/manual/fontinst.dvibin0 -> 207780 bytes
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/manual/fontinst.pdfbin0 -> 381721 bytes
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/manual/fontinst.tex4160
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/manual/intro98.dvibin0 -> 62532 bytes
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/manual/intro98.pdfbin0 -> 172067 bytes
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/manual/intro98.tex1330
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/manual/roadmap.eps265
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/talks/et99-font-tables.pdfbin0 -> 201767 bytes
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/talks/et99-font-tutorial.pdfbin0 -> 242186 bytes
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/test/comparemetrics.sty941
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/test/comparepls.tex73
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/test/scaledtest.tex8
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/test/speedtest1.tex62
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/test/testfont.tex208
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/test/testsc.tex41
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/test/v1901test.mtx22
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/test/v1901test.tex214
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/test/v1902test.tex11
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/test/v1905test.tex22
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/test/v1906test.mtx64
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/test/v1906test.tex12
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/test/v1913test.tex21
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/test/v1914test.tex50
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/test/v1914testmap.tex17
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/test/v1914testshow.tex22
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/test/v1915test.tex25
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/test/v1915testmap.tex9
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/test/v1916test.mtx23
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/test/v1916test.tex14
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/test/v1916test2.tex27
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/test/v1923test.tex47
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/test/v1927test.tex18
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/test/v1928test.tex13
-rw-r--r--Master/texmf-dist/doc/fonts/fontinst/base/test/v1928test2.tex32
41 files changed, 13178 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/README b/Master/texmf-dist/doc/fonts/fontinst/base/README
new file mode 100644
index 00000000000..9e5f39cde19
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/fontinst/base/README
@@ -0,0 +1,116 @@
+README for fontinst
+
+* What is it?
+
+Fontinst is a program that helps with installing fonts
+for (La)TeX. Since it is written entirely in TeX macros,
+it is completely portable.
+
+More precisely, fontinst helps mainly with the number
+crunching and shoveling parts of font installation. This
+means in practice that it creates a number of files which
+give the TeX metrics (and related information) for a font
+family that (La)TeX needs to do any typesetting in these
+fonts. Fontinst furthermore makes it easy to create fonts
+containing glyphs from more than one base font, taking
+advantage of e.g. "expert" font sets.
+
+Fontinst cannot examine files to see if they contain any
+useful information or work with binary file formats; those
+tasks must normally be done manually or with the help of
+some other tool, such as the pltotf and vptovf programs.
+Nor can fontinst automatically search for files, but if
+they are named according to the fontname scheme (Berry)
+then fontinst sometimes succeeds very well in guessing
+what the interesting files are called.
+
+
+* Documentation
+
+The doc directory contains pure documentation; in
+particular the doc/manual directory should be of
+interest, as it contains the fontinst manual. For all
+questions about how one uses fontinst, see this manual.
+
+Sadly, the manual has been neglected for some time, and
+although it was recently revised, much remains to do.
+In particular, several commands still lack description and
+explanations (although at least the manual now lists
+all the syntaxes). Some alternative sources of information
+that you may find useful are:
+
+ * Philipp Lehman's "The Font Installation Guide"
+ Available on CTAN, at info/Type1fonts/fontinstallationguide/
+
+ * intro98.tex - parts of the 1998 fontinst v1.8 manual
+ that were split off during the recent revision.
+
+ * The fontinst mailing list and its archives
+ (See below for relevant addresses.)
+
+ * The fontinst Literate Programming sources (see
+ source/fisource.dvi). If a command isn't documented
+ anywhere else, there is probably a discussion of it
+ in the sources. They're thoroughly indexed.
+
+The examples directory contains some examples (with
+comments) of using fontinst to install a font family.
+
+
+* Installation
+
+To use fontinst, you only need to make sure the inputs
+directory and its subdirectories are on TeX's input path.
+Usually you do this by moving it to a suitable location.
+In a TDS texmf tree, the inputs directory is usually
+made the ${TEXMF}/tex/fontinst directory.
+
+You will probably also want to move the file fontdoc.sty
+in the latex directory to some location where TeX will
+find it. Many of the .mtx and .etx files in the inputs
+hierarchy are simultaneously fontinst input files and
+LaTeX documents; the fontdoc package is needed to typeset
+them as the latter. In a TDS texmf tree, the normal place
+for fontdoc.sty is in the tex/latex/misc directory.
+
+Also recall that some TeX implementations maintain a
+database over files that have been installed. If you've
+placed fontinst in a suitable place but TeX complains it
+cannot find the file fontinst.sty then the problem may
+be that you need to update this database of files. That
+is however nothing that is particular for fontinst.
+
+
+* Latin and other scripts
+
+The fontinst distribution includes the necessary encoding
+definition (.etx) files for the latin script as used in
+European languages, but there is nothing in fontinst as
+a program that restricts it to these languages. In the T2
+bundle (CTAN:macros/latex/contrib/t2) there are
+corresponding fontinst files for the cyrillic scripts
+(and in the future it might become part of the main
+fontinst distribution).
+
+
+* The test directory
+
+This is mainly of interest for advanced fontinst users.
+It collects some files that were written to test the new
+features in various versions of fontinst.
+
+
+* Mailing list
+
+Questions and bug reports should be sent to the fontinst
+mailing list
+
+ fontinst@tug.org
+
+General information about the mailing list is at:
+
+ http://tug.org/mailman/listinfo/fontinst
+
+
+16 December 2004,
+Lars Hellstr\"om
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/encspecs/encspecs.tex b/Master/texmf-dist/doc/fonts/fontinst/base/encspecs/encspecs.tex
new file mode 100644
index 00000000000..88911506970
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/fontinst/base/encspecs/encspecs.tex
@@ -0,0 +1,1334 @@
+\documentclass[a4paper]{article}
+
+\usepackage{array}
+
+\makeatletter
+\@ifundefined{l@nohyphenation}{\newlanguage\l@nohyphenation}{}
+\DeclareRobustCommand\meta[1]{%
+ \ensuremath{\langle}%
+ \sbox{\z@}{%
+ \setlanguage\l@nohyphenation
+ \normalfont\itshape #1\/%
+ \setlanguage\language
+ }%
+ \unhbox\z@
+ \ensuremath{\rangle}%
+}
+\makeatother
+\DeclareRobustCommand\marg[1]{%
+ \texttt{\char`\{}\meta{#1}\texttt{\char`\}}%
+}
+\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}}
+
+\makeatletter
+\DeclareTextFontCommand\textsmaller{%
+ \fontsize{\scaledsize{\f@size}}{\f@baselineskip}\selectfont
+}
+\newcommand\scaledsize[1]{%
+ \ifdim #1\p@>6\p@
+ \ifdim #1\p@>7\p@
+ \ifdim #1\p@>8\p@
+ \ifdim #1\p@>9\p@
+ \ifdim #1\p@>10\p@
+ \ifdim #1\p@>11\p@
+ \ifdim #1\p@>12\p@
+ \ifdim #1\p@>14\p@ 14%
+ \else 12\fi
+ \else 11\fi
+ \else 10\fi
+ \else 9\fi
+ \else 8\fi
+ \else 7\fi
+ \else 6\fi
+ \else 5\fi
+}
+\makeatother
+\DeclareRobustCommand\ETX{\textsmaller{ETX}}
+\DeclareRobustCommand\PDF{\textsmaller{PDF}}
+
+% From tugboat.cls
+\def\thinskip{\hskip 0.16667em\relax}
+\def\endash{--}
+\def\emdash{\endash-}
+\makeatletter
+\def\d@sh#1#2{\unskip#1\thinskip#2\thinskip\ignorespaces}
+\def\dash{\d@sh\nobreak\endash}
+\def\Dash{\d@sh\nobreak\emdash}
+\def\ldash{\d@sh\empty{\hbox{\endash}\nobreak}}
+\def\rdash{\d@sh\nobreak\endash}
+\def\Ldash{\d@sh\empty{\hbox{\emdash}\nobreak}}
+\def\Rdash{\d@sh\nobreak\emdash}
+\makeatother
+
+\usepackage{shortvrb}
+\MakeShortVerb{\|}
+\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}}
+
+\newcommand{\TeXOmega}{Omega}
+\DeclareRobustCommand\eTeX{\ensuremath{\varepsilon}-\kern-.125em\TeX}
+\DeclareRobustCommand\package[1]{\textsf{#1}}
+
+\providecommand*{\href}[2]{#2}
+\newcommand*{\ctanref}[2]{\href{ftp://ftp.ctan.org/#1}{#2}}
+
+\title{Writing \ETX\ format font encoding specifications}
+\author{Lars Hellstr\"om}
+\date{2003/07/09}
+
+\begin{document}
+\maketitle
+
+\begin{abstract}
+ This paper explains how one writes formal specifications of font
+ encodings for \LaTeX\ and suggests a ratification procedure for such
+ specifications.
+\end{abstract}
+
+
+\tableofcontents
+
+\vspace{0mm plus 35mm}
+\pagebreak[2]
+
+
+\section{Introduction}
+
+This is a kind of FAQ on some initial questions, and my personal
+answers to those.
+
+\paragraph*{Why should one specify font encodings?}
+Because without a specification, font
+designers\footnote{Maybe not a good term, since it is really about
+making fonts available to \TeX. Some of these people actually
+design glyphs, but most of them merely working with the metrics.}
+cannot tell whether their fonts will work in general, they can
+only test that they work in the cases they know about. Font design
+is subject to a surprising amount of obscure technicalities and it
+is very hard to consider (or even find documentation that
+mentions) them all.
+
+\paragraph*{Why should one make formal specifications?}
+Because the informal specifications that we have today
+are incomplete and hard to use. E.g.\ the \LaTeX\
+\meta{enc}\texttt{enc.def} files only say something about the
+characters that are accessed via commands, and even for those you
+really have to do reverse engineering to figure out what the
+encoding contains. To figure out what the remaining characters
+should do you have to compile what the various user manuals claim
+to work and then work backwards from that, but I don't think the
+general problem of which character tokens are allowed in input is
+thoroughly treated anywhere. On top of that, \LaTeX\ itself
+contributes some character tokens when the document is being
+typeset.\footnote{This is basically the ``a \texttt{T}$*$ encoding
+must contain the characters \ldots'' problem that was the reason
+that the \texttt{T2} encoding had to be split up.}
+
+On the other side of things there are the files which tell e.g.
+\textsf{fontinst} or \textsf{AFMtoTFM} what the target font
+encoding is. These are basically recipes which are known (?\@) to
+produce valid results, and they do usually provide more
+information about the encoding than the sources listed above, but
+they don't give much information about where the recipe can be
+modified.
+
+\paragraph*{Why use the \ETX\ format?}
+To begin with it is an established format; many of those
+who are making fonts already use it, even if for a slightly
+different purpose. Another major reason is that an \ETX\ file is both
+a \LaTeX\ document and a processable data file; this is the same kind
+of bilinguality that has made the \texttt{.dtx} format so useful.
+Finally the \ETX\ format makes it easy to create experimental font
+installations when a new encoding is being designed; \textsf{fontinst}
+can directly read the file, but the file can also be automatically
+converted to a PostScript encoding vector if that approach seems more
+convenient.
+
+On the other hand, there are some features (such as the prominent
+role of the glyph names) of the \ETX\ format that would
+probably had been done differently in a file format that was built
+from scratch, but then you would also lose several of the advantages
+listed above.
+
+
+\section{Points to keep in mind}
+
+\subsection{Characters, glyphs, and slots}
+
+One fundamental difference one must understand is that between
+characters and glyphs. A \emph{character} is a semantic entity---it
+carries some meaning, even if you usually have to combine several
+characters to make up even one word---whereas a \emph{glyph} simply
+is a piece of graphics. In printed text, glyphs are used to represent
+characters and the first step of reading is to determine which
+character(s) a given glyph is representing.\footnote{Some \PDF\ viewers
+also try to accomplish this, but in general they need extra
+information to do it right. The generic solution provided is to embed
+a \emph{ToUnicode CMap}\Ldash which is precisely a map from slots to
+characters\Rdash in the \PDF\ font object.}
+
+In the output, \TeX\ neither deals with characters nor glyphs, really
+(although many of its messages speak of characters), but with
+\emph{slots}, which essentially are numbered positions in a font. To
+\TeX, a slot is simply something which can have certain metric
+properties (width, height, depth, etc.\@) but to the driver which
+actually does the printing the slot also specifies a glyph. The same
+slot in two different fonts can correspond to two quite different
+characters.
+
+For completeness it should also be mentioned that the \emph{input} of
+\TeX\ is a stream of semantic entities and thus \TeX\ is dealing with
+characters on that side, but the input is not the subject of this
+paper.
+
+
+\subsection{Ligatures}
+
+In typography, a \emph{ligature} is a glyph which has been formed by
+joining glyphs that represent two or more characters; this joining can
+involve quite a lot of deformation of the original shapes. Examples
+of ligatures are the `fi' ligature (from `f' and `i'), the `\AE'
+ligature (from `A' and `E'), and the `\textit{\&}' character (from `E'
+and `t'), the latter two of which has evolved to become characters of
+their own. For those ligatures (such as `fi') that have not evolved to
+characters, \TeX\ has a mechanism for forming the ligature out of the
+characters it is composed from, under the guidance of ligature\slash
+kerning programs found in the font.
+
+More technically, what happens is really that if the |\char| (or
+equivalent) for one slot is immediately followed by the |\char| (or
+equivalent) for another (or the same) slot and there is a ligaturing
+instruction in the \texttt{\small LIGKERN} table of the current font
+which applies to this slot pair then this ligaturing instruction is
+executed. This usually replaces the two slots in the pair with a
+single new slot specified by the ligaturing instruction (it could
+also keep one or both of the original slots, but that is less common).
+\TeX\ has no idea about whether these replacements change the meaning
+of anything, but \TeX\ assumes that it doesn't, and it is up to the
+font designer to ensure that this is the case.
+
+Apart from forming ligatures in text, the ligaturing mechanism of
+\TeX\ is traditionally also employed for another task which is much
+more problematic. Ligatures are also used to produce certain
+characters which are not part of visible ASCII---the most common are
+the endash (typed as |--|) and the emdash (typed as |---|). This is a
+problem because it violates \TeX's assumption that the meaning is
+unchanged; the classical problem with this appears in the \texttt{OT2}
+encoding, where the Unicode character \texttt{U+0446}
+(\textsc{cyrillic small letter tse}) could be typed as |ts|, whilst
+the |t| and |s| by themselves produced Unicode characters
+\texttt{U+0442} (\textsc{cyrillic small letter te}) and \texttt{U+0441}
+(\textsc{cyrillic small letter es}) respectively. \TeX's hyphenation
+mechanism can however decompose ligatures, so it sometimes happened
+that the \textsc{tse} was hyphenated as \textsc{te}-\textsc{es},
+which is quite different from what was intended. Since this is such
+an obvious disadvantage, the use of ligatures for forming non-English
+letters quickly disappeared after 8-bit input encodings became
+available. The practice still remains in use for punctuation, however,
+and the font designer must be aware of this. For many font encodings
+there is a set of ligatures which must be present and replace two or
+more characters by a single, different character. These ligatures are
+called \emph{mandatory ligatures} in this paper.
+
+The use of mandatory ligatures in new font encodings is strongly
+discouraged, for a number of reasons. The main problem is that they
+create unhealthy dependencies between input and output encoding,
+whereas these should ideally be totally independent. Using ligatures
+in this way complicates the internal representation of text, and it
+also makes it much harder to typeset text where those ligatures are not
+wanted (such as verbatim text). Furthermore it creates problems with
+kerning, since the ``ligature'' has not yet been formed when a kern
+to the left of it is inserted. Finally, a much better solution (when
+it is available) is to use an \TeXOmega\ translation process
+(see~\cite[Sec.~8--11]{Omega-doc}), since that \emph{is} independent
+of the font, different translations can be combined, and they can
+easily handle even ``abbreviations'' much more complicated than those
+ligatures can deal with.
+
+
+\subsection{Output stages}
+
+On its way out of \LaTeX\ towards the printed text, a character passes
+through a number of stages. The following five seem to cover what is
+relevant for the present discussion:
+\begin{enumerate}
+ \item \emph{\LaTeX\ Internal Character Representation} (LICR);
+ see~\cite{LaTeXCompanion}, Section~7.11 for a full description.
+ At this point the character is a character token (e.g.~|a|),
+ a text command (e.g.~|\ss|), or a combination (e.g.~|\H{o}|).
+ \item \emph{Horizontal material;} this is what the character is
+ en route from \TeX's mouth to its stomach. For most characters
+ this is equivalent to a single |\char| command (e.g.\ |a| is
+ equivalent to |\char|\,|97|), but some require more than one, some
+ are combined using the |\accent| and |\char| commands, some
+ involve rules and\slash or kerns, and some are built using boxes
+ that arbitrarily combine the above elements.
+ \item \emph{DVI commands;} this is the DVI file commands that
+ produce the printed representation of the character.
+ \item \emph{Printed text;} this is the graphical representation of
+ the character, e.g. as ink on paper or as a pattern on a computer
+ screen. Here the text consists of glyphs.
+ \item \emph{Interpreted text;} this is essentially printed text
+ modulo equivalence of interpretation, hence the text doesn't really
+ reach this stage until someone reads it. Here the text consists of
+ characters.
+\end{enumerate}
+
+In theory there is a universal mapping from LICR to interpreted text,
+but various technical restrictions make it impossible to simultaneously
+support the entire mapping. A \LaTeX\ encoding selects a restriction
+of this mapping to a limited set which will be ``well supported''
+(meaning kerning and such between characters in the set works), whereas
+elements outside this set at best can be supported through temporary
+encoding changes. The encoding also specifies a decomposition of the
+mapping into one part which maps LICR to horizontal material and one
+part which maps horizontal material to interpreted text. The first
+part is realized by the text command definitions usually found in the
+\meta{enc}\texttt{enc.def} file for the encoding. The second part is
+the font encoding, the specification of which is the topic of this
+paper. It is also worth noticing that an actual font is a mapping of
+horizontal material to printed text.
+
+An alternative decomposition of the mapping from LICR to interpreted
+text would be at the DVI command level, but even though this
+decomposition is realized in most \TeX\ implementations, it has very
+little relevance for the discussion of encodings. The main reason for
+this is that it depends not only on the encoding of a font, but
+also on its metrics. Furthermore it is worth noticing that in e.g.\
+pdf\TeX\ there need not be a DVI command level.
+
+
+\subsection{Hyphenation}
+
+There are strong connections between font encoding and hyphenation because
+\TeX's hyphenation mechanism operates on horizontal material; more
+precisely the hyphenation mechanism only works on pieces of horizontal
+material that are equivalent to sequences of |\char| commands. This
+implies that hyphenation patterns, as selected via the |\language|
+parameter, are not only for a specific language, they are also for a
+specific font encoding.
+
+The hyphenation mechanism uses the |\lccode| values to distinguish
+between three types of slots: lower case letters (|\lccode|\(\,n =
+n\)), upper case letters (|\lccode|\(\,n \notin \{0,n\}\)), and
+non-letters (|\lccode|\(\,n = 0\)); only the first two types can be
+part of a hyphenatable word and only lower case letters are needed
+in the hyphenation patters. This does however place severe
+restrictions on how letters can be placed in a text font because
+\TeX\ uses the same |\lccode| values for all text in a paragraph and
+therefore these values cannot be changed whenever the encoding changes.
+In \LaTeX\ the |\lccode| table is not allowed to change at all and
+consequently all text font encodings must work using the standard set
+of |\lccode| values.
+
+In \eTeX\ each set of hyphenation patterns has its own set of
+|\lccode| values for hyphenation, so the problem isn't as severe
+there. The hyphenation mechanism of \TeXOmega\ should become
+completely independent of the font encoding, although the last time I
+checked it was still operating on material encoded according to
+a font encoding.
+
+
+\subsection{Production and specification \ETX\ files}
+
+Finally, it is worth pointing out the difference between an \ETX\ file
+created for the specification of a font encoding and one created for
+being used in actually producing fonts with this encoding. They are
+usually not the same. Specification \ETX s certainly may be of direct
+use in the production of fonts---especially experimental fonts
+produced as part of the work on a new encoding---but they are usually
+not ideal for the purpose. In particular there is often a need to
+switch between alternative names for a glyph to accommodate what is
+actually in the fonts, but such trickeries are undesirable
+complications in a specification. On the other hand a production
+\ETX\ file has little need for verbose comments, whereas they are rather
+an advantage in a specification \ETX\ file.
+
+Therefore one shouldn't be surprised if there are two \ETX\ files for a
+specific encoding: one which is a specification version and one which
+is a production version. If both might need to be in the same
+directory then one should, as a rule of thumb, include a
+`\texttt{spec}' in the name of the specification version.
+
+
+\section{Font encoding specifications}
+
+\subsection{Basic principles}
+
+Most features of the font encoding are categorized as either
+\emph{mandatory} or \emph{ordinary}. The mandatory features are what
+macros may rely on, whereas the ordinary simply are something which
+fonts with this encoding normally provide. Font designers may choose
+to provide other features than the ordinary, but are recommended to
+provide the ordinary features to the extent that the available
+resources permit.
+
+Many internal references in the specification are in the form of
+\emph{glyph names} and the choice of these is a slightly tricky
+matter. From the point of formal specification, the choices can be
+completely arbitrary, but from the point of practical usefulness they
+most likely are not. One of the main advantages of the \ETX\ format
+for specifications is that such specifications can also be used to
+make experimental implementations, but this requires that the glyph
+names in the specification are the same as those used in the fonts
+from which the experimental implementation should be built. Yet
+another aspect is that the glyph names are best chosen to be the ones
+one can expect to find in actual fonts, as that will make things
+easier for other people that want to make non-experimental
+implementations later. For this last purpose, a good reference is
+Adobe's technical note on Unicode and glyph names~\cite{unicodesign}.
+For most common glyphs, \cite{unicodesign} ends up recommending that
+one should follow the Adobe glyph list~\cite{AGL}, which however has
+the peculiar trait of recommending names on the form
+\texttt{afii}\textit{ddddd} (rather than the Unicode-based alternative
+\texttt{uni}\textit{xxxx}) for most non-latin glyphs. This is somewhat
+put in perspective by~\cite{ATN5013}.
+
+
+\subsection{Slot assignments}
+
+The purpose of the slot assignments is to specify for each slot which
+character or characters it is mapped to. That one slot is mapped to
+many characters is an unfortunate, but not very uncommon, reality in
+many encodings, as limitations in font size have often encouraged
+identifications of two characters which are almost the same. It should
+be avoided in new encodings.
+
+Slot assignmets are done using the |\nextslot| command and a
+|\setslot| \dots\ |\endsetslot| construction as follows:
+\begin{quote}
+ |\nextslot|\marg{slot number}\\*
+ |\setslot|\marg{glyph name}\\*
+ \mbox{\quad}\meta{slot commands}\\*
+ |\endsetslot|
+\end{quote}
+A typical example of this is
+\begin{quote}\begin{verbatim}
+\nextslot{65}
+\setslot{A}
+ \Unicode{0041}{LATIN CAPITAL LETTER A}
+\endsetslot
+\end{verbatim}\end{quote}
+which gets typeset as
+\begin{quote}
+ \textbf{Slot 65 `\texttt{A}'}\\*
+ Unicode character \texttt{U+0041}, \textsc{latin capital letter a}.
+\end{quote}
+
+The |\nextslot| command does not typeset anything; it simply stores
+the slot number in a counter, for later use by |\setslot|. The
+|\endsetslot| command increments this counter by one. Hence the
+|\nextslot| command is unnecessary between |\setslot|s for consecutive
+slots. Besides |\nextslot|, there is also a command |\skipslots| which
+increments the slot number counter by a specified amount. The
+argument of both |\nextslot| and |\skipslots| can be arbitrary
+\package{fontinst} integer expressions (see~\cite{fontinst-man}). All
+\TeX\ \meta{number}s that survive full expansion are valid
+\package{fontinst} integer expressions, but for example |`\~| isn't,
+as |\~| is a macro which will break before the expression is typeset.
+These cases can however be fixed by preceding the \TeX\ \meta{number}
+by |\number|, as |\number`\~| survives full expansion by expanding to
+|126|.
+
+The main duty of the \meta{slot commands} is to specify the target
+character (or characters) for this slot. The simplest way of doing
+this is to use the |\Unicode| command, which has the syntax
+\begin{quote}
+ |\Unicode|\marg{code point}\marg{name}
+\end{quote}
+The \meta{code point} is the number of the character (in hexadecimal
+notation, usually a four-digit number) and the \meta{name} is the name.
+Case is insignificant in these arguments. If a slot corresponds to a
+string of characters rather than to a single character, then one uses
+the |\charseq| command, which has the syntax
+\begin{quote}
+ |\charseq|\marg{\cs{Unicode} commands}
+\end{quote}
+e.g.
+\begin{quote}\begin{verbatim}
+\nextslot{30}
+\setslot{ffi}
+ \charseq{
+ \Unicode{0066}{LATIN SMALL LETTER F}
+ \Unicode{0066}{LATIN SMALL LETTER F}
+ \Unicode{0069}{LATIN SMALL LETTER I}
+ }
+\endsetslot
+\end{verbatim}\end{quote}
+Several |\Unicode| commands not in the argument of a |\charseq|
+instead mean that each of the listed characters is a valid
+interpretation of the slot.
+
+If a character cannot be specified in terms of Unicode code points then
+the specification should simply be a description in text which
+identifies the character. Such descriptions are written using the
+|\comment| command
+\begin{quote}
+ |\comment|\marg{text}
+\end{quote}
+It is worth noticing that the \meta{text} is technically only an
+argument of |\comment| when the program processing the \ETX\ file is
+ignoring |\comment| commands. This means |\verb| and similar
+catcode-changing commands \emph{can} be used in the \meta{text}. The
+|\par| command is on the other hand not allowed in the \meta{text}.
+
+The |\comment| command should also be used for any further piece of
+explanation of or commentary to the character used for the slot, if the
+exposition seems to need it. There can be any number of |\comment|
+commands in the \meta{slot commands}.
+
+
+\subsection{Ligatures}
+
+There are three classes of ligatures in the font encoding
+specifications: mandatory, ordinary, and odd. Mandatory ligatures must
+be present in any font which complies with the encoding, whereas
+ordinary and odd ligatures need not be. No clear distinction can be
+made between ordinary and odd ligatures, but a non-mandatory ligature
+should be categorized as ordinary if it makes sense for the majority
+of users, and as odd otherwise. Hence the `fi' ligature is
+categorized as ordinary in the \texttt{T1} encoding (although it
+makes no sense in Turkish), whereas the `ij' ligature is odd.
+
+In the \ETX\ format, a ligature is specified using one of the slot
+commands
+\begin{quote}
+ |\Ligature|\marg{ligtype}\marg{right}\marg{new}\\
+ |\ligature|\marg{ligtype}\marg{right}\marg{new}\\
+ |\oddligature|\marg{note}\marg{ligtype}\marg{right}\marg{new}
+\end{quote}
+|\Ligature| is used for mandatory ligatures, |\ligature| is used for
+ordinary ligatures, and |\oddligature| is used for odd ligatures. The
+\meta{right} and \meta{new} arguments are names of the glyphs being
+assigned to the slots involved in this ligature. The \meta{right}
+specifies the right part in the slot pair being affected by the
+ligature, whereas the left part is the one of the |\setslot| \dots\
+|\endsetslot| construction in which the ligaturing command is placed.
+The \meta{new} specifies a new slot which will be inserted by the
+ligaturing instruction. The \meta{ligtype} is the actual ligaturing
+instruction that will be used; it must be |LIG|, |/LIG|, |/LIG>|,
+|LIG/|, |LIG/>|, |/LIG/|, |/LIG/>|, or |/LIG/>>|. The slashes specify
+retention of the left or right original character; the |>| signs
+specify passing over that many slots in the result without further
+ligature processing. \meta{note}, finally, is a piece of text which
+explains when the odd ligature may be appropriate. It is typeset as a
+footnote.
+
+As an example of ligatures we find the following in the specification
+of the \texttt{T1} encoding:
+\begin{quote}
+ |\nextslot{33}|\\
+ |\setslot{exclam}|\\
+ | \Unicode{0021}{EXCLAMATION MARK}|\\
+ | \Ligature{LIG}{quoteleft}{exclamdown}|\\
+ |\endsetslot|
+\end{quote}
+It is typeset as
+\begin{quote}
+ \textbf{Slot 33 `\texttt{exclam}'}\\*
+ Unicode character \texttt{U+0021}, \textsc{exclamation mark}.\\*
+ \textbf{Mandatory ligature}
+ \texttt{exclam}${}*{}$\texttt{quoteleft}${}\rightarrow
+ {}$\texttt{exclamdown}
+\end{quote}
+With other \meta{ligtype}s there may be more names listed on the
+right hand side and possibly a `$\lfloor$' symbol showing the
+position at which ligature processing will start afterwards.
+
+
+\subsection{Math font specialities}
+
+There are numerous technicalities which are special to math fonts, but
+only a few of them are exhibited in \ETX\ files.\footnote{For an
+overview of the subject, see for example Vieth~\cite{Vieth2001}.} Most
+of these have to do with the \TeX\ mechanisms that find sufficiently
+large characters for commands like |\left|, |\sqrt|, and |\widetilde|.
+
+The first mechanism for this is that a character in a font can sort of
+say ``If I'm too small, then then try character \dots\ instead''. This
+is expressed in an \ETX\ file using the |\nextlarger| command, which
+has the syntax
+\begin{quote}
+ |\nextlarger|\marg{glyph name}
+\end{quote}
+The second mechanism constructs a sufficiently large character from
+smaller pieces; this is known as a `varchar' or `extensible character'.
+This is expressed in an \ETX\ file using an ``extensible recipe'', the
+syntax for which is
+\begin{quote}
+ |\varchar| \meta{varchar commands} |\endvarchar|
+\end{quote}
+where each \meta{varchar command} is one of
+\begin{quote}
+ |\varrep|\marg{glyph name}\\
+ |\vartop|\marg{glyph name}\\
+ |\varmid|\marg{glyph name}\\
+ |\varbot|\marg{glyph name}
+\end{quote}
+There can be at most one of each and their order is irrelevant. The
+most important is the |\varrep| command, as that is the part which is
+repeated until the character is sufficiently large. The |\vartop|,
+|\varmid|, and |\varbot| commands are used to specify some other part
+which should be put at the top, middle, and bottom of the extensible
+character respectively. Not all extensible recipes use all of these,
+however.
+
+As an example, here is how a very large left brace is constructed:
+\begin{center}
+ \begin{tabular}{>{%
+ \fontencoding{OMX}\fontfamily{cmex}\selectfont
+ $\vcenter\bgroup\hbox\bgroup
+ }l<{\egroup\egroup$} l}
+ \char"38& For |\vartop{bracelefttp}|\\
+ \char"3E& For |\varrep{braceex}|\\
+ \char"3C& For |\varmid{braceleftmid}|\\
+ \char"3E& Again for |\varrep{braceex}|\\
+ \char"3A& For |\varbot{braceleftbt}|
+ \end{tabular}
+\end{center}
+
+Both |\nextlarger| and |\varchar| commands are like |\ligature| in
+that they describe ordinary features for the encoding; they appear in
+a specification \ETX\ file mainly to explain the purpose of some
+ordinary character. There is no such thing as a mandatory |\nextlarger|
+or |\varchar|, but varchars are occationally used to a similar effect.
+In these cases, the character generated by the extensible recipe is
+something quite different from what a |\char| for that slot would
+produce. Thus for the slot to produce the expected result it must be
+referenced using a |\delimiter| or |\radical| primitive, since those
+are the only ones which make use of the extensible recipe. The effect
+is that the slot has a \emph{semimandatory} assignment; the result of
+|\char| is unspecified (as for a slot with an ordinary assignment), but
+the result for a large delimiter or radical is not (as for a slot with
+a mandatory assignment).
+
+Thus some math fonts have an extra section ``Semimandatory characters''
+between the mandatory and ordinary character sections. In that section
+for the \texttt{OMX} encoding we find for example
+\begin{quote}\begin{verbatim}
+\nextslot{60}
+\setslot{braceleftmid}
+ \Unicode{2016}{DOUBLE VERTICAL LINE}
+ \comment{This is the large size of the |\Arrowvert|
+ delimiter, a glyphic variation on |\Vert|.
+ The \texttt{braceleftmid} glyph ordinarily
+ placed in this slot must not be too tall,
+ or else the extensible recipe actually producing
+ the character might sometimes not be used.}
+ \varchar
+ \varrep{arrowvertex}
+ \endvarchar
+\endsetslot
+\end{verbatim}\end{quote}
+which is typeset as
+\begin{quote}
+ \textbf{Slot 60 `\texttt{braceleftmid}'}\\*
+ Unicode character \texttt{U+2016}, \textsc{double vertical line}.\\
+ This is the large size of the |\Arrowvert|
+ delimiter, a glyphic variation on |\Vert|.
+ The \texttt{braceleftmid} glyph ordinarily
+ placed in this slot must not be too tall,
+ or else the extensible recipe actually producing
+ the character might sometimes not be used.\\
+ \textbf{Extensible glyph:}\\*
+ \textbf{Repeated} \texttt{arrowvertex}
+\end{quote}
+
+
+
+
+\subsection{Fontdimens}
+
+Each \TeX\ font contains a list of fontdimens, numbered from $1$ and
+up, which are accessible via the |\fontdimen| \TeX\ primitive. Quite a
+few are also used implicitly by \TeX\ and therefore cannot be left out
+even if they are totally irrelevant, but as one can always include
+some extra fontdimens in a font---the only bounds on how many
+fontdimens there may be are the general bound on the size of a TFM
+file and the amount of font memory \TeX\ has available---this is
+usually not a problem.
+
+The reason fontdimens are part of font encoding specifications is
+that the meaning of e.g.\ |\fontdimen|\,|8| varies between different
+fonts depending on their encoding; thus the encoding specification
+must define the quantity stored in each |\fontdimen| parameter. This
+is done using the |\setfontdimen| command, which has the syntax
+\begin{quote}
+ |\setfontdimen|\marg{number}\marg{name}
+\end{quote}
+The \meta{number} is the fontdimen number (as a sequence of decimal
+digits where the first digit isn't zero) and the \meta{name} is a
+symbolic name for the quantity.
+
+The standard list of symbolic names for fontdimen quantities appears
+below; the listed quantities should always be described using the names
+in this list. Encoding specifications that employ other quantities as
+fontdimens should include definitions of these quantities. Those
+quantities that are defined as ``Formula parameter \dots'' have to
+do with how mathematical formulae are rendered and are usually much
+too complicated to explain here. For exact definitions of these
+parameters, the reader is referred to Appendix~G of \textit{The
+\TeX book}~\cite{TeXbook}.
+\begin{list}{}{%
+ \setlength\labelwidth{0pt}%
+ \setlength\itemindent{-\leftmargin}%
+ \def\makelabel#1{\hspace{\labelsep}\normalfont\itshape #1}%
+ \setlength\itemsep{0.5\itemsep}%
+ \setlength\parsep{0.5\parsep}%
+}
+\item[acccapheight]
+ The height of accented full capitals.
+\item[ascender]
+ The height of lower case letters with ascenders.
+\item[axisheight] Formula parameter $\sigma_{22}$.
+\item[baselineskip]
+ The font designer's recommendation for natural length of the
+ \TeX\ parameter |\baselineskip|.
+\item[bigopspacing1] Formula parameter $\xi_{9}$.
+\item[bigopspacing2] Formula parameter $\xi_{10}$.
+\item[bigopspacing3] Formula parameter $\xi_{11}$.
+\item[bigopspacing4] Formula parameter $\xi_{12}$.
+\item[bigopspacing5] Formula parameter $\xi_{13}$.
+\item[capheight]
+ The height of full capitals.
+\item[defaultrulethickness] Formula parameter $\xi_{8}$.
+\item[delim1] Formula parameter $\sigma_{20}$.
+\item[delim2] Formula parameter $\sigma_{21}$.
+\item[denom1] Formula parameter $\sigma_{11}$.
+\item[denom2] Formula parameter $\sigma_{12}$.
+\item[descender]
+ The depth of lower case letters with descenders.
+\item[digitwidth]
+ The median width of the digits in the font.
+\item[extraspace]
+ The natural width of extra interword glue at the end of a sentence.
+ \TeX\ implicitly uses this parameter if |\spacefactor| is $2000$ or
+ more and |\xspaceskip| is zero.
+\item[interword]
+ The natural width of interword glue (spaces). \TeX\ implicitly uses
+ this parameter unless |\spaceskip| is nonzero.
+\item[italicslant]
+ The slant per point of the font. Unlike all other fontdimens, it is
+ not proportional to the font size.
+\item[maxdepth]
+ The maximal depth over all slots in the font.
+\item[maxheight]
+ The maximal height over all slots in the font.
+\item[num1] Formula parameter $\sigma_{8}$.
+\item[num2] Formula parameter $\sigma_{9}$.
+\item[num3] Formula parameter $\sigma_{10}$.
+\item[quad]
+ The quad width of the font, normally approximately equal to the
+ font size and\slash or the width of an `M'. Also implicitly available
+ as the length unit |em| and used for determining the size of the
+ length unit |mu|.
+\item[shrinkword]
+ The (finite) shrink component of interword glue (spaces). \TeX\
+ implicitly uses this parameter unless |\spaceskip| is nonzero.
+\item[stretchword]
+ The (finite) stretch component of interword glue (spaces). \TeX\
+ implicitly uses this parameter unless |\spaceskip| is nonzero.
+\item[sub1] Formula parameter $\sigma_{16}$.
+\item[sub2] Formula parameter $\sigma_{17}$.
+\item[subdrop] Formula parameter $\sigma_{19}$.
+\item[sup1] Formula parameter $\sigma_{13}$.
+\item[sup2] Formula parameter $\sigma_{14}$.
+\item[sup3] Formula parameter $\sigma_{15}$.
+\item[supdrop] Formula parameter $\sigma_{18}$.
+\item[verticalstem]
+ The dominant width of vertical stems. This quantity is meant to be used
+ as a measure of how ``dark'' the font is.
+\item[xheight]
+ The x-height (height of lower case letters without ascenders). Also
+ implicitly available as the length unit |ex|.
+\end{list}
+
+
+\subsection{The codingscheme}
+
+The final encoding-dependent piece of information in a \TeX\ font is
+the codingscheme, which is essentially a string declaring what
+encoding the font has. This information is currently only used by
+programs that convert the information in a \TeX\ font to some other
+format and these use it to identify the glyphs in the font. Therefore
+this string should be chosen so that the contents of the slots in the
+font can be positively identified. Observe that the encoding
+specification by itself does not provide enough information for this,
+since there are usually a couple of slots that do not contain
+mandatory characters. On the other hand, it is not a problem in this
+context if the font leaves some of the slots (even mandatory ones)
+empty as that is anyway easily detected. The only problem is with
+fonts where the slots are assigned to other characters than the ones
+specified in the encoding.
+
+For that reason, it is appropriate to assign two codingscheme strings
+to each encoding. The main codingscheme is for fonts were all slots
+(mandatory and ordinary alike) have been assigned according to the
+specification or have been left empty. The variant codingscheme is for
+fonts where some ordinary slots have been assigned other characters
+than the ones listed in the specification, but where the mandatory
+slots are still assigned according to the specification or are left
+empty. The font encoding specification should give the main
+codingscheme name, whereas the variant codingscheme name could be
+formed by adding \verb*| VARIANT| to the main codingscheme name.
+
+Technically the codingscheme is specified by setting the
+\texttt{codingscheme} string variable. This has the syntax
+\begin{quote}
+ |\setstr{codingscheme}|\marg{codingscheme name}
+\end{quote}
+e.g.
+\begin{quote}
+ |\setstr{codingscheme}{EXTENDED TEX FONT ENCODING - LATIN}|
+\end{quote}
+which is typeset as
+\begin{quote}
+ \textbf{Default} s(\texttt{codingscheme}) =
+ \verb*|EXTENDED TEX FONT ENCODING - LATIN|
+\end{quote}
+A codingscheme name may be at most 40 characters long and may not
+contain parentheses. If the entire \verb*| VARIANT| cannot be suffixed
+to a main name because the result becomes to long (as in the above
+example) then use the first 40 characters of the result.
+
+
+\subsection{Overall document structure}
+\label{Ssec:Structure}
+
+The overall structure of a font encoding specification should be
+roughly the following
+\begin{quote}
+ |\relax|\\
+ |\documentclass[twocolumn]{article}|\\
+ |\usepackage[specification]{fontdoc}|\\
+ \meta{preamble}\\
+ |\begin{document}|\\
+ \meta{title}\\
+ \meta{manifest}\\
+ |\encoding|\\
+ \meta{body}\\
+ |\endencoding|\\
+ \meta{discussion}\\
+ \meta{change history}\\
+ \meta{bibliography}\\
+ |\end{document}|
+\end{quote}
+The commands described in the preceding subsections must all go in
+the \meta{body} part of the document, as that is the only part of the
+file which actually gets processed as a data file. The part before
+|\encoding| is skipped and the part after |\endencoding| is never
+even input, so whatever appears there is only part of the \LaTeX\
+document. For the purposes of processing as a data file, the
+important markers in the file are the |\relax|, the |\endcoding|, and
+the |\endencoding| commands.
+
+The \meta{title} is the usual |\maketitle| (and the like) stuff. The
+person or persons who appear as author(s) are elsewhere in this paper
+described as the \emph{encoding proposers}. The \meta{title} should
+also give the date when the specification was last changed.
+
+The \meta{manifest} is an important, although usually pretty short,
+part of the specification. It is a piece of text which explains the
+purpose of the encoding (in particular what it can be used for) and
+the basic ideas (if any) which have been used in its construction. It
+is often best marked up as an abstract.
+
+The \meta{discussion} is the place for any longer comments on the
+encoding, such as analyses of different implementations, comparisons
+with other encodings, etc. This is also the place to explain any more
+general structures in the encoding, such as the arrow kit in the
+proposed \texttt{MS2} encoding~\cite{ClasenVieth}. In cases where the
+specification is mainly a formulation of what is already an
+established standard the \meta{discussion} is often rather short as
+the relevant discussion has already been published elsewhere, but
+it is anyway a service to the reader to include this information.
+References to the original documents should always be given.
+
+It might be convenient to include an FAQ section at the end of the
+discussion. This is particularly suited for explaining things where
+one has to look for a while and consult the references to find the
+relevant information.
+
+The \meta{change history} documents how the specification has changed
+over time. It is preferably detailed, as each detail in an encoding
+is important, but one should not be surprised if it is anyway rather
+short due to that there haven't been that many changes.
+
+The \meta{bibliography} is an important part of the specification. It
+should at the very least include all the sources which have been used
+in compiling the encoding specification, regardless of whether they
+are printed, available on the net, merely ``personal communication'',
+or something else. It is also a service to the reader to include in
+the bibliography some more general references for related matters.
+
+The \meta{preamble} is just a normal \LaTeX\ preamble and there are no
+restrictions on defining new commands in it, although use of such
+commands in the \meta{body} part is subject to the same restrictions
+as use of any general \LaTeX\ command. The preamble should however
+\emph{not} load any packages not part of the required suite of
+\LaTeX\ packages, as that may prevent users who do not have these
+packages from typesetting the specification. Likewise, the
+specification should \emph{not} require that some special font is
+available. Glyph examples for characters are usually better
+referenced via Unicode character charts than via special fonts.
+
+An exception to this rule about packages is that the specification
+must load the \package{fontdoc} package, as shown in the outline
+above, since that defines the |\setslot| etc.\ commands that should
+appear in the \meta{body}. This should not be a problem, as the
+\package{fontdoc} package can preferably be kept in the same directory
+as the collection of encoding specifications (see below). The
+\texttt{specification} option should be passed to the package to let it know
+that the file being processed is an encoding specification---otherwise
+|\Ligature| and |\ligature| will get the same formatting, for one. It
+is not necessary to use the \package{article} document class, and
+neither must it be passed the \texttt{twocolumn} option, but it is
+customary to do so. In principle any other document class within
+required \LaTeX\ will do just as well.
+
+If you absolutely think that using some non-required package
+significantly improves the specification, then try writing the code so
+that is loads the package only if it is available and provide some
+kind of fallback definition for sites where it is not. E.g.\ the
+\package{url} package could be loaded as
+\begin{verbatim}
+\IfFileExists{url.sty}{\usepackage{url}}{}
+\providecommand\url{\verb}
+\end{verbatim}
+The |\url| command defined by this is not equivalent to the command
+defined by the \package{url} package, but it can serve fairly well
+(with a couple of extra overfull lines as only ill effect) if its
+use is somewhat restricted.
+
+Finally, a technical restriction on the \meta{preamble}, \meta{title},
+and \meta{manifest} is that they must not contain any mismatched
+|\if|s (of any type) or |\fi|s, as \TeX\ conditionals will be used for
+skipping those parts of the file when it is processed as a data file.
+If the definition of some macro includes mismatched |\if|s or |\fi|s
+(this will probably occur only rarely) then include some extra code
+so that they do match.
+
+
+% All technical parts of the encoding specification (slot assignments,
+% fontdimens, etc.\@) have to be in the \meta{encoding commands} part.
+% The other parts are suitably used for longer commentry, such as the
+% mainfest (see below), revision history, and bibliography.
+%
+% When the file is being typeset as a \LaTeX\ document there is nothing
+% special going on. The |\encoding| and |\endencoding| commands may set
+% some internal variables, but otherwise they do very little. When the
+% file is being read by \package{fontinst}, things are quite different.
+% Everything between the initial |\relax| and |\encoding| is skipped,
+% and the file is not read further than to the |\endencoding|. Hence
+% the \meta{preamble}, \meta{\LaTeX\ text 1}, and \meta{\LaTeX\ text 2}
+% can contain pretty much anything (with a few exceptions) which is
+% legal in a \LaTeX\ document.
+
+
+\subsection{Encoding specification body syntax}
+
+The \meta{body} part of an encoding specification must comply to a
+much stricter syntax than the rest of the file. The \meta{body} is
+a sequence of \meta{encoding command}s, each of which should be one
+of the following:
+\begin{quote}
+ |\setslot|\marg{glyph name} \meta{slots commands} |\endsetslot|\\
+ |\nextslot|\marg{number}\\
+ |\skipslots|\marg{number}\\
+ |\setfontdimen|\marg{number}\marg{name}\\
+ |\setstr{codingscheme}|\marg{codingscheme name}\\
+ |\needsfontinstversion|\marg{version number}
+\end{quote}
+The |\needsfontinstversion| command is usually placed immediately
+after the |\encoding| command. The \meta{version number} must be at
+least |1.918| for many of the features described in this file to be
+available, and at least |1.928| if the |\charseq| command is used.
+
+The \meta{slot commands} are likewise a sequence of \meta{slot
+command}s, each of which should be one of the following:
+\begin{quote}
+ |\Unicode|\marg{code point}\marg{name}\\
+ |\charseq|\marg{\cs{Unicode} commands}\\
+ |\comment|\marg{text}\\
+ |\Ligature|\marg{ligtype}\marg{right}\marg{new}\\
+ |\ligature|\marg{ligtype}\marg{right}\marg{new}\\
+ |\oddligature|\marg{note}\marg{ligtype}\marg{right}\marg{new}\\
+ |\nextlarger|\marg{glyph name}\\
+ |\varchar| \meta{varchar commands} |\endvarchar|
+\end{quote}
+where \meta{varchar commands} similarly is a sequence of \meta{varchar
+command}s, each of which should be one of the following:
+\begin{quote}
+ |\varrep|\marg{glyph name}\\
+ |\vartop|\marg{glyph name}\\
+ |\varmid|\marg{glyph name}\\
+ |\varbot|\marg{glyph name}
+\end{quote}
+Finally, one can include any number of \meta{comment command}s between
+any two encoding, slot, or varchar commands. The comment commands are
+\begin{quote}
+ |\begincomment| \meta{\LaTeX\ text} |\endcomment|\\
+ |\label|\marg{reference label}
+\end{quote}
+The \meta{\LaTeX\ text} can be pretty much any \LaTeX\ code that can
+appear in conditional text. (|\begincomment| is either |\iffalse| or
+|\iftrue| depending on whether the encoding specification is
+processed as a data file or typeset as a \LaTeX\ document respectively.
+|\endcomment| is always |\fi|.) The |\label| command is just
+the normal \LaTeX\ |\label| command; when it is used in a \meta{slot
+commands} it references that particular slot (by number and glyph
+name).
+
+The full syntax of the \ETX\ format can be found in the
+\package{fontinst} manual~\cite{fontinst-man}, but font encoding
+specifications only need a subset of that.
+
+
+\subsection{Additional \package{fontdoc} features}
+
+There is an ``in comment paragraph'' form |\textunicode| of the
+|\Unicode| command. Both commands have the same syntax, but
+|\textunicode| is only allowed in ``comment'' contexts. A typical use
+of |\textunicode| is
+\begin{quote}
+ |\comment{An |\dots\\
+ \quad\dots| this is \textunicode{2012}{FIGURE DASH}; in |\dots\\
+ |}|
+\end{quote}
+which is typeset as
+\begin{quote}
+ An \dots\ this is \texttt{U+2012} (\textsc{figure dash}); in \dots
+\end{quote}
+
+The \package{fontdoc} package inputs a configuration file
+\texttt{fontdoc.cfg} if that exists. This can be used to pass
+additional options to the package. The only currently available
+options that this could be of interest for are the \texttt{hypertex}
+and \texttt{pdftex} options, which hyperlinks each \texttt{U+}\dots\
+generated by |\Unicode| or |\textunicode| (using Hyper\TeX\ or
+pdf\TeX\ conventions\footnote{One could just as well do the same
+thing using some other convention if a suitable definition of
+\cs{FD@codepoint} is included in \texttt{fontdoc.cfg}. See the
+\package{fontinst} sources~\cite{fontinst-pre} for more details.}
+respectively) to a corresponding glyph image on the Unicode consortium
+website. To use this feature one should put the line
+\begin{quote}
+ |\ExecuteOptions{hypertex}|
+\end{quote}
+or
+\begin{quote}
+ |\ExecuteOptions{pdftex}|
+\end{quote}
+in the \texttt{fontdoc.cfg} file. \emph{Please} do not include this
+option in the |\usepackage|\nolinebreak[1]|{fontdoc}| of an encoding
+specification file as that can be a severe annoyance for people whose
+\TeX\ program or DVI viewers do not support the necessary extensions.
+% Hyper\TeX\ |\special|s.
+
+
+\section{Font encoding ratification}
+
+This section describes a suggested ratification process for font
+encoding specifications. As there are fewer technical matters that
+impose restrictions on what it may look like, it is probably more
+subjective than the other parts of this paper.
+
+\medskip
+
+A specification in the process of being ratified can be in one of
+three different stages: \emph{draft}, \emph{beta}, or \emph{final}.
+Initially the specification is in the draft stage, during which it
+will be scrutinized and can be subject to major changes. A
+specification which is in the beta stage has got a formal approval
+but the encoding in question may still be subject to some minor
+changes if weighty arguments present themselves. Once the
+specification has reached the final stage, the encoding may not
+change at all.
+
+
+\subsection{Getting to the draft stage}
+
+The process of taking an encoding to the draft stage can be
+summarized in the following steps. Being in the draft stage doesn't
+really say anything about whether the encoding is in any way correct
+or useful, except in that some people (the encoding proposers)
+believe it is and are willing to spend some time on ratifying it.
+
+\paragraph{Write an encoding specification} The first step is to
+write a specification for the font encoding in question. This
+document must not only technically describe the encoding but also
+explain what the encoding is for and why it was created. See
+Subsection~\ref{Ssec:Structure} for details on how the document is
+preferably organised.
+
+\paragraph{Request an encoding name} The second step is to write to
+the \LaTeX3 project and request a \LaTeX\ encoding name for the
+encoding. This mail should be in the form of a \LaTeX\ bug report, it
+must be sent to
+\begin{quote}
+ \href{mailto:latex-bugs@latex-project.org}%
+ {\texttt{latex-bugs@latex-project.org}},
+\end{quote}
+and it must include the encoding specification file. Suggestions for
+an encoding name are appreciated, but not necessarily accepted.
+The purpose of this mail is \emph{not} to get an approval of the
+encoding, but only to have a reasonable name assigned to it.
+
+\paragraph{Upload the specification to CTAN} The third step is make
+the encoding specification publicly available by uploading it to
+CTAN. Encoding specifications are collected in the
+\begin{quote}
+ \ctanref{info/encodings}{\texttt{info/encodings}}
+\end{quote}
+directory (which should also contain the most recent version of this
+paper). The name of the uploaded file should be
+\meta{encoding name}\texttt{draft.etx}. The reason for this naming is
+that it must be clear that the specification has not yet been ratified.
+
+\paragraph{Announce the encoding} When the upload has been confirmed,
+it is time to announce the encoding by posting a message about it to
+the relevant forums. Most important is the \texttt{tex-fonts} mailing
+list, since that is where new encodings should be debated. Messages
+should also be posted to the \texttt{comp.text.tex} newsgroup and any
+forums related to the intended use of the encoding: an encoding for
+Sanskrit should be announced on Indian \TeX\ users forums, an
+encoding for printing chess positions should be announced on some
+chess-with-\TeX\ user forum, etc.; in the extent that such forums exist.
+
+The full address of the \texttt{tex-fonts} mailing list is
+\begin{quote}
+ \texttt{tex-fonts@math.utah.edu}
+\end{quote}
+This list rejects postings from non-members, so you need to subscribe
+to it before you can post your announcement. This is done by sending
+a `subscribe me' mail to
+\begin{quote}
+ \href{mailto:tex-fonts-request@math.utah.edu}
+ {\texttt{tex-fonts-request@math.utah.edu}}
+\end{quote}
+The list archives can be found at
+\begin{quote}
+ \href{http://www.math.utah.edu/mailman/listinfo/tex-fonts}
+ {\textsc{http:}/\slash \texttt{www.math.utah.edu}\slash
+ \texttt{mailman}\slash \texttt{listinfo}\slash
+ \texttt{tex-fonts}}
+\end{quote}
+A tip is to read through the messages from a couple of months
+before you write up your announcement, as that should help you get
+acquainted with the normal style on the list. Please do not send
+messages encoded in markup languages (notably, \textsmaller{HTML},
+\textsmaller{XML}, and word processor formats) to the list.
+
+\paragraph{Experimental encodings} There is a point in going through
+the above procedure even for experimental encodings, i.e., encodings
+whose names start with an \texttt{E}. Of course there is no idea in
+ratifying a specification of an experimental encoding, as it is very
+likely to frequently change, but having a proper name assigned to the
+encoding and uploading its specification to CTAN makes it much simpler
+for other people to learn about and make references to the encoding.
+
+
+\subsection{From draft to beta stage}
+
+The main difference between a draft and beta stage specification
+respectively is that beta stage specifications have been scrutinized
+by other people and found to be free of errors. The practical
+implementation of this is that a debate is held (in the normal
+anarchical manner of mailing list debates) on the \texttt{tex-fonts}
+mailing list. In particular the following aspects of the
+specification should be checked:
+\begin{enumerate}
+ \item \emph{Is the encoding technically correct?}
+ There are many factors which affect what \TeX\ does and it is
+ easy to overlook some. (The \cs{lccode}s seem to be particularly
+ troublesome, in this respect.) Sometimes fonts simply cannot work
+ as an encoding specifies they should and it is important that
+ such defects in the encoding are discovered on an early stage.
+ \item \emph{Are there any errors in the specification?}
+ A font encoding specification is largely a table and typos are
+ easy to make. Proof-reading may be boring, but it is very, very
+ important.
+ \item \emph{Is the specification sufficiently precise?}
+ Are there any omissions, ambiguities, inaccuracies, or completely
+ irrelevant material in the specification? There shouldn't be.
+\end{enumerate}
+During the debate, the encoding proposers should hear what other
+people have to say about the encoding draft, revise it accordingly
+when some flaw is pointed out, and upload the revised version. This
+cycle may well have to be repeated several times before everyone's
+content. It is worth pointing out that in practice the debate should
+turn out to be more of a collective authoring of the specification
+than a defense of its validity. There is no point in going into it
+expecting the worst.
+
+Unfortunately, it might happen that there never is a complete agreement
+on an encoding specification---depending on what side on takes, either
+the encoding proposers refuse to correct obvious flaws in it, or someone
+on the list insists that there is a flaw although there is obviously
+not---but hopefully that will never happen. If it anyway does happen
+then the person objecting should send a mail whose subject contains the
+phrase "formal protest against XXX encoding" (with XXX replaced by
+whatever the encoding is called) to the list. Then it will be up to
+the powers that be to decide on the fate of the encoding (see below).
+
+\paragraph{Summarize the debate} When the debate on the encoding is
+over---e.g.\ a month after anyone last posted anything new on the
+subject---then the encoding proposers should summarize the debate on
+the encoding specification draft and post this summary as a follow-up
+on the original mail to \texttt{latex-bugs}. This summary should list
+the changes that have been made to the encoding, what suggestions there
+were for changes which have not been included, and whether there were
+any formal protests against the encoding. The summary should also explain
+what the proposers want to have be done with the encoding. In the
+usual case this is having it advanced to beta stage, but the proposers
+might alternatively at this point have reached the conclusion that the
+encoding wasn't such a good idea to start with and therefore withdraw
+it, possibly to come again later with a different proposal.
+
+In response to this summary, the \LaTeX-project people may do one of
+three things:
+\begin{itemize}
+ \item
+ If the proposers wants the encoding specification advanced and
+ there are no formal protests against this, then the encoding
+ should be advanced to the beta stage. The \LaTeX-project
+ people do this by adding the encoding to the list of approved
+ (beta or final stage) encodings that they [presumably] maintain.
+ \item
+ If the proposers want to withdraw the encoding specification
+ then the name assigned to it should once again be made available
+ for use for other encodings.
+ \item
+ If the proposers want the encoding specification advanced but
+ there is some formal protest against this, then the entire matter
+ should be handed over to some suitable authority, as a suggestion
+ some technical TUG committee, for resolution.
+\end{itemize}
+
+
+\paragraph{Update the specification on CTAN} When the specification
+has reached the beta stage, its file on CTAN should be updated to say
+so. In particular the file name should be changed from \meta{encoding
+name}\texttt{draft.etx} to \meta{encoding name}\texttt{spec.etx}.
+
+
+\paragraph{Modifying beta stage encodings} If a beta stage encoding is
+modified then the revised specification should go through the above
+procedure of ratification again before it can replace the previous
+\meta{encoding name}\texttt{spec.etx} file on CTAN. The revised
+version should thus initially be uploaded as \meta{encoding
+name}\texttt{draft.etx}, reannounced, and redebated. It can however
+be expected that such debates will not be as extensive as the
+original debates.
+
+
+\subsection{From beta stage to final stage}
+
+The requirements for going from beta stage to final stage are more
+about showing that the encoding has reached a certain maturity than
+about demonstrating any technical merits of it. The main difference in
+usefulness between a beta stage encoding and a final stage encoding is
+that the latter can be considered safe for archival purposes, whereas
+one should have certain reservations against such use of beta stage
+encodings.
+
+It seems reasonable that the following conditions should have to be
+fulfilled before a beta stage encoding can be made a final stage
+encoding:
+\begin{itemize}
+ \item At least one year must have passed since the last change was
+ made to the specification.
+ \item At least two people other than the proposer must have
+ succeeded in implemented the encoding in a font.
+\end{itemize}
+It is quite possible that some condition should be added or some of
+the above conditions reformulated.
+
+
+% References updated 2004/08/07.
+\begin{thebibliography}{???}
+\bibitem{ATN5013}
+ Adobe Systems Incorporated:
+ \textit{Adobe Standard Cyrillic Font Specification},
+ Adobe Technical Note \#5013, 1998;
+ \href{http://partners.adobe.com/asn/developer/pdfs/tn/%
+ 5013.Cyrillic_Font_Spec.pdf}{\textsc{http}:/\slash
+ \texttt{partners.adobe.com}\slash \texttt{asn}\slash
+ \texttt{developer}\slash \texttt{pdfs}\slash \texttt{tn}\slash
+ \texttt{5013.Cyrillic\_Font\_Spec.pdf}}.
+\bibitem{AGL}
+ Adobe Systems Incorporated: \textit{Adobe Glyph List},
+ text file, 1998,
+ \href{http://partners.adobe.com/asn/developer/type/glyphlist.txt}
+ {\textsc{http}:/\slash \texttt{partners.adobe.com}\slash
+ \texttt{asn}\slash \texttt{developer}\slash \texttt{type}\slash
+ \texttt{glyphlist.txt}}.
+\bibitem{unicodesign}
+ Adobe Systems Incorporated:
+ \textit{Adobe Solutions Network: Unicode and Glyph Names},
+ web page, 1998,
+ \href{http://partners.adobe.com/asn/developer/type/unicodegn.html}
+ {\textsc{http}:/\slash \texttt{partners.adobe.com}\slash
+ \texttt{asn}\slash \texttt{developer}\slash \texttt{type}\slash
+ \texttt{unicodegn.html}}.
+\bibitem{ClasenVieth}
+ Matthias Clasen and Ulrik Vieth:
+ \textit{Towards a new Math Font Encoding for (La)TeX},
+ March 1998, presented at EuroTeX'98;
+ \href{http://tug.org/twg/mfg/papers/current/mfg-euro-all.ps.gz}
+ {\textsc{http}:/\slash \texttt{tug.org}\slash \texttt{twg}\slash
+ \texttt{mfg}\slash \texttt{papers}\slash \texttt{current}\slash
+ \texttt{mfg-euro-all.ps.gz}}.
+\bibitem{fontinst-man}
+ Alan Jeffrey, Rowland McDonnell, Ulrik Vieth, and Lars Hellstr\"om:
+ \textit{\package{fontinst}---font installation software for \TeX}
+ (manual), 2004,
+ \ctanref{fonts/utilities/fontinst/doc/fontinst.tex}{%
+ \textsc{ctan}:\discretionary{}{}{\thinspace}%
+ \texttt{fonts}\slash \texttt{utilities}\slash
+ \texttt{fontinst}\slash \texttt{doc}\slash \texttt{fontinst.tex}}.
+% \bibitem{fontinst}
+% Alan Jeffrey, Sebastian Rahtz, and Ulrik Vieth:
+% \textit{The \package{fontinst} utility}, documented source code,
+% v\,1.801,
+% \ctanref{fonts/utilities/fontinst/source}{%
+% \textsc{ctan}:\discretionary{}{}{\thinspace}%
+% \texttt{fonts}\slash \texttt{utilities}\slash
+% \texttt{fontinst}\slash \texttt{source}/}.
+\bibitem{fontinst-pre}
+ Alan Jeffrey, Sebastian Rahtz, Ulrik Vieth, and Lars Hellstr\"om:
+ \textit{The \package{fontinst} utility}, documented source code,
+ v\,1.9xx,
+ \ctanref{fonts/utilities/fontinst/source}{%
+ \textsc{ctan}:\discretionary{}{}{\thinspace}%
+ \texttt{fonts}\slash \texttt{utilities}\slash
+ \texttt{fontinst}\slash \texttt{source}/}.
+\bibitem{TeXbook}
+ Donald E.\ Knuth, Duane Bibby (illustrations): \textit{The \TeX book},
+ Ad\-di\-son--Wes\-ley, 1991;
+ volume A of \textit{Computers and typesetting}.
+\bibitem{LaTeXCompanion}
+ Frank Mittelbach and Michel Goossens, with Johannes Braams,
+ David Carlisle, and Chris Rowley:
+ \textit{The \LaTeX\ Companion} (second edition),
+ Ad\-di\-son--Wes\-ley, 2004; ISBN~0-201-36299-6.
+\bibitem{Omega-doc}
+ John Plaice and Yannis Haralambous:
+ \textit{Draft documentation for the Omega system},
+ version~1.12, 1999;
+ \href{http://omega.cse.unsw.edu.au:8080/doc-1.12.ps}{%
+ \textsc{http:}/\slash \texttt{omega.cse.unsw.edu.au:8080}\slash
+ \texttt{doc-1.12.ps}}.
+% \textsc{ctan}:\discretionary{}{}{\thinspace}%
+% \texttt{systems}\slash \texttt{omega}\slash
+% \texttt{omega-doc-1.8.tar.gz}.
+\bibitem{Vieth2001}
+ Ulrik Vieth:
+ \textit{Math typesetting in \TeX: The~good, the~bad, the~ugly},
+ to appear in the proceedings of Euro\TeX\ 2001;
+ \href{http://www.ntg.nl/eurotex/vieth.pdf}{%
+ \textsc{http}:/\slash \texttt{www.ntg.nl}\slash
+ \texttt{eurotex}\slash \texttt{vieth.pdf}}.
+\end{thebibliography}
+
+
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/encspecs/omxdraft.etx b/Master/texmf-dist/doc/fonts/fontinst/base/encspecs/omxdraft.etx
new file mode 100644
index 00000000000..efccabde857
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/fontinst/base/encspecs/omxdraft.etx
@@ -0,0 +1,985 @@
+\documentclass[twocolumn]{article}
+\usepackage[specification]{fontdoc}[2001/06/01]
+
+% \usepackage[T1]{fontenc}
+\DeclareTextCommandDefault{\textvisiblespace}{%
+ \mbox{\kern.06em\vrule height.3ex}%
+ \vbox{\hrule width.3em}%
+ \hbox{\vrule height.3ex\kern.06em}}
+
+\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}}
+
+\showbranches
+
+\begin{document}
+
+\title{\texttt{OMX} encoding draft specification}
+\author{Lars Hellstr\"om}
+\date{2001/10/20}
+\maketitle
+
+\begin{abstract}
+ The \TeX\ math extensions (\texttt{OMX}) encoding is a container for
+ most of the ``growing'' characters in the standard math set-up, but
+ that is pretty much the extent of it. Some of the characters occur
+ in ``normal size'' in other encodings; in these cases it is usually
+ a single math command that usually make use of characters in both
+ encodings.
+\end{abstract}
+
+
+\encoding
+
+\begincomment
+\section{Mandatory characters}
+
+\subsection{Delimiters}
+\endcomment
+
+\nextslot{0}
+\setslot{parenleftbig}
+ \Unicode{0028}{LEFT PARENTHESIS}
+ \nextlarger{parenleftBig}
+\endsetslot
+
+\setslot{parenrightbig}
+ \Unicode{0029}{RIGHT PARENTHESIS}
+ \nextlarger{parenrightBig}
+\endsetslot
+
+\setslot{bracketleftbig}
+ \Unicode{005B}{LEFT SQUARE BRACKET}
+ \nextlarger{bracketleftBig}
+\endsetslot
+
+\setslot{bracketrightbig}
+ \Unicode{005D}{RIGHT SQUARE BRACKET}
+ \nextlarger{bracketrightBig}
+\endsetslot
+
+\setslot{floorleftbig}
+ \Unicode{230A}{LEFT FLOOR}
+ \nextlarger{floorleftBig}
+\endsetslot
+
+\setslot{floorrightbig}
+ \Unicode{230B}{RIGHT FLOOR}
+ \nextlarger{floorrightBig}
+\endsetslot
+
+\setslot{ceilingleftbig}
+ \Unicode{2308}{LEFT CEILING}
+ \nextlarger{ceilingleftBig}
+\endsetslot
+
+\setslot{ceilingrightbig}
+ \Unicode{2309}{RIGHT CEILING}
+ \nextlarger{ceilingrightBig}
+\endsetslot
+
+\setslot{braceleftbig}
+ \Unicode{007B}{LEFT CURLY BRACKET}
+ \nextlarger{braceleftBig}
+\endsetslot
+
+\setslot{bracerightbig}
+ \Unicode{007D}{RIGHT CURLY BRACKET}
+ \nextlarger{bracerightBig}
+\endsetslot
+
+\setslot{angleleftbig}
+ \Unicode{2329}{LEFT-POINTING ANGLE BRACKET}
+ \nextlarger{angleleftBig}
+\endsetslot
+
+\setslot{anglerightbig}
+ \Unicode{232A}{RIGHT-POINTING ANGLE BRACKET}
+ \nextlarger{anglerightBig}
+\endsetslot
+
+\setslot{barex}
+ \Unicode{007C}{VERTICAL LINE}
+ \comment{This is used by the \cs{vert} command. When not accessed
+ as a delimiter, this character may be much shorter than one
+ would expect.}
+ \varchar
+ \varrep{barex}
+ \endvarchar
+\endsetslot
+
+\setslot{bardblex}
+ \Unicode{2016}{DOUBLE VERTICAL LINE}
+ \comment{This is used by the \cs{Vert} command. When not accessed
+ as a delimiter, this character may be much shorter than one
+ would expect.}
+ \varchar
+ \varrep{bardblex}
+ \endvarchar
+\endsetslot
+
+\setslot{slashbig}
+ \Unicode{2215}{DIVISION SLASH}
+ \comment{Although this character is normally accessed via \TeX's
+ growing delimiter mechanism, it is not used as such in formulae,
+ but as a large division slash. Since the use is unambigously for
+ division and the like, it would be inaccurate to identify this
+ character with \textunicode{002F}{SOLIDUS}.}
+ \nextlarger{slashBig}
+\endsetslot
+
+\setslot{backslashbig}
+ \Unicode{005C}{REVERSE SOLIDUS}
+ \comment{This is \TeX's \cs{backslash} (use for ``double coset''),
+ not \cs{setminus}, and hence it is not
+ \textunicode{2216}{SET MINUS}.}
+ \nextlarger{backslashBig}
+\endsetslot
+
+\nextslot{62}
+\setslot{braceex}
+ \Unicode{007C}{VERTICAL LINE}
+ \comment{This is used by the \cs{bracevert} command.}
+ \label{braceex}
+ \varchar
+ \varrep{braceex}
+ \endvarchar
+ \comment{This slot contains the repeatable part of a extensible
+ brace delimiter. In the standard set-up, the extensible recipes of
+ slots~\ref{bracelefttp}, \ref{bracerighttp}, \ref{braceleftbt},
+ \ref{bracerightbt}, \ref{parenleftbt}, and \ref{parenrightbt} all
+ make use of this slot.}
+\endsetslot
+
+\nextslot{"42}
+\setslot{parenleftex}
+ \Unicode{007C}{VERTICAL LINE}
+ \comment{As astonishing as it may seem, there is no command which
+ accesses this slot. The glyph is similar to that in
+ slot~\ref{braceex}, but shifted to the left.}
+ \varchar
+ \varrep{parenleftex}
+ \endvarchar
+\endsetslot
+
+\setslot{parenrightex}
+ \Unicode{007C}{VERTICAL LINE}
+ \comment{As astonishing as it may seem, there is no command which
+ accesses this slot. The glyph is similar to that in
+ slot~\ref{braceex}, but shifted to the right.}
+ \varchar
+ \varrep{parenrightex}
+ \endvarchar
+\endsetslot
+
+\nextslot{"7A}
+\setslot{bracehtipdownleft}
+ \comment{This is \cs{braceld}, a tip (pointing left, bending down)
+ used to build over- and underbraces.}
+\endsetslot
+
+\setslot{bracehtipdownright}
+ \comment{This is \cs{bracerd}, a tip (pointing right, bending down)
+ used to build over- and underbraces.}
+\endsetslot
+
+\setslot{bracehtipupleft}
+ \comment{This is \cs{bracelu}, a tip (pointing left, bending up)
+ used to build over- and underbraces.}
+\endsetslot
+
+\setslot{bracehtipupright}
+ \comment{This is \cs{braceru}, a tip (pointing right, bending up)
+ used to build over- and underbraces.}
+\endsetslot
+
+
+
+\begincomment
+\subsection{Text style operators}
+
+With the exception of the integrals, all the following characters
+should be \textsc{n-ary \dots}, but some cases there are no such
+variants defined in Unicode.
+\endcomment
+
+\nextslot{"46}
+\setslot{unionsqtext}
+ \Unicode{2294}{SQUARE CUP}
+ \nextlarger{unionsqdisplay}
+\endsetslot
+
+\skipslots{1}
+\setslot{contintegraltext}
+ \Unicode{222E}{CONTOUR INTEGRAL}
+ \nextlarger{contintegraldisplay}
+\endsetslot
+
+\skipslots{1}
+\setslot{circledottext}
+ \Unicode{2299}{CIRCLED DOT OPERATOR}
+ \nextlarger{circledotdisplay}
+\endsetslot
+
+\skipslots{1}
+\setslot{circleplustext}
+ \Unicode{2295}{CIRCLED PLUS}
+ \nextlarger{circleplusdisplay}
+\endsetslot
+
+\skipslots{1}
+\setslot{circlemultiplytext}
+ \Unicode{2297}{CIRCLED TIMES}
+ \nextlarger{circlemultiplydisplay}
+\endsetslot
+
+\skipslots{1}
+\setslot{summationtext}
+ \Unicode{2211}{N-ARY SUMMATION}
+ \nextlarger{summationdisplay}
+\endsetslot
+
+\setslot{producttext}
+ \Unicode{220F}{N-ARY PRODUCT}
+ \nextlarger{productdisplay}
+\endsetslot
+
+\setslot{integraltext}
+ \Unicode{222B}{INTEGRAL}
+ \nextlarger{integraldisplay}
+\endsetslot
+
+\setslot{uniontext}
+ \Unicode{22C3}{N-ARY UNION}
+ \nextlarger{uniondisplay}
+\endsetslot
+
+\setslot{intersectiontext}
+ \Unicode{22C2}{N-ARY INTERSECTION}
+ \nextlarger{intersectiondisplay}
+\endsetslot
+
+\setslot{unionmultitext}
+ \Unicode{228E}{MULTISET UNION}
+ \nextlarger{unionmultidisplay}
+\endsetslot
+
+\setslot{logicalandtext}
+ \Unicode{22C0}{N-ARY LOGICAL AND}
+ \nextlarger{logicalanddisplay}
+\endsetslot
+
+\setslot{logicalortext}
+ \Unicode{22C1}{N-ARY LOGICAL OR}
+ \nextlarger{logicalordisplay}
+\endsetslot
+
+\skipslots{8}
+\setslot{coproducttext}
+ \Unicode{2210}{N-ARY COPRODUCT}
+ \nextlarger{coproductdisplay}
+\endsetslot
+
+
+
+\begincomment
+\subsection{Accents, arrows, and the radical}
+\endcomment
+
+\nextslot{"62}
+\setslot{hatwide}
+ \Unicode{0302}{COMBINING CIRCUMFLEX ACCENT}
+ \nextlarger{hatwider}
+\endsetslot
+
+\skipslots{2}
+
+\setslot{tildewide}
+ \Unicode{0303}{COMBINING TILDE}
+ \nextlarger{tildewider}
+\endsetslot
+
+\nextslot{"70}
+\setslot{radicalbig}
+ \Unicode{221A}{SQUARE ROOT}
+ \nextlarger{radicalBig}
+\endsetslot
+
+\nextslot{"78}
+\setslot{arrowtp}
+ \Unicode{2191}{UPWARDS ARROW}
+ \varchar
+ \vartop{arrowtp}
+ \varrep{arrowvertex}
+ \endvarchar
+\endsetslot
+
+\setslot{arrowbt}
+ \Unicode{2193}{DOWNWARDS ARROW}
+ \varchar
+ \varrep{arrowvertex}
+ \varbot{arrowbt}
+ \endvarchar
+\endsetslot
+
+\nextslot{"7E}
+\setslot{arrowdbltp}
+ \Unicode{21D1}{UPWARDS DOUBLE ARROW}
+ \varchar
+ \vartop{arrowdbltp}
+ \varrep{arrowdblvertex}
+ \endvarchar
+\endsetslot
+
+\setslot{arrowdblbt}
+ \Unicode{21D3}{DOWNWARDS DOUBLE ARROW}
+ \varchar
+ \varrep{arrowdblvertex}
+ \varbot{arrowdblbt}
+ \endvarchar
+\endsetslot
+
+
+
+
+
+
+\begincomment
+\section{Semimandatory characters}
+\endcomment
+
+\nextslot{"3A}
+\setslot{braceleftbt}
+ \comment{This is the \cs{lgroup} delimiter, which looks like a
+ \textunicode{007B}{LEFT CURLY BRACKET} with flat middle section.
+ There does not seem to be such a character in Unicode, but a
+ close approximation would be a narrowed
+ \textunicode{3014}{LEFT TORTOISE SHELL BRACKET}.}
+ \label{braceleftbt}
+ \varchar
+ \vartop{bracelefttp}
+ \varrep{braceex}
+ \varbot{braceleftbt}
+ \endvarchar
+ \comment{The slot contains the curved bottom of a
+ \textunicode{007B}{LEFT CURLY BRACKET}.}
+\endsetslot
+
+\setslot{bracerightbt}
+ \comment{This is the \cs{rgroup} delimiter, which looks like a
+ \textunicode{007D}{RIGHT CURLY BRACKET} with flat middle section.
+ There does not seem to be such a character in Unicode, but a
+ close approximation would be a narrowed
+ \textunicode{3015}{RIGHT TORTOISE SHELL BRACKET}.}
+ \label{bracerightbt}
+ \varchar
+ \vartop{bracerighttp}
+ \varrep{braceex}
+ \varbot{bracerightbt}
+ \endvarchar
+ \comment{The slot contains the curved bottom of a
+ \textunicode{007D}{RIGHT CURLY BRACKET}.}
+\endsetslot
+
+\setslot{braceleftmid}
+ \Unicode{007C}{VERTICAL LINE}
+ \comment{This is used by the \cs{arrowvert} command.}
+ \varchar
+ \varrep{arrowvertex}
+ \endvarchar
+ \comment{The slot contains the middle part of a
+ \textunicode{007B}{LEFT CURLY BRACKET}.}
+\endsetslot
+
+\setslot{bracerightmid}
+ \Unicode{2016}{DOUBLE VERTICAL LINE}
+ \comment{This is used by the \cs{Arrowvert} command.}
+ \varchar
+ \varrep{arrowdblvertex}
+ \endvarchar
+ \comment{The slot contains the middle part of a
+ \textunicode{007D}{RIGHT CURLY BRACKET}.}
+\endsetslot
+
+\skipslots{1}
+
+\setslot{arrowvertex}
+ \Unicode{2195}{UP DOWN ARROW}
+ \varchar
+ \vartop{arrowtp}
+ \varrep{arrowvertex}
+ \varbot{arrowbt}
+ \endvarchar
+ \comment{This slot contains the repeatable middle part of a vertical
+ arrow.}
+\endsetslot
+
+\setslot{parenleftbt}
+ \label{parenleftbt}
+ \comment{This is the \cs{lmoustache} delimiter, whose top half is
+ like \cs{lgroup} and whose bottom half is like \cs{rgroup}.}
+ \varchar
+ \vartop{bracelefttp}
+ \varrep{braceex}
+ \varbot{bracerightbt}
+ \endvarchar
+ \comment{This slot contains the curved bottom of a
+ \textunicode{0028}{LEFT PARENTHESIS}.}
+\endsetslot
+
+\setslot{parenrightbt}
+ \label{parenrightbt}
+ \comment{This is the \cs{rmoustache} delimiter, whose top half is
+ like \cs{rgroup} and whose bottom half is like \cs{lgroup}.}
+ \varchar
+ \vartop{bracerighttp}
+ \varrep{braceex}
+ \varbot{braceleftbt}
+ \endvarchar
+ \comment{This slot contains the curved bottom of a
+ \textunicode{0029}{RIGHT PARENTHESIS}.}
+\endsetslot
+
+\nextslot{"77}
+\setslot{arrowdblvertex}
+ \Unicode{21D5}{UP DOWN DOUBLE ARROW}
+ \varchar
+ \vartop{arrowdbltp}
+ \varbot{arrowdblbt}
+ \varrep{arrowdblvertex}
+ \endvarchar
+ \comment{This slot contains the repeatable middle part of a vertical
+ double arrow.}
+\endsetslot
+
+
+
+
+
+\begincomment
+\section{Ordinary characters}
+\endcomment
+
+
+\begincomment
+\subsection{\texttt{Big} size delimiters}
+\endcomment
+
+\nextslot{16}
+\setslot{parenleftBig}
+ \Unicode{0028}{LEFT PARENTHESIS}
+ \nextlarger{parenleftbigg}
+\endsetslot
+
+\setslot{parenrightBig}
+ \Unicode{0029}{RIGHT PARENTHESIS}
+ \nextlarger{parenrightbigg}
+\endsetslot
+
+\nextslot{46}
+\setslot{slashBig}
+ \Unicode{2215}{DIVISION SLASH}
+ \nextlarger{slashbigg}
+\endsetslot
+
+\setslot{backslashBig}
+ \Unicode{005C}{REVERSE SOLIDUS}
+ \nextlarger{backslashbigg}
+\endsetslot
+
+\nextslot{"44}
+\setslot{angleleftBig}
+ \Unicode{2329}{LEFT-POINTING ANGLE BRACKET}
+ \nextlarger{angleleftbigg}
+\endsetslot
+
+\setslot{anglerightBig}
+ \Unicode{232A}{RIGHT-POINTING ANGLE BRACKET}
+ \nextlarger{anglerightbigg}
+\endsetslot
+
+\nextslot{"68}
+\setslot{bracketleftBig}
+ \Unicode{005B}{LEFT SQUARE BRACKET}
+ \nextlarger{bracketleftbigg}
+\endsetslot
+
+\setslot{bracketrightBig}
+ \Unicode{005D}{RIGHT SQUARE BRACKET}
+ \nextlarger{bracketrightbigg}
+\endsetslot
+
+\setslot{floorleftBig}
+ \Unicode{230A}{LEFT FLOOR}
+ \nextlarger{floorleftbigg}
+\endsetslot
+
+\setslot{floorrightBig}
+ \Unicode{230B}{RIGHT FLOOR}
+ \nextlarger{floorrightbigg}
+\endsetslot
+
+\setslot{ceilingleftBig}
+ \Unicode{2308}{LEFT CEILING}
+ \nextlarger{ceilingleftbigg}
+\endsetslot
+
+\setslot{ceilingrightBig}
+ \Unicode{2309}{RIGHT CEILING}
+ \nextlarger{ceilingrightbigg}
+\endsetslot
+
+\setslot{braceleftBig}
+ \Unicode{007B}{LEFT CURLY BRACKET}
+ \nextlarger{braceleftbigg}
+\endsetslot
+
+\setslot{bracerightBig}
+ \Unicode{007D}{RIGHT CURLY BRACKET}
+ \nextlarger{bracerightbigg}
+\endsetslot
+
+
+
+
+
+\begincomment
+\subsection{\texttt{bigg} size delimiters}
+\endcomment
+
+\nextslot{18}
+\setslot{parenleftbigg}
+ \Unicode{0028}{LEFT PARENTHESIS}
+ \nextlarger{parenleftBigg}
+\endsetslot
+
+\setslot{parenrightbigg}
+ \Unicode{0029}{RIGHT PARENTHESIS}
+ \nextlarger{parenrightBigg}
+\endsetslot
+
+\setslot{bracketleftbigg}
+ \Unicode{005B}{LEFT SQUARE BRACKET}
+ \nextlarger{bracketleftBigg}
+\endsetslot
+
+\setslot{bracketrightbigg}
+ \Unicode{005D}{RIGHT SQUARE BRACKET}
+ \nextlarger{bracketrightBigg}
+\endsetslot
+
+\setslot{floorleftbigg}
+ \Unicode{230A}{LEFT FLOOR}
+ \nextlarger{floorleftBigg}
+\endsetslot
+
+\setslot{floorrightbigg}
+ \Unicode{230B}{RIGHT FLOOR}
+ \nextlarger{floorrightBigg}
+\endsetslot
+
+\setslot{ceilingleftbigg}
+ \Unicode{2308}{LEFT CEILING}
+ \nextlarger{ceilingleftBigg}
+\endsetslot
+
+\setslot{ceilingrightbigg}
+ \Unicode{2309}{RIGHT CEILING}
+ \nextlarger{ceilingrightBigg}
+\endsetslot
+
+\setslot{braceleftbigg}
+ \Unicode{007B}{LEFT CURLY BRACKET}
+ \nextlarger{braceleftBigg}
+\endsetslot
+
+\setslot{bracerightbigg}
+ \Unicode{007D}{RIGHT CURLY BRACKET}
+ \nextlarger{bracerightBigg}
+\endsetslot
+
+\setslot{angleleftbigg}
+ \Unicode{2329}{LEFT-POINTING ANGLE BRACKET}
+ \nextlarger{angleleftBigg}
+\endsetslot
+
+\setslot{anglerightbigg}
+ \Unicode{232A}{RIGHT-POINTING ANGLE BRACKET}
+ \nextlarger{anglerightBigg}
+\endsetslot
+
+\setslot{slashbigg}
+ \Unicode{2215}{DIVISION SLASH}
+ \nextlarger{slashBigg}
+\endsetslot
+
+\setslot{backslashbigg}
+ \Unicode{005C}{REVERSE SOLIDUS}
+ \nextlarger{backslashBigg}
+\endsetslot
+
+
+
+\begincomment
+\subsection{\texttt{Bigg} size delimiters}
+\endcomment
+
+\nextslot{32}
+\setslot{parenleftBigg}
+ \Unicode{0028}{LEFT PARENTHESIS}
+ \nextlarger{parenlefttp}
+\endsetslot
+
+\setslot{parenrightBigg}
+ \Unicode{0029}{RIGHT PARENTHESIS}
+ \nextlarger{parenrighttp}
+\endsetslot
+
+\setslot{bracketleftBigg}
+ \Unicode{005B}{LEFT SQUARE BRACKET}
+ \nextlarger{bracketlefttp}
+\endsetslot
+
+\setslot{bracketrightBigg}
+ \Unicode{005D}{RIGHT SQUARE BRACKET}
+ \nextlarger{bracketrighttp}
+\endsetslot
+
+\setslot{floorleftBigg}
+ \Unicode{230A}{LEFT FLOOR}
+ \nextlarger{bracketleftbt}
+\endsetslot
+
+\setslot{floorrightBigg}
+ \Unicode{230B}{RIGHT FLOOR}
+ \nextlarger{bracketrightbt}
+\endsetslot
+
+\setslot{ceilingleftBigg}
+ \Unicode{2308}{LEFT CEILING}
+ \nextlarger{bracketleftex}
+\endsetslot
+
+\setslot{ceilingrightBigg}
+ \Unicode{2309}{RIGHT CEILING}
+ \nextlarger{bracketrightex}
+\endsetslot
+
+\setslot{braceleftBigg}
+ \Unicode{007B}{LEFT CURLY BRACKET}
+ \nextlarger{bracelefttp}
+\endsetslot
+
+\setslot{bracerightBigg}
+ \Unicode{007D}{RIGHT CURLY BRACKET}
+ \nextlarger{bracerighttp}
+\endsetslot
+
+\setslot{angleleftBigg}
+ \Unicode{2329}{LEFT-POINTING ANGLE BRACKET}
+\endsetslot
+
+\setslot{anglerightBigg}
+ \Unicode{232A}{RIGHT-POINTING ANGLE BRACKET}
+\endsetslot
+
+\setslot{slashBigg}
+ \Unicode{2215}{DIVISION SLASH}
+\endsetslot
+
+\setslot{backslashBigg}
+ \Unicode{005C}{REVERSE SOLIDUS}
+\endsetslot
+
+
+
+\begincomment
+\subsection{Extensible delimiters}
+\endcomment
+
+\nextslot{48}
+\setslot{parenlefttp}
+ \comment{This slot contains the curved top of a
+ \textunicode{0028}{LEFT PARENTHESIS}.}
+ \varchar
+ \vartop{parenlefttp}
+ \varrep{parenleftex}
+ \varbot{parenleftbt}
+ \endvarchar
+\endsetslot
+
+\setslot{parenrighttp}
+ \comment{This slot contains the curved top of a
+ \textunicode{0029}{RIGHT PARENTHESIS}.}
+ \varchar
+ \vartop{parenrighttp}
+ \varrep{parenrightex}
+ \varbot{parenrightbt}
+ \endvarchar
+\endsetslot
+
+\setslot{bracketlefttp}
+ \comment{This slot contains the corner top of a
+ \textunicode{005B}{LEFT SQUARE BRACKET}.}
+ \varchar
+ \vartop{bracketlefttp}
+ \varrep{bracketleftex}
+ \varbot{bracketleftbt}
+ \endvarchar
+\endsetslot
+
+\setslot{bracketrighttp}
+ \comment{This slot contains the corner top of a
+ \textunicode{005D}{RIGHT SQUARE BRACKET}.}
+ \varchar
+ \vartop{bracketrighttp}
+ \varrep{bracketrightex}
+ \varbot{bracketrightbt}
+ \endvarchar
+\endsetslot
+
+\setslot{bracketleftbt}
+ \comment{This slot contains the corner bottom of a
+ \textunicode{005B}{LEFT SQUARE BRACKET}, but it serves as the
+ final slot in the chain of larger sizes of
+ \textunicode{230A}{LEFT FLOOR}.}
+ \varchar
+ \varrep{bracketleftex}
+ \varbot{bracketleftbt}
+ \endvarchar
+\endsetslot
+
+\setslot{bracketrightbt}
+ \comment{This slot contains the corner bottom of a
+ \textunicode{005D}{RIGHT SQUARE BRACKET}, but it serves as the
+ final slot in the chain of larger sizes of
+ \textunicode{230B}{RIGHT FLOOR}.}
+ \varchar
+ \varrep{bracketrightex}
+ \varbot{bracketrightbt}
+ \endvarchar
+\endsetslot
+
+\setslot{bracketleftex}
+ \comment{This slot contains the repeatable middle part of a
+ \textunicode{005B}{LEFT SQUARE BRACKET}, but it serves as the
+ final slot in the chain of larger sizes of
+ \textunicode{2308}{LEFT CEILING}.}
+ \varchar
+ \vartop{bracketlefttp}
+ \varrep{bracketleftex}
+ \endvarchar
+\endsetslot
+
+\setslot{bracketrightex}
+ \comment{This slot contains the repeatable middle part of a
+ \textunicode{005D}{RIGHT SQUARE BRACKET}, but it serves as the
+ final slot in the chain of larger sizes of
+ \textunicode{2309}{RIGHT CEILING}.}
+ \varchar
+ \vartop{bracketrighttp}
+ \varrep{bracketrightex}
+ \endvarchar
+\endsetslot
+
+\setslot{bracelefttp}
+ \comment{This slot contains the curved top of a
+ \textunicode{007B}{LEFT CURLY BRACKET}.}
+ \label{bracelefttp}
+ \varchar
+ \vartop{bracelefttp}
+ \varrep{braceex}
+ \varmid{braceleftmid}
+ \varbot{braceleftbt}
+ \endvarchar
+\endsetslot
+
+\setslot{bracerighttp}
+ \comment{This slot contains the curved top of a
+ \textunicode{007D}{RIGHT CURLY BRACKET}.}
+ \label{bracerighttp}
+ \varchar
+ \vartop{bracerighttp}
+ \varrep{braceex}
+ \varmid{bracerightmid}
+ \varbot{bracerightbt}
+ \endvarchar
+\endsetslot
+
+
+
+
+
+\begincomment
+\subsection{Display style operators}
+\endcomment
+
+\nextslot{"47}
+\setslot{unionsqdisplay}
+ \Unicode{2294}{SQUARE CUP}
+\endsetslot
+
+\skipslots{1}
+\setslot{contintegraldisplay}
+ \Unicode{222E}{CONTOUR INTEGRAL}
+\endsetslot
+
+\skipslots{1}
+\setslot{circledotdisplay}
+ \Unicode{2299}{CIRCLED DOT OPERATOR}
+\endsetslot
+
+\skipslots{1}
+\setslot{circleplusdisplay}
+ \Unicode{2295}{CIRCLED PLUS}
+\endsetslot
+
+\skipslots{1}
+\setslot{circlemultiplydisplay}
+ \Unicode{2297}{CIRCLED TIMES}
+\endsetslot
+
+\skipslots{8}
+\setslot{summationdisplay}
+ \Unicode{2211}{N-ARY SUMMATION}
+\endsetslot
+
+\setslot{productdisplay}
+ \Unicode{220F}{N-ARY PRODUCT}
+\endsetslot
+
+\setslot{integraldisplay}
+ \Unicode{222B}{INTEGRAL}
+\endsetslot
+
+\setslot{uniondisplay}
+ \Unicode{22C3}{N-ARY UNION}
+\endsetslot
+
+\setslot{intersectiondisplay}
+ \Unicode{22C2}{N-ARY INTERSECTION}
+\endsetslot
+
+\setslot{unionmultidisplay}
+ \Unicode{228E}{MULTISET UNION}
+\endsetslot
+
+\setslot{logicalanddisplay}
+ \Unicode{22C0}{N-ARY LOGICAL AND}
+\endsetslot
+
+\setslot{logicalordisplay}
+ \Unicode{22C1}{N-ARY LOGICAL OR}
+\endsetslot
+
+\skipslots{1}
+\setslot{coproductdisplay}
+ \Unicode{2210}{N-ARY COPRODUCT}
+\endsetslot
+
+
+
+\begincomment
+\subsection{Accents}
+\endcomment
+
+\nextslot{"63}
+\setslot{hatwider}
+ \Unicode{0302}{COMBINING CIRCUMFLEX ACCENT}
+ \nextlarger{hatwiderr}
+\endsetslot
+
+\setslot{hatwiderr}
+ \Unicode{0302}{COMBINING CIRCUMFLEX ACCENT}
+\endsetslot
+
+\skipslots{1}
+
+\setslot{tildewider}
+ \Unicode{0303}{COMBINING TILDE}
+ \nextlarger{tildewiderr}
+\endsetslot
+
+\setslot{tildewiderr}
+ \Unicode{0303}{COMBINING TILDE}
+\endsetslot
+
+
+\begincomment
+\subsection{Radicals}
+\endcomment
+
+\nextslot{"71}
+\setslot{radicalBig}
+ \Unicode{221A}{SQUARE ROOT}
+ \nextlarger{radicalbigg}
+\endsetslot
+
+\setslot{radicalbigg}
+ \Unicode{221A}{SQUARE ROOT}
+ \nextlarger{radicalBigg}
+\endsetslot
+
+\setslot{radicalBigg}
+ \Unicode{221A}{SQUARE ROOT}
+ \nextlarger{radicalbt}
+\endsetslot
+
+\setslot{radicalbt}
+ \Unicode{221A}{SQUARE ROOT}
+ \varchar
+ \varbot{radicalbt}
+ \vartop{radicaltp}
+ \varrep{radicalvertex}
+ \endvarchar
+\endsetslot
+
+\setslot{radicalvertex}
+ \comment{This is the repeatable, vertically middle part of an
+ extensible \textunicode{221A}{SQUARE ROOT}.}
+\endsetslot
+
+\setslot{radicaltp}
+ \comment{This is the top corner part of an extensible
+ \textunicode{221A}{SQUARE ROOT}.}
+\endsetslot
+
+
+
+
+
+\begincomment
+\section{Fontdimens and codingscheme}
+
+\texttt{OMX} fonts have the necessary fontdimens to serve as a math
+group 3 font.
+\endcomment
+
+\setfontdimen{1}{italicslant} % italic slant
+\setfontdimen{2}{interword} % interword space
+\setfontdimen{3}{stretchword} % interword stretch
+\setfontdimen{4}{shrinkword} % interword shrink
+\setfontdimen{5}{xheight} % x-height
+\setfontdimen{6}{quad} % quad
+\setfontdimen{7}{extraspace} % extra space after .
+
+\setfontdimen{8}{defaultrulethickness} % default rule thickness
+\setfontdimen{9}{bigopspacing1} % bigopspacing 1
+\setfontdimen{10}{bigopspacing2} % bigopspacing 2
+\setfontdimen{11}{bigopspacing3} % bigopspacing 3
+\setfontdimen{12}{bigopspacing4} % bigopspacing 4
+\setfontdimen{13}{bigopspacing5} % bigopspacing 5
+
+\setstr{codingscheme}{TEX MATH EXTENSION}
+
+
+
+
+
+\endencoding
+
+
+\section{Discussion}
+
+
+
+\end{document}
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/encspecs/ot1draft.etx b/Master/texmf-dist/doc/fonts/fontinst/base/encspecs/ot1draft.etx
new file mode 100644
index 00000000000..6f07bbd6f4a
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/fontinst/base/encspecs/ot1draft.etx
@@ -0,0 +1,1027 @@
+\relax
+\documentclass[twocolumn]{article}
+\usepackage[specification]{fontdoc}[2004/11/28]
+
+\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}}
+
+\showbranches
+
+\begin{document}
+
+\title{\texttt{OT1} encoding draft specification}
+\author{Lars Hellstr\"om}
+\date{2004/12/16}
+\maketitle
+
+\begin{abstract}
+ The \texttt{OT1} encoding is an attempt to describe the encoding of
+ the text fonts in Donald~E.~Knuth's \emph{Computer Modern} family
+ of fonts~\cite{ComputerModern}. This is an impossibile goal, since
+ these fonts present no less than five different encodings, but they
+ are nontheless largely treated by \LaTeX\ as having identical
+ encodings. Due to the ambiguities this creates, and in view of that
+ the \texttt{T1} encoding supersedes \texttt{OT1} as text font
+ encoding, there is little point in using the text commands for
+ distiguishing mandatory features of \texttt{OT1} from the ordinary.
+
+ \texttt{OT1} is however also used as a math font encoding (to go
+ with \texttt{OML}, \texttt{OMS}, and \texttt{OMX}), and that use is
+ today the by far most important since there is no obvious alternative
+ to the standard math font set-up. Therefore this specification
+ considers a feature of the encoding to be mandatory if it is
+ (i)~necessary for the standard math set-up or (ii)~is a text feature
+ which works for all encoding variants.
+\end{abstract}
+
+\encoding
+\needsfontinstversion{1.928}
+
+
+
+\begincomment
+\section{Encoding variants}
+
+This document aims to record all the encoding variations that are
+present within the set of fonts classified by \LaTeX\ as having the
+\texttt{OT1} encoding. It turns out that they can all be described
+using only two parameters. One of these might be called
+`\textit{ligaturing}' as one factor it affects is how many ligatures
+there will be in the font. The other parameter is best called
+`\textit{italicizing}' as it is different between italic and
+non-italic fonts. Most of the Computer Modern fonts have
+\(\mathit{ligaturing} = 2\) and \(\mathit{italicizing} = 0\).
+
+\endcomment
+\setint{ligaturing}{2}
+\setint{italicizing}{0}
+
+
+\begincomment
+
+
+\section{Mandatory characters}
+
+\subsection{Latin letters}
+\endcomment
+
+\nextslot{16}
+\setslot{dotlessi}
+ \Unicode{0131}{LATIN SMALL LETTER DOTLESS I}
+ \comment{A dotless i `\i', used to produce accented letters such as
+ `\=\i'. It is not used for math.}
+\endsetslot
+
+\setslot{dotlessj}
+ \Unicode{F6BE}{LATIN SMALL LETTER DOTLESS J}
+ \comment{A dotless j `\j', used to produce accented letters such as
+ `\=\j'. It is not used for math. The Unicode standard does not
+ define this character, but Adobe has assigned code point
+ \texttt{U+F6BE} (which is in the private use subarea assigned by
+ Adobe) to it.}
+\endsetslot
+
+\nextslot{25}
+\setslot{germandbls}
+ \Unicode{00DF}{LATIN SMALL LETTER SHARP S}
+ \comment{This slot is not used in math.}
+\endsetslot
+
+\setslot{ae}
+ \Unicode{00E6}{LATIN SMALL LETTER AE}
+ \comment{This slot is not used in math.}
+\endsetslot
+
+\setslot{oe}
+ \Unicode{0153}{LATIN SMALL LIGATURE OE}
+ \comment{This is a single letter, and should not be faked with `oe'.
+ It is not used in math.}
+\endsetslot
+
+\setslot{oslash}
+ \Unicode{00F8}{LATIN SMALL LETTER O WITH STROKE}
+ \comment{This slot is not used in math.}
+\endsetslot
+
+\setslot{AE}
+ \Unicode{00C6}{LATIN CAPITAL LETTER AE}
+ \comment{This slot is not used in math.}
+\endsetslot
+
+\setslot{OE}
+ \Unicode{0152}{LATIN CAPITAL LIGATURE OE}
+ \comment{This is a single letter, and should not be faked with
+ `OE'. It is not used in math.}
+\endsetslot
+
+\setslot{Oslash}
+ \Unicode{00D8}{LATIN CAPITAL LETTER O WITH STROKE}
+ \comment{This slot is not used in math.}
+\endsetslot
+
+
+\nextslot{65}
+\setslot{A}
+ \Unicode{0041}{LATIN CAPITAL LETTER A}
+ \label{A}
+\endsetslot
+
+\setslot{B}
+ \Unicode{0042}{LATIN CAPITAL LETTER B}
+\endsetslot
+
+\setslot{C}
+ \Unicode{0043}{LATIN CAPITAL LETTER C}
+\endsetslot
+
+\setslot{D}
+ \Unicode{0044}{LATIN CAPITAL LETTER D}
+\endsetslot
+
+\setslot{E}
+ \Unicode{0045}{LATIN CAPITAL LETTER E}
+\endsetslot
+
+\setslot{F}
+ \Unicode{0046}{LATIN CAPITAL LETTER F}
+\endsetslot
+
+\setslot{G}
+ \Unicode{0047}{LATIN CAPITAL LETTER G}
+\endsetslot
+
+\setslot{H}
+ \Unicode{0048}{LATIN CAPITAL LETTER H}
+\endsetslot
+
+\setslot{I}
+ \Unicode{0049}{LATIN CAPITAL LETTER I}
+\endsetslot
+
+\setslot{J}
+ \Unicode{004A}{LATIN CAPITAL LETTER J}
+\endsetslot
+
+\setslot{K}
+ \Unicode{004B}{LATIN CAPITAL LETTER K}
+\endsetslot
+
+\setslot{L}
+ \Unicode{004C}{LATIN CAPITAL LETTER L}
+\endsetslot
+
+\setslot{M}
+ \Unicode{004D}{LATIN CAPITAL LETTER M}
+\endsetslot
+
+\setslot{N}
+ \Unicode{004E}{LATIN CAPITAL LETTER N}
+\endsetslot
+
+\setslot{O}
+ \Unicode{004F}{LATIN CAPITAL LETTER O}
+\endsetslot
+
+\setslot{P}
+ \Unicode{0050}{LATIN CAPITAL LETTER P}
+\endsetslot
+
+\setslot{Q}
+ \Unicode{0051}{LATIN CAPITAL LETTER Q}
+\endsetslot
+
+\setslot{R}
+ \Unicode{0052}{LATIN CAPITAL LETTER R}
+\endsetslot
+
+\setslot{S}
+ \Unicode{0053}{LATIN CAPITAL LETTER S}
+\endsetslot
+
+\setslot{T}
+ \Unicode{0054}{LATIN CAPITAL LETTER T}
+\endsetslot
+
+\setslot{U}
+ \Unicode{0055}{LATIN CAPITAL LETTER U}
+\endsetslot
+
+\setslot{V}
+ \Unicode{0056}{LATIN CAPITAL LETTER V}
+\endsetslot
+
+\setslot{W}
+ \Unicode{0057}{LATIN CAPITAL LETTER W}
+\endsetslot
+
+\setslot{X}
+ \Unicode{0058}{LATIN CAPITAL LETTER X}
+\endsetslot
+
+\setslot{Y}
+ \Unicode{0059}{LATIN CAPITAL LETTER Y}
+ \label{Y}
+\endsetslot
+
+\setslot{Z}
+ \Unicode{005A}{LATIN CAPITAL LETTER Z}
+\endsetslot
+
+
+\nextslot{97}
+\setslot{a}
+ \Unicode{0061}{LATIN SMALL LETTER A}
+\endsetslot
+
+\setslot{b}
+ \Unicode{0062}{LATIN SMALL LETTER B}
+\endsetslot
+
+\setslot{c}
+ \Unicode{0063}{LATIN SMALL LETTER C}
+\endsetslot
+
+\setslot{d}
+ \Unicode{0064}{LATIN SMALL LETTER D}
+\endsetslot
+
+\setslot{e}
+ \Unicode{0065}{LATIN SMALL LETTER E}
+\endsetslot
+
+\setslot{f}
+ \Unicode{0066}{LATIN SMALL LETTER F}
+ \ifnumber{\int{ligaturing}}={2}\then
+ \ligature{LIG}{f}{ff}
+ \ligature{LIG}{i}{fi}
+ \ligature{LIG}{l}{fl}
+ \Fi
+\endsetslot
+
+\setslot{g}
+ \Unicode{0067}{LATIN SMALL LETTER G}
+\endsetslot
+
+\setslot{h}
+ \Unicode{0068}{LATIN SMALL LETTER H}
+\endsetslot
+
+\setslot{i}
+ \Unicode{0069}{LATIN SMALL LETTER I}
+\endsetslot
+
+\setslot{j}
+ \Unicode{006A}{LATIN SMALL LETTER J}
+\endsetslot
+
+\setslot{k}
+ \Unicode{006B}{LATIN SMALL LETTER K}
+\endsetslot
+
+\setslot{l}
+ \Unicode{006C}{LATIN SMALL LETTER L}
+\endsetslot
+
+\setslot{m}
+ \Unicode{006D}{LATIN SMALL LETTER M}
+\endsetslot
+
+\setslot{n}
+ \Unicode{006E}{LATIN SMALL LETTER N}
+\endsetslot
+
+\setslot{o}
+ \Unicode{006F}{LATIN SMALL LETTER O}
+\endsetslot
+
+\setslot{p}
+ \Unicode{0070}{LATIN SMALL LETTER P}
+\endsetslot
+
+\setslot{q}
+ \Unicode{0071}{LATIN SMALL LETTER Q}
+\endsetslot
+
+\setslot{r}
+ \Unicode{0072}{LATIN SMALL LETTER R}
+\endsetslot
+
+\setslot{s}
+ \Unicode{0073}{LATIN SMALL LETTER S}
+\endsetslot
+
+\setslot{t}
+ \Unicode{0074}{LATIN SMALL LETTER T}
+\endsetslot
+
+\setslot{u}
+ \Unicode{0075}{LATIN SMALL LETTER U}
+\endsetslot
+
+\setslot{v}
+ \Unicode{0076}{LATIN SMALL LETTER V}
+\endsetslot
+
+\setslot{w}
+ \Unicode{0077}{LATIN SMALL LETTER W}
+\endsetslot
+
+\setslot{x}
+ \Unicode{0078}{LATIN SMALL LETTER X}
+\endsetslot
+
+\setslot{y}
+ \Unicode{0079}{LATIN SMALL LETTER Y}
+\endsetslot
+
+\setslot{z}
+ \Unicode{007A}{LATIN SMALL LETTER Z}
+\endsetslot
+
+
+\begincomment
+\subsection{Greek letters}
+\endcomment
+
+\nextslot{0}
+\setslot{Gamma}
+ \Unicode{0393}{GREEK CAPITAL LETTER GAMMA}
+\endsetslot
+
+\setslot{Delta}
+ \Unicode{0394}{GREEK CAPITAL LETTER DELTA}
+\endsetslot
+
+\setslot{Theta}
+ \Unicode{0398}{GREEK CAPITAL LETTER THETA}
+\endsetslot
+
+\setslot{Lambda}
+ \Unicode{039B}{GREEK CAPITAL LETTER LAMBDA}
+ % Unicode's preferred name for this character seems to be
+ % GREEK CAPITAL LETTER LAMDA, i.e., without the `B'. Why?
+ % GREEK CAPITAL LETTER LAMBDA is listed as an alternative name.
+\endsetslot
+
+\setslot{Xi}
+ \Unicode{039E}{GREEK CAPITAL LETTER XI}
+\endsetslot
+
+\setslot{Pi}
+ \Unicode{03A0}{GREEK CAPITAL LETTER PI}
+\endsetslot
+
+\setslot{Sigma}
+ \Unicode{03A3}{GREEK CAPITAL LETTER SIGMA}
+\endsetslot
+
+\setslot{Upsilon1}
+ \Unicode{03D2}{GREEK UPSILON WITH HOOK SYMBOL}
+ \comment{This is primarily a math character and it is should
+ be visually distinct from the character in slot~\ref{Y}. This is
+ not generally the case for the normal Upsilon
+ \textunicode{03A5}{GREEK CAPITAL LETTER UPSILON}, which is by
+ the way what usually has the glyph name \texttt{Upsilon}.
+ An argument for the latter is however that all the purely
+ mathematical Upsilons that exist in the Unicode standard are
+ described as variants of the non-hook character.}
+\endsetslot
+
+\setslot{Phi}
+ \Unicode{03A6}{GREEK CAPITAL LETTER PHI}
+\endsetslot
+
+\setslot{Psi}
+ \Unicode{03A8}{GREEK CAPITAL LETTER PSI}
+\endsetslot
+
+\setslot{Omega}
+ \Unicode{03A9}{GREEK CAPITAL LETTER OMEGA}
+\endsetslot
+
+
+\begincomment
+\subsection{Digits}
+\endcomment
+
+\nextslot{48}
+\setslot{zero}
+ \Unicode{0030}{DIGIT ZERO}
+\endsetslot
+
+\setslot{one}
+ \Unicode{0031}{DIGIT ONE}
+\endsetslot
+
+\setslot{two}
+ \Unicode{0032}{DIGIT TWO}
+\endsetslot
+
+\setslot{three}
+ \Unicode{0033}{DIGIT THREE}
+\endsetslot
+
+\setslot{four}
+ \Unicode{0034}{DIGIT FOUR}
+\endsetslot
+
+\setslot{five}
+ \Unicode{0035}{DIGIT FIVE}
+\endsetslot
+
+\setslot{six}
+ \Unicode{0036}{DIGIT SIX}
+\endsetslot
+
+\setslot{seven}
+ \Unicode{0037}{DIGIT SEVEN}
+\endsetslot
+
+\setslot{eight}
+ \Unicode{0038}{DIGIT EIGHT}
+\endsetslot
+
+\setslot{nine}
+ \Unicode{0039}{DIGIT NINE}
+\endsetslot
+
+
+\begincomment
+\subsection{Accents}
+\endcomment
+
+\nextslot{18}
+\setslot{grave}
+ \Unicode{0300}{COMBINING GRAVE ACCENT}
+\endsetslot
+
+\setslot{acute}
+ \Unicode{0301}{COMBINING ACUTE ACCENT}
+\endsetslot
+
+\setslot{caron}
+ \Unicode{030C}{COMBINING CARON}
+ \comment{The caron or h\'a\v cek accent `\v{}'.}
+\endsetslot
+
+\setslot{breve}
+ \Unicode{0306}{COMBINING BREVE}
+\endsetslot
+
+\setslot{macron}
+ \Unicode{0304}{COMBINING MACRON}
+\endsetslot
+
+\setslot{ring}
+ \Unicode{030A}{COMBINING RING ABOVE}
+ \comment{The text definition of `\verb|\r{A}|' assumes that this
+ glyph has the same width as that in slot~\ref{A}.}
+\endsetslot
+
+\setslot{cedilla}
+ \Unicode{0327}{COMBINING CEDILLA}
+ \comment{This slot is not required for math, but is used by
+ the \cs{c} \LaTeX\ command.}
+\endsetslot
+
+
+\nextslot{94}
+\setslot{circumflex}
+ \Unicode{0302}{COMBINING CIRCUMFLEX ACCENT}
+ \Unicode{005E}{CIRCUMFLEX ACCENT}
+\endsetslot
+
+\ifnumber{\int{ligaturing}}>{0}\then
+
+\setslot{dotaccent}
+ \Unicode{0307}{COMBINING DOT ABOVE}
+ \label{dotaccent}
+\endsetslot
+
+\begincomment
+\par\medskip
+Note that the \(\mathit{ligaturing} = 0\) assignment to
+slot~\ref{underscore} is ordinary, not mandatory.
+\endcomment
+
+\Fi
+
+
+\nextslot{126}
+\setslot{tilde}
+ \Unicode{0303}{COMBINING TILDE}
+ \Unicode{007E}{TILDE}
+\endsetslot
+
+\setslot{dieresis}
+ \Unicode{0308}{COMBINING DIAERESIS}
+\endsetslot
+
+
+\begincomment
+\subsection{Symbols}
+\endcomment
+
+\nextslot{33}
+\setslot{exclam}
+ \Unicode{0021}{EXCLAMATION MARK}
+ \Ligature{LIG}{quoteleft}{exclamdown}
+\endsetslot
+
+\skipslots{1}
+
+\setslot{numbersign}
+ \Unicode{0023}{NUMBER SIGN}
+ \comment{This slot is not used for math.}
+\endsetslot
+
+\ifnumber{\int{italicizing}}={0}\then
+
+\setslot{dollar}
+ \Unicode{0024}{DOLLAR SIGN}
+\endsetslot
+
+\Else
+
+\setslot{sterling}
+ \Unicode{00A3}{POUND SIGN}
+\endsetslot
+
+\Fi
+
+\setslot{percent}
+ \Unicode{0025}{PERCENT SIGN}
+ \comment{This slot is not used for math.}
+\endsetslot
+
+\setslot{ampersand}
+ \Unicode{0026}{AMPERSAND}
+ \comment{This slot is not used for math.}
+\endsetslot
+
+\setslot{quoteright}
+ \Unicode{2019}{RIGHT SINGLE QUOTATION MARK}
+ \comment{This slot is not used for math.}
+ \ifnumber{\int{ligaturing}}>{0}\then
+ \Ligature{LIG}{quoteright}{quotedblright}
+ \Fi
+\endsetslot
+
+\setslot{parenleft}
+ \Unicode{0028}{LEFT PARENTHESIS}
+\endsetslot
+
+\setslot{parenright}
+ \Unicode{0029}{RIGHT PARENTHESIS}
+\endsetslot
+
+\setslot{asterisk}
+ \Unicode{002A}{ASTERISK}
+ \comment{This slot is not used for math.}
+\endsetslot
+
+\setslot{plus}
+ \Unicode{002B}{PLUS SIGN}
+\endsetslot
+
+\setslot{comma}
+ \Unicode{002C}{COMMA}
+ \comment{This slot is not used for math.}
+\endsetslot
+
+\setslot{hyphen}
+ \Unicode{002D}{HYPHEN-MINUS}
+ \comment{This slot is not used for math.}
+ \ifnumber{\int{ligaturing}}>{0}\then
+ \Ligature{LIG}{hyphen}{endash}
+ \Fi
+\endsetslot
+
+\setslot{period}
+ \Unicode{002E}{FULL STOP}
+ \comment{This slot is not used for math.}
+\endsetslot
+
+\setslot{slash}
+ \Unicode{002F}{SOLIDUS}
+\endsetslot
+
+\nextslot{58}
+\setslot{colon}
+ \Unicode{003A}{COLON}
+\endsetslot
+
+\setslot{semicolon}
+ \Unicode{003B}{SEMICOLON}
+\endsetslot
+
+\skipslots{1}
+
+\setslot{equal}
+ \Unicode{003D}{EQUALS SIGN}
+\endsetslot
+
+\skipslots{1}
+
+\setslot{question}
+ \Unicode{003F}{QUESTION MARK}
+ \Ligature{LIG}{quoteleft}{questiondown}
+\endsetslot
+
+\setslot{at}
+ \Unicode{0040}{COMMERCIAL AT}
+ \comment{This slot is not used for math.}
+\endsetslot
+
+\nextslot{91}
+\setslot{bracketleft}
+ \Unicode{005B}{LEFT SQUARE BRACKET}
+\endsetslot
+
+\skipslots{1}
+
+\setslot{bracketright}
+ \Unicode{005D}{RIGHT SQUARE BRACKET}
+\endsetslot
+
+\nextslot{96}
+\setslot{quoteleft}
+ \Unicode{2018}{LEFT SINGLE QUOTATION MARK}
+ \comment{This slot is not used for math.}
+ \ifnumber{\int{ligaturing}}>{0}\then
+ \Ligature{LIG}{quoteleft}{quotedblleft}
+ \Fi
+\endsetslot
+
+
+
+\begincomment
+\section{Ordinary characters}
+
+\subsection{Letters}
+\endcomment
+
+\ifnumber{\int{ligaturing}}={2}\then
+
+\nextslot{11}
+\setslot{ff}
+ \charseq{
+ \Unicode{0066}{LATIN SMALL LETTER F}
+ \Unicode{0066}{LATIN SMALL LETTER F}
+ }
+ \comment{This glyph should be two characters wide in a monowidth
+ font.}
+ \ligature{LIG}{i}{ffi}
+ \ligature{LIG}{l}{ffl}
+\endsetslot
+
+\setslot{fi}
+ \charseq{
+ \Unicode{0066}{LATIN SMALL LETTER F}
+ \Unicode{0069}{LATIN SMALL LETTER I}
+ }
+ \comment{This glyph should be two characters wide in a monowidth
+ font.}
+\endsetslot
+
+\setslot{fl}
+ \charseq{
+ \Unicode{0066}{LATIN SMALL LETTER F}
+ \Unicode{006C}{LATIN SMALL LETTER L}
+ }
+ \comment{This glyph should be two characters wide in a monowidth
+ font.}
+\endsetslot
+
+\setslot{ffi}
+ \charseq{
+ \Unicode{0066}{LATIN SMALL LETTER F}
+ \Unicode{0066}{LATIN SMALL LETTER F}
+ \Unicode{0069}{LATIN SMALL LETTER I}
+ }
+ \comment{This glyph should be three characters wide in a monowidth
+ font.}
+\endsetslot
+
+\setslot{ffl}
+ \charseq{
+ \Unicode{0066}{LATIN SMALL LETTER F}
+ \Unicode{0066}{LATIN SMALL LETTER F}
+ \Unicode{006C}{LATIN SMALL LETTER L}
+ }
+ \comment{This glyph should be three characters wide in a monowidth
+ font.}
+\endsetslot
+
+\Fi
+
+\nextslot{"8A}
+\setslot{Lslash}
+ \Unicode{0141}{LATIN CAPITAL LETTER L WITH STROKE}
+ \comment{The letter `\L'.}
+\endsetslot
+
+\nextslot{"AA}
+\setslot{lslash}
+ \Unicode{0142}{LATIN SMALL LETTER L WITH STROKE}
+ \comment{The letter `\l'.}
+\endsetslot
+
+
+\begincomment
+\subsection{Accents}
+\endcomment
+
+\ifnumber{\int{ligaturing}}>{0}\then
+
+\nextslot{125}
+\setslot{hungarumlaut}
+ \Unicode{030B}{COMBINING DOUBLE ACUTE ACCENT}
+ \comment{The long Hungarian umlaut `\H{}'.}
+\endsetslot
+
+\Fi
+
+\begincomment
+\subsection{Symbols}
+\endcomment
+
+\ifnumber{\int{ligaturing}}<{2}\then
+
+\nextslot{11}
+\setslot{arrowup}
+ \Unicode{2191}{UPWARDS ARROW}
+\endsetslot
+
+\setslot{arrowdown}
+ \Unicode{2193}{DOWNWARDS ARROW}
+\endsetslot
+
+\setslot{quotesingle}
+ \Unicode{0027}{APOSTROPHE}
+\endsetslot
+
+\setslot{exclamdown}
+ \Unicode{00A1}{INVERTED EXCLAMATION MARK}
+\endsetslot
+
+\setslot{questiondown}
+ \Unicode{00BF}{INVERTED QUESTION MARK}
+\endsetslot
+
+\Fi
+
+\nextslot{32}
+\ifnumber{\int{ligaturing}}>{0}\then
+
+\setslot{lslashslash}
+ \comment{When this character is followed by
+ \textunicode{004C}{LATIN CAPITAL LETTER L} then the combined
+ result is \textunicode{0141}{LATIN CAPITAL LETTER L WITH STROKE};
+ this is used by the \cs{L} command. When this character is
+ followed by \textunicode{006C}{LATIN SMALL LETTER L} then the
+ combined result is \textunicode{0142}{LATIN SMALL LETTER L WITH
+ STROKE}; this is used by the \cs{l} command. There are no further
+ semantics for this character.}
+ \ligature{LIG}{L}{Lslash}
+ \ligature{LIG}{l}{lslash}
+ \comment{These ligatures, and the characters they point to, were
+ added by Alan Jeffrey early in \textsf{fontinst} development in
+ order to allow the character in this slot to exhibit the correct
+ behaviour even in fonts where there is no corresponding glyph.}
+\endsetslot
+
+\Else
+
+\setslot{visiblespace}
+ \Unicode{2423}{OPEN BOX}
+ \comment{A visible space glyph `\textvisiblespace'.}
+\endsetslot
+
+\Fi
+
+
+\nextslot{34}
+\ifnumber{\int{ligaturing}}>{0}\then
+
+\setslot{quotedblright}
+ \Unicode{201D}{RIGHT DOUBLE QUOTATION MARK}
+\endsetslot
+
+\Else
+
+\setslot{quotedbl}
+ \Unicode{0022}{QUOTATION MARK}
+\endsetslot
+
+\Fi
+
+\nextslot{60}
+\ifnumber{\int{ligaturing}}={2}\then
+
+\setslot{exclamdown}
+ \Unicode{00A1}{INVERTED EXCLAMATION MARK}
+\endsetslot
+
+\skipslots{1}
+
+\setslot{questiondown}
+ \Unicode{00BF}{INVERTED QUESTION MARK}
+\endsetslot
+
+\Else
+
+\setslot{less}
+ \Unicode{003C}{LESS-THAN SIGN}
+\endsetslot
+
+\skipslots{1}
+
+\setslot{greater}
+ \Unicode{003E}{GREATER-THAN SIGN}
+\endsetslot
+
+\Fi
+
+\nextslot{92}
+\ifnumber{\int{ligaturing}}>{0}\then
+
+\setslot{quotedblleft}
+ \Unicode{201C}{LEFT DOUBLE QUOTATION MARK}
+\endsetslot
+
+\Else
+
+\setslot{backslash}
+ \Unicode{005C}{REVERSE SOLIDUS}
+\endsetslot
+
+\nextslot{95}
+\setslot{underscore}
+ \Unicode{005F}{LOW LINE}
+ \label{underscore}
+\endsetslot
+
+\begincomment
+\par\medskip
+Note that the \(\mathit{ligaturing} > 0\) assignment to
+slot~\ref{dotaccent} is mandatory, not ordinary.
+\endcomment
+
+\Fi
+
+
+\nextslot{123}
+\ifnumber{\int{ligaturing}}>{0}\then
+
+\setslot{endash}
+ \Unicode{2013}{EN DASH}
+ \Ligature{LIG}{hyphen}{emdash}
+\endsetslot
+
+\setslot{emdash}
+ \Unicode{2014}{EM DASH}
+ \comment{In a monowidth font this character is preferably given the
+ width of two normal characters.}
+\endsetslot
+
+\Else
+
+\setslot{braceleft}
+ \Unicode{007B}{LEFT CURLY BRACKET}
+\endsetslot
+
+\setslot{bar}
+ \Unicode{007C}{VERTICAL LINE}
+\endsetslot
+
+\setslot{braceright}
+ \Unicode{007D}{RIGHT CURLY BRACKET}
+\endsetslot
+
+\Fi
+
+
+\begincomment
+\section{Fontdimens}
+\endcomment
+
+\setfontdimen{1}{italicslant} % italic slant
+\setfontdimen{2}{interword} % interword space
+\setfontdimen{3}{stretchword} % interword stretch
+\setfontdimen{4}{shrinkword} % interword shrink
+\setfontdimen{5}{xheight} % x-height
+\setfontdimen{6}{quad} % quad
+\setfontdimen{7}{extraspace} % extra space after .
+
+
+\begincomment
+\section{Coding scheme}
+\endcomment
+
+\ifnumber{\int{ligaturing}}={2}\then
+
+\setstr{codingscheme}{TEX TEXT}
+
+\Else\ifnumber{\int{ligaturing}}={1}\then
+
+\setstr{codingscheme}{TEX TEXT WITHOUT F-LIGATURES}
+
+\Else
+
+\setstr{codingscheme}{TEX TYPEWRITER TEXT}
+
+\Fi\Fi
+
+
+\endencoding
+
+
+\section{Discussion}
+
+
+\subsection{\texttt{OT1} as math font encoding}
+
+As source for the math requirements on the \texttt{OT1} encoding
+was used the standard \LaTeX\ math set-up~\cite{fontdef}. Those
+definitions that make use of \texttt{OT1} fonts either use the
+\texttt{operators} symbol font\slash font family~0 or have math
+class~7 (\cs{mathalpha}).
+
+There are two slots used for math that have different assignments
+in different encoding variants. Slot 36 (\texttt{dollar}\slash
+\texttt{sterling}) depends on the $\mathit{italicizing}$, and is used
+by the commands \cs{mathdollar} (called by \verb|\$|) and
+\cs{mathsterling} (called by \cs{pounds}). This works because these
+commands explicitly take the character from a font with the correct
+$\mathit{italicizing}$.
+
+Slot~95 (\texttt{dotaccent}\slash \texttt{underline}) depends on the
+$\mathit{ligaturing}$ and is used by the \cs{dot} command. This
+command does \emph{not} work for fonts with \(\mathit{ligaturing}=0\),
+and hence e.g.\ the formula \verb|$\mathtt{\dot{x}}$| does not produce
+a typewriter dotted `x', but rather an `x' and underscore printed on
+top of each other. This is thus an error, but due to that it is
+unlikely that the error will be missed by the author who encounters
+it, the error is probably harmless.
+
+
+\subsection{\texttt{OT1} as text font encoding}
+
+The sources used to determine the text requirements on the
+\texttt{OT1} encoding were~\cite{ltoutenc}.
+
+It turns out that there are LICR commands which rely on non-mandatory
+features of the font. It is mostly for the \(\mathit{ligaturing} = 0\)
+fonts that commands produce incorrect results. The following commands
+work with all \texttt{OT1} fonts which have \(\mathit{ligaturing} > 0\)
+but fail with the others: \cs{L}, \cs{l}, \cs{.}, \cs{H},
+\cs{textemdash}, \cs{textendash}, and \cs{textquotedblleft}.
+In addition, the command \cs{textquotedblright} produces a
+reasonable, but not exactly correct, result.
+
+Traditionally the \cs{textexclamdown} and \cs{textquestiondown} have
+only worked for fonts which have \(\mathit{ligaturing} = 2\), but
+that can be fixed; see~\cite{latex/3368}.
+
+
+\section{Changes}
+
+The changes made to this specification since the original 2001/09/09
+version are as follows.
+
+2004/12/16: Changed the f-ligatures to character sequences, which
+makes more sense for \texttt{CMap}s. Incremented needed versions
+accordingly. /LH
+
+
+\begin{thebibliography}{9}
+\bibitem{ltoutenc}
+ Johannes Braams, David Carlisle, Alan Jeffrey, Frank Mittelbach,
+ Chris Rowley, and Rainer Sch\"opf:
+ \textit{ltoutenc.dtx}, v\,1.91 (2000);
+ the file \texttt{ltoutenc.dtx} in the \LaTeX\ base distribution.
+\bibitem{latex/3368}
+ Lars Hellstr\"om:
+ \textit{\texttt{OT1} def.\ of \cs{textexclamdown} and
+ \cs{textquestiondown}}, \LaTeX\ bugs database entry
+ \textbf{latex/3368}, 2001.
+% ; \textsc{http:}/\slash \texttt{www.latex-project.org}\slash
+% \texttt{cgi-bin}\slash \texttt{ltxbugs2html\discretionary{?}{}{?}%
+% pr=latex/3368}.
+\bibitem{ComputerModern}
+ Donald E. Knuth:
+ \textit{Computer Modern Typefaces},
+ volume E of \textit{Computers \& Typesetting},
+ Ad\-di\-son--Wes\-ley, 1986, xvi+588\,pp.;
+ ISBN~0-201-13446-2.
+\bibitem{fontdef}
+ Frank Mittelbach and Rainer Sch\"opf:
+ \textit{The \texttt{fontdef.dtx} file}, v\,2.2x (1999);
+ the file \texttt{fontdef.dtx} in the \LaTeX\ base distribution.
+\end{thebibliography}
+
+
+\end{document}
+
+
+
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/encspecs/t1draft.etx b/Master/texmf-dist/doc/fonts/fontinst/base/encspecs/t1draft.etx
new file mode 100644
index 00000000000..d82c9e53ed0
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/fontinst/base/encspecs/t1draft.etx
@@ -0,0 +1,1484 @@
+\relax
+\documentclass[twocolumn]{article}
+\usepackage[specification]{fontdoc}[2004/11/28]
+\usepackage{shortvrb}
+
+\MakeShortVerb{\|}
+
+\begin{document}
+\title{\texttt{T1} encoding draft specification}
+\author{Lars Hellstr\"om}
+\date{2002/07/05}
+\maketitle
+
+\begin{abstract}
+ The \texttt{T1} encoding covers most\footnote{But not quite all.}
+ letters in the latin script that are used in European languages.
+ Code points 32--126 coincide with ASCII\footnote{As defined in
+ Appendix C of \emph{The \TeX book}~\cite{TeXbook}, not as defined
+ by the ANSI.} and code points 192--255 are mainly the same as in
+ the latin-1 encoding~\cite{ISO8859-1,latin-page}, but there are
+ exceptions.
+\end{abstract}
+
+\encoding
+
+\needsfontinstversion{1.928}
+
+\begincomment
+\section{Mandatory characters}
+\endcomment
+
+\begincomment
+\subsection{Letters}
+More than two thirds of the characters in the encoding are letters.
+This is a deliberate choice: \TeX's hyphenation algorithm requires
+that all characters in a word are taken from the same font, hence it
+is advantageous\footnote{Probably less so than what was thought when
+the encoding was designed, but still advantageous.} to keep as many
+letters as possible in the same font. Taking symbols from other fonts
+is less of a disadvantage.
+
+\subsubsection{``Unaccented'' letters in slots 0--127}
+\endcomment
+
+\nextslot{25}
+\setslot{dotlessi}
+ \Unicode{0131}{LATIN SMALL LETTER DOTLESS I}
+ \comment{A dotless i `\i', used to produce accented letters such as
+ `\=\i'.}
+\endsetslot
+
+\setslot{dotlessj}
+ \Unicode{F6BE}{LATIN SMALL LETTER DOTLESS J}
+ \comment{A dotless j `\j', used to produce accented letters such as
+ `\=\j'. The Unicode standard does not define this character, but
+ Adobe has assigned code point \texttt{U+F6BE} (which lies
+ in the private use subarea assigned by Adobe) to it.}
+\endsetslot
+
+
+\nextslot{65}
+\setslot{A}
+ \Unicode{0041}{LATIN CAPITAL LETTER A}
+\endsetslot
+
+\setslot{B}
+ \Unicode{0042}{LATIN CAPITAL LETTER B}
+\endsetslot
+
+\setslot{C}
+ \Unicode{0043}{LATIN CAPITAL LETTER C}
+\endsetslot
+
+\setslot{D}
+ \Unicode{0044}{LATIN CAPITAL LETTER D}
+\endsetslot
+
+\setslot{E}
+ \Unicode{0045}{LATIN CAPITAL LETTER E}
+\endsetslot
+
+\setslot{F}
+ \Unicode{0046}{LATIN CAPITAL LETTER F}
+\endsetslot
+
+\setslot{G}
+ \Unicode{0047}{LATIN CAPITAL LETTER G}
+\endsetslot
+
+\setslot{H}
+ \Unicode{0048}{LATIN CAPITAL LETTER H}
+\endsetslot
+
+\setslot{I}
+ \Unicode{0049}{LATIN CAPITAL LETTER I}
+ \oddligature{This ligature only occurs in Dutch typography.}
+ {LIG}{J}{IJ}
+ \oddligature{This ligature only occurs in Dutch typography.}
+ {LIG}{j}{IJ}
+\endsetslot
+
+\setslot{J}
+ \Unicode{004A}{LATIN CAPITAL LETTER J}
+\endsetslot
+
+\setslot{K}
+ \Unicode{004B}{LATIN CAPITAL LETTER K}
+\endsetslot
+
+\setslot{L}
+ \Unicode{004C}{LATIN CAPITAL LETTER L}
+\endsetslot
+
+\setslot{M}
+ \Unicode{004D}{LATIN CAPITAL LETTER M}
+\endsetslot
+
+\setslot{N}
+ \Unicode{004E}{LATIN CAPITAL LETTER N}
+\endsetslot
+
+\setslot{O}
+ \Unicode{004F}{LATIN CAPITAL LETTER O}
+\endsetslot
+
+\setslot{P}
+ \Unicode{0050}{LATIN CAPITAL LETTER P}
+\endsetslot
+
+\setslot{Q}
+ \Unicode{0051}{LATIN CAPITAL LETTER Q}
+\endsetslot
+
+\setslot{R}
+ \Unicode{0052}{LATIN CAPITAL LETTER R}
+\endsetslot
+
+\setslot{S}
+ \Unicode{0053}{LATIN CAPITAL LETTER S}
+\endsetslot
+
+\setslot{T}
+ \Unicode{0054}{LATIN CAPITAL LETTER T}
+\endsetslot
+
+\setslot{U}
+ \Unicode{0055}{LATIN CAPITAL LETTER U}
+\endsetslot
+
+\setslot{V}
+ \Unicode{0056}{LATIN CAPITAL LETTER V}
+\endsetslot
+
+\setslot{W}
+ \Unicode{0057}{LATIN CAPITAL LETTER W}
+\endsetslot
+
+\setslot{X}
+ \Unicode{0058}{LATIN CAPITAL LETTER X}
+\endsetslot
+
+\setslot{Y}
+ \Unicode{0059}{LATIN CAPITAL LETTER Y}
+\endsetslot
+
+\setslot{Z}
+ \Unicode{005A}{LATIN CAPITAL LETTER Z}
+\endsetslot
+
+
+\nextslot{97}
+\setslot{a}
+ \Unicode{0061}{LATIN SMALL LETTER A}
+\endsetslot
+
+\setslot{b}
+ \Unicode{0062}{LATIN SMALL LETTER B}
+\endsetslot
+
+\setslot{c}
+ \Unicode{0063}{LATIN SMALL LETTER C}
+\endsetslot
+
+\setslot{d}
+ \Unicode{0064}{LATIN SMALL LETTER D}
+\endsetslot
+
+\setslot{e}
+ \Unicode{0065}{LATIN SMALL LETTER E}
+\endsetslot
+
+\setslot{f}
+ \Unicode{0066}{LATIN SMALL LETTER F}
+ \ligature{LIG}{f}{ff}
+ \ligature{LIG}{i}{fi}
+ \ligature{LIG}{l}{fl}
+\endsetslot
+
+\setslot{g}
+ \Unicode{0067}{LATIN SMALL LETTER G}
+\endsetslot
+
+\setslot{h}
+ \Unicode{0068}{LATIN SMALL LETTER H}
+\endsetslot
+
+\setslot{i}
+ \Unicode{0069}{LATIN SMALL LETTER I}
+ \oddligature{This ligature only occurs in Dutch typography.}
+ {LIG}{j}{ij}
+\endsetslot
+
+\setslot{j}
+ \Unicode{006A}{LATIN SMALL LETTER J}
+\endsetslot
+
+\setslot{k}
+ \Unicode{006B}{LATIN SMALL LETTER K}
+\endsetslot
+
+\setslot{l}
+ \Unicode{006C}{LATIN SMALL LETTER L}
+\endsetslot
+
+\setslot{m}
+ \Unicode{006D}{LATIN SMALL LETTER M}
+\endsetslot
+
+\setslot{n}
+ \Unicode{006E}{LATIN SMALL LETTER N}
+\endsetslot
+
+\setslot{o}
+ \Unicode{006F}{LATIN SMALL LETTER O}
+\endsetslot
+
+\setslot{p}
+ \Unicode{0070}{LATIN SMALL LETTER P}
+\endsetslot
+
+\setslot{q}
+ \Unicode{0071}{LATIN SMALL LETTER Q}
+\endsetslot
+
+\setslot{r}
+ \Unicode{0072}{LATIN SMALL LETTER R}
+\endsetslot
+
+\setslot{s}
+ \Unicode{0073}{LATIN SMALL LETTER S}
+\endsetslot
+
+\setslot{t}
+ \Unicode{0074}{LATIN SMALL LETTER T}
+\endsetslot
+
+\setslot{u}
+ \Unicode{0075}{LATIN SMALL LETTER U}
+\endsetslot
+
+\setslot{v}
+ \Unicode{0076}{LATIN SMALL LETTER V}
+\endsetslot
+
+\setslot{w}
+ \Unicode{0077}{LATIN SMALL LETTER W}
+\endsetslot
+
+\setslot{x}
+ \Unicode{0078}{LATIN SMALL LETTER X}
+\endsetslot
+
+\setslot{y}
+ \Unicode{0079}{LATIN SMALL LETTER Y}
+\endsetslot
+
+\setslot{z}
+ \Unicode{007A}{LATIN SMALL LETTER Z}
+\endsetslot
+
+
+\begincomment
+\subsubsection{Mainly East-European accented letters
+ in slots 128--191}
+\endcomment
+
+\nextslot{128}
+\setslot{Abreve}
+ \Unicode{0102}{LATIN CAPITAL LETTER A WITH BREVE}
+\endsetslot
+
+\setslot{Aogonek}
+ \Unicode{0104}{LATIN CAPITAL LETTER A WITH OGONEK}
+\endsetslot
+
+\setslot{Cacute}
+ \Unicode{0106}{LATIN CAPITAL LETTER C WITH ACUTE}
+\endsetslot
+
+\setslot{Ccaron}
+ \Unicode{010C}{LATIN CAPITAL LETTER C WITH CARON}
+\endsetslot
+
+\setslot{Dcaron}
+ \Unicode{010E}{LATIN CAPITAL LETTER D WITH CARON}
+\endsetslot
+
+\setslot{Ecaron}
+ \Unicode{011A}{LATIN CAPITAL LETTER E WITH CARON}
+\endsetslot
+
+\setslot{Eogonek}
+ \Unicode{0118}{LATIN CAPITAL LETTER E WITH OGONEK}
+\endsetslot
+
+\setslot{Gbreve}
+ \Unicode{011E}{LATIN CAPITAL LETTER G WITH BREVE}
+\endsetslot
+
+\setslot{Lacute}
+ \Unicode{0139}{LATIN CAPITAL LETTER L WITH ACUTE}
+\endsetslot
+
+\setslot{Lcaron}
+ \Unicode{013D}{LATIN CAPITAL LETTER L WITH CARON}
+ \comment{The normal glyph for this character consists of a capital
+ L and a right single quote, but the underlying accent is a caron.
+ The glyph name \texttt{Lquoteright} is not uncommon, but
+ \cite{AGL} uses \texttt{Lcaron}.}
+\endsetslot
+
+\setslot{Lslash}
+ \Unicode{0141}{LATIN CAPITAL LETTER L WITH STROKE}
+ \comment{The letter `\L'.}
+\endsetslot
+
+\setslot{Nacute}
+ \Unicode{0143}{LATIN CAPITAL LETTER N WITH ACUTE}
+\endsetslot
+
+\setslot{Ncaron}
+ \Unicode{0147}{LATIN CAPITAL LETTER N WITH CARON}
+\endsetslot
+
+\setslot{Eng}
+ \Unicode{014A}{LATIN CAPITAL LETTER ENG}
+\endsetslot
+
+\setslot{Ohungarumlaut}
+ \Unicode{0150}{LATIN CAPITAL LETTER O WITH DOUBLE ACUTE}
+ \comment{The letter `\H{O}'.}
+\endsetslot
+
+\setslot{Racute}
+ \Unicode{0154}{LATIN CAPITAL LETTER R WITH ACUTE}
+\endsetslot
+
+\setslot{Rcaron}
+ \Unicode{0158}{LATIN CAPITAL LETTER R WITH CARON}
+\endsetslot
+
+\setslot{Sacute}
+ \Unicode{015A}{LATIN CAPITAL LETTER S WITH ACUTE}
+\endsetslot
+
+\setslot{Scaron}
+ \Unicode{0160}{LATIN CAPITAL LETTER S WITH CARON}
+\endsetslot
+
+\setslot{Scedilla}
+ \Unicode{015E}{LATIN CAPITAL LETTER S WITH CEDILLA}
+ \comment{In Romanian, character \textunicode{0218}{latin
+ capital letter s with comma below} is preferred, but that
+ wasn't known when this encoding was designed.}
+\endsetslot
+
+\setslot{Tcaron}
+ \Unicode{0164}{LATIN CAPITAL LETTER T WITH CARON}
+\endsetslot
+
+\setslot{Tcommaaccent}
+ \Unicode{021A}{LATIN CAPITAL LETTER T WITH COMMA BELOW}
+\endsetslot
+
+\setslot{Uhungarumlaut}
+ \Unicode{0170}{LATIN CAPITAL LETTER U WITH DOUBLE ACUTE}
+ \comment{The letter `\H{U}'.}
+\endsetslot
+
+\setslot{Uring}
+ \Unicode{016E}{LATIN CAPITAL LETTER U WITH RING ABOVE}
+\endsetslot
+
+\setslot{Ydieresis}
+ \Unicode{0178}{LATIN CAPITAL LETTER Y WITH DIAERESIS}
+\endsetslot
+
+\setslot{Zacute}
+ \Unicode{0179}{LATIN CAPITAL LETTER Z WITH ACUTE}
+\endsetslot
+
+\setslot{Zcaron}
+ \Unicode{017D}{LATIN CAPITAL LETTER Z WITH CARON}
+\endsetslot
+
+\setslot{Zdotaccent}
+ \Unicode{017B}{LATIN CAPITAL LETTER Z WITH DOT ABOVE}
+\endsetslot
+
+\skipslots{1}
+\setslot{Idotaccent}
+ \Unicode{0130}{LATIN CAPITAL LETTER I WITH DOT ABOVE}
+ \comment{This character's |\lccode| value points to slot 105
+ (\texttt{i}), as does that of slot 73 (\texttt{I}).}
+\endsetslot
+
+\setslot{dcroat}
+ \Unicode{0111}{LATIN SMALL LETTER D WITH STROKE}
+\endsetslot
+
+
+\nextslot{160}
+\setslot{abreve}
+ \Unicode{0103}{LATIN SMALL LETTER A WITH BREVE}
+\endsetslot
+
+\setslot{aogonek}
+ \Unicode{0105}{LATIN SMALL LETTER A WITH OGONEK}
+\endsetslot
+
+\setslot{cacute}
+ \Unicode{0107}{LATIN SMALL LETTER C WITH ACUTE}
+\endsetslot
+
+\setslot{ccaron}
+ \Unicode{010D}{LATIN SMALL LETTER C WITH CARON}
+\endsetslot
+
+\setslot{dcaron}
+ \Unicode{010F}{LATIN SMALL LETTER D WITH CARON}
+ \comment{The normal glyph for this character consists of a
+ lower case d and a right single quote, but the underlying
+ accent is a caron.}
+\endsetslot
+
+\setslot{ecaron}
+ \Unicode{011B}{LATIN SMALL LETTER E WITH CARON}
+\endsetslot
+
+\setslot{eogonek}
+ \Unicode{0119}{LATIN SMALL LETTER E WITH OGONEK}
+\endsetslot
+
+\setslot{gbreve}
+ \Unicode{011F}{LATIN SMALL LETTER G WITH BREVE}
+\endsetslot
+
+\setslot{lacute}
+ \Unicode{013A}{LATIN SMALL LETTER L WITH ACUTE}
+\endsetslot
+
+\setslot{lcaron}
+ \Unicode{013E}{LATIN SMALL LETTER L WITH CARON}
+ \comment{The normal glyph for this character consists of a
+ lower case l and a right single quote, but the underlying
+ accent is a caron. The glyph name \texttt{lquoteright} is
+ not uncommon, but \cite{AGL} uses \texttt{lcaron}.}
+\endsetslot
+
+\setslot{lslash}
+ \Unicode{0142}{LATIN SMALL LETTER L WITH STROKE}
+\endsetslot
+
+\setslot{nacute}
+ \Unicode{0144}{LATIN SMALL LETTER N WITH ACUTE}
+\endsetslot
+
+\setslot{ncaron}
+ \Unicode{0148}{LATIN SMALL LETTER N WITH CARON}
+\endsetslot
+
+\setslot{eng}
+ \Unicode{014B}{LATIN SMALL LETTER ENG}
+\endsetslot
+
+\setslot{ohungarumlaut}
+ \Unicode{0151}{LATIN SMALL LETTER O WITH DOUBLE ACUTE}
+ \comment{The letter `\H{o}'.}
+\endsetslot
+
+\setslot{racute}
+ \Unicode{0155}{LATIN SMALL LETTER R WITH ACUTE}
+\endsetslot
+
+\setslot{rcaron}
+ \Unicode{0159}{LATIN SMALL LETTER R WITH CARON}
+\endsetslot
+
+\setslot{sacute}
+ \Unicode{015B}{LATIN SMALL LETTER S WITH ACUTE}
+\endsetslot
+
+\setslot{scaron}
+ \Unicode{0161}{LATIN SMALL LETTER S WITH CARON}
+\endsetslot
+
+\setslot{scedilla}
+ \Unicode{015F}{LATIN SMALL LETTER S WITH CEDILLA}
+ \comment{In Romanian, character \textunicode{0219}{latin
+ small letter s with comma below} is preferred, but that
+ wasn't known when this encoding was designed.}
+\endsetslot
+
+\setslot{tcaron}
+ \Unicode{0165}{LATIN SMALL LETTER T WITH CARON}
+ \comment{The normal glyph for this character consists of a
+ lower case t and a right single quote, but the underlying
+ accent is a caron.}
+\endsetslot
+
+\setslot{tcommaaccent}
+ \Unicode{021B}{LATIN SMALL LETTER T WITH COMMA BELOW}
+\endsetslot
+
+\setslot{uhungarumlaut}
+ \Unicode{0171}{LATIN SMALL LETTER U WITH DOUBLE ACUTE}
+\endsetslot
+
+\setslot{uring}
+ \Unicode{016F}{LATIN SMALL LETTER U WITH RING ABOVE}
+\endsetslot
+
+\setslot{ydieresis}
+ \Unicode{00FF}{LATIN SMALL LETTER Y WITH DIAERESIS}
+\endsetslot
+
+\setslot{zacute}
+ \Unicode{017A}{LATIN SMALL LETTER Z WITH ACUTE}
+\endsetslot
+
+\setslot{zcaron}
+ \Unicode{017E}{LATIN SMALL LETTER Z WITH CARON}
+\endsetslot
+
+\setslot{zdotaccent}
+ \Unicode{017C}{LATIN SMALL LETTER Z WITH DOT ABOVE}
+\endsetslot
+
+
+\begincomment
+\subsubsection{Mainly West-European accented letters in slots 192--255}
+\endcomment
+
+\nextslot{192}
+\setslot{Agrave}
+ \Unicode{00C0}{LATIN CAPITAL LETTER A WITH GRAVE}
+\endsetslot
+
+\setslot{Aacute}
+ \Unicode{00C1}{LATIN CAPITAL LETTER A WITH ACUTE}
+\endsetslot
+
+\setslot{Acircumflex}
+ \Unicode{00C2}{LATIN CAPITAL LETTER A WITH CIRCUMFLEX}
+\endsetslot
+
+\setslot{Atilde}
+ \Unicode{00C3}{LATIN CAPITAL LETTER A WITH TILDE}
+\endsetslot
+
+\setslot{Adieresis}
+ \Unicode{00C4}{LATIN CAPITAL LETTER A WITH DIAERESIS}
+\endsetslot
+
+\setslot{Aring}
+ \Unicode{00C5}{LATIN CAPITAL LETTER A WITH RING ABOVE}
+\endsetslot
+
+\setslot{AE}
+ \Unicode{00C6}{LATIN CAPITAL LETTER AE}
+\endsetslot
+
+\setslot{Ccedilla}
+ \Unicode{00C7}{LATIN CAPITAL LETTER C WITH CEDILLA}
+\endsetslot
+
+\setslot{Egrave}
+ \Unicode{00C8}{LATIN CAPITAL LETTER E WITH GRAVE}
+\endsetslot
+
+\setslot{Eacute}
+ \Unicode{00C9}{LATIN CAPITAL LETTER E WITH ACUTE}
+\endsetslot
+
+\setslot{Ecircumflex}
+ \Unicode{00CA}{LATIN CAPITAL LETTER E WITH CIRCUMFLEX}
+\endsetslot
+
+\setslot{Edieresis}
+ \Unicode{00CB}{LATIN CAPITAL LETTER E WITH DIAERESIS}
+\endsetslot
+
+\setslot{Igrave}
+ \Unicode{00CC}{LATIN CAPITAL LETTER I WITH GRAVE}
+\endsetslot
+
+\setslot{Iacute}
+ \Unicode{00CD}{LATIN CAPITAL LETTER I WITH ACUTE}
+\endsetslot
+
+\setslot{Icircumflex}
+ \Unicode{00CE}{LATIN CAPITAL LETTER I WITH CIRCUMFLEX}
+\endsetslot
+
+\setslot{Idieresis}
+ \Unicode{00CF}{LATIN CAPITAL LETTER I WITH DIAERESIS}
+\endsetslot
+
+\setslot{Eth}
+ \Unicode{00D0}{LATIN CAPITAL LETTER ETH}
+ \Unicode{0110}{LATIN CAPITAL LETTER D WITH STROKE}
+ \comment{This slot is being used to represent two different
+ letters whose capital forms are identical. The |\lccode| value
+ points to slot \ref{eth}.}
+\endsetslot
+
+\setslot{Ntilde}
+ \Unicode{00D1}{LATIN CAPITAL LETTER N WITH TILDE}
+\endsetslot
+
+\setslot{Ograve}
+ \Unicode{00D2}{LATIN CAPITAL LETTER O WITH GRAVE}
+\endsetslot
+
+\setslot{Oacute}
+ \Unicode{00D3}{LATIN CAPITAL LETTER O WITH ACUTE}
+\endsetslot
+
+\setslot{Ocircumflex}
+ \Unicode{00D4}{LATIN CAPITAL LETTER O WITH CIRCUMFLEX}
+\endsetslot
+
+\setslot{Otilde}
+ \Unicode{00D5}{LATIN CAPITAL LETTER O WITH TILDE}
+\endsetslot
+
+\setslot{Odieresis}
+ \Unicode{00D6}{LATIN CAPITAL LETTER O WITH DIAERESIS}
+\endsetslot
+
+\setslot{OE}
+ \Unicode{0152}{LATIN CAPITAL LIGATURE OE}
+ \comment{This is a single letter, and should not be faked with `OE'.}
+\endsetslot
+
+\setslot{Oslash}
+ \Unicode{00D8}{LATIN CAPITAL LETTER O WITH STROKE}
+\endsetslot
+
+\setslot{Ugrave}
+ \Unicode{00D9}{LATIN CAPITAL LETTER U WITH GRAVE}
+\endsetslot
+
+\setslot{Uacute}
+ \Unicode{00DA}{LATIN CAPITAL LETTER U WITH ACUTE}
+\endsetslot
+
+\setslot{Ucircumflex}
+ \Unicode{00DB}{LATIN CAPITAL LETTER U WITH CIRCUMFLEX}
+\endsetslot
+
+\setslot{Udieresis}
+ \Unicode{00DC}{LATIN CAPITAL LETTER U WITH DIAERESIS}
+\endsetslot
+
+\setslot{Yacute}
+ \Unicode{00DD}{LATIN CAPITAL LETTER Y WITH ACUTE}
+\endsetslot
+
+\setslot{Thorn}
+ \Unicode{00DE}{LATIN CAPITAL LETTER THORN}
+\endsetslot
+
+\setslot{SS}
+ \comment{This is an ``uppercased'' sharp s (`\ss') which always
+ looks exactly like two S's next to each other. In a monowidth
+ font it should be two letters wide. There are other characters
+ which could have made better use of this slot; the only function
+ of this slot which could not have been handled using macros is
+ that |\SS| and |SS| can have different hyphenation.}
+ \label{SS}
+ \charseq{
+ \Unicode{0053}{LATIN CAPITAL LETTER S}
+ \Unicode{0053}{LATIN CAPITAL LETTER S}
+ }
+\endsetslot
+
+\setslot{agrave}
+ \Unicode{00E0}{LATIN SMALL LETTER A WITH GRAVE}
+\endsetslot
+
+\setslot{aacute}
+ \Unicode{00E1}{LATIN SMALL LETTER A WITH ACUTE}
+\endsetslot
+
+\setslot{acircumflex}
+ \Unicode{00E2}{LATIN SMALL LETTER A WITH CIRCUMFLEX}
+\endsetslot
+
+\setslot{atilde}
+ \Unicode{00E3}{LATIN SMALL LETTER A WITH TILDE}
+\endsetslot
+
+\setslot{adieresis}
+ \Unicode{00E4}{LATIN SMALL LETTER A WITH DIAERESIS}
+\endsetslot
+
+\setslot{aring}
+ \Unicode{00E5}{LATIN SMALL LETTER A WITH RING ABOVE}
+\endsetslot
+
+\setslot{ae}
+ \Unicode{00E6}{LATIN SMALL LETTER AE}
+\endsetslot
+
+\setslot{ccedilla}
+ \Unicode{00E7}{LATIN SMALL LETTER C WITH CEDILLA}
+\endsetslot
+
+\setslot{egrave}
+ \Unicode{00E8}{LATIN SMALL LETTER E WITH GRAVE}
+\endsetslot
+
+\setslot{eacute}
+ \Unicode{00E9}{LATIN SMALL LETTER E WITH ACUTE}
+\endsetslot
+
+\setslot{ecircumflex}
+ \Unicode{00EA}{LATIN SMALL LETTER E WITH CIRCUMFLEX}
+\endsetslot
+
+\setslot{edieresis}
+ \Unicode{00EB}{LATIN SMALL LETTER E WITH DIAERESIS}
+\endsetslot
+
+\setslot{igrave}
+ \Unicode{00EC}{LATIN SMALL LETTER I WITH GRAVE}
+\endsetslot
+
+\setslot{iacute}
+ \Unicode{00ED}{LATIN SMALL LETTER I WITH ACUTE}
+\endsetslot
+
+\setslot{icircumflex}
+ \Unicode{00EE}{LATIN SMALL LETTER I WITH CIRCUMFLEX}
+\endsetslot
+
+\setslot{idieresis}
+ \Unicode{00EF}{LATIN SMALL LETTER I WITH DIAERESIS}
+\endsetslot
+
+\setslot{eth}
+ \Unicode{00F0}{LATIN SMALL LETTER ETH}
+ \label{eth}
+\endsetslot
+
+\setslot{ntilde}
+ \Unicode{00F1}{LATIN SMALL LETTER N WITH TILDE}
+\endsetslot
+
+\setslot{ograve}
+ \Unicode{00F2}{LATIN SMALL LETTER O WITH GRAVE}
+\endsetslot
+
+\setslot{oacute}
+ \Unicode{00F3}{LATIN SMALL LETTER O WITH ACUTE}
+\endsetslot
+
+\setslot{ocircumflex}
+ \Unicode{00F4}{LATIN SMALL LETTER O WITH CIRCUMFLEX}
+\endsetslot
+
+\setslot{otilde}
+ \Unicode{00F5}{LATIN SMALL LETTER O WITH TILDE}
+\endsetslot
+
+\setslot{odieresis}
+ \Unicode{00F6}{LATIN SMALL LETTER O WITH DIAERESIS}
+\endsetslot
+
+\setslot{oe}
+ \Unicode{0153}{LATIN SMALL LIGATURE OE}
+ \comment{This is a single letter, and should not be faked with `oe'.}
+\endsetslot
+
+\setslot{oslash}
+ \Unicode{00F8}{LATIN SMALL LETTER O WITH STROKE}
+\endsetslot
+
+\setslot{ugrave}
+ \Unicode{00F9}{LATIN SMALL LETTER U WITH GRAVE}
+\endsetslot
+
+\setslot{uacute}
+ \Unicode{00FA}{LATIN SMALL LETTER U WITH ACUTE}
+\endsetslot
+
+\setslot{ucircumflex}
+ \Unicode{00FB}{LATIN SMALL LETTER U WITH CIRCUMFLEX}
+\endsetslot
+
+\setslot{udieresis}
+ \Unicode{00FC}{LATIN SMALL LETTER U WITH DIAERESIS}
+\endsetslot
+
+\setslot{yacute}
+ \Unicode{00FD}{LATIN SMALL LETTER Y WITH ACUTE}
+\endsetslot
+
+\setslot{thorn}
+ \Unicode{00FE}{LATIN SMALL LETTER THORN}
+\endsetslot
+
+\setslot{germandbls}
+ \Unicode{00DF}{LATIN SMALL LETTER SHARP S}
+\endsetslot
+
+
+\begincomment
+\subsection{Accents}
+The Unicode equivalents of the accents are taken to be the combining
+forms of the accents found in code point \texttt{U+0300} and upwards.
+The reasons for this are (i) that they are primarily used with the
+|\accent| primitive, i.e., as combining characters, (ii) that some
+of them (e.g. \texttt{tilde}) have non-combining counterparts
+elsewhere in the encoding, and (iii) that they are not primarily
+phonetic marks.
+\endcomment
+
+\nextslot{0}
+\setslot{grave}
+ \Unicode{0300}{COMBINING GRAVE ACCENT}
+\endsetslot
+
+\setslot{acute}
+ \Unicode{0301}{COMBINING ACUTE ACCENT}
+\endsetslot
+
+\setslot{circumflex}
+ \Unicode{0302}{COMBINING CIRCUMFLEX ACCENT}
+\endsetslot
+
+\setslot{tilde}
+ \Unicode{0303}{COMBINING TILDE}
+\endsetslot
+
+\setslot{dieresis}
+ \Unicode{0308}{COMBINING DIAERESIS}
+\endsetslot
+
+\setslot{hungarumlaut}
+ \Unicode{030B}{COMBINING DOUBLE ACUTE ACCENT}
+ \comment{The long Hungarian umlaut `\H{}'.}
+\endsetslot
+
+\setslot{ring}
+ \Unicode{030A}{COMBINING RING ABOVE}
+\endsetslot
+
+\setslot{caron}
+ \Unicode{030C}{COMBINING CARON}
+ \comment{The caron or h\'a\v cek accent `\v{}'.}
+\endsetslot
+
+\setslot{breve}
+ \Unicode{0306}{COMBINING BREVE}
+\endsetslot
+
+\setslot{macron}
+ \Unicode{0304}{COMBINING MACRON}
+\endsetslot
+
+\setslot{dotaccent}
+ \Unicode{0307}{COMBINING DOT ABOVE}
+\endsetslot
+
+\setslot{cedilla}
+ \Unicode{0327}{COMBINING CEDILLA}
+\endsetslot
+
+\setslot{ogonek}
+ \Unicode{0328}{COMBINING OGONEK}
+\endsetslot
+
+
+\begincomment
+\subsection{Digits}
+\endcomment
+
+\nextslot{48}
+\setslot{zero}
+ \Unicode{0030}{DIGIT ZERO}
+\endsetslot
+
+\setslot{one}
+ \Unicode{0031}{DIGIT ONE}
+\endsetslot
+
+\setslot{two}
+ \Unicode{0032}{DIGIT TWO}
+\endsetslot
+
+\setslot{three}
+ \Unicode{0033}{DIGIT THREE}
+\endsetslot
+
+\setslot{four}
+ \Unicode{0034}{DIGIT FOUR}
+\endsetslot
+
+\setslot{five}
+ \Unicode{0035}{DIGIT FIVE}
+\endsetslot
+
+\setslot{six}
+ \Unicode{0036}{DIGIT SIX}
+\endsetslot
+
+\setslot{seven}
+ \Unicode{0037}{DIGIT SEVEN}
+\endsetslot
+
+\setslot{eight}
+ \Unicode{0038}{DIGIT EIGHT}
+\endsetslot
+
+\setslot{nine}
+ \Unicode{0039}{DIGIT NINE}
+\endsetslot
+
+
+\begincomment
+\subsection{Symbols and punctuation}
+\endcomment
+
+\nextslot{13}
+\setslot{quotesinglbase}
+ \Unicode{201A}{SINGLE LOW-9 QUOTATION MARK}
+\endsetslot
+
+\setslot{guilsinglleft}
+ \Unicode{2039}{SINGLE LEFT-POINTING ANGLE QUOTATION MARK}
+ \comment{In French typography this is an opening quotation mark,
+ but in German typography it is a closing quotation mark. The
+ character should kern well in both cases.}
+\endsetslot
+
+\setslot{guilsinglright}
+ \Unicode{203A}{SINGLE RIGHT-POINTING ANGLE QUOTATION MARK}
+ \comment{In French typography this is a closing quotation mark,
+ but in German typography it is an opening quotation mark. The
+ character should kern well in both cases.}
+\endsetslot
+
+\setslot{quotedblleft}
+ \Unicode{201C}{LEFT DOUBLE QUOTATION MARK}
+\endsetslot
+
+\setslot{quotedblright}
+ \Unicode{201D}{RIGHT DOUBLE QUOTATION MARK}
+ \comment{In English typography this quotation mark is always
+ closing, but in Swedish typography it is also an opening
+ quotation mark. The character should kern well in both cases.}
+\endsetslot
+
+\setslot{quotedblbase}
+ \Unicode{201E}{DOUBLE LOW-9 QUOTATION MARK}
+\endsetslot
+
+\setslot{guillemotleft}
+ \Unicode{00AB}{LEFT-POINTING DOUBLE ANGLE QUOTATION MARK}
+ \comment{In French typography this is an opening quotation mark,
+ but in German typography it is a closing quotation mark. The
+ character should kern well in both cases. The glyph name is
+ misspelt (it should be \texttt{guillemetleft}), but this
+ incorrect name is \emph{de facto} the glyph name used.}
+\endsetslot
+
+\setslot{guillemotright}
+ \Unicode{00BB}{RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK}
+ \comment{In French typography this is a closing quotation mark,
+ but in German typography it is an opening quotation mark. The
+ character should kern well in both cases. The glyph name is
+ misspelt (it should be \texttt{guillemetright}), but this
+ incorrect name is \emph{de facto} the glyph name used.}
+\endsetslot
+
+\setslot{endash}
+ \Unicode{2013}{EN DASH}
+ \label{endash}
+ \Ligature{LIG}{hyphen}{emdash}
+\endsetslot
+
+\setslot{emdash}
+ \Unicode{2014}{EM DASH}
+ \comment{In a monowidth font this character is preferably given the
+ width of two normal characters.}
+\endsetslot
+
+\nextslot{32}
+\setslot{visiblespace}
+ \Unicode{2423}{OPEN BOX}
+ \comment{A visible space glyph `\textvisiblespace'.}
+\endsetslot
+
+\setslot{exclam}
+ \Unicode{0021}{EXCLAMATION MARK}
+ \Ligature{LIG}{quoteleft}{exclamdown}
+\endsetslot
+
+\setslot{quotedbl}
+ \Unicode{0022}{QUOTATION MARK}
+ \comment{The `neutral' double quotation mark, included for use in
+ monowidth fonts, or for setting computer programs.}
+\endsetslot
+
+\setslot{numbersign}
+ \Unicode{0023}{NUMBER SIGN}
+\endsetslot
+
+\setslot{dollar}
+ \Unicode{0024}{DOLLAR SIGN}
+\endsetslot
+
+\setslot{percent}
+ \Unicode{0025}{PERCENT SIGN}
+\endsetslot
+
+\setslot{ampersand}
+ \Unicode{0026}{AMPERSAND}
+\endsetslot
+
+\setslot{quoteright}
+ \Unicode{2019}{RIGHT SINGLE QUOTATION MARK}
+ \Ligature{LIG}{quoteright}{quotedblright}
+\endsetslot
+
+\setslot{parenleft}
+ \Unicode{0028}{LEFT PARENTHESIS}
+\endsetslot
+
+\setslot{parenright}
+ \Unicode{0029}{RIGHT PARENTHESIS}
+\endsetslot
+
+\setslot{asterisk}
+ \Unicode{002A}{ASTERISK}
+\endsetslot
+
+\setslot{plus}
+ \Unicode{002B}{PLUS SIGN}
+\endsetslot
+
+\setslot{comma}
+ \Unicode{002C}{COMMA}
+ \Ligature{LIG}{comma}{quotedblbase}
+\endsetslot
+
+\setslot{hyphen}
+ \Unicode{002D}{HYPHEN-MINUS}
+ \Ligature{LIG}{hyphen}{endash}
+ \Ligature{LIG}{hyphenchar}{hyphenchar}
+ \comment{See also slot \ref{hyphenchar}.}
+ \label{hyphen}
+\endsetslot
+
+\setslot{period}
+ \Unicode{002E}{FULL STOP}
+\endsetslot
+
+\setslot{slash}
+ \Unicode{002F}{SOLIDUS}
+\endsetslot
+
+\skipslots{10}
+\setslot{colon}
+ \Unicode{003A}{COLON}
+\endsetslot
+
+\setslot{semicolon}
+ \Unicode{003B}{SEMICOLON}
+\endsetslot
+
+\setslot{less}
+ \Unicode{003C}{LESS-THAN SIGN}
+ \Ligature{LIG}{less}{guillemotleft}
+\endsetslot
+
+\setslot{equal}
+ \Unicode{003D}{EQUALS SIGN}
+\endsetslot
+
+\setslot{greater}
+ \Unicode{003E}{GREATER-THAN SIGN}
+ \Ligature{LIG}{greater}{guillemotright}
+\endsetslot
+
+\setslot{question}
+ \Unicode{003F}{QUESTION MARK}
+ \Ligature{LIG}{quoteleft}{questiondown}
+\endsetslot
+
+\setslot{at}
+ \Unicode{0040}{COMMERCIAL AT}
+\endsetslot
+
+\nextslot{91}
+\setslot{bracketleft}
+ \Unicode{005B}{LEFT SQUARE BRACKET}
+\endsetslot
+
+\setslot{backslash}
+ \Unicode{005C}{REVERSE SOLIDUS}
+\endsetslot
+
+\setslot{bracketright}
+ \Unicode{005D}{RIGHT SQUARE BRACKET}
+\endsetslot
+
+\setslot{asciicircum}
+ \Unicode{005E}{CIRCUMFLEX ACCENT}
+ \comment{The ASCII upward-pointing arrow head `\textasciicircum'.
+ This is included for compatibility with typewriter fonts used
+ for computer listings.}
+\endsetslot
+
+\setslot{underscore}
+ \Unicode{005F}{LOW LINE}
+ \comment{The ASCII underline character `\textunderscore', usually
+ set on the baseline. This is included for compatibility with
+ typewriter fonts used for computer listings.}
+\endsetslot
+
+\setslot{quoteleft}
+ \Unicode{2018}{LEFT SINGLE QUOTATION MARK}
+ \Ligature{LIG}{quoteleft}{quotedblleft}
+\endsetslot
+
+\nextslot{123}
+\setslot{braceleft}
+ \Unicode{007B}{LEFT CURLY BRACKET}
+\endsetslot
+
+\setslot{bar}
+ \Unicode{007C}{VERTICAL LINE}
+ \comment{The ASCII vertical bar `\textbar'.
+ This is included for compatibility with typewriter fonts used
+ for computer listings.}
+\endsetslot
+
+\setslot{braceright}
+ \Unicode{007D}{RIGHT CURLY BRACKET}
+\endsetslot
+
+\setslot{asciitilde}
+ \Unicode{007E}{TILDE}
+ \comment{The ASCII tilde `\textasciitilde'.
+ This is included for compatibility with typewriter fonts used
+ for computer listings.}
+\endsetslot
+
+\nextslot{159}
+\setslot{section}
+ \Unicode{00A7}{SECTION SIGN}
+\endsetslot
+
+\nextslot{189}
+\setslot{exclamdown}
+ \Unicode{00A1}{INVERTED EXCLAMATION MARK}
+\endsetslot
+
+\setslot{questiondown}
+ \Unicode{00BF}{INVERTED QUESTION MARK}
+\endsetslot
+
+\setslot{sterling}
+ \Unicode{00A3}{POUND SIGN}
+\endsetslot
+
+
+
+\begincomment
+\subsection{Miscellanea}
+\endcomment
+
+\nextslot{23}
+\setslot{compwordmark}
+ \Unicode{200C}{ZERO WIDTH NON-JOINER}
+ \comment{An invisible glyph, with zero width and depth, but the
+ height of lower case letters without ascenders.
+ It is used to stop ligaturing in words like `shelf{}ful'.
+ It is possible that this character should be considered a
+ letter (and that hyphenation patterns should be designed to
+ include it), but since its |\lccode| is 0, \TeX's hyphenation
+ mechanism considers it to be a nonletter which ends the
+ hyphenatable part of a word.}
+\endsetslot
+
+\setslot{perthousandzero}
+ \comment{A glyph which is placed after `\%' to produce a
+ `per-thousand', or twice to produce `per-ten-thousand'.
+ Your guess is as good as mine as to what this glyph should look
+ like in a monowidth font. Since most fonts don't include this
+ glyph anyway, its use is discouraged.}
+\endsetslot
+
+\nextslot{127}
+\setslot{hyphenchar}
+ \label{hyphenchar}
+ \comment{This character is provided as a discretionary hyphen
+ symbol and may only appear at the end of a line, since it is often
+ hanging out of the character box, but apart from that it is almost
+ always the same as the \texttt{hyphen} character. Since \LaTeX\
+ sets the |\hyphenchar| of \texttt{T1} fonts to slot \ref{hyphen}
+ rather than this slot, this feature is usually not used.}
+\endsetslot
+
+
+
+\begincomment
+\section{Usual characters}
+The following characters are only accessed through ligatures and can
+therefore be replaced by others or completely left out if the
+ligature programs are modified accordingly.
+\endcomment
+
+
+\nextslot{27}
+\setslot{ff}
+ \charseq{
+ \Unicode{0066}{LATIN SMALL LETTER F}
+ \Unicode{0066}{LATIN SMALL LETTER F}
+ }
+ \comment{This glyph should be two characters wide in a monowidth
+ font.}
+ \ligature{LIG}{i}{ffi}
+ \ligature{LIG}{l}{ffl}
+\endsetslot
+
+\setslot{fi}
+ \charseq{
+ \Unicode{0066}{LATIN SMALL LETTER F}
+ \Unicode{0069}{LATIN SMALL LETTER I}
+ }
+ \comment{This glyph should be two characters wide in a monowidth
+ font.}
+\endsetslot
+
+\setslot{fl}
+ \charseq{
+ \Unicode{0066}{LATIN SMALL LETTER F}
+ \Unicode{006C}{LATIN SMALL LETTER L}
+ }
+ \comment{This glyph should be two characters wide in a monowidth
+ font.}
+\endsetslot
+
+\setslot{ffi}
+ \charseq{
+ \Unicode{0066}{LATIN SMALL LETTER F}
+ \Unicode{0066}{LATIN SMALL LETTER F}
+ \Unicode{0069}{LATIN SMALL LETTER I}
+ }
+ \comment{This glyph should be three characters wide in a monowidth
+ font.}
+\endsetslot
+
+\setslot{ffl}
+ \charseq{
+ \Unicode{0066}{LATIN SMALL LETTER F}
+ \Unicode{0066}{LATIN SMALL LETTER F}
+ \Unicode{006C}{LATIN SMALL LETTER L}
+ }
+ \comment{This glyph should be three characters wide in a monowidth
+ font.}
+\endsetslot
+
+\nextslot{156}
+\setslot{IJ}
+ \Unicode{0132}{LATIN CAPITAL LIGATURE IJ}
+ \comment{This is a single letter, and in a monowidth font should
+ ideally be one letter wide.}
+\endsetslot
+
+\nextslot{188}
+\setslot{ij}
+ \Unicode{0133}{LATIN SMALL LIGATURE IJ}
+ \comment{This is a single letter, and in a monowidth font should
+ ideally be one letter wide.}
+\endsetslot
+
+
+\begincomment
+\section{Fontdimens}
+\endcomment
+
+\setfontdimen{1}{italicslant} % italic slant
+\setfontdimen{2}{interword} % interword space
+\setfontdimen{3}{stretchword} % interword stretch
+\setfontdimen{4}{shrinkword} % interword shrink
+\setfontdimen{5}{xheight} % x-height
+\setfontdimen{6}{quad} % quad
+\setfontdimen{7}{extraspace} % extra space after .
+\setfontdimen{8}{capheight} % cap height
+\setfontdimen{9}{ascender} % ascender
+\setfontdimen{10}{acccapheight} % accented cap height
+\setfontdimen{11}{descender} % descender's depth
+\setfontdimen{12}{maxheight} % max height
+\setfontdimen{13}{maxdepth} % max depth
+\setfontdimen{14}{digitwidth} % digit width
+\setfontdimen{15}{verticalstem} % dominant width of verical stems
+\setfontdimen{16}{baselineskip} % baselineskip
+
+
+\begincomment
+\section{Coding scheme}
+\endcomment
+
+\setstr{codingscheme}{EXTENDED TEX FONT ENCODING - LATIN}
+
+
+\endencoding
+
+
+\section{Discussion}
+
+As the \texttt{T1} encoding is an established standard, the discussion
+of it has already been published elsewhere. [Unfortunately, I do not
+know where as it all happened long before I started using \TeX. This
+part of the document definitely needs to be improved. To begin with, I
+would like to know if the TUGboat articles whose bibliography entries
+appear in Figure~\ref{Bib-entries} are relevant for the matter.
+\begin{figure*}
+\small
+\begin{verbatim}
+@Article{Beebe:TB11-2-171,
+ author = "Nelson Beebe",
+ title = "{Character set encoding}",
+ journal = j-TUGboat,
+ volume = "11",
+ number = "2",
+ pages = "171--175",
+ month = jun,
+ year = "1990",
+ ISSN = "0896-3207",
+ bibdate = "Fri Jun 4 18:08:09 MDT 1999",
+ bibsource = "ftp://ftp.math.utah.edu/pub/tex/bib/tugboat.bib;
+ http://www.math.utah.edu/pub/tex/bib/index-table-t.html#tugboat",
+ acknowledgement = ack-bnb # " and " # ack-nhfb,
+}
+@Article{Bien:TB11-2-175,
+ author = "Janusz S. Bie{\'n}",
+ title = "{On standards for computer modern font extensions}",
+ journal = j-TUGboat,
+ volume = "11",
+ number = "2",
+ pages = "175--183",
+ month = jun,
+ year = "1990",
+ ISSN = "0896-3207",
+ bibdate = "Fri Jun 4 18:08:09 MDT 1999",
+ bibsource = "ftp://ftp.math.utah.edu/pub/tex/bib/tugboat.bib;
+ http://www.math.utah.edu/pub/tex/bib/index-table-t.html#tugboat",
+ acknowledgement = ack-bnb # " and " # ack-nhfb,
+}
+@Article{Ferguson:TB11-4-514,
+ author = "Michael Ferguson",
+ title = "{Report on multilingual activities}",
+ journal = j-TUGboat,
+ volume = "11",
+ number = "4",
+ pages = "514--516",
+ month = nov,
+ year = "1990",
+ ISSN = "0896-3207",
+ bibdate = "Fri Jun 4 18:08:09 MDT 1999",
+ bibsource = "ftp://ftp.math.utah.edu/pub/tex/bib/tugboat.bib;
+ http://www.math.utah.edu/pub/tex/bib/index-table-t.html#tugboat",
+ acknowledgement = ack-bnb # " and " # ack-nhfb,
+}
+\end{verbatim}
+\normalsize
+
+\caption{Entries in \texttt{tugboat.bib} which may describe papers
+that contain (at least part of) the discussion regarding the
+\texttt{T1} encoding}
+\label{Bib-entries}
+\end{figure*}
+Actually reading them would be nice too, as would of course getting
+the references for whatever other papers there might be that
+constituted the discussion of the \texttt{T1} encoding. The file
+\texttt{cork.enc} in the \textit{Fontname} standard makes a cryptic
+reference to ``TTN 1(4), December 1992'', whatever that might be.]
+
+I can however answer questions on the more immediate matter of how the
+interpretation of the established standard that this file expresses was
+constructed. It is mainly the result of a comparison between the
+file \texttt{t1.etx}~\cite{t1.etx}, the Unicode
+standard~\cite{Unicode}, and the Adobe glyph list~\cite{AGL}.
+
+(Some concerns have been expressed about the fact that the glyph name
+listed for slot~0 is `\texttt{grave}', although that glyph name in
+\cite{AGL} corresponds to \textunicode{0060}{GRAVE ACCENT}, whereas
+\textunicode{0300}{COMBINING GRAVE ACCENT} is listed as corresponding
+to `\texttt{gravecomb}'. This is however formally irrelevant, since
+the glyph names are formally only internal labels in the encoding
+specification. `\texttt{gravecomb}' would furthermore be a more
+impractical label, since most font contains a `\texttt{grave}' glyph
+that is used as a combining accent but no `\texttt{gravecomb}'
+glyph.)
+
+
+\section{Changes}
+
+The changes made to this specification since the original 2001/06/19
+version are as follows.
+
+2001/09/01: Corrected some typos (reported by Vladimir Volovich). /LH
+
+2001/09/16: Added \cite{latin-page} to the bibliography. /LH
+
+2001/09/21: Removed comment on \textunicode{2012}{FIGURE DASH} from
+slot~\ref{endash}. \cite[Sec.~6.1]{Unicode} makes quite clear that
+it's not to be used for ranges. /LH
+
+2002/07/05: Added the Ferguson:TB11-4-514 and ``TTN~1(4)'' references
+to the discussion section. Also added remark on \texttt{grave} versus
+\texttt{gravecomb}. /LH
+
+2004/11/28: Changed the f-ligatures to character sequences, which
+makes more sense for \texttt{CMap}s. Added equivalent for
+slot~\ref{SS}. /LH
+
+
+\begin{thebibliography}{9}
+\bibitem{AGL}
+ Adobe Systems Incorporated: \textit{Adobe Glyph List}, 1998;
+ \textsc{http}:/\slash \texttt{partners.adobe.com}\slash
+ \texttt{asn}\slash \texttt{developer}\slash \texttt{type}\slash
+ \texttt{glyphlist.txt}
+\bibitem{latin-page}
+ Roman Czyborra: \textit{The ISO 8859 Alphabet Soup}, web page at
+ \textsc{http:}/\slash \texttt{czyborra.com}\slash
+ \texttt{charsets}\slash \texttt{iso8859.html}, 1998.
+\bibitem{ISO8859-1}
+ International Organization for Standardization:
+ \textit{ISO/IEC standard 8859-1} (Information technology --
+ 8-bit single-byte coded graphic character sets --
+ Part 1: Latin alphabet No. 1).
+ See also~\cite{latin-page}.
+\bibitem{t1.etx}
+ Alan Jeffrey, Sebastian Rahtz, and Ulrik Vieth:
+ \textit{The \TeX\ extended text encoding vector},
+ version~1.801, 1998,
+ \textsc{ctan}:\discretionary{}{}{\thinspace}\texttt{fonts}\slash
+ \texttt{utilities}\slash \texttt{fontinst}\slash
+ \texttt{inputs}\slash \texttt{etx}\slash \texttt{t1.etx}.
+\bibitem{TeXbook}
+ Donald E.\ Knuth, Duane Bibby (illustrations):
+ \textit{The \TeX book}, Ad\-di\-son--Wes\-ley, 1986;
+ ISBN~0-201-13447-0.
+\bibitem{Unicode}
+ The Unicode Consortium (editor), \emph{et al.}:
+ \textit{The Unicode Standard, Version 3.0},
+ Addison Wesley Longman Publisher, 2000; ISBN~0-201-61633-5.
+ Most of the information in this book is also available online at
+ the Unicode consortium website, at \textsc{http}:/\slash
+ \texttt{www.unicode.org}\slash \texttt{unicode}\slash
+ \texttt{uni2book}\slash \texttt{u2.html}.
+\end{thebibliography}
+
+
+
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/examples/basicex.tex b/Master/texmf-dist/doc/fonts/fontinst/base/examples/basicex.tex
new file mode 100644
index 00000000000..fe7f6f69935
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/fontinst/base/examples/basicex.tex
@@ -0,0 +1,431 @@
+% basicex.tex
+%
+% This file contains some basic examples of commands for
+% installing the AGaramond family of fonts with fontinst v1.9.
+% It is pretty similar to what the \latinfamily command
+% does for these fonts, but the details are not identical.
+%
+% In case you want to run this file yourself, the metrics for
+% the AGaramond font family can be downloaded from
+%
+% ftp://ftp.adobe.com/pub/adobe/type/win/all/afmfiles/051-100/100/
+% and
+% ftp://ftp.adobe.com/pub/adobe/type/win/all/afmfiles/101-150/101/
+%
+% The AFM files found in these directories should then be renamed
+% as indicated in the Fontname adobe.map file. Also note that
+% the line endings are Windows-style (CRLF), so you probably need
+% to download as binary and do some conversion before you can use
+% these files comfortably.
+
+\input fontinst.sty
+
+% This tells fontinst to collect information about font
+% transformations in the file basicex.recs. That file is
+% then used by basicex2.tex.
+\recordtransforms{basicex.recs}
+
+% These commands perform transformations on the metrics of
+% some of the fonts, thereby creating new metrics files for
+% the transformed fonts.
+\transformfont{padr8r}{\reencodefont{8r}{\fromafm{padr8a}}}
+\transformfont{padrc8r}{\reencodefont{8r}{\fromafm{padrc8a}}}
+\transformfont{padri8r}{\reencodefont{8r}{\fromafm{padri8a}}}
+\transformfont{padro8r}{\slantfont{250}{\frommtx{padr8r}}}
+\transformfont{padro8x}{\slantfont{250}{\fromafm{padr8x}}}
+
+% The first three lines of each group reencode fonts
+% so that TeX can access all glyphs in them.
+\transformfont{pads8r}{\reencodefont{8r}{\fromafm{pads8a}}}
+\transformfont{padsc8r}{\reencodefont{8r}{\fromafm{padsc8a}}}
+\transformfont{padsi8r}{\reencodefont{8r}{\fromafm{padsi8a}}}
+% The last two lines artifically create slanted variants
+% of fonts by skewing them. 250 is the natural slant of
+% the italics in this family.
+\transformfont{padso8r}{\slantfont{250}{\frommtx{pads8r}}}
+\transformfont{padso8x}{\slantfont{250}{\fromafm{pads8x}}}
+
+\transformfont{padb8r}{\reencodefont{8r}{\fromafm{padb8a}}}
+% There is no padbc8a, hence nothing to make a padbc8r from.
+\transformfont{padbi8r}{\reencodefont{8r}{\fromafm{padbi8a}}}
+\transformfont{padbo8r}{\slantfont{250}{\frommtx{padb8r}}}
+\transformfont{padbo8x}{\slantfont{250}{\fromafm{padb8x}}}
+% The DVI driver must be told to make the same transformations
+% to the actual fonts when a document using them is to be viewed
+% or printed. The information collected in basicex.recs can
+% help with this. The job of basicex2.tex is to translate this
+% information to a format understood by DVI drivers.
+
+
+% The \transformfont commands above generate metric files in MTX
+% format (for use by the \installfont commands below) and PL
+% format (for transformation to TFMs that are needed by the DVI
+% driver when interpreting VFs based on these fonts). These PL
+% files are minimal and not suitable for direct use in typesetting
+% since there is no kerning information, ligaturing instructions,
+% or fontdimens, but they are perfectly adequate to serve as
+% base fonts for VFs.
+%
+% The next bunch of commands generate a new set of PL files for
+% these fonts (overwriting the previous), and these new files
+% do contain kerning information, ligaturing instructions, and
+% fontdimens. (As a side-effect, these files are also larger than
+% the previous ones.) Since 8r-encoded fonts are not in practice
+% used for typesetting (not much, anyway), it is perfectly
+% possible to skip this step.
+\installfonts
+ \installrawfont {padr8r}{padr8r,8r}{8r} {8r}{pad}{m}{n}{}
+ \installrawfont {padrc8r}{padrc8r,8r}{8r} {8r}{pad}{m}{sc}{}
+ \installrawfont {padri8r}{padri8r,8r}{8r} {8r}{pad}{m}{it}{}
+ \installrawfont {padro8r}{padro8r,8r}{8r} {8r}{pad}{m}{sl}{}
+
+ \installrawfont {pads8r}{pads8r,8r}{8r} {8r}{pad}{sb}{n}{}
+ \installrawfont {padsc8r}{padsc8r,8r}{8r} {8r}{pad}{sb}{sc}{}
+ \installrawfont {padsi8r}{padsi8r,8r}{8r} {8r}{pad}{sb}{it}{}
+ \installrawfont {padso8r}{padso8r,8r}{8r} {8r}{pad}{sb}{sl}{}
+
+ \installrawfont {padb8r}{padb8r,8r}{8r} {8r}{pad}{b}{n}{}
+ \installrawfont {padbi8r}{padbi8r,8r}{8r} {8r}{pad}{b}{it}{}
+ \installrawfont {padbo8r}{padbo8r,8r}{8r} {8r}{pad}{b}{sl}{}
+\endinstallfonts
+
+
+% In the above commands, the commands have been lined up to
+% visually separate those arguments that have to do with how
+% a font is declared to LaTeX (rightmost) from those arguments
+% that specify how the font is made and what it should be called.
+
+
+% The following commands make a very basic installation of "pad"
+% families in the OT1, T1, and TS1 encodings; there is not attempt
+% to make use of the -Exp (expert) or -SC (smallcaps) fonts in
+% the AGaramond family. (One reason for making this distinction
+% is that Adobe sell these other fonts separately, so some people
+% may have the basic set used below and nothing more. Another
+% reason is that for many typefaces, there are no expert or -SC
+% fonts at all. Adapting an example using such fonts to a typeface
+% which do not have them is much too confusing for a beginner.)
+\installfonts
+ \installfamily{OT1}{pad}{}
+ \installfamily{T1}{pad}{}
+ \installfamily{TS1}{pad}{}
+
+ \installfont {padr8t}{padr8r,newlatin}{t1} {T1}{pad}{m}{n}{}
+ \installfont {padr7t}{padr8r,newlatin}{ot1} {OT1}{pad}{m}{n}{}
+ \installfont {padrc8t}{padr8r,newlatin}{t1c} {T1}{pad}{m}{sc}{}
+ \installfont {padrc7t}{padr8r,newlatin}{ot1c} {OT1}{pad}{m}{sc}{}
+ \installfont {padr8i}{padr8r,textcomp}{ts1} {TS1}{pad}{m}{n}{}
+ % There is no difference between the n and the sc shapes
+ % of TS1 encoded fonts, hence the same TeX font can be
+ % used for both. LaTeX does however need the declarations
+ % to be explicit, hence this \installfontas command.
+ \installfontas{padr8i} {TS1}{pad}{m}{sc}{}
+ % The "option nosc" below is a speed optimization.
+ % newlatin.mtx normally makes sure that a smallcaps
+ % alphabet is defined (faking it if necessary),
+ % regardless of whether that alphabet is at all
+ % going to be used. By passing it the "nosc" option,
+ % one can tell newlatin.mtx to completely skip those
+ % commands that have to do with smallcaps.
+ \installfont {padri8t}{padri8r,newlatin option nosc}{t1} {T1}{pad}{m}{it}{}
+ \installfont {padri7t}{padri8r,newlatin option nosc}{ot1} {OT1}{pad}{m}{it}{}
+ \installfont {padri8i}{padri8r,textcomp}{ts1} {TS1}{pad}{m}{it}{}
+ \installfont {padro8t}{padro8r,newlatin option nosc}{t1} {T1}{pad}{m}{sl}{}
+ \installfont {padro7t}{padro8r,newlatin option nosc}{ot1} {OT1}{pad}{m}{sl}{}
+ \installfont {padro8i}{padro8r,textcomp}{ts1} {TS1}{pad}{m}{sl}{}
+
+ % The reason newlatin is not passed the nosc option when
+ % making the "n" shape fonts here is another (more tricky)
+ % speed optimization. If the metric argument of two
+ % subsequent \installfont commands are identical then the
+ % respective glyph bases will be identical too, and in these
+ % cases fontinst saves work by not rebuilding the glyph base
+ % at the second command, but instead using the cached
+ % definitions from the first.
+ \installfont {pads8t}{pads8r,newlatin}{t1} {T1}{pad}{sb}{n}{}
+ \installfont {pads7t}{pads8r,newlatin}{ot1} {OT1}{pad}{sb}{n}{}
+ \installfont {padsc8t}{pads8r,newlatin}{t1c} {T1}{pad}{sb}{sc}{}
+ \installfont {padsc7t}{pads8r,newlatin}{ot1c} {OT1}{pad}{sb}{sc}{}
+ % Thus the last four commands cause four fonts to be
+ % generated, but the pads8r.mtx and newlatin.mtx files
+ % are only read once.
+ \installfont {pads8i}{pads8r,textcomp}{ts1} {TS1}{pad}{sb}{n}{}
+ \installfontas{pads8i} {TS1}{pad}{sb}{sc}{}
+ \installfont {padsi8t}{padsi8r,newlatin option nosc}{t1} {T1}{pad}{sb}{it}{}
+ \installfont {padsi7t}{padsi8r,newlatin option nosc}{ot1} {OT1}{pad}{sb}{it}{}
+ \installfont {padsi8i}{padsi8r,textcomp}{ts1} {TS1}{pad}{sb}{it}{}
+ \installfont {padso8t}{padso8r,newlatin option nosc}{t1} {T1}{pad}{sb}{sl}{}
+ \installfont {padso7t}{padso8r,newlatin option nosc}{ot1} {OT1}{pad}{sb}{sl}{}
+ \installfont {padso8i}{padso8r,textcomp}{ts1} {TS1}{pad}{sb}{sl}{}
+
+ \installfont {padb8t}{padb8r,newlatin}{t1} {T1}{pad}{b}{n}{}
+ \installfont {padb7t}{padb8r,newlatin}{ot1} {OT1}{pad}{b}{n}{}
+ \installfont {padbc8t}{padb8r,newlatin}{t1c} {T1}{pad}{b}{sc}{}
+ \installfont {padbc7t}{padb8r,newlatin}{ot1c} {OT1}{pad}{b}{sc}{}
+ \installfont {padb8i}{padb8r,textcomp}{ts1} {TS1}{pad}{b}{n}{}
+ \installfontas{padb8i} {TS1}{pad}{b}{sc}{}
+ \installfont {padbi8t}{padbi8r,newlatin option nosc}{t1} {T1}{pad}{b}{it}{}
+ \installfont {padbi7t}{padbi8r,newlatin option nosc}{ot1} {OT1}{pad}{b}{it}{}
+ \installfont {padbi8i}{padbi8r,textcomp}{ts1} {TS1}{pad}{b}{it}{}
+ \installfont {padbo8t}{padbo8r,newlatin option nosc}{t1} {T1}{pad}{b}{sl}{}
+ \installfont {padbo7t}{padbo8r,newlatin option nosc}{ot1} {OT1}{pad}{b}{sl}{}
+ \installfont {padbo8i}{padbo8r,textcomp}{ts1} {TS1}{pad}{b}{sl}{}
+\endinstallfonts
+
+
+% The set of commands above will "fake" an sc shape for the typeface
+% by making dual use of the capitals in the n shape (Regular): both
+% as normal (for the upper case in the sc shape) and shrunk to 80% of
+% their normal size (for the lower case in the sc shape). This works
+% (anyone who looks at it will understand what was intended), but it
+% does not look good, and therefore it is always better to make use
+% of proper smallcaps when it is available.
+%
+% The next set of commands is another take at creating the "pad"
+% families, this time making use of the proper smallcaps in padrc8r
+% and padsc8r. The files created by this set of commands will
+% completely overwrite the files created by the previous set of
+% commands; in practice one would only include one set of commands,
+% but both are provided here for comparison.
+\installfonts
+ \installfamily{OT1}{pad}{}
+ \installfamily{T1}{pad}{}
+ \installfamily{TS1}{pad}{}
+
+ % Since the glyph bases used for the n and sc shapes in this
+ % case are different, there is no point in doing the smallcaps
+ % processing when making the n shape fonts.
+ \installfont {padr8t}{padr8r,newlatin option nosc}{t1} {T1}{pad}{m}{n}{}
+ \installfont {padr7t}{padr8r,newlatin option nosc}{ot1} {OT1}{pad}{m}{n}{}
+ % There is actually no point in doing that processing for
+ % the sc shape fonts either! This is because the glyph names
+ % used in padrc8r are the same as those used in padr8r (and
+ % padri8r), and thus the smallcaps glyphs will already have
+ % been delt with by the code for lower case glyphs. Another
+ % consequence is that the same ETX files as are used for
+ % the other shapes should be used for the sc shape.
+ \installfont {padrc8t}{padrc8r,newlatin option nosc}{t1} {T1}{pad}{m}{sc}{}
+ \installfont {padrc7t}{padrc8r,newlatin option nosc}{ot1} {OT1}{pad}{m}{sc}{}
+ \installfont {padr8i}{padr8r,textcomp}{ts1} {TS1}{pad}{m}{n}{}
+ \installfontas{padr8i} {TS1}{pad}{m}{sc}{}
+ \installfont {padri8t}{padri8r,newlatin option nosc}{t1} {T1}{pad}{m}{it}{}
+ \installfont {padri7t}{padri8r,newlatin option nosc}{ot1} {OT1}{pad}{m}{it}{}
+ \installfont {padri8i}{padri8r,textcomp}{ts1} {TS1}{pad}{m}{it}{}
+ \installfont {padro8t}{padro8r,newlatin option nosc}{t1} {T1}{pad}{m}{sl}{}
+ \installfont {padro7t}{padro8r,newlatin option nosc}{ot1} {OT1}{pad}{m}{sl}{}
+ \installfont {padro8i}{padro8r,textcomp}{ts1} {TS1}{pad}{m}{sl}{}
+
+ \installfont {pads8t}{pads8r,newlatin option nosc}{t1} {T1}{pad}{sb}{n}{}
+ \installfont {pads7t}{pads8r,newlatin option nosc}{ot1} {OT1}{pad}{sb}{n}{}
+ \installfont {padsc8t}{padsc8r,newlatin option nosc}{t1} {T1}{pad}{sb}{sc}{}
+ \installfont {padsc7t}{padsc8r,newlatin option nosc}{ot1} {OT1}{pad}{sb}{sc}{}
+ \installfont {pads8i}{pads8r,textcomp}{ts1} {TS1}{pad}{sb}{n}{}
+ \installfontas{pads8i} {TS1}{pad}{sb}{sc}{}
+ \installfont {padsi8t}{padsi8r,newlatin option nosc}{t1} {T1}{pad}{sb}{it}{}
+ \installfont {padsi7t}{padsi8r,newlatin option nosc}{ot1} {OT1}{pad}{sb}{it}{}
+ \installfont {padsi8i}{padsi8r,textcomp}{ts1} {TS1}{pad}{sb}{it}{}
+ \installfont {padso8t}{padso8r,newlatin option nosc}{t1} {T1}{pad}{sb}{sl}{}
+ \installfont {padso7t}{padso8r,newlatin option nosc}{ot1} {OT1}{pad}{sb}{sl}{}
+ \installfont {padso8i}{padso8r,textcomp}{ts1} {TS1}{pad}{sb}{sl}{}
+
+ % There is however no padbc8r font; hence the sc shape of
+ % the b series must still be faked, just as above.
+ \installfont {padb8t}{padb8r,newlatin}{t1} {T1}{pad}{b}{n}{}
+ \installfont {padb7t}{padb8r,newlatin}{ot1} {OT1}{pad}{b}{n}{}
+ \installfont {padbc8t}{padb8r,newlatin}{t1c} {T1}{pad}{b}{sc}{}
+ \installfont {padbc7t}{padb8r,newlatin}{ot1c} {OT1}{pad}{b}{sc}{}
+ \installfont {padb8i}{padb8r,textcomp}{ts1} {TS1}{pad}{b}{n}{}
+ \installfontas{padb8i} {TS1}{pad}{b}{sc}{}
+ \installfont {padbi8t}{padbi8r,newlatin option nosc}{t1} {T1}{pad}{b}{it}{}
+ \installfont {padbi7t}{padbi8r,newlatin option nosc}{ot1} {OT1}{pad}{b}{it}{}
+ \installfont {padbi8i}{padbi8r,textcomp}{ts1} {TS1}{pad}{b}{it}{}
+ \installfont {padbo8t}{padbo8r,newlatin option nosc}{t1} {T1}{pad}{b}{sl}{}
+ \installfont {padbo7t}{padbo8r,newlatin option nosc}{ot1} {OT1}{pad}{b}{sl}{}
+ \installfont {padbo8i}{padbo8r,textcomp}{ts1} {TS1}{pad}{b}{sl}{}
+\endinstallfonts
+
+
+% The "pad" family installed above is however still far from perfect.
+% The `ff', `ffi', and `ffl' ligatures are fakes, since those aren't
+% available in the fonts used. There are however such glyphs in the
+% expert (8x) companions of the fonts used above, and hence the
+% results will be better if these resources can be combined.
+%
+% One of the great advantages with TeX, virtual fonts, and fontinst
+% is the ease with which one can combine glyphs from (what the foundry
+% has packaged as) several different fonts into a single font;
+% if \installfont is given the metrics of two fonts, and some glyph
+% is available in one font but not the other, then fontinst will
+% automatically take it from the font where it was available.
+% Hence one can fill in (at least some of) the blanks of one font
+% by also listing a second font in the metrics argument of
+% \installfont. It will do the right thing automatically.
+\installfonts
+ \installfamily{OT1}{padx}{}
+ \installfamily{T1}{padx}{}
+ \installfamily{TS1}{padx}{}
+ % The "padx" family name used here is mainly motivated by
+ % tradition. It has been considered useful to simultaneously
+ % on a single system have both a family of virtual fonts which
+ % do not make use of the expert set of base fonts, and a family
+ % of virtual fonts which do make use of the expert set of base
+ % fonts. For this to work, the different fonts must have
+ % different names. In the Fontname scheme, this is accomplished
+ % by including an "x" variant letter in the names to signify that
+ % the font is "expertized". In LaTeX there is no proper standard
+ % for this, but the custom is to similarly append an "x" to the
+ % basic three letter family name, thus yielding "padx" instead
+ % of "pad".
+
+ % The Fontname scheme is in this case further complicated by
+ % a desire to avoid names of more than eight characters
+ % (a limit which is important in many old file systems).
+ % Therefore many of the two-character variants starting with
+ % 9 is a combination of an encoding variant with one or two
+ % other variants (most commonly the "x" variant). The commands
+ % below utilize these abbreviations (but there is no software
+ % involved which would require them to).
+ \installfont {padr9e}{padr8r,padr8x,newlatin}{t1} {T1}{padx}{m}{n}{}
+ \installfont {padr9t}{padr8r,padr8x,newlatin}{ot1} {OT1}{padx}{m}{n}{}
+ % Besides the extra ligatures, the upright 8x fonts also contain
+ % a proper smallcaps alphabet. This makes it possible to make do
+ % without the -c8r fonts. The commands below will make a font
+ % using the upper case from padr8r and (as lower case) the
+ % small caps from padr8x.
+ \installfont {padrc9e}{padr8r,padr8x,newlatin}{t1c} {T1}{padx}{m}{sc}{}
+ \installfont {padrc9t}{padr8r,padr8x,newlatin}{ot1c} {OT1}{padx}{m}{sc}{}
+ \installfont {padr9i}{padr8r,padr8x,textcomp}{ts1} {TS1}{padx}{m}{n}{}
+ \installfontas{padr9i} {TS1}{padx}{m}{sc}{}
+ \installfont {padri9e}{padri8r,padri8x,newlatin option nosc}{t1} {T1}{padx}{m}{it}{}
+ \installfont {padri9t}{padri8r,padri8x,newlatin option nosc}{ot1} {OT1}{padx}{m}{it}{}
+ \installfont {padri9i}{padri8r,padri8x,textcomp}{ts1} {TS1}{padx}{m}{it}{}
+ \installfont {padro9e}{padro8r,padro8x,newlatin option nosc}{t1} {T1}{padx}{m}{sl}{}
+ \installfont {padro9t}{padro8r,padro8x,newlatin option nosc}{ot1} {OT1}{padx}{m}{sl}{}
+ \installfont {padro9i}{padro8r,padro8x,textcomp}{ts1} {TS1}{padx}{m}{sl}{}
+
+ \installfont {pads9e}{pads8r,pads8x,newlatin}{t1} {T1}{padx}{sb}{n}{}
+ \installfont {pads9t}{pads8r,pads8x,newlatin}{ot1} {OT1}{padx}{sb}{n}{}
+ \installfont {padsc9e}{pads8r,pads8x,newlatin}{t1c} {T1}{padx}{sb}{sc}{}
+ \installfont {padsc9t}{pads8r,pads8x,newlatin}{ot1c} {OT1}{padx}{sb}{sc}{}
+ \installfont {pads9i}{pads8r,pads8x,textcomp}{ts1} {TS1}{padx}{sb}{n}{}
+ \installfontas{pads9i} {TS1}{padx}{sb}{sc}{}
+ \installfont {padsi9e}{padsi8r,padsi8x,newlatin option nosc}{t1} {T1}{padx}{sb}{it}{}
+ \installfont {padsi9t}{padsi8r,padsi8x,newlatin option nosc}{ot1} {OT1}{padx}{sb}{it}{}
+ \installfont {padsi9i}{padsi8r,padsi8x,textcomp}{ts1} {TS1}{padx}{sb}{it}{}
+ \installfont {padso9e}{padso8r,padso8x,newlatin option nosc}{t1} {T1}{padx}{sb}{sl}{}
+ \installfont {padso9t}{padso8r,padso8x,newlatin option nosc}{ot1} {OT1}{padx}{sb}{sl}{}
+ \installfont {padso9i}{padso8r,padso8x,textcomp}{ts1} {TS1}{padx}{sb}{sl}{}
+
+ \installfont {padb9e}{padb8r,padb8x,newlatin}{t1} {T1}{padx}{b}{n}{}
+ \installfont {padb9t}{padb8r,padb8x,newlatin}{ot1} {OT1}{padx}{b}{n}{}
+ % The padb8x font does not contain a smallcaps alphabet --
+ % hence in this case the newlatin.mtx file reverts to faking
+ % such an alphabet by shrinking the upper case. The commands
+ % can however be the same as above!
+ \installfont {padbc9e}{padb8r,padb8x,newlatin}{t1c} {T1}{padx}{b}{sc}{}
+ \installfont {padbc9t}{padb8r,padb8x,newlatin}{ot1c} {OT1}{padx}{b}{sc}{}
+ \installfont {padb9i}{padb8r,padb8x,textcomp}{ts1} {TS1}{padx}{b}{n}{}
+ \installfontas{padb9i} {TS1}{padx}{b}{sc}{}
+ \installfont {padbi9e}{padbi8r,padbi8x,newlatin option nosc}{t1} {T1}{padx}{b}{it}{}
+ \installfont {padbi9t}{padbi8r,padbi8x,newlatin option nosc}{ot1} {OT1}{padx}{b}{it}{}
+ \installfont {padbi9i}{padbi8r,padbi8x,textcomp}{ts1} {TS1}{padx}{b}{it}{}
+ \installfont {padbo9e}{padbo8r,padbo8x,newlatin option nosc}{t1} {T1}{padx}{b}{sl}{}
+ \installfont {padbo9t}{padbo8r,padbo8x,newlatin option nosc}{ot1} {OT1}{padx}{b}{sl}{}
+ \installfont {padbo9i}{padbo8r,padbo8x,textcomp}{ts1} {TS1}{padx}{b}{sl}{}
+\endinstallfonts
+
+
+% Finally we get to my personal favourite -- the families with hanging
+% (a.k.a. oldstyle) figures. From a historical point of view, this is
+% really the most correct appearence of these fonts, because in the 16th
+% century (when Claude Garamond designed the metal types after which the
+% AGaramond fonts where modelled) there was no such thing as lining
+% figures; all figures were hanging.
+%
+% The 8x fonts all contain a suitable set of hanging figures. This makes
+% it very straightforward to make use of these instead of the lining
+% digits of the base fonts. One simply has to make use of ETX files
+% which selects these glyphs hanging figure glyphs instead of the
+% lining figure glyphs.
+\installfonts
+ \installfamily{OT1}{padj}{}
+ \installfamily{T1}{padj}{}
+ \installfamily{TS1}{padj}{}
+ % Another custom: a "j" (the Fontname hanging figure variant letter)
+ % is appended to the LaTeX family name to distinguish between
+ % lining and hanging figure families.
+
+ \installfont {padr9d}{padr8r,padr8x,newlatin}{t1j} {T1}{padj}{m}{n}{}
+ \installfont {padr9o}{padr8r,padr8x,newlatin}{ot1j} {OT1}{padj}{m}{n}{}
+ \installfont {padrc9d}{padr8r,padr8x,newlatin}{t1cj} {T1}{padj}{m}{sc}{}
+ \installfont {padrc9o}{padr8r,padr8x,newlatin}{ot1cj} {OT1}{padj}{m}{sc}{}
+ \installfont {padr9i}{padr8r,padr8x,textcomp}{ts1} {TS1}{padj}{m}{n}{}
+ \installfontas{padr9i} {TS1}{padj}{m}{sc}{}
+ \installfont {padri9d}{padri8r,padri8x,newlatin option nosc}{t1j} {T1}{padj}{m}{it}{}
+ \installfont {padri9o}{padri8r,padri8x,newlatin option nosc}{ot1j} {OT1}{padj}{m}{it}{}
+ \installfont {padri9i}{padri8r,padri8x,textcomp}{ts1} {TS1}{padj}{m}{it}{}
+ \installfont {padro9d}{padro8r,padro8x,newlatin option nosc}{t1j} {T1}{padj}{m}{sl}{}
+ \installfont {padro9o}{padro8r,padro8x,newlatin option nosc}{ot1j} {OT1}{padj}{m}{sl}{}
+ \installfont {padro9i}{padro8r,padro8x,textcomp}{ts1} {TS1}{padj}{m}{sl}{}
+
+ \installfont {pads9d}{pads8r,pads8x,newlatin}{t1j} {T1}{padj}{sb}{n}{}
+ \installfont {pads9o}{pads8r,pads8x,newlatin}{ot1j} {OT1}{padj}{sb}{n}{}
+ \installfont {padsc9d}{pads8r,pads8x,newlatin}{t1cj} {T1}{padj}{sb}{sc}{}
+ \installfont {padsc9o}{pads8r,pads8x,newlatin}{ot1cj} {OT1}{padj}{sb}{sc}{}
+ \installfont {pads9i}{pads8r,pads8x,textcomp}{ts1} {TS1}{padj}{sb}{n}{}
+ \installfontas{pads9i} {TS1}{padj}{sb}{sc}{}
+ \installfont {padsi9d}{padsi8r,padsi8x,newlatin option nosc}{t1j} {T1}{padj}{sb}{it}{}
+ \installfont {padsi9o}{padsi8r,padsi8x,newlatin option nosc}{ot1j} {OT1}{padj}{sb}{it}{}
+ \installfont {padsi9i}{padsi8r,padsi8x,textcomp}{ts1} {TS1}{padj}{sb}{it}{}
+ \installfont {padso9d}{padso8r,padso8x,newlatin option nosc}{t1j} {T1}{padj}{sb}{sl}{}
+ \installfont {padso9o}{padso8r,padso8x,newlatin option nosc}{ot1j} {OT1}{padj}{sb}{sl}{}
+ \installfont {padso9i}{padso8r,padso8x,textcomp}{ts1} {TS1}{padj}{sb}{sl}{}
+
+ \installfont {padb9d}{padb8r,padb8x,newlatin}{t1j} {T1}{padj}{b}{n}{}
+ \installfont {padb9o}{padb8r,padb8x,newlatin}{ot1j} {OT1}{padj}{b}{n}{}
+ \installfont {padbc9d}{padb8r,padb8x,newlatin}{t1cj} {T1}{padj}{b}{sc}{}
+ \installfont {padbc9o}{padb8r,padb8x,newlatin}{ot1cj} {OT1}{padj}{b}{sc}{}
+ \installfont {padb9i}{padb8r,padb8x,textcomp}{ts1} {TS1}{padj}{b}{n}{}
+ \installfontas{padb9i} {TS1}{padj}{b}{sc}{}
+ \installfont {padbi9d}{padbi8r,padbi8x,newlatin option nosc}{t1j} {T1}{padj}{b}{it}{}
+ \installfont {padbi9o}{padbi8r,padbi8x,newlatin option nosc}{ot1j} {OT1}{padj}{b}{it}{}
+ \installfont {padbi9i}{padbi8r,padbi8x,textcomp}{ts1} {TS1}{padj}{b}{it}{}
+ \installfont {padbo9d}{padbo8r,padbo8x,newlatin option nosc}{t1j} {T1}{padj}{b}{sl}{}
+ \installfont {padbo9o}{padbo8r,padbo8x,newlatin option nosc}{ot1j} {OT1}{padj}{b}{sl}{}
+ \installfont {padbo9i}{padbo8r,padbo8x,textcomp}{ts1} {TS1}{padj}{b}{sl}{}
+\endinstallfonts
+
+% This closes the file opened by \recordtransforms above.
+\endrecordtransforms
+
+\bye
+
+% The installations made by the above commands are certainly not
+% optimal. Some things which can be improved are:
+%
+% - Although the padrc9e, padrc9t, padsc9e, padsc9t, padrc9d,
+% padrc9o, padsc9d, and padsc9o fonts contain proper smallcaps
+% glyphs, there are no kerns between the smallcaps and
+% the upper case in these fonts, because there were no such
+% kerns in any of the fonts they are based on. There are
+% however such kerning pairs in padrc8r and padsc8r, and it is
+% quite easy to extract this information using the \reglyphfont
+% command with the settings in the csckrn2x.tex file.
+%
+% - The padrc8t, padrc7t, padsc8t, and padsc7t fonts that are
+% based on padrc8r and padsc8r respectively have hanging figures,
+% whereas the other fonts in the same family have lining figures.
+% This is only because that is how the foundry packaged the
+% glyphs into fonts, and the careful font installer might want
+% to straighten out this situation. One way to do that is
+% to make use of the unsetnum.mtx file, another is to make
+% use of the `suffix' mechanism (new in v1.923).
+%
+% - One glyph which is missing from all the fonts made above is
+% the Euro glyph (and that is kind of awkward these days, although
+% as of v1.926 textcomp.mtx fakes this using a C and two rules).
+% One way to supply a Euro glyph is to provide yet another font
+% (besides the -8r's and -8x's) as base font, if that extra
+% font contains the missing Euro glyph. The same trick can be used
+% to get greek capitals for the OT1-encoded fonts.
+
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/examples/basicex2.tex b/Master/texmf-dist/doc/fonts/fontinst/base/examples/basicex2.tex
new file mode 100644
index 00000000000..74fe2a4df5a
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/fontinst/base/examples/basicex2.tex
@@ -0,0 +1,50 @@
+%
+% basicex2.tex
+%
+% fontinst command file for writing map file fragments for
+% the raw fonts used by the fonts made in basicex.tex.
+%
+
+\input finstmsc.sty
+
+% At this point, you might want to change some settings
+% to make the map file fragments written better adjusted
+% to your particular system. Some common examples are:
+%
+% \resetstr{PSfontsuffix}{.pfb}
+%
+% which is useful if the actual fonts are in PFB format.
+%
+% \AssumeLWFN
+%
+% This is useful if the font files are named according to
+% the old Mac OS Classic convention for PostScript fonts
+% (names like AGarBolIta).
+
+\adddriver{dvips}{dvips.map}
+% This causes a .map file for dvips to be written.
+% It is probably better to choose a name that has to
+% do with the fonts than to use `dvips.map'.
+% In some systems, there is a program updmap which combines
+% several small .map files such as this one into a large
+% psfonts.map file.
+\adddriver{dvipdfm}{dvipdfm.map}
+% Similar file for dvipdfm.
+\adddriver{pltotf}{pltotf-script.sh}
+% A shell script that runs pltotf on those .pl files
+% which you need to turn into .tfm files.
+\adddriver{debug}{mapdump.txt}
+% This file contains the available data in a human-readable
+% format. This is useful if your dvi driver uses some other
+% kind of map file.
+
+\input basicex.recs
+% This is where all the work is done.
+
+\donedrivers
+% This closes the files and does some cleanup.
+
+\bye
+
+
+
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/manual/fontinst.dvi b/Master/texmf-dist/doc/fonts/fontinst/base/manual/fontinst.dvi
new file mode 100644
index 00000000000..ae8133acad4
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/fontinst/base/manual/fontinst.dvi
Binary files differ
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/manual/fontinst.pdf b/Master/texmf-dist/doc/fonts/fontinst/base/manual/fontinst.pdf
new file mode 100644
index 00000000000..20c50851cdd
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/fontinst/base/manual/fontinst.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/manual/fontinst.tex b/Master/texmf-dist/doc/fonts/fontinst/base/manual/fontinst.tex
new file mode 100644
index 00000000000..19f5f012231
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/fontinst/base/manual/fontinst.tex
@@ -0,0 +1,4160 @@
+%%% ====================================================================
+%%% @LaTeX-file{
+%%% author = "Alan Jeffrey and Rowland McDonnell and
+%%% Ulrik Vieth and Lars Hellstr{\"o}m",
+%%% version = "1.928",
+%%% date = "2004-12-16",
+%%% time = "12:18:32 +01:00",
+%%% filename = "fontinst.tex",
+%%% email = "fontinst@tug.org",
+%%% checksum = "",
+%%% codetable = "ISO/ASCII",
+%%% keywords = "fontinst, TeX, PostScript, documentation",
+%%% supported = "yes",
+%%% abstract = "This is the documentation for the fontinst
+%%% font installation package.",
+%%% package = "fontinst",
+%%% dependencies = "ltxguide.cls, url.sty, xspace.sty"
+%%% }
+%%% ====================================================================
+
+% Copyright 1993, 1994, 1995, 1996 Alan Jeffrey
+
+% Modified by Rowland McDonnell June 1998
+% Modified and revised by Ulrik Vieth June 1998
+% Modified by Lars Hellstr\"om July 2004
+
+
+\documentclass[a4paper]{ltxguide}
+\usepackage[OT1]{fontenc}
+\usepackage{url,xspace}
+\usepackage{graphicx}
+
+\IfFileExists{palatino.flag}{
+ \renewcommand\rmdefault{ppl}
+}
+%\renewcommand\rmdefault{padx}
+%\renewcommand\rmdefault{pmnx}
+
+% \MakeShortVerb{\|}
+
+
+% Title page and running heads.
+
+\makeatletter
+\newcommand{\subtitle}[1]{\renewcommand{\@subtitle}{#1}}
+\newcommand{\version}[1]{\renewcommand{\@version}{#1}}
+\newcommand{\illustration}[1]{\renewcommand{\@illustration}{#1}}
+
+\newcommand{\@subtitle}{}
+\newcommand{\@version}{???}
+\newcommand{\@illustration}{cover.eps}
+
+% \pagestyle{myheadings}
+% \AtBeginDocument{\markright{\small\itshape
+% \@author\hfill\@title: \@subtitle\quad}}
+
+
+\renewcommand{\maketitle}{{%
+ \thispagestyle{empty}%
+ \normalfont\centering
+ \null
+ {\fontsize{100}{100}\textit{\@title}}%
+ \par\bigskip
+ {\Large\textbf{\@subtitle}}%
+ \vfill
+ \includegraphics[width=\textwidth]{\@illustration}%
+ \vfill
+ {\Large\textbf{%
+ \def\and{\egroup\qquad\hbox\bgroup}
+ \leavevmode \hbox{\@author}\\[\smallskipamount]
+ \@title~v\@version
+ \quad\textperiodcentered\quad \@date}}%
+ \clearpage
+}}
+\makeatother
+
+
+% Set lists tighter (assuming non-zero \parskip).
+
+\makeatletter
+\renewcommand{\@listI}{%
+ \leftmargin\leftmargini
+ \parsep\medskipamount
+ \itemsep\z@ % + parsep
+ \topsep\z@ % + parskip
+ \partopsep\z@
+}
+\newenvironment{isyntax}{%
+ \let\\\@centercr
+ \list{}{%
+ \itemsep \z@
+ \itemindent -1.5em%
+ \listparindent \itemindent
+ \advance \leftmargin 1.5em%
+ }%
+ \advance \rightskip \z@\@plus0.7\linewidth \relax
+ \linepenalty=100\relax
+ \item\relax
+}{\endlist}
+\makeatother
+
+\newenvironment{smalldes}{%
+ \list{}{%
+ \setlength\labelwidth{0pt}%
+ \setlength\itemindent{-\leftmargin}%
+ \setlength\listparindent{1em}%
+ \setlength\parsep{0pt}%
+ \setlength\itemsep{0pt plus 1pt}%
+ \setlength\topsep{\itemsep}%
+ \let\makelabel\descriptionlabel
+ }%
+}{\endlist}
+
+\newenvironment{hackernote}{%
+ \list{}{
+ \setlength{\leftmargin}{0pt}%
+ \setlength\labelwidth{0pt}%
+ \setlength{\listparindent}{1.4em}%
+ \setlength{\parsep}{0pt plus 1pt}%
+ \setlength{\itemsep}{\medskipamount}%
+ }\item[]%
+ \small
+ \textit{Note for hackers.}\hspace{0.5em}%
+}{\endlist}
+
+% % I don't use the <...> feature for verbatim,
+% % so I undo that ltxguide feature.
+% \makeatletter
+% \renewcommand{\verbatim@font}{%
+% \normalfont \ttfamily
+% % \catcode`\<=\active
+% % \catcode`\>=\active
+% }
+% \makeatother
+
+
+% ltxguide.cls decl environment, but with equal space above and
+% below.
+\DeleteShortVerb{\|}
+\makeatletter
+\newenvironment{decl*}[1][]{%
+ \par
+ \small\addvspace{2.3ex}%
+ \vskip -\parskip
+ \ifx\relax#1\relax
+ \def\@decl@date{}%
+ \else
+ \def\@decl@date{\NEWfeature{#1}}%
+ \fi
+ \noindent\hspace{-\leftmargini}%
+ \begin{tabular}{|l|}%
+ \hline\ignorespaces
+}{%
+ \\\hline
+ \end{tabular}%
+ \nobreak\@decl@date\par\nobreak
+ \vspace{2.3ex}\vskip -\parskip
+}
+\makeatother
+\MakeShortVerb{\|}
+
+
+% Set spacing around captions.
+
+\setlength{\abovecaptionskip}{\medskipamount}
+\setlength{\belowcaptionskip}{\medskipamount}
+
+% Markup for logos, file types, programs, etc.
+
+\newcommand*{\meta}{\m}
+\newcommand*{\marg}{\arg}
+\newcommand*{\parg}[1]{\texttt{(}\m{#1}\texttt{)}}
+
+\newcommand*{\cs}[1]{\texttt{\char`\\ #1}\xspace}
+
+\newcommand*{\OzTeX}{O\kern-.03em z\kern-.15em\TeX}
+\newcommand*{\OzMF}{O\kern-.03em zMF}
+\newcommand*{\OzTools}{O\kern-.03em z\kern-.15em Tools}
+
+\newcommand{\PS}{Post\-Script\xspace}
+\newcommand{\TT}{True\-Type\xspace}
+
+\newcommand*{\setfilename}[1]{\texttt{#1}}
+\newcommand*{\setdotfilename}[1]{\setfilename{.#1}}
+\newcommand*{\setpackagename}[1]{\textsf{#1}}
+
+\newcommand{\dvips} {\setpackagename{dvips}\xspace}
+\newcommand{\Dvips} {\setpackagename{Dvips}\xspace}
+\newcommand{\fontinst}{\setpackagename{font\-inst}\xspace}
+\newcommand{\Fontinst}{\setpackagename{Font\-inst}\xspace}
+\newcommand{\fontdoc}{\setpackagename{font\-doc}\xspace}
+\newcommand{\Fontdoc}{\setpackagename{Font\-doc}\xspace}
+
+% \show\fontname
+\newcommand{\fontnamekb}{fontname\xspace}
+\newcommand{\Fontnamekb}{Fontname\xspace}
+
+\newcommand{\mf} {\setfilename{mf}\xspace}
+\newcommand{\Mf} {\setfilename{Mf}\xspace}
+\newcommand{\vf} {\setfilename{vf}\xspace}
+\newcommand{\Vf} {\setfilename{Vf}\xspace}
+\newcommand{\pl} {\setfilename{pl}\xspace}
+\newcommand{\Pl} {\setfilename{Pl}\xspace}
+\newcommand{\fd} {\setfilename{fd}\xspace}
+\newcommand{\Fd} {\setfilename{Fd}\xspace}
+\newcommand{\pk} {\setfilename{pk}\xspace}
+\newcommand{\Pk} {\setfilename{Pk}\xspace}
+\newcommand{\afm}{\setfilename{afm}\xspace}
+\newcommand{\Afm}{\setfilename{Afm}\xspace}
+\newcommand{\vpl}{\setfilename{vpl}\xspace}
+\newcommand{\Vpl}{\setfilename{Vpl}\xspace}
+\newcommand{\tfm}{\setfilename{tfm}\xspace}
+\newcommand{\Tfm}{\setfilename{Tfm}\xspace}
+\newcommand{\mtx}{\setfilename{mtx}\xspace}
+\newcommand{\Mtx}{\setfilename{Mtx}\xspace}
+\newcommand{\etx}{\setfilename{etx}\xspace}
+\newcommand{\Etx}{\setfilename{Etx}\xspace}
+\newcommand{\pfa}{\setfilename{pfa}\xspace}
+\newcommand{\Pfa}{\setfilename{Pfa}\xspace}
+\newcommand{\pfb}{\setfilename{pfb}\xspace}
+\newcommand{\Pfb}{\setfilename{Pfb}\xspace}
+\newcommand{\dvi}{\setfilename{dvi}\xspace}
+\newcommand{\Dvi}{\setfilename{Dvi}\xspace}
+\newcommand{\pdf}{\setfilename{pdf}\xspace}
+\newcommand{\Pdf}{\setfilename{Pdf}\xspace}
+\newcommand{\ttf}{\setfilename{ttf}\xspace}
+\newcommand{\Ttf}{\setfilename{Ttf}\xspace}
+
+\newcommand{\vftovp}{\setpackagename{vftovp}\xspace}
+\newcommand{\vptovf}{\setpackagename{vptovf}\xspace}
+\newcommand{\pltotf}{\setpackagename{pltotf}\xspace}
+\newcommand{\tftopl}{\setpackagename{tftopl}\xspace}
+
+\newcommand{\BibTeX}{Bib\TeX}
+
+
+% % Stolen from Dr Knuth
+% \makeatletter % borrow the private macros of PLAIN (with care)
+% \def\oct#1{\hbox{\rm\'{}\kern-.2em\it#1\/\kern.05em}} % octal constant
+% \def\hex#1{\hbox{\rm\H{}\tt#1}} % hexadecimal constant
+% % macros for font tables
+% \def\oddline#1{\cr
+% \noalign{\nointerlineskip}
+% \multispan{19}\hrulefill&
+% \setbox0=\hbox{\lower 2.3pt\hbox{\hex{#1x}}}\smash{\box0}\cr
+% \noalign{\nointerlineskip}}
+% \def\evenline{\cr\noalign{\hrule}}
+% \def\chartstrut{\lower4.5pt\vbox to14pt{}}
+% \def\beginchart#1{$$\global\count@=0 #1
+% \halign to\hsize\bgroup
+% \chartstrut##\tabskip0pt plus10pt&
+% &\hfil##\hfil&\vrule##\cr
+% \lower6.5pt\null
+% &&&\oct0&&\oct1&&\oct2&&\oct3&&\oct4&&\oct5&&\oct6&&\oct7&\evenline}
+% \def\endchart{\raise11.5pt\null&&&\hex 8&&\hex 9&&\hex A&&\hex B&
+% &\hex C&&\hex D&&\hex E&&\hex F&\cr\egroup$$}
+% \def\*{\global\advance\count@ by1 }
+% \def\:{\setbox0=\hbox{\char\count@}%
+% \ifdim\ht0>7.5pt\reposition
+% \else\ifdim\dp0>2.5pt\reposition\fi\fi
+% \box0\global\advance\count@ by1 }
+% \def\reposition{\setbox0=\hbox{$\vcenter{\kern2pt\box0\kern2pt}$}}
+% \def\smallchart{%
+% %\global\advance\count@ by16
+% &\oct{00x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline0
+% &\oct{01x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
+% &\oct{02x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline1
+% &\oct{03x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
+% &\oct{04x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline2
+% &\oct{05x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
+% &\oct{06x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline3
+% &\oct{07x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
+% &\oct{10x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline4
+% &\oct{11x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
+% &\oct{12x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline5
+% &\oct{13x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
+% &\oct{14x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline6
+% &\oct{15x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
+% &\oct{16x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline7
+% &\oct{17x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline}
+%
+% \def\bigchart{%
+% %\global\advance\count@ by16
+% &\oct{00x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline0
+% &\oct{01x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
+% &\oct{02x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline1
+% &\oct{03x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
+% &\oct{04x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline2
+% &\oct{05x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
+% &\oct{06x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline3
+% &\oct{07x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
+% &\oct{10x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline4
+% &\oct{11x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
+% &\oct{12x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline5
+% &\oct{13x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
+% &\oct{14x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline6
+% &\oct{15x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
+% &\oct{16x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline7
+% &\oct{17x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
+% &\oct{20x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline8
+% &\oct{21x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
+% &\oct{22x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline9
+% &\oct{23x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
+% &\oct{24x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{A}
+% &\oct{25x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
+% &\oct{26x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{B}
+% &\oct{27x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
+% &\oct{30x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{C}
+% &\oct{31x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
+% &\oct{32x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{D}
+% &\oct{33x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
+% &\oct{34x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{E}
+% &\oct{35x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
+% &\oct{36x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{F}
+% &\oct{37x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline}
+%
+% % \font\xrm = cmr10 at 10pt % change this line to test font
+% % \beginchart\xrm \normalchart \endchart
+%
+% \newcommand{\smallfontchart}[1]{%
+% \font\xrm = #1 \beginchart\xrm \smallchart \endchart}
+% \newcommand{\bigfontchart}[1]{%
+% \font\xrm = #1 \beginchart\xrm \bigchart \endchart}
+%
+% % \smallfontchart{cmr10 at 10pt}
+% % \bigfontchart{ecrm1000 at 10pt}
+% \makeatother
+% % End stolen from Dr Knuth
+
+
+
+\title{fontinst}
+\subtitle{Font installation software for \TeX}
+\author{Alan Jeffrey\and Rowland McDonnell\and Lars Hellstr\"om}
+\illustration{roadmap.eps}
+\version{1.9}
+\date{December 2004}
+
+\begin{document}
+
+\maketitle
+
+\begin{itshape}
+ This manual is currently being rewritten, and may therefore be a
+ bit disorganised. For authoritative information on command syntaxes
+ and the like, see the Literate Programming sources for
+ \fontinst. The main file there is \textsl{\texttt{fisource.tex}}.
+\end{itshape}
+
+\bigskip
+
+\begin{footnotesize}
+ This manual describes the \texttt{fontinst} software for converting
+ fonts from Adobe Font Metric format to forms readable by \TeX. This
+ manual should be distributed with the \texttt{fontinst} software,
+ which is available by anonymous FTP from
+ \url{ftp://ftp.tex.ac.uk/tex-archive/fonts/utilities/fontinst}, and
+ on the various CD-ROMs containing material from the CTAN archives.
+ Please do not contact the author directly for copies.
+
+ If you would like to report a bug with \texttt{fontinst}, please
+ mail \url{fontinst@tug.org}. The mail will be sent to the
+ \texttt{fontinst} mailing list. If you would like to be on the
+ \texttt{fontinst} mailing list, see
+ \url{http://tug.org/mailman/listinfo/fontinst}.
+\end{footnotesize}
+
+\tableofcontents
+
+% \vfill
+
+\clearpage
+
+
+% \section{Introduction}
+%
+% Digital fonts, as they may be bought from a foundry or other supplier,
+% are usually not directly usable with \LaTeX. An obvious problem can be
+% that the font information is not available in a format that \LaTeX\
+% understands. A more subtle problem is that the fonts are often
+% organised in a way that is unsuitable for automatic typesetting.
+% % \Fontinst was written to overcome these problems.
+%
+% % The main thing \fontinst does is creating virtual fonts (\vf's).
+%
+%
+% % The \fontinst package is a set of \TeX\ macros written to create
+% % virtual fonts for use with \TeX.
+
+
+\section{Defining terms}
+
+This is rather a large and perhaps tedious section. You might be
+tempted to skip it so you can get to some more direct information on
+how to use \fontinst. That's fine if you understand everything about
+how \TeX\ handles fonts. If not, I suggest you at least skim though
+this section.
+
+\subsection{What's a font?}
+
+Once upon a time, this question was easily answered: a font is a
+set of type in one size, style, etc. There used to be no
+ambiguity, because a font was a collection of chunks of type metal
+kept in a drawer, one drawer for each font.
+
+These days, with digital typesetting, things are more complicated.
+What a font `is' isn't easy to pin down. A typical use of a \PS
+font with \LaTeX\ might use these elements:
+\begin{itemize}
+\item Type 1 printer font file
+\item Bitmap screen font file
+\item Adobe font metric file (\afm file)
+\item \TeX\ font metric file (\tfm file)
+\item Virtual font file (\vf file)
+\item font definition file (\fd file)
+\end{itemize}
+Looked at from a particular point of view, each of these files
+`is' the font. So what's going on?
+
+
+\subsubsection{Type 1 printer font files}
+
+These files contain the information needed by your printer to draw
+the shapes of all the characters in a font. They're typically
+files with a \pfa or \pfb extension; on Macs they're usually in
+files of type `LWFN' which usually have icons that look like a
+laser printer. The information in all these files is basically
+the same: the only difference is in its representation. \pfa
+stands for `printer font ASCII', while \pfb stands for `printer
+font binary'. That is, \pfa files contain plain text information,
+while \pfb files contain the same information encoded as
+machine-readable binary data.
+
+If you have Adobe Type Manager (ATM) installed on your computer,
+ATM will use these files to draw an accurate representation of the
+letters on the screen of your computer when you are previewing a
+\TeX\ document.
+
+Printer font files are not used directly by \TeX\ at all -- \TeX\
+just prepares a \dvi file that refers to the fonts by name and the
+characters by number: \TeX\ knows nothing about the shapes
+involved. The DVI driver uses the printer font files when you ask
+it to print the \dvi file. This means that you can produce a \dvi
+file which uses, say, Palatino, even if you do not have the
+Type~1 printer font file for this font on your computer. You will
+need to find a computer that does have Palatino before you can
+print it or preview it, though.
+
+Pdf\TeX\ is different from \TeX\ in this respect; since pdf\TeX\
+integrates most of the functionality of a DVI driver, it may be unable
+to generate working \pdf output if the some Type~1 printer font file
+is not available.
+
+
+\subsubsection{Bitmap screen font files}
+
+These files contain a low-resolution bitmap for drawing a
+representation of the font on the screen of your computer if ATM
+is not installed. In the \TeX\ world, these files are only used
+for screen previews by the DVI driver. They are kept in font
+suitcase files on Macintoshes.
+%\marginnote{And where on other computers?}
+
+
+\subsubsection{Adobe font metric files (\afm files)}
+
+These files are text files which contain information about the
+size of each character in a font, kerning and ligature
+information, and so on. They can't be used by \TeX\ directly, but
+the information they contain is essential if you want to use a
+font with \TeX. \Fontinst can create from an \afm file the
+necessary \tfm and \vf files so you can use a font with \TeX.
+Once you have created all the files you need to use a font with
+\TeX, you can remove the corresponding \afm files from your
+computer unless you have other software that needs them.
+
+The job of turning an \afm file into a set of \tfm and \vf files
+is one of the main uses for \fontinst. Most of this document is
+concerned with this process, so don't worry if it seems a bit
+vague at the moment.
+
+
+\subsubsection{\TeX\ font metric files (\tfm files)}
+
+These are binary data files in a format designed for use by \TeX\
+which contain (more-or-less) the same information as \afm files:
+the size of each character in a font (font metric data), kerning,
+and ligature information.
+
+When you select a font in \TeX, you are telling \TeX\ to typeset
+using a particular \tfm file; from \TeX's point of view, a \tfm
+file (and nothing else) \emph{is} a font. \TeX\ itself doesn't
+see printer font files, screen bitmaps, \pk files, \vf files, or
+anything else to do with fonts: only \tfm files.
+
+\TeX\ uses these \tfm files to decide where to put characters when
+typesetting. From \TeX's point of view, \tfm files are fonts,
+even though they contain no information about the shape of
+letters, and are not used by anything except \TeX\ -- once you
+have produced a \dvi file, you don't need the \tfm files to print
+it out. (This is a slight lie: \dvips can read \tfm files
+corresponding to \PS and \TT fonts so it can modify the metrics
+slightly to improve the letterspacing at your chosen output
+resolution. This is an optional minor tweak and not an essential
+part of the output process.)
+
+
+\subsubsection{Property list files (\pl files)}
+
+\pl files are human-readable text files which contain all the font
+metric, kerning, ligature, and other information needed to create
+a \tfm file. You can convert between the two file formats using
+\tftopl and \pltotf.
+
+
+\subsubsection{Virtual font files (\vf files)}
+
+These are binary data files in a format designed for use by \TeX\
+\dvi drivers. They're main purpose in life is to let you use
+fonts in different encodings to the standard \TeX\ encodings.
+These files are used by \dvi driver software only.
+
+They are used only by \dvi drivers to work out what it should
+\emph{really} print when you ask for a particular character.
+Technically they are like subroutine libraries for \dvi drivers,
+with one subroutine for each character in the virtual font: when
+the \dvi driver sees a \dvi command to set a character from a virtual
+font, it will execute a sequence of \dvi commands (the ``mapcommands
+property'' of this character) that it reads in the \vf file. You need
+not worry about the details of this, as \fontinst deals with them for
+you. Creating and using virtual fonts is what this document is about,
+so don't worry if this doesn't make sense yet. (After all, how much
+do you need to know about the inner workings of \dvi files to typeset
+and print \TeX\ documents?)
+
+Each \vf file has a \tfm file with the same name. To use a
+virtual font, you select the \tfm file as the font to use in your
+document. When the \dvi driver comes across this \tfm file in the
+\dvi file, it looks up the \vf file and uses that to decide what
+to do.
+
+
+\subsubsection{Virtual property list files (\vpl files)}
+
+\vpl files are human-readable text files which contain all the
+font metric, kerning, mapping, and other information needed to
+create a \vf and \tfm pair.
+
+\vptovf will create a \vf/\tfm pair from a \vpl file. \vftovp
+will create a \vpl from a \vf/\tfm pair. \vftovp also needs to be
+able to read all the \tfm files that are referred to by a \vf to
+recreate the \vpl\ -- it looks at the checksums to verify that
+everything's okay.
+
+
+\subsubsection{Font definition files (\fd files)}
+
+These are files containing commands to tell \LaTeX\ which \tfm
+files to associate with a request for a font using \LaTeX's font
+selection commands.
+
+For example, here is a small and edited part of the \fd file
+supplied with \setpackagename{PSNFSS} to allow you to use the
+Adobe Times font in T1 encoding:
+
+\begin{verbatim}
+ \ProvidesFile{t1ptm.fd}
+ [1997/02/11 Fontinst v1.6 font definitions for T1/ptm.]
+
+ \DeclareFontFamily{T1}{ptm}{}
+
+ \DeclareFontShape{T1}{ptm}{m}{n} {<<->> ptmr8t}{}
+ \DeclareFontShape{T1}{ptm}{m}{it}{<<->> ptmri8t}{}
+ ...
+ \DeclareFontShape{T1}{ptm}{b}{n} {<<->> ptmb8t}{}
+ \DeclareFontShape{T1}{ptm}{b}{it}{<<->> ptmbi8t}{}
+ ...
+\end{verbatim}
+What this means is: when you use \LaTeX\ to select the font family
+|ptm| in T1 encoding in the medium series (|m|) and normal shape
+(|n|), \TeX\ uses the font \texttt{ptmr8t.tfm}. Similarly, if you
+select bold italic, \TeX\ uses \texttt{ptmbi8t.tfm}.
+
+\LaTeX\ works out which \fd file to load based on the current
+encoding and font family selected. If you've selected T1 encoded
+|ptm| like this:
+\begin{verbatim}
+ \fontencoding{T1}\fontfamily{ptm}\selectfont
+\end{verbatim}
+\LaTeX\ loads the file \url{t1ptm.fd} (if it doesn't exist, you're
+in trouble). As you can see above, this file contains information
+so that \LaTeX\ knows which \tfm file to use. So if you ask for,
+say, |T1/ptm/b/it| (T1 encoded Times-Roman, bold series, italic
+shape), you get the font \texttt{ptmbi8t}.
+
+You can find more about \fd files and \LaTeX's font selection commands
+at CTAN:
+\url{ftp://ftp.tex.ac.uk/tex-archive/macros/latex/base/fntguide.tex}
+and \url{ftp://ftp.tex.ac.uk/tex-archive/info/simple-nfss.tex} are
+both useful.
+
+
+\subsection{What does \fontinst do?}
+
+\fontinst creates \vpl and \pl files from \afm or \pl files to map
+any glyph or combination of glyphs in the original font files to
+any slot in the output font file. There, isn't that better? Off
+you go now\ldots
+
+If you're still confused, I'll explain a few things.
+\begin{description}
+\item[Glyph]
+ A glyph is an image, often associated with one or several characters.
+ Some examples of glyphs are:
+ `A', `\textsf{A}', `$\mathcal{A}$', `B', `F',
+ `{\usefont{OT1}{cmr}{m}{n}f}',
+ `{\usefont{OT1}{cmr}{m}{n}fi}', `\~{}'.
+ Fonts are collections of glyphs. \Fontinst refers to glyphs by name.
+\item[Slot]
+ This is jargon for `a numbered position in a font'. (What is
+ important is the number, and that this number refers to a position
+ in a font, but which font is usually irrelevant.)
+\item[Character]
+ The modern definition is that a character is the smallest component
+ of written language that has semantic value. Speaking of a
+ character, one refers to the abstract meaning and/or shape, rather
+ than a specific shape.
+
+ Since fonts have often contained a unique glyph for each character
+ and each usable glyph has been assigned a particular slot,
+ it is not uncommon (in particular in older terminology) to see the
+ three mixed up, usually so that one says `character' where one of
+ the other two would have been more correct. The \TeX-related font
+ file formats is no exception, as you may see examples of elsewhere
+ in this document.
+\item[Encoding]
+ There are really two different encoding concepts that one encounters
+ when using \fontinst. The differences are not great, and an
+ encoding of one kind often corresponds to an encoding of the other
+ kind, but it is not merely a matter of translation.
+
+ A \emph{\LaTeX\ encoding} is a mapping from characters (or more
+ formally \LaTeX\ Internal Character Representations) to slots.
+ In the \texttt{OT1} encoding, `\o' (or more technically `|\o|') maps
+ to slot~28, whereas in the \texttt{T1} encoding it maps to slot~248.
+ This kind of encoding affects what \TeX\ is doing; \dvi drivers are
+ not involved.
+
+ A \emph{font encoding} (or \emph{encoding vector}) is a mapping from
+ slots to glyph names. This is the kind of encoding that \fontinst
+ primarily deals with, and also the kind of encoding that \dvi
+ drivers make use of. \texttt{ot1.etx} associates slot~28 with
+ `\texttt{oslash}', whereas \texttt{t1.etx} and \texttt{EC.enc} (one
+ of several to \texttt{T1} corresponding encoding vectors that come
+ with \dvips) associates slot~28 with `\texttt{fi}'.
+
+ \LaTeX\ encodings occur in \fontinst only as names and only in
+ relation to \fd files. It is unlikely that you will need to create
+ one of your own. The mappings defined by font encodings are on the
+ other hand of great importance and \etx files are used to direct
+ the generation of virtual fonts. Advanced \fontinst users may well
+ find that they need to create new font encodings to achieve their
+ goals.
+\end{description}
+
+% You're probably familiar with ASCII
+% encoding, which has the letter `A' in slot~65, `B' in slot~66,
+% and so on. That's it, really. \TeX\ uses several different
+% encodings. The most common ones are OT1 (the original \TeX\
+% 7~bit encoding) and T1 (the newer \TeX\ 8~bit encoding).
+% % -- much more on this later.
+
+The thing is that the average \PS font comes in Adobe standard
+encoding, which, for example, has the glyph dotless~i `\i' in
+slot~245. But \TeX\ \texttt{T1} encoding expects the glyph o~dieresis
+`{\"o}' in that slot, and wants dotless~i in slot~25. So if you
+tried to use a raw \PS font with \TeX, any time you tried to get
+a `{\"o}', you'd get a `\i'; and every time you tried to get a `\i',
+you'd get a blank, because Adobe standard encoding says that
+slot~25 is empty. The process of dealing with this problem is
+called `re-encoding', and is what \fontinst helps with.
+
+This might not make much sense yet; the best thing to do is relax.
+There's a lot of things that need to be dealt with when you're
+setting up \LaTeX\ to use a new font, so you can expect to be a
+bit confused until you've done it a few times.
+
+
+\subsection{What do you do with \fontinst?}
+
+If you're using \fontinst, the usual steps you need to take to use
+an ordinary \PS text font with \LaTeX\ are these:
+
+\begin{enumerate}
+\item Give the \afm files an appropriate name.
+\item Use \fontinst to produce an |8r| encoded \pl files from
+ these \afm files.
+\item Use \fontinst to create T1 and OT1 encoded \pl and \vpl
+ files from the |8r| encoded \pl files (this procedure will also
+ create suitable \fd files).
+\item Use \pltotf to turn each \pl file into a \tfm file.
+\item Use \vptovf to turn each \vpl file into a pair of \vf and
+ \tfm files.
+\item Move the \tfm, \vf, and \fd files into the appropriate
+ directories so \LaTeX\ can see them.
+\item Tell your DVI driver about the new font (edit \dvips's
+ \texttt{psfonts.map} file, or \OzTeX's \texttt{Default}
+ configuration file.
+\item Perhaps write a package file to make selecting the new font
+ a little easier.
+\item Test it.
+\end{enumerate}
+
+
+\section{Fontmaking commands}
+
+There are three main types of files that you may write to control what
+\fontinst does: \emph{command files} (usually with suffix
+\setdotfilename{tex}), \emph{encoding definition files} (suffix
+\setdotfilename{etx}), and \emph{metric files} (suffix
+\setdotfilename{mtx}). Command files directly tell \fontinst to do
+things, whereas the purpose of an encoding or metric file is more to
+store data, but all three file types are technically sequences of
+\TeX\ commands that \fontinst execute when reading the file. Normal
+\TeX\ syntax rules apply in all three file types, although a few
+commands may behave in unfamiliar ways.
+
+Within the command file category, it is possible to discern certain
+subcategories. Most command files are written for one particular
+task, but some are common pieces that have been factored out from
+larger command files and are merely meant to be |\input| where
+appropriate. (\setfilename{csc2x.tex} in the \fontinst distribution is
+an example of this latter kind.) One may also distinguish between
+command files that are made for use with \setfilename{fontinst.sty}
+command definitions and command files that are made for use with
+\setfilename{finstmsc.sty} command definitions. This section documents
+the commands that are particular to the former category, whereas the
+next section documents commands that are particular to the latter.
+
+
+\subsection{Install commands}
+
+The core fontmaking takes place within a block of ``install
+commands''. (This name is a bit unfortunate since nothing is actually
+installed; rather some files that need to be installed are generated.)
+Such blocks have the structure
+\begin{quote}
+ |\installfonts|\\
+ \m{install commands}\\
+ |\endinstallfonts|
+\end{quote}
+The \m{install commands} describe the fonts, glyphs and encodings used
+to build fonts, whereas the purpose of the delimiting |\installfonts|
+and |\endinstallfonts| are rather to organise the writing of \fd files.
+\begin{decl*}
+ |\installfonts|\\
+ |\endinstallfonts|
+\end{decl*}
+At |\installfonts|, \fontinst's internal list of \fd files to generate
+are cleared. At |\endinstallfonts|, \fd files are written for those
+combinations of encoding and font family that appeared in the
+\meta{install commands}.
+
+\begin{hackernote}
+ |\installfonts|, |\endinstallfonts|, and the individual
+ install commands between them also cooperate in a rather complicated
+ grouping scheme to cache glyphbases. This may interfere with
+ non-\fontinst commands in the \meta{install commands}. If for
+ example an assignment to some |\tracing|\dots\ parameter here does
+ not seem to have any effect, try making the assignment |\global|.
+\end{hackernote}
+
+The most important \meta{install command} is
+\begin{decl*}
+ |\installfont|\arg{font-name}\arg{metrics-list}\arg{etx-list}\\
+ \hspace*{1.5em}\arg{encoding}\arg{family}\arg{series}%
+ \arg{shape}\arg{size}
+\end{decl*}
+This produces a \TeX\ virtual font called \m{font-name}. The
+\meta{metrics-list} and the \meta{etx-list} determine this font,
+whereas the other arguments specify how the \fd file will declare it
+for \LaTeX. The \m{encoding}, \m{family}, \m{series}, and \m{shape}
+are precisely the NFSS parameters. The \m{size} is either a shorthand
+declared by \verb|\declaresize| (see below), or is an \fd size
+specification.
+
+Like most \fontinst lists, the elements in the \meta{metrics-list} and
+\meta{etx-list} are separated by commas (so-called comma-separated
+lists). In their simplest form, the elements of these lists are file
+names (minus suffixes): \mtx files in the \meta{metrics-list} and
+\etx files in the \meta{etx-list}. First the \mtx files are processed
+to build up a glyphbase, i.e., store definitions of glyphs and their
+metric properties in memory, and then the \etx files are processed
+(several times) to select a set of glyphs and write the corresponding
+information to a \vpl file.
+
+For example, to install the \texttt{T1}-encoded Times Roman font
+(using \texttt{t1.etx} and \texttt{latin.mtx}), you say:
+\begin{verbatim}
+ \installfont{ptmr8t}{ptmr8r,latin}{t1}
+ {T1}{ptm}{m}{n}{}
+\end{verbatim}
+To install a \texttt{OT1}-encoded Times Roman font, with a scaled
+version of Symbol for the Greek letters, you say:
+\begin{verbatim}
+ \installfont{zptmrsy}{ptmr8r,psyr scaled 1100,latin}{ot1}
+ {OT1}{ptm}{m}{n}{}
+\end{verbatim}
+
+As the second example indicates, there is more to the list items than
+just file names. In the case of an metrics list item, the syntax
+permits the two forms
+\begin{decl*}
+ \meta{filename}\meta{optional modifiers}\\
+ |\metrics| \meta{metric commands}
+\end{decl*}
+\NEWfeature{v1.923}
+where an \meta{optional modifier} is one of
+\begin{decl*}
+ \verb*| scaled |\meta{rawscale factor}\\
+ \verb*| suffix |\meta{glyph name suffix}\\
+ \verb*| encoding |\meta{etx}\\
+ \verb*| option |\meta{string}
+\end{decl*}
+A list item may contain several such modifiers, but most commonly it
+does not contain any. The
+\meta{metric commands} are explicit metric commands, as described in
+Section~\ref{Sec:Metric}; this latter feature is meant for minor
+adjustments that you don't want to bother creating a separate \mtx
+file for.
+
+The \meta{filename} above primarily refers to a file
+\meta{filename}\texttt{.mtx}, but that need not always exist before
+executing the above command. If there exists a \pl, \afm, or \vpl file
+with the right name then that is first converted to a corresponding
+\mtx file. However, a special case occurs if there is an |encoding|
+modifier: this forces conversion of a \pl or \vpl file even if an
+\mtx file exists, and also forces using the specified \etx file when
+assigning glyph names to the slots of that file. Normally the choice
+of \etx file for such conversions to \mtx is based on
+|\declareencoding| declarations.
+
+The |scaled| modifier sets the \texttt{rawscale} variable for the
+processing of that file. This has the effect of scaling all raw
+glyphs from that file to \meta{rawscale factor} per milles of their
+previous size. The |suffix| modified causes the \meta{glyph name
+suffix} to be implicitly appended to all glyphs defined by this file.
+The |option| modifier adds the \meta{string} to the list of ``options''
+for this file. The |\ifoption| command can be used in the file to test
+whether a particular string has been supplied as an option.
+
+\begin{hackernote}
+ In general, \fontinst commands process comma-separated list arguments
+ by first splitting at commas and then fully expanding each item, but
+ this \meta{metrics-list} argument is an exception. This is first
+ fully expanded (|\edef|) and then split into items. The difference
+ is that a macro used in this \meta{metrics-list} argument can expand
+ to several list items, whereas a macro used in an ordinary
+ comma-separated list argument can only expand to (part of) a single
+ list item.
+
+ The |\metrics| list items do however constitute an exception within
+ this exception. These list items are in their entirety protected
+ from the initial full expansion, so you don't have to worry about
+ peculiar fragility errors there.
+\end{hackernote}
+
+The elements in the \meta{etx-list} have fewer variants, but there is
+still a general syntax
+\begin{decl*}
+ \meta{filename}\meta{optional modifiers}
+\end{decl*}
+The \meta{optional modifier}s permitted are:
+\begin{decl*}
+ \verb*| mtxasetx|\\
+ \verb*| option |\meta{string}
+\end{decl*}
+The \texttt{option} one is as for metric files. \texttt{mtxasetx} is
+probably only relevant for use with |\installrawfont| (see below).
+
+
+\begin{decl}[v1.912]
+ |\installfontas|\arg{font-name}\\%
+ \hspace*{1.5em}\arg{encoding}\arg{family}\arg{series}%
+ \arg{shape}\arg{size}
+\end{decl}
+This install command adds an \fd entry for the \meta{font-name}, but
+it doesn't actually generate that font. Usually that font was
+generated by a previous |\installfont|, and this is used to create
+additional entries for the font.
+
+
+\begin{decl}
+ |\installrawfont|\arg{font-name}\arg{metrics-list}\arg{etx-list}\\
+ \hspace*{1.5em}\arg{encoding}\arg{family}\arg{series}%
+ \arg{shape}\arg{size}
+\end{decl}
+This is similar to |\installfont| except that it produces
+a \TeX\ raw font as \pl file rather than a virtual font. Often a \pl
+font with the specified name will already exist when this command is
+called, and that will then be overwritten. These two \pl files will
+typically be somewhat different.
+The normal reason for using this command is that one wishes to
+``refine'' the metrics of a font that was generated by transformation
+commands.
+
+For example, to install an \texttt{8r}-encoded Times Roman raw font
+(using \texttt{8r.etx} and \texttt{8r.mtx}), you say:
+\begin{verbatim}
+ \installrawfont{ptmr8r}{ptmr8r,8r}{8r}
+ {8r}{ptm}{m}{n}{}
+\end{verbatim}
+
+The effect of a
+\begin{decl*}[v1.923]
+ \meta{filename}\verb*| mtxasetx|
+\end{decl*}
+in the \meta{etx-list} is not that \meta{filename}\texttt{.etx} is
+read, but that \meta{filename}\texttt{.mtx} is read. The
+interpretation of the commands in this file is however not the
+customary, and almost the only thing paid attention to is the
+correspondence between glyph names and slot numbers that is provided
+by the |\setrawglyph| and |\setscaledrawglyph| commands; this
+correspondence is treated as if it was given by |\setslot| \dots\
+|\endsetslot| commands in an \etx file. This is however only
+guaranteed to work with transformable metric files.
+
+The purpose of this feature is to simplify installation of fonts with
+very special encodings, such as ``Dingbat'' or ``Pi'' fonts. Instead
+of creating an \etx file, which would probably only be useful with
+that particular font, one can make use of the fact that the
+interesting information is anyway available in the \mtx file. To
+install Zapf Dingbats in their default encoding, one can thus say
+\begin{verbatim}
+ \installrawfont{pzdr}{pzdr}{pzdr mtxasetx}
+ {U}{pzd}{m}{n}{}
+\end{verbatim}
+
+Unlike the case with |\installfont|, which actually creates a real
+(although virtual) font, |\installrawfont| can only create the
+metrics for a font. The \dvi driver will require some other kind of
+implementation of this font, usually an entry in some map file (e.g.
+\texttt{psfonts.map}, in the case of \dvips) that links the \TeX\ font
+name to e.g.\ a \PS\ font name and file. (Many \dvi drivers are
+configured in such a way that they, without such a map file entry,
+will call Metafont with the font name and thereby raise a sequence of
+error messages about a \setdotfilename{mf} that doesn't exist. These
+results are often rather confusing.)
+
+
+
+\begin{decl}
+ |\installfamily|\arg{encoding}\arg{family}\arg{fd-commands}
+\end{decl}
+This tells \fontinst to write an \fd file for the given combination
+of encoding and family, and clears the internal list of entries to
+put in that file. |\installfamily| commands usually come first in each
+block of \meta{install commands}.
+
+For example, to produces a \LaTeX\ family with the \texttt{T1}-encoded
+Times family, you say:
+\begin{verbatim}
+ \installfamily{T1}{ptm}{}
+\end{verbatim}
+The \m{fd-commands} are executed every time a font in that family is
+loaded, for example to stop the Courier font from being hyphenated you
+say:
+\begin{verbatim}
+ \installfamily{T1}{pcr}{\hyphenchar\font=-1}
+\end{verbatim}
+In more recent versions of \fontinst, the |\installfamily| command is
+only necessary if you want the \m{fd-commands} argument to be
+nonempty, but it doesn't hurt to make it explicit.
+
+\begin{hackernote}
+ The \m{fd-commands} argument is tokenized with the current catcodes
+ and written to file without expansion. In particular this means
+ that spaces will be inserted after all control sequences whose
+ names consists of letters, which can be unexpected if you intend to
+ make use of control sequences whose names contain |@| characters.
+\end{hackernote}
+
+
+
+
+\subsection{Transformation commands}
+
+
+\begin{decl}
+ |\transformfont|\arg{font-name}\arg{transformed font}
+\end{decl}
+This makes a raw transformed font, for example expanded, slanted,
+condensed or re-encoded. \emph{It is the responsibility of the device
+ driver to implement this transform.} Each \verb|\transformfont|
+command writes out an \mtx file and a raw \pl file for \m{font-name}.
+
+The following commands are valid \m{transformed font}s:
+\begin{decl*}
+ |\fromafm|\arg{afm}\\
+ |\fromany|\arg{whatever}\\
+ |\frompl|\arg{pl}\\
+ |\fromplgivenetx|\marg{pl}\marg{etx}\\
+ |\frommtx|\arg{mtx}
+\end{decl*}
+This reads the metrics of a font which is about to be transformed from
+an external file. |\fromafm|, |\frompl|, and |\fromplgivenetx| write out
+an \mtx file corresponding to the \afm or \pl file. In addition,
+|\formafm| also writes out a raw \pl file, containing just the glyph
+metrics but no kerning information. |\fromplgivenetx| permits
+specifying which encoding file to use when associating glyph names to
+slots, whereas |\frompl| tries to guess this from the
+\texttt{CODINGSCHEME} property of the \pl file. |\fromany| looks for
+a file in any of the formats (in the order \mtx, \pl, \afm) and
+behaves as the first |\from|\dots\ for which it found a file.
+
+A \m{transformed font} may also be one of the following:
+\begin{decl*}
+ |\scalefont|\arg{integer expression}\arg{transformed font}\\
+ |\xscalefont|\arg{integer expression}\arg{transformed font}\\
+ |\yscalefont|\arg{integer expression}\arg{transformed font}\\
+ |\slantfont|\arg{integer expression}\arg{transformed font}
+\end{decl*}
+This applies a geometric transformation to the font metrics of
+\m{transformed font}. The scale factor or slant factor are given in
+1000 units to the design size. Typical examples are 167 for slanted
+fonts or 850 for condensed fonts.
+
+The final case of a \m{transformed font} is:
+\begin{decl*}
+ |\reencodefont|\arg{etx}\arg{transformed font}
+\end{decl*}
+This rearranges the encoding vector of \m{transformed font} to match
+the encoding given by the \etx file.
+
+
+For example, to create an oblique, |8r|-encoded version of Adobe Times
+called \texttt{ptmro8r} you say:
+\begin{verbatim}
+ \transformfont{ptmro8r}{
+ \reencodefont{8r}{
+ \slantfont{167}{\fromafm{ptmr8a}}
+ }
+ }
+\end{verbatim}
+This will create \texttt{ptmr8a.mtx}, \texttt{ptmr8a.pl},
+\texttt{ptmro8r.mtx} and \texttt{ptmro8r.pl}, which can then be used
+as raw fonts in \verb|\installfont| commands. The equivalent
+transformation can also be achieved in two steps:
+\begin{verbatim}
+ \transformfont{ptmr8r}{\reencodefont{8r}{\fromafm{ptmr8a}}}
+ \transformfont{ptmro8r}{\slantfont{167}{\frommtx{ptmr8r}}}
+\end{verbatim}
+This will create \texttt{ptmr8a.mtx}, \texttt{ptmr8a.pl},
+\texttt{ptmr8r.mtx}, \texttt{ptmr8r.pl}, \texttt{ptmro8r.mtx} and
+\texttt{ptmro8r.pl}.
+
+You will have to inform your device driver about the transformed font,
+using the syntax appropriate for that driver. For example, in \dvips
+you add a line to \texttt{psfonts.map}:
+\begin{verbatim}
+ ptmro8r Times-Roman ".167 SlantFont TeXBase1Encoding ReEncodeFont" <<8r.enc
+\end{verbatim}
+See Section~\ref{Sec:Mapmaking} and
+Subsection~\ref{Ssec:MapFragments} for details on how to generate
+such lines automatically.
+
+
+\subsection{Reglyphing commands}
+
+``Reglyphing'' is an \mtx file transformation that changes glyph
+names but leaves the slot numbers and metrics as they were;
+optionally it may drop some of the metric commands. See
+Subsection~\ref{Ssec:Des:Reglyph} for an introduction to this.
+
+\begin{decl}
+ |\reglyphfonts|\\
+ |\endreglyphfonts|
+\end{decl}
+
+\begin{decl}
+ |\reglyphfont|\marg{destination font}\marg{source font}
+\end{decl}
+
+\begin{decl}
+ |\renameglyph|\marg{to}\marg{from}\\
+ |\renameglyphweighted|\marg{to}\marg{from}\marg{weight}\\
+ |\killglyph|\marg{glyph}\\
+ |\killglyphweighted|\marg{glyph}\marg{weight}
+\end{decl}
+
+\begin{decl}
+ |\offmtxcommand|\marg{command}\\
+ |\onmtxcommand|\marg{command}
+\end{decl}
+
+
+
+
+\subsection{Miscellaneous settings}
+
+\begin{decl}
+ |\substitutesilent|\arg{to}\arg{from}\\
+ |\substitutenoisy|\arg{to}\arg{from}
+\end{decl}
+This declares a \LaTeX\ font substitution, that the series or shape
+\m{to} should be substituted if necessary by the series or shape
+\m{from}. \verb|\substitutesilent| means that when the font
+substitution is made, no warning will given.
+
+\verb|\substitutenoisy| is the same as \verb|\substitutesilent|, but
+gives a warning when the substitution is made by \LaTeX.
+
+For example, to say that the series |bx| can be replaced by the
+series |b|, you say:
+\begin{verbatim}
+ \substitutesilent{bx}{b}
+\end{verbatim}
+To say that the shape |ui| can be replaced by the shape |i|, you say:
+\begin{verbatim}
+ \substitutenoisy{ui}{it}
+\end{verbatim}
+
+The following weight substitutions are standard:
+\begin{verbatim}
+ \substitutesilent{bx}{b}
+ \substitutesilent{b}{bx}
+ \substitutesilent{b}{sb}
+ \substitutesilent{b}{db}
+ \substitutesilent{m}{mb}
+ \substitutesilent{m}{l}
+\end{verbatim}
+The following shape substitutions are standard:
+\begin{verbatim}
+ \substitutenoisy{ui}{it}
+ \substitutesilent{it}{sl}
+ \substitutesilent{sl}{it}
+\end{verbatim}
+
+The |\installfontas| command should be considered as an
+alternative to using font substitution, as it gives much finer
+control over what \fd entries will be made.
+
+
+\begin{decl}
+ |\declaresize|\arg{size}\arg{fd-size-range}
+\end{decl}
+This declares a new size, and gives the \fd size specifications for
+it. For example, \url{fontinst.sty} declares the following sizes:
+\begin{verbatim}
+ \declaresize{}{<<->>}
+ \declaresize{5}{<<5>>}
+ \declaresize{6}{<<6>>}
+ \declaresize{7}{<<7>>}
+ \declaresize{8}{<<8>>}
+ \declaresize{9}{<<9>>}
+ \declaresize{10}{<<10>>}
+ \declaresize{11}{<<10.95>>}
+ \declaresize{12}{<<12>>}
+ \declaresize{14}{<<14.4>>}
+ \declaresize{17}{<<17.28>>}
+ \declaresize{20}{<<20.74>>}
+ \declaresize{25}{<<24.88>>}
+\end{verbatim}
+
+\begin{decl}
+ |\declareencoding|\arg{string}\arg{etx}
+\end{decl}
+This declares which \etx file corresponds to which \texttt{codingscheme}
+string. For example, \url{fontinst.sty} declares the following
+encoding strings:
+\begin{verbatim}
+ \declareencoding{TEX TEXT}{ot1}
+ \declareencoding{TEX TEXT WITHOUT F-LIGATURES}{ot1}
+ \declareencoding{TEX TYPEWRITER TEXT}{ot1tt}
+ \declareencoding{TEX MATH ITALIC}{oml}
+ \declareencoding{TEX MATH SYMBOLS}{oms}
+ \declareencoding{TEX MATH EXTENSION}{omx}
+ \declareencoding{EXTENDED TEX FONT ENCODING - LATIN}{t1}
+ \declareencoding{TEX TEXT COMPANION SYMBOLS 1---TS1}{ts1}
+ \declareencoding{TEXBASE1ENCODING}{8r}
+ \declareencoding{TEX TYPEWRITER AND WINDOWS ANSI}{8y}
+\end{verbatim}
+
+
+
+
+
+\subsection{Other}
+
+The following commands also belong to this section, but there is
+currently no description of them here.
+
+
+|\afmtomtx|\marg{afmfile}\marg{mtxfile}
+
+|\endrecordtransforms|
+
+|\etxtopl|\marg{encoding list}\marg{plfile}
+
+|\etxtovpl|\marg{encoding list}\marg{vplfile}
+
+|\fakenarrow|\marg{width factor}
+
+|\generalpltomtx|\marg{plfile}\marg{mtxfile}\marg{plsuffix}\marg{opt-enc}
+
+|\latinfamily|\marg{family}\marg{commands}
+
+|\mtxtomtx|\marg{source MTX}\marg{destination MTX}
+
+|\mtxtopl|\marg{mtxfile}\marg{plfile}
+
+|\NOFILES|
+
+|\recordtransforms|\marg{filename}
+
+
+
+
+\section{Mapmaking commands}
+\label{Sec:Mapmaking}
+
+The commands described in this section are for use with command files
+that input \texttt{finstmsc.sty}.
+
+
+\subsection{Mapfile command reference}
+
+For an introduction to making map file entries, see
+Subsection~\ref{Ssec:MapFragments}.
+
+\begin{decl}
+ |\adddriver|\marg{driver name}\marg{fragment file name}
+\end{decl}
+This opens the file \meta{fragment file name} for writing mapfile
+entries to. The \meta{driver name} selects the format of these
+entries.
+
+\begin{decl}
+ |\makemapentry|\marg{\TeX\ font name}
+\end{decl}
+This causes a mapfile entry for the specified font to be written to
+all files currently open for receiving mapfile entries. These
+commands are usually automatically generated by \fontinst.
+
+\begin{decl}
+ |\donedrivers|
+\end{decl}
+This closes all files open for receiving mapfile entries.
+
+
+\subsection{Drivers}
+
+The \meta{driver name}s that may be used with |\adddriver| are:
+
+\begin{decl}
+ |dvips|
+\end{decl}
+The \dvips driver. The mapfiles generated are useful also with pdf\TeX.
+
+\begin{decl}
+ |dvipdfm|
+\end{decl}
+The \setpackagename{dvipdfm} \dvi-to-\pdf driver. Not much tested,
+but appears to work.
+
+\begin{decl}[v1.915]
+ |pltotf|
+\end{decl}
+Not really a \dvi driver. The file that is generated is a shell
+script of \texttt{pltotf} commands for converting precisely those \pl
+files which are needed to \tfm files (\fontinst generally generates
+also a bunch of \pl files that in the end turn out to be
+unnecessary). The \texttt{TFMfileprefix} variable can be used to
+specify a path to the directory where these files should be placed.
+
+\begin{decl}
+ |debug|
+\end{decl}
+Not a \dvi driver either, but for each base font a report on the
+information that was available. Useful if you need to write the
+driver file yourself.
+
+
+\subsection{Configuration commands}
+
+The following commands configure the generation of mapfile entries,
+mostly with respect to how various pieces of information are deduced
+from other pieces.
+
+\begin{decl}
+ |\AssumeAMSBSYY|\\
+ |\AssumeBaKoMa|\\
+ |\AssumeLWFN|\\
+ |\AssumeMetafont|
+\end{decl}
+
+\begin{decl}
+ |\declarepsencoding|\marg{etx}\marg{postscript name}\marg{action}
+\end{decl}
+
+\begin{decl}
+ |\specifypsfont|\marg{PS font name}\marg{actions}
+\end{decl}
+
+
+An \meta{action} is one of
+\begin{decl*}[v1.928]
+ |\download|\marg{file}\\
+ |\fulldownload|\marg{file}
+\end{decl*}
+where \meta{file} is a file to download (`download' typically means
+``include in the generated \PS output or equivalent''). The difference
+between |\download| and |\fulldownload| have to do with how partial
+downloading (subsetting) of fonts should be handled. |\download| means
+use the driver's defaults (often settable via command line options)
+for this. |\fulldownload| means don't subset: always include the full
+font, if \fontinst knows how to express this in a map file entry for
+this particular driver.
+
+Additional actions could be added in the future, if there is a need
+for them.
+
+
+\begin{decl}
+ |\storemapdata|\marg{\TeX\ font name}\marg{source}\marg{transforms}
+\end{decl}
+This records information about how the font named \meta{\TeX\ font
+name} was generated. Such commands are usually found in the file of
+recorded transforms. If a font is encountered for which no
+information has been stored, then the corresponding \mtx file will be
+sourced, looking for a |\storemapdata| command there.
+
+A \meta{source} is one of
+\begin{decl*}
+ |\fromafm|\marg{AFM name}\marg{PS name}\\
+ |\frompl|\marg{PL name}\\
+ |\frommtx|\marg{MTX name}\\
+ |\fromvpl|
+\end{decl*}
+Note that several of them have a different syntax and meaning than
+they do in fontmaking command files.
+
+A \meta{transform} is one of
+\begin{decl*}
+ |\reencodefont|\marg{etx}\\
+ |\reglyphfont|\\
+ |\transformfont|\marg{x-scale}\marg{slant-scale}
+\end{decl*}
+Note that all of these have a different meaning than they do in
+fontmaking command files.
+
+\begin{decl}
+ |\debugvalue|\arg{name}
+\end{decl}
+This adds a value to the list of those that are reported by the
+\texttt{debug} driver. Example:
+\begin{verbatim}
+ \debugvalue{PS_font_file}
+\end{verbatim}
+
+
+
+\subsection{Basic conversion commands}
+
+Some of the basic ``convert an $X$ file to a $Y$ file'' commands in
+\fontinst are not useful as part of a fontmaking run, and are
+available only in \texttt{finstmsc.sty} to conserve some memory.
+
+\begin{decl}
+ |\enctoetx|\marg{encfile}\marg{etxfile}
+\end{decl}
+This reads the file \meta{encfile}\texttt{.enc} which should be
+simple \PS code defining a \PS encoding vector and generates a
+corresponding rudimentary \fontinst encoding file
+\meta{etxfile}\texttt{.etx}. It's a basic ``import encoding to
+\fontinst'' command.
+
+\begin{decl}[v1.911]
+ |\etxtoenc|\marg{etxfiles}\marg{encfile}
+\end{decl}
+This does the opposite of |\enctoetx|; the information in the \etx
+files that is converted is the correspondence between slots and glyph
+names.
+\NEWfeature{v1.927}
+The \meta{etxfiles} argument is a comma-separated list of encoding
+files which are superimposed to generate the \PS encoding. The first
+|\setslot| for a particular slot is the one which decides which glyph
+will be placed there.
+
+\begin{decl}[v1.928]
+ |\etxtocmap|\marg{etxfile}\marg{cmapfile}
+\end{decl}
+This reads an \etx file and generates a corresponding ToUnicode CMap
+file; the information that is converted is the map from slot numbers
+to |\Unicode| code points.
+
+
+
+
+\section{General commands}
+
+
+
+This section describes commands and mechanisms that are the same in
+all file types. Commands that are particular for one type of file are
+described in subsequent sections.
+
+
+\subsection{Variables}
+
+Many (but not all) of the activities \fontinst perform can be
+understood as either ``setting variables'' or ``formatting and writing
+to file data stored in some variable''. The accessing of variables is
+an important aspect of how \fontinst works.
+
+Variables come in different types and variables of different types
+live in different namespaces; |\int{foo}|, |\str{foo}|, and
+|\dim{foo}| refer to three different variables which are all named
+|foo|. Variables are either set or not set. Unless the contrary is
+stated explicitly, variables default to not being set. It is an error
+to access the value of a variable that has not been set. \Fontinst
+variable assignments are as a rule local, i.e., will be undone when
+the enclosing \TeX\ group is ended. Most command file commands that
+cause files to be read will begin a group before reading the file(s)
+and end the group at some point after having read them.
+
+Taking string variables as an example, there are three commands for
+changing a string variable:
+\begin{decl*}
+ |\setstr|\arg{name}\arg{string expression}\\
+ |\resetstr|\arg{name}\arg{string expression}\\
+ |\unsetstr|\arg{name}
+\end{decl*}
+The |\resetstr| command unconditionally sets the string variable
+\meta{name} to the full expansion of the \meta{string expression}.
+The |\unsetstr| command unconditionally renders the string variable
+\meta{name} unset. If the the string variable \meta{name} is
+currently unset then the |\setstr| command will set it to the full
+expansion of the \meta{string expression}, but if it already is set
+then |\setstr| does nothing.
+
+This pattern with three commands, one |\set|\dots\ which only sets
+unset variables, one |\reset|\dots\ which sets variables regardless of
+whether they have been set or not, and one |\unset|\dots\ which unsets
+variables is recurring in \fontinst. Variables are most commonly set
+using some |\set|\dots\ command; this has the effect that the first
+command to try to set a variable is the one which actually sets it.
+
+If |\set|\dots\ is the command for setting the value of a variable,
+the command for getting that value has the same name without the
+|set| part, e.g., |\setint|--|\int|, |\setkern|--|\kern|, etc. There
+are typically also conditionals for testing whether variables are
+set, and these take the form |\ifis|\dots\arg{name}|\then|.
+
+
+The following commands for changing the value of a variable can be
+used anywhere:
+
+\begin{decl}
+ |\setdim|\arg{dim}\arg{dimension}\\
+ |\setint|\arg{int}\arg{integer expression}\\
+ |\setstr|\arg{str}\arg{string expression}
+\end{decl}
+If the dimension variable \m{dim} is currently undefined, it is
+defined to be the current value of \m{dimension}.
+
+If the integer variable \m{int} is currently undefined, it is
+defined to be the current value of \m{integer expression}.
+
+If the string variable \m{str} is currently undefined, it is
+defined to be the current value of \m{string expression}.
+
+\begin{decl}
+ |\setcommand|\arg{command}\meta{parameter text}\arg{replacement text}
+\end{decl}
+If the command \m{command} is currently undefined, it is defined to
+grab parameters as specified by the \meta{parameter text} and then
+expand to the \m{replacement text}. This uses the same syntax for
+parameters as the \TeX\ \verb|\def| command.
+\begin{center}
+ \begin{tabular}{r l}
+ No. parameters& \meta{parameter text}\\
+ 0& (empty)\\
+ 1& |#1|\\
+ 2& |#1#2|\\
+ 3& |#1#2#3|\\
+ \multicolumn{2}{c}{and so on.}
+ \end{tabular}
+\end{center}
+Some examples:
+\begin{verbatim}
+ \setcommand\lc#1#2{#2}
+ \setcommand\lc#1#2{#1small}
+\end{verbatim}
+With the first definition, |\lc{A}{a}| expands to |a|, but with the
+second it expands to |Asmall|.
+
+\begin{decl}
+ |\resetdim|\arg{dim}\arg{dimension}\\
+ |\resetint|\arg{int}\arg{integer expression}\\
+ |\resetstr|\arg{str}\arg{string expression}
+\end{decl}
+The dimension variable \m{dim} is defined to be the current value
+of \m{dimension}.
+
+The integer variable \m{int} is defined to be the current value of
+\m{integer expression}.
+
+The string variable \m{str} is defined to be the current value of
+the \m{string expression}. (|\resetstr| mostly boils down to a \TeX\
+|\edef| command.)
+
+\begin{decl}
+ |\resetcommand|\arg{command}\meta{parameter text}\arg{replacement text}
+\end{decl}
+The command \m{command} is defined to grab parameters as specified by
+the \meta{parameter text} and then expand to the \m{replacement text}.
+This is a synonym for the \TeX\ \verb|\def| command.
+
+\begin{decl}
+ |\unsetdim|\arg{dim}\\
+ |\unsetint|\arg{int}\\
+ |\unsetstr|\arg{str}\\
+ |\unsetcommand|\arg{command}
+\end{decl}
+Makes \m{dim}, \m{int}, \m{str}, or \m{command} an undefined
+dimension, integer, string or command.
+
+\begin{decl}[v1.900]
+ |\offcommand|\marg{command}\\
+ |\oncommand|\marg{command}
+\end{decl}
+|\offcommand| turns off a command, i.e., it redefines it to do
+nothing (while still taking the same number of arguments).
+|\oncommand| turns a command back on, i.e., it restores the
+definition the command had before a previous |\offcommand|. Using
+|\offcommand| on a command that is already off or |\oncommand| on a
+command that is not off has no effect.
+
+
+\subsection{Argument types}
+
+There are roughly six types of arguments that \fontinst
+commands can take. These are
+\begin{itemize}
+ \item integer expressions,
+ \item string expressions,
+ \item comma-separated lists of string expressions,
+ \item dimensions,
+ \item commands (i.e., \TeX\ control sequences), and
+ \item other (pretty much ``none of the above'').
+\end{itemize}
+Integer expressions are explained in Subsection~\ref{Sec:integer}
+below.
+
+The most common form of a string expression is simply a sequence of
+character tokens, but any balanced text which expands to such a
+sequence of tokens is legal. Several of the standard \etx files use
+macros in string expressions to make glyph names to some extent
+configurable. Besides such custom macros, the following \fontinst
+commands may be used to access variable values inside a string
+expression
+\begin{decl*}
+ |\strint|\arg{int}\\
+ |\str|\arg{str}\\
+ |\dim|\arg{dim}
+\end{decl*}
+Incidentally, these \m{int}, \m{str}, and \m{dim} are themselves
+string expressions (for the names of integer, string, and dimen
+respectively variables).
+
+Dimensions are simply \TeX\ \meta{dimen}s; their use is rather
+limited. \Fontinst does not provide for any sort of ``dimen
+expressions''. Most actual lengths are expressed as integer
+expressions, in \afm units ($1/1000$ of the font size).
+
+Common to integer expressions, string expressions, and
+dimensions is that these argument types get expanded during
+evaluation (in the case of string expressions, this expansion
+\emph{is} the evaluation), which means one can use macros in
+arguments of these types. Command arguments do not get
+expanded---they are mainly used with commands that modify the
+definitions of other commands.
+
+Comma-separated lists of string expressions are first split at commas
+(without prior expansion) and each element is then treated as a
+string expression (i.e., \emph{gets expanded}). (As remarked elsewhere,
+the \meta{metrics-list} argument of |\installfont| is not properly a
+comma-separated list of string expressions, even though it may look
+like one.)
+As for the ``other'' arguments one cannot give any rules: they
+might get expanded, but it could also happen that they won't.
+
+
+
+\subsection{Integer expressions}
+\label{Sec:integer}
+
+The \emph{integer expressions} provide a user-friendly syntax for
+\TeX\ arithmetic. They are used to manipulate any integers,
+including glyph dimensions, which are given in \afm units, that is
+1000 to the design size. \TeX\ \pl fonts have their dimensions
+converted to \afm units automatically.
+
+The \emph{integer expressions} are:
+
+\begin{decl}
+ \m{number}
+\end{decl}
+Returns the value of a \TeX\ \m{number} (as explained in
+\emph{The \TeX book}). Typical examples of this kind of integer
+expression are |0|, |1000|, |538|, |-20|, etc.
+
+\begin{decl}
+ |\int|\arg{int}
+\end{decl}
+Returns the value of the integer variable \m{int}.
+
+\begin{decl}
+ |\width|\arg{glyph}\\
+ |\height|\arg{glyph}\\
+ |\depth|\arg{glyph}\\
+ |\italic|\arg{glyph}
+\end{decl}
+Returns the width, height, depth, or italic correction of the glyph
+variable \m{glyph}.
+
+\begin{decl}
+ |\kerning|\arg{left}\arg{right}
+\end{decl}
+Returns the kerning between the \m{left} and \m{right} glyphs. Unlike
+other types of variable accesses, where it is an error to access
+something that has not been explicitly set, this command returns |0|
+if no kern has been set between the two glyphs.
+
+\begin{decl}
+ |\neg|\arg{integer expression}\\
+ |\add|\arg{integer expression}\arg{integer expression}\\
+ |\sub|\arg{integer expression}\arg{integer expression}\\
+ |\max|\arg{integer expression}\arg{integer expression}\\
+ |\min|\arg{integer expression}\arg{integer expression}\\
+ |\mul|\arg{integer expression}\arg{integer expression}\\
+ |\div|\arg{integer expression}\arg{integer expression}\\
+ |\scale|\arg{integer expression}\arg{integer expression}\\
+ |\half|\arg{integer expression}\\
+ |\otherhalf|\arg{integer expression}
+\end{decl}
+|\neg| returns the negation of the \m{integer expression}.
+
+|\ad| returns the sum of the two \m{integer expression}s.
+
+|\sub| returns the first \m{integer expression} minus the second.
+
+|\max| returns the maximum of the two \m{integer expression}s.
+
+|\min| returns the minimum of the two \m{integer expression}s.
+
+|\mul| returns the product of the two \m{integer expression}s.
+
+|\div| returns the first \m{integer expression} divided by the second.
+
+|\scale| returns the first \m{integer expression} times the second,
+divided by 1000. |\scale| does better rounding than the corresponding
+combination of |\mul| and |\div|.
+
+|\half| returns half the \m{integer expression}. It does better
+rounding than |\scale|\arg{integer expression}|{500}| or
+|\div|\arg{integer expression}|{2}|.
+
+|\otherhalf| returns the ``other half'' of the \m{integer
+expression}, i.e., the sum of |\half| something and |\otherhalf| the
+same thing is that thing back.
+
+
+\subsection{Conditionals and loops}
+
+\Fontinst has a rather extensive family of conditionals (|\if|s), and
+as of late also some convenient loop commands. The most common forms
+of a \fontinst conditional are
+\begin{decl*}
+ |\if|\dots \meta{argument(s)}|\then| \meta{then branch} |\Fi|\\
+ |\if|\dots \meta{argument(s)}|\then| \meta{then branch} |\Else|
+ \meta{else branch} |\Fi|
+\end{decl*}
+i.e., \fontinst uses Plain\TeX\ style conditionals rather than \LaTeX\
+style conditionals. Every |\if|\dots\ command can be thought of as
+testing some condition. If the condition is true then the \meta{then
+branch} will be executed, but not the \meta{else branch} (if there is
+one). If the condition is false then the \meta{then branch} will nor be
+executed, but if there is an \meta{else branch} then that will be
+executed. Conditionals may be nested (i.e., occur in the then or else
+branch).
+
+\begin{hackernote}
+ The |\then| is not just syntactic sugar, but a functional part of
+ those conditionals which take arguments. Its purpose is to look
+ like an |\if| to \TeX\ when the conditional occurs in a skipped
+ branch of another conditional.
+\end{hackernote}
+
+The most common conditionals are those which test if a variable is set.
+\begin{decl*}
+ |\ifisint|\arg{int}|\then|\\
+ |\ifisdim|\arg{dim}|\then|\\
+ |\ifisstr|\arg{str}|\then|\\
+ |\ifiscommand|\arg{command}|\then|
+\end{decl*}
+These cause the following \meta{then branch} to be executed if the
+specified variable is set, and the \meta{else branch} to be executed
+if the variable is not set. The \meta{int}, \meta{dim}, and
+\meta{str} are string expressions for the names of an integer,
+dimension, and string respectively variable. The \meta{command} is
+the actual control sequence (command variable) that should be tested.
+
+\begin{decl}
+ |\ifisglyph|\arg{glyph}|\then|
+\end{decl}
+This similarly tests if a glyph (also a variable of a kind) is set in
+the current glyph base. The glyph name \meta{glyph} is a string
+expression.
+
+\begin{decl}[v1.917]
+ |\ifareglyphs|\marg{glyph list}|\then|
+\end{decl}
+This command tests whether all the glyphs in the \meta{glyph list}
+(a comma-separated list of string expressions) are set in the current
+glyph base. If one of the glyphs is not set then condition is false.
+
+\begin{decl}[v1.900]
+ |\ifnumber|\marg{integer expression}\meta{rel}%
+ \marg{integer expression}|\then|
+\end{decl}
+The \meta{rel} is one of \texttt{<}, \texttt{=}, and \texttt{>}.
+This command evaluates the two \meta{integer expression}s and
+then tests whether the specified relation holds between their values.
+
+\begin{decl}[v1.900]
+ |\ifiskern|\marg{glyph1}\marg{glyph2}|\then|
+\end{decl}
+This tests whether a kern has been set with \meta{glyph1} on the left
+and \meta{glyph2} on the right (both arguments are string
+expressions). This is almost the negation of
+\begin{verbatim}
+ \ifnumber{\kerning{<glyph1>}{<glyph2>}}={0}\then
+\end{verbatim}
+but |\ifiskern| can distinguish the case that an zero kern has been
+set (true) from the case that no such kern has been set (false),
+which |\kerning| can not. It is however unlikely that this
+distinction would ever be of use in a practical situation.
+
+\begin{decl}[v1.924]
+ |\ifoption|\marg{string}|\then|
+\end{decl}
+Test whether \meta{string} (a string expression) is among the current
+list of options. This list is by default empty, elements are added
+using |option| modifiers (cf.~the description of |\installfont|), and
+the list is cleared for each new file for which one can specify
+options.
+
+\begin{decl}[v1.909]
+ |\Else|
+ |\Fi|
+\end{decl}
+For \fontinst, these two control sequences are precisely the same as
+the \TeX\ primitives |\else| and |\fi|, but things are a bit more
+complicated in \fontdoc. The mechanism in \fontdoc\ that allows it to
+present both branches of the conditional in the typeset output
+requires that |\Else| and |\Fi| generate typeset output. See also the
+|\showbranches| \fontdoc command.
+
+\begin{hackernote}
+ Before |\Else| and |\Fi| were introduced, the \TeX\ primitives
+ |\else| and |\fi| were used instead for \fontinst conditionals.
+ Back then, \fontdoc defined all conditionals to expand to |\iftrue|.
+
+ It used to be the case that all conditionals would be fully
+ expandable (which in particular would have made it possible to use
+ them in string expressions), but that is no longer the case.
+\end{hackernote}
+
+
+
+\begin{decl}[v1.901]
+ |\for|\parg{name}\marg{start}\marg{stop}\marg{step}
+ \meta{body} |\endfor|\parg{name}
+\end{decl}
+will cause the \meta{body} code to be repeated some number of times.
+How many depends on the values of \meta{start}, \meta{stop}, and
+\meta{step}, which are integer expressions.
+
+As a precaution, the \meta{body} is not allowed to contain any
+empty lines (|\par| tokens). If you want to have the visual
+separation (for sakes of legibility or otherwise), put a |%|
+somewhere on the line---that makes it nonempty.
+
+\meta{name} is used as the name of an integer variable. This
+variable gets reset to the value of \meta{start} before the first
+repetition of \meta{body code}. After each repetition but the last,
+it is incremented by \meta{step}. \meta{body} gets repeated if
+the value of \meta{name} has not gotten past that of \meta{stop}. To
+get past means to be bigger if \meta{step} is positive and to be
+smaller if \meta{step} is negative. In the case that \meta{step} is
+zero, the entire construction above will be equivalent to
+\begin{quote}
+ |\resetint|\marg{name}\marg{start}\\
+ \meta{body}
+\end{quote}
+
+|\for| \textellipsis\ |\endfor| constructions can be nested.
+\meta{name} is used by |\for| to identify its matching |\endfor|, so
+they need to be identical in |\for| and |\endfor|. \textbf{Note} that
+the delimiters around the \meta{name} are parentheses, not braces.
+
+
+\begin{decl}[v1.901]
+ |\foreach|\parg{name}\marg{csep-list}
+ \meta{body} |\endfor|\parg{name}
+\end{decl}
+will cause the \meta{body} code to be repeated one time for each item
+in the \meta{csep-list}. \meta{csep-list} is a comma-separated list
+of string expressions.
+
+As a precaution, the \meta{body} is not allowed to contain any
+empty lines (|\par| tokens). If you want to have the visual
+separation (for sakes of legibility or otherwise), put a |%|
+somewhere on the line---that makes it nonempty.
+
+\meta{name} is used as the name of a string variable. Before each
+repetition of the \meta{body code}, this variable will get reset to
+the next item in the \meta{csep-list}.
+
+|\foreach|\textellipsis\ |\endfor| constructions can be nested.
+\meta{name} is used by |\foreach| to identify its matching |\endfor|,
+so they need to be identical in |\foreach| and |\endfor|.
+\textbf{Note} that the delimiters around the \meta{name} are
+parentheses, not braces.
+
+
+
+\subsection{Other general commands}
+
+\begin{decl}
+ |\needsfontinstversion|\arg{version}
+\end{decl}
+This issues a warning if the current version of the \fontinst
+package is less than \m{version}.
+
+\begin{decl}
+ |\needsTeXextension|\marg{extension tests}\marg{who}\\
+ |\eTeX|\marg{version number}\\
+ |\pdfTeX|\marg{version number}\marg{revision}
+\end{decl}
+
+\begin{decl}[v1.915]
+ |\fontinstcc|\\
+ |\normalcc|
+\end{decl}
+|\fontinstcc| switches to the catcodes used in e.g.\@
+\texttt{fontinst.sty}: |_| and |@| are letters, space and newline are
+ignored, and |~| is a space. |\normalcc| switches back to normal
+catcodes.
+
+\begin{decl}[v1.900]
+ |\begincomment| \meta{text} |\endcomment|
+\end{decl}
+This hides the \meta{text} from \fontinst processing, but allows it
+to show up when the file is typeset with \fontdoc.
+
+\begin{decl}[v1.906]
+ |\fontinsterror|\marg{subsystem}\marg{error}\marg{help}\\
+ |\fontinstwarning|\marg{subsystem}\marg{warning}\\
+ |\fontinstwarningnoline|\marg{subsystem}\marg{warning}\\
+ |\fontinstinfo|\marg{subsystem}\marg{info}
+\end{decl}
+
+\begin{decl}[v1.906]
+ |\messagebreak|
+\end{decl}
+
+
+Finally, there are two Plain\TeX\ commands which should be mentioned:
+\begin{decl*}
+ |\input| \meta{file name}\\
+ |\bye|
+\end{decl*}
+
+
+
+
+
+\section{Encoding files}
+
+An \emph{encoding file} (or \texttt{.etx} file) is a \TeX\ document
+with the structure:
+\begin{quote}
+ |\relax|\\
+ \meta{ignored material}\\
+ |\encoding|\\
+ \meta{encoding commands}\\
+ |\endencoding|\\
+ \meta{ignored material}
+\end{quote}
+This describes the encoding of a font, using the \m{encoding commands}.
+
+Since the encoding file ignores any material between \verb|\relax| and
+\verb|\encoding|, an \emph{encoding file} can also be a \LaTeX\
+document. The structure is then
+\begin{quote}
+ |\relax|\\
+ |\documentclass{article} %| Or some other class\\
+ |\usepackage{fontdoc}|\\
+ \meta{\LaTeX\ preamble}\\
+ |\begin{document}|\\
+ \meta{\LaTeX\ text}\\
+ |\encoding|\\
+ \m{encoding commands}\\
+ |\endencoding|\\
+ \meta{\LaTeX\ text}\\
+ |\end{document}|
+\end{quote}
+
+
+See also the descriptions in \emph{Writing ETX format font encoding
+specifications} (\texttt{encspecs.tex}).
+
+
+\subsection{Encoding commands}
+
+The \m{encoding commands} are:
+
+\begin{decl}
+ |\nextslot|\arg{integer expression}
+\end{decl}
+Sets the number of the next slot. If there is no \verb|\nextslot|
+command, the number is the successor of the previous slot.
+
+\begin{decl}[v1.8]
+ |\skipslots|\arg{integer expressions}
+\end{decl}
+Advances the number of the next slot.
+
+\begin{decl}
+ |\setslot|\arg{glyph} \m{slot commands} |\endsetslot|
+\end{decl}
+Assigns \m{glyph} to the current slot. The \m{slot commands} can be
+used to specify additional behaviour for the slot, and typically also
+contains comments about the glyph.
+
+\begin{decl}[v1.9]
+ |\setleftboundary|\marg{glyph} \m{slot commands}
+ |\endsetleftboundary|
+\end{decl}
+Makes the beginning of a word (left boundary) behave like the right
+side of \m{glyph} with respect to kerning. |\ligature| commands in
+the \meta{slot commands} create beginning of word ligatures.
+
+\begin{decl}[v1.9]
+ |\setrightboundary|\marg{glyph}
+\end{decl}
+Makes the end of a word (right boundary) behave like the left
+side of \m{glyph} with respect to kerning and ligatures. The current
+slot position is left empty.
+
+\begin{decl}
+ |\inputetx|\arg{file}
+\end{decl}
+Inputs the \m{encoding commands} of \m{file}\texttt{.etx}.
+
+\begin{decl}[v1.917]
+ |\setfontdimen|\marg{fontdimen no.}\marg{integer variable}
+\end{decl}
+Sets up a correspondence between a font dimension and an integer
+variable. When generating a font, the font dimension value is taken
+from the integer variable. When converting a font from \pl or \vpl
+format, the fontdimen value will be recorded as a |\setint| command
+for the variable.
+
+\begin{decl}[v1.924]
+ |\ifdirect|
+\end{decl}
+Encoding files set up a correspondence between slot numbers and glyph
+names, which can be used in two different ways. In the \emph{direct}
+mode, encoding files map slot numbers to glyph names. In the
+\emph{inverse} mode, glyph names are mapped to slot numbers. The
+inverse mapping can in general be one-to-many, and when precisely one
+target slot is needed \fontinst chooses that arbitrarily. The |\ifdirect|
+conditional can be used to disambiguate the inverse mapping, by
+conditionalising all undesired |\setslot|s on that the file is being
+interpreted in the direct mode.
+
+Currently the only case in which encoding files are being read in
+the inverse mode is when reencoding fonts.
+
+\begin{decl}[v1.8]
+ |\setslotcomment|\marg{text}\\
+ |\resetslotcomment|\marg{text}\\
+ |\unsetslotcomment|
+\end{decl}
+These commands can be used to specify an automatic |\comment| text
+for all slots. They are ignored by \fontinst, but interpreted by
+\fontdoc.
+
+\begin{decl}[v1.8]
+ |\useexamplefont|\marg{font}
+\end{decl}
+This command is ignored by \fontinst. In \fontdoc it sets the font
+that is used by the |\slotexample| command. The \meta{font} argument
+has the same syntax for a font as the \TeX\ primitive |\font|.
+
+
+
+
+\subsection{Slot commands}
+
+The \m{slot commands} are:
+
+\begin{decl}
+ |\comment|\arg{text}
+\end{decl}
+A comment, which is ignored by \fontinst, but typeset as a separate
+paragraph by \fontdoc.
+
+\begin{decl}[v1.917]
+ |\label|\arg{text}
+\end{decl}
+A reference label, which records the slot number and glyph name.
+Ignored by \fontinst.
+
+\begin{decl}
+ |\ligature|\arg{ligtype}\arg{glyph}\arg{glyph}
+\end{decl}
+|\ligature| declares a ligature of type \m{ligtype} from the current
+glyph followed by the first glyph to the second glyph. The \m{ligtype}s
+are as in \vpl files (see the \texttt{vptovf} Web source for more
+details). For example:
+\begin{verbatim}
+ \setslot{ff}
+ \ligature{LIG}{i}{ffi}
+ \ligature{LIG}{l}{ffl}
+ \comment{The `ff' ligature.}
+ \endsetslot
+\end{verbatim}
+\begin{decl*}[v1.918]
+ |\Ligature|\arg{ligtype}\arg{glyph}\arg{glyph}\\
+ |\oddligature|\marg{note}\arg{ligtype}\arg{glyph}\arg{glyph}
+\end{decl*}
+The |\Ligature| command is by default a synonym of |\ligature| (but
+\fontdoc may typeset them differently). The |\oddligature| command is
+by default ignored by \fontinst. See \setfilename{encspecs.tex} for
+an explanation of the semantic differences.
+
+\begin{decl}
+ |\makerightboundary|\arg{glyph}
+\end{decl}
+This makes the current slot the end of word (right boundary) marker
+with respect to ligatures and kerning, i.e., \TeX\ will kern and
+ligature as if there was an invisible occurrence of this character
+after the last character of every word. All kerns and ligatures with
+\meta{glyph} as the right part will apply for this slot.
+
+It is preferable to use |\setrightboundary| to control end of word
+behaviour if you have an empty slot to spare.
+
+\begin{decl}
+ |\Unicode|\marg{code point}\marg{name}\\
+ |\charseq|\marg{\cs{Unicode} commands}
+\end{decl}
+These commands declare a Unicode character or character sequence as
+possible interpretations of what is in this slot. They are ignored
+when making fonts, but \fontdoc give them a prominent role in
+encoding specifications and to |\etxtocmap| they are the primary
+properties of the slot.
+
+\begin{decl}[Obsolete?!]
+ |\usedas|\arg{type}\arg{control sequence}
+\end{decl}
+This command declares a \TeX\ control sequence for this slot, with
+the \emph{type} taken from:
+\begin{verbatim}
+ char accent mathord
+ mathbin mathrel mathopen
+ mathclose mathpunct mathvariable
+ mathaccent mathdelim
+\end{verbatim}
+There is currently no code in \fontinst which makes any use of this
+command.
+
+\begin{decl}
+ |\nextlarger|\arg{glyph}
+\end{decl}
+Sets a \textsc{nextlarger} entry from the current slot to the
+\m{glyph}.
+
+\begin{decl}
+ |\varchar|
+ \m{varchar commands}
+ |\endvarchar|
+\end{decl}
+Sets a \textsc{varchar} entry for the current slot, using the
+\m{varchar commands}. The \m{varchar commands} are:
+\begin{decl}
+ |\vartop|\arg{glyph}\\
+ |\varmid|\arg{glyph}\\
+ |\varbot|\arg{glyph}\\
+ |\varrep|\arg{glyph}
+\end{decl}
+Sets the top, middle, bottom, or repeated \m{glyph} of the
+\textsc{varchar}.
+
+
+\subsection{Other}
+
+The following commands belong to this section, but there is currently
+no description of them here.
+
+|\ifisinslot|\marg{glyph}\marg{slot}|\then|
+
+
+
+
+\section{Metric files}
+\label{Sec:Metric}
+
+
+A \emph{metric file} (or \mtx file) is a \TeX\ document with the
+structure:
+\begin{quote}
+ |\relax|\\
+ \emph{ignored material}\\
+ |\metrics|\\
+ \m{metric commands}\\
+ |\endmetrics|\\
+ \emph{ignored material}
+\end{quote}
+This describes the glyphs in a font, using the \m{metric commands}.
+Like encoding files, metric files can simultaneously be \LaTeX\
+documents.
+
+Metric files are usually either \emph{hand-crafted} or
+\emph{transformable}. The transformable metric files typically encode
+the metrics of one particular font and are automatically generated.
+Hand-crafted metric files (such as \setfilename{latin.mtx}) typically
+do not contain much explicit metric data, instead the code there makes
+use of metrics previously specified by other files to construct new
+glyphs or adjust metrics to meet special conditions. Whereas
+transformable metric files tend to be mere lists of metric data, the
+hand-crafted metric files are more like programs.
+
+
+\subsection{Metric commands}
+
+The \m{metric commands} are as follows. All glyph name arguments are
+string expressions.
+
+\begin{decl}
+ |\setglyph|\arg{name} \m{glyph commands} |\endsetglyph|
+\end{decl}
+If the glyph called \m{name} is undefined, it is built using the
+\m{glyph commands} given below, for example:
+\begin{verbatim}
+ \setglyph{IJ}
+ \glyph{I}{1000}
+ \glyph{J}{1000}
+ \endsetglyph
+ \setglyph{Asmall}
+ \glyph{A}{850}
+ \endsetglyph
+\end{verbatim}
+The \meta{glyph commands} are not executed if the glyph has already
+been set.
+
+\begin{decl}
+ |\resetglyph|\arg{name}
+ \m{glyph commands}
+ |\endresetglyph|
+\end{decl}
+Gives the definition of the glyph called \m{name} using the
+\m{glyph commands}.
+
+\begin{decl}
+ |\unsetglyph|\arg{name}
+\end{decl}
+Makes the glyph called \m{name} undefined.
+
+\begin{decl}
+ |\setrawglyph|\arg{name}\arg{font}\arg{dimen}\arg{slot}\\
+ \hspace*{1.5em}\arg{width}\arg{height}\arg{depth}\arg{italic
+ correction}\\
+ |\setscaledrawglyph|%
+ \arg{name}\arg{font}\arg{dimen}\arg{scale}\arg{slot}\\
+ \hspace*{1.5em}\arg{width}\arg{height}\arg{depth}\arg{italic
+ correction}
+\end{decl}
+This sets a glyph called \m{name} from the \m{font}, which has the
+given design size, slot, width, height, depth and italic correction.
+The \meta{scale} is a scaling factor which has been applied to the
+font to give it the specified metrics. These commands will usually be
+generated automatically from an \afm or \pl file.
+
+If the integer variable \texttt{rawscale} is set, another scaling by
+that amount will be applied to the glyph.
+
+\begin{decl}
+ |\setnotglyph|\arg{name}\arg{font}\arg{dimen}\arg{slot}\\
+ \hspace*{1.5em}\arg{width}\arg{height}\arg{depth}\arg{italic
+ correction}\\
+ |\setscalednotglyph|%
+ \arg{name}\arg{font}\arg{dimen}\arg{scale}\arg{slot}\\
+ \hspace*{1.5em}\arg{width}\arg{height}\arg{depth}\arg{italic
+ correction}
+\end{decl}
+These sets a glyph called \m{name}\texttt{-not}, which is present in
+the \m{font}, but is not in the default encoding. They take the same
+arguments as |\setrawglyph| and |\setscaledrawglyph| respectively,
+although the slot will normally be $-1$. This command will usually
+be generated automatically from an \afm file.
+
+Reencoding a font can turn |\setrawglyph| commands into
+|\setnotglyph| commands and vice versa.
+
+\begin{decl}
+ |\inputmtx|\arg{file}
+\end{decl}
+Inputs the \m{metric commands} of \m{file}\texttt{.mtx}.
+
+\begin{decl}[v1.9]
+ |\usemtxpackage|\marg{package~list}\\
+ |\ProvidesMtxPackage|\marg{package~name}
+\end{decl}
+
+
+\subsection{Glyph commands}
+
+The \m{glyph commands} add material to the glyph currently being
+constructed in a |\setglyph| \dots\ |\endsetglyph| or
+|\resetglyph| \dots\ |\endresetglyph|. They are:
+
+\begin{decl}
+ |\glyph|\arg{glyph}\arg{integer expression}
+\end{decl}
+Sets the named glyph \m{glyph} at the given scale, with 1000 as the
+natural size. This:
+\begin{itemize}
+ \item
+ Advances the current glyph width.
+ \item
+ Sets the current glyph height to be at least the height of the
+ named glyph, adjusted for the current vertical offset.
+ \item
+ Sets the current glyph depth to be at least the depth of the
+ named glyph, adjusted for the current vertical offset.
+ \item
+ Sets the current glyph italic correction to be the same as the
+ set glyph.
+\end{itemize}
+The named glyph must have already been defined, otherwise an error
+will occur. For example:
+\begin{verbatim}
+ \setglyph{fi}
+ \glyph{f}{1000}
+ \glyph{i}{1000}
+ \endsetglyph
+\end{verbatim}
+
+\begin{decl}
+ |\glyphrule|\arg{integer expression}\arg{integer expression}
+\end{decl}
+Sets a rule of the given width and height, for example:
+\begin{verbatim}
+ \setglyph{underline}
+ \glyphrule{333}{40}
+ \endsetglyph
+\end{verbatim}
+
+\begin{decl}
+ |\glyphspecial|\arg{string expression}
+\end{decl}
+Sets a driver-dependent \verb|\special|, for example:
+\begin{verbatim}
+ \setglyph{crest}
+ \glyphspecial{Filename: crest.eps}
+ \endsetglyph
+\end{verbatim}
+
+\begin{decl}
+ |\glyphwarning|\arg{string expression}
+\end{decl}
+Sets a warning \verb|\special|, and produces a warning message each
+time the glyph is used, for example:
+\begin{verbatim}
+ \setglyph{missingglyph}
+ \glyphrule{500}{500}
+ \glyphwarning{Missing glyph `missingglyph'}
+ \endsetglyph
+\end{verbatim}
+
+\begin{decl}
+ |\movert|\arg{integer expression}
+\end{decl}
+Moves right by the given amount, and advances the current glyph width,
+for example:
+\begin{verbatim}
+ \setglyph{Asmall}
+ \movert{50}
+ \glyph{A}{700}
+ \movert{50}
+ \endsetglyph
+\end{verbatim}
+
+\begin{decl}
+ |\moveup|\arg{integer expression}
+\end{decl}
+Moves up by the given amount, and advances the current vertical
+offset. Each glyph should always end at vertical offset zero, for
+example:
+\begin{verbatim}
+ \setglyph{onehalf}
+ \moveup{500}
+ \glyph{one}{700}
+ \moveup{-500}
+ \glyph{slash}{1000}
+ \moveup{-200}
+ \glyph{two}{700}
+ \moveup{200}
+ \endsetglyph
+\end{verbatim}
+
+\begin{decl}
+ |\push| \m{glyph commands} |\pop|
+\end{decl}
+Performs the \m{glyph commands}, but at the |\pop| the current
+position and glyph width are restored to what they were at the |\push|,
+for example:
+\begin{verbatim}
+ \setglyph{aacute}
+ \push
+ \movert{\half{\sub{\width{a}}{\width{acute}}}}
+ \glyph{acute}{1000}
+ \pop
+ \glyph{a}{1000}
+ \endsetglyph
+\end{verbatim}
+
+\begin{decl}
+ |\glyphpcc|\arg{glyph}\arg{integer expression}\arg{integer expression}
+\end{decl}
+This is generated from \texttt{PCC} instructions in an \afm file, and
+is syntactic sugar for:
+\begin{quote}
+ \small
+ |\push|\\
+ |\movert|\arg{first integer expression}\\
+ |\moveup|\arg{second integer expression}\\
+ |\glyph|\arg{glyph}|{1000}|\\
+ |\pop|
+\end{quote}
+
+\begin{decl}
+ |\resetwidth|\arg{integer expression}\\
+ |\resetheight|\arg{integer expression}\\
+ |\resetdepth|\arg{integer expression}\\
+ |\resetitalic|\arg{integer expression}
+\end{decl}
+Sets the width, height, depth, or italic correction of the current
+glyph.
+
+\begin{decl}
+ |\samesize|\arg{glyph}
+\end{decl}
+Sets the dimensions of the current glyph to be the same as \m{glyph}.
+
+Inside the definition of \m{glyph}, you can use expressions such as
+|\width|\arg{glyph}, which will refer to the glyph defined so far.
+For example, a display summation sign can be defined to be a text
+summation $\sum$ scaled 120\% with 0.5\,pt extra height and depth
+using:
+\begin{verbatim}
+ \setglyph{summationdisplay}
+ \glyph{summationtext}{1200}
+ \resetheight{\add{\height{summationdisplay}}{50}}
+ \resetdepth{\add{\depth{summationdisplay}}{50}}
+ \endsetglyph
+\end{verbatim}
+Within a |\resetglyph|, these expressions will refer to the previous
+definition of the glyph. For example, you can add sidebearings to the
+letter `A' with:
+\begin{verbatim}
+ \resetglyph{A}
+ \movert{25}
+ \glyph{A}{1000}
+ \movert{25}
+ \endresetglyph
+\end{verbatim}
+
+
+\subsection{Kerning commands}
+
+The kerning commands may be used anywhere in a metrics file.
+
+\begin{decl}
+ |\setkern|\arg{glyph}\arg{glyph}\arg{integer expression}
+\end{decl}
+This sets a kern between the two glyphs, scaled by the current
+value of \texttt{rawscale}, unless such a kern already has been set.
+
+\begin{decl}[v1.9]
+ |\resetkern|\arg{glyph}\arg{glyph}\arg{integer expression}
+\end{decl}
+|\resetkern| unconditionally sets a kern between the two glyphs,
+scaled by the current value of \texttt{rawscale}.
+
+\begin{decl}
+ |\setleftkerning|\arg{glyph}\arg{glyph}\arg{integer expression}\\
+ |\setrightkerning|\arg{glyph}\arg{glyph}\arg{integer expression}
+\end{decl}
+Sets the amount by which the first glyph should mimic how the second
+glyph kerns on the left or right, for example:
+\begin{verbatim}
+ \setleftkerning{Asmall}{A}{850}
+ \setrightkerning{Asmall}{A}{850}
+ \setleftkerning{IJ}{I}{1000}
+ \setrightkerning{IJ}{J}{1000}
+\end{verbatim}
+The commands work by copying kerning pairs containing the first glyph.
+As the names indicates, these commands do not override kerning pairs
+previously set.
+
+\begin{decl}[v1.8]
+ |\setleftrightkerning|\arg{glyph}\arg{glyph}\arg{integer expression}
+\end{decl}
+Sets the amount by which the first glyph should mimic how the second
+glyph kerns on both sides, for example:
+\begin{verbatim}
+ \setleftrightkerning{Asmall}{A}{850}
+\end{verbatim}
+This command is equivalent to doing first a |\setleftkerning| and
+then a |\setrightkerning|.
+
+\begin{decl}[v1.906]
+ |\noleftkerning|\arg{glyph}\\
+ |\norightkerning|\arg{glyph}\\
+ |\noleftrightkerning|\arg{glyph}
+\end{decl}
+Removes all kerning on the specified side(s) of the \meta{glyph}.
+
+\begin{decl}[v1.9]
+ |\unsetkerns|\marg{left~glyph~list}\marg{right~glyph~list}
+\end{decl}
+Removes all kerns with one glyph in the \meta{left glyph list} on the
+left and one glyph in the \meta{right glyph list} on the right.
+
+
+
+\subsection{Other}
+
+\begin{decl}[v1.915]
+ |\aliased|\marg{font's name}\marg{alias name}
+\end{decl}
+This command is meant to be used in glyph name arguments of commands
+one may find in metric files. It was added to support combining
+mapfile entry generation with a custom form of reglyphing that has
+been developed for the \texttt{T2} bundle (Cyrillic font support).
+This does however not necessarily mean that the \texttt{T2} bundle
+has been updated to take advantage of this feature.
+
+The basic problem is that cyrillic fonts display a much greater
+variation in how the glyphs are named than latin fonts do.%
+\footnote{The Adobe guidelines have not been as prevailing here as
+in the latin range, but this isn't entirely surprising when they
+give suggestions such as using the name \texttt{afii10018} for
+\texttt{U+0411} (\textsc{cyrillic capital letter be}), even though
+there is a good reason: AFII is a glyph registry.}
+This complicates writing files similar to \setfilename{latin.mtx}, so
+the author of the \texttt{T2} bundle took the route to regularize the
+glyph names at the \afm to \mtx conversion step. Since \TeX\ does not
+know anything about glyph names, this makes no difference for the
+virtual fonts that are built.
+The glyph names do however make a difference for base fonts that are
+reencoded, since \PS encoding vectors list explicit glyph names that
+have to be the same as in the font. \Fontinst's choice of encoding
+vector for a mapfile entry is based on which \etx file was used in the
+reencoding, and hence the glyph names used when reencoding must match
+those actually used in the font, or problems will follow.
+
+The |\aliased| command can be used to preserve the information
+necessary for such reencodings. If a glyph name is specified as for
+example
+\begin{verbatim}
+ \aliased{afii10018}{CYRB}
+\end{verbatim}
+then \fontinst will behave as if the glyph name is \texttt{CYRB}
+(i.e., the \meta{alias name}) for all purposes \emph{except}
+reencoding, where instead \fontinst behaves as if the glyph name is
+the \meta{font's name} \texttt{afii10018}. This makes it possible to
+use \etx files when reencoding which can be correctly translated to
+the right encoding vectors.
+
+
+
+\section{\textsf{fontdoc} commands}
+
+The following commands are defined by \fontdoc but are unknown to
+\fontinst.
+
+
+\subsection{Comment commands}
+
+\begin{decl}
+ |\plaindiv|\\
+ |\plainint|\\
+ |\plainmax|\\
+ |\plainmin|\\
+ |\plainneg|
+\end{decl}
+These are the \LaTeX\ definitions of |\div|, |\int|, |\max|, |\min|,
+and |\neg| respectively. They are provided under these names because
+\fontinst uses the normal names for integer expression constructions.
+
+\begin{decl}[v1.8]
+ |\slotexample|
+\end{decl}
+This typesets the character in the current slot from the example font
+(cf.~|\useexamplefont|).
+
+\begin{decl}[v1.916]
+ |\macroparameter|\marg{digit}
+\end{decl}
+This can be used in integer and string expressions. It typesets as
+\textit{\#n}, where `\textit{n}' is the \meta{digit}.
+
+\begin{decl}[v1.918]
+ |\textunicode|\marg{code point}\marg{name}
+\end{decl}
+This generates a reference to a particular Unicode character, for use
+within a |\comment| or similar.
+
+
+\subsection{Style control commands}
+
+\begin{decl}[v1.909]
+ |\showbranches|
+\end{decl}
+The is the main switch that turns on displaying both branches of
+\fontinst conditionals. If you use this command in an encoding or
+metrics file, you \textbf{must} use |\Else| and |\Fi| to delimit the
+conditionals in that file. If you do not use this command in an
+encoding or metrics file, then the conditionals will not generate any
+typeset material and neither will their \meta{else branch}es.
+
+
+
+
+\section{\fontinst variables}
+
+The following is a list of the \fontinst variables that are
+accessible for the user through the |\set|\textellipsis,
+|\reset|\textellipsis, |\unset|\textellipsis, etc.\ commands. You may
+of course set or use other variables in the MTX and ETX files you
+write yourself, as does for example the standard MTX file
+\texttt{latin.mtx}, but all variables that \fontinst commands
+implicitly use or set are listed below.
+
+\begin{list}{}{%
+ \setlength\labelwidth{0pt}%
+ \setlength\itemindent{-\leftmargin}%
+ \setlength\parsep{0pt}
+ \def\makelabel#1{\hspace\labelsep \normalfont\ttfamily #1}%
+}
+ \item[acccapheight] (integer denoting length)
+ \begin{smalldes}
+ \item[Description] The height of accented full capitals.
+ \item[Set by] MTX files.
+ \item[Used by] Some ETX and MTX files.
+ \end{smalldes}
+ \item[address] (string)
+ \begin{smalldes}
+ \item[Description] Snailmail address put in \BibTeX-style file
+ header of automatically generated ENC files. No
+ \texttt{address} field is written unless the \texttt{address}
+ string is set. Quotes are not automatically inserted around
+ the \texttt{address} string.
+ \item[Set by] ETX files.
+ \item[Used by] The ETX-to-ENC converter.
+ \end{smalldes}
+ \item[afm-name] (string)
+ \begin{smalldes}
+ \item[Description] Name of source font. Internal variable.
+ \item[Set by] |\from|\dots\ commands.
+ \item[Used by] The |\transform|\-|font|, |\install|\-|font|,
+ |\install|\-|raw|\-|font|, and |\reglyph|\-|font| commands.
+ \end{smalldes}
+ \item[ascender] (integer denoting length)
+ \begin{smalldes}
+ \item[Description] The ascender height of the font.
+ \item[Set by] MTX files. The AFM-to-MTX converter usually writes
+ |\setint| commands for this integer.
+ \item[Used by] Some MTX and ETX files.
+ \end{smalldes}
+ \item[author] (string)
+ \begin{smalldes}
+ \item[Description] Author name(s) put in \BibTeX-style file
+ header of automatically generated ENC files. See the macro
+ |\ref_to_sourcefile| for more details.
+ \item[Set by] ETX files.
+ \item[Used by] The ETX-to-ENC converter. When not set, the
+ value \texttt{"See file }\meta{etx name}\texttt{"} is used
+ instead.
+ \end{smalldes}
+ \item[\cs{autoinstallfamily}] (command)
+ \begin{smalldes}
+ \item[Description] Command called by the font installation
+ commands, as
+ \begin{quote}
+ |\autoinstallfamily|\marg{encoding}\marg{family}
+ \end{quote}
+ when they are asked to install a font with a combination of
+ \meta{encoding} and \meta{family} that has not been seen
+ before (there was no explicit |\installfamily|).
+ \item[Set by] Explicit commands. Defaults to calling
+ |\installfamily|.
+ \item[Used by] Font installation commands.
+ \end{smalldes}
+ \item[axisheight] (integer denoting length)
+ \begin{smalldes}
+ \item[Description] Math formula parameter $\sigma\sb{22}$.
+ \item[Set by] MTX files.
+ \item[Used by] Some ETX and MTX files.
+ \end{smalldes}
+ \item[baselineskip] (integer denoting length)
+ \begin{smalldes}
+ \item[Description]
+ The font designer's recommendation for natural length of the
+ \TeX\ parameter |\baselineskip|.
+ \item[Set by] MTX files.
+ \item[Used by] Some ETX and MTX files.
+ \end{smalldes}
+ \item[bigopspacing1] (integer denoting length)
+ \begin{smalldes}
+ \item[Description] Math formula parameter $\xi\sb{9}$.
+ \item[Set by] MTX files.
+ \item[Used by] Some ETX and MTX files.
+ \end{smalldes}
+ \item[bigopspacing2] (integer denoting length)
+ \begin{smalldes}
+ \item[Description] Math formula parameter $\xi\sb{10}$.
+ \item[Set by] MTX files.
+ \item[Used by] Some ETX and MTX files.
+ \end{smalldes}
+ \item[bigopspacing3] (integer denoting length)
+ \begin{smalldes}
+ \item[Description] Math formula parameter $\xi\sb{11}$.
+ \item[Set by] MTX files.
+ \item[Used by] Some ETX and MTX files.
+ \end{smalldes}
+ \item[bigopspacing4] (integer denoting length)
+ \begin{smalldes}
+ \item[Description] Math formula parameter $\xi\sb{12}$.
+ \item[Set by] MTX files.
+ \item[Used by] Some ETX and MTX files.
+ \end{smalldes}
+ \item[bigopspacing5] (integer denoting length)
+ \begin{smalldes}
+ \item[Description] Math formula parameter $\xi\sb{13}$.
+ \item[Set by] MTX files.
+ \item[Used by] Some ETX and MTX files.
+ \end{smalldes}
+ \item[capheight] (integer denoting length)
+ \begin{smalldes}
+ \item[Description] The height of the font's full capitals.
+ \item[Set by] MTX files. The AFM-to-MTX converter usually writes
+ |\setint| commands for this variable.
+ \item[Used by] Some MTX and ETX files.
+ \end{smalldes}
+ \item[cmapname] (string)
+ \begin{smalldes}
+ \item[Description] The name given to the CMap generated from
+ an ETX file.
+ \item[Set by] ETX files.
+ \item[Used by] The ETX-to-CMap converter. When not set, the
+ value |fontinst-|\nolinebreak[1]\meta{cmap file name} is
+ used instead.
+ \end{smalldes}
+ \item[codingscheme] (string)
+ \begin{smalldes}
+ \item[Description] The codingscheme name.
+ \item[Set by] ETX files.
+ \item[Used by] The (V)PL writer. When not set, the
+ value \texttt{UNKNOWN} is used instead.
+ \end{smalldes}
+ \item[defaultrulethickness] (integer denoting length)
+ \begin{smalldes}
+ \item[Description] Math formula parameter $\xi\sb{8}$.
+ \item[Set by] MTX files.
+ \item[Used by] Some ETX and MTX files.
+ \end{smalldes}
+ \item[delim1] (integer denoting length)
+ \begin{smalldes}
+ \item[Description] Math formula parameter $\sigma\sb{20}$.
+ \item[Set by] MTX files.
+ \item[Used by] Some ETX and MTX files.
+ \end{smalldes}
+ \item[delim2] (integer denoting length)
+ \begin{smalldes}
+ \item[Description] Math formula parameter $\sigma\sb{21}$.
+ \item[Set by] MTX files.
+ \item[Used by] Some ETX and MTX files.
+ \end{smalldes}
+ \item[denom1] (integer denoting length)
+ \begin{smalldes}
+ \item[Description] Math formula parameter $\sigma\sb{11}$.
+ \item[Set by] MTX files.
+ \item[Used by] Some ETX and MTX files.
+ \end{smalldes}
+ \item[denom2] (integer denoting length)
+ \begin{smalldes}
+ \item[Description] Math formula parameter $\sigma\sb{12}$.
+ \item[Set by] MTX files.
+ \item[Used by] Some ETX and MTX files.
+ \end{smalldes}
+ \item[descender] (integer denoting length)
+ \begin{smalldes}
+ \item[Description] The depth of lower case letters with descenders.
+ \item[Set by] MTX files.
+ \item[Used by] Some ETX and MTX files.
+ \end{smalldes}
+ \item[descender\_neg] (integer denoting length)
+ \begin{smalldes}
+ \item[Description] The vertical position of the descender line
+ of the font, i.e., the negative of the font's descender depth.
+ \item[Set by] MTX files. The AFM-to-MTX converter usually writes
+ |\setint| commands for this variable.
+ \item[Used by] Some MTX and ETX files.
+ \end{smalldes}
+ \item[designsize] (dimension)
+ \begin{smalldes}
+ \item[Description] The design size of the font.
+ \item[Set by] MTX files. The (V)PL-to-MTX converter usually writes
+ |\setdim| commands for this variable.
+ \item[Used by] The (V)PL writer. The design size defaults to
+ $10\,\mathrm{pt}$ if this variable is not set.
+ \item[Note] The value of this variable has no effect on how
+ the font is declared to \LaTeX.
+ \end{smalldes}
+ \item[designunits] (dimension denoting a real number)
+ \begin{smalldes}
+ \item[Description] The design size of a font expressed in the
+ design unit used in a (V)PL file.
+ \item[Set by] MTX files. The (V)PL-to-MTX converter usually writes
+ |\setdim| commands for this variable.
+ \item[Used by] Nothing. If this variable is set, but to any
+ value other than $1\,\mathrm{pt}$, then some metrics are most
+ likely wrong.
+ \end{smalldes}
+ \item[digitwidth] (integer denoting length)
+ \begin{smalldes}
+ \item[Description] The median width of the digits in the font.
+ \item[Set by] MTX files.
+ \item[Used by] Some ETX and MTX files.
+ \end{smalldes}
+ \item[email] (string)
+ \begin{smalldes}
+ \item[Description] Email address put in \BibTeX-style file
+ header of automatically generated ENC files. See the macro
+ |\ref_to_sourcefile| for more details.
+ \item[Set by] ETX files.
+ \item[Used by] The ETX-to-ENC converter. When not set, the
+ value \texttt{"See file }\meta{etx name}\texttt{"} is used
+ instead.
+ \end{smalldes}
+ \item[encodingname] (string)
+ \begin{smalldes}
+ \item[Description] The name by which the encoding in question is
+ made known to a Postscript interpreter.
+ \item[Set by] ETX files.
+ \item[Used by] The ETX-to-ENC converter. When not set, the
+ value |fontinst-|\nolinebreak[1]|autoenc-|\nolinebreak[1]%
+ \meta{etx name} is used instead.
+ \end{smalldes}
+ \item[etx-name] (string)
+ \begin{smalldes}
+ \item[Description] Name of ETX file. Internal variable in
+ |\transform|\-|font|.
+ \item[Set by] The |\reencodefont| command.
+ \item[Used by] The |\mtxtomtx| command.
+ \end{smalldes}
+ \item[extraspace] (integer denoting length)
+ \begin{smalldes}
+ \item[Description]
+ The natural width of extra interword glue at the end of a
+ sentence.
+ \item[Set by] MTX files.
+ \item[Used by] Some ETX and MTX files.
+ \end{smalldes}
+ \item[fontdimen($n$)] (integer)
+ \begin{smalldes}
+ \item[Description] Family of semi-internal variables that store
+ the values to use for font dimension $n$. It is preferred
+ that the newer |\set|\-|font|\-|dimen| interface is used for
+ setting these values.
+ \item[Set by] ETX files.
+ \item[Used by] The (V)PL writer.
+ \end{smalldes}
+ \item[\cs{iftokeep}] (macro)
+ \begin{smalldes}
+ \item[Description] |\iftokeep|\,\#1\,|\then|, where \#1 will
+ be a \meta{number}, behaves like a switch and decides whether
+ a glyph is kept or not while reglyphing.
+ \item[Set by] Explicit commands. Defaults to
+ $$
+ \mbox{\cs{iftokeep}\,\#1\,\cs{then}} \mapsto
+ \mbox{\cs{ifnum}\,\texttt{-1<}\#1}
+ $$
+ \item[Used by] The |\reglyphfont| command.
+ \end{smalldes}
+ \item[interword] (integer denoting length)
+ \begin{smalldes}
+ \item[Description] The natural width of interword glue (spaces).
+ \item[Set by] MTX files.
+ \item[Used by] Some ETX and MTX files.
+ \end{smalldes}
+ \item[italicslant] (integer denoting factor)
+ \begin{smalldes}
+ \item[Description] The italic slant of a font.
+ \item[Set by] MTX files generated from AFM or (V)PL files. MTX
+ files generated by |\transformfont|. Locally in the AFM-to-MTX
+ converter for possible use in |\uprightitalcorr| or
+ |\slanteditalcorr|.
+ \item[Used by] MTX files (\texttt{latin.mtx} and the like). ETX
+ files (for determining \texttt{fontdimen(1)}).
+ \end{smalldes}
+ \item[killweight] (integer)
+ \begin{smalldes}
+ \item[Description] Weight for glyphs that are killed.
+ \item[Set by] Explicit commands. Defaults to $-10$ if not set.
+ \item[Used by] The |\kill|\-|glyph| command; indirectly
+ the |\reglyphfont| command.
+ \end{smalldes}
+ \item[letterspacing] (integer denoting length)
+ \begin{smalldes}
+ \item[Description] Extra width added to all glyphs of a font.
+ \item[Set by] ETX or MTX files.
+ \item[Used by] The (V)PL writer. Defaults to $0$ if not set.
+ \end{smalldes}
+ \item[maxdepth] (integer denoting length)
+ \begin{smalldes}
+ \item[Description] The maximal depth over all slots in the font.
+ \item[Set by] MTX files.
+ \item[Used by] Some ETX and MTX files.
+ \end{smalldes}
+ \item[maxdepth\_neg] (integer denoting length)
+ \begin{smalldes}
+ \item[Description] The negative of the maximal depth of a glyph in
+ the font.
+ \item[Set by] MTX files. The AFM-to-MTX converter usually writes
+ |\setint| commands for this variable.
+ \item[Used by] Some ETX and MTX files.
+ \end{smalldes}
+ \item[maxheight] (integer denoting length)
+ \begin{smalldes}
+ \item[Description] The maximal height of a glyph in the font.
+ \item[Set by] MTX files. The AFM-to-MTX converter usually writes
+ |\setint| commands for this variable.
+ \item[Used by] Some ETX and MTX files.
+ \end{smalldes}
+ \item[minimumkern] (integer denoting length)
+ \begin{smalldes}
+ \item[Description] Kerns whose size in absolute value is less
+ than or equal to this variable are ignored.
+ \item[Set by] Command files or MTX files.
+ \item[Used by] The AFM-to-MTX converter and the (V)PL file
+ generator. When not set, the value $0$ is used instead.
+ \end{smalldes}
+ \item[monowidth] (flag integer)
+ \begin{smalldes}
+ \item[Description] Set if this font is monowidth, unset otherwise.
+ \item[Set by] MTX files. The AFM-to-MTX converter writes a
+ |\setint| command for this variable if the AFM specifies
+ \texttt{IsFixedPitch true}.
+ \item[Used by] Some MTX files (\texttt{latin.mtx} and the like),
+ ETX files.
+ \end{smalldes}
+ \item[num1] (integer denoting length)
+ \begin{smalldes}
+ \item[Description] Math formula parameter $\sigma\sb{8}$.
+ \item[Set by] MTX files.
+ \item[Used by] Some ETX and MTX files.
+ \end{smalldes}
+ \item[num2] (integer denoting length)
+ \begin{smalldes}
+ \item[Description] Math formula parameter $\sigma\sb{9}$.
+ \item[Set by] MTX files.
+ \item[Used by] Some ETX and MTX files.
+ \end{smalldes}
+ \item[num3] (integer denoting length)
+ \begin{smalldes}
+ \item[Description] Math formula parameter $\sigma\sb{10}$.
+ \item[Set by] MTX files.
+ \item[Used by] Some ETX and MTX files.
+ \end{smalldes}
+ \item[quad] (integer denoting length)
+ \begin{smalldes}
+ \item[Description]
+ The quad width of the font, normally approximately equal to
+ the font size and\slash or the width of an `M'.
+ \item[Set by] MTX files.
+ \item[Used by] Some ETX and MTX files.
+ \end{smalldes}
+ \item[PSfontsuffix] (string)
+ \begin{smalldes}
+ \item[Description] Suffix added to font names to form name of
+ file to download to include font.
+ \item[Set by] Explicit commands in mapmaking command
+ files. Defaults to `\texttt{.pfa}'.
+ \item[Used by] The map file fragments writer.
+ \end{smalldes}
+ \item[rawscale] (integer denoting factor)
+ \begin{smalldes}
+ \item[Description] Scaling factor applied to raw glyphs.
+ \item[Set by] The |\installfont| command (\texttt{scaled}
+ clauses in argument \#2). Unset for metric files listed
+ without a \texttt{scaled} clause.
+ \item[Used by] The |\set|\-|raw|\-|glyph|,
+ |\set|\-|not|\-|glyph|, |\set|\-|scaled|\-|raw|\-|glyph|,
+ |\set|\-|scaled|\-|not|\-|glyph|, |\set|\-|kern|, and
+ |\reset|\-|kern| commands.
+ \end{smalldes}
+ \item[renameweight] (integer)
+ \begin{smalldes}
+ \item[Description] Weight for glyphs that are renamed.
+ \item[Set by] Explicit commands. Defaults to $1$ if not set.
+ \item[Used by] The |\rename|\-|glyph| command; indirectly
+ the |\reglyphfont| command.
+ \end{smalldes}
+ \item[requireglyphs] (flag integer)
+ \begin{smalldes}
+ \item[Description] Set if warnings are to be generated for
+ glyphs listed in ETX files but not present in the glyph
+ base.
+ \item[Set by] Explicit commands. By default not set.
+ \item[Used by] The (V)PL file generator.
+ \end{smalldes}
+ \item[rightboundary] (string)
+ \begin{smalldes}
+ \item[Description] The name of a glyph with the property that
+ kerns on the left may be intended as right word boundary kerns.
+ \item[Set by] MTX files. The (V)PL-to-MTX converter can write
+ |\setstr| commands for this variable.
+ \item[Used by] Some MTX files.
+ \end{smalldes}
+ \item[shrinkword] (integer denoting length)
+ \begin{smalldes}
+ \item[Description]
+ The (finite) shrink component of interword glue.
+ \item[Set by] MTX files.
+ \item[Used by] Some ETX and MTX files.
+ \end{smalldes}
+ \item[slant-scale] (integer denoting factor)
+ \begin{smalldes}
+ \item[Description] Factor to slant by.
+ Internal variable in |\transform|\-|font|.
+ \item[Set by] The |\slant|\-|font|, |\xscale|\-|font|, and
+ |\scale|\-|font| commands.
+ \item[Used by] The |\mtxtomtx| command.
+ \end{smalldes}
+ \item[\cs{SlantAmount}] (macro expanding to an integer expression)
+ \begin{smalldes}
+ \item[Description] Slant factor used for faking oblique shape.
+ \item[Set by] Explicit commands. Defaults to \texttt{167}.
+ \item[Used by] The |\latinfamily| command.
+ \end{smalldes}
+ \item[\cs{slanteditalcorr}]
+ (macro expanding to an integer expression)
+ \begin{smalldes}
+ \item[Description] The integer expression used to calculate a
+ guess for the italic correction of glyphs in a font with
+ positive slant. It has the syntax
+ \begin{quote}
+ \cs{slanteditalcorr}\marg{width}\marg{left}\marg{right}%
+ \marg{bottom}\marg{top}
+ \end{quote}
+ where \meta{width} is the glyph's advance width, and the
+ remaining arguments are coordinates of sides of the glyph's
+ bounding box. The \texttt{italicslant} integer provides the
+ italic slant of the font.
+ \item[Set by] Explicit commands in \textsf{fontinst} command
+ files. Defaults to
+ $$
+ \max\{0, \mathit{right}-\mathit{width}\}.
+ $$
+ \item[Used by] The AFM-to-MTX converter.
+ \end{smalldes}
+ \item[stretchword] (integer denoting length)
+ \begin{smalldes}
+ \item[Description]
+ The (finite) stretch component of interword glue.
+ \item[Set by] MTX files.
+ \item[Used by] Some ETX and MTX files.
+ \end{smalldes}
+ \item[sub1] (integer denoting length)
+ \begin{smalldes}
+ \item[Description] Math formula parameter $\sigma\sb{16}$.
+ \item[Set by] MTX files.
+ \item[Used by] Some ETX and MTX files.
+ \end{smalldes}
+ \item[sub2] (integer denoting length)
+ \begin{smalldes}
+ \item[Description] Math formula parameter $\sigma\sb{17}$.
+ \item[Set by] MTX files.
+ \item[Used by] Some ETX and MTX files.
+ \end{smalldes}
+ \item[subdrop] (integer denoting length)
+ \begin{smalldes}
+ \item[Description] Math formula parameter $\sigma\sb{19}$.
+ \item[Set by] MTX files.
+ \item[Used by] Some ETX and MTX files.
+ \end{smalldes}
+ \item[sup1] (integer denoting length)
+ \begin{smalldes}
+ \item[Description] Math formula parameter $\sigma\sb{13}$.
+ \item[Set by] MTX files.
+ \item[Used by] Some ETX and MTX files.
+ \end{smalldes}
+ \item[sup2] (integer denoting length)
+ \begin{smalldes}
+ \item[Description] Math formula parameter $\sigma\sb{14}$.
+ \item[Set by] MTX files.
+ \item[Used by] Some ETX and MTX files.
+ \end{smalldes}
+ \item[sup3] (integer denoting length)
+ \begin{smalldes}
+ \item[Description] Math formula parameter $\sigma\sb{15}$.
+ \item[Set by] MTX files.
+ \item[Used by] Some ETX and MTX files.
+ \end{smalldes}
+ \item[supdrop] (integer denoting length)
+ \begin{smalldes}
+ \item[Description] Math formula parameter $\sigma\sb{18}$.
+ \item[Set by] MTX files.
+ \item[Used by] Some ETX and MTX files.
+ \end{smalldes}
+ \item[TFMfileprefix] (string)
+ \begin{smalldes}
+ \item[Description] Prefix (typically a path) added to names of
+ TFM files.
+ \item[Set by] Explicit commands in mapmaking command
+ files. By default not set, which is equivalent to being empty.
+ \item[Used by] The \textsf{PLtoTF} ``map file fragments writer''.
+ \end{smalldes}
+ \item[underlinethickness] (integer denoting length)
+ \begin{smalldes}
+ \item[Description] The recommended thickness of an underlining
+ rule.
+ \item[Set by] MTX files. The AFM-to-MTX converter usually writes
+ |\setint| commands for this variable.
+ \item[Used by] Some MTX files (\texttt{latin.mtx} and the like).
+ \end{smalldes}
+ \item[\cs{uprightitalcorr}]
+ (macro expanding to an integer expression)
+ \begin{smalldes}
+ \item[Description] The integer expression used to calculate a
+ guess for the italic correction of glyphs in a font with
+ non-positive slant. It has the syntax
+ \begin{quote}
+ \cs{uprightitalcorr}\marg{width}\marg{left}\marg{right}%
+ \marg{bottom}\marg{top}
+ \end{quote}
+ where \meta{width} is the glyph's advance width, and the
+ remaining arguments are coordinates of sides of the glyph's
+ bounding box. The \texttt{italicslant} integer provides the
+ italic slant of the font.
+ \item[Set by] Explicit commands in \textsf{fontinst} command
+ files. Defaults to $0$.
+ \item[Used by] The AFM-to-MTX converter.
+ \end{smalldes}
+ \item[version] (string)
+ \begin{smalldes}
+ \item[Description] Version number put in \BibTeX-style file
+ header of automatically generated ENC files. See the macro
+ |\ref_to_sourcefile| for more details.
+ \item[Set by] ETX files.
+ \item[Used by] The ETX-to-ENC converter. When not set, the
+ value \texttt{"See file }\meta{etx name}\texttt{"} is used
+ instead.
+ \end{smalldes}
+ \item[verticalstem] (integer denoting length)
+ \begin{smalldes}
+ \item[Description] The dominant width of vertical stems
+ (usually the width of stems of lower case letters).
+ \item[Set by] MTX files. The AFM-to-MTX converter writes
+ |\setint| commands for this variable if the AFM file specifies
+ \texttt{StdVW}.
+ \item[Used by] Currently nothing.
+ \end{smalldes}
+ \item[\texttt{warningspecials}] (switch)
+ \begin{smalldes}
+ \item[Description] Controls whether |\glyphwarning| commands
+ will generate VPL \texttt{SPECIAL}s. Defaults to `true'.
+ \item[Set by] Explicit commands (|\warningspecialstrue| and
+ |\warningspecialsfalse|).
+ \item[Used by] The (V)PL file generator.
+ \end{smalldes}
+ \item[x-scale] (integer denoting factor)
+ \begin{smalldes}
+ \item[Description] Horizontal scaling factor.
+ Internal variable in |\transform|\-|font|.
+ \item[Set by] The |\xscale|\-|font| and |\scale|\-|font| commands.
+ \item[Used by] The |\mtxtomtx| command.
+ \end{smalldes}
+ \item[xheight] (integer denoting length)
+ \begin{smalldes}
+ \item[Description] The x-height of the font.
+ \item[Set by] MTX files. The AFM-to-MTX and (V)PL-to-MTX
+ converters usually write |\setint| commands for this variable.
+ \item[Used by] MTX files, and ETX files (for determining
+ \texttt{fontdimen(5)}).
+ \end{smalldes}
+ \item[y-scale] (integer denoting factor)
+ \begin{smalldes}
+ \item[Description] Vertical scaling factor.
+ Internal variable in |\transform|\-|font|.
+ \item[Set by] The |\yscale|\-|font| and |\scale|\-|font| commands.
+ \item[Used by] The |\mtxtomtx| command.
+ \end{smalldes}
+ \item[\meta{\rmfamily glyph}-spacing] (integer denoting length)
+ \begin{smalldes}
+ \item[Description] Glyph-specific override for
+ \texttt{letterspacing}; extra width added to the glyph
+ \meta{glyph} as part of the process of writing a VPL
+ file.
+ \item[Set by] ETX or MTX files.
+ \item[Used by] The (V)PL writer. Defaults to $0$ if not set.
+ \end{smalldes}
+\end{list}
+Besides these, the |\latinfamily| command provides a whole range of
+parameters (|\latin_weights|, |\latin_widths|, |\latin_shapes|, etc.)
+that are often used somewhat like variables. That subject
+does however deserve to be treated separately.
+
+
+
+\section{Customisation}
+
+The \fontinst package reads a file \texttt{fontinst.rc} if it
+exists. This can contain your own customisations. The catcodes that
+are in force when this file is read are the same as those selected by
+|\fontinstcc|.
+
+Similarly \texttt{finstmsc.sty} reads \texttt{finstmsc.rc} and the
+\fontdoc package reads \texttt{fontdoc.cfg}.
+
+You can create a \texttt{fontinst} format by running ini\TeX{} on
+\texttt{fontinst.sty} then saying \verb|\dump|.
+
+
+\section{Notes on features new with v\,1.9}
+
+The following notes are copied from \texttt{fisource.tex}; they were
+written to explain new \fontinst features to old \fontinst users.
+
+
+\subsection{Metric packages}
+
+\Fontinst has traditionally come with a collection of MTX
+files that complement the MTX files generated from base font metrics,
+in that they build glyphs that may be missing from the base fonts or
+in some other way needs to be improved. The most well-known of these
+is the \texttt{latin.mtx} file; other examples include
+\texttt{textcomp.mtx}, \texttt{mathit.mtx}, and \texttt{latinsc.mtx}.
+A problem with these is however that they cannot produce optimal
+results for all fonts simply because there are irregular differences
+in how fonts are set up by the foundries. Most glyphs come out all right,
+but there are usually a few for which the parameters used are more or
+less wrong. Therefore most high quality font installations are made
+with modified versions of these files, where the parameters have been
+tuned to the specific font design.
+
+Modifying in particular \texttt{latin.mtx} is however not an entirely
+easy task, because this is a rather large file (with plenty of
+archaic pieces of code in curious places). Doing it once is no big
+problem, but if one has to do it several times (maybe because some
+errors are discovered in the original \texttt{latin.mtx}) then it is
+probably no fun anymore. Furthermore, if one has two or three
+modified copies of this file because one has made high quality
+installations of that many different fonts then even a trivial bugfix
+might start to feel like entirely too much work.
+
+If one has to make modifications then it is usually easier to deal
+with several small files (many of which can be used unchanged) than
+one big file. Thus it would be better if these big files were split up
+into several smaller ones.
+The main problem with splitting up something like \texttt{latin.mtx}
+is that there are some commands which are defined at the top and
+which are then used in almost all sections of the file. One must make
+certain that these commands are always loaded, which makes the metric
+files somewhat harder to use (especially if the one who tries to use
+them is not the one who wrote them).
+
+One strategy is to include all definitions needed for a metric file in
+it. This has the slight disadvantage that the commands will have to be
+defined several times. What is worse however, is that the command
+definitions will appear in several files, so if one finds a bug in one
+of them, one cannot simply correct this bug in one place. As the number
+of files can soon become quite large, correcting such bugs can become
+a boring procedure indeed.
+
+Another strategy is to put all the command definitions in one file
+and then explicitly include it in the \meta{file-list} argument of
+|\installfont|. This eliminates the repeated bug fixing problem, but
+requires the user to do something that the computer can actually do
+just as well.
+
+A third strategy is to put the command definitions in one or several
+files and then in each metric file the user explicitly mentions load
+the command definitions needed for that particular file. Metric
+packages uses an improved version of this strategy, since they also
+make it possible for \fontinst to remember which packages (i.e., sets
+of command definitions) that have already been loaded, so that they
+are not unnecessarily loaded again. The \texttt{newlatin.mtx} file is
+an alternative to \texttt{latin.mtx} that implements this strategy.
+Most of the actual code is located in the following metric packages:
+\begin{center}
+\begin{tabular}{l p{0.7\linewidth}}
+ \texttt{ltcmds.mtx}& Defines some common commands used by the other
+ files.\\
+ \texttt{llbuild.mtx}& Builds the latin lower case alphabet
+ (unaccented letters are `unfakable', the rest are constructed if
+ not present in the base fonts).\\
+ \texttt{lubuild.mtx}& Builds the latin upper case alphabet.\\
+ \texttt{lsbuild.mtx}& Builds accented letters in the latin
+ smallcaps alphabet, but only if there are unaccented letters to
+ build them from in the base fonts.\\
+ \texttt{lsfake.mtx}& Fakes a latin smallcaps alphabet by shrinking
+ the upper case alphabet, but only if the glyph had not already
+ been manufactured.\\
+ \texttt{lsmisc.mtx}& Make some miscellaneous smallcaps glyphs
+ (mostly ``smallcaps f-ligatures'').\\
+ \texttt{ltpunct.mtx}& Makes digits, punctuation marks, and other
+ symbols (mostly by marking as ``unfakable'').
+\end{tabular}
+\end{center}
+\noindent All of these are easy to use as components of equivalents
+of a modified \texttt{latin.mtx} files, and all dependencies of one
+package upon another are handled via explicit |\usemtxpackage|
+commands.
+
+% For information on the syntax etcetera of commands related to metric
+% packages, see Section~\ref{Sec:Metric files}.
+
+
+\subsection{Word boundary ligatures and kerns}
+
+One of the new features added in \TeX~3 was that of ligatures and
+kerns with word boundaries. \Fontinst has had an interface
+for making such ligatures and kerns, but it has been completely
+redesigned in v\,1.9 and the old interface (setting the integer
+|boundarychar|) is no longer recognized by \fontinst. Files
+which use the old interface can still be processed with
+\texttt{cfntinst.sty}, though.
+
+Before considering the new commands, it is suitable to make a
+distinction between proper glyphs and pseudoglyphs. A proper glyph has
+been set using one of the commands |\setrawglyph|, |\setglyph|, and
+|\resetglyph|. A pseudoglyph is any name used in the context of a
+glyph name which does not denote a proper glyph. If a pseudoglyph
+|g-not| was set using the |\setnotglyph| command, then
+|\ifisglyph{g-not}\then| will evaluate to true, but something can be
+a pseudoglyph even if an |\ifisglyph| test evaluates to false. The
+interesting point about pseudoglyphs when considering word boundaries
+however, is that a pseudoglyph can have ligatures and kerns.
+
+Kerns and ligatures at the left word boundary (beginning of word) are
+specified using the commands |\setleftboundary| and
+|\endsetleftboundary|, which are syntactically identical to
+|\setslot| and |\endsetslot| respectively. One important difference is
+however that the argument to |\setslot| must be a proper glyph, while
+the argument to |\setleftboundary| may be any glyph, hence any
+pseudoglyph will do just fine.
+
+|\ligature| commands between |\setleftboundary| and
+|\endsetleftboundary| will generate beginning of word ligatures. Kerns
+on the right of the glyph specified in |\setleftboundary| will become
+beginning of word kerns.
+
+Kerns and ligatures at the right word boundary (end of word) are
+trickier, due to the asymmetrical nature of the ligkern table in a PL
+file. What a font can do is to specify that the right word boundary,
+for purposes of kerning and ligatures, should be interpreted as
+character $n$. By including a kern or ligature with character $n$ on
+the right, that kern or ligature will be used at the end of a word,
+but it will also be used each time the next character is character
+$n$. Because of this, one usually wants the slot $n$, which the right
+word boundary is interpreted as being, to be empty whenever the
+encoding allows this.
+
+The command
+\begin{quote}
+ |\setrightboundary|\marg{glyph}
+\end{quote}
+will mark the current slot as used to denote the right word boundary,
+and leave the slot empty, increasing the current slot number by one
+just like a |\setslot| \textellipsis\ |\endsetslot| block does. Kerns on
+the left of \meta{glyph} will be end of word kerns and |\ligature|
+commands with \meta{glyph} as the second argument will be for the end
+of a word.
+
+The command
+\begin{quote}
+ |\makerightboundary|\marg{glyph}
+\end{quote}
+is similar to |\setrightboundary|, but it is a slot command which may
+only be used between a |\setslot| and the matching |\endsetslot|. Like
+|\setrightboundary|, it marks the current slot as used to denote the
+right word boundary, but the glyph specified in the enclosing |\setslot|
+will be written to that slot. Ligatures for the glyph specified by the
+|\setslot| and ligatures for the glyph specified by the
+|\makerightboundary| will both be for this single slot. Kerns on the
+right of the |\setslot| glyph and the |\makerightboundary| glyph will
+similarly both be for this single slot. The idea is that the |\setslot|
+glyph should be used when making a kern or ligature for that glyph,
+while the |\makerightboundary| glyph should be used when making a kern
+or ligature for the end of a word. \Fontinst will warn you if
+these two uses of the slot directly contradict each other.
+
+
+\subsection{Changing the names of glyphs}
+\label{Ssec:Des:Reglyph}
+
+Sometimes, primarily when making a virtual font from more than one raw
+font and two of the raw fonts contain different glyphs with the same
+name, it becomes necessary to change the names of some glyphs to make
+some sense out of it. The main source of this kind of trouble is the
+``caps and small caps'' (SC) and ``oldstyle figures'' (OsF) fonts
+within many commercial font families. The typical problem is that what
+is typographically different glyphs---such as the lowercase `a'
+(\texttt{a}, for \fontinst) and the smallcaps `\textsc{a}'
+(\texttt{Asmall}, for \fontinst)---are given the same name by
+the foundry.
+
+One way to get round this is to say for example
+\begin{quote}
+ |\setglyph{Asmall} \glyph{a}{1000} \endsetglyph|\\
+ |\setleftrightkerning{Asmall}{a}{1000}|\\
+ |\unsetglyph{a}|\\
+ |\noleftrightkerning{a}|
+\end{quote}
+and continuing like that for all the duplicate glyph names. This is
+however a rather prolix method and if the number of glyphs is large
+then it is usually simpler to use the |\reglyphfont| command.
+
+To reglyph one or several fonts, one writes
+\begin{quote}
+ |\reglyphfonts|\\
+ \vadjust{}\quad \meta{reglyphing commands}\\
+ |\endreglyphfonts|
+\end{quote}
+There are two types of reglyphing commands: the |\reglyphfont|
+command, and the commands that modify what |\reglyphfont| will do to
+the fonts it operates on. The syntax of |\reglyphfont| is
+\begin{quote}
+ |\reglyphfont|\marg{destination font}\marg{source font}
+\end{quote}
+The \meta{source font} font here is the name (suffix not included, of
+course) of the font metric file one wants to change the glyph names in.
+This font metric file can be in any of the formats MTX, PL, AFM, and
+VPL, and it will be converted to MTX format if it isn't already in
+that format (this happens just as for files listed in the second
+argument of |\installfont|). \meta{destination font} (which must be
+different from \meta{source font}) will be taken as the name for a
+new \texttt{.mtx} file that will be generated. The destination font
+can differ from the source font only in two ways: the names of some
+glyphs in the source font might be changed, and some of the commands
+from the source font might not have been copied to the destination
+font. To what extent the fonts are different is determined by what
+modifying commands have been executed; when no modifying commands
+have been executed, the source and destination font are equal.
+
+The modifying reglyphing commands are
+\begin{quote}
+ |\renameglyph|\marg{to}\marg{from}\\
+ |\renameglyphweighted|\marg{to}\marg{from}\marg{weight}\\
+ |\killglyph|\marg{glyph}\\
+ |\killglyphweighted|\marg{glyph}\marg{weight}\\
+ |\offmtxcommand|\marg{command}\\
+ |\onmtxcommand|\marg{command}
+\end{quote}
+|\renameglyph| simply declares that occurrences of the glyph name
+\meta{from} should be replaced by the glyph name \meta{to}. To each
+glyph name is also assigned a \emph{weight}, which is used by a
+mechanism which conditions copying of commands from the source font to
+the destination font by the set of glyphs that command mentions. The
+details of this mechanism are however somewhat tricky, so those
+interested in the full generality should read the comments in the
+source of \fontinst. Here it needs only be noted that if one applies
+|\killglyph| to a glyph name, then (under most circumstances) commands
+that refer to that glyph name will not be copied to the destination
+font.
+
+|\offmtxcommand| and |\onmtxcommand| also control whether commands are
+copied to the destination font, but they look at the actual command
+rather than the glyphs it refers to. For example, after the command
+\begin{quote}
+ |\offmtxcommand{\setkern}|
+\end{quote}
+no |\setkern| commands will be copied. By using |\offmtxcommand|, it
+is possible to achieve effects similar to those of the files
+\texttt{kernoff.mtx} and \texttt{glyphoff.mtx}---the difference is
+that with |\offmtxcommand|, it happens at an earlier stage of the font
+generation. As expected, |\onmtxcommand| undoes the effect of
+|\offmtxcommand|.
+
+A special rule pertains to the |\set|\-|raw|\-|glyph|,
+|\set|\-|not|\-|glyph|, |\set|\-|scaled|\-|raw|\-|glyph|, and
+|\set|\-|scaled|\-|not|\-|glyph| commands, since |\transformfont|
+doesn't care what something was in the source font when it generates
+the transformed font. To turn these commands off while reglyphing,
+you use |\offmtx|\-|command| on |\set|\-|scaled|\-|raw|\-|glyph|.
+
+The effects of modifying reglyphing commands are delimited by
+|\reglyphfonts| and |\endreglyphfonts|, which starts and ends a group
+respectively.
+
+As we expect the most common reglyphing operation will be to go from SC
+glyph names to expert glyph names, there is a file \texttt{csc2x.tex}
+in the \fontinst distribution which contains the modifying
+reglyphing commands needed for setting up that conversion. Thus you
+can write for example
+\begin{quote}
+ |\reglyphfonts|\\
+ | \input csc2x|\\
+ | \reglyphfont{padrcx8r}{padrc8r}|\\
+ | \reglyphfont{padscx8r}{padsc8r}|\\
+ |\endreglyphfonts|
+\end{quote}
+to alter the glyph names in the SC fonts in the Adobe Garamond
+(\texttt{pad}) family.
+Note that the names of the destination fonts here really are rather
+arbitrary, since they will only exist as \texttt{.mtx} files, and
+thus only need to work within your local file system. In particular,
+all the |\setrawglyph| commands in the destination font files still
+refer to the source font, so it is that font which the drivers need
+to know about.
+
+
+\subsection{Making map file fragments}
+\label{Ssec:MapFragments}
+
+A \emph{map file fragment} is the lines\footnote{Not in general an
+entire map file, hence the word \emph{fragment}.} of a map file that
+the corresponding driver would need for handling some set of fonts.
+When told to, \fontinst can (in a fairly automatic way) create
+the map file fragment which is needed for the set of raw fonts
+\fontinst has (i) installed directly (using |\installrawfont|)
+or (ii) used as a base font for some installed virtual font (generated
+by |\installfont|). \Fontinst does not support the map file
+syntaxes of every existing driver, but the system is designed to be
+extendable and contributions that extend its capabilities are welcome.
+Nor can \fontinst examine your \TeX\ system and
+determine every piece of information needed to make the correct map
+file fragments, but you can tell it roughly how your installation
+looks, it can make guesses which work most of the time, and you can
+specify most things explicitly if the guesses turn out to be wrong.
+Should the available options for configuring the process turn out to
+be inadequate for your needs, then please write to the
+\fontinst mailing list about this---there is probably a way
+to improve the system so that your needs can be met.
+
+Now what does one have to do to use this map file fragment writer,
+then? First you need to tell \fontinst to record the
+information the map file fragment writer needs. You do this by giving
+the command
+\begin{quote}
+ |\recordtransforms{whatever.tex}|
+\end{quote}
+at the beginning of the run. Here \texttt{whatever.tex} is the name of
+a file that will be created, so you can use some other name if you
+like. After that you do all the calls to |\transform|\-|font|,
+|\install|\-|font|, |\install|\-|raw|\-|font|, |\latin|\-|family|,
+etc.\ you need to make the fonts you want. When you're done, you give
+the command
+\begin{quote}
+ |\endrecordtransforms|
+\end{quote}
+and end the run (say |\bye|). The file \texttt{whatever.tex} will now
+contain the information about which fonts were used and what needs to
+be done with them.
+
+The second step is to actually run the map file fragment writer.
+Observe that it is located in the file \texttt{finstmsc.sty}, not
+\texttt{fontinst.sty}! The commands you need to give it can be so few
+that you can type them in at \TeX's \texttt{*} prompt, but if you are
+writing a command file then it should typically have the following
+structure (comments not necessary, of course):
+\begin{quote}
+ \begin{tabular}{ll}
+ |\input finstmsc.sty|& |%| Input command definitions\\
+ \meta{general settings} & |%| See below\\
+ |\adddriver|\marg{driver name}\marg{output file}&
+ |%| Open output file\\
+ |\input whatever.tex|& |%| Writes to output file(s)\\
+ |\donedrivers|& |%| Close output file(s), tidy up\\
+ |\bye|& |%| Quit
+ \end{tabular}
+\end{quote}
+The |\adddriver| command gives the order ``write map file entries for
+the \meta{driver name} DVI driver to the file \meta{output file}.'' The
+plan is that it should be possible to use the name of just about any
+major driver (\texttt{dvips}, \texttt{xdvi},\footnote{Or
+does that use the same map file as \texttt{dvips}? I heard somewhere
+that it did. /LH} \texttt{pdftex},\footnote{pdf\TeX\ can read
+the map files generated for \texttt{dvips}, but a separate driver is
+desirable because the formats are not completely identical.}
+\texttt{OzTeX}, etc.) here and get suitable map file entries for that
+driver as output, but for the moment only the \texttt{dvips} and
+\texttt{dvipdfm}\footnote{Whose support I made very much to illustrate
+that you \emph{don't} have to be a big and ancient driver like
+\texttt{dvips} to have supporting code put into \fontinst.
+(The fact that I just happened to have printed out the documentation and
+that is was easy to read also helped, of course.) Note, however, that
+there won't be any support for a driver unless someone sits down and
+writes the code for it! Don't assume I will. /LH} drivers are supported.
+
+You may also use \texttt{debug} or \texttt{pltotf} for \meta{driver name}.
+The \texttt{debug} ``DVI driver'' file simply contains all the available
+information about each font (hence it should come handy for debugging
+code writing entries for real drivers) in a format that should be easy
+to interpret for a human. It could be the right choice if you're going
+to write the map file manually, as the combined effects of several
+font transformations are not always easy to compute manually. The
+file generated for the \texttt{pltotf} ``driver'' is actually a shell
+script consisting of a sequence of \pltotf commands. These commands
+perform the \pl to \tfm conversion for precisely those fonts that are
+actually needed (\fontinst usually generates \pl files also for a
+number of fonts at intermediate stages of transformation, and many of
+these need not be converted to \tfm files). The \texttt{TFMfileprefix}
+string can be used to add a directory path to the \tfm file names,
+perhaps saving the step of moving them to their proper location later.
+
+The file \texttt{whatever.tex} in the above example contains the
+commands (|\makemapentry| commands) that actually cause entries to be
+written to the output file. It also contains a number of |\storemapdata|
+commands---these describe how some given font was made. If some
+metric file you have used contains |\setrawglyph| commands that were
+not automatically generated by \fontinst, then there might
+not be a |\storemapdata| for the font they refer to in
+\texttt{whatever.tex}, so you will have to include such a command
+yourself somewhere. This can for example be done in the \meta{general
+settings} part of the above example file.
+
+Another class of things that will typically appear in the
+\meta{general settings} part above is commands that will inform the
+routines actually writing output about your \TeX\ system, about the set
+of fonts you are using on this run, or about something else that might
+be useful. Some such commands are of a general nature and affect what
+assumptions \fontinst will make in certain conditions when no
+specific information is available. For the moment there commands are:
+\begin{description}
+ \item[\cs{AssumeMetafont}] Assume all fonts with PL metrics are
+ bitmaps generated by Metafont, and therefore make no entries for
+ them.
+ \item[\cs{AssumeAMSBSYY}] Assume all fonts with PL metrics have their
+ \TeX\ names in all upper case as postscript names---just like the
+ Computer Modern fonts in the AMS\slash Blue~Sky\slash Y\&Y
+ distribution.
+ \item[\cs{AssumeBaKoMa}] Assume all fonts with PL metrics have their
+ \TeX\ names in all lower case as postscript names---just like the
+ Computer Modern fonts in the BaKoMa distribution.
+\end{description}
+Otherwise the default action of the routine for finding out the
+postscript name of a font simply is to observe that it hasn't got a clue
+about what the right value is when the metrics were taken from a PL
+file, and therefore it writes `\texttt{??????}' for the postscript name.
+\begin{description}
+ \item[\cs{AssumeLWFN}] Assume postscript fonts for which nothing
+ else has been specified are stored in files which are named
+ according to the \mbox{MacOS} scheme for
+ \texttt{LWFN}s.%\footnote{LaserWriter FoNt}
+\end{description}
+Otherwise the default action is to use the name of the AFM or PL from
+which the metrics were originally taken, and add the file suffix stored
+in the string \texttt{PSfontsuffix}. The default value of this string
+is \texttt{.pfa}, but it can be changed using |\resetstr|.
+
+If neither the default nor the LWFN scheme produce correct results
+then you may use the more specific |\specifypsfont| command, which
+describes exactly which file (or files, if any) a given font is stored
+in. The syntax of this command is
+\begin{quote}
+ |\specifypsfont|\marg{PS font name}\marg{actions}
+\end{quote}
+where the \meta{actions} is a sequence of ``action commands''.
+Currently the only such command is
+\begin{quote}
+ |\download|\marg{file}
+\end{quote}
+which instructs the map file writer to include in any entry using
+that PS font and ``instruction'' that the specified file should be
+downloaded. Some examples are
+\begin{verbatim}
+ \specifypsfont{Times-Roman}{}
+ \specifypsfont{Shareware-Cyrillic-Regular}{\download{fcyr.gsf}}
+ \specifypsfont{zmnl8ac6}{%
+ \download{MinionMM.pfb}\download{zmnl8ac6.pro}%
+ }
+\end{verbatim}
+Many \dvi drivers (for example \dvips) have more than one style of
+font downloading (e.g., partial and full downloading). This interface
+could be extended to control also such finer details (for example by
+adding a |\fulldownload| command to force full download of a font),
+but requests for this has so far been scarce.
+
+Finally, there is the |\declarepsencoding| command which is used to
+link ETX files to postscript encodings. If no postscript encoding has
+been linked to a given ETX file then \fontinst will
+automatically create a postscript encoding (\texttt{.enc}) file for
+that encoding, and use this file for all reencoding commands.
+The \texttt{8r} encoding is predeclared, and it doesn't
+matter if an encoding is undeclared if you never use it to reencode
+fonts, but there is potentially a problem with not having declared
+encodings you have installed and use for reencoding, as you may then
+find yourself having two files with identical names that define
+encodings that do not have the same name (as far as postscript is
+concerned).
+
+
+
+\subsection{Tuning accent positions---an application of loops}
+
+The accent placements made by \texttt{latin.mtx} certainly aren't
+perfect for all fonts, and the only way to find out where they should
+be put is through trying in text the accented letters you get for a
+couple of values for the position parameter and deciding which one
+works best. Since to try one parameter value you need to (i) edit it
+into an MTX file, (ii) run \fontinst, (iii) run
+\vptovf, (iv) run \TeX\ on some test text, and (v) print that
+text, trying one parameter value can take annoyingly much time.
+Repeating the same procedure ten times to test ten values is not
+something one does without being bored (unless one scripts it, of
+course), but it is possible to try ten parameter values in a single
+virtual font, and without doing very much typing.
+
+Say you're not too happy with how \texttt{latin.mtx} positions the
+accent in the \texttt{ohungarumlaut} glyph:
+\begin{quote}
+ |\setglyph{ohungarumlaut}|\\
+ | \topaccent{o}{hungarumlaut}{500}|\\
+ |\endsetglyph|
+\end{quote}
+The |500| is the horizontal position (in thousandths of the width of
+the \texttt{o}) that the centre of \texttt{hungarumlaut} in the glyph
+constructed will have, so that is the position parameter value that
+you want to change. Create an MTX file containing the code
+\begin{quote}
+ |\for(pos){250}{750}{50}|\\
+ | \setglyph{ohungarumlaut\strint{pos}}|\\
+ | \topaccent{o}{hungarumlaut}{\int{pos}}|\\
+ | \endsetglyph|\\
+ | \setleftrightkerning{ohungarumlaut\strint{pos}}|\\
+ | {ohungarumlaut}{1000}|\\
+ |\endfor(pos)|
+\end{quote}
+This will set eleven glyphs \texttt{ohungarumlaut250},
+\texttt{ohungarumlaut300}, \texttt{ohungarumlaut350}, \textellipsis\,,
+\texttt{ohungarumlaut750}, each being an Hungarianly umlauted `o'
+(i.e., an `\H{o}') but all having that umlaut in slightly different
+positions. In order to put them in a font, you also need to make an
+encoding that contains them. Therefore create an ETX file which
+contains the code
+\begin{quote}
+ |\relax\encoding|\\
+ |\nextslot{"C0}|\\
+ |\for(pos){250}{750}{50}|\\
+ | \setslot{ohungarumlaut\strint{pos}}|\\
+ | \endsetslot|\\
+ |\endfor(pos)|\\
+ |\endencoding|
+\end{quote}
+The command for installing this experiment font would be something like
+\begin{quote}
+ |\installfont|\marg{some name}|{|\meta{the normal list of metrics}%
+ |,|\penalty0\meta{the new MTX}|}|\penalty0
+ |{ot1,|\meta{the new ETX}|}|\penalty0|{OT1}|\textellipsis
+\end{quote}
+The reason for including \texttt{ot1} in the third argument above is
+that you'll need letters other than `\H{o}' against which you can
+compare the experimental glyphs. It would not have been possible to
+use \texttt{t1} instead of \texttt{ot1} (even though that has more
+Hungarian letters) since that would set all slots in the font and
+leave none for these experimental \texttt{ohungarumlaut}s.
+
+It is even possible to use a loop for making the test text. The
+\LaTeX\ macros
+\begin{verbatim}
+\newcount\slotcount
+\newcommand\testtext[3]{%
+ \slotcount=#1\relax
+ \begin{description}%
+ \loop\item[\the\slotcount]#3%
+ \ifnum #2>>\slotcount \advance \slotcount 1 \repeat
+ \end{description}%
+}
+\DeclareTextCompositeCommand{\H}{OT1}{o}{\char\slotcount}
+\end{verbatim}
+will let you write
+\begin{quote}
+ |\testtext|\marg{first}\marg{last}\marg{text}
+\end{quote}
+to get the text \meta{text} typeset once for each slot from
+\meta{first} to \meta{last} inclusive, with |\H{o}| ranging through the
+glyphs in this interval. Thus in this case
+|\testtext|\penalty\hyphenpenalty|{"C0}|\penalty\hyphenpenalty|{"CA}|%
+\penalty\hyphenpenalty|{Erd\H{o}s}| would be a trivial test.
+
+
+\subsection{Font installation commands}
+\label{Ssec:FontInstCmds}
+
+The |\installfont|, |\installrawfont|, and |\installfontas| commands
+have the respective syntaxes
+\begin{isyntax}
+ |\installfont|\marg{font-name}\marg{metrics}\marg{etx-list}\penalty0
+ \marg{encoding}\marg{family}\marg{series}\marg{shape}\marg{size}\\
+ |\installrawfont|\marg{font-name}\marg{metrics}\marg{etx-list}%
+ \penalty0
+ \marg{encoding}\marg{family}\marg{series}\marg{shape}\marg{size}\\
+ |\installfontas|\marg{font-name}\penalty0\marg{encoding}%
+ \marg{family}\marg{series}\marg{shape}\marg{size}
+\end{isyntax}
+The \meta{font-name} argument and the last five arguments are common
+to all these commands. The first argument is the name of a \TeX\ font
+to install. The last five arguments are the NFSS attributes under which
+that font will be declared to \LaTeX---encoding, family, series, shape,
+and size. It is worth observing that encoding names are usually in
+upper case, whereas the family, series, and shape are usually in lower
+case. The size argument is either a shorthand (declared using
+|\declaresize|) for a particular font
+size (or range of font sizes), or an explicit list of font sizes or
+ranges of sizes, which is copied directly to the font declaration.
+The most common case is to let the size argument be empty, as that is
+declared as a shorthand for ``any size''.
+
+The |\installfontas| command does not itself create the font, it just
+makes a note that the specified font declaration should be written to
+the proper FD file at |\end|\-|install|\-|fonts|. The
+|\install|\-|font| and |\install|\-|raw|\-|font| commands do however
+produce the font, in the sense that they write a VPL and PL
+respectively file for the font. It depends solely on the \meta{metrics}
+and \meta{etx-list} arguments what this font will contain. Many
+features of these arguments are new with \fontinst v\,1.9;
+therefore the complete syntaxes are described below.
+
+Both arguments are comma-separated lists of basically file names (not
+including an extension). The files listed in the \meta{metrics} are
+font metric files which together build up a \emph{glyph base}
+(definitions of glyphs and metrics related to one or several glyphs),
+whereas the files listed in the \meta{etx-list} are encoding definition
+files that select a subset of the glyph base for turning into a
+\TeX\ font. The font metrics can be in either of the four formats
+MTX, PL, AFM, and VPL, which are considered in that order. If the
+metrics are not originally in MTX format then they will be converted
+to this format (a new file will be created) before they are used.
+The encoding definitions must be in ETX format. The files actually
+read will have a suffix \texttt{.mtx}, \texttt{.pl}, \texttt{.afm},
+\texttt{.vpl}, or \texttt{.etx} appended to the name given, depending
+on which format is expected.
+
+Within each element of the comma-separated list, the actual file name
+is followed by zero or more \emph{modifier clause}s. A \meta{modifier
+clause} consists of a \emph{keyword} followed by some number (usually
+one) of \emph{arguments}, separated by spaces. The whole thing looks
+a lot like the \meta{rule specifications} of e.g.\ the |\vrule|
+command, but here the spaces are mandatory. The currently defined
+\meta{modifier clause}s are
+\begin{description}
+ \item[\mdseries\textvisiblespace\texttt{option}\textvisiblespace
+ \meta{string}]
+ Available for metric and encoding files. This adds \meta{string}
+ to the list of options for this file, which may affect what code
+ the file executes. The file can then test, using the |\ifoption|
+ command, whether a specific string is one of the options it was
+ given.
+ \item[\mdseries\textvisiblespace\texttt{scaled}\textvisiblespace
+ \meta{factor}]
+ Available for metric files. Causes the \texttt{rawscale} integer
+ variable to be set to the \meta{factor} (an integer expression)
+ while the file is being read. This scales glyphs and kerns that
+ are added to the glyph base by the \meta{factor}.
+ \item[\mdseries\textvisiblespace\texttt{suffix}\textvisiblespace
+ \meta{suffix}]
+ Available for metric files. Causes \meta{suffix} to be appended
+ to every glyph name appearing in a glyph or kern that file adds
+ to the glyph base. Thus ``\texttt{suffix /2}'' effectively
+ changes a
+ \begin{quote}
+ |\setrawglyph{a}|\dots
+ \end{quote}
+ to a
+ \begin{quote}
+ |\setrawglyph{a/2}|\dots
+ \end{quote}
+ \item[\mdseries\textvisiblespace\texttt{encoding}\textvisiblespace
+ \meta{etx-name}]
+ Available for metric files, and forces \fontinst to
+ only consider the PL and VPL formats for this font.
+ As these file formats do not contain glyph names, an ETX file
+ is used to assign glyph names to the slots in the font.
+ This ETX file is usually selected according to the
+ \texttt{CODINGSCHEME} property of the PL or VPL (using the
+ correspondences set up via the |\declare|\-|encoding| command),
+ but that information is not always as one would want it (there
+ are even fonts for which it is quite wrong). An \texttt{encoding}
+ clause bypasses this automatic mechanism, so that the file
+ \meta{etx-name}\texttt{.etx} is used instead.
+
+% % The following is no longer true as of v1.926:
+% \textbf{Note:} The first time that a file in PL or VPL format is
+% used in a \meta{metrics} argument, a corresponding MTX file is
+% generated. This means that if the same file reference is used
+% another time then the reference will be to the MTX file, not to
+% the original PL or VPL, and thus \texttt{encoding} clauses on
+% subsequent uses will have no effect. Each font only has one
+% encoding, so it usually makes no sense to switch the ETX file
+% used to interpret a font, but since MTX files are not
+% automatically deleted between runs there is a risk that this
+% takes away the intended effect of an \texttt{encoding} clause.
+
+ \item[\mdseries\textvisiblespace\texttt{mtxasetx}]
+ This is available for files in the \meta{etx-list}. The actual
+ function of a
+ \begin{quote}
+ \meta{file-name} \texttt{mtxasetx}
+ \end{quote}
+ item in the \meta{etx-list} is that the file
+ \meta{file-name}\texttt{.mtx} is inputted (\emph{not}
+ \meta{file-name}\texttt{.etx}) and that the correspondence
+ between glyph names and slot numbers set up in
+ |\set|\-|raw|\-|glyph| or |\set|\-|scaled|\-|raw|\-|glyph|
+ commands in this file is treated as if it had been set up by
+ |\setslot| commands in an ETX file. Provided the MTX file is
+ transformable, the glyph base will be unaffected.
+
+ The purpose of this feature is to simplify quick and dirty
+ installations of odd fonts for which no suitable ETX file is
+ available. This can be useful in early stages of the design of
+ a new font, but is inferior to installation using proper ETX
+ files since one for example cannot specify any ligatures in
+ MTX files.
+\end{description}
+Furthermore there is a special exception for the \meta{metrics}: if
+the first token in one of the list items is the control sequence
+|\metrics|, then the rest of that item is interpreted as explicit
+metric commands to execute.
+
+If the \meta{metrics} of two subsequent |\install|\-|font|
+or |\install|\-|raw|\-|font| commands are identical then the glyph
+bases will be identical as well. This creates an opportunity for
+optimization, which \fontinst makes use of by caching glyph
+bases from one installation command to the next so that the glyph
+base does not have to be rebuilt in these cases. A side-effect of
+this caching is that local assignments made between two font
+installation commands are cleared out with the glyph base, but
+|\setint| and similar \fontinst commands make global
+assignments when used in such positions.
+
+Some examples might be in order. The first is an adaptation of an
+installation command from \texttt{mfnt-0.59} %~\cite{mfnt}
+by Matthias Clasen and Ulrik Vieth: the installation command for the
+8-bit math font \texttt{xma1000} (which can be thought of as being
+to \texttt{cmmi10} sort of as \texttt{ecrm1000} is to \texttt{cmr10}).
+The first three \texttt{encoding} clauses are more fine-tuning---without
+them, a few glyphs would get incorrect names---but the last two are
+quite essential, as the \texttt{msam10} and \texttt{msbm10} fonts
+incorrectly claim to have the coding scheme \texttt{TEX MATH
+SYMBOLS}.
+\begin{verbatim}
+ \installfont{xma1000}{%
+ yma1000 encoding mcin,%
+ cmr10 encoding ot1upright,%
+ cmmi10,%
+ cmsy10 encoding omscal,%
+ msam10 encoding msam,%
+ msbm10 encoding msbm,%
+ mccmhax,mccmkern,mcmissing,%
+ cmsy10-base,cmsy10-extra%
+ }{mc}{MC}{cm}{m}{n}{<<10->>}
+\end{verbatim}
+Also note the explicit \LaTeX\ size specification for the range
+``10\,pt and up''.
+
+The second example makes use of a \texttt{suffix} clause to combine
+the letters from one font with the digits from another.
+\begin{verbatim}
+ \installfont{msbrj8t}{msbr8r,msbrc8r suffix /2,latin}{digit2,t1}
+ {T1}{msbj}{m}{n}{}
+\end{verbatim}
+In this case, the glyph base contains the glyphs of Monotype Sabon
+(SabonMT)---under names such as \texttt{A} for `A', \texttt{a} for
+`a', and \texttt{one} for a lining digit one---as well as the
+glyphs of Monotype Sabon Small Caps and Oldstyle Figures
+(SabonMT-SCOSF)---under names such as \texttt{A/2} for `A',
+\texttt{a/2} for `\textsc{a}', and \texttt{one/2} for a hanging
+digit one. The \texttt{digit2.etx} file simply makes the definition
+\begin{verbatim}
+ \setcommand\digit#1{#1/2}
+\end{verbatim}
+which causes \texttt{t1.etx} to put \texttt{zero/2} in slot 48 (digit
+zero), \texttt{one/2} in slot 49 etc., instead of as it normally
+would \texttt{zero} in slot 48, \texttt{one} in slot 49 and so on.
+The net effect is that the digits in the generated \texttt{msbrj8t}
+is from \texttt{msbrc8r} (SabonMT-SCOSF) but everything else is from
+\texttt{msbr8r} (SabonMT).
+
+The third example makes use of an \texttt{mtxasetx} clause to install
+(with its default encoding) a font for which creating an appropriate
+ETX file seems not worth the trouble.
+\begin{verbatim}
+ \installrawfont{psyr}{psyr,\metrics
+ \setint{xheight}{\height{alpha}}
+ }{txtfdmns,psyr mtxasetx}{U}{psy}{m}{n}{}
+\end{verbatim}
+The effect of the second \texttt{psyr} is that \texttt{psyr.mtx} is
+read (in case there was no \texttt{psyr.mtx} then it is created from
+(hopefully) \texttt{psyr.afm}) and the information in it will form
+the glyph base. Because of the |\metrics| control sequence, the rest
+of that item will be interpreted as explicit metric commands
+modifying the glyph base, and thus the |\setint| command can provide
+a value for the \texttt{xheight} variable (there doesn't seem to be
+such a value in the AFM). Once the glyph base is completed, the
+|\install|\-|raw|\-|font| starts writing the file \texttt{psyr.pl}
+(that's for the first \texttt{psyr}). The encoding of that font will,
+because of the \texttt{psyr mtxasetx}, be the same as that used in
+\texttt{psyr.mtx}. Finally, the \texttt{txtfdmns} is for
+\texttt{txtfdmns.etx}, an ETX file which sets fontdimens 1--16 as for
+a \texttt{T1} encoded font but does not set any slots. Since
+\texttt{psyr.mtx} reinterpreted as an ETX file sets slots but no
+fontdimens, these complement each other nicely.
+
+
+
+\subsection{Bounding boxes}
+
+Han The Thanh has created an implementation of bounding box support
+for \fontinst, and it is a modified form of that support
+is distributed with \fontinst as the file \texttt{bbox.sty}. To load
+this, begin your command file with
+\begin{verbatim}
+ \input fontinst.sty
+ \input bbox.sty
+\end{verbatim}
+The reason for not making it default is that keeping track of bounding
+boxes increases some of \fontinst's memory requirements quite a lot.
+
+One important
+characteristic of this implementation is that the dimensions of the
+bounding box are not bundled into the same data structure (the
+|\g-|\meta{glyph} macros) as the glyph's width, height, depth, and
+italic correction are, but stored in a separate data structure (the
+|\gb-|\meta{glyph} macros). A glyph doesn't need to have its bounding
+box set, it is simply a piece of information that \fontinst
+will store if you tell it to and which you can later retrieve.
+
+The bounding box will be stored as coordinates of the sides in the
+normal AFM coordinate system. The commands for retrieving these
+coordinates are
+\begin{center}
+ \begin{tabular}{ll}
+ \textbf{Command}& \textbf{Side}\\
+ |\bbtop|\marg{glyph}& top ($y$-coordinate)\\
+ |\bbbottom|\marg{glyph}& bottom ($y$-coordinate)\\
+ |\bbleft|\marg{glyph}& left ($x$-coordinate)\\
+ |\bbright|\marg{glyph}& right ($x$-coordinate)
+ \end{tabular}
+\end{center}
+In Thanh's implementation the command names were |\ury|, |\lly|,
+|\llx|, and |\urx| respectively instead, but I think the former are
+easier to remember. If no bounding box has been set for a glyph then
+the above commands will instead report the corresponding coordinate of
+the glyph's \TeX\ box (i.e.\ |\height|\marg{glyph},
+|\neg{\depth|\marg{glyph}|}|, |0|, and |\width|\marg{glyph}
+respectively).
+
+The command for setting the bounding box of a glyph is
+\begin{quote}
+ |\setglyphbb|\marg{glyph}\marg{left}\marg{bottom}\marg{right}%
+ \marg{top}
+\end{quote}
+
+
+
+\section{Miscellaneous notes}
+
+\subsection{On verbatim, typewriter, and monowidth fonts}
+
+The verbatim, typewriter, and monowidth concepts are common sources
+of confusion for those who use \fontinst to install fonts
+with \LaTeX; in particular
+there are many misconceptions about the relation between them. The
+official view (of which not much has actually been brought forward)
+is that these concepts are really about three quite different things.
+
+A font is a \emph{monowidth} (monospaced, fixed-pitch) font if all
+glyphs in it have exactly the same width. Some font formats make
+special provisions for such fonts; the most notable example is the
+AFM format, where a single \texttt{CharWidth} keyword specifies the
+width for all glyphs in the font. \Fontinst responds to this
+by including the command
+\begin{quote}
+ |\setint{monowidth}{1}|
+\end{quote}
+in the MTX file generated from an AFM, but that is everything that is
+hard-wired into the program. That a font is monowidth is however
+something that one should take note of when installing it for \TeX,
+as it means many of the glyphs in it have such a strange appearance
+that they are (pretty much) useless. The \texttt{endash} is for
+example usually only half as long as the \texttt{hyphen} and the
+letters in ligature glyphs are only half as wide as normal letters.
+Many of the ETX and MTX files that come with \fontinst
+contain special commands to avoid making use of such degenerate
+glyphs.
+
+That a font is a \emph{typewriter} font really only means that it has
+a typewriterish look about it. The two most familiar typewriter fonts
+are probably Computer Modern Typewriter (\texttt{cmtt}) and Courier.
+Both of these fonts are monowidth, but there is no absolute rule about
+this. One of the standard \TeX\ fonts is for example Computer Modern
+Variable-width Typewriter (\texttt{cmvtt}), which is not a monowidth
+font, as Figure~\ref{Fig:TTvsVTT} shows.
+\begin{figure}
+ \begin{tabular}{ll}
+ \texttt{cmtt}:& \fontfamily{cmtt}\selectfont
+ The quick brown fox jumps over the lazy dog.\\
+ \texttt{cmvtt}:& \fontfamily{cmvtt}\selectfont
+ The quick brown fox jumps over the lazy dog.
+ \end{tabular}
+ \caption{Two typewriter fonts}
+ \label{Fig:TTvsVTT}
+\end{figure}
+
+The verbatim concept has very little to do with fonts at all; in
+\LaTeX\ it is considered to be a property of the environment
+(\texttt{verbatim}, \texttt{macrocode}, etc.) rather than a property
+of the font. The connection there is with fonts is that the encoding
+of the font must contain visible ASCII (as defined in Appendix~C
+of \emph{The \TeX book}%~\cite{TeXbook}
+) as a subset for the text to
+be rendered correctly. The \texttt{cmtt} family is the only one amongst
+the original Computer Modern fonts which meets this criterion and
+that is the primary grounds for the idea that these three concepts
+should be connected. Today that reason is at best a very weak one, as
+all \texttt{T1}-encoded fonts also meet the criterion of containing
+visible ASCII as a subset.
+
+A circumstance which has probably added to the confusion is that
+\texttt{OT1} is usually claimed to be an encoding. In reality the
+Computer Modern fonts that are declared in \LaTeX\ as being
+\texttt{OT1} display as many as five different encodings, as shown in
+Table~\ref{Tab:OT1-fonts}.
+\begin{table}
+ \begin{tabular}{lccc}
+ & \texttt{TEX TEXT}&
+ \begin{tabular}[b]{c}\texttt{TEX TEXT WITHOUT}\\
+ \texttt{F-LIGATURES}\end{tabular}&
+ \texttt{TEX TYPEWRITER TEXT}\\
+ \noalign{\medskip}
+ non-italic&
+ \begin{tabular}{l}
+ \texttt{cmb10}\\
+ \texttt{cmbx5}--\texttt{12}\\
+ \texttt{cmbxsl10}\\
+ \texttt{cmdunh10}\\
+ \texttt{cmff10}\\
+ \texttt{cmfib8}\\
+ \texttt{cmr6}--\texttt{17}\\
+ \texttt{cmsl8}--\texttt{12}\\
+ \texttt{cmss8}--\texttt{17}\\
+ \texttt{cmssbx10}\\
+ \texttt{cmssdc10}\\
+ \texttt{cmssi8}--\texttt{17}\\
+ \texttt{cmssq8}\\
+ \texttt{cmssqi8}\\
+ \texttt{cmvtt10}
+ \end{tabular}&
+ \begin{tabular}{l}
+ \texttt{cmcsc8}--\texttt{10}\\
+ \texttt{cmr5}
+ \end{tabular}&
+ \begin{tabular}{l}
+ \texttt{cmsltt10}\\
+ \texttt{cmtcsc10}\\
+ \texttt{cmtt8}--\texttt{12}
+ \end{tabular}\\
+ \noalign{\medskip}
+ italic&
+ \begin{tabular}{l}
+ \texttt{cmbxti10}\\
+ \texttt{cmfi10}\\
+ \texttt{cmti7}--\texttt{12}\\
+ \texttt{cmu10}
+ \end{tabular}&&
+ \begin{tabular}{l}
+ \texttt{cmitt10}
+ \end{tabular}
+ \end{tabular}
+ \caption{``\texttt{OT1}-encoded'' Computer Modern fonts, collected
+ according to the actual font encoding}
+ \label{Tab:OT1-fonts}
+\end{table}
+Since most monowidth fonts are only used for setting verbatim text,
+there is some code in \texttt{ot1.etx} which automatically chooses a
+\texttt{TEX TYPEWRITER TEXT} encoding for the font when the
+\texttt{monowidth} integer is set. The only reason for this is the
+guess that this is what the user wanted.
+
+
+
+\section*{Acknowledgements}
+
+I'd like to thank all of the \fontinst $\alpha$-testers, especially
+Karl Berry, Damian Cugley, Steve Grahthwohl, Yannis Haralambous, Alan
+Hoenig, Rob Hutchings, Constantin Kahn, Peter Busk Laursen, Ciar{\'a}n {\'O}
+Duibh{\'\i}n, Hilmar Schlegel, Paul Thompson, Norman Walsh and John Wells,
+who made excellent bug-catchers!
+
+Thanks to Barry Smith, Frank Mittelbach, and especially Sebastian
+Rahtz for many useful email discussions on how virtual fonts should
+interact with \LaTeXe.
+
+Thanks to Karl Berry and Damain Cugley for detailed comments on this
+documentation.
+
+Thanks to David Carlisle for the use of his \texttt{trig} macros for
+calculating trigonometry.
+
+
+% \section*{Warranty and distribution}
+%
+% There is no warranty for the \fontinst package, to the extent
+% permitted by applicable law. Except when otherwise stated in writing,
+% the author provides the program `as is' without warranty of any kind,
+% either expressed or implied, including, but not limited to, the
+% implied warranties of merchantability and fitness for a particular
+% purpose. The entire risk as to the quality and performance of the
+% program is with you. Should the package prove defective, you assume
+% the cost of all necessary servicing, repair or correction.
+%
+% In no event unless required by applicable law or agreed to in writing
+% will the author be liable to you for damages, including any general,
+% special, incidental or consequential damages arising out of the use or
+% inability to use the program (including but not limited to loss of
+% data or data being rendered inaccurate or losses sustained by you or
+% third parties or a failure of the program to operate with any other
+% programs), even if such holder or other party has been advised of the
+% possibility of such damages.
+%
+% Redistribution of unchanged files is allowed provided that all files
+% listed in the \texttt{MANIFEST} file are distributed.
+%
+% If you receive only some of these files from someone, or if you
+% receieve altered files, then complain!
+
+\end{document}
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/manual/intro98.dvi b/Master/texmf-dist/doc/fonts/fontinst/base/manual/intro98.dvi
new file mode 100644
index 00000000000..d272df5088e
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/fontinst/base/manual/intro98.dvi
Binary files differ
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/manual/intro98.pdf b/Master/texmf-dist/doc/fonts/fontinst/base/manual/intro98.pdf
new file mode 100644
index 00000000000..3f517608d16
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/fontinst/base/manual/intro98.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/manual/intro98.tex b/Master/texmf-dist/doc/fonts/fontinst/base/manual/intro98.tex
new file mode 100644
index 00000000000..0e7c485ab6c
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/fontinst/base/manual/intro98.tex
@@ -0,0 +1,1330 @@
+%%% ====================================================================
+%%% @LaTeX-file{
+%%% author = "Alan Jeffrey and Rowland McDonnell and
+%%% Ulrik Vieth and Lars Hellstr{\"o}m",
+%%% version = "1.927",
+%%% date = "28 July 2004",
+%%% time = "23:20:27 CEST",
+%%% filename = "intro98.tex",
+%%% email = "fontinst@tug.org",
+%%% checksum = "",
+%%% codetable = "ISO/ASCII",
+%%% keywords = "fontinst, TeX, PostScript, documentation",
+%%% supported = "yes",
+%%% abstract = "This is documentation for the fontinst
+%%% font installation package.",
+%%% package = "fontinst",
+%%% dependencies = "ltxguide.cls, url.sty, xspace.sty"
+%%% }
+%%% ====================================================================
+
+% Copyright 1993, 1994, 1995, 1996 Alan Jeffrey
+
+% Modified by Rowland McDonnell June 1998
+% Modified and revised by Ulrik Vieth June 1998
+
+\documentclass[a4paper]{ltxguide}
+\usepackage[OT1]{fontenc}
+\usepackage{url,xspace}
+\usepackage{graphicx}
+%\renewcommand\rmdefault{ppl}
+%\renewcommand\rmdefault{padx}
+%\renewcommand\rmdefault{pmnx}
+
+
+% Title page and running heads.
+
+\makeatletter
+\newcommand{\subtitle}[1]{\renewcommand{\@subtitle}{#1}}
+\newcommand{\version}[1]{\renewcommand{\@version}{#1}}
+\newcommand{\illustration}[1]{\renewcommand{\@illustration}{#1}}
+
+\newcommand{\@subtitle}{}
+\newcommand{\@version}{???}
+\newcommand{\@illustration}{cover.eps}
+
+\pagestyle{myheadings}
+\AtBeginDocument{\markright{\small\itshape
+ \@author\hfill\@title: \@subtitle\quad}}
+
+
+\renewcommand{\maketitle}{{%
+ \thispagestyle{empty}%
+ \normalfont\centering
+ \null
+ {\fontsize{100}{100}\textit{\@title}}%
+ \par\bigskip
+ {\Large\textbf{\@subtitle}}%
+ \vfill
+ \includegraphics[width=\textwidth]{\@illustration}%
+ \vfill
+ {\Large\textbf{%
+ \@author\\[\smallskipamount] \@title~v\@version
+ \quad\textperiodcentered\quad \@date}}%
+ \clearpage
+}}
+\makeatother
+
+
+% Set lists tighter (assuming non-zero \parskip).
+
+\makeatletter
+\renewcommand{\@listI}{%
+ \leftmargin\leftmargini
+ \parsep\medskipamount
+ \itemsep\z@ % + parsep
+ \topsep\z@ % + parskip
+ \partopsep\z@
+}
+\makeatother
+
+% Set spacing around captions.
+
+\setlength{\abovecaptionskip}{\medskipamount}
+\setlength{\belowcaptionskip}{\medskipamount}
+
+% Markup for logos, file types, programs, etc.
+
+\newcommand*{\cs}[1]{\texttt{\char`\\ #1}\xspace}
+
+\newcommand*{\OzTeX}{O\kern-.03em z\kern-.15em\TeX}
+\newcommand*{\OzMF}{O\kern-.03em zMF}
+\newcommand*{\OzTools}{O\kern-.03em z\kern-.15em Tools}
+
+\newcommand{\PS}{Post\-Script\xspace}
+\newcommand{\TT}{True\-Type\xspace}
+
+\newcommand*{\setfilename}[1]{\texttt{#1}}
+\newcommand*{\setdotfilename}[1]{\setfilename{.#1}}
+\newcommand*{\setpackagename}[1]{\textsc{#1}}
+
+\newcommand{\dvips} {\setpackagename{dvips}\xspace}
+\newcommand{\Dvips} {\setpackagename{Dvips}\xspace}
+\newcommand{\fontinst}{\setpackagename{font\-inst}\xspace}
+\newcommand{\Fontinst}{\setpackagename{Font\-inst}\xspace}
+
+% \show\fontname
+\newcommand{\fontnamekb}{fontname\xspace}
+\newcommand{\Fontnamekb}{Fontname\xspace}
+
+\newcommand{\mf} {\setfilename{mf}\xspace}
+\newcommand{\Mf} {\setfilename{Mf}\xspace}
+\newcommand{\vf} {\setfilename{vf}\xspace}
+\newcommand{\Vf} {\setfilename{Vf}\xspace}
+\newcommand{\pl} {\setfilename{pl}\xspace}
+\newcommand{\Pl} {\setfilename{Pl}\xspace}
+\newcommand{\fd} {\setfilename{fd}\xspace}
+\newcommand{\Fd} {\setfilename{Fd}\xspace}
+\newcommand{\pk} {\setfilename{pk}\xspace}
+\newcommand{\Pk} {\setfilename{Pk}\xspace}
+\newcommand{\afm}{\setfilename{afm}\xspace}
+\newcommand{\Afm}{\setfilename{Afm}\xspace}
+\newcommand{\vpl}{\setfilename{vpl}\xspace}
+\newcommand{\Vpl}{\setfilename{Vpl}\xspace}
+\newcommand{\tfm}{\setfilename{tfm}\xspace}
+\newcommand{\Tfm}{\setfilename{Tfm}\xspace}
+\newcommand{\mtx}{\setfilename{mtx}\xspace}
+\newcommand{\Mtx}{\setfilename{Mtx}\xspace}
+\newcommand{\etx}{\setfilename{etx}\xspace}
+\newcommand{\Etx}{\setfilename{Etx}\xspace}
+\newcommand{\pfa}{\setfilename{pfa}\xspace}
+\newcommand{\Pfa}{\setfilename{Pfa}\xspace}
+\newcommand{\pfb}{\setfilename{pfb}\xspace}
+\newcommand{\Pfb}{\setfilename{Pfb}\xspace}
+\newcommand{\dvi}{\setfilename{dvi}\xspace}
+\newcommand{\Dvi}{\setfilename{Dvi}\xspace}
+\newcommand{\ttf}{\setfilename{ttf}\xspace}
+\newcommand{\Ttf}{\setfilename{Ttf}\xspace}
+
+\newcommand{\vftovp}{\setpackagename{vftovp}\xspace}
+\newcommand{\vptovf}{\setpackagename{vptovf}\xspace}
+\newcommand{\pltotf}{\setpackagename{pltotf}\xspace}
+\newcommand{\tftopl}{\setpackagename{tftopl}\xspace}
+
+
+% Stolen from Dr Knuth
+\makeatletter % borrow the private macros of PLAIN (with care)
+\def\oct#1{\hbox{\rm\'{}\kern-.2em\it#1\/\kern.05em}} % octal constant
+\def\hex#1{\hbox{\rm\H{}\tt#1}} % hexadecimal constant
+% macros for font tables
+\def\oddline#1{\cr
+ \noalign{\nointerlineskip}
+ \multispan{19}\hrulefill&
+ \setbox0=\hbox{\lower 2.3pt\hbox{\hex{#1x}}}\smash{\box0}\cr
+ \noalign{\nointerlineskip}}
+\def\evenline{\cr\noalign{\hrule}}
+\def\chartstrut{\lower4.5pt\vbox to14pt{}}
+\def\beginchart#1{$$\global\count@=0 #1
+ \halign to\hsize\bgroup
+ \chartstrut##\tabskip0pt plus10pt&
+ &\hfil##\hfil&\vrule##\cr
+ \lower6.5pt\null
+ &&&\oct0&&\oct1&&\oct2&&\oct3&&\oct4&&\oct5&&\oct6&&\oct7&\evenline}
+\def\endchart{\raise11.5pt\null&&&\hex 8&&\hex 9&&\hex A&&\hex B&
+ &\hex C&&\hex D&&\hex E&&\hex F&\cr\egroup$$}
+\def\*{\global\advance\count@ by1 }
+\def\:{\setbox0=\hbox{\char\count@}%
+ \ifdim\ht0>7.5pt\reposition
+ \else\ifdim\dp0>2.5pt\reposition\fi\fi
+ \box0\global\advance\count@ by1 }
+\def\reposition{\setbox0=\hbox{$\vcenter{\kern2pt\box0\kern2pt}$}}
+\def\smallchart{%
+%\global\advance\count@ by16
+ &\oct{00x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline0
+ &\oct{01x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
+ &\oct{02x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline1
+ &\oct{03x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
+ &\oct{04x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline2
+ &\oct{05x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
+ &\oct{06x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline3
+ &\oct{07x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
+ &\oct{10x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline4
+ &\oct{11x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
+ &\oct{12x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline5
+ &\oct{13x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
+ &\oct{14x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline6
+ &\oct{15x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
+ &\oct{16x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline7
+ &\oct{17x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline}
+
+\def\bigchart{%
+%\global\advance\count@ by16
+ &\oct{00x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline0
+ &\oct{01x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
+ &\oct{02x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline1
+ &\oct{03x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
+ &\oct{04x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline2
+ &\oct{05x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
+ &\oct{06x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline3
+ &\oct{07x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
+ &\oct{10x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline4
+ &\oct{11x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
+ &\oct{12x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline5
+ &\oct{13x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
+ &\oct{14x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline6
+ &\oct{15x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
+ &\oct{16x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline7
+ &\oct{17x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
+ &\oct{20x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline8
+ &\oct{21x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
+ &\oct{22x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline9
+ &\oct{23x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
+ &\oct{24x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{A}
+ &\oct{25x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
+ &\oct{26x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{B}
+ &\oct{27x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
+ &\oct{30x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{C}
+ &\oct{31x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
+ &\oct{32x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{D}
+ &\oct{33x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
+ &\oct{34x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{E}
+ &\oct{35x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
+ &\oct{36x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{F}
+ &\oct{37x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline}
+
+% \font\xrm = cmr10 at 10pt % change this line to test font
+% \beginchart\xrm \normalchart \endchart
+
+\newcommand{\smallfontchart}[1]{%
+ \font\xrm = #1 \beginchart\xrm \smallchart \endchart}
+\newcommand{\bigfontchart}[1]{%
+ \font\xrm = #1 \beginchart\xrm \bigchart \endchart}
+
+% \smallfontchart{cmr10 at 10pt}
+% \bigfontchart{ecrm1000 at 10pt}
+\makeatother
+% End stolen from Dr Knuth
+
+
+
+\title{fontinst}
+\subtitle{Font installation software for \TeX}
+\author{Alan Jeffrey and Rowland McDonnell}
+\illustration{roadmap.eps}
+\version{1.8}
+\date{30 June 1998}
+
+\begin{document}
+
+\maketitle
+
+
+\begin{small}
+ This is the tutorial part of the 1998 \fontinst manual, chiefly
+ written by Rowland McDonnell and conveying his then-view on related
+ subjects. Although most of it is still correct,
+ the passing of time has rendered it somewhat antiquated, and the
+ average current (2004) user new to \fontinst would probably find
+ Philipp Lehman's \emph{The Font Installation Guide}
+ (\url{http://www.ctan.org/tex-archive/info/Type1fonts/fontinstallationguide/})
+ more relevant.
+\end{small}
+
+\tableofcontents
+
+
+\clearpage
+
+\section{Introduction}
+
+The \fontinst package is a set of \TeX\ macros written to create
+virtual fonts for use with \TeX. Its main use is creating the
+files needed so you can use PostScript Type 1 fonts with \LaTeX.
+
+\Fontinst needs information about the fonts it works with. This
+information needs to be supplied in an Adobe Font Metric (\afm) or
+\TeX\ Property List (\pl) file. \pl files can be created from
+\tfm files using \tftopl, a program normally included with a \TeX\
+system.
+
+The job that \fontinst does is complicated, but it can be used for
+many tasks by people who are not \TeX\ font wizards. Having said
+that, you do need to understand at least the basics of \LaTeXe's
+font selection mechanism, which is documented in
+\texttt{fntguide.tex}, part of the standard \LaTeX\ distribution.
+\url{ftp://ftp.tex.ac.uk/tex-archive/macros/latex/base/fntguide.tex}
+will fetch a copy if you don't have one to hand.
+
+To get the most benefit out of \fontinst, it's important to
+understand and use Karl Berry's `\Fontnamekb' naming scheme. The
+definitive version of this is available from your nearest CTAN
+server. The following URL will fetch all the files needed
+compressed into a single ZIP archive:
+\url{ftp://ftp.tex.ac.uk/tex-archive/info/fontname.zip}. I
+suggest that you print out the \Fontnamekb documentation and have
+it handy when you're learning about \fontinst.
+
+The \fontinst package:
+\begin{itemize}
+\item Is written in \TeX, for maximum portability (at the cost of
+ speed).
+\item Supports the OT1 (Computer Modern) and T1 (Cork) encodings.
+\item Allows fonts to be generated with arbitrary `fake'
+ characters; for example the `ij' character can be faked if
+ necessary by putting an `i' next to a `j'.
+\item Allows caps and small caps fonts with letter spacing and
+ kerning.
+\item Allows kerning to be shared between characters, for example
+ `ij' can be kerned on the left as if it were an `i' and on the
+ right as if it were a `j'. This is useful, since many
+ PostScript fonts only include kerning information for characters
+ without diacriticals.
+\item Allows the generation of math fonts with \verb|nextlarger|,
+ \verb|varchar|, and arbitrary font dimensions.
+\item Allows more than one PostScript font to contribute to a
+ \TeX\ font, for example the `ffi' ligatures for a font can be
+ taken from the Expert encoding, if you have it.
+\item Can automatically generate a \fd file for use with \LaTeXe.
+\item Can be customized by the user to deal with arbitrary font
+ encodings.
+\end{itemize}
+Fontinst has been a stable piece of software since mid-1994. All
+further updates will be upwardly compatible with the interface
+described in this document.
+
+\subsection{What does \fontinst do?}
+
+\Fontinst is a tool written in \TeX\ that can create the various
+extra files needed so you can use \PS fonts with \LaTeX\ and \TeX.
+It can read in \afm files, and produces the necessary \vpl, \pl,
+and \fd files to use the fonts (the human-readable \vpl and \pl
+files produced by \fontinst are turned into the machine-readable
+\vf and \tfm forms by \vptovf and \pltotf). It does not help you
+configure your DVI driver.
+
+There also exists a \texttt{perl} front-end to \fontinst, intended
+specifically for use with a Unix \TeX\ system, which takes care of
+routine tasks such as running \vptovf and \pltotf on the generated
+files after \fontinst has finished it's job. It also generates a
+font map file for use with \dvips.
+
+\Fontinst's main job is creating \vf files (virtual fonts). Not
+all \TeX\ systems can use them. As far as I know, all current
+(1998) free and shareware \TeX\ systems can; virtual fonts have
+been in widespread use with \TeX\ since 1990. If you have a TeX
+system that can't use virtual fonts, \fontinst is most likely
+useless to you.
+
+There are some nice things about having a tool written in \TeX\ to
+do this: it's completely portable and you can modify its behaviour
+using \TeX\ commands. The only real problem is that it's
+relatively slow: you can expect a typical \fontinst run to take
+something like 10--20 minutes on, say, a 40~MHz 80486SX PC or a
+25~MHz 68LC040 Macintosh.
+
+\Fontinst can do its work on any font for which you have a
+corresponding \afm or \tfm metric file, so it's not limited to
+working with \PS fonts; I have used it to produce the files I
+needed to use \TT fonts with \LaTeX. Whether or not you can do
+this depends on whether or not you have suitable metric files and
+whether or not your \TeX\ system can use \TT fonts. In
+particular, the pdf\TeX\ program supports \TT fonts and includes a
+utility \texttt{ttf2afm} to generate \afm files from \ttf fonts.
+
+Some people have used \fontinst to produce `special effects' with
+normal \TeX\ fonts. One example is the \setpackagename{eco} set
+of fonts (available from CTAN:
+\url{ftp://ftp.tex.ac.uk/tex-archive/fonts/eco/}). These fonts
+are the same as the standard EC (European Modern) fonts, but with
+normal numerals replaced with old style numerals --
+\oldstylenums{12345} rather than 12345 -- everywhere except in
+maths mode.
+
+\subsection{Installation}
+
+To install \fontinst, put the contents of the \url{inputs/tex},
+\url{inputs/etx}, \url{inputs/mtx} and \url{examples} directories
+into a directory read by \TeX, for example
+\url{TEXMF/tex/generic/fontinst}.
+
+When you use \fontinst, you need to make sure that the \afm and
+\pl files it will work on are in a directory searched by \TeX.
+
+If you are using \texttt{web2c} \TeX\ on a Unix system with the
+\TeX\ directory structure (TDS), you might put all the \afm files
+in subdirectories of \url{TEXMF/fonts/afm/*}. And then say:
+\begin{verbatim}
+ setenv TEXINPUTS $TEXMF/fonts/afm//::
+\end{verbatim}%$
+Note that \pl files are not normally kept in \TeX\ installations, so
+if you want to use MF fonts with \fontinst you have to generate the
+corresponding \pl files from \tfm files and put them in your working
+directory before running \fontinst.
+
+You could adopt a similar strategy with other \TeX\ systems:
+create directories for the required files and then change the
+relevant parameter (\url{input_folders} in the default
+configuration file with \OzTeX, for example).
+
+The approach I use is this: I write a file containing commands for
+\fontinst to process, and put the \afm and \pl files needed in the
+same directory as that file. When \fontinst has finished working,
+I delete the \afm and \pl files because they are not needed and
+waste space on my hard disc drive. Some application programs on
+some computers need \afm files, so it's not always a good idea to
+remove them completely.
+
+\subsection{Why do we need \fontinst?}
+
+\TeX\ refers to characters by number when it's typesetting. When
+you use a command like \verb|\i|, \TeX\ puts a number (16 if
+you're using OT1, 25 if you're using T1) into the \dvi file. If
+you're using a font designed for use with \TeX, this number will
+correspond to the character `\i'. Assuming OT1 encoding for the
+moment, when you come to print out your \dvi file, the DVI driver
+will see the number 16 in the \dvi file, and select the character
+that sits in position 16 of the corresponding printer font file (a
+\pk file in the case of normal \TeX\ fonts). Unless something has
+gone wrong, that will result in the character `\i' being placed on
+the page.
+
+It's useful to think of these numbers and the actual characters
+corresponding to each number as sets called `encodings'. A
+particular set of characters are assigned particular numbers. An
+example of an encoding is shown in table~\ref{OT1table}.
+
+\TeX\ began life using 7-bit fonts. This means the original \TeX\
+fonts used the numbers 0--127 to represent characters:
+128~characters per font. \TeX\ can now use 8-bit fonts:
+256~numbers from 0--255, but even so, most typesetting with \TeX\
+still uses the original 7-bit encoding, now called `OT1' (Old
+\TeX~1 encoding). This has a correspondance between numbers and
+characters shown in table~\ref{OT1table}. The numbers used in
+that table are hexadecimal and octal because it makes for a neat
+table and anyway I stole the code to generate it from Donald Knuth
+and that's how he did it.
+
+\begin{table}[!t]
+\smallfontchart{cmr10 at 10pt}
+\caption{The OT1 font encoding}\label{OT1table}
+\end{table}
+
+Returning to the example above, if you've a number 16 in your \dvi
+file (expecting `\i', a dotless~i), but rather than printing
+with an OT1 encoded font, you print using a non re-encoded \PS
+font in Adobe standard encoding, you'll get a blank, because the
+Adobe standard encoding has nothing in that character position.
+
+There are several ways round this problem; I'll consider two cases
+here. If you are using \LaTeX\ you can tell it about a new
+encoding and re-define the commands that produce characters like
+`\i' that live in different positions in different encodings, or
+you can use a tool to re-encode the font so that it has the
+expected characters in the appropriate positions.
+
+Re-encoding is the approach \fontinst uses: it can produce files
+to map the characters in the new font to one of \TeX's existing
+encodings; this works with formats other than \LaTeX.
+
+The first approach is used to define the standard encodings that
+\LaTeX\ uses. See, for example, the file \texttt{ot1enc.def} that
+comes with the current \LaTeX\ distribution, which defines the a
+few commands that refer to characters which aren't in the
+positions \TeX\ would otherwise assume. This works only with
+modern versions of \LaTeX.
+
+The second approach is used to allow you to use fonts in other
+encodings with any dialect of \TeX. It has the some advantages
+over the first method: it works with any \TeX\ format; and it
+improves portability, because you can typeset a document using a
+standard \TeX\ encoding, sure that the same document will print
+correctly on a different kind of computer using a font with a
+different encoding. For example, you might say:
+\begin{verbatim}
+ \usepackage{times}
+\end{verbatim}
+in the preamble of your document. On my computer, that means my
+DVI driver will use a Macintosh encoded \TT version of Times. On
+your computer, it might mean the dvi driver will use a Unicode
+encoded \PS version of Times-Roman. The results will be identical
+in either case, without needing to modify the document.
+
+\subsection{How do you use \fontinst?}
+
+\Fontinst works on \afm files named (more-or-less) according to
+Karl Berry's font naming scheme (see
+\url{ftp://ftp.tex.ac.uk/tex-archive/info/fontname} at CTAN).
+Let's say you want to use the Adobe Times fonts. You can get the
+metric files for this font from CTAN:
+\begin{center}
+\begin{small}
+\begin{tabular}{ll}
+ \emph{Location of file at CTAN} & \emph{Rename to} \\
+ \url{fonts/psfonts/adobeafm/base35/tib_____.afm} &
+ \texttt{ptmb8a.afm} \\
+ \url{fonts/psfonts/adobeafm/base35/tibi____.afm} &
+ \texttt{ptmbi8a.afm} \\
+ \url{fonts/psfonts/adobeafm/base35/tii_____.afm} &
+ \texttt{ptmri8a.afm} \\
+ \url{fonts/psfonts/adobeafm/base35/tir_____.afm} &
+ \texttt{ptmr8a.afm}
+\end{tabular}
+\end{small}
+\end{center}
+The new name is the name you should give the \tfm files so that
+\fontinst understands what each file contains. The initial `|p|'
+means `Adobe'; `|tm|' means `Times'; `|b|' bold, `|r|' roman,
+`|i|' italic; and `|8a|' means `Adobe standard encoding'.
+
+The simplest use of \fontinst is to put the four \afm files in the
+same directory as \texttt{fontinst.sty} and run \TeX\ on
+\texttt{fontinst.sty}. At the \verb|*| prompt type:
+\begin{verbatim}
+ *\latinfamily{ptm}{} \bye
+\end{verbatim}
+
+Some time later (about 17 minutes on my rather old computer),
+\fontinst will have finished, having created:
+\begin{itemize}
+\item Two \pl files for each \afm file
+\item One \vpl file for each \TeX\ font
+\item One \fd file for each family
+\end{itemize}
+The \pl files come in pairs: for example, \texttt{ptmb8a.pl} and
+\texttt{ptmb8r.pl}. The |8a| version has the same encoding as the
+original font; the |8r| version is re-encoded to |TeXBase1| (|8r|)
+encoding, and is the font that is the base on which the T1 and OT1
+encoded versions are based on. The raw |8a| (Adobe standard)
+encoded font is not normally used.
+
+These can be converted to \TeX\ fonts using \pltotf or \vptovf.
+If you have \OzTeX, launch \OzMF, select \pltotf (or \vptovf) from
+the Tools menu, and say `Do all files'.
+
+If you use the \texttt{bash} shell on a Unix system, you can
+process all files using these one-liners at the \verb|$| prompt:
+\begin{verbatim}
+ $ for f in in *.pl; do pltotf $f; done
+ $ for f in in *.vpl; do vptovf $f; done
+\end{verbatim}%$
+(This assumes that \pltotf and \vptovf can deduce the file names
+of the corresponding \tfm and \vf files automatically.)
+
+You should then:
+\begin{itemize}
+\item Move the \tfm files to your \TeX\ fonts directory\\
+ (e.g.~\url{TEXMFLOCAL/fonts/tfm/*}).
+\item Move the \vf files to your virtual fonts directory\\
+ (e.g.~\url{TEXMFLOCAL/fonts/vf/*}).
+\item Move the \fd files to your \TeX\ inputs directory\\
+ (e.g.~\url{TEXMFLOCAL/tex/latex/psfonts/*}).
+\end{itemize}
+If your \TeX\ installation is organized using the \TeX\ directory
+structure (TDS), it is customary to subdivide the \tfm and \vf
+files into subdirectories by supplier and typeface name.
+
+The \pl, \vpl, and \mtx files are debris that can now be deleted.
+\mtx files are font metric files \fontinst creates for its own use
+from \afm and \pl files. They're just more convenient for \TeX\
+to read than other forms -- think of them as \fontinst readable
+\afm and \pl files.
+
+By now, you have all the files in place to produce a \dvi file
+using the new fonts. You can make Adobe Times the default roman
+font in your document by putting this in your preamble:
+\begin{verbatim}
+ \renewcommand{\rmdefault}{ptm}
+\end{verbatim}
+
+\TeX\ will now happily produce a perfectly good \dvi file
+including the new font, which your DVI driver will choke on
+because you've not yet told it about the new fonts. Exactly how
+you do this depends on the dvi driver, but they all need the same
+information: the name of a \TeX\ font; the printer font name it
+corresponds to; some information to handle an re-encoding needed;
+and (in the case of a \PS driver) perhaps an instruction to
+download the font to the printer. You don't need to download the
+Times font to a \PS printer, because Times is built in to every
+\PS printer.
+
+If you use \dvips, these lines added to your \texttt{psfonts.map}
+file will do the job:
+\begin{verbatim}
+ ptmr8r Times-Roman "TeXBase1Encoding ReEncodeFont" <<8r.enc
+ ptmri8r Times-Italic "TeXBase1Encoding ReEncodeFont" <<8r.enc
+ ptmb8r Times-Bold "TeXBase1Encoding ReEncodeFont" <<8r.enc
+ ptmbi8r Times-BoldItalic "TeXBase1Encoding ReEncodeFont" <<8r.enc
+ ptmro8r Times-Roman "0.167 SlantFont TeXBase1Encoding ReEncodeFont" <<8r.enc
+ ptmbo8r Times-Bold "0.167 SlantFont TeXBase1Encoding ReEncodeFont" <<8r.enc
+\end{verbatim}
+And now you can print a \dvi file containing the new fonts. If
+you really do want to use the `raw' |8a| encoded fonts for some
+reason, you need to add these lines to your \texttt{psfonts.map}
+file:
+\begin{verbatim}
+ ptmr8a Times-Roman
+ ptmri8a Times-Italic
+ ptmb8a Times-Bold
+ ptmbi8a Times-BoldItalic
+ ptmro8a Times-Roman "0.167 SlantFont"
+ ptmbo8a Times-Bold "0.167 SlantFont"
+\end{verbatim}
+
+Assuming that you're using the \fd file that \fontinst has
+produced, and that you've asked for the Adobe Times family (|ptm|)
+in medium series (|m|) and upright shape (|n| for normal) using
+the NFSS font selection commands:
+\begin{verbatim}
+ \renewcommand{\rmdefault}{ptm}
+ \rmfamily \mdseries \upshape
+\end{verbatim}
+Assuming further that you are using the \fd file \texttt{t1ptm.fd}
+produced by \fontinst, the \TeX\ font (\tfm file) \texttt{ptmr8t.tfm}
+will be selected by the above commands, as you can see from the
+relevant line in \texttt{t1ptm.fd}:
+\begin{verbatim}
+ \DeclareFontShape{T1}{ptm}{m}{n}{<<->> ptmr8t}{}
+\end{verbatim}
+
+This is what happens:
+\begin{itemize}
+\item \TeX\ typesets your document using the font metric file
+ \texttt{ptmr8t.tfm}; this is the font that is put in the \dvi
+ file.
+\item \Dvips looks at the \dvi file, and sees a reference to the
+ font \texttt{ptmr8t}.
+\item \Dvips searches for a \vf file corresponding to
+ \texttt{ptmr8t}; when it finds \texttt{ptmr8t.vf}, it knows it
+ has a virtual font on its hands.
+ %\footnote{This is a slight lie--why?}
+\item \Dvips follows the instructions in the \vf file, which map
+ characters in \texttt{ptmr8t.tfm} to characters in the font
+ \texttt{ptmr8r.tfm}. That is, when it sees a number~25 in the
+ \dvi file (dotless~i -- `\i' -- in T1 encoding), it replaces it
+ with a number~17, which is a dotless~i in |8r| encoding.
+\item Then \dvips looks up the name of each number according to
+ the scheme given in the file \texttt{8r.enc}, and replaces each
+ number with the name of the character, in this case, number~17
+ is listed as `dotlessi'.
+\item And finally, \dvips tells the printer to print the named
+ character.
+\end{itemize}
+
+Not all DVI drivers can manage re-encoding as well as \dvips can.
+For example, \OzTeX's built-in non-\PS \dvi driver can only work
+with numbers, so if I'm using a \PS font, I can't print characters
+(such as Eth) that don't have a number in Macintosh text encoding
+unless I use \dvips and print on a \PS printer. \Dvips works with
+character names, so it's not subject to this restriction. In the
+example above, \OzTeX\ would replace the number~17 for `dotlessi'
+in |8r| encoding with a number~245 for `dotlessi' in Macintosh
+text encoding.
+
+The details of the \LaTeXe{} font selection scheme are described
+in \emph{\LaTeXe{} font selection} (distributed with \LaTeXe\ as
+the file \texttt{fntguide.tex}) and \emph{The \LaTeX\ Companion}
+(Goossens, Mittelbach and Samarin, Addison-Wesley).
+%You might also find useful the file \url{info/simple-nfss.tex}
+%available at your nearest comprehensive \TeX\ archive network
+%(CTAN) FTP server.
+
+The files you need to use Times, Helvetica, Courier, and the rest
+of the `standard' \PS fonts are distributed as part of the
+\setpackagename{PSNFSS} bundle available from CTAN, so there's no
+need to create new files to use these fonts.
+
+A more involved example of \fontinst use can be seen in the file
+\texttt{fontptcm.tex} which creates the files you need to use a
+combination of Times, Symbol, Zapf Chancery and Computer Modern as
+\TeX\ math fonts.
+
+
+\section{Installing your own font family}
+
+The \fontinst package has a command \verb|\latinfamily| meant to
+do most of the work to install a `normal' set (family) of roman
+text fonts from Adobe. Assuming you have a set of \afm files to
+match the fonts you wish to use, the first step is to rename the
+\afm files according to the \Fontnamekb naming scheme.
+
+A `normal' set of text fonts usually includes the basic upright
+roman version, bold, italic, and bold italic. Sometimes there
+will also be small caps versions, perhaps some `expert' fonts, and
+maybe some other weights such as light, medium, semi bold, black
+or ultra bold.
+
+The most important point to note is this: no matter what sort of
+computer you're using and no matter what font encoding it uses
+normally, \afm files for text fonts are almost always in |8a|
+encoding (Adobe standard encoding), so the \afm files when renamed
+normally end in |8a|.
+
+A typical set of four \afm files re-named for use with \fontinst
+is this:
+\begin{verbatim}
+ ptmr8r.afm Times-Roman
+ ptmri8r.afm Times-Italic
+ ptmb8r.afm Times-Bold
+ ptmbi8r.afm Times-BoldItalic
+\end{verbatim}
+Not all \afm files use |8a| encoding. If you open an \afm file
+using a text editor, you'll see a line looking like this somewhere
+near the top:
+\begin{verbatim}
+ EncodingScheme AdobeStandardEncoding
+\end{verbatim}
+and if you see exactly that, the \afm file should end with |8a|.
+If you see something like this:
+\begin{verbatim}
+ EncodingScheme FontSpecific
+\end{verbatim}
+have a look at the name of the font in the \afm file. If you see
+something like this:
+\begin{verbatim}
+ FontName AGaramondExp-Regular
+ FullName Adobe Garamond Regular Expert
+\end{verbatim}
+you have an `expert' encoded font on your hands, and the \afm file
+should end with |8x| to indicate this to \fontinst. An |8x|
+encoded font contains extra glyphs like old style numerals, small
+capital letters, more ligatures, and so on.
+
+%% UV: taken out -- repeated below
+%%
+%If you have an expert font, you can tell \fontinst to use it when
+%it's processing a \verb|\latinfamily| command by putting an `|x|'
+%on the end of the family name:
+%\begin{verbatim}
+% \latinfamily{padx}{}
+%\end{verbatim}
+%If you want to tell \fontinst to use expert fonts to install fonts
+%with old style numerals, you can do so by putting an `|j|' on the
+%end of the family name:
+%\begin{verbatim}
+% \latinfamily{padj}{}
+%\end{verbatim}
+
+The |\latinfamily| command is used like this:
+\begin{decl}
+ |\latinfamily|\arg{family}\arg{commands}
+\end{decl}
+This installs a Latin family of fonts.
+
+For example, to install Adobe Times, you say:
+\begin{verbatim}
+ \latinfamily{ptm}{}
+\end{verbatim}
+The \textit{commands} issued by \LaTeX\ each time a font from that
+family is loaded. This is most often used with typewriter fonts,
+to switch off hyphenation. For example, Adobe Courier can be
+installed with:
+\begin{verbatim}
+ \latinfamily{pcr}{\hyphenchar\font=-1}
+\end{verbatim}
+Once the installation is over (which may take some time) the fonts
+can be used in \LaTeX\ by selecting an appropriate
+\verb|\fontfamily|, for example Adobe Times can be selected with:
+\begin{verbatim}
+ \fontfamily{ptm}\selectfont
+\end{verbatim}
+If the fourth letter of the family name is `|x|' then \fontinst
+will use expert fonts in creating the fonts. If the fourth letter
+is `|j|' (or for backward compatibility `|9|') then \fontinst will
+use expert fonts to create fonts with old style digits.
+
+For example, to install Adobe Garamond using expert fonts, you say:
+\begin{verbatim}
+ \latinfamily{padx}{}
+\end{verbatim}
+To install Adobe Garamond using expert fonts with oldstyle digits,
+you say:
+\begin{verbatim}
+ \latinfamily{padj}{}
+\end{verbatim}
+
+When you have expert fonts, and you've told \fontinst to use
+them, it will carry on as normal, but the resulting font family
+will have the name `|padx|' or `|padj|', and it will use expert
+glyphs whenever possible, so you'll have a real (rather than
+faked) small caps font, real (rather than faked) `ffl' ligatures,
+and so on.
+
+Before using these commands, you will need to make sure that you
+have the Adobe Font Metric (\afm) files for the fonts, and that
+they have appropriate names. The \fontinst package uses the
+\LaTeX\ convention for naming fonts, and uses a \emph{font family}
+name which consists of:
+\begin{itemize}
+\item a \emph{supplier} (or foundry), such as `|p|' for Adobe.
+\item a \emph{typeface}, such as `|ad|' for Adobe Garamond.
+\item up to two \emph{variants}, such as `|j|' or `|x|' for `old
+ style digits' or `expert'.
+\end{itemize}
+So the family name `|padj|' indicates Adobe Garamond with old
+style digits. Note that the variants `|j|' or `|x|' are
+interpreted by \fontinst itself and do not appear in external font
+names, whereas other variants are passed through as part of the
+font names. (This is needed for families which have a sans serif
+or typewriter variant.)
+
+The \emph{supplier} must be one letter, and the \emph{typeface}
+must be two (this is an attempt to fit all filenames into MS-DOS
+format). Each variant is one letter. The full list of foundries,
+typefaces, shapes and variants is given in Karl Berry's
+`\emph{Filenames for fonts}' (available by anonymous FTP from
+\url{ftp://ftp.tex.ac.uk/tex-archive/info/fontname}), but the more
+common ones are given in
+Tables~\ref{Tab:foundry}--\ref{Tab:typeface}.
+
+\begin{table}[!t]
+\begin{minipage}{0.5\textwidth}
+ \small
+ \begin{tabular}{ll}
+ |b| & Bitstream \\
+ |f| & `free' (public domain) \\
+ |h| & Bigelow \& Holmes \\
+ |i| & ITC \\
+ |l| & Linotype \\
+ |m| & Monotype \\
+ |p| & Adobe (|p| for \PS) \\
+ |r| & `raw' (obsolete) \\
+ |u| & URW \\
+ |z| & bizarre
+ \end{tabular}
+ \caption{A partial list of foundries}
+ \label{Tab:foundry}
+ \begin{tabular}{ll}
+ |a| & alternate \\
+ |d| & display, titling \\
+ |f| & fraktur, handtooled \\
+ |j| & oldstyle digits \\
+ |n| & informal, casual \\
+ |p| & ornaments \\
+ |s| & sans serif \\
+ |t| & typewriter \\
+ |w| & script, handwriting, swash \\
+ |x| & expert \\
+ \end{tabular}
+ \caption{A partial list of variants}
+ \label{Tab:variant}
+ \begin{tabular}{ll}
+ |c| & small caps \\
+ |i| & italic \\
+ |o| & oblique (i.e.,~slanted) \\
+ |u| & unslanted italic \\
+ \end{tabular}
+ \caption{A partial list of shapes}
+ \label{Tab:shape}
+\end{minipage}
+\begin{minipage}{0.5\textwidth}
+ \small
+ \begin{tabular}{ll}
+ |ac| & Adobe Caslon \\
+ |ad| & Adobe Garamond \\
+ |ag| & Avantgarde \\
+ |bb| & Bembo \\
+ |bd| & Bodoni \\
+ |bk| & Bookman \\
+ |bv| & Baskerville \\
+ |ca| & Caslon \\
+ |ch| & Charter \\
+ |cr| & Courier \\
+ |fr| & Frutiger \\
+ |fu| & Futura \\
+ |gl| & Galliard \\
+ |gm| & Garamond \\
+ |gs| & Gill Sans \\
+ |hv| & Helvetica \\
+ |mn| & Minion \\
+ |lc| & Lucida \\
+ |lh| & Lucida Bright \\
+ |ls| & Lucida Sans \\
+ |nb| & New Baskerville \\
+ |nc| & New Century Schoolbook \\
+ |op| & Optima \\
+ |pl| & Palatino \\
+ |sy| & Symbol \\
+ |tm| & Times \\
+ |ut| & Utopia \\
+ |zc| & Zapf Chancery \\
+ |zd| & Zapf Dingbats \\
+ \end{tabular}
+ \caption{A partial list of faces}
+ \label{Tab:typeface}
+\end{minipage}
+\end{table}
+
+The \fontinst package uses Karl Berry's naming scheme for \afm
+files. The full naming scheme is rather more flexible than the
+subset used by \fontinst, which uses filenames consisting of:
+\begin{itemize}
+\item a \emph{supplier}, such as `|p|' for Adobe.
+\item a \emph{typeface}, such as `|hv|' for Helvetica.
+\item a \emph{weight}, such as `|r|' for regular.
+\item up to two \emph{shapes} or \emph{variants}, such as `|o|'
+ for oblique.
+\item an \emph{encoding}, such as `|7t|' for Knuth's 7-bit \TeX{}
+ encoding.
+\item an optional \emph{width}, such as `|n|' for narrow.
+\item a \emph{file extension}, such as `\texttt{.tfm}'
+ for \TeX{} Font Metric.
+\end{itemize}
+So the filename name `\texttt{phvro7tn.tfm}' indicates Adobe
+Helvetica regular oblique narrow, in the 7-bit \TeX{} encoding.
+
+The full list of shapes, encodings and weights is given in Karl
+Berry's `\emph{Filenames for fonts}', but the more common ones are
+given in Tables~\ref{Tab:shape}--\ref{Tab:weight}.
+
+\begin{table}
+\begin{minipage}{0.5\textwidth}
+ \small
+ \begin{tabular}{ll}
+ |b| & bold \\
+ |c| & black \\
+ |d| & demibold \\
+ |h| & heavy \\
+ |k| & book \\
+ |l| & light \\
+ |m| & medium \\
+ |r| & regular \\
+ |s| & semibold \\
+ |u| & ultra bold \\
+ |x| & extra bold \\
+ \end{tabular}
+ \caption{A partial list of weights}
+ \label{Tab:weight}
+ \begin{tabular}{ll}
+ |c| & condensed \\
+ |n| & narrow \\
+ |w| & wide \\
+ |x| & extended \\
+ \end{tabular}
+ \caption{A partial list of widths}
+ \label{Tab:width}
+\end{minipage}
+\begin{minipage}{0.5\textwidth}
+ \small
+ \begin{tabular}{ll}
+ |8a| & Adobe Standard \\
+ |8x| & Adobe Expert \\
+ |8r| & \TeX{} 8-bit `raw' (\texttt{TeXBase1}) \\
+ |8y| & \TeX{} 8-bit `raw' (\texttt{TeXnANSI}) \\
+ |7t| & \TeX{} 7-bit text (\texttt{OT1}) \\
+ |7m| & \TeX{} 7-bit math italic (\texttt{OML}) \\
+ |7y| & \TeX{} 7-bit math symbol (\texttt{OMS}) \\
+ |7v| & \TeX{} 7-bit math extension (\texttt{OMX}) \\
+ |8t| & \TeX{} 8-bit text (\texttt{T1}) \\
+ |8c| & \TeX{} 8-bit text symbols (\texttt{TS1}) \\
+ |9t| & \TeX{} 7-bit text with expert glyphs \\
+ |9o| & \TeX{} 7-bit text with expert glyphs \\
+ & and old-style digits \\
+ |9e| & \TeX{} 8-bit text with expert glyphs \\
+ |9d| & \TeX{} 8-bit text with expert glyphs \\
+ & and old-style digits \\
+ |9c| & \TeX{} 8-bit symbols with expert glyphs \\
+ & and old-style digits \\
+ \end{tabular}
+ \caption{A partial list of encodings}
+\end{minipage}
+\end{table}
+
+For example, to install Adobe Garamond including the expert fonts, you
+would need to rename the \afm files:
+\begin{center}
+\begin{small}
+\begin{tabular}{lll}
+ \emph{Adobe name} & \emph{ATM name} & \emph{Fontinst name} \\
+ |AGaramond-Bold.afm| & |gdb_____.afm| & |padb8a.afm| \\
+ |AGaramond-BoldItalic.afm| & |gdbi____.afm| & |padbi8a.afm| \\
+ |AGaramond-Italic.afm| & |gdi_____.afm| & |padri8a.afm| \\
+ |AGaramond-Regular.afm| & |gdrg____.afm| & |padr8a.afm| \\
+ |AGaramond-Semibold.afm| & |gdsb____.afm| & |pads8a.afm| \\
+ |AGaramond-SemiboldItalic.afm| & |gdsbi___.afm| & |padsi8a.afm| \\
+ |AGaramondExp-Bold.afm| & |geb_____.afm| & |padb8x.afm| \\
+ |AGaramondExp-BoldItalic.afm| & |gebi____.afm| & |padbi8x.afm| \\
+ |AGaramondExp-Italic.afm| & |gei_____.afm| & |padri8x.afm| \\
+ |AGaramondExp-Regular.afm| & |gerg____.afm| & |padr8x.afm| \\
+ |AGaramondExp-Semibold.afm| & |gesb____.afm| & |pads8x.afm| \\
+ |AGaramondExp-SemiboldItalic.afm| & |gesbi___.afm| & |padsi8x.afm| \\
+ |AGaramond-RegularSC.afm| & |gdsc____.afm| & |padrc8a.afm| \\
+ |AGaramond-SemiboldSC.afm| & |gdsbs___.afm| & |padsc8a.afm| \\
+\end{tabular}
+\end{small}
+\end{center}
+You can then run \TeX{} on the following document to install the
+Adobe Garamond family:
+\begin{verbatim}
+ \input fontinst.sty
+ \latinfamily{padx}{}
+ \latinfamily{padj}{}
+ \bye
+\end{verbatim}
+Not all font families can be installed using the \verb|\latinfamily|
+command, nor does it always produce optimal results. The main
+interfaces to \fontinst are at a slightly lower level, where all font
+names appear explicitly in command arguments, and at that level it is
+possible to fine tune the font generation. The \verb|\latinfamily|
+command is mainly a clever collection of macros which expand to a
+mostly fixed\footnote{Commands that would refer to files which are
+not present are skipped, and in some cases there is a ``Plan B''
+when ``Plan A'' would have made use of such a nonexistent file, but
+that is about it.} sequence of lower level \fontinst commands.
+
+\begin{bfseries}
+ Descriptions of the sub-\verb|\latinfamily| commands can be found
+ in the main \fontinst manual.
+\end{bfseries}
+
+
+
+\section{More on the \cs{latinfamily} command}
+
+The \verb|\latinfamily| command is essentially a short-cut to save you
+preparing a huge file with many different \fontinst commands in it.
+
+It takes \afm or \mtx files as the source of font metric data to work
+with. Usually, you have a set of \afm files. They must be named
+according to a subset of the \Fontnamekb naming scheme. To illustrate
+the process, here is an edited part of the console log from a use of
+\verb|\latinfamily|:
+\begin{verbatim}
+ \latinfamily{pad}{}
+\end{verbatim}
+This log does not show \fontinst `in action'; it's just to illustrate
+which fonts are looked for when you use the \verb|\latinfamily|
+command.
+\begin{verbatim}
+ INFO>> to make LaTeX font shape <<pad,m,n,>> seek padr8r.mtx
+ INFO>> to make LaTeX font shape <<pad,m,sc,>> seek padrc8r.mtx
+ INFO>> to make LaTeX font shape <<pad,m,sl,>> seek padro8r.mtx
+ INFO>> to make LaTeX font shape <<pad,m,it,>> seek padri8r.mtx
+ INFO>> to make LaTeX font shape <<pad,m,n,c>> seek padr8rn.mtx
+ INFO>> to make LaTeX font shape <<pad,m,sc,c>> seek padrc8rn.mtx
+ INFO>> to make LaTeX font shape <<pad,m,sl,c>> seek padro8rn.mtx
+ INFO>> to make LaTeX font shape <<pad,m,it,c>> seek padri8rn.mtx
+\end{verbatim}
+
+The important point to notice is that \fontinst needs an |8r| encoded
+\mtx file for each font when you are using the \verb|latinfamily|
+command. If it can't find an |8r| encoded \mtx file, it'll look for
+for an |8a| encoded \afm file. It will automatically turn the file it
+finds into an |8r| encoded \mtx file. So when \fontinst says
+`\verb|seek padr8r.mtx|', it is in fact looking for
+\texttt{padr8r.mtx} and \texttt{padr8a.afm}. Whatever it finds, it
+will end up with \verb|padr8r.mtx| to work on.
+
+The first line of the log shows that \fontinst is trying to create a
+\vpl file for |pad/m/n|. That is, font family |pad| (Adobe Garamond),
+font series |m| (normal `book' or `regular' weight), and font shape
+|n| (normal upright).
+
+If it finds what it's looking for, it will create the files:
+\begin{verbatim}
+ padr7t.vpl
+ padr8t.vpl
+ padr8c.vpl
+\end{verbatim}
+And add these lines to the given \fd files:
+\begin{verbatim}
+ OT1pad.fd: \DeclareFontShape{OT1}{pad}{m}{n}{<<->> padr7t}{}
+ T1pad.fd: \DeclareFontShape{T1} {pad}{m}{n}{<<->> padr8t}{}
+ TS1pad.fd: \DeclareFontShape{TS1}{pad}{m}{n}{<<->> padr8c}{}
+\end{verbatim}
+This means you will have three new fonts to use in \LaTeX: the OT1, T1
+and TS1 encoded versions of |pad/m/n|. You'll be able to select (say)
+|T1/pad/m/n| by saying:
+\begin{verbatim}
+ \fontencoding{T1}\fontfamily{pad}\fontseries{m}\fontshape{n}\selectfont
+\end{verbatim}
+This is the clumsiest way of selecting that particular font, but I've
+done it to illustrate exactly what's happening.
+
+The next line:
+\begin{verbatim}
+ INFO>> to make LaTeX font shape <<pad,m,sc,>> seek padrc8r.mtx
+\end{verbatim}
+shows that \fontinst is trying to install a small caps font. If you
+have a real small caps metric file named \texttt{padrc8r.mtx} (don't
+forget it'll look for an |8a| encoded \afm file), \fontinst will go
+ahead and create the \vpl file and \fd file entry as expected.
+
+But you don't normally have a real small caps font, so \fontinst will
+quite happily produce a fake small caps font. To do this, it looks
+for a suitable metric file by dropping the `|c|':
+\begin{quote}
+ `Hmm\ldots\ I can't find \texttt{padrc8r}, so I'll look for
+ \texttt{padr8r}.'
+\end{quote}
+And you will eventually have:
+\begin{verbatim}
+ padrc7t.vpl
+ padrc8t.vpl
+\end{verbatim}
+And add these lines to the given \fd files:
+\begin{verbatim}
+ OT1pad.fd: \DeclareFontShape{OT1}{pad}{m}{sc}{<<->> padrc7t}{}
+ T1pad.fd: \DeclareFontShape{T1} {pad}{m}{sc}{<<->> padrc8t}{}
+\end{verbatim}
+(Note that it won't install a TS1-encoded small caps font because
+TS1 is a text symbol font, which would look the same in the upright
+and small caps shape.)
+
+The next log line shows \fontinst trying to create a \vpl for the
+oblique version of Adobe Garamond:
+\begin{verbatim}
+ INFO>> to make LaTeX font shape <<pad,m,sl,>> seek padro8r.mtx
+\end{verbatim}
+It's quite usual for an oblique version to be unavailable, but
+\fontinst has a way round this: it can fake an oblique font from the
+corresponding `straight' version:
+\begin{quote}
+ `Oh dear: I can't find \texttt{padro8r}, so I'll look for
+ \texttt{padr8r} and use clever maths to fake a slanted version.'
+\end{quote}
+This is not as straightforward as the small caps case. \Fontinst
+only works out what the metrics ought to be if the entire font is
+slanted to the right. It's up to the DVI driver to actually print a
+slanted font. \Dvips can do this.
+
+You will eventually have:
+\begin{verbatim}
+ padro7t.vpl
+ padro8t.vpl
+ padro8c.vpl
+\end{verbatim}
+And these lines added to the given \fd files:
+\begin{verbatim}
+ OT1pad.fd: \DeclareFontShape{OT1}{pad}{m}{sl}{<<->> padro7t}{}
+ T1pad.fd: \DeclareFontShape{T1} {pad}{m}{sl}{<<->> padro8t}{}
+ TS1pad.fd: \DeclareFontShape{TS1}{pad}{m}{sl}{<<->> padro8c}{}
+\end{verbatim}
+
+The next line is straightforward:
+\begin{verbatim}
+ INFO>> to make LaTeX font shape <<pad,m,it,>> seek padri8r.mtx
+\end{verbatim}
+If \fontinst can't find a suitable metrics file (\texttt{padri8r.mtx}
+or \texttt{padri8a.afm}), it carries on without doing anything. If it
+does find a suitable metrics file, it churns away until you will
+eventually have:
+\begin{verbatim}
+ padri7t.vpl
+ padri8t.vpl
+ padri8c.vpl
+\end{verbatim}
+And these lines added to the given \fd files:
+\begin{verbatim}
+ OT1pad.fd: \DeclareFontShape{OT1}{pad}{m}{it}{<<->> padri7t}{}
+ T1pad.fd: \DeclareFontShape{T1} {pad}{m}{it}{<<->> padri8t}{}
+ TS1pad.fd: \DeclareFontShape{TS1}{pad}{m}{it}{<<->> padri8c}{}
+\end{verbatim}
+
+The next line is a bit different. \Fontinst is now trying to create a
+\vpl file for a \emph{condensed} font:
+\begin{verbatim}
+ INFO>> to make LaTeX font shape <<pad,m,n,c>> seek padr8rn.mtx
+\end{verbatim}
+If it finds a suitable metric file (Adobe Garamond, medium weight,
+normal upright shape, condensed), it will eventually produce:
+\begin{verbatim}
+ padr7tn.vpl
+ padr8tn.vpl
+ padr8cn.vpl
+\end{verbatim}
+And these lines added to the given \fd files:
+\begin{verbatim}
+ OT1pad.fd: \DeclareFontShape{OT1}{pad}{mc}{n}{<<->> padr7tn}{}
+ T1pad.fd: \DeclareFontShape{T1} {pad}{mc}{n}{<<->> padr8tn}{}
+ TS1pad.fd: \DeclareFontShape{TS1}{pad}{mc}{n}{<<->> padr8cn}{}
+\end{verbatim}
+There is no standard \LaTeX\ command like \verb|\bfseries| to select
+the medium condensed (|mc|) series created here. If you want to use
+this font, you must do something like:
+\begin{verbatim}
+ \fontfamily{pad}\fontseries{mc}\selectfont
+\end{verbatim}
+If it doesn't find a suitable metric file for a narrow series,
+\fontinst will just skip over and continue, unless you specifically
+tell it to fake a narrow series.
+
+And so the process continues: \fontinst attempts to create \vpl files
+for condensed versions of all the font shapes met so far, and then
+goes on to:
+\begin{verbatim}
+ INFO>> to make LaTeX font shape <<pad,b,n,>> seek padb8r.mtx
+\end{verbatim}
+And again, if it finds a suitable metric file (\texttt{padb8r.mtx} or
+\texttt{padb8a.afm}), it'll potter off and create the files:
+\begin{verbatim}
+ padb7t.vpl
+ padb8t.vpl
+ padb8c.vpl
+\end{verbatim}
+And these lines added to the given \fd files:
+\begin{verbatim}
+ OT1pad.fd: \DeclareFontShape{OT1}{pad}{b}{n}{<<->> padb7t}{}
+ T1pad.fd: \DeclareFontShape{T1} {pad}{b}{n}{<<->> padb8t}{}
+ TS1pad.fd: \DeclareFontShape{TS1}{pad}{b}{n}{<<->> padb8c}{}
+\end{verbatim}
+With this step done, fontinst will try to create \vpl files for the
+small caps, slanted, and italic versions of |pad/b|; and then it'll
+try to create condensed versions of all those:
+\begin{verbatim}
+ INFO>> to make LaTeX font shape <<pad,b,n,>> seek padb8r.mtx
+ INFO>> to make LaTeX font shape <<pad,b,sc,>> seek padbc8r.mtx
+ INFO>> to make LaTeX font shape <<pad,b,sl,>> seek padbo8r.mtx
+ INFO>> to make LaTeX font shape <<pad,b,it,>> seek padbi8r.mtx
+ INFO>> to make LaTeX font shape <<pad,b,n,c>> seek padb8rn.mtx
+ INFO>> to make LaTeX font shape <<pad,b,sc,c>> seek padbc8rn.mtx
+ INFO>> to make LaTeX font shape <<pad,b,sl,c>> seek padbo8rn.mtx
+ INFO>> to make LaTeX font shape <<pad,b,it,c>> seek padbi8rn.mtx
+\end{verbatim}
+If it manages to find the files it needs to create the \vpl files to
+use all those fonts with \LaTeX, you'll end up with the following
+lines in the T1 \fd file (I've ignored the OT1 \fd file to save some
+space):
+\begin{verbatim}
+ \DeclareFontShape{T1} {pad}{b} {n} {<<->> padb8t}{}
+ \DeclareFontShape{T1} {pad}{b} {sc}{<<->> padbc8t}{}
+ \DeclareFontShape{T1} {pad}{b} {sl}{<<->> padbo8t}{}
+ \DeclareFontShape{T1} {pad}{b} {it}{<<->> padbi8t}{}
+ \DeclareFontShape{T1} {pad}{bc}{n} {<<->> padb8tn}{}
+ \DeclareFontShape{T1} {pad}{bc}{sc}{<<->> padbc8tn}{}
+ \DeclareFontShape{T1} {pad}{bc}{sl}{<<->> padbo8tn}{}
+ \DeclareFontShape{T1} {pad}{bc}{it}{<<->> pckbi8tn}{}
+\end{verbatim}
+To translate into English: Adobe Garamond bold in `normal', small
+caps, slanted, and italic versions, as well as condensed versions of
+all four.
+
+Again, because there's no convenient way of selecting the condensed
+versions with existing \LaTeX\ commands, you need to say something
+like:
+\begin{verbatim}
+ \fontfamily{pad}\fontseries{bc}\selectfont
+\end{verbatim}
+to use the bold condensed (|bc|) versions of this font; you can of
+course use \verb|\itshape|, \verb|\scshape|, \verb|\slshape|, and
+\verb|upshape| to switch between the italic, small caps, slanted, and
+`normal' versions of Adobe Garamond bold condensed once you've got
+|pad/bc| selected.
+
+So far, you've seen \verb|\latinfamily| look at two different weights
+and two different widths. For each weight, \verb|\latinfamily| will
+try and install eight different fonts as you can see above. It will
+try and install the same eight different fonts for each of the
+following different weights:
+\begin{center}
+\begin{tabular}{lll}
+ \emph{\LaTeX} & \emph{Fontname} & \emph{description} \\
+ |ul| & |a| & ultra light \\
+ |el| & |i| & extra light \\
+ |l| & |l| & light \\
+ |m| & |k|, |r| & book, regular \\
+ |mb| & |m| & medium \\
+ |db| & |d| & demi bold \\
+ |sb| & |s| & semi bold \\
+ |b| & |b| & bold \\
+ |eb| & |c|, |h|, |x| & black, heavy, extra bold \\
+ |ub| & |u| & ultra bold
+\end{tabular}
+\end{center}
+The \LaTeX\ column contains the label that will be used in the
+\verb|\DeclareFontShape| command to specify the font series. The
+\Fontnamekb column contains the width specifier used to name the font
+metric file that \fontinst will look for in that case.
+
+In other words, at some stage \fontinst will look for:
+\begin{verbatim}
+ INFO>> to make LaTeX font shape <<pad,sb,n,>> seek pads8r.mtx
+\end{verbatim}
+and if it finds a suitable metric file (\texttt{pads8r.mtx} or
+\texttt{pads8a.afm}), it will create:
+\begin{verbatim}
+ pads7t.vpl
+ pads8t.vpl
+ pads8c.vpl
+\end{verbatim}
+and \fd file entries like this:
+\begin{verbatim}
+ OT1pad.fd: \DeclareFontShape{OT1}{pad}{sb}{n}{<<->> pads7t}{}
+ T1pad.fd: \DeclareFontShape{T1} {pad}{sb}{n}{<<->> pads8t}{}
+ TS1pad.fd: \DeclareFontShape{TS1}{pad}{sb}{n}{<<->> pads8c}{}
+\end{verbatim}
+and since |sb| is not a normal \LaTeX\ font series, you'll need to use
+something like:
+\begin{verbatim}
+ \fontfamily{pad}\fontseries{sb}\selectfont
+\end{verbatim}
+to use this font.
+
+% For example, \verb|\latinfamily{ptm}{}| is
+% syntactic sugar for:
+% \begin{verbatim}
+% \transformfont{ptmr8r}{\reencodefont{8r}{\fromafm{ptmr8a}}}
+% \transformfont{ptmri8r}{\reencodefont{8r}{\fromafm{ptmri8a}}}
+% \transformfont{ptmb8r}{\reencodefont{8r}{\fromafm{ptmb8a}}}
+% \transformfont{ptmbi8r}{\reencodefont{8r}{\fromafm{ptmbi8a}}}
+% \transformfont{ptmro8r}{\slantfont{167}{\frommtx{ptmr8r}}}
+% \transformfont{ptmbo8r}{\slantfont{167}{\frommtx{ptmb8r}}}
+% \installfonts
+% \installfamily{T1}{ptm}{}
+% \installfamily{OT1}{ptm}{}
+% \installfont{ptmr8t}{ptmr8r,latin}{T1}{T1}{ptm}{m}{n}{}
+% \installfont{ptmr7t}{ptmr8r,latin}{OT1}{OT1}{ptm}{m}{n}{}
+% \installfont{ptmrc8t}{ptmr8r,latin}{T1c}{T1}{ptm}{m}{sc}{}
+% \installfont{ptmrc7t}{ptmr8r,latin}{OT1c}{OT1}{ptm}{m}{sc}{}
+% \installfont{ptmri8t}{ptmri8r,latin}{T1}{T1}{ptm}{m}{it}{}
+% \installfont{ptmri7t}{ptmri8r,latin}{OT1i}{OT1}{ptm}{m}{it}{}
+% \installfont{ptmro8t}{ptmro8r,latin}{T1}{T1}{ptm}{m}{sl}{}
+% \installfont{ptmro7t}{ptmro8r,latin}{OT1}{OT1}{ptm}{m}{sl}{}
+% \installfont{ptmb8t}{ptmb8r,latin}{T1}{T1}{ptm}{b}{n}{}
+% \installfont{ptmb7t}{ptmb8r,latin}{OT1}{OT1}{ptm}{b}{n}{}
+% \installfont{ptmbc8t}{ptmb8r,latin}{T1c}{T1}{ptm}{b}{sc}{}
+% \installfont{ptmbc7t}{ptmb8r,latin}{OT1c}{OT1}{ptm}{b}{sc}{}
+% \installfont{ptmbi8t}{ptmbi8r,latin}{T1}{T1}{ptm}{b}{it}{}
+% \installfont{ptmbi7t}{ptmbi8r,latin}{OT1i}{OT1}{ptm}{b}{it}{}
+% \installfont{ptmbo8t}{ptmbo8r,latin}{T1}{T1}{ptm}{b}{sl}{}
+% \installfont{ptmbo7t}{ptmbo8r,latin}{OT1}{OT1}{ptm}{b}{sl}{}
+% \endinstallfonts
+% \end{verbatim}
+
+
+The \texttt{basicex.tex} file in the \texttt{examples} directory of
+the main \fontinst distribution is an annotated command file which
+does roughly the same things as the \verb|\latinfamily| command for
+the \texttt{pad} family of fonts.
+
+
+\end{document}
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/manual/roadmap.eps b/Master/texmf-dist/doc/fonts/fontinst/base/manual/roadmap.eps
new file mode 100644
index 00000000000..8ca14df79de
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/fontinst/base/manual/roadmap.eps
@@ -0,0 +1,265 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: roadmap.fig
+%%Creator: fig2dev Version 3.1 Patchlevel 1
+%%CreationDate: Sat Sep 16 18:24:06 1995
+%%For: alanje@rsuna.crn.cogs.susx.ac.uk (Alan Jeffrey, Research Fellow)
+%%Orientation: Portrait
+%%BoundingBox: 0 0 298 312
+%%Pages: 0
+%%BeginSetup
+%%IncludeFeature: *PageSize A4
+%%EndSetup
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {} def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+-112.0 334.0 translate
+1 -1 scale
+
+/clp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+ bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+ 4 -2 roll mul srgb} bind def
+ /DrawEllipse {
+ /endangle exch def
+ /startangle exch def
+ /yrad exch def
+ /xrad exch def
+ /y exch def
+ /x exch def
+ /savematrix mtrx currentmatrix def
+ x y tr xrad yrad sc 0 0 1 startangle endangle arc
+ closepath
+ savematrix setmatrix
+ } def
+
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+%%EndProlog
+
+$F2psBegin
+10 setmiterlimit
+ 0.06000 0.06000 sc
+7.500 slw
+% Arc
+n 4813.51 1452.05 m 4800.00 1575.00 l 4754.06 1460.15 l gs col-1 s gr
+n 4284.38 1645.31 520.40 -91.03 -7.77 arc
+gs col-1 s gr
+
+% Arc
+n 3045.94 1460.15 m 3000.00 1575.00 l 2986.49 1452.05 l gs col-1 s gr
+n 3515.62 1645.31 520.40 -88.97 -172.23 arcn
+gs col-1 s gr
+
+% Arc
+n 2771.84 3251.35 m 2775.00 3375.00 l 2714.02 3267.38 l gs col-1 s gr
+n 2279.17 3512.50 514.55 -84.89 -15.50 arc
+gs col-1 s gr
+
+% Arc
+n 3285.98 3267.38 m 3225.00 3375.00 l 3228.16 3251.35 l gs col-1 s gr
+n 3720.83 3512.50 514.55 -95.11 -164.50 arcn
+gs col-1 s gr
+
+% Arc
+n 4247.24 2906.08 m 4125.00 2925.00 l 4223.95 2850.78 l gs col-1 s gr
+n 3525.00 1500.00 1546.16 39.09 67.17 arc
+gs col-1 s gr
+
+% Arc
+n 3403.37 4702.50 m 3525.00 4725.00 l 3407.09 4762.39 l gs col-1 s gr
+n 3493.27 4214.42 511.56 164.63 86.44 arcn
+gs col-1 s gr
+
+% Arc
+n 4394.64 4681.42 m 4275.00 4650.00 l 4395.35 4621.42 l gs col-1 s gr
+n 4291.72 3239.01 1411.09 -3.62 90.68 arc
+gs col-1 s gr
+
+% Arc
+n 4398.18 4811.29 m 4275.00 4800.00 l 4389.00 4752.00 l gs col-1 s gr
+n 3787.50 1650.00 3187.50 28.07 81.20 arc
+gs col-1 s gr
+
+% Arc
+n 4306.30 4511.76 m 4200.00 4575.00 l 4264.03 4469.17 l gs col-1 s gr
+n 2769.64 3133.93 2030.42 0.45 45.21 arc
+gs col-1 s gr
+
+% Ellipse
+n 3900 2962 225 187 0 360 DrawEllipse gs col-1 s gr
+
+% Ellipse
+n 3900 562 225 187 0 360 DrawEllipse gs col-1 s gr
+
+% Ellipse
+n 3900 1762 225 187 0 360 DrawEllipse gs col-1 s gr
+
+% Ellipse
+n 3000 1762 225 187 0 360 DrawEllipse gs col-1 s gr
+
+% Ellipse
+n 4800 1762 225 187 0 360 DrawEllipse gs col-1 s gr
+
+% Ellipse
+n 4800 2962 225 187 0 360 DrawEllipse gs col-1 s gr
+
+% Ellipse
+n 5700 2962 225 187 0 360 DrawEllipse gs col-1 s gr
+
+% Ellipse
+n 6600 2962 225 187 0 360 DrawEllipse gs col-1 s gr
+
+% Ellipse
+n 2100 2962 225 187 0 360 DrawEllipse gs col-1 s gr
+
+% Ellipse
+n 3000 4162 225 187 0 360 DrawEllipse gs col-1 s gr
+
+% Ellipse
+n 3900 5362 225 187 0 360 DrawEllipse gs col-1 s gr
+
+% Polyline
+n 3525 975 m 4275 975 l 4275 1275 l 3525 1275 l clp gs col-1 s gr
+% Polyline
+n 3525 2175 m 4275 2175 l 4275 2475 l 3525 2475 l clp gs col-1 s gr
+% Polyline
+n 4425 2175 m 5175 2175 l 5175 2475 l 4425 2475 l clp gs col-1 s gr
+% Polyline
+n 2625 3375 m 3375 3375 l 3375 3675 l 2625 3675 l clp gs col-1 s gr
+% Polyline
+n 3525 4575 m 4275 4575 l 4275 4875 l 3525 4875 l clp gs col-1 s gr
+% Polyline
+n 3900 750 m 3900 975 l gs col-1 s gr
+n 3930.00 855.00 m 3900.00 975.00 l 3870.00 855.00 l gs col-1 s gr
+% Polyline
+n 3900 1275 m 3900 1575 l gs col-1 s gr
+n 3930.00 1455.00 m 3900.00 1575.00 l 3870.00 1455.00 l gs col-1 s gr
+% Polyline
+n 3900 1950 m 3900 2175 l gs col-1 s gr
+n 3930.00 2055.00 m 3900.00 2175.00 l 3870.00 2055.00 l gs col-1 s gr
+% Polyline
+n 3900 2475 m 3900 2775 l gs col-1 s gr
+n 3930.00 2655.00 m 3900.00 2775.00 l 3870.00 2655.00 l gs col-1 s gr
+% Polyline
+n 4800 1950 m 4800 2175 l gs col-1 s gr
+n 4830.00 2055.00 m 4800.00 2175.00 l 4770.00 2055.00 l gs col-1 s gr
+% Polyline
+n 4800 2475 m 4800 2775 l gs col-1 s gr
+n 4830.00 2655.00 m 4800.00 2775.00 l 4770.00 2655.00 l gs col-1 s gr
+% Polyline
+n 3000 1950 m 3000 3375 l gs col-1 s gr
+n 3030.00 3255.00 m 3000.00 3375.00 l 2970.00 3255.00 l gs col-1 s gr
+% Polyline
+n 3000 3675 m 3000 3975 l gs col-1 s gr
+n 3030.00 3855.00 m 3000.00 3975.00 l 2970.00 3855.00 l gs col-1 s gr
+% Polyline
+n 3900 3150 m 3900 4575 l gs col-1 s gr
+n 3930.00 4455.00 m 3900.00 4575.00 l 3870.00 4455.00 l gs col-1 s gr
+% Polyline
+n 3900 4875 m 3900 5175 l gs col-1 s gr
+n 3930.00 5055.00 m 3900.00 5175.00 l 3870.00 5055.00 l gs col-1 s gr
+/Helvetica findfont 180.00 scalefont setfont
+3900 3000 m
+gs 1 -1 sc (tfm) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+3900 600 m
+gs 1 -1 sc (afm) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+3900 1800 m
+gs 1 -1 sc (pl) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+4800 1800 m
+gs 1 -1 sc (vpl) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+3000 1800 m
+gs 1 -1 sc (fd) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+4800 3000 m
+gs 1 -1 sc (vf) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+5700 3000 m
+gs 1 -1 sc (pfa) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+6600 3000 m
+gs 1 -1 sc (pfb) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+2100 3000 m
+gs 1 -1 sc (tex) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+3000 4200 m
+gs 1 -1 sc (dvi) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+3900 5400 m
+gs 1 -1 sc (ps) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Palatino-Italic findfont 180.00 scalefont setfont
+3900 1175 m
+gs 1 -1 sc (fontinst) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Palatino-Italic findfont 180.00 scalefont setfont
+3900 2375 m
+gs 1 -1 sc (pltotf) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Palatino-Italic findfont 180.00 scalefont setfont
+4800 2375 m
+gs 1 -1 sc (vptovf) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Palatino-Italic findfont 180.00 scalefont setfont
+3000 3575 m
+gs 1 -1 sc (latex) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Palatino-Italic findfont 180.00 scalefont setfont
+3900 4775 m
+gs 1 -1 sc (dvips) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+$F2psEnd
+restore
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/talks/et99-font-tables.pdf b/Master/texmf-dist/doc/fonts/fontinst/base/talks/et99-font-tables.pdf
new file mode 100644
index 00000000000..8d6c2b593c7
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/fontinst/base/talks/et99-font-tables.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/talks/et99-font-tutorial.pdf b/Master/texmf-dist/doc/fonts/fontinst/base/talks/et99-font-tutorial.pdf
new file mode 100644
index 00000000000..4ae8a1eeb75
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/fontinst/base/talks/et99-font-tutorial.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/comparemetrics.sty b/Master/texmf-dist/doc/fonts/fontinst/base/test/comparemetrics.sty
new file mode 100644
index 00000000000..7864da89731
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/fontinst/base/test/comparemetrics.sty
@@ -0,0 +1,941 @@
+% We start by making some default catcode assignments, in case we are
+% using ini\TeX{}.
+% \begin{macrocode}
+%<*pkg>
+\catcode`\{=1
+\catcode`\}=2
+\catcode`\#=6
+\catcode`\^=7
+%</pkg>
+% \end{macrocode}
+%
+% \package{fontinst} uses some unusual, but convenient, settings of
+% |\catcode|. |@| and |_| are made letters, |~| is made a space, and
+% space and newline are ignored. Before setting those however, we save
+% the current values of the catcodes, so that they can be restored at
+% the end of \texttt{fontinst.sty}.
+%
+% \begin{macrocode}
+%<*pkg>
+\edef\spacecatcode{\the\catcode`\ }
+\edef\nlcatcode{\the\catcode`\^^M}
+\edef\atcatcode{\the\catcode`\@}
+\edef\underscorecatcode{\the\catcode`\_}
+\edef\tildecatcode{\the\catcode`\~}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\catcode`\ =9
+\catcode`\^^M=9
+\catcode`\@=11
+\catcode`\_=11
+\catcode`\~=10
+%</pkg>
+% \end{macrocode}
+%
+
+
+\newlinechar=`\^^J
+
+% \begin{macro}{\a_read}
+% \begin{macro}{\b_read}
+% \begin{macro}{\a_filelineno}
+% \begin{macro}{\b_filelineno}
+% These control sequences are used for keeping track of the ``physical''
+% side of the two input files. |\a_read| and |\b_read| are the stream
+% numbers. |\a_filelineno| and |\b_filelineno| are the respective
+% line numbers of the lines most recently read from these files.
+% \begin{macrocode}
+\newread\a_read
+\newread\b_read
+\newcount\a_filelineno
+\newcount\b_filelineno
+% \end{macrocode}
+% \end{macro}\end{macro}\end{macro}\end{macro}
+%
+% \begin{macro}{\a_lineno}
+% \begin{macro}{\b_lineno}
+% \begin{macro}{\a_bufbase}
+% \begin{macro}{\b_bufbase}
+% \begin{macro}{\a_bufmid}
+% \begin{macro}{\b_bufmid}
+% \begin{macro}{\a_buftop}
+% \begin{macro}{\b_buftop}
+% These count registers are used for managing the buffert of lines
+% that are read from the input files when a match between lines is
+% being looked for. This buffert consists of lines which are saved in
+% the macros
+% \begin{quote}
+% |\|\meta{letter}|_saved-|\meta{ofs}
+% \end{quote}
+% where \meta{letter} is |a| or |b| and \meta{ofs} is an integer,
+% being the index into the buffert. |\a_bufbase| and |\b_bufbase|
+% contain the \meta{ofs} of the first line currently in the buffert,
+% whereas |\a_buftop| and |\b_buftop| contain the \meta{ofs} of the
+% last such line. |\a_bufmid| and |\b_bufmid| hold the buffert
+% positions of the lines which are currently considered the next by
+% |\get_next_line|. If \(\mathtt{buftop}<\mathtt{bufmid}\) then the
+% buffert is empty. |\a_lineno| and |\b_lineno| are the respective
+% line numbers of the |\a_bufbase| and |\b_bufbase| lines.
+%
+% All these registers should be set globally.
+% \begin{macrocode}
+\newcount\a_lineno \newcount\b_lineno
+\newcount\a_bufbase \newcount\b_bufbase
+\newcount\a_bufmid \newcount\b_bufmid
+\newcount\a_buftop \newcount\b_buftop
+% \end{macrocode}
+% \end{macro}\end{macro}\end{macro}\end{macro}\end{macro}\end{macro}
+% \end{macro}\end{macro}
+
+
+% \begin{macro}{\get_next_line}
+% The |\get_next_line| macro is called as
+% \begin{quote}
+% |\get_next_line|\marg{letter}
+% \end{quote}
+% where \meta{letter} is |a| or |b|. This sets the
+% |\|\meta{letter}|_line| macro to the next line of that file and
+% updates the value of |\|\meta{letter}|_lineno|.
+%
+% The ``next line'' is normally read from input stream
+% |\|\meta{letter}|_read|, but if a line mismatch recently occured
+% then it might happen that the next line has already been read from
+% the file, and in that case it is taken from one of the
+% |\|\meta{letter}|_saved-|\meta{ofs} macros.
+% \begin{macrocode}
+\def\get_next_line#1{
+ \ifnum \csname#1_buftop\endcsname<\csname#1_bufmid\endcsname
+ \ifeof \csname#1_read\endcsname
+ \x_cs\let{#1_line}\end_of_file_line
+ \else
+ \read\csname#1_read\endcsname t\x_cs{o}{#1_line}
+ \global\advance \csname#1_filelineno\endcsname \@ne
+ \fi
+ \else
+ \expandafter\let \csname#1_line\expandafter\endcsname
+ \csname#1_saved-\the\csname#1_bufmid\endcsname\endcsname
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\end_of_file_line}
+% This macro expands to the text \verb*|(ENDOFFILE) | with the
+% catcodes it would have if read from an input file. It is used as an
+% end-of-file marker.
+% \begin{macrocode}
+\begingroup
+ \catcode`\(=13
+ \catcode`\)=13
+ \gdef\end_of_file_line{(ENDOFFILE)~}
+\endgroup
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\the_line}
+% The |\the_line| macro is called as
+% \begin{quote}
+% |\the_line|\marg{letter}\marg{ofs}
+% \end{quote}
+% where \meta{letter} is |a| or |b|, and \meta{ofs} is a \TeX\ number.
+% It expands to the control sequence |\|\meta{letter}|_saved-|^^A
+% \meta{ofs}.
+% \begin{macrocode}
+\def\the_line#1#2{\csname#1_saved-\number#2\endcsname}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\initialise_search}
+% The |\initialise_search| macro sets everything up for a search for
+% a match between lines.
+%
+% \begin{macrocode}
+\def\initialise_search{
+ \global\a_bufbase=\a_bufmid
+ \global\b_bufbase=\b_bufmid
+ \add_to_buffert{a}
+ \add_to_buffert{b}
+ \global\advance \a_bufmid \@ne
+ \global\advance \b_bufmid \@ne
+}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\add_to_buffert}
+% The |\add_to_buffert| macro is called as
+% \begin{quote}
+% |\add_to_buffert|\marg{letter}
+% \end{quote}
+% It adds the line returned by |\get_next_line| to the corresponding
+% buffert (if it wasn't already there) and updates the counters for
+% that buffert. After this, the line following the line being put into
+% the buffert will be the line that |\get_next_line| returns.
+% \begin{macrocode}
+\def\add_to_buffert#1{
+ \ifnum \csname#1_buftop\endcsname<\csname#1_bufmid\endcsname
+ \expandafter\let
+ \csname#1_saved-\the\csname#1_bufmid\endcsname
+ \expandafter\endcsname
+ \csname#1_line\endcsname
+ \global\advance \csname#1_buftop\endcsname \@ne
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+
+
+
+\newcount\first_integer
+\newcount\second_integer
+
+% \begin{macro}{\match_lines}
+% The |\match_lines| macro tests if two lines can be considered the
+% same (up to metrics changes, which need not be small). It is called as
+% \begin{quote}
+% |\match_lines|\marg{line a}\marg{line b}
+% \end{quote}
+% \meta{line a} and \meta{line b} may be any amount of text which
+% eventually expands to the lines in question. |\match_lines| returns
+% its answer by setting the |_a_| switch to |false| (if the lines
+% match) or |true| (if the lines don't match).
+%
+% |\match_lines| also causes the |\first_dimen| and |\second_dimen|
+% registers, as well as the |_histogram_dimen_| switch to be updated,
+% so it can be immediately followed by a test of the metrics.
+% \begin{macrocode}
+\def\match_lines#1#2{
+ \first_integer=\z@
+ \second_integer=\z@
+ \first_dimen=\z@
+ \second_dimen=\z@
+ \x_cs\let{string-+}\empty_command
+ \x_cs\let{string--}\empty_command
+% \end{macrocode}
+% \begin{macrocode}
+ \def\sign{+}
+ #1\line_stop
+ \def\sign{-}
+ #2\line_stop
+% \end{macrocode}
+% \begin{macrocode}
+ \_a_false
+ \expandafter\ifx \csname cmd-+ \expandafter\endcsname
+ \csname cmd--\endcsname
+ \else \_a_true \fi
+ \ifnum \first_integer=\z@ \else \_a_true \fi
+ \ifnum \second_integer=\z@ \else \_a_true \fi
+ \expandafter\ifx \csname string-+ \expandafter\endcsname
+ \csname string--\endcsname
+ \else \_a_true \fi
+}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\try_matching}
+% \begin{macro}{\a_bufP}
+% \begin{macro}{\b_bufP}
+% The |\try_matching| descends through the buffert until the |_a_|
+% switch gets |false| or it has tried the bottommost lines in the
+% buffert. Since |\body| is already defined by the |\loop| in
+% |\process_lines|, |\try_matching| uses an explicit end recursion to
+% make the loop.
+% \begin{macrocode}
+\newcount\a_bufP
+\newcount\b_bufP
+\def\try_matching{
+ \global\advance \a_bufP \m@ne
+ \global\advance \b_bufP \m@ne
+% % Begin debug
+% \wlog{a_bufbase:~\the\a_bufbase\space\space\space
+% b_bufbase:~\the\b_bufbase}
+% \wlog{a_bufmid:~\the\a_bufmid\space\space\space
+% b_bufmid:~\the\b_bufmid}
+% \wlog{a_buftop:~\the\a_buftop\space\space\space
+% b_buftop:~\the\b_buftop}
+% \wlog{a_bufP:~\the\a_bufP\space\space\space
+% b_bufP:~\the\b_bufP}
+% \begingroup
+% \def\do_left_paren{(}\def\do_right_paren{)}
+% \wlog{a_line:~\a_line}
+% \wlog{b_buf_line:~\the_line{b}{\b_bufP}}
+% \wlog{b_line:~\b_line}
+% \wlog{a_buf_line:~\the_line{a}{\a_bufP}^^J}
+% \endgroup
+% % End debug
+ \match_lines{\a_line}{\the_line{b}{\b_bufP}}
+ \if_a_
+ \match_lines{\the_line{a}{\a_bufP}}{\b_line}
+ \if_a_ \else
+ \global\a_bufmid=\a_bufP
+ \fi
+ \else
+ \global\b_bufmid=\b_bufP
+ \fi
+ \ifnum \a_bufP>\a_bufbase \if_a_
+ \expandafter\expandafter\expandafter\try_matching
+ \fi \fi
+}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\report_mismatch}
+% The |\report_mismatch| macro does precisely what it says. It also increases
+% the \texttt{bufbase} and \texttt{lineno} registers to point at the
+% matching lines.
+% \begin{macrocode}
+\def\report_mismatch{
+ \begingroup
+ \def\do_left_paren{(}
+ \def\do_right_paren{)}
+ \wlog{Mismatch~in~first~file~(at~\the\a_lineno):}
+ \loop
+ \wlog{\the_line{a}{\a_bufbase}}
+ \ifnum \a_bufbase<\a_bufmid
+ \global\advance \a_bufbase \@ne
+ \global\advance \a_lineno \@ne
+ \repeat
+ \wlog{Match~found~at~line~\the\a_lineno.}
+ \wlog{Mismatch~in~second~file~(at~\the\b_lineno):}
+ \loop
+ \wlog{\the_line{b}{\b_bufbase}}
+ \ifnum \b_bufbase<\b_bufmid
+ \global\advance \b_bufbase \@ne
+ \global\advance \b_lineno \@ne
+ \repeat
+ \wlog{Match~found~at~line~\the\b_lineno.}
+ \endgroup
+ \glyphified_location
+ \ifnum 4>\compared_status
+ \global\chardef\compared_status=4
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+
+\def\glyphified_location{
+ \ifx \encoding_name\empty_command
+ \ifnum \m@ne<\last_character
+ \wlog{This~is~related~to~slot~\the\last_character.^^J}
+ \else
+ \wlog{This~is~in~the~header.^^J}
+ \fi
+ \else
+ \if_undefined{name-\encoding_name-\the\last_character}\then
+ \ifnum \last_character=\m@ne
+ \wlog{This~is~in~the~header.^^J}
+ \else
+ \wlog{This~is~related~to~slot~\the\last_character\space
+ (unencoded).^^J}
+ \fi
+ \else
+ \wlog{This~is~related~to~the~glyph~
+ \csname name-\encoding_name-\the\last_character\endcsname
+ .^^J}
+ \fi
+ \fi
+}
+% \begin{macro}{\compared_status}
+% |\compared_status| is a \meta{chardef token} which stores the
+% current status of the comparision, according to the following table
+% \begin{enumerate}
+% \item[0] The property lists are equal---there may be checksum
+% differences, but nothing else.
+% \item[1] The property lists are almost equal---there are
+% differences in the metrics, but these are within the |\tolerance|
+% level.
+% \item[2] The property lists are essentially equal---there are
+% differences in the metrics, but these are within the |\tolerance|
+% level, with the exception of some \texttt{CHARHT},
+% \texttt{CHARDP}, and \texttt{CHARIC} values.
+% \item[3] The property lists have metric differences---there are
+% metric differences not with category 2.
+% \item[4] The property lists are not completely matched.
+% \end{enumerate}
+% \end{macro}
+
+% \begin{macro}{\step_linenos}
+% The |\step_linenos| macro increments the |_lineno| line numbers. If
+% the current line was fetched from the buffert, then it also
+% increments the |_bufmid| and |_bufbase| registers, and checks
+% whether the buffert ended (in which case it is normalized to its
+% starting position, to conserve hash table space).
+% \begin{macrocode}
+\def\step_linenos{
+ \global\advance \a_lineno \@ne
+ \ifnum \a_bufmid=\a_buftop
+ \global\a_bufbase=\z@
+ \global\a_bufmid=\z@
+ \global\a_buftop=\m@ne
+ \else\ifnum \a_bufmid<\a_buftop
+ \global\advance \a_bufmid \@ne
+ \global\advance \a_bufbase \@ne
+ \fi\fi
+ \global\advance \b_lineno \@ne
+ \ifnum \b_bufmid=\b_buftop
+ \global\b_bufbase=\z@
+ \global\b_bufmid=\z@
+ \global\b_buftop=\m@ne
+ \else\ifnum \b_bufmid<\b_buftop
+ \global\advance \b_bufmid \@ne
+ \global\advance \b_bufbase \@ne
+ \fi\fi
+}
+% \end{macrocode}
+% \end{macro}
+
+
+\newdimen\first_dimen
+\newdimen\second_dimen
+\newcount\ht_hist_i
+\newcount\ht_hist_ii
+\newcount\ht_hist_iii
+\newcount\ht_hist_iv
+\newcount\dp_hist_i
+\newcount\dp_hist_ii
+\newcount\dp_hist_iii
+\newcount\dp_hist_iv
+\newcount\ic_hist_i
+\newcount\ic_hist_ii
+\newcount\ic_hist_iii
+\newcount\ic_hist_iv
+
+% \begin{macro}{\clear_histograms}
+% This macro clears all the histograms.
+% \begin{macrocode}
+\def\clear_histograms{
+ \global\ht_hist_i=\z@
+ \global\ht_hist_ii=\z@
+ \global\ht_hist_iii=\z@
+ \global\ht_hist_iv=\z@
+ \global\dp_hist_i=\z@
+ \global\dp_hist_ii=\z@
+ \global\dp_hist_iii=\z@
+ \global\dp_hist_iv=\z@
+ \global\ic_hist_i=\z@
+ \global\ic_hist_ii=\z@
+ \global\ic_hist_iii=\z@
+ \global\ic_hist_iv=\z@
+}
+% \enc{macrocode}
+% \end{macro}
+
+% \begin{macro}{\present_histograms}
+% This macro writes the histogram data to the log file.
+% \begin{macrocode}
+\def\present_histograms{
+ \wlog{\string\tolerance*~\space CHARHT~\space CHARDP~\space CHARIC}
+ \wlog{~\space\space 1--~\space\space 10\hist_to_eight{ht}{i}
+ \hist_to_eight{dp}{i}\hist_to_eight{ic}{i}}
+ \wlog{~\space 10--~\space 100\hist_to_eight{ht}{ii}
+ \hist_to_eight{dp}{ii}\hist_to_eight{ic}{ii}}
+ \wlog{~100--~1000\hist_to_eight{ht}{iii}\hist_to_eight{dp}{iii}
+ \hist_to_eight{ic}{iii}}
+ \wlog{1000--10000\hist_to_eight{ht}{iv}\hist_to_eight{dp}{iv}
+ \hist_to_eight{ic}{iv}}
+}
+\def\hist_to_eight#1#2{\x_cs\hist_to_eight_i{#1_hist_#2}}
+\def\hist_to_eight_i#1{
+ \ifnum #1<\@M
+ \four_spaces
+ \ifnum #1<\one_hundred
+ \space\space
+ \ifnum 10>#1 ~\fi
+ \else \ifnum #1<\one_thousand \space\fi \fi
+ \else
+ \ifnum 1000000>#1
+ \space\space
+ \ifnum 100000>#1 ~\fi
+ \else \ifnum 1000000>#1 ~\fi \fi
+ \fi
+ \the#1
+}
+% \end{macrocode}
+% \end{macro}
+
+
+% \begin{macro}{\metric_statistics}
+% \begin{macro}{\metric_origin}
+% The |\metric_statistics| macro takes care of comparing the metrics
+% by inspecting the values of |\first_dimen| and |\second_dimen|. It
+% has four classes of differences, which are represented by
+% |\compared_status| values 0--3: no difference, tolerable (almost no)
+% difference, histogrammed (essentially no) difference, and
+% non-tolerable difference. If a non-tolerable difference is found,
+% then the current lines are written to the log file. Histogrammed
+% differences causes the corresponding
+% |\|\meta{type}|_hist_|\meta{group} register to be incremented, and
+% tolerable differences only affect the value of |\compared_status|.
+%
+% The |\metric_origin| macro contains the \meta{type} of the metric
+% data. It is usually empty, but PL properties with metrics that have
+% histograms set it so that the correct histogram is updated.
+%
+% \begin{macrocode}
+\def\metric_statistics{
+ \_a_false
+ %
+ \ifdim \first_dimen<\z@ \first_dimen=-\first_dimen \fi
+ \ifdim \first_dimen=\z@
+ \else\ifdim \first_dimen<\tolerance
+ \ifnum 1>\compared_status
+ \global\chardef\compared_status=1
+ \fi
+ \else\ifx \metric_origin\empty_command
+ \_a_true
+ \else
+ \a_count=\@ne
+ \def\a_macro{10}
+ \loop\ifdim \a_macro\tolerance<\first_dimen
+ \edef\a_macro{\a_macro 0}
+ \advance \a_count \@ne
+ \repeat
+ \if_undefined{\metric_origin _hist_ \romannumeral\a_count}\then
+ \_a_true
+ \else
+ \global\advance \csname \metric_origin _hist_
+ \romannumeral\a_count \endcsname \@ne
+ \ifnum 2>\compared_status
+ \global\chardef\compared_status=2
+ \fi
+ \fi
+ \fi\fi\fi
+ %
+ \ifdim \second_dimen<\z@ \second_dimen=-\second_dimen \fi
+ \ifdim \second_dimen=\z@
+ \else\ifdim \second_dimen<\tolerance
+ \ifnum 1>\compared_status
+ \global\chardef\compared_status=1
+ \fi
+ \else\ifx \metric_origin\empty_command
+ \_a_true
+ \else
+ \a_count=\@ne
+ \def\a_macro{10}
+ \loop\ifdim \a_macro\tolerance<\second_dimen
+ \edef\a_macro{\a_macro 0}
+ \advance \a_count \@ne
+ \repeat
+ \if_undefined{\metric_origin _hist_ \romannumeral\a_count}\then
+ \_a_true
+ \else
+ \global\advance \csname \metric_origin _hist_
+ \romannumeral\a_count \endcsname \@ne
+ \ifnum 2>\compared_status
+ \global\chardef\compared_status=2
+ \fi
+ \fi
+ \fi\fi\fi
+ %
+ \if_a_
+ \ifnum 3>\compared_status
+ \global\chardef\compared_status=3
+ \fi
+ \begingroup
+ \def\do_left_paren{(}
+ \def\do_right_paren{)}
+ \wlog{Metric~differences~at~lines~\the\a_lineno\space
+ and~\the\b_lineno\space respectively:}
+ \wlog{\a_line}
+ \wlog{\b_line}
+ \endgroup
+ \glyphified_location
+ \fi
+}
+% \end{macrocode}
+% \end{macro}\end{macro}
+
+
+
+
+\newif\if_b_
+
+% \begin{macro}{\process_lines}
+% The |\process_lines| macro is the cheif executive in the comparision.
+% Its normal mode of operation is to retrive the next two lines from
+% the input files, match them, and update the metric differences
+% statistics. If the lines do not match, however, it starts building a
+% buffert of lines in which it searches for two matching lines. When
+% these two lines are found the mismatching portions of the files are
+% written to the log file, and the metric difference statistics are
+% updated for the two lines that matched.
+%
+% \begin{macrocode}
+\def\process_lines{
+ \get_next_line{a}
+ \get_next_line{b}
+ \match_lines{\a_line}{\b_line}
+ \if_a_
+% \end{macrocode}
+% Now the process of trying to find a match begins. At each step of
+% the search for a match, it tries all possible matches with the
+% lines read so far that haven't been tried at an earlier step.
+% \begin{macrocode}
+% \tracingmacros=\@ne\tracingcommands=\tw@ % DEBUG
+ \initialise_search
+ \loop
+ \get_next_line{a}
+ \get_next_line{b}
+ \add_to_buffert{a}
+ \add_to_buffert{b}
+ \match_lines{\a_line}{\b_line}
+ \if_a_
+ \global\a_bufP=\a_bufmid
+ \global\b_bufP=\b_bufmid
+ \try_matching
+ \fi
+ \if_a_
+ \global\advance \a_bufmid \@ne
+ \global\advance \b_bufmid \@ne
+ \ifnum \a_bufmid>\sixt@@n
+ \errmessage{Big~buffert.~\the\a_lineno[\the\a_filelineno]:
+ \the\b_lineno[\the\b_filelineno]}
+ \fi % DEBUG
+ \repeat
+ \report_mismatch
+% \tracingcommands=\z@\tracingmacros=\z@ % DEBUG
+% \end{macrocode}
+% \begin{macrocode}
+ \fi
+ \metric_statistics
+ \step_linenos
+ \par % DEBUG
+ \if \ifx \a_line\end_of_file_line
+ \ifx \b_line\end_of_file_line 1\else 0\fi\else 0\fi 0
+ % then
+ \expandafter\process_lines
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+
+\def\loadencoding#1{{
+ \def\do_slot{\x_cs\xdef{name-#1-\the\slot_number}{\slot_name}}
+ \inputetx{#1}
+}}
+
+% \begin{macro}{\comparePLs}
+% The |\comparePLs| command compares two property lists files. It is
+% geared against verifying that two different such files are as good
+% as equal, and it might take a very long time before it gives up on
+% trying to find any resemblance between them. It is furthermore only
+% meant to be used on (V)PL files generated by \package{TFtoPL} or
+% \package{VFtoVP}, because it assumes the property lists follow a
+% stricter syntax than \package{PLtoTF} and \package{VPtoVF} requires
+% them to. Finally it needs to be said that the comparision is rather
+% stupid in many respects, as it is completely line-oriented and
+% takes no notice of what kind of property list it is reading. This
+% may in some cases cause it to find ``matches'' between lines which
+% for syntactical reasons alone cannot match.
+%
+% |\comparePLs| is called as
+% \begin{quote}
+% |\comparePLs|\marg{first PL}\marg{second PL}\marg{encoding}
+% \end{quote}
+% where \meta{first PL} and \meta{second PL} are the complete names
+% (including extensions) of the files to compare. \meta{encoding} is
+% the name of the encoding to use when translating slots to glyph
+% names; leave it empty if you don't want to specify one. (One could
+% use the \texttt{CODINGSCHEME} property to determine the encoding in
+% that case, but this is not currently done). The slot to glyph
+% translation is only done to make it easier to locate the position of
+% some mismatch; it has not effect on the actual comparision.
+% \begin{macrocode}
+\newcount\last_character
+\def\comparePLs#1#2#3{{
+ \def\encoding_name{#3}
+ \last_character=\m@ne
+ \openin\a_read=#1\x_relax
+ \openin\b_read=#2\x_relax
+ \immediate\write\sixt@@n{#1~and^^J #2}
+ \pl_catcodes
+ \let\do_left_paren=\do_property
+ \let\do_right_paren=\empty_command
+ \global\chardef\compared_status=\z@
+ \clear_histograms
+ \global\a_filelineno=\@ne
+ \global\b_filelineno=\@ne
+ \global\a_lineno=\@ne
+ \global\b_lineno=\@ne
+ \global\a_bufbase=\z@
+ \global\b_bufbase=\z@
+ \global\a_bufmid=\z@
+ \global\b_bufmid=\z@
+ \global\a_buftop=\m@ne
+ \global\b_buftop=\m@ne
+ \process_lines
+ \closein\a_read
+ \closein\b_read
+ \ifcase \compared_status
+ \immediate\write\sixt@@n{are~equal.^^J}
+ \or
+ \immediate\write\sixt@@n{are~almost~equal.^^J}
+ \or
+ \immediate\write\sixt@@n{are~essentially~equal.}
+ \or
+ \immediate\write\sixt@@n{have~non-tolerated~metric~differences.}
+ \or
+ \immediate\write\sixt@@n{do~not~completely~match.}
+ \else
+ \immediate\write\sixt@@n{could~not~be~matched!}
+ \fi
+ \ifnum 1<\compared_status
+ \immediate\write\sixt@@n{See~log~file~for~specification.}
+ \present_histograms
+ \immediate\write\sixt@@n{}
+ \fi
+}}
+% \end{macrocode}
+% \end{macro}
+
+
+\begingroup
+ \catcode`\(=13 \catcode`\)=13
+ \gdef\pl_catcodes{
+ \catcode`\(=13 \def({\do_left_paren}
+ \catcode`\)=13 \def){\do_right_paren}
+ }
+\endgroup
+
+\def\do_property#1~{
+ \x_cs\edef{cmd-\sign}{#1}
+ \let\metric_origin=\empty_command
+ \x_cs\ifx{pl-#1}\x_relax
+ \expandafter\ignore_parens
+ \else
+ \csname pl-#1 \expandafter\endcsname
+ \fi
+}
+\def\pl_def_s#1(#2){\x_cs\def{pl-#1}#2~}
+\begingroup
+ \catcode`\!=13\lccode`\!=`\)
+\lowercase{\endgroup
+ \def\pl_def_p#1(#2){\x_cs\def{pl-#1}#2!}
+}
+\def\pl_let#1#2{
+ \expandafter\let
+ \csname pl-#1 \expandafter\endcsname \csname pl-#2 \endcsname
+}
+
+
+
+\newdimen\tolerance \tolerance=110sp
+
+% The following is for gobbling to the next unmatched right parenthesis.
+% The |\catcode| trick used by the PL-to-MTX converter's
+% |\ignore_parens| cannot be used since the characters are already
+% tokenized, but one can do something similar with an |\edef| since one
+% does not have to worry about the PL files containing material which
+% expands in an undesirable way.
+%
+% The |\line_stop| is so that linebreaks in the parenthesis being
+% gobbled will not cause total havok (although the parenthesis won't be
+% gobbled completely). It inserts end-of-group tokens until the |\edef|
+% is terminated, and then the |\afterassignment| token will close the
+% group and restore the normal definition.
+
+\def\ignore_parens{
+ \begingroup
+ \def\do_left_paren{{\iffalse}\fi}
+ \def\do_right_paren{\iffalse{\fi}}
+ \def\line_stop{\do_right_paren\line_stop}
+ \afterassignment\endgroup
+ \edef\a_macro{\iffalse}\fi
+}
+\def\line_stop{\x_relax}
+% \end{macrocode}
+%
+\begingroup
+ \catcode`\(=1
+ \catcode`\)=2
+ \gdef\pl_string{
+ \begingroup
+ \def\do_left_paren{(\iffalse)\fi}
+ \def\do_right_paren{\iffalse(\fi)}
+ \def\line_stop{\iffalse{\fi}\line_stop}
+ \afterassignment\pl_string_i
+ \edef\a_macro{\iffalse}\fi
+ }
+\endgroup
+\def\pl_string_i{
+ \expandafter\endgroup \expandafter\def
+ \csname string-\sign \expandafter\endcsname
+ \expandafter{\a_macro}
+}
+
+\def\pl_real#1{\sign#1\hundred_pt}
+\newdimen\hundred_pt \hundred_pt=100pt
+
+% Convert a PL int to a \TeX{} int, assuming it's prefixed
+% by |C|, |D|, |O|, or |H|.
+%
+% \begin{macrocode}
+\def\pl_int#1#2{
+ \sign \ifx#1C `#2
+ \else\ifx#1D #2
+ \else\ifx#1O '#2
+ \else\ifx#1H "#2
+ \else -1\errmessage{Unknown~PL~number~prefix~`#1'}
+ \fi\fi\fi\fi
+}
+% \end{macrocode}
+
+
+% \begin{macrocode}
+\pl_def_p{NEXTLARGER}(#1~#2){\advance \first_integer \pl_int{#1}{#2}}
+\pl_let{BOUNDARYCHAR}{NEXTLARGER}
+% \end{macrocode}
+%
+%
+% \begin{macrocode}
+\x_cs\let{pl-VTITLE}=\pl_string
+\pl_let{FONTNAME}{VTITLE}
+\pl_let{FONTAREA}{VTITLE}
+% \pl_let{CHECKSUM}{VTITLE}
+% % Not really a string, but unsigned numbers can become too large for TeX.
+% \pl_let{FONTCHECKSUM}{CHECKSUM}
+% Commented out since checksums vary too much.
+\pl_def_p{FONTAT}(R~#1){\advance \first_dimen \pl_real{#1}}
+\pl_let{FONTDSIZE}{FONTAT}
+\pl_let{SELECTFONT}{NEXTLARGER}
+\pl_let{SETCHAR}{NEXTLARGER}
+\pl_def_p{SETRULE}(R~#1~R~#2){
+ \advance \first_dimen \pl_real{#1}
+ \advance \second_dimen \pl_real{#2}
+}
+\x_cs\let{pl-POP}\empty_command
+\pl_let{PUSH}{POP}
+\pl_let{MOVERIGHT}{FONTAT}
+\pl_let{MOVELEFT}{FONTAT}
+\pl_let{MOVEUP}{FONTAT}
+\pl_let{MOVEDOWN}{FONTAT}
+\pl_let{SPECIAL}{VTITLE}
+\pl_let{SPECIALHEX}{VTITLE}
+% \end{macrocode}
+%
+%
+
+\pl_let{CODINGSCHEME}{VTITLE}
+\pl_let{DESIGNSIZE}{FONTAT}
+
+\def\pl_parameter#1#2#3{
+ \advance \first_integer \pl_int{#1}{#2}
+ \advance \first_dimen \pl_real{#3}
+}
+
+\pl_def_p{PARAMETER}(#1~#2~R~#3){\pl_parameter{#1}{#2}{#3}}
+
+\pl_def_p{SLANT}(R~#1){\pl_parameter{D}{1}{#1}}
+\pl_def_p{SPACE}(R~#1){\pl_parameter{D}{2}{#1}}
+\pl_def_p{STRETCH}(R~#1){\pl_parameter{D}{3}{#1}}
+\pl_def_p{SHRINK}(R~#1){\pl_parameter{D}{4}{#1}}
+\pl_def_p{XHEIGHT}(R~#1){\pl_parameter{D}{5}{#1}}
+\pl_def_p{QUAD}(R~#1){\pl_parameter{D}{6}{#1}}
+\pl_def_p{EXTRASPACE}(R~#1){\pl_parameter{D}{7}{#1}}
+
+\pl_def_p{NUM1}(R~#1){\pl_parameter{D}{8}{#1}}
+\pl_def_p{NUM2}(R~#1){\pl_parameter{D}{9}{#1}}
+\pl_def_p{NUM3}(R~#1){\pl_parameter{D}{10}{#1}}
+\pl_def_p{DENOM1}(R~#1){\pl_parameter{D}{11}{#1}}
+\pl_def_p{DENOM2}(R~#1){\pl_parameter{D}{12}{#1}}
+\pl_def_p{SUP1}(R~#1){\pl_parameter{D}{13}{#1}}
+\pl_def_p{SUP2}(R~#1){\pl_parameter{D}{14}{#1}}
+\pl_def_p{SUP3}(R~#1){\pl_parameter{D}{15}{#1}}
+\pl_def_p{SUB1}(R~#1){\pl_parameter{D}{16}{#1}}
+\pl_def_p{SUB2}(R~#1){\pl_parameter{D}{17}{#1}}
+\pl_def_p{SUPDROP}(R~#1){\pl_parameter{D}{18}{#1}}
+\pl_def_p{SUBDROP}(R~#1){\pl_parameter{D}{19}{#1}}
+\pl_def_p{DELIM1}(R~#1){\pl_parameter{D}{20}{#1}}
+\pl_def_p{DELIM2}(R~#1){\pl_parameter{D}{21}{#1}}
+\pl_def_p{AXISHEIGHT}(R~#1){\pl_parameter{D}{22}{#1}}
+
+\pl_let{DEFAULTRULETHICKNESS}{NUM1}
+\pl_let{BIGOPSPACING1}{NUM2}
+\pl_let{BIGOPSPACING2}{NUM3}
+\pl_let{BIGOPSPACING3}{DENOM1}
+\pl_let{BIGOPSPACING4}{DENOM2}
+\pl_let{BIGOPSPACING5}{SUP1}
+
+\def\boundarychar_name{BOUNDARYCHAR}
+\pl_def_s{LABEL}(#1){
+ \def\a_macro{#1}
+ \ifx \a_macro\boundarychar_name
+ \x_cs\let{string-\sign}\a_macro
+ \else
+ \def\a_macro{\csname pl-LABEL(i\endcsname #1~}
+ \expandafter\a_macro
+ \fi
+}
+\pl_def_p{LABEL(i}(#1~#2){
+ \last_character=\first_integer
+ \advance \first_integer \pl_int{#1}{#2}
+}
+\pl_def_p{LIG}(#1~#2~#3~#4){
+ \advance \first_integer \pl_int{#1}{#2}
+ \advance \second_integer \pl_int{#3}{#4}
+}
+\pl_let{/LIG}{LIG}
+\pl_let{/LIG>}{LIG}
+\pl_let{LIG/}{LIG}
+\pl_let{LIG/>}{LIG}
+\pl_let{/LIG/}{LIG}
+\pl_let{/LIG/>}{LIG}
+\pl_let{/LIG/>>}{LIG}
+
+\pl_let{HEADER}{LIG}
+
+% \def\pl_lig#1~#2~#3~#4~#5~{
+% \x_cs\def{string-\sign}{#1}
+% \def\LIG#1~{
+% \if\ifx #1C 0
+% \else\ifx #1D 0
+% \else\ifx #1H 0
+% \else\ifx #1O 0 \else 1\fi\fi\fi\fi 0
+% % then
+% \expandafter\both_of_two
+% \else
+% \expandafter\first_of_two
+% \fi{\pl_lig LIG}{~}#1~
+% }
+% \def\/{\pl_lig/}
+
+\pl_let{KRN}{PARAMETER}
+\pl_let{SKIP}{NEXTLARGER}
+
+\pl_def_s{CHARACTER}(#1~#2){
+ \last_character=\first_integer
+ \advance \first_integer \pl_int{#1}{#2}
+}
+\pl_let{CHARWD}{FONTAT}
+\pl_def_p{CHARHT}(R~#1){
+ \def\metric_origin{ht}
+ \advance \first_dimen \pl_real{#1}
+}
+\pl_def_p{CHARDP}(R~#1){
+ \def\metric_origin{dp}
+ \advance \first_dimen \pl_real{#1}
+}
+\pl_def_p{CHARIC}(R~#1){
+ \def\metric_origin{ic}
+ \advance \first_dimen \pl_real{#1}
+}
+
+\pl_let{TOP}{NEXTLARGER}
+\pl_let{MID}{NEXTLARGER}
+\pl_let{BOT}{NEXTLARGER}
+\pl_let{REP}{NEXTLARGER}
+
+\pl_let{FONTDIMEN}{POP}
+\pl_let{LIGTABLE}{POP}
+\pl_let{VARCHAR}{POP}
+\pl_def_s{MAPFONT}(#1~#2){\advance \first_integer \pl_int{#1}{#2}}
+\pl_let{MAP}{POP}
+
+
+% \begin{macrocode}
+\catcode`\@=\atcatcode
+\catcode`\^^M=\nlcatcode
+\catcode`\ =\spacecatcode
+\catcode`\~=\tildecatcode
+\catcode`\_=\underscorecatcode
+% \end{macrocode}
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/comparepls.tex b/Master/texmf-dist/doc/fonts/fontinst/base/test/comparepls.tex
new file mode 100644
index 00000000000..a735a34ed79
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/fontinst/base/test/comparepls.tex
@@ -0,0 +1,73 @@
+\input fontinst.sty
+\input comparemetrics.sty
+
+% % \tracingmacros=1\tracingcommands=2
+% \comparePLs{cmr5.pl}{cmr5.pl}
+%
+% \bye
+
+\tracingstats=1
+
+\def\oldf{::efficiency:saved:v1.912:}
+\def\newf{::efficiency:saved:v1.913:}
+
+\loadencoding{t1}
+\loadencoding{ot1}
+\loadencoding{ts1}
+\loadencoding{8r}
+
+\comparePLs{\oldf padb7t.vpl}{\newf padb7t.vpl}{ot1} %OK 11sp
+\comparePLs{\oldf padb8c.vpl}{\newf padb8c.vpl}{ts1} %OK 11sp
+\comparePLs{\oldf padb8t.vpl}{\newf padb8t.vpl}{t1} %OK 11sp
+\comparePLs{\oldf padbc7t.vpl}{\newf padbc7t.vpl}{ot1} %OK 11sp
+\comparePLs{\oldf padbc8t.vpl}{\newf padbc8t.vpl}{t1}
+\comparePLs{\oldf padbi7t.vpl}{\newf padbi7t.vpl}{ot1}
+\comparePLs{\oldf padbi8c.vpl}{\newf padbi8c.vpl}{ts1}
+\comparePLs{\oldf padbi8t.vpl}{\newf padbi8t.vpl}{t1}
+\comparePLs{\oldf padbo7t.vpl}{\newf padbo7t.vpl}{ot1} %OK 11sp
+\comparePLs{\oldf padbo8c.vpl}{\newf padbo8c.vpl}{ts1} %OK 11sp
+\comparePLs{\oldf padbo8t.vpl}{\newf padbo8t.vpl}{t1}
+\comparePLs{\oldf padr7t.vpl}{\newf padr7t.vpl}{ot1} %OK 11sp
+\comparePLs{\oldf padr8c.vpl}{\newf padr8c.vpl}{ts1} %OK 11sp
+\comparePLs{\oldf padr8t.vpl}{\newf padr8t.vpl}{t1} %OK 11sp
+\comparePLs{\oldf padrc7t.vpl}{\newf padrc7t.vpl}{ot1} %OK 11sp
+\comparePLs{\oldf padrc8t.vpl}{\newf padrc8t.vpl}{t1} %OK 11sp
+\comparePLs{\oldf padri7t.vpl}{\newf padri7t.vpl}{ot1}
+\comparePLs{\oldf padri8c.vpl}{\newf padri8c.vpl}{ts1} %OK 11sp
+\comparePLs{\oldf padri8t.vpl}{\newf padri8t.vpl}{t1}
+\comparePLs{\oldf padro7t.vpl}{\newf padro7t.vpl}{ot1} %OK 11sp
+\comparePLs{\oldf padro8c.vpl}{\newf padro8c.vpl}{ts1} %OK 11sp
+\comparePLs{\oldf padro8t.vpl}{\newf padro8t.vpl}{t1}
+\comparePLs{\oldf pads7t.vpl}{\newf pads7t.vpl}{ot1}
+\comparePLs{\oldf pads8c.vpl}{\newf pads8c.vpl}{ts1}
+\comparePLs{\oldf pads8t.vpl}{\newf pads8t.vpl}{t1}
+\comparePLs{\oldf padsc7t.vpl}{\newf padsc7t.vpl}{ot1}
+\comparePLs{\oldf padsc8t.vpl}{\newf padsc8t.vpl}{t1} %OK 11sp
+\comparePLs{\oldf padsi7t.vpl}{\newf padsi7t.vpl}{ot1}
+\comparePLs{\oldf padsi8c.vpl}{\newf padsi8c.vpl}{ts1} %OK 11sp
+\comparePLs{\oldf padsi8t.vpl}{\newf padsi8t.vpl}{t1}
+\comparePLs{\oldf padso7t.vpl}{\newf padso7t.vpl}{ot1}
+\comparePLs{\oldf padso8c.vpl}{\newf padso8c.vpl}{ts1}
+\comparePLs{\oldf padso8t.vpl}{\newf padso8t.vpl}{t1}
+
+\comparePLs{\oldf padb8a.pl}{\newf padb8a.pl}{}
+\comparePLs{\oldf padb8r.pl}{\newf padb8r.pl}{8r}
+\comparePLs{\oldf padbi8a.pl}{\newf padbi8a.pl}{}
+\comparePLs{\oldf padbi8r.pl}{\newf padbi8r.pl}{8r}
+\comparePLs{\oldf padbo8r.pl}{\newf padbo8r.pl}{8r}
+\comparePLs{\oldf padr8a.pl}{\newf padr8a.pl}{}
+\comparePLs{\oldf padr8r.pl}{\newf padr8r.pl}{8r}
+\comparePLs{\oldf padrc8a.pl}{\newf padrc8a.pl}{}
+\comparePLs{\oldf padrc8r.pl}{\newf padrc8r.pl}{8r}
+\comparePLs{\oldf padri8a.pl}{\newf padri8a.pl}{}
+\comparePLs{\oldf padri8r.pl}{\newf padri8r.pl}{8r}
+\comparePLs{\oldf padro8r.pl}{\newf padro8r.pl}{8r}
+\comparePLs{\oldf pads8a.pl}{\newf pads8a.pl}{}
+\comparePLs{\oldf pads8r.pl}{\newf pads8r.pl}{8r}
+\comparePLs{\oldf padsc8a.pl}{\newf padsc8a.pl}{}
+\comparePLs{\oldf padsc8r.pl}{\newf padsc8r.pl}{8r}
+\comparePLs{\oldf padsi8a.pl}{\newf padsi8a.pl}{}
+\comparePLs{\oldf padsi8r.pl}{\newf padsi8r.pl}{8r}
+\comparePLs{\oldf padso8r.pl}{\newf padso8r.pl}{8r}
+
+\bye \ No newline at end of file
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/scaledtest.tex b/Master/texmf-dist/doc/fonts/fontinst/base/test/scaledtest.tex
new file mode 100644
index 00000000000..f5e9dd03a2d
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/fontinst/base/test/scaledtest.tex
@@ -0,0 +1,8 @@
+%&Plain
+\input fontinst.sty
+
+\installfonts
+ \installfont{foo}{scaledtest scaled 300}{ot1}{OT1}{zzz}{m}{n}{}
+\endinstallfonts
+
+\bye \ No newline at end of file
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/speedtest1.tex b/Master/texmf-dist/doc/fonts/fontinst/base/test/speedtest1.tex
new file mode 100644
index 00000000000..a92823e7210
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/fontinst/base/test/speedtest1.tex
@@ -0,0 +1,62 @@
+\input fontinst.sty
+
+\edef\spacecatcode{\the\catcode`\ }
+\edef\nlcatcode{\the\catcode`\^^M}
+\edef\atcatcode{\the\catcode`\@}
+\edef\underscorecatcode{\the\catcode`\_}
+\edef\tildecatcode{\the\catcode`\~}
+\catcode`\ =9
+\catcode`\^^M=9
+\catcode`\@=11
+\catcode`\_=11
+\catcode`\~=10
+
+\def\Mtxtopl#1#2{{
+ \open_out{#2.pl}
+ \top_of_pl_hook
+ \out_line{(COMMENT~raw~font~#2~created~by~fontinst~
+ v\fontinstversion)}
+ \out_line{}
+ \out_line{(COMMENT~Filename:~#2.pl)}
+ \out_line{(COMMENT~Created~by:~tex~\jobname)}
+ \out_line{(COMMENT~Created~using:~\string\mtxtopl{#1}{#2})}
+ \out_line{}
+ \out_line{(COMMENT~This~file~can~be~turned~into~a~ligless~TeX~font~
+ with)}
+ \out_line{(COMMENT~pltotfm~#2.pl~#2.tfm)}
+ \out_line{}
+ \out_line{(COMMENT~THIS~FILE~CAN~THEN~BE~DELETED.)}
+ \out_line{}
+ \out_line{(DESIGNSIZE~R~10.0)}
+ \out_line{}
+ \let\setglyph=\iffalse
+ \let\endsetglyph=\fi
+ \let\setkern=\gobble_three
+ \let\setrawglyph=\Pl_raw_glyph
+ \inputmtx{#1}
+ \out_line{}
+ \out_line{(COMMENT~END~OF~FILE~#2.pl)}
+ \close_out{Raw~font}
+}}
+\def\Pl_raw_glyph#1#2#3#4#5#6#7#8{
+ \a_count=#4
+ \out_line{(CHARACTER~\vpl_int\a_count\space(COMMENT~#1)}
+ \out_lline{(CHARWD~R~\make_factor{#5})}
+ \out_lline{(CHARHT~R~\make_factor{#6})}
+ \out_lline{(CHARDP~R~\make_factor{#7})}
+ \out_lline{(CHARIC~R~\make_factor{#8})}
+ \out_lline{)}
+}
+
+
+\catcode`\@=\atcatcode
+\catcode`\^^M=\nlcatcode
+\catcode`\ =\spacecatcode
+\catcode`\~=\tildecatcode
+\catcode`\_=\underscorecatcode
+
+\batchmode
+\for(n){1}{500}{1}\Mtxtopl{cmr5}{cmr5.new}\endfor(n)
+
+\bye
+
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/testfont.tex b/Master/texmf-dist/doc/fonts/fontinst/base/test/testfont.tex
new file mode 100644
index 00000000000..544642aae45
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/fontinst/base/test/testfont.tex
@@ -0,0 +1,208 @@
+% A testbed for font evaluation (see The METAFONTbook, Appendix H)
+
+\tracinglostchars=0
+\tolerance=1000
+\raggedbottom
+\nopagenumbers
+\parindent=0pt
+\newlinechar=`@
+\hyphenpenalty=200
+\doublehyphendemerits=30000
+\hyphenation{prom-i-nent}
+
+\newcount\m \newcount\n \newcount\p \newdimen\dim
+\chardef\other=12
+
+\def\today{\ifcase\month\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or December\fi
+ \space\number\day, \number\year}
+\def\hours{\n=\time \divide\n 60
+ \m=-\n \multiply\m 60 \advance\m \time
+ \twodigits\n\twodigits\m}
+\def\twodigits#1{\ifnum #1<10 0\fi \number#1}
+
+\def\init{\message{@Name of the font to test = }
+ \read-1 to\fontname \startfont
+ \message{Now type a test command (\string\help\space for help):}}
+\def\startfont{\font\testfont=\fontname \spaceskip=0pt
+ \leftline{\sevenrm Test of \fontname\unskip\ on \today\ at \hours}
+ \medskip
+ \testfont \setbaselineskip
+ \ifdim\fontdimen6\testfont<10pt \rightskip=0pt plus 20pt
+ \else\rightskip=0pt plus 2em \fi
+ \spaceskip=\fontdimen2\testfont % space between words (\raggedright)
+ \xspaceskip=\fontdimen2\testfont \advance\xspaceskip by\fontdimen7\testfont}
+
+{\catcode`\|=0 \catcode`\\=\other
+|gdef|help{|message{%
+\init switches to another font;@%
+\end or \bye finishes the run;@%
+\table prints the font layout in tabular format;@%
+\text prints a sample text, assuming TeX text font conventions;@%
+\sample combines \table and \text;@%
+\mixture mixes a background character with a series of others;@%
+\alternation interleaves a background character with a series;@%
+\alphabet prints all lowercase letters within a given background;@%
+\ALPHABET prints all uppercase letters within a given background;@%
+\series prints a series of letters within a given background;@%
+\lowers prints a comprehensive test of lowercase;@%
+\uppers prints a comprehensive test of uppercase;@%
+\digits prints a comprehensive test of numerals;@%
+\math prints a comprehensive test of TeX math italic;@%
+\names prints a text that mixes upper and lower case;@%
+\punct prints a punctuation test;@%
+\bigtest combines many of the above routines;@%
+\help repeats this message;@%
+and you can use ordinary TeX commands (e.g., to \input a file).}}}
+
+\def\setbaselineskip{\setbox0=\hbox{\n=0
+\loop\char\n \ifnum \n<255 \advance\n 1 \repeat}
+\baselineskip=6pt \advance\baselineskip\ht0 \advance\baselineskip\dp0 }
+
+\def\setchar#1{{\escapechar-1\message{\string#1 character = }%
+ \def\do##1{\catcode`##1=\other}\dospecials
+ \read-1 to\next
+ \expandafter\finsetchar\next\next#1}}
+\def\finsetchar#1#2\next#3{\global\chardef#3=`#1
+ \ifnum #3=`\# \global\chardef#3=#2 \fi}
+\def\promptthree{\setchar\background
+ \setchar\starting \setchar\ending}
+
+\def\mixture{\promptthree \domix\mixpattern}
+\def\alternation{\promptthree \domix\altpattern}
+\def\mixpattern{\0\1\0\0\1\1\0\0\0\1\1\1\0\1}
+\def\altpattern{\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0}
+\def\domix#1{\par\chardef\0=\background \n=\starting
+ \loop \chardef\1=\n #1\endgraf
+ \ifnum \n<\ending \advance\n 1 \repeat}
+
+\def\!{\discretionary{\background}{\background}{\background}}
+\def\series{\promptthree \!\doseries\starting\ending\par}
+\def\doseries#1#2{\n=#1\loop\char\n\!\ifnum\n<#2\advance\n 1 \repeat}
+\def\complower{\!\doseries{`a}{`z}\doseries{'31}{'34}\par}
+\def\compupper{\!\doseries{`A}{`Z}\doseries{'35}{'37}\par}
+\def\compdigs{\!\doseries{`0}{`9}\par}
+\def\alphabet{\setchar\background\complower}
+\def\ALPHABET{\setchar\background\compupper}
+
+\def\lowers{\docomprehensive\complower{`a}{`z}{'31}{'34}}
+\def\uppers{\docomprehensive\compupper{`A}{`Z}{'35}{'37}}
+\def\digits{\docomprehensive\compdigs{`0}{`4}{`5}{`9}}
+\def\docomprehensive#1#2#3#4#5{\par\chardef\background=#2
+ \loop{#1} \ifnum\background<#3\m=\background\advance\m 1
+ \chardef\background=\m \repeat \chardef\background=#4
+ \loop{#1} \ifnum\background<#5\m=\background\advance\m 1
+ \chardef\background=\m \repeat}
+
+\def\names{ {\AA}ngel\aa\ Beatrice Claire
+ Diana \'Erica Fran\c{c}oise Ginette H\'el\`ene Iris
+ Jackie K\=aren {\L}au\.ra Mar{\'\i}a N\H{a}ta{\l}{\u\i}e {\O}ctave
+ Pauline Qu\^eneau Roxanne Sabine T\~a{\'\j}a Ur\v{s}ula
+ Vivian Wendy Xanthippe Yv{\o}nne Z\"azilie\par}
+\def\punct{\par\dopunct{min}\dopunct{pig}\dopunct{hid}
+ \dopunct{HIE}\dopunct{TIP}\dopunct{fluff}
+ \$1,234.56 + 7/8 = 9\% @ \#0\par}
+\def\dopunct#1{#1,\ #1:\ #1;\ `#1'\ ?`#1?\ !`#1!\ (#1)\ [#1]\ #1*\ #1.\par}
+
+\def\bigtest{\sample
+ hamburgefonstiv HAMBURGEFONSTIV\par
+ \names \punct \lowers \uppers \digits}
+
+\def\math{\textfont1=\testfont \skewchar\testfont=\skewtrial
+ \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
+ \def\ii{i} \def\jj{j}
+ \def\\##1{|##1|+}\mathtrial
+ \def\\##1{##1_2+}\mathtrial
+ \def\\##1{##1^2+}\mathtrial
+ \def\\##1{##1/2+}\mathtrial
+ \def\\##1{2/##1+}\mathtrial
+ \def\\##1{##1,{}+}\mathtrial
+ \def\\##1{d##1+}\mathtrial
+ \let\ii=\imath \let\jj=\jmath \def\\##1{\hat##1+}\mathtrial}
+\newcount\skewtrial \skewtrial='177
+\def\mathtrial{$\\A \\B \\C \\D \\E \\F \\G \\H \\I \\J \\K \\L \\M \\N \\O
+ \\P \\Q \\R \\S \\T \\U \\V \\W \\X \\Y \\Z \\a \\b \\c \\d \\e \\f \\g
+ \\h \\\ii \\\jj \\k \\l \\m \\n \\o \\p \\q \\r \\s \\t \\u \\v \\w \\x \\y
+ \\z \\\alpha \\\beta \\\gamma \\\delta \\\epsilon \\\zeta \\\eta \\\theta
+ \\\iota \\\kappa \\\lambda \\\mu \\\nu \\\xi \\\pi \\\rho \\\sigma \\\tau
+ \\\upsilon \\\phi \\\chi \\\psi \\\omega \\\vartheta \\\varpi \\\varphi
+ \\\Gamma \\\Delta \\\Theta \\\Lambda \\\Xi \\\Pi \\\Sigma \\\Upsilon
+ \\\Phi \\\Psi \\\Omega \\\partial \\\ell \\\wp$\par}
+\def\mathsy{\begingroup\skewtrial='060 % for math symbol font tests
+ \def\mathtrial{$\\A \\B \\C \\D \\E \\F \\G \\H \\I \\J \\K \\L
+ \\M \\N \\O \\P \\Q \\R \\S \\T \\U \\V \\W \\X \\Y \\Z$\par}
+ \math\endgroup}
+
+\def\oct#1{\hbox{\rm\'{}\kern-.2em\it#1\/\kern.05em}} % octal constant
+\def\hex#1{\hbox{\rm\H{}\tt#1}} % hexadecimal constant
+\def\setdigs#1"#2{\gdef\h{#2}% \h=hex prefix; \0\1=corresponding octal
+ \m=\n \divide\m by 64 \xdef\0{\the\m}%
+ \multiply\m by-64 \advance\m by\n \divide\m by 8 \xdef\1{\the\m}}
+\def\testrow{\setbox0=\hbox{\penalty 1\def\\{\char"\h}%
+ \\0\\1\\2\\3\\4\\5\\6\\7\\8\\9\\A\\B\\C\\D\\E\\F%
+ \global\p=\lastpenalty}} % \p=1 if none of the characters exist
+\def\oddline{\cr
+ \noalign{\nointerlineskip}
+ \multispan{19}\hrulefill&
+ \setbox0=\hbox{\lower 2.3pt\hbox{\hex{\h x}}}\smash{\box0}\cr
+ \noalign{\nointerlineskip}}
+\newif\ifskipping
+\def\evenline{\loop\skippingfalse
+ \ifnum\n<256 \m=\n \divide\m 16 \chardef\next=\m
+ \expandafter\setdigs\meaning\next \testrow
+ \ifnum\p=1 \skippingtrue \fi\fi
+ \ifskipping \global\advance\n 16 \repeat
+ \ifnum\n=256 \let\next=\endchart\else\let\next=\morechart\fi
+ \next}
+\def\morechart{\cr\noalign{\hrule\penalty5000}
+ \chartline \oddline \m=\1 \advance\m 1 \xdef\1{\the\m}
+ \chartline \evenline}
+\def\chartline{&\oct{\0\1x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&}
+\def\chartstrut{\lower4.5pt\vbox to14pt{}}
+\def\table{$$\global\n=0
+ \halign to\hsize\bgroup
+ \chartstrut##\tabskip0pt plus10pt&
+ &\hfil##\hfil&\vrule##\cr
+ \lower6.5pt\null
+ &&&\oct0&&\oct1&&\oct2&&\oct3&&\oct4&&\oct5&&\oct6&&\oct7&\evenline}
+\def\endchart{\cr\noalign{\hrule}
+ \raise11.5pt\null&&&\hex 8&&\hex 9&&\hex A&&\hex B&
+ &\hex C&&\hex D&&\hex E&&\hex F&\cr\egroup$$\par}
+\def\:{\setbox0=\hbox{\char\n}%
+ \ifdim\ht0>7.5pt\reposition
+ \else\ifdim\dp0>2.5pt\reposition\fi\fi
+ \box0\global\advance\n 1 }
+\def\reposition{\setbox0=\vbox{\kern2pt\box0}\dim=\dp0
+ \advance\dim 2pt \dp0=\dim}
+\def\centerlargechars{
+ \def\reposition{\setbox0=\hbox{$\vcenter{\kern2pt\box0\kern2pt}$}}}
+
+\def\text{{\advance\baselineskip-4pt
+\setbox0=\hbox{abcdefghijklmnopqrstuvwxyz}
+\ifdim\hsize>2\wd0 \ifdim 15pc>2\wd0 \hsize=15pc \else \hsize=2\wd0 \fi\fi
+On November 14, 1885, Senator \& Mrs.~Leland Stanford called
+together at their San Francisco mansion the 24~prominent men who had
+been chosen as the first trustees of The Leland Stanford Junior University.
+They handed to the board the Founding Grant of the University, which they
+had executed three days before. This document---with various amendments,
+legislative acts, and court decrees---remains as the University's charter.
+In bold, sweeping language it stipulates that the objectives of the University
+are ``to qualify students for personal success and direct usefulness in life;
+and to promote the publick welfare by exercising an influence in behalf of
+humanity and civilization, teaching the blessings of liberty regulated by
+law, and inculcating love and reverence for the great principles of
+government as derived from the inalienable rights of man to life, liberty,
+and the pursuit of happiness.'' \moretext
+(!`THE DAZED BROWN FOX QUICKLY GAVE 12345--67890 JUMPS!)\par}}
+\def\moretext{?`But aren't Kafka's Schlo{\ss} and {\AE}sop's {\OE}uvres
+often na{\"\i}ve vis-\`a-vis the d{\ae}monic ph{\oe}nix's official r\^ole
+in fluffy souffl\'es? }
+\def\omitaccents{\let\moretext=\relax}
+
+\def\sample{\table\text}
+
+\ifx\noinit!\else\init\fi
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/testsc.tex b/Master/texmf-dist/doc/fonts/fontinst/base/test/testsc.tex
new file mode 100644
index 00000000000..c54452d45e1
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/fontinst/base/test/testsc.tex
@@ -0,0 +1,41 @@
+\input fontinst.sty
+
+\transformfont{padr8r} {\reencodefont{8r}{\fromafm{padr8a}}}
+\transformfont{padrc8r}{\reencodefont{8r}{\fromafm{padrc8a}}}
+\transformfont{pads8r} {\reencodefont{8r}{\fromafm{pads8a}}}
+\transformfont{padsc8r}{\reencodefont{8r}{\fromafm{padsc8a}}}
+\fromafm{padr8x}
+\fromafm{pads8x}
+
+\installfonts
+
+\installfamily{T1}{pad} {}
+\installfamily{T1}{padx}{}
+\installfamily{T1}{padj}{}
+
+\installfont{padrc8t}{padrc8r,latin}
+ {T1}{T1}{pad}{m}{sc}{}
+\installfont{padrc9e}
+ {kernoff,padr8r,padr8x,kernon,glyphoff,padrc8r,glyphon,
+ resetsc,latinsc}
+ {T1c}{T1}{padx}{m}{sc}{}
+\installfont{padrc9d}
+ {kernoff,padr8r,padr8x,kernon,glyphoff,padrc8r,glyphon,
+ resetosf,resetsc,latinsc}
+ {T1cj}{T1}{padj}{m}{sc}{}
+
+\installfont{padsc8t}{padsc8r,latin}
+ {T1}{T1}{pad}{m}{sc}{}
+\installfont{padsc9e}
+ {kernoff,pads8r,pads8x,kernon,glyphoff,padsc8r,glyphon,
+ resetsc,latinsc}
+ {T1c}{T1}{padx}{sb}{sc}{}
+\installfont{padsc9d}
+ {kernoff,pads8r,pads8x,kernon,glyphoff,padrc8r,glyphon,
+ resetosf,resetsc,latinsc}
+ {T1cj}{T1}{padj}{sb}{sc}{}
+
+\endinstallfonts
+\bye
+
+
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1901test.mtx b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1901test.mtx
new file mode 100644
index 00000000000..624a39bf81d
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1901test.mtx
@@ -0,0 +1,22 @@
+\relax
+
+% This is a test MTX file for the new implementation of
+% the \transformfont stuff.
+
+\metrics
+
+\setint{italicslant}{0}
+\setint{italicslant}{100}
+\setint{xheight}{400}
+
+\setrawglyph{a}{v1901test}{10.95pt}{10} {500}{400}{0}{40}
+\setrawglyph{g}{v1901test}{10.95pt}{10} {500}{400}{-300}{40}
+
+\setkern{a}{g}{100}
+
+\setglyph{ag}
+ \glyphpcc{a}{0}{500}
+ \glyphpcc{g}{500}{0}
+\endsetglyph
+
+\endmetrics \ No newline at end of file
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1901test.tex b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1901test.tex
new file mode 100644
index 00000000000..81a6218f679
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1901test.tex
@@ -0,0 +1,214 @@
+% Test of fontinst v1.901.
+% Started 1999/03/13.
+\input fontinst.sty
+
+% Part one---test of pooled file allocation.
+\catcode`\_=11
+\catcode`\@=11
+
+\def\show_out_filenames{%
+ \immediate\write16{\string\count17=\the\count17}%
+ \for(i){-1}{16}{1}%
+ \immediate\write16{Stream \strint{i}:
+ \x_cs\meaning{out_filename-\strint{i}}%
+ }%
+ \endfor(i)%
+}
+
+% %1 Standard usage
+% \show_out_filenames
+% \open_pout\tF{\jobname.out}
+% \show_out_filenames
+% \pout_line\tF{Hello world!}
+% \close_pout\tF{Test output}
+% \show_out_filenames
+% % Seems to work fine.
+
+% %2 Allocating LOTS of files.
+% \newcount\j_count
+% \newcount\k_count
+% \j_count=0
+% \k_count=1
+% \for(o){1}{48}{1}
+% \x_cs\open_pout{F-\strint{o}}{\jobname.\strint{o}}%
+% \ifodd \int{o} \else
+% \x_cs\pout_line{F-\the\k_count}{%
+% open=\strint{o} close=\the\j_count\space write=\the\k_count
+% }%
+% \multiply \k_count \thr@@
+% \advance \k_count \@ne
+% \d_count=\k_count
+% \divide \d_count \int{o}%
+% \multiply \d_count \int{o}%
+% \advance \k_count -\d_count
+% \advance \k_count \@ne
+% \advance \j_count \@ne
+% \x_cs\close_pout{F-\the\j_count}{Test data}%
+% \fi
+% \d_count=\int{o}%
+% \divide \d_count 8%
+% \multiply \d_count 8%
+% \advance \d_count -\int{o}%
+% \ifnum 0=\d_count \show_out_filenames \fi
+% \endfor(o)
+% % Seems to work fine as well.
+
+
+%% Part two---test of reimplemented \transformfont stuff
+%% Part two B---test of \recordtransforms stuff
+
+\recordtransforms{mapfrags.tex}
+\transformfont{v1901test1}{
+ \xscalefont{2000}{\reencodefont{t1c}{\frommtx{v1901test}}}
+}
+\transformfont{v1901test2}{
+ \yscalefont{500}{\xscalefont{2000}{\frommtx{v1901test}}}
+}
+\transformfont{v1901test3}{
+ \reencodefont{t1}{\slantfont{100}{\frommtx{v1901test}}}
+}
+\endrecordtransforms
+
+
+\bye
+
+%% Part three---test of reglyphing
+
+\reglyphfonts
+ \resetcommand\iftokeep#1\then{\ifnum 0<#1}
+ % This means that an AFM command will survive the conversion only if
+ % it refers to at least one renamed glyph and not refer to any killed
+ % glyph.
+
+% \offmtxcommand\setrawglyph
+% \offmtxcommand\setglyph
+% % This reglyphing file is inteded for extracting information from the
+% % AFM file of a Caps, Small caps, and Oldstyle figures fonts--with the
+% % intention to build a corresponding virtual font with glyphs that are
+% % present in the Regular and Expert Regular variants instead. Hence
+% % there is no need for \setrawglyph or \setglyph commands (the
+% % dimensions of the characters are known from the Reg. and Exp.Reg.
+% % AFM's), but the \setkern commands are most interesting (since 8x
+% % fonts don't contain any upper case letters, and hence has no kerning
+% % pairs between these and the small caps either).
+
+
+ \renameglyph{dollaroldstyle}{dollar}
+ \renameglyph{ampersandsmall}{ampersand}
+
+ \renameglyph{zerooldstyle}{zero}
+ \renameglyph{oneoldstyle}{one}
+ \renameglyph{twooldstyle}{two}
+ \renameglyph{threeoldstyle}{three}
+ \renameglyph{fouroldstyle}{four}
+ \renameglyph{fiveoldstyle}{five}
+ \renameglyph{sixoldstyle}{six}
+ \renameglyph{sevenoldstyle}{seven}
+ \renameglyph{eigtholdstyle}{eight}
+ \renameglyph{nineoldstyle}{nine}
+
+ \renameglyph{Asmall}{a}
+ \renameglyph{Bsmall}{b}
+ \renameglyph{Csmall}{c}
+ \renameglyph{Dsmall}{d}
+ \renameglyph{Esmall}{e}
+ \renameglyph{Fsmall}{f}
+ \renameglyph{Gsmall}{g}
+ \renameglyph{Hsmall}{h}
+ \renameglyph{Ismall}{i}
+ \renameglyph{Jsmall}{j}
+ \renameglyph{Ksmall}{k}
+ \renameglyph{Lsmall}{l}
+ \renameglyph{Msmall}{m}
+ \renameglyph{Nsmall}{n}
+ \renameglyph{Osmall}{o}
+ \renameglyph{Psmall}{p}
+ \renameglyph{Qsmall}{q}
+ \renameglyph{Rsmall}{r}
+ \renameglyph{Ssmall}{s}
+ \renameglyph{Tsmall}{t}
+ \renameglyph{Usmall}{u}
+ \renameglyph{Vsmall}{v}
+ \renameglyph{Wsmall}{w}
+ \renameglyph{Xsmall}{x}
+ \renameglyph{Ysmall}{y}
+ \renameglyph{Zsmall}{z}
+
+ \renameglyph{centoldstyle}{cent}
+
+ % \renameglyph{FIsmall}{fi}
+ % \renameglyph{FLsmall}{fl}
+ % These two aren't really necessary, since the ligature `fi' looks
+ % exactly as the letters `f'`i' next to each others.
+ \killglyph{fi}
+ \killglyph{fl}
+
+ \renameglyph{Gravesmall}{grave}
+ \renameglyph{Acutesmall}{acute}
+ \renameglyph{Circumflexsmall}{circumflex}
+ \renameglyph{Tildesmall}{tilde}
+ \renameglyph{Macronsmall}{macron}
+ \renameglyph{Brevesmall}{breve}
+ \renameglyph{Dotaccentsmall}{dotaccent}
+ \renameglyph{Dieresissmall}{dieresis}
+ \renameglyph{Ringsmall}{ring}
+ \renameglyph{Cedillasmall}{cedilla}
+ \renameglyph{Ogoneksmall}{ogonek}
+ \renameglyph{Caronsmall}{caron}
+
+ \renameglyph{AEsmall}{ae}
+ \renameglyph{dotlessIsmall}{dotlessi}
+ \renameglyph{Lslashsmall}{lslash}
+ \renameglyph{Oslashsmall}{oslash}
+ \renameglyph{OEsmall}{oe}
+ % \renameglyph{SSsmall}{germandbls}
+ % This isn't really needed in the AGaramond font family, since `SSsmall'
+ % looks exactly like `Ssmall'`Ssmall'
+ \killglyph{germandbls}
+
+ \renameglyph{Oacutesmall}{oacute}
+ \renameglyph{Odieresissmall}{odieresis}
+ \renameglyph{Ucircumflexsmall}{ucircumflex}
+
+ \renameglyph{Uacutesmall}{uacute}
+ \renameglyph{Eacutesmall}{eacute}
+ \renameglyph{Iacutesmall}{iacute}
+ \renameglyph{Icircumflexsmall}{icircumflex}
+
+ \renameglyph{Thornsmall}{thorn}
+ \renameglyph{Yacutesmall}{yacute}
+
+ \renameglyph{Ocircumflexsmall}{ocircumflex}
+ \renameglyph{Otildesmall}{otilde}
+ \renameglyph{Ntildesmall}{ntilde}
+ \renameglyph{Ydieresissmall}{ydieresis}
+ \renameglyph{Ethsmall}{eth}
+ \renameglyph{Acircumflexsmall}{acircumflex}
+ \renameglyph{Aringsmall}{aring}
+ \renameglyph{Ccedillasmall}{ccedilla}
+
+ \renameglyph{Ugravesmall}{ugrave}
+ \renameglyph{Zcaronsmall}{zcaron}
+ \renameglyph{Idieresissmall}{idieresis}
+ \renameglyph{Agravesmall}{agrave}
+
+ \renameglyph{Ogravesmall}{ograve}
+
+ \renameglyph{Udieresissmall}{udieresis}
+ \renameglyph{Edieresissmall}{edieresis}
+ \renameglyph{Aacutesmall}{aacute}
+ \renameglyph{Igravesmall}{igrave}
+ \renameglyph{Idieresissmall}{idieresis}
+ \renameglyph{Adieresissmall}{adieresis}
+
+ \renameglyph{Scaronsmall}{scaron}
+ \renameglyph{Egravesmall}{egrave}
+ \renameglyph{Atildesmall}{atilde}
+ \renameglyph{Ecircumflexsmall}{ecircumflex}
+
+ \reglyphfont{K-padrc}{gdsc}
+ \reglyphfont{K-padsc}{padsc8a}
+\endreglyphfonts
+
+
+\bye \ No newline at end of file
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1902test.tex b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1902test.tex
new file mode 100644
index 00000000000..7274fb76597
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1902test.tex
@@ -0,0 +1,11 @@
+\input fontinst.sty
+
+\generalpltomtx{cmr5}{cmr5;1}{pl}{OT1}
+\generalpltomtx{padr9d}{padr9d;1}{vpl}{}
+\generalpltomtx{padr9d}{padr9d;2}{vpl}{OT1}
+
+\transformfont{cmr5;2}{\fromplgivenetx{cmr5}{OT1}}
+\transformfont{padr9d;3}{\fromvpl{padr9d}}
+\transformfont{padr9d;4}{\fromvplgivenetx{padr9d}{OT1}}
+
+\bye \ No newline at end of file
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1905test.tex b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1905test.tex
new file mode 100644
index 00000000000..47117acc5fb
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1905test.tex
@@ -0,0 +1,22 @@
+\input fontinst.sty
+\catcode`\_=11\catcode`\ =9\catcode`\^^M=9
+\catcode`\~=10\catcode`\@=11
+
+\fontinst_error{Hungarian}{
+ I~will~not~buy~this~record,\message_break
+ it~is~scratched
+}\error_help_a
+
+\fontinst_warning{Hungarian}{Your~hovercraft~is~full~of~eels}
+
+\fontinst_info{Hungarian}{That~will~be~six~pence,~please}
+
+\fontinst_warning_no_line{Hungarian}{
+ Do~you~want~to~come~home~to~my~place\message_break
+ and~pantsy~pantsy?
+}
+
+
+
+
+\bye \ No newline at end of file
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1906test.mtx b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1906test.mtx
new file mode 100644
index 00000000000..94306a07b32
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1906test.mtx
@@ -0,0 +1,64 @@
+\relax
+% v1906test.mtx
+%
+% A test of the nokerning commands and the \glyphbboxright IE.
+
+
+\metrics
+
+\for(i){0}{20}{1}
+ \setglyph{c\strint{i}}
+ \glyphrule{20}{\mul{\add{\int{i}}{1}}{20}}
+ \movert{\mul{20}{\int{i}}}
+ \endsetglyph
+\endfor(i)
+
+
+\setglyph{d}
+ \for(i){5}{10}{1}
+ \glyphpcc{c\strint{i}}{\int{i}}{\int{i}}
+ \endfor(i)
+ \resetint{j}{\glyphbboxright}
+ \immediate\write16{\string\glyphbboxright=\strint{j}}
+ \glyph{c20}{1000}
+ \resetint{j}{\glyphbboxright}
+ \immediate\write16{\string\glyphbboxright=\strint{j}}
+\endsetglyph
+
+
+\for(i){0}{20}{1}
+ \for(j){0}{20}{1}
+ \setkern{c\strint{i}}{c\strint{j}}{\mul{\int{i}}{\int{j}}}
+ \endfor(j)
+\endfor(i)
+
+\noleftkerning{c1,c3,c5,c7,c9,c11,c13,c15,c17,c19}
+\immediate\write16{\expandafter\meaning\csname a_macro\endcsname}
+\norightkerning{c1,c3,c5,c7,c9}
+
+% \resetint{i}{0}
+% \loop
+% \setkern{c\strint{i}}{c\strint{i}}{-50}
+% \resetint{j}{\sub{20}{\int{i}}}
+% \resetkern{c\strint{i}}{c\strint{j}}{-100}
+% \ifnum 20>\int{i}
+% \resetint{i}{\add{\int{i}}{1}}
+% \repeat
+
+
+% \resetint{i}{0}
+% \loop
+% \ifiskern{c3}{c\strint{i}}\then
+% \resetint{T}{\kerning{c3}{c\strint{i}}}
+% \message{c3:c\strint{i} has kern \strint{T} units^^J}
+% \else
+% \message{c3:c\strint{i} no kern^^J}
+% \fi
+% \ifnum 20>\int{i}
+% \resetint{i}{\add{\int{i}}{1}}
+% \repeat
+
+
+
+\endmetrics
+
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1906test.tex b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1906test.tex
new file mode 100644
index 00000000000..92ed6281198
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1906test.tex
@@ -0,0 +1,12 @@
+%&Plain
+% Test of fontinst v1.906.
+% Begun 1999/08/01.
+\input fontinst.sty
+
+\installfonts
+ \installfamily{U}{ztest1}{}
+ \installfont{v1906test}{v1906test}{v1906test}{U}{ztest1}{m}{n}{}
+\endinstallfonts
+
+\bye
+
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1913test.tex b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1913test.tex
new file mode 100644
index 00000000000..b9382cdf898
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1913test.tex
@@ -0,0 +1,21 @@
+\input fontinst.sty
+
+\recordtransforms{v1913test.recs}
+
+\transformfont{padr8r}{\reencodefont{8r}{\fromafm{padr8a}}}
+\transformfont{padr8r-ys}{\yscalefont{\div{397000}{663}}{\frommtx{padr8r}}}
+\reglyphfonts
+ \renameglyph{oneoldstyle}{one}
+ \reglyphfont{padr8r-ys2}{padr8r-ys}
+\endreglyphfonts
+
+\installfonts
+ \installfamily{T1}{pad}{}
+ \installfamily{8r}{pad}{}
+ \installfont{padr9d}{padr8r,padr8r-ys2,padr8x,latin}{t1j}{T1}{pad}{m}{n}{}
+ \installrawfont{padr8r2}{padr8r-ys}{8r}{8r}{pad}{m}{n}{}
+\endinstallfonts
+
+\endrecordtransforms
+
+\bye \ No newline at end of file
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1914test.tex b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1914test.tex
new file mode 100644
index 00000000000..73b271b986c
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1914test.tex
@@ -0,0 +1,50 @@
+\input fontinst.sty
+
+%1
+\recordtransforms{v1914test.recs}
+
+\transformfont{padr8r}{\reencodefont{8r}{\fromafm{padr8a}}}
+\for(x){0}{2}{1}
+ \for(y){0}{2}{1}
+ \transformfont{p-ad-rr--8r--\strint{x}=\strint{y}}{
+ \xscalefont{\add{\mul{\int{x}}{300}}{700}}{
+ \yscalefont{\add{\mul{\int{y}}{300}}{700}}{
+ \frommtx{padr8r}}}}
+ \endfor(y)
+\endfor(x)
+
+\installfonts
+ \installfamily{T1}{padxy}{}
+ \installfamily{8r}{padxy}{}
+ \for(x){0}{2}{1}
+ \for(y){0}{2}{1}
+ \installfont{p-ad-rr--8t--\strint{x}=\strint{y}}
+ {p-ad-rr--8r--\strint{x}=\strint{y},latin}
+ {t1}{T1}{padxy}{m\strint{x}\strint{y}}{n}{}
+ \installrawfont{p-ad-rr--8r--\strint{x}=\strint{y}}
+ {p-ad-rr--8r--\strint{x}=\strint{y},8r}
+ {8r}{8r}{padxy}{m\strint{x}\strint{y}}{n}{}
+ \endfor(y)
+ \endfor(x)
+\endinstallfonts
+
+\endrecordtransforms
+
+% % \tracingmacros=1\tracingcommands=2
+% %2
+% \installfonts
+% \installrawfont{cmr5}{cmr5,\metrics
+% \resetint{xheight}{\mul{\int{xheight}}{2}},kernoff}{ot1}{OT1}
+% {cmr}{m}{n}{5}
+% \installfont{padr18t}{padr8r scaled 856,%
+% \metrics \message{%
+% \ifisint{rawscale}\then\strint{rawscale}\else None\fi
+% }%
+% \expandafter\show \csname g-A\endcsname
+% ,latin,%
+% \metrics \message{%
+% \ifisint{rawscale}\then\strint{rawscale}\else None\fi
+% }}{t1}{T1}{pad}{m}{ns}{}
+% \endinstallfonts
+
+\bye \ No newline at end of file
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1914testmap.tex b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1914testmap.tex
new file mode 100644
index 00000000000..9b1921bbc8d
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1914testmap.tex
@@ -0,0 +1,17 @@
+\input finstmsc.sty
+
+\resetstr{PSfontsuffix}{.pfb}
+\adddriver{dvipdfm}{v1914test.dvipdfm}
+\adddriver{pltotf}{v1914test.sh} % v1.915 feature, actually
+\input v1914test.recs
+\donedrivers
+
+\AssumeLWFN
+\adddriver{dvips}{v1914test.map}
+\adddriver{debug}{v1914test.debug}
+\debugvalue{PS_font_file}
+\input v1914test.recs
+\donedrivers
+
+
+\bye
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1914testshow.tex b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1914testshow.tex
new file mode 100644
index 00000000000..bd7a957b0a8
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1914testshow.tex
@@ -0,0 +1,22 @@
+\documentclass{article}
+
+
+\newcommand\fontxy[2]{%
+ \usefont{T1}{padxy}{m#1#2}{n}%
+ Flygande b\"ackasiner s\"oka hwila p\r{a} mjuka tuvor%
+}
+
+
+\begin{document}
+
+$$
+ \hss
+ \begin{tabular}{lll}
+ \fontxy00& \fontxy10& \fontxy20\\
+ \fontxy01& \fontxy11& \fontxy21\\
+ \fontxy02& \fontxy12& \fontxy22
+ \end{tabular}
+ \hss
+$$
+\end{document}
+
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1915test.tex b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1915test.tex
new file mode 100644
index 00000000000..b60946a402b
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1915test.tex
@@ -0,0 +1,25 @@
+\input fontinst.sty
+
+% %1: Catcodes
+% \def\do#1{Catcode of `\string#1 = \the\catcode`#1 ^^J}
+% \def\showcatcodes{\message{\do{\ }\do{\^^M}\do{\@}\do{\_}\do{\~}}}
+%
+% \showcatcodes
+% \show\fontinstcc
+% \fontinstcc
+% \showcatcodes
+% \show\normalcc
+% \normalcc
+% \showcatcodes
+
+%2: Aliased glyphs
+\input Knuth:fontinst:New.fontinst:cyrfinst:etc:fnstcorr.tex
+\transformfont{padsc8r}{\reencodefont{8r}{\fromafm{padsc8a}}}
+\def\renameglyph#1#2{\galias{#1}{#2}}
+\input csc2x.tex
+\transformfont{padscx8r}{\reencodefont{8r}{\fromafm{padsc8a}}}
+% När glyfnamnen har tagits bort från de omkodade PL-filerna så är
+% de i allt väsentligt lika. Sålunda tycks det fungera!
+
+
+\bye \ No newline at end of file
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1915testmap.tex b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1915testmap.tex
new file mode 100644
index 00000000000..7e83526cd40
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1915testmap.tex
@@ -0,0 +1,9 @@
+\input finstmsc.sty
+\adddriver{pltotf}{v1915test.sh}
+\input v1914test.recs
+\donedrivers
+\setstr{TFMfileprefix}{:a:b:c:}
+\adddriver{pltotf}{v1915test.sh2}
+\input v1913test.recs
+\donedrivers
+\bye
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1916test.mtx b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1916test.mtx
new file mode 100644
index 00000000000..1829c79d02d
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1916test.mtx
@@ -0,0 +1,23 @@
+\relax
+
+\documentclass[twocolumn]{article}
+\usepackage{fontdoc}
+
+\errorcontextlines=999
+
+\begin{document}
+
+\metrics
+
+\foreach(glyph){a,b,c,d,tilde,\strint{a},db\str{a}ef,AB\str{glyph}CD}
+ \resetglyph{\str{glyph}}
+ \glyph{\str{glyph}}{1000}
+ \resetitalic{0}
+ \endresetglyph
+\endfor(glyph)
+
+
+\endmetrics
+
+
+\end{document}
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1916test.tex b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1916test.tex
new file mode 100644
index 00000000000..56f26a51b0f
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1916test.tex
@@ -0,0 +1,14 @@
+% v1916test.tex
+
+\input fontinst.sty
+
+% \half and \otherhalf
+\fontinstcc
+\for(i){-5}{5}{1}
+ \eval_expr_to\b_count{\half{\int{i}}}
+ \eval_expr{\otherhalf{\int{i}}}
+ \immediate\write16{\strint{i}:~\the\b_count \space+~ \the\result}
+\endfor(i)
+\normalcc
+
+\bye
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1916test2.tex b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1916test2.tex
new file mode 100644
index 00000000000..8cc954f2615
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1916test2.tex
@@ -0,0 +1,27 @@
+%&Plain
+\input fontinst.sty
+
+% %1 \ifareglyphs
+%
+% \setrawglyph{f}{xfont}{10pt}{102}{375}{750}{375}{50}
+% \setrawglyph{g}{xfont}{10pt}{102}{375}{750}{375}{50}
+% \setrawglyph{h}{xfont}{10pt}{102}{375}{750}{375}{50}
+%
+% \ifareglyphs{}\then True \else False \fi
+% \ifareglyphs{a}\then True \else False \fi
+% \ifareglyphs{f}\then True \else False \fi
+% \ifareglyphs{f,a}\then True \else False \fi
+% \ifareglyphs{a,f}\then True \else False \fi
+% \ifareglyphs{f,g}\then True \else False \fi
+% \ifareglyphs{f,g,a}\then True \else False \fi
+
+%2 \setfontdimen
+\generalpltomtx{ecrm1000}{ecrm1000}{pl}{t1draft}
+\generalpltomtx{ecss1000}{ecss1000}{pl}{t1draft}
+\transformfont{ecdh-shrunk}{%
+ \yscalefont{500}{\fromplgivenetx{ecdh1000}{t1draft}}%
+}
+
+\bye
+
+
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1923test.tex b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1923test.tex
new file mode 100644
index 00000000000..ede00d90444
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1923test.tex
@@ -0,0 +1,47 @@
+%&Plain
+
+\input fontinst.sty
+
+% %1
+% \transformfont{padr8r}{\reencodefont{8r}{\fromafm{padr8a}}}
+% \transformfont{padri8r}{\reencodefont{8r}{\fromafm{padri8a}}}
+%
+% \installfonts
+% \installfamily{T1}{pad2}{}
+% \installfont{zpad2i8t}{padri8r scaled 1009,%
+% padr8r scaled 999 suffix -upright scaled 1009,\metrics
+% % \expandafter\show \csname r-T-upright\endcsname
+% \unsetglyph{parenleft}
+% \setglyph{parenleft}
+% \glyph{parenleft-upright}{1000}
+% \endsetglyph
+% \resetglyph{parenright}
+% \glyph{parenright-upright}{1000}
+% \endresetglyph,latin}{t1}{T1}{pad2}{m}{it}{}
+% \endinstallfonts
+
+% %2
+%
+% \installfonts
+% \installfamily{U}{fad}{}
+% \installfont{fadrr}{fadrr}{textfdim,fadrr mtxasetx}{U}{fad}{m}{n}{}
+% \endinstallfonts
+
+% %3
+% \transformfont{pagk8r}{\reencodefont{8r}{\fromafm{pagk8a}}}
+% \installfonts
+% \installfont{pagk8t}{pagk8r,newlatin}{t1}{T1}{pag}{m}{n}{}
+% \endinstallfonts
+
+%4
+\installfonts
+ \installfont{test}{rsfs10 encoding rsfs,cmsy10}{oms}{OMS}{xxx}{m}{n}{}
+\endinstallfonts
+% %4b
+% \installfonts
+% \installfont{test}{cmsy10,rsfs10 encoding rsfs}{oms}{OMS}{xxx}{m}{n}{}
+% \endinstallfonts
+
+
+\bye
+
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1927test.tex b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1927test.tex
new file mode 100644
index 00000000000..b21f16bf60e
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1927test.tex
@@ -0,0 +1,18 @@
+%&Plain
+
+\input finstmsc.sty
+
+% %1
+% \etxtoenc{ot1}{temp}
+
+%2
+\storemapdata{a}{\fromafm{a}{XX}}{}
+\storemapdata{a}{\fromafm{a}{XX}}{}
+\storemapdata{a}{\fromafm{a}{XY}}{}
+\storemapdata{a}{\fromafm{a}{XX}}{}
+\storemapdata{a}{\fromafm{a}{XX}}{\reencodefont{8r}}
+
+
+
+\bye
+
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1928test.tex b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1928test.tex
new file mode 100644
index 00000000000..8242cc3438c
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1928test.tex
@@ -0,0 +1,13 @@
+%&Plain
+
+\input finstmsc.sty
+
+%1
+\etxtocmap{t1draft}{temp}
+\etxtocmap{ot1draft}{ot1}
+\etxtocmap{omsdraft}{oms}
+
+
+
+\bye
+
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/test/v1928test2.tex b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1928test2.tex
new file mode 100644
index 00000000000..c9b099e643c
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/fontinst/base/test/v1928test2.tex
@@ -0,0 +1,32 @@
+\documentclass{article}
+
+
+
+
+\def\FontWithCMap#1#2#3{%
+ \font#1=#2\relax
+ \immediate\pdfobj stream file {#3}%
+ \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
+}
+\def\AddCMapToFont#1#2{%
+ \immediate\pdfobj stream file {#2}%
+ \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
+}
+
+
+\begin{document}
+
+
+\FontWithCMap\test{cmr12}{ot1.cmap}
+\test abcdef ghijkl mnopqr stuvwx yz fi fl ffi ffl
+
+
+\begin{math}
+ a
+ \AddCMapToFont{\textfont2}{oms.cmap}
+ \mathcal{A} - \mathcal{B} + \mathcal{C} * \mathcal{D} \cdot
+ \mathcal{E} \bullet \mathcal{F} \spadesuit
+\end{math}
+
+
+\end{document}