%%% ==================================================================== %%% @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 <> seek padr8r.mtx INFO>> to make LaTeX font shape <> seek padrc8r.mtx INFO>> to make LaTeX font shape <> seek padro8r.mtx INFO>> to make LaTeX font shape <> seek padri8r.mtx INFO>> to make LaTeX font shape <> seek padr8rn.mtx INFO>> to make LaTeX font shape <> seek padrc8rn.mtx INFO>> to make LaTeX font shape <> seek padro8rn.mtx INFO>> to make LaTeX font shape <> 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 <> 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 <> 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 <> 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 <> 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 <> 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 <> seek padb8r.mtx INFO>> to make LaTeX font shape <> seek padbc8r.mtx INFO>> to make LaTeX font shape <> seek padbo8r.mtx INFO>> to make LaTeX font shape <> seek padbi8r.mtx INFO>> to make LaTeX font shape <> seek padb8rn.mtx INFO>> to make LaTeX font shape <> seek padbc8rn.mtx INFO>> to make LaTeX font shape <> seek padbo8rn.mtx INFO>> to make LaTeX font shape <> 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 <> 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}