diff options
author | Karl Berry <karl@freefriends.org> | 2011-04-08 16:43:45 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2011-04-08 16:43:45 +0000 |
commit | 9631a619eb83ca16233a8c5a5d22b2549de79f6d (patch) | |
tree | b0c7a8f2567433f0a39084446ebcd214fd89d4c5 /Master/texmf-dist/source/latex/bookhands/inslrmaj | |
parent | 07f021d3cb17d27409f0a57a18e06f7ceb4fba39 (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.dtx | 4809 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/bookhands/inslrmaj/inslrmaj.ins | 101 |
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 |