summaryrefslogtreecommitdiff
path: root/fonts/bookhands/sqrcaps
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /fonts/bookhands/sqrcaps
Initial commit
Diffstat (limited to 'fonts/bookhands/sqrcaps')
-rw-r--r--fonts/bookhands/sqrcaps/README86
-rw-r--r--fonts/bookhands/sqrcaps/allsqrcaps.pdfbin0 -> 71965 bytes
-rw-r--r--fonts/bookhands/sqrcaps/allsqrcaps.tex97
-rw-r--r--fonts/bookhands/sqrcaps/sqrc10.afm277
-rw-r--r--fonts/bookhands/sqrcaps/sqrc10.pfbbin0 -> 37321 bytes
-rw-r--r--fonts/bookhands/sqrcaps/sqrc10.tfmbin0 -> 684 bytes
-rw-r--r--fonts/bookhands/sqrcaps/sqrcaps.dtx4945
-rw-r--r--fonts/bookhands/sqrcaps/sqrcaps.ins107
-rw-r--r--fonts/bookhands/sqrcaps/sqrcaps.pdfbin0 -> 148378 bytes
-rw-r--r--fonts/bookhands/sqrcaps/sqrcb10.afm277
-rw-r--r--fonts/bookhands/sqrcaps/sqrcb10.pfbbin0 -> 38066 bytes
-rw-r--r--fonts/bookhands/sqrcaps/sqrcb10.tfmbin0 -> 680 bytes
-rw-r--r--fonts/bookhands/sqrcaps/trysqrcaps.pdfbin0 -> 84568 bytes
-rw-r--r--fonts/bookhands/sqrcaps/trysqrcaps.tex76
14 files changed, 5865 insertions, 0 deletions
diff --git a/fonts/bookhands/sqrcaps/README b/fonts/bookhands/sqrcaps/README
new file mode 100644
index 0000000000..65ecf40bb9
--- /dev/null
+++ b/fonts/bookhands/sqrcaps/README
@@ -0,0 +1,86 @@
+ The sqrcaps bundle provides packages and fonts for a script based on
+the Square Capitals manuscript bookhand used from the 1st century AD.
+The script consists of capital letters and digits, with some appropriate
+period punctuation marks; both normal and bold versions are supplied.
+The bundle is one of a series for bookhand scripts.
+
+Changes in version 1.1 (2005/03/31)
+o Fonts supplied as Postscript Type1 instead of MetaFont
+
+Changes in version 1.0 (2002/12/30)
+o First public release
+
+------------------------------------------------------------------
+ Author: Peter Wilson (Herries Press) herries dot press at earthlink dot net
+ Copyright 2002--2005 Peter R. Wilson
+
+ This work may be distributed and/or modified under the
+ conditions of the Latex Project Public License, either
+ version 1.3 of this license or (at your option) any
+ later version.
+ The latest version of the license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of
+ LaTeX version 2003/06/01 or later.
+
+ This work has the LPPL maintenance status "author-maintained".
+
+ This work consists of the files:
+ README (this file)
+ sqrcaps.dtx
+ sqrcaps.ins
+ sqrcaps.pdf
+ and the derived files
+ sqrcaps.sty
+ allsqrc.sty
+ ot1sqrc10.fd
+ t1sqrc10.fd
+ sqrcaps.map
+ and possibly several sqrc*.mf files
+
+
+------------------------------------------------------------------
+ The distribution consists of the following files:
+README (this file)
+sqrcaps.dtx
+sqrcaps.ins
+sqrcaps.pdf (user manual)
+trysqrcaps.tex (example usage)
+trysqrcaps.pdf
+allsqrcaps.tex (example usage)
+allsqrcaps.pdf
+sqrc10.afm
+sqrc10.pfb
+sqrc10.tfm
+sqrc10b.afm
+sqrc10b.pfb
+sqrc10b.tfm
+
+ To install the package:
+o run: latex sqrcaps.ins, which will generate:
+ sqrcaps.sty
+ *.fd files
+ sqrcaps.map
+o Move *.sty and *.fd files to a location where LaTeX will find them
+ e.g., .../texmf-local/tex/latex/sqrcaps
+o Move *.afm, *.pfb and *.tfm files to where LaTeX looks for font information
+ e.g., .../texmf-var/fonts/afm/public/bookhands/*.afm
+ .../texmf-var/fonts/type1/public/bookhands/*.pfb
+ .../texmf-var/fonts/tfm/public/bookhands/*.tfm
+o Add the *.map information to the dvips/pdftex font maps
+o Refresh the database
+ (for more information on the above see the FAQ).
+
+o run: (pdf)latex trysqrcaps for a test of the font
+
+ To generate a second copy of the manual (which is already supplied as a
+PDF file) access to the docmfp package is desireable but not essential:
+o run: latex sqrcaps.dtx
+o (for an index run: makeindex -s gind.ist *.idx)
+o run: latex *.dtx
+o Print *.dvi for a hardcopy of the package manual
+
+2005/03/31
+Peter Wilson
+herries dot press at earthlink dot net
+
diff --git a/fonts/bookhands/sqrcaps/allsqrcaps.pdf b/fonts/bookhands/sqrcaps/allsqrcaps.pdf
new file mode 100644
index 0000000000..f1de077cb3
--- /dev/null
+++ b/fonts/bookhands/sqrcaps/allsqrcaps.pdf
Binary files differ
diff --git a/fonts/bookhands/sqrcaps/allsqrcaps.tex b/fonts/bookhands/sqrcaps/allsqrcaps.tex
new file mode 100644
index 0000000000..0b8d324d7f
--- /dev/null
+++ b/fonts/bookhands/sqrcaps/allsqrcaps.tex
@@ -0,0 +1,97 @@
+% allsqrcaps.tex Test Square Capitals fonts
+\documentclass{article}
+%\documentclass[12pt]{article}
+\usepackage{allsqrc}
+
+\newcommand{\romannum}[1]{\romannumeral #1}
+\newcommand{\Romannum}[1]{\uppercase\expandafter{\romannumeral #1}}
+\newcommand{\ABC}{ABCDEFGHIJKL MNOPQRSTUVWXYZ}
+\newcommand{\abc}{abcdefghijkl mnopqrstuvwxyz}
+\newcommand{\punct}{.,;:!?`' \&{} () []}
+\newcommand{\dashes}{- -- ---}
+\newcommand{\figs}{0123456789}
+\newcommand{\sentence}{%
+this is an example of the square capitals font. now is the time for all good
+men, and women, to come to the aid of the party while the quick brown fox
+jumps over the lazy dog.}
+
+\newcommand{\Sentence}{%
+This is an example of the Square Capitals font. Now is the time for all good
+men, and women, to come to the aid of the party while the quick brown fox
+jumps over the lazy dog.}
+
+\newcommand{\latin}{Te canit adcelebratque polus rex gazifer hymnis.
+ Trans zephyrique globum scandunt tua facta per axem.
+ Explicit secunda pars summe fratris thome de aquino ordinis fratrum
+ predicatorium, longissima, prolixissima, \& tediosissima scribent;
+ Deo gratias, Deo gratias, et iterumm Deo gratias. }
+
+\title{Try Square Capitals Fonts}
+\author{}
+\date{}
+%%\pagenumbering{roman}
+\begin{document}
+\maketitle
+
+\tableofcontents
+
+\section{The character set}
+
+ This provides a short test of the characters in the Square Capitals fonts
+--- the \verb|sqrc| font family.
+
+
+
+\begin{center}
+The Square Capitals Huge normal font. \\ \par
+{\Huge \ABC\\ \abc\\ \punct{}\dashes\\ \figs\\ \par }
+\end{center}
+
+
+\begin{center}
+The Square Capitals font in its normal size \\
+{\ABC{} \abc{} \figs} \\
+\end{center}
+
+\begin{center}
+The bold normal font, the normal font, and the bold Computer Modern
+Roman, all in the normal size \\
+{\textbf{\abc{} \figs}} \\
+{\abc{} \figs} \\
+\textcmr{\textbf{\abc{} \figs}} \\
+\end{center}
+
+\begin{center}
+The bold versions, in Huge and tiny sizes. \par
+\bfseries
+\Huge \abc{} \figs \par
+\tiny \abc{} \figs \par
+\end{center}
+
+\begin{center}
+The font in the tiny size \\ \par
+{\tiny \ABC{} \\ \abc\\ \figs\\ \par }
+\end{center}
+
+\begin{center}
+ Some ligatures in the normal font \\
+{``the lazy dog --- but quick fox?''}
+\end{center}
+
+\section{Example texts}
+
+ First some well known English phrases in an abcedarian sentence.
+
+\Sentence{}
+
+ After this there are two Latin abecedarian sentences dating from about
+\Romannum{790}, and another sentence from roughly the same period.
+
+\latin{}
+
+
+\textcmss{This is the end of the test file, with this sentence being typeset
+using the Computer Modern Sans font in the point size as specified for this
+document.}
+
+\end{document}
diff --git a/fonts/bookhands/sqrcaps/sqrc10.afm b/fonts/bookhands/sqrcaps/sqrc10.afm
new file mode 100644
index 0000000000..66d394abc0
--- /dev/null
+++ b/fonts/bookhands/sqrcaps/sqrc10.afm
@@ -0,0 +1,277 @@
+StartFontMetrics 2.0
+Comment Generated by pfaedit
+Comment Creation Date: Fri Apr 1 12:13:04 2005
+FontName sqrc10
+FullName Bookhands-Square-Capitals
+FamilyName Bookhands
+Weight Regular
+Notice (Generated from MetaFont bitmap by mftrace 1.1.5, http://www.cs.uu.nl/~hanwen/mftrace/ Copyright 2005 Peter R. Wilson)
+ItalicAngle 0
+IsFixedPitch false
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.001
+EncodingScheme FontSpecific
+FontBBox 10 -330 1619 980
+CapHeight 933
+XHeight 719
+Ascender 764
+StartCharMetrics 256
+C 0 ; WX 0 ; N grave ; B 0 0 0 0 ;
+C 1 ; WX 0 ; N acute ; B 0 0 0 0 ;
+C 2 ; WX 0 ; N circumflex ; B 0 0 0 0 ;
+C 3 ; WX 0 ; N tilde ; B 0 0 0 0 ;
+C 4 ; WX 0 ; N dieresis ; B 0 0 0 0 ;
+C 5 ; WX 0 ; N hungarumlaut ; B 0 0 0 0 ;
+C 6 ; WX 0 ; N ring ; B 0 0 0 0 ;
+C 7 ; WX 0 ; N caron ; B 0 0 0 0 ;
+C 8 ; WX 0 ; N breve ; B 0 0 0 0 ;
+C 9 ; WX 0 ; N macron ; B 0 0 0 0 ;
+C 10 ; WX 0 ; N dotaccent ; B 0 0 0 0 ;
+C 11 ; WX 0 ; N cedilla ; B 0 0 0 0 ;
+C 12 ; WX 0 ; N ogonek ; B 0 0 0 0 ;
+C 13 ; WX 0 ; N quotesinglbase ; B 0 0 0 0 ;
+C 14 ; WX 0 ; N guilsinglleft ; B 0 0 0 0 ;
+C 15 ; WX 0 ; N guilsinglright ; B 0 0 0 0 ;
+C 16 ; WX 0 ; N quotedblleft ; B 0 0 0 0 ;
+C 17 ; WX 0 ; N quotedblright ; B 0 0 0 0 ;
+C 18 ; WX 0 ; N quotedblbase ; B 0 0 0 0 ;
+C 19 ; WX 0 ; N guillemotleft ; B 0 0 0 0 ;
+C 20 ; WX 0 ; N guillemotright ; B 0 0 0 0 ;
+C 21 ; WX 0 ; N endash ; B 0 0 0 0 ;
+C 22 ; WX 0 ; N emdash ; B 0 0 0 0 ;
+C 23 ; WX 0 ; N cwm ; B 0 0 0 0 ;
+C 24 ; WX 0 ; N perthousand ; B 0 0 0 0 ;
+C 25 ; WX 0 ; N dotlessi ; B 0 0 0 0 ;
+C 26 ; WX 0 ; N dotlessj ; B 0 0 0 0 ;
+C 27 ; WX 0 ; N ff ; B 0 0 0 0 ; L l ffl ; L i ffi ;
+C 28 ; WX 0 ; N fi ; B 0 0 0 0 ;
+C 29 ; WX 0 ; N fl ; B 0 0 0 0 ;
+C 30 ; WX 0 ; N ffi ; B 0 0 0 0 ;
+C 31 ; WX 0 ; N ffl ; B 0 0 0 0 ;
+C 32 ; WX 0 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 244 ; N exclam ; B 27 -16 217 719 ;
+C 34 ; WX 721 ; N quotedbl ; B 63 218 710 646 ;
+C 35 ; WX 0 ; N numbersign ; B 0 0 0 0 ;
+C 36 ; WX 0 ; N dollar ; B 0 0 0 0 ;
+C 37 ; WX 0 ; N percent ; B 0 0 0 0 ;
+C 38 ; WX 1319 ; N ampersand ; B 28 -1 1291 940 ;
+C 39 ; WX 408 ; N quoteright ; B 63 218 397 646 ;
+C 40 ; WX 0 ; N parenleft ; B 0 0 0 0 ;
+C 41 ; WX 0 ; N parenright ; B 0 0 0 0 ;
+C 42 ; WX 0 ; N asterisk ; B 0 0 0 0 ;
+C 43 ; WX 0 ; N plus ; B 0 0 0 0 ;
+C 44 ; WX 408 ; N comma ; B 62 -330 397 96 ;
+C 45 ; WX 469 ; N hyphen ; B 16 319 453 399 ;
+C 46 ; WX 212 ; N period ; B 11 -16 201 173 ;
+C 47 ; WX 0 ; N slash ; B 0 0 0 0 ;
+C 48 ; WX 829 ; N zero ; B 55 -23 774 848 ;
+C 49 ; WX 829 ; N one ; B 246 0 583 826 ;
+C 50 ; WX 829 ; N two ; B 56 -1 790 848 ;
+C 51 ; WX 829 ; N three ; B 56 -33 773 859 ;
+C 52 ; WX 829 ; N four ; B 56 0 773 826 ;
+C 53 ; WX 829 ; N five ; B 54 -1 791 826 ;
+C 54 ; WX 829 ; N six ; B 54 0 775 826 ;
+C 55 ; WX 829 ; N seven ; B 38 -1 773 826 ;
+C 56 ; WX 829 ; N eight ; B 55 -24 774 847 ;
+C 57 ; WX 829 ; N nine ; B 54 -1 775 825 ;
+C 58 ; WX 212 ; N colon ; B 11 -16 201 573 ;
+C 59 ; WX 408 ; N semicolon ; B 62 -330 397 573 ;
+C 60 ; WX 0 ; N less ; B 0 0 0 0 ;
+C 61 ; WX 0 ; N equal ; B 0 0 0 0 ;
+C 62 ; WX 0 ; N greater ; B 0 0 0 0 ;
+C 63 ; WX 773 ; N question ; B 29 -17 746 790 ;
+C 64 ; WX 0 ; N at ; B 0 0 0 0 ;
+C 65 ; WX 1060 ; N A ; B 28 -2 1032 933 ;
+C 66 ; WX 1060 ; N B ; B 28 -9 1034 936 ;
+C 67 ; WX 1060 ; N C ; B 28 0 1032 935 ;
+C 68 ; WX 1060 ; N D ; B 28 -1 1033 933 ;
+C 69 ; WX 674 ; N E ; B 28 -2 646 935 ;
+C 70 ; WX 701 ; N F ; B 29 -1 673 980 ;
+C 71 ; WX 1060 ; N G ; B 27 -1 958 933 ;
+C 72 ; WX 1060 ; N H ; B 28 -2 1032 935 ;
+C 73 ; WX 495 ; N I ; B 28 -2 467 934 ; L J IJ ;
+C 74 ; WX 642 ; N J ; B 28 -1 615 933 ;
+C 75 ; WX 1204 ; N K ; B 28 -1 1176 934 ;
+C 76 ; WX 701 ; N L ; B 28 -1 673 979 ;
+C 77 ; WX 1419 ; N M ; B 27 -3 1391 935 ;
+C 78 ; WX 1060 ; N N ; B 28 -1 1033 935 ;
+C 79 ; WX 1275 ; N O ; B 28 -22 1247 956 ;
+C 80 ; WX 988 ; N P ; B 28 -1 962 935 ;
+C 81 ; WX 1275 ; N Q ; B 28 -270 1619 956 ;
+C 82 ; WX 1132 ; N R ; B 28 -1 1104 934 ;
+C 83 ; WX 833 ; N S ; B 28 -3 806 937 ;
+C 84 ; WX 773 ; N T ; B 29 -1 745 942 ;
+C 85 ; WX 1132 ; N U ; B 26 -1 1104 935 ;
+C 86 ; WX 988 ; N V ; B 28 -1 962 934 ;
+C 87 ; WX 1634 ; N W ; B 28 -1 1608 934 ;
+C 88 ; WX 1275 ; N X ; B 28 -2 1247 935 ;
+C 89 ; WX 988 ; N Y ; B 29 -1 960 935 ;
+C 90 ; WX 988 ; N Z ; B 27 -1 961 934 ;
+C 91 ; WX 0 ; N bracketleft ; B 0 0 0 0 ;
+C 92 ; WX 721 ; N backslash ; B 10 219 658 646 ;
+C 93 ; WX 0 ; N bracketright ; B 0 0 0 0 ;
+C 94 ; WX 0 ; N asciicircum ; B 0 0 0 0 ;
+C 95 ; WX 0 ; N underscore ; B 0 0 0 0 ;
+C 96 ; WX 408 ; N quoteleft ; B 10 219 345 646 ;
+C 97 ; WX 828 ; N a ; B 27 -2 800 718 ;
+C 98 ; WX 828 ; N b ; B 28 -5 801 719 ;
+C 99 ; WX 828 ; N c ; B 28 0 800 719 ;
+C 100 ; WX 828 ; N d ; B 28 -1 800 718 ;
+C 101 ; WX 525 ; N e ; B 28 -2 497 719 ;
+C 102 ; WX 552 ; N f ; B 29 -1 524 766 ; L l fl ; L i fi ; L f ff ;
+C 103 ; WX 828 ; N g ; B 27 -1 726 718 ;
+C 104 ; WX 828 ; N h ; B 28 -1 800 719 ;
+C 105 ; WX 394 ; N i ; B 28 -1 366 720 ; L j ij ;
+C 106 ; WX 507 ; N j ; B 28 -1 481 718 ;
+C 107 ; WX 939 ; N k ; B 28 -1 911 719 ;
+C 108 ; WX 552 ; N l ; B 28 -1 524 764 ;
+C 109 ; WX 1104 ; N m ; B 27 -1 1076 720 ;
+C 110 ; WX 828 ; N n ; B 28 -2 801 720 ;
+C 111 ; WX 994 ; N o ; B 28 -22 967 742 ;
+C 112 ; WX 773 ; N p ; B 28 -1 746 719 ;
+C 113 ; WX 994 ; N q ; B 28 -258 1338 740 ;
+C 114 ; WX 884 ; N r ; B 29 -1 856 719 ;
+C 115 ; WX 654 ; N s ; B 27 -3 626 721 ;
+C 116 ; WX 608 ; N t ; B 29 -1 580 725 ;
+C 117 ; WX 884 ; N u ; B 26 -1 856 719 ;
+C 118 ; WX 773 ; N v ; B 28 -1 747 719 ;
+C 119 ; WX 1270 ; N w ; B 28 -1 1244 719 ;
+C 120 ; WX 994 ; N x ; B 27 -1 966 720 ;
+C 121 ; WX 773 ; N y ; B 29 -1 745 720 ;
+C 122 ; WX 773 ; N z ; B 27 -2 746 720 ;
+C 123 ; WX 580 ; N braceleft ; B 16 319 564 399 ;
+C 124 ; WX 1132 ; N bar ; B 16 319 1116 399 ;
+C 125 ; WX 0 ; N braceright ; B 0 0 0 0 ;
+C 126 ; WX 0 ; N asciitilde ; B 0 0 0 0 ;
+C 127 ; WX 0 ; N sfthyphen ; B 0 0 0 0 ;
+C 128 ; WX 0 ; N Abreve ; B 0 0 0 0 ;
+C 129 ; WX 0 ; N Aogonek ; B 0 0 0 0 ;
+C 130 ; WX 0 ; N Cacute ; B 0 0 0 0 ;
+C 131 ; WX 0 ; N Ccaron ; B 0 0 0 0 ;
+C 132 ; WX 0 ; N Dcaron ; B 0 0 0 0 ;
+C 133 ; WX 0 ; N Ecaron ; B 0 0 0 0 ;
+C 134 ; WX 0 ; N Eogonek ; B 0 0 0 0 ;
+C 135 ; WX 0 ; N Gbreve ; B 0 0 0 0 ;
+C 136 ; WX 0 ; N Lacute ; B 0 0 0 0 ;
+C 137 ; WX 0 ; N Lcaron ; B 0 0 0 0 ;
+C 138 ; WX 0 ; N Lslash ; B 0 0 0 0 ;
+C 139 ; WX 0 ; N Nacute ; B 0 0 0 0 ;
+C 140 ; WX 0 ; N Ncaron ; B 0 0 0 0 ;
+C 141 ; WX 0 ; N Eng ; B 0 0 0 0 ;
+C 142 ; WX 0 ; N Ohungarumlaut ; B 0 0 0 0 ;
+C 143 ; WX 0 ; N Racute ; B 0 0 0 0 ;
+C 144 ; WX 0 ; N Rcaron ; B 0 0 0 0 ;
+C 145 ; WX 0 ; N Sacute ; B 0 0 0 0 ;
+C 146 ; WX 0 ; N Scaron ; B 0 0 0 0 ;
+C 147 ; WX 0 ; N Scedilla ; B 0 0 0 0 ;
+C 148 ; WX 0 ; N Tcaron ; B 0 0 0 0 ;
+C 149 ; WX 0 ; N Tcedilla ; B 0 0 0 0 ;
+C 150 ; WX 0 ; N Uhungarumlaut ; B 0 0 0 0 ;
+C 151 ; WX 0 ; N Uring ; B 0 0 0 0 ;
+C 152 ; WX 0 ; N Ydieresis ; B 0 0 0 0 ;
+C 153 ; WX 0 ; N Zacute ; B 0 0 0 0 ;
+C 154 ; WX 0 ; N Zcaron ; B 0 0 0 0 ;
+C 155 ; WX 0 ; N Zdotaccent ; B 0 0 0 0 ;
+C 156 ; WX 0 ; N IJ ; B 0 0 0 0 ;
+C 157 ; WX 0 ; N Idotaccent ; B 0 0 0 0 ;
+C 158 ; WX 0 ; N dcroat ; B 0 0 0 0 ;
+C 159 ; WX 0 ; N section ; B 0 0 0 0 ;
+C 160 ; WX 0 ; N abreve ; B 0 0 0 0 ;
+C 161 ; WX 0 ; N aogonek ; B 0 0 0 0 ;
+C 162 ; WX 0 ; N cacute ; B 0 0 0 0 ;
+C 163 ; WX 0 ; N ccaron ; B 0 0 0 0 ;
+C 164 ; WX 0 ; N dcaron ; B 0 0 0 0 ;
+C 165 ; WX 0 ; N ecaron ; B 0 0 0 0 ;
+C 166 ; WX 0 ; N eogonek ; B 0 0 0 0 ;
+C 167 ; WX 0 ; N gbreve ; B 0 0 0 0 ;
+C 168 ; WX 0 ; N lacute ; B 0 0 0 0 ;
+C 169 ; WX 0 ; N lcaron ; B 0 0 0 0 ;
+C 170 ; WX 0 ; N lslash ; B 0 0 0 0 ;
+C 171 ; WX 0 ; N nacute ; B 0 0 0 0 ;
+C 172 ; WX 0 ; N ncaron ; B 0 0 0 0 ;
+C 173 ; WX 0 ; N eng ; B 0 0 0 0 ;
+C 174 ; WX 0 ; N ohungarumlaut ; B 0 0 0 0 ;
+C 175 ; WX 0 ; N racute ; B 0 0 0 0 ;
+C 176 ; WX 0 ; N rcaron ; B 0 0 0 0 ;
+C 177 ; WX 0 ; N sacute ; B 0 0 0 0 ;
+C 178 ; WX 0 ; N scaron ; B 0 0 0 0 ;
+C 179 ; WX 0 ; N scedilla ; B 0 0 0 0 ;
+C 180 ; WX 0 ; N tcaron ; B 0 0 0 0 ;
+C 181 ; WX 0 ; N tcedilla ; B 0 0 0 0 ;
+C 182 ; WX 0 ; N uhungarumlaut ; B 0 0 0 0 ;
+C 183 ; WX 0 ; N uring ; B 0 0 0 0 ;
+C 184 ; WX 0 ; N ydieresis ; B 0 0 0 0 ;
+C 185 ; WX 0 ; N zacute ; B 0 0 0 0 ;
+C 186 ; WX 0 ; N zcaron ; B 0 0 0 0 ;
+C 187 ; WX 0 ; N zdotaccent ; B 0 0 0 0 ;
+C 188 ; WX 0 ; N ij ; B 0 0 0 0 ;
+C 189 ; WX 0 ; N exclamdown ; B 0 0 0 0 ;
+C 190 ; WX 0 ; N questiondown ; B 0 0 0 0 ;
+C 191 ; WX 0 ; N sterling ; B 0 0 0 0 ;
+C 192 ; WX 0 ; N Agrave ; B 0 0 0 0 ;
+C 193 ; WX 0 ; N Aacute ; B 0 0 0 0 ;
+C 194 ; WX 0 ; N Acircumflex ; B 0 0 0 0 ;
+C 195 ; WX 0 ; N Atilde ; B 0 0 0 0 ;
+C 196 ; WX 0 ; N Adieresis ; B 0 0 0 0 ;
+C 197 ; WX 0 ; N Aring ; B 0 0 0 0 ;
+C 198 ; WX 0 ; N AE ; B 0 0 0 0 ;
+C 199 ; WX 0 ; N Ccedilla ; B 0 0 0 0 ;
+C 200 ; WX 0 ; N Egrave ; B 0 0 0 0 ;
+C 201 ; WX 0 ; N Eacute ; B 0 0 0 0 ;
+C 202 ; WX 0 ; N Ecircumflex ; B 0 0 0 0 ;
+C 203 ; WX 0 ; N Edieresis ; B 0 0 0 0 ;
+C 204 ; WX 0 ; N Igrave ; B 0 0 0 0 ;
+C 205 ; WX 0 ; N Iacute ; B 0 0 0 0 ;
+C 206 ; WX 0 ; N Icircumflex ; B 0 0 0 0 ;
+C 207 ; WX 0 ; N Idieresis ; B 0 0 0 0 ;
+C 208 ; WX 0 ; N Eth ; B 0 0 0 0 ;
+C 209 ; WX 0 ; N Ntilde ; B 0 0 0 0 ;
+C 210 ; WX 0 ; N Ograve ; B 0 0 0 0 ;
+C 211 ; WX 0 ; N Oacute ; B 0 0 0 0 ;
+C 212 ; WX 0 ; N Ocircumflex ; B 0 0 0 0 ;
+C 213 ; WX 0 ; N Otilde ; B 0 0 0 0 ;
+C 214 ; WX 0 ; N Odieresis ; B 0 0 0 0 ;
+C 215 ; WX 0 ; N OE ; B 0 0 0 0 ;
+C 216 ; WX 0 ; N Oslash ; B 0 0 0 0 ;
+C 217 ; WX 0 ; N Ugrave ; B 0 0 0 0 ;
+C 218 ; WX 0 ; N Uacute ; B 0 0 0 0 ;
+C 219 ; WX 0 ; N Ucircumflex ; B 0 0 0 0 ;
+C 220 ; WX 0 ; N Udieresis ; B 0 0 0 0 ;
+C 221 ; WX 0 ; N Yacute ; B 0 0 0 0 ;
+C 222 ; WX 0 ; N Thorn ; B 0 0 0 0 ;
+C 223 ; WX 0 ; N SS ; B 0 0 0 0 ;
+C 224 ; WX 0 ; N agrave ; B 0 0 0 0 ;
+C 225 ; WX 0 ; N aacute ; B 0 0 0 0 ;
+C 226 ; WX 0 ; N acircumflex ; B 0 0 0 0 ;
+C 227 ; WX 0 ; N atilde ; B 0 0 0 0 ;
+C 228 ; WX 0 ; N adieresis ; B 0 0 0 0 ;
+C 229 ; WX 0 ; N aring ; B 0 0 0 0 ;
+C 230 ; WX 0 ; N ae ; B 0 0 0 0 ;
+C 231 ; WX 0 ; N ccedilla ; B 0 0 0 0 ;
+C 232 ; WX 0 ; N egrave ; B 0 0 0 0 ;
+C 233 ; WX 0 ; N eacute ; B 0 0 0 0 ;
+C 234 ; WX 0 ; N ecircumflex ; B 0 0 0 0 ;
+C 235 ; WX 0 ; N edieresis ; B 0 0 0 0 ;
+C 236 ; WX 0 ; N igrave ; B 0 0 0 0 ;
+C 237 ; WX 0 ; N iacute ; B 0 0 0 0 ;
+C 238 ; WX 0 ; N icircumflex ; B 0 0 0 0 ;
+C 239 ; WX 0 ; N idieresis ; B 0 0 0 0 ;
+C 240 ; WX 0 ; N eth ; B 0 0 0 0 ;
+C 241 ; WX 0 ; N ntilde ; B 0 0 0 0 ;
+C 242 ; WX 0 ; N ograve ; B 0 0 0 0 ;
+C 243 ; WX 0 ; N oacute ; B 0 0 0 0 ;
+C 244 ; WX 0 ; N ocircumflex ; B 0 0 0 0 ;
+C 245 ; WX 0 ; N otilde ; B 0 0 0 0 ;
+C 246 ; WX 0 ; N odieresis ; B 0 0 0 0 ;
+C 247 ; WX 0 ; N oe ; B 0 0 0 0 ;
+C 248 ; WX 0 ; N oslash ; B 0 0 0 0 ;
+C 249 ; WX 0 ; N ugrave ; B 0 0 0 0 ;
+C 250 ; WX 0 ; N uacute ; B 0 0 0 0 ;
+C 251 ; WX 0 ; N ucircumflex ; B 0 0 0 0 ;
+C 252 ; WX 0 ; N udieresis ; B 0 0 0 0 ;
+C 253 ; WX 0 ; N yacute ; B 0 0 0 0 ;
+C 254 ; WX 0 ; N thorn ; B 0 0 0 0 ;
+C 255 ; WX 0 ; N germandbls ; B 0 0 0 0 ;
+EndCharMetrics
+EndFontMetrics
diff --git a/fonts/bookhands/sqrcaps/sqrc10.pfb b/fonts/bookhands/sqrcaps/sqrc10.pfb
new file mode 100644
index 0000000000..c2344436ed
--- /dev/null
+++ b/fonts/bookhands/sqrcaps/sqrc10.pfb
Binary files differ
diff --git a/fonts/bookhands/sqrcaps/sqrc10.tfm b/fonts/bookhands/sqrcaps/sqrc10.tfm
new file mode 100644
index 0000000000..8a975b0a70
--- /dev/null
+++ b/fonts/bookhands/sqrcaps/sqrc10.tfm
Binary files differ
diff --git a/fonts/bookhands/sqrcaps/sqrcaps.dtx b/fonts/bookhands/sqrcaps/sqrcaps.dtx
new file mode 100644
index 0000000000..4227faece5
--- /dev/null
+++ b/fonts/bookhands/sqrcaps/sqrcaps.dtx
@@ -0,0 +1,4945 @@
+% \iffalse meta-comment
+%
+% sqrcaps.dtx
+%
+% Author: Peter Wilson (Herries Press) herries dot press at earthlink dot net
+% Copyright 2002--2005 Peter R. Wilson
+%
+% This work may be distributed and/or modified under the
+% conditions of the Latex Project Public License, either
+% version 1.3 of this license or (at your option) any
+% later version.
+% The latest version of the license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of
+% LaTeX version 2003/06/01 or later.
+%
+% This work has the LPPL maintenance status "author-maintained".
+%
+% This work consists of the files listed in the README file.
+%
+% If you do not have the docmfp package (available from CTAN in
+% tex-archive/macros/latex/contrib), comment out the
+% \usepackage{docmfp} line below and uncomment the line following it.
+%
+%<*driver>
+\documentclass[twoside]{ltxdoc}
+\usepackage{docmfp}
+%%%%%% \providecommand{\DescribeVariable}[1]{} \newenvironment{routine}[1]{}{}
+\usepackage{url}
+\usepackage[draft=false,
+ plainpages=false,
+ pdfpagelabels,
+ bookmarksnumbered,
+ hyperindex=false
+ ]{hyperref}
+\providecommand{\phantomsection}{}
+\OnlyDescription %% comment this out for the full glory
+\EnableCrossrefs
+\CodelineIndex
+\setcounter{StandardModuleDepth}{1}
+\makeatletter
+ \@mparswitchfalse
+\makeatother
+\renewcommand{\MakeUppercase}[1]{#1}
+\pagestyle{headings}
+\newenvironment{addtomargins}[1]{%
+ \begin{list}{}{%
+ \topsep 0pt%
+ \addtolength{\leftmargin}{#1}%
+ \addtolength{\rightmargin}{#1}%
+ \listparindent \parindent
+ \itemindent \parindent
+ \parsep \parskip}%
+ \item[]}{\end{list}}
+\begin{document}
+ \raggedbottom
+ \DocInput{sqrcaps.dtx}
+\end{document}
+%</driver>
+%
+% \fi
+%
+% \CheckSum{136}
+%
+% \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}
+% \changes{v1.1}{2005/03/31}{Minor changes due to changed circumstances}
+%
+% \def\fileversion{v1.0} \def\filedate{2002/12/30}
+% \def\fileversion{v1.1} \def\filedate{2005/03/31}
+% \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}{Square Capitals}
+%
+% \title{The \Lpack{Square Capitals} fonts\thanks{This
+% file has version number \fileversion, last revised
+% \filedate.}}
+%
+% \author{%
+% Peter Wilson\thanks{\texttt{herries dot press at earthlink dot net}}\\
+% Herries Press
+% }
+% \date{\filedate}
+% \maketitle
+% \begin{abstract}
+% The \Lpack{sqrcaps} and \Lpack{allsqrc} packages provide a set of
+% \thisfont{} book-hands as used
+% for manuscripts from the 1st to the 16th century. This is one in a series
+% of manuscript fonts.
+% \end{abstract}
+% \tableofcontents
+% \listoftables
+%
+%
+%
+%
+% \section{Introduction}
+%
+% The \Lpack{sqrcaps} and \Lpack{allsqrc} packages provide a PostScript
+% Type1 version (based on a Metafont~\cite{METAFONT} design)
+% of the \thisfont{} manuscript book-hand that was in use between about the
+% first and sixteenth centuries~\AD. It is part of a project to provide fonts
+% covering the major manuscript hands between the first century~\AD{} and
+% the invention of printing. The principal resources used in this project
+% are listed in the Bibliography.
+%
+% This manual is typeset according to the conventions of the
+% \LaTeX{} \textsc{docstrip} utility which enables the automatic
+% extraction of the \LaTeX{} macro source files~\cite{GOOSSENS94}.
+% The \Lpack{docmfp} package is used for documenting the Metafont portions
+% of the distribution~\cite{DOCMFP}.
+%
+% Section~\ref{sec:usc} describes the usage of the package.
+% Commented code may be in later sections.
+%
+% \subsection{Manuscript book-hands}
+%
+% Before the invention of printing all books were written by hand. The book-hands
+% used by the scribes and copyists for the manuscripts changed as time
+% went on. Table~\ref{tab:1} lists some of the common book-hands which were used
+% between the 1st and 15th centuries. The later book-hands formed the basis of the
+% fonts used by the early printers, which in turn form the basis of the printing
+% fonts in use today.
+%
+% The manuscript book-hands were written with a broad nibbed reed or quill
+% pen. Among the distinguishing characteristics of a hand, apart from the
+% actual shape of the letters, are the angle of the pen (which controls the
+% variation between thick and thin strokes) and the height of a letter compared
+% to the width of the nib. The lower the ratio of the letter height to nib
+% width, the more condensed is the script. The scripts also varied in their
+% typical height.
+%
+% Table~\ref{tab:1} gives an `average' x-height for each
+% script, which I obtained by measuring a sample of photographs of
+% manuscripts written in the various hands. About a dozen examples
+% of each book-hand were measured. This figure should not be taken too
+% seriously.
+%
+% There was not a sharp division between the use of one hand and another.
+% Many manuscripts exhibit a variety of hands in the same document. For example,
+% the scribe writing in an Uncial hand may have used Roman Rustic letters
+% for capitals. Usually the same pen was used for the two different scripts.
+%
+% Generally speaking, as a hand got older it became more embelished, and
+% therefore took longer to write. As this happened a new hand would appear that
+% was faster, and which would eventually make the earlier one obsolete.
+%
+% Many of the book-hands were single-cased; that is, they did not have an
+% upper- and lower-case as we do nowadays in Western scripts. On the other
+% hand, a script might be majuscule or minuscule. A \textit{majuscule} script
+% is one, like our upper-case, where the letters are drawn between two lines
+% and are of a uniform height with no ascenders or descenders.
+% A \textit{minuscule} script, like our lower-case, is drawn between four lines
+% and has ascenders and descenders.
+%
+% \begin{table}
+% \centering
+% \caption{The main manuscript book-hands} \label{tab:1}
+% \begin{tabular}{lccccc} \hline
+% Name & Century & x-height & Height & Pen & Normalised \\
+% & & (mm) & (nib widths) & angle & height \\ \hline
+% Roman Rustic & 1--6 & 5.7 & 4--6 & 45 & 1.90 \\
+% Uncial & 3--6 & 4.1 & 4--5 & 30 & 1.37 \\
+% Half Uncial & 3--9 & 3.2 & 3--6 & 20--30 & 1.07 \\
+% Artificial Uncial & 6--10 & 4.2 & 3--6 & 10 & 1.40 \\
+% Insular majuscule & 6--9 & 4.2 & 5 & 0--20 & 1.40 \\
+% Insular minuscule & 6 onward & 4.1 & 5--6 & 45--70 & 1.37 \\
+% Carolingian minuscule & 8--12 & 3.0 & 3--5 & 45 & 1.00 \\
+% Early Gothic & 11--12 & 3.8 & 4--6 & 20--45 & 1.27 \\
+% Gothic Textura & 13--15 & 3.9 & 3--5 & 30--45 & 1.30 \\
+% Gothic Prescius & 13 onward & 3.3 & 4--5 & 45 & 1.10 \\
+% Rotunda & 13--15 & 3.2 & 4--6 & 30 & 1.07 \\
+% Humanist minuscule & 14 onward & 3.0 & 4--5 & 30--40 & 1.00 \\ \hline
+% \end{tabular}
+% \end{table}
+%
+% During the period under consideration arabic numerals were effectively
+% not used. At the beginning they were unknown and even though some knew
+% of them towards the end, the glyphs used for them are not recognisable ---
+% to me they look somewhat like cryllic letters --- and each locality
+% and time had its own highly individualistic rendering. The general rule
+% when using one of these book-hands is to write all numbers using
+% roman numerals.
+%
+% The Roman alphabet consisted of 23 capital letters --- the J, U and W
+% were absent. The book-hands initially used both a `u' and a `v' interchangeably
+% but by the 10th century the practice had become to use the `v' before a vowel
+% and the `u' otherwise. The letter corresponding to the W sound appeared
+% in England around the 7th century in
+% the form of the runic \textit{wen} character and by about the 11th century
+% the `w' chacter was generally used. The `J' is the newest letter of all, not
+% appearing until about the mid 16th century.
+%
+% In the first century punctuation was virtually unknown, and typically
+% would not even be any additional space between individual words, never
+% mind denoting ends of sentences. Sometimes a dot at mid-height would be
+% used as a word seperator, or to mark off the end of a paragraph. Effectively
+% a text was a continuous stream of letters. By the time that printing was
+% invented, though, all of our modern punctuation marks were being used.
+%
+% Among all these manuscript hands, the Carolingian minuscule is the
+% most important as our modern fonts are based on its letter shapes, and it is
+% also at this point in time where the division occured between the black letter
+% scripts as used even today in Germany, and the lighter fonts used elesewhere.
+% The Rotunda and Humanist minuscule hands were developed in Italy and were
+% essentially a rediscovery of the Carolingian minusucle. Guthenberg took the
+% Gothic scripts as the model for his types. Later printers,
+% such as Nicholas Jenson of Venice,
+% took the Humanist scripts as their models.
+%
+%
+% \subsection{The \thisfont{} script}
+%
+% The \thisfont{} hand was in use from the first century onwards. It
+% is a majestic hand and very time-consuming to use; there are only two known
+% manuscripts written in it. However, characters from the script were
+% used as capital letters for many other hands throughout the whole period.
+%
+% Some calligraphers say that it is easier to draw or paint the characters
+% rather than use a broad nibbed pen. If a pen is used, then the nib is used
+% in a variety of angles, and for some parts of a character just a corner might
+% be used to fill in an awkward space.
+%
+%
+% \section{The \Lpack{sqrcaps} and \Lpack{allsqrc} packages} \label{sec:usc}
+%
+% The \thisfont{} font family is called |sqrc|. The font is supplied in both
+% OT1 and T1 encodings.
+%
+% \subsection{The \Lpack{sqrcaps} 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{\sqrcfamily}
+% The |\sqrcfamily| 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{\textsqrc}
+% The command |\textsqrc{|\meta{text}|}| will typeset \meta{text} using the
+% \thisfont{} fonts.
+%
+% \subsection{The \Lpack{allsqrc} 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{allsqrc} package automatically loads the \Lpack{sqrcaps} 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 \emph{The Art of Written Forms: The Theory and Practice of Calligraphy}.
+% \newblock Holt, Rinehart and Winston, 1969.
+%
+% \bibitem[Bol95]{BOLOGNA95}
+% Giulia Bologna.
+% \newblock \emph{Illuminated Manuscripts: The Book before Gutenberg}.
+% \newblock Crescent Books, 1995.
+%
+% \bibitem[Day95]{DAY95}
+% Lewis F.~Day.
+% \newblock \emph{Alphabets Old \& New}.
+% \newblock (3rd edition originally published by B.~T.~Batsford, 1910)
+% \newblock Senate, 1995.
+%
+% \bibitem[Dro80]{DROGIN80}
+% Marc Drogin.
+% \newblock \emph{Medieval Calligraphy: Its History and Technique}.
+% \newblock Allenheld, Osmun \& Co., 1980.
+%
+% \bibitem[Dru95]{DRUCKER95}
+% Johanna Drucker.
+% \newblock \emph{The Alphabetic Labyrinth}.
+% \newblock Thames \& Hudson, 1995.
+%
+% \bibitem[Fir93]{FIRMAGE93}
+% Richard A.~Firmage.
+% \newblock \emph{The Alphabet Abecedarium}.
+% \newblock David R~Goodine, 1993.
+%
+% \bibitem[Har95]{HARRIS95}
+% David Harris.
+% \newblock \emph{The Art of Calligraphy}.
+% \newblock DK Publishing, 1995.
+%
+% \bibitem[Jen95]{BETON}
+% Frank Jensen.
+% \newblock \emph{The BETON package}.
+% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}).
+% \newblock 1995.
+%
+% \bibitem[Joh71]{JOHNSTON75}
+% Edward Johnston (ed. Heather Child).
+% \newblock \emph{Formal Penship and Other Papers}.
+% \newblock Penthalic, 1971.
+%
+% \bibitem[Knu87]{CM}
+% Donald E.~Knuth.
+% \newblock \emph{Computer Modern Typefaces}.
+% \newblock Addison-Wesley, 1987.
+%
+% \bibitem[Knu92]{METAFONT}
+% Donald E.~Knuth.
+% \newblock \emph{The METAFONTbook}.
+% \newblock Addison-Wesley, 1992.
+%
+% \bibitem[GMS94]{GOOSSENS94}
+% Michel Goossens, Frank Mittelbach, and Alexander Samarin.
+% \newblock \emph{The LaTeX Companion}.
+% \newblock Addison-Wesley Publishing Company, 1994.
+%
+% \bibitem[Tho75]{THOMAS75}
+% Alan G.~Thomas.
+% \newblock \emph{Great Books and Book Collectors}.
+% \newblock Weidenfield and Nichoson, 1975.
+%
+% \bibitem[Wil99]{DOCMFP}
+% Peter R.~Wilson.
+% \newblock \emph{The DOCMFP Package}.
+% \newblock (Available from CTAN in \texttt{macros/latex/contrib}).
+% \newblock 1999.
+%
+% \bibitem[Wil99b]{ROMANNUM}
+% Peter R.~Wilson.
+% \newblock \emph{The ROMANNUM Package}.
+% \newblock (Available from CTAN in \texttt{macros/latex/contrib}).
+% \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>%%% SQRC7.MF Square Capitals at 7 point design size.
+%<base10>%%% SQRC10.MF Square Capitals at 10 point design size.
+%<base17>%%% SQRC17.MF Square Capitals at 17 point design size.
+%<base7b>%%% SQRCB7.MF Square Capitals Bold at 7 point design size.
+%<base10b>%%% SQRCB10.MF Square Capitals Bold at 10 point design size.
+%<base17b>%%% SQRCB17.MF Square Capitals 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:="SQRC"; font_size 7pt#;
+%<base10>font_identifier:="SQRC"; font_size 10pt#;
+%<base17>font_identifier:="SQRC"; font_size 17.28pt#;
+%<base7b>font_identifier:="SQRCB"; font_size 7pt#;
+%<base10b>font_identifier:="SQRCB"; font_size 10pt#;
+%<base17b>font_identifier:="SQRCB"; font_size 17.28pt#;
+
+% \end{macrocode}
+%
+% \DescribeVariable{jutstretch}
+% The CMR scaling for lowercase serifs wrt 17pt size.
+% \begin{macrocode}
+%<base7|base7b> jutstretch:=1.19;
+%<base10|base10b> jutstretch:=1.152;
+%<base17|base17b> jutstretch:=1.0;
+% \end{macrocode}
+%
+% \DescribeVariable{stemstretch}
+% The CMR scaling for lowercase stem widths wrt 17pt size.
+% \begin{macrocode}
+%<base7|base7b> stemstretch:=1.50;
+%<base10|base10b> stemstretch:=1.31;
+%<base17|base17b> stemstretch:=1.0;
+% \end{macrocode}
+%
+% \DescribeVariable{caprat}
+% The scaling for `capitals' wrt `lowercase'. This is pretty much a guess
+% (the ratio for CMR10 is 1.59).
+% \begin{macrocode}
+ caprat:=1.3; % ratio of capital height to minuscule height
+% \end{macrocode}
+%
+% \DescribeVariable{cap_jutstretch}
+% The CMR scaling for uppercase serifs wrt 17pt size.
+% \begin{macrocode}
+%<base7|base7b> cap_jutstretch:=1.3;
+%<base10|base10b> cap_jutstretch:=1.2;
+%<base17|base17b> cap_jutstretch:=1.0;
+% \end{macrocode}
+%
+% \DescribeVariable{cap_stemstretch}
+% The CMR scaling for uppercase stem width wrt 17pt size.
+% \begin{macrocode}
+%<base7|base7b> cap_stemstretch:=1.45;
+%<base10|base10b> cap_stemstretch:=1.31;
+%<base17|base17b> cap_stemstretch:=1.0;
+% \end{macrocode}
+%
+% \DescribeVariable{bfudge}
+% Letter width scaling for bold font wrt normal font.
+% \begin{macrocode}
+%<base7|base10|base17> bfudge:=1.0;
+%<base7b|base10b|base17b> bfudge:=1.2;
+% \end{macrocode}
+%
+% \DescribeVariable{szfudge}
+% Width scaling wrt 17pt letter width.
+% \begin{macrocode}
+%<base7|base7b> szfudge:=1.18;
+%<base10|base10b> szfudge:=1.0;
+%<base17|base17b> szfudge:=1.0;
+% \end{macrocode}
+%
+% \DescribeVariable{hstretch}
+% Horizontal stretching factor wrt 17pt size letter width.
+% \begin{macrocode}
+ hstretch:=szfudge*bfudge;
+% \end{macrocode}
+%
+% \DescribeVariable{carol_height}
+% The x-height of the Carolingian minuscule font.
+% \begin{macrocode}
+%<base7|base7b> carol_height#:=108.5/36pt#;
+%<base10|base10b> carol_height#:=155/36pt#;
+%<base17|base17b> carol_height#:=268/36pt#;
+% \end{macrocode}
+%
+% \DescribeVariable{vstretch}
+% The height of this font wrt the Carolingian font.
+% \begin{macrocode}
+ vstretch:=5/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.
+% \begin{macrocode}
+%<base7|base7b> sb#:=1/2u#; % unit for side bearings
+%<base10|base10b> sb#:=1/2u#; % unit for side bearings
+%<base17|base17b> sb#:=1/2u#; % unit for side bearings
+
+% \end{macrocode}
+%
+% \DescribeVariable{cap_height}
+% The height of capital letters.
+% \begin{macrocode}
+%<base7|base7b> cap_height#:=172.2/36pt#; % height of caps
+%<base10|base10b> cap_height#:=246/36pt#; % height of caps
+%<base17|base17b> cap_height#:=425/36pt#; % height of caps
+% \end{macrocode}
+%
+% \DescribeVariable{thickfudge}
+% The reciprocal of the font height in nib widths. Normal font height
+% is 5 nib widths and the bold font height is 4 nib widths.
+% \begin{macrocode}
+%<base7|base10|base17> thickfudge:=1/5;
+%<base7b|base10b|base17b> thickfudge:=1/4;
+% \end{macrocode}
+%
+% \DescribeVariable{thinfudge}
+% The nib sharpness.
+% \begin{macrocode}
+thinfudge:=1/6;
+% \end{macrocode}
+%
+% \DescribeVariable{thick}
+% The maximum nib width.
+% That is, the width of the thickest line that can be penned.
+% \begin{macrocode}
+thick#:=stemstretch*thickfudge*x_height#; % max pen breadth
+% \end{macrocode}
+%
+% \DescribeVariable{thin}
+% The nib thinness.
+% That is, the width of the thinnest line that can be penned.
+% \begin{macrocode}
+thin#:=thinfudge*thick#;
+% \end{macrocode}
+%
+% \DescribeVariable{pangle}
+% The pen angle (in degrees).
+% \begin{macrocode}
+pangle:=10; % pen angle
+% \end{macrocode}
+%
+% \DescribeVariable{ascratio}
+% The height of lower case ascenders wrt |x_height|.
+% \begin{macrocode}
+ ascratio:=1.0;
+% \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:=0;
+% \end{macrocode}
+%
+% \DescribeVariable{desc_depth}
+% The depth of lower case descenders.
+% \begin{macrocode}
+ desc_depth#:=descratio*x_height#;
+% \end{macrocode}
+%
+% \DescribeVariable{fig_height}
+% The height of numerals. Make these midway between normal and capital
+% letters.
+% \begin{macrocode}
+ fig_height#:=(0.5[1,caprat])*x_height#;
+% \end{macrocode}
+%
+% \DescribeVariable{fig_width}
+% The width of numerals. All numerals are the same width (roughly, an `o').
+% \begin{macrocode}
+ fig_width#:=hstretch*(x_height#);
+% \end{macrocode}
+%
+% \DescribeVariable{body_height}
+% The height of the tallest character.
+% \begin{macrocode}
+ body_height#:=caprat*asc_height#;
+% \end{macrocode}
+%
+% \DescribeVariable{body_depth}
+% The depth of the lowest character.
+% \begin{macrocode}
+ body_depth#:=caprat*desc_depth#;
+% \end{macrocode}
+%
+% \DescribeVariable{half_height}
+% Half the normal letter height.
+% \begin{macrocode}
+ half_height#:=1/2x_height#; % half the height of x height letters
+
+% \end{macrocode}
+%
+% \DescribeVariable{side}
+% We might be using a square for the character design.
+% \begin{macrocode}
+side#:=x_height#;
+% \end{macrocode}
+%
+% \DescribeVariable{rule_thickness}
+% Thickness of rules (in math symbols). The CMR values are used.
+% \begin{macrocode}
+%<base7|base7b> rule_thickness#:=.34pt#;
+%<base10|base10b> rule_thickness#:=.4pt#;
+%<base17|base17b> rule_thickness#:=.6pt#;
+
+% \end{macrocode}
+%
+% \DescribeVariable{jutfudge}
+% Controls the protrusion of serifs.
+% \begin{macrocode}
+%%%jutfudge:= 3/4;
+jutfudge:= 1/2;
+% \end{macrocode}
+%
+% \DescribeVariable{jut}
+% The lowercase serif protrusion.
+% \begin{macrocode}
+jut#:=jutstretch*jutfudge*thick#;
+% \end{macrocode}
+%
+% \DescribeVariable{sqrcjut}
+% Square Captitals flat serif protrusion.
+% \begin{macrocode}
+\sqrcjut# := 2cap_jutstretch*thin#;
+% \end{macrocode}
+%
+% \DescribeVariable{sqrcjutrat}
+% Ration of Square Captitals thin triangle serif to flat serif protrusion.
+% \begin{macrocode}
+\sqrcjutrat := 2;
+% \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{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 sqrctitle %% 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 SQRCTITLE.MF for the Square Capitals 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}{sqrcaps_font_setup}
+% This macro contains the set up for the \thisfont{} fonts.
+% \begin{macrocode}
+
+def sqrcaps_font_setup= % contains special stuff for sqrcaps 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);
+ 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(sqrcjut);
+ 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}
+%
+% \DescribeVariable{thinquill}
+% A narrow pen with a fraction of the width as quill (but with the same thinness).
+% \begin{macrocode}
+ pickup pencircle xscaled 3/8thick yscaled thin rotated pangle; %% 1/4 too small
+ thinquill := 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 sqrcaps_font_setup
+
+% \end{macrocode}
+% \end{routine}
+%
+%
+% \DescribeVariable{ductus}
+% A boolean to control drawing the ductus (TRUE) or the full letter (FALSE).
+% \begin{macrocode}
+boolean ductus;
+ductus:=false;
+% \end{macrocode}
+%
+% \DescribeVariable{qhor}
+% \DescribeVariable{qvert}
+% The cosine and sine of the pen angle.
+% \begin{macrocode}
+numeric qhor, qvert;
+qhor:=cosd(pangle); qvert:=sind(pangle);
+% \end{macrocode}
+%
+% \DescribeVariable{pdir}
+% The vector corresponding to the pen angle.
+% \begin{macrocode}
+pair pdir; pdir=dir(pangle);
+% \end{macrocode}
+%
+% \DescribeVariable{ppdir}
+% The vector that is perpendicular (anticlockwise) to the pen angle.
+% \begin{macrocode}
+pair ppdir; ppdir=dir(pangle+90);
+% \end{macrocode}
+%
+% \begin{routine}{draw_serif}
+% A macro to draw a serif. |draw_serif(1,2,f)| uses the current pen to
+% draw a serif of extent |jut| at |z1| to the left of the line from |z2|
+% to |z1|. The
+% radius is controlled by |f|, where $0<f<1$. The `stem' from |z1| to |z2|
+% starts at the point |z1a|.
+% \begin{macrocode}
+
+def draw_serif(suffix $, $$)(expr fr)=
+ numeric beta, ajut, bjut;
+% \end{macrocode}
+% |fr| and |beta| control the serif radius.
+% \begin{macrocode}
+ beta=1-fr;
+ ajut=fr*jut; bjut=beta*jut;
+% \end{macrocode}
+% The points |$c|, |$b| and |$a| define the serif. For a top (bottom) serif
+% the leftmost (rightmost) point is
+% |$c| and |$a| is on the stem. |$a| is moved from |$| towards |$$| by the
+% distance |ajut|, and the other points are calculated from this. If the stem
+% is not vertical, then we have to rotate |$b| to match.
+% \begin{macrocode}
+ pair vec[]; vec1=unitvector(z$$-z$);
+ vec2=ajut*vec1;
+ z$a=z$ shifted vec2;
+ z$b=z$a rotatedaround (z$,-90);
+ boolean top_serif;
+ if y$>y$$:
+ top_serif := true;
+ z$c=z$b shifted (-bjut*pdir);
+ else:
+ top_serif:=false;
+ z$c=z$b shifted (bjut*pdir);
+ fi
+% \end{macrocode}
+% Draw the parts, and finish off.
+% \begin{macrocode}
+ if top_serif:
+ draw z$c--z$b{pdir}..{z$$-z$}z$a; % the serif
+ else:
+ draw z$c--z$b{-pdir}..{z$$-z$}z$a;
+ fi
+ labels($a,$b,$c);
+enddef; % end of draw_serif
+
+% \end{macrocode}
+% \end{routine}
+%
+% \begin{routine}{draw_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 HMIN 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 HMIN 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 HMIN 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 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{down}..{left}z$uv--z$vu{right}..{up}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_plq(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{down}..{right}z$uv--z$vu{left}..{up}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;
+sqrcaps_font_setup;
+
+% \end{macrocode}
+%
+%
+% We generate letters, together with some punctuation and
+% analphabetics.
+% \begin{macrocode}
+
+input sqrcl; % lower case
+input sqrcu; % capitals
+input sqrcpunct; % punctuation
+input sqrclig; % the several dashes
+input sqrcdig; % arabic digits
+
+% \end{macrocode}
+%
+% Set up the spacings, stretches and shrinks.
+%
+% \begin{macrocode}
+
+font_slant slant; font_x_height x_height#;
+if monospace:
+ font_normal_space vstretch*9u#; % no stretching or shrinking
+ font_quad vstretch*18u#;
+ font_extra_space vstretch*9u#;
+else:
+ font_normal_space vstretch*6u#+2letter_fit#;
+ font_normal_stretch vstretch*3u#; font_normal_shrink vstretch*2u#;
+ font_quad vstretch*18u#+4letter_fit#;
+ font_extra_space vstretch*2u#;
+
+% \end{macrocode}
+%
+% Finally, do the ligtables, 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 ordinary letters}
+%
+%
+% \begin{macrocode}
+%<*min>
+% SQRCL.MF Program file for Square Capitals letters.
+%
+
+% \end{macrocode}
+%
+%
+% \begin{routine}{a}
+% The letter `a'.
+% \begin{macrocode}
+cmchar "SQRC letter a";
+beginchar("a", 2sb#+hstretch*(14/13x_height#),
+ x_height#, 0);
+adjust_fit(0,0);
+pcshiftx := sb;
+numeric n[];
+path pth[];
+pair pr[];
+pickup quill;
+x100 = 0;
+n1 := sqrcjut;
+n2 := sqrcjutrat*sqrcjut;
+%% legs
+x1 = 6/16w; top y1=h;
+rt x3 = w-pcshiftx - n1; bot y3= 0;
+pickup thinquill;
+lft x2 = pcshiftx; bot y2 = 0;
+x21 = x2 + n2; y21 = y2;
+y22 = y21+n2; z22 = whatever[z2,z1];
+pickup quill;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw z1--z3; draw (x1-n1,y1)--(x1,y1); draw (x3,y3)--(x3+n1,y3); %% right leg
+pickup thinquill;
+draw z1--z2; %% left leg
+filldraw z2--z21{left}..{z1-z2}z22--cycle;
+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 "SQRC letter b";
+beginchar("b", 2sb#+hstretch*(14/13x_height#),
+ x_height#, 0);
+adjust_fit(0,0);
+numeric n[];
+path pth[];
+pcshiftx := sb;
+pickup quill;
+x100 = 0;
+n1 := sqrcjut;
+%% stem
+lft x1 = pcshiftx + n1; top y1 = h;
+x2 = x1; bot y2 = 0;
+z12 = 1/2[z1,z2];
+%% bottom bowl
+lft x21 = pcshiftx; bot y21 = 0;
+z22=z2;
+lft x27 = rt x12; y27 = y12;
+rt x25 = w-pcshiftx; y25 = 1/2[y22,y27];
+pth1 := z21--z22{right}..z25{up}..{left}z27;
+%% top bowl
+z32 = z27; z37 = z1;
+x38 = x21; y38 = y37;
+rt x35 = x25; y35 = 1/2[y32,y37];
+pth2 := z38--z37{right}..z35{down}..{left}z27;
+if ductus:
+ pickup stylus;
+fi
+draw z1--z2;
+draw pth1; draw pth2;
+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 "SQRC letter c";
+beginchar("c", 2sb#+hstretch*(14/13x_height#),
+ x_height#, 0);
+adjust_fit(0,0);
+numeric n[];
+pcshiftx := sb;
+pickup quill;
+n1:=w-2pcshiftx; % actual letter width
+n2:=6/5w-2pcshiftx; % width of full bowl
+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;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw z24..z1{left}..z2{down}..z3{right}..z4{3pdir};
+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 "SQRC letter d";
+beginchar("d", 2sb#+hstretch*(14/13x_height#),
+ x_height#, 0);
+adjust_fit(0,0);
+numeric n[];
+path pth[];
+pcshiftx := sb;
+pickup quill;
+x100 = 0; n1 := rt x100 - lft x100;
+%% stem
+lft x1 = pcshiftx+sqrcjut; top y1=h;
+x2 = x1; bot y2 = 0;
+%% bowl
+lft x3 = pcshiftx; y3 = y1;
+z7 = (x3,y2);
+rt x5 = w-pcshiftx; y5 = 1/2[y3,y7];
+pth1 := z3--z1{right}..{down}z5..{left}z2--z7;
+if ductus:
+ pickup stylus;
+fi
+draw z1--z2; %% stem
+draw pth1;
+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 "SQRC letter e";
+beginchar("e", sb#+hstretch*(9/13x_height#),
+ x_height#, 0);
+adjust_fit(0,0);
+pcshiftx := sb;
+numeric n[];
+path pth[];
+pickup quill;
+x100 = 0;
+n1 = rt x100 - lft x100;
+%% stem
+lft x1 = pcshiftx+sqrcjut; top y1 = h;
+x2 = x1; bot y2=0;
+%% bars
+lft x3 = pcshiftx; y3 = y1; rt x4 = w-pcshiftx; y4=y3;
+x5=x1; y5 = 6/16[y1,y2]; x6 = x4; y6 = y5;
+x7 = x3; y7 = y2; x8 = x4; y8=y7;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw z1--z2; % stem
+draw z3--z4; draw z5--z6; draw z7--z8;
+ductus:=false;
+penlabels(1,2,3,4,5,6,7,8,9,17,70,100);
+endchar; % end "e"
+
+% \end{macrocode}
+% \end{routine}
+%
+% \begin{routine}{f}
+% The letter `f'.
+% \begin{macrocode}
+cmchar "SQRC letter f";
+beginchar("f", 2sb#+hstretch*(9/13x_height#),
+ x_height#, 0);
+adjust_fit(0,0);
+numeric n[];
+pcshiftx := sb;
+pickup quill;
+x100 = 0;
+n1 := rt x100 - lft x100;
+%% stem
+lft x1=lft x2=pcshiftx+sqrcjut; bot y1=h; bot y2=0;
+%% bars
+lft x3 = pcshiftx; y3 = y1; rt x4 = w-pcshiftx; y4 = y3;
+x5=x1; y5 = 6/16[y1,y2]; x6 = x4; y6 = y5;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw z1--z2;
+draw z3--z4; draw z5--z6;
+ductus:=false;
+penlabels(1,2,3,4,5,6,7,14,15,16,100);
+endchar; % end "f"
+
+% \end{macrocode}
+% \end{routine}
+%
+% \begin{routine}{g}
+% The letter `g'.
+% \begin{macrocode}
+cmchar "SQRC letter g";
+beginchar("g", 2sb#+hstretch*(14/13x_height#),
+ x_height#, 0);
+adjust_fit(0,0);
+path pth[];
+pair vec[];
+numeric n[];
+pcshiftx := sb;
+pickup quill;
+x100 = 0;
+n1 := sqrcjut;
+%% bar
+rt x52 = w - pcshiftx; y52 = 1/2h;
+x51 = x52 - 2n1; y51 = y52;
+z512 = 1/2[z51,z52];
+x54=x512; bot y54 = 0;
+%% bowl
+lft x2 = pcshiftx; y2 = 1/2h;
+x4 = x512; y4 = 1/4h;
+x3 = x1 = 1/2[x2,x4]; bot y3 = 0; top y1 = h;
+x24 = x512; y24 = 3/4h;
+pth1 := z24..z1{left}..z2{down}..z3{right}..z4;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw pth1;
+%%draw z4--z512; draw z51--z52;
+draw z512--z54; draw (x512-n1,y512)--(x512,y512);
+ductus:=false;
+penlabels(1,2,3,4,5,6,7,8,9,11,12,13,24,31,32,33,34,35,36,51,52,512,100);
+endchar; % end "g"
+
+% \end{macrocode}
+% \end{routine}
+%
+% \begin{routine}{h}
+% The letter `h'.
+% \begin{macrocode}
+cmchar "SQRC letter h";
+beginchar("h", 2sb#+hstretch*(14/13x_height#),
+ x_height#, 0);
+adjust_fit(0,0);
+pcshiftx := sb;
+pickup quill;
+numeric n[];
+x100 = 0;
+n1 := sqrcjut;
+%% stems
+lft x1=lft x2=pcshiftx+sqrcjut;
+top y1=h; bot y2=0;
+rt x3 = w - pcshiftx - sqrcjut; x4 = x3; y3 = y1; y4 = y2;
+%% bar
+z12 = 7/16[z1,z2]; z34 = 7/16[z3,z4];
+% serifs
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw z1--z2; draw z3--z4; draw z12--z34;
+%% serifs
+draw (x1-n1,y1)--(x1,y1); draw (x2,y2)--(x2+n1,y2);
+draw (x3-n1,y3)--(x3,y3); draw (x4,y4)--(x4+n1,y4);
+ductus:=false;
+penlabels(1,2,3,4,5,6,100);
+endchar; % end "h"
+
+% \end{macrocode}
+% \end{routine}
+%
+% \begin{routine}{i}
+% The letter `i'.
+% \begin{macrocode}
+cmchar "SQRC letter i";
+beginchar("i", 2sb#+hstretch*(thick#+2sqrcjut#),
+ x_height#, 0);
+adjust_fit(0,0);
+pcshiftx := sb;
+numeric n[];
+pickup quill;
+x100 = 0;
+n1 := rt x100 - lft x100;
+x1 = x2 = 1/2w;
+top y1=h; bot y2=0;
+%% serifs
+lft x111 = pcshiftx; rt x112 = w-pcshiftx;
+x211 = x111; x212 = x112;
+draw z1--z2;
+%% serifs
+draw (x111,y1)--(x112,y1);
+draw (x211,y2)--(x212,y2);
+ductus:=false;
+penlabels(1,2,100);
+endchar; % end "i"
+
+% \end{macrocode}
+% \end{routine}
+%
+% \begin{routine}{j}
+% The letter `j'. This letter was not in the script, it being a later invention.
+% \begin{macrocode}
+cmchar "SQRC letter j";
+beginchar("j", 2sb#+hstretch*(2thick#+sqrcjut#),
+ x_height#, 0);
+adjust_fit(0,0);
+pcshiftx := sb;
+path pth[];
+numeric n[];
+pickup quill;
+x100 = 0;
+n1 := sqrcjut;
+%% stem
+rt x1 = w-pcshiftx; top y1 = h;
+x2 = x1; y2 = 1/4h;
+%% hook
+lft x4 = pcshiftx; bot y4 = 0;
+pth1 := z4{pdir}..z2{up};
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw z1--z2{down}..{-pdir}z4; % stem & hook
+draw (x1-n1,y1)--z1;
+ductus:=false;
+penlabels(1,2,3,100);
+endchar; % end "j"
+
+% \end{macrocode}
+% \end{routine}
+%
+% \begin{routine}{k}
+% The letter `k'.
+% \begin{macrocode}
+cmchar "SQRC letter k";
+beginchar("k", 2sb#+hstretch*(16/13x_height#),
+ x_height#, 0);
+adjust_fit(0,0);
+pcshiftx := sb;
+path pth[];
+numeric n[];
+pickup quill;
+x100 = 0;
+n1 := sqrcjut;
+%% stem
+lft x1 = pcshiftx+n1; top y1 = h;
+x2 = x1; bot y2 = 0;
+z12 = 1/2[z1,z2];
+%% top arm
+x3 = rt x12; y3 = y12;
+x5 = 1/2[w - pcshiftx, x1]; y5 = y1;
+%%pth1 := z3{pdir}..{up}z5;
+pth1 := z3--z5;
+%% lower arm
+z7 = z3;
+rt x9 = w-pcshiftx; bot y9 = 0;
+pth2 := z7{-ppdir}..{right}z9;
+pickup quill;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw z1--z2; draw pth1; draw pth2;
+draw (x1-n1,y1)--(x1,y1);
+draw (x2-n1,y2)--(x2+n1,y2);
+draw (x5,y5)--(x5+n1,y5);
+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 "SQRC letter l";
+beginchar("l", 2sb#+hstretch*(9/13x_height#),
+ x_height#, 0);
+adjust_fit(0,0);
+pcshiftx := sb;
+numeric n[];
+pickup quill;
+x100 = 0;
+n1 := sqrcjut;
+lft x1=pcshiftx+n1; bot y1=h;
+x2=x1; bot y2 =0;
+x3 = x2; rt x4 = w-pcshiftx; y3 = y4 = y2;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw z1--z2; draw z3--z4;
+draw (x1-n1,y1)--(x1,y1);
+ductus:=false;
+penlabels(1,2,3,4,100);
+endchar; % end "l"
+
+% \end{macrocode}
+% \end{routine}
+%
+% \begin{routine}{m}
+% The letter `m'.
+% \begin{macrocode}
+cmchar "SQRC letter m";
+beginchar("m", 2sb#+hstretch*(19/13x_height#),
+ x_height#, 0);
+adjust_fit(0,0);
+pcshiftx := sb;
+numeric n[];
+path pth[];
+pickup quill;
+x100 = 0;
+n1 := sqrcjut;
+n2 := sqrcjutrat*sqrcjut;
+%% thick stem tops
+lft x1=pcshiftx+n1; top y1=h;
+rt x3 = w - pcshiftx -2n1; y3 = y1;
+%% right stem bottom
+rt x4 = w - pcshiftx - n1; bot y4 = 0;
+%% the V
+x24 = 1/2w; bot y24 = 0;
+%% left stem top and bottom
+x81 = lft x1; y81 = top y1;
+pickup thinquill;
+lft x11 = x81; top y11 = y81;
+lft x2 = pcshiftx; bot y2 = 0;
+x2a = x2+n2; y2a = y2;
+y2b = y2+n2; z2b = whatever[z2,z11];
+pickup quill;
+%% thin middle top and bottom
+x83 = lft x3; y83 = top y3;
+x824 = rt x24; y824 = bot y24;
+pickup thinquill;
+lft x13 = x83; top y13 = y83;
+rt x124 = x824; bot y124 = y824;
+pickup quill;
+pth124 := z1{-ppdir}..z24;
+pth34 := z3{down}..z4;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+%% thick legs
+draw pth124; draw pth34;
+draw (x1-n1,y1)--(x1,y1); draw (x3-n1,y3)--(x3,y3); draw (x4,y4)--(x4+n1,y4);
+%% thin legs
+pickup thinquill;
+draw z11--z2;
+filldraw z2--z2a{left}..{z11-z2}z2b--cycle;
+%%%%pickup quarterquill;
+ draw z13--z124;
+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 "SQRC letter n";
+beginchar("n", 2sb#+hstretch*(14/13x_height#),
+ x_height#, 0);
+adjust_fit(0,0);
+pcshiftx := sb;
+path pth[];
+numeric n[];
+pickup quill;
+x100 = 0;
+n1 := sqrcjut;
+n2 := sqrcjutrat*sqrcjut;
+%% diagonal
+lft x1=pcshiftx+n1; top y1=h;
+rt x4 = w -pcshiftx-n1; bot y4 = 0;
+x101 = lft x1;
+x104 = rt x4;
+pth1 := z1{-ppdir}..z4;
+%% stems
+pickup thinquill;
+lft x21 = x101; top y21 =h;
+x22 = x21; bot y22 = 0;
+x22a = x22+n2; y22a=y22;
+x22b = x22; y22b=y22+n2;
+rt x24 = x104; bot y24 = 0;
+x23 = x24; top y23 = h;
+x23a = x23-n2; x23b = x23+n1; y23a = y23b = y23;
+x23c = x23; y23c = y23-n2;
+pickup quill;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+%% diagonal
+draw pth1; draw (x1-n1,y1)--(x1,y1);
+%% stems
+pickup thinquill;
+draw z21--z22;
+filldraw z22--z22a{left}..{up}z22b--cycle;
+draw z23--z24;
+filldraw z23--z23a{right}..{down}z23c{up}..{right}z23b--cycle;
+ductus:=false;
+penlabels(1,2,3,4,5,6,13,14,23,23a,23b,23c,100);
+endchar; % end "n"
+
+% \end{macrocode}
+% \end{routine}
+%
+% \begin{routine}{o}
+% The letter `o'.
+% \begin{macrocode}
+cmchar "SQRC letter o";
+beginchar("o", 2sb#+hstretch*(17/13x_height#),
+ x_height#, 0);
+adjust_fit(0,0);
+pcshiftx := sb;
+pickup quill;
+lft x1=pcshiftx; rt x3=w-pcshiftx; y1=y3=h/2;
+x2=x4=w/2; top y2=h+o; bot y4=-o;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw z1..z2..z3..z4..cycle;
+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 "SQRC letter p";
+beginchar("p", 2sb#+hstretch*(13/13x_height#),
+ x_height#, 0);
+adjust_fit(0,0);
+pcshiftx := sb;
+path pth[];
+numeric n[];
+pickup quill;
+x100 = 0;
+n1:= sqrcjut;
+%% stem
+lft x1=lft x2=pcshiftx+n1;
+top y1=h; bot y2=0;
+z12 = 1/2[z1,z2];
+%% bowl
+lft x3 = pcshiftx; y3 = y1;
+x7 = x12; top y7 = y12;
+rt x5 = w-pcshiftx; y5 = 1/2[y3,y7];
+pth1 := z3--z1{right}..z5{down}..{left}z7;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw z1--z2; draw pth1;
+%%draw (x2-n1,y2)--(x2+n1,y2);
+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 "SQRC letter q";
+beginchar("q", 2sb#+hstretch*(17/13x_height#),
+ x_height#, 0);
+adjust_fit(0,0);
+pcshiftx := sb;
+numeric n[];
+path pth[];
+pickup quill;
+%% bowl
+lft x1=pcshiftx; rt x3=w-pcshiftx; y1=y3=h/2;
+x2=x4=w/2; top y2=h+o; bot y4=-o;
+pth1 := z1..z4..z3..z2..cycle;
+%% tail
+n1 := rt x1 - lft x1;
+pth2 := z1..z2..z3..z4;
+z5 = directionpoint pdir of pth1;
+x7 = x3 + 2n1; top y7 = -n1;
+pth3 := z5{-ppdir}..{pdir}z7;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw pth1;
+draw pth3;
+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 "SQRC letter r";
+beginchar("r", 2sb#+hstretch*(15/13x_height#),
+ x_height#, 0);
+adjust_fit(0,0);
+pcshiftx := sb;
+numeric n[];
+path pth[];
+pickup quill;
+x100 = 0;
+n1:= sqrcjut;
+n3 := sqrcjutrat*sqrcjut;
+n2 := 11/15; %% P/R width ratio
+%% stem
+pickup thinquill;
+lft x1=lft x2=pcshiftx+n1;
+top y1=h; bot y2=0;
+x2a = x2 + n3; y2a = y2;
+x2b = x2; y2b = y2+n3;
+z12 = 1/2[z1,z2];
+pickup quill;
+%% bowl
+lft x3 = pcshiftx; top y3 = h; x13 = x1; y13 = y3;
+lft x7 = x12; top y7 = y12;
+rt x5 = w*n2 - pcshiftx; y5 = 1/2[y3,y7];
+pth1 := z3--z13{right}..z5{down}..{left}z7;
+%% leg
+z21 = z7;
+rt x23 = w-pcshiftx; bot y23 = 0;
+pth2 := z21{-ppdir}..{right}z23;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw pth1; draw pth2;
+pickup thinquill;
+draw z1--z2;
+filldraw z2--z2a{left}..{up}z2b--cycle;
+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'.
+% \begin{macrocode}
+cmchar "SQRC letter s";
+beginchar("s", 2sb#+hstretch*(15/18x_height#),
+ x_height#, 0);
+adjust_fit(0,0);
+numeric n[];
+path pth[];
+pcshiftx := sb;
+pickup quill;
+x100 = 0;
+n1 := rt x100 - lft x100;
+x1 = x3 = x5 = 1/2w;
+top y1 = h; bot y5 = 0; y3 = 1/2[y1,y5];
+lft x2 = pcshiftx; rt x4 = w-pcshiftx;
+y2 = 1/2[y1,y3]; y4 = 1/2[y3,y5];
+rt x101 = w-pcshiftx; top y101 = y1;
+lft x102 = pcshiftx; bot y102 = y5;
+pth1 := z101..z1..z2..z3..z4..z5..z102;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw pth1;
+ductus:=false;
+penlabels(1,2,3,4,5,6,7,11,17,20,26,27,28,100);
+endchar; % end "s"
+
+% \end{macrocode}
+% \end{routine}
+%
+% \begin{routine}{t}
+% The letter `t'.
+% \begin{macrocode}
+cmchar "SQRC letter t";
+beginchar("t", 2sb#+hstretch*(10/13x_height#),
+ x_height#, 0);
+adjust_fit(0,0);
+pcshiftx := sb;
+numeric n[];
+path pth[];
+pickup quill;
+%% bar
+lft x1 = pcshiftx; rt x2=w-pcshiftx;
+top y1 = top y2 = h;
+pth1 := z1{pdir}..{pdir}z2;
+%% stem
+z3 = 1/2[z1,z2];
+x4 = x3; bot y4 = 0;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw pth1; % bar
+draw z3--z4; % stem
+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 "SQRC letter u";
+beginchar("u", 2sb#+hstretch*(15/13x_height#),
+ x_height#, 0);
+adjust_fit(0,0);
+pcshiftx := sb;
+numeric n[];
+path pth[];
+pickup quill;
+x100 = 0;
+n1 := sqrcjut;
+%% left stem
+lft x1 = pcshiftx + n1; top y1 = h;
+% start of bowl
+lft x13=pcshiftx; y13=1/3h;
+% right stem
+rt x3=w-pcshiftx-n1; y3=y1;
+x4=x3; bot y4=0;
+z33=1/4[z4,z3]; % start of bowl
+% middle of bowl
+x14=1/3[x1,x3]; bot y14=0;
+pth1 := z1..z13{down}..z14{right}..{pdir}z33;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw pth1;
+draw (x1-n1,y1)--(x1,y1);
+draw z3--z4;
+draw (x3-n1,y3)--(x3,y3);
+draw (x4,y4)--(x4+n1,y4);
+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 "SQRC letter v";
+beginchar("v", 2sb#+hstretch*(13/13x_height#),
+ x_height#, 0);
+adjust_fit(0,0);
+pcshiftx := sb;
+numeric n[];
+path pth[];
+pickup quill;
+x100 = 0;
+n1 := sqrcjut;
+n2 := sqrcjutrat*sqrcjut;
+%% stem tops
+lft x1 = pcshiftx + n1; top y1 = h;
+pickup thinquill;
+rt x3 = w - pcshiftx; top y3 = h;
+x3a = x3-n2; y3a=y3;
+x3b = x3; y3b = y3-n2;
+pickup quill;
+%% bottom
+x13 = 10/16[x1,x3]; bot y13 = 0;
+x83 = rt x13; y83 = top y13;
+pth1 := z1{down}..z13;
+pth2 := z3{down}..z83;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw pth1;
+draw (x1-n1,y1)--(x1,y1);
+
+pickup thinquill;
+draw pth2;
+filldraw z3--z3a{right}..{down}z3b--cycle;
+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 "SQRC letter w";
+beginchar("w", 2sb#+hstretch*(22/13x_height#),
+ x_height#, 0);
+adjust_fit(0,0);
+pcshiftx := sb;
+numeric n[];
+path pth[];
+pickup quill;
+x100 = 0;
+n1 := sqrcjut;
+n2 := sqrcjutrat*sqrcjut;
+%% thick leg tops
+lft x1 = pcshiftx + n1; top y1 = h;
+x3 = 1/2w; y3 = y1;
+%% thin leg top
+pickup thinquill;
+rt x5 = w-pcshiftx; top y5 = h;
+x5a = x5-n2; y5a = y5;
+x5b = x5; y5b = y5-n2;
+pickup quill;
+%% V bottoms
+x13 = 1/2[x1,x3]; bot y13 = 0;
+x35 = 1/2[x3,x5]; bot y35 = 0;
+pth113 := z1{down}..z13;
+pth335 := z3{down}..z35;
+x83 = x3; y83 = top y3;
+x813 = rt x13; y813 = bot y13;
+x835 = rt x35; y835 = bot y35;
+%% thin legs
+pickup thinquill;
+rt x113 = x813; bot y113 = y813;
+rt x135 = x835; bot y135 = y835;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+pickup quill;
+draw pth113; draw pth335; draw (x1-n1,y1)--(x1,y1);
+pickup thinquill;
+draw z113..{up}z3; draw z135..{up}z5;
+filldraw z5--z5a{right}..{down}z5b--cycle;
+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 "SQRC letter x";
+beginchar("x", 2sb#+hstretch*(17/13x_height#),
+ x_height#, 0);
+adjust_fit(0,0);
+path pth[];
+numeric n[];
+pcshiftx := sb;
+pickup quill;
+x100 = 0;
+n1 := sqrcjut;
+n2 := sqrcjutrat*sqrcjut;
+%% diag top left to bottom right
+lft x1=pcshiftx+n1; top y1 = h;
+rt x2 = w - pcshiftx - n1; bot y2 = 0;
+%% diag top right to bottom left
+pickup thinquill;
+rt x3 = w - pcshiftx - n1; top y3 = h;
+lft x4 = pcshiftx; bot y4 = 0;
+x3a = x3-n2; x3b = x3+n1; y3a = y3b = y3;
+y3c = y3-n2; z3c = whatever[z3,z4];
+x4a = x4+n2; y4a = y4;
+y4b = y4+n2; z4b = whatever[z4,z3];
+pickup quill;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw z1--z2;
+draw (x1-n1,y1)--(x1,y1);
+draw (x2,y2)--(x2+n1,y2);
+pickup thinquill;
+draw z3--z4;
+filldraw z3--z3a{right}..{z4-z3}z3c{z3-z4}..{right}z3b--cycle;
+filldraw z4--z4a{left}..{z3-z4}z4b--cycle;
+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'.
+% \begin{macrocode}
+cmchar "SQRC letter y";
+beginchar("y", 2sb#+hstretch*(13/13x_height#),
+ x_height#, 0);
+adjust_fit(0,0);
+pcshiftx := sb;
+path pth[];
+numeric n[];
+pickup quill;
+x100 = 0;
+n1 := sqrcjut;
+n2 := sqrcjutrat*sqrcjut;
+%% upright
+x5 = 1/2w; y5 = 1/2h;
+x6 = x5; bot y6 = 0;
+%% left stem top
+lft x1 = pcshiftx + n1; top y1 = h;
+%% right stem
+x85 = rt x5; y85 = top y5;
+pickup thinquill;
+rt x3=w-pcshiftx; top y3 = h;
+x4=x85; y4 = y85;
+x3a=x3-n2; y3a = y3;
+y3b = y3-n2; z3b = whatever[z3,z4];
+pickup quill;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw z5--z6; draw (x6-n1,y6)--(x6+n1,y6); % stem
+draw z1--z5; draw (x1-n1,y1)--(x1,y1); % left arm
+pickup thinquill;
+draw z3--z4;
+filldraw z3--z3a{right}..{z4-z3}z3b--cycle;
+ductus:=false;
+penlabels(1,2,3,4,5,6,7,8,9,10,100);
+endchar; % end "y"
+
+% \end{macrocode}
+% \end{routine}
+%
+%
+% \begin{routine}{z}
+% The letter `z'.
+% \begin{macrocode}
+cmchar "SQRC letter z";
+beginchar("z", 2sb#+hstretch*(13/13x_height#),
+ x_height#, 0);
+adjust_fit(0,0);
+numeric n[];
+n1 := sqrcjutrat*sqrcjut;
+path pth[];
+pcshiftx := sb;
+pickup quill;
+%% top bar ends
+lft x1 = pcshiftx; rt x2 = w -pcshiftx; top y1 = top y2 = h;
+x101 = lft x1; y101 = top y1;
+%% bottom bar ends
+lft x3 = pcshiftx; rt x4 = w -pcshiftx; bot y3 = bot y4 = 0;
+x104 = rt x4; y104 = bot y4;
+pickup stylus;
+lft x11 = x101; top y11 = y101;
+x12 = x11; y12 = y11-n1;
+x13 = x11+n1; y13 = y11;
+rt x14 = x104; bot y14 = y104;
+x15 = x14; y15 = y14 + n1;
+x16 = x14 - n1; y16 = y14;
+pickup quill;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw z1--z2; draw z3--z4;
+draw z2--z3;
+pickup stylus;
+filldraw z11--z12{up}..{right}z13--cycle;
+filldraw z14--z15{down}..{left}z16--cycle;
+ductus:=false;
+penlabels(1,2,3,4,5,6,10o,10i,14,14,16,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 `lower case',
+% and the letters were merely larger versions.
+%
+% \begin{macrocode}
+%<*maj>
+% SQRCU.MF Program file for Square Capitals `upper case'.
+%
+
+% \end{macrocode}
+%
+%
+% \begin{routine}{A}
+% The letter `A'.
+% \begin{macrocode}
+cmchar "SQRC letter A";
+beginchar("A", 2sb#+caprat*hstretch*(14/13x_height#),
+ caprat*x_height#, 0);
+adjust_fit(0,0);
+pcshiftx := sb;
+numeric n[];
+path pth[];
+pair pr[];
+pickup quill;
+x100 = 0;
+n1 := sqrcjut;
+n2 := sqrcjutrat*sqrcjut;
+%% legs
+x1 = 6/16w; top y1=h;
+rt x3 = w-pcshiftx - n1; bot y3= 0;
+pickup thinquill;
+lft x2 = pcshiftx; bot y2 = 0;
+x21 = x2 + n2; y21 = y2;
+y22 = y21+n2; z22 = whatever[z2,z1];
+pickup quill;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw z1--z3; draw (x1-n1,y1)--(x1,y1); draw (x3,y3)--(x3+n1,y3); %% right leg
+pickup thinquill;
+draw z1--z2; %% left leg
+filldraw z2--z21{left}..{z1-z2}z22--cycle;
+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 "SQRC letter B";
+beginchar("B", 2sb#+caprat*hstretch*(14/13x_height#),
+ caprat*x_height#, 0);
+adjust_fit(0,0);
+numeric n[];
+path pth[];
+pcshiftx := sb;
+pickup quill;
+x100 = 0;
+n1 := sqrcjut;
+%% stem
+lft x1 = pcshiftx + n1; top y1 = h;
+x2 = x1; bot y2 = 0;
+z12 = 1/2[z1,z2];
+%% bottom bowl
+lft x21 = pcshiftx; bot y21 = 0;
+z22=z2;
+lft x27 = rt x12; y27 = y12;
+rt x25 = w-pcshiftx; y25 = 1/2[y22,y27];
+pth1 := z21--z22{right}..z25{up}..{left}z27;
+%% top bowl
+z32 = z27; z37 = z1;
+x38 = x21; y38 = y37;
+rt x35 = x25; y35 = 1/2[y32,y37];
+pth2 := z38--z37{right}..z35{down}..{left}z27;
+if ductus:
+ pickup stylus;
+fi
+draw z1--z2;
+draw pth1; draw pth2;
+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 "SQRC letter C";
+beginchar("C", 2sb#+caprat*hstretch*(14/13x_height#),
+ caprat*x_height#, 0);
+adjust_fit(0,0);
+numeric n[];
+pcshiftx := sb;
+pickup quill;
+n1:=w-2pcshiftx; % actual letter width
+n2:=6/5w-2pcshiftx; % width of full bowl
+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;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw z24..z1{left}..z2{down}..z3{right}..z4{3pdir};
+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 "SQRC letter D";
+beginchar("D", 2sb#+caprat*hstretch*(14/13x_height#),
+ caprat*x_height#, 0);
+adjust_fit(0,0);
+numeric n[];
+path pth[];
+pcshiftx := sb;
+pickup quill;
+x100 = 0; n1 := rt x100 - lft x100;
+%% stem
+lft x1 = pcshiftx+sqrcjut; top y1=h;
+x2 = x1; bot y2 = 0;
+%% bowl
+lft x3 = pcshiftx; y3 = y1;
+z7 = (x3,y2);
+rt x5 = w-pcshiftx; y5 = 1/2[y3,y7];
+pth1 := z3--z1{right}..{down}z5..{left}z2--z7;
+if ductus:
+ pickup stylus;
+fi
+draw z1--z2; %% stem
+draw pth1;
+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 "SQRC letter E";
+beginchar("E", sb#+caprat*hstretch*(9/13x_height#),
+ caprat*x_height#, 0);
+adjust_fit(0,0);
+pcshiftx := sb;
+numeric n[];
+path pth[];
+pickup quill;
+x100 = 0;
+n1 = rt x100 - lft x100;
+%% stem
+lft x1 = pcshiftx+sqrcjut; top y1 = h;
+x2 = x1; bot y2=0;
+%% bars
+lft x3 = pcshiftx; y3 = y1; rt x4 = w-pcshiftx; y4=y3;
+x5=x1; y5 = 6/16[y1,y2]; x6 = x4; y6 = y5;
+x7 = x3; y7 = y2; x8 = x4; y8=y7;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw z1--z2; % stem
+draw z3--z4; draw z5--z6; draw z7--z8;
+ductus:=false;
+penlabels(1,2,3,4,5,6,7,8,9,17,70,100);
+endchar; % end "E"
+
+% \end{macrocode}
+% \end{routine}
+%
+% \begin{routine}{F}
+% The letter `F'.
+% \begin{macrocode}
+cmchar "SQRC letter F";
+beginchar("F", 2sb#+caprat*hstretch*(9/13x_height#),
+ caprat*x_height#, 0);
+adjust_fit(0,0);
+numeric n[];
+pcshiftx := sb;
+pickup quill;
+x100 = 0;
+n1 := rt x100 - lft x100;
+%% stem
+lft x1=lft x2=pcshiftx+sqrcjut; bot y1=h; bot y2=0;
+%% bars
+lft x3 = pcshiftx; y3 = y1; rt x4 = w-pcshiftx; y4 = y3;
+x5=x1; y5 = 6/16[y1,y2]; x6 = x4; y6 = y5;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw z1--z2;
+draw z3--z4; draw z5--z6;
+ductus:=false;
+penlabels(1,2,3,4,5,6,7,14,15,16,100);
+endchar; % end "F"
+
+% \end{macrocode}
+% \end{routine}
+%
+% \begin{routine}{G}
+% The letter `G'.
+% \begin{macrocode}
+cmchar "SQRC letter G";
+beginchar("G", 2sb#+caprat*hstretch*(14/13x_height#),
+ caprat*x_height#, 0);
+adjust_fit(0,0);
+path pth[];
+pair vec[];
+numeric n[];
+pcshiftx := sb;
+pickup quill;
+x100 = 0;
+n1 := sqrcjut;
+%% bar
+rt x52 = w - pcshiftx; y52 = 1/2h;
+x51 = x52 - 2n1; y51 = y52;
+z512 = 1/2[z51,z52];
+x54=x512; bot y54 = 0;
+%% bowl
+lft x2 = pcshiftx; y2 = 1/2h;
+x4 = x512; y4 = 1/4h;
+x3 = x1 = 1/2[x2,x4]; bot y3 = 0; top y1 = h;
+x24 = x512; y24 = 3/4h;
+pth1 := z24..z1{left}..z2{down}..z3{right}..z4;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw pth1;
+%%draw z4--z512; draw z51--z52;
+draw z512--z54; draw (x512-n1,y512)--(x512,y512);
+ductus:=false;
+penlabels(1,2,3,4,5,6,7,8,9,11,12,13,24,31,32,33,34,35,36,51,52,512,100);
+endchar; % end "G"
+
+% \end{macrocode}
+% \end{routine}
+%
+% \begin{routine}{H}
+% The letter `H'.
+% \begin{macrocode}
+cmchar "SQRC letter H";
+beginchar("H", 2sb#+caprat*hstretch*(14/13x_height#),
+ caprat*x_height#, 0);
+adjust_fit(0,0);
+pcshiftx := sb;
+pickup quill;
+numeric n[];
+x100 = 0;
+n1 := sqrcjut;
+%% stems
+lft x1=lft x2=pcshiftx+sqrcjut;
+top y1=h; bot y2=0;
+rt x3 = w - pcshiftx - sqrcjut; x4 = x3; y3 = y1; y4 = y2;
+%% bar
+z12 = 7/16[z1,z2]; z34 = 7/16[z3,z4];
+% serifs
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw z1--z2; draw z3--z4; draw z12--z34;
+%% serifs
+draw (x1-n1,y1)--(x1,y1); draw (x2,y2)--(x2+n1,y2);
+draw (x3-n1,y3)--(x3,y3); draw (x4,y4)--(x4+n1,y4);
+ductus:=false;
+penlabels(1,2,3,4,5,6,100);
+endchar; % end "H"
+
+% \end{macrocode}
+% \end{routine}
+%
+% \begin{routine}{I}
+% The letter `I'.
+% \begin{macrocode}
+cmchar "SQRC letter I";
+beginchar("I", 2sb#+caprat*hstretch*(thick#+2sqrcjut#),
+ caprat*x_height#, 0);
+adjust_fit(0,0);
+pcshiftx := sb;
+numeric n[];
+pickup quill;
+x100 = 0;
+n1 := rt x100 - lft x100;
+x1 = x2 = 1/2w;
+top y1=h; bot y2=0;
+%% serifs
+lft x111 = pcshiftx; rt x112 = w-pcshiftx;
+x211 = x111; x212 = x112;
+draw z1--z2;
+%% serifs
+draw (x111,y1)--(x112,y1);
+draw (x211,y2)--(x212,y2);
+ductus:=false;
+penlabels(1,2,100);
+endchar; % end "I"
+
+% \end{macrocode}
+% \end{routine}
+%
+% \begin{routine}{J}
+% The letter `J'. This letter was not in the script, it being a later invention.
+% \begin{macrocode}
+cmchar "SQRC letter J";
+beginchar("J", 2sb#+caprat*hstretch*(2thick#+sqrcjut#),
+ caprat*x_height#, 0);
+adjust_fit(0,0);
+pcshiftx := sb;
+path pth[];
+numeric n[];
+pickup quill;
+x100 = 0;
+n1 := sqrcjut;
+%% stem
+rt x1 = w-pcshiftx; top y1 = h;
+x2 = x1; y2 = 1/4h;
+%% hook
+lft x4 = pcshiftx; bot y4 = 0;
+pth1 := z4{pdir}..z2{up};
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw z1--z2{down}..{-pdir}z4; % stem & hook
+draw (x1-n1,y1)--z1;
+ductus:=false;
+penlabels(1,2,3,100);
+endchar; % end "J"
+
+% \end{macrocode}
+% \end{routine}
+%
+% \begin{routine}{K}
+% The letter `K'.
+% \begin{macrocode}
+cmchar "SQRC letter K";
+beginchar("K", 2sb#+caprat*hstretch*(16/13x_height#),
+ caprat*x_height#, 0);
+adjust_fit(0,0);
+pcshiftx := sb;
+path pth[];
+numeric n[];
+pickup quill;
+x100 = 0;
+n1 := sqrcjut;
+%% stem
+lft x1 = pcshiftx+n1; top y1 = h;
+x2 = x1; bot y2 = 0;
+z12 = 1/2[z1,z2];
+%% top arm
+x3 = rt x12; y3 = y12;
+x5 = 1/2[w - pcshiftx, x1]; y5 = y1;
+%%pth1 := z3{pdir}..{up}z5;
+pth1 := z3--z5;
+%% lower arm
+z7 = z3;
+rt x9 = w-pcshiftx; bot y9 = 0;
+pth2 := z7{-ppdir}..{right}z9;
+pickup quill;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw z1--z2; draw pth1; draw pth2;
+draw (x1-n1,y1)--(x1,y1);
+draw (x2-n1,y2)--(x2+n1,y2);
+draw (x5,y5)--(x5+n1,y5);
+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 "SQRC letter L";
+beginchar("L", 2sb#+caprat*hstretch*(9/13x_height#),
+ caprat*x_height#, 0);
+adjust_fit(0,0);
+pcshiftx := sb;
+numeric n[];
+pickup quill;
+x100 = 0;
+n1 := sqrcjut;
+lft x1=pcshiftx+n1; bot y1=h;
+x2=x1; bot y2 =0;
+x3 = x2; rt x4 = w-pcshiftx; y3 = y4 = y2;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw z1--z2; draw z3--z4;
+draw (x1-n1,y1)--(x1,y1);
+ductus:=false;
+penlabels(1,2,3,4,100);
+endchar; % end "L"
+
+% \end{macrocode}
+% \end{routine}
+%
+% \begin{routine}{M}
+% The letter `M'.
+% \begin{macrocode}
+cmchar "SQRC letter M";
+beginchar("M", 2sb#+caprat*hstretch*(19/13x_height#),
+ caprat*x_height#, 0);
+adjust_fit(0,0);
+pcshiftx := sb;
+numeric n[];
+path pth[];
+pickup quill;
+x100 = 0;
+n1 := sqrcjut;
+n2 := sqrcjutrat*sqrcjut;
+%% thick stem tops
+lft x1=pcshiftx+n1; top y1=h;
+rt x3 = w - pcshiftx -2n1; y3 = y1;
+%% right stem bottom
+rt x4 = w - pcshiftx - n1; bot y4 = 0;
+%% the V
+x24 = 1/2w; bot y24 = 0;
+%% left stem top and bottom
+x81 = lft x1; y81 = top y1;
+pickup thinquill;
+lft x11 = x81; top y11 = y81;
+lft x2 = pcshiftx; bot y2 = 0;
+x2a = x2+n2; y2a = y2;
+y2b = y2+n2; z2b = whatever[z2,z11];
+pickup quill;
+%% thin middle top and bottom
+x83 = lft x3; y83 = top y3;
+x824 = rt x24; y824 = bot y24;
+pickup thinquill;
+lft x13 = x83; top y13 = y83;
+rt x124 = x824; bot y124 = y824;
+pickup quill;
+pth124 := z1{-ppdir}..z24;
+pth34 := z3{down}..z4;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+%% thick legs
+draw pth124; draw pth34;
+draw (x1-n1,y1)--(x1,y1); draw (x3-n1,y3)--(x3,y3); draw (x4,y4)--(x4+n1,y4);
+%% thin legs
+pickup thinquill;
+draw z11--z2;
+filldraw z2--z2a{left}..{z11-z2}z2b--cycle;
+%%%%pickup quarterquill;
+ draw z13--z124;
+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 "SQRC letter N";
+beginchar("N", 2sb#+caprat*hstretch*(14/13x_height#),
+ caprat*x_height#, 0);
+adjust_fit(0,0);
+pcshiftx := sb;
+path pth[];
+numeric n[];
+pickup quill;
+x100 = 0;
+n1 := sqrcjut;
+n2 := sqrcjutrat*sqrcjut;
+%% diagonal
+lft x1=pcshiftx+n1; top y1=h;
+rt x4 = w -pcshiftx-n1; bot y4 = 0;
+x101 = lft x1;
+x104 = rt x4;
+pth1 := z1{-ppdir}..z4;
+%% stems
+pickup thinquill;
+lft x21 = x101; top y21 =h;
+x22 = x21; bot y22 = 0;
+x22a = x22+n2; y22a=y22;
+x22b = x22; y22b=y22+n2;
+rt x24 = x104; bot y24 = 0;
+x23 = x24; top y23 = h;
+x23a = x23-n2; x23b = x23+n1; y23a = y23b = y23;
+x23c = x23; y23c = y23-n2;
+pickup quill;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+%% diagonal
+draw pth1; draw (x1-n1,y1)--(x1,y1);
+%% stems
+pickup thinquill;
+draw z21--z22;
+filldraw z22--z22a{left}..{up}z22b--cycle;
+draw z23--z24;
+filldraw z23--z23a{right}..{down}z23c{up}..{right}z23b--cycle;
+ductus:=false;
+penlabels(1,2,3,4,5,6,13,14,23,23a,23b,23c,100);
+endchar; % end "N"
+
+% \end{macrocode}
+% \end{routine}
+%
+% \begin{routine}{O}
+% The letter `O'.
+% \begin{macrocode}
+cmchar "SQRC letter O";
+beginchar("O", 2sb#+caprat*hstretch*(17/13x_height#),
+ caprat*x_height#, 0);
+adjust_fit(0,0);
+pcshiftx := sb;
+pickup quill;
+lft x1=pcshiftx; rt x3=w-pcshiftx; y1=y3=h/2;
+x2=x4=w/2; top y2=h+o; bot y4=-o;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw z1..z2..z3..z4..cycle;
+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 "SQRC letter P";
+beginchar("P", 2sb#+caprat*hstretch*(13/13x_height#),
+ caprat*x_height#, 0);
+adjust_fit(0,0);
+pcshiftx := sb;
+path pth[];
+numeric n[];
+pickup quill;
+x100 = 0;
+n1:= sqrcjut;
+%% stem
+lft x1=lft x2=pcshiftx+n1;
+top y1=h; bot y2=0;
+z12 = 1/2[z1,z2];
+%% bowl
+lft x3 = pcshiftx; y3 = y1;
+x7 = x12; top y7 = y12;
+rt x5 = w-pcshiftx; y5 = 1/2[y3,y7];
+pth1 := z3--z1{right}..z5{down}..{left}z7;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw z1--z2; draw pth1;
+%%draw (x2-n1,y2)--(x2+n1,y2);
+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 "SQRC letter Q";
+beginchar("Q", 2sb#+caprat*hstretch*(17/13x_height#),
+ caprat*x_height#, 0);
+adjust_fit(0,0);
+pcshiftx := sb;
+numeric n[];
+path pth[];
+pickup quill;
+%% bowl
+lft x1=pcshiftx; rt x3=w-pcshiftx; y1=y3=h/2;
+x2=x4=w/2; top y2=h+o; bot y4=-o;
+pth1 := z1..z4..z3..z2..cycle;
+%% tail
+n1 := rt x1 - lft x1;
+pth2 := z1..z2..z3..z4;
+z5 = directionpoint pdir of pth1;
+x7 = x3 + 2n1; top y7 = -n1;
+pth3 := z5{-ppdir}..{pdir}z7;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw pth1;
+draw pth3;
+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 "SQRC letter R";
+beginchar("R", 2sb#+caprat*hstretch*(15/13x_height#),
+ caprat*x_height#, 0);
+adjust_fit(0,0);
+pcshiftx := sb;
+numeric n[];
+path pth[];
+pickup quill;
+x100 = 0;
+n1:= sqrcjut;
+n3 := sqrcjutrat*sqrcjut;
+n2 := 11/15; %% P/R width ratio
+%% stem
+pickup thinquill;
+lft x1=lft x2=pcshiftx+n1;
+top y1=h; bot y2=0;
+x2a = x2 + n3; y2a = y2;
+x2b = x2; y2b = y2+n3;
+z12 = 1/2[z1,z2];
+pickup quill;
+%% bowl
+lft x3 = pcshiftx; top y3 = h; x13 = x1; y13 = y3;
+lft x7 = x12; top y7 = y12;
+rt x5 = w*n2 - pcshiftx; y5 = 1/2[y3,y7];
+pth1 := z3--z13{right}..z5{down}..{left}z7;
+%% leg
+z21 = z7;
+rt x23 = w-pcshiftx; bot y23 = 0;
+pth2 := z21{-ppdir}..{right}z23;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw pth1; draw pth2;
+pickup thinquill;
+draw z1--z2;
+filldraw z2--z2a{left}..{up}z2b--cycle;
+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'.
+% \begin{macrocode}
+cmchar "SQRC letter S";
+beginchar("S", 2sb#+caprat*hstretch*(15/18x_height#),
+ caprat*x_height#, 0);
+adjust_fit(0,0);
+numeric n[];
+path pth[];
+pcshiftx := sb;
+pickup quill;
+x100 = 0;
+n1 := rt x100 - lft x100;
+x1 = x3 = x5 = 1/2w;
+top y1 = h; bot y5 = 0; y3 = 1/2[y1,y5];
+lft x2 = pcshiftx; rt x4 = w-pcshiftx;
+y2 = 1/2[y1,y3]; y4 = 1/2[y3,y5];
+rt x101 = w-pcshiftx; top y101 = y1;
+lft x102 = pcshiftx; bot y102 = y5;
+pth1 := z101..z1..z2..z3..z4..z5..z102;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw pth1;
+ductus:=false;
+penlabels(1,2,3,4,5,6,7,11,17,20,26,27,28,100);
+endchar; % end "S"
+
+% \end{macrocode}
+% \end{routine}
+%
+% \begin{routine}{T}
+% The letter `T'.
+% \begin{macrocode}
+cmchar "SQRC letter T";
+beginchar("T", 2sb#+caprat*hstretch*(10/13x_height#),
+ caprat*x_height#, 0);
+adjust_fit(0,0);
+pcshiftx := sb;
+numeric n[];
+path pth[];
+pickup quill;
+%% bar
+lft x1 = pcshiftx; rt x2=w-pcshiftx;
+top y1 = top y2 = h;
+pth1 := z1{pdir}..{pdir}z2;
+%% stem
+z3 = 1/2[z1,z2];
+x4 = x3; bot y4 = 0;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw pth1; % bar
+draw z3--z4; % stem
+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 "SQRC letter U";
+beginchar("U", 2sb#+caprat*hstretch*(15/13x_height#),
+ caprat*x_height#, 0);
+adjust_fit(0,0);
+pcshiftx := sb;
+numeric n[];
+path pth[];
+pickup quill;
+x100 = 0;
+n1 := sqrcjut;
+%% left stem
+lft x1 = pcshiftx + n1; top y1 = h;
+% start of bowl
+lft x13=pcshiftx; y13=1/3h;
+% right stem
+rt x3=w-pcshiftx-n1; y3=y1;
+x4=x3; bot y4=0;
+z33=1/4[z4,z3]; % start of bowl
+% middle of bowl
+x14=1/3[x1,x3]; bot y14=0;
+pth1 := z1..z13{down}..z14{right}..{pdir}z33;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw pth1;
+draw (x1-n1,y1)--(x1,y1);
+draw z3--z4;
+draw (x3-n1,y3)--(x3,y3);
+draw (x4,y4)--(x4+n1,y4);
+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 "SQRC letter V";
+beginchar("V", 2sb#+caprat*hstretch*(13/13x_height#),
+ caprat*x_height#, 0);
+adjust_fit(0,0);
+pcshiftx := sb;
+numeric n[];
+path pth[];
+pickup quill;
+x100 = 0;
+n1 := sqrcjut;
+n2 := sqrcjutrat*sqrcjut;
+%% stem tops
+lft x1 = pcshiftx + n1; top y1 = h;
+pickup thinquill;
+rt x3 = w - pcshiftx; top y3 = h;
+x3a = x3-n2; y3a=y3;
+x3b = x3; y3b = y3-n2;
+pickup quill;
+%% bottom
+x13 = 10/16[x1,x3]; bot y13 = 0;
+x83 = rt x13; y83 = top y13;
+pth1 := z1{down}..z13;
+pth2 := z3{down}..z83;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw pth1;
+draw (x1-n1,y1)--(x1,y1);
+
+pickup thinquill;
+draw pth2;
+filldraw z3--z3a{right}..{down}z3b--cycle;
+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 "SQRC letter W";
+beginchar("W", 2sb#+caprat*hstretch*(22/13x_height#),
+ caprat*x_height#, 0);
+adjust_fit(0,0);
+pcshiftx := sb;
+numeric n[];
+path pth[];
+pickup quill;
+x100 = 0;
+n1 := sqrcjut;
+n2 := sqrcjutrat*sqrcjut;
+%% thick leg tops
+lft x1 = pcshiftx + n1; top y1 = h;
+x3 = 1/2w; y3 = y1;
+%% thin leg top
+pickup thinquill;
+rt x5 = w-pcshiftx; top y5 = h;
+x5a = x5-n2; y5a = y5;
+x5b = x5; y5b = y5-n2;
+pickup quill;
+%% V bottoms
+x13 = 1/2[x1,x3]; bot y13 = 0;
+x35 = 1/2[x3,x5]; bot y35 = 0;
+pth113 := z1{down}..z13;
+pth335 := z3{down}..z35;
+x83 = x3; y83 = top y3;
+x813 = rt x13; y813 = bot y13;
+x835 = rt x35; y835 = bot y35;
+%% thin legs
+pickup thinquill;
+rt x113 = x813; bot y113 = y813;
+rt x135 = x835; bot y135 = y835;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+pickup quill;
+draw pth113; draw pth335; draw (x1-n1,y1)--(x1,y1);
+pickup thinquill;
+draw z113..{up}z3; draw z135..{up}z5;
+filldraw z5--z5a{right}..{down}z5b--cycle;
+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 "SQRC letter X";
+beginchar("X", 2sb#+caprat*hstretch*(17/13x_height#),
+ caprat*x_height#, 0);
+adjust_fit(0,0);
+path pth[];
+numeric n[];
+pcshiftx := sb;
+pickup quill;
+x100 = 0;
+n1 := sqrcjut;
+n2 := sqrcjutrat*sqrcjut;
+%% diag top left to bottom right
+lft x1=pcshiftx+n1; top y1 = h;
+rt x2 = w - pcshiftx - n1; bot y2 = 0;
+%% diag top right to bottom left
+pickup thinquill;
+rt x3 = w - pcshiftx - n1; top y3 = h;
+lft x4 = pcshiftx; bot y4 = 0;
+x3a = x3-n2; x3b = x3+n1; y3a = y3b = y3;
+y3c = y3-n2; z3c = whatever[z3,z4];
+x4a = x4+n2; y4a = y4;
+y4b = y4+n2; z4b = whatever[z4,z3];
+pickup quill;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw z1--z2;
+draw (x1-n1,y1)--(x1,y1);
+draw (x2,y2)--(x2+n1,y2);
+pickup thinquill;
+draw z3--z4;
+filldraw z3--z3a{right}..{z4-z3}z3c{z3-z4}..{right}z3b--cycle;
+filldraw z4--z4a{left}..{z3-z4}z4b--cycle;
+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'.
+% \begin{macrocode}
+cmchar "SQRC letter Y";
+beginchar("Y", 2sb#+caprat*hstretch*(13/13x_height#),
+ caprat*x_height#, 0);
+adjust_fit(0,0);
+pcshiftx := sb;
+path pth[];
+numeric n[];
+pickup quill;
+x100 = 0;
+n1 := sqrcjut;
+n2 := sqrcjutrat*sqrcjut;
+%% upright
+x5 = 1/2w; y5 = 1/2h;
+x6 = x5; bot y6 = 0;
+%% left stem top
+lft x1 = pcshiftx + n1; top y1 = h;
+%% right stem
+x85 = rt x5; y85 = top y5;
+pickup thinquill;
+rt x3=w-pcshiftx; top y3 = h;
+x4=x85; y4 = y85;
+x3a=x3-n2; y3a = y3;
+y3b = y3-n2; z3b = whatever[z3,z4];
+pickup quill;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw z5--z6; draw (x6-n1,y6)--(x6+n1,y6); % stem
+draw z1--z5; draw (x1-n1,y1)--(x1,y1); % left arm
+pickup thinquill;
+draw z3--z4;
+filldraw z3--z3a{right}..{z4-z3}z3b--cycle;
+ductus:=false;
+penlabels(1,2,3,4,5,6,7,8,9,10,100);
+endchar; % end "Y"
+
+% \end{macrocode}
+% \end{routine}
+%
+%
+% \begin{routine}{Z}
+% The letter `Z'.
+% \begin{macrocode}
+cmchar "SQRC letter Z";
+beginchar("Z", 2sb#+caprat*hstretch*(13/13x_height#),
+ caprat*x_height#, 0);
+adjust_fit(0,0);
+numeric n[];
+n1 := sqrcjutrat*sqrcjut;
+path pth[];
+pcshiftx := sb;
+pickup quill;
+%% top bar ends
+lft x1 = pcshiftx; rt x2 = w -pcshiftx; top y1 = top y2 = h;
+x101 = lft x1; y101 = top y1;
+%% bottom bar ends
+lft x3 = pcshiftx; rt x4 = w -pcshiftx; bot y3 = bot y4 = 0;
+x104 = rt x4; y104 = bot y4;
+pickup stylus;
+lft x11 = x101; top y11 = y101;
+x12 = x11; y12 = y11-n1;
+x13 = x11+n1; y13 = y11;
+rt x14 = x104; bot y14 = y104;
+x15 = x14; y15 = y14 + n1;
+x16 = x14 - n1; y16 = y14;
+pickup quill;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw z1--z2; draw z3--z4;
+draw z2--z3;
+pickup stylus;
+filldraw z11--z12{up}..{right}z13--cycle;
+filldraw z14--z15{down}..{left}z16--cycle;
+ductus:=false;
+penlabels(1,2,3,4,5,6,10o,10i,14,14,16,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>
+% IMINPUNCT.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#),
+ 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*(13/13x_height#),
+ 11/10x_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);
+x4 = x5; y4=y5+3/2dot_size;
+lft x1 = pcshiftx; y1 = 3/4h;
+x2 = 1/2w; top y2 = h;
+rt x3 = w-pcshiftx; y3 = 2/3h;
+
+%%ductus:= true;
+if ductus:
+ pickup stylus;
+fi
+draw z1..z2{right}..z3{down}..z4{down};
+draw_pdot(5, dot_size);
+penlabels(1,2,3,4,5);
+endchar; % end of "?"
+
+% \end{macrocode}
+% \end{routine}
+%
+% \begin{routine}{,}
+% The `,' character.
+% \begin{macrocode}
+
+cmchar "Comma";
+beginchar(",",2sb#+hstretch*(comma_width#+dot_size#),x_height#,0);
+adjust_fit(0,0);
+pcshiftx:=sb;
+x1=w-pcshiftx-(0.5hstretch*dot_size); y1=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=2/3h; y2=1/2dot_size;
+draw_pdot(1,dot_size);
+draw_pdot(2,dot_size);
+penlabels(1,2);
+endchar; % end ":"
+
+% \end{macrocode}
+% \end{routine}
+%
+% \begin{routine}{;}
+% The `;' character.
+% \begin{macrocode}
+
+cmchar "Semicolon";
+beginchar(";",2sb#+hstretch*(comma_width#+dot_size#),x_height#,0);
+adjust_fit(0,0);
+pcshiftx:=sb;
+x1=x2=w-pcshiftx-(0.5hstretch*dot_size); y1=2/3h; y2=1/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#),7/8asc_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#),7/8asc_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>
+% SQRCLIG.MF Uncial ligatured letters, punctation and dashes
+
+% \end{macrocode}
+% First the ligtables.
+% \begin{macrocode}
+
+ligtable "`": "`"=:oct"134";
+ligtable "'": "'"=:oct"042"; %% , "?" kern 2u#, "!" kern 2u#;
+
+ligtable "-": "-"=:oct"173";
+ligtable oct"173": "-"=:oct"174";
+
+
+% \end{macrocode}
+%
+%
+% \begin{routine}{''}
+% The `''' ligature.
+% \begin{macrocode}
+
+cmchar "Closing quotes";
+beginchar(oct"042",2sb#+hstretch*(comma_width#+3dot_size#),7/8asc_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#),7/8asc_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*(8/13x_height#),x_height#,0);
+adjust_fit(0,0);
+pcshiftx:=sb/2;
+numeric alpha; alpha:=w/8;
+pickup threequarterquill;
+lft x21=pcshiftx+jut; rt x22=w-pcshiftx-jut; y21=y22=1/2h;
+z31 = z21 shifted (-jut*pdir);
+draw z21--z22;
+%draw_flatserif(21,22,srad);
+draw z31--z21;
+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*(10/13x_height#),x_height#,0);
+adjust_fit(0,0);
+pcshiftx:=sb/2;
+numeric alpha; alpha:=w/8;
+pickup threequarterquill;
+lft x21=pcshiftx+jut; rt x22=w-pcshiftx-jut; y21=y22=1/2h;
+z31 = z21 shifted (-jut*pdir);
+draw z21--z22;
+%%draw_roundserif(21,22,srad);
+draw z31--z21;
+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*(20/13x_height#),x_height#,0);
+adjust_fit(0,0);
+pcshiftx:=sb/2;
+numeric alpha; alpha:=w/8;
+pickup threequarterquill;
+lft x21=pcshiftx+jut; rt x22=w-pcshiftx-jut; y21=y22=1/2h;
+z31 = z21 shifted (-jut*pdir);
+draw z21--z22;
+%%draw_roundserif(21,22,srad);
+draw z31--z21;
+draw_flatserif(22,21,srad);
+penlabels(1,2);
+endchar; % end of "---"
+
+% \end{macrocode}
+% \end{routine}
+%
+%
+% \begin{routine}{&}
+% The ampersand, but there wasn't one.
+% \begin{macrocode}
+
+cmchar "SQRC ampersand";
+beginchar("&", sb#+caprat*hstretch*(18/13x_height#),
+ caprat*x_height#, 0);
+adjust_fit(0,0);
+pcshiftx := sb;
+numeric n[];
+path pth[];
+pickup quill;
+x100 = 0;
+n1 = sqrcjut;
+%%%% The E
+%% stem
+lft x1 = pcshiftx+n1; top y1 = h;
+x2 = x1; bot y2=0;
+%% bars
+lft x3 = pcshiftx; y3 = y1; rt x4 = 9/20w-pcshiftx; y4=y3;
+x5=x1; y5 = 6/16[y1,y2]; x6 = x4; y6 = y5;
+x7 = x3; y7 = y2; x8 = x4; y8=y7;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw z1--z2; % stem
+draw z3--z4; draw z5--z6; draw z7--z8;
+ductus:=false;
+%%%%%%%%% The T
+
+%% bar
+lft x11 = rt x4 + 2pcshiftx; rt x12=w-pcshiftx;
+top y11 = top y12 = h;
+pth1 := z11{pdir}..{pdir}z12;
+%% stem
+z13 = 1/2[z11,z12];
+x14 = x13; bot y14 = 0;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw pth1; % bar
+draw z13--z14; % stem
+ductus:=false;
+penlabels(1,2,3,4,5,6,7,8,9,11,12,13,14,17,70,100);
+%%% end T
+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>
+% SQRCDIG.MF Program file for Square Capitals digits
+%
+
+% \end{macrocode}
+%
+%
+%
+% \begin{routine}{1}
+% The digit `1'.
+% \begin{macrocode}
+cmchar "SQRC digit 1";
+beginchar("1", 2u#+fig_width#, fig_height#, 0);
+adjust_fit(0,0);
+pcshiftx := u;
+numeric n[];
+n1 := sqrcjut;
+pickup quill;
+x1=x2=w/2;
+top y1=h; bot y2=0;
+%%ductus:=true;
+draw z1--z2;
+draw (x1-n1,y1)--(x1,y1);
+draw (x2,y2)--(x2+n1,y2);
+ductus:=false;
+penlabels(1,2,100);
+endchar; % end "1"
+
+% \end{macrocode}
+% \end{routine}
+%
+%
+% \begin{routine}{2}
+% The digit `2'.
+% \begin{macrocode}
+cmchar "SQRC digit 2";
+beginchar("2", 2u#+fig_width#, fig_height#, 0);
+adjust_fit(0,0);
+numeric n[];
+n1 := sqrcjut;
+n2 := sqrcjutrat*sqrcjut;
+pcshiftx := u;
+pickup quill;
+% stem
+lft x1=pcshiftx+o; top y1=h-2thin;
+x2=1/2w; top y2= h+o;
+rt x3=w-pcshiftx-o; y3=3/4h;
+% foot
+lft x5=pcshiftx; bot y5=0;
+rt x6=w-pcshiftx; y6=y5;
+x6a = rt x6; y6a = y6;
+x6b = x6a; y6b = y6a+n2;
+x6c = x6a-n2; y6c=y6a;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw z1..z2{right}..z3{down}..{-pdir}z5; % curve
+draw z5--z6; % foot
+pickup stylus;
+filldraw z6a--z6b{down}..{left}z6c--cycle;
+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 "SQRC digit 3";
+beginchar("3", 2u#+fig_width#, fig_height#, 0);
+adjust_fit(0,0);
+pcshiftx := u;
+pickup quill;
+% x values
+lft x3=pcshiftx; x10=x3;
+rt x5=w-pcshiftx; x8=x5-3thin;
+x4=0.5[x3,x5];
+x9=0.5[x10,x8];
+%%lft x6=pcshiftx+3thin; x7=x6;
+x6=1/2[x3,x9]; x7=x6;
+% y values
+bot y3=thin; top y10=h-2thin;
+y6=0.5[y3,y10]; y7=y6;
+bot y4=-thin; top y9=h+thin;
+y5=0.5[y3,y6];
+y8=11/12[y7,y10];
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+%%draw z3..z4{right}..z5{up}...{-pdir}z6; % bottom bowl
+%%draw z7{pdir}..z8{up}..z9{left}..z10; % top bowl
+draw z3..z4{right}..z5{up}...{left}z6; % bottom bowl
+draw z7{right}..z8{up}..z9{left}..z10; % top bowl
+ductus:=false;
+penlabels(1,2,3,4,5,6,7,8,9,10,100);
+endchar; % end "3"
+
+% \end{macrocode}
+% \end{routine}
+%
+% \begin{routine}{4}
+% The digit `4'.
+% \begin{macrocode}
+cmchar "SQRC digit 4";
+beginchar("4", 2u#+fig_width#, fig_height#, 0);
+adjust_fit(0,0);
+pcshiftx := u;
+numeric n[];
+n1 := sqrcjut;
+n2 := sqrcjutrat*sqrcjut;
+pickup quill;
+% the stem
+rt x1= rt x2= w-pcshiftx-n1;
+top y1=h; bot y2=0;
+% the crossbar
+lft x3=pcshiftx; y3=0.33h;
+rt x4=w-pcshiftx; y4=y3;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw z1--z2; % vertical
+draw (x2,y2)--(x2+n1,y2);
+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 "SQRC digit 5";
+beginchar("5", 2u#+fig_width#, fig_height#, 0);
+adjust_fit(0,0);
+pcshiftx := u;
+numeric n[];
+n1 := sqrcjut;
+n2 := sqrcjutrat*sqrcjut;
+pickup quill;
+% for the top
+rt x1=w-pcshiftx; top y1=h;
+lft x2=pcshiftx; y2=y1;
+% the S curve
+x3=x2; y3=0.5h+thin;
+x4=0.5[x1,x3]; y4=0.5[y3,y5];
+rt x5=w-pcshiftx; y5=0.3h;
+x6=w/2; bot y6=0;
+lft x7=pcshiftx; bot y7=2thin;
+x1a = rt x1; y1a = y1c = y1;
+x1b = x1a; y1b = y1a-n2;
+x1c = x1a-n2;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw z1--z2; % horizontal
+draw z2--z3; % vertical
+draw z3{pdir}..z5{down}..z6{left}..z7; % curve
+pickup stylus;
+%%filldraw z1a--z1b{up}..{left}z1c--cycle;
+filldraw z1a--z1c{right}..{down}z1b--cycle;
+ductus:=false;
+penlabels(1,1a,1b,1c,2,3,4,5,6,7,100);
+endchar; % end "5"
+
+% \end{macrocode}
+% \end{routine}
+%
+% \begin{routine}{6}
+% The digit `6'.
+% \begin{macrocode}
+cmchar "SQRC digit 6";
+beginchar("6", 2u#+fig_width#, fig_height#, 0);
+adjust_fit(0,0);
+pcshiftx := u;
+pickup quill;
+rt x1=w-pcshiftx; top y1=h-2thin;
+x2=1/2w; top y2= h;
+lft x3=pcshiftx; y3=1/2h;
+x4=x2; bot y4=0;
+rt x5=w-pcshiftx; y5=1/4h;
+lft x6=rt x3; bot y6=y3;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw z1..z2{left}..z3{down}..z4{right}..z5{up}..{-pdir}z6;
+ductus:=false;
+penlabels(1,2,3,4,5,6,100);
+endchar; % end "6"
+
+% \end{macrocode}
+% \end{routine}
+%
+%
+% \begin{routine}{7}
+% The digit `7'.
+% \begin{macrocode}
+cmchar "SQRC digit 7";
+beginchar("7", 2u#+fig_width#, fig_height#, 0);
+adjust_fit(0,0);
+pcshiftx := u;
+numeric n[];
+n1 := sqrcjut;
+n2 := sqrcjutrat*sqrcjut;
+pickup quill;
+% top bar
+lft x1=pcshiftx;
+rt x2=w-pcshiftx;
+top y1=top y2=h;
+x1a = lft x1; y1a = y1c = y1;
+x1b = x1a; y1b = y1a-n2;
+x1c = x1a + n2;
+% bowed leg
+x4=w/2; bot y4=0;
+x3=0.5[x2,x4]-3thin; y3=0.5[y2,y4];
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw z1--z2; % top bar
+draw z2..z3..z4;
+pickup stylus;
+filldraw z1a--z1b{up}..{right}z1c--cycle;
+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 "SQRC digit 8";
+beginchar("8", 2u#+fig_width#, fig_height#, 0);
+adjust_fit(0,0);
+pcshiftx := u;
+numeric alpha; alpha:=1;
+pickup quill;
+lft x1=alpha*pcshiftx+o; rt x3=w-alpha*pcshiftx-o; y1=y3=3/4h;
+x2=x4=w/2; top y2=h+o; bot y4=-o;
+x5=x2; y5=h/2+2o;
+lft x11=pcshiftx; rt x13=w-pcshiftx; y11=y13=1/4h;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw z1..z2..z3..z5..z11..z4..z13..z5..cycle;
+ductus:=false;
+penlabels(1,2,3,4,5,11,13,100);
+endchar; % end "8"
+
+% \end{macrocode}
+% \end{routine}
+%
+% \begin{routine}{9}
+% The digit `9'.
+% \begin{macrocode}
+cmchar "SQRC digit 9";
+beginchar("9", 2u#+fig_width#, fig_height#, 0);
+adjust_fit(0,0);
+pcshiftx := u;
+pickup quill;
+lft x1=pcshiftx; bot y1=2thin;
+x2=1/2w; bot y2= 0;
+rt x3=w-pcshiftx; y3=1/2h;
+x4=x2; top y4=h;
+lft x5=pcshiftx; y5=3/4h;
+rt x6=lft x3; top y6=y3;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw z1..z2{right}..z3{up}..z4{left}..z5{down}..{pdir}z6;
+ductus:=false;
+penlabels(1,2,3,4,5,6,100);
+endchar; % end "9"
+
+% \end{macrocode}
+% \end{routine}
+%
+%
+% \begin{routine}{0}
+% The digit `0'.
+% \begin{macrocode}
+cmchar "SQRC digit 0";
+beginchar("0", 2u#+fig_width#, fig_height#, 0);
+adjust_fit(0,0);
+pcshiftx := u;
+y100 = h/2; x100 = pcshiftx+y100; % square center
+pickup quill;
+lft x1=pcshiftx; rt x3=w-pcshiftx; y1=y3=h/2;
+x2=x4=w/2; top y2=h+o; bot y4=-o;
+%%ductus:=true;
+if ductus:
+ pickup stylus;
+fi
+draw z1..z2..z3..z4..cycle;
+ductus:=false;
+penlabels(1,2,3,4,100);
+endchar; % end "0"
+
+% \end{macrocode}
+% \end{routine}
+%
+%
+% The end of this file.
+% \begin{macrocode}
+%</dig>
+% \end{macrocode}
+%
+%
+% \section{The font definition files} \label{sec:fd}
+%
+% The font comes in normal and bold weights only.
+% \changes{v1.1}{2005/03/31}{For Type1 fonts only need one size in fd files}
+% \begin{macrocode}
+%<*fdot1>
+\DeclareFontFamily{OT1}{sqrc}{}
+%%% \DeclareFontShape{OT1}{sqrc}{m}{n}{ <-8.5> sqrc7 <8.5-15> sqrc10 <15-> sqrc17 }{}
+ \DeclareFontShape{OT1}{sqrc}{m}{n}{ <-> sqrc10 }{}
+ \DeclareFontShape{OT1}{sqrc}{m}{sl}{ <-> sub * sqrc/m/n }{}
+ \DeclareFontShape{OT1}{sqrc}{m}{it}{ <-> sub * sqrc/m/n }{}
+ \DeclareFontShape{OT1}{sqrc}{m}{sc}{ <-> sub * sqrc/m/n }{}
+ \DeclareFontShape{OT1}{sqrc}{m}{u}{ <-> sub * sqrc/m/n }{}
+%%% \DeclareFontShape{OT1}{sqrc}{bx}{n}{ <-8.5> sqrcb7 <8.5-15> sqrcb10 <15-> sqrcb17 }{}
+ \DeclareFontShape{OT1}{sqrc}{bx}{n}{ <-> sqrcb10 }{}
+ \DeclareFontShape{OT1}{sqrc}{bx}{it}{ <-> sub * sqrc/bx/n }{}
+ \DeclareFontShape{OT1}{sqrc}{bx}{sl}{ <-> sub * sqrc/bx/n }{}
+ \DeclareFontShape{OT1}{sqrc}{b}{n}{ <-> sub * sqrc/bx/n }{}
+%</fdot1>
+% \end{macrocode}
+%
+%
+% \begin{macrocode}
+%<*fdt1>
+\DeclareFontFamily{T1}{sqrc}{}
+%%% \DeclareFontShape{T1}{sqrc}{m}{n}{ <-8.5> sqrc7 <8.5-15> sqrc10 <15-> sqrc17 }{}
+ \DeclareFontShape{T1}{sqrc}{m}{n}{ <-> sqrc10 }{}
+ \DeclareFontShape{T1}{sqrc}{m}{sl}{ <-> sub * sqrc/m/n }{}
+ \DeclareFontShape{T1}{sqrc}{m}{it}{ <-> sub * sqrc/m/n }{}
+ \DeclareFontShape{T1}{sqrc}{m}{sc}{ <-> sub * sqrc/m/n }{}
+ \DeclareFontShape{T1}{sqrc}{m}{u}{ <-> sub * sqrc/m/n }{}
+%%% \DeclareFontShape{T1}{sqrc}{bx}{n}{ <-8.5> sqrcb7 <8.5-15> sqrcb10 <15-> sqrcb17 }{}
+ \DeclareFontShape{T1}{sqrc}{bx}{n}{ <-> sqrcb10 }{}
+ \DeclareFontShape{T1}{sqrc}{bx}{it}{ <-> sub * sqrc/bx/n }{}
+ \DeclareFontShape{T1}{sqrc}{bx}{sl}{ <-> sub * sqrc/bx/n }{}
+ \DeclareFontShape{T1}{sqrc}{b}{n}{ <-> sub * sqrc/bx/n }{}
+%</fdt1>
+% \end{macrocode}
+%
+% \section{The package code} \label{sec:code}
+%
+% \subsection{The \Lpack{sqrcaps} package}
+%
+% The \Lpack{sqrcaps} 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{sqrcaps}[2002/12/30 v1.0 package for Square Capitals 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}{\sqrcfamily}
+% Selects the \thisfont{} font family in the OT1 or T1 encoding.
+% \begin{macrocode}
+\ifx\Tienc\encodingdefault
+ \newcommand{\sqrcfamily}{\usefont{T1}{sqrc}{m}{n}}
+\else
+ \newcommand{\sqrcfamily}{\usefont{OT1}{sqrc}{m}{n}}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\textsqrc}
+% Text command for the \thisfont{} font family.
+% \begin{macrocode}
+\DeclareTextFontCommand{\textsqrc}{\sqrcfamily}
+% \end{macrocode}
+% \end{macro}
+%
+% The end of this package.
+% \begin{macrocode}
+%</usc>
+% \end{macrocode}
+%
+% \subsection{The \Lpack{allsqrc} package}
+%
+% The \Lpack{allsqrc} 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{sqrcaps} package.
+% \begin{macrocode}
+%<*uscall>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{allsqrc}[2002/12/30 v1.0 package for all Square Capitals fonts]
+\RequirePackage{sqrcaps}
+% \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}{sqrc}
+\renewcommand{\sfdefault}{sqrc}
+\renewcommand{\ttdefault}{sqrc}
+% \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}{\sqrc@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{\sqrc@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}{\sqrc@new@setfontsize}
+% This is a macro that replaces the |\@setfontsize| macro which is called by
+% the font size changing commands.
+% \begin{macrocode}
+\newcommand{\sqrc@new@setfontsize}[3]{%
+ \edef\@tempa{\def\noexpand\@tempb####1<#2}%
+ \@tempa>##2<##3\@nil{\def\sqrc@baselineskip@value{##2}}%
+ \edef\@tempa{\noexpand\@tempb\sqrc@baselineskip@table<#2}%
+ \@tempa><\@nil
+ \ifx\sqrc@baselineskip@value\@empty
+ \def\sqrc@baselineskip@value{#3}%
+ \fi
+ \sqrc@old@setfontsize{#1}{#2}\sqrc@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\sqrc@old@setfontsize=\@setfontsize
+ \let\@setfontsize=\sqrc@new@setfontsize}
+\AtBeginDocument{\normalsize}
+% \end{macrocode}
+%
+%
+% The end of this package.
+% \begin{macrocode}
+%</uscall>
+% \end{macrocode}
+%
+% \section{The Postscript Type1 map file}
+%
+% Just a line or two.
+% \changes{v1.1}{2005/03/31}{Added map file}
+% \begin{macrocode}
+%<*map>
+sqrc10 Bookhands-Square-Capitals <sqrc10.pfb
+sqrcb10 Bookhands-Square-Capitals-Bold <sqrcb10.pfb
+%</map>
+% \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/fonts/bookhands/sqrcaps/sqrcaps.ins b/fonts/bookhands/sqrcaps/sqrcaps.ins
new file mode 100644
index 0000000000..5b40ad7929
--- /dev/null
+++ b/fonts/bookhands/sqrcaps/sqrcaps.ins
@@ -0,0 +1,107 @@
+%% sqrcaps.ins
+%% Author: Peter Wilson (Herries Press) herries dot press at earthlink dot net
+%% Copyright 2002--2005 Peter R. Wilson
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the Latex Project Public License, either
+%% version 1.3 of this license or (at your option) any
+%% later version.
+%% The latest version of the license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2003/06/01 or later.
+%%
+%% This work has the LPPL maintenance status "author-maintained".
+%%
+%% This work consists of the files listed in the README file.
+%%
+%% This file will generate fast loadable files from the doc files
+%% in this work when run through LaTeX
+%%
+%% --------------------- start of docstrip commands --------------
+%%
+\def\batchfile{sqrcaps.ins}
+\input docstrip.tex
+\preamble
+------------------------------------------------------------------
+ Author: Peter Wilson (Herries Press) herries dot press at earthlink dot net
+ Copyright 2002--2005 Peter R. Wilson
+
+ This work may be distributed and/or modified under the
+ conditions of the Latex Project Public License, either
+ version 1.3 of this license or (at your option) any
+ later version.
+ The latest version of the license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of
+ LaTeX version 2003/06/01 or later.
+
+ This work has the LPPL maintenance status "author-maintained".
+
+ This work consists of the files listed in the README file.
+------------------------------------------------------------------
+\endpreamble
+
+\keepsilent
+
+%%% \Msg{*** Generating the driver file ***}
+%%% \generateFile{sqrcaps.drv}{t}{\from{sqrcaps.dtx}{driver}}
+
+%%%\Msg{*** Generating the Metafont files ***}
+
+\usepostamble\empty
+%%%\generateFile{sqrc7.mf}{t}{\from{sqrcaps.dtx}{base7}}
+%%%\generateFile{sqrc10.mf}{t}{\from{sqrcaps.dtx}{base10}}
+%%%\generateFile{sqrc17.mf}{t}{\from{sqrcaps.dtx}{base17}}
+%%%\generateFile{sqrcb7.mf}{t}{\from{sqrcaps.dtx}{base7b}}
+%%%\generateFile{sqrcb10.mf}{t}{\from{sqrcaps.dtx}{base10b}}
+%%%\generateFile{sqrcb17.mf}{t}{\from{sqrcaps.dtx}{base17b}}
+%%%\generateFile{sqrcl.mf}{t}{\from{sqrcaps.dtx}{min}}
+%%%\generateFile{sqrcu.mf}{t}{\from{sqrcaps.dtx}{maj}}
+%%%\generateFile{sqrctitle.mf}{t}{\from{sqrcaps.dtx}{mfd}}
+%%%\generateFile{sqrcpunct.mf}{t}{\from{sqrcaps.dtx}{punct}}
+%%%\generateFile{sqrclig.mf}{t}{\from{sqrcaps.dtx}{lig}}
+%%%\generateFile{sqrcdig.mf}{t}{\from{sqrcaps.dtx}{dig}}
+
+\Msg{*** Generating the Font Definition files ***}
+\usepostamble\defaultpostamble
+
+\generateFile{ot1sqrc.fd}{t}{\from{sqrcaps.dtx}{fdot1}}
+\generateFile{t1sqrc.fd}{t}{\from{sqrcaps.dtx}{fdt1}}
+
+\Msg{*** Generating the LaTeX2e package files ***}
+
+\generateFile{sqrcaps.sty}{t}{\from{sqrcaps.dtx}{usc}}
+\generateFile{allsqrc.sty}{t}{\from{sqrcaps.dtx}{uscall}}
+
+\Msg{*** Generating the Postscript Type1 map file ***}
+\usepreamble\empty
+\usepostamble\empty
+
+\generateFile{sqrcaps.map}{t}{\from{sqrcaps.dtx}{map}}
+
+
+\Msg{***********************************************************}
+\Msg{*}
+\Msg{* To finish the installation *}
+\Msg{*}
+\Msg{* Move these files into the LaTeX macro area:}
+\Msg{* \space\space ot1sqrc.fd}
+\Msg{* \space\space t1sqrc.fd}
+\Msg{* \space\space sqrcaps.sty}
+\Msg{* \space\space allsqrc.sty}
+\Msg{*}
+\Msg{* Further instructions are in the README *}
+\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
diff --git a/fonts/bookhands/sqrcaps/sqrcaps.pdf b/fonts/bookhands/sqrcaps/sqrcaps.pdf
new file mode 100644
index 0000000000..d27c6da6a1
--- /dev/null
+++ b/fonts/bookhands/sqrcaps/sqrcaps.pdf
Binary files differ
diff --git a/fonts/bookhands/sqrcaps/sqrcb10.afm b/fonts/bookhands/sqrcaps/sqrcb10.afm
new file mode 100644
index 0000000000..58dffaec40
--- /dev/null
+++ b/fonts/bookhands/sqrcaps/sqrcb10.afm
@@ -0,0 +1,277 @@
+StartFontMetrics 2.0
+Comment Generated by pfaedit
+Comment Creation Date: Fri Apr 1 12:47:25 2005
+FontName sqrcb10
+FullName Bookhands-Square-Capitals-Bold
+FamilyName Bookhands
+Weight Bold
+Notice (Generated from MetaFont bitmap by mftrace 1.1.5, http://www.cs.uu.nl/~hanwen/mftrace/ Copyright 2005 Peter R. Wilson)
+ItalicAngle 0
+IsFixedPitch false
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.001
+EncodingScheme FontSpecific
+FontBBox 18 -414 1962 992
+CapHeight 933
+XHeight 719
+Ascender 775
+StartCharMetrics 256
+C 0 ; WX 0 ; N grave ; B 0 0 0 0 ;
+C 1 ; WX 0 ; N acute ; B 0 0 0 0 ;
+C 2 ; WX 0 ; N circumflex ; B 0 0 0 0 ;
+C 3 ; WX 0 ; N tilde ; B 0 0 0 0 ;
+C 4 ; WX 0 ; N dieresis ; B 0 0 0 0 ;
+C 5 ; WX 0 ; N hungarumlaut ; B 0 0 0 0 ;
+C 6 ; WX 0 ; N ring ; B 0 0 0 0 ;
+C 7 ; WX 0 ; N caron ; B 0 0 0 0 ;
+C 8 ; WX 0 ; N breve ; B 0 0 0 0 ;
+C 9 ; WX 0 ; N macron ; B 0 0 0 0 ;
+C 10 ; WX 0 ; N dotaccent ; B 0 0 0 0 ;
+C 11 ; WX 0 ; N cedilla ; B 0 0 0 0 ;
+C 12 ; WX 0 ; N ogonek ; B 0 0 0 0 ;
+C 13 ; WX 0 ; N quotesinglbase ; B 0 0 0 0 ;
+C 14 ; WX 0 ; N guilsinglleft ; B 0 0 0 0 ;
+C 15 ; WX 0 ; N guilsinglright ; B 0 0 0 0 ;
+C 16 ; WX 0 ; N quotedblleft ; B 0 0 0 0 ;
+C 17 ; WX 0 ; N quotedblright ; B 0 0 0 0 ;
+C 18 ; WX 0 ; N quotedblbase ; B 0 0 0 0 ;
+C 19 ; WX 0 ; N guillemotleft ; B 0 0 0 0 ;
+C 20 ; WX 0 ; N guillemotright ; B 0 0 0 0 ;
+C 21 ; WX 0 ; N endash ; B 0 0 0 0 ;
+C 22 ; WX 0 ; N emdash ; B 0 0 0 0 ;
+C 23 ; WX 0 ; N cwm ; B 0 0 0 0 ;
+C 24 ; WX 0 ; N perthousand ; B 0 0 0 0 ;
+C 25 ; WX 0 ; N dotlessi ; B 0 0 0 0 ;
+C 26 ; WX 0 ; N dotlessj ; B 0 0 0 0 ;
+C 27 ; WX 0 ; N ff ; B 0 0 0 0 ; L l ffl ; L i ffi ;
+C 28 ; WX 0 ; N fi ; B 0 0 0 0 ;
+C 29 ; WX 0 ; N fl ; B 0 0 0 0 ;
+C 30 ; WX 0 ; N ffi ; B 0 0 0 0 ;
+C 31 ; WX 0 ; N ffl ; B 0 0 0 0 ;
+C 32 ; WX 0 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 346 ; N exclam ; B 54 -20 292 719 ;
+C 34 ; WX 1063 ; N quotedbl ; B 145 116 1032 650 ;
+C 35 ; WX 0 ; N numbersign ; B 0 0 0 0 ;
+C 36 ; WX 0 ; N dollar ; B 0 0 0 0 ;
+C 37 ; WX 0 ; N percent ; B 0 0 0 0 ;
+C 38 ; WX 1582 ; N ampersand ; B 32 -1 1550 943 ;
+C 39 ; WX 593 ; N quoteright ; B 145 116 562 650 ;
+C 40 ; WX 0 ; N parenleft ; B 0 0 0 0 ;
+C 41 ; WX 0 ; N parenright ; B 0 0 0 0 ;
+C 42 ; WX 0 ; N asterisk ; B 0 0 0 0 ;
+C 43 ; WX 0 ; N plus ; B 0 0 0 0 ;
+C 44 ; WX 593 ; N comma ; B 146 -414 562 120 ;
+C 45 ; WX 562 ; N hyphen ; B 18 309 544 409 ;
+C 46 ; WX 299 ; N period ; B 31 -21 268 216 ;
+C 47 ; WX 0 ; N slash ; B 0 0 0 0 ;
+C 48 ; WX 989 ; N zero ; B 63 -23 926 849 ;
+C 49 ; WX 989 ; N one ; B 284 -1 705 826 ;
+C 50 ; WX 989 ; N two ; B 64 -1 947 847 ;
+C 51 ; WX 989 ; N three ; B 64 -40 927 867 ;
+C 52 ; WX 989 ; N four ; B 64 0 925 826 ;
+C 53 ; WX 989 ; N five ; B 63 -2 947 826 ;
+C 54 ; WX 989 ; N six ; B 64 0 925 826 ;
+C 55 ; WX 989 ; N seven ; B 42 -1 925 826 ;
+C 56 ; WX 989 ; N eight ; B 62 -23 926 848 ;
+C 57 ; WX 989 ; N nine ; B 64 -1 925 825 ;
+C 58 ; WX 299 ; N colon ; B 31 -21 268 598 ;
+C 59 ; WX 593 ; N semicolon ; B 146 -414 562 598 ;
+C 60 ; WX 0 ; N less ; B 0 0 0 0 ;
+C 61 ; WX 0 ; N equal ; B 0 0 0 0 ;
+C 62 ; WX 0 ; N greater ; B 0 0 0 0 ;
+C 63 ; WX 925 ; N question ; B 32 -21 893 790 ;
+C 64 ; WX 0 ; N at ; B 0 0 0 0 ;
+C 65 ; WX 1269 ; N A ; B 31 -2 1236 933 ;
+C 66 ; WX 1269 ; N B ; B 32 -28 1239 947 ;
+C 67 ; WX 1269 ; N C ; B 32 0 1236 935 ;
+C 68 ; WX 1269 ; N D ; B 32 -1 1238 934 ;
+C 69 ; WX 807 ; N E ; B 32 -2 775 934 ;
+C 70 ; WX 839 ; N F ; B 33 0 807 992 ;
+C 71 ; WX 1269 ; N G ; B 33 -1 1144 933 ;
+C 72 ; WX 1269 ; N H ; B 32 -1 1237 934 ;
+C 73 ; WX 724 ; N I ; B 32 -1 692 934 ; L J IJ ;
+C 74 ; WX 944 ; N J ; B 33 -1 913 933 ;
+C 75 ; WX 1442 ; N K ; B 32 -1 1410 934 ;
+C 76 ; WX 839 ; N L ; B 32 -1 807 991 ;
+C 77 ; WX 1700 ; N M ; B 31 -1 1668 934 ;
+C 78 ; WX 1269 ; N N ; B 32 -2 1238 935 ;
+C 79 ; WX 1528 ; N O ; B 32 -22 1497 956 ;
+C 80 ; WX 1183 ; N P ; B 32 -1 1153 945 ;
+C 81 ; WX 1528 ; N Q ; B 31 -329 1962 955 ;
+C 82 ; WX 1356 ; N R ; B 32 -1 1324 936 ;
+C 83 ; WX 997 ; N S ; B 31 0 965 935 ;
+C 84 ; WX 925 ; N T ; B 32 -1 893 945 ;
+C 85 ; WX 1356 ; N U ; B 30 -1 1323 934 ;
+C 86 ; WX 1183 ; N V ; B 32 -1 1152 934 ;
+C 87 ; WX 1958 ; N W ; B 32 -1 1928 935 ;
+C 88 ; WX 1528 ; N X ; B 32 -2 1496 935 ;
+C 89 ; WX 1183 ; N Y ; B 32 -1 1151 935 ;
+C 90 ; WX 1183 ; N Z ; B 31 -1 1152 934 ;
+C 91 ; WX 0 ; N bracketleft ; B 0 0 0 0 ;
+C 92 ; WX 1063 ; N backslash ; B 30 117 917 650 ;
+C 93 ; WX 0 ; N bracketright ; B 0 0 0 0 ;
+C 94 ; WX 0 ; N asciicircum ; B 0 0 0 0 ;
+C 95 ; WX 0 ; N underscore ; B 0 0 0 0 ;
+C 96 ; WX 593 ; N quoteleft ; B 30 117 447 650 ;
+C 97 ; WX 991 ; N a ; B 31 -1 959 718 ;
+C 98 ; WX 991 ; N b ; B 32 -14 960 720 ;
+C 99 ; WX 991 ; N c ; B 33 0 959 718 ;
+C 100 ; WX 991 ; N d ; B 32 -1 960 718 ;
+C 101 ; WX 628 ; N e ; B 32 -1 596 719 ;
+C 102 ; WX 660 ; N f ; B 33 -1 628 776 ; L l fl ; L i fi ; L f ff ;
+C 103 ; WX 991 ; N g ; B 32 -2 867 717 ;
+C 104 ; WX 991 ; N h ; B 32 -1 959 719 ;
+C 105 ; WX 572 ; N i ; B 32 -2 540 719 ; L j ij ;
+C 106 ; WX 741 ; N j ; B 33 0 710 719 ;
+C 107 ; WX 1124 ; N k ; B 32 -1 1092 719 ;
+C 108 ; WX 660 ; N l ; B 32 -2 627 776 ;
+C 109 ; WX 1322 ; N m ; B 32 -2 1290 724 ;
+C 110 ; WX 991 ; N n ; B 32 -2 960 720 ;
+C 111 ; WX 1190 ; N o ; B 32 -22 1159 742 ;
+C 112 ; WX 925 ; N p ; B 32 -1 895 721 ;
+C 113 ; WX 1190 ; N q ; B 32 -318 1624 741 ;
+C 114 ; WX 1057 ; N r ; B 33 -2 1025 719 ;
+C 115 ; WX 781 ; N s ; B 32 0 749 720 ;
+C 116 ; WX 726 ; N t ; B 32 -1 694 726 ;
+C 117 ; WX 1057 ; N u ; B 31 -1 1024 719 ;
+C 118 ; WX 925 ; N v ; B 32 -1 895 719 ;
+C 119 ; WX 1521 ; N w ; B 32 -1 1491 720 ;
+C 120 ; WX 1190 ; N x ; B 32 -2 1159 720 ;
+C 121 ; WX 925 ; N y ; B 32 -1 894 719 ;
+C 122 ; WX 925 ; N z ; B 30 -2 895 720 ;
+C 123 ; WX 694 ; N braceleft ; B 18 310 676 408 ;
+C 124 ; WX 1357 ; N bar ; B 18 310 1339 409 ;
+C 125 ; WX 0 ; N braceright ; B 0 0 0 0 ;
+C 126 ; WX 0 ; N asciitilde ; B 0 0 0 0 ;
+C 127 ; WX 0 ; N sfthyphen ; B 0 0 0 0 ;
+C 128 ; WX 0 ; N Abreve ; B 0 0 0 0 ;
+C 129 ; WX 0 ; N Aogonek ; B 0 0 0 0 ;
+C 130 ; WX 0 ; N Cacute ; B 0 0 0 0 ;
+C 131 ; WX 0 ; N Ccaron ; B 0 0 0 0 ;
+C 132 ; WX 0 ; N Dcaron ; B 0 0 0 0 ;
+C 133 ; WX 0 ; N Ecaron ; B 0 0 0 0 ;
+C 134 ; WX 0 ; N Eogonek ; B 0 0 0 0 ;
+C 135 ; WX 0 ; N Gbreve ; B 0 0 0 0 ;
+C 136 ; WX 0 ; N Lacute ; B 0 0 0 0 ;
+C 137 ; WX 0 ; N Lcaron ; B 0 0 0 0 ;
+C 138 ; WX 0 ; N Lslash ; B 0 0 0 0 ;
+C 139 ; WX 0 ; N Nacute ; B 0 0 0 0 ;
+C 140 ; WX 0 ; N Ncaron ; B 0 0 0 0 ;
+C 141 ; WX 0 ; N Eng ; B 0 0 0 0 ;
+C 142 ; WX 0 ; N Ohungarumlaut ; B 0 0 0 0 ;
+C 143 ; WX 0 ; N Racute ; B 0 0 0 0 ;
+C 144 ; WX 0 ; N Rcaron ; B 0 0 0 0 ;
+C 145 ; WX 0 ; N Sacute ; B 0 0 0 0 ;
+C 146 ; WX 0 ; N Scaron ; B 0 0 0 0 ;
+C 147 ; WX 0 ; N Scedilla ; B 0 0 0 0 ;
+C 148 ; WX 0 ; N Tcaron ; B 0 0 0 0 ;
+C 149 ; WX 0 ; N Tcedilla ; B 0 0 0 0 ;
+C 150 ; WX 0 ; N Uhungarumlaut ; B 0 0 0 0 ;
+C 151 ; WX 0 ; N Uring ; B 0 0 0 0 ;
+C 152 ; WX 0 ; N Ydieresis ; B 0 0 0 0 ;
+C 153 ; WX 0 ; N Zacute ; B 0 0 0 0 ;
+C 154 ; WX 0 ; N Zcaron ; B 0 0 0 0 ;
+C 155 ; WX 0 ; N Zdotaccent ; B 0 0 0 0 ;
+C 156 ; WX 0 ; N IJ ; B 0 0 0 0 ;
+C 157 ; WX 0 ; N Idotaccent ; B 0 0 0 0 ;
+C 158 ; WX 0 ; N dcroat ; B 0 0 0 0 ;
+C 159 ; WX 0 ; N section ; B 0 0 0 0 ;
+C 160 ; WX 0 ; N abreve ; B 0 0 0 0 ;
+C 161 ; WX 0 ; N aogonek ; B 0 0 0 0 ;
+C 162 ; WX 0 ; N cacute ; B 0 0 0 0 ;
+C 163 ; WX 0 ; N ccaron ; B 0 0 0 0 ;
+C 164 ; WX 0 ; N dcaron ; B 0 0 0 0 ;
+C 165 ; WX 0 ; N ecaron ; B 0 0 0 0 ;
+C 166 ; WX 0 ; N eogonek ; B 0 0 0 0 ;
+C 167 ; WX 0 ; N gbreve ; B 0 0 0 0 ;
+C 168 ; WX 0 ; N lacute ; B 0 0 0 0 ;
+C 169 ; WX 0 ; N lcaron ; B 0 0 0 0 ;
+C 170 ; WX 0 ; N lslash ; B 0 0 0 0 ;
+C 171 ; WX 0 ; N nacute ; B 0 0 0 0 ;
+C 172 ; WX 0 ; N ncaron ; B 0 0 0 0 ;
+C 173 ; WX 0 ; N eng ; B 0 0 0 0 ;
+C 174 ; WX 0 ; N ohungarumlaut ; B 0 0 0 0 ;
+C 175 ; WX 0 ; N racute ; B 0 0 0 0 ;
+C 176 ; WX 0 ; N rcaron ; B 0 0 0 0 ;
+C 177 ; WX 0 ; N sacute ; B 0 0 0 0 ;
+C 178 ; WX 0 ; N scaron ; B 0 0 0 0 ;
+C 179 ; WX 0 ; N scedilla ; B 0 0 0 0 ;
+C 180 ; WX 0 ; N tcaron ; B 0 0 0 0 ;
+C 181 ; WX 0 ; N tcedilla ; B 0 0 0 0 ;
+C 182 ; WX 0 ; N uhungarumlaut ; B 0 0 0 0 ;
+C 183 ; WX 0 ; N uring ; B 0 0 0 0 ;
+C 184 ; WX 0 ; N ydieresis ; B 0 0 0 0 ;
+C 185 ; WX 0 ; N zacute ; B 0 0 0 0 ;
+C 186 ; WX 0 ; N zcaron ; B 0 0 0 0 ;
+C 187 ; WX 0 ; N zdotaccent ; B 0 0 0 0 ;
+C 188 ; WX 0 ; N ij ; B 0 0 0 0 ;
+C 189 ; WX 0 ; N exclamdown ; B 0 0 0 0 ;
+C 190 ; WX 0 ; N questiondown ; B 0 0 0 0 ;
+C 191 ; WX 0 ; N sterling ; B 0 0 0 0 ;
+C 192 ; WX 0 ; N Agrave ; B 0 0 0 0 ;
+C 193 ; WX 0 ; N Aacute ; B 0 0 0 0 ;
+C 194 ; WX 0 ; N Acircumflex ; B 0 0 0 0 ;
+C 195 ; WX 0 ; N Atilde ; B 0 0 0 0 ;
+C 196 ; WX 0 ; N Adieresis ; B 0 0 0 0 ;
+C 197 ; WX 0 ; N Aring ; B 0 0 0 0 ;
+C 198 ; WX 0 ; N AE ; B 0 0 0 0 ;
+C 199 ; WX 0 ; N Ccedilla ; B 0 0 0 0 ;
+C 200 ; WX 0 ; N Egrave ; B 0 0 0 0 ;
+C 201 ; WX 0 ; N Eacute ; B 0 0 0 0 ;
+C 202 ; WX 0 ; N Ecircumflex ; B 0 0 0 0 ;
+C 203 ; WX 0 ; N Edieresis ; B 0 0 0 0 ;
+C 204 ; WX 0 ; N Igrave ; B 0 0 0 0 ;
+C 205 ; WX 0 ; N Iacute ; B 0 0 0 0 ;
+C 206 ; WX 0 ; N Icircumflex ; B 0 0 0 0 ;
+C 207 ; WX 0 ; N Idieresis ; B 0 0 0 0 ;
+C 208 ; WX 0 ; N Eth ; B 0 0 0 0 ;
+C 209 ; WX 0 ; N Ntilde ; B 0 0 0 0 ;
+C 210 ; WX 0 ; N Ograve ; B 0 0 0 0 ;
+C 211 ; WX 0 ; N Oacute ; B 0 0 0 0 ;
+C 212 ; WX 0 ; N Ocircumflex ; B 0 0 0 0 ;
+C 213 ; WX 0 ; N Otilde ; B 0 0 0 0 ;
+C 214 ; WX 0 ; N Odieresis ; B 0 0 0 0 ;
+C 215 ; WX 0 ; N OE ; B 0 0 0 0 ;
+C 216 ; WX 0 ; N Oslash ; B 0 0 0 0 ;
+C 217 ; WX 0 ; N Ugrave ; B 0 0 0 0 ;
+C 218 ; WX 0 ; N Uacute ; B 0 0 0 0 ;
+C 219 ; WX 0 ; N Ucircumflex ; B 0 0 0 0 ;
+C 220 ; WX 0 ; N Udieresis ; B 0 0 0 0 ;
+C 221 ; WX 0 ; N Yacute ; B 0 0 0 0 ;
+C 222 ; WX 0 ; N Thorn ; B 0 0 0 0 ;
+C 223 ; WX 0 ; N SS ; B 0 0 0 0 ;
+C 224 ; WX 0 ; N agrave ; B 0 0 0 0 ;
+C 225 ; WX 0 ; N aacute ; B 0 0 0 0 ;
+C 226 ; WX 0 ; N acircumflex ; B 0 0 0 0 ;
+C 227 ; WX 0 ; N atilde ; B 0 0 0 0 ;
+C 228 ; WX 0 ; N adieresis ; B 0 0 0 0 ;
+C 229 ; WX 0 ; N aring ; B 0 0 0 0 ;
+C 230 ; WX 0 ; N ae ; B 0 0 0 0 ;
+C 231 ; WX 0 ; N ccedilla ; B 0 0 0 0 ;
+C 232 ; WX 0 ; N egrave ; B 0 0 0 0 ;
+C 233 ; WX 0 ; N eacute ; B 0 0 0 0 ;
+C 234 ; WX 0 ; N ecircumflex ; B 0 0 0 0 ;
+C 235 ; WX 0 ; N edieresis ; B 0 0 0 0 ;
+C 236 ; WX 0 ; N igrave ; B 0 0 0 0 ;
+C 237 ; WX 0 ; N iacute ; B 0 0 0 0 ;
+C 238 ; WX 0 ; N icircumflex ; B 0 0 0 0 ;
+C 239 ; WX 0 ; N idieresis ; B 0 0 0 0 ;
+C 240 ; WX 0 ; N eth ; B 0 0 0 0 ;
+C 241 ; WX 0 ; N ntilde ; B 0 0 0 0 ;
+C 242 ; WX 0 ; N ograve ; B 0 0 0 0 ;
+C 243 ; WX 0 ; N oacute ; B 0 0 0 0 ;
+C 244 ; WX 0 ; N ocircumflex ; B 0 0 0 0 ;
+C 245 ; WX 0 ; N otilde ; B 0 0 0 0 ;
+C 246 ; WX 0 ; N odieresis ; B 0 0 0 0 ;
+C 247 ; WX 0 ; N oe ; B 0 0 0 0 ;
+C 248 ; WX 0 ; N oslash ; B 0 0 0 0 ;
+C 249 ; WX 0 ; N ugrave ; B 0 0 0 0 ;
+C 250 ; WX 0 ; N uacute ; B 0 0 0 0 ;
+C 251 ; WX 0 ; N ucircumflex ; B 0 0 0 0 ;
+C 252 ; WX 0 ; N udieresis ; B 0 0 0 0 ;
+C 253 ; WX 0 ; N yacute ; B 0 0 0 0 ;
+C 254 ; WX 0 ; N thorn ; B 0 0 0 0 ;
+C 255 ; WX 0 ; N germandbls ; B 0 0 0 0 ;
+EndCharMetrics
+EndFontMetrics
diff --git a/fonts/bookhands/sqrcaps/sqrcb10.pfb b/fonts/bookhands/sqrcaps/sqrcb10.pfb
new file mode 100644
index 0000000000..e810659438
--- /dev/null
+++ b/fonts/bookhands/sqrcaps/sqrcb10.pfb
Binary files differ
diff --git a/fonts/bookhands/sqrcaps/sqrcb10.tfm b/fonts/bookhands/sqrcaps/sqrcb10.tfm
new file mode 100644
index 0000000000..fd15e06eba
--- /dev/null
+++ b/fonts/bookhands/sqrcaps/sqrcb10.tfm
Binary files differ
diff --git a/fonts/bookhands/sqrcaps/trysqrcaps.pdf b/fonts/bookhands/sqrcaps/trysqrcaps.pdf
new file mode 100644
index 0000000000..344b2d049f
--- /dev/null
+++ b/fonts/bookhands/sqrcaps/trysqrcaps.pdf
Binary files differ
diff --git a/fonts/bookhands/sqrcaps/trysqrcaps.tex b/fonts/bookhands/sqrcaps/trysqrcaps.tex
new file mode 100644
index 0000000000..bc3fb17964
--- /dev/null
+++ b/fonts/bookhands/sqrcaps/trysqrcaps.tex
@@ -0,0 +1,76 @@
+% trysqrcaps.tex Test Square Capitals fonts
+%\documentclass[12pt]{article}
+\documentclass{article}
+\usepackage{sqrcaps}
+
+\newcommand{\ABC}{ABCDEFGHIJKL MNOPQRSTUVWXYZ}
+\newcommand{\abc}{abcdefghijkl mnopqrs{}tuvwxyz}
+\newcommand{\ABCnb}{ABCDEFGHIJKLMNOPQRSTUVWXYZ}
+\newcommand{\abcnb}{abcdefghijklmnopqrs{}tuvwxyz}
+\newcommand{\punct}{.,;:!?`' () []}
+\newcommand{\figs}{0123456789}
+\newcommand{\dashes}{- -- ---}
+\newcommand{\ligs}{\&{} ct st}
+\newcommand{\sentence}{%
+this is an example of the square capitals font. now is the time for all good
+men, and women, to come to the aid of the party while the quick brown fox
+jumps over the lazy dog.}
+
+\newcommand{\Sentence}{%
+This is an example of the Square Capitals font. Now is the time for all good
+men, and women, to come to the aid of the party while the quick brown fox
+jumps over the lazy dog.}
+
+
+
+\title{Try Square Capitals Fonts}
+\author{}
+\date{}
+\begin{document}
+\maketitle
+
+ This provides a short test of the characters in the Square Capitals fonts
+--- the \verb|sqrc| font family. Pen angle is 0 degrees, 5 and 4 nibs for
+normal and bold versions.
+
+
+
+\begin{center}
+The Square Capitals Huge normal font. \\ \par
+{\sqrcfamily\Huge \ABC\\ \abc\\ \punct{} \dashes\\ \figs{} \ligs{} \par }
+\end{center}
+
+\begin{center}
+The Square Capitals font in its normal size \\
+\textsqrc{\ABCnb{} \abcnb{} \punct{} \dashes{} \figs{} \ligs{} } \\
+\end{center}
+
+\begin{center}
+The bold font, the normal font, and the bold Computer Modern
+Roman, all in the normal size \\
+\textsqrc{\textbf{\abc{} \figs{} \ligs{}}} \\
+\textsqrc{\abc{} \figs{} \ligs{}} \\
+\textbf{\abc{} \figs{} \ligs{}} \\
+\end{center}
+
+\begin{center}
+The bold versions, in Huge and tiny sizes. \par
+\sqrcfamily\bfseries
+\Huge \abc{} \figs{} \ligs{} \par
+\tiny \abc{} \figs{} \ligs{} \par
+\end{center}
+
+\begin{center}
+The font in the tiny size \\ \par
+{\sqrcfamily\tiny \abc{} \figs{} \ligs{} \par }
+\end{center}
+
+
+{
+\sqrcfamily
+\Sentence{}
+}
+
+ This is the end of the test file.
+
+\end{document}