diff options
Diffstat (limited to 'fonts/malvern/doc')
26 files changed, 7505 insertions, 0 deletions
diff --git a/fonts/malvern/doc/cmdoc.tex b/fonts/malvern/doc/cmdoc.tex new file mode 100644 index 0000000000..b9e1fdc6cf --- /dev/null +++ b/fonts/malvern/doc/cmdoc.tex @@ -0,0 +1,311 @@ +% cmdoc.tex 1.1.9 1994/07/20 -- sets up for general docs +% Copyright 1991-4 P. Damian Cugley. + +%%% @TeX-macro-file { +%%% filename = "cmdoc.tex", +%%% version = "1.1.9", +%%% date = "1994/07/20", +%%% package = "Malvern 1.1", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "TeX, plain TeX, style file", +%%% supported = "Maybe", +%%% abstract = "Top-level macro file for documents in +%%% Computer Modern fonts.", +%%% dependencies = "other program files", +%%% } + +%{{{ cmdoc.tex +\begingroup\catcode`\%=12 \toks0={\endgroup + \def\docversion{1.1.9 <pdc 1994/07/20>} +}\the\toks0 +\message{\docversion} + +\input pdcimth +\input pdcmigr +\input pdcpars +\input pdcfmt +\input pdchyex +\input pdcoput +\input pdcfsel + +% Comment out following 1 line for TeX 2.x: +\errorcontextlines=100 + +% Ensure top/bot margins large enough to fit headlines on +% even if printed on American paper: +\topmarge=297mm \advance\topmarge-11in \advance\topmarge7mm +\botmarge=\topmarge +\advance\topmarge\ht\strutbox \advance\topmarge\headlineskip +\ifdim \topmarge<20mm \topmarge=20mm \fi +\ifdim \botmarge<27mm \botmarge=27mm \fi + +\setpaper{210mm}{297mm} + +\hyphenpenalty=200 +\exhyphenpenalty=100 + +%{{{ layout + +\setnkgrid{4}{3} +\leftmargin=\gridwd \advance\leftmargin\colsep +\everypage={\ifdim\leftmargin>0pt \setbox\leftbox=\hbox to \gridwd{}\fi} +\colrule=0pt + +\everyfootnote={\notefonts} +\everylinenum={\smallfonts} +\everytag={\bf} + +%}}} +%{{{ fonts + +\autoloadfonts + +\def\HEADINGtemplate +{% + \f{rm}{cmss}\f{mi}{eurb}\f{sy}{eusb}% + \f{it}{cmssi}\f{tt}{cmtt}\f{mf}{logo}\f{mfi}{logosl}% +} + +\font\headingrm=cmss17 \font\headingit=cmssi17 +\fontset{subheading}\HEADINGtemplate{10 scaled 1200}{14pt} + {subheading}{subheading} +\fontset{heading}\HEADINGtemplate{10 scaled 1728}{20pt} + {subheading}{subheading} + +\def\BODYtemplate +{% + \m{rm}{cmr}\m{it}{cmti}% + \m{bf}{cmbx}\@\f{bi}{cmbxti10}% + \m{mi}{cmmi}\m{sy}{cmsy}% + \@\f{mf}{logo10}\@\f{mfi}{logosl10}% + \f{tt}{cmtt}\@\f{tb}{cmsltt10}% +} + +\font\bodysy=cmsy10 at 12pt + +\fontset{tiny}\BODYtemplate{7}{9pt}{tiny}{tiny} +\fontset{small}\BODYtemplate{9}{11pt}{tiny}{tiny} +\fontset{note}\BODYtemplate{10}{12pt}{tiny}{tiny} +\fontset{body}\BODYtemplate{12}{14pt}{small}{tiny} + +\def\everyloadfont#1#2{\fontdimen3#1=0pt \fontdimen4#1=0pt} +\rightskip=0pt plus 2em +\bodyfonts +\tolerance=1000 + +\let\sc=\relax +\let\csc=\relax +\let\mc=\relax +\let\n=\relax + +%}}} +%{{{ malvern maths + +\mathcode`,="602C + +%}}} +%{{{ TOC + +\newwrite\TOCfile +\openout\TOCfile=\jobname.toc + +% #1 is \TOCentryfoo control sequence +% #2 is stuff to be evaluated NOW -- e.g., section number +% #3 is stuff to be evaluated WHEN PRINTED -- e.g., section title +% folio is written after this in file +\def\TOCwrite#1#2#3% +{% + \def\tmp{#3}% + \edef\tmp{\string#1{#2}{\expandafter\TOCtrim\meaning\tmp}} + \write\TOCfile\expandafter{\tmp{\folio}} +} +\def\TOCtrim#1:->{} % strip off "macro:->" + +\def\TOCentrypart#1#2#3% +{ + \smallskip + \dimen0=\hsize \advance\dimen0\leftmargin + \moveleft\leftmargin\hbox to\dimen0{\strut\bf #1. #2\hfil} + \smallskip +} + +\def\TOCentrysection#1#2#3% +{ + \smallskip\noindent\llap{#1\quad}% + {\bf \ignorespaces #2\quad\rm \n{#3}}\par +} + +\def\TOCentrysubsec#1#2#3% +{ + \noindent{#1\enspace}{\ignorespaces #2\quad\rm \n{#3}}\par +} + +\def\TOCentrysubsubsec#1#2#3% +{ + \indent\indent\llap{#1\enspace}{\ignorespaces #2\quad\rm \n{#3}}\par +} + +%}}} +%{{{ sectioning + +% sections run continuously +% divisions start new page but do not reset section counters + +\newcount\partno +\def\thepartno +{% + \ifcase\partno O\or I\or II\or III\or IV\or V\else + \expandafter\uppercase\expandafter{\romannumeral\partno}% + \fi +} +\def\part#1% +{% + \global\advance\partno1 + \newpageheading{2\baselineskip}{\headingfonts}{}{\thepartno.\quad#1} + \TOCwrite\TOCentrypart{\thepartno}{#1} +} + +\newcount\secno \newcount\subsecno \newcount\subsubsecno + +\def\thesecno +{% + \n{% + \number\secno + \ifnum\subsecno>0 + .\number\subsecno + \ifnum\subsubsecno>0 + .\number\subsubsecno + \fi + \fi + }% +} + +\def\sectionheading#1 \par{\dosectionheading{#1}} +\def\dosectionheading#1% +{ + \par + \removelastskip + \vskip 0pt plus 0.3\vsize + \penalty-200 + \vskip 1\bigskipamount plus -0.3\vsize + \begingroup \advance\leftskip-\leftmargin + \parskip=0pt \parindent=0pt + \hyphenpenalty=10000 \exhyphenpenalty=500 + \interlinepenalty=100 + \headingfonts + \hbox{\hskip-\leftmargin + \vrule height 2pt depth 0pt width \leftmargin + \vrule height 2pt depth 0pt width \hsize} + \nobreak\medskip + \enspace#1\par + \nobreak\smallskip + \endgroup +} + +\def\section#1 \par +{ + \counta=\secno \advance\counta1 + \mark{\thesecno \noexpand\else \n{\number\counta}}% OLD \else NEW + \global\secno=\counta \global\subsecno=0 \global\subsubsecno=0 + \dosectionheading{\thesecno\quad #1} + \mark{\thesecno \noexpand\else \thesecno}% NEW \else NEW + \TOCwrite\TOCentrysection{\thesecno}{#1} +} + +\def\subsec#1 \par +{% + \counta=\subsecno \advance\counta1 + \mark{\thesecno \noexpand\else \n{\number\secno.\number\counta}} + \global\subsecno=\counta \global\subsubsecno=0 + \doheading\medskipamount{\subheadingfonts}{}{\thesecno\quad#1} + \mark{\thesecno \noexpand\else \thesecno} + \TOCwrite\TOCentrysubsec{\thesecno}{#1} +} + +\def\subsubsec#1 \par +{% + \global\advance\subsubsecno+1 + \doheading\smallskipamount{}{}{\ifdim\leftmargin=0pt\thesecno\quad\fi#1} + \TOCwrite\TOCentrysubsubsec{\thesecno}{#1} +} + +\newif\ifnoheader +\newif\iftwosided + +\footline={% + \ifnoheader + \global\noheaderfalse + \hfil\bodyfonts\n\folio\hfil + \else + \hfil + \fi +} + +\headline={% + \ifnoheader + \hfil + \else + \bodyfonts \hskip-\leftmargin + \iftwosided + \ifodd\pageno + \iftrue\botmark\fi + \hfil + {\bf\n\folio}% + \else + {\bf\n\folio}\quad + \hfil + \expandafter\iffalse\topmark\fi + \fi + \else + \expandafter\iffalse\topmark\fi + \hfil + {\bf\n\folio}% + \fi + \fi +} + +%}}} +%{{{ abbrevs + +\def\pt{\,{\rm pt}} +\def\mm{\,{\rm mm}} + +\def\MF{{\ifdim\fontdimen1\font>0pt \mfi \else \mf \fi META}\-% + {\ifdim\fontdimen1\font>0pt \mfi \else \mf \fi FONT}} +\def\MSDOS{\leavevmode\hbox{MS-DOS}} +\def\PS{PostScript} + +{\plain| +\gdef\dfn#1{\index{#1|idxunderline}{\bi #1}} +} + +\def\<#1>{\leavevmode\hbox{\langle{\it#1\/}\rangle}} + +\active\* \def*#1*{{\it#1\/}} +\append\verbatimplains\* + +% _xxx_ is xxx as typed by user to a program. +\active\_ +\def_% _xxx_ is bold verbatim text +{% + \ifmmode + \sb + \else + \begingroup % matched by closing _ + \tb\setupverbatim + \plain\|\active\_% + \let_\endgroup + \fi +} + +%}}} +%}}} cmdoc.tex + +%Local variables: +%fold-folded-p: t +%tex-macros-p: t +%End: diff --git a/fonts/malvern/doc/install.tex b/fonts/malvern/doc/install.tex new file mode 100644 index 0000000000..4d18a81fdc --- /dev/null +++ b/fonts/malvern/doc/install.tex @@ -0,0 +1,541 @@ +% install.tex -- how to install Malvern fonts +% Copyright 1994 P. Damian Cugley + +%%% @TeX-document { +%%% filename = "install.tex", +%%% version = "X", +%%% date = "pdc 1994.09.26", +%%% package = "Malvern 1.2", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "Malvern, METAFONT, font, typefont, TeX", +%%% supported = "Maybe", +%%% abstract = "Installation summary for the Malvern +%%% font family.", +%%% dependencies = "none", +%%% } + +% See the Malvern Handbook (maman.tex) for more info about Malvern. +% This software is available freely but without warranty. +% See the file COPYING for details. + +% This document is written in plain TeX and has NO dependencies +% other than the fonts (of course) which are all standard CM fonts. +% The hope is that this way anyone will be able to TeX this file +% without it all going horribly wrong... + +% To change the paper size, change the assignments to \hsize +% and \vsize below (after the definition of \margin). + +\newdimen\margin \margin=25mm % size of margins + +% Change the following two lines to select a different paper size: +\hsize=210mm \advance\hsize-2\margin +\vsize=297mm \advance\vsize-2\margin + +% change the following 1 line if you do have the LOGO10 font: +\newif\iflogo \logofalse + +\def\package{Malvern~1.2} +\def\ttpackage{Malvern-1.2} + +% Adjust \vsize to be a multiple of baselineskip + topskip: + +\baselineskip=14pt +\newcount\counta +\counta=\vsize \advance\counta-\topskip +\divide\counta\baselineskip +\vsize=\counta\baselineskip \advance\vsize\topskip + +\hoffset=\margin \advance\hoffset-1in +\voffset=\margin \advance\voffset-1in + +% +% FONTS +% + +\def\fnt#1#2{\font#1=#2 \fontdimen3#1=0pt \fontdimen4#1=0pt } + +\fnt\twelverm{cmr12} \def\rm{\twelverm\fam0 } +\fnt\twelvei{cmmi12} +\fnt\twelvesy{cmsy10 at 12pt} +\fnt\twelvebf{cmb10 at 12pt} \def\bf{\twelvebf\fam\bffam} +\fnt\twelveit{cmti12} \def\it{\twelveit\fam\itfam} +\fnt\twelvett{cmtt12} \def\tt{\twelvett\fam\ttfam} +\iflogo + \fnt\twelvemf{logo10 scaled 1200} \def\mf{\twelvemf} +\fi +\fnt\twelvermc{cmcsc10 scaled 1200} \def\sc#1{{\twelvermc \lowercase{#1}}} + +% Add just enough maths stuff: +\textfont0=\twelverm \scriptfont0=\tenrm \scriptscriptfont0=\sevenrm +\textfont1=\twelvei \scriptfont1=\teni \scriptscriptfont1=\seveni +\textfont2=\twelvesy \scriptfont2=\tensy \scriptscriptfont2=\sevensy +\textfont\itfam=\twelveit \scriptfont\itfam=\tenit +\textfont\ttfam=\twelvett \scriptfont\ttfam=\tentt + +\fnt\titlerm{cmss17} +\fnt\headingrm{cmss12 scaled 1200} +\fnt\headingit{cmssi12 scaled 1200} +\fnt\subheadingrm{cmss12} +\fnt\subheadingit{cmssi12} + +\rm +\rightskip=0pt plus 2em +\tolerance=1000 +\emergencystretch=3em + +% +% MACROS +% + +\def\.{\mathhexbox201} + +\def\<#1>{$\langle\hbox{\it #1\/}\rangle$} + +\def\allcapabbrev#1{{\the\scriptfont\fam #1}} + +\iflogo + \def\MF{{\mf META}\-{\mf FONT}} +\else + \def\MF{\allcapabbrev{META}\-\allcapabbrev{FONT}} +\fi +\def\fontinst{{\tt font}\-{\tt inst}} + +% No blank lines after section and subsection commands! +\newcount\seccount \seccount=0 +\def\section#1% +{ + \medbreak + \advance\seccount1 \subseccount=0 + \begingroup \headingrm \let\it=\headingit + \rightskip=0pt plus 2em + \parskip=0pt \parindent=0pt + \the\seccount\enspace #1 + \nobreak\smallskip + \endgroup + \noindent\ignorespaces +} + +\newcount\subseccount +\def\subsection#1% +{ + \smallbreak + \advance\subseccount1 + \begingroup \subheadingrm \let\it=\subheadingit + \rightskip=0pt plus 2em + \parskip=0pt \parindent=0pt + \the\seccount\sfcdot\the\subseccount\enspace #1\quad + \endgroup + \ignorespaces +} + +\def\sfcdot{\leavevmode\raise0.5ex\hbox{.}} + +\def\begintable +{% + $$\vbox\bgroup\halign\bgroup + ##\hfil&&\quad##\hfil\cr + \noalign{\hrule height 1pt \kern2\jot}% +} +\def\endtable +{% + \crcr + \noalign{\kern1.5\jot \hrule height 1pt}% + \egroup\egroup$$ + \ignorespaces +} + + +\def\flushtop#1% +{{% + \setbox0=\hbox{#1}\setbox1=\hbox{X}% + \dimen0=\ht1 \advance\dimen0-\ht0 + \raise\dimen0\box0 +}} + +\def\pt{\,{\rm pt}} \mathcode`.="0201 +\def\La{L\kern-0.15em\flushtop{a}} +\def\LaTeX{\La\kern-0.05em \TeX} + +% +% DOCUMENT PROPER STARTS HERE +% + +\leftline{\titlerm Installing Malvern fonts} +\bigskip + +% Print my address: + +\rightline{\vbox{\halign{\strut#\hfil\cr + P. Damian Cugley\cr +\noalign{\smallskip}% + Oxford University Computing Laboratory\cr + Parks Road\cr + Oxford \sc{OX$\mit1\ 3$QD}\cr + UK\cr +\noalign{\smallskip}% + \tt Damian.Cugley@comlab.ox.ac.uk\cr +}}} +\bigskip + + (Where this document and the corresponding chapter in the {\it + Handbook} differ, this version is probably the more up-to-date.) + +\section{About Malvern} + Malvern is a font family designed and implemented in \MF. It is + a sanserif font intended mainly for non-technical documents. It + does not blend particularly well with the Computer Modern fonts. + +\subsection{Generic driver file} + Malvern is unusual amongst \MF\ families in that it is supplied + with one {\it generic driver file} which could in theory be used + instead of having one driver file for each size and style the + family comes in.\footnote*{The package includes a selection of + driver files nevertheless.} The generic driver file ({\tt + ma.mf}) inspects the values of variables like {\it designsize} + and {\it weight} and gives the ad-hoc parameters appropriate + values, before reading the program files. On some UNIX systems + a small program called {\tt mff} can be used to generate fonts + using this system. Otherwise other measures will have to be + taken, described below. + +\subsection{Malvern encodings} + Malvern uses a nonstandard encoding -- in fact a family of + encodings, for example, Malvern~A (latin alphabets) and + Malvern~G (Greek). To create fonts for use with \LaTeX~2e and + the NFSS~2 font selection macros, use Alan Jeffrey's {\tt + fontinst} package. This generates the {\tt fd} files and + virtual fonts so that Malvern fonts may be used in the same way + as other \LaTeX~2e families. (The glyphs needed to make fonts + with the Cork (T1) encoding are in Malvern~A and Malvern~B.) + This has already been done to make a selection of styles + available with both \TeX\ Text and T1 encodings. + +\subsection{Malvern font names} + The Malvern fonts generated with \MF\ will have \TeX\ names of + the following form: +$$ + \hbox{\tt ma \it style enc size} +$$ + where the {\it style} is a two-digit style code (described + below), {\it enc} is one- or two-letter code identifying a + Malvern encoding (such as `{\tt a}' or `{\tt az}'), and {\it + size} is the size in points (e.g., `{\tt 12}' for $12\pt$, `{\tt + 17p28}' for $17.28\pt$). Thus {\tt ma55a12} (12-pt Malvern 55, + encoding~A), {\tt ma56g12} (12-pt Malvern~56, Greek encoding). + + The two-letter style codes are based on Adrien Frutiger's + system, devised for the Univers family. The first digit + specifies the weight, from 1 (ultra-light) to 9 (ultra-bold), + with 5 meaning medium and 7 bold. The second digit gives the + width: 5 or 6 is normal width, 7 or 8 is compressed, 3 or 4 is + expanded. An odd number means an upright font, an even number + italic. Thus Malvern~55 is roman, Malvern~56 is italic, + Malvern~75 boldface, Malvern~68 is demibold compressed italic. + +\edef\refstylecodes{\S\thinspace\the\seccount\.\the\subseccount} + + The \MF\ programs are also able to generate fonts named in Karl + Berry's system,\footnote\dag{Karl Berry, {\it File Names for \TeX\ + Fonts}, version 1\.6 ({\tt + file:\allowbreak//ftp.cs.umb.edu\slash pub\slash tex\slash fontname}).} + starting with `{\tt fmv}'. The correspondance between Malvern's + style digits and weight, variant and expansion letters is given + in the tables below. The encoding used for these fonts is \TeX\ + text, so for example {\tt fmvr12} and {\tt ma55s12} are names + for the same font. This is so that these fonts may be used in + plain-\TeX\ and \LaTeX-2\.09 documents without too much + confusion. NFSS~2 systems (indeed, any that use non-\TeX-text + encodings) will use virtual fonts. + + As of October 1994, however, the font names standard does not + allow for combinations of more than two variants (where + `variants' includes encodings and slant) without breaking the + eight-character limit required by stupid filesystems like MS-DOS + and ISO~9960. As an extreme example, Malvern~58 with the + caps-and-small-caps, old-style-numerals variation of the \TeX\ + Text encoding is {\tt fmvr9ci7tc12} (12 chars). The only + temporary solution I can offer is to extend the naming scheme + used for the `{\tt ma}-' fonts to include encoding codes for the + virtual fonts needed for plain \LaTeX, NFSS and NFSS~2 (e.g., + {\tt ma58ab12}). Therefore, the ability to create {\tt fmv}- + fonts is not being used at present. + +\section{Unpacking Malvern} + The Malvern distribution includes \MF\ source files, some \TeX\ + files such as this documentation, and a few other miscellaneous + files. + + All files have names that should work with MS-DOS and ISO-9960 + filesystems. + +\subsection{Source files ({\tt/source})} + On most \TeX\ systems, \MF\ fonts end up with their source files + stored in one directory. I~suggest that Malvern instead be + given its own file area. This avoids problems with different + font families having files with the same name, and makes it easy + to replace all the Malvern files in one go if you upgrade to a + newer version of Malvern. + + With a new-style directory tree,\footnote*{At the time of + writing, the \TeX\ Directory Standard (TeDiouS) is still in + discussion.\break This is my best guess based on a \TeX\ system I + recently installed.} the {\tt\ttpackage} directory may be + placed in the `{\tt texmf/fonts/public}' directory, and the {\tt + source} directory and {\tt driver} directories merged and + renamed so that \MF\ can find them. + + The files {\tt mff.rc} and {\tt fmv.mff} are input files for + {\tt mff} and may be ignored if you are not using {\tt mff} to + generate fonts. If the Malvern files are being mixed in with a + bunch of others, rename {\tt mff.rc} to {\tt ma.mff}. + +\subsection{Driver files ({\tt/drivers})} + Fonts can be generated by including assignments on the \MF\ + command line, but driver files are more convenient (unless you + have {\tt mff}). These are also used when assignments to the + generic driver file's parameters on the \MF\ command line is + impossible, such as when using the standard {\tt MakeTeXPK} + script. A driver file is included for each {\tt tfm} supplied. + +\subsection{\TeX\ input files ({\tt/tex})} + These files belong in a system-wide \TeX\ inputs area. The + files ending -{\tt.fd} are font family description files, used + by NFSS~2. + + On new-style directory trees, the best approach is probably to + link or rename the {\tt texmf/fonts/public/\ttpackage/tex} + directory to {\tt texmf/tex/\ttpackage}. + +\subsection{Documentation files ({\tt/doc}, {\tt/dvi})} + Files ending in `{\tt.tex}' are plain \TeX\ documents, and will + not work with \LaTeX. Compiled ({\tt dvi}) files are supplied + to save the installer having to run \TeX. Read this document, + {\tt install.tex}, first. The Greek text encoding is described + in {\tt magrman.tex}. + + + Please do not install any of the macro files used to typeset the + documentation in the system-wide \TeX\ inputs area. They are + not supported, not necessarily generally useful, and very + nonstandard. Earlier releases of Malvern gave the macro files + generic enough names that they might clash with other macro + files. They have been renamed to start with `{\tt pdc}' in the + hope that this will avoid clashes if they are accidentally + installed. + +\subsection{Virtual font files ({\tt/vf})} + These virtual fonts are generated using Alan Jeffrey's + \fontinst\ package, and are Malvern fonts with the Cork encoding + (and some of the trickier \TeX\ Text variations). With NFSS~2 + they are used by specifying encoding `{\tt T1}' and family `{\tt + fmv}'.s + + The virtual fonts may have the following encoding codes: +\begintable + \it Encoding&\it Code&\it Description\cr +\noalign{\kern\jot\hrule\kern1.5\jot} + OT1c& \tt aa& + \TeX\ text with caps\&small caps\cr + OT1c9& \tt ab& + ditto, with old-style numerals\cr + T1& \tt ar& + Cork\cr + T19& \tt as& + Cork, with old style numerals\cr + T1c& \tt at& + Cork, with caps\&small caps\cr + T1c9& \tt au& + Cork, with c\&sc and o.s. numerals\cr +\endtable + For example, {\tt ma55ar12} has encoding T1. Note that + replacing lower-case letters with small-capitals counts as a + different encoding scheme rather than a `font shape'. + +\subsection{Font metric files ({\tt/tfm})} + A selection of precompiled font metric files, including those + for virtual fonts in {\tt /vf} and the actual fonts needed to + use them, as well as fonts needed to print the documentation in + {\tt/dvi}. + +\section{Using mff to generate Malvern fonts} + First, install {\tt mff} and arrange that \MF\ fill be able to + find the {\tt mf} files. Then to create a Malvern font, for + example 12-pt Malvern~55 ({\tt ma55a12}), give the command: +$$ + \hbox{\tt mff ma55a12} +$$ + To generate Malvern~55 and 56 at magsteps 0, half and 1, for 300-dpi + and 1000-dpi printers, you would type: +$$ + \hbox{\tt mff --magstep=0,h,1 + --dpi=300,1000 ma55a10 ma56a10} +$$ + If all goes well, the {\tt tfm} and {\tt pk} files generated + will be installed in the correct directories automatically. + +\section{Generating Malvern fonts without mff} + This section presumes you know how to install a normal \MF\ + font. + + Create a driver file for each style of Malvern you want to be + able to use. It should have the following form: +\begintable +\tt \% \<name of file> -- generate \<size>-pt Malvern \<style> \cr +\noalign{\smallskip} +\tt font\char95 size \<size> pt\#; \cr +\tt encoding = \<number>; \cr +\tt weight = \<number>; hratio = \<number>; \cr +\tt slant = \<number>; italicness = \<number>; \cr +\tt input ma \cr +\tt bye \cr +\endtable + where \<size> is the design size desired in points, and the + values for the various variables are given below. The \<style> + is the two-digit style code described in \refstylecodes. +% You +% might want to append an verbose description of the style: +%$$\hbox{\tt \% ma76a12.mf -- generate 12-pt Malvern 76 bold italic}$$ + To + generate '{\tt fmv}-' fonts, the second-last line is changed to + `{\tt input fmv}'. + + These driver files should be named after the font they + correspond to -- for example, `{\tt ma76a12.mf}' to generate + Malvern~76. Then they are used as usual with \MF: +$$ + \hbox{\tt mf \char92 mode=luxo; mag={\it m}; input ma55a12} +$$ + where {\it m} is the magnification wanted, or `{\tt 1.0}' for no + magnification. + +\subsection{Values for {\it encoding}} + The variable {\it encoding} specifies the encoding to use -- in + other words, the subset of Malvern's glyphs to be generated. + It should be given one of the following values: +\begintable + \it Encoding&\it Code&\it Description\cr +\noalign{\kern\jot\hrule\kern1.5\jot} + ${\it encoding} = 1$& \tt a& + Malvern A (latin alphabets {\it a--z}, numerals, etc.)\cr + ${\it encoding} = 2$& \tt b& + Malvern B (superscripts, symbols etc.)\cr + ${\it encoding} = 3$& \tt c& + Malvern C (Cyrillic)\cr + ${\it encoding} = 5$& \tt e& + Malvern E (composite letters {\it \`a--\v z})\cr + ${\it encoding} = 7$& \tt g& + Malvern G (Greek letters $\alpha$--$\omega$, + $\it\acute\alpha$--$\it\tilde\omega$)\cr + ${\it encoding} = 19$& \tt s& \TeX\ text (the same as CM Roman)\cr + ${\it encoding} = 26$& \tt az& \TeX\ text, old-style numerals\cr +\endtable + The code is the used in the font name -- for example, {\tt + ma55s10} for Malvern with the \TeX\ text encoding (${\it + encoding} = 19$), and so on. + + The Malvern programs used to attempt to generate other encoding + schemes; with {\tt fontinst} this all becomes redundant and + those codes are obsolete. + +\subsection{Values for {\it weight}} + The variable {\it weight} specifies the weight (boldness) of the + font. It has the following values: +\begintable + \it Weight&\it Style&\it NFSS~2& \it Berry&\it Description\cr + &\it digit&\it code&\it code\cr +\noalign{\kern\jot\hrule\kern1.5\jot} + ${\it weight} = 1/4$& \tt 1& \tt ul& \tt t& ultra-light\cr + ${\it weight} = 1/2$& \tt 2& \tt el& \tt i& extra-light\cr + ${\it weight} = 3/4$& \tt 3& \tt\ l& \tt l& light\cr + ${\it weight} = 7/8$& \tt 4& \tt sl& \tt b& semi-light\cr + ${\it weight} = 1$& \tt 5& \tt\ m& \tt m& medium\cr + ${\it weight} = 1\.3$& \tt 6& \tt sb& \tt d& semi-bold\cr + ${\it weight} = 1\.6$& \tt 7& \tt\ b& \tt b& bold \cr + ${\it weight} = 2$& \tt 8& \tt eb& \tt x& extra-bold\cr + ${\it weight} = 3$& \tt 9& \tt ub& \tt u& ultra-bold\cr +\endtable + The `style digit' is the first digit in the two-digit style + codes described in \refstylecodes. The `NFSS~2\ code' is the + first half of a corresponding NFSS~2\ `font series' code. The + `Berry code' is the code for this weight in Karl Berry's font + naming scheme. + + Note that some of the character programs produce ugly results + for large values of {\it weight}. + +\subsection{Values for {\it hratio}} + The variable {\it hratio} specifies the ratio between horizontal + and vertical measurements: in other words, whether the font is + compressed or expanded. It may have the following values: +\begintable + \it Hratio&\it Style&\it NFSS~2& \it Berry&\it Description\cr + &\it digit&\it code&\it code\cr +\noalign{\kern\jot\hrule\kern1.5\jot} + ${\it hratio} = 0\.50$& {\tt 9} or {\tt 0}& + \tt ec&\tt o& extra compressed\cr + ${\it hratio} = 0\.80$& {\tt 7} or {\tt 8}& + \tt\ c&\tt c& compressed\cr + ${\it hratio} = 1\.00$& {\tt 5} or {\tt 6}& + \tt\ m&\tt r& normal width\cr + ${\it hratio} = 1\.15$& {\tt 3} or {\tt 4}& + \tt\ x&\tt x& expanded\cr + ${\it hratio} = 1\.30$& {\tt 1} or {\tt 2}& + \tt ex&\tt w& extra expanded\cr +\endtable + The 'style digit' is the second half of the two-digit style + codes described in \refstylecodes. The `NFSS~2\ code' is the + second half of an NFSS~2\ `font series' code (for example, + bold expanded is ${\tt b} + {\tt x} = {\tt bx}$, compressed is + ${\tt m} + {\tt c} = {\tt c}$). The `Berry code' is for Karl + Berry's scheme. + + Beware that the character programs do not all produce good + results when {\it hratio} is not 1. + +\subsection{Values for {\it slant} and {\it italicness}} + These two variables between them specify whether a font is to be + produced with italic letterforms or not: +\begintable + \it Slant&\it Italic? &\it Style&\it NFSS~2&\it Berry&\it Description\cr + &&\it digit&\it code&\it code\cr +\noalign{\kern\jot\hrule\kern1.5\jot} + ${\it slant} = 0$& ${\it italicness} = 0$& odd& + \tt n& \tt r& upright\cr + ${\it slant} = 1/8$& ${\it italicness} = 1$& even& + {\tt ti} or {\tt i}& \tt i& italic\cr + ${\it slant} = 0$& ${\it italicness} = 1$& --& + \tt ui& \tt u& `upright italic'\cr + ${\it slant} = 1/8$& ${\it italicness} = 0$& --& + {\tt sl} & \tt o& oblique\cr +\endtable + The `NFSS~2\ code' is the `font shape' code. For italic this + might be `{\tt ti}' or `{\tt i}' depending on whom you ask. The + `Berry codes' are variant letters for Karl Berry's font naming + scheme. + + The variable {\it slant} is common to many \MF\ programs, and + causes the glyphs to be obliqued. The {\it italicness} variable + signals that italic letterforms should be used for some letters. + It is possible to generate an obliqued font or an `upright + italic' with appropriate settings, but these cannot have `{\tt + ma}-' names because I~have not defined style codes for them. + +\section{Note on the {\it Handbook}} + The {\it Malvern Handbook}, {\tt doc/maman.tex} produces + cross-references automatically via an {\tt aux} file, and will + need to be run through \TeX\ twice to get the cross-references + right. The front matter (preface and table of contents) are + printed {\it last}, and should be transferred to the front of + the handbook before binding. + +\rightline{pdc 1994.10.07} +\bye + +%Local Variables: +%fill-prefix: " " +%End: diff --git a/fonts/malvern/doc/ma55doc.tex b/fonts/malvern/doc/ma55doc.tex new file mode 100644 index 0000000000..c67d85aa26 --- /dev/null +++ b/fonts/malvern/doc/ma55doc.tex @@ -0,0 +1,310 @@ +%{{{ ma55doc.tex 1.1.10 1994/06/23 -- style file for documents in Malvern 55 +% Copyright (c) 1991-1994 Damian Cugley. +\begingroup\catcode`\%=12 \toks0={\endgroup + \gdef\docversion{1.1.10} \gdef\lastedit{pdc 1994/06/23} +}\the\toks0 +\message{\docversion\space \lastedit} + +\input pdchyex +\input pdcimth +\input pdcmigr +\input pdcpars +\input pdcfmt +\input pdcoput +\input pdcfsel +\input maamac + +%{{{ Ensure top/bot margins large enough to fit headlines on +% even if printed on American paper: +\topmarge=297mm \advance\topmarge-11in \advance\topmarge7mm +\botmarge=\topmarge +\advance\topmarge\ht\strutbox \advance\topmarge\headlineskip +\ifdim \topmarge<20mm \topmarge=20mm \fi +\ifdim \botmarge<27mm \botmarge=27mm \fi + +\setpaper{210mm}{297mm} + +\hyphenpenalty=200 +\exhyphenpenalty=100 +%}}} +%{{{ layout + +\setnkgrid{4}{3} +\leftmargin=\gridwd +\everypage={\setbox\leftbox=\hbox to \leftmargin{}} +\colrule=0pt + +\everyfootnote={\notefonts} +\def\footnotetextmark#1{$^{#1}$} +\def\footnotenotemark#1{{\bf\n{#1}}} +\everylinenum={\smallfonts} +\everytag={\bf} + +%}}} +%{{{ fonts + +\autoloadfonts + +\def\HEADINGtemplate +{% + \f{rm}{ma75a}\f{mi}{eurb}\f{sy}{eusb}% + \f{it}{ma76a}\f{tt}{cmtt}\f{mf}{mf75s}\f{mfi}{mf76s}% +} +\ldfont\headingmi{eurb10 scaled \magstep4} +\ldfont\headingsy{eusb10 scaled \magstep4} +\ldfont\headingtt{cmtt10 scaled \magstep4} +\ldfont\subheadingmi{eurb10 scaled \magstep2} +\ldfont\subheadingsy{eusb10 scaled \magstep2} +\ldfont\subheadingtt{cmtt10 scaled \magstep2} + +\fontset{subheading}\HEADINGtemplate{12}{14pt}{subheading}{subheading} +\fontset{heading}\HEADINGtemplate{18}{20pt}{subheading}{subheading} + +\def\BODYtemplate +{% + \m{rm}{ma55a}\m{it}{ma56a}% + \m{bf}{ma75a}\f{bi}{ma76a}% + \m{mi}{cmmi}\m{sy}{cmsy}% + \@\f{mf}{logo10}\@\f{mfi}{logosl10}% + \f{tt}{cmtt}\f{tb}{cmttsl}% +} + +\ldfont\bodytt{cmtt10 scaled \magstep2} +\ldfont\notett{cmtt10 scaled \magstep1} +\ldfont\smalltt{cmtt10 scaled \magstephalf} +\ldfont\bodytb{cmttsl10 scaled \magstep2} +\ldfont\smalltb{cmttsl10 scaled \magstep1} +\ldfont\notetb{cmttsl10 scaled \magstephalf} +\font\bodymi=cmmi10 scaled \magstep2 +\font\bodysy=cmsy10 scaled \magstep2 +\font\notemi=cmmi10 scaled \magstep1 +\font\notesy=cmsy10 scaled \magstep1 +\font\smallmi=cmmi10 scaled \magstephalf +\font\smallsy=cmsy10 scaled \magstephalf + +\fontset{tiny}\BODYtemplate{7}{9pt}{tiny}{tiny} +\fontset{small}\BODYtemplate{9}{11pt}{tiny}{tiny} +\fontset{note}\BODYtemplate{10}{12pt}{tiny}{tiny} +\fontset{body}\BODYtemplate{12}{14pt}{small}{tiny} + +\def\everyloadfont#1#2{\fontdimen3#1=0pt \fontdimen4#1=0pt} +\rightskip=0pt plus 20mm +\bodyfonts +\tolerance=1000 + +%}}} +%{{{ malvern maths + +\mathcode`,="602C + +%}}} +%{{{ TOC + +\newwrite\TOCfile +\openout\TOCfile=\jobname.toc + +% #1 is \TOCentryfoo control sequence +% #2 is stuff to be evaluated NOW -- e.g., section number +% #3 is stuff to be evaluated WHEN PRINTED -- e.g., section title +% folio is written after this in file +\def\TOCwrite#1#2#3% +{% + \def\tmp{#3}% + \edef\tmp{\string#1{#2}{\expandafter\TOCtrim\meaning\tmp}} + \write\TOCfile\expandafter{\tmp{\folio}} +} +\def\TOCtrim#1:->{} % strip off "macro:->" + +\def\TOCentrypart#1#2#3% +{ + \smallskip + \dimen0=\hsize \advance\dimen0\leftmargin + \moveleft\leftmargin\hbox to\dimen0{\strut\bf #1. #2\hfil} + \smallskip +} + +\def\TOCentrysection#1#2#3% +{ + \smallskip\noindent\llap{#1\quad}% + {\bf \ignorespaces #2\quad\rm \n{#3}}\par +} + +\def\TOCentrysubsec#1#2#3% +{ + \noindent{#1\enspace}{\ignorespaces #2\quad\rm \n{#3}}\par +} + +\def\TOCentrysubsubsec#1#2#3% +{ + \indent\indent\llap{#1\enspace}{\ignorespaces #2\quad\rm \n{#3}}\par +} + +%}}} +%{{{ sectioning + +% sections run continuously +% divisions start new page but do not reset section counters + +\newcount\partno +\def\thepartno +{% + \ifcase\partno O\or I\or II\or III\or IV\or V\else + \expandafter\uppercase\expandafter{\romannumeral\partno}% + \fi +} +\def\part#1% +{% + \advance\partno1 + \newpageheading{2\baselineskip}{\headingfonts}{}{\thepartno.\quad#1} + \TOCwrite\TOCentrypart{\thepartno}{#1} +} + +\newcount\secno \newcount\subsecno \newcount\subsubsecno + +\def\thesecno +{% + \n{% + \number\secno + \ifnum\subsecno>0 + .\number\subsecno + \ifnum\subsubsecno>0 + .\number\subsubsecno + \fi + \fi + }% +} + +\def\sectionheading#1{\dosectionheading{#1}} +\def\dosectionheading#1% +{ + \par + \removelastskip + \vskip 0pt plus 0.3\vsize + \penalty-200 + \vskip 1\bigskipamount plus -0.3\vsize + \begingroup \advance\leftskip-\leftmargin + \parskip=0pt \parindent=0pt + \hyphenpenalty=10000 \exhyphenpenalty=500 + \interlinepenalty=100 + \headingfonts + \hbox{\hskip-\leftmargin + \vrule height 2pt depth 0pt width \leftmargin + \vrule height 2pt depth 0pt width \hsize} + \nobreak\medskip + \Box\enspace#1\par + \nobreak\smallskip + \endgroup +} + +\def\section#1% +{ + \counta=\secno \advance\counta1 + \mark{\thesecno \noexpand\else \n{\number\counta}}% OLD \else NEW + \secno=\counta \subsecno=0 \subsubsecno=0 + \dosectionheading{\thesecno\quad #1} + \mark{\thesecno \noexpand\else \thesecno}% NEW \else NEW + \TOCwrite\TOCentrysection{\thesecno}{#1} +} + +\def\subsec#1% +{% + \counta=\subsecno \advance\counta1 + \mark{\thesecno \noexpand\else \n{\number\secno.\number\counta}} + \subsecno=\counta \subsubsecno=0 + \doheading\medskipamount{\subheadingfonts}{}{\thesecno\quad#1} + \mark{\thesecno \noexpand\else \thesecno} + \TOCwrite\TOCentrysubsec{\thesecno}{#1} +} + +\def\subsubsec#1% +{% + \advance\subsubsecno+1 + \doheading\smallskipamount{}{}{\ifdim\leftmargin=0pt\thesecno\quad\fi#1} + \TOCwrite\TOCentrysubsubsec{\thesecno}{#1} +} + +\newif\ifnoheader +\newif\iftwosided + +\footline={% + \ifnoheader + \global\noheaderfalse + \hfil\bodyfonts\n\folio\hfil + \else + \hfil + \fi +} + +\headline={% + \ifnoheader + \hfil + \else + \bodyfonts \hskip-\leftmargin + \iftwosided + \ifodd\pageno + \iftrue\botmark\fi + \hfil + {\bf\n\folio}% + \else + {\bf\n\folio}\quad + \hfil + \expandafter\iffalse\topmark\fi + \fi + \else + \expandafter\iffalse\topmark\fi + \hfil + {\bf\n\folio}% + \fi + \fi +} + +%}}} +%{{{ abbrevs + +\def\pt{\,{\rm pt}} +\def\mm{\,{\rm mm}} + +\def\MF{{\ifdim\fontdimen1\font>0pt \mfi \else \mf \fi METAFONT}} +\def\TeX{T\kern-0.1em \lower0.5ex\hbox{E}\kern-0.01em X} +\def\La{L\kern-0.1667em \flushtop{\char"E1 }} +\def\LaTeX{\La\kern-0.05em \TeX} +\def\MagTeX{M{\char"E1 \char"E7 }\kern-0.1em \TeX} +\csc{ + \gdef\PS{PostScript} +} + +\def\MSDOS{\hbox{MS-DOS}} + +\def\MFjob{{\mf MF}\kern-0.125em job} % Eberhard Mattes' emTeX MFjob + +{\plain| +\gdef\dfn#1{\index{#1|idxunderline}{\bi #1}} +} + +\def\<#1>{\leavevmode\hbox{\langle{\it#1\/}\rangle}} + +\active\* \def*#1*{{\it#1\/}} +\append\verbatimplains\* + +% _xxx_ is xxx as typed by user to a program. +\active\_ +\def_% _xxx_ is bold verbatim text +{% + \ifmmode + \sb + \else + \begingroup % matched by closing _ + \tb\setupverbatim + \plain\|\active\_% + \let_\endgroup + \fi +} + +%}}} +%}}} ma55doc.tex + + +%Local variables: +%fold-folded-p: t +%tex-macros-p: t +%End: diff --git a/fonts/malvern/doc/mabib.tex b/fonts/malvern/doc/mabib.tex new file mode 100644 index 0000000000..b0753169be --- /dev/null +++ b/fonts/malvern/doc/mabib.tex @@ -0,0 +1,239 @@ +% mabib.tex -- Bibliography for Malvern Handbook +% Copyright 1994 P. Damian Cugley + +%%% @TeX-document { +%%% filename = "mabib.tex", +%%% version = "X", +%%% date = "pdc 1994.10.11", +%%% package = "Malvern 1.2", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "Malvern, METAFONT, font, typefont, TeX", +%%% supported = "Maybe", +%%% abstract = "Character programs for the Malvern +%%% font family.", +%%% dependencies = "ma55doc.tex, pdc*.tex, maamac.tex, texnical.tex, +%%% mabib.tex, and many Malvern fonts", +%%% } + +% This software is available freely but without warranty. +% See the file 0copying.txt for details. + +%{{{ bibliography + +\section{References} + +\iflong\else + This section includes references not cited in the "Abridged + Malvern Handbook". +\fi + + The publication \TUGboat, referred to below, is the journal of + the \TeX\ Users Group (TUG), PO~Box~\n{9506}, Providence, + RI~$02940$--$9506$, United States of America. Their electronic + mail address is |TUG@Math.AMS.com|. + + URLs (universal resource locators) describe documents available + over Internet. A URL of the form +\begin display + |file://|\<host>|/|\<directory>|/|\<name>\cr +\end display + represents a file called \<name> in directory \<directory> on an + FTP server called \<host>. CTAN is the Comprehensive \TeX\ + Archive, for example +\begin display + |file://ftp.tex.ac.uk/tex-archive|\cr + |gopher://gopher.tex.ac.uk/11/archive/|\cr\quad|Archive%20directory|\cr + |http://www.tex.ac.uk/tex-archive/|\cr +\end display + and similarly +\begin display + |file://ftp.dante.de/tex-archive|\cr + |file://ftp.shsu.edu/tex-archive|\cr +\end display + and many mirrors. + +\def\Ibid{Ibid.\spacefactor1000 } + +\xreflabel{bib}{\S{\thesecno}} +\begingroup +\def\bibitem#1#2% +{% + \smallbreak + \def\tmp{#1} + \edef\tmp{\string\expcs\string\def{xref-#2}% + {\expandafter\TOCtrim\meaning\tmp}} + \write\auxfile\expandafter{\tmp} + \setbox0=\hbox{\subheadingfonts {#1\/}} + \ifdim\wd0>\leftmargin + \noindent\hskip-\leftmargin \box0 \quad + \else + \noindent\llap{\hbox to \leftmargin{\hfil \unhbox0 \quad}}% + \fi + \ignorespaces +} + +\counta=0 +\def\nbibitem% +{% + \advance\counta 1 + \expandafter\nnbibitem\expandafter{\the\counta} +} +\def\nnbibitem#1{\bibitem{\n{#1}}} + +\def\TB#1#2#3#4#5% +{% + \TUGboat~\n{#1.#3} (\n{#2}), pp.\thinspace\n{#4}--\n{#5}% +} + +\nbibitem{PS} + Adobe Systems Incorporated, {\it PostScript\registered\ Language + Reference Manual}, $2$nd Edition (Addison--Wesley, $1990$). The + definitive description of the Level-$2$ PostScript + page-decsription language. + +\nbibitem{Berry} + Karl Berry, `Filenames for Fonts', \TB{11}{1990}{4}{517}{520}. + This describes a system of conventions for assigning \TeX\ + external names to fonts. + +\nbibitem{Berry2} + Karl Berry, {\it Filenames for Fonts}, version $1.6$ + \url{file}{ftp.cs.umb.edu}{pub/tex}{fontnames-1.6.tar.gz}. As + above, with revisions, a longer list of family names, and some + ideas for long fontnames. + +\nbibitem{Bien} + Janusz S. Bie\'n, `On Standards for Computer-Modern Font + Extensions', \TB{11}{1990}{2}{175}{183}. Ennumerates the + special letters used in several languages. + +\nbibitem{KD} + K.~J. Dryllerakis (|kd@doc.ic.ac.uk|), {\it Typesetting Greek + Texts with Greek\TeX}, Greek\TeX~\n{3.1} (also known as KD Greek) + (CTAN |fonts/greek/kd|). + + +\nbibitem{Cork} + Michael~J. Ferguson, `Report on Multilingual Activities', + \TB{11}{1990}{4}{514}{516}. This describes the font encoding + that resulted from discussions at the \TeX\ User Group + conference in Cork in September $1990$. + +\nbibitem{GPL} + Free Software Foundation, {\it GNU General Public License}, + Version~$1$ (Free Software Foundation, Inc., $675$ Mass Ave, + Cambridge, MA~$02139$, USA) (Feb.\thinspace $1989$). The license + agreement descibes the rights and responsibilities of users of + GNU software. (Supplied as a file |COPYING| in all GNU + distributions.) + +\nbibitem{Hara} + Yannis Haralambous, `\TeX\ and Latin-Alphabet Languages', + \TB{10}{1989}{3}{342}{345}. An attempt to devise a system of + ligatures to cover all European Latin-alphabet languages. + Incorrectly states that no English words use composite letters. + +\nbibitem{Hart's} + Horace Hart, {\it Hart's Rules for Compositors and Readers at + the University Press, Oxford}, $39$th Edition (corrected) + (Oxford University Press, $1990$). A small book describing the + house style of the Oxford University Press. + +\nbibitem{Hart's13} \Ibid, p.\,$13$. +\nbibitem{Hart's30} \Ibid, p.\,$30$ +\nbibitem{Hart's62} \Ibid, p.\,$62$ +\nbibitem{Hart's102} \Ibid, p.\,$102$. +\nbibitem{Hart's120} \Ibid, pp.\,$120$--$121$. +\nbibitem{Hart's135} \Ibid, p.\,$135$. + +\nbibitem{fontinst} + Alan Jeffrey ({\tt alanje@cogs.susc.ac.uk}), {\it The |fontinst| + package} (CTAN |fonts/utilities/fontinst|, June \n{1994}). See + \xref{s-fontinst}. + +\nbibitem{MFbook} + Donald E. Knuth, {\it The \MF book} (Addison--Wesley, + $1986$). Also published as Volume~C of the Computers and + Typesetting Series. The definitive user manual for \MF. + +\nbibitem{MFApp.F} + \Ibid, Appendix F. + +\nbibitem{TeXbook} + Donald E. Knuth, {\it The \TeX book} ($n$th printing, + Addison--Wesley, $1990$). Also published as Volume~A of the + Computers and Typesetting Series. The definitive user guide to + \TeX. + +\nbibitem{TeXchar} + {\TeX book}, Chapters $25$ and~$26$. \<character> is defined at the + start of Ch.\thinspace $26$ (Summary of Math Mode), but the concept is + used in Ch.\thinspace $25$ (Summary of Horizontal Mode). + +\nbibitem{TeX9} + {\it \TeX book}, Chapter \n9. +\nbibitem{TeXB4} + {\it \TeX book}, Appendix B, \S$4$ + +\nbibitem{TeXD1} + {\it \TeX book}, Appendix D, \S$1$. + +\nbibitem{TeXE} + {\it \TeX book}, Appendix E. + +\nbibitem{TeXF1} + {\it \TeX book}, Appendix F, Figure~\n1. + +\nbibitem{LaTeX} + Leslie Lamport, {\it \LaTeX: A Document Preparation System} + (Addison--Wesley, $1986$). An introduction and user guide for + \LaTeX. + +\nbibitem{lfonts} + Leslie Lamport et al., |lfonts.tex| (part of the standard + \LaTeX\ distribution). The only documentation for the standard + \LaTeX\ font-loading macros. + +\nbibitem{NFSS} + Frank Mittelbach and Rainer Sch\"opf, `The New Font Family + Selection: User Interface to Standard \LaTeX', + \TB{11}{1990}{2}{298}{}. This describes a version of the + so-called New Font Selection Scheme (\mc{NFSS}), used in some + \LaTeX\ installations. + +\nbibitem{ODWE} + {\it The Oxford Dictionary for Writers and Editors} (Oxford + University Press, $1990$). The companion dictionary to + \rcite{Hart's} above. + +\nbibitem{ODWEacc} + \Ibid, under "accents and special sorts". + +\nbibitem{ODWEcap} + \Ibid, under "capitalization/Postcodes". (Also the first line + of the title verso of the same book.) + +\nbibitem{Pei} + Mario A. Pei, {\it The World's Chief Languages}, $3$rd Edition + (Allen \& Unwin, $1949$). The only reference in my local + library to many of the languages that latin fonts are expected + to support. + +\nbibitem{nfss-malvern} + Sebastian Rahtz, {\tt malvern.sty} (in directory {\tt + /contrib/spqr} of the \package\ distribution). Specifies + Malvern fonts for \LaTeX \n{2.09} with NFSS. +\par +\endgroup +%}}} bibliography + +%Local variables: +%fold-folded-p: t +%tex-mother-file: "maman" +%fold-folded-p: t +%fill-prefix: "\t" +%End: diff --git a/fonts/malvern/doc/magrmac.tex b/fonts/malvern/doc/magrmac.tex new file mode 100644 index 0000000000..59fdc97b81 --- /dev/null +++ b/fonts/malvern/doc/magrmac.tex @@ -0,0 +1,85 @@ +% %M% 1.%I% %E% -- hacks for typesetting Greek + +% These macros are intended to be useful with the Malvern G fonts, +% and should also work pretty much with the Levy or KD Greek fonts. In +% the long term, I expect to merge what little extra support is needed +% for Malvern into the GreekTeX distribution in some sense. + +% These macros are not in final form and are not intended to be +% supported. Use them at your own risk. Enjoy! + +% Damian Cugley +% Oxford University Computing Laboratory, UK +% <Damian.Cugley@comlab.ox.ac.uk> + +%{{{ macros for greek + +\newtoks\everygreek + +%{{{ lunate sigma, curly phi + +{\catcode`\s=13 \catcode`\S=13 +\gdef\\% +{% + \catcode`\s=13 \chardef s=`c% + \catcode`\S=13 \chardef S=`C% +}} +\let\grlunatesigma=\\ + +{\uccode`\~=`\f \uppercase{ +\gdef\\% +{% + \catcode`\f=13 \chardef~=92 +}}} +\let\grvarphi=\\ + +%}}} lunate sigma +%{{{ accent + +{\catcode`\<=13 \catcode`\>=13 \catcode`\'=13 \catcode`\`=13 +\gdef\monotoniko +{% + \catcode\lq\'=13 \catcode\lq\`=13 \catcode\lq\~=13 + \catcode\lq\<=13 \catcode\lq\>=13 \catcode\lq\|=13 + \chardef'=3 \chardef`=3 \chardef~=3 + \chardef<=64 \chardef>=64 \chardef|=64 +} +\gdef\plutoniko +{% + \catcode\lq\'=12 \catcode\lq\`=12 \catcode\lq\~=12 + \catcode\lq\<=12 \catcode\lq\>=12 \catcode\lq\|=12 +} +} + +%}}} accent +%{{{ define delims + +% Define #1 to be a "greek shift" in the way $ is a maths shift. +% Like $, #1 stands for either \begingreek or \endgreek as required. +% #1 must be a single token that is definable with \def -- either +% a control sequence or an (already) active character. + +\def\grdelimiter#1% +{ + \def#1{\begingreek \let#1=\endgreek} +} + +%}}} define delims + +\def\begingreek +{% + \begingroup + \catcode`\~=12 \catcode`\|=12 \catcode`\"=12 + \the\everygreek +} +\def\endgreek +{% + \endgroup +} + +%}}} macros for greek + +% Local variables: +% fold-folded-p: t +% tex-macros-p: t +% End: diff --git a/fonts/malvern/doc/magrman.fnt b/fonts/malvern/doc/magrman.fnt new file mode 100644 index 0000000000..80834050d8 --- /dev/null +++ b/fonts/malvern/doc/magrman.fnt @@ -0,0 +1,25 @@ +cmr12 +cmr9 +cmti12 +cmti9 +cmbx12 +cmbx9 +cmmi12 +cmmi9 +cmsy9 +cmtt12 +logo10 at 12pt +cmss10 scaled 1200 +cmbxti10 at 12pt +cmr10 +cmr7 +cmti10 +cmti7 +cmbx10 +cmbx7 +cmmi10 +cmmi7 +cmsy10 +cmsy7 +cmbxti10 at 10pt +cmtt10 diff --git a/fonts/malvern/doc/magrman.idx b/fonts/malvern/doc/magrman.idx new file mode 100644 index 0000000000..69e1c7422c --- /dev/null +++ b/fonts/malvern/doc/magrman.idx @@ -0,0 +1,6 @@ +\idx{Greek mode|idxunderline}{1} +\idx{lunate sigma|idxunderline}{1} +\idx{compound word mark|idxunderline}{2} +\idx{`}{2} +\idx{null glyph|idxunderline}{2} +\idx{`}{4} diff --git a/fonts/malvern/doc/magrman.tex b/fonts/malvern/doc/magrman.tex new file mode 100644 index 0000000000..2eba5b34f0 --- /dev/null +++ b/fonts/malvern/doc/magrman.tex @@ -0,0 +1,602 @@ +% magman.tex -- info about Malvern Greek. +%{{{ Malvern Greek manual +%{{{ preamble + +\input cmdoc +\input magrmac +\input pdcidx + +\font\notegr=ma55g9 +\font\bodygr=ma55g11 +\macappend\BODYtemplate{\f{gr}{ma55g}} +\bodyfonts + +\everygreek{\gr \baselineskip=14pt} + +\grdelimiter* + +\headline={\hfil\global\headline={\bodyfonts \hfil Typesetting Greek using + Malvern fonts\quad{\bf\folio}}} + +\def\thesecno +{% + \number\subsecno +} + +%{{{ font tables + +%% Code to typeset a font table -- lifted from my testfont.tex + +\newcount\tableN +\newcount\hexcount +\def\hexdigit#1{\ifcase#1\relax 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or + 8\or 9\or A\or B\or C\or D\or E\or F\fi} + +\def\ntablecr +{% + \cr + \noalign{\nointerlineskip} + \multispan2\hfill &\multispan{33}\hrulefill +} +\def\ntable +{ + \medskip + \begingroup \openup1\jot + \def\\{\char\tableN \global\advance\tableN 1} + \def\0##1{&\omit&\sevenrm##1} + \halign to \hsize + {% + \chartstrut\hss##\tabskip=0pt plus 10pt & + &\hss##\hss&##\vrule\cr + \lower 6.5pt\null + &\00\01\02\03\04\05\06\07\08\09\0A\0B\0C\0D\0E\0F + \ntablecr + \global\tableN=0 + \ntablelines + \crcr + } + \medbreak + \endgroup +} + +\def\ntablelines +{% + \ifnum\tableN<256 + \let\next\ntablecontinuation + \else + \let\next\relax + \fi + \next +} + +\newcount\ntabtmp + +\def\ntablecontinuation +{% + % Find out if none of this row are defined by making a horizontal + % list of all of them preceeded by a penalty of 1; if any of them + % are defined then \lastpenalty will be something other than 1: + \setbox0=\hbox{\penalty1 + \def~{\char\tableN \advance\tableN 1}% + ~~~~~~~~~~~~~~~~\global\ntabtmp=\lastpenalty}% + % Now set the row in the table iff ntabtmp # 1: + \ifnum\ntabtmp=1 + \global\advance\tableN 16 \let\next=\ntablelines + \else + \let\next=\ntablecontinuationcontinuation + \fi + \next +} + +\def\ntablecontinuationcontinuation +{% + \cr + \noalign{\nointerlineskip \penalty5000 } + & \hexcount=\tableN \divide\hexcount16 \sevenrm\hexdigit\hexcount + &&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\& + \ntablecr + \ntablelines +} + +\def\chartstrut{\lower 0.25\baselineskip \vbox to \baselineskip{}} + +%}}} font tables +%{{{ two-column quotations + +\def\twocolgr +{ + \smallskip + \setbox0=\vbox\bgroup + \hsize=\bodywd \advance\hsize-\colsep \divide\hsize by 2 + \begingreek \strut \ignorespaces +} +\def\endtwocolgr +{% + \par\endgreek \egroup + \moveleft\leftmargin\vbox{ + \hrule\smallskip + \rigidbalance{0}{2}{\ht\strutbox}{\bodywd}{\hfil} + \smallskip\hrule + } + +\smallbreak +} +%}}} two-column quotations +%}}} preamble +%{{{ bibliography + +\def\TB{{\it TUGboat}} + +\counta=0 +\newtoks\bibliography +\newcount\bibcount + +\def\FAQnote +{% + \par {\bf Note on FAQs}\quad An FAQ is an electronic document, posted + regularly to a USENET newsgroup, usually in the form of a list of + answers to frequently asked questions. Many FAQs are available on + the archive site |pit-manager.mit.edu| (alias |rtfm.mit.edu|) + [18.172.1.27] in the directory |pub/usenet/news.answers|. The + reference gives the name of the compiler, the title, the + last-modified date (in lieu of an edition or version number) and + name under which the FAQ is archived appears in parentheses. + \par +} + +\def\bibdef#1#2% +{ + \expcs\edef{cite#1}% + {% + \noexpand\docite\noexpcs{cite#1}\noexpcs{refer#1}% + } + \toks0={#2} + \expcs\edef{refer#1}{\noexpand\bibitem{\expcs\noexpand{cite#1}} + \the\toks0} +} +\def\docite#1#2% +{% + \global\advance\bibcount1 + \global\bibliography=\expandafter + {\the\bibliography #2}% + \global\edef#1% + {[\the\bibcount]}#1% +} + +\bibdef{Allen} +{ + W. Sidney Allen, {\it Vox Graeca: A Guide to Pronunciation of Classical + Greek}, 3rd Ed.\ (Cambridge University Press, 1987), + pp.\thinspace177--179. +} + +\bibdef{KD} +{ + K.~J. Dryllerakis (|kd@doc.ic.ac.uk|), {\it Typesetting Greek Texts with + Greek\TeX}, Greek\TeX~3.1 (also known as KDGreek) (CTAN + |fonts/greek/kd|). +} + +\bibdef{FAQ} +{ + Nikolaos Fotis (ed.), {\it soc.culture.greek} FAQ -- + Linguistics ({\tt greek-\penalty\exhyphenpenalty faq\slash + linguistics}, 1993/03/06). +} + +\bibdef{Yannis} +{ + Yannis Haralambous and Klaus Thull, Typesetting Modern Greek with 128 + Character Codes, \TB\/ 10 (1989), pp.\thinspace354--359 (CTAN + |fonts/greek/yannis|). +} + +\bibdef{Harts} +{ + Horace Hart, {\it Hart's Rules for Compositors and Readers at the + University Press, Oxford}, 39th Edition, revised (Oxford + University Press, 1989), pp.\thinspace111--116. +} + +\bibdef{Levy} +{ + Silvio Levy, Using Greek Fonts with \TeX, \TB\/ 9 (1988), + pp.\thinspace20--24 (CTAN |fonts/greek/levy|). +} + +\bibdef{COD} +{ + {\it The Concise Oxford Dictionary of Current English}, 8th Ed. + (Oxford University Press, 1990), p.\thinspace1453. +} + +\def\bibitem#1% +{% + \smallskip + \indent \llap{#1\hskip1pc}\ignorespaces +} + + +%}}} bibliography + +\leftline{\headingfonts Typesetting Greek using Malvern fonts} +\bigskip +\leftline{P. Damian Cugley} +\leftline{Oxford University Computing Laboratory} +\leftline{(|Damian.Cugley@comlab.ox.ac.uk|)} +\leftline{April 1993} +\bigskip + +\noindent + Malvern is a sanserif font family, implemented in \MF. This + document describes an early version of Malvern encoding~G (the Greek + alphabet). The Greek letters used to appear in Malvern~B, but I + decided to give them an encoding (code page?)\ of their own so that + there would be space for composite letters. + +\subsec{Using Malvern G} + + Because most Latin-alphabet languages require additional composite + letter glyphs to be properly typeset by \TeX, most Malvern fonts + will be used as the raw material for composite fonts. In contrast, + the Malvern Greek font can be used directly to typeset Greek, both + with the old accent-and-breathing systems and the newer (post-1974) + one-accent system. It follows the conventions of Silvio Levy's + original |gr| family \citeLevy\ and K.~J. Dryllerakis's Greek\TeX\ + (|kd| fonts) \citeKD. It is almost compatible with the reduced + Greek fonts (|rgr| and |mrgr| families) described by Yannis + Haralambous and Karl Thull \citeYannis. + +%{{{ typesetting + +\subsec{Macro file} + + The file |grhacks.tex| has some macros for setting texts in plain + \TeX. A future production release may instead work as an option or + extension of Greek\TeX, with the objective of making it possible to + switch an existing document to Malvern without much editing. + + Greek text is set within a \dfn{Greek mode}, delimited by macros + |\begingreek| and |\endgreek|. Each time Greek mode is entered, the + contents of the token register |\everygreek| is scanned first. + Since |grhacks| does {\it not} load a particular font by default, a + manuscript using |grhacks| will want to include an assignment like +\begin display + |\everygreek={\gr}|\cr + |\catcode`\*=\active \grdelimiter*| +\end display + where |\gr| has been bound to some Greek font or another such as + |ma55g12|. The macro |\grdelimiter| takes one parameter, an active + character (or control sequence) and makes that character into a + self-matching delimiter for Greek mode (like |$|--|$| works for + mathematics mode). Thus, `|*This is Greek*|' produces `*This is + Greek*'. + + +\subsec{The alphabet} + + The letters are transliterated as + follows: +\begin table \hfil#\hfil&&\enspace\hfil#\hfil\cr + \gr a&\gr b&\gr g&\gr d&\gr e&\gr z&\gr h&\gr j&\gr i&\gr k&\gr + l&\gr m&\gr n&\gr x&\gr o&\gr p&\gr r&\gr ss&\gr c&\gr t&\gr + u&\gr f&\gr q&\gr y&\gr w\cr + \tt a&\tt b&\tt g&\tt d&\tt e&\tt z&\tt h&\tt j&\tt i&\tt k&\tt + l&\tt m&\tt n&\tt x&\tt o&\tt p&\tt r&\tt s&\tt c&\tt t&\tt u&\tt + f&\tt q&\tt y&\tt w\cr +\noalign{\smallskip}% + \gr A&\gr B&\gr G&\gr D&\gr E&\gr Z&\gr H&\gr J&\gr I&\gr K&\gr + L&\gr M&\gr N&\gr X&\gr O&\gr P&\gr R&\gr S&\gr C&\gr T&\gr + U&\gr F&\gr Q&\gr Y&\gr W\cr + \tt A&\tt B&\tt G&\tt D&\tt E&\tt Z&\tt H&\tt J&\tt I&\tt K&\tt + L&\tt M&\tt N&\tt X&\tt O&\tt P&\tt R&\tt S&\tt C&\tt T&\tt U&\tt + F&\tt Q&\tt Y&\tt W\cr +\end table + The letter *C c* is \dfn{lunate sigma} (see below). + + A lower case sigma `*s@*' at the end of a word (or followed by + punctuation) is automatically changed to the final form `*s*' + through \TeX's ligature mechanism.\note{Occasionally \TeX's notion + of word boundaries causes the wrong glyph to appear. There are two + special invisible glyphs that can be used to control this in obscure + circumstances. The so-called \dfn{compound word mark} (or cwm) acts + as a word-boundary in the middle of a word. It has code~32, so + `|as^^`a|' produces `*as^^`a*', for example. The \dfn{null glyph} + is invisible, but, because it is not a boundary character, it can be + used to prevent a ligature with a following word boundary. It has + code 64, so `|as@|' produces `*as@*'.} + +\subsec{Composite letters} + + The marks that go above the letters are obtained with the + following characters, which go before the letter: +\begin table \gr#\hfil&\quad#\hfil&\quad #\hfil& \quad *#*\hfil\cr +\noalign{\hrule height 1pt \vskip1\jot}% + \omit Mark\hfil&\omit\quad Char\hfil& + Name&\omit\quad Name in \citeYannis\hfil\cr +\noalign{\vskip\jot \hrule \vskip\jot} + <@& |<|& asper (rough, = h)& dase'ia\cr + >@& |>|& lenis (smooth)& yil'h\cr + "@& |"| (double quote)& + diaeresis& dialutik'a\cr + '@& |'| (quote)& + acute accent& >oxe'ia\cr + `@& |`|& grave accent& bare'ia\cr + \char126 @& |~|& circumflex& perispwm'enh\cr +\noalign{\vskip1\jot \hrule height 1pt\smallskip}% +\end table + A breathing or diaeresis can be combined with an accent, thus + `|<~a|' for *<~a*, `|>'e|' for *>'e*. + + The vowels *a*, *h* and *w* may have an iota beneath them, called + `subscript': *a|*, *h|*, *w|*. These are produced with a vertical + bar `||||' after the letter in Greek mode: `|a|||' makes *a|*, + `|<a|||' makes `*<a|*', and so on. + + As an example: `*>en >arq~h| >~hn <o l'ogos*' is generated with `|>en + >arq~h|| >~hn <o l'ogos|'. + +% In old-style Greek, all vowels beginning a word require a breathing +% -- but *u* may only have an asper (rough). In diphthongs (*ai*, +% *ei*, *oi*, *ui*, *au*, *eu*, *hu*, *ou*, *wu*), breathings and +% accents stand over the second letter: *a<i*, *o>u*. Double *rr* +% used to be written *>r<r*. + +%\subsec{Apostrophe (sign of elision)} + +% The lenis is also used like an apostrophe, to mark the elision of +% vowels at the end of a word when the next word starts with a vowel. +% The Malvern-G fonts, like the Levy-derived fonts, also has a +% separate apostrophe glyph, which can be set with `|''|' (two quote +% characters) or `|'|' (one quote) at the end of a word. Thus you +% have a choice of `|d>|' or `|d'|' (*d>* or *d'*). + + +\subsec{Punctuation} + + Here's a table of correspondences for punctuation: +\begin table \hfil#\hfil&&\enspace\hfil#\hfil\cr + *.*&*,*&*;*&*:*&*!*&*?*&*''*&*((*&*))*\cr + |.|&|,|&|;|&|:|&|!|&|?|&|''|&|((|&|))|\cr +\end table + The apostrophe is also generated by a single single-quote at the end + of a word: `*d'*' can be generated by `|d'|'. There are also + digits, parentheses, brackets, hyphen, dashes, slash, per cent sign, + asterisk, plus and equals signs. + +\subsec{One-accent Greek} + + The easiest way to write modern Greek is simply to use |'| for the + accent and otherwise to use |\begingreek|--|\endgreek| as before: + `*en arq'h hn o l'ogos*' is generated with `|en arq'h hn o l'ogos|'. + + Malvern also has glyphs for a symmetrical accent (*\char3*) and + composite letters (such as *\char3 a*, *"\char3u*). The macro + |\monotoniko|\note{This macro is so named for compatibility with the + |rgr|/|mrgr| macros \citeYannis. It might usefully go in + |\everygreek|.} in Greek mode makes |'| an active character, + expanding to the symmetrical accent. Then `|En'w|' produces + `*En\char3w*'. In fact, the other accent characters |`| and |~| are + also made to substitute `*\char3*', and |<|, |>| and |||| expand to + the null glyph, so that a text with all the breathings and accents + and be hacked into almost-correct one-accent Greek.\note{Again, for + compatibility with the |rgr|/|mrgr| macros. Because monosyllables + should not have accents at all in one-accent Greek, a complete + conversion from old-style to new-style requires changes to the + manuscript anyway, so the usefulness of this feature is debatable!} + For example, `|>En~w|||' becomes `*\monotoniko >En~w|*'. + +\subsec{Variant glyphs} + + Sigma has a variant called lunate sigma, written *Cc*. These + letters can be obtained directly (produced by the character `|c|' in + the manuscript). So that a given text can be switched between the + two styles, there is also a macro |\grlunatesigma|, which redefines + `|s|' is as active character equivalent to `|c|'. Obviously this is + only useful when Greek mode is only used for plain texts, since it + prevents `|s|' from being used in control sequence names. + + Similarly, there are two ways to write lower case phi: *f* and + *\char92 * (`|f|' and glyph~92). There is no difference in meaning + between *f* and *\char92 *; the choice of one or the other is only + made on aesthetic grounds. The macro |\grvarphi| redefines `|f|' as + an active character equivalent to `*\char92 *', in effect replacing + *f* with *\char92 *. + + Normally these macros, if used, will go in |\everygreek|. + +%}}} typesetting +\iffalse +%{{{ background +\subsec{Background} + + This section is optional reading. + +\subsubsec{Development of the Levy-derived font families} + + Silvio Levy's |gr| fonts \citeLevy\ used the \TeX~2 ligature system + to make *s* become *s@* when followed by a letter, and had glyphs + for almost all the composite letters. + + Yannis Haralambous and Klaus Thull created a set of reduced + (128-glyph) fonts, for \TeX\ systems still unable to manage + 256-glyph fonts \citeYannis. These fonts (the |rgr| and |mrgr| + families) still used Levy's character programs. Because they could + not include glyphs for all the composite letters, many composite + letters had to be obtained with macros rather than ligatures. The + |mrgr| family is for new-style (one-accent) Greek. + + Finally K.~J. Dryllerakis's Greek\TeX\ package (also called KDGreek) + \citeKD\ uses the Levy character programs again, but takes advantage + of the new ligature features of \TeX~3 to make *s@* become *s* + (without needing compound glyphs for every combination of *s@* with + a letter). The fonts are given names starting with |kd|. + Greek\TeX\ also includes format files for plain \TeX\ and \LaTeX, + transliteration programs and other useful things. + +\subsubsec{Designing Greek letters for Malvern} + + My Malvern-G encoding is intended to be `ligature-compatible' with + Levy's and Dryllerakis's, meaning that `|<'a|||' will produce + `*<'a|*' in each of them, even though this is glyph~141 in + |grreg10|, 201 in |kdgr10| and some random number in |ma55g10|. The + punctuation characters have the same encoding. + + Designing a sanserif Greek lower case alphabet (*alfabet*?) is tricky + because the lower case letters have a very cursive style, as if + hand-drawn with a brush by a scribe in a hurry -- which is pretty + much the opposite of most sanserif styles. I~made sketches (on + paper) of Greek letters forced into the same sorts of shapes as + other Malvern letters, and the results were uniformly horrid. The + original idea of Malvern was to make a humanist/geometric hybrid, so + I tried approaching it from the from the humanist end this time. + +%}}} background +\fi +%{{{ references + +\subsec{References} + + Since I don't speak a word of Greek -- the only word I know is + *barbaroi* and I don't know how to spell it -- I have relied on + reading between the lines of the documentation for other systems for + typesetting Greek, including Hart's Rules \citeHarts. + + CTAN is the Comprehensive \TeX\ Archive Network, a collection of FTP + sites (such as |ftp.tex.ac.uk|, under directory |tex-archive|). + +\begingroup \parskip=0pt \parindent=0pt + \the\bibliography +\endgroup + +%}}} postamble +\vfill\eject +%{{{ samples + +\subsec{Examples of text in Malvern 55 and 56} + +\iffalse + This quotation is used by Haralambous and Thull \citeYannis\ as an + example of the old-style accent-and-breathing system: +%{{{ Popess Johanna + +\begin twocolgr + >En~w| <esp'eran tin`a >exantl'hsas t`a murol'ogi'a tou + >ekoim~ato <o Froum'entios >ep`i t~hs >'ammou t~hs paral'ias, + katab`as >ex o>uran~wn <o >ap'ostolos >eke~inos t~wn Sax'onwn + >'hnoixe di`a maqa'iras t`a st'hjh to~u koimwm'enou, + e>is'hgage to`us <iero`us dakt'ulous tou e>is t`hn >op`hn kai + >exag`wn t`hn kard`ian >eb'ujisen a>ut'hn e>is l'akkon pl'hrh + <'udatos, <'oper <hg'iasen prohgoum'enws. <H fl'egousa + >eke'inh kard'ia >'efrizen e>is t`o <'udwr <ws smap`is >ent`os + to~u thgan'iou, >afo~u d`e >ekr'uwsen, >'ejese p'alin a>ut`hn + <o <'agios e<is t`on t'opon ths ka`i kle'isas t`hn plhg`hn + >ep'estreyen e>is t`on >idik'on tou. + + >'Etuq'e pote, >anagn~wst'a mou, n`a >apokoimhj~h|s m`e + >anup'oforon b~hqa, koim'wmenos n`a <idr'wsh|s ka`i >exupn'hsas + n`a e<urej~h|s >iatreum'enos? >Agn~wn <'oti e>~isai + kal`a >ano'igeis mhqanik~ws t`o st'oma, <'ina plhr'wsh|s e>is + t`on >epikat'araton b~hqa t`on sun'hjh f'oron. >All`a + p'oshn a>isj'anesai qar'an, m`h e<ur'iskwn e>is t`on l'arugga + t`o >oqlhp`on jhr'ion! O<'utw <'ama >'hnoixe ka`i <o + Froum'entios to`us >ofjalmo'us, <htoim'asjn n`a prosf'erh| + e>is t`hn >aq'ariston >Iw'annan t`hn sun'hjh dakr'uwn + spond'hn, >all`a par`a p~asan prosdok'ian o<i >ofjalmo'i + tou e<ur'ejhsan xhro`i ka'i n`a progeumat'ish| m~allon >`h + n`a kla'ush| >h|sj'aneto >'orexin met`a polu'hmeron nhste'ian + <o kal`os Benedekt~inos. +\end twocolgr +\rightline{\csc{Emmanouil Ro\"{\i}dis}, `The Popess Johanna (1896)'} +\vskip 0pt plus \baselineskip + +%}}} Popess Johanna +\fi + + The following paragraph is set in 11-point Malvern~55 (11-point + Malvern has comprable x-height to 12-point Computer Modern). This + quotation is used as one of the examples in Levy's article + \citeLevy: +\begin twocolgr + >All' >ako'usontai, >enper e>~u dok~h|s l'egein. t'ode d'e sou + >ene'ohsa <'ama l'egontos, ka`i pr`os >emaut`on skop~w; e>i <'oti + m'alist'a me E>uj'ufrwn did'axeien, <ws o<i jeo`i <'apantes t`on + toio~uton j'anaton <hgo~untai >'adikon e>~inai, t'i m~allon >eg`w + mem'ajhka par' E>uj'ufronos, t'i pot' >est`in t`o <'osi'on te ka`i + t`o >an'osion? jeomis`es m`en g`ar to~uto t`o >'epgon, <ws + >'eoiken, e>'in >'an; >all`a g`ar o>u to'utw| >ef'anh >'arti + <wrism'ena t`o <'osion ka`i m'h; t`o g`ar jeomis`es >`on ka`i + jeofil`es >ef'anh. <wste to'utou m`en >af'ihm'i se, >~w E>uj'ufron; + e>i bo'ulei, p'antes a>ut`o <hge'isjwn jeo`i >'adikon ka`i p'antes + miso'untwn. >all' >~ara to~uto n~un >epanorj'wmeja >en t~w| l'ogw|, + <ws <`o m`en p'antes o<i jeo`i mis~wsin, >an'osi'on >estin, <`o d' + >`an fil~wsin, <`osion; <`o d' >`an o<i m`en fil~wsin, o<i d`e + mis~wsin, o>ud'etera >`h amf'otera? >~ar' o<'utw bo'ulei <hm~in + <wr'isjai n~un per`i to~u <os'iou ka`i to~u >anos'iou? +\end twocolgr + \rightline{Plato, `Euthyphro'} +\vskip 1\medskipamount plus \baselineskip + + + This quotation (similarly stolen) is in Malvern~56 and has + |\grvarphi| and |\grlunatesigma| in effect: + +\begin twocolgr \font\f=ma56g11 \f \grvarphi \grlunatesigma + T`h stigm`h to'uth ni'wjw p'oso bar'u ''nai t`o must'hrio t~hs + xomol'oghshs. <Ws t'wra, kane`is d`en x'erei p~ws p'erasa t`a du`o + qr'onia mou st`o <'Agion >'Oros. O<i f'iloi mou jarro~un p`ws p~hga + n`a d~w buzantin`a kon'ismata >`h >ap`o mustikop'ajeia n`a z'hsw + mi`a perasm'enh >epoq'h. Ka`i t'wra, n'a, ntr'epomai n`a mil'hsw. + + P~ws n`a t`o p~w? Jumo~umai <'ena >anoixi'atiko deilin'o, po`u + kat'ebaina t`on Ta"'ugeto, mi`a xafnik`h j'uella m`e k'uklwse kont`a + sto'us Pentaulo'us. T'oso fober`os >anemos'ifounas, po`u >'epesa + katag~hs gi`a n`a m`hn gkremist~w. O<i >astrap`es m' >'exwsan + <olo~uje ki >'ekleisa t`a m'atia m`hn tuflwj~w, ka`i kat'aqama, + p'istoma, per'imena. <'Olo t`o pan'uyhlo boun`o >'etreme, ka`i du`o + >'elata d'ipla mou tsak'isthkan >ap' t`h m'esh ka`i br'onthxan + q'amou. >'Eniwja t`o jei'afi to~u kerauno~u st`on >a'era, ka`i + xafnik`a x'espase <h mp'ora, >'epesen <o >'anemos, ka`i qontr'es, + jerm'es st'ales broq`h qt'uphsan t`a dentr`a ka`i t`o q~wma. T`o + jum'ari, <h jro'umpa, t`o fask'omhlo, t`o flisko'uni, qtuphm'ena + >ap' t`o ner'o, t'inaxan t`is murwdi'es tous ki <'olh <h g~hs + m'urise. +\end twocolgr +\rightline{\csc{Kazantzakis}, `Symposium'} +\vskip 0pt plus \baselineskip + +%}}} samples +\iffalse +%{{{ table + +*\ntable* +\smallskip \noindent + This is a working encoding, and will likely be different in future + versions. +%}}} table +\fi +%{{{ 24-pt sample + +\font\biggr=ma55g24 +\bigbreak +\moveleft\leftmargin \vbox{ \hsize=\bodywd +\hrule height 1pt \bigskip +\begingreek \biggr\baselineskip=30pt +\centerline{((ABGDEZHJIKLMNXOPRSCTUFQYW))} +\centerline{](abgdezhjiklmnxoprss^^`ctuf\char92 qyw)[} +\centerline{=0123456789---\%\char42 +/--''!,:;?.-} +\centerline{\char3 '@ `@ ~@ <@ <'@ <`@ <~@ >@ >'@ >`@ >~@ "@ "'@ "`@ "~@ + "\char3 @} +\endgreek +\medskip\hrule height 1pt +} +%}}} 24-pt sample + +\bye +%}}} Malvern Greek manual + +% Local variables: +% fill-prefix: "\t" +% fill-column: 76 +% fold-folded-p: t +% End: diff --git a/fonts/malvern/doc/magrman.toc b/fonts/malvern/doc/magrman.toc new file mode 100644 index 0000000000..2de8ced2e6 --- /dev/null +++ b/fonts/malvern/doc/magrman.toc @@ -0,0 +1,9 @@ +\TOCentrysubsec{1}{Using Malvern G}{1} +\TOCentrysubsec{2}{Macro file}{1} +\TOCentrysubsec{3}{The alphabet}{1} +\TOCentrysubsec{4}{Composite letters}{2} +\TOCentrysubsec{5}{Punctuation}{2} +\TOCentrysubsec{6}{One-accent Greek}{2} +\TOCentrysubsec{7}{Variant glyphs}{3} +\TOCentrysubsec{8}{References}{3} +\TOCentrysubsec{9}{Examples of text in Malvern 55 and 56}{4} diff --git a/fonts/malvern/doc/makeind.rc b/fonts/malvern/doc/makeind.rc new file mode 100644 index 0000000000..0f0004ff4d --- /dev/null +++ b/fonts/malvern/doc/makeind.rc @@ -0,0 +1,36 @@ +% style file for makeindex + +% INPUT + +keyword "\\idx" +level '/' +range_open '+' range_close '-' + +% OUTPUT + +preamble "" + +postamble "}\n" + +setpage_prefix "\n\\pageno=" setpage_suffix " " + +group_skip "}\n\n\\medskip\n" +lethead_prefix "\\leftline{\\bodybi " +lethead_suffix "}\n\\smallskip{" +lethead_flag -1 + +item_0 "}\n\n\t" +item_1 "}\n\n\t\\indent\\hskip1em\n" +item_2 "}\n\n\t\\indent\\hskip2em\n" +item_01 "}\n\n\t\\indent\\hskip1em\n" +item_x1 "\n\n\t\\indent\\hskip1em\n" +item_12 "}\n\n\t\\indent\\hskip2em\n" +item_x2 "\n\n\t\\indent\\hskip2em\n" + +delim_0 "\\ \\n{" +delim_1 "\\ \\n{" +delim_2 "\\ \\n{" +delim_n "}, \\n{" +delim_r "}--\\n{" + + diff --git a/fonts/malvern/doc/maman.aux b/fonts/malvern/doc/maman.aux new file mode 100644 index 0000000000..1011b0b479 --- /dev/null +++ b/fonts/malvern/doc/maman.aux @@ -0,0 +1,54 @@ +\expcs\def {xref-s-stylecodes}{\S $ \textfont 0=\font 2.2 $\ on page\penalty \@M \ $ \textfont 0=\font 4 $} +\expcs\def {xref-s-font-names}{\S $ \textfont 0=\font 2.3 $\ on page\penalty \@M \ $ \textfont 0=\font 4 $} +\expcs\def {xref-tab-encoding-codes}{\S $ \textfont 0=\font 2.3 $\ on page\penalty \@M \ $ \textfont 0=\font 5 $} +\expcs\def {xref-s-kb-names}{\S $ \textfont 0=\font 2.4 $\ on page\penalty \@M \ $ \textfont 0=\font 6 $} +\notedatum{1}{6} +\notedatum{2}{8} +\notedatum{3}{9} +\expcs\def {xref-s-LaTeX-fnames}{\S $ \textfont 0=\font 4.3 $\ on page\penalty \@M \ $ \textfont 0=\font 9 $} +\expcs\def {xref-s-maamac}{\S $ \textfont 0=\font 5 $\ on page\penalty \@M \ $ \textfont 0=\font 9 $} +\expcs\def {xref-s-ranging}{\S \kern .16667em $ \textfont 0=\font 5.4 $\ on page\penalty \@M \ $ \textfont 0=\font 11 $} +\notedatum{4}{12} +\expcs\def {xref-tab-charcodes}{\S $ \textfont 0=\font 6.1 $\ on page\penalty \@M \ $ \textfont 0=\font 12 $} +\expcs\def {xref-tab-charcodes-a}{\S $ \textfont 0=\font 6.2 $\ on page\penalty \@M \ $ \textfont 0=\font 12 $} +\expcs\def {xref-tab-charcodes}{Table\penalty \@M \ $ \textfont 0=\font 1 $\ on page\penalty \@M \ $ \textfont 0=\font 13 $} +\expcs\def {xref-tab-charcodes-b}{\S $ \textfont 0=\font 6.3 $\ on page\penalty \@M \ $ \textfont 0=\font 14 $} +\expcs\def {xref-tab-charcodes-c}{\S $ \textfont 0=\font 6.4 $\ on page\penalty \@M \ $ \textfont 0=\font 15 $} +\expcs\def {xref-tab-charcodes-g}{\S $ \textfont 0=\font 6.5 $\ on page\penalty \@M \ $ \textfont 0=\font 15 $} +\notedatum{5}{18} +\notedatum{6}{19} +\expcs\def {xref-s-fontinst}{\S $ \textfont 0=\font 10 $\ on page\penalty \@M \ $ \textfont 0=\font 23 $} +\expcs\def {xref-bib}{\S {$ \textfont 0=\font 12 $}\ on page\penalty \@M \ $ \textfont 0=\font 25 $} +\expcs\def{xref-PS}{\n {1}} +\expcs\def{xref-Berry}{\n {2}} +\expcs\def{xref-Berry2}{\n {3}} +\expcs\def{xref-Bien}{\n {4}} +\expcs\def{xref-KD}{\n {5}} +\expcs\def{xref-Cork}{\n {6}} +\expcs\def{xref-GPL}{\n {7}} +\expcs\def{xref-Hara}{\n {8}} +\expcs\def{xref-Hart's}{\n {9}} +\expcs\def{xref-Hart's13}{\n {10}} +\expcs\def{xref-Hart's30}{\n {11}} +\expcs\def{xref-Hart's62}{\n {12}} +\expcs\def{xref-Hart's102}{\n {13}} +\expcs\def{xref-Hart's120}{\n {14}} +\expcs\def{xref-Hart's135}{\n {15}} +\expcs\def{xref-fontinst}{\n {16}} +\expcs\def{xref-MFbook}{\n {17}} +\expcs\def{xref-MFApp.F}{\n {18}} +\expcs\def{xref-TeXbook}{\n {19}} +\expcs\def{xref-TeXchar}{\n {20}} +\expcs\def{xref-TeX9}{\n {21}} +\expcs\def{xref-TeXB4}{\n {22}} +\expcs\def{xref-TeXD1}{\n {23}} +\expcs\def{xref-TeXE}{\n {24}} +\expcs\def{xref-TeXF1}{\n {25}} +\expcs\def{xref-LaTeX}{\n {26}} +\expcs\def{xref-lfonts}{\n {27}} +\expcs\def{xref-NFSS}{\n {28}} +\expcs\def{xref-ODWE}{\n {29}} +\expcs\def{xref-ODWEacc}{\n {30}} +\expcs\def{xref-ODWEcap}{\n {31}} +\expcs\def{xref-Pei}{\n {32}} +\expcs\def{xref-nfss-malvern}{\n {33}} diff --git a/fonts/malvern/doc/maman.fnt b/fonts/malvern/doc/maman.fnt new file mode 100644 index 0000000000..0adfc6cb8a --- /dev/null +++ b/fonts/malvern/doc/maman.fnt @@ -0,0 +1,32 @@ +ma55a12 +ma55a9 +ma56a12 +ma56a9 +ma75a12 +ma75a9 +ma55a48 +ma75a18 +cmtt10 scaled 1440\relax +logo10 at 12pt +ma75a12 +ma55b12 +ma76a12 +ma57a12 +ma53a12 +ma55a10 +ma55a7 +ma56a10 +ma56a7 +ma75a10 +ma75a7 +cmmi7 +cmsy7 +ma55b10 +ma55g10 +ma55g12 +cmtt10 scaled 2074\relax +ma55c12 +ma55c12 +logosl10 at 12pt +cmtt10 scaled 1200\relax +ma75a72 diff --git a/fonts/malvern/doc/maman.idx b/fonts/malvern/doc/maman.idx new file mode 100644 index 0000000000..700b989d70 --- /dev/null +++ b/fonts/malvern/doc/maman.idx @@ -0,0 +1,121 @@ +\idx{Backus--Naur formalism}{2} +\idx{extended Backus--Naur Formalism}{2} +\idx{composite letter|idxunderline}{2} +\idx{base glyph|idxunderline}{2} +\idx{mark|idxunderline}{2} +\idx{quotation marks}{3} +\idx{apostrophe}{3} +\idx{inverted comma}{3} +\idx{comma}{3} +\idx{left quote}{3} +\idx{quote|idxunderline}{3} +\idx{backquote|idxunderline}{3} +\idx{guillemets}{3} +\idx{Univers}{4} +\idx{Frutiger, Adrien}{4} +\idx{Malvern}{4} +\idx{MS-DOS}{5} +\idx{font name@\<font name>}{5} +\idx{size@\<size>}{5} +\idx{MS-DOS}{5} +\idx{fontinst@{\tt fontinst}}{6} +\idx{note}{6} +\idx{LaTeX2e@\LaTeXe |+}{6} +\idx{NFSS\vn 2|+}{6} +\idx{NFSS}{6} +\idx{LaTeX3@\LaTeX \vn 3}{6} +\idx{T1fmv.fd@{\tt T1fmv.fd}}{7} +\idx{MakeTeXPK@{\tt MakeTeXPK}}{7} +\idx{Jeffrey, Alan}{7} +\idx{fontinst@{\tt fontinst}}{7} +\idx{LaTeX2e@\LaTeXe |-}{7} +\idx{NFSS\vn 2|-}{7} +\idx{LaTeX2.09@\LaTeX ~\n {2.09}|+}{7} +\idx{newfont@{\tt \char `\\newfont}}{7} +\idx{footnotesize@{\tt \char `\\footnotesize}}{7} +\idx{large@{\tt \char `\\large}}{7} +\idx{NFSS}{7} +\idx{Rahtz, Sebastian P.~Q.}{8} +\idx{malvern.sty@{\tt malvern.sty}}{8} +\idx{fmvnfss.sty@{\tt fmvnfss.sty}}{8} +\idx{fmv9nfss.sty@{\tt fmv9nfss.sty}}{8} +\idx{sc@{\tt \char `\\sc}}{8} +\idx{size-changing commands}{8} +\idx{getfont@{\tt \char 92\char 64 getfont}}{8} +\idx{normalsize@{\tt \char 92\char 64 normalsize}}{8} +\idx{getfont@{\tt \char 92\char 64 getfont}}{8} +\idx{fmvpltx.sty@{\tt fmvpltx.sty}}{9} +\idx{fmv9pltx.sty@{\tt fmv9pltx.sty}}{9} +\idx{sc@{\tt \char `\\sc}}{9} +\idx{Malvern~\n {1.0}}{9} +\idx{note}{9} +\idx{LaTeX2.09@\LaTeX ~\n {2.09}|-}{9} +\idx{maamac.tex@{\tt maamac.tex}|+}{9} +\idx{maamac.tex@{\tt maamac.tex}}{9} +\idx{note}{9} +\idx{malvern.tex@{\tt malvern.tex}}{9} +\idx{pounds@{\tt \char `\\pounds}}{10} +\idx{cents@{\tt \char `\\cents}}{10} +\idx{currency@{\tt \char `\\currency}}{10} +\idx{permille@{\tt \char `\\permille}}{10} +\idx{yen@{\tt \char `\\yen}}{10} +\idx{florin@{\tt \char `\\florin}}{10} +\idx{times@{\tt \char `\\times}}{10} +\idx{minus@{\tt \char `\\minus}}{10} +\idx{langle@{\tt \char `\\langle}}{10} +\idx{rangle@{\tt \char `\\rangle}}{10} +\idx{cdot@{\tt \char `\\cdot}}{10} +\idx{bullet@{\tt \char `\\bullet}}{10} +\idx{Box@{\tt \char `\\Box}}{10} +\idx{degrees@{\tt \char `\\degrees}}{10} +\idx{Mc@{\tt \char `\\Mc}}{10} +\idx{No@{\tt \char `\\No}}{10} +\idx{orda@{\tt \char `\\orda}}{10} +\idx{ordo@{\tt \char `\\ordo}}{10} +\idx{careof@{\tt \char `\\careof}}{10} +\idx{copyright@{\tt \char `\\copyright}}{10} +\idx{registered@{\tt \char `\\registered}}{10} +\idx{trademark@{\tt \char `\\trademark}}{10} +\idx{old style numerals}{11} +\idx{ranging numerals}{11} +\idx{csc@{\tt \char `\\csc}}{11} +\idx{sc@{\tt \char `\\sc}}{11} +\idx{mc@{\tt \char `\\mc}}{11} +\idx{caps@{\tt \char `\\caps}}{11} +\idx{lc@{\tt \char `\\lc}}{11} +\idx{sc@{\tt \char `\\sc}}{11} +\idx{smc@{\tt \char `\\smc}}{11} +\idx{cmcsc10@{\tt cmcsc10}}{11} +\idx{O@{\tt \char `\\O}}{11} +\idx{ae@{\tt \char `\\ae}}{11} +\idx{maamac.tex@{\tt maamac.tex}|-}{12} +\idx{encoding|idxunderline}{12} +\idx{character code|idxunderline}{12} +\idx{Cyrillic}{15} +\idx{wncy@{\tt wncy}}{15} +\idx{Greek}{15} +\idx{patch level|idxunderline}{18} +\idx{Wall, Larry}{18} +\idx{patch@{\tt patch}}{18} +\idx{mff@{\tt mff}}{18} +\idx{Jeffrey, Alan}{18} +\idx{fontinst@{\tt fontinst}}{18} +\idx{Berry, Karl}{19} +\idx{note}{19} +\idx{Greek}{20} +\idx{note}{20} +\idx{Jeffrey, Alan}{20} +\idx{fontinst@{\tt fontinst}}{20} +\idx{note}{21} +\idx{fontinst@{\tt fontinst}}{21} +\idx{Free Software Foundation}{23} +\idx{distribution}{23} +\idx{copying}{23} +\idx{mailing list}{23} +\idx{bugs}{23} +\idx{Jeffrey, Alan}{23} +\idx{foninst@{\tt foninst}}{23} +\idx{virtual fonts}{23} +\idx{Cork encoding}{23} +\idx{New Font Selection Scheme|see{NFSS}}{i} +\idx{Knuth, Donald E.}{ii} diff --git a/fonts/malvern/doc/maman.ilg b/fonts/malvern/doc/maman.ilg new file mode 100644 index 0000000000..d5d67d7e1b --- /dev/null +++ b/fonts/malvern/doc/maman.ilg @@ -0,0 +1,7 @@ +This is makeindex, portable version 2.4 [20-Mar-88]. +Scanning style file makeind.rc........................done (24 attributes redefined, 0 ignored). +Scanning input file maman.idx....done (121 entries accepted, 0 rejected). +Sorting entries....done (900 comparisons). +Generating output file maman.ind....done (284 lines written, 0 warnings). +Output written in maman.ind. +Transcript written in maman.ilg. diff --git a/fonts/malvern/doc/maman.ind b/fonts/malvern/doc/maman.ind new file mode 100644 index 0000000000..69be61876c --- /dev/null +++ b/fonts/malvern/doc/maman.ind @@ -0,0 +1,284 @@ +\leftline{\bodybi a} +\smallskip{} + + {\tt \char `\\ae}\ \n{11} + + apostrophe\ \n{3} + +\medskip +\leftline{\bodybi b} +\smallskip{} + + backquote\ \n{\idxunderline{3}} + + Backus--Naur formalism\ \n{2} + + base glyph\ \n{\idxunderline{2}} + + Berry, Karl\ \n{19} + + {\tt \char `\\Box}\ \n{10} + + bugs\ \n{23} + + {\tt \char `\\bullet}\ \n{10} + +\medskip +\leftline{\bodybi c} +\smallskip{} + + {\tt \char `\\caps}\ \n{11} + + {\tt \char `\\careof}\ \n{10} + + {\tt \char `\\cdot}\ \n{10} + + {\tt \char `\\cents}\ \n{10} + + character code\ \n{\idxunderline{12}} + + {\tt cmcsc10}\ \n{11} + + comma\ \n{3} + + composite letter\ \n{\idxunderline{2}} + + copying\ \n{23} + + {\tt \char `\\copyright}\ \n{10} + + Cork encoding\ \n{23} + + {\tt \char `\\csc}\ \n{11} + + {\tt \char `\\currency}\ \n{10} + + Cyrillic\ \n{15} + +\medskip +\leftline{\bodybi d} +\smallskip{} + + {\tt \char `\\degrees}\ \n{10} + + distribution\ \n{23} + +\medskip +\leftline{\bodybi e} +\smallskip{} + + encoding\ \n{\idxunderline{12}} + + extended Backus--Naur Formalism\ \n{2} + +\medskip +\leftline{\bodybi f} +\smallskip{} + + {\tt \char `\\florin}\ \n{10} + + {\tt fmv9nfss.sty}\ \n{8} + + {\tt fmv9pltx.sty}\ \n{9} + + {\tt fmvnfss.sty}\ \n{8} + + {\tt fmvpltx.sty}\ \n{9} + + {\tt foninst}\ \n{23} + + {\tt fontinst}\ \n{6}, \n{7}, \n{18}, \n{20}, \n{21} + + \<font name>\ \n{5} + + {\tt \char `\\footnotesize}\ \n{7} + + Free Software Foundation\ \n{23} + + Frutiger, Adrien\ \n{4} + +\medskip +\leftline{\bodybi g} +\smallskip{} + + {\tt \char 92\char 64 getfont}\ \n{8} + + Greek\ \n{15}, \n{20} + + guillemets\ \n{3} + +\medskip +\leftline{\bodybi i} +\smallskip{} + + inverted comma\ \n{3} + +\medskip +\leftline{\bodybi j} +\smallskip{} + + Jeffrey, Alan\ \n{7}, \n{18}, \n{20}, \n{23} + +\medskip +\leftline{\bodybi k} +\smallskip{} + + Knuth, Donald E.\ \n{ii} + +\medskip +\leftline{\bodybi l} +\smallskip{} + + {\tt \char `\\langle}\ \n{10} + + {\tt \char `\\large}\ \n{7} + + \LaTeX ~\n {2.09}\ \n{7}--\n{9} + + \LaTeXe \ \n{6}--\n{7} + + \LaTeX \vn 3\ \n{6} + + {\tt \char `\\lc}\ \n{11} + + left quote\ \n{3} + +\medskip +\leftline{\bodybi m} +\smallskip{} + + {\tt maamac.tex}\ \n{9}--\n{12} + + mailing list\ \n{23} + + {\tt MakeTeXPK}\ \n{7} + + Malvern\ \n{4} + + {\tt malvern.sty}\ \n{8} + + {\tt malvern.tex}\ \n{9} + + Malvern~\n {1.0}\ \n{9} + + mark\ \n{\idxunderline{2}} + + {\tt \char `\\Mc}\ \n{10} + + {\tt \char `\\mc}\ \n{11} + + {\tt mff}\ \n{18} + + {\tt \char `\\minus}\ \n{10} + + MS-DOS\ \n{5} + +\medskip +\leftline{\bodybi n} +\smallskip{} + + {\tt \char `\\newfont}\ \n{7} + + New Font Selection Scheme\ \n{\see{NFSS}{i}} + + NFSS\ \n{6}, \n{7} + + NFSS\vn 2\ \n{6}--\n{7} + + {\tt \char `\\No}\ \n{10} + + {\tt \char 92\char 64 normalsize}\ \n{8} + + note\ \n{6}, \n{9}, \n{19}, \n{20}, \n{21} + +\medskip +\leftline{\bodybi o} +\smallskip{} + + {\tt \char `\\O}\ \n{11} + + old style numerals\ \n{11} + + {\tt \char `\\orda}\ \n{10} + + {\tt \char `\\ordo}\ \n{10} + +\medskip +\leftline{\bodybi p} +\smallskip{} + + {\tt patch}\ \n{18} + + patch level\ \n{\idxunderline{18}} + + {\tt \char `\\permille}\ \n{10} + + {\tt \char `\\pounds}\ \n{10} + +\medskip +\leftline{\bodybi q} +\smallskip{} + + quotation marks\ \n{3} + + quote\ \n{\idxunderline{3}} + +\medskip +\leftline{\bodybi r} +\smallskip{} + + Rahtz, Sebastian P.~Q.\ \n{8} + + ranging numerals\ \n{11} + + {\tt \char `\\rangle}\ \n{10} + + {\tt \char `\\registered}\ \n{10} + +\medskip +\leftline{\bodybi s} +\smallskip{} + + {\tt \char `\\sc}\ \n{8}, \n{9}, \n{11} + + \<size>\ \n{5} + + size-changing commands\ \n{8} + + {\tt \char `\\smc}\ \n{11} + +\medskip +\leftline{\bodybi t} +\smallskip{} + + {\tt T1fmv.fd}\ \n{7} + + {\tt \char `\\times}\ \n{10} + + {\tt \char `\\trademark}\ \n{10} + +\medskip +\leftline{\bodybi u} +\smallskip{} + + Univers\ \n{4} + +\medskip +\leftline{\bodybi v} +\smallskip{} + + virtual fonts\ \n{23} + +\medskip +\leftline{\bodybi w} +\smallskip{} + + Wall, Larry\ \n{18} + + {\tt wncy}\ \n{15} + +\medskip +\leftline{\bodybi y} +\smallskip{} + + {\tt \char `\\yen}\ \n{10} diff --git a/fonts/malvern/doc/maman.tex b/fonts/malvern/doc/maman.tex new file mode 100644 index 0000000000..7a9c7c653d --- /dev/null +++ b/fonts/malvern/doc/maman.tex @@ -0,0 +1,3246 @@ +% maman.tex -- Top level of Malvern documentation +% Copyright 1994 P. Damian Cugley + +%%% @TeX-document { +%%% filename = "maman.tex", +%%% version = "X", +%%% date = "pdc 1994.07.20", +%%% package = "Malvern 1.2", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "Malvern, METAFONT, font, typefont, TeX", +%%% supported = "Maybe", +%%% abstract = "Character programs for the Malvern +%%% font family.", +%%% dependencies = "ma55doc.tex, pdc*.tex, maamac.tex, texnical.tex, +%%% mabib.tex, and many Malvern fonts", +%%% } + +% This software is available freely but without warranty. +% See the file 0copying.txt for details. + +%{{{ maman.tex +%{{{ Preamble + +%**start of header + +\input ma55doc +\input pdcidx +\input pdcdcap + +%{{{ fonts + +\twosidedfalse % change to TRUE for book-style printing, FALSE for 1-sided +\newif\ifPS \PSfalse % change to TRUE iff have PostScript fonts +\newif\iflong \longfalse % chnage to TRUE if you want as longer manual + +\newfam\cpfam \newfam\xpfam \newfam\rmbfam \newfam\rmcfam \newfam\grfam +\newfam\rmxfam \newfam\rmsfam \newfam\cyfam +\def\extrafontsmap{\f{rmb}{ma55b}\f{rmc}{ma55c}% + \@\f{rmx}{fmvmq10}\@\f{rms}{fmvm10}% + \f{cp}{ma57a}\f{xp}{ma53a}\f{gr}{ma55g}\f{cy}{ma55c}} +\xfontset{tiny}\extrafontsmap{7} +\xfontset{small}\extrafontsmap{9} +\xfontset{note}\extrafontsmap{10} +\xfontset{body}\extrafontsmap{12} +\def\\{\macappend\BODYtemplate} \expandafter\\\expandafter{\extrafontsmap} +\bodyfonts +%}}} fonts +%{{{ customize footnotes & environments + +\def\footnotetextmark#1{{\rmb#1}} +\def\footnotenotemark#1{{\rmb#1}} +\def\TOCentrysubsubsec#1#2#3{} + +\def\n#1{$ \textfont0=\font #1 $} +\mathcode`\.="70AE % make "." in maths mode centred dot + +% In the index, references are enclosed in $...$, so +% we have to change the "encapsulation" macros: +\def\idxunderline#1{\underline{#1}} +\def\see#1#2{$ {\rmb \char1 } #1 $} + +%%%% \everylines={\smallfonts} + +\everybnf={\def\>{{\rmb\char1 }}\def\\{{\rmb\char124 }}} + +\def\notepar +{ + \smallskip + \index{note} + \begingroup \it + \setbox\parbox=\hbox{\it note} +} +\def\endnotepar +{ + \smallbreak + \endgroup +} + +\def\example +{ + \penalty\predisplaypenalty + \smallskip \parskip=0pt + \obeylines % every line is indented; blank lines ignored + \the\everylines + \let\end=\linesend +} +\def\endexample +{ + \smallbreak \global\noindenttrue +} +%}}} environment tweaking +%{{{ full-page Part headings + +% if in long mode, part headings omitted. +\def\BIGmap{\f{rm}{ma55a}\@\f{mf}{logo10}} +\fontset{big}\BIGmap{48}{56pt}{big}{big} +\ldfont\hugerm{ma75a72} + +\def\part#1% +{% +\iflong + \advance\partno1 + \mark{{\thesecno}{\thesecno}} + \vfill\eject + \iflong \line{} \vfill \fi + \begingroup + \parskip=0pt \parindent=0pt \hyphenpenalty=10000 + \bigfonts + \rightskip=0pt plus 2em + \iflong + {\hugerm \thepartno}\bigskip + \else + \noindent\llap{\thepartno\enspace}% + \fi + #1 \par + \TOCwrite\TOCentrypart{\thepartno}{#1} + \counta=\secno \advance\counta1 + \mark{{\n{\the\counta}}{\n{\the\counta}}} + \iflong \headline={\hfil} \footline={\hfil} \eject \fi + \endgroup +\fi +} +%}}} full-page part headings +%{{{ symbol tables + +\def\symtabrule#1% +{% + \nointerlineskip + \moveleft\leftmargin \hbox + {% + \vrule height #1 width \dimen0 depth 0pt + }% + \nointerlineskip +} + +\def\symtab +{% + \noindent$$ % matching $$ is in endsymtab + \def\dag{{\rm\char170 }} + \let\\=\symtabentry \counta=0 + \openup1\jot + \dimen0\hsize \advance\dimen0\leftmargin + \halign to \hsize\bgroup\hskip-\leftmargin + \hfil##\unskip\hfil \tabskip=0pt plus 1em minus 0.5em + &\quad\tt##\unskip\hfil + &&\qquad\hfil##\unskip\hfil&\quad\tt##\unskip\hfil\cr + \noalign{\symtabrule{1pt}\medskip}% +} +\def\endsymtab +{% + \crcr + \noalign{\nobreak\medskip \symtabrule{0.5pt}}% + \egroup$$ %% matches $$ in above +} + +\def\symtabentry#1|#2|% +{% + #1& + \def\tmp{#2}\expandafter\stripMacro\meaning\tmp + \global\advance\counta1 + \ifnum\counta=3 + \global\counta=0 + \def\next{\cr}% + \else + \def\next{&}% + \fi + \next +} + +\def\stripMacro#1:->{} + +%}}} symbol tables +%{{{ font tables + +%% Code to typeset a font table -- lifted from my testfont.tex + +\newcount\tableN +\newcount\hexcount +\def\hexdigit#1{\ifcase#1\relax 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or + 8\or 9\or A\or B\or C\or D\or E\or F\fi} + +\def\ntablecr +{% + \cr + \noalign{\nointerlineskip} + \multispan2\hfill &\multispan{33}\hrulefill +} +\def\ntable +{ + \medskip + \begingroup \openup1\jot + \def\\{\char\tableN \global\advance\tableN 1} + \def\0##1{&\omit&\sevenrm##1} + \halign to \hsize + {% + \chartstrut\hss##\tabskip=0pt plus 10pt & + &\hss##\hss&##\vrule\cr + \lower 6.5pt\null + &\00\01\02\03\04\05\06\07\08\09\0A\0B\0C\0D\0E\0F + \ntablecr + \global\tableN=0 + \ntablelines + \crcr + } + \medbreak + \endgroup +} + +\def\ntablelines +{% + \ifnum\tableN<256 + \let\next\ntablecontinuation + \else + \let\next\relax + \fi + \next +} + +\newcount\ntabtmp + +\def\ntablecontinuation +{% + % Find out if none of this row are defined by making a horizontal + % list of all of them preceeded by a penalty of 1; if any of them + % are defined then \lastpenalty will be something other than 1: + \setbox0=\hbox{\penalty1 + \def~{\char\tableN \advance\tableN 1}% + ~~~~~~~~~~~~~~~~\global\ntabtmp=\lastpenalty}% + % Now set the row in the table iff ntabtmp # 1: + \ifnum\ntabtmp=1 + \global\advance\tableN 16 \let\next=\ntablelines + \else + \let\next=\ntablecontinuationcontinuation + \fi + \next +} + +\def\ntablecontinuationcontinuation +{% + \cr + \noalign{\nointerlineskip \penalty5000 } + & \hexcount=\tableN \divide\hexcount16 \sevenrm\hexdigit\hexcount + &&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\& + \ntablecr + \ntablelines +} + +\def\chartstrut{\lower 0.25\baselineskip \vbox to \baselineskip{}} + +%}}} font tables +%{{{ aux file +%% +%% Hacks using the ".aux" file to store information between runs +%% +%% This allows cross-references and per-page footnotes. +%% Normally I don't bother if a document is short enough not to need +%% cross-references or an index. +%% +%% Often TeX must be run twice to get the Xrefs sorted out :-( +%% + +%{{{ xrefs + +% Cross-refernces require two passes; one to write the xref +% to the .aux file with \xreflabel, and one to use the resulting \def. +% A footnote to the effect that a ref has been omitted is generated. +% Perhaps this is not a great idea. + +\def\xref#1% +{% + \expcs\ifx{xref-#1}\relax + \message{Warning: xref (#1) not known; you will need to TeX + this file again}% + <<{#1}>>% + \footnote{{\rm\dag}}{Cross-references in this document are + produced automatically. The values of Xrefs are written + into a file called \jobname.aux, which is read at the start of + the next run of \TeX\ on this file. Unknown Xrefs are replaced with the tag + name used within the document, enclosed in guillemets.}% + \gdef\xref##1{\expcs\ifx{xref-##1}\relax <<{##1}>>% + \else\csname xref-##1\endcsname\fi}% + \else + \csname xref-#1\endcsname + \fi +} + +% #1 -- string of characters -- internal label for this xref +% #2 -- TeX text -- what is produced by \xref{#1} on subsequent runs. +\def\xreflabel#1#2% +{% + \edef\tmp{\string\expcs\def{xref-#1}{#2\ on page~\n{\noexpand\folio}}}% + \write\auxfile\expandafter{\tmp}% +} + +\def\rcite#1{{\xref{#1}}} % direct reference +\def\cite#1{[{\xref{#1}\/}]} % parenthetically +\def\ncite#1#2{[{\xref{#1}\/}, #2]} % with a note + +\def\lcite#1% #1 is \\-list macro of cites! +{% + \def\tmplist{#1}% + \lop\tmp\tmplist + [{\xref\tmp\def\\##1{, \xref{##1}}\tmplist}]% +} + +%}}} +%{{{ footnotes -- numbered within pages! + +% Data accumulated during the previous TeX run is used to +% number footnotes consecutively within pages. (Obviously +% this fails when footnotes changed -- but the same applies to +% xrefs anyway.) + +% This is done by keeping two numbers per footnote -- the reference +% number (increases throughout the document, and is used internally) +% and the mark number (used in the completed document). + +% Before the first footnote on a given page, the mark number is reset to 0. +% This can't be done by simply assigning it during the output routine +% because TeX might have set the footnote on the next page just before +% shipping out the current one. Therefore I keep a list -- call it xs +% -- of footnotes that were the 1st note on a page during the previous +% run. Thus xs will be an increasing list starting with 1 (because the +% 1st footnote in a file is automatically the first on a page!) + +% Then the algorithm for each note is to increment the reference +% number, and check it against head(xs); if it is equal then set the +% mark number to 1 and xs := tail(xs). Otherwise, it is less than head(xs) +% hence on the same page as previously, so increment the mark number. + +% For efficiency (ha!) xs is represented by \notelisthead (a countdef +% name, set to head(xs)), and \notelist (a list macro, set to tail(xs)). + +\def\notelist{} % set by reading .aux file +\newcount\notelisthead + +\newcount\notemarkcount +\newcount\noterefcount + +\def\note % start a footnote +{% + \global\advance\noterefcount1 + \ifnum\noterefcount=\notelisthead + \ifx\notelist\empty + \global\notelisthead=10000 + \else + \glop\tmp\notelist + \global\notelisthead=\tmp + \fi + \notemarkcount=0 + \fi + \global\advance\notemarkcount1 + \edef\tmp{\string\notedatum{\the\noterefcount}{\noexpand\folio}}% + \write\auxfile\expandafter{\tmp}% + \footnote{\number\notemarkcount}% +} + + +% The data in the .aux file is (reference number, folio) pairs +% This is converted into a list of reference numbers for which +% the folio is different from the preceeding one, stored in macro +% \notedatumlastpage. + +\def\notedatumlastpage{--!--} + +\def\notedatum#1#2% +{ + \def\tmp{#2} + \ifx\notedatumlastpage\tmp \else + \gappend\notelist{#1} + \gdef\notedatumlastpage{#2} + \fi +} + +%}}} footnotes + +\catcode`@=11 +\inputifexists{\jobname.aux} +\catcode`@=12 +\newwrite\auxfile \openout\auxfile=\jobname.aux + +\ifx\notelist\empty + \notelisthead=10000 % No footnote data +\else + \lop\tmp\notelist \notelisthead=\tmp % set up notelisthead +\fi +%}}} aux file +%{{{ abbrevs + +\def\url#1#2#3#4{(\urlnoparens{#1}{#2}{#3}{#4})} +\def\urlnoparens#1#2#3#4% +{% + URL {\tt#1:\allowbreak + //#2/\allowbreak + #3/\allowbreak + #4}% +} + +\newif\ifkbnames + +% Captions for \topins items +\newcount\tablecount +\def\caption#1{\global\advance\tablecount1 + \medskip\noindent {\bf Table~\n{\the\tablecount}}\quad #1\par} + +\def\cmrname#1{{\tt\lowercase{#1}}} + +\def\ISO#1{ISO~\n{#1}} + +% Use \vn{N} for version number after `\LaTeX' or `NFSS': \LaTeX\vn2e +% This is because they prefer no space between name and version ID +% whereas I think there ought to be one. +\def\vn{~\n} +\def\LaTeXe{\LaTeX\vn2e\note{Note that `\LaTeX\thinspace\n2\lower0.5ex\hbox{\gr + e}' and `\LaTeX\vn2e' are the same thing. The lowered `{\gr e}' + is merely an excessively fancy way of saying + `e'.}\global\def\LaTeXe{\LaTeX\vn2e}} + +\def\texchar#1{\hbox{`{\tt#1}'}} +\def\oct#1{\hbox{\showmark\'$\it#1$}} +\def\hex#1{\hbox{\showmark\H\tt#1}} + +\def\TUGboat{{\it TUGboat}} + +\def\frac#1/#2% +{% + {\rmb\lowercase{#1}/\uppercase{#2}}% +} + +\def\showmark#1% #1 is an \accent command +{\hbox to 0.5em{% + \def\typeImark##1{\char##1\relax}% + \def\typeIImark##1{\char##1\relax}% + \hss #1{}\hss +}} + + +\def\marginchar#1% +{% + \vadjust + { + \moveleft\leftmargin \vbox to 0pt + { + \vss + \hbox to \leftmargin{\bigrm \hss#1\hss\hskip1pc}% + } + }% +} + +%% Put this LAST!! +\active\" \append\verbatimplains\" +\def"#1"{\hbox{\it#1\/}} + + +%}}} abbrevs + +\def\package{Malvern~\n{1.2}} +\def\ttpackage{Malvern-1.2} + +%**end of header + +%}}} preamble +%{{{ Introduction +%{{{ demo + +\vfill\eject +\begingroup \def\line#1{\hbox to \hsize{\kern-\leftmargin #1}} +\bigrm \baselineskip=52pt plus 1pt +\line{A\A\AE BCD\DH E\E FG\hfil.,:;`',,``''} +\line{HIJKL\L MN\NG O\O\OE\hfil?`!`!?} +\line{PQRST\TH UV\hfil a\a\ae bcd\dh\vd} +\line{WXYZ\hfil e\e f\/ff\/fi\/fl\/ffi\/fflgh\h i\i} +\line{-\/-->>\hfil j\j kl\l\vl mn\ng o\o\oe pqrs\ss} +\line{\copyright\registered\hfil <<--- t\vt\th uvwxy\&z} +\line{\rbrace\rbrack\char41 \rangle\hfil + >\degrees\char42 \trademark\Box \careof \char152\char153 + \char155 < + \hfil \langle\char40 \lbrack\lbrace} +\line{\spaceskip=0pt plus 1fil + \dag\ \ddag\ \P{}\ \S{}\ @\ \#\ \$\ \%\ \&\ \cents\ \pounds\ + \currency\ \permille\ \yen\ \florin} +\line{123456\hfil\cdot/+=\times\char175\bullet\hfil\uppercase{1234}} +\line{7890 \hfil\uppercase{567890}} + +\vskip-\prevdepth +\nointerlineskip +\vbox to 0pt +{ + \vss + \centerline{\headingrm 48-pt Malvern 55} +} + +\headline={\hfil} + +\eject +\endgroup + +%}}} demo.tex + +\part{Introduction} + +\iflong +%{{{ about TeX and LaTeX + +\section{About \TeX\ and \LaTeX} + +\subsec{How to pronounce `\TeX'} + + The "X" in "\TeX" is intended to stand for a Greek letter chi + ({\gr Qq}), which is like the "ch" in Scottish "loch" or German + "ach", and is usually pronounced `k' by people whose languages + do not include that sound. Therefore `\TeX' should be + pronounced either `te"ch"' or simply `teck'. It is *not* + pronounced `tecks'. + + Moreover, the lowering of the "E" in "\TeX" is intended to + remind us that it stands for epsilon ({\gr Ee}). When it is not + possible to print the "E" lowered, \TeX\ should be referred to + as `TeX' (but not `Tex' or `TEX'). + + ^^{Lamport, Leslie} Lamport suggests that "\LaTeX" might be + pronounced `lay-\TeX', `lah-\TeX', or even `lay-teks'! On + systems without the capability to exactly reproduce his logo you + might try `L\kern-0.2em\raise 0.5ex\hbox{a}\TeX', `La\TeX', or + `LaTeX'. + +\subsec{\TeX} + + \TeX\ is a powerful and flexible typestting program. It was + devised by ^^{Knuth, Donald E.} Donald~E.\ Knuth with the + intention of producing with a computer typeset text (including + mathematics and complex tables) as good as that of a + professionally-produced book. \TeX\ goes to extraordinary + lengths to produce optimal line-breaks and correctly aligned and + spaced mathematics, in a way in which no DTP program currently + does. Because \TeX\ is a free program---that is, anyone can get + a copy of the |WEB| code and create a version that runs on their + computer---and uses plain text files, it is very widely used for + producing documents and exchanging them between different + computer systems, especially those containing a lot of + mathematical notation. + + Knuth describes \TeX\ in {\it The \TeX book}~\cite{TeXbook}. + While this manual lacks the three-level section numbering that + computer users are accustomed to, it does describe everything + there is to know about \TeX, from writing simple manuscripts to + designing macros and producing new formats. + + \TeX\ was designed to be used on a variety of different systems, + at a time when the pictorial user-interfaces popular today were + still rare. Therefore \TeX\ is entirely text-based: the user + feeds \TeX\ a manuscript with typesetting commands embedded in + it, produced with a normal text editor. \TeX\ operates in a + manner similar to a compiler, converting the textual + representation of the document into a compact format called DVI + (from `device-independent'), analogous to machine code. The + file of DVI information is printed using a separate + printer-driver program. + +\subsec{\LaTeX} + + \LaTeX\ is a front-end to \TeX, written in \TeX's own macro + language. It is often used in an attempt to evade the full + complexity of operating with \TeX. Strictly speaking, \LaTeX\ + is a \TeX\ \dfn{format}, that is, a package of \TeX\ macros + compiled into a compact form. + + As the first macro package to offer facilities for automated + sectioning, bibliography, and table-of-contents generation, + \LaTeX\ has become a very popular way of producing technical + documents. + + The standard introduction to \LaTeX\ is {\it\LaTeX: A Document + Preparation System}~\cite{LaTeX} by the designer of \LaTeX, + ^^{Lamport, Leslie} Leslie Lamport. This book includes a + summary of the \LaTeX\ macros, but stops short of describing how + to go about augmenting \LaTeX's facilities with new styles and + style options. + + At the time of writing, two new versions of \LaTeX\ are under + development. \LaTeX\vn3 will be a complete rewrite; in the + meantime, \LaTeXe\ will be released as a new standard \LaTeX. + +\subsec{Fonts for \TeX} + + The fonts used with \TeX\ documents are described in two parts. + The first part, the font metrics (called the TFM file), is used + by \TeX\ itself when generating the DVI file. The second + describes how the characters are drawn by the printer; it is in + a format that depends on the particular font, driver and + printer. Common formats for the second part of a font + description are GF (`generic fonts' produced by \MF), PK + (produced from GF files and used by many printer drivers), VF + (composite fonts, that is, fonts formed by combining several + other fonts), and \PS\ types~$1$ or $3$ (used on \PS\ printers). + + + Normally, computer fonts are created from designs drawn on paper + at a large size (a cap-height of $100\,\rm mm$, say) and then + the outlines of the letters are scanned in by locating points + along the curves with a probe (or by scanning the shapes and + having a program calculate the outlines from the resulting + bitmaps). Normally by the time the font is being scanned, all + the design decisions have been taken and the role of the + computer operators is merely to produce a faithful rendering in + the correct format. + + \MF\ is a program which converts outlines to bitmaps and creates + GF files (which contain a bitmap for each glyph). The outlines + are described using \MF's own programming language, with a + \dfn{character program} for each letter. Traditionally \MF\ + font design delays some aesthetic decisions until well into the + programming stage---in Knuth's example ("\MF\/book", Ch.~$5$), + sixteen trial letters "I" are generated with different stem + widths so that they can be compared against a sample letter "O". + + \MF\ programs can be arbitrarily complex (although the peverse + nature of the \MF\ language ensures that any attempt to be too + clever is severely punished). A given program can be used to + generate different fonts---light and boldface, for example. + Because \MF\ programs know what device the font is being + generated for, they can include code intended to make the font + digitize well (that is, ensure that the bitmaps resemble the + original intention of the designer even on low-resolution + devices). The practical upshot of this is that the facilities + of the latest fancy formats for other systems (`multiple + masters', `intelligent scaling', `hints') were available in \MF\ + systems years ago, but the programming skill required to use + them prevented them from being widely used. + +%}}} about TeX and LaTeX +\fi +%{{{ Nomenclature + +\section{Conventions used in this handbook} + + A distinctive font will be used for examples of literal text + such as commands to the computer and the contents and names of + text files: +\begin example + |ABCDEFGHIJKLMNOPQRSTUVWXYZ| + |abcdefghijklmnopqrstuvwxyz| + |0123456789"#$%&@*+-=,.;:?!| + |()<>[]{}`'\||/_^~| +\end example + Italic letters are used for the names of some \MF\ variables, + for metasyntactic variables, for words mentioned in sentences + (such as the word "word" here), and for the titles of books and + so on. + + Boldface is sometimes used for \MF\ `sparks'. A bold italic + face is used for the first occurence of technical terms. + +\subsec{Citations and references} + + Numbers appearing in square brackets (for example, [$1$]) refer + the reader to other sources for more information; they are + listed in \xref{bib}. + +\subsec{Syntax descriptions} + + Occasional syntax descriptions will be given in the usual + ^^{Backus--Naur formalism}^{extended Backus--Naur Formalism} + (extended BNF, or EBNF): in other words, an extension of the + notation described at the start of Chapter~$24$ of the {\it\TeX + book} \cite{TeXbook}, `Summary of Vertical Mode'. Syntactic + entities are written with angle brackets, thusly: \langle{\it + dimen\/}\rangle. The arrow `{\rmb\char1}' is read as `is + defined as', and the vertical bar `{\rmb\char124}' as `or'. + Literal text is enclosed in quotation marks. + + Square brackets on the RHS of the arrow enclose optional text. +\iflong + As an example, take this definition from Chapter~$24$: +\begin bnf + \<unit of measure> \> \<optional spaces> \<internal unit> + \\~\<optional {\tt true}> \<physical unit>. + + \<optional {\tt true}> \> |true| \\ \<empty>. + + \<optional spaces> \> \<empty> \hfil\break + \\ \<space token> \<optional spaces>. +\end bnf + Using brackets the first two rules can be replaced by just one: +\begin bnf + \<unit of measure> \> \<optional spaces> \<internal unit> + \hfil\break + \\~[ |true| ] \<physical unit>. +\end bnf +\fi + Braces enclose text that may repeated, or rather text which may + appear any number of times including zero. +\iflong + For example, + \<optional spaces> can be defined as: +\begin bnf + \<optional spaces> \> \{ \<space token> \}. +\end bnf + Or we could rewrite the whole of the above definition of \<unit + of measure> as follows: +\begin bnf + \<unit of measure> \> \{ \<space token> \} \<internal unit> + \hfil\break + \\~[ |true| ] \<physical unit>. +\end bnf +\fi + There is no conflict with the use of brace tokens in the + {\it\TeX book}\/: all such tokens will be written in quotation + marks in syntax rules (`|{|' and `|}|' rather then \lbrace\ and + \rbrace), and besides, I~will not be referring to brace tokens. + +\iflong +\subsec{Typefaces, founts and fonts} + + In traditional English usage, a \dfn{typeface} (or \dfn{face}) + is the design of a set of letters, figures and symbols at any + size: an abstract concept. A \dfn{fount} is an implementation + of a typeface at a particular size; normally this refers to a + phyiscal object, such as a set of punches or a phototypesetter + film strip. By analogy with "program", I will use "font" for an + analagous computer resource, whether it describes a typeface at + any size (as a \PS\ scalable font does) or at a particular + design size (as \TeX\ fonts do). + +\subsec{Italic, slanted, oblique, latin, roman and upright} + + The term \dfn{italic} used to refer to a cursive variation of a + typeface. In phototypesetting days, sanserif faces with no + italic could have an obliqued form produced using prisms. + Generally \dfn{slanted} was used to mean either italic (if + available) or obliqued. Nowadays almost all faces are supplied + with a slanted form; for sanserif fonts these are inconsistently + referred to as "italic" or "oblique". So far as I~know, + Computer Modern is the only type family to include three + different slanted alphabets---italic, obliqued and so-called + `math italic'. + + The word "roman" is used to mean ordinary upright letters, as + distinct from italic or bold and the like. I~shall generally + distinguish between this use of "roman" and the use of "latin" + to refer to the alphabets derived from the alphabet devised for + writing the Latin language in classical times, as compared with + the Greek and Cyrillic alphabets, for example. + +\iffalse +\subsec{Families and super-families} + + A family is a collection of typefaces, intended to be compatible + with each other. For example, the ITC Avant-Garde Gothic family + has members such as ITC Avant-Garde Gothic Demi and ITC + Avant-Garde Gothic Light Oblique, and Univers has family members + (also called variants) like Univers~$55$ and Univers~$48$. + + Most families consist of a few different weights of italic and + upright faces. There are a few `super-families', such as ITC + Stone, Lucida and Computer Modern, which contain many different + variants such as sanserif, typewriter, informal. ITC Stone + Sans, ITC Stone Serif and ITC Stone Informal may be viewed as + three separate families that were designed together + (collectively a `super-family'); or, ITC Stone can be viewed as + is a family with Sans Semibold Italic, Informal Italic and so on + as faces within it. + + I~personally prefer the `splitter' approach; it keeps the number + of names of font variants a document manager needs to know about + relatively small, and does not greatly increase the number of + family names, because there are very few super-families compared + with the enormous number of normal-sized families. It also + makes the design of menu-based font-selectors more + straightforward. (The names Adobe uses for its fonts indicate + that they are `splitters' too.) Unfortunately, \LaTeX\ was + designed on the implicit assumption that `sans serif', `slanted' + and `caps and small caps' are variants present in *any* family. + + Super-families are an intuitively pleasant concept for + classifying fonts, but they are not relevant to any + document-processing program I~can think of off the top of my + head. That is, given document~$A$ with ITC Stone Serif and Sans + and document~$B$ with Palatino and Univers, there's nothing + useful that a computer can do with the information that $A$ + takes all its faces from one super-family and $B$ does not. + +\fi % end of iffalse +\fi % end if iflong + +\subsec{Composite letters} + + I will use the phrase \dfn{composite letter} to refer to letters + which, regardless of their meaning in their respective + languages, are *written* (not necessarily typeset) as one of the + letters {\it A}--{\it Z} (called a \dfn{base glyph}) with that + addition of some sort \dfn{mark}. Thus composite letters + include German umlauts ({\it\"a}, {\it\"o}, {\it\"u}), accented + letters in languages like Spanish ({\it\'a}, {\it\'e}, etc.), + and special letters like {\it\aa}, {\it\"a} and {\it\"o} in + Scandinavian languages. + + As well as marks that go above letters, there are some that go + below ({\it\c c}, {\it\a}) and through letters ({\it\l}, + {\it\o}). Normally it will be useful to distinguish between + composite letters with the mark above them and the latter two + categories. For example, "\A" is the same height as the letter + "A", but if the letter "\AA" is to have the same height as "A" + then the base glyph must be shrunk slightly. + +\subsec{Hyphens and dashes} + + To prevent confusion, I~shall use the word "dash" to refer only + to the en- and em-dash symbols (`--' and `---'), and I~will use + the word "hyphen" for hyphens (`-'). +\iflong + Hyphens (produced with + one ASCII minus sign) are used in English for joining words + ("ear-ring", "get-at-able"), to disambiguate a few odd compounds + ("re-cover", "co-operate"), and when dividing words at the ends + of lines. Short (en) dashes (|--|) are used in joining pairs + where there is movement or tension between them ("London--Oxford + route", "\n{1980}--\n{85}"). Long (em) dashes (|---|) are used + in a similar way to parentheses or a colon. +\fi + +\subsec{Sundry quotation marks} + + In English printing, the ^{quotation marks} are an ^{apostrophe} + (') and an ^{inverted comma}---with hot metal typesetting this + was a literally a ^{comma} that had been put in place + upside-down. In German, a rather more sensible arrangement is + used where two commas start quotations, and two inverted commas + close them: ,,so``. To prevent confusion, I~shall consistently + refer to the character `\,`\,' as an inverted comma rather than + `^{left quote}', because it is not always a *left* quotation mark: +\begin display + , & comma & ,, & double comma\cr + ` & inverted comma & `` & double inverted comma\cr + ' & apostrophe & '' & double apostrophe\cr +\end display + There is some potential for confusion with regards to the ASCII + characters `|`|'and `|'|', used by \TeX\ to stand for an + inverted comma and apostrophe respectively. ASCII was designed + with typewriter-like devices in mind, and |'| was intended as a + combined neutral single quotation mark, acute accent and + apostrophe, which is not quite the same as \TeX's use for it. + Traditional UNIX names for these two characters are \dfn{quote} + and \dfn{backquote}. + + When I~am referring to French ^{guillemets}, I~shall use `left + guillemet' to refer to the one that points to the left (<<). In + French and many other languages, this is used as an opening + quotation mark <<\,thus\,>>; in German it is sometimes used as a + closing quotation mark >>so<<. + +\subsec{How to refer to Malvern fonts} + + The name `Malvern' is spelled as a normal proper noun (no fancy + typography is necessary). In English it is pronounced with the + accent on the first syllable, with the "a" pronounced as in + either "pal" or "pall" (natives of the town it is named after + say `*mawl*-v{\rmb\char116 }n', I~tend to pronounce it + `*mal*-v{\rmb\char116 }n'). In other languages it may as well + be pronounced and declined according to the orthography of the + language. + + When describing a particular version of Malvern, convention + favours an unbreakable space between name and number: + Malvern~$1.1$ is `|Malvern~1.1|' (like Henry~VIII, Occam~$2$, + Fortran~$9$X). The same applies to naming members of the + Malvern font family (Malvern~$55$, Malvern~$76$) and Malvern + font encoding family (Malvern~A, Malvern~B). In the latter case + the letters need not be italicized. + +%}}} Nomenclature +%{{{ Numeric style suffixes + +\section{Malvern's font names} + +%{{{ Univers + +\subsec{Numeric style codes} + + The first font family designed as a unit was ^{Univers}. The + designer, Adrien Frutiger\index{Frutiger, Adrien}, introduced + two-figure codes to describe the different variations, instead + of a names like `bold italic' and `light condensed'. For + example, the `roman' face is called Univers~$55$, italic + Univers~$56$, boldface Univers~$75$ and lightweight condensed + italic Univers~$38$. Frutiger has used his system in all his + subsequent font families. ^{Malvern} and other new fonts I~make + use a similar system. + +%}}} univers +%{{{ Malvern suffixes + +\subsec{The style codes used with Malvern} + +\xreflabel{s-stylecodes}{\S\thesecno} + Just as with Frutiger's system, the first digit gives the weight + of the font and the second digit gives the width (in the sense + of `{\cp compressed}' vs.\ `{\xp expanded}'), as in the + following table: +\begin table \strut$#$\hfil\quad&#\hfil\qquad&$#$\hfil\quad&#\hfil\cr + & \it first digit & & \it second digit\cr + \noalign{\smallskip}% + 1 & ultra-light (hairline) & 1, 2 & extra expanded \cr + 2 & extra-light (thin) \cr + 3 & light & 3, 4 & expanded/extended \cr + 4 & book (semi-light) \cr + 5 & medium & 5, 6 & normal width \cr + 6 & demi (semi-bold) \cr + 7 & bold & 7, 8 & condensed/compressed \cr + 8 & extra-bold \cr + 9 & ultra-bold & 9, 0 & extra compressed \cr +%%%% 0 & black \cr +\end table + The second digit is even for a slanted face, odd for an + upright face---so that the italic version of Malvern~$55$ is + $56$, and of $19$ is~$10$. + + This in theory gives $90$ styles. The middle odd-numbered + weights ($3$, $5$, and $7$) are expected to be the more commonly + used ones. Similarly, the three middle widths are expected to + be used more often than $1$ and~$9$. The practical upshot of + this is (a)~they are more likely to be available as \mc{PK} + files and (b)~they are more likely to have had their \MF\ + programs tested and debugged. + + This system of names only allows one slanted form and cannot + distinguish `compressed' from `condensed'. Normally this + fine---before Knuth's Computer Modern came along, it was only + heretics with \PS\ or phototypesetters without italics available + who would resort to obliqued fonts. The \MF\ programs that + describe Malvern have the capacity to produce `vertical italic' + and obliqued forms, but these are not part of the standard + Malvern pantheon. They are *not* intended to be used in normal + bookwork. +%}}} Malvern suffixes +%{{{ TeX fonts names + +\subsec{\TeX\ font names} + +\xreflabel{s-font-names}{\S\thesecno} + The question now is how to represent these fonts using + reasonably portable \TeX\ font names. Recall that only + lowercase letters and digits can be used, and that names must be + limited to a length that even stupid filesystems like ^{MS-DOS} + can handle. + + I~have my own system of external font names of the following + form: +\begin bnf + ^\<font name> \> \<family> \<style> \<encoding> \<size>. + + \<family> \> \{ \<letter> \\ \<digit> \} \<letter>. + + \<style> \> \<digit> \<digit>. + + \<encoding> \> \<letter> [ \<letter> ]. +\end bnf + Where a \<size> is the design size in points, possibly including + `|p|' as a decimal point, or `|m|' to indicate millimetres: +\begin bnf + ^\<size> \> \<points> \\ \<millimetres>. + + \<points> \> \<digits> [ |p| \<digits> ]. + + \<millimetres> \> \<digits> |m| [ \<digits> ]. + + \<digits> \> \<digit> \{ \<digit> \}. +\end bnf + In the case of Malvern, the \<family> is |ma|. The \<encoding> + describes the subset of all the Malvern characters that this + font contains---for example |s| is the \TeX\ Text character set. + + Thus $10$-pt Malvern~$55$ with \TeX\ Text encoding is + given the name |ma55s10|, which fits nicely into the eight + characters allowed by ^{MS-DOS} filenames. More eccentric + sizes, like $7\cdot2\pt$ have names like |ma55s7p2| (eight + characters) or |ma55s12p5| (nine characters). + + Here's a partial list of encoding codes: +\begin display + \tt a& Malvern A (latin), see \xref{tab-charcodes-a}\cr + \tt b& Malvern B (supplement), see \xref{tab-charcodes-b}\cr + \tt c& Malvern C (Cyrillic), see \xref{tab-charcodes-c}\cr + \tt g& Malvern G (Greek), see \xref{tab-charcodes-g}\cr + \tt s& \TeX\ Text \cite{TeXF1}\cr + \tt az& \TeX\ Text with old-style numerals\cr + \tt aa& \TeX\ Text with small capitals replacing lower case letters\cr + \tt ab& \TeX\ Text with old-style numerals and small capitals\cr + \tt ar& \TeX\ Extended Text---Latin (Cork) \cite{Cork}\cr + \tt as& Cork with old-style numerals\cr + \tt at& Cork with small capitals\cr + \tt au& Cork with old-style numerals and small capitals\cr +\end display + \xreflabel{tab-encoding-codes}{\S\thesecno} + +%}}} TeX fonts names +%{{{ Berry's scheme + +\subsec{Naming Malvern fonts in Karl Berry's system} + + Karl Berry has described a system for naming fonts newly + introduced to the `\TeX\ world' \lcite{\\{Berry}\\{Berry2}}. A + subset of the Karl Berry's syntax for font names is as follows: +\begin bnf + \<font name> \> |fmv| \<style> \<size>. + + \<style> \> \<weight> \<variant> \{ \<variant> \} [ |r| \\ \<width> ] + \hfil\break \\ \<weight> |r| \<width> + \hfil\break \\ \<weight>. + + \<weight> \> |t| \\ |i| \\ |l| \\ |k| \\ |m| \\ |d| \\ |b| \\ + |x| \\ |u| \\ |c|. + + \<variant> \> |i| \\ |9| \\ |o| \\ |u| \\ |q| \\ |c|. + + \<width> \> |x| \\ |c|. + + \<size> \> \<digit> [ \<digit> ]. +\end bnf + This definition is incomplete, because the rules governing the + order of variant letters and when variant and width letters may + be omitted are complicated\iffalse: +\begin bullets +\\ + If \<variant> letters are present, arrange them in alphabetical + order. +\\ + If there is a \<variant>, and there is no \<width>, and the + last \<variant> is a digit or a valid \<width>, then the + trailing |r| must be present. Otherwise it must be omitted. +\end bullets +\else.\fi + + The \<weight> letters listed above correspond to the first + digit's values of $1$, \dots, $9$, $0$. A \<variant> of |i|, + |o| or |u| indicates a slanted, obliqued or `upright italic' + style instead of upright; |9| is old-style digits; |c| is caps + \& small caps; |q| is the Cork encoding (instead of the \TeX\ + Text encoding). Fonts with |c| or |q| variants have to be + created as virtual fonts, using Alan Jeffrey's ^|fontinst| + package (\xref{s-fontinst}). Fonts using \TeX\ Text encoding + may be generated directly with \MF. + + This gives names like `|fmvm12|' for $12$-point Malvern~$55$, + `|fmvdic18|' for Malvern~$68$. Malvern~\n{55} with old-style + numerals would be |fmvm9r10|. On the other hand, Malvern~\n{68} + with old-style numerals would be `|fmvd9ic10|'---nine + characters---and we haven't even specified a base encoding yet. + +\ifkbnames\else +\begin notepar + As of October~\n{1994}, the font names standard does not allow + for combinations for more than two variants (where `variants' + includes encodings and font shape) without breaking the + \n8-character limit imposed by stupid filesystems like MS-DOS + and ISO~\n{9960}. The only temporary solution I~can offer is to + extend the nonstandard `\/{\tt ma}\/-' naming scheme to include + encoding codes for the fonts used by plain \LaTeX, NFSS and + NFSS\vn2. Therefore `\/{\tt fmv}\/-' names are not used at + present. +\end notepar +\fi + +\xreflabel{s-kb-names}{\S\thesecno} + +%}}} Berry's scheme +%}}} +%}}} Introduction +%{{{ Using Malvern + +\part{Using Malvern in \TeX\ documents} +%{{{ LaTeX 2e +\section{Using Malvern with \LaTeXe\ or NFSS\vn2} + +\index{LaTeX2e@\LaTeXe|+} +\index{NFSS\vn2|+} + +\subsec{Background to \LaTeXe} + + The release of the so-called New Font Selection Scheme (^{NFSS}) + has left the \LaTeX\ world in a slightly confused state, with + neither plain \LaTeX\ nor \LaTeX\ augmented with NFSS considered + `standard' anymore. This is partly because \LaTeX+NFSS is not + quite compatible with plain \LaTeX, so older documents might + have to be edited to suit the new system. + + \LaTeX\ version \n3 is intended to put an end to this confusion, + but it will be some time before ^^{LaTeX3@\LaTeX\vn3} \LaTeX\vn3 + is generally available. In the meantime a new, `standard' + version has been released, called \LaTeXe. \LaTeXe\ is + backwards-compatible with \LaTeX-\n{2.09} documents, using a new + syntax to access the newer features. + +\subsec{NFSS\vn2} + + \LaTeXe\ includes a new FSS called NFSS\vn2 which uses font + family definition ({\tt fd}) files to tell it how to obtain + fonts in a given font family and encoding family. For example, + a file describing Cork-encoded Malvern is called `^|T1fmv.fd|': + "T\n1" is the NFSS\vn2 code for the Cork encoding, and "fmv" is + Karl Berry's code for Malvern. Once such an {\tt fd} file is + installed, to use Malvern fonts in a document you would use + something like the following: +\begin display + |\fontencoding{T1}|\cr + |\fontfamily{fmv}|\cr + |\selectfont|\cr +\end display + This might go in a document preamble, but normally such changes + to the overall look of a document belong in a package. + +\subsec{Malvern in NFSS\vn2} + + The Malvern includes a sample set of {\tt tfm}, driver, {\tt vf} + and {\tt fd} files so that Malvern should be usable with + \LaTeXe\ or NFSS\vn2 without very much effort, both with the + \TeX\ Text and Cork encodings (OT$1$ and T$1$). This assumes + that +\begin bullets + \\ {\tt dvi} previewers and printer drivers that understand virtual + fonts are available; + \\ printer fonts (such as {\tt pk} files) will be generated + automatically when needed (for example, by invoking a + ^|MakeTeXPK| script on UNIX-\TeX\ systems). +\end bullets + These files were generated with ^^{Jeffrey, Alan} Alan Jeffrey's + ^|fontinst| package (see \xref{s-fontinst}). They do not + include support for italic caps-and-small-caps because there is + at present no font-shape name for this combination. + +\index{LaTeX2e@\LaTeXe|-} +\index{NFSS\vn2|-} + +%}}} LaTeX 2e +%{{{ LaTeX/NFSS + +\section{Using Malvern with \LaTeX~\n{2.09}} + +\index{LaTeX2.09@\LaTeX~\n{2.09}|+} + + In \LaTeX, It is possible to use a font or two in an + ad-hoc fashion using the ^|\newfont| command: +\begin display + |\newfont{twlgr}{ma55g12}|\cr + |\newcommand{\textgreek}[1]{{\twlgr#1}}|\cr +\end display + Then `|\textgreek{alfa}|' generates `{\gr alfa}'. The problem + here is that fonts loaded this way do not change size + automatically when commands like ^|\footnotesize| or ^|\large| + are used; as a result they will not work properly in footnotes + or section headings. They also will not work in maths mode. + +\subsec{Using NFSS} + + The so-called New Font Selection Scheme (^{NFSS}) is an + extension of \LaTeX~\n{2.09} to make it easier to switch between + fonts \cite{NFSS}. The \LaTeX\ system I have access to does not + use NFSS, so I~can not test NFSS code and I~do not know how much + documentation on adding new fonts is supplied with the package. + I have included \index{Rahtz, Sebastian P.~Q.} Sebastian Rahtz's + ^|malvern.sty| \cite{nfss-malvern}, and also style files named + ^|fmvnfss.sty| and ^|fmv9nfss.sty|\note{"Fmv" is Karl Berry's + code for Malvern, and "nfss" distinguishes it from the plain + \LaTeX\ version and any \LaTeXe\ version. The digit `$9$' is + the Berry code for old style figures.} which are modelled on + |malvern.sty|, but which use the fonts included in the Malvern + distribution. They do not have support for the ^|\sc| + declaration. + +\subsec{Making fonts change size without NFSS} + + To make fonts that change size properly requires a style file + that reprograms plain \LaTeX's size-changing commands (I~shall + refer to \LaTeX\ version~\n{2.09} without NFSS as `plain + \LaTeX~\n{2.09}', and to \LaTeX~\n{2.09} with NFSS as + \LaTeX~\n{2.09} + NFSS'). To do this requires some knowledge of + the way plain \LaTeX's size-changing and font-changing commands + work \cite{lfonts}. + + The ^{size-changing commands} like |\normalsize| and + |\footnotesize| work by calling internal commands |\|"size"|pt| + and |\@|"size"|pt|, where "size" is the type size in points, + expressed as roman numerals. For example, in a $10$-pt + document, |\normalsize| invokes |\xpt| and |\@xpt| in order. + The |\@|"size"|pt| macros are initially defined to expand to + nothing. The |\|"size"|pt| macros link font nicknames |\rm|, + |\it| etc.\ with real fonts like |\tenrm| or invocations of + |\@getfont|\index{getfont@{\tt\char92\char64 getfont}}. The + macro |\@getfont| allows some fonts to be loaded on demand + rather than preloaded when \LaTeX\ starts up (saving some memory + when they are not used). When expanded, |\@getfont| appends + assignments to |\@|"size"|pt| that override the definition in + |\|"size"|pt|. The practical upshot of this is that |\@getfont| + is only invoked the first time the font is referred to; + subsequent uses of that font use the assignment added to + |\@|"size"|pt|. + + There are two ways to add new fonts to add new fonts to \LaTeX's + lists. The quick kludge is to let |\@getfont| do the work. For + example, the following code might go in a {\tt sty} file: +\ifkbnames +\begin lines + |\@getfont{\prm}{0}{\@xpt}{fmvr10}| + |\@getfont{\prm}{0}{\@xipt}{fmvr11}| + |\@getfont{\prm}{0}{\@xiipt}{fmvr12}| +\smallskip + |\@normalsize| +\end lines +\else +\begin lines + |\@getfont{\prm}{0}{\@xpt}{ma55s10}| + |\@getfont{\prm}{0}{\@xipt}{ma55s11}| + |\@getfont{\prm}{0}{\@xiipt}{ma55s12}| +\smallskip + |\@normalsize| +\end lines +\fi + This loads the fonts and adds assignments to the |\@|-commands + so that they are used in $10$, $11$ and $12$-pt text. It also + has unwanted side-effects like changing the size and current + font, which are cancelled out by the + ^^{normalsize@{\tt\char92\char64 normalsize}} |\@normalsize| at + the end. + + A solution that is more efficient if more than a handful of + fonts are being changed is to make a copy of |lfonts.tex| and + edit it to load Malvern fonts instead of Computer Modern fonts. + This approach allows the new fonts to be demand-loaded using + ^^{getfont@{\tt\char92\char64 getfont}} |\@getfont| and so on. + This is used two sample style files included in the + distribution, ^|fmvpltx.sty| and ^|fmv9pltx.sty|.\note{"Fmv" is + the code for Malvern in Karl Berry's system, and "pltx" short + for `plain \LaTeX'.} They do not include support for the + caps-and-small-caps declaration ^|\sc|. + +\subsec{Which fonts to use with \LaTeX\ \n{2.09}} + + In the ^{Malvern~\n{1.0}} documentation I~suggested that Malvern + fonts with the standardized font names + \lcite{\\{Berry}\\{Berry2}} and Cork encoding \cite{Cork} be + used with \LaTeX, on the grounds that the Cork encoding is due + to become the standard for \LaTeX. Since then the situation has + changed a little. The introduction of NFSS\vn2 means that + future versions of \LaTeX\ will not be tied down to just one + encoding scheme after all. Also, new versions of the + font-naming scheme include encoding codes amongst the variant + letters, implying that the default is the standard \TeX\ Text + encoding. + + It follows that the standard names (starting `{\tt fmv}-') + should be used with the standard `\TeX\ Text' encoding when + using Malvern fonts with \LaTeX~\n{2.09}, whether with NFSS or + not. This way the macros that work with the old encoding (such + as |\ae|, |\'|, and the like) will not need to be changed. + NFSS~\n2 will take care of redefining these macros when + appropriate. + +\ifkbnames\else +\begin notepar + As of October~\n{1994}, the font names standard does not allow + for combinations for more than two variants (where `variants' + includes encodings and font shape) without breaking the + \n8-character limit imposed by stupid filesystems like MS-DOS + and ISO~\n{9960}. The only temporary solution I~can offer is to + extend the nonstandard `\/{\tt ma}\/-' naming scheme to include + encoding codes for the fonts used by plain \LaTeX, NFSS and + NFSS\vn2. Therefore `\/{\tt fmv}\/-' names are not used at + present. +\end notepar +\fi + +\xreflabel{s-LaTeX-fnames}{\S\thesecno} + +\ifkbnames + Malvern \n{75} is intended as the boldface counterpart to + Malvern~\n{55}, so the font used for \n{10}-pt |\bf| should be + |fmvb10| rather than |fmvbrx10|. +\fi + +\index{LaTeX2.09@\LaTeX~\n{2.09}|-} +%}}} LaTeX/NFSS +%{{{ plain TeX -- maamac.tex +\section{Using Malvern with plain \TeX: {\tt maamac.tex}} + +\xreflabel{s-maamac}{\S\thesecno} + This ^^{maamac.tex@{\tt maamac.tex}|+} section describes a file + ^|maamac.tex| of definitions to customize \TeX\ to work with the + Malvern~A conventions. It covers roughly the same territory as + Chapter~\n9 of the "\TeX book" \cite{TeXbook}, and assumes you + have already have macros in place to load Malvern fonts with the + Malvern~A encoding \lcite{\\{TeXB4}\\{TeXE}}. At a minimum: +\begin example + |\input maamac| + |\font rm=ma55a10 \rm| +\end example + +\begin notepar + The file |maamac.tex| (`*Ma*lvern *A* *mac*ros') was formerly + called simply ^|malvern.tex|. The new name is intended to be + less ambiguous, while still acceptable to file systems with + short file names. +\end notepar + +\subsec{Ligatures} + + The letter ligatures "ff", "fi", "fl", "ffi", "ffl" and + punctuation ligatures `--', `---', `!`', `?`', + `\thinspace``\thinspace' and `\thinspace''\thinspace' work as in + Computer Modern. In addition, |fj| produces "fj" and |<<| and + |>>| produce the guillemets `<<' and `>>'. Note that you must + use `|''|' to stand for a double-apostrophe---with Computer + Modern, some people use `|"|', which will not work. + +\subsec{Special letters} + In addition to the special letters "\oe", "\ae", "\aa", "\o", + "\l", "\ss", "\i" and "\j" there are: +\begin display + |\A|&\A&|\a|&\a& Polish "a" with ogonek\cr + |\E|&\E&|\e|&\e& Polish "e" with ogonek\cr + |\TH|&\TH&|\th|&\th& Icelandic thorn\cr + |\DH|&\DH&|\dh|&\dh& Icelandic eth\cr + |\NG|&\NG&|\ng|&\ng& Lappish eng\cr + |\vd|&\vd&|\vt|&\vt& alternatives to "\v d", "\v t"\cr + |\vl|&\vl&|\h|&\h& alternatives to "\v l", "\^h"\cr +\end display + The commands producing composite letters (|\'e| for "\'e", + etc.)\ work as before, except that they use different marks on + capital letters: "\'E" instead of "\accent8 E"\iflong\space (see + \xref{s-composites} for more information)\fi. + +\subsec{Sundry symbols} + + The commands |\$|, |\#|, |\%| and |\&| produce `\$', `\#', `\%' + and `\&' as in plain \TeX\ (|\$| does not produce a pounds sign + `\pounds' in italics). + In addition, the commands |\P|, |\S|, |\dag| and |\ddag| produce + signs "\P", "\S", "\dag", "\ddag" that come from the current + font rather than the mathematical symbol font. + + There are the following additional symbols: +\begin display + ^|\pounds|& \pounds& + Pounds-sterling sign\cr + ^|\cents|& \cents& + Cents sign (alternative to "c")\cr + ^|\currency|& \currency& + Currency sign\iflong , see \cite{s-currency}\fi\cr + ^|\permille|& \permille& + Per-mille (per-thousand) sign\cr + ^|\yen|& \yen& + Japanese Yen sign\cr + ^|\florin|& \florin& + Florin sign (alternative to italic "f\/")\cr +\noalign{\smallbreak}% + ^|\times|& \times& + multiplication sign\cr + ^|\minus|& \minus& + minus sign\cr + ^|\langle|, ^|\rangle|& \langle, \rangle& + angle brackets\cr + |\{|, |\}|& \{, \}& + braces\cr + ^|\cdot|& \cdot& + raised dot (British decimal point)\cr + ^|\bullet|& \bullet& + a bullet\cr + ^|\Box|& \Box& + a ballot box\cr + ^|\degrees|& \degrees& + degrees sign\cr +\noalign{\smallbreak}% + ^|\Mc|& \Mc& + `Mac', as in \Mc{Donald}\cr + ^|\No|& \No& + `Number' or `numero'\cr + ^|\orda|& \orda& + feminine ordinal numbers\cr + ^|\ordo|& \ordo& + masculine ordinal numbers\cr + ^|\careof|& \careof& + indicates indirect address\cr + ^|\copyright|& \copyright& + international sign of copyright\cr + ^|\registered|& \registered& + registered trade mark sign\cr + ^|\trademark|& \trademark& + trade mark sign\cr +\end display + The inclusion of `\times', `\minus', `\degrees', `\cdot' makes + it possible to say `\minus17\cdot6\thinspace\degrees C' or + `50\thinspace mm \times\ 100\thinspace mm' without using maths + mode (and therefore in the current font). The symbols that are + named the same as mathematics symbols in plain \TeX\ use + |\ifmmode| so that they can use the plain \TeX\ definition in + formulas and the Malvern character in horizontal mode. + +\subsec{Old-style and ranging numerals} + + By default, ^{old style numerals} are used: 0123456789. These + are for use in non-technical text, where old style numerals are + usual when using serif fonts. To get ^{ranging numerals} + $0123456789$ use one of: +\begin display + |$0123456789$|\cr + |$\textfont0=\font 0123456789$|\cr + |\uppercase{0123456789}|\cr + |\caps{0123456789}|\cr +\end display + The switch to ranging numerals in mathematics mode reflects the + assumption that mathematics mode is mainly used in documents + with technical content (besides, old style numerals look wrong + in anything but the simplest formulas). Normally a given + document should not use both styles---which implies that if you + are using formulas then all numerals in the manuscript must be + encosed in mathematics delimiters. + +\xreflabel{s-ranging}{\S\thinspace\thesecno} + +\subsec{Small captials} + + The following macros do not work in \TeX's mouth, meaning that + they will not have the intended result when expanded in an + |\edef|, for example\iflong + \space (see \xref{s-alphabets} for more + information)\fi. +\begin display + |\sc{ABC\DH}|&\sc{ABC\DH}& + Even small capitals\cr + |\mc{ABC\DH}|&\mc{ABC\DH}& + Medium capitals\cr + |\csc{ABC\DH abc\dh}|&\csc{ABC\DH abc\dh}& + Caps and small caps\cr + |\caps{ABC\DH abc\dh}|&\caps{ABC\DH abc\dh}& + All-capitals\cr + |\lc{ABC\DH abc\dh}|&\lc{ABC\DH abc\dh}& + Lower case\cr +\end display + ^^|\csc| ^^|\sc| ^^|\mc| ^^|\caps| ^^|\lc| For example, I set my + postcode with `|\sc{OX1~3QD}|' to get `\sc{OX1~3QD}', and I can + write `\csc{PostScript}' with `|\csc{PostScript}|'. Because the + small capital alphabets are included in all styles, we can write + `|\csc{\it Fred}|' to get `\csc{\it Fred}', and even produce the + \LaTeX\ logo in italics: {\it\LaTeX}. Note that these macros + work differently from the ^|\sc| or ^|\smc| declarations in + \LaTeX\ and other formats, which switch to ^|cmcsc10|, a + separate caps-and-small-caps font. + + The last two transliterate into capitals and lower case---the + differences between these macros and the |\uppercase| and + |\lowercase| primitives are: +\begin bullets + \\ |\caps| and |\lc| (and all the others) make assignments, and so + can not be expanded in \TeX's mouth; and + \\ |\uppercase| and |\lowercase| do not affect letters like {\it\O} + and {\it\ae} when they are produced with control sequences (like + ^|\O| and ^|\ae|). +\end bullets + The practical upshot is that the primitives are useful when + implementing strange macros involving creating control sequence + names on the fly etc.\ and for introducing strange characters + into definitions, whereas to produce an all-capitals headline + (or whatever), the macros are better. + + ^^{maamac.tex@{\tt maamac.tex}|-} + +%}}} plain TeX -- maamac.tex +\iflong +\input texnical +\fi +% \input ldfontsdoc + +%}}} Unsing Malvern +\iflong +%{{{ Implementing Malvern + +\part{Implementing Malvern} + +\iffalse % This section largely superceeded by the installation summary +%{{{ organization of the files +\section{Organization of the files} + + The implementation of Malvern is split into several files. The + file |ma.mf| is the `root' file, also called the generic driver + file. This reads in |makit.mf| (a collection of macros which + describe various pieces of letters), |maparams.mf| (which sets + most of the {\it ad hoc} parameters, and |maencode.mf| (which + describes the character encoding to be used), before reading in + the program files (which contain `character programs' which + actually produce the glyphs) and producing the ligature table. + +\subsec{The generic driver file} + + The difference between my generic driver file and a driver file + like |cmbx12.mf| is that it must have certain variables given + values before it is read. At the very least the internal + \MF\ variable $designsize$ (set with the {\bf font\_size} + macro) should have a value. Other variables can be given values + to signal to the driver to produce a font other than roman (with + the \TeX\ text encoding): +\begin table $#$\hfil + & \quad\vtop{\hsize=0.75\hsize \noindent#\strut\smallskip}\hfil\cr +weight & Controls the average thickness of the strokes that make up the + letterforms. A value of $1$ means the normal weight, $1\cdot5$ + is bolder, $0\cdot75$ is lighter.\cr +hratio & Horizontal ratio: controls the average width of the characters. + The shapes of the characters will be squeezed or expanded (as if + by a |xscaled| transform) but the thickness of strokes will + remain the same. This is used to obtain compressed or expanded + fonts.\cr +slant & The transform `slanted $slant$' is catenated to + $currenttransform$, so that all the glyphs are obliqued. + Normally only non-zero if $italicness$ is defined and + nonzero.\cr +italicness & A number from $0$ to $1$, where $1$ represents an italic + font (some letters are drawn in a more flamboyant manner) and + $0$ a roman font.\cr +encoding & An integer, used to select one of a set of character + encodings for the font (see \xref{s-encoding}).\cr +\end table + If these are left unknown, then $weight$ and $hratio$ default to + $1\cdot0$ (medium, normal width), $slant$ and $italicness$ + default to $0$ (upright) and $encoding$ defaults to $0$ (the + standard \TeX\ encoding). + +\subsec{Creating a font} + + The procedure for creating Malvern fonts is not much different + from normal \MF\ fonts. Normally the \MF\ program + is run with a `first line' (after the `|**|' prompt) along the + lines of +\begin example + |\mode=...; font_size 10pt#; weight=1.4; input ma; bye| +\end example + This produces files called something like `|ma.tfm|' and + `|ma.200gf|'. These generic file names must be changed to + `|ma65s10.tfm|' and `|ma65s10.200gf|', say, and the |gf| file + might need to be converted into a different format used by the + printer driver (for example, |GFtoPK| might be used to create a + file `|ma65s10.200pk|'). + +\subsubsec{Automating this process with {\tt mff}} + + This is altogether too much bother, especially if, like me, you + must produce fonts on demand rather than installing a large + number of them once and for all. I~use a small UNIX program + |mff| which does all the above automatically: it deduces the + values for the parameters $weight$ etc.~from the font name. The + command +\begin example + |mff ma65s10| +\end example + will do all the above automagically. (The tables used to parse + the font name are described in a file |mff.rc| shipped with the + \MF\ files, and also allow the use of names in Karl + Berry's font-naming scheme, such as `|fmvd10|'.) + + The |mff| is intended to be useful for maintaining any family of + \MF\ fonts, not just Malvern\allowbreak---I~use it for all my + fonts. It should be available from the same source that + you obtained Malvern itself (the current version is $2.9$). + +\subsubsec{An alternative approach using less-generic driver files} + + It is possible to avoid having to type such long commands to + \MF, at the expense of having many more small files lying + about. The setting of parameters is performed by small driver + files along these lines: +\begin lines + |% fmvd.mf -- generic driver for demibold Malvern| +\smallskip + |weight := 1.4; % demibold| + |encoding := -200; % Cork TeX Extended Text -- Latin | + |input ma| + |bye| +\end lines + Then the command line to \MF\ is reduced to +\begin example + |\mode=localfont; font_size 10pt#; input fmvd| +\end example + (The files produced by \MF\ will now have names starting + `|fmvd.|', and will still need to be renamed.) + + This can be taken one step further, by having driver files for + every font, thus |fmvd10.mf| would contain just the line + `|font_size 10pt#; input fmvd|'. Then the basename of the |.mf| + file is the same as that which the font is to be installed as. + (This is less of an advantage than it might at first seem, + because installing a font normally requires moving it into a + different file area, and therefore a renaming operation.) + +\subsubsec{Automating the process with {\tt MFjob}} + + The program |MFjob| is part of em\TeX, a public-domain \TeX\ + distribution for IBM PS/$1$s and PS/$2$s. It has the capacity + to generate use driver files in the style of |fmvd.mf| above to + create fonts at arbitrary sizes. + +%}}} organization +\fi +%{{{ file names +\section{File names} + + \MF\ source files for Malvern have names starting with with + `|ma|' (for "Malvern"). I have tried to choose names that fit + in with MS-DOS's lamentable naming conventions. +\begin table \tt#\hfil&&\quad#\hfil\cr + ma.mf& Top-level generic driver file\cr + maaenc.mf& Malvern A encoding description\cr + mabenc.mf& Malvern B encoding description\cr + macenc.mf& Malvern C encoding description\cr + macy.mf& Malvern Cyrillic\cr + madenc.mf& Malvern D encoding description\cr + maencode.mf& Malvern encoding vectors\cr + mafigs.mf& glyph programs for numerals\cr + magenc.mf& Malvern G encoding description\cr + maglcaps.mf& glyph programs for Greco-latin capital letters\cr + magrcaps.mf& glyph programs for Greek capital letters\cr + magrlc.mf& glyph programs for Greek lower case\cr + makit.mf& macro definitions\cr + malc.mf& glyph programs for lower case\cr + malcco.mf& glyph programs for lower case Composite-Only\cr + malcnc.mf& glyph programs for lower case Non-Composite\cr + mamarks.mf& glyph programs for marks for making composites\cr + maparams.mf& computing the ad-hoc paramters\cr + mapunct.mf& glyph programs for punctuation\cr + masenc.mf& \TeX\ Text encoding description\cr + masyms.mf& glyph programs for miscellaneous symbols\cr +\end table +%}}} file names +\iffalse +%{{{ macro conventions +\section{Conventions for macros that draw letters} + + Definitions for macros that draw letters are written so that + they may be used to draw that letter in an position---for + example, so that the program for `c' may be used in drawing + `\copyright'. + + By convention the header for letter "a" looks like: +\begin display + |vardef draw_|"a"|@#(expr l, b, r, t, bl)|"other parameters"| =| +\end display + Where $(l, b)$ is the bottom left and $(r,t)$ the top right + corner of the cell in which the glyph will be drawn, and $bl$ is + the $y$-value of the baseline. All should be whole numbers. + For a normal letter, they are |(l, -d, r, h, 0)|. The "other + parameters" are parameters specific to the letter itself: for + example, giving the relative distance between certain features + within the letter. + +%}}} macros conventions +\fi + +\iflong +\input encoding +\fi +% \input multiple + +%}}} Implementing Malvern +%{{{ About Malvern + +\part{About Malvern} + +%{{{ design +\section{The design of the Malvern font} + + This section describes some of the design decisions made for + Malvern---this may not be strictly relevant to most people's use + of it. I~will start with general, overall style and then + continue to more specific details. + + My main motivation for developing Malvern was that I~was that + I~do not use \TeX\ exclusively for technical documents. + I~produce leaflets, booklets and magazines in + non-scientific fields, where the determinedly old-fashioned + appearance of Computer Modern would jar terribly. These were + the sorts of situations where the simplicity and informality of + a sanserif font would be best suited.\note{Americans seem to be + more frail than Europeans when it comes to reading sanserif + text. It is true that serif faces---particularly oldstyle and + transitional faces---are more readable in continuous text, but + the difference is not so great as to override all other design + considerations. (The United States is noted for its addiction + to Bodoni, which is neither particularly readable nor + particularly legible, and is ugly besides.) Perhaps this + handbook is rather long to be set all in sanserif; I~hope that + not too many readers will be struck blind as a result, and that + they will allow that it is reasonable for the handbook to act as + a showcase for the typeface it describes.} + +%{{{ types of sanserif +\subsec{Types of sanserif font} + + One way of sub-dividing sanserif fonts is into the four flavours + \dfn{grotesque}, \dfn{humanist}, \dfn{geometric} and + \dfn{neo-grotesque}. While these are not cut-and-dried + divisions (there are many faces with a flavour all their own), + they can be a useful approach to thinking about the design of + typefaces. + +\subsubsec{Grotesque} + + The grotesque styles were created during the Victorian period, + when poster printers out-did each other in combining as many + different typestyles as possible (one of many examples of how + the Victorians, who considered themselves the acme of civility + and good taste, exhibited terrible taste). They were so dubbed + because contemporary designers thought they were horribly ugly. + Today `grotesque' is simply a label, and has no more inherent + meaning than `modern' or `dutch' do when applied to serif + styles. Computer Modern Sans Serif is derived from Computer + Modern in the same way that grotesque fonts were derived from + the modern fonts (variations on Bodoni) of the time, so it might + be described as a grotesque. + +\subsubsec{Humanist} + + The humanist styles emerged from the calligraphy revival of the + early twentieth century. They reflected the new emphasis on + carefully-crafted letter-shapes and proportions embodied in + Edward Johnston's Foundational Hand. Gill Sans and Johnston's + Underground Font---used in all London Regional Transport---are + examples. + +\subsubsec{Geometric} + + The Bauhaus movement in $1930$s Germany gave rise to geometric + styles, in which the letter-shapes were progressively simplified + and unified, producing alphabets composed of arcs of circles and + straight lines, with many letters sharing components. + Latter-day geometric styles retain the appearance of being + constructed with ruler and compass, but incorporate subtle + shadings and distortions that allow for optical illusions and + distortions due to printing technology. ITC Avant Garde Gothic + is an example of a geometric font. + +\subsubsec{Neo-Grotesque} + + Finally, neo-grotesques are more refined descendants of the + original grotesque typefaces. Neo-grotesque designs emphasize + legibility and uniformity of design. Their function is to + deliver the text of a message to the reader in as unobtrusively + as possible---they are ideal for signs, where legibility is of + paramount importance (more important than readability, for + example). The British Rail Alphabet---used in airports and the + like as well as BR itself---and the ubiquitous Helvetica are + neo-grotesque designs. + +%}}} types of sanserif +%{{{ what flavour is Malvern? +\subsec{What flavour is Malvern?} + + When designing Malvern, I~was aiming for a mixture of geometric + and humanist features. I~have always liked the look of humanist + faces like Johnston's Underground Font. They are described as + crude, but I~think that this gives them more character than the + refined and refined neo-grotesques: Helvetica is a very + well-designed typeface, but text set in Helvetica looks boring. + I~wanted a face that was appealing to read in itself. + + At the same time I~wanted to make a typeface that was simple and + elegant, without (apparant) variation in stroke width and with + an emphasis on rounded shapes (I~particularly wanted to have a + circular `O'). Since this was my first attempt to design a + typesetter font it seemed sensible to aim for character and + simplicity rather than sophistication. + +%}}} what flavour is Malvern? +%{{{ global design features +\subsec{Global design features} + + There is one feature of Malvern that I~based on the Johnston + Underground Font, which is that the bowls and arches of letters + join the stems at a large angle, rather than curving toward a + tangent with the stem: +\begin display + \font\sf=cmss17 scaled \magstep1\sf bpnu& + \ifPS \font\sf=phvr at 18pt \sf bpnu& \fi + \headingrm bpnu \cr + \noterm CMSS\n{17}& + \ifPS \noterm Helvetica& \fi + \noterm Malvern \n{65}\cr +\end display + As well as forming a nice, uncluttered shape, this avoids having + to narrow the width of the stroke to avoid dark spots. (A + fortuitous side-effect is that these joins have a good chance of + digitizing well at low resolutions.) + + Malvern has rounded terminals---that is, the ends of the strokes\marginchar{nb} + are rounded rather than squared off. Together with the lack of + tapering at curve joins, this means that Malvern looks as if it + were drawn with a circular pen. All this makes Malvern rather + easier to implement than most typefaces would be, because \MF\ + has built-in operators to produce just such an effect. This was + not the reason for choosing to make Malvern look this way, + although it did affect my decision to make a stab at producing + Malvern rather than some other typeface. + +%}}} global design features +%{{{ currency sign + +\subsec{The ISO currency symbol} + + The symbol `\currency' is the \ISO{646} currency symbol. It + takes the place of the dollar sign in position \n{36} of the + \ISO{646} character encoding (which is the international + standard equivalent of ASCII). Thus, in theory, non-Americans + should all use \currency\ instead of \${}, and it should stand + for the local currency. (It has been used in some Scandinavian + countries at least: I~remember a book on \mc{BASIC} which had + \mc{A\currency\ = CHR\currency}($13$) instead of \mc{A\${} = + CHR\${}}($13$)). + + Most fonts I~have encountered which have a `\currency' + character\marginchar{\currency} draw it as a small circle with + the four `ears' at right angles to each other: a small, square, + symbol that floats above the baseline like a binary operator. + My design is unusual, but I~prefer it, because is is the same + approximate size as other currency symbols (and looks like it + belongs in the font). + +\xreflabel{s-currency}{\S\thesecno} + +%}}} currency sign +%{{{ odd symbols + +\subsec{Sundry oddly shaped symbols} + + With some symbols, like the the per-cent sign, I have + deliberately ignored their origins, so `\%' does not much + resemble `$0/0$' or `\frac0/0', `\S' does not look much like two + `s's stacked on top of each other, and `\pounds' does not look + much like a script letter "L". This is partly in recognition of + the fact that they have long since been used as symbols in and + of themselves, and the link to their origins is weak. + + So `\%' has similar proportions to other currency-like + signs\marginchar{\%\S{}} (\${}, \yen, \P, and the like), while + still having two generously-sized, circular rings. (My first + reaction to CM Typewriter was `How can I change that per cent + sign?') The crooked design for the section sign `\S{}' was + partly an attempt to ensure that the lines met at large angles, + to avoid blots without making it a taller character than the + dollar sign. + +%}}} odd symbols +%}}} design +%}}} About Malvern +\fi +%{{{ Appendix +\part{Appendix} + +%{{{ encoding + +\section{The encoding of Malvern fonts} + + + An \dfn{encoding} for a computer font is a mapping from a + \dfn{character code} (a nonnegative integer less than + $256$) to characters in the font. (Encodings are like the `code + pages' defined by ISO standards such as $646$ and $8859$.) + Unlike \PS, any given \TeX/\MF\ font has its encoding hard-wired + into it, because characters are always referred to by code. + + This section discusses some general aspects of \TeX\ font + encodings, and some `standard' font encodings, before describing + the Malvern font encodings. The encoding used is reflected in + the external name of the font (see \xref{s-font-names}). + +\iflong +%{{{ in put != output + +\subsec{Input and output encodings need not be the same} + +\xreflabel{s-input-output}{\S\thesecno} + For the purposes of this handbook, we shall only need to discuss + the encodings of fonts produced with \MF\ to be used to typeset + pages produced by \TeX. The encoding used to interpret the + characters used as input to \TeX\ is usually different, because + it is usually dictated by what symbols the computer keyboard has + printed on its keys and how they are displayed on the screen, + whereas the encodings of fonts referred to by \mc{DVI} files + suffer no such restriction. + + In fact, the encoding used for \TeX's output fonts need have *no + connection whatever* to the ASCII character set. This is + important, because good typesetting requires glyphs like `fi', + `\thinspace``\thinspace', `\S{}' and the like that do not exist + in the ASCII\ or \ISO{8859} characters sets (instead they have + characters like `{\rmb\char34 }' and `{\rmb\char94 }' which are + not of use in fine printing, except when simulating a computer + or typewriter). + + In practice, the (assumed) input encoding and the encoding of + latin text fonts will have a common sub-encoding, because it is + so much easier if we arrange that the code of common characters + is the same as the code of the corresponding character in \TeX's + internal encoding. Thus `A', say, has encoding $65$ in text + fonts, matching the character `|A|' in position $65$ of ASCII. + +%}}} input != output +%{{{ tex text + +\subsec{The \TeX\ Text encoding} + + The encoding used for the Computer Modern text fonts is simply + called `\TeX\ Text' \cite{MFApp.F}, which has two + variations, `\TeX\ Typewriter Text' and `\TeX\ Text without + f-ligatures' (if changing the dollar sign into a pounds-sterling + sign in \mc{CM} Text-Italic is not counted as a different + encoding). The first two of these are displayed in Appendix~F of + the {\it\TeX book}. + + Knuth stresses that other \TeX\ fonts might have different + conventions (addressed with different macros), so perhaps the + use of `\TeX' rather than `Computer Modern' in those names + should be interpreted as a historical artefact from the days + when \TeX\ and Computer Modern were almost synonymous. (Calling + them `CM Text', `CM Typewriter Text' etc.~would not have + prevented non-CM fonts from using the CM conventions, of + course.) + + The \TeX\ Text encodings were devised when many programs in the + \TeX/\MF\ system limited fonts to $128$ characters, and so it + only uses the first $128$ codes. As well as the capital and + lowercase alphabets, ranging figures and usual punctuation and + symbols, it includes the ligatures used in Englsh-language + typesetting ("fi", "ffl", etc.), marks to make composite letters + with, and the uppercase ^{Greek} letters that do not have + similar Latin letters: {\gr G}\negthinspace, {\gr D}, + \dots\thinspace, {\gr W}. + + It lacks the Polish ogonek mark (\showmark\ogonek\enspace) used + to make "\A", "\E", "\a" and "\e";\note{And Lithuanian "\ogonek + i" and "\ogonek u" \cite{Pei}?} guillemets (the quotation marks + << and >>); pounds-sterling and a few other currency-sign-like + symbols (like "\yen" and "\P{}"). + + + Malvern fonts named using \index{Berry, Karl} Karl Berry's + standard short font names (|fmv|\dots) use this encoding if no + other encoding is specified. + +\medskip + + {\rms \ntable} +\medskip +\noindent + Notes: +\smallskip +\halign +{#\hfil\quad&\hfil#&\quad\hfil#&\quad#\hfil\cr + \oct{000}--\oct{012}&\hex{00}--\hex{0A}&$0$--$10$& + non-latin Greek letters\cr + \oct{022}--\oct{030}&\hex{12}--\hex{18}&$18$--$24$& + marks for composite letters\cr + \oct{040}&\hex{20}&$32$& + slash that makes "\l" and "\L"\cr +} + +%}}} tex text +%{{{ Cork + +\subsec{The Cork encoding} + + A new proposed standard encoding is described by Michael + Ferguson \cite{Cork}. I shall refer to this as the Cork + encoding, because it was devised at the \TeX\ users conference + held in Cork in September~$1990$. I~think that it is intended to + be used as \TeX's internal encoding as well as for `standard' + text fonts.\note{\TeX\ converts documents from the local + character set to its own as the first stage of the parsing + process---normally the local character set is ASCII, the same as + \TeX, so this stage is transparent. The advantage of extending + \TeX's internal encoding to include composite letters, assuming + \TeX\ is configured properly, would be that the code for + `{\tt\accent'23 e}' on a user's keyboard would be transformed + into the code for `\'e' in the Cork encoding. The disadvantage + of using the same encoding for \TeX's internal representation of + the input file and in the DVI file is that it requires the \MF\ + fonts to match ASCII for codes $33$--$126$ (|'|, |-| and |`| are + each used in ASCII to stand for several different symbols, so + the match can't be exact). It also requires the input encoding + to include characters like `ffl', which are of little or no + utility in a computer character set. I feel it would make more + sense to have two encodings.} The Cork encoding includes a large + number of composite letters (all those of \ISO{8859/1} and + \ISO{8859/2}), so that most European languages can be typeset + without using the |\accent| primitive (Esperanto and some + European languages are not covered; and it lacks the dotted + consonants used when setting Irish in the traditional Celtic + alphabet, and dotted/underlined letters used in transliterating + Arabic). + + It also includes a duplicate hyphen, and the \dfn{compound word + mark} (cwm), an invisible character. The point of cwm is to + allow the breaking of ligatures; in a language like German where + the `fl' ligature is sometimes used but is incorrect if the `f' + ends a syllable, this would be written as |f^^Wl| (or a control + sequence expanding to this). + + The duplicate hyphen is intended as a kludge to cope with the + fact that \TeX\ will not break words containing hyphens except + at the hyphens, even if those hyphens are really part of a dash + ligature. The relevant paragraph of the article\note{`It + includes both a ``dash'' and an explicit ``hyphen char''. This + capability allows font designers the option of replacing the + ``-'' with an ``='' without losing the dash. Since the ``-'' is + no longer the hyphen char, it allows words with explicit dashes, + such as INRS-T\'el\'ecommunications[,] to be hyphenated.'} is + unclear because Ferguson uses `dash' without specifying whether + he includes hyphens as dashes. My guess is that the hyphen and + its duplicate are expected to both look the same, and that they + intend that \TeX\ normally be set up to hyphenate with character + $45$ as usual. People who want to treat hyphens as a normal + letter character will set |\hyphenchar| to the duplicate hyphen. + + A discouraging point in the article is that the inclusion of the + typewriter-style ugly quotation mark character is described as a + desirable feature of the proposed standard: +\begin quotation + This \dots\ removes an irritant in the use of [double quote + ligatures] in these fonts. The font designer can decide whether + [``], [''], and [{\rmb\char34 }] are distinguishable. +\end quotation + Presumably the aim here is to make it as easy for \TeX ers to + produce lousy typesetting as it is for people using Macintoshes + and \MSDOS\ machines. I can accept that if it is assumed that + the same encoding must be used for \TeX's internal encoding as + for DVI output, then the ugly-quote character is unavoidable; + but it pains me to see it presented primarily as a boon for lazy + typists. One of the worst effects of the `DTP revolution' has + been the way in which typewriter-style quotation marks and + apostrophes have become common in typeset text, because they are + so much easier to generate on a Macintosh than the correct + quotation marks. + +% The article also states +%\begin quotation +% The standard also includes |<| |>| in the normal ASCII +% location[s]. +%\end quotation +% but this does not address the fact that the ASCII symbols `|<|' +% and `|>|' are used both as the less-than and greater-than +% relations {\rmb<} and {\rmb>} and as angle brackets \langle\ and +% \rangle. These keys might also reasonably be used for single +% guillemets < and > or normal (double) guillemets << and >>. + + + Future versions of \LaTeX\ will expect fonts using this encoding + to exist. In the Malvern~\n{1.0} documentation I~suggested that + \index{Berry, Karl} Karl Berry's names be used for these; there + is now a specal code letter `|q|' for the Cork encoding. +\medskip + {\rmx \ntable} +\medskip +\noindent + Notes: +\smallskip +\halign +{#\hfil\quad&\hfil#&\quad\hfil#&\quad#\hfil\cr + \oct{000}--\oct{014}&\hex{00}--\hex{0C}&$0$--$12$& + marks for composite letters\cr + \oct{015}&\hex{0D}&$13$& + German single quotation mark\cr + \oct{016}--\oct{017}&\hex{0E}--\hex{0F}&$14$--$15$& + single guillemets\cr + \oct{027}&\hex{17}&$23$& + compound word mark (cwm)\cr + \oct{030}&\hex{18}&$24$& + ring that combines with \% to make \permille\cr + \oct{040}&\hex{20}&$32$& + visible space\cr + \oct{042}&\hex{22}&$34$& + typewriter-style neutral quotation mark\cr + \oct{136}&\hex{5E}&$94$& + ASCII circumflex\cr + \oct{137}&\hex{5F}&$95$& + ASCII under{\rmb\char95 }score\cr + \oct{176}&\hex{7E}&$126$& + ASCII tilde/swung dash\cr + \oct{177}&\hex{7F}&$127$& + duplicate hyphen\cr +} + + + +%}}} Cork +%{{{ bag-of-characters + +\subsec{The `bag-of-characters' alternative} + + The Cork encoding has as a central assumption that it is + possible and overridingly desirable to have *one* encoding that + is used in typesetting anything, and that this encoding shall be + used for input to \TeX, fonts used in DVI files, and as the + output of \MF. I~am of the opinion that it is not useful or + convenient to try to impose One True Encoding on all text fonts. + + In fact, the Cork article does have as an unstated assumption + that different fonts are used for different languages (or rather + groups of languages): for example, the discussion of the use of + the cwm to separate ligatures in German but to join ligatures in + other contexts suggests a plethora of fonts with the identical + encoding and glyphs but different ligtables. + + I~would argue that if separate fonts are being used then they + might as well have different encodings as well. This would + allow a German font to omit, say, "ffl" and "ffi" (not used in + German) and perhaps add "ck", "tz", "ch" ligatures. True {\it + Fraktur} faces require more ligatures, but do not include + composite letters other than umlauts. Guillemets for French use + should be created with extra space inside them <<\thinspace like + so\thinspace>>, whereas Germanic fonts should have guillemets + without the extra space >>like so<< \cite{Hart's102}. Allowing + different encodings would put Esperanto, Irish, Lappish, Welsh + etc.\ on equal footing with the larger languages. Assuming that + switching between languages already implies a switch in + hyphenation tables and other parameters of \TeX, switching fonts + as well seems like a minor problem, especially as it allows + great benefits. + + Furthermore, the best way within the \TeX\ system to produce + several different fonts with almost the same collection of + glyphs is to use composite fonts. A composite font can draw its + characters from one or more base fonts. These base fonts are in + effect a bag of characters from which different selections can + be drawn to form language-group-specific fonts. There is no + reason for the base font(s) to have the same encoding as the + tailored fonts used by \TeX\ itself. + +%}}} bag-of-characters +\fi +%{{{ Malvern + +\subsec{The Malvern font-encoding conventions} + + The Malvern typeface includes more than $256$ characters, so it + follows that no one font will contain every Malvern character. + Instead I have coding schemes called Malvern~A, Malvern~B, + Malvern~C and Malvern~G.\note{The use of `Malvern' in these + names is in order give them a unique name, not to restrict the + use of these encodings to Malvern fonts. If the encoding + conventions of later versions of Malvern are different for some + reason, then the version number can be appended to distinguish + the different encodings, giving `Malvern A $1.0$', say.} + Malvern~A is the simple latin text font; it has the base + alphabets (that is, it has "A--Z" and the rest but not "\`A--\v + Z"). Malvern~C and G are Cyrillic and Greek respectively + (Malvern~C is stil incomplete). Malvern~B is the latin text + supplement. (There might also be a Malvern~E of composite + letter glyphs in the future.) + +\xreflabel{tab-charcodes}{\S\thesecno} + +%}}} Malvern +%{{{ macros for table notes + +% Much to my annoyance, the smart play is to give the codes in octal +% since TeX can convert to hex and decimal easily. + +\def\hexnumber#1% +{% + \hex{\chardef\tmp=#1 \expandafter\striptodoublequote\meaning\tmp}% +} +\begingroup\catcode`\"=12 \toks0={\endgroup + \def\striptodoublequote#1"{} +}\the\toks0 +\def\decnumber#1% +{% + \n{\number#1}% +} + + +\def\noteone#1#2% +{% + \oct{#1}&\hexnumber{'#1}&\decnumber{'#1}\cr +} +\def\notetwo#1#2#3% +{% + \oct{#1}, \oct{#2}& + \hexnumber{'#1}, \hexnumber{'#2}& + \decnumber{'#1}, \decnumber{'#2}\cr +} +\def\noterange#1#2#3% +{% + \oct{#1}--\oct{#2}& + \hexnumber{'#1}--\hexnumber{'#2}& + \decnumber{'#1}--\decnumber{'#2}\cr +} + +%}}} macros for table notes +%{{{ Malvern A +%{{{ insert table + +\pageinsert % this one is too big for a normal insert +\ntable +\medskip +\noindent + Notes: +\smallskip +\halign +{#\hfil\quad&#\hfil&\quad#\hfil&\quad#\hfil\cr + \oct{006}--\oct{017}&\hex{086}--\hex{0F}&$6$--$15$& + marks for l.c. composites\cr + \oct{026}--\oct{027}&\hex{16}--\hex{17}&$22$--$23$& + marks for U\&lc composites\cr + \oct{060}--\oct{071}&\hex{30}--\hex{39}&$48$--$57$& + oldstyle digits\cr + \oct{074}, \oct{076}&\hex{3C}, \hex{3E}&$60$, $62$& + single guillemets\cr + \oct{206}--\oct{217}&\hex{86}--\hex{8F}&$134$--$143$& + marks for cap.\ composites\cr + \oct{234}&\hex{9C}&$156$& lower-case "d" with hook (\,=\,"\v d")\cr + \oct{235}&\hex{9D}&$157$& lower-case "t" with hook (\,=\,"\v t")\cr + \oct{236}&\hex{9E}&$158$& lower-case "h" with circumflex\cr + \oct{237}&\hex{9F}&$159$& lower-case "L" with hook (\,=\,"\v l"?)\cr + \oct{240}&\hex{A0}&$160$& ballot box\cr + \oct{244}&\hex{A4}&$164$& ISO-$646$ currency sign\cr + \oct{251}&\hex{A9}&$169$& `florin sign' (variant italic "f")\cr + \oct{256}&\hex{AE}&$174$& raised dot (British decimal point)\cr + \oct{260}--\oct{271}&\hex{B0}--\hex{B9}&$176$--$185$& + ranging figures\cr + \oct{300}&\hex{C0}&$192$& degrees sign\cr + \oct{333}, \oct{335}&\hex{DB}, \hex{DD}&$219$, $221$& + angle brackets\cr +} +\caption{Malvern A encoding.} +\xreflabel{tab-charcodes}{Table~\n{\the\tablecount}} +\endinsert +%}}} insert table +\subsec{Malvern A Encoding} + +\xreflabel{tab-charcodes-a}{\S\thesecno} + This is the latin text font, containing alphabets, two sets of + figures, punctuation marks, various symbols, and some special + letters. Although the eventual plan is that language-group + specific fonts be created, this encoding has been designed so + that it can be used on its own at a pinch. As with the \TeX\ + Text encoding, words with composite letters in them will not + hyphenate properly, and any composite-letter characters + available on the user's keyboard will have to be made to expand + to control sequences to generate that character. + + As well as the usual (large) capitals and lower case alphabets, + Malvern has two more capital alphabets: small capitals and + medium capitals. The font is divided into two halves, with the + first $128$ slots being an extension of a subset of normal + ASCII, and the upper $128$ characters largely `shadowing' the + lower half. For example, small capitals and medium capitals + `shadow' the lower case and large capital alphabets (`a' is + character \hex{61}, and `\sc{A}' (small cap.)\ is $\hex{61} + + \hex{80} = \hex{E1}$). + + There are two sets of digits: old style (\lowercase{1234567890}) + are the default; to get ranging digits (\uppercase{1234567890}) + see \xref{s-ranging}. The usual block of marks (which may be + used to make composite letters) is designed to suit the lower + case letters, and the shadow set is designed to suit the medium + capitals\iflong (see \xref{sec-type-A})\fi. + + + +%}}} malvern A +%{{{ Malvern B +%{{{ insert table + +\topinsert + {\rmb \ntable} +\medskip +\noindent + Notes: +\smallskip +\halign +{#\hfil\quad&\hfil#&\quad\hfil#&\quad#\hfil\cr + \noteone{40}{blank space} + \noteone{42}{seconds (and ASCII doublequote)} + \noteone{45}{Cork's ring for per mille} + \noteone{47}{minutes (and ASCII quote)} + \noteone{54}{German single quote} + \noteone{56}{three-dot ellipsis\dag} + \noteone{57}{slash for fractions} + \noterange{60}{72}{infoerior figures} + \noterange{60}{72}{inferior figures} + \notetwo{74}{76}{greater- \& less-than signs} + \noterange{101}{105}{Old English caps\dag} + \noterange{106}{145}{Old English lower case\dag} + \noterange{146}{153}{Ligatures "ch", "ck", "ct", "ft", "ij", "ll"\dag} + \noterange{154}{163}{Long "s" and ligatures} + \noteone{164}{Schwa} + \noterange{165}{173}{Font-specific variant letters} + \noterange{134}{137}{Cork glyphs} + \noteone{140}{reverse tick (ASCII backquote)} + \noteone{240}{Cork visible space} + \noterange{241}{246}{ISO \n{8859}/\n{1} glyphs} +} +\caption{Malvern B encoding.} +\endinsert +%}}} inster table +\subsec{Malvern B Encoding} + +\xreflabel{tab-charcodes-b}{\S\thesecno} + This font is essentially a collection of random symbols and + alphabetical characters, some of them mathematical. I~have not + yet settled on a firm design for it---most of it is left as gray + areas to be filled in in later versions of Malvern. Also, even + in the final form of this font, some areas will be designated as + `font-specific'; other fonts using the Malvern conventions will + use them for whatever variant letters and unique characters the + designer wishes to include. + Superior and inferior---that is, raised and lowered---figures + (\lowercase{{\rmb 1234567890}}/\uppercase{{\rmb 123456789}}) + take the place of the old-style and ranging figures. The glyphs + required by the Cork encoding, such as this visible space + `{\rmb\char160 }' and ASCII doublequote `{\rmb\char34 }', are + also included here. + + +%}}} malvern B +%{{{ Malvern C + +\subsec{Malvern C Encoding} + +\xreflabel{tab-charcodes-c}{\S\thesecno} + This will be the ^{Cyrillic} subset of Malvern, using the same + or simlar conventions to the existing ^|wncy| fonts. As yet, + several of these glyphs are missing. (Perversely enough, mainly + the ones appearing in the Latin and Greek alphabets, so I can + only say `AH{\gr G}{\cy LIQ}AH{\cy I}H' by borrowing `A' and `H' + from Malvern~A and `{\gr G}' from Malvern~G!) I'm not really in + a good position to produce a good Cyrillic font---I don't have + the slightest knowledge of Russian or any other language using + the Cyrillic alphabet. + +\topinsert + {\rmc \ntable} +\caption{Malvern~C encoding (so far).} +\endinsert + +%}}} Malvern C +%{{{ Malvern G + +\subsec{Malvern G encoding} + +\xreflabel{tab-charcodes-g}{\S\thesecno} + This is the ^{Greek} text font encoding, based largely on the + Greek\TeX\ \cite{KD} fonts, so that, for example, `|<'a|||' + produces an alpha with breathing, accent and iota subscript: + `{\gr <'a\char124 }'. The document |magrman.tex| in the Malvern + distribution describes the use of this font. + +\topinsert + {\gr \ntable} +\caption{Malvern G encoding.} +\endinsert + +%}}} Malvern G +%}}} encoding +\dosupereject +\iflong +%{{{ type sizes +\vfil +\penalty-100 +\vfilneg +\section{Sizes of type} + + This is a table of sizes of type, descibed both in \TeX's + Anglo-American points ($0\cdot351\,{\rm mm}$ or $0\cdot01383''$) + and in millimetres, and also the cap heights for Malvern~55. + The choice of point sizes is a mixture of traditional sizes + ($10\pt$, $12\pt$, \dots, $48\pt$, $60\pt$ etc.) and the sizes + Computer Modern fonts are supplied in ($10\pt$, $12\pt$, + $17\cdot28\pt$ etc.), and a few sizes that are round figures in + metric units ($10\mm$ etc.). +\medskip +\moveleft\leftmargin\vbox{\advance\hsize\leftmargin +\halign to \hsize{\hfil $#$\tabskip=0pt& $#$\hfil \tabskip=0pt plus 1fil& + &\quad\hfil $#$\tabskip=0pt& $#$\hfil \tabskip=0pt plus 1fil +\cr + \noalign{\hrule height 1pt \vskip 1.5\jot}% + \multispan4Body size\hfil & + \multispan4\quad Cap.\ ht\hfil & + \multispan8\quad Pixels per em\hfil\cr + \noalign{\vskip\jot\nointerlineskip}% + \multispan4\hrulefill & + \multispan4\quad\hrulefill & + \multispan{12}\quad\hrulefill \cr + \multispan2pt\hfil & + \multispan2\quad mm\hfil & + \multispan2\quad pt\hfil & + \multispan2\quad mm\hfil & + \multispan2\quad $120$ & + \multispan2\quad $200$ & + \multispan2\quad $300$ & + \multispan2\quad $400$ & + \multispan2\quad $600$ & + \multispan2\quad $1000$\cr + \noalign{\vskip\jot \hrule \vskip 1.5\jot}% + \input typesizes + \noalign{\vskip2\jot \hrule height 1pt} +}} +\smallskip + +%}}} type sizes +\fi +%{{{ composite letters + +\section{Composite letters used in some languages} + + This table lists composite letters listed as being + required to typeset several European languages. This list is + not particularly canonical\allowbreak---I~have merely combined + the OUP list \cite{ODWEacc}, the resources of my local library, + and \TUGboat\ articles \lcite{\\{Bien}\\{Hara}}. There are + probably omissions, especially of composites used in + loan-words\allowbreak---and I~would appreciate any information + which I~can include in later revisions. + +%{{{ macros to do footnotes in table + +\newcount\tabcount +%\tabcount=7 \multiply\tabcount16 \advance\tabcount\itfam +%\multiply\tabcount256 \advance\tabcount`a \advance\tabcount-1 + +%% Normally footnotes into a table are lowercase letters +%% In this case it seemed better to use numbers given that the +%% entries are all letters... +%% +\def\tabnote#1% +{% + \global\advance\tabcount1 + \global\edef#1{\footnotetextmark{\the\tabcount}}% + #1% +} +\def\tabnotetext#1% +{% +% \ifvmode +% \noindentfalse +% \leavevmode\llap{#1}% +% \else +% \unskip \penalty10000 \hbox to \parindent{\hfil#1}% +% \fi + \par \indent\llap{#1\enspace}% + \ignorespaces +} + +%}}} +%{{{ the table + +\medskip +\moveleft\leftmargin\vbox\bgroup +\advance\hsize\leftmargin +\hrule height 1pt +\vskip2\jot +\halign to \hsize\bgroup #\unskip\hfil \tabskip=3pt plus 10pt&&#\unskip\hfil\cr +Czech & \'a & \v c \v D\vd\tabnote\czech + &\'e\v e& & \'\i & \v n & \'o + & \v r\v s \v T\vt\czech + & \'u\ringmark u + & & \'y & \v z \cr +Danish &\aa & & & & & & \o & & & & & & \ae \cr +Dutch\tabnote\dutch & & &\'e\"e & & & &\'o\"o \cr +English &\aa\tabnote\angstrom + & \c c &\'e\`e\tabnote\egravenote\"e + & &\"\i + & &\^o\"o\tabnote\odiaeresis &&& & & & \ae\oe\tabnote\aelig \cr +Esperanto & & \^c & & \^g\h & & \^\j & & \^s & \u u \cr +Finnish &\aa\"a + & & & & & & \"o \cr +French%\tabnote\frenchnote + &\`a\^a & \c c & \'e\`e\"e & &\^\i\"\i + & & \^o & & \`u\^u\"u \cr +German & \"a & & & & & & \"o & & \"u & & & & \ss%\tabnote\eszetnote +\cr +Hungarian & \'a & & \'e & &\'\i & &\'o\"o\H o & & \'u\"u\H u \cr +Icelandic & \'a & & \'e & &\'\i & & & & & & & & \th\dh \cr +Norwegian &\aa + & & & & & & \o & & & & & & \ae \cr +Polish & \a & \'c & \e & & & \l\'n & \'o & \'s & & & & \'z\.z \cr +Portuguese & \'a\`a\^a\~a + & \c c & \'e\`e\^e & &\'\i\`\i + & & \'o\`o\^o\~o && \'u\`u\"u\tabnote\portuguese \cr +Romanian & \`a\^a\u a & & \`e & &\`\i\^\i && &\c{s}\c{t} + & \`u \cr +Russian\tabnote\russian && &\`e\"e & &\u{\i} & & + & & & & \=y & \v z & \rmb '\thinspace \char34 \cr +Spanish%\tabnote\spanish + & \'a & & \'e & &\'\i + & \~n & \'o & & \'u\"u \cr +Swedish &\aa\"a && & & & & \"o \cr +Turkish & \^a & \c c & &\u{g} + &\.I\i\tabnote\turkish \^\i + & & \"o &\c{s} + & \"u \cr +Welsh%\tabnote\welsh + &\^a\'a & &\^e\"e & &\^\i\"\i + & & \^o\"o & &\^u & \^w & \^y \cr +\crcr \egroup +\vskip1\jot +\hrule height 1pt +\egroup +\smallskip + +%}}} +%{{{ text of footnotes + +\tabnotetext\czech + The letters "\vd" and "\vt" are used as alternatives to placing + a \showmark\v on letters with ascenders. They can also be + written \xyaccent{0.4 }{\dimen0=0pt }{13}{d} and \v{t}. +\tabnotetext\dutch + "IJ~ij" counts as one letter. +\tabnotetext\angstrom + "\aa ngstr\"om". +\tabnotetext\egravenote + In poetry, "-\`ed" is us\`ed to show a syllable normally mute is + to be separately pronounced \cite{Hart's30}. +\tabnotetext\odiaeresis + American "co\"operate" (Br. spelling is "co-operate"), "\aa ngstr\"om". +\tabnotetext\aelig + Using the vowel ligatures "\ae" and "\oe" in English words + with Latin roots is a Victorian affectation---it is usual + nowadays to write "aesthetic", not "\ae sthetic" + \cite{Hart's62}. Americans write "esthetic", of + course. +\tabnotetext\portuguese + The letter "\"u" is used in Brazil but not in Portugal + \cite{Hart's135}. +\tabnotetext\russian + These are letters used in transliterating Russian and the other + languages that use the Cyrillic alphabet (Belorussian etc.) + \cite{Hart's120}. +\tabnotetext\turkish + In Turkish, "I~\i" and "\.I~i" are separate letters. Sometimes + "\ringmark \i" or "\=\i" is used in manuscripts to indicate~"\i" + \cite{Hart's135}. + +%\tabnotetext\spanish +% The digraphs "ch" and "ll" count as single letters. +%\tabnotetext\welsh +% Has $7$~digraphs: "ch", "dd", "ff", "ng" (ranked after "g"), +% "ll", "ph", "rh" (except after vowels), "th". +%\tabnotetext\eszetnote +% "Es-zet", or `sharp "s"', originating as a {\it Fraktur\/} +% ligature for long "s" and "z" ("\char157 3"), but treated as +% "ss" in alphabetizing, and the upper-case equivalent is "SS". +%\tabnotetext\ocircumflex +% This is inconsistently used for words naturalized from French -- +% "role" (no circumflex) but "m\^el\'ee" \cite{ODWE}. + +%}}} +%}}} composite letters +\iflong +%{{{ list maamac.tex +\section{Listing of {\tt malvern.tex}} + + This is a complete listing of |maamac.tex|, a file of \TeX\ + definitions that redefine the usual accent commands etc.\ and + make some other definitions appropriate to the Malvern encoding. + It might be used by plain~\TeX + +\everylisting{\smallfonts} +\listing{maamac.tex} +%}}} malvern.tex +\fi +%{{{ installation hints + +\section{Installation summary} + +\subsec{Getting Malvern via FTP} + + Malvern should be available from CTAN (the + Comprehensive \TeX\ Archive Network), in directory + |fonts/malvern|. + + Where appropriate, Malvern now uses the same naming convention + as GNU software, so there should be a bundled distribution + called something like +\begin display + {\tt\ttpackage.tar.gz} +\end display + The file, as the suffix suggests, is a |tar| archive compressed + with GNU Zip, and on UNIX systems will likely be unpacked with + something like +\begin display + {\tt zcat \ttpackage.tar.gz \char`\| tar xvf -} +\end display + + A version which has been `patched' will have a version ID like + `$1.2.05$', the `$05$' being the \dfn{patch level}. You apply + the patches (with ^^{Wall, Larry} Larry Wall's ^|patch| + program) in order (patch $01$ first, then $02$, and so on) to + the main distribution. Patch files have names like + `|malvern-1.2-patch05|'. + + There is a document |dvi/install.dvi| included in teh package + that contains installation hints. + +\subsec{Generic driver file} + Malvern is unusual amongst \MF\ families in that it is supplied + with one {\it generic driver file} instead of one driver file + for each size and style the family comes in.\note{The package + also includes a selection of driver files.} The generic driver + file ({\tt ma.mf}) inspects the values of variables like + "designsize" and "weight" and gives the ad-hoc parameters + appropriate values, before reading the program files. On some + UNIX systems a small program called ^|mff| can be used to + generate fonts using this system. Otherwise other measures will + have to be taken, described below. + +\subsec{Malvern encodings} + Malvern uses a nonstandard encoding---in fact a family of + encodings, for example, Malvern~A (latin alphabets) and + Malvern~G (Greek). To create fonts for use with \LaTeXe\ and + the NFSS\vn2 font selection macros, use ^^{Jeffrey, Alan} Alan + Jeffrey's ^|fontinst| package \cite{fontinst} (see also + \xref{s-fontinst}). This generates the |fd| files and virtual + fonts so that Malvern fonts may be used in the same way as other + \LaTeXe\ families. (The glyphs needed to make fonts with the + Cork (T$1$) encoding are in Malvern~A and Malvern~B.) This has + already been done for you to make a selection of styles + available with both \TeX\ Text and T\n1 encodings. + +\subsec{Malvern font names} + The Malvern fonts generated with \MF\ will have \TeX\ names of + the following form: +$$ + \hbox{{\tt ma}\<style>\<encoding>\<size>} +$$ + where the \<style> is a two digit style code (described below), + \<encoding> is a code identifying a Malvern encoding (such as + `{\tt s}' or `{\tt az}'), and \<size> is the size in points + (e.g., `{\tt 12}' for $12\pt$). Thus {\tt ma55a12} ($12$-pt + Malvern $55$, encoding~A). + + The two-digit style codes are based on Adrian Frutiger's system, + devised for the Univers family; see \xref{s-stylecodes}. + + The \MF\ programs can also produce fonts in ^^{Berry, Karl} + Karl Berry's font naming scheme, with the \TeX\ Text encoding. + The names start with `{\tt fmv}'. This is so that these fonts + may be used in plain-\TeX\ and \LaTeX-$2.09$ documents without + too much confusion. The correspondance between Malvern's style + digits and weight, variant and expansion letters is given in the + tables below. NFSS\vn2 systems (indeed, any that use + non-\TeX-text encodings) will have to use virtual fonts. + +\ifkbnames\else +\begin notepar + `\/{\tt fmv}\/-' names are not used at present; use + corresponding `\/|ma|\/-' names instead. See the note at the + end of \xref{s-kb-names}. +\end notepar +\fi + +\subsec{Unpacking Malvern} + The Malvern distribution includes \MF\ source files, some \TeX\ + files such as this documentation, and a few other miscellaneous + files. + +\subsubsec{Source files ({\tt/source})} + On most \TeX\ systems, \MF\ fonts end up with their source files + stored in \MF's input file area. I~suggest that Malvern instead + be given its own file area. This avoids problems with different + font families having files with the same name, and makes it easy + to replace all the Malvern files in one go if you upgrade to a + newer version of Malvern. + + With a new-style directory tree,\note{At the time of writing, + the \TeX\ Directory Standard (TeDiouS) is still in discussion. + This is my best guess based on a \TeX\ system I~recently had + installed.} the {\tt\ttpackage} directory may be placed in the + `|texmf/fonts/public|' directory, and the directories |source| + and |drivers| merged and renamed so that \MF\ can find them. + + The files {\tt mff.rc} and {\tt fmv.mff} are input files for + {\tt mff} and may be ignored if you are not using {\tt mff} to + generate fonts. + +\subsubsec{Driver files ({\tt/drivers})} + These files are not strictly necessary but are included for + convenience. They are used when assignments to the generic + driver file's parameters on the \MF\ command line is impossible, + such as when using the standard {\tt MakeTeXPK} script. A + driver file is included for each {\tt tfm} supplied. + +\subsubsec{\TeX\ input files ({\tt/tex})} + These files belong in a system-wide \TeX\ inputs area. The + files ending with `|.fd|' are font family definition files, + used by NFSS\vn2 and \LaTeXe. + + On new-style directory trees, the best approach is probably to + link or rename {\tt texmf/fonts/public/\ttpackage/tex} to + {\tt texmf/tex/\ttpackage}. + +\subsubsec{Documentation files ({\tt/doc}, {\tt/dvi})} + Files ending in `{\tt.tex}' are plain \TeX\ documents, and will + not work with \LaTeX. Compiled ({\tt dvi}) files are supplied + to save the installer having to run \TeX. Read {\tt + install.tex}, first. The ^{Greek} text encoding is described in + |magrman.tex|. + + The "Malvern Handbook", |maman.tex| produces cross-references + automatically via an |aux| file, and will need to be run through + \TeX\ twice to get the cross-references right. The front matter + (preface and table of contents) are printed *last* and should be + transferred to the front of the handbook before binding. + +\begin notepar + Please do not install any of the macro files used to typeset the + documentation in the system-wide \TeX\ inputs area. They are + not supported, not necessarily generally useful, and very + nonstandard. Earlier releases of Malvern gave the macro files + generic enough names that they might clash with other macro + files. They have been renamed to start with `{\tt pdc}' in the + hope that this will avoid clashes if they are accidentally + installed. +\end notepar + +\subsubsec{Virtual font files ({\tt/vf})} + These virtual fonts are generated using ^^{Jeffrey, Alan}Alan + Jeffrey's ^|fontinst| package \cite{fontinst}, and are Malvern + fonts with the Cork encoding. With NFSS\vn2 (or \LaTeXe) they + are used by specifying encoding `{\tt T1}' and family `{\tt + fmv}'. See \xref{tab-encoding-codes} for a list of encoding + codes. + +\subsubsec{Font metric files ({\tt/tfm})} + A selection of precompiled font metric files, including those + for virtual fonts in {\tt /vf} and the actual fonts needed to + use them, as well as fonts needed to print the documentation in + {\tt/dvi}. + +\subsec{Using mff to generate Malvern fonts} + First, install {\tt mff} and arrange that \MF\ will be able to + find the {\tt mf} files. Then to create a Malvern font, for + example $12$-pt Malvern~$55$ ({\tt ma55a12}), give the command: +\begin example + |mff ma55a12| +\end example + To generate Malvern~$55$ and $56$ at magsteps $0$, \frac1/2 and + $1$, for $300$-dpi and $1000$-dpi printers, you would type: +\begin example + |mff --magstep=0,h,1 --dpi=300,1000 ma55a10 ma56a10| +\end example + If all goes well, the {\tt tfm} and {\tt pk} files generated + will be installed in the correct directories automatically. + +\subsec{Generating Malvern fonts without mff} + This section presumes you know how to install a normal \MF\ + font. + + Create a driver file for each style of Malvern you want to be + able to use. It should have the following form: +\begin lines + |% |\<name of file>| -- generate |\<size>|-pt Malvern |\<style> +\smallskip + |font_size |\<size>| pt#;| + |encoding = |\<number>|; | + |weight = |\<number>|; hratio = |\<number>|;| + |slant = |\<number>|; italicness = |\<number>|;| + |input ma| + |bye.| +\end lines + where \<size> is the design size in points, and the + values for the various variables are given below. The \<style> + is the two-digit style code described in \xref{s-stylecodes}. + + These driver files should be named after the font they + correspond to---for example, `{\tt ma76a12.mf}' to generate + Malvern~$76$. Then they are used as usual with \MF: +\begin example + |mf \mode=luxo; mag=|\<number>|; input ma55a12| +\end example + where the \<number> is the magnification wanted, or `{\tt 1.0}' + for no magnification. + +\subsubsec{Values for {\it encoding}} + The variable {\it encoding} specifies the encoding to use---in + other words, the subset of Malvern's glyphs to be generated. It + should be given one of the following values: +\begin display + \it Encoding&\it Letter&\it Description\cr +\noalign{\kern\jot\hrule\kern1.5\jot} + ${\it encoding} = 1$& \tt a& + Malvern A (latin alphabets ABCdef.)\cr + ${\it encoding} = 2$& \tt b& + Malvern B (superscripts, symbols etc.)\cr + ${\it encoding} = 3$& \tt c& + Malvern C (Cyrillic A{\cy DIlz\char126 })\cr + ${\it encoding} = 5$& \tt e& + Malvern E (composite letters \AA \c C\^D\'e\u g\^\i)\cr + ${\it encoding} = 7$& \tt g& + Malvern G (Greek letters {\gr ABGdez})\cr + ${\it encoding} = 19$& \tt s& + \TeX\ text \cite{TeXF1}\cr + ${\it encoding} = 26$& \tt az& + \TeX\ text, old-style numerals\cr +\end display + The letter is the letter used in the font name -- for example, + {\tt ma55s10} for Malvern with the \TeX\ text encoding (${\it + encoding} = 19$), and so on. + +\begin notepar + The Malvern programs used to attempt to generate other encoding + schemes; with ^|fontinst| this all becomes redundant and + those codes are obsolete. +\end notepar + +\subsubsec{Values for {\it weight}} + The variable {\it weight} specifies the weight (boldness) of the + font. It has the following values: +\begin display + \it Weight&\it Style&\it NFSS\vn2& \it Berry&\it Description\cr + &\it digit&\it code&\it code\cr +\noalign{\kern\jot\hrule\kern1.5\jot} + ${\it weight} = 1/4$& \tt 1& \tt ul& \tt t& ultra-light\cr + ${\it weight} = 1/2$& \tt 2& \tt el& \tt i& extra-light\cr + ${\it weight} = 3/4$& \tt 3& \tt\ l& \tt l& light\cr + ${\it weight} = 7/8$& \tt 4& \tt sl& \tt b& semi-light\cr + ${\it weight} = 1$& \tt 5& \tt\ m& \tt r& medium\cr + ${\it weight} = 1.3$& \tt 6& \tt sb& \tt d& semi-bold\cr + ${\it weight} = 1.6$& \tt 7& \tt\ b& \tt b& bold \cr + ${\it weight} = 2$& \tt 8& \tt eb& \tt x& extra-bold\cr + ${\it weight} = 3$& \tt 9& \tt ub& \tt u& ultra-bold\cr +\end display + The `style digit' is the first digit in the two-digit style + codes described in \xref{s-stylecodes}. The `NFSS\vn2\ code' is the + first half of a corresponding NFSS\vn2\ `font series' code. The + `Berry code' is the code for this weight in Karl Berry's font + naming scheme. + + Note that some of the character programs produce ugly results + for large values of {\it weight}. + +\subsubsec{Values for {\it hratio}} + The variable {\it hratio} specifies the ratio between horizontal + and vertical measurements: in other words, whether the font is + compressed or expanded. It may have the following values: +\begin display + \it Hratio&\it Style&\it NFSS\vn2& \it Berry&\it Description\cr + &\it digit&\it code&\it code\cr +\noalign{\kern\jot\hrule\kern1.5\jot} + ${\it hratio} = 0.50$& {\tt 9} or {\tt 0}& + \tt ec&\tt o& extra compressed\cr + ${\it hratio} = 0.80$& {\tt 7} or {\tt 8}& + \tt\ c&\tt c& compressed\cr + ${\it hratio} = 1.00$& {\tt 5} or {\tt 6}& + \tt\ m&\tt r& normal width\cr + ${\it hratio} = 1.15$& {\tt 3} or {\tt 4}& + \tt\ x&\tt x& expanded\cr + ${\it hratio} = 1.30$& {\tt 1} or {\tt 2}& + \tt ex&\tt w& extra expanded\cr +\end display + The `style digit' is the second half of the two-digit style + codes described in \xref{s-stylecodes}. The `NFSS\vn2\ code' is the + second half of an NFSS\vn2\ `font series' code (for example, + bold expanded is ${\tt b} + {\tt x} = {\tt bx}$, compressed is + ${\tt m} + {\tt c} = {\tt c}$). The `Berry code' is for Karl + Berry's scheme. + + Beware that the character programs do not all produce good + results when {\it hratio} is not $1$. + +\subsubsec{Values for {\it slant} and {\it italicness}} + These two variables between them specify whether a font is to be + produced with italic letterforms or not: +\begin display + \it Slant&\it Italic? &\it Style&\it NFSS\vn2&\it Berry&\it Description\cr + &&\it digit&\it code&\it code\cr +\noalign{\kern\jot\hrule\kern1.5\jot} + ${\it slant} = 0$& ${\it italicness} = 0$& odd& + \tt n& \tt r& upright\cr + ${\it slant} = 1/8$& ${\it italicness} = 1$& even& + \tt it& \tt i& italic\cr + ${\it slant} = 0$& ${\it italicness} = 1$& odd& + \tt ui& \tt u& upright italic (!)\cr + ${\it slant} = 1/8$& ${\it italicness} = 0$& even& + \tt sl& \tt o& oblique\cr +\end display + The `NFSS\vn2\ code' is the `font shape' code. The `Berry + codes' are variant letters for Karl Berry's font naming scheme. + + The variable {\it slant} is common to many \MF\ programs, and + causes the glyphs to be obliqued. The {\it italicness} variable + signals that italic letterforms should be used for some letters. + It is possible to generate an obliqued font or an `upright + italic' with appropriate settings, but these cannot have `{\tt + ma}-' names, because I~have not defined style codes for them. + +%}}} installation hints +%{{{ availability + +\section{Copying Malvern and reporting bugs} + + Like \TeX\ and \MF\ themselves, the implementation of Malvern in + \MF\ for use with \TeX\ is free software in the sense used by + the ^{Free Software Foundation} \cite{GPL}. (The word `free' is + used to mean `free of restrictions', rather than `available for + free'; free software may be bought and sold on the understanding + that the buyer may make copies and distribute them.) +^^{distribution} +^^{copying} + + There is a ^{mailing list} for discussion of Malvern problems + and solutions. Send ^^{bugs} bug reports, suggestions, and + ideas to |malvern@comlab.ox.ac.uk|. To subscribe to the list, + mail me at |malvern-request@comlab.ox.ac.uk|. + +%}}} availability +%{{{ fontinst + +\section{Fontinst} + + ^^{Jeffrey, Alan} Alan Jeffrey's ^|foninst| package + \cite{fontinst} is a set of \TeX\ macros which allows users to + install ^{virtual fonts}. It can combine fonts represented by + Adobe Font Metric ({\tt afm}) or \TeX\ font metric ({\tt pl}) + files into virtual fonts. These virtual fonts can then be used + by \TeX. + +\xreflabel{s-fontinst}{\S\thesecno} + + The package +\begin bullets + \\ is written in \TeX, for maximum portability (at the cost of + speed); + \\ supports the full ^{Cork encoding}; + \\ allows arbitrary `fake' glyphs -- for example, creating an "ij" + ligature by placing "i" next to a "j"; + \\ allows capital-and-small-capital fonts with letter-spacing and + kerning; + \\ allows kerning information to be copied between glyphs -- for + example "ij" can be made to kern on the left like "i" and on the + right like "j"; + \\ allows glyphs from several fonts to be combined to make a new one; + \\ automatically generates a {\tt fd} file for NFSS~\n2 and \LaTeXe; + \\ can deal with arbitrary font encodings. +\end bullets + The current version is a beta release. It can be obtained from + the Comprehensive \TeX\ Archive Network (CTAN), in directory + |fonts/utilities/fontinst|. + + By including some Cork-specific glyphs in the Malvern B + encoding, I~have managed to spin Cork-encoded Malvern fonts + (with variant encodings like cap \& small caps) from Malvern~A + and B fonts. The fonts generated have names in Karl Berry's + scheme, like `|fmvmq12|'. + + +%}}} fontinst +%{{{ to do + +\section{To-do list} + + So far both Malvern and this handbook is incomplete---Malvern is + a spare-time project and progress has slowed to a crawl over the + last few months. For the present, the best strategy seems to be + to release a version that can be picked apart by more + knowledgable people in order that a later, complete, release be + that much better. + + Tasks that need attention include: +\begin bullets +\\ + Make guillemets space themselves automagically. +%\\ +% Fix design of ogonek letters \A, \E, \a, \e. +\\ + Make head of \P{} solid. +%\\ +% Tidy up the ^|fontinst| encoding files so that they can be +% included in future releases. +%\\ +% Need a two drop-in \LaTeX\ style option files---one for standard +% \LaTeX, one for \LaTeX+NFSS. +\\ + The kerning table is incomplete---I need to develop a + systematic method for thrashing one out in the absence of a + decent typesetter or enough specialized knowledge. Donation of + a kerning table or clever software for generating same would be + appreciated. +%\\ +% Need some way of generating VF or VPL files automatically. +\\ + Some composite letters are missing or hastily designed. I need + to do more research into other latin-alphabet languages (so that + I know how to draw their special letters). +\\ + Find example texts containing some of the more esoteric special + letters (such as "\NG"). +\\ + Rethink the proportions of small-capital letters. +%\\ +% Obtain more greek newspapers and magazines and design a +% lower-case greek alphabet. +\\ + Learn Russian and design a Cyrillic alphabet. +\\ + Script alphabets. (Just an idea.) +%\\ +% The figures need to be overhauled---the `8' fails horribly in +% all sorts of conditions. +%\\ +% Lower-case "e" should be different in italic. +\\ + Documentation of the \MF\ code is incomplete---and some of the + code might usefully be rationalized. +\end bullets + +%}}} to do +\input mabib +%{{{ index + +\vfill\eject +\begingroup \leftmargin=0pt \setncolumns3 \notefonts + \section{Index} + + \leftskip=1em \parindent=-\leftskip \parskip=0pt plus 1pt + \let\vn=\n + +\inputifexists{\jobname.ind} + +\vfill\eject + +\endgroup + +\index{New Font Selection Scheme|see{NFSS}} + + +%}}} index +\iflong +%{{{ colphon + +\vfill\eject + +\section{Colophon} + + This manual was of course typeset using \TeX\ with Malvern + fonts. The manuscript was edited using Richard Stallman's GNU + Emacs extensible text-editor, with the CMU\TeX\ Major Mode by + Olin Shivers et al. The DVI files were previewed with |xdvi|, + and converted into \PS\ using Tomas Rokicki's excellent |dvips| + printer driver. + + The body text is set in 10/12 pt Malvern~55, with Malvern~56 + italics and Malvern~75 boldface. + +%}2}} colphon +\fi + +%}}} Appendix +%{{{ preliminary matter + +\vfill\eject +\pageno=-1 +\mark{{}{}} + +\begingroup +\headline={\hfil} \footline={\hfil} +\iftwosided +%{{{ half-title + +\null +\vskip 0pt plus 1fil + +\line{\bigrm\spaceskip=0pt plus 1fil M A L V E R N} + +\vskip 0pt plus 1.5fil +\eject + +\line{}\vfill\eject % fronticepiece + +%}}} +\fi +%{{{ title page + title verso + +\null +\vfill + +\leftline{\bigrm The \iflong\else abridged\fi} +\vskip 24pt +\leftline{\hugerm\spaceskip=-0.05em M A L\kern-0.1em V E R N} +\vskip 18pt +\rightline{\hugerm\spaceskip=-0.05em h a n d b o\kern-0.025em o k} +\vskip36pt + \leftline{\headingfonts P. Damian Cugley} +\vfill + +\iftwosided + Alleged Literature, Oxford. + + \eject\null\vfill +\fi + +\parindent=0pt \parskip=1ex \leftskip=-\leftmargin + + \copyright\ $1991$--$1994$ P. Damian Cugley. + + The right of Damian Cugley to be identified as the author of + this work has been asserted in accordance with British copyright + law. + + Permission is granted by the copyright holder to copy, use and + and distribute verbatim copies of the Malvern package and this + handbook without fee so long as ($1$)~the above copyright + messages and this permissions message are preserved intact on + all copies; and ($2$)~neither the name of Damian Cugley nor that + of Oxford University be used in any related promotion or + advertising without prior written consent. (Merely + acknowledging copyright would not count as contradicting~($2$).) + + {\bf Caveat}\quad This documentation is incomplete. + +\bigskip + This document describes \package. + + \TeX\ was run on this file on \today. +\eject +%}}} +\endgroup + +%{{{ preface +\sectionheading{Preface} + +\dropcap\hugerm + Malvern is a sanserif typeface family: a collection of typefaces + that have been designed together and are intended to coordinate + with each other. (`Sanserif' comes from the French {\it sans + serif\/} and means that the arms and stems of letters do not + have the small finishing strokes called serifs.) This handbook + describes an implementation of Malvern created for use with + \TeX, a fiendish typesetting system devised by ^^{Knuth, Donald + E.} Donald~E.\ Knuth. Like Knuth's own Computer Modern family, + Malvern is implemented as a set of files which are interpreted + by \MF, a companion program to \TeX\ which is included in most + \TeX\ systems. + +\iflong + The reader may be surprised that a typeface needs a `handbook' + like this one at all---after all, we do not see books called + `The Garamond User Guide' or `How to get more from your Bodoni'. + This is partly because of the nature and rarity of \MF\ fonts: they + are individually-crafted programs, whereas commercial fonts are + produced systematically using standard software. Partly it is + because the Computer Modern family is so thoroughly installed + into plain \TeX\ and standard \LaTeX\ that some effort is needed + to switch it over to another font family. And finally, there is + the fact that Malvern is itself eccentric and these + eccentricities need explaining. + + My motivation to create Malvern comes from two sources. + Firstly, the \TeX\ system has always suffered from a dearth of + font designs: In the standard \TeX\ distribution, there are two + sanserif families (Computer Modern Sans Serif and CM Sans Serif + Quotation) both of which are derived from the same character + programs as the Computer Modern fonts. This is a nice gimmick, + but in practice the natures of sanserif and serif faces are so + much at odds that they cannot be usefully merged into one + `meta-design'. +% In particular, the capitals of \cmrname{CMSS} +% and \cmrname{CMSSQ} do not seem to me to coordinate well with +% their lower case. The $x$-height for \cmrname{CMSS} is small +% for a sanserif font, and makes it look top-heavy---but a +% side-effect of increasing the $x$-height in \cmrname{CMSSQ} is +% to make the capitals so extended as to be distended. +% My attempts to coax what I~considered to be a nice sanserif face +% out of the CM programs---with all sorts of hacks and +% fudges---became more and more elaborate, but to no avail. + Of course there are many wonderful faces available + commercially---but I have no money with which to buy them. (One + of the great things about \TeX\ is that it is free, so that + quality typesetting is available to any sufficiently-motivated + pauper with access to a computer.) + + The second main impetus was more immediate---it was the + publication of the proposed standard \TeX\ font encoding in + \TUGboat\ (the \TeX\ User Group journal). I~wanted to write an + article or letter about this---but to do so I~needed to be able + to include many peculiar symbols in a \TeX\ document. After my + first attempts (creating a font to augment Computer Modern) it + seemed obvious that designing a new font from scratch would be + less effort in the long run than trying to come up with a bodge + to patch existing fonts. +\fi + + This handbook describes my implementation of Malvern and some + ways in which Malvern can be used with \TeX\ (both plain \TeX\ + and with the \LaTeX\ macro package). +\iflong + It also includes + information that relates to Malvern in general, as opposed to + any one implementation in particular. It is possible that at + some future date someone will make versions of Malvern fonts for + other systems, in which case they will surely supply their own + handbook to supplement this one. + + Different parts of this handbook will be relevant to different + people. The first sections describe Malvern as it is used in + \TeX\ (or \LaTeX) documents, including the developement of \TeX\ + macros to take advantage of Malvern's features (these are aimed + at \TeX\ experts and should be ignored by people who want merely + to have a system that works). + + Later sections give an outline of the \MF\ code used to + implement Malvern. I~will not describe it in great detail but + I~will attempt to outline some of its weirder features. This + section is for the satisfaction of myself and other \MF-hackers, + and is of even less interest to the typical Malvern user than + the \TeX\ programming. +\fi + + The appendix includes a summary of how to install Malvern, some + of the code described in previous sections, some tables (useful + or otherwise) and a list of books and articles referenced + elsewhere. + +\rightline{Damian Cugley, June \n{1994}} + +%}}} +%{{{ TOC +\sectionheading{Table of Contents} + +\immediate\closeout\TOCfile +\begingroup + +\def\TOCentrysubsec#1#2#3{#1\ #2\quad} + +\input \jobname.toc +\endgroup +%}}} +%}}} preliminary matter +\bye +%}}} maman.tex + + +%Local variables: +%fold-folded-p: t +%tex-has-children: t +%fill-prefix: "\t" +%End: + diff --git a/fonts/malvern/doc/maman.toc b/fonts/malvern/doc/maman.toc new file mode 100644 index 0000000000..b13d185e98 --- /dev/null +++ b/fonts/malvern/doc/maman.toc @@ -0,0 +1,56 @@ +\TOCentrysection{$ \textfont 0=\font 1 $}{Conventions used in this handbook}{2} +\TOCentrysubsec{$ \textfont 0=\font 1.1 $}{Citations and references}{2} +\TOCentrysubsec{$ \textfont 0=\font 1.2 $}{Syntax descriptions}{2} +\TOCentrysubsec{$ \textfont 0=\font 1.3 $}{Composite letters}{2} +\TOCentrysubsec{$ \textfont 0=\font 1.4 $}{Hyphens and dashes}{2} +\TOCentrysubsec{$ \textfont 0=\font 1.5 $}{Sundry quotation marks}{3} +\TOCentrysubsec{$ \textfont 0=\font 1.6 $}{How to refer to Malvern fonts}{3} +\TOCentrysection{$ \textfont 0=\font 2 $}{Malvern's font names}{4} +\TOCentrysubsec{$ \textfont 0=\font 2.1 $}{Numeric style codes}{4} +\TOCentrysubsec{$ \textfont 0=\font 2.2 $}{The style codes used with Malvern}{4} +\TOCentrysubsec{$ \textfont 0=\font 2.3 $}{\TeX \ font names}{4} +\TOCentrysubsec{$ \textfont 0=\font 2.4 $}{Naming Malvern fonts in Karl Berry's system}{5} +\TOCentrysection{$ \textfont 0=\font 3 $}{Using Malvern with \LaTeXe \ or NFSS\vn 2}{6} +\TOCentrysubsec{$ \textfont 0=\font 3.1 $}{Background to \LaTeXe }{6} +\TOCentrysubsec{$ \textfont 0=\font 3.2 $}{NFSS\vn 2}{6} +\TOCentrysubsec{$ \textfont 0=\font 3.3 $}{Malvern in NFSS\vn 2}{7} +\TOCentrysection{$ \textfont 0=\font 4 $}{Using Malvern with \LaTeX ~\n {2.09}}{7} +\TOCentrysubsec{$ \textfont 0=\font 4.1 $}{Using NFSS}{7} +\TOCentrysubsec{$ \textfont 0=\font 4.2 $}{Making fonts change size without NFSS}{8} +\TOCentrysubsec{$ \textfont 0=\font 4.3 $}{Which fonts to use with \LaTeX \ \n {2.09}}{9} +\TOCentrysection{$ \textfont 0=\font 5 $}{Using Malvern with plain \TeX : {\tt maamac.tex}}{9} +\TOCentrysubsec{$ \textfont 0=\font 5.1 $}{Ligatures}{9} +\TOCentrysubsec{$ \textfont 0=\font 5.2 $}{Special letters}{10} +\TOCentrysubsec{$ \textfont 0=\font 5.3 $}{Sundry symbols}{10} +\TOCentrysubsec{$ \textfont 0=\font 5.4 $}{Old-style and ranging numerals}{11} +\TOCentrysubsec{$ \textfont 0=\font 5.5 $}{Small captials}{11} +\TOCentrysection{$ \textfont 0=\font 6 $}{The encoding of Malvern fonts}{12} +\TOCentrysubsec{$ \textfont 0=\font 6.1 $}{The Malvern font-encoding conventions}{12} +\TOCentrysubsec{$ \textfont 0=\font 6.2 $}{Malvern A Encoding}{12} +\TOCentrysubsec{$ \textfont 0=\font 6.3 $}{Malvern B Encoding}{14} +\TOCentrysubsec{$ \textfont 0=\font 6.4 $}{Malvern C Encoding}{15} +\TOCentrysubsec{$ \textfont 0=\font 6.5 $}{Malvern G encoding}{15} +\TOCentrysection{$ \textfont 0=\font 7 $}{Composite letters used in some languages}{17} +\TOCentrysection{$ \textfont 0=\font 8 $}{Installation summary}{18} +\TOCentrysubsec{$ \textfont 0=\font 8.1 $}{Getting Malvern via FTP}{18} +\TOCentrysubsec{$ \textfont 0=\font 8.2 $}{Generic driver file}{18} +\TOCentrysubsec{$ \textfont 0=\font 8.3 $}{Malvern encodings}{18} +\TOCentrysubsec{$ \textfont 0=\font 8.4 $}{Malvern font names}{18} +\TOCentrysubsec{$ \textfont 0=\font 8.5 $}{Unpacking Malvern}{19} +\TOCentrysubsubsec{$ \textfont 0=\font 8.5.1 $}{Source files ({\tt /source})}{19} +\TOCentrysubsubsec{$ \textfont 0=\font 8.5.2 $}{Driver files ({\tt /drivers})}{19} +\TOCentrysubsubsec{$ \textfont 0=\font 8.5.3 $}{\TeX \ input files ({\tt /tex})}{19} +\TOCentrysubsubsec{$ \textfont 0=\font 8.5.4 $}{Documentation files ({\tt /doc}, {\tt /dvi})}{19} +\TOCentrysubsubsec{$ \textfont 0=\font 8.5.5 $}{Virtual font files ({\tt /vf})}{20} +\TOCentrysubsubsec{$ \textfont 0=\font 8.5.6 $}{Font metric files ({\tt /tfm})}{20} +\TOCentrysubsec{$ \textfont 0=\font 8.6 $}{Using mff to generate Malvern fonts}{20} +\TOCentrysubsec{$ \textfont 0=\font 8.7 $}{Generating Malvern fonts without mff}{20} +\TOCentrysubsubsec{$ \textfont 0=\font 8.7.1 $}{Values for {\it encoding}}{21} +\TOCentrysubsubsec{$ \textfont 0=\font 8.7.2 $}{Values for {\it weight}}{21} +\TOCentrysubsubsec{$ \textfont 0=\font 8.7.3 $}{Values for {\it hratio}}{22} +\TOCentrysubsubsec{$ \textfont 0=\font 8.7.4 $}{Values for {\it slant} and {\it italicness}}{22} +\TOCentrysection{$ \textfont 0=\font 9 $}{Copying Malvern and reporting bugs}{23} +\TOCentrysection{$ \textfont 0=\font 10 $}{Fontinst}{23} +\TOCentrysection{$ \textfont 0=\font 11 $}{To-do list}{24} +\TOCentrysection{$ \textfont 0=\font 12 $}{References}{25} +\TOCentrysection{$ \textfont 0=\font 13 $}{Index}{28} diff --git a/fonts/malvern/doc/pdcdcap.tex b/fonts/malvern/doc/pdcdcap.tex new file mode 100644 index 0000000000..458c2da737 --- /dev/null +++ b/fonts/malvern/doc/pdcdcap.tex @@ -0,0 +1,28 @@ +% pdcdcap.tex - drop capitals for start of paragraphs +% Copyright (C) 1990-1991 Damian Cugley + +\newcount\dropcaptmp + +% #1 -- font to use +% #2 -- letter to use as dropcap +% #3 -- rest of 1st word +% #4 -- second word of paragraph +% +\gdef\dropcap#1#2#3 #4 % +{% + \smallbreak % finish previous par + \setbox0=\hbox{#1hX\/}\dimen0=\ht0 + \setbox0=\hbox{hX}\advance\dimen0 by -\ht0 % d := ht(#1X) - ht(X) + \dropcaptmp=\dimen0 \advance\dropcaptmp+\hfuzz + \divide\dropcaptmp\baselineskip \global\advance\dropcaptmp +1 + % c := ((d + hfuzz)/bl + 1) + \message{bl=\the\baselineskip\space d=\the\dimen0 \space + c=\the\dropcaptmp } + \dimen0 = \dropcaptmp\baselineskip \advance\dimen0 by -\baselineskip + % d := (c - 1)*bl + \setbox0=\hbox{#1\kern-0.0555em#2\/}% + \setbox0=\hbox{\smash{\lower\dimen0 \box0 }}% + \hangindent=\wd0 \hangafter=-\dropcaptmp + {\parindent=0pt \leavevmode}% + \llap{\box0 }\uppercase{#3}\space \uppercase{#4}\space +} diff --git a/fonts/malvern/doc/pdcfmt.tex b/fonts/malvern/doc/pdcfmt.tex new file mode 100644 index 0000000000..9c16d8f366 --- /dev/null +++ b/fonts/malvern/doc/pdcfmt.tex @@ -0,0 +1,361 @@ +% pdcfmt.tex 1.1.9 1994/07/20 -- macros for larger-scale formatting of text +% Copyright 1991, 1992, 1993 P. Damian Cugley. + +%%% @TeX-macro-file { +%%% filename = "pdcfmt.tex", +%%% version = "1.1.9", +%%% date = "1994/07/20", +%%% package = "Malvern 1.1", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "TeX, plain TeX, macros", +%%% supported = "Maybe", +%%% abstract = "Formatting macros for plain TeX documents.", +%%% dependencies = "pdcutil.tex", +%%% } + +%{{{ pdcfmt.tex +\begingroup\catcode`\%=12 \toks0={\endgroup + \gdef\version{1.1.9} \gdef\lastedit{pdc 1994/07/20} +}\the\toks0 +\message{\version\space \lastedit} +\ifx\utilsversion\UNDEFINED \input pdcutil \fi + +%{{{ \everypar -- \noindenttrue and \parbox + +\newif\ifnoindent +% If set then next paragraph is not indented + +\newbox\parbox +\newdimen\parboxsep \parboxsep=1pc +% box to go at left of current paragraph -- usually a \vtop or void: +% If not void then next paragraph is not indented, and +% the box is set \parboxsep from left margin. + +\everypar= +{% + \ifvoid\parbox + \ifnoindent {\setbox0=\lastbox}\global\noindentfalse \fi + % after \noindent this has no effect anyway + \else + {\setbox0=\lastbox}\global\noindentfalse % implied noindenttrue + \dp\parbox=0pt + \hbox to 0pt{\hss \box\parbox \hskip\parboxsep}% + \fi +} +%}}} +\newdimen\envindent \envindent=1pc % used when \parindent=0pt +\def\endenv +{ + \par + \ifdim\lastskip<\smallskipamount \removelastskip\smallskip \fi + \global\noindenttrue +} + % generic end of environ. +%{{{ Bullets + +\newcount\bulletlevel \bulletlevel=-1 +\def\bulletsign +{% + \ifcase\bulletlevel \bullet\or --\or \circ\else \cdot\fi +} + +\def\bullets +{% + \par + \advance\bulletlevel 1 + \def\\{\smallskip\noindent\llap{\bulletsign\enspace}\ignorespaces} + \ifdim\parindent>0pt + \advance\leftskip\parindent + \else + \advance\leftskip\envindent + \fi + \the\everybullets +} + +\let\endbullets=\endenv + +\newcount\enumerateitem +\def\enumerate +{% + \global\enumerateitem=0 + \def\bulletsign{\global\advance\enumerateitem1 \n{\the\enumerateitem}.}% + \bullets +} + +\let\endenumerate=\endbullets +%}}} +%{{{ Tagged + +\newdimen\taglabelwidth +\def\tagged % like bullets, but with tags +{% + \par + \def\\% + { + \smallskip\noindent + \setbox0=\hbox\bgroup % matched by \finishtag + \the\everytag\ignorespaces + \let\\\finishtag + } + \def\finishtag + { + \unskip\enspace\egroup % matches \\ + \ifdim \wd0 < \taglabelwidth + \wd0=\taglabelwidth + \llap{\box0}% + \else + \hskip-\taglabelwidth + \unhbox0 + \hfil\break + \vadjust{\nobreak}% + \fi + \ignorespaces + } + \ifdim\leftmargin=0pt + \ifdim\parindent>0pt + \envindent=2\parindent + \fi + \leftskip=\envindent + \taglabelwidth=\envindent + \else + \taglabelwidth=\leftmargin + \fi + \the\everytagged +} + +\let\endtagged=\endenv +%}}} +%{{{ Quotations + +\def\quotation +{ + \smallskip + \ifdim\parindent>0pt + \advance\leftskip\parindent % \advance\rightskip\parindent + \else + \advance\leftskip\envindent % \advance\rightskip\envindent + \fi + \noindenttrue + \the\everyquotation +} +\let\endquotation=\endenv +%}}} +%{{{ lines (for verbatim listings etc) + +\def\lines +{ + \smallskip\hrule\nobreak\smallskip + \obeylines + \parindent=0pt \parskip=0pt + \parfillskip=0pt plus 1fil + \the\everylines % user chooses font to use + \counta=0 \countb=5 \everypar{\linenum}% number lines + % % Cut into left margin to allow for at least 72 columns: + % \leftskip=-\leftmargin \advance\leftskip2em % space for ~3 digits + % \setbox0=\hbox{\tt x}\dimen0=-72\wd0 % estimate of 72 \tt characters + % \advance\dimen0\hsize + % \ifdim\leftskip<\dimen0 \leftskip=\dimen0 \fi + \let\end\linesend +} + +\let\normalend\end +{\obeylines \gdef\linesend#1^^M{\normalend #1 }} + +\def\endlines +{ + \par + \ifdim\lastskip<\smallskipamount \removelastskip\nobreak\smallskip \fi + \hrule\smallskip + \global\noindenttrue +} + +\def\linesskipped#1% +{% + \hskip20pt\strut$\vdots$\hskip20pt{\rm(\it #1 lines omitted\rm)}\par + \advance\counta#1\relax +} +%}}} +%{{{ Displays, Tables -- wrapper about \halign + +% \begin table #\hfil&#\cr +% ...&...\cr +% \end table + +\def\table +{ + \noindent + $$ % matching $$ is in \endtable + \halign \bgroup\indent +} +\def\endtable +{ + \crcr \egroup $$ % matches $$ in \table + \global\noindenttrue +} + +% Random displayed text +% +% \begin display +% ... [&...\cr...] +% \end display + + +\def\display +{% + $$% $$ for matching + \halign\bgroup\indent##\hfil&&\quad##\hfil\cr +} + +\def\enddisplay +{% + \crcr + \egroup% $$ for matching + $$ +} + +%}}} +%{{{ (E)BNF + +\def\bnf +{ + \nobreak\smallskip + \advance\leftskip2\parindent \parindent=-\parindent + \parskip=0.5\smallskipamount + \rightskip=1\rightskip plus 3em + \def\\{$\mid$} % use \\ for alternatives + \def\>{\unskip\enspace$::=$\enspace\ignorespaces} + \def|{`\begingroup\tt\setupverbatim\def|{\endgroup'}} + \chardef\*=`\* + \the\everybnf +} +\def\endbnf +{ + \smallskip + \global\noindenttrue +} + +\newtoks\everybnf + +%}}} +%{{{ headings + +\newdimen\leftmargin % size of left margin +% Set this to 0pt for headings in text, and > 0pt for left margin headingfs +% + +% #1 is skip before -- usu bigskip or medskip +% #2 is pre-text text -- usu. style: e.g. \headerfonts or just \bf +% #3 is post-text text -- e.g. to do a rule, maybe? +% #4 is text of heading +% +\newskip\headingtemp +\def\doheading#1#2#3#4% +{ + \ifdim\lastskip<#1\relax \removelastskip \vskip#1\relax \fi + \ifdim \leftmargin>0pt + \global\setbox\parbox=\vtop + {% + \hsize=\leftmargin \advance\hsize-\parboxsep + \parindent=0pt + \leftskip=0pt \rightskip=0pt plus 3em + \hyphenpenalty=10000 \exhyphenpenalty=5000 + \strut#2#4#3 + } + \else + \begingroup + \parindent=0pt \parfillskip=0pt plus 1fil + \leftskip=0pt \rightskip=0pt plus0.25\hsize + \hyphenpenalty=10000 \exhyphenpenalty=5000 + \strut#2#4#3 + \global\headingtemp=\baselineskip % sets fixed part only + \par + \endgroup + \advance\headingtemp-\baselineskip +% \advance\headingtemp\smallskipamount + \nobreak + \vskip 1.0\headingtemp + \smallskip + \noindenttrue + \fi +} + +% #1 is white space at top of page +% #2 is pre-text +% #3 is post-text +% #4 is text of heading +% +\def\newpageheading#1#2#3#4% +{ + \vfill\supereject % ensure no insertions still floating + \null\vskip#1\relax + \moveleft\leftmargin\vbox + { + \advance\hsize\leftmargin + \parindent=0pt \parfillskip=0pt plus 1fil + \leftskip=0pt \rightskip=0pt plus0.25\hsize + \hyphenpenalty=10000 \exhyphenpenalty=5000 + \strut#2#4#3 + \global\headingtemp=\baselineskip % sets fixed part only + \par + } + \advance\headingtemp-\baselineskip + \advance\headingtemp\smallskipamount + \vskip \headingtemp + \smallskip + \noindenttrue + \def\tmp{#4} + \message{*\expandafter\TOCtrim\meaning\tmp. } +} +%}}} +%{{{ footnotes + +\newcount\notecount % initially 0 +\def\note +{% + \global\advance\notecount+1 + \footnote{\number\notecount}% +} + +\catcode`\@=11 % See TeXbook p.363: +\def\footnote#1{\let\@sf\empty + \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi + \flushtop{\footnotetextmark{#1}}\@sf\vfootnote{#1}} +\def\vfootnote#1% +{\insert\footins\bgroup % matched by \@foot + \interlinepenalty=\interfootnotelinepenalty + \leftskip=0pt + \the\everyfootnote + \splittopskip=\ht\strutbox \splitmaxdepth=\dp\strutbox + \floatingpenalty=20000 + \indent\footstrut + \ifdim\parindent>1em + \llap{\footnotenotemark{#1}\enspace}% + \else + \footnotenotemark{#1}\enspace + \fi + \futurelet\next\fo@t +} +\def\@foot{\smallskip\egroup} +\catcode`\@=12 +\def\footnotetextmark#1{$^{#1}$} +\def\footnotenotemark#1{$^{#1}$} +%}}} +%{{{ Hooks + +\newtoks\everybullets +\newtoks\everytagged +\newtoks\everytag % e.g., \everytag={\bf} +\newtoks\everyquotation % e.g., \everyquotation={\smallfonts} +\newtoks\everylines +\newtoks\everyfootnote +\newtoks\everyfootnotemark%} }} +%}}} pdcfmt.tex + +%Local variables: +%fold-folded-p:t +%tex-macros-p:t +%End: diff --git a/fonts/malvern/doc/pdcfsel.tex b/fonts/malvern/doc/pdcfsel.tex new file mode 100644 index 0000000000..0333142282 --- /dev/null +++ b/fonts/malvern/doc/pdcfsel.tex @@ -0,0 +1,209 @@ +%{{{ pdcfsel.tex 1.1.6 92/07/17 -- basic font loading +% started - Damian Cugley <pdc@prg.ox.ac.uk> Tue. 23 Apr. 1991 +{\catcode`\%=12 \gdef\ldfontsversion{1.1.6 <pdc 92/07/17>}} +% \catcode for SCCS's sake + +\ifx\utilsversion\UNDEFINED \input utils \fi +\counta=\catcode`\_ \catcode`\_=11 + +%{{{ setting the AUTOLOAD flag + +% If autoloading is true then the magnification and fonts used +% are written to a file \jobname.fnt in the hope that it will be +% possible to create them easily using the mff program. + +\newwrite\font_list +\newif\if_autoloading + +\def\autoloadfonts % set autoload flag to TRUE +{ + \_autoloadingtrue + \immediate\openout\font_list=\jobname.fnt + \def\setmag##1{\writemag{##1}\mag##1\relax} +} + +\def\setmag#1{\mag=#1\relax \write_mag } + +\def\write_mag#1% #1 is file #2 is mag +{{% + \def\magstep##1{\ifcase##1 1000\or1200\or1440\or1728\or2074\or2488\fi}% + \edef\tmp{-s #1}% + \write\font_list\tmp +}} + +%}}} +%{{{ how to set up the csname for one font + +% All parameters are token strings +% #1 is fontset name, e.g., body +% #2 is the size part of external name +% -- either ` at 12pt' or `12' +% #3 is fam name -- e.g., rm +% #4 is "external" name sans size info -- e.g., cmbx +% This does the equivalent of \font\bodyrm=cmbx12 +% except if autoloading then the actual \font is delayed. +\def\ld_font#1#2#3#4% +{\expcs\ifx{#1#3}\relax + \if_autoloading + \expcs\edef{#1#3}% + {% + \write\font_list{#4#2}% make note that font used + \def\noexpand\subfont + {\global\font\noexpcs{#1#3}=cmr10 }% use i\subfont if not found + \global\font\noexpcs{#1#3}=#4#2\relax % load the font + \noexpand\everyloadfont\noexpcs{#1#3}{#4#2}% hook + \expcs\noexpand{#1#3}% and select it + }% + \else + \global\expcs\font{#1#3}=#4#2\relax + \expcs\everyloadfont{#1#3}{#4#2}% + \fi + \else + % The font is already loaded; call \everyloadfont anyway + \expcs\everyloadfont{#1#3}{#4#2}% + \fi +} + +% Ad-hoc laoding of fonts by user +% #1 is csname +% #2 is tokens for external name +\def\ldfont#1#2% +{% + {\escapechar=-1\xdef\ldfont_tmp{{\string#1}}}% get name sans \ + \expandafter\ld_font\ldfont_tmp{#2}{}{}% +}% +%{% +% \if_autoloading \write\font_list{#2}\fi +% \def\subfont{\font#1=cmr10 }% +% \global\font#1=#2\relax +% \everyloadfont#1{#2}% +%} + +% Hook for user's customization +% #1 is one token, the csname of the newly-loaded font +% #2 is token string that is its external name +\def\everyloadfont#1#2{} +%}}} +%{{{ how to set up a fontset + +% fontset map macro: +% \FOOmap is of form {\m{rm}{ma}[\@]\f{it}{mai}...} +% \f -- non-maths font +% \m -- maths font (has \textfont and \scriptfont) +% \M -- ditto plus \scriptscriptfont + +% Set up a fontset +% #1 is name +% #2 is \FOOmap +% #3 is size +% #4 is baselineskip +% #5 is script (fontset name) +% #6 is scriptscript +\def\fontset#1#2#3#4#5#6% +{ + \xfontset{#1}{#2}{#3} + % + % set up the \bodyfonts macro + \expcs\edef{#1fonts}% + {% + \if_autoloading \expcs\noexpand{#1mathsfonts}\fi + \noexpand\set_short_names{#1}{#5}{#6}\noexpand#2% + % \def\rm{...}... + % \textfont\rmfam\bodyrm + \noexpand\set_baseline{#4}% set \baselineskip etc. + \noexpand\rm + } + \if_autoloading + % set up \bodymathsfonts macro + \expcs\def{#1mathsfonts}{\force_maths_fonts{#1}{#5}{#6}#2} + \fi +} + +% xfontset can be used to make a fontset that is never selected +% in its own right -- e.g., used for maths subscripts only +% +% #1 is name +% #2 is map macro +% #3 is size +\def\xfontset#1#2#3% +{ + % call \ld_font for each font: + \def\f##1##2{\ld_font{#1}{#3}{##1}{##2}} + \let\m=\f \let\M=\f + \def\@##1##2##3{\ld_font{#1}{ at #3pt }{##2}{##3}}% + #2 +} + +% Set up the \rm style names and the \textfont etc. vectors +% #1 -- fontset name -- e.g., body +% #2 -- script -- e.g., small +% #3 -- scriptscript -- e.g., tiny +% followed by map macro +\def\set_short_names#1#2#3% +{% + \let\@\relax + \def\f##1##2% + {% + \expcs\edef{##1}{\noexpcs{#1##1}}% has to be def'd not let'd + }% + \def\m##1##2% + {% + \expcs\textfont{##1fam}\csname#1##1\endcsname + \expcs\scriptfont{##1fam}\csname#2##1\endcsname + \expcs\edef{##1}{\fam\expcs\noexpand{##1fam}\expcs\noexpand{#1##1}}% + }% + \def\M##1% + {% + \expcs\scriptscriptfont{##1fam}\csname#3##1\endcsname + \m{##1}% + }% +} + +\def\set_baseline#1% +{% + \baselineskip#1\relax \normalbaselineskip\baselineskip + \jot0.25\baselineskip + \smallskipamount 0.25\baselineskip plus 0.083\baselineskip + minus 0.083\baselineskip + \medskipamount 0.5\baselineskip plus 0.167\baselineskip + minus 0.167\baselineskip + \bigskipamount 1\baselineskip plus 0.333\baselineskip + minus 0.333\baselineskip + \abovedisplayskip=\medskipamount + \abovedisplayshortskip=\abovedisplayskip + \advance\abovedisplayshortskip-1\abovedisplayskip + \belowdisplayskip=\medskipamount + \belowdisplayshortskip=\smallskipamount +} + +% Force all the fonts used in maths to be loaded -- +% then redefine #1mathsfonts to be \relax +% #1 -- fontset name +% #2 -- script fontset name +% #3 -- scriptscript fontset name +\def\force_maths_fonts#1#2#3% +{% + %\message{Loading maths fonts for #1...}% + \let\@\relax + \def\f##1##2{}% + \def\m##1##2{\csname#1##1\endcsname \csname#2##1\endcsname}% + \def\M##1{\csname#3##1\endcsname \m{##1}}% + \global\expcs\let{#1mathsfonts}\relax +} +%}}} +%{{{ example fontset templates + +\chardef\rmfam=0 +\chardef\mifam=1 +\chardef\syfam=2 +% \itfam \bffam \ttfam \slfam set in plain.tex + +%}}} + +\catcode`\_=\counta +%}}} pdcfsel.tex + +%Local variables: +%fold-folded-p: t +%tex-macros-p: t +%End: diff --git a/fonts/malvern/doc/pdchyex.tex b/fonts/malvern/doc/pdchyex.tex new file mode 100644 index 0000000000..6686b7a164 --- /dev/null +++ b/fonts/malvern/doc/pdchyex.tex @@ -0,0 +1,38 @@ +\lefthyphenmin=2 \righthyphenmin=3 \uchyph=0 + +\hyphenation +{ + anth-ro-po-morphic + art-iest cig-ar-ette + bio-logy bio-chem-ic-al bio-chem-is-try + boy-friend + Brit-ain Brit-ish + com-ic com-ics Com-ic Com-ics + con-fuse con-fused Cug-ley + dogs-body + Dor-mouse + Gai-man + graph-ic + im-med-i-ate im-med-i-ately issue + McKean + mis-hap mis-haps + news-letter news-paper + Night-crawler + origin-ally origin-ator + phys-ique phys-iques + porn-o-graphy porn-o-graphic + rec-om-mend-ation + Ser-geant ser-geant + Sien-kie-wicz + spon-tan-e-ous spon-tan-e-ously + stop-ped + strip-ped + teen-ager teen-agers + tem-per-men-tal + Thatch-er-ism Thatch-er-ite + under-ground under-grounds + var-i-able + venge-ance + Warp-smith Warp-smiths + whirl-pool +} diff --git a/fonts/malvern/doc/pdcidx.tex b/fonts/malvern/doc/pdcidx.tex new file mode 100644 index 0000000000..393049d234 --- /dev/null +++ b/fonts/malvern/doc/pdcidx.tex @@ -0,0 +1,133 @@ +%{{{ %M% 1.%I% pdc %E% -- indexing macros + +%%Requires: utils.tex + +% This is the interface to the makeindex program + +\message{starting index file} +\newwrite\idxfile +\openout\idxfile=\jobname.idx + +% Use Knuth's ^ and ^^ notations. +\newif\ifsilentidx +\def\idxcirk{\ifmmode\def\next{^}\else\let\next=\idxbegin\fi\next} +\def\idxbegin{\futurelet\next\idxbeginswitch} +\def\idxbeginswitch +{% + \ifx\next\idxcirk + \let\next=\idxsilent + \else + \silentidxfalse + \let\next=\idx + \fi + \next +} +\catcode`\^=13 \let^=\idxcirk +\macappend\verbatimplains{\\\^} +\def\idxsilent^{\silentidxtrue\idx} + +% ^{foo} ^|foo| ^|\foo| ^<foo> ^$foo$ +\def\idx{\futurelet\next\idxswitch} +\def\idxswitch +{% + \begingroup + \ifx\next|% + \aftergroup\vidx + \else\ifx\next\<% + \aftergroup\angleidx + \else\ifx\next$% $ for bracket matching + \aftergroup\mathsidx + \else\ifx\next"% $ for bracket matching + \aftergroup\quotedidx + \else + \aftergroup\normalidx + \fi\fi\fi\fi + \endgroup +} +\def\vidx|% +{% + \catcode`\\=13 % prevent "\" from forming control sequences + \futurelet\next\vidxswitch +} +\def\vidxswitch% +{% + \catcode`\\=0 + \ifx\next\empty % ^|\foo| + \let\next\csidx + \else % ^|foo| + \let\next\noncsidx + \fi + \next +} +{\catcode`\@=0 \catcode`\\=13 +@gdef@csidx\#1|% +{% + @def@next{{@tt@char`@\#1}}% + @edef@text{#1}% + @emitidx +}} +\def\noncsidx#1|% +{% + \def\next{{\tt#1}}% + \edef\text{#1}% + \emitidx +} +{\catcode`\@=0 \catcode`\\=13 @gdef\{}} % make "\" ifx-equivalent to \empty + +\def\angleidx\<#1>% +{% + \def\next{\<#1>}% + \def\text{#1}% + \emitidx +} +\def\mathsidx$#1$% +{% + \def\next{$#1$}% + \def\text{#1}% + \emitidx +} +\def\quotedidx"#1"% +{% + \def\next{""#1""}% + \def\text{#1}% + \emitidx +} +\def\normalidx#1% +{% + \def\text{#1}% + \let\next=\text + \emitidx +} + +\def\emitidx +{% + \edef\writeit + {% + \write\idxfile{\string\idx{\expandafter\gobbleARROW\meaning\text + \ifx\text\next\else + @\expandafter\gobbleARROW\meaning\next + \fi}{\noexpand\folio}}% + }% + \writeit + \ifsilentidx \ignorespaces \else \next \fi +} +\def\gobbleARROW#1:->{} + +% The simple case -- write the parameter to the file +\def\index#1{\def\next{#1}\let\text=\next \silentidxtrue\emitidx} +{\plain| + \gdef\dfnidx#1{\index{#1|idxunderline}} + \gdef\qdfnidx#1{\index{#1@""#1""|idxunderline}} +} +\def\ttidx#1{^|#1|} + +% Things that go after `|': +\def\idxunderline#1{$\underline{\hbox{#1}}$} +\def\see#1#2{{\it see}\space #1} + +%}}} %M% + +% Local variables: +% fold-folded-p: t +% tex-macros-p: t +% End: diff --git a/fonts/malvern/doc/pdcimth.tex b/fonts/malvern/doc/pdcimth.tex new file mode 100644 index 0000000000..53b43bb905 --- /dev/null +++ b/fonts/malvern/doc/pdcimth.tex @@ -0,0 +1,25 @@ +% pdcimth.tex 1.1.2 91/12/12 -- make maths use text italic family for letters +% Very few RL families have separate maths and text italic fonts. + +% count0 -- mathcode for current u.c. char +% count1 -- mathcode for current l.c. char +% count2 -- ASCII code of current u.c. char +% count3 -- ASCII code of current l.c. char +% count4 -- number of character left to redefine + +\begingroup % preserve values of count registers + + \count0=\itfam \multiply\count0 256 \advance\count0"7000 \count1=\count0 + \advance\count0+`A \advance\count1+`a + \count2=`A \count3=`a + \count4=26 + + \loop + \ifnum\count4>0 + \advance\count4-1 + \global\mathcode\count2=\count0 \global\mathcode\count3=\count1 + \advance\count0+1 \advance\count1+1 + \advance\count2+1 \advance\count3+1 + \repeat + +\endgroup diff --git a/fonts/malvern/doc/pdcmigr.tex b/fonts/malvern/doc/pdcmigr.tex new file mode 100644 index 0000000000..38a867f2fd --- /dev/null +++ b/fonts/malvern/doc/pdcmigr.tex @@ -0,0 +1,14 @@ +% mitgreek.tex 1.1 -- use CMMI for upper-case Greek letters +% (1) more consistent and (2) works when no greek in \rm font + +\mathchardef\Gamma = "7100 +\mathchardef\Delta = "7101 +\mathchardef\Theta = "7102 +\mathchardef\Lambda = "7103 +\mathchardef\Xi = "7104 +\mathchardef\Pi = "7105 +\mathchardef\Sigma = "7106 +\mathchardef\Upsilon = "7107 +\mathchardef\Phi = "7108 +\mathchardef\Psi = "7109 +\mathchardef\Omega = "710A diff --git a/fonts/malvern/doc/pdcoput.tex b/fonts/malvern/doc/pdcoput.tex new file mode 100644 index 0000000000..c215809fa8 --- /dev/null +++ b/fonts/malvern/doc/pdcoput.tex @@ -0,0 +1,432 @@ +% pdcoput.tex 4.1.6 1994/07/20 -- output routines for Stomping Scene +% Copyright 1994 P. Damian Cugley + +%%% @TeX-macro-file { +%%% filename = "pdcoput.tex", +%%% version = "4.1.6", +%%% date = "1994/07/20", +%%% package = "Malvern 1.1", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "TeX, plain TeX, output routine", +%%% supported = "Maybe", +%%% abstract = "An output routine for Plain TeX docs.", +%%% dependencies = "pdcutil.tex", +%%% } + +% See the Malvern Handbook (maman.tex) for more info about Malvern. +% This software is available freely but without warranty. +% See the file COPYING for details. + +%{{{ pdcoput.tex +%{{{ preamble +\ifx\utilsversion\UNDEFINED \input pdcutil \fi + +\begingroup\catcode`\%=12 \toks0={\endgroup + \def\pdcoputversion{4.1.6 <pdc 1994/07/20>} +}\the\toks0 +\message{\pdcoputversion} + +%}}} preamble +%{{{ parameters + +\newdimen\paperwd \newdimen\paperht % Size of paper +\newdimen\bodywd \newdimen\bodyht % size of page body (text etc.) +\newdimen\gridwd \newdimen\gridht % size of grid slots +\newdimen\colwd \newdimen\colht % width & height of text columns + +\newdimen\topmarge \topmarge=20mm +\newdimen\outmarge \outmarge=20mm +\newdimen\innmarge \innmarge=20mm +\newdimen\botmarge \botmarge=27mm +% Size of top, bottom, inner and outer margins between paper edge and +% edge of page body. +% botmarge is an approximation -- the margin at bottom will be +% increased slightly in order to make \bodyht a good value wrt +% \baselineskip. + +\newskip\headlineskip % distance betw baselines of headline & 1st body line +\newskip\footlineskip % ditto for footline +\headlineskip=10mm \footlineskip=10mm + +\newdimen\outputrule \outputrule=0.1mm % default thickness for rules + +\newdimen\caprule \caprule=\outputrule +\newskip\capsep \capsep=5mm +% rule and separation between caption and body text + +\newdimen\colrule \colrule=\outputrule +\newdimen\colsep \colsep=5mm +% ditto for between columns + +\newcount\ncols \ncols=1 +% Number of columns + +\newbox\partialpage % stores partial pages when balancing columns + +\newbox\topbox \newbox\botbox % vboxes placed around body +\newbox\leftbox \newbox\rightbox % hboxes placed around body + +\chardef\pagebox=255 + +\let\collist\empty % list macro of \makecolumns +\let\pagelist\empty % list macro of \makepages + +\newtoks\everypage % expanded at start of vbox being shipped out +\newtoks\everycaption % expanded at start of every caption + +%}}} parameters +%{{{ make a column (vbox) + +\newdimen\toptotal \newdimen\bottotal + +% Helper macro -- calculate total size of space + caption for +% top/bot of a column +% #1 <dimen name> caculate total into here +% #2 <8-bit number> place cap in this box +% #3 <dimen> space to be left +% #4 text text of caption, or empty +\def\calctotal#1#2#3#4% +{% + \setbox#2=\vbox{\the\everycaption#4}% + #1=\ht#2% + \advance#1\baselineskip \advance#1-1sp + \divide#1\baselineskip \multiply#1\baselineskip + \advance#1#3% + \ifdim#1>0pt \advance#1\capsep \fi +} + +% Create one column of stuff of height \colht, as a vbox +% If \capsep=\baselineskip and captions done in fonts of same +% baselineskip as body, then baselines should all line up neatly +% (this takes some doing!). +% #1 <dimen> space at top of col +% #2 text text of top caption, or empty +% #3 <8-bit number> box to make middle out of +% #4 text text of bot cap, or empty +% #5 <dimen> space at bottom of col +\def\makecolumn#1#2#3#4#5% +{% + \vbox to \colht + { + \calctotal\toptotal0{#1}{#2}% + \calctotal\bottotal2{#5}{#4}% + % + % Chop off enough text to fill in gap: + % + \dimen0=\colht + \ifvoid\footins\else % allow space for footnotes + \advance\dimen0-\ht\footins + \advance\dimen0-\skip\footins + \fi + \ifvoid\topins\else % allow for a \topinsert as well + \advance\dimen0-\ht\topins + \advance\dimen0-\skip\topins + \fi + \advance\dimen0-\toptotal + \advance\dimen0-\bottotal + % + \splittopskip=\topskip + \splitmaxdepth=\maxdepth + \setbox1=\vsplit#3to\dimen0 + % + % Sandwich it all together: + \kern\toptotal + \ifdim \toptotal>0pt + \vbox to 0pt + { + \vss + \box0 +%%%% \kern-\dp\strutbox + \capseprule + \kern-\dp\strutbox + \kern\baselineskip + \kern-\topskip + } + \fi + \ifvoid\topins\else \unvbox\topins \vskip\skip\topins \fi + \dimen0=\dp1 % this will be prevdepth for bot caption + \ifvoid1 \vfil \else \unvbox1 \fi + \ifvoid\footins \else + \vskip\skip\footins + \footnoterule + \dimen0=\dp\footins % revise prevdepth-to-be + \unvbox\footins + \fi + \ifdim \bottotal>0pt + \vbox to 0pt + { + \prevdepth=\dimen0 + \capseprule + \vtop{\unvbox2 } + \vss + } + \kern\bottotal + \fi + \kern-\dimen0 + }% +} + +\def\capseprule +{% + \hbox to \colwd + {% + \dimen0=0.5ex \advance\dimen0-0.5\caprule + \dimen1=\dimen0 \advance\dimen1\caprule + \strut + \vrule height \dimen1 depth-\dimen0 width\colwd + }% +} + +%}}} make a column +%{{{ make body part of page (hbox) + +% Generate a column of text to be put in the current page body +\def\makecolumnfromcollist#1% +{% + \ifx\collist\empty + \makecolumn{0pt}{}{#1}{}{0pt}% + \else + \glop\temp\collist + \temp + \fi +} + +\def\makebody#1% +{% + \hbox to \bodywd + {% + \ifvoid\leftbox\else + \box\leftbox + \hfil \vrule width \colrule \hfil + \fi + \counta=\ncols + \makecolumnfromcollist{#1}% + \loop \ifnum\counta>1 + \hfil \vrule width \colrule depth 0pt \hfil + \makecolumnfromcollist{#1}% + \advance\counta -1 + \repeat + \ifvoid\rightbox\else + \hfil \vrule width \colrule \hfil + \box\rightbox + \fi + }% +} + +%}}} make insides of page (hbox) +%{{{ make a page (vbox) + +% Generate a box to be shipped out as the current page. Used in \output. +\def\makepage +{% + \vbox + { + \special{papersize=\the\paperwd,\the\paperht}% + \colht=\bodyht \advance\colht-\ht\partialpage + \advance\colht-\ht\topbox \advance\colht-\ht\botbox + \the\everypage + \makeheadline \nointerlineskip + \box\partialpage + \box\topbox + \ifx\pagelist\empty + \makebody\pagebox + \else + \glop\temp\pagelist + \temp + \fi + \unvbox\botbox + \makefootline + }% +} + +% Generate vertical meterial with zero height to produce the headline. +% Expanded at very top of vbox being shipped out, +% immediately after the \everypage tokens have been read. +% Used in \makepage. +\def\makeheadline +{ + \vbox to 0pt + { + \skip0=\topskip \advance\skip0-2\ht\strutbox + \advance\skip0-\headlineskip + \vskip\skip0 + \hbox to \bodywd{\strut\the\headline} + \vss + } +} + +% Generate vertical material that gives the footline of the page. +% Expanded immediately after the botbox, as the last thing in the +% box that is shipped out. (Does not need to be zero-height). +\def\makefootline +{{ + \baselineskip=\footlineskip + \hbox to \bodywd{\the\footline} +}} + +%}}} make a page (vbox) +%{{{ output + +\def\ssoutput +{% + \ifodd\pageno \hoffset=\innmarge \else \hoffset=\outmarge \fi + \advance\hoffset-1 true in + \voffset=\topmarge + \advance\voffset-1truein + \shipout\makepage \advancepageno + \ifnum\outputpenalty>-20000 \else \dosupereject \fi + \unvbox\pagebox +} + +\output={\ssoutput} + +%}}} output +%{{{ automated column setting + +% User macro -- set paper size and other corresponding dimens +% Use when body font + baselineskip have already been selected. +% #1 <dimen> width +% #2 <dimen> height +\def\setpaper#1#2% +{% + \paperwd=#1% + \paperht=#2% + \calcbodywdht + \calctopskip +} + +% helper macro -- set bodywd, bodyht +\def\calcbodywdht +{ + \bodywd=\paperwd \advance\bodywd-\outmarge \advance\bodywd-\innmarge + \bodyht=\paperht \advance\bodyht-\topmarge \advance\bodyht-\botmarge + \calctopskip +} + +% set topskip to suit current font +% bodyht is munged to be of the form N*baselineskip + topskip +\def\calctopskip +{ + \setbox0=\hbox{Xbl()!gyJQ,} + \topskip=\ht0 \maxdepth=\dp0 + \advance\bodyht-\topskip \divide\bodyht \baselineskip + \multiply\bodyht \baselineskip \advance\bodyht\topskip +} + +% helper macro +% set hsize and vsize appropriate to current #cols, topskip, bodyht, +% and bodywd +% if bodyht = N * baselineskip + topskip, for some N, then set +% vsize to ncols * (N + 1) * baselineskip - baselineskip + topskip +\def\sethsizevsize +{ + \hsize=\colwd + \vsize=\bodyht + \advance\vsize-\topskip \advance\vsize\baselineskip \multiply\vsize\ncols + \advance\vsize-\baselineskip \advance\vsize\topskip +} + +% User macro +% divide into grid of n, with k grid widths making 1 column of body +% #1 <number> number of grid slots making up body width +% #2 <number> number of grid slots making up one column +% so there will be floor(#1/#2) body columns per page +\def\setnkgrid#1#2% +{% + \gridwd=\bodywd + \advance\gridwd-#1\colsep \advance\gridwd\colsep \divide\gridwd by #1 + \colwd=#2\gridwd \advance\colwd#2\colsep \advance\colwd-\colsep + \ncols=#1 \divide\ncols#2 + \gridht=\baselineskip + \capsep=\gridht + \sethsizevsize +} + +% User macro +% divide into n columns +% #1 <number> number of columns per page +\def\setncolumns#1% +{% + \colwd=\bodywd + \advance\colwd-#1\colsep \advance\colwd\colsep \divide\colwd by #1 + \gridwd=\colwd + \ncols=#1 + \sethsizevsize +} + +\def\setpaperA#1% +{ + \ifcase#1 + \setpaper{841mm}{1189mm}\or % A0 + \setpaper{594mm}{841mm}\or % A1 + \setpaper{420mm}{594mm}\or % A2 + \setpaper{297mm}{420mm}\or % A3 + \setpaper{210mm}{297mm}\or % A4 + \setpaper{148mm}{210mm} % A5 + \else + \errmessage{Dunno how big DIN A#1 paper is, sorry.} + \fi +} +% default settings (using default font): +\setpaperA4 +\setncolumns1 + +%}}} automated column setting +%{{{ balancing columns + +% Knuth's rigid balancing routine TeXbook App. D Sec. 7 (p. 396--397) + +\newcount\RGDncols \newdimen\RGDtopskip \newif\ifRGDfirstcol +\newtoks\RGDsep + +% Take a rigid, regular box, and split into several approx equal +% columns. Produces assignments followed by a box -- this can be +% retrieved using \lastbox. +% #1 <8-bit number> box to chop +% #2 <number> #columns to make +% #3 <dimen> value of \topskip for box +% #4 <dimen> width of the whole shebang +% #5 TeX code what goes between columns (e.g., \hfil) +\def\rigidbalance#1#2#3#4#5% +{% + \setbox0=\box#1\relax \RGDncols=#2\relax \RGDtopskip=#3\relax \RGDsep={#5}% + \hbox to #4\relax + {% + \splittopskip=\RGDtopskip \vbadness=10000 + \RGDfirstcoltrue + \valign{##\vfil\cr \doRGDsplits}% + }% +} + +% recursive helper function for above - produces the valign's body +\def\doRGDsplits +{% + \ifnum\RGDncols>0 + % if not first folumn, put in separator + \ifRGDfirstcol + \global\RGDfirstcolfalse + \else + \noalign{\the\RGDsep}% + \fi + % split off one column (see TeXbook for justification + % for this value of \dimen0): + \dimen0=\ht0 \divide\dimen0 \RGDncols \advance\dimen0 \RGDtopskip + \setbox1=\vsplit0 to \dimen0 + \unvbox1 + % + \global\advance\RGDncols-1 + \cr + \doRGDsplits + \fi +} + +%}}} balancing columns +%}}} pdcoput.tex +%Local variables: +%fold-folded-p: t +%tex-macros-p: t +%End: diff --git a/fonts/malvern/doc/pdcpars.tex b/fonts/malvern/doc/pdcpars.tex new file mode 100644 index 0000000000..cc945db6a5 --- /dev/null +++ b/fonts/malvern/doc/pdcpars.tex @@ -0,0 +1,301 @@ +%{{{ pdcpars.tex 1.1.9 1994/06/23 -- Misc paragraph macros +% Copyright (c) 1991-1994 Damian Cugley. +\begingroup\catcode`\%=12 \toks0={\endgroup + \gdef\version{1.1.9} \gdef\lastedit{pdc 1994/06/23} +}\the\toks0 +\message{\version\space \lastedit} +\ifx\utilsversion\UNDEFINED \input pdcutil \fi + +% Permission is granted to distribute verbatim copies if this file provided +% this copyright and permisions is preserved in all copies. + +% Permission is granted to distribute modified versions of this file +% provided: +% -- no deletions are made (but you can comment things out); +% -- this copyright and permissions are preserved; and +% -- it is called something else (so as to prevent confusion). + +%{{{ Active characters + +\def\active#1{\catcode`#1=13 } +\def\plain#1{\catcode`#1=12 } + +\def\minus{-} % \let isn't good enuf + +{\active\^^M \gdef\obeylines{\active\^^M\let^^M=\par}}% +\def\obeyspaces{\active\ } +% Necessary because knuth uses \active to mean 13 +%}}} +%{{{ Macros for making symbols etc + +\def\overstrike#1#2% Used to fudge some characters +{{% + \leavevmode + \setbox1=\hbox{#1}\setbox2=\hbox{#2}% + \dimen0=\wd1 \ifdim\dimen0<\wd2 \dimen0=\wd2\fi % d0 := max(wd1, wd2) + \rlap{\hbox to \dimen0{\hss#1\hss}}\hbox to \dimen0{\hss#2\hss}% +}} + +\def\flushtop#1% +{{% + \setbox0=\hbox{#1}\setbox1=\hbox{X}% + \dimen0=\ht1 \advance\dimen0-\ht0 % d0 := ht(``X'') - ht(#1) + \raise\dimen0\box0 +}} + + +% \chdef CSNAME=cfxx \defs CSNAME to produce a math char with +% class c, using sym xx from family f +% Outside of maths mode, CSNAME produces the plain character +% Used so that \bullet etc. can be used out of maths mode... + +\def\chdef#1=#2#3#4#5% +{\def#1{\ifmmode + \mathchar"#2#3#4#5 + \else + \mathhexbox#3#4#5% + \fi} +} + +% \deldef CSNAME=cfxxFXX +% Similar except for thigns that are delimiters in maths mode. +% FXX gives ``large'' symbol + +\def\deldef#1=#2#3#4#5#6#7#8% +{\def#1{\ifmmode + \delimiter"#2#3#4#5#6#7#8 + \else + \mathhexbox#3#4#5% + \fi} +} +%}}} +%{{{ Various symbols + +\chdef\bullet = 220F +\chdef\cdot = 2201 +\chdef\times = 2202 +\chdef\* = 002A % raised asterisk + +\deldef\langle = 426830A +\deldef\rangle = 526930B +\deldef\lbrace = 4266308 \let\{=\lbrace +\deldef\rbrace = 5267309 \let\}=\rbrace + +\def\poundsign{{\it\char36}} % plain TeX method +\def\yensign{\overstrike=Y} % ick + +\def\hyphen{\ifmmode\hbox{-}\else-\fi} +\def\shortdash{\ifmmode\hbox{--}\else--\fi} +\def\longdash{\ifmmode\hbox{---}\else---\fi} + +\def\tttilde{\leavevmode\lower 0.5ex\hbox{\tt\char`\~}} +\def\ttcirc{\leavevmode\lower 0.5ex\hbox{\tt\char`\^}} +\def\ttlq{\leavevmode\lower 0.125ex\hbox{\tt\char18}} +\def\ttrq{\leavevmode\lower 0.125ex\hbox{\tt\char19}} +\def\ttvert{{\tt\char`\|}} + +\def\Mc{M\flushtop{\the\scriptfont\fam \b{c}}} + % \Mc Gregor -> McGregor + +%}}} +%{{{ Various logos etc + +\def\LaTeX{L\negthinspace\flushtop{a}\kern-0.05em\TeX} +%\def\AmSTeX{{\the\textfont2 A}\kern-.1667em\lower.5ex\hbox +% {\the\textfont2 M}\kern-.125em{\the\textfont2 S}-\TeX} +\def\AMSTeX{AMS-\TeX} +\def\AMSLaTeX{AMS-\LaTeX} +\def\BibTeX{Bib\!\TeX} + +%}}} +%{{{ Date and time-of-day + +\def\shortdates +{\def\today + {{\sfcode`\.=1000 \n{\number\day} + \ifcase\month\or + Jan. \or Feb. \or Mar. \or Apr. \or May \or June \or + July \or Aug. \or Sept. \or Oct. \or Nov. \or Dec. + \fi + \n{\number\year}% + }} +} + +\def\longdates +{\def\today + {\n{\number\day} + \ifcase\month\or + January \or February \or March \or April \or May \or June \or + July \or August \or September \or October \or November \or December + \fi + \n{\number\year}% + } +} + +\shortdates + +\newcount\hour \newcount\minute +\hour=\time \global\divide\hour by 60 % H = T/60 +\minute=-\hour \multiply\minute by 60 \advance\minute\time + % M = T - 60*H = T\60 + +\def\nnumber#1{\ifnum#1<10 0\fi\number1} +\def\timeofday{\n{\number\hour}:\n{\nnumber\minute}} +%}}} +%{{{ Numerals + +% Numbers in a text context -- \n{12,345-56} +% commas become thinspaces in scientific numerals +% full stop becomes decimal point +% hyphen becomes shortdash (for ranges) +% \minus for minus sign + +\begingroup\active\- + \gdef\n#1% + {\leavevmode \counta=\fam + \hbox{$\mathsurround=0pt + \mathcode`\.="0201 + \mathcode`\-="8000 \let-=\shortdash + \mathchardef\minus="2200 + \fam=\counta \everyn + #1$}% + } +\endgroup + +\begingroup \active\, + \gdef\scientificnumerals{\def\everyn{\mathcode`\,="8000 \let,=\,}} +\endgroup + +\def\oldstylenumerals +{\def\everyn{\ifnum\counta=0\mit\fi \mathcode`\,="702C }} + +\def\rangingnumerals{\def\everyn{\mathcode`\,="0702C }} + +%}}} +%{{{ Verbatim text, using |...| + +\active\| + +\def\verbatimplains{\\\\\\\{\\\}\\\_\\\$\\\#\\\&\\\%} % \{}_$#&% +\def\verbatimactives{\\\`\\\'\\\~\\\^\\\ } % `'~^<space> + +\begingroup \active\' \active\` \active\^ + \gdef\setupverbatim + {% + \spaceskip0pt \xspaceskip0pt % use spacing of font + \let\\\plain\verbatimplains + \let\\\active\verbatimactives + \let`=\ttlq \let'=\ttrq + \let~=\tttilde \let^=\ttcirc + \hyphenchar\font=-1 + \the\everyverbatim + } +\endgroup + +\newif\ifdblvert + +\def|% +{% + \ifmmode + \mathchar"026A + \else + \leavevmode + \begingroup % matched by closing | + \aftergroup\verbatimsetspacefactor + \tt \setupverbatim + \let|\endgroup + \ifnum\spacefactor=1003 \ttvert \fi + \fi +} + +\def\verbatimsetspacefactor{\spacefactor1003 } + +% TeXbook, p.380 +\def\listing#1% list file #1 verbatim in +{ + \medskip + \begingroup + \parindent=0pt \parskip=0pt + \counta=0 \countb=5 + \def\par{\leavevmode\endgraf}% + \obeylines \obeyspaces + \everypar={\linenum}% + \maketabstab + \setupverbatim + \the\everylisting + \tt + \input#1 + \endgroup + \medskip\noindent\ignorespaces +} + +{\catcode`\^^I=13 + \gdef\maketabstab{\catcode`\^^I=13 \def^^I{\hskip 4em}} +} + +\def\linenum +{% + \strut + \global\advance\counta+1 \global\advance\countb-1 + \ifnum\countb>0\else + \global\advance\countb 5 + \rlap{\the\everylinenum \kern\hsize\kern1em \the\counta}% + \fi +}% + +{\obeyspaces\global\let =\ } % active space = \SPACE +%}}} +%{{{ Misc + +\def\thinspaceamount % usually 1/6em in CMR +{\ifdim\spaceskip>0pt + 0.5\spaceskip + \else + 0.5\fontdimen2\font + \fi +} + +\def\,{\ifmmode\mskip+\thinmuskip\else\kern+\thinspaceamount\fi} +\def\!{\ifmmode\mskip-\thinmuskip\else\kern-\thinspaceamount\fi} +\def\dots{.\,.\,.} + +\def\makestrut#1#2{\vrule height#1 depth#2 width0pt } + +\let\pTXunderline\underline +\def\underline#1% +{\ifmmode + \pTXunderline{#1}% + \else + \setbox0=\hbox{#1}% + \dp0=0pt + $\pTXunderline{\box0}$% + \fi +} + +\def\crossedout#1% print #1 with line through it +{{% + \setbox0=\hbox{#1}% + \dimen0 = 0.6ex \advance\dimen0 by -0.4pt + \vrule height 0.6ex depth -\dimen0 width \wd0 + \kern -\wd0 + \box0 +}} +%}}} +%{{{ Hooks + +\rangingnumerals % sets \everyn + +\newtoks\everyverbatim + +\newtoks\everylisting +\everylisting={\tentt\baselineskip=10pt} + +\newtoks\everylinenum +\everylinenum={\sevenrm} +%}}} +%}}} parmac.tex + +%Local variables: +%fold-folded-p: t +%tex-macros-p: t +%End: |