%%% ====================================================================
%%%  @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}
