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/pgothic | |
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/pgothic')
-rw-r--r-- | Master/texmf-dist/source/latex/bookhands/pgothic/pgothic.dtx | 5484 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/bookhands/pgothic/pgothic.ins | 101 |
2 files changed, 0 insertions, 5585 deletions
diff --git a/Master/texmf-dist/source/latex/bookhands/pgothic/pgothic.dtx b/Master/texmf-dist/source/latex/bookhands/pgothic/pgothic.dtx deleted file mode 100644 index 5e9a6e3bb38..00000000000 --- a/Master/texmf-dist/source/latex/bookhands/pgothic/pgothic.dtx +++ /dev/null @@ -1,5484 +0,0 @@ -% \iffalse meta-comment -% -% pgothic.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 -%% comment out the next line to show the code -\OnlyDescription -\setcounter{StandardModuleDepth}{1} -\begin{document} - \DocInput{pgothic.dtx} -\end{document} -%</driver> -% -% \fi -% -% \CheckSum{134} -% -% \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}{2002/12/30}{First public release} -% -% \def\fileversion{v1.0} -% \def\filedate{2002/12/30} -% \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}{Gothic Textura Prescius} -% -% \title{The \Lpack{Gothic Textura Prescius} 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{pgothic} and \Lpack{allpgoth} packages provide a set of -% Metafont \thisfont{} book-hands -% as used -% for manuscripts in the 13th century onwards. This is one in a series -% of manuscript fonts. -% \end{abstract} -% \tableofcontents -% \listoftables -% -% -% -% -% \section{Introduction} -% -% The \Lpack{pgothic} and \Lpack{allpgoth} packages provide a Metafont~\cite{METAFONT} version -% of the \thisfont{} manuscript book-hand that was in use from about the -% thirteenth century~\AD{} onwards. 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 Textura Quadrata script 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} -% -% With the Gothic hands, used from the thirteenth century, the attention of -% the scribes moved from the individual letter to the word. The scripts -% changed to accomodate this interest so the appearance of the letters -% became subordinate to the overall appearance of the words they formed. -% Many of the letters appear to be indistinguishable today but the contemporary -% reading public seemed to have no difficulty. -% -% It was during the heyday of the Gothic scripts that separate capital -% letters were introduced. Also, as a small concession to legibility, -% the lowecase `i' acquired a small mark above it. Ligatures were similar -% to those in Early Gothic. The letter `w' was added to the hand early on -% and `j' started to appear after 1400, providing the full 26 letter alphabet -% for the first time. -% -% The Gothic Textura Prescius is a version of the Gothic scripts that was -% popular in England. Caxton used it as the basis for his printing types. -% -% \section{The \Lpack{pgothic} and \Lpack{allpgoth} packages} \label{sec:usc} -% -% The \thisfont{} font family is called |pgoth|. The font is supplied in both -% OT1 and T1 encodings. -% -% \subsection{The \Lpack{pgothic} 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{\pgothfamily} -% The |\pgothfamily| 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{\textpgoth} -% The command |\textpgoth{|\meta{text}|}| will typeset \meta{text} using the -% \thisfont{} fonts. -% -% \subsection{The \Lpack{allpgoth} 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{allpgoth} package automatically loads the \Lpack{pgothic} 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>%%% PGOTH7.MF Gothic Textura Prescius at 7 point design size. -%<base10>%%% PGOTH10.MF Gothic Textura Prescius at 10 point design size. -%<base17>%%% PGOTH17.MF Gothic Textura Prescius at 17 point design size. -%<base7b>%%% PGOTHB7.MF Gothic Textura Prescius Bold at 7 point design size. -%<base10b>%%% PGOTHB10.MF Gothic Textura Prescius Bold at 10 point design size. -%<base17b>%%% PGOTHB17.MF Gothic Textura Prescius 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:="PGOTH"; font_size 7pt#; -%<base10>font_identifier:="PGOTH"; font_size 10pt#; -%<base17>font_identifier:="PGOTH"; font_size 17.28pt#; -%<base7b>font_identifier:="PGOTHB"; font_size 7pt#; -%<base10b>font_identifier:="PGOTHB"; font_size 10pt#; -%<base17b>font_identifier:="PGOTHB"; 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. -% (the ratio for CMR10 is 1.59). -% \begin{macrocode} - caprat:=7/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. We don't really -% need to change this for bold fonts as the letter width is in terms -% of the pen, not the x-height. -% -% \begin{macrocode} -%<base7|base10|base17> bfudge:=1.0; -%<base7b|base10b|base17b> bfudge:=1.0; %% normally 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 gothic 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.3; - -% \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. -% Normally this is |1/2u| but reduce it by 1/2 for the Gothic. -% \begin{macrocode} -%<base7|base7b> sb#:=1/4u#; % unit for side bearings -%<base10|base10b> sb#:=1/4u#; % unit for side bearings -%<base17|base17b> sb#:=1/4u#; % unit for side bearings - -% \end{macrocode} -% -% \DescribeVariable{cap_sb} -% A length used for adjusting the side bearings of uppercase characters. -% \begin{macrocode} -%<base7|base7b> cap_sb#:=2sb#; % unit for uppercase side bearings -%<base10|base10b> cap_sb#:=2sb#; % unit for uppercase side bearings -%<base17|base17b> cap_sb#:=2sb#; % unit for uppercase 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:=45; % pen angle -% \end{macrocode} -% -% \DescribeVariable{stem_width} -% The width of a vertical stem. -% \begin{macrocode} -stem_width#:= thick#*(cosd pangle); -% \end{macrocode} -% -% \DescribeVariable{perpdec} -% \DescribeVariable{angdec} -% The perpendicular shift between pairs of thin decorative lines in capitals -% is |perpdec| and between angled lines is |angdec|. -% \begin{macrocode} -perpdec#:= 3thin#; -angdec#:= perpdec#/(cosd pangle); -% \end{macrocode} -% -% -% \DescribeVariable{ascratio} -% The height of lower case ascenders wrt |x_height|. -% \begin{macrocode} - ascratio:=5/4; -% \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:=2/4; -% \end{macrocode} -% -% \DescribeVariable{desc_depth} -% The depth of lower case descenders. -% \begin{macrocode} - desc_depth#:=descratio*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.8; % was 0.5 -% \end{macrocode} -% -% \DescribeVariable{trijut} -% The lowercase triangular serif protrusion. -% \begin{macrocode} -trijut#:=0.75jutstretch*thick#; -% \end{macrocode} -% -% \DescribeVariable{clubjutfudge} -% The fractional protusion of a club serif. -% \begin{macrocode} -clubjutfudge:=1/2; -% \end{macrocode} -% -% \DescribeVariable{clubjut} -% The lowercase club serif protrusion. -% \begin{macrocode} -clubjut#:=jutstretch*clubjutfudge*thick#; -% \end{macrocode} -% -% \DescribeVariable{wided} -% \DescribeVariable{widedmin} -% Default juts of wide (touching) diamonds. -% \begin{macrocode} -wided:= 0.75; -widedmin := 1.05 - wided; -% \end{macrocode} -% -% \DescribeVariable{narrowd} -% \DescribeVariable{narrowdmin} -% Default juts of narrow (non-touching) diamonds. -% \begin{macrocode} -narrowd:= 0.5; -narrowdmin := 0.7 - narrowd; -% \end{macrocode} -% -% \DescribeVariable{diawd} -% \DescribeVariable{diang} -% Default width and angle of diamonds. -% \begin{macrocode} -diawd := 1.0; -diang := 30; -% \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*(4+wided+widedmin)*stem_width#; -% \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. \\ -% 5 degrees = 9/100; 10 degrees = 11/50. -% \begin{macrocode} -slant:=0; % tilt ratio $(\Delta x/\Delta y)$ -%%%%%%slant:= sind 10/cosd 10; %% 10 degree slant - -% \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#:=5/4dot_size#; - -% \end{macrocode} -% -% Finally, call the driver file for the font. -% \begin{macrocode} -generate pgothtitle %% 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 PGOTHTITLE.MF for the Gothic Textura Prescius 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}{pgothic_font_setup} -% This macro contains the set up for the \thisfont{} fonts. -% \begin{macrocode} - -def pgothic_font_setup= % contains special stuff for pgothic 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,clubjut,cap_jut,trijut); - define_pixels(fig_width); - define_whole_pixels(letter_fit,sb,cap_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); - define_pixels(stem_width); - define_pixels(perpdec,angdec); - 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; - -% \end{macrocode} -% -% \DescribeVariable{threequarterquill} -% A pen with 3/4 of the width as quill (but with the same thinness). -% \begin{macrocode} - pickup pencircle xscaled 3/4thick yscaled thin rotated pangle; - threequarterquill := savepen; - -% \end{macrocode} -% -% \DescribeVariable{halfquill} -% A pen with 1/2 of the width as quill (but with the same thinness). -% \begin{macrocode} - pickup pencircle xscaled 1/2thick yscaled thin rotated pangle; - halfquill := savepen; - -% \end{macrocode} -% -% \DescribeVariable{quarterquill} -% A pen with 1/4 of the width as quill (but with the same thinness). -% \begin{macrocode} - pickup pencircle xscaled 1/4thick yscaled thin rotated pangle; - quarterquill := savepen; - -% \end{macrocode} -% -% -% \begin{macrocode} - 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 pgothic_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_upforkstem} -% A macro to draw a vertical stem with a fork at the top. -% |draw_upforkstem(1,2)| uses the current pen to draw a vertical line, whose absolute -% top and bottom are at |z1| and |z2|. The top (|z1|) has a wedge shaped slit. -% \begin{macrocode} - -def draw_upforkstem(suffix $, $$)= - pen oldpen; oldpen:=currentpen; - x$a=x$; top y$a = bot y$; % top of straight stem - draw z$a--z$$; % straight part - z$b = (rt x$, y$); z$c = (x$b, top y$a); - z$d = (lft x$, bot y$a); z$e = (x$d, y$); - pickup stylus; - rt x$cc = x$c; y$cc = y$c; - lft x$bb = x$b; y$bb = y$b; - lft x$dd = x$d; y$dd = y$d; - rt x$ee = x$e; y$ee = y$e; - filldraw z$a--z$bb..z$cc--cycle; % fork - filldraw z$a--z$dd..z$ee--cycle; - pickup oldpen; - labels($a,$b,$c,$d,$e); -enddef; % end of draw_upforkstem - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{draw_downforkstem} -% A macro to draw a vertical stem with a fork at the bottom. -% |draw_downforkstem(1,2)| uses the current pen to draw a vertical line, whose absolute -% top and bottom are at |z1| and |z2|. The bottom (|z2|) has a wedge shaped slit. -% \begin{macrocode} - -def draw_downforkstem(suffix $, $$)= - pen oldpen; oldpen:=currentpen; - x$$a=x$$; bot y$$a = top y$$; % bottom of straight stem - draw z$--z$$a; % straight part - z$$b = (rt x$$, y$$); z$$c = (x$$b, top y$$a); - z$$d = (lft x$$, bot y$$a); z$$e = (x$$d, y$$); - pickup stylus; - rt x$$cc = x$$c; y$$cc = y$$c; - lft x$$bb = x$$b; y$$bb = y$$b; - lft x$$dd = x$$d; y$$dd = y$$d; - rt x$$ee = x$$e; y$$ee = y$$e; - filldraw z$$a--z$$bb..z$$cc--cycle; % fork - filldraw z$$a--z$$dd..z$$ee--cycle; - pickup oldpen; - labels($$a,$$b,$$c,$$d,$$e); -enddef; % end of draw_downforkstem - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{draw_upcurlstem} -% A macro to draw a vertical stem with a curl to the left at the top. -% |draw_upcurlstem(1,2)| uses the current pen to draw a vertical line, whose absolute -% top and bottom are at |z1| and |z2|. The top (|z1|) has a fancy curl to the left, -% jutting out 3 stem widths. -% \begin{macrocode} - -def draw_upcurlstem(suffix $, $$)= - pen oldpen; oldpen:=currentpen; - path curlp[]; numeric curln[]; - x$a=x$; top y$a = y$; % top of straight stem - draw z$a--z$$; % straight part - curln1 := rt x$a - lft x$a; % stem width - x$b = x$a - 4/2curln1; y$b = y$a; % left jut - curlp1 := z$a{-pdir}..{left}z$b; - draw curlp1; - - x$c = x$a-3curln1; top y$c = bot y$a-1/2curln1; - x$f = x$b; y$f = 1/3[y$c,y$b]; - x$tb = rt x$b; y$tb = top y$b; - x$bb = lft x$b; y$bb = bot y$b; - curlp2 := z$tb--z$bb..{down}z$c..{ppdir}z$f; - pickup stylus; - draw curlp2; - pickup oldpen; - labels($a,$b,$c,$d,$e,$f); -enddef; % end of draw_upcurlstem - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{draw_updiamondstem} -% A macro to draw a vertical stem with a diamond at the top. -% |draw_updiamondstem(1,2,fr,minfr,wd,ang)| uses the quill pen to draw a vertical line, -% whose absolute -% top and bottom are at |z1| and |z2|. The top (|z1|) has a leftward diamond, whose -% left jut is |fr| times the width of the stem, right jut is |minfr*stem_width|, width -% is |wd*stem_width| and angle above the horizontal is |ang|. -% \begin{macrocode} - -def draw_updiamondstem(suffix $, $$)(expr fr, minfr, wd, phi)= - pen oldpen; oldpen:=currentpen; - numeric sj; sj := fr*stem_width; % jut distance - numeric sjr; sjr := minfr*stem_width; % right jut distance - numeric jw; jw := wd*stem_width; % jut width - %% $b is bottom left of jut, on LHS of stem - %% $c is leftmost point on jut - %% $d is topmost point on jut - %% $g is topmost point on stem - %% $e is on exprapolation of line from $d through $g - %% i.e., the rightmost point on jut - %% $f is on RHS of stem - pickup quill; - x$b = lft x$; - x$c = x$b - sj; y$c = y$ - jw*(cosd phi); % $c done - y$b = y$c - sj*(sind phi); % $b done - x$d = x$c + jw*(sind phi); y$d = y$; % $d done - x$g = x$f = rt x$; - y$g = y$ - (x$g-x$d)*(sind phi)/(cosd phi); % $g done - x$a = x$; top y$a = y$g; % $a done - x$e = x$g + sjr; z$e = whatever[z$d,z$g]; % $e done - z$f-z$e = whatever*(z$c-z$d); % $f done - x$h = x$b; y$h = bot y$a; - draw z$a--z$$; % straight part - pickup stylus; - lft x$cc = x$c; y$cc = y$c; - x$dd = x$d; top y$dd = y$d; - rt x$ee = x$e; bot y$ee=y$e; - filldraw z$b--z$cc--z$dd--z$ee--z$f--cycle; % diamond - if y$b > y$h: - lft x$hh = x$h; y$hh=y$h; - filldraw z$b--z$hh--z$g--cycle; - fi - pickup oldpen; - labels($a,$b,$c,$d,$e,$f); -enddef; % end of draw_updiamondstem - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{draw_downdiamondstem} -% A macro to draw a vertical stem with a diamond at the bottom. -% |draw_downdiamondstem(1,2,fr,minfr,wd,ang)| uses the quill pen to draw a vertical line, -% whose absolute -% top and bottom are at |z1| and |z2|. The bottom (|z2|) has a rightward diamond, whose -% right jut is |fr| times the width of the stem, left jut is |minfr*stem_width|, -% width is |wd*stem_width| and is at |ang| degrees below the horizontal. -% \begin{macrocode} - -def draw_downdiamondstem(suffix $, $$)(expr fr, minfr, wd, phi)= - pen oldpen; oldpen:=currentpen; - numeric sj; sj := fr*stem_width; % (left) jut distance - numeric sjr; sjr := minfr*stem_width;; % right jut distance - numeric jw; jw := wd*stem_width; % jut width - %% $$b is top right of jut, on RHS of stem - %% $$c is rightmost point on jut - %% $$d is bottommost point on jut - %% $$g is bottommost point on stem - %% $$e is on exprapolation of line from $d through $g - %% i.e., the leftmost point on jut - %% $$f is on LHS of stem - pickup quill; - x$$b = rt x$$; - x$$c = x$$b + sj; y$$c = y$$ + jw*(cosd phi); % $$c done - y$$b = y$$c + sj*(sind phi); % $$b done - x$$d = x$$c - jw*(sind phi); y$$d = y$$; % $$d done - x$$g = x$$f = lft x$$; - y$$g = y$$ + (x$$d-x$$g)*(sind phi)/(cosd phi); % $$g done - x$$a = x$$; bot y$$a = y$$g; % $$a done - x$$e = x$$g - sjr; z$$e = whatever[z$$d,z$$g]; % $$e done - z$$f-z$$e = whatever*(z$$c-z$$d); % $$f done - x$$h = x$$b; y$$h = top y$$a; - draw z$--z$$a; % straight part - pickup stylus; - rt x$$cc = x$$c; y$$cc=y$$c; - x$$dd = x$$d; bot y$$dd = y$$d; - lft x$$ee = x$$e; top y$$ee = y$$e; - filldraw z$$b--z$$cc--z$$dd--z$$ee--z$$f--cycle; % diamond - if y$$b < y$$h: - rt x$$hh = x$$h; y$$hh=y$$h; - filldraw z$$b--z$$hh--z$$g--cycle; - fi - pickup oldpen; - labels($$a,$$b,$$c,$$d,$$e,$$f); -enddef; % end of draw_downdiamondstem - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{draw_flat_head} -% A macro to draw a squared off top of a vertical stroke. -% |draw_flat_head(1)| draws at the top of the stem ending at |z1|. -% \begin{macrocode} - -def draw_flat_head(suffix $)= - pen oldpen; oldpen:=currentpen; -%% pickup quill; - x$bl'' = lft x$; y$bl'' = bot y$; - x$tr'' = rt x$; y$tr'' = top y$; - pickup stylus; - lft x$blfh = x$bl''; y$blfh = y$bl''; - rt x$trfh = x$tr''; top y$trfh = y$tr''; - x$tlfh = x$blfh; y$tlfh = y$trfh; - filldraw z$blfh--z$tlfh--z$trfh--cycle; - pickup oldpen; - labels($tlfh); -enddef; % end of draw_flat_head -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{draw_flat_foot} -% A macro to draw a squared off bottom of a vertical stroke. -% |draw_flat_foot(1)| draws at the bottom of the stem ending at |z1|. -% \begin{macrocode} - -def draw_flat_foot(suffix $)= - pen oldpen; oldpen:=currentpen; -%% pickup quill; - x$bl'' = lft x$; y$bl'' = bot y$; - x$tr'' = rt x$; y$tr'' = top y$; - pickup stylus; - lft x$blff = x$bl''; bot y$blff = y$bl''; - rt x$trff = x$tr''; y$trff = y$tr''; - x$brff = x$trff; y$brff = y$blff; - filldraw z$blff--z$trff--z$brff--cycle; - pickup oldpen; - labels($brff); -enddef; % end of draw_flat_foot -% \end{macrocode} -% \end{routine} -% -% -% -% \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_roundserif} -% The |draw_serif| routine can leave a bump at the end of the stem. -% The |draw_roundserif| routine, which takes the same arguments, -% is meant to eliminate the bump. -% \begin{macrocode} - -def draw_roundserif(suffix $, $$)(expr fr)= - draw_serif($, $$, fr); - undraw z$--z$a; -enddef; % end of draw_roundserif - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{draw_flatserif} -% 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|. This produces a serif like |draw_serif| except -% that one side of the seerif is flat. -% \begin{macrocode} - -def draw_flatserif(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$ shifted (-jut*pdir); - else: - top_serif:=false; - z$c=z$ shifted (jut*pdir); - fi - z$b = fr[z$,z$c]; -% \end{macrocode} -% Draw the parts, and finish off. -% \begin{macrocode} - draw z$a--z$; - 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_flatserif - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{draw_clubserif} -% A macro to draw a clubbed serif. |draw_clubserif(1,2,f)| uses the current -% pen to -% draw a clubbed serif of extent |clubjut| at |z1| to the left of the line -% from |z2| -% to |z1|. The serif matches |z1| like the flatserif does and ends at the -% point |f[z1,z2]|. -% \begin{macrocode} - -def draw_clubserif(suffix $, $$)(expr fr)= - numeric beta, ajut, bjut; -% \end{macrocode} -% |fr| controls the length of the serif. -% \begin{macrocode} -%% beta=1-fr; - ajut=clubjut; 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, |fr| between |$| and |$$|. -% \begin{macrocode} - pair vec[]; vec1=unitvector(z$$-z$); -%% vec2=ajut*vec1; -%% z$a=z$ shifted vec2; - boolean top_serif; - if y$>y$$: - top_serif := true; - z$c=z$ shifted (-clubjut*pdir); - else: - top_serif:=false; - z$c=z$ shifted (clubjut*pdir); - fi - z$a = fr[z$,z$$]; -% \end{macrocode} -% Draw the parts, and finish off. -% \begin{macrocode} - draw z$c..z$a{vec1}; - labels($a,$b,$c); -enddef; % end of draw_clubserif - -% \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 PGOTH 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 PGOTH 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 TGOTH 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 -% for a total width of |ar| and deptrh of |2ar|. -% \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-2ar; - z$u = z$v shifted (sz*right); - z$sv = (x$s, 1/3[y$s,y$v]); - z$tu = (x$t, y$sv); - z$uv = 1/3[z$u,z$v]; - z$vu = 1/3[z$v,z$u]; - pickup stylus; -%% filldraw z$s--z$t--z$u--z$v--cycle; - filldraw z$s--z$t--z$tu--z$uv--z$vu--z$v--z$sv--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 -% for a total width of |ar| and depth |2ar|. -% \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-2ar; - z$u = z$v shifted (sz*right); - z$sv = (x$s, 1/3[y$s,y$v]); - z$tu = (x$t, y$sv); - z$uv = 1/3[z$u,z$v]; - z$vu = 1/3[z$v,z$u]; - pickup stylus; -%% filldraw z$s--z$t--z$u--z$v--cycle; - filldraw z$s--z$t--z$tu--z$uv--z$vu--z$v--z$sv--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[]; - path pth[]; - 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); - penpos$wt(thick,pangle); - penpos$et(thick,pangle); - 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); - penpos$nh(thick,pangle); - penpos$sh(thick,pangle); - 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 min width lines (i.e., the points where the pen will be -% moving parallel to |pangle|). -% \begin{macrocode} - if pangle = 90: - z$minl = z$wt; z$maxr = z$nh; z$minr = z$et; z$maxl = z$sh; - else: - if pangle = 0: - z$minl = z$nh; z$maxr = z$et; z$minr = z$sh; z$maxl = z$wt; - else: - z$minl = directionpoint dir(pangle) of obfirst; - z$minr = directionpoint -dir(pangle) of obfirst; -% \end{macrocode} -% The max points are roughly where the inner and outer diverge -% the most. These are simple for 0 and 90 degree pens and have -% been calculated above. It's not so simple for intermediate -% angles. For a reasonable looking result, we pick the max -% points to be halfway between the min points. This involves -% calculating some angles, paths and intersections. -% \begin{macrocode} - pt1 := z$minr - z$minl; % direction - pt2 := (- ypart pt1, xpart pt1); % perpendicular - pt3 := 1/2[z$minl, z$minr]; - pt4 := pt3 shifted pt2; - pt5 := pt3 shifted -pt2; - pth1 := pt3--pt4; - pth2 := pt3--pt5; - z$maxr = pth1 intersectionpoint obfirst; - z$maxl = pth2 intersectionpoint obfirst; - \fi - \fi -% \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{dir(pangle)}...z$maxro...z$minro{-dir(pangle)}...z$maxlo...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; - 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; -pgothic_font_setup; - -% \end{macrocode} -% -% -% We generate letters, together with some punctuation and -% analphabetics. -% \begin{macrocode} - -input pgothl; % lower case -input pgothu; % capitals -input pgothpunct; % punctuation -input pgothlig; % the several dashes -input pgothdig; % 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 2vstretch*stem_width#; % no stretching or shrinking - font_quad vstretch*18u#; - font_extra_space vstretch*9u#; -else: - font_normal_space 2vstretch*stem_width#+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, but I don't think they are needed (yet?). -% -% \begin{macrocode} - -fi - -bye. - - 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> -% PGOTHL.MF Program file for Gothic Textura Prescius lower case -% - -% \end{macrocode} -% -% -% \begin{routine}{a} -% The letter `a'. -% \begin{macrocode} -cmchar "PGOTH letter a"; -beginchar("a", 2sb#+hstretch*((3+widedmin+wided)*stem_width#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pair pr[]; -pickup quill; -%% left hand -lft x1 = pcshiftx + widedmin*stem_width; y1 = 1/2h; -x2 = x1; y2 = 0; -draw_downdiamondstem(1,2,wided,widedmin,diawd,diang); -%% right stem -rt x3 = w - pcshiftx - wided*stem_width; y3=h; -x4=x3; bot y4=0; -z34=1/2[z3,z4]; -draw_updiamondstem(3,34,1.0,0.1,diawd,diang); -%draw_downdiamondstem(34,4,wided,widedmin,diawd,diang); -draw z34--z4; draw_flat_foot(4); -%% swirl -x11=rt x1; y11 = top y1; -pickup stylus; -draw z3d--z3c..{-ppdir}z11; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,11,12,13,14,15,100); -endchar; % end "a" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{b} -% The letter `b'. -% \begin{macrocode} -cmchar "PGOTH letter b"; -beginchar("b", 2sb#+hstretch*((3 + widedmin + narrowdmin)*stem_width#), - asc_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pcshiftx := sb; -pickup quill; -n1:=w-2pcshiftx; % actual letter width -n2:=h/ascratio; % top of bowl -%%ductus:=true; -lft x1 = pcshiftx + widedmin*st; y1=h; -x2 = x1; y2=0; -z3=1/2[z1,z2]; -draw_upforkstem(1,3); -draw_downdiamondstem(3,2,1.0,widedmin,diawd,diang); -lft x6 = x2c; bot y6 = y2c; -x4 = x6; y4=n2; -draw_updiamondstem(4,6,narrowd,narrowdmin,diawd,diang); -x7 = x1; z7 = whatever[z4d,z4c]; -pickup stylus; -draw z4d--z7; -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 "PGOTH letter c"; -beginchar("c", 2sb#+hstretch*((3+wided)*stem_width#), - x_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; -st := stem_width; -pcshiftx := sb; -pickup quill; -%% left -lft x1 = pcshiftx+wided*st; y1 = 3/4h; -x2 = x1; y2 = 0; -draw_downdiamondstem(1,2,wided,widedmin,diawd,diang); -%% top -lft x3 = rt x1; bot y3 = top y1; -rt x4 = w - pcshiftx; -z3 - z4 = -whatever*ppdir; -draw z3--z4; -z11-z2c = z2c - z2d; -pickup stylus; -draw z2d--z11; -ductus:=false; -penlabels(1,2,3,4,5,6,14,16,17,18,100); -endchar; % end "c" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{d} -% The letter `d'. -% \begin{macrocode} -cmchar "PGOTH letter d"; -beginchar("d", 2sb#+hstretch*((3+widedmin+narrowdmin)*stem_width#), - asc_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pcshiftx := sb; -pickup quill; -n1 = h/ascratio; % x-height -%% left -n2 := st*(cosd diang); -lft x1 = pcshiftx + widedmin*st; top y1 = 12/16n1; -x2=x1; y2=0; -draw_downdiamondstem(1,2, 1.0, widedmin, diawd,diang); -%% right -rt x3 = w-pcshiftx-narrowdmin*st; y3=h; -x4 = x3; bot y4 = y2c; -draw_updiamondstem(3,4, 2.0, narrowdmin, diawd,diang); -x31 = lft x1; y31 = bot y1; -x32 = rt x1; y32 = top y1; -z33 = whatever[z31,z32] = whatever[z3e,z3c]; -pickup stylus; -draw z31--z33; -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 "PGOTH letter e"; -beginchar("e", 2sb#+hstretch*((3+wided)*stem_width#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -numeric st; -st := stem_width; -path pth[]; -pickup quill; -%% left -lft x1 = pcshiftx+wided*st; y1 = 3/4h; -x2 = x1; y2 = 0; -draw_downdiamondstem(1,2,wided,widedmin,diawd,diang); -%% top -lft x3 = rt x1; bot y3 = top y1; -rt x4 = w - pcshiftx; -z3 - z4 = -whatever*ppdir; -draw z3--z4; -x5 = x1; -z4-z5 = whatever*pdir; -pickup stylus; -draw z4--z5; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,17,27,34,70,100); -endchar; % end "e" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{f} -% The letter `f'. -% \begin{macrocode} -cmchar "PGOTH letter f"; -beginchar("f", 2sb#+hstretch*((3+widedmin)*stem_width#), - (asc_height#), 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -pcshiftx := sb; -pickup quill; -n1 := h/ascratio; % x-height -%% stem -lft x1=lft x2=pcshiftx+widedmin*st; y2=0; top y1 = h - (top y2 - bot y2); -%draw_downdiamondstem(1,2,wided,widedmin,diawd,diang); -draw z1--z2; draw_flat_foot(2); -%% top bar -lft x3 = rt x1; rt x5 = w-pcshiftx; bot y3 = top y1; y5=y3; -draw z3--z5; -%% middle bar -lft x7 = pcshiftx; rt x9 = x5; -y7 = y9 = 10/16h; -draw z7--z9; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,14,15,16,100); -endchar; % end "f" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{g} -% The letter `g'. -% \begin{macrocode} -cmchar "PGOTH letter g"; -beginchar("g", 2sb#+hstretch*((4)*stem_width#), - x_height#, desc_depth#); -adjust_fit(0,0); -path pth[]; -pair vec[]; -numeric n[]; -numeric st; st := stem_width; -pcshiftx := sb; -pickup quill; -%% left -lft x1 = pcshiftx; -x2 = x1; bot y2 = 0; top y1 = h - (top y2 - bot y2); -draw z1--z2; -x3 = x4 = x1 + 2st; y4 = y2; -lft x13 = rt x1; bot y13 = top y1; -(z3-z13) = whatever*(dir -diang); -draw z13--z3--z4; -z34 = 1/2[z13,z3]; rt x37 = w-pcshiftx; top y37 = h; -draw z34{right}..{pdir}z37; -pickup stylus; -bot y5 = -d; -(z4-z5) = whatever*pdir; -draw z4--z5; -pickup quill; -%% bottom loop -z21 = z2; -lft x25 = x5; bot y25=-d; -x29 = 1/2[x3,x37]; -(z29-z21) = whatever*(dir -diang); -x23 = x29; y23 = 1/2[y29,y25]; -draw z21{dir - diang}..z23{down}..{left}z25; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,11,12,13,31,32,33,34,35,36,100); -endchar; % end "g" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{h} -% The letter `h'. -% \begin{macrocode} -cmchar "PGOTH letter h"; -beginchar("h", 2sb#+hstretch*((3 + narrowd + narrowdmin)*stem_width#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -numeric n[]; -n1 = h/ascratio; -%% stem -lft x1=lft x2=pcshiftx + narrowdmin*stem_width; -y1=h; bot y2=0; -z12 = 1/2[z1,z2]; -draw_upforkstem(1,12); -%draw_downdiamondstem(12,2,narrowd,narrowdmin,diawd,diang); -draw z12--z2; -draw_flat_foot(2); -%% bowl -x3 = x1 + 2stem_width; x4 = x3; -y3 = n1; bot y4=0; -z34 = 1/2[z3,z4]; -draw_updiamondstem(3,34,narrowd,narrowdmin,diawd,diang); -%draw_downdiamondstem(34,4,narrowd,narrowdmin,diawd,diang); -draw z34--z4; draw_flat_foot(4); -x7 = x1; z7 = whatever[z3d,z3c]; -pickup stylus; -draw z3d--z7; -penlabels(1,2,3,4,5,6,100); -endchar; % end "h" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{i} -% The letter `i'. -% \begin{macrocode} -cmchar "PGOTH letter i"; -beginchar("i", 2sb#+hstretch*(2stem_width#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -x1 = x2 = 1/2w; y1 = h; bot y2 = 0; -z12 = 1/2[z1,z2]; -draw_updiamondstem(1,12,1/2,1/2,diawd,diang); -%draw_downdiamondstem(12,2,1/2,1/2,diawd,diang); -draw z12--z2; draw_flat_foot(2); -x3= x1-thin; bot y3 = h + 1/2stem_width; -z4 = (x3+3thin,y3); -pickup halfquill; -draw z3--z4; -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 "PGOTH letter j"; -beginchar("j", sb#+hstretch*(5/2stem_width#), - x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% stem -rt x1 = w-pcshiftx - 1/2stem_width; y1 = h; -x2=x1; y2=-1/2d; -%% bottom hook -lft x3 = pcshiftx; bot y3 = -d; -draw_updiamondstem(1,2,narrowd,narrowdmin,diawd,diang); -draw z2{down}..z3{-pdir}; % hook -ductus:=false; -penlabels(1,2,3,100); -endchar; % end "j" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{k} -% The letter `k'. -% \begin{macrocode} -cmchar "PGOTH letter k"; -beginchar("k", 2sb#+hstretch*((3 + narrowd + narrowdmin)*stem_width#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -path pth[]; -numeric n[]; -numeric st; st := stem_width; -pickup quill; -%% stem -n1 = h/ascratio; % x-height -lft x1=lft x2=pcshiftx + narrowdmin*st; -y1=h; bot y2=0; -z12 = 1/2[z1,z2]; -draw_upforkstem(1,12); -%draw_downdiamondstem(12,2, narrowd, narrowdmin, diawd,diang); -draw z12--z2; draw_flat_foot(2); -%% right leg -x3 = x1 + 2st; y3 = 8/16n1; -x4 = x3; bot y4 = 0; -z34 = 1/2[z3,z4]; -%draw_downdiamondstem(34,4, narrowd, narrowdmin, diawd,diang); -draw z3--z4; draw_flat_foot(4); -draw z3--z34; -lft x5 = rt x1; -(z3-z5) = whatever*(dir -diang); -draw z5--z3; - -%% top arm -x6 = 1/2[x3, rt x3]; -(z6-z5) = whatever*(pdir); -rt x8 = lft x5; top y8 = bot y5+thick; -(z7-z8) = whatever*(z6-z5); -(z7-z6)=whatver*(z5-z3); -draw z6--z7; -pickup stylus; -draw z5--z6--z7--z8; - -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,13,14,100); -endchar; % end "k" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{l} -% The letter `l'. -% \begin{macrocode} -cmchar "PGOTH letter l"; -%beginchar("l", 2sb#+hstretch*((2 + widedmin)*stem_width#), -% asc_height#, 0); -beginchar("l", 2sb#+hstretch*((1 + widedmin)*stem_width#), - asc_height#, 0); -adjust_fit(0,0); -numeric st; st := stem_width; -pcshiftx := sb; -pickup quill; -%lft x1=pcshiftx + widedmin*st; y1=h; -x1 = 1/2w; y1=h; -x2=x1; bot y2 =0; -z3 = 1/2[z1,z2]; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_upforkstem(1,3); -%draw_downdiamondstem(3,2,1.0,widedmin,diawd,diang); -draw z3--z2; draw_flat_foot(2); -ductus:=false; -penlabels(1,2,3,4,100); -endchar; % end "l" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{m} -% The letter `m'. -% \begin{macrocode} -cmchar "PGOTH letter m"; -beginchar("m", 2sb#+hstretch*((5+wided+narrowd)*stem_width#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pickup quill; -%% left stem -lft x1=pcshiftx+wided*stem_width; y1 = y3 = y5 = h; -x2=x1; bot y2 = 0; y2 = y4 = y6; -z12=1/2[z1,z2]; -draw_updiamondstem(1,12,wided,widedmin,diawd,diang); -%draw_downdiamondstem(12,2,narrowd,narrowdmin,diawd,diang); -draw z12--z2; draw_flat_foot(2); -%% right stem -rt x5 = rt x6 = w-pcshiftx-narrowd*stem_width; -z56 = 1/2[z5,z6]; -draw_updiamondstem(5,56,wided,widedmin,diawd,diang); -%draw_downdiamondstem(56,6,narrowd,narrowdmin,diawd,diang); -draw z56--z6; draw_flat_foot(6); -%% middle stem -z3=1/2[z1,z5]; z4 = 1/2[z2,z6]; z34=1/2[z3,z4]; -draw_updiamondstem(3,34,wided,widedmin,diawd,diang); -%draw_downdiamondstem(34,4,narrowd,narrowdmin,diawd,diang); -draw z34--z4; draw_flat_foot(4); -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,13,14,33,34,100); -endchar; % end "m" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{n} -% The letter `n'. -% \begin{macrocode} -cmchar "PGOTH letter n"; -beginchar("n", 2sb#+hstretch*((3+wided+narrowd)*stem_width#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% left stem -lft x1 = pcshiftx + wided*stem_width; y1 = h; -x2 = x1; bot y2 = 0; -z12 = 1/2[z1,z2]; -draw_updiamondstem(1,12,wided,widedmin,diawd,diang); -%draw_downdiamondstem(12,2,narrowd,narrowdmin,diawd,diang); -draw z12--z2; draw_flat_foot(2); -%% right stem -rt x3 = w-pcshiftx - narrowd*stem_width; y3=y1; -x4=x3;y4=y2; -z34=1/2[z3,z4]; -draw_updiamondstem(3,34,wided,widedmin,diawd,diang); -%draw_downdiamondstem(34,4,narrowd,narrowdmin,diawd,diang); -draw z34--z4; draw_flat_foot(4); -penlabels(1,2,3,4,5,6,13,14,100); -endchar; % end "n" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{o} -% The letter `o'. -% \begin{macrocode} -cmchar "PGOTH letter o"; -beginchar("o", 2sb#+hstretch*((3 + narrowdmin + narrowdmin)*stem_width#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -numeric st; st := stem_width; -pickup quill; -%% bottom left -lft x12 = pcshiftx + narrowdmin*st; y12 = 1/2h; -x2 = x12; y2 = 0; -draw_downdiamondstem(12,2, 1.0, narrowdmin, diawd,diang); -%% right -rt x3 = w - pcshiftx - narrowdmin*st; x4=x3; -y3 = h; bot y4 = y2c; -draw_updiamondstem(3,4, 1.0, narrowdmin, diawd,diang); -%% top left -x1 = x12; top y1 = y3c; -draw z1--z12; -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 "PGOTH letter p"; -beginchar("p", 2sb#+hstretch*((3 + wided + widedmin)*stem_width#), - x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -numeric st; st := stem_width; -pickup quill; -%% stem -lft x1=lft x2=pcshiftx+wided*st; -y1=h; y2=-d; -z12 = 1/2[z1,z2]; -draw_updiamondstem(1,12,wided,widedmin,diawd,diang); -%draw_downforkstem(12,2); -draw z12--z2; -%% bowl -x3 = x4 = x1 + 2st; -y3 = y1; bot y4 = 0; -draw_updiamondstem(3,4,wided,widedmin,diawd,diang); -lft x5 = pcshiftx; y5 = y4; -draw z5--z4; -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 "PGOTH letter q"; -beginchar("q", 2sb#+hstretch*((3 + widedmin)*stem_width#), - x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -numeric st; st := stem_width; -pickup quill; -%% left/bottom of bowl -y99 = 0; -lft x1 = pcshiftx +widedmin*st; top y1 = h - (top y99 - bot y99); -x2 = x1; y2 = 0; -draw_downdiamondstem(1,2, 1.0, widedmin,diawd,diang); -%% rest -x3 = x1 + 2st; x4 = x3; y3 = y1; y4 = -d; -lft x5 = rt x1; bot y5 = top y1; -%draw_downforkstem(3,4); -draw z3--z4; -draw z5--z3; -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 "PGOTH letter r"; -beginchar("r", 2sb#+hstretch*((3+wided)*stem_width#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -numeric st; st := stem_width; -pickup quill; -%% stem -lft x1=lft x2=pcshiftx + wided*st; -y1=h; bot y2=0; -z12 = 1/2[z1,z2]; -draw_updiamondstem(1,12,wided,widedmin,diawd,diang); -%draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); -draw z12--z2; draw_flat_foot(2); -%% bar -lft x3 = rt x1; rt x4 = w-pcshiftx; top y3 = top y4 = h; -draw z3--z4; -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 short S. -% \begin{macrocode} -cmchar "PGOTH letter s"; -beginchar("s", 2sb#+hstretch*((4)*stem_width#), - x_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -pcshiftx := sb; -pickup stylus; -%% the diagonal -lft x2 = pcshiftx; bot y2 = 0; -rt x1 = w-pcshiftx; top y1 = h; -draw z1--z2; -pickup quill; -z211 = 13/32[z2,z1]; %% 10/32 too small, 16/32 too large -z213 = 24/32[z2,z1]; %% 26/32 too large -z212 = 1/2[z211,z213]; -%% bottom bowl -lft x21 = x2; bot y21 = 0; -rt x22 = w - pcshiftx; bot y22 = 0; -x23 = x22; z24 = z212; -(z24-z23) = whatever*(dir (180-diang)); -draw z21{pdir}..z22--z23--z24; -%% top bowl -z14 = z211; z11 = z213; -lft x12 = lft x13 = pcshiftx; -(z13-z14) = whatever*(dir (180-diang)); -(z12-z11) = whatever*(dir (180-diang)); -draw z11--z12--z13--z14; -ductus:=false; -penlabels(1,2,3,4,5,6,7,11,12,13,14,15,16,17,20,21,22,23,24,25,26,27,28,100); -endchar; % end "s" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{t} -% The letter `t'. -% \begin{macrocode} -cmchar "PGOTH letter t"; -beginchar("t", 2sb#+hstretch*((2+1.0)*stem_width#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -numeric st; st := stem_width; -pickup quill; -%% bar -lft x3 = pcshiftx; top y1 = h; -top y3 = bot y1; -rt x4 = w-pcshiftx; y4=y3; -draw z3--z4; -%% stem -lft x1 = rt x3; -x2 = x1; -bot y2 = 0; -%draw_downdiamondstem(1,2,wided,widedmin,diawd,diang); -draw z1--z2; draw_flat_foot(2); -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 "PGOTH letter u"; -beginchar("u", 2sb#+hstretch*((3+narrowd+wided)*stem_width#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% left stem -lft x1 = pcshiftx + narrowd*stem_width; y1 = h; -x2 = x1; y2 = 0; -z12 = 1/2[z1,z2]; -draw_updiamondstem(1,12,narrowd,narrowdmin,diawd,diang); -draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); -rt x3 = w - pcshiftx - wided*stem_width; y3=y1; -x4=x3; -%y4=y2; -bot y4 = 0; -z34=1/2[z3,z4]; -draw_updiamondstem(3,34,narrowd,narrowdmin,diawd,diang); -%draw_downdiamondstem(34,4,wided,widedmin,diawd,diang); -draw z34--z4; draw_flat_foot(4); -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,11,13,14,16,33,100); -endchar; % end "u" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{v} -% The letter `v'. -% \begin{macrocode} -cmchar "PGOTH letter v"; -beginchar("v", 2sb#+hstretch*((4 + narrowdmin)*stem_width#), - asc_height#, 0); -adjust_fit(0,0); -numeric n[]; numeric st; -pcshiftx := sb; -st := stem_width; -n1 := h/ascratio; % x-height -pickup quill; -%% bottom left stem -%% right and bottom left stems -rt x23 = w - pcshiftx - narrowdmin*st; y23 = n1; x24=x23; -x1 = x23 - 2st; y1 = 1/2n1; -x2 = x1; y2 = 0; -draw_downdiamondstem(1,2, 1.0, widedmin, diawd, diang); -bot y24 = y2c; -draw_updiamondstem(23, 24, narrowd, narrowdmin, diawd, diang); -%% curly bit -%x11=x1; top y11 = h; -%lft x12 = pcshiftx; y12 = 1/2[y11,y1]; -%draw z11{down}..z12{down}..{down}z1; -x11 = x1; y11 = n1; -draw_updiamondstem(11,1,narrowd,narrowdmin,diawd,diang); -ductus:=false; -penlabels(1,2,3,4,5,11,13,14,23,26,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 "PGOTH letter w"; -beginchar("w", 2sb#+hstretch*((5+wided+narrowd)*stem_width#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -%% left stem -lft x1 = pcshiftx + narrowd*stem_width; y1 = y3 = y5 = h; -x2 = x1; y2 = y4 = 0; bot y6 = 0; -z12=1/2[z1,z2]; -draw_updiamondstem(1,12, narrowd, narrowdmin, diawd, diang); -draw_downdiamondstem(12,2, wided, widedmin, diawd, diang); -%% right stem -rt x5 = w -pcshiftx-wided*stem_width; x6 = x5; -z56 = 1/2[z5,z6]; -draw_updiamondstem(5,56, narrowd, narrowdmin, diawd, diang); -%draw_downdiamondstem(56,6, wided, widedmin, diawd, diang); -draw z56--z6; -%% middle stem -z3 = 1/2[z1,z5]; -x4 = 1/2[x2,x6]; -z34 = 1/2[z3,z4]; -draw_updiamondstem(3,34, narrowd, narrowdmin, diawd, diang); -draw_downdiamondstem(34,4, wided, widedmin, diawd, diang); -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,11,13,14,33,34,53,16,100); -endchar; % end "w" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{x} -% The letter `x'. -% \begin{macrocode} -cmchar "PGOTH letter x"; -beginchar("x", 2sb#+hstretch*((4)*stem_width#), - x_height#, 0); -adjust_fit(0,0); -path pth[]; -numeric n[]; -numeric st; st := stem_width; -pcshiftx := sb; -pickup quill; -%% upright -x1 = 1/2w; y1 = h; -x2 = x1; y2 = 0; -z12 = 1/2[z1,z2]; -draw_updiamondstem(1,12, 1.5, widedmin,diawd,2/3diang); -draw_downdiamondstem(12,2, 1.5, widedmin,diawd,2/3diang); -%% top right bar -lft x3 = rt x1; top y3 = h; -rt x4 = w - pcshiftx; y4=y3; -draw z3--z4; -%% middle bar -n1 := h-y3; -lft x5 = pcshiftx; rt x6 = w - pcshiftx; -y5 = 1/2h - n1; y6 = 1/2h; -z56 = 1/2[z5,z6]; -draw z5{pdir}..z56..{pdir}z6; -%% bottom left -pickup stylus; -lft x11 = pcshiftx; bot y11 = 0; -draw z2e--z11; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,10,25,251,252,40,50,150,60,160,100); -endchar; % end "x" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{y} -% The letter `y'. Modern, but with a dot on top. -% \begin{macrocode} -cmchar "PGOTH letter y"; -beginchar("y", 2sb#+hstretch*((3 + narrowd+ narrowdmin)*stem_width#), - x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -path pth[]; -numeric n[]; -numeric st; st = stem_width; -pickup quill; -%% right side -rt x3 = w - pcshiftx - narrowdmin*st; y3 = h; -x33 = x3; y33 = 0; -%%draw_updiamondstem(3,4,narrowd,narrowdmin, diawd,diang); -%% left side -x1 = x3 - 2st; y1 = y3; -x2 = x1; y2 = 0; -n1 := top y2 - y2; -draw_updiamondstem(1,2,narrowd,narrowdmin, diawd,diang); -%% tail -x11 = rt x2; y11 = top y2; -x12 = lft x2; y12 = bot y2; -pickup stylus; -lft x14 = x1 - 2st; y14 = -d + n1; -x15 = x14+n1; bot y15 = -d; -z4 = whatever[z11,z12] = whatever[z3,z33]; -x10=x4; bot y10 = y4; -draw z10--z11--z12..{down}z14..{-ppdir}z15; -pickup quill; -draw_updiamondstem(3,4,narrowd,narrowdmin, diawd,diang); -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,10,11,12,14,15,33,100); -endchar; % end "y" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{z} -% The letter `z'. -% \begin{macrocode} -cmchar "PGOTH letter z"; -beginchar("z", 2sb#+hstretch*(3stem_width#), - x_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pcshiftx := sb; -pickup quill; -%% top bar ends -top y12 = h; -n1 := h - y12; -lft x1 = pcshiftx; rt x2 = w-pcshiftx; -%%y1 = y12-n1; y2=y12+n1; -y1 = y12-n1/2; y2=y12; -x12 = 1/2[x1,x2]; -pth1 := z1{pdir}..z12{right}..z2{pdir}; -%% bottom bar ends -bot y34 = 0; -x3=x1; x4=x2; -%%y3=y34-n1; y4=y34+n1; -y3=y34-n1/2; y4=y34; -x34 = 1/2[x3,x4]; -pth2 := z3{pdir}..z34{right}..z4{pdir}; -%% centre bar -z5 = 1/2[z1,z3]; z6 = 1/2[z2,z4]; z56 = 1/2[z5,z6]; -pth3 := z5{pdir}..z56{right}..z6{pdir}; -draw pth1; draw pth2; draw pth3; % bars -draw z2--z3; -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. -% The letters are pretty fancy. -% -% \begin{macrocode} -%<*maj> -% PGOTHU.MF Program file for Gothic Prescius capitals -% - -% \end{macrocode} -% -% -% \begin{routine}{A} -% The letter `A'. -% \begin{macrocode} -cmchar "PGOTH letter A"; -beginchar("A", 2cap_sb#+hstretch*((7)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pair pr[]; -pickup quill; -%% stem -rt x1 = w - pcshiftx - wided*st; y1 = h; -x2 = x1; y2 = 0; -z12 = 1/2[z1,z2]; -draw_upcurlstem(1,12); -draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); -%% leg -x21 = x1; top y21 = h; -lft x22 = pcshiftx + widedmin*st; bot y22 = 0; -draw z21--z22; -draw (x22-widedmin*st, y22)--(x22+wided*st, y22); -%% bar -z13 = z12; -y16 = y13; z16 = whatever[z21,z22]; -x14 = 1/2[x13,x16]; (z13-z14) = whatever*pdir; -pickup threequarterquill; -draw z13--z14; -draw z14{ppdir}..{left}z16; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,11,12,13,14,15,100); -endchar; % end "A" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{B} -% The letter `B'. -% \begin{macrocode} -cmchar "PGOTH letter B"; -beginchar("B", 2cap_sb#+hstretch*((7)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pcshiftx := cap_sb; -pickup quill; -%% stem -lft x1 = pcshiftx; bot y1 = 0; -n1 := top y1; -lft x99 = 2/5w; bot y99 = 12/16h; -rt x12 = lft x99; top y12 = bot y99; -x14 = x1; y14 = y12; -x13 = 1/2[x14,x12]; y13 = 1/2[y12,(h-n1/2)]; -pth1 := z1{pdir}..z12..{left}z13..{-pdir}z14; -%% stem decoration -z101=z99; -z181 = (x99,-h); -z102 = (x101,y1); -z112 = 1/2[z101,z102]; -lft x8 = x112; y8 = y112; -%% lower bowl -x113 = w-pcshiftx; -(z113-z112) = whatever*(pdir); -rt x5 = w-pcshiftx; y5 = 6/16y113; -x3 = 10/16[x1,x5]; y3 = y1; -z7 = 2/16[z8,z113]; -pth2 := z1{pdir}..{right}z3..{up}z5..{-pdir}z7--z8; - -%% upper bowl -x10 = 1/2[x7,x5]; y10 = 1/2[y12,y99]; -x19 = 1/2[x99,x10]; top y19 = h; -pth3 := z8--z7{pdir}..{up}z10..{left}z19..{-pdir}z99; -%% angled decoration - -z105 = 1/4[z102,z112]; -x185 = 2w; -(z185-z105) = whatever*(pdir); -z106 = (z105--z185) intersectionpoint pth2; - -z107 = 1/4[z112,z101]; -x187 = 2w; -(z187-z107) = whatever*(pdir); -z108 = (z107--z187) intersectionpoint pth3; - -if ductus: - pickup stylus; -fi -draw pth1; -draw pth2; -draw pth3; -pickup stylus; -draw z101--z102; -draw z105--z106; draw z107--z108; - -ductus:=false; -penlabels(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,99,100); -endchar; % end "B" - - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{C} -% The letter `C'. -% \begin{macrocode} -cmchar "PGOTH letter C"; -beginchar("C", 2cap_sb#+hstretch*((5)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pcshiftx := cap_sb; -pickup quill; -%% bowl -n1:=w-2pcshiftx; % actual letter width -n2:=6/5w-2pcshiftx; % width of full bowl -x1=pcshiftx + 1/2n1; top y1 = h; -lft x2 = pcshiftx; y2 = 1/2h; -x3 = x1; bot y3 = 0; -rt x4 = w-pcshiftx; y4 = 1/4h; -x24 = x4; y24 = 3/4h; -pth1 := z24..z1{left}..z2{down}..z3{right}..z4{pdir}; -%% decoration -z101 = (x1,y1); z102 = (x1,y3); -z103 = (x1+perpdec, y1); z104 = (x103,y102+thin); -z105 = 1/2[z101,z102]; z107 = (x105,y105+angdec); -x185 = -w; (z105-z185) = whatever*(pdir); -z106 = (z105--z185) intersectionpoint pth1; -x187 = -w; (z107-z187) = whatever*(pdir); -z108 = (z107--z187) intersectionpoint pth1; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; %% bowl -pickup stylus; -draw z101--z102; draw z103--z104; -draw z105--z106; draw z107--z108; -ductus:=false; -penlabels(1,2,3,4,5,6,14,16,17,18,100,101,102,103,104,105,106,107,108,185); -endchar; % end "C" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{D} -% The letter `D'. -% \begin{macrocode} -cmchar "PGOTH letter D"; -beginchar("D", 2cap_sb#+hstretch*((7)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pcshiftx := cap_sb; -pickup quill; -%% bowl -lft x1 = pcshiftx; bot y1 = 0; -rt x5 = w-pcshiftx; y5 = 1/2h; -x3 = 10/16[x1,x5]; y3 = y1; -x7 = x3; top y7 = h; -lft x9 = 2/5w; bot y9 = 12/16h; -pth1 := z1{pdir}..{right}z3..{up}z5..{left}z7..{-pdir}z9; -%% stem -rt x12 = lft x9; top y12 = bot y9; -x14 = x1; y14 = y12; -x13 = 1/2[x14,x12]; y13 = 1/2[y12,y7]; -pth2 := z1{pdir}..z12..{left}z13..{-pdir}z14; -%% vertical decoration -z101=z9; -z181 = (x9,-h); -z102 = ((x101,h/2)--z181) intersectionpoint pth1; -z103a=(x101+perpdec,h); z103b=(x103a,h/2); z103c=(x103a,-h); -z103 = (z103a--z103b) intersectionpoint pth1; -z104 = (z103b--z103c) intersectionpoint pth1; -%% angled decoration -z106 = (lft x5, y5); -x105 = x103; (z106-z105) = whatever*(pdir); -z107 = (x105, y105+angdec); -x108a = 2w; (z108a-z107) = whatever*(pdir); -z108 = (z108a--z107) intersectionpoint pth1; -if ductus: - pickup stylus; -fi -draw pth1; -draw pth2; -pickup stylus; -draw z101--z102; draw z103--z104; -draw z105--z106; draw z107--z108; -ductus:=false; -penlabels(0,1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,100); -endchar; % end "D" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{E} -% The letter `E'. -% \begin{macrocode} -cmchar "PGOTH letter E"; -beginchar("E", 2cap_sb#+hstretch*((6)*stem_width#), %% (5) too small - caprat*x_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pcshiftx := cap_sb; -pickup quill; -%% bowl -n1:=w-2pcshiftx; % actual letter width -n2:=6/5w-2pcshiftx; % width of full bowl -x1=pcshiftx + 1/2n1; top y1 = h; -lft x2 = pcshiftx; y2 = 1/2h; -x3 = x1; bot y3 = 0; -rt x4 = w-pcshiftx; y4 = 1/4h; -x24 = x4; y24 = 3/4h; -pth1 := z24..z1{left}..z2{down}..z3{right}..z4{pdir}; -%% decoration -z101 = (x1,y1); z102 = (x1,y3); -z103 = (x1+perpdec, y1); z104 = (x103,y102+thin); -z105 = 1/2[z101,z102]; z107 = (x105,y105+angdec); -x185 = -w; (z105-z185) = whatever*(pdir); -z106 = (z105--z185) intersectionpoint pth1; -x187 = -w; (z107-z187) = whatever*(pdir); -z108 = (z107--z187) intersectionpoint pth1; -%% bar -lft x31 = x103; top y31 = y105; -rt x32 = w-pcshiftx; y32=y31; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; %% bowl -draw z31--z32; %% bar -pickup stylus; -draw z101--z102; draw z103--z104; -draw z105--z106; draw z107--z108; -ductus:=false; -penlabels(1,2,3,4,5,6,14,16,17,18,100,105,185,106); -endchar; % end "E" - - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{F} -% The letter `F'. -% \begin{macrocode} -cmchar "PGOTH letter F"; -beginchar("F", 2cap_sb#+hstretch*((5)*stem_width#), - 5/4caprat*x_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pcshiftx := cap_sb; -pickup quill; -%% stem (1--2) and top bar (21--22) -lft x1=lft x2=pcshiftx+widedmin*st; y2 = 0; -top y21 = top y22 = h - (top y2 - bot y2); x22 = w-pcshiftx-st; -lft x21 = rt x1; top y1 = bot y21; -z12 = 1/3[z1,z2]; -draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); -draw z1--z12; -draw z21--z22; -%% vertical decoration -z102 = 2/3[z2b,z2c]; -x101 = x102; y101 = y21; -%% bar -lft x14 = x101; y14 = y12; -rt x16 = w-pcshiftx; y16 = y14; -draw z14--z16; -z16tr = (rt x16, top y16); -pickup stylus; -draw z101--z102; -%% Other decoration -%% bottom bar -rt x201 = x16tr; top y201 = y16tr; -y202 = y201 - 2st; (z201-z202) = whatever*pdir; -draw z201--z202; -%% top bar -pickup quill; -z22tb = (rt x22, top y22); -x22bb - x22 = x22 - x22tb; y22bb - y22 = y22 - y22tb; -x22c = x22 + st; bot y22c = top y22 + 1/2st; -x22f = x22; y22f = 1/3[y22c, y22]; -pickup stylus; -x22br = x22bb; bot y22br = y22bb; -pth3 := z22br--z22tb..{up}z22c..{-ppdir}z22f; -draw pth3; - -penlabels(1,2,3,4,5,6,7,14,15,16,21,22,100); -endchar; % end "F" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{G} -% The letter `G'. -% \begin{macrocode} -cmchar "PGOTH letter G"; -beginchar("G", 2cap_sb#+hstretch*((7)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pickup quill; -%% bar -top y3=h; n3 := h - top y3; -lft x1 = pcshiftx; rt x2=w-pcshiftx; -y1 = y3-n3; y2=y3; -x3=1/2[x1,x2]; -pth1 := z1{pdir}..z3..z2{pdir}; -%% bowl -n1 := w; % width of bowl -n2 := h; % height of bowl -lft x4 = pcshiftx; y4 = 1/2h; -x5=x3; bot y5 = 0; -rt x6 = w-pcshiftx; y6 = 6/16h; -%% decoration -x101 = lft x3; y101=y3; -x181 = x101; y181=-h/4; z191 = 1/2[z101,z181]; -z102=(x101,y5); -z103 = (x101+3thin, y101); z104 = (x103,y102); -lft x7 = x104; y7 = 10/16[y104,y103]; -%%pth2 := z3..z4{down}..z5{right}..z6{up}..{-pdir}z7; -%%pth2 := z2{-pdir}..z3..z4{down}..z5{right}..z6{up}..{-pdir}z7; -pth2 := z2--z3..z4{down}..z5{right}..z6{up}..{-pdir}z7; -z105 = (x104,y104+4thin); z107=(x105,y105+3thin); -x185 = 2w; (z185-z105) = whatever*(pdir); -z106 = (z105--z185) intersectionpoint pth2; -z108 = (x106,y106+3thin); -%% fork -z2tr = (rt x2, top y2); -x2a = x2tr; y2a = y2tr + thin; -x2b = x2a; y2b - y2 = y2 - y2a; -x2d = x2 - thick; y2d = y2; -pickup stylus; -% finish off the fork -x2c = x2d = x2e; -top y2e = y2tr; y2c - y2d = y2d - y2e; -%%filldraw z2d--z2c{right}..z2b--cycle; -%%filldraw z2d--z2a..{left}z2e--cycle; -filldraw z2e--z2c{right}..z2b--cycle; -filldraw z2c--z2a..{left}z2e--cycle; -pth9 := (rt x2a,y2a)--(rt x2b,y2b)--(rt x2d,y2d)--cycle; -unfill pth9; -unfill pth9; -unfill pth9; -draw z101--z102; draw z103--z104; -draw z105--z106; draw z107--z108; -pickup quill; -%%ductus:=true; -if ductus: - pickup stylus; -fi -%%draw pth1; %% bar -draw pth2; %% bowl -ductus:=false; -penlabels(1,2,2a,2b,2c,2d,2e,3,4,5,6,11,12,100,101,102,103,104,181,191); -endchar; % end "G" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{H} -% The letter `H'. -% \begin{macrocode} -cmchar "PGOTH letter H"; -beginchar("H", 2cap_sb#+hstretch*((8)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric st; st := stem_width; -numeric n[]; -path pth[]; -pickup quill; -%% left stem -lft x1=pcshiftx+3st; y1=h; -x2=x1; y2=0; -z12 = 1/2[z1,z2]; -draw_upcurlstem(1,12); -draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); -% start of bowl -n1 := 12/16h; %% take this as the top of the bowl -x13=x1; y13=3/4n1; -rt x3 = w-pcshiftx; y3 = 8/16n1; -x14 = 8/16[x13,x3]; top y14 = n1; -x4 = 1/2[x14,x3]; bot y4=0; -pth1 := z13{pdir}..{right}z14..{down}z3..{-pdir}z4; -%% bottom curl -z21 = z4; -x24 = x3; top y24 = 0; -x23 = 1/2[x21,x24]; top y23 = bot y24; -pth2 := z21{-pdir}..z23..{ppdir}z24; -%% vertical decoration -z102 = 2/3[z2b,z2c]; -z182 = (x102,h); -z101 = (z102--z182) intersectionpoint pth1; -z105 = 1/2[z102,z101]; -x185 = 2w; -(z185-z105) = whatever*(pdir); -z106 = (z105--z185) intersectionpoint pth1; -z107 = (x105, y105-angdec); z187 = (x185, y185-angdec); -z108 = (z107--z187) intersectionpoint pth1; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; -pickup stylus; -draw pth2; -draw z101--z102; -draw z105--z106; draw z107--z108; -ductus:=false; -penlabels(1,2,3,4,5,6,13,14,100); -endchar; % end "H" - - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{I} -% The letter `I'. -% \begin{macrocode} -cmchar "PGOTH letter I"; -beginchar("I", 2cap_sb#+hstretch*((4+wided)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric st; st := stem_width; -pickup quill; -lft x1=lft x2=pcshiftx+3st; -y1=h; y2=0; -z12 = 1/2[z1,z2]; -draw_upcurlstem(1,12); -draw_downdiamondstem(12,2,wided, widedmin,diawd,diang); -%% vertical decoration -z102 = 2/3[z2b,z2c]; -pickup stylus; -x101=x102; top y101 = h; -draw z101--z102; -ductus:=false; -penlabels(1,2,101,102,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 "PGOTH letter J"; -beginchar("J", cap_sb#+hstretch*((4+wided)*stem_width#), - caprat*x_height#, 1/2caprat*x_height#); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric n[]; -numeric st; st := stem_width; -pickup quill; -%% stem -lft x1 = pcshiftx+3st; y1 = h; -x2=x1; y2=-d + (top y1 - bot y1); -%% bottom hook -lft x3 = pcshiftx; bot y3 = -d; -draw_upcurlstem(1,2); -draw z2{ppdir}..{-pdir}z3; -%% vertical decoration -x201 = rt x1; -x101 = x201 + 2/3wided*st; -pickup stylus; -top y101 = h; y201=y101; -z102=(x101,0); -draw z201--z101--z102; -ductus:=false; -penlabels(1,2,3,101,102,100); -endchar; % end "J" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{K} -% The letter `K'. -% \begin{macrocode} -cmchar "PGOTH letter K"; -beginchar("K", 2cap_sb#+hstretch*((8+wided)*stem_width#), - 5/4caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -path pth[]; -numeric n[]; -numeric st; st := stem_width; -pickup quill; -%% stem -n1 = 4/5h; % x-height -lft x1=lft x2=pcshiftx+3st; -y1=h; y2=0; -z12 = 1/2[z1,z2]; -draw_upcurlstem(1,12); -draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); -%% top arm -%%z3=(x1,1/2n1); -x3 = x1; top y3 = 14/16n1; -z7c = 1/2[z2,z3]; -top y3a = n1; (z3a-z3) = whatever*pdir; -rt x7a = w - pcshiftx - 2st; (z7a-z7c) = whatever*pdir; -x4 = 1/2[x3a,x7a]; y4 = y3a; -x5 = x7a; y5 = 1/2[y3a, y7a]; -z7 = (rt x7c, y7c); -pth1 := z3{pdir}..z4..z5..{-pdir}z7; -%% lower arm -z21=z7; -z24=(x5+st,y2a); -x23 = x24; y23 = 1/2[y21,y24]; -rt x25 = w-pcshiftx; bot y25 = 0; -pth2 := z21{pdir}..{down}z23..z24..{pdir}z25; -pickup quill; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; % upper bowl -draw pth2; % lower half -%% decorations -z1tr = (rt x1, top y1); -pickup stylus; -z102 = 2/3[z2b,z2c]; x101 = x102; top y101 = h; -x103 = x1tr; y103 = y101; -draw z103--z101--z102; -x105 = x101; y105 = 1/2[y7,y3]; -y185 = 2w; (z185-z105) = whatever*pdir; -z106 = (z105--z185) intersectionpoint pth1; -x107 = x105; y107 = y105-angdec; -x187 = x185; y187-y185 = y107-y105; -%%z108 = (z107--z187) intersectionpoint pth1; -draw z105--z106; -%%draw z107--z108; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,13,14,21,22,23,24,25,100); -endchar; % end "K" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{L} -% The letter `L'. -% \begin{macrocode} -cmchar "PGOTH letter L"; -beginchar("L", 2cap_sb#+hstretch*((7)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric st; st := stem_width; -pickup quill; -lft x1=pcshiftx+3st; y1=h; -x2=x1; bot y2 =0; -draw_upcurlstem(1,2); -rt x4 = w-pcshiftx; bot y4 = 0; -draw z2{right}..{pdir}z4; -%% vertical decoration -x201 = rt x1; -x101 = x201+2/3wided*st; -pickup stylus; -top y101 = h; y201 = y101; -x102 = x101; bot y102=0; -draw z201--z101--z102; -ductus:=false; -penlabels(1,2,3,4,101,102,201,100); -endchar; % end "L" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{M} -% The letter `M'. -% \begin{macrocode} -cmchar "PGOTH letter M"; -beginchar("M", 2cap_sb#+hstretch*((11)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric st; st := stem_width; -path pth[]; -pickup quill; -%%% left part -lft x301 = pcshiftx+3st; y301 = h; -x302 = x301; y302 = 0; -z312 = 1/2[z301,z302]; -draw_upcurlstem(301,312); -draw_downdiamondstem(312,302,wided,widedmin,diawd,diang); - -%% left N stem (and N part) -%%%lft x1=pcshiftx+3st; y1=h; -x1 = x301 + 3st; y1 = h; -x2=x1; y2=0; -z12 = 1/2[z1,z2]; -%%draw_upcurlstem(1,12); -%%draw_updiamondstem(1,12,wided,widedmin,diawd,diang); -draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); -% start of bowl -x13=x1; y13=3/4h; -rt x3 = w-pcshiftx; y3 = 8/16h; -x14 = 8/16[x13,x3]; top y14 = h; -x4 = 1/2[x14,x3]; bot y4=0; -pth1 := z13{pdir}..{right}z14..{down}z3..{-pdir}z4; -%% bottom curl -z21 = z4; -x24 = x3; top y24 = 0; -x23 = 1/2[x21,x24]; top y23 = bot y24; -pth2 := z21{-pdir}..z23..{ppdir}z24; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; -pickup stylus; -draw pth2; -pickup quill; -%% finish off the left part -x3011 = 1/2[x301,x1]; top y3011 = h; -z3123 = (x301,3/4h); z123 = (x1,y3123); -draw z3123--z3011--z123--z12; -%% vertical decorations - %% left part -z402 = 2/3[z302b,z302c]; -x401 = x402; z401 = whatever[z3123,z3011]; - %% right part -z102 = 2/3[z2b,z2c]; -z182 = (x102,h); -z101 = (z102--z182) intersectionpoint pth1; -%% angled decorations - %% left part -z406 = z13; -x405 = x402; (z406-z405) = whatever*pdir; -z407 = (x405, y405-angdec); z408 = (x406, y406-angdec); - %% right part -z105 = (x102,y405); -x185 = 2w; -(z185-z105) = whatever*(pdir); -z106 = (z105--z185) intersectionpoint pth1; -z107 = (x105, y105-angdec); z187 = (x185, y185-angdec); -z108 = (z107--z187) intersectionpoint pth1; -pickup stylus; -draw z401--z402; -draw z405--z406; draw z407--z408; -draw z101--z102; -draw z105--z106; draw z107--z108; -ductus:=false; -penlabels(1,2,3,4,5,6,13,14,101,102,105,106,107,108,301,302,100); -endchar; % end "M" - - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{N} -% The letter `N'. -% \begin{macrocode} -cmchar "PGOTH letter N"; -beginchar("N", 2cap_sb#+hstretch*((8)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric st; st := stem_width; -path pth[]; -pickup quill; -%% left stem -lft x1=pcshiftx+3st; y1=h; -x2=x1; y2=0; -z12 = 1/2[z1,z2]; -draw_upcurlstem(1,12); -draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); -% start of bowl -x13=x1; y13=3/4h; -rt x3 = w-pcshiftx; y3 = 8/16h; -x14 = 8/16[x13,x3]; top y14 = h; -x4 = 1/2[x14,x3]; bot y4=0; -pth1 := z13{pdir}..{right}z14..{down}z3..{-pdir}z4; -%% bottom curl -z21 = z4; -x24 = x3; top y24 = 0; -x23 = 1/2[x21,x24]; top y23 = bot y24; -pth2 := z21{-pdir}..z23..{ppdir}z24; -%% vertical decoration -z102 = 2/3[z2b,z2c]; -z182 = (x102,h); -z101 = (z102--z182) intersectionpoint pth1; -z105 = 1/2[z102,z101]; -x185 = 2w; -(z185-z105) = whatever*(pdir); -z106 = (z105--z185) intersectionpoint pth1; -z107 = (x105, y105-angdec); z187 = (x185, y185-angdec); -z108 = (z107--z187) intersectionpoint pth1; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; -pickup stylus; -draw pth2; -draw z101--z102; -draw z105--z106; draw z107--z108; -ductus:=false; -penlabels(1,2,3,4,5,6,13,14,100); -endchar; % end "N" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{O} -% The letter `O'. -% \begin{macrocode} -cmchar "PGOTH letter O"; -beginchar("O", 2cap_sb#+hstretch*((7)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -path pth[]; -pickup quill; -lft x1=pcshiftx; rt x3=w-pcshiftx; y1=y3=h/2; -x2=x4=w/2; top y2=h; bot y4=0; -pth1 := z1..z2..z3..z4..cycle; -%% vertical decoration -z101=z2; z102=z4; -z103 = (x101-perpdec, y101); z104 = (x103,y102); -%% angled decoration -z108 = (lft x3,y3); -x107 = x101; (z108-z107) = whatever*(pdir); -z105 = (x107, y107+angdec); -x106a = 2w; (z106a-z105) = whatever*(pdir); -z106 = (z105--z106a) intersectionpoint pth1; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; -pickup stylus; -draw z101--z102; draw z103--z104; -draw z105--z106; draw z107--z108; -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 "PGOTH letter P"; -beginchar("P", 2cap_sb#+hstretch*((8)*stem_width#), - caprat*x_height#, 1/2caprat*x_height#); -adjust_fit(0,0); -pcshiftx := cap_sb; -path pth[]; -numeric n[]; -numeric st; st := stem_width; -pickup quill; -%% stem -lft x1=lft x2=pcshiftx+3st; -y1=h; y2=-d; -z12 = 1/2[z1,z2]; -draw_upcurlstem(1,12); -draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); -%% vertical decoration -z1tr = (rt x1, top y1); -z102 = 2/3[z2b,z2c]; -pickup stylus; -x101 = x102; top y101 = h; -x103 = x1tr; y103 = y101; -draw z103--z101--z102; -pickup quill; -%% bowl -lft x22 = x101; top y22 = h; -x21 = x1; (z22-z21) = whatever*pdir; -rt x24 = w - pcshiftx; y24 = 1/2h; -x25 = 1/2[x22,x24]; bot y25 = 0; -pth1 := z21--z22{down}..{down}z24..{-pdir}z25; -z31 = z25; -lft x33 = pcshiftx; bot y33 = 0; -pth2 := z33{pdir}..{right}z31; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; draw pth2; -%% angled decoration -x105 = x101; y105 = 1/3h; -x185 = 2w; -(z185-z105) = whatever*pdir; -z106 = (z105--z185) intersectionpoint pth1; -z107 = (x105,y105-angdec); -x187 = x185; y107 - y105 = y187 - y185; -z108 = (z107--z187) intersectionpoint pth1; -pickup stylus; -draw z105--z106; draw z107--z108; -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 "PGOTH letter Q"; -beginchar("Q", 2cap_sb#+hstretch*((8)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -path pth[]; -pickup quill; -lft x1=pcshiftx; rt x3=w-pcshiftx-stem_width; y1=y3=h/2; -x2=x4=w/2; top y2=h; bot y4=0; -pth1 := z1..z2..z3..z4..cycle; -%% tail -pth2 := z1..z4..z3; -z11 = directionpoint pdir of pth2; -rt x13 = w-pcshiftx; bot y13 = 0; -pth3 := z11{pdir}..{pdir}z13; -%% vertical decoration -z101=z2; z102=z4; -z103 = (x101-perpdec, y101); z104 = (x103,y102); -%% angled decoration -z108 = (lft x3,y3); -x107 = x101; (z108-z107) = whatever*(pdir); -z105 = (x107, y107+angdec); -x106a = 2w; (z106a-z105) = whatever*(pdir); -z106 = (z105--z106a) intersectionpoint pth1; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; draw pth3; -pickup stylus; -draw z101--z102; draw z103--z104; -draw z105--z106; draw z107--z108; -ductus:=false; -penlabels(1,2,3,4,5,100); -endchar; % end "Q" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{R} -% The letter `R'. -% \begin{macrocode} -cmchar "PGOTH letter R"; -beginchar("R", 2cap_sb#+hstretch*((8+wided)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -path pth[]; -numeric n[]; -numeric st; st := stem_width; -pickup quill; -%% stem -n1 = h; % x-height -lft x1=lft x2=pcshiftx+3st; -y1=h; y2=0; -z12 = 1/2[z1,z2]; -draw_upcurlstem(1,12); -draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); -%% top arm -%%z3=(x1,1/2n1); -x3 = x1; top y3 = 14/16n1; -z7c = 1/2[z2,z3]; -top y3a = n1; (z3a-z3) = whatever*pdir; -rt x7a = w - pcshiftx - 2st; (z7a-z7c) = whatever*pdir; -x4 = 1/2[x3a,x7a]; y4 = y3a; -x5 = x7a; y5 = 1/2[y3a, y7a]; -z7 = (rt x7c, y7c); -pth1 := z3{pdir}..z4..z5..{-pdir}z7; -%% lower arm -z21=z7; -z24=(x5,y2a); -x23 = x24; y23 = 1/2[y21,y24]; -rt x25 = w-pcshiftx; bot y25 = 0; -pth2 := z21{pdir}..{down}z23..z24..{pdir}z25; -pickup quill; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; % upper bowl -draw pth2; % lower half -%% decorations -z1tr = (rt x1, top y1); -pickup stylus; -z102 = 2/3[z2b,z2c]; x101 = x102; top y101 = h; -x103 = x1tr; y103 = y101; -draw z103--z101--z102; -x105 = x101; y105 = 1/2[y7,y3]; -y185 = 2w; (z185-z105) = whatever*pdir; -z106 = (z105--z185) intersectionpoint pth1; -x107 = x105; y107 = y105-angdec; -x187 = x185; y187-y185 = y107-y105; -%%z108 = (z107--z187) intersectionpoint pth1; -draw z105--z106; -%%draw z107--z108; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,13,14,21,22,23,24,25,100); -endchar; % end "R" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{S} -% The letter `S'. -% \begin{macrocode} -cmchar "PGOTH letter S"; -beginchar("S", 2cap_sb#+hstretch*((8)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pcshiftx := cap_sb; -pickup quill; -pickup threequarterquill; -%% top -n1 := 1; -lft x1 = pcshiftx + n1*st; top y1 = h; -rt x3 = w - pcshiftx; y3 = y1; -x2 = 1/2[x1,x3]; top y2 = y1; -pth1 := z1..z2..{pdir}z3; -draw pth1; -%% bottom -lft x4 = pcshiftx; bot y4 = 0; -rt x6 = w -pcshiftx - n1*st; y6 = y4; -x5 = 1/2[x4,x6]; bot y5 = y4; -pth2 := z4{pdir}..z5..z6; -draw pth2; -%% top path -z100 = (1/2w, 1/2h); -z11 = z1; z15 = z6; -x13 = x100; y13 = y100 + st; -pth3 := z11..{right}z13{right}..z15; -draw pth3; -%% bottom path -z21 = z11; z25 = z6; -x23 = x100; y100 - y23 = y13 - y100; -pth4 := z21..{right}z23{right}..z25; -draw pth4; -%% decorations - %% top -z101 = (x2+angdec,y2); y181 = 0; (z101-z181) = whatever*pdir; -z102 = (z101--z181) intersectionpoint pth3; -z103 = (x101-angdec, y101); x183-x181 = x103-x101; y183 = 0; -z104 = (z103--z183) intersectionpoint pth3; - %% bottom -z201 = (x5,y5); y281 = h; (z201-z281) = whatever*pdir; -z202 = (z201--z281) intersectionpoint pth4; -z203 = (x201-angdec, y201); x283-x281 = x203-x201; y283 = h; -z204 = (z203--z283) intersectionpoint pth4; -pickup stylus; -draw z101--z102; draw z103--z104; -draw z201--z202; draw z203--z204; - - -%%ductus:=true; -if ductus: - pickup stylus; -fi -ductus:=false; -penlabels(1,2,3,4,5,6,7,11,17,20,26,27,28,100,101,102,103,104,201,202,203,204); -endchar; % end "S" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{T} -% The letter `T'. -% \begin{macrocode} -cmchar "PGOTH letter T"; -beginchar("T", 2cap_sb#+hstretch*((7)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pickup quill; -%% bar -top y3=h; n3 := h - top y3; -lft x1 = pcshiftx; rt x2=w-pcshiftx; -y1 = y3-n3; y2=y3; -x3=1/2[x1,x2]; -pth1 := z1{pdir}..z3..z2{pdir}; -%% bowl -n1 := w; % width of bowl -n2 := h; % height of bowl -lft x4 = pcshiftx; y4 = 1/2h; -x5=x3; bot y5 = 0; -rt x6 = w-pcshiftx; y6 = 6/16h; -%%pth2 := z3..z4{down}..z5{right}..z6{pdir}; -%% decoration -x101 = lft x3; y101=y3; -x181 = x101; y181=-h/4; z191 = 1/2[z101,z181]; -%%z102 = z191--z181 intersectionpoint pth2; %%% ???? NO INTERSECTION!!!!!! -z102=(x101,y5); -z103 = (x101+3thin, y101); z104 = (x103,y102); -lft x7 = x104; y7 = 10/16[y104,y103]; -pth2 := z3..z4{down}..z5{right}..z6{up}..{-pdir}z7; -z105 = (x104,y104+4thin); z107=(x105,y105+3thin); -x185 = 2w; (z185-z105) = whatever*(pdir); -z106 = (z105--z185) intersectionpoint pth2; -z108 = (x106,y106+3thin); -pickup stylus; -draw z101--z102; draw z103--z104; -draw z105--z106; draw z107--z108; -pickup quill; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; %% bar -draw pth2; %% bowl -ductus:=false; -penlabels(1,2,3,4,5,6,11,12,100,101,102,103,104,181,191); -endchar; % end "T" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{U} -% The letter `U'. -% \begin{macrocode} -cmchar "PGOTH letter U"; -beginchar("U", 2cap_sb#+hstretch*((8)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pickup quill; -%% stem tops -lft x1 = pcshiftx + 3st; y1 = h; -rt x3 = w - pcshiftx - widedmin*st; y3 = h; -% bottom of bowl -x7 = x1 - 3/2st; bot y7 = 0; -rt x9 = lft x3; bot y9 = 0; -pth1 := z7{pdir}..{pdir}z9; -draw pth1; -%% stem bottoms -z2 = (z1 -- (x1,-h)) intersectionpoint pth1; -x4 = x3; bot y4 = top y9; -draw_upcurlstem(1,2); -draw_updiamondstem(3,4,wided,widedmin,diawd,diang); -%% decorations -z1tr = (rt x1, top y1); -pickup stylus; -z99 = 2/3[z3b,z3c]; -x101 - x1 = x3 - x99; top y101 = h; -x102 = x101; y102 = y2; -x103 = x1tr; y103 = y101; -draw z103--z101--z102; -x105 = x101; y105 = 1/3h; -x106 = x3; (z106-z105) = whatever*pdir; -z107 = (x105, y105-angdec); x108 = x106; y108-y106 = y107-y105; -draw z105--z106; draw z107--z108; -%%ductus:=true; -if ductus: - pickup stylus; -fi -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,11,13,14,16,33,100); -endchar; % end "U" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{V} -% The letter `V'. -% \begin{macrocode} -cmchar "PGOTH letter V"; -beginchar("V", 2cap_sb#+hstretch*((8)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pcshiftx := cap_sb; -pickup quill; -%% left stem top -lft x1 = pcshiftx + 3st; y1 = h; -% bottom of bowl -x7 = x1 - 3/2st; bot y7 = 0; -x9 = w/2; bot y9 = 0; -pth1 := z7{pdir}..{right}z9; -draw pth1; -%% left stem bottom -x81 = x1; y81 = - h; -z2 = (z1--z81) intersectionpoint pth1; -draw_upcurlstem(1,2); -%% right stem -z6 = z9; -rt x5 = w - pcshiftx; top y5 = 3/4h; -x3 = 1/2[rt x1, lft x5]; -x4 = 1/2[x3,x5]; top y4 = h; -y3 = 1/2[y4,y5]; -pth2 := z6{pdir}..{up}z5..{left}z4..{-pdir}z3; -draw pth2; -pth3 := pth1 & pth2; -%% decoration -z1tr = (rt x1, top y1); -x101 = x1tr + 2/3wided*st; -pickup stylus; -top y101 = h; -z103 = (x1tr,y101); -z181 = (x101,-w); -z102 = (z101--z181) intersectionpoint pth3; -draw z103--z101--z102; -x105 = x101; y105 = 1/3[y102,y101]; -x185 = 2w; (z185-z105) = whatever*pdir; -z106 = (z105--z185) intersectionpoint pth2; -z107 = (x105, y105-angdec); -x187 = x185; y187-y185 = y107-y105; -z108 = (z107--z187) intersectionpoint pth2; -draw z105--z106; draw z107--z108; - -%%ductus:=true; -if ductus: - pickup stylus; -fi - -ductus:=false; -penlabels(1,2,3,4,5,11,13,14,23,26,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 "PGOTH letter W"; -beginchar("W", 2cap_sb#+hstretch*((12)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pcshiftx := cap_sb; -pickup quill; -%% top of stems -lft x1 = pcshiftx + 3st; y1 = h; -rt x999 = w - pcshiftx; -x3 = 1/2[x1,x999]; y3 = h; -%% bowl bottoms -x21 = x1 - 3/2st; bot y21 = 0; -rt x23 = lft x3; bot y23 = 0; -pth1 := z21{pdir}..z23; -draw pth1; -lft x31 = rt x23; bot y31 = top y23; -x33 = 1/2[x31,x999]; bot y33 = 0; -pth2 := z31{pdir}..z33; -draw pth2; -%% bottom of stems -z2 = (z1--(x1,0)) intersectionpoint pth1; -x4 = x3; bot y4 = top y23; -draw_upcurlstem(1,2); -draw_updiamondstem(3,4,wided,widedmin,diawd,diang); -%% right V stem -z16 = z33; -x15 = x999; top y15 = 3/4h; -x13 = 1/2[rt x3, lft x15]; -x14 = 1/2[x13,x15]; top y14 = h; -y13 = 1/2[y14,y15]; -pth3 = z16{pdir}..{up}z15..{left}z14..{-pdir}z13; -draw pth3; -%% decorations -z1tr = (rt x1, top y1); -z3tr = (rt x3, top y3); -pickup stylus; -%% for U -z99 = 2/3[z3b,z3c]; -x101 - x1 = x3 - x99; top y101 = h; -x102 = x101; y102 = y2; -x103 = x1tr; y103 = y101; -draw z103--z101--z102; -x105 = x101; y105 = 1/3h; -x106 = x3; (z106-z105) = whatever*pdir; -z107 = (x105, y105-angdec); x108 = x106; y108-y106 = y107-y105; -draw z105--z106; draw z107--z108; -%% for V - -x301 = x3tr+2/3wided*st; top y301 = y3e; -z381 = (x301,-w); -z302 = (z301--z381) intersectionpoint pth2; -draw z3e--z301--z302; -x305 = x301; y305 = 1/3[y302,y301]; -x385 = 2w; (z385-z305) = whatever*pdir; -z306 = (z305--z385) intersectionpoint pth3; -z307 = (x305, y305-angdec); -x387 = x385; y387-y385 = y307-y305; -z308 = (z307--z387) intersectionpoint pth3; -draw z305--z306; draw z307--z308; - - - -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,11,13,14,33,34,53,16,100); -endchar; % end "W" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{X} -% The letter `X'. -% \begin{macrocode} -cmchar "PGOTH letter X"; -beginchar("X", 2cap_sb#+hstretch*((8)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -path pth[]; -numeric n[]; -numeric st; st := stem_width; -pcshiftx := cap_sb; -pickup quill; -%% center stem -lft x1 = lft x2 = pcshiftx + 3st; -y1 = 3/4h; y2 = 1/4h; -draw z1--z2; -%% top right -z21 = z1; top y22 = h; (z22-z21) = whatever*pdir; -rt x24 = w-pcshiftx; y24 = y21; -pth1 := z21--z22{-ppdir}..{pdir}z24; -draw pth1; -%% bottom right -z31 = z2; -rt x33 = w-pcshiftx; bot y33 = 0; -pth2 := z31{-ppdir}..{pdir}z33; -draw pth2; -%% bottom left -z41 = z2; -bot y43 = -1/4h; (z41-z43) = whatever*pdir; -x45 = x43 + st; y45=y43; -pth3 := z41--z43{-pdir}..{pdir}z45; -pickup stylus; -draw pth3; -pickup quill; -%% top left -x11 = x1; y11 = h; -draw_upcurlstem(11,1); -%% decoration -x81 = rt x1; -pickup stylus; -x101 = x102 = x81 + 2/3wided*st; -z101 = whatever[z1,z22]; -z102 = (z101--(x101,0)) intersectionpoint pth2; -draw z101--z102; -pickup quill; -%% middle arms -z120 = 1/2[z1,z2]; -z51 = z120; -lft x53 = pcshiftx; top y53 = y51; -x52 = 1/2[x51,x53]; y52 = y51; -pth5 := z51--z52{left}..{-pdir}z53; -draw pth5; -lft x61 = x101; y61 = y120; -rt x63 = w-pcshiftx; bot y63 = y61; -x62 = 1/2[x61,x63]; y62 = y61; -pth6 := z61--z62{right}..{pdir}z63; -draw pth6; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,10,25,251,252,40,50,51,52,53,61,62,63,101,102,150,60,160,100); -endchar; % end "X" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{Y} -% The letter `Y'. -% \begin{macrocode} -cmchar "PGOTH letter Y"; -beginchar("Y", 2cap_sb#+hstretch*((8)*stem_width#), - caprat*x_height#, 1/2caprat*x_height#); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pcshiftx := cap_sb; -pickup quill; -%% stem tops -lft x1 = pcshiftx + 3st; y1 = h; -rt x3 = w - pcshiftx - widedmin*st; y3 = h; -% bottom of bowl -x7 = x1 - 3/2st; bot y7 = 0; -x9 = 1/2[x1,x3]; bot y9 = 0; -pth1 := z7{pdir}..{right}z9; -draw pth1; -%% left stem bottom -x81 = x1; y81 = - h; -z2 = (z1--z81) intersectionpoint pth1; -draw_upcurlstem(1,2); -%% right stem -x4 = x3; y4 = 0; -x5 = x4; y5 = -1/4d; -lft x6 = x9; bot y6 = -d; -draw_updiamondstem(3,4,wided,widedmin,diawd,diang); -draw z6{pdir}..{up}z5--z4; -z3cd = 1/2[z3c,z3d]; -pth2 = z5--z3a--z3cd; -%% fill bowl bottom -x91 = x3; (z91-z9) = whatever*pdir; -draw z9--z91; - -%% decoration -z1tr = (rt x1, top y1); -x101 = x1tr + 2/3wided*st; -pickup stylus; -top y101 = h; -z103 = (x1tr,y101); -z181 = (x101,-w); -z102 = (z101--z181) intersectionpoint pth1; -draw z103--z101--z102; -x105 = x101; y105 = 1/3[y102,y101]; -x185 = 2w; (z185-z105) = whatever*pdir; -z106 = (z105--z185) intersectionpoint pth2; -z107 = (x105, y105-angdec); -x187 = x185; y187-y185 = y107-y105; -z108 = (z107--z187) intersectionpoint pth2; -draw z105--z106; draw z107--z108; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,10,100,101,102,181); -endchar; % end "Y" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{Z} -% The letter `Z'. -% \begin{macrocode} -cmchar "PGOTH letter Z"; -beginchar("Z", 2cap_sb#+hstretch*((5)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pcshiftx := cap_sb; -pickup quill; -%% top bar ends -top y12 = h; -n1 := h - y12; -lft x1 = pcshiftx; rt x2 = w-pcshiftx-perpdec; -%%y1 = y12-n1; y2=y12+n1; -y1 = y12-n1/2; y2=y12; -x12 = 1/2[x1,x2]; -pth1 := z1{pdir}..z12{right}..z2{pdir}; -x102 = rt x2; y102 = top y2; x202 = x102+perpdec; y202=y102; -%% bottom bar ends -bot y34 = 0; -x3=x1+perpdec; rt x4= w-pcshiftx; -y3=y34-n1/2; y4=y34; -x34 = 1/2[x3,x4]; -pth2 := z3{pdir}..z34{right}..z4{pdir}; -x203 = lft x3; y203 = bot y3; x103 = x203-perpdec; y103=y203; -%% centre bar -z5 = (x1,1/2[y1,y3]); z6 = (x4,1/2[y2,y4]); z56 = 1/2[z5,z6]; -pth3 := z5{pdir}..z56{right}..z6{pdir}; -draw pth1; draw pth2; % bars -draw pth3; -%% decorations -pickup stylus; -draw z102--z103; draw z202--z203; -unfill z102--z103--z203--z202--cycle; -draw z102--z103; draw z202--z203; -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> -% PGOTHPUNCT.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; -x1=w/2; top y1 = 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*((3+wided+widedmin)*stem_width#), - 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 -z5=(1/2w,1/2dot_size); -x45 = x5; y45=y5+3/2dot_size; -lft x1 = pcshiftx; y1 = 3/4h; -x2 = 1/2w; top y2 = h; -rt x3 = w-pcshiftx; y3 = 11/16h; - -x4 = x45; -(z3-z4) = whatever*pdir; - -%%ductus:= true; -if ductus: - pickup stylus; -fi -%%draw z1..z2{right}..z3{down}..z4{down}; -draw z1--z2--z3--z4--z45; -draw_pdot(5, dot_size); -penlabels(1,2,3,4,45,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=1/2dot_size; -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; -z1=(w/2, 1/2dot_size); -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=3/4h; y2=1/4h; -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=3/4h; y2=1/2dot_size; -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> -% PGOTHLIG.MF Gothic Prescius 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 "c": "t"=:oct"014"; -ligtable "s": "t"=:oct"015"; - -% \end{macrocode} -% -% -% -% \begin{routine}{st} -% The `st' ligature. -% \begin{macrocode} - -cmchar "PGOTH st ligature"; -beginchar(oct"015", 2sb#+hstretch*((1 + narrowd + 3)*stem_width#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -numeric st; st := stem_width; -n1 := h/ascratio; % x-height -pickup quill; -%% the S (long) -lft x1 = pcshiftx + narrowd*st; -x2 = x1; y2 = 0; y1 = h - (top y2 - bot y2); -z12 = 1/2[z1,z2]; -draw_updiamondstem(1,12,narrowd, 1/4narrowdmin, diawd, diang); -%draw_downdiamondstem(12,2,narrowd, narrowdmin, diawd, diang); -draw z12--z2; draw_flat_foot(2); -%% the T -%% bar -lft x23 = rt x1 + pcshiftx; top y23 = n1; -rt x24 = w-pcshiftx; y24=y23; -draw z23--z24; -%% stem -lft x21 = rt x23; top y21 = h; -x22 = x21; y22 = 0; -%draw_downdiamondstem(21,22,narrowd,narrowdmin,diawd,diang); -draw z21--z22; draw_flat_foot(22); -%% the ligature -x11=x1; top y11=h; -draw z12--z11--z21; -ductus:=false; -penlabels(1,2,3,4,5,11,21,22,23,24,100); -%% end "t" -endchar; %% end st ligature - -% \end{macrocode} -% \end{routine} -% -% \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*((2)*stem_width#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb/2; -pickup threequarterquill; -lft x21=pcshiftx; rt x22=w-pcshiftx; y21=y22=1/2h; -draw z21--z22; -%%draw_roundserif(21,22,srad); draw_flatserif(22,21,srad); -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*((3)*stem_width#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb/2; -pickup threequarterquill; -lft x21=pcshiftx; rt x22=w-pcshiftx; y21=y22=1/2h; -draw z21--z22; -%%draw_roundserif(21,22,srad); draw_flatserif(22,21,srad); -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*((6)*stem_width#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb/2; -pickup threequarterquill; -lft x21=pcshiftx; rt x22=w-pcshiftx; y21=y22=1/2h; -draw z21--z22; -%%draw_roundserif(21,22,srad); draw_flatserif(22,21,srad); -penlabels(1,2); -endchar; % end of "---" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{&} -% The ampersand (which is really an `et' ligature). -% In this case, a `t' with one thin bar. -% \begin{macrocode} - -cmchar "PGOTH ampersand"; -beginchar("&", 2sb#+hstretch*((7/2)*stem_width#), asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -numeric st; st := stem_width; -pickup quill; -%% bar -lft x3 = pcshiftx; top y1 = h; -top y3 = bot y1; -rt x4 = w-pcshiftx; y4=y3; -draw z3--z4; -%% stem -lft x1 = rt x3; -x2 = x1; y2 = 0; -%draw_downdiamondstem(1,2,wided,widedmin,diawd,diang); -draw z1--z2; draw_flat_foot(2); -%% E bars -n1 = 1/2[y3,y2a] + 1/2angdec; -pickup halfquill; -lft x11 = pcshiftx; rt x12 = w-pcshiftx; -%y11=y12=n1; -y11 = y12 = 1/2h; -x13 = x11; x14=x12; y13 = y14 = n1-angdec; -draw z11--z12; -%%draw z13--z14; -ductus:=false; -penlabels(1,2,3,4,5,6,11,12,13,14,100); -endchar; % end "&" - -% \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> -% PGOTHDIG.MF Program file for Gothic Prescius digits -% - -% \end{macrocode} -% -% -% -% \begin{routine}{1} -% The digit `1'. -% \begin{macrocode} -cmchar "PGOTH digit 1"; -beginchar("1", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -x1 = x2 = 1/2w; y1 = h; y2 = 0; -z12 = 1/2[z1,z2]; -draw_updiamondstem(1,12,1/2,1/2,diawd,diang); -%draw_downdiamondstem(12,2,1/2,1/2,diawd,diang); -draw z12--z2; draw_flat_foot(2); -penlabels(1,2,100); -endchar; % end "1" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{2} -% The digit `2'. -% \begin{macrocode} -cmchar "PGOTH digit 2"; -beginchar("2", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -numeric st; st := stem_width; -numeric n[]; -n1 := 1/2st; -pickup quill; -% stem -lft x1=pcshiftx+n1; top y1=h-2n1; -rt x3=w-pcshiftx-n1; y3=3/4h; -x2=1/2[x1,x3]; top y2= h; -% foot -x5= lft x1; bot y5=0; -x6= rt x3; y6=y5; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_wave(5,6,thin); % foot -draw z1--z2--z3--z5wl; % curve -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 "PGOTH digit 3"; -beginchar("3", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -n1 := st; -pcshiftx := u; -pickup quill; -%% top -lft x1 = pcshiftx + n1; rt x3 = w - pcshiftx - n1; -x2 = 1/2[x1,x3]; x4 = 1/2[x1,x2]; -top y2 = h; y3 = 12/16h; -(z2-z1) = whatever*pdir; -(z3-z4) = whatever*pdir; -%% bottom -x5 = 12/16[x4, rt x4]; x6 = x3; x7 = x2; -x18 = x1-n1; x17 = x7; -bot y7 = thin; -y5 = 12/16[y4, top y4]; -(z5-z6) = whatever*(z2-z3); -bot y18 = 0; bot y17 = 0; - -draw z1--z2--z3--z4; % top -draw_wave(18,17,thin); -draw z5--z6--z18wr; % bottom -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,10,17,18,100); -endchar; % end "3" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{4} -% The digit `4'. -% \begin{macrocode} -cmchar "PGOTH digit 4"; -beginchar("4", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -numeric st; st := stem_width; -numeric n[]; -pcshiftx := u; -pickup quill; -% the stem -x1=x2=w-pcshiftx-(wided+widedmin)*st; -y1=h; y2=0; -% the crossbar -lft x3=pcshiftx; y3=7/16h; -rt x4=w-pcshiftx; y4=y3; -%%ductus:=true; -if ductus: - pickup stylus; -fi -%draw_downdiamondstem(1,2,wided,widedmin,diawd,diang); % stem -draw z1--z2; draw_flat_foot(2); -draw z3--z4; % horizontal -draw z1--z3; % 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 "PGOTH digit 5"; -beginchar("5", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -numeric n[]; -numeric st; st := stem_width; -n1 := st; -pickup quill; -% for the top -rt x1=w-pcshiftx; top y1=h; -lft x2=pcshiftx+n1; y2=y1; -% the S curve -x3=x2; y3=0.5h; -x4=0.5[x1,x3]; y4=0.5[y3,y5]; -rt x5=w-pcshiftx; y5=1/2[thick,y3]; -x6=w/2; bot y6=0; -%%x16 = 12/16[x3,x5]; -x16 = lft x5; -bot y16 = 0; -lft x17=pcshiftx; bot y17=0; -z167 = 1/2[z16,z17]; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_wave(2,1,thin); % top squiggle -draw z2wl--z3; % vertical -%%draw_wave(17,16,thin); % foot -draw z17{pdir}..{pdir}z16; % foot -draw z3{pdir}..z5{down}..z16; % curve -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 "PGOTH digit 6"; -beginchar("6", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -numeric st; st := stem_width; -n1 := 24/16st; -pickup quill; -%% bottom left -x1 = x4 = w/2; top y1 = h - thick; bot y4 = 0; -x2 = x3 = x1 + n1; x5 = x6 = x1 - n1; -n2 = top y1; -y2 = y6 = 3/4[y4,y1]; -y3 = y5 = 1/4[y4,y1]; -%% bowl -draw z1--z2--z3--z4--z5--z6--cycle; -%% head -x11 = x5; top y11 = h; -x12 = x2; y12 = y11; -draw_wave(11,12,thin); -x16 = x11; y16 = y11-thin; -draw z6--z16; -penlabels(1,2,3,4,5,6,12,100); -endchar; % end "6" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{7} -% The digit `7'. -% \begin{macrocode} -cmchar "PGOTH digit 7"; -beginchar("7", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% top bar -lft x1=pcshiftx; -rt x2=w-pcshiftx; -top y1=top y2=h; -% 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_wave(1,2,thin); % top bar -draw z1wr..z3..z4; -draw_flat_foot(4); -ductus:=false; -penlabels(1,2,3,4,5,6,100); -endchar; % end "7" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{8} -% The digit `8'. -% \begin{macrocode} -cmchar "PGOTH digit 8"; -beginchar("8", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -numeric alpha; alpha:=1; -pickup quill; -lft x1= pcshiftx; rt x3=w-pcshiftx; top y1 = y3 = 3/4h; -rt x2 = lft x4 = w/2; top y2=h; bot y4=0; -x5=x2; y5=h/2+2o; -lft x11=pcshiftx; rt x13=w-pcshiftx; y11 = bot y13 = 1/4h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -%%draw z1..z2..z3..z5..z11..z4..z13..z5..cycle; -draw z1--z2--z3--z11--z4--z13--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 "PGOTH digit 9"; -beginchar("9", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -numeric st; st := stem_width; -n1 := 24/16st; -pickup quill; -%% bottom left -x1 = x4 = w/2; top y1 = h; bot y4 = thick; -x2 = x3 = x1 + n1; x5 = x6 = x1 - n1; -y2 = y6 = 3/4[y4,y1]; -y3 = y5 = 1/4[y4,y1]; -%% bowl -draw z1--z2--z3--z4--z5--z6--cycle; -%% foot -x11 = x5; bot y11 = 0; -x12 = x2; y12 = y11; -draw_wave(11,12,thin); -x13 = x12; y13 = y12+thin; -draw z3--z13; -penlabels(1,2,3,4,5,6,12,100); -endchar; % end "9" - - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{0} -% The digit `0'. -% \begin{macrocode} -cmchar "PGOTH digit 0"; -beginchar("0", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -numeric st; st := stem_width; -n1 := 24/16st; -pickup quill; -%% bottom left -x1 = x4 = w/2; top y1 = h; bot y4 = 0; -x2 = x3 = x1 + n1; x5 = x6 = x1 - n1; -y2 = y6 = 3/4h; -y3 = y5 = 1/4h; - -draw z1--z2--z3--z4--z5--z6--cycle; - -penlabels(1,2,3,4,5,6,12,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}{pgoth}{} - \DeclareFontShape{OT1}{pgoth}{m}{n}{ <-8.5> pgoth7 <8.5-15> pgoth10 <15-> pgoth17 }{} - \DeclareFontShape{OT1}{pgoth}{m}{sl}{ <-> sub * pgoth/m/n }{} - \DeclareFontShape{OT1}{pgoth}{m}{it}{ <-> sub * pgoth/m/n }{} - \DeclareFontShape{OT1}{pgoth}{m}{sc}{ <-> sub * pgoth/m/n }{} - \DeclareFontShape{OT1}{pgoth}{m}{u}{ <-> sub * pgoth/m/n }{} - \DeclareFontShape{OT1}{pgoth}{bx}{n}{ <-15> pgothb10 <15-> pgothb17 }{} - \DeclareFontShape{OT1}{pgoth}{bx}{it}{ <-> sub * pgoth/bx/n }{} - \DeclareFontShape{OT1}{pgoth}{bx}{sl}{ <-> sub * pgoth/bx/n }{} - \DeclareFontShape{OT1}{pgoth}{b}{n}{ <-> sub * pgoth/bx/n }{} -%</fdot1> -% \end{macrocode} -% -% -% \begin{macrocode} -%<*fdt1> -\DeclareFontFamily{T1}{pgoth}{} - \DeclareFontShape{T1}{pgoth}{m}{n}{ <-8.5> pgoth7 <8.5-15> pgoth10 <15-> pgoth17 }{} - \DeclareFontShape{T1}{pgoth}{m}{sl}{ <-> sub * pgoth/m/n }{} - \DeclareFontShape{T1}{pgoth}{m}{it}{ <-> sub * pgoth/m/n }{} - \DeclareFontShape{T1}{pgoth}{m}{sc}{ <-> sub * pgoth/m/n }{} - \DeclareFontShape{T1}{pgoth}{m}{u}{ <-> sub * pgoth/m/n }{} - \DeclareFontShape{T1}{pgoth}{bx}{n}{ <-15> pgothb10 <15-> pgothb17 }{} - \DeclareFontShape{T1}{pgoth}{bx}{it}{ <-> sub * pgoth/bx/n }{} - \DeclareFontShape{T1}{pgoth}{bx}{sl}{ <-> sub * pgoth/bx/n }{} - \DeclareFontShape{T1}{pgoth}{b}{n}{ <-> sub * pgoth/bx/n }{} -%</fdt1> -% \end{macrocode} -% -% \section{The package code} \label{sec:code} -% -% \subsection{The \Lpack{pgothic} package} -% -% The \Lpack{pgothic} 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{pgothic}[2002/12/30 v1.0 package for Gothic Prescius 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}{\pgothfamily} -% Selects the \thisfont{} font family in the OT1 or T1 encoding. -% \begin{macrocode} -\ifx\Tienc\encodingdefault - \newcommand{\pgothfamily}{\usefont{T1}{pgoth}{m}{n}} -\else - \newcommand{\pgothfamily}{\usefont{OT1}{pgoth}{m}{n}} -\fi -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\textpgoth} -% Text command for the \thisfont{} font family. -% \begin{macrocode} -\DeclareTextFontCommand{\textpgoth}{\pgothfamily} -% \end{macrocode} -% \end{macro} -% -% The end of this package. -% \begin{macrocode} -%</usc> -% \end{macrocode} -% -% \subsection{The \Lpack{allpgoth} package} -% -% The \Lpack{allpgoth} 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{pgothic} package. -% \begin{macrocode} -%<*uscall> -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{allpgoth}[2002/12/30 v1.0 package for all Gothic Prescius fonts] -\RequirePackage{pgothic} -% \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}{pgoth} -\renewcommand{\sfdefault}{pgoth} -\renewcommand{\ttdefault}{pgoth} -% \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}{\pgoth@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{\pgoth@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}{\pgoth@new@setfontsize} -% This is a macro that replaces the |\@setfontsize| macro which is called by -% the font size changing commands. -% \begin{macrocode} -\newcommand{\pgoth@new@setfontsize}[3]{% - \edef\@tempa{\def\noexpand\@tempb####1<#2}% - \@tempa>##2<##3\@nil{\def\pgoth@baselineskip@value{##2}}% - \edef\@tempa{\noexpand\@tempb\pgoth@baselineskip@table<#2}% - \@tempa><\@nil - \ifx\pgoth@baselineskip@value\@empty - \def\pgoth@baselineskip@value{#3}% - \fi - \pgoth@old@setfontsize{#1}{#2}\pgoth@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\pgoth@old@setfontsize=\@setfontsize - \let\@setfontsize=\pgoth@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/pgothic/pgothic.ins b/Master/texmf-dist/source/latex/bookhands/pgothic/pgothic.ins deleted file mode 100644 index dc0ee1705c5..00000000000 --- a/Master/texmf-dist/source/latex/bookhands/pgothic/pgothic.ins +++ /dev/null @@ -1,101 +0,0 @@ -%% -%% pgothic.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{pgothic.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{pgothic.drv}{t}{\from{pgothic.dtx}{driver}} - -\Msg{*** Generating the Metafont files ***} - -\usepostamble\empty -\generateFile{pgoth7.mf}{t}{\from{pgothic.dtx}{base7}} -\generateFile{pgoth10.mf}{t}{\from{pgothic.dtx}{base10}} -\generateFile{pgoth17.mf}{t}{\from{pgothic.dtx}{base17}} -\generateFile{pgothb7.mf}{t}{\from{pgothic.dtx}{base7b}} -\generateFile{pgothb10.mf}{t}{\from{pgothic.dtx}{base10b}} -\generateFile{pgothb17.mf}{t}{\from{pgothic.dtx}{base17b}} -\generateFile{pgothl.mf}{t}{\from{pgothic.dtx}{min}} -\generateFile{pgothu.mf}{t}{\from{pgothic.dtx}{maj}} -\generateFile{pgothtitle.mf}{t}{\from{pgothic.dtx}{mfd}} -\generateFile{pgothpunct.mf}{t}{\from{pgothic.dtx}{punct}} -\generateFile{pgothlig.mf}{t}{\from{pgothic.dtx}{lig}} -\generateFile{pgothdig.mf}{t}{\from{pgothic.dtx}{dig}} - -\Msg{*** Generating the Font Definition files ***} -\usepostamble\defaultpostamble - -\generateFile{ot1pgoth.fd}{t}{\from{pgothic.dtx}{fdot1}} -\generateFile{t1pgoth.fd}{t}{\from{pgothic.dtx}{fdt1}} - -\Msg{*** Generating the LaTeX2e package files ***} - -\generateFile{pgothic.sty}{t}{\from{pgothic.dtx}{usc}} -\generateFile{allpgoth.sty}{t}{\from{pgothic.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 pgoth7.mf} -\Msg{* \space\space pgoth10.mf} -\Msg{* \space\space pgoth17.mf} -\Msg{* \space\space pgothb7.mf} -\Msg{* \space\space pgothb10.mf} -\Msg{* \space\space pgothb17.mf} -\Msg{* \space\space pgothl.mf} -\Msg{* \space\space pgothu.mf} -\Msg{* \space\space pgothtitle.mf} -\Msg{* \space\space pgothpunct.mf} -\Msg{* \space\space pgothlig.mf} -\Msg{* \space\space pgothdig.mf} -\Msg{*} -\Msg{* Move these into the LaTeX macro area:} -\Msg{* \space\space ot1pgoth.fd} -\Msg{* \space\space t1pgoth.fd} -\Msg{* \space\space pgothic.sty} -\Msg{* \space\space allpgoth.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 |