summaryrefslogtreecommitdiff
path: root/fonts/archaic/oands/oands.dtx
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /fonts/archaic/oands/oands.dtx
Initial commit
Diffstat (limited to 'fonts/archaic/oands/oands.dtx')
-rw-r--r--fonts/archaic/oands/oands.dtx776
1 files changed, 776 insertions, 0 deletions
diff --git a/fonts/archaic/oands/oands.dtx b/fonts/archaic/oands/oands.dtx
new file mode 100644
index 0000000000..aa353da65e
--- /dev/null
+++ b/fonts/archaic/oands/oands.dtx
@@ -0,0 +1,776 @@
+% \iffalse meta-comment
+%
+% oands.dtx
+%
+% Author: Peter Wilson (Herries Press) herries dot press at earthlink dot net
+% Copyright 2000--2005 Peter R. Wilson
+%
+% This work may be distributed and/or modified under the
+% conditions of the Latex Project Public License, either
+% version 1.3 of this license or (at your option) any
+% later version.
+% The latest version of the license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of
+% LaTeX version 2003/06/01 or later.
+%
+% This work has the LPPL maintenance status "author-maintained".
+%
+% This work consists of the files listed in the README file.
+%
+%
+% If you do not have the docmfp package (available from CTAN in
+% tex-archive/macros/latex/contrib), comment out the
+% \usepackage{docmfp} line below and uncomment the line following it.
+%
+%<*driver>
+\documentclass[twoside]{ltxdoc}
+\usepackage{docmfp}
+%%%%%% \providecommand{\DescribeVariable}[1]{} \newenvironment{routine}[1]{}{}
+\usepackage{url}
+\usepackage[draft=false,
+ plainpages=false,
+ pdfpagelabels,
+ bookmarksnumbered,
+ hyperindex=false
+ ]{hyperref}
+\providecommand{\phantomsection}{}
+\OnlyDescription %% comment this out for the full glory
+\EnableCrossrefs
+\CodelineIndex
+\setcounter{StandardModuleDepth}{1}
+\makeatletter
+ \@mparswitchfalse
+\makeatother
+\renewcommand{\MakeUppercase}[1]{#1}
+\pagestyle{headings}
+\newenvironment{addtomargins}[1]{%
+ \begin{list}{}{%
+ \topsep 0pt%
+ \addtolength{\leftmargin}{#1}%
+ \addtolength{\rightmargin}{#1}%
+ \listparindent \parindent
+ \itemindent \parindent
+ \parsep \parskip}%
+ \item[]}{\end{list}}
+\begin{document}
+ \raggedbottom
+ \DocInput{oands.dtx}
+\end{document}
+%</driver>
+%
+% \fi
+%
+% \CheckSum{34}
+%
+% \DoNotIndex{\',\.,\@M,\@@input,\@addtoreset,\@arabic,\@badmath}
+% \DoNotIndex{\@centercr,\@cite}
+% \DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue}
+% \DoNotIndex{\@input,\@ixpt,\@m}
+% \DoNotIndex{\@minus,\@mkboth,\@ne,\@nil,\@nomath,\@plus,\@set@topoint}
+% \DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb}
+% \DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt}
+% \DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt}
+% \DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace}
+% \DoNotIndex{\advance,\Alph,\alph}
+% \DoNotIndex{\arabic,\ast,\begin,\begingroup,\bfseries,\bgroup,\box}
+% \DoNotIndex{\bullet}
+% \DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption}
+% \DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass}
+% \DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\endtrivlist}
+% \DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup}
+% \DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter}
+% \DoNotIndex{\fbox}
+% \DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef}
+% \DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule}
+% \DoNotIndex{\hsize,\hskip,\hspace,\hss,\if@tempswa,\ifcase,\or,\fi,\fi}
+% \DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\fi,\fi,\fi,\fi,\fi}
+% \DoNotIndex{\input}
+% \DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark}
+% \DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright}
+% \DoNotIndex{\month,\newcommand,\newcounter,\newenvironment}
+% \DoNotIndex{\NeedsTeXFormat,\newdimen}
+% \DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number}
+% \DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\p@}
+% \DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip}
+% \DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions}
+% \DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright}
+% \DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font}
+% \DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily,\roman}
+% \DoNotIndex{\roman,\secdef,\selectfont,\setbox,\setcounter,\setlength}
+% \DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space}
+% \DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase}
+% \DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt}
+% \DoNotIndex{\viipt,\vipt,\vskip,\vspace}
+% \DoNotIndex{\wd,\xiipt,\year,\z@}
+%
+% \changes{v1.0}{2000/08/19}{First public release}
+% \changes{v1.1}{2005/04/02}{Minor circumstantial changes and for Postscript}
+%
+% \def\fileversion{v1.0} \def\filedate{2000/08/19}
+% \def\fileversion{v1.1} \def\filedate{2005/04/02}
+% \newcommand*{\Lpack}[1]{\textsf {#1}} ^^A typeset a package
+% \newcommand*{\Lopt}[1]{\textsf {#1}} ^^A typeset an option
+% \newcommand*{\file}[1]{\texttt {#1}} ^^A typeset a file
+% \newcommand*{\Lcount}[1]{\textsl {\small#1}} ^^A typeset a counter
+% \newcommand*{\pstyle}[1]{\textsl {#1}} ^^A typeset a pagestyle
+% \newcommand*{\Lenv}[1]{\texttt {#1}} ^^A typeset an environment
+% \newcommand*{\AD}{\textsc{ad}}
+% \newcommand*{\thisfont}{OandS}
+%
+% \title{The \Lpack{OandS} fonts\thanks{This
+% file has version number \fileversion, last revised
+% \filedate.}}
+%
+% \author{%
+% Peter Wilson\thanks{\texttt{herries dot press at earthlink dot net}}\\
+% Herries Press
+% }
+% \date{\filedate}
+% \maketitle
+% \begin{abstract}
+% The \Lpack{oands} bundle provides a set of
+% miscellaneous characters for use when transliterating ancient scripts.
+% This is one in a series for archaic scripts.
+% \end{abstract}
+% \tableofcontents
+%
+% \section{Introduction}
+%
+% The \Lpack{oands} bundle provides a Postscript Type1 version of an
+% original Metafont~\cite{METAFONT} design
+% of the \thisfont{} fonts. These are odd characters used in transliterating
+% archaic scripts, like Hieroglyphic, into a modern alphabet. The font is
+% part of a project to provide fonts showing the development of the
+% modern Latin alphabet from ancient times.
+%
+% This manual is typeset according to the conventions of the
+% \LaTeX{} \textsc{docstrip} utility which enables the automatic
+% extraction of the \LaTeX{} macro source files~\cite{GOOSSENS94}.
+% The \Lpack{docmfp} package is used for documenting the Metafont portions
+% of the distribution~\cite{DOCMFP}.
+%
+% Section~\ref{sec:usc} describes the usage of the package.
+% Commented code for the fonts and package may be in later sections.
+%
+%
+% \subsection{The \thisfont{} script}
+%
+% The \thisfont{} font currently consists of just two characters. One is
+% a `mirrored apostrophe' accessed via the single left quote character.
+% The other is a sign representing a glottal stop; it looks like the numeral 3
+% with a flat top and is accessed via the lowercase z character.
+%
+% \section{The \Lpack{oands} package} \label{sec:usc}
+%
+% The \thisfont{} font family is called |oands|. The font is supplied
+% both upright and italic forms and in both
+% OT1 and T1 encodings.
+%
+%
+% \DescribeMacro{\oandsfamily}
+% The |\oandsfamily| declaration starts typesetting with the \thisfont{} fonts.
+% Use of the \thisfont{} font will continue until either there is another |\...family|
+% declaration or the current group (e.g., environment) is closed.
+%
+% \DescribeMacro{\textoands}
+% The command |\textoands{|\meta{text}|}| will typeset \meta{text} using the
+% \thisfont{} fonts.
+%
+% The complete font may be printed by |\textoands{` z}|.
+%
+%
+% \StopEventually{
+% \bibliographystyle{alpha}
+% \renewcommand{\refname}{Bibliography}
+% \begin{thebibliography}{GMS94}
+% \addcontentsline{toc}{section}{\refname}
+%
+% \bibitem[Knu92]{METAFONT}
+% Donald E.~Knuth.
+% \newblock \emph{The METAFONTbook}.
+% \newblock Addison-Wesley, 1992.
+%
+% \bibitem[Knu87]{CM}
+% Donald E.~Knuth.
+% \newblock \emph{Computer Modern Typefaces}.
+% \newblock Addison-Wesley, 1987.
+%
+% \bibitem[GMS94]{GOOSSENS94}
+% Michel Goossens, Frank Mittelbach, and Alexander Samarin.
+% \newblock \emph{The LaTeX Companion}.
+% \newblock Addison-Wesley Publishing Company, 1994.
+%
+% \bibitem[Wil99]{DOCMFP}
+% Peter R.~Wilson.
+% \newblock \emph{The DOCMFP Package}.
+% \newblock (Available from CTAN in \texttt{macros/latex/contrib}).
+% \newblock 1999.
+%
+% \end{thebibliography}
+%
+% \PrintIndex
+%
+% }
+%
+%
+%
+% \section{The Metafont code} \label{sec:mf}
+%
+%
+% \subsection{The parameter file}
+%
+% We deal with the parameter files first, and start by announcing
+% what they are for. The \thisfont{} font comes in one size as a normal
+% and italic font.
+%
+% \begin{macrocode}
+%<*base10|base10i>
+%<base10>%%% OANDSU10.MF oands upright font at 10 point design size.
+%<base10i>%%% OANDSI10.MF oands italic font at 10 point design size.
+%
+% \end{macrocode}
+% The parameters from CMR are used~\cite{CM}. We also
+% make sure that \Lpack{cmbase} is loaded as well
+% as plain Metafont.
+% \begin{macrocode}
+if unknown cmbase: input cmbase fi
+
+% \end{macrocode}
+%
+% \begin{routine}{mirror_comma}
+% We need an additional routine for a `mirrored' comma. It might
+% just as well go here as the number of families is very limited and it
+% will save on a file. The code is based on Knuth's \file{cmbase.mf}.
+% \begin{macrocode}
+def mirror_comma(suffix $, @)(expr dot_size, jut, depth) =
+ pickup fine.nib;
+ pos$(dot_size,90);
+ if square_dots:
+ pos$'(dot_size,0);
+ z$'=z$;
+ dot($',$); % squarish dot
+ comma_join_ := max(fine.breadth, floor .7dot_size);
+ comma_bot_ := max(fine.breadth, floor .5dot_size);
+ pos@0(comma_join_, 0); pos@1(comma_join_, 0); pos@2(comma_bot_, 0);
+ y@0=y$; y@1=y$1; y@2=y@1-depth;
+ x@0r=x@1r=x$'r;
+ rt x@2r=good.x(x$-eps);
+ filldraw stroke z@0e--z@1e..z@2e; % tail
+ else:
+ pos@1(vair,-90); pos@2(vair,0); pos@3(vair,45);
+ z@1r=z$r; lft x@2l=hround(x$-.5dot_size-jut)-2eps; x@3=x$+.5u;
+ y@2=1/3[y@1,y@3]; bot y@3r=vround(y$-.5dot_size-depth);
+ y_ := ypart((z@1{left}...z@2{down}...z@3)
+ intersectiontimes (z$r{left}..{right}z$l));
+ if y_ < 0: y_ :=1; fi
+ filldraw z$l{right}..subpath (0,y_) of (z$r{left}..{right}z$l)--cycle; % dot
+ filldraw stroke z@1e{left}...z@2e{down}...z@3e; % tail
+ fi
+ penlabels(@1,@2,@3);
+enddef;
+
+% \end{macrocode}
+% \end{routine}
+%
+% Now for the parameters.
+% \begin{macrocode}
+%<base10>font_identifier:="OANDSU"; font_size 10pt#;
+%<base10i>font_identifier:="OANDSI"; font_size 10pt#;
+
+% \end{macrocode}
+%
+% \DescribeVariable{u}
+% The unit width.
+% \begin{macrocode}
+%<base10> u# := 20/36pt#; % unit width
+%<base10i> u# := 18.4/36pt#; % unit width
+% \end{macrocode}
+%
+% \DescribeVariable{width_adj}
+% \DescribeVariable{serif_fit}
+% \DescribeVariable{cap_serif_fit}
+% \DescribeVariable{letter_fit}
+% The majority of these parameters and values are constant.
+% They are for fine adjustements of characters.
+% \begin{macrocode}
+ width_adj#:=0pt#; % width adjustment for certain characters
+ serif_fit#:=0pt#; % extra sidebar near lowercase serifs
+ cap_serif_fit#:=3.5/36pt#; % extra sidebar near uppercase serifs
+%<base10> letter_fit#:=9.2/36pt#; % extra space added to all sidebars
+%<base10i> letter_fit#:=0pt#; % extra space added to all sidebars
+
+% \end{macrocode}
+%
+% \DescribeVariable{body_height}
+% \DescribeVariable{asc_height}
+% \DescribeVariable{cap_height}
+% \DescribeVariable{fig_height}
+% \DescribeVariable{x_height}
+% \DescribeVariable{math_axis}
+% \DescribeVariable{bar_height}
+% \DescribeVariable{comma_depth}
+% \DescribeVariable{desc_depth}
+% This set of parameters defines the upper and lower limits
+% on the characters.
+% \begin{macrocode}
+ body_height# := 270/36pt#; % Height of tallest character
+ asc_height# := 250/36pt#; % Height of lowercase ascenders
+ cap_height# := 246/36pt#; % Height of caps
+ fig_height# := 232/36pt#; % Height of numerals
+ x_height# := 155/36pt#; % Height of lowercase without ascenders
+ math_axis# := 90/36pt#; % axis of symmetry for math symbols
+ bar_height# := 87/36pt#; % height of crossbar in lowercase e
+ comma_depth# := 70/36pt#; % depth of comma below baseline
+ desc_depth# := 70/36pt#; % depth of lowercase descenders
+
+% \end{macrocode}
+%
+% \DescribeVariable{crisp}
+% \DescribeVariable{tiny}
+% \DescribeVariable{fine}
+% \DescribeVariable{thin_join}
+% \DescribeVariable{hair}
+% \begin{macrocode}
+ crisp# := 0pt#; % diameter of serif corners
+ tiny# := 8/36pt#; % diameter of rounded corners
+ fine# := 7/36pt#; % diameter of sharply rounded corners
+ thin_join# := 7/36pt#; % width of extrafine details
+ hair# := 9/36pt#; % lowercase hairline breadth
+% \end{macrocode}
+%
+% \DescribeVariable{stem}
+% \DescribeVariable{curve}
+% \DescribeVariable{ess}
+% \DescribeVariable{flare}
+% \DescribeVariable{dot_size}
+% \begin{macrocode}
+ stem# := 25/36pt#; % lowercase stem breadth
+ curve# := 30/36pt#; % lowercase curve breadth
+ ess# := 27/36pt#; % breadth in middle of lowercase s
+ flare# := 33/36pt#; % diameter of bulbs or breadth of terminals
+ dot_size# := 38/36pt#; % diameter of dots
+% \end{macrocode}
+%
+% \DescribeVariable{cap_hair}
+% \DescribeVariable{cap_stem}
+% \DescribeVariable{cap_curve}
+% \DescribeVariable{cap_ess}
+% \DescribeVariable{rule_thickness}
+% \begin{macrocode}
+ cap_hair# := 11/36pt#; % uppercase hairline breadth
+ cap_stem# := 32/36pt#; % uppercase stem breadth
+ cap_curve# := 37/36pt#; % uppercase curve breadth
+ cap_ess# := 35/36pt#; % breadth in middle of uppercase S
+ rule_thickness# := 0.4pt#; % thickness of lines in math symbols
+% \end{macrocode}
+%
+% \DescribeVariable{dish}
+% \DescribeVariable{bracket}
+% \DescribeVariable{jut}
+% \DescribeVariable{cap_jut}
+% \DescribeVariable{beak_jut}
+% \begin{macrocode}
+ dish# := 1/36pt#; % amount erased at top or bottom of serifs
+ bracket# := 20/36pt#; % vertical distance from serif base to tangent
+ jut# := 28/36pt#; % protrusion of lowercase serifs
+ cap_jut# := 37/36pt#; % protrusion of uppercase serifs
+ beak_jut# := 10/36pt#; % horizontal protrusion of beak serifs
+% \end{macrocode}
+%
+% \DescribeVariable{beak}
+% \DescribeVariable{vair}
+% \DescribeVariable{notch_cut}
+% \DescribeVariable{bar}
+% \DescribeVariable{slab}
+% \begin{macrocode}
+ beak# := 70/36pt#; % vertical protrusion of beak serifs
+ vair# := 8/36pt#; % vertical diameter of hairlines
+ notch_cut# := 10pt#; % max breadth above/below notches
+ bar# := 11/36pt#; % lowercase bar thickness
+ slab# := 11/36pt#; % serif and arm thickness
+% \end{macrocode}
+%
+% \DescribeVariable{cap_bar}
+% \DescribeVariable{cap_band}
+% \DescribeVariable{cap_notch_cut}
+% \DescribeVariable{serif_drop}
+% \DescribeVariable{stem_corr}
+% \begin{macrocode}
+ cap_bar# := 11/36pt#; % uppercase bar thickness
+ cap_band# := 11/36pt#; % uppercase thickness above/below lobes
+ cap_notch_cut# := 10pt#; % max breadth above/below uppercase notches
+ serif_drop# := 4/36pt#; % vertical drop of sloped serifs
+ stem_corr# := 1/36pt#; % small refinement of stem breadth
+% \end{macrocode}
+%
+% \DescribeVariable{vair_corr}
+% \DescribeVariable{apex_corr}
+% \DescribeVariable{o}
+% \DescribeVariable{apex_o}
+% \DescribeVariable{slant}
+% \begin{macrocode}
+ vair_corr# := 1/36pt#; % small refinement of hairline height
+ apex_corr# := 0pt#; % extra width at diagonal junctions
+ o# := 8/36pt#; % amount of overshoot for curves
+ apex_o# := 8/36pt#; % amount of overshoot for diagonal junctions
+%<base10> slant := 0; % tilt ratio (\Delta x / \Delta y)
+%<base10i> slant := 0.25; % tilt ratio (\Delta x / \Delta y)
+% \end{macrocode}
+%
+% \DescribeVariable{fudge}
+% \DescribeVariable{math_spread}
+% \DescribeVariable{superness}
+% \DescribeVariable{superpull}
+% \DescribeVariable{beak_darkness}
+% \begin{macrocode}
+ fudge := 1; % facto applied to weights of heavy characters
+ math_spread := 0; % extra openness of math symbols
+ superness := 1/sqrt2; % parameter for superellipses
+ superpull := 1/6; % extra openness inside bowls
+ beak_drakness := 11/30; % fraction of triangle inside beak serifs
+% \end{macrocode}
+%
+% \DescribeVariable{ligs}
+% \DescribeVariable{square_dots}
+% \DescribeVariable{hefty}
+% \DescribeVariable{serifs}
+% \DescribeVariable{monospace}
+% \begin{macrocode}
+ ligs := 2; % level of ligatures to be included
+ square_dots := false; % should dots be square?
+ hefty := false; % should we try hard not to be overweight?
+ serifs := true; % should serifs and bulbs be attached?
+ monospace := false; % should all characyers have the same width?
+% \end{macrocode}
+%
+% \DescribeVariable{variant_g}
+% \DescribeVariable{low_asterisk}
+% \DescribeVariable{math_fitting}
+% \begin{macrocode}
+%<base10> variant_g := false; % should an italic-style g be used?
+%<base10i> variant_g := true; % should an italic-style g be used?
+ low_asterisk := false; % should the asterisk be centered at the axis?
+ math_fitting := false; % should math-mode spacing be used?
+
+% \end{macrocode}
+%
+%
+% Finally, call the driver file for the font.
+% \begin{macrocode}
+%<base10> generate oandsup %% switch to the driver file
+%<base10i> generate oandsit %% switch to the driver file
+
+% \end{macrocode}
+%
+% The end of this code section.
+% \begin{macrocode}
+%</base10|base10i>
+% \end{macrocode}
+%
+%
+% \subsection{The driver files}
+%
+% The driver file sets up the font parameters and also contains
+% the macros used in the definition of the characters.
+%
+% \begin{macrocode}
+%<*mfdu>
+% OANDSUP.MF setup for the upright OANDS font.
+
+% \end{macrocode}
+% This file is based on Knuth's \file{roman.mf}.
+%
+% \begin{macrocode}
+
+if ligs>1: font_coding_scheme:="TeX text";
+else: font_coding_scheme:=if ligs=0: "TeX typewriter text"
+ else: "TeX text without f-ligatures"
+ fi;
+fi
+
+mode_setup; font_setup;
+
+input oandsym;
+
+font_slant slant; font_x_height x_height#;
+if monospace: font_normal_space 9u#; % no stretching or shrinking
+ font_quad 18u#;
+ font_extra_space 9u#;
+else: font_normal_space 6u#+2letter_fit#;
+ font_normal_stretch 3u#; font_normal_shrink 2u#;
+ font_quad 18u#+4letter_fit#;
+ font_extra_space 2u#;
+ k#:=-.5u#; kk#:=-1.5u#; kkk#:=-2u#; % three degrees of kerning
+% \end{macrocode}
+% There are no ligatures at this time.
+% \begin{macrocode}
+fi
+
+bye.
+
+%</mfdu>
+% \end{macrocode}
+%
+% Now the italic driver file, which is based on Knuth's \file{textit.mf}.
+%
+% \begin{macrocode}
+%<*mfdi>
+% file OANDSIT.MF Italic setup for OANDS font
+
+mode_setup; font_setup;
+
+if ligs>1: font_coding_scheme:="TeX text";
+else: font_coding_scheme:=if ligs=0: "TeX typewriter text"
+ else: "TeX text without f-ligatures"
+ fi;
+fi
+
+font_slant slant; font_x_height x_height#;
+if monospace: font_normal_space 9u#; % no stretching or shrinking
+ font_quad 18u#;
+ font_extra_space 9u#;
+ letter_fit#:=letter_fit:=0;
+else: font_normal_space 6u#+2letter_fit#;
+ font_normal_stretch 3u#; font_normal_shrink 2u#;
+ font_quad 18u#+4letter_fit#;
+ font_extra_space 2u#; fi
+
+input oandsym;
+
+if not monospace:
+ k#:=-.5u#; kk#:=-1.5u#; kkk#:=-2u#; % three degrees of kerning
+% \end{macrocode}
+% There are no ligatures at this time.
+% \begin{macrocode}
+fi
+
+bye.
+
+%</mfdi>
+% \end{macrocode}
+%
+%
+% \subsection{The code for the characters}
+%
+% The following code is for the characters making up the font.
+%
+% \begin{macrocode}
+%<*min>
+% OANDSYM.MF Program file for oands characters
+%
+
+% \end{macrocode}
+%
+%
+% \begin{routine}{`}
+% A mirrored apostrophe, based on Knuth's apostrophe from \file{punct.mf}.
+% \begin{macrocode}
+cmchar "Mirrored apostrophe";
+beginchar("`",5u#,asc_height#,0);
+italcorr asc_height#*slant+.5dot_size#-2u#;
+adjust_fit(0,0);
+x1-.5dot_size=hround(.5w-.5dot_size); y1+.5dot_size=h;
+if monospace:
+ mirror_comma(1,a,dot_size,.28u,vround 1.5comma_depth); % large one
+else:
+ mirror_comma(1,a,dot_size,.25u,comma_depth); % normal one
+fi
+penlabels(1);
+endchar;
+
+% \end{macrocode}
+% \end{routine}
+%
+% \begin{routine}{z}
+% A representation of a glottal stop. It looks somewhat like an oldstyle
+% digit 3 with a flat top, or the way I handwrite a lowercase z with a tail.
+% It is based on a combination of 3 and 7 from Knuth's \file{olddig.mf} file.
+% \changes{v1.1}{2005/04/02}{Slimmed down the glottal stop}
+% \begin{macrocode}
+cmchar "The glottal stop z";
+beginchar("z",9u#,x_height#,desc_depth#);
+italcorr .8x_height#*slant-.4u#;
+adjust_fit(0,0);
+numeric top_thickness,mid_thickness,bot_thickness;
+top_thickness=max(fine.breadth,vround(slab-2vair_corr));
+mid_thickness=max(fine.breadth,vround 2/3vair);
+bot_thickness=max(fine.breadth,vround(slab-vair_corr));
+pickup fine.nib;
+% \end{macrocode}
+% The lower bowl from the 3 character.
+% \begin{macrocode}
+pos5(vair,-90);
+pos6(mid_thickness,90);
+x6=x8=.5[1.5u,x7];
+pos7(cap_curve,0); rt x7r=hround(w-.75u);
+lft x5=min(hround 3u,lft x6);
+pos8(bot_thickness,-90); bot y8r=-d-o;
+y7=.5[bot y6l,top y8l];
+top y5l=vround(.54[-d,h]+.5vair); y5r=y6l;
+filldraw z5r--z6l--z6r--z5l---cycle; % middle tip
+filldraw stroke pulled_super_arc.e(6,7)(.5superpull)
+ & pulled_super_arc.e(7,8)(.5superpull); % lower bowl
+if serifs:
+ numeric bulb_diam[];
+ bulb_diam2=flare+cap_stem-stem;
+ pos10(bulb_diam2,-180);
+ pos9(cap_hair,-180);
+ lft x10r=hround .75u; y10=max(.1[-d,h]+.5bulb_diam2,.3[-d,h]-.5bulb_diam2);
+ bulb(8,9,10); % lower bulb
+else:
+ pos9(bot_thickness,angle(-2u,-h-d));
+ lft x9r=hround .75u; top y9l=(vround .25[-d,h])-o;
+ y9r:=good.y y9r-eps; x9l:=good.x x9l;
+ filldraw stroke term.e(8,9,left,1,4); % lower terminal
+fi
+% \end{macrocode}
+% The top half of the 7 character.
+% \begin{macrocode}
+numeric arm_thickness, bot_width, top_shift, top_hair;
+%%%if hefty: arm_thickness=Vround(slab+2stem_corr); top_shift=0;
+%%% bot_width=hround .51[curve,cap_curve]; top_hair=.4[thin_join,bot_width];
+%%%else: arm_thickness=Vround .4[stem,cap_stem]; top_shift=.5u;
+%%% bot_width=flare; top_hair=cap_hair; fi
+if hefty: arm_thickness=Vround(vair-vair_corr); top_shift=0;
+ bot_width=hround .51[curve,cap_curve]; top_hair=.4[thin_join,bot_width];
+else: arm_thickness=vair; top_shift=.5u;
+ bot_width=flare; top_hair=cap_hair; fi
+if top_hair<tiny.breadth: top_hair:=tiny.breadth; fi
+pickup crisp.nib;
+pos2(arm_thickness,90);
+pos1(hair,180);
+top y2r=h; rt x2=hround(w-.75u+top_shift);
+lft x1r=hround(.75u+.5top_shift); y1=good.y(y2l-beak/2)-eps;
+arm(2,1,a,.3beak_darkness,-beak_jut); % arm and beak
+pos3(hair,180); y3=good.y(y2r+beak/6)+eps; z3r=whatever[z1r,z.a0];
+penpos2'(2epsilon,-90); z2'=z2r;
+arm(2',3,b,beak_darkness,x3r-x.a0); % upward extension of beak
+pickup tiny.nib;
+pos4(top_hair,0);
+bot y4=max(h-arm_thickness,h-slab,bot y2l); rt x4r=crisp.rt x2;
+if hefty:
+else:
+ erase fill rt z4r--z4r--z5r--(rt x4r,y5)--cycle; % erase excess at top
+ filldraw stroke z4e---z5e; % stroke
+fi
+penlabels(0,1,2,3,4,5,6,7,8,9,10);
+endchar;
+
+% \end{macrocode}
+% \end{routine}
+%
+%
+% The end of this file
+% \begin{macrocode}
+%</min>
+% \end{macrocode}
+%
+%
+% \section{The font definition files} \label{sec:fd}
+%
+% The font comes in normal and italic only.
+%
+% \begin{macrocode}
+%<*fdot1>
+\DeclareFontFamily{OT1}{oands}{}
+ \DeclareFontShape{OT1}{oands}{m}{n}{ <-> oandsu10 }{}
+ \DeclareFontShape{OT1}{oands}{bx}{n}{ <-> sub oands/m/n }{}
+ \DeclareFontShape{OT1}{oands}{b}{n}{ <-> sub oands/m/n }{}
+ \DeclareFontShape{OT1}{oands}{m}{it}{ <-> oandsi10 }{}
+ \DeclareFontShape{OT1}{oands}{m}{sl}{ <-> sub oands/m/it }{}
+%</fdot1>
+% \end{macrocode}
+%
+%
+% \begin{macrocode}
+%<*fdt1>
+\DeclareFontFamily{T1}{oands}{}
+ \DeclareFontShape{T1}{oands}{m}{n}{ <-> oandsu10 }{}
+ \DeclareFontShape{T1}{oands}{bx}{n}{ <-> sub oands/m/n }{}
+ \DeclareFontShape{T1}{oands}{b}{n}{ <-> sub oands/m/n }{}
+ \DeclareFontShape{T1}{oands}{m}{it}{ <-> oandsi10 }{}
+ \DeclareFontShape{T1}{oands}{m}{sl}{ <-> sub oands/m/it }{}
+%</fdt1>
+% \end{macrocode}
+%
+% \section{The package code} \label{sec:code}
+%
+% \subsection{The \Lpack{oands} package}
+%
+% The \Lpack{oands} package is for typesetting short pieces of text
+% in the \thisfont{} fonts.
+%
+% Announce the name and version of the package, which requires
+% \LaTeXe{}.
+% \begin{macrocode}
+%<*usc>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{oands}[2000/08/19 v1.0 package for OandS fonts]
+% \end{macrocode}
+%
+% \begin{macro}{\Tienc}
+% A macro for testing the value of |\encodingdefault|.
+% \begin{macrocode}
+\providecommand{\Tienc}{T1}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\oandsfamily}
+% Selects the \thisfont{} font family in the OT1 or T1 encoding.
+% \begin{macrocode}
+\ifx\Tienc\encodingdefault
+ \newcommand{\oandsfamily}{\usefont{T1}{oands}{m}{n}}
+\else
+ \newcommand{\oandsfamily}{\usefont{OT1}{oands}{m}{n}}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\textoands}
+% Text command for the \thisfont{} font family.
+% \begin{macrocode}
+\DeclareTextFontCommand{\textoands}{\oandsfamily}
+% \end{macrocode}
+% \end{macro}
+%
+% The end of this package.
+% \begin{macrocode}
+%</usc>
+% \end{macrocode}
+%
+% \section{Postscript Type1 map file}
+%
+% Just a line or two.
+% \changes{v1.1}{2005/04/02}{Added map file}
+% \begin{macrocode}
+%<*map>
+oandsu10 Archaic-OandS <oandsu10.pfb
+oandsi10 Archaic-OandS-Italic <oandsi10.pfb
+%</map>
+% \end{macrocode}
+%
+%
+% \Finale
+% ^^A \PrintIndex
+%
+\endinput
+
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+
+