summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/bookhands/inslrmaj
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2011-04-08 16:43:45 +0000
committerKarl Berry <karl@freefriends.org>2011-04-08 16:43:45 +0000
commit9631a619eb83ca16233a8c5a5d22b2549de79f6d (patch)
treeb0c7a8f2567433f0a39084446ebcd214fd89d4c5 /Master/texmf-dist/source/latex/bookhands/inslrmaj
parent07f021d3cb17d27409f0a57a18e06f7ceb4fba39 (diff)
bookhands update (delayed from years ago)
git-svn-id: svn://tug.org/texlive/trunk@22023 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/bookhands/inslrmaj')
-rw-r--r--Master/texmf-dist/source/latex/bookhands/inslrmaj/inslrmaj.dtx4809
-rw-r--r--Master/texmf-dist/source/latex/bookhands/inslrmaj/inslrmaj.ins101
2 files changed, 0 insertions, 4910 deletions
diff --git a/Master/texmf-dist/source/latex/bookhands/inslrmaj/inslrmaj.dtx b/Master/texmf-dist/source/latex/bookhands/inslrmaj/inslrmaj.dtx
deleted file mode 100644
index a566a44ac9e..00000000000
--- a/Master/texmf-dist/source/latex/bookhands/inslrmaj/inslrmaj.dtx
+++ /dev/null
@@ -1,4809 +0,0 @@
-% \iffalse meta-comment
-%
-% inslrmaj.dtx
-% Copyright 1999 Peter R. Wilson
-%
-% This program is provided under the terms of the
-% LaTeX Project Public License distributed from CTAN
-% archives in directory macros/latex/base/lppl.txt.
-%
-% Author: Peter Wilson (CUA) (now at: peter.r.wilson@boeing.com)
-%
-% If you do not have the docmfp package (available from CTAN in
-% tex-archive/macros/latex/contrib/supported), comment out the
-% \usepackage{docmfp} line below and uncomment the line following it.
-%
-%<*driver>
-\documentclass{ltxdoc}
-\usepackage{docmfp}
-%%%%%% \providecommand{\DescribeVariable}[1]{} \newenvironment{routine}[1]{}{}
-\EnableCrossrefs
-\CodelineIndex
-%%\OnlyDescription
-\setcounter{StandardModuleDepth}{1}
-\begin{document}
- \DocInput{inslrmaj.dtx}
-\end{document}
-%</driver>
-%
-% \fi
-%
-% \CheckSum{132}
-%
-% \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}{1999/05/22}{First public release}
-% \changes{v1.0a}{2001/01/02}{Fixed missing * in .fd files}
-%
-% ^^A \def\fileversion{v1.0}
-% ^^A \def\filedate{1999/05/22}
-% \def\fileversion{v1.0a}
-% \def\filedate{2001/01/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}{Insular Majuscule}
-%
-% \title{The \Lpack{Insular Majuscule} fonts\thanks{This
-% file has version number \fileversion, last revised
-% \filedate.}}
-%
-% \author{%
-% Peter Wilson\\
-% Catholic University of America \\
-% Now at \texttt{peter.r.wilson@boeing.com}
-% }
-% \date{\filedate}
-% \maketitle
-% \begin{abstract}
-% The \Lpack{inslrmaj} and \Lpack{allimaj} packages provide a set of
-% Metafont \thisfont{} book-hands
-% as used
-% for manuscripts in the 6th to the 9th century. This is one in a series
-% of manuscript fonts.
-% \end{abstract}
-% \tableofcontents
-% \listoftables
-%
-%
-%
-%
-% \section{Introduction}
-%
-% The \Lpack{inslrmaj} and \Lpack{allimaj} packages provide a Metafont~\cite{METAFONT} version
-% of the \thisfont{} manuscript book-hand that was in use between about the
-% third and ninth centuries~\AD. It is part of a project to provide fonts
-% covering the major manuscript hands between the first century~\AD{} and
-% the invention of printing. The principal resources used in this project
-% are listed in the Bibliography.
-%
-% 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 is in Sections~\ref{sec:mf} and~\ref{sec:fd}
-% and source code for the package is in Section~\ref{sec:code}.
-%
-% \subsection{Manuscript book-hands}
-%
-% Before the invention of printing all books were written by hand. The book-hands
-% used by the scribes and copyists for the manuscripts changed as time
-% went on. Table~\ref{tab:1} lists some of the common book-hands which were used
-% between the 1st and 15th centuries. The later book-hands formed the basis of the
-% fonts used by the early printers, which in turn form the basis of the printing
-% fonts in use today.
-%
-% The manuscript book-hands were written with a broad nibbed reed or quill
-% pen. Among the distinguishing characteristics of a hand, apart from the
-% actual shape of the letters, are the angle of the pen (which controls the
-% variation between thick and thin strokes) and the height of a letter compared
-% to the width of the nib. The lower the ratio of the letter height to nib
-% width, the more condensed is the script. The scripts also varied in their
-% typical height.
-%
-% Table~\ref{tab:1} gives an `average' x-height for each
-% script, which I obtained by measuring a sample of photographs of
-% manuscripts written in the various hands. About a dozen examples
-% of each book-hand were measured. This figure should not be taken too
-% seriously.
-%
-% There was not a sharp division between the use of one hand and another.
-% Many manuscripts exhibit a variety of hands in the same document. For example,
-% the scribe writing in an Uncial hand may have used Roman Rustic letters
-% for capitals. Usually the same pen was used for the two different scripts.
-%
-% Generally speaking, as a hand got older it became more embelished, and
-% therefore took longer to write. As this happened a new hand would appear that
-% was faster, and which would eventually make the earlier one obsolete.
-%
-% Many of the book-hands were single-cased; that is, they did not have an
-% upper- and lower-case as we do nowadays in Western scripts. On the other
-% hand, a script might be majuscule or minuscule. A \textit{majuscule} script
-% is one, like our upper-case, where the letters are drawn between two lines
-% and are of a uniform height with no ascenders or descenders.
-% A \textit{minuscule} script, like our lower-case, is drawn between four lines
-% and has ascenders and descenders.
-%
-% \begin{table}
-% \centering
-% \caption{The main manuscript book-hands} \label{tab:1}
-% \begin{tabular}{lccccc} \hline
-% Name & Century & x-height & Height & Pen & Normalised \\
-% & & (mm) & (nib widths) & angle & height \\ \hline
-% Roman Rustic & 1--6 & 5.7 & 4--6 & 45 & 1.90 \\
-% Uncial & 3--6 & 4.1 & 4--5 & 30 & 1.37 \\
-% Half Uncial & 3--9 & 3.2 & 3--6 & 20--30 & 1.07 \\
-% Artificial Uncial & 6--10 & 4.2 & 3--6 & 10 & 1.40 \\
-% Insular majuscule & 6--9 & 4.2 & 5 & 0--20 & 1.40 \\
-% Insular minuscule & 6 onward & 4.1 & 5--6 & 45--70 & 1.37 \\
-% Carolingian minuscule & 8--12 & 3.0 & 3--5 & 45 & 1.00 \\
-% Early Gothic & 11--12 & 3.8 & 4--6 & 20--45 & 1.27 \\
-% Gothic Textura & 13--15 & 3.9 & 3--5 & 30--45 & 1.30 \\
-% Gothic Prescius & 13 onward & 3.3 & 4--5 & 45 & 1.10 \\
-% Rotunda & 13--15 & 3.2 & 4--6 & 30 & 1.07 \\
-% Humanist minuscule & 14 onward & 3.0 & 4--5 & 30--40 & 1.00 \\ \hline
-% \end{tabular}
-% \end{table}
-%
-% During the period under consideration arabic numerals were effectively
-% not used. At the beginning they were unknown and even though some knew
-% of them towards the end, the glyphs used for them are not recognisable ---
-% to me they look somewhat like cryllic letters --- and each locality
-% and time had its own highly individualistic rendering. The general rule
-% when using one of these book-hands is to write all numbers using
-% roman numerals.
-%
-% The Roman alphabet consisted of 23 capital letters --- the J, U and W
-% were absent. The book-hands initially used both a `u' and a `v' interchangeably
-% but by the 10th century the practice had become to use the `v' before a vowel
-% and the `u' otherwise. The letter corresponding to the W sound appeared
-% in England around the 7th century in
-% the form of the runic \textit{wen} character and by about the 11th century
-% the `w' chacter was generally used. The `J' is the newest letter of all, not
-% appearing until about the mid 16th century.
-%
-% In the first century punctuation was virtually unknown, and typically
-% would not even be any additional space between individual words, never
-% mind denoting ends of sentences. Sometimes a dot at mid-height would be
-% used as a word seperator, or to mark off the end of a paragraph. Effectively
-% a text was a continuous stream of letters. By the time that printing was
-% invented, though, all of our modern punctuation marks were being used.
-%
-% Among all these manuscript hands, the Carolingian minuscule is the
-% most important as our modern fonts are based on its letter shapes, and it is
-% also at this point in time where the division occured between the black letter
-% scripts as used even today in Germany, and the lighter fonts used elesewhere.
-% The Rotunda and Humanist minuscule hands were developed in Italy and were
-% essentially a rediscovery of the Carolingian minusucle. Guthenberg took the
-% Gothic scripts as the model for his types. Later printers,
-% such as Nicholas Jenson of Venice,
-% took the Humanist scripts as their models.
-%
-%
-% \subsection{The \thisfont{} script}
-%
-% The \thisfont{} hand, which is a majuscule script even though it does
-% have some ascenders and descenders, was in use for some three
-% centuries. It was originally developed in Ireland by St.~Patrick's monks
-% from the Roman Half Uncial script which they brought with them.
-% It was a formal script, the triangular serifs and clubbed ascenders took
-% at least two strokes each, so was not fast to write. The most famous
-% example of the script is the \textit{Book of Kells}, which was written
-% between 790 and 830. The hand eventually moved from Ireland to England
-% and became even more formal until it effectively dissappeared under its
-% own weight.
-%
-% Although the letter shapes in this book-hand are principally of
-% a lower-case form, there are a few that are shaped like capital letters.
-% For example, the `n' appeared as both an `n' and as an `N',
-% while the `f' and `r' were written like `F' and `R'.
-% Some letters had multiple forms. As well as the `n', both a short and
-% a long `s' were used and the `z' also took two forms.
-%
-% The letters were written very close together and the scibes used many
-% adhoc ligatures. A favourite was using a long `e' before a letter
-% with a bar at the x-height, and joining the crossbar of the `e' to
-% the bar of the following letter, for instance the pair `eg'.
-% I have only provided the ampersand, `\&', as a ligature, standing for
-% `et' which is the Latin for `and'.
-% Letters were also stretched if a line
-% needed some filling. For example, the capital form of the `n' might be
-% stretched to 2 or 3 times its normal width.
-%
-% Usually the
-% lettering in a manuscript was all one size. If the scribe felt the need
-% for `capital' letters then, using the same pen, would either write a larger
-% \thisfont{} letter or a letter from one of the more formal book-hands.
-% I have provided a set of `capital' letters that are only a little larger
-% than the normal letters for use in running text.
-% During the time the \thisfont{} script was used the alphabet only had 24
-% letters. I have included the missing J.
-%
-% Arabic numerals were unknown at this time, so all numbers were written
-% using the roman numbering system. I have provided \thisfont{} versions of
-% the arabic digits.
-%
-% Punctuation was used, but not with the frequency of today.
-% A sentence might be ended with
-% a dot at mid-height or a paragraph ended with a colon, also at mid-height.
-% The comma was was a small
-% slash; the semi-colon was known, as was the single quotation
-% mark which was represented by a raised comma.
-%
-%
-% \section{The \Lpack{inslrmaj} and \Lpack{allimaj} packages} \label{sec:usc}
-%
-% The \thisfont{} font family is called |imaj|. The font is supplied in both
-% OT1 and T1 encodings.
-%
-% \subsection{The \Lpack{inslrmaj} package}
-%
-% This is intended for the occasions when some short pieces of text have
-% to be written in \thisfont{} while the majority of the document is in another
-% font. The normal baselineskips are used.
-%
-% \DescribeMacro{\imajfamily}
-% The |\imajfamily| 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{\textimaj}
-% The command |\textimaj{|\meta{text}|}| will typeset \meta{text} using the
-% \thisfont{} fonts.
-%
-% \subsection{The \Lpack{allimaj} package}
-%
-%
-% This package is for when the entire document will be typeset with the
-% \thisfont font. The baselineskips are set to those appropriate to the
-% book-hand.
-%
-% This is a minimalist package. Apart from declaring \thisfont{} to be the
-% default font and setting the baselineskips appropriately, it makes no other
-% alterations.
-% Vertical spacing
-% before and after section titles and before and after lists, etc., will be
-% too small as the \LaTeX{} design assumes a font comparable in size to
-% normal printing fonts, and the book-hand is much taller.
-% To capture more of the flavour of the time, all numbers
-% should be written using roman numerals.
-% The \Lpack{romannum} package~\cite{ROMANNUM}
-% can be used so that \LaTeX{} will typeset the numbers that it generates,
-% like sectioning or caption numbers, using roman numerals instead of arabic
-% digits.
-%
-% \DescribeMacro{\cmrfamily}
-% \DescribeMacro{\textcmr}
-% \DescribeMacro{\cmssfamily}
-% \DescribeMacro{\textcmss}
-% \DescribeMacro{\cmttfamily}
-% \DescribeMacro{\textcmtt}
-% The |...family| declarations start typesetting with the Computer Modern Roman
-% (|\cmrfamily|), the Computer Modern Sans (|\cmssfamily|), and the Computer
-% Modern Typewriter (|\cmttfamily|) font families. The |\textcm..{|\meta{text}|}|
-% commands will typeset \meta{text} in the corresponding Computer Modern font.
-%
-% The \Lpack{allimaj} package automatically loads the \Lpack{inslrmaj} package,
-% so its font commands are available if necessary.
-%
-% \StopEventually{
-% \bibliographystyle{alpha}
-% \renewcommand{\refname}{Bibliography}
-% \begin{thebibliography}{GMS94}
-% \addcontentsline{toc}{section}{\refname}
-%
-% \bibitem[And69]{ANDERSON69}
-% Donald M.~Anderson.
-% \newblock {\em The Art of Written Forms: The Theory and Practice of Calligraphy}.
-% \newblock Holt, Rinehart and Winston, 1969.
-%
-% \bibitem[Bol95]{BOLOGNA95}
-% Giulia Bologna.
-% \newblock {\em Illuminated Manuscripts: The Book before Gutenberg}.
-% \newblock Crescent Books, 1995.
-%
-% \bibitem[Day95]{DAY95}
-% Lewis F.~Day.
-% \newblock {\em Alphabets Old \& New}.
-% \newblock (3rd edition originally published by B.~T.~Batsford, 1910)
-% \newblock Senate, 1995.
-%
-% \bibitem[Dro80]{DROGIN80}
-% Marc Drogin.
-% \newblock {\em Medieval Calligraphy: Its History and Technique}.
-% \newblock Allenheld, Osmun \& Co., 1980.
-%
-% \bibitem[Dru95]{DRUCKER95}
-% Johanna Drucker.
-% \newblock {\em The Alphabetic Labyrinth}.
-% \newblock Thames \& Hudson, 1995.
-%
-% \bibitem[Fir93]{FIRMAGE93}
-% Richard A.~Firmage.
-% \newblock {\em The Alphabet Abecedarium}.
-% \newblock David R~Goodine, 1993.
-%
-% \bibitem[Fli98]{LETTRINE}
-% Daniel Flipo.
-% \newblock {\em The LETTRINE package}.
-% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}).
-% \newblock 1998.
-%
-% \bibitem[Har95]{HARRIS95}
-% David Harris.
-% \newblock {\em The Art of Calligraphy}.
-% \newblock DK Publishing, 1995.
-%
-% \bibitem[Jen95]{BETON}
-% Frank Jensen.
-% \newblock {\em The BETON package}.
-% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}).
-% \newblock 1995.
-%
-% \bibitem[Joh71]{JOHNSTON75}
-% Edward Johnston (ed. Heather Child).
-% \newblock {\em Formal Penship and Other Papers}.
-% \newblock Penthalic, 1971.
-%
-% \bibitem[Knu87]{CM}
-% Donald E.~Knuth.
-% \newblock {\em Computer Modern Typefaces}.
-% \newblock Addison-Wesley, 1987.
-%
-% \bibitem[Knu92]{METAFONT}
-% Donald E.~Knuth.
-% \newblock {\em The METAFONTbook}.
-% \newblock Addison-Wesley, 1992.
-%
-% \bibitem[GMS94]{GOOSSENS94}
-% Michel Goossens, Frank Mittelbach, and Alexander Samarin.
-% \newblock {\em The LaTeX Companion}.
-% \newblock Addison-Wesley Publishing Company, 1994.
-%
-% \bibitem[Tho75]{THOMAS75}
-% Alan G.~Thomas.
-% \newblock {\em Great Books and Book Collectors}.
-% \newblock Weidenfield and Nichoson, 1975.
-%
-% \bibitem[Wil99]{DOCMFP}
-% Peter R.~Wilson.
-% \newblock {\em The DOCMFP Package}.
-% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}).
-% \newblock 1999.
-%
-% \bibitem[Wil99b]{ROMANNUM}
-% Peter R.~Wilson.
-% \newblock {\em The ROMANNUM Package}.
-% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}).
-% \newblock 1999.
-%
-% \end{thebibliography}
-% }
-%
-% \section{The Metafont code} \label{sec:mf}
-%
-%
-% As previously noted, this work is part of a larger project to provide
-% fonts covering the main manuscript book-hands. As such, one of the
-% aims is to produce a coordinated set of fonts, especially as multiple
-% hands might be used in a single document.
-%
-% Noting that the hands tend to be somewhat larger than the typical 10pt
-% size (where the x-height is approximately 1.5mm) used for modern books,
-% I have also designed the fonts
-% at a larger than normal size, then applied some non-linear factors when reducing
-% them down to a 10pt size.
-% Further, I have used the height of the Carolingian minuscule as a
-% normalising factor when deciding on the absolute height of any particular
-% script. The x-height of the Carolingian font is made equal to the
-% x-height of the Computer Modern Roman (CMR) font.
-%
-% Modern fonts are effectively drawn. That is, the outline of the letter is
-% drawn carefully and the center is filled with ink. This is shown to good
-% effect in the Metafont code for the Computer Modern fonts~\cite{CM}.
-% In contrast, the manuscript letters were inked by single pen strokes in
-% a calligraphic manner. I have tried to repeat this calligraphic style
-% in the Metafont code.
-%
-% As much as possible I have tried to use parameter values from the
-% Computer Modern Roman (CMR) fonts in order to reduce possible
-% infelicities if the CM and manuscript fonts are used together. However,
-% few of the CMR parameters are applicable to the calligraphic style.
-%
-%
-% \subsection{The parameter file}
-%
-% We deal with the parameter files first, and start by announcing
-% what they are for. The \thisfont{} font comes in three sizes and also as a normal
-% and a bold font.
-% \begin{macrocode}
-%<*base7|base10|base17|base7b|base10b|base17b>
-%<base7>%%% IMAJ7.MF Insular Majuscule at 7 point design size.
-%<base10>%%% IMAJ10.MF Insular Majuscule at 10 point design size.
-%<base17>%%% IMAJ17.MF Insular Majuscule at 17 point design size.
-%<base7b>%%% IMAJB7.MF Insular Majuscule Bold at 7 point design size.
-%<base10b>%%% IMAJB10.MF Insular Majuscule Bold at 10 point design size.
-%<base17b>%%% IMAJB17.MF Insular Majuscule Bold at 17 point design size.
-%
-% \end{macrocode}
-% Parameters from CMR are used as much as possible. We also
-% make sure that \Lpack{cmbase} is loaded as well as plain Metafont.
-% \begin{macrocode}
-if unknown cmbase: input cmbase fi
-
-%<base7>font_identifier:="IMAJ"; font_size 7pt#;
-%<base10>font_identifier:="IMAJ"; font_size 10pt#;
-%<base17>font_identifier:="IMAJ"; font_size 17.28pt#;
-%<base7b>font_identifier:="IMAJB"; font_size 7pt#;
-%<base10b>font_identifier:="IMAJB"; font_size 10pt#;
-%<base17b>font_identifier:="IMAJB"; font_size 17.28pt#;
-
-% \end{macrocode}
-%
-% \DescribeVariable{jutstretch}
-% The CMR scaling for lowercase serifs wrt 17pt size.
-% \begin{macrocode}
-%<base7|base7b> jutstretch:=1.19;
-%<base10|base10b> jutstretch:=1.152;
-%<base17|base17b> jutstretch:=1.0;
-% \end{macrocode}
-%
-% \DescribeVariable{stemstretch}
-% The CMR scaling for lowercase stem widths wrt 17pt size.
-% \begin{macrocode}
-%<base7|base7b> stemstretch:=1.50;
-%<base10|base10b> stemstretch:=1.31;
-%<base17|base17b> stemstretch:=1.0;
-% \end{macrocode}
-%
-% \DescribeVariable{caprat}
-% The scaling for `capitals' wrt `lowercase'. This is pretty much a guess
-% (the ratio for CMR10 is 1.59).
-% \begin{macrocode}
- caprat:=1.5; % ratio of capital height to minuscule height
-% \end{macrocode}
-%
-% \DescribeVariable{cap_jutstretch}
-% The CMR scaling for uppercase serifs wrt 17pt size.
-% \begin{macrocode}
-%<base7|base7b> cap_jutstretch:=1.3;
-%<base10|base10b> cap_jutstretch:=1.2;
-%<base17|base17b> cap_jutstretch:=1.0;
-% \end{macrocode}
-%
-% \DescribeVariable{cap_stemstretch}
-% The CMR scaling for uppercase stem width wrt 17pt size.
-% \begin{macrocode}
-%<base7|base7b> cap_stemstretch:=1.45;
-%<base10|base10b> cap_stemstretch:=1.31;
-%<base17|base17b> cap_stemstretch:=1.0;
-% \end{macrocode}
-%
-% \DescribeVariable{bfudge}
-% Letter width scaling for bold font wrt normal font.
-% \begin{macrocode}
-%<base7|base10|base17> bfudge:=1.0;
-%<base7b|base10b|base17b> bfudge:=1.2;
-% \end{macrocode}
-%
-% \DescribeVariable{szfudge}
-% Width scaling wrt 17pt letter width.
-% \begin{macrocode}
-%<base7|base7b> szfudge:=1.18;
-%<base10|base10b> szfudge:=1.0;
-%<base17|base17b> szfudge:=1.0;
-% \end{macrocode}
-%
-% \DescribeVariable{hstretch}
-% Horizontal stretching factor wrt 17pt size letter width.
-% \begin{macrocode}
- hstretch:=szfudge*bfudge;
-% \end{macrocode}
-%
-% \DescribeVariable{carol_height}
-% The x-height of the Carolingian minuscule font.
-% \begin{macrocode}
-%<base7|base7b> carol_height#:=108.5/36pt#;
-%<base10|base10b> carol_height#:=155/36pt#;
-%<base17|base17b> carol_height#:=268/36pt#;
-% \end{macrocode}
-%
-% \DescribeVariable{vstretch}
-% The height of this font wrt the Carolingian font.
-% \begin{macrocode}
- vstretch:=1.4;
-
-% \end{macrocode}
-%
-% \DescribeVariable{x_height}
-% The x-height of lower case letters. Scaled from the Carolingian font.
-% \begin{macrocode}
- x_height#:=vstretch*carol_height#;
-% \end{macrocode}
-%
-% \DescribeVariable{u}
-% The unit width. The CMR values are used.
-% \begin{macrocode}
-%<base7> u#:=15.5/36pt#;
-%<base10> u#:=20/36pt#;
-%<base17> u#:=32.5/36pt#;
-%<base7b> u#:=17.9/36pt#;
-%<base10b> u#:=23/36pt#;
-%<base17b> u#:=37/36pt#;
-% \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. The CM values are used.
-% \begin{macrocode}
- width_adj#:=0pt#; % width adjustment for certain characters
- serif_fit#:=0pt#; % extra sidebar near lowercase serifs
-%<base7|base7b> cap_serif_fit#:=3.5/36pt#; % extra sidebar near uppercase serifs
-%<base10|base10b> cap_serif_fit#:=5/36pt#; % extra sidebar near uppercase serifs
-%<base17|base17b> cap_serif_fit#:=8/36pt#; % extra sidebar near uppercase serifs
-%<base7|base7b> letter_fit#:=0pt#; % extra space added to all sidebars
-%<base10|base10b> letter_fit#:=0pt#; % extra space added to all sidebars
-%<base17|base17b> letter_fit#:=-0.1pt#; % extra space added to all sidebars
-% \end{macrocode}
-%
-% \DescribeVariable{sb}
-% A length used for adjusting the side bearings of characters.
-% \begin{macrocode}
-%<base7|base7b> sb#:=1/2u#; % unit for side bearings
-%<base10|base10b> sb#:=1/2u#; % unit for side bearings
-%<base17|base17b> sb#:=1/2u#; % unit for side bearings
-
-% \end{macrocode}
-%
-% \DescribeVariable{cap_height}
-% The height of capital letters.
-% \begin{macrocode}
-%<base7|base7b> cap_height#:=172.2/36pt#; % height of caps
-%<base10|base10b> cap_height#:=246/36pt#; % height of caps
-%<base17|base17b> cap_height#:=425/36pt#; % height of caps
-% \end{macrocode}
-%
-% \DescribeVariable{thickfudge}
-% The reciprocal of the font height in nib widths. Normal font height
-% is 5 nib widths and the bold font height is 4 nib widths.
-% \begin{macrocode}
-%<base7|base10|base17> thickfudge:=1/5;
-%<base7b|base10b|base17b> thickfudge:=1/4;
-% \end{macrocode}
-%
-% \DescribeVariable{thinfudge}
-% The nib sharpness.
-% \begin{macrocode}
-thinfudge:=1/6;
-% \end{macrocode}
-%
-% \DescribeVariable{thick}
-% The maximum nib width.
-% That is, the width of the thickest line that can be penned.
-% \begin{macrocode}
-thick#:=stemstretch*thickfudge*x_height#; % max pen breadth
-% \end{macrocode}
-%
-% \DescribeVariable{thin}
-% The nib thinness.
-% That is, the width of the thinnest line that can be penned.
-% \begin{macrocode}
-thin#:=thinfudge*thick#;
-% \end{macrocode}
-%
-% \DescribeVariable{pangle}
-% The pen angle (in degrees).
-% \begin{macrocode}
-pangle:=0; % pen angle
-% \end{macrocode}
-%
-% \DescribeVariable{ascratio}
-% The height of lower case ascenders wrt |x_height|.
-% \begin{macrocode}
- ascratio:=5/3;
-% \end{macrocode}
-%
-% \DescribeVariable{asc_height}
-% The height of lower case ascenders.
-% \begin{macrocode}
- asc_height#:=ascratio*x_height#;
-% \end{macrocode}
-%
-% \DescribeVariable{descratio}
-% The depth of lower case descenders wrt |x_height|.
-% \begin{macrocode}
- descratio:=1.5/3;
-% \end{macrocode}
-%
-% \DescribeVariable{desc_depth}
-% The depth of lower case descenders.
-% \begin{macrocode}
- desc_depth#:=descratio*x_height#;
-% \end{macrocode}
-%
-% \DescribeVariable{fig_height}
-% The height of numerals. Make these midway between normal and capital
-% letters.
-% \begin{macrocode}
- fig_height#:=(0.5[1,caprat])*x_height#;
-% \end{macrocode}
-%
-% \DescribeVariable{fig_width}
-% The width of numerals. All numerals are the same width (roughly, an `o').
-% \begin{macrocode}
- fig_width#:=hstretch*(x_height#);
-% \end{macrocode}
-%
-% \DescribeVariable{body_height}
-% The height of the tallest character.
-% \begin{macrocode}
- body_height#:=caprat*asc_height#;
-% \end{macrocode}
-%
-% \DescribeVariable{body_depth}
-% The depth of the lowest character.
-% \begin{macrocode}
- body_depth#:=caprat*desc_depth#;
-% \end{macrocode}
-%
-% \DescribeVariable{half_height}
-% Half the normal letter height.
-% \begin{macrocode}
- half_height#:=1/2x_height#; % half the height of x height letters
-
-% \end{macrocode}
-%
-% \DescribeVariable{side}
-% We might be using a square for the character design.
-% \begin{macrocode}
-side#:=x_height#;
-% \end{macrocode}
-%
-% \DescribeVariable{rule_thickness}
-% Thickness of rules (in math symbols). The CMR values are used.
-% \begin{macrocode}
-%<base7|base7b> rule_thickness#:=.34pt#;
-%<base10|base10b> rule_thickness#:=.4pt#;
-%<base17|base17b> rule_thickness#:=.6pt#;
-
-% \end{macrocode}
-%
-% \DescribeVariable{jutfudge}
-% Controls the protrusion of serifs.
-% \begin{macrocode}
-%%%%jutfudge:= 3/4;
-jutfudge:= 1/2;
-% \end{macrocode}
-%
-% \DescribeVariable{jut}
-% The lowercase serif protrusion.
-% \begin{macrocode}
-jut#:=jutstretch*jutfudge*thick#;
-% \end{macrocode}
-%
-% \DescribeVariable{srad}
-% |srad| with |0 < srad < 1| controls the serif radius.
-% \begin{macrocode}
-srad:=0.5;
-% \end{macrocode}
-%
-% \DescribeVariable{trijut}
-% The lowercase triangular serif protrusion.
-% \begin{macrocode}
-trijut#:=0.75jutstretch*thick#;
-% \end{macrocode}
-%
-% \DescribeVariable{clubjut}
-% The fractional protusion of the club base.
-% \begin{macrocode}
-clubjut:=5/12;
-% \end{macrocode}
-%
-% \DescribeVariable{o}
-% Amount of overshoot for curves (as in an `o'). Use CMR values.
-% \begin{macrocode}
-%<base7|base7b> o#:=5/36pt#;
-%<base10|base10b> o#:=8/36pt#;
-%<base17|base17b> o#:=10/36pt#;
-
-% \end{macrocode}
-%
-% \DescribeVariable{slant}
-% |slant| is the amount the font slopes to the right.
-% \begin{macrocode}
-slant:=0; % tilt ratio $(\Delta x/\Delta y)$
-
-% \end{macrocode}
-%
-% \DescribeVariable{monospace}
-% We are generating a variable-width font.
-% \begin{macrocode}
-monospace:=false; % should all characters have the same width?
-
-% \end{macrocode}
-%
-% \DescribeVariable{dot_size}
-% The size of (punctuation) dots.
-% \begin{macrocode}
-dot_size#:=5thin#; % size of dots
-% \end{macrocode}
-%
-% \DescribeVariable{comma_width}
-% The horizontal width of a comma.
-% \begin{macrocode}
-comma_width#:=2.5dot_size#;
-
-% \end{macrocode}
-%
-% Finally, call the driver file for the font.
-% \begin{macrocode}
-generate imajtitle %% switch to the driver file
-
-% \end{macrocode}
-%
-% The end of this code section.
-% \begin{macrocode}
-%</base7|base10|base17|base7b|base10b|base17b>
-% \end{macrocode}
-%
-%
-% \subsection{The driver file}
-%
-% The driver file sets up the font parameters and also contains
-% the macros used in the definition of the characters.
-%
-% \begin{macrocode}
-%<*mfd>
-% This is IMAJTITLE.MF for the Insular Majuscule font.
-% This makes a short font.
-% This file also contains special macros universally needed in the
-% font but either not in the cmbase.mf file or modifications of these.
-%
-% \end{macrocode}
-%
-% \begin{routine}{makebox}
-% This is a new version of the \Lpack{cmbase.mf} |makebox| macro.
-% Essentially, as we are only generating a single case font, we don't
-% need all the horizontals for the CMR characters.
-%
-% \begin{macrocode}
-% A new version of cmbase.mf makebox macro
-def makebox(text rule) =
- for y=0,half_height,cap_height,body_height,x_height,-desc_depth,-body_depth:
- rule((l,y)t_,(r,y)t_); endfor % horizontals
- for x=l,r: rule((x,-body_depth)t_,(x,body_height)t_); endfor % verticals
- for x=u*(1+floor(1/u)) step u until r-1:
- rule((x,-body_depth)t_,(x,body_height)t_); endfor % more verticals
- if charic<>0:
- rule((r+charic*pt,h.o_),(r+charic*pt,.5h.o_)); fi % italic correction
-enddef;
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{proofpcbb}
-% The macro |proofpcbb(S, xoff, yoff)| draws crosses at the corners of the
-% square, and at the bottom and top midpoints, where the point |zS| is at
-% position |(xoff,yoff)| in the square.
-% \begin{macrocode}
-
-% A macro to delineate a letter's bounding square in proof mode.
-% Point z$ is at (xoff,yoff) in the bounding square.
-def proofpcbb(suffix $)(expr xoff, yoff) =
-if proofing > 0:
- x$bl = x$ - xoff; y$bl = y$ - yoff; % Bottom Left Hand Corner
- z$br = (x$bl+side, y$bl); % BRHC
- z$tr = (x$bl+side, y$bl+side); % TRHC
- z$tl = (x$bl, y$bl+side); % TLHC
- z$bc = 1/2[z$bl,z$br]; z$tc = 1/2[z$tl,z$tr]; % horizontal mid points
- pair hc, vc;
- hc = (2u,0); vc = (0,2u);
- pickup pensquare scaled 2;
- for s = z$bl, z$br, z$tr, z$tl, z$bc, z$tc:
- draw s-hc--s+hc;
- draw s-vc--s+vc;
- endfor
-fi
-enddef;
-
-% \end{macrocode}
-% \end{routine}
-%
-%
-%
-% \begin{routine}{inslrmaj_font_setup}
-% This macro contains the set up for the \thisfont{} fonts.
-% \begin{macrocode}
-
-def inslrmaj_font_setup= % contains special stuff for inslrmaj fonts
- define_pixels(side,half_height,carol_height,comma_width);
- define_pixels(u,dot_size,letter_size,cap_height,width_adj,serif_fit,
- cap_serif_fit,jut,cap_jut,trijut);
- define_pixels(fig_width);
- define_whole_pixels(letter_fit,sb);
- define_whole_vertical_pixels(body_height,asc_height,cap_height,x_height,
- desc_depth,body_depth,fig_height);
- define_corrected_pixels(o);
- define_blacker_pixels(thick,thin);
- let adjust_fit = normal_adjust_fit;
-% \end{macrocode}
-% \DescribeVariable{stylus}
-% The pen for drawing the thinnest lines is |stylus|.
-% \begin{macrocode}
- pickup pencircle scaled thin;
- stylus:=savepen;
-% \end{macrocode}
-% \DescribeVariable{thickstylus}
-% The pen for drawing lines a bit thicker than the thinnest is |thickstylus|.
-% \begin{macrocode}
- pickup pencircle scaled (1.5thin);
- thickstylus:=savepen;
-% \end{macrocode}
-% \DescribeVariable{quill}
-% The normal calligraphic pen is |quill|.
-% \begin{macrocode}
- pickup pencircle xscaled thick yscaled thin rotated pangle;
- quill:=savepen;
- numeric pcshiftx#; % x value of LHS of box wrt origin of char box
- define_pixels(pcshiftx);
- numeric sqxside#; % x size of the square
- numeric sqyside#; % y size of the square
- define_pixels(sqxside,sqyside);
-
-enddef; % end of inslrmaj_font_setup
-
-% \end{macrocode}
-% \end{routine}
-%
-%
-% \DescribeVariable{ductus}
-% A boolean to control drawing the ductus (TRUE) or the full letter (FALSE).
-% \begin{macrocode}
-boolean ductus;
-ductus:=false;
-% \end{macrocode}
-%
-% \DescribeVariable{qhor}
-% \DescribeVariable{qvert}
-% The cosine and sine of the pen angle.
-% \begin{macrocode}
-numeric qhor, qvert;
-qhor:=cosd(pangle); qvert:=sind(pangle);
-% \end{macrocode}
-%
-% \DescribeVariable{pdir}
-% The vector corresponding to the pen angle.
-% \begin{macrocode}
-pair pdir; pdir=dir(pangle);
-% \end{macrocode}
-%
-% \DescribeVariable{ppdir}
-% The vector that is perpendicular (anticlockwise) to the pen angle.
-% \begin{macrocode}
-pair ppdir; ppdir=dir(pangle+90);
-% \end{macrocode}
-%
-% \begin{routine}{draw_serif}
-% A macro to draw a serif. |draw_serif(1,2,f)| uses the current pen to
-% draw a serif of extent |jut| at |z1| to the left of the line from |z2|
-% to |z1|. The
-% radius is controlled by |f|, where $0<f<1$. The `stem' from |z1| to |z2|
-% starts at the point |z1a|.
-% \begin{macrocode}
-
-def draw_serif(suffix $, $$)(expr fr)=
- numeric beta, ajut, bjut;
-% \end{macrocode}
-% |fr| and |beta| control the serif radius.
-% \begin{macrocode}
- beta=1-fr;
- ajut=fr*jut; bjut=beta*jut;
-% \end{macrocode}
-% The points |$c|, |$b| and |$a| define the serif. For a top (bottom) serif
-% the leftmost (rightmost) point is
-% |$c| and |$a| is on the stem. |$a| is moved from |$| towards |$$| by the
-% distance |ajut|, and the other points are calculated from this. If the stem
-% is not vertical, then we have to rotate |$b| to match.
-% \begin{macrocode}
- pair vec[]; vec1=unitvector(z$$-z$);
- vec2=ajut*vec1;
- z$a=z$ shifted vec2;
- z$b=z$a rotatedaround (z$,-90);
- boolean top_serif;
- if y$>y$$:
- top_serif := true;
- z$c=z$b shifted (-bjut*pdir);
- else:
- top_serif:=false;
- z$c=z$b shifted (bjut*pdir);
- fi
-% \end{macrocode}
-% Draw the parts, and finish off.
-% \begin{macrocode}
- if top_serif:
- draw z$c--z$b{pdir}..{z$$-z$}z$a; % the serif
- else:
- draw z$c--z$b{-pdir}..{z$$-z$}z$a;
- fi
- labels($a,$b,$c);
-enddef; % end of draw_serif
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{draw_triserif}
-% A macro to draw a triangular top left serif.
-% |draw_triserif(1,tj)| draws a serif at |z1| with its leftmost x
-% value at |x1-tj|, where it is assumed that the
-% top point on the stem is at |z1| and the stem was drawn with |quill|.
-% \begin{macrocode}
-
-def draw_triserif(suffix $)(expr tj)=
- pen oldpen; oldpen:=currentpen;
- pickup quill;
- x$ts1'=lft x$; y$ts1'=bot y$;
- pickup stylus;
- lft x$ts1=x$ts1'; bot y$ts1=y$ts1';
- x$ts2=x$ts1-tj; z$ts2=whatever[z$,z$ts1];
- x$ts3=x$ts1; y$ts3=y$ts2-tj;
- pickup stylus;
-%% filldraw z$ts1--z$ts2--z$ts3--cycle;
- filldraw z$--z$ts2--z$ts3--cycle;
- pickup oldpen;
- labels($ts1,$ts2,$ts3);
-enddef; % end of draw_triserif
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{draw_istem}
-% A macro to draw the shape of an i. |draw_istem(1,2,f)| draws a stem whose
-% top is at |z1| and bottom at |z2|. It draws with the current pen and the serifs
-% are of extent |jut|. There is a top left and bottom right serif.
-% The serif radius is controlled by |f|, with $0<f<1$.
-% \begin{macrocode}
-
-def draw_istem(suffix $, $$)(expr fr)=
- draw_serif($, $$, fr); % top serif
- draw_serif($$, $, fr); % bottom serif
- draw z$a--z$$a; % the stem
-enddef; % end of draw_istem
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{draw_tstem}
-% A macro to draw the shape of the stem of a `t'. |draw_tstem(1,2,f)| draws a
-% stem whose
-% top is at |z1| and bottom at |z2| with a right serif at |z2|. The radius
-% is controlled by |f|, with $0 < f < 1$.
-% It draws with the current pen and the serif is of extent |jut|.
-% NOTE: for the IMAJ font, just the stem is drawn --- no serif!
-% \begin{macrocode}
-
-def draw_tstem(suffix $, $$)(expr fr)=
-%% draw_serif($$, $, fr); % the serif
-%% draw z$--z$$a; % the stem
- draw z$--z$$;
-enddef; % end of draw_tstem
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{draw_tlserif}
-% A macro to draw a top left serif. |draw_tlserif(1,2,f)| draws a serif on top
-% of a stem whose absolute
-% top is at |z1| and bottom at |z2|. It draws with the current pen and the serif
-% is of extent |jut|. It also draws the stem to the point |z2|. The serif
-% radius is controlled by |f|, with $0<f<1$.
-% \begin{macrocode}
-
-def draw_tlserif(suffix $, $$)(expr fr)=
- draw_serif($, $$, fr); % the serif
- draw z$a--z$$; % the stem
-enddef; % end of draw_tlserif
-
-% \end{macrocode}
-% \end{routine}
-%
-%
-% \begin{routine}{draw_flick}
-% A macro to draw a flick (like an eyebrow).
-% |draw_flick(1,rise,fall,fjut)| draws a stroke starting at |z1| rising up by
-% |rise| and falling down by |fall| wrt |z1|. The overall stroke distance is
-% |fjut| to the right of |z1|. It is drawn with the current pen.
-% \begin{macrocode}
-
-def draw_flick(suffix $)(expr rise, fall, fjut)=
-% \end{macrocode}
-% The points |z$a| and |z$b|, together with |z$| make up three points on the
-% ductus.
-% \begin{macrocode}
- rt x$b = x1+fjut; top y$b=y$-fall;
- x$a=0.5[x$,x$b]; top y$a=y$+rise;
-% \end{macrocode}
-% Draw the part, and finish off.
-% \begin{macrocode}
- draw z$..z$a..z$b;
- labels($a,$b);
-enddef; % end of draw_flick
-
-% \end{macrocode}
-% \end{routine}
-%
-%
-% \begin{routine}{draw_wave}
-% A macro to draw a (horizontal) stroke with a flick at each end
-% (down at the left and up at the right). |draw_wave(1,2,f)| uses the current
-% pen to draw from |z1wl| to |z1wr|, where |x1wl=x1|, |y1wl=y1-f|, and
-% |x1wr=x2|, |y1wr=y2+f|, with |z1| assumed to be at the left of |z2|.
-% \begin{macrocode}
-
-def draw_wave(suffix $,$$)(expr f)=
- x$wl=x$; y$wl=y$-f;
- x$wr=x$$; y$wr=y$$+f;
- z$wc=0.5[z$wl,z$wr];
- draw z$wl{pdir}..z$wc{right}..{pdir}z$wr;
- labels($wl,$wc,$wr);
-enddef; % end of draw_wave
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{draw_tail}
-% A macro to draw a tail at the bottom of a (vertical) stem.
-% |draw_tail(1,fjut)| draws a tail at the bottom of the stem which ends at |z1|.
-% The depth is controlled by the |desc_depth| value and the jut by |fjut|.
-% \begin{macrocode}
-
-def draw_tail(suffix $)(expr fj)=
- pen oldpen; oldpen:=currentpen;
- pickup quill;
- x$tl' = lft x$; y$tl=bot y$;
- pickup stylus;
- lft x$tl=x$tl';
- x$tb=x$tl-fj; bot y$tb=y$tl-1/2desc_depth;
- filldraw z${down}..{-pdir}z$tb & z$tb{pdir}..{up}z$tl--cycle;
- pickup oldpen;
- labels($tb,$tl);
-enddef; % end of draw_tail
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{draw_triangle}
-% A macro to draw a downward pointing equilateral triangle.
-% |draw_triangle(1,sz)| draws a triangle of side length |sz| with |z1| in the middle
-% of the base.
-% \begin{macrocode}
-
-def draw_triangle(suffix $)(expr sz)=
- pen oldpen; oldpen:=currentpen;
- pickup stylus;
- x$t1=x$-sz/2; x$t3=x$+sz/2;
- y$t1=y$t3=y$;
- x$t2=x$; y$t2=y$-0.9sz; % approx sqrt(3)/2
- filldraw z$t1--z$t2--z$t3--cycle;
- pickup oldpen;
- labels($t1,$t2,$t3);
-enddef; % end of draw_triangle
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{draw_utriangle}
-% A macro to draw an upward pointing equilateral triangle.
-% |draw_utriangle(1,sz)| draws a triangle of side length |sz| with |z1| in the middle
-% of the base.
-% \begin{macrocode}
-
-def draw_utriangle(suffix $)(expr sz)=
- pen oldpen; oldpen:=currentpen;
- pickup stylus;
- x$t1=x$-sz/2; x$t3=x$+sz/2;
- y$t1=y$t3=y$;
- x$t2=x$; y$t2=y$+0.9sz; % approx sqrt(3)/2
- filldraw z$t1--z$t2--z$t3--cycle;
- pickup oldpen;
- labels($t1,$t2,$t3);
-enddef; % end of draw_utriangle
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{draw_rtriangle}
-% A macro to draw a downward pointing right angled triangle.
-% |draw_rtriangle(1,sz)| draws a triangle of side length |sz| with |z1| at the
-% right (where the right angle is).
-% \begin{macrocode}
-
-def draw_rtriangle(suffix $)(expr sz)=
- pen oldpen; oldpen:=currentpen;
- pickup stylus;
- x$t1=x$-sz; rt x$t3=x$;
- y$t1=y$t3=y$;
- x$t2=x$t3; y$t2=y$-sz;
- filldraw z$t1--z$t2--z$t3--cycle;
- pickup oldpen;
- labels($t1,$t2,$t3);
-enddef; % end of draw_rtriangle
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{draw_rutriangle}
-% A macro to draw an upward pointing right angled triangle.
-% |draw_rutriangle(1,sz)| draws a triangle of side length |sz| with |z1| at the
-% right (where the right angle is).
-% \begin{macrocode}
-
-def draw_rutriangle(suffix $)(expr sz)=
- pen oldpen; oldpen:=currentpen;
- pickup stylus;
- x$t1=x$-sz; rt x$t3=x$;
- y$t1=y$t3=y$;
- x$t2=x$t3; y$t2=y$+sz;
- filldraw z$t1--z$t2--z$t3--cycle;
- pickup oldpen;
- labels($t1,$t2,$t3);
-enddef; % end of draw_rutriangle
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{draw_fork}
-% A macro to draw a forked line.
-% |draw_fork(1,2,sz)| draws a graduated line from |z1| to |z2| with a forked
-% end of size |sz|.
-% \begin{macrocode}
-
-def draw_fork(suffix $, $$)(expr sz)=
- pen oldpen; oldpen:=currentpen;
- pickup quill;
- x$f1'=lft x$; y$f1'=bot y$;
- x$f3'=rt x$; y$f3'=top y$;
- pickup stylus;
- lft x$f1=x$f1'; bot y$f1=y$f1';
- rt x$f3=x$f3'; y$f3-y$=2*(y$-y$f1);
- rt x$f2=x$$-sz; bot y$f2=y$$;
- rt x$f4= rt x$f5=x$$;
- bot y$f5=y$$-sz; top y$f4=y$$+1/2sz;
- filldraw z$f1--z$f2--z$f3--cycle; % the line
- draw z$f2{right}..z$f4; % upper fork
- draw z$f2{right}..z$f5; % lower fork
- pickup oldpen;
- labels($f1,$f2,$f3,$f4,$f5);
-enddef; % end of draw_fork
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{draw_urswish}
-% A macro to draw a line up and to the right with an under curl at the end.
-% |draw_urswish(1,2)| draws from |z1| towards |z2|, which is the max upper right
-% of a bounding box, where the curl is.
-% \begin{macrocode}
-
-def draw_urswish(suffix $, $$)=
- pen oldpen; oldpen:=currentpen;
- pickup quill;
- rt x$$s1=x$$-thick; top y$$s1=y$$;
- rt x$$s2=x$$;
-%% x$$s3=x$$-thick;
- lft x$$s3=x$$s1;
- bot y$$s3=y$$-thick; y$$s2=0.5[y$$s1,y$$s3];
-%% draw z$---z$$s1{right}..z$$s2{down}..{-pdir}z$$s3;
- draw z$..z$$s1{pdir}..z$$s2{down};
- labels($$s1,$$s2,$$s3);
-enddef; % end of draw_urswish
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{bowl_stem}
-% Calculate where a bowl should meet a stem so that the pen is moving in the
-% pen direction.
-% |bowl_stem(1,2)| calculates the point |z1i|, where |z1| is on the bowl and
-% there is a vertical line at |x2|.
-%
-% \begin{macrocode}
-
-def bowl_stem(suffix $, $$)=
- x$'=0.5[x$,x$$]; y$'=y$; % the mid-point
- z$''=z$' shifted (thick*pdir);
- x$i=x$$; z$i=whatever[z$',z$''];
- labels($',$i);
-enddef; % end of bowl_stem
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{draw_clubbase}
-% Draw a clubbed bottom of a vertical stem for the IMAJ font.
-% |draw_clubbase(1, 2, st, left, right)| draws from |st[z2,z1]| to |z2|.
-% At |z2| the pen
-% is shifted |left| fraction of the pen width and |right| fraction of the
-% pen width, both in the direction of the pen angle. Pen draws smoothly the
-% path |z1|, |left|, |right|, |z1|.
-% \begin{macrocode}
-
-% draw clubbed bottom of vertical stem for IMAJ font.
-def draw_clubbase(suffix $, $$)(expr st, lft, rt)=
- z$$l = z$$ shifted (lft*thick*(-pdir));
- z$$r = z$$ shifted (rt*thick*(pdir));
- z$$t = st[z$$,z$];
- draw z$$t{z$$-z$}..z$$l--z$$r..{z$-z$$}z$$t;
- labels($$t,$$l,$$r);
-enddef; % end of draw_clubbase
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{draw_pdot}
-% A macro to draw a period dot.
-% |draw_pdot(1,sz)| uses |stylus| to draw a dot centered at |z1| of overall size |sz|.
-% \begin{macrocode}
-
-def draw_pdot(suffix $)(expr sz)=
-% \end{macrocode}
-% Draw a square rotated 45 degrees.
-% \begin{macrocode}
- z$s = z$ shifted (0.5sz*left);
- z$t = z$ shifted (0.5sz*up);
- z$u = z$s shifted (sz*right);
- z$v = z$t shifted (sz*down);
- pickup stylus;
- filldraw z$s--z$t--z$u--z$v--cycle;
- labels($s,$t,$u,$v);
-enddef; % end of draw_pdot
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{draw_pcomma}
-% A macro to draw a period comma.
-% |draw_pcomma(1,t,w)| draws a comma placed at |z1| (the top), line width is |t|
-% and bottom of line is |w| horizontally from |z1|. The pen is |stylus|.
-% \begin{macrocode}
-
-def draw_pcomma(suffix $)(expr sz, ar)=
-% \end{macrocode}
-% Draw a line of at |z$| of width |sz| sloping back and down at 45 degrees
-% for a total width of |ar|.
-% \begin{macrocode}
- z$s = z$ shifted (0.5sz*left);
- z$t = z$s shifted (sz*right);
- x$v=x$s-ar; y$v=y$s-ar;
- z$u = z$v shifted (sz*right);
- pickup stylus;
- filldraw z$s--z$t--z$u--z$v--cycle;
-%% filldraw z$s--z$t--z$u--cycle;
- labels($s,$t,$u,$v);
-enddef; % end of draw_pcomma
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{draw_plq}
-% A macro to draw a period left quote.
-% |draw_pcomma(1,t,w)| draws a left quote placed at |z1| (the top), line width is |t|
-% and bottom of line is |w| horizontally from |z1|.
-% \begin{macrocode}
-
-def draw_plq(suffix $)(expr sz, ar)=
-% \end{macrocode}
-% Draw a line of at |z$| of width |sz| sloping forward and down at 45 degrees
-% for a total width of |ar|.
-% \begin{macrocode}
- z$s = z$ shifted (0.5sz*left);
- z$t = z$s shifted (sz*right);
- x$v=x$s+ar; y$v=y$s-ar;
- z$u = z$v shifted (sz*right);
- pickup stylus;
- filldraw z$s--z$t--z$u--z$v--cycle;
-%% filldraw z$s--z$t--z$v--cycle;
- labels($s,$t,$u,$v);
-enddef; % end of draw_plq
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{offsetbowl}
-% A macro to calculate the outer and inner paths (|obouter| and |obinner|)
-% for a non-centered letter `o'. |offsetbowl($, sx, sy, fx, fy)|
-% calculates the paths for an `o'
-% enclosed in a rectangle size |sx| by |sy| with its bottom lefthand corner
-% located at |z$|, where the center of the o is at |(fx*sx, fy*sy)| in the
-% bounding rectangle.
-%
-% Two construction paths, namely |obfirst| and |obsecond| are also
-% available. They should be identical.
-%
-% All paths have points listed in a clockwise direction, starting with
-% |z$nh| or |z$minl| as appropriate.
-%
-% |offsetbowl($, sx, sy, 1/2, 1/2)| gives the same results as |obowl($, sx, sy)|.
-% \begin{macrocode}
-
-path obouter, obinner, obfirst, obsecond;
-def offsetbowl(suffix $)(expr sx, sy, fx, fy)=
- numeric inx, iny, cx, cy;
- pair pt[];
- inx := 1/2thick*cosd(pangle); iny := 1/2thick*sind(pangle);
- cx := x$+fx*sx; cy := y$+fy*sy;
- z$obc = (cx,cy);
-% \end{macrocode}
-% Calulate points on the centre path of the pen. These are offset by |inx|
-% from the rectangles vertical sides and by |iny| from the horizontal sides.
-% If the pen is parallel to a side, offset the point by half the pen's
-% dimension. First do the West, East, North and South points.
-% \begin{macrocode}
- if pangle = 90:
- z$wt=(x$+1/2thin, cy);
- z$et=(x$+sx-1/2thin, cy);
- else:
- z$wt=(x$+inx, cy);
- z$et=(x$+sx-inx, cy);
- fi
- if pangle = 0:
- z$nh=(cx, y$+sy-1/2thin);
- z$sh=(cx, y$+1/2thin);
- else:
- z$nh=(cx, y$+sy-iny);
- z$sh=(cx, y$+iny);
- fi
- obfirst := z$nh{right}..z$et{down}..z$sh{left}..z$wt{up}..cycle;
-% \end{macrocode}
-% Now calculate the points on the path |obfirst| where the pen will
-% draw the max and min width lines (i.e., the points where the pen will be
-% moving parallel and perpendicular to |pangle|).
-% \begin{macrocode}
- z$minl = directionpoint dir(pangle) of obfirst;
- z$maxr = directionpoint -dir(pangle+90) of obfirst;
- z$minr = directionpoint -dir(pangle) of obfirst;
- z$maxl = directionpoint dir(pangle+90) of obfirst;
-% \end{macrocode}
-% Place the pen at each of these points to get the outer and inner points.
-% \begin{macrocode}
- penpos$minl(thin,pangle+90);
- penpos$maxr(thick,pangle);
- penpos$minr(thin,pangle+90);
- penpos$maxl(thick,pangle);
-% \end{macrocode}
-% Finally, the outer and inner paths.
-% \begin{macrocode}
- obsecond := z$minl..z$maxr..z$minr..z$maxl..cycle;
- z$minlo = z$minl.r; z$maxro = z$maxr.r;
- z$minro = z$minr.l; z$maxlo = z$maxl.l;
- obouter := z$minlo..z$maxro..z$minro..z$maxlo..cycle;
-%% obouter := z$minl.r..z$maxr.r..z$minr.l..z$maxl.l..cycle;
- z$minli = z$minl.l; z$maxri = z$maxr.l;
- z$minri = z$minr.r; z$maxli = z$maxl.r;
- obinner := z$minli..z$maxri..z$minri..z$maxli..cycle;
-%% obinner := z$minl.l..z$maxr.l..z$minr.r..z$maxl.r..cycle;
- labels($obc, $nh, $et, $sh, $wt);
- labels($minl, $maxr, $minr, $maxl);
- labels($minlo, $maxro, $minro, $maxlo);
- labels($minli, $maxri, $minri, $maxli);
-enddef;
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{obowl}
-% A macro to calculate the outer and inner paths (|obouter| and |obinner|)
-% for the letter `o'. |obowl($, sx, sy)| calculates the paths for an `o'
-% centered and enclosed in a rectangle size |sx| by |sy| with its bottom
-% lefthand corner located at |z$|.
-% \begin{macrocode}
-
-def obowl(suffix $)(expr sx, sy)=
- offsetbowl($, sx, sy, 1/2, 1/2);
-enddef;
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{scalarprod}
-% |v scalarprod w| calulates the scalar product between the
-% two vectors |v| and |w|.
-% \begin{macrocode}
-
-primarydef v scalarprod w =
- (xpart v * ypart w - ypart v * xpart w)
-enddef;
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{tangentpoint}
-% |tangentpoint($, path)| calculates the point |z$tan| on the |path|
-% so that |z$tan--z$| is tangent to the path. It uses a binary search
-% to find a point on the path such that the path direction is
-% (anti-) parallel to the dirction from that point to the given point.
-% \begin{macrocode}
-
-def tangentpoint(suffix $)(expr pth)=
- pair vecll, veclr, veclm; % "tangent" line directions
- numeric pl, pr, pm; % path parameter values
- pair vecpl, vecpr, vecpm; % path directions
- pair ptl, ptr, ptm; % path points
- numeric sl, sr, sm; % scalar products of path/line directions
- numeric stpsize; % size of current binary step
- numeric tantol; % tolerance
- boolean wtest; % a boolean
-
- tantol := eps;
-% \end{macrocode}
-% Initialise using the left right and middle points on the path.
-% \begin{macrocode}
- pl:=0; pr:=length pth; pm:=0.5(pl+pr); stpsize:=pr-pl;
- ptl := point pl of pth;
- ptm := point pm of pth;
- ptr := point pr of pth;
-% \end{macrocode}
-% Now the various vectors, and make sure they are unit vectors to
-% have a consistent measure scale when we take the scalar products.
-% \begin{macrocode}
- vecll := unitvector (z$-ptl);
- veclm := unitvector (z$-ptm);
- veclr := unitvector (z$-ptr);
- vecpl := unitvector (direction pl of pth);
- vecpm := unitvector (direction pm of pth);
- vecpr := unitvector (direction pr of pth);
- sl := vecll scalarprod vecpl;
- sm := veclm scalarprod vecpm;
- sr := veclr scalarprod vecpr;
-% \end{macrocode}
-% We stop if any of the points is the tangent point, or if the step
-% size is too small, or if the signs of the left and right scalar
-% products are the same.
-% \begin{macrocode}
- wtest := (stpsize < tantol) or (sl*sr > 0) or
- (abs sl < tantol) or (abs sm < tantol) or (abs sr < tantol);
- if wtest:
- if (stpsize < tantol):
- z$tan=(0,0);
- errmessage("No tangent; path too short");
- else:
- if (sl*sr > 0):
- z$tan=(0,0);
- errmessage("No tangent; end products have the same sign");
- else:
- if (abs sl < tantol):
- z$tan=ptl;
- else:
- if (abs sm < tantol):
- z$tan=ptm;
- else:
- z$tan=ptr;
- fi
- fi
- fi
- fi
- else:
-% \end{macrocode}
-% There should be a tangent and we iterate to find it, using
-% bisection. If there is one to be found it will be at the
-% current middle point. The tangent point will be somewhere
-% between the two points that lead to opposite signed scalar
-% products.
-% \begin{macrocode}
- forever:
- if (sl*sm < 0): % opposite signs, look between pl & pm
- pr:=pm; pm:=0.5(pr+pl);
- vecpr := vecpm; veclr := veclm; sr:=sm;
- else:
- pl:=pm; pm:=0.5(pr+pl);
- vecpl:=vecpm; vecll:=veclm; sl:=sm;
- fi
- stpsize:=pr-pl;
- ptm := point pm of pth;
- veclm := unitvector (z$-ptm);
- vecpm := unitvector (direction pm of pth);
- sm := veclm scalarprod vecpm;
-% \end{macrocode}
-% We stop the iteration if the step size is too small or the
-% middle point is the tangent point. In either case, the
-% middle point is the best guess that can be made.
-% \begin{macrocode}
- wtest := (stpsize < tantol) or (abs sm < tantol);
- if wtest:
- if (abs sm < tantol):
- z$tan = ptm;
- else:
- z$tan = ptm;
-%%%%%% errmessage("Warning: tangent approximated");
- fi
- fi
- exitif wtest;
- endfor
- fi
-enddef;
-
-% \end{macrocode}
-% \end{routine}
-%
-%
-% Set the mode and font setup.
-% \begin{macrocode}
-
-font_coding_scheme:="ASCII minuscules and punctuation";
-mode_setup;
-inslrmaj_font_setup;
-
-% \end{macrocode}
-%
-%
-% We generate letters, together with some punctuation and
-% analphabetics.
-% \begin{macrocode}
-
-input imajl; % lower case
-input imaju; % capitals
-input imajpunct; % punctuation
-input imajlig; % the several dashes
-input imajdig; % arabic digits
-
-% \end{macrocode}
-%
-% Set up the spacings, stretches and shrinks.
-%
-% \begin{macrocode}
-
-font_slant slant; font_x_height x_height#;
-if monospace:
- font_normal_space vstretch*9u#; % no stretching or shrinking
- font_quad vstretch*18u#;
- font_extra_space vstretch*9u#;
-else:
- font_normal_space vstretch*6u#+2letter_fit#;
- font_normal_stretch vstretch*3u#; font_normal_shrink vstretch*2u#;
- font_quad vstretch*18u#+4letter_fit#;
- font_extra_space vstretch*2u#;
-
-% \end{macrocode}
-%
-% Finally, do the ligtables.
-%
-% \begin{macrocode}
- k#:=-.5u#; kk#:=-1.5u#; kkk#:=-2u#; % three degrees of kerning
- kks#:=-4u#; kkx#:=-1.5u#; kkj#:=-2u#; kkr#:=-5u#; kkrs#:=-2u#; kkrl#:=-8u#;
- ligtable "s":
- "a" kern kks#, "A" kern kks#,
- "c" kern kks#, "C" kern kks#,
- "d" kern kks#, "D" kern kks#,
- "e" kern kks#, "E" kern kks#,
- "f" kern kks#, "F" kern kks#,
- "g" kern kks#, "G" kern kks#,
- "i" kern kks#, "I" kern kks#,
- "j" kern kks#, "J" kern kks#,
- "k" kern kks#, "K" kern kks#,
- "m" kern kks#, "M" kern kks#,
- "n" kern kks#, "N" kern kks#,
- "o" kern kks#, "O" kern kks#,
- "p" kern kks#, "P" kern kks#,
- "q" kern kks#, "Q" kern kks#,
- "r" kern kks#, "R" kern kks#,
- "t" kern kks#, "T" kern kks#,
- "u" kern kks#, "U" kern kks#,
- "v" kern kks#, "V" kern kks#,
- "w" kern kks#, "W" kern kks#,
- "x" kern kks#, "X" kern kks#,
- "y" kern kks#, "Y" kern kks#,
- "z" kern kks#, "Z" kern kks#;
-
- ligtable "S":
- "a" kern kks#, "A" kern kks#,
- "c" kern kks#, "C" kern kks#,
- "d" kern kks#, "D" kern kks#,
- "e" kern kks#, "E" kern kks#,
- "f" kern kks#, "F" kern kks#,
- "g" kern kks#, "G" kern kks#,
- "i" kern kks#, "I" kern kks#,
- "j" kern kks#, "J" kern kks#,
- "k" kern kks#, "K" kern kks#,
- "m" kern kks#, "M" kern kks#,
- "n" kern kks#, "N" kern kks#,
- "o" kern kks#, "O" kern kks#,
- "p" kern kks#, "P" kern kks#,
- "q" kern kks#, "Q" kern kks#,
- "r" kern kks#, "R" kern kks#,
- "t" kern kks#, "T" kern kks#,
- "u" kern kks#, "U" kern kks#,
- "v" kern kks#, "V" kern kks#,
- "w" kern kks#, "W" kern kks#,
- "x" kern kks#, "X" kern kks#,
- "y" kern kks#, "Y" kern kks#,
- "z" kern kks#, "Z" kern kks#;
-
- ligtable "x":
- "a" kern kkx#, "A" kern kkx#,
- "b" kern kkx#, "B" kern kkx#,
- "c" kern kkx#, "C" kern kkx#,
- "d" kern kkx#, "D" kern kkx#,
- "e" kern kkx#, "E" kern kkx#,
- "g" kern kkx#, "G" kern kkx#,
- "j" kern kkx#, "J" kern kkx#,
- "l" kern kkx#, "L" kern kkx#,
- "o" kern kkx#, "O" kern kkx#,
- "q" kern kkx#, "Q" kern kkx#,
- "t" kern kkx#, "T" kern kkx#,
- "u" kern kkx#, "U" kern kkx#,
- "v" kern kkx#, "V" kern kkx#,
- "w" kern kkx#, "W" kern kkx#,
- "y" kern kkx#, "Y" kern kkx#;
-
- ligtable "X":
- "a" kern kkx#, "A" kern kkx#,
- "b" kern kkx#, "B" kern kkx#,
- "c" kern kkx#, "C" kern kkx#,
- "d" kern kkx#, "D" kern kkx#,
- "e" kern kkx#, "E" kern kkx#,
- "g" kern kkx#, "G" kern kkx#,
- "j" kern kkx#, "J" kern kkx#,
- "l" kern kkx#, "L" kern kkx#,
- "o" kern kkx#, "O" kern kkx#,
- "q" kern kkx#, "Q" kern kkx#,
- "t" kern kkx#, "T" kern kkx#,
- "u" kern kkx#, "U" kern kkx#,
- "v" kern kkx#, "V" kern kkx#,
- "w" kern kkx#, "W" kern kkx#,
- "y" kern kkx#, "Y" kern kkx#;
-
- ligtable "a": "A":
- "b": "B":
- "c": "C":
- "d": "D":
- "e": "E":
- "h": "H":
- "i": "I":
- "k": "K":
- "l": "L":
- "m": "M":
- "n": "N":
- "o": "O":
- "p": "P":
- "t": "T":
- "u": "U":
- "v": "V":
- "w": "W":
- "z": "Z":
- "j" kern kkj#, "J" kern kkj#;
-
- ligtable "r":
- "a" kern kkr#, "A" kern kkr#,
- "b" kern kkr#, "B" kern kkr#,
- "c" kern kkr#, "C" kern kkr#,
- "d" kern kkr#, "D" kern kkr#,
- "e" kern kkr#, "E" kern kkr#,
- "f" kern kkrs#, "F" kern kkrs#,
- "g" kern kkrs#, "G" kern kkrs#,
- "h" kern kkr#, "H" kern kkr#,
- "i" kern kkr#, "I" kern kkr#,
- "j" kern kkj#, "J" kern kkj#,
- "k" kern kkrs#, "K" kern kkrs#,
- "l" kern kkr#, "L" kern kkr#,
- "m" kern kkr#, "M" kern kkr#,
- "n" kern kkrs#, "N" kern kkrs#,
- "o" kern kkr#, "O" kern kkr#,
- "p" kern kkrs#, "P" kern kkrs#,
- "q" kern kkr#, "Q" kern kkr#,
- "r" kern kkrs#, "R" kern kkrs#,
- "s" kern kkr#, "S" kern kkr#,
- "t" kern kkr#, "T" kern kkr#,
- "u" kern kkr#, "U" kern kkr#,
- "v" kern kkr#, "V" kern kkr#,
- "w" kern kkr#, "W" kern kkr#,
- "x" kern kkx#, "X" kern kkx#,
- "y" kern kkr#, "Y" kern kkr#,
- "z" kern kkr#, "Z" kern kkr#;
-
- ligtable "R":
- "a" kern kkr#, "A" kern kkr#,
- "b" kern kkr#, "B" kern kkr#,
- "c" kern kkr#, "C" kern kkr#,
- "d" kern kkr#, "D" kern kkr#,
- "e" kern kkr#, "E" kern kkr#,
- "f" kern kkrs#, "F" kern kkrs#,
- "g" kern kkrs#, "G" kern kkrs#,
- "h" kern kkr#, "H" kern kkr#,
- "i" kern kkr#, "I" kern kkr#,
- "j" kern kkj#, "J" kern kkj#,
- "k" kern kkrs#, "K" kern kkrs#,
- "l" kern kkr#, "L" kern kkr#,
- "m" kern kkr#, "M" kern kkr#,
- "n" kern kkrs#, "N" kern kkrs#,
- "o" kern kkr#, "O" kern kkr#,
- "p" kern kkrs#, "P" kern kkrs#,
- "q" kern kkr#, "Q" kern kkr#,
- "r" kern kkrs#, "R" kern kkrs#,
- "s" kern kkr#, "S" kern kkr#,
- "t" kern kkr#, "T" kern kkr#,
- "u" kern kkr#, "U" kern kkr#,
- "v" kern kkr#, "V" kern kkr#,
- "w" kern kkr#, "W" kern kkr#,
- "x" kern kkx#, "X" kern kkx#,
- "y" kern kkr#, "Y" kern kkr#,
- "z" kern kkr#, "Z" kern kkr#;
-
-
-fi
-
-bye.
-
-%</mfd>
-% \end{macrocode}
-%
-% \subsection{The code for normal letters}
-%
-% The following code is for the lower case characters.
-%
-% \begin{macrocode}
-%<*min>
-% IMAJL.MF Program file for Insular Majuscule lower case
-%
-
-% \end{macrocode}
-%
-%
-% \begin{routine}{a}
-% The letter `a'.
-% \begin{macrocode}
-cmchar "IMAJ letter a";
-beginchar("a", 2sb#+hstretch*(5/3x_height#),
- x_height#, 0);
-adjust_fit(0,0);
-pcshiftx := sb;
-numeric n[];
-path pth[];
-pickup quill;
-%% left bowl
-n1 := w-2pcshiftx; % actual letter width
-n2 := 7/10n1; % width of left bowl
-z1=(pcshiftx,0);
-obowl(1, n2, h);
-pth1:=obouter; pth2:=obinner;
-pth10:=obfirst; pth20:=obsecond;
-%% right bowl
-n3:=x1+n2-16/12thick; % leftmost point of "stem"
-n4:=2(n1-n3); % total width of right stem bowl
-z2=(n3,0);
-offsetbowl(2, n4, h, 6/12, 1/2);
-pth3:=obouter; pth4:=obinner;
-pth30:=obfirst; pth40:=obsecond;
-%% intersect left bowl with outer of right bowl
-z1tout = (subpath (0,1) of pth1) intersectionpoint (subpath (4,2) of pth3);
-z1tinn = (subpath (0,1) of pth2) intersectionpoint (subpath (4,2) of pth3);
-z1lout = (subpath (1,2) of pth1) intersectionpoint (subpath (4,2) of pth3);
-z1linn = (subpath (1,2) of pth2) intersectionpoint (subpath (4,2) of pth3);
-
-%%ductus:=true;
-if ductus:
- pickup stylus;
- % draw the control paths
- draw pth10; draw pth20;
- draw pth30; draw pth40;
-else:
- %% draw left bowl
- fill z1lout..z1minro{-pdir}..z1maxlo{ppdir}..z1minlo{pdir}..z1tout--
- z1tinn..z1minli{-pdir}..z1maxli{-ppdir}..z1minri{pdir}..z1linn--
- cycle;
- %% draw right stem/bowl
- fill z2minro{-pdir}..z2maxlo{ppdir}..{pdir}z2minlo--
- z2minli{-pdir}..z2maxli{-ppdir}..{pdir}z2minri--cycle;
-fi
-ductus:=false;
-penlabels(1,2,3,4,5,6,7,8,100);
-endchar; % end "a"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{b}
-% The letter `b'.
-% \begin{macrocode}
-cmchar "IMAJ letter b";
-beginchar("b", 2sb#+hstretch*(7/6x_height#),
- asc_height#, 0);
-adjust_fit(0,0);
-numeric n[];
-pcshiftx := sb;
-pickup quill;
-n1:=w-2pcshiftx; % actual letter width
-n2:=h/ascratio; % top of bowl
-z1=(pcshiftx, -o);
-obowl(1, n1, n2+o);
-%% draw bowl
-fill obouter; unfill obinner;
-%% top of stem
-x2=x1wt+1/3n1; top y2=h;
-tangentpoint(2, subpath (3,4) of obsecond);
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-draw z2tan--z2;
-draw_triserif(2,trijut);
-ductus:=false;
-penlabels(1,2,3,4,5,6,7,8,9,100);
-endchar; % end "b"
-
-% \end{macrocode}
-% \end{routine}
-%
-%
-% \begin{routine}{c}
-% The letter `c'.
-% \begin{macrocode}
-cmchar "IMAJ letter c";
-beginchar("c", 2sb#+hstretch*(5/6x_height#),
- x_height#, 0);
-adjust_fit(0,0);
-numeric n[];
-pcshiftx := sb;
-pickup quill;
-n1:=w-2pcshiftx; % actual letter width
-n2:=6/5w-2pcshiftx; % width of full bowl
-z1=(pcshiftx,0);
-obowl(1, n2, h);
-z3=(x1+n1, h); % top RH corner
-z4=(x1obc,1/6h); z5=(3/2w,y4); % for horizontal line
-%% top intersection points
-z10i = (z1obc--z3) intersectionpoint obinner;
-z10o = (z1obc--z3) intersectionpoint obouter;
-%% bottom intersection points
-z20i = (z4--z5) intersectionpoint obinner;
-z20o = (z4--z5) intersectionpoint obouter;
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-fill z20o..z1minro{-pdir}..z1maxlo{ppdir}..z1minlo{pdir}..z10o--
- z10i..z1minli{-pdir}..z1maxli{-ppdir}..z1minri{pdir}..z20i--
- cycle;
-ductus:=false;
-penlabels(1,2,3,4,5,6,16,17,18,100);
-endchar; % end "c"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{d}
-% The letter `d'. There is a choice between an upright and a low d. I have done
-% the low d.
-% \begin{macrocode}
-cmchar "IMAJ letter d";
-beginchar("d", 2sb#+hstretch*(x_height#+1/2thick#),
- x_height#, 0);
-adjust_fit(0,0);
-numeric n[];
-pcshiftx := sb;
-pickup quill;
-%% bowl
-n1 := w-2pcshiftx; % actual letter width
-n2 := n1-1/2thick; % width of bowl
-n3 := h; % top of bowl
-z1=(w-pcshiftx-n2, 0);
-obowl(1, n2, n3);
-%% top bar
-lft x3=pcshiftx; y3=h;
-z3i=(pcshiftx, y3-1/2thin); z3o=(x3i,y3i+thin);
-z2i=(x1nh,y3i);
-z2o=(x2i,y3o);
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-fill z1minlo{-pdir}..z1maxlo{-ppdir}..z1minro{pdir}..z1maxro{ppdir}..{left}z2o--
- z3o--z3i--
- z2i{right}..z1maxri{-ppdir}..z1minri{-pdir}..z1maxli{ppdir}..{pdir}z1minli--
- cycle;
-draw_utriangle(3, thick);
-ductus:=false;
-penlabels(0,1,2,3,4,5,6,7,8,100);
-endchar; % end "d"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{e}
-% The letter `e'.
-% \begin{macrocode}
-cmchar "IMAJ letter e";
-beginchar("e", sb#+hstretch*(x_height#+3/2thick#),
- x_height#, 0);
-adjust_fit(0,0);
-pcshiftx := sb;
-numeric n[];
-pickup quill;
-n1 := w-pcshiftx; % actual letter width
-n2 := n1-3/2thick; % width of bowl
-z1=(pcshiftx,0);
-obowl(1, n2, h);
-%% for crossbar
-z2=(0,2/3h); rt x3=w; y3=y2; z3'=(x1obc,y2);
-z4 = (z2--z3') intersectionpoint subpath (3,4) of obsecond;
-z10tout = (z3'--z3) intersectionpoint subpath (0,3) of obouter;
-z10tinn = (z3'--z3) intersectionpoint subpath (0,3) of obinner;
-%% bottom cutoff
-z5=(x1obc,1/6h); z6=(w,y5);
-z20bout = (z5--z6) intersectionpoint subpath (0,3) of obouter;
-z20binn = (z5--z6) intersectionpoint subpath (0,3) of obinner;
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-fill z20bout..z1minro{-pdir}..z1maxlo{ppdir}..z1minlo{pdir}..z10tout--
- z10tinn..z1minli{-pdir}..z1maxli{-ppdir}..z1minri{pdir}..z20binn--
- cycle;
-draw z4--z3; % crossbar & decoration
-draw_triangle(3,thick);
-ductus:=false;
-penlabels(1,2,3,4,5,6,7,8,9,100);
-endchar; % end "e"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{f}
-% The letter `f'.
-% \begin{macrocode}
-cmchar "IMAJ letter f";
-beginchar("f", 2sb#+hstretch*(x_height#+trijut#),
- (x_height#), desc_depth#);
-adjust_fit(0,0);
-pcshiftx := sb;
-pickup quill;
-%% stem
-lft x1=lft x2=pcshiftx+trijut;
-top y1=h; bot y2=-d;
-%% bottom bar
-z4=(rt x1,-thin); rt x6=w-pcshiftx; y6=y4+2thin; z5=1/2[z4,z6];
-%% top bar
-z7=(rt x1, bot y1);
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-draw_tstem(1,2,srad); % stem
-draw_triserif(1,trijut);
-draw_clubbase(1, 2, 1/3, clubjut, clubjut);
-draw z4{dir(45)}..z5{right}..z6{dir(45)}; % bottom bar
-draw_flick(7, 2thin, thin, (w-pcshiftx-x7+1/2thick)); % top bar
-ductus:=false;
-penlabels(1,2,3,4,5,6,7,100);
-endchar; % end "f"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{g}
-% The letter `g'.
-% \begin{macrocode}
-cmchar "IMAJ letter g";
-beginchar("g", 2sb#+hstretch*(5/3x_height#),
- x_height#, desc_depth#);
-adjust_fit(0,0);
-path pth[];
-pair vec[];
-pcshiftx := sb;
-pickup quill;
-%% top bar
-lft x1=pcshiftx; y1=h; rt x2=w-pcshiftx; y2=h;
-%% curves
-z3=2/5[z1,z2];
-x5=4/5[x1,x2]; y5=-1/2d;
-x4=(x3-thick); y4=1/2[y5,y3];
-x7=1/2[x1,x4]; y7=y5;
-x6=2/3[x7,x5]; bot y6=-d;
-pth1 := z3..z4{down}..z5;
-pth2 := z5--z6{left}..z7;
-%% diagonal to close bottom bowl
-vec1 := direction 2 of pth2;
-vec2 := (z5-z6);
-z7'=(lft x7, bot y7); z7''=(rt x7, y7);
-pickup thickstylus;
-lft x8 = x7'; bot y8 = y7';
-z9' = z8 shifted 2vec2;
-z9 = (z8--z9') intersectionpoint pth1;
-z7''' = z7'' shifted 2vec1;
-z8' = whatever[z7'',z7'''] = whatever[z8,z9'];
-%%ductus:=true;
-if ductus:
- pickup stylus;
- draw z1--z2; % top bar
- draw pth1; draw pth2; % curves
- draw rt z8--z9; % diagonal
-else:
- pickup quill;
- draw z1--z2; % top bar
- draw_triangle(2,thick);
- draw_utriangle(1,thick);
- draw pth1; draw pth2; % curves
- pickup thickstylus;
- draw rt z8--z9; % diagonal
- fill z7''--z8'--z8--cycle;
-fi
-ductus:=false;
-penlabels(1,2,3,4,5,6,7,8,9,100);
-endchar; % end "g"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{h}
-% The letter `h'.
-% \begin{macrocode}
-cmchar "IMAJ letter h";
-beginchar("h", 2sb#+hstretch*(x_height#+trijut#),
- asc_height#, 0);
-adjust_fit(0,0);
-pcshiftx := sb;
-pickup quill;
-numeric n[];
-%% stem
-lft x1=lft x2=pcshiftx+trijut;
-top y1=h; bot y2=0;
-%% bowl
-rt x3 = lft x1; y3=0;
-n1 := w-pcshiftx-x3; % bowl width
-n2 := h/ascratio; % bowl height
-obowl(3, n1, n2);
-z1'=(rt x1, y1); z2'=(x1',y2); %% right hand side of stem
-z10tout = (z1'--z2') intersectionpoint subpath (3,4) of obouter;
-z10tinn = (z1'--z2') intersectionpoint subpath (3,4) of obinner;
-z10toth = (x1, y10tinn); % avoids 180 turn in path
-z6 = directionpoint down of obsecond; % top of right leg
-z6i=(lft x6, bot y6); z6o=(rt x6, bot y6);
-z8=(x6,0);
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-draw_tstem(1,2,srad); % stem
-draw_triserif(1,trijut);
-draw_clubbase(1, 2, 1/3, clubjut, clubjut);
-draw_tstem(6,8,srad); % right leg
-draw_clubbase(6, 8, 1/3, 0, 1/2clubjut);
-fill z6i{up}..z3minli{-pdir}..z10tinn--z10toth-- % top of bowl
- z10tout..z3minlo{pdir}..{down}z6o--cycle;
-ductus:=false;
-penlabels(1,2,3,4,5,6,100);
-endchar; % end "h"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{i}
-% The letter `i'.
-% \begin{macrocode}
-cmchar "IMAJ letter i";
-beginchar("i", 2sb#+hstretch*(thick#+trijut#+jut#),
- x_height#, 0);
-adjust_fit(0,0);
-pcshiftx := sb;
-pickup quill;
-lft x1=lft x2=pcshiftx+trijut;
-top y1=h; bot y2=0;
-%%ductus:=true;
-draw_tstem(1,2,srad);
-draw_triserif(1,trijut);
-draw_clubbase(1, 2, 1/3, clubjut, clubjut);
-ductus:=false;
-penlabels(1,2,100);
-endchar; % end "i"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{j}
-% The letter `j'. This letter was not in the script, it being a later invention.
-% \begin{macrocode}
-cmchar "IMAJ letter j";
-beginchar("j", sb#+hstretch*(2/3x_height#),
- x_height#, desc_depth#);
-adjust_fit(0,0);
-pcshiftx := sb;
-numeric n[];
-pickup quill;
-%% stem
-rt x1 = w-pcshiftx; top y1 = h;
-x2=x1; y2=-1/2d;
-%% bottom hook
-lft x3 = 0; bot y3 = -d;
-%% triangle
-n1 := thick; % side length
-z6=(lft x3, bot y3);
-x7=x6+n1; z7=whatever[z6,z2];
-z8=1/2[z6,z7];
-z9=(x8, y8+0.9n1);
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-draw z1--z2; % stem
-draw_triserif(1,trijut);
-draw z2--z3; % hook
-fill z6--z7--z9--cycle; % triangle
-ductus:=false;
-penlabels(1,2,3,100);
-endchar; % end "j"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{k}
-% The letter `k'.
-% \begin{macrocode}
-cmchar "IMAJ letter k";
-beginchar("k", 2sb#+hstretch*(x_height#+trijut#),
- x_height#, desc_depth#);
-adjust_fit(0,0);
-pcshiftx := sb;
-pickup quill;
-%% stem
-lft x1=lft x2=pcshiftx+trijut;
-top y1=h; bot y2=-d;
-%% top arm
-z3=(x1,5/6h);
-rt x5=w-pcshiftx; y5=2/3h;
-x4=1/2[x3,x5]; top y4=h;
-%% lower arm
-x7=x5; bot y7=0;
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-draw_tstem(1,2,srad); % stem
-draw_triserif(1,trijut);
-draw_clubbase(1,2,1/3, clubjut, clubjut);
-draw z3..z4{right}..z5; % upper arm
-draw z3..{right}z7; % lower arm
-ductus:=false;
-penlabels(1,2,3,4,5,100);
-endchar; % end "k"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{l}
-% The letter `l'.
-% \begin{macrocode}
-cmchar "IMAJ letter l";
-beginchar("l", 2sb#+hstretch*(7/6x_height#),
- asc_height#, 0);
-adjust_fit(0,0);
-pcshiftx := sb;
-pickup quill;
-lft x2=pcshiftx; y2=1/5h;
-x1=x2+trijut; top y1=h;
-rt x4=w-pcshiftx; y4=1/5h;
-x3=1/2[x2,x4]; bot y3=0;
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-draw z1{down}..z2..z3{right}..z4;
-draw_triserif(1,trijut);
-ductus:=false;
-penlabels(1,2,3,4,100);
-endchar; % end "l"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{m}
-% The letter `m'.
-% \begin{macrocode}
-cmchar "IMAJ letter m";
-beginchar("m", 2sb#+hstretch*(5/3x_height#+trijut#),
- x_height#, 0);
-adjust_fit(0,0);
-pcshiftx := sb;
-numeric n[];
-path pth[];
-pickup quill;
-%% left stem
-lft x1=pcshiftx+trijut; top y1=h;
-x2=x1; bot y2=0;
-z1'=(rt x1, y1+h); z2'=(rt x2, y2-h);
-%% right stem
-rt x5=w-pcshiftx; y5=y1;
-z6=(x5,0);
-%% middle stem
-z3=1/2[z1,z5]; z4=1/2[z2,z6];
-z3'=(rt x3, y3); z4'=(rt x4, y4);
-n1 := x4-x2+3/2thick; % width of bowl
-n2 := 2/3h; % height of bowl
-%% left bowl
-z7=(rt x4 - n1, h-n2);
-obowl(7, n1, n2);
-pth1 := obouter; pth2 := obinner; pth3 := obsecond;
-z17tout = (z1'--z2') intersectionpoint subpath (3,4) of obouter;
-z17tinn = (z1'--z2') intersectionpoint subpath (3,4) of obinner;
-z17toth = (x2, y17tinn);
-%% right bowl
-z8=(rt x6 - n1, y7);
-obowl(8, n1, n2);
-pth5 := obouter; pth6 := obinner; pth7 := obsecond;
-z18tout = pth5 intersectionpoint subpath (0,1) of pth1;
-z18tinn = pth6 intersectionpoint subpath (0,1) of pth1;
-z13 = directionpoint down of pth3;
-z15 = directionpoint down of pth7;
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-draw_tstem(1,2,srad); % left half
-draw_triserif(1,trijut);
-draw_clubbase(1, 2, 1/3, clubjut, clubjut);
-fill z17tout..z7minlo{pdir}..{down}(rt x13, y13)--
- (lft x13, y13){up}..z7minli{-pdir}..z17tinn--z17toth--cycle;
-draw_tstem(13,4,srad); % right half
-fill z18tout..z8minlo{pdir}..{down}(rt x15, y15)--
- (lft x15, y15){up}..z8minli{-pdir}..z18tinn--cycle;
-draw_tstem(15,6,srad);
-ductus:=false;
-penlabels(1,2,3,4,5,6,7,8,9,14,100);
-endchar; % end "m"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{n}
-% The letter `n'. This could be like a capital `N' or a lower-case `n'.
-% I have chosen to do the first form.
-% \begin{macrocode}
-cmchar "IMAJ letter n";
-beginchar("n", 2sb#+hstretch*(7/6x_height#+trijut#),
- x_height#, 1/2desc_depth#);
-adjust_fit(0,0);
-pcshiftx := sb;
-pickup quill;
-%% left stem
-lft x1=pcshiftx+trijut; top y1=h;
-x2=x1; bot y2=-d;
-%% right stem
-rt x3=w-pcshiftx; y3=y1;
-z4=(x3,0);
-%% bar
-z5=(x1,1/3h); z6=(x4,1/6h);
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-draw_tstem(1,2,srad); % left stem
-draw_triserif(1,trijut);
-draw_clubbase(1, 2, 1/3, clubjut, clubjut);
-draw_tstem(3,4,srad); % right stem
-draw_clubbase(3, 4, 1/3, clubjut, clubjut);
-draw z5--z6; % bar
-ductus:=false;
-penlabels(1,2,3,4,5,6,100);
-endchar; % end "n"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{o}
-% The letter `o'.
-% \begin{macrocode}
-cmchar "IMAJ letter o";
-beginchar("o", 2sb#+hstretch*(7/6x_height#),
- x_height#, 0);
-adjust_fit(0,0);
-pcshiftx := sb;
-pickup quill;
-lft x1=pcshiftx; rt x3=w-pcshiftx; y1=y3=h/2;
-x2=x4=w/2; top y2=h+o; bot y4=-o;
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-%%%draw z1..z2..z3..z4..cycle;
-z5=(pcshiftx,-o);
-obowl(5, w-2pcshiftx, h+2o);
-fill obouter; unfill obinner;
-ductus:=false;
-penlabels(1,2,3,4,5,100);
-endchar; % end "o"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{p}
-% The letter `p'.
-% \begin{macrocode}
-cmchar "IMAJ letter p";
-beginchar("p", 2sb#+hstretch*(8/6x_height#+trijut#),
- x_height#, desc_depth#);
-adjust_fit(0,0);
-pcshiftx := sb;
-numeric n[];
-pickup quill;
-%% stem
-lft x1=lft x2=pcshiftx+trijut;
-top y1=1/3h; bot y2=-d;
-n1 := w - pcshiftx - lft x1; % width of bowl
-n2 := h+1/4d; % height of bowl
-z3=(lft x1, -1/4d);
-obowl(3, n1, n2);
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-draw_tstem(1,2,srad); % stem
-draw_triserif(1,trijut);
-draw_clubbase(1, 2, 1/3, clubjut, 0);
-fill lft z1{up}..z3minlo{pdir}..z3maxro{-ppdir}..{-pdir}z3minro--
- z3minri{pdir}..z3maxri{ppdir}..z3minli{-pdir}..{down}rt z1--
- cycle;
-ductus:=false;
-penlabels(1,2,3,4,5,6,7,8,100);
-endchar; % end "p"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{q}
-% The letter `q'.
-% \begin{macrocode}
-cmchar "IMAJ letter q";
-beginchar("q", 2sb#+hstretch*(x_height#+1/2trijut#),
- x_height#, 1/2desc_depth#);
-adjust_fit(0,0);
-pcshiftx := sb;
-numeric n[];
-pickup quill;
-%% right stem
-rt x1=w-pcshiftx-1/2trijut; top y1=h;
-x2=x1; bot y2=-d;
-z3=(pcshiftx,0);
-n1 := w; % width of bowl
-n2 := h; % height of bowl
-obowl(3, n1, n2);
-z10o = (rt z1--rt z2) intersectionpoint subpath (0,1) of obouter;
-z10i = (lft z1--lft z2) intersectionpoint subpath (0,1) of obinner;
-z20o = (rt z1--rt z2) intersectionpoint subpath (1,2) of obouter;
-z20i = (lft z1--lft z2) intersectionpoint subpath (1,2) of obinner;
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-draw_tstem(1,2,srad); % stem
-draw_triserif(1,trijut);
-draw_clubbase(1, 2, 1/3, 0, clubjut);
-fill z10o..z3minlo{-pdir}..z3maxlo{-ppdir}..z3minro{right}..z20o--
- z20i..z3minri{-pdir}..z3maxli{ppdir}..z3minli{pdir}..z10i--
- cycle;
-ductus:=false;
-penlabels(0,1,2,3,4,5,6,7,8,100);
-endchar; % end "q"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{r}
-% The letter `r'.
-% \begin{macrocode}
-cmchar "IMAJ letter r";
-beginchar("r", sb#+hstretch*(11/6x_height#+trijut#),
- x_height#, 1/2desc_depth#);
-adjust_fit(0,0);
-pcshiftx := sb;
-numeric n[];
-pickup quill;
-%% stem
-lft x1=lft x2=pcshiftx+trijut; top y1=h; bot y2=-d;
-n1 := w-pcshiftx; % width of bowl
-n2 := 5/6h; % height of bowl
-z3=(x1-1/2n1, h-n2);
-obowl(3, n1, n2);
-z10o=(x1,h); z10i=(x1, y10o-thin);
-z20o=(x1,y3); z20i=(x20o, y20o+thin);
-%% arm
-x4=x1; bot y4=y3;
-x5=x3maxro; top y5=0;
-%%rt x6=w; y6=y4;
-rt x6=w; y6=y2;
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-draw_tstem(1,2,srad); % stem
-draw_triserif(1,trijut);
-draw_clubbase(1, 2, 1/3, clubjut, 0);
-fill z10o{right}..z3maxro{-ppdir}..{left}z20o--
- z20i{right}..z3maxri{ppdir}..{left}z10i--cycle;
-%%draw z4{right}..z5{right}..{right}z6; % arm
-draw z4{right}..{right}z6;
-ductus:=false;
-penlabels(1,2,3,4,5,6,7,8,9,100);
-endchar; % end "r"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{s}
-% The letter `s'. This is a `long' S.
-% \begin{macrocode}
-cmchar "IMAJ letter s";
-beginchar("s", 2sb#+hstretch*(x_height#+trijut#),
- asc_height#, 0);
-adjust_fit(0,0);
-numeric n[];
-pcshiftx := sb;
-pickup quill;
-%% stem
-lft x1=lft x2=pcshiftx+trijut; top y1=h/ascratio; bot y2=0;
-n1 := w; % width of bowl
-n2 := 2(h-y1); % height of bowl
-z3=(lft x1, y1-1/2n2);
-obowl(3, n1, n2);
-z4=(2w,2h);
-z10o = (z3--z4) intersectionpoint subpath (0,1) of obouter;
-z10i = (z3--z4) intersectionpoint subpath (0,1) of obinner;
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-draw_tstem(1,2,srad); % stem
-draw_triserif(1,trijut);
-draw_clubbase(1, 2, 1/3, clubjut, clubjut);
-fill rt z1{up}..z3minli{pdir}..z10i--
- z10o..z3minlo{-pdir}..{down}lft z1--cycle;
-ductus:=false;
-penlabels(1,2,3,4,5,6,7,11,17,26,27,28,100);
-endchar; % end "s"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{t}
-% The letter `t'.
-% \begin{macrocode}
-cmchar "IMAJ letter t";
-beginchar("t", 2sb#+hstretch*(4/3x_height#),
- x_height#, 0);
-adjust_fit(0,0);
-pcshiftx := sb;
-numeric n[];
-pickup quill;
-%% bar
-lft x1 = pcshiftx; y1=h; rt x2=w-pcshiftx; y2=y1;
-n1 := w; % width of bowl
-n2 := h; % height of bowl
-z3=(pcshiftx+thick,0);
-obowl(3, n1, n2);
-z5=(x1+w, 0);
-z20o = (z1--z5) intersectionpoint subpath (1,2) of obouter;
-z20i = (z1--z5) intersectionpoint subpath (1,2) of obinner;
-z10o = (x3minlo, top y1);
-z10i = (x3minlo, bot y1);
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-draw z1--z2; % bar
-draw_utriangle(1, thick);
-draw_triangle(2, thick);
-fill z10o{left}..z3maxlo{-ppdir}..z3minro{pdir}..z20o--
- z20i..z3minri{-pdir}..z3maxli{ppdir}..z10i{right}--cycle;
-ductus:=false;
-penlabels(1,2,3,4,5,6,11,12,100);
-endchar; % end "t"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{u}
-% The letter `u'.
-% \begin{macrocode}
-cmchar "IMAJ letter u";
-beginchar("u", 2sb#+hstretch*(7/6x_height#+1/2trijut#),
- x_height#, 0);
-adjust_fit(0,0);
-pcshiftx := sb;
-numeric n[];
-pickup quill;
-%% right stem
-rt x1 = rt x2 = w-pcshiftx-1/2trijut;
-y1=h; y2=0;
-z1'=(x1-1/2thick,2h); z2'=(x1',-h);
-%% bowl
-n1 := w; % width of bowl
-n2 := 4/3h; % height of bowl
-z3=(pcshiftx,0);
-obowl(3, n1, n2);
-z4=(pcshiftx,h); z5=(w,y4);
-z10o = (z4--z5) intersectionpoint subpath (3,4) of obouter;
-z10i = (z4--z5) intersectionpoint subpath (3,4) of obinner;
-z10'=1/2[z10o,z10i];
-z10=(x10i,y1);
-z20o = (z1'--z2') intersectionpoint subpath (1,3) of obouter;
-z20i = (z1'--z2') intersectionpoint subpath (1,3) of obinner;
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-draw_tstem(1,2,srad); % stem
-draw_triserif(1,trijut);
-draw_clubbase(1, 2, 1/3, 0, clubjut);
-fill z10o..z3maxlo{-ppdir}..z3minro{pdir}..z20o--
- z20i..z3minri{-pdir}..z3maxli{ppdir}..z10i--cycle;
-draw_triserif(10,trijut); % serif on bowl
-ductus:=false;
-penlabels(1,2,3,4,5,6,7,8,9,11,16,100);
-endchar; % end "u"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{v}
-% The letter `v'. The right half of the `w' is used for the `v' (or vice-versa
-% if you prefer).
-% \begin{macrocode}
-cmchar "IMAJ letter v";
-beginchar("v", 2sb#+hstretch*(x_height#+trijut#),
- x_height#, 0);
-adjust_fit(0,0);
-pcshiftx := sb;
-pickup quill;
-% right side of W
-numeric midx; midx:= pcshiftx;
-lft x1=midx+trijut; top y1=h;
-x2=x1; y2=h/2;
-rt x4=w-pcshiftx; y4=y2;
-x3=0.5[x2,x4]; bot y3=0;
-x5=x4-trijut; y5=y1;
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-% draw the serifs, then the bowls
-draw_triserif(1,trijut);
-%%draw_triserif(5,trijut);
-draw z1--z2{down}..z3{right}..z4{up}..z5;
-ductus:=false;
-penlabels(1,2,3,4,5,11,100);
-endchar; % end "v"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{w}
-% The letter `w'. This is a modern version as the font did not have a W.
-% \begin{macrocode}
-cmchar "IMAJ letter w";
-beginchar("w", 2sb#+hstretch*(5/3x_height#+trijut#),
- x_height#, 0);
-adjust_fit(0,0);
-pcshiftx := sb;
-pickup quill;
-% right side first
-numeric midx; midx:= w/2-trijut;
-lft x1=midx+trijut; top y1=h;
-x2=x1; y2=h/2;
-rt x4=w-pcshiftx; y4=y2;
-x3=0.5[x2,x4]; bot y3=0;
-x5=x4-trijut; y5=y1;
-% left side
-lft x6=pcshiftx+trijut;
-top y6=h;
-%%lft x7=pcshiftx; y7=y2;
-x7=x6; y7=y2;
-x8=0.5[x7,x1]; y8=y3;
-% construction points
-x15=0.5[x8,x1]; y15=y8;
-z15'=z15 shifted (w*pdir);
-x2'=x2; y2'=y15;
-path p[];
-p1=z1--z2';
-p2=z15--z15';
-z9= p2 intersectionpoint p1;
-pair vec[];
-p3=z6..z7{down}..{right}z8;
-vec3 = direction 0 of p3;
-z16=z6 shifted vec3;
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-% draw the serifs, then the bowls
-draw_triserif(1,trijut); % right half
-draw z1--z2{down}..z3{right}..z4{up}..z5;
-draw_triserif(6,trijut); % left half
-draw z6--z7{down}..z8{right}..z9;
-ductus:=false;
-penlabels(1,2,3,4,5,6,7,8,9,11,16,100);
-endchar; % end "w"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{x}
-% The letter `x'.
-% \begin{macrocode}
-cmchar "IMAJ letter x";
-beginchar("x", 2sb#+hstretch*(16/6x_height#),
- x_height#, desc_depth#);
-adjust_fit(0,0);
-numeric n[];
-pcshiftx := sb;
-pickup quill;
-n1 := w-2pcshiftx; % total width
-n2 := thick; % triangle side
-%% diag top left to bottom right
-lft x1=pcshiftx; bot y1=2/3h;
-x2=pcshiftx+1/7n1; top y2=h;
-x5=pcshiftx+11/14n1; bot y5=-1/4d;
-rt x6=pcshiftx+n1; top y6=1/6h;
-%% diag bottom left to top right
-x10=x1; bot y10=-d;
-x50=pcshiftx+9/14n1; top y50=h;
-rt x60=x5; bot y60=2/3h;
-x40=pcshiftx+8/14n1; y40=h;
-%% triangle
-z100=(lft x10, bot y10);
-x101=x100+n2; z101=whatever[z100,z40];
-x102=x100; y102=1/2[y100,y101]+n2;
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-draw z1..z2{right}..z5{right}..z6; % top left to bottom right
-draw z10{z40-z10}..z50{right}..z60; % bottom left to top right
-fill z100--z101--z102--cycle; % triangle
-ductus:=false;
-penlabels(1,2,3,4,5,6,7,8,100);
-endchar; % end "x"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{y}
-% The letter `y'. This looks like a curly capital F.
-% \begin{macrocode}
-cmchar "IMAJ letter y";
-beginchar("y", 2sb#+hstretch*(x_height#),
- x_height#, desc_depth#);
-adjust_fit(0,0);
-pcshiftx := u;
-pickup quill;
-%% main stroke
-rt x1=w-pcshiftx; top y1=h;
-lft x3=pcshiftx; y3=1/2h;
-x4=x1; y4=0;
-x2=2/3[x3,x1]; bot y2=h;
-lft x5=1/2[x3,x4]; bot y5=-d;
-%% arm
-z101=1/2[z3,z4];
-z103=(x1,y3);
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-draw z1..z2{left}..z3{down}..z4{down}..z5; % main stroke
-draw z101..z103{right}; % arm
-ductus:=false;
-penlabels(1,2,3,4,5,6,7,8,9,10,100);
-endchar; % end "y"
-
-% \end{macrocode}
-% \end{routine}
-%
-%
-% \begin{routine}{z}
-% The letter `z'.
-% \begin{macrocode}
-cmchar "IMAJ letter z";
-beginchar("z", 2sb#+hstretch*(9/6x_height#),
- x_height#, 0);
-adjust_fit(0,0);
-numeric n[];
-pcshiftx := sb;
-pickup quill;
-%% top bar
-n10 := w-2pcshiftx; % letter width
-lft x1=pcshiftx; y1=h;
-rt x2=pcshiftx+2/3n10; y2=y1;
-%% diagonal
-x3=x1; bot y3=0;
-%% bowl
-n1 := 2/3n10; % width of bowl
-n2 := 5/6h; % height of bowl
-z4=(w-pcshiftx-n1, 0);
-obowl(4, n1, n2);
-z5'=(0,1/4n2); z6'=(x4obc,y5');
-z20o = (z5'--z6') intersectionpoint obouter;
-z20i = (z5'--z6') intersectionpoint obinner;
-z7'=(0,2/3n2); z8'=(x6',y7');
-z10o = whatever[lft z3, lft z2] = whatever[z7',z8'];
-z10i = whatever[rt z3, rt z2] = whatever[z7',z8'];
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-draw z1--z2; % top bar
-draw_utriangle(1,thick);
-draw z2--z3; % diagonal
-fill z20o..z4minro{pdir}..z4maxro{ppdir}..z4minlo{-pdir}..{z3-z2}z10o--
- z10i{z2-z3}..z4minli{pdir}..z4maxri{-ppdir}..z4minri{-pdir}..z20i--
- cycle;
-ductus:=false;
-penlabels(1,2,3,4,5,6,10o,10i,20o,20i,100);
-endchar; % end "z"
-
-% \end{macrocode}
-% \end{routine}
-%
-%
-% The end of this file
-% \begin{macrocode}
-%</min>
-% \end{macrocode}
-%
-%
-% \subsection{The code for capital letters}
-%
-% \thisfont{} `capitals' were drawn with the same pen as for the minuscules,
-% and the letters were merely larger versions of the minuscules.
-%
-% \begin{macrocode}
-%<*maj>
-% IMAJU.MF Program file for Insular Majuscule `capitals'
-%
-
-% \end{macrocode}
-%
-% \begin{routine}{A}
-% The letter `A'.
-% \begin{macrocode}
-cmchar "IMAJ letter A";
-beginchar("A", 2sb#+caprat*hstretch*(5/3x_height#),
- caprat*x_height#, 0);
-adjust_fit(0,0);
-pcshiftx := sb;
-numeric n[];
-path pth[];
-pickup quill;
-%% left bowl
-n1 := w-2pcshiftx; % actual letter width
-n2 := 7/10n1; % width of left bowl
-z1=(pcshiftx,0);
-obowl(1, n2, h);
-pth1:=obouter; pth2:=obinner;
-pth10:=obfirst; pth20:=obsecond;
-%% right bowl
-n3:=x1+n2-16/12thick; % leftmost point of "stem"
-n4:=2(n1-n3); % total width of right stem bowl
-z2=(n3,0);
-offsetbowl(2, n4, h, 6/12, 1/2);
-pth3:=obouter; pth4:=obinner;
-pth30:=obfirst; pth40:=obsecond;
-%% intersect left bowl with outer of right bowl
-z1tout = (subpath (0,1) of pth1) intersectionpoint (subpath (4,2) of pth3);
-z1tinn = (subpath (0,1) of pth2) intersectionpoint (subpath (4,2) of pth3);
-z1lout = (subpath (1,2) of pth1) intersectionpoint (subpath (4,2) of pth3);
-z1linn = (subpath (1,2) of pth2) intersectionpoint (subpath (4,2) of pth3);
-
-%%ductus:=true;
-if ductus:
- pickup stylus;
- % draw the control paths
- draw pth10; draw pth20;
- draw pth30; draw pth40;
-else:
- %% draw left bowl
- fill z1lout..z1minro{-pdir}..z1maxlo{ppdir}..z1minlo{pdir}..z1tout--
- z1tinn..z1minli{-pdir}..z1maxli{-ppdir}..z1minri{pdir}..z1linn--
- cycle;
- %% draw right stem/bowl
- fill z2minro{-pdir}..z2maxlo{ppdir}..{pdir}z2minlo--
- z2minli{-pdir}..z2maxli{-ppdir}..{pdir}z2minri--cycle;
-fi
-ductus:=false;
-penlabels(1,2,3,4,5,6,7,8,100);
-endchar; % end "A"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{B}
-% The letter `B'.
-% \begin{macrocode}
-cmchar "IMAJ letter B";
-beginchar("B", 2sb#+caprat*hstretch*(7/6x_height#),
- caprat*asc_height#, 0);
-adjust_fit(0,0);
-numeric n[];
-pcshiftx := sb;
-pickup quill;
-n1:=w-2pcshiftx; % actual letter width
-n2:=h/ascratio; % top of bowl
-z1=(pcshiftx, -o);
-obowl(1, n1, n2+o);
-%% draw bowl
-fill obouter; unfill obinner;
-%% top of stem
-x2=x1wt+1/3n1; top y2=h;
-tangentpoint(2, subpath (3,4) of obsecond);
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-draw z2tan--z2;
-draw_triserif(2,trijut);
-ductus:=false;
-penlabels(1,2,3,4,5,6,7,8,9,100);
-endchar; % end "B"
-
-% \end{macrocode}
-% \end{routine}
-%
-%
-% \begin{routine}{C}
-% The letter `C'.
-% \begin{macrocode}
-cmchar "IMAJ letter C";
-beginchar("C", 2sb#+caprat*hstretch*(5/6x_height#),
- caprat*x_height#, 0);
-adjust_fit(0,0);
-numeric n[];
-pcshiftx := sb;
-pickup quill;
-n1:=w-2pcshiftx; % actual letter width
-n2:=6/5w-2pcshiftx; % width of full bowl
-z1=(pcshiftx,0);
-obowl(1, n2, h);
-z3=(x1+n1, h); % top RH corner
-z4=(x1obc,1/6h); z5=(3/2w,y4); % for horizontal line
-%% top intersection points
-z10i = (z1obc--z3) intersectionpoint obinner;
-z10o = (z1obc--z3) intersectionpoint obouter;
-%% bottom intersection points
-z20i = (z4--z5) intersectionpoint obinner;
-z20o = (z4--z5) intersectionpoint obouter;
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-fill z20o..z1minro{-pdir}..z1maxlo{ppdir}..z1minlo{pdir}..z10o--
- z10i..z1minli{-pdir}..z1maxli{-ppdir}..z1minri{pdir}..z20i--
- cycle;
-ductus:=false;
-penlabels(1,2,3,4,5,6,16,17,18,100);
-endchar; % end "C"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{D}
-% The letter `D'.
-% \begin{macrocode}
-cmchar "IMAJ letter D";
-beginchar("D", 2sb#+caprat*hstretch*(x_height#+1/2thick#),
- caprat*x_height#, 0);
-adjust_fit(0,0);
-numeric n[];
-pcshiftx := sb;
-pickup quill;
-%% bowl
-n1 := w-2pcshiftx; % actual letter width
-n2 := n1-1/2thick; % width of bowl
-n3 := h; % top of bowl
-z1=(w-pcshiftx-n2, 0);
-obowl(1, n2, n3);
-%% top bar
-lft x3=pcshiftx; y3=h;
-z3i=(pcshiftx, y3-1/2thin); z3o=(x3i,y3i+thin);
-z2i=(x1nh,y3i);
-z2o=(x2i,y3o);
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-fill z1minlo{-pdir}..z1maxlo{-ppdir}..z1minro{pdir}..z1maxro{ppdir}..{left}z2o--
- z3o--z3i--
- z2i{right}..z1maxri{-ppdir}..z1minri{-pdir}..z1maxli{ppdir}..{pdir}z1minli--
- cycle;
-draw_utriangle(3, thick);
-ductus:=false;
-penlabels(0,1,2,3,4,5,6,7,8,100);
-endchar; % end "D"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{E}
-% The letter `E'.
-% \begin{macrocode}
-cmchar "IMAJ letter E";
-beginchar("E", sb#+caprat*hstretch*(x_height#+3/2thick#),
- caprat*x_height#, 0);
-adjust_fit(0,0);
-pcshiftx := sb;
-numeric n[];
-pickup quill;
-n1 := w-pcshiftx; % actual letter width
-n2 := n1-3/2thick; % width of bowl
-z1=(pcshiftx,0);
-obowl(1, n2, h);
-%% for crossbar
-z2=(0,2/3h); rt x3=w; y3=y2; z3'=(x1obc,y2);
-z4 = (z2--z3') intersectionpoint subpath (3,4) of obsecond;
-z10tout = (z3'--z3) intersectionpoint subpath (0,3) of obouter;
-z10tinn = (z3'--z3) intersectionpoint subpath (0,3) of obinner;
-%% bottom cutoff
-z5=(x1obc,1/6h); z6=(w,y5);
-z20bout = (z5--z6) intersectionpoint subpath (0,3) of obouter;
-z20binn = (z5--z6) intersectionpoint subpath (0,3) of obinner;
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-fill z20bout..z1minro{-pdir}..z1maxlo{ppdir}..z1minlo{pdir}..z10tout--
- z10tinn..z1minli{-pdir}..z1maxli{-ppdir}..z1minri{pdir}..z20binn--
- cycle;
-draw z4--z3; % crossbar & decoration
-draw_triangle(3,thick);
-ductus:=false;
-penlabels(1,2,3,4,5,6,7,8,9,100);
-endchar; % end "E"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{F}
-% The letter `F'.
-% \begin{macrocode}
-cmchar "IMAJ letter F";
-beginchar("F", 2sb#+caprat*hstretch*(x_height#+trijut#),
- caprat*(x_height#), caprat*desc_depth#);
-adjust_fit(0,0);
-pcshiftx := sb;
-pickup quill;
-%% stem
-lft x1=lft x2=pcshiftx+trijut;
-top y1=h; bot y2=-d;
-%% bottom bar
-z4=(rt x1,-thin); rt x6=w-pcshiftx; y6=y4+2thin; z5=1/2[z4,z6];
-%% top bar
-z7=(rt x1, bot y1);
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-draw_tstem(1,2,srad); % stem
-draw_triserif(1,trijut);
-draw_clubbase(1, 2, 1/3, clubjut, clubjut);
-draw z4{dir(45)}..z5{right}..z6{dir(45)}; % bottom bar
-draw_flick(7, 2thin, thin, (w-pcshiftx-x7+1/2thick)); % top bar
-ductus:=false;
-penlabels(1,2,3,4,5,6,7,100);
-endchar; % end "F"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{G}
-% The letter `G'.
-% \begin{macrocode}
-cmchar "IMAJ letter G";
-beginchar("G", 2sb#+caprat*hstretch*(5/3x_height#),
- caprat*x_height#, caprat*desc_depth#);
-adjust_fit(0,0);
-path pth[];
-pair vec[];
-pcshiftx := sb;
-pickup quill;
-%% top bar
-lft x1=pcshiftx; y1=h; rt x2=w-pcshiftx; y2=h;
-%% curves
-z3=2/5[z1,z2];
-x5=4/5[x1,x2]; y5=-1/2d;
-x4=(x3-thick); y4=1/2[y5,y3];
-x7=1/2[x1,x4]; y7=y5;
-x6=2/3[x7,x5]; bot y6=-d;
-pth1 := z3..z4{down}..z5;
-pth2 := z5--z6{left}..z7;
-%% diagonal to close bottom bowl
-vec1 := direction 2 of pth2;
-vec2 := (z5-z6);
-z7'=(lft x7, bot y7); z7''=(rt x7, y7);
-pickup thickstylus;
-lft x8 = x7'; bot y8 = y7';
-z9' = z8 shifted 2vec2;
-z9 = (z8--z9') intersectionpoint pth1;
-z7''' = z7'' shifted 2vec1;
-z8' = whatever[z7'',z7'''] = whatever[z8,z9'];
-%%ductus:=true;
-if ductus:
- pickup stylus;
- draw z1--z2; % top bar
- draw pth1; draw pth2; % curves
- draw rt z8--z9; % diagonal
-else:
- pickup quill;
- draw z1--z2; % top bar
- draw_triangle(2,thick);
- draw_utriangle(1,thick);
- draw pth1; draw pth2; % curves
- pickup thickstylus;
- draw rt z8--z9; % diagonal
- fill z7''--z8'--z8--cycle;
-fi
-ductus:=false;
-penlabels(1,2,3,4,5,6,7,8,9,100);
-endchar; % end "G"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{H}
-% The letter `H'.
-% \begin{macrocode}
-cmchar "IMAJ letter H";
-beginchar("H", 2sb#+caprat*hstretch*(x_height#+trijut#),
- caprat*asc_height#, 0);
-adjust_fit(0,0);
-pcshiftx := sb;
-pickup quill;
-numeric n[];
-%% stem
-lft x1=lft x2=pcshiftx+trijut;
-top y1=h; bot y2=0;
-%% bowl
-rt x3 = lft x1; y3=0;
-n1 := w-pcshiftx-x3; % bowl width
-n2 := h/ascratio; % bowl height
-obowl(3, n1, n2);
-z1'=(rt x1, y1); z2'=(x1',y2); %% right hand side of stem
-z10tout = (z1'--z2') intersectionpoint subpath (3,4) of obouter;
-z10tinn = (z1'--z2') intersectionpoint subpath (3,4) of obinner;
-z10toth = (x1, y10tinn); % avoids 180 turn in path
-z6 = directionpoint down of obsecond; % top of right leg
-z6i=(lft x6, bot y6); z6o=(rt x6, bot y6);
-z8=(x6,0);
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-draw_tstem(1,2,srad); % stem
-draw_triserif(1,trijut);
-draw_clubbase(1, 2, 1/3, clubjut, clubjut);
-draw_tstem(6,8,srad); % right leg
-draw_clubbase(6, 8, 1/3, 0, 1/2clubjut);
-fill z6i{up}..z3minli{-pdir}..z10tinn--z10toth-- % top of bowl
- z10tout..z3minlo{pdir}..{down}z6o--cycle;
-ductus:=false;
-penlabels(1,2,3,4,5,6,100);
-endchar; % end "H"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{I}
-% The letter `I'.
-% \begin{macrocode}
-cmchar "IMAJ letter I";
-beginchar("I", 2sb#+caprat*hstretch*(thick#+trijut#+jut#),
- caprat*x_height#, 0);
-adjust_fit(0,0);
-pcshiftx := sb;
-pickup quill;
-lft x1=lft x2=pcshiftx+trijut;
-top y1=h; bot y2=0;
-%%ductus:=true;
-draw_tstem(1,2,srad);
-draw_triserif(1,trijut);
-draw_clubbase(1, 2, 1/3, clubjut, clubjut);
-ductus:=false;
-penlabels(1,2,100);
-endchar; % end "I"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{J}
-% The letter `J'. This letter was not in the script, it being a later invention.
-% \begin{macrocode}
-cmchar "IMAJ letter J";
-beginchar("J", sb#+caprat*hstretch*(2/3x_height#),
- caprat*x_height#, caprat*desc_depth#);
-adjust_fit(0,0);
-pcshiftx := sb;
-numeric n[];
-pickup quill;
-%% stem
-rt x1 = w-pcshiftx; top y1 = h;
-x2=x1; y2=-1/2d;
-%% bottom hook
-lft x3 = 0; bot y3 = -d;
-%% triangle
-n1 := thick; % side length
-z6=(lft x3, bot y3);
-x7=x6+n1; z7=whatever[z6,z2];
-z8=1/2[z6,z7];
-z9=(x8, y8+0.9n1);
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-draw z1--z2; % stem
-draw_triserif(1,trijut);
-draw z2--z3; % hook
-fill z6--z7--z9--cycle; % triangle
-ductus:=false;
-penlabels(1,2,3,100);
-endchar; % end "J"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{K}
-% The letter `K'.
-% \begin{macrocode}
-cmchar "IMAJ letter K";
-beginchar("K", 2sb#+caprat*hstretch*(x_height#+trijut#),
- caprat*x_height#, caprat*desc_depth#);
-adjust_fit(0,0);
-pcshiftx := sb;
-pickup quill;
-%% stem
-lft x1=lft x2=pcshiftx+trijut;
-top y1=h; bot y2=-d;
-%% top arm
-z3=(x1,5/6h);
-rt x5=w-pcshiftx; y5=2/3h;
-x4=1/2[x3,x5]; top y4=h;
-%% lower arm
-x7=x5; bot y7=0;
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-draw_tstem(1,2,srad); % stem
-draw_triserif(1,trijut);
-draw_clubbase(1,2,1/3, clubjut, clubjut);
-draw z3..z4{right}..z5; % upper arm
-draw z3..{right}z7; % lower arm
-ductus:=false;
-penlabels(1,2,3,4,5,100);
-endchar; % end "K"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{L}
-% The letter `L'.
-% \begin{macrocode}
-cmchar "IMAJ letter L";
-beginchar("L", 2sb#+caprat*hstretch*(7/6x_height#),
- caprat*asc_height#, 0);
-adjust_fit(0,0);
-pcshiftx := sb;
-pickup quill;
-lft x2=pcshiftx; y2=1/5h;
-x1=x2+trijut; top y1=h;
-rt x4=w-pcshiftx; y4=1/5h;
-x3=1/2[x2,x4]; bot y3=0;
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-draw z1{down}..z2..z3{right}..z4;
-draw_triserif(1,trijut);
-ductus:=false;
-penlabels(1,2,3,4,100);
-endchar; % end "L"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{M}
-% The letter `M'.
-% \begin{macrocode}
-cmchar "IMAJ letter M";
-beginchar("M", 2sb#+caprat*hstretch*(5/3x_height#+trijut#),
- caprat*x_height#, 0);
-adjust_fit(0,0);
-pcshiftx := sb;
-numeric n[];
-path pth[];
-pickup quill;
-%% left stem
-lft x1=pcshiftx+trijut; top y1=h;
-x2=x1; bot y2=0;
-z1'=(rt x1, y1+h); z2'=(rt x2, y2-h);
-%% right stem
-rt x5=w-pcshiftx; y5=y1;
-z6=(x5,0);
-%% middle stem
-z3=1/2[z1,z5]; z4=1/2[z2,z6];
-z3'=(rt x3, y3); z4'=(rt x4, y4);
-n1 := x4-x2+3/2thick; % width of bowl
-n2 := 2/3h; % height of bowl
-%% left bowl
-z7=(rt x4 - n1, h-n2);
-obowl(7, n1, n2);
-pth1 := obouter; pth2 := obinner; pth3 := obsecond;
-z17tout = (z1'--z2') intersectionpoint subpath (3,4) of obouter;
-z17tinn = (z1'--z2') intersectionpoint subpath (3,4) of obinner;
-z17toth = (x2, y17tinn);
-%% right bowl
-z8=(rt x6 - n1, y7);
-obowl(8, n1, n2);
-pth5 := obouter; pth6 := obinner; pth7 := obsecond;
-z18tout = pth5 intersectionpoint subpath (0,1) of pth1;
-z18tinn = pth6 intersectionpoint subpath (0,1) of pth1;
-z13 = directionpoint down of pth3;
-z15 = directionpoint down of pth7;
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-draw_tstem(1,2,srad); % left half
-draw_triserif(1,trijut);
-draw_clubbase(1, 2, 1/3, clubjut, clubjut);
-fill z17tout..z7minlo{pdir}..{down}(rt x13, y13)--
- (lft x13, y13){up}..z7minli{-pdir}..z17tinn--z17toth--cycle;
-draw_tstem(13,4,srad); % right half
-fill z18tout..z8minlo{pdir}..{down}(rt x15, y15)--
- (lft x15, y15){up}..z8minli{-pdir}..z18tinn--cycle;
-draw_tstem(15,6,srad);
-ductus:=false;
-penlabels(1,2,3,4,5,6,7,8,9,14,100);
-endchar; % end "M"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{N}
-% The letter `n'. This could be like a capital `N' or a lower-case `n'.
-% I have chosen to do the first form.
-% \begin{macrocode}
-cmchar "IMAJ letter N";
-beginchar("N", 2sb#+caprat*hstretch*(7/6x_height#+trijut#),
- caprat*x_height#, caprat*(1/2desc_depth#));
-adjust_fit(0,0);
-pcshiftx := sb;
-pickup quill;
-%% left stem
-lft x1=pcshiftx+trijut; top y1=h;
-x2=x1; bot y2=-d;
-%% right stem
-rt x3=w-pcshiftx; y3=y1;
-z4=(x3,0);
-%% bar
-z5=(x1,1/3h); z6=(x4,1/6h);
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-draw_tstem(1,2,srad); % left stem
-draw_triserif(1,trijut);
-draw_clubbase(1, 2, 1/3, clubjut, clubjut);
-draw_tstem(3,4,srad); % right stem
-draw_clubbase(3, 4, 1/3, clubjut, clubjut);
-draw z5--z6; % bar
-ductus:=false;
-penlabels(1,2,3,4,5,6,100);
-endchar; % end "N"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{O}
-% The letter `O'.
-% \begin{macrocode}
-cmchar "IMAJ letter O";
-beginchar("O", 2sb#+caprat*hstretch*(7/6x_height#),
- caprat*x_height#, 0);
-adjust_fit(0,0);
-pcshiftx := sb;
-pickup quill;
-z5=(pcshiftx,-o);
-obowl(5, w-2pcshiftx, h+2o);
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-fill obouter; unfill obinner;
-ductus:=false;
-penlabels(1,2,3,4,5,100);
-endchar; % end "O"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{P}
-% The letter `P'.
-% \begin{macrocode}
-cmchar "IMAJ letter P";
-beginchar("P", 2sb#+caprat*hstretch*(8/6x_height#+trijut#),
- caprat*x_height#, caprat*desc_depth#);
-adjust_fit(0,0);
-pcshiftx := sb;
-numeric n[];
-pickup quill;
-%% stem
-lft x1=lft x2=pcshiftx+trijut;
-top y1=1/3h; bot y2=-d;
-n1 := w - pcshiftx - lft x1; % width of bowl
-n2 := h+1/4d; % height of bowl
-z3=(lft x1, -1/4d);
-obowl(3, n1, n2);
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-draw_tstem(1,2,srad); % stem
-draw_triserif(1,trijut);
-draw_clubbase(1, 2, 1/3, clubjut, 0);
-fill lft z1{up}..z3minlo{pdir}..z3maxro{-ppdir}..{-pdir}z3minro--
- z3minri{pdir}..z3maxri{ppdir}..z3minli{-pdir}..{down}rt z1--
- cycle;
-ductus:=false;
-penlabels(1,2,3,4,5,6,7,8,100);
-endchar; % end "P"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{Q}
-% The letter `Q'.
-% \begin{macrocode}
-cmchar "IMAJ letter Q";
-beginchar("Q", 2sb#+caprat*hstretch*(x_height#+1/2trijut#),
- caprat*x_height#, caprat*(1/2desc_depth#));
-adjust_fit(0,0);
-pcshiftx := sb;
-numeric n[];
-pickup quill;
-%% right stem
-rt x1=w-pcshiftx-1/2trijut; top y1=h;
-x2=x1; bot y2=-d;
-z3=(pcshiftx,0);
-n1 := w; % width of bowl
-n2 := h; % height of bowl
-obowl(3, n1, n2);
-z10o = (rt z1--rt z2) intersectionpoint subpath (0,1) of obouter;
-z10i = (lft z1--lft z2) intersectionpoint subpath (0,1) of obinner;
-z20o = (rt z1--rt z2) intersectionpoint subpath (1,2) of obouter;
-z20i = (lft z1--lft z2) intersectionpoint subpath (1,2) of obinner;
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-draw_tstem(1,2,srad); % stem
-draw_triserif(1,trijut);
-draw_clubbase(1, 2, 1/3, 0, clubjut);
-fill z10o..z3minlo{-pdir}..z3maxlo{-ppdir}..z3minro{right}..z20o--
- z20i..z3minri{-pdir}..z3maxli{ppdir}..z3minli{pdir}..z10i--
- cycle;
-ductus:=false;
-penlabels(0,1,2,3,4,5,6,7,8,100);
-endchar; % end "Q"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{R}
-% The letter `R'.
-% \begin{macrocode}
-cmchar "IMAJ letter R";
-beginchar("R", sb#+caprat*hstretch*(11/6x_height#+trijut#),
- caprat*x_height#, caprat*(1/2desc_depth#));
-adjust_fit(0,0);
-pcshiftx := sb;
-numeric n[];
-pickup quill;
-%% stem
-lft x1=lft x2=pcshiftx+trijut; top y1=h; bot y2=-d;
-n1 := w-pcshiftx; % width of bowl
-n2 := 5/6h; % height of bowl
-z3=(x1-1/2n1, h-n2);
-obowl(3, n1, n2);
-z10o=(x1,h); z10i=(x1, y10o-thin);
-z20o=(x1,y3); z20i=(x20o, y20o+thin);
-%% arm
-x4=x1; bot y4=y3;
-x5=x3maxro; top y5=0;
-%%rt x6=w; y6=y4;
-rt x6=w; y6=y2;
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-draw_tstem(1,2,srad); % stem
-draw_triserif(1,trijut);
-draw_clubbase(1, 2, 1/3, clubjut, 0);
-fill z10o{right}..z3maxro{-ppdir}..{left}z20o--
- z20i{right}..z3maxri{ppdir}..{left}z10i--cycle;
-%%draw z4{right}..z5{right}..{right}z6; % arm
-draw z4{right}..{right}z6;
-ductus:=false;
-penlabels(1,2,3,4,5,6,7,8,9,100);
-endchar; % end "R"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{S}
-% The letter `S'. This is a `long' S.
-% \begin{macrocode}
-cmchar "IMAJ letter S";
-beginchar("S", 2sb#+caprat*hstretch*(x_height#+trijut#),
- caprat*asc_height#, 0);
-adjust_fit(0,0);
-numeric n[];
-pcshiftx := sb;
-pickup quill;
-%% stem
-lft x1=lft x2=pcshiftx+trijut; top y1=h/ascratio; bot y2=0;
-n1 := w; % width of bowl
-n2 := 2(h-y1); % height of bowl
-z3=(lft x1, y1-1/2n2);
-obowl(3, n1, n2);
-z4=(2w,2h);
-z10o = (z3--z4) intersectionpoint subpath (0,1) of obouter;
-z10i = (z3--z4) intersectionpoint subpath (0,1) of obinner;
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-draw_tstem(1,2,srad); % stem
-draw_triserif(1,trijut);
-draw_clubbase(1, 2, 1/3, clubjut, clubjut);
-fill rt z1{up}..z3minli{pdir}..z10i--
- z10o..z3minlo{-pdir}..{down}lft z1--cycle;
-ductus:=false;
-penlabels(1,2,3,4,5,6,7,11,17,26,27,28,100);
-endchar; % end "S"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{T}
-% The letter `T'.
-% \begin{macrocode}
-cmchar "IMAJ letter T";
-beginchar("T", 2sb#+caprat*hstretch*(4/3x_height#),
- caprat*x_height#, 0);
-adjust_fit(0,0);
-pcshiftx := sb;
-numeric n[];
-pickup quill;
-%% bar
-lft x1 = pcshiftx; y1=h; rt x2=w-pcshiftx; y2=y1;
-n1 := w; % width of bowl
-n2 := h; % height of bowl
-z3=(pcshiftx+thick,0);
-obowl(3, n1, n2);
-z5=(x1+w, 0);
-z20o = (z1--z5) intersectionpoint subpath (1,2) of obouter;
-z20i = (z1--z5) intersectionpoint subpath (1,2) of obinner;
-z10o = (x3minlo, top y1);
-z10i = (x3minlo, bot y1);
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-draw z1--z2; % bar
-draw_utriangle(1, thick);
-draw_triangle(2, thick);
-fill z10o{left}..z3maxlo{-ppdir}..z3minro{pdir}..z20o--
- z20i..z3minri{-pdir}..z3maxli{ppdir}..z10i{right}--
- cycle;
-ductus:=false;
-penlabels(1,2,3,4,5,6,11,12,100);
-endchar; % end "T"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{U}
-% The letter `U'.
-% \begin{macrocode}
-cmchar "IMAJ letter U";
-beginchar("U", 2sb#+caprat*hstretch*(7/6x_height#+1/2trijut#),
- caprat*x_height#, 0);
-adjust_fit(0,0);
-pcshiftx := sb;
-numeric n[];
-pickup quill;
-%% right stem
-rt x1 = rt x2 = w-pcshiftx-1/2trijut;
-y1=h; y2=0;
-z1'=(x1-1/2thick,2h); z2'=(x1',-h);
-%% bowl
-n1 := w; % width of bowl
-n2 := 4/3h; % height of bowl
-z3=(pcshiftx,0);
-obowl(3, n1, n2);
-z4=(pcshiftx,h); z5=(w,y4);
-z10o = (z4--z5) intersectionpoint subpath (3,4) of obouter;
-z10i = (z4--z5) intersectionpoint subpath (3,4) of obinner;
-z10'=1/2[z10o,z10i];
-z10=(x10i,y1);
-z20o = (z1'--z2') intersectionpoint subpath (1,3) of obouter;
-z20i = (z1'--z2') intersectionpoint subpath (1,3) of obinner;
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-draw_tstem(1,2,srad); % stem
-draw_triserif(1,trijut);
-draw_clubbase(1, 2, 1/3, 0, clubjut);
-fill z10o..z3maxlo{-ppdir}..z3minro{pdir}..z20o--
- z20i..z3minri{-pdir}..z3maxli{ppdir}..z10i--cycle;
-draw_triserif(10,trijut); % serif on bowl
-ductus:=false;
-penlabels(1,2,3,4,5,6,7,8,9,11,16,100);
-endchar; % end "U"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{V}
-% The letter `V'. The right half of the `w' is used for the `v' (or vice-versa
-% if you prefer).
-% \begin{macrocode}
-cmchar "IMAJ letter V";
-beginchar("V", 2sb#+caprat*hstretch*(x_height#+trijut#),
- caprat*x_height#, 0);
-adjust_fit(0,0);
-pcshiftx := sb;
-pickup quill;
-% right side of W
-numeric midx; midx:= pcshiftx;
-lft x1=midx+trijut; top y1=h;
-x2=x1; y2=h/2;
-rt x4=w-pcshiftx; y4=y2;
-x3=0.5[x2,x4]; bot y3=0;
-x5=x4-trijut; y5=y1;
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-% draw the serifs, then the bowls
-draw_triserif(1,trijut);
-%%draw_triserif(5,trijut);
-draw z1--z2{down}..z3{right}..z4{up}..z5;
-ductus:=false;
-penlabels(1,2,3,4,5,11,100);
-endchar; % end "V"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{W}
-% The letter `W'. This is a modern version as the font did not have a W.
-% \begin{macrocode}
-cmchar "IMAJ letter W";
-beginchar("W", 2sb#+caprat*hstretch*(5/3x_height#+trijut#),
- caprat*x_height#, 0);
-adjust_fit(0,0);
-pcshiftx := sb;
-pickup quill;
-% right side first
-numeric midx; midx:= w/2-trijut;
-lft x1=midx+trijut; top y1=h;
-x2=x1; y2=h/2;
-rt x4=w-pcshiftx; y4=y2;
-x3=0.5[x2,x4]; bot y3=0;
-x5=x4-trijut; y5=y1;
-% left side
-lft x6=pcshiftx+trijut;
-top y6=h;
-%%lft x7=pcshiftx; y7=y2;
-x7=x6; y7=y2;
-x8=0.5[x7,x1]; y8=y3;
-% construction points
-x15=0.5[x8,x1]; y15=y8;
-z15'=z15 shifted (w*pdir);
-x2'=x2; y2'=y15;
-path p[];
-p1=z1--z2';
-p2=z15--z15';
-z9= p2 intersectionpoint p1;
-pair vec[];
-p3=z6..z7{down}..{right}z8;
-vec3 = direction 0 of p3;
-z16=z6 shifted vec3;
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-% draw the serifs, then the bowls
-draw_triserif(1,trijut); % right half
-draw z1--z2{down}..z3{right}..z4{up}..z5;
-draw_triserif(6,trijut); % left half
-draw z6--z7{down}..z8{right}..z9;
-ductus:=false;
-penlabels(1,2,3,4,5,6,7,8,9,11,16,100);
-endchar; % end "W"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{X}
-% The letter `X'.
-% \begin{macrocode}
-cmchar "IMAJ letter X";
-beginchar("X", 2sb#+caprat*hstretch*(16/6x_height#),
- caprat*x_height#, caprat*desc_depth#);
-adjust_fit(0,0);
-numeric n[];
-pcshiftx := sb;
-pickup quill;
-n1 := w-2pcshiftx; % total width
-n2 := thick; % triangle side
-%% diag top left to bottom right
-lft x1=pcshiftx; bot y1=2/3h;
-x2=pcshiftx+1/7n1; top y2=h;
-x5=pcshiftx+11/14n1; bot y5=-1/4d;
-rt x6=pcshiftx+n1; top y6=1/6h;
-%% diag bottom left to top right
-x10=x1; bot y10=-d;
-x50=pcshiftx+9/14n1; top y50=h;
-rt x60=x5; bot y60=2/3h;
-x40=pcshiftx+8/14n1; y40=h;
-%% triangle
-z100=(lft x10, bot y10);
-x101=x100+n2; z101=whatever[z100,z40];
-x102=x100; y102=1/2[y100,y101]+n2;
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-draw z1..z2{right}..z5{right}..z6; % top left to bottom right
-draw z10{z40-z10}..z50{right}..z60; % bottom left to top right
-fill z100--z101--z102--cycle; % triangle
-ductus:=false;
-penlabels(1,2,3,4,5,6,7,8,100);
-endchar; % end "X"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{Y}
-% The letter `Y'. This looks like a curly capital F.
-% \begin{macrocode}
-cmchar "IMAJ letter Y";
-beginchar("Y", 2sb#+caprat*hstretch*(x_height#),
- caprat*x_height#, caprat*desc_depth#);
-adjust_fit(0,0);
-pcshiftx := u;
-pickup quill;
-%% main stroke
-rt x1=w-pcshiftx; top y1=h;
-lft x3=pcshiftx; y3=1/2h;
-x4=x1; y4=0;
-x2=2/3[x3,x1]; bot y2=h;
-lft x5=1/2[x3,x4]; bot y5=-d;
-%% arm
-z101=1/2[z3,z4];
-z103=(x1,y3);
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-draw z1..z2{left}..z3{down}..z4{down}..z5; % main stroke
-draw z101..z103{right}; % arm
-ductus:=false;
-penlabels(1,2,3,4,5,6,7,8,9,10,100);
-endchar; % end "Y"
-
-% \end{macrocode}
-% \end{routine}
-%
-%
-% \begin{routine}{Z}
-% The letter `Z'.
-% \begin{macrocode}
-cmchar "IMAJ letter Z";
-beginchar("Z", 2sb#+caprat*hstretch*(9/6x_height#),
- caprat*x_height#, 0);
-adjust_fit(0,0);
-numeric n[];
-pcshiftx := sb;
-pickup quill;
-%% top bar
-n10 := w-2pcshiftx; % letter width
-lft x1=pcshiftx; y1=h;
-rt x2=pcshiftx+2/3n10; y2=y1;
-%% diagonal
-x3=x1; bot y3=0;
-%% bowl
-n1 := 2/3n10; % width of bowl
-n2 := 5/6h; % height of bowl
-z4=(w-pcshiftx-n1, 0);
-obowl(4, n1, n2);
-z5'=(0,1/4n2); z6'=(x4obc,y5');
-z20o = (z5'--z6') intersectionpoint obouter;
-z20i = (z5'--z6') intersectionpoint obinner;
-z7'=(0,2/3n2); z8'=(x6',y7');
-z10o = whatever[lft z3, lft z2] = whatever[z7',z8'];
-z10i = whatever[rt z3, rt z2] = whatever[z7',z8'];
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-draw z1--z2; % top bar
-draw_utriangle(1,thick);
-draw z2--z3; % diagonal
-fill z20o..z4minro{pdir}..z4maxro{ppdir}..z4minlo{-pdir}..{z3-z2}z10o--
- z10i{z2-z3}..z4minli{pdir}..z4maxri{-ppdir}..z4minri{-pdir}..z20i--
- cycle;
-ductus:=false;
-penlabels(1,2,3,4,5,6,10o,10i,20o,20i,100);
-endchar; % end "Z"
-
-% \end{macrocode}
-% \end{routine}
-%
-%
-%
-% The end of this file
-% \begin{macrocode}
-%</maj>
-% \end{macrocode}
-%
-%
-%
-% \subsection{The punctuation file}
-%
-% The main punctuation marks are defined in this file.
-%
-% \begin{macrocode}
-%<*punct>
-% IMAJPUNCT.MF This file contains punctuation marks
-
-% \end{macrocode}
-%
-%
-% \begin{routine}{!}
-% The `!' character, which had not been invented at this time.
-% \begin{macrocode}
-
-cmchar "Exclamation mark";
-beginchar("!", 2sb#+hstretch*(thick#+trijut#),
- asc_height#, 0);
-adjust_fit(0,0);
-pcshiftx := sb;
-pickup quill;
-z1=(w/2,h);
-z3=(x1, 1/2dot_size);
-z2=(x1, y3+3/2dot_size);
-draw z1--z2;
-draw_pdot(3,dot_size);
-penlabels(1,2,3);
-
-endchar; % end of "!"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{?}
-% The `?' character, which had not been invented at this time.
-% \begin{macrocode}
-
-cmchar "Question mark";
-beginchar("?", 2sb#+hstretch*(x_height#),
- asc_height#, 0);
-adjust_fit(0,0);
-pcshiftx := sb;
-numeric n[];
-path pth[];
-pickup quill;
-n1 := w-2pcshiftx; % actual character width
-n2 := 1/3h; % height of top bowl
-n3 := n2; % height of bottom bowl
-%% top bowl
-z1=(pcshiftx, h-n2);
-obowl(1, n1, n2);
-pth1 := obouter;
-%% bottom bowl
-z2=(x1,y1-n3);
-obowl(2, n1, n3);
-pth2 := obouter;
-%% stem and dot
-lft x4 = x1 + 4/4thick;
-z5=(x4,1/2dot_size);
-y4=y5+3/2dot_size;
-z4o=(lft x4, y4); z4i=(rt x4, y4);
-%%ductus:= true;
-if ductus:
- pickup stylus;
- draw pth1; draw pth2;
- draw z2wt--z4;
- draw_pdot(5, dot_size);
-else:
- fill z1maxlo{ppdir}..z1minlo{pdir}..z1maxro{-ppdir}..
-%% z1minro..z2maxli{-ppdir}..
- z2minli..
- {down}z4i--z4o{up}..
- z2minlo..
-%% z1minri..z1maxri{ppdir}..
- z1maxri{ppdir}..z1minli{-pdir}..z1maxli{-ppdir}--cycle;
- draw_pdot(5, dot_size);
-fi
-penlabels(1,2,3,4,5);
-endchar; % end of "?"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{,}
-% The `,' character.
-% \begin{macrocode}
-
-cmchar "Comma";
-beginchar(",",2sb#+hstretch*(comma_width#+dot_size#),x_height#,0);
-adjust_fit(0,0);
-pcshiftx:=sb;
-x1=w-pcshiftx-(0.5hstretch*dot_size); y1=h/2;
-draw_pcomma(1,dot_size,comma_width);
-penlabels(1);
-endchar; % end of ","
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{.}
-% The `.' character.
-% \begin{macrocode}
-
-cmchar "Period";
-beginchar(".",2sb#+hstretch*(dot_size#),x_height#,0);
-pcshiftx:=sb;
-x1=w/2; y1=h/2;
-draw_pdot(1,dot_size);
-penlabels(1);
-endchar; % end of "."
-
-% \end{macrocode}
-% \end{routine}
-%
-%
-% \begin{routine}{:}
-% The `:' character.
-% \begin{macrocode}
-
-cmchar "Colon";
-beginchar(":",2sb#+hstretch*(dot_size#),x_height#,0);
-pcshiftx:=sb;
-x1=x2=w/2; y1=2/3h; y2=1/3h;
-draw_pdot(1,dot_size);
-draw_pdot(2,dot_size);
-penlabels(1,2);
-endchar; % end ":"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{;}
-% The `;' character.
-% \begin{macrocode}
-
-cmchar "Semicolon";
-beginchar(";",2sb#+hstretch*(comma_width#+dot_size#),x_height#,0);
-adjust_fit(0,0);
-pcshiftx:=sb;
-x1=x2=w-pcshiftx-(0.5hstretch*dot_size); y1=2/3h; y2=1/3h;
-draw_pdot(1,dot_size);
-draw_pcomma(2,dot_size,comma_width);
-penlabels(1,2);
-endchar; % end of ";"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{'}
-% The `'' character.
-% \begin{macrocode}
-
-cmchar "Apostrophe";
-beginchar("'",2sb#+hstretch*(comma_width#+dot_size#),4/3x_height#,0);
-adjust_fit(0,0);
-pcshiftx:=sb;
-x1=w-pcshiftx-(0.5hstretch*dot_size); y1=h;
-draw_pcomma(1,dot_size,comma_width);
-penlabels(1);
-endchar; % end of "'"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{`}
-% The ``' character.
-% \begin{macrocode}
-
-cmchar "Reverse apostrophe";
-beginchar("`",2sb#+hstretch*(comma_width#+dot_size#),4/3x_height#,0);
-adjust_fit(0,0);
-pcshiftx:=sb;
-x1=pcshiftx+(0.5hstretch*dot_size); y1=h;
-draw_plq(1,dot_size,comma_width);
-penlabels(1);
-endchar; % end of "`"
-
-% \end{macrocode}
-% \end{routine}
-%
-% The end of this file.
-% \begin{macrocode}
-%</punct>
-% \end{macrocode}
-%
-%
-% \subsection{The ligatures and dashes file}
-%
-% The ligatured letters, punctuation marks and dashes are defined in this file.
-% \begin{macrocode}
-%<*lig>
-% IMAJLIG.MF Uncial ligatured letters, punctation and dashes
-
-% \end{macrocode}
-% First the ligtables.
-% \begin{macrocode}
-
-ligtable "`": "`"=:oct"134";
-ligtable "'": "'"=:oct"042"; %% , "?" kern 2u#, "!" kern 2u#;
-
-ligtable "-": "-"=:oct"173";
-ligtable oct"173": "-"=:oct"174";
-
-%%%%ligtable "f": "i"=:oct"014";
-
-% \end{macrocode}
-%
-% \begin{routine}{''}
-% The `''' ligature.
-% \begin{macrocode}
-
-cmchar "Closing quotes";
-beginchar(oct"042",2sb#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0);
-adjust_fit(0,0);
-pcshiftx:=sb;
-x1=w-pcshiftx-(0.5hstretch*dot_size); y1=y2=h;
-x2=x1-(2hstretch*dot_size);
-draw_pcomma(1,dot_size,comma_width); % right
-draw_pcomma(2,dot_size,comma_width); % left
-penlabels(1,2);
-endchar; % end of "''"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{``}
-% The ```' ligature.
-% \begin{macrocode}
-
-cmchar "Opening quotes";
-beginchar(oct"134",2sb#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0);
-adjust_fit(0,0);
-pcshiftx:=sb;
-x1=pcshiftx+(0.5hstretch*dot_size); y1=y2=h;
-x2=x1+(2hstretch*dot_size);
-draw_plq(1,dot_size,comma_width); % left
-draw_plq(2,dot_size,comma_width); % right
-penlabels(1,2);
-endchar; % end of "``"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{-}
-% The `-' (hyphen) character.
-% \begin{macrocode}
-
-cmchar "Hyphen";
-beginchar("-",sb#+hstretch*(0.8x_height#),x_height#,0);
-adjust_fit(0,0);
-pcshiftx:=sb/2;
-numeric alpha; alpha:=w/8;
-pickup quill;
-lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2;
-x11=lft x1+alpha/2; y11=top y1-0.5thin;
-x12=rt x2; y12=bot y1+0.5thin;
-draw_triangle(11,alpha);
-draw_rutriangle(12,alpha);
-pickup thickstylus;
-lft x21=pcshiftx; rt x22=w-pcshiftx; y21=y22=y1;
-draw z21--z22;
-penlabels(1,2);
-endchar; % end of "-"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{--}
-% The `--' (en-dash) ligature.
-% \begin{macrocode}
-
-cmchar "En dash";
-beginchar(oct"173",sb#+hstretch*(x_height#),x_height#,0);
-adjust_fit(0,0);
-pcshiftx:=sb/2;
-numeric alpha; alpha:=w/8;
-pickup quill;
-lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2;
-x11=lft x1+alpha/2; y11=top y1-0.5thin;
-x12=rt x2; y12=bot y1+0.5thin;
-draw_triangle(11,alpha);
-draw_rutriangle(12,alpha);
-pickup thickstylus;
-lft x21=pcshiftx; rt x22=w-pcshiftx; y21=y22=y1;
-draw z21--z22;
-penlabels(1,2);
-endchar; % end of "--"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{---}
-% The `---' (em dash) ligature. The em dash is twice the width of the en dash.
-% \begin{macrocode}
-
-cmchar "Em dash";
-beginchar(oct"174",sb#+hstretch*(2x_height#),x_height#,0);
-adjust_fit(0,0);
-pcshiftx:=sb/2;
-numeric alpha; alpha:=w/8;
-pickup quill;
-lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2;
-x11=lft x1+alpha/2; y11=top y1-0.5thin;
-x12=rt x2; y12=bot y1+0.5thin;
-draw_triangle(11,alpha);
-draw_rutriangle(12,alpha);
-pickup thickstylus;
-lft x21=pcshiftx; rt x22=w-pcshiftx; y21=y22=y1;
-draw z21--z22;
-penlabels(1,2);
-endchar; % end of "---"
-
-% \end{macrocode}
-% \end{routine}
-%
-%
-% \begin{routine}{&}
-% The ampersand (which is really an `et' ligature).
-% \begin{macrocode}
-
-cmchar "IMAJ ampersand";
-beginchar("&", 2sb#+hstretch*(6/3x_height#), asc_height#, 0);
-adjust_fit(0,0);
-numeric n[];
-path pth[];
-pcshiftx:=sb;
-pickup quill;
-n10 := w-2pcshiftx; % width of character
-%% crossbar
-z1'=(0,h/ascratio);
-rt x2=w-pcshiftx; y2=y1';
-%% main bowl
-n1 := 4/6n10; % width of bowl
-n2 := h; % height of bowl
-z3=(pcshiftx,0);
-obowl(3, n1, n2);
-z2'=(x3obc,y1');
-z1 = (z1'--z2') intersectionpoint obinner;
-z10o = (z2'--z2) intersectionpoint obouter;
-z10i = (z2'--z2) intersectionpoint obinner;
-%% wave
-x4=x2; bot y4=0;
-pth1 := z1{right}..z4{right};
-%% wave/bowl
-z20o = pth1 intersectionpoint subpath (0,2) of obouter;
-z20i = pth1 intersectionpoint subpath (0,2) of obinner;
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-fill z10o..z3minlo{-pdir}..z3maxlo{-ppdir}..z3minro{pdir}..z20o--
- z20i..z3minri{-pdir}..z3maxli{ppdir}..z3minli{pdir}..z10i--
- cycle;
-draw z1--z2; % bar
-draw pth1; % wave
-ductus:=false;
-penlabels(1,2,3,4,5,6,7,8,9,10,16,17,18,31,32,33);
-endchar; % end of "&"
-
-% \end{macrocode}
-% \end{routine}
-%
-%
-% The end of this file.
-% \begin{macrocode}
-%</lig>
-% \end{macrocode}
-%
-% \subsection{The digits file}
-%
-% These are arabic digits in the style of the book-hand. They are a
-% modern invention.
-%
-% \begin{macrocode}
-%<*dig>
-% IMAJDIG.MF Program file for Insular Majuscule digits
-%
-
-% \end{macrocode}
-%
-%
-% \begin{routine}{1}
-% The digit `1'.
-% \begin{macrocode}
-cmchar "IMAJ digit 1";
-beginchar("1", 2sb#+fig_width#, fig_height#, 0);
-adjust_fit(0,0);
-pcshiftx := sb;
-pickup quill;
-x1=x2=w/2;
-y1=h; bot y2=0;
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-draw_tstem(1,2,srad);
-draw_triserif(1,trijut);
-ductus:=false;
-penlabels(1,2,100);
-endchar; % end "1"
-
-% \end{macrocode}
-% \end{routine}
-%
-%
-% \begin{routine}{2}
-% The digit `2'.
-% \begin{macrocode}
-cmchar "IMAJ digit 2";
-beginchar("2", 2sb#+fig_width#, fig_height#, 0);
-adjust_fit(0,0);
-pcshiftx := sb;
-pickup quill;
-%% stem
-lft x1=pcshiftx+o; top y1=h-2thin;
-x2=1/2w; top y2= h+o;
-rt x3=w-pcshiftx-o; y3=3/4h;
-%% foot
-lft x5=pcshiftx; bot y5=0;
-rt x6=w-pcshiftx; y6=y5;
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-draw z1..z2{right}..z3{down}..{down}z5; % curve
-draw z5--z6; % foot
-draw_utriangle(6,thick);
-ductus:=false;
-penlabels(1,2,3,4,5,6,100);
-endchar; % end "2"
-
-% \end{macrocode}
-% \end{routine}
-%
-%
-% \begin{routine}{3}
-% The digit `3'.
-% \begin{macrocode}
-cmchar "IMAJ digit 3";
-beginchar("3", 2sb#+fig_width#, fig_height#, 0);
-adjust_fit(0,0);
-pcshiftx := sb;
-pickup quill;
-%% x values
-lft x3=pcshiftx; x10=x3;
-rt x5=w-pcshiftx; x8=x5-3thin;
-x4=0.5[x3,x5];
-x9=0.5[x10,x8];
-lft x6=pcshiftx+3thin; x7=x6;
-%% y values
-bot y3=thin; top y10=h-2thin;
-y6=0.5[y3,y10]; y7=y6;
-bot y4=-thin; top y9=h+thin;
-y5=0.5[y3,y6];
-y8=11/12[y7,y10];
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-draw z3..z4{right}..z5{up}...{-pdir}z6; % bottom bowl
-draw z7{pdir}...z8{up}..z9{left}..z10; % top bowl
-ductus:=false;
-penlabels(1,2,3,4,5,6,7,8,9,10,100);
-endchar; % end "3"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{4}
-% The digit `4'.
-% \begin{macrocode}
-cmchar "IMAJ digit 4";
-beginchar("4", 2sb#+fig_width#, fig_height#, 0);
-adjust_fit(0,0);
-pcshiftx := sb;
-pickup quill;
-%% the stem
-x1=x2=w-pcshiftx-jut;
-y1=h; bot y2=0;
-%% the crossbar
-lft x3=pcshiftx; y3=0.33h;
-rt x4=w-pcshiftx; y4=y3;
-%% the diagonal
-lft x5=pcshiftx+jut; y5=h;
-x6=x5; y6=y4;
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-draw_tstem(1,2,srad); % main stem
-%%draw_clubbase(1, 2, 1/3, 0, clubjut);
-draw z3--z4; % crossbar
-draw z3{(1,1)}..{(1,1)}z1; % diagonal
-ductus:=false;
-penlabels(1,2,3,4,100);
-endchar; % end "4"
-
-% \end{macrocode}
-% \end{routine}
-%
-%
-%
-% \begin{routine}{5}
-% The digit `5'.
-% \begin{macrocode}
-cmchar "IMAJ digit 5";
-beginchar("5", 2sb#+fig_width#, fig_height#, 0);
-adjust_fit(0,0);
-numeric n[];
-pcshiftx := sb;
-pickup quill;
-%% for the top
-rt x1=w-pcshiftx; top y1=h;
-lft x2=pcshiftx; y2=y1;
-z2'=(lft x2, top y2); z2''=(rt x2, y2');
-z0'=(x2', 0); z0''=(x2'', 0);
-%% bowl
-n1 := w-2pcshiftx+4/3thick; % width of bowl
-n2 := 2/3h; % height of bowl
-z3=(w-pcshiftx-n1, 0);
-obowl(3, n1, n2);
-z10o = (z2''--z0'') intersectionpoint subpath (3,4) of obouter;
-z10i = (z2'--z0') intersectionpoint subpath (3,4) of obinner;
-z10'=(x10i,y10o);
-z20o = (z2'--z0') intersectionpoint subpath (2,3) of obouter;
-z20i = (z2'--z0') intersectionpoint subpath (2,3) of obinner;
-%%ductus:=true;
-if ductus:
- pickup stylus;
- draw z2--z1; draw z2'--z0'; draw z2''--z0'';
- draw obouter; draw obinner;
-else:
- draw z2--z1; % top bar
- draw_triangle(1,thick);
- fill z2'--z10i--z10o--z2''--cycle; % stem
- fill z10o..z3minlo{pdir}..z3maxro{-ppdir}..z3minro{-pdir}..z20o--
- z20i..z3minri{pdir}..z3maxri{ppdir}..z3minli{-pdir}..z10i--
- z10'--cycle;
-fi
-ductus:=false;
-penlabels(1,2,3,4,5,6,7,100);
-endchar; % end "5"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{6}
-% The digit `6'.
-% \begin{macrocode}
-cmchar "IMAJ digit 6";
-beginchar("6", 2sb#+fig_width#, fig_height#, 0);
-adjust_fit(0,0);
-numeric n[];
-path pth[];
-pcshiftx := sb;
-pickup quill;
-n1 := w-2pcshiftx; % width of character
-n2 := h; % height of character
-%% main bowl
-z3=(w-pcshiftx-n1,0);
-obowl(3, n1, n2);
-pth1 := obouter; pth2 := obinner;
-z0 = (0,0); z0'=(w,h);
-z10o' = (z0--z0') intersectionpoint subpath (0,1) of pth1;
-z10i' = (z0--z0') intersectionpoint subpath (0,1) of pth2;
-n0 := w-pcshiftx-x10o';
-z10o=(x10o'+n0, y10o');
-z10i=(x10i'+n0, y10i');
-%% bottom bowl
-n3 := 16/12n2; % width
-n4 := 2/3n2; % height
-z13=(w-pcshiftx-n3, 0);
-obowl(13, n3, n4);
-pth11 := obouter; pth12 := obinner;
-z20o = subpath (2,4) of pth2 intersectionpoint
- (subpath (3,4) of pth11 & subpath (0,1) of pth11);
-z20i = subpath (2,4) of pth2 intersectionpoint
- (subpath (3,4) of pth12 & subpath (0,1) of pth12);
-%%ductus:=true;
-if ductus:
- pickup stylus;
- draw subpath (2,4) of pth2;
- draw (subpath (3,4) of pth11 & subpath (0,1) of pth11);
- draw (subpath (3,4) of pth12 & subpath (0,1) of pth12);
-else:
- fill z10o..z3minlo{-pdir}..z3maxlo{-ppdir}..z3minro{pdir}..
- z13maxro{ppdir}..{-pdir}z20o--z20i{pdir}..z13maxri{-ppdir}..
- z3minri{-pdir}..z3maxli{ppdir}..z3minli{pdir}..z10i--
- cycle;
-fi
-ductus:=false;
-penlabels(1,2,3,4,5,6,8,100);
-endchar; % end "6"
-
-% \end{macrocode}
-% \end{routine}
-%
-%
-% \begin{routine}{7}
-% The digit `7'.
-% \begin{macrocode}
-cmchar "IMAJ digit 7";
-beginchar("7", 2sb#+fig_width#, fig_height#, 0);
-adjust_fit(0,0);
-pcshiftx := sb;
-pickup quill;
-%% top bar
-lft x1=pcshiftx;
-rt x2=w-pcshiftx;
-top y1=top y2=h;
-x8=pcshiftx+3/8jut; y8=h-0.5thin;
-%% bowed leg
-x4=w/2; bot y4=0;
-x3=0.5[x2,x4]-3thin; y3=0.5[y2,y4];
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-draw z1--z2; % top bar
-draw_triangle(1,thick);
-draw z2..z3..z4; % leg
-ductus:=false;
-penlabels(1,2,3,4,5,6,7,8,100);
-endchar; % end "7"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{8}
-% The digit `8'.
-% \begin{macrocode}
-cmchar "IMAJ digit 8";
-beginchar("8", 2sb#+fig_width#, fig_height#, 0);
-adjust_fit(0,0);
-pcshiftx := sb;
-numeric alpha; alpha:=1;
-pickup quill;
-lft x1=alpha*pcshiftx+o; rt x3=w-alpha*pcshiftx-o; y1=y3=3/4h;
-x2=x4=w/2; top y2=h+o; bot y4=-o;
-x5=x2; y5=h/2+2o;
-lft x11=pcshiftx; rt x13=w-pcshiftx; y11=y13=1/4h;
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-draw z1..z2..z3..z5..z11..z4..z13..z5..cycle;
-ductus:=false;
-penlabels(1,2,3,4,5,11,13,100);
-endchar; % end "8"
-
-% \end{macrocode}
-% \end{routine}
-%
-% \begin{routine}{9}
-% The digit `9'.
-% \begin{macrocode}
-cmchar "IMAJ digit 9";
-beginchar("9", 2sb#+fig_width#, fig_height#, 0);
-adjust_fit(0,0);
-numeric n[];
-path pth[];
-pcshiftx := sb;
-pickup quill;
-n1 := w-2pcshiftx; % width of character
-n2 := h; % height of character
-%% main bowl
-z3=(w-pcshiftx-n1,0);
-obowl(3, n1, n2);
-pth1 := obouter; pth2 := obinner;
-z0=(0,0); z0'=(w,h);
-z20o' = (z0--z0') intersectionpoint subpath (2,3) of pth1;
-z20i' = (z0--z0') intersectionpoint subpath (2,3) of pth2;
-n0 := x20o'-pcshiftx;
-z20o=(x20o'-n0, y20o');
-z20i=(x20i'-n0, y20i');
-%% bottom bowl
-n3 := 16/12n2; % width
-n4 := 2/3n2; % height
-z13=(pcshiftx,h-n4);
-obowl(13, n3, n4);
-pth11 := obouter; pth12 := obinner;
-z10o = subpath (0,2) of pth2 intersectionpoint subpath (1,3) of pth11;
-z10i = subpath (0,2) of pth2 intersectionpoint subpath (1,3) of pth12;
-%%ductus:=true;
-if ductus:
- pickup stylus;
- draw subpath (0,2) of pth2;
- draw subpath (1,3) of pth11;
- draw subpath (1,3) of pth12;
-else:
- fill z20o..z3minro{pdir}..z3maxro{ppdir}..z3minlo{-pdir}..
- z13maxlo{-ppdir}..{pdir}z10o--z10i{-pdir}..z13maxli{ppdir}..
- z3minli{pdir}..z3maxri{-ppdir}..z3minri{-pdir}..z20i--
- cycle;
-fi
-ductus:=false;
-penlabels(1,2,3,4,5,6,100);
-endchar; % end "9"
-
-% \end{macrocode}
-% \end{routine}
-%
-%
-% \begin{routine}{0}
-% The digit `0'.
-% \begin{macrocode}
-cmchar "Uncial digit 0";
-beginchar("0", 2sb#+fig_width#, fig_height#, 0);
-adjust_fit(0,0);
-numeric n[];
-pcshiftx := sb;
-pickup quill;
-n1 := w-2pcshiftx; % bowl width
-n2 := h+2o; % bowl height
-z1=(pcshiftx,-o);
-obowl(1, n1, n2);
-%%ductus:=true;
-if ductus:
- pickup stylus;
-fi
-fill obouter; unfill obinner;
-ductus:=false;
-%%%proofpcbb(100, y100, y100);
-penlabels(1,2,3,4,100);
-endchar; % end "0"
-
-% \end{macrocode}
-% \end{routine}
-%
-%
-%
-%
-% The end of this file.
-% \begin{macrocode}
-%</dig>
-% \end{macrocode}
-%
-% \section{The font definition files} \label{sec:fd}
-%
-% The font comes in normal and bold weights only.
-%
-% \begin{macrocode}
-%<*fdot1>
-\DeclareFontFamily{OT1}{imaj}{}
- \DeclareFontShape{OT1}{imaj}{m}{n}{ <-8.5> imaj7 <8.5-15> imaj10 <15-> imaj17 }{}
- \DeclareFontShape{OT1}{imaj}{m}{sl}{ <-> sub * imaj/m/n }{}
- \DeclareFontShape{OT1}{imaj}{m}{it}{ <-> sub * imaj/m/n }{}
- \DeclareFontShape{OT1}{imaj}{m}{sc}{ <-> sub * imaj/m/n }{}
- \DeclareFontShape{OT1}{imaj}{m}{u}{ <-> sub * imaj/m/n }{}
- \DeclareFontShape{OT1}{imaj}{bx}{n}{ <-8.5> imajb7 <8.5-15> imajb10 <15-> imajb17 }{}
- \DeclareFontShape{OT1}{imaj}{bx}{it}{ <-> sub * imaj/bx/n }{}
- \DeclareFontShape{OT1}{imaj}{bx}{sl}{ <-> sub * imaj/bx/n }{}
- \DeclareFontShape{OT1}{imaj}{b}{n}{ <-> sub * imaj/bx/n }{}
-%</fdot1>
-% \end{macrocode}
-%
-%
-% \begin{macrocode}
-%<*fdt1>
-\DeclareFontFamily{T1}{imaj}{}
- \DeclareFontShape{T1}{imaj}{m}{n}{ <-8.5> imaj7 <8.5-15> imaj10 <15-> imaj17 }{}
- \DeclareFontShape{T1}{imaj}{m}{sl}{ <-> sub * imaj/m/n }{}
- \DeclareFontShape{T1}{imaj}{m}{it}{ <-> sub * imaj/m/n }{}
- \DeclareFontShape{T1}{imaj}{m}{sc}{ <-> sub * imaj/m/n }{}
- \DeclareFontShape{T1}{imaj}{m}{u}{ <-> sub * imaj/m/n }{}
- \DeclareFontShape{T1}{imaj}{bx}{n}{ <-8.5> imajb7 <8.5-15> imajb10 <15-> imajb17 }{}
- \DeclareFontShape{T1}{imaj}{bx}{it}{ <-> sub * imaj/bx/n }{}
- \DeclareFontShape{T1}{imaj}{bx}{sl}{ <-> sub * imaj/bx/n }{}
- \DeclareFontShape{T1}{imaj}{b}{n}{ <-> sub * imaj/bx/n }{}
-%</fdt1>
-% \end{macrocode}
-%
-% \section{The package code} \label{sec:code}
-%
-% \subsection{The \Lpack{inslrmaj} package}
-%
-% The \Lpack{inslrmaj} 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{inslrmaj}[1999/05/22 v1.0 package for Insular Majuscule 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}{\imajfamily}
-% Selects the \thisfont{} font family in the OT1 or T1 encoding.
-% \begin{macrocode}
-\ifx\Tienc\encodingdefault
- \newcommand{\imajfamily}{\usefont{T1}{imaj}{m}{n}}
-\else
- \newcommand{\imajfamily}{\usefont{OT1}{imaj}{m}{n}}
-\fi
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\textimaj}
-% Text command for the \thisfont{} font family.
-% \begin{macrocode}
-\DeclareTextFontCommand{\textimaj}{\imajfamily}
-% \end{macrocode}
-% \end{macro}
-%
-% The end of this package.
-% \begin{macrocode}
-%</usc>
-% \end{macrocode}
-%
-% \subsection{The \Lpack{allimaj} package}
-%
-% The \Lpack{allimaj} package is intended for use when the entire document
-% will be typeset in the book-hand. This is a minimal package. Because the
-% book-hand should not contain arabic digits a fuller package would redefine
-% anything numbered in \LaTeX{} to use roman instead of arabic numbering.
-% Also, because of the large |\baselineskip| many other aspects of \LaTeX{}
-% to do with vertical positioning should also be redefined.
-%
-%
-% Announce the name and version of the package, which requires
-% \LaTeXe{}. It also uses the \Lpack{inslrmaj} package.
-% \begin{macrocode}
-%<*uscall>
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{allimaj}[1999/05/22 v1.0 package for all Insular Majuscule fonts]
-\RequirePackage{inslrmaj}
-% \end{macrocode}
-%
-% \begin{macro}{\Tienc}
-% A macro for testing the value of |\encodingdefault|.
-% \begin{macrocode}
-\providecommand{\Tienc}{T1}
-% \end{macrocode}
-% \end{macro}
-%
-% Redefine the default fonts to be \thisfont, which has only one family
-% member.
-% \begin{macro}{\rmdefault}
-% \begin{macro}{\sfdefault}
-% \begin{macro}{\ttdefault}
-% \begin{macrocode}
-\renewcommand{\rmdefault}{imaj}
-\renewcommand{\sfdefault}{imaj}
-\renewcommand{\ttdefault}{imaj}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% The `leading' in the book-hands is a function of the |x-height|, which is
-% normally much
-% greater than for the CMR fonts. I have borrowed code from Frank Jensen's
-% \Lpack{beton} package~\cite{BETON} to do this. The |x-height| (in points)
-% for the CMR
-% fonts is given in Table~\ref{tab:cmrx}. Note that the CMR design sizes are
-% 5--10, 12, and 17.28 points. The other values given are scaled from these
-% figures.
-%
-% \begin{table}
-% \centering
-% \caption{The x heights of the CMR and \thisfont{} fonts} \label{tab:cmrx}
-% \begin{tabular}{ccc} \hline
-% Design & CMR & \thisfont \\
-% Size & X Height & X Height \\ \hline
-% 5 & 2.14 & 3.00 \\ ^^A CMR skip = 6pt = 2.8 times
-% 6 & 2.58 & 3.61 \\ ^^A CMR skip = 7pt = 2.7 times
-% 7 & 3.00 & 4.20 \\ ^^A CMR skip = 8pt = 2.7 times
-% 8 & 3.44 & 4.81 \\ ^^A CMR skip = 9.5pt = 2.8 times
-% 9 & 3.86 & 5.40 \\ ^^A CMR skip = 11pt = 2.8 times
-% 10 & 4.31 & 6.03 \\ ^^A CMR skip = 12pt = 2.8 times
-% 11 & 4.74 & 6.64 \\ ^^A CMR skip = 13.6pt = 2.8 times
-% 12 & 5.17 & 7.24 \\ ^^A CMR skip = 14.5pt = 2.8 times
-% 14 & 6.03 & 8.44 \\ ^^A CMR skip = 18pt = 3.0 times
-% 17 & 7.44 & 10.41 \\ ^^A CMR skip = 22pt = 3.0 times
-% 20 & 8.75 & 12.25 \\ ^^A CMR skip = 25pt = 2.9 times
-% 25 & 10.94 & 15.32 \\ ^^A CMR skip = 30pt = 2.7 times
-% \hline
-% \end{tabular}
-% \end{table}
-%
-% \begin{macro}{\imaj@baselineskip@table}
-% A table of the normal font sizes and the corresponding baselineskip.
-% The distance between baselines for \thisfont{} is over twice
-% the |x-height|. ^^A actually 2.5 times to nearest half point
-%
-% \begin{macrocode}
-\newcommand{\imaj@baselineskip@table}{%
- <\@vpt>7.5%
- <\@vipt>9.0%
- <\@viipt>10.5%
- <\@viiipt>12.0%
- <\@ixpt>13.5%
- <\@xpt>15.0%
- <\@xipt>16.5%
- <\@xiipt>18.0%
- <\@xivpt>21.0%
- <\@xviipt>26.0%
- <\@xxpt>30.5%
- <\@xxvpt>38.5}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\imaj@new@setfontsize}
-% This is a macro that replaces the |\@setfontsize| macro which is called by
-% the font size changing commands.
-% \begin{macrocode}
-\newcommand{\imaj@new@setfontsize}[3]{%
- \edef\@tempa{\def\noexpand\@tempb####1<#2}%
- \@tempa>##2<##3\@nil{\def\imaj@baselineskip@value{##2}}%
- \edef\@tempa{\noexpand\@tempb\imaj@baselineskip@table<#2}%
- \@tempa><\@nil
- \ifx\imaj@baselineskip@value\@empty
- \def\imaj@baselineskip@value{#3}%
- \fi
- \imaj@old@setfontsize{#1}{#2}\imaj@baselineskip@value}
-% \end{macrocode}
-% \end{macro}
-%
-% We had better give an author a means of using The Computer Modern fonts
-% if necessary.
-%
-% \begin{macro}{\cmrfamily}
-% \begin{macro}{\cmssfamily}
-% \begin{macro}{\cmttfamily}
-% These macros select the Computer Modern Roman, Sans, and Typewriter
-% font families in either the T1 or OT1 encodings.
-% \begin{macrocode}
-\ifx\Tienc\encodingdefault
- \providecommand{\cmrfamily}{\usefont{T1}{cmr}{m}{n}}
- \providecommand{\cmssfamily}{\usefont{T1}{cmss}{m}{n}}
- \providecommand{\cmttfamily}{\usefont{T1}{cmtt}{m}{n}}
-\else
- \providecommand{\cmrfamily}{\usefont{OT1}{cmr}{m}{n}}
- \providecommand{\cmssfamily}{\usefont{OT1}{cmss}{m}{n}}
- \providecommand{\cmttfamily}{\usefont{OT1}{cmtt}{m}{n}}
-\fi
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\textcmr}
-% Text command for the Computer Modern Roman font family.
-% \begin{macrocode}
-\DeclareTextFontCommand{\textcmr}{\cmrfamily}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\textcmss}
-% Text command for the Computer Modern Sans font family.
-% \begin{macrocode}
-\DeclareTextFontCommand{\textcmss}{\cmssfamily}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\textcmtt}
-% Text command for the Computer Modern Typewriter font family.
-% \begin{macrocode}
-\DeclareTextFontCommand{\textcmtt}{\cmttfamily}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% At the start of the document, change the |\@setfontsize| macro and call
-% the normal font to implement the change.
-% \begin{macrocode}
-\AtBeginDocument{%
- \let\imaj@old@setfontsize=\@setfontsize
- \let\@setfontsize=\imaj@new@setfontsize}
-\AtBeginDocument{\normalsize}
-% \end{macrocode}
-%
-%
-% The end of this package.
-% \begin{macrocode}
-%</uscall>
-% \end{macrocode}
-%
-%
-%
-%
-%
-% \Finale
-% \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 \~}
-
-
diff --git a/Master/texmf-dist/source/latex/bookhands/inslrmaj/inslrmaj.ins b/Master/texmf-dist/source/latex/bookhands/inslrmaj/inslrmaj.ins
deleted file mode 100644
index 7860d41ef11..00000000000
--- a/Master/texmf-dist/source/latex/bookhands/inslrmaj/inslrmaj.ins
+++ /dev/null
@@ -1,101 +0,0 @@
-%%
-%% inslrmaj.ins
-%% Copyright 1999 Peter R. Wilson
-%%
-%% This program is provided under the terms of the
-%% LaTeX Project Public License distributed from CTAN
-%% archives in directory macros/latex/base/lppl.txt.
-%%
-%% Author: Peter Wilson (CUA)
-%% now at: peter.r.wilson@boeing.com
-%%
-%% This file will generate fast loadable files and documentation
-%% driver files from the doc files in this package when run through
-%% LaTeX or TeX.
-%%
-%% --------------- start of docstrip commands ------------------
-%%
-\def\batchfile{inslrmaj.ins}
-\input docstrip.tex
-\preamble
-
- Copyright 1999 Peter R. Wilson
-
- This program is provided under the terms of the
- LaTeX Project Public License distributed from CTAN
- archives in directory macros/latex/base/lppl.txt.
-
-Author: Peter Wilson (CUA)
- now at: peter.r.wilson@boeing.com
-
-\endpreamble
-
-\keepsilent
-
-%%% \Msg{*** Generating the driver file ***}
-%%% \generateFile{inslrmaj.drv}{t}{\from{inslrmaj.dtx}{driver}}
-
-\Msg{*** Generating the Metafont files ***}
-
-\usepostamble\empty
-\generateFile{imaj7.mf}{t}{\from{inslrmaj.dtx}{base7}}
-\generateFile{imaj10.mf}{t}{\from{inslrmaj.dtx}{base10}}
-\generateFile{imaj17.mf}{t}{\from{inslrmaj.dtx}{base17}}
-\generateFile{imajb7.mf}{t}{\from{inslrmaj.dtx}{base7b}}
-\generateFile{imajb10.mf}{t}{\from{inslrmaj.dtx}{base10b}}
-\generateFile{imajb17.mf}{t}{\from{inslrmaj.dtx}{base17b}}
-\generateFile{imajl.mf}{t}{\from{inslrmaj.dtx}{min}}
-\generateFile{imaju.mf}{t}{\from{inslrmaj.dtx}{maj}}
-\generateFile{imajtitle.mf}{t}{\from{inslrmaj.dtx}{mfd}}
-\generateFile{imajpunct.mf}{t}{\from{inslrmaj.dtx}{punct}}
-\generateFile{imajlig.mf}{t}{\from{inslrmaj.dtx}{lig}}
-\generateFile{imajdig.mf}{t}{\from{inslrmaj.dtx}{dig}}
-
-\Msg{*** Generating the Font Definition files ***}
-\usepostamble\defaultpostamble
-
-\generateFile{ot1imaj.fd}{t}{\from{inslrmaj.dtx}{fdot1}}
-\generateFile{t1imaj.fd}{t}{\from{inslrmaj.dtx}{fdt1}}
-
-\Msg{*** Generating the LaTeX2e package files ***}
-
-\generateFile{inslrmaj.sty}{t}{\from{inslrmaj.dtx}{usc}}
-\generateFile{allimaj.sty}{t}{\from{inslrmaj.dtx}{uscall}}
-
-\Msg{***********************************************************}
-\Msg{*}
-\Msg{* To finish the installation you have to move the following}
-\Msg{* files into directories searched by TeX:}
-\Msg{*}
-\Msg{* Move these into the font source area:}
-\Msg{* \space\space imaj7.mf}
-\Msg{* \space\space imaj10.mf}
-\Msg{* \space\space imaj17.mf}
-\Msg{* \space\space imajb7.mf}
-\Msg{* \space\space imajb10.mf}
-\Msg{* \space\space imajb17.mf}
-\Msg{* \space\space imajl.mf}
-\Msg{* \space\space imaju.mf}
-\Msg{* \space\space imajtitle.mf}
-\Msg{* \space\space imajpunct.mf}
-\Msg{* \space\space imajlig.mf}
-\Msg{* \space\space imajdig.mf}
-\Msg{*}
-\Msg{* Move these into the LaTeX macro area:}
-\Msg{* \space\space ot1imaj.fd}
-\Msg{* \space\space t1imaj.fd}
-\Msg{* \space\space inslrmaj.sty}
-\Msg{* \space\space allimaj.sty}
-\Msg{*}
-\Msg{*}
-\Msg{* To produce the documentation run the files ending with}
-\Msg{* `.dtx' through LaTeX.}
-\Msg{* Process any name.idx file by:}
-\Msg{* \space\space\space\space makeindex -s gind.ist name}
-\Msg{* Process any name.glo file by:}
-\Msg{* \space\space\space\space makeindex -s gglo.ist -o name.gls name.glo}
-\Msg{*}
-\Msg{* Happy TeXing}
-\Msg{***********************************************************}
-
-\endinput