diff options
Diffstat (limited to 'Master/texmf-dist/doc/fonts/fontinst/base/manual')
-rw-r--r-- | Master/texmf-dist/doc/fonts/fontinst/base/manual/fontinst.dvi | bin | 207780 -> 0 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/fonts/fontinst/base/manual/fontinst.pdf | bin | 381721 -> 0 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/fonts/fontinst/base/manual/fontinst.tex | 4160 | ||||
-rw-r--r-- | Master/texmf-dist/doc/fonts/fontinst/base/manual/intro98.dvi | bin | 62532 -> 0 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/fonts/fontinst/base/manual/intro98.pdf | bin | 172067 -> 0 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/fonts/fontinst/base/manual/intro98.tex | 1330 | ||||
-rw-r--r-- | Master/texmf-dist/doc/fonts/fontinst/base/manual/roadmap.eps | 265 |
7 files changed, 0 insertions, 5755 deletions
diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/manual/fontinst.dvi b/Master/texmf-dist/doc/fonts/fontinst/base/manual/fontinst.dvi Binary files differdeleted file mode 100644 index ae8133acad4..00000000000 --- a/Master/texmf-dist/doc/fonts/fontinst/base/manual/fontinst.dvi +++ /dev/null diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/manual/fontinst.pdf b/Master/texmf-dist/doc/fonts/fontinst/base/manual/fontinst.pdf Binary files differdeleted file mode 100644 index 20c50851cdd..00000000000 --- a/Master/texmf-dist/doc/fonts/fontinst/base/manual/fontinst.pdf +++ /dev/null diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/manual/fontinst.tex b/Master/texmf-dist/doc/fonts/fontinst/base/manual/fontinst.tex deleted file mode 100644 index 19f5f012231..00000000000 --- a/Master/texmf-dist/doc/fonts/fontinst/base/manual/fontinst.tex +++ /dev/null @@ -1,4160 +0,0 @@ -%%% ==================================================================== -%%% @LaTeX-file{ -%%% author = "Alan Jeffrey and Rowland McDonnell and -%%% Ulrik Vieth and Lars Hellstr{\"o}m", -%%% version = "1.928", -%%% date = "2004-12-16", -%%% time = "12:18:32 +01:00", -%%% filename = "fontinst.tex", -%%% email = "fontinst@tug.org", -%%% checksum = "", -%%% codetable = "ISO/ASCII", -%%% keywords = "fontinst, TeX, PostScript, documentation", -%%% supported = "yes", -%%% abstract = "This is the documentation for the fontinst -%%% font installation package.", -%%% package = "fontinst", -%%% dependencies = "ltxguide.cls, url.sty, xspace.sty" -%%% } -%%% ==================================================================== - -% Copyright 1993, 1994, 1995, 1996 Alan Jeffrey - -% Modified by Rowland McDonnell June 1998 -% Modified and revised by Ulrik Vieth June 1998 -% Modified by Lars Hellstr\"om July 2004 - - -\documentclass[a4paper]{ltxguide} -\usepackage[OT1]{fontenc} -\usepackage{url,xspace} -\usepackage{graphicx} - -\IfFileExists{palatino.flag}{ - \renewcommand\rmdefault{ppl} -} -%\renewcommand\rmdefault{padx} -%\renewcommand\rmdefault{pmnx} - -% \MakeShortVerb{\|} - - -% Title page and running heads. - -\makeatletter -\newcommand{\subtitle}[1]{\renewcommand{\@subtitle}{#1}} -\newcommand{\version}[1]{\renewcommand{\@version}{#1}} -\newcommand{\illustration}[1]{\renewcommand{\@illustration}{#1}} - -\newcommand{\@subtitle}{} -\newcommand{\@version}{???} -\newcommand{\@illustration}{cover.eps} - -% \pagestyle{myheadings} -% \AtBeginDocument{\markright{\small\itshape -% \@author\hfill\@title: \@subtitle\quad}} - - -\renewcommand{\maketitle}{{% - \thispagestyle{empty}% - \normalfont\centering - \null - {\fontsize{100}{100}\textit{\@title}}% - \par\bigskip - {\Large\textbf{\@subtitle}}% - \vfill - \includegraphics[width=\textwidth]{\@illustration}% - \vfill - {\Large\textbf{% - \def\and{\egroup\qquad\hbox\bgroup} - \leavevmode \hbox{\@author}\\[\smallskipamount] - \@title~v\@version - \quad\textperiodcentered\quad \@date}}% - \clearpage -}} -\makeatother - - -% Set lists tighter (assuming non-zero \parskip). - -\makeatletter -\renewcommand{\@listI}{% - \leftmargin\leftmargini - \parsep\medskipamount - \itemsep\z@ % + parsep - \topsep\z@ % + parskip - \partopsep\z@ -} -\newenvironment{isyntax}{% - \let\\\@centercr - \list{}{% - \itemsep \z@ - \itemindent -1.5em% - \listparindent \itemindent - \advance \leftmargin 1.5em% - }% - \advance \rightskip \z@\@plus0.7\linewidth \relax - \linepenalty=100\relax - \item\relax -}{\endlist} -\makeatother - -\newenvironment{smalldes}{% - \list{}{% - \setlength\labelwidth{0pt}% - \setlength\itemindent{-\leftmargin}% - \setlength\listparindent{1em}% - \setlength\parsep{0pt}% - \setlength\itemsep{0pt plus 1pt}% - \setlength\topsep{\itemsep}% - \let\makelabel\descriptionlabel - }% -}{\endlist} - -\newenvironment{hackernote}{% - \list{}{ - \setlength{\leftmargin}{0pt}% - \setlength\labelwidth{0pt}% - \setlength{\listparindent}{1.4em}% - \setlength{\parsep}{0pt plus 1pt}% - \setlength{\itemsep}{\medskipamount}% - }\item[]% - \small - \textit{Note for hackers.}\hspace{0.5em}% -}{\endlist} - -% % I don't use the <...> feature for verbatim, -% % so I undo that ltxguide feature. -% \makeatletter -% \renewcommand{\verbatim@font}{% -% \normalfont \ttfamily -% % \catcode`\<=\active -% % \catcode`\>=\active -% } -% \makeatother - - -% ltxguide.cls decl environment, but with equal space above and -% below. -\DeleteShortVerb{\|} -\makeatletter -\newenvironment{decl*}[1][]{% - \par - \small\addvspace{2.3ex}% - \vskip -\parskip - \ifx\relax#1\relax - \def\@decl@date{}% - \else - \def\@decl@date{\NEWfeature{#1}}% - \fi - \noindent\hspace{-\leftmargini}% - \begin{tabular}{|l|}% - \hline\ignorespaces -}{% - \\\hline - \end{tabular}% - \nobreak\@decl@date\par\nobreak - \vspace{2.3ex}\vskip -\parskip -} -\makeatother -\MakeShortVerb{\|} - - -% Set spacing around captions. - -\setlength{\abovecaptionskip}{\medskipamount} -\setlength{\belowcaptionskip}{\medskipamount} - -% Markup for logos, file types, programs, etc. - -\newcommand*{\meta}{\m} -\newcommand*{\marg}{\arg} -\newcommand*{\parg}[1]{\texttt{(}\m{#1}\texttt{)}} - -\newcommand*{\cs}[1]{\texttt{\char`\\ #1}\xspace} - -\newcommand*{\OzTeX}{O\kern-.03em z\kern-.15em\TeX} -\newcommand*{\OzMF}{O\kern-.03em zMF} -\newcommand*{\OzTools}{O\kern-.03em z\kern-.15em Tools} - -\newcommand{\PS}{Post\-Script\xspace} -\newcommand{\TT}{True\-Type\xspace} - -\newcommand*{\setfilename}[1]{\texttt{#1}} -\newcommand*{\setdotfilename}[1]{\setfilename{.#1}} -\newcommand*{\setpackagename}[1]{\textsf{#1}} - -\newcommand{\dvips} {\setpackagename{dvips}\xspace} -\newcommand{\Dvips} {\setpackagename{Dvips}\xspace} -\newcommand{\fontinst}{\setpackagename{font\-inst}\xspace} -\newcommand{\Fontinst}{\setpackagename{Font\-inst}\xspace} -\newcommand{\fontdoc}{\setpackagename{font\-doc}\xspace} -\newcommand{\Fontdoc}{\setpackagename{Font\-doc}\xspace} - -% \show\fontname -\newcommand{\fontnamekb}{fontname\xspace} -\newcommand{\Fontnamekb}{Fontname\xspace} - -\newcommand{\mf} {\setfilename{mf}\xspace} -\newcommand{\Mf} {\setfilename{Mf}\xspace} -\newcommand{\vf} {\setfilename{vf}\xspace} -\newcommand{\Vf} {\setfilename{Vf}\xspace} -\newcommand{\pl} {\setfilename{pl}\xspace} -\newcommand{\Pl} {\setfilename{Pl}\xspace} -\newcommand{\fd} {\setfilename{fd}\xspace} -\newcommand{\Fd} {\setfilename{Fd}\xspace} -\newcommand{\pk} {\setfilename{pk}\xspace} -\newcommand{\Pk} {\setfilename{Pk}\xspace} -\newcommand{\afm}{\setfilename{afm}\xspace} -\newcommand{\Afm}{\setfilename{Afm}\xspace} -\newcommand{\vpl}{\setfilename{vpl}\xspace} -\newcommand{\Vpl}{\setfilename{Vpl}\xspace} -\newcommand{\tfm}{\setfilename{tfm}\xspace} -\newcommand{\Tfm}{\setfilename{Tfm}\xspace} -\newcommand{\mtx}{\setfilename{mtx}\xspace} -\newcommand{\Mtx}{\setfilename{Mtx}\xspace} -\newcommand{\etx}{\setfilename{etx}\xspace} -\newcommand{\Etx}{\setfilename{Etx}\xspace} -\newcommand{\pfa}{\setfilename{pfa}\xspace} -\newcommand{\Pfa}{\setfilename{Pfa}\xspace} -\newcommand{\pfb}{\setfilename{pfb}\xspace} -\newcommand{\Pfb}{\setfilename{Pfb}\xspace} -\newcommand{\dvi}{\setfilename{dvi}\xspace} -\newcommand{\Dvi}{\setfilename{Dvi}\xspace} -\newcommand{\pdf}{\setfilename{pdf}\xspace} -\newcommand{\Pdf}{\setfilename{Pdf}\xspace} -\newcommand{\ttf}{\setfilename{ttf}\xspace} -\newcommand{\Ttf}{\setfilename{Ttf}\xspace} - -\newcommand{\vftovp}{\setpackagename{vftovp}\xspace} -\newcommand{\vptovf}{\setpackagename{vptovf}\xspace} -\newcommand{\pltotf}{\setpackagename{pltotf}\xspace} -\newcommand{\tftopl}{\setpackagename{tftopl}\xspace} - -\newcommand{\BibTeX}{Bib\TeX} - - -% % Stolen from Dr Knuth -% \makeatletter % borrow the private macros of PLAIN (with care) -% \def\oct#1{\hbox{\rm\'{}\kern-.2em\it#1\/\kern.05em}} % octal constant -% \def\hex#1{\hbox{\rm\H{}\tt#1}} % hexadecimal constant -% % macros for font tables -% \def\oddline#1{\cr -% \noalign{\nointerlineskip} -% \multispan{19}\hrulefill& -% \setbox0=\hbox{\lower 2.3pt\hbox{\hex{#1x}}}\smash{\box0}\cr -% \noalign{\nointerlineskip}} -% \def\evenline{\cr\noalign{\hrule}} -% \def\chartstrut{\lower4.5pt\vbox to14pt{}} -% \def\beginchart#1{$$\global\count@=0 #1 -% \halign to\hsize\bgroup -% \chartstrut##\tabskip0pt plus10pt& -% &\hfil##\hfil&\vrule##\cr -% \lower6.5pt\null -% &&&\oct0&&\oct1&&\oct2&&\oct3&&\oct4&&\oct5&&\oct6&&\oct7&\evenline} -% \def\endchart{\raise11.5pt\null&&&\hex 8&&\hex 9&&\hex A&&\hex B& -% &\hex C&&\hex D&&\hex E&&\hex F&\cr\egroup$$} -% \def\*{\global\advance\count@ by1 } -% \def\:{\setbox0=\hbox{\char\count@}% -% \ifdim\ht0>7.5pt\reposition -% \else\ifdim\dp0>2.5pt\reposition\fi\fi -% \box0\global\advance\count@ by1 } -% \def\reposition{\setbox0=\hbox{$\vcenter{\kern2pt\box0\kern2pt}$}} -% \def\smallchart{% -% %\global\advance\count@ by16 -% &\oct{00x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline0 -% &\oct{01x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline -% &\oct{02x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline1 -% &\oct{03x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline -% &\oct{04x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline2 -% &\oct{05x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline -% &\oct{06x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline3 -% &\oct{07x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline -% &\oct{10x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline4 -% &\oct{11x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline -% &\oct{12x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline5 -% &\oct{13x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline -% &\oct{14x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline6 -% &\oct{15x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline -% &\oct{16x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline7 -% &\oct{17x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline} -% -% \def\bigchart{% -% %\global\advance\count@ by16 -% &\oct{00x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline0 -% &\oct{01x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline -% &\oct{02x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline1 -% &\oct{03x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline -% &\oct{04x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline2 -% &\oct{05x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline -% &\oct{06x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline3 -% &\oct{07x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline -% &\oct{10x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline4 -% &\oct{11x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline -% &\oct{12x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline5 -% &\oct{13x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline -% &\oct{14x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline6 -% &\oct{15x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline -% &\oct{16x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline7 -% &\oct{17x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline -% &\oct{20x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline8 -% &\oct{21x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline -% &\oct{22x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline9 -% &\oct{23x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline -% &\oct{24x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{A} -% &\oct{25x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline -% &\oct{26x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{B} -% &\oct{27x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline -% &\oct{30x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{C} -% &\oct{31x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline -% &\oct{32x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{D} -% &\oct{33x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline -% &\oct{34x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{E} -% &\oct{35x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline -% &\oct{36x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{F} -% &\oct{37x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline} -% -% % \font\xrm = cmr10 at 10pt % change this line to test font -% % \beginchart\xrm \normalchart \endchart -% -% \newcommand{\smallfontchart}[1]{% -% \font\xrm = #1 \beginchart\xrm \smallchart \endchart} -% \newcommand{\bigfontchart}[1]{% -% \font\xrm = #1 \beginchart\xrm \bigchart \endchart} -% -% % \smallfontchart{cmr10 at 10pt} -% % \bigfontchart{ecrm1000 at 10pt} -% \makeatother -% % End stolen from Dr Knuth - - - -\title{fontinst} -\subtitle{Font installation software for \TeX} -\author{Alan Jeffrey\and Rowland McDonnell\and Lars Hellstr\"om} -\illustration{roadmap.eps} -\version{1.9} -\date{December 2004} - -\begin{document} - -\maketitle - -\begin{itshape} - This manual is currently being rewritten, and may therefore be a - bit disorganised. For authoritative information on command syntaxes - and the like, see the Literate Programming sources for - \fontinst. The main file there is \textsl{\texttt{fisource.tex}}. -\end{itshape} - -\bigskip - -\begin{footnotesize} - This manual describes the \texttt{fontinst} software for converting - fonts from Adobe Font Metric format to forms readable by \TeX. This - manual should be distributed with the \texttt{fontinst} software, - which is available by anonymous FTP from - \url{ftp://ftp.tex.ac.uk/tex-archive/fonts/utilities/fontinst}, and - on the various CD-ROMs containing material from the CTAN archives. - Please do not contact the author directly for copies. - - If you would like to report a bug with \texttt{fontinst}, please - mail \url{fontinst@tug.org}. The mail will be sent to the - \texttt{fontinst} mailing list. If you would like to be on the - \texttt{fontinst} mailing list, see - \url{http://tug.org/mailman/listinfo/fontinst}. -\end{footnotesize} - -\tableofcontents - -% \vfill - -\clearpage - - -% \section{Introduction} -% -% Digital fonts, as they may be bought from a foundry or other supplier, -% are usually not directly usable with \LaTeX. An obvious problem can be -% that the font information is not available in a format that \LaTeX\ -% understands. A more subtle problem is that the fonts are often -% organised in a way that is unsuitable for automatic typesetting. -% % \Fontinst was written to overcome these problems. -% -% % The main thing \fontinst does is creating virtual fonts (\vf's). -% -% -% % The \fontinst package is a set of \TeX\ macros written to create -% % virtual fonts for use with \TeX. - - -\section{Defining terms} - -This is rather a large and perhaps tedious section. You might be -tempted to skip it so you can get to some more direct information on -how to use \fontinst. That's fine if you understand everything about -how \TeX\ handles fonts. If not, I suggest you at least skim though -this section. - -\subsection{What's a font?} - -Once upon a time, this question was easily answered: a font is a -set of type in one size, style, etc. There used to be no -ambiguity, because a font was a collection of chunks of type metal -kept in a drawer, one drawer for each font. - -These days, with digital typesetting, things are more complicated. -What a font `is' isn't easy to pin down. A typical use of a \PS -font with \LaTeX\ might use these elements: -\begin{itemize} -\item Type 1 printer font file -\item Bitmap screen font file -\item Adobe font metric file (\afm file) -\item \TeX\ font metric file (\tfm file) -\item Virtual font file (\vf file) -\item font definition file (\fd file) -\end{itemize} -Looked at from a particular point of view, each of these files -`is' the font. So what's going on? - - -\subsubsection{Type 1 printer font files} - -These files contain the information needed by your printer to draw -the shapes of all the characters in a font. They're typically -files with a \pfa or \pfb extension; on Macs they're usually in -files of type `LWFN' which usually have icons that look like a -laser printer. The information in all these files is basically -the same: the only difference is in its representation. \pfa -stands for `printer font ASCII', while \pfb stands for `printer -font binary'. That is, \pfa files contain plain text information, -while \pfb files contain the same information encoded as -machine-readable binary data. - -If you have Adobe Type Manager (ATM) installed on your computer, -ATM will use these files to draw an accurate representation of the -letters on the screen of your computer when you are previewing a -\TeX\ document. - -Printer font files are not used directly by \TeX\ at all -- \TeX\ -just prepares a \dvi file that refers to the fonts by name and the -characters by number: \TeX\ knows nothing about the shapes -involved. The DVI driver uses the printer font files when you ask -it to print the \dvi file. This means that you can produce a \dvi -file which uses, say, Palatino, even if you do not have the -Type~1 printer font file for this font on your computer. You will -need to find a computer that does have Palatino before you can -print it or preview it, though. - -Pdf\TeX\ is different from \TeX\ in this respect; since pdf\TeX\ -integrates most of the functionality of a DVI driver, it may be unable -to generate working \pdf output if the some Type~1 printer font file -is not available. - - -\subsubsection{Bitmap screen font files} - -These files contain a low-resolution bitmap for drawing a -representation of the font on the screen of your computer if ATM -is not installed. In the \TeX\ world, these files are only used -for screen previews by the DVI driver. They are kept in font -suitcase files on Macintoshes. -%\marginnote{And where on other computers?} - - -\subsubsection{Adobe font metric files (\afm files)} - -These files are text files which contain information about the -size of each character in a font, kerning and ligature -information, and so on. They can't be used by \TeX\ directly, but -the information they contain is essential if you want to use a -font with \TeX. \Fontinst can create from an \afm file the -necessary \tfm and \vf files so you can use a font with \TeX. -Once you have created all the files you need to use a font with -\TeX, you can remove the corresponding \afm files from your -computer unless you have other software that needs them. - -The job of turning an \afm file into a set of \tfm and \vf files -is one of the main uses for \fontinst. Most of this document is -concerned with this process, so don't worry if it seems a bit -vague at the moment. - - -\subsubsection{\TeX\ font metric files (\tfm files)} - -These are binary data files in a format designed for use by \TeX\ -which contain (more-or-less) the same information as \afm files: -the size of each character in a font (font metric data), kerning, -and ligature information. - -When you select a font in \TeX, you are telling \TeX\ to typeset -using a particular \tfm file; from \TeX's point of view, a \tfm -file (and nothing else) \emph{is} a font. \TeX\ itself doesn't -see printer font files, screen bitmaps, \pk files, \vf files, or -anything else to do with fonts: only \tfm files. - -\TeX\ uses these \tfm files to decide where to put characters when -typesetting. From \TeX's point of view, \tfm files are fonts, -even though they contain no information about the shape of -letters, and are not used by anything except \TeX\ -- once you -have produced a \dvi file, you don't need the \tfm files to print -it out. (This is a slight lie: \dvips can read \tfm files -corresponding to \PS and \TT fonts so it can modify the metrics -slightly to improve the letterspacing at your chosen output -resolution. This is an optional minor tweak and not an essential -part of the output process.) - - -\subsubsection{Property list files (\pl files)} - -\pl files are human-readable text files which contain all the font -metric, kerning, ligature, and other information needed to create -a \tfm file. You can convert between the two file formats using -\tftopl and \pltotf. - - -\subsubsection{Virtual font files (\vf files)} - -These are binary data files in a format designed for use by \TeX\ -\dvi drivers. They're main purpose in life is to let you use -fonts in different encodings to the standard \TeX\ encodings. -These files are used by \dvi driver software only. - -They are used only by \dvi drivers to work out what it should -\emph{really} print when you ask for a particular character. -Technically they are like subroutine libraries for \dvi drivers, -with one subroutine for each character in the virtual font: when -the \dvi driver sees a \dvi command to set a character from a virtual -font, it will execute a sequence of \dvi commands (the ``mapcommands -property'' of this character) that it reads in the \vf file. You need -not worry about the details of this, as \fontinst deals with them for -you. Creating and using virtual fonts is what this document is about, -so don't worry if this doesn't make sense yet. (After all, how much -do you need to know about the inner workings of \dvi files to typeset -and print \TeX\ documents?) - -Each \vf file has a \tfm file with the same name. To use a -virtual font, you select the \tfm file as the font to use in your -document. When the \dvi driver comes across this \tfm file in the -\dvi file, it looks up the \vf file and uses that to decide what -to do. - - -\subsubsection{Virtual property list files (\vpl files)} - -\vpl files are human-readable text files which contain all the -font metric, kerning, mapping, and other information needed to -create a \vf and \tfm pair. - -\vptovf will create a \vf/\tfm pair from a \vpl file. \vftovp -will create a \vpl from a \vf/\tfm pair. \vftovp also needs to be -able to read all the \tfm files that are referred to by a \vf to -recreate the \vpl\ -- it looks at the checksums to verify that -everything's okay. - - -\subsubsection{Font definition files (\fd files)} - -These are files containing commands to tell \LaTeX\ which \tfm -files to associate with a request for a font using \LaTeX's font -selection commands. - -For example, here is a small and edited part of the \fd file -supplied with \setpackagename{PSNFSS} to allow you to use the -Adobe Times font in T1 encoding: - -\begin{verbatim} - \ProvidesFile{t1ptm.fd} - [1997/02/11 Fontinst v1.6 font definitions for T1/ptm.] - - \DeclareFontFamily{T1}{ptm}{} - - \DeclareFontShape{T1}{ptm}{m}{n} {<<->> ptmr8t}{} - \DeclareFontShape{T1}{ptm}{m}{it}{<<->> ptmri8t}{} - ... - \DeclareFontShape{T1}{ptm}{b}{n} {<<->> ptmb8t}{} - \DeclareFontShape{T1}{ptm}{b}{it}{<<->> ptmbi8t}{} - ... -\end{verbatim} -What this means is: when you use \LaTeX\ to select the font family -|ptm| in T1 encoding in the medium series (|m|) and normal shape -(|n|), \TeX\ uses the font \texttt{ptmr8t.tfm}. Similarly, if you -select bold italic, \TeX\ uses \texttt{ptmbi8t.tfm}. - -\LaTeX\ works out which \fd file to load based on the current -encoding and font family selected. If you've selected T1 encoded -|ptm| like this: -\begin{verbatim} - \fontencoding{T1}\fontfamily{ptm}\selectfont -\end{verbatim} -\LaTeX\ loads the file \url{t1ptm.fd} (if it doesn't exist, you're -in trouble). As you can see above, this file contains information -so that \LaTeX\ knows which \tfm file to use. So if you ask for, -say, |T1/ptm/b/it| (T1 encoded Times-Roman, bold series, italic -shape), you get the font \texttt{ptmbi8t}. - -You can find more about \fd files and \LaTeX's font selection commands -at CTAN: -\url{ftp://ftp.tex.ac.uk/tex-archive/macros/latex/base/fntguide.tex} -and \url{ftp://ftp.tex.ac.uk/tex-archive/info/simple-nfss.tex} are -both useful. - - -\subsection{What does \fontinst do?} - -\fontinst creates \vpl and \pl files from \afm or \pl files to map -any glyph or combination of glyphs in the original font files to -any slot in the output font file. There, isn't that better? Off -you go now\ldots - -If you're still confused, I'll explain a few things. -\begin{description} -\item[Glyph] - A glyph is an image, often associated with one or several characters. - Some examples of glyphs are: - `A', `\textsf{A}', `$\mathcal{A}$', `B', `F', - `{\usefont{OT1}{cmr}{m}{n}f}', - `{\usefont{OT1}{cmr}{m}{n}fi}', `\~{}'. - Fonts are collections of glyphs. \Fontinst refers to glyphs by name. -\item[Slot] - This is jargon for `a numbered position in a font'. (What is - important is the number, and that this number refers to a position - in a font, but which font is usually irrelevant.) -\item[Character] - The modern definition is that a character is the smallest component - of written language that has semantic value. Speaking of a - character, one refers to the abstract meaning and/or shape, rather - than a specific shape. - - Since fonts have often contained a unique glyph for each character - and each usable glyph has been assigned a particular slot, - it is not uncommon (in particular in older terminology) to see the - three mixed up, usually so that one says `character' where one of - the other two would have been more correct. The \TeX-related font - file formats is no exception, as you may see examples of elsewhere - in this document. -\item[Encoding] - There are really two different encoding concepts that one encounters - when using \fontinst. The differences are not great, and an - encoding of one kind often corresponds to an encoding of the other - kind, but it is not merely a matter of translation. - - A \emph{\LaTeX\ encoding} is a mapping from characters (or more - formally \LaTeX\ Internal Character Representations) to slots. - In the \texttt{OT1} encoding, `\o' (or more technically `|\o|') maps - to slot~28, whereas in the \texttt{T1} encoding it maps to slot~248. - This kind of encoding affects what \TeX\ is doing; \dvi drivers are - not involved. - - A \emph{font encoding} (or \emph{encoding vector}) is a mapping from - slots to glyph names. This is the kind of encoding that \fontinst - primarily deals with, and also the kind of encoding that \dvi - drivers make use of. \texttt{ot1.etx} associates slot~28 with - `\texttt{oslash}', whereas \texttt{t1.etx} and \texttt{EC.enc} (one - of several to \texttt{T1} corresponding encoding vectors that come - with \dvips) associates slot~28 with `\texttt{fi}'. - - \LaTeX\ encodings occur in \fontinst only as names and only in - relation to \fd files. It is unlikely that you will need to create - one of your own. The mappings defined by font encodings are on the - other hand of great importance and \etx files are used to direct - the generation of virtual fonts. Advanced \fontinst users may well - find that they need to create new font encodings to achieve their - goals. -\end{description} - -% You're probably familiar with ASCII -% encoding, which has the letter `A' in slot~65, `B' in slot~66, -% and so on. That's it, really. \TeX\ uses several different -% encodings. The most common ones are OT1 (the original \TeX\ -% 7~bit encoding) and T1 (the newer \TeX\ 8~bit encoding). -% % -- much more on this later. - -The thing is that the average \PS font comes in Adobe standard -encoding, which, for example, has the glyph dotless~i `\i' in -slot~245. But \TeX\ \texttt{T1} encoding expects the glyph o~dieresis -`{\"o}' in that slot, and wants dotless~i in slot~25. So if you -tried to use a raw \PS font with \TeX, any time you tried to get -a `{\"o}', you'd get a `\i'; and every time you tried to get a `\i', -you'd get a blank, because Adobe standard encoding says that -slot~25 is empty. The process of dealing with this problem is -called `re-encoding', and is what \fontinst helps with. - -This might not make much sense yet; the best thing to do is relax. -There's a lot of things that need to be dealt with when you're -setting up \LaTeX\ to use a new font, so you can expect to be a -bit confused until you've done it a few times. - - -\subsection{What do you do with \fontinst?} - -If you're using \fontinst, the usual steps you need to take to use -an ordinary \PS text font with \LaTeX\ are these: - -\begin{enumerate} -\item Give the \afm files an appropriate name. -\item Use \fontinst to produce an |8r| encoded \pl files from - these \afm files. -\item Use \fontinst to create T1 and OT1 encoded \pl and \vpl - files from the |8r| encoded \pl files (this procedure will also - create suitable \fd files). -\item Use \pltotf to turn each \pl file into a \tfm file. -\item Use \vptovf to turn each \vpl file into a pair of \vf and - \tfm files. -\item Move the \tfm, \vf, and \fd files into the appropriate - directories so \LaTeX\ can see them. -\item Tell your DVI driver about the new font (edit \dvips's - \texttt{psfonts.map} file, or \OzTeX's \texttt{Default} - configuration file. -\item Perhaps write a package file to make selecting the new font - a little easier. -\item Test it. -\end{enumerate} - - -\section{Fontmaking commands} - -There are three main types of files that you may write to control what -\fontinst does: \emph{command files} (usually with suffix -\setdotfilename{tex}), \emph{encoding definition files} (suffix -\setdotfilename{etx}), and \emph{metric files} (suffix -\setdotfilename{mtx}). Command files directly tell \fontinst to do -things, whereas the purpose of an encoding or metric file is more to -store data, but all three file types are technically sequences of -\TeX\ commands that \fontinst execute when reading the file. Normal -\TeX\ syntax rules apply in all three file types, although a few -commands may behave in unfamiliar ways. - -Within the command file category, it is possible to discern certain -subcategories. Most command files are written for one particular -task, but some are common pieces that have been factored out from -larger command files and are merely meant to be |\input| where -appropriate. (\setfilename{csc2x.tex} in the \fontinst distribution is -an example of this latter kind.) One may also distinguish between -command files that are made for use with \setfilename{fontinst.sty} -command definitions and command files that are made for use with -\setfilename{finstmsc.sty} command definitions. This section documents -the commands that are particular to the former category, whereas the -next section documents commands that are particular to the latter. - - -\subsection{Install commands} - -The core fontmaking takes place within a block of ``install -commands''. (This name is a bit unfortunate since nothing is actually -installed; rather some files that need to be installed are generated.) -Such blocks have the structure -\begin{quote} - |\installfonts|\\ - \m{install commands}\\ - |\endinstallfonts| -\end{quote} -The \m{install commands} describe the fonts, glyphs and encodings used -to build fonts, whereas the purpose of the delimiting |\installfonts| -and |\endinstallfonts| are rather to organise the writing of \fd files. -\begin{decl*} - |\installfonts|\\ - |\endinstallfonts| -\end{decl*} -At |\installfonts|, \fontinst's internal list of \fd files to generate -are cleared. At |\endinstallfonts|, \fd files are written for those -combinations of encoding and font family that appeared in the -\meta{install commands}. - -\begin{hackernote} - |\installfonts|, |\endinstallfonts|, and the individual - install commands between them also cooperate in a rather complicated - grouping scheme to cache glyphbases. This may interfere with - non-\fontinst commands in the \meta{install commands}. If for - example an assignment to some |\tracing|\dots\ parameter here does - not seem to have any effect, try making the assignment |\global|. -\end{hackernote} - -The most important \meta{install command} is -\begin{decl*} - |\installfont|\arg{font-name}\arg{metrics-list}\arg{etx-list}\\ - \hspace*{1.5em}\arg{encoding}\arg{family}\arg{series}% - \arg{shape}\arg{size} -\end{decl*} -This produces a \TeX\ virtual font called \m{font-name}. The -\meta{metrics-list} and the \meta{etx-list} determine this font, -whereas the other arguments specify how the \fd file will declare it -for \LaTeX. The \m{encoding}, \m{family}, \m{series}, and \m{shape} -are precisely the NFSS parameters. The \m{size} is either a shorthand -declared by \verb|\declaresize| (see below), or is an \fd size -specification. - -Like most \fontinst lists, the elements in the \meta{metrics-list} and -\meta{etx-list} are separated by commas (so-called comma-separated -lists). In their simplest form, the elements of these lists are file -names (minus suffixes): \mtx files in the \meta{metrics-list} and -\etx files in the \meta{etx-list}. First the \mtx files are processed -to build up a glyphbase, i.e., store definitions of glyphs and their -metric properties in memory, and then the \etx files are processed -(several times) to select a set of glyphs and write the corresponding -information to a \vpl file. - -For example, to install the \texttt{T1}-encoded Times Roman font -(using \texttt{t1.etx} and \texttt{latin.mtx}), you say: -\begin{verbatim} - \installfont{ptmr8t}{ptmr8r,latin}{t1} - {T1}{ptm}{m}{n}{} -\end{verbatim} -To install a \texttt{OT1}-encoded Times Roman font, with a scaled -version of Symbol for the Greek letters, you say: -\begin{verbatim} - \installfont{zptmrsy}{ptmr8r,psyr scaled 1100,latin}{ot1} - {OT1}{ptm}{m}{n}{} -\end{verbatim} - -As the second example indicates, there is more to the list items than -just file names. In the case of an metrics list item, the syntax -permits the two forms -\begin{decl*} - \meta{filename}\meta{optional modifiers}\\ - |\metrics| \meta{metric commands} -\end{decl*} -\NEWfeature{v1.923} -where an \meta{optional modifier} is one of -\begin{decl*} - \verb*| scaled |\meta{rawscale factor}\\ - \verb*| suffix |\meta{glyph name suffix}\\ - \verb*| encoding |\meta{etx}\\ - \verb*| option |\meta{string} -\end{decl*} -A list item may contain several such modifiers, but most commonly it -does not contain any. The -\meta{metric commands} are explicit metric commands, as described in -Section~\ref{Sec:Metric}; this latter feature is meant for minor -adjustments that you don't want to bother creating a separate \mtx -file for. - -The \meta{filename} above primarily refers to a file -\meta{filename}\texttt{.mtx}, but that need not always exist before -executing the above command. If there exists a \pl, \afm, or \vpl file -with the right name then that is first converted to a corresponding -\mtx file. However, a special case occurs if there is an |encoding| -modifier: this forces conversion of a \pl or \vpl file even if an -\mtx file exists, and also forces using the specified \etx file when -assigning glyph names to the slots of that file. Normally the choice -of \etx file for such conversions to \mtx is based on -|\declareencoding| declarations. - -The |scaled| modifier sets the \texttt{rawscale} variable for the -processing of that file. This has the effect of scaling all raw -glyphs from that file to \meta{rawscale factor} per milles of their -previous size. The |suffix| modified causes the \meta{glyph name -suffix} to be implicitly appended to all glyphs defined by this file. -The |option| modifier adds the \meta{string} to the list of ``options'' -for this file. The |\ifoption| command can be used in the file to test -whether a particular string has been supplied as an option. - -\begin{hackernote} - In general, \fontinst commands process comma-separated list arguments - by first splitting at commas and then fully expanding each item, but - this \meta{metrics-list} argument is an exception. This is first - fully expanded (|\edef|) and then split into items. The difference - is that a macro used in this \meta{metrics-list} argument can expand - to several list items, whereas a macro used in an ordinary - comma-separated list argument can only expand to (part of) a single - list item. - - The |\metrics| list items do however constitute an exception within - this exception. These list items are in their entirety protected - from the initial full expansion, so you don't have to worry about - peculiar fragility errors there. -\end{hackernote} - -The elements in the \meta{etx-list} have fewer variants, but there is -still a general syntax -\begin{decl*} - \meta{filename}\meta{optional modifiers} -\end{decl*} -The \meta{optional modifier}s permitted are: -\begin{decl*} - \verb*| mtxasetx|\\ - \verb*| option |\meta{string} -\end{decl*} -The \texttt{option} one is as for metric files. \texttt{mtxasetx} is -probably only relevant for use with |\installrawfont| (see below). - - -\begin{decl}[v1.912] - |\installfontas|\arg{font-name}\\% - \hspace*{1.5em}\arg{encoding}\arg{family}\arg{series}% - \arg{shape}\arg{size} -\end{decl} -This install command adds an \fd entry for the \meta{font-name}, but -it doesn't actually generate that font. Usually that font was -generated by a previous |\installfont|, and this is used to create -additional entries for the font. - - -\begin{decl} - |\installrawfont|\arg{font-name}\arg{metrics-list}\arg{etx-list}\\ - \hspace*{1.5em}\arg{encoding}\arg{family}\arg{series}% - \arg{shape}\arg{size} -\end{decl} -This is similar to |\installfont| except that it produces -a \TeX\ raw font as \pl file rather than a virtual font. Often a \pl -font with the specified name will already exist when this command is -called, and that will then be overwritten. These two \pl files will -typically be somewhat different. -The normal reason for using this command is that one wishes to -``refine'' the metrics of a font that was generated by transformation -commands. - -For example, to install an \texttt{8r}-encoded Times Roman raw font -(using \texttt{8r.etx} and \texttt{8r.mtx}), you say: -\begin{verbatim} - \installrawfont{ptmr8r}{ptmr8r,8r}{8r} - {8r}{ptm}{m}{n}{} -\end{verbatim} - -The effect of a -\begin{decl*}[v1.923] - \meta{filename}\verb*| mtxasetx| -\end{decl*} -in the \meta{etx-list} is not that \meta{filename}\texttt{.etx} is -read, but that \meta{filename}\texttt{.mtx} is read. The -interpretation of the commands in this file is however not the -customary, and almost the only thing paid attention to is the -correspondence between glyph names and slot numbers that is provided -by the |\setrawglyph| and |\setscaledrawglyph| commands; this -correspondence is treated as if it was given by |\setslot| \dots\ -|\endsetslot| commands in an \etx file. This is however only -guaranteed to work with transformable metric files. - -The purpose of this feature is to simplify installation of fonts with -very special encodings, such as ``Dingbat'' or ``Pi'' fonts. Instead -of creating an \etx file, which would probably only be useful with -that particular font, one can make use of the fact that the -interesting information is anyway available in the \mtx file. To -install Zapf Dingbats in their default encoding, one can thus say -\begin{verbatim} - \installrawfont{pzdr}{pzdr}{pzdr mtxasetx} - {U}{pzd}{m}{n}{} -\end{verbatim} - -Unlike the case with |\installfont|, which actually creates a real -(although virtual) font, |\installrawfont| can only create the -metrics for a font. The \dvi driver will require some other kind of -implementation of this font, usually an entry in some map file (e.g. -\texttt{psfonts.map}, in the case of \dvips) that links the \TeX\ font -name to e.g.\ a \PS\ font name and file. (Many \dvi drivers are -configured in such a way that they, without such a map file entry, -will call Metafont with the font name and thereby raise a sequence of -error messages about a \setdotfilename{mf} that doesn't exist. These -results are often rather confusing.) - - - -\begin{decl} - |\installfamily|\arg{encoding}\arg{family}\arg{fd-commands} -\end{decl} -This tells \fontinst to write an \fd file for the given combination -of encoding and family, and clears the internal list of entries to -put in that file. |\installfamily| commands usually come first in each -block of \meta{install commands}. - -For example, to produces a \LaTeX\ family with the \texttt{T1}-encoded -Times family, you say: -\begin{verbatim} - \installfamily{T1}{ptm}{} -\end{verbatim} -The \m{fd-commands} are executed every time a font in that family is -loaded, for example to stop the Courier font from being hyphenated you -say: -\begin{verbatim} - \installfamily{T1}{pcr}{\hyphenchar\font=-1} -\end{verbatim} -In more recent versions of \fontinst, the |\installfamily| command is -only necessary if you want the \m{fd-commands} argument to be -nonempty, but it doesn't hurt to make it explicit. - -\begin{hackernote} - The \m{fd-commands} argument is tokenized with the current catcodes - and written to file without expansion. In particular this means - that spaces will be inserted after all control sequences whose - names consists of letters, which can be unexpected if you intend to - make use of control sequences whose names contain |@| characters. -\end{hackernote} - - - - -\subsection{Transformation commands} - - -\begin{decl} - |\transformfont|\arg{font-name}\arg{transformed font} -\end{decl} -This makes a raw transformed font, for example expanded, slanted, -condensed or re-encoded. \emph{It is the responsibility of the device - driver to implement this transform.} Each \verb|\transformfont| -command writes out an \mtx file and a raw \pl file for \m{font-name}. - -The following commands are valid \m{transformed font}s: -\begin{decl*} - |\fromafm|\arg{afm}\\ - |\fromany|\arg{whatever}\\ - |\frompl|\arg{pl}\\ - |\fromplgivenetx|\marg{pl}\marg{etx}\\ - |\frommtx|\arg{mtx} -\end{decl*} -This reads the metrics of a font which is about to be transformed from -an external file. |\fromafm|, |\frompl|, and |\fromplgivenetx| write out -an \mtx file corresponding to the \afm or \pl file. In addition, -|\formafm| also writes out a raw \pl file, containing just the glyph -metrics but no kerning information. |\fromplgivenetx| permits -specifying which encoding file to use when associating glyph names to -slots, whereas |\frompl| tries to guess this from the -\texttt{CODINGSCHEME} property of the \pl file. |\fromany| looks for -a file in any of the formats (in the order \mtx, \pl, \afm) and -behaves as the first |\from|\dots\ for which it found a file. - -A \m{transformed font} may also be one of the following: -\begin{decl*} - |\scalefont|\arg{integer expression}\arg{transformed font}\\ - |\xscalefont|\arg{integer expression}\arg{transformed font}\\ - |\yscalefont|\arg{integer expression}\arg{transformed font}\\ - |\slantfont|\arg{integer expression}\arg{transformed font} -\end{decl*} -This applies a geometric transformation to the font metrics of -\m{transformed font}. The scale factor or slant factor are given in -1000 units to the design size. Typical examples are 167 for slanted -fonts or 850 for condensed fonts. - -The final case of a \m{transformed font} is: -\begin{decl*} - |\reencodefont|\arg{etx}\arg{transformed font} -\end{decl*} -This rearranges the encoding vector of \m{transformed font} to match -the encoding given by the \etx file. - - -For example, to create an oblique, |8r|-encoded version of Adobe Times -called \texttt{ptmro8r} you say: -\begin{verbatim} - \transformfont{ptmro8r}{ - \reencodefont{8r}{ - \slantfont{167}{\fromafm{ptmr8a}} - } - } -\end{verbatim} -This will create \texttt{ptmr8a.mtx}, \texttt{ptmr8a.pl}, -\texttt{ptmro8r.mtx} and \texttt{ptmro8r.pl}, which can then be used -as raw fonts in \verb|\installfont| commands. The equivalent -transformation can also be achieved in two steps: -\begin{verbatim} - \transformfont{ptmr8r}{\reencodefont{8r}{\fromafm{ptmr8a}}} - \transformfont{ptmro8r}{\slantfont{167}{\frommtx{ptmr8r}}} -\end{verbatim} -This will create \texttt{ptmr8a.mtx}, \texttt{ptmr8a.pl}, -\texttt{ptmr8r.mtx}, \texttt{ptmr8r.pl}, \texttt{ptmro8r.mtx} and -\texttt{ptmro8r.pl}. - -You will have to inform your device driver about the transformed font, -using the syntax appropriate for that driver. For example, in \dvips -you add a line to \texttt{psfonts.map}: -\begin{verbatim} - ptmro8r Times-Roman ".167 SlantFont TeXBase1Encoding ReEncodeFont" <<8r.enc -\end{verbatim} -See Section~\ref{Sec:Mapmaking} and -Subsection~\ref{Ssec:MapFragments} for details on how to generate -such lines automatically. - - -\subsection{Reglyphing commands} - -``Reglyphing'' is an \mtx file transformation that changes glyph -names but leaves the slot numbers and metrics as they were; -optionally it may drop some of the metric commands. See -Subsection~\ref{Ssec:Des:Reglyph} for an introduction to this. - -\begin{decl} - |\reglyphfonts|\\ - |\endreglyphfonts| -\end{decl} - -\begin{decl} - |\reglyphfont|\marg{destination font}\marg{source font} -\end{decl} - -\begin{decl} - |\renameglyph|\marg{to}\marg{from}\\ - |\renameglyphweighted|\marg{to}\marg{from}\marg{weight}\\ - |\killglyph|\marg{glyph}\\ - |\killglyphweighted|\marg{glyph}\marg{weight} -\end{decl} - -\begin{decl} - |\offmtxcommand|\marg{command}\\ - |\onmtxcommand|\marg{command} -\end{decl} - - - - -\subsection{Miscellaneous settings} - -\begin{decl} - |\substitutesilent|\arg{to}\arg{from}\\ - |\substitutenoisy|\arg{to}\arg{from} -\end{decl} -This declares a \LaTeX\ font substitution, that the series or shape -\m{to} should be substituted if necessary by the series or shape -\m{from}. \verb|\substitutesilent| means that when the font -substitution is made, no warning will given. - -\verb|\substitutenoisy| is the same as \verb|\substitutesilent|, but -gives a warning when the substitution is made by \LaTeX. - -For example, to say that the series |bx| can be replaced by the -series |b|, you say: -\begin{verbatim} - \substitutesilent{bx}{b} -\end{verbatim} -To say that the shape |ui| can be replaced by the shape |i|, you say: -\begin{verbatim} - \substitutenoisy{ui}{it} -\end{verbatim} - -The following weight substitutions are standard: -\begin{verbatim} - \substitutesilent{bx}{b} - \substitutesilent{b}{bx} - \substitutesilent{b}{sb} - \substitutesilent{b}{db} - \substitutesilent{m}{mb} - \substitutesilent{m}{l} -\end{verbatim} -The following shape substitutions are standard: -\begin{verbatim} - \substitutenoisy{ui}{it} - \substitutesilent{it}{sl} - \substitutesilent{sl}{it} -\end{verbatim} - -The |\installfontas| command should be considered as an -alternative to using font substitution, as it gives much finer -control over what \fd entries will be made. - - -\begin{decl} - |\declaresize|\arg{size}\arg{fd-size-range} -\end{decl} -This declares a new size, and gives the \fd size specifications for -it. For example, \url{fontinst.sty} declares the following sizes: -\begin{verbatim} - \declaresize{}{<<->>} - \declaresize{5}{<<5>>} - \declaresize{6}{<<6>>} - \declaresize{7}{<<7>>} - \declaresize{8}{<<8>>} - \declaresize{9}{<<9>>} - \declaresize{10}{<<10>>} - \declaresize{11}{<<10.95>>} - \declaresize{12}{<<12>>} - \declaresize{14}{<<14.4>>} - \declaresize{17}{<<17.28>>} - \declaresize{20}{<<20.74>>} - \declaresize{25}{<<24.88>>} -\end{verbatim} - -\begin{decl} - |\declareencoding|\arg{string}\arg{etx} -\end{decl} -This declares which \etx file corresponds to which \texttt{codingscheme} -string. For example, \url{fontinst.sty} declares the following -encoding strings: -\begin{verbatim} - \declareencoding{TEX TEXT}{ot1} - \declareencoding{TEX TEXT WITHOUT F-LIGATURES}{ot1} - \declareencoding{TEX TYPEWRITER TEXT}{ot1tt} - \declareencoding{TEX MATH ITALIC}{oml} - \declareencoding{TEX MATH SYMBOLS}{oms} - \declareencoding{TEX MATH EXTENSION}{omx} - \declareencoding{EXTENDED TEX FONT ENCODING - LATIN}{t1} - \declareencoding{TEX TEXT COMPANION SYMBOLS 1---TS1}{ts1} - \declareencoding{TEXBASE1ENCODING}{8r} - \declareencoding{TEX TYPEWRITER AND WINDOWS ANSI}{8y} -\end{verbatim} - - - - - -\subsection{Other} - -The following commands also belong to this section, but there is -currently no description of them here. - - -|\afmtomtx|\marg{afmfile}\marg{mtxfile} - -|\endrecordtransforms| - -|\etxtopl|\marg{encoding list}\marg{plfile} - -|\etxtovpl|\marg{encoding list}\marg{vplfile} - -|\fakenarrow|\marg{width factor} - -|\generalpltomtx|\marg{plfile}\marg{mtxfile}\marg{plsuffix}\marg{opt-enc} - -|\latinfamily|\marg{family}\marg{commands} - -|\mtxtomtx|\marg{source MTX}\marg{destination MTX} - -|\mtxtopl|\marg{mtxfile}\marg{plfile} - -|\NOFILES| - -|\recordtransforms|\marg{filename} - - - - -\section{Mapmaking commands} -\label{Sec:Mapmaking} - -The commands described in this section are for use with command files -that input \texttt{finstmsc.sty}. - - -\subsection{Mapfile command reference} - -For an introduction to making map file entries, see -Subsection~\ref{Ssec:MapFragments}. - -\begin{decl} - |\adddriver|\marg{driver name}\marg{fragment file name} -\end{decl} -This opens the file \meta{fragment file name} for writing mapfile -entries to. The \meta{driver name} selects the format of these -entries. - -\begin{decl} - |\makemapentry|\marg{\TeX\ font name} -\end{decl} -This causes a mapfile entry for the specified font to be written to -all files currently open for receiving mapfile entries. These -commands are usually automatically generated by \fontinst. - -\begin{decl} - |\donedrivers| -\end{decl} -This closes all files open for receiving mapfile entries. - - -\subsection{Drivers} - -The \meta{driver name}s that may be used with |\adddriver| are: - -\begin{decl} - |dvips| -\end{decl} -The \dvips driver. The mapfiles generated are useful also with pdf\TeX. - -\begin{decl} - |dvipdfm| -\end{decl} -The \setpackagename{dvipdfm} \dvi-to-\pdf driver. Not much tested, -but appears to work. - -\begin{decl}[v1.915] - |pltotf| -\end{decl} -Not really a \dvi driver. The file that is generated is a shell -script of \texttt{pltotf} commands for converting precisely those \pl -files which are needed to \tfm files (\fontinst generally generates -also a bunch of \pl files that in the end turn out to be -unnecessary). The \texttt{TFMfileprefix} variable can be used to -specify a path to the directory where these files should be placed. - -\begin{decl} - |debug| -\end{decl} -Not a \dvi driver either, but for each base font a report on the -information that was available. Useful if you need to write the -driver file yourself. - - -\subsection{Configuration commands} - -The following commands configure the generation of mapfile entries, -mostly with respect to how various pieces of information are deduced -from other pieces. - -\begin{decl} - |\AssumeAMSBSYY|\\ - |\AssumeBaKoMa|\\ - |\AssumeLWFN|\\ - |\AssumeMetafont| -\end{decl} - -\begin{decl} - |\declarepsencoding|\marg{etx}\marg{postscript name}\marg{action} -\end{decl} - -\begin{decl} - |\specifypsfont|\marg{PS font name}\marg{actions} -\end{decl} - - -An \meta{action} is one of -\begin{decl*}[v1.928] - |\download|\marg{file}\\ - |\fulldownload|\marg{file} -\end{decl*} -where \meta{file} is a file to download (`download' typically means -``include in the generated \PS output or equivalent''). The difference -between |\download| and |\fulldownload| have to do with how partial -downloading (subsetting) of fonts should be handled. |\download| means -use the driver's defaults (often settable via command line options) -for this. |\fulldownload| means don't subset: always include the full -font, if \fontinst knows how to express this in a map file entry for -this particular driver. - -Additional actions could be added in the future, if there is a need -for them. - - -\begin{decl} - |\storemapdata|\marg{\TeX\ font name}\marg{source}\marg{transforms} -\end{decl} -This records information about how the font named \meta{\TeX\ font -name} was generated. Such commands are usually found in the file of -recorded transforms. If a font is encountered for which no -information has been stored, then the corresponding \mtx file will be -sourced, looking for a |\storemapdata| command there. - -A \meta{source} is one of -\begin{decl*} - |\fromafm|\marg{AFM name}\marg{PS name}\\ - |\frompl|\marg{PL name}\\ - |\frommtx|\marg{MTX name}\\ - |\fromvpl| -\end{decl*} -Note that several of them have a different syntax and meaning than -they do in fontmaking command files. - -A \meta{transform} is one of -\begin{decl*} - |\reencodefont|\marg{etx}\\ - |\reglyphfont|\\ - |\transformfont|\marg{x-scale}\marg{slant-scale} -\end{decl*} -Note that all of these have a different meaning than they do in -fontmaking command files. - -\begin{decl} - |\debugvalue|\arg{name} -\end{decl} -This adds a value to the list of those that are reported by the -\texttt{debug} driver. Example: -\begin{verbatim} - \debugvalue{PS_font_file} -\end{verbatim} - - - -\subsection{Basic conversion commands} - -Some of the basic ``convert an $X$ file to a $Y$ file'' commands in -\fontinst are not useful as part of a fontmaking run, and are -available only in \texttt{finstmsc.sty} to conserve some memory. - -\begin{decl} - |\enctoetx|\marg{encfile}\marg{etxfile} -\end{decl} -This reads the file \meta{encfile}\texttt{.enc} which should be -simple \PS code defining a \PS encoding vector and generates a -corresponding rudimentary \fontinst encoding file -\meta{etxfile}\texttt{.etx}. It's a basic ``import encoding to -\fontinst'' command. - -\begin{decl}[v1.911] - |\etxtoenc|\marg{etxfiles}\marg{encfile} -\end{decl} -This does the opposite of |\enctoetx|; the information in the \etx -files that is converted is the correspondence between slots and glyph -names. -\NEWfeature{v1.927} -The \meta{etxfiles} argument is a comma-separated list of encoding -files which are superimposed to generate the \PS encoding. The first -|\setslot| for a particular slot is the one which decides which glyph -will be placed there. - -\begin{decl}[v1.928] - |\etxtocmap|\marg{etxfile}\marg{cmapfile} -\end{decl} -This reads an \etx file and generates a corresponding ToUnicode CMap -file; the information that is converted is the map from slot numbers -to |\Unicode| code points. - - - - -\section{General commands} - - - -This section describes commands and mechanisms that are the same in -all file types. Commands that are particular for one type of file are -described in subsequent sections. - - -\subsection{Variables} - -Many (but not all) of the activities \fontinst perform can be -understood as either ``setting variables'' or ``formatting and writing -to file data stored in some variable''. The accessing of variables is -an important aspect of how \fontinst works. - -Variables come in different types and variables of different types -live in different namespaces; |\int{foo}|, |\str{foo}|, and -|\dim{foo}| refer to three different variables which are all named -|foo|. Variables are either set or not set. Unless the contrary is -stated explicitly, variables default to not being set. It is an error -to access the value of a variable that has not been set. \Fontinst -variable assignments are as a rule local, i.e., will be undone when -the enclosing \TeX\ group is ended. Most command file commands that -cause files to be read will begin a group before reading the file(s) -and end the group at some point after having read them. - -Taking string variables as an example, there are three commands for -changing a string variable: -\begin{decl*} - |\setstr|\arg{name}\arg{string expression}\\ - |\resetstr|\arg{name}\arg{string expression}\\ - |\unsetstr|\arg{name} -\end{decl*} -The |\resetstr| command unconditionally sets the string variable -\meta{name} to the full expansion of the \meta{string expression}. -The |\unsetstr| command unconditionally renders the string variable -\meta{name} unset. If the the string variable \meta{name} is -currently unset then the |\setstr| command will set it to the full -expansion of the \meta{string expression}, but if it already is set -then |\setstr| does nothing. - -This pattern with three commands, one |\set|\dots\ which only sets -unset variables, one |\reset|\dots\ which sets variables regardless of -whether they have been set or not, and one |\unset|\dots\ which unsets -variables is recurring in \fontinst. Variables are most commonly set -using some |\set|\dots\ command; this has the effect that the first -command to try to set a variable is the one which actually sets it. - -If |\set|\dots\ is the command for setting the value of a variable, -the command for getting that value has the same name without the -|set| part, e.g., |\setint|--|\int|, |\setkern|--|\kern|, etc. There -are typically also conditionals for testing whether variables are -set, and these take the form |\ifis|\dots\arg{name}|\then|. - - -The following commands for changing the value of a variable can be -used anywhere: - -\begin{decl} - |\setdim|\arg{dim}\arg{dimension}\\ - |\setint|\arg{int}\arg{integer expression}\\ - |\setstr|\arg{str}\arg{string expression} -\end{decl} -If the dimension variable \m{dim} is currently undefined, it is -defined to be the current value of \m{dimension}. - -If the integer variable \m{int} is currently undefined, it is -defined to be the current value of \m{integer expression}. - -If the string variable \m{str} is currently undefined, it is -defined to be the current value of \m{string expression}. - -\begin{decl} - |\setcommand|\arg{command}\meta{parameter text}\arg{replacement text} -\end{decl} -If the command \m{command} is currently undefined, it is defined to -grab parameters as specified by the \meta{parameter text} and then -expand to the \m{replacement text}. This uses the same syntax for -parameters as the \TeX\ \verb|\def| command. -\begin{center} - \begin{tabular}{r l} - No. parameters& \meta{parameter text}\\ - 0& (empty)\\ - 1& |#1|\\ - 2& |#1#2|\\ - 3& |#1#2#3|\\ - \multicolumn{2}{c}{and so on.} - \end{tabular} -\end{center} -Some examples: -\begin{verbatim} - \setcommand\lc#1#2{#2} - \setcommand\lc#1#2{#1small} -\end{verbatim} -With the first definition, |\lc{A}{a}| expands to |a|, but with the -second it expands to |Asmall|. - -\begin{decl} - |\resetdim|\arg{dim}\arg{dimension}\\ - |\resetint|\arg{int}\arg{integer expression}\\ - |\resetstr|\arg{str}\arg{string expression} -\end{decl} -The dimension variable \m{dim} is defined to be the current value -of \m{dimension}. - -The integer variable \m{int} is defined to be the current value of -\m{integer expression}. - -The string variable \m{str} is defined to be the current value of -the \m{string expression}. (|\resetstr| mostly boils down to a \TeX\ -|\edef| command.) - -\begin{decl} - |\resetcommand|\arg{command}\meta{parameter text}\arg{replacement text} -\end{decl} -The command \m{command} is defined to grab parameters as specified by -the \meta{parameter text} and then expand to the \m{replacement text}. -This is a synonym for the \TeX\ \verb|\def| command. - -\begin{decl} - |\unsetdim|\arg{dim}\\ - |\unsetint|\arg{int}\\ - |\unsetstr|\arg{str}\\ - |\unsetcommand|\arg{command} -\end{decl} -Makes \m{dim}, \m{int}, \m{str}, or \m{command} an undefined -dimension, integer, string or command. - -\begin{decl}[v1.900] - |\offcommand|\marg{command}\\ - |\oncommand|\marg{command} -\end{decl} -|\offcommand| turns off a command, i.e., it redefines it to do -nothing (while still taking the same number of arguments). -|\oncommand| turns a command back on, i.e., it restores the -definition the command had before a previous |\offcommand|. Using -|\offcommand| on a command that is already off or |\oncommand| on a -command that is not off has no effect. - - -\subsection{Argument types} - -There are roughly six types of arguments that \fontinst -commands can take. These are -\begin{itemize} - \item integer expressions, - \item string expressions, - \item comma-separated lists of string expressions, - \item dimensions, - \item commands (i.e., \TeX\ control sequences), and - \item other (pretty much ``none of the above''). -\end{itemize} -Integer expressions are explained in Subsection~\ref{Sec:integer} -below. - -The most common form of a string expression is simply a sequence of -character tokens, but any balanced text which expands to such a -sequence of tokens is legal. Several of the standard \etx files use -macros in string expressions to make glyph names to some extent -configurable. Besides such custom macros, the following \fontinst -commands may be used to access variable values inside a string -expression -\begin{decl*} - |\strint|\arg{int}\\ - |\str|\arg{str}\\ - |\dim|\arg{dim} -\end{decl*} -Incidentally, these \m{int}, \m{str}, and \m{dim} are themselves -string expressions (for the names of integer, string, and dimen -respectively variables). - -Dimensions are simply \TeX\ \meta{dimen}s; their use is rather -limited. \Fontinst does not provide for any sort of ``dimen -expressions''. Most actual lengths are expressed as integer -expressions, in \afm units ($1/1000$ of the font size). - -Common to integer expressions, string expressions, and -dimensions is that these argument types get expanded during -evaluation (in the case of string expressions, this expansion -\emph{is} the evaluation), which means one can use macros in -arguments of these types. Command arguments do not get -expanded---they are mainly used with commands that modify the -definitions of other commands. - -Comma-separated lists of string expressions are first split at commas -(without prior expansion) and each element is then treated as a -string expression (i.e., \emph{gets expanded}). (As remarked elsewhere, -the \meta{metrics-list} argument of |\installfont| is not properly a -comma-separated list of string expressions, even though it may look -like one.) -As for the ``other'' arguments one cannot give any rules: they -might get expanded, but it could also happen that they won't. - - - -\subsection{Integer expressions} -\label{Sec:integer} - -The \emph{integer expressions} provide a user-friendly syntax for -\TeX\ arithmetic. They are used to manipulate any integers, -including glyph dimensions, which are given in \afm units, that is -1000 to the design size. \TeX\ \pl fonts have their dimensions -converted to \afm units automatically. - -The \emph{integer expressions} are: - -\begin{decl} - \m{number} -\end{decl} -Returns the value of a \TeX\ \m{number} (as explained in -\emph{The \TeX book}). Typical examples of this kind of integer -expression are |0|, |1000|, |538|, |-20|, etc. - -\begin{decl} - |\int|\arg{int} -\end{decl} -Returns the value of the integer variable \m{int}. - -\begin{decl} - |\width|\arg{glyph}\\ - |\height|\arg{glyph}\\ - |\depth|\arg{glyph}\\ - |\italic|\arg{glyph} -\end{decl} -Returns the width, height, depth, or italic correction of the glyph -variable \m{glyph}. - -\begin{decl} - |\kerning|\arg{left}\arg{right} -\end{decl} -Returns the kerning between the \m{left} and \m{right} glyphs. Unlike -other types of variable accesses, where it is an error to access -something that has not been explicitly set, this command returns |0| -if no kern has been set between the two glyphs. - -\begin{decl} - |\neg|\arg{integer expression}\\ - |\add|\arg{integer expression}\arg{integer expression}\\ - |\sub|\arg{integer expression}\arg{integer expression}\\ - |\max|\arg{integer expression}\arg{integer expression}\\ - |\min|\arg{integer expression}\arg{integer expression}\\ - |\mul|\arg{integer expression}\arg{integer expression}\\ - |\div|\arg{integer expression}\arg{integer expression}\\ - |\scale|\arg{integer expression}\arg{integer expression}\\ - |\half|\arg{integer expression}\\ - |\otherhalf|\arg{integer expression} -\end{decl} -|\neg| returns the negation of the \m{integer expression}. - -|\ad| returns the sum of the two \m{integer expression}s. - -|\sub| returns the first \m{integer expression} minus the second. - -|\max| returns the maximum of the two \m{integer expression}s. - -|\min| returns the minimum of the two \m{integer expression}s. - -|\mul| returns the product of the two \m{integer expression}s. - -|\div| returns the first \m{integer expression} divided by the second. - -|\scale| returns the first \m{integer expression} times the second, -divided by 1000. |\scale| does better rounding than the corresponding -combination of |\mul| and |\div|. - -|\half| returns half the \m{integer expression}. It does better -rounding than |\scale|\arg{integer expression}|{500}| or -|\div|\arg{integer expression}|{2}|. - -|\otherhalf| returns the ``other half'' of the \m{integer -expression}, i.e., the sum of |\half| something and |\otherhalf| the -same thing is that thing back. - - -\subsection{Conditionals and loops} - -\Fontinst has a rather extensive family of conditionals (|\if|s), and -as of late also some convenient loop commands. The most common forms -of a \fontinst conditional are -\begin{decl*} - |\if|\dots \meta{argument(s)}|\then| \meta{then branch} |\Fi|\\ - |\if|\dots \meta{argument(s)}|\then| \meta{then branch} |\Else| - \meta{else branch} |\Fi| -\end{decl*} -i.e., \fontinst uses Plain\TeX\ style conditionals rather than \LaTeX\ -style conditionals. Every |\if|\dots\ command can be thought of as -testing some condition. If the condition is true then the \meta{then -branch} will be executed, but not the \meta{else branch} (if there is -one). If the condition is false then the \meta{then branch} will nor be -executed, but if there is an \meta{else branch} then that will be -executed. Conditionals may be nested (i.e., occur in the then or else -branch). - -\begin{hackernote} - The |\then| is not just syntactic sugar, but a functional part of - those conditionals which take arguments. Its purpose is to look - like an |\if| to \TeX\ when the conditional occurs in a skipped - branch of another conditional. -\end{hackernote} - -The most common conditionals are those which test if a variable is set. -\begin{decl*} - |\ifisint|\arg{int}|\then|\\ - |\ifisdim|\arg{dim}|\then|\\ - |\ifisstr|\arg{str}|\then|\\ - |\ifiscommand|\arg{command}|\then| -\end{decl*} -These cause the following \meta{then branch} to be executed if the -specified variable is set, and the \meta{else branch} to be executed -if the variable is not set. The \meta{int}, \meta{dim}, and -\meta{str} are string expressions for the names of an integer, -dimension, and string respectively variable. The \meta{command} is -the actual control sequence (command variable) that should be tested. - -\begin{decl} - |\ifisglyph|\arg{glyph}|\then| -\end{decl} -This similarly tests if a glyph (also a variable of a kind) is set in -the current glyph base. The glyph name \meta{glyph} is a string -expression. - -\begin{decl}[v1.917] - |\ifareglyphs|\marg{glyph list}|\then| -\end{decl} -This command tests whether all the glyphs in the \meta{glyph list} -(a comma-separated list of string expressions) are set in the current -glyph base. If one of the glyphs is not set then condition is false. - -\begin{decl}[v1.900] - |\ifnumber|\marg{integer expression}\meta{rel}% - \marg{integer expression}|\then| -\end{decl} -The \meta{rel} is one of \texttt{<}, \texttt{=}, and \texttt{>}. -This command evaluates the two \meta{integer expression}s and -then tests whether the specified relation holds between their values. - -\begin{decl}[v1.900] - |\ifiskern|\marg{glyph1}\marg{glyph2}|\then| -\end{decl} -This tests whether a kern has been set with \meta{glyph1} on the left -and \meta{glyph2} on the right (both arguments are string -expressions). This is almost the negation of -\begin{verbatim} - \ifnumber{\kerning{<glyph1>}{<glyph2>}}={0}\then -\end{verbatim} -but |\ifiskern| can distinguish the case that an zero kern has been -set (true) from the case that no such kern has been set (false), -which |\kerning| can not. It is however unlikely that this -distinction would ever be of use in a practical situation. - -\begin{decl}[v1.924] - |\ifoption|\marg{string}|\then| -\end{decl} -Test whether \meta{string} (a string expression) is among the current -list of options. This list is by default empty, elements are added -using |option| modifiers (cf.~the description of |\installfont|), and -the list is cleared for each new file for which one can specify -options. - -\begin{decl}[v1.909] - |\Else| - |\Fi| -\end{decl} -For \fontinst, these two control sequences are precisely the same as -the \TeX\ primitives |\else| and |\fi|, but things are a bit more -complicated in \fontdoc. The mechanism in \fontdoc\ that allows it to -present both branches of the conditional in the typeset output -requires that |\Else| and |\Fi| generate typeset output. See also the -|\showbranches| \fontdoc command. - -\begin{hackernote} - Before |\Else| and |\Fi| were introduced, the \TeX\ primitives - |\else| and |\fi| were used instead for \fontinst conditionals. - Back then, \fontdoc defined all conditionals to expand to |\iftrue|. - - It used to be the case that all conditionals would be fully - expandable (which in particular would have made it possible to use - them in string expressions), but that is no longer the case. -\end{hackernote} - - - -\begin{decl}[v1.901] - |\for|\parg{name}\marg{start}\marg{stop}\marg{step} - \meta{body} |\endfor|\parg{name} -\end{decl} -will cause the \meta{body} code to be repeated some number of times. -How many depends on the values of \meta{start}, \meta{stop}, and -\meta{step}, which are integer expressions. - -As a precaution, the \meta{body} is not allowed to contain any -empty lines (|\par| tokens). If you want to have the visual -separation (for sakes of legibility or otherwise), put a |%| -somewhere on the line---that makes it nonempty. - -\meta{name} is used as the name of an integer variable. This -variable gets reset to the value of \meta{start} before the first -repetition of \meta{body code}. After each repetition but the last, -it is incremented by \meta{step}. \meta{body} gets repeated if -the value of \meta{name} has not gotten past that of \meta{stop}. To -get past means to be bigger if \meta{step} is positive and to be -smaller if \meta{step} is negative. In the case that \meta{step} is -zero, the entire construction above will be equivalent to -\begin{quote} - |\resetint|\marg{name}\marg{start}\\ - \meta{body} -\end{quote} - -|\for| \textellipsis\ |\endfor| constructions can be nested. -\meta{name} is used by |\for| to identify its matching |\endfor|, so -they need to be identical in |\for| and |\endfor|. \textbf{Note} that -the delimiters around the \meta{name} are parentheses, not braces. - - -\begin{decl}[v1.901] - |\foreach|\parg{name}\marg{csep-list} - \meta{body} |\endfor|\parg{name} -\end{decl} -will cause the \meta{body} code to be repeated one time for each item -in the \meta{csep-list}. \meta{csep-list} is a comma-separated list -of string expressions. - -As a precaution, the \meta{body} is not allowed to contain any -empty lines (|\par| tokens). If you want to have the visual -separation (for sakes of legibility or otherwise), put a |%| -somewhere on the line---that makes it nonempty. - -\meta{name} is used as the name of a string variable. Before each -repetition of the \meta{body code}, this variable will get reset to -the next item in the \meta{csep-list}. - -|\foreach|\textellipsis\ |\endfor| constructions can be nested. -\meta{name} is used by |\foreach| to identify its matching |\endfor|, -so they need to be identical in |\foreach| and |\endfor|. -\textbf{Note} that the delimiters around the \meta{name} are -parentheses, not braces. - - - -\subsection{Other general commands} - -\begin{decl} - |\needsfontinstversion|\arg{version} -\end{decl} -This issues a warning if the current version of the \fontinst -package is less than \m{version}. - -\begin{decl} - |\needsTeXextension|\marg{extension tests}\marg{who}\\ - |\eTeX|\marg{version number}\\ - |\pdfTeX|\marg{version number}\marg{revision} -\end{decl} - -\begin{decl}[v1.915] - |\fontinstcc|\\ - |\normalcc| -\end{decl} -|\fontinstcc| switches to the catcodes used in e.g.\@ -\texttt{fontinst.sty}: |_| and |@| are letters, space and newline are -ignored, and |~| is a space. |\normalcc| switches back to normal -catcodes. - -\begin{decl}[v1.900] - |\begincomment| \meta{text} |\endcomment| -\end{decl} -This hides the \meta{text} from \fontinst processing, but allows it -to show up when the file is typeset with \fontdoc. - -\begin{decl}[v1.906] - |\fontinsterror|\marg{subsystem}\marg{error}\marg{help}\\ - |\fontinstwarning|\marg{subsystem}\marg{warning}\\ - |\fontinstwarningnoline|\marg{subsystem}\marg{warning}\\ - |\fontinstinfo|\marg{subsystem}\marg{info} -\end{decl} - -\begin{decl}[v1.906] - |\messagebreak| -\end{decl} - - -Finally, there are two Plain\TeX\ commands which should be mentioned: -\begin{decl*} - |\input| \meta{file name}\\ - |\bye| -\end{decl*} - - - - - -\section{Encoding files} - -An \emph{encoding file} (or \texttt{.etx} file) is a \TeX\ document -with the structure: -\begin{quote} - |\relax|\\ - \meta{ignored material}\\ - |\encoding|\\ - \meta{encoding commands}\\ - |\endencoding|\\ - \meta{ignored material} -\end{quote} -This describes the encoding of a font, using the \m{encoding commands}. - -Since the encoding file ignores any material between \verb|\relax| and -\verb|\encoding|, an \emph{encoding file} can also be a \LaTeX\ -document. The structure is then -\begin{quote} - |\relax|\\ - |\documentclass{article} %| Or some other class\\ - |\usepackage{fontdoc}|\\ - \meta{\LaTeX\ preamble}\\ - |\begin{document}|\\ - \meta{\LaTeX\ text}\\ - |\encoding|\\ - \m{encoding commands}\\ - |\endencoding|\\ - \meta{\LaTeX\ text}\\ - |\end{document}| -\end{quote} - - -See also the descriptions in \emph{Writing ETX format font encoding -specifications} (\texttt{encspecs.tex}). - - -\subsection{Encoding commands} - -The \m{encoding commands} are: - -\begin{decl} - |\nextslot|\arg{integer expression} -\end{decl} -Sets the number of the next slot. If there is no \verb|\nextslot| -command, the number is the successor of the previous slot. - -\begin{decl}[v1.8] - |\skipslots|\arg{integer expressions} -\end{decl} -Advances the number of the next slot. - -\begin{decl} - |\setslot|\arg{glyph} \m{slot commands} |\endsetslot| -\end{decl} -Assigns \m{glyph} to the current slot. The \m{slot commands} can be -used to specify additional behaviour for the slot, and typically also -contains comments about the glyph. - -\begin{decl}[v1.9] - |\setleftboundary|\marg{glyph} \m{slot commands} - |\endsetleftboundary| -\end{decl} -Makes the beginning of a word (left boundary) behave like the right -side of \m{glyph} with respect to kerning. |\ligature| commands in -the \meta{slot commands} create beginning of word ligatures. - -\begin{decl}[v1.9] - |\setrightboundary|\marg{glyph} -\end{decl} -Makes the end of a word (right boundary) behave like the left -side of \m{glyph} with respect to kerning and ligatures. The current -slot position is left empty. - -\begin{decl} - |\inputetx|\arg{file} -\end{decl} -Inputs the \m{encoding commands} of \m{file}\texttt{.etx}. - -\begin{decl}[v1.917] - |\setfontdimen|\marg{fontdimen no.}\marg{integer variable} -\end{decl} -Sets up a correspondence between a font dimension and an integer -variable. When generating a font, the font dimension value is taken -from the integer variable. When converting a font from \pl or \vpl -format, the fontdimen value will be recorded as a |\setint| command -for the variable. - -\begin{decl}[v1.924] - |\ifdirect| -\end{decl} -Encoding files set up a correspondence between slot numbers and glyph -names, which can be used in two different ways. In the \emph{direct} -mode, encoding files map slot numbers to glyph names. In the -\emph{inverse} mode, glyph names are mapped to slot numbers. The -inverse mapping can in general be one-to-many, and when precisely one -target slot is needed \fontinst chooses that arbitrarily. The |\ifdirect| -conditional can be used to disambiguate the inverse mapping, by -conditionalising all undesired |\setslot|s on that the file is being -interpreted in the direct mode. - -Currently the only case in which encoding files are being read in -the inverse mode is when reencoding fonts. - -\begin{decl}[v1.8] - |\setslotcomment|\marg{text}\\ - |\resetslotcomment|\marg{text}\\ - |\unsetslotcomment| -\end{decl} -These commands can be used to specify an automatic |\comment| text -for all slots. They are ignored by \fontinst, but interpreted by -\fontdoc. - -\begin{decl}[v1.8] - |\useexamplefont|\marg{font} -\end{decl} -This command is ignored by \fontinst. In \fontdoc it sets the font -that is used by the |\slotexample| command. The \meta{font} argument -has the same syntax for a font as the \TeX\ primitive |\font|. - - - - -\subsection{Slot commands} - -The \m{slot commands} are: - -\begin{decl} - |\comment|\arg{text} -\end{decl} -A comment, which is ignored by \fontinst, but typeset as a separate -paragraph by \fontdoc. - -\begin{decl}[v1.917] - |\label|\arg{text} -\end{decl} -A reference label, which records the slot number and glyph name. -Ignored by \fontinst. - -\begin{decl} - |\ligature|\arg{ligtype}\arg{glyph}\arg{glyph} -\end{decl} -|\ligature| declares a ligature of type \m{ligtype} from the current -glyph followed by the first glyph to the second glyph. The \m{ligtype}s -are as in \vpl files (see the \texttt{vptovf} Web source for more -details). For example: -\begin{verbatim} - \setslot{ff} - \ligature{LIG}{i}{ffi} - \ligature{LIG}{l}{ffl} - \comment{The `ff' ligature.} - \endsetslot -\end{verbatim} -\begin{decl*}[v1.918] - |\Ligature|\arg{ligtype}\arg{glyph}\arg{glyph}\\ - |\oddligature|\marg{note}\arg{ligtype}\arg{glyph}\arg{glyph} -\end{decl*} -The |\Ligature| command is by default a synonym of |\ligature| (but -\fontdoc may typeset them differently). The |\oddligature| command is -by default ignored by \fontinst. See \setfilename{encspecs.tex} for -an explanation of the semantic differences. - -\begin{decl} - |\makerightboundary|\arg{glyph} -\end{decl} -This makes the current slot the end of word (right boundary) marker -with respect to ligatures and kerning, i.e., \TeX\ will kern and -ligature as if there was an invisible occurrence of this character -after the last character of every word. All kerns and ligatures with -\meta{glyph} as the right part will apply for this slot. - -It is preferable to use |\setrightboundary| to control end of word -behaviour if you have an empty slot to spare. - -\begin{decl} - |\Unicode|\marg{code point}\marg{name}\\ - |\charseq|\marg{\cs{Unicode} commands} -\end{decl} -These commands declare a Unicode character or character sequence as -possible interpretations of what is in this slot. They are ignored -when making fonts, but \fontdoc give them a prominent role in -encoding specifications and to |\etxtocmap| they are the primary -properties of the slot. - -\begin{decl}[Obsolete?!] - |\usedas|\arg{type}\arg{control sequence} -\end{decl} -This command declares a \TeX\ control sequence for this slot, with -the \emph{type} taken from: -\begin{verbatim} - char accent mathord - mathbin mathrel mathopen - mathclose mathpunct mathvariable - mathaccent mathdelim -\end{verbatim} -There is currently no code in \fontinst which makes any use of this -command. - -\begin{decl} - |\nextlarger|\arg{glyph} -\end{decl} -Sets a \textsc{nextlarger} entry from the current slot to the -\m{glyph}. - -\begin{decl} - |\varchar| - \m{varchar commands} - |\endvarchar| -\end{decl} -Sets a \textsc{varchar} entry for the current slot, using the -\m{varchar commands}. The \m{varchar commands} are: -\begin{decl} - |\vartop|\arg{glyph}\\ - |\varmid|\arg{glyph}\\ - |\varbot|\arg{glyph}\\ - |\varrep|\arg{glyph} -\end{decl} -Sets the top, middle, bottom, or repeated \m{glyph} of the -\textsc{varchar}. - - -\subsection{Other} - -The following commands belong to this section, but there is currently -no description of them here. - -|\ifisinslot|\marg{glyph}\marg{slot}|\then| - - - - -\section{Metric files} -\label{Sec:Metric} - - -A \emph{metric file} (or \mtx file) is a \TeX\ document with the -structure: -\begin{quote} - |\relax|\\ - \emph{ignored material}\\ - |\metrics|\\ - \m{metric commands}\\ - |\endmetrics|\\ - \emph{ignored material} -\end{quote} -This describes the glyphs in a font, using the \m{metric commands}. -Like encoding files, metric files can simultaneously be \LaTeX\ -documents. - -Metric files are usually either \emph{hand-crafted} or -\emph{transformable}. The transformable metric files typically encode -the metrics of one particular font and are automatically generated. -Hand-crafted metric files (such as \setfilename{latin.mtx}) typically -do not contain much explicit metric data, instead the code there makes -use of metrics previously specified by other files to construct new -glyphs or adjust metrics to meet special conditions. Whereas -transformable metric files tend to be mere lists of metric data, the -hand-crafted metric files are more like programs. - - -\subsection{Metric commands} - -The \m{metric commands} are as follows. All glyph name arguments are -string expressions. - -\begin{decl} - |\setglyph|\arg{name} \m{glyph commands} |\endsetglyph| -\end{decl} -If the glyph called \m{name} is undefined, it is built using the -\m{glyph commands} given below, for example: -\begin{verbatim} - \setglyph{IJ} - \glyph{I}{1000} - \glyph{J}{1000} - \endsetglyph - \setglyph{Asmall} - \glyph{A}{850} - \endsetglyph -\end{verbatim} -The \meta{glyph commands} are not executed if the glyph has already -been set. - -\begin{decl} - |\resetglyph|\arg{name} - \m{glyph commands} - |\endresetglyph| -\end{decl} -Gives the definition of the glyph called \m{name} using the -\m{glyph commands}. - -\begin{decl} - |\unsetglyph|\arg{name} -\end{decl} -Makes the glyph called \m{name} undefined. - -\begin{decl} - |\setrawglyph|\arg{name}\arg{font}\arg{dimen}\arg{slot}\\ - \hspace*{1.5em}\arg{width}\arg{height}\arg{depth}\arg{italic - correction}\\ - |\setscaledrawglyph|% - \arg{name}\arg{font}\arg{dimen}\arg{scale}\arg{slot}\\ - \hspace*{1.5em}\arg{width}\arg{height}\arg{depth}\arg{italic - correction} -\end{decl} -This sets a glyph called \m{name} from the \m{font}, which has the -given design size, slot, width, height, depth and italic correction. -The \meta{scale} is a scaling factor which has been applied to the -font to give it the specified metrics. These commands will usually be -generated automatically from an \afm or \pl file. - -If the integer variable \texttt{rawscale} is set, another scaling by -that amount will be applied to the glyph. - -\begin{decl} - |\setnotglyph|\arg{name}\arg{font}\arg{dimen}\arg{slot}\\ - \hspace*{1.5em}\arg{width}\arg{height}\arg{depth}\arg{italic - correction}\\ - |\setscalednotglyph|% - \arg{name}\arg{font}\arg{dimen}\arg{scale}\arg{slot}\\ - \hspace*{1.5em}\arg{width}\arg{height}\arg{depth}\arg{italic - correction} -\end{decl} -These sets a glyph called \m{name}\texttt{-not}, which is present in -the \m{font}, but is not in the default encoding. They take the same -arguments as |\setrawglyph| and |\setscaledrawglyph| respectively, -although the slot will normally be $-1$. This command will usually -be generated automatically from an \afm file. - -Reencoding a font can turn |\setrawglyph| commands into -|\setnotglyph| commands and vice versa. - -\begin{decl} - |\inputmtx|\arg{file} -\end{decl} -Inputs the \m{metric commands} of \m{file}\texttt{.mtx}. - -\begin{decl}[v1.9] - |\usemtxpackage|\marg{package~list}\\ - |\ProvidesMtxPackage|\marg{package~name} -\end{decl} - - -\subsection{Glyph commands} - -The \m{glyph commands} add material to the glyph currently being -constructed in a |\setglyph| \dots\ |\endsetglyph| or -|\resetglyph| \dots\ |\endresetglyph|. They are: - -\begin{decl} - |\glyph|\arg{glyph}\arg{integer expression} -\end{decl} -Sets the named glyph \m{glyph} at the given scale, with 1000 as the -natural size. This: -\begin{itemize} - \item - Advances the current glyph width. - \item - Sets the current glyph height to be at least the height of the - named glyph, adjusted for the current vertical offset. - \item - Sets the current glyph depth to be at least the depth of the - named glyph, adjusted for the current vertical offset. - \item - Sets the current glyph italic correction to be the same as the - set glyph. -\end{itemize} -The named glyph must have already been defined, otherwise an error -will occur. For example: -\begin{verbatim} - \setglyph{fi} - \glyph{f}{1000} - \glyph{i}{1000} - \endsetglyph -\end{verbatim} - -\begin{decl} - |\glyphrule|\arg{integer expression}\arg{integer expression} -\end{decl} -Sets a rule of the given width and height, for example: -\begin{verbatim} - \setglyph{underline} - \glyphrule{333}{40} - \endsetglyph -\end{verbatim} - -\begin{decl} - |\glyphspecial|\arg{string expression} -\end{decl} -Sets a driver-dependent \verb|\special|, for example: -\begin{verbatim} - \setglyph{crest} - \glyphspecial{Filename: crest.eps} - \endsetglyph -\end{verbatim} - -\begin{decl} - |\glyphwarning|\arg{string expression} -\end{decl} -Sets a warning \verb|\special|, and produces a warning message each -time the glyph is used, for example: -\begin{verbatim} - \setglyph{missingglyph} - \glyphrule{500}{500} - \glyphwarning{Missing glyph `missingglyph'} - \endsetglyph -\end{verbatim} - -\begin{decl} - |\movert|\arg{integer expression} -\end{decl} -Moves right by the given amount, and advances the current glyph width, -for example: -\begin{verbatim} - \setglyph{Asmall} - \movert{50} - \glyph{A}{700} - \movert{50} - \endsetglyph -\end{verbatim} - -\begin{decl} - |\moveup|\arg{integer expression} -\end{decl} -Moves up by the given amount, and advances the current vertical -offset. Each glyph should always end at vertical offset zero, for -example: -\begin{verbatim} - \setglyph{onehalf} - \moveup{500} - \glyph{one}{700} - \moveup{-500} - \glyph{slash}{1000} - \moveup{-200} - \glyph{two}{700} - \moveup{200} - \endsetglyph -\end{verbatim} - -\begin{decl} - |\push| \m{glyph commands} |\pop| -\end{decl} -Performs the \m{glyph commands}, but at the |\pop| the current -position and glyph width are restored to what they were at the |\push|, -for example: -\begin{verbatim} - \setglyph{aacute} - \push - \movert{\half{\sub{\width{a}}{\width{acute}}}} - \glyph{acute}{1000} - \pop - \glyph{a}{1000} - \endsetglyph -\end{verbatim} - -\begin{decl} - |\glyphpcc|\arg{glyph}\arg{integer expression}\arg{integer expression} -\end{decl} -This is generated from \texttt{PCC} instructions in an \afm file, and -is syntactic sugar for: -\begin{quote} - \small - |\push|\\ - |\movert|\arg{first integer expression}\\ - |\moveup|\arg{second integer expression}\\ - |\glyph|\arg{glyph}|{1000}|\\ - |\pop| -\end{quote} - -\begin{decl} - |\resetwidth|\arg{integer expression}\\ - |\resetheight|\arg{integer expression}\\ - |\resetdepth|\arg{integer expression}\\ - |\resetitalic|\arg{integer expression} -\end{decl} -Sets the width, height, depth, or italic correction of the current -glyph. - -\begin{decl} - |\samesize|\arg{glyph} -\end{decl} -Sets the dimensions of the current glyph to be the same as \m{glyph}. - -Inside the definition of \m{glyph}, you can use expressions such as -|\width|\arg{glyph}, which will refer to the glyph defined so far. -For example, a display summation sign can be defined to be a text -summation $\sum$ scaled 120\% with 0.5\,pt extra height and depth -using: -\begin{verbatim} - \setglyph{summationdisplay} - \glyph{summationtext}{1200} - \resetheight{\add{\height{summationdisplay}}{50}} - \resetdepth{\add{\depth{summationdisplay}}{50}} - \endsetglyph -\end{verbatim} -Within a |\resetglyph|, these expressions will refer to the previous -definition of the glyph. For example, you can add sidebearings to the -letter `A' with: -\begin{verbatim} - \resetglyph{A} - \movert{25} - \glyph{A}{1000} - \movert{25} - \endresetglyph -\end{verbatim} - - -\subsection{Kerning commands} - -The kerning commands may be used anywhere in a metrics file. - -\begin{decl} - |\setkern|\arg{glyph}\arg{glyph}\arg{integer expression} -\end{decl} -This sets a kern between the two glyphs, scaled by the current -value of \texttt{rawscale}, unless such a kern already has been set. - -\begin{decl}[v1.9] - |\resetkern|\arg{glyph}\arg{glyph}\arg{integer expression} -\end{decl} -|\resetkern| unconditionally sets a kern between the two glyphs, -scaled by the current value of \texttt{rawscale}. - -\begin{decl} - |\setleftkerning|\arg{glyph}\arg{glyph}\arg{integer expression}\\ - |\setrightkerning|\arg{glyph}\arg{glyph}\arg{integer expression} -\end{decl} -Sets the amount by which the first glyph should mimic how the second -glyph kerns on the left or right, for example: -\begin{verbatim} - \setleftkerning{Asmall}{A}{850} - \setrightkerning{Asmall}{A}{850} - \setleftkerning{IJ}{I}{1000} - \setrightkerning{IJ}{J}{1000} -\end{verbatim} -The commands work by copying kerning pairs containing the first glyph. -As the names indicates, these commands do not override kerning pairs -previously set. - -\begin{decl}[v1.8] - |\setleftrightkerning|\arg{glyph}\arg{glyph}\arg{integer expression} -\end{decl} -Sets the amount by which the first glyph should mimic how the second -glyph kerns on both sides, for example: -\begin{verbatim} - \setleftrightkerning{Asmall}{A}{850} -\end{verbatim} -This command is equivalent to doing first a |\setleftkerning| and -then a |\setrightkerning|. - -\begin{decl}[v1.906] - |\noleftkerning|\arg{glyph}\\ - |\norightkerning|\arg{glyph}\\ - |\noleftrightkerning|\arg{glyph} -\end{decl} -Removes all kerning on the specified side(s) of the \meta{glyph}. - -\begin{decl}[v1.9] - |\unsetkerns|\marg{left~glyph~list}\marg{right~glyph~list} -\end{decl} -Removes all kerns with one glyph in the \meta{left glyph list} on the -left and one glyph in the \meta{right glyph list} on the right. - - - -\subsection{Other} - -\begin{decl}[v1.915] - |\aliased|\marg{font's name}\marg{alias name} -\end{decl} -This command is meant to be used in glyph name arguments of commands -one may find in metric files. It was added to support combining -mapfile entry generation with a custom form of reglyphing that has -been developed for the \texttt{T2} bundle (Cyrillic font support). -This does however not necessarily mean that the \texttt{T2} bundle -has been updated to take advantage of this feature. - -The basic problem is that cyrillic fonts display a much greater -variation in how the glyphs are named than latin fonts do.% -\footnote{The Adobe guidelines have not been as prevailing here as -in the latin range, but this isn't entirely surprising when they -give suggestions such as using the name \texttt{afii10018} for -\texttt{U+0411} (\textsc{cyrillic capital letter be}), even though -there is a good reason: AFII is a glyph registry.} -This complicates writing files similar to \setfilename{latin.mtx}, so -the author of the \texttt{T2} bundle took the route to regularize the -glyph names at the \afm to \mtx conversion step. Since \TeX\ does not -know anything about glyph names, this makes no difference for the -virtual fonts that are built. -The glyph names do however make a difference for base fonts that are -reencoded, since \PS encoding vectors list explicit glyph names that -have to be the same as in the font. \Fontinst's choice of encoding -vector for a mapfile entry is based on which \etx file was used in the -reencoding, and hence the glyph names used when reencoding must match -those actually used in the font, or problems will follow. - -The |\aliased| command can be used to preserve the information -necessary for such reencodings. If a glyph name is specified as for -example -\begin{verbatim} - \aliased{afii10018}{CYRB} -\end{verbatim} -then \fontinst will behave as if the glyph name is \texttt{CYRB} -(i.e., the \meta{alias name}) for all purposes \emph{except} -reencoding, where instead \fontinst behaves as if the glyph name is -the \meta{font's name} \texttt{afii10018}. This makes it possible to -use \etx files when reencoding which can be correctly translated to -the right encoding vectors. - - - -\section{\textsf{fontdoc} commands} - -The following commands are defined by \fontdoc but are unknown to -\fontinst. - - -\subsection{Comment commands} - -\begin{decl} - |\plaindiv|\\ - |\plainint|\\ - |\plainmax|\\ - |\plainmin|\\ - |\plainneg| -\end{decl} -These are the \LaTeX\ definitions of |\div|, |\int|, |\max|, |\min|, -and |\neg| respectively. They are provided under these names because -\fontinst uses the normal names for integer expression constructions. - -\begin{decl}[v1.8] - |\slotexample| -\end{decl} -This typesets the character in the current slot from the example font -(cf.~|\useexamplefont|). - -\begin{decl}[v1.916] - |\macroparameter|\marg{digit} -\end{decl} -This can be used in integer and string expressions. It typesets as -\textit{\#n}, where `\textit{n}' is the \meta{digit}. - -\begin{decl}[v1.918] - |\textunicode|\marg{code point}\marg{name} -\end{decl} -This generates a reference to a particular Unicode character, for use -within a |\comment| or similar. - - -\subsection{Style control commands} - -\begin{decl}[v1.909] - |\showbranches| -\end{decl} -The is the main switch that turns on displaying both branches of -\fontinst conditionals. If you use this command in an encoding or -metrics file, you \textbf{must} use |\Else| and |\Fi| to delimit the -conditionals in that file. If you do not use this command in an -encoding or metrics file, then the conditionals will not generate any -typeset material and neither will their \meta{else branch}es. - - - - -\section{\fontinst variables} - -The following is a list of the \fontinst variables that are -accessible for the user through the |\set|\textellipsis, -|\reset|\textellipsis, |\unset|\textellipsis, etc.\ commands. You may -of course set or use other variables in the MTX and ETX files you -write yourself, as does for example the standard MTX file -\texttt{latin.mtx}, but all variables that \fontinst commands -implicitly use or set are listed below. - -\begin{list}{}{% - \setlength\labelwidth{0pt}% - \setlength\itemindent{-\leftmargin}% - \setlength\parsep{0pt} - \def\makelabel#1{\hspace\labelsep \normalfont\ttfamily #1}% -} - \item[acccapheight] (integer denoting length) - \begin{smalldes} - \item[Description] The height of accented full capitals. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[address] (string) - \begin{smalldes} - \item[Description] Snailmail address put in \BibTeX-style file - header of automatically generated ENC files. No - \texttt{address} field is written unless the \texttt{address} - string is set. Quotes are not automatically inserted around - the \texttt{address} string. - \item[Set by] ETX files. - \item[Used by] The ETX-to-ENC converter. - \end{smalldes} - \item[afm-name] (string) - \begin{smalldes} - \item[Description] Name of source font. Internal variable. - \item[Set by] |\from|\dots\ commands. - \item[Used by] The |\transform|\-|font|, |\install|\-|font|, - |\install|\-|raw|\-|font|, and |\reglyph|\-|font| commands. - \end{smalldes} - \item[ascender] (integer denoting length) - \begin{smalldes} - \item[Description] The ascender height of the font. - \item[Set by] MTX files. The AFM-to-MTX converter usually writes - |\setint| commands for this integer. - \item[Used by] Some MTX and ETX files. - \end{smalldes} - \item[author] (string) - \begin{smalldes} - \item[Description] Author name(s) put in \BibTeX-style file - header of automatically generated ENC files. See the macro - |\ref_to_sourcefile| for more details. - \item[Set by] ETX files. - \item[Used by] The ETX-to-ENC converter. When not set, the - value \texttt{"See file }\meta{etx name}\texttt{"} is used - instead. - \end{smalldes} - \item[\cs{autoinstallfamily}] (command) - \begin{smalldes} - \item[Description] Command called by the font installation - commands, as - \begin{quote} - |\autoinstallfamily|\marg{encoding}\marg{family} - \end{quote} - when they are asked to install a font with a combination of - \meta{encoding} and \meta{family} that has not been seen - before (there was no explicit |\installfamily|). - \item[Set by] Explicit commands. Defaults to calling - |\installfamily|. - \item[Used by] Font installation commands. - \end{smalldes} - \item[axisheight] (integer denoting length) - \begin{smalldes} - \item[Description] Math formula parameter $\sigma\sb{22}$. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[baselineskip] (integer denoting length) - \begin{smalldes} - \item[Description] - The font designer's recommendation for natural length of the - \TeX\ parameter |\baselineskip|. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[bigopspacing1] (integer denoting length) - \begin{smalldes} - \item[Description] Math formula parameter $\xi\sb{9}$. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[bigopspacing2] (integer denoting length) - \begin{smalldes} - \item[Description] Math formula parameter $\xi\sb{10}$. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[bigopspacing3] (integer denoting length) - \begin{smalldes} - \item[Description] Math formula parameter $\xi\sb{11}$. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[bigopspacing4] (integer denoting length) - \begin{smalldes} - \item[Description] Math formula parameter $\xi\sb{12}$. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[bigopspacing5] (integer denoting length) - \begin{smalldes} - \item[Description] Math formula parameter $\xi\sb{13}$. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[capheight] (integer denoting length) - \begin{smalldes} - \item[Description] The height of the font's full capitals. - \item[Set by] MTX files. The AFM-to-MTX converter usually writes - |\setint| commands for this variable. - \item[Used by] Some MTX and ETX files. - \end{smalldes} - \item[cmapname] (string) - \begin{smalldes} - \item[Description] The name given to the CMap generated from - an ETX file. - \item[Set by] ETX files. - \item[Used by] The ETX-to-CMap converter. When not set, the - value |fontinst-|\nolinebreak[1]\meta{cmap file name} is - used instead. - \end{smalldes} - \item[codingscheme] (string) - \begin{smalldes} - \item[Description] The codingscheme name. - \item[Set by] ETX files. - \item[Used by] The (V)PL writer. When not set, the - value \texttt{UNKNOWN} is used instead. - \end{smalldes} - \item[defaultrulethickness] (integer denoting length) - \begin{smalldes} - \item[Description] Math formula parameter $\xi\sb{8}$. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[delim1] (integer denoting length) - \begin{smalldes} - \item[Description] Math formula parameter $\sigma\sb{20}$. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[delim2] (integer denoting length) - \begin{smalldes} - \item[Description] Math formula parameter $\sigma\sb{21}$. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[denom1] (integer denoting length) - \begin{smalldes} - \item[Description] Math formula parameter $\sigma\sb{11}$. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[denom2] (integer denoting length) - \begin{smalldes} - \item[Description] Math formula parameter $\sigma\sb{12}$. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[descender] (integer denoting length) - \begin{smalldes} - \item[Description] The depth of lower case letters with descenders. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[descender\_neg] (integer denoting length) - \begin{smalldes} - \item[Description] The vertical position of the descender line - of the font, i.e., the negative of the font's descender depth. - \item[Set by] MTX files. The AFM-to-MTX converter usually writes - |\setint| commands for this variable. - \item[Used by] Some MTX and ETX files. - \end{smalldes} - \item[designsize] (dimension) - \begin{smalldes} - \item[Description] The design size of the font. - \item[Set by] MTX files. The (V)PL-to-MTX converter usually writes - |\setdim| commands for this variable. - \item[Used by] The (V)PL writer. The design size defaults to - $10\,\mathrm{pt}$ if this variable is not set. - \item[Note] The value of this variable has no effect on how - the font is declared to \LaTeX. - \end{smalldes} - \item[designunits] (dimension denoting a real number) - \begin{smalldes} - \item[Description] The design size of a font expressed in the - design unit used in a (V)PL file. - \item[Set by] MTX files. The (V)PL-to-MTX converter usually writes - |\setdim| commands for this variable. - \item[Used by] Nothing. If this variable is set, but to any - value other than $1\,\mathrm{pt}$, then some metrics are most - likely wrong. - \end{smalldes} - \item[digitwidth] (integer denoting length) - \begin{smalldes} - \item[Description] The median width of the digits in the font. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[email] (string) - \begin{smalldes} - \item[Description] Email address put in \BibTeX-style file - header of automatically generated ENC files. See the macro - |\ref_to_sourcefile| for more details. - \item[Set by] ETX files. - \item[Used by] The ETX-to-ENC converter. When not set, the - value \texttt{"See file }\meta{etx name}\texttt{"} is used - instead. - \end{smalldes} - \item[encodingname] (string) - \begin{smalldes} - \item[Description] The name by which the encoding in question is - made known to a Postscript interpreter. - \item[Set by] ETX files. - \item[Used by] The ETX-to-ENC converter. When not set, the - value |fontinst-|\nolinebreak[1]|autoenc-|\nolinebreak[1]% - \meta{etx name} is used instead. - \end{smalldes} - \item[etx-name] (string) - \begin{smalldes} - \item[Description] Name of ETX file. Internal variable in - |\transform|\-|font|. - \item[Set by] The |\reencodefont| command. - \item[Used by] The |\mtxtomtx| command. - \end{smalldes} - \item[extraspace] (integer denoting length) - \begin{smalldes} - \item[Description] - The natural width of extra interword glue at the end of a - sentence. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[fontdimen($n$)] (integer) - \begin{smalldes} - \item[Description] Family of semi-internal variables that store - the values to use for font dimension $n$. It is preferred - that the newer |\set|\-|font|\-|dimen| interface is used for - setting these values. - \item[Set by] ETX files. - \item[Used by] The (V)PL writer. - \end{smalldes} - \item[\cs{iftokeep}] (macro) - \begin{smalldes} - \item[Description] |\iftokeep|\,\#1\,|\then|, where \#1 will - be a \meta{number}, behaves like a switch and decides whether - a glyph is kept or not while reglyphing. - \item[Set by] Explicit commands. Defaults to - $$ - \mbox{\cs{iftokeep}\,\#1\,\cs{then}} \mapsto - \mbox{\cs{ifnum}\,\texttt{-1<}\#1} - $$ - \item[Used by] The |\reglyphfont| command. - \end{smalldes} - \item[interword] (integer denoting length) - \begin{smalldes} - \item[Description] The natural width of interword glue (spaces). - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[italicslant] (integer denoting factor) - \begin{smalldes} - \item[Description] The italic slant of a font. - \item[Set by] MTX files generated from AFM or (V)PL files. MTX - files generated by |\transformfont|. Locally in the AFM-to-MTX - converter for possible use in |\uprightitalcorr| or - |\slanteditalcorr|. - \item[Used by] MTX files (\texttt{latin.mtx} and the like). ETX - files (for determining \texttt{fontdimen(1)}). - \end{smalldes} - \item[killweight] (integer) - \begin{smalldes} - \item[Description] Weight for glyphs that are killed. - \item[Set by] Explicit commands. Defaults to $-10$ if not set. - \item[Used by] The |\kill|\-|glyph| command; indirectly - the |\reglyphfont| command. - \end{smalldes} - \item[letterspacing] (integer denoting length) - \begin{smalldes} - \item[Description] Extra width added to all glyphs of a font. - \item[Set by] ETX or MTX files. - \item[Used by] The (V)PL writer. Defaults to $0$ if not set. - \end{smalldes} - \item[maxdepth] (integer denoting length) - \begin{smalldes} - \item[Description] The maximal depth over all slots in the font. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[maxdepth\_neg] (integer denoting length) - \begin{smalldes} - \item[Description] The negative of the maximal depth of a glyph in - the font. - \item[Set by] MTX files. The AFM-to-MTX converter usually writes - |\setint| commands for this variable. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[maxheight] (integer denoting length) - \begin{smalldes} - \item[Description] The maximal height of a glyph in the font. - \item[Set by] MTX files. The AFM-to-MTX converter usually writes - |\setint| commands for this variable. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[minimumkern] (integer denoting length) - \begin{smalldes} - \item[Description] Kerns whose size in absolute value is less - than or equal to this variable are ignored. - \item[Set by] Command files or MTX files. - \item[Used by] The AFM-to-MTX converter and the (V)PL file - generator. When not set, the value $0$ is used instead. - \end{smalldes} - \item[monowidth] (flag integer) - \begin{smalldes} - \item[Description] Set if this font is monowidth, unset otherwise. - \item[Set by] MTX files. The AFM-to-MTX converter writes a - |\setint| command for this variable if the AFM specifies - \texttt{IsFixedPitch true}. - \item[Used by] Some MTX files (\texttt{latin.mtx} and the like), - ETX files. - \end{smalldes} - \item[num1] (integer denoting length) - \begin{smalldes} - \item[Description] Math formula parameter $\sigma\sb{8}$. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[num2] (integer denoting length) - \begin{smalldes} - \item[Description] Math formula parameter $\sigma\sb{9}$. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[num3] (integer denoting length) - \begin{smalldes} - \item[Description] Math formula parameter $\sigma\sb{10}$. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[quad] (integer denoting length) - \begin{smalldes} - \item[Description] - The quad width of the font, normally approximately equal to - the font size and\slash or the width of an `M'. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[PSfontsuffix] (string) - \begin{smalldes} - \item[Description] Suffix added to font names to form name of - file to download to include font. - \item[Set by] Explicit commands in mapmaking command - files. Defaults to `\texttt{.pfa}'. - \item[Used by] The map file fragments writer. - \end{smalldes} - \item[rawscale] (integer denoting factor) - \begin{smalldes} - \item[Description] Scaling factor applied to raw glyphs. - \item[Set by] The |\installfont| command (\texttt{scaled} - clauses in argument \#2). Unset for metric files listed - without a \texttt{scaled} clause. - \item[Used by] The |\set|\-|raw|\-|glyph|, - |\set|\-|not|\-|glyph|, |\set|\-|scaled|\-|raw|\-|glyph|, - |\set|\-|scaled|\-|not|\-|glyph|, |\set|\-|kern|, and - |\reset|\-|kern| commands. - \end{smalldes} - \item[renameweight] (integer) - \begin{smalldes} - \item[Description] Weight for glyphs that are renamed. - \item[Set by] Explicit commands. Defaults to $1$ if not set. - \item[Used by] The |\rename|\-|glyph| command; indirectly - the |\reglyphfont| command. - \end{smalldes} - \item[requireglyphs] (flag integer) - \begin{smalldes} - \item[Description] Set if warnings are to be generated for - glyphs listed in ETX files but not present in the glyph - base. - \item[Set by] Explicit commands. By default not set. - \item[Used by] The (V)PL file generator. - \end{smalldes} - \item[rightboundary] (string) - \begin{smalldes} - \item[Description] The name of a glyph with the property that - kerns on the left may be intended as right word boundary kerns. - \item[Set by] MTX files. The (V)PL-to-MTX converter can write - |\setstr| commands for this variable. - \item[Used by] Some MTX files. - \end{smalldes} - \item[shrinkword] (integer denoting length) - \begin{smalldes} - \item[Description] - The (finite) shrink component of interword glue. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[slant-scale] (integer denoting factor) - \begin{smalldes} - \item[Description] Factor to slant by. - Internal variable in |\transform|\-|font|. - \item[Set by] The |\slant|\-|font|, |\xscale|\-|font|, and - |\scale|\-|font| commands. - \item[Used by] The |\mtxtomtx| command. - \end{smalldes} - \item[\cs{SlantAmount}] (macro expanding to an integer expression) - \begin{smalldes} - \item[Description] Slant factor used for faking oblique shape. - \item[Set by] Explicit commands. Defaults to \texttt{167}. - \item[Used by] The |\latinfamily| command. - \end{smalldes} - \item[\cs{slanteditalcorr}] - (macro expanding to an integer expression) - \begin{smalldes} - \item[Description] The integer expression used to calculate a - guess for the italic correction of glyphs in a font with - positive slant. It has the syntax - \begin{quote} - \cs{slanteditalcorr}\marg{width}\marg{left}\marg{right}% - \marg{bottom}\marg{top} - \end{quote} - where \meta{width} is the glyph's advance width, and the - remaining arguments are coordinates of sides of the glyph's - bounding box. The \texttt{italicslant} integer provides the - italic slant of the font. - \item[Set by] Explicit commands in \textsf{fontinst} command - files. Defaults to - $$ - \max\{0, \mathit{right}-\mathit{width}\}. - $$ - \item[Used by] The AFM-to-MTX converter. - \end{smalldes} - \item[stretchword] (integer denoting length) - \begin{smalldes} - \item[Description] - The (finite) stretch component of interword glue. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[sub1] (integer denoting length) - \begin{smalldes} - \item[Description] Math formula parameter $\sigma\sb{16}$. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[sub2] (integer denoting length) - \begin{smalldes} - \item[Description] Math formula parameter $\sigma\sb{17}$. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[subdrop] (integer denoting length) - \begin{smalldes} - \item[Description] Math formula parameter $\sigma\sb{19}$. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[sup1] (integer denoting length) - \begin{smalldes} - \item[Description] Math formula parameter $\sigma\sb{13}$. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[sup2] (integer denoting length) - \begin{smalldes} - \item[Description] Math formula parameter $\sigma\sb{14}$. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[sup3] (integer denoting length) - \begin{smalldes} - \item[Description] Math formula parameter $\sigma\sb{15}$. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[supdrop] (integer denoting length) - \begin{smalldes} - \item[Description] Math formula parameter $\sigma\sb{18}$. - \item[Set by] MTX files. - \item[Used by] Some ETX and MTX files. - \end{smalldes} - \item[TFMfileprefix] (string) - \begin{smalldes} - \item[Description] Prefix (typically a path) added to names of - TFM files. - \item[Set by] Explicit commands in mapmaking command - files. By default not set, which is equivalent to being empty. - \item[Used by] The \textsf{PLtoTF} ``map file fragments writer''. - \end{smalldes} - \item[underlinethickness] (integer denoting length) - \begin{smalldes} - \item[Description] The recommended thickness of an underlining - rule. - \item[Set by] MTX files. The AFM-to-MTX converter usually writes - |\setint| commands for this variable. - \item[Used by] Some MTX files (\texttt{latin.mtx} and the like). - \end{smalldes} - \item[\cs{uprightitalcorr}] - (macro expanding to an integer expression) - \begin{smalldes} - \item[Description] The integer expression used to calculate a - guess for the italic correction of glyphs in a font with - non-positive slant. It has the syntax - \begin{quote} - \cs{uprightitalcorr}\marg{width}\marg{left}\marg{right}% - \marg{bottom}\marg{top} - \end{quote} - where \meta{width} is the glyph's advance width, and the - remaining arguments are coordinates of sides of the glyph's - bounding box. The \texttt{italicslant} integer provides the - italic slant of the font. - \item[Set by] Explicit commands in \textsf{fontinst} command - files. Defaults to $0$. - \item[Used by] The AFM-to-MTX converter. - \end{smalldes} - \item[version] (string) - \begin{smalldes} - \item[Description] Version number put in \BibTeX-style file - header of automatically generated ENC files. See the macro - |\ref_to_sourcefile| for more details. - \item[Set by] ETX files. - \item[Used by] The ETX-to-ENC converter. When not set, the - value \texttt{"See file }\meta{etx name}\texttt{"} is used - instead. - \end{smalldes} - \item[verticalstem] (integer denoting length) - \begin{smalldes} - \item[Description] The dominant width of vertical stems - (usually the width of stems of lower case letters). - \item[Set by] MTX files. The AFM-to-MTX converter writes - |\setint| commands for this variable if the AFM file specifies - \texttt{StdVW}. - \item[Used by] Currently nothing. - \end{smalldes} - \item[\texttt{warningspecials}] (switch) - \begin{smalldes} - \item[Description] Controls whether |\glyphwarning| commands - will generate VPL \texttt{SPECIAL}s. Defaults to `true'. - \item[Set by] Explicit commands (|\warningspecialstrue| and - |\warningspecialsfalse|). - \item[Used by] The (V)PL file generator. - \end{smalldes} - \item[x-scale] (integer denoting factor) - \begin{smalldes} - \item[Description] Horizontal scaling factor. - Internal variable in |\transform|\-|font|. - \item[Set by] The |\xscale|\-|font| and |\scale|\-|font| commands. - \item[Used by] The |\mtxtomtx| command. - \end{smalldes} - \item[xheight] (integer denoting length) - \begin{smalldes} - \item[Description] The x-height of the font. - \item[Set by] MTX files. The AFM-to-MTX and (V)PL-to-MTX - converters usually write |\setint| commands for this variable. - \item[Used by] MTX files, and ETX files (for determining - \texttt{fontdimen(5)}). - \end{smalldes} - \item[y-scale] (integer denoting factor) - \begin{smalldes} - \item[Description] Vertical scaling factor. - Internal variable in |\transform|\-|font|. - \item[Set by] The |\yscale|\-|font| and |\scale|\-|font| commands. - \item[Used by] The |\mtxtomtx| command. - \end{smalldes} - \item[\meta{\rmfamily glyph}-spacing] (integer denoting length) - \begin{smalldes} - \item[Description] Glyph-specific override for - \texttt{letterspacing}; extra width added to the glyph - \meta{glyph} as part of the process of writing a VPL - file. - \item[Set by] ETX or MTX files. - \item[Used by] The (V)PL writer. Defaults to $0$ if not set. - \end{smalldes} -\end{list} -Besides these, the |\latinfamily| command provides a whole range of -parameters (|\latin_weights|, |\latin_widths|, |\latin_shapes|, etc.) -that are often used somewhat like variables. That subject -does however deserve to be treated separately. - - - -\section{Customisation} - -The \fontinst package reads a file \texttt{fontinst.rc} if it -exists. This can contain your own customisations. The catcodes that -are in force when this file is read are the same as those selected by -|\fontinstcc|. - -Similarly \texttt{finstmsc.sty} reads \texttt{finstmsc.rc} and the -\fontdoc package reads \texttt{fontdoc.cfg}. - -You can create a \texttt{fontinst} format by running ini\TeX{} on -\texttt{fontinst.sty} then saying \verb|\dump|. - - -\section{Notes on features new with v\,1.9} - -The following notes are copied from \texttt{fisource.tex}; they were -written to explain new \fontinst features to old \fontinst users. - - -\subsection{Metric packages} - -\Fontinst has traditionally come with a collection of MTX -files that complement the MTX files generated from base font metrics, -in that they build glyphs that may be missing from the base fonts or -in some other way needs to be improved. The most well-known of these -is the \texttt{latin.mtx} file; other examples include -\texttt{textcomp.mtx}, \texttt{mathit.mtx}, and \texttt{latinsc.mtx}. -A problem with these is however that they cannot produce optimal -results for all fonts simply because there are irregular differences -in how fonts are set up by the foundries. Most glyphs come out all right, -but there are usually a few for which the parameters used are more or -less wrong. Therefore most high quality font installations are made -with modified versions of these files, where the parameters have been -tuned to the specific font design. - -Modifying in particular \texttt{latin.mtx} is however not an entirely -easy task, because this is a rather large file (with plenty of -archaic pieces of code in curious places). Doing it once is no big -problem, but if one has to do it several times (maybe because some -errors are discovered in the original \texttt{latin.mtx}) then it is -probably no fun anymore. Furthermore, if one has two or three -modified copies of this file because one has made high quality -installations of that many different fonts then even a trivial bugfix -might start to feel like entirely too much work. - -If one has to make modifications then it is usually easier to deal -with several small files (many of which can be used unchanged) than -one big file. Thus it would be better if these big files were split up -into several smaller ones. -The main problem with splitting up something like \texttt{latin.mtx} -is that there are some commands which are defined at the top and -which are then used in almost all sections of the file. One must make -certain that these commands are always loaded, which makes the metric -files somewhat harder to use (especially if the one who tries to use -them is not the one who wrote them). - -One strategy is to include all definitions needed for a metric file in -it. This has the slight disadvantage that the commands will have to be -defined several times. What is worse however, is that the command -definitions will appear in several files, so if one finds a bug in one -of them, one cannot simply correct this bug in one place. As the number -of files can soon become quite large, correcting such bugs can become -a boring procedure indeed. - -Another strategy is to put all the command definitions in one file -and then explicitly include it in the \meta{file-list} argument of -|\installfont|. This eliminates the repeated bug fixing problem, but -requires the user to do something that the computer can actually do -just as well. - -A third strategy is to put the command definitions in one or several -files and then in each metric file the user explicitly mentions load -the command definitions needed for that particular file. Metric -packages uses an improved version of this strategy, since they also -make it possible for \fontinst to remember which packages (i.e., sets -of command definitions) that have already been loaded, so that they -are not unnecessarily loaded again. The \texttt{newlatin.mtx} file is -an alternative to \texttt{latin.mtx} that implements this strategy. -Most of the actual code is located in the following metric packages: -\begin{center} -\begin{tabular}{l p{0.7\linewidth}} - \texttt{ltcmds.mtx}& Defines some common commands used by the other - files.\\ - \texttt{llbuild.mtx}& Builds the latin lower case alphabet - (unaccented letters are `unfakable', the rest are constructed if - not present in the base fonts).\\ - \texttt{lubuild.mtx}& Builds the latin upper case alphabet.\\ - \texttt{lsbuild.mtx}& Builds accented letters in the latin - smallcaps alphabet, but only if there are unaccented letters to - build them from in the base fonts.\\ - \texttt{lsfake.mtx}& Fakes a latin smallcaps alphabet by shrinking - the upper case alphabet, but only if the glyph had not already - been manufactured.\\ - \texttt{lsmisc.mtx}& Make some miscellaneous smallcaps glyphs - (mostly ``smallcaps f-ligatures'').\\ - \texttt{ltpunct.mtx}& Makes digits, punctuation marks, and other - symbols (mostly by marking as ``unfakable''). -\end{tabular} -\end{center} -\noindent All of these are easy to use as components of equivalents -of a modified \texttt{latin.mtx} files, and all dependencies of one -package upon another are handled via explicit |\usemtxpackage| -commands. - -% For information on the syntax etcetera of commands related to metric -% packages, see Section~\ref{Sec:Metric files}. - - -\subsection{Word boundary ligatures and kerns} - -One of the new features added in \TeX~3 was that of ligatures and -kerns with word boundaries. \Fontinst has had an interface -for making such ligatures and kerns, but it has been completely -redesigned in v\,1.9 and the old interface (setting the integer -|boundarychar|) is no longer recognized by \fontinst. Files -which use the old interface can still be processed with -\texttt{cfntinst.sty}, though. - -Before considering the new commands, it is suitable to make a -distinction between proper glyphs and pseudoglyphs. A proper glyph has -been set using one of the commands |\setrawglyph|, |\setglyph|, and -|\resetglyph|. A pseudoglyph is any name used in the context of a -glyph name which does not denote a proper glyph. If a pseudoglyph -|g-not| was set using the |\setnotglyph| command, then -|\ifisglyph{g-not}\then| will evaluate to true, but something can be -a pseudoglyph even if an |\ifisglyph| test evaluates to false. The -interesting point about pseudoglyphs when considering word boundaries -however, is that a pseudoglyph can have ligatures and kerns. - -Kerns and ligatures at the left word boundary (beginning of word) are -specified using the commands |\setleftboundary| and -|\endsetleftboundary|, which are syntactically identical to -|\setslot| and |\endsetslot| respectively. One important difference is -however that the argument to |\setslot| must be a proper glyph, while -the argument to |\setleftboundary| may be any glyph, hence any -pseudoglyph will do just fine. - -|\ligature| commands between |\setleftboundary| and -|\endsetleftboundary| will generate beginning of word ligatures. Kerns -on the right of the glyph specified in |\setleftboundary| will become -beginning of word kerns. - -Kerns and ligatures at the right word boundary (end of word) are -trickier, due to the asymmetrical nature of the ligkern table in a PL -file. What a font can do is to specify that the right word boundary, -for purposes of kerning and ligatures, should be interpreted as -character $n$. By including a kern or ligature with character $n$ on -the right, that kern or ligature will be used at the end of a word, -but it will also be used each time the next character is character -$n$. Because of this, one usually wants the slot $n$, which the right -word boundary is interpreted as being, to be empty whenever the -encoding allows this. - -The command -\begin{quote} - |\setrightboundary|\marg{glyph} -\end{quote} -will mark the current slot as used to denote the right word boundary, -and leave the slot empty, increasing the current slot number by one -just like a |\setslot| \textellipsis\ |\endsetslot| block does. Kerns on -the left of \meta{glyph} will be end of word kerns and |\ligature| -commands with \meta{glyph} as the second argument will be for the end -of a word. - -The command -\begin{quote} - |\makerightboundary|\marg{glyph} -\end{quote} -is similar to |\setrightboundary|, but it is a slot command which may -only be used between a |\setslot| and the matching |\endsetslot|. Like -|\setrightboundary|, it marks the current slot as used to denote the -right word boundary, but the glyph specified in the enclosing |\setslot| -will be written to that slot. Ligatures for the glyph specified by the -|\setslot| and ligatures for the glyph specified by the -|\makerightboundary| will both be for this single slot. Kerns on the -right of the |\setslot| glyph and the |\makerightboundary| glyph will -similarly both be for this single slot. The idea is that the |\setslot| -glyph should be used when making a kern or ligature for that glyph, -while the |\makerightboundary| glyph should be used when making a kern -or ligature for the end of a word. \Fontinst will warn you if -these two uses of the slot directly contradict each other. - - -\subsection{Changing the names of glyphs} -\label{Ssec:Des:Reglyph} - -Sometimes, primarily when making a virtual font from more than one raw -font and two of the raw fonts contain different glyphs with the same -name, it becomes necessary to change the names of some glyphs to make -some sense out of it. The main source of this kind of trouble is the -``caps and small caps'' (SC) and ``oldstyle figures'' (OsF) fonts -within many commercial font families. The typical problem is that what -is typographically different glyphs---such as the lowercase `a' -(\texttt{a}, for \fontinst) and the smallcaps `\textsc{a}' -(\texttt{Asmall}, for \fontinst)---are given the same name by -the foundry. - -One way to get round this is to say for example -\begin{quote} - |\setglyph{Asmall} \glyph{a}{1000} \endsetglyph|\\ - |\setleftrightkerning{Asmall}{a}{1000}|\\ - |\unsetglyph{a}|\\ - |\noleftrightkerning{a}| -\end{quote} -and continuing like that for all the duplicate glyph names. This is -however a rather prolix method and if the number of glyphs is large -then it is usually simpler to use the |\reglyphfont| command. - -To reglyph one or several fonts, one writes -\begin{quote} - |\reglyphfonts|\\ - \vadjust{}\quad \meta{reglyphing commands}\\ - |\endreglyphfonts| -\end{quote} -There are two types of reglyphing commands: the |\reglyphfont| -command, and the commands that modify what |\reglyphfont| will do to -the fonts it operates on. The syntax of |\reglyphfont| is -\begin{quote} - |\reglyphfont|\marg{destination font}\marg{source font} -\end{quote} -The \meta{source font} font here is the name (suffix not included, of -course) of the font metric file one wants to change the glyph names in. -This font metric file can be in any of the formats MTX, PL, AFM, and -VPL, and it will be converted to MTX format if it isn't already in -that format (this happens just as for files listed in the second -argument of |\installfont|). \meta{destination font} (which must be -different from \meta{source font}) will be taken as the name for a -new \texttt{.mtx} file that will be generated. The destination font -can differ from the source font only in two ways: the names of some -glyphs in the source font might be changed, and some of the commands -from the source font might not have been copied to the destination -font. To what extent the fonts are different is determined by what -modifying commands have been executed; when no modifying commands -have been executed, the source and destination font are equal. - -The modifying reglyphing commands are -\begin{quote} - |\renameglyph|\marg{to}\marg{from}\\ - |\renameglyphweighted|\marg{to}\marg{from}\marg{weight}\\ - |\killglyph|\marg{glyph}\\ - |\killglyphweighted|\marg{glyph}\marg{weight}\\ - |\offmtxcommand|\marg{command}\\ - |\onmtxcommand|\marg{command} -\end{quote} -|\renameglyph| simply declares that occurrences of the glyph name -\meta{from} should be replaced by the glyph name \meta{to}. To each -glyph name is also assigned a \emph{weight}, which is used by a -mechanism which conditions copying of commands from the source font to -the destination font by the set of glyphs that command mentions. The -details of this mechanism are however somewhat tricky, so those -interested in the full generality should read the comments in the -source of \fontinst. Here it needs only be noted that if one applies -|\killglyph| to a glyph name, then (under most circumstances) commands -that refer to that glyph name will not be copied to the destination -font. - -|\offmtxcommand| and |\onmtxcommand| also control whether commands are -copied to the destination font, but they look at the actual command -rather than the glyphs it refers to. For example, after the command -\begin{quote} - |\offmtxcommand{\setkern}| -\end{quote} -no |\setkern| commands will be copied. By using |\offmtxcommand|, it -is possible to achieve effects similar to those of the files -\texttt{kernoff.mtx} and \texttt{glyphoff.mtx}---the difference is -that with |\offmtxcommand|, it happens at an earlier stage of the font -generation. As expected, |\onmtxcommand| undoes the effect of -|\offmtxcommand|. - -A special rule pertains to the |\set|\-|raw|\-|glyph|, -|\set|\-|not|\-|glyph|, |\set|\-|scaled|\-|raw|\-|glyph|, and -|\set|\-|scaled|\-|not|\-|glyph| commands, since |\transformfont| -doesn't care what something was in the source font when it generates -the transformed font. To turn these commands off while reglyphing, -you use |\offmtx|\-|command| on |\set|\-|scaled|\-|raw|\-|glyph|. - -The effects of modifying reglyphing commands are delimited by -|\reglyphfonts| and |\endreglyphfonts|, which starts and ends a group -respectively. - -As we expect the most common reglyphing operation will be to go from SC -glyph names to expert glyph names, there is a file \texttt{csc2x.tex} -in the \fontinst distribution which contains the modifying -reglyphing commands needed for setting up that conversion. Thus you -can write for example -\begin{quote} - |\reglyphfonts|\\ - | \input csc2x|\\ - | \reglyphfont{padrcx8r}{padrc8r}|\\ - | \reglyphfont{padscx8r}{padsc8r}|\\ - |\endreglyphfonts| -\end{quote} -to alter the glyph names in the SC fonts in the Adobe Garamond -(\texttt{pad}) family. -Note that the names of the destination fonts here really are rather -arbitrary, since they will only exist as \texttt{.mtx} files, and -thus only need to work within your local file system. In particular, -all the |\setrawglyph| commands in the destination font files still -refer to the source font, so it is that font which the drivers need -to know about. - - -\subsection{Making map file fragments} -\label{Ssec:MapFragments} - -A \emph{map file fragment} is the lines\footnote{Not in general an -entire map file, hence the word \emph{fragment}.} of a map file that -the corresponding driver would need for handling some set of fonts. -When told to, \fontinst can (in a fairly automatic way) create -the map file fragment which is needed for the set of raw fonts -\fontinst has (i) installed directly (using |\installrawfont|) -or (ii) used as a base font for some installed virtual font (generated -by |\installfont|). \Fontinst does not support the map file -syntaxes of every existing driver, but the system is designed to be -extendable and contributions that extend its capabilities are welcome. -Nor can \fontinst examine your \TeX\ system and -determine every piece of information needed to make the correct map -file fragments, but you can tell it roughly how your installation -looks, it can make guesses which work most of the time, and you can -specify most things explicitly if the guesses turn out to be wrong. -Should the available options for configuring the process turn out to -be inadequate for your needs, then please write to the -\fontinst mailing list about this---there is probably a way -to improve the system so that your needs can be met. - -Now what does one have to do to use this map file fragment writer, -then? First you need to tell \fontinst to record the -information the map file fragment writer needs. You do this by giving -the command -\begin{quote} - |\recordtransforms{whatever.tex}| -\end{quote} -at the beginning of the run. Here \texttt{whatever.tex} is the name of -a file that will be created, so you can use some other name if you -like. After that you do all the calls to |\transform|\-|font|, -|\install|\-|font|, |\install|\-|raw|\-|font|, |\latin|\-|family|, -etc.\ you need to make the fonts you want. When you're done, you give -the command -\begin{quote} - |\endrecordtransforms| -\end{quote} -and end the run (say |\bye|). The file \texttt{whatever.tex} will now -contain the information about which fonts were used and what needs to -be done with them. - -The second step is to actually run the map file fragment writer. -Observe that it is located in the file \texttt{finstmsc.sty}, not -\texttt{fontinst.sty}! The commands you need to give it can be so few -that you can type them in at \TeX's \texttt{*} prompt, but if you are -writing a command file then it should typically have the following -structure (comments not necessary, of course): -\begin{quote} - \begin{tabular}{ll} - |\input finstmsc.sty|& |%| Input command definitions\\ - \meta{general settings} & |%| See below\\ - |\adddriver|\marg{driver name}\marg{output file}& - |%| Open output file\\ - |\input whatever.tex|& |%| Writes to output file(s)\\ - |\donedrivers|& |%| Close output file(s), tidy up\\ - |\bye|& |%| Quit - \end{tabular} -\end{quote} -The |\adddriver| command gives the order ``write map file entries for -the \meta{driver name} DVI driver to the file \meta{output file}.'' The -plan is that it should be possible to use the name of just about any -major driver (\texttt{dvips}, \texttt{xdvi},\footnote{Or -does that use the same map file as \texttt{dvips}? I heard somewhere -that it did. /LH} \texttt{pdftex},\footnote{pdf\TeX\ can read -the map files generated for \texttt{dvips}, but a separate driver is -desirable because the formats are not completely identical.} -\texttt{OzTeX}, etc.) here and get suitable map file entries for that -driver as output, but for the moment only the \texttt{dvips} and -\texttt{dvipdfm}\footnote{Whose support I made very much to illustrate -that you \emph{don't} have to be a big and ancient driver like -\texttt{dvips} to have supporting code put into \fontinst. -(The fact that I just happened to have printed out the documentation and -that is was easy to read also helped, of course.) Note, however, that -there won't be any support for a driver unless someone sits down and -writes the code for it! Don't assume I will. /LH} drivers are supported. - -You may also use \texttt{debug} or \texttt{pltotf} for \meta{driver name}. -The \texttt{debug} ``DVI driver'' file simply contains all the available -information about each font (hence it should come handy for debugging -code writing entries for real drivers) in a format that should be easy -to interpret for a human. It could be the right choice if you're going -to write the map file manually, as the combined effects of several -font transformations are not always easy to compute manually. The -file generated for the \texttt{pltotf} ``driver'' is actually a shell -script consisting of a sequence of \pltotf commands. These commands -perform the \pl to \tfm conversion for precisely those fonts that are -actually needed (\fontinst usually generates \pl files also for a -number of fonts at intermediate stages of transformation, and many of -these need not be converted to \tfm files). The \texttt{TFMfileprefix} -string can be used to add a directory path to the \tfm file names, -perhaps saving the step of moving them to their proper location later. - -The file \texttt{whatever.tex} in the above example contains the -commands (|\makemapentry| commands) that actually cause entries to be -written to the output file. It also contains a number of |\storemapdata| -commands---these describe how some given font was made. If some -metric file you have used contains |\setrawglyph| commands that were -not automatically generated by \fontinst, then there might -not be a |\storemapdata| for the font they refer to in -\texttt{whatever.tex}, so you will have to include such a command -yourself somewhere. This can for example be done in the \meta{general -settings} part of the above example file. - -Another class of things that will typically appear in the -\meta{general settings} part above is commands that will inform the -routines actually writing output about your \TeX\ system, about the set -of fonts you are using on this run, or about something else that might -be useful. Some such commands are of a general nature and affect what -assumptions \fontinst will make in certain conditions when no -specific information is available. For the moment there commands are: -\begin{description} - \item[\cs{AssumeMetafont}] Assume all fonts with PL metrics are - bitmaps generated by Metafont, and therefore make no entries for - them. - \item[\cs{AssumeAMSBSYY}] Assume all fonts with PL metrics have their - \TeX\ names in all upper case as postscript names---just like the - Computer Modern fonts in the AMS\slash Blue~Sky\slash Y\&Y - distribution. - \item[\cs{AssumeBaKoMa}] Assume all fonts with PL metrics have their - \TeX\ names in all lower case as postscript names---just like the - Computer Modern fonts in the BaKoMa distribution. -\end{description} -Otherwise the default action of the routine for finding out the -postscript name of a font simply is to observe that it hasn't got a clue -about what the right value is when the metrics were taken from a PL -file, and therefore it writes `\texttt{??????}' for the postscript name. -\begin{description} - \item[\cs{AssumeLWFN}] Assume postscript fonts for which nothing - else has been specified are stored in files which are named - according to the \mbox{MacOS} scheme for - \texttt{LWFN}s.%\footnote{LaserWriter FoNt} -\end{description} -Otherwise the default action is to use the name of the AFM or PL from -which the metrics were originally taken, and add the file suffix stored -in the string \texttt{PSfontsuffix}. The default value of this string -is \texttt{.pfa}, but it can be changed using |\resetstr|. - -If neither the default nor the LWFN scheme produce correct results -then you may use the more specific |\specifypsfont| command, which -describes exactly which file (or files, if any) a given font is stored -in. The syntax of this command is -\begin{quote} - |\specifypsfont|\marg{PS font name}\marg{actions} -\end{quote} -where the \meta{actions} is a sequence of ``action commands''. -Currently the only such command is -\begin{quote} - |\download|\marg{file} -\end{quote} -which instructs the map file writer to include in any entry using -that PS font and ``instruction'' that the specified file should be -downloaded. Some examples are -\begin{verbatim} - \specifypsfont{Times-Roman}{} - \specifypsfont{Shareware-Cyrillic-Regular}{\download{fcyr.gsf}} - \specifypsfont{zmnl8ac6}{% - \download{MinionMM.pfb}\download{zmnl8ac6.pro}% - } -\end{verbatim} -Many \dvi drivers (for example \dvips) have more than one style of -font downloading (e.g., partial and full downloading). This interface -could be extended to control also such finer details (for example by -adding a |\fulldownload| command to force full download of a font), -but requests for this has so far been scarce. - -Finally, there is the |\declarepsencoding| command which is used to -link ETX files to postscript encodings. If no postscript encoding has -been linked to a given ETX file then \fontinst will -automatically create a postscript encoding (\texttt{.enc}) file for -that encoding, and use this file for all reencoding commands. -The \texttt{8r} encoding is predeclared, and it doesn't -matter if an encoding is undeclared if you never use it to reencode -fonts, but there is potentially a problem with not having declared -encodings you have installed and use for reencoding, as you may then -find yourself having two files with identical names that define -encodings that do not have the same name (as far as postscript is -concerned). - - - -\subsection{Tuning accent positions---an application of loops} - -The accent placements made by \texttt{latin.mtx} certainly aren't -perfect for all fonts, and the only way to find out where they should -be put is through trying in text the accented letters you get for a -couple of values for the position parameter and deciding which one -works best. Since to try one parameter value you need to (i) edit it -into an MTX file, (ii) run \fontinst, (iii) run -\vptovf, (iv) run \TeX\ on some test text, and (v) print that -text, trying one parameter value can take annoyingly much time. -Repeating the same procedure ten times to test ten values is not -something one does without being bored (unless one scripts it, of -course), but it is possible to try ten parameter values in a single -virtual font, and without doing very much typing. - -Say you're not too happy with how \texttt{latin.mtx} positions the -accent in the \texttt{ohungarumlaut} glyph: -\begin{quote} - |\setglyph{ohungarumlaut}|\\ - | \topaccent{o}{hungarumlaut}{500}|\\ - |\endsetglyph| -\end{quote} -The |500| is the horizontal position (in thousandths of the width of -the \texttt{o}) that the centre of \texttt{hungarumlaut} in the glyph -constructed will have, so that is the position parameter value that -you want to change. Create an MTX file containing the code -\begin{quote} - |\for(pos){250}{750}{50}|\\ - | \setglyph{ohungarumlaut\strint{pos}}|\\ - | \topaccent{o}{hungarumlaut}{\int{pos}}|\\ - | \endsetglyph|\\ - | \setleftrightkerning{ohungarumlaut\strint{pos}}|\\ - | {ohungarumlaut}{1000}|\\ - |\endfor(pos)| -\end{quote} -This will set eleven glyphs \texttt{ohungarumlaut250}, -\texttt{ohungarumlaut300}, \texttt{ohungarumlaut350}, \textellipsis\,, -\texttt{ohungarumlaut750}, each being an Hungarianly umlauted `o' -(i.e., an `\H{o}') but all having that umlaut in slightly different -positions. In order to put them in a font, you also need to make an -encoding that contains them. Therefore create an ETX file which -contains the code -\begin{quote} - |\relax\encoding|\\ - |\nextslot{"C0}|\\ - |\for(pos){250}{750}{50}|\\ - | \setslot{ohungarumlaut\strint{pos}}|\\ - | \endsetslot|\\ - |\endfor(pos)|\\ - |\endencoding| -\end{quote} -The command for installing this experiment font would be something like -\begin{quote} - |\installfont|\marg{some name}|{|\meta{the normal list of metrics}% - |,|\penalty0\meta{the new MTX}|}|\penalty0 - |{ot1,|\meta{the new ETX}|}|\penalty0|{OT1}|\textellipsis -\end{quote} -The reason for including \texttt{ot1} in the third argument above is -that you'll need letters other than `\H{o}' against which you can -compare the experimental glyphs. It would not have been possible to -use \texttt{t1} instead of \texttt{ot1} (even though that has more -Hungarian letters) since that would set all slots in the font and -leave none for these experimental \texttt{ohungarumlaut}s. - -It is even possible to use a loop for making the test text. The -\LaTeX\ macros -\begin{verbatim} -\newcount\slotcount -\newcommand\testtext[3]{% - \slotcount=#1\relax - \begin{description}% - \loop\item[\the\slotcount]#3% - \ifnum #2>>\slotcount \advance \slotcount 1 \repeat - \end{description}% -} -\DeclareTextCompositeCommand{\H}{OT1}{o}{\char\slotcount} -\end{verbatim} -will let you write -\begin{quote} - |\testtext|\marg{first}\marg{last}\marg{text} -\end{quote} -to get the text \meta{text} typeset once for each slot from -\meta{first} to \meta{last} inclusive, with |\H{o}| ranging through the -glyphs in this interval. Thus in this case -|\testtext|\penalty\hyphenpenalty|{"C0}|\penalty\hyphenpenalty|{"CA}|% -\penalty\hyphenpenalty|{Erd\H{o}s}| would be a trivial test. - - -\subsection{Font installation commands} -\label{Ssec:FontInstCmds} - -The |\installfont|, |\installrawfont|, and |\installfontas| commands -have the respective syntaxes -\begin{isyntax} - |\installfont|\marg{font-name}\marg{metrics}\marg{etx-list}\penalty0 - \marg{encoding}\marg{family}\marg{series}\marg{shape}\marg{size}\\ - |\installrawfont|\marg{font-name}\marg{metrics}\marg{etx-list}% - \penalty0 - \marg{encoding}\marg{family}\marg{series}\marg{shape}\marg{size}\\ - |\installfontas|\marg{font-name}\penalty0\marg{encoding}% - \marg{family}\marg{series}\marg{shape}\marg{size} -\end{isyntax} -The \meta{font-name} argument and the last five arguments are common -to all these commands. The first argument is the name of a \TeX\ font -to install. The last five arguments are the NFSS attributes under which -that font will be declared to \LaTeX---encoding, family, series, shape, -and size. It is worth observing that encoding names are usually in -upper case, whereas the family, series, and shape are usually in lower -case. The size argument is either a shorthand (declared using -|\declaresize|) for a particular font -size (or range of font sizes), or an explicit list of font sizes or -ranges of sizes, which is copied directly to the font declaration. -The most common case is to let the size argument be empty, as that is -declared as a shorthand for ``any size''. - -The |\installfontas| command does not itself create the font, it just -makes a note that the specified font declaration should be written to -the proper FD file at |\end|\-|install|\-|fonts|. The -|\install|\-|font| and |\install|\-|raw|\-|font| commands do however -produce the font, in the sense that they write a VPL and PL -respectively file for the font. It depends solely on the \meta{metrics} -and \meta{etx-list} arguments what this font will contain. Many -features of these arguments are new with \fontinst v\,1.9; -therefore the complete syntaxes are described below. - -Both arguments are comma-separated lists of basically file names (not -including an extension). The files listed in the \meta{metrics} are -font metric files which together build up a \emph{glyph base} -(definitions of glyphs and metrics related to one or several glyphs), -whereas the files listed in the \meta{etx-list} are encoding definition -files that select a subset of the glyph base for turning into a -\TeX\ font. The font metrics can be in either of the four formats -MTX, PL, AFM, and VPL, which are considered in that order. If the -metrics are not originally in MTX format then they will be converted -to this format (a new file will be created) before they are used. -The encoding definitions must be in ETX format. The files actually -read will have a suffix \texttt{.mtx}, \texttt{.pl}, \texttt{.afm}, -\texttt{.vpl}, or \texttt{.etx} appended to the name given, depending -on which format is expected. - -Within each element of the comma-separated list, the actual file name -is followed by zero or more \emph{modifier clause}s. A \meta{modifier -clause} consists of a \emph{keyword} followed by some number (usually -one) of \emph{arguments}, separated by spaces. The whole thing looks -a lot like the \meta{rule specifications} of e.g.\ the |\vrule| -command, but here the spaces are mandatory. The currently defined -\meta{modifier clause}s are -\begin{description} - \item[\mdseries\textvisiblespace\texttt{option}\textvisiblespace - \meta{string}] - Available for metric and encoding files. This adds \meta{string} - to the list of options for this file, which may affect what code - the file executes. The file can then test, using the |\ifoption| - command, whether a specific string is one of the options it was - given. - \item[\mdseries\textvisiblespace\texttt{scaled}\textvisiblespace - \meta{factor}] - Available for metric files. Causes the \texttt{rawscale} integer - variable to be set to the \meta{factor} (an integer expression) - while the file is being read. This scales glyphs and kerns that - are added to the glyph base by the \meta{factor}. - \item[\mdseries\textvisiblespace\texttt{suffix}\textvisiblespace - \meta{suffix}] - Available for metric files. Causes \meta{suffix} to be appended - to every glyph name appearing in a glyph or kern that file adds - to the glyph base. Thus ``\texttt{suffix /2}'' effectively - changes a - \begin{quote} - |\setrawglyph{a}|\dots - \end{quote} - to a - \begin{quote} - |\setrawglyph{a/2}|\dots - \end{quote} - \item[\mdseries\textvisiblespace\texttt{encoding}\textvisiblespace - \meta{etx-name}] - Available for metric files, and forces \fontinst to - only consider the PL and VPL formats for this font. - As these file formats do not contain glyph names, an ETX file - is used to assign glyph names to the slots in the font. - This ETX file is usually selected according to the - \texttt{CODINGSCHEME} property of the PL or VPL (using the - correspondences set up via the |\declare|\-|encoding| command), - but that information is not always as one would want it (there - are even fonts for which it is quite wrong). An \texttt{encoding} - clause bypasses this automatic mechanism, so that the file - \meta{etx-name}\texttt{.etx} is used instead. - -% % The following is no longer true as of v1.926: -% \textbf{Note:} The first time that a file in PL or VPL format is -% used in a \meta{metrics} argument, a corresponding MTX file is -% generated. This means that if the same file reference is used -% another time then the reference will be to the MTX file, not to -% the original PL or VPL, and thus \texttt{encoding} clauses on -% subsequent uses will have no effect. Each font only has one -% encoding, so it usually makes no sense to switch the ETX file -% used to interpret a font, but since MTX files are not -% automatically deleted between runs there is a risk that this -% takes away the intended effect of an \texttt{encoding} clause. - - \item[\mdseries\textvisiblespace\texttt{mtxasetx}] - This is available for files in the \meta{etx-list}. The actual - function of a - \begin{quote} - \meta{file-name} \texttt{mtxasetx} - \end{quote} - item in the \meta{etx-list} is that the file - \meta{file-name}\texttt{.mtx} is inputted (\emph{not} - \meta{file-name}\texttt{.etx}) and that the correspondence - between glyph names and slot numbers set up in - |\set|\-|raw|\-|glyph| or |\set|\-|scaled|\-|raw|\-|glyph| - commands in this file is treated as if it had been set up by - |\setslot| commands in an ETX file. Provided the MTX file is - transformable, the glyph base will be unaffected. - - The purpose of this feature is to simplify quick and dirty - installations of odd fonts for which no suitable ETX file is - available. This can be useful in early stages of the design of - a new font, but is inferior to installation using proper ETX - files since one for example cannot specify any ligatures in - MTX files. -\end{description} -Furthermore there is a special exception for the \meta{metrics}: if -the first token in one of the list items is the control sequence -|\metrics|, then the rest of that item is interpreted as explicit -metric commands to execute. - -If the \meta{metrics} of two subsequent |\install|\-|font| -or |\install|\-|raw|\-|font| commands are identical then the glyph -bases will be identical as well. This creates an opportunity for -optimization, which \fontinst makes use of by caching glyph -bases from one installation command to the next so that the glyph -base does not have to be rebuilt in these cases. A side-effect of -this caching is that local assignments made between two font -installation commands are cleared out with the glyph base, but -|\setint| and similar \fontinst commands make global -assignments when used in such positions. - -Some examples might be in order. The first is an adaptation of an -installation command from \texttt{mfnt-0.59} %~\cite{mfnt} -by Matthias Clasen and Ulrik Vieth: the installation command for the -8-bit math font \texttt{xma1000} (which can be thought of as being -to \texttt{cmmi10} sort of as \texttt{ecrm1000} is to \texttt{cmr10}). -The first three \texttt{encoding} clauses are more fine-tuning---without -them, a few glyphs would get incorrect names---but the last two are -quite essential, as the \texttt{msam10} and \texttt{msbm10} fonts -incorrectly claim to have the coding scheme \texttt{TEX MATH -SYMBOLS}. -\begin{verbatim} - \installfont{xma1000}{% - yma1000 encoding mcin,% - cmr10 encoding ot1upright,% - cmmi10,% - cmsy10 encoding omscal,% - msam10 encoding msam,% - msbm10 encoding msbm,% - mccmhax,mccmkern,mcmissing,% - cmsy10-base,cmsy10-extra% - }{mc}{MC}{cm}{m}{n}{<<10->>} -\end{verbatim} -Also note the explicit \LaTeX\ size specification for the range -``10\,pt and up''. - -The second example makes use of a \texttt{suffix} clause to combine -the letters from one font with the digits from another. -\begin{verbatim} - \installfont{msbrj8t}{msbr8r,msbrc8r suffix /2,latin}{digit2,t1} - {T1}{msbj}{m}{n}{} -\end{verbatim} -In this case, the glyph base contains the glyphs of Monotype Sabon -(SabonMT)---under names such as \texttt{A} for `A', \texttt{a} for -`a', and \texttt{one} for a lining digit one---as well as the -glyphs of Monotype Sabon Small Caps and Oldstyle Figures -(SabonMT-SCOSF)---under names such as \texttt{A/2} for `A', -\texttt{a/2} for `\textsc{a}', and \texttt{one/2} for a hanging -digit one. The \texttt{digit2.etx} file simply makes the definition -\begin{verbatim} - \setcommand\digit#1{#1/2} -\end{verbatim} -which causes \texttt{t1.etx} to put \texttt{zero/2} in slot 48 (digit -zero), \texttt{one/2} in slot 49 etc., instead of as it normally -would \texttt{zero} in slot 48, \texttt{one} in slot 49 and so on. -The net effect is that the digits in the generated \texttt{msbrj8t} -is from \texttt{msbrc8r} (SabonMT-SCOSF) but everything else is from -\texttt{msbr8r} (SabonMT). - -The third example makes use of an \texttt{mtxasetx} clause to install -(with its default encoding) a font for which creating an appropriate -ETX file seems not worth the trouble. -\begin{verbatim} - \installrawfont{psyr}{psyr,\metrics - \setint{xheight}{\height{alpha}} - }{txtfdmns,psyr mtxasetx}{U}{psy}{m}{n}{} -\end{verbatim} -The effect of the second \texttt{psyr} is that \texttt{psyr.mtx} is -read (in case there was no \texttt{psyr.mtx} then it is created from -(hopefully) \texttt{psyr.afm}) and the information in it will form -the glyph base. Because of the |\metrics| control sequence, the rest -of that item will be interpreted as explicit metric commands -modifying the glyph base, and thus the |\setint| command can provide -a value for the \texttt{xheight} variable (there doesn't seem to be -such a value in the AFM). Once the glyph base is completed, the -|\install|\-|raw|\-|font| starts writing the file \texttt{psyr.pl} -(that's for the first \texttt{psyr}). The encoding of that font will, -because of the \texttt{psyr mtxasetx}, be the same as that used in -\texttt{psyr.mtx}. Finally, the \texttt{txtfdmns} is for -\texttt{txtfdmns.etx}, an ETX file which sets fontdimens 1--16 as for -a \texttt{T1} encoded font but does not set any slots. Since -\texttt{psyr.mtx} reinterpreted as an ETX file sets slots but no -fontdimens, these complement each other nicely. - - - -\subsection{Bounding boxes} - -Han The Thanh has created an implementation of bounding box support -for \fontinst, and it is a modified form of that support -is distributed with \fontinst as the file \texttt{bbox.sty}. To load -this, begin your command file with -\begin{verbatim} - \input fontinst.sty - \input bbox.sty -\end{verbatim} -The reason for not making it default is that keeping track of bounding -boxes increases some of \fontinst's memory requirements quite a lot. - -One important -characteristic of this implementation is that the dimensions of the -bounding box are not bundled into the same data structure (the -|\g-|\meta{glyph} macros) as the glyph's width, height, depth, and -italic correction are, but stored in a separate data structure (the -|\gb-|\meta{glyph} macros). A glyph doesn't need to have its bounding -box set, it is simply a piece of information that \fontinst -will store if you tell it to and which you can later retrieve. - -The bounding box will be stored as coordinates of the sides in the -normal AFM coordinate system. The commands for retrieving these -coordinates are -\begin{center} - \begin{tabular}{ll} - \textbf{Command}& \textbf{Side}\\ - |\bbtop|\marg{glyph}& top ($y$-coordinate)\\ - |\bbbottom|\marg{glyph}& bottom ($y$-coordinate)\\ - |\bbleft|\marg{glyph}& left ($x$-coordinate)\\ - |\bbright|\marg{glyph}& right ($x$-coordinate) - \end{tabular} -\end{center} -In Thanh's implementation the command names were |\ury|, |\lly|, -|\llx|, and |\urx| respectively instead, but I think the former are -easier to remember. If no bounding box has been set for a glyph then -the above commands will instead report the corresponding coordinate of -the glyph's \TeX\ box (i.e.\ |\height|\marg{glyph}, -|\neg{\depth|\marg{glyph}|}|, |0|, and |\width|\marg{glyph} -respectively). - -The command for setting the bounding box of a glyph is -\begin{quote} - |\setglyphbb|\marg{glyph}\marg{left}\marg{bottom}\marg{right}% - \marg{top} -\end{quote} - - - -\section{Miscellaneous notes} - -\subsection{On verbatim, typewriter, and monowidth fonts} - -The verbatim, typewriter, and monowidth concepts are common sources -of confusion for those who use \fontinst to install fonts -with \LaTeX; in particular -there are many misconceptions about the relation between them. The -official view (of which not much has actually been brought forward) -is that these concepts are really about three quite different things. - -A font is a \emph{monowidth} (monospaced, fixed-pitch) font if all -glyphs in it have exactly the same width. Some font formats make -special provisions for such fonts; the most notable example is the -AFM format, where a single \texttt{CharWidth} keyword specifies the -width for all glyphs in the font. \Fontinst responds to this -by including the command -\begin{quote} - |\setint{monowidth}{1}| -\end{quote} -in the MTX file generated from an AFM, but that is everything that is -hard-wired into the program. That a font is monowidth is however -something that one should take note of when installing it for \TeX, -as it means many of the glyphs in it have such a strange appearance -that they are (pretty much) useless. The \texttt{endash} is for -example usually only half as long as the \texttt{hyphen} and the -letters in ligature glyphs are only half as wide as normal letters. -Many of the ETX and MTX files that come with \fontinst -contain special commands to avoid making use of such degenerate -glyphs. - -That a font is a \emph{typewriter} font really only means that it has -a typewriterish look about it. The two most familiar typewriter fonts -are probably Computer Modern Typewriter (\texttt{cmtt}) and Courier. -Both of these fonts are monowidth, but there is no absolute rule about -this. One of the standard \TeX\ fonts is for example Computer Modern -Variable-width Typewriter (\texttt{cmvtt}), which is not a monowidth -font, as Figure~\ref{Fig:TTvsVTT} shows. -\begin{figure} - \begin{tabular}{ll} - \texttt{cmtt}:& \fontfamily{cmtt}\selectfont - The quick brown fox jumps over the lazy dog.\\ - \texttt{cmvtt}:& \fontfamily{cmvtt}\selectfont - The quick brown fox jumps over the lazy dog. - \end{tabular} - \caption{Two typewriter fonts} - \label{Fig:TTvsVTT} -\end{figure} - -The verbatim concept has very little to do with fonts at all; in -\LaTeX\ it is considered to be a property of the environment -(\texttt{verbatim}, \texttt{macrocode}, etc.) rather than a property -of the font. The connection there is with fonts is that the encoding -of the font must contain visible ASCII (as defined in Appendix~C -of \emph{The \TeX book}%~\cite{TeXbook} -) as a subset for the text to -be rendered correctly. The \texttt{cmtt} family is the only one amongst -the original Computer Modern fonts which meets this criterion and -that is the primary grounds for the idea that these three concepts -should be connected. Today that reason is at best a very weak one, as -all \texttt{T1}-encoded fonts also meet the criterion of containing -visible ASCII as a subset. - -A circumstance which has probably added to the confusion is that -\texttt{OT1} is usually claimed to be an encoding. In reality the -Computer Modern fonts that are declared in \LaTeX\ as being -\texttt{OT1} display as many as five different encodings, as shown in -Table~\ref{Tab:OT1-fonts}. -\begin{table} - \begin{tabular}{lccc} - & \texttt{TEX TEXT}& - \begin{tabular}[b]{c}\texttt{TEX TEXT WITHOUT}\\ - \texttt{F-LIGATURES}\end{tabular}& - \texttt{TEX TYPEWRITER TEXT}\\ - \noalign{\medskip} - non-italic& - \begin{tabular}{l} - \texttt{cmb10}\\ - \texttt{cmbx5}--\texttt{12}\\ - \texttt{cmbxsl10}\\ - \texttt{cmdunh10}\\ - \texttt{cmff10}\\ - \texttt{cmfib8}\\ - \texttt{cmr6}--\texttt{17}\\ - \texttt{cmsl8}--\texttt{12}\\ - \texttt{cmss8}--\texttt{17}\\ - \texttt{cmssbx10}\\ - \texttt{cmssdc10}\\ - \texttt{cmssi8}--\texttt{17}\\ - \texttt{cmssq8}\\ - \texttt{cmssqi8}\\ - \texttt{cmvtt10} - \end{tabular}& - \begin{tabular}{l} - \texttt{cmcsc8}--\texttt{10}\\ - \texttt{cmr5} - \end{tabular}& - \begin{tabular}{l} - \texttt{cmsltt10}\\ - \texttt{cmtcsc10}\\ - \texttt{cmtt8}--\texttt{12} - \end{tabular}\\ - \noalign{\medskip} - italic& - \begin{tabular}{l} - \texttt{cmbxti10}\\ - \texttt{cmfi10}\\ - \texttt{cmti7}--\texttt{12}\\ - \texttt{cmu10} - \end{tabular}&& - \begin{tabular}{l} - \texttt{cmitt10} - \end{tabular} - \end{tabular} - \caption{``\texttt{OT1}-encoded'' Computer Modern fonts, collected - according to the actual font encoding} - \label{Tab:OT1-fonts} -\end{table} -Since most monowidth fonts are only used for setting verbatim text, -there is some code in \texttt{ot1.etx} which automatically chooses a -\texttt{TEX TYPEWRITER TEXT} encoding for the font when the -\texttt{monowidth} integer is set. The only reason for this is the -guess that this is what the user wanted. - - - -\section*{Acknowledgements} - -I'd like to thank all of the \fontinst $\alpha$-testers, especially -Karl Berry, Damian Cugley, Steve Grahthwohl, Yannis Haralambous, Alan -Hoenig, Rob Hutchings, Constantin Kahn, Peter Busk Laursen, Ciar{\'a}n {\'O} -Duibh{\'\i}n, Hilmar Schlegel, Paul Thompson, Norman Walsh and John Wells, -who made excellent bug-catchers! - -Thanks to Barry Smith, Frank Mittelbach, and especially Sebastian -Rahtz for many useful email discussions on how virtual fonts should -interact with \LaTeXe. - -Thanks to Karl Berry and Damain Cugley for detailed comments on this -documentation. - -Thanks to David Carlisle for the use of his \texttt{trig} macros for -calculating trigonometry. - - -% \section*{Warranty and distribution} -% -% There is no warranty for the \fontinst package, to the extent -% permitted by applicable law. Except when otherwise stated in writing, -% the author provides the program `as is' without warranty of any kind, -% either expressed or implied, including, but not limited to, the -% implied warranties of merchantability and fitness for a particular -% purpose. The entire risk as to the quality and performance of the -% program is with you. Should the package prove defective, you assume -% the cost of all necessary servicing, repair or correction. -% -% In no event unless required by applicable law or agreed to in writing -% will the author be liable to you for damages, including any general, -% special, incidental or consequential damages arising out of the use or -% inability to use the program (including but not limited to loss of -% data or data being rendered inaccurate or losses sustained by you or -% third parties or a failure of the program to operate with any other -% programs), even if such holder or other party has been advised of the -% possibility of such damages. -% -% Redistribution of unchanged files is allowed provided that all files -% listed in the \texttt{MANIFEST} file are distributed. -% -% If you receive only some of these files from someone, or if you -% receieve altered files, then complain! - -\end{document} diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/manual/intro98.dvi b/Master/texmf-dist/doc/fonts/fontinst/base/manual/intro98.dvi Binary files differdeleted file mode 100644 index d272df5088e..00000000000 --- a/Master/texmf-dist/doc/fonts/fontinst/base/manual/intro98.dvi +++ /dev/null diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/manual/intro98.pdf b/Master/texmf-dist/doc/fonts/fontinst/base/manual/intro98.pdf Binary files differdeleted file mode 100644 index 3f517608d16..00000000000 --- a/Master/texmf-dist/doc/fonts/fontinst/base/manual/intro98.pdf +++ /dev/null diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/manual/intro98.tex b/Master/texmf-dist/doc/fonts/fontinst/base/manual/intro98.tex deleted file mode 100644 index 0e7c485ab6c..00000000000 --- a/Master/texmf-dist/doc/fonts/fontinst/base/manual/intro98.tex +++ /dev/null @@ -1,1330 +0,0 @@ -%%% ==================================================================== -%%% @LaTeX-file{ -%%% author = "Alan Jeffrey and Rowland McDonnell and -%%% Ulrik Vieth and Lars Hellstr{\"o}m", -%%% version = "1.927", -%%% date = "28 July 2004", -%%% time = "23:20:27 CEST", -%%% filename = "intro98.tex", -%%% email = "fontinst@tug.org", -%%% checksum = "", -%%% codetable = "ISO/ASCII", -%%% keywords = "fontinst, TeX, PostScript, documentation", -%%% supported = "yes", -%%% abstract = "This is documentation for the fontinst -%%% font installation package.", -%%% package = "fontinst", -%%% dependencies = "ltxguide.cls, url.sty, xspace.sty" -%%% } -%%% ==================================================================== - -% Copyright 1993, 1994, 1995, 1996 Alan Jeffrey - -% Modified by Rowland McDonnell June 1998 -% Modified and revised by Ulrik Vieth June 1998 - -\documentclass[a4paper]{ltxguide} -\usepackage[OT1]{fontenc} -\usepackage{url,xspace} -\usepackage{graphicx} -%\renewcommand\rmdefault{ppl} -%\renewcommand\rmdefault{padx} -%\renewcommand\rmdefault{pmnx} - - -% Title page and running heads. - -\makeatletter -\newcommand{\subtitle}[1]{\renewcommand{\@subtitle}{#1}} -\newcommand{\version}[1]{\renewcommand{\@version}{#1}} -\newcommand{\illustration}[1]{\renewcommand{\@illustration}{#1}} - -\newcommand{\@subtitle}{} -\newcommand{\@version}{???} -\newcommand{\@illustration}{cover.eps} - -\pagestyle{myheadings} -\AtBeginDocument{\markright{\small\itshape - \@author\hfill\@title: \@subtitle\quad}} - - -\renewcommand{\maketitle}{{% - \thispagestyle{empty}% - \normalfont\centering - \null - {\fontsize{100}{100}\textit{\@title}}% - \par\bigskip - {\Large\textbf{\@subtitle}}% - \vfill - \includegraphics[width=\textwidth]{\@illustration}% - \vfill - {\Large\textbf{% - \@author\\[\smallskipamount] \@title~v\@version - \quad\textperiodcentered\quad \@date}}% - \clearpage -}} -\makeatother - - -% Set lists tighter (assuming non-zero \parskip). - -\makeatletter -\renewcommand{\@listI}{% - \leftmargin\leftmargini - \parsep\medskipamount - \itemsep\z@ % + parsep - \topsep\z@ % + parskip - \partopsep\z@ -} -\makeatother - -% Set spacing around captions. - -\setlength{\abovecaptionskip}{\medskipamount} -\setlength{\belowcaptionskip}{\medskipamount} - -% Markup for logos, file types, programs, etc. - -\newcommand*{\cs}[1]{\texttt{\char`\\ #1}\xspace} - -\newcommand*{\OzTeX}{O\kern-.03em z\kern-.15em\TeX} -\newcommand*{\OzMF}{O\kern-.03em zMF} -\newcommand*{\OzTools}{O\kern-.03em z\kern-.15em Tools} - -\newcommand{\PS}{Post\-Script\xspace} -\newcommand{\TT}{True\-Type\xspace} - -\newcommand*{\setfilename}[1]{\texttt{#1}} -\newcommand*{\setdotfilename}[1]{\setfilename{.#1}} -\newcommand*{\setpackagename}[1]{\textsc{#1}} - -\newcommand{\dvips} {\setpackagename{dvips}\xspace} -\newcommand{\Dvips} {\setpackagename{Dvips}\xspace} -\newcommand{\fontinst}{\setpackagename{font\-inst}\xspace} -\newcommand{\Fontinst}{\setpackagename{Font\-inst}\xspace} - -% \show\fontname -\newcommand{\fontnamekb}{fontname\xspace} -\newcommand{\Fontnamekb}{Fontname\xspace} - -\newcommand{\mf} {\setfilename{mf}\xspace} -\newcommand{\Mf} {\setfilename{Mf}\xspace} -\newcommand{\vf} {\setfilename{vf}\xspace} -\newcommand{\Vf} {\setfilename{Vf}\xspace} -\newcommand{\pl} {\setfilename{pl}\xspace} -\newcommand{\Pl} {\setfilename{Pl}\xspace} -\newcommand{\fd} {\setfilename{fd}\xspace} -\newcommand{\Fd} {\setfilename{Fd}\xspace} -\newcommand{\pk} {\setfilename{pk}\xspace} -\newcommand{\Pk} {\setfilename{Pk}\xspace} -\newcommand{\afm}{\setfilename{afm}\xspace} -\newcommand{\Afm}{\setfilename{Afm}\xspace} -\newcommand{\vpl}{\setfilename{vpl}\xspace} -\newcommand{\Vpl}{\setfilename{Vpl}\xspace} -\newcommand{\tfm}{\setfilename{tfm}\xspace} -\newcommand{\Tfm}{\setfilename{Tfm}\xspace} -\newcommand{\mtx}{\setfilename{mtx}\xspace} -\newcommand{\Mtx}{\setfilename{Mtx}\xspace} -\newcommand{\etx}{\setfilename{etx}\xspace} -\newcommand{\Etx}{\setfilename{Etx}\xspace} -\newcommand{\pfa}{\setfilename{pfa}\xspace} -\newcommand{\Pfa}{\setfilename{Pfa}\xspace} -\newcommand{\pfb}{\setfilename{pfb}\xspace} -\newcommand{\Pfb}{\setfilename{Pfb}\xspace} -\newcommand{\dvi}{\setfilename{dvi}\xspace} -\newcommand{\Dvi}{\setfilename{Dvi}\xspace} -\newcommand{\ttf}{\setfilename{ttf}\xspace} -\newcommand{\Ttf}{\setfilename{Ttf}\xspace} - -\newcommand{\vftovp}{\setpackagename{vftovp}\xspace} -\newcommand{\vptovf}{\setpackagename{vptovf}\xspace} -\newcommand{\pltotf}{\setpackagename{pltotf}\xspace} -\newcommand{\tftopl}{\setpackagename{tftopl}\xspace} - - -% Stolen from Dr Knuth -\makeatletter % borrow the private macros of PLAIN (with care) -\def\oct#1{\hbox{\rm\'{}\kern-.2em\it#1\/\kern.05em}} % octal constant -\def\hex#1{\hbox{\rm\H{}\tt#1}} % hexadecimal constant -% macros for font tables -\def\oddline#1{\cr - \noalign{\nointerlineskip} - \multispan{19}\hrulefill& - \setbox0=\hbox{\lower 2.3pt\hbox{\hex{#1x}}}\smash{\box0}\cr - \noalign{\nointerlineskip}} -\def\evenline{\cr\noalign{\hrule}} -\def\chartstrut{\lower4.5pt\vbox to14pt{}} -\def\beginchart#1{$$\global\count@=0 #1 - \halign to\hsize\bgroup - \chartstrut##\tabskip0pt plus10pt& - &\hfil##\hfil&\vrule##\cr - \lower6.5pt\null - &&&\oct0&&\oct1&&\oct2&&\oct3&&\oct4&&\oct5&&\oct6&&\oct7&\evenline} -\def\endchart{\raise11.5pt\null&&&\hex 8&&\hex 9&&\hex A&&\hex B& - &\hex C&&\hex D&&\hex E&&\hex F&\cr\egroup$$} -\def\*{\global\advance\count@ by1 } -\def\:{\setbox0=\hbox{\char\count@}% - \ifdim\ht0>7.5pt\reposition - \else\ifdim\dp0>2.5pt\reposition\fi\fi - \box0\global\advance\count@ by1 } -\def\reposition{\setbox0=\hbox{$\vcenter{\kern2pt\box0\kern2pt}$}} -\def\smallchart{% -%\global\advance\count@ by16 - &\oct{00x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline0 - &\oct{01x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{02x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline1 - &\oct{03x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{04x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline2 - &\oct{05x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{06x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline3 - &\oct{07x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{10x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline4 - &\oct{11x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{12x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline5 - &\oct{13x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{14x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline6 - &\oct{15x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{16x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline7 - &\oct{17x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline} - -\def\bigchart{% -%\global\advance\count@ by16 - &\oct{00x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline0 - &\oct{01x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{02x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline1 - &\oct{03x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{04x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline2 - &\oct{05x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{06x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline3 - &\oct{07x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{10x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline4 - &\oct{11x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{12x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline5 - &\oct{13x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{14x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline6 - &\oct{15x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{16x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline7 - &\oct{17x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{20x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline8 - &\oct{21x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{22x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline9 - &\oct{23x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{24x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{A} - &\oct{25x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{26x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{B} - &\oct{27x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{30x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{C} - &\oct{31x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{32x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{D} - &\oct{33x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{34x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{E} - &\oct{35x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{36x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{F} - &\oct{37x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline} - -% \font\xrm = cmr10 at 10pt % change this line to test font -% \beginchart\xrm \normalchart \endchart - -\newcommand{\smallfontchart}[1]{% - \font\xrm = #1 \beginchart\xrm \smallchart \endchart} -\newcommand{\bigfontchart}[1]{% - \font\xrm = #1 \beginchart\xrm \bigchart \endchart} - -% \smallfontchart{cmr10 at 10pt} -% \bigfontchart{ecrm1000 at 10pt} -\makeatother -% End stolen from Dr Knuth - - - -\title{fontinst} -\subtitle{Font installation software for \TeX} -\author{Alan Jeffrey and Rowland McDonnell} -\illustration{roadmap.eps} -\version{1.8} -\date{30 June 1998} - -\begin{document} - -\maketitle - - -\begin{small} - This is the tutorial part of the 1998 \fontinst manual, chiefly - written by Rowland McDonnell and conveying his then-view on related - subjects. Although most of it is still correct, - the passing of time has rendered it somewhat antiquated, and the - average current (2004) user new to \fontinst would probably find - Philipp Lehman's \emph{The Font Installation Guide} - (\url{http://www.ctan.org/tex-archive/info/Type1fonts/fontinstallationguide/}) - more relevant. -\end{small} - -\tableofcontents - - -\clearpage - -\section{Introduction} - -The \fontinst package is a set of \TeX\ macros written to create -virtual fonts for use with \TeX. Its main use is creating the -files needed so you can use PostScript Type 1 fonts with \LaTeX. - -\Fontinst needs information about the fonts it works with. This -information needs to be supplied in an Adobe Font Metric (\afm) or -\TeX\ Property List (\pl) file. \pl files can be created from -\tfm files using \tftopl, a program normally included with a \TeX\ -system. - -The job that \fontinst does is complicated, but it can be used for -many tasks by people who are not \TeX\ font wizards. Having said -that, you do need to understand at least the basics of \LaTeXe's -font selection mechanism, which is documented in -\texttt{fntguide.tex}, part of the standard \LaTeX\ distribution. -\url{ftp://ftp.tex.ac.uk/tex-archive/macros/latex/base/fntguide.tex} -will fetch a copy if you don't have one to hand. - -To get the most benefit out of \fontinst, it's important to -understand and use Karl Berry's `\Fontnamekb' naming scheme. The -definitive version of this is available from your nearest CTAN -server. The following URL will fetch all the files needed -compressed into a single ZIP archive: -\url{ftp://ftp.tex.ac.uk/tex-archive/info/fontname.zip}. I -suggest that you print out the \Fontnamekb documentation and have -it handy when you're learning about \fontinst. - -The \fontinst package: -\begin{itemize} -\item Is written in \TeX, for maximum portability (at the cost of - speed). -\item Supports the OT1 (Computer Modern) and T1 (Cork) encodings. -\item Allows fonts to be generated with arbitrary `fake' - characters; for example the `ij' character can be faked if - necessary by putting an `i' next to a `j'. -\item Allows caps and small caps fonts with letter spacing and - kerning. -\item Allows kerning to be shared between characters, for example - `ij' can be kerned on the left as if it were an `i' and on the - right as if it were a `j'. This is useful, since many - PostScript fonts only include kerning information for characters - without diacriticals. -\item Allows the generation of math fonts with \verb|nextlarger|, - \verb|varchar|, and arbitrary font dimensions. -\item Allows more than one PostScript font to contribute to a - \TeX\ font, for example the `ffi' ligatures for a font can be - taken from the Expert encoding, if you have it. -\item Can automatically generate a \fd file for use with \LaTeXe. -\item Can be customized by the user to deal with arbitrary font - encodings. -\end{itemize} -Fontinst has been a stable piece of software since mid-1994. All -further updates will be upwardly compatible with the interface -described in this document. - -\subsection{What does \fontinst do?} - -\Fontinst is a tool written in \TeX\ that can create the various -extra files needed so you can use \PS fonts with \LaTeX\ and \TeX. -It can read in \afm files, and produces the necessary \vpl, \pl, -and \fd files to use the fonts (the human-readable \vpl and \pl -files produced by \fontinst are turned into the machine-readable -\vf and \tfm forms by \vptovf and \pltotf). It does not help you -configure your DVI driver. - -There also exists a \texttt{perl} front-end to \fontinst, intended -specifically for use with a Unix \TeX\ system, which takes care of -routine tasks such as running \vptovf and \pltotf on the generated -files after \fontinst has finished it's job. It also generates a -font map file for use with \dvips. - -\Fontinst's main job is creating \vf files (virtual fonts). Not -all \TeX\ systems can use them. As far as I know, all current -(1998) free and shareware \TeX\ systems can; virtual fonts have -been in widespread use with \TeX\ since 1990. If you have a TeX -system that can't use virtual fonts, \fontinst is most likely -useless to you. - -There are some nice things about having a tool written in \TeX\ to -do this: it's completely portable and you can modify its behaviour -using \TeX\ commands. The only real problem is that it's -relatively slow: you can expect a typical \fontinst run to take -something like 10--20 minutes on, say, a 40~MHz 80486SX PC or a -25~MHz 68LC040 Macintosh. - -\Fontinst can do its work on any font for which you have a -corresponding \afm or \tfm metric file, so it's not limited to -working with \PS fonts; I have used it to produce the files I -needed to use \TT fonts with \LaTeX. Whether or not you can do -this depends on whether or not you have suitable metric files and -whether or not your \TeX\ system can use \TT fonts. In -particular, the pdf\TeX\ program supports \TT fonts and includes a -utility \texttt{ttf2afm} to generate \afm files from \ttf fonts. - -Some people have used \fontinst to produce `special effects' with -normal \TeX\ fonts. One example is the \setpackagename{eco} set -of fonts (available from CTAN: -\url{ftp://ftp.tex.ac.uk/tex-archive/fonts/eco/}). These fonts -are the same as the standard EC (European Modern) fonts, but with -normal numerals replaced with old style numerals -- -\oldstylenums{12345} rather than 12345 -- everywhere except in -maths mode. - -\subsection{Installation} - -To install \fontinst, put the contents of the \url{inputs/tex}, -\url{inputs/etx}, \url{inputs/mtx} and \url{examples} directories -into a directory read by \TeX, for example -\url{TEXMF/tex/generic/fontinst}. - -When you use \fontinst, you need to make sure that the \afm and -\pl files it will work on are in a directory searched by \TeX. - -If you are using \texttt{web2c} \TeX\ on a Unix system with the -\TeX\ directory structure (TDS), you might put all the \afm files -in subdirectories of \url{TEXMF/fonts/afm/*}. And then say: -\begin{verbatim} - setenv TEXINPUTS $TEXMF/fonts/afm//:: -\end{verbatim}%$ -Note that \pl files are not normally kept in \TeX\ installations, so -if you want to use MF fonts with \fontinst you have to generate the -corresponding \pl files from \tfm files and put them in your working -directory before running \fontinst. - -You could adopt a similar strategy with other \TeX\ systems: -create directories for the required files and then change the -relevant parameter (\url{input_folders} in the default -configuration file with \OzTeX, for example). - -The approach I use is this: I write a file containing commands for -\fontinst to process, and put the \afm and \pl files needed in the -same directory as that file. When \fontinst has finished working, -I delete the \afm and \pl files because they are not needed and -waste space on my hard disc drive. Some application programs on -some computers need \afm files, so it's not always a good idea to -remove them completely. - -\subsection{Why do we need \fontinst?} - -\TeX\ refers to characters by number when it's typesetting. When -you use a command like \verb|\i|, \TeX\ puts a number (16 if -you're using OT1, 25 if you're using T1) into the \dvi file. If -you're using a font designed for use with \TeX, this number will -correspond to the character `\i'. Assuming OT1 encoding for the -moment, when you come to print out your \dvi file, the DVI driver -will see the number 16 in the \dvi file, and select the character -that sits in position 16 of the corresponding printer font file (a -\pk file in the case of normal \TeX\ fonts). Unless something has -gone wrong, that will result in the character `\i' being placed on -the page. - -It's useful to think of these numbers and the actual characters -corresponding to each number as sets called `encodings'. A -particular set of characters are assigned particular numbers. An -example of an encoding is shown in table~\ref{OT1table}. - -\TeX\ began life using 7-bit fonts. This means the original \TeX\ -fonts used the numbers 0--127 to represent characters: -128~characters per font. \TeX\ can now use 8-bit fonts: -256~numbers from 0--255, but even so, most typesetting with \TeX\ -still uses the original 7-bit encoding, now called `OT1' (Old -\TeX~1 encoding). This has a correspondance between numbers and -characters shown in table~\ref{OT1table}. The numbers used in -that table are hexadecimal and octal because it makes for a neat -table and anyway I stole the code to generate it from Donald Knuth -and that's how he did it. - -\begin{table}[!t] -\smallfontchart{cmr10 at 10pt} -\caption{The OT1 font encoding}\label{OT1table} -\end{table} - -Returning to the example above, if you've a number 16 in your \dvi -file (expecting `\i', a dotless~i), but rather than printing -with an OT1 encoded font, you print using a non re-encoded \PS -font in Adobe standard encoding, you'll get a blank, because the -Adobe standard encoding has nothing in that character position. - -There are several ways round this problem; I'll consider two cases -here. If you are using \LaTeX\ you can tell it about a new -encoding and re-define the commands that produce characters like -`\i' that live in different positions in different encodings, or -you can use a tool to re-encode the font so that it has the -expected characters in the appropriate positions. - -Re-encoding is the approach \fontinst uses: it can produce files -to map the characters in the new font to one of \TeX's existing -encodings; this works with formats other than \LaTeX. - -The first approach is used to define the standard encodings that -\LaTeX\ uses. See, for example, the file \texttt{ot1enc.def} that -comes with the current \LaTeX\ distribution, which defines the a -few commands that refer to characters which aren't in the -positions \TeX\ would otherwise assume. This works only with -modern versions of \LaTeX. - -The second approach is used to allow you to use fonts in other -encodings with any dialect of \TeX. It has the some advantages -over the first method: it works with any \TeX\ format; and it -improves portability, because you can typeset a document using a -standard \TeX\ encoding, sure that the same document will print -correctly on a different kind of computer using a font with a -different encoding. For example, you might say: -\begin{verbatim} - \usepackage{times} -\end{verbatim} -in the preamble of your document. On my computer, that means my -DVI driver will use a Macintosh encoded \TT version of Times. On -your computer, it might mean the dvi driver will use a Unicode -encoded \PS version of Times-Roman. The results will be identical -in either case, without needing to modify the document. - -\subsection{How do you use \fontinst?} - -\Fontinst works on \afm files named (more-or-less) according to -Karl Berry's font naming scheme (see -\url{ftp://ftp.tex.ac.uk/tex-archive/info/fontname} at CTAN). -Let's say you want to use the Adobe Times fonts. You can get the -metric files for this font from CTAN: -\begin{center} -\begin{small} -\begin{tabular}{ll} - \emph{Location of file at CTAN} & \emph{Rename to} \\ - \url{fonts/psfonts/adobeafm/base35/tib_____.afm} & - \texttt{ptmb8a.afm} \\ - \url{fonts/psfonts/adobeafm/base35/tibi____.afm} & - \texttt{ptmbi8a.afm} \\ - \url{fonts/psfonts/adobeafm/base35/tii_____.afm} & - \texttt{ptmri8a.afm} \\ - \url{fonts/psfonts/adobeafm/base35/tir_____.afm} & - \texttt{ptmr8a.afm} -\end{tabular} -\end{small} -\end{center} -The new name is the name you should give the \tfm files so that -\fontinst understands what each file contains. The initial `|p|' -means `Adobe'; `|tm|' means `Times'; `|b|' bold, `|r|' roman, -`|i|' italic; and `|8a|' means `Adobe standard encoding'. - -The simplest use of \fontinst is to put the four \afm files in the -same directory as \texttt{fontinst.sty} and run \TeX\ on -\texttt{fontinst.sty}. At the \verb|*| prompt type: -\begin{verbatim} - *\latinfamily{ptm}{} \bye -\end{verbatim} - -Some time later (about 17 minutes on my rather old computer), -\fontinst will have finished, having created: -\begin{itemize} -\item Two \pl files for each \afm file -\item One \vpl file for each \TeX\ font -\item One \fd file for each family -\end{itemize} -The \pl files come in pairs: for example, \texttt{ptmb8a.pl} and -\texttt{ptmb8r.pl}. The |8a| version has the same encoding as the -original font; the |8r| version is re-encoded to |TeXBase1| (|8r|) -encoding, and is the font that is the base on which the T1 and OT1 -encoded versions are based on. The raw |8a| (Adobe standard) -encoded font is not normally used. - -These can be converted to \TeX\ fonts using \pltotf or \vptovf. -If you have \OzTeX, launch \OzMF, select \pltotf (or \vptovf) from -the Tools menu, and say `Do all files'. - -If you use the \texttt{bash} shell on a Unix system, you can -process all files using these one-liners at the \verb|$| prompt: -\begin{verbatim} - $ for f in in *.pl; do pltotf $f; done - $ for f in in *.vpl; do vptovf $f; done -\end{verbatim}%$ -(This assumes that \pltotf and \vptovf can deduce the file names -of the corresponding \tfm and \vf files automatically.) - -You should then: -\begin{itemize} -\item Move the \tfm files to your \TeX\ fonts directory\\ - (e.g.~\url{TEXMFLOCAL/fonts/tfm/*}). -\item Move the \vf files to your virtual fonts directory\\ - (e.g.~\url{TEXMFLOCAL/fonts/vf/*}). -\item Move the \fd files to your \TeX\ inputs directory\\ - (e.g.~\url{TEXMFLOCAL/tex/latex/psfonts/*}). -\end{itemize} -If your \TeX\ installation is organized using the \TeX\ directory -structure (TDS), it is customary to subdivide the \tfm and \vf -files into subdirectories by supplier and typeface name. - -The \pl, \vpl, and \mtx files are debris that can now be deleted. -\mtx files are font metric files \fontinst creates for its own use -from \afm and \pl files. They're just more convenient for \TeX\ -to read than other forms -- think of them as \fontinst readable -\afm and \pl files. - -By now, you have all the files in place to produce a \dvi file -using the new fonts. You can make Adobe Times the default roman -font in your document by putting this in your preamble: -\begin{verbatim} - \renewcommand{\rmdefault}{ptm} -\end{verbatim} - -\TeX\ will now happily produce a perfectly good \dvi file -including the new font, which your DVI driver will choke on -because you've not yet told it about the new fonts. Exactly how -you do this depends on the dvi driver, but they all need the same -information: the name of a \TeX\ font; the printer font name it -corresponds to; some information to handle an re-encoding needed; -and (in the case of a \PS driver) perhaps an instruction to -download the font to the printer. You don't need to download the -Times font to a \PS printer, because Times is built in to every -\PS printer. - -If you use \dvips, these lines added to your \texttt{psfonts.map} -file will do the job: -\begin{verbatim} - ptmr8r Times-Roman "TeXBase1Encoding ReEncodeFont" <<8r.enc - ptmri8r Times-Italic "TeXBase1Encoding ReEncodeFont" <<8r.enc - ptmb8r Times-Bold "TeXBase1Encoding ReEncodeFont" <<8r.enc - ptmbi8r Times-BoldItalic "TeXBase1Encoding ReEncodeFont" <<8r.enc - ptmro8r Times-Roman "0.167 SlantFont TeXBase1Encoding ReEncodeFont" <<8r.enc - ptmbo8r Times-Bold "0.167 SlantFont TeXBase1Encoding ReEncodeFont" <<8r.enc -\end{verbatim} -And now you can print a \dvi file containing the new fonts. If -you really do want to use the `raw' |8a| encoded fonts for some -reason, you need to add these lines to your \texttt{psfonts.map} -file: -\begin{verbatim} - ptmr8a Times-Roman - ptmri8a Times-Italic - ptmb8a Times-Bold - ptmbi8a Times-BoldItalic - ptmro8a Times-Roman "0.167 SlantFont" - ptmbo8a Times-Bold "0.167 SlantFont" -\end{verbatim} - -Assuming that you're using the \fd file that \fontinst has -produced, and that you've asked for the Adobe Times family (|ptm|) -in medium series (|m|) and upright shape (|n| for normal) using -the NFSS font selection commands: -\begin{verbatim} - \renewcommand{\rmdefault}{ptm} - \rmfamily \mdseries \upshape -\end{verbatim} -Assuming further that you are using the \fd file \texttt{t1ptm.fd} -produced by \fontinst, the \TeX\ font (\tfm file) \texttt{ptmr8t.tfm} -will be selected by the above commands, as you can see from the -relevant line in \texttt{t1ptm.fd}: -\begin{verbatim} - \DeclareFontShape{T1}{ptm}{m}{n}{<<->> ptmr8t}{} -\end{verbatim} - -This is what happens: -\begin{itemize} -\item \TeX\ typesets your document using the font metric file - \texttt{ptmr8t.tfm}; this is the font that is put in the \dvi - file. -\item \Dvips looks at the \dvi file, and sees a reference to the - font \texttt{ptmr8t}. -\item \Dvips searches for a \vf file corresponding to - \texttt{ptmr8t}; when it finds \texttt{ptmr8t.vf}, it knows it - has a virtual font on its hands. - %\footnote{This is a slight lie--why?} -\item \Dvips follows the instructions in the \vf file, which map - characters in \texttt{ptmr8t.tfm} to characters in the font - \texttt{ptmr8r.tfm}. That is, when it sees a number~25 in the - \dvi file (dotless~i -- `\i' -- in T1 encoding), it replaces it - with a number~17, which is a dotless~i in |8r| encoding. -\item Then \dvips looks up the name of each number according to - the scheme given in the file \texttt{8r.enc}, and replaces each - number with the name of the character, in this case, number~17 - is listed as `dotlessi'. -\item And finally, \dvips tells the printer to print the named - character. -\end{itemize} - -Not all DVI drivers can manage re-encoding as well as \dvips can. -For example, \OzTeX's built-in non-\PS \dvi driver can only work -with numbers, so if I'm using a \PS font, I can't print characters -(such as Eth) that don't have a number in Macintosh text encoding -unless I use \dvips and print on a \PS printer. \Dvips works with -character names, so it's not subject to this restriction. In the -example above, \OzTeX\ would replace the number~17 for `dotlessi' -in |8r| encoding with a number~245 for `dotlessi' in Macintosh -text encoding. - -The details of the \LaTeXe{} font selection scheme are described -in \emph{\LaTeXe{} font selection} (distributed with \LaTeXe\ as -the file \texttt{fntguide.tex}) and \emph{The \LaTeX\ Companion} -(Goossens, Mittelbach and Samarin, Addison-Wesley). -%You might also find useful the file \url{info/simple-nfss.tex} -%available at your nearest comprehensive \TeX\ archive network -%(CTAN) FTP server. - -The files you need to use Times, Helvetica, Courier, and the rest -of the `standard' \PS fonts are distributed as part of the -\setpackagename{PSNFSS} bundle available from CTAN, so there's no -need to create new files to use these fonts. - -A more involved example of \fontinst use can be seen in the file -\texttt{fontptcm.tex} which creates the files you need to use a -combination of Times, Symbol, Zapf Chancery and Computer Modern as -\TeX\ math fonts. - - -\section{Installing your own font family} - -The \fontinst package has a command \verb|\latinfamily| meant to -do most of the work to install a `normal' set (family) of roman -text fonts from Adobe. Assuming you have a set of \afm files to -match the fonts you wish to use, the first step is to rename the -\afm files according to the \Fontnamekb naming scheme. - -A `normal' set of text fonts usually includes the basic upright -roman version, bold, italic, and bold italic. Sometimes there -will also be small caps versions, perhaps some `expert' fonts, and -maybe some other weights such as light, medium, semi bold, black -or ultra bold. - -The most important point to note is this: no matter what sort of -computer you're using and no matter what font encoding it uses -normally, \afm files for text fonts are almost always in |8a| -encoding (Adobe standard encoding), so the \afm files when renamed -normally end in |8a|. - -A typical set of four \afm files re-named for use with \fontinst -is this: -\begin{verbatim} - ptmr8r.afm Times-Roman - ptmri8r.afm Times-Italic - ptmb8r.afm Times-Bold - ptmbi8r.afm Times-BoldItalic -\end{verbatim} -Not all \afm files use |8a| encoding. If you open an \afm file -using a text editor, you'll see a line looking like this somewhere -near the top: -\begin{verbatim} - EncodingScheme AdobeStandardEncoding -\end{verbatim} -and if you see exactly that, the \afm file should end with |8a|. -If you see something like this: -\begin{verbatim} - EncodingScheme FontSpecific -\end{verbatim} -have a look at the name of the font in the \afm file. If you see -something like this: -\begin{verbatim} - FontName AGaramondExp-Regular - FullName Adobe Garamond Regular Expert -\end{verbatim} -you have an `expert' encoded font on your hands, and the \afm file -should end with |8x| to indicate this to \fontinst. An |8x| -encoded font contains extra glyphs like old style numerals, small -capital letters, more ligatures, and so on. - -%% UV: taken out -- repeated below -%% -%If you have an expert font, you can tell \fontinst to use it when -%it's processing a \verb|\latinfamily| command by putting an `|x|' -%on the end of the family name: -%\begin{verbatim} -% \latinfamily{padx}{} -%\end{verbatim} -%If you want to tell \fontinst to use expert fonts to install fonts -%with old style numerals, you can do so by putting an `|j|' on the -%end of the family name: -%\begin{verbatim} -% \latinfamily{padj}{} -%\end{verbatim} - -The |\latinfamily| command is used like this: -\begin{decl} - |\latinfamily|\arg{family}\arg{commands} -\end{decl} -This installs a Latin family of fonts. - -For example, to install Adobe Times, you say: -\begin{verbatim} - \latinfamily{ptm}{} -\end{verbatim} -The \textit{commands} issued by \LaTeX\ each time a font from that -family is loaded. This is most often used with typewriter fonts, -to switch off hyphenation. For example, Adobe Courier can be -installed with: -\begin{verbatim} - \latinfamily{pcr}{\hyphenchar\font=-1} -\end{verbatim} -Once the installation is over (which may take some time) the fonts -can be used in \LaTeX\ by selecting an appropriate -\verb|\fontfamily|, for example Adobe Times can be selected with: -\begin{verbatim} - \fontfamily{ptm}\selectfont -\end{verbatim} -If the fourth letter of the family name is `|x|' then \fontinst -will use expert fonts in creating the fonts. If the fourth letter -is `|j|' (or for backward compatibility `|9|') then \fontinst will -use expert fonts to create fonts with old style digits. - -For example, to install Adobe Garamond using expert fonts, you say: -\begin{verbatim} - \latinfamily{padx}{} -\end{verbatim} -To install Adobe Garamond using expert fonts with oldstyle digits, -you say: -\begin{verbatim} - \latinfamily{padj}{} -\end{verbatim} - -When you have expert fonts, and you've told \fontinst to use -them, it will carry on as normal, but the resulting font family -will have the name `|padx|' or `|padj|', and it will use expert -glyphs whenever possible, so you'll have a real (rather than -faked) small caps font, real (rather than faked) `ffl' ligatures, -and so on. - -Before using these commands, you will need to make sure that you -have the Adobe Font Metric (\afm) files for the fonts, and that -they have appropriate names. The \fontinst package uses the -\LaTeX\ convention for naming fonts, and uses a \emph{font family} -name which consists of: -\begin{itemize} -\item a \emph{supplier} (or foundry), such as `|p|' for Adobe. -\item a \emph{typeface}, such as `|ad|' for Adobe Garamond. -\item up to two \emph{variants}, such as `|j|' or `|x|' for `old - style digits' or `expert'. -\end{itemize} -So the family name `|padj|' indicates Adobe Garamond with old -style digits. Note that the variants `|j|' or `|x|' are -interpreted by \fontinst itself and do not appear in external font -names, whereas other variants are passed through as part of the -font names. (This is needed for families which have a sans serif -or typewriter variant.) - -The \emph{supplier} must be one letter, and the \emph{typeface} -must be two (this is an attempt to fit all filenames into MS-DOS -format). Each variant is one letter. The full list of foundries, -typefaces, shapes and variants is given in Karl Berry's -`\emph{Filenames for fonts}' (available by anonymous FTP from -\url{ftp://ftp.tex.ac.uk/tex-archive/info/fontname}), but the more -common ones are given in -Tables~\ref{Tab:foundry}--\ref{Tab:typeface}. - -\begin{table}[!t] -\begin{minipage}{0.5\textwidth} - \small - \begin{tabular}{ll} - |b| & Bitstream \\ - |f| & `free' (public domain) \\ - |h| & Bigelow \& Holmes \\ - |i| & ITC \\ - |l| & Linotype \\ - |m| & Monotype \\ - |p| & Adobe (|p| for \PS) \\ - |r| & `raw' (obsolete) \\ - |u| & URW \\ - |z| & bizarre - \end{tabular} - \caption{A partial list of foundries} - \label{Tab:foundry} - \begin{tabular}{ll} - |a| & alternate \\ - |d| & display, titling \\ - |f| & fraktur, handtooled \\ - |j| & oldstyle digits \\ - |n| & informal, casual \\ - |p| & ornaments \\ - |s| & sans serif \\ - |t| & typewriter \\ - |w| & script, handwriting, swash \\ - |x| & expert \\ - \end{tabular} - \caption{A partial list of variants} - \label{Tab:variant} - \begin{tabular}{ll} - |c| & small caps \\ - |i| & italic \\ - |o| & oblique (i.e.,~slanted) \\ - |u| & unslanted italic \\ - \end{tabular} - \caption{A partial list of shapes} - \label{Tab:shape} -\end{minipage} -\begin{minipage}{0.5\textwidth} - \small - \begin{tabular}{ll} - |ac| & Adobe Caslon \\ - |ad| & Adobe Garamond \\ - |ag| & Avantgarde \\ - |bb| & Bembo \\ - |bd| & Bodoni \\ - |bk| & Bookman \\ - |bv| & Baskerville \\ - |ca| & Caslon \\ - |ch| & Charter \\ - |cr| & Courier \\ - |fr| & Frutiger \\ - |fu| & Futura \\ - |gl| & Galliard \\ - |gm| & Garamond \\ - |gs| & Gill Sans \\ - |hv| & Helvetica \\ - |mn| & Minion \\ - |lc| & Lucida \\ - |lh| & Lucida Bright \\ - |ls| & Lucida Sans \\ - |nb| & New Baskerville \\ - |nc| & New Century Schoolbook \\ - |op| & Optima \\ - |pl| & Palatino \\ - |sy| & Symbol \\ - |tm| & Times \\ - |ut| & Utopia \\ - |zc| & Zapf Chancery \\ - |zd| & Zapf Dingbats \\ - \end{tabular} - \caption{A partial list of faces} - \label{Tab:typeface} -\end{minipage} -\end{table} - -The \fontinst package uses Karl Berry's naming scheme for \afm -files. The full naming scheme is rather more flexible than the -subset used by \fontinst, which uses filenames consisting of: -\begin{itemize} -\item a \emph{supplier}, such as `|p|' for Adobe. -\item a \emph{typeface}, such as `|hv|' for Helvetica. -\item a \emph{weight}, such as `|r|' for regular. -\item up to two \emph{shapes} or \emph{variants}, such as `|o|' - for oblique. -\item an \emph{encoding}, such as `|7t|' for Knuth's 7-bit \TeX{} - encoding. -\item an optional \emph{width}, such as `|n|' for narrow. -\item a \emph{file extension}, such as `\texttt{.tfm}' - for \TeX{} Font Metric. -\end{itemize} -So the filename name `\texttt{phvro7tn.tfm}' indicates Adobe -Helvetica regular oblique narrow, in the 7-bit \TeX{} encoding. - -The full list of shapes, encodings and weights is given in Karl -Berry's `\emph{Filenames for fonts}', but the more common ones are -given in Tables~\ref{Tab:shape}--\ref{Tab:weight}. - -\begin{table} -\begin{minipage}{0.5\textwidth} - \small - \begin{tabular}{ll} - |b| & bold \\ - |c| & black \\ - |d| & demibold \\ - |h| & heavy \\ - |k| & book \\ - |l| & light \\ - |m| & medium \\ - |r| & regular \\ - |s| & semibold \\ - |u| & ultra bold \\ - |x| & extra bold \\ - \end{tabular} - \caption{A partial list of weights} - \label{Tab:weight} - \begin{tabular}{ll} - |c| & condensed \\ - |n| & narrow \\ - |w| & wide \\ - |x| & extended \\ - \end{tabular} - \caption{A partial list of widths} - \label{Tab:width} -\end{minipage} -\begin{minipage}{0.5\textwidth} - \small - \begin{tabular}{ll} - |8a| & Adobe Standard \\ - |8x| & Adobe Expert \\ - |8r| & \TeX{} 8-bit `raw' (\texttt{TeXBase1}) \\ - |8y| & \TeX{} 8-bit `raw' (\texttt{TeXnANSI}) \\ - |7t| & \TeX{} 7-bit text (\texttt{OT1}) \\ - |7m| & \TeX{} 7-bit math italic (\texttt{OML}) \\ - |7y| & \TeX{} 7-bit math symbol (\texttt{OMS}) \\ - |7v| & \TeX{} 7-bit math extension (\texttt{OMX}) \\ - |8t| & \TeX{} 8-bit text (\texttt{T1}) \\ - |8c| & \TeX{} 8-bit text symbols (\texttt{TS1}) \\ - |9t| & \TeX{} 7-bit text with expert glyphs \\ - |9o| & \TeX{} 7-bit text with expert glyphs \\ - & and old-style digits \\ - |9e| & \TeX{} 8-bit text with expert glyphs \\ - |9d| & \TeX{} 8-bit text with expert glyphs \\ - & and old-style digits \\ - |9c| & \TeX{} 8-bit symbols with expert glyphs \\ - & and old-style digits \\ - \end{tabular} - \caption{A partial list of encodings} -\end{minipage} -\end{table} - -For example, to install Adobe Garamond including the expert fonts, you -would need to rename the \afm files: -\begin{center} -\begin{small} -\begin{tabular}{lll} - \emph{Adobe name} & \emph{ATM name} & \emph{Fontinst name} \\ - |AGaramond-Bold.afm| & |gdb_____.afm| & |padb8a.afm| \\ - |AGaramond-BoldItalic.afm| & |gdbi____.afm| & |padbi8a.afm| \\ - |AGaramond-Italic.afm| & |gdi_____.afm| & |padri8a.afm| \\ - |AGaramond-Regular.afm| & |gdrg____.afm| & |padr8a.afm| \\ - |AGaramond-Semibold.afm| & |gdsb____.afm| & |pads8a.afm| \\ - |AGaramond-SemiboldItalic.afm| & |gdsbi___.afm| & |padsi8a.afm| \\ - |AGaramondExp-Bold.afm| & |geb_____.afm| & |padb8x.afm| \\ - |AGaramondExp-BoldItalic.afm| & |gebi____.afm| & |padbi8x.afm| \\ - |AGaramondExp-Italic.afm| & |gei_____.afm| & |padri8x.afm| \\ - |AGaramondExp-Regular.afm| & |gerg____.afm| & |padr8x.afm| \\ - |AGaramondExp-Semibold.afm| & |gesb____.afm| & |pads8x.afm| \\ - |AGaramondExp-SemiboldItalic.afm| & |gesbi___.afm| & |padsi8x.afm| \\ - |AGaramond-RegularSC.afm| & |gdsc____.afm| & |padrc8a.afm| \\ - |AGaramond-SemiboldSC.afm| & |gdsbs___.afm| & |padsc8a.afm| \\ -\end{tabular} -\end{small} -\end{center} -You can then run \TeX{} on the following document to install the -Adobe Garamond family: -\begin{verbatim} - \input fontinst.sty - \latinfamily{padx}{} - \latinfamily{padj}{} - \bye -\end{verbatim} -Not all font families can be installed using the \verb|\latinfamily| -command, nor does it always produce optimal results. The main -interfaces to \fontinst are at a slightly lower level, where all font -names appear explicitly in command arguments, and at that level it is -possible to fine tune the font generation. The \verb|\latinfamily| -command is mainly a clever collection of macros which expand to a -mostly fixed\footnote{Commands that would refer to files which are -not present are skipped, and in some cases there is a ``Plan B'' -when ``Plan A'' would have made use of such a nonexistent file, but -that is about it.} sequence of lower level \fontinst commands. - -\begin{bfseries} - Descriptions of the sub-\verb|\latinfamily| commands can be found - in the main \fontinst manual. -\end{bfseries} - - - -\section{More on the \cs{latinfamily} command} - -The \verb|\latinfamily| command is essentially a short-cut to save you -preparing a huge file with many different \fontinst commands in it. - -It takes \afm or \mtx files as the source of font metric data to work -with. Usually, you have a set of \afm files. They must be named -according to a subset of the \Fontnamekb naming scheme. To illustrate -the process, here is an edited part of the console log from a use of -\verb|\latinfamily|: -\begin{verbatim} - \latinfamily{pad}{} -\end{verbatim} -This log does not show \fontinst `in action'; it's just to illustrate -which fonts are looked for when you use the \verb|\latinfamily| -command. -\begin{verbatim} - INFO>> to make LaTeX font shape <<pad,m,n,>> seek padr8r.mtx - INFO>> to make LaTeX font shape <<pad,m,sc,>> seek padrc8r.mtx - INFO>> to make LaTeX font shape <<pad,m,sl,>> seek padro8r.mtx - INFO>> to make LaTeX font shape <<pad,m,it,>> seek padri8r.mtx - INFO>> to make LaTeX font shape <<pad,m,n,c>> seek padr8rn.mtx - INFO>> to make LaTeX font shape <<pad,m,sc,c>> seek padrc8rn.mtx - INFO>> to make LaTeX font shape <<pad,m,sl,c>> seek padro8rn.mtx - INFO>> to make LaTeX font shape <<pad,m,it,c>> seek padri8rn.mtx -\end{verbatim} - -The important point to notice is that \fontinst needs an |8r| encoded -\mtx file for each font when you are using the \verb|latinfamily| -command. If it can't find an |8r| encoded \mtx file, it'll look for -for an |8a| encoded \afm file. It will automatically turn the file it -finds into an |8r| encoded \mtx file. So when \fontinst says -`\verb|seek padr8r.mtx|', it is in fact looking for -\texttt{padr8r.mtx} and \texttt{padr8a.afm}. Whatever it finds, it -will end up with \verb|padr8r.mtx| to work on. - -The first line of the log shows that \fontinst is trying to create a -\vpl file for |pad/m/n|. That is, font family |pad| (Adobe Garamond), -font series |m| (normal `book' or `regular' weight), and font shape -|n| (normal upright). - -If it finds what it's looking for, it will create the files: -\begin{verbatim} - padr7t.vpl - padr8t.vpl - padr8c.vpl -\end{verbatim} -And add these lines to the given \fd files: -\begin{verbatim} - OT1pad.fd: \DeclareFontShape{OT1}{pad}{m}{n}{<<->> padr7t}{} - T1pad.fd: \DeclareFontShape{T1} {pad}{m}{n}{<<->> padr8t}{} - TS1pad.fd: \DeclareFontShape{TS1}{pad}{m}{n}{<<->> padr8c}{} -\end{verbatim} -This means you will have three new fonts to use in \LaTeX: the OT1, T1 -and TS1 encoded versions of |pad/m/n|. You'll be able to select (say) -|T1/pad/m/n| by saying: -\begin{verbatim} - \fontencoding{T1}\fontfamily{pad}\fontseries{m}\fontshape{n}\selectfont -\end{verbatim} -This is the clumsiest way of selecting that particular font, but I've -done it to illustrate exactly what's happening. - -The next line: -\begin{verbatim} - INFO>> to make LaTeX font shape <<pad,m,sc,>> seek padrc8r.mtx -\end{verbatim} -shows that \fontinst is trying to install a small caps font. If you -have a real small caps metric file named \texttt{padrc8r.mtx} (don't -forget it'll look for an |8a| encoded \afm file), \fontinst will go -ahead and create the \vpl file and \fd file entry as expected. - -But you don't normally have a real small caps font, so \fontinst will -quite happily produce a fake small caps font. To do this, it looks -for a suitable metric file by dropping the `|c|': -\begin{quote} - `Hmm\ldots\ I can't find \texttt{padrc8r}, so I'll look for - \texttt{padr8r}.' -\end{quote} -And you will eventually have: -\begin{verbatim} - padrc7t.vpl - padrc8t.vpl -\end{verbatim} -And add these lines to the given \fd files: -\begin{verbatim} - OT1pad.fd: \DeclareFontShape{OT1}{pad}{m}{sc}{<<->> padrc7t}{} - T1pad.fd: \DeclareFontShape{T1} {pad}{m}{sc}{<<->> padrc8t}{} -\end{verbatim} -(Note that it won't install a TS1-encoded small caps font because -TS1 is a text symbol font, which would look the same in the upright -and small caps shape.) - -The next log line shows \fontinst trying to create a \vpl for the -oblique version of Adobe Garamond: -\begin{verbatim} - INFO>> to make LaTeX font shape <<pad,m,sl,>> seek padro8r.mtx -\end{verbatim} -It's quite usual for an oblique version to be unavailable, but -\fontinst has a way round this: it can fake an oblique font from the -corresponding `straight' version: -\begin{quote} - `Oh dear: I can't find \texttt{padro8r}, so I'll look for - \texttt{padr8r} and use clever maths to fake a slanted version.' -\end{quote} -This is not as straightforward as the small caps case. \Fontinst -only works out what the metrics ought to be if the entire font is -slanted to the right. It's up to the DVI driver to actually print a -slanted font. \Dvips can do this. - -You will eventually have: -\begin{verbatim} - padro7t.vpl - padro8t.vpl - padro8c.vpl -\end{verbatim} -And these lines added to the given \fd files: -\begin{verbatim} - OT1pad.fd: \DeclareFontShape{OT1}{pad}{m}{sl}{<<->> padro7t}{} - T1pad.fd: \DeclareFontShape{T1} {pad}{m}{sl}{<<->> padro8t}{} - TS1pad.fd: \DeclareFontShape{TS1}{pad}{m}{sl}{<<->> padro8c}{} -\end{verbatim} - -The next line is straightforward: -\begin{verbatim} - INFO>> to make LaTeX font shape <<pad,m,it,>> seek padri8r.mtx -\end{verbatim} -If \fontinst can't find a suitable metrics file (\texttt{padri8r.mtx} -or \texttt{padri8a.afm}), it carries on without doing anything. If it -does find a suitable metrics file, it churns away until you will -eventually have: -\begin{verbatim} - padri7t.vpl - padri8t.vpl - padri8c.vpl -\end{verbatim} -And these lines added to the given \fd files: -\begin{verbatim} - OT1pad.fd: \DeclareFontShape{OT1}{pad}{m}{it}{<<->> padri7t}{} - T1pad.fd: \DeclareFontShape{T1} {pad}{m}{it}{<<->> padri8t}{} - TS1pad.fd: \DeclareFontShape{TS1}{pad}{m}{it}{<<->> padri8c}{} -\end{verbatim} - -The next line is a bit different. \Fontinst is now trying to create a -\vpl file for a \emph{condensed} font: -\begin{verbatim} - INFO>> to make LaTeX font shape <<pad,m,n,c>> seek padr8rn.mtx -\end{verbatim} -If it finds a suitable metric file (Adobe Garamond, medium weight, -normal upright shape, condensed), it will eventually produce: -\begin{verbatim} - padr7tn.vpl - padr8tn.vpl - padr8cn.vpl -\end{verbatim} -And these lines added to the given \fd files: -\begin{verbatim} - OT1pad.fd: \DeclareFontShape{OT1}{pad}{mc}{n}{<<->> padr7tn}{} - T1pad.fd: \DeclareFontShape{T1} {pad}{mc}{n}{<<->> padr8tn}{} - TS1pad.fd: \DeclareFontShape{TS1}{pad}{mc}{n}{<<->> padr8cn}{} -\end{verbatim} -There is no standard \LaTeX\ command like \verb|\bfseries| to select -the medium condensed (|mc|) series created here. If you want to use -this font, you must do something like: -\begin{verbatim} - \fontfamily{pad}\fontseries{mc}\selectfont -\end{verbatim} -If it doesn't find a suitable metric file for a narrow series, -\fontinst will just skip over and continue, unless you specifically -tell it to fake a narrow series. - -And so the process continues: \fontinst attempts to create \vpl files -for condensed versions of all the font shapes met so far, and then -goes on to: -\begin{verbatim} - INFO>> to make LaTeX font shape <<pad,b,n,>> seek padb8r.mtx -\end{verbatim} -And again, if it finds a suitable metric file (\texttt{padb8r.mtx} or -\texttt{padb8a.afm}), it'll potter off and create the files: -\begin{verbatim} - padb7t.vpl - padb8t.vpl - padb8c.vpl -\end{verbatim} -And these lines added to the given \fd files: -\begin{verbatim} - OT1pad.fd: \DeclareFontShape{OT1}{pad}{b}{n}{<<->> padb7t}{} - T1pad.fd: \DeclareFontShape{T1} {pad}{b}{n}{<<->> padb8t}{} - TS1pad.fd: \DeclareFontShape{TS1}{pad}{b}{n}{<<->> padb8c}{} -\end{verbatim} -With this step done, fontinst will try to create \vpl files for the -small caps, slanted, and italic versions of |pad/b|; and then it'll -try to create condensed versions of all those: -\begin{verbatim} - INFO>> to make LaTeX font shape <<pad,b,n,>> seek padb8r.mtx - INFO>> to make LaTeX font shape <<pad,b,sc,>> seek padbc8r.mtx - INFO>> to make LaTeX font shape <<pad,b,sl,>> seek padbo8r.mtx - INFO>> to make LaTeX font shape <<pad,b,it,>> seek padbi8r.mtx - INFO>> to make LaTeX font shape <<pad,b,n,c>> seek padb8rn.mtx - INFO>> to make LaTeX font shape <<pad,b,sc,c>> seek padbc8rn.mtx - INFO>> to make LaTeX font shape <<pad,b,sl,c>> seek padbo8rn.mtx - INFO>> to make LaTeX font shape <<pad,b,it,c>> seek padbi8rn.mtx -\end{verbatim} -If it manages to find the files it needs to create the \vpl files to -use all those fonts with \LaTeX, you'll end up with the following -lines in the T1 \fd file (I've ignored the OT1 \fd file to save some -space): -\begin{verbatim} - \DeclareFontShape{T1} {pad}{b} {n} {<<->> padb8t}{} - \DeclareFontShape{T1} {pad}{b} {sc}{<<->> padbc8t}{} - \DeclareFontShape{T1} {pad}{b} {sl}{<<->> padbo8t}{} - \DeclareFontShape{T1} {pad}{b} {it}{<<->> padbi8t}{} - \DeclareFontShape{T1} {pad}{bc}{n} {<<->> padb8tn}{} - \DeclareFontShape{T1} {pad}{bc}{sc}{<<->> padbc8tn}{} - \DeclareFontShape{T1} {pad}{bc}{sl}{<<->> padbo8tn}{} - \DeclareFontShape{T1} {pad}{bc}{it}{<<->> pckbi8tn}{} -\end{verbatim} -To translate into English: Adobe Garamond bold in `normal', small -caps, slanted, and italic versions, as well as condensed versions of -all four. - -Again, because there's no convenient way of selecting the condensed -versions with existing \LaTeX\ commands, you need to say something -like: -\begin{verbatim} - \fontfamily{pad}\fontseries{bc}\selectfont -\end{verbatim} -to use the bold condensed (|bc|) versions of this font; you can of -course use \verb|\itshape|, \verb|\scshape|, \verb|\slshape|, and -\verb|upshape| to switch between the italic, small caps, slanted, and -`normal' versions of Adobe Garamond bold condensed once you've got -|pad/bc| selected. - -So far, you've seen \verb|\latinfamily| look at two different weights -and two different widths. For each weight, \verb|\latinfamily| will -try and install eight different fonts as you can see above. It will -try and install the same eight different fonts for each of the -following different weights: -\begin{center} -\begin{tabular}{lll} - \emph{\LaTeX} & \emph{Fontname} & \emph{description} \\ - |ul| & |a| & ultra light \\ - |el| & |i| & extra light \\ - |l| & |l| & light \\ - |m| & |k|, |r| & book, regular \\ - |mb| & |m| & medium \\ - |db| & |d| & demi bold \\ - |sb| & |s| & semi bold \\ - |b| & |b| & bold \\ - |eb| & |c|, |h|, |x| & black, heavy, extra bold \\ - |ub| & |u| & ultra bold -\end{tabular} -\end{center} -The \LaTeX\ column contains the label that will be used in the -\verb|\DeclareFontShape| command to specify the font series. The -\Fontnamekb column contains the width specifier used to name the font -metric file that \fontinst will look for in that case. - -In other words, at some stage \fontinst will look for: -\begin{verbatim} - INFO>> to make LaTeX font shape <<pad,sb,n,>> seek pads8r.mtx -\end{verbatim} -and if it finds a suitable metric file (\texttt{pads8r.mtx} or -\texttt{pads8a.afm}), it will create: -\begin{verbatim} - pads7t.vpl - pads8t.vpl - pads8c.vpl -\end{verbatim} -and \fd file entries like this: -\begin{verbatim} - OT1pad.fd: \DeclareFontShape{OT1}{pad}{sb}{n}{<<->> pads7t}{} - T1pad.fd: \DeclareFontShape{T1} {pad}{sb}{n}{<<->> pads8t}{} - TS1pad.fd: \DeclareFontShape{TS1}{pad}{sb}{n}{<<->> pads8c}{} -\end{verbatim} -and since |sb| is not a normal \LaTeX\ font series, you'll need to use -something like: -\begin{verbatim} - \fontfamily{pad}\fontseries{sb}\selectfont -\end{verbatim} -to use this font. - -% For example, \verb|\latinfamily{ptm}{}| is -% syntactic sugar for: -% \begin{verbatim} -% \transformfont{ptmr8r}{\reencodefont{8r}{\fromafm{ptmr8a}}} -% \transformfont{ptmri8r}{\reencodefont{8r}{\fromafm{ptmri8a}}} -% \transformfont{ptmb8r}{\reencodefont{8r}{\fromafm{ptmb8a}}} -% \transformfont{ptmbi8r}{\reencodefont{8r}{\fromafm{ptmbi8a}}} -% \transformfont{ptmro8r}{\slantfont{167}{\frommtx{ptmr8r}}} -% \transformfont{ptmbo8r}{\slantfont{167}{\frommtx{ptmb8r}}} -% \installfonts -% \installfamily{T1}{ptm}{} -% \installfamily{OT1}{ptm}{} -% \installfont{ptmr8t}{ptmr8r,latin}{T1}{T1}{ptm}{m}{n}{} -% \installfont{ptmr7t}{ptmr8r,latin}{OT1}{OT1}{ptm}{m}{n}{} -% \installfont{ptmrc8t}{ptmr8r,latin}{T1c}{T1}{ptm}{m}{sc}{} -% \installfont{ptmrc7t}{ptmr8r,latin}{OT1c}{OT1}{ptm}{m}{sc}{} -% \installfont{ptmri8t}{ptmri8r,latin}{T1}{T1}{ptm}{m}{it}{} -% \installfont{ptmri7t}{ptmri8r,latin}{OT1i}{OT1}{ptm}{m}{it}{} -% \installfont{ptmro8t}{ptmro8r,latin}{T1}{T1}{ptm}{m}{sl}{} -% \installfont{ptmro7t}{ptmro8r,latin}{OT1}{OT1}{ptm}{m}{sl}{} -% \installfont{ptmb8t}{ptmb8r,latin}{T1}{T1}{ptm}{b}{n}{} -% \installfont{ptmb7t}{ptmb8r,latin}{OT1}{OT1}{ptm}{b}{n}{} -% \installfont{ptmbc8t}{ptmb8r,latin}{T1c}{T1}{ptm}{b}{sc}{} -% \installfont{ptmbc7t}{ptmb8r,latin}{OT1c}{OT1}{ptm}{b}{sc}{} -% \installfont{ptmbi8t}{ptmbi8r,latin}{T1}{T1}{ptm}{b}{it}{} -% \installfont{ptmbi7t}{ptmbi8r,latin}{OT1i}{OT1}{ptm}{b}{it}{} -% \installfont{ptmbo8t}{ptmbo8r,latin}{T1}{T1}{ptm}{b}{sl}{} -% \installfont{ptmbo7t}{ptmbo8r,latin}{OT1}{OT1}{ptm}{b}{sl}{} -% \endinstallfonts -% \end{verbatim} - - -The \texttt{basicex.tex} file in the \texttt{examples} directory of -the main \fontinst distribution is an annotated command file which -does roughly the same things as the \verb|\latinfamily| command for -the \texttt{pad} family of fonts. - - -\end{document} diff --git a/Master/texmf-dist/doc/fonts/fontinst/base/manual/roadmap.eps b/Master/texmf-dist/doc/fonts/fontinst/base/manual/roadmap.eps deleted file mode 100644 index 8ca14df79de..00000000000 --- a/Master/texmf-dist/doc/fonts/fontinst/base/manual/roadmap.eps +++ /dev/null @@ -1,265 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: roadmap.fig -%%Creator: fig2dev Version 3.1 Patchlevel 1 -%%CreationDate: Sat Sep 16 18:24:06 1995 -%%For: alanje@rsuna.crn.cogs.susx.ac.uk (Alan Jeffrey, Research Fellow) -%%Orientation: Portrait -%%BoundingBox: 0 0 298 312 -%%Pages: 0 -%%BeginSetup -%%IncludeFeature: *PageSize A4 -%%EndSetup -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {} def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save --112.0 334.0 translate -1 -1 scale - -/clp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/l {lineto} bind def -/m {moveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def -%%EndProlog - -$F2psBegin -10 setmiterlimit - 0.06000 0.06000 sc -7.500 slw -% Arc -n 4813.51 1452.05 m 4800.00 1575.00 l 4754.06 1460.15 l gs col-1 s gr -n 4284.38 1645.31 520.40 -91.03 -7.77 arc -gs col-1 s gr - -% Arc -n 3045.94 1460.15 m 3000.00 1575.00 l 2986.49 1452.05 l gs col-1 s gr -n 3515.62 1645.31 520.40 -88.97 -172.23 arcn -gs col-1 s gr - -% Arc -n 2771.84 3251.35 m 2775.00 3375.00 l 2714.02 3267.38 l gs col-1 s gr -n 2279.17 3512.50 514.55 -84.89 -15.50 arc -gs col-1 s gr - -% Arc -n 3285.98 3267.38 m 3225.00 3375.00 l 3228.16 3251.35 l gs col-1 s gr -n 3720.83 3512.50 514.55 -95.11 -164.50 arcn -gs col-1 s gr - -% Arc -n 4247.24 2906.08 m 4125.00 2925.00 l 4223.95 2850.78 l gs col-1 s gr -n 3525.00 1500.00 1546.16 39.09 67.17 arc -gs col-1 s gr - -% Arc -n 3403.37 4702.50 m 3525.00 4725.00 l 3407.09 4762.39 l gs col-1 s gr -n 3493.27 4214.42 511.56 164.63 86.44 arcn -gs col-1 s gr - -% Arc -n 4394.64 4681.42 m 4275.00 4650.00 l 4395.35 4621.42 l gs col-1 s gr -n 4291.72 3239.01 1411.09 -3.62 90.68 arc -gs col-1 s gr - -% Arc -n 4398.18 4811.29 m 4275.00 4800.00 l 4389.00 4752.00 l gs col-1 s gr -n 3787.50 1650.00 3187.50 28.07 81.20 arc -gs col-1 s gr - -% Arc -n 4306.30 4511.76 m 4200.00 4575.00 l 4264.03 4469.17 l gs col-1 s gr -n 2769.64 3133.93 2030.42 0.45 45.21 arc -gs col-1 s gr - -% Ellipse -n 3900 2962 225 187 0 360 DrawEllipse gs col-1 s gr - -% Ellipse -n 3900 562 225 187 0 360 DrawEllipse gs col-1 s gr - -% Ellipse -n 3900 1762 225 187 0 360 DrawEllipse gs col-1 s gr - -% Ellipse -n 3000 1762 225 187 0 360 DrawEllipse gs col-1 s gr - -% Ellipse -n 4800 1762 225 187 0 360 DrawEllipse gs col-1 s gr - -% Ellipse -n 4800 2962 225 187 0 360 DrawEllipse gs col-1 s gr - -% Ellipse -n 5700 2962 225 187 0 360 DrawEllipse gs col-1 s gr - -% Ellipse -n 6600 2962 225 187 0 360 DrawEllipse gs col-1 s gr - -% Ellipse -n 2100 2962 225 187 0 360 DrawEllipse gs col-1 s gr - -% Ellipse -n 3000 4162 225 187 0 360 DrawEllipse gs col-1 s gr - -% Ellipse -n 3900 5362 225 187 0 360 DrawEllipse gs col-1 s gr - -% Polyline -n 3525 975 m 4275 975 l 4275 1275 l 3525 1275 l clp gs col-1 s gr -% Polyline -n 3525 2175 m 4275 2175 l 4275 2475 l 3525 2475 l clp gs col-1 s gr -% Polyline -n 4425 2175 m 5175 2175 l 5175 2475 l 4425 2475 l clp gs col-1 s gr -% Polyline -n 2625 3375 m 3375 3375 l 3375 3675 l 2625 3675 l clp gs col-1 s gr -% Polyline -n 3525 4575 m 4275 4575 l 4275 4875 l 3525 4875 l clp gs col-1 s gr -% Polyline -n 3900 750 m 3900 975 l gs col-1 s gr -n 3930.00 855.00 m 3900.00 975.00 l 3870.00 855.00 l gs col-1 s gr -% Polyline -n 3900 1275 m 3900 1575 l gs col-1 s gr -n 3930.00 1455.00 m 3900.00 1575.00 l 3870.00 1455.00 l gs col-1 s gr -% Polyline -n 3900 1950 m 3900 2175 l gs col-1 s gr -n 3930.00 2055.00 m 3900.00 2175.00 l 3870.00 2055.00 l gs col-1 s gr -% Polyline -n 3900 2475 m 3900 2775 l gs col-1 s gr -n 3930.00 2655.00 m 3900.00 2775.00 l 3870.00 2655.00 l gs col-1 s gr -% Polyline -n 4800 1950 m 4800 2175 l gs col-1 s gr -n 4830.00 2055.00 m 4800.00 2175.00 l 4770.00 2055.00 l gs col-1 s gr -% Polyline -n 4800 2475 m 4800 2775 l gs col-1 s gr -n 4830.00 2655.00 m 4800.00 2775.00 l 4770.00 2655.00 l gs col-1 s gr -% Polyline -n 3000 1950 m 3000 3375 l gs col-1 s gr -n 3030.00 3255.00 m 3000.00 3375.00 l 2970.00 3255.00 l gs col-1 s gr -% Polyline -n 3000 3675 m 3000 3975 l gs col-1 s gr -n 3030.00 3855.00 m 3000.00 3975.00 l 2970.00 3855.00 l gs col-1 s gr -% Polyline -n 3900 3150 m 3900 4575 l gs col-1 s gr -n 3930.00 4455.00 m 3900.00 4575.00 l 3870.00 4455.00 l gs col-1 s gr -% Polyline -n 3900 4875 m 3900 5175 l gs col-1 s gr -n 3930.00 5055.00 m 3900.00 5175.00 l 3870.00 5055.00 l gs col-1 s gr -/Helvetica findfont 180.00 scalefont setfont -3900 3000 m -gs 1 -1 sc (tfm) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -/Helvetica findfont 180.00 scalefont setfont -3900 600 m -gs 1 -1 sc (afm) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -/Helvetica findfont 180.00 scalefont setfont -3900 1800 m -gs 1 -1 sc (pl) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -/Helvetica findfont 180.00 scalefont setfont -4800 1800 m -gs 1 -1 sc (vpl) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -/Helvetica findfont 180.00 scalefont setfont -3000 1800 m -gs 1 -1 sc (fd) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -/Helvetica findfont 180.00 scalefont setfont -4800 3000 m -gs 1 -1 sc (vf) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -/Helvetica findfont 180.00 scalefont setfont -5700 3000 m -gs 1 -1 sc (pfa) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -/Helvetica findfont 180.00 scalefont setfont -6600 3000 m -gs 1 -1 sc (pfb) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -/Helvetica findfont 180.00 scalefont setfont -2100 3000 m -gs 1 -1 sc (tex) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -/Helvetica findfont 180.00 scalefont setfont -3000 4200 m -gs 1 -1 sc (dvi) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -/Helvetica findfont 180.00 scalefont setfont -3900 5400 m -gs 1 -1 sc (ps) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -/Palatino-Italic findfont 180.00 scalefont setfont -3900 1175 m -gs 1 -1 sc (fontinst) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -/Palatino-Italic findfont 180.00 scalefont setfont -3900 2375 m -gs 1 -1 sc (pltotf) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -/Palatino-Italic findfont 180.00 scalefont setfont -4800 2375 m -gs 1 -1 sc (vptovf) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -/Palatino-Italic findfont 180.00 scalefont setfont -3000 3575 m -gs 1 -1 sc (latex) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -/Palatino-Italic findfont 180.00 scalefont setfont -3900 4775 m -gs 1 -1 sc (dvips) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -$F2psEnd -restore |