% This is part of the book TeX for the Impatient. % Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry. % See file fdl.tex for copying conditions. % Fonts for TeX for the Impatient. % This file is being distributed with the macros because the macro file % refers to it. We used a combination of Bitstream and standard TeX % fonts for the original printed book, but for the free edition, we % stick to Computer Modern. % ----------------------------------------------------------------------- % % We used Computer Modern for the main text and math, and Zapf Humanist % (i.e., Optima) for heads. (bs00015 is Optima Roman, 16 italic, 17 % bold, 18 bold italic.) % % First we define all of the fonts we use for any purpose, in terms of the % font files. Later we define fonts functionally, using \let or \def. % Computer Modern fonts. % \font\fiverm = cmr5 \font\eightrm = cmr8 \font\ninerm = cmr9 % Glue pictures, small caps for ASCII. %\font\tenrm = xcmr10 % with our kerning \font\tenrm = cmr10 % don't have the xcmr10 source any more \font\oldtenrm = cmr10 % straight CM \font\twelverm = cmr12 \font\twentysixrm = cmr10 at 26pt % \font\eightit = cmti8 \font\nineit = cmti9 \font\tenit = cmti10 % \font\eighttt = cmtt8 \font\eleventt = cmtt10 at 11pt \font\twelvett = cmtt10 scaled \magstep2 % \font\tenbt = cmtt10 % \font\elevensf = cmss10 scaled\magstephalf \font\fourteensf = cmss10 scaled\magstep2 % \font\eightbf = cmbx8 \font\tenbf = cmbx10 \font\elevenbf = cmbx10 scaled \magstephalf \font\twelvebf = cmbx12 \font\thirtysixbf = cmbx10 at 36pt % \font\tenbi = cmbxti10 \font\elevenbi= cmbxti10 scaled \magstephalf \font\fourteenbi= cmbxti10 scaled \magstep2 % \font\tensc = cmcsc10 \font\eightsl = cmsl8 \font\eighti = cmmi8 \font\eightsy = cmsy8 % % Optima fonts. % % % \font\eightopt = bs0015 at 8pt % \font\nineopt = bs0015 at 9pt % \font\twelveopt = bs0015 at 12pt % \font\twentysixopt = bs0015 at 26pt % \font\nineoptit = bs0016 at 9pt % \font\tenoptit = bs0016 at 10pt % \font\tenoptbf = bs0017 at 10pt % \font\thirtysixoptbf = bs0017 at 36pt % \font\tenbt = bs00175 at 10pt % \font\tenoptbi = bs0018 at 10pt % \font\elevenoptbi = bs0018 at 11pt % \font\fourteenoptbi = bs0018 at 14pt % Palatino fonts. % \font\tenpal = pplr %\font\tenpal = bs0023 %\font\tenpalit = bs0024 %\font\tenpalbf = bs0025 %\font\tenpalbi = bs0026 % Logo and picture fonts. % \font\eightlogo = logo8 \font\logosl = logosl10 \font\handfont = pzdr % The following changes are to avoid driver overflow \ifmsdos \font\cnum = cnum % 36-pt bold Optima, numbers only (just for MS-DOS) \let\chapternumeralfont = \cnum %\let\thirtysixoptbf = \twentysixopt %\font\sevensy = cmsy8 %\font\seveni = cmmi8 \fi \def\undefinedfont{\errmessage{Undefined font}} % This should only be called when \rm et al. are going to be defined % directly. % \def\clearfonts{\let\rm = \undefinedfont \let\bf = \undefinedfont \let\it = \undefinedfont \let\bi = \undefinedfont \let\tt = \undefinedfont \let\bt = \undefinedfont \let\sc = \undefinedfont \let\ss = \undefinedfont } % We only need to assign to \fam if the font is going to be used in math % mode, which isn't the case with any of these. \rm, \it, \sl, \bf, and % \tt are defined in plain. % \def\bi{\tenbi} \def\mapquotes{\catcode`` = \active \catcode`' = \active} {\mapquotes \gdef\bt{% The font change also draws \ ` ' from a different font. \tenbt \def\\{{\tentt \char92}}% \def`{{\tentt \char96}}\def'{{\tentt \char39}}% } } \def\bti{\tenbi} \def\sc{\tensc} % Text fonts. % \def\textfonts{% \def\rm{\fam0\tenrm}% \textfont0=\tenrm \scriptfont0=\sevenrm \scriptscriptfont0=\fiverm \textfont1=\teni \scriptfont1=\seveni \scriptscriptfont1=\fivei \textfont2=\tensy \scriptfont2=\sevensy \scriptscriptfont2=\fivesy \textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex \def\it{\fam\itfam\tenit}\textfont\itfam=\tenit \def\sl{\fam\slfam\tensl}\textfont\slfam=\tensl \def\bf{\fam\bffam\tenbf}\textfont\bffam=\tenbf \scriptfont\bffam=\sevenbf \scriptscriptfont\bffam=\fivebf \def\tt{\fam\ttfam\tentt}\textfont\ttfam=\tentt \let\sc = \tensc \setbox\strutbox=\hbox{\vrule height8.5pt depth3.5pt width\z@}% \normalbaselineskip=12pt \normalbaselines \rm } % Footnote fonts. We generally use eight point. % \def\footnotefonts{% \def\rm{\fam0\eightrm}% \textfont0=\eightrm \scriptfont0=\sevenrm \scriptscriptfont0=\fiverm \textfont1=\eighti \scriptfont1=\seveni \scriptscriptfont1=\fivei \textfont2=\eightsy \scriptfont2=\sevensy \scriptscriptfont2=\fivesy \textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex \def\it{\fam\itfam\eightit}\textfont\itfam=\eightit \def\sl{\fam\slfam\eightsl}\textfont\slfam=\eightsl \def\bf{\fam\bffam\eightbf}\textfont\bffam=\eightbf \scriptfont\bffam=\sevenbf \scriptscriptfont\bffam=\fivebf \def\tt{\fam\ttfam\eighttt}\textfont\ttfam=\eighttt \let\sc = \eightsc \setbox\strutbox=\hbox{\vrule height7pt depth2pt width\z@}% \normalbaselineskip=9pt \normalbaselines \rm } % Fonts for the example titles. They are defined in the first example, % also. % \def\exampletitlefonts{\clearfonts \let\bf = \elevenbf \let\bi = \elevenbi \baselineskip = 13pt \bf } % Fonts for the subsection titles. % \def\subsectionfonts{\clearfonts \let\sf = \elevensf \baselineskip = 12pt \sf } % Fonts for the section titles. % \def\sectionfonts{\clearfonts \let\sf = \fourteensf \baselineskip = 16pt \sf } % Fonts for the chapter titles. % \let\chapternumeralfont = \thirtysixbf \def\chapterfonts{\clearfonts \let\bf = \twentysixrm \baselineskip = 32pt \bf } % Fonts for the table of contents. % \def\shorttocfonts{\clearfonts \let\rm = \twelverm \baselineskip = 20pt \rm } \def\tocfonts{\clearfonts \let\rm = \ninerm \let\it = \tenit \let\bf = \tenbf \baselineskip = 12pt \rm } % Fonts for the index. % \def\indexfonts{\clearfonts \let\rm = \eightrm \let\it = \eightit \let\tt = \eighttt \let\sc = \tensc \let\sl = \eightsl \textfont2 = \eightsy % For \AMSTeX. \let\mflogo = \eightlogo % For \Metafont. \normalbaselineskip = 10pt \normallineskip = 1.5pt \normalbaselines \setbox\strutbox=\hbox{\vrule height 7.5pt depth2.5pt width0pt}% \rm } % Fonts for the inside back cover. % \def\conceptpagefonts{\clearfonts \let\rm = \ninerm \let\sc = \eightrm \let\sl = \nineit \baselineskip = 12pt \rm } % We don't want any automatic hyphenation within the code font \hyphenchar\tentt = -1 \hyphenchar\eighttt = -1 \textfonts