summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc')
-rw-r--r--Master/texmf-dist/doc/fontinst/base/README15
-rw-r--r--Master/texmf-dist/doc/fontinst/base/encspecs/encspecs.tex85
-rw-r--r--Master/texmf-dist/doc/fontinst/base/encspecs/ot1draft.etx42
-rw-r--r--Master/texmf-dist/doc/fontinst/base/encspecs/t1draft.etx41
-rw-r--r--Master/texmf-dist/doc/fontinst/base/manual/fontinst.dvibin0 -> 207780 bytes
-rw-r--r--Master/texmf-dist/doc/fontinst/base/manual/fontinst.pdfbin317633 -> 381721 bytes
-rw-r--r--Master/texmf-dist/doc/fontinst/base/manual/fontinst.tex1297
-rw-r--r--Master/texmf-dist/doc/fontinst/base/manual/intro98.dvibin0 -> 62532 bytes
-rw-r--r--Master/texmf-dist/doc/fontinst/base/manual/intro98.pdfbin168296 -> 172067 bytes
-rw-r--r--Master/texmf-dist/doc/fontinst/base/talks/et99-font-tables.pdfbin0 -> 201767 bytes
-rw-r--r--Master/texmf-dist/doc/fontinst/base/talks/et99-font-tutorial.pdfbin0 -> 242186 bytes
-rw-r--r--Master/texmf-dist/doc/fontinst/base/test/v1901test.mtx22
-rw-r--r--Master/texmf-dist/doc/fontinst/base/test/v1906test.mtx64
-rw-r--r--Master/texmf-dist/doc/fontinst/base/test/v1914testmap.tex10
-rw-r--r--Master/texmf-dist/doc/fontinst/base/test/v1914testshow.tex22
-rw-r--r--Master/texmf-dist/doc/fontinst/base/test/v1916test.mtx23
-rw-r--r--Master/texmf-dist/doc/fontinst/base/test/v1923test.tex4
-rw-r--r--Master/texmf-dist/doc/fontinst/base/test/v1928test.tex13
-rw-r--r--Master/texmf-dist/doc/fontinst/base/test/v1928test2.tex32
19 files changed, 1258 insertions, 412 deletions
diff --git a/Master/texmf-dist/doc/fontinst/base/README b/Master/texmf-dist/doc/fontinst/base/README
index 6c5acf8fc52..9e5f39cde19 100644
--- a/Master/texmf-dist/doc/fontinst/base/README
+++ b/Master/texmf-dist/doc/fontinst/base/README
@@ -16,10 +16,13 @@ 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, nor automatically search for files
-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.
+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
@@ -31,7 +34,7 @@ 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, many commands still lack description and
+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:
@@ -109,5 +112,5 @@ General information about the mailing list is at:
http://tug.org/mailman/listinfo/fontinst
-7 August 2004,
+16 December 2004,
Lars Hellstr\"om
diff --git a/Master/texmf-dist/doc/fontinst/base/encspecs/encspecs.tex b/Master/texmf-dist/doc/fontinst/base/encspecs/encspecs.tex
index 3d1027d9415..88911506970 100644
--- a/Master/texmf-dist/doc/fontinst/base/encspecs/encspecs.tex
+++ b/Master/texmf-dist/doc/fontinst/base/encspecs/encspecs.tex
@@ -44,7 +44,21 @@
}
\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{\|}
@@ -79,6 +93,9 @@
\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
@@ -143,7 +160,11 @@ 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.
+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
@@ -302,8 +323,8 @@ 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, but in the current
-implementation it is still operating on material encoded according to
+completely independent of the font encoding, although the last time I
+checked it was still operating on material encoded according to
a font encoding.
@@ -416,10 +437,31 @@ this is to use the |\Unicode| command, which has the syntax
\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 character does not
-have a Unicode code point then the specification should simply be a
-description in text which identifies the character. Such descriptions
-are written using the |\comment| command
+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}
@@ -444,8 +486,8 @@ 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, whereas the `ij'
-ligature is odd.
+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
@@ -885,15 +927,9 @@ so that they do match.
\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 full syntax of the \ETX\ format can\footnote{Well, it should be,
-only the manual hasn't been updated for a while now, so some things
-are missing from it. They're all documented in the \package{fontinst}
-sources~\cite{fontinst-pre}, though.} be found in the \package{fontinst}
-manual~\cite{fontinst-man}, but font encoding specifications only need
-a subset of that. The \meta{body} is a sequence of
-\meta{encoding command}s, each of which should be one of the
-following:
+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}\\
@@ -905,12 +941,13 @@ following:
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.
+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}\\
@@ -941,6 +978,10 @@ 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}
@@ -1257,7 +1298,7 @@ the above conditions reformulated.
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-prerelease/source}{%
+ \ctanref{fonts/utilities/fontinst/source}{%
\textsc{ctan}:\discretionary{}{}{\thinspace}%
\texttt{fonts}\slash \texttt{utilities}\slash
\texttt{fontinst}\slash \texttt{source}/}.
@@ -1266,7 +1307,7 @@ the above conditions reformulated.
Ad\-di\-son--Wes\-ley, 1991;
volume A of \textit{Computers and typesetting}.
\bibitem{LaTeXCompanion}
- Frank Mittelbac and Michel Goossens, with Johannes Braams,
+ 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.
diff --git a/Master/texmf-dist/doc/fontinst/base/encspecs/ot1draft.etx b/Master/texmf-dist/doc/fontinst/base/encspecs/ot1draft.etx
index 8fbdb57c29c..6f07bbd6f4a 100644
--- a/Master/texmf-dist/doc/fontinst/base/encspecs/ot1draft.etx
+++ b/Master/texmf-dist/doc/fontinst/base/encspecs/ot1draft.etx
@@ -1,6 +1,6 @@
\relax
\documentclass[twocolumn]{article}
-\usepackage[specification]{fontdoc}[2001/06/01]
+\usepackage[specification]{fontdoc}[2004/11/28]
\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}}
@@ -10,7 +10,7 @@
\title{\texttt{OT1} encoding draft specification}
\author{Lars Hellstr\"om}
-\date{2001/09/09}
+\date{2004/12/16}
\maketitle
\begin{abstract}
@@ -34,7 +34,7 @@
\end{abstract}
\encoding
-\needsfontinstversion{1.918}
+\needsfontinstversion{1.928}
@@ -664,7 +664,10 @@ slot~\ref{underscore} is ordinary, not mandatory.
\nextslot{11}
\setslot{ff}
- \Unicode{FB00}{LATIN SMALL LIGATURE 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}
@@ -672,25 +675,39 @@ slot~\ref{underscore} is ordinary, not mandatory.
\endsetslot
\setslot{fi}
- \Unicode{FB01}{LATIN SMALL LIGATURE 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}
- \Unicode{FB02}{LATIN SMALL LIGATURE 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}
- \Unicode{FB03}{LATIN SMALL LIGATURE 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}
- \Unicode{FB04}{LATIN SMALL LIGATURE 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
@@ -967,6 +984,15 @@ 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}
diff --git a/Master/texmf-dist/doc/fontinst/base/encspecs/t1draft.etx b/Master/texmf-dist/doc/fontinst/base/encspecs/t1draft.etx
index d160fab4e02..d82c9e53ed0 100644
--- a/Master/texmf-dist/doc/fontinst/base/encspecs/t1draft.etx
+++ b/Master/texmf-dist/doc/fontinst/base/encspecs/t1draft.etx
@@ -1,6 +1,6 @@
\relax
\documentclass[twocolumn]{article}
-\usepackage[specification]{fontdoc}[2001/06/18]
+\usepackage[specification]{fontdoc}[2004/11/28]
\usepackage{shortvrb}
\MakeShortVerb{\|}
@@ -23,7 +23,7 @@
\encoding
-\needsfontinstversion{1.918}
+\needsfontinstversion{1.928}
\begincomment
\section{Mandatory characters}
@@ -688,6 +688,11 @@ is less of a disadvantage.
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}
@@ -1229,9 +1234,13 @@ therefore be replaced by others or completely left out if the
ligature programs are modified accordingly.
\endcomment
+
\nextslot{27}
\setslot{ff}
- \Unicode{FB00}{LATIN SMALL LIGATURE 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}
@@ -1239,25 +1248,39 @@ ligature programs are modified accordingly.
\endsetslot
\setslot{fi}
- \Unicode{FB01}{LATIN SMALL LIGATURE 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}
- \Unicode{FB02}{LATIN SMALL LIGATURE 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}
- \Unicode{FB03}{LATIN SMALL LIGATURE 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}
- \Unicode{FB04}{LATIN SMALL LIGATURE 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
@@ -1414,6 +1437,10 @@ it's not to be used for ranges. /LH
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}
diff --git a/Master/texmf-dist/doc/fontinst/base/manual/fontinst.dvi b/Master/texmf-dist/doc/fontinst/base/manual/fontinst.dvi
new file mode 100644
index 00000000000..ae8133acad4
--- /dev/null
+++ b/Master/texmf-dist/doc/fontinst/base/manual/fontinst.dvi
Binary files differ
diff --git a/Master/texmf-dist/doc/fontinst/base/manual/fontinst.pdf b/Master/texmf-dist/doc/fontinst/base/manual/fontinst.pdf
index af1d415db39..20c50851cdd 100644
--- a/Master/texmf-dist/doc/fontinst/base/manual/fontinst.pdf
+++ b/Master/texmf-dist/doc/fontinst/base/manual/fontinst.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/fontinst/base/manual/fontinst.tex b/Master/texmf-dist/doc/fontinst/base/manual/fontinst.tex
index b87c937e515..19f5f012231 100644
--- a/Master/texmf-dist/doc/fontinst/base/manual/fontinst.tex
+++ b/Master/texmf-dist/doc/fontinst/base/manual/fontinst.tex
@@ -2,9 +2,9 @@
%%% @LaTeX-file{
%%% author = "Alan Jeffrey and Rowland McDonnell and
%%% Ulrik Vieth and Lars Hellstr{\"o}m",
-%%% version = "1.927",
-%%% date = "6 August 2004",
-%%% time = "22:10:00 CEST",
+%%% version = "1.928",
+%%% date = "2004-12-16",
+%%% time = "12:18:32 +01:00",
%%% filename = "fontinst.tex",
%%% email = "fontinst@tug.org",
%%% checksum = "",
@@ -29,7 +29,10 @@
\usepackage[OT1]{fontenc}
\usepackage{url,xspace}
\usepackage{graphicx}
-% \renewcommand\rmdefault{ppl}
+
+\IfFileExists{palatino.flag}{
+ \renewcommand\rmdefault{ppl}
+}
%\renewcommand\rmdefault{padx}
%\renewcommand\rmdefault{pmnx}
@@ -128,7 +131,34 @@
% % \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.
@@ -158,6 +188,8 @@
\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}
@@ -302,9 +334,7 @@
\author{Alan Jeffrey\and Rowland McDonnell\and Lars Hellstr\"om}
\illustration{roadmap.eps}
\version{1.9}
-\date{July 2004}
-
-\errorcontextlines=999
+\date{December 2004}
\begin{document}
@@ -722,10 +752,10 @@ Such blocks have the structure
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}
+\begin{decl*}
|\installfonts|\\
|\endinstallfonts|
-\end{decl}
+\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
@@ -741,11 +771,11 @@ combinations of encoding and font family that appeared in the
\end{hackernote}
The most important \meta{install command} is
-\begin{decl}
+\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}
+\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
@@ -764,14 +794,14 @@ 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 T1-encoded Times Roman font
+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 OT1-encoded Times Roman font with a scaled version of
-Symbol for the Greek letters, you say:
+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}{}
@@ -780,18 +810,18 @@ Symbol for the Greek letters, you say:
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}
+\begin{decl*}
\meta{filename}\meta{optional modifiers}\\
|\metrics| \meta{metric commands}
-\end{decl}
+\end{decl*}
\NEWfeature{v1.923}
where an \meta{optional modifier} is one of
-\begin{decl}
+\begin{decl*}
\verb*| scaled |\meta{rawscale factor}\\
\verb*| suffix |\meta{glyph name suffix}\\
\verb*| encoding |\meta{etx}\\
\verb*| option |\meta{string}
-\end{decl}
+\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
@@ -837,23 +867,23 @@ whether a particular string has been supplied as an option.
The elements in the \meta{etx-list} have fewer variants, but there is
still a general syntax
-\begin{decl}
+\begin{decl*}
\meta{filename}\meta{optional modifiers}
-\end{decl}
-The only \meta{optional modifier} permitted is however
-\begin{decl}
- \verb*| mtxasetx|
-\end{decl}
-and that is probably only relevant for use with |\installrawfont| (see
-below).
+\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}
+\begin{decl}[v1.912]
|\installfontas|\arg{font-name}\\%
\hspace*{1.5em}\arg{encoding}\arg{family}\arg{series}%
\arg{shape}\arg{size}
\end{decl}
-\NEWfeature{v1.912}
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
@@ -874,7 +904,7 @@ 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 8r-encoded Times Roman raw font
+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}
@@ -882,10 +912,9 @@ For example, to install an 8r-encoded Times Roman raw font
\end{verbatim}
The effect of a
-\begin{decl}
+\begin{decl*}[v1.923]
\meta{filename}\verb*| mtxasetx|
-\end{decl}
-\NEWfeature{v1.923}
+\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
@@ -928,8 +957,8 @@ 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 Cork-encoded Times
-family, you say:
+For example, to produces a \LaTeX\ family with the \texttt{T1}-encoded
+Times family, you say:
\begin{verbatim}
\installfamily{T1}{ptm}{}
\end{verbatim}
@@ -943,6 +972,14 @@ 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}
+
@@ -957,14 +994,14 @@ 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}.
-A \m{transformed font} is given by the following commands:
-\begin{decl}
+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}
+\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,
@@ -977,21 +1014,21 @@ 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}
+\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}
+\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}
+\begin{decl*}
|\reencodefont|\arg{etx}\arg{transformed font}
-\end{decl}
+\end{decl*}
This rearranges the encoding vector of \m{transformed font} to match
the encoding given by the \etx file.
@@ -999,12 +1036,16 @@ 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}}}}
+ \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 same transformation
-can also be achieved in two steps:
+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}}}
@@ -1019,6 +1060,40 @@ 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}
@@ -1069,8 +1144,8 @@ 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 commands for it. For
-example, \url{fontinst.sty} declares the following sizes:
+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>>}
@@ -1090,7 +1165,7 @@ example, \url{fontinst.sty} declares the following sizes:
\begin{decl}
|\declareencoding|\arg{string}\arg{etx}
\end{decl}
-This declares which \etx file corresponds to which encoding
+This declares which \etx file corresponds to which \texttt{codingscheme}
string. For example, \url{fontinst.sty} declares the following
encoding strings:
\begin{verbatim}
@@ -1112,16 +1187,14 @@ encoding strings:
\subsection{Other}
-The following commands belong to this section, but there is currently
-no description of them here.
+The following commands also belong to this section, but there is
+currently no description of them here.
|\afmtomtx|\marg{afmfile}\marg{mtxfile}
|\endrecordtransforms|
-|\endreglyphfonts|
-
|\etxtopl|\marg{encoding list}\marg{plfile}
|\etxtovpl|\marg{encoding list}\marg{vplfile}
@@ -1130,10 +1203,6 @@ no description of them here.
|\generalpltomtx|\marg{plfile}\marg{mtxfile}\marg{plsuffix}\marg{opt-enc}
-|\killglyph|\marg{glyph}
-
-|\killglyphweighted|\marg{glyph}\marg{weight}
-
|\latinfamily|\marg{family}\marg{commands}
|\mtxtomtx|\marg{source MTX}\marg{destination MTX}
@@ -1142,69 +1211,189 @@ no description of them here.
|\NOFILES|
-|\offmtxcommand|\marg{command}
+|\recordtransforms|\marg{filename}
-|\onmtxcommand|\marg{command}
-|\recordtransforms|\marg{filename}
-|\reglyphfont|\marg{destination font}\marg{source font}
-|\reglyphfonts|
+\section{Mapmaking commands}
+\label{Sec:Mapmaking}
-|\renameglyph|\marg{to}\marg{from}
+The commands described in this section are for use with command files
+that input \texttt{finstmsc.sty}.
-|\renameglyphweighted|\marg{to}\marg{from}\marg{weight}
+\subsection{Mapfile command reference}
+For an introduction to making map file entries, see
+Subsection~\ref{Ssec:MapFragments}.
-\section{Mapmaking commands}
+\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.
-The following commands belong to this section, but there is currently
-no description of them here. Note that several of them have a
-different syntax and meaning than they do in fontmaking command files.
+\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.
-|\adddriver|\marg{driver name}\marg{fragment file name}
+\begin{decl}
+ |\donedrivers|
+\end{decl}
+This closes all files open for receiving mapfile entries.
-|\AssumeAMSBSYY|
-|\AssumeBaKoMa|
+\subsection{Drivers}
-|\AssumeLWFN|
+The \meta{driver name}s that may be used with |\adddriver| are:
-|\AssumeMetafont|
+\begin{decl}
+ |dvips|
+\end{decl}
+The \dvips driver. The mapfiles generated are useful also with pdf\TeX.
-|\debugvalue|\arg{name}
+\begin{decl}
+ |dvipdfm|
+\end{decl}
+The \setpackagename{dvipdfm} \dvi-to-\pdf driver. Not much tested,
+but appears to work.
-|\declarepsencoding|\marg{etx}\marg{postscript name}\marg{action}
+\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.
-|\donedrivers|
+\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.
-|\download|\marg{file}
-|\enctoetx|\marg{encfile}\marg{etxfile}
+\subsection{Configuration commands}
-|\etxtoenc|\marg{etxfile}\marg{encfile}
+The following commands configure the generation of mapfile entries,
+mostly with respect to how various pieces of information are deduced
+from other pieces.
-|\fromafm|\marg{AFM name}\marg{PS name}
+\begin{decl}
+ |\AssumeAMSBSYY|\\
+ |\AssumeBaKoMa|\\
+ |\AssumeLWFN|\\
+ |\AssumeMetafont|
+\end{decl}
-|\frompl|\marg{PL name}
+\begin{decl}
+ |\declarepsencoding|\marg{etx}\marg{postscript name}\marg{action}
+\end{decl}
-|\frommtx|\marg{MTX name}
+\begin{decl}
+ |\specifypsfont|\marg{PS font name}\marg{actions}
+\end{decl}
-|\fromvpl|
-|\makemapentry|\marg{\TeX\ font name}
+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.
-|\reencodefont|\marg{etx}
+Additional actions could be added in the future, if there is a need
+for them.
-|\reglyphfont|
-|\specifypsfont|\marg{PS font name}\marg{actions}
+\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.
-|\storemapdata|\marg{\TeX\ font name}\marg{source}\marg{transforms}
+\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.
-|\transformfont|\marg{x-scale}\marg{slant-scale}
@@ -1237,11 +1426,11 @@ 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}
+\begin{decl*}
|\setstr|\arg{name}\arg{string expression}\\
|\resetstr|\arg{name}\arg{string expression}\\
|\unsetstr|\arg{name}
-\end{decl}
+\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
@@ -1257,68 +1446,20 @@ 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|.
-% \subsection{Argument types}
-%
-% There are roughly five types of arguments that \fontinst
-% commands can take. These are
-% \begin{itemize}
-% \item integer expressions,
-% \item string expressions,
-% \item dimensions,
-% \item commands (i.e., \TeX\ control sequences), and
-% \item other (pretty much ``none of the above'').
-% \end{itemize}
-% The most common form of an integer expression is simply a \TeX\
-% \meta{number} and the most common form of a string expression is
-% simply a sequence of character tokens, but there are more complicated
-% forms. Dimensions are simply \TeX\ \meta{dimen}s; their use is rather
-% limited. 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. As for the
-% ``other'' arguments one cannot give any rules: they might get
-% expanded, but it could also happen that they won't.
-
-
-
-
-
-% There are three types of files used by the \fontinst package:
-% \begin{itemize}
-% \item \emph{fontinst files} contain commands to process fonts
-% metrics so you can use a font with \TeX. For example,
-% \texttt{fontptcm.tex} is a \emph{fontinst file}.
-%
-% \item \emph{encoding files} contain information about an encoding,
-% including the code table, ligatures, and font dimensions. For
-% example, \texttt{8r.etx} is an \emph{encoding file}.
-%
-% \item \emph{metric files} contain information about glyphs,
-% including glyph dimensions, composite characters, and kerning.
-% For example, \texttt{latin.mtx} is a \emph{metric file}.
-% \end{itemize}
-
-
-\subsection{General commands}
-
-The following \emph{general commands} can be used anywhere:
-
-\begin{decl}
- |\needsfontinstversion|\arg{version}
-\end{decl}
-This issues a warning if the current version of the \fontinst
-package is less than \m{version}.
+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}
+ |\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}.
@@ -1327,13 +1468,14 @@ 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}.
+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 be the \m{definition}. This uses the same syntax for
+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}
@@ -1345,11 +1487,18 @@ parameters as the \TeX\ \verb|\def| command.
\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}
+ |\resetstr|\arg{str}\arg{string expression}
\end{decl}
The dimension variable \m{dim} is defined to be the current value
of \m{dimension}.
@@ -1358,36 +1507,15 @@ 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
-\m{string}.
+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 be the \m{definition},
-regardless of whether it was already defined or not. This is a
-synonym for the \TeX\ \verb|\def| command.
-
-\begin{decl}
- |\ifisint|\arg{int}|\then|\\
- |\ifisdim|\arg{dim}|\then|\\
- |\ifisstr|\arg{str}|\then|\\
- |\ifisglyph|\arg{glyph}|\then|\\
- |\ifiscommand|\arg{command}|\then|
-\end{decl}
-Expands out to \verb|\iftrue| if the integer variable
-\m{int} is defined, and \verb|\iffalse| otherwise.
-
-Expands out to \verb|\iftrue| if the dimension variable
-\m{dim} is defined, and \verb|\iffalse| otherwise.
-
-Expands out to \verb|\iftrue| if the string variable
-\m{str} is defined, and \verb|\iffalse| otherwise.
-
-Expands out to \verb|\iftrue| if the glyph variable
-\m{glyph} is defined, and \verb|\iffalse| otherwise.
-
-Expands out to \verb|\iftrue| if the command
-\m{command} is defined, and \verb|\iffalse| otherwise.
+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}\\
@@ -1398,6 +1526,73 @@ Expands out to \verb|\iftrue| if the command
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}
@@ -1412,7 +1607,9 @@ 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}).
+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}
@@ -1431,8 +1628,10 @@ variable \m{glyph}.
\begin{decl}
|\kerning|\arg{left}\arg{right}
\end{decl}
-Returns the kerning between the \m{left} and \m{right} glyph
-variables.
+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}\\
@@ -1452,95 +1651,277 @@ variables.
|\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.
+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}
-\subsection{Other}
+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.
-The following commands belong to this section, but there is currently
-no description of them here.
+\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.
-|\begincomment|
+\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.
-|\bye|
+\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.
-|\Else|
+\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.
-|\endcomment|
+\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.
-|\endfor|\parg{name}
+\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}
-|\eTeX|\marg{version number}
-|\Fi|
-|\fontinstcc|
+\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}
-|\fontinsterror|\marg{subsystem}\marg{error}\marg{help}
+|\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.
-|\fontinstinfo|\marg{subsystem}\marg{info}
-|\fontinstwarning|\marg{subsystem}\marg{warning}
+\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.
-|\fontinstwarningnoline|\marg{subsystem}\marg{warning}
+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.
-|\for|\parg{name}\marg{start}\marg{stop}\marg{step}
+\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|\parg{name}\marg{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.
-|\ifareglyphs|\marg{glyph list}|\then|
-|\ifiskern|\marg{glyph1}\marg{glyph2}|\then|
-|\ifnumber|\marg{integer expression}\meta{rel}%
-\marg{integer expression}|\then|
+\subsection{Other general commands}
-|\ifoption|\marg{string}|\then|
+\begin{decl}
+ |\needsfontinstversion|\arg{version}
+\end{decl}
+This issues a warning if the current version of the \fontinst
+package is less than \m{version}.
-|\input| \meta{file name}
+\begin{decl}
+ |\needsTeXextension|\marg{extension tests}\marg{who}\\
+ |\eTeX|\marg{version number}\\
+ |\pdfTeX|\marg{version number}\marg{revision}
+\end{decl}
-|\messagebreak|
+\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.
-|\needsTeXextension|\marg{extension tests}\marg{who}
+\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}
-|\normalcc|
+\begin{decl}[v1.906]
+ |\messagebreak|
+\end{decl}
-|\offcommand|\marg{command}
-|\oncommand|\marg{command}
+Finally, there are two Plain\TeX\ commands which should be mentioned:
+\begin{decl*}
+ |\input| \meta{file name}\\
+ |\bye|
+\end{decl*}
-|\pdfTeX|\marg{version number}\marg{revision}
-|\strint|\arg{int}
\section{Encoding files}
An \emph{encoding file} (or \texttt{.etx} file) is a \TeX\ document
-consisting of:
-
-\begin{decl}
+with the structure:
+\begin{quote}
|\relax|\\
- \emph{ignored material}\\
+ \meta{ignored material}\\
|\encoding|\\
- \m{encoding commands}\\
+ \meta{encoding commands}\\
|\endencoding|\\
- \emph{ignored material}
-\end{decl}
-This describes the encoding of a font, using the \m{encoding
- commands}.
+ \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.
+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 \texttt{encspecs.tex}.
+
+See also the descriptions in \emph{Writing ETX format font encoding
+specifications} (\texttt{encspecs.tex}).
\subsection{Encoding commands}
@@ -1553,25 +1934,80 @@ The \m{encoding commands} are:
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}
+\begin{decl}[v1.8]
|\skipslots|\arg{integer expressions}
\end{decl}
-\NEWfeature{v1.8}
Advances the number of the next slot.
\begin{decl}
- |\setslot|\arg{glyph}\\
- \m{slot commands}\\
- |\endsetslot|
+ |\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}
-Sets the slot of the \m{glyph}. The \m{slot commands} describe
-the glyph, and give its usage in \TeX.
+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}
@@ -1581,21 +2017,21 @@ The \m{slot commands} are:
\begin{decl}
|\comment|\arg{text}
\end{decl}
-A comment, which is ignored by \fontinst.
+A comment, which is ignored by \fontinst, but typeset as a separate
+paragraph by \fontdoc.
-\begin{decl}
+\begin{decl}[v1.917]
|\label|\arg{text}
\end{decl}
-A reference label. Ignored by \fontinst.
+A reference label, which records the slot number and glyph name.
+Ignored by \fontinst.
\begin{decl}
- |\ligature|\arg{ligtype}\arg{glyph}\arg{glyph}\\
- |\Ligature|\arg{ligtype}\arg{glyph}\arg{glyph}\\
- |\oddligature|\marg{note}\arg{ligtype}\arg{glyph}\arg{glyph}
+ |\ligature|\arg{ligtype}\arg{glyph}\arg{glyph}
\end{decl}
-Specifies 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
+|\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}
@@ -1604,28 +2040,50 @@ details). For example:
\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}
+ |\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}
+\begin{decl}[Obsolete?!]
|\usedas|\arg{type}\arg{control sequence}
\end{decl}
-\NEWfeature{Obsolete?!}
-Sets the \TeX\ control sequence for this slot, with the \emph{type}
-taken from:
+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}
@@ -1634,8 +2092,8 @@ Sets a \textsc{nextlarger} entry from the current slot to the
\m{glyph}.
\begin{decl}
- |\varchar|\\
- \m{varchar commands}\\
+ |\varchar|
+ \m{varchar commands}
|\endvarchar|
\end{decl}
Sets a \textsc{varchar} entry for the current slot, using the
@@ -1655,23 +2113,8 @@ Sets the top, middle, bottom, or repeated \m{glyph} of the
The following commands belong to this section, but there is currently
no description of them here.
-|\endsetleftboundary|
-
-|\ifdirect|
-
|\ifisinslot|\marg{glyph}\marg{slot}|\then|
-|\resetslotcomment|\marg{text}
-
-|\setfontdimen|\marg{fontdimen no.}\marg{integer variable}
-
-|\setleftboundary|\marg{glyph}
-
-|\setslotcomment|\marg{text}
-
-|\useexamplefont|\marg{font}
-
-|\unsetslotcomment|
@@ -1679,18 +2122,19 @@ no description of them here.
\label{Sec:Metric}
-A \emph{metric file} (or \texttt{.mtx} file) is a \TeX\ document
-consisting of:
-
-\begin{decl}
+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{decl}
-This describes the glyphs in a font, using the \m{metric commands}.
+\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
@@ -1705,12 +2149,11 @@ hand-crafted metric files are more like programs.
\subsection{Metric commands}
-The \m{metric commands} are:
+The \m{metric commands} are as follows. All glyph name arguments are
+string expressions.
\begin{decl}
- |\setglyph|\arg{name}\\
- \m{glyph commands} \\
- |\endsetglyph|
+ |\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:
@@ -1723,11 +2166,13 @@ If the glyph called \m{name} is undefined, it is built using the
\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}\\
- |\endsetglyph|
+ |\resetglyph|\arg{name}
+ \m{glyph commands}
+ |\endresetglyph|
\end{decl}
Gives the definition of the glyph called \m{name} using the
\m{glyph commands}.
@@ -1738,80 +2183,57 @@ Gives the definition of the glyph called \m{name} using the
Makes the glyph called \m{name} undefined.
\begin{decl}
- |\setrawglyph|\arg{name}\arg{font}\arg{dimen}\arg{integer}\\
- \arg{integer}\arg{integer}\arg{integer}\arg{integer}\\
- |\setscaledrawglyph|\arg{name}\arg{font}\arg{dimen}\arg{integer}\arg{integer}\\
- \arg{integer}\arg{integer}\arg{integer}\arg{integer}
+ |\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.
-If the integer variable \texttt{rawscale} is set, the glyph will be
-scaled by that amount. This command will usually be generated
-automatically from an \afm or \pl file.
-
-\begin{decl}
- |\setnotglyph|\arg{name}\arg{font}\arg{dimen}\\
- \arg{integer}\arg{integer}\arg{integer}\arg{integer}\\
- |\setscalednotglyph|\arg{name}\arg{font}\arg{dimen}\arg{integer}\arg{integer}\\
- \arg{integer}\arg{integer}\arg{integer}\arg{integer}
-\end{decl}
-This sets a glyph called \m{name}\texttt{-not}, which is present in
-the \m{font}, but is not in the default encoding. It takes the same
-arguments as \verb|\setrawglyph|, although the slot will normally be
-$-1$. This command will usually be generated automatically from an
-\afm file.
-
-\begin{decl}
- |\setkern|\arg{glyph}\arg{glyph}\arg{integer expression}\\
- |\resetkern|\arg{glyph}\arg{glyph}\arg{integer expression}
-\end{decl}
-|\setkern| sets a kern between the two glyphs, scaled by the current
-value of \texttt{rawscale}, unless such a kern already has been set.
+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}
- |\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}
-Sets the amount by which the first glyph should mimic how the second
-glyph kerns on the right, for example:
-
-\begin{decl}
- |\setleftrightkerning|\arg{glyph}\arg{glyph}\arg{integer expression}
+ |\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}
-\NEWfeature{v1.8}
-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}
+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.
-\begin{decl}
- |\noleftkerning|\arg{glyph}\\
- |\norightkerning|\arg{glyph}\\
- |\noleftrightkerning|\arg{glyph}
-\end{decl}
-\NEWfeature{v1.9}
-Removes all kerning on the specified side(s) of the \meta{glyph}.
+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} are:
+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}
@@ -1819,13 +2241,17 @@ The \m{glyph commands} are:
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.
+ \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:
@@ -1847,7 +2273,7 @@ Sets a rule of the given width and height, for example:
\end{verbatim}
\begin{decl}
- |\glyphspecial|\arg{text}
+ |\glyphspecial|\arg{string expression}
\end{decl}
Sets a driver-dependent \verb|\special|, for example:
\begin{verbatim}
@@ -1857,7 +2283,7 @@ Sets a driver-dependent \verb|\special|, for example:
\end{verbatim}
\begin{decl}
- |\glyphwarning|\arg{text}
+ |\glyphwarning|\arg{string expression}
\end{decl}
Sets a warning \verb|\special|, and produces a warning message each
time the glyph is used, for example:
@@ -1900,16 +2326,15 @@ example:
\end{verbatim}
\begin{decl}
- |\push|\\
- \m{glyph commands}\\
- |\pop|
+ |\push| \m{glyph commands} |\pop|
\end{decl}
-Performs the \m{glyph commands} without adjusting the current position
-or glyph width, for example:
+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{\div{\sub{\width{a}}{\width{acute}}}{2}}
+ \movert{\half{\sub{\width{a}}{\width{acute}}}}
\glyph{acute}{1000}
\pop
\glyph{a}{1000}
@@ -1922,13 +2347,12 @@ or glyph width, for example:
This is generated from \texttt{PCC} instructions in an \afm file, and
is syntactic sugar for:
\begin{quote}
-\begin{small}
-|\push|\\
-|\movert|\arg{first integer expression}\\
-|\moveup|\arg{second integer expression}\\
-|\glyph|\arg{glyph}|{1000}|\\
-|\pop|
-\end{small}
+ \small
+ |\push|\\
+ |\movert|\arg{first integer expression}\\
+ |\moveup|\arg{second integer expression}\\
+ |\glyph|\arg{glyph}|{1000}|\\
+ |\pop|
\end{quote}
\begin{decl}
@@ -1969,38 +2393,160 @@ letter `A' with:
\end{verbatim}
-\subsection{Other}
+\subsection{Kerning commands}
-The following commands belong to this section, but there is currently
-no description of them here.
+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.
-|\aliased|\marg{font's name}\marg{alias name}
+\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|.
-|\ProvidesMtxPackage|\marg{package~name}
+\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}.
-|\unsetkerns|\marg{left~glyph~list}\marg{right~glyph~list}
+\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.
-|\usemtxpackage|\marg{package~list}
+
+
+\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}
-|\macroparameter|\marg{digit}
+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.
-|\plaindiv|
+\begin{decl}[v1.8]
+ |\slotexample|
+\end{decl}
+This typesets the character in the current slot from the example font
+(cf.~|\useexamplefont|).
-|\plainint|
+\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}.
-|\plainmax|
+\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.
-|\plainmin|
-|\showbranches|
+\subsection{Style control commands}
-|\slotexample|
+\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.
-|\textunicode|\marg{code point}\marg{name}
@@ -2125,6 +2671,15 @@ implicitly use or set are listed below.
|\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.
@@ -2586,7 +3141,12 @@ 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.
+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|.
@@ -2882,6 +3442,7 @@ 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
@@ -3320,7 +3881,7 @@ SYMBOLS}.
msbm10 encoding msbm,%
mccmhax,mccmkern,mcmissing,%
cmsy10-base,cmsy10-extra%
- }{mc}{MC}{cm}{m}{n}{<10->}
+ }{mc}{MC}{cm}{m}{n}{<<10->>}
\end{verbatim}
Also note the explicit \LaTeX\ size specification for the range
``10\,pt and up''.
diff --git a/Master/texmf-dist/doc/fontinst/base/manual/intro98.dvi b/Master/texmf-dist/doc/fontinst/base/manual/intro98.dvi
new file mode 100644
index 00000000000..d272df5088e
--- /dev/null
+++ b/Master/texmf-dist/doc/fontinst/base/manual/intro98.dvi
Binary files differ
diff --git a/Master/texmf-dist/doc/fontinst/base/manual/intro98.pdf b/Master/texmf-dist/doc/fontinst/base/manual/intro98.pdf
index d18cd3d8616..3f517608d16 100644
--- a/Master/texmf-dist/doc/fontinst/base/manual/intro98.pdf
+++ b/Master/texmf-dist/doc/fontinst/base/manual/intro98.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/fontinst/base/talks/et99-font-tables.pdf b/Master/texmf-dist/doc/fontinst/base/talks/et99-font-tables.pdf
new file mode 100644
index 00000000000..8d6c2b593c7
--- /dev/null
+++ b/Master/texmf-dist/doc/fontinst/base/talks/et99-font-tables.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/fontinst/base/talks/et99-font-tutorial.pdf b/Master/texmf-dist/doc/fontinst/base/talks/et99-font-tutorial.pdf
new file mode 100644
index 00000000000..4ae8a1eeb75
--- /dev/null
+++ b/Master/texmf-dist/doc/fontinst/base/talks/et99-font-tutorial.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/fontinst/base/test/v1901test.mtx b/Master/texmf-dist/doc/fontinst/base/test/v1901test.mtx
new file mode 100644
index 00000000000..624a39bf81d
--- /dev/null
+++ b/Master/texmf-dist/doc/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/fontinst/base/test/v1906test.mtx b/Master/texmf-dist/doc/fontinst/base/test/v1906test.mtx
new file mode 100644
index 00000000000..94306a07b32
--- /dev/null
+++ b/Master/texmf-dist/doc/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/fontinst/base/test/v1914testmap.tex b/Master/texmf-dist/doc/fontinst/base/test/v1914testmap.tex
index 17dd9c2375d..9b1921bbc8d 100644
--- a/Master/texmf-dist/doc/fontinst/base/test/v1914testmap.tex
+++ b/Master/texmf-dist/doc/fontinst/base/test/v1914testmap.tex
@@ -1,9 +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}
-\adddriver{pltotf}{v1914test.sh} % v1.915 feature, actually
\input v1914test.recs
\donedrivers
+
+
\bye
diff --git a/Master/texmf-dist/doc/fontinst/base/test/v1914testshow.tex b/Master/texmf-dist/doc/fontinst/base/test/v1914testshow.tex
new file mode 100644
index 00000000000..bd7a957b0a8
--- /dev/null
+++ b/Master/texmf-dist/doc/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/fontinst/base/test/v1916test.mtx b/Master/texmf-dist/doc/fontinst/base/test/v1916test.mtx
new file mode 100644
index 00000000000..1829c79d02d
--- /dev/null
+++ b/Master/texmf-dist/doc/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/fontinst/base/test/v1923test.tex b/Master/texmf-dist/doc/fontinst/base/test/v1923test.tex
index 5115f93b373..ede00d90444 100644
--- a/Master/texmf-dist/doc/fontinst/base/test/v1923test.tex
+++ b/Master/texmf-dist/doc/fontinst/base/test/v1923test.tex
@@ -37,6 +37,10 @@
\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/fontinst/base/test/v1928test.tex b/Master/texmf-dist/doc/fontinst/base/test/v1928test.tex
new file mode 100644
index 00000000000..8242cc3438c
--- /dev/null
+++ b/Master/texmf-dist/doc/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/fontinst/base/test/v1928test2.tex b/Master/texmf-dist/doc/fontinst/base/test/v1928test2.tex
new file mode 100644
index 00000000000..c9b099e643c
--- /dev/null
+++ b/Master/texmf-dist/doc/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}