From 9631a619eb83ca16233a8c5a5d22b2549de79f6d Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 8 Apr 2011 16:43:45 +0000 Subject: bookhands update (delayed from years ago) git-svn-id: svn://tug.org/texlive/trunk@22023 c570f23f-e606-0410-a88d-b1316a301751 --- .../texmf-dist/doc/fonts/bookhands/README.auncial | 71 - .../texmf-dist/doc/fonts/bookhands/README.carolmin | 71 - .../texmf-dist/doc/fonts/bookhands/README.egothic | 71 - .../texmf-dist/doc/fonts/bookhands/README.humanist | 105 - .../texmf-dist/doc/fonts/bookhands/README.huncial | 71 - .../texmf-dist/doc/fonts/bookhands/README.inslrmaj | 71 - .../texmf-dist/doc/fonts/bookhands/README.inslrmin | 71 - .../texmf-dist/doc/fonts/bookhands/README.pgothic | 75 - .../texmf-dist/doc/fonts/bookhands/README.rotunda | 71 - .../texmf-dist/doc/fonts/bookhands/README.rustic | 73 - .../texmf-dist/doc/fonts/bookhands/README.sqrcaps | 71 - .../texmf-dist/doc/fonts/bookhands/README.tgothic | 71 - .../texmf-dist/doc/fonts/bookhands/README.uncial | 71 - .../texmf-dist/doc/fonts/bookhands/allsqrcaps.pdf | Bin 0 -> 71965 bytes .../texmf-dist/doc/fonts/bookhands/auncial-README | 71 + .../doc/fonts/bookhands/auncial-allfont.ps.gz | Bin 117839 -> 0 bytes .../doc/fonts/bookhands/auncial-allfont.tex | 92 - .../doc/fonts/bookhands/auncial/allfont.ps.gz | Bin 0 -> 117831 bytes .../doc/fonts/bookhands/auncial/allfont.tex | 92 + .../texmf-dist/doc/fonts/bookhands/carolmin-README | 71 + .../doc/fonts/bookhands/carolmin-allfont.tex | 97 - .../doc/fonts/bookhands/carolmin/allfont.tex | 97 + .../texmf-dist/doc/fonts/bookhands/egothic-README | 71 + .../doc/fonts/bookhands/egothic-allfont.tex | 97 - .../doc/fonts/bookhands/egothic/allfont.tex | 97 + .../texmf-dist/doc/fonts/bookhands/humanist-README | 105 + .../doc/fonts/bookhands/humanist-allfont.tex | 97 - .../doc/fonts/bookhands/humanist-tryfont.tex | 20 +- .../doc/fonts/bookhands/humanist/allfont.tex | 115 + .../texmf-dist/doc/fonts/bookhands/huncial-README | 71 + .../doc/fonts/bookhands/huncial-allfont.ps.gz | Bin 84783 -> 0 bytes .../doc/fonts/bookhands/huncial-allfont.tex | 92 - .../doc/fonts/bookhands/huncial/allfont.ps.gz | Bin 0 -> 84775 bytes .../doc/fonts/bookhands/huncial/allfont.tex | 92 + .../texmf-dist/doc/fonts/bookhands/inslrmaj-README | 71 + .../doc/fonts/bookhands/inslrmaj-allfont.ps.gz | Bin 91996 -> 0 bytes .../doc/fonts/bookhands/inslrmaj-allfont.tex | 93 - .../doc/fonts/bookhands/inslrmaj/allfont.ps.gz | Bin 0 -> 91987 bytes .../doc/fonts/bookhands/inslrmaj/allfont.tex | 93 + .../texmf-dist/doc/fonts/bookhands/inslrmin-README | 71 + .../doc/fonts/bookhands/inslrmin-allfont.tex | 98 - .../doc/fonts/bookhands/inslrmin/allfont.tex | 98 + .../texmf-dist/doc/fonts/bookhands/pgothic-README | 75 + .../doc/fonts/bookhands/pgothic-allfont.tex | 97 - .../doc/fonts/bookhands/pgothic/allfont.tex | 97 + .../texmf-dist/doc/fonts/bookhands/rotunda-README | 71 + .../doc/fonts/bookhands/rotunda-allfont.tex | 97 - .../doc/fonts/bookhands/rotunda/allfont.tex | 97 + .../texmf-dist/doc/fonts/bookhands/rustic-README | 73 + .../doc/fonts/bookhands/rustic-allfont.ps.gz | Bin 130540 -> 0 bytes .../doc/fonts/bookhands/rustic-allfont.tex | 97 - .../doc/fonts/bookhands/rustic/allfont.ps.gz | Bin 0 -> 130533 bytes .../doc/fonts/bookhands/rustic/allfont.tex | 97 + .../texmf-dist/doc/fonts/bookhands/sqrcaps-README | 86 + .../doc/fonts/bookhands/sqrcaps-allfont.tex | 97 - .../doc/fonts/bookhands/sqrcaps-tryfont.tex | 76 - Master/texmf-dist/doc/fonts/bookhands/sqrcaps.pdf | Bin 0 -> 148378 bytes .../doc/fonts/bookhands/sqrcaps/allsqrcaps.tex | 97 + .../texmf-dist/doc/fonts/bookhands/tgothic-README | 71 + .../doc/fonts/bookhands/tgothic-allfont.tex | 97 - .../doc/fonts/bookhands/tgothic/allfont.tex | 97 + .../texmf-dist/doc/fonts/bookhands/trysqrcaps.pdf | Bin 0 -> 84568 bytes .../texmf-dist/doc/fonts/bookhands/trysqrcaps.tex | 76 + .../texmf-dist/doc/fonts/bookhands/uncial-README | 71 + .../doc/fonts/bookhands/uncial-allfont.ps.gz | Bin 117943 -> 0 bytes .../doc/fonts/bookhands/uncial-allfont.tex | 94 - .../doc/fonts/bookhands/uncial/allfont.ps.gz | Bin 0 -> 117936 bytes .../doc/fonts/bookhands/uncial/allfont.tex | 94 + .../fonts/afm/public/bookhands/sqrc10.afm | 277 + .../fonts/afm/public/bookhands/sqrcb10.afm | 277 + .../fonts/map/dvips/bookhands/sqrcaps.map | 2 + .../fonts/source/public/bookhands/hmin10.mf | 20 +- .../fonts/source/public/bookhands/hmin17.mf | 20 +- .../fonts/source/public/bookhands/hmin7.mf | 20 +- .../fonts/source/public/bookhands/hminb10.mf | 20 +- .../fonts/source/public/bookhands/hminb17.mf | 20 +- .../fonts/source/public/bookhands/hminb7.mf | 20 +- .../fonts/source/public/bookhands/hmindig.mf | 20 +- .../fonts/source/public/bookhands/hminl.mf | 20 +- .../fonts/source/public/bookhands/hminlig.mf | 128 +- .../fonts/source/public/bookhands/hminpunct.mf | 20 +- .../fonts/source/public/bookhands/hmintitle.mf | 20 +- .../fonts/source/public/bookhands/hminu.mf | 20 +- .../fonts/source/public/bookhands/sqrc10.mf | 81 - .../fonts/source/public/bookhands/sqrc17.mf | 81 - .../fonts/source/public/bookhands/sqrc7.mf | 81 - .../fonts/source/public/bookhands/sqrcb10.mf | 81 - .../fonts/source/public/bookhands/sqrcb17.mf | 81 - .../fonts/source/public/bookhands/sqrcb7.mf | 81 - .../fonts/source/public/bookhands/sqrcdig.mf | 251 - .../fonts/source/public/bookhands/sqrcl.mf | 836 --- .../fonts/source/public/bookhands/sqrclig.mf | 142 - .../fonts/source/public/bookhands/sqrcpunct.mf | 121 - .../fonts/source/public/bookhands/sqrctitle.mf | 710 --- .../fonts/source/public/bookhands/sqrcu.mf | 836 --- .../fonts/tfm/public/bookhands/auncl10.tfm | Bin 0 -> 588 bytes .../fonts/tfm/public/bookhands/auncl17.tfm | Bin 0 -> 588 bytes .../fonts/tfm/public/bookhands/auncl7.tfm | Bin 0 -> 588 bytes .../fonts/tfm/public/bookhands/aunclb10.tfm | Bin 0 -> 588 bytes .../fonts/tfm/public/bookhands/aunclb17.tfm | Bin 0 -> 588 bytes .../fonts/tfm/public/bookhands/aunclb7.tfm | Bin 0 -> 588 bytes .../fonts/tfm/public/bookhands/cmin10.tfm | Bin 0 -> 708 bytes .../fonts/tfm/public/bookhands/cmin17.tfm | Bin 0 -> 708 bytes .../fonts/tfm/public/bookhands/cmin7.tfm | Bin 0 -> 708 bytes .../fonts/tfm/public/bookhands/cminb10.tfm | Bin 0 -> 712 bytes .../fonts/tfm/public/bookhands/cminb17.tfm | Bin 0 -> 672 bytes .../fonts/tfm/public/bookhands/cminb7.tfm | Bin 0 -> 708 bytes .../fonts/tfm/public/bookhands/egoth10.tfm | Bin 0 -> 720 bytes .../fonts/tfm/public/bookhands/egoth17.tfm | Bin 0 -> 720 bytes .../fonts/tfm/public/bookhands/egoth7.tfm | Bin 0 -> 724 bytes .../fonts/tfm/public/bookhands/egothb10.tfm | Bin 0 -> 720 bytes .../fonts/tfm/public/bookhands/egothb17.tfm | Bin 0 -> 720 bytes .../fonts/tfm/public/bookhands/egothb7.tfm | Bin 0 -> 724 bytes .../fonts/tfm/public/bookhands/hmin10.tfm | Bin 0 -> 752 bytes .../fonts/tfm/public/bookhands/hmin17.tfm | Bin 0 -> 752 bytes .../fonts/tfm/public/bookhands/hmin7.tfm | Bin 0 -> 748 bytes .../fonts/tfm/public/bookhands/hminb10.tfm | Bin 0 -> 752 bytes .../fonts/tfm/public/bookhands/hminb17.tfm | Bin 0 -> 752 bytes .../fonts/tfm/public/bookhands/hminb7.tfm | Bin 0 -> 748 bytes .../fonts/tfm/public/bookhands/huncl10.tfm | Bin 0 -> 720 bytes .../fonts/tfm/public/bookhands/huncl17.tfm | Bin 0 -> 720 bytes .../fonts/tfm/public/bookhands/huncl7.tfm | Bin 0 -> 720 bytes .../fonts/tfm/public/bookhands/hunclb10.tfm | Bin 0 -> 720 bytes .../fonts/tfm/public/bookhands/hunclb17.tfm | Bin 0 -> 720 bytes .../fonts/tfm/public/bookhands/hunclb7.tfm | Bin 0 -> 716 bytes .../fonts/tfm/public/bookhands/imaj10.tfm | Bin 0 -> 1704 bytes .../fonts/tfm/public/bookhands/imaj17.tfm | Bin 0 -> 1700 bytes .../fonts/tfm/public/bookhands/imaj7.tfm | Bin 0 -> 1700 bytes .../fonts/tfm/public/bookhands/imajb10.tfm | Bin 0 -> 1708 bytes .../fonts/tfm/public/bookhands/imajb17.tfm | Bin 0 -> 1708 bytes .../fonts/tfm/public/bookhands/imajb7.tfm | Bin 0 -> 1704 bytes .../fonts/tfm/public/bookhands/imin10.tfm | Bin 0 -> 632 bytes .../fonts/tfm/public/bookhands/imin17.tfm | Bin 0 -> 632 bytes .../fonts/tfm/public/bookhands/imin7.tfm | Bin 0 -> 632 bytes .../fonts/tfm/public/bookhands/iminb10.tfm | Bin 0 -> 632 bytes .../fonts/tfm/public/bookhands/iminb17.tfm | Bin 0 -> 632 bytes .../fonts/tfm/public/bookhands/iminb7.tfm | Bin 0 -> 632 bytes .../fonts/tfm/public/bookhands/pgoth10.tfm | Bin 0 -> 704 bytes .../fonts/tfm/public/bookhands/pgoth17.tfm | Bin 0 -> 704 bytes .../fonts/tfm/public/bookhands/pgoth7.tfm | Bin 0 -> 704 bytes .../fonts/tfm/public/bookhands/pgothb10.tfm | Bin 0 -> 704 bytes .../fonts/tfm/public/bookhands/pgothb17.tfm | Bin 0 -> 704 bytes .../fonts/tfm/public/bookhands/rtnd10.tfm | Bin 0 -> 616 bytes .../fonts/tfm/public/bookhands/rtnd17.tfm | Bin 0 -> 616 bytes .../fonts/tfm/public/bookhands/rtnd7.tfm | Bin 0 -> 616 bytes .../fonts/tfm/public/bookhands/rtndb10.tfm | Bin 0 -> 616 bytes .../fonts/tfm/public/bookhands/rtndb17.tfm | Bin 0 -> 616 bytes .../fonts/tfm/public/bookhands/rtndb7.tfm | Bin 0 -> 616 bytes .../fonts/tfm/public/bookhands/rust10.tfm | Bin 0 -> 604 bytes .../fonts/tfm/public/bookhands/rust17.tfm | Bin 0 -> 608 bytes .../fonts/tfm/public/bookhands/rust7.tfm | Bin 0 -> 608 bytes .../fonts/tfm/public/bookhands/rustb10.tfm | Bin 0 -> 608 bytes .../fonts/tfm/public/bookhands/rustb17.tfm | Bin 0 -> 608 bytes .../fonts/tfm/public/bookhands/rustb7.tfm | Bin 0 -> 608 bytes .../fonts/tfm/public/bookhands/sqrc10.tfm | Bin 0 -> 684 bytes .../fonts/tfm/public/bookhands/sqrcb10.tfm | Bin 0 -> 680 bytes .../fonts/tfm/public/bookhands/tgoth10.tfm | Bin 0 -> 704 bytes .../fonts/tfm/public/bookhands/tgoth17.tfm | Bin 0 -> 704 bytes .../fonts/tfm/public/bookhands/tgoth7.tfm | Bin 0 -> 704 bytes .../fonts/tfm/public/bookhands/tgothb10.tfm | Bin 0 -> 704 bytes .../fonts/tfm/public/bookhands/tgothb17.tfm | Bin 0 -> 704 bytes .../fonts/tfm/public/bookhands/uncl10.tfm | Bin 0 -> 632 bytes .../fonts/tfm/public/bookhands/uncl17.tfm | Bin 0 -> 632 bytes .../fonts/tfm/public/bookhands/uncl7.tfm | Bin 0 -> 632 bytes .../fonts/tfm/public/bookhands/unclb10.tfm | Bin 0 -> 632 bytes .../fonts/tfm/public/bookhands/unclb17.tfm | Bin 0 -> 632 bytes .../fonts/tfm/public/bookhands/unclb7.tfm | Bin 0 -> 632 bytes .../fonts/type1/public/bookhands/sqrc10.pfb | Bin 0 -> 37321 bytes .../fonts/type1/public/bookhands/sqrcb10.pfb | Bin 0 -> 38066 bytes .../texmf-dist/source/fonts/bookhands/auncial.dtx | 3803 ++++++++++++++ .../texmf-dist/source/fonts/bookhands/auncial.ins | 101 + .../texmf-dist/source/fonts/bookhands/carolmin.dtx | 4924 ++++++++++++++++++ .../texmf-dist/source/fonts/bookhands/carolmin.ins | 101 + .../texmf-dist/source/fonts/bookhands/egothic.dtx | 5036 ++++++++++++++++++ .../texmf-dist/source/fonts/bookhands/egothic.ins | 101 + .../texmf-dist/source/fonts/bookhands/humanist.dtx | 5019 ++++++++++++++++++ .../texmf-dist/source/fonts/bookhands/humanist.ins | 118 + .../texmf-dist/source/fonts/bookhands/huncial.dtx | 3877 ++++++++++++++ .../texmf-dist/source/fonts/bookhands/huncial.ins | 101 + .../texmf-dist/source/fonts/bookhands/inslrmaj.dtx | 4809 +++++++++++++++++ .../texmf-dist/source/fonts/bookhands/inslrmaj.ins | 101 + .../texmf-dist/source/fonts/bookhands/inslrmin.dtx | 4630 +++++++++++++++++ .../texmf-dist/source/fonts/bookhands/inslrmin.ins | 101 + .../texmf-dist/source/fonts/bookhands/pgothic.dtx | 5484 ++++++++++++++++++++ .../texmf-dist/source/fonts/bookhands/pgothic.ins | 101 + .../texmf-dist/source/fonts/bookhands/rotunda.dtx | 4959 ++++++++++++++++++ .../texmf-dist/source/fonts/bookhands/rotunda.ins | 101 + .../texmf-dist/source/fonts/bookhands/rustic.dtx | 3778 ++++++++++++++ .../texmf-dist/source/fonts/bookhands/rustic.ins | 103 + .../texmf-dist/source/fonts/bookhands/sqrcaps.dtx | 4945 ++++++++++++++++++ .../texmf-dist/source/fonts/bookhands/sqrcaps.ins | 107 + .../texmf-dist/source/fonts/bookhands/tgothic.dtx | 5402 +++++++++++++++++++ .../texmf-dist/source/fonts/bookhands/tgothic.ins | 101 + .../texmf-dist/source/fonts/bookhands/uncial.dtx | 3761 ++++++++++++++ .../texmf-dist/source/fonts/bookhands/uncial.ins | 103 + .../source/latex/bookhands/auncial/auncial.dtx | 3803 -------------- .../source/latex/bookhands/auncial/auncial.ins | 101 - .../source/latex/bookhands/carolmin/carolmin.dtx | 4924 ------------------ .../source/latex/bookhands/carolmin/carolmin.ins | 101 - .../source/latex/bookhands/egothic/egothic.dtx | 5036 ------------------ .../source/latex/bookhands/egothic/egothic.ins | 101 - .../source/latex/bookhands/humanist/humanist.dtx | 5019 ------------------ .../source/latex/bookhands/humanist/humanist.ins | 118 - .../source/latex/bookhands/huncial/huncial.dtx | 3877 -------------- .../source/latex/bookhands/huncial/huncial.ins | 101 - .../source/latex/bookhands/inslrmaj/inslrmaj.dtx | 4809 ----------------- .../source/latex/bookhands/inslrmaj/inslrmaj.ins | 101 - .../source/latex/bookhands/inslrmin/inslrmin.dtx | 4630 ----------------- .../source/latex/bookhands/inslrmin/inslrmin.ins | 101 - .../source/latex/bookhands/pgothic/pgothic.dtx | 5484 -------------------- .../source/latex/bookhands/pgothic/pgothic.ins | 101 - .../source/latex/bookhands/rotunda/rotunda.dtx | 4959 ------------------ .../source/latex/bookhands/rotunda/rotunda.ins | 101 - .../source/latex/bookhands/rustic/rustic.dtx | 3778 -------------- .../source/latex/bookhands/rustic/rustic.ins | 103 - .../source/latex/bookhands/sqrcaps/sqrcaps.dtx | 4908 ------------------ .../source/latex/bookhands/sqrcaps/sqrcaps.ins | 101 - .../source/latex/bookhands/tgothic/tgothic.dtx | 5402 ------------------- .../source/latex/bookhands/tgothic/tgothic.ins | 101 - .../source/latex/bookhands/uncial/uncial.dtx | 3761 -------------- .../source/latex/bookhands/uncial/uncial.ins | 103 - Master/texmf-dist/tex/latex/bookhands/allhmin.sty | 20 +- Master/texmf-dist/tex/latex/bookhands/allsqrc.sty | 21 +- Master/texmf-dist/tex/latex/bookhands/humanist.sty | 20 +- Master/texmf-dist/tex/latex/bookhands/ot1hmin.fd | 20 +- Master/texmf-dist/tex/latex/bookhands/ot1sqrc.fd | 27 +- Master/texmf-dist/tex/latex/bookhands/sqrcaps.sty | 21 +- Master/texmf-dist/tex/latex/bookhands/t1hmin.fd | 20 +- Master/texmf-dist/tex/latex/bookhands/t1sqrc.fd | 27 +- Master/tlpkg/bin/tlpkg-ctan-check | 2 +- Master/tlpkg/libexec/ctan2tds | 46 +- Master/tlpkg/tlpsrc/bookhands.tlpsrc | 1 + 232 files changed, 65081 insertions(+), 67542 deletions(-) delete mode 100644 Master/texmf-dist/doc/fonts/bookhands/README.auncial delete mode 100644 Master/texmf-dist/doc/fonts/bookhands/README.carolmin delete mode 100644 Master/texmf-dist/doc/fonts/bookhands/README.egothic delete mode 100644 Master/texmf-dist/doc/fonts/bookhands/README.humanist delete mode 100644 Master/texmf-dist/doc/fonts/bookhands/README.huncial delete mode 100644 Master/texmf-dist/doc/fonts/bookhands/README.inslrmaj delete mode 100644 Master/texmf-dist/doc/fonts/bookhands/README.inslrmin delete mode 100644 Master/texmf-dist/doc/fonts/bookhands/README.pgothic delete mode 100644 Master/texmf-dist/doc/fonts/bookhands/README.rotunda delete mode 100644 Master/texmf-dist/doc/fonts/bookhands/README.rustic delete mode 100644 Master/texmf-dist/doc/fonts/bookhands/README.sqrcaps delete mode 100644 Master/texmf-dist/doc/fonts/bookhands/README.tgothic delete mode 100644 Master/texmf-dist/doc/fonts/bookhands/README.uncial create mode 100644 Master/texmf-dist/doc/fonts/bookhands/allsqrcaps.pdf create mode 100644 Master/texmf-dist/doc/fonts/bookhands/auncial-README delete mode 100644 Master/texmf-dist/doc/fonts/bookhands/auncial-allfont.ps.gz delete mode 100644 Master/texmf-dist/doc/fonts/bookhands/auncial-allfont.tex create mode 100644 Master/texmf-dist/doc/fonts/bookhands/auncial/allfont.ps.gz create mode 100644 Master/texmf-dist/doc/fonts/bookhands/auncial/allfont.tex create mode 100644 Master/texmf-dist/doc/fonts/bookhands/carolmin-README delete mode 100644 Master/texmf-dist/doc/fonts/bookhands/carolmin-allfont.tex create mode 100644 Master/texmf-dist/doc/fonts/bookhands/carolmin/allfont.tex create mode 100644 Master/texmf-dist/doc/fonts/bookhands/egothic-README delete mode 100644 Master/texmf-dist/doc/fonts/bookhands/egothic-allfont.tex create mode 100644 Master/texmf-dist/doc/fonts/bookhands/egothic/allfont.tex create mode 100644 Master/texmf-dist/doc/fonts/bookhands/humanist-README delete mode 100644 Master/texmf-dist/doc/fonts/bookhands/humanist-allfont.tex create mode 100644 Master/texmf-dist/doc/fonts/bookhands/humanist/allfont.tex create mode 100644 Master/texmf-dist/doc/fonts/bookhands/huncial-README delete mode 100644 Master/texmf-dist/doc/fonts/bookhands/huncial-allfont.ps.gz delete mode 100644 Master/texmf-dist/doc/fonts/bookhands/huncial-allfont.tex create mode 100644 Master/texmf-dist/doc/fonts/bookhands/huncial/allfont.ps.gz create mode 100644 Master/texmf-dist/doc/fonts/bookhands/huncial/allfont.tex create mode 100644 Master/texmf-dist/doc/fonts/bookhands/inslrmaj-README delete mode 100644 Master/texmf-dist/doc/fonts/bookhands/inslrmaj-allfont.ps.gz delete mode 100644 Master/texmf-dist/doc/fonts/bookhands/inslrmaj-allfont.tex create mode 100644 Master/texmf-dist/doc/fonts/bookhands/inslrmaj/allfont.ps.gz create mode 100644 Master/texmf-dist/doc/fonts/bookhands/inslrmaj/allfont.tex create mode 100644 Master/texmf-dist/doc/fonts/bookhands/inslrmin-README delete mode 100644 Master/texmf-dist/doc/fonts/bookhands/inslrmin-allfont.tex create mode 100644 Master/texmf-dist/doc/fonts/bookhands/inslrmin/allfont.tex create mode 100644 Master/texmf-dist/doc/fonts/bookhands/pgothic-README delete mode 100644 Master/texmf-dist/doc/fonts/bookhands/pgothic-allfont.tex create mode 100644 Master/texmf-dist/doc/fonts/bookhands/pgothic/allfont.tex create mode 100644 Master/texmf-dist/doc/fonts/bookhands/rotunda-README delete mode 100644 Master/texmf-dist/doc/fonts/bookhands/rotunda-allfont.tex create mode 100644 Master/texmf-dist/doc/fonts/bookhands/rotunda/allfont.tex create mode 100644 Master/texmf-dist/doc/fonts/bookhands/rustic-README delete mode 100644 Master/texmf-dist/doc/fonts/bookhands/rustic-allfont.ps.gz delete mode 100644 Master/texmf-dist/doc/fonts/bookhands/rustic-allfont.tex create mode 100644 Master/texmf-dist/doc/fonts/bookhands/rustic/allfont.ps.gz create mode 100644 Master/texmf-dist/doc/fonts/bookhands/rustic/allfont.tex create mode 100644 Master/texmf-dist/doc/fonts/bookhands/sqrcaps-README delete mode 100644 Master/texmf-dist/doc/fonts/bookhands/sqrcaps-allfont.tex delete mode 100644 Master/texmf-dist/doc/fonts/bookhands/sqrcaps-tryfont.tex create mode 100644 Master/texmf-dist/doc/fonts/bookhands/sqrcaps.pdf create mode 100644 Master/texmf-dist/doc/fonts/bookhands/sqrcaps/allsqrcaps.tex create mode 100644 Master/texmf-dist/doc/fonts/bookhands/tgothic-README delete mode 100644 Master/texmf-dist/doc/fonts/bookhands/tgothic-allfont.tex create mode 100644 Master/texmf-dist/doc/fonts/bookhands/tgothic/allfont.tex create mode 100644 Master/texmf-dist/doc/fonts/bookhands/trysqrcaps.pdf create mode 100644 Master/texmf-dist/doc/fonts/bookhands/trysqrcaps.tex create mode 100644 Master/texmf-dist/doc/fonts/bookhands/uncial-README delete mode 100644 Master/texmf-dist/doc/fonts/bookhands/uncial-allfont.ps.gz delete mode 100644 Master/texmf-dist/doc/fonts/bookhands/uncial-allfont.tex create mode 100644 Master/texmf-dist/doc/fonts/bookhands/uncial/allfont.ps.gz create mode 100644 Master/texmf-dist/doc/fonts/bookhands/uncial/allfont.tex create mode 100644 Master/texmf-dist/fonts/afm/public/bookhands/sqrc10.afm create mode 100644 Master/texmf-dist/fonts/afm/public/bookhands/sqrcb10.afm create mode 100644 Master/texmf-dist/fonts/map/dvips/bookhands/sqrcaps.map delete mode 100644 Master/texmf-dist/fonts/source/public/bookhands/sqrc10.mf delete mode 100644 Master/texmf-dist/fonts/source/public/bookhands/sqrc17.mf delete mode 100644 Master/texmf-dist/fonts/source/public/bookhands/sqrc7.mf delete mode 100644 Master/texmf-dist/fonts/source/public/bookhands/sqrcb10.mf delete mode 100644 Master/texmf-dist/fonts/source/public/bookhands/sqrcb17.mf delete mode 100644 Master/texmf-dist/fonts/source/public/bookhands/sqrcb7.mf delete mode 100644 Master/texmf-dist/fonts/source/public/bookhands/sqrcdig.mf delete mode 100644 Master/texmf-dist/fonts/source/public/bookhands/sqrcl.mf delete mode 100644 Master/texmf-dist/fonts/source/public/bookhands/sqrclig.mf delete mode 100644 Master/texmf-dist/fonts/source/public/bookhands/sqrcpunct.mf delete mode 100644 Master/texmf-dist/fonts/source/public/bookhands/sqrctitle.mf delete mode 100644 Master/texmf-dist/fonts/source/public/bookhands/sqrcu.mf create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/auncl10.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/auncl17.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/auncl7.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/aunclb10.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/aunclb17.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/aunclb7.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/cmin10.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/cmin17.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/cmin7.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/cminb10.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/cminb17.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/cminb7.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/egoth10.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/egoth17.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/egoth7.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/egothb10.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/egothb17.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/egothb7.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/hmin10.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/hmin17.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/hmin7.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/hminb10.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/hminb17.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/hminb7.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/huncl10.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/huncl17.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/huncl7.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/hunclb10.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/hunclb17.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/hunclb7.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/imaj10.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/imaj17.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/imaj7.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/imajb10.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/imajb17.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/imajb7.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/imin10.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/imin17.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/imin7.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/iminb10.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/iminb17.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/iminb7.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/pgoth10.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/pgoth17.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/pgoth7.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/pgothb10.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/pgothb17.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/rtnd10.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/rtnd17.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/rtnd7.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/rtndb10.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/rtndb17.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/rtndb7.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/rust10.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/rust17.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/rust7.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/rustb10.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/rustb17.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/rustb7.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/sqrc10.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/sqrcb10.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/tgoth10.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/tgoth17.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/tgoth7.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/tgothb10.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/tgothb17.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/uncl10.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/uncl17.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/uncl7.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/unclb10.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/unclb17.tfm create mode 100644 Master/texmf-dist/fonts/tfm/public/bookhands/unclb7.tfm create mode 100644 Master/texmf-dist/fonts/type1/public/bookhands/sqrc10.pfb create mode 100644 Master/texmf-dist/fonts/type1/public/bookhands/sqrcb10.pfb create mode 100644 Master/texmf-dist/source/fonts/bookhands/auncial.dtx create mode 100644 Master/texmf-dist/source/fonts/bookhands/auncial.ins create mode 100644 Master/texmf-dist/source/fonts/bookhands/carolmin.dtx create mode 100644 Master/texmf-dist/source/fonts/bookhands/carolmin.ins create mode 100644 Master/texmf-dist/source/fonts/bookhands/egothic.dtx create mode 100644 Master/texmf-dist/source/fonts/bookhands/egothic.ins create mode 100644 Master/texmf-dist/source/fonts/bookhands/humanist.dtx create mode 100644 Master/texmf-dist/source/fonts/bookhands/humanist.ins create mode 100644 Master/texmf-dist/source/fonts/bookhands/huncial.dtx create mode 100644 Master/texmf-dist/source/fonts/bookhands/huncial.ins create mode 100644 Master/texmf-dist/source/fonts/bookhands/inslrmaj.dtx create mode 100644 Master/texmf-dist/source/fonts/bookhands/inslrmaj.ins create mode 100644 Master/texmf-dist/source/fonts/bookhands/inslrmin.dtx create mode 100644 Master/texmf-dist/source/fonts/bookhands/inslrmin.ins create mode 100644 Master/texmf-dist/source/fonts/bookhands/pgothic.dtx create mode 100644 Master/texmf-dist/source/fonts/bookhands/pgothic.ins create mode 100644 Master/texmf-dist/source/fonts/bookhands/rotunda.dtx create mode 100644 Master/texmf-dist/source/fonts/bookhands/rotunda.ins create mode 100644 Master/texmf-dist/source/fonts/bookhands/rustic.dtx create mode 100644 Master/texmf-dist/source/fonts/bookhands/rustic.ins create mode 100644 Master/texmf-dist/source/fonts/bookhands/sqrcaps.dtx create mode 100644 Master/texmf-dist/source/fonts/bookhands/sqrcaps.ins create mode 100644 Master/texmf-dist/source/fonts/bookhands/tgothic.dtx create mode 100644 Master/texmf-dist/source/fonts/bookhands/tgothic.ins create mode 100644 Master/texmf-dist/source/fonts/bookhands/uncial.dtx create mode 100644 Master/texmf-dist/source/fonts/bookhands/uncial.ins delete mode 100644 Master/texmf-dist/source/latex/bookhands/auncial/auncial.dtx delete mode 100644 Master/texmf-dist/source/latex/bookhands/auncial/auncial.ins delete mode 100644 Master/texmf-dist/source/latex/bookhands/carolmin/carolmin.dtx delete mode 100644 Master/texmf-dist/source/latex/bookhands/carolmin/carolmin.ins delete mode 100644 Master/texmf-dist/source/latex/bookhands/egothic/egothic.dtx delete mode 100644 Master/texmf-dist/source/latex/bookhands/egothic/egothic.ins delete mode 100644 Master/texmf-dist/source/latex/bookhands/humanist/humanist.dtx delete mode 100644 Master/texmf-dist/source/latex/bookhands/humanist/humanist.ins delete mode 100644 Master/texmf-dist/source/latex/bookhands/huncial/huncial.dtx delete mode 100644 Master/texmf-dist/source/latex/bookhands/huncial/huncial.ins delete mode 100644 Master/texmf-dist/source/latex/bookhands/inslrmaj/inslrmaj.dtx delete mode 100644 Master/texmf-dist/source/latex/bookhands/inslrmaj/inslrmaj.ins delete mode 100644 Master/texmf-dist/source/latex/bookhands/inslrmin/inslrmin.dtx delete mode 100644 Master/texmf-dist/source/latex/bookhands/inslrmin/inslrmin.ins delete mode 100644 Master/texmf-dist/source/latex/bookhands/pgothic/pgothic.dtx delete mode 100644 Master/texmf-dist/source/latex/bookhands/pgothic/pgothic.ins delete mode 100644 Master/texmf-dist/source/latex/bookhands/rotunda/rotunda.dtx delete mode 100644 Master/texmf-dist/source/latex/bookhands/rotunda/rotunda.ins delete mode 100644 Master/texmf-dist/source/latex/bookhands/rustic/rustic.dtx delete mode 100644 Master/texmf-dist/source/latex/bookhands/rustic/rustic.ins delete mode 100644 Master/texmf-dist/source/latex/bookhands/sqrcaps/sqrcaps.dtx delete mode 100644 Master/texmf-dist/source/latex/bookhands/sqrcaps/sqrcaps.ins delete mode 100644 Master/texmf-dist/source/latex/bookhands/tgothic/tgothic.dtx delete mode 100644 Master/texmf-dist/source/latex/bookhands/tgothic/tgothic.ins delete mode 100644 Master/texmf-dist/source/latex/bookhands/uncial/uncial.dtx delete mode 100644 Master/texmf-dist/source/latex/bookhands/uncial/uncial.ins (limited to 'Master') diff --git a/Master/texmf-dist/doc/fonts/bookhands/README.auncial b/Master/texmf-dist/doc/fonts/bookhands/README.auncial deleted file mode 100644 index 213fead20ed..00000000000 --- a/Master/texmf-dist/doc/fonts/bookhands/README.auncial +++ /dev/null @@ -1,71 +0,0 @@ - The auncial and allauncl packages provide Meatfont fonts based on the -Artificial Uncial manuscript book-hand used between the 6th & 10th century AD. -The font consists of minuscules and digits, with some appropriate -period punctuation marks. Both normal and bold versions are provided. -This is one in a series of manuscript fonts. - - Access to the docmfp package is desireable but not essential. - - The distribution consists of the following files: -README (this file) -auncial.ins -auncial.dtx -tryfont.tex -allfont.tex - - The distribution is provided under the terms of the LaTeX -Project Public License (LPPL). - -To install the package: -======================= - -o run: latex uncial.ins, which will generate: - auncl*.mf files - *.fd files - auncial.sty - allauncl.sty -o Move the generated files to locations where LaTeX will find them. - For example: the auncl*.mf files to .../texmf/fonts/source/public/auncial - the *.fd and *.sty files to /texmf/tex/latex/local/auncial - - On a teTeX distribution you might also have to add lines like the - following to texmf/fontname/special.map: - auncl7.mf public auncial - auncl10.mf public auncial - auncl17.mf public auncial - aunclb7.mf public auncial - aunclb10.mf public auncial - aunclb17.mf public auncial - On a teTeX distribution remember to run texhash after moving the files. - - (I use a teTeX distribution and found that if I didn't add to the special.map - file, then the generated tfm and pk files were put in directories corresponding - to some vendor's font.) - - Other LaTeX distributions might require procedures similar to those for teTeX. - -To typeset the documentation: -============================= - -o run: latex auncial.dtx -o if you want an index then run: makeindex -s gind.ist auncial -o run: latex auncial.dtx -o Print auncial.dvi for a hardcopy of the package manual - - Note that the docmfp package is normally required for LaTeXing auncial.dtx. -The package is available from CTAN in tex-archive/macros/latex/contrib/supported. -If you haven't got this and don't want to get it, then there are instructions -in the first part of the .dtx file about how to edit it to avoid the use of docmfp. -(docmfp is an extension of the doc package for describing METAFONT, or other -non-LaTeX, code.) - - -To check out your installation: -=============================== - -o run: latex tryfont for a testpage of the Artificial Uncial fonts -o run: latex allfont for a document typeset with the Artificial Uncial fonts - -1999/05/22 -Peter Wilson -peter.r.wilson@boeing.com diff --git a/Master/texmf-dist/doc/fonts/bookhands/README.carolmin b/Master/texmf-dist/doc/fonts/bookhands/README.carolmin deleted file mode 100644 index cd8b73bb767..00000000000 --- a/Master/texmf-dist/doc/fonts/bookhands/README.carolmin +++ /dev/null @@ -1,71 +0,0 @@ - The carolmin and allcmin packages provide Metafont fonts based on the -Carolingan Miniscules manuscript book-hand used between the 8th & 12th century AD. -The font consists of minuscules and digits, with some appropriate -period punctuation marks. Both normal and bold versions are provided. -This is one in a series of manuscript fonts. - - Access to the docmfp package is desireable but not essential. - - The distribution consists of the following files: -README (this file) -carolmin.ins -carolmin.dtx -tryfont.tex -allfont.tex - - The distribution is provided under the terms of the LaTeX -Project Public License (LPPL). - -To install the package: -======================= - -o run: latex carolmin.ins, which will generate: - cmin*.mf files - *.fd files - carolmin.sty - allcmin.sty -o Move the generated files to locations where LaTeX will find them. - For example: the cmin*.mf files to .../texmf/fonts/source/public/carolmin - the *.fd and *.sty files to /texmf/tex/latex/local/carolmin - - On a teTeX distribution you might also have to add lines like the - following to texmf/fontname/special.map: - cmin7.mf public carolmin - cmin10.mf public carolmin - cmin17.mf public carolmin - cminb7.mf public carolmin - cminb10.mf public carolmin - cminb17.mf public carolmin - On a teTeX distribution remember to run texhash after moving the files. - - (I use a teTeX distribution and found that if I didn't add to the special.map - file, then the generated tfm and pk files were put in directories corresponding - to some vendor's font.) - - Other LaTeX distributions might require procedures similar to those for teTeX. - -To typeset the documentation: -============================= - -o run: latex carolmin.dtx -o if you want an index then run: makeindex -s gind.ist carolmin -o run: latex carolmin.dtx -o Print carolmin.dvi for a hardcopy of the package manual - - Note that the docmfp package is normally required for LaTeXing carolmin.dtx. -The package is available from CTAN in tex-archive/macros/latex/contrib/supported. -If you haven't got this and don't want to get it, then there are instructions -in the first part of the .dtx file about how to edit it to avoid the use of docmfp. -(docmfp is an extension of the doc package for describing METAFONT, or other -non-LaTeX, code.) - - -To check out your installation: -=============================== - -o run: latex tryfont for a testpage of the fonts -o run: latex allfont for a document typeset with the fonts - -2002/12/30 -Peter Wilson -peter.r.wilson@boeing.com diff --git a/Master/texmf-dist/doc/fonts/bookhands/README.egothic b/Master/texmf-dist/doc/fonts/bookhands/README.egothic deleted file mode 100644 index 462eae9eb1a..00000000000 --- a/Master/texmf-dist/doc/fonts/bookhands/README.egothic +++ /dev/null @@ -1,71 +0,0 @@ - The egothic and allegoth packages provide Metafont fonts based on the -Early Gothic manuscript book-hand used between the 11th & 12th century AD. -The font consists of minuscules and digits, with some appropriate -period punctuation marks. Both normal and bold versions are provided. -This is one in a series of manuscript fonts. - - Access to the docmfp package is desireable but not essential. - - The distribution consists of the following files: -README (this file) -egothic.ins -egothic.dtx -tryfont.tex -allfont.tex - - The distribution is provided under the terms of the LaTeX -Project Public License (LPPL). - -To install the package: -======================= - -o run: latex egothic.ins, which will generate: - egoth*.mf files - *.fd files - egothic.sty - allegoth.sty -o Move the generated files to locations where LaTeX will find them. - For example: the egoth*.mf files to .../texmf/fonts/source/public/egothic - the *.fd and *.sty files to /texmf/tex/latex/local/egothic - - On a teTeX distribution you might also have to add lines like the - following to texmf/fontname/special.map: - egoth7.mf public egothic - egoth10.mf public egothic - egoth17.mf public egothic - egothb7.mf public egothic - egothb10.mf public egothic - egothb17.mf public egothic - On a teTeX distribution remember to run texhash after moving the files. - - (I use a teTeX distribution and found that if I didn't add to the special.map - file, then the generated tfm and pk files were put in directories corresponding - to some vendor's font.) - - Other LaTeX distributions might require procedures similar to those for teTeX. - -To typeset the documentation: -============================= - -o run: latex egothic.dtx -o if you want an index then run: makeindex -s gind.ist egothic -o run: latex egothic.dtx -o Print egothic.dvi for a hardcopy of the package manual - - Note that the docmfp package is normally required for LaTeXing egothic.dtx. -The package is available from CTAN in tex-archive/macros/latex/contrib/supported. -If you haven't got this and don't want to get it, then there are instructions -in the first part of the .dtx file about how to edit it to avoid the use of docmfp. -(docmfp is an extension of the doc package for describing METAFONT, or other -non-LaTeX, code.) - - -To check out your installation: -=============================== - -o run: latex tryfont for a testpage of the fonts -o run: latex allfont for a document typeset with the fonts - -2002/12/30 -Peter Wilson -peter.r.wilson@boeing.com diff --git a/Master/texmf-dist/doc/fonts/bookhands/README.humanist b/Master/texmf-dist/doc/fonts/bookhands/README.humanist deleted file mode 100644 index 60b76ab3b1e..00000000000 --- a/Master/texmf-dist/doc/fonts/bookhands/README.humanist +++ /dev/null @@ -1,105 +0,0 @@ - The humanist and allhmin packages provide Metafont fonts based on the -Humanist manuscript book-hand used from the 14th century AD onwards. -The font consists of uppercase and lowercase letters, digits, -and with some appropriate period punctuation marks. Both normal and bold -versions are provided. -This is one in a series of manuscript fonts. - - Access to the docmfp package is desireable but not essential. - -Changes in version 1.1 (2003/06/20) ----------------------- -o Added `ae' and `AE' conjunctions - -Changes in version 1.0 (2002/12/30) ----------------------- -o First public release - - --------------------------------------------------------------------- - Author: Peter Wilson (CUA) now at peter.r.wilson@boeing.com - (or pandgwilson@earthlink.net) - Copyright 2002, 2003 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, humanist.dtx, humanist.ins, - tryfont.tex, and allfont.tex and the derived files humanist.sty, - allhmin.sty, ot1hmin.fd, t1hmin.fd, hmin7.mf, hmin10.mf, hmin17.mf, - hminb7.mf, hminb10.mf, hminb17.mf, hmindig.mf, hminl.mf, hminlig.mf, - hminpunct.mf, hmintitle.mf and hminu.mf. --------------------------------------------------------------------- - - The distribution consists of the following files: -README (this file) -humanist.ins -humanist.dtx -tryfont.tex -allfont.tex - - -To install the package: -======================= - -o run: latex humanist.ins, which will generate: - hmin*.mf files - *.fd files - humanist.sty - allhmin.sty -o Move the generated files to locations where LaTeX will find them. - For example: the hmin*.mf files to .../texmf/fonts/source/public/humanist - the *.fd and *.sty files to /texmf/tex/latex/local/humanist - - On a teTeX distribution you might also have to add lines like the - following to texmf/fontname/special.map: - hmin7.mf public humanist - hmin10.mf public humanist - hmin17.mf public humanist - hminb7.mf public humanist - hminb10.mf public humanist - hminb17.mf public humanist - On a teTeX distribution remember to run texhash after moving the files. - - (I use a teTeX distribution and found that if I didn't add to the special.map - file, then the generated tfm and pk files were put in directories corresponding - to some vendor's font.) - - Other LaTeX distributions might require procedures similar to those for teTeX. - -o If you are reinstalling the font, you should first delete any existing - generated tfm and pk files for the font, then follow the above procedure. - -To typeset the documentation: -============================= - -o run: latex humanist.dtx -o if you want an index then run: makeindex -s gind.ist humanist -o run: latex humanist.dtx -o Print humanist.dvi for a hardcopy of the package manual - - Note that the docmfp package is normally required for LaTeXing humanist.dtx. -The package is available from CTAN in tex-archive/macros/latex/contrib/supported. -If you haven't got this and don't want to get it, then there are instructions -in the first part of the .dtx file about how to edit it to avoid the use of docmfp. -(docmfp is an extension of the doc package for describing METAFONT, or other -non-LaTeX, code.) - - -To check out your installation: -=============================== - -o run: latex tryfont for a testpage of the fonts -o run: latex allfont for a document typeset with the fonts - -2003/06/20 -Peter Wilson -peter.r.wilson@boeing.com diff --git a/Master/texmf-dist/doc/fonts/bookhands/README.huncial b/Master/texmf-dist/doc/fonts/bookhands/README.huncial deleted file mode 100644 index 3ffded4339d..00000000000 --- a/Master/texmf-dist/doc/fonts/bookhands/README.huncial +++ /dev/null @@ -1,71 +0,0 @@ - The huncial and allhuncl packages provide Metafont fonts based on the -Half Uncial manuscript book-hand used between the 3rd & 9th century AD. -The font consists of minuscules and digits, with some appropriate -period punctuation marks. Both normal and bold versions are provided. -This is one in a series of manuscript fonts. - - Access to the docmfp package is desireable but not essential. - - The distribution consists of the following files: -README (this file) -huncial.ins -huncial.dtx -tryfont.tex -allfont.tex - - The distribution is provided under the terms of the LaTeX -Project Public License (LPPL). - -To install the package: -======================= - -o run: latex uncial.ins, which will generate: - huncl*.mf files - *.fd files - huncial.sty - allhuncl.sty -o Move the generated files to locations where LaTeX will find them. - For example: the huncl*.mf files to .../texmf/fonts/source/public/huncial - the *.fd and *.sty files to /texmf/tex/latex/local/huncial - - On a teTeX distribution you might also have to add lines like the - following to texmf/fontname/special.map: - huncl7.mf public huncial - huncl10.mf public huncial - huncl17.mf public huncial - hunclb7.mf public huncial - hunclb10.mf public huncial - hunclb17.mf public huncial - On a teTeX distribution remember to run texhash after moving the files. - - (I use a teTeX distribution and found that if I didn't add to the special.map - file, then the generated tfm and pk files were put in directories corresponding - to some vendor's font.) - - Other LaTeX distributions might require procedures similar to those for teTeX. - -To typeset the documentation: -============================= - -o run: latex huncial.dtx -o if you want an index then run: makeindex -s gind.ist huncial -o run: latex huncial.dtx -o Print huncial.dvi for a hardcopy of the package manual - - Note that the docmfp package is normally required for LaTeXing huncial.dtx. -The package is available from CTAN in tex-archive/macros/latex/contrib/supported. -If you haven't got this and don't want to get it, then there are instructions -in the first part of the .dtx file about how to edit it to avoid the use of docmfp. -(docmfp is an extension of the doc package for describing METAFONT, or other -non-LaTeX, code.) - - -To check out your installation: -=============================== - -o run: latex tryfont for a testpage of the Half Uncial fonts -o run: latex allfont for a document typeset with the Half Uncial fonts - -1999/05/22 -Peter Wilson -peter.r.wilson@boeing.com diff --git a/Master/texmf-dist/doc/fonts/bookhands/README.inslrmaj b/Master/texmf-dist/doc/fonts/bookhands/README.inslrmaj deleted file mode 100644 index 25a33265e2e..00000000000 --- a/Master/texmf-dist/doc/fonts/bookhands/README.inslrmaj +++ /dev/null @@ -1,71 +0,0 @@ - The inslrmaj and allimaj packages provide Metafont fonts based on the -Insular Majuscule manuscript book-hand used between the 6th & 9th century AD. -The font consists of majuscules and digits, with some appropriate -period punctuation marks. Both normal and bold versions are provided. -This is one in a series of manuscript fonts. - - Access to the docmfp package is desireable but not essential. - - The distribution consists of the following files: -README (this file) -inslrmaj.ins -inslrmaj.dtx -tryfont.tex -allfont.tex - - The distribution is provided under the terms of the LaTeX -Project Public License (LPPL). - -To install the package: -======================= - -o run: latex inslrmaj.ins, which will generate: - imaj*.mf files - *.fd files - inslrmaj.sty - allimaj.sty -o Move the generated files to locations where LaTeX will find them. - For example: the imaj*.mf files to .../texmf/fonts/source/public/inslrmaj - the *.fd and *.sty files to /texmf/tex/latex/local/inslrmaj - - On a teTeX distribution you might also have to add lines like the - following to texmf/fontname/special.map: - imaj7.mf public inslrmaj - imaj10.mf public inslrmaj - imaj17.mf public inslrmaj - imajb7.mf public inslrmaj - imajb10.mf public inslrmaj - imajb17.mf public inslrmaj - On a teTeX distribution remember to run texhash after moving the files. - - (I use a teTeX distribution and found that if I didn't add to the special.map - file, then the generated tfm and pk files were put in directories corresponding - to some vendor's font.) - - Other LaTeX distributions might require procedures similar to those for teTeX. - -To typeset the documentation: -============================= - -o run: latex inslrmaj.dtx -o if you want an index then run: makeindex -s gind.ist inslrmaj -o run: latex inslrmaj.dtx -o Print inslrmaj.dvi for a hardcopy of the package manual - - Note that the docmfp package is normally required for LaTeXing inslrmaj.dtx. -The package is available from CTAN in tex-archive/macros/latex/contrib/supported. -If you haven't got this and don't want to get it, then there are instructions -in the first part of the .dtx file about how to edit it to avoid the use of docmfp. -(docmfp is an extension of the doc package for describing METAFONT, or other -non-LaTeX, code.) - - -To check out your installation: -=============================== - -o run: latex tryfont for a testpage of the fonts -o run: latex allfont for a document typeset with the fonts - -2000/09/16 -Peter Wilson -peter.r.wilson@boeing.com diff --git a/Master/texmf-dist/doc/fonts/bookhands/README.inslrmin b/Master/texmf-dist/doc/fonts/bookhands/README.inslrmin deleted file mode 100644 index 970138fe412..00000000000 --- a/Master/texmf-dist/doc/fonts/bookhands/README.inslrmin +++ /dev/null @@ -1,71 +0,0 @@ - The inslrmin and allimin packages provide Metafont fonts based on the -Insular Miniscules manuscript book-hand used from the 6th century onwards. -The font consists of minuscules and digits, with some appropriate -period punctuation marks. Both normal and bold versions are provided. -This is one in a series of manuscript fonts. - - Access to the docmfp package is desireable but not essential. - - The distribution consists of the following files: -README (this file) -inslrmin.ins -inslrmin.dtx -tryfont.tex -allfont.tex - - The distribution is provided under the terms of the LaTeX -Project Public License (LPPL). - -To install the package: -======================= - -o run: latex inslrmin.ins, which will generate: - imin*.mf files - *.fd files - inslrmin.sty - allimin.sty -o Move the generated files to locations where LaTeX will find them. - For example: the imin*.mf files to .../texmf/fonts/source/public/inslrmin - the *.fd and *.sty files to /texmf/tex/latex/local/inslrmin - - On a teTeX distribution you might also have to add lines like the - following to texmf/fontname/special.map: - imin7.mf public inslrmin - imin10.mf public inslrmin - imin17.mf public inslrmin - iminb7.mf public inslrmin - iminb10.mf public inslrmin - iminb17.mf public inslrmin - On a teTeX distribution remember to run texhash after moving the files. - - (I use a teTeX distribution and found that if I didn't add to the special.map - file, then the generated tfm and pk files were put in directories corresponding - to some vendor's font.) - - Other LaTeX distributions might require procedures similar to those for teTeX. - -To typeset the documentation: -============================= - -o run: latex inslrmin.dtx -o if you want an index then run: makeindex -s gind.ist inslrmin -o run: latex inslrmin.dtx -o Print inslrmin.dvi for a hardcopy of the package manual - - Note that the docmfp package is normally required for LaTeXing inslrmin.dtx. -The package is available from CTAN in tex-archive/macros/latex/contrib/supported. -If you haven't got this and don't want to get it, then there are instructions -in the first part of the .dtx file about how to edit it to avoid the use of docmfp. -(docmfp is an extension of the doc package for describing METAFONT, or other -non-LaTeX, code.) - - -To check out your installation: -=============================== - -o run: latex tryfont for a testpage of the fonts -o run: latex allfont for a document typeset with the fonts - -2002/12/30 -Peter Wilson -peter.r.wilson@boeing.com diff --git a/Master/texmf-dist/doc/fonts/bookhands/README.pgothic b/Master/texmf-dist/doc/fonts/bookhands/README.pgothic deleted file mode 100644 index af3783a98cc..00000000000 --- a/Master/texmf-dist/doc/fonts/bookhands/README.pgothic +++ /dev/null @@ -1,75 +0,0 @@ -Prescius Gothic. The pgoth fonts TBD - - - The pgothic and allpgoth packages provide Metafont fonts based on the -Gothic Textura Prescius vel sine pedibus manuscript book-hand used -from the 13th century AD. The font consists of majuscules, minuscules -and digits, with some appropriate period punctuation marks. -Both normal and bold versions are provided. -This is one in a series of manuscript fonts. - - Access to the docmfp package is desireable but not essential. - - The distribution consists of the following files: -README (this file) -pgothic.ins -pgothic.dtx -tryfont.tex -allfont.tex - - The distribution is provided under the terms of the LaTeX -Project Public License (LPPL). - -To install the package: -======================= - -o run: latex pgothic.ins, which will generate: - pgoth*.mf files - *.fd files - pgothic.sty - allpgoth.sty -o Move the generated files to locations where LaTeX will find them. - For example: the pgoth*.mf files to .../texmf/fonts/source/public/pgothic - the *.fd and *.sty files to /texmf/tex/latex/local/pgothic - - On a teTeX distribution you might also have to add lines like the - following to texmf/fontname/special.map: - pgoth7.mf public pgothic - pgoth10.mf public pgothic - pgoth17.mf public pgothic - pgothb7.mf public pgothic - pgothb10.mf public pgothic - pgothb17.mf public pgothic - On a teTeX distribution remember to run texhash after moving the files. - - (I use a teTeX distribution and found that if I didn't add to the special.map - file, then the generated tfm and pk files were put in directories corresponding - to some vendor's font.) - - Other LaTeX distributions might require procedures similar to those for teTeX. - -To typeset the documentation: -============================= - -o run: latex pgothic.dtx -o if you want an index then run: makeindex -s gind.ist pgothic -o run: latex pgothic.dtx -o Print pgothic.dvi for a hardcopy of the package manual - - Note that the docmfp package is normally required for LaTeXing pgothic.dtx. -The package is available from CTAN in tex-archive/macros/latex/contrib/supported. -If you haven't got this and don't want to get it, then there are instructions -in the first part of the .dtx file about how to edit it to avoid the use of docmfp. -(docmfp is an extension of the doc package for describing METAFONT, or other -non-LaTeX, code.) - - -To check out your installation: -=============================== - -o run: latex tryfont for a testpage of the fonts -o run: latex allfont for a document typeset with the fonts - -2002/12/30 -Peter Wilson -peter.r.wilson@boeing.com diff --git a/Master/texmf-dist/doc/fonts/bookhands/README.rotunda b/Master/texmf-dist/doc/fonts/bookhands/README.rotunda deleted file mode 100644 index 223869b990c..00000000000 --- a/Master/texmf-dist/doc/fonts/bookhands/README.rotunda +++ /dev/null @@ -1,71 +0,0 @@ - The rotunda and allrtnd packages provide Metafont fonts based on the -Rotunda manuscript book-hand used between the 13th & 15th century AD. -The font consists of lower- and uppercase letters, and digits, with some appropriate -period punctuation marks. Both normal and bold versions are provided. -This is one in a series of manuscript fonts. - - Access to the docmfp package is desireable but not essential. - - The distribution consists of the following files: -README (this file) -rotunda.ins -rotunda.dtx -tryfont.tex -allfont.tex - - The distribution is provided under the terms of the LaTeX -Project Public License (LPPL). - -To install the package: -======================= - -o run: latex rotunda.ins, which will generate: - rtnd*.mf files - *.fd files - rotunda.sty - allrtnd.sty -o Move the generated files to locations where LaTeX will find them. - For example: the rtnd*.mf files to .../texmf/fonts/source/public/rotunda - the *.fd and *.sty files to /texmf/tex/latex/local/rotunda - - On a teTeX distribution you might also have to add lines like the - following to texmf/fontname/special.map: - rtnd7.mf public rotunda - rtnd10.mf public rotunda - rtnd17.mf public rotunda - rtndb7.mf public rotunda - rtndb10.mf public rotunda - rtndb17.mf public rotunda - On a teTeX distribution remember to run texhash after moving the files. - - (I use a teTeX distribution and found that if I didn't add to the special.map - file, then the generated tfm and pk files were put in directories corresponding - to some vendor's font.) - - Other LaTeX distributions might require procedures similar to those for teTeX. - -To typeset the documentation: -============================= - -o run: latex rotunda.dtx -o if you want an index then run: makeindex -s gind.ist rotunda -o run: latex rotunda.dtx -o Print rotunda.dvi for a hardcopy of the package manual - - Note that the docmfp package is normally required for LaTeXing rotunda.dtx. -The package is available from CTAN in tex-archive/macros/latex/contrib/supported. -If you haven't got this and don't want to get it, then there are instructions -in the first part of the .dtx file about how to edit it to avoid the use of docmfp. -(docmfp is an extension of the doc package for describing METAFONT, or other -non-LaTeX, code.) - - -To check out your installation: -=============================== - -o run: latex tryfont for a testpage of the fonts -o run: latex allfont for a document typeset with the fonts - -2002/12/30 -Peter Wilson -peter.r.wilson@boeing.com diff --git a/Master/texmf-dist/doc/fonts/bookhands/README.rustic b/Master/texmf-dist/doc/fonts/bookhands/README.rustic deleted file mode 100644 index 9f9bcf0aaea..00000000000 --- a/Master/texmf-dist/doc/fonts/bookhands/README.rustic +++ /dev/null @@ -1,73 +0,0 @@ - The rustic and allrust packages provide fonts based on the -Roman Rustic manuscript book-hand used between the 1st and 6th -century AD. The font consists of majuscules only, with some -appropriate period punctuation marks. Both normal and bold versions -are provided. This is one in a series of manuscript fonts. - - Access to the docmfp package is desireable but not essential. - - The distribution consists of the following files: -README (this file) -rustic.ins -rustic.dtx -tryfont.tex -allfont.tex - - The distribution is provided under the terms of the LaTeX -Project Public License (LPPL). - -To install the package: -======================= - -o run: latex rustic.ins, which will generate: - rust*.mf files - *.fd files - rustic.sty - allrust.sty -o Move the generated files to locations where LaTeX will find them. - For example: the rust*.mf files to .../texmf/fonts/source/public/rustic - the *.fd and .sty files to /texmf/tex/latex/local/rustic - - On a teTeX distribution you might also have to add lines like the - following to texmf/fontname/special.map: - rust7.mf public rustic - rust10.mf public rustic - rust17.mf public rustic - rustb7.mf public rustic - rustb10.mf public rustic - rustb17.mf public rustic - On a teTeX distribution remember to run texhash after moving the files. - - (I use a teTeX distribution and found that if I didn't add to the special.map - file, then the generated tfm and pk files were put in directories corresponding - to another set of fonts according to the font naming scheme for vendors' - fonts.) - - Other LaTeX distributions might require procedures similar to those for teTeX. - -To typeset the documentation: -============================= - -o run: latex rustic.dtx -o if you want an index then run: makeindex -s gind.ist rustic -o run: latex rustic.dtx -o Print rustic.dvi for a hardcopy of the package manual - - Note that the docmfp package is normally required for LaTeXing rustic.dtx. -The package is available from CTAN in tex-archive/macros/latex/contrib/supported. -If you haven't got this and don't want to get it, then there are instructions -in the first part of the .dtx file about how to edit it to avoid the use of docmfp. -(docmfp is an extension of the doc package for describing METAFONT, or other -non-LaTeX, code.) - - -To check out your installation: -=============================== - -o run: latex tryfont for samples of the Roman Rustic font -o run: latex allfont for a sample document typeset with the Roman Rustic font - - -1999/05/01 -Peter Wilson -peter.r.wilson@boeing.com diff --git a/Master/texmf-dist/doc/fonts/bookhands/README.sqrcaps b/Master/texmf-dist/doc/fonts/bookhands/README.sqrcaps deleted file mode 100644 index a72bafd5fae..00000000000 --- a/Master/texmf-dist/doc/fonts/bookhands/README.sqrcaps +++ /dev/null @@ -1,71 +0,0 @@ - The sqrcaps and allsqrc packages provide Metafont fonts based on the -Square Capitals manuscript book-hand used from the 1st century AD. -The font consists of capital letters and digits, with some appropriate -period punctuation marks. Both normal and bold versions are provided. -This is one in a series of manuscript fonts. - - Access to the docmfp package is desireable but not essential. - - The distribution consists of the following files: -README (this file) -sqrcaps.ins -sqrcaps.dtx -tryfont.tex -allfont.tex - - The distribution is provided under the terms of the LaTeX -Project Public License (LPPL). - -To install the package: -======================= - -o run: latex sqrcaps.ins, which will generate: - sqrc*.mf files - *.fd files - sqrcaps.sty - allsqrc.sty -o Move the generated files to locations where LaTeX will find them. - For example: the sqrc*.mf files to .../texmf/fonts/source/public/sqrcaps - the *.fd and *.sty files to /texmf/tex/latex/local/sqrcaps - - On a teTeX distribution you might also have to add lines like the - following to texmf/fontname/special.map: - sqrc7.mf public sqrcaps - sqrc10.mf public sqrcaps - sqrc17.mf public sqrcaps - sqrcb7.mf public sqrcaps - sqrcb10.mf public sqrcaps - sqrcb17.mf public sqrcaps - On a teTeX distribution remember to run texhash after moving the files. - - (I use a teTeX distribution and found that if I didn't add to the special.map - file, then the generated tfm and pk files were put in directories corresponding - to some vendor's font.) - - Other LaTeX distributions might require procedures similar to those for teTeX. - -To typeset the documentation: -============================= - -o run: latex sqrcaps.dtx -o if you want an index then run: makeindex -s gind.ist sqrcaps -o run: latex sqrcaps.dtx -o Print sqrcaps.dvi for a hardcopy of the package manual - - Note that the docmfp package is normally required for LaTeXing sqrcaps.dtx. -The package is available from CTAN in tex-archive/macros/latex/contrib/supported. -If you haven't got this and don't want to get it, then there are instructions -in the first part of the .dtx file about how to edit it to avoid the use of docmfp. -(docmfp is an extension of the doc package for describing METAFONT, or other -non-LaTeX, code.) - - -To check out your installation: -=============================== - -o run: latex tryfont for a testpage of the fonts -o run: latex allfont for a document typeset with the fonts - -2002/12/30 -Peter Wilson -peter.r.wilson@boeing.com diff --git a/Master/texmf-dist/doc/fonts/bookhands/README.tgothic b/Master/texmf-dist/doc/fonts/bookhands/README.tgothic deleted file mode 100644 index bf69c3b7fb6..00000000000 --- a/Master/texmf-dist/doc/fonts/bookhands/README.tgothic +++ /dev/null @@ -1,71 +0,0 @@ - The tgothic and alltgoth packages provide Metafont fonts based on the -Gothic Textura Quadrata manuscript book-hand used between the 13th & 15th century AD. -The font consists of minuscules and digits, with some appropriate -period punctuation marks. Both normal and bold versions are provided. -This is one in a series of manuscript fonts. - - Access to the docmfp package is desireable but not essential. - - The distribution consists of the following files: -README (this file) -tgothic.ins -tgothic.dtx -tryfont.tex -allfont.tex - - The distribution is provided under the terms of the LaTeX -Project Public License (LPPL). - -To install the package: -======================= - -o run: latex tgothic.ins, which will generate: - tgoth*.mf files - *.fd files - tgothic.sty - alltgoth.sty -o Move the generated files to locations where LaTeX will find them. - For example: the tgoth*.mf files to .../texmf/fonts/source/public/tgothic - the *.fd and *.sty files to /texmf/tex/latex/local/tgothic - - On a teTeX distribution you might also have to add lines like the - following to texmf/fontname/special.map: - tgoth7.mf public tgothic - tgoth10.mf public tgothic - tgoth17.mf public tgothic - tgothb7.mf public tgothic - tgothb10.mf public tgothic - tgothb17.mf public tgothic - On a teTeX distribution remember to run texhash after moving the files. - - (I use a teTeX distribution and found that if I didn't add to the special.map - file, then the generated tfm and pk files were put in directories corresponding - to some vendor's font.) - - Other LaTeX distributions might require procedures similar to those for teTeX. - -To typeset the documentation: -============================= - -o run: latex tgothic.dtx -o if you want an index then run: makeindex -s gind.ist tgothic -o run: latex tgothic.dtx -o Print tgothic.dvi for a hardcopy of the package manual - - Note that the docmfp package is normally required for LaTeXing tgothic.dtx. -The package is available from CTAN in tex-archive/macros/latex/contrib/supported. -If you haven't got this and don't want to get it, then there are instructions -in the first part of the .dtx file about how to edit it to avoid the use of docmfp. -(docmfp is an extension of the doc package for describing METAFONT, or other -non-LaTeX, code.) - - -To check out your installation: -=============================== - -o run: latex tryfont for a testpage of the fonts -o run: latex allfont for a document typeset with the fonts - -2002/12/30 -Peter Wilson -peter.r.wilson@boeing.com diff --git a/Master/texmf-dist/doc/fonts/bookhands/README.uncial b/Master/texmf-dist/doc/fonts/bookhands/README.uncial deleted file mode 100644 index 15c416b6f57..00000000000 --- a/Master/texmf-dist/doc/fonts/bookhands/README.uncial +++ /dev/null @@ -1,71 +0,0 @@ - The uncial and alluncl packages provide Meatfont fonts based on -the Uncial manuscript book-hand used between the 3rd and 6th century AD. -The font consists of minuscules and digits, with some appropriate -period punctuation marks. Both normal and bold versions are provided. -This is one in a series of manuscript fonts. - - Access to the docmfp package is desireable but not essential. - - The distribution consists of the following files: -README (this file) -uncial.ins -uncial.dtx -tryfont.tex -allfont.tex - - The distribution is provided under the terms of the LaTeX -Project Public License (LPPL). - -To install the package: -======================= - -o run: latex uncial.ins, which will generate: - uncl*.mf files - *.fd files - uncial.sty - alluncl.sty -o Move the generated files to locations where LaTeX will find them. - For example: the uncl*.mf files to .../texmf/fonts/source/public/uncial - the *.fd and *.sty files to /texmf/tex/latex/local/uncial - - On a teTeX distribution you might also have to add lines like the - following to texmf/fontname/special.map: - uncl7.mf public uncial - uncl10.mf public uncial - uncl17.mf public uncial - unclb7.mf public uncial - unclb10.mf public uncial - unclb17.mf public uncial - On a teTeX distribution remember to run texhash after moving the files. - - (I use a teTeX distribution and found that if I didn't add to the special.map - file, then the generated tfm and pk files were put in directories corresponding - to the URW New Century Schoolbook font.) - - Other LaTeX distributions might require procedures similar to those for teTeX. - -To typeset the documentation: -============================= - -o run: latex uncial.dtx -o if you want an index then run: makeindex -s gind.ist uncial -o run: latex uncial.dtx -o Print uncial.dvi for a hardcopy of the package manual - - Note that the docmfp package is normally required for LaTeXing uncial.dtx. -The package is available from CTAN in tex-archive/macros/latex/contrib/supported. -If you haven't got this and don't want to get it, then there are instructions -in the first part of the .dtx file about how to edit it to avoid the use of docmfp. -(docmfp is an extension of the doc package for describing METAFONT, or other -non-LaTeX, code.) - - -To check out your installation: -=============================== - -o run: latex tryfont for a testpage of the Uncial fonts -o run: latex allfont for a document typeset with the Uncial fonts - -1999/05/15 -Peter Wilson -peter.r.wilson@boeing.com diff --git a/Master/texmf-dist/doc/fonts/bookhands/allsqrcaps.pdf b/Master/texmf-dist/doc/fonts/bookhands/allsqrcaps.pdf new file mode 100644 index 00000000000..f1de077cb3e Binary files /dev/null and b/Master/texmf-dist/doc/fonts/bookhands/allsqrcaps.pdf differ diff --git a/Master/texmf-dist/doc/fonts/bookhands/auncial-README b/Master/texmf-dist/doc/fonts/bookhands/auncial-README new file mode 100644 index 00000000000..213fead20ed --- /dev/null +++ b/Master/texmf-dist/doc/fonts/bookhands/auncial-README @@ -0,0 +1,71 @@ + The auncial and allauncl packages provide Meatfont fonts based on the +Artificial Uncial manuscript book-hand used between the 6th & 10th century AD. +The font consists of minuscules and digits, with some appropriate +period punctuation marks. Both normal and bold versions are provided. +This is one in a series of manuscript fonts. + + Access to the docmfp package is desireable but not essential. + + The distribution consists of the following files: +README (this file) +auncial.ins +auncial.dtx +tryfont.tex +allfont.tex + + The distribution is provided under the terms of the LaTeX +Project Public License (LPPL). + +To install the package: +======================= + +o run: latex uncial.ins, which will generate: + auncl*.mf files + *.fd files + auncial.sty + allauncl.sty +o Move the generated files to locations where LaTeX will find them. + For example: the auncl*.mf files to .../texmf/fonts/source/public/auncial + the *.fd and *.sty files to /texmf/tex/latex/local/auncial + + On a teTeX distribution you might also have to add lines like the + following to texmf/fontname/special.map: + auncl7.mf public auncial + auncl10.mf public auncial + auncl17.mf public auncial + aunclb7.mf public auncial + aunclb10.mf public auncial + aunclb17.mf public auncial + On a teTeX distribution remember to run texhash after moving the files. + + (I use a teTeX distribution and found that if I didn't add to the special.map + file, then the generated tfm and pk files were put in directories corresponding + to some vendor's font.) + + Other LaTeX distributions might require procedures similar to those for teTeX. + +To typeset the documentation: +============================= + +o run: latex auncial.dtx +o if you want an index then run: makeindex -s gind.ist auncial +o run: latex auncial.dtx +o Print auncial.dvi for a hardcopy of the package manual + + Note that the docmfp package is normally required for LaTeXing auncial.dtx. +The package is available from CTAN in tex-archive/macros/latex/contrib/supported. +If you haven't got this and don't want to get it, then there are instructions +in the first part of the .dtx file about how to edit it to avoid the use of docmfp. +(docmfp is an extension of the doc package for describing METAFONT, or other +non-LaTeX, code.) + + +To check out your installation: +=============================== + +o run: latex tryfont for a testpage of the Artificial Uncial fonts +o run: latex allfont for a document typeset with the Artificial Uncial fonts + +1999/05/22 +Peter Wilson +peter.r.wilson@boeing.com diff --git a/Master/texmf-dist/doc/fonts/bookhands/auncial-allfont.ps.gz b/Master/texmf-dist/doc/fonts/bookhands/auncial-allfont.ps.gz deleted file mode 100644 index 6d04c0fd18d..00000000000 Binary files a/Master/texmf-dist/doc/fonts/bookhands/auncial-allfont.ps.gz and /dev/null differ diff --git a/Master/texmf-dist/doc/fonts/bookhands/auncial-allfont.tex b/Master/texmf-dist/doc/fonts/bookhands/auncial-allfont.tex deleted file mode 100644 index 6c764904d83..00000000000 --- a/Master/texmf-dist/doc/fonts/bookhands/auncial-allfont.tex +++ /dev/null @@ -1,92 +0,0 @@ -% allfont.tex Test Artificial Uncial fonts -\documentclass{article} -\usepackage{allauncl} - -\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 artificial uncial rustic 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 Artificial Uncial 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 adcelebratqve polvs rex gazifer hymnis. - Trans zephyriqve globvm scandvnt tva facta per axem.} - -\title{Try Artificial Uncial Fonts} -\author{} -\date{} -\pagenumbering{roman} -\begin{document} -\maketitle - -\tableofcontents - -\section{First section} - - This provides a short test of the characters in the Artificial Uncial fonts ---- the \verb|auncl| font family. - - - -\begin{center} -The Artificial Uncial Huge normal font. \\ \par -{\Huge \ABC\\ \abc\\ \punct{}\dashes\\ \figs\\ \par } -\end{center} - - -\begin{center} -The Artificial Uncial font in its normal size \\ -{\ABC{} \abc{} \punct{} \dashes{} \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 brown \& lazy dog --- but quick \& red fox?''} -\end{center} - -\section{Second section} - - First some well known English phrases in an abcedarian sentence. - -\Sentence{} - - These are two Latin abecedarian sentences dating from about -\Romannum{790}. - -\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} \ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/bookhands/auncial/allfont.ps.gz b/Master/texmf-dist/doc/fonts/bookhands/auncial/allfont.ps.gz new file mode 100644 index 00000000000..410540337f3 Binary files /dev/null and b/Master/texmf-dist/doc/fonts/bookhands/auncial/allfont.ps.gz differ diff --git a/Master/texmf-dist/doc/fonts/bookhands/auncial/allfont.tex b/Master/texmf-dist/doc/fonts/bookhands/auncial/allfont.tex new file mode 100644 index 00000000000..6c764904d83 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/bookhands/auncial/allfont.tex @@ -0,0 +1,92 @@ +% allfont.tex Test Artificial Uncial fonts +\documentclass{article} +\usepackage{allauncl} + +\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 artificial uncial rustic 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 Artificial Uncial 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 adcelebratqve polvs rex gazifer hymnis. + Trans zephyriqve globvm scandvnt tva facta per axem.} + +\title{Try Artificial Uncial Fonts} +\author{} +\date{} +\pagenumbering{roman} +\begin{document} +\maketitle + +\tableofcontents + +\section{First section} + + This provides a short test of the characters in the Artificial Uncial fonts +--- the \verb|auncl| font family. + + + +\begin{center} +The Artificial Uncial Huge normal font. \\ \par +{\Huge \ABC\\ \abc\\ \punct{}\dashes\\ \figs\\ \par } +\end{center} + + +\begin{center} +The Artificial Uncial font in its normal size \\ +{\ABC{} \abc{} \punct{} \dashes{} \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 brown \& lazy dog --- but quick \& red fox?''} +\end{center} + +\section{Second section} + + First some well known English phrases in an abcedarian sentence. + +\Sentence{} + + These are two Latin abecedarian sentences dating from about +\Romannum{790}. + +\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} \ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/bookhands/carolmin-README b/Master/texmf-dist/doc/fonts/bookhands/carolmin-README new file mode 100644 index 00000000000..cd8b73bb767 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/bookhands/carolmin-README @@ -0,0 +1,71 @@ + The carolmin and allcmin packages provide Metafont fonts based on the +Carolingan Miniscules manuscript book-hand used between the 8th & 12th century AD. +The font consists of minuscules and digits, with some appropriate +period punctuation marks. Both normal and bold versions are provided. +This is one in a series of manuscript fonts. + + Access to the docmfp package is desireable but not essential. + + The distribution consists of the following files: +README (this file) +carolmin.ins +carolmin.dtx +tryfont.tex +allfont.tex + + The distribution is provided under the terms of the LaTeX +Project Public License (LPPL). + +To install the package: +======================= + +o run: latex carolmin.ins, which will generate: + cmin*.mf files + *.fd files + carolmin.sty + allcmin.sty +o Move the generated files to locations where LaTeX will find them. + For example: the cmin*.mf files to .../texmf/fonts/source/public/carolmin + the *.fd and *.sty files to /texmf/tex/latex/local/carolmin + + On a teTeX distribution you might also have to add lines like the + following to texmf/fontname/special.map: + cmin7.mf public carolmin + cmin10.mf public carolmin + cmin17.mf public carolmin + cminb7.mf public carolmin + cminb10.mf public carolmin + cminb17.mf public carolmin + On a teTeX distribution remember to run texhash after moving the files. + + (I use a teTeX distribution and found that if I didn't add to the special.map + file, then the generated tfm and pk files were put in directories corresponding + to some vendor's font.) + + Other LaTeX distributions might require procedures similar to those for teTeX. + +To typeset the documentation: +============================= + +o run: latex carolmin.dtx +o if you want an index then run: makeindex -s gind.ist carolmin +o run: latex carolmin.dtx +o Print carolmin.dvi for a hardcopy of the package manual + + Note that the docmfp package is normally required for LaTeXing carolmin.dtx. +The package is available from CTAN in tex-archive/macros/latex/contrib/supported. +If you haven't got this and don't want to get it, then there are instructions +in the first part of the .dtx file about how to edit it to avoid the use of docmfp. +(docmfp is an extension of the doc package for describing METAFONT, or other +non-LaTeX, code.) + + +To check out your installation: +=============================== + +o run: latex tryfont for a testpage of the fonts +o run: latex allfont for a document typeset with the fonts + +2002/12/30 +Peter Wilson +peter.r.wilson@boeing.com diff --git a/Master/texmf-dist/doc/fonts/bookhands/carolmin-allfont.tex b/Master/texmf-dist/doc/fonts/bookhands/carolmin-allfont.tex deleted file mode 100644 index 791b5b7eb3f..00000000000 --- a/Master/texmf-dist/doc/fonts/bookhands/carolmin-allfont.tex +++ /dev/null @@ -1,97 +0,0 @@ -% allfont.tex Test Carolingian Minuscule fonts -\documentclass{article} -%\documentclass[12pt]{article} -\usepackage{allcmin} - -\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 carolingian minuscule 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 Carolingian Minuscule 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 Carolingian Minuscule Fonts} -\author{} -\date{} -%%\pagenumbering{roman} -\begin{document} -\maketitle - -\tableofcontents - -\section{The character set} - - This provides a short test of the characters in the Carolingian Minuscule fonts ---- the \verb|cmin| font family. - - - -\begin{center} -The Carolingian Minuscule Huge normal font. \\ \par -{\Huge \ABC\\ \abc\\ \punct{}\dashes\\ \figs\\ \par } -\end{center} - - -\begin{center} -The Carolingian Minuscule 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} \ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/bookhands/carolmin/allfont.tex b/Master/texmf-dist/doc/fonts/bookhands/carolmin/allfont.tex new file mode 100644 index 00000000000..791b5b7eb3f --- /dev/null +++ b/Master/texmf-dist/doc/fonts/bookhands/carolmin/allfont.tex @@ -0,0 +1,97 @@ +% allfont.tex Test Carolingian Minuscule fonts +\documentclass{article} +%\documentclass[12pt]{article} +\usepackage{allcmin} + +\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 carolingian minuscule 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 Carolingian Minuscule 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 Carolingian Minuscule Fonts} +\author{} +\date{} +%%\pagenumbering{roman} +\begin{document} +\maketitle + +\tableofcontents + +\section{The character set} + + This provides a short test of the characters in the Carolingian Minuscule fonts +--- the \verb|cmin| font family. + + + +\begin{center} +The Carolingian Minuscule Huge normal font. \\ \par +{\Huge \ABC\\ \abc\\ \punct{}\dashes\\ \figs\\ \par } +\end{center} + + +\begin{center} +The Carolingian Minuscule 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} \ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/bookhands/egothic-README b/Master/texmf-dist/doc/fonts/bookhands/egothic-README new file mode 100644 index 00000000000..462eae9eb1a --- /dev/null +++ b/Master/texmf-dist/doc/fonts/bookhands/egothic-README @@ -0,0 +1,71 @@ + The egothic and allegoth packages provide Metafont fonts based on the +Early Gothic manuscript book-hand used between the 11th & 12th century AD. +The font consists of minuscules and digits, with some appropriate +period punctuation marks. Both normal and bold versions are provided. +This is one in a series of manuscript fonts. + + Access to the docmfp package is desireable but not essential. + + The distribution consists of the following files: +README (this file) +egothic.ins +egothic.dtx +tryfont.tex +allfont.tex + + The distribution is provided under the terms of the LaTeX +Project Public License (LPPL). + +To install the package: +======================= + +o run: latex egothic.ins, which will generate: + egoth*.mf files + *.fd files + egothic.sty + allegoth.sty +o Move the generated files to locations where LaTeX will find them. + For example: the egoth*.mf files to .../texmf/fonts/source/public/egothic + the *.fd and *.sty files to /texmf/tex/latex/local/egothic + + On a teTeX distribution you might also have to add lines like the + following to texmf/fontname/special.map: + egoth7.mf public egothic + egoth10.mf public egothic + egoth17.mf public egothic + egothb7.mf public egothic + egothb10.mf public egothic + egothb17.mf public egothic + On a teTeX distribution remember to run texhash after moving the files. + + (I use a teTeX distribution and found that if I didn't add to the special.map + file, then the generated tfm and pk files were put in directories corresponding + to some vendor's font.) + + Other LaTeX distributions might require procedures similar to those for teTeX. + +To typeset the documentation: +============================= + +o run: latex egothic.dtx +o if you want an index then run: makeindex -s gind.ist egothic +o run: latex egothic.dtx +o Print egothic.dvi for a hardcopy of the package manual + + Note that the docmfp package is normally required for LaTeXing egothic.dtx. +The package is available from CTAN in tex-archive/macros/latex/contrib/supported. +If you haven't got this and don't want to get it, then there are instructions +in the first part of the .dtx file about how to edit it to avoid the use of docmfp. +(docmfp is an extension of the doc package for describing METAFONT, or other +non-LaTeX, code.) + + +To check out your installation: +=============================== + +o run: latex tryfont for a testpage of the fonts +o run: latex allfont for a document typeset with the fonts + +2002/12/30 +Peter Wilson +peter.r.wilson@boeing.com diff --git a/Master/texmf-dist/doc/fonts/bookhands/egothic-allfont.tex b/Master/texmf-dist/doc/fonts/bookhands/egothic-allfont.tex deleted file mode 100644 index 861f0a68867..00000000000 --- a/Master/texmf-dist/doc/fonts/bookhands/egothic-allfont.tex +++ /dev/null @@ -1,97 +0,0 @@ -% allfont.tex Test Early Gothic fonts -\documentclass{article} -%\documentclass[12pt]{article} -\usepackage{allegoth} - -\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 early gothic 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 Early Gothic 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 Early Gothic Fonts} -\author{} -\date{} -%%\pagenumbering{roman} -\begin{document} -\maketitle - -\tableofcontents - -\section{The character set} - - This provides a short test of the characters in the Early Gothic fonts ---- the \verb|egoth| font family. - - - -\begin{center} -The Early Gothic Huge normal font. \\ \par -{\Huge \ABC\\ \abc\\ \punct{}\dashes\\ \figs\\ \par } -\end{center} - - -\begin{center} -The Early Gothic 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} \ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/bookhands/egothic/allfont.tex b/Master/texmf-dist/doc/fonts/bookhands/egothic/allfont.tex new file mode 100644 index 00000000000..861f0a68867 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/bookhands/egothic/allfont.tex @@ -0,0 +1,97 @@ +% allfont.tex Test Early Gothic fonts +\documentclass{article} +%\documentclass[12pt]{article} +\usepackage{allegoth} + +\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 early gothic 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 Early Gothic 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 Early Gothic Fonts} +\author{} +\date{} +%%\pagenumbering{roman} +\begin{document} +\maketitle + +\tableofcontents + +\section{The character set} + + This provides a short test of the characters in the Early Gothic fonts +--- the \verb|egoth| font family. + + + +\begin{center} +The Early Gothic Huge normal font. \\ \par +{\Huge \ABC\\ \abc\\ \punct{}\dashes\\ \figs\\ \par } +\end{center} + + +\begin{center} +The Early Gothic 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} \ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/bookhands/humanist-README b/Master/texmf-dist/doc/fonts/bookhands/humanist-README new file mode 100644 index 00000000000..60b76ab3b1e --- /dev/null +++ b/Master/texmf-dist/doc/fonts/bookhands/humanist-README @@ -0,0 +1,105 @@ + The humanist and allhmin packages provide Metafont fonts based on the +Humanist manuscript book-hand used from the 14th century AD onwards. +The font consists of uppercase and lowercase letters, digits, +and with some appropriate period punctuation marks. Both normal and bold +versions are provided. +This is one in a series of manuscript fonts. + + Access to the docmfp package is desireable but not essential. + +Changes in version 1.1 (2003/06/20) +---------------------- +o Added `ae' and `AE' conjunctions + +Changes in version 1.0 (2002/12/30) +---------------------- +o First public release + + +-------------------------------------------------------------------- + Author: Peter Wilson (CUA) now at peter.r.wilson@boeing.com + (or pandgwilson@earthlink.net) + Copyright 2002, 2003 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, humanist.dtx, humanist.ins, + tryfont.tex, and allfont.tex and the derived files humanist.sty, + allhmin.sty, ot1hmin.fd, t1hmin.fd, hmin7.mf, hmin10.mf, hmin17.mf, + hminb7.mf, hminb10.mf, hminb17.mf, hmindig.mf, hminl.mf, hminlig.mf, + hminpunct.mf, hmintitle.mf and hminu.mf. +-------------------------------------------------------------------- + + The distribution consists of the following files: +README (this file) +humanist.ins +humanist.dtx +tryfont.tex +allfont.tex + + +To install the package: +======================= + +o run: latex humanist.ins, which will generate: + hmin*.mf files + *.fd files + humanist.sty + allhmin.sty +o Move the generated files to locations where LaTeX will find them. + For example: the hmin*.mf files to .../texmf/fonts/source/public/humanist + the *.fd and *.sty files to /texmf/tex/latex/local/humanist + + On a teTeX distribution you might also have to add lines like the + following to texmf/fontname/special.map: + hmin7.mf public humanist + hmin10.mf public humanist + hmin17.mf public humanist + hminb7.mf public humanist + hminb10.mf public humanist + hminb17.mf public humanist + On a teTeX distribution remember to run texhash after moving the files. + + (I use a teTeX distribution and found that if I didn't add to the special.map + file, then the generated tfm and pk files were put in directories corresponding + to some vendor's font.) + + Other LaTeX distributions might require procedures similar to those for teTeX. + +o If you are reinstalling the font, you should first delete any existing + generated tfm and pk files for the font, then follow the above procedure. + +To typeset the documentation: +============================= + +o run: latex humanist.dtx +o if you want an index then run: makeindex -s gind.ist humanist +o run: latex humanist.dtx +o Print humanist.dvi for a hardcopy of the package manual + + Note that the docmfp package is normally required for LaTeXing humanist.dtx. +The package is available from CTAN in tex-archive/macros/latex/contrib/supported. +If you haven't got this and don't want to get it, then there are instructions +in the first part of the .dtx file about how to edit it to avoid the use of docmfp. +(docmfp is an extension of the doc package for describing METAFONT, or other +non-LaTeX, code.) + + +To check out your installation: +=============================== + +o run: latex tryfont for a testpage of the fonts +o run: latex allfont for a document typeset with the fonts + +2003/06/20 +Peter Wilson +peter.r.wilson@boeing.com diff --git a/Master/texmf-dist/doc/fonts/bookhands/humanist-allfont.tex b/Master/texmf-dist/doc/fonts/bookhands/humanist-allfont.tex deleted file mode 100644 index f0e02460b57..00000000000 --- a/Master/texmf-dist/doc/fonts/bookhands/humanist-allfont.tex +++ /dev/null @@ -1,97 +0,0 @@ -% allfont.tex Test Humanist fonts -\documentclass{article} -%\documentclass[12pt]{article} -\usepackage{allhmin} - -\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 humanist 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 Humanist 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 Humanist Fonts} -\author{} -\date{} -%%\pagenumbering{roman} -\begin{document} -\maketitle - -\tableofcontents - -\section{The character set} - - This provides a short test of the characters in the Humanist fonts ---- the \verb|hmin| font family. - - - -\begin{center} -The Humanist Huge normal font. \\ \par -{\Huge \ABC\\ \abc\\ \punct{}\dashes\\ \figs\\ \par } -\end{center} - - -\begin{center} -The Humanist 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} \ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/bookhands/humanist-tryfont.tex b/Master/texmf-dist/doc/fonts/bookhands/humanist-tryfont.tex index 8a3d7201e8c..154d29049f1 100644 --- a/Master/texmf-dist/doc/fonts/bookhands/humanist-tryfont.tex +++ b/Master/texmf-dist/doc/fonts/bookhands/humanist-tryfont.tex @@ -1,4 +1,22 @@ % tryfont.tex Test Humanist Minuscule fonts +% Author: Peter Wilson (CUA) now at peter.r.wilson@boeing.com +% (or pandgwilson@earthlink.net) +% Copyright 2002, 2003 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. +% + %\documentclass[12pt]{article} \documentclass{article} \usepackage{humanist} @@ -10,7 +28,7 @@ \newcommand{\punct}{.,;:!?`' () []} \newcommand{\figs}{0123456789} \newcommand{\dashes}{- -- ---} -\newcommand{\ligs}{\&{} ct st} +\newcommand{\ligs}{\&{} \ae{} \AE{} ct st} \newcommand{\sentence}{% this is an example of the humanist minuscule font. now is the time for all good men, and women, to come to the aid of the party while the quick brown fox diff --git a/Master/texmf-dist/doc/fonts/bookhands/humanist/allfont.tex b/Master/texmf-dist/doc/fonts/bookhands/humanist/allfont.tex new file mode 100644 index 00000000000..fbcd4b99fe6 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/bookhands/humanist/allfont.tex @@ -0,0 +1,115 @@ +% allfont.tex Test Humanist fonts +% Author: Peter Wilson (CUA) now at peter.r.wilson@boeing.com +% (or pandgwilson@earthlink.net) +% Copyright 2002, 2003 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. +% + +\documentclass{article} +%\documentclass[12pt]{article} +\usepackage{allhmin} + +\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 humanist 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 Humanist 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 Humanist Fonts} +\author{} +\date{} +%%\pagenumbering{roman} +\begin{document} +\maketitle + +\tableofcontents + +\section{The character set} + + This provides a short test of the characters in the Humanist fonts +--- the \verb|hmin| font family. + + + +\begin{center} +The Humanist Huge normal font. \\ \par +{\Huge \ABC\\ \abc\\ \punct{}\dashes\\ \figs\\ \par } +\end{center} + + +\begin{center} +The Humanist 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?'' \ae{} \AE{} ct st } +\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} \ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/bookhands/huncial-README b/Master/texmf-dist/doc/fonts/bookhands/huncial-README new file mode 100644 index 00000000000..3ffded4339d --- /dev/null +++ b/Master/texmf-dist/doc/fonts/bookhands/huncial-README @@ -0,0 +1,71 @@ + The huncial and allhuncl packages provide Metafont fonts based on the +Half Uncial manuscript book-hand used between the 3rd & 9th century AD. +The font consists of minuscules and digits, with some appropriate +period punctuation marks. Both normal and bold versions are provided. +This is one in a series of manuscript fonts. + + Access to the docmfp package is desireable but not essential. + + The distribution consists of the following files: +README (this file) +huncial.ins +huncial.dtx +tryfont.tex +allfont.tex + + The distribution is provided under the terms of the LaTeX +Project Public License (LPPL). + +To install the package: +======================= + +o run: latex uncial.ins, which will generate: + huncl*.mf files + *.fd files + huncial.sty + allhuncl.sty +o Move the generated files to locations where LaTeX will find them. + For example: the huncl*.mf files to .../texmf/fonts/source/public/huncial + the *.fd and *.sty files to /texmf/tex/latex/local/huncial + + On a teTeX distribution you might also have to add lines like the + following to texmf/fontname/special.map: + huncl7.mf public huncial + huncl10.mf public huncial + huncl17.mf public huncial + hunclb7.mf public huncial + hunclb10.mf public huncial + hunclb17.mf public huncial + On a teTeX distribution remember to run texhash after moving the files. + + (I use a teTeX distribution and found that if I didn't add to the special.map + file, then the generated tfm and pk files were put in directories corresponding + to some vendor's font.) + + Other LaTeX distributions might require procedures similar to those for teTeX. + +To typeset the documentation: +============================= + +o run: latex huncial.dtx +o if you want an index then run: makeindex -s gind.ist huncial +o run: latex huncial.dtx +o Print huncial.dvi for a hardcopy of the package manual + + Note that the docmfp package is normally required for LaTeXing huncial.dtx. +The package is available from CTAN in tex-archive/macros/latex/contrib/supported. +If you haven't got this and don't want to get it, then there are instructions +in the first part of the .dtx file about how to edit it to avoid the use of docmfp. +(docmfp is an extension of the doc package for describing METAFONT, or other +non-LaTeX, code.) + + +To check out your installation: +=============================== + +o run: latex tryfont for a testpage of the Half Uncial fonts +o run: latex allfont for a document typeset with the Half Uncial fonts + +1999/05/22 +Peter Wilson +peter.r.wilson@boeing.com diff --git a/Master/texmf-dist/doc/fonts/bookhands/huncial-allfont.ps.gz b/Master/texmf-dist/doc/fonts/bookhands/huncial-allfont.ps.gz deleted file mode 100644 index 90c6d008999..00000000000 Binary files a/Master/texmf-dist/doc/fonts/bookhands/huncial-allfont.ps.gz and /dev/null differ diff --git a/Master/texmf-dist/doc/fonts/bookhands/huncial-allfont.tex b/Master/texmf-dist/doc/fonts/bookhands/huncial-allfont.tex deleted file mode 100644 index 14c5bb4d50e..00000000000 --- a/Master/texmf-dist/doc/fonts/bookhands/huncial-allfont.tex +++ /dev/null @@ -1,92 +0,0 @@ -% allfont.tex Test Half Uncial fonts -\documentclass{article} -\usepackage{allhuncl} - -\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 half uncial rustic 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 Half Uncial 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 adcelebratqve polvs rex gazifer hymnis. - Trans zephyriqve globvm scandvnt tva facta per axem.} - -\title{Try Half Uncial Fonts} -\author{} -\date{} -\pagenumbering{roman} -\begin{document} -\maketitle - -\tableofcontents - -\section{First section} - - This provides a short test of the characters in the Half Uncial fonts ---- the \verb|huncl| font family. - - - -\begin{center} -The Half Uncial Huge normal font. \\ \par -{\Huge \ABC\\ \abc\\ \punct{}\dashes\\ \figs\\ \par } -\end{center} - - -\begin{center} -The Half Uncial font in its normal size \\ -{\ABC{} \abc{} \punct{} \dashes{} \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 \\ -{``first active brown dog --- but quick \& red fox?''} -\end{center} - -\section{Second section} - - First some well known English phrases in an abcedarian sentence. - -\Sentence{} - - These are two Latin abecedarian sentences dating from about -\Romannum{790}. - -\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} \ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/bookhands/huncial/allfont.ps.gz b/Master/texmf-dist/doc/fonts/bookhands/huncial/allfont.ps.gz new file mode 100644 index 00000000000..4c73eccb2d3 Binary files /dev/null and b/Master/texmf-dist/doc/fonts/bookhands/huncial/allfont.ps.gz differ diff --git a/Master/texmf-dist/doc/fonts/bookhands/huncial/allfont.tex b/Master/texmf-dist/doc/fonts/bookhands/huncial/allfont.tex new file mode 100644 index 00000000000..14c5bb4d50e --- /dev/null +++ b/Master/texmf-dist/doc/fonts/bookhands/huncial/allfont.tex @@ -0,0 +1,92 @@ +% allfont.tex Test Half Uncial fonts +\documentclass{article} +\usepackage{allhuncl} + +\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 half uncial rustic 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 Half Uncial 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 adcelebratqve polvs rex gazifer hymnis. + Trans zephyriqve globvm scandvnt tva facta per axem.} + +\title{Try Half Uncial Fonts} +\author{} +\date{} +\pagenumbering{roman} +\begin{document} +\maketitle + +\tableofcontents + +\section{First section} + + This provides a short test of the characters in the Half Uncial fonts +--- the \verb|huncl| font family. + + + +\begin{center} +The Half Uncial Huge normal font. \\ \par +{\Huge \ABC\\ \abc\\ \punct{}\dashes\\ \figs\\ \par } +\end{center} + + +\begin{center} +The Half Uncial font in its normal size \\ +{\ABC{} \abc{} \punct{} \dashes{} \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 \\ +{``first active brown dog --- but quick \& red fox?''} +\end{center} + +\section{Second section} + + First some well known English phrases in an abcedarian sentence. + +\Sentence{} + + These are two Latin abecedarian sentences dating from about +\Romannum{790}. + +\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} \ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/bookhands/inslrmaj-README b/Master/texmf-dist/doc/fonts/bookhands/inslrmaj-README new file mode 100644 index 00000000000..25a33265e2e --- /dev/null +++ b/Master/texmf-dist/doc/fonts/bookhands/inslrmaj-README @@ -0,0 +1,71 @@ + The inslrmaj and allimaj packages provide Metafont fonts based on the +Insular Majuscule manuscript book-hand used between the 6th & 9th century AD. +The font consists of majuscules and digits, with some appropriate +period punctuation marks. Both normal and bold versions are provided. +This is one in a series of manuscript fonts. + + Access to the docmfp package is desireable but not essential. + + The distribution consists of the following files: +README (this file) +inslrmaj.ins +inslrmaj.dtx +tryfont.tex +allfont.tex + + The distribution is provided under the terms of the LaTeX +Project Public License (LPPL). + +To install the package: +======================= + +o run: latex inslrmaj.ins, which will generate: + imaj*.mf files + *.fd files + inslrmaj.sty + allimaj.sty +o Move the generated files to locations where LaTeX will find them. + For example: the imaj*.mf files to .../texmf/fonts/source/public/inslrmaj + the *.fd and *.sty files to /texmf/tex/latex/local/inslrmaj + + On a teTeX distribution you might also have to add lines like the + following to texmf/fontname/special.map: + imaj7.mf public inslrmaj + imaj10.mf public inslrmaj + imaj17.mf public inslrmaj + imajb7.mf public inslrmaj + imajb10.mf public inslrmaj + imajb17.mf public inslrmaj + On a teTeX distribution remember to run texhash after moving the files. + + (I use a teTeX distribution and found that if I didn't add to the special.map + file, then the generated tfm and pk files were put in directories corresponding + to some vendor's font.) + + Other LaTeX distributions might require procedures similar to those for teTeX. + +To typeset the documentation: +============================= + +o run: latex inslrmaj.dtx +o if you want an index then run: makeindex -s gind.ist inslrmaj +o run: latex inslrmaj.dtx +o Print inslrmaj.dvi for a hardcopy of the package manual + + Note that the docmfp package is normally required for LaTeXing inslrmaj.dtx. +The package is available from CTAN in tex-archive/macros/latex/contrib/supported. +If you haven't got this and don't want to get it, then there are instructions +in the first part of the .dtx file about how to edit it to avoid the use of docmfp. +(docmfp is an extension of the doc package for describing METAFONT, or other +non-LaTeX, code.) + + +To check out your installation: +=============================== + +o run: latex tryfont for a testpage of the fonts +o run: latex allfont for a document typeset with the fonts + +2000/09/16 +Peter Wilson +peter.r.wilson@boeing.com diff --git a/Master/texmf-dist/doc/fonts/bookhands/inslrmaj-allfont.ps.gz b/Master/texmf-dist/doc/fonts/bookhands/inslrmaj-allfont.ps.gz deleted file mode 100644 index 5a07488fc3e..00000000000 Binary files a/Master/texmf-dist/doc/fonts/bookhands/inslrmaj-allfont.ps.gz and /dev/null differ diff --git a/Master/texmf-dist/doc/fonts/bookhands/inslrmaj-allfont.tex b/Master/texmf-dist/doc/fonts/bookhands/inslrmaj-allfont.tex deleted file mode 100644 index 6d3ec1018e9..00000000000 --- a/Master/texmf-dist/doc/fonts/bookhands/inslrmaj-allfont.tex +++ /dev/null @@ -1,93 +0,0 @@ -% allfont.tex Test Insular Majuscule fonts -\documentclass{article} -\usepackage{allimaj} - -\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 insular majuscule 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 Insular Majuscule 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 adcelebratqve polvs rex gazifer hymnis. - Trans zephyriqve globvm scandvnt tva facta per axem.} - -\title{Try Insular Majuscule Fonts} -\author{} -\date{} -\pagenumbering{roman} -\begin{document} -\maketitle - -\tableofcontents - -\section{First section} - - This provides a short test of the characters in the Insular Majuscule fonts ---- the \verb|imaj| font family. - - - -\begin{center} -The Insular Majuscule Huge normal font. \\ \par -{\Huge \ABC\\ \abc\\ \punct{}\dashes\\ \figs\\ \par } -\end{center} - - -\begin{center} -The Insular Majuscule font in its normal size \\ -{\ABC{} \abc{} \punct{} \dashes{} \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 \\ -{``first active brown dog --- but quick \& red fox?''} -\end{center} - -\section{Second section} - - First some well known English phrases in an abcedarian sentence. - -\Sentence{} - - These are two Latin abecedarian sentences dating from about -\Romannum{790}. - -\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/Master/texmf-dist/doc/fonts/bookhands/inslrmaj/allfont.ps.gz b/Master/texmf-dist/doc/fonts/bookhands/inslrmaj/allfont.ps.gz new file mode 100644 index 00000000000..e5c63019711 Binary files /dev/null and b/Master/texmf-dist/doc/fonts/bookhands/inslrmaj/allfont.ps.gz differ diff --git a/Master/texmf-dist/doc/fonts/bookhands/inslrmaj/allfont.tex b/Master/texmf-dist/doc/fonts/bookhands/inslrmaj/allfont.tex new file mode 100644 index 00000000000..6d3ec1018e9 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/bookhands/inslrmaj/allfont.tex @@ -0,0 +1,93 @@ +% allfont.tex Test Insular Majuscule fonts +\documentclass{article} +\usepackage{allimaj} + +\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 insular majuscule 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 Insular Majuscule 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 adcelebratqve polvs rex gazifer hymnis. + Trans zephyriqve globvm scandvnt tva facta per axem.} + +\title{Try Insular Majuscule Fonts} +\author{} +\date{} +\pagenumbering{roman} +\begin{document} +\maketitle + +\tableofcontents + +\section{First section} + + This provides a short test of the characters in the Insular Majuscule fonts +--- the \verb|imaj| font family. + + + +\begin{center} +The Insular Majuscule Huge normal font. \\ \par +{\Huge \ABC\\ \abc\\ \punct{}\dashes\\ \figs\\ \par } +\end{center} + + +\begin{center} +The Insular Majuscule font in its normal size \\ +{\ABC{} \abc{} \punct{} \dashes{} \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 \\ +{``first active brown dog --- but quick \& red fox?''} +\end{center} + +\section{Second section} + + First some well known English phrases in an abcedarian sentence. + +\Sentence{} + + These are two Latin abecedarian sentences dating from about +\Romannum{790}. + +\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/Master/texmf-dist/doc/fonts/bookhands/inslrmin-README b/Master/texmf-dist/doc/fonts/bookhands/inslrmin-README new file mode 100644 index 00000000000..970138fe412 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/bookhands/inslrmin-README @@ -0,0 +1,71 @@ + The inslrmin and allimin packages provide Metafont fonts based on the +Insular Miniscules manuscript book-hand used from the 6th century onwards. +The font consists of minuscules and digits, with some appropriate +period punctuation marks. Both normal and bold versions are provided. +This is one in a series of manuscript fonts. + + Access to the docmfp package is desireable but not essential. + + The distribution consists of the following files: +README (this file) +inslrmin.ins +inslrmin.dtx +tryfont.tex +allfont.tex + + The distribution is provided under the terms of the LaTeX +Project Public License (LPPL). + +To install the package: +======================= + +o run: latex inslrmin.ins, which will generate: + imin*.mf files + *.fd files + inslrmin.sty + allimin.sty +o Move the generated files to locations where LaTeX will find them. + For example: the imin*.mf files to .../texmf/fonts/source/public/inslrmin + the *.fd and *.sty files to /texmf/tex/latex/local/inslrmin + + On a teTeX distribution you might also have to add lines like the + following to texmf/fontname/special.map: + imin7.mf public inslrmin + imin10.mf public inslrmin + imin17.mf public inslrmin + iminb7.mf public inslrmin + iminb10.mf public inslrmin + iminb17.mf public inslrmin + On a teTeX distribution remember to run texhash after moving the files. + + (I use a teTeX distribution and found that if I didn't add to the special.map + file, then the generated tfm and pk files were put in directories corresponding + to some vendor's font.) + + Other LaTeX distributions might require procedures similar to those for teTeX. + +To typeset the documentation: +============================= + +o run: latex inslrmin.dtx +o if you want an index then run: makeindex -s gind.ist inslrmin +o run: latex inslrmin.dtx +o Print inslrmin.dvi for a hardcopy of the package manual + + Note that the docmfp package is normally required for LaTeXing inslrmin.dtx. +The package is available from CTAN in tex-archive/macros/latex/contrib/supported. +If you haven't got this and don't want to get it, then there are instructions +in the first part of the .dtx file about how to edit it to avoid the use of docmfp. +(docmfp is an extension of the doc package for describing METAFONT, or other +non-LaTeX, code.) + + +To check out your installation: +=============================== + +o run: latex tryfont for a testpage of the fonts +o run: latex allfont for a document typeset with the fonts + +2002/12/30 +Peter Wilson +peter.r.wilson@boeing.com diff --git a/Master/texmf-dist/doc/fonts/bookhands/inslrmin-allfont.tex b/Master/texmf-dist/doc/fonts/bookhands/inslrmin-allfont.tex deleted file mode 100644 index 9e096767e1c..00000000000 --- a/Master/texmf-dist/doc/fonts/bookhands/inslrmin-allfont.tex +++ /dev/null @@ -1,98 +0,0 @@ -% allfont.tex Test Insular Minuscule fonts -\documentclass{article} -%\documentclass[12pt]{article} -\usepackage{allimin} - -\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 insular minuscule 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 Insular Minuscule 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 Insular Minuscule Fonts} -\author{} -\date{} -%%\pagenumbering{roman} -\begin{document} -\maketitle - -\tableofcontents - -\section{The character set} - - This provides a short test of the characters in the Insular Minuscule fonts ---- the \verb|imin| font family. - - - -\begin{center} -The Insular Minuscule Huge normal font. \\ \par -{\Huge \ABC\\ \abc\\ \punct{}\dashes\\ \figs\\ \par } -\end{center} - - -\begin{center} -The Insular Minuscule 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/Master/texmf-dist/doc/fonts/bookhands/inslrmin/allfont.tex b/Master/texmf-dist/doc/fonts/bookhands/inslrmin/allfont.tex new file mode 100644 index 00000000000..9e096767e1c --- /dev/null +++ b/Master/texmf-dist/doc/fonts/bookhands/inslrmin/allfont.tex @@ -0,0 +1,98 @@ +% allfont.tex Test Insular Minuscule fonts +\documentclass{article} +%\documentclass[12pt]{article} +\usepackage{allimin} + +\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 insular minuscule 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 Insular Minuscule 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 Insular Minuscule Fonts} +\author{} +\date{} +%%\pagenumbering{roman} +\begin{document} +\maketitle + +\tableofcontents + +\section{The character set} + + This provides a short test of the characters in the Insular Minuscule fonts +--- the \verb|imin| font family. + + + +\begin{center} +The Insular Minuscule Huge normal font. \\ \par +{\Huge \ABC\\ \abc\\ \punct{}\dashes\\ \figs\\ \par } +\end{center} + + +\begin{center} +The Insular Minuscule 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/Master/texmf-dist/doc/fonts/bookhands/pgothic-README b/Master/texmf-dist/doc/fonts/bookhands/pgothic-README new file mode 100644 index 00000000000..af3783a98cc --- /dev/null +++ b/Master/texmf-dist/doc/fonts/bookhands/pgothic-README @@ -0,0 +1,75 @@ +Prescius Gothic. The pgoth fonts TBD + + + The pgothic and allpgoth packages provide Metafont fonts based on the +Gothic Textura Prescius vel sine pedibus manuscript book-hand used +from the 13th century AD. The font consists of majuscules, minuscules +and digits, with some appropriate period punctuation marks. +Both normal and bold versions are provided. +This is one in a series of manuscript fonts. + + Access to the docmfp package is desireable but not essential. + + The distribution consists of the following files: +README (this file) +pgothic.ins +pgothic.dtx +tryfont.tex +allfont.tex + + The distribution is provided under the terms of the LaTeX +Project Public License (LPPL). + +To install the package: +======================= + +o run: latex pgothic.ins, which will generate: + pgoth*.mf files + *.fd files + pgothic.sty + allpgoth.sty +o Move the generated files to locations where LaTeX will find them. + For example: the pgoth*.mf files to .../texmf/fonts/source/public/pgothic + the *.fd and *.sty files to /texmf/tex/latex/local/pgothic + + On a teTeX distribution you might also have to add lines like the + following to texmf/fontname/special.map: + pgoth7.mf public pgothic + pgoth10.mf public pgothic + pgoth17.mf public pgothic + pgothb7.mf public pgothic + pgothb10.mf public pgothic + pgothb17.mf public pgothic + On a teTeX distribution remember to run texhash after moving the files. + + (I use a teTeX distribution and found that if I didn't add to the special.map + file, then the generated tfm and pk files were put in directories corresponding + to some vendor's font.) + + Other LaTeX distributions might require procedures similar to those for teTeX. + +To typeset the documentation: +============================= + +o run: latex pgothic.dtx +o if you want an index then run: makeindex -s gind.ist pgothic +o run: latex pgothic.dtx +o Print pgothic.dvi for a hardcopy of the package manual + + Note that the docmfp package is normally required for LaTeXing pgothic.dtx. +The package is available from CTAN in tex-archive/macros/latex/contrib/supported. +If you haven't got this and don't want to get it, then there are instructions +in the first part of the .dtx file about how to edit it to avoid the use of docmfp. +(docmfp is an extension of the doc package for describing METAFONT, or other +non-LaTeX, code.) + + +To check out your installation: +=============================== + +o run: latex tryfont for a testpage of the fonts +o run: latex allfont for a document typeset with the fonts + +2002/12/30 +Peter Wilson +peter.r.wilson@boeing.com diff --git a/Master/texmf-dist/doc/fonts/bookhands/pgothic-allfont.tex b/Master/texmf-dist/doc/fonts/bookhands/pgothic-allfont.tex deleted file mode 100644 index ce15182c2cb..00000000000 --- a/Master/texmf-dist/doc/fonts/bookhands/pgothic-allfont.tex +++ /dev/null @@ -1,97 +0,0 @@ -% allfont.tex Test Gothic Prescius fonts -\documentclass{article} -%\documentclass[12pt]{article} -\usepackage{allpgoth} - -\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 gothic textura prescius 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 Gothic Textura Prescius 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 Gothic Textura Prescius Fonts} -\author{} -\date{} -%%\pagenumbering{roman} -\begin{document} -\maketitle - -\tableofcontents - -\section{The character set} - - This provides a short test of the characters in the Gothic Textura Prescius fonts ---- the \verb|pgoth| font family. - - - -\begin{center} -The Gothic Textura Prescius Huge normal font. \\ \par -{\Huge \ABC\\ \abc\\ \punct{}\dashes\\ \figs\\ \par } -\end{center} - - -\begin{center} -The Gothic Textura Prescius 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} \ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/bookhands/pgothic/allfont.tex b/Master/texmf-dist/doc/fonts/bookhands/pgothic/allfont.tex new file mode 100644 index 00000000000..ce15182c2cb --- /dev/null +++ b/Master/texmf-dist/doc/fonts/bookhands/pgothic/allfont.tex @@ -0,0 +1,97 @@ +% allfont.tex Test Gothic Prescius fonts +\documentclass{article} +%\documentclass[12pt]{article} +\usepackage{allpgoth} + +\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 gothic textura prescius 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 Gothic Textura Prescius 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 Gothic Textura Prescius Fonts} +\author{} +\date{} +%%\pagenumbering{roman} +\begin{document} +\maketitle + +\tableofcontents + +\section{The character set} + + This provides a short test of the characters in the Gothic Textura Prescius fonts +--- the \verb|pgoth| font family. + + + +\begin{center} +The Gothic Textura Prescius Huge normal font. \\ \par +{\Huge \ABC\\ \abc\\ \punct{}\dashes\\ \figs\\ \par } +\end{center} + + +\begin{center} +The Gothic Textura Prescius 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} \ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/bookhands/rotunda-README b/Master/texmf-dist/doc/fonts/bookhands/rotunda-README new file mode 100644 index 00000000000..223869b990c --- /dev/null +++ b/Master/texmf-dist/doc/fonts/bookhands/rotunda-README @@ -0,0 +1,71 @@ + The rotunda and allrtnd packages provide Metafont fonts based on the +Rotunda manuscript book-hand used between the 13th & 15th century AD. +The font consists of lower- and uppercase letters, and digits, with some appropriate +period punctuation marks. Both normal and bold versions are provided. +This is one in a series of manuscript fonts. + + Access to the docmfp package is desireable but not essential. + + The distribution consists of the following files: +README (this file) +rotunda.ins +rotunda.dtx +tryfont.tex +allfont.tex + + The distribution is provided under the terms of the LaTeX +Project Public License (LPPL). + +To install the package: +======================= + +o run: latex rotunda.ins, which will generate: + rtnd*.mf files + *.fd files + rotunda.sty + allrtnd.sty +o Move the generated files to locations where LaTeX will find them. + For example: the rtnd*.mf files to .../texmf/fonts/source/public/rotunda + the *.fd and *.sty files to /texmf/tex/latex/local/rotunda + + On a teTeX distribution you might also have to add lines like the + following to texmf/fontname/special.map: + rtnd7.mf public rotunda + rtnd10.mf public rotunda + rtnd17.mf public rotunda + rtndb7.mf public rotunda + rtndb10.mf public rotunda + rtndb17.mf public rotunda + On a teTeX distribution remember to run texhash after moving the files. + + (I use a teTeX distribution and found that if I didn't add to the special.map + file, then the generated tfm and pk files were put in directories corresponding + to some vendor's font.) + + Other LaTeX distributions might require procedures similar to those for teTeX. + +To typeset the documentation: +============================= + +o run: latex rotunda.dtx +o if you want an index then run: makeindex -s gind.ist rotunda +o run: latex rotunda.dtx +o Print rotunda.dvi for a hardcopy of the package manual + + Note that the docmfp package is normally required for LaTeXing rotunda.dtx. +The package is available from CTAN in tex-archive/macros/latex/contrib/supported. +If you haven't got this and don't want to get it, then there are instructions +in the first part of the .dtx file about how to edit it to avoid the use of docmfp. +(docmfp is an extension of the doc package for describing METAFONT, or other +non-LaTeX, code.) + + +To check out your installation: +=============================== + +o run: latex tryfont for a testpage of the fonts +o run: latex allfont for a document typeset with the fonts + +2002/12/30 +Peter Wilson +peter.r.wilson@boeing.com diff --git a/Master/texmf-dist/doc/fonts/bookhands/rotunda-allfont.tex b/Master/texmf-dist/doc/fonts/bookhands/rotunda-allfont.tex deleted file mode 100644 index 8566d3a6335..00000000000 --- a/Master/texmf-dist/doc/fonts/bookhands/rotunda-allfont.tex +++ /dev/null @@ -1,97 +0,0 @@ -% allfont.tex Test Rotunda fonts -\documentclass{article} -%\documentclass[12pt]{article} -\usepackage{allrtnd} - -\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 rotunda 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 Rotunda 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 Rotunda Fonts} -\author{} -\date{} -%%\pagenumbering{roman} -\begin{document} -\maketitle - -\tableofcontents - -\section{The character set} - - This provides a short test of the characters in the Rotunda fonts ---- the \verb|rtnd| font family. - - - -\begin{center} -The Rotunda Huge normal font. \\ \par -{\Huge \ABC\\ \abc\\ \punct{}\dashes\\ \figs\\ \par } -\end{center} - - -\begin{center} -The Rotunda 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} \ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/bookhands/rotunda/allfont.tex b/Master/texmf-dist/doc/fonts/bookhands/rotunda/allfont.tex new file mode 100644 index 00000000000..8566d3a6335 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/bookhands/rotunda/allfont.tex @@ -0,0 +1,97 @@ +% allfont.tex Test Rotunda fonts +\documentclass{article} +%\documentclass[12pt]{article} +\usepackage{allrtnd} + +\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 rotunda 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 Rotunda 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 Rotunda Fonts} +\author{} +\date{} +%%\pagenumbering{roman} +\begin{document} +\maketitle + +\tableofcontents + +\section{The character set} + + This provides a short test of the characters in the Rotunda fonts +--- the \verb|rtnd| font family. + + + +\begin{center} +The Rotunda Huge normal font. \\ \par +{\Huge \ABC\\ \abc\\ \punct{}\dashes\\ \figs\\ \par } +\end{center} + + +\begin{center} +The Rotunda 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} \ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/bookhands/rustic-README b/Master/texmf-dist/doc/fonts/bookhands/rustic-README new file mode 100644 index 00000000000..9f9bcf0aaea --- /dev/null +++ b/Master/texmf-dist/doc/fonts/bookhands/rustic-README @@ -0,0 +1,73 @@ + The rustic and allrust packages provide fonts based on the +Roman Rustic manuscript book-hand used between the 1st and 6th +century AD. The font consists of majuscules only, with some +appropriate period punctuation marks. Both normal and bold versions +are provided. This is one in a series of manuscript fonts. + + Access to the docmfp package is desireable but not essential. + + The distribution consists of the following files: +README (this file) +rustic.ins +rustic.dtx +tryfont.tex +allfont.tex + + The distribution is provided under the terms of the LaTeX +Project Public License (LPPL). + +To install the package: +======================= + +o run: latex rustic.ins, which will generate: + rust*.mf files + *.fd files + rustic.sty + allrust.sty +o Move the generated files to locations where LaTeX will find them. + For example: the rust*.mf files to .../texmf/fonts/source/public/rustic + the *.fd and .sty files to /texmf/tex/latex/local/rustic + + On a teTeX distribution you might also have to add lines like the + following to texmf/fontname/special.map: + rust7.mf public rustic + rust10.mf public rustic + rust17.mf public rustic + rustb7.mf public rustic + rustb10.mf public rustic + rustb17.mf public rustic + On a teTeX distribution remember to run texhash after moving the files. + + (I use a teTeX distribution and found that if I didn't add to the special.map + file, then the generated tfm and pk files were put in directories corresponding + to another set of fonts according to the font naming scheme for vendors' + fonts.) + + Other LaTeX distributions might require procedures similar to those for teTeX. + +To typeset the documentation: +============================= + +o run: latex rustic.dtx +o if you want an index then run: makeindex -s gind.ist rustic +o run: latex rustic.dtx +o Print rustic.dvi for a hardcopy of the package manual + + Note that the docmfp package is normally required for LaTeXing rustic.dtx. +The package is available from CTAN in tex-archive/macros/latex/contrib/supported. +If you haven't got this and don't want to get it, then there are instructions +in the first part of the .dtx file about how to edit it to avoid the use of docmfp. +(docmfp is an extension of the doc package for describing METAFONT, or other +non-LaTeX, code.) + + +To check out your installation: +=============================== + +o run: latex tryfont for samples of the Roman Rustic font +o run: latex allfont for a sample document typeset with the Roman Rustic font + + +1999/05/01 +Peter Wilson +peter.r.wilson@boeing.com diff --git a/Master/texmf-dist/doc/fonts/bookhands/rustic-allfont.ps.gz b/Master/texmf-dist/doc/fonts/bookhands/rustic-allfont.ps.gz deleted file mode 100644 index d8f028d70b0..00000000000 Binary files a/Master/texmf-dist/doc/fonts/bookhands/rustic-allfont.ps.gz and /dev/null differ diff --git a/Master/texmf-dist/doc/fonts/bookhands/rustic-allfont.tex b/Master/texmf-dist/doc/fonts/bookhands/rustic-allfont.tex deleted file mode 100644 index 44953b06bd3..00000000000 --- a/Master/texmf-dist/doc/fonts/bookhands/rustic-allfont.tex +++ /dev/null @@ -1,97 +0,0 @@ -% allfont.tex Test Roman Rustic fonts -\documentclass{article} -%\documentclass[12pt]{article} -\usepackage{allrust} - -%%\renewcommand{\encodingdefault}{T1} - - -\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 roman rustic 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 Roman Rustic 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 adcelebratqve polvs rex gazifer hymnis. - Trans zephyriqve globvm scandvnt tva facta per axem.} - -\title{Try Roman Rustic Fonts} -\author{} -\date{} -\pagenumbering{roman} -\begin{document} -\maketitle - -\tableofcontents - -\section{First section} - - This provides a short test of the characters in the Roman Rustic fonts ---- the \verb|rust| font family. - - - -\begin{center} -The Rustic Huge normal font. \\ \par -{\Huge \ABC\\ \abc\\ \punct{}\dashes\\ \figs\\ \par } -\end{center} - - -\begin{center} -The Rustic 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{Second section} - - First some well known English phrases in an abcedarian sentence. - -\Sentence{} - - These are two Latin abecedarian sentences dating from about -\Romannum{790}. - -\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; you should see a large baselineskip.} - -\end{document} \ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/bookhands/rustic/allfont.ps.gz b/Master/texmf-dist/doc/fonts/bookhands/rustic/allfont.ps.gz new file mode 100644 index 00000000000..fc89cc3e779 Binary files /dev/null and b/Master/texmf-dist/doc/fonts/bookhands/rustic/allfont.ps.gz differ diff --git a/Master/texmf-dist/doc/fonts/bookhands/rustic/allfont.tex b/Master/texmf-dist/doc/fonts/bookhands/rustic/allfont.tex new file mode 100644 index 00000000000..44953b06bd3 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/bookhands/rustic/allfont.tex @@ -0,0 +1,97 @@ +% allfont.tex Test Roman Rustic fonts +\documentclass{article} +%\documentclass[12pt]{article} +\usepackage{allrust} + +%%\renewcommand{\encodingdefault}{T1} + + +\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 roman rustic 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 Roman Rustic 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 adcelebratqve polvs rex gazifer hymnis. + Trans zephyriqve globvm scandvnt tva facta per axem.} + +\title{Try Roman Rustic Fonts} +\author{} +\date{} +\pagenumbering{roman} +\begin{document} +\maketitle + +\tableofcontents + +\section{First section} + + This provides a short test of the characters in the Roman Rustic fonts +--- the \verb|rust| font family. + + + +\begin{center} +The Rustic Huge normal font. \\ \par +{\Huge \ABC\\ \abc\\ \punct{}\dashes\\ \figs\\ \par } +\end{center} + + +\begin{center} +The Rustic 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{Second section} + + First some well known English phrases in an abcedarian sentence. + +\Sentence{} + + These are two Latin abecedarian sentences dating from about +\Romannum{790}. + +\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; you should see a large baselineskip.} + +\end{document} \ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/bookhands/sqrcaps-README b/Master/texmf-dist/doc/fonts/bookhands/sqrcaps-README new file mode 100644 index 00000000000..65ecf40bb96 --- /dev/null +++ b/Master/texmf-dist/doc/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/Master/texmf-dist/doc/fonts/bookhands/sqrcaps-allfont.tex b/Master/texmf-dist/doc/fonts/bookhands/sqrcaps-allfont.tex deleted file mode 100644 index 5a15ff46465..00000000000 --- a/Master/texmf-dist/doc/fonts/bookhands/sqrcaps-allfont.tex +++ /dev/null @@ -1,97 +0,0 @@ -% allfont.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} \ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/bookhands/sqrcaps-tryfont.tex b/Master/texmf-dist/doc/fonts/bookhands/sqrcaps-tryfont.tex deleted file mode 100644 index 443b055f123..00000000000 --- a/Master/texmf-dist/doc/fonts/bookhands/sqrcaps-tryfont.tex +++ /dev/null @@ -1,76 +0,0 @@ -% tryfont.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} \ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/bookhands/sqrcaps.pdf b/Master/texmf-dist/doc/fonts/bookhands/sqrcaps.pdf new file mode 100644 index 00000000000..d27c6da6a1f Binary files /dev/null and b/Master/texmf-dist/doc/fonts/bookhands/sqrcaps.pdf differ diff --git a/Master/texmf-dist/doc/fonts/bookhands/sqrcaps/allsqrcaps.tex b/Master/texmf-dist/doc/fonts/bookhands/sqrcaps/allsqrcaps.tex new file mode 100644 index 00000000000..0b8d324d7ff --- /dev/null +++ b/Master/texmf-dist/doc/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/Master/texmf-dist/doc/fonts/bookhands/tgothic-README b/Master/texmf-dist/doc/fonts/bookhands/tgothic-README new file mode 100644 index 00000000000..bf69c3b7fb6 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/bookhands/tgothic-README @@ -0,0 +1,71 @@ + The tgothic and alltgoth packages provide Metafont fonts based on the +Gothic Textura Quadrata manuscript book-hand used between the 13th & 15th century AD. +The font consists of minuscules and digits, with some appropriate +period punctuation marks. Both normal and bold versions are provided. +This is one in a series of manuscript fonts. + + Access to the docmfp package is desireable but not essential. + + The distribution consists of the following files: +README (this file) +tgothic.ins +tgothic.dtx +tryfont.tex +allfont.tex + + The distribution is provided under the terms of the LaTeX +Project Public License (LPPL). + +To install the package: +======================= + +o run: latex tgothic.ins, which will generate: + tgoth*.mf files + *.fd files + tgothic.sty + alltgoth.sty +o Move the generated files to locations where LaTeX will find them. + For example: the tgoth*.mf files to .../texmf/fonts/source/public/tgothic + the *.fd and *.sty files to /texmf/tex/latex/local/tgothic + + On a teTeX distribution you might also have to add lines like the + following to texmf/fontname/special.map: + tgoth7.mf public tgothic + tgoth10.mf public tgothic + tgoth17.mf public tgothic + tgothb7.mf public tgothic + tgothb10.mf public tgothic + tgothb17.mf public tgothic + On a teTeX distribution remember to run texhash after moving the files. + + (I use a teTeX distribution and found that if I didn't add to the special.map + file, then the generated tfm and pk files were put in directories corresponding + to some vendor's font.) + + Other LaTeX distributions might require procedures similar to those for teTeX. + +To typeset the documentation: +============================= + +o run: latex tgothic.dtx +o if you want an index then run: makeindex -s gind.ist tgothic +o run: latex tgothic.dtx +o Print tgothic.dvi for a hardcopy of the package manual + + Note that the docmfp package is normally required for LaTeXing tgothic.dtx. +The package is available from CTAN in tex-archive/macros/latex/contrib/supported. +If you haven't got this and don't want to get it, then there are instructions +in the first part of the .dtx file about how to edit it to avoid the use of docmfp. +(docmfp is an extension of the doc package for describing METAFONT, or other +non-LaTeX, code.) + + +To check out your installation: +=============================== + +o run: latex tryfont for a testpage of the fonts +o run: latex allfont for a document typeset with the fonts + +2002/12/30 +Peter Wilson +peter.r.wilson@boeing.com diff --git a/Master/texmf-dist/doc/fonts/bookhands/tgothic-allfont.tex b/Master/texmf-dist/doc/fonts/bookhands/tgothic-allfont.tex deleted file mode 100644 index cc473459c02..00000000000 --- a/Master/texmf-dist/doc/fonts/bookhands/tgothic-allfont.tex +++ /dev/null @@ -1,97 +0,0 @@ -% allfont.tex Test Gothic Textura fonts -\documentclass{article} -%\documentclass[12pt]{article} -\usepackage{alltgoth} - -\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 gothic textura quadrata 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 Gothic Textura Quadrata 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 Gothic Textura Quadrata Fonts} -\author{} -\date{} -%%\pagenumbering{roman} -\begin{document} -\maketitle - -\tableofcontents - -\section{The character set} - - This provides a short test of the characters in the Gothic Textura Quadrata fonts ---- the \verb|tgoth| font family. - - - -\begin{center} -The Gothic Textura Quadrata Huge normal font. \\ \par -{\Huge \ABC\\ \abc\\ \punct{}\dashes\\ \figs\\ \par } -\end{center} - - -\begin{center} -The Gothic Textura Quadrata 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} \ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/bookhands/tgothic/allfont.tex b/Master/texmf-dist/doc/fonts/bookhands/tgothic/allfont.tex new file mode 100644 index 00000000000..cc473459c02 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/bookhands/tgothic/allfont.tex @@ -0,0 +1,97 @@ +% allfont.tex Test Gothic Textura fonts +\documentclass{article} +%\documentclass[12pt]{article} +\usepackage{alltgoth} + +\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 gothic textura quadrata 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 Gothic Textura Quadrata 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 Gothic Textura Quadrata Fonts} +\author{} +\date{} +%%\pagenumbering{roman} +\begin{document} +\maketitle + +\tableofcontents + +\section{The character set} + + This provides a short test of the characters in the Gothic Textura Quadrata fonts +--- the \verb|tgoth| font family. + + + +\begin{center} +The Gothic Textura Quadrata Huge normal font. \\ \par +{\Huge \ABC\\ \abc\\ \punct{}\dashes\\ \figs\\ \par } +\end{center} + + +\begin{center} +The Gothic Textura Quadrata 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} \ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/bookhands/trysqrcaps.pdf b/Master/texmf-dist/doc/fonts/bookhands/trysqrcaps.pdf new file mode 100644 index 00000000000..344b2d049fe Binary files /dev/null and b/Master/texmf-dist/doc/fonts/bookhands/trysqrcaps.pdf differ diff --git a/Master/texmf-dist/doc/fonts/bookhands/trysqrcaps.tex b/Master/texmf-dist/doc/fonts/bookhands/trysqrcaps.tex new file mode 100644 index 00000000000..bc3fb17964b --- /dev/null +++ b/Master/texmf-dist/doc/fonts/bookhands/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} diff --git a/Master/texmf-dist/doc/fonts/bookhands/uncial-README b/Master/texmf-dist/doc/fonts/bookhands/uncial-README new file mode 100644 index 00000000000..15c416b6f57 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/bookhands/uncial-README @@ -0,0 +1,71 @@ + The uncial and alluncl packages provide Meatfont fonts based on +the Uncial manuscript book-hand used between the 3rd and 6th century AD. +The font consists of minuscules and digits, with some appropriate +period punctuation marks. Both normal and bold versions are provided. +This is one in a series of manuscript fonts. + + Access to the docmfp package is desireable but not essential. + + The distribution consists of the following files: +README (this file) +uncial.ins +uncial.dtx +tryfont.tex +allfont.tex + + The distribution is provided under the terms of the LaTeX +Project Public License (LPPL). + +To install the package: +======================= + +o run: latex uncial.ins, which will generate: + uncl*.mf files + *.fd files + uncial.sty + alluncl.sty +o Move the generated files to locations where LaTeX will find them. + For example: the uncl*.mf files to .../texmf/fonts/source/public/uncial + the *.fd and *.sty files to /texmf/tex/latex/local/uncial + + On a teTeX distribution you might also have to add lines like the + following to texmf/fontname/special.map: + uncl7.mf public uncial + uncl10.mf public uncial + uncl17.mf public uncial + unclb7.mf public uncial + unclb10.mf public uncial + unclb17.mf public uncial + On a teTeX distribution remember to run texhash after moving the files. + + (I use a teTeX distribution and found that if I didn't add to the special.map + file, then the generated tfm and pk files were put in directories corresponding + to the URW New Century Schoolbook font.) + + Other LaTeX distributions might require procedures similar to those for teTeX. + +To typeset the documentation: +============================= + +o run: latex uncial.dtx +o if you want an index then run: makeindex -s gind.ist uncial +o run: latex uncial.dtx +o Print uncial.dvi for a hardcopy of the package manual + + Note that the docmfp package is normally required for LaTeXing uncial.dtx. +The package is available from CTAN in tex-archive/macros/latex/contrib/supported. +If you haven't got this and don't want to get it, then there are instructions +in the first part of the .dtx file about how to edit it to avoid the use of docmfp. +(docmfp is an extension of the doc package for describing METAFONT, or other +non-LaTeX, code.) + + +To check out your installation: +=============================== + +o run: latex tryfont for a testpage of the Uncial fonts +o run: latex allfont for a document typeset with the Uncial fonts + +1999/05/15 +Peter Wilson +peter.r.wilson@boeing.com diff --git a/Master/texmf-dist/doc/fonts/bookhands/uncial-allfont.ps.gz b/Master/texmf-dist/doc/fonts/bookhands/uncial-allfont.ps.gz deleted file mode 100644 index d08782d4043..00000000000 Binary files a/Master/texmf-dist/doc/fonts/bookhands/uncial-allfont.ps.gz and /dev/null differ diff --git a/Master/texmf-dist/doc/fonts/bookhands/uncial-allfont.tex b/Master/texmf-dist/doc/fonts/bookhands/uncial-allfont.tex deleted file mode 100644 index 0dac080ff79..00000000000 --- a/Master/texmf-dist/doc/fonts/bookhands/uncial-allfont.tex +++ /dev/null @@ -1,94 +0,0 @@ -% allfont.tex Test Uncial fonts -\documentclass{article} -%\documentclass[12pt]{article} -\usepackage{alluncl} - -\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 uncial rustic 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 Uncial 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 adcelebratqve polvs rex gazifer hymnis. - Trans zephyriqve globvm scandvnt tva facta per axem.} - -\title{Try Uncial Fonts} -\author{} -\date{} -\pagenumbering{roman} -\begin{document} -\maketitle - -\tableofcontents - -\section{First section} - - This provides a short test of the characters in the Uncial fonts ---- the \verb|uncl| font family. - - - -\begin{center} -The Uncial Huge normal font. \\ \par -{\Huge \ABC\\ \abc\\ \punct{}\dashes\\ \figs\\ \par } -\end{center} - - -\begin{center} -The Uncial 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{Second section} - - First some well known English phrases in an abcedarian sentence. - -\Sentence{} - - These are two Latin abecedarian sentences dating from about -\Romannum{790}. - -\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; you should see a large baselineskip.} - -\end{document} \ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/bookhands/uncial/allfont.ps.gz b/Master/texmf-dist/doc/fonts/bookhands/uncial/allfont.ps.gz new file mode 100644 index 00000000000..79ca7a1e2ab Binary files /dev/null and b/Master/texmf-dist/doc/fonts/bookhands/uncial/allfont.ps.gz differ diff --git a/Master/texmf-dist/doc/fonts/bookhands/uncial/allfont.tex b/Master/texmf-dist/doc/fonts/bookhands/uncial/allfont.tex new file mode 100644 index 00000000000..0dac080ff79 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/bookhands/uncial/allfont.tex @@ -0,0 +1,94 @@ +% allfont.tex Test Uncial fonts +\documentclass{article} +%\documentclass[12pt]{article} +\usepackage{alluncl} + +\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 uncial rustic 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 Uncial 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 adcelebratqve polvs rex gazifer hymnis. + Trans zephyriqve globvm scandvnt tva facta per axem.} + +\title{Try Uncial Fonts} +\author{} +\date{} +\pagenumbering{roman} +\begin{document} +\maketitle + +\tableofcontents + +\section{First section} + + This provides a short test of the characters in the Uncial fonts +--- the \verb|uncl| font family. + + + +\begin{center} +The Uncial Huge normal font. \\ \par +{\Huge \ABC\\ \abc\\ \punct{}\dashes\\ \figs\\ \par } +\end{center} + + +\begin{center} +The Uncial 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{Second section} + + First some well known English phrases in an abcedarian sentence. + +\Sentence{} + + These are two Latin abecedarian sentences dating from about +\Romannum{790}. + +\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; you should see a large baselineskip.} + +\end{document} \ No newline at end of file diff --git a/Master/texmf-dist/fonts/afm/public/bookhands/sqrc10.afm b/Master/texmf-dist/fonts/afm/public/bookhands/sqrc10.afm new file mode 100644 index 00000000000..66d394abc07 --- /dev/null +++ b/Master/texmf-dist/fonts/afm/public/bookhands/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/Master/texmf-dist/fonts/afm/public/bookhands/sqrcb10.afm b/Master/texmf-dist/fonts/afm/public/bookhands/sqrcb10.afm new file mode 100644 index 00000000000..58dffaec406 --- /dev/null +++ b/Master/texmf-dist/fonts/afm/public/bookhands/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/Master/texmf-dist/fonts/map/dvips/bookhands/sqrcaps.map b/Master/texmf-dist/fonts/map/dvips/bookhands/sqrcaps.map new file mode 100644 index 00000000000..44f1fb8bdaf --- /dev/null +++ b/Master/texmf-dist/fonts/map/dvips/bookhands/sqrcaps.map @@ -0,0 +1,2 @@ +sqrc10 Bookhands-Square-Capitals 0: - rule((r+charic*pt,h.o_),(r+charic*pt,.5h.o_)); fi % italic correction -enddef; - - -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; - - -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; - pickup pencircle scaled thin; - stylus:=savepen; - pickup pencircle scaled (1.5thin); - thickstylus:=savepen; - pickup pencircle xscaled thick yscaled thin rotated pangle; - quill:=savepen; - - pickup pencircle xscaled 3/4thick yscaled thin rotated pangle; - threequarterquill := savepen; - - pickup pencircle xscaled 1/2thick yscaled thin rotated pangle; - halfquill := savepen; - - pickup pencircle xscaled 1/4thick yscaled thin rotated pangle; - quarterquill := savepen; - - pickup pencircle xscaled 3/8thick yscaled thin rotated pangle; %% 1/4 too small - thinquill := savepen; - - numeric pcshiftx#; % x value of LHS of box wrt origin of char box - define_pixels(pcshiftx); - numeric sqxside#; % x size of the square - numeric sqyside#; % y size of the square - define_pixels(sqxside,sqyside); - -enddef; % end of sqrcaps_font_setup - -boolean ductus; -ductus:=false; -numeric qhor, qvert; -qhor:=cosd(pangle); qvert:=sind(pangle); -pair pdir; pdir=dir(pangle); -pair ppdir; ppdir=dir(pangle+90); - -def draw_serif(suffix $, $$)(expr fr)= - numeric beta, ajut, bjut; - beta=1-fr; - ajut=fr*jut; bjut=beta*jut; - 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 - 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 - - -def draw_roundserif(suffix $, $$)(expr fr)= - draw_serif($, $$, fr); - undraw z$--z$a; -enddef; % end of draw_roundserif - - -def draw_flatserif(suffix $, $$)(expr fr)= - numeric beta, ajut, bjut; - beta=1-fr; - ajut=fr*jut; bjut=beta*jut; - 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]; - 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 - - -def draw_clubserif(suffix $, $$)(expr fr)= - numeric beta, ajut, bjut; -%% beta=1-fr; - ajut=clubjut; bjut=beta*jut; - 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$$]; - draw z$c..z$a{vec1}; - labels($a,$b,$c); -enddef; % end of draw_clubserif - - -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 - - -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 - - -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 - - -def draw_tlserif(suffix $, $$)(expr fr)= - draw_serif($, $$, fr); % the serif - draw z$a--z$$; % the stem -enddef; % end of draw_tlserif - - -def draw_flick(suffix $)(expr rise, fall, fjut)= - rt x$b = x1+fjut; top y$b=y$-fall; - x$a=0.5[x$,x$b]; top y$a=y$+rise; - draw z$..z$a..z$b; - labels($a,$b); -enddef; % end of draw_flick - - -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 - -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 - -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 - -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 - -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 - -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 - -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 - -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 - -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 - -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 - - -def draw_pdot(suffix $)(expr sz)= - 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 - - -def draw_pcomma(suffix $)(expr sz, ar)= - 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 - - -def draw_plq(suffix $)(expr sz, ar)= - 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 - - -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); - 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; - 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; - 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 - penpos$minl(thin,pangle+90); - penpos$maxr(thick,pangle); - penpos$minr(thin,pangle+90); - penpos$maxl(thick,pangle); - 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; - - -def obowl(suffix $)(expr sx, sy)= - offsetbowl($, sx, sy, 1/2, 1/2); -enddef; - - -primarydef v scalarprod w = - (xpart v * ypart w - ypart v * xpart w) -enddef; - - -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; - 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; - 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; - 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: - 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; - 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; - - -font_coding_scheme:="ASCII minuscules and punctuation"; -mode_setup; -sqrcaps_font_setup; - - -input sqrcl; % lower case -input sqrcu; % capitals -input sqrcpunct; % punctuation -input sqrclig; % the several dashes -input sqrcdig; % arabic digits - - -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#; - - -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. - diff --git a/Master/texmf-dist/fonts/source/public/bookhands/sqrcu.mf b/Master/texmf-dist/fonts/source/public/bookhands/sqrcu.mf deleted file mode 100644 index d74aaa40e0f..00000000000 --- a/Master/texmf-dist/fonts/source/public/bookhands/sqrcu.mf +++ /dev/null @@ -1,836 +0,0 @@ -%% -%% This is file `sqrcu.mf', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sqrcaps.dtx (with options: `maj') -%% -%% Copyright 1999 Peter R. Wilson -%% -%% This program is provided under the terms of the -%% LaTeX Project Public License distributed from CTAN -%% archives in directory macros/latex/base/lppl.txt. -%% -%% Author: Peter Wilson (CUA) -%% now at: peter.r.wilson@boeing.com -%% - -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" - -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" - -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" - -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" - -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" - -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" - -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" - -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]; -%%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" - -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" - -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" - -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" - -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" - -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" - -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" - -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" - -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" - -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" - -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" - -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" - -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" - -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; -lft x13=pcshiftx; y13=1/3h; -rt x3=w-pcshiftx-n1; y3=y1; -x4=x3; bot y4=0; -z33=1/4[z4,z3]; % start 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" - -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" - -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" - -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" - -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" - -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" - diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/auncl10.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/auncl10.tfm new file mode 100644 index 00000000000..a679c2594a6 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/auncl10.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/auncl17.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/auncl17.tfm new file mode 100644 index 00000000000..ededa99171f Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/auncl17.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/auncl7.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/auncl7.tfm new file mode 100644 index 00000000000..e4b23f7ef6b Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/auncl7.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/aunclb10.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/aunclb10.tfm new file mode 100644 index 00000000000..dd03c162e2b Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/aunclb10.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/aunclb17.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/aunclb17.tfm new file mode 100644 index 00000000000..6ef4a6a6da2 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/aunclb17.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/aunclb7.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/aunclb7.tfm new file mode 100644 index 00000000000..853c8cb2e01 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/aunclb7.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/cmin10.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/cmin10.tfm new file mode 100644 index 00000000000..798489933f1 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/cmin10.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/cmin17.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/cmin17.tfm new file mode 100644 index 00000000000..10c922a212d Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/cmin17.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/cmin7.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/cmin7.tfm new file mode 100644 index 00000000000..e6de7ce22cd Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/cmin7.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/cminb10.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/cminb10.tfm new file mode 100644 index 00000000000..31e987f7fe7 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/cminb10.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/cminb17.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/cminb17.tfm new file mode 100644 index 00000000000..83771e497e2 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/cminb17.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/cminb7.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/cminb7.tfm new file mode 100644 index 00000000000..d0d3c3a639c Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/cminb7.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/egoth10.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/egoth10.tfm new file mode 100644 index 00000000000..0433b72a596 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/egoth10.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/egoth17.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/egoth17.tfm new file mode 100644 index 00000000000..5771e178152 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/egoth17.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/egoth7.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/egoth7.tfm new file mode 100644 index 00000000000..17f62ca5d46 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/egoth7.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/egothb10.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/egothb10.tfm new file mode 100644 index 00000000000..d1e46457d66 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/egothb10.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/egothb17.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/egothb17.tfm new file mode 100644 index 00000000000..71749df033c Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/egothb17.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/egothb7.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/egothb7.tfm new file mode 100644 index 00000000000..a5c80056d8a Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/egothb7.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/hmin10.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/hmin10.tfm new file mode 100644 index 00000000000..59dc6d5e895 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/hmin10.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/hmin17.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/hmin17.tfm new file mode 100644 index 00000000000..de5396dbc35 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/hmin17.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/hmin7.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/hmin7.tfm new file mode 100644 index 00000000000..85c2cc9367e Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/hmin7.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/hminb10.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/hminb10.tfm new file mode 100644 index 00000000000..1cfac4968c9 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/hminb10.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/hminb17.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/hminb17.tfm new file mode 100644 index 00000000000..a61e2e1ba35 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/hminb17.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/hminb7.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/hminb7.tfm new file mode 100644 index 00000000000..b8c3252467e Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/hminb7.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/huncl10.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/huncl10.tfm new file mode 100644 index 00000000000..f366ee502e2 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/huncl10.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/huncl17.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/huncl17.tfm new file mode 100644 index 00000000000..255b84e29eb Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/huncl17.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/huncl7.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/huncl7.tfm new file mode 100644 index 00000000000..d443a78c466 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/huncl7.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/hunclb10.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/hunclb10.tfm new file mode 100644 index 00000000000..0227ad08dbd Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/hunclb10.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/hunclb17.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/hunclb17.tfm new file mode 100644 index 00000000000..4366ebd1068 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/hunclb17.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/hunclb7.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/hunclb7.tfm new file mode 100644 index 00000000000..acb74af791d Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/hunclb7.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/imaj10.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/imaj10.tfm new file mode 100644 index 00000000000..811d60d708c Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/imaj10.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/imaj17.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/imaj17.tfm new file mode 100644 index 00000000000..747dbcd612c Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/imaj17.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/imaj7.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/imaj7.tfm new file mode 100644 index 00000000000..35deb1c63db Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/imaj7.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/imajb10.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/imajb10.tfm new file mode 100644 index 00000000000..1d14d154720 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/imajb10.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/imajb17.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/imajb17.tfm new file mode 100644 index 00000000000..6cbcfe0a18f Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/imajb17.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/imajb7.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/imajb7.tfm new file mode 100644 index 00000000000..c2ab5e7f401 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/imajb7.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/imin10.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/imin10.tfm new file mode 100644 index 00000000000..5bbed730004 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/imin10.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/imin17.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/imin17.tfm new file mode 100644 index 00000000000..b836f7332ab Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/imin17.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/imin7.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/imin7.tfm new file mode 100644 index 00000000000..dda60a6b562 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/imin7.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/iminb10.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/iminb10.tfm new file mode 100644 index 00000000000..b12c0984ab8 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/iminb10.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/iminb17.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/iminb17.tfm new file mode 100644 index 00000000000..bee1d7ef96b Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/iminb17.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/iminb7.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/iminb7.tfm new file mode 100644 index 00000000000..a62279716c9 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/iminb7.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/pgoth10.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/pgoth10.tfm new file mode 100644 index 00000000000..d5ae652a350 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/pgoth10.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/pgoth17.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/pgoth17.tfm new file mode 100644 index 00000000000..5ed0e038e3b Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/pgoth17.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/pgoth7.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/pgoth7.tfm new file mode 100644 index 00000000000..d80de54434e Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/pgoth7.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/pgothb10.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/pgothb10.tfm new file mode 100644 index 00000000000..a9098e23fef Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/pgothb10.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/pgothb17.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/pgothb17.tfm new file mode 100644 index 00000000000..f637b36176f Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/pgothb17.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/rtnd10.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/rtnd10.tfm new file mode 100644 index 00000000000..3df0db19fa9 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/rtnd10.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/rtnd17.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/rtnd17.tfm new file mode 100644 index 00000000000..fe43942642c Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/rtnd17.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/rtnd7.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/rtnd7.tfm new file mode 100644 index 00000000000..45737efb20f Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/rtnd7.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/rtndb10.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/rtndb10.tfm new file mode 100644 index 00000000000..2c228fba1d4 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/rtndb10.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/rtndb17.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/rtndb17.tfm new file mode 100644 index 00000000000..7ba5b461798 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/rtndb17.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/rtndb7.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/rtndb7.tfm new file mode 100644 index 00000000000..d4a8a4f6367 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/rtndb7.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/rust10.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/rust10.tfm new file mode 100644 index 00000000000..c2c331299fe Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/rust10.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/rust17.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/rust17.tfm new file mode 100644 index 00000000000..f39513d23c7 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/rust17.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/rust7.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/rust7.tfm new file mode 100644 index 00000000000..6370692a95c Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/rust7.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/rustb10.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/rustb10.tfm new file mode 100644 index 00000000000..83db0b862ec Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/rustb10.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/rustb17.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/rustb17.tfm new file mode 100644 index 00000000000..97eea834efa Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/rustb17.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/rustb7.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/rustb7.tfm new file mode 100644 index 00000000000..9c49852e607 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/rustb7.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/sqrc10.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/sqrc10.tfm new file mode 100644 index 00000000000..8a975b0a70b Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/sqrc10.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/sqrcb10.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/sqrcb10.tfm new file mode 100644 index 00000000000..fd15e06ebaa Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/sqrcb10.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/tgoth10.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/tgoth10.tfm new file mode 100644 index 00000000000..a9c4a9ab8f4 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/tgoth10.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/tgoth17.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/tgoth17.tfm new file mode 100644 index 00000000000..3f9e64da017 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/tgoth17.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/tgoth7.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/tgoth7.tfm new file mode 100644 index 00000000000..beea4f66f66 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/tgoth7.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/tgothb10.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/tgothb10.tfm new file mode 100644 index 00000000000..d3f7fbdb9de Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/tgothb10.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/tgothb17.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/tgothb17.tfm new file mode 100644 index 00000000000..22e965a1707 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/tgothb17.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/uncl10.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/uncl10.tfm new file mode 100644 index 00000000000..11f3b84c693 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/uncl10.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/uncl17.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/uncl17.tfm new file mode 100644 index 00000000000..c1f383cdf93 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/uncl17.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/uncl7.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/uncl7.tfm new file mode 100644 index 00000000000..c8a2e4e3bf7 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/uncl7.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/unclb10.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/unclb10.tfm new file mode 100644 index 00000000000..973c5a26bc4 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/unclb10.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/unclb17.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/unclb17.tfm new file mode 100644 index 00000000000..90dd196cf81 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/unclb17.tfm differ diff --git a/Master/texmf-dist/fonts/tfm/public/bookhands/unclb7.tfm b/Master/texmf-dist/fonts/tfm/public/bookhands/unclb7.tfm new file mode 100644 index 00000000000..b137dda9838 Binary files /dev/null and b/Master/texmf-dist/fonts/tfm/public/bookhands/unclb7.tfm differ diff --git a/Master/texmf-dist/fonts/type1/public/bookhands/sqrc10.pfb b/Master/texmf-dist/fonts/type1/public/bookhands/sqrc10.pfb new file mode 100644 index 00000000000..c2344436ed4 Binary files /dev/null and b/Master/texmf-dist/fonts/type1/public/bookhands/sqrc10.pfb differ diff --git a/Master/texmf-dist/fonts/type1/public/bookhands/sqrcb10.pfb b/Master/texmf-dist/fonts/type1/public/bookhands/sqrcb10.pfb new file mode 100644 index 00000000000..e8106594387 Binary files /dev/null and b/Master/texmf-dist/fonts/type1/public/bookhands/sqrcb10.pfb differ diff --git a/Master/texmf-dist/source/fonts/bookhands/auncial.dtx b/Master/texmf-dist/source/fonts/bookhands/auncial.dtx new file mode 100644 index 00000000000..2a0f8e6439f --- /dev/null +++ b/Master/texmf-dist/source/fonts/bookhands/auncial.dtx @@ -0,0 +1,3803 @@ +% \iffalse meta-comment +% +% auncial.dtx +% Copyright 1999 Peter R. Wilson +% +% This program is provided under the terms of the +% LaTeX Project Public License distributed from CTAN +% archives in directory macros/latex/base/lppl.txt. +% +% Author: Peter Wilson (CUA) (now at: peter.r.wilson@boeing.com) +% +% If you do not have the docmfp package (available from CTAN in +% tex-archive/macros/latex/contrib/supported), comment out the +% \usepackage{docmfp} line below and uncomment the line following it. +% +%<*driver> +\documentclass{ltxdoc} +\usepackage{docmfp} +%%%%%% \providecommand{\DescribeVariable}[1]{} \newenvironment{routine}[1]{}{} +\EnableCrossrefs +\CodelineIndex +\setcounter{StandardModuleDepth}{1} +\begin{document} + \DocInput{auncial.dtx} +\end{document} +% +% +% \fi +% +% \CheckSum{132} +% +% \DoNotIndex{\',\.,\@M,\@@input,\@addtoreset,\@arabic,\@badmath} +% \DoNotIndex{\@centercr,\@cite} +% \DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue} +% \DoNotIndex{\@input,\@ixpt,\@m} +% \DoNotIndex{\@minus,\@mkboth,\@ne,\@nil,\@nomath,\@plus,\@set@topoint} +% \DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb} +% \DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt} +% \DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt} +% \DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace} +% \DoNotIndex{\advance,\Alph,\alph} +% \DoNotIndex{\arabic,\ast,\begin,\begingroup,\bfseries,\bgroup,\box} +% \DoNotIndex{\bullet} +% \DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption} +% \DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass} +% \DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\endtrivlist} +% \DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup} +% \DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter} +% \DoNotIndex{\fbox} +% \DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef} +% \DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule} +% \DoNotIndex{\hsize,\hskip,\hspace,\hss,\if@tempswa,\ifcase,\or,\fi,\fi} +% \DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\fi,\fi,\fi,\fi,\fi} +% \DoNotIndex{\input} +% \DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark} +% \DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright} +% \DoNotIndex{\month,\newcommand,\newcounter,\newenvironment} +% \DoNotIndex{\NeedsTeXFormat,\newdimen} +% \DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number} +% \DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\p@} +% \DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip} +% \DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions} +% \DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright} +% \DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font} +% \DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily,\roman} +% \DoNotIndex{\roman,\secdef,\selectfont,\setbox,\setcounter,\setlength} +% \DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space} +% \DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase} +% \DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt} +% \DoNotIndex{\viipt,\vipt,\vskip,\vspace} +% \DoNotIndex{\wd,\xiipt,\year,\z@} +% +% \changes{v1.0}{1999/05/22}{First public release} +% \changes{v1.0a}{2001/01/02}{Fixed missing * in fd files} +% +% ^^A \def\fileversion{v1.0} +% ^^A \def\filedate{1999/05/22} +% \def\fileversion{v1.0a} +% \def\filedate{2001/01/02} +% \newcommand*{\Lpack}[1]{\textsf {#1}} ^^A typeset a package +% \newcommand*{\Lopt}[1]{\textsf {#1}} ^^A typeset an option +% \newcommand*{\file}[1]{\texttt {#1}} ^^A typeset a file +% \newcommand*{\Lcount}[1]{\textsl {\small#1}} ^^A typeset a counter +% \newcommand*{\pstyle}[1]{\textsl {#1}} ^^A typeset a pagestyle +% \newcommand*{\Lenv}[1]{\texttt {#1}} ^^A typeset an environment +% \newcommand*{\AD}{\textsc{ad}} +% \newcommand*{\thisfont}{Artificial Uncial} +% +% \title{The \Lpack{Artificial Uncial} fonts\thanks{This +% file has version number \fileversion, last revised +% \filedate.}} +% +% \author{% +% Peter Wilson\\ +% Catholic University of America \\ +% Now at \texttt{peter.r.wilson@boeing.com} +% } +% \date{\filedate} +% \maketitle +% \begin{abstract} +% The \Lpack{auncial} and \Lpack{allauncl} packages provide a set of +% Metafont \thisfont{} book-hands +% as used +% for manuscripts in the 6th to the 10th century. This is one in a series +% of manuscript fonts. +% \end{abstract} +% \tableofcontents +% \listoftables +% +% \StopEventually{} +% +% +% +% \section{Introduction} +% +% The \Lpack{auncial} and \Lpack{allauncl} packages provide a Metafont~\cite{METAFONT} version +% of the \thisfont{} manuscript book-hand that was in use between about the +% sixth and tenth centuries~\AD. It is part of a project to provide fonts +% covering the major manuscript hands between the first century~\AD{} and +% the invention of printing. The principal resources used in this project +% are listed in the Bibliography. +% +% This manual is typeset according to the conventions of the +% \LaTeX{} \textsc{docstrip} utility which enables the automatic +% extraction of the \LaTeX{} macro source files~\cite{GOOSSENS94}. +% The \Lpack{docmfp} package is used for documenting the Metafont portions +% of the distribution~\cite{DOCMFP}. +% +% Section~\ref{sec:usc} describes the usage of the package. +% Commented code for the fonts is in Sections~\ref{sec:mf} and~\ref{sec:fd} +% and source code for the package is in Section~\ref{sec:code}. +% +% \subsection{Manuscript book-hands} +% +% Before the invention of printing all books were written by hand. The book-hands +% used by the scribes and copyists for the manuscripts changed as time +% went on. Table~\ref{tab:1} lists some of the common book-hands which were used +% between the 1st and 15th centuries. The later book-hands formed the basis of the +% fonts used by the early printers, which in turn form the basis of the printing +% fonts in use today. +% +% The manuscript book-hands were written with a broad nibbed reed or quill +% pen. Among the distinguishing characteristics of a hand, apart from the +% actual shape of the letters, are the angle of the pen (which controls the +% variation between thick and thin strokes) and the height of a letter compared +% to the width of the nib. The lower the ratio of the letter height to nib +% width, the more condensed is the script. The scripts also varied in their +% typical height. +% +% Table~\ref{tab:1} gives an `average' x-height for each +% script, which I obtained by measuring a sample of photographs of +% manuscripts written in the various hands. About a dozen examples +% of each book-hand were measured. This figure should not be taken too +% seriously. +% +% There was not a sharp division between the use of one hand and another. +% Many manuscripts exhibit a variety of hands in the same document. For example, +% the scribe writing in an Uncial hand may have used Roman Rustic letters +% for capitals. Usually the same pen was used for the two different scripts. +% +% Generally speaking, as a hand got older it became more embelished, and +% therefore took longer to write. As this happened a new hand would appear that +% was faster, and which would eventually make the earlier one obsolete. +% +% Many of the book-hands were single-cased; that is, they did not have an +% upper- and lower-case as we do nowadays in Western scripts. On the other +% hand, a script might be majuscule or minuscule. A \textit{majuscule} script +% is one, like our upper-case, where the letters are drawn between two lines +% and are of a uniform height with no ascenders or descenders. +% A \textit{minuscule} script, like our lower-case, is drawn between four lines +% and has ascenders and descenders. +% +% \begin{table} +% \centering +% \caption{The main manuscript book-hands} \label{tab:1} +% \begin{tabular}{lccccc} \hline +% Name & Century & x-height & Height & Pen & Normalised \\ +% & & (mm) & (nib widths) & angle & height \\ \hline +% Roman Rustic & 1--6 & 5.7 & 4--6 & 45 & 1.90 \\ +% Uncial & 3--6 & 4.1 & 4--5 & 30 & 1.37 \\ +% Half Uncial & 3--9 & 3.2 & 3--6 & 20--30 & 1.07 \\ +% Artificial Uncial & 6--10 & 4.2 & 3--6 & 10 & 1.40 \\ +% Insular majuscule & 6--9 & 4.2 & 5 & 0--20 & 1.40 \\ +% Insular minuscule & 6 onward & 4.1 & 5--6 & 45--70 & 1.37 \\ +% Carolingian minuscule & 8--12 & 3.0 & 3--5 & 45 & 1.00 \\ +% Early Gothic & 11--12 & 3.8 & 4--6 & 20--45 & 1.27 \\ +% Gothic Textura & 13--15 & 3.9 & 3--5 & 30--45 & 1.30 \\ +% Gothic Prescius & 13 onward & 3.3 & 4--5 & 45 & 1.10 \\ +% Rotunda & 13--15 & 3.2 & 4--6 & 30 & 1.07 \\ +% Humanist minuscule & 14 onward & 3.0 & 4--5 & 30--40 & 1.00 \\ \hline +% \end{tabular} +% \end{table} +% +% During the period under consideration arabic numerals were effectively +% not used. At the beginning they were unknown and even though some knew +% of them towards the end, the glyphs used for them are not recognisable --- +% to me they look somewhat like cryllic letters --- and each locality +% and time had its own highly individualistic rendering. The general rule +% when using one of these book-hands is to write all numbers using +% roman numerals. +% +% The Roman alphabet consisted of 23 capital letters --- the J, U and W +% were absent. The book-hands initially used both a `u' and a `v' interchangeably +% but by the 10th century the practice had become to use the `v' before a vowel +% and the `u' otherwise. The letter corresponding to the W sound appeared +% in England around the 7th century in +% the form of the runic \textit{wen} character and by about the 11th century +% the `w' chacter was generally used. The `J' is the newest letter of all, not +% appearing until about the mid 16th century. +% +% In the first century punctuation was virtually unknown, and typically +% would not even be any additional space between individual words, never +% mind denoting ends of sentences. Sometimes a dot at mid-height would be +% used as a word seperator, or to mark off the end of a paragraph. Effectively +% a text was a continuous stream of letters. By the time that printing was +% invented, though, all of our modern punctuation marks were being used. +% +% Among all these manuscript hands, the Carolingian minuscule is the +% most important as our modern fonts are based on its letter shapes, and it is +% also at this point in time where the division occured between the black letter +% scripts as used even today in Germany, and the lighter fonts used elesewhere. +% The Rotunda and Humanist minuscule hands were developed in Italy and were +% essentially a rediscovery of the Carolingian minusucle. Guthenberg took the +% Gothic scripts as the model for his types. Later printers, +% such as Nicholas Jenson of Venice, +% took the Humanist scripts as their models. +% +% +% \subsection{The \thisfont{} script} +% +% The \thisfont{} hand, which is a minuscule script, was in use for some five +% centuries and was, in a sense, the sucessor to the Uncial book-hand. It was +% a much more calligraphic script, and as time went on it became even more +% decorated, until it was too time consuming to use. Usually the +% lettering in a manuscript was all one size. If the scribe felt the need +% for `capital' letters then, using the same pen, would either write a larger +% \thisfont{} letter or a Roman Capital letter. The capitals were only used at +% the start of a line, and were either fully or partially in the margin. The +% capitals were large, perhaps two to four times the size of a normal letter, +% and were the start of versals. As versals for use with other book-hands, +% the script lived on until the end of the Middle Ages. +% +% I have provided a set of `capital' letters that are only a little larger +% than the normal letters for use in running text. If you want to typeset +% using versals, then I suggest Daniel Flipo's \Lpack{lettrine} +% package~\cite{LETTRINE}. +% During the time the \thisfont{} script was used the alphabet only had 24 +% letters. I have included the missing J. +% +% Arabic numerals were unknown at this time, so all numbers were written +% using the roman numbering system. I have provided Uncial versions of +% the arabic digits. +% +% Punctuation was used, but not with the frequency of today. +% A sentence might be ended with +% a dot at mid-height or a paragraph ended with a colon, also at mid-height. +% The start +% of a paragraph might be marked with a capital letter (as a versal). +% The comma was was a small pointed +% slash; the semi-colon was known, as was the single quotation +% mark which was represented by a raised comma. +% +% +% \section{The \Lpack{auncial} and \Lpack{allauncl} packages} \label{sec:usc} +% +% The \thisfont{} font family is called |auncl|. The font is supplied in both +% OT1 and T1 encodings. +% +% \subsection{The \Lpack{auncial} 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{\aunclfamily} +% The |\aunclfamily| 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{\textuncl} +% The command |\textuncl{|\meta{text}|}| will typeset \meta{text} using the +% \thisfont{} fonts. +% +% \subsection{The \Lpack{allauncl} 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{allauncl} package automatically loads the \Lpack{auncial} package, +% so its font commands are available if necessary. +% +% +% +% \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> +%%%% AUNCL7.MF Artificial Uncial at 7 point design size. +%%%% AUNCL10.MF Artificial Uncial at 10 point design size. +%%%% AUNCL17.MF Artificial Uncial at 17 point design size. +%%%% AUNCLB7.MF Artificial Uncial Bold at 7 point design size. +%%%% AUNCLB10.MF Artificial Uncial Bold at 10 point design size. +%%%% AUNCLB17.MF Artificial Uncial 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 + +%font_identifier:="AUNCL"; font_size 7pt#; +%font_identifier:="AUNCL"; font_size 10pt#; +%font_identifier:="AUNCL"; font_size 17.28pt#; +%font_identifier:="AUNCLB"; font_size 7pt#; +%font_identifier:="AUNCLB"; font_size 10pt#; +%font_identifier:="AUNCLB"; font_size 17.28pt#; + +% \end{macrocode} +% +% \DescribeVariable{jutstretch} +% The CMR scaling for lowercase serifs wrt 17pt size. +% \begin{macrocode} +% jutstretch:=1.19; +% jutstretch:=1.152; +% jutstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{stemstretch} +% The CMR scaling for lowercase stem widths wrt 17pt size. +% \begin{macrocode} +% stemstretch:=1.50; +% stemstretch:=1.31; +% stemstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{caprat} +% The scaling for `capitals' wrt `lowercase'. This is pretty much a guess. +% \begin{macrocode} + caprat:=1.25; % ratio of capital height to minuscule height +% \end{macrocode} +% +% \DescribeVariable{cap_jutstretch} +% The CMR scaling for uppercase serifs wrt 17pt size. +% \begin{macrocode} +% cap_jutstretch:=1.3; +% cap_jutstretch:=1.2; +% cap_jutstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{cap_stemstretch} +% The CMR scaling for uppercase stem width wrt 17pt size. +% \begin{macrocode} +% cap_stemstretch:=1.45; +% cap_stemstretch:=1.31; +% cap_stemstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{bfudge} +% Letter width scaling for bold font wrt normal font. +% \begin{macrocode} +% bfudge:=1.0; +% bfudge:=1.2; +% \end{macrocode} +% +% \DescribeVariable{szfudge} +% Width scaling wrt 17pt letter width. +% \begin{macrocode} +% szfudge:=1.18; +% szfudge:=1.0; +% 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} +% carol_height#:=108.5/36pt#; +% carol_height#:=155/36pt#; +% carol_height#:=268/36pt#; +% \end{macrocode} +% +% \DescribeVariable{vstretch} +% The height of this font wrt the Carolingian font. +% \begin{macrocode} + vstretch:=1.4; + +% \end{macrocode} +% +% \DescribeVariable{x_height} +% The x-height of lower case letters. Scaled from the Carolingian font. +% \begin{macrocode} + x_height#:=vstretch*carol_height#; +% \end{macrocode} +% +% \DescribeVariable{u} +% The unit width. The CMR values are used. +% \begin{macrocode} +% u#:=15.5/36pt#; +% u#:=20/36pt#; +% u#:=32.5/36pt#; +% u#:=17.9/36pt#; +% u#:=23/36pt#; +% 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 +% cap_serif_fit#:=3.5/36pt#; % extra sidebar near uppercase serifs +% cap_serif_fit#:=5/36pt#; % extra sidebar near uppercase serifs +% cap_serif_fit#:=8/36pt#; % extra sidebar near uppercase serifs +% letter_fit#:=0pt#; % extra space added to all sidebars +% letter_fit#:=0pt#; % extra space added to all sidebars +% letter_fit#:=-0.1pt#; % extra space added to all sidebars + +% \end{macrocode} +% +% \DescribeVariable{cap_height} +% The height of capital letters. +% \begin{macrocode} +% cap_height#:=172.2/36pt#; % height of caps +% cap_height#:=246/36pt#; % height of caps +% 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 3.5 nib widths. +% \begin{macrocode} +% thickfudge:=1/5; +% thickfudge:=1/3.5; +% \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{asc_height} +% The height of lower case ascenders. +% \begin{macrocode} + asc_height#:=4/3x_height#; +% \end{macrocode} +% +% \DescribeVariable{desc_depth} +% The depth of lower case descenders. +% \begin{macrocode} + desc_depth#:=2/3x_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} +% rule_thickness#:=.34pt#; +% rule_thickness#:=.4pt#; +% rule_thickness#:=.6pt#; + +% \end{macrocode} +% +% \DescribeVariable{jutfudge} +% Controls the protrusion of serifs. +% \begin{macrocode} +jutfudge:= 3/4; +% \end{macrocode} +% +% \DescribeVariable{jut} +% The lowercase serif protrusion. +% \begin{macrocode} +jut#:=jutstretch*jutfudge*thick#; +% \end{macrocode} +% +% \DescribeVariable{srad} +% |srad| with |0 < srad < 1| controls the serif radius. +% \begin{macrocode} +srad:=0.5; +% \end{macrocode} +% +% \DescribeVariable{o} +% Amount of overshoot for curves (as in an `o'). Use CMR values. +% \begin{macrocode} +% o#:=5/36pt#; +% o#:=8/36pt#; +% o#:=10/36pt#; + +% \end{macrocode} +% +% \DescribeVariable{slant} +% |slant| is the amount the font slopes to the right. +% \begin{macrocode} +slant:=0; % tilt ratio $(\Delta x/\Delta y)$ + +% \end{macrocode} +% +% \DescribeVariable{monospace} +% We are generating a variable-width font. +% \begin{macrocode} +monospace:=false; % should all characters have the same width? + +% \end{macrocode} +% +% \DescribeVariable{dot_size} +% The size of (punctuation) dots. +% \begin{macrocode} +dot_size#:=5thin#; % size of dots +% \end{macrocode} +% +% \DescribeVariable{comma_width} +% The horizontal width of a comma. +% \begin{macrocode} +comma_width#:=2.5dot_size#; + +% \end{macrocode} +% +% Finally, call the driver file for the font. +% \begin{macrocode} +generate auncltitle %% switch to the driver file + +% \end{macrocode} +% +% The end of this code section. +% \begin{macrocode} +% +% \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 UNCLTITLE.MF for the Artificial Uncial 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}{auncial_font_setup} +% This macro contains the set up for the \thisfont{} fonts. +% \begin{macrocode} + +def auncial_font_setup= % contains special stuff for auncial fonts + define_pixels(side,half_height,carol_height,comma_width); + define_pixels(u,dot_size,letter_size,cap_height,width_adj,serif_fit, + cap_serif_fit,jut,cap_jut); + define_pixels(fig_width); + define_whole_pixels(letter_fit); + define_whole_vertical_pixels(body_height,asc_height,cap_height,x_height, + desc_depth,body_depth,fig_height); + define_corrected_pixels(o); + define_blacker_pixels(thick,thin); + let adjust_fit = normal_adjust_fit; +% \end{macrocode} +% \DescribeVariable{stylus} +% The pen for drawing the thinnest lines is |stylus|. +% \begin{macrocode} + pickup pencircle scaled thin; + stylus:=savepen; +% \end{macrocode} +% \DescribeVariable{thickstylus} +% The pen for drawing lines a bit thicker than the thinnest is |thickstylus|. +% \begin{macrocode} + pickup pencircle scaled (1.5thin); + thickstylus:=savepen; +% \end{macrocode} +% \DescribeVariable{quill} +% The normal calligraphic pen is |quill|. +% \begin{macrocode} + pickup pencircle xscaled thick yscaled thin rotated pangle; + quill:=savepen; + numeric pcshiftx#; % x value of LHS of box wrt origin of char box + define_pixels(pcshiftx); + numeric sqxside#; % x size of the square + numeric sqyside#; % y size of the square + define_pixels(sqxside,sqyside); + +enddef; % end of auncial_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 $0y$$: + 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_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 +% \end{macrocode} +% +% \subsection{The code for normal letters} +% +% The following code is for the minuscule characters. +% +% \begin{macrocode} +%<*min> +% AUNCLL.MF Program file for Artificial Uncial minuscules +% + + +% \end{macrocode} +% +% +% \begin{routine}{a} +% The letter `a'. +% \begin{macrocode} +cmchar "AUncial letter a"; +beginchar("a", 2u#+hstretch*(x_height#+jut#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +lft x1=pcshiftx+2jut; rt x2=w-u-jut; +top y1=h; bot y2=0; +% for the bowl +z3=3/4[z2,z1]; +x5=lft x3; y5=bot y3; +z13=1/2[z2,z1]; +x15=lft x13; y15=bot y13; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_istem(1,2,srad); % the stem +pickup thickstylus; % for the bowl +lft x4=pcshiftx; bot y4=0; +z14=0.2[z4,z5]; +draw z14{pdir}...{z5-z4}z15; % bowl bottom +draw z5--z4; % bowl top +ductus:=false; +penlabels(1,2,3,4,5,6,14,15,100); +endchar; % end "a" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{b} +% The letter `b'. +% \begin{macrocode} +cmchar "AUncial letter b"; +beginchar("b", 2u#+hstretch*(x_height#+jut#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +lft x1=lft x2=pcshiftx+jut; +top y1=h; bot y2=0; +% lower bowl +rt x4=w-pcshiftx; y4=1/3h; +lft x5=rt x1+2thin; y5=2/3h; +z6=z1; +rt x7=0.67[x1,x4]; y7=y6; +x9=rt x7-thin; y9=h-thin; +x8=lft x5+thin; y8=bot y5+thin; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tlserif(1,2,srad); % the stem +draw z2{right}..z4{up}..{left}z5; % bottom bowl +draw z6--z7; % top bowl +pickup stylus; +draw z9--z8; +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 "AUncial letter c"; +beginchar("c", 2u#+hstretch*(x_height#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +lft x1=pcshiftx; rt x3=w-pcshiftx; y1=y3=h/2; +x2=x4=w/2; top y2=h; bot y4=0; +x5=x6=x3; +y5=0.1h; +top y6=0.95h; y6'=top y6; y6''=bot y6; x6''=lft x6; +% the serif +pickup stylus; +rt x16=w-pcshiftx; top y16=y6'; +x17=x6; y17=y16-jut; +lft x18=x6''; bot y18=y6''; +pickup quill; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z5{-pdir}..{left}z4..z1..z2..z6; +pickup stylus; +filldraw z17..z18--z16--cycle; +ductus:=false; +penlabels(1,2,3,4,5,6,16,17,18,100); +endchar; % end "c" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{d} +% The letter `d'. +% \begin{macrocode} +cmchar "AUncial letter d"; +beginchar("d", 2u#+hstretch*(4/3x_height#), 4/3x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +lft x1=pcshiftx; rt x3=w-pcshiftx; +x2=x4=w/2; top y2=3/4h; bot y4=0; +y1=y3=0.5[y4,y2]; +lft x5=pcshiftx; top y5=h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z2{-pdir}..z1{down}..z4{right}..z3{up}..z5; +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 "AUncial letter e"; +beginchar("e", 2u#+hstretch*(x_height#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +lft x1=pcshiftx; rt x3=w-pcshiftx; y1=y3=h/2; +x2=x4=w/2; top y2=h; bot y4=0; +x5=x6=x3; +y5=0.1h; +top y6=0.95h; y6'=top y6; y6''=bot y6; x6''=lft x6; +% the serif +pickup stylus; +rt x16=w-pcshiftx; top y16=y6'; +x17=x6; y17=y16-jut; +lft x18=x6''; bot y18=y6''; +pickup quill; +% the bar +x7=x1; y7=y1; +x8=w-pcshiftx; y8=y7; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z5{-pdir}..{left}z4..z1..z2..z6; % the bowl +pickup stylus; +filldraw z17..z18--z16--cycle; % the serif +draw_fork(7,8,jut); % the bar +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,10,16,17,18,100); +endchar; % end "e" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{f} +% The letter `f'. +% \begin{macrocode} +cmchar "AUncial letter f"; +beginchar("f", 2u#+hstretch*(x_height#), x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% stem +lft x1=lft x2=pcshiftx+jut; +top y1=h; bot y2=-d/2; +% bars +x3=x4=x1; y3=y1; bot y4=0; +rt x5= rt x6=w-pcshiftx; y5=y3; y6=y4; +% triangles +x15=x16=rt x5-1/2thin; +y15=y5; y16=y6; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tlserif(1,2,srad); % stem +draw_tail(2,jut); +draw z3--z5; % top bar +draw_rtriangle(15,jut); +draw z4--z6; % bottom bar +draw_rtriangle(16,jut); +ductus:=false; +penlabels(1,2,3,4,5,6,100); +endchar; % end "f" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{g} +% The letter `g'. +% \begin{macrocode} +cmchar "AUncial letter g"; +beginchar("g", 2u#+hstretch*(x_height#), x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% the bowl +lft x1=pcshiftx; rt x3=w-pcshiftx; y1=y3=h/2; +x2=x4=w/2; top y2=h; bot y4=0; +x5=x6=x3; +y5=0.1h; +top y6=0.95h; y6'=top y6; y6''=bot y6; x6''=lft x6; +% the serif +pickup stylus; +rt x16=w-pcshiftx; top y16=y6'; +x17=x6; y17=y16-jut; +lft x18=x6''; bot y18=y6''; +pickup quill; +% the stem +x7=rt x5-1/2thin; y7=top y5-1/2thin; +pickup stylus; +lft x8=w/2; bot y8=-d; +pickup quill; +pair vec[]; vec1:=z7-z8; vec2:=z8-z7; +y21=y8+3/2thick; z21=whatever[z8,z7]; +y22=y8+ thick; z22=whatever[z8,z7]; +x23=x8-thick; y23=y8; +x24=x23+1/2thick; y24=y23+1/2thick; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z5{-pdir}..{left}z4..z1..z2..z6; % the bowl +pickup stylus; +filldraw z17..z18--z16--cycle; % the serif +draw z7--z22; % the stem +filldraw z22{vec2}..{left}z23--z24{right}..{vec1}z21--cycle; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,16,17,18,21,22,23,24,100); +endchar; % end "g" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{h} +% The letter `h'. +% \begin{macrocode} +cmchar "AUncial letter h"; +beginchar("h", 2u#+hstretch*(x_height#+jut#), asc_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +lft x1=lft x2=pcshiftx+jut; +top y1=h; bot y2=0; +% bowl +rt x5=w-pcshiftx; y5=3/8h; +lft x6=2/3w; bot y6=0; +x4=0.5[x1,x5]; top y4=3/4h; +x4'=0.5[x4,x1]; y4'=y4; +z4''=z4' shifted (-w*pdir); +z3'=whatever[z4',z4'']=whatever[z1,z2]; +x3=rt x3'; y3=y3'; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_istem(1,2,srad); % stem +draw z3{pdir}..z4{right}..z5{down}..z6; % bowl +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 "AUncial letter i"; +beginchar("i", 2u#+hstretch*(thick#+jut#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +lft x1=lft x2=pcshiftx+jut; +top y1=h; bot y2=0; +%%ductus:=true; +draw_tlserif(1,2,srad); +draw_tail(2,jut); +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 "AUncial letter j"; +beginchar("j", 2u#+hstretch*(thick#+jut#), x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +lft x1=lft x2=pcshiftx+jut; +top y1=h; bot y2=-1/2d; +%%ductus:=true; +draw_tlserif(1,2,srad); +draw_tail(2,jut); +ductus:=false; +penlabels(1,2,100); +endchar; % end "j" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{k} +% The letter `k'. +% \begin{macrocode} +cmchar "AUncial letter k"; +beginchar("k", 2u#+hstretch*(4/3x_height#), asc_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +lft x1=lft x2=pcshiftx+jut; +top y1=h; bot y2=0; +% for the flick +numeric rise,fall,fjut; +x3=rt x1; y3=5/8h; +rise:=1/6h; fall:=-rise/2; fjut:=1/2w; +% for the leg +%%x4=x1; y4=y3; +z4=z3; +x5=w-pcshiftx-jut; y5=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tlserif(1,2,srad); % stem +draw_tail(2,jut); +draw_flick(3,rise,fall,fjut); % upper diag +draw_tstem(4,5,srad); % lower diag +ductus:=false; +penlabels(1,2,3,4,5,100); +endchar; % end "k" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{l} +% The letter `l'. +% \begin{macrocode} +cmchar "AUncial letter l"; +beginchar("l", 2u#+hstretch*(x_height#), asc_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +lft x1=lft x2=pcshiftx+jut; +top y1=h; bot y2=0; +z3=z2; +x4=w-u; y4=0; +%%ductus:=true; +draw_tlserif(1,2,srad); % the stem +draw_fork(3,4,jut); % the foot +ductus:=false; +penlabels(1,2,3,4,100); +endchar; % end "l" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{m} +% The letter `m'. +% \begin{macrocode} +cmchar "AUncial letter m"; +beginchar("m", 2u#+hstretch*(2x_height#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +rt x1=1/4w; bot y1=0; +lft x2= pcshiftx; y2=h/2; +x4=w/2; y4=2/3h; +x3=0.5[x2,x4]; top y3=h; +x5=x4; y5=y1; +z6=z4; +x7=3/4w; top y7=h; +rt x8=w-pcshiftx; y8=y2; +lft x9=3/4w; y9=y1; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1..z2{up}..z3{right}..{down}z4; % left half +draw_tstem(4,5,srad); % middle stem +draw z6..z7{right}..z8{down}..{-pdir}z9; % right half +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,100); +endchar; % end "m" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{n} +% The letter `n'. +% \begin{macrocode} +cmchar "AUncial letter n"; +beginchar("n", 2u#+hstretch*(2jut#+x_height#), x_height#, 0.5desc_depth#); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% left stem +lft x1=pcshiftx+jut; top y1=h; +x2=x1; bot y2=0; +% right stem +rt x4=w-pcshiftx-jut; y4=y1; +x3=x4; bot y3=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tlserif(1,2,srad); % left stem +draw_tail(2,jut); +draw_istem(4,3,srad); % right stem +draw z1--z3; % diagonal +ductus:=false; +penlabels(1,2,3,4,100); +endchar; % end "n" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{o} +% The letter `o'. +% \begin{macrocode} +cmchar "AUncial letter o"; +beginchar("o", 2u#+hstretch*(7/6x_height#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +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 "o" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{p} +% The letter `p'. +% \begin{macrocode} +cmchar "AUncial letter p"; +beginchar("p", 2u#+hstretch*(7/6x_height#), x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% stem +lft x1=lft x2=pcshiftx+jut; top y1=h; bot y2=-1/2d; +% bowl +z3=z1; +rt x5=w-pcshiftx; y5=1/2h; +lft x7=rt x1; bot y7=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tlserif(1,2,srad); % stem +draw_tail(2,jut); +draw z3{pdir}..z5{down}..{-pdir}z7; % bowl +ductus:=false; +penlabels(1,2,3,4,5,6,7,100); +endchar; % end "p" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{q} +% The letter `q'. +% \begin{macrocode} +cmchar "AUncial letter q"; +beginchar("q", 2u#+hstretch*(7/6x_height#), x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% right stem +rt x1=rt x2=w-pcshiftx; top y1=h; bot y2=-1/2d; +% bowl +z3=z1; +lft x5=pcshiftx; y5=1/2h; +rt x7=lft x1; y7=0.1h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2; % right stem +draw_tail(2,jut); +draw z3{left}..z5{down}..{pdir}z7; % bowl +ductus:=false; +penlabels(1,2,3,4,5,6,7,100); +endchar; % end "q" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{r} +% The letter `r'. +% \begin{macrocode} +cmchar "AUncial letter r"; +beginchar("r", 2u#+hstretch*(4/3x_height#), x_height#, 1/2desc_depth#); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% stem +lft x1=lft x2=pcshiftx+jut; top y1=h; bot y2=0; +% bowl +lft x3=rt x1-thin; y3=y1; +rt x5=3/4w; y5=3/4h; +lft x7=rt x1; bot y7=1/3h; +% leg +z8=z7; +rt x9=w-pcshiftx; bot y9=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tlserif(1,2,srad); % stem +draw_tail(2,jut); +draw z3{pdir}..z5{down}..{-pdir}z7; % bowl +draw z8{-ppdir}..{right}z9; % leg +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 "AUncial letter s"; +beginchar("s", 2u#+hstretch*(x_height#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +rt x1=w-pcshiftx; top y1=h-thin; +x2=w/2; top y2=h; +lft x3=pcshiftx; y3=0.75h; +x4=w/2; y4=h/2; +rt x5=w-pcshiftx; y5=0.25h; +x6=w/2; bot y6=0; +lft x7= pcshiftx; bot y7 = thin; +path p[]; +p1=z1..z2{left}..z3{down}..z4..z5{down}..z6{left}..z7; +pair vec[]; +vec1= direction 0 of p1; +vec2= direction (length p1) of p1; +z11=z1 shifted vec1; +z17=z7 shifted -vec2; +y6'=top y1; y6''=bot y1; x6''=lft x1; +% the serif +pickup stylus; +rt x26=w-pcshiftx; top y26=y6'; +x27=x1; y27=y26-0.75jut; +lft x28=x6''; bot y28=y6''; +pickup quill; +%%ductus:=true; +if ductus: + pickup stylus; +fi +%%draw_serif(1,11,srad); +%%draw_serif(7,17,srad); +%%draw z1a..z2{left}..z3{down}..z4..z5{down}..z6{left}..z7a; +draw p1; % the curve +pickup stylus; +filldraw z27..z28--z26--cycle; % the serif +ductus:=false; +penlabels(1,2,3,4,5,6,7,11,17,26,27,28,100); +endchar; % end "s" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{t} +% The letter `t'. +% \begin{macrocode} +cmchar "AUncial letter t"; +beginchar("t", 2u#+hstretch*(4/3x_height#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +numeric alpha; alpha:=0.5jut; +pickup quill; +x1=x2=w/2; +top y1=h; bot y2=0; +lft x3=pcshiftx; rt x4=w-pcshiftx; y3=y4=y1; +x5=pcshiftx+alpha; y5=h-1/2thin; +x6=w-pcshiftx-1/2thin; y6=y5; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw z3--z4; % top bar +draw_triangle(5,2alpha); draw_rtriangle(6,2alpha); +ductus:=false; +penlabels(1,2,3,4,5,100); +endchar; % end "t" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{u} +% The letter `u'. +% \begin{macrocode} +cmchar "AUncial letter u"; +beginchar("u", 2u#+hstretch*(4/3x_height#+jut#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% left half first +lft x6=pcshiftx+jut; +top y6=h-2thin; +lft x7=pcshiftx; y7=h/2; +x8=0.5[x6,x1]; bot y8=0; +% the stem +rt x1=w-pcshiftx-jut; top y1=h; +x2=x1; bot y2=0; +% construction points for the curved part +x5=0.5[x8,x1]; y5=y8; +z5'=z5 shifted (w*pdir); +path p[]; +p1=z5--z5'; +p2=z1--z2; +z9= p2 intersectionpoint p1; +pair vec[]; +p3=z6..z7{down}..{right}z8; +vec3 = direction 0 of p3; +z16=z6 shifted vec3; +%%ductus:=true; +if ductus: + pickup stylus; +fi +% draw the serifs, then the bowls +draw_serif(6,16,srad); % left half +draw z6a..z7{down}..z8{right}..{pdir}z9; +draw_istem(1,2,srad); % right stem +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,11,16,100); +endchar; % end "u" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{v} +% The letter `v'. The right half of the `w' is used for the `v' (or vice-versa +% if you prefer). +% \begin{macrocode} +cmchar "AUncial letter v"; +beginchar("v", 2u#+hstretch*(7/6x_height#+jut#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% right side of W +numeric midx; midx:= pcshiftx; +lft x1=midx+jut; top y1=h; +x2=x1; y2=h/2; +rt x4=w-pcshiftx; y4=y2; +x3=0.5[x2,x4]; bot y3=0; +x5=x4-thick; y5=y1; +%%ductus:=true; +if ductus: + pickup stylus; +fi +% draw the serifs, then the bowls +draw_tlserif(1,2,srad); +draw z2{down}..z3{right}..z4{up}..z5; +ductus:=false; +penlabels(1,2,3,4,5,11,100); +endchar; % end "v" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{w} +% The letter `w'. This is a modern version as the font did not have a W. +% \begin{macrocode} +cmchar "AUncial letter w"; +beginchar("w", 2u#+hstretch*(2x_height#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% right side first +numeric midx; midx:= w/2-jut; +lft x1=midx+jut; top y1=h; +x2=x1; y2=h/2; +rt x4=w-pcshiftx; y4=y2; +x3=0.5[x2,x4]; bot y3=0; +x5=x4-thick; y5=y1; +% left side +lft x6=pcshiftx+jut; +top y6=h-2thin; +lft x7=pcshiftx; y7=y2; +x8=0.5[x7,x1]; y8=y3; +% construction points +x15=0.5[x8,x1]; y15=y8; +z15'=z15 shifted (w*pdir); +x2'=x2; y2'=y15; +path p[]; +p1=z1--z2'; +p2=z15--z15'; +z9= p2 intersectionpoint p1; +pair vec[]; +p3=z6..z7{down}..{right}z8; +vec3 = direction 0 of p3; +z16=z6 shifted vec3; +%%ductus:=true; +if ductus: + pickup stylus; +fi +% draw the serifs, then the bowls +draw_tlserif(1,2,srad); % right half +draw z2{down}..z3{right}..z4{up}..z5; +draw_serif(6,16,srad); % left half +draw z6a..z7{down}..z8{right}..z9; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,11,16,100); +endchar; % end "w" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{x} +% The letter `x'. +% \begin{macrocode} +cmchar "AUncial letter x"; +beginchar("x", 2u#+hstretch*(4/3x_height#+jut#), x_height#, 1/2desc_depth#); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% thick diagonal +lft x1=pcshiftx+jut; rt x2=w-pcshiftx-jut; +y1=h; y2=0; +% thin diagonal +lft x3=pcshiftx; bot y3=-d; +rt x5=w-pcshiftx; top y5=h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_istem(1,2,srad); % thick diagonal +draw z3..{pdir}z5; % thin diagonal +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,100); +endchar; % end "x" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{y} +% The letter `y'. This has a dot on top! +% \begin{macrocode} +cmchar "AUncial letter y"; +beginchar("y", 2u#+hstretch*(4/3x_height#), x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% left stroke +lft x1=pcshiftx+jut; top y1=h; +rt x2=3/4w; top y2=0; +% right stroke +pickup stylus; +rt x3=w-pcshiftx; top y3=h; +lft x4=pcshiftx; bot y4=-d; +x5=x3-3thin; y5=y3; +x7=x2-3/2thin; y7=y2; +pickup quill; +% the dot +x8=w/2; y8=h+jut; +if ductus: + pickup stylus; +fi +draw_tlserif(1,2,srad); % left stroke +draw_pdot(8,dot_size); % the dot +pickup stylus; +filldraw z3..z2..z4 & z4..z7..z5--cycle; % right stroke +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 "AUncial letter z"; +beginchar("z", 2u#+hstretch*(7/6x_height#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% bottom stroke +lft x4=pcshiftx; bot y4=0; +x6=w-pcshiftx; y6=0; +% top stroke +x1=x4; top y1=h; +rt x3=6/7w; y3=y1; +x11=pcshiftx+0.5jut; y11=h-thin/2; % y11=h-thin; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z3; % top stroke +draw_triangle(11,jut); +draw_fork(4,6,jut); +draw z4--z3; % diagonal +ductus:=false; +penlabels(1,2,3,4,5,6,100); +endchar; % end "z" + +% \end{macrocode} +% \end{routine} +% +% +% The end of this file +% \begin{macrocode} +% +% \end{macrocode} +% +% +% \subsection{The code for capital letters} +% +% \thisfont{} `capitals' were drawn with the same pen as for the minuscules, +% and the letters were merely larger versions of the minuscules. +% +% \begin{macrocode} +%<*maj> +% AUNCLU.MF Program file for Artificial Uncial `capitals' +% + +% \end{macrocode} +% +% +% \begin{routine}{A} +% The letter `A'. +% \begin{macrocode} +cmchar "AUncial letter A"; +beginchar("A", 2u#+hstretch*caprat*(x_height#+jut#), caprat*(x_height#), 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +lft x1=pcshiftx+2jut; rt x2=w-u-jut; +top y1=h; bot y2=0; +% for the bowl +z3=3/4[z2,z1]; +x5=lft x3; y5=bot y3; +z13=1/2[z2,z1]; +x15=lft x13; y15=bot y13; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_istem(1,2,srad); % the stem +pickup thickstylus; % for the bowl +lft x4=pcshiftx; bot y4=0; +z14=0.2[z4,z5]; +draw z14{pdir}...{z5-z4}z15; % bowl bottom +draw z5--z4; % bowl top +ductus:=false; +penlabels(1,2,3,4,5,6,14,15,100); +endchar; % end "A" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{B} +% The letter `B'. +% \begin{macrocode} +cmchar "AUncial letter B"; +beginchar("B", 2u#+hstretch*caprat*(x_height#+jut#), caprat*(x_height#), 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +lft x1=lft x2=pcshiftx+jut; +top y1=h; bot y2=0; +% lower bowl +rt x4=w-pcshiftx; y4=1/3h; +lft x5=rt x1+2thin; y5=2/3h; +z6=z1; +rt x7=0.67[x1,x4]; y7=y6; +x9=rt x7-thin; y9=h-thin; +x8=lft x5+thin; y8=bot y5+thin; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tlserif(1,2,srad); % the stem +draw z2{right}..z4{up}..{left}z5; % bottom bowl +draw z6--z7; % top bowl +pickup stylus; +draw z9--z8; +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 "AUncial letter C"; +beginchar("C", 2u#+hstretch*caprat*(x_height#), caprat*(x_height#), 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +lft x1=pcshiftx; rt x3=w-pcshiftx; y1=y3=h/2; +x2=x4=w/2; top y2=h; bot y4=0; +x5=x6=x3; +y5=0.1h; +top y6=0.95h; y6'=top y6; y6''=bot y6; x6''=lft x6; +% the serif +pickup stylus; +rt x16=w-pcshiftx; top y16=y6'; +x17=x6; y17=y16-jut; +lft x18=x6''; bot y18=y6''; +pickup quill; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z5{-pdir}..{left}z4..z1..z2..z6; +pickup stylus; +filldraw z17..z18--z16--cycle; +ductus:=false; +penlabels(1,2,3,4,5,6,16,17,18,100); +endchar; % end "C" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{D} +% The letter `D'. +% \begin{macrocode} +cmchar "AUncial letter D"; +beginchar("D", 2u#+hstretch*caprat*(4/3x_height#), caprat*(4/3x_height#), 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +lft x1=pcshiftx; rt x3=w-pcshiftx; +x2=x4=w/2; top y2=3/4h; bot y4=0; +y1=y3=0.5[y4,y2]; +lft x5=pcshiftx; top y5=h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z2{-pdir}..z1{down}..z4{right}..z3{up}..z5; +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 "AUncial letter E"; +beginchar("E", 2u#+hstretch*caprat*(x_height#), caprat*(x_height#), 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +lft x1=pcshiftx; rt x3=w-pcshiftx; y1=y3=h/2; +x2=x4=w/2; top y2=h; bot y4=0; +x5=x6=x3; +y5=0.1h; +top y6=0.95h; y6'=top y6; y6''=bot y6; x6''=lft x6; +% the serif +pickup stylus; +rt x16=w-pcshiftx; top y16=y6'; +x17=x6; y17=y16-jut; +lft x18=x6''; bot y18=y6''; +pickup quill; +% the bar +x7=x1; y7=y1; +x8=w-pcshiftx; y8=y7; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z5{-pdir}..{left}z4..z1..z2..z6; % the bowl +pickup stylus; +filldraw z17..z18--z16--cycle; % the serif +draw_fork(7,8,jut); % the bar +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,10,16,17,18,100); +endchar; % end "E" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{F} +% The letter `F'. +% \begin{macrocode} +cmchar "AUncial letter F"; +beginchar("F", 2u#+hstretch*caprat*(x_height#), caprat*(x_height#), + caprat*(desc_depth#)); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% stem +lft x1=lft x2=pcshiftx+jut; +top y1=h; bot y2=-d/2; +% bars +x3=x4=x1; y3=y1; bot y4=0; +rt x5= rt x6=w-pcshiftx; y5=y3; y6=y4; +% triangles +x15=x16=rt x5-1/2thin; +y15=y5; y16=y6; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tlserif(1,2,srad); % stem +draw_tail(2,jut); +draw z3--z5; % top bar +draw_rtriangle(15,jut); +draw z4--z6; % bottom bar +draw_rtriangle(16,jut); +ductus:=false; +penlabels(1,2,3,4,5,6,100); +endchar; % end "F" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{G} +% The letter `G'. +% \begin{macrocode} +cmchar "AUncial letter G"; +beginchar("G", 2u#+hstretch*caprat*(x_height#), caprat*(x_height#), + caprat*(desc_depth#)); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% the bowl +lft x1=pcshiftx; rt x3=w-pcshiftx; y1=y3=h/2; +x2=x4=w/2; top y2=h; bot y4=0; +x5=x6=x3; +y5=0.1h; +top y6=0.95h; y6'=top y6; y6''=bot y6; x6''=lft x6; +% the serif +pickup stylus; +rt x16=w-pcshiftx; top y16=y6'; +x17=x6; y17=y16-jut; +lft x18=x6''; bot y18=y6''; +pickup quill; +% the stem +x7=rt x5-1/2thin; y7=top y5-1/2thin; +pickup stylus; +lft x8=w/2; bot y8=-d; +pickup quill; +pair vec[]; vec1:=z7-z8; vec2:=z8-z7; +y21=y8+3/2thick; z21=whatever[z8,z7]; +y22=y8+ thick; z22=whatever[z8,z7]; +x23=x8-thick; y23=y8; +x24=x23+1/2thick; y24=y23+1/2thick; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z5{-pdir}..{left}z4..z1..z2..z6; % the bowl +pickup stylus; +filldraw z17..z18--z16--cycle; % the serif +draw z7--z22; % the stem +filldraw z22{vec2}..{left}z23--z24{right}..{vec1}z21--cycle; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,16,17,18,21,22,23,24,100); +endchar; % end "G" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{H} +% The letter `H'. +% \begin{macrocode} +cmchar "AUncial letter H"; +beginchar("H", 2u#+hstretch*caprat*(x_height#+jut#), caprat*(asc_height#), 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +lft x1=lft x2=pcshiftx+jut; +top y1=h; bot y2=0; +% bowl +rt x5=w-pcshiftx; y5=3/8h; +lft x6=2/3w; bot y6=0; +x4=0.5[x1,x5]; top y4=3/4h; +x4'=0.5[x4,x1]; y4'=y4; +z4''=z4' shifted (-w*pdir); +z3'=whatever[z4',z4'']=whatever[z1,z2]; +x3=rt x3'; y3=y3'; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_istem(1,2,srad); % stem +draw z3{pdir}..z4{right}..z5{down}..z6; % bowl +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 "AUncial letter I"; +beginchar("I", 2u#+hstretch*(thick#+jut#), caprat*(x_height#), 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +lft x1=lft x2=pcshiftx+jut; +top y1=h; bot y2=0; +%%ductus:=true; +draw_tlserif(1,2,srad); +draw_tail(2,jut); +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 "AUncial letter J"; +beginchar("J", 2u#+hstretch*(thick#+jut#), caprat*(x_height#), + caprat*(desc_depth#)); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +lft x1=lft x2=pcshiftx+jut; +top y1=h; bot y2=-1/2d; +%%ductus:=true; +draw_tlserif(1,2,srad); +draw_tail(2,jut); +ductus:=false; +penlabels(1,2,100); +endchar; % end "J" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{K} +% The letter `K'. +% \begin{macrocode} +cmchar "AUncial letter K"; +beginchar("K", 2u#+hstretch*caprat*(4/3x_height#), caprat*(asc_height#), 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +lft x1=lft x2=pcshiftx+jut; +top y1=h; bot y2=0; +% for the flick +numeric rise,fall,fjut; +x3=rt x1; y3=5/8h; +rise:=1/6h; fall:=-rise/2; fjut:=1/2w; +% for the leg +%%x4=x1; y4=y3; +z4=z3; +x5=w-pcshiftx-jut; y5=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tlserif(1,2,srad); % stem +draw_tail(2,jut); +draw_flick(3,rise,fall,fjut); % upper diag +draw_tstem(4,5,srad); % lower diag +ductus:=false; +penlabels(1,2,3,4,5,100); +endchar; % end "K" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{L} +% The letter `L'. +% \begin{macrocode} +cmchar "AUncial letter L"; +beginchar("L", 2u#+hstretch*caprat*(x_height#), caprat*(asc_height#), 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +lft x1=lft x2=pcshiftx+jut; +top y1=h; bot y2=0; +z3=z2; +x4=w-u; y4=0; +%%ductus:=true; +draw_tlserif(1,2,srad); % the stem +draw_fork(3,4,jut); % the foot +ductus:=false; +penlabels(1,2,3,4,100); +endchar; % end "L" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{M} +% The letter `M'. +% \begin{macrocode} +cmchar "AUncial letter M"; +beginchar("M", 2u#+hstretch*caprat*(2x_height#), caprat*(x_height#), 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +rt x1=1/4w; bot y1=0; +lft x2= pcshiftx; y2=h/2; +x4=w/2; y4=2/3h; +x3=0.5[x2,x4]; top y3=h; +x5=x4; y5=y1; +z6=z4; +x7=3/4w; top y7=h; +rt x8=w-pcshiftx; y8=y2; +lft x9=3/4w; y9=y1; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1..z2{up}..z3{right}..{down}z4; % left half +draw_tstem(4,5,srad); % middle stem +draw z6..z7{right}..z8{down}..{-pdir}z9; % right half +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,100); +endchar; % end "M" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{N} +% The letter `N'. +% \begin{macrocode} +cmchar "AUncial letter N"; +beginchar("N", 2u#+hstretch*caprat*(2jut#+x_height#), caprat*(x_height#), + caprat*(0.5desc_depth#)); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% left stem +lft x1=pcshiftx+jut; top y1=h; +x2=x1; bot y2=0; +% right stem +rt x4=w-pcshiftx-jut; y4=y1; +x3=x4; bot y3=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tlserif(1,2,srad); % left stem +draw_tail(2,jut); +draw_istem(4,3,srad); % right stem +draw z1--z3; % diagonal +ductus:=false; +penlabels(1,2,3,4,100); +endchar; % end "N" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{O} +% The letter `O'. +% \begin{macrocode} +cmchar "AUncial letter O"; +beginchar("O", 2u#+hstretch*caprat*(7/6x_height#), caprat*(x_height#), 0); +adjust_fit(0,0); +pcshiftx := u; +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 "O" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{P} +% The letter `P'. +% \begin{macrocode} +cmchar "AUncial letter P"; +beginchar("P", 2u#+hstretch*caprat*(7/6x_height#), caprat*(x_height#), + caprat*(desc_depth#)); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% stem +lft x1=lft x2=pcshiftx+jut; top y1=h; bot y2=-1/2d; +% bowl +z3=z1; +rt x5=w-pcshiftx; y5=1/2h; +lft x7=rt x1; bot y7=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tlserif(1,2,srad); % stem +draw_tail(2,jut); +draw z3{pdir}..z5{down}..{-pdir}z7; % bowl +ductus:=false; +penlabels(1,2,3,4,5,6,7,100); +endchar; % end "P" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{Q} +% The letter `Q'. +% \begin{macrocode} +cmchar "AUncial letter Q"; +beginchar("Q", 2u#+hstretch*caprat*(7/6x_height#), caprat*(x_height#), + caprat*(desc_depth#)); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% right stem +rt x1=rt x2=w-pcshiftx; top y1=h; bot y2=-1/2d; +% bowl +z3=z1; +lft x5=pcshiftx; y5=1/2h; +rt x7=lft x1; y7=0.1h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2; % right stem +draw_tail(2,jut); +draw z3{left}..z5{down}..{pdir}z7; % bowl +ductus:=false; +penlabels(1,2,3,4,5,6,7,100); +endchar; % end "Q" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{R} +% The letter `R'. +% \begin{macrocode} +cmchar "AUncial letter R"; +beginchar("R", 2u#+hstretch*caprat*(4/3x_height#), caprat*(x_height#), + caprat*(1/2desc_depth#)); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% stem +lft x1=lft x2=pcshiftx+jut; top y1=h; bot y2=0; +% bowl +lft x3=rt x1-thin; y3=y1; +rt x5=3/4w; y5=3/4h; +lft x7=rt x1; bot y7=1/3h; +% leg +z8=z7; +rt x9=w-pcshiftx; bot y9=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tlserif(1,2,srad); % stem +draw_tail(2,jut); +draw z3{pdir}..z5{down}..{-pdir}z7; % bowl +draw z8{-ppdir}..{right}z9; % leg +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 "AUncial letter S"; +beginchar("S", 2u#+hstretch*caprat*(x_height#), caprat*(x_height#), 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +rt x1=w-pcshiftx; top y1=h-thin; +x2=w/2; top y2=h; +lft x3=pcshiftx; y3=0.75h; +x4=w/2; y4=h/2; +rt x5=w-pcshiftx; y5=0.25h; +x6=w/2; bot y6=0; +lft x7= pcshiftx; bot y7 = thin; +path p[]; +p1=z1..z2{left}..z3{down}..z4..z5{down}..z6{left}..z7; +pair vec[]; +vec1= direction 0 of p1; +vec2= direction (length p1) of p1; +z11=z1 shifted vec1; +z17=z7 shifted -vec2; +y6'=top y1; y6''=bot y1; x6''=lft x1; +% the serif +pickup stylus; +rt x26=w-pcshiftx; top y26=y6'; +x27=x1; y27=y26-0.75jut; +lft x28=x6''; bot y28=y6''; +pickup quill; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw p1; % the curve +pickup stylus; +filldraw z27..z28--z26--cycle; % the serif +ductus:=false; +penlabels(1,2,3,4,5,6,7,11,17,26,27,28,100); +endchar; % end "S" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{T} +% The letter `T'. +% \begin{macrocode} +cmchar "AUncial letter T"; +beginchar("T", 2u#+hstretch*caprat*(4/3x_height#), caprat*(x_height#), 0); +adjust_fit(0,0); +pcshiftx := u; +numeric alpha; alpha:=0.5jut; +pickup quill; +x1=x2=w/2; +top y1=h; bot y2=0; +lft x3=pcshiftx; rt x4=w-pcshiftx; y3=y4=y1; +x5=pcshiftx+alpha; y5=h-1/2thin; +x6=w-pcshiftx-1/2thin; y6=y5; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw z3--z4; % top bar +draw_triangle(5,2alpha); draw_rtriangle(6,2alpha); +ductus:=false; +penlabels(1,2,3,4,5,100); +endchar; % end "T" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{U} +% The letter `U'. +% \begin{macrocode} +cmchar "AUncial letter U"; +beginchar("U", 2u#+hstretch*caprat*(4/3x_height#+jut#), caprat*(x_height#), 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% left half first +lft x6=pcshiftx+jut; +top y6=h-2thin; +lft x7=pcshiftx; y7=h/2; +x8=0.5[x6,x1]; bot y8=0; +% the stem +rt x1=w-pcshiftx-jut; top y1=h; +x2=x1; bot y2=0; +% construction points for the curved part +x5=0.5[x8,x1]; y5=y8; +z5'=z5 shifted (w*pdir); +path p[]; +p1=z5--z5'; +p2=z1--z2; +z9= p2 intersectionpoint p1; +pair vec[]; +p3=z6..z7{down}..{right}z8; +vec3 = direction 0 of p3; +z16=z6 shifted vec3; +%%ductus:=true; +if ductus: + pickup stylus; +fi +% draw the serifs, then the bowls +draw_serif(6,16,srad); % left half +draw z6a..z7{down}..z8{right}..{pdir}z9; +draw_istem(1,2,srad); % right stem +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,11,16,100); +endchar; % end "U" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{V} +% The letter `V'. The right half of the `w' is used for the `v' (or vice-versa +% if you prefer). +% \begin{macrocode} +cmchar "AUncial letter V"; +beginchar("V", 2u#+hstretch*caprat*(7/6x_height#+jut#), caprat*(x_height#), 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% right side of W +numeric midx; midx:= pcshiftx; +lft x1=midx+jut; top y1=h; +x2=x1; y2=h/2; +rt x4=w-pcshiftx; y4=y2; +x3=0.5[x2,x4]; bot y3=0; +x5=x4-thick; y5=y1; +%%ductus:=true; +if ductus: + pickup stylus; +fi +% draw the serifs, then the bowls +draw_tlserif(1,2,srad); +draw z2{down}..z3{right}..z4{up}..z5; +ductus:=false; +penlabels(1,2,3,4,5,11,100); +endchar; % end "V" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{W} +% The letter `W'. This is a modern version as the font did not have a W. +% \begin{macrocode} +cmchar "AUncial letter W"; +beginchar("W", 2u#+hstretch*caprat*(2x_height#), caprat*(x_height#), 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% right side first +numeric midx; midx:= w/2-jut; +lft x1=midx+jut; top y1=h; +x2=x1; y2=h/2; +rt x4=w-pcshiftx; y4=y2; +x3=0.5[x2,x4]; bot y3=0; +x5=x4-thick; y5=y1; +% left side +lft x6=pcshiftx+jut; +top y6=h-2thin; +lft x7=pcshiftx; y7=y2; +x8=0.5[x7,x1]; y8=y3; +% construction points +x15=0.5[x8,x1]; y15=y8; +z15'=z15 shifted (w*pdir); +x2'=x2; y2'=y15; +path p[]; +p1=z1--z2'; +p2=z15--z15'; +z9= p2 intersectionpoint p1; +pair vec[]; +p3=z6..z7{down}..{right}z8; +vec3 = direction 0 of p3; +z16=z6 shifted vec3; +%%ductus:=true; +if ductus: + pickup stylus; +fi +% draw the serifs, then the bowls +draw_tlserif(1,2,srad); % right half +draw z2{down}..z3{right}..z4{up}..z5; +draw_serif(6,16,srad); % left half +draw z6a..z7{down}..z8{right}..z9; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,11,16,100); +endchar; % end "W" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{X} +% The letter `X'. +% \begin{macrocode} +cmchar "AUncial letter X"; +beginchar("X", 2u#+hstretch*caprat*(4/3x_height#+jut#), caprat*(x_height#), + caprat*(1/2desc_depth#)); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% thick diagonal +lft x1=pcshiftx+jut; rt x2=w-pcshiftx-jut; +y1=h; y2=0; +% thin diagonal +lft x3=pcshiftx; bot y3=-d; +rt x5=w-pcshiftx; top y5=h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_istem(1,2,srad); % thick diagonal +draw z3..{pdir}z5; % thin diagonal +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,100); +endchar; % end "X" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{Y} +% The letter `Y'. This has a dot on top! +% \begin{macrocode} +cmchar "AUncial letter Y"; +beginchar("Y", 2u#+hstretch*caprat*(4/3x_height#), caprat*(x_height#), + caprat*(desc_depth#)); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% left stroke +lft x1=pcshiftx+jut; top y1=h; +rt x2=3/4w; top y2=0; +% right stroke +pickup stylus; +rt x3=w-pcshiftx; top y3=h; +lft x4=pcshiftx; bot y4=-d; +x5=x3-3thin; y5=y3; +x7=x2-3/2thin; y7=y2; +pickup quill; +% the dot +x8=w/2; y8=h+jut; +if ductus: + pickup stylus; +fi +draw_tlserif(1,2,srad); % left stroke +draw_pdot(8,dot_size); % the dot +pickup stylus; +filldraw z3..z2..z4 & z4..z7..z5--cycle; % right stroke +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 "AUncial letter Z"; +beginchar("Z", 2u#+hstretch*caprat*(7/6x_height#), caprat*(x_height#), 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% bottom stroke +lft x4=pcshiftx; bot y4=0; +x6=w-pcshiftx; y6=0; +% top stroke +x1=x4; top y1=h; +rt x3=6/7w; y3=y1; +x11=pcshiftx+0.5jut; y11=h-thin/2; % y11=h-thin; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z3; % top stroke +draw_triangle(11,jut); +draw_fork(4,6,jut); +draw z4--z3; % diagonal +ductus:=false; +penlabels(1,2,3,4,5,6,100); +endchar; % end "Z" + +% \end{macrocode} +% \end{routine} +% +% +% +% +% The end of this file +% \begin{macrocode} +% +% \end{macrocode} +% +% +% +% \subsection{The punctuation file} +% +% The main punctuation marks are defined in this file. +% +% \begin{macrocode} +%<*punct> +% AUNCLPUNCT.MF This file contains punctuation marks + +% \end{macrocode} +% +% +% \begin{routine}{,} +% The `,' character. +% \begin{macrocode} + +cmchar "Uncial Comma"; +beginchar(",",2u#+hstretch*(comma_width#+dot_size#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=u; +x1=w-pcshiftx-(0.5hstretch*dot_size); y1=h/2; +draw_pcomma(1,dot_size,comma_width); +penlabels(1); +endchar; % end of "," + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{.} +% The `.' character. +% \begin{macrocode} + +cmchar "Uncial Period"; +beginchar(".",2u#+hstretch*(dot_size#),x_height#,0); +pcshiftx:=u; +x1=w/2; y1=h/2; +draw_pdot(1,dot_size); +penlabels(1); +endchar; % end of "." + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{:} +% The `:' character. +% \begin{macrocode} + +cmchar "Uncial Colon"; +beginchar(":",2u#+hstretch*(dot_size#),x_height#,0); +pcshiftx:=u; +x1=x2=w/2; y1=2/3h; y2=1/3h; +draw_pdot(1,dot_size); +draw_pdot(2,dot_size); +penlabels(1,2); +endchar; % end ":" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{;} +% The `;' character. +% \begin{macrocode} + +cmchar "Uncial Semicolon"; +beginchar(";",2u#+hstretch*(comma_width#+dot_size#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=u; +x1=x2=w-pcshiftx-(0.5hstretch*dot_size); y1=2/3h; y2=1/3h; +draw_pdot(1,dot_size); +draw_pcomma(2,dot_size,comma_width); +penlabels(1,2); +endchar; % end of ";" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{'} +% The `'' character. +% \begin{macrocode} + +cmchar "Uncial Apostrophe"; +beginchar("'",2u#+hstretch*(comma_width#+dot_size#),4/3x_height#,0); +adjust_fit(0,0); +pcshiftx:=u; +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 "Uncial Reverse apostrophe"; +beginchar("`",2u#+hstretch*(comma_width#+dot_size#),4/3x_height#,0); +adjust_fit(0,0); +pcshiftx:=u; +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} +% +% \end{macrocode} +% +% +% \subsection{The ligatures and dashes file} +% +% The ligatured punctuation marks and dashes are defined in this file. +% \begin{macrocode} +%<*lig> +% AUNCLLIG.MF Uncial ligatured 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 "Uncial closing quotes"; +beginchar(oct"042",2u#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0); +adjust_fit(0,0); +pcshiftx:=u; +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 "Uncial opening quotes"; +beginchar(oct"134",2u#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0); +adjust_fit(0,0); +pcshiftx:=u; +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 `-' character. +% \begin{macrocode} + +cmchar "Uncial hyphen"; +beginchar("-",u#+hstretch*(0.8x_height#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=u/2; +numeric alpha; alpha:=w/8; +pickup quill; +lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; +x11=lft x1+alpha/2; y11=top y1-0.5thin; +x12=rt x2; y12=bot y1+0.5thin; +draw z1--z2; % bar +draw_triangle(11,alpha); +draw_rutriangle(12,alpha); +penlabels(1,2); +endchar; % end of "-" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{--} +% The -- ligature. +% \begin{macrocode} + +cmchar "Uncial en dash"; +beginchar(oct"173",u#+hstretch*(x_height#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=u/2; +numeric alpha; alpha:=w/8; +pickup quill; +lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; +x11=lft x1+alpha/2; y11=top y1-0.5thin; +x12=rt x2; y12=bot y1+0.5thin; +draw z1--z2; % bar +draw_triangle(11,alpha); +draw_rutriangle(12,alpha); +penlabels(1,2); +endchar; % end of "--" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{---} +% The `---' ligature. The em dash is twice the width of the en dash. +% \begin{macrocode} + +cmchar "Uncial em dash"; +beginchar(oct"174",u#+hstretch*(2x_height#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=u/2; +numeric alpha; alpha:=w/8; +pickup quill; +lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; +x11=lft x1+alpha/2; y11=top y1-0.5thin; +x12=rt x2; y12=bot y1+0.5thin; +draw z1--z2; % bar +draw_triangle(11,alpha); +draw_rutriangle(12,alpha); +penlabels(1,2); +endchar; % end of "---" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{&} +% The ampersand (which is really an `et' ligature). +% \begin{macrocode} + +cmchar "Uncial ampersand"; +beginchar("&", 2u#+hstretch*(7/4x_height#), x_height#, 0.5desc_depth#); +adjust_fit(0,0); +pcshiftx:=u; +numeric alpha; alpha:=4/7w-u; +pickup quill; +% for the e part +lft x1=pcshiftx; rt x3= alpha; y1=y3=h/2; +x2=x4=alpha/2; top y2=h; bot y4=0; +x5=x6=x3; +y5=0.1h; +top y6=0.95h; y6'=top y6; y6''=bot y6; x6''=lft x6; +pickup stylus; +rt x16=alpha; top y16=y6'; +x17=x6; y17=y16-jut; +lft x18=x6''; bot y18=y6''; +pickup quill; +% the bar +x7=x1; y7=y1; +x8=w-pcshiftx; y8=y7; +% the t part +lft x31=alpha+2thin; y31=y8; +x32=x31; bot y32=-d; +x33=rt x8-0.5thin; y33=top y31-0.5thin; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z5{-pdir}..{left}z4..z1..z2..z6; % the bowl +draw_tstem(31,32,srad); % t stem +draw z7--z8; % the (top) bar +draw_rtriangle(33,jut); % t bar serif +pickup stylus; +filldraw z17..z18--z16--cycle; % e serif +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,10,16,17,18,31,32,33); +endchar; % end of "&" + +% \end{macrocode} +% \end{routine} +% +% +% The end of this file. +% \begin{macrocode} +% +% \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> +% AUNCLDIG.MF Program file for Artificial Uncial digits +% + +% \end{macrocode} +% +% +% \begin{routine}{1} +% The digit `1'. +% \begin{macrocode} +cmchar "AUncial digit 1"; +beginchar("1", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +x1=x2=w/2; +y1=h; bot y2=0; +%%ductus:=true; +draw_tlserif(1,2,srad); +draw_tail(2,jut); +ductus:=false; +penlabels(1,2,100); +endchar; % end "1" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{2} +% The digit `2'. +% \begin{macrocode} +cmchar "AUncial digit 2"; +beginchar("2", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% stem +lft x1=pcshiftx; y1=3/4h; +x2=1/2w; top y2= h+o; +rt x3=w-pcshiftx; y3=3/4h; +% foot +lft x5=pcshiftx; bot y5=0; +rt x6=w-pcshiftx; y6=y5; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_fork(5,6,jut); % foot +draw z1{up}..z2{right}..z3{down}..{down}z5; % curve +ductus:=false; +penlabels(1,2,3,4,5,6,100); +endchar; % end "2" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{3} +% The digit `3'. +% \begin{macrocode} +cmchar "AUncial 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; x7=x6; +% y values +y3=1/4h; y10=3/4h; +y6=0.5[y3,y10]; y7=y6; +bot y4=-thin; top y9=h+thin; +y5=0.5[y4,y6]; +y8=0.5[y7,y9]; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z3{down}..z4{right}..z5{up}...{left}z6; % bottom bowl +draw z7{right}...z8{up}..z9{left}..{down}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 "AUncial digit 4"; +beginchar("4", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% the stem +x1=x2=w-pcshiftx-jut; +y1=h; bot y2=0; +% the crossbar +lft x3=pcshiftx; y3=0.33h; +rt x4=w-pcshiftx; y4=y3; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % main stem +draw_wave(3,4,thin); % crossbar +draw z3wl--z1; % diagonal +ductus:=false; +penlabels(1,2,3,4,100); +endchar; % end "4" + +% \end{macrocode} +% \end{routine} +% +% +% +% \begin{routine}{5} +% The digit `5'. +% \begin{macrocode} +cmchar "AUncial digit 5"; +beginchar("5", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +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; +x8=w-pcshiftx; y8=h-0.5thin; +%%ductus:=true; +if ductus: + pickup stylus; +fi +%%draw_wave(2,1,thin); % top squiggle +draw z2--z1; % top bar +draw_rtriangle(8,3/4jut); +draw z3{pdir}..z5{down}..z6{left}..z7; % curve +draw z2--z3; % vertical +ductus:=false; +penlabels(1,2,3,4,5,6,7,100); +endchar; % end "5" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{6} +% The digit `6'. +% \begin{macrocode} +cmchar "AUncial 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; +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; +x8=w-pcshiftx; y8=h-0.5thin; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1{left}..z3{down}..z4{right}..z5{up}..{-pdir}z6; +draw_rtriangle(8,3/4jut); +ductus:=false; +penlabels(1,2,3,4,5,6,8,100); +endchar; % end "6" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{7} +% The digit `7'. +% \begin{macrocode} +cmchar "AUncial digit 7"; +beginchar("7", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% top bar +lft x1=pcshiftx; +rt x2=w-pcshiftx; +top y1=top y2=h; +x8=pcshiftx+3/8jut; y8=h-0.5thin; +% bowed leg +x4=w/2; bot y4=0; +x3=0.5[x2,x4]-3thin; y3=0.5[y2,y4]; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2; % top bar +draw_triangle(8,3/4jut); +draw z2..z3..z4; % leg +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,100); +endchar; % end "7" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{8} +% The digit `8'. +% \begin{macrocode} +cmchar "AUncial 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 "AUncial 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 "Uncial 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; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,100); +endchar; % end "0" + +% \end{macrocode} +% \end{routine} +% +% +% +% +% The end of this file. +% \begin{macrocode} +% +% \end{macrocode} +% +% \section{The font definition files} \label{sec:fd} +% +% The font comes in normal and bold weights only. +% +% \begin{macrocode} +%<*fdot1> +\DeclareFontFamily{OT1}{auncl}{} + \DeclareFontShape{OT1}{auncl}{m}{n}{ <-8.5> auncl7 <8.5-15> auncl10 <15-> auncl17 }{} + \DeclareFontShape{OT1}{auncl}{m}{sl}{ <-> sub * auncl/m/n }{} + \DeclareFontShape{OT1}{auncl}{m}{it}{ <-> sub * auncl/m/n }{} + \DeclareFontShape{OT1}{auncl}{m}{sc}{ <-> sub * auncl/m/n }{} + \DeclareFontShape{OT1}{auncl}{m}{u}{ <-> sub * auncl/m/n }{} + \DeclareFontShape{OT1}{auncl}{bx}{n}{ <-8.5> aunclb7 <8.5-15> aunclb10 <15-> aunclb17 }{} + \DeclareFontShape{OT1}{auncl}{bx}{it}{ <-> sub * auncl/bx/n }{} + \DeclareFontShape{OT1}{auncl}{bx}{sl}{ <-> sub * auncl/bx/n }{} + \DeclareFontShape{OT1}{auncl}{b}{n}{ <-> sub * auncl/bx/n }{} +% +% \end{macrocode} +% +% +% \begin{macrocode} +%<*fdt1> +\DeclareFontFamily{T1}{auncl}{} + \DeclareFontShape{T1}{auncl}{m}{n}{ <-8.5> auncl7 <8.5-15> auncl10 <15-> auncl17 }{} + \DeclareFontShape{T1}{auncl}{m}{sl}{ <-> sub * auncl/m/n }{} + \DeclareFontShape{T1}{auncl}{m}{it}{ <-> sub * auncl/m/n }{} + \DeclareFontShape{T1}{auncl}{m}{sc}{ <-> sub * auncl/m/n }{} + \DeclareFontShape{T1}{auncl}{m}{u}{ <-> sub * auncl/m/n }{} + \DeclareFontShape{T1}{auncl}{bx}{n}{ <-8.5> aunclb7 <8.5-15> aunclb10 <15-> aunclb17 }{} + \DeclareFontShape{T1}{auncl}{bx}{it}{ <-> sub * auncl/bx/n }{} + \DeclareFontShape{T1}{auncl}{bx}{sl}{ <-> sub * auncl/bx/n }{} + \DeclareFontShape{T1}{auncl}{b}{n}{ <-> sub * auncl/bx/n }{} +% +% \end{macrocode} +% +% \section{The package code} \label{sec:code} +% +% \subsection{The \Lpack{auncial} package} +% +% The \Lpack{auncial} 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{auncial}[1999/05/22 v1.0 package for Artificial Uncial 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}{\aunclfamily} +% Selects the \thisfont{} font family in the OT1 or T1 encoding. +% \begin{macrocode} +\ifx\Tienc\encodingdefault + \newcommand{\aunclfamily}{\usefont{T1}{auncl}{m}{n}} +\else + \newcommand{\aunclfamily}{\usefont{OT1}{auncl}{m}{n}} +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\textuncl} +% Text command for the \thisfont{} font family. +% \begin{macrocode} +\DeclareTextFontCommand{\textauncl}{\aunclfamily} +% \end{macrocode} +% \end{macro} +% +% The end of this package. +% \begin{macrocode} +% +% \end{macrocode} +% +% \subsection{The \Lpack{allauncl} package} +% +% The \Lpack{allauncl} 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{auncial} package. +% \begin{macrocode} +%<*uscall> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{allauncl}[1999/05/22 v1.0 package for all Artificial Uncial fonts] +\RequirePackage{auncial} +% \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}{auncl} +\renewcommand{\sfdefault}{auncl} +\renewcommand{\ttdefault}{auncl} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The `leading' in the book-hand is the same as the |x-height|, which is 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 \\ +% 6 & 2.58 & 3.61 \\ +% 7 & 3.00 & 4.22 \\ +% 8 & 3.44 & 4.82 \\ +% 9 & 3.86 & 5.40 \\ +% 10 & 4.31 & 6.03 \\ +% 11 & 4.74 & 6.64 \\ +% 12 & 5.17 & 7.24 \\ +% 14 & 6.03 & 8.44 \\ +% 17 & 7.44 & 10.42 \\ +% 20 & 8.75 & 12.25 \\ +% 25 & 10.94 & 15.32 \\ \hline +% \end{tabular} +% \end{table} +% +% \begin{macro}{\auncial@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|. +% +% \begin{macrocode} +\newcommand{\auncial@baselineskip@table}{% + <\@vpt>6.6% + <\@vipt>7.9% + <\@viipt>9.3% + <\@viiipt>10.6% + <\@ixpt>11.9% + <\@xpt>13.3% + <\@xipt>14.6% + <\@xiipt>16.5% + <\@xivpt>18.6% + <\@xviipt>22.9% + <\@xxpt>26.9% + <\@xxvpt>33.7} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\auncial@new@setfontsize} +% This is a macro that replaces the |\@setfontsize| macro which is called by +% the font size changing commands. +% \begin{macrocode} +\newcommand{\auncial@new@setfontsize}[3]{% + \edef\@tempa{\def\noexpand\@tempb####1<#2}% + \@tempa>##2<##3\@nil{\def\auncial@baselineskip@value{##2}}% + \edef\@tempa{\noexpand\@tempb\auncial@baselineskip@table<#2}% + \@tempa><\@nil + \ifx\auncial@baselineskip@value\@empty + \def\auncial@baselineskip@value{#3}% + \fi + \auncial@old@setfontsize{#1}{#2}\auncial@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\auncial@old@setfontsize=\@setfontsize + \let\@setfontsize=\auncial@new@setfontsize} +\AtBeginDocument{\normalsize} +% \end{macrocode} +% +% +% The end of this package. +% \begin{macrocode} +% +% \end{macrocode} +% +% +% +% \bibliographystyle{alpha} +% \renewcommand{\refname}{Bibliography} +% \begin{thebibliography}{GMS94} +% \addcontentsline{toc}{section}{\refname} +% +% \bibitem[And69]{ANDERSON69} +% Donald M.~Anderson. +% \newblock {\em The Art of Written Forms: The Theory and Practice of Calligraphy}. +% \newblock Holt, Rinehart and Winston, 1969. +% +% \bibitem[Bol95]{BOLOGNA95} +% Giulia Bologna. +% \newblock {\em Illuminated Manuscripts: The Book before Gutenberg}. +% \newblock Crescent Books, 1995. +% +% \bibitem[Day95]{DAY95} +% Lewis F.~Day. +% \newblock {\em Alphabets Old \& New}. +% \newblock (3rd edition originally published by B.~T.~Batsford, 1910) +% \newblock Senate, 1995. +% +% \bibitem[Dro80]{DROGIN80} +% Marc Drogin. +% \newblock {\em Medieval Calligraphy: Its History and Technique}. +% \newblock Allenheld, Osmun \& Co., 1980. +% +% \bibitem[Dru95]{DRUCKER95} +% Johanna Drucker. +% \newblock {\em The Alphabetic Labyrinth}. +% \newblock Thames \& Hudson, 1995. +% +% \bibitem[Fir93]{FIRMAGE93} +% Richard A.~Firmage. +% \newblock {\em The Alphabet Abecedarium}. +% \newblock David R~Goodine, 1993. +% +% \bibitem[Fli98]{LETTRINE} +% Daniel Flipo. +% \newblock {\em The LETTRINE package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1998. +% +% \bibitem[Har95]{HARRIS95} +% David Harris. +% \newblock {\em The Art of Calligraphy}. +% \newblock DK Publishing, 1995. +% +% \bibitem[Jen95]{BETON} +% Frank Jensen. +% \newblock {\em The BETON package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1995. +% +% \bibitem[Joh71]{JOHNSTON75} +% Edward Johnston (ed. Heather Child). +% \newblock {\em Formal Penship and Other Papers}. +% \newblock Penthalic, 1971. +% +% \bibitem[Knu87]{CM} +% Donald E.~Knuth. +% \newblock {\em Computer Modern Typefaces}. +% \newblock Addison-Wesley, 1987. +% +% \bibitem[Knu92]{METAFONT} +% Donald E.~Knuth. +% \newblock {\em The METAFONTbook}. +% \newblock Addison-Wesley, 1992. +% +% \bibitem[GMS94]{GOOSSENS94} +% Michel Goossens, Frank Mittelbach, and Alexander Samarin. +% \newblock {\em The LaTeX Companion}. +% \newblock Addison-Wesley Publishing Company, 1994. +% +% \bibitem[Tho75]{THOMAS75} +% Alan G.~Thomas. +% \newblock {\em Great Books and Book Collectors}. +% \newblock Weidenfield and Nichoson, 1975. +% +% \bibitem[Wil99]{DOCMFP} +% Peter R.~Wilson. +% \newblock {\em The DOCMFP Package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1999. +% +% \bibitem[Wil99b]{ROMANNUM} +% Peter R.~Wilson. +% \newblock {\em The ROMANNUM Package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1999. +% +% \end{thebibliography} +% +% +% \Finale +% \PrintIndex +% +\endinput + +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} + + diff --git a/Master/texmf-dist/source/fonts/bookhands/auncial.ins b/Master/texmf-dist/source/fonts/bookhands/auncial.ins new file mode 100644 index 00000000000..1e0265bdd3e --- /dev/null +++ b/Master/texmf-dist/source/fonts/bookhands/auncial.ins @@ -0,0 +1,101 @@ +%% +%% auncial.ins +%% Copyright 1999 Peter R. Wilson +%% +%% This program is provided under the terms of the +%% LaTeX Project Public License distributed from CTAN +%% archives in directory macros/latex/base/lppl.txt. +%% +%% Author: Peter Wilson (CUA) +%% now at: peter.r.wilson@boeing.com +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\batchfile{auncial.ins} +\input docstrip.tex +\preamble + + Copyright 1999 Peter R. Wilson + + This program is provided under the terms of the + LaTeX Project Public License distributed from CTAN + archives in directory macros/latex/base/lppl.txt. + +Author: Peter Wilson (CUA) + now at: peter.r.wilson@boeing.com + +\endpreamble + +\keepsilent + +%%% \Msg{*** Generating the driver file ***} +%%% \generateFile{auncial.drv}{t}{\from{auncial.dtx}{driver}} + +\Msg{*** Generating the Metafont files ***} + +\usepostamble\empty +\generateFile{auncl7.mf}{t}{\from{auncial.dtx}{base7}} +\generateFile{auncl10.mf}{t}{\from{auncial.dtx}{base10}} +\generateFile{auncl17.mf}{t}{\from{auncial.dtx}{base17}} +\generateFile{aunclb7.mf}{t}{\from{auncial.dtx}{base7b}} +\generateFile{aunclb10.mf}{t}{\from{auncial.dtx}{base10b}} +\generateFile{aunclb17.mf}{t}{\from{auncial.dtx}{base17b}} +\generateFile{auncll.mf}{t}{\from{auncial.dtx}{min}} +\generateFile{aunclu.mf}{t}{\from{auncial.dtx}{maj}} +\generateFile{auncltitle.mf}{t}{\from{auncial.dtx}{mfd}} +\generateFile{aunclpunct.mf}{t}{\from{auncial.dtx}{punct}} +\generateFile{auncllig.mf}{t}{\from{auncial.dtx}{lig}} +\generateFile{auncldig.mf}{t}{\from{auncial.dtx}{dig}} + +\Msg{*** Generating the Font Definition files ***} +\usepostamble\defaultpostamble + +\generateFile{ot1auncl.fd}{t}{\from{auncial.dtx}{fdot1}} +\generateFile{t1auncl.fd}{t}{\from{auncial.dtx}{fdt1}} + +\Msg{*** Generating the LaTeX2e package files ***} + +\generateFile{auncial.sty}{t}{\from{auncial.dtx}{usc}} +\generateFile{allauncl.sty}{t}{\from{auncial.dtx}{uscall}} + +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into directories searched by TeX:} +\Msg{*} +\Msg{* Move these into the font source area:} +\Msg{* \space\space auncl7.mf} +\Msg{* \space\space auncl10.mf} +\Msg{* \space\space auncl17.mf} +\Msg{* \space\space aunclb7.mf} +\Msg{* \space\space aunclb10.mf} +\Msg{* \space\space aunclb17.mf} +\Msg{* \space\space auncll.mf} +\Msg{* \space\space aunclu.mf} +\Msg{* \space\space auncltitle.mf} +\Msg{* \space\space aunclpunct.mf} +\Msg{* \space\space auncllig.mf} +\Msg{* \space\space auncldig.mf} +\Msg{*} +\Msg{* Move these into the LaTeX macro area:} +\Msg{* \space\space ot1auncl.fd} +\Msg{* \space\space t1auncl.fd} +\Msg{* \space\space auncial.sty} +\Msg{* \space\space allauncl.sty} +\Msg{*} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* `.dtx' through LaTeX.} +\Msg{* Process any name.idx file by:} +\Msg{* \space\space\space\space makeindex -s gind.ist name} +\Msg{* Process any name.glo file by:} +\Msg{* \space\space\space\space makeindex -s gglo.ist -o name.gls name.glo} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} + +\endinput diff --git a/Master/texmf-dist/source/fonts/bookhands/carolmin.dtx b/Master/texmf-dist/source/fonts/bookhands/carolmin.dtx new file mode 100644 index 00000000000..ee05477a082 --- /dev/null +++ b/Master/texmf-dist/source/fonts/bookhands/carolmin.dtx @@ -0,0 +1,4924 @@ +% \iffalse meta-comment +% +% carolmin.dtx +% Copyright 1999 Peter R. Wilson +% +% This program is provided under the terms of the +% LaTeX Project Public License distributed from CTAN +% archives in directory macros/latex/base/lppl.txt. +% +% Author: Peter Wilson (CUA) (now at: peter.r.wilson@boeing.com) +% +% If you do not have the docmfp package (available from CTAN in +% tex-archive/macros/latex/contrib/supported), comment out the +% \usepackage{docmfp} line below and uncomment the line following it. +% +%<*driver> +\documentclass{ltxdoc} +\usepackage{docmfp} +%%%%%% \providecommand{\DescribeVariable}[1]{} \newenvironment{routine}[1]{}{} +\EnableCrossrefs +\CodelineIndex +%% comment out the next line to show the code +\OnlyDescription +\setcounter{StandardModuleDepth}{1} +\begin{document} + \DocInput{carolmin.dtx} +\end{document} +% +% +% \fi +% +% \CheckSum{134} +% +% \DoNotIndex{\',\.,\@M,\@@input,\@addtoreset,\@arabic,\@badmath} +% \DoNotIndex{\@centercr,\@cite} +% \DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue} +% \DoNotIndex{\@input,\@ixpt,\@m} +% \DoNotIndex{\@minus,\@mkboth,\@ne,\@nil,\@nomath,\@plus,\@set@topoint} +% \DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb} +% \DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt} +% \DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt} +% \DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace} +% \DoNotIndex{\advance,\Alph,\alph} +% \DoNotIndex{\arabic,\ast,\begin,\begingroup,\bfseries,\bgroup,\box} +% \DoNotIndex{\bullet} +% \DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption} +% \DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass} +% \DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\endtrivlist} +% \DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup} +% \DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter} +% \DoNotIndex{\fbox} +% \DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef} +% \DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule} +% \DoNotIndex{\hsize,\hskip,\hspace,\hss,\if@tempswa,\ifcase,\or,\fi,\fi} +% \DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\fi,\fi,\fi,\fi,\fi} +% \DoNotIndex{\input} +% \DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark} +% \DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright} +% \DoNotIndex{\month,\newcommand,\newcounter,\newenvironment} +% \DoNotIndex{\NeedsTeXFormat,\newdimen} +% \DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number} +% \DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\p@} +% \DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip} +% \DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions} +% \DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright} +% \DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font} +% \DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily,\roman} +% \DoNotIndex{\roman,\secdef,\selectfont,\setbox,\setcounter,\setlength} +% \DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space} +% \DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase} +% \DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt} +% \DoNotIndex{\viipt,\vipt,\vskip,\vspace} +% \DoNotIndex{\wd,\xiipt,\year,\z@} +% +% \changes{v1.0}{2002/12/30}{First public release} +% +% \def\fileversion{v1.0} +% \def\filedate{2002/12/30} +% \newcommand*{\Lpack}[1]{\textsf {#1}} ^^A typeset a package +% \newcommand*{\Lopt}[1]{\textsf {#1}} ^^A typeset an option +% \newcommand*{\file}[1]{\texttt {#1}} ^^A typeset a file +% \newcommand*{\Lcount}[1]{\textsl {\small#1}} ^^A typeset a counter +% \newcommand*{\pstyle}[1]{\textsl {#1}} ^^A typeset a pagestyle +% \newcommand*{\Lenv}[1]{\texttt {#1}} ^^A typeset an environment +% \newcommand*{\AD}{\textsc{ad}} +% \newcommand*{\thisfont}{Carolingian Minuscule} +% +% \title{The \Lpack{Carolingian Minuscule} fonts\thanks{This +% file has version number \fileversion, last revised +% \filedate.}} +% +% \author{% +% Peter Wilson\\ +% Catholic University of America \\ +% Now at \texttt{peter.r.wilson@boeing.com} +% } +% \date{\filedate} +% \maketitle +% \begin{abstract} +% The \Lpack{carolmin} and \Lpack{allcmin} packages provide a set of +% Metafont \thisfont{} book-hands +% as used +% for manuscripts in the 8th to the 12th century. This is one in a series +% of manuscript fonts. +% \end{abstract} +% \tableofcontents +% \listoftables +% +% +% +% +% \section{Introduction} +% +% The \Lpack{carolmin} and \Lpack{allcmin} packages provide a Metafont~\cite{METAFONT} version +% of the \thisfont{} manuscript book-hand that was in use between about the +% eighth and twelfth centuries~\AD. It is part of a project to provide fonts +% covering the major manuscript hands between the first century~\AD{} and +% the invention of printing. The principal resources used in this project +% are listed in the Bibliography. +% +% This manual is typeset according to the conventions of the +% \LaTeX{} \textsc{docstrip} utility which enables the automatic +% extraction of the \LaTeX{} macro source files~\cite{GOOSSENS94}. +% The \Lpack{docmfp} package is used for documenting the Metafont portions +% of the distribution~\cite{DOCMFP}. +% +% Section~\ref{sec:usc} describes the usage of the package. +% Commented code for the fonts is in Sections~\ref{sec:mf} and~\ref{sec:fd} +% and source code for the package is in Section~\ref{sec:code}. +% +% \subsection{Manuscript book-hands} +% +% Before the invention of printing all books were written by hand. The book-hands +% used by the scribes and copyists for the manuscripts changed as time +% went on. Table~\ref{tab:1} lists some of the common book-hands which were used +% between the 1st and 15th centuries. The later book-hands formed the basis of the +% fonts used by the early printers, which in turn form the basis of the printing +% fonts in use today. +% +% The manuscript book-hands were written with a broad nibbed reed or quill +% pen. Among the distinguishing characteristics of a hand, apart from the +% actual shape of the letters, are the angle of the pen (which controls the +% variation between thick and thin strokes) and the height of a letter compared +% to the width of the nib. The lower the ratio of the letter height to nib +% width, the more condensed is the script. The scripts also varied in their +% typical height. +% +% Table~\ref{tab:1} gives an `average' x-height for each +% script, which I obtained by measuring a sample of photographs of +% manuscripts written in the various hands. About a dozen examples +% of each book-hand were measured. This figure should not be taken too +% seriously. +% +% There was not a sharp division between the use of one hand and another. +% Many manuscripts exhibit a variety of hands in the same document. For example, +% the scribe writing in an Uncial hand may have used Roman Rustic letters +% for capitals. Usually the same pen was used for the two different scripts. +% +% Generally speaking, as a hand got older it became more embelished, and +% therefore took longer to write. As this happened a new hand would appear that +% was faster, and which would eventually make the earlier one obsolete. +% +% Many of the book-hands were single-cased; that is, they did not have an +% upper- and lower-case as we do nowadays in Western scripts. On the other +% hand, a script might be majuscule or minuscule. A \textit{majuscule} script +% is one, like our upper-case, where the letters are drawn between two lines +% and are of a uniform height with no ascenders or descenders. +% A \textit{minuscule} script, like our lower-case, is drawn between four lines +% and has ascenders and descenders. +% +% \begin{table} +% \centering +% \caption{The main manuscript book-hands} \label{tab:1} +% \begin{tabular}{lccccc} \hline +% Name & Century & x-height & Height & Pen & Normalised \\ +% & & (mm) & (nib widths) & angle & height \\ \hline +% Roman Rustic & 1--6 & 5.7 & 4--6 & 45 & 1.90 \\ +% Uncial & 3--6 & 4.1 & 4--5 & 30 & 1.37 \\ +% Half Uncial & 3--9 & 3.2 & 3--6 & 20--30 & 1.07 \\ +% Artificial Uncial & 6--10 & 4.2 & 3--6 & 10 & 1.40 \\ +% Insular majuscule & 6--9 & 4.2 & 5 & 0--20 & 1.40 \\ +% Insular minuscule & 6 onward & 4.1 & 5--6 & 45--70 & 1.37 \\ +% Carolingian minuscule & 8--12 & 3.0 & 3--5 & 45 & 1.00 \\ +% Early Gothic & 11--12 & 3.8 & 4--6 & 20--45 & 1.27 \\ +% Gothic Textura & 13--15 & 3.9 & 3--5 & 30--45 & 1.30 \\ +% Gothic Prescius & 13 onward & 3.3 & 4--5 & 45 & 1.10 \\ +% Rotunda & 13--15 & 3.2 & 4--6 & 30 & 1.07 \\ +% Humanist minuscule & 14 onward & 3.0 & 4--5 & 30--40 & 1.00 \\ \hline +% \end{tabular} +% \end{table} +% +% During the period under consideration arabic numerals were effectively +% not used. At the beginning they were unknown and even though some knew +% of them towards the end, the glyphs used for them are not recognisable --- +% to me they look somewhat like cryllic letters --- and each locality +% and time had its own highly individualistic rendering. The general rule +% when using one of these book-hands is to write all numbers using +% roman numerals. +% +% The Roman alphabet consisted of 23 capital letters --- the J, U and W +% were absent. The book-hands initially used both a `u' and a `v' interchangeably +% but by the 10th century the practice had become to use the `v' before a vowel +% and the `u' otherwise. The letter corresponding to the W sound appeared +% in England around the 7th century in +% the form of the runic \textit{wen} character and by about the 11th century +% the `w' chacter was generally used. The `J' is the newest letter of all, not +% appearing until about the mid 16th century. +% +% In the first century punctuation was virtually unknown, and typically +% would not even be any additional space between individual words, never +% mind denoting ends of sentences. Sometimes a dot at mid-height would be +% used as a word seperator, or to mark off the end of a paragraph. Effectively +% a text was a continuous stream of letters. By the time that printing was +% invented, though, all of our modern punctuation marks were being used. +% +% Among all these manuscript hands, the Carolingian minuscule is the +% most important as our modern fonts are based on its letter shapes, and it is +% also at this point in time where the division occured between the black letter +% scripts as used even today in Germany, and the lighter fonts used elesewhere. +% The Rotunda and Humanist minuscule hands were developed in Italy and were +% essentially a rediscovery of the Carolingian minusucle. Guthenberg took the +% Gothic scripts as the model for his types. Later printers, +% such as Nicholas Jenson of Venice, +% took the Humanist scripts as their models. +% +% +% \subsection{The \thisfont{} script} +% +% Charlemagne (742--814), the Holy Roman Emperor, was naturally anxious to consolidate +% his empire. Although he was probably illiterate he employed scribes +% and when he came to the throne there was a wide diversity of bookhands +% in use. For efficiency he needed to have a more uniform style of writing +% so that reading mistakes were less likely to happen. To this end +% he employed the Anglo-Saxon monk Alcuin to be his `Minister for Education'. +% Alcuin produced an elegant, simple and easy-to-write hand that is now +% called \thisfont. +% +% Letters for capitals were taken from contemporary and earlier bookhands, +% thus helping to preserve them. All the modern punctuation marks were in use +% and the letter `v' appears for the first time. As well as the ampersand, the most +% common ligatures were `ct' and `st'; also, a special `half r' was used after +% an `o'. +% +% +% +% \section{The \Lpack{carolmin} and \Lpack{allcmin} packages} \label{sec:usc} +% +% The \thisfont{} font family is called |cmin|. The font is supplied in both +% OT1 and T1 encodings. +% +% \subsection{The \Lpack{carolmin} 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{\cminfamily} +% The |\cminfamily| 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{\textcmin} +% The command |\textcmin{|\meta{text}|}| will typeset \meta{text} using the +% \thisfont{} fonts. +% +% \subsection{The \Lpack{allcmin} 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{allcmin} package automatically loads the \Lpack{carolmin} package, +% so its font commands are available if necessary. +% +% \StopEventually{ +% \bibliographystyle{alpha} +% \renewcommand{\refname}{Bibliography} +% \begin{thebibliography}{GMS94} +% \addcontentsline{toc}{section}{\refname} +% +% \bibitem[And69]{ANDERSON69} +% Donald M.~Anderson. +% \newblock {\em The Art of Written Forms: The Theory and Practice of Calligraphy}. +% \newblock Holt, Rinehart and Winston, 1969. +% +% \bibitem[Bol95]{BOLOGNA95} +% Giulia Bologna. +% \newblock {\em Illuminated Manuscripts: The Book before Gutenberg}. +% \newblock Crescent Books, 1995. +% +% \bibitem[Day95]{DAY95} +% Lewis F.~Day. +% \newblock {\em Alphabets Old \& New}. +% \newblock (3rd edition originally published by B.~T.~Batsford, 1910) +% \newblock Senate, 1995. +% +% \bibitem[Dro80]{DROGIN80} +% Marc Drogin. +% \newblock {\em Medieval Calligraphy: Its History and Technique}. +% \newblock Allenheld, Osmun \& Co., 1980. +% +% \bibitem[Dru95]{DRUCKER95} +% Johanna Drucker. +% \newblock {\em The Alphabetic Labyrinth}. +% \newblock Thames \& Hudson, 1995. +% +% \bibitem[Fir93]{FIRMAGE93} +% Richard A.~Firmage. +% \newblock {\em The Alphabet Abecedarium}. +% \newblock David R~Goodine, 1993. +% +% \bibitem[Fli98]{LETTRINE} +% Daniel Flipo. +% \newblock {\em The LETTRINE package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1998. +% +% \bibitem[Har95]{HARRIS95} +% David Harris. +% \newblock {\em The Art of Calligraphy}. +% \newblock DK Publishing, 1995. +% +% \bibitem[Jen95]{BETON} +% Frank Jensen. +% \newblock {\em The BETON package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1995. +% +% \bibitem[Joh71]{JOHNSTON75} +% Edward Johnston (ed. Heather Child). +% \newblock {\em Formal Penship and Other Papers}. +% \newblock Penthalic, 1971. +% +% \bibitem[Knu87]{CM} +% Donald E.~Knuth. +% \newblock {\em Computer Modern Typefaces}. +% \newblock Addison-Wesley, 1987. +% +% \bibitem[Knu92]{METAFONT} +% Donald E.~Knuth. +% \newblock {\em The METAFONTbook}. +% \newblock Addison-Wesley, 1992. +% +% \bibitem[GMS94]{GOOSSENS94} +% Michel Goossens, Frank Mittelbach, and Alexander Samarin. +% \newblock {\em The LaTeX Companion}. +% \newblock Addison-Wesley Publishing Company, 1994. +% +% \bibitem[Tho75]{THOMAS75} +% Alan G.~Thomas. +% \newblock {\em Great Books and Book Collectors}. +% \newblock Weidenfield and Nichoson, 1975. +% +% \bibitem[Wil99]{DOCMFP} +% Peter R.~Wilson. +% \newblock {\em The DOCMFP Package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1999. +% +% \bibitem[Wil99b]{ROMANNUM} +% Peter R.~Wilson. +% \newblock {\em The ROMANNUM Package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1999. +% +% \end{thebibliography} +% } +% +% \section{The Metafont code} \label{sec:mf} +% +% +% As previously noted, this work is part of a larger project to provide +% fonts covering the main manuscript book-hands. As such, one of the +% aims is to produce a coordinated set of fonts, especially as multiple +% hands might be used in a single document. +% +% Noting that the hands tend to be somewhat larger than the typical 10pt +% size (where the x-height is approximately 1.5mm) used for modern books, +% I have also designed the fonts +% at a larger than normal size, then applied some non-linear factors when reducing +% them down to a 10pt size. +% Further, I have used the height of the Carolingian minuscule as a +% normalising factor when deciding on the absolute height of any particular +% script. The x-height of the Carolingian font is made equal to the +% x-height of the Computer Modern Roman (CMR) font. +% +% Modern fonts are effectively drawn. That is, the outline of the letter is +% drawn carefully and the center is filled with ink. This is shown to good +% effect in the Metafont code for the Computer Modern fonts~\cite{CM}. +% In contrast, the manuscript letters were inked by single pen strokes in +% a calligraphic manner. I have tried to repeat this calligraphic style +% in the Metafont code. +% +% As much as possible I have tried to use parameter values from the +% Computer Modern Roman (CMR) fonts in order to reduce possible +% infelicities if the CM and manuscript fonts are used together. However, +% few of the CMR parameters are applicable to the calligraphic style. +% +% +% \subsection{The parameter file} +% +% We deal with the parameter files first, and start by announcing +% what they are for. The \thisfont{} font comes in three sizes and also as a normal +% and a bold font. +% \begin{macrocode} +%<*base7|base10|base17|base7b|base10b|base17b> +%%%% CMIN7.MF Carolingian Minuscule at 7 point design size. +%%%% CMIN10.MF Carolingian Minuscule at 10 point design size. +%%%% CMIN17.MF Carolingian Minuscule at 17 point design size. +%%%% CMINB7.MF Carolingian Minuscule Bold at 7 point design size. +%%%% CMINB10.MF Carolingian Minuscule Bold at 10 point design size. +%%%% CMINB17.MF Carolingian Minuscule 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 + +%font_identifier:="CMIN"; font_size 7pt#; +%font_identifier:="CMIN"; font_size 10pt#; +%font_identifier:="CMIN"; font_size 17.28pt#; +%font_identifier:="CMINB"; font_size 7pt#; +%font_identifier:="CMINB"; font_size 10pt#; +%font_identifier:="CMINB"; font_size 17.28pt#; + +% \end{macrocode} +% +% \DescribeVariable{jutstretch} +% The CMR scaling for lowercase serifs wrt 17pt size. +% \begin{macrocode} +% jutstretch:=1.19; +% jutstretch:=1.152; +% jutstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{stemstretch} +% The CMR scaling for lowercase stem widths wrt 17pt size. +% \begin{macrocode} +% stemstretch:=1.50; +% stemstretch:=1.31; +% stemstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{caprat} +% The scaling for `capitals' wrt `lowercase'. This is pretty much a guess +% (the ratio for CMR10 is 1.59). +% \begin{macrocode} + caprat:=1.5; % ratio of capital height to minuscule height +% \end{macrocode} +% +% \DescribeVariable{cap_jutstretch} +% The CMR scaling for uppercase serifs wrt 17pt size. +% \begin{macrocode} +% cap_jutstretch:=1.3; +% cap_jutstretch:=1.2; +% cap_jutstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{cap_stemstretch} +% The CMR scaling for uppercase stem width wrt 17pt size. +% \begin{macrocode} +% cap_stemstretch:=1.45; +% cap_stemstretch:=1.31; +% cap_stemstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{bfudge} +% Letter width scaling for bold font wrt normal font. +% \begin{macrocode} +% bfudge:=1.0; +% bfudge:=1.2; +% \end{macrocode} +% +% \DescribeVariable{szfudge} +% Width scaling wrt 17pt letter width. +% \begin{macrocode} +% szfudge:=1.18; +% szfudge:=1.0; +% 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} +% carol_height#:=108.5/36pt#; +% carol_height#:=155/36pt#; +% carol_height#:=268/36pt#; +% \end{macrocode} +% +% \DescribeVariable{vstretch} +% The height of this font wrt the Carolingian font. +% \begin{macrocode} + vstretch:=1.00; + +% \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} +% u#:=15.5/36pt#; +% u#:=20/36pt#; +% u#:=32.5/36pt#; +% u#:=17.9/36pt#; +% u#:=23/36pt#; +% 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 +% cap_serif_fit#:=3.5/36pt#; % extra sidebar near uppercase serifs +% cap_serif_fit#:=5/36pt#; % extra sidebar near uppercase serifs +% cap_serif_fit#:=8/36pt#; % extra sidebar near uppercase serifs +% letter_fit#:=0pt#; % extra space added to all sidebars +% letter_fit#:=0pt#; % extra space added to all sidebars +% 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} +% sb#:=1/2u#; % unit for side bearings +% sb#:=1/2u#; % unit for side bearings +% sb#:=1/2u#; % unit for side bearings + +% \end{macrocode} +% +% \DescribeVariable{cap_height} +% The height of capital letters. +% \begin{macrocode} +% cap_height#:=172.2/36pt#; % height of caps +% cap_height#:=246/36pt#; % height of caps +% 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} +% thickfudge:=1/5; +% thickfudge:=1/4; +% \end{macrocode} +% +% \DescribeVariable{thinfudge} +% The nib sharpness. +% \begin{macrocode} +thinfudge:=1/6; +% \end{macrocode} +% +% \DescribeVariable{thick} +% The maximum nib width. +% That is, the width of the thickest line that can be penned. +% \begin{macrocode} +thick#:=stemstretch*thickfudge*x_height#; % max pen breadth +% \end{macrocode} +% +% \DescribeVariable{thin} +% The nib thinness. +% That is, the width of the thinnest line that can be penned. +% \begin{macrocode} +thin#:=thinfudge*thick#; +% \end{macrocode} +% +% \DescribeVariable{pangle} +% The pen angle (in degrees). +% \begin{macrocode} +pangle:=45; % pen angle +% \end{macrocode} +% +% \DescribeVariable{ascratio} +% The height of lower case ascenders wrt |x_height|. +% \begin{macrocode} + ascratio:=6/4; +% \end{macrocode} +% +% \DescribeVariable{asc_height} +% The height of lower case ascenders. +% \begin{macrocode} + asc_height#:=ascratio*x_height#; +% \end{macrocode} +% +% \DescribeVariable{descratio} +% The depth of lower case descenders wrt |x_height|. +% \begin{macrocode} + descratio:=3/4; +% \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} +% rule_thickness#:=.34pt#; +% rule_thickness#:=.4pt#; +% rule_thickness#:=.6pt#; + +% \end{macrocode} +% +% \DescribeVariable{jutfudge} +% Controls the protrusion of serifs. +% \begin{macrocode} +%%%jutfudge:= 3/4; +jutfudge:= 1/2; +% \end{macrocode} +% +% \DescribeVariable{jut} +% The lowercase serif protrusion. +% \begin{macrocode} +jut#:=jutstretch*jutfudge*thick#; +% \end{macrocode} +% +% \DescribeVariable{srad} +% |srad| with |0 < srad < 1| controls the serif radius. +% \begin{macrocode} +srad:=0.8; % was 0.5 +% \end{macrocode} +% +% \DescribeVariable{trijut} +% The lowercase triangular serif protrusion. +% \begin{macrocode} +trijut#:=0.75jutstretch*thick#; +% \end{macrocode} +% +% \DescribeVariable{clubjutfudge} +% The fractional protusion of a club serif. +% \begin{macrocode} +clubjutfudge:=1/2; +% \end{macrocode} +% +% \DescribeVariable{clubjut} +% The lowercase club serif protrusion. +% \begin{macrocode} +clubjut#:=jutstretch*clubjutfudge*thick#; +% \end{macrocode} +% +% \DescribeVariable{o} +% Amount of overshoot for curves (as in an `o'). Use CMR values. +% \begin{macrocode} +% o#:=5/36pt#; +% o#:=8/36pt#; +% 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 cmintitle %% switch to the driver file + +% \end{macrocode} +% +% The end of this code section. +% \begin{macrocode} +% +% \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 CMINTITLE.MF for the Carolingian Minuscule 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}{carolmin_font_setup} +% This macro contains the set up for the \thisfont{} fonts. +% \begin{macrocode} + +def carolmin_font_setup= % contains special stuff for carolmin 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); + let adjust_fit = normal_adjust_fit; +% \end{macrocode} +% \DescribeVariable{stylus} +% The pen for drawing the thinnest lines is |stylus|. +% \begin{macrocode} + pickup pencircle scaled thin; + stylus:=savepen; +% \end{macrocode} +% \DescribeVariable{thickstylus} +% The pen for drawing lines a bit thicker than the thinnest is |thickstylus|. +% \begin{macrocode} + pickup pencircle scaled (1.5thin); + thickstylus:=savepen; +% \end{macrocode} +% \DescribeVariable{quill} +% The normal calligraphic pen is |quill|. +% \begin{macrocode} + pickup pencircle xscaled thick yscaled thin rotated pangle; + quill:=savepen; + +% \end{macrocode} +% +% \DescribeVariable{threequarterquill} +% A pen with 3/4 of the width as quill (but with the same thinness). +% \begin{macrocode} + pickup pencircle xscaled 3/4thick yscaled thin rotated pangle; + threequarterquill := savepen; + +% \end{macrocode} +% +% \DescribeVariable{halfquill} +% A pen with 1/2 of the width as quill (but with the same thinness). +% \begin{macrocode} + pickup pencircle xscaled 1/2thick yscaled thin rotated pangle; + halfquill := savepen; + +% \end{macrocode} +% +% \DescribeVariable{quarterquill} +% A pen with 1/4 of the width as quill (but with the same thinness). +% \begin{macrocode} + pickup pencircle xscaled 1/4thick yscaled thin rotated pangle; + quarterquill := savepen; + +% \end{macrocode} +% +% +% \begin{macrocode} + numeric pcshiftx#; % x value of LHS of box wrt origin of char box + define_pixels(pcshiftx); + numeric sqxside#; % x size of the square + numeric sqyside#; % y size of the square + define_pixels(sqxside,sqyside); + +enddef; % end of carolmin_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 $0y$$: + 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 $0y$$: + 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 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; +carolmin_font_setup; + +% \end{macrocode} +% +% +% We generate letters, together with some punctuation and +% analphabetics. +% \begin{macrocode} + +input cminl; % lower case +input cminu; % capitals +input cminpunct; % punctuation +input cminlig; % the several dashes +input cmindig; % 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. + +% +% \end{macrocode} +% +% \subsection{The code for normal letters} +% +% The following code is for the lower case characters. +% +% \begin{macrocode} +%<*min> +% CMINL.MF Program file for Carolingian Minuscule lower case +% + +% \end{macrocode} +% +% +% \begin{routine}{a} +% The letter `a'. +% \begin{macrocode} +cmchar "CMIN letter a"; +beginchar("a", 2sb#+hstretch*(3/4x_height#+jut#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pair pr[]; +pickup quill; +n1 := w - 2pcshiftx -jut; % effective letter width +% "stem" +x1 = pcshiftx + 6/8n1; top y1=h; +rt x2 = pcshiftx + n1; bot y2=0; +z16 = 1/6[z2,z1]; +rt x6 = x16; y6=y16; +lft x4 = pcshiftx; y4 = 1/2h; +% stem path +pth1 := z1{down}..z2; +pr1 := direction 1 of pth1; +z20 = z2 shifted -10pr1; + +z11 = point 3/13 of pth1; z15 = point 10/13 of pth1; +lft x13 = pcshiftx; y13=1/4h; +%%ductus:=true; +if ductus: + pickup stylus; +else: + % draw stem + draw pth1; + draw_roundserif(1,2,srad); + draw_roundserif(2,20,srad); + % draw bowl +%% draw z1{-pdir}..z4{down}..z6{pdir}; + draw z11{-pdir}..z13{down}..z15{pdir}; +fi +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 "CMIN letter b"; +beginchar("b", 2sb#+hstretch*(3/4x_height#+clubjut#), + asc_height#, 0); +adjust_fit(0,0); +numeric n[]; +path pth[]; +pcshiftx := sb; +pickup quill; +n1:=w-2pcshiftx; % actual letter width +n2:=h/ascratio; % top of bowl +%%ductus:=true; +lft x1 = pcshiftx+clubjut; top y1=h; +x3 = x1; y3=1/2n2; +rt x5 = w-pcshiftx; y5=y3; +x4 = 1/2[x3,x5]; bot y4=0; +x6=x4; top y6=n2; +pth1 := z1..z3{down}..z4{right}.. z5{up}; +z98=(0,3/4n2); z99=(w,y98); +pth2 := z98--z99; +z7 = pth1 intersectionpoint pth2; +if ductus: + pickup stylus; +fi +draw z1..z3{down}..z4{right}..z5{up}..z6{left}..z7{-pdir}; +draw_clubserif(1,3,0.75); +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 "CMIN letter c"; +beginchar("c", 2sb#+hstretch*(5/8x_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{pdir}; +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 "CMIN letter d"; +beginchar("d", 2sb#+hstretch*(5/8x_height#+jut#), + asc_height#, 0); +adjust_fit(0,0); +numeric n[]; +path pth[]; +pcshiftx := sb; +pickup quill; +n1 = h/ascratio; % x-height +rt x1=w-pcshiftx-jut; top y1=h; +x2 = x1; bot y2=0; +x3 = x1; y3 = 1/4n1; +lft x5 = pcshiftx; y5=1/2n1; +x4 = 1/2[x3,x5]; bot y4 = 0; +x6=x4; top y6 = n1; +x7=x3; y7=3/4n1; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); +%%draw_flatserif(1,2,srad); +draw_clubserif(1,2,0.25); +draw_roundserif(2,1,srad); +draw z3..z4{left}..z5{up}..z6{right}..z7; +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 "CMIN letter e"; +beginchar("e", sb#+hstretch*(8/8x_height#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pickup quill; +n1 := w-pcshiftx; % actual letter width +n2 := 6/8n1; % width of bowl +x1 = pcshiftx + 5/8n2; top y1=h; +lft x2 = pcshiftx; y2 = 1/2h; +x3 = pcshiftx + 1/2n2; bot y3 = 0; +rt x4 = pcshiftx + n2; y4 = 1/4h; +%%z98=(0,3/8h); z99=(w,y98); +z98=(0,2/8h); z99=(w,y98); +pth1 := z98--z99; +pth2 := z1{left}..z2{down}..z3{right}; +z7 = pth1 intersectionpoint pth2; +rt x9 = w-pcshiftx; y9 = 3/4h; +z8=1/2[z7,z9]; + +z70 = z7 shifted 10pdir; +z17 = whatever[z7,z70]; +%%x17 = w-pcshiftx; +top y17 = h; + +rt x27=w-pcshiftx; top y27=h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z7{pdir}..z1{left}..z2{down}..z3{right}..z4{pdir}; +%%draw z7{pdir}..z8{right}..z9{pdir}; +%%draw z7--z17; +draw z7--z27; +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 "CMIN letter f"; +beginchar("f", 2sb#+hstretch*(3/4x_height#+jut#), + (asc_height#), 0); +adjust_fit(0,0); +numeric n[]; +pcshiftx := sb; +pickup quill; +n1 := h/ascratio; % x-height +%% stem +lft x1=lft x2=pcshiftx+jut; top y1=n1; bot y2=0; +%% flick +x4=x2; y4 = 1/2n1; +rt x6=w-pcshiftx; y6 = 2/3h; +x5 = 2/3[x4,x6]; top y5=h; +%% bar +z14=1/2[z4,z1]; +rt x16 = w -pcshiftx; top y16 = 1/2[y14,y6]; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +draw z4{up}...z5{right}...z6; % top +draw z14{right}..z16{pdir}; % bar +ductus:=false; +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 "CMIN letter g"; +beginchar("g", 2sb#+hstretch*(5/4x_height#), + x_height#, desc_depth#); +adjust_fit(0,0); +path pth[]; +pair vec[]; +numeric n[]; +pcshiftx := sb; +pickup quill; +n1 := 4/5w - 2pcshiftx; % width of top o +%% top O +x1 = x3 = pcshiftx + 1/2n1; top y1=h; bot y3=1/8h; +lft x4 = pcshiftx; rt x2 = pcshiftx+n1; y2 = y4 = 1/2[y1,y3]; + +%% top flick +lft x11 = rt x1; y11=y1; +rt x13 = w-pcshiftx; y13 = h; + +%% bottom +z31=z3; +x33 = w-pcshiftx; y33 = -1/2d; +x35=x31; bot y35 = -d; +rt x36 = lft x4; y36 = 1/2[y35,y33]; + +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1..z2..z3..z4..cycle; % top O +draw z11{right}..z13{pdir}; % flick +draw z31{right}..z33{down}..z35{left}..z36; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,11,12,13,31,32,33,34,35,36,100); +endchar; % end "g" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{h} +% The letter `h'. +% \begin{macrocode} +cmchar "CMIN letter h"; +beginchar("h", 2sb#+hstretch*(6/8x_height#+clubjut#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +numeric n[]; +%% stem +lft x1=lft x2=pcshiftx+jut; +top y1=h; bot y2=0; +%% bowl +z3=1/2[z2,z1]; +rt x5 = w-pcshiftx; y5=y3; +x4=1/2[x3,x5]; top y4 = h/ascratio; +%%lft x6=x4; bot y6=0; +x6=1/2[x4,x5]; +bot y6=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +%%draw_flatserif(1,2,srad); +draw_clubserif(1,2,0.5); +draw_roundserif(2,1,srad); +draw z3{pdir}..z4..z5..z6{-pdir}; + +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 "CMIN letter i"; +beginchar("i", 2sb#+hstretch*(thick#+2jut#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +lft x1=lft x2=pcshiftx+jut; +top y1=h; bot y2=0; +%%ductus:=true; +draw_tstem(1,2,srad); +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +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 "CMIN letter j"; +beginchar("j", sb#+hstretch*(3/8x_height#), + x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% stem +rt x1 = w-pcshiftx; top y1 = h; +x2=x1; y2=-1/2d; +%% bottom hook +lft x3 = 0; bot y3 = -d; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2; % stem +draw_flatserif(1,2,srad); +draw z2{down}..z3{-pdir}; % hook +ductus:=false; +penlabels(1,2,3,100); +endchar; % end "j" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{k} +% The letter `k'. +% \begin{macrocode} +cmchar "CMIN letter k"; +beginchar("k", 2sb#+hstretch*(7/8x_height#+clubjut#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +path pth[]; +numeric n[]; +pickup quill; +%% stem +n1 = h/ascratio; % x-height +lft x1=lft x2=pcshiftx+clubjut; +y1=h; bot y2=0; +%% top arm +%%z3=(x1,1/2n1); +x3 = x1; top y3 = 1/2n1; +rt x5=5/8[x1,w-pcshiftx]; top y5=n1; +x4=1/2[x3,x5]; top y4=n1; +pth1 := z3{pdir}..z5{up}; +%% lower arm +pth2 := (rt x1,0)--(rt x1,h); +z13 = pth1 intersectionpoint pth2; +pickup threequarterquill; +lft x14 = x13; bot y14 = y13; +rt x7=w-pcshiftx; bot y7=0; +pickup quill; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_clubserif(1,2,0.5); +draw_roundserif(2,1,srad); +draw pth1; % upper arm +pickup threequarterquill; +%%draw z14{down}..z7{-ppdir}; % lower arm +%%draw z14{down}..z7; % lower arm +draw z14{-ppdir}..z7{right}; % lower arm +pickup quill; +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 "CMIN letter l"; +beginchar("l", 2sb#+hstretch*(thick#+clubjut#+jut#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +lft x1=pcshiftx+clubjut; top y1=h; +x2=x1; bot y2 =0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); +draw_clubserif(1,2,0.5); +draw_roundserif(2,1,srad); +ductus:=false; +penlabels(1,2,3,4,100); +endchar; % end "l" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{m} +% The letter `m'. +% \begin{macrocode} +cmchar "CMIN letter m"; +beginchar("m", 2sb#+hstretch*(x_height#+2jut#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pickup quill; +%% left stem +lft x1=pcshiftx+jut; top y1=h; +x2=x1; bot y2=0; +%% start of bowl +x13=x1; y13=3/4h; +%% bottom of right and middle stems +rt x6 = w -pcshiftx - jut; y6=y2; +z4 = 1/2[z2,z6]; +%% top of middle and right stems +x3=x4; y3=y1; +x5=x6; y5=y13; +%% top of bowls +x14=2/3[x13,x3]; top y14 = h; +x33=x4; y33=y13; +x34=2/3[x33,x5]; y34 = y14; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % left half +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +draw z13{pdir}..z14{right}..z33{down}--z4; +draw_roundserif(4,3,srad); +draw z33{pdir}..z34{right}..z5{down}--z6; +draw_roundserif(6,5,srad); +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 "CMIN letter n"; +beginchar("n", 2sb#+hstretch*(5/8x_height#+2jut#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +%% left stem +lft x1=pcshiftx+jut; top y1=h; +x2=x1; bot y2=0; +% start of bowl +x13=x1; y13=3/4h; +%% right stem +rt x4 = w-pcshiftx-jut; y4=y2; +x3 = x4; y3 = y13; +% top of bowl +x14 = 2/3[x13,x3]; top y14 = h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % left stem +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +draw z13{pdir}..z14{right}..z3{down}--z4; +draw_roundserif(4,3,srad); +ductus:=false; +penlabels(1,2,3,4,5,6,13,14,100); +endchar; % end "n" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{o} +% The letter `o'. +% \begin{macrocode} +cmchar "CMIN letter o"; +beginchar("o", 2sb#+hstretch*(3/4x_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; +draw z1..z2..z3..z4..cycle; +z5=(pcshiftx,-o); +obowl(5, w-2pcshiftx, h+2o); +%%ductus:=true; +if ductus: + pickup stylus; + draw obfirst; draw obsecond; draw obouter; draw obinner; +else: +%% fill obouter; unfill obinner; +fi +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 "CMIN letter p"; +beginchar("p", 2sb#+hstretch*(3/4x_height#+jut#), + x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% stem +lft x1=lft x2=pcshiftx+jut; +top y1=h; bot y2=-d; +%% bowl % from "d" +z3=3/4[(x1,0),z1]; +rt x5 = w-pcshiftx; y5=1/2h; +x4=1/2[x3,x5]; top y4 = h; +x6=x4; bot y6=0; +z7=1/4[(x1,0),z1]; + +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad) +draw z3{pdir}..z4{right}..z5{down}..z6{left}..z7; % bowl (from d) +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 "CMIN letter q"; +beginchar("q", 2sb#+hstretch*(3/4x_height#+jut#), + x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% right stem +rt x1=w-pcshiftx-jut; top y1=h; +x2=x1; bot y2=-d; +%% bowl +z3=1/4[(x1,0),z1]; +lft x5=pcshiftx; y5=1/2h; +x4=1/2[x3,x5]; bot y4=0; +x6=x4; top y6=h; +z7=3/4[(x1,0),z1]; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); +%%draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +draw z3{-pdir}..z4{left}..z5{up}..z6{right}..z7; +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 "CMIN letter r"; +beginchar("r", 2sb#+hstretch*(7/8x_height#+jut#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% stem +lft x1=lft x2=pcshiftx+jut; +top y1=h; bot y2=0; +%% bowl +z3=3/4[z2,z1]; +rt x5 = w-pcshiftx; y5=y3; +x4=1/2[x3,x5]; top y4 = h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +draw z3{pdir}..z4{right}..z5{pdir}; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,100); +endchar; % end "r" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{s} +% The letter `s'. This is a `long' S. +% \begin{macrocode} +cmchar "CMIN letter s"; +beginchar("s", 2sb#+hstretch*(3/4x_height#+clubjut#), + asc_height#, 0); +adjust_fit(0,0); +numeric n[]; +pcshiftx := sb; +pickup quill; +n1 := h/ascratio; % x-height +%% stem +lft x1=lft x2=pcshiftx+clubjut; top y1=n1; bot y2=0; +%% flick +x4=x2; y4 = 1/2n1; +rt x6=w-pcshiftx; y6 = 2/3h; +x5 = 2/3[x4,x6]; top y5=h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_clubserif(1,2,0.5); +draw_roundserif(2,1,srad); +draw z4{up}...z5{right}...z6; +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 "CMIN letter t"; +beginchar("t", 2sb#+hstretch*(x_height#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% bar +top y3=h; n3 := h - top y3; +lft x1 = pcshiftx; rt x2=w-pcshiftx; +%%top y1 = y3-n3; bot y2=y3+n3; +y1 = y3-n3; y2=y3; +n1 := w; % width of bowl +n2 := h; % height of bowl +x3=1/2[x1,x2]; +lft x4 = pcshiftx + 1/8n1; y4 = 1/2h; +x5=x3; bot y5 = 0; +rt x6 = pcshiftx + 3/4n1; top y6 = 1/4h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1{pdir}..z3..z2{pdir}; % bar +draw z3..z4{down}..z5{right}..z6{pdir}; +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 "CMIN letter u"; +beginchar("u", 2sb#+hstretch*(5/8x_height#+2jut#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% left stem +lft x1 = pcshiftx + jut; top y1 = h; +% start of bowl +x13=x1; y13=1/3h; +% right stem +rt x3=w-pcshiftx-jut; 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; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z13{down}..z14{right}..z33{pdir}; +draw_flatserif(1,13,srad); +draw_tstem(3,4,srad); % right stem +draw_flatserif(3,4,srad); +draw_roundserif(4,3,srad); +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 "CMIN letter v"; +beginchar("v", 2sb#+hstretch*(3/4x_height#+jut#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +%% left stem +lft x1 = pcshiftx + jut; top y1 = h; +% start of bowl +x13=x1; y13=1/3h; +% right stem +rt x3=w-pcshiftx-jut; 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; +rt x23=w-pcshiftx; y23=3/4h; +lft x26=x14; top y26=h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z13{down}..z14{right}; % left stem +draw_flatserif(1,13,srad); +draw z14{pdir}..z23{up}..z26; + +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 "CMIN letter w"; +beginchar("w", 2sb#+hstretch*(x_height#+2jut#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +%% left stem +lft x1 = pcshiftx + jut; top y1 = h; +% start of bowl +x13=x1; y13=1/3h; +% right stem +rt x5=w-pcshiftx-jut; y5=y1; +x6=x5; bot y6=0; +z53=1/4[z6,z5]; % start of bowl +% middle stem +z3 = 1/2[z1,z5]; +z33=(x3,y13); +% middle of bowl +x14=1/3[x1,x3]; bot y14=0; +% middle of right bowl +x34=1/3[x3,x5]; y34=y14; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z13{down}..z14{right}..z33{pdir}; % left +draw_flatserif(1,13,srad); +draw z3--z33{down}..z34{right}..z53{pdir}; % middle +draw_flatserif(3,33,srad); +draw_tstem(5,6,srad); % right stem +draw_flatserif(5,6,srad); +draw_roundserif(6,5,srad); +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 "CMIN letter x"; +beginchar("x", 2sb#+hstretch*(x_height#), + x_height#, 0); +adjust_fit(0,0); +path pth[]; +numeric n[]; +pcshiftx := sb; +pickup quill; +n1 := w-2pcshiftx; % total width +n2 := thick; % triangle side +%% diag top left to bottom right +lft x1=pcshiftx; bot y1=2/3h; +x2=pcshiftx+1/7n1; top y2=h; +x5=pcshiftx+11/14n1; bot y5=-1/4d; +rt x6=pcshiftx+n1; top y6=1/6h; +z25 = 1/3[z2,z5]; +pth1 := z2{right}..z5{right}; +z251 = point 1/3 of pth1; +z252 = point 2/3 of pth1; +%% diag bottom left to top right +lft x10 = -w + 2pcshiftx; bot y10=-d; +x50=x5; top y50=h; +rt x60 = w -pcshiftx; bot y60=2/3h; +x40=pcshiftx+8/14n1; y40=h; + +x150=x2; bot y150 = 0; +lft x160 = pcshiftx; top y160=1/3h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1..z2{right}..z5{right}..z6; % top left to bottom right +%%draw z10{1/2pdir}..z25..z50{right}..z60; % bottom left to top right +draw z251..z50{right}..z60; % middle to top right +draw z252..z150{left}..z160; % middle to bottom left +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,10,25,251,252,40,50,150,60,160,100); +endchar; % end "x" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{y} +% The letter `y'. Modern, but with a dot on top. +% \begin{macrocode} +cmchar "CMIN letter y"; +beginchar("y", 2sb#+hstretch*(7/8x_height#+jut#), + x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +path pth[]; +numeric n[]; +pickup quill; +%% left stem top +lft x1 = pcshiftx + jut; top y1 = h; +bot y3 = 0; +%% right stem +rt x5=w-pcshiftx; top y5 = h; +lft x9=-1/2w; bot y9 = -d; +pth1 := z9{right}..z5{up}; +pth2 := (0,y3)--(w,y3); +z99 = pth1 intersectionpoint pth2; +x3 = x99; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1{down}..z3; % left stem +draw_flatserif(1,3,srad); +draw pth1; % right stem +draw_flatserif(5,3,srad); +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 "CMIN letter z"; +beginchar("z", 2sb#+hstretch*(x_height#), + x_height#, 0); +adjust_fit(0,0); +numeric n[]; +path pth[]; +pcshiftx := sb; +pickup quill; +%% top bar ends +top y12 = h; +n1 := h - y12; +lft x1 = pcshiftx; rt x2 = w-pcshiftx; +%%y1 = y12-n1; y2=y12+n1; +y1 = y12-n1; y2=y12; +x12 = 1/2[x1,x2]; +pth1 := z1{pdir}..z12{right}..z2{pdir}; +%% bottom bar ends +bot y34 = 0; +x3=x1; x4=x2; +%%y3=y34-n1; y4=y34+n1; +y3=y34-n1; y4=y34; +x34 = 1/2[x3,x4]; +pth2 := z3{pdir}..z34{right}..z4{pdir}; +%% diagonal +z5=z3; +pth3 := z5--(3/4w,h+jut); +z6 = pth3 intersectionpoint pth1; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw pth1; draw pth2; % bars +draw z5--z6; +ductus:=false; +penlabels(1,2,3,4,5,6,10o,10i,20o,20i,100); +endchar; % end "z" + +% \end{macrocode} +% \end{routine} +% +% +% The end of this file +% \begin{macrocode} +% +% \end{macrocode} +% +% +% \subsection{The code for capital letters} +% +% \thisfont{} `capitals' were drawn with the same pen as for the minuscules, +% and the letters were merely larger versions of the minuscules. +% +% \begin{macrocode} +%<*maj> +% CMINU.MF Program file for Carolingian Minuscule `capitals' +% + +% \end{macrocode} +% +% +% \begin{routine}{A} +% The letter `A'. +% \begin{macrocode} +cmchar "CMIN letter A"; +beginchar("A", 2sb#+caprat*hstretch*(3/4x_height#+jut#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pair pr[]; +pickup quill; +n1 := w - 2pcshiftx -jut; % effective letter width +% "stem" +x1 = pcshiftx + 6/8n1; top y1=h; +rt x2 = pcshiftx + n1; bot y2=0; +z16 = 1/6[z2,z1]; +rt x6 = x16; y6=y16; +lft x4 = pcshiftx; y4 = 1/2h; +% stem path +pth1 := z1{down}..z2; +pr1 := direction 1 of pth1; +z20 = z2 shifted -10pr1; + +z11 = point 3/13 of pth1; z15 = point 10/13 of pth1; +lft x13 = pcshiftx; y13=1/4h; +%%ductus:=true; +if ductus: + pickup stylus; +else: + % draw stem + draw pth1; + draw_roundserif(1,2,srad); + draw_roundserif(2,20,srad); + % draw bowl +%% draw z1{-pdir}..z4{down}..z6{pdir}; + draw z11{-pdir}..z13{down}..z15{pdir}; +fi +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 "CMIN letter B"; +beginchar("B", 2sb#+caprat*hstretch*(3/4x_height#+clubjut#), + caprat*asc_height#, 0); +adjust_fit(0,0); +numeric n[]; +path pth[]; +pcshiftx := sb; +pickup quill; +n1:=w-2pcshiftx; % actual letter width +n2:=h/ascratio; % top of bowl +%%ductus:=true; +lft x1 = pcshiftx+clubjut; top y1=h; +x3 = x1; y3=1/2n2; +rt x5 = w-pcshiftx; y5=y3; +x4 = 1/2[x3,x5]; bot y4=0; +x6=x4; top y6=n2; +pth1 := z1..z3{down}..z4{right}.. z5{up}; +z98=(0,3/4n2); z99=(w,y98); +pth2 := z98--z99; +z7 = pth1 intersectionpoint pth2; +if ductus: + pickup stylus; +fi +draw z1..z3{down}..z4{right}..z5{up}..z6{left}..z7{-pdir}; +draw_clubserif(1,3,0.75); +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 "CMIN letter C"; +beginchar("C", 2sb#+caprat*hstretch*(5/8x_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{pdir}; +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 "CMIN letter D"; +beginchar("D", 2sb#+caprat*hstretch*(5/8x_height#+jut#), + caprat*asc_height#, 0); +adjust_fit(0,0); +numeric n[]; +path pth[]; +pcshiftx := sb; +pickup quill; +n1 = h/ascratio; % x-height +rt x1=w-pcshiftx-jut; top y1=h; +x2 = x1; bot y2=0; +x3 = x1; y3 = 1/4n1; +lft x5 = pcshiftx; y5=1/2n1; +x4 = 1/2[x3,x5]; bot y4 = 0; +x6=x4; top y6 = n1; +x7=x3; y7=3/4n1; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); +%%draw_flatserif(1,2,srad); +draw_clubserif(1,2,0.25); +draw_roundserif(2,1,srad); +draw z3..z4{left}..z5{up}..z6{right}..z7; +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 "CMIN letter E"; +beginchar("E", sb#+caprat*hstretch*(8/8x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pickup quill; +n1 := w-pcshiftx; % actual letter width +n2 := 6/8n1; % width of bowl +x1 = pcshiftx + 5/8n2; top y1=h; +lft x2 = pcshiftx; y2 = 1/2h; +x3 = pcshiftx + 1/2n2; bot y3 = 0; +rt x4 = pcshiftx + n2; y4 = 1/4h; +%%z98=(0,3/8h); z99=(w,y98); +z98=(0,2/8h); z99=(w,y98); +pth1 := z98--z99; +pth2 := z1{left}..z2{down}..z3{right}; +z7 = pth1 intersectionpoint pth2; +rt x9 = w-pcshiftx; y9 = 3/4h; +z8=1/2[z7,z9]; + +z70 = z7 shifted 10pdir; +z17 = whatever[z7,z70]; +%%x17 = w-pcshiftx; +top y17 = h; + +rt x27=w-pcshiftx; top y27=h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z7{pdir}..z1{left}..z2{down}..z3{right}..z4{pdir}; +%%draw z7{pdir}..z8{right}..z9{pdir}; +%%draw z7--z17; +draw z7--z27; +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 "CMIN letter F"; +beginchar("F", 2sb#+caprat*hstretch*(3/4x_height#+jut#), + (asc_height#), 0); +adjust_fit(0,0); +numeric n[]; +pcshiftx := sb; +pickup quill; +n1 := h/ascratio; % x-height +%% stem +lft x1=lft x2=pcshiftx+jut; top y1=n1; bot y2=0; +%% flick +x4=x2; y4 = 1/2n1; +rt x6=w-pcshiftx; y6 = 2/3h; +x5 = 2/3[x4,x6]; top y5=h; +%% bar +z14=1/2[z4,z1]; +rt x16 = w -pcshiftx; top y16 = 1/2[y14,y6]; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +draw z4{up}...z5{right}...z6; % top +draw z14{right}..z16{pdir}; % bar +ductus:=false; +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 "CMIN letter G"; +beginchar("G", 2sb#+caprat*hstretch*(5/4x_height#), + caprat*x_height#, desc_depth#); +adjust_fit(0,0); +path pth[]; +pair vec[]; +numeric n[]; +pcshiftx := sb; +pickup quill; +n1 := 4/5w - 2pcshiftx; % width of top o +%% top O +x1 = x3 = pcshiftx + 1/2n1; top y1=h; bot y3=1/8h; +lft x4 = pcshiftx; rt x2 = pcshiftx+n1; y2 = y4 = 1/2[y1,y3]; + +%% top flick +lft x11 = rt x1; y11=y1; +rt x13 = w-pcshiftx; y13 = h; + +%% bottom +z31=z3; +x33 = w-pcshiftx; y33 = -1/2d; +x35=x31; bot y35 = -d; +rt x36 = lft x4; y36 = 1/2[y35,y33]; + +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1..z2..z3..z4..cycle; % top O +draw z11{right}..z13{pdir}; % flick +draw z31{right}..z33{down}..z35{left}..z36; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,11,12,13,31,32,33,34,35,36,100); +endchar; % end "G" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{H} +% The letter `H'. +% \begin{macrocode} +cmchar "CMIN letter H"; +beginchar("H", 2sb#+caprat*hstretch*(6/8x_height#+clubjut#), + caprat*asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +numeric n[]; +%% stem +lft x1=lft x2=pcshiftx+jut; +top y1=h; bot y2=0; +%% bowl +z3=1/2[z2,z1]; +rt x5 = w-pcshiftx; y5=y3; +x4=1/2[x3,x5]; top y4 = h/ascratio; +%%lft x6=x4; bot y6=0; +x6=1/2[x4,x5]; +bot y6=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +%%draw_flatserif(1,2,srad); +draw_clubserif(1,2,0.5); +draw_roundserif(2,1,srad); +draw z3{pdir}..z4..z5..z6{-pdir}; + +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 "CMIN letter I"; +beginchar("I", 2sb#+caprat*hstretch*(thick#+2jut#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +lft x1=lft x2=pcshiftx+jut; +top y1=h; bot y2=0; +%%ductus:=true; +draw_tstem(1,2,srad); +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +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 "CMIN letter J"; +beginchar("J", sb#+caprat*hstretch*(3/8x_height#), + caprat*x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% stem +rt x1 = w-pcshiftx; top y1 = h; +x2=x1; y2=-1/2d; +%% bottom hook +lft x3 = 0; bot y3 = -d; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2; % stem +draw_flatserif(1,2,srad); +draw z2{down}..z3{-pdir}; % hook +ductus:=false; +penlabels(1,2,3,100); +endchar; % end "J" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{K} +% The letter `K'. +% \begin{macrocode} +cmchar "CMIN letter K"; +beginchar("K", 2sb#+caprat*hstretch*(7/8x_height#+clubjut#), + caprat*asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +path pth[]; +numeric n[]; +pickup quill; +%% stem +n1 = h/ascratio; % x-height +lft x1=lft x2=pcshiftx+clubjut; +y1=h; bot y2=0; +%% top arm +%%z3=(x1,1/2n1); +x3 = x1; top y3 = 1/2n1; +rt x5=5/8[x1,w-pcshiftx]; top y5=n1; +x4=1/2[x3,x5]; top y4=n1; +pth1 := z3{pdir}..z5{up}; +%% lower arm +pth2 := (rt x1,0)--(rt x1,h); +z13 = pth1 intersectionpoint pth2; +pickup threequarterquill; +lft x14 = x13; bot y14 = y13; +rt x7=w-pcshiftx; bot y7=0; +pickup quill; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_clubserif(1,2,0.5); +draw_roundserif(2,1,srad); +draw pth1; % upper arm +pickup threequarterquill; +%%draw z14{down}..z7{-ppdir}; % lower arm +%%draw z14{down}..z7; % lower arm +draw z14{-ppdir}..z7{right}; % lower arm +pickup quill; +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 "CMIN letter L"; +beginchar("L", 2sb#+caprat*hstretch*(thick#+clubjut#+jut#), + caprat*asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +lft x1=pcshiftx+clubjut; top y1=h; +x2=x1; bot y2 =0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); +draw_clubserif(1,2,0.5); +draw_roundserif(2,1,srad); +ductus:=false; +penlabels(1,2,3,4,100); +endchar; % end "L" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{M} +% The letter `M'. +% \begin{macrocode} +cmchar "CMIN letter M"; +beginchar("M", 2sb#+caprat*hstretch*(x_height#+2jut#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pickup quill; +%% left stem +lft x1=pcshiftx+jut; top y1=h; +x2=x1; bot y2=0; +%% start of bowl +x13=x1; y13=3/4h; +%% bottom of right and middle stems +rt x6 = w -pcshiftx - jut; y6=y2; +z4 = 1/2[z2,z6]; +%% top of middle and right stems +x3=x4; y3=y1; +x5=x6; y5=y13; +%% top of bowls +x14=2/3[x13,x3]; top y14 = h; +x33=x4; y33=y13; +x34=2/3[x33,x5]; y34 = y14; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % left half +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +draw z13{pdir}..z14{right}..z33{down}--z4; +draw_roundserif(4,3,srad); +draw z33{pdir}..z34{right}..z5{down}--z6; +draw_roundserif(6,5,srad); +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 "CMIN letter N"; +beginchar("N", 2sb#+caprat*hstretch*(5/8x_height#+2jut#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +%% left stem +lft x1=pcshiftx+jut; top y1=h; +x2=x1; bot y2=0; +% start of bowl +x13=x1; y13=3/4h; +%% right stem +rt x4 = w-pcshiftx-jut; y4=y2; +x3 = x4; y3 = y13; +% top of bowl +x14 = 2/3[x13,x3]; top y14 = h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % left stem +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +draw z13{pdir}..z14{right}..z3{down}--z4; +draw_roundserif(4,3,srad); +ductus:=false; +penlabels(1,2,3,4,5,6,13,14,100); +endchar; % end "N" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{O} +% The letter `O'. +% \begin{macrocode} +cmchar "CMIN letter O"; +beginchar("O", 2sb#+caprat*hstretch*(3/4x_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; +draw z1..z2..z3..z4..cycle; +z5=(pcshiftx,-o); +obowl(5, w-2pcshiftx, h+2o); +%%ductus:=true; +if ductus: + pickup stylus; + draw obfirst; draw obsecond; draw obouter; draw obinner; +else: +%% fill obouter; unfill obinner; +fi +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 "CMIN letter P"; +beginchar("P", 2sb#+caprat*hstretch*(3/4x_height#+jut#), + caprat*x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% stem +lft x1=lft x2=pcshiftx+jut; +top y1=h; bot y2=-d; +%% bowl % from "d" +z3=3/4[(x1,0),z1]; +rt x5 = w-pcshiftx; y5=1/2h; +x4=1/2[x3,x5]; top y4 = h; +x6=x4; bot y6=0; +z7=1/4[(x1,0),z1]; + +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad) +draw z3{pdir}..z4{right}..z5{down}..z6{left}..z7; % bowl (from d) +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 "CMIN letter Q"; +beginchar("Q", 2sb#+caprat*hstretch*(3/4x_height#+jut#), + caprat*x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% right stem +rt x1=w-pcshiftx-jut; top y1=h; +x2=x1; bot y2=-d; +%% bowl +z3=1/4[(x1,0),z1]; +lft x5=pcshiftx; y5=1/2h; +x4=1/2[x3,x5]; bot y4=0; +x6=x4; top y6=h; +z7=3/4[(x1,0),z1]; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); +%%draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +draw z3{-pdir}..z4{left}..z5{up}..z6{right}..z7; +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 "CMIN letter R"; +beginchar("R", 2sb#+caprat*hstretch*(7/8x_height#+jut#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% stem +lft x1=lft x2=pcshiftx+jut; +top y1=h; bot y2=0; +%% bowl +z3=3/4[z2,z1]; +rt x5 = w-pcshiftx; y5=y3; +x4=1/2[x3,x5]; top y4 = h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +draw z3{pdir}..z4{right}..z5{pdir}; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,100); +endchar; % end "R" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{S} +% The letter `S'. This is a `long' S. +% \begin{macrocode} +cmchar "CMIN letter S"; +beginchar("S", 2sb#+caprat*hstretch*(3/4x_height#+clubjut#), + caprat*asc_height#, 0); +adjust_fit(0,0); +numeric n[]; +pcshiftx := sb; +pickup quill; +n1 := h/ascratio; % x-height +%% stem +lft x1=lft x2=pcshiftx+clubjut; top y1=n1; bot y2=0; +%% flick +x4=x2; y4 = 1/2n1; +rt x6=w-pcshiftx; y6 = 2/3h; +x5 = 2/3[x4,x6]; top y5=h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_clubserif(1,2,0.5); +draw_roundserif(2,1,srad); +draw z4{up}...z5{right}...z6; +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 "CMIN letter T"; +beginchar("T", 2sb#+caprat*hstretch*(x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% bar +top y3=h; n3 := h - top y3; +lft x1 = pcshiftx; rt x2=w-pcshiftx; +%%top y1 = y3-n3; bot y2=y3+n3; +y1 = y3-n3; y2=y3; +n1 := w; % width of bowl +n2 := h; % height of bowl +x3=1/2[x1,x2]; +lft x4 = pcshiftx + 1/8n1; y4 = 1/2h; +x5=x3; bot y5 = 0; +rt x6 = pcshiftx + 3/4n1; top y6 = 1/4h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1{pdir}..z3..z2{pdir}; % bar +draw z3..z4{down}..z5{right}..z6{pdir}; +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 "CMIN letter U"; +beginchar("U", 2sb#+caprat*hstretch*(5/8x_height#+2jut#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% left stem +lft x1 = pcshiftx + jut; top y1 = h; +% start of bowl +x13=x1; y13=1/3h; +% right stem +rt x3=w-pcshiftx-jut; 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; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z13{down}..z14{right}..z33{pdir}; +draw_flatserif(1,13,srad); +draw_tstem(3,4,srad); % right stem +draw_flatserif(3,4,srad); +draw_roundserif(4,3,srad); +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 "CMIN letter V"; +beginchar("V", 2sb#+caprat*hstretch*(3/4x_height#+jut#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +%% left stem +lft x1 = pcshiftx + jut; top y1 = h; +% start of bowl +x13=x1; y13=1/3h; +% right stem +rt x3=w-pcshiftx-jut; 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; +rt x23=w-pcshiftx; y23=3/4h; +lft x26=x14; top y26=h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z13{down}..z14{right}; % left stem +draw_flatserif(1,13,srad); +draw z14{pdir}..z23{up}..z26; + +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 "CMIN letter W"; +beginchar("W", 2sb#+caprat*hstretch*(x_height#+2jut#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +%% left stem +lft x1 = pcshiftx + jut; top y1 = h; +% start of bowl +x13=x1; y13=1/3h; +% right stem +rt x5=w-pcshiftx-jut; y5=y1; +x6=x5; bot y6=0; +z53=1/4[z6,z5]; % start of bowl +% middle stem +z3 = 1/2[z1,z5]; +z33=(x3,y13); +% middle of bowl +x14=1/3[x1,x3]; bot y14=0; +% middle of right bowl +x34=1/3[x3,x5]; y34=y14; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z13{down}..z14{right}..z33{pdir}; % left +draw_flatserif(1,13,srad); +draw z3--z33{down}..z34{right}..z53{pdir}; % middle +draw_flatserif(3,33,srad); +draw_tstem(5,6,srad); % right stem +draw_flatserif(5,6,srad); +draw_roundserif(6,5,srad); +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 "CMIN letter X"; +beginchar("X", 2sb#+caprat*hstretch*(x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +path pth[]; +numeric n[]; +pcshiftx := sb; +pickup quill; +n1 := w-2pcshiftx; % total width +n2 := thick; % triangle side +%% diag top left to bottom right +lft x1=pcshiftx; bot y1=2/3h; +x2=pcshiftx+1/7n1; top y2=h; +x5=pcshiftx+11/14n1; bot y5=-1/4d; +rt x6=pcshiftx+n1; top y6=1/6h; +z25 = 1/3[z2,z5]; +pth1 := z2{right}..z5{right}; +z251 = point 1/3 of pth1; +z252 = point 2/3 of pth1; +%% diag bottom left to top right +lft x10 = -w + 2pcshiftx; bot y10=-d; +x50=x5; top y50=h; +rt x60 = w -pcshiftx; bot y60=2/3h; +x40=pcshiftx+8/14n1; y40=h; + +x150=x2; bot y150 = 0; +lft x160 = pcshiftx; top y160=1/3h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1..z2{right}..z5{right}..z6; % top left to bottom right +%%draw z10{1/2pdir}..z25..z50{right}..z60; % bottom left to top right +draw z251..z50{right}..z60; % middle to top right +draw z252..z150{left}..z160; % middle to bottom left +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,10,25,251,252,40,50,150,60,160,100); +endchar; % end "X" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{Y} +% The letter `Y'. Modern, but with a dot on top. +% \begin{macrocode} +cmchar "CMIN letter Y"; +beginchar("Y", 2sb#+caprat*hstretch*(7/8x_height#+jut#), + caprat*x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +path pth[]; +numeric n[]; +pickup quill; +%% left stem top +lft x1 = pcshiftx + jut; top y1 = h; +bot y3 = 0; +%% right stem +rt x5=w-pcshiftx; top y5 = h; +lft x9=-1/2w; bot y9 = -d; +pth1 := z9{right}..z5{up}; +pth2 := (0,y3)--(w,y3); +z99 = pth1 intersectionpoint pth2; +x3 = x99; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1{down}..z3; % left stem +draw_flatserif(1,3,srad); +draw pth1; % right stem +draw_flatserif(5,3,srad); +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 "CMIN letter Z"; +beginchar("Z", 2sb#+caprat*hstretch*(x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +numeric n[]; +path pth[]; +pcshiftx := sb; +pickup quill; +%% top bar ends +top y12 = h; +n1 := h - y12; +lft x1 = pcshiftx; rt x2 = w-pcshiftx; +%%y1 = y12-n1; y2=y12+n1; +y1 = y12-n1; y2=y12; +x12 = 1/2[x1,x2]; +pth1 := z1{pdir}..z12{right}..z2{pdir}; +%% bottom bar ends +bot y34 = 0; +x3=x1; x4=x2; +%%y3=y34-n1; y4=y34+n1; +y3=y34-n1; y4=y34; +x34 = 1/2[x3,x4]; +pth2 := z3{pdir}..z34{right}..z4{pdir}; +%% diagonal +z5=z3; +pth3 := z5--(3/4w,h+jut); +z6 = pth3 intersectionpoint pth1; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw pth1; draw pth2; % bars +draw z5--z6; +ductus:=false; +penlabels(1,2,3,4,5,6,10o,10i,20o,20i,100); +endchar; % end "Z" + +% \end{macrocode} +% \end{routine} +% +% +% +% The end of this file +% \begin{macrocode} +% +% \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#+trijut#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +x1=w/2; top y1 = h; +z3=(x1, 1/2dot_size); +z2=(x1, y3+3/2dot_size); +draw z1--z2; +draw_pdot(3,dot_size); +penlabels(1,2,3); + +endchar; % end of "!" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{?} +% The `?' character, which had not been invented at this time. +% \begin{macrocode} + +cmchar "Question mark"; +beginchar("?", 2sb#+hstretch*(3/4x_height#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pickup quill; +n1 := w-2pcshiftx; % actual character width +n2 := 1/3h; % height of top bowl +n3 := n2; % height of bottom bowl +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/3h; +draw_pdot(1,dot_size); +draw_pdot(2,dot_size); +penlabels(1,2); +endchar; % end ":" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{;} +% The `;' character. +% \begin{macrocode} + +cmchar "Semicolon"; +beginchar(";",2sb#+hstretch*(comma_width#+dot_size#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb; +x1=x2=w-pcshiftx-(0.5hstretch*dot_size); y1=2/3h; y2=1/3h; +draw_pdot(1,dot_size); +draw_pcomma(2,dot_size,comma_width); +penlabels(1,2); +endchar; % end of ";" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{'} +% The `'' character. +% \begin{macrocode} + +cmchar "Apostrophe"; +beginchar("'",2sb#+hstretch*(comma_width#+dot_size#),4/3x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb; +x1=w-pcshiftx-(0.5hstretch*dot_size); y1=h; +draw_pcomma(1,dot_size,comma_width); +penlabels(1); +endchar; % end of "'" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{`} +% The ``' character. +% \begin{macrocode} + +cmchar "Reverse apostrophe"; +beginchar("`",2sb#+hstretch*(comma_width#+dot_size#),4/3x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb; +x1=pcshiftx+(0.5hstretch*dot_size); y1=h; +draw_plq(1,dot_size,comma_width); +penlabels(1); +endchar; % end of "`" + +% \end{macrocode} +% \end{routine} +% +% The end of this file. +% \begin{macrocode} +% +% \end{macrocode} +% +% +% \subsection{The ligatures and dashes file} +% +% The ligatured letters, punctuation marks and dashes are defined in this file. +% \begin{macrocode} +%<*lig> +% CMINLIG.MF Carolingian ligatured letters, punctation and dashes + +% \end{macrocode} +% First the ligtables. +% \begin{macrocode} + +ligtable "`": "`"=:oct"134"; +ligtable "'": "'"=:oct"042"; %% , "?" kern 2u#, "!" kern 2u#; + +ligtable "-": "-"=:oct"173"; +ligtable oct"173": "-"=:oct"174"; + +ligtable "c": "t"=:oct"014"; +ligtable "s": "t"=:oct"015"; + +% \end{macrocode} +% +% \begin{routine}{ct} +% The `ct' ligature. +% \begin{macrocode} + +cmchar "The ct ligature"; +beginchar(oct"014", 2sb#+hstretch*(6/4x_height#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pair vc[]; +pickup quill; +%%%%%%%%%%% C + +n1:=1/2(w-2pcshiftx); % actual letter width +n2 := h/ascratio; % x-height +x1=pcshiftx + 1/2n1; top y1 = n2; +lft x2 = pcshiftx; y2 = 1/2n2; +x3 = x1; bot y3 = 0; +rt x4 = n1; y4 = 1/4n2; +x6 = x4; +%%y6 = 3/4n2; +top y6 = y1; +pth1 := z6..z1{left}..z2{down}..z3{right}..z4{pdir}; +%%%%%%%%%%%%% T + +%% bar +top y33=n2; n3 := n2 - top y33; +%%lft x31 = n1+pcshiftx; +lft x31 = n1; +rt x32=w-pcshiftx; +%%top y31 = y33-n3; bot y32=y33+n3; +top y31 = y33-n3; y32=y33; +x33=1/2[x31,x32]; +pth2 := z31{pdir}..z33..z32{pdir}; % T bar +n31 := n1; % width of bowl +%%lft x34 = pcshiftx + n1 + 1/8n31; +lft x34 = n1 + 1/8n31; +y34 = 1/2n2; +x35=x33; bot y35 = 0; +rt x36 = pcshiftx + n1 + 3/4n31; top y36 = 1/4n2; +pth3 := z33..z34{down}..z35{right}..z36{pdir}; % T bowl + +%%%%%%%%%%%%%%%%% Ligature + +z51=z6; +z55=z33; +x53 = 1/2[x51,x55]; +top y53 = h; +vc51 := direction 0 of pth1; +vc55 := direction 0 of pth3; +pth4 := z51{vc51}..z53{right}..z55{vc55}; % loop +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw pth1; % C +draw pth2; % T bar +draw pth3; % T bowl +draw pth4; % ligature loop +ductus:=false; +penlabels(1,2,3,4,5,6,14,16,17,18,31,32,33,34,35,36,100); +endchar; % end of "ct" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{st} +% The `st' ligature. +% \begin{macrocode} + +cmchar "The st ligature"; +beginchar(oct"015", 2sb#+hstretch*(9/8x_height#+clubjut#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pair vc[]; +pickup quill; +%%%%%%%%%%% S + +n1:=3/7(w-2pcshiftx-clubjut); % actual letter width +n2 := h/ascratio; % x-height + +%% stem +lft x1=lft x2=pcshiftx+clubjut; top y1=n2; bot y2=0; +%% flick +x4=x2; y4 = 1/2n1; +%%%%%%%%%%%%% T + +%% bar +top y33=n2; n3 := n2 - top y33; +%%lft x31 = n1+pcshiftx; +lft x31 = n1; +rt x32=w-pcshiftx; +%%top y31 = y33-n3; bot y32=y33+n3; +top y31 = y33-n3; y32=y33; +x33=1/2[x31,x32]; +pth2 := z31{pdir}..z33..z32{pdir}; % T bar +n31 := n1; % width of bowl +%%lft x34 = pcshiftx + n1 + 1/8n31; +lft x34 = n1 + 1/8n31; +y34 = 1/2n2; +x35=x33; bot y35 = 0; +rt x36 = pcshiftx + n1 + 3/4n31; top y36 = 1/4n2; +pth3 := z33..z34{down}..z35{right}..z36{pdir}; % T bowl + +%%%%%%%%%%%%%%%%% Ligature + +z51=z4; +z55=z33; +x53 = 5/8[x51,x55]; +top y53 = h; +vc51 := up; +vc55 := direction 0 of pth3; +pth4 := z51{vc51}...z53{right}..z55{vc55}; % loop +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2; % S stem +draw_clubserif(1,2,0.5); +draw_roundserif(2,1,srad); +draw pth2; % T bar +draw pth3; % T bowl +draw pth4; % ligature loop +ductus:=false; +penlabels(1,2,3,4,5,6,14,16,17,18,31,32,33,34,35,36,100); +endchar; % end of "st" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{''} +% The `''' ligature. +% \begin{macrocode} + +cmchar "Closing quotes"; +beginchar(oct"042",2sb#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb; +x1=w-pcshiftx-(0.5hstretch*dot_size); y1=y2=h; +x2=x1-(2hstretch*dot_size); +draw_pcomma(1,dot_size,comma_width); % right +draw_pcomma(2,dot_size,comma_width); % left +penlabels(1,2); +endchar; % end of "''" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{``} +% The ```' ligature. +% \begin{macrocode} + +cmchar "Opening quotes"; +beginchar(oct"134",2sb#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb; +x1=pcshiftx+(0.5hstretch*dot_size); y1=y2=h; +x2=x1+(2hstretch*dot_size); +draw_plq(1,dot_size,comma_width); % left +draw_plq(2,dot_size,comma_width); % right +penlabels(1,2); +endchar; % end of "``" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{-} +% The `-' (hyphen) character. +% \begin{macrocode} + +cmchar "Hyphen"; +beginchar("-",sb#+hstretch*(0.8x_height#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb/2; +numeric alpha; alpha:=w/8; +%%pickup quill; +%%lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; +%%x11=lft x1+alpha/2; y11=top y1-0.5thin; +%%x12=rt x2; y12=bot y1+0.5thin; +%%draw_triangle(11,alpha); +%%draw_rutriangle(12,alpha); +%%pickup thickstylus; +pickup halfquill; +lft x21=pcshiftx+jut; rt x22=w-pcshiftx-jut; y21=y22=1/2h; +draw z21--z22; +draw_roundserif(21,22,srad); draw_flatserif(22,21,srad); +penlabels(1,2); +endchar; % end of "-" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{--} +% The `--' (en-dash) ligature. +% \begin{macrocode} + +cmchar "En dash"; +beginchar(oct"173",sb#+hstretch*(x_height#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb/2; +numeric alpha; alpha:=w/8; +pickup quill; +%%lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; +%%x11=lft x1+alpha/2; y11=top y1-0.5thin; +%%x12=rt x2; y12=bot y1+0.5thin; +%%draw_triangle(11,alpha); +%%draw_rutriangle(12,alpha); +%%pickup thickstylus; +pickup halfquill; +lft x21=pcshiftx+jut; rt x22=w-pcshiftx-jut; y21=y22=1/2h; +draw z21--z22; +draw_roundserif(21,22,srad); draw_flatserif(22,21,srad); +penlabels(1,2); +endchar; % end of "--" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{---} +% The `---' (em dash) ligature. The em dash is twice the width of the en dash. +% \begin{macrocode} + +cmchar "Em dash"; +beginchar(oct"174",sb#+hstretch*(2x_height#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb/2; +numeric alpha; alpha:=w/8; +pickup quill; +%%lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; +%%x11=lft x1+alpha/2; y11=top y1-0.5thin; +%%x12=rt x2; y12=bot y1+0.5thin; +%%draw_triangle(11,alpha); +%%draw_rutriangle(12,alpha); +%%pickup thickstylus; +pickup halfquill; +lft x21=pcshiftx+jut; rt x22=w-pcshiftx-jut; y21=y22=1/2h; +draw z21--z22; +draw_roundserif(21,22,srad); draw_flatserif(22,21,srad); +penlabels(1,2); +endchar; % end of "---" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{&} +% The ampersand (which is really an `et' ligature). +% \begin{macrocode} + +cmchar "CMIN ampersand"; +beginchar("&", 2sb#+hstretch*(5/4x_height#+2jut#), asc_height#, 0); +adjust_fit(0,0); +numeric n[]; +path pth[]; +pcshiftx:=sb; +pickup quill; +%% alpha looking part +n1 := w-2pcshiftx-jut; % actual letter width +n2 := h/ascratio; % x-height +n3 := 16/16n2; % height of alpha +x1 = w-pcshiftx; bot y1 = 0; +x3 = pcshiftx + 12/16n1; y3 = 1/2n3; % 10/16 too small +lft x5 = pcshiftx; y5=y3; +x4 = x6 = 1/2[x5,x3]; +top y4 = n3; bot y6 = 0; +rt x8 = w-pcshiftx-jut; top y8 = h; +x9 = x8-2jut; x10 = x8+2jut; +y9 = y10 = y8; +pth1 := z1{left}..z3..z4{left}..z5{down}..z6{right}..z3..z8{up}; +%% loop +z21 = z5; +z25 = point 1.5 of pth1; +x23 = 1/2[x21,x25]; +y23 = 6/8[y4,y8]; +pth2 := z21{up}..z23{right}..z25{down}; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw pth1; draw z9--z10; % alpha part +draw pth2; % loop +penlabels(1,2,3,4,5,6,7,8,9,10,16,17,18,19,21,22,23,24,25); +endchar; % end of "&" + +% \end{macrocode} +% \end{routine} +% +% +% The end of this file. +% \begin{macrocode} +% +% \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> +% CMINDIG.MF Program file for Carolingian Minuscule digits +% + +% \end{macrocode} +% +% +% +% \begin{routine}{1} +% The digit `1'. +% \begin{macrocode} +cmchar "Carolingian digit 1"; +beginchar("1", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +x1=x2=w/2; +y1=h; bot y2=0; +%%ductus:=true; +draw_tstem(1,2,srad); +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,100); +endchar; % end "1" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{2} +% The digit `2'. +% \begin{macrocode} +cmchar "Carolingian digit 2"; +beginchar("2", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +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; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_wave(5,6,thin); % foot +draw z1..z2{right}..z3{down}..{-pdir}z5wl; % curve +ductus:=false; +penlabels(1,2,3,4,5,6,100); +endchar; % end "2" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{3} +% The digit `3'. +% \begin{macrocode} +cmchar "Carolingian 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 "Carolingian digit 4"; +beginchar("4", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% the stem +x1=x2=w-pcshiftx-jut; +y1=h; bot y2=0; +% the crossbar +lft x3=pcshiftx; y3=0.33h; +rt x4=w-pcshiftx; y4=y3; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % main stem +draw_wave(3,4,thin); % crossbar +draw z3wl--z1; % diagonal +ductus:=false; +penlabels(1,2,3,4,100); +endchar; % end "4" + +% \end{macrocode} +% \end{routine} +% +% +% +% \begin{routine}{5} +% The digit `5'. +% \begin{macrocode} +cmchar "Carolingian digit 5"; +beginchar("5", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +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; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_wave(2,1,thin); % top squiggle +draw z3{pdir}..z5{down}..z6{left}..z7; % curve +draw z2wl--z3; % vertical +ductus:=false; +penlabels(1,2,3,4,5,6,7,100); +endchar; % end "5" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{6} +% The digit `6'. +% \begin{macrocode} +cmchar "Carolingian 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 "Carolingian digit 7"; +beginchar("7", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% top bar +lft x1=pcshiftx; +rt x2=w-pcshiftx; +top y1=top y2=h; +% bowed leg +x4=w/2; bot y4=0; +x3=0.5[x2,x4]-3thin; y3=0.5[y2,y4]; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_wave(1,2,thin); % top bar +draw z1wr..z3..z4; +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 "Carolingian 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 "Carolingian 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 "Carolingian 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; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,100); +endchar; % end "0" + +% \end{macrocode} +% \end{routine} +% +% +% The end of this file. +% \begin{macrocode} +% +% \end{macrocode} +% +% +% \section{The font definition files} \label{sec:fd} +% +% The font comes in normal and bold weights only. +% +% \begin{macrocode} +%<*fdot1> +\DeclareFontFamily{OT1}{cmin}{} + \DeclareFontShape{OT1}{cmin}{m}{n}{ <-8.5> cmin7 <8.5-15> cmin10 <15-> cmin17 }{} + \DeclareFontShape{OT1}{cmin}{m}{sl}{ <-> sub * cmin/m/n }{} + \DeclareFontShape{OT1}{cmin}{m}{it}{ <-> sub * cmin/m/n }{} + \DeclareFontShape{OT1}{cmin}{m}{sc}{ <-> sub * cmin/m/n }{} + \DeclareFontShape{OT1}{cmin}{m}{u}{ <-> sub * cmin/m/n }{} + \DeclareFontShape{OT1}{cmin}{bx}{n}{ <-8.5> cminb7 <8.5-15> cminb10 <15-> cminb17 }{} + \DeclareFontShape{OT1}{cmin}{bx}{it}{ <-> sub * cmin/bx/n }{} + \DeclareFontShape{OT1}{cmin}{bx}{sl}{ <-> sub * cmin/bx/n }{} + \DeclareFontShape{OT1}{cmin}{b}{n}{ <-> sub * cmin/bx/n }{} +% +% \end{macrocode} +% +% +% \begin{macrocode} +%<*fdt1> +\DeclareFontFamily{T1}{cmin}{} + \DeclareFontShape{T1}{cmin}{m}{n}{ <-8.5> cmin7 <8.5-15> cmin10 <15-> cmin17 }{} + \DeclareFontShape{T1}{cmin}{m}{sl}{ <-> sub * cmin/m/n }{} + \DeclareFontShape{T1}{cmin}{m}{it}{ <-> sub * cmin/m/n }{} + \DeclareFontShape{T1}{cmin}{m}{sc}{ <-> sub * cmin/m/n }{} + \DeclareFontShape{T1}{cmin}{m}{u}{ <-> sub * cmin/m/n }{} + \DeclareFontShape{T1}{cmin}{bx}{n}{ <-8.5> cminb7 <8.5-15> cminb10 <15-> cminb17 }{} + \DeclareFontShape{T1}{cmin}{bx}{it}{ <-> sub * cmin/bx/n }{} + \DeclareFontShape{T1}{cmin}{bx}{sl}{ <-> sub * cmin/bx/n }{} + \DeclareFontShape{T1}{cmin}{b}{n}{ <-> sub * cmin/bx/n }{} +% +% \end{macrocode} +% +% \section{The package code} \label{sec:code} +% +% \subsection{The \Lpack{carolmin} package} +% +% The \Lpack{carolmin} 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{carolmin}[2002/12/30 v1.0 package for Carolingian Minuscule 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}{\cminfamily} +% Selects the \thisfont{} font family in the OT1 or T1 encoding. +% \begin{macrocode} +\ifx\Tienc\encodingdefault + \newcommand{\cminfamily}{\usefont{T1}{cmin}{m}{n}} +\else + \newcommand{\cminfamily}{\usefont{OT1}{cmin}{m}{n}} +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\textcmin} +% Text command for the \thisfont{} font family. +% \begin{macrocode} +\DeclareTextFontCommand{\textcmin}{\cminfamily} +% \end{macrocode} +% \end{macro} +% +% The end of this package. +% \begin{macrocode} +% +% \end{macrocode} +% +% \subsection{The \Lpack{allcmin} package} +% +% The \Lpack{allcmin} 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{carolmin} package. +% \begin{macrocode} +%<*uscall> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{allcmin}[2002/12/30 v1.0 package for all Carolingian Minuscule fonts] +\RequirePackage{carolmin} +% \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}{cmin} +\renewcommand{\sfdefault}{cmin} +\renewcommand{\ttdefault}{cmin} +% \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}{\cmin@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{\cmin@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}{\cmin@new@setfontsize} +% This is a macro that replaces the |\@setfontsize| macro which is called by +% the font size changing commands. +% \begin{macrocode} +\newcommand{\cmin@new@setfontsize}[3]{% + \edef\@tempa{\def\noexpand\@tempb####1<#2}% + \@tempa>##2<##3\@nil{\def\cmin@baselineskip@value{##2}}% + \edef\@tempa{\noexpand\@tempb\cmin@baselineskip@table<#2}% + \@tempa><\@nil + \ifx\cmin@baselineskip@value\@empty + \def\cmin@baselineskip@value{#3}% + \fi + \cmin@old@setfontsize{#1}{#2}\cmin@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\cmin@old@setfontsize=\@setfontsize + \let\@setfontsize=\cmin@new@setfontsize} +\AtBeginDocument{\normalsize} +% \end{macrocode} +% +% +% The end of this package. +% \begin{macrocode} +% +% \end{macrocode} +% +% +% +% +% +% \Finale +% \PrintIndex +% +\endinput + +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} + + diff --git a/Master/texmf-dist/source/fonts/bookhands/carolmin.ins b/Master/texmf-dist/source/fonts/bookhands/carolmin.ins new file mode 100644 index 00000000000..c014d83af0e --- /dev/null +++ b/Master/texmf-dist/source/fonts/bookhands/carolmin.ins @@ -0,0 +1,101 @@ +%% +%% carolmin.ins +%% Copyright 1999 Peter R. Wilson +%% +%% This program is provided under the terms of the +%% LaTeX Project Public License distributed from CTAN +%% archives in directory macros/latex/base/lppl.txt. +%% +%% Author: Peter Wilson (CUA) +%% now at: peter.r.wilson@boeing.com +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\batchfile{carolmin.ins} +\input docstrip.tex +\preamble + + Copyright 1999 Peter R. Wilson + + This program is provided under the terms of the + LaTeX Project Public License distributed from CTAN + archives in directory macros/latex/base/lppl.txt. + +Author: Peter Wilson (CUA) + now at: peter.r.wilson@boeing.com + +\endpreamble + +\keepsilent + +%%% \Msg{*** Generating the driver file ***} +%%% \generateFile{carolmin.drv}{t}{\from{carolmin.dtx}{driver}} + +\Msg{*** Generating the Metafont files ***} + +\usepostamble\empty +\generateFile{cmin7.mf}{t}{\from{carolmin.dtx}{base7}} +\generateFile{cmin10.mf}{t}{\from{carolmin.dtx}{base10}} +\generateFile{cmin17.mf}{t}{\from{carolmin.dtx}{base17}} +\generateFile{cminb7.mf}{t}{\from{carolmin.dtx}{base7b}} +\generateFile{cminb10.mf}{t}{\from{carolmin.dtx}{base10b}} +\generateFile{cminb17.mf}{t}{\from{carolmin.dtx}{base17b}} +\generateFile{cminl.mf}{t}{\from{carolmin.dtx}{min}} +\generateFile{cminu.mf}{t}{\from{carolmin.dtx}{maj}} +\generateFile{cmintitle.mf}{t}{\from{carolmin.dtx}{mfd}} +\generateFile{cminpunct.mf}{t}{\from{carolmin.dtx}{punct}} +\generateFile{cminlig.mf}{t}{\from{carolmin.dtx}{lig}} +\generateFile{cmindig.mf}{t}{\from{carolmin.dtx}{dig}} + +\Msg{*** Generating the Font Definition files ***} +\usepostamble\defaultpostamble + +\generateFile{ot1cmin.fd}{t}{\from{carolmin.dtx}{fdot1}} +\generateFile{t1cmin.fd}{t}{\from{carolmin.dtx}{fdt1}} + +\Msg{*** Generating the LaTeX2e package files ***} + +\generateFile{carolmin.sty}{t}{\from{carolmin.dtx}{usc}} +\generateFile{allcmin.sty}{t}{\from{carolmin.dtx}{uscall}} + +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into directories searched by TeX:} +\Msg{*} +\Msg{* Move these into the font source area:} +\Msg{* \space\space cmin7.mf} +\Msg{* \space\space cmin10.mf} +\Msg{* \space\space cmin17.mf} +\Msg{* \space\space cminb7.mf} +\Msg{* \space\space cminb10.mf} +\Msg{* \space\space cminb17.mf} +\Msg{* \space\space cminl.mf} +\Msg{* \space\space cminu.mf} +\Msg{* \space\space cmintitle.mf} +\Msg{* \space\space cminpunct.mf} +\Msg{* \space\space cminlig.mf} +\Msg{* \space\space cmindig.mf} +\Msg{*} +\Msg{* Move these into the LaTeX macro area:} +\Msg{* \space\space ot1cmin.fd} +\Msg{* \space\space t1cmin.fd} +\Msg{* \space\space carolmin.sty} +\Msg{* \space\space allcmin.sty} +\Msg{*} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* `.dtx' through LaTeX.} +\Msg{* Process any name.idx file by:} +\Msg{* \space\space\space\space makeindex -s gind.ist name} +\Msg{* Process any name.glo file by:} +\Msg{* \space\space\space\space makeindex -s gglo.ist -o name.gls name.glo} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} + +\endinput diff --git a/Master/texmf-dist/source/fonts/bookhands/egothic.dtx b/Master/texmf-dist/source/fonts/bookhands/egothic.dtx new file mode 100644 index 00000000000..88a6cacefd8 --- /dev/null +++ b/Master/texmf-dist/source/fonts/bookhands/egothic.dtx @@ -0,0 +1,5036 @@ +% \iffalse meta-comment +% +% egothic.dtx +% Copyright 1999 Peter R. Wilson +% +% This program is provided under the terms of the +% LaTeX Project Public License distributed from CTAN +% archives in directory macros/latex/base/lppl.txt. +% +% Author: Peter Wilson (CUA) (now at: peter.r.wilson@boeing.com) +% +% If you do not have the docmfp package (available from CTAN in +% tex-archive/macros/latex/contrib/supported), comment out the +% \usepackage{docmfp} line below and uncomment the line following it. +% +%<*driver> +\documentclass{ltxdoc} +\usepackage{docmfp} +%%%%%% \providecommand{\DescribeVariable}[1]{} \newenvironment{routine}[1]{}{} +\EnableCrossrefs +\CodelineIndex +%% comment out next line to show the code +\OnlyDescription +\setcounter{StandardModuleDepth}{1} +\begin{document} + \DocInput{egothic.dtx} +\end{document} +% +% +% \fi +% +% \CheckSum{134} +% +% \DoNotIndex{\',\.,\@M,\@@input,\@addtoreset,\@arabic,\@badmath} +% \DoNotIndex{\@centercr,\@cite} +% \DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue} +% \DoNotIndex{\@input,\@ixpt,\@m} +% \DoNotIndex{\@minus,\@mkboth,\@ne,\@nil,\@nomath,\@plus,\@set@topoint} +% \DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb} +% \DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt} +% \DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt} +% \DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace} +% \DoNotIndex{\advance,\Alph,\alph} +% \DoNotIndex{\arabic,\ast,\begin,\begingroup,\bfseries,\bgroup,\box} +% \DoNotIndex{\bullet} +% \DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption} +% \DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass} +% \DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\endtrivlist} +% \DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup} +% \DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter} +% \DoNotIndex{\fbox} +% \DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef} +% \DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule} +% \DoNotIndex{\hsize,\hskip,\hspace,\hss,\if@tempswa,\ifcase,\or,\fi,\fi} +% \DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\fi,\fi,\fi,\fi,\fi} +% \DoNotIndex{\input} +% \DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark} +% \DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright} +% \DoNotIndex{\month,\newcommand,\newcounter,\newenvironment} +% \DoNotIndex{\NeedsTeXFormat,\newdimen} +% \DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number} +% \DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\p@} +% \DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip} +% \DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions} +% \DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright} +% \DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font} +% \DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily,\roman} +% \DoNotIndex{\roman,\secdef,\selectfont,\setbox,\setcounter,\setlength} +% \DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space} +% \DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase} +% \DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt} +% \DoNotIndex{\viipt,\vipt,\vskip,\vspace} +% \DoNotIndex{\wd,\xiipt,\year,\z@} +% +% \changes{v1.0}{2002/12/30}{First public release} +% +% \def\fileversion{v1.0} +% \def\filedate{2002/12/30} +% \newcommand*{\Lpack}[1]{\textsf {#1}} ^^A typeset a package +% \newcommand*{\Lopt}[1]{\textsf {#1}} ^^A typeset an option +% \newcommand*{\file}[1]{\texttt {#1}} ^^A typeset a file +% \newcommand*{\Lcount}[1]{\textsl {\small#1}} ^^A typeset a counter +% \newcommand*{\pstyle}[1]{\textsl {#1}} ^^A typeset a pagestyle +% \newcommand*{\Lenv}[1]{\texttt {#1}} ^^A typeset an environment +% \newcommand*{\AD}{\textsc{ad}} +% \newcommand*{\thisfont}{Early Gothic} +% +% \title{The \Lpack{Early Gothic} fonts\thanks{This +% file has version number \fileversion, last revised +% \filedate.}} +% +% \author{% +% Peter Wilson\\ +% Catholic University of America \\ +% Now at \texttt{peter.r.wilson@boeing.com} +% } +% \date{\filedate} +% \maketitle +% \begin{abstract} +% The \Lpack{egothic} and \Lpack{allegoth} packages provide a set of +% Metafont \thisfont{} book-hands +% as used +% for manuscripts in the 11th and 12th centuries. This is one in a series +% of manuscript fonts. +% \end{abstract} +% \tableofcontents +% \listoftables +% +% +% +% +% \section{Introduction} +% +% The \Lpack{egothic} and \Lpack{allegoth} packages provide a Metafont~\cite{METAFONT} version +% of the \thisfont{} manuscript book-hand that was in use between about the +% eleventh and twelfth centuries~\AD. It is part of a project to provide fonts +% covering the major manuscript hands between the first century~\AD{} and +% the invention of printing. The principal resources used in this project +% are listed in the Bibliography. +% +% This manual is typeset according to the conventions of the +% \LaTeX{} \textsc{docstrip} utility which enables the automatic +% extraction of the \LaTeX{} macro source files~\cite{GOOSSENS94}. +% The \Lpack{docmfp} package is used for documenting the Metafont portions +% of the distribution~\cite{DOCMFP}. +% +% Section~\ref{sec:usc} describes the usage of the package. +% Commented code for the fonts is in Sections~\ref{sec:mf} and~\ref{sec:fd} +% and source code for the package is in Section~\ref{sec:code}. +% +% \subsection{Manuscript book-hands} +% +% Before the invention of printing all books were written by hand. The book-hands +% used by the scribes and copyists for the manuscripts changed as time +% went on. Table~\ref{tab:1} lists some of the common book-hands which were used +% between the 1st and 15th centuries. The later book-hands formed the basis of the +% fonts used by the early printers, which in turn form the basis of the printing +% fonts in use today. +% +% The manuscript book-hands were written with a broad nibbed reed or quill +% pen. Among the distinguishing characteristics of a hand, apart from the +% actual shape of the letters, are the angle of the pen (which controls the +% variation between thick and thin strokes) and the height of a letter compared +% to the width of the nib. The lower the ratio of the letter height to nib +% width, the more condensed is the script. The scripts also varied in their +% typical height. +% +% Table~\ref{tab:1} gives an `average' x-height for each +% script, which I obtained by measuring a sample of photographs of +% manuscripts written in the various hands. About a dozen examples +% of each book-hand were measured. This figure should not be taken too +% seriously. +% +% There was not a sharp division between the use of one hand and another. +% Many manuscripts exhibit a variety of hands in the same document. For example, +% the scribe writing in an Uncial hand may have used Roman Rustic letters +% for capitals. Usually the same pen was used for the two different scripts. +% +% Generally speaking, as a hand got older it became more embelished, and +% therefore took longer to write. As this happened a new hand would appear that +% was faster, and which would eventually make the earlier one obsolete. +% +% Many of the book-hands were single-cased; that is, they did not have an +% upper- and lower-case as we do nowadays in Western scripts. On the other +% hand, a script might be majuscule or minuscule. A \textit{majuscule} script +% is one, like our upper-case, where the letters are drawn between two lines +% and are of a uniform height with no ascenders or descenders. +% A \textit{minuscule} script, like our lower-case, is drawn between four lines +% and has ascenders and descenders. +% +% \begin{table} +% \centering +% \caption{The main manuscript book-hands} \label{tab:1} +% \begin{tabular}{lccccc} \hline +% Name & Century & x-height & Height & Pen & Normalised \\ +% & & (mm) & (nib widths) & angle & height \\ \hline +% Roman Rustic & 1--6 & 5.7 & 4--6 & 45 & 1.90 \\ +% Uncial & 3--6 & 4.1 & 4--5 & 30 & 1.37 \\ +% Half Uncial & 3--9 & 3.2 & 3--6 & 20--30 & 1.07 \\ +% Artificial Uncial & 6--10 & 4.2 & 3--6 & 10 & 1.40 \\ +% Insular majuscule & 6--9 & 4.2 & 5 & 0--20 & 1.40 \\ +% Insular minuscule & 6 onward & 4.1 & 5--6 & 45--70 & 1.37 \\ +% Carolingian minuscule & 8--12 & 3.0 & 3--5 & 45 & 1.00 \\ +% Early Gothic & 11--12 & 3.8 & 4--6 & 20--45 & 1.27 \\ +% Gothic Textura & 13--15 & 3.9 & 3--5 & 30--45 & 1.30 \\ +% Gothic Prescius & 13 onward & 3.3 & 4--5 & 45 & 1.10 \\ +% Rotunda & 13--15 & 3.2 & 4--6 & 30 & 1.07 \\ +% Humanist minuscule & 14 onward & 3.0 & 4--5 & 30--40 & 1.00 \\ \hline +% \end{tabular} +% \end{table} +% +% During the period under consideration arabic numerals were effectively +% not used. At the beginning they were unknown and even though some knew +% of them towards the end, the glyphs used for them are not recognisable --- +% to me they look somewhat like cryllic letters --- and each locality +% and time had its own highly individualistic rendering. The general rule +% when using one of these book-hands is to write all numbers using +% roman numerals. +% +% The Roman alphabet consisted of 23 capital letters --- the J, U and W +% were absent. The book-hands initially used both a `u' and a `v' interchangeably +% but by the 10th century the practice had become to use the `v' before a vowel +% and the `u' otherwise. The letter corresponding to the W sound appeared +% in England around the 7th century in +% the form of the runic \textit{wen} character and by about the 11th century +% the `w' chacter was generally used. The `J' is the newest letter of all, not +% appearing until about the mid 16th century. +% +% In the first century punctuation was virtually unknown, and typically +% would not even be any additional space between individual words, never +% mind denoting ends of sentences. Sometimes a dot at mid-height would be +% used as a word seperator, or to mark off the end of a paragraph. Effectively +% a text was a continuous stream of letters. By the time that printing was +% invented, though, all of our modern punctuation marks were being used. +% +% Among all these manuscript hands, the Carolingian minuscule is the +% most important as our modern fonts are based on its letter shapes, and it is +% also at this point in time where the division occured between the black letter +% scripts as used even today in Germany, and the lighter fonts used elesewhere. +% The Rotunda and Humanist minuscule hands were developed in Italy and were +% essentially a rediscovery of the Carolingian minusucle. Guthenberg took the +% Gothic scripts as the model for his types. Later printers, +% such as Nicholas Jenson of Venice, +% took the Humanist scripts as their models. +% +% +% \subsection{The \thisfont{} script} +% +% Towards the end of the 10th century Carolingian Minuscule started to change, +% perhaps driven by an increased demand for books by a better educated public +% and the advent of what would become universities. Economics dictated that +% reproduction had to be quicker and that more words should be squeezed into +% a given space. +% +% To increase speed and word density, curves became straighter and the width +% of individual letter was decreased. The result is what is now called +% \thisfont, which was a short-lived intermediary between Carolingian +% Minuscule and the full blown Gothic scripts. +% +% The `ct' Carolingian ligature went out of fashion but the `half r' +% began to be used after any letter with a bowl. +% +% +% \section{The \Lpack{egothic} and \Lpack{allegoth} packages} \label{sec:usc} +% +% The \thisfont{} font family is called |egoth|. The font is supplied in both +% OT1 and T1 encodings. +% +% \subsection{The \Lpack{egothic} 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{\egothfamily} +% The |\egothfamily| 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{\textegoth} +% The command |\textegoth{|\meta{text}|}| will typeset \meta{text} using the +% \thisfont{} fonts. +% +% \subsection{The \Lpack{allegoth} 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{allegoth} package automatically loads the \Lpack{egothic} package, +% so its font commands are available if necessary. +% +% \StopEventually{ +% \bibliographystyle{alpha} +% \renewcommand{\refname}{Bibliography} +% \begin{thebibliography}{GMS94} +% \addcontentsline{toc}{section}{\refname} +% +% \bibitem[And69]{ANDERSON69} +% Donald M.~Anderson. +% \newblock {\em The Art of Written Forms: The Theory and Practice of Calligraphy}. +% \newblock Holt, Rinehart and Winston, 1969. +% +% \bibitem[Bol95]{BOLOGNA95} +% Giulia Bologna. +% \newblock {\em Illuminated Manuscripts: The Book before Gutenberg}. +% \newblock Crescent Books, 1995. +% +% \bibitem[Day95]{DAY95} +% Lewis F.~Day. +% \newblock {\em Alphabets Old \& New}. +% \newblock (3rd edition originally published by B.~T.~Batsford, 1910) +% \newblock Senate, 1995. +% +% \bibitem[Dro80]{DROGIN80} +% Marc Drogin. +% \newblock {\em Medieval Calligraphy: Its History and Technique}. +% \newblock Allenheld, Osmun \& Co., 1980. +% +% \bibitem[Dru95]{DRUCKER95} +% Johanna Drucker. +% \newblock {\em The Alphabetic Labyrinth}. +% \newblock Thames \& Hudson, 1995. +% +% \bibitem[Fir93]{FIRMAGE93} +% Richard A.~Firmage. +% \newblock {\em The Alphabet Abecedarium}. +% \newblock David R~Goodine, 1993. +% +% \bibitem[Fli98]{LETTRINE} +% Daniel Flipo. +% \newblock {\em The LETTRINE package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1998. +% +% \bibitem[Har95]{HARRIS95} +% David Harris. +% \newblock {\em The Art of Calligraphy}. +% \newblock DK Publishing, 1995. +% +% \bibitem[Jen95]{BETON} +% Frank Jensen. +% \newblock {\em The BETON package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1995. +% +% \bibitem[Joh71]{JOHNSTON75} +% Edward Johnston (ed. Heather Child). +% \newblock {\em Formal Penship and Other Papers}. +% \newblock Penthalic, 1971. +% +% \bibitem[Knu87]{CM} +% Donald E.~Knuth. +% \newblock {\em Computer Modern Typefaces}. +% \newblock Addison-Wesley, 1987. +% +% \bibitem[Knu92]{METAFONT} +% Donald E.~Knuth. +% \newblock {\em The METAFONTbook}. +% \newblock Addison-Wesley, 1992. +% +% \bibitem[GMS94]{GOOSSENS94} +% Michel Goossens, Frank Mittelbach, and Alexander Samarin. +% \newblock {\em The LaTeX Companion}. +% \newblock Addison-Wesley Publishing Company, 1994. +% +% \bibitem[Tho75]{THOMAS75} +% Alan G.~Thomas. +% \newblock {\em Great Books and Book Collectors}. +% \newblock Weidenfield and Nichoson, 1975. +% +% \bibitem[Wil99]{DOCMFP} +% Peter R.~Wilson. +% \newblock {\em The DOCMFP Package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1999. +% +% \bibitem[Wil99b]{ROMANNUM} +% Peter R.~Wilson. +% \newblock {\em The ROMANNUM Package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1999. +% +% \end{thebibliography} +% } +% +% \section{The Metafont code} \label{sec:mf} +% +% +% As previously noted, this work is part of a larger project to provide +% fonts covering the main manuscript book-hands. As such, one of the +% aims is to produce a coordinated set of fonts, especially as multiple +% hands might be used in a single document. +% +% Noting that the hands tend to be somewhat larger than the typical 10pt +% size (where the x-height is approximately 1.5mm) used for modern books, +% I have also designed the fonts +% at a larger than normal size, then applied some non-linear factors when reducing +% them down to a 10pt size. +% Further, I have used the height of the Carolingian minuscule as a +% normalising factor when deciding on the absolute height of any particular +% script. The x-height of the Carolingian font is made equal to the +% x-height of the Computer Modern Roman (CMR) font. +% +% Modern fonts are effectively drawn. That is, the outline of the letter is +% drawn carefully and the center is filled with ink. This is shown to good +% effect in the Metafont code for the Computer Modern fonts~\cite{CM}. +% In contrast, the manuscript letters were inked by single pen strokes in +% a calligraphic manner. I have tried to repeat this calligraphic style +% in the Metafont code. +% +% As much as possible I have tried to use parameter values from the +% Computer Modern Roman (CMR) fonts in order to reduce possible +% infelicities if the CM and manuscript fonts are used together. However, +% few of the CMR parameters are applicable to the calligraphic style. +% +% +% \subsection{The parameter file} +% +% We deal with the parameter files first, and start by announcing +% what they are for. The \thisfont{} font comes in three sizes and also as a normal +% and a bold font. +% \begin{macrocode} +%<*base7|base10|base17|base7b|base10b|base17b> +%%%% EGOTH7.MF Early Gothic at 7 point design size. +%%%% EGOTH10.MF Early Gothic at 10 point design size. +%%%% EGOTH17.MF Early Gothic at 17 point design size. +%%%% EGOTHB7.MF Early Gothic Bold at 7 point design size. +%%%% EGOTHB10.MF Early Gothic Bold at 10 point design size. +%%%% EGOTHB17.MF Early Gothic 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 + +%font_identifier:="EGOTH"; font_size 7pt#; +%font_identifier:="EGOTH"; font_size 10pt#; +%font_identifier:="EGOTH"; font_size 17.28pt#; +%font_identifier:="EGOTHB"; font_size 7pt#; +%font_identifier:="EGOTHB"; font_size 10pt#; +%font_identifier:="EGOTHB"; font_size 17.28pt#; + +% \end{macrocode} +% +% \DescribeVariable{jutstretch} +% The CMR scaling for lowercase serifs wrt 17pt size. +% \begin{macrocode} +% jutstretch:=1.19; +% jutstretch:=1.152; +% jutstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{stemstretch} +% The CMR scaling for lowercase stem widths wrt 17pt size. +% \begin{macrocode} +% stemstretch:=1.50; +% stemstretch:=1.31; +% stemstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{caprat} +% The scaling for `capitals' wrt `lowercase'. This is pretty much a guess +% (the ratio for CMR10 is 1.59). +% \begin{macrocode} + caprat:=1.5; % ratio of capital height to minuscule height +% \end{macrocode} +% +% \DescribeVariable{cap_jutstretch} +% The CMR scaling for uppercase serifs wrt 17pt size. +% \begin{macrocode} +% cap_jutstretch:=1.3; +% cap_jutstretch:=1.2; +% cap_jutstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{cap_stemstretch} +% The CMR scaling for uppercase stem width wrt 17pt size. +% \begin{macrocode} +% cap_stemstretch:=1.45; +% cap_stemstretch:=1.31; +% cap_stemstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{bfudge} +% Letter width scaling for bold font wrt normal font. +% \begin{macrocode} +% bfudge:=1.0; +% bfudge:=1.2; +% \end{macrocode} +% +% \DescribeVariable{szfudge} +% Width scaling wrt 17pt letter width. +% \begin{macrocode} +% szfudge:=1.18; +% szfudge:=1.0; +% szfudge:=1.0; +% \end{macrocode} +% +% \DescribeVariable{hstretch} +% Horizontal stretching factor wrt 17pt size letter width. +% \begin{macrocode} + hstretch:=szfudge*bfudge; +% \end{macrocode} +% +% \DescribeVariable{carol_height} +% The x-height of the Carolingian gothic font. +% \begin{macrocode} +% carol_height#:=108.5/36pt#; +% carol_height#:=155/36pt#; +% carol_height#:=268/36pt#; +% \end{macrocode} +% +% \DescribeVariable{vstretch} +% The height of this font wrt the Carolingian font. +% \begin{macrocode} + vstretch:=1.27; + +% \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} +% u#:=15.5/36pt#; +% u#:=20/36pt#; +% u#:=32.5/36pt#; +% u#:=17.9/36pt#; +% u#:=23/36pt#; +% 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 +% cap_serif_fit#:=3.5/36pt#; % extra sidebar near uppercase serifs +% cap_serif_fit#:=5/36pt#; % extra sidebar near uppercase serifs +% cap_serif_fit#:=8/36pt#; % extra sidebar near uppercase serifs +% letter_fit#:=0pt#; % extra space added to all sidebars +% letter_fit#:=0pt#; % extra space added to all sidebars +% letter_fit#:=-0.1pt#; % extra space added to all sidebars +% \end{macrocode} +% +% \DescribeVariable{sb} +% A length used for adjusting the side bearings of characters. +% This is normally |1/2u| but decrease by 3/4 for Gothic lowercase. +% \begin{macrocode} +% sb#:=3/8u#; % unit for side bearings +% sb#:=3/8u#; % unit for side bearings +% sb#:=3/8u#; % unit for side bearings + +% \end{macrocode} +% +% \DescribeVariable{cap_sb} +% A length used for adjusting the side bearings of uppercase characters. +% \begin{macrocode} +% cap_sb#:=4/3sb#; % unit for uppercase side bearings +% cap_sb#:=4/3sb#; % unit for side bearings +% cap_sb#:=4/3sb#; % unit for side bearings + +% \end{macrocode} +% +% \DescribeVariable{cap_height} +% The height of capital letters. +% \begin{macrocode} +% cap_height#:=172.2/36pt#; % height of caps +% cap_height#:=246/36pt#; % height of caps +% cap_height#:=425/36pt#; % height of caps +% \end{macrocode} +% +% \DescribeVariable{thickfudge} +% The reciprocal of the font height in nib widths. Normal font height +% is 6 nib widths and the bold font height is 5 nib widths. +% \begin{macrocode} +% thickfudge:=1/6; +% thickfudge:=1/5; +% \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:=35; % pen angle +% \end{macrocode} +% +% \DescribeVariable{cappangle} +% The pen angle for capitals (in degrees). +% \begin{macrocode} +cappangle:=0; % pen angle +cappangle := pangle; +% \end{macrocode} +% +% \DescribeVariable{ascratio} +% The height of lower case ascenders wrt |x_height|. +% \begin{macrocode} + ascratio:=6/4; +% \end{macrocode} +% +% \DescribeVariable{asc_height} +% The height of lower case ascenders. +% \begin{macrocode} + asc_height#:=ascratio*x_height#; +% \end{macrocode} +% +% \DescribeVariable{descratio} +% The depth of lower case descenders wrt |x_height|. +% \begin{macrocode} + descratio:=2/4; +% \end{macrocode} +% +% \DescribeVariable{desc_depth} +% The depth of lower case descenders. +% \begin{macrocode} + desc_depth#:=descratio*x_height#; +% \end{macrocode} +% +% \DescribeVariable{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} +% rule_thickness#:=.34pt#; +% rule_thickness#:=.4pt#; +% 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 Capitals flat serif protrusion. +% \begin{macrocode} +sqrcjut# := 2cap_jutstretch*thin#; +% \end{macrocode} +% +% \DescribeVariable{sqrcjutrat} +% Ratio of Square Capitals 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} +% o#:=5/36pt#; +% o#:=8/36pt#; +% 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 egothtitle %% switch to the driver file + +% \end{macrocode} +% +% The end of this code section. +% \begin{macrocode} +% +% \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 EGOTHTITLE.MF for the Early Gothic 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}{egothic_font_setup} +% This macro contains the set up for the \thisfont{} fonts. +% \begin{macrocode} + +def egothic_font_setup= % contains special stuff for egothic fonts + define_pixels(side,half_height,carol_height,comma_width); + define_pixels(u,dot_size,letter_size,cap_height,width_adj,serif_fit, + cap_serif_fit,jut,clubjut,cap_jut,trijut); + define_pixels(fig_width); + define_whole_pixels(letter_fit,sb,cap_sb); + define_whole_vertical_pixels(body_height,asc_height,cap_height,x_height, + desc_depth,body_depth,fig_height); + define_corrected_pixels(o); + define_blacker_pixels(thick,thin); + define_pixels(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 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} +% +% \DescribeVariable{capquill} +% The normal calligraphic pen for capitals is |capquill|. +% \begin{macrocode} + pickup pencircle xscaled thick yscaled thin rotated cappangle; + capquill:=savepen; + +% \end{macrocode} +% +% \DescribeVariable{capthinquill} +% A pen with a fraction of the width as capquill (but with the same thinness). +% \begin{macrocode} + pickup pencircle xscaled 3/8thick yscaled thin rotated cappangle; %% 1/4 too small + capthinquill := 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 egothic_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 $0y$$: + 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 $0y$$: + 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 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; +egothic_font_setup; + +% \end{macrocode} +% +% +% We generate letters, together with some punctuation and +% analphabetics. +% \begin{macrocode} + +input egothl; % lower case +input egothu; % capitals +input egothpunct; % punctuation +input egothlig; % the several dashes +input egothdig; % 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. + +% +% \end{macrocode} +% +% \subsection{The code for normal letters} +% +% The following code is for the lower case characters. +% +% \begin{macrocode} +%<*min> +% EGOTHL.MF Program file for Early Gothic lower case +% + +% \end{macrocode} +% +% +% \begin{routine}{a} +% The letter `a'. +% \begin{macrocode} +cmchar "EGOTH letter a"; +beginchar("a", 2sb#+hstretch*(9/16x_height#+jut#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pair pr[]; +pickup quill; +n1 := w - 2pcshiftx -jut; % effective letter width +% "stem" +rt x1 = w-pcshiftx-jut; top y1=h; +x2 = x1; bot y2=0; +z16 = 1/6[z2,z1]; +rt x6 = x16; y6=y16; +lft x4 = pcshiftx; y4 = 1/2h; +% stem path +pth1 := z1--z2; +pr1 := direction 1 of pth1; +z20 = z2 shifted -10pr1; + +z11 = point 3/13 of pth1; z15 = point 10/13 of pth1; +lft x13 = pcshiftx; y13=1/4h; +n2 := y13 - bot y13; +z23 = (x13, y13+n2); +z33 = (x13, y13-n2); +%%ductus:=true; +if ductus: + pickup stylus; +else: + % draw stem + draw pth1; + draw_roundserif(1,2,srad); + draw_roundserif(2,1,srad); + % draw bowl +%% draw z1{-pdir}..z4{down}..z6{pdir}; + draw z11{-pdir}..z23{down}..z33..z15{pdir}; +fi +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 "EGOTH letter b"; +beginchar("b", 2sb#+hstretch*(11/16x_height#+jut#), + asc_height#, 0); +adjust_fit(0,0); +numeric n[]; +path pth[]; +pcshiftx := sb; +pickup quill; +n1:=w-2pcshiftx; % actual letter width +n2:=h/ascratio; % top of bowl +%%ductus:=true; +lft x1 = pcshiftx+jut; top y1=h; +x3 = x1; y3=2/8n2; +rt x5 = w-pcshiftx; y5=y3; +x4 = 1/2[x3,x5]; bot y4=0; +x6=1/2[x4,x5]; top y6=n2; +pth1 := z1..z3{down}..z4{right}.. z5{up}; +z98=(0,3/4n2); z99=(w,y98); +pth2 := z98--z99; +%z7 = pth1 intersectionpoint pth2; +z7=(x1,6/8n2); +if ductus: + pickup stylus; +fi +draw z1--z3{down}..z4{right}..z5{up}..z6; +draw z6--z7; +draw_flatserif(1,3,srad); +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 "EGOTH letter c"; +beginchar("c", 2sb#+hstretch*(9/16x_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{pdir}; +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 "EGOTH letter d"; +beginchar("d", 2sb#+hstretch*(11/16x_height#+jut#), + asc_height#, 0); +adjust_fit(0,0); +numeric n[]; +path pth[]; +pcshiftx := sb; +pickup quill; +n1 = h/ascratio; % x-height +rt x1=w-pcshiftx-jut; top y1=h; +x2 = x1; bot y2=0; +x3 = x1; y3 = 1/4n1; +lft x5 = pcshiftx; y5=6/8n1; +x4 = 3/8[x3,x5]; bot y4 = 0; +x6=1/2[x4,x5]; top y6 = n1; +x7=x3; top y7=n1; +rt x8 = w-pcshiftx; y8=n1; +if ductus: + pickup stylus; +fi +draw z1--z2; +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +draw z3..z4{left}..z5{up}..z6; +draw z6..z7..z8; +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 "EGOTH letter e"; +beginchar("e", sb#+hstretch*(15/16x_height#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pickup quill; +n1 := w-pcshiftx; % actual letter width +n2 := 6/8n1; % width of bowl +x1 = pcshiftx + 5/8n2; top y1=h; +lft x2 = pcshiftx; y2 = 1/2h; +x3 = pcshiftx + 1/2n2; bot y3 = 0; +rt x4 = pcshiftx + n2; y4 = 1/4h; +%%z98=(0,3/8h); z99=(w,y98); +z98=(0,2/8h); z99=(w,y98); +pth1 := z98--z99; +pth2 := z1{left}..z2{down}..z3{right}; +z7 = pth1 intersectionpoint pth2; +rt x9 = w-pcshiftx; y9 = 3/4h; +z8=1/2[z7,z9]; + +z70 = z7 shifted 10pdir; +z17 = whatever[z7,z70]; +%%x17 = w-pcshiftx; +top y17 = h; + +rt x27=w-pcshiftx; top y27=h; +pth3 := z7--z27; % diagonal +pth4 := z1--z9; + +z34 = pth3 intersectionpoint pth4; +pth5 := z34--z1{left}...z2{down}..z3{right}..z4{pdir}; % bowl +%%ductus:=true; +if ductus: + pickup stylus; +fi +%%draw z7{pdir}..z1{left}..z2{down}..z3{right}..z4{pdir}; +%%draw z7{pdir}..z8{right}..z9{pdir}; +%%draw z7--z17; +draw pth5; % bowl +draw pth3; % diagonal +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,17,27,34,70,100); +endchar; % end "e" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{f} +% The letter `f'. +% \begin{macrocode} +cmchar "EGOTH letter f"; +beginchar("f", 2sb#+hstretch*(9/16x_height#+jut#), + (asc_height#), 0); +adjust_fit(0,0); +numeric n[]; +pcshiftx := sb; +pickup quill; +n1 := h/ascratio; % x-height +%% stem +lft x1=lft x2=pcshiftx+jut; top y1=h; bot y2=0; +%% flick +x4=x2; y4 = 1/2n1; +%%rt x6=w-pcshiftx; y6 = 2/3h; +%%x5 = 2/3[x4,x6]; top y5=h; +x6 = x1; y6=y1; rt x8 = w-pcshiftx; y8=h; +%% bar +z14=1/2[z4,z1]; +rt x16 = w -pcshiftx; bot y16 = y14; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +draw z6{right}..z8{pdir}; % top +draw z14{right}..z16{pdir}; % bar +ductus:=false; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,14,15,16,100); +endchar; % end "f" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{g} +% The letter `g'. +% \begin{macrocode} +cmchar "EGOTH letter g"; +beginchar("g", 2sb#+hstretch*(12/16x_height#+2jut#), + x_height#, desc_depth#); +adjust_fit(0,0); +path pth[]; +pair vec[]; +numeric n[]; +pcshiftx := sb; +pickup quill; +n1 := 4/5w - 2pcshiftx; % width of top o +%% S shape +x1 = x3 = x5 = 1/2w; +top y1 = h; bot y5 = -d; y3 = 1/2[y1,y5]; +lft x2 = pcshiftx + jut; rt x4 = w - pcshiftx - jut; +y2 = 1/2[y1,y3]; y4 = 1/2[y3,y5]; +%% bow +z12 = (x4,y2); +lft x16 = pcshiftx; bot y16=-d; +pth2 := z16...z12{up}...z1; +n2 := top y5; +pth3 := (0, n2)--(w, n2); +z6 = pth3 intersectionpoint pth2; +%% top flick +%lft x11 = rt x1; y11=y1; +z11=z1; +rt x13 = w-pcshiftx; y13 = h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1..z2{down}..z3..z4{down}..z5{left}..z6; % S +draw pth2; % bow +draw z11{right}..z13{pdir}; % flick +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,11,12,13,31,32,33,34,35,36,100); +endchar; % end "g" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{h} +% The letter `h'. +% \begin{macrocode} +cmchar "EGOTH letter h"; +beginchar("h", 2sb#+hstretch*(11/16x_height#+jut#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +numeric n[]; +%% stem +lft x1=lft x2=pcshiftx+jut; +top y1=h; bot y2=0; +%% bowl +z3=1/2[z2,z1]; +rt x5 = w-pcshiftx; y5=y3; +x4=9/16[x3,x5]; top y4 = h/ascratio; +%%lft x6=x4; bot y6=0; +x6=9/16[x4,x5]; +bot y6=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +draw z3--z4{right}...z5{down}...z6{-pdir}; + +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 "EGOTH letter i"; +beginchar("i", 2sb#+hstretch*(thick#+2jut#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +lft x1=lft x2=pcshiftx+jut; +top y1=h; bot y2=0; +%%ductus:=true; +draw_tstem(1,2,srad); +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +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 "EGOTH letter j"; +beginchar("j", sb#+hstretch*(3/8x_height#), + x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% stem +rt x1 = w-pcshiftx; top y1 = h; +x2=x1; y2=-1/2d; +%% bottom hook +lft x3 = 0; bot y3 = -d; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2; % stem +draw_flatserif(1,2,srad); +draw z2{down}..z3{-pdir}; % hook +ductus:=false; +penlabels(1,2,3,100); +endchar; % end "j" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{k} +% The letter `k'. +% \begin{macrocode} +cmchar "EGOTH letter k"; +beginchar("k", 2sb#+hstretch*(13/16x_height#+jut#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +path pth[]; +numeric n[]; +pickup quill; +%% stem +n1 = h/ascratio; % x-height +lft x1=lft x2=pcshiftx+jut; +y1=h; bot y2=0; +%% top arm +%%z3=(x1,1/2n1); +x3 = x1; top y3 = 1/2n1; +rt x5=5/8[x1,w-pcshiftx]; top y5=n1; +x4=1/2[x3,x5]; top y4=n1; +pth1 := z3{pdir}..z5{up}; +%% lower arm +pth2 := (rt x1,0)--(rt x1,h); +z13 = pth1 intersectionpoint pth2; +pickup threequarterquill; +lft x14 = x13; bot y14 = y13; +rt x7=w-pcshiftx; bot y7=0; +pickup quill; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +draw pth1; % upper arm +pickup threequarterquill; +%%draw z14{down}..z7{-ppdir}; % lower arm +%%draw z14{down}..z7; % lower arm +draw z14{-ppdir}..z7{right}; % lower arm +pickup quill; +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 "EGOTH letter l"; +beginchar("l", 2sb#+hstretch*(thick#+2jut#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +lft x1=pcshiftx+jut; top y1=h; +x2=x1; bot y2 =0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +ductus:=false; +penlabels(1,2,3,4,100); +endchar; % end "l" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{m} +% The letter `m'. +% \begin{macrocode} +cmchar "EGOTH letter m"; +beginchar("m", 2sb#+hstretch*(15/16x_height#+2jut#), % 12/16 too narrow, 14 a bit + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pickup quill; +%% left stem +lft x1=pcshiftx+jut; top y1=h; +x2=x1; bot y2=0; +%% start of bowl +x13=x1; y13=3/4h; +%% bottom of right and middle stems +rt x6 = w -pcshiftx - jut; y6=y2; +z4 = 1/2[z2,z6]; +%% top of middle and right stems +x3=x4; y3=y1; +x5=x6; y5=y13; +%% top of bowls +x14=2/3[x13,x3]; top y14 = h; +x33=x4; y33=y13; +x34=2/3[x33,x5]; y34 = y14; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % left half +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +draw z13--z14{right}..z33{down}--z4; +draw_roundserif(4,3,srad); +draw z33--z34{right}..z5{down}--z6; +draw_roundserif(6,5,srad); +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 "EGOTH letter n"; +beginchar("n", 2sb#+hstretch*(9/16x_height#+2jut#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +%% left stem +lft x1=pcshiftx+jut; top y1=h; +x2=x1; bot y2=0; +% start of bowl +x13=x1; y13=3/4h; +%% right stem +rt x4 = w-pcshiftx-jut; y4=y2; +x3 = x4; y3 = y13; +% top of bowl +x14 = 2/3[x13,x3]; top y14 = h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % left stem +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +draw z13--z14{right}..z3{down}--z4; +draw_roundserif(4,3,srad); +ductus:=false; +penlabels(1,2,3,4,5,6,13,14,100); +endchar; % end "n" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{o} +% The letter `o'. +% \begin{macrocode} +cmchar "EGOTH letter o"; +beginchar("o", 2sb#+hstretch*(3/4x_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; +draw z1..z2..z3..z4..cycle; +z5=(pcshiftx,-o); +obowl(5, w-2pcshiftx, h+2o); +%%ductus:=true; +if ductus: + pickup stylus; + draw obfirst; draw obsecond; draw obouter; draw obinner; +else: +%% fill obouter; unfill obinner; +fi +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 "EGOTH letter p"; +beginchar("p", 2sb#+hstretch*(11/16x_height#+jut#), + x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% stem +lft x1=lft x2=pcshiftx+jut; +top y1=h; bot y2=-d; +%% bowl % from "d" +z3=3/4[(x1,0),z1]; +rt x5 = w-pcshiftx; y5=1/2h; +x4=1/2[x3,x5]; top y4 = h; +x6=x4; bot y6=0; +z7=1/4[(x1,0),z1]; + +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad) +draw z3--z4; draw z4..z5{down}..z6{left}..z7; +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 "EGOTH letter q"; +beginchar("q", 2sb#+hstretch*(3/4x_height#+jut#), + x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% right stem +rt x1=w-pcshiftx-jut; top y1=h; +x2=x1; bot y2=-d; +%% bowl +z3=1/4[(x1,0),z1]; +lft x5=pcshiftx; y5=1/2h; +x4=1/2[x3,x5]; bot y4=0; +x6=x4; top y6=h; +%%z7=3/4[(x1,0),z1]; +z7=z1; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); +%%draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +draw z3{-pdir}..z4{left}..z5{up}..z6{right}..z7{pdir}; +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 "EGOTH letter r"; +beginchar("r", 2sb#+hstretch*(13/16x_height#+jut#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% stem +lft x1=lft x2=pcshiftx+jut; +top y1=h; bot y2=0; +%% bowl +z3=3/4[z2,z1]; +rt x5 = w-pcshiftx; y5=y3; +x4=1/2[x3,x5]; top y4 = h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +draw z3{pdir}..z4{right}..z5{pdir}; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,100); +endchar; % end "r" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{s} +% The letter `s'. This is a `long' S. +% \begin{macrocode} +cmchar "EGOTH letter s"; +beginchar("s", 2sb#+hstretch*(11/16x_height#+jut#), + 5/6asc_height#, 0); +adjust_fit(0,0); +numeric n[]; +pcshiftx := sb; +pickup quill; +n1 := (6/5h)/ascratio; % x-height +%% stem +lft x1=lft x2=pcshiftx+jut; top y1=n1; bot y2=0; +%% flick +x4=x2; y4 = 1/2n1; +rt x6=w-pcshiftx; top y6 = h; +x5 = 1/2[x4,x6]; +%top y5 = y6; +y5 = y6; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +%%draw z4--z5--z6; +draw z1--z5--z6; +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 "EGOTH letter t"; +beginchar("t", 2sb#+hstretch*(15/16x_height#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% bar +top y3=h; n3 := h - top y3; +lft x1 = pcshiftx; rt x2=w-pcshiftx; +%%top y1 = y3-n3; bot y2=y3+n3; +y1 = y3-n3; y2=y3; +n1 := w; % width of bowl +n2 := h; % height of bowl +x3=1/2[x1,x2]; +lft x4 = pcshiftx + 1/8n1; y4 = 1/2h; +x5=x3; bot y5 = 0; +rt x6 = pcshiftx + 3/4n1; top y6 = 1/4h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1{pdir}..z3..z2{pdir}; % bar +draw z3..z4{down}..z5{right}..z6{pdir}; +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 "EGOTH letter u"; +beginchar("u", 2sb#+hstretch*(9/16x_height#+2jut#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% left stem +lft x1 = pcshiftx + jut; top y1 = h; +% start of bowl +x13=x1; y13=1/3h; +% right stem +rt x3=w-pcshiftx-jut; 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; +%%ductus:=true; +if ductus: + pickup stylus; +fi +%%draw z1--z13{down}...z14{right}...z33{pdir}; +draw z1--z13--z14{right}...z33{pdir}; +draw_flatserif(1,13,srad); +draw_tstem(3,4,srad); % right stem +draw_flatserif(3,4,srad); +draw_roundserif(4,3,srad); +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 "EGOTH letter v"; +beginchar("v", 2sb#+hstretch*(11/16x_height#+jut#), % 13/16 too wide + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +%% left stem +lft x1 = pcshiftx + jut; top y1 = h; +%% right stem +rt x5=w-pcshiftx; top y5 = h; +bot y3 = 0; +x3 = 1/2[x1,x5]; +z51 = (x1,0); z55=(x5,0); +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1{down}..z3; % left stem +draw_flatserif(1,51,srad); +draw z5{down}..z3; % right stem +draw_flatserif(5,55,srad); +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 "EGOTH letter w"; +beginchar("w", 2sb#+hstretch*(15/16x_height#+2jut#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +%% left stem +lft x1 = pcshiftx + jut; top y1 = h; +% start of bowl +x13=x1; y13=1/3h; +% right stem +rt x5=w-pcshiftx-jut; y5=y1; +x6=x5; bot y6=0; +z53=1/4[z6,z5]; % start of bowl +% middle stem +z3 = 1/2[z1,z5]; +z33=(x3,y13); +% middle of bowl +x14=1/3[x1,x3]; bot y14=0; +% middle of right bowl +x34=1/3[x3,x5]; y34=y14; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z13--z14{right}...z33{pdir}; % left +draw_flatserif(1,13,srad); +draw z3--z33--z34{right}...z53{pdir}; % middle +draw_flatserif(3,33,srad); +draw_tstem(5,6,srad); % right stem +draw_flatserif(5,6,srad); +draw_roundserif(6,5,srad); +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 "EGOTH letter x"; +beginchar("x", 2sb#+hstretch*(15/16x_height#), + x_height#, desc_depth#); +adjust_fit(0,0); +path pth[]; +numeric n[]; +pcshiftx := sb; +pickup quill; +n1 := w-2pcshiftx; % total width +n2 := thick; % triangle side +%% diag top left to bottom right +lft x1=pcshiftx+jut; top y1=h; +rt x2=w-pcshiftx-jut; bot y2=0; +z251 = 7/16[z1,z2]; +%%z252 = 9/16[z1,z2]; +z252 = z251; +%% diag middle to top right +x60 = w-pcshiftx; +top y50 = h; +x50 = 1/2[x251,x60]; +top y60 = y50; +%% diag bottom left to middle +x10 = -1/3w; bot y10=-d; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2; % top left to bottom right +draw_flatserif(1,2,srad); draw_roundserif(2,1,srad); +draw z251...z50{right}...z60; % middle to top right +draw z10{right}..z252; % bottom left to middle +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,10,25,251,252,40,50,150,60,160,100); +endchar; % end "x" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{y} +% The letter `y'. Modern, but with a dot on top. +% \begin{macrocode} +cmchar "EGOTH letter y"; +beginchar("y", 2sb#+hstretch*(11/16x_height#+jut#), + x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +path pth[]; +numeric n[]; +pickup quill; +%% left stem top +lft x1 = pcshiftx + jut; top y1 = h; +bot y3 = 0; +%% right stem +rt x5=w-pcshiftx; top y5 = h; +lft x9=-1/2w; bot y9 = -d; +pth1 := z9{right}..z5{up}; +pth2 := (0,y3)--(w,y3); +z99 = pth1 intersectionpoint pth2; +x3 = x99; +z51 = (x1,0); z55=(x5,0); +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1{down}..z3; % left stem +draw_flatserif(1,51,srad); +draw pth1; % right stem +draw_flatserif(5,55,srad); +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 "EGOTH letter z"; +beginchar("z", 2sb#+hstretch*(15/16x_height#), + x_height#, 0); +adjust_fit(0,0); +numeric n[]; +path pth[]; +pcshiftx := sb; +pickup quill; +%% top bar ends +top y12 = h; +n1 := h - y12; +lft x1 = pcshiftx; rt x2 = w-pcshiftx; +%%y1 = y12-n1; y2=y12+n1; +y1 = y12-n1; y2=y12; +x12 = 1/2[x1,x2]; +pth1 := z1{pdir}..z12{right}..z2{pdir}; +%% bottom bar ends +bot y34 = 0; +x3=x1; x4=x2; +%%y3=y34-n1; y4=y34+n1; +y3=y34-n1; y4=y34; +x34 = 1/2[x3,x4]; +pth2 := z3{pdir}..z34{right}..z4{pdir}; +%% diagonal +z5=z3; +pth3 := z5--(3/4w,h+jut); +z6 = pth3 intersectionpoint pth1; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw pth1; draw pth2; % bars +draw z5--z6; +ductus:=false; +penlabels(1,2,3,4,5,6,10o,10i,20o,20i,100); +endchar; % end "z" + +% \end{macrocode} +% \end{routine} +% +% +% The end of this file +% \begin{macrocode} +% +% \end{macrocode} +% +% +% +% +% \subsection{The code for capital letters} +% +% \thisfont{} `capitals' were drawn with the same pen as for the minuscules, +% and the letters, in this case, are based on Square Capitals. +% +% \begin{macrocode} +%<*maj> +% EGOTHU.MF Program file for Early Gothic `capitals' +% + +% \end{macrocode} +% +% +% +% \begin{routine}{A} +% The letter `A'. +% \begin{macrocode} +cmchar "EGOTH letter A"; +beginchar("A", 2cap_sb#+caprat*hstretch*(14/13x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +numeric n[]; +path pth[]; +pair pr[]; +pickup capquill; +x100 = 0; +n1 := sqrcjut; +n2 := sqrcjutrat*sqrcjut; +%% legs +x1 = 6/16w; top y1=h; +rt x3 = w-pcshiftx - n1; bot y3= 0; +pickup capthinquill; +lft x2 = pcshiftx; bot y2 = 0; +x21 = x2 + n2; y21 = y2; +y22 = y21+n2; z22 = whatever[z2,z1]; +pickup capquill; +%%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 capthinquill; +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 "EGOTH letter B"; +beginchar("B", 2cap_sb#+caprat*hstretch*(14/13x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +numeric n[]; +path pth[]; +pcshiftx := cap_sb; +pickup capquill; +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 "EGOTH letter C"; +beginchar("C", 2cap_sb#+caprat*hstretch*(14/13x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +numeric n[]; +pcshiftx := cap_sb; +pickup capquill; +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 "EGOTH letter D"; +beginchar("D", 2cap_sb#+caprat*hstretch*(14/13x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +numeric n[]; +path pth[]; +pcshiftx := cap_sb; +pickup capquill; +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 "EGOTH letter E"; +beginchar("E", cap_sb#+caprat*hstretch*(9/13x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +numeric n[]; +path pth[]; +pickup capquill; +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 "EGOTH letter F"; +beginchar("F", 2cap_sb#+caprat*hstretch*(9/13x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +numeric n[]; +pcshiftx := cap_sb; +pickup capquill; +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 "EGOTH letter G"; +beginchar("G", 2cap_sb#+caprat*hstretch*(14/13x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +path pth[]; +pair vec[]; +numeric n[]; +pcshiftx := cap_sb; +pickup capquill; +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 "EGOTH letter H"; +beginchar("H", 2cap_sb#+caprat*hstretch*(14/13x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +pickup capquill; +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 "EGOTH letter I"; +beginchar("I", 2cap_sb#+caprat*hstretch*(thick#+2sqrcjut#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +numeric n[]; +pickup capquill; +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 "EGOTH letter J"; +beginchar("J", 2cap_sb#+caprat*hstretch*(2thick#+sqrcjut#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +path pth[]; +numeric n[]; +pickup capquill; +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 "EGOTH letter K"; +beginchar("K", 2cap_sb#+caprat*hstretch*(16/13x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +path pth[]; +numeric n[]; +pickup capquill; +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 capquill; +%%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 "EGOTH letter L"; +beginchar("L", 2cap_sb#+caprat*hstretch*(9/13x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +numeric n[]; +pickup capquill; +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 "EGOTH letter M"; +beginchar("M", 2cap_sb#+caprat*hstretch*(19/13x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +numeric n[]; +path pth[]; +pickup capquill; +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 capthinquill; +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 capquill; +%% thin middle top and bottom +x83 = lft x3; y83 = top y3; +x824 = rt x24; y824 = bot y24; +pickup capthinquill; +lft x13 = x83; top y13 = y83; +rt x124 = x824; bot y124 = y824; +pickup capquill; +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 capthinquill; +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 "EGOTH letter N"; +beginchar("N", 2cap_sb#+caprat*hstretch*(14/13x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +path pth[]; +numeric n[]; +pickup capquill; +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 capthinquill; +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 capquill; +%%ductus:=true; +if ductus: + pickup stylus; +fi +%% diagonal +draw pth1; draw (x1-n1,y1)--(x1,y1); +%% stems +pickup capthinquill; +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 "EGOTH letter O"; +beginchar("O", 2cap_sb#+caprat*hstretch*(17/13x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +pickup capquill; +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 "EGOTH letter P"; +beginchar("P", 2cap_sb#+caprat*hstretch*(13/13x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +path pth[]; +numeric n[]; +pickup capquill; +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 "EGOTH letter Q"; +beginchar("Q", 2cap_sb#+caprat*hstretch*(17/13x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +numeric n[]; +path pth[]; +pickup capquill; +%% 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 "EGOTH letter R"; +beginchar("R", 2cap_sb#+caprat*hstretch*(15/13x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +numeric n[]; +path pth[]; +pickup capquill; +x100 = 0; +n1:= sqrcjut; +n3 := sqrcjutrat*sqrcjut; +n2 := 11/15; %% P/R width ratio +%% stem +pickup capthinquill; +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 capquill; +%% 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 capthinquill; +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 "EGOTH letter S"; +beginchar("S", 2cap_sb#+caprat*hstretch*(15/18x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +numeric n[]; +path pth[]; +pcshiftx := cap_sb; +pickup capquill; +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 "EGOTH letter T"; +beginchar("T", 2cap_sb#+caprat*hstretch*(10/13x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +numeric n[]; +path pth[]; +pickup capquill; +%% 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 "EGOTH letter U"; +beginchar("U", 2cap_sb#+caprat*hstretch*(15/13x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +numeric n[]; +path pth[]; +pickup capquill; +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 "EGOTH letter V"; +beginchar("V", 2cap_sb#+caprat*hstretch*(13/13x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +numeric n[]; +path pth[]; +pickup capquill; +x100 = 0; +n1 := sqrcjut; +n2 := sqrcjutrat*sqrcjut; +%% stem tops +lft x1 = pcshiftx + n1; top y1 = h; +pickup capthinquill; +rt x3 = w - pcshiftx; top y3 = h; +x3a = x3-n2; y3a=y3; +x3b = x3; y3b = y3-n2; +pickup capquill; +%% 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 capthinquill; +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 "EGOTH letter W"; +beginchar("W", 2cap_sb#+caprat*hstretch*(22/13x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +numeric n[]; +path pth[]; +pickup capquill; +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 capthinquill; +rt x5 = w-pcshiftx; top y5 = h; +x5a = x5-n2; y5a = y5; +x5b = x5; y5b = y5-n2; +pickup capquill; +%% 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 capthinquill; +rt x113 = x813; bot y113 = y813; +rt x135 = x835; bot y135 = y835; +%%ductus:=true; +if ductus: + pickup stylus; +fi +pickup capquill; +draw pth113; draw pth335; draw (x1-n1,y1)--(x1,y1); +pickup capthinquill; +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 "EGOTH letter X"; +beginchar("X", 2cap_sb#+caprat*hstretch*(17/13x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +path pth[]; +numeric n[]; +pcshiftx := cap_sb; +pickup capquill; +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 capthinquill; +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 capquill; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2; +draw (x1-n1,y1)--(x1,y1); +draw (x2,y2)--(x2+n1,y2); +pickup capthinquill; +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 "EGOTH letter Y"; +beginchar("Y", 2cap_sb#+caprat*hstretch*(13/13x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +path pth[]; +numeric n[]; +pickup capquill; +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 capthinquill; +rt x3=w-pcshiftx; top y3 = h; +x4=x85; y4 = y85; +x3a=x3-n2; y3a = y3; +y3b = y3-n2; z3b = whatever[z3,z4]; +pickup capquill; +%%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 capthinquill; +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 "EGOTH letter Z"; +beginchar("Z", 2cap_sb#+caprat*hstretch*(13/13x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +numeric n[]; +n1 := sqrcjutrat*sqrcjut; +path pth[]; +pcshiftx := cap_sb; +pickup capquill; +%% 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 capquill; +%%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} +% +% \end{macrocode} +% +% +% +% +% \subsection{The punctuation file} +% +% The main punctuation marks are defined in this file. +% +% \begin{macrocode} +%<*punct> +% EGOTHPUNCT.MF This file contains punctuation marks + +% \end{macrocode} +% +% +% \begin{routine}{!} +% The `!' character, which had not been invented at this time. +% \begin{macrocode} + +cmchar "Exclamation mark"; +beginchar("!", 2sb#+hstretch*(thick#+trijut#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +x1=w/2; top y1 = h; +z3=(x1, 1/2dot_size); +z2=(x1, y3+3/2dot_size); +draw z1--z2; +draw_pdot(3,dot_size); +penlabels(1,2,3); + +endchar; % end of "!" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{?} +% The `?' character, which had not been invented at this time. +% \begin{macrocode} + +cmchar "Question mark"; +beginchar("?", 2sb#+hstretch*(3/4x_height#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pickup quill; +n1 := w-2pcshiftx; % actual character width +n2 := 1/3h; % height of top bowl +n3 := n2; % height of bottom bowl +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=3/4h; y2=1/4h; +draw_pdot(1,dot_size); +draw_pdot(2,dot_size); +penlabels(1,2); +endchar; % end ":" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{;} +% The `;' character. +% \begin{macrocode} + +cmchar "Semicolon"; +beginchar(";",2sb#+hstretch*(comma_width#+dot_size#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb; +x1=x2=w-pcshiftx-(0.5hstretch*dot_size); y1=3/4h; y2=1/2dot_size; +draw_pdot(1,dot_size); +draw_pcomma(2,dot_size,comma_width); +penlabels(1,2); +endchar; % end of ";" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{'} +% The `'' character. +% \begin{macrocode} + +cmchar "Apostrophe"; +beginchar("'",2sb#+hstretch*(comma_width#+dot_size#),4/3x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb; +x1=w-pcshiftx-(0.5hstretch*dot_size); y1=h; +draw_pcomma(1,dot_size,comma_width); +penlabels(1); +endchar; % end of "'" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{`} +% The ``' character. +% \begin{macrocode} + +cmchar "Reverse apostrophe"; +beginchar("`",2sb#+hstretch*(comma_width#+dot_size#),4/3x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb; +x1=pcshiftx+(0.5hstretch*dot_size); y1=h; +draw_plq(1,dot_size,comma_width); +penlabels(1); +endchar; % end of "`" + +% \end{macrocode} +% \end{routine} +% +% The end of this file. +% \begin{macrocode} +% +% \end{macrocode} +% +% +% \subsection{The ligatures and dashes file} +% +% The ligatured letters, punctuation marks and dashes are defined in this file. +% \begin{macrocode} +%<*lig> +% EGOTHLIG.MF Uncial ligatured letters, punctation and dashes + +% \end{macrocode} +% First the ligtables. +% \begin{macrocode} + +ligtable "`": "`"=:oct"134"; +ligtable "'": "'"=:oct"042"; %% , "?" kern 2u#, "!" kern 2u#; + +ligtable "-": "-"=:oct"173"; +ligtable oct"173": "-"=:oct"174"; + +ligtable "c": "t"=:oct"014"; +ligtable "s": "t"=:oct"015"; + +% \end{macrocode} +% +% \begin{routine}{ct} +% The `ct' ligature. +% \begin{macrocode} + +cmchar "EGOTH ct ligature"; +beginchar(oct"014", 2sb#+hstretch*(6/4x_height#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pair vc[]; +pickup quill; +%%%%%%%%%%% C + +n1:=1/2(w-2pcshiftx); % actual letter width +n2 := h/ascratio; % x-height +x1=pcshiftx + 1/2n1; top y1 = n2; +lft x2 = pcshiftx; y2 = 1/2n2; +x3 = x1; bot y3 = 0; +rt x4 = n1; y4 = 1/4n2; +x6 = x4; +%%y6 = 3/4n2; +top y6 = y1; +pth1 := z6..z1{left}..z2{down}..z3{right}..z4{pdir}; +%%%%%%%%%%%%% T + +%% bar +top y33=n2; n3 := n2 - top y33; +%%lft x31 = n1+pcshiftx; +lft x31 = n1; +rt x32=w-pcshiftx; +%%top y31 = y33-n3; bot y32=y33+n3; +top y31 = y33-n3; y32=y33; +x33=1/2[x31,x32]; +pth2 := z31{pdir}..z33..z32{pdir}; % T bar +n31 := n1; % width of bowl +%%lft x34 = pcshiftx + n1 + 1/8n31; +lft x34 = n1 + 1/8n31; +y34 = 1/2n2; +x35=x33; bot y35 = 0; +rt x36 = pcshiftx + n1 + 3/4n31; top y36 = 1/4n2; +pth3 := z33..z34{down}..z35{right}..z36{pdir}; % T bowl + +%%%%%%%%%%%%%%%%% Ligature + +z51=z6; +z55=z33; +x53 = 1/2[x51,x55]; +top y53 = h; +vc51 := direction 0 of pth1; +vc55 := direction 0 of pth3; +pth4 := z51{vc51}..z53{right}..z55{vc55}; % loop +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw pth1; % C +draw pth2; % T bar +draw pth3; % T bowl +draw pth4; % ligature loop +ductus:=false; +penlabels(1,2,3,4,5,6,14,16,17,18,31,32,33,34,35,36,100); +endchar; % end of "ct" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{st} +% The `st' ligature. +% \begin{macrocode} + +cmchar "EGOTH st ligature"; +beginchar(oct"015", 2sb#+hstretch*(9/8x_height#+clubjut#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pair vc[]; +pickup quill; +%%%%%%%%%%% S + +n1:=3/7(w-2pcshiftx-clubjut); % actual letter width +n2 := h/ascratio; % x-height + +%% stem +lft x1=lft x2=pcshiftx+clubjut; top y1=n2; bot y2=0; +%% flick +x4=x2; y4 = 1/2n1; +%%%%%%%%%%%%% T + +%% bar +top y33=n2; n3 := n2 - top y33; +%%lft x31 = n1+pcshiftx; +lft x31 = n1; +rt x32=w-pcshiftx; +%%top y31 = y33-n3; bot y32=y33+n3; +top y31 = y33-n3; y32=y33; +x33=1/2[x31,x32]; +pth2 := z31{pdir}..z33..z32{pdir}; % T bar +n31 := n1; % width of bowl +%%lft x34 = pcshiftx + n1 + 1/8n31; +lft x34 = n1 + 1/8n31; +y34 = 1/2n2; +x35=x33; bot y35 = 0; +rt x36 = pcshiftx + n1 + 3/4n31; top y36 = 1/4n2; +pth3 := z33..z34{down}..z35{right}..z36{pdir}; % T bowl + +%%%%%%%%%%%%%%%%% Ligature + +z51=z4; +z55=z33; +x53 = 5/8[x51,x55]; +top y53 = h; +vc51 := up; +vc55 := direction 0 of pth3; +pth4 := z51{vc51}...z53{right}..z55{vc55}; % loop +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2; % S stem +draw_clubserif(1,2,0.5); +draw_roundserif(2,1,srad); +draw pth2; % T bar +draw pth3; % T bowl +draw pth4; % ligature loop +ductus:=false; +penlabels(1,2,3,4,5,6,14,16,17,18,31,32,33,34,35,36,100); +endchar; % end of "st" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{''} +% The `''' ligature. +% \begin{macrocode} + +cmchar "Closing quotes"; +beginchar(oct"042",2sb#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb; +x1=w-pcshiftx-(0.5hstretch*dot_size); y1=y2=h; +x2=x1-(2hstretch*dot_size); +draw_pcomma(1,dot_size,comma_width); % right +draw_pcomma(2,dot_size,comma_width); % left +penlabels(1,2); +endchar; % end of "''" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{``} +% The ```' ligature. +% \begin{macrocode} + +cmchar "Opening quotes"; +beginchar(oct"134",2sb#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb; +x1=pcshiftx+(0.5hstretch*dot_size); y1=y2=h; +x2=x1+(2hstretch*dot_size); +draw_plq(1,dot_size,comma_width); % left +draw_plq(2,dot_size,comma_width); % right +penlabels(1,2); +endchar; % end of "``" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{-} +% The `-' (hyphen) character. +% \begin{macrocode} + +cmchar "Hyphen"; +beginchar("-",sb#+hstretch*(0.8x_height#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb/2; +%%numeric alpha; alpha:=w/8; +%%pickup quill; +%%lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; +%%x11=lft x1+alpha/2; y11=top y1-0.5thin; +%%x12=rt x2; y12=bot y1+0.5thin; +%%draw_triangle(11,alpha); +%%draw_rutriangle(12,alpha); +pickup halfquill; +lft x21=pcshiftx+jut; rt x22=w-pcshiftx-jut; y21=y22=1/2h; +draw z21--z22; +draw_roundserif(21,22,srad); draw_flatserif(22,21,srad); +penlabels(1,2); +endchar; % end of "-" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{--} +% The `--' (en-dash) ligature. +% \begin{macrocode} + +cmchar "En dash"; +beginchar(oct"173",sb#+hstretch*(x_height#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb/2; +%%numeric alpha; alpha:=w/8; +%%pickup quill; +%%lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; +%%x11=lft x1+alpha/2; y11=top y1-0.5thin; +%%x12=rt x2; y12=bot y1+0.5thin; +%%draw_triangle(11,alpha); +%%draw_rutriangle(12,alpha); +pickup halfquill; +lft x21=pcshiftx+jut; rt x22=w-pcshiftx-jut; y21=y22=1/2h; +draw z21--z22; +draw_roundserif(21,22,srad); draw_flatserif(22,21,srad); +penlabels(1,2); +endchar; % end of "--" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{---} +% The `---' (em dash) ligature. The em dash is twice the width of the en dash. +% \begin{macrocode} + +cmchar "Em dash"; +beginchar(oct"174",sb#+hstretch*(2x_height#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb/2; +%%numeric alpha; alpha:=w/8; +%%pickup quill; +%%lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; +%%x11=lft x1+alpha/2; y11=top y1-0.5thin; +%%x12=rt x2; y12=bot y1+0.5thin; +%%draw_triangle(11,alpha); +%%draw_rutriangle(12,alpha); +pickup halfquill; +lft x21=pcshiftx+jut; rt x22=w-pcshiftx-jut; y21=y22=1/2h; +draw z21--z22; +draw_roundserif(21,22,srad); draw_flatserif(22,21,srad); +penlabels(1,2); +endchar; % end of "---" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{&} +% The ampersand (which is really an `et' ligature). +% \begin{macrocode} + +cmchar "EGOTH ampersand"; +beginchar("&", 2sb#+hstretch*(5/4x_height#+2jut#), asc_height#, 0); +adjust_fit(0,0); +numeric n[]; +path pth[]; +pcshiftx:=sb; +pickup quill; +%% alpha looking part +n1 := w-2pcshiftx-jut; % actual letter width +n2 := h/ascratio; % x-height +n3 := 16/16n2; % height of alpha +x1 = w-pcshiftx; bot y1 = 0; +x3 = pcshiftx + 12/16n1; y3 = 1/2n3; +lft x5 = pcshiftx; y5 = y3; +x4 = x6 = 1/2[x5,x3]; +top y4 = n3; bot y6 = 0; +%rt x8 = w-pcshiftx-jut; top y8=h; +rt x8 = w-pcshiftx; top y8=h; +x9 = x8-2jut; x10-x8 = x8-x9; +y9=y10=y8; +pth1 := z1{left}..z3..z4{left}..z5{down}..z6{right}..z3..z8{up}; +%% loop +z21 = z5; +z25 = point 1.5 of pth1; +x23 = 1/2[x21,x25]; +y23 = 6/8[y4,y8]; +pth2 := z21{up}..z23{right}..z25{down}; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw pth1; draw z9--z8; % alpha +draw pth2; % loop +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,10,16,17,18,19,21,22,23,24,25); +endchar; % end of "&" + +% \end{macrocode} +% \end{routine} +% +% +% The end of this file. +% \begin{macrocode} +% +% \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> +% EGOTHDIG.MF Program file for Early Gothic digits +% + +% \end{macrocode} +% +% +% +% \begin{routine}{1} +% The digit `1'. +% \begin{macrocode} +cmchar "EGOTH digit 1"; +beginchar("1", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +x1=x2=w/2; +y1=h; bot y2=0; +%%ductus:=true; +draw_tstem(1,2,srad); +draw_flatserif(1,2,srad); +%draw_roundserif(2,1,srad); +draw_flatserif(2,1,srad); +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,100); +endchar; % end "1" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{2} +% The digit `2'. +% \begin{macrocode} +cmchar "EGOTH digit 2"; +beginchar("2", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +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; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_wave(5,6,thin); % foot +%draw z1..z2{right}..z3{down}..{-pdir}z5wl; % curve +draw z1..z2{right}.. tension 0.75 ..z3{down}..{-pdir}z5wl; % curve +ductus:=false; +penlabels(1,2,3,4,5,6,100); +endchar; % end "2" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{3} +% The digit `3'. +% \begin{macrocode} +cmchar "EGOTH 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 "EGOTH digit 4"; +beginchar("4", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% the stem +x1=x2=w-pcshiftx-jut; +y1=h; bot y2=0; +% the crossbar +lft x3=pcshiftx; y3=0.33h; +rt x4=w-pcshiftx; y4=y3; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % main stem +draw_wave(3,4,thin); % crossbar +draw z3wl--z1; % diagonal +ductus:=false; +penlabels(1,2,3,4,100); +endchar; % end "4" + +% \end{macrocode} +% \end{routine} +% +% +% +% \begin{routine}{5} +% The digit `5'. +% \begin{macrocode} +cmchar "EGOTH digit 5"; +beginchar("5", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +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; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_wave(2,1,thin); % top squiggle +draw z3{pdir}..z5{down}..z6{left}..z7; % curve +draw z2wl--z3; % vertical +ductus:=false; +penlabels(1,2,3,4,5,6,7,100); +endchar; % end "5" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{6} +% The digit `6'. +% \begin{macrocode} +cmchar "EGOTH 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; +draw z1..z2{left}.. tension 0.8 ..z3{down}.. tension 0.8 ..z4{right}..z5{up}.. tension 0.8 ..{-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 "EGOTH digit 7"; +beginchar("7", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% top bar +lft x1=pcshiftx; +rt x2=w-pcshiftx; +top y1=top y2=h; +% bowed leg +x4=w/2; bot y4=0; +x3=0.5[x2,x4]-3thin; y3=0.5[y2,y4]; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_wave(1,2,thin); % top bar +draw z1wr..z3..z4; +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 "EGOTH 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; +draw z1.. tension 0.8 ..z2.. tension 0.8 ..z3..z5.. + z11.. tension 0.8 ..z4.. tension 0.8 ..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 "EGOTH 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; +draw z1..z2{right}.. tension 0.8 ..z3{up}.. tension 0.8 ..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 "EGOTHIC 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; +draw z1.. tension 0.8 ..z2.. tension 0.8 ..z3.. tension 0.8 ..z4.. tension 0.8 ..cycle; +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,100); +endchar; % end "0" + +% \end{macrocode} +% \end{routine} +% +% +% The end of this file. +% \begin{macrocode} +% +% \end{macrocode} +% +% +% \section{The font definition files} \label{sec:fd} +% +% The font comes in normal and bold weights only. +% +% \begin{macrocode} +%<*fdot1> +\DeclareFontFamily{OT1}{egoth}{} + \DeclareFontShape{OT1}{egoth}{m}{n}{ <-8.5> egoth7 <8.5-15> egoth10 <15-> egoth17 }{} + \DeclareFontShape{OT1}{egoth}{m}{sl}{ <-> sub * egoth/m/n }{} + \DeclareFontShape{OT1}{egoth}{m}{it}{ <-> sub * egoth/m/n }{} + \DeclareFontShape{OT1}{egoth}{m}{sc}{ <-> sub * egoth/m/n }{} + \DeclareFontShape{OT1}{egoth}{m}{u}{ <-> sub * egoth/m/n }{} + \DeclareFontShape{OT1}{egoth}{bx}{n}{ <-8.5> egothb7 <8.5-15> egothb10 <15-> egothb17 }{} + \DeclareFontShape{OT1}{egoth}{bx}{it}{ <-> sub * egoth/bx/n }{} + \DeclareFontShape{OT1}{egoth}{bx}{sl}{ <-> sub * egoth/bx/n }{} + \DeclareFontShape{OT1}{egoth}{b}{n}{ <-> sub * egoth/bx/n }{} +% +% \end{macrocode} +% +% +% \begin{macrocode} +%<*fdt1> +\DeclareFontFamily{T1}{egoth}{} + \DeclareFontShape{T1}{egoth}{m}{n}{ <-8.5> egoth7 <8.5-15> egoth10 <15-> egoth17 }{} + \DeclareFontShape{T1}{egoth}{m}{sl}{ <-> sub * egoth/m/n }{} + \DeclareFontShape{T1}{egoth}{m}{it}{ <-> sub * egoth/m/n }{} + \DeclareFontShape{T1}{egoth}{m}{sc}{ <-> sub * egoth/m/n }{} + \DeclareFontShape{T1}{egoth}{m}{u}{ <-> sub * egoth/m/n }{} + \DeclareFontShape{T1}{egoth}{bx}{n}{ <-8.5> egothb7 <8.5-15> egothb10 <15-> egothb17 }{} + \DeclareFontShape{T1}{egoth}{bx}{it}{ <-> sub * egoth/bx/n }{} + \DeclareFontShape{T1}{egoth}{bx}{sl}{ <-> sub * egoth/bx/n }{} + \DeclareFontShape{T1}{egoth}{b}{n}{ <-> sub * egoth/bx/n }{} +% +% \end{macrocode} +% +% \section{The package code} \label{sec:code} +% +% \subsection{The \Lpack{egothic} package} +% +% The \Lpack{egothic} 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{egothic}[2002/12/30 v1.0 package for Early Gothic 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}{\egothfamily} +% Selects the \thisfont{} font family in the OT1 or T1 encoding. +% \begin{macrocode} +\ifx\Tienc\encodingdefault + \newcommand{\egothfamily}{\usefont{T1}{egoth}{m}{n}} +\else + \newcommand{\egothfamily}{\usefont{OT1}{egoth}{m}{n}} +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\textegoth} +% Text command for the \thisfont{} font family. +% \begin{macrocode} +\DeclareTextFontCommand{\textegoth}{\egothfamily} +% \end{macrocode} +% \end{macro} +% +% The end of this package. +% \begin{macrocode} +% +% \end{macrocode} +% +% \subsection{The \Lpack{allegoth} package} +% +% The \Lpack{allegoth} 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{egothic} package. +% \begin{macrocode} +%<*uscall> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{allegoth}[2002/12/30 v1.0 package for all Early Gothic fonts] +\RequirePackage{egothic} +% \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}{egoth} +\renewcommand{\sfdefault}{egoth} +\renewcommand{\ttdefault}{egoth} +% \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}{\egoth@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{\egoth@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}{\egoth@new@setfontsize} +% This is a macro that replaces the |\@setfontsize| macro which is called by +% the font size changing commands. +% \begin{macrocode} +\newcommand{\egoth@new@setfontsize}[3]{% + \edef\@tempa{\def\noexpand\@tempb####1<#2}% + \@tempa>##2<##3\@nil{\def\egoth@baselineskip@value{##2}}% + \edef\@tempa{\noexpand\@tempb\egoth@baselineskip@table<#2}% + \@tempa><\@nil + \ifx\egoth@baselineskip@value\@empty + \def\egoth@baselineskip@value{#3}% + \fi + \egoth@old@setfontsize{#1}{#2}\egoth@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\egoth@old@setfontsize=\@setfontsize + \let\@setfontsize=\egoth@new@setfontsize} +\AtBeginDocument{\normalsize} +% \end{macrocode} +% +% +% The end of this package. +% \begin{macrocode} +% +% \end{macrocode} +% +% +% +% +% +% \Finale +% \PrintIndex +% +\endinput + +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} + + diff --git a/Master/texmf-dist/source/fonts/bookhands/egothic.ins b/Master/texmf-dist/source/fonts/bookhands/egothic.ins new file mode 100644 index 00000000000..132c384137a --- /dev/null +++ b/Master/texmf-dist/source/fonts/bookhands/egothic.ins @@ -0,0 +1,101 @@ +%% +%% egothic.ins +%% Copyright 1999 Peter R. Wilson +%% +%% This program is provided under the terms of the +%% LaTeX Project Public License distributed from CTAN +%% archives in directory macros/latex/base/lppl.txt. +%% +%% Author: Peter Wilson (CUA) +%% now at: peter.r.wilson@boeing.com +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\batchfile{egothic.ins} +\input docstrip.tex +\preamble + + Copyright 1999 Peter R. Wilson + + This program is provided under the terms of the + LaTeX Project Public License distributed from CTAN + archives in directory macros/latex/base/lppl.txt. + +Author: Peter Wilson (CUA) + now at: peter.r.wilson@boeing.com + +\endpreamble + +\keepsilent + +%%% \Msg{*** Generating the driver file ***} +%%% \generateFile{egothic.drv}{t}{\from{egothic.dtx}{driver}} + +\Msg{*** Generating the Metafont files ***} + +\usepostamble\empty +\generateFile{egoth7.mf}{t}{\from{egothic.dtx}{base7}} +\generateFile{egoth10.mf}{t}{\from{egothic.dtx}{base10}} +\generateFile{egoth17.mf}{t}{\from{egothic.dtx}{base17}} +\generateFile{egothb7.mf}{t}{\from{egothic.dtx}{base7b}} +\generateFile{egothb10.mf}{t}{\from{egothic.dtx}{base10b}} +\generateFile{egothb17.mf}{t}{\from{egothic.dtx}{base17b}} +\generateFile{egothl.mf}{t}{\from{egothic.dtx}{min}} +\generateFile{egothu.mf}{t}{\from{egothic.dtx}{maj}} +\generateFile{egothtitle.mf}{t}{\from{egothic.dtx}{mfd}} +\generateFile{egothpunct.mf}{t}{\from{egothic.dtx}{punct}} +\generateFile{egothlig.mf}{t}{\from{egothic.dtx}{lig}} +\generateFile{egothdig.mf}{t}{\from{egothic.dtx}{dig}} + +\Msg{*** Generating the Font Definition files ***} +\usepostamble\defaultpostamble + +\generateFile{ot1egoth.fd}{t}{\from{egothic.dtx}{fdot1}} +\generateFile{t1egoth.fd}{t}{\from{egothic.dtx}{fdt1}} + +\Msg{*** Generating the LaTeX2e package files ***} + +\generateFile{egothic.sty}{t}{\from{egothic.dtx}{usc}} +\generateFile{allegoth.sty}{t}{\from{egothic.dtx}{uscall}} + +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into directories searched by TeX:} +\Msg{*} +\Msg{* Move these into the font source area:} +\Msg{* \space\space egoth7.mf} +\Msg{* \space\space egoth10.mf} +\Msg{* \space\space egoth17.mf} +\Msg{* \space\space egothb7.mf} +\Msg{* \space\space egothb10.mf} +\Msg{* \space\space egothb17.mf} +\Msg{* \space\space egothl.mf} +\Msg{* \space\space egothu.mf} +\Msg{* \space\space egothtitle.mf} +\Msg{* \space\space egothpunct.mf} +\Msg{* \space\space egothlig.mf} +\Msg{* \space\space egothdig.mf} +\Msg{*} +\Msg{* Move these into the LaTeX macro area:} +\Msg{* \space\space ot1egoth.fd} +\Msg{* \space\space t1egoth.fd} +\Msg{* \space\space egothic.sty} +\Msg{* \space\space allegoth.sty} +\Msg{*} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* `.dtx' through LaTeX.} +\Msg{* Process any name.idx file by:} +\Msg{* \space\space\space\space makeindex -s gind.ist name} +\Msg{* Process any name.glo file by:} +\Msg{* \space\space\space\space makeindex -s gglo.ist -o name.gls name.glo} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} + +\endinput diff --git a/Master/texmf-dist/source/fonts/bookhands/humanist.dtx b/Master/texmf-dist/source/fonts/bookhands/humanist.dtx new file mode 100644 index 00000000000..6c61aeff77d --- /dev/null +++ b/Master/texmf-dist/source/fonts/bookhands/humanist.dtx @@ -0,0 +1,5019 @@ +% \iffalse meta-comment +% +% humanist.dtx +% Author: Peter Wilson (CUA) now at peter.r.wilson@boeing.com +% (or pandgwilson@earthlink.net) +% Copyright 2002, 2003 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/supported), comment out the +% \usepackage{docmfp} line below and uncomment the line following it. +% +%<*driver> +\documentclass{ltxdoc} +\usepackage{docmfp} +%%%%%% \providecommand{\DescribeVariable}[1]{} \newenvironment{routine}[1]{}{} +\EnableCrossrefs +\CodelineIndex +%% comment out next line to show the code +\OnlyDescription +\setcounter{StandardModuleDepth}{1} +\begin{document} + \DocInput{humanist.dtx} +\end{document} +% +% +% \fi +% +% \CheckSum{134} +% +% \DoNotIndex{\',\.,\@M,\@@input,\@addtoreset,\@arabic,\@badmath} +% \DoNotIndex{\@centercr,\@cite} +% \DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue} +% \DoNotIndex{\@input,\@ixpt,\@m} +% \DoNotIndex{\@minus,\@mkboth,\@ne,\@nil,\@nomath,\@plus,\@set@topoint} +% \DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb} +% \DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt} +% \DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt} +% \DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace} +% \DoNotIndex{\advance,\Alph,\alph} +% \DoNotIndex{\arabic,\ast,\begin,\begingroup,\bfseries,\bgroup,\box} +% \DoNotIndex{\bullet} +% \DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption} +% \DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass} +% \DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\endtrivlist} +% \DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup} +% \DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter} +% \DoNotIndex{\fbox} +% \DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef} +% \DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule} +% \DoNotIndex{\hsize,\hskip,\hspace,\hss,\if@tempswa,\ifcase,\or,\fi,\fi} +% \DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\fi,\fi,\fi,\fi,\fi} +% \DoNotIndex{\input} +% \DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark} +% \DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright} +% \DoNotIndex{\month,\newcommand,\newcounter,\newenvironment} +% \DoNotIndex{\NeedsTeXFormat,\newdimen} +% \DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number} +% \DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\p@} +% \DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip} +% \DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions} +% \DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright} +% \DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font} +% \DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily,\roman} +% \DoNotIndex{\roman,\secdef,\selectfont,\setbox,\setcounter,\setlength} +% \DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space} +% \DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase} +% \DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt} +% \DoNotIndex{\viipt,\vipt,\vskip,\vspace} +% \DoNotIndex{\wd,\xiipt,\year,\z@} +% +% \changes{v1.0}{2002/12/30}{First public release} +% \changes{v1.1}{2003/06/20}{Added `ae' and `AE' conjoins} +% +% \def\dtxfilename{\texttt{humanist.dtx}} +% \def\fileversion{v1.1} +% \def\filedate{2003/06/20} +% \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}{Humanist} +% +% \title{The \Lpack{Humanist} fonts\thanks{This file (\dtxfilename) +% has version number \fileversion, last revised +% \filedate.}} +% +% \author{% +% Peter Wilson\\ +% Catholic University of America \\ +% Now at \texttt{peter.r.wilson@boeing.com} +% } +% \date{\filedate} +% \maketitle +% \begin{abstract} +% The \Lpack{humanist} and \Lpack{allhmin} packages provide a set of +% Metafont \thisfont{} book-hands +% as used +% for manuscripts in the 14th century onwards. This is one in a series +% of manuscript fonts. +% \end{abstract} +% \tableofcontents +% \listoftables +% +% +% +% +% \section{Introduction} +% +% The \Lpack{humanist} and \Lpack{allhmin} packages provide a Metafont~\cite{METAFONT} version +% of the \thisfont{} manuscript book-hand that was in use from about the +% fourteenth century~\AD{} onwards. It is part of a project to provide fonts +% covering the major manuscript hands between the first century~\AD{} and +% the invention of printing. The principal resources used in this project +% are listed in the Bibliography. +% +% This manual is typeset according to the conventions of the +% \LaTeX{} \textsc{docstrip} utility which enables the automatic +% extraction of the \LaTeX{} macro source files~\cite{GOOSSENS94}. +% The \Lpack{docmfp} package is used for documenting the Metafont portions +% of the distribution~\cite{DOCMFP}. +% +% Section~\ref{sec:usc} describes the usage of the package. +% Commented code for the fonts is in Sections~\ref{sec:mf} and~\ref{sec:fd} +% and source code for the package is in Section~\ref{sec:code}. +% +% \subsection{Manuscript book-hands} +% +% Before the invention of printing all books were written by hand. The book-hands +% used by the scribes and copyists for the manuscripts changed as time +% went on. Table~\ref{tab:1} lists some of the common book-hands which were used +% between the 1st and 15th centuries. The later book-hands formed the basis of the +% fonts used by the early printers, which in turn form the basis of the printing +% fonts in use today. +% +% The manuscript book-hands were written with a broad nibbed reed or quill +% pen. Among the distinguishing characteristics of a hand, apart from the +% actual shape of the letters, are the angle of the pen (which controls the +% variation between thick and thin strokes) and the height of a letter compared +% to the width of the nib. The lower the ratio of the letter height to nib +% width, the more condensed is the script. The scripts also varied in their +% typical height. +% +% Table~\ref{tab:1} gives an `average' x-height for each +% script, which I obtained by measuring a sample of photographs of +% manuscripts written in the various hands. About a dozen examples +% of each book-hand were measured. This figure should not be taken too +% seriously. +% +% There was not a sharp division between the use of one hand and another. +% Many manuscripts exhibit a variety of hands in the same document. For example, +% the scribe writing in an Uncial hand may have used Roman Rustic letters +% for capitals. Usually the same pen was used for the two different scripts. +% +% Generally speaking, as a hand got older it became more embelished, and +% therefore took longer to write. As this happened a new hand would appear that +% was faster, and which would eventually make the earlier one obsolete. +% +% Many of the book-hands were single-cased; that is, they did not have an +% upper- and lower-case as we do nowadays in Western scripts. On the other +% hand, a script might be majuscule or minuscule. A \textit{majuscule} script +% is one, like our upper-case, where the letters are drawn between two lines +% and are of a uniform height with no ascenders or descenders. +% A \textit{minuscule} script, like our lower-case, is drawn between four lines +% and has ascenders and descenders. +% +% \begin{table} +% \centering +% \caption{The main manuscript book-hands} \label{tab:1} +% \begin{tabular}{lccccc} \hline +% Name & Century & x-height & Height & Pen & Normalised \\ +% & & (mm) & (nib widths) & angle & height \\ \hline +% Roman Rustic & 1--6 & 5.7 & 4--6 & 45 & 1.90 \\ +% Uncial & 3--6 & 4.1 & 4--5 & 30 & 1.37 \\ +% Half Uncial & 3--9 & 3.2 & 3--6 & 20--30 & 1.07 \\ +% Artificial Uncial & 6--10 & 4.2 & 3--6 & 10 & 1.40 \\ +% Insular majuscule & 6--9 & 4.2 & 5 & 0--20 & 1.40 \\ +% Insular minuscule & 6 onward & 4.1 & 5--6 & 45--70 & 1.37 \\ +% Carolingian minuscule & 8--12 & 3.0 & 3--5 & 45 & 1.00 \\ +% Early Gothic & 11--12 & 3.8 & 4--6 & 20--45 & 1.27 \\ +% Gothic Textura & 13--15 & 3.9 & 3--5 & 30--45 & 1.30 \\ +% Gothic Prescius & 13 onward & 3.3 & 4--5 & 45 & 1.10 \\ +% Rotunda & 13--15 & 3.2 & 4--6 & 30 & 1.07 \\ +% Humanist minuscule & 14 onward & 3.0 & 4--5 & 30--40 & 1.00 \\ \hline +% \end{tabular} +% \end{table} +% +% During the period under consideration arabic numerals were effectively +% not used. At the beginning they were unknown and even though some knew +% of them towards the end, the glyphs used for them are not recognisable --- +% to me they look somewhat like cryllic letters --- and each locality +% and time had its own highly individualistic rendering. The general rule +% when using one of these book-hands is to write all numbers using +% roman numerals. +% +% The Roman alphabet consisted of 23 capital letters --- the J, U and W +% were absent. The book-hands initially used both a `u' and a `v' interchangeably +% but by the 10th century the practice had become to use the `v' before a vowel +% and the `u' otherwise. The letter corresponding to the W sound appeared +% in England around the 7th century in +% the form of the runic \textit{wen} character and by about the 11th century +% the `w' chacter was generally used. The `J' is the newest letter of all, not +% appearing until about the mid 16th century. +% +% In the first century punctuation was virtually unknown, and typically +% would not even be any additional space between individual words, never +% mind denoting ends of sentences. Sometimes a dot at mid-height would be +% used as a word seperator, or to mark off the end of a paragraph. Effectively +% a text was a continuous stream of letters. By the time that printing was +% invented, though, all of our modern punctuation marks were being used. +% +% Among all these manuscript hands, the Carolingian minuscule is the +% most important as our modern fonts are based on its letter shapes, and it is +% also at this point in time where the division occured between the black letter +% scripts as used even today in Germany, and the lighter fonts used elesewhere. +% The Rotunda and Humanist minuscule hands were developed in Italy and were +% essentially a rediscovery of the Carolingian minusucle. Guthenberg took the +% Gothic 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 Italians were never in favour of the excesses of the Gothic hands +% as they evolved from the Early Gothic. At sometime in the fourteenth +% or fifteenth century, under the influence of writing masters like +% Poggio Bracciolini (1380--1459) and Niccol\`{o} Niccoli (1363--1437), +% the \thisfont{} minuscule became popular in Italy. It is basically a +% return to the Carolingian Minuscule with capital letters based on the +% Square Capitals. Ligatures included ct and st as well as the ampersand. +% The conjunctions \ae{} and \AE{} were sometimes used (accessed by the +% usual macros \verb?\ae? and \verb?\AE? respectively). +% +% It is this hand that forms the basis for our modern roman and italic types. +% +% +% +% \section{The \Lpack{humanist} and \Lpack{allhmin} packages} \label{sec:usc} +% +% The \thisfont{} font family is called |hmin|. The font is supplied in both +% OT1 and T1 encodings. +% +% \subsection{The \Lpack{humanist} 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{\hminfamily} +% The |\hminfamily| 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{\texthmin} +% The command |\texthmin{|\meta{text}|}| will typeset \meta{text} using the +% \thisfont{} fonts. +% +% \subsection{The \Lpack{allhmin} 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{allhmin} package automatically loads the \Lpack{humanist} package, +% so its font commands are available if necessary. +% +% \StopEventually{ +% \bibliographystyle{alpha} +% \renewcommand{\refname}{Bibliography} +% \begin{thebibliography}{GMS94} +% \addcontentsline{toc}{section}{\refname} +% +% \bibitem[And69]{ANDERSON69} +% Donald M.~Anderson. +% \newblock {\em The Art of Written Forms: The Theory and Practice of Calligraphy}. +% \newblock Holt, Rinehart and Winston, 1969. +% +% \bibitem[Bol95]{BOLOGNA95} +% Giulia Bologna. +% \newblock {\em Illuminated Manuscripts: The Book before Gutenberg}. +% \newblock Crescent Books, 1995. +% +% \bibitem[Day95]{DAY95} +% Lewis F.~Day. +% \newblock {\em Alphabets Old \& New}. +% \newblock (3rd edition originally published by B.~T.~Batsford, 1910) +% \newblock Senate, 1995. +% +% \bibitem[Dro80]{DROGIN80} +% Marc Drogin. +% \newblock {\em Medieval Calligraphy: Its History and Technique}. +% \newblock Allenheld, Osmun \& Co., 1980. +% +% \bibitem[Dru95]{DRUCKER95} +% Johanna Drucker. +% \newblock {\em The Alphabetic Labyrinth}. +% \newblock Thames \& Hudson, 1995. +% +% \bibitem[Fir93]{FIRMAGE93} +% Richard A.~Firmage. +% \newblock {\em The Alphabet Abecedarium}. +% \newblock David R~Goodine, 1993. +% +% \bibitem[Fli98]{LETTRINE} +% Daniel Flipo. +% \newblock {\em The LETTRINE package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1998. +% +% \bibitem[Har95]{HARRIS95} +% David Harris. +% \newblock {\em The Art of Calligraphy}. +% \newblock DK Publishing, 1995. +% +% \bibitem[Jen95]{BETON} +% Frank Jensen. +% \newblock {\em The BETON package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1995. +% +% \bibitem[Joh71]{JOHNSTON75} +% Edward Johnston (ed. Heather Child). +% \newblock {\em Formal Penship and Other Papers}. +% \newblock Penthalic, 1971. +% +% \bibitem[Knu87]{CM} +% Donald E.~Knuth. +% \newblock {\em Computer Modern Typefaces}. +% \newblock Addison-Wesley, 1987. +% +% \bibitem[Knu92]{METAFONT} +% Donald E.~Knuth. +% \newblock {\em The METAFONTbook}. +% \newblock Addison-Wesley, 1992. +% +% \bibitem[GMS94]{GOOSSENS94} +% Michel Goossens, Frank Mittelbach, and Alexander Samarin. +% \newblock {\em The LaTeX Companion}. +% \newblock Addison-Wesley Publishing Company, 1994. +% +% \bibitem[Tho75]{THOMAS75} +% Alan G.~Thomas. +% \newblock {\em Great Books and Book Collectors}. +% \newblock Weidenfield and Nichoson, 1975. +% +% \bibitem[Wil99]{DOCMFP} +% Peter R.~Wilson. +% \newblock {\em The DOCMFP Package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1999. +% +% \bibitem[Wil99b]{ROMANNUM} +% Peter R.~Wilson. +% \newblock {\em The ROMANNUM Package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1999. +% +% \end{thebibliography} +% } +% +% \section{The Metafont code} \label{sec:mf} +% +% +% As previously noted, this work is part of a larger project to provide +% fonts covering the main manuscript book-hands. As such, one of the +% aims is to produce a coordinated set of fonts, especially as multiple +% hands might be used in a single document. +% +% Noting that the hands tend to be somewhat larger than the typical 10pt +% size (where the x-height is approximately 1.5mm) used for modern books, +% I have also designed the fonts +% at a larger than normal size, then applied some non-linear factors when reducing +% them down to a 10pt size. +% Further, I have used the height of the Carolingian minuscule as a +% normalising factor when deciding on the absolute height of any particular +% script. The x-height of the Carolingian font is made equal to the +% x-height of the Computer Modern Roman (CMR) font. +% +% Modern fonts are effectively drawn. That is, the outline of the letter is +% drawn carefully and the center is filled with ink. This is shown to good +% effect in the Metafont code for the Computer Modern fonts~\cite{CM}. +% In contrast, the manuscript letters were inked by single pen strokes in +% a calligraphic manner. I have tried to repeat this calligraphic style +% in the Metafont code. +% +% As much as possible I have tried to use parameter values from the +% Computer Modern Roman (CMR) fonts in order to reduce possible +% infelicities if the CM and manuscript fonts are used together. However, +% few of the CMR parameters are applicable to the calligraphic style. +% +% +% \subsection{The parameter file} +% +% We deal with the parameter files first, and start by announcing +% what they are for. The \thisfont{} font comes in three sizes and also as a normal +% and a bold font. +% \begin{macrocode} +%<*base7|base10|base17|base7b|base10b|base17b> +%%%% HMIN7.MF Humanist Miniscule at 7 point design size. +%%%% HMIN10.MF Humanist Miniscule at 10 point design size. +%%%% HMIN17.MF Humanist Miniscule at 17 point design size. +%%%% HMINB7.MF Humanist Miniscule Bold at 7 point design size. +%%%% HMINB10.MF Humanist Miniscule Bold at 10 point design size. +%%%% HMINB17.MF Humanist Miniscule 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 + +%font_identifier:="HMIN"; font_size 7pt#; +%font_identifier:="HMIN"; font_size 10pt#; +%font_identifier:="HMIN"; font_size 17.28pt#; +%font_identifier:="HMINB"; font_size 7pt#; +%font_identifier:="HMINB"; font_size 10pt#; +%font_identifier:="HMINB"; font_size 17.28pt#; + +% \end{macrocode} +% +% \DescribeVariable{jutstretch} +% The CMR scaling for lowercase serifs wrt 17pt size. +% \begin{macrocode} +% jutstretch:=1.19; +% jutstretch:=1.152; +% jutstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{stemstretch} +% The CMR scaling for lowercase stem widths wrt 17pt size. +% \begin{macrocode} +% stemstretch:=1.50; +% stemstretch:=1.31; +% stemstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{caprat} +% The scaling for `capitals' wrt `lowercase'. This is pretty much a guess +% (the ratio for CMR10 is 1.59). +% \begin{macrocode} + caprat:=1.5; % ratio of capital height to minuscule height +% \end{macrocode} +% +% \DescribeVariable{cap_jutstretch} +% The CMR scaling for uppercase serifs wrt 17pt size. +% \begin{macrocode} +% cap_jutstretch:=1.3; +% cap_jutstretch:=1.2; +% cap_jutstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{cap_stemstretch} +% The CMR scaling for uppercase stem width wrt 17pt size. +% \begin{macrocode} +% cap_stemstretch:=1.45; +% cap_stemstretch:=1.31; +% cap_stemstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{bfudge} +% Letter width scaling for bold font wrt normal font. +% \begin{macrocode} +% bfudge:=1.0; +% bfudge:=1.2; +% \end{macrocode} +% +% \DescribeVariable{szfudge} +% Width scaling wrt 17pt letter width. +% \begin{macrocode} +% szfudge:=1.18; +% szfudge:=1.0; +% 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} +% carol_height#:=108.5/36pt#; +% carol_height#:=155/36pt#; +% carol_height#:=268/36pt#; +% \end{macrocode} +% +% \DescribeVariable{vstretch} +% The height of this font wrt the Carolingian font. +% \begin{macrocode} + vstretch:=1.00; + +% \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} +% u#:=15.5/36pt#; +% u#:=20/36pt#; +% u#:=32.5/36pt#; +% u#:=17.9/36pt#; +% u#:=23/36pt#; +% 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 +% cap_serif_fit#:=3.5/36pt#; % extra sidebar near uppercase serifs +% cap_serif_fit#:=5/36pt#; % extra sidebar near uppercase serifs +% cap_serif_fit#:=8/36pt#; % extra sidebar near uppercase serifs +% letter_fit#:=0pt#; % extra space added to all sidebars +% letter_fit#:=0pt#; % extra space added to all sidebars +% 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} +% sb#:=1/2u#; % unit for side bearings +% sb#:=1/2u#; % unit for side bearings +% sb#:=1/2u#; % unit for side bearings + +% \end{macrocode} +% +% \DescribeVariable{cap_height} +% The height of capital letters. +% \begin{macrocode} +% cap_height#:=172.2/36pt#; % height of caps +% cap_height#:=246/36pt#; % height of caps +% 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} +% thickfudge:=1/5; +% 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:=25; % pen angle +% \end{macrocode} +% +% \DescribeVariable{ascratio} +% The height of lower case ascenders wrt |x_height|. +% \begin{macrocode} + ascratio:=7/4; +% \end{macrocode} +% +% \DescribeVariable{asc_height} +% The height of lower case ascenders. +% \begin{macrocode} + asc_height#:=ascratio*x_height#; +% \end{macrocode} +% +% \DescribeVariable{descratio} +% The depth of lower case descenders wrt |x_height|. +% \begin{macrocode} + descratio:=2/4; +% \end{macrocode} +% +% \DescribeVariable{desc_depth} +% The depth of lower case descenders. +% \begin{macrocode} + desc_depth#:=descratio*x_height#; +% \end{macrocode} +% +% \DescribeVariable{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} +% rule_thickness#:=.34pt#; +% rule_thickness#:=.4pt#; +% rule_thickness#:=.6pt#; + +% \end{macrocode} +% +% \DescribeVariable{jutfudge} +% Controls the protrusion of serifs. +% \begin{macrocode} +%%%jutfudge:= 3/4; +jutfudge:= 1/2; +% \end{macrocode} +% +% \DescribeVariable{jut} +% The lowercase serif protrusion. +% \begin{macrocode} +jut#:=jutstretch*jutfudge*thick#; +% \end{macrocode} +% +% \DescribeVariable{srad} +% |srad| with |0 < srad < 1| controls the serif radius. +% \begin{macrocode} +srad:=0.8; % was 0.5 +% \end{macrocode} +% +% \DescribeVariable{trijut} +% The lowercase triangular serif protrusion. +% \begin{macrocode} +trijut#:=0.75jutstretch*thick#; +% \end{macrocode} +% +% \DescribeVariable{clubjutfudge} +% The fractional protusion of a club serif. +% \begin{macrocode} +clubjutfudge:=1/2; +% \end{macrocode} +% +% \DescribeVariable{clubjut} +% The lowercase club serif protrusion. +% \begin{macrocode} +clubjut#:=jutstretch*clubjutfudge*thick#; +% \end{macrocode} +% +% \DescribeVariable{o} +% Amount of overshoot for curves (as in an `o'). Use CMR values. +% \begin{macrocode} +% o#:=5/36pt#; +% o#:=8/36pt#; +% 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#; +comma_width#:=4/4dot_size#; + +% \end{macrocode} +% +% Finally, call the driver file for the font. +% \begin{macrocode} +generate hmintitle %% switch to the driver file + +% \end{macrocode} +% +% The end of this code section. +% \begin{macrocode} +% +% \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 HMINTITLE.MF for the Humanist Miniscule 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}{humanist_font_setup} +% This macro contains the set up for the \thisfont{} fonts. +% \begin{macrocode} + +def humanist_font_setup= % contains special stuff for humanist 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); + let adjust_fit = normal_adjust_fit; +% \end{macrocode} +% \DescribeVariable{stylus} +% The pen for drawing the thinnest lines is |stylus|. +% \begin{macrocode} + pickup pencircle scaled thin; + stylus:=savepen; +% \end{macrocode} +% \DescribeVariable{thickstylus} +% The pen for drawing lines a bit thicker than the thinnest is |thickstylus|. +% \begin{macrocode} + pickup pencircle scaled (1.5thin); + thickstylus:=savepen; +% \end{macrocode} +% \DescribeVariable{quill} +% The normal calligraphic pen is |quill|. +% \begin{macrocode} + pickup pencircle xscaled thick yscaled thin rotated pangle; + quill:=savepen; + +% \end{macrocode} +% +% \DescribeVariable{threequarterquill} +% A pen with 3/4 of the width as quill (but with the same thinness). +% \begin{macrocode} + pickup pencircle xscaled 3/4thick yscaled thin rotated pangle; + threequarterquill := savepen; + +% \end{macrocode} +% +% \DescribeVariable{halfquill} +% A pen with 1/2 of the width as quill (but with the same thinness). +% \begin{macrocode} + pickup pencircle xscaled 1/2thick yscaled thin rotated pangle; + halfquill := savepen; + +% \end{macrocode} +% +% \DescribeVariable{quarterquill} +% A pen with 1/4 of the width as quill (but with the same thinness). +% \begin{macrocode} + pickup pencircle xscaled 1/4thick yscaled thin rotated pangle; + quarterquill := savepen; + +% \end{macrocode} +% +% +% \begin{macrocode} + numeric pcshiftx#; % x value of LHS of box wrt origin of char box + define_pixels(pcshiftx); + numeric sqxside#; % x size of the square + numeric sqyside#; % y size of the square + define_pixels(sqxside,sqyside); + +enddef; % end of humanist_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 $0y$$: + 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 $0y$$: + 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 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; +humanist_font_setup; + +% \end{macrocode} +% +% +% We generate letters, together with some punctuation and +% analphabetics. +% \begin{macrocode} + +input hminl; % lower case +input hminu; % capitals +input hminpunct; % punctuation +input hminlig; % the several dashes +input hmindig; % 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. + +% +% \end{macrocode} +% +% \subsection{The code for normal letters} +% +% The following code is for the lower case characters. +% +% \begin{macrocode} +%<*min> +% HMINL.MF Program file for Humanist Miniscule lower case +% + +% \end{macrocode} +% +% +% \begin{routine}{a} +% The letter `a'. +% \begin{macrocode} +cmchar "HMIN letter a"; +beginchar("a", 2sb#+hstretch*(11/11x_height#+jut#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pair pr[]; +pickup quill; +n1 := w - 2pcshiftx -jut; % effective letter width +% "stem" +rt x1 = w-pcshiftx-jut; top y1=h; +x2 = x1; bot y2=0; +z16 = 1/6[z2,z1]; +rt x6 = x16; y6=y16; +lft x4 = pcshiftx; y4 = 1/2h; +% stem path +pth1 := z1{down}..z2; +pr1 := direction 1 of pth1; +z20 = z2 shifted -10pr1; + +z11 = point 3/13 of pth1; z15 = point 10/13 of pth1; +lft x13 = pcshiftx; y13=1/4h; +%%ductus:=true; +if ductus: + pickup stylus; +else: + % draw stem + draw pth1; + draw_roundserif(1,2,srad); + draw_roundserif(2,20,srad); + % draw bowl +%% draw z1{-pdir}..z4{down}..z6{pdir}; + draw z11{-pdir}..z13{down}..z15{pdir}; +fi +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 "HMIN letter b"; +beginchar("b", 2sb#+hstretch*(13/11x_height#+jut#), + asc_height#, 0); +adjust_fit(0,0); +numeric n[]; +path pth[]; +pcshiftx := sb; +pickup quill; +n1:=w-2pcshiftx; % actual letter width +n2:=h/ascratio; % top of bowl +%%ductus:=true; +lft x1 = pcshiftx+jut; top y1=h; +x2=x1; bot y2=0; +x12=x2; bot y12=y2; +x3 = x1; y3=1/2n2; +rt x5 = w-pcshiftx; y5=y3; +x4 = 1/2[x3,x5]; bot y4=0; +x6=x4; top y6=n2; +pth1 := z1..z3{down}..z4{right}.. z5{up}; +z98=(0,3/4n2); z99=(w,y98); +pth2 := z98--z99; +z7 = pth1 intersectionpoint pth2; +if ductus: + pickup stylus; +fi +%%draw z1..z3{down}..z4{right}..z5{up}..z6{left}..z7{-pdir}; +draw z1--z2; +draw_flatserif(1,2,srad); +draw z12..z4{right}..z5{up}..z6{left}..z7{-pdir}; +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 "HMIN letter c"; +beginchar("c", 2sb#+hstretch*(11/11x_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{pdir}; +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 "HMIN letter d"; +beginchar("d", 2sb#+hstretch*(13/11x_height#+jut#), + asc_height#, 0); +adjust_fit(0,0); +numeric n[]; +path pth[]; +pcshiftx := sb; +pickup quill; +n1 = h/ascratio; % x-height +rt x1=w-pcshiftx-jut; top y1=h; +x2 = x1; bot y2=0; +x3 = x1; y3 = 1/4n1; +lft x5 = pcshiftx; y5=1/2n1; +x4 = 1/2[x3,x5]; bot y4 = 0; +x6=x4; top y6 = n1; +x7=x3; y7=3/4n1; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +draw z3..z4{left}..z5{up}..z6{right}..z7; +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 "CMIN letter e"; +beginchar("e", sb#+hstretch*(12/11x_height#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pickup quill; +n1 := w-pcshiftx; % actual letter width +n2 := 7/8n1; % width of bowl +x1 = pcshiftx + 5/8n2; top y1=h; +lft x2 = pcshiftx; y2 = 1/2h; +x3 = pcshiftx + 1/2n2; bot y3 = 0; +rt x4 = pcshiftx + n2; y4 = 1/4h; +z98=(0,5/8h); z99=(2w,y98); +pth1 := z98--z99; +pth2 := z1{left}..z2{down}..z3{right}; +z7 = pth1 intersectionpoint pth2; +rt x17 = w; y17=y7; +rt x8 =pcshiftx+n2; y8=y2; +pth3 := z1{right}..z8{down}..z3{left}; +z9 = pth1 intersectionpoint pth3; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z9{up}..z1{left}..z2{down}..z3{right}..z4{pdir}; +draw z7--z17; +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 "HMIN letter f"; +beginchar("f", 2sb#+hstretch*(11/11x_height#+jut#), + (asc_height#), 0); +adjust_fit(0,0); +numeric n[]; +pcshiftx := sb; +pickup quill; +n1 := h/ascratio; % x-height +%% stem +lft x1=lft x2=pcshiftx+jut; top y1=n1; bot y2=0; +%% flick +x4=x2; y4 = 1/2n1; +rt x6=w-pcshiftx; y6 = 2/3h; +x5 = 2/3[x4,x6]; top y5=h; +%% bar +x14=pcshiftx; top y14=n1; +rt x16 = w -pcshiftx; y16 = y14; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_roundserif(2,1,srad); +draw z1{up}...z5{right}...z6; % top +draw z14--z16; % bar +ductus:=false; +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 "CMIN letter g"; +beginchar("g", 2sb#+hstretch*(16/11x_height#), + x_height#, desc_depth#); +adjust_fit(0,0); +path pth[]; +pair vec[]; +numeric n[]; +pcshiftx := sb; +pickup quill; +n1 := 4/5w - 2pcshiftx; % width of top o +%% top O +x1 = x3 = pcshiftx + 1/2n1; top y1=h; bot y3=1/8h; +lft x4 = pcshiftx; rt x2 = pcshiftx+n1; y2 = y4 = 1/2[y1,y3]; + +%% top flick +lft x11 = rt x1; y11=y1; +rt x13 = w-pcshiftx; y13 = h; + +%% bottom O +x31=x3; top y31= -1/8d; +x33=x31; top y33 = -d; +%rt x32 = w-pcshiftx; y32 = 1/2[y31,y33]; +lft x32 = x2; y32 = 1/2[y31,y33]; +lft x34 = pcshiftx; y34=y32; + +%% link +x44=1/2[x34,x31]; y44=1/2[y3,y31]; + +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1..z2..z3..z4..cycle; % top O +draw z11{right}..z13{pdir}; % flick +%draw z31..z32..z33..z34..cycle; % bottom O +draw z31{right}..z32{down}..z33{left}..{up}z34..cycle; % bottom O +draw z3{left}..z44{down}..z31{right}; % link +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,11,12,13,31,32,33,34,35,36,100); +endchar; % end "g" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{h} +% The letter `h'. +% \begin{macrocode} +cmchar "HMIN letter h"; +beginchar("h", 2sb#+hstretch*(13/11x_height#+jut#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +numeric n[]; +%% stem +lft x1=lft x2=pcshiftx+jut; +top y1=h; bot y2=0; +%% bowl +n1 := h/ascratio; % x-height +z3=(x1,6/8n1); +rt x5 = w-pcshiftx; y5=1/2n1; +x4=1/2[x3,x5]; top y4 = n1; +%%lft x6=x4; bot y6=0; +x6=1/2[x4,x5]; +bot y6=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +draw z3..z4{right}..z5{down}..z6{-pdir}; + +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 "CMIN letter i"; +beginchar("i", 2sb#+hstretch*(thick#+2jut#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +lft x1=lft x2=pcshiftx+jut; +top y1=h; bot y2=0; +%% dot +x22 = x21=x1; +bot y22 = 2h - bot y1; +bot y21 = top y22; +%%ductus:=true; +draw_tstem(1,2,srad); +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +draw z21--z22; %% dot +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 "CMIN letter j"; +beginchar("j", sb#+hstretch*(3/8x_height#), + x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% stem +rt x1 = w-pcshiftx; top y1 = h; +x2=x1; y2=-1/2d; +%% dot +x22 = x21=x1; +bot y22 = 2h - bot y1; +bot y21 = top y22; +%% bottom hook +lft x3 = 0; bot y3 = -d; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2; % stem +draw_flatserif(1,2,srad); +draw z21--z22; % dot +draw z2{down}..z3{-pdir}; % hook +ductus:=false; +penlabels(1,2,3,100); +endchar; % end "j" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{k} +% The letter `k'. +% \begin{macrocode} +cmchar "HMIN letter k"; +beginchar("k", 2sb#+hstretch*(14/11x_height#+jut#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +path pth[]; +numeric n[]; +pickup quill; +%% stem +n1 = h/ascratio; % x-height +lft x1=lft x2=pcshiftx+jut; +top y1=h; bot y2=0; +%% top arm +%%z3=(x1,1/2n1); +x3 = x1; top y3 = 1/2n1; +rt x5=5/8[x1,w-pcshiftx]; top y5=n1; +x4=1/2[x3,x5]; top y4=n1; +pth1 := z3{pdir}..z5{up}; + +x29=x1; top y29 = 7/8n1; +rt x25=5/8[x1,w-pcshiftx]; y25=6/8[y3,y29]; +x27=1/2[x29,x25]; top y27=n1; +pth1 := z3{pdir}..z25{up}..z27{left}..z29; +pth1 := z3{pdir}..z25..z27{left}..z29; + + +%% lower arm +pth2 := (rt x1,0)--(rt x1,h); +z13 = pth1 intersectionpoint pth2; +pickup threequarterquill; +lft x14 = x13; bot y14 = y13; +rt x7=w-pcshiftx; bot y7=0; + +pth3 := z14{pdir}..z25..z27{left}..z29; +pickup quill; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +%%draw pth1; % upper arm +draw pth3; % upper arm +pickup threequarterquill; +%%draw z14{down}..z7{-ppdir}; % lower arm +%%draw z14{down}..z7; % lower arm +draw z14{-ppdir}..z7{right}; % lower arm +pickup quill; +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 "HMIN letter l"; +beginchar("l", 2sb#+hstretch*(9/11x_height#+jut#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +lft x1=pcshiftx+jut; top y1=h; +n1 := top y1 - y1; +x2=x1; bot y2 =3n1; +rt x4 = w-pcshiftx; bot y4=n1; +x3=1/2[x2,x4]; bot y3=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2..z3{right}..z4; +draw_flatserif(1,2,srad); +ductus:=false; +penlabels(1,2,3,4,100); +endchar; % end "l" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{m} +% The letter `m'. +% \begin{macrocode} +cmchar "HMIN letter m"; +beginchar("m", 2sb#+hstretch*(19/11x_height#+2jut#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pickup quill; +%% left stem +lft x1=pcshiftx+jut; top y1=h; +x2=x1; bot y2=0; +%% start of bowl +x13=x1; y13=3/4h; +%% bottom of right and middle stems +rt x6 = w -pcshiftx - jut; y6=y2; +z4 = 1/2[z2,z6]; +%% top of middle and right stems +x3=x4; y3=y1; +x5=x6; y5=y13; +%% top of bowls +x14=2/3[x13,x3]; top y14 = h; +x33=x4; y33=y13; +x34=2/3[x33,x5]; y34 = y14; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % left half +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +draw z13{pdir}..z14{right}..z33{down}--z4; +draw_roundserif(4,3,srad); +draw z33{pdir}..z34{right}..z5{down}--z6; +draw_roundserif(6,5,srad); +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 "HMIN letter n"; +beginchar("n", 2sb#+hstretch*(12/11x_height#+2jut#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +%% left stem +lft x1=pcshiftx+jut; top y1=h; +x2=x1; bot y2=0; +% start of bowl +x13=x1; y13=3/4h; +%% right stem +rt x4 = w-pcshiftx-jut; y4=y2; +x3 = x4; y3 = y13; +% top of bowl +x14 = 2/3[x13,x3]; top y14 = h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % left stem +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +draw z13{pdir}..z14{right}..z3{down}--z4; +draw_roundserif(4,3,srad); +ductus:=false; +penlabels(1,2,3,4,5,6,13,14,100); +endchar; % end "n" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{o} +% The letter `o'. +% \begin{macrocode} +cmchar "CMIN letter o"; +beginchar("o", 2sb#+hstretch*(15/11x_height#), % could be 15/11 + 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; +draw z1..z2..z3..z4..cycle; +z5=(pcshiftx,-o); +obowl(5, w-2pcshiftx, h+2o); +%%ductus:=true; +if ductus: + pickup stylus; + draw obfirst; draw obsecond; draw obouter; draw obinner; +else: +%% fill obouter; unfill obinner; +fi +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 "CMIN letter p"; +beginchar("p", 2sb#+hstretch*(13/11x_height#+jut#), + x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% stem +lft x1=lft x2=pcshiftx+jut; +top y1=h; bot y2=-d; +%% bowl % from "d" +z3=3/4[(x1,0),z1]; +rt x5 = w-pcshiftx; y5=1/2h; +x4=1/2[x3,x5]; top y4 = h; +x6=x4; bot y6=0; +z7=1/4[(x1,0),z1]; + +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad) +draw z3{pdir}..z4{right}..z5{down}..z6{left}..z7; % bowl (from d) +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 "CMIN letter q"; +beginchar("q", 2sb#+hstretch*(13/11x_height#+jut#), + x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% right stem +rt x1=w-pcshiftx-jut; top y1=h; +x2=x1; bot y2=-d; +%% bowl +z3=1/4[(x1,0),z1]; +lft x5=pcshiftx; y5=1/2h; +x4=1/2[x3,x5]; bot y4=0; +x6=x4; top y6=h; +z7=3/4[(x1,0),z1]; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); +%%draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +draw z3{-pdir}..z4{left}..z5{up}..z6{right}..z7; +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 "CMIN letter r"; +beginchar("r", 2sb#+hstretch*(10/11x_height#+jut#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% stem +lft x1=lft x2=pcshiftx+jut; +top y1=h; bot y2=0; +%% bowl +z3=3/4[z2,z1]; +rt x5 = w-pcshiftx; y5=y3; +x4=1/2[x3,x5]; top y4 = h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +draw z3{pdir}..z4{right}..z5{down}; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,100); +endchar; % end "r" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{s} +% The letter `s'. This is a `short' S. +% \begin{macrocode} +cmchar "HMIN letter s"; +beginchar("s", 2sb#+hstretch*(11/11x_height#+jut#), % 13/11 seems too wide + x_height#, 0); +adjust_fit(0,0); +numeric n[]; +pcshiftx := sb; +pickup quill; +x2=x4=x6=1/2w; +rt x1 = rt x5 = w-pcshiftx; +lft x3 = lft x7 = pcshiftx; +top y2=h; bot y6=0; +y4 = 7/16[y6,y2]; +n1 := top y2 - y2; +y3 = 1/2[y4,y2]; y5 = 1/2[y4,y6]; +y1 = y2-n1; +y7 = y6+n1; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1..z2{left}..z3{down}..z4..z5{down}..z6{left}..z7; +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 "CMIN letter t"; +beginchar("t", 2sb#+hstretch*(8/11x_height#+jut#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% bar +lft x11 = pcshiftx; rt x12=w-pcshiftx; +top y11= top y12=h; +n1 := top y11 - y11; +%% stem +lft x1=pcshiftx+jut; bot y1=h+n1; +x2=x1; bot y2 = 2n1; +rt x4 = w-pcshiftx; bot y4 = n1; +x3 = 1/2[x2,x4]; bot y3=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z11--z12; % bar +draw z1--z2..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 "CMIN letter u"; +beginchar("u", 2sb#+hstretch*(11/11x_height#+2jut#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% left stem +lft x1 = pcshiftx + jut; top y1 = h; +% start of bowl +x13=x1; y13=1/3h; +% right stem +rt x3=w-pcshiftx-jut; 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; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z13{down}..z14{right}..z33{pdir}; +draw_flatserif(1,13,srad); +draw_tstem(3,4,srad); % right stem +draw_flatserif(3,4,srad); +draw_roundserif(4,3,srad); +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 "CMIN letter v"; +beginchar("v", 2sb#+hstretch*(13/11x_height#+jut#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +path pth[]; +numeric n[]; +pickup quill; +%% left stem top +lft x1 = pcshiftx + jut; top y1 = h; +bot y3 = 0; +%% right stem +rt x5=w-pcshiftx; top y5 = h; +x3=5/8[x1,x5]; + +z11=(x1,0); z15=(x5,0); +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1{down}..z3; % left stem +draw_flatserif(1,11,srad); +draw z5{down}..z3; % right stem +draw_flatserif(5,15,srad); +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 "CMIN letter w"; +beginchar("w", 2sb#+hstretch*(21/11x_height#+jut#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +%% left stem +lft x1 = pcshiftx + jut; top y1 = h; +% start of bowl +x13=x1; y13=1/3h; +% right stem +rt x5=w-pcshiftx-jut; y5=y1; +x6=x5; bot y6=0; +z53=1/4[z6,z5]; % start of bowl +% middle stem +z3 = 1/2[z1,z5]; +z33=(x3,y13); +% middle of bowl +x14=1/3[x1,x3]; bot y14=0; +% middle of right bowl +x34=1/3[x3,x5]; y34=y14; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z13{down}..z14{right}..z33{pdir}; % left +draw_flatserif(1,13,srad); +draw z3--z33{down}..z34{right}..z53{pdir}; % middle +draw_flatserif(3,33,srad); +draw_tstem(5,6,srad); % right stem +draw_flatserif(5,6,srad); +draw_roundserif(6,5,srad); +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 "CMIN letter x"; +beginchar("x", 2sb#+hstretch*(13/11x_height#+jut#), + x_height#, 0); +adjust_fit(0,0); +path pth[]; +numeric n[]; +pcshiftx := sb; +pickup quill; + +% top left to bottom right +lft x1 = pcshiftx + jut; y1=h; +rt x2 = w - pcshiftx - jut; y2 =0; + +% bottom left to top right +lft x21=pcshiftx; bot y21=0; +rt x22=w-pcshiftx; top y22=h; +z12=14/24[z1,z2]; + +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2; +draw_roundserif(1,2,srad); +draw_roundserif(2,1,srad); + +draw z21..z12..z22{up}; + +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 "CMIN letter y"; +beginchar("y", 2sb#+hstretch*(14/11x_height#+jut#), + x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +path pth[]; +numeric n[]; +pickup quill; +%% left stem top +lft x1 = pcshiftx + jut; top y1 = h; +bot y3 = 0; +%% right stem +rt x5=w-pcshiftx; top y5 = h; +lft x9=-1/2w; bot y9 = -d; +pth1 := z9{right}..z5{up}; +pth2 := (0,y3)--(w,y3); +z99 = pth1 intersectionpoint pth2; +x3 = x99; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1{down}..z3; % left stem +draw_flatserif(1,3,srad); +draw pth1; % right stem +draw_flatserif(5,3,srad); +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 "CMIN letter z"; +beginchar("z", 2sb#+hstretch*(12/11x_height#), + x_height#, 0); +adjust_fit(0,0); +numeric n[]; +path pth[]; +pcshiftx := sb; +pickup quill; +%% top bar ends +lft x1 = pcshiftx; rt x2 = w-pcshiftx; +top y1 = top y2 = h; +%% bottom bar +x3=x1; x5=x2; x4=1/2[x3,x5]; +bot y3 = bot y4 = 0; +bot y5 = y4; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2; % top bar +draw z3--z4..z5; % bottom bar +draw z2--z3; % diagonal +ductus:=false; +penlabels(1,2,3,4,5,6,10o,10i,20o,20i,100); +endchar; % end "z" + +% \end{macrocode} +% \end{routine} +% +% +% The end of this file +% \begin{macrocode} +% +% \end{macrocode} +% +% +% \subsection{The code for capital letters} +% +% \thisfont{} `capitals' were drawn with the same pen as for the minuscules, +% and the letters were merely larger versions of the minuscules. +% +% \begin{macrocode} +%<*maj> +% HMINU.MF Program file for Humanist Miniscule `capitals' +% + +% \end{macrocode} +% +% +% \begin{routine}{A} +% The letter `A'. +% \begin{macrocode} +cmchar "HMIN letter A"; +beginchar("A", 2sb#+caprat*hstretch*(20/18x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pair pr[]; +pickup quill; +x100 = 0; +n2 := rt x100 - lft x100; +n1 := w - 2pcshiftx - n2; % effective letter width +%% legs +x1 = pcshiftx + n1/2; top y1=h; +lft x2 = pcshiftx; bot y2 = 0; +rt x3 = pcshiftx + n1; y3=y2; +rt x4 = w-pcshiftx; y4=y3; +%% bar +z12=10/16[z1,z2]; z83=10/16[z1,z3]; +z13 = (x83 - n2,y83); +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2; draw z1--z3; draw z12--z13; %% legs and bar +draw z3--z4; draw z2--(x2+n2,y2); draw (x1-n2,y1)--z1; %% serifs +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 "HMIN letter B"; +beginchar("B", 2sb#+caprat*hstretch*(14/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; +%% 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 "HMIN letter C"; +beginchar("C", 2sb#+caprat*hstretch*(16/18x_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{pdir}; +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 "HMIN letter D"; +beginchar("D", 2sb#+caprat*hstretch*(18/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; +%% stem +lft x1 = pcshiftx+n1; top y1=h; +x2 = x1; bot y2 = 0; +%% bowl +lft x3 = pcshiftx; y3=y1; +x7 = x3; y7=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 "HMIN letter E"; +beginchar("E", sb#+caprat*hstretch*(14/18x_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+n1; top y1 = h; +x2 = x1; bot y2=0; +%% bars +lft x3 = pcshiftx; y3 = y1; rt x4 = w-pcshiftx; y4=y3; +x5=x1; y5 = 1/2[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 "HMIN letter F"; +beginchar("F", 2sb#+caprat*hstretch*(14/18x_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+n1; top y1=h; bot y2=0; +%% bars +lft x3 = pcshiftx; y3 = y1; rt x4 = w-pcshiftx; y4 = y3; +x5=x1; y5 = 1/2[y1,y2]; x6 = x4; y6 = y5; +%% serif +x211 = x2 - n1; y211 = y2; +x212 = x2 + n1; y212 = y2; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2; +draw z3--z4; draw z5--z6; +draw z211--z212; +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 "HMIN letter G"; +beginchar("G", 2sb#+caprat*hstretch*(19/18x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +path pth[]; +pair vec[]; +numeric n[]; +pcshiftx := sb; +pickup quill; +x100 = 0; +n1 := rt x100 - lft x100; +%% bar +rt x52 = w - pcshiftx; y52 = 1/2h; +x51 = x52 - 2n1; y51 = y52; +z512 = 1/2[z51,z52]; +%% 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; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,11,12,13,31,32,33,34,35,36,100); +endchar; % end "G" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{H} +% The letter `H'. +% \begin{macrocode} +cmchar "HMIN letter H"; +beginchar("H", 2sb#+caprat*hstretch*(18/18x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +numeric n[]; +x100 = 0; +n1 := rt x100 - lft x100; +%% stems +lft x1=lft x2=pcshiftx+n1; +top y1=h; bot y2=0; +rt x3 = w - pcshiftx - n1; x4 = x3; y3 = y1; y4 = y2; +%% bar +z12 = 1/2[z1,z2]; z34 = 1/2[z3,z4]; +%% serifs +rt x111 = lft x1; y111 = y1; lft x112 = rt x1; y112 = y111; % TL +x211 = x111; x212 = x112; y211 = y212 = y2; % BL +rt x311 = lft x3; y311 = y3; lft x312 = rt x3; y312 = y311; % TR +x411 = x311; x412 = x4+n1; y411 = y412 = y4; % BR +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2; draw z3--z4; draw z12--z34; +draw (x1-n1,y1)--(x1+n1,y1); draw (x2-n1,y2)--(x2+n1,y2); +draw (x3-n1,y3)--(x3+n1,y3); draw (x4-n1,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 "HMIN letter I"; +beginchar("I", 2sb#+caprat*hstretch*(thick#+2jut#), + 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 +rt x111 = lft x1; lft x112 = rt x1; y111 = y112 = y1; +x211 = x111; x212 = x112; y211 = y212 = y2; +%%ductus:=true; +draw z1--z2; +draw z111--z112; draw z211--z212; +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 "HMIN letter J"; +beginchar("J", 2sb#+caprat*hstretch*(10/18x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +path pth[]; +numeric n[]; +pickup quill; +x100 = 0; +n1 := rt x100 - lft x100; +%% stem serif +rt x112 = w - pcshiftx; top y112 = h; +x111 = x112 - n1; y111 = y112; +%% stem +z1 = 1/2[z111,z112]; +x2 = x1; y2 = 1/4h; +%% hook +lft x4 = pcshiftx; y4 = 1/2y2; +x3 = 1/2[x2,x4]; bot y3 = 0; +pth1 := z2{down}..z3{left}..z4; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2; % stem +draw z111--z112; +draw pth1; +ductus:=false; +penlabels(1,2,3,100); +endchar; % end "J" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{K} +% The letter `K'. +% \begin{macrocode} +cmchar "HMIN letter K"; +beginchar("K", 2sb#+caprat*hstretch*(17/18x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +path pth[]; +numeric n[]; +pickup quill; +x100 = 0; +n1 := rt x100 - lft x100; +%% 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; +rt x5 = w - pcshiftx - n1; 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+n1,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 "HMIN letter L"; +beginchar("L", 2sb#+caprat*hstretch*(12/18x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +x100 = 0; n1 := rt x100 - lft x100; +lft x1=pcshiftx+n1; top y1=h; +x2=x1; bot y2 =0; +lft x3 = pcshiftx; 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+n1,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 "HMIN letter M"; +beginchar("M", 2sb#+caprat*hstretch*(25/18x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pickup quill; +x100 = 0; +n1 := rt x100 - lft x100; +%% left stem +lft x1=pcshiftx+n1; top y1=h; +lft x2=pcshiftx; bot y2=0; +%% right stem +rt x4 = w - pcshiftx - n1; y4 = y2; +x3 = x4 - n1; y3 = y1; +%% the V +z24 = 1/2[z2,z4]; +pth1 := z1{-ppdir}..{down}z24; +pth2 := z3{down}..{down}z24; +%% serifs +x111 = x1 - n1; y111 = y1; % TL +x212 = x2+n1; y212 = y2; % BL +x311 = x3-n1; y311 = y3; % TR +x412 = x4+n1; y412 = y4; % BR +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2; draw z3--z4; draw pth1; draw pth2; +draw z111--z1; draw z2--z212; +draw z311--z3; draw z4--z412; +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 "HMIN letter N"; +beginchar("N", 2sb#+caprat*hstretch*(22/18x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +path pth[]; +numeric n[]; +pickup quill; +x100 = 0; +n1 := rt x100 - lft x100; +%% stems +lft x1=pcshiftx+n1; top y1=h; x2=x1; bot y2=0; +rt x3 = w - pcshiftx - n1; x4 = x3; y3 = y1; y4 = y2; +pth1 := z1{-ppdir}..{-ppdir}z4; +%% serifs +x111 = x1 - n1; x112 = x1 + n1; y111 = y112 = y1; % TL +x211 = x111; x212 = x112; y211 = y212 = y2; % BL +x311 = x3 - n1; x312 = x3 + n1; y311 = y312 = y3; % TR +x411 = x311; x412 = x312; y411 = y412 = y4; % BR +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2; draw z3--z4; draw pth1; +draw z111--z112; draw z211--z212; +draw z311--z312; draw z411--z412; +ductus:=false; +penlabels(1,2,3,4,5,6,13,14,100); +endchar; % end "N" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{O} +% The letter `O'. +% \begin{macrocode} +cmchar "HMIN letter O"; +beginchar("O", 2sb#+caprat*hstretch*(18/18x_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 "HMIN letter P"; +beginchar("P", 2sb#+caprat*hstretch*(14/18x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +path pth[]; +numeric n[]; +pickup quill; +x100 = 0; +n1:= rt x100 - lft x100; +%% stem +lft x1=lft x2=pcshiftx+n1; +top y1=h; bot y2=0; +z12 = 1/2[z1,z2]; +%% bowl +z3 = (pcshiftx,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 "HMIN letter Q"; +beginchar("Q", 2sb#+caprat*hstretch*(18/18x_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 "HMIN letter R"; +beginchar("R", 2sb#+caprat*hstretch*(18/18x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pickup quill; +x100 = 0; +n1:= rt x100 - lft x100; +n2 := 14/18; %% P/R width ratio +%% stem +lft x1=lft x2=pcshiftx+n1; +top y1=h; bot y2=0; +z12 = 1/2[z1,z2]; +%% bowl +z3 = (pcshiftx,y1); +x7 = x12; top y7 = y12; +rt x5 = w*n2 - pcshiftx; y5 = 1/2[y3,y7]; +pth1 := z3--z1{right}..z5{down}..{left}z7; +%% leg +z21 = z7; +x23 = w-pcshiftx; bot y23 = 0; +pth2 := z21{-ppdir}..{right}z23; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2; draw pth1; draw pth2; +draw (x2-n1,y2)--(x2+n1,y2); +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 "HMIN 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 "HMIN letter T"; +beginchar("T", 2sb#+caprat*hstretch*(16/18x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% bar +lft x1 = pcshiftx; rt x2=w-pcshiftx; +top y1 = top y2 = h; +%% stem +z3 = 1/2[z1,z2]; +x4 = x3; bot y4 = 0; +%% foot +n1 := rt x4 - lft x4; +rt x5 = lft x4; x6 = x4 + n1; y5 = y6 = y4; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2; % bar +draw z3--z4; % stem +draw z5--z6; % foot +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 "HMIN letter U"; +beginchar("U", 2sb#+caprat*hstretch*(20/18x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pickup quill; +x100 = 0; +n1 := rt x100 - lft x100; +%% left stem +lft x1 = pcshiftx + n1; top y1 = h; +% start of bowl +x13=x1; 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 z3--z4; draw pth1; +draw (x1-n1,y1)--(x1+n1,y1); +draw (x3-n1,y3)--(x3+n1,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 "HMIN letter V"; +beginchar("V", 2sb#+caprat*hstretch*(20/18x_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 tops +lft x1 = pcshiftx + 2n1; top y1 = h; +rt x3 = w - pcshiftx - 2n1; top y3 = h; +%% bottom +x13 = 1/2[x1,x3]; bot y13 = 0; +pth1 := z1{-pdir}..{-ppdir}z13; +pth2 := z13{pdir}..z3; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw pth1; draw pth2; +draw (x1-2n1,y1)--(x1,y1); +draw (x3,y3)--(x3+2n1,y3); +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 "HMIN letter W"; +beginchar("W", 2sb#+caprat*hstretch*(26/18x_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 tops +lft x1 = pcshiftx + 2n1; top y1 = h; +rt x5 = w - pcshiftx - 2n1; top y5 = h; +z93 = 1/2[z1,z5]; +x3 = rt x93; y3 = y93; +%% V bottoms +x13 = 1/2[x1,x3]; bot y13 = 0; +x35 = 1/2[x3,x5]; bot y35 = 0; +pth1 := z1{-pdir}..{-ppdir}z13; +%%pth2 := z13{pdir}..z3; +pth3 := z3{-pdir}..{-ppdir}z35; +z335 = directionpoint down of pth3; +%%pth2 := z13..{up}z3; +%%pth3 := z3{down}..z35; +pth2 := z13..{up}z335; +pth4 := z35{pdir}..z5; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw pth1; draw (x1-2n1,y1)--(x1,y1); +draw pth2; +draw (x3-n1,y3)--(x3,y3); +draw pth3; +draw pth4; draw (x5,y5)--(x5+2n1,y5); +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 "HMIN letter X"; +beginchar("X", 2sb#+caprat*hstretch*(18/18x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +path pth[]; +numeric n[]; +pcshiftx := sb; +pickup quill; +x100 = 0; +n1 := rt x100 - lft x100; +%% 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 +rt x3 = w - pcshiftx - n1; top y3 = h; +lft x4 = pcshiftx; bot y4 = 0; +pth1 := z4{pdir}..z3; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2; draw pth1; +draw (x1-n1,y1)--(x1+n1,y1); +draw (x2-n1,y2)--(x2+n1,y2); +draw (x3-n1,y3)--(x3+n1,y3); +draw (x4,y4)--(x4+n1,y4); +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 "HMIN letter Y"; +beginchar("Y", 2sb#+caprat*hstretch*(15/18x_height#), + caprat*x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +path pth[]; +numeric n[]; +pickup quill; +x100 = 0; +n1 := rt x100 - lft x100; +%% left stem top +lft x1 = pcshiftx + n1; top y1 = h; +%% upright +x5 = 1/2w; y5 = 1/2y1; +x6 = x5; bot y6 = 0; +%% right stem +rt x3=w-pcshiftx-n1; top y3 = h; +pth1 := z5{ppdir}..{pdir}z1; % left +pth2 := z5{pdir}..{left}z3; % right +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z5--z6; draw (x6-n1,y6)--(x6+n1,y6); % stem +draw pth1; draw (x1-n1,y1)--(x1,y1); +draw pth2; +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 "HMIN letter Z"; +beginchar("Z", 2sb#+caprat*hstretch*(14/18x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +numeric n[]; +path pth[]; +pcshiftx := sb; +pickup quill; +%% top bar ends +lft x1 = pcshiftx; rt x2 = w -pcshiftx; top y1 = top y2 = h; +%% bottom bar ends +lft x3 = pcshiftx; rt x4 = w -pcshiftx; bot y3 = bot y4 = 0; +%% middle bar +lft x5 = x1; rt x6 = x2; y5 = y6 = 1/2h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2; draw z3--z4; draw z5--z6; +draw z2--z3; +ductus:=false; +penlabels(1,2,3,4,5,6,10o,10i,20o,20i,100); +endchar; % end "Z" + +% \end{macrocode} +% \end{routine} +% +% +% +% The end of this file +% \begin{macrocode} +% +% \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#+trijut#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +x1=w/2; top y1 = h; +z3=(x1, 1/2dot_size); +z2=(x1, y3+3/2dot_size); +draw z1--z2; +draw_pdot(3,dot_size); +penlabels(1,2,3); + +endchar; % end of "!" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{?} +% The `?' character, which had not been invented at this time. +% \begin{macrocode} + +cmchar "Question mark"; +beginchar("?", 2sb#+hstretch*(11/11x_height#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pickup quill; +n1 := w-2pcshiftx; % actual character width +n2 := 1/3h; % height of top bowl +n3 := n2; % height of bottom bowl +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} +% +% \end{macrocode} +% +% +% \subsection{The ligatures and dashes file} +% +% The ligatured letters, punctuation marks and dashes are defined in this file. +% \begin{macrocode} +%<*lig> +% HMINLIG.MF Uncial ligatured letters, punctation and dashes + +% \end{macrocode} +% First the ligtables. +% \begin{macrocode} + +ligtable "`": "`"=:oct"134"; +ligtable "'": "'"=:oct"042"; %% , "?" kern 2u#, "!" kern 2u#; + +ligtable "-": "-"=:oct"173"; +ligtable oct"173": "-"=:oct"174"; + +ligtable "c": "t"=:oct"014"; +ligtable "s": "t"=:oct"015"; + +% \end{macrocode} +% +% \begin{routine}{ae} +% The `\ae' conjoined characters. +% \begin{macrocode} +cmchar "HMIN ae conjunction"; +beginchar(oct "032", + 2sb#+hstretch*(18/11x_height#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pair pr[]; +numeric rta, lfte; % right and left limits of a & e respectively +pickup quill; + +z999=(0,0); n999 = rt x999 - lft x999; % width of vertical stroke +rta := 1/2w + n999 + pcshiftx; + +%%% The "a" +n1 := rta - 2pcshiftx -jut; % effective letter width +%% "stem" +rt x1 = rta - pcshiftx-jut; top y1=h; +x2 = x1; bot y2=0; +z16 = 1/6[z2,z1]; +rt x6 = x16; y6=y16; +lft x4 = pcshiftx; y4 = 1/2h; +%% stem path +pth1 := z1{down}..z2; +pr1 := direction 1 of pth1; +z20 = z2 shifted -10pr1; + +z11 = point 3/13 of pth1; z15 = point 11/13 of pth1; +lft x13 = pcshiftx; y13=1/4h; + +%%% The "e" + +lfte = lft x11 - pcshiftx; + +n51 := w-pcshiftx - lfte; % actual letter width +n52 := 7/8n51; % width of bowl +x51 = lfte + pcshiftx + 5/8n52; top y51=h; +lft x52 = lfte + pcshiftx; y52 = 1/2h; +x53 = lfte + pcshiftx + 1/2n52; bot y53 = 0; +rt x54 = lfte + pcshiftx + n52; y54 = 1/4h; +z98=(lfte,5/8h); z99=(2w,y98); +pth51 := z98--z99; +pth52 := z51{left}..z52{down}..z53{right}; +z57 = pth51 intersectionpoint pth52; +rt x67 = w; y67=y57; +rt x58 =lfte + pcshiftx+n52; y58=y52; +pth53 := z51{right}..z58{down}..z53{left}; +z59 = pth51 intersectionpoint pth53; + +%%ductus:=true; +if ductus: + pickup stylus; +else: + % draw the a stem + draw pth1; + draw_roundserif(1,2,srad); +%% draw_roundserif(2,20,srad); + % draw the a bowl + draw z15{-pdir}..z13{up}..z57{right}; + % draw the e + draw z59{up}..z51{left}..z52{down}..z53{right}..z54{pdir}; + draw z57--z67; +fi +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,11,12,13,14,15,100); +penlabels(51,52,53,54,55,56,57,58,59,67,70,98,99,100); +endchar; % end "ae" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{AE} +% The `\AE' conjoined characters. +% \begin{macrocode} +cmchar "HMIN AE conjunction"; +beginchar(oct "035", +%% sb#+caprat*hstretch*(14/18x_height#), + sb#+caprat*hstretch*(22/18x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric pcshifte; +numeric n[]; +path pth[]; +pickup quill; +x100 = 0; +n1 = rt x100 - lft x100; + +%% the E +%% stem +pcshifte = 7/16w; +lft x1 = pcshifte+n1; top y1 = h; +x2 = x1; bot y2=0; +%% bars +lft x3 = pcshifte; y3 = y1; rt x4 = w-pcshiftx; y4=y3; +x5=x1; y5 = 1/2[y1,y2]; x6 = x4; y6 = y5; +x7 = x3; y7 = y2; x8 = x4; y8=y7; + +%% bottom left A leg +lft x52 = pcshiftx; bot y52=0; +z62 = whatever[z52,z1]; y62=y5; + +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2; % stem +draw z3--z4; draw z5--z6; draw z7--z8; +draw z52--z1; draw z62--z5; % the A +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,17,70,100); +endchar; % end "AE" + +% \end{macrocode} +% \end{routine} +% +% +% +% \begin{routine}{ct} +% The `ct' ligature. +% \begin{macrocode} + +cmchar "The ct ligature"; +beginchar(oct"014", 2sb#+hstretch*(20/11x_height#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pair vc[]; +pickup quill; + +%%%%%%%%%%% C + +n1:=1/2(w-2pcshiftx); % actual letter width +n2 := h/ascratio; % x-height +x1=pcshiftx + 1/2n1; top y1 = n2; +lft x2 = pcshiftx; y2 = 1/2n2; +x3 = x1; bot y3 = 0; +rt x4 = n1; y4 = 1/4n2; +x6 = x4; +%%y6 = 3/4n2; +top y6 = y1; +pth1 := z6..z1{left}..z2{down}..z3{right}..z4{pdir}; + +%%%%%%%%%%%%% T + +%% bar +top y33=n2; n3 := n2 - top y33; +%%lft x31 = n1+pcshiftx; +lft x31 = n1; +rt x32=w-pcshiftx; +%%top y31 = y33-n3; bot y32=y33+n3; +%%top y31 = y33-n3; y32=y33; +y31 = y32 = y33; +x33=1/2[x31,x32]; +pth2 := z31--z32; % T bar + +n4 := top y33 - y33; +x34 = x33; bot y34 = 2n4; +rt x36 = w - pcshiftx; bot y36 = n4; +x35 = 1/2[x34,x36]; bot y35 = 0; +pth3 := z33--z34..z35..z36; % T stem + + +%%%%%%%%%%%%%%%%% Ligature + +z51=z6; +z55=z33; +x53 = 1/2[x51,x55]; +top y53 = h; +vc51 := direction 0 of pth1; +vc55 := direction 0 of pth3; +pth4 := z51{vc51}..z53{right}..z55{vc55}; % loop +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw pth1; % C +draw pth2; % T bar +draw pth3; % T bowl +draw pth4; % ligature loop +ductus:=false; +penlabels(1,2,3,4,5,6,14,16,17,18,31,32,33,34,35,36,100); +endchar; % end of "ct" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{st} +% The `st' ligature. +% \begin{macrocode} + +cmchar "The st ligature"; +beginchar(oct"015", 2sb#+hstretch*(15/11x_height#+jut#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pair vc[]; +pickup quill; +%%%%%%%%%%% S + +n1:=3/7(w-2pcshiftx-jut); % actual letter width +n2 := h/ascratio; % x-height + +%% stem +lft x1=lft x2=pcshiftx+jut; top y1=n2; bot y2=0; +%% flick +x4=x2; y4 = 1/2n1; +%%%%%%%%%%%%% T + + +%% bar +top y33=n2; n3 := n2 - top y33; +%%lft x31 = n1+pcshiftx; +lft x31 = n1; +rt x32=w-pcshiftx; +%%top y31 = y33-n3; bot y32=y33+n3; +%%top y31 = y33-n3; y32=y33; +y31 = y32 = y33; +x33=1/2[x31,x32]; +pth2 := z31--z32; % T bar + +n4 := top y33 - y33; +x34 = x33; bot y34 = 2n4; +rt x36 = w - pcshiftx; bot y36 = n4; +x35 = 1/2[x34,x36]; bot y35 = 0; +pth3 := z33--z34..z35..z36; % T stem + + + +%%%%%%%%%%%%%%%%% Ligature + +z51=z4; +z55=z33; +x53 = 5/8[x51,x55]; +top y53 = h; +vc51 := up; +vc55 := direction 0 of pth3; +pth4 := z51{vc51}...z53{right}..z55{vc55}; % loop +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2; % S stem +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +draw pth2; % T bar +draw pth3; % T bowl +draw pth4; % ligature loop +ductus:=false; +penlabels(1,2,3,4,5,6,14,16,17,18,31,32,33,34,35,36,100); +endchar; % end of "st" + +% \end{macrocode} +% \end{routine} +% +% \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*(0.8x_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*(x_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*(2x_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 (which is really an `et' ligature). +% \begin{macrocode} + +cmchar "HMIN ampersand"; +beginchar("&", 2sb#+hstretch*(15/11x_height#+2jut#), asc_height#, 0); +adjust_fit(0,0); +numeric n[]; +path pth[]; +pcshiftx:=sb; +pickup quill; +%% alpha looking part +n1 := w-2pcshiftx-jut; % actual letter width +n2 := h/ascratio; % x-height +n3 := 16/16n2; % height of alpha +rt x1 = w-pcshiftx; bot y1=0; + +x3 = pcshiftx + 12/16n1; y3 = 1/2n2; + +lft x5 = pcshiftx + thick; y5 = 1/2[n2,h]; +rt x7 = lft x5 + 1/2n1; y7 = y5; +x6 = 1/2[x5,x7]; top y6 = h; + +lft x9 = pcshiftx; y9 = 1/2n2; +rt x10 = pcshiftx + 1/2n1; bot y10 = 0; + +rt x12 = w - pcshiftx; y12 = y7; + +x4 = x6; y4 = 1/2[y9,y5]; + +pth1 = z1..z4..z5{up}..z6{right}..z7{down}..z9{down}..z10{right}..{up}z12; + +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw pth1; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,10,11,12,16,17,18,19,21,22,23,24,25); +endchar; % end of "&" + +% \end{macrocode} +% \end{routine} +% +% +% The end of this file. +% \begin{macrocode} +% +% \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> +% HMINDIG.MF Program file for Humanist Miniscule digits +% + +% \end{macrocode} +% +% +% +% \begin{routine}{1} +% The digit `1'. +% \begin{macrocode} +cmchar "Uncial digit 1"; +beginchar("1", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +x1=x2=w/2; +y1=h; bot y2=0; +%%ductus:=true; +draw_tstem(1,2,srad); +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,100); +endchar; % end "1" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{2} +% The digit `2'. +% \begin{macrocode} +cmchar "Uncial digit 2"; +beginchar("2", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +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; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_wave(5,6,thin); % foot +draw z1..z2{right}..z3{down}..{-pdir}z5wl; % curve +ductus:=false; +penlabels(1,2,3,4,5,6,100); +endchar; % end "2" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{3} +% The digit `3'. +% \begin{macrocode} +cmchar "Uncial 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 "Uncial digit 4"; +beginchar("4", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% the stem +x1=x2=w-pcshiftx-jut; +y1=h; bot y2=0; +% the crossbar +lft x3=pcshiftx; y3=0.33h; +rt x4=w-pcshiftx; y4=y3; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % main stem +draw_wave(3,4,thin); % crossbar +draw z3wl--z1; % diagonal +ductus:=false; +penlabels(1,2,3,4,100); +endchar; % end "4" + +% \end{macrocode} +% \end{routine} +% +% +% +% \begin{routine}{5} +% The digit `5'. +% \begin{macrocode} +cmchar "Uncial digit 5"; +beginchar("5", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +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; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_wave(2,1,thin); % top squiggle +draw z3{pdir}..z5{down}..z6{left}..z7; % curve +draw z2wl--z3; % vertical +ductus:=false; +penlabels(1,2,3,4,5,6,7,100); +endchar; % end "5" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{6} +% The digit `6'. +% \begin{macrocode} +cmchar "Uncial 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 "Uncial digit 7"; +beginchar("7", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% top bar +lft x1=pcshiftx; +rt x2=w-pcshiftx; +top y1=top y2=h; +% bowed leg +x4=w/2; bot y4=0; +x3=0.5[x2,x4]-3thin; y3=0.5[y2,y4]; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_wave(1,2,thin); % top bar +draw z1wr..z3..z4; +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 "Uncial 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 "Uncial 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 "Uncial 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; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,100); +endchar; % end "0" + +% \end{macrocode} +% \end{routine} +% +% +% The end of this file. +% \begin{macrocode} +% +% \end{macrocode} +% +% +% \section{The font definition files} \label{sec:fd} +% +% The font comes in normal and bold weights only. +% +% \begin{macrocode} +%<*fdot1> +\DeclareFontFamily{OT1}{hmin}{} + \DeclareFontShape{OT1}{hmin}{m}{n}{ <-8.5> hmin7 <8.5-15> hmin10 <15-> hmin17 }{} + \DeclareFontShape{OT1}{hmin}{m}{sl}{ <-> sub * hmin/m/n }{} + \DeclareFontShape{OT1}{hmin}{m}{it}{ <-> sub * hmin/m/n }{} + \DeclareFontShape{OT1}{hmin}{m}{sc}{ <-> sub * hmin/m/n }{} + \DeclareFontShape{OT1}{hmin}{m}{u}{ <-> sub * hmin/m/n }{} + \DeclareFontShape{OT1}{hmin}{bx}{n}{ <-8.5> hminb7 <8.5-15> hminb10 <15-> hminb17 }{} + \DeclareFontShape{OT1}{hmin}{bx}{it}{ <-> sub * hmin/bx/n }{} + \DeclareFontShape{OT1}{hmin}{bx}{sl}{ <-> sub * hmin/bx/n }{} + \DeclareFontShape{OT1}{hmin}{b}{n}{ <-> sub * hmin/bx/n }{} +% +% \end{macrocode} +% +% +% \begin{macrocode} +%<*fdt1> +\DeclareFontFamily{T1}{hmin}{} + \DeclareFontShape{T1}{hmin}{m}{n}{ <-8.5> hmin7 <8.5-15> hmin10 <15-> hmin17 }{} + \DeclareFontShape{T1}{hmin}{m}{sl}{ <-> sub * hmin/m/n }{} + \DeclareFontShape{T1}{hmin}{m}{it}{ <-> sub * hmin/m/n }{} + \DeclareFontShape{T1}{hmin}{m}{sc}{ <-> sub * hmin/m/n }{} + \DeclareFontShape{T1}{hmin}{m}{u}{ <-> sub * hmin/m/n }{} + \DeclareFontShape{T1}{hmin}{bx}{n}{ <-8.5> hminb7 <8.5-15> hminb10 <15-> hminb17 }{} + \DeclareFontShape{T1}{hmin}{bx}{it}{ <-> sub * hmin/bx/n }{} + \DeclareFontShape{T1}{hmin}{bx}{sl}{ <-> sub * hmin/bx/n }{} + \DeclareFontShape{T1}{hmin}{b}{n}{ <-> sub * hmin/bx/n }{} +% +% \end{macrocode} +% +% \section{The package code} \label{sec:code} +% +% \subsection{The \Lpack{humanist} package} +% +% The \Lpack{humanist} 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{humanist}[2002/12/30 v1.0 package for Humanist 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}{\hminfamily} +% Selects the \thisfont{} font family in the OT1 or T1 encoding. +% \begin{macrocode} +\ifx\Tienc\encodingdefault + \newcommand{\hminfamily}{\usefont{T1}{hmin}{m}{n}} +\else + \newcommand{\hminfamily}{\usefont{OT1}{hmin}{m}{n}} +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\texthmin} +% Text command for the \thisfont{} font family. +% \begin{macrocode} +\DeclareTextFontCommand{\texthmin}{\hminfamily} +% \end{macrocode} +% \end{macro} +% +% The end of this package. +% \begin{macrocode} +% +% \end{macrocode} +% +% \subsection{The \Lpack{allhmin} package} +% +% The \Lpack{allhmin} 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{humanist} package. +% \begin{macrocode} +%<*uscall> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{allhmin}[2002/12/30 v1.0 package for all Humanist fonts] +\RequirePackage{humanist} +% \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}{hmin} +\renewcommand{\sfdefault}{hmin} +\renewcommand{\ttdefault}{hmin} +% \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}{\hmin@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{\hmin@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}{\hmin@new@setfontsize} +% This is a macro that replaces the |\@setfontsize| macro which is called by +% the font size changing commands. +% \begin{macrocode} +\newcommand{\hmin@new@setfontsize}[3]{% + \edef\@tempa{\def\noexpand\@tempb####1<#2}% + \@tempa>##2<##3\@nil{\def\hmin@baselineskip@value{##2}}% + \edef\@tempa{\noexpand\@tempb\hmin@baselineskip@table<#2}% + \@tempa><\@nil + \ifx\hmin@baselineskip@value\@empty + \def\hmin@baselineskip@value{#3}% + \fi + \hmin@old@setfontsize{#1}{#2}\hmin@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\hmin@old@setfontsize=\@setfontsize + \let\@setfontsize=\hmin@new@setfontsize} +\AtBeginDocument{\normalsize} +% \end{macrocode} +% +% +% The end of this package. +% \begin{macrocode} +% +% \end{macrocode} +% +% +% +% +% +% \Finale +% \PrintIndex +% +\endinput + +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} + + diff --git a/Master/texmf-dist/source/fonts/bookhands/humanist.ins b/Master/texmf-dist/source/fonts/bookhands/humanist.ins new file mode 100644 index 00000000000..4011e3d5bf1 --- /dev/null +++ b/Master/texmf-dist/source/fonts/bookhands/humanist.ins @@ -0,0 +1,118 @@ +%% humanist.ins +%% Author: Peter Wilson (CUA) now at peter.r.wilson@boeing.com +%% (or pandgwilson@earthlink.net) +%% Copyright 2002, 2003 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 and documentation +%% driver files from the doc files in this work when run through +%% LaTeX. +%% +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\batchfile{humanist.ins} +\input docstrip.tex +\preamble + + Author: Peter Wilson (CUA) now at peter.r.wilson@boeing.com + (or pandgwilson@earthlink.net) + Copyright 2002, 2003 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{humanist.drv}{t}{\from{humanist.dtx}{driver}} + +\Msg{*** Generating the Metafont files ***} + +\usepostamble\empty +\generateFile{hmin7.mf}{t}{\from{humanist.dtx}{base7}} +\generateFile{hmin10.mf}{t}{\from{humanist.dtx}{base10}} +\generateFile{hmin17.mf}{t}{\from{humanist.dtx}{base17}} +\generateFile{hminb7.mf}{t}{\from{humanist.dtx}{base7b}} +\generateFile{hminb10.mf}{t}{\from{humanist.dtx}{base10b}} +\generateFile{hminb17.mf}{t}{\from{humanist.dtx}{base17b}} +\generateFile{hminl.mf}{t}{\from{humanist.dtx}{min}} +\generateFile{hminu.mf}{t}{\from{humanist.dtx}{maj}} +\generateFile{hmintitle.mf}{t}{\from{humanist.dtx}{mfd}} +\generateFile{hminpunct.mf}{t}{\from{humanist.dtx}{punct}} +\generateFile{hminlig.mf}{t}{\from{humanist.dtx}{lig}} +\generateFile{hmindig.mf}{t}{\from{humanist.dtx}{dig}} + +\Msg{*** Generating the Font Definition files ***} +\usepostamble\defaultpostamble + +\generateFile{ot1hmin.fd}{t}{\from{humanist.dtx}{fdot1}} +\generateFile{t1hmin.fd}{t}{\from{humanist.dtx}{fdt1}} + +\Msg{*** Generating the LaTeX2e package files ***} + +\generateFile{humanist.sty}{t}{\from{humanist.dtx}{usc}} +\generateFile{allhmin.sty}{t}{\from{humanist.dtx}{uscall}} + +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into directories searched by TeX:} +\Msg{*} +\Msg{* Move these into the font source area:} +\Msg{* \space\space hmin7.mf} +\Msg{* \space\space hmin10.mf} +\Msg{* \space\space hmin17.mf} +\Msg{* \space\space hminb7.mf} +\Msg{* \space\space hminb10.mf} +\Msg{* \space\space hminb17.mf} +\Msg{* \space\space hminl.mf} +\Msg{* \space\space hminu.mf} +\Msg{* \space\space hmintitle.mf} +\Msg{* \space\space hminpunct.mf} +\Msg{* \space\space hminlig.mf} +\Msg{* \space\space hmindig.mf} +\Msg{*} +\Msg{* Move these into the LaTeX macro area:} +\Msg{* \space\space ot1hmin.fd} +\Msg{* \space\space t1hmin.fd} +\Msg{* \space\space humanist.sty} +\Msg{* \space\space allhmin.sty} +\Msg{*} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* `.dtx' through LaTeX.} +\Msg{* Process any name.idx file by:} +\Msg{* \space\space\space\space makeindex -s gind.ist name} +\Msg{* Process any name.glo file by:} +\Msg{* \space\space\space\space makeindex -s gglo.ist -o name.gls name.glo} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} + +\endinput diff --git a/Master/texmf-dist/source/fonts/bookhands/huncial.dtx b/Master/texmf-dist/source/fonts/bookhands/huncial.dtx new file mode 100644 index 00000000000..66dc25a3240 --- /dev/null +++ b/Master/texmf-dist/source/fonts/bookhands/huncial.dtx @@ -0,0 +1,3877 @@ +% \iffalse meta-comment +% +% huncial.dtx +% Copyright 1999 Peter R. Wilson +% +% This program is provided under the terms of the +% LaTeX Project Public License distributed from CTAN +% archives in directory macros/latex/base/lppl.txt. +% +% Author: Peter Wilson (CUA) (now at: peter.r.wilson@boeing.com) +% +% If you do not have the docmfp package (available from CTAN in +% tex-archive/macros/latex/contrib/supported), comment out the +% \usepackage{docmfp} line below and uncomment the line following it. +% +%<*driver> +\documentclass{ltxdoc} +\usepackage{docmfp} +%%%%%% \providecommand{\DescribeVariable}[1]{} \newenvironment{routine}[1]{}{} +\EnableCrossrefs +\CodelineIndex +\setcounter{StandardModuleDepth}{1} +\begin{document} + \DocInput{huncial.dtx} +\end{document} +% +% +% \fi +% +% \CheckSum{132} +% +% \DoNotIndex{\',\.,\@M,\@@input,\@addtoreset,\@arabic,\@badmath} +% \DoNotIndex{\@centercr,\@cite} +% \DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue} +% \DoNotIndex{\@input,\@ixpt,\@m} +% \DoNotIndex{\@minus,\@mkboth,\@ne,\@nil,\@nomath,\@plus,\@set@topoint} +% \DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb} +% \DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt} +% \DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt} +% \DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace} +% \DoNotIndex{\advance,\Alph,\alph} +% \DoNotIndex{\arabic,\ast,\begin,\begingroup,\bfseries,\bgroup,\box} +% \DoNotIndex{\bullet} +% \DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption} +% \DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass} +% \DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\endtrivlist} +% \DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup} +% \DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter} +% \DoNotIndex{\fbox} +% \DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef} +% \DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule} +% \DoNotIndex{\hsize,\hskip,\hspace,\hss,\if@tempswa,\ifcase,\or,\fi,\fi} +% \DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\fi,\fi,\fi,\fi,\fi} +% \DoNotIndex{\input} +% \DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark} +% \DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright} +% \DoNotIndex{\month,\newcommand,\newcounter,\newenvironment} +% \DoNotIndex{\NeedsTeXFormat,\newdimen} +% \DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number} +% \DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\p@} +% \DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip} +% \DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions} +% \DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright} +% \DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font} +% \DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily,\roman} +% \DoNotIndex{\roman,\secdef,\selectfont,\setbox,\setcounter,\setlength} +% \DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space} +% \DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase} +% \DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt} +% \DoNotIndex{\viipt,\vipt,\vskip,\vspace} +% \DoNotIndex{\wd,\xiipt,\year,\z@} +% +% \changes{v1.0}{1999/05/22}{First public release} +% \changes{v1.0a}{2001/01/02}{Fixed missing * in fd files} +% +% ^^A \def\fileversion{v1.0} +% ^^A \def\filedate{1999/05/22} +% \def\fileversion{v1.0a} +% \def\filedate{2001/01/02} +% \newcommand*{\Lpack}[1]{\textsf {#1}} ^^A typeset a package +% \newcommand*{\Lopt}[1]{\textsf {#1}} ^^A typeset an option +% \newcommand*{\file}[1]{\texttt {#1}} ^^A typeset a file +% \newcommand*{\Lcount}[1]{\textsl {\small#1}} ^^A typeset a counter +% \newcommand*{\pstyle}[1]{\textsl {#1}} ^^A typeset a pagestyle +% \newcommand*{\Lenv}[1]{\texttt {#1}} ^^A typeset an environment +% \newcommand*{\AD}{\textsc{ad}} +% \newcommand*{\thisfont}{Half Uncial} +% +% \title{The \Lpack{Half Uncial} fonts\thanks{This +% file has version number \fileversion, last revised +% \filedate.}} +% +% \author{% +% Peter Wilson\\ +% Catholic University of America \\ +% Now at \texttt{peter.r.wilson@boeing.com} +% } +% \date{\filedate} +% \maketitle +% \begin{abstract} +% The \Lpack{huncial} and \Lpack{allhuncl} packages provide a set of +% Metafont \thisfont{} book-hands +% as used +% for manuscripts in the 3rd to the 9th century. This is one in a series +% of manuscript fonts. +% \end{abstract} +% \tableofcontents +% \listoftables +% +% \StopEventually{} +% +% +% +% \section{Introduction} +% +% The \Lpack{huncial} and \Lpack{allhuncl} packages provide a Metafont~\cite{METAFONT} version +% of the \thisfont{} manuscript book-hand that was in use between about the +% third and ninth centuries~\AD. It is part of a project to provide fonts +% covering the major manuscript hands between the first century~\AD{} and +% the invention of printing. The principal resources used in this project +% are listed in the Bibliography. +% +% This manual is typeset according to the conventions of the +% \LaTeX{} \textsc{docstrip} utility which enables the automatic +% extraction of the \LaTeX{} macro source files~\cite{GOOSSENS94}. +% The \Lpack{docmfp} package is used for documenting the Metafont portions +% of the distribution~\cite{DOCMFP}. +% +% Section~\ref{sec:usc} describes the usage of the package. +% Commented code for the fonts is in Sections~\ref{sec:mf} and~\ref{sec:fd} +% and source code for the package is in Section~\ref{sec:code}. +% +% \subsection{Manuscript book-hands} +% +% Before the invention of printing all books were written by hand. The book-hands +% used by the scribes and copyists for the manuscripts changed as time +% went on. Table~\ref{tab:1} lists some of the common book-hands which were used +% between the 1st and 15th centuries. The later book-hands formed the basis of the +% fonts used by the early printers, which in turn form the basis of the printing +% fonts in use today. +% +% The manuscript book-hands were written with a broad nibbed reed or quill +% pen. Among the distinguishing characteristics of a hand, apart from the +% actual shape of the letters, are the angle of the pen (which controls the +% variation between thick and thin strokes) and the height of a letter compared +% to the width of the nib. The lower the ratio of the letter height to nib +% width, the more condensed is the script. The scripts also varied in their +% typical height. +% +% Table~\ref{tab:1} gives an `average' x-height for each +% script, which I obtained by measuring a sample of photographs of +% manuscripts written in the various hands. About a dozen examples +% of each book-hand were measured. This figure should not be taken too +% seriously. +% +% There was not a sharp division between the use of one hand and another. +% Many manuscripts exhibit a variety of hands in the same document. For example, +% the scribe writing in an Uncial hand may have used Roman Rustic letters +% for capitals. Usually the same pen was used for the two different scripts. +% +% Generally speaking, as a hand got older it became more embelished, and +% therefore took longer to write. As this happened a new hand would appear that +% was faster, and which would eventually make the earlier one obsolete. +% +% Many of the book-hands were single-cased; that is, they did not have an +% upper- and lower-case as we do nowadays in Western scripts. On the other +% hand, a script might be majuscule or minuscule. A \textit{majuscule} script +% is one, like our upper-case, where the letters are drawn between two lines +% and are of a uniform height with no ascenders or descenders. +% A \textit{minuscule} script, like our lower-case, is drawn between four lines +% and has ascenders and descenders. +% +% \begin{table} +% \centering +% \caption{The main manuscript book-hands} \label{tab:1} +% \begin{tabular}{lccccc} \hline +% Name & Century & x-height & Height & Pen & Normalised \\ +% & & (mm) & (nib widths) & angle & height \\ \hline +% Roman Rustic & 1--6 & 5.7 & 4--6 & 45 & 1.90 \\ +% Uncial & 3--6 & 4.1 & 4--5 & 30 & 1.37 \\ +% Half Uncial & 3--9 & 3.2 & 3--6 & 20--30 & 1.07 \\ +% Artificial Uncial & 6--10 & 4.2 & 3--6 & 10 & 1.40 \\ +% Insular majuscule & 6--9 & 4.2 & 5 & 0--20 & 1.40 \\ +% Insular minuscule & 6 onward & 4.1 & 5--6 & 45--70 & 1.37 \\ +% Carolingian minuscule & 8--12 & 3.0 & 3--5 & 45 & 1.00 \\ +% Early Gothic & 11--12 & 3.8 & 4--6 & 20--45 & 1.27 \\ +% Gothic Textura & 13--15 & 3.9 & 3--5 & 30--45 & 1.30 \\ +% Gothic Prescius & 13 onward & 3.3 & 4--5 & 45 & 1.10 \\ +% Rotunda & 13--15 & 3.2 & 4--6 & 30 & 1.07 \\ +% Humanist minuscule & 14 onward & 3.0 & 4--5 & 30--40 & 1.00 \\ \hline +% \end{tabular} +% \end{table} +% +% During the period under consideration arabic numerals were effectively +% not used. At the beginning they were unknown and even though some knew +% of them towards the end, the glyphs used for them are not recognisable --- +% to me they look somewhat like cryllic letters --- and each locality +% and time had its own highly individualistic rendering. The general rule +% when using one of these book-hands is to write all numbers using +% roman numerals. +% +% The Roman alphabet consisted of 23 capital letters --- the J, U and W +% were absent. The book-hands initially used both a `u' and a `v' interchangeably +% but by the 10th century the practice had become to use the `v' before a vowel +% and the `u' otherwise. The letter corresponding to the W sound appeared +% in England around the 7th century in +% the form of the runic \textit{wen} character and by about the 11th century +% the `w' chacter was generally used. The `J' is the newest letter of all, not +% appearing until about the mid 16th century. +% +% In the first century punctuation was virtually unknown, and typically +% would not even be any additional space between individual words, never +% mind denoting ends of sentences. Sometimes a dot at mid-height would be +% used as a word seperator, or to mark off the end of a paragraph. Effectively +% a text was a continuous stream of letters. By the time that printing was +% invented, though, all of our modern punctuation marks were being used. +% +% Among all these manuscript hands, the Carolingian minuscule is the +% most important as our modern fonts are based on its letter shapes, and it is +% also at this point in time where the division occured between the black letter +% scripts as used even today in Germany, and the lighter fonts used elesewhere. +% The Rotunda and Humanist minuscule hands were developed in Italy and were +% essentially a rediscovery of the Carolingian minusucle. Guthenberg took the +% Gothic scripts as the model for his types. Later printers, +% such as Nicholas Jenson of Venice, +% took the Humanist scripts as their models. +% +% +% \subsection{The \thisfont{} script} +% +% The \thisfont{} hand, which is a minuscule script, was in use for some seven +% centuries and was, in a sense, an intermediate script between the Uncial +% and Artificial Uncial book-hands. It was less formal than these and was +% also faster to write as fewer pen movements were required. It was +% derived from cursive hands that were not used in formal manuscripts. +% +% This is the first book-hand that shows some of the more characteristic +% letter shapes that we associate with the lower-case letters. For example, +% the `b' lettter has lost its upper bowl, and the `d' has acquired an ascender. +% The `f' is in an intermediate form between the modern `F' and `f'. +% The \thisfont{} also introduces the long `s' letter shape. +% +% Stemming from its cursive roots, ligatured letter pairs make an +% appearance. These typically were only +% used at the end of a line if it was going to be too long, and were rarely +% used in the middle of a line. The most common ligatures were of the +% form `e*', where the bar of the `e' was joined to the following letter +% (donoted here as *). Sometimes the e was made taller so its bar would be +% a convenient height for joing to an `m', say. The ampersand, `\&', also +% makes a first appearance as a ligatured `et' which is the Latin for `and'. +% This would be used anywhere in the text. I have provided the ampersand +% and just the `fi' ligature. +% +% Usually the +% lettering in a manuscript was all one size. If the scribe felt the need +% for `capital' letters then, using the same pen, would either write a larger +% \thisfont{} letter or a letter from one of the more formal book-hands. +% I have provided a set of `capital' letters that are only a little larger +% than the normal letters for use in running text. +% During the time the \thisfont{} script was used the alphabet only had 24 +% letters. I have included the missing J. +% +% Arabic numerals were unknown at this time, so all numbers were written +% using the roman numbering system. I have provided \thisfont{} versions of +% the arabic digits. +% +% Punctuation was used, but not with the frequency of today. +% A sentence might be ended with +% a dot at mid-height or a paragraph ended with a colon, also at mid-height. +% The comma was was a small +% slash; the semi-colon was known, as was the single quotation +% mark which was represented by a raised comma. +% +% +% \section{The \Lpack{huncial} and \Lpack{allhuncl} packages} \label{sec:usc} +% +% The \thisfont{} font family is called |huncl|. The font is supplied in both +% OT1 and T1 encodings. +% +% \subsection{The \Lpack{huncial} 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{\hunclfamily} +% The |\hunclfamily| 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{\texthuncl} +% The command |\texthuncl{|\meta{text}|}| will typeset \meta{text} using the +% \thisfont{} fonts. +% +% \subsection{The \Lpack{allhuncl} 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{allhuncl} package automatically loads the \Lpack{huncial} package, +% so its font commands are available if necessary. +% +% +% +% \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> +%%%% HUNCL7.MF Half Uncial at 7 point design size. +%%%% HUNCL10.MF Half Uncial at 10 point design size. +%%%% HUNCL17.MF Half Uncial at 17 point design size. +%%%% HUNCLB7.MF Half Uncial Bold at 7 point design size. +%%%% HUNCLB10.MF Half Uncial Bold at 10 point design size. +%%%% HUNCLB17.MF Half Uncial 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 + +%font_identifier:="HUNCL"; font_size 7pt#; +%font_identifier:="HUNCL"; font_size 10pt#; +%font_identifier:="HUNCL"; font_size 17.28pt#; +%font_identifier:="HUNCLB"; font_size 7pt#; +%font_identifier:="HUNCLB"; font_size 10pt#; +%font_identifier:="HUNCLB"; font_size 17.28pt#; + +% \end{macrocode} +% +% \DescribeVariable{jutstretch} +% The CMR scaling for lowercase serifs wrt 17pt size. +% \begin{macrocode} +% jutstretch:=1.19; +% jutstretch:=1.152; +% jutstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{stemstretch} +% The CMR scaling for lowercase stem widths wrt 17pt size. +% \begin{macrocode} +% stemstretch:=1.50; +% stemstretch:=1.31; +% stemstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{caprat} +% The scaling for `capitals' wrt `lowercase'. This is pretty much a guess. +% \begin{macrocode} + caprat:=1.25; % ratio of capital height to minuscule height +% \end{macrocode} +% +% \DescribeVariable{cap_jutstretch} +% The CMR scaling for uppercase serifs wrt 17pt size. +% \begin{macrocode} +% cap_jutstretch:=1.3; +% cap_jutstretch:=1.2; +% cap_jutstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{cap_stemstretch} +% The CMR scaling for uppercase stem width wrt 17pt size. +% \begin{macrocode} +% cap_stemstretch:=1.45; +% cap_stemstretch:=1.31; +% cap_stemstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{bfudge} +% Letter width scaling for bold font wrt normal font. +% \begin{macrocode} +% bfudge:=1.0; +% bfudge:=1.2; +% \end{macrocode} +% +% \DescribeVariable{szfudge} +% Width scaling wrt 17pt letter width. +% \begin{macrocode} +% szfudge:=1.18; +% szfudge:=1.0; +% 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} +% carol_height#:=108.5/36pt#; +% carol_height#:=155/36pt#; +% carol_height#:=268/36pt#; +% \end{macrocode} +% +% \DescribeVariable{vstretch} +% The height of this font wrt the Carolingian font. +% \begin{macrocode} + vstretch:=1.07; + +% \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} +% u#:=15.5/36pt#; +% u#:=20/36pt#; +% u#:=32.5/36pt#; +% u#:=17.9/36pt#; +% u#:=23/36pt#; +% 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 +% cap_serif_fit#:=3.5/36pt#; % extra sidebar near uppercase serifs +% cap_serif_fit#:=5/36pt#; % extra sidebar near uppercase serifs +% cap_serif_fit#:=8/36pt#; % extra sidebar near uppercase serifs +% letter_fit#:=0pt#; % extra space added to all sidebars +% letter_fit#:=0pt#; % extra space added to all sidebars +% letter_fit#:=-0.1pt#; % extra space added to all sidebars + +% \end{macrocode} +% +% \DescribeVariable{cap_height} +% The height of capital letters. +% \begin{macrocode} +% cap_height#:=172.2/36pt#; % height of caps +% cap_height#:=246/36pt#; % height of caps +% 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 3.5 nib widths. +% \begin{macrocode} +% thickfudge:=1/5; +% thickfudge:=1/3.5; +% \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:=20; % pen angle +% \end{macrocode} +% +% \DescribeVariable{ascratio} +% The height of lower case ascenders wrt |x_height|. +% \begin{macrocode} + ascratio:=5/3; +% \end{macrocode} +% +% \DescribeVariable{asc_height} +% The height of lower case ascenders. +% \begin{macrocode} + asc_height#:=ascratio*x_height#; +% \end{macrocode} +% +% \DescribeVariable{descratio} +% The depth of lower case descenders wrt |x_height|. +% \begin{macrocode} + descratio:=2/3; +% \end{macrocode} +% +% \DescribeVariable{desc_depth} +% The depth of lower case descenders. +% \begin{macrocode} + desc_depth#:=descratio*x_height#; +% \end{macrocode} +% +% \DescribeVariable{fig_height} +% The height of numerals. Make these midway between normal and capital +% letters. +% \begin{macrocode} + fig_height#:=(0.5[1,caprat])*x_height#; +% \end{macrocode} +% +% \DescribeVariable{fig_width} +% The width of numerals. All numerals are the same width (roughly, an `o'). +% \begin{macrocode} + fig_width#:=hstretch*(x_height#); +% \end{macrocode} +% +% \DescribeVariable{body_height} +% The height of the tallest character. +% \begin{macrocode} + body_height#:=caprat*asc_height#; +% \end{macrocode} +% +% \DescribeVariable{body_depth} +% The depth of the lowest character. +% \begin{macrocode} + body_depth#:=caprat*desc_depth#; +% \end{macrocode} +% +% \DescribeVariable{half_height} +% Half the normal letter height. +% \begin{macrocode} + half_height#:=1/2x_height#; % half the height of x height letters + +% \end{macrocode} +% +% \DescribeVariable{side} +% We might be using a square for the character design. +% \begin{macrocode} +side#:=x_height#; +% \end{macrocode} +% +% \DescribeVariable{rule_thickness} +% Thickness of rules (in math symbols). The CMR values are used. +% \begin{macrocode} +% rule_thickness#:=.34pt#; +% rule_thickness#:=.4pt#; +% rule_thickness#:=.6pt#; + +% \end{macrocode} +% +% \DescribeVariable{jutfudge} +% Controls the protrusion of serifs. +% \begin{macrocode} +%%%%jutfudge:= 3/4; +jutfudge:= 1/2; +% \end{macrocode} +% +% \DescribeVariable{jut} +% The lowercase serif protrusion. +% \begin{macrocode} +jut#:=jutstretch*jutfudge*thick#; +% \end{macrocode} +% +% \DescribeVariable{srad} +% |srad| with |0 < srad < 1| controls the serif radius. +% \begin{macrocode} +srad:=0.5; +% \end{macrocode} +% +% \DescribeVariable{trijut} +% The lowercase triangular serif protrusion. +% \begin{macrocode} +trijut#:=0.75jutstretch*thick#; +% \end{macrocode} +% +% \DescribeVariable{o} +% Amount of overshoot for curves (as in an `o'). Use CMR values. +% \begin{macrocode} +% o#:=5/36pt#; +% o#:=8/36pt#; +% o#:=10/36pt#; + +% \end{macrocode} +% +% \DescribeVariable{slant} +% |slant| is the amount the font slopes to the right. +% \begin{macrocode} +slant:=0; % tilt ratio $(\Delta x/\Delta y)$ + +% \end{macrocode} +% +% \DescribeVariable{monospace} +% We are generating a variable-width font. +% \begin{macrocode} +monospace:=false; % should all characters have the same width? + +% \end{macrocode} +% +% \DescribeVariable{dot_size} +% The size of (punctuation) dots. +% \begin{macrocode} +dot_size#:=5thin#; % size of dots +% \end{macrocode} +% +% \DescribeVariable{comma_width} +% The horizontal width of a comma. +% \begin{macrocode} +comma_width#:=2.5dot_size#; + +% \end{macrocode} +% +% Finally, call the driver file for the font. +% \begin{macrocode} +generate huncltitle %% switch to the driver file + +% \end{macrocode} +% +% The end of this code section. +% \begin{macrocode} +% +% \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 UNCLTITLE.MF for the Half Uncial 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}{huncial_font_setup} +% This macro contains the set up for the \thisfont{} fonts. +% \begin{macrocode} + +def huncial_font_setup= % contains special stuff for huncial fonts + define_pixels(side,half_height,carol_height,comma_width); + define_pixels(u,dot_size,letter_size,cap_height,width_adj,serif_fit, + cap_serif_fit,jut,cap_jut,trijut); + define_pixels(fig_width); + define_whole_pixels(letter_fit); + define_whole_vertical_pixels(body_height,asc_height,cap_height,x_height, + desc_depth,body_depth,fig_height); + define_corrected_pixels(o); + define_blacker_pixels(thick,thin); + let adjust_fit = normal_adjust_fit; +% \end{macrocode} +% \DescribeVariable{stylus} +% The pen for drawing the thinnest lines is |stylus|. +% \begin{macrocode} + pickup pencircle scaled thin; + stylus:=savepen; +% \end{macrocode} +% \DescribeVariable{thickstylus} +% The pen for drawing lines a bit thicker than the thinnest is |thickstylus|. +% \begin{macrocode} + pickup pencircle scaled (1.5thin); + thickstylus:=savepen; +% \end{macrocode} +% \DescribeVariable{quill} +% The normal calligraphic pen is |quill|. +% \begin{macrocode} + pickup pencircle xscaled thick yscaled thin rotated pangle; + quill:=savepen; + numeric pcshiftx#; % x value of LHS of box wrt origin of char box + define_pixels(pcshiftx); + numeric sqxside#; % x size of the square + numeric sqyside#; % y size of the square + define_pixels(sqxside,sqyside); + +enddef; % end of huncial_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 $0y$$: + top_serif := true; + z$c=z$b shifted (-bjut*pdir); + else: + top_serif:=false; + z$c=z$b shifted (bjut*pdir); + fi +% \end{macrocode} +% Draw the parts, and finish off. +% \begin{macrocode} + if top_serif: + draw z$c--z$b{pdir}..{z$$-z$}z$a; % the serif + else: + draw z$c--z$b{-pdir}..{z$$-z$}z$a; + fi + labels($a,$b,$c); +enddef; % end of draw_serif + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{draw_triserif} +% A macro to draw a triangular top left serif. +% |draw_triserif(1,tj)| draws a serif at |z1| with its leftmost x +% value at |x1-tj|, where it is assumed that the +% top point on the stem is at |z1| and the stem was drawn with |quill|. +% \begin{macrocode} + +def draw_triserif(suffix $)(expr tj)= + pen oldpen; oldpen:=currentpen; + pickup quill; + x$ts1'=lft x$; y$ts1'=bot y$; + pickup stylus; + lft x$ts1=x$ts1'; bot y$ts1=y$ts1'; + x$ts2=x$ts1-tj; z$ts2=whatever[z$,z$ts1]; + x$ts3=x$ts1; y$ts3=y$ts2-tj; + pickup stylus; +%% filldraw z$ts1--z$ts2--z$ts3--cycle; + filldraw z$--z$ts2--z$ts3--cycle; + pickup oldpen; + labels($ts1,$ts2,$ts3); +enddef; % end of draw_triserif + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{draw_istem} +% A macro to draw the shape of an i. |draw_istem(1,2,f)| draws a stem whose +% top is at |z1| and bottom at |z2|. It draws with the current pen and the serifs +% are of extent |jut|. There is a top left and bottom right serif. +% The serif radius is controlled by |f|, with $0 +% \end{macrocode} +% +% \subsection{The code for normal letters} +% +% The following code is for the minuscule characters. +% +% \begin{macrocode} +%<*min> +% HUNCLL.MF Program file for Half Uncial minuscules +% + + +% \end{macrocode} +% +% +% \begin{routine}{a} +% The letter `a'. +% \begin{macrocode} +cmchar "HUncial letter a"; +beginchar("a", 2u#+hstretch*(x_height#+jut#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% stem +rt x1=w-pcshiftx; top y1=h; +x2=x1; bot y2=0; +x5=x1-jut; y5=0.5[y1,y2]; +path p[]; +p1=z1{-pdir}..z5{down}..{right}z2; +% bowl +lft x3=pcshiftx; y3=y5; +x4=x6=0.5[x3,x5]; top y4=h; bot y6=0; +x2'=0.5[x2,x5]; +bowl_stem(6,2'); +rt x7=x6i; top y7=y6i; +rt x8=x1; y4-y8=y7-y6; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw p1; % the stem +draw z8..z4{left}..z3{down}..z6{right}..{pdir}z7; % the bowl +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,100); +endchar; % end "a" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{b} +% The letter `b'. +% \begin{macrocode} +cmchar "HUncial letter b"; +beginchar("b", 2u#+hstretch*(x_height#+trijut#), asc_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +lft x1=lft x2=pcshiftx+trijut; +top y1=h; +% lower bowl +rt x4=w-pcshiftx; +x3=x5=0.5[x2,x4]; bot y3=0; top y5=h/ascratio; +y2=y4=0.5[y3,y5]; +x11=rt x1; bowl_stem(5,11); +lft x7=x5i; bot y7=y5i; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2{down}..z3{right}..z4{up}..z5{left}..{-pdir}z7; +draw_triserif(1,trijut); +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,100); +endchar; % end "b" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{c} +% The letter `c'. +% \begin{macrocode} +cmchar "HUncial letter c"; +beginchar("c", 2u#+hstretch*(x_height#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +lft x1=pcshiftx; rt x3=w-pcshiftx; y1=y3=h/2; +x2=x4=w/2; top y2=h; bot y4=0; +x3'=w-pcshiftx; +bowl_stem(4,3'); +rt x5=x4i; top y5=y4i; +x6=x5; y2-y6=y5-y4; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z5{-pdir}..{left}z4..z1..z2..z6; +ductus:=false; +penlabels(1,2,3,4,5,6,16,17,18,100); +endchar; % end "c" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{d} +% The letter `d'. +% \begin{macrocode} +cmchar "HUncial letter d"; +beginchar("d", 2u#+hstretch*(x_height#+thick#+jut#), asc_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +rt x1=w-pcshiftx-jut; top y1=h; +x2=x1; bot y2=0; +x1'=lft x1; y1'=h; +lft x5=pcshiftx; +top y4=h/ascratio; bot y6=0; +x4=x6=0.5[x5,x1']; y5=0.5[y6,y4]; +bowl_stem(6,1'); +rt x7=x6i; top y7=y6i; +x8=x7; y4-y8=y7-y6; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_triserif(1,trijut); +draw z8..z4{left}..z5{down}..z6{right}..{pdir}z7; % bowl +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 "HUncial letter e"; +beginchar("e", 2u#+hstretch*(x_height#+trijut#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +lft x1=pcshiftx; rt x3=w-pcshiftx-trijut; y1=y3=h/2; +x2=x4=w/2; top y2=h; bot y4=0; +x3'=w-pcshiftx-trijut; +bowl_stem(4,3'); +rt x5=x4i; top y5=y4i; +% the bar +x7=x1; y7=y1; +rt x8=w-pcshiftx; top y8=2/3h; +path p[]; +p1=z7{right}..{pdir}z8; +p2=z2{right}..z3{down}..{left}z4; +z6 = p1 intersectionpoint p2; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z5{-pdir}..{left}z4..z1..z2{right}..z6; % the bowl +draw p1; % the bar +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,100); +endchar; % end "e" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{f} +% The letter `f'. +% \begin{macrocode} +cmchar "HUncial letter f"; +beginchar("f", 2u#+hstretch*(7/6x_height#+trijut#), (3/2x_height#), desc_depth#); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% stem +lft x1=lft x2=pcshiftx+trijut; +top y1=2/3h; bot y2=-d; +% bars +z3=z4=z1; +rt x5= rt x6=w-pcshiftx; top y5=h; y6=y4; +x7=0.5[x4,x6]; y7=y6-2thin; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_triserif(1,trijut); +draw_urswish(3,5); % top bar +draw z4..z7{right}..{pdir}z6; % bottom bar +ductus:=false; +penlabels(1,2,3,4,5,6,7,100); +endchar; % end "f" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{g} +% The letter `g'. This came in three forms; like the `g' in the Artificial +% Uncial script, like an `S' with a bar at the top, or the form I have +% done here. +% \begin{macrocode} +cmchar "HUncial letter g"; +beginchar("g", 2u#+hstretch*(4/3x_height#), x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := u; +numeric alpha; alpha:=thin; +pickup quill; +% top bar +lft x1=pcshiftx; top y1=h+alpha; +rt x3=w-pcshiftx; top y3=h-alpha; +% diagonal +rt x2=3/4w; top y2=h-alpha; +x4=1/4w; y4=0; +% the bowl +rt x6=w-pcshiftx; y6=-1/2d; +x7=1/2w; bot y7=-d; +lft x8=pcshiftx; top y8=-1/2d; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_wave(1,3,alpha); % top bar +draw z2--z4; % diagonal +draw z4{pdir}..z6{down}..z7{left}..z8; % the bowl +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,100); +endchar; % end "g" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{h} +% The letter `h'. +% \begin{macrocode} +cmchar "HUncial letter h"; +beginchar("h", 2u#+hstretch*(x_height#+trijut#), asc_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +lft x1=lft x2=pcshiftx+trijut; +top y1=h; bot y2=0; +% bowl +rt x5=w-pcshiftx; y5=h/(2ascratio); +lft x6=2/3w; bot y6=0; +x4=0.5[x1,x5]; top y4=h/ascratio; +x1'=rt x1; +bowl_stem(4,1'); +lft x3=x4i; bot y3=y4i; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_triserif(1,trijut); +draw z3{pdir}..z4{right}..z5{down}..z6; % bowl +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 "HUncial letter i"; +beginchar("i", 2u#+hstretch*(thick#+trijut#+jut#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +lft x1=lft x2=pcshiftx+trijut; +top y1=h; bot y2=0; +%%ductus:=true; +draw_tstem(1,2,srad); +draw_triserif(1,trijut); +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 "HUncial letter j"; +beginchar("j", 2u#+hstretch*(thick#+trijut#), x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +lft x1=lft x2=pcshiftx+trijut; +top y1=h; bot y2=-1/2d; +lft x3=pcshiftx; bot y3=-d; +%%ductus:=true; +draw z1--z2{down}..{-pdir}z3; +draw_triserif(1,trijut); +ductus:=false; +penlabels(1,2,3,100); +endchar; % end "j" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{k} +% The letter `k'. +% \begin{macrocode} +cmchar "HUncial letter k"; +beginchar("k", 2u#+hstretch*(x_height#+trijut#+jut#), asc_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +lft x1=lft x2=pcshiftx+trijut; +top y1=h; bot y2=0; +% for the flick +numeric rise,fall,fjut; +x3=rt x1; y3=(3/4)*(h/ascratio); +rise:=1/6h; fall:=-rise/2; fjut:=1/2w; +% for the leg +z4=z3; +x5=w-pcshiftx-jut; y5=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_triserif(1,trijut); +draw_flick(3,rise,fall,fjut); % upper diag +draw_tstem(4,5,srad); % lower diag +ductus:=false; +penlabels(1,2,3,4,5,100); +endchar; % end "k" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{l} +% The letter `l'. +% \begin{macrocode} +cmchar "HUncial letter l"; +beginchar("l", 2u#+hstretch*(7/6x_height#+trijut#), asc_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +lft x1=lft x2=pcshiftx+trijut; +top y1=h; bot y2=0; +z3=z2; +rt x4=w-pcshiftx; bot y4=1/10h; +%%ductus:=true; +draw z1--z2; +draw_triserif(1,trijut); % the stem +draw z3{right}..{pdir}z4; % the foot +ductus:=false; +penlabels(1,2,3,4,100); +endchar; % end "l" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{m} +% The letter `m'. +% \begin{macrocode} +cmchar "HUncial letter m"; +beginchar("m", 2u#+hstretch*(5/3x_height#+trijut#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +lft x1=pcshiftx+trijut; top y1=h; +x2=x1; bot y2=0; +x4=w/2; y4=2/3h; +x3=0.5[x2,x4]; top y3=h; +x5=x4; y5=y2; +z6=z4; +x7=3/4w; top y7=h; +rt x8=w-pcshiftx; y8=h/2; +lft x9=3/4w; y9=y2; +x14=x1; y14=y4; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % left half +draw_triserif(1,trijut); +draw z14..z3{right}..{down}z4; +draw_tstem(4,5,srad); % middle stem +draw z6..z7{right}..z8{down}..{-pdir}z9; % right half +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,14,100); +endchar; % end "m" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{n} +% The letter `n'. This could be like a capital `N' or a lower-case `n'. +% I have chosen to do the latter form. +% \begin{macrocode} +cmchar "HUncial letter n"; +beginchar("n", 2u#+hstretch*(x_height#+trijut#+jut#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% left stem +lft x1=pcshiftx+trijut; top y1=h; +x2=x1; bot y2=0; +x1'=rt x1; +% right stem +rt x5=w-pcshiftx-jut; y5=h/2; +x6=x5; bot y6=0; +x4=0.5[x1,x5]; top y4=h; +bowl_stem(4,1'); +lft x3=x4i; bot y3=y4i; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % left stem +draw_triserif(1,trijut); +draw_tstem(5,6,srad); % right stem +draw z3{pdir}..z4{right}..{down}z5; % the bowl top +ductus:=false; +penlabels(1,2,3,4,5,6,100); +endchar; % end "n" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{o} +% The letter `o'. +% \begin{macrocode} +cmchar "HUncial letter o"; +beginchar("o", 2u#+hstretch*(7/6x_height#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +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 "o" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{p} +% The letter `p'. +% \begin{macrocode} +cmchar "HUncial letter p"; +beginchar("p", 2u#+hstretch*(7/6x_height#+trijut#), x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% stem +lft x1=lft x2=pcshiftx+trijut; +top y1=h; bot y2=-d; +% bowl +rt x4=w-pcshiftx; +x3=x5=0.5[x2,x4]; bot y3=0; top y5=h; +y4=0.5[y3,y5]; +x1'=rt x1; +bowl_stem(5,1'); +lft x7=x5i; bot y7=y5i; +lft x8=rt x1; bot y8=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_triserif(1,trijut); +draw z8{right}..z4{up}..z5{left}..{-pdir}z7; % bowl +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 "HUncial letter q"; +beginchar("q", 2u#+hstretch*(7/6x_height#+jut#), x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% right stem +rt x1=w-pcshiftx-jut; top y1=h; +x2=x1; bot y2=-d; +lft x5=pcshiftx; +top y4=h; bot y6=0; +x4=x6=0.5[x5,x1']; y5=0.5[y6,y4]; +x1'=lft x1; +bowl_stem(6,1'); +rt x7=x6i; top y7=y6i; +z8=z1; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw z8{left}..z5{down}..z6{right}..{pdir}z7; % bowl +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 "HUncial letter r"; +beginchar("r", 2u#+hstretch*(x_height#+trijut#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% stem +lft x1=lft x2=pcshiftx+trijut; top y1=h; bot y2=0; +% bowl +lft x3=rt x1; bot y3=7/8h; +rt x5=w-pcshiftx; top y5=1/2h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_triserif(1,trijut); +draw z3{pdir}..{pdir}z5; % bowl +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,100); +endchar; % end "r" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{s} +% The letter `s'. This is a `long' S. +% \begin{macrocode} +cmchar "HUncial letter s"; +beginchar("s", 2u#+hstretch*(x_height#+trijut#), 3/2x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% stem +lft x1=lft x2=pcshiftx+trijut; top y1=2/3h; bot y2=0; +% arm +x5=w-pcshiftx; y5=h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_triserif(1,trijut); +%%draw z1{pdir}..{right}z5; % arm +draw_urswish(1,5); +ductus:=false; +penlabels(1,2,3,4,5,6,7,11,17,26,27,28,100); +endchar; % end "s" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{t} +% The letter `t'. +% \begin{macrocode} +cmchar "HUncial letter t"; +beginchar("t", 2u#+hstretch*(4/3x_height#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% bowl +lft x1=pcshiftx+1/4w; rt x3=w-pcshiftx; y1=h/3; y3=h/2; +x2=x4=0.5[x1,x3]; top y2=h; bot y4=0; +x6=x3; +x6'=w-pcshiftx; +bowl_stem(4,6'); +rt x5=x4i; top y5=y4i; +top y6=h; +% arm +lft x12=pcshiftx; top y12=h; +x11=0.5[x6,x12]; y11=y12-thin; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z5{-pdir}..{left}z4..z1{up}..{pdir}z6; % bowl +draw z6..z11..z12; % top bar +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 "HUncial letter u"; +beginchar("u", 2u#+hstretch*(x_height#+trijut#+jut#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% left half first +lft x6=pcshiftx+trijut; +top y6=h; +x7=x6; y7=h/2; +x8=0.5[x6,x1]; bot y8=0; +% the stem +rt x1=w-pcshiftx-jut; top y1=h; +x2=x1; bot y2=0; +% construction points for the curved part +x1'=lft x1; +bowl_stem(8,1'); +rt x9=x8i; top y9=y8i; +%%ductus:=true; +if ductus: + pickup stylus; +fi +% draw the serifs, then the bowls +draw_triserif(6,trijut); % left half +draw z6--z7{down}..z8{right}..{pdir}z9; +draw_tstem(1,2,srad); % right stem +draw_triserif(1,trijut); +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,11,16,100); +endchar; % end "u" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{v} +% The letter `v'. The right half of the `w' is used for the `v' (or vice-versa +% if you prefer). +% \begin{macrocode} +cmchar "HUncial letter v"; +beginchar("v", 2u#+hstretch*(x_height#+trijut#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% right side of W +numeric midx; midx:= pcshiftx; +lft x1=midx+trijut; top y1=h; +x2=x1; y2=h/2; +rt x4=w-pcshiftx; y4=y2; +x3=0.5[x2,x4]; bot y3=0; +x5=x4-trijut; y5=y1; +%%ductus:=true; +if ductus: + pickup stylus; +fi +% draw the serifs, then the bowls +draw_triserif(1,trijut); +%%draw_triserif(5,trijut); +draw z1--z2{down}..z3{right}..z4{up}..z5; +ductus:=false; +penlabels(1,2,3,4,5,11,100); +endchar; % end "v" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{w} +% The letter `w'. This is a modern version as the font did not have a W. +% \begin{macrocode} +cmchar "HUncial letter w"; +beginchar("w", 2u#+hstretch*(5/3x_height#+trijut#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% right side first +numeric midx; midx:= w/2-trijut; +lft x1=midx+trijut; top y1=h; +x2=x1; y2=h/2; +rt x4=w-pcshiftx; y4=y2; +x3=0.5[x2,x4]; bot y3=0; +x5=x4-trijut; y5=y1; +% left side +lft x6=pcshiftx+trijut; +top y6=h; +%%lft x7=pcshiftx; y7=y2; +x7=x6; y7=y2; +x8=0.5[x7,x1]; y8=y3; +% construction points +x15=0.5[x8,x1]; y15=y8; +z15'=z15 shifted (w*pdir); +x2'=x2; y2'=y15; +path p[]; +p1=z1--z2'; +p2=z15--z15'; +z9= p2 intersectionpoint p1; +pair vec[]; +p3=z6..z7{down}..{right}z8; +vec3 = direction 0 of p3; +z16=z6 shifted vec3; +%%ductus:=true; +if ductus: + pickup stylus; +fi +% draw the serifs, then the bowls +draw_triserif(1,trijut); % right half +draw z1--z2{down}..z3{right}..z4{up}..z5; +draw_triserif(6,trijut); % left half +draw z6--z7{down}..z8{right}..z9; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,11,16,100); +endchar; % end "w" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{x} +% The letter `x'. +% \begin{macrocode} +cmchar "HUncial letter x"; +beginchar("x", 2u#+hstretch*(4/3x_height#+jut#), x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% thick diagonal +lft x1=1/4w; rt x2=w-pcshiftx-jut; +y1=h; y2=0; +% top half of thin diagonal +rt x4=w-pcshiftx; top y4=h; +z3=2/3[z2,z1]; +% bottom half +lft x6=pcshiftx; bot y6=-d; +path p[]; +pair vec; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_istem(1,2,srad); % thick diagonal +draw_urswish(3,4); % top thin diagonal +p1=z3..z4s1{pdir}..z4s2{down}; % bottom thin diagonal +vec= direction 0 of p1; +draw z3{-vec}..{down}z6; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,100); +endchar; % end "x" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{y} +% The letter `y'. This has a dot on top! +% \begin{macrocode} +cmchar "HUncial letter y"; +beginchar("y", 2u#+hstretch*(4/3x_height#), x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% left stroke +lft x1=pcshiftx; top y1=h; +lft x3=w/2; bot y3=-d; +x2=lft x5; y2=bot y5; +% right stroke +x5=w/2; y5=1/3h; +x4=w-pcshiftx; top y4=h; +% the dot +x8=w/2; y8=h+jut; +if ductus: + pickup stylus; +fi +draw z1..z2..z3; % left stroke +draw_urswish(2,4); % right stroke +draw_pdot(8,dot_size); % the dot +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 "HUncial letter z"; +beginchar("z", 2u#+hstretch*(5/3x_height#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +numeric alpha, beta; alpha:=thin; beta:=2thin; +pickup quill; +% bottom stroke +lft x4=pcshiftx; bot y4=0; x14=x4; y14=y4+beta; +rt x6=w-pcshiftx; bot y6=-beta; +% top stroke +lft x1=1/5w; top y1=h+alpha; +rt x3=4/5w; top y3=h; x13=x3; y13=y3-alpha; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_wave(1,13,alpha); % top stroke +draw_wave(14,6,beta); % bottom stroke +draw z4--z3; % diagonal +ductus:=false; +penlabels(1,2,3,4,5,6,100); +endchar; % end "z" + +% \end{macrocode} +% \end{routine} +% +% +% The end of this file +% \begin{macrocode} +% +% \end{macrocode} +% +% +% \subsection{The code for capital letters} +% +% \thisfont{} `capitals' were drawn with the same pen as for the minuscules, +% and the letters were merely larger versions of the minuscules. +% +% \begin{macrocode} +%<*maj> +% HUNCLU.MF Program file for Half Uncial `capitals' +% + +% \end{macrocode} +% +% +% \begin{routine}{A} +% The letter `A'. +% \begin{macrocode} +cmchar "HUncial letter A"; +beginchar("A", 2u#+caprat*hstretch*(x_height#+jut#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% stem +rt x1=w-pcshiftx; top y1=h; +x2=x1; bot y2=0; +x5=x1-jut; y5=0.5[y1,y2]; +path p[]; +p1=z1{-pdir}..z5{down}..{right}z2; +% bowl +lft x3=pcshiftx; y3=y5; +x4=x6=0.5[x3,x5]; top y4=h; bot y6=0; +x2'=0.5[x2,x5]; +bowl_stem(6,2'); +rt x7=x6i; top y7=y6i; +rt x8=x1; y4-y8=y7-y6; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw p1; % the stem +draw z8..z4{left}..z3{down}..z6{right}..{pdir}z7; % the bowl +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,100); +endchar; % end "A" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{B} +% The letter `B'. +% \begin{macrocode} +cmchar "HUncial letter B"; +beginchar("B", 2u#+caprat*hstretch*(x_height#+trijut#), caprat*asc_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +lft x1=lft x2=pcshiftx+trijut; +top y1=h; +% lower bowl +rt x4=w-pcshiftx; +x3=x5=0.5[x2,x4]; bot y3=0; top y5=h/ascratio; +y2=y4=0.5[y3,y5]; +x11=rt x1; bowl_stem(5,11); +lft x7=x5i; bot y7=y5i; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2{down}..z3{right}..z4{up}..z5{left}..{-pdir}z7; +draw_triserif(1,trijut); +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,100); +endchar; % end "B" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{C} +% The letter `C'. +% \begin{macrocode} +cmchar "HUncial letter C"; +beginchar("C", 2u#+caprat*hstretch*(x_height#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +lft x1=pcshiftx; rt x3=w-pcshiftx; y1=y3=h/2; +x2=x4=w/2; top y2=h; bot y4=0; +x3'=w-pcshiftx; +bowl_stem(4,3'); +rt x5=x4i; top y5=y4i; +x6=x5; y2-y6=y5-y4; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z5{-pdir}..{left}z4..z1..z2..z6; +ductus:=false; +penlabels(1,2,3,4,5,6,16,17,18,100); +endchar; % end "C" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{D} +% The letter `D'. +% \begin{macrocode} +cmchar "HUncial letter D"; +beginchar("D", 2u#+caprat*hstretch*(x_height#+thick#+jut#), caprat*asc_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +rt x1=w-pcshiftx-jut; top y1=h; +x2=x1; bot y2=0; +x1'=lft x1; y1'=h; +lft x5=pcshiftx; +top y4=h/ascratio; bot y6=0; +x4=x6=0.5[x5,x1']; y5=0.5[y6,y4]; +bowl_stem(6,1'); +rt x7=x6i; top y7=y6i; +x8=x7; y4-y8=y7-y6; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_triserif(1,trijut); +draw z8..z4{left}..z5{down}..z6{right}..{pdir}z7; % bowl +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 "HUncial letter E"; +beginchar("E", 2u#+caprat*hstretch*(x_height#+trijut#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +lft x1=pcshiftx; rt x3=w-pcshiftx-trijut; y1=y3=h/2; +x2=x4=w/2; top y2=h; bot y4=0; +x3'=w-pcshiftx-trijut; +bowl_stem(4,3'); +rt x5=x4i; top y5=y4i; +% the bar +x7=x1; y7=y1; +rt x8=w-pcshiftx; top y8=2/3h; +path p[]; +p1=z7{right}..{pdir}z8; +p2=z2{right}..z3{down}..{left}z4; +z6 = p1 intersectionpoint p2; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z5{-pdir}..{left}z4..z1..z2{right}..z6; % the bowl +draw p1; % the bar +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,100); +endchar; % end "E" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{F} +% The letter `F'. +% \begin{macrocode} +cmchar "HUncial letter F"; +beginchar("F", 2u#+caprat*hstretch*(7/6x_height#+trijut#), caprat*(3/2x_height#), + caprat*desc_depth#); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% stem +lft x1=lft x2=pcshiftx+trijut; +top y1=2/3h; bot y2=-d; +% bars +z3=z4=z1; +rt x5= rt x6=w-pcshiftx; top y5=h; y6=y4; +x7=0.5[x4,x6]; y7=y6-2thin; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_triserif(1,trijut); +draw_urswish(3,5); % top bar +draw z4..z7{right}..{pdir}z6; % bottom bar +ductus:=false; +penlabels(1,2,3,4,5,6,7,100); +endchar; % end "F" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{G} +% The letter `G'. +% \begin{macrocode} +cmchar "HUncial letter G"; +beginchar("G", 2u#+caprat*hstretch*(4/3x_height#), caprat*x_height#, + caprat*desc_depth#); +adjust_fit(0,0); +pcshiftx := u; +numeric alpha; alpha:=thin; +pickup quill; +% top bar +lft x1=pcshiftx; top y1=h+alpha; +rt x3=w-pcshiftx; top y3=h-alpha; +% diagonal +rt x2=3/4w; top y2=h-alpha; +x4=1/4w; y4=0; +% the bowl +rt x6=w-pcshiftx; y6=-1/2d; +x7=1/2w; bot y7=-d; +lft x8=pcshiftx; top y8=-1/2d; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_wave(1,3,alpha); % top bar +draw z2--z4; % diagonal +draw z4{pdir}..z6{down}..z7{left}..z8; % the bowl +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,100); +endchar; % end "G" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{H} +% The letter `H'. +% \begin{macrocode} +cmchar "HUncial letter H"; +beginchar("H", 2u#+caprat*hstretch*(x_height#+trijut#), caprat*asc_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +lft x1=lft x2=pcshiftx+trijut; +top y1=h; bot y2=0; +% bowl +rt x5=w-pcshiftx; y5=h/(2ascratio); +lft x6=2/3w; bot y6=0; +x4=0.5[x1,x5]; top y4=h/ascratio; +x1'=rt x1; +bowl_stem(4,1'); +lft x3=x4i; bot y3=y4i; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_triserif(1,trijut); +draw z3{pdir}..z4{right}..z5{down}..z6; % bowl +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 "HUncial letter I"; +beginchar("I", 2u#+hstretch*(thick#+trijut#+jut#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +lft x1=lft x2=pcshiftx+trijut; +top y1=h; bot y2=0; +%%ductus:=true; +draw_tstem(1,2,srad); +draw_triserif(1,trijut); +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 "HUncial letter J"; +beginchar("J", 2u#+hstretch*(thick#+trijut#), caprat*x_height#, caprat*desc_depth#); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +lft x1=lft x2=pcshiftx+trijut; +top y1=h; bot y2=-1/2d; +lft x3=pcshiftx; bot y3=-d; +%%ductus:=true; +draw z1--z2{down}..{-pdir}z3; +draw_triserif(1,trijut); +ductus:=false; +penlabels(1,2,3,100); +endchar; % end "J" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{K} +% The letter `K'. +% \begin{macrocode} +cmchar "HUncial letter K"; +beginchar("K", 2u#+caprat*hstretch*(x_height#+trijut#+jut#), caprat*asc_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +lft x1=lft x2=pcshiftx+trijut; +top y1=h; bot y2=0; +% for the flick +numeric rise,fall,fjut; +x3=rt x1; y3=(3/4)*(h/ascratio); +rise:=1/6h; fall:=-rise/2; fjut:=1/2w; +% for the leg +z4=z3; +x5=w-pcshiftx-jut; y5=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_triserif(1,trijut); +draw_flick(3,rise,fall,fjut); % upper diag +draw_tstem(4,5,srad); % lower diag +ductus:=false; +penlabels(1,2,3,4,5,100); +endchar; % end "K" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{L} +% The letter `L'. +% \begin{macrocode} +cmchar "HUncial letter L"; +beginchar("L", 2u#+caprat*hstretch*(7/6x_height#+trijut#), caprat*asc_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +lft x1=lft x2=pcshiftx+trijut; +top y1=h; bot y2=0; +z3=z2; +rt x4=w-pcshiftx; bot y4=1/10h; +%%ductus:=true; +draw z1--z2; +draw_triserif(1,trijut); % the stem +draw z3{right}..{pdir}z4; % the foot +ductus:=false; +penlabels(1,2,3,4,100); +endchar; % end "L" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{M} +% The letter `M'. +% \begin{macrocode} +cmchar "HUncial letter M"; +beginchar("M", 2u#+caprat*hstretch*(5/3x_height#+trijut#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +lft x1=pcshiftx+trijut; top y1=h; +x2=x1; bot y2=0; +x4=w/2; y4=2/3h; +x3=0.5[x2,x4]; top y3=h; +x5=x4; y5=y2; +z6=z4; +x7=3/4w; top y7=h; +rt x8=w-pcshiftx; y8=h/2; +lft x9=3/4w; y9=y2; +x14=x1; y14=y4; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % left half +draw_triserif(1,trijut); +draw z14..z3{right}..{down}z4; +draw_tstem(4,5,srad); % middle stem +draw z6..z7{right}..z8{down}..{-pdir}z9; % right half +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,14,100); +endchar; % end "M" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{N} +% The letter `N'. +% \begin{macrocode} +cmchar "HUncial letter N"; +beginchar("N", 2u#+caprat*hstretch*(x_height#+trijut#+jut#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% left stem +lft x1=pcshiftx+trijut; top y1=h; +x2=x1; bot y2=0; +x1'=rt x1; +% right stem +rt x5=w-pcshiftx-jut; y5=h/2; +x6=x5; bot y6=0; +x4=0.5[x1,x5]; top y4=h; +bowl_stem(4,1'); +lft x3=x4i; bot y3=y4i; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % left stem +draw_triserif(1,trijut); +draw_tstem(5,6,srad); % right stem +draw z3{pdir}..z4{right}..{down}z5; % the bowl top +ductus:=false; +penlabels(1,2,3,4,5,6,100); +endchar; % end "N" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{O} +% The letter `O'. +% \begin{macrocode} +cmchar "HUncial letter O"; +beginchar("O", 2u#+caprat*hstretch*(7/6x_height#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +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 "O" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{P} +% The letter `P'. +% \begin{macrocode} +cmchar "HUncial letter P"; +beginchar("P", 2u#+caprat*hstretch*(7/6x_height#+trijut#), caprat*x_height#, + caprat*desc_depth#); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% stem +lft x1=lft x2=pcshiftx+trijut; +top y1=h; bot y2=-d; +% bowl +rt x4=w-pcshiftx; +x3=x5=0.5[x2,x4]; bot y3=0; top y5=h; +y4=0.5[y3,y5]; +x1'=rt x1; +bowl_stem(5,1'); +lft x7=x5i; bot y7=y5i; +lft x8=rt x1; bot y8=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_triserif(1,trijut); +draw z8{right}..z4{up}..z5{left}..{-pdir}z7; % bowl +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 "HUncial letter Q"; +beginchar("Q", 2u#+caprat*hstretch*(7/6x_height#+jut#), caprat*x_height#, + caprat*desc_depth#); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% right stem +rt x1=w-pcshiftx-jut; top y1=h; +x2=x1; bot y2=-d; +lft x5=pcshiftx; +top y4=h; bot y6=0; +x4=x6=0.5[x5,x1']; y5=0.5[y6,y4]; +x1'=lft x1; +bowl_stem(6,1'); +rt x7=x6i; top y7=y6i; +z8=z1; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw z8{left}..z5{down}..z6{right}..{pdir}z7; % bowl +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 "HUncial letter R"; +beginchar("R", 2u#+caprat*hstretch*(x_height#+trijut#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% stem +lft x1=lft x2=pcshiftx+trijut; top y1=h; bot y2=0; +% bowl +lft x3=rt x1; bot y3=7/8h; +rt x5=w-pcshiftx; top y5=1/2h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_triserif(1,trijut); +draw z3{pdir}..{pdir}z5; % bowl +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,100); +endchar; % end "R" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{S} +% The letter `S'. This is a `long' S. +% \begin{macrocode} +cmchar "HUncial letter S"; +beginchar("S", 2u#+caprat*hstretch*(x_height#+trijut#), caprat*(3/2x_height#), 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% stem +lft x1=lft x2=pcshiftx+trijut; top y1=2/3h; bot y2=0; +% arm +x5=w-pcshiftx; y5=h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_triserif(1,trijut); +%%draw z1{pdir}..{right}z5; % arm +draw_urswish(1,5); +ductus:=false; +penlabels(1,2,3,4,5,6,7,11,17,26,27,28,100); +endchar; % end "S" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{T} +% The letter `T'. +% \begin{macrocode} +cmchar "HUncial letter T"; +beginchar("T", 2u#+caprat*hstretch*(4/3x_height#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% bowl +lft x1=pcshiftx+1/4w; rt x3=w-pcshiftx; y1=h/3; y3=h/2; +x2=x4=0.5[x1,x3]; top y2=h; bot y4=0; +x6=x3; +x6'=w-pcshiftx; +bowl_stem(4,6'); +rt x5=x4i; top y5=y4i; +top y6=h; +% arm +lft x12=pcshiftx; top y12=h; +x11=0.5[x6,x12]; y11=y12-thin; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z5{-pdir}..{left}z4..z1{up}..{pdir}z6; % bowl +draw z6..z11..z12; % top bar +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 "HUncial letter U"; +beginchar("U", 2u#+caprat*hstretch*(x_height#+trijut#+jut#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% left half first +lft x6=pcshiftx+trijut; +top y6=h; +x7=x6; y7=h/2; +x8=0.5[x6,x1]; bot y8=0; +% the stem +rt x1=w-pcshiftx-jut; top y1=h; +x2=x1; bot y2=0; +% construction points for the curved part +x1'=lft x1; +bowl_stem(8,1'); +rt x9=x8i; top y9=y8i; +%%ductus:=true; +if ductus: + pickup stylus; +fi +% draw the serifs, then the bowls +draw_triserif(6,trijut); % left half +draw z6--z7{down}..z8{right}..{pdir}z9; +draw_tstem(1,2,srad); % right stem +draw_triserif(1,trijut); +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,11,16,100); +endchar; % end "U" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{V} +% The letter `V'. The right half of the `w' is used for the `v' (or vice-versa +% if you prefer). +% \begin{macrocode} +cmchar "HUncial letter V"; +beginchar("V", 2u#+caprat*hstretch*(x_height#+trijut#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% right side of W +numeric midx; midx:= pcshiftx; +lft x1=midx+trijut; top y1=h; +x2=x1; y2=h/2; +rt x4=w-pcshiftx; y4=y2; +x3=0.5[x2,x4]; bot y3=0; +x5=x4-trijut; y5=y1; +%%ductus:=true; +if ductus: + pickup stylus; +fi +% draw the serifs, then the bowls +draw_triserif(1,trijut); +%%draw_triserif(5,trijut); +draw z1--z2{down}..z3{right}..z4{up}..z5; +ductus:=false; +penlabels(1,2,3,4,5,11,100); +endchar; % end "V" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{W} +% The letter `W'. This is a modern version as the font did not have a W. +% \begin{macrocode} +cmchar "HUncial letter W"; +beginchar("W", 2u#+caprat*hstretch*(5/3x_height#+trijut#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% right side first +numeric midx; midx:= w/2-trijut; +lft x1=midx+trijut; top y1=h; +x2=x1; y2=h/2; +rt x4=w-pcshiftx; y4=y2; +x3=0.5[x2,x4]; bot y3=0; +x5=x4-trijut; y5=y1; +% left side +lft x6=pcshiftx+trijut; +top y6=h; +%%lft x7=pcshiftx; y7=y2; +x7=x6; y7=y2; +x8=0.5[x7,x1]; y8=y3; +% construction points +x15=0.5[x8,x1]; y15=y8; +z15'=z15 shifted (w*pdir); +x2'=x2; y2'=y15; +path p[]; +p1=z1--z2'; +p2=z15--z15'; +z9= p2 intersectionpoint p1; +pair vec[]; +p3=z6..z7{down}..{right}z8; +vec3 = direction 0 of p3; +z16=z6 shifted vec3; +%%ductus:=true; +if ductus: + pickup stylus; +fi +% draw the serifs, then the bowls +draw_triserif(1,trijut); % right half +draw z1--z2{down}..z3{right}..z4{up}..z5; +draw_triserif(6,trijut); % left half +draw z6--z7{down}..z8{right}..z9; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,11,16,100); +endchar; % end "W" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{X} +% The letter `X'. +% \begin{macrocode} +cmchar "HUncial letter X"; +beginchar("X", 2u#+caprat*hstretch*(4/3x_height#+jut#), caprat*x_height#, + caprat*desc_depth#); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% thick diagonal +lft x1=1/4w; rt x2=w-pcshiftx-jut; +y1=h; y2=0; +% top half of thin diagonal +rt x4=w-pcshiftx; top y4=h; +z3=2/3[z2,z1]; +% bottom half +lft x6=pcshiftx; bot y6=-d; +path p[]; +pair vec; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_istem(1,2,srad); % thick diagonal +draw_urswish(3,4); % top thin diagonal +p1=z3..z4s1{pdir}..z4s2{down}; % bottom thin diagonal +vec= direction 0 of p1; +draw z3{-vec}..{down}z6; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,100); +endchar; % end "X" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{Y} +% The letter `Y'. This has a dot on top! +% \begin{macrocode} +cmchar "HUncial letter Y"; +beginchar("Y", 2u#+caprat*hstretch*(4/3x_height#), caprat*x_height#, + caprat*desc_depth#); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% left stroke +lft x1=pcshiftx; top y1=h; +lft x3=w/2; bot y3=-d; +x2=lft x5; y2=bot y5; +% right stroke +x5=w/2; y5=1/3h; +x4=w-pcshiftx; top y4=h; +% the dot +x8=w/2; y8=h+jut; +if ductus: + pickup stylus; +fi +draw z1..z2..z3; % left stroke +draw_urswish(2,4); % right stroke +draw_pdot(8,dot_size); % the dot +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 "HUncial letter Z"; +beginchar("Z", 2u#+caprat*hstretch*(5/3x_height#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +numeric alpha, beta; alpha:=thin; beta:=2thin; +pickup quill; +% bottom stroke +lft x4=pcshiftx; bot y4=0; x14=x4; y14=y4+beta; +rt x6=w-pcshiftx; bot y6=-beta; +% top stroke +lft x1=1/5w; top y1=h+alpha; +rt x3=4/5w; top y3=h; x13=x3; y13=y3-alpha; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_wave(1,13,alpha); % top stroke +draw_wave(14,6,beta); % bottom stroke +draw z4--z3; % diagonal +ductus:=false; +penlabels(1,2,3,4,5,6,100); +endchar; % end "Z" + +% \end{macrocode} +% \end{routine} +% +% +% The end of this file +% \begin{macrocode} +% +% \end{macrocode} +% +% +% +% \subsection{The punctuation file} +% +% The main punctuation marks are defined in this file. +% +% \begin{macrocode} +%<*punct> +% HUNCLPUNCT.MF This file contains punctuation marks + +% \end{macrocode} +% +% +% \begin{routine}{,} +% The `,' character. +% \begin{macrocode} + +cmchar "Uncial Comma"; +beginchar(",",2u#+hstretch*(comma_width#+dot_size#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=u; +x1=w-pcshiftx-(0.5hstretch*dot_size); y1=h/2; +draw_pcomma(1,dot_size,comma_width); +penlabels(1); +endchar; % end of "," + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{.} +% The `.' character. +% \begin{macrocode} + +cmchar "Uncial Period"; +beginchar(".",2u#+hstretch*(dot_size#),x_height#,0); +pcshiftx:=u; +x1=w/2; y1=h/2; +draw_pdot(1,dot_size); +penlabels(1); +endchar; % end of "." + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{:} +% The `:' character. +% \begin{macrocode} + +cmchar "Uncial Colon"; +beginchar(":",2u#+hstretch*(dot_size#),x_height#,0); +pcshiftx:=u; +x1=x2=w/2; y1=2/3h; y2=1/3h; +draw_pdot(1,dot_size); +draw_pdot(2,dot_size); +penlabels(1,2); +endchar; % end ":" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{;} +% The `;' character. +% \begin{macrocode} + +cmchar "Uncial Semicolon"; +beginchar(";",2u#+hstretch*(comma_width#+dot_size#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=u; +x1=x2=w-pcshiftx-(0.5hstretch*dot_size); y1=2/3h; y2=1/3h; +draw_pdot(1,dot_size); +draw_pcomma(2,dot_size,comma_width); +penlabels(1,2); +endchar; % end of ";" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{'} +% The `'' character. +% \begin{macrocode} + +cmchar "Uncial Apostrophe"; +beginchar("'",2u#+hstretch*(comma_width#+dot_size#),4/3x_height#,0); +adjust_fit(0,0); +pcshiftx:=u; +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 "Uncial Reverse apostrophe"; +beginchar("`",2u#+hstretch*(comma_width#+dot_size#),4/3x_height#,0); +adjust_fit(0,0); +pcshiftx:=u; +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} +% +% \end{macrocode} +% +% +% \subsection{The ligatures and dashes file} +% +% The ligatured letters, punctuation marks and dashes are defined in this file. +% \begin{macrocode} +%<*lig> +% HUNCLLIG.MF Uncial ligatured letters, punctation and dashes + +% \end{macrocode} +% First the ligtables. +% \begin{macrocode} + +ligtable "`": "`"=:oct"134"; +ligtable "'": "'"=:oct"042"; %% , "?" kern 2u#, "!" kern 2u#; + +ligtable "-": "-"=:oct"173"; +ligtable oct"173": "-"=:oct"174"; + +ligtable "f": "i"=:oct"014"; + +% \end{macrocode} +% +% \begin{routine}{''} +% The `''' ligature. +% \begin{macrocode} + +cmchar "Uncial closing quotes"; +beginchar(oct"042",2u#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0); +adjust_fit(0,0); +pcshiftx:=u; +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 "Uncial opening quotes"; +beginchar(oct"134",2u#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0); +adjust_fit(0,0); +pcshiftx:=u; +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 `-' character. +% \begin{macrocode} + +cmchar "Uncial hyphen"; +beginchar("-",u#+hstretch*(0.8x_height#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=u/2; +numeric alpha; alpha:=w/8; +pickup quill; +lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; +x11=lft x1+alpha/2; y11=top y1-0.5thin; +x12=rt x2; y12=bot y1+0.5thin; +draw z1--z2; % bar +%%draw_triangle(11,alpha); +%%draw_rutriangle(12,alpha); +penlabels(1,2); +endchar; % end of "-" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{--} +% The -- ligature. +% \begin{macrocode} + +cmchar "Uncial en dash"; +beginchar(oct"173",u#+hstretch*(x_height#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=u/2; +numeric alpha; alpha:=w/8; +pickup quill; +lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; +x11=lft x1+alpha/2; y11=top y1-0.5thin; +x12=rt x2; y12=bot y1+0.5thin; +draw z1--z2; % bar +%%draw_triangle(11,alpha); +%%draw_rutriangle(12,alpha); +penlabels(1,2); +endchar; % end of "--" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{---} +% The `---' ligature. The em dash is twice the width of the en dash. +% \begin{macrocode} + +cmchar "Uncial em dash"; +beginchar(oct"174",u#+hstretch*(2x_height#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=u/2; +numeric alpha; alpha:=w/8; +pickup quill; +lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; +x11=lft x1+alpha/2; y11=top y1-0.5thin; +x12=rt x2; y12=bot y1+0.5thin; +draw z1--z2; % bar +%%draw_triangle(11,alpha); +%%draw_rutriangle(12,alpha); +penlabels(1,2); +endchar; % end of "---" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{fi} +% The `fi' ligature. +% \begin{macrocode} + +cmchar "HUncial ligature fi"; +beginchar(oct"014", 2u#+hstretch*(7/6x_height#+trijut#), (3/2x_height#), desc_depth#); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% stem +lft x1=lft x2=pcshiftx+trijut; +top y1=2/3h; bot y2=-d; +% bars +z3=z4=z1; +rt x5=w-pcshiftx; top y5=h; +rt x6=w-pcshiftx-jut; y6=y4; +x7=x6; bot y7=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +% the f part +draw_tstem(1,2,srad); % stem +draw_triserif(1,trijut); +draw_urswish(3,5); % top bar +draw z4--z6; % bottom bar +% the i part +draw_tstem(6,7,srad); % stem +ductus:=false; +penlabels(1,2,3,4,5,6,7,100); +endchar; % end of "fi" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{&} +% The ampersand (which is really an `et' ligature). +% \begin{macrocode} + +cmchar "HUncial ampersand"; +beginchar("&", 2u#+hstretch*(5/3x_height#), x_height#, 0.5desc_depth#); +adjust_fit(0,0); +pcshiftx:=u; +numeric alpha; alpha:=3/5w-u; +pickup quill; +% for the e part +lft x1=pcshiftx; rt x3= alpha; y1=y3=h/2; +x2=x4=alpha/2; top y2=h; bot y4=0; +x3'=alpha; +bowl_stem(4,3'); +rt x5=x4i; top y5=y4i; +rt x6=x4i; y5-y4=y2-y6; +% the bar +x7=x1; y7=y1; +rt x8=w-pcshiftx; y8=y7; +% the t part +lft x9=x5; y9=y5; +x10=0.5[x9,x8]; bot y10=-d; +x8'=x8; +bowl_stem(10,8'); +x11=x10i; y11=y10i; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z5{-pdir}..{left}z4..z1..z2..z6; % the E bowl +draw z7--z8; % the (top) bar +draw z8{left}..z9..z10{right}..{pdir}z11; % the T bowl +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,10,16,17,18,31,32,33); +endchar; % end of "&" + +% \end{macrocode} +% \end{routine} +% +% +% The end of this file. +% \begin{macrocode} +% +% \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> +% HUNCLDIG.MF Program file for Half Uncial digits +% + +% \end{macrocode} +% +% +% \begin{routine}{1} +% The digit `1'. +% \begin{macrocode} +cmchar "HUncial digit 1"; +beginchar("1", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +x1=x2=w/2; +y1=h; bot y2=0; +%%ductus:=true; +draw_tstem(1,2,srad); +draw_triserif(1,trijut); +ductus:=false; +penlabels(1,2,100); +endchar; % end "1" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{2} +% The digit `2'. +% \begin{macrocode} +cmchar "HUncial digit 2"; +beginchar("2", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +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; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1..z2{right}..z3{down}..{-pdir}z5; % curve +draw z5--z6; % foot +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 "HUncial 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; +% y values +bot y3=thin; top y10=h-2thin; +y6=0.5[y3,y10]; y7=y6; +bot y4=-thin; top y9=h+thin; +y5=0.5[y3,y6]; +y8=11/12[y7,y10]; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z3..z4{right}..z5{up}...{-pdir}z6; % bottom bowl +draw z7{pdir}...z8{up}..z9{left}..z10; % top bowl +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,10,100); +endchar; % end "3" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{4} +% The digit `4'. +% \begin{macrocode} +cmchar "HUncial digit 4"; +beginchar("4", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% the stem +x1=x2=w-pcshiftx-jut; +y1=h; bot y2=0; +% the crossbar +lft x3=pcshiftx; y3=0.33h; +rt x4=w-pcshiftx; y4=y3; +% the diagonal +lft x5=pcshiftx+jut; y5=h; +x6=x5; y6=y4; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % main stem +draw z3--z4; % crossbar +draw z3{pdir}..{pdir}z1; % diagonal +ductus:=false; +penlabels(1,2,3,4,100); +endchar; % end "4" + +% \end{macrocode} +% \end{routine} +% +% +% +% \begin{routine}{5} +% The digit `5'. +% \begin{macrocode} +cmchar "HUncial digit 5"; +beginchar("5", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% for the top +rt x1=w-pcshiftx; top y1=h; +lft x2=pcshiftx+trijut; 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+trijut; bot y7=2thin; +%%x8=w-pcshiftx; y8=h-0.5thin; +%%ductus:=true; +if ductus: + pickup stylus; +fi +%%draw_wave(2,1,thin); % top squiggle +draw z2--z1; % top bar +%%draw_rtriangle(8,3/4jut); +draw z3{pdir}..z5{down}..z6{left}..z7; % curve +draw z2--z3; % vertical +draw_triserif(2,trijut); +ductus:=false; +penlabels(1,2,3,4,5,6,7,100); +endchar; % end "5" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{6} +% The digit `6'. +% \begin{macrocode} +cmchar "HUncial 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; +x8=w-pcshiftx; y8=h-0.5thin; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1..z2{left}..z3{down}..z4{right}..z5{up}..{-pdir}z6; +%%draw z1{left}..z3{down}..z4{right}..z5{up}..{-pdir}z6; +%%draw_rtriangle(8,3/4jut); +ductus:=false; +penlabels(1,2,3,4,5,6,8,100); +endchar; % end "6" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{7} +% The digit `7'. +% \begin{macrocode} +cmchar "HUncial digit 7"; +beginchar("7", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% top bar +lft x1=pcshiftx; +rt x2=w-pcshiftx; +top y1=top y2=h; +x8=pcshiftx+3/8jut; y8=h-0.5thin; +% bowed leg +x4=w/2; bot y4=0; +x3=0.5[x2,x4]-3thin; y3=0.5[y2,y4]; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2; % top bar +%%draw_triangle(8,3/4jut); +draw z2..z3..z4; % leg +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,100); +endchar; % end "7" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{8} +% The digit `8'. +% \begin{macrocode} +cmchar "HUncial 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 "HUncial 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 "Uncial 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; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,100); +endchar; % end "0" + +% \end{macrocode} +% \end{routine} +% +% +% +% +% The end of this file. +% \begin{macrocode} +% +% \end{macrocode} +% +% \section{The font definition files} \label{sec:fd} +% +% The font comes in normal and bold weights only. +% +% \begin{macrocode} +%<*fdot1> +\DeclareFontFamily{OT1}{huncl}{} + \DeclareFontShape{OT1}{huncl}{m}{n}{ <-8.5> huncl7 <8.5-15> huncl10 <15-> huncl17 }{} + \DeclareFontShape{OT1}{huncl}{m}{sl}{ <-> sub * huncl/m/n }{} + \DeclareFontShape{OT1}{huncl}{m}{it}{ <-> sub * huncl/m/n }{} + \DeclareFontShape{OT1}{huncl}{m}{sc}{ <-> sub * huncl/m/n }{} + \DeclareFontShape{OT1}{huncl}{m}{u}{ <-> sub * huncl/m/n }{} + \DeclareFontShape{OT1}{huncl}{bx}{n}{ <-8.5> hunclb7 <8.5-15> hunclb10 <15-> hunclb17 }{} + \DeclareFontShape{OT1}{huncl}{bx}{it}{ <-> sub * huncl/bx/n }{} + \DeclareFontShape{OT1}{huncl}{bx}{sl}{ <-> sub * huncl/bx/n }{} + \DeclareFontShape{OT1}{huncl}{b}{n}{ <-> sub * huncl/bx/n }{} +% +% \end{macrocode} +% +% +% \begin{macrocode} +%<*fdt1> +\DeclareFontFamily{T1}{huncl}{} + \DeclareFontShape{T1}{huncl}{m}{n}{ <-8.5> huncl7 <8.5-15> huncl10 <15-> huncl17 }{} + \DeclareFontShape{T1}{huncl}{m}{sl}{ <-> sub * huncl/m/n }{} + \DeclareFontShape{T1}{huncl}{m}{it}{ <-> sub * huncl/m/n }{} + \DeclareFontShape{T1}{huncl}{m}{sc}{ <-> sub * huncl/m/n }{} + \DeclareFontShape{T1}{huncl}{m}{u}{ <-> sub * huncl/m/n }{} + \DeclareFontShape{T1}{huncl}{bx}{n}{ <-8.5> hunclb7 <8.5-15> hunclb10 <15-> hunclb17 }{} + \DeclareFontShape{T1}{huncl}{bx}{it}{ <-> sub * huncl/bx/n }{} + \DeclareFontShape{T1}{huncl}{bx}{sl}{ <-> sub * huncl/bx/n }{} + \DeclareFontShape{T1}{huncl}{b}{n}{ <-> sub * huncl/bx/n }{} +% +% \end{macrocode} +% +% \section{The package code} \label{sec:code} +% +% \subsection{The \Lpack{huncial} package} +% +% The \Lpack{huncial} 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{huncial}[1999/05/22 v1.0 package for Half Uncial 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}{\hunclfamily} +% Selects the \thisfont{} font family in the OT1 or T1 encoding. +% \begin{macrocode} +\ifx\Tienc\encodingdefault + \newcommand{\hunclfamily}{\usefont{T1}{huncl}{m}{n}} +\else + \newcommand{\hunclfamily}{\usefont{OT1}{huncl}{m}{n}} +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\texthuncl} +% Text command for the \thisfont{} font family. +% \begin{macrocode} +\DeclareTextFontCommand{\texthuncl}{\hunclfamily} +% \end{macrocode} +% \end{macro} +% +% The end of this package. +% \begin{macrocode} +% +% \end{macrocode} +% +% \subsection{The \Lpack{allhuncl} package} +% +% The \Lpack{allhuncl} 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{huncial} package. +% \begin{macrocode} +%<*uscall> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{allhuncl}[1999/05/22 v1.0 package for all Half Uncial fonts] +\RequirePackage{huncial} +% \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}{huncl} +\renewcommand{\sfdefault}{huncl} +\renewcommand{\ttdefault}{huncl} +% \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 & 2.29 \\ ^^A CMR skip = 6pt = 2.8 times +% 6 & 2.58 & 2.76 \\ ^^A CMR skip = 7pt = 2.7 times +% 7 & 3.00 & 3.21 \\ ^^A CMR skip = 8pt = 2.7 times +% 8 & 3.44 & 3.68 \\ ^^A CMR skip = 9.5pt = 2.8 times +% 9 & 3.86 & 4.13 \\ ^^A CMR skip = 11pt = 2.8 times +% 10 & 4.31 & 4.61 \\ ^^A CMR skip = 12pt = 2.8 times +% 11 & 4.74 & 5.08 \\ ^^A CMR skip = 13.6pt = 2.8 times +% 12 & 5.17 & 5.53 \\ ^^A CMR skip = 14.5pt = 2.8 times +% 14 & 6.03 & 6.45 \\ ^^A CMR skip = 18pt = 3.0 times +% 17 & 7.44 & 7.96 \\ ^^A CMR skip = 22pt = 3.0 times +% 20 & 8.75 & 9.36 \\ ^^A CMR skip = 25pt = 2.9 times +% 25 & 10.94 & 11.71 \\ ^^A CMR skip = 30pt = 2.7 times +% \hline +% \end{tabular} +% \end{table} +% +% \begin{macro}{\huncial@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 +% +% \begin{macrocode} +\newcommand{\huncial@baselineskip@table}{% + <\@vpt>5.7% + <\@vipt>6.9% + <\@viipt>8.0% + <\@viiipt>9.2% + <\@ixpt>10.3% + <\@xpt>11.5% + <\@xipt>12.7% + <\@xiipt>13.8% + <\@xivpt>16.1% + <\@xviipt>19.9% + <\@xxpt>23.4% + <\@xxvpt>29.3} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\huncial@new@setfontsize} +% This is a macro that replaces the |\@setfontsize| macro which is called by +% the font size changing commands. +% \begin{macrocode} +\newcommand{\huncial@new@setfontsize}[3]{% + \edef\@tempa{\def\noexpand\@tempb####1<#2}% + \@tempa>##2<##3\@nil{\def\huncial@baselineskip@value{##2}}% + \edef\@tempa{\noexpand\@tempb\huncial@baselineskip@table<#2}% + \@tempa><\@nil + \ifx\huncial@baselineskip@value\@empty + \def\huncial@baselineskip@value{#3}% + \fi + \huncial@old@setfontsize{#1}{#2}\huncial@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\huncial@old@setfontsize=\@setfontsize + \let\@setfontsize=\huncial@new@setfontsize} +\AtBeginDocument{\normalsize} +% \end{macrocode} +% +% +% The end of this package. +% \begin{macrocode} +% +% \end{macrocode} +% +% +% +% \bibliographystyle{alpha} +% \renewcommand{\refname}{Bibliography} +% \begin{thebibliography}{GMS94} +% \addcontentsline{toc}{section}{\refname} +% +% \bibitem[And69]{ANDERSON69} +% Donald M.~Anderson. +% \newblock {\em The Art of Written Forms: The Theory and Practice of Calligraphy}. +% \newblock Holt, Rinehart and Winston, 1969. +% +% \bibitem[Bol95]{BOLOGNA95} +% Giulia Bologna. +% \newblock {\em Illuminated Manuscripts: The Book before Gutenberg}. +% \newblock Crescent Books, 1995. +% +% \bibitem[Day95]{DAY95} +% Lewis F.~Day. +% \newblock {\em Alphabets Old \& New}. +% \newblock (3rd edition originally published by B.~T.~Batsford, 1910) +% \newblock Senate, 1995. +% +% \bibitem[Dro80]{DROGIN80} +% Marc Drogin. +% \newblock {\em Medieval Calligraphy: Its History and Technique}. +% \newblock Allenheld, Osmun \& Co., 1980. +% +% \bibitem[Dru95]{DRUCKER95} +% Johanna Drucker. +% \newblock {\em The Alphabetic Labyrinth}. +% \newblock Thames \& Hudson, 1995. +% +% \bibitem[Fir93]{FIRMAGE93} +% Richard A.~Firmage. +% \newblock {\em The Alphabet Abecedarium}. +% \newblock David R~Goodine, 1993. +% +% \bibitem[Fli98]{LETTRINE} +% Daniel Flipo. +% \newblock {\em The LETTRINE package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1998. +% +% \bibitem[Har95]{HARRIS95} +% David Harris. +% \newblock {\em The Art of Calligraphy}. +% \newblock DK Publishing, 1995. +% +% \bibitem[Jen95]{BETON} +% Frank Jensen. +% \newblock {\em The BETON package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1995. +% +% \bibitem[Joh71]{JOHNSTON75} +% Edward Johnston (ed. Heather Child). +% \newblock {\em Formal Penship and Other Papers}. +% \newblock Penthalic, 1971. +% +% \bibitem[Knu87]{CM} +% Donald E.~Knuth. +% \newblock {\em Computer Modern Typefaces}. +% \newblock Addison-Wesley, 1987. +% +% \bibitem[Knu92]{METAFONT} +% Donald E.~Knuth. +% \newblock {\em The METAFONTbook}. +% \newblock Addison-Wesley, 1992. +% +% \bibitem[GMS94]{GOOSSENS94} +% Michel Goossens, Frank Mittelbach, and Alexander Samarin. +% \newblock {\em The LaTeX Companion}. +% \newblock Addison-Wesley Publishing Company, 1994. +% +% \bibitem[Tho75]{THOMAS75} +% Alan G.~Thomas. +% \newblock {\em Great Books and Book Collectors}. +% \newblock Weidenfield and Nichoson, 1975. +% +% \bibitem[Wil99]{DOCMFP} +% Peter R.~Wilson. +% \newblock {\em The DOCMFP Package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1999. +% +% \bibitem[Wil99b]{ROMANNUM} +% Peter R.~Wilson. +% \newblock {\em The ROMANNUM Package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1999. +% +% \end{thebibliography} +% +% +% \Finale +% \PrintIndex +% +\endinput + +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} + + diff --git a/Master/texmf-dist/source/fonts/bookhands/huncial.ins b/Master/texmf-dist/source/fonts/bookhands/huncial.ins new file mode 100644 index 00000000000..84f2d8cfb41 --- /dev/null +++ b/Master/texmf-dist/source/fonts/bookhands/huncial.ins @@ -0,0 +1,101 @@ +%% +%% huncial.ins +%% Copyright 1999 Peter R. Wilson +%% +%% This program is provided under the terms of the +%% LaTeX Project Public License distributed from CTAN +%% archives in directory macros/latex/base/lppl.txt. +%% +%% Author: Peter Wilson (CUA) +%% now at: peter.r.wilson@boeing.com +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\batchfile{huncial.ins} +\input docstrip.tex +\preamble + + Copyright 1999 Peter R. Wilson + + This program is provided under the terms of the + LaTeX Project Public License distributed from CTAN + archives in directory macros/latex/base/lppl.txt. + +Author: Peter Wilson (CUA) + now at: peter.r.wilson@boeing.com + +\endpreamble + +\keepsilent + +%%% \Msg{*** Generating the driver file ***} +%%% \generateFile{huncial.drv}{t}{\from{huncial.dtx}{driver}} + +\Msg{*** Generating the Metafont files ***} + +\usepostamble\empty +\generateFile{huncl7.mf}{t}{\from{huncial.dtx}{base7}} +\generateFile{huncl10.mf}{t}{\from{huncial.dtx}{base10}} +\generateFile{huncl17.mf}{t}{\from{huncial.dtx}{base17}} +\generateFile{hunclb7.mf}{t}{\from{huncial.dtx}{base7b}} +\generateFile{hunclb10.mf}{t}{\from{huncial.dtx}{base10b}} +\generateFile{hunclb17.mf}{t}{\from{huncial.dtx}{base17b}} +\generateFile{huncll.mf}{t}{\from{huncial.dtx}{min}} +\generateFile{hunclu.mf}{t}{\from{huncial.dtx}{maj}} +\generateFile{huncltitle.mf}{t}{\from{huncial.dtx}{mfd}} +\generateFile{hunclpunct.mf}{t}{\from{huncial.dtx}{punct}} +\generateFile{huncllig.mf}{t}{\from{huncial.dtx}{lig}} +\generateFile{huncldig.mf}{t}{\from{huncial.dtx}{dig}} + +\Msg{*** Generating the Font Definition files ***} +\usepostamble\defaultpostamble + +\generateFile{ot1huncl.fd}{t}{\from{huncial.dtx}{fdot1}} +\generateFile{t1huncl.fd}{t}{\from{huncial.dtx}{fdt1}} + +\Msg{*** Generating the LaTeX2e package files ***} + +\generateFile{huncial.sty}{t}{\from{huncial.dtx}{usc}} +\generateFile{allhuncl.sty}{t}{\from{huncial.dtx}{uscall}} + +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into directories searched by TeX:} +\Msg{*} +\Msg{* Move these into the font source area:} +\Msg{* \space\space huncl7.mf} +\Msg{* \space\space huncl10.mf} +\Msg{* \space\space huncl17.mf} +\Msg{* \space\space hunclb7.mf} +\Msg{* \space\space hunclb10.mf} +\Msg{* \space\space hunclb17.mf} +\Msg{* \space\space huncll.mf} +\Msg{* \space\space hunclu.mf} +\Msg{* \space\space huncltitle.mf} +\Msg{* \space\space hunclpunct.mf} +\Msg{* \space\space huncllig.mf} +\Msg{* \space\space huncldig.mf} +\Msg{*} +\Msg{* Move these into the LaTeX macro area:} +\Msg{* \space\space ot1huncl.fd} +\Msg{* \space\space t1huncl.fd} +\Msg{* \space\space huncial.sty} +\Msg{* \space\space allhuncl.sty} +\Msg{*} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* `.dtx' through LaTeX.} +\Msg{* Process any name.idx file by:} +\Msg{* \space\space\space\space makeindex -s gind.ist name} +\Msg{* Process any name.glo file by:} +\Msg{* \space\space\space\space makeindex -s gglo.ist -o name.gls name.glo} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} + +\endinput diff --git a/Master/texmf-dist/source/fonts/bookhands/inslrmaj.dtx b/Master/texmf-dist/source/fonts/bookhands/inslrmaj.dtx new file mode 100644 index 00000000000..a566a44ac9e --- /dev/null +++ b/Master/texmf-dist/source/fonts/bookhands/inslrmaj.dtx @@ -0,0 +1,4809 @@ +% \iffalse meta-comment +% +% inslrmaj.dtx +% Copyright 1999 Peter R. Wilson +% +% This program is provided under the terms of the +% LaTeX Project Public License distributed from CTAN +% archives in directory macros/latex/base/lppl.txt. +% +% Author: Peter Wilson (CUA) (now at: peter.r.wilson@boeing.com) +% +% If you do not have the docmfp package (available from CTAN in +% tex-archive/macros/latex/contrib/supported), comment out the +% \usepackage{docmfp} line below and uncomment the line following it. +% +%<*driver> +\documentclass{ltxdoc} +\usepackage{docmfp} +%%%%%% \providecommand{\DescribeVariable}[1]{} \newenvironment{routine}[1]{}{} +\EnableCrossrefs +\CodelineIndex +%%\OnlyDescription +\setcounter{StandardModuleDepth}{1} +\begin{document} + \DocInput{inslrmaj.dtx} +\end{document} +% +% +% \fi +% +% \CheckSum{132} +% +% \DoNotIndex{\',\.,\@M,\@@input,\@addtoreset,\@arabic,\@badmath} +% \DoNotIndex{\@centercr,\@cite} +% \DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue} +% \DoNotIndex{\@input,\@ixpt,\@m} +% \DoNotIndex{\@minus,\@mkboth,\@ne,\@nil,\@nomath,\@plus,\@set@topoint} +% \DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb} +% \DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt} +% \DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt} +% \DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace} +% \DoNotIndex{\advance,\Alph,\alph} +% \DoNotIndex{\arabic,\ast,\begin,\begingroup,\bfseries,\bgroup,\box} +% \DoNotIndex{\bullet} +% \DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption} +% \DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass} +% \DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\endtrivlist} +% \DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup} +% \DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter} +% \DoNotIndex{\fbox} +% \DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef} +% \DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule} +% \DoNotIndex{\hsize,\hskip,\hspace,\hss,\if@tempswa,\ifcase,\or,\fi,\fi} +% \DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\fi,\fi,\fi,\fi,\fi} +% \DoNotIndex{\input} +% \DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark} +% \DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright} +% \DoNotIndex{\month,\newcommand,\newcounter,\newenvironment} +% \DoNotIndex{\NeedsTeXFormat,\newdimen} +% \DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number} +% \DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\p@} +% \DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip} +% \DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions} +% \DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright} +% \DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font} +% \DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily,\roman} +% \DoNotIndex{\roman,\secdef,\selectfont,\setbox,\setcounter,\setlength} +% \DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space} +% \DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase} +% \DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt} +% \DoNotIndex{\viipt,\vipt,\vskip,\vspace} +% \DoNotIndex{\wd,\xiipt,\year,\z@} +% +% \changes{v1.0}{1999/05/22}{First public release} +% \changes{v1.0a}{2001/01/02}{Fixed missing * in .fd files} +% +% ^^A \def\fileversion{v1.0} +% ^^A \def\filedate{1999/05/22} +% \def\fileversion{v1.0a} +% \def\filedate{2001/01/02} +% \newcommand*{\Lpack}[1]{\textsf {#1}} ^^A typeset a package +% \newcommand*{\Lopt}[1]{\textsf {#1}} ^^A typeset an option +% \newcommand*{\file}[1]{\texttt {#1}} ^^A typeset a file +% \newcommand*{\Lcount}[1]{\textsl {\small#1}} ^^A typeset a counter +% \newcommand*{\pstyle}[1]{\textsl {#1}} ^^A typeset a pagestyle +% \newcommand*{\Lenv}[1]{\texttt {#1}} ^^A typeset an environment +% \newcommand*{\AD}{\textsc{ad}} +% \newcommand*{\thisfont}{Insular Majuscule} +% +% \title{The \Lpack{Insular Majuscule} fonts\thanks{This +% file has version number \fileversion, last revised +% \filedate.}} +% +% \author{% +% Peter Wilson\\ +% Catholic University of America \\ +% Now at \texttt{peter.r.wilson@boeing.com} +% } +% \date{\filedate} +% \maketitle +% \begin{abstract} +% The \Lpack{inslrmaj} and \Lpack{allimaj} packages provide a set of +% Metafont \thisfont{} book-hands +% as used +% for manuscripts in the 6th to the 9th century. This is one in a series +% of manuscript fonts. +% \end{abstract} +% \tableofcontents +% \listoftables +% +% +% +% +% \section{Introduction} +% +% The \Lpack{inslrmaj} and \Lpack{allimaj} packages provide a Metafont~\cite{METAFONT} version +% of the \thisfont{} manuscript book-hand that was in use between about the +% third and ninth centuries~\AD. It is part of a project to provide fonts +% covering the major manuscript hands between the first century~\AD{} and +% the invention of printing. The principal resources used in this project +% are listed in the Bibliography. +% +% This manual is typeset according to the conventions of the +% \LaTeX{} \textsc{docstrip} utility which enables the automatic +% extraction of the \LaTeX{} macro source files~\cite{GOOSSENS94}. +% The \Lpack{docmfp} package is used for documenting the Metafont portions +% of the distribution~\cite{DOCMFP}. +% +% Section~\ref{sec:usc} describes the usage of the package. +% Commented code for the fonts is in Sections~\ref{sec:mf} and~\ref{sec:fd} +% and source code for the package is in Section~\ref{sec:code}. +% +% \subsection{Manuscript book-hands} +% +% Before the invention of printing all books were written by hand. The book-hands +% used by the scribes and copyists for the manuscripts changed as time +% went on. Table~\ref{tab:1} lists some of the common book-hands which were used +% between the 1st and 15th centuries. The later book-hands formed the basis of the +% fonts used by the early printers, which in turn form the basis of the printing +% fonts in use today. +% +% The manuscript book-hands were written with a broad nibbed reed or quill +% pen. Among the distinguishing characteristics of a hand, apart from the +% actual shape of the letters, are the angle of the pen (which controls the +% variation between thick and thin strokes) and the height of a letter compared +% to the width of the nib. The lower the ratio of the letter height to nib +% width, the more condensed is the script. The scripts also varied in their +% typical height. +% +% Table~\ref{tab:1} gives an `average' x-height for each +% script, which I obtained by measuring a sample of photographs of +% manuscripts written in the various hands. About a dozen examples +% of each book-hand were measured. This figure should not be taken too +% seriously. +% +% There was not a sharp division between the use of one hand and another. +% Many manuscripts exhibit a variety of hands in the same document. For example, +% the scribe writing in an Uncial hand may have used Roman Rustic letters +% for capitals. Usually the same pen was used for the two different scripts. +% +% Generally speaking, as a hand got older it became more embelished, and +% therefore took longer to write. As this happened a new hand would appear that +% was faster, and which would eventually make the earlier one obsolete. +% +% Many of the book-hands were single-cased; that is, they did not have an +% upper- and lower-case as we do nowadays in Western scripts. On the other +% hand, a script might be majuscule or minuscule. A \textit{majuscule} script +% is one, like our upper-case, where the letters are drawn between two lines +% and are of a uniform height with no ascenders or descenders. +% A \textit{minuscule} script, like our lower-case, is drawn between four lines +% and has ascenders and descenders. +% +% \begin{table} +% \centering +% \caption{The main manuscript book-hands} \label{tab:1} +% \begin{tabular}{lccccc} \hline +% Name & Century & x-height & Height & Pen & Normalised \\ +% & & (mm) & (nib widths) & angle & height \\ \hline +% Roman Rustic & 1--6 & 5.7 & 4--6 & 45 & 1.90 \\ +% Uncial & 3--6 & 4.1 & 4--5 & 30 & 1.37 \\ +% Half Uncial & 3--9 & 3.2 & 3--6 & 20--30 & 1.07 \\ +% Artificial Uncial & 6--10 & 4.2 & 3--6 & 10 & 1.40 \\ +% Insular majuscule & 6--9 & 4.2 & 5 & 0--20 & 1.40 \\ +% Insular minuscule & 6 onward & 4.1 & 5--6 & 45--70 & 1.37 \\ +% Carolingian minuscule & 8--12 & 3.0 & 3--5 & 45 & 1.00 \\ +% Early Gothic & 11--12 & 3.8 & 4--6 & 20--45 & 1.27 \\ +% Gothic Textura & 13--15 & 3.9 & 3--5 & 30--45 & 1.30 \\ +% Gothic Prescius & 13 onward & 3.3 & 4--5 & 45 & 1.10 \\ +% Rotunda & 13--15 & 3.2 & 4--6 & 30 & 1.07 \\ +% Humanist minuscule & 14 onward & 3.0 & 4--5 & 30--40 & 1.00 \\ \hline +% \end{tabular} +% \end{table} +% +% During the period under consideration arabic numerals were effectively +% not used. At the beginning they were unknown and even though some knew +% of them towards the end, the glyphs used for them are not recognisable --- +% to me they look somewhat like cryllic letters --- and each locality +% and time had its own highly individualistic rendering. The general rule +% when using one of these book-hands is to write all numbers using +% roman numerals. +% +% The Roman alphabet consisted of 23 capital letters --- the J, U and W +% were absent. The book-hands initially used both a `u' and a `v' interchangeably +% but by the 10th century the practice had become to use the `v' before a vowel +% and the `u' otherwise. The letter corresponding to the W sound appeared +% in England around the 7th century in +% the form of the runic \textit{wen} character and by about the 11th century +% the `w' chacter was generally used. The `J' is the newest letter of all, not +% appearing until about the mid 16th century. +% +% In the first century punctuation was virtually unknown, and typically +% would not even be any additional space between individual words, never +% mind denoting ends of sentences. Sometimes a dot at mid-height would be +% used as a word seperator, or to mark off the end of a paragraph. Effectively +% a text was a continuous stream of letters. By the time that printing was +% invented, though, all of our modern punctuation marks were being used. +% +% Among all these manuscript hands, the Carolingian minuscule is the +% most important as our modern fonts are based on its letter shapes, and it is +% also at this point in time where the division occured between the black letter +% scripts as used even today in Germany, and the lighter fonts used elesewhere. +% The Rotunda and Humanist minuscule hands were developed in Italy and were +% essentially a rediscovery of the Carolingian minusucle. Guthenberg took the +% Gothic scripts as the model for his types. Later printers, +% such as Nicholas Jenson of Venice, +% took the Humanist scripts as their models. +% +% +% \subsection{The \thisfont{} script} +% +% The \thisfont{} hand, which is a majuscule script even though it does +% have some ascenders and descenders, was in use for some three +% centuries. It was originally developed in Ireland by St.~Patrick's monks +% from the Roman Half Uncial script which they brought with them. +% It was a formal script, the triangular serifs and clubbed ascenders took +% at least two strokes each, so was not fast to write. The most famous +% example of the script is the \textit{Book of Kells}, which was written +% between 790 and 830. The hand eventually moved from Ireland to England +% and became even more formal until it effectively dissappeared under its +% own weight. +% +% Although the letter shapes in this book-hand are principally of +% a lower-case form, there are a few that are shaped like capital letters. +% For example, the `n' appeared as both an `n' and as an `N', +% while the `f' and `r' were written like `F' and `R'. +% Some letters had multiple forms. As well as the `n', both a short and +% a long `s' were used and the `z' also took two forms. +% +% The letters were written very close together and the scibes used many +% adhoc ligatures. A favourite was using a long `e' before a letter +% with a bar at the x-height, and joining the crossbar of the `e' to +% the bar of the following letter, for instance the pair `eg'. +% I have only provided the ampersand, `\&', as a ligature, standing for +% `et' which is the Latin for `and'. +% Letters were also stretched if a line +% needed some filling. For example, the capital form of the `n' might be +% stretched to 2 or 3 times its normal width. +% +% Usually the +% lettering in a manuscript was all one size. If the scribe felt the need +% for `capital' letters then, using the same pen, would either write a larger +% \thisfont{} letter or a letter from one of the more formal book-hands. +% I have provided a set of `capital' letters that are only a little larger +% than the normal letters for use in running text. +% During the time the \thisfont{} script was used the alphabet only had 24 +% letters. I have included the missing J. +% +% Arabic numerals were unknown at this time, so all numbers were written +% using the roman numbering system. I have provided \thisfont{} versions of +% the arabic digits. +% +% Punctuation was used, but not with the frequency of today. +% A sentence might be ended with +% a dot at mid-height or a paragraph ended with a colon, also at mid-height. +% The comma was was a small +% slash; the semi-colon was known, as was the single quotation +% mark which was represented by a raised comma. +% +% +% \section{The \Lpack{inslrmaj} and \Lpack{allimaj} packages} \label{sec:usc} +% +% The \thisfont{} font family is called |imaj|. The font is supplied in both +% OT1 and T1 encodings. +% +% \subsection{The \Lpack{inslrmaj} package} +% +% This is intended for the occasions when some short pieces of text have +% to be written in \thisfont{} while the majority of the document is in another +% font. The normal baselineskips are used. +% +% \DescribeMacro{\imajfamily} +% The |\imajfamily| declaration starts typesetting with the \thisfont{} fonts. +% Use of the \thisfont{} font will continue until either there is another |\...family| +% declaration or the current group (e.g., environment) is closed. +% +% \DescribeMacro{\textimaj} +% The command |\textimaj{|\meta{text}|}| will typeset \meta{text} using the +% \thisfont{} fonts. +% +% \subsection{The \Lpack{allimaj} package} +% +% +% This package is for when the entire document will be typeset with the +% \thisfont font. The baselineskips are set to those appropriate to the +% book-hand. +% +% This is a minimalist package. Apart from declaring \thisfont{} to be the +% default font and setting the baselineskips appropriately, it makes no other +% alterations. +% Vertical spacing +% before and after section titles and before and after lists, etc., will be +% too small as the \LaTeX{} design assumes a font comparable in size to +% normal printing fonts, and the book-hand is much taller. +% To capture more of the flavour of the time, all numbers +% should be written using roman numerals. +% The \Lpack{romannum} package~\cite{ROMANNUM} +% can be used so that \LaTeX{} will typeset the numbers that it generates, +% like sectioning or caption numbers, using roman numerals instead of arabic +% digits. +% +% \DescribeMacro{\cmrfamily} +% \DescribeMacro{\textcmr} +% \DescribeMacro{\cmssfamily} +% \DescribeMacro{\textcmss} +% \DescribeMacro{\cmttfamily} +% \DescribeMacro{\textcmtt} +% The |...family| declarations start typesetting with the Computer Modern Roman +% (|\cmrfamily|), the Computer Modern Sans (|\cmssfamily|), and the Computer +% Modern Typewriter (|\cmttfamily|) font families. The |\textcm..{|\meta{text}|}| +% commands will typeset \meta{text} in the corresponding Computer Modern font. +% +% The \Lpack{allimaj} package automatically loads the \Lpack{inslrmaj} package, +% so its font commands are available if necessary. +% +% \StopEventually{ +% \bibliographystyle{alpha} +% \renewcommand{\refname}{Bibliography} +% \begin{thebibliography}{GMS94} +% \addcontentsline{toc}{section}{\refname} +% +% \bibitem[And69]{ANDERSON69} +% Donald M.~Anderson. +% \newblock {\em The Art of Written Forms: The Theory and Practice of Calligraphy}. +% \newblock Holt, Rinehart and Winston, 1969. +% +% \bibitem[Bol95]{BOLOGNA95} +% Giulia Bologna. +% \newblock {\em Illuminated Manuscripts: The Book before Gutenberg}. +% \newblock Crescent Books, 1995. +% +% \bibitem[Day95]{DAY95} +% Lewis F.~Day. +% \newblock {\em Alphabets Old \& New}. +% \newblock (3rd edition originally published by B.~T.~Batsford, 1910) +% \newblock Senate, 1995. +% +% \bibitem[Dro80]{DROGIN80} +% Marc Drogin. +% \newblock {\em Medieval Calligraphy: Its History and Technique}. +% \newblock Allenheld, Osmun \& Co., 1980. +% +% \bibitem[Dru95]{DRUCKER95} +% Johanna Drucker. +% \newblock {\em The Alphabetic Labyrinth}. +% \newblock Thames \& Hudson, 1995. +% +% \bibitem[Fir93]{FIRMAGE93} +% Richard A.~Firmage. +% \newblock {\em The Alphabet Abecedarium}. +% \newblock David R~Goodine, 1993. +% +% \bibitem[Fli98]{LETTRINE} +% Daniel Flipo. +% \newblock {\em The LETTRINE package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1998. +% +% \bibitem[Har95]{HARRIS95} +% David Harris. +% \newblock {\em The Art of Calligraphy}. +% \newblock DK Publishing, 1995. +% +% \bibitem[Jen95]{BETON} +% Frank Jensen. +% \newblock {\em The BETON package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1995. +% +% \bibitem[Joh71]{JOHNSTON75} +% Edward Johnston (ed. Heather Child). +% \newblock {\em Formal Penship and Other Papers}. +% \newblock Penthalic, 1971. +% +% \bibitem[Knu87]{CM} +% Donald E.~Knuth. +% \newblock {\em Computer Modern Typefaces}. +% \newblock Addison-Wesley, 1987. +% +% \bibitem[Knu92]{METAFONT} +% Donald E.~Knuth. +% \newblock {\em The METAFONTbook}. +% \newblock Addison-Wesley, 1992. +% +% \bibitem[GMS94]{GOOSSENS94} +% Michel Goossens, Frank Mittelbach, and Alexander Samarin. +% \newblock {\em The LaTeX Companion}. +% \newblock Addison-Wesley Publishing Company, 1994. +% +% \bibitem[Tho75]{THOMAS75} +% Alan G.~Thomas. +% \newblock {\em Great Books and Book Collectors}. +% \newblock Weidenfield and Nichoson, 1975. +% +% \bibitem[Wil99]{DOCMFP} +% Peter R.~Wilson. +% \newblock {\em The DOCMFP Package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1999. +% +% \bibitem[Wil99b]{ROMANNUM} +% Peter R.~Wilson. +% \newblock {\em The ROMANNUM Package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1999. +% +% \end{thebibliography} +% } +% +% \section{The Metafont code} \label{sec:mf} +% +% +% As previously noted, this work is part of a larger project to provide +% fonts covering the main manuscript book-hands. As such, one of the +% aims is to produce a coordinated set of fonts, especially as multiple +% hands might be used in a single document. +% +% Noting that the hands tend to be somewhat larger than the typical 10pt +% size (where the x-height is approximately 1.5mm) used for modern books, +% I have also designed the fonts +% at a larger than normal size, then applied some non-linear factors when reducing +% them down to a 10pt size. +% Further, I have used the height of the Carolingian minuscule as a +% normalising factor when deciding on the absolute height of any particular +% script. The x-height of the Carolingian font is made equal to the +% x-height of the Computer Modern Roman (CMR) font. +% +% Modern fonts are effectively drawn. That is, the outline of the letter is +% drawn carefully and the center is filled with ink. This is shown to good +% effect in the Metafont code for the Computer Modern fonts~\cite{CM}. +% In contrast, the manuscript letters were inked by single pen strokes in +% a calligraphic manner. I have tried to repeat this calligraphic style +% in the Metafont code. +% +% As much as possible I have tried to use parameter values from the +% Computer Modern Roman (CMR) fonts in order to reduce possible +% infelicities if the CM and manuscript fonts are used together. However, +% few of the CMR parameters are applicable to the calligraphic style. +% +% +% \subsection{The parameter file} +% +% We deal with the parameter files first, and start by announcing +% what they are for. The \thisfont{} font comes in three sizes and also as a normal +% and a bold font. +% \begin{macrocode} +%<*base7|base10|base17|base7b|base10b|base17b> +%%%% IMAJ7.MF Insular Majuscule at 7 point design size. +%%%% IMAJ10.MF Insular Majuscule at 10 point design size. +%%%% IMAJ17.MF Insular Majuscule at 17 point design size. +%%%% IMAJB7.MF Insular Majuscule Bold at 7 point design size. +%%%% IMAJB10.MF Insular Majuscule Bold at 10 point design size. +%%%% IMAJB17.MF Insular Majuscule Bold at 17 point design size. +% +% \end{macrocode} +% Parameters from CMR are used as much as possible. We also +% make sure that \Lpack{cmbase} is loaded as well as plain Metafont. +% \begin{macrocode} +if unknown cmbase: input cmbase fi + +%font_identifier:="IMAJ"; font_size 7pt#; +%font_identifier:="IMAJ"; font_size 10pt#; +%font_identifier:="IMAJ"; font_size 17.28pt#; +%font_identifier:="IMAJB"; font_size 7pt#; +%font_identifier:="IMAJB"; font_size 10pt#; +%font_identifier:="IMAJB"; font_size 17.28pt#; + +% \end{macrocode} +% +% \DescribeVariable{jutstretch} +% The CMR scaling for lowercase serifs wrt 17pt size. +% \begin{macrocode} +% jutstretch:=1.19; +% jutstretch:=1.152; +% jutstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{stemstretch} +% The CMR scaling for lowercase stem widths wrt 17pt size. +% \begin{macrocode} +% stemstretch:=1.50; +% stemstretch:=1.31; +% stemstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{caprat} +% The scaling for `capitals' wrt `lowercase'. This is pretty much a guess +% (the ratio for CMR10 is 1.59). +% \begin{macrocode} + caprat:=1.5; % ratio of capital height to minuscule height +% \end{macrocode} +% +% \DescribeVariable{cap_jutstretch} +% The CMR scaling for uppercase serifs wrt 17pt size. +% \begin{macrocode} +% cap_jutstretch:=1.3; +% cap_jutstretch:=1.2; +% cap_jutstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{cap_stemstretch} +% The CMR scaling for uppercase stem width wrt 17pt size. +% \begin{macrocode} +% cap_stemstretch:=1.45; +% cap_stemstretch:=1.31; +% cap_stemstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{bfudge} +% Letter width scaling for bold font wrt normal font. +% \begin{macrocode} +% bfudge:=1.0; +% bfudge:=1.2; +% \end{macrocode} +% +% \DescribeVariable{szfudge} +% Width scaling wrt 17pt letter width. +% \begin{macrocode} +% szfudge:=1.18; +% szfudge:=1.0; +% 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} +% carol_height#:=108.5/36pt#; +% carol_height#:=155/36pt#; +% carol_height#:=268/36pt#; +% \end{macrocode} +% +% \DescribeVariable{vstretch} +% The height of this font wrt the Carolingian font. +% \begin{macrocode} + vstretch:=1.4; + +% \end{macrocode} +% +% \DescribeVariable{x_height} +% The x-height of lower case letters. Scaled from the Carolingian font. +% \begin{macrocode} + x_height#:=vstretch*carol_height#; +% \end{macrocode} +% +% \DescribeVariable{u} +% The unit width. The CMR values are used. +% \begin{macrocode} +% u#:=15.5/36pt#; +% u#:=20/36pt#; +% u#:=32.5/36pt#; +% u#:=17.9/36pt#; +% u#:=23/36pt#; +% 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 +% cap_serif_fit#:=3.5/36pt#; % extra sidebar near uppercase serifs +% cap_serif_fit#:=5/36pt#; % extra sidebar near uppercase serifs +% cap_serif_fit#:=8/36pt#; % extra sidebar near uppercase serifs +% letter_fit#:=0pt#; % extra space added to all sidebars +% letter_fit#:=0pt#; % extra space added to all sidebars +% 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} +% sb#:=1/2u#; % unit for side bearings +% sb#:=1/2u#; % unit for side bearings +% sb#:=1/2u#; % unit for side bearings + +% \end{macrocode} +% +% \DescribeVariable{cap_height} +% The height of capital letters. +% \begin{macrocode} +% cap_height#:=172.2/36pt#; % height of caps +% cap_height#:=246/36pt#; % height of caps +% 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} +% thickfudge:=1/5; +% thickfudge:=1/4; +% \end{macrocode} +% +% \DescribeVariable{thinfudge} +% The nib sharpness. +% \begin{macrocode} +thinfudge:=1/6; +% \end{macrocode} +% +% \DescribeVariable{thick} +% The maximum nib width. +% That is, the width of the thickest line that can be penned. +% \begin{macrocode} +thick#:=stemstretch*thickfudge*x_height#; % max pen breadth +% \end{macrocode} +% +% \DescribeVariable{thin} +% The nib thinness. +% That is, the width of the thinnest line that can be penned. +% \begin{macrocode} +thin#:=thinfudge*thick#; +% \end{macrocode} +% +% \DescribeVariable{pangle} +% The pen angle (in degrees). +% \begin{macrocode} +pangle:=0; % pen angle +% \end{macrocode} +% +% \DescribeVariable{ascratio} +% The height of lower case ascenders wrt |x_height|. +% \begin{macrocode} + ascratio:=5/3; +% \end{macrocode} +% +% \DescribeVariable{asc_height} +% The height of lower case ascenders. +% \begin{macrocode} + asc_height#:=ascratio*x_height#; +% \end{macrocode} +% +% \DescribeVariable{descratio} +% The depth of lower case descenders wrt |x_height|. +% \begin{macrocode} + descratio:=1.5/3; +% \end{macrocode} +% +% \DescribeVariable{desc_depth} +% The depth of lower case descenders. +% \begin{macrocode} + desc_depth#:=descratio*x_height#; +% \end{macrocode} +% +% \DescribeVariable{fig_height} +% The height of numerals. Make these midway between normal and capital +% letters. +% \begin{macrocode} + fig_height#:=(0.5[1,caprat])*x_height#; +% \end{macrocode} +% +% \DescribeVariable{fig_width} +% The width of numerals. All numerals are the same width (roughly, an `o'). +% \begin{macrocode} + fig_width#:=hstretch*(x_height#); +% \end{macrocode} +% +% \DescribeVariable{body_height} +% The height of the tallest character. +% \begin{macrocode} + body_height#:=caprat*asc_height#; +% \end{macrocode} +% +% \DescribeVariable{body_depth} +% The depth of the lowest character. +% \begin{macrocode} + body_depth#:=caprat*desc_depth#; +% \end{macrocode} +% +% \DescribeVariable{half_height} +% Half the normal letter height. +% \begin{macrocode} + half_height#:=1/2x_height#; % half the height of x height letters + +% \end{macrocode} +% +% \DescribeVariable{side} +% We might be using a square for the character design. +% \begin{macrocode} +side#:=x_height#; +% \end{macrocode} +% +% \DescribeVariable{rule_thickness} +% Thickness of rules (in math symbols). The CMR values are used. +% \begin{macrocode} +% rule_thickness#:=.34pt#; +% rule_thickness#:=.4pt#; +% rule_thickness#:=.6pt#; + +% \end{macrocode} +% +% \DescribeVariable{jutfudge} +% Controls the protrusion of serifs. +% \begin{macrocode} +%%%%jutfudge:= 3/4; +jutfudge:= 1/2; +% \end{macrocode} +% +% \DescribeVariable{jut} +% The lowercase serif protrusion. +% \begin{macrocode} +jut#:=jutstretch*jutfudge*thick#; +% \end{macrocode} +% +% \DescribeVariable{srad} +% |srad| with |0 < srad < 1| controls the serif radius. +% \begin{macrocode} +srad:=0.5; +% \end{macrocode} +% +% \DescribeVariable{trijut} +% The lowercase triangular serif protrusion. +% \begin{macrocode} +trijut#:=0.75jutstretch*thick#; +% \end{macrocode} +% +% \DescribeVariable{clubjut} +% The fractional protusion of the club base. +% \begin{macrocode} +clubjut:=5/12; +% \end{macrocode} +% +% \DescribeVariable{o} +% Amount of overshoot for curves (as in an `o'). Use CMR values. +% \begin{macrocode} +% o#:=5/36pt#; +% o#:=8/36pt#; +% o#:=10/36pt#; + +% \end{macrocode} +% +% \DescribeVariable{slant} +% |slant| is the amount the font slopes to the right. +% \begin{macrocode} +slant:=0; % tilt ratio $(\Delta x/\Delta y)$ + +% \end{macrocode} +% +% \DescribeVariable{monospace} +% We are generating a variable-width font. +% \begin{macrocode} +monospace:=false; % should all characters have the same width? + +% \end{macrocode} +% +% \DescribeVariable{dot_size} +% The size of (punctuation) dots. +% \begin{macrocode} +dot_size#:=5thin#; % size of dots +% \end{macrocode} +% +% \DescribeVariable{comma_width} +% The horizontal width of a comma. +% \begin{macrocode} +comma_width#:=2.5dot_size#; + +% \end{macrocode} +% +% Finally, call the driver file for the font. +% \begin{macrocode} +generate imajtitle %% switch to the driver file + +% \end{macrocode} +% +% The end of this code section. +% \begin{macrocode} +% +% \end{macrocode} +% +% +% \subsection{The driver file} +% +% The driver file sets up the font parameters and also contains +% the macros used in the definition of the characters. +% +% \begin{macrocode} +%<*mfd> +% This is IMAJTITLE.MF for the Insular Majuscule font. +% This makes a short font. +% This file also contains special macros universally needed in the +% font but either not in the cmbase.mf file or modifications of these. +% +% \end{macrocode} +% +% \begin{routine}{makebox} +% This is a new version of the \Lpack{cmbase.mf} |makebox| macro. +% Essentially, as we are only generating a single case font, we don't +% need all the horizontals for the CMR characters. +% +% \begin{macrocode} +% A new version of cmbase.mf makebox macro +def makebox(text rule) = + for y=0,half_height,cap_height,body_height,x_height,-desc_depth,-body_depth: + rule((l,y)t_,(r,y)t_); endfor % horizontals + for x=l,r: rule((x,-body_depth)t_,(x,body_height)t_); endfor % verticals + for x=u*(1+floor(1/u)) step u until r-1: + rule((x,-body_depth)t_,(x,body_height)t_); endfor % more verticals + if charic<>0: + rule((r+charic*pt,h.o_),(r+charic*pt,.5h.o_)); fi % italic correction +enddef; + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{proofpcbb} +% The macro |proofpcbb(S, xoff, yoff)| draws crosses at the corners of the +% square, and at the bottom and top midpoints, where the point |zS| is at +% position |(xoff,yoff)| in the square. +% \begin{macrocode} + +% A macro to delineate a letter's bounding square in proof mode. +% Point z$ is at (xoff,yoff) in the bounding square. +def proofpcbb(suffix $)(expr xoff, yoff) = +if proofing > 0: + x$bl = x$ - xoff; y$bl = y$ - yoff; % Bottom Left Hand Corner + z$br = (x$bl+side, y$bl); % BRHC + z$tr = (x$bl+side, y$bl+side); % TRHC + z$tl = (x$bl, y$bl+side); % TLHC + z$bc = 1/2[z$bl,z$br]; z$tc = 1/2[z$tl,z$tr]; % horizontal mid points + pair hc, vc; + hc = (2u,0); vc = (0,2u); + pickup pensquare scaled 2; + for s = z$bl, z$br, z$tr, z$tl, z$bc, z$tc: + draw s-hc--s+hc; + draw s-vc--s+vc; + endfor +fi +enddef; + +% \end{macrocode} +% \end{routine} +% +% +% +% \begin{routine}{inslrmaj_font_setup} +% This macro contains the set up for the \thisfont{} fonts. +% \begin{macrocode} + +def inslrmaj_font_setup= % contains special stuff for inslrmaj fonts + define_pixels(side,half_height,carol_height,comma_width); + define_pixels(u,dot_size,letter_size,cap_height,width_adj,serif_fit, + cap_serif_fit,jut,cap_jut,trijut); + define_pixels(fig_width); + define_whole_pixels(letter_fit,sb); + define_whole_vertical_pixels(body_height,asc_height,cap_height,x_height, + desc_depth,body_depth,fig_height); + define_corrected_pixels(o); + define_blacker_pixels(thick,thin); + let adjust_fit = normal_adjust_fit; +% \end{macrocode} +% \DescribeVariable{stylus} +% The pen for drawing the thinnest lines is |stylus|. +% \begin{macrocode} + pickup pencircle scaled thin; + stylus:=savepen; +% \end{macrocode} +% \DescribeVariable{thickstylus} +% The pen for drawing lines a bit thicker than the thinnest is |thickstylus|. +% \begin{macrocode} + pickup pencircle scaled (1.5thin); + thickstylus:=savepen; +% \end{macrocode} +% \DescribeVariable{quill} +% The normal calligraphic pen is |quill|. +% \begin{macrocode} + pickup pencircle xscaled thick yscaled thin rotated pangle; + quill:=savepen; + numeric pcshiftx#; % x value of LHS of box wrt origin of char box + define_pixels(pcshiftx); + numeric sqxside#; % x size of the square + numeric sqyside#; % y size of the square + define_pixels(sqxside,sqyside); + +enddef; % end of inslrmaj_font_setup + +% \end{macrocode} +% \end{routine} +% +% +% \DescribeVariable{ductus} +% A boolean to control drawing the ductus (TRUE) or the full letter (FALSE). +% \begin{macrocode} +boolean ductus; +ductus:=false; +% \end{macrocode} +% +% \DescribeVariable{qhor} +% \DescribeVariable{qvert} +% The cosine and sine of the pen angle. +% \begin{macrocode} +numeric qhor, qvert; +qhor:=cosd(pangle); qvert:=sind(pangle); +% \end{macrocode} +% +% \DescribeVariable{pdir} +% The vector corresponding to the pen angle. +% \begin{macrocode} +pair pdir; pdir=dir(pangle); +% \end{macrocode} +% +% \DescribeVariable{ppdir} +% The vector that is perpendicular (anticlockwise) to the pen angle. +% \begin{macrocode} +pair ppdir; ppdir=dir(pangle+90); +% \end{macrocode} +% +% \begin{routine}{draw_serif} +% A macro to draw a serif. |draw_serif(1,2,f)| uses the current pen to +% draw a serif of extent |jut| at |z1| to the left of the line from |z2| +% to |z1|. The +% radius is controlled by |f|, where $0y$$: + top_serif := true; + z$c=z$b shifted (-bjut*pdir); + else: + top_serif:=false; + z$c=z$b shifted (bjut*pdir); + fi +% \end{macrocode} +% Draw the parts, and finish off. +% \begin{macrocode} + if top_serif: + draw z$c--z$b{pdir}..{z$$-z$}z$a; % the serif + else: + draw z$c--z$b{-pdir}..{z$$-z$}z$a; + fi + labels($a,$b,$c); +enddef; % end of draw_serif + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{draw_triserif} +% A macro to draw a triangular top left serif. +% |draw_triserif(1,tj)| draws a serif at |z1| with its leftmost x +% value at |x1-tj|, where it is assumed that the +% top point on the stem is at |z1| and the stem was drawn with |quill|. +% \begin{macrocode} + +def draw_triserif(suffix $)(expr tj)= + pen oldpen; oldpen:=currentpen; + pickup quill; + x$ts1'=lft x$; y$ts1'=bot y$; + pickup stylus; + lft x$ts1=x$ts1'; bot y$ts1=y$ts1'; + x$ts2=x$ts1-tj; z$ts2=whatever[z$,z$ts1]; + x$ts3=x$ts1; y$ts3=y$ts2-tj; + pickup stylus; +%% filldraw z$ts1--z$ts2--z$ts3--cycle; + filldraw z$--z$ts2--z$ts3--cycle; + pickup oldpen; + labels($ts1,$ts2,$ts3); +enddef; % end of draw_triserif + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{draw_istem} +% A macro to draw the shape of an i. |draw_istem(1,2,f)| draws a stem whose +% top is at |z1| and bottom at |z2|. It draws with the current pen and the serifs +% are of extent |jut|. There is a top left and bottom right serif. +% The serif radius is controlled by |f|, with $0 0) or + (abs sl < tantol) or (abs sm < tantol) or (abs sr < tantol); + if wtest: + if (stpsize < tantol): + z$tan=(0,0); + errmessage("No tangent; path too short"); + else: + if (sl*sr > 0): + z$tan=(0,0); + errmessage("No tangent; end products have the same sign"); + else: + if (abs sl < tantol): + z$tan=ptl; + else: + if (abs sm < tantol): + z$tan=ptm; + else: + z$tan=ptr; + fi + fi + fi + fi + else: +% \end{macrocode} +% There should be a tangent and we iterate to find it, using +% bisection. If there is one to be found it will be at the +% current middle point. The tangent point will be somewhere +% between the two points that lead to opposite signed scalar +% products. +% \begin{macrocode} + forever: + if (sl*sm < 0): % opposite signs, look between pl & pm + pr:=pm; pm:=0.5(pr+pl); + vecpr := vecpm; veclr := veclm; sr:=sm; + else: + pl:=pm; pm:=0.5(pr+pl); + vecpl:=vecpm; vecll:=veclm; sl:=sm; + fi + stpsize:=pr-pl; + ptm := point pm of pth; + veclm := unitvector (z$-ptm); + vecpm := unitvector (direction pm of pth); + sm := veclm scalarprod vecpm; +% \end{macrocode} +% We stop the iteration if the step size is too small or the +% middle point is the tangent point. In either case, the +% middle point is the best guess that can be made. +% \begin{macrocode} + wtest := (stpsize < tantol) or (abs sm < tantol); + if wtest: + if (abs sm < tantol): + z$tan = ptm; + else: + z$tan = ptm; +%%%%%% errmessage("Warning: tangent approximated"); + fi + fi + exitif wtest; + endfor + fi +enddef; + +% \end{macrocode} +% \end{routine} +% +% +% Set the mode and font setup. +% \begin{macrocode} + +font_coding_scheme:="ASCII minuscules and punctuation"; +mode_setup; +inslrmaj_font_setup; + +% \end{macrocode} +% +% +% We generate letters, together with some punctuation and +% analphabetics. +% \begin{macrocode} + +input imajl; % lower case +input imaju; % capitals +input imajpunct; % punctuation +input imajlig; % the several dashes +input imajdig; % arabic digits + +% \end{macrocode} +% +% Set up the spacings, stretches and shrinks. +% +% \begin{macrocode} + +font_slant slant; font_x_height x_height#; +if monospace: + font_normal_space vstretch*9u#; % no stretching or shrinking + font_quad vstretch*18u#; + font_extra_space vstretch*9u#; +else: + font_normal_space vstretch*6u#+2letter_fit#; + font_normal_stretch vstretch*3u#; font_normal_shrink vstretch*2u#; + font_quad vstretch*18u#+4letter_fit#; + font_extra_space vstretch*2u#; + +% \end{macrocode} +% +% Finally, do the ligtables. +% +% \begin{macrocode} + k#:=-.5u#; kk#:=-1.5u#; kkk#:=-2u#; % three degrees of kerning + kks#:=-4u#; kkx#:=-1.5u#; kkj#:=-2u#; kkr#:=-5u#; kkrs#:=-2u#; kkrl#:=-8u#; + ligtable "s": + "a" kern kks#, "A" kern kks#, + "c" kern kks#, "C" kern kks#, + "d" kern kks#, "D" kern kks#, + "e" kern kks#, "E" kern kks#, + "f" kern kks#, "F" kern kks#, + "g" kern kks#, "G" kern kks#, + "i" kern kks#, "I" kern kks#, + "j" kern kks#, "J" kern kks#, + "k" kern kks#, "K" kern kks#, + "m" kern kks#, "M" kern kks#, + "n" kern kks#, "N" kern kks#, + "o" kern kks#, "O" kern kks#, + "p" kern kks#, "P" kern kks#, + "q" kern kks#, "Q" kern kks#, + "r" kern kks#, "R" kern kks#, + "t" kern kks#, "T" kern kks#, + "u" kern kks#, "U" kern kks#, + "v" kern kks#, "V" kern kks#, + "w" kern kks#, "W" kern kks#, + "x" kern kks#, "X" kern kks#, + "y" kern kks#, "Y" kern kks#, + "z" kern kks#, "Z" kern kks#; + + ligtable "S": + "a" kern kks#, "A" kern kks#, + "c" kern kks#, "C" kern kks#, + "d" kern kks#, "D" kern kks#, + "e" kern kks#, "E" kern kks#, + "f" kern kks#, "F" kern kks#, + "g" kern kks#, "G" kern kks#, + "i" kern kks#, "I" kern kks#, + "j" kern kks#, "J" kern kks#, + "k" kern kks#, "K" kern kks#, + "m" kern kks#, "M" kern kks#, + "n" kern kks#, "N" kern kks#, + "o" kern kks#, "O" kern kks#, + "p" kern kks#, "P" kern kks#, + "q" kern kks#, "Q" kern kks#, + "r" kern kks#, "R" kern kks#, + "t" kern kks#, "T" kern kks#, + "u" kern kks#, "U" kern kks#, + "v" kern kks#, "V" kern kks#, + "w" kern kks#, "W" kern kks#, + "x" kern kks#, "X" kern kks#, + "y" kern kks#, "Y" kern kks#, + "z" kern kks#, "Z" kern kks#; + + ligtable "x": + "a" kern kkx#, "A" kern kkx#, + "b" kern kkx#, "B" kern kkx#, + "c" kern kkx#, "C" kern kkx#, + "d" kern kkx#, "D" kern kkx#, + "e" kern kkx#, "E" kern kkx#, + "g" kern kkx#, "G" kern kkx#, + "j" kern kkx#, "J" kern kkx#, + "l" kern kkx#, "L" kern kkx#, + "o" kern kkx#, "O" kern kkx#, + "q" kern kkx#, "Q" kern kkx#, + "t" kern kkx#, "T" kern kkx#, + "u" kern kkx#, "U" kern kkx#, + "v" kern kkx#, "V" kern kkx#, + "w" kern kkx#, "W" kern kkx#, + "y" kern kkx#, "Y" kern kkx#; + + ligtable "X": + "a" kern kkx#, "A" kern kkx#, + "b" kern kkx#, "B" kern kkx#, + "c" kern kkx#, "C" kern kkx#, + "d" kern kkx#, "D" kern kkx#, + "e" kern kkx#, "E" kern kkx#, + "g" kern kkx#, "G" kern kkx#, + "j" kern kkx#, "J" kern kkx#, + "l" kern kkx#, "L" kern kkx#, + "o" kern kkx#, "O" kern kkx#, + "q" kern kkx#, "Q" kern kkx#, + "t" kern kkx#, "T" kern kkx#, + "u" kern kkx#, "U" kern kkx#, + "v" kern kkx#, "V" kern kkx#, + "w" kern kkx#, "W" kern kkx#, + "y" kern kkx#, "Y" kern kkx#; + + ligtable "a": "A": + "b": "B": + "c": "C": + "d": "D": + "e": "E": + "h": "H": + "i": "I": + "k": "K": + "l": "L": + "m": "M": + "n": "N": + "o": "O": + "p": "P": + "t": "T": + "u": "U": + "v": "V": + "w": "W": + "z": "Z": + "j" kern kkj#, "J" kern kkj#; + + ligtable "r": + "a" kern kkr#, "A" kern kkr#, + "b" kern kkr#, "B" kern kkr#, + "c" kern kkr#, "C" kern kkr#, + "d" kern kkr#, "D" kern kkr#, + "e" kern kkr#, "E" kern kkr#, + "f" kern kkrs#, "F" kern kkrs#, + "g" kern kkrs#, "G" kern kkrs#, + "h" kern kkr#, "H" kern kkr#, + "i" kern kkr#, "I" kern kkr#, + "j" kern kkj#, "J" kern kkj#, + "k" kern kkrs#, "K" kern kkrs#, + "l" kern kkr#, "L" kern kkr#, + "m" kern kkr#, "M" kern kkr#, + "n" kern kkrs#, "N" kern kkrs#, + "o" kern kkr#, "O" kern kkr#, + "p" kern kkrs#, "P" kern kkrs#, + "q" kern kkr#, "Q" kern kkr#, + "r" kern kkrs#, "R" kern kkrs#, + "s" kern kkr#, "S" kern kkr#, + "t" kern kkr#, "T" kern kkr#, + "u" kern kkr#, "U" kern kkr#, + "v" kern kkr#, "V" kern kkr#, + "w" kern kkr#, "W" kern kkr#, + "x" kern kkx#, "X" kern kkx#, + "y" kern kkr#, "Y" kern kkr#, + "z" kern kkr#, "Z" kern kkr#; + + ligtable "R": + "a" kern kkr#, "A" kern kkr#, + "b" kern kkr#, "B" kern kkr#, + "c" kern kkr#, "C" kern kkr#, + "d" kern kkr#, "D" kern kkr#, + "e" kern kkr#, "E" kern kkr#, + "f" kern kkrs#, "F" kern kkrs#, + "g" kern kkrs#, "G" kern kkrs#, + "h" kern kkr#, "H" kern kkr#, + "i" kern kkr#, "I" kern kkr#, + "j" kern kkj#, "J" kern kkj#, + "k" kern kkrs#, "K" kern kkrs#, + "l" kern kkr#, "L" kern kkr#, + "m" kern kkr#, "M" kern kkr#, + "n" kern kkrs#, "N" kern kkrs#, + "o" kern kkr#, "O" kern kkr#, + "p" kern kkrs#, "P" kern kkrs#, + "q" kern kkr#, "Q" kern kkr#, + "r" kern kkrs#, "R" kern kkrs#, + "s" kern kkr#, "S" kern kkr#, + "t" kern kkr#, "T" kern kkr#, + "u" kern kkr#, "U" kern kkr#, + "v" kern kkr#, "V" kern kkr#, + "w" kern kkr#, "W" kern kkr#, + "x" kern kkx#, "X" kern kkx#, + "y" kern kkr#, "Y" kern kkr#, + "z" kern kkr#, "Z" kern kkr#; + + +fi + +bye. + +% +% \end{macrocode} +% +% \subsection{The code for normal letters} +% +% The following code is for the lower case characters. +% +% \begin{macrocode} +%<*min> +% IMAJL.MF Program file for Insular Majuscule lower case +% + +% \end{macrocode} +% +% +% \begin{routine}{a} +% The letter `a'. +% \begin{macrocode} +cmchar "IMAJ letter a"; +beginchar("a", 2sb#+hstretch*(5/3x_height#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pickup quill; +%% left bowl +n1 := w-2pcshiftx; % actual letter width +n2 := 7/10n1; % width of left bowl +z1=(pcshiftx,0); +obowl(1, n2, h); +pth1:=obouter; pth2:=obinner; +pth10:=obfirst; pth20:=obsecond; +%% right bowl +n3:=x1+n2-16/12thick; % leftmost point of "stem" +n4:=2(n1-n3); % total width of right stem bowl +z2=(n3,0); +offsetbowl(2, n4, h, 6/12, 1/2); +pth3:=obouter; pth4:=obinner; +pth30:=obfirst; pth40:=obsecond; +%% intersect left bowl with outer of right bowl +z1tout = (subpath (0,1) of pth1) intersectionpoint (subpath (4,2) of pth3); +z1tinn = (subpath (0,1) of pth2) intersectionpoint (subpath (4,2) of pth3); +z1lout = (subpath (1,2) of pth1) intersectionpoint (subpath (4,2) of pth3); +z1linn = (subpath (1,2) of pth2) intersectionpoint (subpath (4,2) of pth3); + +%%ductus:=true; +if ductus: + pickup stylus; + % draw the control paths + draw pth10; draw pth20; + draw pth30; draw pth40; +else: + %% draw left bowl + fill z1lout..z1minro{-pdir}..z1maxlo{ppdir}..z1minlo{pdir}..z1tout-- + z1tinn..z1minli{-pdir}..z1maxli{-ppdir}..z1minri{pdir}..z1linn-- + cycle; + %% draw right stem/bowl + fill z2minro{-pdir}..z2maxlo{ppdir}..{pdir}z2minlo-- + z2minli{-pdir}..z2maxli{-ppdir}..{pdir}z2minri--cycle; +fi +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,100); +endchar; % end "a" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{b} +% The letter `b'. +% \begin{macrocode} +cmchar "IMAJ letter b"; +beginchar("b", 2sb#+hstretch*(7/6x_height#), + asc_height#, 0); +adjust_fit(0,0); +numeric n[]; +pcshiftx := sb; +pickup quill; +n1:=w-2pcshiftx; % actual letter width +n2:=h/ascratio; % top of bowl +z1=(pcshiftx, -o); +obowl(1, n1, n2+o); +%% draw bowl +fill obouter; unfill obinner; +%% top of stem +x2=x1wt+1/3n1; top y2=h; +tangentpoint(2, subpath (3,4) of obsecond); +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z2tan--z2; +draw_triserif(2,trijut); +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,100); +endchar; % end "b" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{c} +% The letter `c'. +% \begin{macrocode} +cmchar "IMAJ letter c"; +beginchar("c", 2sb#+hstretch*(5/6x_height#), + x_height#, 0); +adjust_fit(0,0); +numeric n[]; +pcshiftx := sb; +pickup quill; +n1:=w-2pcshiftx; % actual letter width +n2:=6/5w-2pcshiftx; % width of full bowl +z1=(pcshiftx,0); +obowl(1, n2, h); +z3=(x1+n1, h); % top RH corner +z4=(x1obc,1/6h); z5=(3/2w,y4); % for horizontal line +%% top intersection points +z10i = (z1obc--z3) intersectionpoint obinner; +z10o = (z1obc--z3) intersectionpoint obouter; +%% bottom intersection points +z20i = (z4--z5) intersectionpoint obinner; +z20o = (z4--z5) intersectionpoint obouter; +%%ductus:=true; +if ductus: + pickup stylus; +fi +fill z20o..z1minro{-pdir}..z1maxlo{ppdir}..z1minlo{pdir}..z10o-- + z10i..z1minli{-pdir}..z1maxli{-ppdir}..z1minri{pdir}..z20i-- + cycle; +ductus:=false; +penlabels(1,2,3,4,5,6,16,17,18,100); +endchar; % end "c" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{d} +% The letter `d'. There is a choice between an upright and a low d. I have done +% the low d. +% \begin{macrocode} +cmchar "IMAJ letter d"; +beginchar("d", 2sb#+hstretch*(x_height#+1/2thick#), + x_height#, 0); +adjust_fit(0,0); +numeric n[]; +pcshiftx := sb; +pickup quill; +%% bowl +n1 := w-2pcshiftx; % actual letter width +n2 := n1-1/2thick; % width of bowl +n3 := h; % top of bowl +z1=(w-pcshiftx-n2, 0); +obowl(1, n2, n3); +%% top bar +lft x3=pcshiftx; y3=h; +z3i=(pcshiftx, y3-1/2thin); z3o=(x3i,y3i+thin); +z2i=(x1nh,y3i); +z2o=(x2i,y3o); +%%ductus:=true; +if ductus: + pickup stylus; +fi +fill z1minlo{-pdir}..z1maxlo{-ppdir}..z1minro{pdir}..z1maxro{ppdir}..{left}z2o-- + z3o--z3i-- + z2i{right}..z1maxri{-ppdir}..z1minri{-pdir}..z1maxli{ppdir}..{pdir}z1minli-- + cycle; +draw_utriangle(3, thick); +ductus:=false; +penlabels(0,1,2,3,4,5,6,7,8,100); +endchar; % end "d" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{e} +% The letter `e'. +% \begin{macrocode} +cmchar "IMAJ letter e"; +beginchar("e", sb#+hstretch*(x_height#+3/2thick#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +n1 := w-pcshiftx; % actual letter width +n2 := n1-3/2thick; % width of bowl +z1=(pcshiftx,0); +obowl(1, n2, h); +%% for crossbar +z2=(0,2/3h); rt x3=w; y3=y2; z3'=(x1obc,y2); +z4 = (z2--z3') intersectionpoint subpath (3,4) of obsecond; +z10tout = (z3'--z3) intersectionpoint subpath (0,3) of obouter; +z10tinn = (z3'--z3) intersectionpoint subpath (0,3) of obinner; +%% bottom cutoff +z5=(x1obc,1/6h); z6=(w,y5); +z20bout = (z5--z6) intersectionpoint subpath (0,3) of obouter; +z20binn = (z5--z6) intersectionpoint subpath (0,3) of obinner; +%%ductus:=true; +if ductus: + pickup stylus; +fi +fill z20bout..z1minro{-pdir}..z1maxlo{ppdir}..z1minlo{pdir}..z10tout-- + z10tinn..z1minli{-pdir}..z1maxli{-ppdir}..z1minri{pdir}..z20binn-- + cycle; +draw z4--z3; % crossbar & decoration +draw_triangle(3,thick); +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,100); +endchar; % end "e" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{f} +% The letter `f'. +% \begin{macrocode} +cmchar "IMAJ letter f"; +beginchar("f", 2sb#+hstretch*(x_height#+trijut#), + (x_height#), desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +%% stem +lft x1=lft x2=pcshiftx+trijut; +top y1=h; bot y2=-d; +%% bottom bar +z4=(rt x1,-thin); rt x6=w-pcshiftx; y6=y4+2thin; z5=1/2[z4,z6]; +%% top bar +z7=(rt x1, bot y1); +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_triserif(1,trijut); +draw_clubbase(1, 2, 1/3, clubjut, clubjut); +draw z4{dir(45)}..z5{right}..z6{dir(45)}; % bottom bar +draw_flick(7, 2thin, thin, (w-pcshiftx-x7+1/2thick)); % top bar +ductus:=false; +penlabels(1,2,3,4,5,6,7,100); +endchar; % end "f" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{g} +% The letter `g'. +% \begin{macrocode} +cmchar "IMAJ letter g"; +beginchar("g", 2sb#+hstretch*(5/3x_height#), + x_height#, desc_depth#); +adjust_fit(0,0); +path pth[]; +pair vec[]; +pcshiftx := sb; +pickup quill; +%% top bar +lft x1=pcshiftx; y1=h; rt x2=w-pcshiftx; y2=h; +%% curves +z3=2/5[z1,z2]; +x5=4/5[x1,x2]; y5=-1/2d; +x4=(x3-thick); y4=1/2[y5,y3]; +x7=1/2[x1,x4]; y7=y5; +x6=2/3[x7,x5]; bot y6=-d; +pth1 := z3..z4{down}..z5; +pth2 := z5--z6{left}..z7; +%% diagonal to close bottom bowl +vec1 := direction 2 of pth2; +vec2 := (z5-z6); +z7'=(lft x7, bot y7); z7''=(rt x7, y7); +pickup thickstylus; +lft x8 = x7'; bot y8 = y7'; +z9' = z8 shifted 2vec2; +z9 = (z8--z9') intersectionpoint pth1; +z7''' = z7'' shifted 2vec1; +z8' = whatever[z7'',z7'''] = whatever[z8,z9']; +%%ductus:=true; +if ductus: + pickup stylus; + draw z1--z2; % top bar + draw pth1; draw pth2; % curves + draw rt z8--z9; % diagonal +else: + pickup quill; + draw z1--z2; % top bar + draw_triangle(2,thick); + draw_utriangle(1,thick); + draw pth1; draw pth2; % curves + pickup thickstylus; + draw rt z8--z9; % diagonal + fill z7''--z8'--z8--cycle; +fi +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,100); +endchar; % end "g" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{h} +% The letter `h'. +% \begin{macrocode} +cmchar "IMAJ letter h"; +beginchar("h", 2sb#+hstretch*(x_height#+trijut#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +numeric n[]; +%% stem +lft x1=lft x2=pcshiftx+trijut; +top y1=h; bot y2=0; +%% bowl +rt x3 = lft x1; y3=0; +n1 := w-pcshiftx-x3; % bowl width +n2 := h/ascratio; % bowl height +obowl(3, n1, n2); +z1'=(rt x1, y1); z2'=(x1',y2); %% right hand side of stem +z10tout = (z1'--z2') intersectionpoint subpath (3,4) of obouter; +z10tinn = (z1'--z2') intersectionpoint subpath (3,4) of obinner; +z10toth = (x1, y10tinn); % avoids 180 turn in path +z6 = directionpoint down of obsecond; % top of right leg +z6i=(lft x6, bot y6); z6o=(rt x6, bot y6); +z8=(x6,0); +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_triserif(1,trijut); +draw_clubbase(1, 2, 1/3, clubjut, clubjut); +draw_tstem(6,8,srad); % right leg +draw_clubbase(6, 8, 1/3, 0, 1/2clubjut); +fill z6i{up}..z3minli{-pdir}..z10tinn--z10toth-- % top of bowl + z10tout..z3minlo{pdir}..{down}z6o--cycle; +ductus:=false; +penlabels(1,2,3,4,5,6,100); +endchar; % end "h" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{i} +% The letter `i'. +% \begin{macrocode} +cmchar "IMAJ letter i"; +beginchar("i", 2sb#+hstretch*(thick#+trijut#+jut#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +lft x1=lft x2=pcshiftx+trijut; +top y1=h; bot y2=0; +%%ductus:=true; +draw_tstem(1,2,srad); +draw_triserif(1,trijut); +draw_clubbase(1, 2, 1/3, clubjut, clubjut); +ductus:=false; +penlabels(1,2,100); +endchar; % end "i" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{j} +% The letter `j'. This letter was not in the script, it being a later invention. +% \begin{macrocode} +cmchar "IMAJ letter j"; +beginchar("j", sb#+hstretch*(2/3x_height#), + x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% stem +rt x1 = w-pcshiftx; top y1 = h; +x2=x1; y2=-1/2d; +%% bottom hook +lft x3 = 0; bot y3 = -d; +%% triangle +n1 := thick; % side length +z6=(lft x3, bot y3); +x7=x6+n1; z7=whatever[z6,z2]; +z8=1/2[z6,z7]; +z9=(x8, y8+0.9n1); +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2; % stem +draw_triserif(1,trijut); +draw z2--z3; % hook +fill z6--z7--z9--cycle; % triangle +ductus:=false; +penlabels(1,2,3,100); +endchar; % end "j" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{k} +% The letter `k'. +% \begin{macrocode} +cmchar "IMAJ letter k"; +beginchar("k", 2sb#+hstretch*(x_height#+trijut#), + x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +%% stem +lft x1=lft x2=pcshiftx+trijut; +top y1=h; bot y2=-d; +%% top arm +z3=(x1,5/6h); +rt x5=w-pcshiftx; y5=2/3h; +x4=1/2[x3,x5]; top y4=h; +%% lower arm +x7=x5; bot y7=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_triserif(1,trijut); +draw_clubbase(1,2,1/3, clubjut, clubjut); +draw z3..z4{right}..z5; % upper arm +draw z3..{right}z7; % lower arm +ductus:=false; +penlabels(1,2,3,4,5,100); +endchar; % end "k" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{l} +% The letter `l'. +% \begin{macrocode} +cmchar "IMAJ letter l"; +beginchar("l", 2sb#+hstretch*(7/6x_height#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +lft x2=pcshiftx; y2=1/5h; +x1=x2+trijut; top y1=h; +rt x4=w-pcshiftx; y4=1/5h; +x3=1/2[x2,x4]; bot y3=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1{down}..z2..z3{right}..z4; +draw_triserif(1,trijut); +ductus:=false; +penlabels(1,2,3,4,100); +endchar; % end "l" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{m} +% The letter `m'. +% \begin{macrocode} +cmchar "IMAJ letter m"; +beginchar("m", 2sb#+hstretch*(5/3x_height#+trijut#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pickup quill; +%% left stem +lft x1=pcshiftx+trijut; top y1=h; +x2=x1; bot y2=0; +z1'=(rt x1, y1+h); z2'=(rt x2, y2-h); +%% right stem +rt x5=w-pcshiftx; y5=y1; +z6=(x5,0); +%% middle stem +z3=1/2[z1,z5]; z4=1/2[z2,z6]; +z3'=(rt x3, y3); z4'=(rt x4, y4); +n1 := x4-x2+3/2thick; % width of bowl +n2 := 2/3h; % height of bowl +%% left bowl +z7=(rt x4 - n1, h-n2); +obowl(7, n1, n2); +pth1 := obouter; pth2 := obinner; pth3 := obsecond; +z17tout = (z1'--z2') intersectionpoint subpath (3,4) of obouter; +z17tinn = (z1'--z2') intersectionpoint subpath (3,4) of obinner; +z17toth = (x2, y17tinn); +%% right bowl +z8=(rt x6 - n1, y7); +obowl(8, n1, n2); +pth5 := obouter; pth6 := obinner; pth7 := obsecond; +z18tout = pth5 intersectionpoint subpath (0,1) of pth1; +z18tinn = pth6 intersectionpoint subpath (0,1) of pth1; +z13 = directionpoint down of pth3; +z15 = directionpoint down of pth7; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % left half +draw_triserif(1,trijut); +draw_clubbase(1, 2, 1/3, clubjut, clubjut); +fill z17tout..z7minlo{pdir}..{down}(rt x13, y13)-- + (lft x13, y13){up}..z7minli{-pdir}..z17tinn--z17toth--cycle; +draw_tstem(13,4,srad); % right half +fill z18tout..z8minlo{pdir}..{down}(rt x15, y15)-- + (lft x15, y15){up}..z8minli{-pdir}..z18tinn--cycle; +draw_tstem(15,6,srad); +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,14,100); +endchar; % end "m" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{n} +% The letter `n'. This could be like a capital `N' or a lower-case `n'. +% I have chosen to do the first form. +% \begin{macrocode} +cmchar "IMAJ letter n"; +beginchar("n", 2sb#+hstretch*(7/6x_height#+trijut#), + x_height#, 1/2desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +%% left stem +lft x1=pcshiftx+trijut; top y1=h; +x2=x1; bot y2=-d; +%% right stem +rt x3=w-pcshiftx; y3=y1; +z4=(x3,0); +%% bar +z5=(x1,1/3h); z6=(x4,1/6h); +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % left stem +draw_triserif(1,trijut); +draw_clubbase(1, 2, 1/3, clubjut, clubjut); +draw_tstem(3,4,srad); % right stem +draw_clubbase(3, 4, 1/3, clubjut, clubjut); +draw z5--z6; % bar +ductus:=false; +penlabels(1,2,3,4,5,6,100); +endchar; % end "n" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{o} +% The letter `o'. +% \begin{macrocode} +cmchar "IMAJ letter o"; +beginchar("o", 2sb#+hstretch*(7/6x_height#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +lft x1=pcshiftx; rt x3=w-pcshiftx; y1=y3=h/2; +x2=x4=w/2; top y2=h+o; bot y4=-o; +%%ductus:=true; +if ductus: + pickup stylus; +fi +%%%draw z1..z2..z3..z4..cycle; +z5=(pcshiftx,-o); +obowl(5, w-2pcshiftx, h+2o); +fill obouter; unfill obinner; +ductus:=false; +penlabels(1,2,3,4,5,100); +endchar; % end "o" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{p} +% The letter `p'. +% \begin{macrocode} +cmchar "IMAJ letter p"; +beginchar("p", 2sb#+hstretch*(8/6x_height#+trijut#), + x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% stem +lft x1=lft x2=pcshiftx+trijut; +top y1=1/3h; bot y2=-d; +n1 := w - pcshiftx - lft x1; % width of bowl +n2 := h+1/4d; % height of bowl +z3=(lft x1, -1/4d); +obowl(3, n1, n2); +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_triserif(1,trijut); +draw_clubbase(1, 2, 1/3, clubjut, 0); +fill lft z1{up}..z3minlo{pdir}..z3maxro{-ppdir}..{-pdir}z3minro-- + z3minri{pdir}..z3maxri{ppdir}..z3minli{-pdir}..{down}rt z1-- + cycle; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,100); +endchar; % end "p" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{q} +% The letter `q'. +% \begin{macrocode} +cmchar "IMAJ letter q"; +beginchar("q", 2sb#+hstretch*(x_height#+1/2trijut#), + x_height#, 1/2desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% right stem +rt x1=w-pcshiftx-1/2trijut; top y1=h; +x2=x1; bot y2=-d; +z3=(pcshiftx,0); +n1 := w; % width of bowl +n2 := h; % height of bowl +obowl(3, n1, n2); +z10o = (rt z1--rt z2) intersectionpoint subpath (0,1) of obouter; +z10i = (lft z1--lft z2) intersectionpoint subpath (0,1) of obinner; +z20o = (rt z1--rt z2) intersectionpoint subpath (1,2) of obouter; +z20i = (lft z1--lft z2) intersectionpoint subpath (1,2) of obinner; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_triserif(1,trijut); +draw_clubbase(1, 2, 1/3, 0, clubjut); +fill z10o..z3minlo{-pdir}..z3maxlo{-ppdir}..z3minro{right}..z20o-- + z20i..z3minri{-pdir}..z3maxli{ppdir}..z3minli{pdir}..z10i-- + cycle; +ductus:=false; +penlabels(0,1,2,3,4,5,6,7,8,100); +endchar; % end "q" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{r} +% The letter `r'. +% \begin{macrocode} +cmchar "IMAJ letter r"; +beginchar("r", sb#+hstretch*(11/6x_height#+trijut#), + x_height#, 1/2desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% stem +lft x1=lft x2=pcshiftx+trijut; top y1=h; bot y2=-d; +n1 := w-pcshiftx; % width of bowl +n2 := 5/6h; % height of bowl +z3=(x1-1/2n1, h-n2); +obowl(3, n1, n2); +z10o=(x1,h); z10i=(x1, y10o-thin); +z20o=(x1,y3); z20i=(x20o, y20o+thin); +%% arm +x4=x1; bot y4=y3; +x5=x3maxro; top y5=0; +%%rt x6=w; y6=y4; +rt x6=w; y6=y2; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_triserif(1,trijut); +draw_clubbase(1, 2, 1/3, clubjut, 0); +fill z10o{right}..z3maxro{-ppdir}..{left}z20o-- + z20i{right}..z3maxri{ppdir}..{left}z10i--cycle; +%%draw z4{right}..z5{right}..{right}z6; % arm +draw z4{right}..{right}z6; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,100); +endchar; % end "r" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{s} +% The letter `s'. This is a `long' S. +% \begin{macrocode} +cmchar "IMAJ letter s"; +beginchar("s", 2sb#+hstretch*(x_height#+trijut#), + asc_height#, 0); +adjust_fit(0,0); +numeric n[]; +pcshiftx := sb; +pickup quill; +%% stem +lft x1=lft x2=pcshiftx+trijut; top y1=h/ascratio; bot y2=0; +n1 := w; % width of bowl +n2 := 2(h-y1); % height of bowl +z3=(lft x1, y1-1/2n2); +obowl(3, n1, n2); +z4=(2w,2h); +z10o = (z3--z4) intersectionpoint subpath (0,1) of obouter; +z10i = (z3--z4) intersectionpoint subpath (0,1) of obinner; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_triserif(1,trijut); +draw_clubbase(1, 2, 1/3, clubjut, clubjut); +fill rt z1{up}..z3minli{pdir}..z10i-- + z10o..z3minlo{-pdir}..{down}lft z1--cycle; +ductus:=false; +penlabels(1,2,3,4,5,6,7,11,17,26,27,28,100); +endchar; % end "s" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{t} +% The letter `t'. +% \begin{macrocode} +cmchar "IMAJ letter t"; +beginchar("t", 2sb#+hstretch*(4/3x_height#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% bar +lft x1 = pcshiftx; y1=h; rt x2=w-pcshiftx; y2=y1; +n1 := w; % width of bowl +n2 := h; % height of bowl +z3=(pcshiftx+thick,0); +obowl(3, n1, n2); +z5=(x1+w, 0); +z20o = (z1--z5) intersectionpoint subpath (1,2) of obouter; +z20i = (z1--z5) intersectionpoint subpath (1,2) of obinner; +z10o = (x3minlo, top y1); +z10i = (x3minlo, bot y1); +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2; % bar +draw_utriangle(1, thick); +draw_triangle(2, thick); +fill z10o{left}..z3maxlo{-ppdir}..z3minro{pdir}..z20o-- + z20i..z3minri{-pdir}..z3maxli{ppdir}..z10i{right}--cycle; +ductus:=false; +penlabels(1,2,3,4,5,6,11,12,100); +endchar; % end "t" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{u} +% The letter `u'. +% \begin{macrocode} +cmchar "IMAJ letter u"; +beginchar("u", 2sb#+hstretch*(7/6x_height#+1/2trijut#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% right stem +rt x1 = rt x2 = w-pcshiftx-1/2trijut; +y1=h; y2=0; +z1'=(x1-1/2thick,2h); z2'=(x1',-h); +%% bowl +n1 := w; % width of bowl +n2 := 4/3h; % height of bowl +z3=(pcshiftx,0); +obowl(3, n1, n2); +z4=(pcshiftx,h); z5=(w,y4); +z10o = (z4--z5) intersectionpoint subpath (3,4) of obouter; +z10i = (z4--z5) intersectionpoint subpath (3,4) of obinner; +z10'=1/2[z10o,z10i]; +z10=(x10i,y1); +z20o = (z1'--z2') intersectionpoint subpath (1,3) of obouter; +z20i = (z1'--z2') intersectionpoint subpath (1,3) of obinner; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_triserif(1,trijut); +draw_clubbase(1, 2, 1/3, 0, clubjut); +fill z10o..z3maxlo{-ppdir}..z3minro{pdir}..z20o-- + z20i..z3minri{-pdir}..z3maxli{ppdir}..z10i--cycle; +draw_triserif(10,trijut); % serif on bowl +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,11,16,100); +endchar; % end "u" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{v} +% The letter `v'. The right half of the `w' is used for the `v' (or vice-versa +% if you prefer). +% \begin{macrocode} +cmchar "IMAJ letter v"; +beginchar("v", 2sb#+hstretch*(x_height#+trijut#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +% right side of W +numeric midx; midx:= pcshiftx; +lft x1=midx+trijut; top y1=h; +x2=x1; y2=h/2; +rt x4=w-pcshiftx; y4=y2; +x3=0.5[x2,x4]; bot y3=0; +x5=x4-trijut; y5=y1; +%%ductus:=true; +if ductus: + pickup stylus; +fi +% draw the serifs, then the bowls +draw_triserif(1,trijut); +%%draw_triserif(5,trijut); +draw z1--z2{down}..z3{right}..z4{up}..z5; +ductus:=false; +penlabels(1,2,3,4,5,11,100); +endchar; % end "v" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{w} +% The letter `w'. This is a modern version as the font did not have a W. +% \begin{macrocode} +cmchar "IMAJ letter w"; +beginchar("w", 2sb#+hstretch*(5/3x_height#+trijut#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +% right side first +numeric midx; midx:= w/2-trijut; +lft x1=midx+trijut; top y1=h; +x2=x1; y2=h/2; +rt x4=w-pcshiftx; y4=y2; +x3=0.5[x2,x4]; bot y3=0; +x5=x4-trijut; y5=y1; +% left side +lft x6=pcshiftx+trijut; +top y6=h; +%%lft x7=pcshiftx; y7=y2; +x7=x6; y7=y2; +x8=0.5[x7,x1]; y8=y3; +% construction points +x15=0.5[x8,x1]; y15=y8; +z15'=z15 shifted (w*pdir); +x2'=x2; y2'=y15; +path p[]; +p1=z1--z2'; +p2=z15--z15'; +z9= p2 intersectionpoint p1; +pair vec[]; +p3=z6..z7{down}..{right}z8; +vec3 = direction 0 of p3; +z16=z6 shifted vec3; +%%ductus:=true; +if ductus: + pickup stylus; +fi +% draw the serifs, then the bowls +draw_triserif(1,trijut); % right half +draw z1--z2{down}..z3{right}..z4{up}..z5; +draw_triserif(6,trijut); % left half +draw z6--z7{down}..z8{right}..z9; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,11,16,100); +endchar; % end "w" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{x} +% The letter `x'. +% \begin{macrocode} +cmchar "IMAJ letter x"; +beginchar("x", 2sb#+hstretch*(16/6x_height#), + x_height#, desc_depth#); +adjust_fit(0,0); +numeric n[]; +pcshiftx := sb; +pickup quill; +n1 := w-2pcshiftx; % total width +n2 := thick; % triangle side +%% diag top left to bottom right +lft x1=pcshiftx; bot y1=2/3h; +x2=pcshiftx+1/7n1; top y2=h; +x5=pcshiftx+11/14n1; bot y5=-1/4d; +rt x6=pcshiftx+n1; top y6=1/6h; +%% diag bottom left to top right +x10=x1; bot y10=-d; +x50=pcshiftx+9/14n1; top y50=h; +rt x60=x5; bot y60=2/3h; +x40=pcshiftx+8/14n1; y40=h; +%% triangle +z100=(lft x10, bot y10); +x101=x100+n2; z101=whatever[z100,z40]; +x102=x100; y102=1/2[y100,y101]+n2; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1..z2{right}..z5{right}..z6; % top left to bottom right +draw z10{z40-z10}..z50{right}..z60; % bottom left to top right +fill z100--z101--z102--cycle; % triangle +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,100); +endchar; % end "x" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{y} +% The letter `y'. This looks like a curly capital F. +% \begin{macrocode} +cmchar "IMAJ letter y"; +beginchar("y", 2sb#+hstretch*(x_height#), + x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +%% main stroke +rt x1=w-pcshiftx; top y1=h; +lft x3=pcshiftx; y3=1/2h; +x4=x1; y4=0; +x2=2/3[x3,x1]; bot y2=h; +lft x5=1/2[x3,x4]; bot y5=-d; +%% arm +z101=1/2[z3,z4]; +z103=(x1,y3); +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1..z2{left}..z3{down}..z4{down}..z5; % main stroke +draw z101..z103{right}; % arm +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,10,100); +endchar; % end "y" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{z} +% The letter `z'. +% \begin{macrocode} +cmchar "IMAJ letter z"; +beginchar("z", 2sb#+hstretch*(9/6x_height#), + x_height#, 0); +adjust_fit(0,0); +numeric n[]; +pcshiftx := sb; +pickup quill; +%% top bar +n10 := w-2pcshiftx; % letter width +lft x1=pcshiftx; y1=h; +rt x2=pcshiftx+2/3n10; y2=y1; +%% diagonal +x3=x1; bot y3=0; +%% bowl +n1 := 2/3n10; % width of bowl +n2 := 5/6h; % height of bowl +z4=(w-pcshiftx-n1, 0); +obowl(4, n1, n2); +z5'=(0,1/4n2); z6'=(x4obc,y5'); +z20o = (z5'--z6') intersectionpoint obouter; +z20i = (z5'--z6') intersectionpoint obinner; +z7'=(0,2/3n2); z8'=(x6',y7'); +z10o = whatever[lft z3, lft z2] = whatever[z7',z8']; +z10i = whatever[rt z3, rt z2] = whatever[z7',z8']; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2; % top bar +draw_utriangle(1,thick); +draw z2--z3; % diagonal +fill z20o..z4minro{pdir}..z4maxro{ppdir}..z4minlo{-pdir}..{z3-z2}z10o-- + z10i{z2-z3}..z4minli{pdir}..z4maxri{-ppdir}..z4minri{-pdir}..z20i-- + cycle; +ductus:=false; +penlabels(1,2,3,4,5,6,10o,10i,20o,20i,100); +endchar; % end "z" + +% \end{macrocode} +% \end{routine} +% +% +% The end of this file +% \begin{macrocode} +% +% \end{macrocode} +% +% +% \subsection{The code for capital letters} +% +% \thisfont{} `capitals' were drawn with the same pen as for the minuscules, +% and the letters were merely larger versions of the minuscules. +% +% \begin{macrocode} +%<*maj> +% IMAJU.MF Program file for Insular Majuscule `capitals' +% + +% \end{macrocode} +% +% \begin{routine}{A} +% The letter `A'. +% \begin{macrocode} +cmchar "IMAJ letter A"; +beginchar("A", 2sb#+caprat*hstretch*(5/3x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pickup quill; +%% left bowl +n1 := w-2pcshiftx; % actual letter width +n2 := 7/10n1; % width of left bowl +z1=(pcshiftx,0); +obowl(1, n2, h); +pth1:=obouter; pth2:=obinner; +pth10:=obfirst; pth20:=obsecond; +%% right bowl +n3:=x1+n2-16/12thick; % leftmost point of "stem" +n4:=2(n1-n3); % total width of right stem bowl +z2=(n3,0); +offsetbowl(2, n4, h, 6/12, 1/2); +pth3:=obouter; pth4:=obinner; +pth30:=obfirst; pth40:=obsecond; +%% intersect left bowl with outer of right bowl +z1tout = (subpath (0,1) of pth1) intersectionpoint (subpath (4,2) of pth3); +z1tinn = (subpath (0,1) of pth2) intersectionpoint (subpath (4,2) of pth3); +z1lout = (subpath (1,2) of pth1) intersectionpoint (subpath (4,2) of pth3); +z1linn = (subpath (1,2) of pth2) intersectionpoint (subpath (4,2) of pth3); + +%%ductus:=true; +if ductus: + pickup stylus; + % draw the control paths + draw pth10; draw pth20; + draw pth30; draw pth40; +else: + %% draw left bowl + fill z1lout..z1minro{-pdir}..z1maxlo{ppdir}..z1minlo{pdir}..z1tout-- + z1tinn..z1minli{-pdir}..z1maxli{-ppdir}..z1minri{pdir}..z1linn-- + cycle; + %% draw right stem/bowl + fill z2minro{-pdir}..z2maxlo{ppdir}..{pdir}z2minlo-- + z2minli{-pdir}..z2maxli{-ppdir}..{pdir}z2minri--cycle; +fi +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,100); +endchar; % end "A" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{B} +% The letter `B'. +% \begin{macrocode} +cmchar "IMAJ letter B"; +beginchar("B", 2sb#+caprat*hstretch*(7/6x_height#), + caprat*asc_height#, 0); +adjust_fit(0,0); +numeric n[]; +pcshiftx := sb; +pickup quill; +n1:=w-2pcshiftx; % actual letter width +n2:=h/ascratio; % top of bowl +z1=(pcshiftx, -o); +obowl(1, n1, n2+o); +%% draw bowl +fill obouter; unfill obinner; +%% top of stem +x2=x1wt+1/3n1; top y2=h; +tangentpoint(2, subpath (3,4) of obsecond); +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z2tan--z2; +draw_triserif(2,trijut); +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,100); +endchar; % end "B" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{C} +% The letter `C'. +% \begin{macrocode} +cmchar "IMAJ letter C"; +beginchar("C", 2sb#+caprat*hstretch*(5/6x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +numeric n[]; +pcshiftx := sb; +pickup quill; +n1:=w-2pcshiftx; % actual letter width +n2:=6/5w-2pcshiftx; % width of full bowl +z1=(pcshiftx,0); +obowl(1, n2, h); +z3=(x1+n1, h); % top RH corner +z4=(x1obc,1/6h); z5=(3/2w,y4); % for horizontal line +%% top intersection points +z10i = (z1obc--z3) intersectionpoint obinner; +z10o = (z1obc--z3) intersectionpoint obouter; +%% bottom intersection points +z20i = (z4--z5) intersectionpoint obinner; +z20o = (z4--z5) intersectionpoint obouter; +%%ductus:=true; +if ductus: + pickup stylus; +fi +fill z20o..z1minro{-pdir}..z1maxlo{ppdir}..z1minlo{pdir}..z10o-- + z10i..z1minli{-pdir}..z1maxli{-ppdir}..z1minri{pdir}..z20i-- + cycle; +ductus:=false; +penlabels(1,2,3,4,5,6,16,17,18,100); +endchar; % end "C" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{D} +% The letter `D'. +% \begin{macrocode} +cmchar "IMAJ letter D"; +beginchar("D", 2sb#+caprat*hstretch*(x_height#+1/2thick#), + caprat*x_height#, 0); +adjust_fit(0,0); +numeric n[]; +pcshiftx := sb; +pickup quill; +%% bowl +n1 := w-2pcshiftx; % actual letter width +n2 := n1-1/2thick; % width of bowl +n3 := h; % top of bowl +z1=(w-pcshiftx-n2, 0); +obowl(1, n2, n3); +%% top bar +lft x3=pcshiftx; y3=h; +z3i=(pcshiftx, y3-1/2thin); z3o=(x3i,y3i+thin); +z2i=(x1nh,y3i); +z2o=(x2i,y3o); +%%ductus:=true; +if ductus: + pickup stylus; +fi +fill z1minlo{-pdir}..z1maxlo{-ppdir}..z1minro{pdir}..z1maxro{ppdir}..{left}z2o-- + z3o--z3i-- + z2i{right}..z1maxri{-ppdir}..z1minri{-pdir}..z1maxli{ppdir}..{pdir}z1minli-- + cycle; +draw_utriangle(3, thick); +ductus:=false; +penlabels(0,1,2,3,4,5,6,7,8,100); +endchar; % end "D" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{E} +% The letter `E'. +% \begin{macrocode} +cmchar "IMAJ letter E"; +beginchar("E", sb#+caprat*hstretch*(x_height#+3/2thick#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +n1 := w-pcshiftx; % actual letter width +n2 := n1-3/2thick; % width of bowl +z1=(pcshiftx,0); +obowl(1, n2, h); +%% for crossbar +z2=(0,2/3h); rt x3=w; y3=y2; z3'=(x1obc,y2); +z4 = (z2--z3') intersectionpoint subpath (3,4) of obsecond; +z10tout = (z3'--z3) intersectionpoint subpath (0,3) of obouter; +z10tinn = (z3'--z3) intersectionpoint subpath (0,3) of obinner; +%% bottom cutoff +z5=(x1obc,1/6h); z6=(w,y5); +z20bout = (z5--z6) intersectionpoint subpath (0,3) of obouter; +z20binn = (z5--z6) intersectionpoint subpath (0,3) of obinner; +%%ductus:=true; +if ductus: + pickup stylus; +fi +fill z20bout..z1minro{-pdir}..z1maxlo{ppdir}..z1minlo{pdir}..z10tout-- + z10tinn..z1minli{-pdir}..z1maxli{-ppdir}..z1minri{pdir}..z20binn-- + cycle; +draw z4--z3; % crossbar & decoration +draw_triangle(3,thick); +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,100); +endchar; % end "E" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{F} +% The letter `F'. +% \begin{macrocode} +cmchar "IMAJ letter F"; +beginchar("F", 2sb#+caprat*hstretch*(x_height#+trijut#), + caprat*(x_height#), caprat*desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +%% stem +lft x1=lft x2=pcshiftx+trijut; +top y1=h; bot y2=-d; +%% bottom bar +z4=(rt x1,-thin); rt x6=w-pcshiftx; y6=y4+2thin; z5=1/2[z4,z6]; +%% top bar +z7=(rt x1, bot y1); +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_triserif(1,trijut); +draw_clubbase(1, 2, 1/3, clubjut, clubjut); +draw z4{dir(45)}..z5{right}..z6{dir(45)}; % bottom bar +draw_flick(7, 2thin, thin, (w-pcshiftx-x7+1/2thick)); % top bar +ductus:=false; +penlabels(1,2,3,4,5,6,7,100); +endchar; % end "F" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{G} +% The letter `G'. +% \begin{macrocode} +cmchar "IMAJ letter G"; +beginchar("G", 2sb#+caprat*hstretch*(5/3x_height#), + caprat*x_height#, caprat*desc_depth#); +adjust_fit(0,0); +path pth[]; +pair vec[]; +pcshiftx := sb; +pickup quill; +%% top bar +lft x1=pcshiftx; y1=h; rt x2=w-pcshiftx; y2=h; +%% curves +z3=2/5[z1,z2]; +x5=4/5[x1,x2]; y5=-1/2d; +x4=(x3-thick); y4=1/2[y5,y3]; +x7=1/2[x1,x4]; y7=y5; +x6=2/3[x7,x5]; bot y6=-d; +pth1 := z3..z4{down}..z5; +pth2 := z5--z6{left}..z7; +%% diagonal to close bottom bowl +vec1 := direction 2 of pth2; +vec2 := (z5-z6); +z7'=(lft x7, bot y7); z7''=(rt x7, y7); +pickup thickstylus; +lft x8 = x7'; bot y8 = y7'; +z9' = z8 shifted 2vec2; +z9 = (z8--z9') intersectionpoint pth1; +z7''' = z7'' shifted 2vec1; +z8' = whatever[z7'',z7'''] = whatever[z8,z9']; +%%ductus:=true; +if ductus: + pickup stylus; + draw z1--z2; % top bar + draw pth1; draw pth2; % curves + draw rt z8--z9; % diagonal +else: + pickup quill; + draw z1--z2; % top bar + draw_triangle(2,thick); + draw_utriangle(1,thick); + draw pth1; draw pth2; % curves + pickup thickstylus; + draw rt z8--z9; % diagonal + fill z7''--z8'--z8--cycle; +fi +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,100); +endchar; % end "G" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{H} +% The letter `H'. +% \begin{macrocode} +cmchar "IMAJ letter H"; +beginchar("H", 2sb#+caprat*hstretch*(x_height#+trijut#), + caprat*asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +numeric n[]; +%% stem +lft x1=lft x2=pcshiftx+trijut; +top y1=h; bot y2=0; +%% bowl +rt x3 = lft x1; y3=0; +n1 := w-pcshiftx-x3; % bowl width +n2 := h/ascratio; % bowl height +obowl(3, n1, n2); +z1'=(rt x1, y1); z2'=(x1',y2); %% right hand side of stem +z10tout = (z1'--z2') intersectionpoint subpath (3,4) of obouter; +z10tinn = (z1'--z2') intersectionpoint subpath (3,4) of obinner; +z10toth = (x1, y10tinn); % avoids 180 turn in path +z6 = directionpoint down of obsecond; % top of right leg +z6i=(lft x6, bot y6); z6o=(rt x6, bot y6); +z8=(x6,0); +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_triserif(1,trijut); +draw_clubbase(1, 2, 1/3, clubjut, clubjut); +draw_tstem(6,8,srad); % right leg +draw_clubbase(6, 8, 1/3, 0, 1/2clubjut); +fill z6i{up}..z3minli{-pdir}..z10tinn--z10toth-- % top of bowl + z10tout..z3minlo{pdir}..{down}z6o--cycle; +ductus:=false; +penlabels(1,2,3,4,5,6,100); +endchar; % end "H" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{I} +% The letter `I'. +% \begin{macrocode} +cmchar "IMAJ letter I"; +beginchar("I", 2sb#+caprat*hstretch*(thick#+trijut#+jut#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +lft x1=lft x2=pcshiftx+trijut; +top y1=h; bot y2=0; +%%ductus:=true; +draw_tstem(1,2,srad); +draw_triserif(1,trijut); +draw_clubbase(1, 2, 1/3, clubjut, clubjut); +ductus:=false; +penlabels(1,2,100); +endchar; % end "I" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{J} +% The letter `J'. This letter was not in the script, it being a later invention. +% \begin{macrocode} +cmchar "IMAJ letter J"; +beginchar("J", sb#+caprat*hstretch*(2/3x_height#), + caprat*x_height#, caprat*desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% stem +rt x1 = w-pcshiftx; top y1 = h; +x2=x1; y2=-1/2d; +%% bottom hook +lft x3 = 0; bot y3 = -d; +%% triangle +n1 := thick; % side length +z6=(lft x3, bot y3); +x7=x6+n1; z7=whatever[z6,z2]; +z8=1/2[z6,z7]; +z9=(x8, y8+0.9n1); +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2; % stem +draw_triserif(1,trijut); +draw z2--z3; % hook +fill z6--z7--z9--cycle; % triangle +ductus:=false; +penlabels(1,2,3,100); +endchar; % end "J" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{K} +% The letter `K'. +% \begin{macrocode} +cmchar "IMAJ letter K"; +beginchar("K", 2sb#+caprat*hstretch*(x_height#+trijut#), + caprat*x_height#, caprat*desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +%% stem +lft x1=lft x2=pcshiftx+trijut; +top y1=h; bot y2=-d; +%% top arm +z3=(x1,5/6h); +rt x5=w-pcshiftx; y5=2/3h; +x4=1/2[x3,x5]; top y4=h; +%% lower arm +x7=x5; bot y7=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_triserif(1,trijut); +draw_clubbase(1,2,1/3, clubjut, clubjut); +draw z3..z4{right}..z5; % upper arm +draw z3..{right}z7; % lower arm +ductus:=false; +penlabels(1,2,3,4,5,100); +endchar; % end "K" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{L} +% The letter `L'. +% \begin{macrocode} +cmchar "IMAJ letter L"; +beginchar("L", 2sb#+caprat*hstretch*(7/6x_height#), + caprat*asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +lft x2=pcshiftx; y2=1/5h; +x1=x2+trijut; top y1=h; +rt x4=w-pcshiftx; y4=1/5h; +x3=1/2[x2,x4]; bot y3=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1{down}..z2..z3{right}..z4; +draw_triserif(1,trijut); +ductus:=false; +penlabels(1,2,3,4,100); +endchar; % end "L" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{M} +% The letter `M'. +% \begin{macrocode} +cmchar "IMAJ letter M"; +beginchar("M", 2sb#+caprat*hstretch*(5/3x_height#+trijut#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pickup quill; +%% left stem +lft x1=pcshiftx+trijut; top y1=h; +x2=x1; bot y2=0; +z1'=(rt x1, y1+h); z2'=(rt x2, y2-h); +%% right stem +rt x5=w-pcshiftx; y5=y1; +z6=(x5,0); +%% middle stem +z3=1/2[z1,z5]; z4=1/2[z2,z6]; +z3'=(rt x3, y3); z4'=(rt x4, y4); +n1 := x4-x2+3/2thick; % width of bowl +n2 := 2/3h; % height of bowl +%% left bowl +z7=(rt x4 - n1, h-n2); +obowl(7, n1, n2); +pth1 := obouter; pth2 := obinner; pth3 := obsecond; +z17tout = (z1'--z2') intersectionpoint subpath (3,4) of obouter; +z17tinn = (z1'--z2') intersectionpoint subpath (3,4) of obinner; +z17toth = (x2, y17tinn); +%% right bowl +z8=(rt x6 - n1, y7); +obowl(8, n1, n2); +pth5 := obouter; pth6 := obinner; pth7 := obsecond; +z18tout = pth5 intersectionpoint subpath (0,1) of pth1; +z18tinn = pth6 intersectionpoint subpath (0,1) of pth1; +z13 = directionpoint down of pth3; +z15 = directionpoint down of pth7; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % left half +draw_triserif(1,trijut); +draw_clubbase(1, 2, 1/3, clubjut, clubjut); +fill z17tout..z7minlo{pdir}..{down}(rt x13, y13)-- + (lft x13, y13){up}..z7minli{-pdir}..z17tinn--z17toth--cycle; +draw_tstem(13,4,srad); % right half +fill z18tout..z8minlo{pdir}..{down}(rt x15, y15)-- + (lft x15, y15){up}..z8minli{-pdir}..z18tinn--cycle; +draw_tstem(15,6,srad); +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,14,100); +endchar; % end "M" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{N} +% The letter `n'. This could be like a capital `N' or a lower-case `n'. +% I have chosen to do the first form. +% \begin{macrocode} +cmchar "IMAJ letter N"; +beginchar("N", 2sb#+caprat*hstretch*(7/6x_height#+trijut#), + caprat*x_height#, caprat*(1/2desc_depth#)); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +%% left stem +lft x1=pcshiftx+trijut; top y1=h; +x2=x1; bot y2=-d; +%% right stem +rt x3=w-pcshiftx; y3=y1; +z4=(x3,0); +%% bar +z5=(x1,1/3h); z6=(x4,1/6h); +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % left stem +draw_triserif(1,trijut); +draw_clubbase(1, 2, 1/3, clubjut, clubjut); +draw_tstem(3,4,srad); % right stem +draw_clubbase(3, 4, 1/3, clubjut, clubjut); +draw z5--z6; % bar +ductus:=false; +penlabels(1,2,3,4,5,6,100); +endchar; % end "N" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{O} +% The letter `O'. +% \begin{macrocode} +cmchar "IMAJ letter O"; +beginchar("O", 2sb#+caprat*hstretch*(7/6x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +z5=(pcshiftx,-o); +obowl(5, w-2pcshiftx, h+2o); +%%ductus:=true; +if ductus: + pickup stylus; +fi +fill obouter; unfill obinner; +ductus:=false; +penlabels(1,2,3,4,5,100); +endchar; % end "O" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{P} +% The letter `P'. +% \begin{macrocode} +cmchar "IMAJ letter P"; +beginchar("P", 2sb#+caprat*hstretch*(8/6x_height#+trijut#), + caprat*x_height#, caprat*desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% stem +lft x1=lft x2=pcshiftx+trijut; +top y1=1/3h; bot y2=-d; +n1 := w - pcshiftx - lft x1; % width of bowl +n2 := h+1/4d; % height of bowl +z3=(lft x1, -1/4d); +obowl(3, n1, n2); +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_triserif(1,trijut); +draw_clubbase(1, 2, 1/3, clubjut, 0); +fill lft z1{up}..z3minlo{pdir}..z3maxro{-ppdir}..{-pdir}z3minro-- + z3minri{pdir}..z3maxri{ppdir}..z3minli{-pdir}..{down}rt z1-- + cycle; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,100); +endchar; % end "P" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{Q} +% The letter `Q'. +% \begin{macrocode} +cmchar "IMAJ letter Q"; +beginchar("Q", 2sb#+caprat*hstretch*(x_height#+1/2trijut#), + caprat*x_height#, caprat*(1/2desc_depth#)); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% right stem +rt x1=w-pcshiftx-1/2trijut; top y1=h; +x2=x1; bot y2=-d; +z3=(pcshiftx,0); +n1 := w; % width of bowl +n2 := h; % height of bowl +obowl(3, n1, n2); +z10o = (rt z1--rt z2) intersectionpoint subpath (0,1) of obouter; +z10i = (lft z1--lft z2) intersectionpoint subpath (0,1) of obinner; +z20o = (rt z1--rt z2) intersectionpoint subpath (1,2) of obouter; +z20i = (lft z1--lft z2) intersectionpoint subpath (1,2) of obinner; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_triserif(1,trijut); +draw_clubbase(1, 2, 1/3, 0, clubjut); +fill z10o..z3minlo{-pdir}..z3maxlo{-ppdir}..z3minro{right}..z20o-- + z20i..z3minri{-pdir}..z3maxli{ppdir}..z3minli{pdir}..z10i-- + cycle; +ductus:=false; +penlabels(0,1,2,3,4,5,6,7,8,100); +endchar; % end "Q" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{R} +% The letter `R'. +% \begin{macrocode} +cmchar "IMAJ letter R"; +beginchar("R", sb#+caprat*hstretch*(11/6x_height#+trijut#), + caprat*x_height#, caprat*(1/2desc_depth#)); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% stem +lft x1=lft x2=pcshiftx+trijut; top y1=h; bot y2=-d; +n1 := w-pcshiftx; % width of bowl +n2 := 5/6h; % height of bowl +z3=(x1-1/2n1, h-n2); +obowl(3, n1, n2); +z10o=(x1,h); z10i=(x1, y10o-thin); +z20o=(x1,y3); z20i=(x20o, y20o+thin); +%% arm +x4=x1; bot y4=y3; +x5=x3maxro; top y5=0; +%%rt x6=w; y6=y4; +rt x6=w; y6=y2; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_triserif(1,trijut); +draw_clubbase(1, 2, 1/3, clubjut, 0); +fill z10o{right}..z3maxro{-ppdir}..{left}z20o-- + z20i{right}..z3maxri{ppdir}..{left}z10i--cycle; +%%draw z4{right}..z5{right}..{right}z6; % arm +draw z4{right}..{right}z6; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,100); +endchar; % end "R" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{S} +% The letter `S'. This is a `long' S. +% \begin{macrocode} +cmchar "IMAJ letter S"; +beginchar("S", 2sb#+caprat*hstretch*(x_height#+trijut#), + caprat*asc_height#, 0); +adjust_fit(0,0); +numeric n[]; +pcshiftx := sb; +pickup quill; +%% stem +lft x1=lft x2=pcshiftx+trijut; top y1=h/ascratio; bot y2=0; +n1 := w; % width of bowl +n2 := 2(h-y1); % height of bowl +z3=(lft x1, y1-1/2n2); +obowl(3, n1, n2); +z4=(2w,2h); +z10o = (z3--z4) intersectionpoint subpath (0,1) of obouter; +z10i = (z3--z4) intersectionpoint subpath (0,1) of obinner; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_triserif(1,trijut); +draw_clubbase(1, 2, 1/3, clubjut, clubjut); +fill rt z1{up}..z3minli{pdir}..z10i-- + z10o..z3minlo{-pdir}..{down}lft z1--cycle; +ductus:=false; +penlabels(1,2,3,4,5,6,7,11,17,26,27,28,100); +endchar; % end "S" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{T} +% The letter `T'. +% \begin{macrocode} +cmchar "IMAJ letter T"; +beginchar("T", 2sb#+caprat*hstretch*(4/3x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% bar +lft x1 = pcshiftx; y1=h; rt x2=w-pcshiftx; y2=y1; +n1 := w; % width of bowl +n2 := h; % height of bowl +z3=(pcshiftx+thick,0); +obowl(3, n1, n2); +z5=(x1+w, 0); +z20o = (z1--z5) intersectionpoint subpath (1,2) of obouter; +z20i = (z1--z5) intersectionpoint subpath (1,2) of obinner; +z10o = (x3minlo, top y1); +z10i = (x3minlo, bot y1); +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2; % bar +draw_utriangle(1, thick); +draw_triangle(2, thick); +fill z10o{left}..z3maxlo{-ppdir}..z3minro{pdir}..z20o-- + z20i..z3minri{-pdir}..z3maxli{ppdir}..z10i{right}-- + cycle; +ductus:=false; +penlabels(1,2,3,4,5,6,11,12,100); +endchar; % end "T" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{U} +% The letter `U'. +% \begin{macrocode} +cmchar "IMAJ letter U"; +beginchar("U", 2sb#+caprat*hstretch*(7/6x_height#+1/2trijut#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% right stem +rt x1 = rt x2 = w-pcshiftx-1/2trijut; +y1=h; y2=0; +z1'=(x1-1/2thick,2h); z2'=(x1',-h); +%% bowl +n1 := w; % width of bowl +n2 := 4/3h; % height of bowl +z3=(pcshiftx,0); +obowl(3, n1, n2); +z4=(pcshiftx,h); z5=(w,y4); +z10o = (z4--z5) intersectionpoint subpath (3,4) of obouter; +z10i = (z4--z5) intersectionpoint subpath (3,4) of obinner; +z10'=1/2[z10o,z10i]; +z10=(x10i,y1); +z20o = (z1'--z2') intersectionpoint subpath (1,3) of obouter; +z20i = (z1'--z2') intersectionpoint subpath (1,3) of obinner; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_triserif(1,trijut); +draw_clubbase(1, 2, 1/3, 0, clubjut); +fill z10o..z3maxlo{-ppdir}..z3minro{pdir}..z20o-- + z20i..z3minri{-pdir}..z3maxli{ppdir}..z10i--cycle; +draw_triserif(10,trijut); % serif on bowl +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,11,16,100); +endchar; % end "U" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{V} +% The letter `V'. The right half of the `w' is used for the `v' (or vice-versa +% if you prefer). +% \begin{macrocode} +cmchar "IMAJ letter V"; +beginchar("V", 2sb#+caprat*hstretch*(x_height#+trijut#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +% right side of W +numeric midx; midx:= pcshiftx; +lft x1=midx+trijut; top y1=h; +x2=x1; y2=h/2; +rt x4=w-pcshiftx; y4=y2; +x3=0.5[x2,x4]; bot y3=0; +x5=x4-trijut; y5=y1; +%%ductus:=true; +if ductus: + pickup stylus; +fi +% draw the serifs, then the bowls +draw_triserif(1,trijut); +%%draw_triserif(5,trijut); +draw z1--z2{down}..z3{right}..z4{up}..z5; +ductus:=false; +penlabels(1,2,3,4,5,11,100); +endchar; % end "V" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{W} +% The letter `W'. This is a modern version as the font did not have a W. +% \begin{macrocode} +cmchar "IMAJ letter W"; +beginchar("W", 2sb#+caprat*hstretch*(5/3x_height#+trijut#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +% right side first +numeric midx; midx:= w/2-trijut; +lft x1=midx+trijut; top y1=h; +x2=x1; y2=h/2; +rt x4=w-pcshiftx; y4=y2; +x3=0.5[x2,x4]; bot y3=0; +x5=x4-trijut; y5=y1; +% left side +lft x6=pcshiftx+trijut; +top y6=h; +%%lft x7=pcshiftx; y7=y2; +x7=x6; y7=y2; +x8=0.5[x7,x1]; y8=y3; +% construction points +x15=0.5[x8,x1]; y15=y8; +z15'=z15 shifted (w*pdir); +x2'=x2; y2'=y15; +path p[]; +p1=z1--z2'; +p2=z15--z15'; +z9= p2 intersectionpoint p1; +pair vec[]; +p3=z6..z7{down}..{right}z8; +vec3 = direction 0 of p3; +z16=z6 shifted vec3; +%%ductus:=true; +if ductus: + pickup stylus; +fi +% draw the serifs, then the bowls +draw_triserif(1,trijut); % right half +draw z1--z2{down}..z3{right}..z4{up}..z5; +draw_triserif(6,trijut); % left half +draw z6--z7{down}..z8{right}..z9; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,11,16,100); +endchar; % end "W" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{X} +% The letter `X'. +% \begin{macrocode} +cmchar "IMAJ letter X"; +beginchar("X", 2sb#+caprat*hstretch*(16/6x_height#), + caprat*x_height#, caprat*desc_depth#); +adjust_fit(0,0); +numeric n[]; +pcshiftx := sb; +pickup quill; +n1 := w-2pcshiftx; % total width +n2 := thick; % triangle side +%% diag top left to bottom right +lft x1=pcshiftx; bot y1=2/3h; +x2=pcshiftx+1/7n1; top y2=h; +x5=pcshiftx+11/14n1; bot y5=-1/4d; +rt x6=pcshiftx+n1; top y6=1/6h; +%% diag bottom left to top right +x10=x1; bot y10=-d; +x50=pcshiftx+9/14n1; top y50=h; +rt x60=x5; bot y60=2/3h; +x40=pcshiftx+8/14n1; y40=h; +%% triangle +z100=(lft x10, bot y10); +x101=x100+n2; z101=whatever[z100,z40]; +x102=x100; y102=1/2[y100,y101]+n2; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1..z2{right}..z5{right}..z6; % top left to bottom right +draw z10{z40-z10}..z50{right}..z60; % bottom left to top right +fill z100--z101--z102--cycle; % triangle +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,100); +endchar; % end "X" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{Y} +% The letter `Y'. This looks like a curly capital F. +% \begin{macrocode} +cmchar "IMAJ letter Y"; +beginchar("Y", 2sb#+caprat*hstretch*(x_height#), + caprat*x_height#, caprat*desc_depth#); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +%% main stroke +rt x1=w-pcshiftx; top y1=h; +lft x3=pcshiftx; y3=1/2h; +x4=x1; y4=0; +x2=2/3[x3,x1]; bot y2=h; +lft x5=1/2[x3,x4]; bot y5=-d; +%% arm +z101=1/2[z3,z4]; +z103=(x1,y3); +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1..z2{left}..z3{down}..z4{down}..z5; % main stroke +draw z101..z103{right}; % arm +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,10,100); +endchar; % end "Y" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{Z} +% The letter `Z'. +% \begin{macrocode} +cmchar "IMAJ letter Z"; +beginchar("Z", 2sb#+caprat*hstretch*(9/6x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +numeric n[]; +pcshiftx := sb; +pickup quill; +%% top bar +n10 := w-2pcshiftx; % letter width +lft x1=pcshiftx; y1=h; +rt x2=pcshiftx+2/3n10; y2=y1; +%% diagonal +x3=x1; bot y3=0; +%% bowl +n1 := 2/3n10; % width of bowl +n2 := 5/6h; % height of bowl +z4=(w-pcshiftx-n1, 0); +obowl(4, n1, n2); +z5'=(0,1/4n2); z6'=(x4obc,y5'); +z20o = (z5'--z6') intersectionpoint obouter; +z20i = (z5'--z6') intersectionpoint obinner; +z7'=(0,2/3n2); z8'=(x6',y7'); +z10o = whatever[lft z3, lft z2] = whatever[z7',z8']; +z10i = whatever[rt z3, rt z2] = whatever[z7',z8']; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2; % top bar +draw_utriangle(1,thick); +draw z2--z3; % diagonal +fill z20o..z4minro{pdir}..z4maxro{ppdir}..z4minlo{-pdir}..{z3-z2}z10o-- + z10i{z2-z3}..z4minli{pdir}..z4maxri{-ppdir}..z4minri{-pdir}..z20i-- + cycle; +ductus:=false; +penlabels(1,2,3,4,5,6,10o,10i,20o,20i,100); +endchar; % end "Z" + +% \end{macrocode} +% \end{routine} +% +% +% +% The end of this file +% \begin{macrocode} +% +% \end{macrocode} +% +% +% +% \subsection{The punctuation file} +% +% The main punctuation marks are defined in this file. +% +% \begin{macrocode} +%<*punct> +% IMAJPUNCT.MF This file contains punctuation marks + +% \end{macrocode} +% +% +% \begin{routine}{!} +% The `!' character, which had not been invented at this time. +% \begin{macrocode} + +cmchar "Exclamation mark"; +beginchar("!", 2sb#+hstretch*(thick#+trijut#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +z1=(w/2,h); +z3=(x1, 1/2dot_size); +z2=(x1, y3+3/2dot_size); +draw z1--z2; +draw_pdot(3,dot_size); +penlabels(1,2,3); + +endchar; % end of "!" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{?} +% The `?' character, which had not been invented at this time. +% \begin{macrocode} + +cmchar "Question mark"; +beginchar("?", 2sb#+hstretch*(x_height#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pickup quill; +n1 := w-2pcshiftx; % actual character width +n2 := 1/3h; % height of top bowl +n3 := n2; % height of bottom bowl +%% top bowl +z1=(pcshiftx, h-n2); +obowl(1, n1, n2); +pth1 := obouter; +%% bottom bowl +z2=(x1,y1-n3); +obowl(2, n1, n3); +pth2 := obouter; +%% stem and dot +lft x4 = x1 + 4/4thick; +z5=(x4,1/2dot_size); +y4=y5+3/2dot_size; +z4o=(lft x4, y4); z4i=(rt x4, y4); +%%ductus:= true; +if ductus: + pickup stylus; + draw pth1; draw pth2; + draw z2wt--z4; + draw_pdot(5, dot_size); +else: + fill z1maxlo{ppdir}..z1minlo{pdir}..z1maxro{-ppdir}.. +%% z1minro..z2maxli{-ppdir}.. + z2minli.. + {down}z4i--z4o{up}.. + z2minlo.. +%% z1minri..z1maxri{ppdir}.. + z1maxri{ppdir}..z1minli{-pdir}..z1maxli{-ppdir}--cycle; + draw_pdot(5, dot_size); +fi +penlabels(1,2,3,4,5); +endchar; % end of "?" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{,} +% The `,' character. +% \begin{macrocode} + +cmchar "Comma"; +beginchar(",",2sb#+hstretch*(comma_width#+dot_size#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb; +x1=w-pcshiftx-(0.5hstretch*dot_size); y1=h/2; +draw_pcomma(1,dot_size,comma_width); +penlabels(1); +endchar; % end of "," + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{.} +% The `.' character. +% \begin{macrocode} + +cmchar "Period"; +beginchar(".",2sb#+hstretch*(dot_size#),x_height#,0); +pcshiftx:=sb; +x1=w/2; y1=h/2; +draw_pdot(1,dot_size); +penlabels(1); +endchar; % end of "." + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{:} +% The `:' character. +% \begin{macrocode} + +cmchar "Colon"; +beginchar(":",2sb#+hstretch*(dot_size#),x_height#,0); +pcshiftx:=sb; +x1=x2=w/2; y1=2/3h; y2=1/3h; +draw_pdot(1,dot_size); +draw_pdot(2,dot_size); +penlabels(1,2); +endchar; % end ":" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{;} +% The `;' character. +% \begin{macrocode} + +cmchar "Semicolon"; +beginchar(";",2sb#+hstretch*(comma_width#+dot_size#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb; +x1=x2=w-pcshiftx-(0.5hstretch*dot_size); y1=2/3h; y2=1/3h; +draw_pdot(1,dot_size); +draw_pcomma(2,dot_size,comma_width); +penlabels(1,2); +endchar; % end of ";" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{'} +% The `'' character. +% \begin{macrocode} + +cmchar "Apostrophe"; +beginchar("'",2sb#+hstretch*(comma_width#+dot_size#),4/3x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb; +x1=w-pcshiftx-(0.5hstretch*dot_size); y1=h; +draw_pcomma(1,dot_size,comma_width); +penlabels(1); +endchar; % end of "'" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{`} +% The ``' character. +% \begin{macrocode} + +cmchar "Reverse apostrophe"; +beginchar("`",2sb#+hstretch*(comma_width#+dot_size#),4/3x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb; +x1=pcshiftx+(0.5hstretch*dot_size); y1=h; +draw_plq(1,dot_size,comma_width); +penlabels(1); +endchar; % end of "`" + +% \end{macrocode} +% \end{routine} +% +% The end of this file. +% \begin{macrocode} +% +% \end{macrocode} +% +% +% \subsection{The ligatures and dashes file} +% +% The ligatured letters, punctuation marks and dashes are defined in this file. +% \begin{macrocode} +%<*lig> +% IMAJLIG.MF Uncial ligatured letters, punctation and dashes + +% \end{macrocode} +% First the ligtables. +% \begin{macrocode} + +ligtable "`": "`"=:oct"134"; +ligtable "'": "'"=:oct"042"; %% , "?" kern 2u#, "!" kern 2u#; + +ligtable "-": "-"=:oct"173"; +ligtable oct"173": "-"=:oct"174"; + +%%%%ligtable "f": "i"=:oct"014"; + +% \end{macrocode} +% +% \begin{routine}{''} +% The `''' ligature. +% \begin{macrocode} + +cmchar "Closing quotes"; +beginchar(oct"042",2sb#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb; +x1=w-pcshiftx-(0.5hstretch*dot_size); y1=y2=h; +x2=x1-(2hstretch*dot_size); +draw_pcomma(1,dot_size,comma_width); % right +draw_pcomma(2,dot_size,comma_width); % left +penlabels(1,2); +endchar; % end of "''" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{``} +% The ```' ligature. +% \begin{macrocode} + +cmchar "Opening quotes"; +beginchar(oct"134",2sb#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb; +x1=pcshiftx+(0.5hstretch*dot_size); y1=y2=h; +x2=x1+(2hstretch*dot_size); +draw_plq(1,dot_size,comma_width); % left +draw_plq(2,dot_size,comma_width); % right +penlabels(1,2); +endchar; % end of "``" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{-} +% The `-' (hyphen) character. +% \begin{macrocode} + +cmchar "Hyphen"; +beginchar("-",sb#+hstretch*(0.8x_height#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb/2; +numeric alpha; alpha:=w/8; +pickup quill; +lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; +x11=lft x1+alpha/2; y11=top y1-0.5thin; +x12=rt x2; y12=bot y1+0.5thin; +draw_triangle(11,alpha); +draw_rutriangle(12,alpha); +pickup thickstylus; +lft x21=pcshiftx; rt x22=w-pcshiftx; y21=y22=y1; +draw z21--z22; +penlabels(1,2); +endchar; % end of "-" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{--} +% The `--' (en-dash) ligature. +% \begin{macrocode} + +cmchar "En dash"; +beginchar(oct"173",sb#+hstretch*(x_height#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb/2; +numeric alpha; alpha:=w/8; +pickup quill; +lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; +x11=lft x1+alpha/2; y11=top y1-0.5thin; +x12=rt x2; y12=bot y1+0.5thin; +draw_triangle(11,alpha); +draw_rutriangle(12,alpha); +pickup thickstylus; +lft x21=pcshiftx; rt x22=w-pcshiftx; y21=y22=y1; +draw z21--z22; +penlabels(1,2); +endchar; % end of "--" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{---} +% The `---' (em dash) ligature. The em dash is twice the width of the en dash. +% \begin{macrocode} + +cmchar "Em dash"; +beginchar(oct"174",sb#+hstretch*(2x_height#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb/2; +numeric alpha; alpha:=w/8; +pickup quill; +lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; +x11=lft x1+alpha/2; y11=top y1-0.5thin; +x12=rt x2; y12=bot y1+0.5thin; +draw_triangle(11,alpha); +draw_rutriangle(12,alpha); +pickup thickstylus; +lft x21=pcshiftx; rt x22=w-pcshiftx; y21=y22=y1; +draw z21--z22; +penlabels(1,2); +endchar; % end of "---" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{&} +% The ampersand (which is really an `et' ligature). +% \begin{macrocode} + +cmchar "IMAJ ampersand"; +beginchar("&", 2sb#+hstretch*(6/3x_height#), asc_height#, 0); +adjust_fit(0,0); +numeric n[]; +path pth[]; +pcshiftx:=sb; +pickup quill; +n10 := w-2pcshiftx; % width of character +%% crossbar +z1'=(0,h/ascratio); +rt x2=w-pcshiftx; y2=y1'; +%% main bowl +n1 := 4/6n10; % width of bowl +n2 := h; % height of bowl +z3=(pcshiftx,0); +obowl(3, n1, n2); +z2'=(x3obc,y1'); +z1 = (z1'--z2') intersectionpoint obinner; +z10o = (z2'--z2) intersectionpoint obouter; +z10i = (z2'--z2) intersectionpoint obinner; +%% wave +x4=x2; bot y4=0; +pth1 := z1{right}..z4{right}; +%% wave/bowl +z20o = pth1 intersectionpoint subpath (0,2) of obouter; +z20i = pth1 intersectionpoint subpath (0,2) of obinner; +%%ductus:=true; +if ductus: + pickup stylus; +fi +fill z10o..z3minlo{-pdir}..z3maxlo{-ppdir}..z3minro{pdir}..z20o-- + z20i..z3minri{-pdir}..z3maxli{ppdir}..z3minli{pdir}..z10i-- + cycle; +draw z1--z2; % bar +draw pth1; % wave +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,10,16,17,18,31,32,33); +endchar; % end of "&" + +% \end{macrocode} +% \end{routine} +% +% +% The end of this file. +% \begin{macrocode} +% +% \end{macrocode} +% +% \subsection{The digits file} +% +% These are arabic digits in the style of the book-hand. They are a +% modern invention. +% +% \begin{macrocode} +%<*dig> +% IMAJDIG.MF Program file for Insular Majuscule digits +% + +% \end{macrocode} +% +% +% \begin{routine}{1} +% The digit `1'. +% \begin{macrocode} +cmchar "IMAJ digit 1"; +beginchar("1", 2sb#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +x1=x2=w/2; +y1=h; bot y2=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); +draw_triserif(1,trijut); +ductus:=false; +penlabels(1,2,100); +endchar; % end "1" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{2} +% The digit `2'. +% \begin{macrocode} +cmchar "IMAJ digit 2"; +beginchar("2", 2sb#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +%% stem +lft x1=pcshiftx+o; top y1=h-2thin; +x2=1/2w; top y2= h+o; +rt x3=w-pcshiftx-o; y3=3/4h; +%% foot +lft x5=pcshiftx; bot y5=0; +rt x6=w-pcshiftx; y6=y5; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1..z2{right}..z3{down}..{down}z5; % curve +draw z5--z6; % foot +draw_utriangle(6,thick); +ductus:=false; +penlabels(1,2,3,4,5,6,100); +endchar; % end "2" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{3} +% The digit `3'. +% \begin{macrocode} +cmchar "IMAJ digit 3"; +beginchar("3", 2sb#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +%% x values +lft x3=pcshiftx; x10=x3; +rt x5=w-pcshiftx; x8=x5-3thin; +x4=0.5[x3,x5]; +x9=0.5[x10,x8]; +lft x6=pcshiftx+3thin; x7=x6; +%% y values +bot y3=thin; top y10=h-2thin; +y6=0.5[y3,y10]; y7=y6; +bot y4=-thin; top y9=h+thin; +y5=0.5[y3,y6]; +y8=11/12[y7,y10]; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z3..z4{right}..z5{up}...{-pdir}z6; % bottom bowl +draw z7{pdir}...z8{up}..z9{left}..z10; % top bowl +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,10,100); +endchar; % end "3" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{4} +% The digit `4'. +% \begin{macrocode} +cmchar "IMAJ digit 4"; +beginchar("4", 2sb#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +%% the stem +x1=x2=w-pcshiftx-jut; +y1=h; bot y2=0; +%% the crossbar +lft x3=pcshiftx; y3=0.33h; +rt x4=w-pcshiftx; y4=y3; +%% the diagonal +lft x5=pcshiftx+jut; y5=h; +x6=x5; y6=y4; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % main stem +%%draw_clubbase(1, 2, 1/3, 0, clubjut); +draw z3--z4; % crossbar +draw z3{(1,1)}..{(1,1)}z1; % diagonal +ductus:=false; +penlabels(1,2,3,4,100); +endchar; % end "4" + +% \end{macrocode} +% \end{routine} +% +% +% +% \begin{routine}{5} +% The digit `5'. +% \begin{macrocode} +cmchar "IMAJ digit 5"; +beginchar("5", 2sb#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +numeric n[]; +pcshiftx := sb; +pickup quill; +%% for the top +rt x1=w-pcshiftx; top y1=h; +lft x2=pcshiftx; y2=y1; +z2'=(lft x2, top y2); z2''=(rt x2, y2'); +z0'=(x2', 0); z0''=(x2'', 0); +%% bowl +n1 := w-2pcshiftx+4/3thick; % width of bowl +n2 := 2/3h; % height of bowl +z3=(w-pcshiftx-n1, 0); +obowl(3, n1, n2); +z10o = (z2''--z0'') intersectionpoint subpath (3,4) of obouter; +z10i = (z2'--z0') intersectionpoint subpath (3,4) of obinner; +z10'=(x10i,y10o); +z20o = (z2'--z0') intersectionpoint subpath (2,3) of obouter; +z20i = (z2'--z0') intersectionpoint subpath (2,3) of obinner; +%%ductus:=true; +if ductus: + pickup stylus; + draw z2--z1; draw z2'--z0'; draw z2''--z0''; + draw obouter; draw obinner; +else: + draw z2--z1; % top bar + draw_triangle(1,thick); + fill z2'--z10i--z10o--z2''--cycle; % stem + fill z10o..z3minlo{pdir}..z3maxro{-ppdir}..z3minro{-pdir}..z20o-- + z20i..z3minri{pdir}..z3maxri{ppdir}..z3minli{-pdir}..z10i-- + z10'--cycle; +fi +ductus:=false; +penlabels(1,2,3,4,5,6,7,100); +endchar; % end "5" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{6} +% The digit `6'. +% \begin{macrocode} +cmchar "IMAJ digit 6"; +beginchar("6", 2sb#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +numeric n[]; +path pth[]; +pcshiftx := sb; +pickup quill; +n1 := w-2pcshiftx; % width of character +n2 := h; % height of character +%% main bowl +z3=(w-pcshiftx-n1,0); +obowl(3, n1, n2); +pth1 := obouter; pth2 := obinner; +z0 = (0,0); z0'=(w,h); +z10o' = (z0--z0') intersectionpoint subpath (0,1) of pth1; +z10i' = (z0--z0') intersectionpoint subpath (0,1) of pth2; +n0 := w-pcshiftx-x10o'; +z10o=(x10o'+n0, y10o'); +z10i=(x10i'+n0, y10i'); +%% bottom bowl +n3 := 16/12n2; % width +n4 := 2/3n2; % height +z13=(w-pcshiftx-n3, 0); +obowl(13, n3, n4); +pth11 := obouter; pth12 := obinner; +z20o = subpath (2,4) of pth2 intersectionpoint + (subpath (3,4) of pth11 & subpath (0,1) of pth11); +z20i = subpath (2,4) of pth2 intersectionpoint + (subpath (3,4) of pth12 & subpath (0,1) of pth12); +%%ductus:=true; +if ductus: + pickup stylus; + draw subpath (2,4) of pth2; + draw (subpath (3,4) of pth11 & subpath (0,1) of pth11); + draw (subpath (3,4) of pth12 & subpath (0,1) of pth12); +else: + fill z10o..z3minlo{-pdir}..z3maxlo{-ppdir}..z3minro{pdir}.. + z13maxro{ppdir}..{-pdir}z20o--z20i{pdir}..z13maxri{-ppdir}.. + z3minri{-pdir}..z3maxli{ppdir}..z3minli{pdir}..z10i-- + cycle; +fi +ductus:=false; +penlabels(1,2,3,4,5,6,8,100); +endchar; % end "6" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{7} +% The digit `7'. +% \begin{macrocode} +cmchar "IMAJ digit 7"; +beginchar("7", 2sb#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +%% top bar +lft x1=pcshiftx; +rt x2=w-pcshiftx; +top y1=top y2=h; +x8=pcshiftx+3/8jut; y8=h-0.5thin; +%% bowed leg +x4=w/2; bot y4=0; +x3=0.5[x2,x4]-3thin; y3=0.5[y2,y4]; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2; % top bar +draw_triangle(1,thick); +draw z2..z3..z4; % leg +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,100); +endchar; % end "7" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{8} +% The digit `8'. +% \begin{macrocode} +cmchar "IMAJ digit 8"; +beginchar("8", 2sb#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric alpha; alpha:=1; +pickup quill; +lft x1=alpha*pcshiftx+o; rt x3=w-alpha*pcshiftx-o; y1=y3=3/4h; +x2=x4=w/2; top y2=h+o; bot y4=-o; +x5=x2; y5=h/2+2o; +lft x11=pcshiftx; rt x13=w-pcshiftx; y11=y13=1/4h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1..z2..z3..z5..z11..z4..z13..z5..cycle; +ductus:=false; +penlabels(1,2,3,4,5,11,13,100); +endchar; % end "8" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{9} +% The digit `9'. +% \begin{macrocode} +cmchar "IMAJ digit 9"; +beginchar("9", 2sb#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +numeric n[]; +path pth[]; +pcshiftx := sb; +pickup quill; +n1 := w-2pcshiftx; % width of character +n2 := h; % height of character +%% main bowl +z3=(w-pcshiftx-n1,0); +obowl(3, n1, n2); +pth1 := obouter; pth2 := obinner; +z0=(0,0); z0'=(w,h); +z20o' = (z0--z0') intersectionpoint subpath (2,3) of pth1; +z20i' = (z0--z0') intersectionpoint subpath (2,3) of pth2; +n0 := x20o'-pcshiftx; +z20o=(x20o'-n0, y20o'); +z20i=(x20i'-n0, y20i'); +%% bottom bowl +n3 := 16/12n2; % width +n4 := 2/3n2; % height +z13=(pcshiftx,h-n4); +obowl(13, n3, n4); +pth11 := obouter; pth12 := obinner; +z10o = subpath (0,2) of pth2 intersectionpoint subpath (1,3) of pth11; +z10i = subpath (0,2) of pth2 intersectionpoint subpath (1,3) of pth12; +%%ductus:=true; +if ductus: + pickup stylus; + draw subpath (0,2) of pth2; + draw subpath (1,3) of pth11; + draw subpath (1,3) of pth12; +else: + fill z20o..z3minro{pdir}..z3maxro{ppdir}..z3minlo{-pdir}.. + z13maxlo{-ppdir}..{pdir}z10o--z10i{-pdir}..z13maxli{ppdir}.. + z3minli{pdir}..z3maxri{-ppdir}..z3minri{-pdir}..z20i-- + cycle; +fi +ductus:=false; +penlabels(1,2,3,4,5,6,100); +endchar; % end "9" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{0} +% The digit `0'. +% \begin{macrocode} +cmchar "Uncial digit 0"; +beginchar("0", 2sb#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +numeric n[]; +pcshiftx := sb; +pickup quill; +n1 := w-2pcshiftx; % bowl width +n2 := h+2o; % bowl height +z1=(pcshiftx,-o); +obowl(1, n1, n2); +%%ductus:=true; +if ductus: + pickup stylus; +fi +fill obouter; unfill obinner; +ductus:=false; +%%%proofpcbb(100, y100, y100); +penlabels(1,2,3,4,100); +endchar; % end "0" + +% \end{macrocode} +% \end{routine} +% +% +% +% +% The end of this file. +% \begin{macrocode} +% +% \end{macrocode} +% +% \section{The font definition files} \label{sec:fd} +% +% The font comes in normal and bold weights only. +% +% \begin{macrocode} +%<*fdot1> +\DeclareFontFamily{OT1}{imaj}{} + \DeclareFontShape{OT1}{imaj}{m}{n}{ <-8.5> imaj7 <8.5-15> imaj10 <15-> imaj17 }{} + \DeclareFontShape{OT1}{imaj}{m}{sl}{ <-> sub * imaj/m/n }{} + \DeclareFontShape{OT1}{imaj}{m}{it}{ <-> sub * imaj/m/n }{} + \DeclareFontShape{OT1}{imaj}{m}{sc}{ <-> sub * imaj/m/n }{} + \DeclareFontShape{OT1}{imaj}{m}{u}{ <-> sub * imaj/m/n }{} + \DeclareFontShape{OT1}{imaj}{bx}{n}{ <-8.5> imajb7 <8.5-15> imajb10 <15-> imajb17 }{} + \DeclareFontShape{OT1}{imaj}{bx}{it}{ <-> sub * imaj/bx/n }{} + \DeclareFontShape{OT1}{imaj}{bx}{sl}{ <-> sub * imaj/bx/n }{} + \DeclareFontShape{OT1}{imaj}{b}{n}{ <-> sub * imaj/bx/n }{} +% +% \end{macrocode} +% +% +% \begin{macrocode} +%<*fdt1> +\DeclareFontFamily{T1}{imaj}{} + \DeclareFontShape{T1}{imaj}{m}{n}{ <-8.5> imaj7 <8.5-15> imaj10 <15-> imaj17 }{} + \DeclareFontShape{T1}{imaj}{m}{sl}{ <-> sub * imaj/m/n }{} + \DeclareFontShape{T1}{imaj}{m}{it}{ <-> sub * imaj/m/n }{} + \DeclareFontShape{T1}{imaj}{m}{sc}{ <-> sub * imaj/m/n }{} + \DeclareFontShape{T1}{imaj}{m}{u}{ <-> sub * imaj/m/n }{} + \DeclareFontShape{T1}{imaj}{bx}{n}{ <-8.5> imajb7 <8.5-15> imajb10 <15-> imajb17 }{} + \DeclareFontShape{T1}{imaj}{bx}{it}{ <-> sub * imaj/bx/n }{} + \DeclareFontShape{T1}{imaj}{bx}{sl}{ <-> sub * imaj/bx/n }{} + \DeclareFontShape{T1}{imaj}{b}{n}{ <-> sub * imaj/bx/n }{} +% +% \end{macrocode} +% +% \section{The package code} \label{sec:code} +% +% \subsection{The \Lpack{inslrmaj} package} +% +% The \Lpack{inslrmaj} package is for typesetting short pieces of text +% in the \thisfont{} fonts. +% +% Announce the name and version of the package, which requires +% \LaTeXe{}. +% \begin{macrocode} +%<*usc> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{inslrmaj}[1999/05/22 v1.0 package for Insular Majuscule fonts] +% \end{macrocode} +% +% \begin{macro}{\Tienc} +% A macro for testing the value of |\encodingdefault|. +% \begin{macrocode} +\providecommand{\Tienc}{T1} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\imajfamily} +% Selects the \thisfont{} font family in the OT1 or T1 encoding. +% \begin{macrocode} +\ifx\Tienc\encodingdefault + \newcommand{\imajfamily}{\usefont{T1}{imaj}{m}{n}} +\else + \newcommand{\imajfamily}{\usefont{OT1}{imaj}{m}{n}} +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\textimaj} +% Text command for the \thisfont{} font family. +% \begin{macrocode} +\DeclareTextFontCommand{\textimaj}{\imajfamily} +% \end{macrocode} +% \end{macro} +% +% The end of this package. +% \begin{macrocode} +% +% \end{macrocode} +% +% \subsection{The \Lpack{allimaj} package} +% +% The \Lpack{allimaj} package is intended for use when the entire document +% will be typeset in the book-hand. This is a minimal package. Because the +% book-hand should not contain arabic digits a fuller package would redefine +% anything numbered in \LaTeX{} to use roman instead of arabic numbering. +% Also, because of the large |\baselineskip| many other aspects of \LaTeX{} +% to do with vertical positioning should also be redefined. +% +% +% Announce the name and version of the package, which requires +% \LaTeXe{}. It also uses the \Lpack{inslrmaj} package. +% \begin{macrocode} +%<*uscall> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{allimaj}[1999/05/22 v1.0 package for all Insular Majuscule fonts] +\RequirePackage{inslrmaj} +% \end{macrocode} +% +% \begin{macro}{\Tienc} +% A macro for testing the value of |\encodingdefault|. +% \begin{macrocode} +\providecommand{\Tienc}{T1} +% \end{macrocode} +% \end{macro} +% +% Redefine the default fonts to be \thisfont, which has only one family +% member. +% \begin{macro}{\rmdefault} +% \begin{macro}{\sfdefault} +% \begin{macro}{\ttdefault} +% \begin{macrocode} +\renewcommand{\rmdefault}{imaj} +\renewcommand{\sfdefault}{imaj} +\renewcommand{\ttdefault}{imaj} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The `leading' in the book-hands is a function of the |x-height|, which is +% normally much +% greater than for the CMR fonts. I have borrowed code from Frank Jensen's +% \Lpack{beton} package~\cite{BETON} to do this. The |x-height| (in points) +% for the CMR +% fonts is given in Table~\ref{tab:cmrx}. Note that the CMR design sizes are +% 5--10, 12, and 17.28 points. The other values given are scaled from these +% figures. +% +% \begin{table} +% \centering +% \caption{The x heights of the CMR and \thisfont{} fonts} \label{tab:cmrx} +% \begin{tabular}{ccc} \hline +% Design & CMR & \thisfont \\ +% Size & X Height & X Height \\ \hline +% 5 & 2.14 & 3.00 \\ ^^A CMR skip = 6pt = 2.8 times +% 6 & 2.58 & 3.61 \\ ^^A CMR skip = 7pt = 2.7 times +% 7 & 3.00 & 4.20 \\ ^^A CMR skip = 8pt = 2.7 times +% 8 & 3.44 & 4.81 \\ ^^A CMR skip = 9.5pt = 2.8 times +% 9 & 3.86 & 5.40 \\ ^^A CMR skip = 11pt = 2.8 times +% 10 & 4.31 & 6.03 \\ ^^A CMR skip = 12pt = 2.8 times +% 11 & 4.74 & 6.64 \\ ^^A CMR skip = 13.6pt = 2.8 times +% 12 & 5.17 & 7.24 \\ ^^A CMR skip = 14.5pt = 2.8 times +% 14 & 6.03 & 8.44 \\ ^^A CMR skip = 18pt = 3.0 times +% 17 & 7.44 & 10.41 \\ ^^A CMR skip = 22pt = 3.0 times +% 20 & 8.75 & 12.25 \\ ^^A CMR skip = 25pt = 2.9 times +% 25 & 10.94 & 15.32 \\ ^^A CMR skip = 30pt = 2.7 times +% \hline +% \end{tabular} +% \end{table} +% +% \begin{macro}{\imaj@baselineskip@table} +% A table of the normal font sizes and the corresponding baselineskip. +% The distance between baselines for \thisfont{} is over twice +% the |x-height|. ^^A actually 2.5 times to nearest half point +% +% \begin{macrocode} +\newcommand{\imaj@baselineskip@table}{% + <\@vpt>7.5% + <\@vipt>9.0% + <\@viipt>10.5% + <\@viiipt>12.0% + <\@ixpt>13.5% + <\@xpt>15.0% + <\@xipt>16.5% + <\@xiipt>18.0% + <\@xivpt>21.0% + <\@xviipt>26.0% + <\@xxpt>30.5% + <\@xxvpt>38.5} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\imaj@new@setfontsize} +% This is a macro that replaces the |\@setfontsize| macro which is called by +% the font size changing commands. +% \begin{macrocode} +\newcommand{\imaj@new@setfontsize}[3]{% + \edef\@tempa{\def\noexpand\@tempb####1<#2}% + \@tempa>##2<##3\@nil{\def\imaj@baselineskip@value{##2}}% + \edef\@tempa{\noexpand\@tempb\imaj@baselineskip@table<#2}% + \@tempa><\@nil + \ifx\imaj@baselineskip@value\@empty + \def\imaj@baselineskip@value{#3}% + \fi + \imaj@old@setfontsize{#1}{#2}\imaj@baselineskip@value} +% \end{macrocode} +% \end{macro} +% +% We had better give an author a means of using The Computer Modern fonts +% if necessary. +% +% \begin{macro}{\cmrfamily} +% \begin{macro}{\cmssfamily} +% \begin{macro}{\cmttfamily} +% These macros select the Computer Modern Roman, Sans, and Typewriter +% font families in either the T1 or OT1 encodings. +% \begin{macrocode} +\ifx\Tienc\encodingdefault + \providecommand{\cmrfamily}{\usefont{T1}{cmr}{m}{n}} + \providecommand{\cmssfamily}{\usefont{T1}{cmss}{m}{n}} + \providecommand{\cmttfamily}{\usefont{T1}{cmtt}{m}{n}} +\else + \providecommand{\cmrfamily}{\usefont{OT1}{cmr}{m}{n}} + \providecommand{\cmssfamily}{\usefont{OT1}{cmss}{m}{n}} + \providecommand{\cmttfamily}{\usefont{OT1}{cmtt}{m}{n}} +\fi +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\textcmr} +% Text command for the Computer Modern Roman font family. +% \begin{macrocode} +\DeclareTextFontCommand{\textcmr}{\cmrfamily} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\textcmss} +% Text command for the Computer Modern Sans font family. +% \begin{macrocode} +\DeclareTextFontCommand{\textcmss}{\cmssfamily} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\textcmtt} +% Text command for the Computer Modern Typewriter font family. +% \begin{macrocode} +\DeclareTextFontCommand{\textcmtt}{\cmttfamily} +% \end{macrocode} +% \end{macro} +% +% +% At the start of the document, change the |\@setfontsize| macro and call +% the normal font to implement the change. +% \begin{macrocode} +\AtBeginDocument{% + \let\imaj@old@setfontsize=\@setfontsize + \let\@setfontsize=\imaj@new@setfontsize} +\AtBeginDocument{\normalsize} +% \end{macrocode} +% +% +% The end of this package. +% \begin{macrocode} +% +% \end{macrocode} +% +% +% +% +% +% \Finale +% \PrintIndex +% +\endinput + +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} + + diff --git a/Master/texmf-dist/source/fonts/bookhands/inslrmaj.ins b/Master/texmf-dist/source/fonts/bookhands/inslrmaj.ins new file mode 100644 index 00000000000..7860d41ef11 --- /dev/null +++ b/Master/texmf-dist/source/fonts/bookhands/inslrmaj.ins @@ -0,0 +1,101 @@ +%% +%% inslrmaj.ins +%% Copyright 1999 Peter R. Wilson +%% +%% This program is provided under the terms of the +%% LaTeX Project Public License distributed from CTAN +%% archives in directory macros/latex/base/lppl.txt. +%% +%% Author: Peter Wilson (CUA) +%% now at: peter.r.wilson@boeing.com +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\batchfile{inslrmaj.ins} +\input docstrip.tex +\preamble + + Copyright 1999 Peter R. Wilson + + This program is provided under the terms of the + LaTeX Project Public License distributed from CTAN + archives in directory macros/latex/base/lppl.txt. + +Author: Peter Wilson (CUA) + now at: peter.r.wilson@boeing.com + +\endpreamble + +\keepsilent + +%%% \Msg{*** Generating the driver file ***} +%%% \generateFile{inslrmaj.drv}{t}{\from{inslrmaj.dtx}{driver}} + +\Msg{*** Generating the Metafont files ***} + +\usepostamble\empty +\generateFile{imaj7.mf}{t}{\from{inslrmaj.dtx}{base7}} +\generateFile{imaj10.mf}{t}{\from{inslrmaj.dtx}{base10}} +\generateFile{imaj17.mf}{t}{\from{inslrmaj.dtx}{base17}} +\generateFile{imajb7.mf}{t}{\from{inslrmaj.dtx}{base7b}} +\generateFile{imajb10.mf}{t}{\from{inslrmaj.dtx}{base10b}} +\generateFile{imajb17.mf}{t}{\from{inslrmaj.dtx}{base17b}} +\generateFile{imajl.mf}{t}{\from{inslrmaj.dtx}{min}} +\generateFile{imaju.mf}{t}{\from{inslrmaj.dtx}{maj}} +\generateFile{imajtitle.mf}{t}{\from{inslrmaj.dtx}{mfd}} +\generateFile{imajpunct.mf}{t}{\from{inslrmaj.dtx}{punct}} +\generateFile{imajlig.mf}{t}{\from{inslrmaj.dtx}{lig}} +\generateFile{imajdig.mf}{t}{\from{inslrmaj.dtx}{dig}} + +\Msg{*** Generating the Font Definition files ***} +\usepostamble\defaultpostamble + +\generateFile{ot1imaj.fd}{t}{\from{inslrmaj.dtx}{fdot1}} +\generateFile{t1imaj.fd}{t}{\from{inslrmaj.dtx}{fdt1}} + +\Msg{*** Generating the LaTeX2e package files ***} + +\generateFile{inslrmaj.sty}{t}{\from{inslrmaj.dtx}{usc}} +\generateFile{allimaj.sty}{t}{\from{inslrmaj.dtx}{uscall}} + +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into directories searched by TeX:} +\Msg{*} +\Msg{* Move these into the font source area:} +\Msg{* \space\space imaj7.mf} +\Msg{* \space\space imaj10.mf} +\Msg{* \space\space imaj17.mf} +\Msg{* \space\space imajb7.mf} +\Msg{* \space\space imajb10.mf} +\Msg{* \space\space imajb17.mf} +\Msg{* \space\space imajl.mf} +\Msg{* \space\space imaju.mf} +\Msg{* \space\space imajtitle.mf} +\Msg{* \space\space imajpunct.mf} +\Msg{* \space\space imajlig.mf} +\Msg{* \space\space imajdig.mf} +\Msg{*} +\Msg{* Move these into the LaTeX macro area:} +\Msg{* \space\space ot1imaj.fd} +\Msg{* \space\space t1imaj.fd} +\Msg{* \space\space inslrmaj.sty} +\Msg{* \space\space allimaj.sty} +\Msg{*} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* `.dtx' through LaTeX.} +\Msg{* Process any name.idx file by:} +\Msg{* \space\space\space\space makeindex -s gind.ist name} +\Msg{* Process any name.glo file by:} +\Msg{* \space\space\space\space makeindex -s gglo.ist -o name.gls name.glo} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} + +\endinput diff --git a/Master/texmf-dist/source/fonts/bookhands/inslrmin.dtx b/Master/texmf-dist/source/fonts/bookhands/inslrmin.dtx new file mode 100644 index 00000000000..ea25389999a --- /dev/null +++ b/Master/texmf-dist/source/fonts/bookhands/inslrmin.dtx @@ -0,0 +1,4630 @@ +% \iffalse meta-comment +% +% inslrmin.dtx +% Copyright 1999 Peter R. Wilson +% +% This program is provided under the terms of the +% LaTeX Project Public License distributed from CTAN +% archives in directory macros/latex/base/lppl.txt. +% +% Author: Peter Wilson (CUA) (now at: peter.r.wilson@boeing.com) +% +% If you do not have the docmfp package (available from CTAN in +% tex-archive/macros/latex/contrib/supported), comment out the +% \usepackage{docmfp} line below and uncomment the line following it. +% +%<*driver> +\documentclass{ltxdoc} +\usepackage{docmfp} +%%%%%% \providecommand{\DescribeVariable}[1]{} \newenvironment{routine}[1]{}{} +\EnableCrossrefs +\CodelineIndex +%% comment out next line to see the code +\OnlyDescription +\setcounter{StandardModuleDepth}{1} +\begin{document} + \DocInput{inslrmin.dtx} +\end{document} +% +% +% \fi +% +% \CheckSum{134} +% +% \DoNotIndex{\',\.,\@M,\@@input,\@addtoreset,\@arabic,\@badmath} +% \DoNotIndex{\@centercr,\@cite} +% \DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue} +% \DoNotIndex{\@input,\@ixpt,\@m} +% \DoNotIndex{\@minus,\@mkboth,\@ne,\@nil,\@nomath,\@plus,\@set@topoint} +% \DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb} +% \DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt} +% \DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt} +% \DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace} +% \DoNotIndex{\advance,\Alph,\alph} +% \DoNotIndex{\arabic,\ast,\begin,\begingroup,\bfseries,\bgroup,\box} +% \DoNotIndex{\bullet} +% \DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption} +% \DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass} +% \DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\endtrivlist} +% \DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup} +% \DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter} +% \DoNotIndex{\fbox} +% \DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef} +% \DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule} +% \DoNotIndex{\hsize,\hskip,\hspace,\hss,\if@tempswa,\ifcase,\or,\fi,\fi} +% \DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\fi,\fi,\fi,\fi,\fi} +% \DoNotIndex{\input} +% \DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark} +% \DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright} +% \DoNotIndex{\month,\newcommand,\newcounter,\newenvironment} +% \DoNotIndex{\NeedsTeXFormat,\newdimen} +% \DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number} +% \DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\p@} +% \DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip} +% \DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions} +% \DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright} +% \DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font} +% \DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily,\roman} +% \DoNotIndex{\roman,\secdef,\selectfont,\setbox,\setcounter,\setlength} +% \DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space} +% \DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase} +% \DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt} +% \DoNotIndex{\viipt,\vipt,\vskip,\vspace} +% \DoNotIndex{\wd,\xiipt,\year,\z@} +% +% \changes{v1.0}{2002/12/30}{First public release} +% +% \def\fileversion{v1.0} +% \def\filedate{2002/12/30} +% \newcommand*{\Lpack}[1]{\textsf {#1}} ^^A typeset a package +% \newcommand*{\Lopt}[1]{\textsf {#1}} ^^A typeset an option +% \newcommand*{\file}[1]{\texttt {#1}} ^^A typeset a file +% \newcommand*{\Lcount}[1]{\textsl {\small#1}} ^^A typeset a counter +% \newcommand*{\pstyle}[1]{\textsl {#1}} ^^A typeset a pagestyle +% \newcommand*{\Lenv}[1]{\texttt {#1}} ^^A typeset an environment +% \newcommand*{\AD}{\textsc{ad}} +% \newcommand*{\thisfont}{Insular Minuscule} +% +% \title{The \Lpack{Insular Minuscule} fonts\thanks{This +% file has version number \fileversion, last revised +% \filedate.}} +% +% \author{% +% Peter Wilson\\ +% Catholic University of America \\ +% Now at \texttt{peter.r.wilson@boeing.com} +% } +% \date{\filedate} +% \maketitle +% \begin{abstract} +% The \Lpack{inslrmin} and \Lpack{allimin} packages provide a set of +% Metafont \thisfont{} book-hands +% as used +% for manuscripts from the 6th century onwards. This is one in a series +% of manuscript fonts. +% \end{abstract} +% \tableofcontents +% \listoftables +% +% +% +% +% \section{Introduction} +% +% The \Lpack{inslrmin} and \Lpack{allimin} packages provide a Metafont~\cite{METAFONT} version +% of the \thisfont{} manuscript book-hand that was in use from the +% sixth century~\AD{} onwards. It is part of a project to provide fonts +% covering the major manuscript hands between the first century~\AD{} and +% the invention of printing. The principal resources used in this project +% are listed in the Bibliography. +% +% This manual is typeset according to the conventions of the +% \LaTeX{} \textsc{docstrip} utility which enables the automatic +% extraction of the \LaTeX{} macro source files~\cite{GOOSSENS94}. +% The \Lpack{docmfp} package is used for documenting the Metafont portions +% of the distribution~\cite{DOCMFP}. +% +% Section~\ref{sec:usc} describes the usage of the package. +% Commented code for the fonts is in Sections~\ref{sec:mf} and~\ref{sec:fd} +% and source code for the package is in Section~\ref{sec:code}. +% +% \subsection{Manuscript book-hands} +% +% Before the invention of printing all books were written by hand. The book-hands +% used by the scribes and copyists for the manuscripts changed as time +% went on. Table~\ref{tab:1} lists some of the common book-hands which were used +% between the 1st and 15th centuries. The later book-hands formed the basis of the +% fonts used by the early printers, which in turn form the basis of the printing +% fonts in use today. +% +% The manuscript book-hands were written with a broad nibbed reed or quill +% pen. Among the distinguishing characteristics of a hand, apart from the +% actual shape of the letters, are the angle of the pen (which controls the +% variation between thick and thin strokes) and the height of a letter compared +% to the width of the nib. The lower the ratio of the letter height to nib +% width, the more condensed is the script. The scripts also varied in their +% typical height. +% +% Table~\ref{tab:1} gives an `average' x-height for each +% script, which I obtained by measuring a sample of photographs of +% manuscripts written in the various hands. About a dozen examples +% of each book-hand were measured. This figure should not be taken too +% seriously. +% +% There was not a sharp division between the use of one hand and another. +% Many manuscripts exhibit a variety of hands in the same document. For example, +% the scribe writing in an Uncial hand may have used Roman Rustic letters +% for capitals. Usually the same pen was used for the two different scripts. +% +% Generally speaking, as a hand got older it became more embelished, and +% therefore took longer to write. As this happened a new hand would appear that +% was faster, and which would eventually make the earlier one obsolete. +% +% Many of the book-hands were single-cased; that is, they did not have an +% upper- and lower-case as we do nowadays in Western scripts. On the other +% hand, a script might be majuscule or minuscule. A \textit{majuscule} script +% is one, like our upper-case, where the letters are drawn between two lines +% and are of a uniform height with no ascenders or descenders. +% A \textit{minuscule} script, like our lower-case, is drawn between four lines +% and has ascenders and descenders. +% +% \begin{table} +% \centering +% \caption{The main manuscript book-hands} \label{tab:1} +% \begin{tabular}{lccccc} \hline +% Name & Century & x-height & Height & Pen & Normalised \\ +% & & (mm) & (nib widths) & angle & height \\ \hline +% Roman Rustic & 1--6 & 5.7 & 4--6 & 45 & 1.90 \\ +% Uncial & 3--6 & 4.1 & 4--5 & 30 & 1.37 \\ +% Half Uncial & 3--9 & 3.2 & 3--6 & 20--30 & 1.07 \\ +% Artificial Uncial & 6--10 & 4.2 & 3--6 & 10 & 1.40 \\ +% Insular majuscule & 6--9 & 4.2 & 5 & 0--20 & 1.40 \\ +% Insular minuscule & 6 onward & 4.1 & 5--6 & 45--70 & 1.37 \\ +% Carolingian minuscule & 8--12 & 3.0 & 3--5 & 45 & 1.00 \\ +% Early Gothic & 11--12 & 3.8 & 4--6 & 20--45 & 1.27 \\ +% Gothic Textura & 13--15 & 3.9 & 3--5 & 30--45 & 1.30 \\ +% Gothic Prescius & 13 onward & 3.3 & 4--5 & 45 & 1.10 \\ +% Rotunda & 13--15 & 3.2 & 4--6 & 30 & 1.07 \\ +% Humanist minuscule & 14 onward & 3.0 & 4--5 & 30--40 & 1.00 \\ \hline +% \end{tabular} +% \end{table} +% +% During the period under consideration arabic numerals were effectively +% not used. At the beginning they were unknown and even though some knew +% of them towards the end, the glyphs used for them are not recognisable --- +% to me they look somewhat like cryllic letters --- and each locality +% and time had its own highly individualistic rendering. The general rule +% when using one of these book-hands is to write all numbers using +% roman numerals. +% +% The Roman alphabet consisted of 23 capital letters --- the J, U and W +% were absent. The book-hands initially used both a `u' and a `v' interchangeably +% but by the 10th century the practice had become to use the `v' before a vowel +% and the `u' otherwise. The letter corresponding to the W sound appeared +% in England around the 7th century in +% the form of the runic \textit{wen} character and by about the 11th century +% the `w' chacter was generally used. The `J' is the newest letter of all, not +% appearing until about the mid 16th century. +% +% In the first century punctuation was virtually unknown, and typically +% would not even be any additional space between individual words, never +% mind denoting ends of sentences. Sometimes a dot at mid-height would be +% used as a word seperator, or to mark off the end of a paragraph. Effectively +% a text was a continuous stream of letters. By the time that printing was +% invented, though, all of our modern punctuation marks were being used. +% +% Among all these manuscript hands, the Carolingian minuscule is the +% most important as our modern fonts are based on its letter shapes, and it is +% also at this point in time where the division occured between the black letter +% scripts as used even today in Germany, and the lighter fonts used elesewhere. +% The Rotunda and Humanist minuscule hands were developed in Italy and were +% essentially a rediscovery of the Carolingian minusucle. Guthenberg took the +% Gothic 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 has been in use from the sixth century. +% It was originally developed in Ireland by St.~Patrick's monks +% as a less formal and faster hand than the Insular majuscule, +% the most famous example of which is the \textit{Book of Kells}. +% +% Although the letter shapes in this book-hand are principally of +% a lower-case form, there are a few that are shaped like capital letters. +% For example, the `n' appeared as both an `n' and as an `N', +% while the `f' and `r' were written like `F' and `R'. +% Some letters had multiple forms. As well as the `n' the `r' could be written +% as either `r' or `R'. +% +% The letters were written very close together and the scibes used many +% adhoc ligatures. A favourite was using a long `e' before a letter +% with a bar at the x-height, and joining the crossbar of the `e' to +% the bar of the following letter, for instance the pair `eg'. +% I have only provided the ampersand, `\&', as a ligature, standing for +% `et' which is the Latin for `and'. +% Letters were also stretched if a line +% needed some filling. For example, the capital form of the `N' might be +% stretched to 2 or 3 times its normal width. +% +% Usually the +% lettering in a manuscript was all one size. If the scribe felt the need +% for `capital' letters then, using the same pen, would either write a larger +% \thisfont{} letter or a letter from one of the more formal book-hands. +% I have provided a set of `capital' letters that are only a little larger +% than the normal letters for use in running text. +% During the time the \thisfont{} script was used the alphabet only had 24 +% letters. I have included the missing J. +% +% Arabic numerals were unknown at this time, so all numbers were written +% using the roman numbering system. I have provided \thisfont{} versions of +% the arabic digits. +% +% Punctuation was used, but not with the frequency of today. +% A sentence might be ended with +% a dot at mid-height or a paragraph ended with a colon, also at mid-height. +% The comma was was a small +% slash; the semi-colon was known, as was the single quotation +% mark which was represented by a raised comma. +% +% +% \section{The \Lpack{inslrmin} and \Lpack{allimin} packages} \label{sec:usc} +% +% The \thisfont{} font family is called |imin|. The font is supplied in both +% OT1 and T1 encodings. +% +% \subsection{The \Lpack{inslrmin} 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{\iminfamily} +% The |\iminfamily| 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{\textimin} +% The command |\textimin{|\meta{text}|}| will typeset \meta{text} using the +% \thisfont{} fonts. +% +% \subsection{The \Lpack{allimin} 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{allimin} package automatically loads the \Lpack{inslrmin} package, +% so its font commands are available if necessary. +% +% \StopEventually{ +% \bibliographystyle{alpha} +% \renewcommand{\refname}{Bibliography} +% \begin{thebibliography}{GMS94} +% \addcontentsline{toc}{section}{\refname} +% +% \bibitem[And69]{ANDERSON69} +% Donald M.~Anderson. +% \newblock {\em The Art of Written Forms: The Theory and Practice of Calligraphy}. +% \newblock Holt, Rinehart and Winston, 1969. +% +% \bibitem[Bol95]{BOLOGNA95} +% Giulia Bologna. +% \newblock {\em Illuminated Manuscripts: The Book before Gutenberg}. +% \newblock Crescent Books, 1995. +% +% \bibitem[Day95]{DAY95} +% Lewis F.~Day. +% \newblock {\em Alphabets Old \& New}. +% \newblock (3rd edition originally published by B.~T.~Batsford, 1910) +% \newblock Senate, 1995. +% +% \bibitem[Dro80]{DROGIN80} +% Marc Drogin. +% \newblock {\em Medieval Calligraphy: Its History and Technique}. +% \newblock Allenheld, Osmun \& Co., 1980. +% +% \bibitem[Dru95]{DRUCKER95} +% Johanna Drucker. +% \newblock {\em The Alphabetic Labyrinth}. +% \newblock Thames \& Hudson, 1995. +% +% \bibitem[Fir93]{FIRMAGE93} +% Richard A.~Firmage. +% \newblock {\em The Alphabet Abecedarium}. +% \newblock David R~Goodine, 1993. +% +% \bibitem[Fli98]{LETTRINE} +% Daniel Flipo. +% \newblock {\em The LETTRINE package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1998. +% +% \bibitem[Har95]{HARRIS95} +% David Harris. +% \newblock {\em The Art of Calligraphy}. +% \newblock DK Publishing, 1995. +% +% \bibitem[Jen95]{BETON} +% Frank Jensen. +% \newblock {\em The BETON package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1995. +% +% \bibitem[Joh71]{JOHNSTON75} +% Edward Johnston (ed. Heather Child). +% \newblock {\em Formal Penship and Other Papers}. +% \newblock Penthalic, 1971. +% +% \bibitem[Knu87]{CM} +% Donald E.~Knuth. +% \newblock {\em Computer Modern Typefaces}. +% \newblock Addison-Wesley, 1987. +% +% \bibitem[Knu92]{METAFONT} +% Donald E.~Knuth. +% \newblock {\em The METAFONTbook}. +% \newblock Addison-Wesley, 1992. +% +% \bibitem[GMS94]{GOOSSENS94} +% Michel Goossens, Frank Mittelbach, and Alexander Samarin. +% \newblock {\em The LaTeX Companion}. +% \newblock Addison-Wesley Publishing Company, 1994. +% +% \bibitem[Tho75]{THOMAS75} +% Alan G.~Thomas. +% \newblock {\em Great Books and Book Collectors}. +% \newblock Weidenfield and Nichoson, 1975. +% +% \bibitem[Wil99]{DOCMFP} +% Peter R.~Wilson. +% \newblock {\em The DOCMFP Package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1999. +% +% \bibitem[Wil99b]{ROMANNUM} +% Peter R.~Wilson. +% \newblock {\em The ROMANNUM Package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1999. +% +% \end{thebibliography} +% } +% +% \section{The Metafont code} \label{sec:mf} +% +% +% As previously noted, this work is part of a larger project to provide +% fonts covering the main manuscript book-hands. As such, one of the +% aims is to produce a coordinated set of fonts, especially as multiple +% hands might be used in a single document. +% +% Noting that the hands tend to be somewhat larger than the typical 10pt +% size (where the x-height is approximately 1.5mm) used for modern books, +% I have also designed the fonts +% at a larger than normal size, then applied some non-linear factors when reducing +% them down to a 10pt size. +% Further, I have used the height of the Carolingian minuscule as a +% normalising factor when deciding on the absolute height of any particular +% script. The x-height of the Carolingian font is made equal to the +% x-height of the Computer Modern Roman (CMR) font. +% +% Modern fonts are effectively drawn. That is, the outline of the letter is +% drawn carefully and the center is filled with ink. This is shown to good +% effect in the Metafont code for the Computer Modern fonts~\cite{CM}. +% In contrast, the manuscript letters were inked by single pen strokes in +% a calligraphic manner. I have tried to repeat this calligraphic style +% in the Metafont code. +% +% As much as possible I have tried to use parameter values from the +% Computer Modern Roman (CMR) fonts in order to reduce possible +% infelicities if the CM and manuscript fonts are used together. However, +% few of the CMR parameters are applicable to the calligraphic style. +% +% +% \subsection{The parameter file} +% +% We deal with the parameter files first, and start by announcing +% what they are for. The \thisfont{} font comes in three sizes and also as a normal +% and a bold font. +% \begin{macrocode} +%<*base7|base10|base17|base7b|base10b|base17b> +%%%% IMIN7.MF Insular Minuscule at 7 point design size. +%%%% IMIN10.MF Insular Minuscule at 10 point design size. +%%%% IMIN17.MF Insular Minuscule at 17 point design size. +%%%% IMINB7.MF Insular Minuscule Bold at 7 point design size. +%%%% IMINB10.MF Insular Minuscule Bold at 10 point design size. +%%%% IMINB17.MF Insular Minuscule 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 + +%font_identifier:="IMIN"; font_size 7pt#; +%font_identifier:="IMIN"; font_size 10pt#; +%font_identifier:="IMIN"; font_size 17.28pt#; +%font_identifier:="IMINB"; font_size 7pt#; +%font_identifier:="IMINB"; font_size 10pt#; +%font_identifier:="IMINB"; font_size 17.28pt#; + +% \end{macrocode} +% +% \DescribeVariable{jutstretch} +% The CMR scaling for lowercase serifs wrt 17pt size. +% \begin{macrocode} +% jutstretch:=1.19; +% jutstretch:=1.152; +% jutstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{stemstretch} +% The CMR scaling for lowercase stem widths wrt 17pt size. +% \begin{macrocode} +% stemstretch:=1.50; +% stemstretch:=1.31; +% stemstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{caprat} +% The scaling for `capitals' wrt `lowercase'. This is pretty much a guess +% (the ratio for CMR10 is 1.59). +% \begin{macrocode} + caprat:=1.5; % ratio of capital height to minuscule height +% \end{macrocode} +% +% \DescribeVariable{cap_jutstretch} +% The CMR scaling for uppercase serifs wrt 17pt size. +% \begin{macrocode} +% cap_jutstretch:=1.3; +% cap_jutstretch:=1.2; +% cap_jutstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{cap_stemstretch} +% The CMR scaling for uppercase stem width wrt 17pt size. +% \begin{macrocode} +% cap_stemstretch:=1.45; +% cap_stemstretch:=1.31; +% cap_stemstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{bfudge} +% Letter width scaling for bold font wrt normal font. +% \begin{macrocode} +% bfudge:=1.0; +% bfudge:=1.2; +% \end{macrocode} +% +% \DescribeVariable{szfudge} +% Width scaling wrt 17pt letter width. +% \begin{macrocode} +% szfudge:=1.18; +% szfudge:=1.0; +% 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} +% carol_height#:=108.5/36pt#; +% carol_height#:=155/36pt#; +% carol_height#:=268/36pt#; +% \end{macrocode} +% +% \DescribeVariable{vstretch} +% The height of this font wrt the Carolingian font. +% \begin{macrocode} + vstretch:=1.37; + +% \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} +% u#:=15.5/36pt#; +% u#:=20/36pt#; +% u#:=32.5/36pt#; +% u#:=17.9/36pt#; +% u#:=23/36pt#; +% 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 +% cap_serif_fit#:=3.5/36pt#; % extra sidebar near uppercase serifs +% cap_serif_fit#:=5/36pt#; % extra sidebar near uppercase serifs +% cap_serif_fit#:=8/36pt#; % extra sidebar near uppercase serifs +% letter_fit#:=0pt#; % extra space added to all sidebars +% letter_fit#:=0pt#; % extra space added to all sidebars +% 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} +% sb#:=1/2u#; % unit for side bearings +% sb#:=1/2u#; % unit for side bearings +% sb#:=1/2u#; % unit for side bearings + +% \end{macrocode} +% +% \DescribeVariable{cap_height} +% The height of capital letters. +% \begin{macrocode} +% cap_height#:=172.2/36pt#; % height of caps +% cap_height#:=246/36pt#; % height of caps +% cap_height#:=425/36pt#; % height of caps +% \end{macrocode} +% +% \DescribeVariable{thickfudge} +% The reciprocal of the font height in nib widths. Normal font height +% is 6 nib widths and the bold font height is 5 nib widths. +% \begin{macrocode} +% thickfudge:=1/6; +% thickfudge:=1/5; +% \end{macrocode} +% +% \DescribeVariable{thinfudge} +% The nib sharpness. +% \begin{macrocode} +thinfudge:=1/6; +% \end{macrocode} +% +% \DescribeVariable{thick} +% The maximum nib width. +% That is, the width of the thickest line that can be penned. +% \begin{macrocode} +thick#:=stemstretch*thickfudge*x_height#; % max pen breadth +% \end{macrocode} +% +% \DescribeVariable{thin} +% The nib thinness. +% That is, the width of the thinnest line that can be penned. +% \begin{macrocode} +thin#:=thinfudge*thick#; +% \end{macrocode} +% +% \DescribeVariable{pangle} +% The pen angle (in degrees). +% \begin{macrocode} +pangle:=45; % pen angle +% \end{macrocode} +% +% \DescribeVariable{ascratio} +% The height of lower case ascenders wrt |x_height|. +% \begin{macrocode} + ascratio:=6/4; +% \end{macrocode} +% +% \DescribeVariable{asc_height} +% The height of lower case ascenders. +% \begin{macrocode} + asc_height#:=ascratio*x_height#; +% \end{macrocode} +% +% \DescribeVariable{descratio} +% The depth of lower case descenders wrt |x_height|. +% \begin{macrocode} + descratio:=5/4; +% \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} +% rule_thickness#:=.34pt#; +% rule_thickness#:=.4pt#; +% rule_thickness#:=.6pt#; + +% \end{macrocode} +% +% \DescribeVariable{jutfudge} +% Controls the protrusion of serifs. +% \begin{macrocode} +jutfudge:= 3/4; +%%%%jutfudge:= 1/2; +% \end{macrocode} +% +% \DescribeVariable{jut} +% The lowercase serif protrusion. +% \begin{macrocode} +jut#:=jutstretch*jutfudge*thick#; +% \end{macrocode} +% +% \DescribeVariable{srad} +% |srad| with |0 < srad < 1| controls the serif radius. +% \begin{macrocode} +srad:=0.8; % was 0.5 +% \end{macrocode} +% +% \DescribeVariable{trijut} +% The lowercase triangular serif protrusion. +% \begin{macrocode} +trijut#:=0.75jutstretch*thick#; +% \end{macrocode} +% +% \DescribeVariable{clubjut} +% The fractional protusion of the club base. +% \begin{macrocode} +clubjut:=5/12; +% \end{macrocode} +% +% \DescribeVariable{o} +% Amount of overshoot for curves (as in an `o'). Use CMR values. +% \begin{macrocode} +% o#:=5/36pt#; +% o#:=8/36pt#; +% o#:=10/36pt#; + +% \end{macrocode} +% +% \DescribeVariable{slant} +% |slant| is the amount the font slopes to the right. +% \begin{macrocode} +slant:=0; % tilt ratio $(\Delta x/\Delta y)$ + +% \end{macrocode} +% +% \DescribeVariable{monospace} +% We are generating a variable-width font. +% \begin{macrocode} +monospace:=false; % should all characters have the same width? + +% \end{macrocode} +% +% \DescribeVariable{dot_size} +% The size of (punctuation) dots. +% \begin{macrocode} +dot_size#:=5thin#; % size of dots +% \end{macrocode} +% +% \DescribeVariable{comma_width} +% The horizontal width of a comma. +% \begin{macrocode} +comma_width#:=2.5dot_size#; + +% \end{macrocode} +% +% Finally, call the driver file for the font. +% \begin{macrocode} +generate imintitle %% switch to the driver file + +% \end{macrocode} +% +% The end of this code section. +% \begin{macrocode} +% +% \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 IMINTITLE.MF for the Insular Minuscule 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}{inslrmin_font_setup} +% This macro contains the set up for the \thisfont{} fonts. +% \begin{macrocode} + +def inslrmin_font_setup= % contains special stuff for inslrmin fonts + define_pixels(side,half_height,carol_height,comma_width); + define_pixels(u,dot_size,letter_size,cap_height,width_adj,serif_fit, + cap_serif_fit,jut,cap_jut,trijut); + define_pixels(fig_width); + define_whole_pixels(letter_fit,sb); + define_whole_vertical_pixels(body_height,asc_height,cap_height,x_height, + desc_depth,body_depth,fig_height); + define_corrected_pixels(o); + define_blacker_pixels(thick,thin); + let adjust_fit = normal_adjust_fit; +% \end{macrocode} +% \DescribeVariable{stylus} +% The pen for drawing the thinnest lines is |stylus|. +% \begin{macrocode} + pickup pencircle scaled thin; + stylus:=savepen; +% \end{macrocode} +% \DescribeVariable{thickstylus} +% The pen for drawing lines a bit thicker than the thinnest is |thickstylus|. +% \begin{macrocode} + pickup pencircle scaled (1.5thin); + thickstylus:=savepen; +% \end{macrocode} +% \DescribeVariable{quill} +% The normal calligraphic pen is |quill|. +% \begin{macrocode} + pickup pencircle xscaled thick yscaled thin rotated pangle; + quill:=savepen; + numeric pcshiftx#; % x value of LHS of box wrt origin of char box + define_pixels(pcshiftx); + numeric sqxside#; % x size of the square + numeric sqyside#; % y size of the square + define_pixels(sqxside,sqyside); + +enddef; % end of inslrmin_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 $0y$$: + 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 $0y$$: + 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_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 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; +inslrmin_font_setup; + +% \end{macrocode} +% +% +% We generate letters, together with some punctuation and +% analphabetics. +% \begin{macrocode} + +input iminl; % lower case +input iminu; % capitals +input iminpunct; % punctuation +input iminlig; % the several dashes +input imindig; % 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. + +% \end{macrocode} +% +% \begin{macrocode} + k#:=-.5u#; kk#:=-1.5u#; kkk#:=-2u#; % three degrees of kerning + kks#:=-4u#; kkx#:=-1.5u#; kkj#:=-2u#; kkr#:=-5u#; kkrs#:=-2u#; kkrl#:=-8u#; + ligtable "s": + "a" kern kks#, "A" kern kks#, + "c" kern kks#, "C" kern kks#, + "d" kern kks#, "D" kern kks#, + "e" kern kks#, "E" kern kks#, + "f" kern kks#, "F" kern kks#, + "g" kern kks#, "G" kern kks#, + "i" kern kks#, "I" kern kks#, + "j" kern kks#, "J" kern kks#, + "k" kern kks#, "K" kern kks#, + "m" kern kks#, "M" kern kks#, + "n" kern kks#, "N" kern kks#, + "o" kern kks#, "O" kern kks#, + "p" kern kks#, "P" kern kks#, + "q" kern kks#, "Q" kern kks#, + "r" kern kks#, "R" kern kks#, + "t" kern kks#, "T" kern kks#, + "u" kern kks#, "U" kern kks#, + "v" kern kks#, "V" kern kks#, + "w" kern kks#, "W" kern kks#, + "x" kern kks#, "X" kern kks#, + "y" kern kks#, "Y" kern kks#, + "z" kern kks#, "Z" kern kks#; + + ligtable "S": + "a" kern kks#, "A" kern kks#, + "c" kern kks#, "C" kern kks#, + "d" kern kks#, "D" kern kks#, + "e" kern kks#, "E" kern kks#, + "f" kern kks#, "F" kern kks#, + "g" kern kks#, "G" kern kks#, + "i" kern kks#, "I" kern kks#, + "j" kern kks#, "J" kern kks#, + "k" kern kks#, "K" kern kks#, + "m" kern kks#, "M" kern kks#, + "n" kern kks#, "N" kern kks#, + "o" kern kks#, "O" kern kks#, + "p" kern kks#, "P" kern kks#, + "q" kern kks#, "Q" kern kks#, + "r" kern kks#, "R" kern kks#, + "t" kern kks#, "T" kern kks#, + "u" kern kks#, "U" kern kks#, + "v" kern kks#, "V" kern kks#, + "w" kern kks#, "W" kern kks#, + "x" kern kks#, "X" kern kks#, + "y" kern kks#, "Y" kern kks#, + "z" kern kks#, "Z" kern kks#; + + ligtable "x": + "a" kern kkx#, "A" kern kkx#, + "b" kern kkx#, "B" kern kkx#, + "c" kern kkx#, "C" kern kkx#, + "d" kern kkx#, "D" kern kkx#, + "e" kern kkx#, "E" kern kkx#, + "g" kern kkx#, "G" kern kkx#, + "j" kern kkx#, "J" kern kkx#, + "l" kern kkx#, "L" kern kkx#, + "o" kern kkx#, "O" kern kkx#, + "q" kern kkx#, "Q" kern kkx#, + "t" kern kkx#, "T" kern kkx#, + "u" kern kkx#, "U" kern kkx#, + "v" kern kkx#, "V" kern kkx#, + "w" kern kkx#, "W" kern kkx#, + "y" kern kkx#, "Y" kern kkx#; + + ligtable "X": + "a" kern kkx#, "A" kern kkx#, + "b" kern kkx#, "B" kern kkx#, + "c" kern kkx#, "C" kern kkx#, + "d" kern kkx#, "D" kern kkx#, + "e" kern kkx#, "E" kern kkx#, + "g" kern kkx#, "G" kern kkx#, + "j" kern kkx#, "J" kern kkx#, + "l" kern kkx#, "L" kern kkx#, + "o" kern kkx#, "O" kern kkx#, + "q" kern kkx#, "Q" kern kkx#, + "t" kern kkx#, "T" kern kkx#, + "u" kern kkx#, "U" kern kkx#, + "v" kern kkx#, "V" kern kkx#, + "w" kern kkx#, "W" kern kkx#, + "y" kern kkx#, "Y" kern kkx#; + + ligtable "a": "A": + "b": "B": + "c": "C": + "d": "D": + "e": "E": + "h": "H": + "i": "I": + "k": "K": + "l": "L": + "m": "M": + "n": "N": + "o": "O": + "p": "P": + "t": "T": + "u": "U": + "v": "V": + "w": "W": + "z": "Z": + "j" kern kkj#, "J" kern kkj#; + + ligtable "r": + "a" kern kkr#, "A" kern kkr#, + "b" kern kkr#, "B" kern kkr#, + "c" kern kkr#, "C" kern kkr#, + "d" kern kkr#, "D" kern kkr#, + "e" kern kkr#, "E" kern kkr#, + "f" kern kkrs#, "F" kern kkrs#, + "g" kern kkrs#, "G" kern kkrs#, + "h" kern kkr#, "H" kern kkr#, + "i" kern kkr#, "I" kern kkr#, + "j" kern kkj#, "J" kern kkj#, + "k" kern kkrs#, "K" kern kkrs#, + "l" kern kkr#, "L" kern kkr#, + "m" kern kkr#, "M" kern kkr#, + "n" kern kkrs#, "N" kern kkrs#, + "o" kern kkr#, "O" kern kkr#, + "p" kern kkrs#, "P" kern kkrs#, + "q" kern kkr#, "Q" kern kkr#, + "r" kern kkrs#, "R" kern kkrs#, + "s" kern kkr#, "S" kern kkr#, + "t" kern kkr#, "T" kern kkr#, + "u" kern kkr#, "U" kern kkr#, + "v" kern kkr#, "V" kern kkr#, + "w" kern kkr#, "W" kern kkr#, + "x" kern kkx#, "X" kern kkx#, + "y" kern kkr#, "Y" kern kkr#, + "z" kern kkr#, "Z" kern kkr#; + + ligtable "R": + "a" kern kkr#, "A" kern kkr#, + "b" kern kkr#, "B" kern kkr#, + "c" kern kkr#, "C" kern kkr#, + "d" kern kkr#, "D" kern kkr#, + "e" kern kkr#, "E" kern kkr#, + "f" kern kkrs#, "F" kern kkrs#, + "g" kern kkrs#, "G" kern kkrs#, + "h" kern kkr#, "H" kern kkr#, + "i" kern kkr#, "I" kern kkr#, + "j" kern kkj#, "J" kern kkj#, + "k" kern kkrs#, "K" kern kkrs#, + "l" kern kkr#, "L" kern kkr#, + "m" kern kkr#, "M" kern kkr#, + "n" kern kkrs#, "N" kern kkrs#, + "o" kern kkr#, "O" kern kkr#, + "p" kern kkrs#, "P" kern kkrs#, + "q" kern kkr#, "Q" kern kkr#, + "r" kern kkrs#, "R" kern kkrs#, + "s" kern kkr#, "S" kern kkr#, + "t" kern kkr#, "T" kern kkr#, + "u" kern kkr#, "U" kern kkr#, + "v" kern kkr#, "V" kern kkr#, + "w" kern kkr#, "W" kern kkr#, + "x" kern kkx#, "X" kern kkx#, + "y" kern kkr#, "Y" kern kkr#, + "z" kern kkr#, "Z" kern kkr#; + + +fi + +bye. + +% +% \end{macrocode} +% +% \subsection{The code for normal letters} +% +% The following code is for the lower case characters. +% +% \begin{macrocode} +%<*min> +% IMINL.MF Program file for Insular Minuscule lower case +% + +% \end{macrocode} +% +% +% \begin{routine}{a} +% The letter `a'. +% \begin{macrocode} +cmchar "IMIN letter a"; +beginchar("a", 2sb#+hstretch*(3/4x_height#+jut#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pair pr[]; +pickup quill; +n1 := w - 2pcshiftx -jut; % effective letter width +% "stem" +x1 = pcshiftx + 2/3n1; top y1=h; +rt x2 = pcshiftx + n1; bot y2=0; +z16 = 1/6[z2,z1]; +rt x6 = x16; y6=y16; +lft x4 = pcshiftx; y4 = 1/2h; +% stem path +pth1 := z1{down}..z2; +pr1 := direction 1 of pth1; +z20 = z2 shifted -10pr1; +%%ductus:=true; +if ductus: + pickup stylus; +else: + % draw stem + draw pth1; + draw_roundserif(2,20,srad); + % draw bowl + draw z1{-pdir}..z4{down}..z6{pdir}; +fi +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,100); +endchar; % end "a" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{b} +% The letter `b'. +% \begin{macrocode} +cmchar "IMIN letter b"; +beginchar("b", 2sb#+hstretch*(3/4x_height#), + asc_height#, 0); +adjust_fit(0,0); +numeric n[]; +path pth[]; +pcshiftx := sb; +pickup quill; +n1:=w-2pcshiftx; % actual letter width +n2:=h/ascratio; % top of bowl +%%ductus:=true; +lft x1 = pcshiftx+jut; top y1=h; +lft x3 = pcshiftx; y3=1/2n2; +rt x5 = w-pcshiftx; y5=y3; +x4 = 1/2[x3,x5]; bot y4=0; +x6=x4; top y6=n2; +pth1 := z1..z3{down}..z4{right}.. z5{up}; +z98=(0,3/4n2); z99=(w,y98); +pth2 := z98--z99; +z7 = pth1 intersectionpoint pth2; +if ductus: + pickup stylus; +fi +draw z1..z3{down}..z4{right}..z5{up}..z6{left}..z7{-pdir}; +draw_flatserif(1,7,srad); +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 "IMIN letter c"; +beginchar("c", 2sb#+hstretch*(5/8x_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{pdir}; +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'. There is a choice between a curved and straight stem. +% I have done the straight one. +% \begin{macrocode} +cmchar "IMIN letter d"; +beginchar("d", 2sb#+hstretch*(3/4x_height#), + asc_height#, 0); +adjust_fit(0,0); +numeric n[]; +path pth[]; +pcshiftx := sb; +pickup quill; +lft x1=pcshiftx; top y1=h; +rt x3 = w-pcshiftx; y3 = 1/2h/ascratio; +x4 = 1/2[x1,x3]; bot y4 = 0; +z5=(x1,y3); +z98=(0,h/ascratio); z99=(w,y98); pth2 := z98--z99; +pth1 := z1{-ppdir}..z3{down}..z4{left}; +z6 = pth1 intersectionpoint pth2; +if ductus: + pickup stylus; +fi +draw z1{-ppdir}..z3{down}..z4{left}..z5{up}..z6{pdir}; +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 "IMIN letter e"; +beginchar("e", sb#+hstretch*(5/4x_height#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pickup quill; +n1 := w-pcshiftx; % actual letter width +n2 := 4/8n1; % width of bowl +x1 = pcshiftx + 5/8n2; top y1=h; +lft x2 = pcshiftx; y2 = 1/2h; +x3 = pcshiftx + 1/2n2; bot y3 = 0; +rt x4 = pcshiftx + n2; y4 = 1/4h; +z98=(0,3/8h); z99=(w,y98); +pth1 := z98--z99; +pth2 := z1{left}..z2{down}..z3{right}; +z7 = pth1 intersectionpoint pth2; +rt x9 = w-pcshiftx; y9 = 3/4h; +z8=1/2[z7,z9]; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z7{pdir}..z1{left}..z2{down}..z3{right}..z4{pdir}; +draw z7{pdir}..z8{right}..z9{pdir}; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,100); +endchar; % end "e" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{f} +% The letter `f'. +% \begin{macrocode} +cmchar "IMIN letter f"; +beginchar("f", 2sb#+hstretch*(3/4x_height#+jut#), + (x_height#), desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +%% stem +lft x1=lft x2=pcshiftx+jut; +top y1=h; y2=-1/2d; +lft x20=0; bot y20=-d; +%% bottom bar +z4=(rt x1,-thin); rt x6=w-pcshiftx; y6=y4+2thin; z5=1/2[z4,z6]; +%% top bar +x7= x1; bot y7 = 1/2h; +rt x9= w-pcshiftx; y9 = 1/2[y7,y1]; +x8 = 2/3[x7,x9]; top y8 = h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw z2{down}..z20{-pdir}; +draw_flatserif(1,2,srad); +draw z4{dir(45)}..z5{right}..z6{dir(45)}; % bottom bar +%%draw_flick(7, 2thin, thin, (w-pcshiftx-x7+1/2thick)); % top bar +draw z7..z8..z9; % top bar +ductus:=false; +penlabels(1,2,3,4,5,6,7,100); +endchar; % end "f" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{g} +% The letter `g'. +% \begin{macrocode} +cmchar "IMIN letter g"; +beginchar("g", 2sb#+hstretch*(x_height#), + x_height#, desc_depth#); +adjust_fit(0,0); +path pth[]; +pair vec[]; +pcshiftx := sb; +pickup quill; +%% top bar +lft x1=pcshiftx; top y1=h; rt x2=w-pcshiftx; top y2=h; +x3=1/2[x1,x2]; bot y3=1/8h; +rt x5 = w-pcshiftx; y5 = -1/2d; +x6 = x3; bot y6 = -d; +x7 = 1/2[x1,x3]; y7 = y5; +x8=x3; y8 = -y3; +%%ductus:=true; +if ductus: + pickup stylus; + draw z1--z2; % top bar + draw pth1; draw pth2; % curves + draw rt z8--z9; % diagonal +else: + draw z1--z2; + draw z2--z3; + draw z3{pdir}..z5{down}..z6{left}..z7{up}..z8{pdir}; + draw_roundserif(1,2,srad); +fi +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,100); +endchar; % end "g" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{h} +% The letter `h'. +% \begin{macrocode} +cmchar "IMIN letter h"; +beginchar("h", 2sb#+hstretch*(7/8x_height#+jut#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +numeric n[]; +%% stem +lft x1=lft x2=pcshiftx+jut; +top y1=h; bot y2=0; +%% bowl +z3=1/2[z2,z1]; +rt x5 = w-pcshiftx; y5=y3; +x4=1/2[x3,x5]; top y4 = h/ascratio; +lft x6=x4; bot y6=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +draw z3{pdir}..z4..z5..z6{-pdir}; + +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 "IMIN letter i"; +beginchar("i", 2sb#+hstretch*(thick#+2jut#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +lft x1=lft x2=pcshiftx+jut; +top y1=h; bot y2=0; +%%ductus:=true; +draw_tstem(1,2,srad); +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +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 "IMIN letter j"; +beginchar("j", sb#+hstretch*(3/8x_height#), + x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% stem +rt x1 = w-pcshiftx; top y1 = h; +x2=x1; y2=-1/2d; +%% bottom hook +lft x3 = 0; bot y3 = -d; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2; % stem +draw_flatserif(1,2,srad); +draw z2{down}..z3{-pdir}; % hook +ductus:=false; +penlabels(1,2,3,100); +endchar; % end "j" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{k} +% The letter `k'. +% \begin{macrocode} +cmchar "IMIN letter k"; +beginchar("k", 2sb#+hstretch*(x_height#+jut#), + asc_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +%% stem +lft x1=lft x2=pcshiftx+jut; +top y1=h; y2=-1/2d; +lft x20=pcshiftx; bot y20=-d; +%% top arm +z3=(x1,1/2h/ascratio); +rt x5=w-pcshiftx; y5=1/2[y3,y4]; +x4=1/2[x3,x5]; top y4=h/ascratio; +%% lower arm +x7=x5; bot y7=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw z2{down}..z20{-pdir}; +draw_flatserif(1,2,srad); +draw z3..z4{right}..z5; % upper arm +draw z3..{right}z7; % lower arm +ductus:=false; +penlabels(1,2,3,4,5,100); +endchar; % end "k" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{l} +% The letter `l'. +% \begin{macrocode} +cmchar "IMIN letter l"; +beginchar("l", 2sb#+hstretch*(3/4x_height#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +lft x2=pcshiftx; y2=1/5h; +x1=x2+jut; top y1=h; +rt x4=w-pcshiftx; y4=1/5h; +x3=1/2[x2,x4]; bot y3=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1{down}..z2..z3{right}..z4; +draw_flatserif(1,2,srad); +ductus:=false; +penlabels(1,2,3,4,100); +endchar; % end "l" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{m} +% The letter `m'. +% \begin{macrocode} +cmchar "IMIN letter m"; +beginchar("m", 2sb#+hstretch*(x_height#+2jut#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pickup quill; +%% left stem +lft x1=pcshiftx+jut; top y1=h; +x2=x1; bot y2=0; +%% start of bowl +x13=x1; y13=3/4h; +%% bottom of right and middle stems +rt x6 = w -pcshiftx - jut; y6=y2; +z4 = 1/2[z2,z6]; +%% top of middle and right stems +x3=x4; y3=y1; +x5=x6; y5=y13; +%% top of bowls +x14=2/3[x13,x3]; top y14 = h; +x33=x4; y33=y13; +x34=2/3[x33,x5]; y34 = y14; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % left half +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +draw z13{pdir}..z14{right}..z33{down}--z4; +draw_roundserif(4,3,srad); +draw z33{pdir}..z34{right}..z5{down}--z6; +draw_roundserif(6,5,srad); +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'. This could be like a capital `N' or a lower-case `n'. +% I have chosen to do the second form. +% \begin{macrocode} +cmchar "IMIN letter n"; +beginchar("n", 2sb#+hstretch*(5/8x_height#+2jut#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +%% left stem +lft x1=pcshiftx+jut; top y1=h; +x2=x1; bot y2=0; +% start of bowl +x13=x1; y13=3/4h; +%% right stem +rt x4 = w-pcshiftx-jut; y4=y2; +x3 = x4; y3 = y13; +% top of bowl +x14 = 2/3[x13,x3]; top y14 = h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % left stem +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +draw z13{pdir}..z14{right}..z3{down}--z4; +draw_roundserif(4,3,srad); +ductus:=false; +penlabels(1,2,3,4,5,6,13,14,100); +endchar; % end "n" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{o} +% The letter `o'. +% \begin{macrocode} +cmchar "IMIN letter o"; +beginchar("o", 2sb#+hstretch*(3/4x_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; +draw z1..z2..z3..z4..cycle; +z5=(pcshiftx,-o); +obowl(5, w-2pcshiftx, h+2o); +%%ductus:=true; +if ductus: + pickup stylus; + draw obfirst; draw obsecond; draw obouter; draw obinner; +else: +%% fill obouter; unfill obinner; +fi +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 "IMIN letter p"; +beginchar("p", 2sb#+hstretch*(3/4x_height#+jut#), + x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% stem +lft x1=lft x2=pcshiftx+jut; +top y1=h; bot y2=-1/2d; +lft x20 = pcshiftx; bot y20 = -d; +%% bowl % from "h" +z3=3/4[(x1,0),z1]; +rt x5 = w-pcshiftx; y5=y3; +x4=1/2[x3,x5]; top y4 = h; +lft x6=x4; bot y6=0; + +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_flatserif(1,2,srad); +draw z2{down}..z20{-pdir}; +draw z3{pdir}..z4..z5..z6{-pdir}; % bowl (from h) +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 "IMIN letter q"; +beginchar("q", 2sb#+hstretch*(3/4x_height#), + x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% right stem +rt x1=w-pcshiftx; top y1=h; +x2=x1; bot y2=-1/2d; +x20 = x1-jut; bot y20=-d; +%% bowl +z3=1/4[(x1,0),z1]; +lft x5=pcshiftx; y5=y3; +x4=1/2[x3,x5]; bot y4=0; +x6=x1-jut; top y6=h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); +draw z2{down}..z20{-pdir}; % stem +draw_flatserif(1,2,srad); +draw z3{-pdir}..z4{left}..z5{up}..z6{pdir}; +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 "IMIN letter r"; +beginchar("r", sb#+hstretch*(7/8x_height#+jut#), + x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% stem +lft x1=lft x2=pcshiftx+jut; +top y1=h; bot y2=-1/2d; +lft x20 = pcshiftx; bot y20 = -d; +%% bowl +z3=3/4[(x1,0),z1]; +rt x5 = w-pcshiftx; y5=y3; +x4=1/2[x3,x5]; top y4 = h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_flatserif(1,2,srad); +draw z2{down}..z20{-pdir}; + +draw z3{pdir}..z4{right}..z5{pdir}; + +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,100); +endchar; % end "r" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{s} +% The letter `s'. This is a `long' S. +% \begin{macrocode} +cmchar "IMIN letter s"; +beginchar("s", 2sb#+hstretch*(3/4x_height#+jut#), + asc_height#, desc_depth#); +adjust_fit(0,0); +numeric n[]; +pcshiftx := sb; +pickup quill; +%% stem +lft x1=lft x2=pcshiftx+jut; top y1=h/ascratio; bot y2=-1/2d; +lft x20=pcshiftx; bot y20=-d; +%% flick +x4=x2; y4 = 1/2h/ascratio; +rt x6=w-pcshiftx; y6 = 2/3h; +x5 = 2/3[x4,x6]; top y5=h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw z2{down}..z20{-pdir}; +draw_flatserif(1,2,srad); +draw z4{up}...z5{right}...z6; +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 "IMIN letter t"; +beginchar("t", 2sb#+hstretch*(5/4x_height#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% bar +lft x1 = pcshiftx; top y1=h; rt x2=w-pcshiftx; bot y2=h; +n1 := w; % width of bowl +n2 := h; % height of bowl +z3=1/2[z1,z2]; +lft x4 = pcshiftx + 1/8n1; y4 = 1/2h; +x5=x3; bot y5 = 0; +rt x6 = pcshiftx + 3/4n1; top y6 = 1/4h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1{pdir}..z3..z2{pdir}; % bar +draw z3..z4{down}..z5{right}..z6{pdir}; +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 "IMIN letter u"; +beginchar("u", 2sb#+hstretch*(5/8x_height#+2jut#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% left stem +lft x1 = pcshiftx + jut; top y1 = h; +% start of bowl +x13=x1; y13=1/3h; +% right stem +rt x3=w-pcshiftx-jut; 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; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z13{down}..z14{right}..z33{pdir}; +draw_flatserif(1,13,srad); +draw_tstem(3,4,srad); % right stem +draw_flatserif(3,4,srad); +draw_roundserif(4,3,srad); +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 "IMIN letter v"; +beginchar("v", 2sb#+hstretch*(3/4x_height#+jut#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +%% left stem +lft x1 = pcshiftx + jut; top y1 = h; +% start of bowl +x13=x1; y13=1/3h; +% right stem +rt x3=w-pcshiftx-jut; 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; +rt x23=w-pcshiftx; y23=3/4h; +lft x26=x14; top y26=h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z13{down}..z14{right}; % left stem +draw_flatserif(1,13,srad); +draw z14{pdir}..z23{up}..z26; + +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 "IMIN letter w"; +beginchar("w", 2sb#+hstretch*(x_height#+2jut#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +%% left stem +lft x1 = pcshiftx + jut; top y1 = h; +% start of bowl +x13=x1; y13=1/3h; +% right stem +rt x5=w-pcshiftx-jut; y5=y1; +x6=x5; bot y6=0; +z53=1/4[z6,z5]; % start of bowl +% middle stem +z3 = 1/2[z1,z5]; +z33=(x3,y13); +% middle of bowl +x14=1/3[x1,x3]; bot y14=0; +% middle of right bowl +x34=1/3[x3,x5]; y34=y14; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z13{down}..z14{right}..z33{pdir}; % left +draw_flatserif(1,13,srad); +draw z3--z33{down}..z34{right}..z53{pdir}; % middle +draw_flatserif(3,33,srad); +draw_tstem(5,6,srad); % right stem +draw_flatserif(5,6,srad); +draw_roundserif(6,5,srad); +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 "IMIN letter x"; +beginchar("x", 2sb#+hstretch*(x_height#), + x_height#, desc_depth#); +adjust_fit(0,0); +numeric n[]; +pcshiftx := sb; +pickup quill; +n1 := w-2pcshiftx; % total width +n2 := thick; % triangle side +%% diag top left to bottom right +lft x1=pcshiftx; bot y1=2/3h; +x2=pcshiftx+1/7n1; top y2=h; +x5=pcshiftx+11/14n1; bot y5=-1/4d; +rt x6=pcshiftx+n1; top y6=1/6h; +z25 = 1/3[z2,z5]; +%% diag bottom left to top right +lft x10 = -w + 2pcshiftx; bot y10=-d; +x50=x5; top y50=h; +rt x60 = w -pcshiftx; bot y60=2/3h; +x40=pcshiftx+8/14n1; y40=h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1..z2{right}..z5{right}..z6; % top left to bottom right +draw z10{1/2pdir}..z25..z50{right}..z60; % bottom left to top right +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,10,40,50,60,100); +endchar; % end "x" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{y} +% The letter `y'. Modern, but with a dot on top. +% \begin{macrocode} +cmchar "IMIN letter y"; +beginchar("y", 2sb#+hstretch*(5/8x_height#+jut#), + x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +%% left stem +lft x1 = pcshiftx + jut; top y1 = h; +% start of bowl +x13=x1; y13=1/3h; +% right stem +rt x3=w-pcshiftx; 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; +z50=(x3,-1/2d); +x60=x14; bot y60=-d; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z13{down}..z14{right}..z33{pdir}; +draw_flatserif(1,13,srad); +draw_tstem(3,50,srad); % right stem +draw z50{down}..z60{-pdir}; +draw_flatserif(3,4,srad); +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 "IMIN letter z"; +beginchar("z", 2sb#+hstretch*(x_height#), + x_height#, 0); +adjust_fit(0,0); +numeric n[]; +pcshiftx := sb; +pickup quill; +%% top bar +n10 := w-2pcshiftx; % letter width +lft x1=pcshiftx; top y1=h; +rt x2= w-pcshiftx; bot y2=y1; +%% diagonal +x3=x1; bot y3=0; +%% bowl +x4=3/4[x1,x2]; top y4 = 1/2h; +x6=x4; bot y6 = 0; +rt x5 = w-pcshiftx; y5 = 1/2[y4,y6]; +x7=1/2[x3,x5]; y7 = 1/2[y6,y5]; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1{right}..z2{right}; % top bar +draw_roundserif(1,2,srad); +draw z2--z3; % diagonal +draw z3..z4{right}..z5{down}..z6{left}..z7; +ductus:=false; +penlabels(1,2,3,4,5,6,10o,10i,20o,20i,100); +endchar; % end "z" + +% \end{macrocode} +% \end{routine} +% +% +% The end of this file +% \begin{macrocode} +% +% \end{macrocode} +% +% +% \subsection{The code for capital letters} +% +% \thisfont{} `capitals' were drawn with the same pen as for the minuscules, +% and the letters were merely larger versions of the minuscules. +% +% \begin{macrocode} +%<*maj> +% IMINU.MF Program file for Insular Minuscule `capitals' +% + +% \end{macrocode} +% +% +% +% \begin{routine}{A} +% The letter `A'. +% \begin{macrocode} +cmchar "IMIN letter A"; +beginchar("A", 2sb#+caprat*hstretch*(3/4x_height#+jut#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pair pr[]; +pickup quill; +n1 := w - 2pcshiftx -jut; % effective letter width +% "stem" +x1 = pcshiftx + 2/3n1; top y1=h; +rt x2 = pcshiftx + n1; bot y2=0; + +z16 = 1/6[z2,z1]; +rt x6 = x16; y6=y16; + +lft x4 = pcshiftx; y4 = 1/2h; + +% stem path +pth1 := z1{down}..z2; +pr1 := direction 1 of pth1; +z20 = z2 shifted -10pr1; + +%%ductus:=true; +if ductus: + pickup stylus; +else: + % draw stem + draw pth1; + draw_roundserif(2,20,srad); + % draw bowl + draw z1{-pdir}..z4{down}..z6{pdir}; +fi +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,100); +endchar; % end "A" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{B} +% The letter `B'. +% \begin{macrocode} +cmchar "IMIN letter B"; +beginchar("B", 2sb#+caprat*hstretch*(3/4x_height#), + caprat*asc_height#, 0); +adjust_fit(0,0); +numeric n[]; +path pth[]; +pcshiftx := sb; +pickup quill; +n1:=w-2pcshiftx; % actual letter width +n2:=h/ascratio; % top of bowl +lft x1 = pcshiftx+jut; top y1=h; +lft x3 = pcshiftx; y3=1/2n2; +rt x5 = w-pcshiftx; y5=y3; +x4 = 1/2[x3,x5]; bot y4=0; +x6=x4; top y6=n2; +pth1 := z1..z3{down}..z4{right}.. z5{up}; +z98=(0,3/4n2); z99=(w,y98); +pth2 := z98--z99; +z7 = pth1 intersectionpoint pth2; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1..z3{down}..z4{right}..z5{up}..z6{left}..z7{-pdir}; +draw_flatserif(1,7,srad); +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 "IMIN letter C"; +beginchar("C", 2sb#+caprat*hstretch*(5/8x_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{pdir}; +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'. There is a choice between a curved and straight stem. +% I have done the straight one. +% \begin{macrocode} +cmchar "IMIN letter D"; +beginchar("D", 2sb#+caprat*hstretch*(3/4x_height#), + caprat*asc_height#, 0); +adjust_fit(0,0); +numeric n[]; +path pth[]; +pcshiftx := sb; +pickup quill; +lft x1=pcshiftx; top y1=h; +rt x3 = w-pcshiftx; y3 = 1/2h/ascratio; +x4 = 1/2[x1,x3]; bot y4 = 0; +z5=(x1,y3); +z98=(0,h/ascratio); z99=(w,y98); pth2 := z98--z99; +pth1 := z1{-ppdir}..z3{down}..z4{left}; +z6 = pth1 intersectionpoint pth2; +if ductus: + pickup stylus; +fi +draw z1{-ppdir}..z3{down}..z4{left}..z5{up}..z6{pdir}; +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 "IMIN letter E"; +beginchar("E", sb#+caprat*hstretch*(5/4x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pickup quill; +n1 := w-pcshiftx; % actual letter width +n2 := 4/8n1; % width of bowl +x1 = pcshiftx + 5/8n2; top y1=h; +lft x2 = pcshiftx; y2 = 1/2h; +x3 = pcshiftx + 1/2n2; bot y3 = 0; +rt x4 = pcshiftx + n2; y4 = 1/4h; +z98=(0,3/8h); z99=(w,y98); +pth1 := z98--z99; +pth2 := z1{left}..z2{down}..z3{right}; +z7 = pth1 intersectionpoint pth2; +rt x9 = w-pcshiftx; y9 = 3/4h; +z8=1/2[z7,z9]; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z7{pdir}..z1{left}..z2{down}..z3{right}..z4{pdir}; +draw z7{pdir}..z8{right}..z9{pdir}; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,100); +endchar; % end "e" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{F} +% The letter `F'. +% \begin{macrocode} +cmchar "IMIN letter F"; +beginchar("F", 2sb#+caprat*hstretch*(3/4x_height#+jut#), + caprat*(x_height#), desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +%% stem +lft x1=lft x2=pcshiftx+jut; +top y1=h; y2=-1/2d; +lft x20=0; bot y20=-d; +%% bottom bar +z4=(rt x1,-thin); rt x6=w-pcshiftx; y6=y4+2thin; z5=1/2[z4,z6]; +%% top bar +x7= x1; bot y7 = 1/2h; +rt x9= w-pcshiftx; y9 = 1/2[y7,y1]; +x8 = 2/3[x7,x9]; top y8 = h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw z2{down}..z20{-pdir}; +draw_flatserif(1,2,srad); +draw z4{dir(45)}..z5{right}..z6{dir(45)}; % bottom bar +draw z7..z8..z9; % top bar +ductus:=false; +penlabels(1,2,3,4,5,6,7,100); +endchar; % end "F" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{G} +% The letter `G'. +% \begin{macrocode} +cmchar "IMIN letter G"; +beginchar("G", 2sb#+caprat*hstretch*(x_height#), + caprat*x_height#, desc_depth#); +adjust_fit(0,0); +path pth[]; +pair vec[]; +pcshiftx := sb; +pickup quill; +%% top bar +lft x1=pcshiftx; top y1=h; rt x2=w-pcshiftx; top y2=h; +x3=1/2[x1,x2]; bot y3=1/8h; +rt x5 = w-pcshiftx; y5 = -1/2d; +x6 = x3; bot y6 = -d; +x7 = 1/2[x1,x3]; y7 = y5; +x8=x3; y8 = -y3; +%%ductus:=true; +if ductus: + pickup stylus; + draw z1--z2; % top bar + draw pth1; draw pth2; % curves + draw rt z8--z9; % diagonal +else: + draw z1--z2; + draw z2--z3; + draw z3{pdir}..z5{down}..z6{left}..z7{up}..z8{pdir}; + draw_roundserif(1,2,srad); +fi +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,100); +endchar; % end "G" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{H} +% The letter `H'. +% \begin{macrocode} +cmchar "IMIN letter H"; +beginchar("H", 2sb#+caprat*hstretch*(7/8x_height#+jut#), + caprat*asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +numeric n[]; +%% stem +lft x1=lft x2=pcshiftx+jut; +top y1=h; bot y2=0; +%% bowl +z3=1/2[z2,z1]; +rt x5 = w-pcshiftx; y5=y3; +x4=1/2[x3,x5]; top y4 = h/ascratio; +lft x6=x4; bot y6=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +draw z3{pdir}..z4..z5..z6{-pdir}; + +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 "IMIN letter I"; +beginchar("I", 2sb#+caprat*hstretch*(thick#+2jut#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +lft x1=lft x2=pcshiftx+jut; +top y1=h; bot y2=0; +%%ductus:=true; +draw_tstem(1,2,srad); +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +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 "IMIN letter J"; +beginchar("J", sb#+caprat*hstretch*(3/8x_height#), + caprat*x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% stem +rt x1 = w-pcshiftx; top y1 = h; +x2=x1; y2=-1/2d; +%% bottom hook +lft x3 = 0; bot y3 = -d; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2; % stem +draw_flatserif(1,2,srad); +draw z2{down}..z3{-pdir}; % hook +ductus:=false; +penlabels(1,2,3,100); +endchar; % end "J" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{K} +% The letter `K'. +% \begin{macrocode} +cmchar "IMIN letter K"; +beginchar("K", 2sb#+caprat*hstretch*(x_height#+jut#), + caprat*asc_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +%% stem +lft x1=lft x2=pcshiftx+jut; +top y1=h; y2=-1/2d; +lft x20=pcshiftx; bot y20=-d; +%% top arm +z3=(x1,1/2h/ascratio); +rt x5=w-pcshiftx; y5=1/2[y3,y4]; +x4=1/2[x3,x5]; top y4=h/ascratio; +%% lower arm +x7=x5; bot y7=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw z2{down}..z20{-pdir}; +draw_flatserif(1,2,srad); +draw z3..z4{right}..z5; % upper arm +draw z3..{right}z7; % lower arm +ductus:=false; +penlabels(1,2,3,4,5,100); +endchar; % end "K" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{L} +% The letter `L'. +% \begin{macrocode} +cmchar "IMIN letter L"; +beginchar("L", 2sb#+caprat*hstretch*(3/4x_height#), + caprat*asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +lft x2=pcshiftx; y2=1/5h; +x1=x2+jut; top y1=h; +rt x4=w-pcshiftx; y4=1/5h; +x3=1/2[x2,x4]; bot y3=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1{down}..z2..z3{right}..z4; +draw_flatserif(1,2,srad); +ductus:=false; +penlabels(1,2,3,4,100); +endchar; % end "L" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{M} +% The letter `M'. +% \begin{macrocode} +cmchar "IMIN letter M"; +beginchar("M", 2sb#+caprat*hstretch*(x_height#+2jut#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pickup quill; +%% left stem +lft x1=pcshiftx+jut; top y1=h; +x2=x1; bot y2=0; +%% start of bowl +x13=x1; y13=3/4h; +%% bottom of right and middle stems +rt x6 = w -pcshiftx - jut; y6=y2; +z4 = 1/2[z2,z6]; +%% top of middle and right stems +x3=x4; y3=y1; +x5=x6; y5=y13; +%% top of bowls +x14=2/3[x13,x3]; top y14 = h; +x33=x4; y33=y13; +x34=2/3[x33,x5]; y34 = y14; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % left half +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +draw z13{pdir}..z14{right}..z33{down}--z4; +draw_roundserif(4,3,srad); +draw z33{pdir}..z34{right}..z5{down}--z6; +draw_roundserif(6,5,srad); +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'. This could be like a capital `N' or a lower-case `n'. +% I have chosen to do the first form. +% \begin{macrocode} +cmchar "IMIN letter N"; +beginchar("N", 2sb#+caprat*hstretch*(3/4x_height#+2jut#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +%% left stem +lft x1=pcshiftx+jut; top y1=h; +x2=x1; bot y2=0; +%% right stem +rt x3=w-pcshiftx-jut; y3=y1; +z4=(x3,y2); +%% bar +z5=3/8[lft z2, lft z1]; z6=2/8[rt z4,rt z3]; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % left stem +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +draw_tstem(3,4,srad); % right stem +draw_flatserif(3,4,srad); +draw_roundserif(4,3,srad); +draw z5{right}..z6{right}; % bar +ductus:=false; +penlabels(1,2,3,4,5,6,100); +endchar; % end "N" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{O} +% The letter `O'. +% \begin{macrocode} +cmchar "IMIN letter O"; +beginchar("O", 2sb#+caprat*hstretch*(3/4x_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; +draw z1..z2..z3..z4..cycle; +z5=(pcshiftx,-o); +obowl(5, w-2pcshiftx, h+2o); +%%ductus:=true; +if ductus: + pickup stylus; + draw obfirst; draw obsecond; draw obouter; draw obinner; +else: +%% fill obouter; unfill obinner; +fi +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 "IMIN letter P"; +beginchar("P", 2sb#+caprat*hstretch*(3/4x_height#+jut#), + caprat*x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% stem +lft x1=lft x2=pcshiftx+jut; +top y1=h; bot y2=-1/2d; +lft x20 = pcshiftx; bot y20 = -d; +%% bowl % from "h" +z3=3/4[(x1,0),z1]; +rt x5 = w-pcshiftx; y5=y3; +x4=1/2[x3,x5]; top y4 = h; +lft x6=x4; bot y6=0; + +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_flatserif(1,2,srad); +draw z2{down}..z20{-pdir}; +draw z3{pdir}..z4..z5..z6{-pdir}; % bowl (from h) +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 "IMIN letter Q"; +beginchar("Q", 2sb#+caprat*hstretch*(3/4x_height#), + caprat*x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% right stem +rt x1=w-pcshiftx; top y1=h; +x2=x1; bot y2=-1/2d; +x20 = x1-jut; bot y20=-d; +%% bowl +z3=1/4[(x1,0),z1]; +lft x5=pcshiftx; y5=y3; +x4=1/2[x3,x5]; bot y4=0; +x6=x1-jut; top y6=h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); +draw z2{down}..z20{-pdir}; % stem +draw_flatserif(1,2,srad); +draw z3{-pdir}..z4{left}..z5{up}..z6{pdir}; +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 "IMIN letter R"; +beginchar("R", sb#+caprat*hstretch*(3/4x_height#+jut#), + caprat*x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% stem +lft x1=lft x2=pcshiftx+jut; +top y1=h; bot y2=-1/2d; +lft x20 = pcshiftx; bot y20 = -d; +%% bowl % almost a "p" bowl +z3=3/4[(x1,0),z1]; +rt x5 = w-pcshiftx; y5=y3; +x4=1/2[x3,x5]; top y4 = h; +x100=x1; bot y100 = 0; +lft x6= rt x100; y6=y100; + +rt x26=w-pcshiftx; y26=-1/6d; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_flatserif(1,2,srad); +draw z2{down}..z20{-pdir}; +draw z3{pdir}..z4..z5..z6{-pdir}; % bowl (from h) +draw z6{-ppdir}..z26{pdir}; % leg +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,100); +endchar; % end "R" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{S} +% The letter `S'. This is a `long' S. +% \begin{macrocode} +cmchar "IMIN letter S"; +beginchar("S", 2sb#+caprat*hstretch*(3/4x_height#+jut#), + caprat*asc_height#, desc_depth#); +adjust_fit(0,0); +numeric n[]; +pcshiftx := sb; +pickup quill; +%% stem +lft x1=lft x2=pcshiftx+jut; top y1=h/ascratio; bot y2=-1/2d; +lft x20=pcshiftx; bot y20=-d; +%% flick +x4=x2; y4 = 1/2h/ascratio; +rt x6=w-pcshiftx; y6 = 2/3h; +x5 = 2/3[x4,x6]; top y5=h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw z2{down}..z20{-pdir}; +draw_flatserif(1,2,srad); +draw z4{up}...z5{right}...z6; +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 "IMIN letter T"; +beginchar("T", 2sb#+caprat*hstretch*(5/4x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% bar +lft x1 = pcshiftx; top y1=h; rt x2=w-pcshiftx; bot y2=h; +n1 := w; % width of bowl +n2 := h; % height of bowl +z3=1/2[z1,z2]; +lft x4 = pcshiftx + 1/8n1; y4 = 1/2h; +x5=x3; bot y5 = 0; +rt x6 = pcshiftx + 3/4n1; top y6 = 1/4h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1{pdir}..z3..z2{pdir}; % bar +draw z3..z4{down}..z5{right}..z6{pdir}; +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 "IMIN letter U"; +beginchar("U", 2sb#+caprat*hstretch*(5/8x_height#+2jut#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% left stem +lft x1 = pcshiftx + jut; top y1 = h; +% start of bowl +x13=x1; y13=1/3h; +% right stem +rt x3=w-pcshiftx-jut; 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; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z13{down}..z14{right}..z33{pdir}; +draw_flatserif(1,13,srad); +draw_tstem(3,4,srad); % right stem +draw_flatserif(3,4,srad); +draw_roundserif(4,3,srad); +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 "IMIN letter V"; +beginchar("V", 2sb#+caprat*hstretch*(3/4x_height#+jut#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +%% left stem +lft x1 = pcshiftx + jut; top y1 = h; +% start of bowl +x13=x1; y13=1/3h; +% right stem +rt x3=w-pcshiftx-jut; 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; +rt x23=w-pcshiftx; y23=3/4h; +lft x26=x14; top y26=h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z13{down}..z14{right}; % left stem +draw_flatserif(1,13,srad); +draw z14{pdir}..z23{up}..z26; +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 "IMIN letter W"; +beginchar("W", 2sb#+caprat*hstretch*(x_height#+2jut#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +%% left stem +lft x1 = pcshiftx + jut; top y1 = h; +% start of bowl +x13=x1; y13=1/3h; +% right stem +rt x5=w-pcshiftx-jut; y5=y1; +x6=x5; bot y6=0; +z53=1/4[z6,z5]; % start of bowl +% middle stem +z3 = 1/2[z1,z5]; +z33=(x3,y13); +% middle of bowl +x14=1/3[x1,x3]; bot y14=0; +% middle of right bowl +x34=1/3[x3,x5]; y34=y14; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z13{down}..z14{right}..z33{pdir}; % left +draw_flatserif(1,13,srad); +draw z3--z33{down}..z34{right}..z53{pdir}; % middle +draw_flatserif(3,33,srad); +draw_tstem(5,6,srad); % right stem +draw_flatserif(5,6,srad); +draw_roundserif(6,5,srad); +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 "IMIN letter X"; +beginchar("X", 2sb#+caprat*hstretch*(x_height#), + caprat*x_height#, desc_depth#); +adjust_fit(0,0); +numeric n[]; +pcshiftx := sb; +pickup quill; +n1 := w-2pcshiftx; % total width +n2 := thick; % triangle side +%% diag top left to bottom right +lft x1=pcshiftx; bot y1=2/3h; +x2=pcshiftx+1/7n1; top y2=h; +x5=pcshiftx+11/14n1; bot y5=-1/4d; +rt x6=pcshiftx+n1; top y6=1/6h; +z25 = 1/3[z2,z5]; +%% diag bottom left to top right +%%x10=x1; bot y10=-d; +lft x10 = -w + 2pcshiftx; bot y10=-d; +x50=x5; top y50=h; +%%rt x60=x5; bot y60=2/3h; +rt x60 = w -pcshiftx; bot y60=2/3h; +x40=pcshiftx+8/14n1; y40=h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1..z2{right}..z5{right}..z6; % top left to bottom right +draw z10{1/2pdir}..z25..z50{right}..z60; % bottom left to top right +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,10,40,50,60,100); +endchar; % end "X" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{Y} +% The letter `Y'. Modern style. +% \begin{macrocode} +cmchar "IMIN letter Y"; +beginchar("Y", 2sb#+caprat*hstretch*(5/8x_height#+jut#), + caprat*x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +%% left stem +lft x1 = pcshiftx + jut; top y1 = h; +% start of bowl +x13=x1; y13=1/3h; +% right stem +rt x3=w-pcshiftx; 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; +z50=(x3,-1/2d); +x60=x14; bot y60=-d; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z13{down}..z14{right}..z33{pdir}; +draw_flatserif(1,13,srad); +draw_tstem(3,50,srad); % right stem +draw z50{down}..z60{-pdir}; +draw_flatserif(3,4,srad); +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 "IMIN letter Z"; +beginchar("Z", 2sb#+caprat*hstretch*(x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +numeric n[]; +pcshiftx := sb; +pickup quill; +%% top bar +n10 := w-2pcshiftx; % letter width +lft x1=pcshiftx; top y1=h; +rt x2= w-pcshiftx; bot y2=y1; +%% diagonal +x3=x1; bot y3=0; +%% bowl +x4=3/4[x1,x2]; top y4 = 1/2h; +x6=x4; bot y6 = 0; +rt x5 = w-pcshiftx; y5 = 1/2[y4,y6]; +x7=1/2[x3,x5]; y7 = 1/2[y6,y5]; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1{right}..z2{right}; % top bar +draw_roundserif(1,2,srad); +draw z2--z3; % diagonal +draw z3..z4{right}..z5{down}..z6{left}..z7; +ductus:=false; +penlabels(1,2,3,4,5,6,10o,10i,20o,20i,100); +endchar; % end "Z" + +% \end{macrocode} +% \end{routine} +% +% +% +% The end of this file +% \begin{macrocode} +% +% \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#+trijut#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +x1=w/2; top y1 = h; +z3=(x1, 1/2dot_size); +z2=(x1, y3+3/2dot_size); +draw z1--z2; +draw_pdot(3,dot_size); +penlabels(1,2,3); + +endchar; % end of "!" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{?} +% The `?' character, which had not been invented at this time. +% \begin{macrocode} + +cmchar "Question mark"; +beginchar("?", 2sb#+hstretch*(3/4x_height#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pickup quill; +n1 := w-2pcshiftx; % actual character width +n2 := 1/3h; % height of top bowl +n3 := n2; % height of bottom bowl +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/3h; +draw_pdot(1,dot_size); +draw_pdot(2,dot_size); +penlabels(1,2); +endchar; % end ":" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{;} +% The `;' character. +% \begin{macrocode} + +cmchar "Semicolon"; +beginchar(";",2sb#+hstretch*(comma_width#+dot_size#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb; +x1=x2=w-pcshiftx-(0.5hstretch*dot_size); y1=2/3h; y2=1/3h; +draw_pdot(1,dot_size); +draw_pcomma(2,dot_size,comma_width); +penlabels(1,2); +endchar; % end of ";" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{'} +% The `'' character. +% \begin{macrocode} + +cmchar "Apostrophe"; +beginchar("'",2sb#+hstretch*(comma_width#+dot_size#),4/3x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb; +x1=w-pcshiftx-(0.5hstretch*dot_size); y1=h; +draw_pcomma(1,dot_size,comma_width); +penlabels(1); +endchar; % end of "'" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{`} +% The ``' character. +% \begin{macrocode} + +cmchar "Reverse apostrophe"; +beginchar("`",2sb#+hstretch*(comma_width#+dot_size#),4/3x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb; +x1=pcshiftx+(0.5hstretch*dot_size); y1=h; +draw_plq(1,dot_size,comma_width); +penlabels(1); +endchar; % end of "`" + +% \end{macrocode} +% \end{routine} +% +% The end of this file. +% \begin{macrocode} +% +% \end{macrocode} +% +% +% \subsection{The ligatures and dashes file} +% +% The ligatured letters, punctuation marks and dashes are defined in this file. +% \begin{macrocode} +%<*lig> +% IMINLIG.MF Uncial ligatured letters, punctation and dashes + +% \end{macrocode} +% First the ligtables. +% \begin{macrocode} + +ligtable "`": "`"=:oct"134"; +ligtable "'": "'"=:oct"042"; %% , "?" kern 2u#, "!" kern 2u#; + +ligtable "-": "-"=:oct"173"; +ligtable oct"173": "-"=:oct"174"; + +%%%%ligtable "f": "i"=:oct"014"; + +% \end{macrocode} +% +% \begin{routine}{''} +% The `''' ligature. +% \begin{macrocode} + +cmchar "Closing quotes"; +beginchar(oct"042",2sb#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb; +x1=w-pcshiftx-(0.5hstretch*dot_size); y1=y2=h; +x2=x1-(2hstretch*dot_size); +draw_pcomma(1,dot_size,comma_width); % right +draw_pcomma(2,dot_size,comma_width); % left +penlabels(1,2); +endchar; % end of "''" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{``} +% The ```' ligature. +% \begin{macrocode} + +cmchar "Opening quotes"; +beginchar(oct"134",2sb#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb; +x1=pcshiftx+(0.5hstretch*dot_size); y1=y2=h; +x2=x1+(2hstretch*dot_size); +draw_plq(1,dot_size,comma_width); % left +draw_plq(2,dot_size,comma_width); % right +penlabels(1,2); +endchar; % end of "``" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{-} +% The `-' (hyphen) character. +% \begin{macrocode} + +cmchar "Hyphen"; +beginchar("-",sb#+hstretch*(0.8x_height#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb/2; +numeric alpha; alpha:=w/8; +%%pickup quill; +%%lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; +%%x11=lft x1+alpha/2; y11=top y1-0.5thin; +%%x12=rt x2; y12=bot y1+0.5thin; +%%draw_triangle(11,alpha); +%%draw_rutriangle(12,alpha); +pickup thickstylus; +lft x21=pcshiftx; rt x22=w-pcshiftx; y21=y22=1/2h; +draw z21--z22; +draw_roundserif(21,22,srad); draw_flatserif(22,21,srad); +penlabels(1,2); +endchar; % end of "-" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{--} +% The `--' (en-dash) ligature. +% \begin{macrocode} + +cmchar "En dash"; +beginchar(oct"173",sb#+hstretch*(x_height#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb/2; +numeric alpha; alpha:=w/8; +pickup quill; +%%lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; +%%x11=lft x1+alpha/2; y11=top y1-0.5thin; +%%x12=rt x2; y12=bot y1+0.5thin; +%%draw_triangle(11,alpha); +%%draw_rutriangle(12,alpha); +pickup thickstylus; +lft x21=pcshiftx; rt x22=w-pcshiftx; y21=y22=1/2h; +draw z21--z22; +draw_roundserif(21,22,srad); draw_flatserif(22,21,srad); +penlabels(1,2); +endchar; % end of "--" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{---} +% The `---' (em dash) ligature. The em dash is twice the width of the en dash. +% \begin{macrocode} + +cmchar "Em dash"; +beginchar(oct"174",sb#+hstretch*(2x_height#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb/2; +numeric alpha; alpha:=w/8; +pickup quill; +%%lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; +%%x11=lft x1+alpha/2; y11=top y1-0.5thin; +%%x12=rt x2; y12=bot y1+0.5thin; +%%draw_triangle(11,alpha); +%%draw_rutriangle(12,alpha); +pickup thickstylus; +lft x21=pcshiftx; rt x22=w-pcshiftx; y21=y22=1/2h; +draw z21--z22; +draw_roundserif(21,22,srad); draw_flatserif(22,21,srad); +penlabels(1,2); +endchar; % end of "---" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{&} +% The ampersand (which is really an `et' ligature). +% \begin{macrocode} + +cmchar "IMIN ampersand"; +beginchar("&", 2sb#+hstretch*(5/4x_height#), asc_height#, 0); +adjust_fit(0,0); +numeric n[]; +path pth[]; +pcshiftx:=sb; +pickup quill; +%% E part +n1 := w-pcshiftx; % actual letter width +n2 := 4/8n1; % width of bowl +x1 = pcshiftx + 5/8n2; top y1=h; +lft x2 = pcshiftx; y2 = 1/2h; +x3 = pcshiftx + 1/2n2; bot y3 = 0; +rt x4 = pcshiftx + n2; y4 = 1/4h; +z98=(0,3/8h); z99=(w,y98); +pth1 := z98--z99; +pth2 := z1{left}..z2{down}..z3{right}; +z7 = pth1 intersectionpoint pth2; +rt x9 = w-pcshiftx; y9 = 3/4h; +z8=6/8[z7,z9]; + +%% T part +x18=x8; bot y18=0; +x19=5/8[x18,x9]; +y19=1/8h; + + +%%ductus:=true; +if ductus: + pickup stylus; +fi +%% E part +draw z7{pdir}..z1{left}..z2{down}..z3{right}..z4{up}..z8{right}; +draw z7{pdir}..z8{right}..z9{pdir}; +%% T bowl +draw z8{left}..z4{down}..z18{right}..z19{pdir}; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,10,16,17,18,19,31,32,33); +endchar; % end of "&" + +% \end{macrocode} +% \end{routine} +% +% +% The end of this file. +% \begin{macrocode} +% +% \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> +% IMINDIG.MF Program file for Insular Minuscule digits +% + +% \end{macrocode} +% +% +% +% \begin{routine}{1} +% The digit `1'. +% \begin{macrocode} +cmchar "Uncial digit 1"; +beginchar("1", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +x1=x2=w/2; +y1=h; bot y2=0; +%%ductus:=true; +draw_tstem(1,2,srad); +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,100); +endchar; % end "1" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{2} +% The digit `2'. +% \begin{macrocode} +cmchar "Uncial digit 2"; +beginchar("2", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +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; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_wave(5,6,thin); % foot +draw z1..z2{right}..z3{down}..{-pdir}z5wl; % curve +ductus:=false; +penlabels(1,2,3,4,5,6,100); +endchar; % end "2" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{3} +% The digit `3'. +% \begin{macrocode} +cmchar "Uncial 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 "Uncial digit 4"; +beginchar("4", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% the stem +x1=x2=w-pcshiftx-jut; +y1=h; bot y2=0; +% the crossbar +lft x3=pcshiftx; y3=0.33h; +rt x4=w-pcshiftx; y4=y3; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % main stem +draw_wave(3,4,thin); % crossbar +draw z3wl--z1; % diagonal +ductus:=false; +penlabels(1,2,3,4,100); +endchar; % end "4" + +% \end{macrocode} +% \end{routine} +% +% +% +% \begin{routine}{5} +% The digit `5'. +% \begin{macrocode} +cmchar "Uncial digit 5"; +beginchar("5", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +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; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_wave(2,1,thin); % top squiggle +draw z3{pdir}..z5{down}..z6{left}..z7; % curve +draw z2wl--z3; % vertical +ductus:=false; +penlabels(1,2,3,4,5,6,7,100); +endchar; % end "5" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{6} +% The digit `6'. +% \begin{macrocode} +cmchar "Uncial 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 "Uncial digit 7"; +beginchar("7", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% top bar +lft x1=pcshiftx; +rt x2=w-pcshiftx; +top y1=top y2=h; +% bowed leg +x4=w/2; bot y4=0; +x3=0.5[x2,x4]-3thin; y3=0.5[y2,y4]; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_wave(1,2,thin); % top bar +draw z1wr..z3..z4; +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 "Uncial 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 "Uncial 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 "Uncial 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; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,100); +endchar; % end "0" + +% \end{macrocode} +% \end{routine} +% +% +% The end of this file. +% \begin{macrocode} +% +% \end{macrocode} +% +% +% \section{The font definition files} \label{sec:fd} +% +% The font comes in normal and bold weights only. +% +% \begin{macrocode} +%<*fdot1> +\DeclareFontFamily{OT1}{imin}{} + \DeclareFontShape{OT1}{imin}{m}{n}{ <-8.5> imin7 <8.5-15> imin10 <15-> imin17 }{} + \DeclareFontShape{OT1}{imin}{m}{sl}{ <-> sub * imin/m/n }{} + \DeclareFontShape{OT1}{imin}{m}{it}{ <-> sub * imin/m/n }{} + \DeclareFontShape{OT1}{imin}{m}{sc}{ <-> sub * imin/m/n }{} + \DeclareFontShape{OT1}{imin}{m}{u}{ <-> sub * imin/m/n }{} + \DeclareFontShape{OT1}{imin}{bx}{n}{ <-8.5> iminb7 <8.5-15> iminb10 <15-> iminb17 }{} + \DeclareFontShape{OT1}{imin}{bx}{it}{ <-> sub * imin/bx/n }{} + \DeclareFontShape{OT1}{imin}{bx}{sl}{ <-> sub * imin/bx/n }{} + \DeclareFontShape{OT1}{imin}{b}{n}{ <-> sub * imin/bx/n }{} +% +% \end{macrocode} +% +% +% \begin{macrocode} +%<*fdt1> +\DeclareFontFamily{T1}{imin}{} + \DeclareFontShape{T1}{imin}{m}{n}{ <-8.5> imin7 <8.5-15> imin10 <15-> imin17 }{} + \DeclareFontShape{T1}{imin}{m}{sl}{ <-> sub * imin/m/n }{} + \DeclareFontShape{T1}{imin}{m}{it}{ <-> sub * imin/m/n }{} + \DeclareFontShape{T1}{imin}{m}{sc}{ <-> sub * imin/m/n }{} + \DeclareFontShape{T1}{imin}{m}{u}{ <-> sub * imin/m/n }{} + \DeclareFontShape{T1}{imin}{bx}{n}{ <-8.5> iminb7 <8.5-15> iminb10 <15-> iminb17 }{} + \DeclareFontShape{T1}{imin}{bx}{it}{ <-> sub * imin/bx/n }{} + \DeclareFontShape{T1}{imin}{bx}{sl}{ <-> sub * imin/bx/n }{} + \DeclareFontShape{T1}{imin}{b}{n}{ <-> sub * imin/bx/n }{} +% +% \end{macrocode} +% +% \section{The package code} \label{sec:code} +% +% \subsection{The \Lpack{inslrmin} package} +% +% The \Lpack{inslrmin} 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{inslrmin}[2002/12/30 v1.0 package for Insular Minuscule 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}{\iminfamily} +% Selects the \thisfont{} font family in the OT1 or T1 encoding. +% \begin{macrocode} +\ifx\Tienc\encodingdefault + \newcommand{\iminfamily}{\usefont{T1}{imin}{m}{n}} +\else + \newcommand{\iminfamily}{\usefont{OT1}{imin}{m}{n}} +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\textimin} +% Text command for the \thisfont{} font family. +% \begin{macrocode} +\DeclareTextFontCommand{\textimin}{\iminfamily} +% \end{macrocode} +% \end{macro} +% +% The end of this package. +% \begin{macrocode} +% +% \end{macrocode} +% +% \subsection{The \Lpack{allimin} package} +% +% The \Lpack{allimin} 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{inslrmin} package. +% \begin{macrocode} +%<*uscall> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{allimin}[2002/12/30 v1.0 package for all Insular Minuscule fonts] +\RequirePackage{inslrmin} +% \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}{imin} +\renewcommand{\sfdefault}{imin} +\renewcommand{\ttdefault}{imin} +% \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}{\imin@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{\imin@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}{\imin@new@setfontsize} +% This is a macro that replaces the |\@setfontsize| macro which is called by +% the font size changing commands. +% \begin{macrocode} +\newcommand{\imin@new@setfontsize}[3]{% + \edef\@tempa{\def\noexpand\@tempb####1<#2}% + \@tempa>##2<##3\@nil{\def\imin@baselineskip@value{##2}}% + \edef\@tempa{\noexpand\@tempb\imin@baselineskip@table<#2}% + \@tempa><\@nil + \ifx\imin@baselineskip@value\@empty + \def\imin@baselineskip@value{#3}% + \fi + \imin@old@setfontsize{#1}{#2}\imin@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\imin@old@setfontsize=\@setfontsize + \let\@setfontsize=\imin@new@setfontsize} +\AtBeginDocument{\normalsize} +% \end{macrocode} +% +% +% The end of this package. +% \begin{macrocode} +% +% \end{macrocode} +% +% +% +% +% +% \Finale +% \PrintIndex +% +\endinput + +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} + + diff --git a/Master/texmf-dist/source/fonts/bookhands/inslrmin.ins b/Master/texmf-dist/source/fonts/bookhands/inslrmin.ins new file mode 100644 index 00000000000..a02ee5e2706 --- /dev/null +++ b/Master/texmf-dist/source/fonts/bookhands/inslrmin.ins @@ -0,0 +1,101 @@ +%% +%% inslrmin.ins +%% Copyright 1999 Peter R. Wilson +%% +%% This program is provided under the terms of the +%% LaTeX Project Public License distributed from CTAN +%% archives in directory macros/latex/base/lppl.txt. +%% +%% Author: Peter Wilson (CUA) +%% now at: peter.r.wilson@boeing.com +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\batchfile{inslrmin.ins} +\input docstrip.tex +\preamble + + Copyright 1999 Peter R. Wilson + + This program is provided under the terms of the + LaTeX Project Public License distributed from CTAN + archives in directory macros/latex/base/lppl.txt. + +Author: Peter Wilson (CUA) + now at: peter.r.wilson@boeing.com + +\endpreamble + +\keepsilent + +%%% \Msg{*** Generating the driver file ***} +%%% \generateFile{inslrmin.drv}{t}{\from{inslrmin.dtx}{driver}} + +\Msg{*** Generating the Metafont files ***} + +\usepostamble\empty +\generateFile{imin7.mf}{t}{\from{inslrmin.dtx}{base7}} +\generateFile{imin10.mf}{t}{\from{inslrmin.dtx}{base10}} +\generateFile{imin17.mf}{t}{\from{inslrmin.dtx}{base17}} +\generateFile{iminb7.mf}{t}{\from{inslrmin.dtx}{base7b}} +\generateFile{iminb10.mf}{t}{\from{inslrmin.dtx}{base10b}} +\generateFile{iminb17.mf}{t}{\from{inslrmin.dtx}{base17b}} +\generateFile{iminl.mf}{t}{\from{inslrmin.dtx}{min}} +\generateFile{iminu.mf}{t}{\from{inslrmin.dtx}{maj}} +\generateFile{imintitle.mf}{t}{\from{inslrmin.dtx}{mfd}} +\generateFile{iminpunct.mf}{t}{\from{inslrmin.dtx}{punct}} +\generateFile{iminlig.mf}{t}{\from{inslrmin.dtx}{lig}} +\generateFile{imindig.mf}{t}{\from{inslrmin.dtx}{dig}} + +\Msg{*** Generating the Font Definition files ***} +\usepostamble\defaultpostamble + +\generateFile{ot1imin.fd}{t}{\from{inslrmin.dtx}{fdot1}} +\generateFile{t1imin.fd}{t}{\from{inslrmin.dtx}{fdt1}} + +\Msg{*** Generating the LaTeX2e package files ***} + +\generateFile{inslrmin.sty}{t}{\from{inslrmin.dtx}{usc}} +\generateFile{allimin.sty}{t}{\from{inslrmin.dtx}{uscall}} + +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into directories searched by TeX:} +\Msg{*} +\Msg{* Move these into the font source area:} +\Msg{* \space\space imin7.mf} +\Msg{* \space\space imin10.mf} +\Msg{* \space\space imin17.mf} +\Msg{* \space\space iminb7.mf} +\Msg{* \space\space iminb10.mf} +\Msg{* \space\space iminb17.mf} +\Msg{* \space\space iminl.mf} +\Msg{* \space\space iminu.mf} +\Msg{* \space\space imintitle.mf} +\Msg{* \space\space iminpunct.mf} +\Msg{* \space\space iminlig.mf} +\Msg{* \space\space imindig.mf} +\Msg{*} +\Msg{* Move these into the LaTeX macro area:} +\Msg{* \space\space ot1imin.fd} +\Msg{* \space\space t1imin.fd} +\Msg{* \space\space inslrmin.sty} +\Msg{* \space\space allimin.sty} +\Msg{*} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* `.dtx' through LaTeX.} +\Msg{* Process any name.idx file by:} +\Msg{* \space\space\space\space makeindex -s gind.ist name} +\Msg{* Process any name.glo file by:} +\Msg{* \space\space\space\space makeindex -s gglo.ist -o name.gls name.glo} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} + +\endinput diff --git a/Master/texmf-dist/source/fonts/bookhands/pgothic.dtx b/Master/texmf-dist/source/fonts/bookhands/pgothic.dtx new file mode 100644 index 00000000000..5e9a6e3bb38 --- /dev/null +++ b/Master/texmf-dist/source/fonts/bookhands/pgothic.dtx @@ -0,0 +1,5484 @@ +% \iffalse meta-comment +% +% pgothic.dtx +% Copyright 1999 Peter R. Wilson +% +% This program is provided under the terms of the +% LaTeX Project Public License distributed from CTAN +% archives in directory macros/latex/base/lppl.txt. +% +% Author: Peter Wilson (CUA) (now at: peter.r.wilson@boeing.com) +% +% If you do not have the docmfp package (available from CTAN in +% tex-archive/macros/latex/contrib/supported), comment out the +% \usepackage{docmfp} line below and uncomment the line following it. +% +%<*driver> +\documentclass{ltxdoc} +\usepackage{docmfp} +%%%%%% \providecommand{\DescribeVariable}[1]{} \newenvironment{routine}[1]{}{} +\EnableCrossrefs +\CodelineIndex +%% comment out the next line to show the code +\OnlyDescription +\setcounter{StandardModuleDepth}{1} +\begin{document} + \DocInput{pgothic.dtx} +\end{document} +% +% +% \fi +% +% \CheckSum{134} +% +% \DoNotIndex{\',\.,\@M,\@@input,\@addtoreset,\@arabic,\@badmath} +% \DoNotIndex{\@centercr,\@cite} +% \DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue} +% \DoNotIndex{\@input,\@ixpt,\@m} +% \DoNotIndex{\@minus,\@mkboth,\@ne,\@nil,\@nomath,\@plus,\@set@topoint} +% \DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb} +% \DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt} +% \DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt} +% \DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace} +% \DoNotIndex{\advance,\Alph,\alph} +% \DoNotIndex{\arabic,\ast,\begin,\begingroup,\bfseries,\bgroup,\box} +% \DoNotIndex{\bullet} +% \DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption} +% \DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass} +% \DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\endtrivlist} +% \DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup} +% \DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter} +% \DoNotIndex{\fbox} +% \DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef} +% \DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule} +% \DoNotIndex{\hsize,\hskip,\hspace,\hss,\if@tempswa,\ifcase,\or,\fi,\fi} +% \DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\fi,\fi,\fi,\fi,\fi} +% \DoNotIndex{\input} +% \DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark} +% \DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright} +% \DoNotIndex{\month,\newcommand,\newcounter,\newenvironment} +% \DoNotIndex{\NeedsTeXFormat,\newdimen} +% \DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number} +% \DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\p@} +% \DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip} +% \DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions} +% \DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright} +% \DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font} +% \DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily,\roman} +% \DoNotIndex{\roman,\secdef,\selectfont,\setbox,\setcounter,\setlength} +% \DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space} +% \DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase} +% \DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt} +% \DoNotIndex{\viipt,\vipt,\vskip,\vspace} +% \DoNotIndex{\wd,\xiipt,\year,\z@} +% +% \changes{v1.0}{2002/12/30}{First public release} +% +% \def\fileversion{v1.0} +% \def\filedate{2002/12/30} +% \newcommand*{\Lpack}[1]{\textsf {#1}} ^^A typeset a package +% \newcommand*{\Lopt}[1]{\textsf {#1}} ^^A typeset an option +% \newcommand*{\file}[1]{\texttt {#1}} ^^A typeset a file +% \newcommand*{\Lcount}[1]{\textsl {\small#1}} ^^A typeset a counter +% \newcommand*{\pstyle}[1]{\textsl {#1}} ^^A typeset a pagestyle +% \newcommand*{\Lenv}[1]{\texttt {#1}} ^^A typeset an environment +% \newcommand*{\AD}{\textsc{ad}} +% \newcommand*{\thisfont}{Gothic Textura Prescius} +% +% \title{The \Lpack{Gothic Textura Prescius} fonts\thanks{This +% file has version number \fileversion, last revised +% \filedate.}} +% +% \author{% +% Peter Wilson\\ +% Catholic University of America \\ +% Now at \texttt{peter.r.wilson@boeing.com} +% } +% \date{\filedate} +% \maketitle +% \begin{abstract} +% The \Lpack{pgothic} and \Lpack{allpgoth} packages provide a set of +% Metafont \thisfont{} book-hands +% as used +% for manuscripts in the 13th century onwards. This is one in a series +% of manuscript fonts. +% \end{abstract} +% \tableofcontents +% \listoftables +% +% +% +% +% \section{Introduction} +% +% The \Lpack{pgothic} and \Lpack{allpgoth} packages provide a Metafont~\cite{METAFONT} version +% of the \thisfont{} manuscript book-hand that was in use from about the +% thirteenth century~\AD{} onwards. It is part of a project to provide fonts +% covering the major manuscript hands between the first century~\AD{} and +% the invention of printing. The principal resources used in this project +% are listed in the Bibliography. +% +% This manual is typeset according to the conventions of the +% \LaTeX{} \textsc{docstrip} utility which enables the automatic +% extraction of the \LaTeX{} macro source files~\cite{GOOSSENS94}. +% The \Lpack{docmfp} package is used for documenting the Metafont portions +% of the distribution~\cite{DOCMFP}. +% +% Section~\ref{sec:usc} describes the usage of the package. +% Commented code for the fonts is in Sections~\ref{sec:mf} and~\ref{sec:fd} +% and source code for the package is in Section~\ref{sec:code}. +% +% \subsection{Manuscript book-hands} +% +% Before the invention of printing all books were written by hand. The book-hands +% used by the scribes and copyists for the manuscripts changed as time +% went on. Table~\ref{tab:1} lists some of the common book-hands which were used +% between the 1st and 15th centuries. The later book-hands formed the basis of the +% fonts used by the early printers, which in turn form the basis of the printing +% fonts in use today. +% +% The manuscript book-hands were written with a broad nibbed reed or quill +% pen. Among the distinguishing characteristics of a hand, apart from the +% actual shape of the letters, are the angle of the pen (which controls the +% variation between thick and thin strokes) and the height of a letter compared +% to the width of the nib. The lower the ratio of the letter height to nib +% width, the more condensed is the script. The scripts also varied in their +% typical height. +% +% Table~\ref{tab:1} gives an `average' x-height for each +% script, which I obtained by measuring a sample of photographs of +% manuscripts written in the various hands. About a dozen examples +% of each book-hand were measured. This figure should not be taken too +% seriously. +% +% There was not a sharp division between the use of one hand and another. +% Many manuscripts exhibit a variety of hands in the same document. For example, +% the scribe writing in an Uncial hand may have used Roman Rustic letters +% for capitals. Usually the same pen was used for the two different scripts. +% +% Generally speaking, as a hand got older it became more embelished, and +% therefore took longer to write. As this happened a new hand would appear that +% was faster, and which would eventually make the earlier one obsolete. +% +% Many of the book-hands were single-cased; that is, they did not have an +% upper- and lower-case as we do nowadays in Western scripts. On the other +% hand, a script might be majuscule or minuscule. A \textit{majuscule} script +% is one, like our upper-case, where the letters are drawn between two lines +% and are of a uniform height with no ascenders or descenders. +% A \textit{minuscule} script, like our lower-case, is drawn between four lines +% and has ascenders and descenders. +% +% \begin{table} +% \centering +% \caption{The main manuscript book-hands} \label{tab:1} +% \begin{tabular}{lccccc} \hline +% Name & Century & x-height & Height & Pen & Normalised \\ +% & & (mm) & (nib widths) & angle & height \\ \hline +% Roman Rustic & 1--6 & 5.7 & 4--6 & 45 & 1.90 \\ +% Uncial & 3--6 & 4.1 & 4--5 & 30 & 1.37 \\ +% Half Uncial & 3--9 & 3.2 & 3--6 & 20--30 & 1.07 \\ +% Artificial Uncial & 6--10 & 4.2 & 3--6 & 10 & 1.40 \\ +% Insular majuscule & 6--9 & 4.2 & 5 & 0--20 & 1.40 \\ +% Insular minuscule & 6 onward & 4.1 & 5--6 & 45--70 & 1.37 \\ +% Carolingian minuscule & 8--12 & 3.0 & 3--5 & 45 & 1.00 \\ +% Early Gothic & 11--12 & 3.8 & 4--6 & 20--45 & 1.27 \\ +% Gothic Textura & 13--15 & 3.9 & 3--5 & 30--45 & 1.30 \\ +% Gothic Prescius & 13 onward & 3.3 & 4--5 & 45 & 1.10 \\ +% Rotunda & 13--15 & 3.2 & 4--6 & 30 & 1.07 \\ +% Humanist minuscule & 14 onward & 3.0 & 4--5 & 30--40 & 1.00 \\ \hline +% \end{tabular} +% \end{table} +% +% During the period under consideration arabic numerals were effectively +% not used. At the beginning they were unknown and even though some knew +% of them towards the end, the glyphs used for them are not recognisable --- +% to me they look somewhat like cryllic letters --- and each locality +% and time had its own highly individualistic rendering. The general rule +% when using one of these book-hands is to write all numbers using +% roman numerals. +% +% The Roman alphabet consisted of 23 capital letters --- the J, U and W +% were absent. The book-hands initially used both a `u' and a `v' interchangeably +% but by the 10th century the practice had become to use the `v' before a vowel +% and the `u' otherwise. The letter corresponding to the W sound appeared +% in England around the 7th century in +% the form of the runic \textit{wen} character and by about the 11th century +% the `w' chacter was generally used. The `J' is the newest letter of all, not +% appearing until about the mid 16th century. +% +% In the first century punctuation was virtually unknown, and typically +% would not even be any additional space between individual words, never +% mind denoting ends of sentences. Sometimes a dot at mid-height would be +% used as a word seperator, or to mark off the end of a paragraph. Effectively +% a text was a continuous stream of letters. By the time that printing was +% invented, though, all of our modern punctuation marks were being used. +% +% Among all these manuscript hands, the Carolingian minuscule is the +% most important as our modern fonts are based on its letter shapes, and it is +% also at this point in time where the division occured between the black letter +% scripts as used even today in Germany, and the lighter fonts used elesewhere. +% The Rotunda and Humanist minuscule hands were developed in Italy and were +% essentially a rediscovery of the Carolingian minusucle. Guthenberg took the +% Gothic Textura Quadrata script as the model for his types. Later printers, +% such as Nicholas Jenson of Venice, +% took the Humanist scripts as their models. +% +% +% \subsection{The \thisfont{} script} +% +% With the Gothic hands, used from the thirteenth century, the attention of +% the scribes moved from the individual letter to the word. The scripts +% changed to accomodate this interest so the appearance of the letters +% became subordinate to the overall appearance of the words they formed. +% Many of the letters appear to be indistinguishable today but the contemporary +% reading public seemed to have no difficulty. +% +% It was during the heyday of the Gothic scripts that separate capital +% letters were introduced. Also, as a small concession to legibility, +% the lowecase `i' acquired a small mark above it. Ligatures were similar +% to those in Early Gothic. The letter `w' was added to the hand early on +% and `j' started to appear after 1400, providing the full 26 letter alphabet +% for the first time. +% +% The Gothic Textura Prescius is a version of the Gothic scripts that was +% popular in England. Caxton used it as the basis for his printing types. +% +% \section{The \Lpack{pgothic} and \Lpack{allpgoth} packages} \label{sec:usc} +% +% The \thisfont{} font family is called |pgoth|. The font is supplied in both +% OT1 and T1 encodings. +% +% \subsection{The \Lpack{pgothic} package} +% +% This is intended for the occasions when some short pieces of text have +% to be written in \thisfont{} while the majority of the document is in another +% font. The normal baselineskips are used. +% +% \DescribeMacro{\pgothfamily} +% The |\pgothfamily| declaration starts typesetting with the \thisfont{} fonts. +% Use of the \thisfont{} font will continue until either there is another |\...family| +% declaration or the current group (e.g., environment) is closed. +% +% \DescribeMacro{\textpgoth} +% The command |\textpgoth{|\meta{text}|}| will typeset \meta{text} using the +% \thisfont{} fonts. +% +% \subsection{The \Lpack{allpgoth} package} +% +% +% This package is for when the entire document will be typeset with the +% \thisfont{} font. The baselineskips are set to those appropriate to the +% book-hand. +% +% This is a minimalist package. Apart from declaring \thisfont{} to be the +% default font and setting the baselineskips appropriately, it makes no other +% alterations. +% Vertical spacing +% before and after section titles and before and after lists, etc., will be +% too small as the \LaTeX{} design assumes a font comparable in size to +% normal printing fonts, and the book-hand is much taller. +% To capture more of the flavour of the time, all numbers +% should be written using roman numerals. +% The \Lpack{romannum} package~\cite{ROMANNUM} +% can be used so that \LaTeX{} will typeset the numbers that it generates, +% like sectioning or caption numbers, using roman numerals instead of arabic +% digits. +% +% \DescribeMacro{\cmrfamily} +% \DescribeMacro{\textcmr} +% \DescribeMacro{\cmssfamily} +% \DescribeMacro{\textcmss} +% \DescribeMacro{\cmttfamily} +% \DescribeMacro{\textcmtt} +% The |...family| declarations start typesetting with the Computer Modern Roman +% (|\cmrfamily|), the Computer Modern Sans (|\cmssfamily|), and the Computer +% Modern Typewriter (|\cmttfamily|) font families. The |\textcm..{|\meta{text}|}| +% commands will typeset \meta{text} in the corresponding Computer Modern font. +% +% The \Lpack{allpgoth} package automatically loads the \Lpack{pgothic} package, +% so its font commands are available if necessary. +% +% \StopEventually{ +% \bibliographystyle{alpha} +% \renewcommand{\refname}{Bibliography} +% \begin{thebibliography}{GMS94} +% \addcontentsline{toc}{section}{\refname} +% +% \bibitem[And69]{ANDERSON69} +% Donald M.~Anderson. +% \newblock {\em The Art of Written Forms: The Theory and Practice of Calligraphy}. +% \newblock Holt, Rinehart and Winston, 1969. +% +% \bibitem[Bol95]{BOLOGNA95} +% Giulia Bologna. +% \newblock {\em Illuminated Manuscripts: The Book before Gutenberg}. +% \newblock Crescent Books, 1995. +% +% \bibitem[Day95]{DAY95} +% Lewis F.~Day. +% \newblock {\em Alphabets Old \& New}. +% \newblock (3rd edition originally published by B.~T.~Batsford, 1910) +% \newblock Senate, 1995. +% +% \bibitem[Dro80]{DROGIN80} +% Marc Drogin. +% \newblock {\em Medieval Calligraphy: Its History and Technique}. +% \newblock Allenheld, Osmun \& Co., 1980. +% +% \bibitem[Dru95]{DRUCKER95} +% Johanna Drucker. +% \newblock {\em The Alphabetic Labyrinth}. +% \newblock Thames \& Hudson, 1995. +% +% \bibitem[Fir93]{FIRMAGE93} +% Richard A.~Firmage. +% \newblock {\em The Alphabet Abecedarium}. +% \newblock David R~Goodine, 1993. +% +% \bibitem[Fli98]{LETTRINE} +% Daniel Flipo. +% \newblock {\em The LETTRINE package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1998. +% +% \bibitem[Har95]{HARRIS95} +% David Harris. +% \newblock {\em The Art of Calligraphy}. +% \newblock DK Publishing, 1995. +% +% \bibitem[Jen95]{BETON} +% Frank Jensen. +% \newblock {\em The BETON package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1995. +% +% \bibitem[Joh71]{JOHNSTON75} +% Edward Johnston (ed. Heather Child). +% \newblock {\em Formal Penship and Other Papers}. +% \newblock Penthalic, 1971. +% +% \bibitem[Knu87]{CM} +% Donald E.~Knuth. +% \newblock {\em Computer Modern Typefaces}. +% \newblock Addison-Wesley, 1987. +% +% \bibitem[Knu92]{METAFONT} +% Donald E.~Knuth. +% \newblock {\em The METAFONTbook}. +% \newblock Addison-Wesley, 1992. +% +% \bibitem[GMS94]{GOOSSENS94} +% Michel Goossens, Frank Mittelbach, and Alexander Samarin. +% \newblock {\em The LaTeX Companion}. +% \newblock Addison-Wesley Publishing Company, 1994. +% +% \bibitem[Tho75]{THOMAS75} +% Alan G.~Thomas. +% \newblock {\em Great Books and Book Collectors}. +% \newblock Weidenfield and Nichoson, 1975. +% +% \bibitem[Wil99]{DOCMFP} +% Peter R.~Wilson. +% \newblock {\em The DOCMFP Package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1999. +% +% \bibitem[Wil99b]{ROMANNUM} +% Peter R.~Wilson. +% \newblock {\em The ROMANNUM Package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1999. +% +% \end{thebibliography} +% } +% +% \section{The Metafont code} \label{sec:mf} +% +% +% As previously noted, this work is part of a larger project to provide +% fonts covering the main manuscript book-hands. As such, one of the +% aims is to produce a coordinated set of fonts, especially as multiple +% hands might be used in a single document. +% +% Noting that the hands tend to be somewhat larger than the typical 10pt +% size (where the x-height is approximately 1.5mm) used for modern books, +% I have also designed the fonts +% at a larger than normal size, then applied some non-linear factors when reducing +% them down to a 10pt size. +% Further, I have used the height of the Carolingian minuscule as a +% normalising factor when deciding on the absolute height of any particular +% script. The x-height of the Carolingian font is made equal to the +% x-height of the Computer Modern Roman (CMR) font. +% +% Modern fonts are effectively drawn. That is, the outline of the letter is +% drawn carefully and the center is filled with ink. This is shown to good +% effect in the Metafont code for the Computer Modern fonts~\cite{CM}. +% In contrast, the manuscript letters were inked by single pen strokes in +% a calligraphic manner. I have tried to repeat this calligraphic style +% in the Metafont code. +% +% As much as possible I have tried to use parameter values from the +% Computer Modern Roman (CMR) fonts in order to reduce possible +% infelicities if the CM and manuscript fonts are used together. However, +% few of the CMR parameters are applicable to the calligraphic style. +% +% +% \subsection{The parameter file} +% +% We deal with the parameter files first, and start by announcing +% what they are for. The \thisfont{} font comes in three sizes and also as a normal +% and a bold font. +% \begin{macrocode} +%<*base7|base10|base17|base7b|base10b|base17b> +%%%% PGOTH7.MF Gothic Textura Prescius at 7 point design size. +%%%% PGOTH10.MF Gothic Textura Prescius at 10 point design size. +%%%% PGOTH17.MF Gothic Textura Prescius at 17 point design size. +%%%% PGOTHB7.MF Gothic Textura Prescius Bold at 7 point design size. +%%%% PGOTHB10.MF Gothic Textura Prescius Bold at 10 point design size. +%%%% PGOTHB17.MF Gothic Textura Prescius Bold at 17 point design size. +% +% \end{macrocode} +% Parameters from CMR are used as much as possible. We also +% make sure that \Lpack{cmbase} is loaded as well as plain Metafont. +% \begin{macrocode} +if unknown cmbase: input cmbase fi + +%font_identifier:="PGOTH"; font_size 7pt#; +%font_identifier:="PGOTH"; font_size 10pt#; +%font_identifier:="PGOTH"; font_size 17.28pt#; +%font_identifier:="PGOTHB"; font_size 7pt#; +%font_identifier:="PGOTHB"; font_size 10pt#; +%font_identifier:="PGOTHB"; font_size 17.28pt#; + +% \end{macrocode} +% +% \DescribeVariable{jutstretch} +% The CMR scaling for lowercase serifs wrt 17pt size. +% \begin{macrocode} +% jutstretch:=1.19; +% jutstretch:=1.152; +% jutstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{stemstretch} +% The CMR scaling for lowercase stem widths wrt 17pt size. +% \begin{macrocode} +% stemstretch:=1.50; +% stemstretch:=1.31; +% stemstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{caprat} +% The scaling for capitals wrt lowercase. +% (the ratio for CMR10 is 1.59). +% \begin{macrocode} + caprat:=7/5; % ratio of capital height to minuscule height +% \end{macrocode} +% +% \DescribeVariable{cap_jutstretch} +% The CMR scaling for uppercase serifs wrt 17pt size. +% \begin{macrocode} +% cap_jutstretch:=1.3; +% cap_jutstretch:=1.2; +% cap_jutstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{cap_stemstretch} +% The CMR scaling for uppercase stem width wrt 17pt size. +% \begin{macrocode} +% cap_stemstretch:=1.45; +% cap_stemstretch:=1.31; +% cap_stemstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{bfudge} +% Letter width scaling for bold font wrt normal font. We don't really +% need to change this for bold fonts as the letter width is in terms +% of the pen, not the x-height. +% +% \begin{macrocode} +% bfudge:=1.0; +% bfudge:=1.0; %% normally 1.2 +% \end{macrocode} +% +% \DescribeVariable{szfudge} +% Width scaling wrt 17pt letter width. +% \begin{macrocode} +% szfudge:=1.18; +% szfudge:=1.0; +% szfudge:=1.0; +% \end{macrocode} +% +% \DescribeVariable{hstretch} +% Horizontal stretching factor wrt 17pt size letter width. +% \begin{macrocode} + hstretch:=szfudge*bfudge; +% \end{macrocode} +% +% \DescribeVariable{carol_height} +% The x-height of the Carolingian gothic font. +% \begin{macrocode} +% carol_height#:=108.5/36pt#; +% carol_height#:=155/36pt#; +% carol_height#:=268/36pt#; +% \end{macrocode} +% +% \DescribeVariable{vstretch} +% The height of this font wrt the Carolingian font. +% \begin{macrocode} + vstretch:=1.3; + +% \end{macrocode} +% +% \DescribeVariable{x_height} +% The x-height of lower case letters. Scaled from the Carolingian font. +% \begin{macrocode} + x_height#:=vstretch*carol_height#; +% \end{macrocode} +% +% \DescribeVariable{u} +% The unit width. The CMR values are used. +% \begin{macrocode} +% u#:=15.5/36pt#; +% u#:=20/36pt#; +% u#:=32.5/36pt#; +% u#:=17.9/36pt#; +% u#:=23/36pt#; +% 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 +% cap_serif_fit#:=3.5/36pt#; % extra sidebar near uppercase serifs +% cap_serif_fit#:=5/36pt#; % extra sidebar near uppercase serifs +% cap_serif_fit#:=8/36pt#; % extra sidebar near uppercase serifs +% letter_fit#:=0pt#; % extra space added to all sidebars +% letter_fit#:=0pt#; % extra space added to all sidebars +% letter_fit#:=-0.1pt#; % extra space added to all sidebars +% \end{macrocode} +% +% \DescribeVariable{sb} +% A length used for adjusting the side bearings of characters. +% Normally this is |1/2u| but reduce it by 1/2 for the Gothic. +% \begin{macrocode} +% sb#:=1/4u#; % unit for side bearings +% sb#:=1/4u#; % unit for side bearings +% sb#:=1/4u#; % unit for side bearings + +% \end{macrocode} +% +% \DescribeVariable{cap_sb} +% A length used for adjusting the side bearings of uppercase characters. +% \begin{macrocode} +% cap_sb#:=2sb#; % unit for uppercase side bearings +% cap_sb#:=2sb#; % unit for uppercase side bearings +% cap_sb#:=2sb#; % unit for uppercase side bearings + +% \end{macrocode} +% +% \DescribeVariable{cap_height} +% The height of capital letters. +% \begin{macrocode} +% cap_height#:=172.2/36pt#; % height of caps +% cap_height#:=246/36pt#; % height of caps +% 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} +% thickfudge:=1/5; +% thickfudge:=1/4; +% \end{macrocode} +% +% \DescribeVariable{thinfudge} +% The nib sharpness. +% \begin{macrocode} +thinfudge:=1/6; +% \end{macrocode} +% +% \DescribeVariable{thick} +% The maximum nib width. +% That is, the width of the thickest line that can be penned. +% \begin{macrocode} +thick#:=stemstretch*thickfudge*x_height#; % max pen breadth +% \end{macrocode} +% +% \DescribeVariable{thin} +% The nib thinness. +% That is, the width of the thinnest line that can be penned. +% \begin{macrocode} +thin#:=thinfudge*thick#; +% \end{macrocode} +% +% \DescribeVariable{pangle} +% The pen angle (in degrees). +% \begin{macrocode} +pangle:=45; % pen angle +% \end{macrocode} +% +% \DescribeVariable{stem_width} +% The width of a vertical stem. +% \begin{macrocode} +stem_width#:= thick#*(cosd pangle); +% \end{macrocode} +% +% \DescribeVariable{perpdec} +% \DescribeVariable{angdec} +% The perpendicular shift between pairs of thin decorative lines in capitals +% is |perpdec| and between angled lines is |angdec|. +% \begin{macrocode} +perpdec#:= 3thin#; +angdec#:= perpdec#/(cosd pangle); +% \end{macrocode} +% +% +% \DescribeVariable{ascratio} +% The height of lower case ascenders wrt |x_height|. +% \begin{macrocode} + ascratio:=5/4; +% \end{macrocode} +% +% \DescribeVariable{asc_height} +% The height of lower case ascenders. +% \begin{macrocode} + asc_height#:=ascratio*x_height#; +% \end{macrocode} +% +% \DescribeVariable{descratio} +% The depth of lower case descenders wrt |x_height|. +% \begin{macrocode} + descratio:=2/4; +% \end{macrocode} +% +% \DescribeVariable{desc_depth} +% The depth of lower case descenders. +% \begin{macrocode} + desc_depth#:=descratio*x_height#; +% \end{macrocode} +% +% \DescribeVariable{body_height} +% The height of the tallest character. +% \begin{macrocode} + body_height#:=caprat*asc_height#; +% \end{macrocode} +% +% \DescribeVariable{body_depth} +% The depth of the lowest character. +% \begin{macrocode} + body_depth#:=caprat*desc_depth#; +% \end{macrocode} +% +% \DescribeVariable{half_height} +% Half the normal letter height. +% \begin{macrocode} + half_height#:=1/2x_height#; % half the height of x height letters + +% \end{macrocode} +% +% \DescribeVariable{side} +% We might be using a square for the character design. +% \begin{macrocode} +side#:=x_height#; +% \end{macrocode} +% +% \DescribeVariable{rule_thickness} +% Thickness of rules (in math symbols). The CMR values are used. +% \begin{macrocode} +% rule_thickness#:=.34pt#; +% rule_thickness#:=.4pt#; +% rule_thickness#:=.6pt#; + +% \end{macrocode} +% +% \DescribeVariable{jutfudge} +% Controls the protrusion of serifs. +% \begin{macrocode} +%%%jutfudge:= 3/4; +jutfudge:= 1/2; +% \end{macrocode} +% +% \DescribeVariable{jut} +% The lowercase serif protrusion. +% \begin{macrocode} +jut#:=jutstretch*jutfudge*thick#; +% \end{macrocode} +% +% \DescribeVariable{srad} +% |srad| with |0 < srad < 1| controls the serif radius. +% \begin{macrocode} +srad:=0.8; % was 0.5 +% \end{macrocode} +% +% \DescribeVariable{trijut} +% The lowercase triangular serif protrusion. +% \begin{macrocode} +trijut#:=0.75jutstretch*thick#; +% \end{macrocode} +% +% \DescribeVariable{clubjutfudge} +% The fractional protusion of a club serif. +% \begin{macrocode} +clubjutfudge:=1/2; +% \end{macrocode} +% +% \DescribeVariable{clubjut} +% The lowercase club serif protrusion. +% \begin{macrocode} +clubjut#:=jutstretch*clubjutfudge*thick#; +% \end{macrocode} +% +% \DescribeVariable{wided} +% \DescribeVariable{widedmin} +% Default juts of wide (touching) diamonds. +% \begin{macrocode} +wided:= 0.75; +widedmin := 1.05 - wided; +% \end{macrocode} +% +% \DescribeVariable{narrowd} +% \DescribeVariable{narrowdmin} +% Default juts of narrow (non-touching) diamonds. +% \begin{macrocode} +narrowd:= 0.5; +narrowdmin := 0.7 - narrowd; +% \end{macrocode} +% +% \DescribeVariable{diawd} +% \DescribeVariable{diang} +% Default width and angle of diamonds. +% \begin{macrocode} +diawd := 1.0; +diang := 30; +% \end{macrocode} +% +% \DescribeVariable{fig_height} +% The height of numerals. Make these midway between normal and capital +% letters. +% \begin{macrocode} + fig_height#:=(0.5[1,caprat])*x_height#; +% \end{macrocode} +% +% \DescribeVariable{fig_width} +% The width of numerals. All numerals are the same width (roughly, an `o'). +% \begin{macrocode} + fig_width#:=hstretch*(4+wided+widedmin)*stem_width#; +% \end{macrocode} +% +% +% +% \DescribeVariable{o} +% Amount of overshoot for curves (as in an `o'). Use CMR values. +% \begin{macrocode} +% o#:=5/36pt#; +% o#:=8/36pt#; +% o#:=10/36pt#; + +% \end{macrocode} +% +% \DescribeVariable{slant} +% |slant| is the amount the font slopes to the right. \\ +% 5 degrees = 9/100; 10 degrees = 11/50. +% \begin{macrocode} +slant:=0; % tilt ratio $(\Delta x/\Delta y)$ +%%%%%%slant:= sind 10/cosd 10; %% 10 degree slant + +% \end{macrocode} +% +% \DescribeVariable{monospace} +% We are generating a variable-width font. +% \begin{macrocode} +monospace:=false; % should all characters have the same width? + +% \end{macrocode} +% +% \DescribeVariable{dot_size} +% The size of (punctuation) dots. +% \begin{macrocode} +dot_size#:=5thin#; % size of dots +% \end{macrocode} +% +% \DescribeVariable{comma_width} +% The horizontal width of a comma. +% \begin{macrocode} +comma_width#:=5/4dot_size#; + +% \end{macrocode} +% +% Finally, call the driver file for the font. +% \begin{macrocode} +generate pgothtitle %% switch to the driver file + +% \end{macrocode} +% +% The end of this code section. +% \begin{macrocode} +% +% \end{macrocode} +% +% +% \subsection{The driver file} +% +% The driver file sets up the font parameters and also contains +% the macros used in the definition of the characters. +% +% \begin{macrocode} +%<*mfd> +% This is PGOTHTITLE.MF for the Gothic Textura Prescius font. +% This makes a short font. +% This file also contains special macros universally needed in the +% font but either not in the cmbase.mf file or modifications of these. +% +% \end{macrocode} +% +% \begin{routine}{makebox} +% This is a new version of the \Lpack{cmbase.mf} |makebox| macro. +% Essentially, as we are only generating a single case font, we don't +% need all the horizontals for the CMR characters. +% +% \begin{macrocode} +% A new version of cmbase.mf makebox macro +def makebox(text rule) = + for y=0,half_height,cap_height,body_height,x_height,-desc_depth,-body_depth: + rule((l,y)t_,(r,y)t_); endfor % horizontals + for x=l,r: rule((x,-body_depth)t_,(x,body_height)t_); endfor % verticals + for x=u*(1+floor(1/u)) step u until r-1: + rule((x,-body_depth)t_,(x,body_height)t_); endfor % more verticals + if charic<>0: + rule((r+charic*pt,h.o_),(r+charic*pt,.5h.o_)); fi % italic correction +enddef; + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{proofpcbb} +% The macro |proofpcbb(S, xoff, yoff)| draws crosses at the corners of the +% square, and at the bottom and top midpoints, where the point |zS| is at +% position |(xoff,yoff)| in the square. +% \begin{macrocode} + +% A macro to delineate a letter's bounding square in proof mode. +% Point z$ is at (xoff,yoff) in the bounding square. +def proofpcbb(suffix $)(expr xoff, yoff) = +if proofing > 0: + x$bl = x$ - xoff; y$bl = y$ - yoff; % Bottom Left Hand Corner + z$br = (x$bl+side, y$bl); % BRHC + z$tr = (x$bl+side, y$bl+side); % TRHC + z$tl = (x$bl, y$bl+side); % TLHC + z$bc = 1/2[z$bl,z$br]; z$tc = 1/2[z$tl,z$tr]; % horizontal mid points + pair hc, vc; + hc = (2u,0); vc = (0,2u); + pickup pensquare scaled 2; + for s = z$bl, z$br, z$tr, z$tl, z$bc, z$tc: + draw s-hc--s+hc; + draw s-vc--s+vc; + endfor +fi +enddef; + +% \end{macrocode} +% \end{routine} +% +% +% +% \begin{routine}{pgothic_font_setup} +% This macro contains the set up for the \thisfont{} fonts. +% \begin{macrocode} + +def pgothic_font_setup= % contains special stuff for pgothic fonts + define_pixels(side,half_height,carol_height,comma_width); + define_pixels(u,dot_size,letter_size,cap_height,width_adj,serif_fit, + cap_serif_fit,jut,clubjut,cap_jut,trijut); + define_pixels(fig_width); + define_whole_pixels(letter_fit,sb,cap_sb); + define_whole_vertical_pixels(body_height,asc_height,cap_height,x_height, + desc_depth,body_depth,fig_height); + define_corrected_pixels(o); + define_blacker_pixels(thick,thin); + define_pixels(stem_width); + define_pixels(perpdec,angdec); + let adjust_fit = normal_adjust_fit; +% \end{macrocode} +% \DescribeVariable{stylus} +% The pen for drawing the thinnest lines is |stylus|. +% \begin{macrocode} + pickup pencircle scaled thin; + stylus:=savepen; +% \end{macrocode} +% \DescribeVariable{thickstylus} +% The pen for drawing lines a bit thicker than the thinnest is |thickstylus|. +% \begin{macrocode} + pickup pencircle scaled (1.5thin); + thickstylus:=savepen; +% \end{macrocode} +% \DescribeVariable{quill} +% The normal calligraphic pen is |quill|. +% \begin{macrocode} + pickup pencircle xscaled thick yscaled thin rotated pangle; + quill:=savepen; + +% \end{macrocode} +% +% \DescribeVariable{threequarterquill} +% A pen with 3/4 of the width as quill (but with the same thinness). +% \begin{macrocode} + pickup pencircle xscaled 3/4thick yscaled thin rotated pangle; + threequarterquill := savepen; + +% \end{macrocode} +% +% \DescribeVariable{halfquill} +% A pen with 1/2 of the width as quill (but with the same thinness). +% \begin{macrocode} + pickup pencircle xscaled 1/2thick yscaled thin rotated pangle; + halfquill := savepen; + +% \end{macrocode} +% +% \DescribeVariable{quarterquill} +% A pen with 1/4 of the width as quill (but with the same thinness). +% \begin{macrocode} + pickup pencircle xscaled 1/4thick yscaled thin rotated pangle; + quarterquill := savepen; + +% \end{macrocode} +% +% +% \begin{macrocode} + numeric pcshiftx#; % x value of LHS of box wrt origin of char box + define_pixels(pcshiftx); + numeric sqxside#; % x size of the square + numeric sqyside#; % y size of the square + define_pixels(sqxside,sqyside); + +enddef; % end of pgothic_font_setup + +% \end{macrocode} +% \end{routine} +% +% +% \DescribeVariable{ductus} +% A boolean to control drawing the ductus (TRUE) or the full letter (FALSE). +% \begin{macrocode} +boolean ductus; +ductus:=false; +% \end{macrocode} +% +% \DescribeVariable{qhor} +% \DescribeVariable{qvert} +% The cosine and sine of the pen angle. +% \begin{macrocode} +numeric qhor, qvert; +qhor:=cosd(pangle); qvert:=sind(pangle); +% \end{macrocode} +% +% \DescribeVariable{pdir} +% The vector corresponding to the pen angle. +% \begin{macrocode} +pair pdir; pdir=dir(pangle); +% \end{macrocode} +% +% \DescribeVariable{ppdir} +% The vector that is perpendicular (anticlockwise) to the pen angle. +% \begin{macrocode} +pair ppdir; ppdir=dir(pangle+90); +% \end{macrocode} +% +% \begin{routine}{draw_upforkstem} +% A macro to draw a vertical stem with a fork at the top. +% |draw_upforkstem(1,2)| uses the current pen to draw a vertical line, whose absolute +% top and bottom are at |z1| and |z2|. The top (|z1|) has a wedge shaped slit. +% \begin{macrocode} + +def draw_upforkstem(suffix $, $$)= + pen oldpen; oldpen:=currentpen; + x$a=x$; top y$a = bot y$; % top of straight stem + draw z$a--z$$; % straight part + z$b = (rt x$, y$); z$c = (x$b, top y$a); + z$d = (lft x$, bot y$a); z$e = (x$d, y$); + pickup stylus; + rt x$cc = x$c; y$cc = y$c; + lft x$bb = x$b; y$bb = y$b; + lft x$dd = x$d; y$dd = y$d; + rt x$ee = x$e; y$ee = y$e; + filldraw z$a--z$bb..z$cc--cycle; % fork + filldraw z$a--z$dd..z$ee--cycle; + pickup oldpen; + labels($a,$b,$c,$d,$e); +enddef; % end of draw_upforkstem + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{draw_downforkstem} +% A macro to draw a vertical stem with a fork at the bottom. +% |draw_downforkstem(1,2)| uses the current pen to draw a vertical line, whose absolute +% top and bottom are at |z1| and |z2|. The bottom (|z2|) has a wedge shaped slit. +% \begin{macrocode} + +def draw_downforkstem(suffix $, $$)= + pen oldpen; oldpen:=currentpen; + x$$a=x$$; bot y$$a = top y$$; % bottom of straight stem + draw z$--z$$a; % straight part + z$$b = (rt x$$, y$$); z$$c = (x$$b, top y$$a); + z$$d = (lft x$$, bot y$$a); z$$e = (x$$d, y$$); + pickup stylus; + rt x$$cc = x$$c; y$$cc = y$$c; + lft x$$bb = x$$b; y$$bb = y$$b; + lft x$$dd = x$$d; y$$dd = y$$d; + rt x$$ee = x$$e; y$$ee = y$$e; + filldraw z$$a--z$$bb..z$$cc--cycle; % fork + filldraw z$$a--z$$dd..z$$ee--cycle; + pickup oldpen; + labels($$a,$$b,$$c,$$d,$$e); +enddef; % end of draw_downforkstem + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{draw_upcurlstem} +% A macro to draw a vertical stem with a curl to the left at the top. +% |draw_upcurlstem(1,2)| uses the current pen to draw a vertical line, whose absolute +% top and bottom are at |z1| and |z2|. The top (|z1|) has a fancy curl to the left, +% jutting out 3 stem widths. +% \begin{macrocode} + +def draw_upcurlstem(suffix $, $$)= + pen oldpen; oldpen:=currentpen; + path curlp[]; numeric curln[]; + x$a=x$; top y$a = y$; % top of straight stem + draw z$a--z$$; % straight part + curln1 := rt x$a - lft x$a; % stem width + x$b = x$a - 4/2curln1; y$b = y$a; % left jut + curlp1 := z$a{-pdir}..{left}z$b; + draw curlp1; + + x$c = x$a-3curln1; top y$c = bot y$a-1/2curln1; + x$f = x$b; y$f = 1/3[y$c,y$b]; + x$tb = rt x$b; y$tb = top y$b; + x$bb = lft x$b; y$bb = bot y$b; + curlp2 := z$tb--z$bb..{down}z$c..{ppdir}z$f; + pickup stylus; + draw curlp2; + pickup oldpen; + labels($a,$b,$c,$d,$e,$f); +enddef; % end of draw_upcurlstem + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{draw_updiamondstem} +% A macro to draw a vertical stem with a diamond at the top. +% |draw_updiamondstem(1,2,fr,minfr,wd,ang)| uses the quill pen to draw a vertical line, +% whose absolute +% top and bottom are at |z1| and |z2|. The top (|z1|) has a leftward diamond, whose +% left jut is |fr| times the width of the stem, right jut is |minfr*stem_width|, width +% is |wd*stem_width| and angle above the horizontal is |ang|. +% \begin{macrocode} + +def draw_updiamondstem(suffix $, $$)(expr fr, minfr, wd, phi)= + pen oldpen; oldpen:=currentpen; + numeric sj; sj := fr*stem_width; % jut distance + numeric sjr; sjr := minfr*stem_width; % right jut distance + numeric jw; jw := wd*stem_width; % jut width + %% $b is bottom left of jut, on LHS of stem + %% $c is leftmost point on jut + %% $d is topmost point on jut + %% $g is topmost point on stem + %% $e is on exprapolation of line from $d through $g + %% i.e., the rightmost point on jut + %% $f is on RHS of stem + pickup quill; + x$b = lft x$; + x$c = x$b - sj; y$c = y$ - jw*(cosd phi); % $c done + y$b = y$c - sj*(sind phi); % $b done + x$d = x$c + jw*(sind phi); y$d = y$; % $d done + x$g = x$f = rt x$; + y$g = y$ - (x$g-x$d)*(sind phi)/(cosd phi); % $g done + x$a = x$; top y$a = y$g; % $a done + x$e = x$g + sjr; z$e = whatever[z$d,z$g]; % $e done + z$f-z$e = whatever*(z$c-z$d); % $f done + x$h = x$b; y$h = bot y$a; + draw z$a--z$$; % straight part + pickup stylus; + lft x$cc = x$c; y$cc = y$c; + x$dd = x$d; top y$dd = y$d; + rt x$ee = x$e; bot y$ee=y$e; + filldraw z$b--z$cc--z$dd--z$ee--z$f--cycle; % diamond + if y$b > y$h: + lft x$hh = x$h; y$hh=y$h; + filldraw z$b--z$hh--z$g--cycle; + fi + pickup oldpen; + labels($a,$b,$c,$d,$e,$f); +enddef; % end of draw_updiamondstem + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{draw_downdiamondstem} +% A macro to draw a vertical stem with a diamond at the bottom. +% |draw_downdiamondstem(1,2,fr,minfr,wd,ang)| uses the quill pen to draw a vertical line, +% whose absolute +% top and bottom are at |z1| and |z2|. The bottom (|z2|) has a rightward diamond, whose +% right jut is |fr| times the width of the stem, left jut is |minfr*stem_width|, +% width is |wd*stem_width| and is at |ang| degrees below the horizontal. +% \begin{macrocode} + +def draw_downdiamondstem(suffix $, $$)(expr fr, minfr, wd, phi)= + pen oldpen; oldpen:=currentpen; + numeric sj; sj := fr*stem_width; % (left) jut distance + numeric sjr; sjr := minfr*stem_width;; % right jut distance + numeric jw; jw := wd*stem_width; % jut width + %% $$b is top right of jut, on RHS of stem + %% $$c is rightmost point on jut + %% $$d is bottommost point on jut + %% $$g is bottommost point on stem + %% $$e is on exprapolation of line from $d through $g + %% i.e., the leftmost point on jut + %% $$f is on LHS of stem + pickup quill; + x$$b = rt x$$; + x$$c = x$$b + sj; y$$c = y$$ + jw*(cosd phi); % $$c done + y$$b = y$$c + sj*(sind phi); % $$b done + x$$d = x$$c - jw*(sind phi); y$$d = y$$; % $$d done + x$$g = x$$f = lft x$$; + y$$g = y$$ + (x$$d-x$$g)*(sind phi)/(cosd phi); % $$g done + x$$a = x$$; bot y$$a = y$$g; % $$a done + x$$e = x$$g - sjr; z$$e = whatever[z$$d,z$$g]; % $$e done + z$$f-z$$e = whatever*(z$$c-z$$d); % $$f done + x$$h = x$$b; y$$h = top y$$a; + draw z$--z$$a; % straight part + pickup stylus; + rt x$$cc = x$$c; y$$cc=y$$c; + x$$dd = x$$d; bot y$$dd = y$$d; + lft x$$ee = x$$e; top y$$ee = y$$e; + filldraw z$$b--z$$cc--z$$dd--z$$ee--z$$f--cycle; % diamond + if y$$b < y$$h: + rt x$$hh = x$$h; y$$hh=y$$h; + filldraw z$$b--z$$hh--z$$g--cycle; + fi + pickup oldpen; + labels($$a,$$b,$$c,$$d,$$e,$$f); +enddef; % end of draw_downdiamondstem + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{draw_flat_head} +% A macro to draw a squared off top of a vertical stroke. +% |draw_flat_head(1)| draws at the top of the stem ending at |z1|. +% \begin{macrocode} + +def draw_flat_head(suffix $)= + pen oldpen; oldpen:=currentpen; +%% pickup quill; + x$bl'' = lft x$; y$bl'' = bot y$; + x$tr'' = rt x$; y$tr'' = top y$; + pickup stylus; + lft x$blfh = x$bl''; y$blfh = y$bl''; + rt x$trfh = x$tr''; top y$trfh = y$tr''; + x$tlfh = x$blfh; y$tlfh = y$trfh; + filldraw z$blfh--z$tlfh--z$trfh--cycle; + pickup oldpen; + labels($tlfh); +enddef; % end of draw_flat_head +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{draw_flat_foot} +% A macro to draw a squared off bottom of a vertical stroke. +% |draw_flat_foot(1)| draws at the bottom of the stem ending at |z1|. +% \begin{macrocode} + +def draw_flat_foot(suffix $)= + pen oldpen; oldpen:=currentpen; +%% pickup quill; + x$bl'' = lft x$; y$bl'' = bot y$; + x$tr'' = rt x$; y$tr'' = top y$; + pickup stylus; + lft x$blff = x$bl''; bot y$blff = y$bl''; + rt x$trff = x$tr''; y$trff = y$tr''; + x$brff = x$trff; y$brff = y$blff; + filldraw z$blff--z$trff--z$brff--cycle; + pickup oldpen; + labels($brff); +enddef; % end of draw_flat_foot +% \end{macrocode} +% \end{routine} +% +% +% +% \begin{routine}{draw_serif} +% A macro to draw a serif. |draw_serif(1,2,f)| uses the current pen to +% draw a serif of extent |jut| at |z1| to the left of the line from |z2| +% to |z1|. The +% radius is controlled by |f|, where $0y$$: + 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 $0y$$: + 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 0) or + (abs sl < tantol) or (abs sm < tantol) or (abs sr < tantol); + if wtest: + if (stpsize < tantol): + z$tan=(0,0); + errmessage("No tangent; path too short"); + else: + if (sl*sr > 0): + z$tan=(0,0); + errmessage("No tangent; end products have the same sign"); + else: + if (abs sl < tantol): + z$tan=ptl; + else: + if (abs sm < tantol): + z$tan=ptm; + else: + z$tan=ptr; + fi + fi + fi + fi + else: +% \end{macrocode} +% There should be a tangent and we iterate to find it, using +% bisection. If there is one to be found it will be at the +% current middle point. The tangent point will be somewhere +% between the two points that lead to opposite signed scalar +% products. +% \begin{macrocode} + forever: + if (sl*sm < 0): % opposite signs, look between pl & pm + pr:=pm; pm:=0.5(pr+pl); + vecpr := vecpm; veclr := veclm; sr:=sm; + else: + pl:=pm; pm:=0.5(pr+pl); + vecpl:=vecpm; vecll:=veclm; sl:=sm; + fi + stpsize:=pr-pl; + ptm := point pm of pth; + veclm := unitvector (z$-ptm); + vecpm := unitvector (direction pm of pth); + sm := veclm scalarprod vecpm; +% \end{macrocode} +% We stop the iteration if the step size is too small or the +% middle point is the tangent point. In either case, the +% middle point is the best guess that can be made. +% \begin{macrocode} + wtest := (stpsize < tantol) or (abs sm < tantol); + if wtest: + if (abs sm < tantol): + z$tan = ptm; + else: + z$tan = ptm; +%%%%%% errmessage("Warning: tangent approximated"); + fi + fi + exitif wtest; + endfor + fi +enddef; + +% \end{macrocode} +% \end{routine} +% +% +% Set the mode and font setup. +% \begin{macrocode} + +font_coding_scheme:="ASCII minuscules and punctuation"; +mode_setup; +pgothic_font_setup; + +% \end{macrocode} +% +% +% We generate letters, together with some punctuation and +% analphabetics. +% \begin{macrocode} + +input pgothl; % lower case +input pgothu; % capitals +input pgothpunct; % punctuation +input pgothlig; % the several dashes +input pgothdig; % arabic digits + +% \end{macrocode} +% +% Set up the spacings, stretches and shrinks. +% +% \begin{macrocode} + +font_slant slant; font_x_height x_height#; +if monospace: + font_normal_space 2vstretch*stem_width#; % no stretching or shrinking + font_quad vstretch*18u#; + font_extra_space vstretch*9u#; +else: + font_normal_space 2vstretch*stem_width#+2letter_fit#; + font_normal_stretch vstretch*3u#; font_normal_shrink vstretch*2u#; + font_quad vstretch*18u#+4letter_fit#; + font_extra_space vstretch*2u#; + +% \end{macrocode} +% +% Finally, do the ligtables, but I don't think they are needed (yet?). +% +% \begin{macrocode} + +fi + +bye. + + k#:=-.5u#; kk#:=-1.5u#; kkk#:=-2u#; % three degrees of kerning + kks#:=-4u#; kkx#:=-1.5u#; kkj#:=-2u#; kkr#:=-5u#; kkrs#:=-2u#; kkrl#:=-8u#; + ligtable "s": + "a" kern kks#, "A" kern kks#, + "c" kern kks#, "C" kern kks#, + "d" kern kks#, "D" kern kks#, + "e" kern kks#, "E" kern kks#, + "f" kern kks#, "F" kern kks#, + "g" kern kks#, "G" kern kks#, + "i" kern kks#, "I" kern kks#, + "j" kern kks#, "J" kern kks#, + "k" kern kks#, "K" kern kks#, + "m" kern kks#, "M" kern kks#, + "n" kern kks#, "N" kern kks#, + "o" kern kks#, "O" kern kks#, + "p" kern kks#, "P" kern kks#, + "q" kern kks#, "Q" kern kks#, + "r" kern kks#, "R" kern kks#, + "t" kern kks#, "T" kern kks#, + "u" kern kks#, "U" kern kks#, + "v" kern kks#, "V" kern kks#, + "w" kern kks#, "W" kern kks#, + "x" kern kks#, "X" kern kks#, + "y" kern kks#, "Y" kern kks#, + "z" kern kks#, "Z" kern kks#; + + ligtable "S": + "a" kern kks#, "A" kern kks#, + "c" kern kks#, "C" kern kks#, + "d" kern kks#, "D" kern kks#, + "e" kern kks#, "E" kern kks#, + "f" kern kks#, "F" kern kks#, + "g" kern kks#, "G" kern kks#, + "i" kern kks#, "I" kern kks#, + "j" kern kks#, "J" kern kks#, + "k" kern kks#, "K" kern kks#, + "m" kern kks#, "M" kern kks#, + "n" kern kks#, "N" kern kks#, + "o" kern kks#, "O" kern kks#, + "p" kern kks#, "P" kern kks#, + "q" kern kks#, "Q" kern kks#, + "r" kern kks#, "R" kern kks#, + "t" kern kks#, "T" kern kks#, + "u" kern kks#, "U" kern kks#, + "v" kern kks#, "V" kern kks#, + "w" kern kks#, "W" kern kks#, + "x" kern kks#, "X" kern kks#, + "y" kern kks#, "Y" kern kks#, + "z" kern kks#, "Z" kern kks#; + + ligtable "x": + "a" kern kkx#, "A" kern kkx#, + "b" kern kkx#, "B" kern kkx#, + "c" kern kkx#, "C" kern kkx#, + "d" kern kkx#, "D" kern kkx#, + "e" kern kkx#, "E" kern kkx#, + "g" kern kkx#, "G" kern kkx#, + "j" kern kkx#, "J" kern kkx#, + "l" kern kkx#, "L" kern kkx#, + "o" kern kkx#, "O" kern kkx#, + "q" kern kkx#, "Q" kern kkx#, + "t" kern kkx#, "T" kern kkx#, + "u" kern kkx#, "U" kern kkx#, + "v" kern kkx#, "V" kern kkx#, + "w" kern kkx#, "W" kern kkx#, + "y" kern kkx#, "Y" kern kkx#; + + ligtable "X": + "a" kern kkx#, "A" kern kkx#, + "b" kern kkx#, "B" kern kkx#, + "c" kern kkx#, "C" kern kkx#, + "d" kern kkx#, "D" kern kkx#, + "e" kern kkx#, "E" kern kkx#, + "g" kern kkx#, "G" kern kkx#, + "j" kern kkx#, "J" kern kkx#, + "l" kern kkx#, "L" kern kkx#, + "o" kern kkx#, "O" kern kkx#, + "q" kern kkx#, "Q" kern kkx#, + "t" kern kkx#, "T" kern kkx#, + "u" kern kkx#, "U" kern kkx#, + "v" kern kkx#, "V" kern kkx#, + "w" kern kkx#, "W" kern kkx#, + "y" kern kkx#, "Y" kern kkx#; + + ligtable "a": "A": + "b": "B": + "c": "C": + "d": "D": + "e": "E": + "h": "H": + "i": "I": + "k": "K": + "l": "L": + "m": "M": + "n": "N": + "o": "O": + "p": "P": + "t": "T": + "u": "U": + "v": "V": + "w": "W": + "z": "Z": + "j" kern kkj#, "J" kern kkj#; + + ligtable "r": + "a" kern kkr#, "A" kern kkr#, + "b" kern kkr#, "B" kern kkr#, + "c" kern kkr#, "C" kern kkr#, + "d" kern kkr#, "D" kern kkr#, + "e" kern kkr#, "E" kern kkr#, + "f" kern kkrs#, "F" kern kkrs#, + "g" kern kkrs#, "G" kern kkrs#, + "h" kern kkr#, "H" kern kkr#, + "i" kern kkr#, "I" kern kkr#, + "j" kern kkj#, "J" kern kkj#, + "k" kern kkrs#, "K" kern kkrs#, + "l" kern kkr#, "L" kern kkr#, + "m" kern kkr#, "M" kern kkr#, + "n" kern kkrs#, "N" kern kkrs#, + "o" kern kkr#, "O" kern kkr#, + "p" kern kkrs#, "P" kern kkrs#, + "q" kern kkr#, "Q" kern kkr#, + "r" kern kkrs#, "R" kern kkrs#, + "s" kern kkr#, "S" kern kkr#, + "t" kern kkr#, "T" kern kkr#, + "u" kern kkr#, "U" kern kkr#, + "v" kern kkr#, "V" kern kkr#, + "w" kern kkr#, "W" kern kkr#, + "x" kern kkx#, "X" kern kkx#, + "y" kern kkr#, "Y" kern kkr#, + "z" kern kkr#, "Z" kern kkr#; + + ligtable "R": + "a" kern kkr#, "A" kern kkr#, + "b" kern kkr#, "B" kern kkr#, + "c" kern kkr#, "C" kern kkr#, + "d" kern kkr#, "D" kern kkr#, + "e" kern kkr#, "E" kern kkr#, + "f" kern kkrs#, "F" kern kkrs#, + "g" kern kkrs#, "G" kern kkrs#, + "h" kern kkr#, "H" kern kkr#, + "i" kern kkr#, "I" kern kkr#, + "j" kern kkj#, "J" kern kkj#, + "k" kern kkrs#, "K" kern kkrs#, + "l" kern kkr#, "L" kern kkr#, + "m" kern kkr#, "M" kern kkr#, + "n" kern kkrs#, "N" kern kkrs#, + "o" kern kkr#, "O" kern kkr#, + "p" kern kkrs#, "P" kern kkrs#, + "q" kern kkr#, "Q" kern kkr#, + "r" kern kkrs#, "R" kern kkrs#, + "s" kern kkr#, "S" kern kkr#, + "t" kern kkr#, "T" kern kkr#, + "u" kern kkr#, "U" kern kkr#, + "v" kern kkr#, "V" kern kkr#, + "w" kern kkr#, "W" kern kkr#, + "x" kern kkx#, "X" kern kkx#, + "y" kern kkr#, "Y" kern kkr#, + "z" kern kkr#, "Z" kern kkr#; + + +fi + +bye. + +% +% \end{macrocode} +% +% \subsection{The code for normal letters} +% +% The following code is for the lower case characters. +% +% \begin{macrocode} +%<*min> +% PGOTHL.MF Program file for Gothic Textura Prescius lower case +% + +% \end{macrocode} +% +% +% \begin{routine}{a} +% The letter `a'. +% \begin{macrocode} +cmchar "PGOTH letter a"; +beginchar("a", 2sb#+hstretch*((3+widedmin+wided)*stem_width#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pair pr[]; +pickup quill; +%% left hand +lft x1 = pcshiftx + widedmin*stem_width; y1 = 1/2h; +x2 = x1; y2 = 0; +draw_downdiamondstem(1,2,wided,widedmin,diawd,diang); +%% right stem +rt x3 = w - pcshiftx - wided*stem_width; y3=h; +x4=x3; bot y4=0; +z34=1/2[z3,z4]; +draw_updiamondstem(3,34,1.0,0.1,diawd,diang); +%draw_downdiamondstem(34,4,wided,widedmin,diawd,diang); +draw z34--z4; draw_flat_foot(4); +%% swirl +x11=rt x1; y11 = top y1; +pickup stylus; +draw z3d--z3c..{-ppdir}z11; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,11,12,13,14,15,100); +endchar; % end "a" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{b} +% The letter `b'. +% \begin{macrocode} +cmchar "PGOTH letter b"; +beginchar("b", 2sb#+hstretch*((3 + widedmin + narrowdmin)*stem_width#), + asc_height#, 0); +adjust_fit(0,0); +numeric n[]; +numeric st; st := stem_width; +path pth[]; +pcshiftx := sb; +pickup quill; +n1:=w-2pcshiftx; % actual letter width +n2:=h/ascratio; % top of bowl +%%ductus:=true; +lft x1 = pcshiftx + widedmin*st; y1=h; +x2 = x1; y2=0; +z3=1/2[z1,z2]; +draw_upforkstem(1,3); +draw_downdiamondstem(3,2,1.0,widedmin,diawd,diang); +lft x6 = x2c; bot y6 = y2c; +x4 = x6; y4=n2; +draw_updiamondstem(4,6,narrowd,narrowdmin,diawd,diang); +x7 = x1; z7 = whatever[z4d,z4c]; +pickup stylus; +draw z4d--z7; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,100); +endchar; % end "b" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{c} +% The letter `c'. +% \begin{macrocode} +cmchar "PGOTH letter c"; +beginchar("c", 2sb#+hstretch*((3+wided)*stem_width#), + x_height#, 0); +adjust_fit(0,0); +numeric n[]; +numeric st; +st := stem_width; +pcshiftx := sb; +pickup quill; +%% left +lft x1 = pcshiftx+wided*st; y1 = 3/4h; +x2 = x1; y2 = 0; +draw_downdiamondstem(1,2,wided,widedmin,diawd,diang); +%% top +lft x3 = rt x1; bot y3 = top y1; +rt x4 = w - pcshiftx; +z3 - z4 = -whatever*ppdir; +draw z3--z4; +z11-z2c = z2c - z2d; +pickup stylus; +draw z2d--z11; +ductus:=false; +penlabels(1,2,3,4,5,6,14,16,17,18,100); +endchar; % end "c" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{d} +% The letter `d'. +% \begin{macrocode} +cmchar "PGOTH letter d"; +beginchar("d", 2sb#+hstretch*((3+widedmin+narrowdmin)*stem_width#), + asc_height#, 0); +adjust_fit(0,0); +numeric n[]; +numeric st; st := stem_width; +path pth[]; +pcshiftx := sb; +pickup quill; +n1 = h/ascratio; % x-height +%% left +n2 := st*(cosd diang); +lft x1 = pcshiftx + widedmin*st; top y1 = 12/16n1; +x2=x1; y2=0; +draw_downdiamondstem(1,2, 1.0, widedmin, diawd,diang); +%% right +rt x3 = w-pcshiftx-narrowdmin*st; y3=h; +x4 = x3; bot y4 = y2c; +draw_updiamondstem(3,4, 2.0, narrowdmin, diawd,diang); +x31 = lft x1; y31 = bot y1; +x32 = rt x1; y32 = top y1; +z33 = whatever[z31,z32] = whatever[z3e,z3c]; +pickup stylus; +draw z31--z33; +ductus:=false; +penlabels(0,1,2,3,4,5,6,7,8,100); +endchar; % end "d" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{e} +% The letter `e'. +% \begin{macrocode} +cmchar "PGOTH letter e"; +beginchar("e", 2sb#+hstretch*((3+wided)*stem_width#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +numeric st; +st := stem_width; +path pth[]; +pickup quill; +%% left +lft x1 = pcshiftx+wided*st; y1 = 3/4h; +x2 = x1; y2 = 0; +draw_downdiamondstem(1,2,wided,widedmin,diawd,diang); +%% top +lft x3 = rt x1; bot y3 = top y1; +rt x4 = w - pcshiftx; +z3 - z4 = -whatever*ppdir; +draw z3--z4; +x5 = x1; +z4-z5 = whatever*pdir; +pickup stylus; +draw z4--z5; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,17,27,34,70,100); +endchar; % end "e" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{f} +% The letter `f'. +% \begin{macrocode} +cmchar "PGOTH letter f"; +beginchar("f", 2sb#+hstretch*((3+widedmin)*stem_width#), + (asc_height#), 0); +adjust_fit(0,0); +numeric n[]; +numeric st; st := stem_width; +pcshiftx := sb; +pickup quill; +n1 := h/ascratio; % x-height +%% stem +lft x1=lft x2=pcshiftx+widedmin*st; y2=0; top y1 = h - (top y2 - bot y2); +%draw_downdiamondstem(1,2,wided,widedmin,diawd,diang); +draw z1--z2; draw_flat_foot(2); +%% top bar +lft x3 = rt x1; rt x5 = w-pcshiftx; bot y3 = top y1; y5=y3; +draw z3--z5; +%% middle bar +lft x7 = pcshiftx; rt x9 = x5; +y7 = y9 = 10/16h; +draw z7--z9; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,14,15,16,100); +endchar; % end "f" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{g} +% The letter `g'. +% \begin{macrocode} +cmchar "PGOTH letter g"; +beginchar("g", 2sb#+hstretch*((4)*stem_width#), + x_height#, desc_depth#); +adjust_fit(0,0); +path pth[]; +pair vec[]; +numeric n[]; +numeric st; st := stem_width; +pcshiftx := sb; +pickup quill; +%% left +lft x1 = pcshiftx; +x2 = x1; bot y2 = 0; top y1 = h - (top y2 - bot y2); +draw z1--z2; +x3 = x4 = x1 + 2st; y4 = y2; +lft x13 = rt x1; bot y13 = top y1; +(z3-z13) = whatever*(dir -diang); +draw z13--z3--z4; +z34 = 1/2[z13,z3]; rt x37 = w-pcshiftx; top y37 = h; +draw z34{right}..{pdir}z37; +pickup stylus; +bot y5 = -d; +(z4-z5) = whatever*pdir; +draw z4--z5; +pickup quill; +%% bottom loop +z21 = z2; +lft x25 = x5; bot y25=-d; +x29 = 1/2[x3,x37]; +(z29-z21) = whatever*(dir -diang); +x23 = x29; y23 = 1/2[y29,y25]; +draw z21{dir - diang}..z23{down}..{left}z25; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,11,12,13,31,32,33,34,35,36,100); +endchar; % end "g" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{h} +% The letter `h'. +% \begin{macrocode} +cmchar "PGOTH letter h"; +beginchar("h", 2sb#+hstretch*((3 + narrowd + narrowdmin)*stem_width#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +numeric n[]; +n1 = h/ascratio; +%% stem +lft x1=lft x2=pcshiftx + narrowdmin*stem_width; +y1=h; bot y2=0; +z12 = 1/2[z1,z2]; +draw_upforkstem(1,12); +%draw_downdiamondstem(12,2,narrowd,narrowdmin,diawd,diang); +draw z12--z2; +draw_flat_foot(2); +%% bowl +x3 = x1 + 2stem_width; x4 = x3; +y3 = n1; bot y4=0; +z34 = 1/2[z3,z4]; +draw_updiamondstem(3,34,narrowd,narrowdmin,diawd,diang); +%draw_downdiamondstem(34,4,narrowd,narrowdmin,diawd,diang); +draw z34--z4; draw_flat_foot(4); +x7 = x1; z7 = whatever[z3d,z3c]; +pickup stylus; +draw z3d--z7; +penlabels(1,2,3,4,5,6,100); +endchar; % end "h" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{i} +% The letter `i'. +% \begin{macrocode} +cmchar "PGOTH letter i"; +beginchar("i", 2sb#+hstretch*(2stem_width#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +x1 = x2 = 1/2w; y1 = h; bot y2 = 0; +z12 = 1/2[z1,z2]; +draw_updiamondstem(1,12,1/2,1/2,diawd,diang); +%draw_downdiamondstem(12,2,1/2,1/2,diawd,diang); +draw z12--z2; draw_flat_foot(2); +x3= x1-thin; bot y3 = h + 1/2stem_width; +z4 = (x3+3thin,y3); +pickup halfquill; +draw z3--z4; +penlabels(1,2,100); +endchar; % end "i" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{j} +% The letter `j'. This letter was not in the script, it being a later invention. +% \begin{macrocode} +cmchar "PGOTH letter j"; +beginchar("j", sb#+hstretch*(5/2stem_width#), + x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% stem +rt x1 = w-pcshiftx - 1/2stem_width; y1 = h; +x2=x1; y2=-1/2d; +%% bottom hook +lft x3 = pcshiftx; bot y3 = -d; +draw_updiamondstem(1,2,narrowd,narrowdmin,diawd,diang); +draw z2{down}..z3{-pdir}; % hook +ductus:=false; +penlabels(1,2,3,100); +endchar; % end "j" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{k} +% The letter `k'. +% \begin{macrocode} +cmchar "PGOTH letter k"; +beginchar("k", 2sb#+hstretch*((3 + narrowd + narrowdmin)*stem_width#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +path pth[]; +numeric n[]; +numeric st; st := stem_width; +pickup quill; +%% stem +n1 = h/ascratio; % x-height +lft x1=lft x2=pcshiftx + narrowdmin*st; +y1=h; bot y2=0; +z12 = 1/2[z1,z2]; +draw_upforkstem(1,12); +%draw_downdiamondstem(12,2, narrowd, narrowdmin, diawd,diang); +draw z12--z2; draw_flat_foot(2); +%% right leg +x3 = x1 + 2st; y3 = 8/16n1; +x4 = x3; bot y4 = 0; +z34 = 1/2[z3,z4]; +%draw_downdiamondstem(34,4, narrowd, narrowdmin, diawd,diang); +draw z3--z4; draw_flat_foot(4); +draw z3--z34; +lft x5 = rt x1; +(z3-z5) = whatever*(dir -diang); +draw z5--z3; + +%% top arm +x6 = 1/2[x3, rt x3]; +(z6-z5) = whatever*(pdir); +rt x8 = lft x5; top y8 = bot y5+thick; +(z7-z8) = whatever*(z6-z5); +(z7-z6)=whatver*(z5-z3); +draw z6--z7; +pickup stylus; +draw z5--z6--z7--z8; + +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,13,14,100); +endchar; % end "k" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{l} +% The letter `l'. +% \begin{macrocode} +cmchar "PGOTH letter l"; +%beginchar("l", 2sb#+hstretch*((2 + widedmin)*stem_width#), +% asc_height#, 0); +beginchar("l", 2sb#+hstretch*((1 + widedmin)*stem_width#), + asc_height#, 0); +adjust_fit(0,0); +numeric st; st := stem_width; +pcshiftx := sb; +pickup quill; +%lft x1=pcshiftx + widedmin*st; y1=h; +x1 = 1/2w; y1=h; +x2=x1; bot y2 =0; +z3 = 1/2[z1,z2]; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_upforkstem(1,3); +%draw_downdiamondstem(3,2,1.0,widedmin,diawd,diang); +draw z3--z2; draw_flat_foot(2); +ductus:=false; +penlabels(1,2,3,4,100); +endchar; % end "l" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{m} +% The letter `m'. +% \begin{macrocode} +cmchar "PGOTH letter m"; +beginchar("m", 2sb#+hstretch*((5+wided+narrowd)*stem_width#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pickup quill; +%% left stem +lft x1=pcshiftx+wided*stem_width; y1 = y3 = y5 = h; +x2=x1; bot y2 = 0; y2 = y4 = y6; +z12=1/2[z1,z2]; +draw_updiamondstem(1,12,wided,widedmin,diawd,diang); +%draw_downdiamondstem(12,2,narrowd,narrowdmin,diawd,diang); +draw z12--z2; draw_flat_foot(2); +%% right stem +rt x5 = rt x6 = w-pcshiftx-narrowd*stem_width; +z56 = 1/2[z5,z6]; +draw_updiamondstem(5,56,wided,widedmin,diawd,diang); +%draw_downdiamondstem(56,6,narrowd,narrowdmin,diawd,diang); +draw z56--z6; draw_flat_foot(6); +%% middle stem +z3=1/2[z1,z5]; z4 = 1/2[z2,z6]; z34=1/2[z3,z4]; +draw_updiamondstem(3,34,wided,widedmin,diawd,diang); +%draw_downdiamondstem(34,4,narrowd,narrowdmin,diawd,diang); +draw z34--z4; draw_flat_foot(4); +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,13,14,33,34,100); +endchar; % end "m" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{n} +% The letter `n'. +% \begin{macrocode} +cmchar "PGOTH letter n"; +beginchar("n", 2sb#+hstretch*((3+wided+narrowd)*stem_width#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% left stem +lft x1 = pcshiftx + wided*stem_width; y1 = h; +x2 = x1; bot y2 = 0; +z12 = 1/2[z1,z2]; +draw_updiamondstem(1,12,wided,widedmin,diawd,diang); +%draw_downdiamondstem(12,2,narrowd,narrowdmin,diawd,diang); +draw z12--z2; draw_flat_foot(2); +%% right stem +rt x3 = w-pcshiftx - narrowd*stem_width; y3=y1; +x4=x3;y4=y2; +z34=1/2[z3,z4]; +draw_updiamondstem(3,34,wided,widedmin,diawd,diang); +%draw_downdiamondstem(34,4,narrowd,narrowdmin,diawd,diang); +draw z34--z4; draw_flat_foot(4); +penlabels(1,2,3,4,5,6,13,14,100); +endchar; % end "n" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{o} +% The letter `o'. +% \begin{macrocode} +cmchar "PGOTH letter o"; +beginchar("o", 2sb#+hstretch*((3 + narrowdmin + narrowdmin)*stem_width#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +numeric st; st := stem_width; +pickup quill; +%% bottom left +lft x12 = pcshiftx + narrowdmin*st; y12 = 1/2h; +x2 = x12; y2 = 0; +draw_downdiamondstem(12,2, 1.0, narrowdmin, diawd,diang); +%% right +rt x3 = w - pcshiftx - narrowdmin*st; x4=x3; +y3 = h; bot y4 = y2c; +draw_updiamondstem(3,4, 1.0, narrowdmin, diawd,diang); +%% top left +x1 = x12; top y1 = y3c; +draw z1--z12; +ductus:=false; +penlabels(1,2,3,4,5,100); +endchar; % end "o" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{p} +% The letter `p'. +% \begin{macrocode} +cmchar "PGOTH letter p"; +beginchar("p", 2sb#+hstretch*((3 + wided + widedmin)*stem_width#), + x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +numeric st; st := stem_width; +pickup quill; +%% stem +lft x1=lft x2=pcshiftx+wided*st; +y1=h; y2=-d; +z12 = 1/2[z1,z2]; +draw_updiamondstem(1,12,wided,widedmin,diawd,diang); +%draw_downforkstem(12,2); +draw z12--z2; +%% bowl +x3 = x4 = x1 + 2st; +y3 = y1; bot y4 = 0; +draw_updiamondstem(3,4,wided,widedmin,diawd,diang); +lft x5 = pcshiftx; y5 = y4; +draw z5--z4; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,100); +endchar; % end "p" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{q} +% The letter `q'. +% \begin{macrocode} +cmchar "PGOTH letter q"; +beginchar("q", 2sb#+hstretch*((3 + widedmin)*stem_width#), + x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +numeric st; st := stem_width; +pickup quill; +%% left/bottom of bowl +y99 = 0; +lft x1 = pcshiftx +widedmin*st; top y1 = h - (top y99 - bot y99); +x2 = x1; y2 = 0; +draw_downdiamondstem(1,2, 1.0, widedmin,diawd,diang); +%% rest +x3 = x1 + 2st; x4 = x3; y3 = y1; y4 = -d; +lft x5 = rt x1; bot y5 = top y1; +%draw_downforkstem(3,4); +draw z3--z4; +draw z5--z3; +ductus:=false; +penlabels(0,1,2,3,4,5,6,7,8,100); +endchar; % end "q" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{r} +% The letter `r'. +% \begin{macrocode} +cmchar "PGOTH letter r"; +beginchar("r", 2sb#+hstretch*((3+wided)*stem_width#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +numeric st; st := stem_width; +pickup quill; +%% stem +lft x1=lft x2=pcshiftx + wided*st; +y1=h; bot y2=0; +z12 = 1/2[z1,z2]; +draw_updiamondstem(1,12,wided,widedmin,diawd,diang); +%draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); +draw z12--z2; draw_flat_foot(2); +%% bar +lft x3 = rt x1; rt x4 = w-pcshiftx; top y3 = top y4 = h; +draw z3--z4; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,100); +endchar; % end "r" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{s} +% The letter `s'. This is a short S. +% \begin{macrocode} +cmchar "PGOTH letter s"; +beginchar("s", 2sb#+hstretch*((4)*stem_width#), + x_height#, 0); +adjust_fit(0,0); +numeric n[]; +numeric st; st := stem_width; +pcshiftx := sb; +pickup stylus; +%% the diagonal +lft x2 = pcshiftx; bot y2 = 0; +rt x1 = w-pcshiftx; top y1 = h; +draw z1--z2; +pickup quill; +z211 = 13/32[z2,z1]; %% 10/32 too small, 16/32 too large +z213 = 24/32[z2,z1]; %% 26/32 too large +z212 = 1/2[z211,z213]; +%% bottom bowl +lft x21 = x2; bot y21 = 0; +rt x22 = w - pcshiftx; bot y22 = 0; +x23 = x22; z24 = z212; +(z24-z23) = whatever*(dir (180-diang)); +draw z21{pdir}..z22--z23--z24; +%% top bowl +z14 = z211; z11 = z213; +lft x12 = lft x13 = pcshiftx; +(z13-z14) = whatever*(dir (180-diang)); +(z12-z11) = whatever*(dir (180-diang)); +draw z11--z12--z13--z14; +ductus:=false; +penlabels(1,2,3,4,5,6,7,11,12,13,14,15,16,17,20,21,22,23,24,25,26,27,28,100); +endchar; % end "s" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{t} +% The letter `t'. +% \begin{macrocode} +cmchar "PGOTH letter t"; +beginchar("t", 2sb#+hstretch*((2+1.0)*stem_width#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +numeric st; st := stem_width; +pickup quill; +%% bar +lft x3 = pcshiftx; top y1 = h; +top y3 = bot y1; +rt x4 = w-pcshiftx; y4=y3; +draw z3--z4; +%% stem +lft x1 = rt x3; +x2 = x1; +bot y2 = 0; +%draw_downdiamondstem(1,2,wided,widedmin,diawd,diang); +draw z1--z2; draw_flat_foot(2); +ductus:=false; +penlabels(1,2,3,4,5,6,11,12,100); +endchar; % end "t" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{u} +% The letter `u'. +% \begin{macrocode} +cmchar "PGOTH letter u"; +beginchar("u", 2sb#+hstretch*((3+narrowd+wided)*stem_width#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% left stem +lft x1 = pcshiftx + narrowd*stem_width; y1 = h; +x2 = x1; y2 = 0; +z12 = 1/2[z1,z2]; +draw_updiamondstem(1,12,narrowd,narrowdmin,diawd,diang); +draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); +rt x3 = w - pcshiftx - wided*stem_width; y3=y1; +x4=x3; +%y4=y2; +bot y4 = 0; +z34=1/2[z3,z4]; +draw_updiamondstem(3,34,narrowd,narrowdmin,diawd,diang); +%draw_downdiamondstem(34,4,wided,widedmin,diawd,diang); +draw z34--z4; draw_flat_foot(4); +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,11,13,14,16,33,100); +endchar; % end "u" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{v} +% The letter `v'. +% \begin{macrocode} +cmchar "PGOTH letter v"; +beginchar("v", 2sb#+hstretch*((4 + narrowdmin)*stem_width#), + asc_height#, 0); +adjust_fit(0,0); +numeric n[]; numeric st; +pcshiftx := sb; +st := stem_width; +n1 := h/ascratio; % x-height +pickup quill; +%% bottom left stem +%% right and bottom left stems +rt x23 = w - pcshiftx - narrowdmin*st; y23 = n1; x24=x23; +x1 = x23 - 2st; y1 = 1/2n1; +x2 = x1; y2 = 0; +draw_downdiamondstem(1,2, 1.0, widedmin, diawd, diang); +bot y24 = y2c; +draw_updiamondstem(23, 24, narrowd, narrowdmin, diawd, diang); +%% curly bit +%x11=x1; top y11 = h; +%lft x12 = pcshiftx; y12 = 1/2[y11,y1]; +%draw z11{down}..z12{down}..{down}z1; +x11 = x1; y11 = n1; +draw_updiamondstem(11,1,narrowd,narrowdmin,diawd,diang); +ductus:=false; +penlabels(1,2,3,4,5,11,13,14,23,26,100); +endchar; % end "v" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{w} +% The letter `w'. This is a modern version as the font did not have a W. +% \begin{macrocode} +cmchar "PGOTH letter w"; +beginchar("w", 2sb#+hstretch*((5+wided+narrowd)*stem_width#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +%% left stem +lft x1 = pcshiftx + narrowd*stem_width; y1 = y3 = y5 = h; +x2 = x1; y2 = y4 = 0; bot y6 = 0; +z12=1/2[z1,z2]; +draw_updiamondstem(1,12, narrowd, narrowdmin, diawd, diang); +draw_downdiamondstem(12,2, wided, widedmin, diawd, diang); +%% right stem +rt x5 = w -pcshiftx-wided*stem_width; x6 = x5; +z56 = 1/2[z5,z6]; +draw_updiamondstem(5,56, narrowd, narrowdmin, diawd, diang); +%draw_downdiamondstem(56,6, wided, widedmin, diawd, diang); +draw z56--z6; +%% middle stem +z3 = 1/2[z1,z5]; +x4 = 1/2[x2,x6]; +z34 = 1/2[z3,z4]; +draw_updiamondstem(3,34, narrowd, narrowdmin, diawd, diang); +draw_downdiamondstem(34,4, wided, widedmin, diawd, diang); +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,11,13,14,33,34,53,16,100); +endchar; % end "w" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{x} +% The letter `x'. +% \begin{macrocode} +cmchar "PGOTH letter x"; +beginchar("x", 2sb#+hstretch*((4)*stem_width#), + x_height#, 0); +adjust_fit(0,0); +path pth[]; +numeric n[]; +numeric st; st := stem_width; +pcshiftx := sb; +pickup quill; +%% upright +x1 = 1/2w; y1 = h; +x2 = x1; y2 = 0; +z12 = 1/2[z1,z2]; +draw_updiamondstem(1,12, 1.5, widedmin,diawd,2/3diang); +draw_downdiamondstem(12,2, 1.5, widedmin,diawd,2/3diang); +%% top right bar +lft x3 = rt x1; top y3 = h; +rt x4 = w - pcshiftx; y4=y3; +draw z3--z4; +%% middle bar +n1 := h-y3; +lft x5 = pcshiftx; rt x6 = w - pcshiftx; +y5 = 1/2h - n1; y6 = 1/2h; +z56 = 1/2[z5,z6]; +draw z5{pdir}..z56..{pdir}z6; +%% bottom left +pickup stylus; +lft x11 = pcshiftx; bot y11 = 0; +draw z2e--z11; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,10,25,251,252,40,50,150,60,160,100); +endchar; % end "x" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{y} +% The letter `y'. Modern, but with a dot on top. +% \begin{macrocode} +cmchar "PGOTH letter y"; +beginchar("y", 2sb#+hstretch*((3 + narrowd+ narrowdmin)*stem_width#), + x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +path pth[]; +numeric n[]; +numeric st; st = stem_width; +pickup quill; +%% right side +rt x3 = w - pcshiftx - narrowdmin*st; y3 = h; +x33 = x3; y33 = 0; +%%draw_updiamondstem(3,4,narrowd,narrowdmin, diawd,diang); +%% left side +x1 = x3 - 2st; y1 = y3; +x2 = x1; y2 = 0; +n1 := top y2 - y2; +draw_updiamondstem(1,2,narrowd,narrowdmin, diawd,diang); +%% tail +x11 = rt x2; y11 = top y2; +x12 = lft x2; y12 = bot y2; +pickup stylus; +lft x14 = x1 - 2st; y14 = -d + n1; +x15 = x14+n1; bot y15 = -d; +z4 = whatever[z11,z12] = whatever[z3,z33]; +x10=x4; bot y10 = y4; +draw z10--z11--z12..{down}z14..{-ppdir}z15; +pickup quill; +draw_updiamondstem(3,4,narrowd,narrowdmin, diawd,diang); +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,10,11,12,14,15,33,100); +endchar; % end "y" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{z} +% The letter `z'. +% \begin{macrocode} +cmchar "PGOTH letter z"; +beginchar("z", 2sb#+hstretch*(3stem_width#), + x_height#, 0); +adjust_fit(0,0); +numeric n[]; +numeric st; st := stem_width; +path pth[]; +pcshiftx := sb; +pickup quill; +%% top bar ends +top y12 = h; +n1 := h - y12; +lft x1 = pcshiftx; rt x2 = w-pcshiftx; +%%y1 = y12-n1; y2=y12+n1; +y1 = y12-n1/2; y2=y12; +x12 = 1/2[x1,x2]; +pth1 := z1{pdir}..z12{right}..z2{pdir}; +%% bottom bar ends +bot y34 = 0; +x3=x1; x4=x2; +%%y3=y34-n1; y4=y34+n1; +y3=y34-n1/2; y4=y34; +x34 = 1/2[x3,x4]; +pth2 := z3{pdir}..z34{right}..z4{pdir}; +%% centre bar +z5 = 1/2[z1,z3]; z6 = 1/2[z2,z4]; z56 = 1/2[z5,z6]; +pth3 := z5{pdir}..z56{right}..z6{pdir}; +draw pth1; draw pth2; draw pth3; % bars +draw z2--z3; +ductus:=false; +penlabels(1,2,3,4,5,6,10o,10i,20o,20i,100); +endchar; % end "z" + +% \end{macrocode} +% \end{routine} +% +% +% The end of this file +% \begin{macrocode} +% +% \end{macrocode} +% +% +% \subsection{The code for capital letters} +% +% \thisfont{} `capitals' were drawn with the same pen as for the minuscules. +% The letters are pretty fancy. +% +% \begin{macrocode} +%<*maj> +% PGOTHU.MF Program file for Gothic Prescius capitals +% + +% \end{macrocode} +% +% +% \begin{routine}{A} +% The letter `A'. +% \begin{macrocode} +cmchar "PGOTH letter A"; +beginchar("A", 2cap_sb#+hstretch*((7)*stem_width#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +numeric n[]; +numeric st; st := stem_width; +path pth[]; +pair pr[]; +pickup quill; +%% stem +rt x1 = w - pcshiftx - wided*st; y1 = h; +x2 = x1; y2 = 0; +z12 = 1/2[z1,z2]; +draw_upcurlstem(1,12); +draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); +%% leg +x21 = x1; top y21 = h; +lft x22 = pcshiftx + widedmin*st; bot y22 = 0; +draw z21--z22; +draw (x22-widedmin*st, y22)--(x22+wided*st, y22); +%% bar +z13 = z12; +y16 = y13; z16 = whatever[z21,z22]; +x14 = 1/2[x13,x16]; (z13-z14) = whatever*pdir; +pickup threequarterquill; +draw z13--z14; +draw z14{ppdir}..{left}z16; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,11,12,13,14,15,100); +endchar; % end "A" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{B} +% The letter `B'. +% \begin{macrocode} +cmchar "PGOTH letter B"; +beginchar("B", 2cap_sb#+hstretch*((7)*stem_width#), + caprat*x_height#, 0); +adjust_fit(0,0); +numeric n[]; +numeric st; st := stem_width; +path pth[]; +pcshiftx := cap_sb; +pickup quill; +%% stem +lft x1 = pcshiftx; bot y1 = 0; +n1 := top y1; +lft x99 = 2/5w; bot y99 = 12/16h; +rt x12 = lft x99; top y12 = bot y99; +x14 = x1; y14 = y12; +x13 = 1/2[x14,x12]; y13 = 1/2[y12,(h-n1/2)]; +pth1 := z1{pdir}..z12..{left}z13..{-pdir}z14; +%% stem decoration +z101=z99; +z181 = (x99,-h); +z102 = (x101,y1); +z112 = 1/2[z101,z102]; +lft x8 = x112; y8 = y112; +%% lower bowl +x113 = w-pcshiftx; +(z113-z112) = whatever*(pdir); +rt x5 = w-pcshiftx; y5 = 6/16y113; +x3 = 10/16[x1,x5]; y3 = y1; +z7 = 2/16[z8,z113]; +pth2 := z1{pdir}..{right}z3..{up}z5..{-pdir}z7--z8; + +%% upper bowl +x10 = 1/2[x7,x5]; y10 = 1/2[y12,y99]; +x19 = 1/2[x99,x10]; top y19 = h; +pth3 := z8--z7{pdir}..{up}z10..{left}z19..{-pdir}z99; +%% angled decoration + +z105 = 1/4[z102,z112]; +x185 = 2w; +(z185-z105) = whatever*(pdir); +z106 = (z105--z185) intersectionpoint pth2; + +z107 = 1/4[z112,z101]; +x187 = 2w; +(z187-z107) = whatever*(pdir); +z108 = (z107--z187) intersectionpoint pth3; + +if ductus: + pickup stylus; +fi +draw pth1; +draw pth2; +draw pth3; +pickup stylus; +draw z101--z102; +draw z105--z106; draw z107--z108; + +ductus:=false; +penlabels(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,99,100); +endchar; % end "B" + + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{C} +% The letter `C'. +% \begin{macrocode} +cmchar "PGOTH letter C"; +beginchar("C", 2cap_sb#+hstretch*((5)*stem_width#), + caprat*x_height#, 0); +adjust_fit(0,0); +numeric n[]; +numeric st; st := stem_width; +path pth[]; +pcshiftx := cap_sb; +pickup quill; +%% bowl +n1:=w-2pcshiftx; % actual letter width +n2:=6/5w-2pcshiftx; % width of full bowl +x1=pcshiftx + 1/2n1; top y1 = h; +lft x2 = pcshiftx; y2 = 1/2h; +x3 = x1; bot y3 = 0; +rt x4 = w-pcshiftx; y4 = 1/4h; +x24 = x4; y24 = 3/4h; +pth1 := z24..z1{left}..z2{down}..z3{right}..z4{pdir}; +%% decoration +z101 = (x1,y1); z102 = (x1,y3); +z103 = (x1+perpdec, y1); z104 = (x103,y102+thin); +z105 = 1/2[z101,z102]; z107 = (x105,y105+angdec); +x185 = -w; (z105-z185) = whatever*(pdir); +z106 = (z105--z185) intersectionpoint pth1; +x187 = -w; (z107-z187) = whatever*(pdir); +z108 = (z107--z187) intersectionpoint pth1; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw pth1; %% bowl +pickup stylus; +draw z101--z102; draw z103--z104; +draw z105--z106; draw z107--z108; +ductus:=false; +penlabels(1,2,3,4,5,6,14,16,17,18,100,101,102,103,104,105,106,107,108,185); +endchar; % end "C" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{D} +% The letter `D'. +% \begin{macrocode} +cmchar "PGOTH letter D"; +beginchar("D", 2cap_sb#+hstretch*((7)*stem_width#), + caprat*x_height#, 0); +adjust_fit(0,0); +numeric n[]; +numeric st; st := stem_width; +path pth[]; +pcshiftx := cap_sb; +pickup quill; +%% bowl +lft x1 = pcshiftx; bot y1 = 0; +rt x5 = w-pcshiftx; y5 = 1/2h; +x3 = 10/16[x1,x5]; y3 = y1; +x7 = x3; top y7 = h; +lft x9 = 2/5w; bot y9 = 12/16h; +pth1 := z1{pdir}..{right}z3..{up}z5..{left}z7..{-pdir}z9; +%% stem +rt x12 = lft x9; top y12 = bot y9; +x14 = x1; y14 = y12; +x13 = 1/2[x14,x12]; y13 = 1/2[y12,y7]; +pth2 := z1{pdir}..z12..{left}z13..{-pdir}z14; +%% vertical decoration +z101=z9; +z181 = (x9,-h); +z102 = ((x101,h/2)--z181) intersectionpoint pth1; +z103a=(x101+perpdec,h); z103b=(x103a,h/2); z103c=(x103a,-h); +z103 = (z103a--z103b) intersectionpoint pth1; +z104 = (z103b--z103c) intersectionpoint pth1; +%% angled decoration +z106 = (lft x5, y5); +x105 = x103; (z106-z105) = whatever*(pdir); +z107 = (x105, y105+angdec); +x108a = 2w; (z108a-z107) = whatever*(pdir); +z108 = (z108a--z107) intersectionpoint pth1; +if ductus: + pickup stylus; +fi +draw pth1; +draw pth2; +pickup stylus; +draw z101--z102; draw z103--z104; +draw z105--z106; draw z107--z108; +ductus:=false; +penlabels(0,1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,100); +endchar; % end "D" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{E} +% The letter `E'. +% \begin{macrocode} +cmchar "PGOTH letter E"; +beginchar("E", 2cap_sb#+hstretch*((6)*stem_width#), %% (5) too small + caprat*x_height#, 0); +adjust_fit(0,0); +numeric n[]; +numeric st; st := stem_width; +path pth[]; +pcshiftx := cap_sb; +pickup quill; +%% bowl +n1:=w-2pcshiftx; % actual letter width +n2:=6/5w-2pcshiftx; % width of full bowl +x1=pcshiftx + 1/2n1; top y1 = h; +lft x2 = pcshiftx; y2 = 1/2h; +x3 = x1; bot y3 = 0; +rt x4 = w-pcshiftx; y4 = 1/4h; +x24 = x4; y24 = 3/4h; +pth1 := z24..z1{left}..z2{down}..z3{right}..z4{pdir}; +%% decoration +z101 = (x1,y1); z102 = (x1,y3); +z103 = (x1+perpdec, y1); z104 = (x103,y102+thin); +z105 = 1/2[z101,z102]; z107 = (x105,y105+angdec); +x185 = -w; (z105-z185) = whatever*(pdir); +z106 = (z105--z185) intersectionpoint pth1; +x187 = -w; (z107-z187) = whatever*(pdir); +z108 = (z107--z187) intersectionpoint pth1; +%% bar +lft x31 = x103; top y31 = y105; +rt x32 = w-pcshiftx; y32=y31; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw pth1; %% bowl +draw z31--z32; %% bar +pickup stylus; +draw z101--z102; draw z103--z104; +draw z105--z106; draw z107--z108; +ductus:=false; +penlabels(1,2,3,4,5,6,14,16,17,18,100,105,185,106); +endchar; % end "E" + + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{F} +% The letter `F'. +% \begin{macrocode} +cmchar "PGOTH letter F"; +beginchar("F", 2cap_sb#+hstretch*((5)*stem_width#), + 5/4caprat*x_height#, 0); +adjust_fit(0,0); +numeric n[]; +numeric st; st := stem_width; +path pth[]; +pcshiftx := cap_sb; +pickup quill; +%% stem (1--2) and top bar (21--22) +lft x1=lft x2=pcshiftx+widedmin*st; y2 = 0; +top y21 = top y22 = h - (top y2 - bot y2); x22 = w-pcshiftx-st; +lft x21 = rt x1; top y1 = bot y21; +z12 = 1/3[z1,z2]; +draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); +draw z1--z12; +draw z21--z22; +%% vertical decoration +z102 = 2/3[z2b,z2c]; +x101 = x102; y101 = y21; +%% bar +lft x14 = x101; y14 = y12; +rt x16 = w-pcshiftx; y16 = y14; +draw z14--z16; +z16tr = (rt x16, top y16); +pickup stylus; +draw z101--z102; +%% Other decoration +%% bottom bar +rt x201 = x16tr; top y201 = y16tr; +y202 = y201 - 2st; (z201-z202) = whatever*pdir; +draw z201--z202; +%% top bar +pickup quill; +z22tb = (rt x22, top y22); +x22bb - x22 = x22 - x22tb; y22bb - y22 = y22 - y22tb; +x22c = x22 + st; bot y22c = top y22 + 1/2st; +x22f = x22; y22f = 1/3[y22c, y22]; +pickup stylus; +x22br = x22bb; bot y22br = y22bb; +pth3 := z22br--z22tb..{up}z22c..{-ppdir}z22f; +draw pth3; + +penlabels(1,2,3,4,5,6,7,14,15,16,21,22,100); +endchar; % end "F" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{G} +% The letter `G'. +% \begin{macrocode} +cmchar "PGOTH letter G"; +beginchar("G", 2cap_sb#+hstretch*((7)*stem_width#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +numeric n[]; +numeric st; st := stem_width; +path pth[]; +pickup quill; +%% bar +top y3=h; n3 := h - top y3; +lft x1 = pcshiftx; rt x2=w-pcshiftx; +y1 = y3-n3; y2=y3; +x3=1/2[x1,x2]; +pth1 := z1{pdir}..z3..z2{pdir}; +%% bowl +n1 := w; % width of bowl +n2 := h; % height of bowl +lft x4 = pcshiftx; y4 = 1/2h; +x5=x3; bot y5 = 0; +rt x6 = w-pcshiftx; y6 = 6/16h; +%% decoration +x101 = lft x3; y101=y3; +x181 = x101; y181=-h/4; z191 = 1/2[z101,z181]; +z102=(x101,y5); +z103 = (x101+3thin, y101); z104 = (x103,y102); +lft x7 = x104; y7 = 10/16[y104,y103]; +%%pth2 := z3..z4{down}..z5{right}..z6{up}..{-pdir}z7; +%%pth2 := z2{-pdir}..z3..z4{down}..z5{right}..z6{up}..{-pdir}z7; +pth2 := z2--z3..z4{down}..z5{right}..z6{up}..{-pdir}z7; +z105 = (x104,y104+4thin); z107=(x105,y105+3thin); +x185 = 2w; (z185-z105) = whatever*(pdir); +z106 = (z105--z185) intersectionpoint pth2; +z108 = (x106,y106+3thin); +%% fork +z2tr = (rt x2, top y2); +x2a = x2tr; y2a = y2tr + thin; +x2b = x2a; y2b - y2 = y2 - y2a; +x2d = x2 - thick; y2d = y2; +pickup stylus; +% finish off the fork +x2c = x2d = x2e; +top y2e = y2tr; y2c - y2d = y2d - y2e; +%%filldraw z2d--z2c{right}..z2b--cycle; +%%filldraw z2d--z2a..{left}z2e--cycle; +filldraw z2e--z2c{right}..z2b--cycle; +filldraw z2c--z2a..{left}z2e--cycle; +pth9 := (rt x2a,y2a)--(rt x2b,y2b)--(rt x2d,y2d)--cycle; +unfill pth9; +unfill pth9; +unfill pth9; +draw z101--z102; draw z103--z104; +draw z105--z106; draw z107--z108; +pickup quill; +%%ductus:=true; +if ductus: + pickup stylus; +fi +%%draw pth1; %% bar +draw pth2; %% bowl +ductus:=false; +penlabels(1,2,2a,2b,2c,2d,2e,3,4,5,6,11,12,100,101,102,103,104,181,191); +endchar; % end "G" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{H} +% The letter `H'. +% \begin{macrocode} +cmchar "PGOTH letter H"; +beginchar("H", 2cap_sb#+hstretch*((8)*stem_width#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +numeric st; st := stem_width; +numeric n[]; +path pth[]; +pickup quill; +%% left stem +lft x1=pcshiftx+3st; y1=h; +x2=x1; y2=0; +z12 = 1/2[z1,z2]; +draw_upcurlstem(1,12); +draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); +% start of bowl +n1 := 12/16h; %% take this as the top of the bowl +x13=x1; y13=3/4n1; +rt x3 = w-pcshiftx; y3 = 8/16n1; +x14 = 8/16[x13,x3]; top y14 = n1; +x4 = 1/2[x14,x3]; bot y4=0; +pth1 := z13{pdir}..{right}z14..{down}z3..{-pdir}z4; +%% bottom curl +z21 = z4; +x24 = x3; top y24 = 0; +x23 = 1/2[x21,x24]; top y23 = bot y24; +pth2 := z21{-pdir}..z23..{ppdir}z24; +%% vertical decoration +z102 = 2/3[z2b,z2c]; +z182 = (x102,h); +z101 = (z102--z182) intersectionpoint pth1; +z105 = 1/2[z102,z101]; +x185 = 2w; +(z185-z105) = whatever*(pdir); +z106 = (z105--z185) intersectionpoint pth1; +z107 = (x105, y105-angdec); z187 = (x185, y185-angdec); +z108 = (z107--z187) intersectionpoint pth1; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw pth1; +pickup stylus; +draw pth2; +draw z101--z102; +draw z105--z106; draw z107--z108; +ductus:=false; +penlabels(1,2,3,4,5,6,13,14,100); +endchar; % end "H" + + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{I} +% The letter `I'. +% \begin{macrocode} +cmchar "PGOTH letter I"; +beginchar("I", 2cap_sb#+hstretch*((4+wided)*stem_width#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +numeric st; st := stem_width; +pickup quill; +lft x1=lft x2=pcshiftx+3st; +y1=h; y2=0; +z12 = 1/2[z1,z2]; +draw_upcurlstem(1,12); +draw_downdiamondstem(12,2,wided, widedmin,diawd,diang); +%% vertical decoration +z102 = 2/3[z2b,z2c]; +pickup stylus; +x101=x102; top y101 = h; +draw z101--z102; +ductus:=false; +penlabels(1,2,101,102,100); +endchar; % end "I" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{J} +% The letter `J'. This letter was not in the script, it being a later invention. +% \begin{macrocode} +cmchar "PGOTH letter J"; +beginchar("J", cap_sb#+hstretch*((4+wided)*stem_width#), + caprat*x_height#, 1/2caprat*x_height#); +adjust_fit(0,0); +pcshiftx := cap_sb; +numeric n[]; +numeric st; st := stem_width; +pickup quill; +%% stem +lft x1 = pcshiftx+3st; y1 = h; +x2=x1; y2=-d + (top y1 - bot y1); +%% bottom hook +lft x3 = pcshiftx; bot y3 = -d; +draw_upcurlstem(1,2); +draw z2{ppdir}..{-pdir}z3; +%% vertical decoration +x201 = rt x1; +x101 = x201 + 2/3wided*st; +pickup stylus; +top y101 = h; y201=y101; +z102=(x101,0); +draw z201--z101--z102; +ductus:=false; +penlabels(1,2,3,101,102,100); +endchar; % end "J" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{K} +% The letter `K'. +% \begin{macrocode} +cmchar "PGOTH letter K"; +beginchar("K", 2cap_sb#+hstretch*((8+wided)*stem_width#), + 5/4caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +path pth[]; +numeric n[]; +numeric st; st := stem_width; +pickup quill; +%% stem +n1 = 4/5h; % x-height +lft x1=lft x2=pcshiftx+3st; +y1=h; y2=0; +z12 = 1/2[z1,z2]; +draw_upcurlstem(1,12); +draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); +%% top arm +%%z3=(x1,1/2n1); +x3 = x1; top y3 = 14/16n1; +z7c = 1/2[z2,z3]; +top y3a = n1; (z3a-z3) = whatever*pdir; +rt x7a = w - pcshiftx - 2st; (z7a-z7c) = whatever*pdir; +x4 = 1/2[x3a,x7a]; y4 = y3a; +x5 = x7a; y5 = 1/2[y3a, y7a]; +z7 = (rt x7c, y7c); +pth1 := z3{pdir}..z4..z5..{-pdir}z7; +%% lower arm +z21=z7; +z24=(x5+st,y2a); +x23 = x24; y23 = 1/2[y21,y24]; +rt x25 = w-pcshiftx; bot y25 = 0; +pth2 := z21{pdir}..{down}z23..z24..{pdir}z25; +pickup quill; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw pth1; % upper bowl +draw pth2; % lower half +%% decorations +z1tr = (rt x1, top y1); +pickup stylus; +z102 = 2/3[z2b,z2c]; x101 = x102; top y101 = h; +x103 = x1tr; y103 = y101; +draw z103--z101--z102; +x105 = x101; y105 = 1/2[y7,y3]; +y185 = 2w; (z185-z105) = whatever*pdir; +z106 = (z105--z185) intersectionpoint pth1; +x107 = x105; y107 = y105-angdec; +x187 = x185; y187-y185 = y107-y105; +%%z108 = (z107--z187) intersectionpoint pth1; +draw z105--z106; +%%draw z107--z108; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,13,14,21,22,23,24,25,100); +endchar; % end "K" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{L} +% The letter `L'. +% \begin{macrocode} +cmchar "PGOTH letter L"; +beginchar("L", 2cap_sb#+hstretch*((7)*stem_width#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +numeric st; st := stem_width; +pickup quill; +lft x1=pcshiftx+3st; y1=h; +x2=x1; bot y2 =0; +draw_upcurlstem(1,2); +rt x4 = w-pcshiftx; bot y4 = 0; +draw z2{right}..{pdir}z4; +%% vertical decoration +x201 = rt x1; +x101 = x201+2/3wided*st; +pickup stylus; +top y101 = h; y201 = y101; +x102 = x101; bot y102=0; +draw z201--z101--z102; +ductus:=false; +penlabels(1,2,3,4,101,102,201,100); +endchar; % end "L" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{M} +% The letter `M'. +% \begin{macrocode} +cmchar "PGOTH letter M"; +beginchar("M", 2cap_sb#+hstretch*((11)*stem_width#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +numeric st; st := stem_width; +path pth[]; +pickup quill; +%%% left part +lft x301 = pcshiftx+3st; y301 = h; +x302 = x301; y302 = 0; +z312 = 1/2[z301,z302]; +draw_upcurlstem(301,312); +draw_downdiamondstem(312,302,wided,widedmin,diawd,diang); + +%% left N stem (and N part) +%%%lft x1=pcshiftx+3st; y1=h; +x1 = x301 + 3st; y1 = h; +x2=x1; y2=0; +z12 = 1/2[z1,z2]; +%%draw_upcurlstem(1,12); +%%draw_updiamondstem(1,12,wided,widedmin,diawd,diang); +draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); +% start of bowl +x13=x1; y13=3/4h; +rt x3 = w-pcshiftx; y3 = 8/16h; +x14 = 8/16[x13,x3]; top y14 = h; +x4 = 1/2[x14,x3]; bot y4=0; +pth1 := z13{pdir}..{right}z14..{down}z3..{-pdir}z4; +%% bottom curl +z21 = z4; +x24 = x3; top y24 = 0; +x23 = 1/2[x21,x24]; top y23 = bot y24; +pth2 := z21{-pdir}..z23..{ppdir}z24; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw pth1; +pickup stylus; +draw pth2; +pickup quill; +%% finish off the left part +x3011 = 1/2[x301,x1]; top y3011 = h; +z3123 = (x301,3/4h); z123 = (x1,y3123); +draw z3123--z3011--z123--z12; +%% vertical decorations + %% left part +z402 = 2/3[z302b,z302c]; +x401 = x402; z401 = whatever[z3123,z3011]; + %% right part +z102 = 2/3[z2b,z2c]; +z182 = (x102,h); +z101 = (z102--z182) intersectionpoint pth1; +%% angled decorations + %% left part +z406 = z13; +x405 = x402; (z406-z405) = whatever*pdir; +z407 = (x405, y405-angdec); z408 = (x406, y406-angdec); + %% right part +z105 = (x102,y405); +x185 = 2w; +(z185-z105) = whatever*(pdir); +z106 = (z105--z185) intersectionpoint pth1; +z107 = (x105, y105-angdec); z187 = (x185, y185-angdec); +z108 = (z107--z187) intersectionpoint pth1; +pickup stylus; +draw z401--z402; +draw z405--z406; draw z407--z408; +draw z101--z102; +draw z105--z106; draw z107--z108; +ductus:=false; +penlabels(1,2,3,4,5,6,13,14,101,102,105,106,107,108,301,302,100); +endchar; % end "M" + + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{N} +% The letter `N'. +% \begin{macrocode} +cmchar "PGOTH letter N"; +beginchar("N", 2cap_sb#+hstretch*((8)*stem_width#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +numeric st; st := stem_width; +path pth[]; +pickup quill; +%% left stem +lft x1=pcshiftx+3st; y1=h; +x2=x1; y2=0; +z12 = 1/2[z1,z2]; +draw_upcurlstem(1,12); +draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); +% start of bowl +x13=x1; y13=3/4h; +rt x3 = w-pcshiftx; y3 = 8/16h; +x14 = 8/16[x13,x3]; top y14 = h; +x4 = 1/2[x14,x3]; bot y4=0; +pth1 := z13{pdir}..{right}z14..{down}z3..{-pdir}z4; +%% bottom curl +z21 = z4; +x24 = x3; top y24 = 0; +x23 = 1/2[x21,x24]; top y23 = bot y24; +pth2 := z21{-pdir}..z23..{ppdir}z24; +%% vertical decoration +z102 = 2/3[z2b,z2c]; +z182 = (x102,h); +z101 = (z102--z182) intersectionpoint pth1; +z105 = 1/2[z102,z101]; +x185 = 2w; +(z185-z105) = whatever*(pdir); +z106 = (z105--z185) intersectionpoint pth1; +z107 = (x105, y105-angdec); z187 = (x185, y185-angdec); +z108 = (z107--z187) intersectionpoint pth1; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw pth1; +pickup stylus; +draw pth2; +draw z101--z102; +draw z105--z106; draw z107--z108; +ductus:=false; +penlabels(1,2,3,4,5,6,13,14,100); +endchar; % end "N" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{O} +% The letter `O'. +% \begin{macrocode} +cmchar "PGOTH letter O"; +beginchar("O", 2cap_sb#+hstretch*((7)*stem_width#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +path pth[]; +pickup quill; +lft x1=pcshiftx; rt x3=w-pcshiftx; y1=y3=h/2; +x2=x4=w/2; top y2=h; bot y4=0; +pth1 := z1..z2..z3..z4..cycle; +%% vertical decoration +z101=z2; z102=z4; +z103 = (x101-perpdec, y101); z104 = (x103,y102); +%% angled decoration +z108 = (lft x3,y3); +x107 = x101; (z108-z107) = whatever*(pdir); +z105 = (x107, y107+angdec); +x106a = 2w; (z106a-z105) = whatever*(pdir); +z106 = (z105--z106a) intersectionpoint pth1; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw pth1; +pickup stylus; +draw z101--z102; draw z103--z104; +draw z105--z106; draw z107--z108; +ductus:=false; +penlabels(1,2,3,4,5,100); +endchar; % end "O" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{P} +% The letter `P'. +% \begin{macrocode} +cmchar "PGOTH letter P"; +beginchar("P", 2cap_sb#+hstretch*((8)*stem_width#), + caprat*x_height#, 1/2caprat*x_height#); +adjust_fit(0,0); +pcshiftx := cap_sb; +path pth[]; +numeric n[]; +numeric st; st := stem_width; +pickup quill; +%% stem +lft x1=lft x2=pcshiftx+3st; +y1=h; y2=-d; +z12 = 1/2[z1,z2]; +draw_upcurlstem(1,12); +draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); +%% vertical decoration +z1tr = (rt x1, top y1); +z102 = 2/3[z2b,z2c]; +pickup stylus; +x101 = x102; top y101 = h; +x103 = x1tr; y103 = y101; +draw z103--z101--z102; +pickup quill; +%% bowl +lft x22 = x101; top y22 = h; +x21 = x1; (z22-z21) = whatever*pdir; +rt x24 = w - pcshiftx; y24 = 1/2h; +x25 = 1/2[x22,x24]; bot y25 = 0; +pth1 := z21--z22{down}..{down}z24..{-pdir}z25; +z31 = z25; +lft x33 = pcshiftx; bot y33 = 0; +pth2 := z33{pdir}..{right}z31; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw pth1; draw pth2; +%% angled decoration +x105 = x101; y105 = 1/3h; +x185 = 2w; +(z185-z105) = whatever*pdir; +z106 = (z105--z185) intersectionpoint pth1; +z107 = (x105,y105-angdec); +x187 = x185; y107 - y105 = y187 - y185; +z108 = (z107--z187) intersectionpoint pth1; +pickup stylus; +draw z105--z106; draw z107--z108; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,100); +endchar; % end "P" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{Q} +% The letter `Q'. +% \begin{macrocode} +cmchar "PGOTH letter Q"; +beginchar("Q", 2cap_sb#+hstretch*((8)*stem_width#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +path pth[]; +pickup quill; +lft x1=pcshiftx; rt x3=w-pcshiftx-stem_width; y1=y3=h/2; +x2=x4=w/2; top y2=h; bot y4=0; +pth1 := z1..z2..z3..z4..cycle; +%% tail +pth2 := z1..z4..z3; +z11 = directionpoint pdir of pth2; +rt x13 = w-pcshiftx; bot y13 = 0; +pth3 := z11{pdir}..{pdir}z13; +%% vertical decoration +z101=z2; z102=z4; +z103 = (x101-perpdec, y101); z104 = (x103,y102); +%% angled decoration +z108 = (lft x3,y3); +x107 = x101; (z108-z107) = whatever*(pdir); +z105 = (x107, y107+angdec); +x106a = 2w; (z106a-z105) = whatever*(pdir); +z106 = (z105--z106a) intersectionpoint pth1; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw pth1; draw pth3; +pickup stylus; +draw z101--z102; draw z103--z104; +draw z105--z106; draw z107--z108; +ductus:=false; +penlabels(1,2,3,4,5,100); +endchar; % end "Q" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{R} +% The letter `R'. +% \begin{macrocode} +cmchar "PGOTH letter R"; +beginchar("R", 2cap_sb#+hstretch*((8+wided)*stem_width#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +path pth[]; +numeric n[]; +numeric st; st := stem_width; +pickup quill; +%% stem +n1 = h; % x-height +lft x1=lft x2=pcshiftx+3st; +y1=h; y2=0; +z12 = 1/2[z1,z2]; +draw_upcurlstem(1,12); +draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); +%% top arm +%%z3=(x1,1/2n1); +x3 = x1; top y3 = 14/16n1; +z7c = 1/2[z2,z3]; +top y3a = n1; (z3a-z3) = whatever*pdir; +rt x7a = w - pcshiftx - 2st; (z7a-z7c) = whatever*pdir; +x4 = 1/2[x3a,x7a]; y4 = y3a; +x5 = x7a; y5 = 1/2[y3a, y7a]; +z7 = (rt x7c, y7c); +pth1 := z3{pdir}..z4..z5..{-pdir}z7; +%% lower arm +z21=z7; +z24=(x5,y2a); +x23 = x24; y23 = 1/2[y21,y24]; +rt x25 = w-pcshiftx; bot y25 = 0; +pth2 := z21{pdir}..{down}z23..z24..{pdir}z25; +pickup quill; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw pth1; % upper bowl +draw pth2; % lower half +%% decorations +z1tr = (rt x1, top y1); +pickup stylus; +z102 = 2/3[z2b,z2c]; x101 = x102; top y101 = h; +x103 = x1tr; y103 = y101; +draw z103--z101--z102; +x105 = x101; y105 = 1/2[y7,y3]; +y185 = 2w; (z185-z105) = whatever*pdir; +z106 = (z105--z185) intersectionpoint pth1; +x107 = x105; y107 = y105-angdec; +x187 = x185; y187-y185 = y107-y105; +%%z108 = (z107--z187) intersectionpoint pth1; +draw z105--z106; +%%draw z107--z108; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,13,14,21,22,23,24,25,100); +endchar; % end "R" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{S} +% The letter `S'. +% \begin{macrocode} +cmchar "PGOTH letter S"; +beginchar("S", 2cap_sb#+hstretch*((8)*stem_width#), + caprat*x_height#, 0); +adjust_fit(0,0); +numeric n[]; +numeric st; st := stem_width; +path pth[]; +pcshiftx := cap_sb; +pickup quill; +pickup threequarterquill; +%% top +n1 := 1; +lft x1 = pcshiftx + n1*st; top y1 = h; +rt x3 = w - pcshiftx; y3 = y1; +x2 = 1/2[x1,x3]; top y2 = y1; +pth1 := z1..z2..{pdir}z3; +draw pth1; +%% bottom +lft x4 = pcshiftx; bot y4 = 0; +rt x6 = w -pcshiftx - n1*st; y6 = y4; +x5 = 1/2[x4,x6]; bot y5 = y4; +pth2 := z4{pdir}..z5..z6; +draw pth2; +%% top path +z100 = (1/2w, 1/2h); +z11 = z1; z15 = z6; +x13 = x100; y13 = y100 + st; +pth3 := z11..{right}z13{right}..z15; +draw pth3; +%% bottom path +z21 = z11; z25 = z6; +x23 = x100; y100 - y23 = y13 - y100; +pth4 := z21..{right}z23{right}..z25; +draw pth4; +%% decorations + %% top +z101 = (x2+angdec,y2); y181 = 0; (z101-z181) = whatever*pdir; +z102 = (z101--z181) intersectionpoint pth3; +z103 = (x101-angdec, y101); x183-x181 = x103-x101; y183 = 0; +z104 = (z103--z183) intersectionpoint pth3; + %% bottom +z201 = (x5,y5); y281 = h; (z201-z281) = whatever*pdir; +z202 = (z201--z281) intersectionpoint pth4; +z203 = (x201-angdec, y201); x283-x281 = x203-x201; y283 = h; +z204 = (z203--z283) intersectionpoint pth4; +pickup stylus; +draw z101--z102; draw z103--z104; +draw z201--z202; draw z203--z204; + + +%%ductus:=true; +if ductus: + pickup stylus; +fi +ductus:=false; +penlabels(1,2,3,4,5,6,7,11,17,20,26,27,28,100,101,102,103,104,201,202,203,204); +endchar; % end "S" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{T} +% The letter `T'. +% \begin{macrocode} +cmchar "PGOTH letter T"; +beginchar("T", 2cap_sb#+hstretch*((7)*stem_width#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +numeric n[]; +numeric st; st := stem_width; +path pth[]; +pickup quill; +%% bar +top y3=h; n3 := h - top y3; +lft x1 = pcshiftx; rt x2=w-pcshiftx; +y1 = y3-n3; y2=y3; +x3=1/2[x1,x2]; +pth1 := z1{pdir}..z3..z2{pdir}; +%% bowl +n1 := w; % width of bowl +n2 := h; % height of bowl +lft x4 = pcshiftx; y4 = 1/2h; +x5=x3; bot y5 = 0; +rt x6 = w-pcshiftx; y6 = 6/16h; +%%pth2 := z3..z4{down}..z5{right}..z6{pdir}; +%% decoration +x101 = lft x3; y101=y3; +x181 = x101; y181=-h/4; z191 = 1/2[z101,z181]; +%%z102 = z191--z181 intersectionpoint pth2; %%% ???? NO INTERSECTION!!!!!! +z102=(x101,y5); +z103 = (x101+3thin, y101); z104 = (x103,y102); +lft x7 = x104; y7 = 10/16[y104,y103]; +pth2 := z3..z4{down}..z5{right}..z6{up}..{-pdir}z7; +z105 = (x104,y104+4thin); z107=(x105,y105+3thin); +x185 = 2w; (z185-z105) = whatever*(pdir); +z106 = (z105--z185) intersectionpoint pth2; +z108 = (x106,y106+3thin); +pickup stylus; +draw z101--z102; draw z103--z104; +draw z105--z106; draw z107--z108; +pickup quill; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw pth1; %% bar +draw pth2; %% bowl +ductus:=false; +penlabels(1,2,3,4,5,6,11,12,100,101,102,103,104,181,191); +endchar; % end "T" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{U} +% The letter `U'. +% \begin{macrocode} +cmchar "PGOTH letter U"; +beginchar("U", 2cap_sb#+hstretch*((8)*stem_width#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +numeric n[]; +numeric st; st := stem_width; +path pth[]; +pickup quill; +%% stem tops +lft x1 = pcshiftx + 3st; y1 = h; +rt x3 = w - pcshiftx - widedmin*st; y3 = h; +% bottom of bowl +x7 = x1 - 3/2st; bot y7 = 0; +rt x9 = lft x3; bot y9 = 0; +pth1 := z7{pdir}..{pdir}z9; +draw pth1; +%% stem bottoms +z2 = (z1 -- (x1,-h)) intersectionpoint pth1; +x4 = x3; bot y4 = top y9; +draw_upcurlstem(1,2); +draw_updiamondstem(3,4,wided,widedmin,diawd,diang); +%% decorations +z1tr = (rt x1, top y1); +pickup stylus; +z99 = 2/3[z3b,z3c]; +x101 - x1 = x3 - x99; top y101 = h; +x102 = x101; y102 = y2; +x103 = x1tr; y103 = y101; +draw z103--z101--z102; +x105 = x101; y105 = 1/3h; +x106 = x3; (z106-z105) = whatever*pdir; +z107 = (x105, y105-angdec); x108 = x106; y108-y106 = y107-y105; +draw z105--z106; draw z107--z108; +%%ductus:=true; +if ductus: + pickup stylus; +fi +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,11,13,14,16,33,100); +endchar; % end "U" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{V} +% The letter `V'. +% \begin{macrocode} +cmchar "PGOTH letter V"; +beginchar("V", 2cap_sb#+hstretch*((8)*stem_width#), + caprat*x_height#, 0); +adjust_fit(0,0); +numeric n[]; +numeric st; st := stem_width; +path pth[]; +pcshiftx := cap_sb; +pickup quill; +%% left stem top +lft x1 = pcshiftx + 3st; y1 = h; +% bottom of bowl +x7 = x1 - 3/2st; bot y7 = 0; +x9 = w/2; bot y9 = 0; +pth1 := z7{pdir}..{right}z9; +draw pth1; +%% left stem bottom +x81 = x1; y81 = - h; +z2 = (z1--z81) intersectionpoint pth1; +draw_upcurlstem(1,2); +%% right stem +z6 = z9; +rt x5 = w - pcshiftx; top y5 = 3/4h; +x3 = 1/2[rt x1, lft x5]; +x4 = 1/2[x3,x5]; top y4 = h; +y3 = 1/2[y4,y5]; +pth2 := z6{pdir}..{up}z5..{left}z4..{-pdir}z3; +draw pth2; +pth3 := pth1 & pth2; +%% decoration +z1tr = (rt x1, top y1); +x101 = x1tr + 2/3wided*st; +pickup stylus; +top y101 = h; +z103 = (x1tr,y101); +z181 = (x101,-w); +z102 = (z101--z181) intersectionpoint pth3; +draw z103--z101--z102; +x105 = x101; y105 = 1/3[y102,y101]; +x185 = 2w; (z185-z105) = whatever*pdir; +z106 = (z105--z185) intersectionpoint pth2; +z107 = (x105, y105-angdec); +x187 = x185; y187-y185 = y107-y105; +z108 = (z107--z187) intersectionpoint pth2; +draw z105--z106; draw z107--z108; + +%%ductus:=true; +if ductus: + pickup stylus; +fi + +ductus:=false; +penlabels(1,2,3,4,5,11,13,14,23,26,100); +endchar; % end "V" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{W} +% The letter `W'. This is a modern version as the font did not have a W. +% \begin{macrocode} +cmchar "PGOTH letter W"; +beginchar("W", 2cap_sb#+hstretch*((12)*stem_width#), + caprat*x_height#, 0); +adjust_fit(0,0); +numeric n[]; +numeric st; st := stem_width; +path pth[]; +pcshiftx := cap_sb; +pickup quill; +%% top of stems +lft x1 = pcshiftx + 3st; y1 = h; +rt x999 = w - pcshiftx; +x3 = 1/2[x1,x999]; y3 = h; +%% bowl bottoms +x21 = x1 - 3/2st; bot y21 = 0; +rt x23 = lft x3; bot y23 = 0; +pth1 := z21{pdir}..z23; +draw pth1; +lft x31 = rt x23; bot y31 = top y23; +x33 = 1/2[x31,x999]; bot y33 = 0; +pth2 := z31{pdir}..z33; +draw pth2; +%% bottom of stems +z2 = (z1--(x1,0)) intersectionpoint pth1; +x4 = x3; bot y4 = top y23; +draw_upcurlstem(1,2); +draw_updiamondstem(3,4,wided,widedmin,diawd,diang); +%% right V stem +z16 = z33; +x15 = x999; top y15 = 3/4h; +x13 = 1/2[rt x3, lft x15]; +x14 = 1/2[x13,x15]; top y14 = h; +y13 = 1/2[y14,y15]; +pth3 = z16{pdir}..{up}z15..{left}z14..{-pdir}z13; +draw pth3; +%% decorations +z1tr = (rt x1, top y1); +z3tr = (rt x3, top y3); +pickup stylus; +%% for U +z99 = 2/3[z3b,z3c]; +x101 - x1 = x3 - x99; top y101 = h; +x102 = x101; y102 = y2; +x103 = x1tr; y103 = y101; +draw z103--z101--z102; +x105 = x101; y105 = 1/3h; +x106 = x3; (z106-z105) = whatever*pdir; +z107 = (x105, y105-angdec); x108 = x106; y108-y106 = y107-y105; +draw z105--z106; draw z107--z108; +%% for V + +x301 = x3tr+2/3wided*st; top y301 = y3e; +z381 = (x301,-w); +z302 = (z301--z381) intersectionpoint pth2; +draw z3e--z301--z302; +x305 = x301; y305 = 1/3[y302,y301]; +x385 = 2w; (z385-z305) = whatever*pdir; +z306 = (z305--z385) intersectionpoint pth3; +z307 = (x305, y305-angdec); +x387 = x385; y387-y385 = y307-y305; +z308 = (z307--z387) intersectionpoint pth3; +draw z305--z306; draw z307--z308; + + + +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,11,13,14,33,34,53,16,100); +endchar; % end "W" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{X} +% The letter `X'. +% \begin{macrocode} +cmchar "PGOTH letter X"; +beginchar("X", 2cap_sb#+hstretch*((8)*stem_width#), + caprat*x_height#, 0); +adjust_fit(0,0); +path pth[]; +numeric n[]; +numeric st; st := stem_width; +pcshiftx := cap_sb; +pickup quill; +%% center stem +lft x1 = lft x2 = pcshiftx + 3st; +y1 = 3/4h; y2 = 1/4h; +draw z1--z2; +%% top right +z21 = z1; top y22 = h; (z22-z21) = whatever*pdir; +rt x24 = w-pcshiftx; y24 = y21; +pth1 := z21--z22{-ppdir}..{pdir}z24; +draw pth1; +%% bottom right +z31 = z2; +rt x33 = w-pcshiftx; bot y33 = 0; +pth2 := z31{-ppdir}..{pdir}z33; +draw pth2; +%% bottom left +z41 = z2; +bot y43 = -1/4h; (z41-z43) = whatever*pdir; +x45 = x43 + st; y45=y43; +pth3 := z41--z43{-pdir}..{pdir}z45; +pickup stylus; +draw pth3; +pickup quill; +%% top left +x11 = x1; y11 = h; +draw_upcurlstem(11,1); +%% decoration +x81 = rt x1; +pickup stylus; +x101 = x102 = x81 + 2/3wided*st; +z101 = whatever[z1,z22]; +z102 = (z101--(x101,0)) intersectionpoint pth2; +draw z101--z102; +pickup quill; +%% middle arms +z120 = 1/2[z1,z2]; +z51 = z120; +lft x53 = pcshiftx; top y53 = y51; +x52 = 1/2[x51,x53]; y52 = y51; +pth5 := z51--z52{left}..{-pdir}z53; +draw pth5; +lft x61 = x101; y61 = y120; +rt x63 = w-pcshiftx; bot y63 = y61; +x62 = 1/2[x61,x63]; y62 = y61; +pth6 := z61--z62{right}..{pdir}z63; +draw pth6; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,10,25,251,252,40,50,51,52,53,61,62,63,101,102,150,60,160,100); +endchar; % end "X" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{Y} +% The letter `Y'. +% \begin{macrocode} +cmchar "PGOTH letter Y"; +beginchar("Y", 2cap_sb#+hstretch*((8)*stem_width#), + caprat*x_height#, 1/2caprat*x_height#); +adjust_fit(0,0); +numeric n[]; +numeric st; st := stem_width; +path pth[]; +pcshiftx := cap_sb; +pickup quill; +%% stem tops +lft x1 = pcshiftx + 3st; y1 = h; +rt x3 = w - pcshiftx - widedmin*st; y3 = h; +% bottom of bowl +x7 = x1 - 3/2st; bot y7 = 0; +x9 = 1/2[x1,x3]; bot y9 = 0; +pth1 := z7{pdir}..{right}z9; +draw pth1; +%% left stem bottom +x81 = x1; y81 = - h; +z2 = (z1--z81) intersectionpoint pth1; +draw_upcurlstem(1,2); +%% right stem +x4 = x3; y4 = 0; +x5 = x4; y5 = -1/4d; +lft x6 = x9; bot y6 = -d; +draw_updiamondstem(3,4,wided,widedmin,diawd,diang); +draw z6{pdir}..{up}z5--z4; +z3cd = 1/2[z3c,z3d]; +pth2 = z5--z3a--z3cd; +%% fill bowl bottom +x91 = x3; (z91-z9) = whatever*pdir; +draw z9--z91; + +%% decoration +z1tr = (rt x1, top y1); +x101 = x1tr + 2/3wided*st; +pickup stylus; +top y101 = h; +z103 = (x1tr,y101); +z181 = (x101,-w); +z102 = (z101--z181) intersectionpoint pth1; +draw z103--z101--z102; +x105 = x101; y105 = 1/3[y102,y101]; +x185 = 2w; (z185-z105) = whatever*pdir; +z106 = (z105--z185) intersectionpoint pth2; +z107 = (x105, y105-angdec); +x187 = x185; y187-y185 = y107-y105; +z108 = (z107--z187) intersectionpoint pth2; +draw z105--z106; draw z107--z108; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,10,100,101,102,181); +endchar; % end "Y" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{Z} +% The letter `Z'. +% \begin{macrocode} +cmchar "PGOTH letter Z"; +beginchar("Z", 2cap_sb#+hstretch*((5)*stem_width#), + caprat*x_height#, 0); +adjust_fit(0,0); +numeric n[]; +numeric st; st := stem_width; +path pth[]; +pcshiftx := cap_sb; +pickup quill; +%% top bar ends +top y12 = h; +n1 := h - y12; +lft x1 = pcshiftx; rt x2 = w-pcshiftx-perpdec; +%%y1 = y12-n1; y2=y12+n1; +y1 = y12-n1/2; y2=y12; +x12 = 1/2[x1,x2]; +pth1 := z1{pdir}..z12{right}..z2{pdir}; +x102 = rt x2; y102 = top y2; x202 = x102+perpdec; y202=y102; +%% bottom bar ends +bot y34 = 0; +x3=x1+perpdec; rt x4= w-pcshiftx; +y3=y34-n1/2; y4=y34; +x34 = 1/2[x3,x4]; +pth2 := z3{pdir}..z34{right}..z4{pdir}; +x203 = lft x3; y203 = bot y3; x103 = x203-perpdec; y103=y203; +%% centre bar +z5 = (x1,1/2[y1,y3]); z6 = (x4,1/2[y2,y4]); z56 = 1/2[z5,z6]; +pth3 := z5{pdir}..z56{right}..z6{pdir}; +draw pth1; draw pth2; % bars +draw pth3; +%% decorations +pickup stylus; +draw z102--z103; draw z202--z203; +unfill z102--z103--z203--z202--cycle; +draw z102--z103; draw z202--z203; +ductus:=false; +penlabels(1,2,3,4,5,6,10o,10i,20o,20i,100); +endchar; % end "Z" + +% \end{macrocode} +% \end{routine} +% +% +% +% The end of this file +% \begin{macrocode} +% +% \end{macrocode} +% +% +% +% \subsection{The punctuation file} +% +% The main punctuation marks are defined in this file. +% +% \begin{macrocode} +%<*punct> +% PGOTHPUNCT.MF This file contains punctuation marks + +% \end{macrocode} +% +% +% \begin{routine}{!} +% The `!' character, which had not been invented at this time. +% \begin{macrocode} + +cmchar "Exclamation mark"; +beginchar("!", 2sb#+hstretch*(thick#+trijut#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +x1=w/2; top y1 = h; +z3=(x1, 1/2dot_size); +z2=(x1, y3+3/2dot_size); +draw z1--z2; +draw_pdot(3,dot_size); +penlabels(1,2,3); + +endchar; % end of "!" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{?} +% The `?' character, which had not been invented at this time. +% \begin{macrocode} + +cmchar "Question mark"; +beginchar("?", 2sb#+hstretch*((3+wided+widedmin)*stem_width#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pickup quill; +n1 := w-2pcshiftx; % actual character width +n2 := 1/3h; % height of top bowl +n3 := n2; % height of bottom bowl +z5=(1/2w,1/2dot_size); +x45 = x5; y45=y5+3/2dot_size; +lft x1 = pcshiftx; y1 = 3/4h; +x2 = 1/2w; top y2 = h; +rt x3 = w-pcshiftx; y3 = 11/16h; + +x4 = x45; +(z3-z4) = whatever*pdir; + +%%ductus:= true; +if ductus: + pickup stylus; +fi +%%draw z1..z2{right}..z3{down}..z4{down}; +draw z1--z2--z3--z4--z45; +draw_pdot(5, dot_size); +penlabels(1,2,3,4,45,5); +endchar; % end of "?" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{,} +% The `,' character. +% \begin{macrocode} + +cmchar "Comma"; +beginchar(",",2sb#+hstretch*(comma_width#+dot_size#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb; +x1=w-pcshiftx-(0.5hstretch*dot_size); y1=1/2dot_size; +draw_pcomma(1,dot_size,comma_width); +penlabels(1); +endchar; % end of "," + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{.} +% The `.' character. +% \begin{macrocode} + +cmchar "Period"; +beginchar(".",2sb#+hstretch*(dot_size#),x_height#,0); +pcshiftx:=sb; +z1=(w/2, 1/2dot_size); +draw_pdot(1,dot_size); +penlabels(1); +endchar; % end of "." + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{:} +% The `:' character. +% \begin{macrocode} + +cmchar "Colon"; +beginchar(":",2sb#+hstretch*(dot_size#),x_height#,0); +pcshiftx:=sb; +x1=x2=w/2; y1=3/4h; y2=1/4h; +draw_pdot(1,dot_size); +draw_pdot(2,dot_size); +penlabels(1,2); +endchar; % end ":" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{;} +% The `;' character. +% \begin{macrocode} + +cmchar "Semicolon"; +beginchar(";",2sb#+hstretch*(comma_width#+dot_size#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb; +x1=x2=w-pcshiftx-(0.5hstretch*dot_size); y1=3/4h; y2=1/2dot_size; +draw_pdot(1,dot_size); +draw_pcomma(2,dot_size,comma_width); +penlabels(1,2); +endchar; % end of ";" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{'} +% The `'' character. +% \begin{macrocode} + +cmchar "Apostrophe"; +beginchar("'",2sb#+hstretch*(comma_width#+dot_size#),4/3x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb; +x1=w-pcshiftx-(0.5hstretch*dot_size); y1=h; +draw_pcomma(1,dot_size,comma_width); +penlabels(1); +endchar; % end of "'" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{`} +% The ``' character. +% \begin{macrocode} + +cmchar "Reverse apostrophe"; +beginchar("`",2sb#+hstretch*(comma_width#+dot_size#),4/3x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb; +x1=pcshiftx+(0.5hstretch*dot_size); y1=h; +draw_plq(1,dot_size,comma_width); +penlabels(1); +endchar; % end of "`" + +% \end{macrocode} +% \end{routine} +% +% The end of this file. +% \begin{macrocode} +% +% \end{macrocode} +% +% +% \subsection{The ligatures and dashes file} +% +% The ligatured letters, punctuation marks and dashes are defined in this file. +% \begin{macrocode} +%<*lig> +% PGOTHLIG.MF Gothic Prescius ligatured letters, punctation and dashes + +% \end{macrocode} +% First the ligtables. +% \begin{macrocode} + +ligtable "`": "`"=:oct"134"; +ligtable "'": "'"=:oct"042"; %% , "?" kern 2u#, "!" kern 2u#; + +ligtable "-": "-"=:oct"173"; +ligtable oct"173": "-"=:oct"174"; + +%%%%ligtable "c": "t"=:oct"014"; +ligtable "s": "t"=:oct"015"; + +% \end{macrocode} +% +% +% +% \begin{routine}{st} +% The `st' ligature. +% \begin{macrocode} + +cmchar "PGOTH st ligature"; +beginchar(oct"015", 2sb#+hstretch*((1 + narrowd + 3)*stem_width#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +numeric st; st := stem_width; +n1 := h/ascratio; % x-height +pickup quill; +%% the S (long) +lft x1 = pcshiftx + narrowd*st; +x2 = x1; y2 = 0; y1 = h - (top y2 - bot y2); +z12 = 1/2[z1,z2]; +draw_updiamondstem(1,12,narrowd, 1/4narrowdmin, diawd, diang); +%draw_downdiamondstem(12,2,narrowd, narrowdmin, diawd, diang); +draw z12--z2; draw_flat_foot(2); +%% the T +%% bar +lft x23 = rt x1 + pcshiftx; top y23 = n1; +rt x24 = w-pcshiftx; y24=y23; +draw z23--z24; +%% stem +lft x21 = rt x23; top y21 = h; +x22 = x21; y22 = 0; +%draw_downdiamondstem(21,22,narrowd,narrowdmin,diawd,diang); +draw z21--z22; draw_flat_foot(22); +%% the ligature +x11=x1; top y11=h; +draw z12--z11--z21; +ductus:=false; +penlabels(1,2,3,4,5,11,21,22,23,24,100); +%% end "t" +endchar; %% end st ligature + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{''} +% The `''' ligature. +% \begin{macrocode} + +cmchar "Closing quotes"; +beginchar(oct"042",2sb#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb; +x1=w-pcshiftx-(0.5hstretch*dot_size); y1=y2=h; +x2=x1-(2hstretch*dot_size); +draw_pcomma(1,dot_size,comma_width); % right +draw_pcomma(2,dot_size,comma_width); % left +penlabels(1,2); +endchar; % end of "''" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{``} +% The ```' ligature. +% \begin{macrocode} + +cmchar "Opening quotes"; +beginchar(oct"134",2sb#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb; +x1=pcshiftx+(0.5hstretch*dot_size); y1=y2=h; +x2=x1+(2hstretch*dot_size); +draw_plq(1,dot_size,comma_width); % left +draw_plq(2,dot_size,comma_width); % right +penlabels(1,2); +endchar; % end of "``" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{-} +% The `-' (hyphen) character. +% \begin{macrocode} + +cmchar "Hyphen"; +beginchar("-",sb#+hstretch*((2)*stem_width#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb/2; +pickup threequarterquill; +lft x21=pcshiftx; rt x22=w-pcshiftx; y21=y22=1/2h; +draw z21--z22; +%%draw_roundserif(21,22,srad); draw_flatserif(22,21,srad); +penlabels(1,2); +endchar; % end of "-" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{--} +% The `--' (en-dash) ligature. +% \begin{macrocode} + +cmchar "En dash"; +beginchar(oct"173",sb#+hstretch*((3)*stem_width#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb/2; +pickup threequarterquill; +lft x21=pcshiftx; rt x22=w-pcshiftx; y21=y22=1/2h; +draw z21--z22; +%%draw_roundserif(21,22,srad); draw_flatserif(22,21,srad); +penlabels(1,2); +endchar; % end of "--" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{---} +% The `---' (em dash) ligature. The em dash is twice the width of the en dash. +% \begin{macrocode} + +cmchar "Em dash"; +beginchar(oct"174",sb#+hstretch*((6)*stem_width#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb/2; +pickup threequarterquill; +lft x21=pcshiftx; rt x22=w-pcshiftx; y21=y22=1/2h; +draw z21--z22; +%%draw_roundserif(21,22,srad); draw_flatserif(22,21,srad); +penlabels(1,2); +endchar; % end of "---" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{&} +% The ampersand (which is really an `et' ligature). +% In this case, a `t' with one thin bar. +% \begin{macrocode} + +cmchar "PGOTH ampersand"; +beginchar("&", 2sb#+hstretch*((7/2)*stem_width#), asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +numeric st; st := stem_width; +pickup quill; +%% bar +lft x3 = pcshiftx; top y1 = h; +top y3 = bot y1; +rt x4 = w-pcshiftx; y4=y3; +draw z3--z4; +%% stem +lft x1 = rt x3; +x2 = x1; y2 = 0; +%draw_downdiamondstem(1,2,wided,widedmin,diawd,diang); +draw z1--z2; draw_flat_foot(2); +%% E bars +n1 = 1/2[y3,y2a] + 1/2angdec; +pickup halfquill; +lft x11 = pcshiftx; rt x12 = w-pcshiftx; +%y11=y12=n1; +y11 = y12 = 1/2h; +x13 = x11; x14=x12; y13 = y14 = n1-angdec; +draw z11--z12; +%%draw z13--z14; +ductus:=false; +penlabels(1,2,3,4,5,6,11,12,13,14,100); +endchar; % end "&" + +% \end{macrocode} +% \end{routine} +% +% +% The end of this file. +% \begin{macrocode} +% +% \end{macrocode} +% +% \subsection{The digits file} +% +% These are arabic digits in the style of the book-hand. They are a +% modern invention. +% +% \begin{macrocode} +%<*dig> +% PGOTHDIG.MF Program file for Gothic Prescius digits +% + +% \end{macrocode} +% +% +% +% \begin{routine}{1} +% The digit `1'. +% \begin{macrocode} +cmchar "PGOTH digit 1"; +beginchar("1", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +x1 = x2 = 1/2w; y1 = h; y2 = 0; +z12 = 1/2[z1,z2]; +draw_updiamondstem(1,12,1/2,1/2,diawd,diang); +%draw_downdiamondstem(12,2,1/2,1/2,diawd,diang); +draw z12--z2; draw_flat_foot(2); +penlabels(1,2,100); +endchar; % end "1" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{2} +% The digit `2'. +% \begin{macrocode} +cmchar "PGOTH digit 2"; +beginchar("2", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +numeric st; st := stem_width; +numeric n[]; +n1 := 1/2st; +pickup quill; +% stem +lft x1=pcshiftx+n1; top y1=h-2n1; +rt x3=w-pcshiftx-n1; y3=3/4h; +x2=1/2[x1,x3]; top y2= h; +% foot +x5= lft x1; bot y5=0; +x6= rt x3; y6=y5; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_wave(5,6,thin); % foot +draw z1--z2--z3--z5wl; % curve +ductus:=false; +penlabels(1,2,3,4,5,6,100); +endchar; % end "2" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{3} +% The digit `3'. +% \begin{macrocode} +cmchar "PGOTH digit 3"; +beginchar("3", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +numeric n[]; +numeric st; st := stem_width; +n1 := st; +pcshiftx := u; +pickup quill; +%% top +lft x1 = pcshiftx + n1; rt x3 = w - pcshiftx - n1; +x2 = 1/2[x1,x3]; x4 = 1/2[x1,x2]; +top y2 = h; y3 = 12/16h; +(z2-z1) = whatever*pdir; +(z3-z4) = whatever*pdir; +%% bottom +x5 = 12/16[x4, rt x4]; x6 = x3; x7 = x2; +x18 = x1-n1; x17 = x7; +bot y7 = thin; +y5 = 12/16[y4, top y4]; +(z5-z6) = whatever*(z2-z3); +bot y18 = 0; bot y17 = 0; + +draw z1--z2--z3--z4; % top +draw_wave(18,17,thin); +draw z5--z6--z18wr; % bottom +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,10,17,18,100); +endchar; % end "3" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{4} +% The digit `4'. +% \begin{macrocode} +cmchar "PGOTH digit 4"; +beginchar("4", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +numeric st; st := stem_width; +numeric n[]; +pcshiftx := u; +pickup quill; +% the stem +x1=x2=w-pcshiftx-(wided+widedmin)*st; +y1=h; y2=0; +% the crossbar +lft x3=pcshiftx; y3=7/16h; +rt x4=w-pcshiftx; y4=y3; +%%ductus:=true; +if ductus: + pickup stylus; +fi +%draw_downdiamondstem(1,2,wided,widedmin,diawd,diang); % stem +draw z1--z2; draw_flat_foot(2); +draw z3--z4; % horizontal +draw z1--z3; % diagonal +ductus:=false; +penlabels(1,2,3,4,100); +endchar; % end "4" + +% \end{macrocode} +% \end{routine} +% +% +% +% \begin{routine}{5} +% The digit `5'. +% \begin{macrocode} +cmchar "PGOTH digit 5"; +beginchar("5", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +numeric n[]; +numeric st; st := stem_width; +n1 := st; +pickup quill; +% for the top +rt x1=w-pcshiftx; top y1=h; +lft x2=pcshiftx+n1; y2=y1; +% the S curve +x3=x2; y3=0.5h; +x4=0.5[x1,x3]; y4=0.5[y3,y5]; +rt x5=w-pcshiftx; y5=1/2[thick,y3]; +x6=w/2; bot y6=0; +%%x16 = 12/16[x3,x5]; +x16 = lft x5; +bot y16 = 0; +lft x17=pcshiftx; bot y17=0; +z167 = 1/2[z16,z17]; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_wave(2,1,thin); % top squiggle +draw z2wl--z3; % vertical +%%draw_wave(17,16,thin); % foot +draw z17{pdir}..{pdir}z16; % foot +draw z3{pdir}..z5{down}..z16; % curve +ductus:=false; +penlabels(1,2,3,4,5,6,7,100); +endchar; % end "5" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{6} +% The digit `6'. +% \begin{macrocode} +cmchar "PGOTH digit 6"; +beginchar("6", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +numeric st; st := stem_width; +n1 := 24/16st; +pickup quill; +%% bottom left +x1 = x4 = w/2; top y1 = h - thick; bot y4 = 0; +x2 = x3 = x1 + n1; x5 = x6 = x1 - n1; +n2 = top y1; +y2 = y6 = 3/4[y4,y1]; +y3 = y5 = 1/4[y4,y1]; +%% bowl +draw z1--z2--z3--z4--z5--z6--cycle; +%% head +x11 = x5; top y11 = h; +x12 = x2; y12 = y11; +draw_wave(11,12,thin); +x16 = x11; y16 = y11-thin; +draw z6--z16; +penlabels(1,2,3,4,5,6,12,100); +endchar; % end "6" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{7} +% The digit `7'. +% \begin{macrocode} +cmchar "PGOTH digit 7"; +beginchar("7", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% top bar +lft x1=pcshiftx; +rt x2=w-pcshiftx; +top y1=top y2=h; +% bowed leg +x4=w/2; bot y4=0; +x3=0.5[x2,x4]-3thin; y3=0.5[y2,y4]; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_wave(1,2,thin); % top bar +draw z1wr..z3..z4; +draw_flat_foot(4); +ductus:=false; +penlabels(1,2,3,4,5,6,100); +endchar; % end "7" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{8} +% The digit `8'. +% \begin{macrocode} +cmchar "PGOTH digit 8"; +beginchar("8", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +numeric alpha; alpha:=1; +pickup quill; +lft x1= pcshiftx; rt x3=w-pcshiftx; top y1 = y3 = 3/4h; +rt x2 = lft x4 = w/2; top y2=h; bot y4=0; +x5=x2; y5=h/2+2o; +lft x11=pcshiftx; rt x13=w-pcshiftx; y11 = bot y13 = 1/4h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +%%draw z1..z2..z3..z5..z11..z4..z13..z5..cycle; +draw z1--z2--z3--z11--z4--z13--cycle; +ductus:=false; +penlabels(1,2,3,4,5,11,13,100); +endchar; % end "8" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{9} +% The digit `9'. +% \begin{macrocode} +cmchar "PGOTH digit 9"; +beginchar("9", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +numeric st; st := stem_width; +n1 := 24/16st; +pickup quill; +%% bottom left +x1 = x4 = w/2; top y1 = h; bot y4 = thick; +x2 = x3 = x1 + n1; x5 = x6 = x1 - n1; +y2 = y6 = 3/4[y4,y1]; +y3 = y5 = 1/4[y4,y1]; +%% bowl +draw z1--z2--z3--z4--z5--z6--cycle; +%% foot +x11 = x5; bot y11 = 0; +x12 = x2; y12 = y11; +draw_wave(11,12,thin); +x13 = x12; y13 = y12+thin; +draw z3--z13; +penlabels(1,2,3,4,5,6,12,100); +endchar; % end "9" + + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{0} +% The digit `0'. +% \begin{macrocode} +cmchar "PGOTH digit 0"; +beginchar("0", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +numeric st; st := stem_width; +n1 := 24/16st; +pickup quill; +%% bottom left +x1 = x4 = w/2; top y1 = h; bot y4 = 0; +x2 = x3 = x1 + n1; x5 = x6 = x1 - n1; +y2 = y6 = 3/4h; +y3 = y5 = 1/4h; + +draw z1--z2--z3--z4--z5--z6--cycle; + +penlabels(1,2,3,4,5,6,12,100); +endchar; % end "0" + +% \end{macrocode} +% \end{routine} +% +% +% The end of this file. +% \begin{macrocode} +% +% \end{macrocode} +% +% +% \section{The font definition files} \label{sec:fd} +% +% The font comes in normal and bold weights only. +% +% \begin{macrocode} +%<*fdot1> +\DeclareFontFamily{OT1}{pgoth}{} + \DeclareFontShape{OT1}{pgoth}{m}{n}{ <-8.5> pgoth7 <8.5-15> pgoth10 <15-> pgoth17 }{} + \DeclareFontShape{OT1}{pgoth}{m}{sl}{ <-> sub * pgoth/m/n }{} + \DeclareFontShape{OT1}{pgoth}{m}{it}{ <-> sub * pgoth/m/n }{} + \DeclareFontShape{OT1}{pgoth}{m}{sc}{ <-> sub * pgoth/m/n }{} + \DeclareFontShape{OT1}{pgoth}{m}{u}{ <-> sub * pgoth/m/n }{} + \DeclareFontShape{OT1}{pgoth}{bx}{n}{ <-15> pgothb10 <15-> pgothb17 }{} + \DeclareFontShape{OT1}{pgoth}{bx}{it}{ <-> sub * pgoth/bx/n }{} + \DeclareFontShape{OT1}{pgoth}{bx}{sl}{ <-> sub * pgoth/bx/n }{} + \DeclareFontShape{OT1}{pgoth}{b}{n}{ <-> sub * pgoth/bx/n }{} +% +% \end{macrocode} +% +% +% \begin{macrocode} +%<*fdt1> +\DeclareFontFamily{T1}{pgoth}{} + \DeclareFontShape{T1}{pgoth}{m}{n}{ <-8.5> pgoth7 <8.5-15> pgoth10 <15-> pgoth17 }{} + \DeclareFontShape{T1}{pgoth}{m}{sl}{ <-> sub * pgoth/m/n }{} + \DeclareFontShape{T1}{pgoth}{m}{it}{ <-> sub * pgoth/m/n }{} + \DeclareFontShape{T1}{pgoth}{m}{sc}{ <-> sub * pgoth/m/n }{} + \DeclareFontShape{T1}{pgoth}{m}{u}{ <-> sub * pgoth/m/n }{} + \DeclareFontShape{T1}{pgoth}{bx}{n}{ <-15> pgothb10 <15-> pgothb17 }{} + \DeclareFontShape{T1}{pgoth}{bx}{it}{ <-> sub * pgoth/bx/n }{} + \DeclareFontShape{T1}{pgoth}{bx}{sl}{ <-> sub * pgoth/bx/n }{} + \DeclareFontShape{T1}{pgoth}{b}{n}{ <-> sub * pgoth/bx/n }{} +% +% \end{macrocode} +% +% \section{The package code} \label{sec:code} +% +% \subsection{The \Lpack{pgothic} package} +% +% The \Lpack{pgothic} package is for typesetting short pieces of text +% in the \thisfont{} fonts. +% +% Announce the name and version of the package, which requires +% \LaTeXe{}. +% \begin{macrocode} +%<*usc> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{pgothic}[2002/12/30 v1.0 package for Gothic Prescius fonts] +% \end{macrocode} +% +% \begin{macro}{\Tienc} +% A macro for testing the value of |\encodingdefault|. +% \begin{macrocode} +\providecommand{\Tienc}{T1} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\pgothfamily} +% Selects the \thisfont{} font family in the OT1 or T1 encoding. +% \begin{macrocode} +\ifx\Tienc\encodingdefault + \newcommand{\pgothfamily}{\usefont{T1}{pgoth}{m}{n}} +\else + \newcommand{\pgothfamily}{\usefont{OT1}{pgoth}{m}{n}} +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\textpgoth} +% Text command for the \thisfont{} font family. +% \begin{macrocode} +\DeclareTextFontCommand{\textpgoth}{\pgothfamily} +% \end{macrocode} +% \end{macro} +% +% The end of this package. +% \begin{macrocode} +% +% \end{macrocode} +% +% \subsection{The \Lpack{allpgoth} package} +% +% The \Lpack{allpgoth} package is intended for use when the entire document +% will be typeset in the book-hand. This is a minimal package. Because the +% book-hand should not contain arabic digits a fuller package would redefine +% anything numbered in \LaTeX{} to use roman instead of arabic numbering. +% Also, because of the large |\baselineskip| many other aspects of \LaTeX{} +% to do with vertical positioning should also be redefined. +% +% +% Announce the name and version of the package, which requires +% \LaTeXe{}. It also uses the \Lpack{pgothic} package. +% \begin{macrocode} +%<*uscall> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{allpgoth}[2002/12/30 v1.0 package for all Gothic Prescius fonts] +\RequirePackage{pgothic} +% \end{macrocode} +% +% \begin{macro}{\Tienc} +% A macro for testing the value of |\encodingdefault|. +% \begin{macrocode} +\providecommand{\Tienc}{T1} +% \end{macrocode} +% \end{macro} +% +% Redefine the default fonts to be \thisfont, which has only one family +% member. +% \begin{macro}{\rmdefault} +% \begin{macro}{\sfdefault} +% \begin{macro}{\ttdefault} +% \begin{macrocode} +\renewcommand{\rmdefault}{pgoth} +\renewcommand{\sfdefault}{pgoth} +\renewcommand{\ttdefault}{pgoth} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The `leading' in the book-hands is a function of the |x-height|, which is +% normally much +% greater than for the CMR fonts. I have borrowed code from Frank Jensen's +% \Lpack{beton} package~\cite{BETON} to do this. The |x-height| (in points) +% for the CMR +% fonts is given in Table~\ref{tab:cmrx}. Note that the CMR design sizes are +% 5--10, 12, and 17.28 points. The other values given are scaled from these +% figures. +% +% \begin{table} +% \centering +% \caption{The x heights of the CMR and \thisfont{} fonts} \label{tab:cmrx} +% \begin{tabular}{ccc} \hline +% Design & CMR & \thisfont \\ +% Size & X Height & X Height \\ \hline +% 5 & 2.14 & 3.00 \\ ^^A CMR skip = 6pt = 2.8 times +% 6 & 2.58 & 3.61 \\ ^^A CMR skip = 7pt = 2.7 times +% 7 & 3.00 & 4.20 \\ ^^A CMR skip = 8pt = 2.7 times +% 8 & 3.44 & 4.81 \\ ^^A CMR skip = 9.5pt = 2.8 times +% 9 & 3.86 & 5.40 \\ ^^A CMR skip = 11pt = 2.8 times +% 10 & 4.31 & 6.03 \\ ^^A CMR skip = 12pt = 2.8 times +% 11 & 4.74 & 6.64 \\ ^^A CMR skip = 13.6pt = 2.8 times +% 12 & 5.17 & 7.24 \\ ^^A CMR skip = 14.5pt = 2.8 times +% 14 & 6.03 & 8.44 \\ ^^A CMR skip = 18pt = 3.0 times +% 17 & 7.44 & 10.41 \\ ^^A CMR skip = 22pt = 3.0 times +% 20 & 8.75 & 12.25 \\ ^^A CMR skip = 25pt = 2.9 times +% 25 & 10.94 & 15.32 \\ ^^A CMR skip = 30pt = 2.7 times +% \hline +% \end{tabular} +% \end{table} +% +% \begin{macro}{\pgoth@baselineskip@table} +% A table of the normal font sizes and the corresponding baselineskip. +% The distance between baselines for \thisfont{} is over twice +% the |x-height|. ^^A actually 2.5 times to nearest half point +% +% \begin{macrocode} +\newcommand{\pgoth@baselineskip@table}{% + <\@vpt>7.5% + <\@vipt>9.0% + <\@viipt>10.5% + <\@viiipt>12.0% + <\@ixpt>13.5% + <\@xpt>15.0% + <\@xipt>16.5% + <\@xiipt>18.0% + <\@xivpt>21.0% + <\@xviipt>26.0% + <\@xxpt>30.5% + <\@xxvpt>38.5} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\pgoth@new@setfontsize} +% This is a macro that replaces the |\@setfontsize| macro which is called by +% the font size changing commands. +% \begin{macrocode} +\newcommand{\pgoth@new@setfontsize}[3]{% + \edef\@tempa{\def\noexpand\@tempb####1<#2}% + \@tempa>##2<##3\@nil{\def\pgoth@baselineskip@value{##2}}% + \edef\@tempa{\noexpand\@tempb\pgoth@baselineskip@table<#2}% + \@tempa><\@nil + \ifx\pgoth@baselineskip@value\@empty + \def\pgoth@baselineskip@value{#3}% + \fi + \pgoth@old@setfontsize{#1}{#2}\pgoth@baselineskip@value} +% \end{macrocode} +% \end{macro} +% +% We had better give an author a means of using The Computer Modern fonts +% if necessary. +% +% \begin{macro}{\cmrfamily} +% \begin{macro}{\cmssfamily} +% \begin{macro}{\cmttfamily} +% These macros select the Computer Modern Roman, Sans, and Typewriter +% font families in either the T1 or OT1 encodings. +% \begin{macrocode} +\ifx\Tienc\encodingdefault + \providecommand{\cmrfamily}{\usefont{T1}{cmr}{m}{n}} + \providecommand{\cmssfamily}{\usefont{T1}{cmss}{m}{n}} + \providecommand{\cmttfamily}{\usefont{T1}{cmtt}{m}{n}} +\else + \providecommand{\cmrfamily}{\usefont{OT1}{cmr}{m}{n}} + \providecommand{\cmssfamily}{\usefont{OT1}{cmss}{m}{n}} + \providecommand{\cmttfamily}{\usefont{OT1}{cmtt}{m}{n}} +\fi +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\textcmr} +% Text command for the Computer Modern Roman font family. +% \begin{macrocode} +\DeclareTextFontCommand{\textcmr}{\cmrfamily} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\textcmss} +% Text command for the Computer Modern Sans font family. +% \begin{macrocode} +\DeclareTextFontCommand{\textcmss}{\cmssfamily} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\textcmtt} +% Text command for the Computer Modern Typewriter font family. +% \begin{macrocode} +\DeclareTextFontCommand{\textcmtt}{\cmttfamily} +% \end{macrocode} +% \end{macro} +% +% +% At the start of the document, change the |\@setfontsize| macro and call +% the normal font to implement the change. +% \begin{macrocode} +\AtBeginDocument{% + \let\pgoth@old@setfontsize=\@setfontsize + \let\@setfontsize=\pgoth@new@setfontsize} +\AtBeginDocument{\normalsize} +% \end{macrocode} +% +% +% The end of this package. +% \begin{macrocode} +% +% \end{macrocode} +% +% +% +% +% +% \Finale +% \PrintIndex +% +\endinput + +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} + + diff --git a/Master/texmf-dist/source/fonts/bookhands/pgothic.ins b/Master/texmf-dist/source/fonts/bookhands/pgothic.ins new file mode 100644 index 00000000000..dc0ee1705c5 --- /dev/null +++ b/Master/texmf-dist/source/fonts/bookhands/pgothic.ins @@ -0,0 +1,101 @@ +%% +%% pgothic.ins +%% Copyright 1999 Peter R. Wilson +%% +%% This program is provided under the terms of the +%% LaTeX Project Public License distributed from CTAN +%% archives in directory macros/latex/base/lppl.txt. +%% +%% Author: Peter Wilson (CUA) +%% now at: peter.r.wilson@boeing.com +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\batchfile{pgothic.ins} +\input docstrip.tex +\preamble + + Copyright 1999 Peter R. Wilson + + This program is provided under the terms of the + LaTeX Project Public License distributed from CTAN + archives in directory macros/latex/base/lppl.txt. + +Author: Peter Wilson (CUA) + now at: peter.r.wilson@boeing.com + +\endpreamble + +\keepsilent + +%%% \Msg{*** Generating the driver file ***} +%%% \generateFile{pgothic.drv}{t}{\from{pgothic.dtx}{driver}} + +\Msg{*** Generating the Metafont files ***} + +\usepostamble\empty +\generateFile{pgoth7.mf}{t}{\from{pgothic.dtx}{base7}} +\generateFile{pgoth10.mf}{t}{\from{pgothic.dtx}{base10}} +\generateFile{pgoth17.mf}{t}{\from{pgothic.dtx}{base17}} +\generateFile{pgothb7.mf}{t}{\from{pgothic.dtx}{base7b}} +\generateFile{pgothb10.mf}{t}{\from{pgothic.dtx}{base10b}} +\generateFile{pgothb17.mf}{t}{\from{pgothic.dtx}{base17b}} +\generateFile{pgothl.mf}{t}{\from{pgothic.dtx}{min}} +\generateFile{pgothu.mf}{t}{\from{pgothic.dtx}{maj}} +\generateFile{pgothtitle.mf}{t}{\from{pgothic.dtx}{mfd}} +\generateFile{pgothpunct.mf}{t}{\from{pgothic.dtx}{punct}} +\generateFile{pgothlig.mf}{t}{\from{pgothic.dtx}{lig}} +\generateFile{pgothdig.mf}{t}{\from{pgothic.dtx}{dig}} + +\Msg{*** Generating the Font Definition files ***} +\usepostamble\defaultpostamble + +\generateFile{ot1pgoth.fd}{t}{\from{pgothic.dtx}{fdot1}} +\generateFile{t1pgoth.fd}{t}{\from{pgothic.dtx}{fdt1}} + +\Msg{*** Generating the LaTeX2e package files ***} + +\generateFile{pgothic.sty}{t}{\from{pgothic.dtx}{usc}} +\generateFile{allpgoth.sty}{t}{\from{pgothic.dtx}{uscall}} + +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into directories searched by TeX:} +\Msg{*} +\Msg{* Move these into the font source area:} +\Msg{* \space\space pgoth7.mf} +\Msg{* \space\space pgoth10.mf} +\Msg{* \space\space pgoth17.mf} +\Msg{* \space\space pgothb7.mf} +\Msg{* \space\space pgothb10.mf} +\Msg{* \space\space pgothb17.mf} +\Msg{* \space\space pgothl.mf} +\Msg{* \space\space pgothu.mf} +\Msg{* \space\space pgothtitle.mf} +\Msg{* \space\space pgothpunct.mf} +\Msg{* \space\space pgothlig.mf} +\Msg{* \space\space pgothdig.mf} +\Msg{*} +\Msg{* Move these into the LaTeX macro area:} +\Msg{* \space\space ot1pgoth.fd} +\Msg{* \space\space t1pgoth.fd} +\Msg{* \space\space pgothic.sty} +\Msg{* \space\space allpgoth.sty} +\Msg{*} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* `.dtx' through LaTeX.} +\Msg{* Process any name.idx file by:} +\Msg{* \space\space\space\space makeindex -s gind.ist name} +\Msg{* Process any name.glo file by:} +\Msg{* \space\space\space\space makeindex -s gglo.ist -o name.gls name.glo} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} + +\endinput diff --git a/Master/texmf-dist/source/fonts/bookhands/rotunda.dtx b/Master/texmf-dist/source/fonts/bookhands/rotunda.dtx new file mode 100644 index 00000000000..abd34224644 --- /dev/null +++ b/Master/texmf-dist/source/fonts/bookhands/rotunda.dtx @@ -0,0 +1,4959 @@ +% \iffalse meta-comment +% +% rotunda.dtx +% Copyright 1999 Peter R. Wilson +% +% This program is provided under the terms of the +% LaTeX Project Public License distributed from CTAN +% archives in directory macros/latex/base/lppl.txt. +% +% Author: Peter Wilson (CUA) (now at: peter.r.wilson@boeing.com) +% +% If you do not have the docmfp package (available from CTAN in +% tex-archive/macros/latex/contrib/supported), comment out the +% \usepackage{docmfp} line below and uncomment the line following it. +% +%<*driver> +\documentclass{ltxdoc} +\usepackage{docmfp} +%%%%%% \providecommand{\DescribeVariable}[1]{} \newenvironment{routine}[1]{}{} +\EnableCrossrefs +\CodelineIndex +%% comment out next line to show code +\OnlyDescription +\setcounter{StandardModuleDepth}{1} +\begin{document} + \DocInput{rotunda.dtx} +\end{document} +% +% +% \fi +% +% \CheckSum{134} +% +% \DoNotIndex{\',\.,\@M,\@@input,\@addtoreset,\@arabic,\@badmath} +% \DoNotIndex{\@centercr,\@cite} +% \DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue} +% \DoNotIndex{\@input,\@ixpt,\@m} +% \DoNotIndex{\@minus,\@mkboth,\@ne,\@nil,\@nomath,\@plus,\@set@topoint} +% \DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb} +% \DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt} +% \DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt} +% \DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace} +% \DoNotIndex{\advance,\Alph,\alph} +% \DoNotIndex{\arabic,\ast,\begin,\begingroup,\bfseries,\bgroup,\box} +% \DoNotIndex{\bullet} +% \DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption} +% \DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass} +% \DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\endtrivlist} +% \DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup} +% \DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter} +% \DoNotIndex{\fbox} +% \DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef} +% \DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule} +% \DoNotIndex{\hsize,\hskip,\hspace,\hss,\if@tempswa,\ifcase,\or,\fi,\fi} +% \DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\fi,\fi,\fi,\fi,\fi} +% \DoNotIndex{\input} +% \DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark} +% \DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright} +% \DoNotIndex{\month,\newcommand,\newcounter,\newenvironment} +% \DoNotIndex{\NeedsTeXFormat,\newdimen} +% \DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number} +% \DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\p@} +% \DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip} +% \DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions} +% \DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright} +% \DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font} +% \DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily,\roman} +% \DoNotIndex{\roman,\secdef,\selectfont,\setbox,\setcounter,\setlength} +% \DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space} +% \DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase} +% \DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt} +% \DoNotIndex{\viipt,\vipt,\vskip,\vspace} +% \DoNotIndex{\wd,\xiipt,\year,\z@} +% +% \changes{v1.0}{2002/12/30}{First public release} +% +% \def\fileversion{v1.0} +% \def\filedate{2002/12/30} +% \newcommand*{\Lpack}[1]{\textsf {#1}} ^^A typeset a package +% \newcommand*{\Lopt}[1]{\textsf {#1}} ^^A typeset an option +% \newcommand*{\file}[1]{\texttt {#1}} ^^A typeset a file +% \newcommand*{\Lcount}[1]{\textsl {\small#1}} ^^A typeset a counter +% \newcommand*{\pstyle}[1]{\textsl {#1}} ^^A typeset a pagestyle +% \newcommand*{\Lenv}[1]{\texttt {#1}} ^^A typeset an environment +% \newcommand*{\AD}{\textsc{ad}} +% \newcommand*{\thisfont}{Rotunda} +% +% \title{The \Lpack{Rotunda} fonts\thanks{This +% file has version number \fileversion, last revised +% \filedate.}} +% +% \author{% +% Peter Wilson\\ +% Catholic University of America \\ +% Now at \texttt{peter.r.wilson@boeing.com} +% } +% \date{\filedate} +% \maketitle +% \begin{abstract} +% The \Lpack{rotunda} and \Lpack{allrtnd} packages provide a set of +% Metafont \thisfont{} book-hands +% as used +% for manuscripts in the 13th to 15th centuries. This is one in a series +% of manuscript fonts. +% \end{abstract} +% \tableofcontents +% \listoftables +% +% +% +% +% \section{Introduction} +% +% The \Lpack{rotunda} and \Lpack{allrtnd} packages provide a Metafont~\cite{METAFONT} version +% of the \thisfont{} manuscript book-hand that was in use between about the +% eleventh and twelfth centuries~\AD. It is part of a project to provide fonts +% covering the major manuscript hands between the first century~\AD{} and +% the invention of printing. The principal resources used in this project +% are listed in the Bibliography. +% +% This manual is typeset according to the conventions of the +% \LaTeX{} \textsc{docstrip} utility which enables the automatic +% extraction of the \LaTeX{} macro source files~\cite{GOOSSENS94}. +% The \Lpack{docmfp} package is used for documenting the Metafont portions +% of the distribution~\cite{DOCMFP}. +% +% Section~\ref{sec:usc} describes the usage of the package. +% Commented code for the fonts is in Sections~\ref{sec:mf} and~\ref{sec:fd} +% and source code for the package is in Section~\ref{sec:code}. +% +% \subsection{Manuscript book-hands} +% +% Before the invention of printing all books were written by hand. The book-hands +% used by the scribes and copyists for the manuscripts changed as time +% went on. Table~\ref{tab:1} lists some of the common book-hands which were used +% between the 1st and 15th centuries. The later book-hands formed the basis of the +% fonts used by the early printers, which in turn form the basis of the printing +% fonts in use today. +% +% The manuscript book-hands were written with a broad nibbed reed or quill +% pen. Among the distinguishing characteristics of a hand, apart from the +% actual shape of the letters, are the angle of the pen (which controls the +% variation between thick and thin strokes) and the height of a letter compared +% to the width of the nib. The lower the ratio of the letter height to nib +% width, the more condensed is the script. The scripts also varied in their +% typical height. +% +% Table~\ref{tab:1} gives an `average' x-height for each +% script, which I obtained by measuring a sample of photographs of +% manuscripts written in the various hands. About a dozen examples +% of each book-hand were measured. This figure should not be taken too +% seriously. +% +% There was not a sharp division between the use of one hand and another. +% Many manuscripts exhibit a variety of hands in the same document. For example, +% the scribe writing in an Uncial hand may have used Roman Rustic letters +% for capitals. Usually the same pen was used for the two different scripts. +% +% Generally speaking, as a hand got older it became more embelished, and +% therefore took longer to write. As this happened a new hand would appear that +% was faster, and which would eventually make the earlier one obsolete. +% +% Many of the book-hands were single-cased; that is, they did not have an +% upper- and lower-case as we do nowadays in Western scripts. On the other +% hand, a script might be majuscule or minuscule. A \textit{majuscule} script +% is one, like our upper-case, where the letters are drawn between two lines +% and are of a uniform height with no ascenders or descenders. +% A \textit{minuscule} script, like our lower-case, is drawn between four lines +% and has ascenders and descenders. +% +% \begin{table} +% \centering +% \caption{The main manuscript book-hands} \label{tab:1} +% \begin{tabular}{lccccc} \hline +% Name & Century & x-height & Height & Pen & Normalised \\ +% & & (mm) & (nib widths) & angle & height \\ \hline +% Roman Rustic & 1--6 & 5.7 & 4--6 & 45 & 1.90 \\ +% Uncial & 3--6 & 4.1 & 4--5 & 30 & 1.37 \\ +% Half Uncial & 3--9 & 3.2 & 3--6 & 20--30 & 1.07 \\ +% Artificial Uncial & 6--10 & 4.2 & 3--6 & 10 & 1.40 \\ +% Insular majuscule & 6--9 & 4.2 & 5 & 0--20 & 1.40 \\ +% Insular minuscule & 6 onward & 4.1 & 5--6 & 45--70 & 1.37 \\ +% Carolingian minuscule & 8--12 & 3.0 & 3--5 & 45 & 1.00 \\ +% Early Gothic & 11--12 & 3.8 & 4--6 & 20--45 & 1.27 \\ +% Gothic Textura & 13--15 & 3.9 & 3--5 & 30--45 & 1.30 \\ +% Gothic Prescius & 13 onward & 3.3 & 4--5 & 45 & 1.10 \\ +% Rotunda & 13--15 & 3.2 & 4--6 & 30 & 1.07 \\ +% Humanist minuscule & 14 onward & 3.0 & 4--5 & 30--40 & 1.00 \\ \hline +% \end{tabular} +% \end{table} +% +% During the period under consideration arabic numerals were effectively +% not used. At the beginning they were unknown and even though some knew +% of them towards the end, the glyphs used for them are not recognisable --- +% to me they look somewhat like cryllic letters --- and each locality +% and time had its own highly individualistic rendering. The general rule +% when using one of these book-hands is to write all numbers using +% roman numerals. +% +% The Roman alphabet consisted of 23 capital letters --- the J, U and W +% were absent. The book-hands initially used both a `u' and a `v' interchangeably +% but by the 10th century the practice had become to use the `v' before a vowel +% and the `u' otherwise. The letter corresponding to the W sound appeared +% in England around the 7th century in +% the form of the runic \textit{wen} character and by about the 11th century +% the `w' chacter was generally used. The `J' is the newest letter of all, not +% appearing until about the mid 16th century. +% +% In the first century punctuation was virtually unknown, and typically +% would not even be any additional space between individual words, never +% mind denoting ends of sentences. Sometimes a dot at mid-height would be +% used as a word seperator, or to mark off the end of a paragraph. Effectively +% a text was a continuous stream of letters. By the time that printing was +% invented, though, all of our modern punctuation marks were being used. +% +% Among all these manuscript hands, the Carolingian minuscule is the +% most important as our modern fonts are based on its letter shapes, and it is +% also at this point in time where the division occured between the black letter +% scripts as used even today in Germany, and the lighter fonts used elesewhere. +% The Rotunda and Humanist minuscule hands were developed in Italy and were +% essentially a rediscovery of the Carolingian minusucle. Guthenberg took the +% Gothic scripts as the model for his types. Later printers, +% such as Nicholas Jenson of Venice, +% took the Humanist scripts as their models. +% +% +% \subsection{The \thisfont{} script} +% +% The Italians developed their own version of the Gothic hands which +% was more open than the Textura forms. Their script became to be called +% Rotunda and was in use in Italy until the Humanist hand came along. +% +% Ligatures disappeared, except of course the ampersand. The script +% was basically a miniscule but when capital letters were required each scribe +% seemed to do his own thing --- letters based on uncial, square capitals, or +% Carolingian forms might be used. +% +% \section{The \Lpack{rotunda} and \Lpack{allrtnd} packages} \label{sec:usc} +% +% The \thisfont{} font family is called |rtnd|. The font is supplied in both +% OT1 and T1 encodings. +% +% \subsection{The \Lpack{rotunda} 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{\rtndfamily} +% The |\rtndfamily| 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{\textrtnd} +% The command |\textrtnd{|\meta{text}|}| will typeset \meta{text} using the +% \thisfont{} fonts. +% +% \subsection{The \Lpack{allrtnd} 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{allrtnd} package automatically loads the \Lpack{rotunda} package, +% so its font commands are available if necessary. +% +% \StopEventually{ +% \bibliographystyle{alpha} +% \renewcommand{\refname}{Bibliography} +% \begin{thebibliography}{GMS94} +% \addcontentsline{toc}{section}{\refname} +% +% \bibitem[And69]{ANDERSON69} +% Donald M.~Anderson. +% \newblock {\em The Art of Written Forms: The Theory and Practice of Calligraphy}. +% \newblock Holt, Rinehart and Winston, 1969. +% +% \bibitem[Bol95]{BOLOGNA95} +% Giulia Bologna. +% \newblock {\em Illuminated Manuscripts: The Book before Gutenberg}. +% \newblock Crescent Books, 1995. +% +% \bibitem[Day95]{DAY95} +% Lewis F.~Day. +% \newblock {\em Alphabets Old \& New}. +% \newblock (3rd edition originally published by B.~T.~Batsford, 1910) +% \newblock Senate, 1995. +% +% \bibitem[Dro80]{DROGIN80} +% Marc Drogin. +% \newblock {\em Medieval Calligraphy: Its History and Technique}. +% \newblock Allenheld, Osmun \& Co., 1980. +% +% \bibitem[Dru95]{DRUCKER95} +% Johanna Drucker. +% \newblock {\em The Alphabetic Labyrinth}. +% \newblock Thames \& Hudson, 1995. +% +% \bibitem[Fir93]{FIRMAGE93} +% Richard A.~Firmage. +% \newblock {\em The Alphabet Abecedarium}. +% \newblock David R~Goodine, 1993. +% +% \bibitem[Fli98]{LETTRINE} +% Daniel Flipo. +% \newblock {\em The LETTRINE package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1998. +% +% \bibitem[Har95]{HARRIS95} +% David Harris. +% \newblock {\em The Art of Calligraphy}. +% \newblock DK Publishing, 1995. +% +% \bibitem[Jen95]{BETON} +% Frank Jensen. +% \newblock {\em The BETON package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1995. +% +% \bibitem[Joh71]{JOHNSTON75} +% Edward Johnston (ed. Heather Child). +% \newblock {\em Formal Penship and Other Papers}. +% \newblock Penthalic, 1971. +% +% \bibitem[Knu87]{CM} +% Donald E.~Knuth. +% \newblock {\em Computer Modern Typefaces}. +% \newblock Addison-Wesley, 1987. +% +% \bibitem[Knu92]{METAFONT} +% Donald E.~Knuth. +% \newblock {\em The METAFONTbook}. +% \newblock Addison-Wesley, 1992. +% +% \bibitem[GMS94]{GOOSSENS94} +% Michel Goossens, Frank Mittelbach, and Alexander Samarin. +% \newblock {\em The LaTeX Companion}. +% \newblock Addison-Wesley Publishing Company, 1994. +% +% \bibitem[Tho75]{THOMAS75} +% Alan G.~Thomas. +% \newblock {\em Great Books and Book Collectors}. +% \newblock Weidenfield and Nichoson, 1975. +% +% \bibitem[Wil99]{DOCMFP} +% Peter R.~Wilson. +% \newblock {\em The DOCMFP Package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1999. +% +% \bibitem[Wil99b]{ROMANNUM} +% Peter R.~Wilson. +% \newblock {\em The ROMANNUM Package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1999. +% +% \end{thebibliography} +% } +% +% \section{The Metafont code} \label{sec:mf} +% +% +% As previously noted, this work is part of a larger project to provide +% fonts covering the main manuscript book-hands. As such, one of the +% aims is to produce a coordinated set of fonts, especially as multiple +% hands might be used in a single document. +% +% Noting that the hands tend to be somewhat larger than the typical 10pt +% size (where the x-height is approximately 1.5mm) used for modern books, +% I have also designed the fonts +% at a larger than normal size, then applied some non-linear factors when reducing +% them down to a 10pt size. +% Further, I have used the height of the Carolingian minuscule as a +% normalising factor when deciding on the absolute height of any particular +% script. The x-height of the Carolingian font is made equal to the +% x-height of the Computer Modern Roman (CMR) font. +% +% Modern fonts are effectively drawn. That is, the outline of the letter is +% drawn carefully and the center is filled with ink. This is shown to good +% effect in the Metafont code for the Computer Modern fonts~\cite{CM}. +% In contrast, the manuscript letters were inked by single pen strokes in +% a calligraphic manner. I have tried to repeat this calligraphic style +% in the Metafont code. +% +% As much as possible I have tried to use parameter values from the +% Computer Modern Roman (CMR) fonts in order to reduce possible +% infelicities if the CM and manuscript fonts are used together. However, +% few of the CMR parameters are applicable to the calligraphic style. +% +% +% \subsection{The parameter file} +% +% We deal with the parameter files first, and start by announcing +% what they are for. The \thisfont{} font comes in three sizes and also as a normal +% and a bold font. +% \begin{macrocode} +%<*base7|base10|base17|base7b|base10b|base17b> +%%%% RTND7.MF Early Gothic at 7 point design size. +%%%% RTND10.MF Early Gothic at 10 point design size. +%%%% RTND17.MF Early Gothic at 17 point design size. +%%%% RTNDB7.MF Early Gothic Bold at 7 point design size. +%%%% RTNDB10.MF Early Gothic Bold at 10 point design size. +%%%% RTNDB17.MF Early Gothic 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 + +%font_identifier:="RTND"; font_size 7pt#; +%font_identifier:="RTND"; font_size 10pt#; +%font_identifier:="RTND"; font_size 17.28pt#; +%font_identifier:="RTNDB"; font_size 7pt#; +%font_identifier:="RTNDB"; font_size 10pt#; +%font_identifier:="RTNDB"; font_size 17.28pt#; + +% \end{macrocode} +% +% \DescribeVariable{jutstretch} +% The CMR scaling for lowercase serifs wrt 17pt size. +% \begin{macrocode} +% jutstretch:=1.19; +% jutstretch:=1.152; +% jutstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{stemstretch} +% The CMR scaling for lowercase stem widths wrt 17pt size. +% \begin{macrocode} +% stemstretch:=1.50; +% stemstretch:=1.31; +% stemstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{caprat} +% The scaling for `capitals' wrt `lowercase'. This is pretty much a guess +% (the ratio for CMR10 is 1.59). +% \begin{macrocode} + caprat:=1.5; % ratio of capital height to minuscule height +% \end{macrocode} +% +% \DescribeVariable{cap_jutstretch} +% The CMR scaling for uppercase serifs wrt 17pt size. +% \begin{macrocode} +% cap_jutstretch:=1.3; +% cap_jutstretch:=1.2; +% cap_jutstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{cap_stemstretch} +% The CMR scaling for uppercase stem width wrt 17pt size. +% \begin{macrocode} +% cap_stemstretch:=1.45; +% cap_stemstretch:=1.31; +% cap_stemstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{bfudge} +% Letter width scaling for bold font wrt normal font. +% \begin{macrocode} +% bfudge:=1.0; +% bfudge:=1.2; +% \end{macrocode} +% +% \DescribeVariable{szfudge} +% Width scaling wrt 17pt letter width. +% \begin{macrocode} +% szfudge:=1.18; +% szfudge:=1.0; +% szfudge:=1.0; +% \end{macrocode} +% +% \DescribeVariable{hstretch} +% Horizontal stretching factor wrt 17pt size letter width. +% \begin{macrocode} + hstretch:=szfudge*bfudge; +% \end{macrocode} +% +% \DescribeVariable{carol_height} +% The x-height of the Carolingian gothic font. +% \begin{macrocode} +% carol_height#:=108.5/36pt#; +% carol_height#:=155/36pt#; +% carol_height#:=268/36pt#; +% \end{macrocode} +% +% \DescribeVariable{vstretch} +% The height of this font wrt the Carolingian font. +% \begin{macrocode} + vstretch:=1.1; + +% \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} +% u#:=15.5/36pt#; +% u#:=20/36pt#; +% u#:=32.5/36pt#; +% u#:=17.9/36pt#; +% u#:=23/36pt#; +% 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 +% cap_serif_fit#:=3.5/36pt#; % extra sidebar near uppercase serifs +% cap_serif_fit#:=5/36pt#; % extra sidebar near uppercase serifs +% cap_serif_fit#:=8/36pt#; % extra sidebar near uppercase serifs +% letter_fit#:=0pt#; % extra space added to all sidebars +% letter_fit#:=0pt#; % extra space added to all sidebars +% letter_fit#:=-0.1pt#; % extra space added to all sidebars +% \end{macrocode} +% +% \DescribeVariable{sb} +% A length used for adjusting the side bearings of characters. +% This is normally |1/2u| but needs to be half that for this +% font, like the Gothics. +% \begin{macrocode} +% sb#:=1/4u#; % unit for side bearings +% sb#:=1/4u#; % unit for side bearings +% sb#:=1/4u#; % unit for side bearings + +% \end{macrocode} +% +% \DescribeVariable{cap_sb} +% A length used for adjusting the side bearings of uppercase characters. +% \begin{macrocode} +% cap_sb#:=2sb#; % unit for uppercase side bearings +% cap_sb#:=2sb#; % unit for uppercase side bearings +% cap_sb#:=2sb#; % unit for uppercase side bearings + +% \end{macrocode} +% +% \DescribeVariable{cap_height} +% The height of capital letters. +% \begin{macrocode} +% cap_height#:=172.2/36pt#; % height of caps +% cap_height#:=246/36pt#; % height of caps +% cap_height#:=425/36pt#; % height of caps +% \end{macrocode} +% +% \DescribeVariable{thickfudge} +% The reciprocal of the font height in nib widths. Normal font height +% is 6 nib widths and the bold font height is 5 nib widths. +% \begin{macrocode} +% thickfudge:=1/6; +% thickfudge:=1/5; +% \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:=35; % pen angle +% \end{macrocode} +% +% \DescribeVariable{ascratio} +% The height of lower case ascenders wrt |x_height|. +% \begin{macrocode} + ascratio:=6/4; +% \end{macrocode} +% +% \DescribeVariable{asc_height} +% The height of lower case ascenders. +% \begin{macrocode} + asc_height#:=ascratio*x_height#; +% \end{macrocode} +% +% \DescribeVariable{descratio} +% The depth of lower case descenders wrt |x_height|. +% \begin{macrocode} + descratio:=2/4; +% \end{macrocode} +% +% \DescribeVariable{desc_depth} +% The depth of lower case descenders. +% \begin{macrocode} + desc_depth#:=descratio*x_height#; +% \end{macrocode} +% +% \DescribeVariable{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} +% rule_thickness#:=.34pt#; +% rule_thickness#:=.4pt#; +% rule_thickness#:=.6pt#; + +% \end{macrocode} +% +% \DescribeVariable{jutfudge} +% Controls the protrusion of serifs. +% \begin{macrocode} +%%%jutfudge:= 3/4; +jutfudge:= 1/2; +% \end{macrocode} +% +% \DescribeVariable{jut} +% The lowercase serif protrusion. +% \begin{macrocode} +jut#:=jutstretch*jutfudge*thick#; +% \end{macrocode} +% +% \DescribeVariable{srad} +% |srad| with |0 < srad < 1| controls the serif radius. +% \begin{macrocode} +srad:=0.8; % was 0.5 +% \end{macrocode} +% +% \DescribeVariable{trijut} +% The lowercase triangular serif protrusion. +% \begin{macrocode} +trijut#:=0.75jutstretch*thick#; +% \end{macrocode} +% +% \DescribeVariable{clubjutfudge} +% The fractional protusion of a club serif. +% \begin{macrocode} +clubjutfudge:=1/2; +% \end{macrocode} +% +% \DescribeVariable{clubjut} +% The lowercase club serif protrusion. +% \begin{macrocode} +clubjut#:=jutstretch*clubjutfudge*thick#; +% \end{macrocode} +% +% \DescribeVariable{o} +% Amount of overshoot for curves (as in an `o'). Use CMR values. +% \begin{macrocode} +% o#:=5/36pt#; +% o#:=8/36pt#; +% 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 rtndtitle %% switch to the driver file + +% \end{macrocode} +% +% The end of this code section. +% \begin{macrocode} +% +% \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 RTNDTITLE.MF for the Early Gothic 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}{rotunda_font_setup} +% This macro contains the set up for the \thisfont{} fonts. +% \begin{macrocode} + +def rotunda_font_setup= % contains special stuff for rotunda fonts + define_pixels(side,half_height,carol_height,comma_width); + define_pixels(u,dot_size,letter_size,cap_height,width_adj,serif_fit, + cap_serif_fit,jut,clubjut,cap_jut,trijut); + define_pixels(fig_width); + define_whole_pixels(letter_fit,sb,cap_sb); + define_whole_vertical_pixels(body_height,asc_height,cap_height,x_height, + desc_depth,body_depth,fig_height); + define_corrected_pixels(o); + define_blacker_pixels(thick,thin); + let adjust_fit = normal_adjust_fit; +% \end{macrocode} +% \DescribeVariable{stylus} +% The pen for drawing the thinnest lines is |stylus|. +% \begin{macrocode} + pickup pencircle scaled thin; + stylus:=savepen; +% \end{macrocode} +% \DescribeVariable{thickstylus} +% The pen for drawing lines a bit thicker than the thinnest is |thickstylus|. +% \begin{macrocode} + pickup pencircle scaled (1.5thin); + thickstylus:=savepen; +% \end{macrocode} +% \DescribeVariable{quill} +% The normal calligraphic pen is |quill|. +% \begin{macrocode} + pickup pencircle xscaled thick yscaled thin rotated pangle; + quill:=savepen; + +% \end{macrocode} +% +% \DescribeVariable{threequarterquill} +% A pen with 3/4 of the width as quill (but with the same thinness). +% \begin{macrocode} + pickup pencircle xscaled 3/4thick yscaled thin rotated pangle; + threequarterquill := savepen; + +% \end{macrocode} +% +% \DescribeVariable{halfquill} +% A pen with 1/2 of the width as quill (but with the same thinness). +% \begin{macrocode} + pickup pencircle xscaled 1/2thick yscaled thin rotated pangle; + halfquill := savepen; + +% \end{macrocode} +% +% \DescribeVariable{quarterquill} +% A pen with 1/4 of the width as quill (but with the same thinness). +% \begin{macrocode} + pickup pencircle xscaled 1/4thick yscaled thin rotated pangle; + quarterquill := savepen; + +% \end{macrocode} +% +% +% \begin{macrocode} + numeric pcshiftx#; % x value of LHS of box wrt origin of char box + define_pixels(pcshiftx); + numeric sqxside#; % x size of the square + numeric sqyside#; % y size of the square + define_pixels(sqxside,sqyside); + +enddef; % end of rotunda_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 $0y$$: + 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 $0y$$: + 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 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; +rotunda_font_setup; + +% \end{macrocode} +% +% +% We generate letters, together with some punctuation and +% analphabetics. +% \begin{macrocode} + +input rtndl; % lower case +input rtndu; % capitals +input rtndpunct; % punctuation +input rtndlig; % the several dashes +input rtnddig; % 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. + +% +% \end{macrocode} +% +% \subsection{The code for normal letters} +% +% The following code is for the lower case characters. +% +% \begin{macrocode} +%<*min> +% RTNDL.MF Program file for Early Gothic lower case +% + +% \end{macrocode} +% +% +% \begin{routine}{a} +% The letter `a'. +% \begin{macrocode} +cmchar "RTND letter a"; +beginchar("a", 2sb#+hstretch*(9/16x_height#+jut#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pair pr[]; +pickup quill; +n1 := w - 2pcshiftx -jut; % effective letter width +% "stem" +x1=1/2w; top y1=h; +rt x2 = w-pcshiftx-jut; top y2 = bot y1; +x3 = x2; bot y3 = 0; +z4 = z3 shifted (jut*pdir); +pth1 := z1--z2--z3--z4; +% bowl +rt x6 = lft x3; bot y6 = 0; +lft x5 = pcshiftx; bot y5 = 1/4h; + +z15 = (lft x5, bot y5); z25 = (rt x5, top y5); +z7 = whatever[z15,z25] = whatever[z2,z3]; +x8 = x25; y8 = y25 + 1/2(y1-y7); + +%%ductus:=true; +if ductus: + pickup stylus; +else: + % draw stem + draw pth1; + % draw bowl + draw z5--z6; + pickup stylus; + draw z5--z7; + draw z1{-pdir}..z8..z7{pdir}; +fi +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 "RTND letter b"; +beginchar("b", 2sb#+hstretch*(11/16x_height#+jut#), + asc_height#, 0); +adjust_fit(0,0); +numeric n[]; +path pth[]; +pcshiftx := sb; +pickup quill; +n1:=w-2pcshiftx; % actual letter width +n2:=h/ascratio; % top of bowl +%%ductus:=true; +lft x1 = pcshiftx+jut; top y1=h; +x3 = x1; bot y3= thick; +rt x5 = w-pcshiftx; y5=1/2n2; +x4 = 1/2[x3,x5]; bot y4=0; +x6=1/2[x4,x5]; top y6=n2; +pth1 := z1..z3{down}..z4{right}.. z5{up}; +z98=(0,3/4n2); z99=(w,y98); +pth2 := z98--z99; +%z7 = pth1 intersectionpoint pth2; +z7=(x1,6/8n2); +if ductus: + pickup stylus; +fi +%draw z1--z3{down}..z4{right}..z5{up}..z6; +%draw z6--z7; +draw z1--z3--z4; +draw z4{pdir}..z5{up}..{-pdir}z7; +%draw_flatserif(1,3,srad); +draw_flat_head(1); +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 "RTND letter c"; +beginchar("c", 2sb#+hstretch*(9/16x_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{pdir}; +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 "RTND letter d"; +beginchar("d", 2sb#+hstretch*(11/16x_height#+jut#), + asc_height#, 0); +adjust_fit(0,0); +numeric n[]; +path pth[]; +pcshiftx := sb; +pickup quill; +n1 = h/ascratio; % x-height +rt x1=w-pcshiftx-jut; top y1=h; +x2 = x1; bot y2=0; +x3 = x1; y3 = 1/4n1; +lft x5 = pcshiftx; y5=6/8n1; +x4 = 3/8[x3,x5]; bot y4 = 0; +x6=1/2[x4,x5]; top y6 = n1; +x7=x3; top y7=n1; +rt x8 = w-pcshiftx; y8=n1; +if ductus: + pickup stylus; +fi +draw z1--z2; +draw_flatserif(1,2,srad); +%draw_roundserif(2,1,srad); +draw_flat_foot(2); +%%draw z3..z4{left}..z5{up}..z6; +draw z3..z4{left}.. tension 0.8 ..z5{up}..z6; +draw z6..z7..z8; +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 "RTND letter e"; +beginchar("e", sb#+hstretch*(15/16x_height#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pickup quill; +n1 := w-pcshiftx; % actual letter width +n2 := 6/8n1; % width of bowl +x1 = pcshiftx + 5/8n2; top y1=h; +lft x2 = pcshiftx; y2 = 1/2h; +x3 = pcshiftx + 1/2n2; bot y3 = 0; +rt x4 = pcshiftx + n2; y4 = 1/4h; +%%z98=(0,3/8h); z99=(w,y98); +z98=(0,2/8h); z99=(w,y98); +pth1 := z98--z99; +pth2 := z1{left}..z2{down}..z3{right}; +z7 = pth1 intersectionpoint pth2; +rt x9 = w-pcshiftx; y9 = 3/4h; +z8=1/2[z7,z9]; + +z70 = z7 shifted 10pdir; +z17 = whatever[z7,z70]; +%%x17 = w-pcshiftx; +top y17 = h; + +rt x27=w-pcshiftx; top y27=h; +pth3 := z7--z27; % diagonal +pth4 := z1--z9; + +z34 = pth3 intersectionpoint pth4; +pth5 := z34--z1{left}...z2{down}..z3{right}..z4{pdir}; % bowl +%%ductus:=true; +if ductus: + pickup stylus; +fi +%%draw z7{pdir}..z1{left}..z2{down}..z3{right}..z4{pdir}; +%%draw z7{pdir}..z8{right}..z9{pdir}; +%%draw z7--z17; +draw pth5; % bowl +%%draw pth3; % diagonal +draw z34--z7; % daigonal +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,17,27,34,70,100); +endchar; % end "e" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{f} +% The letter `f'. +% \begin{macrocode} +cmchar "RTND letter f"; +beginchar("f", 2sb#+hstretch*(9/16x_height#+jut#), + (asc_height#), 0); +adjust_fit(0,0); +numeric n[]; +pcshiftx := sb; +pickup quill; +n1 := h/ascratio; % x-height +%% stem +lft x1 = lft x2 = pcshiftx+jut; bot y2=0; +%% flick +rt x4 = w-pcshiftx; top y4 = h-thick; +top y3 = h; +lft x3 = rt x1; +top y1 = bot y3; +%% bar +lft x5 = pcshiftx; top y5 = n1; +rt x6 = lft x4; y6 = y5; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2; draw_flat_foot(2); % stem +draw z3--z4; % top +draw z5--z6; % bar +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,14,15,16,100); +endchar; % end "f" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{g} +% The letter `g'. +% \begin{macrocode} +cmchar "RTND letter g"; +beginchar("g", 2sb#+hstretch*(11/16x_height#+jut#), + x_height#, desc_depth#); +adjust_fit(0,0); +numeric n[]; +path pth[]; +pcshiftx := sb; +pickup quill; +%%n1 = h/ascratio; % x-height +rt x1=w-pcshiftx-jut; top y1=h; +rt x2 = x1; y2=1/2h; +x3 = x1; y3 = 0; +rt x4 = w-pcshiftx; y4 = -1/2d; +x5 = 1/2w; bot y5 = -d; +lft x6 = pcshiftx; y6 = top y5; +x13 = x1; y13 = 1/4h; +lft x15 = pcshiftx; y15=6/8h; +x14 = 3/8[x13,x15]; bot y14 = 0; +x16=1/2[x14,x15]; top y16 = h; +x17=x13; top y17=h; +rt x18 = w-pcshiftx; y18=h; +if ductus: + pickup stylus; +fi +% stem +%draw z1..z3..z4{down}..z5{left}..z6; +draw z1..z13..z4{down}..z5{left}..z6; +draw z6--z13; +%% top bowl +draw z13..z14{left}..z15{up}..z16; +draw z16..z17..z18; +ductus:=false; +penlabels(0,1,2,3,4,5,6,7,8,13,14,15,16,17,18,100); +endchar; % end "g" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{h} +% The letter `h'. +% \begin{macrocode} +cmchar "RTND letter h"; +beginchar("h", 2sb#+hstretch*(11/16x_height#+jut#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +numeric n[]; +%% stem +lft x1=lft x2=pcshiftx+jut; +top y1=h; bot y2=0; +%% bowl +z3=1/2[z2,z1]; +rt x5 = w-pcshiftx; y5=y3; +x4=9/16[x3,x5]; top y4 = h/ascratio; +%%lft x6=x4; bot y6=0; +x6=9/16[x4,x5]; +bot y6=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +%draw_tstem(1,2,srad); % stem +%draw_flatserif(1,2,srad); +%%draw_roundserif(2,1,srad); +draw z1--z2; +draw_flat_head(1); draw_flat_foot(2); +draw z3--z4{right}...z5{down}...z6{-pdir}; + +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 "RTND letter i"; +beginchar("i", 2sb#+hstretch*(thick#+2jut#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +lft x1=lft x2=pcshiftx+jut; +top y1=h; bot y2= thick; +bot y3 = 0; rt x3 = w-pcshiftx; +x8 = x1; y8 = h + 3/2thick; +%%ductus:=true; +draw_tstem(1,2,srad); +draw_flatserif(1,2,srad); +%draw_roundserif(2,1,srad); +draw z2--z3; +draw_pdot(8, dot_size); +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 "RTND letter j"; +beginchar("j", sb#+hstretch*(3/8x_height#), + x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% stem +rt x1 = w-pcshiftx; top y1 = h; +x2=x1; y2=-1/2d; +%% bottom hook +lft x3 = 0; bot y3 = -d; +x8 = x1; y8 = h + 3/2thick; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2; % stem +draw_flatserif(1,2,srad); +draw z2{down}..z3{-pdir}; % hook +draw_pdot(8, dot_size); +ductus:=false; +penlabels(1,2,3,100); +endchar; % end "j" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{k} +% The letter `k'. +% \begin{macrocode} +cmchar "RTND letter k"; +beginchar("k", 2sb#+hstretch*(13/16x_height#+jut#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +path pth[]; +numeric n[]; +pickup quill; +%% stem +n1 = h/ascratio; % x-height +lft x1=lft x2=pcshiftx+jut; +y1=h; bot y2=0; +%% top arm +%%z3=(x1,1/2n1); +x3 = x1; top y3 = 1/2n1; +rt x5=5/8[x1,w-pcshiftx]; top y5=n1; +x4=1/2[x3,x5]; top y4=n1; +pth1 := z3{pdir}..z5{up}; +%% lower arm +pth2 := (rt x1,0)--(rt x1,h); +z13 = pth1 intersectionpoint pth2; +pickup threequarterquill; +lft x14 = x13; bot y14 = y13; +rt x7=w-pcshiftx; bot y7=0; +pickup quill; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_flatserif(1,2,srad); +%draw_roundserif(2,1,srad); +draw_flat_foot(2); +draw pth1; % upper arm +pickup threequarterquill; +%%draw z14{down}..z7{-ppdir}; % lower arm +%%draw z14{down}..z7; % lower arm +draw z14{-ppdir}..z7{right}; % lower arm +pickup quill; +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 "RTND letter l"; +beginchar("l", 2sb#+hstretch*(thick#+2jut#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +lft x1=pcshiftx+jut; top y1=h; +x2=x1; +bot y2 = thick; +rt x3 = w-pcshiftx; bot y3 = 0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); +draw_flatserif(1,2,srad); +%draw_roundserif(2,1,srad); +draw z2--z3; +ductus:=false; +penlabels(1,2,3,4,100); +endchar; % end "l" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{m} +% The letter `m'. +% \begin{macrocode} +cmchar "RTND letter m"; +beginchar("m", 2sb#+hstretch*(15/16x_height#+2jut#), % 12/16 too narrow, 14 a bit + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pickup quill; +%% left stem +lft x1=pcshiftx+jut; top y1=h; +x2=x1; bot y2=0; +%% start of bowl +x13=x1; y13=3/4h; +%% bottom of right and middle stems +rt x6 = w -pcshiftx - jut; y6=y2; +z4 = 1/2[z2,z6]; +%% top of middle and right stems +x3=x4; y3=y1; +x5=x6; y5=y13; +%% top of bowls +x14=2/3[x13,x3]; top y14 = h; +x33=x4; y33=y13; +x34=2/3[x33,x5]; y34 = y14; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % left half +draw_flatserif(1,2,srad); +%draw_roundserif(2,1,srad); +draw_flat_foot(2); +draw z13--z14{right}..z33{down}--z4; +%draw_roundserif(4,3,srad); +draw_flat_foot(4); +draw z33--z34{right}..z5{down}--z6; +draw_roundserif(6,5,srad); +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 "RTND letter n"; +beginchar("n", 2sb#+hstretch*(9/16x_height#+2jut#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +%% left stem +lft x1=pcshiftx+jut; top y1=h; +x2=x1; bot y2=0; +% start of bowl +x13=x1; y13=3/4h; +%% right stem +rt x4 = w-pcshiftx-jut; y4=y2; +x3 = x4; y3 = y13; +% top of bowl +x14 = 2/3[x13,x3]; top y14 = h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % left stem +draw_flatserif(1,2,srad); +%draw_roundserif(2,1,srad); +draw_flat_foot(2); +draw z13--z14{right}..z3{down}--z4; +draw_roundserif(4,3,srad); +ductus:=false; +penlabels(1,2,3,4,5,6,13,14,100); +endchar; % end "n" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{o} +% The letter `o'. +% \begin{macrocode} +cmchar "RTND letter o"; +beginchar("o", 2sb#+hstretch*(7/8x_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; +draw z2..z3..z4{left}.. tension 0.8 ..{up}z1..cycle; +%z5=(pcshiftx,-o); +%obowl(5, w-2pcshiftx, h+2o); +%%ductus:=true; +if ductus: + pickup stylus; + draw obfirst; draw obsecond; draw obouter; draw obinner; +else: +%% fill obouter; unfill obinner; +fi +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 "RTND letter p"; +beginchar("p", 2sb#+hstretch*(14/16x_height#+jut#), + x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% stem +lft x1=lft x2=pcshiftx+jut; +top y1=h; bot y2=-d; +%% bowl % from "d" +z3=3/4[(x1,0),z1]; +rt x5 = w-pcshiftx; y5=1/2h; +x4=1/2[x3,x5]; top y4 = h; +x6=x4; bot y6=0; +z7=1/4[(x1,0),z1]; + +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_flatserif(1,2,srad); +%draw_roundserif(2,1,srad) +draw_flat_foot(2); +draw z3--z4; draw z4..z5{down}..z6{left}..z7; +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 "RTND letter q"; +beginchar("q", 2sb#+hstretch*(7/8x_height#), + x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% right stem +rt x1=w-pcshiftx; top y1=h; +x2=x1; bot y2=-d; +%% bowl +z3=1/4[(x1,0),z1]; +lft x5=pcshiftx; y5=1/2h; +x4=1/2[x3,x5]; bot y4=0; +x6=x4; top y6=h; +%%z7=3/4[(x1,0),z1]; +z7=z1; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); +%%draw_flatserif(1,2,srad); +%%draw_roundserif(2,1,srad); +draw_flat_foot(2); +draw z3{-pdir}..z4{left}..z5{up}..z6{right}..z7{pdir}; +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 "RTND letter r"; +beginchar("r", 2sb#+hstretch*(11/16x_height#+jut#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% stem +lft x1=lft x2=pcshiftx+jut; +top y1=h; bot y2=0; +%% bowl +z3=3/4[z2,z1]; +rt x5 = w-pcshiftx; y5=y3; +x4=1/2[x3,x5]; top y4 = h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_flatserif(1,2,srad); +draw_flat_foot(2); +%%draw_roundserif(2,1,srad); +draw z3{pdir}..z4{right}..z5{pdir}; +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 "RTND letter s"; +beginchar("s", 2sb#+hstretch*(7/8x_height#), + x_height#, 0); +adjust_fit(0,0); +numeric n[]; +pcshiftx := sb; +pickup quill; + +% center +z50=(1/2w, 1/2h); +x60 = w-pcshiftx; z60 = z50 shifted (whatever*pdir); +x40 = pcshiftx; z40 = z50 shifted (whatever*pdir); +rt x5 = x50; top y5 = y50; +z54 = (lft x5, bot y5); +lft x6 = x50; bot y6 = y50; +z56 = (rt x6, top y6); + +% top bowl +z1 = 1/2[z56,z60]; +x3 = 1/2[x5,x1]; top y3 = h; + +% bottom bowl +z10 = 1/2[z54,z40]; +%x8 = 1/4[x6,x10]; +x8 = x56; +bot y8 = 0; + +%%ductus:=true; +if ductus: + pickup stylus; +fi +% top bowl +draw z5{ppdir}..z3..z1{-ppdir}; + +% bottom bowl +draw z6..z8{left}..z10{ppdir}; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,10,11,17,20,26,27,28,40,50,54,56,60,100); +endchar; % end "s" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{t} +% The letter `t'. +% \begin{macrocode} +cmchar "RTND letter t"; +beginchar("t", 2sb#+hstretch*(10/16x_height#+jut#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% bar +lft x1 = pcshiftx; top y1 = h; +rt x2 = w - pcshiftx; y2 = y1; +%% stem +lft x3 = rt x1; bot y3 = top y1; +rt x5 = x2; bot y5 = 0; +x4 = x3; bot y4 = thick; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2; % bar +draw z3--z4--z5; % 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 "RTND letter u"; +beginchar("u", 2sb#+hstretch*(9/16x_height#+2jut#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% left stem +lft x1 = pcshiftx + jut; top y1 = h; +% start of bowl +x13=x1; y13=1/3h; +% right stem +rt x3=w-pcshiftx-jut; 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; +%%ductus:=true; +if ductus: + pickup stylus; +fi +%%draw z1--z13{down}...z14{right}...z33{pdir}; +draw z1--z13--z14{right}...z33{pdir}; +draw_flatserif(1,13,srad); +draw_tstem(3,4,srad); % right stem +draw_flatserif(3,4,srad); +draw_roundserif(4,3,srad); +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 "RTND letter v"; +beginchar("v", 2sb#+hstretch*(11/16x_height#+jut#), % 13/16 too wide + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +%% left stem +lft x1 = pcshiftx + jut; top y1 = h; +%% right stem +rt x5=w-pcshiftx; top y5 = h; +bot y3 = 0; +x3 = 1/2[x1,x5]; +z51 = (x1,0); z55=(x5,0); +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1{down}..z3; % left stem +draw_flatserif(1,51,srad); +draw z5{down}..z3; % right stem +draw_flatserif(5,55,srad); +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 "RTND letter w"; +beginchar("w", 2sb#+hstretch*(15/16x_height#+2jut#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +%% left stem +lft x1 = pcshiftx + jut; top y1 = h; +% start of bowl +x13=x1; y13=1/3h; +% right stem +rt x5=w-pcshiftx-jut; y5=y1; +x6=x5; bot y6=0; +z53=1/4[z6,z5]; % start of bowl +% middle stem +z3 = 1/2[z1,z5]; +z33=(x3,y13); +% middle of bowl +x14=1/3[x1,x3]; bot y14=0; +% middle of right bowl +x34=1/3[x3,x5]; y34=y14; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z13--z14{right}...z33{pdir}; % left +draw_flatserif(1,13,srad); +draw z3--z33--z34{right}...z53{pdir}; % middle +draw_flatserif(3,33,srad); +draw_tstem(5,6,srad); % right stem +draw_flatserif(5,6,srad); +draw_roundserif(6,5,srad); +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 "RTND letter x"; +beginchar("x", 2sb#+hstretch*(7/2thick#), + x_height#, 0); +adjust_fit(0,0); +path pth[]; +numeric n[]; +pcshiftx := sb; +pickup quill; +n1 := w-2pcshiftx; % total width +n2 := thick; % triangle side +%% diag top left to bottom right +lft x1 = pcshiftx; top y1 = h; +rt x4 = w-pcshiftx; bot y4 = 0; +x2 = x3 = 1/2w; +top y5 = h; lft x5 = rt x2; +top y2 = bot y5; +rt x6 = w - pcshiftx; y6 = y2; +y3 = h - y2; +lft x8 = lft x1; bot y8 = 0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2--z3--z4; % top left to bottom right +draw z5--z6; % top right +draw z3--z8; % bottom left +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 "RTND letter y"; +beginchar("y", 2sb#+hstretch*(11/16x_height#+jut#), + x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +path pth[]; +numeric n[]; +pickup quill; +%% left stem top +lft x1 = pcshiftx + jut; top y1 = h; +bot y3 = 0; +%% right stem +rt x5=w-pcshiftx; top y5 = h; +%%lft x9=-1/2w; bot y9 = -d; +lft x9 = 0; bot y9 = -d; +pth1 := z9{right}..z5{up}; +pth2 := (0,y3)--(w,y3); +z99 = pth1 intersectionpoint pth2; +x3 = x99; +z51 = (x1,0); z55=(x5,0); +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1{down}..z3; % left stem +draw_flatserif(1,51,srad); +draw pth1; % right stem +draw_flatserif(5,55,srad); +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 "RTND letter z"; +beginchar("z", 2sb#+hstretch*(12/16x_height#), + x_height#, 0); +adjust_fit(0,0); +numeric n[]; +path pth[]; +pcshiftx := sb; +pickup quill; +%% top bar ends +lft x1 = pcshiftx; rt x2 = w-pcshiftx; +top y1 = top y2 = h; +%% bottom bar ends +lft x3 = pcshiftx; rt x4 = w-pcshiftx; +bot y3 = bot y4 = 0; +%% middle bar ends +lft x5 = x1; rt x6 = x2; +y5 = y6 = 1/2h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2; draw z3--z4; draw z5--z6; % bars +draw z2--z3; % diagonal +ductus:=false; +penlabels(1,2,3,4,5,6,10o,10i,20o,20i,100); +endchar; % end "z" + +% \end{macrocode} +% \end{routine} +% +% +% The end of this file +% \begin{macrocode} +% +% \end{macrocode} +% +% +% \subsection{The code for capital letters} +% +% \thisfont{} `capitals' were drawn with the same pen as for the minuscules, +% and the letters were merely larger versions of the minuscules. +% +% \begin{macrocode} +%<*maj> +% RTNDU.MF Program file for Early Gothic `capitals' +% + +% \end{macrocode} +% +% +% \begin{routine}{A} +% The letter `A'. +% \begin{macrocode} +cmchar "RTND letter A"; +beginchar("A", 2cap_sb#+caprat*hstretch*(3/4x_height#+jut#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +numeric n[]; +path pth[]; +pair pr[]; +pickup quill; +n1 := w - 2pcshiftx -jut; % effective letter width +% right leg +x1 = pcshiftx + 6/8n1; top y1=h; +rt x2 = pcshiftx + n1; bot y2=0; +pth1 := z1{down}..z2; +z20 = 7/8[z1,z2]; + +% left leg +rt x4 = lft x1; top y4 = y1; + +lft x8 = pcshiftx; top y8 = -thin; + +x6 = 3/8w; y6 = 1/2h; +pth2 := z4..{down}z6..{-pdir}z8; + +% top +lft x11 = pcshiftx; top y11 = h - thick; + +x14 = x1; y14 = y1; + +x13 = 1/2[x11,x14]; y13 = y14; +pth3 := z11{pdir}.. z13..z14; + +%%ductus:=true; +if ductus: + pickup stylus; +else: + % draw stem + draw pth1; +% draw_roundserif(1,2,srad); + draw_roundserif(2,20,srad); + % draw bowl +% draw z11{-pdir}..z13{down}..z15{pdir}; + % left leg + draw pth2; + % top + draw pth3; +fi +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,11,12,13,14,15,20,100); +endchar; % end "A" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{B} +% The letter `B'. +% \begin{macrocode} +cmchar "RTND letter B"; +beginchar("B", 2cap_sb#+caprat*hstretch*(3/4x_height#+jut#), + caprat*x_height#, 0); +adjust_fit(0,0); +numeric n[]; +path pth[]; +pcshiftx := cap_sb; +pickup quill; +n1:=w-2pcshiftx; % actual letter width +n2:=h/ascratio; % top of bowl +%%ductus:=true; +lft x1 = pcshiftx+2jut; top y1=7/8h; +lft x13 = pcshiftx; top y13 = y1; +x2 = x1; bot y2 = 0; +z3 = 9/16[z2,z1]; +pth1 := z1--z2; % stem + +rt x6 = w-pcshiftx; y6 = 2/3[y2,y3]; + +pth2 := z2{right}..z6...{-pdir}z3; % bottom bowl + +rt x8 = lft x6; y8 = 13/16[y3,y1]; + +pth3 := z3{pdir}...z8..{-pdir}z13; % top bowl +if ductus: + pickup stylus; +fi +draw pth1; +draw pth2; +draw pth3; +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 "RTND letter C"; +beginchar("C", 2cap_sb#+caprat*hstretch*(5/8x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +numeric n[]; +pcshiftx := cap_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{pdir}; +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 "RTND letter D"; +beginchar("D", 2cap_sb#+caprat*hstretch*(3/4x_height#+jut#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +numeric n[]; +path pth[]; +pickup quill; +%% stem +lft x1=lft x2=pcshiftx+2jut; +top y1=h; bot y2=0; +%% bowl +rt x5 = w-pcshiftx; +x4=1/2[x1,x5]; top y4 = h; +x6'=x4; bot y6' = 5/16h; +y5=1/2[y4,y6']; +x7 = x2; y7 = y2; +x6 = 1/2[x6',x5]; y6 = 1/2[y6',y7]; +lft x3 = pcshiftx; top y3 = y1; +pth1 := z3{pdir}..z4..{down}z5..z6..{-pdir}z7; % bowl +z14 = point 0.75 of pth1; +pth2 := z2{pdir}..{up}z14; +%%ductus:=true; +if ductus: + pickup stylus; +fi +%draw z1--z2; +%draw_roundserif(2,1,srad) +draw pth2; +draw pth1; +ductus:=false; +penlabels(1,2,3,4,5,6,6',7,8,100); +endchar; % end "D" + + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{E} +% The letter `E'. +% \begin{macrocode} +cmchar "RTND letter E"; +beginchar("E", 2cap_sb#+caprat*hstretch*(5/8x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +numeric n[]; +path pth[]; +pickup quill; +%% bowl +n1 := w-2pcshiftx; % actual letter width +n2 := 6/5w-2pcshiftx; % width of full bowl +x1=pcshiftx + 1/2n1; top y1 = h; +lft x2 = pcshiftx; y2 = 1/2h; +x3 = x1; bot y3 = 0; +rt x4 = w-pcshiftx; y4 = 1/4h; +x24 = x4; y24 = 3/4h; +pth1 := z24..z1{left}..z2{down}..z3{right}..z4{pdir}; +% cross bar +x31 = x2; y31 = y2; +x32 = x4; y32 = y31; +pth2 = z31--z32; + +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw pth1; +draw pth2; +ductus:=false; +penlabels(1,2,3,4,5,6,14,16,17,18,24,31,32,100); +endchar; % end "E" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{F} +% The letter `F'. +% \begin{macrocode} +cmchar "RTND letter F"; +beginchar("F", 2cap_sb#+caprat*hstretch*(10/16x_height#+jut#), + caprat*x_height#, 0); +adjust_fit(0,0); +numeric n[]; +pcshiftx := cap_sb; +pickup quill; +n1 := h/ascratio; % x-height +%% stem +lft x1=lft x2=pcshiftx+jut; top y1=n1; bot y2=0; +%% flick +x4=x2; y4 = 1/2n1; +rt x6=w-pcshiftx; y6 = 2/3h; +x5 = 2/3[x4,x6]; top y5=h; +%% bar +z14=1/2[z4,z1]; +rt x16 = w -pcshiftx; top y16 = 1/2[y14,y6]; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +draw z4{up}...z5{right}...z6; % top +draw z14{right}..z16{pdir}; % bar +ductus:=false; +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 "RTND letter G"; +beginchar("G", 2cap_sb#+caprat*hstretch*(5/8x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +numeric n[]; +path pth[]; +pickup quill; +%% bowl +n1 := w-2pcshiftx; % actual letter width +n2 := 6/5w-2pcshiftx; % width of full bowl +x1=pcshiftx + 1/2n1; top y1 = h; +lft x2 = pcshiftx; y2 = 1/2h; +x3 = x1; bot y3 = 0; +rt x4 = w-pcshiftx; y4 = 1/4h; +x24 = x4; y24 = 3/4h; +pth1 := z24..z1{left}..z2{down}..z3{right}..z4{pdir}; +% cross bar +x31 = x2; y31 = y2; +x32 = x4; y32 = y31; +pth2 = z31--z32; +% upright +z41 = 5/8[z31,z32]; +z42 = z32; +z43 = z4; +lft x45 = x3; top y45 = - thick; +pth3 := z41--z42--z43..{-pdir}z45; + +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw pth1; +%draw pth2; +draw pth3; +ductus:=false; +penlabels(1,2,3,4,5,6,14,16,17,18,24,31,32,100); +endchar; % end "G" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{H} +% The letter `H'. +% \begin{macrocode} +cmchar "RTND letter H"; +beginchar("H", 2cap_sb#+caprat*hstretch*(5/8x_height#+2jut#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +path pth[]; +pickup quill; +numeric n[]; +%% stem +lft x1=lft x2=pcshiftx+3jut; +top y1=h; bot y2=0; +% twiddle +lft x16 = pcshiftx; top y16 = h; +x18 = x1; y18 = y1; +pth1 := z16{pdir}..{pdir}z18; + +%% bowl +z3=1/2[z2,z1]; +rt x5 = w-pcshiftx; y5=y3; +x4=1/2[x3,x5]; top y4 = h/ascratio; +%%lft x6=x4; bot y6=0; +x6=1/2[x4,x5]; +%bot y6=0; +top y6 = 0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +%%draw_flatserif(1,2,srad); +%draw_clubserif(1,2,0.5); +draw_roundserif(2,1,srad); +draw pth1; +draw z3{pdir}..z4..z5..z6{-pdir}; + +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 "RTND letter I"; +beginchar("I", 2cap_sb#+caprat*hstretch*(thick#+3jut#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +path pth[]; +pickup quill; +rt x1 = w - pcshiftx - jut; +x2 = x1; +top y1=h; bot y2=0; +% bar +lft x6 = pcshiftx; top y6 = h; +x8 = x1; y8 = y1; +pth1 := z6{pdir}..{pdir}z8; +%ductus:=true; +draw_tstem(1,2,srad); +%%draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +draw pth1; +ductus:=false; +penlabels(1,2,3,4,5,6,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 "RTND letter J"; +beginchar("J", cap_sb#+caprat*hstretch*(thick#+2jut#), + caprat*x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := cap_sb; +numeric n[]; +path pth[]; +pickup quill; +%% stem +rt x1 = w-pcshiftx; top y1 = h; +x2=x1; y2=-1/2d; +%% bottom hook +lft x3 = 0; bot y3 = -d; +pth1 := z1--z2..z3{-pdir}; +% bar +lft x6 = pcshiftx; top y6 = h; +x8 = x1; y8 = y1; +pth2 := z6{pdir}..{pdir}z8; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw pth1; % stem +draw pth2; % bar +ductus:=false; +penlabels(1,2,3,6,7,8,100); +endchar; % end "J" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{K} +% The letter `K'. +% \begin{macrocode} +cmchar "RTND letter K"; +beginchar("K", 2cap_sb#+caprat*hstretch*(7/8x_height#+jut#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +path pth[]; +numeric n[]; +pickup quill; +%% stem +n1 = h; % x-height +lft x1=lft x2=pcshiftx+2jut; +top y1=h; bot y2=0; +% bar +lft x26 = pcshiftx; top y26 = h; +x28 = x1; y28 = y1; +pth22 := z26{pdir}..{pdir}z28; +%% top arm +%%z3=(x1,1/2n1); +x3 = x1; top y3 = 1/2n1; +rt x5=5/8[x1,w-pcshiftx]; top y5=n1; +x4=1/2[x3,x5]; top y4=n1; +pth1 := z3{pdir}..z5{up}; +%% lower arm +pth2 := (rt x1,0)--(rt x1,h); +z13 = pth1 intersectionpoint pth2; +pickup threequarterquill; +lft x14 = x13; bot y14 = y13; +rt x7=w-pcshiftx; bot y7=0; +pickup quill; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % stem +%draw_clubserif(1,2,0.5); +draw_roundserif(2,1,srad); +draw pth22; +draw pth1; % upper arm +pickup threequarterquill; +draw z14{-ppdir}..z7{right}; % lower arm +pickup quill; +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 "RTND letter L"; +beginchar("L", 2cap_sb#+caprat*hstretch*(thick#+5jut#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +path pth[]; +pickup quill; +% stem +lft x1= pcshiftx + 3jut; top y1=h; +lft x2= pcshiftx; bot y2 =0; +pth1 := z1{down}..{-pdir}z2; +% bar +lft x6 = pcshiftx; top y6 = h; +x8 = x1; y8 = y1; +pth2 := z6{pdir}..{pdir}z8; +% foot +x3 = x2; y3 = y2; +rt x5 = w - pcshiftx; bot y5 = 0; +pth3 := z3{pdir}..{pdir}z5; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw pth1; % stem +draw pth2; % bar +draw pth3; % foot +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,100); +endchar; % end "L" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{M} +% The letter `M'. +% \begin{macrocode} +cmchar "RTND letter M"; +beginchar("M", 2cap_sb#+caprat*hstretch*(x_height#+2jut#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +numeric n[]; +path pth[]; +pickup quill; +%% left stem +lft x1=pcshiftx+jut; top y1=h; +x2'=x1; bot y2'=0; +%% start of bowl +x13=x1; y13=3/4h; +%% bottom of left, right and middle stems +rt x6' = w -pcshiftx - jut; y6'=y2'; +z4 = 1/2[z2',z6']; +x6 = 1/2[x4,x6']; bot y6 = -thick; +rt x2 = lft x4; bot y2 = 0; +%% top of middle and right stems +x3=x4; y3=y1; +x5=x6'; y5=y13; +%% top of bowls +x14=2/3[x13,x3]; top y14 = h; +x33=x4; y33=y13; +x34=2/3[x33,x5]; y34 = y14; +%%ductus:=true; +if ductus: + pickup stylus; +fi +%draw_tstem(1,2,srad); % left half +%draw_flatserif(1,2,srad); +%draw_roundserif(2,1,srad); +%draw z13{pdir}..z14{right}..z33{down}--z4; % middle +draw z2..z13..{right}z14..z33{down}--z4; +draw_roundserif(4,3,srad); +%%draw z33{pdir}..z34{right}..z5{down}--z6; +%%draw_roundserif(6,5,srad); +draw z33{pdir}..z34{right}..z5{down}..{-pdir}z6; % rightmost +ductus:=false; +penlabels(1,2,2',3,4,5,6,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 "RTND letter N"; +beginchar("N", 2cap_sb#+caprat*hstretch*(5/8x_height#+2jut#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +pickup quill; +%% left stem +lft x1=pcshiftx+jut; top y1=h; +x2=x1; bot y2=0; +% start of bowl +x13=x1; y13=3/4h; +%% right stem +rt x4 = w-pcshiftx-jut; y4=y2; +x3 = x4; y3 = y13; +% top of bowl +x14 = 2/3[x13,x3]; top y14 = h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % left stem +draw_flatserif(1,2,srad); +draw_roundserif(2,1,srad); +draw z13{pdir}..z14{right}..z3{down}--z4; +draw_roundserif(4,3,srad); +ductus:=false; +penlabels(1,2,3,4,5,6,13,14,100); +endchar; % end "N" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{O} +% The letter `O'. +% \begin{macrocode} +cmchar "RTND letter O"; +beginchar("O", 2cap_sb#+caprat*hstretch*(7/8x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +path pth[]; +pickup quill; +lft x1=pcshiftx; rt x3=w-pcshiftx; y1=y3=h/2; +x2=x4=w/2; top y2=h+o; bot y4=-o; +pth1 := z2..z3..z4{left}.. tension 0.8 ..{up}z1..cycle; +%ductus:=true; +if ductus: + pickup stylus; +fi +draw pth1; +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 "RTND letter P"; +beginchar("P", 2cap_sb#+caprat*hstretch*(3/4x_height#+jut#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +numeric n[]; +path pth[]; +pickup quill; +%% stem +lft x1=lft x2=pcshiftx+2jut; +top y1=h; bot y2=0; +%% bowl +rt x5 = w-pcshiftx; +x4=1/2[x1,x5]; top y4 = h; +x6=x4; bot y6 = 5/16h; +y5=1/2[y4,y6]; +x7 = x1; y7 = 1/2[y6,y5]; +lft x3 = pcshiftx; top y3 = y1; +pth1 := z3{pdir}..z4..{down}z5..{left}z6..z7; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2; +draw_roundserif(2,1,srad) +draw pth1; +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 "RTND letter Q"; +beginchar("Q", 2cap_sb#+caprat*hstretch*(7/8x_height#+jut#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +numeric n[]; +path pth[]; +pickup quill; +lft x1=pcshiftx; rt x3=w-pcshiftx-jut; y1=y3=h/2; +x2=x4=w/2; top y2=h+o; bot y4=-o; +pth1 := z2..z3..z4{left}.. tension 0.8 ..{up}z1..cycle; +% foot +z5 = point 1.5 of pth1; +rt x7 = w - pcshiftx; bot y7 = 0; +pth2 := z5..{right}z7; +%ductus:=true; +if ductus: + pickup stylus; +fi +draw pth1; +draw pth2; +ductus:=false; +penlabels(1,2,3,4,5,6,7,100); +endchar; % end "Q" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{R} +% The letter `R'. +% \begin{macrocode} +cmchar "RTND letter R"; +beginchar("R", 2cap_sb#+caprat*hstretch*(3/4x_height#+jut#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +numeric n[]; +path pth[]; +pickup quill; +%% stem +lft x1=lft x2=pcshiftx+2jut; +top y1=h; bot y2=0; +%% bowl +rt x5 = w-pcshiftx; +x4=1/2[x1,x5]; top y4 = h; +x6=x4; bot y6 = 6/16h; +y5=1/2[y4,y6]; +x7 = x1; +%y7 = 1/8[y6,y5]; +y7 = y6; +lft x3 = pcshiftx; top y3 = y1; +pth1 := z3{pdir}..z4..{down}z5..{left}z6..z7; +%% leg +x16 = x6; y16 = y6; +rt x18 = w - pcshiftx; bot y18 = 0; +pth2 := z16..{right}z18; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z2; +draw_roundserif(2,1,srad) +draw pth1; +draw pth2; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,100); +endchar; % end "R" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{S} +% The letter `S'. +% \begin{macrocode} + +cmchar "RTND letter S"; +beginchar("S", 2cap_sb#+caprat*hstretch*(7/8x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +numeric n[]; +pcshiftx := cap_sb; +pickup quill; + +% center +z50=(1/2w, 1/2h); +x60 = w-pcshiftx; z60 = z50 shifted (whatever*pdir); +x40 = pcshiftx; z40 = z50 shifted (whatever*pdir); +rt x5 = x50; top y5 = y50; +z54 = (lft x5, bot y5); +lft x6 = x50; bot y6 = y50; +z56 = (rt x6, top y6); + +% top bowl +z1 = 1/2[z56,z60]; +x3 = 1/2[x5,x1]; top y3 = h; + +% bottom bowl +z10 = 1/2[z54,z40]; +%x8 = 1/4[x6,x10]; +x8 = x56; +bot y8 = 0; + +%%ductus:=true; +if ductus: + pickup stylus; +fi +% top bowl +draw z5{ppdir}..z3..z1{-ppdir}; + +% bottom bowl +draw z6..z8{left}..z10{ppdir}; +pickup stylus; +draw z60--z10; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,10,11,17,20,26,27,28,40,50,54,56,60,100); +endchar; % end "S" + + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{T} +% The letter `T'. +% \begin{macrocode} +cmchar "RTND letter T"; +beginchar("T", 2cap_sb#+caprat*hstretch*(x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +numeric n[]; +pickup quill; +%% bar +top y3=h; n3 := h - top y3; +lft x1 = pcshiftx; rt x2=w-pcshiftx; +%%top y1 = y3-n3; bot y2=y3+n3; +y1 = y3-n3; y2=y3; +n1 := w; % width of bowl +n2 := h; % height of bowl +x3=1/2[x1,x2]; +lft x4 = pcshiftx + 1/8n1; y4 = 1/2h; +x5=x3; bot y5 = 0; +rt x6 = pcshiftx + 3/4n1; top y6 = 1/4h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1{pdir}..z3..z2{pdir}; % bar +%draw z3..z4{down}..z5{right}..z6{pdir}; +draw z3--z5; +draw_roundserif(5,3,srad); +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 "RTND letter U"; +beginchar("U", 2cap_sb#+caprat*hstretch*(5/8x_height#+2jut#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +numeric n[]; +pickup quill; +%% left stem +lft x1 = pcshiftx + jut; top y1 = h; +% start of bowl +x13=x1; y13=1/3h; +% right stem +rt x3=w-pcshiftx-jut; 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; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z13{down}..z14{right}..z33{pdir}; +draw_flatserif(1,13,srad); +draw_tstem(3,4,srad); % right stem +draw_flatserif(3,4,srad); +draw_roundserif(4,3,srad); +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 "RTND letter V"; +beginchar("V", 2cap_sb#+caprat*hstretch*(3/4x_height#+jut#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +pickup quill; +%% left stem +lft x1 = pcshiftx + jut; top y1 = h; +% start of bowl +x13=x1; y13=1/3h; +% right stem +rt x3=w-pcshiftx-jut; 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; +rt x23=w-pcshiftx; y23=3/4h; +lft x26=x14; top y26=h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z13{down}..z14{right}; % left stem +draw_flatserif(1,13,srad); +draw z14{pdir}..z23{up}..z26; + +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 "RTND letter W"; +beginchar("W", 2cap_sb#+caprat*hstretch*(x_height#+2jut#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +pickup quill; +%% left stem +lft x1 = pcshiftx + jut; top y1 = h; +% start of bowl +x13=x1; y13=1/3h; +% right stem +rt x5=w-pcshiftx-jut; y5=y1; +x6=x5; bot y6=0; +z53=1/4[z6,z5]; % start of bowl +% middle stem +z3 = 1/2[z1,z5]; +z33=(x3,y13); +% middle of bowl +x14=1/3[x1,x3]; bot y14=0; +% middle of right bowl +x34=1/3[x3,x5]; y34=y14; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1--z13{down}..z14{right}..z33{pdir}; % left +draw_flatserif(1,13,srad); +draw z3--z33{down}..z34{right}..z53{pdir}; % middle +draw_flatserif(3,33,srad); +draw_tstem(5,6,srad); % right stem +draw_flatserif(5,6,srad); +draw_roundserif(6,5,srad); +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 "RTND letter X"; +beginchar("X", 2cap_sb#+caprat*hstretch*(x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +path pth[]; +numeric n[]; +pcshiftx := cap_sb; +pickup quill; +n1 := w-2pcshiftx; % total width +n2 := thick; % triangle side +%% diag top left to bottom right +lft x1=pcshiftx; bot y1=2/3h; +x2=pcshiftx+1/7n1; top y2=h; +x5=pcshiftx+11/14n1; bot y5=-1/4d; +rt x6=pcshiftx+n1; top y6=1/6h; +z25 = 1/3[z2,z5]; +pth1 := z2{right}..z5{right}; +z251 = point 1/3 of pth1; +z252 = point 2/3 of pth1; +%% diag bottom left to top right +lft x10 = -w + 2pcshiftx; bot y10=-d; +x50=x5; top y50=h; +rt x60 = w -pcshiftx; bot y60=2/3h; +x40=pcshiftx+8/14n1; y40=h; + +x150=x2; bot y150 = 0; +lft x160 = pcshiftx; top y160=1/3h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1..z2{right}..z5{right}..z6; % top left to bottom right +%%draw z10{1/2pdir}..z25..z50{right}..z60; % bottom left to top right +draw z251..z50{right}..z60; % middle to top right +draw z252..z150{left}..z160; % middle to bottom left +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,10,25,251,252,40,50,150,60,160,100); +endchar; % end "X" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{Y} +% The letter `Y'. Modern. +% \begin{macrocode} +cmchar "RTND letter Y"; +beginchar("Y", 2cap_sb#+caprat*hstretch*(7/8x_height#), + caprat*x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := cap_sb; +path pth[]; +numeric n[]; +pickup quill; +%% left stem top +lft x1 = pcshiftx + jut; top y1 = h; +bot y3 = 0; +%% right stem +rt x5=w-pcshiftx; top y5 = h; +lft x9=-1/2w; bot y9 = -d; +pth1 := z9{right}..z5{up}; +pth2 := (0,y3)--(w,y3); +z99 = pth1 intersectionpoint pth2; +x3 = x99; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1{down}..z3; % left stem +draw_flatserif(1,3,srad); +draw pth1; % right stem +draw_flatserif(5,3,srad); +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 "RTND letter Z"; +beginchar("Z", 2cap_sb#+caprat*hstretch*(7/8x_height#), + caprat*x_height#, 0); +adjust_fit(0,0); +numeric n[]; +path pth[]; +pcshiftx := cap_sb; +pickup quill; +%% top bar ends +top y12 = h; +n1 := h - y12; +lft x1 = pcshiftx; rt x2 = w-pcshiftx; +%%y1 = y12-n1; y2=y12+n1; +top y1 = y12-n1; y2=y12; +x12 = 1/2[x1,x2]; +pth1 := z1{pdir}..z12{right}..z2{pdir}; +%% bottom bar ends +bot y34 = 0; +x3=x1; x4=x2; +%%y3=y34-n1; y4=y34+n1; +y3=y34-n1; bot y4=y34; +x34 = 1/2[x3,x4]; +pth2 := z3{pdir}..z34{right}..z4{pdir}; +%% diagonal +z5=z3; +%pth3 := z5--(3/4w,h+jut); +%z6 = pth3 intersectionpoint pth1; +z6 = z2; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw pth1; draw pth2; % bars +draw z5--z6; +ductus:=false; +penlabels(1,2,3,4,5,6,12,34,10o,10i,20o,20i,100); +endchar; % end "Z" + +% \end{macrocode} +% \end{routine} +% +% +% +% The end of this file +% \begin{macrocode} +% +% \end{macrocode} +% +% +% +% \subsection{The punctuation file} +% +% The main punctuation marks are defined in this file. +% +% \begin{macrocode} +%<*punct> +% RTNDPUNCT.MF This file contains punctuation marks + +% \end{macrocode} +% +% +% \begin{routine}{!} +% The `!' character, which had not been invented at this time. +% \begin{macrocode} + +cmchar "Exclamation mark"; +beginchar("!", 2sb#+hstretch*(thick#+trijut#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +x1=w/2; top y1 = h; +z3=(x1, 1/2dot_size); +z2=(x1, y3+3/2dot_size); +draw z1--z2; +draw_pdot(3,dot_size); +penlabels(1,2,3); + +endchar; % end of "!" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{?} +% The `?' character, which had not been invented at this time. +% \begin{macrocode} + +cmchar "Question mark"; +beginchar("?", 2sb#+hstretch*(3/4x_height#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pickup quill; +n1 := w-2pcshiftx; % actual character width +n2 := 1/3h; % height of top bowl +n3 := n2; % height of bottom bowl +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=3/4h; y2=1/4h; +draw_pdot(1,dot_size); +draw_pdot(2,dot_size); +penlabels(1,2); +endchar; % end ":" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{;} +% The `;' character. +% \begin{macrocode} + +cmchar "Semicolon"; +beginchar(";",2sb#+hstretch*(comma_width#+dot_size#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb; +x1=x2=w-pcshiftx-(0.5hstretch*dot_size); y1=3/4h; y2=1/2dot_size; +draw_pdot(1,dot_size); +draw_pcomma(2,dot_size,comma_width); +penlabels(1,2); +endchar; % end of ";" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{'} +% The `'' character. +% \begin{macrocode} + +cmchar "Apostrophe"; +beginchar("'",2sb#+hstretch*(comma_width#+dot_size#),4/3x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb; +x1=w-pcshiftx-(0.5hstretch*dot_size); y1=h; +draw_pcomma(1,dot_size,comma_width); +penlabels(1); +endchar; % end of "'" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{`} +% The ``' character. +% \begin{macrocode} + +cmchar "Reverse apostrophe"; +beginchar("`",2sb#+hstretch*(comma_width#+dot_size#),4/3x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb; +x1=pcshiftx+(0.5hstretch*dot_size); y1=h; +draw_plq(1,dot_size,comma_width); +penlabels(1); +endchar; % end of "`" + +% \end{macrocode} +% \end{routine} +% +% The end of this file. +% \begin{macrocode} +% +% \end{macrocode} +% +% +% \subsection{The ligatures and dashes file} +% +% The ligatured letters, punctuation marks and dashes are defined in this file. +% \begin{macrocode} +%<*lig> +% RTNDLIG.MF Uncial ligatured letters, punctation and dashes + +% \end{macrocode} +% First the ligtables. +% \begin{macrocode} + +ligtable "`": "`"=:oct"134"; +ligtable "'": "'"=:oct"042"; %% , "?" kern 2u#, "!" kern 2u#; + +ligtable "-": "-"=:oct"173"; +ligtable oct"173": "-"=:oct"174"; + +%%%%ligtable "c": "t"=:oct"014"; +%%%%ligtable "s": "t"=:oct"015"; + +% \end{macrocode} +% +% +% \begin{routine}{''} +% The `''' ligature. +% \begin{macrocode} + +cmchar "Closing quotes"; +beginchar(oct"042",2sb#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb; +x1=w-pcshiftx-(0.5hstretch*dot_size); y1=y2=h; +x2=x1-(2hstretch*dot_size); +draw_pcomma(1,dot_size,comma_width); % right +draw_pcomma(2,dot_size,comma_width); % left +penlabels(1,2); +endchar; % end of "''" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{``} +% The ```' ligature. +% \begin{macrocode} + +cmchar "Opening quotes"; +beginchar(oct"134",2sb#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb; +x1=pcshiftx+(0.5hstretch*dot_size); y1=y2=h; +x2=x1+(2hstretch*dot_size); +draw_plq(1,dot_size,comma_width); % left +draw_plq(2,dot_size,comma_width); % right +penlabels(1,2); +endchar; % end of "``" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{-} +% The `-' (hyphen) character. +% \begin{macrocode} + +cmchar "Hyphen"; +beginchar("-",sb#+hstretch*(0.8x_height#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb/2; +%%numeric alpha; alpha:=w/8; +%%pickup quill; +%%lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; +%%x11=lft x1+alpha/2; y11=top y1-0.5thin; +%%x12=rt x2; y12=bot y1+0.5thin; +%%draw_triangle(11,alpha); +%%draw_rutriangle(12,alpha); +pickup halfquill; +lft x21=pcshiftx+jut; rt x22=w-pcshiftx-jut; y21=y22=1/2h; +draw z21--z22; +draw_roundserif(21,22,srad); draw_flatserif(22,21,srad); +penlabels(1,2); +endchar; % end of "-" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{--} +% The `--' (en-dash) ligature. +% \begin{macrocode} + +cmchar "En dash"; +beginchar(oct"173",sb#+hstretch*(x_height#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb/2; +%%numeric alpha; alpha:=w/8; +%%pickup quill; +%%lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; +%%x11=lft x1+alpha/2; y11=top y1-0.5thin; +%%x12=rt x2; y12=bot y1+0.5thin; +%%draw_triangle(11,alpha); +%%draw_rutriangle(12,alpha); +pickup halfquill; +lft x21=pcshiftx+jut; rt x22=w-pcshiftx-jut; y21=y22=1/2h; +draw z21--z22; +draw_roundserif(21,22,srad); draw_flatserif(22,21,srad); +penlabels(1,2); +endchar; % end of "--" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{---} +% The `---' (em dash) ligature. The em dash is twice the width of the en dash. +% \begin{macrocode} + +cmchar "Em dash"; +beginchar(oct"174",sb#+hstretch*(2x_height#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb/2; +%%numeric alpha; alpha:=w/8; +%%pickup quill; +%%lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; +%%x11=lft x1+alpha/2; y11=top y1-0.5thin; +%%x12=rt x2; y12=bot y1+0.5thin; +%%draw_triangle(11,alpha); +%%draw_rutriangle(12,alpha); +pickup halfquill; +lft x21=pcshiftx+jut; rt x22=w-pcshiftx-jut; y21=y22=1/2h; +draw z21--z22; +draw_roundserif(21,22,srad); draw_flatserif(22,21,srad); +penlabels(1,2); +endchar; % end of "---" + +% \end{macrocode} +% \end{routine} +% +% +% +% \begin{routine}{&} +% The ampersand (which is really an `et' ligature). +% \begin{macrocode} + +cmchar "RTND ampersand"; +beginchar("&", 2sb#+hstretch*(5/4x_height#+2jut#), asc_height#, 0); +adjust_fit(0,0); +numeric n[]; +path pth[]; +pcshiftx:=sb; +pickup quill; +%% alpha looking part +n1 := w-2pcshiftx-jut; % actual letter width +n2 := h/ascratio; % x-height +n3 := 16/16n2; % height of alpha +x1 = w-pcshiftx; bot y1 = 0; +x3 = pcshiftx + 12/16n1; y3 = 1/2n3; +lft x5 = pcshiftx; y5 = y3; +x4 = x6 = 1/2[x5,x3]; +top y4 = n3; bot y6 = 0; +%rt x8 = w-pcshiftx-jut; top y8=h; +rt x8 = w-pcshiftx-jut; +top y8 = h - thick; +x9 = x8-2jut; x10-x8 = x8-x9; +y9=y10=y8; +%pth1 := z1{left}..z3..z4{left}..z5{down}..z6{right}..z3..z8{up}; +pth1 := z1{left}..z3..z4{left}.. tension 0.8 ..z5{down}.. + tension 0.8 ..z6{right}..z3..z8{up}; +%% loop +z21 = z5; +z25 = point 1.5 of pth1; +x23 = 1/2[x21,x25]; +%y23 = 7/8[y4,y8]; +top y23 = h; +pth2 := z21{up}..z23{right}..z25{down}; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw pth1; draw z8--z10; % alpha +draw pth2; % loop +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,10,16,17,18,19,21,22,23,24,25); +endchar; % end of "&" + +% \end{macrocode} +% \end{routine} +% +% +% +% The end of this file. +% \begin{macrocode} +% +% \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> +% RTNDDIG.MF Program file for Early Gothic digits +% + +% \end{macrocode} +% +% +% +% \begin{routine}{1} +% The digit `1'. +% \begin{macrocode} +cmchar "RTND digit 1"; +beginchar("1", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +x1=x2=w/2; +y1=h; bot y2=0; +%%ductus:=true; +draw_tstem(1,2,srad); +draw_flatserif(1,2,srad); +%draw_roundserif(2,1,srad); +%draw_flatserif(2,1,srad); +draw_flat_foot(2); +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,100); +endchar; % end "1" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{2} +% The digit `2'. +% \begin{macrocode} +cmchar "RTND digit 2"; +beginchar("2", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +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; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_wave(5,6,thin); % foot +%draw z1..z2{right}..z3{down}..{-pdir}z5wl; % curve +draw z1..z2{right}.. tension 0.8 ..z3{down}..{-pdir}z5wl; % curve +ductus:=false; +penlabels(1,2,3,4,5,6,100); +endchar; % end "2" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{3} +% The digit `3'. +% \begin{macrocode} +cmchar "RTND 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 "RTND digit 4"; +beginchar("4", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% the stem +x1=x2=w-pcshiftx-jut; +y1=h; bot y2=0; +% the crossbar +lft x3=pcshiftx; y3=0.33h; +rt x4=w-pcshiftx; y4=y3; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % main stem +draw_flat_foot(2); +draw_wave(3,4,thin); % crossbar +draw z3wl--z1; % diagonal +ductus:=false; +penlabels(1,2,3,4,100); +endchar; % end "4" + +% \end{macrocode} +% \end{routine} +% +% +% +% \begin{routine}{5} +% The digit `5'. +% \begin{macrocode} +cmchar "RTND digit 5"; +beginchar("5", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +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; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_wave(2,1,thin); % top squiggle +%draw z3{pdir}..z5{down}..z6{left}..z7; % curve +draw z3{pdir}..z5{down}.. tension 0.8 ..z6{left}..z7; % curve +draw z2wl--z3; % vertical +ductus:=false; +penlabels(1,2,3,4,5,6,7,100); +endchar; % end "5" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{6} +% The digit `6'. +% \begin{macrocode} +cmchar "RTND 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; +draw z1..z2{left}.. tension 0.8 ..z3{down}.. tension 0.8 ..z4{right}.. tension 0.8 + ..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 "RTND digit 7"; +beginchar("7", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% top bar +lft x1=pcshiftx; +rt x2=w-pcshiftx; +top y1=top y2=h; +% bowed leg +x4=w/2; bot y4=0; +x3=0.5[x2,x4]-3thin; y3=0.5[y2,y4]; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_wave(1,2,thin); % top bar +draw z1wr..z3..z4; +draw_flat_foot(4); +ductus:=false; +penlabels(1,2,3,4,5,6,100); +endchar; % end "7" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{8} +% The digit `8'. +% \begin{macrocode} +cmchar "RTND 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.. tension 0.8 ..z2.. tension 0.8 ..z3..z5.. + z11.. tension 0.8 ..z4.. tension 0.8 ..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 "RTND 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; +draw z1..z2{right}.. tension 0.8 ..z3{up}.. tension 0.8 ..z4{left}.. + tension 0.8 ..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 "RTND 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; +draw z1.. tension 0.8 ..z2.. tension 0.8 ..z3.. tension 0.8 ..z4.. tension 0.8 ..cycle; +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,100); +endchar; % end "0" + +% \end{macrocode} +% \end{routine} +% +% +% The end of this file. +% \begin{macrocode} +% +% \end{macrocode} +% +% +% \section{The font definition files} \label{sec:fd} +% +% The font comes in normal and bold weights only. +% +% \begin{macrocode} +%<*fdot1> +\DeclareFontFamily{OT1}{rtnd}{} + \DeclareFontShape{OT1}{rtnd}{m}{n}{ <-8.5> rtnd7 <8.5-15> rtnd10 <15-> rtnd17 }{} + \DeclareFontShape{OT1}{rtnd}{m}{sl}{ <-> sub * rtnd/m/n }{} + \DeclareFontShape{OT1}{rtnd}{m}{it}{ <-> sub * rtnd/m/n }{} + \DeclareFontShape{OT1}{rtnd}{m}{sc}{ <-> sub * rtnd/m/n }{} + \DeclareFontShape{OT1}{rtnd}{m}{u}{ <-> sub * rtnd/m/n }{} + \DeclareFontShape{OT1}{rtnd}{bx}{n}{ <-8.5> rtndb7 <8.5-15> rtndb10 <15-> rtndb17 }{} + \DeclareFontShape{OT1}{rtnd}{bx}{it}{ <-> sub * rtnd/bx/n }{} + \DeclareFontShape{OT1}{rtnd}{bx}{sl}{ <-> sub * rtnd/bx/n }{} + \DeclareFontShape{OT1}{rtnd}{b}{n}{ <-> sub * rtnd/bx/n }{} +% +% \end{macrocode} +% +% +% \begin{macrocode} +%<*fdt1> +\DeclareFontFamily{T1}{rtnd}{} + \DeclareFontShape{T1}{rtnd}{m}{n}{ <-8.5> rtnd7 <8.5-15> rtnd10 <15-> rtnd17 }{} + \DeclareFontShape{T1}{rtnd}{m}{sl}{ <-> sub * rtnd/m/n }{} + \DeclareFontShape{T1}{rtnd}{m}{it}{ <-> sub * rtnd/m/n }{} + \DeclareFontShape{T1}{rtnd}{m}{sc}{ <-> sub * rtnd/m/n }{} + \DeclareFontShape{T1}{rtnd}{m}{u}{ <-> sub * rtnd/m/n }{} + \DeclareFontShape{T1}{rtnd}{bx}{n}{ <-8.5> rtndb7 <8.5-15> rtndb10 <15-> rtndb17 }{} + \DeclareFontShape{T1}{rtnd}{bx}{it}{ <-> sub * rtnd/bx/n }{} + \DeclareFontShape{T1}{rtnd}{bx}{sl}{ <-> sub * rtnd/bx/n }{} + \DeclareFontShape{T1}{rtnd}{b}{n}{ <-> sub * rtnd/bx/n }{} +% +% \end{macrocode} +% +% \section{The package code} \label{sec:code} +% +% \subsection{The \Lpack{rotunda} package} +% +% The \Lpack{rotunda} 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{rotunda}[2002/12/30 v1.0 package for Rotunda 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}{\rtndfamily} +% Selects the \thisfont{} font family in the OT1 or T1 encoding. +% \begin{macrocode} +\ifx\Tienc\encodingdefault + \newcommand{\rtndfamily}{\usefont{T1}{rtnd}{m}{n}} +\else + \newcommand{\rtndfamily}{\usefont{OT1}{rtnd}{m}{n}} +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\textrtnd} +% Text command for the \thisfont{} font family. +% \begin{macrocode} +\DeclareTextFontCommand{\textrtnd}{\rtndfamily} +% \end{macrocode} +% \end{macro} +% +% The end of this package. +% \begin{macrocode} +% +% \end{macrocode} +% +% \subsection{The \Lpack{allrtnd} package} +% +% The \Lpack{allrtnd} 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{rotunda} package. +% \begin{macrocode} +%<*uscall> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{allrtnd}[2002/12/30 v1.0 package for all Rotunda fonts] +\RequirePackage{rotunda} +% \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}{rtnd} +\renewcommand{\sfdefault}{rtnd} +\renewcommand{\ttdefault}{rtnd} +% \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}{\rtnd@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{\rtnd@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}{\rtnd@new@setfontsize} +% This is a macro that replaces the |\@setfontsize| macro which is called by +% the font size changing commands. +% \begin{macrocode} +\newcommand{\rtnd@new@setfontsize}[3]{% + \edef\@tempa{\def\noexpand\@tempb####1<#2}% + \@tempa>##2<##3\@nil{\def\rtnd@baselineskip@value{##2}}% + \edef\@tempa{\noexpand\@tempb\rtnd@baselineskip@table<#2}% + \@tempa><\@nil + \ifx\rtnd@baselineskip@value\@empty + \def\rtnd@baselineskip@value{#3}% + \fi + \rtnd@old@setfontsize{#1}{#2}\rtnd@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\rtnd@old@setfontsize=\@setfontsize + \let\@setfontsize=\rtnd@new@setfontsize} +\AtBeginDocument{\normalsize} +% \end{macrocode} +% +% +% The end of this package. +% \begin{macrocode} +% +% \end{macrocode} +% +% +% +% +% +% \Finale +% \PrintIndex +% +\endinput + +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} + + diff --git a/Master/texmf-dist/source/fonts/bookhands/rotunda.ins b/Master/texmf-dist/source/fonts/bookhands/rotunda.ins new file mode 100644 index 00000000000..8bd58e53132 --- /dev/null +++ b/Master/texmf-dist/source/fonts/bookhands/rotunda.ins @@ -0,0 +1,101 @@ +%% +%% rotunda.ins +%% Copyright 1999 Peter R. Wilson +%% +%% This program is provided under the terms of the +%% LaTeX Project Public License distributed from CTAN +%% archives in directory macros/latex/base/lppl.txt. +%% +%% Author: Peter Wilson (CUA) +%% now at: peter.r.wilson@boeing.com +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\batchfile{rotunda.ins} +\input docstrip.tex +\preamble + + Copyright 1999 Peter R. Wilson + + This program is provided under the terms of the + LaTeX Project Public License distributed from CTAN + archives in directory macros/latex/base/lppl.txt. + +Author: Peter Wilson (CUA) + now at: peter.r.wilson@boeing.com + +\endpreamble + +\keepsilent + +%%% \Msg{*** Generating the driver file ***} +%%% \generateFile{rotunda.drv}{t}{\from{rotunda.dtx}{driver}} + +\Msg{*** Generating the Metafont files ***} + +\usepostamble\empty +\generateFile{rtnd7.mf}{t}{\from{rotunda.dtx}{base7}} +\generateFile{rtnd10.mf}{t}{\from{rotunda.dtx}{base10}} +\generateFile{rtnd17.mf}{t}{\from{rotunda.dtx}{base17}} +\generateFile{rtndb7.mf}{t}{\from{rotunda.dtx}{base7b}} +\generateFile{rtndb10.mf}{t}{\from{rotunda.dtx}{base10b}} +\generateFile{rtndb17.mf}{t}{\from{rotunda.dtx}{base17b}} +\generateFile{rtndl.mf}{t}{\from{rotunda.dtx}{min}} +\generateFile{rtndu.mf}{t}{\from{rotunda.dtx}{maj}} +\generateFile{rtndtitle.mf}{t}{\from{rotunda.dtx}{mfd}} +\generateFile{rtndpunct.mf}{t}{\from{rotunda.dtx}{punct}} +\generateFile{rtndlig.mf}{t}{\from{rotunda.dtx}{lig}} +\generateFile{rtnddig.mf}{t}{\from{rotunda.dtx}{dig}} + +\Msg{*** Generating the Font Definition files ***} +\usepostamble\defaultpostamble + +\generateFile{ot1rtnd.fd}{t}{\from{rotunda.dtx}{fdot1}} +\generateFile{t1rtnd.fd}{t}{\from{rotunda.dtx}{fdt1}} + +\Msg{*** Generating the LaTeX2e package files ***} + +\generateFile{rotunda.sty}{t}{\from{rotunda.dtx}{usc}} +\generateFile{allrtnd.sty}{t}{\from{rotunda.dtx}{uscall}} + +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into directories searched by TeX:} +\Msg{*} +\Msg{* Move these into the font source area:} +\Msg{* \space\space rtnd7.mf} +\Msg{* \space\space rtnd10.mf} +\Msg{* \space\space rtnd17.mf} +\Msg{* \space\space rtndb7.mf} +\Msg{* \space\space rtndb10.mf} +\Msg{* \space\space rtndb17.mf} +\Msg{* \space\space rtndl.mf} +\Msg{* \space\space rtndu.mf} +\Msg{* \space\space rtndtitle.mf} +\Msg{* \space\space rtndpunct.mf} +\Msg{* \space\space rtndlig.mf} +\Msg{* \space\space rtnddig.mf} +\Msg{*} +\Msg{* Move these into the LaTeX macro area:} +\Msg{* \space\space ot1rtnd.fd} +\Msg{* \space\space t1rtnd.fd} +\Msg{* \space\space rotunda.sty} +\Msg{* \space\space allrtnd.sty} +\Msg{*} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* `.dtx' through LaTeX.} +\Msg{* Process any name.idx file by:} +\Msg{* \space\space\space\space makeindex -s gind.ist name} +\Msg{* Process any name.glo file by:} +\Msg{* \space\space\space\space makeindex -s gglo.ist -o name.gls name.glo} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} + +\endinput diff --git a/Master/texmf-dist/source/fonts/bookhands/rustic.dtx b/Master/texmf-dist/source/fonts/bookhands/rustic.dtx new file mode 100644 index 00000000000..f42b4d0df45 --- /dev/null +++ b/Master/texmf-dist/source/fonts/bookhands/rustic.dtx @@ -0,0 +1,3778 @@ +% \iffalse meta-comment +% +% rustic.dtx +% Copyright 1999 Peter R. Wilson +% +% This program is provided under the terms of the +% LaTeX Project Public License distributed from CTAN +% archives in directory macros/latex/base/lppl.txt. +% +% Author: Peter Wilson (CUA) (now at: peter.r.wilson@boeing.com) +% +% If you do not have the docmfp package (available from CTAN in +% tex-archive/macros/latex/contrib/supported), comment out the +% \usepackage{docmfp} line below and uncomment the line following it. +% +%<*driver> +\documentclass{ltxdoc} +\usepackage{docmfp} +%%%%%% \providecommand{\DescribeVariable}[1]{} \newenvironment{routine}[1]{}{} +\EnableCrossrefs +\CodelineIndex +\setcounter{StandardModuleDepth}{1} +\begin{document} + \DocInput{rustic.dtx} +\end{document} +% +% +% \fi +% +% \CheckSum{137} +% +% \DoNotIndex{\',\.,\@M,\@@input,\@addtoreset,\@arabic,\@badmath} +% \DoNotIndex{\@centercr,\@cite} +% \DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue} +% \DoNotIndex{\@input,\@ixpt,\@m} +% \DoNotIndex{\@minus,\@mkboth,\@ne,\@nil,\@nomath,\@plus,\@set@topoint} +% \DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb} +% \DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt} +% \DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt} +% \DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace} +% \DoNotIndex{\advance,\Alph,\alph} +% \DoNotIndex{\arabic,\ast,\begin,\begingroup,\bfseries,\bgroup,\box} +% \DoNotIndex{\bullet} +% \DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption} +% \DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass} +% \DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\endtrivlist} +% \DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup} +% \DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter} +% \DoNotIndex{\fbox} +% \DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef} +% \DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule} +% \DoNotIndex{\hsize,\hskip,\hspace,\hss,\if@tempswa,\ifcase,\or,\fi,\fi} +% \DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\fi,\fi,\fi,\fi,\fi} +% \DoNotIndex{\input} +% \DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark} +% \DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright} +% \DoNotIndex{\month,\newcommand,\newcounter,\newenvironment} +% \DoNotIndex{\NeedsTeXFormat,\newdimen} +% \DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number} +% \DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\p@} +% \DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip} +% \DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions} +% \DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright} +% \DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font} +% \DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily,\roman} +% \DoNotIndex{\roman,\secdef,\selectfont,\setbox,\setcounter,\setlength} +% \DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space} +% \DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase} +% \DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt} +% \DoNotIndex{\viipt,\vipt,\vskip,\vspace} +% \DoNotIndex{\wd,\xiipt,\year,\z@} +% +% \changes{v1.0}{1999/05/01}{First public release} +% \changes{v1.0a}{2001/01/02}{Fixed missing * in .fd files} +% +% ^^A \def\fileversion{v1.0} +% ^^A \def\filedate{1999/05/01} +% \def\fileversion{v1.0a} +% \def\filedate{2001/01/02} +% \newcommand*{\Lpack}[1]{\textsf {#1}} ^^A typeset a package +% \newcommand*{\Lopt}[1]{\textsf {#1}} ^^A typeset an option +% \newcommand*{\file}[1]{\texttt {#1}} ^^A typeset a file +% \newcommand*{\Lcount}[1]{\textsl {\small#1}} ^^A typeset a counter +% \newcommand*{\pstyle}[1]{\textsl {#1}} ^^A typeset a pagestyle +% \newcommand*{\Lenv}[1]{\texttt {#1}} ^^A typeset an environment +% \newcommand*{\AD}{\textsc{ad}} +% +% \title{The \Lpack{rustic} fonts\thanks{This +% file has version number \fileversion, last revised +% \filedate.}} +% +% \author{% +% Peter Wilson\\ +% Catholic University of America \\ +% Now at \texttt{peter.r.wilson@boeing.com} +% } +% \date{\filedate} +% \maketitle +% \begin{abstract} +% The \Lpack{rustic} and \Lpack{allrust} packages provide a set of +% Metafont Roman Rustic book-hands +% as used +% for manuscripts in the 1st to the 6th century. This is one in a series +% of manuscript fonts. +% \end{abstract} +% \tableofcontents +% +% \StopEventually{} +% +% +% +% \section{Introduction} +% +% The \Lpack{rustic} and \Lpack{allrust} packages provide +% a Metafont~\cite{METAFONT} version +% of the Roman Rustic manuscript book-hand that was in use between about the +% first and sixth centuries~\AD. It is part of a project to provide fonts +% covering the major manuscript hands between the first century~\AD{} and +% the invention of printing. The principal resources used in this project +% are listed in the Bibliography. +% +% This manual is typeset according to the conventions of the +% \LaTeX{} \textsc{docstrip} utility which enables the automatic +% extraction of the \LaTeX{} macro source files~\cite{GOOSSENS94}. +% The \Lpack{docmfp} package is used for documenting the Metafont portions +% of the distribution~\cite{DOCMFP}. +% +% Section~\ref{sec:usc} describes the usage of the package. +% Commented code for the fonts is in Sections~\ref{sec:mf} and~\ref{sec:fd} +% and source code for the packages is in Section~\ref{sec:code}. +% +% \subsection{Manuscript book-hands} +% +% Before the invention of printing all books were written by hand. The book-hands +% used by the scribes and copyists for the manuscripts changed as time +% went on. Table~\ref{tab:1} lists some of the common book-hands which were used +% between the 1st and 15th centuries. The later book-hands formed the basis of the +% fonts used by the early printers, which in turn form the basis of the printing +% fonts in use today. +% +% The manuscript book-hands were written with a broad nibbed reed or quill +% pen. Among the distinguishing characteristics of a hand, apart from the +% actual shape of the letters, are the angle of the pen (which controls the +% variation between thick and thin strokes) and the height of a letter compared +% to the width of the nib. The lower the ratio of the letter height to nib +% width, the more condensed is the script. The scripts also varied in their +% typical height. +% +% Table~\ref{tab:1} gives an `average' x-height for each +% script, which I obtained by measuring a sample of photographs of +% manuscripts written in the various hands. About a dozen examples +% of each book-hand were measured. This figure should not be taken too +% seriously. +% +% There was not a sharp division between the use of one hand and another. +% Many manuscripts exhibit a variety of hands in the same document. For example, +% the scribe writing in an Uncial hand may have used Roman Rustic letters +% for capitals. Usually the same pen was used for the two different scripts. +% +% Generally speaking, as a hand got older it became more embelished and +% calligraphic, 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 \\ +% Artificial Uncial & 6--10 & 4.2 & 3--6 & 10 & 1.40 \\ +% Half Uncial & 3--9 & 3.2 & 3--6 & 20--30 & 1.07 \\ +% 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. +% +% In the first century punctuation was virtually unknown, and typically there +% 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 Roman Rustic script} +% +% The Roman Rustic hand, which is a majuscule script, was in use for some five +% centuries until it was suceeded by the Uncial book-hands. Usually the +% lettering in a manuscript was all one size. If the scribe felt the need +% for `capital' letters then, using the same pen, would write a slightly larger +% letter. +% During the period when the +% script was used the alphabet only had 23 letters. I have included +% the missing J, U and W. +% +% Arabic numerals were unknown at this time, so all numbers were written +% using the roman numbering system. I have provided Roman Rustic versions of +% the arabic digits. +% +% Punctuation was non-existant. A dot at mid-height might be used as +% a word seperator, but that was all. Paragraphs had no indentation, neither +% was there any extra vertical space between paragraphs. Essentially, the +% script ran continuously with no spaces, even between words. +% +% The `leading' --- the amount of white space between lines --- was about +% the same height as the letters. +% +% +% \section{The \Lpack{rustic} and \Lpack{allrust} package} \label{sec:usc} +% +% The Roman Rustic font family is called |rust|. The font is supplied in both +% OT1 and T1 encodings. +% +% \subsection{The \Lpack{rustic} package} +% +% This is intended for the occasions when some short pieces of text have to be +% written in Roman Rustic while the majority of the document is in another font. +% The normal baselineskips are used. +% +% \DescribeMacro{\rustfamily} +% The |\rustfamily| declaration starts typesetting with the Roman Rustic fonts. +% Use of the Rustic font will continue until either there is another |\...family| +% declaration or the current group (e.g., environment) is closed. +% +% \DescribeMacro{\textrust} +% The command |\textrust{|\meta{text}|}| will typeset \meta{text} using the +% Roman Rustic fonts. +% +% \subsection{The \Lpack{allrust} package} +% +% This package is for when the entire document will be typeset with the +% Roman Rustic font. The baselineskips are set to those appropriate to the +% book-hand. +% +% This is a minimalist package. Apart from declaring Roman Rustic 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{allrust} package automatically loads the \Lpack{rustic} package, +% so the rustic font commands are available if necessary. +% +% +% +% \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 Rustic font comes in three sizes and also as a normal +% and a bold font. +% \begin{macrocode} +%<*base7|base10|base17|base7b|base10b|base17b> +%%%% RUST7.MF Roman Rustic at 7 point design size. +%%%% RUST10.MF Roman Rustic at 10 point design size. +%%%% RUST17.MF Roman Rustic at 17 point design size. +%%%% RUSTB7.MF Roman Rustic Bold at 7 point design size. +%%%% RUSTB10.MF Roman Rustic Bold at 10 point design size. +%%%% RUSTB17.MF Roman Rustic 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 + +%font_identifier:="RUST"; font_size 7pt#; +%font_identifier:="RUST"; font_size 10pt#; +%font_identifier:="RUST"; font_size 17.28pt#; +%font_identifier:="RUSTB"; font_size 7pt#; +%font_identifier:="RUSTB"; font_size 10pt#; +%font_identifier:="RUSTB"; font_size 17.28pt#; + +% \end{macrocode} +% +% \DescribeVariable{jutstretch} +% The scaling for minuscule serifs wrt 17pt size. +% \begin{macrocode} +% jutstretch:=1.19; +% jutstretch:=1.152; +% jutstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{stemstretch} +% The scaling for minuscule stem widths wrt 17pt size. +% \begin{macrocode} +% stemstretch:=1.50; +% stemstretch:=1.31; +% stemstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{caprat} +% The scaling for `capitals' wrt `lowercase'. This is pretty much a guess. +% \begin{macrocode} + caprat:=1.2; % ratio of capital height to minuscule height +% \end{macrocode} +% +% \DescribeVariable{cap_jutstretch} +% Scaling for majuscule serifs wrt 17pt size. +% \begin{macrocode} +% cap_jutstretch:=1.3; +% cap_jutstretch:=1.2; +% cap_jutstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{cap_stemstretch} +% Scaling for majuscule stem width wrt 17pt size. +% \begin{macrocode} +% cap_stemstretch:=1.45; +% cap_stemstretch:=1.31; +% cap_stemstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{bfudge} +% Letter width scaling for bold font wrt normal font. +% \begin{macrocode} +% bfudge:=1.0; +% bfudge:=1.2; +% \end{macrocode} +% +% \DescribeVariable{szfudge} +% Width scaling wrt 17pt size letter width. +% \begin{macrocode} +% szfudge:=1.18; +% szfudge:=1.0; +% szfudge:=1.0; +% \end{macrocode} +% +% \DescribeVariable{hstretch} +% Horizontal stretching factor. +% \begin{macrocode} + hstretch:=szfudge*bfudge; +% \end{macrocode} +% +% \DescribeVariable{carol_height} +% The x-height of the Carolingian minuscule font. +% \begin{macrocode} +% carol_height#:=108.5/36pt#; +% carol_height#:=155/36pt#; +% carol_height#:=268/36pt#; +% \end{macrocode} +% +% \DescribeVariable{vstretch} +% The height of this font wrt the Carolingian font. +% \begin{macrocode} + vstretch:=1.9; + +% \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{thickfudge} +% The reciprocal of the font height in nib widths. Normal font height +% is 6 nib widths and the bold font height is 4.5 nib widths. +% \begin{macrocode} +% thickfudge:=1/6; +% thickfudge:=1/4.5; +% \end{macrocode} +% +% \DescribeVariable{thinfudge} +% The nib sharpness. +% \begin{macrocode} +thinfudge:=1/6; +% \end{macrocode} +% +% \DescribeVariable{thick} +% The maximum nib width. +% That is, the width of the thickest line that can be penned. +% \begin{macrocode} +thick#:=stemstretch*thickfudge*x_height#; % max pen breadth +% \end{macrocode} +% +% \DescribeVariable{thin} +% The nib thinness. +% That is, the width of the thinnest line that can be penned. +% \begin{macrocode} +thin#:=thinfudge*thick#; +% \end{macrocode} +% +% \DescribeVariable{pangle} +% The pen angle (in degrees). +% \begin{macrocode} +pangle:=45; % pen angle +% \end{macrocode} +% +% \DescribeVariable{u} +% The unit width. The CMR values are used. +% \begin{macrocode} +% u#:=15.5/36pt#; +% u#:=17.9/36pt#; +% u#:=20/36pt#; +% u#:=23/36pt#; +% u#:=32.5/36pt#; +% 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 +% cap_serif_fit#:=3.5/36pt#; % extra sidebar near uppercase serifs +% cap_serif_fit#:=5/36pt#; % extra sidebar near uppercase serifs +% cap_serif_fit#:=8/36pt#; % extra sidebar near uppercase serifs +% letter_fit#:=0pt#; % extra space added to all sidebars +% letter_fit#:=0pt#; % extra space added to all sidebars +% letter_fit#:=-0.1pt#; % extra space added to all sidebars + +% \end{macrocode} +% +% +% \DescribeVariable{asc_height} +% The height of lower case ascenders. +% \begin{macrocode} + asc_height#:=6/5x_height#; +% \end{macrocode} +% +% \DescribeVariable{desc_depth} +% The depth of lower case descenders (the tail of the Q). +% \begin{macrocode} + desc_depth#:=2/3thick#; +% \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. +% \begin{macrocode} + fig_width#:=hstretch*(3/5x_height#); +% \end{macrocode} +% +% \DescribeVariable{cap_height} +% The height of capital letters. +% \begin{macrocode} + cap_height#:=caprat*asc_height#; % height of caps +% \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} +% rule_thickness#:=.34pt#; +% rule_thickness#:=.4pt#; +% rule_thickness#:=.6pt#; + +% \end{macrocode} +% +% \DescribeVariable{jutfudge} +% Controls the protrusion of serifs. +% \begin{macrocode} +jutfudge:= 5/8; +% \end{macrocode} +% +% \DescribeVariable{jut} +% The lowercase serif protrusion. +% \begin{macrocode} +jut#:=jutstretch*jutfudge*thick#; +% \end{macrocode} +% +% \DescribeVariable{hookjut} +% The horizontal protrusion of hook serifs. +% \begin{macrocode} +hookjut#:=1/2jut#; +% \end{macrocode} +% +% \DescribeVariable{footjut} +% Half the horizontal width of a foot stroke, assuming vertical ends. +% \begin{macrocode} +footjut#:=2/20x_height#; +% \end{macrocode} +% +% \DescribeVariable{extra_fhjut} +% Half the extra horizontal width of a foot or head stroke, taking sloped +% ends into account. Thus the maximum overall horizontal width is +% |2(footjut+extra_fhjut)|. +% \begin{macrocode} +extra_fhjut#:=1/3thick#; +% \end{macrocode} +% +% \DescribeVariable{stem_offset} +% The x offset of the center of a left (stem + foot) from the left of the +% character box. +% \begin{macrocode} +stem_offset#:=8/12thick#+thin#; +% \end{macrocode} +% +% \DescribeVariable{srad} +% |srad| with |0 < srad < 1| controls the serif radius. +% \begin{macrocode} +srad:=0.5; +% \end{macrocode} +% +% \DescribeVariable{wiggle} +% Controls the amount of wiggle in a |squiggle|, with |0 <= wiggle <1|. +% \begin{macrocode} +wiggle:= 0.05; +% \end{macrocode} +% +% \DescribeVariable{bowoff} +% Controls the amount of bow in a |bow|, with |0 <= bowoff <1|. +% \begin{macrocode} +bowoff:= 0.05; +% \end{macrocode} +% +% \DescribeVariable{o} +% Amount of overshoot for curves (as in an `o'). Use CMR values. +% \begin{macrocode} +% o#:=5/36pt#; +% o#:=8/36pt#; +% o#:=10/36pt#; + +% \end{macrocode} +% +% \DescribeVariable{thick_tltobr} +% A vector of the slope of thick diagonals from the top left point to the +% bottom right point. Use as: +% |ztl-zbr = whatever*thick_tltobr|. +% \begin{macrocode} +pair thick_tltobr; +thick_tltobr:=(-2,5); + +% \end{macrocode} +% +% \DescribeVariable{slant} +% |slant| is the amount the font slopes to the right. +% \begin{macrocode} +slant:=0; % tilt ratio $(\Delta x/\Delta y)$ + +% \end{macrocode} +% +% \DescribeVariable{monospace} +% We are generating a variable-width font. +% \begin{macrocode} +monospace:=false; % should all characters have the same width? + +% \end{macrocode} +% +% \DescribeVariable{dot_size} +% The size of (punctuation) dots. +% \begin{macrocode} +dot_size#:=5thin#; % size of dots +% \end{macrocode} +% +% \DescribeVariable{comma_width} +% The horizontal width of a comma. +% \begin{macrocode} +comma_width#:=2.5dot_size#; + +% \end{macrocode} +% +% Finally, call the driver file for the font. +% \begin{macrocode} +generate rusttitle %% switch to the driver file + +% \end{macrocode} +% +% The end of this code section. +% \begin{macrocode} +% +% \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 RUSTTITLE.MF for the Roman Rustic 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}{rustic_font_setup} +% This macro contains the set up for the fonts. +% \begin{macrocode} + +def rustic_font_setup= + define_pixels(side,half_height,carol_height,comma_width); + define_pixels(u,dot_size,letter_size,cap_height,width_adj,serif_fit, + cap_serif_fit,jut,cap_jut); + define_pixels(hookjut,footjut,stem_offset,extra_fhjut,fig_width); + define_whole_pixels(letter_fit); + define_whole_vertical_pixels(body_height,asc_height,cap_height,x_height, + desc_depth,body_depth,fig_height); + define_corrected_pixels(o); + define_blacker_pixels(thick,thin); + let adjust_fit = normal_adjust_fit; +% \end{macrocode} +% \DescribeVariable{stylus} +% The pen for drawing the thinnest lines is |stylus|. +% \begin{macrocode} + pickup pencircle scaled thin; + stylus:=savepen; +% \end{macrocode} +% \DescribeVariable{quill} +% The normal calligraphic pen is |quill|. +% \begin{macrocode} + pickup pencircle xscaled thick yscaled thin rotated pangle; + quill:=savepen; +% \end{macrocode} +% \DescribeVariable{bowpen} +% The pen for drawing a bow is |bowpen|. +% \begin{macrocode} + pickup pencircle xscaled thick yscaled thin rotated ((1/2(pangle+90))); + bowpen:=savepen; + numeric pcshiftx#; % x value of LHS of box wrt origin of char box + define_pixels(pcshiftx); + numeric sqxside#; % x size of the square + numeric sqyside#; % y size of the square + define_pixels(sqxside,sqyside); + +enddef; % end of rustic_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{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_rusticstem} +% A macro to draw a rustic thin vertical stem. +% |draw_rusticstem(1,2)| draws the stem with top at |z1| and bottom at |z2|. +% \begin{macrocode} + +def draw_rusticstem(suffix $, $$)= + numeric alpha, beta; alpha:=0.5thick; + beta:=60; % the ending angle + pair rustic[]; + xpart rustic1=x$$; ypart rustic1=y$$+alpha*sind(beta); + z$a=1/2[z$,rustic1]; + z$b=2/3[z$,rustic1]; + z$c=5/6[z$,rustic1]; + z$d=rustic1; + z$ar=z$a shifted (alpha*up); z$al=z$a shifted (alpha*down); + + rustic2:=z$b shifted (alpha*right); + z$br=rustic2 rotatedaround(z$b,1/4[90,beta]); z$bl=z$br rotatedaround(z$b,180); + + rustic2:=z$c shifted (alpha*right); + z$cr=rustic2 rotatedaround(z$c,1/2[90,beta]); z$cl=z$cr rotatedaround(z$c,180); + + rustic2:=z$d shifted (alpha*right); +%% z$dr=rustic2 rotatedaround(z$d,60); z$dl=z$dr rotatedaround(z$d,180); + rustic3=rustic2 rotatedaround(z$d,beta); + x$dr=xpart rustic3; y$dr=ypart rustic3 - thin; + z$dl=z$dr rotatedaround(z$d,180); + pen oldpen; oldpen:=currentpen; + pickup stylus; + draw z$--z$al; +%% filldraw z$ar..z$br..z$cr..z$dr--z$dl..z$cl..z$bl..z$al--cycle; + filldraw z$ar..z$br..z$cr..z$dr--z$dl..z$bl..z$al--cycle; + pickup oldpen; +%% labels($a,$al,$ar,$b,$bl,$br,$c,$cl,$cr,$dl,$dr); + labels($a,$b,$c,$d,$dl,$dr); +enddef; % end of draw_rusticstem + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{draw_hserif} +% A macro to draw a hooked serif. |draw_hserif(1,2,f)| uses the |stylus| pen to +% draw a serif of extent |hookjut| at |z1| to the left of the line from |z2| +% to |z1|. The +% radius is controlled by |f|, where $0y$$: + top_serif := true; + z$c=z$b shifted (-bjut*pdir); + else: + if y$=y$$: + if x$ +% \end{macrocode} +% +% \subsection{The code for normal letters} +% +% The following code is for the normal alphabetic characters. +% +% \begin{macrocode} +%<*min> +% RUSTL.MF Program file for normal rustic letters +% + + +% \end{macrocode} +% +% +% \begin{routine}{a} +% The letter `a'. +% \begin{macrocode} +cmchar "Rustic letter a"; +beginchar("a", 2u#+hstretch*(4/5x_height#+jut#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% right leg +z1-z2=whatever*thick_tltobr; +top y1=h; +rt x2=w-pcshiftx-jut; bot y2=0; +% for the left leg +z3=9/10[z2,z1]; +x4=pcshiftx+footjut+extra_fhjut; bot y4=0; +% code for foot +x7=x4; y7=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_istem(1,2,srad); % right leg +draw_bow(3,4,bowoff); % left leg +draw_foot(7); % left leg foot +ductus:=false; +penlabels(1,2,3,4,5,6,100); +endchar; % end "a" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{b} +% The letter `b'. This is a tall letter +% \begin{macrocode} +cmchar "Rustic letter b"; +beginchar("b", 2u#+hstretch*(7/10x_height#), 11/10x_height#, 0); +adjust_fit(0,0); +pcshiftx := u+hookjut+thin; +pickup quill; +% stem +x1=x2=pcshiftx; +y1=h; y2=0; +% bottom bowl +rt x3=x1; bot y3=thin; +rt x5=w-u; y5 = 1/6h; +x4=0.4[x2,x5]; y4=0; +lft x6=x2; y6=2/3h; +% top bowl +z7=z6; +x8=0.25[x4,x5]; top y8=y1; +x9=0.5[x1,x8]; bot y9=h; +z10=z1; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_rusticstem(1,2); % the stem +draw z3..z4{right}..z5..{dir(pangle+90)}z6; % bottom bowl +draw z7{pdir}..z8{up}..z9{left}..z10; % top bowl +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,10,100); +endchar; % end "b" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{c} +% The letter `c'. +% \begin{macrocode} +cmchar "Rustic letter c"; +beginchar("c", 2u#+hstretch*(3/5x_height#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +lft x1=pcshiftx; rt x3=pcshiftx+sqxside; y1=y3=h/2; +x2=x4=w/2; top y2=h; bot y4=0; +rt x5= rt x6=w-pcshiftx; +top y5=1/5h; +top y6=4/5h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z5{-pdir}..{left}z4..z1..z2..z6; +ductus:=false; +penlabels(1,2,3,4,5,6,100); +endchar; % end "c" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{d} +% The letter `d'. +% \begin{macrocode} +cmchar "Rustic letter d"; +beginchar("d", 2u#+hstretch*(3/5x_height#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +x1=x2=pcshiftx+hookjut+thin; +top y1=h; y2=0; +% bowl +rt x3=x1; bot y3=thin; +rt x5=w-u; y5 = 2/5h; +x4=0.4[x2,x5]; y4=0; +x6=x1; top y6=h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_rusticstem(1,2); % stem +draw z3..z4{right}..z5{up}..z6; % bowl +ductus:=false; +penlabels(0,1,2,3,4,5,6,100); +endchar; % end "d" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{e} +% The letter `e'. +% \begin{macrocode} +cmchar "Rustic letter e"; +beginchar("e", 2u#+hstretch*(4/10x_height#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% stem +x1=x2=pcshiftx+stem_offset; +top y1=h; y2=0; +% top bar +rt x3=x1; x4=w-u; +top y3=top y4=h; +% middle bar +x5=x3; x6=x4; +y5=y6=3/5h; +% foot +x7=x3; x8=x4; +bot y7= bot y8=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_rusticstem(1,2); % stem +draw_squiggle(3,4,wiggle,srad); % top bar +draw_squiggle(5,6,wiggle,srad); % middle bar +draw_squiggle(7,8,wiggle,srad); % bottom bar +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,100); +endchar; % end "e" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{f} +% The letter `f'. This is a tall letter +% \begin{macrocode} +cmchar "Rustic letter f"; +beginchar("f", 2u#+hstretch*(4/10x_height#), 6/5x_height#, 0); +adjust_fit(0,0); +pcshiftx := u +stem_offset; +pickup quill; +% stem +x1=x2=pcshiftx; +top y1=h; y2=0; +% top bar +x3=x1; x4=w-u; +top y3=top y4=h; +% middle bar +x5=x3; x6=x4; +y5=y6=2/3h; +% foot +x7=x3; x8=x4; +bot y7= bot y8=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_footstem(1,2); % stem +draw_squiggle(3,4,wiggle,srad); % top bar +draw_squiggle(5,6,wiggle,srad); % middle bar +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,100); +endchar; % end "f" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{g} +% The letter `g'. Like a `c' but bottom curls inwards. +% \begin{macrocode} +cmchar "Rustic letter g"; +beginchar("g", 2u#+hstretch*(3/5x_height#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +lft x1=pcshiftx; rt x3=pcshiftx+sqxside; y1=y3=h/2; +x2=x4=w/2; top y2=h; bot y4=0; +rt x5= rt x6=w-pcshiftx; +top y5=1/5h; +top y6=4/5h; +lft x7=w/2; y7=h/2; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z7..z5{down}..{left}z4..z1..z2..z6; % the bowl +ductus:=false; +penlabels(1,2,3,4,5,6,7,100); +endchar; % end "g" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{h} +% The letter `h'. +% \begin{macrocode} +cmchar "Rustic letter h"; +beginchar("h", 2u#+hstretch*(4/5x_height#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +y100 = sqyside/2; x100 = pcshiftx+y100; % square center +pickup quill; +% left stem and foot +x1=x2=pcshiftx+stem_offset; +y1=h; y2=0; +% bar +y5=y6=7/10h; +lft x5=pcshiftx; rt x6=w-pcshiftx; +% right stem +rt x7=w-pcshiftx; top y7=h; +x8=x7; bot y8=0; +x9=x8-2thin; y9=0.5[y8,y7]; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_footstem(1,2); % left stem +draw_hserif(1,2,srad); % its serif +draw_squiggle(5,6,wiggle,srad); % the bar +draw z7..z9..z8; % right stem +ductus:=false; +penlabels(1,1',2,2',3,4,5,6,7,7',8,8',99,99',100); +endchar; % end "h" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{i} +% The letter i. +% \begin{macrocode} +cmchar "Rustic letter i"; +beginchar("i", 2u#+hstretch*(2footjut#+hookjut#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +x1=x2=pcshiftx+stem_offset; +y1=h; y2=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_footstem(1,2); % stem and foot +draw_hserif(1,2,srad); % serif +ductus:=false; +penlabels(1,2,3,4,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 "Rustic letter j"; +beginchar("j", 4u#+hstretch*(3/5x_height#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := 3u; +pickup quill; +% stem +x1=x2=pcshiftx+2/3(w-4u); +y1=h; y2=0; +% top bar +rt x4=w-u; top y4=h; +x1-x3 = x4-x1; y3=y4; +% bowl +rt x5 = lft x3; +top y5=2/5h; +x7=x2; bot y7=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_rusticstem(1,2); % stem +draw_squiggle(3,4,wiggle,srad); % top bar +draw z7{left}..{pdir}z5; % bowl +ductus:=false; +penlabels(1,2,3,4,5,6,7,100); +endchar; % end "j" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{k} +% The letter `k'. +% \begin{macrocode} +cmchar "Rustic letter k"; +beginchar("k", 2u#+hstretch*(x_height#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% the stem and its foot +x1=x2=pcshiftx+stem_offset; +y1=h; y2=0; +lft x13=pcshiftx; bot y13=0; +x2-x13=x14-x2; y14=y13; +% upper diagonal and its top +x3=x1; y3=h/2; +x4=x1+y3; top y4=h; +x5=x4-jut; x6-x4=x4-x5; +top y5=top y6=h; +x24=x4; y24=h; +% bottom leg +lft x7=x3; bot y7=y3; +rt x9=w-pcshiftx; bot y9=0; +x8=0.5[x7,x9]; y8=0.7[y7,y9]; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_footstem(1,2); % the stem +draw_hserif(1,2,srad); % its serif +draw z3--z4; % upper diagonal +draw_head(24); +draw z7..z8..z9; % bottom leg +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,100); +endchar; % end "k" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{l} +% The letter `l'. This is a tall letter. +% \begin{macrocode} +cmchar "Rustic letter l"; +beginchar("l", 2u#+hstretch*(1/2x_height#), 6/5x_height#, 0); +adjust_fit(0,0); +pcshiftx := u+hookjut; +pickup quill; +x1=x2=pcshiftx+thin+hookjut; +y1=h; y2=0; +rt x3=x1; rt x4=w-u; +bot y3= bot y4=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_rusticstem(1,2); % stem +draw_hserif(1,2,srad); % serif +draw_squiggle(3,4,wiggle,srad); % foot +ductus:=false; +penlabels(1,2,3,4,100); +endchar; % end "l" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{m} +% The letter `m'. Like 2 As stuck together. +% \begin{macrocode} +cmchar "Rustic letter m"; +beginchar("m", 2u#+hstretch*(6/5x_height#+jut#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% right a thick diag +z11-z12=whatever*thick_tltobr; +rt x12=w-pcshiftx-jut; bot y12=0; +top y11=h; +% left a thin diag +pickup bowpen; +x4=pcshiftx+footjut+extra_fhjut; bot y4=thin; +z3=9/10[z2,z1]; +pickup quill; +x7=x4; y7=0; % for the foot +% the two thin diags are parallel, and just shifted horizontally +z13=9/10[z12,z11]; +z3-z4=z13-z14; y4=y14; +% similarly for the two thick diags +z1-z2=z11-z12; % y2=y12; +x12-x2=1/3w; +%%ductus:=true; +if ductus: + pickup stylus; +fi +% draw left a +draw_istem(1,2,srad); % right leg +draw_bow(3,4,bowoff); % left leg +draw_foot(7); % left leg foot +% draw right a +draw_istem(11,12,srad); +draw_bow(13,14,bowoff); +ductus:=false; +penlabels(1,2,3,4,5,6,11,12,13,14,100); +endchar; % end "m" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{n} +% The letter `n'. +% \begin{macrocode} +cmchar "Rustic letter n"; +beginchar("n", 2u#+hstretch*(9/10x_height#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% left stem and foot +x1=x2=pcshiftx+stem_offset; +y1=h; y2=0; +% right stem +x5=x6=w-u-hookjut-thin; +y5=y1; y6=y2; +% diagonal +x7=x1; y7=h; +x9=x6; bot y9=0; +x8=0.5[x7,x9]; y8=0.6[y7,y9]; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_footstem(1,2); % left stem +draw_rusticstem(5,6); % right stem +draw_hserif(5,6,srad); % its serif +draw z7..z8..z9; % diagonal +draw_serif(9,8,srad); % its bottom serif +ductus:=false; +penlabels(1,2,5,6,7,8,9,100); +endchar; % end "n" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{o} +% The letter `o'. +% \begin{macrocode} +cmchar "Rustic letter o"; +beginchar("o", 2u#+hstretch*(3/5x_height#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +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 "o" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{p} +% The letter `p'. +% \begin{macrocode} +cmchar "Rustic letter p"; +beginchar("p", 2u#+hstretch*(5/10x_height#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% stem and foot +x1=x2=pcshiftx+stem_offset; +top y1=h; y2=0; +% bowl +lft x7=x2; y7=1/2h; % y7=2/3h; +rt x8=w-pcshiftx; top y8=y1; +z10=z1; +x9=0.5[x1,x8]; y9=h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_footstem(1,2); % stem +draw z7{pdir}..z8{up}..z9{left}..z10; % top bowl +ductus:=false; +penlabels(1,2,7,8,9,10,100); +endchar; % end "p" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{q} +% The letter `q'. +% \begin{macrocode} +cmchar "Rustic letter q"; +beginchar("q", 2u#+hstretch*(3/5x_height#), x_height#, 2/3thick#); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% the O shape +lft x1=pcshiftx; rt x3=w-pcshiftx; y1=y3=h/2; +x2=x4=w/2; top y2=h+o; bot y4=-o; +% the tail +path p; +p = z4{right}..{up}z3; +z5 = directionpoint pdir of p; +x7= x4+w/2; top y7=0; +x6=0.5[x5,x7]; y6=y7; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1..z2..z3..z4..cycle; % O shape +draw z5..z6..z7; % the tail +ductus:=false; +penlabels(0,1,2,3,4,5,6,6',7,100); +endchar; % end "q" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{r} +% The letter `r'. +% \begin{macrocode} +cmchar "Rustic letter r"; +beginchar("r", 2u#+hstretch*(4/5x_height#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +numeric alpha, beta; +alpha:=thin*(xpart pdir); beta:=thin*(ypart pdir); +pickup quill; +% stem +x1=x2=pcshiftx+stem_offset; +top y1=h; y2=0; +% bowl +lft x7=x2; bot y7=1/2h; +rt x8=5/8w; top y8=y1; +z10=z1; +x9=0.5[x1,x8]; y9=h; +% leg +z11=z7 shifted (thin*pdir); +rt x13=w-pcshiftx; bot y13=0; +x12=0.5[x11,x13]; y12=0.7[y11,y13]; +% points defining the leg profile +x11l=lft x11 + alpha; y11l=bot y11 + beta; +x11r= rt x11 - alpha; y11r=top y11 - beta; +x12l=0.6[lft x12, x12]; y12l=0.6[bot y12, y12]; +x12r=0.6[rt x12, x12]; y12r=0.6[top y12, y12]; +x14=w-pcshiftx-thin; y14=thin; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_footstem(1,2); % stem and foot +draw z7{pdir}..z8{up}..z9{left}..z10; % bowl +pickup stylus; % drawing the leg +filldraw z11l..z12l..{right}z14 & z14{left}..z12r..z11r--cycle; +ductus:=false; +penlabels(1,2,7,8,9,10,11,12,14,100); +endchar; % end "r" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{s} +% The letter `s'. +% \begin{macrocode} +cmchar "Rustic letter s"; +beginchar("s", 2u#+hstretch*(3/5x_height#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% for the foot +lft x7=pcshiftx+extra_fhjut; bot y7=0; +% the S curve +rt x1=w-pcshiftx; top y1=h-thin; +lft x3=pcshiftx+extra_fhjut; y3=0.75h; +x4=0.5[x1,x3]; y4=0.5[y3,y5]; +x2=x4; top y2=h; +x5=x1; y5=0.3h; +x6=0.75w; bot y6=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1..z2{left}..z3{down}..z4..z5{down}..{-pdir}z6; % S curve +draw_squiggle(7,6,wiggle,srad); % base +ductus:=false; +penlabels(1,2,3,4,5,6,7,100); +endchar; % end "s" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{t} +% The letter `t'. +% \begin{macrocode} +cmchar "Rustic letter t"; +beginchar("t", 2u#+hstretch*(2/5x_height#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +x1=x2=w/2; +y1=h; y2=0; +lft x3=pcshiftx; top y3=h; +rt x4=w-pcshiftx; y4=y3; +rt x5=x2; bot y5= bot y6=0; +rt x6=w-pcshiftx; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_footstem(1,2); % the stem +draw_squiggle(3,4,wiggle,srad); % the top crossbar +ductus:=false; +penlabels(1,2,3,4,5,6,100); +endchar; % end "t" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{u} +% The letter `u'. This is a modern version as the font did not have a U. +% \begin{macrocode} +cmchar "Rustic letter u"; +beginchar("u", 2u#+hstretch*(4/5x_height#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% the right stem +x5=x6=w-pcshiftx-hookjut-thin; y5=h; y6=-thin; +% left stem and bowl +lft x1= lft x2=pcshiftx+jut; +top y1=h; y2=2thick; +x3=0.5[x1,x5]; bot y3=0; +rt x4=x5; bot y4=0.25thick; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_rusticstem(5,6); % right stem +draw_hserif(5,6,srad); % its serif +draw_tlserif(1,2,srad); % left stem and serif +draw z2{down}..z3{right}..{pdir}z4; % the bowl +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,11,16,100); +endchar; % end "u" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{v} +% The letter `v'. +% if you prefer). +% \begin{macrocode} +cmchar "Rustic letter v"; +beginchar("v", 2u#+hstretch*(x_height#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% left side +z1-z2=whatever*thick_tltobr; +lft x1=pcshiftx+jut; top y1=h; +bot y2=0; +% right side +pickup bowpen; +x3=w-pcshiftx-footjut-extra_fhjut; top y3=h; +pickup quill; +x4=lft x2; y4=0; +x5=x3; y5=h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_istem(1,2,srad); % left part +draw_bow(3,4,bowoff); % right part +draw_head(5); % and its head +ductus:=false; +penlabels(1,2,3,4,5,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 "Rustic letter w"; +beginchar("w", 2u#+hstretch*(8/5x_height#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% left thick diagonal +z1-z2=whatever*thick_tltobr; +lft x1=pcshiftx+jut; top y1=h; bot y2=0; +% right thin diagonal +pickup bowpen; +x13=w-pcshiftx-footjut-extra_fhjut; top y13=h-thin; +x23=x13; y23=h; % for the head +bot y14=thin; +pickup quill; +% right thick diagonal +z11-z12=z1-z2; +x12-x2=1/3w; y12=y2; +% left thin diagonal +z3-z4=z13-z14; +x4=x2; +x14=x12; +y3=y13; + +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_istem(1,2,srad); % left and right thick diags +draw_istem(11,12,srad); +draw_bow(3,4,bowoff); % left thin diag +draw_bow(13,14,bowoff); % right thin diag +draw_head(23); % its head +ductus:=false; +penlabels(1,2,3,4,11,12,13,14,23,100); +endchar; % end "w" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{x} +% The letter `x'. +% \begin{macrocode} +cmchar "Rustic letter x"; +beginchar("x", 2u#+hstretch*(9/10x_height#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% thick diagonal +lft x1=pcshiftx+jut; top y1=h; +rt x2= w-pcshiftx-jut; bot y2=0; +% thin diagonal +pickup bowpen; +x3=w-pcshiftx-footjut-extra_fhjut-thin; top y3=h; +x4=pcshiftx+footjut+extra_fhjut+thin; bot y4=0; +x7=x3; y7=h; +x8=x4; y8=0; +pickup quill; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_istem(1,2,srad); % thick diagonal +draw_bow(3,4,bowoff); % thin diagonal +draw_head(7); % its head +draw_foot(8); % its foot +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,100); +endchar; % end "x" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{y} +% The letter `y'. +% \begin{macrocode} +cmchar "Rustic letter y"; +beginchar("y", 2u#+hstretch*(4/5x_height#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% left side +lft x1=pcshiftx+jut; top y1=h; +x2=1/2w; bot y2=1/3h; +% right side +pickup bowpen; +x3=w-pcshiftx-footjut-extra_fhjut; top y3=h; +lft x4=x2; bot y4=y2; +pickup quill; +x5=x3; y5=h; +% leg +x7=x2; y7=y2; +x8=x7; y8=0; +pickup bowpen; +x10=lft x8; x11=rt x8; +pickup stylus; +bot y10= bot y11=thin; +pickup quill; +%% ductus:=true; +if ductus: + pickup stylus; +fi +draw_istem(1,2,srad); % left stroke +draw_bow(3,4,bowoff); % right stroke +draw_head(5); % its head +draw_foot(8); % the foot +pickup stylus; % the leg +filldraw z7--z10--z11--cycle; +ductus:=false; +penlabels(1,2,3,4,5,7,8,9,100); +endchar; % end "y" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{z} +% The letter `z'. +% \begin{macrocode} +cmchar "Rustic letter z"; +beginchar("z", 2u#+hstretch*(4/5x_height#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% bottom stroke +lft x4=pcshiftx; bot y4=0; +rt x6=w-pcshiftx; y6=y4; +% top stroke +x1=x4; top y1=h; +rt x3 =7/8w-pcshiftx; y3=y1; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_squiggle(1,3,1/2wiggle,srad); % top stroke +draw_squiggle(4,6,1/2wiggle,srad); % bottom stroke +% the diagonal +pickup stylus; +draw z4--z3; +ductus:=false; +penlabels(1,2,3,4,5,6,100); +endchar; % end "z" + +% \end{macrocode} +% \end{routine} +% +% +% The end of this file +% \begin{macrocode} +% +% \end{macrocode} +% +% +% \subsection{The code for capitals} +% +% Roman Rustic `capitals' were drawn with the same pen as for the normal +% text, the letters were merely drawn slightly larger. +% +% \begin{macrocode} +%<*maj> +% RUSTU.MF Program file for Roman Rustic `capitals' +% + +% \end{macrocode} +% +% +% \begin{routine}{A} +% The letter `A'. +% \begin{macrocode} +cmchar "Rustic letter A"; +beginchar("A", 2u#+caprat*hstretch*(4/5x_height#+jut#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% right leg +z1-z2=whatever*thick_tltobr; +top y1=h; +rt x2=w-pcshiftx-jut; bot y2=0; +% for the left leg +z3=9/10[z2,z1]; +x4=pcshiftx+footjut+extra_fhjut; bot y4=0; +% code for foot +x7=x4; y7=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_istem(1,2,srad); % right leg +draw_bow(3,4,bowoff); % left leg +draw_foot(7); % left leg foot +ductus:=false; +penlabels(1,2,3,4,5,6,100); +endchar; % end "A" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{B} +% The letter `B'. This is a tall letter +% \begin{macrocode} +cmchar "Rustic letter B"; +beginchar("B", 2u#+caprat*hstretch*(7/10x_height#), caprat*(11/10x_height#), 0); +adjust_fit(0,0); +pcshiftx := u+hookjut+thin; +pickup quill; +% stem +x1=x2=pcshiftx; +y1=h; y2=0; +% bottom bowl +rt x3=x1; bot y3=thin; +rt x5=w-u; y5 = 1/6h; +x4=0.4[x2,x5]; y4=0; +lft x6=x2; y6=2/3h; +% top bowl +z7=z6; +x8=0.25[x4,x5]; top y8=y1; +x9=0.5[x1,x8]; bot y9=h; +z10=z1; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_rusticstem(1,2); % the stem +draw z3..z4{right}..z5..{dir(pangle+90)}z6; % bottom bowl +draw z7{pdir}..z8{up}..z9{left}..z10; % top bowl +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,10,100); +endchar; % end "B" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{C} +% The letter `C'. +% \begin{macrocode} +cmchar "Rustic letter C"; +beginchar("C", 2u#+caprat*hstretch*(3/5x_height#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +lft x1=pcshiftx; rt x3=pcshiftx+sqxside; y1=y3=h/2; +x2=x4=w/2; top y2=h; bot y4=0; +rt x5= rt x6=w-pcshiftx; +top y5=1/5h; +top y6=4/5h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z5{-pdir}..{left}z4..z1..z2..z6; +ductus:=false; +penlabels(1,2,3,4,5,6,100); +endchar; % end "C" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{D} +% The letter `D'. +% \begin{macrocode} +cmchar "Rustic letter D"; +beginchar("D", 2u#+caprat*hstretch*(3/5x_height#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +x1=x2=pcshiftx+hookjut+thin; +top y1=h; y2=0; +% bowl +rt x3=x1; bot y3=thin; +rt x5=w-u; y5 = 2/5h; +x4=0.4[x2,x5]; y4=0; +x6=x1; top y6=h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_rusticstem(1,2); % stem +draw z3..z4{right}..z5{up}..z6; % bowl +ductus:=false; +penlabels(0,1,2,3,4,5,6,100); +endchar; % end "D" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{E} +% The letter `E'. +% \begin{macrocode} +cmchar "Rustic letter E"; +beginchar("E", 2u#+caprat*hstretch*(4/10x_height#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% stem +x1=x2=pcshiftx+stem_offset; +top y1=h; y2=0; +% top bar +rt x3=x1; x4=w-u; +top y3=top y4=h; +% middle bar +x5=x3; x6=x4; +y5=y6=3/5h; +% foot +x7=x3; x8=x4; +bot y7= bot y8=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_rusticstem(1,2); % stem +draw_squiggle(3,4,wiggle,srad); % top bar +draw_squiggle(5,6,wiggle,srad); % middle bar +draw_squiggle(7,8,wiggle,srad); % bottom bar +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,100); +endchar; % end "E" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{F} +% The letter `F'. This is a tall letter +% \begin{macrocode} +cmchar "Rustic letter F"; +beginchar("F", 2u#+caprat*hstretch*(4/10x_height#), caprat*(6/5x_height#), 0); +adjust_fit(0,0); +pcshiftx := u +stem_offset; +pickup quill; +% stem +x1=x2=pcshiftx; +top y1=h; y2=0; +% top bar +x3=x1; x4=w-u; +top y3=top y4=h; +% middle bar +x5=x3; x6=x4; +y5=y6=2/3h; +% foot +x7=x3; x8=x4; +bot y7= bot y8=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_footstem(1,2); % stem +draw_squiggle(3,4,wiggle,srad); % top bar +draw_squiggle(5,6,wiggle,srad); % middle bar +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,100); +endchar; % end "F" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{G} +% The letter `G'. Like a `C' but bottom curls inwards. +% \begin{macrocode} +cmchar "Rustic letter G"; +beginchar("G", 2u#+caprat*hstretch*(3/5x_height#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +lft x1=pcshiftx; rt x3=pcshiftx+sqxside; y1=y3=h/2; +x2=x4=w/2; top y2=h; bot y4=0; +rt x5= rt x6=w-pcshiftx; +top y5=1/5h; +top y6=4/5h; +lft x7=w/2; y7=h/2; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z7..z5{down}..{left}z4..z1..z2..z6; % the bowl +ductus:=false; +penlabels(1,2,3,4,5,6,7,100); +endchar; % end "G" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{H} +% The letter `H'. +% \begin{macrocode} +cmchar "Rustic letter H"; +beginchar("H", 2u#+caprat*hstretch*(4/5x_height#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +y100 = sqyside/2; x100 = pcshiftx+y100; % square center +pickup quill; +% left stem and foot +x1=x2=pcshiftx+stem_offset; +y1=h; y2=0; +% bar +y5=y6=7/10h; +lft x5=pcshiftx; rt x6=w-pcshiftx; +% right stem +rt x7=w-pcshiftx; top y7=h; +x8=x7; bot y8=0; +x9=x8-2thin; y9=0.5[y8,y7]; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_footstem(1,2); % left stem +draw_hserif(1,2,srad); % its serif +draw_squiggle(5,6,wiggle,srad); % the bar +draw z7..z9..z8; % right stem +ductus:=false; +penlabels(1,1',2,2',3,4,5,6,7,7',8,8',99,99',100); +endchar; % end "H" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{I} +% The letter I. +% \begin{macrocode} +cmchar "Rustic letter I"; +beginchar("I", 2u#+caprat*hstretch*(2footjut#+hookjut#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +x1=x2=pcshiftx+stem_offset; +y1=h; y2=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_footstem(1,2); % stem and foot +draw_hserif(1,2,srad); % serif +ductus:=false; +penlabels(1,2,3,4,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 "Rustic letter J"; +beginchar("J", 4u#+caprat*hstretch*(3/5x_height#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := 3u; +pickup quill; +% stem +x1=x2=pcshiftx+2/3(w-4u); +y1=h; y2=0; +% top bar +rt x4=w-u; top y4=h; +x1-x3 = x4-x1; y3=y4; +% bowl +rt x5 = lft x3; +top y5=2/5h; +x7=x2; bot y7=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_rusticstem(1,2); % stem +draw_squiggle(3,4,wiggle,srad); % top bar +draw z7{left}..{pdir}z5; % bowl +ductus:=false; +penlabels(1,2,3,4,5,6,7,100); +endchar; % end "J" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{K} +% The letter `K'. +% \begin{macrocode} +cmchar "Rustic letter K"; +beginchar("K", 2u#+caprat*hstretch*(x_height#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% the stem and its foot +x1=x2=pcshiftx+stem_offset; +y1=h; y2=0; +lft x13=pcshiftx; bot y13=0; +x2-x13=x14-x2; y14=y13; +% upper diagonal and its top +x3=x1; y3=h/2; +x4=x1+y3; top y4=h; +x5=x4-jut; x6-x4=x4-x5; +top y5=top y6=h; +x24=x4; y24=h; +% bottom leg +lft x7=x3; bot y7=y3; +rt x9=w-pcshiftx; bot y9=0; +x8=0.5[x7,x9]; y8=0.7[y7,y9]; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_footstem(1,2); % the stem +draw_hserif(1,2,srad); % its serif +draw z3--z4; % upper diagonal +draw_head(24); +draw z7..z8..z9; % bottom leg +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,100); +endchar; % end "K" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{L} +% The letter `L'. This is a tall letter. +% \begin{macrocode} +cmchar "Rustic letter L"; +beginchar("L", 2u#+caprat*hstretch*(1/2x_height#), caprat*(6/5x_height#), 0); +adjust_fit(0,0); +pcshiftx := u+hookjut; +pickup quill; +x1=x2=pcshiftx+thin+hookjut; +y1=h; y2=0; +rt x3=x1; rt x4=w-u; +bot y3= bot y4=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_rusticstem(1,2); % stem +draw_hserif(1,2,srad); % serif +draw_squiggle(3,4,wiggle,srad); % foot +ductus:=false; +penlabels(1,2,3,4,100); +endchar; % end "L" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{M} +% The letter `M'. Like 2 As stuck together. +% \begin{macrocode} +cmchar "Rustic letter M"; +beginchar("M", 2u#+caprat*hstretch*(6/5x_height#+jut#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% right a thick diag +z11-z12=whatever*thick_tltobr; +rt x12=w-pcshiftx-jut; bot y12=0; +top y11=h; +% left a thin diag +pickup bowpen; +x4=pcshiftx+footjut+extra_fhjut; bot y4=thin; +z3=9/10[z2,z1]; +pickup quill; +x7=x4; y7=0; % for the foot +% the two thin diags are parallel, and just shifted horizontally +z13=9/10[z12,z11]; +z3-z4=z13-z14; y4=y14; +% similarly for the two thick diags +z1-z2=z11-z12; % y2=y12; +x12-x2=1/3w; +%%ductus:=true; +if ductus: + pickup stylus; +fi +% draw left a +draw_istem(1,2,srad); % right leg +draw_bow(3,4,bowoff); % left leg +draw_foot(7); % left leg foot +% draw right a +draw_istem(11,12,srad); +draw_bow(13,14,bowoff); +ductus:=false; +penlabels(1,2,3,4,5,6,11,12,13,14,100); +endchar; % end "M" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{N} +% The letter `N'. +% \begin{macrocode} +cmchar "Rustic letter N"; +beginchar("N", 2u#+caprat*hstretch*(9/10x_height#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% left stem and foot +x1=x2=pcshiftx+stem_offset; +y1=h; y2=0; +% right stem +x5=x6=w-u-hookjut-thin; +y5=y1; y6=y2; +% diagonal +x7=x1; y7=h; +x9=x6; bot y9=0; +x8=0.5[x7,x9]; y8=0.6[y7,y9]; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_footstem(1,2); % left stem +draw_rusticstem(5,6); % right stem +draw_hserif(5,6,srad); % its serif +draw z7..z8..z9; % diagonal +draw_serif(9,8,srad); % its bottom serif +ductus:=false; +penlabels(1,2,5,6,7,8,9,100); +endchar; % end "N" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{O} +% The letter `O'. +% \begin{macrocode} +cmchar "Rustic letter O"; +beginchar("O", 2u#+caprat*hstretch*(3/5x_height#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +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 "O" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{P} +% The letter `P'. +% \begin{macrocode} +cmchar "Rustic letter P"; +beginchar("P", 2u#+caprat*hstretch*(5/10x_height#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% stem and foot +x1=x2=pcshiftx+stem_offset; +top y1=h; y2=0; +% bowl +lft x7=x2; y7=1/2h; % y7=2/3h; +rt x8=w-pcshiftx; top y8=y1; +z10=z1; +x9=0.5[x1,x8]; y9=h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_footstem(1,2); % stem +draw z7{pdir}..z8{up}..z9{left}..z10; % top bowl +ductus:=false; +penlabels(1,2,7,8,9,10,100); +endchar; % end "P" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{Q} +% The letter `Q'. +% \begin{macrocode} +cmchar "Rustic letter Q"; +beginchar("Q", 2u#+caprat*hstretch*(3/5x_height#), caprat*x_height#, + caprat*(2/3thick#)); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% the O shape +lft x1=pcshiftx; rt x3=w-pcshiftx; y1=y3=h/2; +x2=x4=w/2; top y2=h+o; bot y4=-o; +% the tail +path p; +p = z4{right}..{up}z3; +z5 = directionpoint pdir of p; +x7= x4+w/2; top y7=0; +x6=0.5[x5,x7]; y6=y7; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1..z2..z3..z4..cycle; % O shape +draw z5..z6..z7; % the tail +ductus:=false; +penlabels(0,1,2,3,4,5,6,6',7,100); +endchar; % end "Q" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{R} +% The letter `R'. +% \begin{macrocode} +cmchar "Rustic letter R"; +beginchar("R", 2u#+caprat*hstretch*(4/5x_height#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +numeric alpha, beta; +alpha:=thin*(xpart pdir); beta:=thin*(ypart pdir); +pickup quill; +% stem +x1=x2=pcshiftx+stem_offset; +top y1=h; y2=0; +% bowl +lft x7=x2; bot y7=1/2h; +rt x8=5/8w; top y8=y1; +z10=z1; +x9=0.5[x1,x8]; y9=h; +% leg +z11=z7 shifted (thin*pdir); +rt x13=w-pcshiftx; bot y13=0; +x12=0.5[x11,x13]; y12=0.7[y11,y13]; +% points defining the leg profile +x11l=lft x11 + alpha; y11l=bot y11 + beta; +x11r= rt x11 - alpha; y11r=top y11 - beta; +x12l=0.6[lft x12, x12]; y12l=0.6[bot y12, y12]; +x12r=0.6[rt x12, x12]; y12r=0.6[top y12, y12]; +x14=w-pcshiftx-thin; y14=thin; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_footstem(1,2); % stem and foot +draw z7{pdir}..z8{up}..z9{left}..z10; % bowl +pickup stylus; % drawing the leg +filldraw z11l..z12l..{right}z14 & z14{left}..z12r..z11r--cycle; +ductus:=false; +penlabels(1,2,7,8,9,10,11,12,14,100); +endchar; % end "R" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{S} +% The letter `S'. +% \begin{macrocode} +cmchar "Rustic letter S"; +beginchar("S", 2u#+caprat*hstretch*(3/5x_height#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% for the foot +lft x7=pcshiftx+extra_fhjut; bot y7=0; +% the S curve +rt x1=w-pcshiftx; top y1=h-thin; +lft x3=pcshiftx+extra_fhjut; y3=0.75h; +x4=0.5[x1,x3]; y4=0.5[y3,y5]; +x2=x4; top y2=h; +x5=x1; y5=0.3h; +x6=0.75w; bot y6=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1..z2{left}..z3{down}..z4..z5{down}..{-pdir}z6; % S curve +draw_squiggle(7,6,wiggle,srad); % base +ductus:=false; +penlabels(1,2,3,4,5,6,7,100); +endchar; % end "S" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{T} +% The letter `T'. +% \begin{macrocode} +cmchar "Rustic letter T"; +beginchar("T", 2u#+caprat*hstretch*(2/5x_height#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +x1=x2=w/2; +y1=h; y2=0; +lft x3=pcshiftx; top y3=h; +rt x4=w-pcshiftx; y4=y3; +rt x5=x2; bot y5= bot y6=0; +rt x6=w-pcshiftx; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_footstem(1,2); % the stem +draw_squiggle(3,4,wiggle,srad); % the top crossbar +ductus:=false; +penlabels(1,2,3,4,5,6,100); +endchar; % end "T" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{U} +% The letter `U'. This is a modern version as the font did not have a U. +% \begin{macrocode} +cmchar "Rustic letter U"; +beginchar("U", 2u#+caprat*hstretch*(4/5x_height#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% the right stem +x5=x6=w-pcshiftx-hookjut-thin; y5=h; y6=-thin; +% left stem and bowl +lft x1= lft x2=pcshiftx+jut; +top y1=h; y2=2thick; +x3=0.5[x1,x5]; bot y3=0; +rt x4=x5; bot y4=0.25thick; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_rusticstem(5,6); % right stem +draw_hserif(5,6,srad); % its serif +draw_tlserif(1,2,srad); % left stem and serif +draw z2{down}..z3{right}..{pdir}z4; % the bowl +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,11,16,100); +endchar; % end "U" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{V} +% The letter `V'. +% if you prefer). +% \begin{macrocode} +cmchar "Rustic letter V"; +beginchar("V", 2u#+caprat*hstretch*(x_height#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% left side +z1-z2=whatever*thick_tltobr; +lft x1=pcshiftx+jut; top y1=h; +bot y2=0; +% right side +pickup bowpen; +x3=w-pcshiftx-footjut-extra_fhjut; top y3=h; +pickup quill; +x4=lft x2; y4=0; +x5=x3; y5=h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_istem(1,2,srad); % left part +draw_bow(3,4,bowoff); % right part +draw_head(5); % and its head +ductus:=false; +penlabels(1,2,3,4,5,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 "Rustic letter W"; +beginchar("W", 2u#+caprat*hstretch*(8/5x_height#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% left thick diagonal +z1-z2=whatever*thick_tltobr; +lft x1=pcshiftx+jut; top y1=h; bot y2=0; +% right thin diagonal +pickup bowpen; +x13=w-pcshiftx-footjut-extra_fhjut; top y13=h-thin; +x23=x13; y23=h; % for the head +bot y14=thin; +pickup quill; +% right thick diagonal +z11-z12=z1-z2; +x12-x2=1/3w; y12=y2; +% left thin diagonal +z3-z4=z13-z14; +x4=x2; +x14=x12; +y3=y13; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_istem(1,2,srad); % left and right thick diags +draw_istem(11,12,srad); +draw_bow(3,4,bowoff); % left thin diag +draw_bow(13,14,bowoff); % right thin diag +draw_head(23); % its head +ductus:=false; +penlabels(1,2,3,4,11,12,13,14,23,100); +endchar; % end "W" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{X} +% The letter `X'. +% \begin{macrocode} +cmchar "Rustic letter X"; +beginchar("X", 2u#+caprat*hstretch*(9/10x_height#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% thick diagonal +lft x1=pcshiftx+jut; top y1=h; +rt x2= w-pcshiftx-jut; bot y2=0; +% thin diagonal +pickup bowpen; +x3=w-pcshiftx-footjut-extra_fhjut-thin; top y3=h; +x4=pcshiftx+footjut+extra_fhjut+thin; bot y4=0; +x7=x3; y7=h; +x8=x4; y8=0; +pickup quill; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_istem(1,2,srad); % thick diagonal +draw_bow(3,4,bowoff); % thin diagonal +draw_head(7); % its head +draw_foot(8); % its foot +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,100); +endchar; % end "X" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{Y} +% The letter `Y'. +% \begin{macrocode} +cmchar "Rustic letter Y"; +beginchar("Y", 2u#+caprat*hstretch*(4/5x_height#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% left side +lft x1=pcshiftx+jut; top y1=h; +x2=1/2w; bot y2=1/3h; +% right side +pickup bowpen; +x3=w-pcshiftx-footjut-extra_fhjut; top y3=h; +lft x4=x2; bot y4=y2; +pickup quill; +x5=x3; y5=h; +% leg +x7=x2; y7=y2; +x8=x7; y8=0; +pickup bowpen; +x10=lft x8; x11=rt x8; +pickup stylus; +bot y10= bot y11=thin; +pickup quill; +%% ductus:=true; +if ductus: + pickup stylus; +fi +draw_istem(1,2,srad); % left stroke +draw_bow(3,4,bowoff); % right stroke +draw_head(5); % its head +draw_foot(8); % the foot +pickup stylus; % the leg +filldraw z7--z10--z11--cycle; +ductus:=false; +penlabels(1,2,3,4,5,7,8,9,100); +endchar; % end "Y" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{Z} +% The letter `Z'. +% \begin{macrocode} +cmchar "Rustic letter Z"; +beginchar("Z", 2u#+caprat*hstretch*(4/5x_height#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% bottom stroke +lft x4=pcshiftx; bot y4=0; +rt x6=w-pcshiftx; y6=y4; +% top stroke +x1=x4; top y1=h; +rt x3 =7/8w-pcshiftx; y3=y1; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_squiggle(1,3,1/2wiggle,srad); % top stroke +draw_squiggle(4,6,1/2wiggle,srad); % bottom stroke +% the diagonal +pickup stylus; +draw z4--z3; +ductus:=false; +penlabels(1,2,3,4,5,6,100); +endchar; % end "Z" + +% \end{macrocode} +% \end{routine} +% +% +% +% +% The end of this file +% \begin{macrocode} +% +% \end{macrocode} +% +% +% +% \subsection{The punctuation file} +% +% The main punctuation marks are defined in this file. +% +% \begin{macrocode} +%<*punct> +% RUSTPUNCT.MF This file contains punctuation marks + +% \end{macrocode} +% +% +% \begin{routine}{,} +% The `,' character. +% \begin{macrocode} + +cmchar "Rustic Comma"; +beginchar(",",2u#+hstretch*(comma_width#+dot_size#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=u; +x1=w-pcshiftx-(0.5hstretch*dot_size); y1=h/2; +draw_pcomma(1,dot_size,comma_width); +penlabels(1); +endchar; % end of "," + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{.} +% The `.' character. +% \begin{macrocode} + +cmchar "Rustic Period"; +beginchar(".",2u#+hstretch*(dot_size#),x_height#,0); +pcshiftx:=u; +x1=w/2; y1=h/2; +draw_pdot(1,dot_size); +penlabels(1); +endchar; % end of "." + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{:} +% The `:' character. +% \begin{macrocode} + +cmchar "Rustic Colon"; +beginchar(":",2u#+hstretch*(dot_size#),x_height#,0); +pcshiftx:=u; +x1=x2=w/2; y1=2/3h; y2=1/3h; +draw_pdot(1,dot_size); +draw_pdot(2,dot_size); +penlabels(1,2); +endchar; % end ":" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{;} +% The `;' character. +% \begin{macrocode} + +cmchar "Rustic Semicolon"; +beginchar(";",2u#+hstretch*(comma_width#+dot_size#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=u; +x1=x2=w-pcshiftx-(0.5hstretch*dot_size); y1=2/3h; y2=1/3h; +draw_pdot(1,dot_size); +draw_pcomma(2,dot_size,comma_width); +penlabels(1,2); +endchar; % end of ";" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{'} +% The `'' character. +% \begin{macrocode} + +cmchar "Rustic Apostrophe"; +beginchar("'",2u#+hstretch*(comma_width#+dot_size#),4/3x_height#,0); +adjust_fit(0,0); +pcshiftx:=u; +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 "Rustic Reverse apostrophe"; +beginchar("`",2u#+hstretch*(comma_width#+dot_size#),4/3x_height#,0); +adjust_fit(0,0); +pcshiftx:=u; +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} +% +% \end{macrocode} +% +% +% \subsection{The ligatures and dashes file} +% +% The ligatured punctuation marks and dashes are defined in this file. +% \begin{macrocode} +%<*lig> +% RUSTLIG.MF Roman Rustic ligatured 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 "Rustic closing quotes"; +beginchar(oct"042",2u#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0); +adjust_fit(0,0); +pcshiftx:=u; +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 "Rustic opening quotes"; +beginchar(oct"134",2u#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0); +adjust_fit(0,0); +pcshiftx:=u; +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 `-' character. +% \begin{macrocode} + +cmchar "Rustic hyphen"; +beginchar("-",u#+hstretch*(0.8x_height#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=u/2; +pickup quill; +lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; +draw z1--z2; % bar +penlabels(1,2); +endchar; % end of "-" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{--} +% The -- ligature. +% \begin{macrocode} + +cmchar "Rustic en dash"; +beginchar(oct"173",u#+hstretch*(x_height#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=u/2; +pickup quill; +lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; +draw z1--z2; % bar +penlabels(1,2); +endchar; % end of "--" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{---} +% The `---' ligature. The em dash is twice the width of the en dash. +% \begin{macrocode} + +cmchar "Rustic em dash"; +beginchar(oct"174",u#+hstretch*(2x_height#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=u/2; +pickup quill; +lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; +draw z1--z2; % bar +penlabels(1,2); +endchar; % end of "---" + +% \end{macrocode} +% \end{routine} +% +% +% The end of this file. +% \begin{macrocode} +% +% \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> +% RUSTDIG.MF Program file for Roman Rustic `digits' +% + +% \end{macrocode} +% +% \begin{routine}{1} +% The digit `1'. +% \begin{macrocode} +cmchar "Rustic digit 1"; +beginchar("1", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +x1=x2=w/2; +y1=h; y2=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_footstem(1,2); % stem and foot +draw_hserif(1,2,srad); % serif +ductus:=false; +penlabels(1,2,3,4,100); +endchar; % end "1" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{2} +% The digit `2'. This is like a stemless B. +% \begin{macrocode} +cmchar "Rustic digit 2"; +beginchar("2", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% stem +lft x1=pcshiftx; top y1=h-2thin; +x2=1/2w; top y2= h; +rt x3=w-pcshiftx; y3=3/4h; +% squiggle +x5=pcshiftx+extra_fhjut; bot y5=0; +x6=w-pcshiftx-extra_fhjut; y6=y5; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1..z2{right}..z3{down}..{-pdir}z5; % curve +draw_squiggle(5,6,wiggle,srad); % foot +ductus:=false; +penlabels(1,2,3,4,5,6,100); +endchar; % end "2" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{3} +% The digit `3'. This is like a stemless B. +% \begin{macrocode} +cmchar "Rustic 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+extra_fhjut; 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_rusticstem(1,2); % the stem +draw z3..z4{right}..z5{up}...{-pdir}z6; % bottom bowl +draw z7{pdir}..z8{up}..z9{left}..z10; % top bowl +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,10,100); +endchar; % end "3" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{4} +% The digit `4'. +% \begin{macrocode} +cmchar "Rustic digit 4"; +beginchar("4", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% the stem +x1=x2=w-pcshiftx-footjut-extra_fhjut; +y1=h; y2=0; +% the crossbar +x3=pcshiftx+extra_fhjut; y3=0.33h; +x4=w-pcshiftx-extra_fhjut; y4=y3; +% the thin diagonal +x5=lft x3; y5=bot y3+thin; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_footstem(1,2); % stem and foot +%%draw_hserif(1,2,srad); % serif +draw_squiggle(3,4,wiggle,srad); % squiggle +pickup stylus; +draw z5{pdir}..z1; % thin 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 "Rustic digit 5"; +beginchar("5", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% for the foot +lft x7=pcshiftx+extra_fhjut; bot y7=0; +% for the top +rt x1=w-pcshiftx-extra_fhjut; top y1=h; +lft x2=pcshiftx+extra_fhjut; y2=y1; + +% the S curve +x3=x2; y3=0.5h; +x4=0.5[x1,x3]; y4=0.5[y3,y5]; +rt x5=w-pcshiftx; y5=0.3h; +x6=0.75w; bot y6=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_squiggle(2,1,wiggle,srad); % top squiggle +draw z3{pdir}..z5{down}..{-pdir}z6; % curve +draw_squiggle(7,6,wiggle,srad); % base +pickup stylus; +draw z2--z3; % vertical +ductus:=false; +penlabels(1,2,3,4,5,6,7,100); +endchar; % end "5" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{6} +% The digit `6'. +% \begin{macrocode} +cmchar "Rustic 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 "Rustic digit 7"; +beginchar("7", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% top bar +x1=pcshiftx+extra_fhjut; +x2=w-pcshiftx-extra_fhjut; +top y1=top y2=h; +% bowed leg +rt x4=w-pcshiftx-3thin; bot y4=0; +x3=0.5[x2,x4]-2thin; y3=0.5[y2,y4]; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_squiggle(1,2,wiggle,srad); +draw z2..z3..z4; +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 "Rustic digit 8"; +beginchar("8", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +lft x1=pcshiftx-o; rt x3=w-pcshiftx; y1=y3=3/4h; +x2=x4=w/2; top y2=h+o; bot y4=-o; +x5=x2; y5=h/2; +x11=x1+o; x13=x3+o; 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 "Rustic 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 "Rustic digit 0"; +beginchar("0", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +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} +% +% \end{macrocode} +% +% +% \section{The font definition files} \label{sec:fd} +% +% The font comes in normal and bold weights only. +% +% \begin{macrocode} +%<*fdot1> +\DeclareFontFamily{OT1}{rust}{} +%% \DeclareFontShape{OT1}{rust}{m}{n}{ <-> rust10 }{} + \DeclareFontShape{OT1}{rust}{m}{n}{ <-8.5> rust7 <8.5-15> rust10 <15-> rust17 }{} + \DeclareFontShape{OT1}{rust}{m}{sl}{ <-> sub * rust/m/n }{} + \DeclareFontShape{OT1}{rust}{m}{it}{ <-> sub * rust/m/n }{} + \DeclareFontShape{OT1}{rust}{m}{sc}{ <-> sub * rust/m/n }{} + \DeclareFontShape{OT1}{rust}{m}{u}{ <-> sub * rust/m/n }{} +%% \DeclareFontShape{OT1}{rust}{bx}{n}{ <-> rustb10 }{} + \DeclareFontShape{OT1}{rust}{bx}{n}{ <-8.5> rustb7 <8.5-15> rustb10 <15-> rustb17 }{} + \DeclareFontShape{OT1}{rust}{bx}{it}{ <-> sub * rust/bx/n }{} + \DeclareFontShape{OT1}{rust}{bx}{sl}{ <-> sub * rust/bx/n }{} + \DeclareFontShape{OT1}{rust}{b}{n}{ <-> sub * rust/bx/n }{} +% +% \end{macrocode} +% +% +% \begin{macrocode} +%<*fdt1> +\DeclareFontFamily{T1}{rust}{} + \DeclareFontShape{T1}{rust}{m}{n}{ <-8.5> rust7 <8.5-15> rust10 <15-> rust17 }{} + \DeclareFontShape{T1}{rust}{m}{sl}{ <-> sub * rust/m/n }{} + \DeclareFontShape{T1}{rust}{m}{it}{ <-> sub * rust/m/n }{} + \DeclareFontShape{T1}{rust}{m}{sc}{ <-> sub * rust/m/n }{} + \DeclareFontShape{T1}{rust}{m}{u}{ <-> sub * rust/m/n }{} + \DeclareFontShape{T1}{rust}{bx}{n}{ <-8.5> rustb7 <8.5-15> rustb10 <15-> rustb17 }{} + \DeclareFontShape{T1}{rust}{bx}{it}{ <-> sub * rust/bx/n }{} + \DeclareFontShape{T1}{rust}{bx}{sl}{ <-> sub * rust/bx/n }{} + \DeclareFontShape{T1}{rust}{b}{n}{ <-> sub * rust/bx/n }{} +% +% \end{macrocode} +% +% \section{The \Lpack{rustic} and \Lpack{allrust} package code} \label{sec:code} +% +% \subsection{The \Lpack{rustic} code} +% +% The \Lpack{rustic} package is intended for use when typesetting examples +% of the book-hand in a document that is otherwise typeset in normal fonts. +% +% Announce the name and version of the package, which requires +% \LaTeXe{}. +% \begin{macrocode} +%<*usc> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{rustic}[1999/05/01 v1.0 package for Roman Rustic 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}{\rustfamily} +% Selects the Roman Rustic font family in either T1 or OT1 encoding. +% \begin{macrocode} +\ifx\Tienc\encodingdefault + \newcommand{\rustfamily}{\usefont{T1}{rust}{m}{n}} +\else + \newcommand{\rustfamily}{\usefont{OT1}{rust}{m}{n}} +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\textrust} +% Text command for the Roman Rustic font family. +% \begin{macrocode} +\DeclareTextFontCommand{\textrust}{\rustfamily} +% \end{macrocode} +% \end{macro} +% +% The end of this package. +% \begin{macrocode} +% +% \end{macrocode} +% +% \subsection{The \Lpack{allrust} code} +% +% The \Lpack{allrust} 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{rustic} package. +% \begin{macrocode} +%<*uscall> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{allrust}[1999/05/01 v1.0 package for all Roman Rustic fonts] +\RequirePackage{rustic} +% \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 Roman Rustic, which has only one family +% member. +% \begin{macro}{\rmdefault} +% \begin{macro}{\sfdefault} +% \begin{macro}{\ttdefault} +% \begin{macrocode} +\renewcommand{\rmdefault}{rust} +\renewcommand{\sfdefault}{rust} +\renewcommand{\ttdefault}{rust} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The `leading' in the book-hand is the same as the |x-height|, which is much +% greater than for the CMR fonts. I have borrowed code from Frank Jensen's +% \Lpack{beton} package~\cite{BETON} to do this. +% +% \begin{macro}{\rustic@baselineskip@table} +% A table of the normal font sizes and the corresponding baselineskip. +% \begin{macrocode} +\newcommand{\rustic@baselineskip@table}{% + <\@vpt>9.5% + <\@vipt>11.4% + <\@viipt>13.3% + <\@viiipt>15.2% + <\@xpt>19% + <\@xipt>20.9% + <\@xiipt>22.8% + <\@xivpt>27.36% + <\@xviipt>23.3% + <\@xxpt>38% + <\@xxvpt>47.5} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\rustic@new@setfontsize} +% This is a macro that replaces the |\@setfontsize| macro which is called by +% the font size changing commands. +% \begin{macrocode} +\newcommand{\rustic@new@setfontsize}[3]{% + \edef\@tempa{\def\noexpand\@tempb####1<#2}% + \@tempa>##2<##3\@nil{\def\rustic@baselineskip@value{##2}}% + \edef\@tempa{\noexpand\@tempb\rustic@baselineskip@table<#2}% + \@tempa><\@nil + \ifx\rustic@baselineskip@value\@empty + \def\rustic@baselineskip@value{#3}% + \fi + \rustic@old@setfontsize{#1}{#2}\rustic@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\rustic@old@setfontsize=\@setfontsize + \let\@setfontsize=\rustic@new@setfontsize} +\AtBeginDocument{\normalsize} +% \end{macrocode} +% +% +% The end of this package. +% \begin{macrocode} +% +% \end{macrocode} +% +% +% \bibliographystyle{alpha} +% \renewcommand{\refname}{Bibliography} +% \begin{thebibliography}{GMS94a} +% \addcontentsline{toc}{section}{\refname} +% +% \bibitem[And69]{ANDERSON69} +% Donald M.~Anderson. +% \newblock {\em The Art of Written Forms: The Theory and Practice of Calligraphy}. +% \newblock Holt, Rinehart and Winston, 1969. +% +% \bibitem[Bol95]{BOLOGNA95} +% Giulia Bologna. +% \newblock {\em Illuminated Manuscripts: The Book before Gutenberg}. +% \newblock Crescent Books, 1995. +% +% \bibitem[Day95]{DAY95} +% Lewis F.~Day. +% \newblock {\em Alphabets Old \& New}. +% \newblock (3rd edition originally published by B.~T.~Batsford, 1910) +% \newblock Senate, 1995. +% +% \bibitem[Dro80]{DROGIN80} +% Marc Drogin. +% \newblock {\em Medieval Calligraphy: Its History and Technique}. +% \newblock Allenheld, Osmun \& Co., 1980. +% +% \bibitem[Dru95]{DRUCKER95} +% Johanna Drucker. +% \newblock {\em The Alphabetic Labyrinth}. +% \newblock Thames \& Hudson, 1995. +% +% \bibitem[Fir93]{FIRMAGE93} +% Richard A.~Firmage. +% \newblock {\em The Alphabet Abecedarium}. +% \newblock David R~Goodine, 1993. +% +% +% \bibitem[Har95]{HARRIS95} +% David Harris. +% \newblock {\em The Art of Calligraphy}. +% \newblock DK Publishing, 1995. +% +% \bibitem[Jen95]{BETON} +% Frank Jensen. +% \newblock {\em The BETON package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1995. +% +% +% \bibitem[Joh71]{JOHNSTON75} +% Edward Johnston (ed. Heather Child). +% \newblock {\em Formal Penship and Other Papers}. +% \newblock Penthalic, 1971. +% +% \bibitem[Knu87]{CM} +% Donald E.~Knuth. +% \newblock {\em Computer Modern Typefaces}. +% \newblock Addison-Wesley, 1987. +% +% \bibitem[Knu92]{METAFONT} +% Donald E.~Knuth. +% \newblock {\em The METAFONTbook}. +% \newblock Addison-Wesley, 1992. +% +% +% \bibitem[GMS94]{GOOSSENS94} +% Michel Goossens, Frank Mittelbach, and Alexander Samarin. +% \newblock {\em The LaTeX Companion}. +% \newblock Addison-Wesley Publishing Company, 1994. +% +% \bibitem[Tho75]{THOMAS75} +% Alan G.~Thomas. +% \newblock {\em Great Books and Book Collectors}. +% \newblock Weidenfield and Nichoson, 1975. +% +% \bibitem[Wil99a]{DOCMFP} +% Peter R.~Wilson. +% \newblock {\em The DOCMFP Package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1999. +% +% \bibitem[Wil99b]{ROMANNUM} +% Peter R.~Wilson. +% \newblock {\em The ROMANNUM Package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1999. +% +% \end{thebibliography} +% +% +% \Finale +% \PrintIndex +% +\endinput + +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} + + diff --git a/Master/texmf-dist/source/fonts/bookhands/rustic.ins b/Master/texmf-dist/source/fonts/bookhands/rustic.ins new file mode 100644 index 00000000000..7c885c2de53 --- /dev/null +++ b/Master/texmf-dist/source/fonts/bookhands/rustic.ins @@ -0,0 +1,103 @@ +%% +%% rustic.ins +%% Copyright 1999 Peter R. Wilson +%% +%% This program is provided under the terms of the +%% LaTeX Project Public License distributed from CTAN +%% archives in directory macros/latex/base/lppl.txt. +%% +%% Author: Peter Wilson (CUA and NIST) +%% now at: peter.r.wilson@boeing.com +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\batchfile{rustic.ins} +\input docstrip.tex +\preamble + + Copyright 1999 Peter R. Wilson + + This program is provided under the terms of the + LaTeX Project Public License distributed from CTAN + archives in directory macros/latex/base/lppl.txt. + +Author: Peter Wilson (CUA) + now at: peter.r.wilson@boeing.com + +\endpreamble + +\keepsilent + +%%% \Msg{*** Generating the driver file ***} +%%% \generateFile{rustic.drv}{t}{\from{rustic.dtx}{driver}} + +\Msg{*** Generating the Metafont files ***} + +\usepostamble\empty +\generateFile{rust7.mf}{t}{\from{rustic.dtx}{base7}} +\generateFile{rust10.mf}{t}{\from{rustic.dtx}{base10}} +\generateFile{rust17.mf}{t}{\from{rustic.dtx}{base17}} +\generateFile{rustb7.mf}{t}{\from{rustic.dtx}{base7b}} +\generateFile{rustb10.mf}{t}{\from{rustic.dtx}{base10b}} +\generateFile{rustb17.mf}{t}{\from{rustic.dtx}{base17b}} +\generateFile{rustl.mf}{t}{\from{rustic.dtx}{min}} +\generateFile{rustu.mf}{t}{\from{rustic.dtx}{maj}} +\generateFile{rusttitle.mf}{t}{\from{rustic.dtx}{mfd}} +\generateFile{rustpunct.mf}{t}{\from{rustic.dtx}{punct}} +\generateFile{rustlig.mf}{t}{\from{rustic.dtx}{lig}} +\generateFile{rustdig.mf}{t}{\from{rustic.dtx}{dig}} +%%% \generateFile{rustp.mf}{t}{\from{rustic.dtx}{xp}} + +\Msg{*** Generating the Font Definition files ***} +\usepostamble\defaultpostamble + +\generateFile{ot1rust.fd}{t}{\from{rustic.dtx}{fdot1}} +\generateFile{t1rust.fd}{t}{\from{rustic.dtx}{fdt1}} + +\Msg{*** Generating the LaTeX2e package files ***} + +\generateFile{rustic.sty}{t}{\from{rustic.dtx}{usc}} +\generateFile{allrust.sty}{t}{\from{rustic.dtx}{uscall}} + +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into directories searched by TeX:} +\Msg{*} +\Msg{* Move these into the font source area:} +\Msg{* \space\space rust7.mf} +\Msg{* \space\space rust10.mf} +\Msg{* \space\space rust17.mf} +\Msg{* \space\space rustb7.mf} +\Msg{* \space\space rustb10.mf} +\Msg{* \space\space rustb17.mf} +\Msg{* \space\space rustl.mf} +\Msg{* \space\space rustu.mf} +\Msg{* \space\space rusttitle.mf} +\Msg{* \space\space rustpunct.mf} +\Msg{* \space\space rustlig.mf} +\Msg{* \space\space rustdig.mf} +%%% \Msg{* \space\space rustp.mf} +\Msg{*} +\Msg{* Move these into the LaTeX macro area:} +\Msg{* \space\space ot1rust.fd} +\Msg{* \space\space t1rust.fd} +\Msg{* \space\space rustic.sty} +\Msg{* \space\space allrust.sty} +\Msg{*} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* `.dtx' through LaTeX.} +\Msg{* Process any name.idx file by:} +\Msg{* \space\space\space\space makeindex -s gind.ist name} +\Msg{* Process any name.glo file by:} +\Msg{* \space\space\space\space makeindex -s gglo.ist -o name.gls name.glo} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} + +\endinput diff --git a/Master/texmf-dist/source/fonts/bookhands/sqrcaps.dtx b/Master/texmf-dist/source/fonts/bookhands/sqrcaps.dtx new file mode 100644 index 00000000000..4227faece5a --- /dev/null +++ b/Master/texmf-dist/source/fonts/bookhands/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} +% +% +% \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> +%%%% SQRC7.MF Square Capitals at 7 point design size. +%%%% SQRC10.MF Square Capitals at 10 point design size. +%%%% SQRC17.MF Square Capitals at 17 point design size. +%%%% SQRCB7.MF Square Capitals Bold at 7 point design size. +%%%% SQRCB10.MF Square Capitals Bold at 10 point design size. +%%%% 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 + +%font_identifier:="SQRC"; font_size 7pt#; +%font_identifier:="SQRC"; font_size 10pt#; +%font_identifier:="SQRC"; font_size 17.28pt#; +%font_identifier:="SQRCB"; font_size 7pt#; +%font_identifier:="SQRCB"; font_size 10pt#; +%font_identifier:="SQRCB"; font_size 17.28pt#; + +% \end{macrocode} +% +% \DescribeVariable{jutstretch} +% The CMR scaling for lowercase serifs wrt 17pt size. +% \begin{macrocode} +% jutstretch:=1.19; +% jutstretch:=1.152; +% jutstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{stemstretch} +% The CMR scaling for lowercase stem widths wrt 17pt size. +% \begin{macrocode} +% stemstretch:=1.50; +% stemstretch:=1.31; +% 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} +% cap_jutstretch:=1.3; +% cap_jutstretch:=1.2; +% cap_jutstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{cap_stemstretch} +% The CMR scaling for uppercase stem width wrt 17pt size. +% \begin{macrocode} +% cap_stemstretch:=1.45; +% cap_stemstretch:=1.31; +% cap_stemstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{bfudge} +% Letter width scaling for bold font wrt normal font. +% \begin{macrocode} +% bfudge:=1.0; +% bfudge:=1.2; +% \end{macrocode} +% +% \DescribeVariable{szfudge} +% Width scaling wrt 17pt letter width. +% \begin{macrocode} +% szfudge:=1.18; +% szfudge:=1.0; +% 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} +% carol_height#:=108.5/36pt#; +% carol_height#:=155/36pt#; +% 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} +% u#:=15.5/36pt#; +% u#:=20/36pt#; +% u#:=32.5/36pt#; +% u#:=17.9/36pt#; +% u#:=23/36pt#; +% 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 +% cap_serif_fit#:=3.5/36pt#; % extra sidebar near uppercase serifs +% cap_serif_fit#:=5/36pt#; % extra sidebar near uppercase serifs +% cap_serif_fit#:=8/36pt#; % extra sidebar near uppercase serifs +% letter_fit#:=0pt#; % extra space added to all sidebars +% letter_fit#:=0pt#; % extra space added to all sidebars +% 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} +% sb#:=1/2u#; % unit for side bearings +% sb#:=1/2u#; % unit for side bearings +% sb#:=1/2u#; % unit for side bearings + +% \end{macrocode} +% +% \DescribeVariable{cap_height} +% The height of capital letters. +% \begin{macrocode} +% cap_height#:=172.2/36pt#; % height of caps +% cap_height#:=246/36pt#; % height of caps +% 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} +% thickfudge:=1/5; +% 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} +% rule_thickness#:=.34pt#; +% rule_thickness#:=.4pt#; +% 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} +% o#:=5/36pt#; +% o#:=8/36pt#; +% 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} +% +% \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 $0y$$: + 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 $0y$$: + 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 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. + +% +% \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} +% +% \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} +% +% \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} +% +% \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} +% +% \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} +% +% \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 }{} +% +% \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 }{} +% +% \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} +% +% \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} +% +% \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 +% \end{macrocode} +% +% +% +% \Finale +% \PrintIndex +% +\endinput + +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} + + diff --git a/Master/texmf-dist/source/fonts/bookhands/sqrcaps.ins b/Master/texmf-dist/source/fonts/bookhands/sqrcaps.ins new file mode 100644 index 00000000000..5b40ad79296 --- /dev/null +++ b/Master/texmf-dist/source/fonts/bookhands/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/Master/texmf-dist/source/fonts/bookhands/tgothic.dtx b/Master/texmf-dist/source/fonts/bookhands/tgothic.dtx new file mode 100644 index 00000000000..68b4c095968 --- /dev/null +++ b/Master/texmf-dist/source/fonts/bookhands/tgothic.dtx @@ -0,0 +1,5402 @@ +% \iffalse meta-comment +% +% tgothic.dtx +% Copyright 1999 Peter R. Wilson +% +% This program is provided under the terms of the +% LaTeX Project Public License distributed from CTAN +% archives in directory macros/latex/base/lppl.txt. +% +% Author: Peter Wilson (CUA) (now at: peter.r.wilson@boeing.com) +% +% If you do not have the docmfp package (available from CTAN in +% tex-archive/macros/latex/contrib/supported), comment out the +% \usepackage{docmfp} line below and uncomment the line following it. +% +%<*driver> +\documentclass{ltxdoc} +\usepackage{docmfp} +%%%%%% \providecommand{\DescribeVariable}[1]{} \newenvironment{routine}[1]{}{} +\EnableCrossrefs +\CodelineIndex +%% comment out the next line to show the code +\OnlyDescription +\setcounter{StandardModuleDepth}{1} +\begin{document} + \DocInput{tgothic.dtx} +\end{document} +% +% +% \fi +% +% \CheckSum{134} +% +% \DoNotIndex{\',\.,\@M,\@@input,\@addtoreset,\@arabic,\@badmath} +% \DoNotIndex{\@centercr,\@cite} +% \DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue} +% \DoNotIndex{\@input,\@ixpt,\@m} +% \DoNotIndex{\@minus,\@mkboth,\@ne,\@nil,\@nomath,\@plus,\@set@topoint} +% \DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb} +% \DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt} +% \DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt} +% \DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace} +% \DoNotIndex{\advance,\Alph,\alph} +% \DoNotIndex{\arabic,\ast,\begin,\begingroup,\bfseries,\bgroup,\box} +% \DoNotIndex{\bullet} +% \DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption} +% \DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass} +% \DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\endtrivlist} +% \DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup} +% \DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter} +% \DoNotIndex{\fbox} +% \DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef} +% \DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule} +% \DoNotIndex{\hsize,\hskip,\hspace,\hss,\if@tempswa,\ifcase,\or,\fi,\fi} +% \DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\fi,\fi,\fi,\fi,\fi} +% \DoNotIndex{\input} +% \DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark} +% \DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright} +% \DoNotIndex{\month,\newcommand,\newcounter,\newenvironment} +% \DoNotIndex{\NeedsTeXFormat,\newdimen} +% \DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number} +% \DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\p@} +% \DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip} +% \DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions} +% \DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright} +% \DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font} +% \DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily,\roman} +% \DoNotIndex{\roman,\secdef,\selectfont,\setbox,\setcounter,\setlength} +% \DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space} +% \DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase} +% \DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt} +% \DoNotIndex{\viipt,\vipt,\vskip,\vspace} +% \DoNotIndex{\wd,\xiipt,\year,\z@} +% +% \changes{v1.0}{2002/12/30}{First public release} +% +% \def\fileversion{v1.0} +% \def\filedate{2002/12/30} +% \newcommand*{\Lpack}[1]{\textsf {#1}} ^^A typeset a package +% \newcommand*{\Lopt}[1]{\textsf {#1}} ^^A typeset an option +% \newcommand*{\file}[1]{\texttt {#1}} ^^A typeset a file +% \newcommand*{\Lcount}[1]{\textsl {\small#1}} ^^A typeset a counter +% \newcommand*{\pstyle}[1]{\textsl {#1}} ^^A typeset a pagestyle +% \newcommand*{\Lenv}[1]{\texttt {#1}} ^^A typeset an environment +% \newcommand*{\AD}{\textsc{ad}} +% \newcommand*{\thisfont}{Gothic Textura Quadrata} +% +% \title{The \Lpack{Gothic Textura Quadrata} fonts\thanks{This +% file has version number \fileversion, last revised +% \filedate.}} +% +% \author{% +% Peter Wilson\\ +% Catholic University of America \\ +% Now at \texttt{peter.r.wilson@boeing.com} +% } +% \date{\filedate} +% \maketitle +% \begin{abstract} +% The \Lpack{tgothic} and \Lpack{alltgoth} packages provide a set of +% Metafont \thisfont{} book-hands +% as used +% for manuscripts in the 13th to the 15th century. This is one in a series +% of manuscript fonts. +% \end{abstract} +% \tableofcontents +% \listoftables +% +% +% +% +% \section{Introduction} +% +% The \Lpack{tgothic} and \Lpack{alltgoth} packages provide a Metafont~\cite{METAFONT} version +% of the \thisfont{} manuscript book-hand that was in use between about the +% thirteenth and fifteenth centuries~\AD. It is part of a project to provide fonts +% covering the major manuscript hands between the first century~\AD{} and +% the invention of printing. The principal resources used in this project +% are listed in the Bibliography. +% +% This manual is typeset according to the conventions of the +% \LaTeX{} \textsc{docstrip} utility which enables the automatic +% extraction of the \LaTeX{} macro source files~\cite{GOOSSENS94}. +% The \Lpack{docmfp} package is used for documenting the Metafont portions +% of the distribution~\cite{DOCMFP}. +% +% Section~\ref{sec:usc} describes the usage of the package. +% Commented code for the fonts is in Sections~\ref{sec:mf} and~\ref{sec:fd} +% and source code for the package is in Section~\ref{sec:code}. +% +% \subsection{Manuscript book-hands} +% +% Before the invention of printing all books were written by hand. The book-hands +% used by the scribes and copyists for the manuscripts changed as time +% went on. Table~\ref{tab:1} lists some of the common book-hands which were used +% between the 1st and 15th centuries. The later book-hands formed the basis of the +% fonts used by the early printers, which in turn form the basis of the printing +% fonts in use today. +% +% The manuscript book-hands were written with a broad nibbed reed or quill +% pen. Among the distinguishing characteristics of a hand, apart from the +% actual shape of the letters, are the angle of the pen (which controls the +% variation between thick and thin strokes) and the height of a letter compared +% to the width of the nib. The lower the ratio of the letter height to nib +% width, the more condensed is the script. The scripts also varied in their +% typical height. +% +% Table~\ref{tab:1} gives an `average' x-height for each +% script, which I obtained by measuring a sample of photographs of +% manuscripts written in the various hands. About a dozen examples +% of each book-hand were measured. This figure should not be taken too +% seriously. +% +% There was not a sharp division between the use of one hand and another. +% Many manuscripts exhibit a variety of hands in the same document. For example, +% the scribe writing in an Uncial hand may have used Roman Rustic letters +% for capitals. Usually the same pen was used for the two different scripts. +% +% Generally speaking, as a hand got older it became more embelished, and +% therefore took longer to write. As this happened a new hand would appear that +% was faster, and which would eventually make the earlier one obsolete. +% +% Many of the book-hands were single-cased; that is, they did not have an +% upper- and lower-case as we do nowadays in Western scripts. On the other +% hand, a script might be majuscule or minuscule. A \textit{majuscule} script +% is one, like our upper-case, where the letters are drawn between two lines +% and are of a uniform height with no ascenders or descenders. +% A \textit{minuscule} script, like our lower-case, is drawn between four lines +% and has ascenders and descenders. +% +% \begin{table} +% \centering +% \caption{The main manuscript book-hands} \label{tab:1} +% \begin{tabular}{lccccc} \hline +% Name & Century & x-height & Height & Pen & Normalised \\ +% & & (mm) & (nib widths) & angle & height \\ \hline +% Roman Rustic & 1--6 & 5.7 & 4--6 & 45 & 1.90 \\ +% Uncial & 3--6 & 4.1 & 4--5 & 30 & 1.37 \\ +% Half Uncial & 3--9 & 3.2 & 3--6 & 20--30 & 1.07 \\ +% Artificial Uncial & 6--10 & 4.2 & 3--6 & 10 & 1.40 \\ +% Insular majuscule & 6--9 & 4.2 & 5 & 0--20 & 1.40 \\ +% Insular minuscule & 6 onward & 4.1 & 5--6 & 45--70 & 1.37 \\ +% Carolingian minuscule & 8--12 & 3.0 & 3--5 & 45 & 1.00 \\ +% Early Gothic & 11--12 & 3.8 & 4--6 & 20--45 & 1.27 \\ +% Gothic Textura & 13--15 & 3.9 & 3--5 & 30--45 & 1.30 \\ +% Gothic Prescius & 13 onward & 3.3 & 4--5 & 45 & 1.10 \\ +% Rotunda & 13--15 & 3.2 & 4--6 & 30 & 1.07 \\ +% Humanist minuscule & 14 onward & 3.0 & 4--5 & 30--40 & 1.00 \\ \hline +% \end{tabular} +% \end{table} +% +% During the period under consideration arabic numerals were effectively +% not used. At the beginning they were unknown and even though some knew +% of them towards the end, the glyphs used for them are not recognisable --- +% to me they look somewhat like cryllic letters --- and each locality +% and time had its own highly individualistic rendering. The general rule +% when using one of these book-hands is to write all numbers using +% roman numerals. +% +% The Roman alphabet consisted of 23 capital letters --- the J, U and W +% were absent. The book-hands initially used both a `u' and a `v' interchangeably +% but by the 10th century the practice had become to use the `v' before a vowel +% and the `u' otherwise. The letter corresponding to the W sound appeared +% in England around the 7th century in +% the form of the runic \textit{wen} character and by about the 11th century +% the `w' chacter was generally used. The `J' is the newest letter of all, not +% appearing until about the mid 16th century. +% +% In the first century punctuation was virtually unknown, and typically +% would not even be any additional space between individual words, never +% mind denoting ends of sentences. Sometimes a dot at mid-height would be +% used as a word seperator, or to mark off the end of a paragraph. Effectively +% a text was a continuous stream of letters. By the time that printing was +% invented, though, all of our modern punctuation marks were being used. +% +% Among all these manuscript hands, the Carolingian minuscule is the +% most important as our modern fonts are based on its letter shapes, and it is +% also at this point in time where the division occured between the black letter +% scripts as used even today in Germany, and the lighter fonts used elesewhere. +% The Rotunda and Humanist minuscule hands were developed in Italy and were +% essentially a rediscovery of the Carolingian minusucle. Guthenberg took the +% Gothic scripts as the model for his types. Later printers, +% such as Nicholas Jenson of Venice, +% took the Humanist scripts as their models. +% +% +% \subsection{The \thisfont{} script} +% +% With the Gothic hands, used from the thirteenth century, the attention of +% the scribes moved from the individual letter to the word. The scripts +% changed to accomodate this interest so the appearance of the letters +% became subordinate to the overall appearance of the words they formed. +% Many of the letters appear to be indistinguishable today but the contemporary +% reading public seemed to have no difficulty. +% +% It was during the heyday of the Gothic scripts that separate capital +% letters were introduced. Also, as a small concession to legibility, +% the lowecase `i' acquired a small mark above it. Ligatures were similar +% to those in Early Gothic. The letter `w' was added to the hand early on +% and `j' started to appear after 1400, providing the full 26 letter alphabet +% for the first time. +% +% This font includes both lowercase and (fancy) uppercase letters. Guthenberg +% used this script as a model. +% +% \section{The \Lpack{tgothic} and \Lpack{alltgoth} packages} \label{sec:usc} +% +% The \thisfont{} font family is called |tgoth|. The font is supplied in both +% OT1 and T1 encodings. +% +% \subsection{The \Lpack{tgothic} 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{\tgothfamily} +% The |\tgothfamily| 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{\texttgoth} +% The command |\texttgoth{|\meta{text}|}| will typeset \meta{text} using the +% \thisfont{} fonts. +% +% \subsection{The \Lpack{alltgoth} 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{alltgoth} package automatically loads the \Lpack{tgothic} package, +% so its font commands are available if necessary. +% +% \StopEventually{ +% \bibliographystyle{alpha} +% \renewcommand{\refname}{Bibliography} +% \begin{thebibliography}{GMS94} +% \addcontentsline{toc}{section}{\refname} +% +% \bibitem[And69]{ANDERSON69} +% Donald M.~Anderson. +% \newblock {\em The Art of Written Forms: The Theory and Practice of Calligraphy}. +% \newblock Holt, Rinehart and Winston, 1969. +% +% \bibitem[Bol95]{BOLOGNA95} +% Giulia Bologna. +% \newblock {\em Illuminated Manuscripts: The Book before Gutenberg}. +% \newblock Crescent Books, 1995. +% +% \bibitem[Day95]{DAY95} +% Lewis F.~Day. +% \newblock {\em Alphabets Old \& New}. +% \newblock (3rd edition originally published by B.~T.~Batsford, 1910) +% \newblock Senate, 1995. +% +% \bibitem[Dro80]{DROGIN80} +% Marc Drogin. +% \newblock {\em Medieval Calligraphy: Its History and Technique}. +% \newblock Allenheld, Osmun \& Co., 1980. +% +% \bibitem[Dru95]{DRUCKER95} +% Johanna Drucker. +% \newblock {\em The Alphabetic Labyrinth}. +% \newblock Thames \& Hudson, 1995. +% +% \bibitem[Fir93]{FIRMAGE93} +% Richard A.~Firmage. +% \newblock {\em The Alphabet Abecedarium}. +% \newblock David R~Goodine, 1993. +% +% \bibitem[Fli98]{LETTRINE} +% Daniel Flipo. +% \newblock {\em The LETTRINE package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1998. +% +% \bibitem[Har95]{HARRIS95} +% David Harris. +% \newblock {\em The Art of Calligraphy}. +% \newblock DK Publishing, 1995. +% +% \bibitem[Jen95]{BETON} +% Frank Jensen. +% \newblock {\em The BETON package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1995. +% +% \bibitem[Joh71]{JOHNSTON75} +% Edward Johnston (ed. Heather Child). +% \newblock {\em Formal Penship and Other Papers}. +% \newblock Penthalic, 1971. +% +% \bibitem[Knu87]{CM} +% Donald E.~Knuth. +% \newblock {\em Computer Modern Typefaces}. +% \newblock Addison-Wesley, 1987. +% +% \bibitem[Knu92]{METAFONT} +% Donald E.~Knuth. +% \newblock {\em The METAFONTbook}. +% \newblock Addison-Wesley, 1992. +% +% \bibitem[GMS94]{GOOSSENS94} +% Michel Goossens, Frank Mittelbach, and Alexander Samarin. +% \newblock {\em The LaTeX Companion}. +% \newblock Addison-Wesley Publishing Company, 1994. +% +% \bibitem[Tho75]{THOMAS75} +% Alan G.~Thomas. +% \newblock {\em Great Books and Book Collectors}. +% \newblock Weidenfield and Nichoson, 1975. +% +% \bibitem[Wil99]{DOCMFP} +% Peter R.~Wilson. +% \newblock {\em The DOCMFP Package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1999. +% +% \bibitem[Wil99b]{ROMANNUM} +% Peter R.~Wilson. +% \newblock {\em The ROMANNUM Package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1999. +% +% \end{thebibliography} +% } +% +% \section{The Metafont code} \label{sec:mf} +% +% +% As previously noted, this work is part of a larger project to provide +% fonts covering the main manuscript book-hands. As such, one of the +% aims is to produce a coordinated set of fonts, especially as multiple +% hands might be used in a single document. +% +% Noting that the hands tend to be somewhat larger than the typical 10pt +% size (where the x-height is approximately 1.5mm) used for modern books, +% I have also designed the fonts +% at a larger than normal size, then applied some non-linear factors when reducing +% them down to a 10pt size. +% Further, I have used the height of the Carolingian minuscule as a +% normalising factor when deciding on the absolute height of any particular +% script. The x-height of the Carolingian font is made equal to the +% x-height of the Computer Modern Roman (CMR) font. +% +% Modern fonts are effectively drawn. That is, the outline of the letter is +% drawn carefully and the center is filled with ink. This is shown to good +% effect in the Metafont code for the Computer Modern fonts~\cite{CM}. +% In contrast, the manuscript letters were inked by single pen strokes in +% a calligraphic manner. I have tried to repeat this calligraphic style +% in the Metafont code. +% +% As much as possible I have tried to use parameter values from the +% Computer Modern Roman (CMR) fonts in order to reduce possible +% infelicities if the CM and manuscript fonts are used together. However, +% few of the CMR parameters are applicable to the calligraphic style. +% +% +% \subsection{The parameter file} +% +% We deal with the parameter files first, and start by announcing +% what they are for. The \thisfont{} font comes in three sizes and also as a normal +% and a bold font. +% \begin{macrocode} +%<*base7|base10|base17|base7b|base10b|base17b> +%%%% TGOTH7.MF Gothic Textura Quadrata at 7 point design size. +%%%% TGOTH10.MF Gothic Textura Quadrata at 10 point design size. +%%%% TGOTH17.MF Gothic Textura Quadrata at 17 point design size. +%%%% TGOTHB7.MF Gothic Textura Quadrata Bold at 7 point design size. +%%%% TGOTHB10.MF Gothic Textura Quadrata Bold at 10 point design size. +%%%% TGOTHB17.MF Gothic Textura Quadrata 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 + +%font_identifier:="TGOTH"; font_size 7pt#; +%font_identifier:="TGOTH"; font_size 10pt#; +%font_identifier:="TGOTH"; font_size 17.28pt#; +%font_identifier:="TGOTHB"; font_size 7pt#; +%font_identifier:="TGOTHB"; font_size 10pt#; +%font_identifier:="TGOTHB"; font_size 17.28pt#; + +% \end{macrocode} +% +% \DescribeVariable{jutstretch} +% The CMR scaling for lowercase serifs wrt 17pt size. +% \begin{macrocode} +% jutstretch:=1.19; +% jutstretch:=1.152; +% jutstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{stemstretch} +% The CMR scaling for lowercase stem widths wrt 17pt size. +% \begin{macrocode} +% stemstretch:=1.50; +% stemstretch:=1.31; +% stemstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{caprat} +% The scaling for capitals wrt lowercase. +% (the ratio for CMR10 is 1.59). +% \begin{macrocode} + caprat:=7/5; % ratio of capital height to minuscule height +% \end{macrocode} +% +% \DescribeVariable{cap_jutstretch} +% The CMR scaling for uppercase serifs wrt 17pt size. +% \begin{macrocode} +% cap_jutstretch:=1.3; +% cap_jutstretch:=1.2; +% cap_jutstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{cap_stemstretch} +% The CMR scaling for uppercase stem width wrt 17pt size. +% \begin{macrocode} +% cap_stemstretch:=1.45; +% cap_stemstretch:=1.31; +% cap_stemstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{bfudge} +% Letter width scaling for bold font wrt normal font. We don't really +% need to change this for bold fonts as the letter width is in terms +% of the pen, not the x-height. +% +% \begin{macrocode} +% bfudge:=1.0; +% bfudge:=1.0; %% normally 1.2 +% \end{macrocode} +% +% \DescribeVariable{szfudge} +% Width scaling wrt 17pt letter width. +% \begin{macrocode} +% szfudge:=1.18; +% szfudge:=1.0; +% szfudge:=1.0; +% \end{macrocode} +% +% \DescribeVariable{hstretch} +% Horizontal stretching factor wrt 17pt size letter width. +% \begin{macrocode} + hstretch:=szfudge*bfudge; +% \end{macrocode} +% +% \DescribeVariable{carol_height} +% The x-height of the Carolingian gothic font. +% \begin{macrocode} +% carol_height#:=108.5/36pt#; +% carol_height#:=155/36pt#; +% carol_height#:=268/36pt#; +% \end{macrocode} +% +% \DescribeVariable{vstretch} +% The height of this font wrt the Carolingian font. +% \begin{macrocode} + vstretch:=1.3; + +% \end{macrocode} +% +% \DescribeVariable{x_height} +% The x-height of lower case letters. Scaled from the Carolingian font. +% \begin{macrocode} + x_height#:=vstretch*carol_height#; +% \end{macrocode} +% +% \DescribeVariable{u} +% The unit width. The CMR values are used. +% \begin{macrocode} +% u#:=15.5/36pt#; +% u#:=20/36pt#; +% u#:=32.5/36pt#; +% u#:=17.9/36pt#; +% u#:=23/36pt#; +% 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 +% cap_serif_fit#:=3.5/36pt#; % extra sidebar near uppercase serifs +% cap_serif_fit#:=5/36pt#; % extra sidebar near uppercase serifs +% cap_serif_fit#:=8/36pt#; % extra sidebar near uppercase serifs +% letter_fit#:=0pt#; % extra space added to all sidebars +% letter_fit#:=0pt#; % extra space added to all sidebars +% letter_fit#:=-0.1pt#; % extra space added to all sidebars +% \end{macrocode} +% +% \DescribeVariable{sb} +% A length used for adjusting the side bearings of characters. Normally +% |1/2u| but want it less (1/2) for a Gothic. +% \begin{macrocode} +% sb#:=1/4u#; % unit for side bearings +% sb#:=1/4u#; % unit for side bearings +% sb#:=1/4u#; % unit for side bearings + +% \end{macrocode} +% +% \DescribeVariable{cap_sb} +% A length used for adjusting the side bearings of uppercase characters. +% \begin{macrocode} +% cap_sb#:=2sb#; % unit for uppercase side bearings +% cap_sb#:=2sb#; % unit for uppercase side bearings +% cap_sb#:=2sb#; % unit for uppercase side bearings + +% \end{macrocode} +% +% \DescribeVariable{cap_height} +% The height of capital letters. +% \begin{macrocode} +% cap_height#:=172.2/36pt#; % height of caps +% cap_height#:=246/36pt#; % height of caps +% 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} +% thickfudge:=1/5; +% thickfudge:=1/4; +% \end{macrocode} +% +% \DescribeVariable{thinfudge} +% The nib sharpness. +% \begin{macrocode} +thinfudge:=1/6; +% \end{macrocode} +% +% \DescribeVariable{thick} +% The maximum nib width. +% That is, the width of the thickest line that can be penned. +% \begin{macrocode} +thick#:=stemstretch*thickfudge*x_height#; % max pen breadth +% \end{macrocode} +% +% \DescribeVariable{thin} +% The nib thinness. +% That is, the width of the thinnest line that can be penned. +% \begin{macrocode} +thin#:=thinfudge*thick#; +% \end{macrocode} +% +% \DescribeVariable{pangle} +% The pen angle (in degrees). +% \begin{macrocode} +pangle:=45; % pen angle +% \end{macrocode} +% +% \DescribeVariable{stem_width} +% The width of a vertical stem. +% \begin{macrocode} +stem_width#:= thick#*(cosd pangle); +% \end{macrocode} +% +% \DescribeVariable{perpdec} +% \DescribeVariable{angdec} +% The perpendicular shift between pairs of thin decorative lines in capitals +% is |perpdec| and between angled lines is |angdec|. +% \begin{macrocode} +perpdec#:= 3thin#; +angdec#:= perpdec#/(cosd pangle); +% \end{macrocode} +% +% +% \DescribeVariable{ascratio} +% The height of lower case ascenders wrt |x_height|. +% \begin{macrocode} + ascratio:=5/4; +% \end{macrocode} +% +% \DescribeVariable{asc_height} +% The height of lower case ascenders. +% \begin{macrocode} + asc_height#:=ascratio*x_height#; +% \end{macrocode} +% +% \DescribeVariable{descratio} +% The depth of lower case descenders wrt |x_height|. +% \begin{macrocode} + descratio:=2/4; +% \end{macrocode} +% +% \DescribeVariable{desc_depth} +% The depth of lower case descenders. +% \begin{macrocode} + desc_depth#:=descratio*x_height#; +% \end{macrocode} +% +% \DescribeVariable{body_height} +% The height of the tallest character. +% \begin{macrocode} + body_height#:=caprat*asc_height#; +% \end{macrocode} +% +% \DescribeVariable{body_depth} +% The depth of the lowest character. +% \begin{macrocode} + body_depth#:=caprat*desc_depth#; +% \end{macrocode} +% +% \DescribeVariable{half_height} +% Half the normal letter height. +% \begin{macrocode} + half_height#:=1/2x_height#; % half the height of x height letters + +% \end{macrocode} +% +% \DescribeVariable{side} +% We might be using a square for the character design. +% \begin{macrocode} +side#:=x_height#; +% \end{macrocode} +% +% \DescribeVariable{rule_thickness} +% Thickness of rules (in math symbols). The CMR values are used. +% \begin{macrocode} +% rule_thickness#:=.34pt#; +% rule_thickness#:=.4pt#; +% rule_thickness#:=.6pt#; + +% \end{macrocode} +% +% \DescribeVariable{jutfudge} +% Controls the protrusion of serifs. +% \begin{macrocode} +%%%jutfudge:= 3/4; +jutfudge:= 1/2; +% \end{macrocode} +% +% \DescribeVariable{jut} +% The lowercase serif protrusion. +% \begin{macrocode} +jut#:=jutstretch*jutfudge*thick#; +% \end{macrocode} +% +% \DescribeVariable{srad} +% |srad| with |0 < srad < 1| controls the serif radius. +% \begin{macrocode} +srad:=0.8; % was 0.5 +% \end{macrocode} +% +% \DescribeVariable{trijut} +% The lowercase triangular serif protrusion. +% \begin{macrocode} +trijut#:=0.75jutstretch*thick#; +% \end{macrocode} +% +% \DescribeVariable{clubjutfudge} +% The fractional protusion of a club serif. +% \begin{macrocode} +clubjutfudge:=1/2; +% \end{macrocode} +% +% \DescribeVariable{clubjut} +% The lowercase club serif protrusion. +% \begin{macrocode} +clubjut#:=jutstretch*clubjutfudge*thick#; +% \end{macrocode} +% +% \DescribeVariable{wided} +% \DescribeVariable{widedmin} +% Default juts of wide (touching) diamonds. +% \begin{macrocode} +wided:= 0.75; +widedmin := 1.05 - wided; +% \end{macrocode} +% +% \DescribeVariable{narrowd} +% \DescribeVariable{narrowdmin} +% Default juts of narrow (non-touching) diamonds. +% \begin{macrocode} +narrowd:= 0.5; +narrowdmin := 0.7 - narrowd; +% \end{macrocode} +% +% \DescribeVariable{diawd} +% \DescribeVariable{diang} +% Default width and angle of diamonds. +% \begin{macrocode} +diawd := 1.0; +diang := 30; +% \end{macrocode} +% +% \DescribeVariable{fig_height} +% The height of numerals. Make these midway between normal and capital +% letters. +% \begin{macrocode} + fig_height#:=(0.5[1,caprat])*x_height#; +% \end{macrocode} +% +% \DescribeVariable{fig_width} +% The width of numerals. All numerals are the same width (roughly, an `o'). +% \begin{macrocode} + fig_width#:=hstretch*(4+wided+widedmin)*stem_width#; +% \end{macrocode} +% +% +% +% \DescribeVariable{o} +% Amount of overshoot for curves (as in an `o'). Use CMR values. +% \begin{macrocode} +% o#:=5/36pt#; +% o#:=8/36pt#; +% 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 tgothtitle %% switch to the driver file + +% \end{macrocode} +% +% The end of this code section. +% \begin{macrocode} +% +% \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 TGOTHTITLE.MF for the Gothic Textura Quadrata 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}{tgothic_font_setup} +% This macro contains the set up for the \thisfont{} fonts. +% \begin{macrocode} + +def tgothic_font_setup= % contains special stuff for tgothic fonts + define_pixels(side,half_height,carol_height,comma_width); + define_pixels(u,dot_size,letter_size,cap_height,width_adj,serif_fit, + cap_serif_fit,jut,clubjut,cap_jut,trijut); + define_pixels(fig_width); + define_whole_pixels(letter_fit,sb,cap_sb); + define_whole_vertical_pixels(body_height,asc_height,cap_height,x_height, + desc_depth,body_depth,fig_height); + define_corrected_pixels(o); + define_blacker_pixels(thick,thin); + define_pixels(stem_width); + define_pixels(perpdec,angdec); + let adjust_fit = normal_adjust_fit; +% \end{macrocode} +% \DescribeVariable{stylus} +% The pen for drawing the thinnest lines is |stylus|. +% \begin{macrocode} + pickup pencircle scaled thin; + stylus:=savepen; +% \end{macrocode} +% \DescribeVariable{thickstylus} +% The pen for drawing lines a bit thicker than the thinnest is |thickstylus|. +% \begin{macrocode} + pickup pencircle scaled (1.5thin); + thickstylus:=savepen; +% \end{macrocode} +% \DescribeVariable{quill} +% The normal calligraphic pen is |quill|. +% \begin{macrocode} + pickup pencircle xscaled thick yscaled thin rotated pangle; + quill:=savepen; + +% \end{macrocode} +% +% \DescribeVariable{threequarterquill} +% A pen with 3/4 of the width as quill (but with the same thinness). +% \begin{macrocode} + pickup pencircle xscaled 3/4thick yscaled thin rotated pangle; + threequarterquill := savepen; + +% \end{macrocode} +% +% \DescribeVariable{halfquill} +% A pen with 1/2 of the width as quill (but with the same thinness). +% \begin{macrocode} + pickup pencircle xscaled 1/2thick yscaled thin rotated pangle; + halfquill := savepen; + +% \end{macrocode} +% +% \DescribeVariable{quarterquill} +% A pen with 1/4 of the width as quill (but with the same thinness). +% \begin{macrocode} + pickup pencircle xscaled 1/4thick yscaled thin rotated pangle; + quarterquill := savepen; + +% \end{macrocode} +% +% +% \begin{macrocode} + numeric pcshiftx#; % x value of LHS of box wrt origin of char box + define_pixels(pcshiftx); + numeric sqxside#; % x size of the square + numeric sqyside#; % y size of the square + define_pixels(sqxside,sqyside); + +enddef; % end of tgothic_font_setup + +% \end{macrocode} +% \end{routine} +% +% +% \DescribeVariable{ductus} +% A boolean to control drawing the ductus (TRUE) or the full letter (FALSE). +% \begin{macrocode} +boolean ductus; +ductus:=false; +% \end{macrocode} +% +% \DescribeVariable{qhor} +% \DescribeVariable{qvert} +% The cosine and sine of the pen angle. +% \begin{macrocode} +numeric qhor, qvert; +qhor:=cosd(pangle); qvert:=sind(pangle); +% \end{macrocode} +% +% \DescribeVariable{pdir} +% The vector corresponding to the pen angle. +% \begin{macrocode} +pair pdir; pdir=dir(pangle); +% \end{macrocode} +% +% \DescribeVariable{ppdir} +% The vector that is perpendicular (anticlockwise) to the pen angle. +% \begin{macrocode} +pair ppdir; ppdir=dir(pangle+90); +% \end{macrocode} +% +% \begin{routine}{draw_upforkstem} +% A macro to draw a vertical stem with a fork at the top. +% |draw_upforkstem(1,2)| uses the current pen to draw a vertical line, whose absolute +% top and bottom are at |z1| and |z2|. The top (|z1|) has a wedge shaped slit. +% \begin{macrocode} + +def draw_upforkstem(suffix $, $$)= + pen oldpen; oldpen:=currentpen; + x$a=x$; top y$a = bot y$; % top of straight stem + draw z$a--z$$; % straight part + z$b = (rt x$, y$); z$c = (x$b, top y$a); + z$d = (lft x$, bot y$a); z$e = (x$d, y$); + pickup stylus; + rt x$cc = x$c; y$cc = y$c; + lft x$bb = x$b; y$bb = y$b; + lft x$dd = x$d; y$dd = y$d; + rt x$ee = x$e; y$ee = y$e; + filldraw z$a--z$bb..z$cc--cycle; % fork + filldraw z$a--z$dd..z$ee--cycle; + pickup oldpen; + labels($a,$b,$c,$d,$e); +enddef; % end of draw_upforkstem + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{draw_downforkstem} +% A macro to draw a vertical stem with a fork at the bottom. +% |draw_downforkstem(1,2)| uses the current pen to draw a vertical line, whose absolute +% top and bottom are at |z1| and |z2|. The bottom (|z2|) has a wedge shaped slit. +% \begin{macrocode} + +def draw_downforkstem(suffix $, $$)= + pen oldpen; oldpen:=currentpen; + x$$a=x$$; bot y$$a = top y$$; % bottom of straight stem + draw z$--z$$a; % straight part + z$$b = (rt x$$, y$$); z$$c = (x$$b, top y$$a); + z$$d = (lft x$$, bot y$$a); z$$e = (x$$d, y$$); + pickup stylus; + rt x$$cc = x$$c; y$$cc = y$$c; + lft x$$bb = x$$b; y$$bb = y$$b; + lft x$$dd = x$$d; y$$dd = y$$d; + rt x$$ee = x$$e; y$$ee = y$$e; + filldraw z$$a--z$$bb..z$$cc--cycle; % fork + filldraw z$$a--z$$dd..z$$ee--cycle; + pickup oldpen; + labels($$a,$$b,$$c,$$d,$$e); +enddef; % end of draw_downforkstem + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{draw_upcurlstem} +% A macro to draw a vertical stem with a curl to the left at the top. +% |draw_upcurlstem(1,2)| uses the current pen to draw a vertical line, whose absolute +% top and bottom are at |z1| and |z2|. The top (|z1|) has a fancy curl to the left, +% jutting out 3 stem widths. +% \begin{macrocode} + +def draw_upcurlstem(suffix $, $$)= + pen oldpen; oldpen:=currentpen; + path curlp[]; numeric curln[]; + x$a=x$; top y$a = y$; % top of straight stem + draw z$a--z$$; % straight part + curln1 := rt x$a - lft x$a; % stem width + x$b = x$a - 4/2curln1; y$b = y$a; % left jut + curlp1 := z$a{-pdir}..{left}z$b; + draw curlp1; + + x$c = x$a-3curln1; top y$c = bot y$a-1/2curln1; + x$f = x$b; y$f = 1/3[y$c,y$b]; + x$tb = rt x$b; y$tb = top y$b; + x$bb = lft x$b; y$bb = bot y$b; + curlp2 := z$tb--z$bb..{down}z$c..{ppdir}z$f; + pickup stylus; + draw curlp2; + pickup oldpen; + labels($a,$b,$c,$d,$e,$f); +enddef; % end of draw_upcurlstem + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{draw_updiamondstem} +% A macro to draw a vertical stem with a diamond at the top. +% |draw_updiamondstem(1,2,fr,minfr,wd,ang)| uses the quill pen to draw a vertical line, +% whose absolute +% top and bottom are at |z1| and |z2|. The top (|z1|) has a leftward diamond, whose +% left jut is |fr| times the width of the stem, right jut is |minfr*stem_width|, width +% is |wd*stem_width| and angle above the horizontal is |ang|. +% \begin{macrocode} + +def draw_updiamondstem(suffix $, $$)(expr fr, minfr, wd, phi)= + pen oldpen; oldpen:=currentpen; + numeric sj; sj := fr*stem_width; % jut distance + numeric sjr; sjr := minfr*stem_width; % right jut distance + numeric jw; jw := wd*stem_width; % jut width + %% $b is bottom left of jut, on LHS of stem + %% $c is leftmost point on jut + %% $d is topmost point on jut + %% $g is topmost point on stem + %% $e is on exprapolation of line from $d through $g + %% i.e., the rightmost point on jut + %% $f is on RHS of stem + pickup quill; + x$b = lft x$; + x$c = x$b - sj; y$c = y$ - jw*(cosd phi); % $c done + y$b = y$c - sj*(sind phi); % $b done + x$d = x$c + jw*(sind phi); y$d = y$; % $d done + x$g = x$f = rt x$; + y$g = y$ - (x$g-x$d)*(sind phi)/(cosd phi); % $g done + x$a = x$; top y$a = y$g; % $a done + x$e = x$g + sjr; z$e = whatever[z$d,z$g]; % $e done + z$f-z$e = whatever*(z$c-z$d); % $f done + x$h = x$b; y$h = bot y$a; + draw z$a--z$$; % straight part + pickup stylus; + lft x$cc = x$c; y$cc = y$c; + x$dd = x$d; top y$dd = y$d; + rt x$ee = x$e; bot y$ee=y$e; + filldraw z$b--z$cc--z$dd--z$ee--z$f--cycle; % diamond + if y$b > y$h: + lft x$hh = x$h; y$hh=y$h; + filldraw z$b--z$hh--z$g--cycle; + fi + pickup oldpen; + labels($a,$b,$c,$d,$e,$f); +enddef; % end of draw_updiamondstem + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{draw_downdiamondstem} +% A macro to draw a vertical stem with a diamond at the bottom. +% |draw_downdiamondstem(1,2,fr,minfr,wd,ang)| uses the quill pen to draw a vertical line, +% whose absolute +% top and bottom are at |z1| and |z2|. The bottom (|z2|) has a rightward diamond, whose +% right jut is |fr| times the width of the stem, left jut is |minfr*stem_width|, +% width is |wd*stem_width| and is at |ang| degrees below the horizontal. +% \begin{macrocode} + +def draw_downdiamondstem(suffix $, $$)(expr fr, minfr, wd, phi)= + pen oldpen; oldpen:=currentpen; + numeric sj; sj := fr*stem_width; % (left) jut distance + numeric sjr; sjr := minfr*stem_width;; % right jut distance + numeric jw; jw := wd*stem_width; % jut width + %% $$b is top right of jut, on RHS of stem + %% $$c is rightmost point on jut + %% $$d is bottommost point on jut + %% $$g is bottommost point on stem + %% $$e is on exprapolation of line from $d through $g + %% i.e., the leftmost point on jut + %% $$f is on LHS of stem + pickup quill; + x$$b = rt x$$; + x$$c = x$$b + sj; y$$c = y$$ + jw*(cosd phi); % $$c done + y$$b = y$$c + sj*(sind phi); % $$b done + x$$d = x$$c - jw*(sind phi); y$$d = y$$; % $$d done + x$$g = x$$f = lft x$$; + y$$g = y$$ + (x$$d-x$$g)*(sind phi)/(cosd phi); % $$g done + x$$a = x$$; bot y$$a = y$$g; % $$a done + x$$e = x$$g - sjr; z$$e = whatever[z$$d,z$$g]; % $$e done + z$$f-z$$e = whatever*(z$$c-z$$d); % $$f done + x$$h = x$$b; y$$h = top y$$a; + draw z$--z$$a; % straight part + pickup stylus; + rt x$$cc = x$$c; y$$cc=y$$c; + x$$dd = x$$d; bot y$$dd = y$$d; + lft x$$ee = x$$e; top y$$ee = y$$e; + filldraw z$$b--z$$cc--z$$dd--z$$ee--z$$f--cycle; % diamond + if y$$b < y$$h: + rt x$$hh = x$$h; y$$hh=y$$h; + filldraw z$$b--z$$hh--z$$g--cycle; + fi + pickup oldpen; + labels($$a,$$b,$$c,$$d,$$e,$$f); +enddef; % end of draw_downdiamondstem + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{draw_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 $0y$$: + 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 $0y$$: + 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 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; +tgothic_font_setup; + +% \end{macrocode} +% +% +% We generate letters, together with some punctuation and +% analphabetics. +% \begin{macrocode} + +input tgothl; % lower case +input tgothu; % capitals +input tgothpunct; % punctuation +input tgothlig; % the several dashes +input tgothdig; % arabic digits + +% \end{macrocode} +% +% Set up the spacings, stretches and shrinks. +% +% \begin{macrocode} + +font_slant slant; font_x_height x_height#; +if monospace: + font_normal_space 2vstretch*stem_width#; % no stretching or shrinking + font_quad vstretch*18u#; + font_extra_space vstretch*9u#; +else: + font_normal_space 2vstretch*stem_width#+2letter_fit#; + font_normal_stretch vstretch*3u#; font_normal_shrink vstretch*2u#; + font_quad vstretch*18u#+4letter_fit#; + font_extra_space vstretch*2u#; + +% \end{macrocode} +% +% Finally, do the ligtables, but I don't think they are needed (yet?). +% +% \begin{macrocode} + +fi + +bye. + + k#:=-.5u#; kk#:=-1.5u#; kkk#:=-2u#; % three degrees of kerning + kks#:=-4u#; kkx#:=-1.5u#; kkj#:=-2u#; kkr#:=-5u#; kkrs#:=-2u#; kkrl#:=-8u#; + ligtable "s": + "a" kern kks#, "A" kern kks#, + "c" kern kks#, "C" kern kks#, + "d" kern kks#, "D" kern kks#, + "e" kern kks#, "E" kern kks#, + "f" kern kks#, "F" kern kks#, + "g" kern kks#, "G" kern kks#, + "i" kern kks#, "I" kern kks#, + "j" kern kks#, "J" kern kks#, + "k" kern kks#, "K" kern kks#, + "m" kern kks#, "M" kern kks#, + "n" kern kks#, "N" kern kks#, + "o" kern kks#, "O" kern kks#, + "p" kern kks#, "P" kern kks#, + "q" kern kks#, "Q" kern kks#, + "r" kern kks#, "R" kern kks#, + "t" kern kks#, "T" kern kks#, + "u" kern kks#, "U" kern kks#, + "v" kern kks#, "V" kern kks#, + "w" kern kks#, "W" kern kks#, + "x" kern kks#, "X" kern kks#, + "y" kern kks#, "Y" kern kks#, + "z" kern kks#, "Z" kern kks#; + + ligtable "S": + "a" kern kks#, "A" kern kks#, + "c" kern kks#, "C" kern kks#, + "d" kern kks#, "D" kern kks#, + "e" kern kks#, "E" kern kks#, + "f" kern kks#, "F" kern kks#, + "g" kern kks#, "G" kern kks#, + "i" kern kks#, "I" kern kks#, + "j" kern kks#, "J" kern kks#, + "k" kern kks#, "K" kern kks#, + "m" kern kks#, "M" kern kks#, + "n" kern kks#, "N" kern kks#, + "o" kern kks#, "O" kern kks#, + "p" kern kks#, "P" kern kks#, + "q" kern kks#, "Q" kern kks#, + "r" kern kks#, "R" kern kks#, + "t" kern kks#, "T" kern kks#, + "u" kern kks#, "U" kern kks#, + "v" kern kks#, "V" kern kks#, + "w" kern kks#, "W" kern kks#, + "x" kern kks#, "X" kern kks#, + "y" kern kks#, "Y" kern kks#, + "z" kern kks#, "Z" kern kks#; + + ligtable "x": + "a" kern kkx#, "A" kern kkx#, + "b" kern kkx#, "B" kern kkx#, + "c" kern kkx#, "C" kern kkx#, + "d" kern kkx#, "D" kern kkx#, + "e" kern kkx#, "E" kern kkx#, + "g" kern kkx#, "G" kern kkx#, + "j" kern kkx#, "J" kern kkx#, + "l" kern kkx#, "L" kern kkx#, + "o" kern kkx#, "O" kern kkx#, + "q" kern kkx#, "Q" kern kkx#, + "t" kern kkx#, "T" kern kkx#, + "u" kern kkx#, "U" kern kkx#, + "v" kern kkx#, "V" kern kkx#, + "w" kern kkx#, "W" kern kkx#, + "y" kern kkx#, "Y" kern kkx#; + + ligtable "X": + "a" kern kkx#, "A" kern kkx#, + "b" kern kkx#, "B" kern kkx#, + "c" kern kkx#, "C" kern kkx#, + "d" kern kkx#, "D" kern kkx#, + "e" kern kkx#, "E" kern kkx#, + "g" kern kkx#, "G" kern kkx#, + "j" kern kkx#, "J" kern kkx#, + "l" kern kkx#, "L" kern kkx#, + "o" kern kkx#, "O" kern kkx#, + "q" kern kkx#, "Q" kern kkx#, + "t" kern kkx#, "T" kern kkx#, + "u" kern kkx#, "U" kern kkx#, + "v" kern kkx#, "V" kern kkx#, + "w" kern kkx#, "W" kern kkx#, + "y" kern kkx#, "Y" kern kkx#; + + ligtable "a": "A": + "b": "B": + "c": "C": + "d": "D": + "e": "E": + "h": "H": + "i": "I": + "k": "K": + "l": "L": + "m": "M": + "n": "N": + "o": "O": + "p": "P": + "t": "T": + "u": "U": + "v": "V": + "w": "W": + "z": "Z": + "j" kern kkj#, "J" kern kkj#; + + ligtable "r": + "a" kern kkr#, "A" kern kkr#, + "b" kern kkr#, "B" kern kkr#, + "c" kern kkr#, "C" kern kkr#, + "d" kern kkr#, "D" kern kkr#, + "e" kern kkr#, "E" kern kkr#, + "f" kern kkrs#, "F" kern kkrs#, + "g" kern kkrs#, "G" kern kkrs#, + "h" kern kkr#, "H" kern kkr#, + "i" kern kkr#, "I" kern kkr#, + "j" kern kkj#, "J" kern kkj#, + "k" kern kkrs#, "K" kern kkrs#, + "l" kern kkr#, "L" kern kkr#, + "m" kern kkr#, "M" kern kkr#, + "n" kern kkrs#, "N" kern kkrs#, + "o" kern kkr#, "O" kern kkr#, + "p" kern kkrs#, "P" kern kkrs#, + "q" kern kkr#, "Q" kern kkr#, + "r" kern kkrs#, "R" kern kkrs#, + "s" kern kkr#, "S" kern kkr#, + "t" kern kkr#, "T" kern kkr#, + "u" kern kkr#, "U" kern kkr#, + "v" kern kkr#, "V" kern kkr#, + "w" kern kkr#, "W" kern kkr#, + "x" kern kkx#, "X" kern kkx#, + "y" kern kkr#, "Y" kern kkr#, + "z" kern kkr#, "Z" kern kkr#; + + ligtable "R": + "a" kern kkr#, "A" kern kkr#, + "b" kern kkr#, "B" kern kkr#, + "c" kern kkr#, "C" kern kkr#, + "d" kern kkr#, "D" kern kkr#, + "e" kern kkr#, "E" kern kkr#, + "f" kern kkrs#, "F" kern kkrs#, + "g" kern kkrs#, "G" kern kkrs#, + "h" kern kkr#, "H" kern kkr#, + "i" kern kkr#, "I" kern kkr#, + "j" kern kkj#, "J" kern kkj#, + "k" kern kkrs#, "K" kern kkrs#, + "l" kern kkr#, "L" kern kkr#, + "m" kern kkr#, "M" kern kkr#, + "n" kern kkrs#, "N" kern kkrs#, + "o" kern kkr#, "O" kern kkr#, + "p" kern kkrs#, "P" kern kkrs#, + "q" kern kkr#, "Q" kern kkr#, + "r" kern kkrs#, "R" kern kkrs#, + "s" kern kkr#, "S" kern kkr#, + "t" kern kkr#, "T" kern kkr#, + "u" kern kkr#, "U" kern kkr#, + "v" kern kkr#, "V" kern kkr#, + "w" kern kkr#, "W" kern kkr#, + "x" kern kkx#, "X" kern kkx#, + "y" kern kkr#, "Y" kern kkr#, + "z" kern kkr#, "Z" kern kkr#; + + +fi + +bye. + +% +% \end{macrocode} +% +% \subsection{The code for normal letters} +% +% The following code is for the lower case characters. +% +% \begin{macrocode} +%<*min> +% TGOTHL.MF Program file for Gothic Textura Quadrata lower case +% + +% \end{macrocode} +% +% +% \begin{routine}{a} +% The letter `a'. +% \begin{macrocode} +cmchar "TGOTH letter a"; +beginchar("a", 2sb#+hstretch*((3+widedmin+wided)*stem_width#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pair pr[]; +pickup quill; +%% left hand +lft x1 = pcshiftx + widedmin*stem_width; y1 = 1/2h; +x2 = x1; y2 = 0; +draw_downdiamondstem(1,2,wided,widedmin,diawd,diang); +%% right stem +rt x3 = w - pcshiftx - wided*stem_width; y3=h; +x4=x3; y4=0; +z34=1/2[z3,z4]; +draw_updiamondstem(3,34,1.0,0.1,diawd,diang); +draw_downdiamondstem(34,4,wided,widedmin,diawd,diang); +%% swirl +x11=rt x1; y11 = top y1; +pickup stylus; +draw z3d--z3c..{-ppdir}z11; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,11,12,13,14,15,100); +endchar; % end "a" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{b} +% The letter `b'. +% \begin{macrocode} +cmchar "TGOTH letter b"; +beginchar("b", 2sb#+hstretch*((3 + widedmin + narrowdmin)*stem_width#), + asc_height#, 0); +adjust_fit(0,0); +numeric n[]; +numeric st; st := stem_width; +path pth[]; +pcshiftx := sb; +pickup quill; +n1:=w-2pcshiftx; % actual letter width +n2:=h/ascratio; % top of bowl +%%ductus:=true; +lft x1 = pcshiftx + widedmin*st; y1=h; +x2 = x1; y2=0; +z3=1/2[z1,z2]; +draw_upforkstem(1,3); +draw_downdiamondstem(3,2,1.0,widedmin,diawd,diang); +lft x6 = x2c; bot y6 = y2c; +x4 = x6; y4=n2; +draw_updiamondstem(4,6,narrowd,narrowdmin,diawd,diang); +x7 = x1; z7 = whatever[z4d,z4c]; +pickup stylus; +draw z4d--z7; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,100); +endchar; % end "b" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{c} +% The letter `c'. +% \begin{macrocode} +cmchar "TGOTH letter c"; +beginchar("c", 2sb#+hstretch*((3+wided)*stem_width#), + x_height#, 0); +adjust_fit(0,0); +numeric n[]; +numeric st; +st := stem_width; +pcshiftx := sb; +pickup quill; +%% left +lft x1 = pcshiftx+wided*st; y1 = 3/4h; +x2 = x1; y2 = 0; +draw_downdiamondstem(1,2,wided,widedmin,diawd,diang); +%% top +lft x3 = rt x1; bot y3 = top y1; +rt x4 = w - pcshiftx; +z3 - z4 = -whatever*ppdir; +draw z3--z4; +z11-z2c = z2c - z2d; +pickup stylus; +draw z2d--z11; +ductus:=false; +penlabels(1,2,3,4,5,6,14,16,17,18,100); +endchar; % end "c" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{d} +% The letter `d'. +% \begin{macrocode} +cmchar "TGOTH letter d"; +beginchar("d", 2sb#+hstretch*((3+widedmin+narrowdmin)*stem_width#), + asc_height#, 0); +adjust_fit(0,0); +numeric n[]; +numeric st; st := stem_width; +path pth[]; +pcshiftx := sb; +pickup quill; +n1 = h/ascratio; % x-height +%% left +n2 := st*(cosd diang); +lft x1 = pcshiftx + widedmin*st; top y1 = 12/16n1; +x2=x1; y2=0; +draw_downdiamondstem(1,2, 1.0, widedmin, diawd,diang); +%% right +rt x3 = w-pcshiftx-narrowdmin*st; y3=h; +x4 = x3; bot y4 = y2c; +draw_updiamondstem(3,4, 2.0, narrowdmin, diawd,diang); +x31 = lft x1; y31 = bot y1; +x32 = rt x1; y32 = top y1; +z33 = whatever[z31,z32] = whatever[z3e,z3c]; +pickup stylus; +draw z31--z33; +ductus:=false; +penlabels(0,1,2,3,4,5,6,7,8,100); +endchar; % end "d" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{e} +% The letter `e'. +% \begin{macrocode} +cmchar "TGOTH letter e"; +beginchar("e", 2sb#+hstretch*((3+wided)*stem_width#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +numeric st; +st := stem_width; +path pth[]; +pickup quill; +%% left +lft x1 = pcshiftx+wided*st; y1 = 3/4h; +x2 = x1; y2 = 0; +draw_downdiamondstem(1,2,wided,widedmin,diawd,diang); +%% top +lft x3 = rt x1; bot y3 = top y1; +rt x4 = w - pcshiftx; +z3 - z4 = -whatever*ppdir; +draw z3--z4; +x5 = x1; +z4-z5 = whatever*pdir; +pickup stylus; +draw z4--z5; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,17,27,34,70,100); +endchar; % end "e" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{f} +% The letter `f'. +% \begin{macrocode} +cmchar "TGOTH letter f"; +beginchar("f", 2sb#+hstretch*((3+widedmin)*stem_width#), + (asc_height#), 0); +adjust_fit(0,0); +numeric n[]; +numeric st; st := stem_width; +pcshiftx := sb; +pickup quill; +n1 := h/ascratio; % x-height +%% stem +lft x1=lft x2=pcshiftx+widedmin*st; y2=0; top y1 = h - (top y2 - bot y2); +draw_downdiamondstem(1,2,wided,widedmin,diawd,diang); +%% top bar +lft x3 = rt x1; rt x5 = w-pcshiftx; bot y3 = top y1; y5=y3; +draw z3--z5; +%% middle bar +lft x7 = pcshiftx; rt x9 = x5; +y7 = y9 = 10/16h; +draw z7--z9; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,14,15,16,100); +endchar; % end "f" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{g} +% The letter `g'. +% \begin{macrocode} +cmchar "TGOTH letter g"; +beginchar("g", 2sb#+hstretch*((4)*stem_width#), + x_height#, desc_depth#); +adjust_fit(0,0); +path pth[]; +pair vec[]; +numeric n[]; +numeric st; st := stem_width; +pcshiftx := sb; +pickup quill; +%% left +lft x1 = pcshiftx; +x2 = x1; bot y2 = 0; top y1 = h - (top y2 - bot y2); +draw z1--z2; +x3 = x4 = x1 + 2st; y4 = y2; +lft x13 = rt x1; bot y13 = top y1; +(z3-z13) = whatever*(dir -diang); +draw z13--z3--z4; +z34 = 1/2[z13,z3]; rt x37 = w-pcshiftx; top y37 = h; +draw z34{right}..{pdir}z37; +pickup stylus; +bot y5 = -d; +(z4-z5) = whatever*pdir; +draw z4--z5; +pickup quill; +%% bottom loop +z21 = z2; +lft x25 = x5; bot y25=-d; +x29 = 1/2[x3,x37]; +(z29-z21) = whatever*(dir -diang); +x23 = x29; y23 = 1/2[y29,y25]; +draw z21{dir - diang}..z23{down}..{left}z25; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,11,12,13,31,32,33,34,35,36,100); +endchar; % end "g" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{h} +% The letter `h'. +% \begin{macrocode} +cmchar "TGOTH letter h"; +beginchar("h", 2sb#+hstretch*((3 + narrowd + narrowdmin)*stem_width#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +numeric n[]; +n1 = h/ascratio; +%% stem +lft x1=lft x2=pcshiftx + narrowdmin*stem_width; +y1=h; y2=0; +z12 = 1/2[z1,z2]; +draw_upforkstem(1,12); +draw_downdiamondstem(12,2,narrowd,narrowdmin,diawd,diang); +%% bowl +x3 = x1 + 2stem_width; x4 = x3; +y3 = n1; y4=0; +z34 = 1/2[z3,z4]; +draw_updiamondstem(3,34,narrowd,narrowdmin,diawd,diang); +draw_downdiamondstem(34,4,narrowd,narrowdmin,diawd,diang); +x7 = x1; z7 = whatever[z3d,z3c]; +pickup stylus; +draw z3d--z7; +penlabels(1,2,3,4,5,6,100); +endchar; % end "h" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{i} +% The letter `i'. +% \begin{macrocode} +cmchar "TGOTH letter i"; +beginchar("i", 2sb#+hstretch*(2stem_width#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +x1 = x2 = 1/2w; y1 = h; y2 = 0; +z12 = 1/2[z1,z2]; +draw_updiamondstem(1,12,1/2,1/2,diawd,diang); +draw_downdiamondstem(12,2,1/2,1/2,diawd,diang); +x3= x1-thin; bot y3 = h + 1/2stem_width; +z4 = (x3+3thin,y3); +pickup halfquill; +draw z3--z4; +penlabels(1,2,100); +endchar; % end "i" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{j} +% The letter `j'. This letter was not in the script, it being a later invention. +% \begin{macrocode} +cmchar "TGOTH letter j"; +beginchar("j", sb#+hstretch*(5/2stem_width#), + x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% stem +rt x1 = w-pcshiftx - 1/2stem_width; y1 = h; +x2=x1; y2=-1/2d; +%% bottom hook +lft x3 = pcshiftx; bot y3 = -d; +draw_updiamondstem(1,2,narrowd,narrowdmin,diawd,diang); +draw z2{down}..z3{-pdir}; % hook +ductus:=false; +penlabels(1,2,3,100); +endchar; % end "j" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{k} +% The letter `k'. +% \begin{macrocode} +cmchar "TGOTH letter k"; +beginchar("k", 2sb#+hstretch*((3 + narrowd + narrowdmin)*stem_width#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +path pth[]; +numeric n[]; +numeric st; st := stem_width; +pickup quill; +%% stem +n1 = h/ascratio; % x-height +lft x1=lft x2=pcshiftx + narrowdmin*st; +y1=h; y2=0; +z12 = 1/2[z1,z2]; +draw_upforkstem(1,12); +draw_downdiamondstem(12,2, narrowd, narrowdmin, diawd,diang); +%% right leg +x3 = x1 + 2st; y3 = 8/16n1; +x4 = x3; y4 = 0; +z34 = 1/2[z3,z4]; +draw_downdiamondstem(34,4, narrowd, narrowdmin, diawd,diang); +draw z3--z34; +lft x5 = rt x1; +(z3-z5) = whatever*(dir -diang); +draw z5--z3; + +%% top arm +x6 = 1/2[x3, rt x3]; +(z6-z5) = whatever*(pdir); +rt x8 = lft x5; top y8 = bot y5+thick; +(z7-z8) = whatever*(z6-z5); +(z7-z6)=whatver*(z5-z3); +draw z6--z7; +pickup stylus; +draw z5--z6--z7--z8; + +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,13,14,100); +endchar; % end "k" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{l} +% The letter `l'. +% \begin{macrocode} +cmchar "TGOTH letter l"; +beginchar("l", 2sb#+hstretch*((2 + widedmin)*stem_width#), + asc_height#, 0); +adjust_fit(0,0); +numeric st; st := stem_width; +pcshiftx := sb; +pickup quill; +lft x1=pcshiftx + widedmin*st; y1=h; +x2=x1; y2 =0; +z3 = 1/2[z1,z2]; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_upforkstem(1,3); +draw_downdiamondstem(3,2,1.0,widedmin,diawd,diang); +ductus:=false; +penlabels(1,2,3,4,100); +endchar; % end "l" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{m} +% The letter `m'. +% \begin{macrocode} +cmchar "TGOTH letter m"; +beginchar("m", 2sb#+hstretch*((5+wided+narrowd)*stem_width#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pickup quill; +%% left stem +lft x1=pcshiftx+wided*stem_width; y1 = y3 = y5 = h; +x2=x1; y2=y4=y6=0; +z12=1/2[z1,z2]; +draw_updiamondstem(1,12,wided,widedmin,diawd,diang); +draw_downdiamondstem(12,2,narrowd,narrowdmin,diawd,diang); +%% right stem +rt x5 = rt x6 = w-pcshiftx-narrowd*stem_width; +z56 = 1/2[z5,z6]; +draw_updiamondstem(5,56,wided,widedmin,diawd,diang); +draw_downdiamondstem(56,6,narrowd,narrowdmin,diawd,diang); +%% middle stem +z3=1/2[z1,z5]; z4 = 1/2[z2,z6]; z34=1/2[z3,z4]; +draw_updiamondstem(3,34,wided,widedmin,diawd,diang); +draw_downdiamondstem(34,4,narrowd,narrowdmin,diawd,diang); +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 "TGOTH letter n"; +beginchar("n", 2sb#+hstretch*((3+wided+narrowd)*stem_width#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% left stem +lft x1 = pcshiftx + wided*stem_width; y1 = h; +x2 = x1; y2 = 0; +z12 = 1/2[z1,z2]; +draw_updiamondstem(1,12,wided,widedmin,diawd,diang); +draw_downdiamondstem(12,2,narrowd,narrowdmin,diawd,diang); +%% right stem +rt x3 = w-pcshiftx - narrowd*stem_width; y3=y1; +x4=x3;y4=y2; +z34=1/2[z3,z4]; +draw_updiamondstem(3,34,wided,widedmin,diawd,diang); +draw_downdiamondstem(34,4,narrowd,narrowdmin,diawd,diang); +penlabels(1,2,3,4,5,6,13,14,100); +endchar; % end "n" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{o} +% The letter `o'. +% \begin{macrocode} +cmchar "TGOTH letter o"; +beginchar("o", 2sb#+hstretch*((3 + narrowdmin + narrowdmin)*stem_width#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +numeric st; st := stem_width; +pickup quill; +%% bottom left +lft x12 = pcshiftx + narrowdmin*st; y12 = 1/2h; +x2 = x12; y2 = 0; +draw_downdiamondstem(12,2, 1.0, narrowdmin, diawd,diang); +%% right +rt x3 = w - pcshiftx - narrowdmin*st; x4=x3; +y3 = h; bot y4 = y2c; +draw_updiamondstem(3,4, 1.0, narrowdmin, diawd,diang); +%% top left +x1 = x12; top y1 = y3c; +draw z1--z12; +ductus:=false; +penlabels(1,2,3,4,5,100); +endchar; % end "o" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{p} +% The letter `p'. +% \begin{macrocode} +cmchar "TGOTH letter p"; +beginchar("p", 2sb#+hstretch*((3 + wided + widedmin)*stem_width#), + x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +numeric st; st := stem_width; +pickup quill; +%% stem +lft x1=lft x2=pcshiftx+wided*st; +y1=h; y2=-d; +z12 = 1/2[z1,z2]; +draw_updiamondstem(1,12,wided,widedmin,diawd,diang); +draw_downforkstem(12,2); +%% bowl +x3 = x4 = x1 + 2st; +y3 = y1; bot y4 = 0; +draw_updiamondstem(3,4,wided,widedmin,diawd,diang); +lft x5 = pcshiftx; y5 = y4; +draw z5--z4; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,100); +endchar; % end "p" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{q} +% The letter `q'. +% \begin{macrocode} +cmchar "TGOTH letter q"; +beginchar("q", 2sb#+hstretch*((3 + widedmin)*stem_width#), + x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +numeric st; st := stem_width; +pickup quill; +%% left/bottom of bowl +y99 = 0; +lft x1 = pcshiftx +widedmin*st; top y1 = h - (top y99 - bot y99); +x2 = x1; y2 = 0; +draw_downdiamondstem(1,2, 1.0, widedmin,diawd,diang); +%% rest +x3 = x1 + 2st; x4 = x3; y3 = y1; y4 = -d; +lft x5 = rt x1; bot y5 = top y1; +draw_downforkstem(3,4); +draw z5--z3; +ductus:=false; +penlabels(0,1,2,3,4,5,6,7,8,100); +endchar; % end "q" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{r} +% The letter `r'. +% \begin{macrocode} +cmchar "TGOTH letter r"; +beginchar("r", 2sb#+hstretch*((3+wided)*stem_width#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +numeric st; st := stem_width; +pickup quill; +%% stem +lft x1=lft x2=pcshiftx + wided*st; +y1=h; y2=0; +z12 = 1/2[z1,z2]; +draw_updiamondstem(1,12,wided,widedmin,diawd,diang); +draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); +%% bar +lft x3 = rt x1; rt x4 = w-pcshiftx; top y3 = top y4 = h; +draw z3--z4; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,100); +endchar; % end "r" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{s} +% The letter `s'. This is a short S. +% \begin{macrocode} +cmchar "TGOTH letter s"; +beginchar("s", 2sb#+hstretch*((4)*stem_width#), + x_height#, 0); +adjust_fit(0,0); +numeric n[]; +numeric st; st := stem_width; +pcshiftx := sb; +pickup stylus; +%% the diagonal +lft x2 = pcshiftx; bot y2 = 0; +rt x1 = w-pcshiftx; top y1 = h; +draw z1--z2; +pickup quill; +z211 = 13/32[z2,z1]; %% 10/32 too small, 16/32 too large +z213 = 24/32[z2,z1]; %% 26/32 too large +z212 = 1/2[z211,z213]; +%% bottom bowl +lft x21 = x2; bot y21 = 0; +rt x22 = w - pcshiftx; bot y22 = 0; +x23 = x22; z24 = z212; +(z24-z23) = whatever*(dir (180-diang)); +draw z21{pdir}..z22--z23--z24; +%% top bowl +z14 = z211; z11 = z213; +lft x12 = lft x13 = pcshiftx; +(z13-z14) = whatever*(dir (180-diang)); +(z12-z11) = whatever*(dir (180-diang)); +draw z11--z12--z13--z14; +ductus:=false; +penlabels(1,2,3,4,5,6,7,11,12,13,14,15,16,17,20,21,22,23,24,25,26,27,28,100); +endchar; % end "s" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{t} +% The letter `t'. +% \begin{macrocode} +cmchar "TGOTH letter t"; +beginchar("t", 2sb#+hstretch*((2+1.0)*stem_width#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +numeric st; st := stem_width; +pickup quill; +%% bar +lft x3 = pcshiftx; top y1 = h; +top y3 = bot y1; +rt x4 = w-pcshiftx; y4=y3; +draw z3--z4; +%% stem +lft x1 = rt x3; +x2 = x1; y2 = 0; +draw_downdiamondstem(1,2,wided,widedmin,diawd,diang); +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 "TGOTH letter u"; +beginchar("u", 2sb#+hstretch*((3+narrowd+wided)*stem_width#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +pickup quill; +%% left stem +lft x1 = pcshiftx + narrowd*stem_width; y1 = h; +x2 = x1; y2 = 0; +z12 = 1/2[z1,z2]; +draw_updiamondstem(1,12,narrowd,narrowdmin,diawd,diang); +draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); +rt x3 = w - pcshiftx - wided*stem_width; y3=y1; +x4=x3;y4=y2; +z34=1/2[z3,z4]; +draw_updiamondstem(3,34,narrowd,narrowdmin,diawd,diang); +draw_downdiamondstem(34,4,wided,widedmin,diawd,diang); +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,11,13,14,16,33,100); +endchar; % end "u" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{v} +% The letter `v'. +% \begin{macrocode} +cmchar "TGOTH letter v"; +beginchar("v", 2sb#+hstretch*((4 + narrowdmin)*stem_width#), + asc_height#, 0); +adjust_fit(0,0); +numeric n[]; numeric st; +pcshiftx := sb; +st := stem_width; +n1 := h/ascratio; % x-height +pickup quill; +%% bottom left stem +%% right and bottom left stems +rt x23 = w - pcshiftx - narrowdmin*st; y23 = n1; x24=x23; +x1 = x23 - 2st; y1 = 1/2n1; +x2 = x1; y2 = 0; +draw_downdiamondstem(1,2, 1.0, widedmin, diawd, diang); +bot y24 = y2c; +draw_updiamondstem(23, 24, narrowd, narrowdmin, diawd, diang); +%% curly bit +x11=x1; top y11 = h; +lft x12 = pcshiftx; y12 = 1/2[y11,y1]; +draw z11{down}..z12{down}..{down}z1; +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 "TGOTH letter w"; +beginchar("w", 2sb#+hstretch*((5+wided+narrowd)*stem_width#), + x_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +%% left stem +lft x1 = pcshiftx + narrowd*stem_width; y1 = y3 = y5 = h; +x2 = x1; y2 = y4 = y6 = 0; +z12=1/2[z1,z2]; +draw_updiamondstem(1,12, narrowd, narrowdmin, diawd, diang); +draw_downdiamondstem(12,2, wided, widedmin, diawd, diang); +%% right stem +rt x5 = w -pcshiftx-wided*stem_width; x6 = x5; +z56 = 1/2[z5,z6]; +draw_updiamondstem(5,56, narrowd, narrowdmin, diawd, diang); +draw_downdiamondstem(56,6, wided, widedmin, diawd, diang); +%% middle stem +z3 = 1/2[z1,z5]; z4 = 1/2[z2,z6]; z34 = 1/2[z3,z4]; +draw_updiamondstem(3,34, narrowd, narrowdmin, diawd, diang); +draw_downdiamondstem(34,4, wided, widedmin, diawd, diang); +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,11,13,14,33,34,53,16,100); +endchar; % end "w" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{x} +% The letter `x'. +% \begin{macrocode} +cmchar "TGOTH letter x"; +beginchar("x", 2sb#+hstretch*((4)*stem_width#), + x_height#, 0); +adjust_fit(0,0); +path pth[]; +numeric n[]; +numeric st; st := stem_width; +pcshiftx := sb; +pickup quill; +%% upright +x1 = 1/2w; y1 = h; +x2 = x1; y2 = 0; +z12 = 1/2[z1,z2]; +draw_updiamondstem(1,12, 1.5, widedmin,diawd,2/3diang); +draw_downdiamondstem(12,2, 1.5, widedmin,diawd,2/3diang); +%% top right bar +lft x3 = rt x1; top y3 = h; +rt x4 = w - pcshiftx; y4=y3; +draw z3--z4; +%% middle bar +n1 := h-y3; +lft x5 = pcshiftx; rt x6 = w - pcshiftx; +y5 = 1/2h - n1; y6 = 1/2h; +z56 = 1/2[z5,z6]; +draw z5{pdir}..z56..{pdir}z6; +%% bottom left +pickup stylus; +lft x11 = pcshiftx; bot y11 = 0; +draw z2e--z11; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,10,25,251,252,40,50,150,60,160,100); +endchar; % end "x" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{y} +% The letter `y'. Modern, but with a dot on top. +% \begin{macrocode} +cmchar "TGOTH letter y"; +beginchar("y", 2sb#+hstretch*((3 + narrowd+ narrowdmin)*stem_width#), + x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := sb; +path pth[]; +numeric n[]; +numeric st; st = stem_width; +pickup quill; +%% right side +rt x3 = w - pcshiftx - narrowdmin*st; y3 = h; +x33 = x3; y33 = 0; +%%draw_updiamondstem(3,4,narrowd,narrowdmin, diawd,diang); +%% left side +x1 = x3 - 2st; y1 = y3; +x2 = x1; y2 = 0; +n1 := top y2 - y2; +draw_updiamondstem(1,2,narrowd,narrowdmin, diawd,diang); +%% tail +x11 = rt x2; y11 = top y2; +x12 = lft x2; y12 = bot y2; +pickup stylus; +lft x14 = x1 - 2st; y14 = -d + n1; +x15 = x14+n1; bot y15 = -d; +z4 = whatever[z11,z12] = whatever[z3,z33]; +x10=x4; bot y10 = y4; +draw z10--z11--z12..{down}z14..{-ppdir}z15; +pickup quill; +draw_updiamondstem(3,4,narrowd,narrowdmin, diawd,diang); +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,10,11,12,14,15,33,100); +endchar; % end "y" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{z} +% The letter `z'. +% \begin{macrocode} +cmchar "TGOTH letter z"; +beginchar("z", 2sb#+hstretch*(3stem_width#), + x_height#, 0); +adjust_fit(0,0); +numeric n[]; +numeric st; st := stem_width; +path pth[]; +pcshiftx := sb; +pickup quill; +%% top bar ends +top y12 = h; +n1 := h - y12; +lft x1 = pcshiftx; rt x2 = w-pcshiftx; +%%y1 = y12-n1; y2=y12+n1; +y1 = y12-n1/2; y2=y12; +x12 = 1/2[x1,x2]; +pth1 := z1{pdir}..z12{right}..z2{pdir}; +%% bottom bar ends +bot y34 = 0; +x3=x1; x4=x2; +%%y3=y34-n1; y4=y34+n1; +y3=y34-n1/2; y4=y34; +x34 = 1/2[x3,x4]; +pth2 := z3{pdir}..z34{right}..z4{pdir}; +%% centre bar +z5 = 1/2[z1,z3]; z6 = 1/2[z2,z4]; z56 = 1/2[z5,z6]; +pth3 := z5{pdir}..z56{right}..z6{pdir}; +draw pth1; draw pth2; draw pth3; % bars +draw z2--z3; +ductus:=false; +penlabels(1,2,3,4,5,6,10o,10i,20o,20i,100); +endchar; % end "z" + +% \end{macrocode} +% \end{routine} +% +% +% The end of this file +% \begin{macrocode} +% +% \end{macrocode} +% +% +% \subsection{The code for capital letters} +% +% \thisfont{} `capitals' were drawn with the same pen as for the minuscules. +% The letters are pretty fancy. +% +% \begin{macrocode} +%<*maj> +% TGOTHU.MF Program file for Early Gothic `capitals' +% + +% \end{macrocode} +% +% +% \begin{routine}{A} +% The letter `A'. +% \begin{macrocode} +cmchar "TGOTH letter A"; +beginchar("A", 2cap_sb#+hstretch*((7)*stem_width#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +numeric n[]; +numeric st; st := stem_width; +path pth[]; +pair pr[]; +pickup quill; +%% stem +rt x1 = w - pcshiftx - wided*st; y1 = h; +x2 = x1; y2 = 0; +z12 = 1/2[z1,z2]; +draw_upcurlstem(1,12); +draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); +%% leg +x21 = x1; top y21 = h; +lft x22 = pcshiftx + widedmin*st; bot y22 = 0; +draw z21--z22; +draw (x22-widedmin*st, y22)--(x22+wided*st, y22); +%% bar +z13 = z12; +y16 = y13; z16 = whatever[z21,z22]; +x14 = 1/2[x13,x16]; (z13-z14) = whatever*pdir; +pickup threequarterquill; +draw z13--z14; +draw z14{ppdir}..{left}z16; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,11,12,13,14,15,100); +endchar; % end "A" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{B} +% The letter `B'. +% \begin{macrocode} +cmchar "TGOTH letter B"; +beginchar("B", 2cap_sb#+hstretch*((7)*stem_width#), + caprat*x_height#, 0); +adjust_fit(0,0); +numeric n[]; +numeric st; st := stem_width; +path pth[]; +pcshiftx := cap_sb; +pickup quill; +%% stem +lft x1 = pcshiftx; bot y1 = 0; +n1 := top y1; +lft x99 = 2/5w; bot y99 = 12/16h; +rt x12 = lft x99; top y12 = bot y99; +x14 = x1; y14 = y12; +x13 = 1/2[x14,x12]; y13 = 1/2[y12,(h-n1/2)]; +pth1 := z1{pdir}..z12..{left}z13..{-pdir}z14; +%% stem decoration +z101=z99; +z181 = (x99,-h); +z102 = (x101,y1); +z112 = 1/2[z101,z102]; +lft x8 = x112; y8 = y112; +%% lower bowl +x113 = w-pcshiftx; +(z113-z112) = whatever*(pdir); +rt x5 = w-pcshiftx; y5 = 6/16y113; +x3 = 10/16[x1,x5]; y3 = y1; +z7 = 2/16[z8,z113]; +pth2 := z1{pdir}..{right}z3..{up}z5..{-pdir}z7--z8; + +%% upper bowl +x10 = 1/2[x7,x5]; y10 = 1/2[y12,y99]; +x19 = 1/2[x99,x10]; top y19 = h; +pth3 := z8--z7{pdir}..{up}z10..{left}z19..{-pdir}z99; +%% angled decoration + +z105 = 1/4[z102,z112]; +x185 = 2w; +(z185-z105) = whatever*(pdir); +z106 = (z105--z185) intersectionpoint pth2; + +z107 = 1/4[z112,z101]; +x187 = 2w; +(z187-z107) = whatever*(pdir); +z108 = (z107--z187) intersectionpoint pth3; + +if ductus: + pickup stylus; +fi +draw pth1; +draw pth2; +draw pth3; +pickup stylus; +draw z101--z102; +draw z105--z106; draw z107--z108; + +ductus:=false; +penlabels(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,99,100); +endchar; % end "B" + + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{C} +% The letter `C'. +% \begin{macrocode} +cmchar "TGOTH letter C"; +beginchar("C", 2cap_sb#+hstretch*((5)*stem_width#), + caprat*x_height#, 0); +adjust_fit(0,0); +numeric n[]; +numeric st; st := stem_width; +path pth[]; +pcshiftx := cap_sb; +pickup quill; +%% bowl +n1:=w-2pcshiftx; % actual letter width +n2:=6/5w-2pcshiftx; % width of full bowl +x1=pcshiftx + 1/2n1; top y1 = h; +lft x2 = pcshiftx; y2 = 1/2h; +x3 = x1; bot y3 = 0; +rt x4 = w-pcshiftx; y4 = 1/4h; +x24 = x4; y24 = 3/4h; +pth1 := z24..z1{left}..z2{down}..z3{right}..z4{pdir}; +%% decoration +z101 = (x1,y1); z102 = (x1,y3); +z103 = (x1+perpdec, y1); z104 = (x103,y102+thin); +z105 = 1/2[z101,z102]; z107 = (x105,y105+angdec); +x185 = -w; (z105-z185) = whatever*(pdir); +z106 = (z105--z185) intersectionpoint pth1; +x187 = -w; (z107-z187) = whatever*(pdir); +z108 = (z107--z187) intersectionpoint pth1; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw pth1; %% bowl +pickup stylus; +draw z101--z102; draw z103--z104; +draw z105--z106; draw z107--z108; +ductus:=false; +penlabels(1,2,3,4,5,6,14,16,17,18,100,101,102,103,104,105,106,107,108,185); +endchar; % end "C" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{D} +% The letter `D'. +% \begin{macrocode} +cmchar "TGOTH letter D"; +beginchar("D", 2cap_sb#+hstretch*((7)*stem_width#), + caprat*x_height#, 0); +adjust_fit(0,0); +numeric n[]; +numeric st; st := stem_width; +path pth[]; +pcshiftx := cap_sb; +pickup quill; +%% bowl +lft x1 = pcshiftx; bot y1 = 0; +rt x5 = w-pcshiftx; y5 = 1/2h; +x3 = 10/16[x1,x5]; y3 = y1; +x7 = x3; top y7 = h; +lft x9 = 2/5w; bot y9 = 12/16h; +pth1 := z1{pdir}..{right}z3..{up}z5..{left}z7..{-pdir}z9; +%% stem +rt x12 = lft x9; top y12 = bot y9; +x14 = x1; y14 = y12; +x13 = 1/2[x14,x12]; y13 = 1/2[y12,y7]; +pth2 := z1{pdir}..z12..{left}z13..{-pdir}z14; +%% vertical decoration +z101=z9; +z181 = (x9,-h); +z102 = ((x101,h/2)--z181) intersectionpoint pth1; +z103a=(x101+perpdec,h); z103b=(x103a,h/2); z103c=(x103a,-h); +z103 = (z103a--z103b) intersectionpoint pth1; +z104 = (z103b--z103c) intersectionpoint pth1; +%% angled decoration +z106 = (lft x5, y5); +x105 = x103; (z106-z105) = whatever*(pdir); +z107 = (x105, y105+angdec); +x108a = 2w; (z108a-z107) = whatever*(pdir); +z108 = (z108a--z107) intersectionpoint pth1; +if ductus: + pickup stylus; +fi +draw pth1; +draw pth2; +pickup stylus; +draw z101--z102; draw z103--z104; +draw z105--z106; draw z107--z108; +ductus:=false; +penlabels(0,1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,100); +endchar; % end "D" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{E} +% The letter `E'. +% \begin{macrocode} +cmchar "TGOTH letter E"; +beginchar("E", 2cap_sb#+hstretch*((6)*stem_width#), %% (5) too small + caprat*x_height#, 0); +adjust_fit(0,0); +numeric n[]; +numeric st; st := stem_width; +path pth[]; +pcshiftx := cap_sb; +pickup quill; +%% bowl +n1:=w-2pcshiftx; % actual letter width +n2:=6/5w-2pcshiftx; % width of full bowl +x1=pcshiftx + 1/2n1; top y1 = h; +lft x2 = pcshiftx; y2 = 1/2h; +x3 = x1; bot y3 = 0; +rt x4 = w-pcshiftx; y4 = 1/4h; +x24 = x4; y24 = 3/4h; +pth1 := z24..z1{left}..z2{down}..z3{right}..z4{pdir}; +%% decoration +z101 = (x1,y1); z102 = (x1,y3); +z103 = (x1+perpdec, y1); z104 = (x103,y102+thin); +z105 = 1/2[z101,z102]; z107 = (x105,y105+angdec); +x185 = -w; (z105-z185) = whatever*(pdir); +z106 = (z105--z185) intersectionpoint pth1; +x187 = -w; (z107-z187) = whatever*(pdir); +z108 = (z107--z187) intersectionpoint pth1; +%% bar +lft x31 = x103; top y31 = y105; +rt x32 = w-pcshiftx; y32=y31; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw pth1; %% bowl +draw z31--z32; %% bar +pickup stylus; +draw z101--z102; draw z103--z104; +draw z105--z106; draw z107--z108; +ductus:=false; +penlabels(1,2,3,4,5,6,14,16,17,18,100,105,185,106); +endchar; % end "E" + + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{F} +% The letter `F'. +% \begin{macrocode} +cmchar "TGOTH letter F"; +beginchar("F", 2cap_sb#+hstretch*((5)*stem_width#), + 5/4caprat*x_height#, 0); +adjust_fit(0,0); +numeric n[]; +numeric st; st := stem_width; +path pth[]; +pcshiftx := cap_sb; +pickup quill; +%% stem (1--2) and top bar (21--22) +lft x1=lft x2=pcshiftx+widedmin*st; y2 = 0; +top y21 = top y22 = h - (top y2 - bot y2); x22 = w-pcshiftx-st; +lft x21 = rt x1; top y1 = bot y21; +z12 = 1/3[z1,z2]; +draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); +draw z1--z12; +draw z21--z22; +%% vertical decoration +z102 = 2/3[z2b,z2c]; +x101 = x102; y101 = y21; +%% bar +lft x14 = x101; y14 = y12; +rt x16 = w-pcshiftx; y16 = y14; +draw z14--z16; +z16tr = (rt x16, top y16); +pickup stylus; +draw z101--z102; +%% Other decoration +%% bottom bar +rt x201 = x16tr; top y201 = y16tr; +y202 = y201 - 2st; (z201-z202) = whatever*pdir; +draw z201--z202; +%% top bar +pickup quill; +z22tb = (rt x22, top y22); +x22bb - x22 = x22 - x22tb; y22bb - y22 = y22 - y22tb; +x22c = x22 + st; bot y22c = top y22 + 1/2st; +x22f = x22; y22f = 1/3[y22c, y22]; +pickup stylus; +x22br = x22bb; bot y22br = y22bb; +pth3 := z22br--z22tb..{up}z22c..{-ppdir}z22f; +draw pth3; + +penlabels(1,2,3,4,5,6,7,14,15,16,21,22,100); +endchar; % end "F" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{G} +% The letter `G'. +% \begin{macrocode} +cmchar "TGOTH letter G"; +beginchar("G", 2cap_sb#+hstretch*((7)*stem_width#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +numeric n[]; +numeric st; st := stem_width; +path pth[]; +pickup quill; +%% bar +top y3=h; n3 := h - top y3; +lft x1 = pcshiftx; rt x2=w-pcshiftx; +y1 = y3-n3; y2=y3; +x3=1/2[x1,x2]; +pth1 := z1{pdir}..z3..z2{pdir}; +%% bowl +n1 := w; % width of bowl +n2 := h; % height of bowl +lft x4 = pcshiftx; y4 = 1/2h; +x5=x3; bot y5 = 0; +rt x6 = w-pcshiftx; y6 = 6/16h; +%% decoration +x101 = lft x3; y101=y3; +x181 = x101; y181=-h/4; z191 = 1/2[z101,z181]; +z102=(x101,y5); +z103 = (x101+3thin, y101); z104 = (x103,y102); +lft x7 = x104; y7 = 10/16[y104,y103]; +%%pth2 := z3..z4{down}..z5{right}..z6{up}..{-pdir}z7; +%%pth2 := z2{-pdir}..z3..z4{down}..z5{right}..z6{up}..{-pdir}z7; +pth2 := z2--z3..z4{down}..z5{right}..z6{up}..{-pdir}z7; +z105 = (x104,y104+4thin); z107=(x105,y105+3thin); +x185 = 2w; (z185-z105) = whatever*(pdir); +z106 = (z105--z185) intersectionpoint pth2; +z108 = (x106,y106+3thin); +%% fork +z2tr = (rt x2, top y2); +x2a = x2tr; y2a = y2tr + thin; +x2b = x2a; y2b - y2 = y2 - y2a; +x2d = x2 - thick; y2d = y2; +pickup stylus; +% finish off the fork +x2c = x2d = x2e; +top y2e = y2tr; y2c - y2d = y2d - y2e; +%%filldraw z2d--z2c{right}..z2b--cycle; +%%filldraw z2d--z2a..{left}z2e--cycle; +filldraw z2e--z2c{right}..z2b--cycle; +filldraw z2c--z2a..{left}z2e--cycle; +pth9 := (rt x2a,y2a)--(rt x2b,y2b)--(rt x2d,y2d)--cycle; +unfill pth9; +unfill pth9; +unfill pth9; +draw z101--z102; draw z103--z104; +draw z105--z106; draw z107--z108; +pickup quill; +%%ductus:=true; +if ductus: + pickup stylus; +fi +%%draw pth1; %% bar +draw pth2; %% bowl +ductus:=false; +penlabels(1,2,2a,2b,2c,2d,2e,3,4,5,6,11,12,100,101,102,103,104,181,191); +endchar; % end "G" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{H} +% The letter `H'. +% \begin{macrocode} +cmchar "TGOTH letter H"; +beginchar("H", 2cap_sb#+hstretch*((8)*stem_width#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +numeric st; st := stem_width; +numeric n[]; +path pth[]; +pickup quill; +%% left stem +lft x1=pcshiftx+3st; y1=h; +x2=x1; y2=0; +z12 = 1/2[z1,z2]; +draw_upcurlstem(1,12); +draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); +% start of bowl +n1 := 12/16h; %% take this as the top of the bowl +x13=x1; y13=3/4n1; +rt x3 = w-pcshiftx; y3 = 8/16n1; +x14 = 8/16[x13,x3]; top y14 = n1; +x4 = 1/2[x14,x3]; bot y4=0; +pth1 := z13{pdir}..{right}z14..{down}z3..{-pdir}z4; +%% bottom curl +z21 = z4; +x24 = x3; top y24 = 0; +x23 = 1/2[x21,x24]; top y23 = bot y24; +pth2 := z21{-pdir}..z23..{ppdir}z24; +%% vertical decoration +z102 = 2/3[z2b,z2c]; +z182 = (x102,h); +z101 = (z102--z182) intersectionpoint pth1; +z105 = 1/2[z102,z101]; +x185 = 2w; +(z185-z105) = whatever*(pdir); +z106 = (z105--z185) intersectionpoint pth1; +z107 = (x105, y105-angdec); z187 = (x185, y185-angdec); +z108 = (z107--z187) intersectionpoint pth1; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw pth1; +pickup stylus; +draw pth2; +draw z101--z102; +draw z105--z106; draw z107--z108; +ductus:=false; +penlabels(1,2,3,4,5,6,13,14,100); +endchar; % end "H" + + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{I} +% The letter `I'. +% \begin{macrocode} +cmchar "TGOTH letter I"; +beginchar("I", 2cap_sb#+hstretch*((4+wided)*stem_width#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +numeric st; st := stem_width; +pickup quill; +lft x1=lft x2=pcshiftx+3st; +y1=h; y2=0; +z12 = 1/2[z1,z2]; +draw_upcurlstem(1,12); +draw_downdiamondstem(12,2,wided, widedmin,diawd,diang); +%% vertical decoration +z102 = 2/3[z2b,z2c]; +pickup stylus; +x101=x102; top y101 = h; +draw z101--z102; +ductus:=false; +penlabels(1,2,101,102,100); +endchar; % end "I" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{J} +% The letter `J'. This letter was not in the script, it being a later invention. +% \begin{macrocode} +cmchar "TGOTH letter J"; +beginchar("J", cap_sb#+hstretch*((4+wided)*stem_width#), + caprat*x_height#, 1/2caprat*x_height#); +adjust_fit(0,0); +pcshiftx := cap_sb; +numeric n[]; +numeric st; st := stem_width; +pickup quill; +%% stem +lft x1 = pcshiftx+3st; y1 = h; +x2=x1; y2=-d + (top y1 - bot y1); +%% bottom hook +lft x3 = pcshiftx; bot y3 = -d; +draw_upcurlstem(1,2); +draw z2{ppdir}..{-pdir}z3; +%% vertical decoration +x201 = rt x1; +x101 = x201 + 2/3wided*st; +pickup stylus; +top y101 = h; y201=y101; +z102=(x101,0); +draw z201--z101--z102; +ductus:=false; +penlabels(1,2,3,101,102,100); +endchar; % end "J" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{K} +% The letter `K'. +% \begin{macrocode} +cmchar "TGOTH letter K"; +beginchar("K", 2cap_sb#+hstretch*((8+wided)*stem_width#), + 5/4caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +path pth[]; +numeric n[]; +numeric st; st := stem_width; +pickup quill; +%% stem +n1 = 4/5h; % x-height +lft x1=lft x2=pcshiftx+3st; +y1=h; y2=0; +z12 = 1/2[z1,z2]; +draw_upcurlstem(1,12); +draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); +%% top arm +%%z3=(x1,1/2n1); +x3 = x1; top y3 = 14/16n1; +z7c = 1/2[z2,z3]; +top y3a = n1; (z3a-z3) = whatever*pdir; +rt x7a = w - pcshiftx - 2st; (z7a-z7c) = whatever*pdir; +x4 = 1/2[x3a,x7a]; y4 = y3a; +x5 = x7a; y5 = 1/2[y3a, y7a]; +z7 = (rt x7c, y7c); +pth1 := z3{pdir}..z4..z5..{-pdir}z7; +%% lower arm +z21=z7; +z24=(x5+st,y2a); +x23 = x24; y23 = 1/2[y21,y24]; +rt x25 = w-pcshiftx; bot y25 = 0; +pth2 := z21{pdir}..{down}z23..z24..{pdir}z25; +pickup quill; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw pth1; % upper bowl +draw pth2; % lower half +%% decorations +z1tr = (rt x1, top y1); +pickup stylus; +z102 = 2/3[z2b,z2c]; x101 = x102; top y101 = h; +x103 = x1tr; y103 = y101; +draw z103--z101--z102; +x105 = x101; y105 = 1/2[y7,y3]; +y185 = 2w; (z185-z105) = whatever*pdir; +z106 = (z105--z185) intersectionpoint pth1; +x107 = x105; y107 = y105-angdec; +x187 = x185; y187-y185 = y107-y105; +%%z108 = (z107--z187) intersectionpoint pth1; +draw z105--z106; +%%draw z107--z108; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,13,14,21,22,23,24,25,100); +endchar; % end "K" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{L} +% The letter `L'. +% \begin{macrocode} +cmchar "TGOTH letter L"; +beginchar("L", 2cap_sb#+hstretch*((7)*stem_width#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +numeric st; st := stem_width; +pickup quill; +lft x1=pcshiftx+3st; y1=h; +x2=x1; bot y2 =0; +draw_upcurlstem(1,2); +rt x4 = w-pcshiftx; bot y4 = 0; +draw z2{right}..{pdir}z4; +%% vertical decoration +x201 = rt x1; +x101 = x201+2/3wided*st; +pickup stylus; +top y101 = h; y201 = y101; +x102 = x101; bot y102=0; +draw z201--z101--z102; +ductus:=false; +penlabels(1,2,3,4,101,102,201,100); +endchar; % end "L" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{M} +% The letter `M'. +% \begin{macrocode} +cmchar "TGOTH letter M"; +beginchar("M", 2cap_sb#+hstretch*((11)*stem_width#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +numeric st; st := stem_width; +path pth[]; +pickup quill; +%%% left part +lft x301 = pcshiftx+3st; y301 = h; +x302 = x301; y302 = 0; +z312 = 1/2[z301,z302]; +draw_upcurlstem(301,312); +draw_downdiamondstem(312,302,wided,widedmin,diawd,diang); + +%% left N stem (and N part) +%%%lft x1=pcshiftx+3st; y1=h; +x1 = x301 + 3st; y1 = h; +x2=x1; y2=0; +z12 = 1/2[z1,z2]; +%%draw_upcurlstem(1,12); +%%draw_updiamondstem(1,12,wided,widedmin,diawd,diang); +draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); +% start of bowl +x13=x1; y13=3/4h; +rt x3 = w-pcshiftx; y3 = 8/16h; +x14 = 8/16[x13,x3]; top y14 = h; +x4 = 1/2[x14,x3]; bot y4=0; +pth1 := z13{pdir}..{right}z14..{down}z3..{-pdir}z4; +%% bottom curl +z21 = z4; +x24 = x3; top y24 = 0; +x23 = 1/2[x21,x24]; top y23 = bot y24; +pth2 := z21{-pdir}..z23..{ppdir}z24; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw pth1; +pickup stylus; +draw pth2; +pickup quill; +%% finish off the left part +x3011 = 1/2[x301,x1]; top y3011 = h; +z3123 = (x301,3/4h); z123 = (x1,y3123); +draw z3123--z3011--z123--z12; +%% vertical decorations + %% left part +z402 = 2/3[z302b,z302c]; +x401 = x402; z401 = whatever[z3123,z3011]; + %% right part +z102 = 2/3[z2b,z2c]; +z182 = (x102,h); +z101 = (z102--z182) intersectionpoint pth1; +%% angled decorations + %% left part +z406 = z13; +x405 = x402; (z406-z405) = whatever*pdir; +z407 = (x405, y405-angdec); z408 = (x406, y406-angdec); + %% right part +z105 = (x102,y405); +x185 = 2w; +(z185-z105) = whatever*(pdir); +z106 = (z105--z185) intersectionpoint pth1; +z107 = (x105, y105-angdec); z187 = (x185, y185-angdec); +z108 = (z107--z187) intersectionpoint pth1; +pickup stylus; +draw z401--z402; +draw z405--z406; draw z407--z408; +draw z101--z102; +draw z105--z106; draw z107--z108; +ductus:=false; +penlabels(1,2,3,4,5,6,13,14,101,102,105,106,107,108,301,302,100); +endchar; % end "M" + + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{N} +% The letter `N'. +% \begin{macrocode} +cmchar "TGOTH letter N"; +beginchar("N", 2cap_sb#+hstretch*((8)*stem_width#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +numeric st; st := stem_width; +path pth[]; +pickup quill; +%% left stem +lft x1=pcshiftx+3st; y1=h; +x2=x1; y2=0; +z12 = 1/2[z1,z2]; +draw_upcurlstem(1,12); +draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); +% start of bowl +x13=x1; y13=3/4h; +rt x3 = w-pcshiftx; y3 = 8/16h; +x14 = 8/16[x13,x3]; top y14 = h; +x4 = 1/2[x14,x3]; bot y4=0; +pth1 := z13{pdir}..{right}z14..{down}z3..{-pdir}z4; +%% bottom curl +z21 = z4; +x24 = x3; top y24 = 0; +x23 = 1/2[x21,x24]; top y23 = bot y24; +pth2 := z21{-pdir}..z23..{ppdir}z24; +%% vertical decoration +z102 = 2/3[z2b,z2c]; +z182 = (x102,h); +z101 = (z102--z182) intersectionpoint pth1; +z105 = 1/2[z102,z101]; +x185 = 2w; +(z185-z105) = whatever*(pdir); +z106 = (z105--z185) intersectionpoint pth1; +z107 = (x105, y105-angdec); z187 = (x185, y185-angdec); +z108 = (z107--z187) intersectionpoint pth1; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw pth1; +pickup stylus; +draw pth2; +draw z101--z102; +draw z105--z106; draw z107--z108; +ductus:=false; +penlabels(1,2,3,4,5,6,13,14,100); +endchar; % end "N" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{O} +% The letter `O'. +% \begin{macrocode} +cmchar "TGOTH letter O"; +beginchar("O", 2cap_sb#+hstretch*((7)*stem_width#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +path pth[]; +pickup quill; +lft x1=pcshiftx; rt x3=w-pcshiftx; y1=y3=h/2; +x2=x4=w/2; top y2=h; bot y4=0; +pth1 := z1..z2..z3..z4..cycle; +%% vertical decoration +z101=z2; z102=z4; +z103 = (x101-perpdec, y101); z104 = (x103,y102); +%% angled decoration +z108 = (lft x3,y3); +x107 = x101; (z108-z107) = whatever*(pdir); +z105 = (x107, y107+angdec); +x106a = 2w; (z106a-z105) = whatever*(pdir); +z106 = (z105--z106a) intersectionpoint pth1; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw pth1; +pickup stylus; +draw z101--z102; draw z103--z104; +draw z105--z106; draw z107--z108; +ductus:=false; +penlabels(1,2,3,4,5,100); +endchar; % end "O" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{P} +% The letter `P'. +% \begin{macrocode} +cmchar "TGOTH letter P"; +beginchar("P", 2cap_sb#+hstretch*((8)*stem_width#), + caprat*x_height#, 1/2caprat*x_height#); +adjust_fit(0,0); +pcshiftx := cap_sb; +path pth[]; +numeric n[]; +numeric st; st := stem_width; +pickup quill; +%% stem +lft x1=lft x2=pcshiftx+3st; +y1=h; y2=-d; +z12 = 1/2[z1,z2]; +draw_upcurlstem(1,12); +draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); +%% vertical decoration +z1tr = (rt x1, top y1); +z102 = 2/3[z2b,z2c]; +pickup stylus; +x101 = x102; top y101 = h; +x103 = x1tr; y103 = y101; +draw z103--z101--z102; +pickup quill; +%% bowl +lft x22 = x101; top y22 = h; +x21 = x1; (z22-z21) = whatever*pdir; +rt x24 = w - pcshiftx; y24 = 1/2h; +x25 = 1/2[x22,x24]; bot y25 = 0; +pth1 := z21--z22{down}..{down}z24..{-pdir}z25; +z31 = z25; +lft x33 = pcshiftx; bot y33 = 0; +pth2 := z33{pdir}..{right}z31; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw pth1; draw pth2; +%% angled decoration +x105 = x101; y105 = 1/3h; +x185 = 2w; +(z185-z105) = whatever*pdir; +z106 = (z105--z185) intersectionpoint pth1; +z107 = (x105,y105-angdec); +x187 = x185; y107 - y105 = y187 - y185; +z108 = (z107--z187) intersectionpoint pth1; +pickup stylus; +draw z105--z106; draw z107--z108; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,100); +endchar; % end "P" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{Q} +% The letter `Q'. +% \begin{macrocode} +cmchar "TGOTH letter Q"; +beginchar("Q", 2cap_sb#+hstretch*((8)*stem_width#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +path pth[]; +pickup quill; +lft x1=pcshiftx; rt x3=w-pcshiftx-stem_width; y1=y3=h/2; +x2=x4=w/2; top y2=h; bot y4=0; +pth1 := z1..z2..z3..z4..cycle; +%% tail +pth2 := z1..z4..z3; +z11 = directionpoint pdir of pth2; +rt x13 = w-pcshiftx; bot y13 = 0; +pth3 := z11{pdir}..{pdir}z13; +%% vertical decoration +z101=z2; z102=z4; +z103 = (x101-perpdec, y101); z104 = (x103,y102); +%% angled decoration +z108 = (lft x3,y3); +x107 = x101; (z108-z107) = whatever*(pdir); +z105 = (x107, y107+angdec); +x106a = 2w; (z106a-z105) = whatever*(pdir); +z106 = (z105--z106a) intersectionpoint pth1; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw pth1; draw pth3; +pickup stylus; +draw z101--z102; draw z103--z104; +draw z105--z106; draw z107--z108; +ductus:=false; +penlabels(1,2,3,4,5,100); +endchar; % end "Q" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{R} +% The letter `R'. +% \begin{macrocode} +cmchar "TGOTH letter R"; +beginchar("R", 2cap_sb#+hstretch*((8+wided)*stem_width#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +path pth[]; +numeric n[]; +numeric st; st := stem_width; +pickup quill; +%% stem +n1 = h; % x-height +lft x1=lft x2=pcshiftx+3st; +y1=h; y2=0; +z12 = 1/2[z1,z2]; +draw_upcurlstem(1,12); +draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); +%% top arm +%%z3=(x1,1/2n1); +x3 = x1; top y3 = 14/16n1; +z7c = 1/2[z2,z3]; +top y3a = n1; (z3a-z3) = whatever*pdir; +rt x7a = w - pcshiftx - 2st; (z7a-z7c) = whatever*pdir; +x4 = 1/2[x3a,x7a]; y4 = y3a; +x5 = x7a; y5 = 1/2[y3a, y7a]; +z7 = (rt x7c, y7c); +pth1 := z3{pdir}..z4..z5..{-pdir}z7; +%% lower arm +z21=z7; +z24=(x5,y2a); +x23 = x24; y23 = 1/2[y21,y24]; +rt x25 = w-pcshiftx; bot y25 = 0; +pth2 := z21{pdir}..{down}z23..z24..{pdir}z25; +pickup quill; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw pth1; % upper bowl +draw pth2; % lower half +%% decorations +z1tr = (rt x1, top y1); +pickup stylus; +z102 = 2/3[z2b,z2c]; x101 = x102; top y101 = h; +x103 = x1tr; y103 = y101; +draw z103--z101--z102; +x105 = x101; y105 = 1/2[y7,y3]; +y185 = 2w; (z185-z105) = whatever*pdir; +z106 = (z105--z185) intersectionpoint pth1; +x107 = x105; y107 = y105-angdec; +x187 = x185; y187-y185 = y107-y105; +%%z108 = (z107--z187) intersectionpoint pth1; +draw z105--z106; +%%draw z107--z108; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,13,14,21,22,23,24,25,100); +endchar; % end "R" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{S} +% The letter `S'. +% \begin{macrocode} +cmchar "TGOTH letter S"; +beginchar("S", 2cap_sb#+hstretch*((8)*stem_width#), + caprat*x_height#, 0); +adjust_fit(0,0); +numeric n[]; +numeric st; st := stem_width; +path pth[]; +pcshiftx := cap_sb; +pickup quill; +pickup threequarterquill; +%% top +n1 := 1; +lft x1 = pcshiftx + n1*st; top y1 = h; +rt x3 = w - pcshiftx; y3 = y1; +x2 = 1/2[x1,x3]; top y2 = y1; +pth1 := z1..z2..{pdir}z3; +draw pth1; +%% bottom +lft x4 = pcshiftx; bot y4 = 0; +rt x6 = w -pcshiftx - n1*st; y6 = y4; +x5 = 1/2[x4,x6]; bot y5 = y4; +pth2 := z4{pdir}..z5..z6; +draw pth2; +%% top path +z100 = (1/2w, 1/2h); +z11 = z1; z15 = z6; +x13 = x100; y13 = y100 + st; +pth3 := z11..{right}z13{right}..z15; +draw pth3; +%% bottom path +z21 = z11; z25 = z6; +x23 = x100; y100 - y23 = y13 - y100; +pth4 := z21..{right}z23{right}..z25; +draw pth4; +%% decorations + %% top +z101 = (x2+angdec,y2); y181 = 0; (z101-z181) = whatever*pdir; +z102 = (z101--z181) intersectionpoint pth3; +z103 = (x101-angdec, y101); x183-x181 = x103-x101; y183 = 0; +z104 = (z103--z183) intersectionpoint pth3; + %% bottom +z201 = (x5,y5); y281 = h; (z201-z281) = whatever*pdir; +z202 = (z201--z281) intersectionpoint pth4; +z203 = (x201-angdec, y201); x283-x281 = x203-x201; y283 = h; +z204 = (z203--z283) intersectionpoint pth4; +pickup stylus; +draw z101--z102; draw z103--z104; +draw z201--z202; draw z203--z204; + + +%%ductus:=true; +if ductus: + pickup stylus; +fi +ductus:=false; +penlabels(1,2,3,4,5,6,7,11,17,20,26,27,28,100,101,102,103,104,201,202,203,204); +endchar; % end "S" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{T} +% The letter `T'. +% \begin{macrocode} +cmchar "TGOTH letter T"; +beginchar("T", 2cap_sb#+hstretch*((7)*stem_width#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +numeric n[]; +numeric st; st := stem_width; +path pth[]; +pickup quill; +%% bar +top y3=h; n3 := h - top y3; +lft x1 = pcshiftx; rt x2=w-pcshiftx; +y1 = y3-n3; y2=y3; +x3=1/2[x1,x2]; +pth1 := z1{pdir}..z3..z2{pdir}; +%% bowl +n1 := w; % width of bowl +n2 := h; % height of bowl +lft x4 = pcshiftx; y4 = 1/2h; +x5=x3; bot y5 = 0; +rt x6 = w-pcshiftx; y6 = 6/16h; +%%pth2 := z3..z4{down}..z5{right}..z6{pdir}; +%% decoration +x101 = lft x3; y101=y3; +x181 = x101; y181=-h/4; z191 = 1/2[z101,z181]; +%%z102 = z191--z181 intersectionpoint pth2; %%% ???? NO INTERSECTION!!!!!! +z102=(x101,y5); +z103 = (x101+3thin, y101); z104 = (x103,y102); +lft x7 = x104; y7 = 10/16[y104,y103]; +pth2 := z3..z4{down}..z5{right}..z6{up}..{-pdir}z7; +z105 = (x104,y104+4thin); z107=(x105,y105+3thin); +x185 = 2w; (z185-z105) = whatever*(pdir); +z106 = (z105--z185) intersectionpoint pth2; +z108 = (x106,y106+3thin); +pickup stylus; +draw z101--z102; draw z103--z104; +draw z105--z106; draw z107--z108; +pickup quill; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw pth1; %% bar +draw pth2; %% bowl +ductus:=false; +penlabels(1,2,3,4,5,6,11,12,100,101,102,103,104,181,191); +endchar; % end "T" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{U} +% The letter `U'. +% \begin{macrocode} +cmchar "TGOTH letter U"; +beginchar("U", 2cap_sb#+hstretch*((8)*stem_width#), + caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := cap_sb; +numeric n[]; +numeric st; st := stem_width; +path pth[]; +pickup quill; +%% stem tops +lft x1 = pcshiftx + 3st; y1 = h; +rt x3 = w - pcshiftx - widedmin*st; y3 = h; +% bottom of bowl +x7 = x1 - 3/2st; bot y7 = 0; +rt x9 = lft x3; bot y9 = 0; +pth1 := z7{pdir}..{pdir}z9; +draw pth1; +%% stem bottoms +z2 = (z1 -- (x1,-h)) intersectionpoint pth1; +x4 = x3; bot y4 = top y9; +draw_upcurlstem(1,2); +draw_updiamondstem(3,4,wided,widedmin,diawd,diang); +%% decorations +z1tr = (rt x1, top y1); +pickup stylus; +z99 = 2/3[z3b,z3c]; +x101 - x1 = x3 - x99; top y101 = h; +x102 = x101; y102 = y2; +x103 = x1tr; y103 = y101; +draw z103--z101--z102; +x105 = x101; y105 = 1/3h; +x106 = x3; (z106-z105) = whatever*pdir; +z107 = (x105, y105-angdec); x108 = x106; y108-y106 = y107-y105; +draw z105--z106; draw z107--z108; +%%ductus:=true; +if ductus: + pickup stylus; +fi +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,11,13,14,16,33,100); +endchar; % end "U" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{V} +% The letter `V'. +% \begin{macrocode} +cmchar "TGOTH letter V"; +beginchar("V", 2cap_sb#+hstretch*((8)*stem_width#), + caprat*x_height#, 0); +adjust_fit(0,0); +numeric n[]; +numeric st; st := stem_width; +path pth[]; +pcshiftx := cap_sb; +pickup quill; +%% left stem top +lft x1 = pcshiftx + 3st; y1 = h; +% bottom of bowl +x7 = x1 - 3/2st; bot y7 = 0; +x9 = w/2; bot y9 = 0; +pth1 := z7{pdir}..{right}z9; +draw pth1; +%% left stem bottom +x81 = x1; y81 = - h; +z2 = (z1--z81) intersectionpoint pth1; +draw_upcurlstem(1,2); +%% right stem +z6 = z9; +rt x5 = w - pcshiftx; top y5 = 3/4h; +x3 = 1/2[rt x1, lft x5]; +x4 = 1/2[x3,x5]; top y4 = h; +y3 = 1/2[y4,y5]; +pth2 := z6{pdir}..{up}z5..{left}z4..{-pdir}z3; +draw pth2; +pth3 := pth1 & pth2; +%% decoration +z1tr = (rt x1, top y1); +x101 = x1tr + 2/3wided*st; +pickup stylus; +top y101 = h; +z103 = (x1tr,y101); +z181 = (x101,-w); +z102 = (z101--z181) intersectionpoint pth3; +draw z103--z101--z102; +x105 = x101; y105 = 1/3[y102,y101]; +x185 = 2w; (z185-z105) = whatever*pdir; +z106 = (z105--z185) intersectionpoint pth2; +z107 = (x105, y105-angdec); +x187 = x185; y187-y185 = y107-y105; +z108 = (z107--z187) intersectionpoint pth2; +draw z105--z106; draw z107--z108; + +%%ductus:=true; +if ductus: + pickup stylus; +fi + +ductus:=false; +penlabels(1,2,3,4,5,11,13,14,23,26,100); +endchar; % end "V" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{W} +% The letter `W'. This is a modern version as the font did not have a W. +% \begin{macrocode} +cmchar "TGOTH letter W"; +beginchar("W", 2cap_sb#+hstretch*((12)*stem_width#), + caprat*x_height#, 0); +adjust_fit(0,0); +numeric n[]; +numeric st; st := stem_width; +path pth[]; +pcshiftx := cap_sb; +pickup quill; +%% top of stems +lft x1 = pcshiftx + 3st; y1 = h; +rt x999 = w - pcshiftx; +x3 = 1/2[x1,x999]; y3 = h; +%% bowl bottoms +x21 = x1 - 3/2st; bot y21 = 0; +rt x23 = lft x3; bot y23 = 0; +pth1 := z21{pdir}..z23; +draw pth1; +lft x31 = rt x23; bot y31 = top y23; +x33 = 1/2[x31,x999]; bot y33 = 0; +pth2 := z31{pdir}..z33; +draw pth2; +%% bottom of stems +z2 = (z1--(x1,0)) intersectionpoint pth1; +x4 = x3; bot y4 = top y23; +draw_upcurlstem(1,2); +draw_updiamondstem(3,4,wided,widedmin,diawd,diang); +%% right V stem +z16 = z33; +x15 = x999; top y15 = 3/4h; +x13 = 1/2[rt x3, lft x15]; +x14 = 1/2[x13,x15]; top y14 = h; +y13 = 1/2[y14,y15]; +pth3 = z16{pdir}..{up}z15..{left}z14..{-pdir}z13; +draw pth3; +%% decorations +z1tr = (rt x1, top y1); +z3tr = (rt x3, top y3); +pickup stylus; +%% for U +z99 = 2/3[z3b,z3c]; +x101 - x1 = x3 - x99; top y101 = h; +x102 = x101; y102 = y2; +x103 = x1tr; y103 = y101; +draw z103--z101--z102; +x105 = x101; y105 = 1/3h; +x106 = x3; (z106-z105) = whatever*pdir; +z107 = (x105, y105-angdec); x108 = x106; y108-y106 = y107-y105; +draw z105--z106; draw z107--z108; +%% for V + +x301 = x3tr+2/3wided*st; top y301 = y3e; +z381 = (x301,-w); +z302 = (z301--z381) intersectionpoint pth2; +draw z3e--z301--z302; +x305 = x301; y305 = 1/3[y302,y301]; +x385 = 2w; (z385-z305) = whatever*pdir; +z306 = (z305--z385) intersectionpoint pth3; +z307 = (x305, y305-angdec); +x387 = x385; y387-y385 = y307-y305; +z308 = (z307--z387) intersectionpoint pth3; +draw z305--z306; draw z307--z308; + + + +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,11,13,14,33,34,53,16,100); +endchar; % end "W" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{X} +% The letter `X'. +% \begin{macrocode} +cmchar "TGOTH letter X"; +beginchar("X", 2cap_sb#+hstretch*((8)*stem_width#), + caprat*x_height#, 0); +adjust_fit(0,0); +path pth[]; +numeric n[]; +numeric st; st := stem_width; +pcshiftx := cap_sb; +pickup quill; +%% center stem +lft x1 = lft x2 = pcshiftx + 3st; +y1 = 3/4h; y2 = 1/4h; +draw z1--z2; +%% top right +z21 = z1; top y22 = h; (z22-z21) = whatever*pdir; +rt x24 = w-pcshiftx; y24 = y21; +pth1 := z21--z22{-ppdir}..{pdir}z24; +draw pth1; +%% bottom right +z31 = z2; +rt x33 = w-pcshiftx; bot y33 = 0; +pth2 := z31{-ppdir}..{pdir}z33; +draw pth2; +%% bottom left +z41 = z2; +bot y43 = -1/4h; (z41-z43) = whatever*pdir; +x45 = x43 + st; y45=y43; +pth3 := z41--z43{-pdir}..{pdir}z45; +pickup stylus; +draw pth3; +pickup quill; +%% top left +x11 = x1; y11 = h; +draw_upcurlstem(11,1); +%% decoration +x81 = rt x1; +pickup stylus; +x101 = x102 = x81 + 2/3wided*st; +z101 = whatever[z1,z22]; +z102 = (z101--(x101,0)) intersectionpoint pth2; +draw z101--z102; +pickup quill; +%% middle arms +z120 = 1/2[z1,z2]; +z51 = z120; +lft x53 = pcshiftx; top y53 = y51; +x52 = 1/2[x51,x53]; y52 = y51; +pth5 := z51--z52{left}..{-pdir}z53; +draw pth5; +lft x61 = x101; y61 = y120; +rt x63 = w-pcshiftx; bot y63 = y61; +x62 = 1/2[x61,x63]; y62 = y61; +pth6 := z61--z62{right}..{pdir}z63; +draw pth6; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,10,25,251,252,40,50,51,52,53,61,62,63,101,102,150,60,160,100); +endchar; % end "X" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{Y} +% The letter `Y'. +% \begin{macrocode} +cmchar "TGOTH letter Y"; +beginchar("Y", 2cap_sb#+hstretch*((8)*stem_width#), + caprat*x_height#, 1/2caprat*x_height#); +adjust_fit(0,0); +numeric n[]; +numeric st; st := stem_width; +path pth[]; +pcshiftx := cap_sb; +pickup quill; +%% stem tops +lft x1 = pcshiftx + 3st; y1 = h; +rt x3 = w - pcshiftx - widedmin*st; y3 = h; +% bottom of bowl +x7 = x1 - 3/2st; bot y7 = 0; +x9 = 1/2[x1,x3]; bot y9 = 0; +pth1 := z7{pdir}..{right}z9; +draw pth1; +%% left stem bottom +x81 = x1; y81 = - h; +z2 = (z1--z81) intersectionpoint pth1; +draw_upcurlstem(1,2); +%% right stem +x4 = x3; y4 = 0; +x5 = x4; y5 = -1/4d; +lft x6 = x9; bot y6 = -d; +draw_updiamondstem(3,4,wided,widedmin,diawd,diang); +draw z6{pdir}..{up}z5--z4; +z3cd = 1/2[z3c,z3d]; +pth2 = z5--z3a--z3cd; +%% fill bowl bottom +x91 = x3; (z91-z9) = whatever*pdir; +draw z9--z91; + +%% decoration +z1tr = (rt x1, top y1); +x101 = x1tr + 2/3wided*st; +pickup stylus; +top y101 = h; +z103 = (x1tr,y101); +z181 = (x101,-w); +z102 = (z101--z181) intersectionpoint pth1; +draw z103--z101--z102; +x105 = x101; y105 = 1/3[y102,y101]; +x185 = 2w; (z185-z105) = whatever*pdir; +z106 = (z105--z185) intersectionpoint pth2; +z107 = (x105, y105-angdec); +x187 = x185; y187-y185 = y107-y105; +z108 = (z107--z187) intersectionpoint pth2; +draw z105--z106; draw z107--z108; +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,10,100,101,102,181); +endchar; % end "Y" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{Z} +% The letter `Z'. +% \begin{macrocode} +cmchar "TGOTH letter Z"; +beginchar("Z", 2cap_sb#+hstretch*((5)*stem_width#), + caprat*x_height#, 0); +adjust_fit(0,0); +numeric n[]; +numeric st; st := stem_width; +path pth[]; +pcshiftx := cap_sb; +pickup quill; +%% top bar ends +top y12 = h; +n1 := h - y12; +lft x1 = pcshiftx; rt x2 = w-pcshiftx-perpdec; +%%y1 = y12-n1; y2=y12+n1; +y1 = y12-n1/2; y2=y12; +x12 = 1/2[x1,x2]; +pth1 := z1{pdir}..z12{right}..z2{pdir}; +x102 = rt x2; y102 = top y2; x202 = x102+perpdec; y202=y102; +%% bottom bar ends +bot y34 = 0; +x3=x1+perpdec; rt x4= w-pcshiftx; +y3=y34-n1/2; y4=y34; +x34 = 1/2[x3,x4]; +pth2 := z3{pdir}..z34{right}..z4{pdir}; +x203 = lft x3; y203 = bot y3; x103 = x203-perpdec; y103=y203; +%% centre bar +z5 = (x1,1/2[y1,y3]); z6 = (x4,1/2[y2,y4]); z56 = 1/2[z5,z6]; +pth3 := z5{pdir}..z56{right}..z6{pdir}; +draw pth1; draw pth2; % bars +draw pth3; +%% decorations +pickup stylus; +draw z102--z103; draw z202--z203; +unfill z102--z103--z203--z202--cycle; +draw z102--z103; draw z202--z203; +ductus:=false; +penlabels(1,2,3,4,5,6,10o,10i,20o,20i,100); +endchar; % end "Z" + +% \end{macrocode} +% \end{routine} +% +% +% +% The end of this file +% \begin{macrocode} +% +% \end{macrocode} +% +% +% +% \subsection{The punctuation file} +% +% The main punctuation marks are defined in this file. +% +% \begin{macrocode} +%<*punct> +% TGOTHPUNCT.MF This file contains punctuation marks + +% \end{macrocode} +% +% +% \begin{routine}{!} +% The `!' character, which had not been invented at this time. +% \begin{macrocode} + +cmchar "Exclamation mark"; +beginchar("!", 2sb#+hstretch*(thick#+trijut#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +x1=w/2; top y1 = h; +z3=(x1, 1/2dot_size); +z2=(x1, y3+3/2dot_size); +draw z1--z2; +draw_pdot(3,dot_size); +penlabels(1,2,3); + +endchar; % end of "!" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{?} +% The `?' character, which had not been invented at this time. +% \begin{macrocode} + +cmchar "Question mark"; +beginchar("?", 2sb#+hstretch*((3+wided+widedmin)*stem_width#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +path pth[]; +pickup quill; +n1 := w-2pcshiftx; % actual character width +n2 := 1/3h; % height of top bowl +n3 := n2; % height of bottom bowl +z5=(1/2w,1/2dot_size); +x45 = x5; y45=y5+3/2dot_size; +lft x1 = pcshiftx; y1 = 3/4h; +x2 = 1/2w; top y2 = h; +rt x3 = w-pcshiftx; y3 = 11/16h; + +x4 = x45; +(z3-z4) = whatever*pdir; + +%%ductus:= true; +if ductus: + pickup stylus; +fi +%%draw z1..z2{right}..z3{down}..z4{down}; +draw z1--z2--z3--z4--z45; +draw_pdot(5, dot_size); +penlabels(1,2,3,4,45,5); +endchar; % end of "?" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{,} +% The `,' character. +% \begin{macrocode} + +cmchar "Comma"; +beginchar(",",2sb#+hstretch*(comma_width#+dot_size#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb; +x1=w-pcshiftx-(0.5hstretch*dot_size); y1=1/2dot_size; +draw_pcomma(1,dot_size,comma_width); +penlabels(1); +endchar; % end of "," + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{.} +% The `.' character. +% \begin{macrocode} + +cmchar "Period"; +beginchar(".",2sb#+hstretch*(dot_size#),x_height#,0); +pcshiftx:=sb; +z1=(w/2, 1/2dot_size); +draw_pdot(1,dot_size); +penlabels(1); +endchar; % end of "." + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{:} +% The `:' character. +% \begin{macrocode} + +cmchar "Colon"; +beginchar(":",2sb#+hstretch*(dot_size#),x_height#,0); +pcshiftx:=sb; +x1=x2=w/2; y1=3/4h; y2=1/4h; +draw_pdot(1,dot_size); +draw_pdot(2,dot_size); +penlabels(1,2); +endchar; % end ":" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{;} +% The `;' character. +% \begin{macrocode} + +cmchar "Semicolon"; +beginchar(";",2sb#+hstretch*(comma_width#+dot_size#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb; +x1=x2=w-pcshiftx-(0.5hstretch*dot_size); y1=3/4h; y2=1/2dot_size; +draw_pdot(1,dot_size); +draw_pcomma(2,dot_size,comma_width); +penlabels(1,2); +endchar; % end of ";" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{'} +% The `'' character. +% \begin{macrocode} + +cmchar "Apostrophe"; +beginchar("'",2sb#+hstretch*(comma_width#+dot_size#),4/3x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb; +x1=w-pcshiftx-(0.5hstretch*dot_size); y1=h; +draw_pcomma(1,dot_size,comma_width); +penlabels(1); +endchar; % end of "'" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{`} +% The ``' character. +% \begin{macrocode} + +cmchar "Reverse apostrophe"; +beginchar("`",2sb#+hstretch*(comma_width#+dot_size#),4/3x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb; +x1=pcshiftx+(0.5hstretch*dot_size); y1=h; +draw_plq(1,dot_size,comma_width); +penlabels(1); +endchar; % end of "`" + +% \end{macrocode} +% \end{routine} +% +% The end of this file. +% \begin{macrocode} +% +% \end{macrocode} +% +% +% \subsection{The ligatures and dashes file} +% +% The ligatured letters, punctuation marks and dashes are defined in this file. +% \begin{macrocode} +%<*lig> +% TGOTHLIG.MF Uncial ligatured letters, punctation and dashes + +% \end{macrocode} +% First the ligtables. +% \begin{macrocode} + +ligtable "`": "`"=:oct"134"; +ligtable "'": "'"=:oct"042"; %% , "?" kern 2u#, "!" kern 2u#; + +ligtable "-": "-"=:oct"173"; +ligtable oct"173": "-"=:oct"174"; + +%%%%ligtable "c": "t"=:oct"014"; +ligtable "s": "t"=:oct"015"; + +% \end{macrocode} +% +% +% +% \begin{routine}{st} +% The `st' ligature. +% \begin{macrocode} + +cmchar "TGOTH st ligature"; +beginchar(oct"015", 2sb#+hstretch*((1 + narrowd + 3)*stem_width#), + asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +numeric st; st := stem_width; +n1 := h/ascratio; % x-height +pickup quill; +%% the S (long) +lft x1 = pcshiftx + narrowd*st; +x2 = x1; y2 = 0; y1 = h - (top y2 - bot y2); +z12 = 1/2[z1,z2]; +draw_updiamondstem(1,12,narrowd, 1/4narrowdmin, diawd, diang); +draw_downdiamondstem(12,2,narrowd, narrowdmin, diawd, diang); +%% the T +%% bar +lft x23 = rt x1 + pcshiftx; top y23 = n1; +rt x24 = w-pcshiftx; y24=y23; +draw z23--z24; +%% stem +lft x21 = rt x23; top y21 = h; +x22 = x21; y22 = 0; +draw_downdiamondstem(21,22,narrowd,narrowdmin,diawd,diang); +%% the ligature +x11=x1; top y11=h; +draw z12--z11--z21; +ductus:=false; +penlabels(1,2,3,4,5,11,21,22,23,24,100); +%% end "t" +endchar; %% end st ligature + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{''} +% The `''' ligature. +% \begin{macrocode} + +cmchar "Closing quotes"; +beginchar(oct"042",2sb#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb; +x1=w-pcshiftx-(0.5hstretch*dot_size); y1=y2=h; +x2=x1-(2hstretch*dot_size); +draw_pcomma(1,dot_size,comma_width); % right +draw_pcomma(2,dot_size,comma_width); % left +penlabels(1,2); +endchar; % end of "''" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{``} +% The ```' ligature. +% \begin{macrocode} + +cmchar "Opening quotes"; +beginchar(oct"134",2sb#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb; +x1=pcshiftx+(0.5hstretch*dot_size); y1=y2=h; +x2=x1+(2hstretch*dot_size); +draw_plq(1,dot_size,comma_width); % left +draw_plq(2,dot_size,comma_width); % right +penlabels(1,2); +endchar; % end of "``" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{-} +% The `-' (hyphen) character. +% \begin{macrocode} + +cmchar "Hyphen"; +beginchar("-",sb#+hstretch*((2)*stem_width#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb/2; +pickup threequarterquill; +lft x21=pcshiftx; rt x22=w-pcshiftx; y21=y22=1/2h; +draw z21--z22; +%%draw_roundserif(21,22,srad); draw_flatserif(22,21,srad); +penlabels(1,2); +endchar; % end of "-" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{--} +% The `--' (en-dash) ligature. +% \begin{macrocode} + +cmchar "En dash"; +beginchar(oct"173",sb#+hstretch*((3)*stem_width#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb/2; +pickup threequarterquill; +lft x21=pcshiftx; rt x22=w-pcshiftx; y21=y22=1/2h; +draw z21--z22; +%%draw_roundserif(21,22,srad); draw_flatserif(22,21,srad); +penlabels(1,2); +endchar; % end of "--" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{---} +% The `---' (em dash) ligature. The em dash is twice the width of the en dash. +% \begin{macrocode} + +cmchar "Em dash"; +beginchar(oct"174",sb#+hstretch*((6)*stem_width#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=sb/2; +pickup threequarterquill; +lft x21=pcshiftx; rt x22=w-pcshiftx; y21=y22=1/2h; +draw z21--z22; +%%draw_roundserif(21,22,srad); draw_flatserif(22,21,srad); +penlabels(1,2); +endchar; % end of "---" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{&} +% The ampersand (which is really an `et' ligature). +% In this case, a `t' with one thin bar. +% \begin{macrocode} + +cmchar "TGOTH ampersand"; +beginchar("&", 2sb#+hstretch*((7/2)*stem_width#), asc_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +numeric st; st := stem_width; +pickup quill; +%% bar +lft x3 = pcshiftx; top y1 = h; +top y3 = bot y1; +rt x4 = w-pcshiftx; y4=y3; +draw z3--z4; +%% stem +lft x1 = rt x3; +x2 = x1; y2 = 0; +draw_downdiamondstem(1,2,wided,widedmin,diawd,diang); +%% E bars +n1 = 1/2[y3,y2a] + 1/2angdec; +pickup halfquill; +lft x11 = pcshiftx; rt x12 = w-pcshiftx; +%y11=y12=n1; +y11 = y12 = 1/2h; +x13 = x11; x14=x12; y13 = y14 = n1-angdec; +draw z11--z12; +%%draw z13--z14; +ductus:=false; +penlabels(1,2,3,4,5,6,11,12,13,14,100); +endchar; % end "&" + +% \end{macrocode} +% \end{routine} +% +% +% The end of this file. +% \begin{macrocode} +% +% \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> +% TGOTHDIG.MF Program file for Early Gothic digits +% + +% \end{macrocode} +% +% +% +% \begin{routine}{1} +% The digit `1'. +% \begin{macrocode} +cmchar "TGOTH digit 1"; +beginchar("1", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +pickup quill; +x1 = x2 = 1/2w; y1 = h; y2 = 0; +z12 = 1/2[z1,z2]; +draw_updiamondstem(1,12,1/2,1/2,diawd,diang); +draw_downdiamondstem(12,2,1/2,1/2,diawd,diang); +penlabels(1,2,100); +endchar; % end "1" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{2} +% The digit `2'. +% \begin{macrocode} +cmchar "TGOTH digit 2"; +beginchar("2", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +numeric st; st := stem_width; +numeric n[]; +n1 := 1/2st; +pickup quill; +% stem +lft x1=pcshiftx+n1; top y1=h-2n1; +rt x3=w-pcshiftx-n1; y3=3/4h; +x2=1/2[x1,x3]; top y2= h; +% foot +x5= lft x1; bot y5=0; +x6= rt x3; y6=y5; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_wave(5,6,thin); % foot +draw z1--z2--z3--z5wl; % curve +ductus:=false; +penlabels(1,2,3,4,5,6,100); +endchar; % end "2" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{3} +% The digit `3'. +% \begin{macrocode} +cmchar "TGOTH digit 3"; +beginchar("3", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +numeric n[]; +numeric st; st := stem_width; +n1 := st; +pcshiftx := u; +pickup quill; +%% top +lft x1 = pcshiftx + n1; rt x3 = w - pcshiftx - n1; +x2 = 1/2[x1,x3]; x4 = 1/2[x1,x2]; +top y2 = h; y3 = 12/16h; +(z2-z1) = whatever*pdir; +(z3-z4) = whatever*pdir; +%% bottom +x5 = 12/16[x4, rt x4]; x6 = x3; x7 = x2; +x18 = x1-n1; x17 = x7; +bot y7 = thin; +y5 = 12/16[y4, top y4]; +(z5-z6) = whatever*(z2-z3); +bot y18 = 0; bot y17 = 0; + +draw z1--z2--z3--z4; % top +draw_wave(18,17,thin); +draw z5--z6--z18wr; % bottom +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,10,17,18,100); +endchar; % end "3" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{4} +% The digit `4'. +% \begin{macrocode} +cmchar "TGOTH digit 4"; +beginchar("4", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +numeric st; st := stem_width; +numeric n[]; +pcshiftx := u; +pickup quill; +% the stem +x1=x2=w-pcshiftx-(wided+widedmin)*st; +y1=h; y2=0; +% the crossbar +lft x3=pcshiftx; y3=7/16h; +rt x4=w-pcshiftx; y4=y3; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_downdiamondstem(1,2,wided,widedmin,diawd,diang); % stem +draw 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 "TGOTH digit 5"; +beginchar("5", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +numeric n[]; +numeric st; st := stem_width; +n1 := st; +pickup quill; +% for the top +rt x1=w-pcshiftx; top y1=h; +lft x2=pcshiftx+n1; y2=y1; +% the S curve +x3=x2; y3=0.5h; +x4=0.5[x1,x3]; y4=0.5[y3,y5]; +rt x5=w-pcshiftx; y5=1/2[thick,y3]; +x6=w/2; bot y6=0; +%%x16 = 12/16[x3,x5]; +x16 = lft x5; +bot y16 = 0; +lft x17=pcshiftx; bot y17=0; +z167 = 1/2[z16,z17]; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_wave(2,1,thin); % top squiggle +draw z2wl--z3; % vertical +%%draw_wave(17,16,thin); % foot +draw z17{pdir}..{pdir}z16; % foot +draw z3{pdir}..z5{down}..z16; % curve +ductus:=false; +penlabels(1,2,3,4,5,6,7,100); +endchar; % end "5" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{6} +% The digit `6'. +% \begin{macrocode} +cmchar "TGOTH digit 6"; +beginchar("6", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +numeric st; st := stem_width; +n1 := 24/16st; +pickup quill; +%% bottom left +x1 = x4 = w/2; top y1 = h - thick; bot y4 = 0; +x2 = x3 = x1 + n1; x5 = x6 = x1 - n1; +y2 = y6 = 3/4[y4,y1]; +y3 = y5 = 1/4[y4,y1]; +%% bowl +draw z1--z2--z3--z4--z5--z6--cycle; +%% head +x11 = x5; top y11 = h; +x12 = x2; y12 = y11; +draw_wave(11,12,thin); +x16 = x11; y16 = y11-thin; +draw z6--z16; +penlabels(1,2,3,4,5,6,12,100); +endchar; % end "6" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{7} +% The digit `7'. +% \begin{macrocode} +cmchar "TGOTH digit 7"; +beginchar("7", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% top bar +lft x1=pcshiftx; +rt x2=w-pcshiftx; +top y1=top y2=h; +% bowed leg +x4=w/2; bot y4=0; +x3=0.5[x2,x4]-3thin; y3=0.5[y2,y4]; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_wave(1,2,thin); % top bar +draw z1wr..z3..z4; +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 "TGOTH digit 8"; +beginchar("8", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +numeric alpha; alpha:=1; +pickup quill; +lft x1= pcshiftx; rt x3=w-pcshiftx; top y1 = y3 = 3/4h; +rt x2 = lft x4 = w/2; top y2=h; bot y4=0; +x5=x2; y5=h/2+2o; +lft x11=pcshiftx; rt x13=w-pcshiftx; y11 = bot y13 = 1/4h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +%%draw z1..z2..z3..z5..z11..z4..z13..z5..cycle; +draw z1--z2--z3--z11--z4--z13--cycle; +ductus:=false; +penlabels(1,2,3,4,5,11,13,100); +endchar; % end "8" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{9} +% The digit `9'. +% \begin{macrocode} +cmchar "TGOTH digit 9"; +beginchar("9", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +numeric st; st := stem_width; +n1 := 24/16st; +pickup quill; +%% bottom left +x1 = x4 = w/2; top y1 = h; bot y4 = thick; +x2 = x3 = x1 + n1; x5 = x6 = x1 - n1; +y2 = y6 = 3/4[y4,y1]; +y3 = y5 = 1/4[y4,y1]; +%% bowl +draw z1--z2--z3--z4--z5--z6--cycle; +%% foot +x11 = x5; bot y11 = 0; +x12 = x2; y12 = y11; +draw_wave(11,12,thin); +x13 = x12; y13 = y12+thin; +draw z3--z13; +penlabels(1,2,3,4,5,6,12,100); +endchar; % end "9" + + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{0} +% The digit `0'. +% \begin{macrocode} +cmchar "TGOTH digit 0"; +beginchar("0", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := sb; +numeric n[]; +numeric st; st := stem_width; +n1 := 24/16st; +pickup quill; +%% bottom left +x1 = x4 = w/2; top y1 = h; bot y4 = 0; +x2 = x3 = x1 + n1; x5 = x6 = x1 - n1; +y2 = y6 = 3/4h; +y3 = y5 = 1/4h; + +draw z1--z2--z3--z4--z5--z6--cycle; + +penlabels(1,2,3,4,5,6,12,100); +endchar; % end "0" + +% \end{macrocode} +% \end{routine} +% +% +% The end of this file. +% \begin{macrocode} +% +% \end{macrocode} +% +% +% \section{The font definition files} \label{sec:fd} +% +% The font comes in normal and bold weights only. +% +% \begin{macrocode} +%<*fdot1> +\DeclareFontFamily{OT1}{tgoth}{} + \DeclareFontShape{OT1}{tgoth}{m}{n}{ <-8.5> tgoth7 <8.5-15> tgoth10 <15-> tgoth17 }{} + \DeclareFontShape{OT1}{tgoth}{m}{sl}{ <-> sub * tgoth/m/n }{} + \DeclareFontShape{OT1}{tgoth}{m}{it}{ <-> sub * tgoth/m/n }{} + \DeclareFontShape{OT1}{tgoth}{m}{sc}{ <-> sub * tgoth/m/n }{} + \DeclareFontShape{OT1}{tgoth}{m}{u}{ <-> sub * tgoth/m/n }{} + \DeclareFontShape{OT1}{tgoth}{bx}{n}{ <-15> tgothb10 <15-> tgothb17 }{} + \DeclareFontShape{OT1}{tgoth}{bx}{it}{ <-> sub * tgoth/bx/n }{} + \DeclareFontShape{OT1}{tgoth}{bx}{sl}{ <-> sub * tgoth/bx/n }{} + \DeclareFontShape{OT1}{tgoth}{b}{n}{ <-> sub * tgoth/bx/n }{} +% +% \end{macrocode} +% +% +% \begin{macrocode} +%<*fdt1> +\DeclareFontFamily{T1}{tgoth}{} + \DeclareFontShape{T1}{tgoth}{m}{n}{ <-8.5> tgoth7 <8.5-15> tgoth10 <15-> tgoth17 }{} + \DeclareFontShape{T1}{tgoth}{m}{sl}{ <-> sub * tgoth/m/n }{} + \DeclareFontShape{T1}{tgoth}{m}{it}{ <-> sub * tgoth/m/n }{} + \DeclareFontShape{T1}{tgoth}{m}{sc}{ <-> sub * tgoth/m/n }{} + \DeclareFontShape{T1}{tgoth}{m}{u}{ <-> sub * tgoth/m/n }{} + \DeclareFontShape{T1}{tgoth}{bx}{n}{ <-15> tgothb10 <15-> tgothb17 }{} + \DeclareFontShape{T1}{tgoth}{bx}{it}{ <-> sub * tgoth/bx/n }{} + \DeclareFontShape{T1}{tgoth}{bx}{sl}{ <-> sub * tgoth/bx/n }{} + \DeclareFontShape{T1}{tgoth}{b}{n}{ <-> sub * tgoth/bx/n }{} +% +% \end{macrocode} +% +% \section{The package code} \label{sec:code} +% +% \subsection{The \Lpack{tgothic} package} +% +% The \Lpack{tgothic} 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{tgothic}[2002/12/30 v1.0 package for Gothic Textura 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}{\tgothfamily} +% Selects the \thisfont{} font family in the OT1 or T1 encoding. +% \begin{macrocode} +\ifx\Tienc\encodingdefault + \newcommand{\tgothfamily}{\usefont{T1}{tgoth}{m}{n}} +\else + \newcommand{\tgothfamily}{\usefont{OT1}{tgoth}{m}{n}} +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\texttgoth} +% Text command for the \thisfont{} font family. +% \begin{macrocode} +\DeclareTextFontCommand{\texttgoth}{\tgothfamily} +% \end{macrocode} +% \end{macro} +% +% The end of this package. +% \begin{macrocode} +% +% \end{macrocode} +% +% \subsection{The \Lpack{alltgoth} package} +% +% The \Lpack{alltgoth} 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{tgothic} package. +% \begin{macrocode} +%<*uscall> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{alltgoth}[2002/12/30 v1.0 package for all Gothic Textura fonts] +\RequirePackage{tgothic} +% \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}{tgoth} +\renewcommand{\sfdefault}{tgoth} +\renewcommand{\ttdefault}{tgoth} +% \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}{\tgoth@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{\tgoth@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}{\tgoth@new@setfontsize} +% This is a macro that replaces the |\@setfontsize| macro which is called by +% the font size changing commands. +% \begin{macrocode} +\newcommand{\tgoth@new@setfontsize}[3]{% + \edef\@tempa{\def\noexpand\@tempb####1<#2}% + \@tempa>##2<##3\@nil{\def\tgoth@baselineskip@value{##2}}% + \edef\@tempa{\noexpand\@tempb\tgoth@baselineskip@table<#2}% + \@tempa><\@nil + \ifx\tgoth@baselineskip@value\@empty + \def\tgoth@baselineskip@value{#3}% + \fi + \tgoth@old@setfontsize{#1}{#2}\tgoth@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\tgoth@old@setfontsize=\@setfontsize + \let\@setfontsize=\tgoth@new@setfontsize} +\AtBeginDocument{\normalsize} +% \end{macrocode} +% +% +% The end of this package. +% \begin{macrocode} +% +% \end{macrocode} +% +% +% +% +% +% \Finale +% \PrintIndex +% +\endinput + +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} + + diff --git a/Master/texmf-dist/source/fonts/bookhands/tgothic.ins b/Master/texmf-dist/source/fonts/bookhands/tgothic.ins new file mode 100644 index 00000000000..e78ed2aba99 --- /dev/null +++ b/Master/texmf-dist/source/fonts/bookhands/tgothic.ins @@ -0,0 +1,101 @@ +%% +%% tgothic.ins +%% Copyright 1999 Peter R. Wilson +%% +%% This program is provided under the terms of the +%% LaTeX Project Public License distributed from CTAN +%% archives in directory macros/latex/base/lppl.txt. +%% +%% Author: Peter Wilson (CUA) +%% now at: peter.r.wilson@boeing.com +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\batchfile{tgothic.ins} +\input docstrip.tex +\preamble + + Copyright 1999 Peter R. Wilson + + This program is provided under the terms of the + LaTeX Project Public License distributed from CTAN + archives in directory macros/latex/base/lppl.txt. + +Author: Peter Wilson (CUA) + now at: peter.r.wilson@boeing.com + +\endpreamble + +\keepsilent + +%%% \Msg{*** Generating the driver file ***} +%%% \generateFile{tgothic.drv}{t}{\from{tgothic.dtx}{driver}} + +\Msg{*** Generating the Metafont files ***} + +\usepostamble\empty +\generateFile{tgoth7.mf}{t}{\from{tgothic.dtx}{base7}} +\generateFile{tgoth10.mf}{t}{\from{tgothic.dtx}{base10}} +\generateFile{tgoth17.mf}{t}{\from{tgothic.dtx}{base17}} +\generateFile{tgothb7.mf}{t}{\from{tgothic.dtx}{base7b}} +\generateFile{tgothb10.mf}{t}{\from{tgothic.dtx}{base10b}} +\generateFile{tgothb17.mf}{t}{\from{tgothic.dtx}{base17b}} +\generateFile{tgothl.mf}{t}{\from{tgothic.dtx}{min}} +\generateFile{tgothu.mf}{t}{\from{tgothic.dtx}{maj}} +\generateFile{tgothtitle.mf}{t}{\from{tgothic.dtx}{mfd}} +\generateFile{tgothpunct.mf}{t}{\from{tgothic.dtx}{punct}} +\generateFile{tgothlig.mf}{t}{\from{tgothic.dtx}{lig}} +\generateFile{tgothdig.mf}{t}{\from{tgothic.dtx}{dig}} + +\Msg{*** Generating the Font Definition files ***} +\usepostamble\defaultpostamble + +\generateFile{ot1tgoth.fd}{t}{\from{tgothic.dtx}{fdot1}} +\generateFile{t1tgoth.fd}{t}{\from{tgothic.dtx}{fdt1}} + +\Msg{*** Generating the LaTeX2e package files ***} + +\generateFile{tgothic.sty}{t}{\from{tgothic.dtx}{usc}} +\generateFile{alltgoth.sty}{t}{\from{tgothic.dtx}{uscall}} + +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into directories searched by TeX:} +\Msg{*} +\Msg{* Move these into the font source area:} +\Msg{* \space\space tgoth7.mf} +\Msg{* \space\space tgoth10.mf} +\Msg{* \space\space tgoth17.mf} +\Msg{* \space\space tgothb7.mf} +\Msg{* \space\space tgothb10.mf} +\Msg{* \space\space tgothb17.mf} +\Msg{* \space\space tgothl.mf} +\Msg{* \space\space tgothu.mf} +\Msg{* \space\space tgothtitle.mf} +\Msg{* \space\space tgothpunct.mf} +\Msg{* \space\space tgothlig.mf} +\Msg{* \space\space tgothdig.mf} +\Msg{*} +\Msg{* Move these into the LaTeX macro area:} +\Msg{* \space\space ot1tgoth.fd} +\Msg{* \space\space t1tgoth.fd} +\Msg{* \space\space tgothic.sty} +\Msg{* \space\space alltgoth.sty} +\Msg{*} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* `.dtx' through LaTeX.} +\Msg{* Process any name.idx file by:} +\Msg{* \space\space\space\space makeindex -s gind.ist name} +\Msg{* Process any name.glo file by:} +\Msg{* \space\space\space\space makeindex -s gglo.ist -o name.gls name.glo} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} + +\endinput diff --git a/Master/texmf-dist/source/fonts/bookhands/uncial.dtx b/Master/texmf-dist/source/fonts/bookhands/uncial.dtx new file mode 100644 index 00000000000..96041df453a --- /dev/null +++ b/Master/texmf-dist/source/fonts/bookhands/uncial.dtx @@ -0,0 +1,3761 @@ +% \iffalse meta-comment +% +% uncial.dtx +% Copyright 1999 Peter R. Wilson +% +% This program is provided under the terms of the +% LaTeX Project Public License distributed from CTAN +% archives in directory macros/latex/base/lppl.txt. +% +% Author: Peter Wilson (CUA) (now at: peter.r.wilson@boeing.com) +% +% If you do not have the docmfp package (available from CTAN in +% tex-archive/macros/latex/contrib/supported), comment out the +% \usepackage{docmfp} line below and uncomment the line following it. +% +%<*driver> +\documentclass{ltxdoc} +\usepackage{docmfp} +%%%%%% \providecommand{\DescribeVariable}[1]{} \newenvironment{routine}[1]{}{} +\EnableCrossrefs +\CodelineIndex +\setcounter{StandardModuleDepth}{1} +\begin{document} + \DocInput{uncial.dtx} +\end{document} +% +% +% \fi +% +% \CheckSum{131} +% +% \DoNotIndex{\',\.,\@M,\@@input,\@addtoreset,\@arabic,\@badmath} +% \DoNotIndex{\@centercr,\@cite} +% \DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue} +% \DoNotIndex{\@input,\@ixpt,\@m} +% \DoNotIndex{\@minus,\@mkboth,\@ne,\@nil,\@nomath,\@plus,\@set@topoint} +% \DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb} +% \DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt} +% \DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt} +% \DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace} +% \DoNotIndex{\advance,\Alph,\alph} +% \DoNotIndex{\arabic,\ast,\begin,\begingroup,\bfseries,\bgroup,\box} +% \DoNotIndex{\bullet} +% \DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption} +% \DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass} +% \DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\endtrivlist} +% \DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup} +% \DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter} +% \DoNotIndex{\fbox} +% \DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef} +% \DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule} +% \DoNotIndex{\hsize,\hskip,\hspace,\hss,\if@tempswa,\ifcase,\or,\fi,\fi} +% \DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\fi,\fi,\fi,\fi,\fi} +% \DoNotIndex{\input} +% \DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark} +% \DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright} +% \DoNotIndex{\month,\newcommand,\newcounter,\newenvironment} +% \DoNotIndex{\NeedsTeXFormat,\newdimen} +% \DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number} +% \DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\p@} +% \DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip} +% \DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions} +% \DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright} +% \DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font} +% \DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily,\roman} +% \DoNotIndex{\roman,\secdef,\selectfont,\setbox,\setcounter,\setlength} +% \DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space} +% \DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase} +% \DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt} +% \DoNotIndex{\viipt,\vipt,\vskip,\vspace} +% \DoNotIndex{\wd,\xiipt,\year,\z@} +% +% \changes{v1.0}{1999/04/02}{First public release} +% \changes{v1.0a}{1999/04/29}{Corrected the bookhand table} +% \changes{v1.1}{1999/05/15}{Added arabic digits and new package} +% \changes{v1.1a}{2001/01/02}{Fixed missing * in .fd files} +% +% ^^A \def\fileversion{v1.1} +% ^^A \def\filedate{1999/05/15} +% \def\fileversion{v1.1a} +% \def\filedate{2001/01/02} +% \newcommand*{\Lpack}[1]{\textsf {#1}} ^^A typeset a package +% \newcommand*{\Lopt}[1]{\textsf {#1}} ^^A typeset an option +% \newcommand*{\file}[1]{\texttt {#1}} ^^A typeset a file +% \newcommand*{\Lcount}[1]{\textsl {\small#1}} ^^A typeset a counter +% \newcommand*{\pstyle}[1]{\textsl {#1}} ^^A typeset a pagestyle +% \newcommand*{\Lenv}[1]{\texttt {#1}} ^^A typeset an environment +% \newcommand*{\AD}{\textsc{ad}} +% +% \title{The \Lpack{uncial} fonts\thanks{This +% file has version number \fileversion, last revised +% \filedate.}} +% +% \author{% +% Peter Wilson\\ +% Catholic University of America \\ +% Now at \texttt{peter.r.wilson@boeing.com} +% } +% \date{\filedate} +% \maketitle +% \begin{abstract} +% The \Lpack{uncial} and \Lpack{alluncl} packages provide a set of +% Metafont Uncial book-hands +% as used +% for manuscripts in the 3rd to the 6th century. This is one in a series +% of manuscript fonts. +% \end{abstract} +% \tableofcontents +% \listoftables +% +% \StopEventually{} +% +% +% +% \section{Introduction} +% +% The \Lpack{uncial} and \Lpack{alluncl} packages provide a Metafont~\cite{METAFONT} version +% of the Uncial manuscript book-hand that was in use between about the +% third and sixth centuries~\AD. It is part of a project to provide fonts +% covering the major manuscript hands between the first century~\AD{} and +% the invention of printing. The principal resources used in this project +% are listed in the Bibliography. +% +% This manual is typeset according to the conventions of the +% \LaTeX{} \textsc{docstrip} utility which enables the automatic +% extraction of the \LaTeX{} macro source files~\cite{GOOSSENS94}. +% The \Lpack{docmfp} package is used for documenting the Metafont portions +% of the distribution~\cite{DOCMFP}. +% +% Section~\ref{sec:usc} describes the usage of the package. +% Commented code for the fonts is in Sections~\ref{sec:mf} and~\ref{sec:fd} +% and source code for the package is in Section~\ref{sec:code}. +% +% \subsection{Manuscript book-hands} +% +% Before the invention of printing all books were written by hand. The book-hands +% used by the scribes and copyists for the manuscripts changed as time +% went on. Table~\ref{tab:1} lists some of the common book-hands which were used +% between the 1st and 15th centuries. The later book-hands formed the basis of the +% fonts used by the early printers, which in turn form the basis of the printing +% fonts in use today. +% +% The manuscript book-hands were written with a broad nibbed reed or quill +% pen. Among the distinguishing characteristics of a hand, apart from the +% actual shape of the letters, are the angle of the pen (which controls the +% variation between thick and thin strokes) and the height of a letter compared +% to the width of the nib. The lower the ratio of the letter height to nib +% width, the more condensed is the script. The scripts also varied in their +% typical height. +% +% Table~\ref{tab:1} gives an `average' x-height for each +% script, which I obtained by measuring a sample of photographs of +% manuscripts written in the various hands. About a dozen examples +% of each book-hand were measured. This figure should not be taken too +% seriously. +% +% There was not a sharp division between the use of one hand and another. +% Many manuscripts exhibit a variety of hands in the same document. For example, +% the scribe writing in an Uncial hand may have used Roman Rustic letters +% for capitals. Usually the same pen was used for the two different scripts. +% +% Generally speaking, as a hand got older it became more embelished, and +% therefore took longer to write. As this happened a new hand would appear that +% was faster, and which would eventually make the earlier one obsolete. +% +% Many of the book-hands were single-cased; that is, they did not have an +% upper- and lower-case as we do nowadays in Western scripts. On the other +% hand, a script might be majuscule or minuscule. A \textit{majuscule} script +% is one, like our upper-case, where the letters are drawn between two lines +% and are of a uniform height with no ascenders or descenders. +% A \textit{minuscule} script, like our lower-case, is drawn between four lines +% and has ascenders and descenders. +% +% \begin{table} +% \centering +% \caption{The main manuscript book-hands} \label{tab:1} +% \begin{tabular}{lccccc} \hline +% Name & Century & x-height & Height & Pen & Normalised \\ +% & & (mm) & (nib widths) & angle & height \\ \hline +% Roman Rustic & 1--6 & 5.7 & 4--6 & 45 & 1.90 \\ +% Uncial & 3--6 & 4.1 & 4--5 & 30 & 1.37 \\ +% Half Uncial & 3--9 & 3.2 & 3--6 & 20--30 & 1.07 \\ +% Artificial Uncial & 6--10 & 4.2 & 3--6 & 10 & 1.40 \\ +% Insular majuscule & 6--9 & 4.2 & 5 & 0--20 & 1.40 \\ +% Insular minuscule & 6 onward & 4.1 & 5--6 & 45--70 & 1.37 \\ +% Carolingian minuscule & 8--12 & 3.0 & 3--5 & 45 & 1.00 \\ +% Early Gothic & 11--12 & 3.8 & 4--6 & 20--45 & 1.27 \\ +% Gothic Textura & 13--15 & 3.9 & 3--5 & 30--45 & 1.30 \\ +% Gothic Prescius & 13 onward & 3.3 & 4--5 & 45 & 1.10 \\ +% Rotunda & 13--15 & 3.2 & 4--6 & 30 & 1.07 \\ +% Humanist minuscule & 14 onward & 3.0 & 4--5 & 30--40 & 1.00 \\ \hline +% \end{tabular} +% \end{table} +% +% During the period under consideration arabic numerals were effectively +% not used. At the beginning they were unknown and even though some knew +% of them towards the end, the glyphs used for them are not recognisable --- +% to me they look somewhat like cryllic letters --- and each locality +% and time had its own highly individualistic rendering. The general rule +% when using one of these book-hands is to write all numbers using +% roman numerals. +% +% 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 Uncial script} +% +% The Uncial hand, which is a minuscule script, was in use for some four +% centuries and was the sucessor to the Roman Rustic book-hand. Usually the +% lettering in a manuscript was all one size. If the scribe felt the need +% for `capital' letters then, using the same pen, would either write a larger +% Uncial letter or write a Roman Rustic letter. During the period when the +% Uncial script was used the alphabet only had 23 letters. I have included +% the missing J, U and W. +% +% Arabic numerals were unknown at this time, so all numbers were written +% using the roman numbering system. I have provided Uncial versions of +% the arabic digits. +% +% Punctuation was practically non-existant. A sentence might be ended with +% a dot at mid-height or a paragraph ended with a colon, also at mid-height. +% More typically, the text ran on continuously with no breaks (in the earliest +% uses of the script there might not be even any extra space between words). +% Towards the end of the script's lifetime, a comma was introduced which was a small +% slash; the semi-colon also made an appearance, as did the single quotation +% mark which was represented by a raised comma. +% +% +% \section{The \Lpack{uncial} and \Lpack{alluncl} packages} \label{sec:usc} +% +% The Uncial font family is called |uncl|. The font is supplied in both +% OT1 and T1 encodings. +% +% \subsection{The \Lpack{uncial} package} +% +% This is intended for the occasions when some short pieces of text have +% to be written in Uncial while the majority of the document is in another +% font. The normal baselineskips are used. +% +% \DescribeMacro{\unclfamily} +% The |\unclfamily| declaration starts typesetting with the Uncial fonts. +% Use of the Uncial font will continue until either there is another |\...family| +% declaration or the current group (e.g., environment) is closed. +% +% \DescribeMacro{\textuncl} +% The command |\textuncl{|\meta{text}|}| will typeset \meta{text} using the +% Uncial fonts. +% +% \subsection{The \Lpack{alluncl} package} +% +% +% This package is for when the entire document will be typeset with the +% Uncial font. The baselineskips are set to those appropriate to the +% book-hand. +% +% This is a minimalist package. Apart from declaring Uncial 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{alluncl} package automatically loads the \Lpack{uncial} package, +% so the uncial font commands are available if necessary. +% +% +% +% \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 Uncial font comes in three sizes and also as a normal +% and a bold font. +% \begin{macrocode} +%<*base7|base10|base17|base7b|base10b|base17b> +%%%% UNCL7.MF Computer Uncial at 7 point design size. +%%%% UNCL10.MF Computer Uncial at 10 point design size. +%%%% UNCL17.MF Computer Uncial at 17 point design size. +%%%% UNCLB7.MF Computer Uncial Bold at 7 point design size. +%%%% UNCLB10.MF Computer Uncial Bold at 10 point design size. +%%%% UNCLB17.MF Computer Uncial 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 + +%font_identifier:="UNCL"; font_size 7pt#; +%font_identifier:="UNCL"; font_size 10pt#; +%font_identifier:="UNCL"; font_size 17.28pt#; +%font_identifier:="UNCLB"; font_size 7pt#; +%font_identifier:="UNCLB"; font_size 10pt#; +%font_identifier:="UNCLB"; font_size 17.28pt#; + +% \end{macrocode} +% +% \DescribeVariable{jutstretch} +% The CMR scaling for lowercase serifs wrt 17pt size. +% \begin{macrocode} +% jutstretch:=1.19; +% jutstretch:=1.152; +% jutstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{stemstretch} +% The CMR scaling for lowercase stem widths wrt 17pt size. +% \begin{macrocode} +% stemstretch:=1.50; +% stemstretch:=1.31; +% stemstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{caprat} +% The scaling for `capitals' wrt `lowercase'. This is pretty much a guess. +% \begin{macrocode} + caprat:=1.25; % ratio of capital height to minuscule height +% \end{macrocode} +% +% \DescribeVariable{cap_jutstretch} +% The CMR scaling for uppercase serifs wrt 17pt size. +% \begin{macrocode} +% cap_jutstretch:=1.3; +% cap_jutstretch:=1.2; +% cap_jutstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{cap_stemstretch} +% The CMR scaling for uppercase stem width wrt 17pt size. +% \begin{macrocode} +% cap_stemstretch:=1.45; +% cap_stemstretch:=1.31; +% cap_stemstretch:=1.0; +% \end{macrocode} +% +% \DescribeVariable{bfudge} +% Letter width scaling for bold font wrt normal font. +% \begin{macrocode} +% bfudge:=1.0; +% bfudge:=1.15; +% \end{macrocode} +% +% \DescribeVariable{szfudge} +% Width scaling wrt 17pt letter width. +% \begin{macrocode} +% szfudge:=1.18; +% szfudge:=1.0; +% 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} +% carol_height#:=108.5/36pt#; +% carol_height#:=155/36pt#; +% carol_height#:=268/36pt#; +% \end{macrocode} +% +% \DescribeVariable{vstretch} +% The height of this font wrt the Carolingian font. +% \begin{macrocode} + vstretch:=1.37; + +% \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} +% u#:=15.5/36pt#; +% u#:=20/36pt#; +% u#:=32.5/36pt#; +% u#:=17.9/36pt#; +% u#:=23/36pt#; +% 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 +% cap_serif_fit#:=3.5/36pt#; % extra sidebar near uppercase serifs +% cap_serif_fit#:=5/36pt#; % extra sidebar near uppercase serifs +% cap_serif_fit#:=8/36pt#; % extra sidebar near uppercase serifs +% letter_fit#:=0pt#; % extra space added to all sidebars +% letter_fit#:=0pt#; % extra space added to all sidebars +% letter_fit#:=-0.1pt#; % extra space added to all sidebars + +% \end{macrocode} +% +% \DescribeVariable{cap_height} +% The height of capital letters. +% \begin{macrocode} +% cap_height#:=172.2/36pt#; % height of caps +% cap_height#:=246/36pt#; % height of caps +% cap_height#:=425/36pt#; % height of caps +% \end{macrocode} +% +% \DescribeVariable{thickfudge} +% The reciprical 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} +% thickfudge:=1/5; +% 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:=30; % pen angle +% \end{macrocode} +% +% \DescribeVariable{asc_height} +% The height of lower case ascenders. +% \begin{macrocode} + asc_height#:=2x_height#; +% \end{macrocode} +% +% \DescribeVariable{desc_depth} +% The depth of lower case descenders. +% \begin{macrocode} + desc_depth#:=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*(9/10x_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} +% rule_thickness#:=.34pt#; +% rule_thickness#:=.4pt#; +% rule_thickness#:=.6pt#; + +% \end{macrocode} +% +% \DescribeVariable{jutfudge} +% Controls the protrusion of serifs. +% \begin{macrocode} +jutfudge:= 3/4; +% \end{macrocode} +% +% \DescribeVariable{jut} +% The lowercase serif protrusion. +% \begin{macrocode} +jut#:=jutstretch*jutfudge*thick#; +% \end{macrocode} +% +% \DescribeVariable{srad} +% |srad| with |0 < srad < 1| controls the serif radius. +% \begin{macrocode} +srad:=0.5; +% \end{macrocode} +% +% \DescribeVariable{o} +% Amount of overshoot for curves (as in an `o'). Use CMR values. +% \begin{macrocode} +% o#:=5/36pt#; +% o#:=8/36pt#; +% o#:=10/36pt#; + +% \end{macrocode} +% +% \DescribeVariable{slant} +% |slant| is the amount the font slopes to the right. +% \begin{macrocode} +slant:=0; % tilt ratio $(\Delta x/\Delta y)$ + +% \end{macrocode} +% +% \DescribeVariable{monospace} +% We are generating a variable-width font. +% \begin{macrocode} +monospace:=false; % should all characters have the same width? + +% \end{macrocode} +% +% \DescribeVariable{dot_size} +% The size of (punctuation) dots. +% \begin{macrocode} +dot_size#:=5thin#; % size of dots +% \end{macrocode} +% +% \DescribeVariable{comma_width} +% The horizontal width of a comma. +% \begin{macrocode} +comma_width#:=2.5dot_size#; + +% \end{macrocode} +% +% Finally, call the driver file for the font. +% \begin{macrocode} +generate uncltitle %% switch to the driver file + +% \end{macrocode} +% +% The end of this code section. +% \begin{macrocode} +% +% \end{macrocode} +% +% +% \subsection{The driver file} +% +% The driver file sets up the font parametrs and also contains +% the macros used in the definition of the characters. +% +% \begin{macrocode} +%<*mfd> +% This is UNCLTITLE.MF for the Uncial 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}{uncial_font_setup} +% This macro contains the set up for the uncial fonts. +% \begin{macrocode} + +def uncial_font_setup= % contains special stuff for uncial fonts + define_pixels(side,half_height,carol_height,comma_width); + define_pixels(u,dot_size,letter_size,cap_height,width_adj,serif_fit, + cap_serif_fit,jut,cap_jut); + define_pixels(fig_width); + define_whole_pixels(letter_fit); + define_whole_vertical_pixels(body_height,asc_height,cap_height,x_height, + desc_depth,body_depth,fig_height); + define_corrected_pixels(o); + define_blacker_pixels(thick,thin); + let adjust_fit = normal_adjust_fit; +% \end{macrocode} +% \DescribeVariable{stylus} +% The pen for drawing the thinnest lines is |stylus|. +% \begin{macrocode} + pickup pencircle scaled thin; + stylus:=savepen; +% \end{macrocode} +% \DescribeVariable{quill} +% The normal calligraphic pen is |quill|. +% \begin{macrocode} + pickup pencircle xscaled thick yscaled thin rotated pangle; + quill:=savepen; + numeric pcshiftx#; % x value of LHS of box wrt origin of char box + define_pixels(pcshiftx); + numeric sqxside#; % x size of the square + numeric sqyside#; % y size of the square + define_pixels(sqxside,sqyside); + +enddef; % end of uncial_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 $0y$$: + 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_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|. The serif radius is controlled by |f|, with $0 +% \end{macrocode} +% +% \subsection{The code for normal letters} +% +% The following code is for the minuscule characters. +% +% \begin{macrocode} +%<*min> +% UNCLL.MF Program file for uncial minuscules +% + + +% \end{macrocode} +% +% +% \begin{routine}{a} +% The letter `a'. +% \begin{macrocode} +cmchar "Uncial letter a"; +beginchar("a", 2u#+hstretch*(x_height#+jut#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +sqyside:=h; sqxside:=hstretch*sqyside; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +lft x1=pcshiftx+sqxside/3; rt x2=lft x1+2/3sqxside; +y1=h; y2=0; +% for the bowl +z3=3/4[z2,z1]; +z5=3/16[z2,z1]; +y4=1/10[y5,y3]; +lft x4=pcshiftx; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_istem(1,2,srad); % the stem +draw z3{-pdir}..z4{down}..{pdir}z5; +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,5,100); +endchar; % end "a" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{b} +% The letter `b'. +% \begin{macrocode} +cmchar "Uncial letter b"; +beginchar("b", 2u#+hstretch*(x_height#+jut#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u+jut/2; +sqyside:=h; sqxside:=hstretch*sqyside; +y100 = h/2; x100 = pcshiftx+y100; % square center +pair uncial; uncial=(qhor,0.5qvert); +pickup quill; +lft x1=lft x2=pcshiftx; +top y1=h; y2=h/4; +x3=pcshiftx+sqxside/2; bot y3=0; +rt x4=pcshiftx+sqxside; y4=0.3h; +lft x5=x1; bot y5=h/2; +z5'=z5 + thick*uncial; +x6=x4-thick; y6=0.85h; +x7=x1; y7=0.9h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tlserif(1,2,srad); % the stem +draw z2{down}..z3{right}..z4{up}..{-uncial}z5'--z5; % bottom bowl +draw z5--z5'{uncial}..z6{up}..{-pdir}z7; % top bowl +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,5,5',6,7,8,100); +endchar; % end "b" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{c} +% The letter `c'. +% \begin{macrocode} +cmchar "Uncial letter c"; +beginchar("c", u#+hstretch*(x_height#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u/2; +sqyside:=h; sqxside:=hstretch*sqyside; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +lft x1=pcshiftx; rt x3=pcshiftx+sqxside; y1=y3=h/2; +x2=x4=w/2; top y2=h; bot y4=0; +x5=x6=x3; +y5=0.2h; +y6=0.75h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z5{-pdir}..{left}z4..z1..z2..z6; +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,5,6,100); +endchar; % end "c" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{d} +% The letter `d'. +% \begin{macrocode} +cmchar "Uncial letter d"; +beginchar("d", 2u#+hstretch*(x_height#), 5/4x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +sqyside:=4/5h; sqxside:=hstretch*sqyside; +y100 = side/2; x100 = pcshiftx+y100; % square center +pickup quill; +lft x1=pcshiftx; rt x3=pcshiftx+sqxside; y1=y3=sqyside/2; +x2=x4=w/2; top y2=sqyside; bot y4=0; +x5=x6=x3; +y5=0.2h; +y6=0.75h; +rt x0=pcshiftx+0.5sqxside; top y0=sqyside; +lft x7=pcshiftx+0.5sqxside; +bot y7=sqyside; +lft x8=pcshiftx; y8=y7+thick; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z0{-pdir}..z1{down}..z4{right}..z3{up}..z7..z8; +ductus:=false; +proofpcbb(100, y100, y100); +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 "Uncial letter e"; +beginchar("e", 2u#+hstretch*(x_height#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +sqyside:=h; sqxside:=hstretch*sqyside; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +lft x1=pcshiftx; rt x3=pcshiftx+sqxside; y1=y3=h/2; +x2=x4=w/2; top y2=h; bot y4=0; +x5=x6=x3; +y5=0.2h; +y6=0.75h; +% the bar +x7=x1; y7=y1; +%%x8=x7+side+0.5thick; y8=y7; +x8=w-pcshiftx; y8=y7; +x10=x7; y10=y7+3thin; +numeric alpha; alpha:=0.5; % dishing +x9=0.5[x8,x10]; y9=(0.5alpha)[y8,y10]; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z5{-pdir}..{left}z4..z1..z2..z6; % the bowl +pickup stylus; +filldraw z7--z8..z9..z10--cycle; % the bar +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,5,6,7,8,9,10,100); +endchar; % end "e" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{f} +% The letter `f'. +% \begin{macrocode} +cmchar "Uncial letter f"; +beginchar("f", 2u#+hstretch*(jut#+x_height#), x_height#, 2/3x_height#); +adjust_fit(0,0); +pcshiftx := u+jut; +sqyside:=h; sqxside:=hstretch*sqyside; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +lft x1=lft x2=pcshiftx; +top y1=h; bot y2=-d/2; +x3=x4=x1; y3=h-thick; y4=0; +numeric rise, fall, fjut; +rise:=thick; fall:=0; fjut:=2/3sqxside; +%%ductus:=true; +draw_jstem(1,2,srad,d/2,d/2); +draw_flick(3,rise,fall,fjut); +draw_flick(4,rise,fall,fjut); +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,100); +endchar; % end "f" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{g} +% The letter `g'. Like a `c' but with a small stem. +% \begin{macrocode} +cmchar "Uncial letter g"; +beginchar("g", u#+hstretch*(x_height#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u/2; +sqyside:=h; sqxside:=hstretch*sqyside; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +lft x1=pcshiftx; rt x3=pcshiftx+sqxside; y1=y3=h/2; +x2=x4=w/2; top y2=h; bot y4=0; +x5=x6=x3; +y5=0.2h; +y6=0.75h; +lft x7=x5-thick; bot y7=y5-3thick; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z5{-pdir}..{left}z4..z1..z2..z6; % the bowl +draw z5{down}..{-pdir}z7; % the stem +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,5,6,7,100); +endchar; % end "g" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{h} +% The letter `h'. +% \begin{macrocode} +cmchar "Uncial letter h"; +beginchar("h", 2u#+hstretch*(jut#+thick#+x_height#), asc_height#, 0); +adjust_fit(0,0); +pcshiftx := u+jut; +sqyside:=h/2; % asc_height is 2x_height !!! +sqxside:=hstretch*sqyside; +y100 = sqyside/2; x100 = pcshiftx+y100; % square center +pickup quill; +lft x1=lft x2=pcshiftx; +top y1=h; bot y2=0; +% center of circle +x99=w/2; y99=sqyside/2; +y3=y5=y99; +lft x3= pcshiftx; +%%rt x5=x99+w-pcshiftx; +x5 = x99 + (x99-x3); +x4=x6=x99; top y4=sqyside; bot y6 =0; +path pcirc; pcirc=z6..z5..z4..z3..cycle; +x1'=x2'=x1+0.5thick; y1'=h; y2'=0; +z7' = (z1'--z2') intersectionpoint (subpath(2,3) of pcirc); +x7=x1; y7=y7'; +z99'=z99 - 500ppdir; +z8' = (z99--z99') intersectionpoint subpath(0,1) of pcirc; +x8=x8'; bot y8=0; +%%ductus:=true; +if ductus: + pickup stylus; + draw z1'--z2'; draw z99--z99'; draw pcirc; +fi +draw_istem(1,2,srad); +draw z7{pdir}..z4{right}..z5{down}..{-pdir}z8; +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,1',2,2',3,4,5,6,7,7',8,8',99,99',100); +endchar; % end "h" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{i} +% The letter i. +% \begin{macrocode} +cmchar "Uncial letter i"; +beginchar("i", 2u#+hstretch*(thick#+2jut#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u+jut; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +x1=x2=w/2; +top y1=h; bot y2=0; +%%ductus:=true; +draw_istem(1,2,srad); +ductus:=false; +proofpcbb(100, y100, y100); +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 "Uncial letter j"; +beginchar("j", 2u#+hstretch*(thick#+2jut#), x_height#, desc_depth#); +adjust_fit(0,0); +pcshiftx := u+jut; +sqyside:=h; sqxside:=sqyside; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +x1=x2=w/2; +top y1=h; bot y2=0; +%%ductus:=true; +draw_jstem(1,2,srad,2/3sqxside,desc_depth); +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,100); +endchar; % end "j" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{k} +% The letter `k'. +% \begin{macrocode} +cmchar "Uncial letter k"; +beginchar("k", 2u#+hstretch*(jut#+4/3x_height#), asc_height#, 0); +adjust_fit(0,0); +pcshiftx := u+jut; +sqyside:=h/2; % asc_height = 2x_height !!! +sqxside:=hstretch*sqyside; +y100 = side/2; x100 = pcshiftx+y100; % square center +pickup quill; +lft x1=lft x2=pcshiftx; +top y1=h; bot y2=0; +% for the flick +numeric rise,fall,fjut; +x3=x1; y3=2/3side; +rise:=1/3sqyside; fall:=-rise/2; fjut:=sqxside; %% fjut:=2/3side; +% for the leg +x4=x3+0.25thick; y4=y3+0.5thick; +x5=x3+side; y5=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_istem(1,2,srad); +draw_flick(3,rise,fall,fjut); +draw_tstem(4,5,srad); +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,5,100); +endchar; % end "k" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{l} +% The letter `l'. Like a high `i' but with a bottom bowl like the lower half +% of the `c'. +% \begin{macrocode} +cmchar "Uncial letter l"; +beginchar("l", 2u#+hstretch*(x_height#+jut#), asc_height#, 0); +adjust_fit(0,0); +pcshiftx := u+jut; +sqyside:=h/2; sqxside:=hstretch*sqyside; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +lft x1=lft x2=pcshiftx; +top y1=h; y2=h/4; +x3=0.5[x1,x4]; bot y3=0; +rt x4=w-u; y4=0.1h; +%%ductus:=true; +draw_tlserif(1,2,srad); % the stem +draw z2{down}..z3{right}..{pdir}z4; % the bowl +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,100); +endchar; % end "l" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{m} +% The letter `m'. +% \begin{macrocode} +cmchar "Uncial letter m"; +beginchar("m", 2u#+hstretch*(9/6x_height#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +sqyside:=h; sqxside:=hstretch*sqyside; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +x1=1/3sqxside; bot y1=0; +lft x2= pcshiftx; y2=h/2; +lft x4=pcshiftx+2/3sqxside; y4=2/3h; +x3=0.5[x2,x4]; top y3=h; +x5=x4; y5=y1; +z6=z4; +numeric rise,fall,mjut; +rise=h-y6; fall=y6; mjut=w-pcshiftx-x6; +%%ductus:=true; +draw z1..z2{up}..z3{right}..{down}z4; % left half +draw_tstem(4,5,srad); % middle stem +draw_hbowl(6,rise,fall,mjut); % right half +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,5,6,100); +endchar; % end "m" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{n} +% The letter `n'. +% \begin{macrocode} +cmchar "Uncial letter n"; +beginchar("n", 2u#+hstretch*(jut#+x_height#), x_height#, 0.5x_height#); +adjust_fit(0,0); +pcshiftx := u; +sqyside:=h; sqxside:=hstretch*sqyside; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +% left stem +lft x1=pcshiftx; top y1=h; +x2=x1; y2=y1-thin; +numeric jjut, jdepth; +jjut=2jut; jdepth=y2+d-thin; +% right stem +rt x4=pcshiftx+sqxside; y4=y1; +x3=x4; bot y3=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_jcurve(1,srad,jjut,jdepth); % left stem +draw_istem(4,3,srad); % right stem +draw z1--z3; % diagonal +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,100); +endchar; % end "n" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{o} +% The letter `o'. +% \begin{macrocode} +cmchar "Uncial letter o"; +beginchar("o", u#+hstretch*(x_height#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u/2; +sqyside:=h; +sqxside:=hstretch*sqyside; +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; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,100); +endchar; % end "o" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{p} +% The letter `p'. +% \begin{macrocode} +cmchar "Uncial letter p"; +beginchar("p", 2u#+hstretch*(x_height#+jut#), x_height#, x_height#); +adjust_fit(0,0); +pcshiftx := u+jut; +sqyside:=h; sqxside:=hstretch*sqyside; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +% stem +lft x1=pcshiftx; top y1=h; +numeric jjut, jdepth; +jjut=1/3sqxside-thin; jdepth=h+d-thin; +% bowl +x2=x1; y2=3/4h; %% y2=2/3side; +rt x4=w-u; +lft x5=x1+thick; y5=0; +y4=0.4[y3,y5]; +top y3=h; x3=0.5[x2,x4]; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_jcurve(1,srad,jjut,jdepth); % stem +%%draw z2..z3{right}..z4{down}..{-pdir}z5; % bowl +draw z1a..z3{right}..z4{down}..{-pdir}z5; % bowl +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,5,100); +endchar; % end "p" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{q} +% The letter `q'. +% \begin{macrocode} +cmchar "Uncial letter q"; +beginchar("q", 2u#+hstretch*(x_height#), x_height#, x_height#); +adjust_fit(0,0); +pcshiftx := u; +sqyside:=h; sqxside:=hstretch*sqyside; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +% right stem +rt x1=w-pcshiftx; top y1=h; +numeric jjut, jdepth; +jjut=2jut; jdepth=h+d-thin; +x2=x1-jjut; y2=y1-jdepth; +% bowl +numeric rad; rad := w/2; +x0=w/2; y0=h/2; +lft x4=pcshiftx; y4=y0; +x3=x5=x0; top y3=h; bot y5=0; +x7=x0+rad; y7=y0; +path p[]; +p1=z1{down}..{-pdir}z2; % stem +p2=z4{down}..z5{right}..{up}z7; +z6'= p1 intersectionpoint p2; +rt x6=x6'; y6=y6'; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1{down}...{-pdir}z2; % right stem +draw z1--z3..z4{down}..{right}z5..z6; % bowl +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(0,1,2,3,4,5,6,6',7,100); +endchar; % end "q" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{r} +% The letter `r'. +% \begin{macrocode} +cmchar "Uncial letter r"; +beginchar("r", 2u#+hstretch*(4/3x_height#), x_height#, 2/3x_height#); +adjust_fit(0,0); +sqyside:=h; sqxside:=hstretch*sqyside; +pcshiftx := u+jut; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +% stem +lft x1=pcshiftx; top y1=h; +numeric jjut, jdepth; +jjut=1/5sqxside; jdepth=h+d-thin; +% bowl +x2=x1; y2=3/4h; +rt x4=pcshiftx+3/4sqxside; +lft x5=x1; bot y5=1/6h; +y4=0.4[y3,y5]; +top y3=h; x3=0.5[x2,x4]; +rt x7=w-u; y7=-thin; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_jcurve(1,srad,jjut,jdepth); % stem +draw z1a..z3{right}..z4{down}..{-pdir}z5; % bowl +draw z5{-ppdir}..{right}z7; % leg +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,5,6,7,100); +endchar; % end "r" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{s} +% The letter `s'. +% \begin{macrocode} +cmchar "Uncial letter s"; +beginchar("s", 2u#+hstretch*(5/6x_height#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +sqyside:=h; sqxside:=hstretch*sqyside; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +rt x1=w-pcshiftx; top y1=h-thin; +x2=w/2; top y2=h; +lft x3=pcshiftx; y3=0.75h; +x4=w/2; y4=h/2; +rt x5=w-pcshiftx; y5=0.25h; +x6=w/2; bot y6=0; +lft x7= pcshiftx; bot y7 = thin; +path p[]; +p1=z1..z2{left}..z3{down}..z4..z5{down}..z6{left}..z7; +pair vec[]; +vec1= direction 0 of p1; +vec2= direction (length p1) of p1; +z11=z1 shifted vec1; +z17=z7 shifted -vec2; +%%ductus:=true; +if ductus: + pickup stylus; +fi +%%draw_serif(1,11,srad); +%%draw_serif(7,17,srad); +%%draw z1a..z2{left}..z3{down}..z4..z5{down}..z6{left}..z7a; +draw p1; +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,5,6,7,11,17,100); +endchar; % end "s" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{t} +% The letter `t'. +% \begin{macrocode} +cmchar "Uncial letter t"; +beginchar("t", u#+hstretch*(x_height#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u/2; +sqyside:=h; sqxside:=hstretch*sqyside; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +x1=x2=w/2; +top y1=h; bot y2=0; +lft x3=pcshiftx; top y3=h-thin; +x4=x2; top y4=h; +rt x5=w-pcshiftx; top y5=h+thin; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); +draw z3{pdir}..z4{right}..{pdir}z5; +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,5,100); +endchar; % end "t" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{u} +% The letter `u'. This is a modern version as the font did not have a U. +% It uses part of the left half of the W. +% \begin{macrocode} +cmchar "Uncial letter u"; +beginchar("u", 2u#+hstretch*(x_height#+jut#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +sqyside:=h; sqxside:=hstretch*sqyside; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +% left half first +lft x6=pcshiftx+thick; +top y6=h; +lft x7=pcshiftx; y7=h/2; +x8=pcshiftx+0.5sqxside; bot y8=0; +% the stem +rt x1=w-pcshiftx-jut; y1=h; +x2=x1; bot y2=0; +% a construction point for the curved part +x5=x1+sqxside-thick; y5=y6; +path p[]; +p1=z1--z2; +p2=z6..z7{down}..z8{right}..z5; +z9= p2 intersectionpoint p1; +pair vec[]; +vec2 = direction 0 of p2; +z16=z6 shifted vec2; +%%ductus:=true; +if ductus: + pickup stylus; +fi +% draw the serifs, then the bowls +draw_serif(6,16,srad); % left half +draw z6a..z7{down}..z8{right}..z9; +draw_istem(1,2,srad); % right stem +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,5,6,7,8,9,11,16,100); +endchar; % end "u" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{v} +% The letter `v'. The right half of the `w' is used for the `v' (or vice-versa +% if you prefer). +% \begin{macrocode} +cmchar "Uncial letter v"; +beginchar("v", 2u#+hstretch*(x_height#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +sqyside:=h; sqxside:=hstretch*sqyside; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +% right side first +numeric midx; midx:= pcshiftx; +lft x1=midx+jut; top y1=h; +lft x2=midx; y2=h/2; +rt x4=midx+sqxside; y4=y2; +x3=0.5[x2,x4]; bot y3=0; +x5=x4-thick; y5=y1; +path p[]; +p1=z1..z2{down}..z3{right}..z4{up}..z5; +pair vec[]; +vec1 = direction 0 of p1; +z11=z1 shifted vec1; +%%ductus:=true; +if ductus: + pickup stylus; +fi +% draw the serifs, then the bowls +draw_serif(1,11,srad); % right half +draw z1a..z2{down}..z3{right}..z4{up}..z5; +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,5,11,100); +endchar; % end "v" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{w} +% The letter `w'. This is a modern version as the font did not have a W. +% \begin{macrocode} +cmchar "Uncial letter w"; +beginchar("w", 2u#+hstretch*(5/3x_height#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +sqyside:=h; sqxside:=hstretch*sqyside; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +% right side first +numeric midx; midx:= pcshiftx+2/3sqxside; +lft x1=midx+jut; top y1=h; +lft x2=midx; y2=h/2; +rt x4=midx+sqxside; y4=y2; +x3=0.5[x2,x4]; bot y3=0; +x5=x4-thick; y5=y1; +path p[]; +p1=z1..z2{down}..z3{right}..z4{up}..z5; +% left side +lft x6=pcshiftx+thick; +y6=y1; +lft x7=pcshiftx; y7=y2; +x8=pcshiftx+0.5sqxside; y8=y3; +p2=z6..z7{down}..z8{right}..(z5 shifted -pdir); +z9= p2 intersectionpoint p1; +pair vec[]; +vec1 = direction 0 of p1; +vec2 = direction 0 of p2; +z11=z1 shifted vec1; +z16=z6 shifted vec2; +%%ductus:=true; +if ductus: + pickup stylus; +fi +% draw the serifs, then the bowls +draw_serif(1,11,srad); % right half +draw z1a..z2{down}..z3{right}..z4{up}..z5; +draw_serif(6,16,srad); % left half +draw z6a..z7{down}..z8{right}..z9; +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,5,6,7,8,9,11,16,100); +endchar; % end "w" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{x} +% The letter `x'. +% \begin{macrocode} +cmchar "Uncial letter x"; +beginchar("x", u#+hstretch*(5/3x_height#), x_height#, 1/3x_height#); +adjust_fit(0,0); +pcshiftx := 0; +sqyside:=h; sqxside:=hstretch*sqyside; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +% thick diagonal +lft x1=pcshiftx+1/2sqxside; rt x2=w-jut; +y1=h; y2=0; +% thin diagonal +lft x3=pcshiftx; bot y3=-d; +z4=z3 shifted (jut*right); +z5=z4 shifted (jut*pdir); +rt x8=w-pcshiftx; top y8=h; +z7=z8 shifted (jut*left); +z6=z7 shifted (-jut*pdir); +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_istem(1,2,srad); % thick diagonal +draw z3---z4..z5---z6..z7---z8; % thin diagonal +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,5,6,7,8,100); +endchar; % end "x" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{y} +% The letter `y'. This has a dot on top! +% \begin{macrocode} +cmchar "Uncial letter y"; +beginchar("y", 2u#+hstretch*(4/3x_height#), x_height#, 2/3x_height#); +adjust_fit(0,0); +pcshiftx := u; +sqyside:=h; sqxside:=hstretch*sqyside; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +% left stroke +lft x1=pcshiftx; top y1=3/4h; +lft x3=w/2; bot y3=-d; +x2=0.8[x1,x3]; y2=0.5[y1,y3]; +% right stroke +rt x4=w-pcshiftx; y4=y1; +x7=pcshiftx; y7=-d; +path p[]; +p1=z1..z2..z3; +z6= (z7--z4) intersectionpoint p1; +x5=0.4[x6,x4]; y5=0.5[y6,y4]; +% the dot +x8=x6; y8=h; +if ductus: + pickup stylus; +fi +draw z1..z2..z3; % left stroke +draw z4{left}..z6; % right stroke +draw_pdot(8,dot_size); +ductus:=false; +proofpcbb(100, y100, y100); +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 "Uncial letter z"; +beginchar("z", 2u#+hstretch*(4/3x_height#), x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +sqyside:=h; sqxside:=hstretch*sqyside; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +% bottom stroke +lft x4=pcshiftx; bot y4=0; +rt x6=w-pcshiftx; y6=y4; +x5=0.5[x4,x6]; y5=y4+thin; +% top stroke +x1=x4; top y1=h; +x3=pcshiftx+sqxside; y3=y1; +x2=0.5[x1,x3]; top y2=h-thin; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1..z2..z3; % top stroke +draw z4..z5..z6; % bottom stroke +% the diagonal +pickup stylus; +draw z4--z3; +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,5,6,100); +endchar; % end "z" + +% \end{macrocode} +% \end{routine} +% +% +% The end of this file +% \begin{macrocode} +% +% \end{macrocode} +% +% +% \subsection{The code for capital letters} +% +% Uncial `capitals' were drawn with the same pen as for the minuscules, +% and the letters were merely larger versions of the minuscules. +% +% \begin{macrocode} +%<*maj> +% UNCLU.MF Program file for uncial `capitals' +% + +% \end{macrocode} +% +% +% \begin{routine}{A} +% The letter `A'. +% \begin{macrocode} +cmchar "Uncial letter A"; +beginchar("A", 2u#+caprat*hstretch*(x_height#+jut#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +sqyside:=h; sqxside:=hstretch*sqyside; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +lft x1=pcshiftx+sqxside/3; rt x2=lft x1+2/3sqxside; +y1=h; y2=0; +% for the bowl +z3=3/4[z2,z1]; +z5=3/16[z2,z1]; +y4=1/10[y5,y3]; +lft x4=pcshiftx; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_istem(1,2,srad); % the stem +draw z3{-pdir}..z4{down}..{pdir}z5; +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,5,100); +endchar; % end "A" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{B} +% The letter `B'. +% \begin{macrocode} +cmchar "Uncial letter B"; +beginchar("B", 2u#+caprat*hstretch*(x_height#+jut#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u+jut; +sqyside:=h; sqxside:=hstretch*sqyside; +y100 = h/2; x100 = pcshiftx+y100; % square center +pair uncial; uncial=(qhor,0.5qvert); +pickup quill; +lft x1=lft x2=pcshiftx; +top y1=h; y2=h/4; +x3=pcshiftx+sqxside/2; bot y3=0; +rt x4=pcshiftx+sqxside; y4=0.3h; +lft x5=x1; bot y5=h/2; +z5'=z5 + thick*uncial; +x6=x4-thick; y6=0.85h; +x7=x1; y7=0.9h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tlserif(1,2,srad); % the stem +draw z2{down}..z3{right}..z4{up}..{-uncial}z5'--z5; % bottom bowl +draw z5--z5'{uncial}..z6{up}..{-pdir}z7; % top bowl +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,5,5',6,7,8,100); +endchar; % end "B" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{C} +% The letter `C'. +% \begin{macrocode} +cmchar "Uncial letter C"; +beginchar("C", u#+caprat*hstretch*(x_height#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u/2; +sqyside:=h; sqxside:=hstretch*sqyside; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +lft x1=pcshiftx; rt x3=pcshiftx+sqxside; y1=y3=h/2; +x2=x4=w/2; top y2=h; bot y4=0; +x5=x6=x3; +y5=0.2h; +y6=0.75h; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z5{-pdir}..{left}z4..z1..z2..z6; +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,5,6,100); +endchar; % end "C" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{D} +% The letter `D'. +% \begin{macrocode} +cmchar "Uncial letter D"; +beginchar("D", 2u#+caprat*hstretch*(x_height#), caprat*(5/4x_height#), 0); +adjust_fit(0,0); +pcshiftx := u; +sqyside:=4/5h; sqxside:=hstretch*sqyside; +y100 = side/2; x100 = pcshiftx+y100; % square center +pickup quill; +lft x1=pcshiftx; rt x3=pcshiftx+sqxside; y1=y3=sqyside/2; +x2=x4=w/2; top y2=sqyside; bot y4=0; +x5=x6=x3; +y5=0.2h; +y6=0.75h; +rt x0=pcshiftx+0.5sqxside; top y0=sqyside; +lft x7=pcshiftx+0.5sqxside; +bot y7=sqyside; +lft x8=pcshiftx; y8=y7+thick; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z0{-pdir}..z1{down}..z4{right}..z3{up}..z7..z8; +ductus:=false; +proofpcbb(100, y100, y100); +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 "Uncial letter E"; +beginchar("E", 2u#+caprat*hstretch*(x_height#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +sqyside:=h; sqxside:=hstretch*sqyside; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +lft x1=pcshiftx; rt x3=pcshiftx+sqxside; y1=y3=h/2; +x2=x4=w/2; top y2=h; bot y4=0; +x5=x6=x3; +y5=0.2h; +y6=0.75h; +% the bar +x7=x1; y7=y1; +%%x8=x7+side+0.5thick; y8=y7; +x8=w-pcshiftx; y8=y7; +x10=x7; y10=y7+3thin; +numeric alpha; alpha:=0.5; % dishing +x9=0.5[x8,x10]; y9=(0.5alpha)[y8,y10]; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z5{-pdir}..{left}z4..z1..z2..z6; % the bowl +pickup stylus; +filldraw z7--z8..z9..z10--cycle; % the bar +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,5,6,7,8,9,10,100); +endchar; % end "E" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{F} +% The letter `F'. +% \begin{macrocode} +cmchar "Uncial letter F"; +beginchar("F", 2u#+caprat*hstretch*(jut#+x_height#), caprat*x_height#, + caprat*(2/3x_height#)); +adjust_fit(0,0); +pcshiftx := u+jut; +sqyside:=h; sqxside:=hstretch*sqyside; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +lft x1=lft x2=pcshiftx; +top y1=h; bot y2=-d/2; +x3=x4=x1; y3=h-thick; y4=0; +numeric rise, fall, fjut; +rise:=thick; fall:=0; fjut:=2/3sqxside; +%%ductus:=true; +draw_jstem(1,2,srad,d/2,d/2); +draw_flick(3,rise,fall,fjut); +draw_flick(4,rise,fall,fjut); +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,100); +endchar; % end "F" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{G} +% The letter `G'. Like a `c' but with a small stem. +% \begin{macrocode} +cmchar "Uncial letter G"; +beginchar("G", u#+caprat*hstretch*(x_height#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u/2; +sqyside:=h; sqxside:=hstretch*sqyside; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +lft x1=pcshiftx; rt x3=pcshiftx+sqxside; y1=y3=h/2; +x2=x4=w/2; top y2=h; bot y4=0; +x5=x6=x3; +y5=0.2h; +y6=0.75h; +lft x7=x5-thick; bot y7=y5-3thick; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z5{-pdir}..{left}z4..z1..z2..z6; % the bowl +draw z5{down}..{-pdir}z7; % the stem +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,5,6,7,100); +endchar; % end "G" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{H} +% The letter `H'. +% \begin{macrocode} +cmchar "Uncial letter H"; +beginchar("H", 2u#+caprat*hstretch*(jut#+thick#+x_height#), caprat*asc_height#, 0); +adjust_fit(0,0); +pcshiftx := u+jut; +sqyside:=h/2; % asc_height is 2x_height !!! +sqxside:=hstretch*sqyside; +y100 = sqyside/2; x100 = pcshiftx+y100; % square center +pickup quill; +lft x1=lft x2=pcshiftx; +top y1=h; bot y2=0; +% center of circle +x99=w/2; y99=sqyside/2; +y3=y5=y99; +lft x3= pcshiftx; +%%rt x5=x99+w-pcshiftx; +x5 = x99 + (x99-x3); +x4=x6=x99; top y4=sqyside; bot y6 =0; +path pcirc; pcirc=z6..z5..z4..z3..cycle; +x1'=x2'=x1+0.5thick; y1'=h; y2'=0; +z7' = (z1'--z2') intersectionpoint (subpath(2,3) of pcirc); +x7=x1; y7=y7'; +z99'=z99 - 500ppdir; +z8' = (z99--z99') intersectionpoint subpath(0,1) of pcirc; +x8=x8'; bot y8=0; +%%ductus:=true; +if ductus: + pickup stylus; + draw z1'--z2'; draw z99--z99'; draw pcirc; +fi +draw_istem(1,2,srad); +draw z7{pdir}..z4{right}..z5{down}..{-pdir}z8; +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,1',2,2',3,4,5,6,7,7',8,8',99,99',100); +endchar; % end "H" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{I} +% The letter `I'. +% \begin{macrocode} +cmchar "Uncial letter I"; +beginchar("I", 2u#+hstretch*(thick#+2jut#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u+jut; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +x1=x2=w/2; +top y1=h; bot y2=0; +%%ductus:=true; +draw_istem(1,2,srad); +ductus:=false; +proofpcbb(100, y100, y100); +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 "Uncial letter J"; +beginchar("J", 2u#+caprat*hstretch*(thick#+2jut#), caprat*x_height#, + caprat*desc_depth#); +adjust_fit(0,0); +pcshiftx := u+jut; +sqyside:=h; sqxside:=sqyside; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +x1=x2=w/2; +top y1=h; bot y2=0; +%%ductus:=true; +draw_jstem(1,2,srad,2/3sqxside,desc_depth); +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,100); +endchar; % end "J" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{K} +% The letter `K'. +% \begin{macrocode} +cmchar "Uncial letter K"; +beginchar("K", 2u#+caprat*hstretch*(jut#+4/3x_height#), caprat*asc_height#, 0); +adjust_fit(0,0); +pcshiftx := u+jut; +sqyside:=h/2; % asc_height = 2x_height !!! +sqxside:=hstretch*sqyside; +y100 = side/2; x100 = pcshiftx+y100; % square center +pickup quill; +lft x1=lft x2=pcshiftx; +top y1=h; bot y2=0; +% for the flick +numeric rise,fall,fjut; +x3=x1; y3=2/3side; +rise:=1/3sqyside; fall:=-rise/2; fjut:=sqxside; %% fjut:=2/3side; +% for the leg +x4=x3+0.25thick; y4=y3+0.5thick; +x5=x3+side; y5=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_istem(1,2,srad); +draw_flick(3,rise,fall,fjut); +draw_tstem(4,5,srad); +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,5,100); +endchar; % end "K" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{L} +% The letter `l'. Like a high `i' but with a bottom bowl like the lower half +% of the `c'. +% \begin{macrocode} +cmchar "Uncial letter L"; +beginchar("L", 2u#+caprat*hstretch*(x_height#+jut#), caprat*asc_height#, 0); +adjust_fit(0,0); +pcshiftx := u+jut; +sqyside:=h/2; sqxside:=hstretch*sqyside; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +lft x1=lft x2=pcshiftx; +top y1=h; y2=h/4; +x3=0.5[x1,x4]; bot y3=0; +rt x4=w-u; +y4=0.1h; +%%ductus:=true; +draw_tlserif(1,2,srad); % the stem +draw z2{down}..z3{right}..{pdir}z4; % the bowl +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,100); +endchar; % end "L" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{M} +% The letter `M'. +% \begin{macrocode} +cmchar "Uncial letter M"; +beginchar("M", 2u#+caprat*hstretch*(9/6x_height#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +sqyside:=h; sqxside:=hstretch*sqyside; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +x1=1/3sqxside; bot y1=0; +lft x2= pcshiftx; y2=h/2; +lft x4=pcshiftx+2/3sqxside; y4=2/3h; +x3=0.5[x2,x4]; top y3=h; +x5=x4; y5=y1; +z6=z4; +numeric rise,fall,mjut; +rise=h-y6; fall=y6; mjut=w-pcshiftx-x6; +%%ductus:=true; +draw z1..z2{up}..z3{right}..{down}z4; % left half +draw_tstem(4,5,srad); % middle stem +draw_hbowl(6,rise,fall,mjut); % right half +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,5,6,100); +endchar; % end "M" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{N} +% The letter `N'. +% \begin{macrocode} +cmchar "Uncial letter N"; +beginchar("N", 2u#+caprat*hstretch*(jut#+x_height#), caprat*x_height#, + caprat*(0.5x_height#)); +adjust_fit(0,0); +pcshiftx := u; +sqyside:=h; sqxside:=hstretch*sqyside; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +% left stem +lft x1=pcshiftx; top y1=h; +x2=x1; y2=y1-thin; +numeric jjut, jdepth; +jjut=2jut; jdepth=y2+d-thin; +% right stem +rt x4=pcshiftx+sqxside; y4=y1; +x3=x4; bot y3=0; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_jcurve(1,srad,jjut,jdepth); % left stem +draw_istem(4,3,srad); % right stem +draw z1--z3; % diagonal +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,100); +endchar; % end "N" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{O} +% The letter `O'. +% \begin{macrocode} +cmchar "Uncial letter O"; +beginchar("O", 2u#+caprat*hstretch*(x_height#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +sqyside:=h; sqxside:=hstretch*sqyside; +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; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,100); +endchar; % end "O" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{P} +% The letter `P'. +% \begin{macrocode} +cmchar "Uncial letter P"; +beginchar("P", 2u#+caprat*hstretch*(x_height#+jut#), caprat*x_height#, + caprat*x_height#); +adjust_fit(0,0); +pcshiftx := u+jut; +sqyside:=h; sqxside:=hstretch*sqyside; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +% stem +lft x1=pcshiftx; top y1=h; +numeric jjut, jdepth; +jjut=1/3sqxside-thin; jdepth=h+d-thin; +% bowl +x2=x1; y2=3/4h; %% y2=2/3side; +rt x4=w-u; +lft x5=x1+thick; y5=0; +y4=0.4[y3,y5]; +top y3=h; x3=0.5[x2,x4]; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_jcurve(1,srad,jjut,jdepth); % stem +%%draw z2..z3{right}..z4{down}..{-pdir}z5; % bowl +draw z1a..z3{right}..z4{down}..{-pdir}z5; % bowl +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,5,100); +endchar; % end "P" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{Q} +% The letter `Q'. +% \begin{macrocode} +cmchar "Uncial letter Q"; +beginchar("Q", 2u#+caprat*hstretch*(x_height#), caprat*x_height#, caprat*x_height#); +adjust_fit(0,0); +pcshiftx := u; +sqyside:=h; sqxside:=hstretch*sqyside; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +% right stem +rt x1=w-pcshiftx; top y1=h; +numeric jjut, jdepth; +jjut=2jut; jdepth=h+d-thin; +x2=x1-jjut; y2=y1-jdepth; +% bowl +numeric rad; rad := w/2; +x0=w/2; y0=h/2; +lft x4=pcshiftx; y4=y0; +x3=x5=x0; top y3=h; bot y5=0; +x7=x0+rad; y7=y0; +path p[]; +p1=z1{down}..{-pdir}z2; % stem +p2=z4{down}..z5{right}..{up}z7; +z6'= p1 intersectionpoint p2; +rt x6=x6'; y6=y6'; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1{down}...{-pdir}z2; % right stem +draw z1--z3..z4{down}..{right}z5..z6; % bowl +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(0,1,2,3,4,5,6,6',7,100); +endchar; % end "Q" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{R} +% The letter `R'. +% \begin{macrocode} +cmchar "Uncial letter R"; +beginchar("R", 2u#+caprat*hstretch*(4/3x_height#), caprat*x_height#, + caprat*(2/3x_height#)); +adjust_fit(0,0); +sqyside:=h; sqxside:=hstretch*sqyside; +pcshiftx := u+jut; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +% stem +lft x1=pcshiftx; top y1=h; +numeric jjut, jdepth; +jjut=1/5sqxside; jdepth=h+d-thin; +% bowl +x2=x1; y2=3/4h; +rt x4=pcshiftx+3/4sqxside; +lft x5=x1; bot y5=1/6h; +y4=0.4[y3,y5]; +top y3=h; x3=0.5[x2,x4]; +rt x7=w-u; y7=-thin; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_jcurve(1,srad,jjut,jdepth); % stem +draw z1a..z3{right}..z4{down}..{-pdir}z5; % bowl +draw z5{-ppdir}..{right}z7; % leg +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,5,6,7,100); +endchar; % end "R" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{S} +% The letter `S'. +% \begin{macrocode} +cmchar "Uncial letter S"; +beginchar("S", 2u#+caprat*hstretch*(5/6x_height#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +sqyside:=h; sqxside:=hstretch*sqyside; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +rt x1=w-pcshiftx; top y1=h-thin; +x2=w/2; top y2=h; +lft x3=pcshiftx; y3=0.75h; +x4=w/2; y4=h/2; +rt x5=w-pcshiftx; y5=0.25h; +x6=w/2; bot y6=0; +lft x7= pcshiftx; bot y7 = thin; +path p[]; +p1=z1..z2{left}..z3{down}..z4..z5{down}..z6{left}..z7; +pair vec[]; +vec1= direction 0 of p1; +vec2= direction (length p1) of p1; +z11=z1 shifted vec1; +z17=z7 shifted -vec2; +%%ductus:=true; +if ductus: + pickup stylus; +fi +%%draw_serif(1,11,srad); +%%draw_serif(7,17,srad); +%%draw z1a..z2{left}..z3{down}..z4..z5{down}..z6{left}..z7a; +draw p1; +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,5,6,7,11,17,100); +endchar; % end "S" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{T} +% The letter `T'. +% \begin{macrocode} +cmchar "Uncial letter T"; +beginchar("T", u#+caprat*hstretch*(x_height#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u/2; +sqyside:=h; sqxside:=hstretch*sqyside; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +x1=x2=w/2; +top y1=h; bot y2=0; +lft x3=pcshiftx; top y3=h-thin; +x4=x2; top y4=h; +rt x5=w-pcshiftx; top y5=h+thin; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); +draw z3{pdir}..z4{right}..{pdir}z5; +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,5,100); +endchar; % end "T" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{U} +% The letter `U'. This is a modern version as the font did not have a U. +% It uses part of the left half of the W. +% \begin{macrocode} +cmchar "Uncial letter U"; +beginchar("U", 2u#+caprat*hstretch*(x_height#+jut#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +sqyside:=h; sqxside:=hstretch*sqyside; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +% left half first +lft x6=pcshiftx+thick; +top y6=h; +lft x7=pcshiftx; y7=h/2; +x8=pcshiftx+0.5sqxside; bot y8=0; +% the stem +rt x1=w-pcshiftx-jut; y1=h; +x2=x1; bot y2=0; +% a construction point for the curved part +x5=x1+sqxside-thick; y5=y6; +path p[]; +p1=z1--z2; +p2=z6..z7{down}..z8{right}..z5; +z9= p2 intersectionpoint p1; +pair vec[]; +vec2 = direction 0 of p2; +z16=z6 shifted vec2; +%%ductus:=true; +if ductus: + pickup stylus; +fi +% draw the serifs, then the bowls +draw_serif(6,16,srad); % left half +draw z6a..z7{down}..z8{right}..z9; +draw_istem(1,2,srad); % right stem +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,5,6,7,8,9,11,16,100); +endchar; % end "U" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{V} +% The letter `V'. The right half of the `w' is used for the `v' (or vice-versa +% if you prefer). +% \begin{macrocode} +cmchar "Uncial letter V"; +beginchar("V", 2u#+caprat*hstretch*(x_height#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +sqyside:=h; sqxside:=hstretch*sqyside; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +% right side first +numeric midx; midx:= pcshiftx; +lft x1=midx+jut; top y1=h; +lft x2=midx; y2=h/2; +rt x4=midx+sqxside; y4=y2; +x3=0.5[x2,x4]; bot y3=0; +x5=x4-thick; y5=y1; +path p[]; +p1=z1..z2{down}..z3{right}..z4{up}..z5; +pair vec[]; +vec1 = direction 0 of p1; +z11=z1 shifted vec1; +%%ductus:=true; +if ductus: + pickup stylus; +fi +% draw the serifs, then the bowls +draw_serif(1,11,srad); % right half +draw z1a..z2{down}..z3{right}..z4{up}..z5; +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,5,11,100); +endchar; % end "V" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{W} +% The letter `W'. This is a modern version as the font did not have a W. +% \begin{macrocode} +cmchar "Uncial letter W"; +beginchar("W", 2u#+caprat*hstretch*(5/3x_height#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +sqyside:=h; sqxside:=hstretch*sqyside; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +% right side first +numeric midx; midx:= pcshiftx+2/3sqxside; +lft x1=midx+jut; top y1=h; +lft x2=midx; y2=h/2; +rt x4=midx+sqxside; y4=y2; +x3=0.5[x2,x4]; bot y3=0; +x5=x4-thick; y5=y1; +path p[]; +p1=z1..z2{down}..z3{right}..z4{up}..z5; +% left side +lft x6=pcshiftx+thick; +y6=y1; +lft x7=pcshiftx; y7=y2; +x8=pcshiftx+0.5sqxside; y8=y3; +p2=z6..z7{down}..z8{right}..(z5 shifted -pdir); +z9= p2 intersectionpoint p1; +pair vec[]; +vec1 = direction 0 of p1; +vec2 = direction 0 of p2; +z11=z1 shifted vec1; +z16=z6 shifted vec2; +%%ductus:=true; +if ductus: + pickup stylus; +fi +% draw the serifs, then the bowls +draw_serif(1,11,srad); % right half +draw z1a..z2{down}..z3{right}..z4{up}..z5; +draw_serif(6,16,srad); % left half +draw z6a..z7{down}..z8{right}..z9; +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,5,6,7,8,9,11,16,100); +endchar; % end "W" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{X} +% The letter `X'. +% \begin{macrocode} +cmchar "Uncial letter X"; +beginchar("X", u#+caprat*hstretch*(5/3x_height#), caprat*x_height#, + caprat*(1/3x_height#)); +adjust_fit(0,0); +pcshiftx := 0; +sqyside:=h; sqxside:=hstretch*sqyside; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +% thick diagonal +lft x1=pcshiftx+1/2sqxside; rt x2=w-jut; +y1=h; y2=0; +% thin diagonal +lft x3=pcshiftx; bot y3=-d; +z4=z3 shifted (jut*right); +z5=z4 shifted (jut*pdir); +rt x8=w-pcshiftx; top y8=h; +z7=z8 shifted (jut*left); +z6=z7 shifted (-jut*pdir); +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_istem(1,2,srad); % thick diagonal +draw z3---z4..z5---z6..z7---z8; % thin diagonal +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,5,6,7,8,100); +endchar; % end "X" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{Y} +% The letter `Y'. This has a dot on top! +% \begin{macrocode} +cmchar "Uncial letter Y"; +beginchar("Y", 2u#+caprat*hstretch*(4/3x_height#), caprat*x_height#, 2/3caprat*x_height#); +adjust_fit(0,0); +pcshiftx := u; +sqyside:=h; sqxside:=hstretch*sqyside; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +% left stroke +lft x1=pcshiftx; top y1=3/4h; +lft x3=w/2; bot y3=-d; +x2=0.8[x1,x3]; y2=0.5[y1,y3]; +% right stroke +rt x4=w-pcshiftx; y4=y1; +x7=pcshiftx; y7=-d; +path p[]; +p1=z1..z2..z3; +z6= (z7--z4) intersectionpoint p1; +x5=0.4[x6,x4]; y5=0.5[y6,y4]; +% the dot +x8=x6; y8=h; +if ductus: + pickup stylus; +fi +draw z1..z2..z3; % left stroke +draw z4{left}..z6; % right stroke +draw_pdot(8,dot_size); +ductus:=false; +proofpcbb(100, y100, y100); +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 "Uncial letter Z"; +beginchar("Z", 2u#+caprat*hstretch*(4/3x_height#), caprat*x_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +sqyside:=h; sqxside:=hstretch*sqyside; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +% bottom stroke +lft x4=pcshiftx; bot y4=0; +rt x6=w-pcshiftx; y6=y4; +x5=0.5[x4,x6]; y5=y4+thin; +% top stroke +x1=x4; top y1=h; +x3=pcshiftx+sqxside; y3=y1; +x2=0.5[x1,x3]; top y2=h-thin; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z1..z2..z3; % top stroke +draw z4..z5..z6; % bottom stroke +% the diagonal +pickup stylus; +draw z4--z3; +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,5,6,100); +endchar; % end "Z" + +% \end{macrocode} +% \end{routine} +% +% +% +% The end of this file +% \begin{macrocode} +% +% \end{macrocode} +% +% +% +% \subsection{The punctuation file} +% +% The main punctuation marks are defined in this file. +% +% \begin{macrocode} +%<*punct> +% UNCLPUNCT.MF This file contains punctuation marks + +% \end{macrocode} +% +% +% \begin{routine}{,} +% The `,' character. +% \begin{macrocode} + +cmchar "Uncial Comma"; +beginchar(",",2u#+hstretch*(comma_width#+dot_size#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=u; +x1=w-pcshiftx-(0.5hstretch*dot_size); y1=h/2; +draw_pcomma(1,dot_size,comma_width); +penlabels(1); +endchar; % end of "," + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{.} +% The `.' character. +% \begin{macrocode} + +cmchar "Uncial Period"; +beginchar(".",2u#+hstretch*(dot_size#),x_height#,0); +pcshiftx:=u; +x1=w/2; y1=h/2; +draw_pdot(1,dot_size); +penlabels(1); +endchar; % end of "." + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{:} +% The `:' character. +% \begin{macrocode} + +cmchar "Uncial Colon"; +beginchar(":",2u#+hstretch*(dot_size#),x_height#,0); +pcshiftx:=u; +x1=x2=w/2; y1=2/3h; y2=1/3h; +draw_pdot(1,dot_size); +draw_pdot(2,dot_size); +penlabels(1,2); +endchar; % end ":" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{;} +% The `;' character. +% \begin{macrocode} + +cmchar "Uncial Semicolon"; +beginchar(";",2u#+hstretch*(comma_width#+dot_size#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=u; +x1=x2=w-pcshiftx-(0.5hstretch*dot_size); y1=2/3h; y2=1/3h; +draw_pdot(1,dot_size); +draw_pcomma(2,dot_size,comma_width); +penlabels(1,2); +endchar; % end of ";" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{'} +% The `'' character. +% \begin{macrocode} + +cmchar "Uncial Apostrophe"; +beginchar("'",2u#+hstretch*(comma_width#+dot_size#),4/3x_height#,0); +adjust_fit(0,0); +pcshiftx:=u; +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 "Uncial Reverse apostrophe"; +beginchar("`",2u#+hstretch*(comma_width#+dot_size#),4/3x_height#,0); +adjust_fit(0,0); +pcshiftx:=u; +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} +% +% \end{macrocode} +% +% +% \subsection{The ligatures and dashes file} +% +% The ligatured punctuation marks and dashes are defined in this file. +% \begin{macrocode} +%<*lig> +% UNCLLIG.MF Uncial ligatured 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 "Uncial closing quotes"; +beginchar(oct"042",2u#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0); +adjust_fit(0,0); +pcshiftx:=u; +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 "Uncial opening quotes"; +beginchar(oct"134",2u#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0); +adjust_fit(0,0); +pcshiftx:=u; +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 `-' character. +% \begin{macrocode} + +cmchar "Uncial hyphen"; +beginchar("-",u#+hstretch*(0.8x_height#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=u/2; +pickup quill; +lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; +draw z1--z2; % bar +penlabels(1,2); +endchar; % end of "-" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{--} +% The -- ligature. +% \begin{macrocode} + +cmchar "Uncial en dash"; +beginchar(oct"173",u#+hstretch*(x_height#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=u/2; +pickup quill; +lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; +draw z1--z2; % bar +penlabels(1,2); +endchar; % end of "--" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{---} +% The `---' ligature. The em dash is twice the width of the en dash. +% \begin{macrocode} + +cmchar "Uncial em dash"; +beginchar(oct"174",u#+hstretch*(2x_height#),x_height#,0); +adjust_fit(0,0); +pcshiftx:=u/2; +pickup quill; +lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; +draw z1--z2; % bar +penlabels(1,2); +endchar; % end of "---" + +% \end{macrocode} +% \end{routine} +% +% +% The end of this file. +% \begin{macrocode} +% +% \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> +% UNCLDIG.MF Program file for Uncial digits +% + +% \end{macrocode} +% +% +% \begin{routine}{1} +% The digit `1'. +% \begin{macrocode} +cmchar "Uncial digit 1"; +beginchar("1", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +y100 = h/2; x100 = pcshiftx+y100; % square center +pickup quill; +x1=x2=w/2; +y1=h; bot y2=0; +%%ductus:=true; +draw_tstem(1,2,srad); +ductus:=false; +proofpcbb(100, y100, y100); +penlabels(1,2,100); +endchar; % end "1" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{2} +% The digit `2'. +% \begin{macrocode} +cmchar "Uncial digit 2"; +beginchar("2", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +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; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_wave(5,6,thin); % foot +draw z1..z2{right}..z3{down}..{-pdir}z5wl; % curve +ductus:=false; +penlabels(1,2,3,4,5,6,100); +endchar; % end "2" + +% \end{macrocode} +% \end{routine} +% +% +% \begin{routine}{3} +% The digit `3'. +% \begin{macrocode} +cmchar "Uncial 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; +% y values +bot y3=thin; top y10=h-2thin; +y6=0.5[y3,y10]; y7=y6; +bot y4=-thin; top y9=h+thin; +y5=0.5[y3,y6]; +y8=11/12[y7,y10]; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw z3..z4{right}..z5{up}...{-pdir}z6; % bottom bowl +draw z7{pdir}..z8{up}..z9{left}..z10; % top bowl +ductus:=false; +penlabels(1,2,3,4,5,6,7,8,9,10,100); +endchar; % end "3" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{4} +% The digit `4'. +% \begin{macrocode} +cmchar "Uncial digit 4"; +beginchar("4", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% the stem +x1=x2=w-pcshiftx-jut; +y1=h; bot y2=0; +% the crossbar +lft x3=pcshiftx; y3=0.33h; +rt x4=w-pcshiftx; y4=y3; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_tstem(1,2,srad); % main stem +draw_wave(3,4,thin); % crossbar +draw z3wl--z1; % diagonal +ductus:=false; +penlabels(1,2,3,4,100); +endchar; % end "4" + +% \end{macrocode} +% \end{routine} +% +% +% +% \begin{routine}{5} +% The digit `5'. +% \begin{macrocode} +cmchar "Uncial digit 5"; +beginchar("5", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +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; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_wave(2,1,thin); % top squiggle +draw z3{pdir}..z5{down}..z6{left}..z7; % curve +draw z2wl--z3; % vertical +ductus:=false; +penlabels(1,2,3,4,5,6,7,100); +endchar; % end "5" + +% \end{macrocode} +% \end{routine} +% +% \begin{routine}{6} +% The digit `6'. +% \begin{macrocode} +cmchar "Uncial 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 "Uncial digit 7"; +beginchar("7", 2u#+fig_width#, fig_height#, 0); +adjust_fit(0,0); +pcshiftx := u; +pickup quill; +% top bar +lft x1=pcshiftx; +rt x2=w-pcshiftx; +top y1=top y2=h; +% bowed leg +x4=w/2; bot y4=0; +x3=0.5[x2,x4]-3thin; y3=0.5[y2,y4]; +%%ductus:=true; +if ductus: + pickup stylus; +fi +draw_wave(1,2,thin); % top bar +draw z1wr..z3..z4; +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 "Uncial 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 "Uncial 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 "Uncial 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; +proofpcbb(100, y100, y100); +penlabels(1,2,3,4,100); +endchar; % end "0" + +% \end{macrocode} +% \end{routine} +% +% +% +% +% The end of this file. +% \begin{macrocode} +% +% \end{macrocode} +% +% \section{The font definition files} \label{sec:fd} +% +% The font comes in normal and bold weights only. +% +% \begin{macrocode} +%<*fdot1> +\DeclareFontFamily{OT1}{uncl}{} + \DeclareFontShape{OT1}{uncl}{m}{n}{ <-8.5> uncl7 <8.5-15> uncl10 <15-> uncl17 }{} + \DeclareFontShape{OT1}{uncl}{m}{sl}{ <-> sub * uncl/m/n }{} + \DeclareFontShape{OT1}{uncl}{m}{it}{ <-> sub * uncl/m/n }{} + \DeclareFontShape{OT1}{uncl}{m}{sc}{ <-> sub * uncl/m/n }{} + \DeclareFontShape{OT1}{uncl}{m}{u}{ <-> sub * uncl/m/n }{} + \DeclareFontShape{OT1}{uncl}{bx}{n}{ <-8.5> unclb7 <8.5-15> unclb10 <15-> unclb17 }{} + \DeclareFontShape{OT1}{uncl}{bx}{it}{ <-> sub * uncl/bx/n }{} + \DeclareFontShape{OT1}{uncl}{bx}{sl}{ <-> sub * uncl/bx/n }{} + \DeclareFontShape{OT1}{uncl}{b}{n}{ <-> sub * uncl/bx/n }{} +% +% \end{macrocode} +% +% +% \begin{macrocode} +%<*fdt1> +\DeclareFontFamily{T1}{uncl}{} + \DeclareFontShape{T1}{uncl}{m}{n}{ <-8.5> uncl7 <8.5-15> uncl10 <15-> uncl17 }{} + \DeclareFontShape{T1}{uncl}{m}{sl}{ <-> sub * uncl/m/n }{} + \DeclareFontShape{T1}{uncl}{m}{it}{ <-> sub * uncl/m/n }{} + \DeclareFontShape{T1}{uncl}{m}{sc}{ <-> sub * uncl/m/n }{} + \DeclareFontShape{T1}{uncl}{m}{u}{ <-> sub * uncl/m/n }{} + \DeclareFontShape{T1}{uncl}{bx}{n}{ <-8.5> unclb7 <8.5-15> unclb10 <15-> unclb17 }{} + \DeclareFontShape{T1}{uncl}{bx}{it}{ <-> sub * uncl/bx/n }{} + \DeclareFontShape{T1}{uncl}{bx}{sl}{ <-> sub * uncl/bx/n }{} + \DeclareFontShape{T1}{uncl}{b}{n}{ <-> sub * uncl/bx/n }{} +% +% \end{macrocode} +% +% \section{The package code} \label{sec:code} +% +% \subsection{The \Lpack{uncial} package} +% +% The \Lpack{uncial} package is for typesetting short pieces of text +% in the Uncial fonts. +% +% Announce the name and version of the package, which requires +% \LaTeXe{}. +% \begin{macrocode} +%<*usc> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{uncial}[1999/05/15 v1.1 package for uncial 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}{\unclfamily} +% Selects the Uncial font family in the OT1 or T1 encoding. +% \begin{macrocode} +\ifx\Tienc\encodingdefault + \newcommand{\unclfamily}{\usefont{T1}{uncl}{m}{n}} +\else + \newcommand{\unclfamily}{\usefont{OT1}{uncl}{m}{n}} +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\textuncl} +% Text command for the Uncial font family. +% \begin{macrocode} +\DeclareTextFontCommand{\textuncl}{\unclfamily} +% \end{macrocode} +% \end{macro} +% +% The end of this package. +% \begin{macrocode} +% +% \end{macrocode} +% +% \subsection{The \Lpack{alluncl} package} +% +% The \Lpack{alluncl} 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{uncial} package. +% \begin{macrocode} +%<*uscall> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{alluncl}[1999/05/15 v1.1 package for all Uncial fonts] +\RequirePackage{uncial} +% \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 Uncial, which has only one family +% member. +% \begin{macro}{\rmdefault} +% \begin{macro}{\sfdefault} +% \begin{macro}{\ttdefault} +% \begin{macrocode} +\renewcommand{\rmdefault}{uncl} +\renewcommand{\sfdefault}{uncl} +\renewcommand{\ttdefault}{uncl} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The `leading' in the book-hand is the same as the |x-height|, which is much +% greater than for the CMR fonts. I have borrowed code from Frank Jensen's +% \Lpack{beton} package~\cite{BETON} to do this. +% +% \begin{macro}{\uncial@baselineskip@table} +% A table of the normal font sizes and the corresponding baselineskip. +% \begin{macrocode} +\newcommand{\uncial@baselineskip@table}{% + <\@vpt>9.5% + <\@vipt>11.4% + <\@viipt>13.3% + <\@viiipt>15.2% + <\@xpt>19% + <\@xipt>20.9% + <\@xiipt>22.8% + <\@xivpt>27.36% + <\@xviipt>23.3% + <\@xxpt>38% + <\@xxvpt>47.5} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\uncial@new@setfontsize} +% This is a macro that replaces the |\@setfontsize| macro which is called by +% the font size changing commands. +% \begin{macrocode} +\newcommand{\uncial@new@setfontsize}[3]{% + \edef\@tempa{\def\noexpand\@tempb####1<#2}% + \@tempa>##2<##3\@nil{\def\uncial@baselineskip@value{##2}}% + \edef\@tempa{\noexpand\@tempb\uncial@baselineskip@table<#2}% + \@tempa><\@nil + \ifx\uncial@baselineskip@value\@empty + \def\uncial@baselineskip@value{#3}% + \fi + \uncial@old@setfontsize{#1}{#2}\uncial@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\uncial@old@setfontsize=\@setfontsize + \let\@setfontsize=\uncial@new@setfontsize} +\AtBeginDocument{\normalsize} +% \end{macrocode} +% +% +% The end of this package. +% \begin{macrocode} +% +% \end{macrocode} +% +% +% +% \bibliographystyle{alpha} +% \renewcommand{\refname}{Bibliography} +% \begin{thebibliography}{GMS94} +% \addcontentsline{toc}{section}{\refname} +% +% \bibitem[And69]{ANDERSON69} +% Donald M.~Anderson. +% \newblock {\em The Art of Written Forms: The Theory and Practice of Calligraphy}. +% \newblock Holt, Rinehart and Winston, 1969. +% +% \bibitem[Bol95]{BOLOGNA95} +% Giulia Bologna. +% \newblock {\em Illuminated Manuscripts: The Book before Gutenberg}. +% \newblock Crescent Books, 1995. +% +% \bibitem[Day95]{DAY95} +% Lewis F.~Day. +% \newblock {\em Alphabets Old \& New}. +% \newblock (3rd edition originally published by B.~T.~Batsford, 1910) +% \newblock Senate, 1995. +% +% \bibitem[Dro80]{DROGIN80} +% Marc Drogin. +% \newblock {\em Medieval Calligraphy: Its History and Technique}. +% \newblock Allenheld, Osmun \& Co., 1980. +% +% \bibitem[Dru95]{DRUCKER95} +% Johanna Drucker. +% \newblock {\em The Alphabetic Labyrinth}. +% \newblock Thames \& Hudson, 1995. +% +% \bibitem[Fir93]{FIRMAGE93} +% Richard A.~Firmage. +% \newblock {\em The Alphabet Abecedarium}. +% \newblock David R~Goodine, 1993. +% +% \bibitem[Har95]{HARRIS95} +% David Harris. +% \newblock {\em The Art of Calligraphy}. +% \newblock DK Publishing, 1995. +% +% \bibitem[Jen95]{BETON} +% Frank Jensen. +% \newblock {\em The BETON package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1995. +% +% \bibitem[Joh71]{JOHNSTON75} +% Edward Johnston (ed. Heather Child). +% \newblock {\em Formal Penship and Other Papers}. +% \newblock Penthalic, 1971. +% +% \bibitem[Knu87]{CM} +% Donald E.~Knuth. +% \newblock {\em Computer Modern Typefaces}. +% \newblock Addison-Wesley, 1987. +% +% \bibitem[Knu92]{METAFONT} +% Donald E.~Knuth. +% \newblock {\em The METAFONTbook}. +% \newblock Addison-Wesley, 1992. +% +% \bibitem[GMS94]{GOOSSENS94} +% Michel Goossens, Frank Mittelbach, and Alexander Samarin. +% \newblock {\em The LaTeX Companion}. +% \newblock Addison-Wesley Publishing Company, 1994. +% +% \bibitem[Tho75]{THOMAS75} +% Alan G.~Thomas. +% \newblock {\em Great Books and Book Collectors}. +% \newblock Weidenfield and Nichoson, 1975. +% +% \bibitem[Wil99]{DOCMFP} +% Peter R.~Wilson. +% \newblock {\em The DOCMFP Package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1999. +% +% \bibitem[Wil99b]{ROMANNUM} +% Peter R.~Wilson. +% \newblock {\em The ROMANNUM Package}. +% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). +% \newblock 1999. +% +% \end{thebibliography} +% +% +% \Finale +% \PrintIndex +% +\endinput + +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} + + diff --git a/Master/texmf-dist/source/fonts/bookhands/uncial.ins b/Master/texmf-dist/source/fonts/bookhands/uncial.ins new file mode 100644 index 00000000000..8d5d48a5ce5 --- /dev/null +++ b/Master/texmf-dist/source/fonts/bookhands/uncial.ins @@ -0,0 +1,103 @@ +%% +%% uncial.ins +%% Copyright 1999 Peter R. Wilson +%% +%% This program is provided under the terms of the +%% LaTeX Project Public License distributed from CTAN +%% archives in directory macros/latex/base/lppl.txt. +%% +%% Author: Peter Wilson (CUA) +%% now at: peter.r.wilson@boeing.com +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\batchfile{uncial.ins} +\input docstrip.tex +\preamble + + Copyright 1999 Peter R. Wilson + + This program is provided under the terms of the + LaTeX Project Public License distributed from CTAN + archives in directory macros/latex/base/lppl.txt. + +Author: Peter Wilson (CUA) + now at: peter.r.wilson@boeing.com + +\endpreamble + +\keepsilent + +%%% \Msg{*** Generating the driver file ***} +%%% \generateFile{uncial.drv}{t}{\from{uncial.dtx}{driver}} + +\Msg{*** Generating the Metafont files ***} + +\usepostamble\empty +\generateFile{uncl7.mf}{t}{\from{uncial.dtx}{base7}} +\generateFile{uncl10.mf}{t}{\from{uncial.dtx}{base10}} +\generateFile{uncl17.mf}{t}{\from{uncial.dtx}{base17}} +\generateFile{unclb7.mf}{t}{\from{uncial.dtx}{base7b}} +\generateFile{unclb10.mf}{t}{\from{uncial.dtx}{base10b}} +\generateFile{unclb17.mf}{t}{\from{uncial.dtx}{base17b}} +\generateFile{uncll.mf}{t}{\from{uncial.dtx}{min}} +\generateFile{unclu.mf}{t}{\from{uncial.dtx}{maj}} +\generateFile{uncltitle.mf}{t}{\from{uncial.dtx}{mfd}} +\generateFile{unclpunct.mf}{t}{\from{uncial.dtx}{punct}} +\generateFile{uncllig.mf}{t}{\from{uncial.dtx}{lig}} +\generateFile{uncldig.mf}{t}{\from{uncial.dtx}{dig}} +%%% \generateFile{unclp.mf}{t}{\from{uncial.dtx}{xp}} + +\Msg{*** Generating the Font Definition files ***} +\usepostamble\defaultpostamble + +\generateFile{ot1uncl.fd}{t}{\from{uncial.dtx}{fdot1}} +\generateFile{t1uncl.fd}{t}{\from{uncial.dtx}{fdt1}} + +\Msg{*** Generating the LaTeX2e package files ***} + +\generateFile{uncial.sty}{t}{\from{uncial.dtx}{usc}} +\generateFile{alluncl.sty}{t}{\from{uncial.dtx}{uscall}} + +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into directories searched by TeX:} +\Msg{*} +\Msg{* Move these into the font source area:} +\Msg{* \space\space uncl7.mf} +\Msg{* \space\space uncl10.mf} +\Msg{* \space\space uncl17.mf} +\Msg{* \space\space unclb7.mf} +\Msg{* \space\space unclb10.mf} +\Msg{* \space\space unclb17.mf} +\Msg{* \space\space uncll.mf} +\Msg{* \space\space unclu.mf} +\Msg{* \space\space uncltitle.mf} +\Msg{* \space\space unclpunct.mf} +\Msg{* \space\space uncllig.mf} +\Msg{* \space\space uncldig.mf} +%%% \Msg{* \space\space unclp.mf} +\Msg{*} +\Msg{* Move these into the LaTeX macro area:} +\Msg{* \space\space ot1uncl.fd} +\Msg{* \space\space t1uncl.fd} +\Msg{* \space\space uncial.sty} +\Msg{* \space\space alluncl.sty} +\Msg{*} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* `.dtx' through LaTeX.} +\Msg{* Process any name.idx file by:} +\Msg{* \space\space\space\space makeindex -s gind.ist name} +\Msg{* Process any name.glo file by:} +\Msg{* \space\space\space\space makeindex -s gglo.ist -o name.gls name.glo} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} + +\endinput diff --git a/Master/texmf-dist/source/latex/bookhands/auncial/auncial.dtx b/Master/texmf-dist/source/latex/bookhands/auncial/auncial.dtx deleted file mode 100644 index 2a0f8e6439f..00000000000 --- a/Master/texmf-dist/source/latex/bookhands/auncial/auncial.dtx +++ /dev/null @@ -1,3803 +0,0 @@ -% \iffalse meta-comment -% -% auncial.dtx -% Copyright 1999 Peter R. Wilson -% -% This program is provided under the terms of the -% LaTeX Project Public License distributed from CTAN -% archives in directory macros/latex/base/lppl.txt. -% -% Author: Peter Wilson (CUA) (now at: peter.r.wilson@boeing.com) -% -% If you do not have the docmfp package (available from CTAN in -% tex-archive/macros/latex/contrib/supported), comment out the -% \usepackage{docmfp} line below and uncomment the line following it. -% -%<*driver> -\documentclass{ltxdoc} -\usepackage{docmfp} -%%%%%% \providecommand{\DescribeVariable}[1]{} \newenvironment{routine}[1]{}{} -\EnableCrossrefs -\CodelineIndex -\setcounter{StandardModuleDepth}{1} -\begin{document} - \DocInput{auncial.dtx} -\end{document} -% -% -% \fi -% -% \CheckSum{132} -% -% \DoNotIndex{\',\.,\@M,\@@input,\@addtoreset,\@arabic,\@badmath} -% \DoNotIndex{\@centercr,\@cite} -% \DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue} -% \DoNotIndex{\@input,\@ixpt,\@m} -% \DoNotIndex{\@minus,\@mkboth,\@ne,\@nil,\@nomath,\@plus,\@set@topoint} -% \DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb} -% \DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt} -% \DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt} -% \DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace} -% \DoNotIndex{\advance,\Alph,\alph} -% \DoNotIndex{\arabic,\ast,\begin,\begingroup,\bfseries,\bgroup,\box} -% \DoNotIndex{\bullet} -% \DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption} -% \DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass} -% \DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\endtrivlist} -% \DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup} -% \DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter} -% \DoNotIndex{\fbox} -% \DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef} -% \DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule} -% \DoNotIndex{\hsize,\hskip,\hspace,\hss,\if@tempswa,\ifcase,\or,\fi,\fi} -% \DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\fi,\fi,\fi,\fi,\fi} -% \DoNotIndex{\input} -% \DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark} -% \DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright} -% \DoNotIndex{\month,\newcommand,\newcounter,\newenvironment} -% \DoNotIndex{\NeedsTeXFormat,\newdimen} -% \DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number} -% \DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\p@} -% \DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip} -% \DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions} -% \DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright} -% \DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font} -% \DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily,\roman} -% \DoNotIndex{\roman,\secdef,\selectfont,\setbox,\setcounter,\setlength} -% \DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space} -% \DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase} -% \DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt} -% \DoNotIndex{\viipt,\vipt,\vskip,\vspace} -% \DoNotIndex{\wd,\xiipt,\year,\z@} -% -% \changes{v1.0}{1999/05/22}{First public release} -% \changes{v1.0a}{2001/01/02}{Fixed missing * in fd files} -% -% ^^A \def\fileversion{v1.0} -% ^^A \def\filedate{1999/05/22} -% \def\fileversion{v1.0a} -% \def\filedate{2001/01/02} -% \newcommand*{\Lpack}[1]{\textsf {#1}} ^^A typeset a package -% \newcommand*{\Lopt}[1]{\textsf {#1}} ^^A typeset an option -% \newcommand*{\file}[1]{\texttt {#1}} ^^A typeset a file -% \newcommand*{\Lcount}[1]{\textsl {\small#1}} ^^A typeset a counter -% \newcommand*{\pstyle}[1]{\textsl {#1}} ^^A typeset a pagestyle -% \newcommand*{\Lenv}[1]{\texttt {#1}} ^^A typeset an environment -% \newcommand*{\AD}{\textsc{ad}} -% \newcommand*{\thisfont}{Artificial Uncial} -% -% \title{The \Lpack{Artificial Uncial} fonts\thanks{This -% file has version number \fileversion, last revised -% \filedate.}} -% -% \author{% -% Peter Wilson\\ -% Catholic University of America \\ -% Now at \texttt{peter.r.wilson@boeing.com} -% } -% \date{\filedate} -% \maketitle -% \begin{abstract} -% The \Lpack{auncial} and \Lpack{allauncl} packages provide a set of -% Metafont \thisfont{} book-hands -% as used -% for manuscripts in the 6th to the 10th century. This is one in a series -% of manuscript fonts. -% \end{abstract} -% \tableofcontents -% \listoftables -% -% \StopEventually{} -% -% -% -% \section{Introduction} -% -% The \Lpack{auncial} and \Lpack{allauncl} packages provide a Metafont~\cite{METAFONT} version -% of the \thisfont{} manuscript book-hand that was in use between about the -% sixth and tenth centuries~\AD. It is part of a project to provide fonts -% covering the major manuscript hands between the first century~\AD{} and -% the invention of printing. The principal resources used in this project -% are listed in the Bibliography. -% -% This manual is typeset according to the conventions of the -% \LaTeX{} \textsc{docstrip} utility which enables the automatic -% extraction of the \LaTeX{} macro source files~\cite{GOOSSENS94}. -% The \Lpack{docmfp} package is used for documenting the Metafont portions -% of the distribution~\cite{DOCMFP}. -% -% Section~\ref{sec:usc} describes the usage of the package. -% Commented code for the fonts is in Sections~\ref{sec:mf} and~\ref{sec:fd} -% and source code for the package is in Section~\ref{sec:code}. -% -% \subsection{Manuscript book-hands} -% -% Before the invention of printing all books were written by hand. The book-hands -% used by the scribes and copyists for the manuscripts changed as time -% went on. Table~\ref{tab:1} lists some of the common book-hands which were used -% between the 1st and 15th centuries. The later book-hands formed the basis of the -% fonts used by the early printers, which in turn form the basis of the printing -% fonts in use today. -% -% The manuscript book-hands were written with a broad nibbed reed or quill -% pen. Among the distinguishing characteristics of a hand, apart from the -% actual shape of the letters, are the angle of the pen (which controls the -% variation between thick and thin strokes) and the height of a letter compared -% to the width of the nib. The lower the ratio of the letter height to nib -% width, the more condensed is the script. The scripts also varied in their -% typical height. -% -% Table~\ref{tab:1} gives an `average' x-height for each -% script, which I obtained by measuring a sample of photographs of -% manuscripts written in the various hands. About a dozen examples -% of each book-hand were measured. This figure should not be taken too -% seriously. -% -% There was not a sharp division between the use of one hand and another. -% Many manuscripts exhibit a variety of hands in the same document. For example, -% the scribe writing in an Uncial hand may have used Roman Rustic letters -% for capitals. Usually the same pen was used for the two different scripts. -% -% Generally speaking, as a hand got older it became more embelished, and -% therefore took longer to write. As this happened a new hand would appear that -% was faster, and which would eventually make the earlier one obsolete. -% -% Many of the book-hands were single-cased; that is, they did not have an -% upper- and lower-case as we do nowadays in Western scripts. On the other -% hand, a script might be majuscule or minuscule. A \textit{majuscule} script -% is one, like our upper-case, where the letters are drawn between two lines -% and are of a uniform height with no ascenders or descenders. -% A \textit{minuscule} script, like our lower-case, is drawn between four lines -% and has ascenders and descenders. -% -% \begin{table} -% \centering -% \caption{The main manuscript book-hands} \label{tab:1} -% \begin{tabular}{lccccc} \hline -% Name & Century & x-height & Height & Pen & Normalised \\ -% & & (mm) & (nib widths) & angle & height \\ \hline -% Roman Rustic & 1--6 & 5.7 & 4--6 & 45 & 1.90 \\ -% Uncial & 3--6 & 4.1 & 4--5 & 30 & 1.37 \\ -% Half Uncial & 3--9 & 3.2 & 3--6 & 20--30 & 1.07 \\ -% Artificial Uncial & 6--10 & 4.2 & 3--6 & 10 & 1.40 \\ -% Insular majuscule & 6--9 & 4.2 & 5 & 0--20 & 1.40 \\ -% Insular minuscule & 6 onward & 4.1 & 5--6 & 45--70 & 1.37 \\ -% Carolingian minuscule & 8--12 & 3.0 & 3--5 & 45 & 1.00 \\ -% Early Gothic & 11--12 & 3.8 & 4--6 & 20--45 & 1.27 \\ -% Gothic Textura & 13--15 & 3.9 & 3--5 & 30--45 & 1.30 \\ -% Gothic Prescius & 13 onward & 3.3 & 4--5 & 45 & 1.10 \\ -% Rotunda & 13--15 & 3.2 & 4--6 & 30 & 1.07 \\ -% Humanist minuscule & 14 onward & 3.0 & 4--5 & 30--40 & 1.00 \\ \hline -% \end{tabular} -% \end{table} -% -% During the period under consideration arabic numerals were effectively -% not used. At the beginning they were unknown and even though some knew -% of them towards the end, the glyphs used for them are not recognisable --- -% to me they look somewhat like cryllic letters --- and each locality -% and time had its own highly individualistic rendering. The general rule -% when using one of these book-hands is to write all numbers using -% roman numerals. -% -% The Roman alphabet consisted of 23 capital letters --- the J, U and W -% were absent. The book-hands initially used both a `u' and a `v' interchangeably -% but by the 10th century the practice had become to use the `v' before a vowel -% and the `u' otherwise. The letter corresponding to the W sound appeared -% in England around the 7th century in -% the form of the runic \textit{wen} character and by about the 11th century -% the `w' chacter was generally used. The `J' is the newest letter of all, not -% appearing until about the mid 16th century. -% -% In the first century punctuation was virtually unknown, and typically -% would not even be any additional space between individual words, never -% mind denoting ends of sentences. Sometimes a dot at mid-height would be -% used as a word seperator, or to mark off the end of a paragraph. Effectively -% a text was a continuous stream of letters. By the time that printing was -% invented, though, all of our modern punctuation marks were being used. -% -% Among all these manuscript hands, the Carolingian minuscule is the -% most important as our modern fonts are based on its letter shapes, and it is -% also at this point in time where the division occured between the black letter -% scripts as used even today in Germany, and the lighter fonts used elesewhere. -% The Rotunda and Humanist minuscule hands were developed in Italy and were -% essentially a rediscovery of the Carolingian minusucle. Guthenberg took the -% Gothic scripts as the model for his types. Later printers, -% such as Nicholas Jenson of Venice, -% took the Humanist scripts as their models. -% -% -% \subsection{The \thisfont{} script} -% -% The \thisfont{} hand, which is a minuscule script, was in use for some five -% centuries and was, in a sense, the sucessor to the Uncial book-hand. It was -% a much more calligraphic script, and as time went on it became even more -% decorated, until it was too time consuming to use. Usually the -% lettering in a manuscript was all one size. If the scribe felt the need -% for `capital' letters then, using the same pen, would either write a larger -% \thisfont{} letter or a Roman Capital letter. The capitals were only used at -% the start of a line, and were either fully or partially in the margin. The -% capitals were large, perhaps two to four times the size of a normal letter, -% and were the start of versals. As versals for use with other book-hands, -% the script lived on until the end of the Middle Ages. -% -% I have provided a set of `capital' letters that are only a little larger -% than the normal letters for use in running text. If you want to typeset -% using versals, then I suggest Daniel Flipo's \Lpack{lettrine} -% package~\cite{LETTRINE}. -% During the time the \thisfont{} script was used the alphabet only had 24 -% letters. I have included the missing J. -% -% Arabic numerals were unknown at this time, so all numbers were written -% using the roman numbering system. I have provided Uncial versions of -% the arabic digits. -% -% Punctuation was used, but not with the frequency of today. -% A sentence might be ended with -% a dot at mid-height or a paragraph ended with a colon, also at mid-height. -% The start -% of a paragraph might be marked with a capital letter (as a versal). -% The comma was was a small pointed -% slash; the semi-colon was known, as was the single quotation -% mark which was represented by a raised comma. -% -% -% \section{The \Lpack{auncial} and \Lpack{allauncl} packages} \label{sec:usc} -% -% The \thisfont{} font family is called |auncl|. The font is supplied in both -% OT1 and T1 encodings. -% -% \subsection{The \Lpack{auncial} 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{\aunclfamily} -% The |\aunclfamily| 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{\textuncl} -% The command |\textuncl{|\meta{text}|}| will typeset \meta{text} using the -% \thisfont{} fonts. -% -% \subsection{The \Lpack{allauncl} 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{allauncl} package automatically loads the \Lpack{auncial} package, -% so its font commands are available if necessary. -% -% -% -% \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> -%%%% AUNCL7.MF Artificial Uncial at 7 point design size. -%%%% AUNCL10.MF Artificial Uncial at 10 point design size. -%%%% AUNCL17.MF Artificial Uncial at 17 point design size. -%%%% AUNCLB7.MF Artificial Uncial Bold at 7 point design size. -%%%% AUNCLB10.MF Artificial Uncial Bold at 10 point design size. -%%%% AUNCLB17.MF Artificial Uncial 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 - -%font_identifier:="AUNCL"; font_size 7pt#; -%font_identifier:="AUNCL"; font_size 10pt#; -%font_identifier:="AUNCL"; font_size 17.28pt#; -%font_identifier:="AUNCLB"; font_size 7pt#; -%font_identifier:="AUNCLB"; font_size 10pt#; -%font_identifier:="AUNCLB"; font_size 17.28pt#; - -% \end{macrocode} -% -% \DescribeVariable{jutstretch} -% The CMR scaling for lowercase serifs wrt 17pt size. -% \begin{macrocode} -% jutstretch:=1.19; -% jutstretch:=1.152; -% jutstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{stemstretch} -% The CMR scaling for lowercase stem widths wrt 17pt size. -% \begin{macrocode} -% stemstretch:=1.50; -% stemstretch:=1.31; -% stemstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{caprat} -% The scaling for `capitals' wrt `lowercase'. This is pretty much a guess. -% \begin{macrocode} - caprat:=1.25; % ratio of capital height to minuscule height -% \end{macrocode} -% -% \DescribeVariable{cap_jutstretch} -% The CMR scaling for uppercase serifs wrt 17pt size. -% \begin{macrocode} -% cap_jutstretch:=1.3; -% cap_jutstretch:=1.2; -% cap_jutstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{cap_stemstretch} -% The CMR scaling for uppercase stem width wrt 17pt size. -% \begin{macrocode} -% cap_stemstretch:=1.45; -% cap_stemstretch:=1.31; -% cap_stemstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{bfudge} -% Letter width scaling for bold font wrt normal font. -% \begin{macrocode} -% bfudge:=1.0; -% bfudge:=1.2; -% \end{macrocode} -% -% \DescribeVariable{szfudge} -% Width scaling wrt 17pt letter width. -% \begin{macrocode} -% szfudge:=1.18; -% szfudge:=1.0; -% 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} -% carol_height#:=108.5/36pt#; -% carol_height#:=155/36pt#; -% carol_height#:=268/36pt#; -% \end{macrocode} -% -% \DescribeVariable{vstretch} -% The height of this font wrt the Carolingian font. -% \begin{macrocode} - vstretch:=1.4; - -% \end{macrocode} -% -% \DescribeVariable{x_height} -% The x-height of lower case letters. Scaled from the Carolingian font. -% \begin{macrocode} - x_height#:=vstretch*carol_height#; -% \end{macrocode} -% -% \DescribeVariable{u} -% The unit width. The CMR values are used. -% \begin{macrocode} -% u#:=15.5/36pt#; -% u#:=20/36pt#; -% u#:=32.5/36pt#; -% u#:=17.9/36pt#; -% u#:=23/36pt#; -% 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 -% cap_serif_fit#:=3.5/36pt#; % extra sidebar near uppercase serifs -% cap_serif_fit#:=5/36pt#; % extra sidebar near uppercase serifs -% cap_serif_fit#:=8/36pt#; % extra sidebar near uppercase serifs -% letter_fit#:=0pt#; % extra space added to all sidebars -% letter_fit#:=0pt#; % extra space added to all sidebars -% letter_fit#:=-0.1pt#; % extra space added to all sidebars - -% \end{macrocode} -% -% \DescribeVariable{cap_height} -% The height of capital letters. -% \begin{macrocode} -% cap_height#:=172.2/36pt#; % height of caps -% cap_height#:=246/36pt#; % height of caps -% 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 3.5 nib widths. -% \begin{macrocode} -% thickfudge:=1/5; -% thickfudge:=1/3.5; -% \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{asc_height} -% The height of lower case ascenders. -% \begin{macrocode} - asc_height#:=4/3x_height#; -% \end{macrocode} -% -% \DescribeVariable{desc_depth} -% The depth of lower case descenders. -% \begin{macrocode} - desc_depth#:=2/3x_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} -% rule_thickness#:=.34pt#; -% rule_thickness#:=.4pt#; -% rule_thickness#:=.6pt#; - -% \end{macrocode} -% -% \DescribeVariable{jutfudge} -% Controls the protrusion of serifs. -% \begin{macrocode} -jutfudge:= 3/4; -% \end{macrocode} -% -% \DescribeVariable{jut} -% The lowercase serif protrusion. -% \begin{macrocode} -jut#:=jutstretch*jutfudge*thick#; -% \end{macrocode} -% -% \DescribeVariable{srad} -% |srad| with |0 < srad < 1| controls the serif radius. -% \begin{macrocode} -srad:=0.5; -% \end{macrocode} -% -% \DescribeVariable{o} -% Amount of overshoot for curves (as in an `o'). Use CMR values. -% \begin{macrocode} -% o#:=5/36pt#; -% o#:=8/36pt#; -% o#:=10/36pt#; - -% \end{macrocode} -% -% \DescribeVariable{slant} -% |slant| is the amount the font slopes to the right. -% \begin{macrocode} -slant:=0; % tilt ratio $(\Delta x/\Delta y)$ - -% \end{macrocode} -% -% \DescribeVariable{monospace} -% We are generating a variable-width font. -% \begin{macrocode} -monospace:=false; % should all characters have the same width? - -% \end{macrocode} -% -% \DescribeVariable{dot_size} -% The size of (punctuation) dots. -% \begin{macrocode} -dot_size#:=5thin#; % size of dots -% \end{macrocode} -% -% \DescribeVariable{comma_width} -% The horizontal width of a comma. -% \begin{macrocode} -comma_width#:=2.5dot_size#; - -% \end{macrocode} -% -% Finally, call the driver file for the font. -% \begin{macrocode} -generate auncltitle %% switch to the driver file - -% \end{macrocode} -% -% The end of this code section. -% \begin{macrocode} -% -% \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 UNCLTITLE.MF for the Artificial Uncial 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}{auncial_font_setup} -% This macro contains the set up for the \thisfont{} fonts. -% \begin{macrocode} - -def auncial_font_setup= % contains special stuff for auncial fonts - define_pixels(side,half_height,carol_height,comma_width); - define_pixels(u,dot_size,letter_size,cap_height,width_adj,serif_fit, - cap_serif_fit,jut,cap_jut); - define_pixels(fig_width); - define_whole_pixels(letter_fit); - define_whole_vertical_pixels(body_height,asc_height,cap_height,x_height, - desc_depth,body_depth,fig_height); - define_corrected_pixels(o); - define_blacker_pixels(thick,thin); - let adjust_fit = normal_adjust_fit; -% \end{macrocode} -% \DescribeVariable{stylus} -% The pen for drawing the thinnest lines is |stylus|. -% \begin{macrocode} - pickup pencircle scaled thin; - stylus:=savepen; -% \end{macrocode} -% \DescribeVariable{thickstylus} -% The pen for drawing lines a bit thicker than the thinnest is |thickstylus|. -% \begin{macrocode} - pickup pencircle scaled (1.5thin); - thickstylus:=savepen; -% \end{macrocode} -% \DescribeVariable{quill} -% The normal calligraphic pen is |quill|. -% \begin{macrocode} - pickup pencircle xscaled thick yscaled thin rotated pangle; - quill:=savepen; - numeric pcshiftx#; % x value of LHS of box wrt origin of char box - define_pixels(pcshiftx); - numeric sqxside#; % x size of the square - numeric sqyside#; % y size of the square - define_pixels(sqxside,sqyside); - -enddef; % end of auncial_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 $0y$$: - 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_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 -% \end{macrocode} -% -% \subsection{The code for normal letters} -% -% The following code is for the minuscule characters. -% -% \begin{macrocode} -%<*min> -% AUNCLL.MF Program file for Artificial Uncial minuscules -% - - -% \end{macrocode} -% -% -% \begin{routine}{a} -% The letter `a'. -% \begin{macrocode} -cmchar "AUncial letter a"; -beginchar("a", 2u#+hstretch*(x_height#+jut#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -lft x1=pcshiftx+2jut; rt x2=w-u-jut; -top y1=h; bot y2=0; -% for the bowl -z3=3/4[z2,z1]; -x5=lft x3; y5=bot y3; -z13=1/2[z2,z1]; -x15=lft x13; y15=bot y13; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_istem(1,2,srad); % the stem -pickup thickstylus; % for the bowl -lft x4=pcshiftx; bot y4=0; -z14=0.2[z4,z5]; -draw z14{pdir}...{z5-z4}z15; % bowl bottom -draw z5--z4; % bowl top -ductus:=false; -penlabels(1,2,3,4,5,6,14,15,100); -endchar; % end "a" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{b} -% The letter `b'. -% \begin{macrocode} -cmchar "AUncial letter b"; -beginchar("b", 2u#+hstretch*(x_height#+jut#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -lft x1=lft x2=pcshiftx+jut; -top y1=h; bot y2=0; -% lower bowl -rt x4=w-pcshiftx; y4=1/3h; -lft x5=rt x1+2thin; y5=2/3h; -z6=z1; -rt x7=0.67[x1,x4]; y7=y6; -x9=rt x7-thin; y9=h-thin; -x8=lft x5+thin; y8=bot y5+thin; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tlserif(1,2,srad); % the stem -draw z2{right}..z4{up}..{left}z5; % bottom bowl -draw z6--z7; % top bowl -pickup stylus; -draw z9--z8; -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 "AUncial letter c"; -beginchar("c", 2u#+hstretch*(x_height#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -lft x1=pcshiftx; rt x3=w-pcshiftx; y1=y3=h/2; -x2=x4=w/2; top y2=h; bot y4=0; -x5=x6=x3; -y5=0.1h; -top y6=0.95h; y6'=top y6; y6''=bot y6; x6''=lft x6; -% the serif -pickup stylus; -rt x16=w-pcshiftx; top y16=y6'; -x17=x6; y17=y16-jut; -lft x18=x6''; bot y18=y6''; -pickup quill; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z5{-pdir}..{left}z4..z1..z2..z6; -pickup stylus; -filldraw z17..z18--z16--cycle; -ductus:=false; -penlabels(1,2,3,4,5,6,16,17,18,100); -endchar; % end "c" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{d} -% The letter `d'. -% \begin{macrocode} -cmchar "AUncial letter d"; -beginchar("d", 2u#+hstretch*(4/3x_height#), 4/3x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -lft x1=pcshiftx; rt x3=w-pcshiftx; -x2=x4=w/2; top y2=3/4h; bot y4=0; -y1=y3=0.5[y4,y2]; -lft x5=pcshiftx; top y5=h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z2{-pdir}..z1{down}..z4{right}..z3{up}..z5; -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 "AUncial letter e"; -beginchar("e", 2u#+hstretch*(x_height#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -lft x1=pcshiftx; rt x3=w-pcshiftx; y1=y3=h/2; -x2=x4=w/2; top y2=h; bot y4=0; -x5=x6=x3; -y5=0.1h; -top y6=0.95h; y6'=top y6; y6''=bot y6; x6''=lft x6; -% the serif -pickup stylus; -rt x16=w-pcshiftx; top y16=y6'; -x17=x6; y17=y16-jut; -lft x18=x6''; bot y18=y6''; -pickup quill; -% the bar -x7=x1; y7=y1; -x8=w-pcshiftx; y8=y7; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z5{-pdir}..{left}z4..z1..z2..z6; % the bowl -pickup stylus; -filldraw z17..z18--z16--cycle; % the serif -draw_fork(7,8,jut); % the bar -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,10,16,17,18,100); -endchar; % end "e" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{f} -% The letter `f'. -% \begin{macrocode} -cmchar "AUncial letter f"; -beginchar("f", 2u#+hstretch*(x_height#), x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% stem -lft x1=lft x2=pcshiftx+jut; -top y1=h; bot y2=-d/2; -% bars -x3=x4=x1; y3=y1; bot y4=0; -rt x5= rt x6=w-pcshiftx; y5=y3; y6=y4; -% triangles -x15=x16=rt x5-1/2thin; -y15=y5; y16=y6; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tlserif(1,2,srad); % stem -draw_tail(2,jut); -draw z3--z5; % top bar -draw_rtriangle(15,jut); -draw z4--z6; % bottom bar -draw_rtriangle(16,jut); -ductus:=false; -penlabels(1,2,3,4,5,6,100); -endchar; % end "f" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{g} -% The letter `g'. -% \begin{macrocode} -cmchar "AUncial letter g"; -beginchar("g", 2u#+hstretch*(x_height#), x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% the bowl -lft x1=pcshiftx; rt x3=w-pcshiftx; y1=y3=h/2; -x2=x4=w/2; top y2=h; bot y4=0; -x5=x6=x3; -y5=0.1h; -top y6=0.95h; y6'=top y6; y6''=bot y6; x6''=lft x6; -% the serif -pickup stylus; -rt x16=w-pcshiftx; top y16=y6'; -x17=x6; y17=y16-jut; -lft x18=x6''; bot y18=y6''; -pickup quill; -% the stem -x7=rt x5-1/2thin; y7=top y5-1/2thin; -pickup stylus; -lft x8=w/2; bot y8=-d; -pickup quill; -pair vec[]; vec1:=z7-z8; vec2:=z8-z7; -y21=y8+3/2thick; z21=whatever[z8,z7]; -y22=y8+ thick; z22=whatever[z8,z7]; -x23=x8-thick; y23=y8; -x24=x23+1/2thick; y24=y23+1/2thick; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z5{-pdir}..{left}z4..z1..z2..z6; % the bowl -pickup stylus; -filldraw z17..z18--z16--cycle; % the serif -draw z7--z22; % the stem -filldraw z22{vec2}..{left}z23--z24{right}..{vec1}z21--cycle; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,16,17,18,21,22,23,24,100); -endchar; % end "g" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{h} -% The letter `h'. -% \begin{macrocode} -cmchar "AUncial letter h"; -beginchar("h", 2u#+hstretch*(x_height#+jut#), asc_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -lft x1=lft x2=pcshiftx+jut; -top y1=h; bot y2=0; -% bowl -rt x5=w-pcshiftx; y5=3/8h; -lft x6=2/3w; bot y6=0; -x4=0.5[x1,x5]; top y4=3/4h; -x4'=0.5[x4,x1]; y4'=y4; -z4''=z4' shifted (-w*pdir); -z3'=whatever[z4',z4'']=whatever[z1,z2]; -x3=rt x3'; y3=y3'; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_istem(1,2,srad); % stem -draw z3{pdir}..z4{right}..z5{down}..z6; % bowl -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 "AUncial letter i"; -beginchar("i", 2u#+hstretch*(thick#+jut#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -lft x1=lft x2=pcshiftx+jut; -top y1=h; bot y2=0; -%%ductus:=true; -draw_tlserif(1,2,srad); -draw_tail(2,jut); -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 "AUncial letter j"; -beginchar("j", 2u#+hstretch*(thick#+jut#), x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -lft x1=lft x2=pcshiftx+jut; -top y1=h; bot y2=-1/2d; -%%ductus:=true; -draw_tlserif(1,2,srad); -draw_tail(2,jut); -ductus:=false; -penlabels(1,2,100); -endchar; % end "j" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{k} -% The letter `k'. -% \begin{macrocode} -cmchar "AUncial letter k"; -beginchar("k", 2u#+hstretch*(4/3x_height#), asc_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -lft x1=lft x2=pcshiftx+jut; -top y1=h; bot y2=0; -% for the flick -numeric rise,fall,fjut; -x3=rt x1; y3=5/8h; -rise:=1/6h; fall:=-rise/2; fjut:=1/2w; -% for the leg -%%x4=x1; y4=y3; -z4=z3; -x5=w-pcshiftx-jut; y5=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tlserif(1,2,srad); % stem -draw_tail(2,jut); -draw_flick(3,rise,fall,fjut); % upper diag -draw_tstem(4,5,srad); % lower diag -ductus:=false; -penlabels(1,2,3,4,5,100); -endchar; % end "k" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{l} -% The letter `l'. -% \begin{macrocode} -cmchar "AUncial letter l"; -beginchar("l", 2u#+hstretch*(x_height#), asc_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -lft x1=lft x2=pcshiftx+jut; -top y1=h; bot y2=0; -z3=z2; -x4=w-u; y4=0; -%%ductus:=true; -draw_tlserif(1,2,srad); % the stem -draw_fork(3,4,jut); % the foot -ductus:=false; -penlabels(1,2,3,4,100); -endchar; % end "l" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{m} -% The letter `m'. -% \begin{macrocode} -cmchar "AUncial letter m"; -beginchar("m", 2u#+hstretch*(2x_height#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -rt x1=1/4w; bot y1=0; -lft x2= pcshiftx; y2=h/2; -x4=w/2; y4=2/3h; -x3=0.5[x2,x4]; top y3=h; -x5=x4; y5=y1; -z6=z4; -x7=3/4w; top y7=h; -rt x8=w-pcshiftx; y8=y2; -lft x9=3/4w; y9=y1; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1..z2{up}..z3{right}..{down}z4; % left half -draw_tstem(4,5,srad); % middle stem -draw z6..z7{right}..z8{down}..{-pdir}z9; % right half -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,100); -endchar; % end "m" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{n} -% The letter `n'. -% \begin{macrocode} -cmchar "AUncial letter n"; -beginchar("n", 2u#+hstretch*(2jut#+x_height#), x_height#, 0.5desc_depth#); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% left stem -lft x1=pcshiftx+jut; top y1=h; -x2=x1; bot y2=0; -% right stem -rt x4=w-pcshiftx-jut; y4=y1; -x3=x4; bot y3=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tlserif(1,2,srad); % left stem -draw_tail(2,jut); -draw_istem(4,3,srad); % right stem -draw z1--z3; % diagonal -ductus:=false; -penlabels(1,2,3,4,100); -endchar; % end "n" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{o} -% The letter `o'. -% \begin{macrocode} -cmchar "AUncial letter o"; -beginchar("o", 2u#+hstretch*(7/6x_height#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -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 "o" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{p} -% The letter `p'. -% \begin{macrocode} -cmchar "AUncial letter p"; -beginchar("p", 2u#+hstretch*(7/6x_height#), x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% stem -lft x1=lft x2=pcshiftx+jut; top y1=h; bot y2=-1/2d; -% bowl -z3=z1; -rt x5=w-pcshiftx; y5=1/2h; -lft x7=rt x1; bot y7=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tlserif(1,2,srad); % stem -draw_tail(2,jut); -draw z3{pdir}..z5{down}..{-pdir}z7; % bowl -ductus:=false; -penlabels(1,2,3,4,5,6,7,100); -endchar; % end "p" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{q} -% The letter `q'. -% \begin{macrocode} -cmchar "AUncial letter q"; -beginchar("q", 2u#+hstretch*(7/6x_height#), x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% right stem -rt x1=rt x2=w-pcshiftx; top y1=h; bot y2=-1/2d; -% bowl -z3=z1; -lft x5=pcshiftx; y5=1/2h; -rt x7=lft x1; y7=0.1h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2; % right stem -draw_tail(2,jut); -draw z3{left}..z5{down}..{pdir}z7; % bowl -ductus:=false; -penlabels(1,2,3,4,5,6,7,100); -endchar; % end "q" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{r} -% The letter `r'. -% \begin{macrocode} -cmchar "AUncial letter r"; -beginchar("r", 2u#+hstretch*(4/3x_height#), x_height#, 1/2desc_depth#); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% stem -lft x1=lft x2=pcshiftx+jut; top y1=h; bot y2=0; -% bowl -lft x3=rt x1-thin; y3=y1; -rt x5=3/4w; y5=3/4h; -lft x7=rt x1; bot y7=1/3h; -% leg -z8=z7; -rt x9=w-pcshiftx; bot y9=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tlserif(1,2,srad); % stem -draw_tail(2,jut); -draw z3{pdir}..z5{down}..{-pdir}z7; % bowl -draw z8{-ppdir}..{right}z9; % leg -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 "AUncial letter s"; -beginchar("s", 2u#+hstretch*(x_height#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -rt x1=w-pcshiftx; top y1=h-thin; -x2=w/2; top y2=h; -lft x3=pcshiftx; y3=0.75h; -x4=w/2; y4=h/2; -rt x5=w-pcshiftx; y5=0.25h; -x6=w/2; bot y6=0; -lft x7= pcshiftx; bot y7 = thin; -path p[]; -p1=z1..z2{left}..z3{down}..z4..z5{down}..z6{left}..z7; -pair vec[]; -vec1= direction 0 of p1; -vec2= direction (length p1) of p1; -z11=z1 shifted vec1; -z17=z7 shifted -vec2; -y6'=top y1; y6''=bot y1; x6''=lft x1; -% the serif -pickup stylus; -rt x26=w-pcshiftx; top y26=y6'; -x27=x1; y27=y26-0.75jut; -lft x28=x6''; bot y28=y6''; -pickup quill; -%%ductus:=true; -if ductus: - pickup stylus; -fi -%%draw_serif(1,11,srad); -%%draw_serif(7,17,srad); -%%draw z1a..z2{left}..z3{down}..z4..z5{down}..z6{left}..z7a; -draw p1; % the curve -pickup stylus; -filldraw z27..z28--z26--cycle; % the serif -ductus:=false; -penlabels(1,2,3,4,5,6,7,11,17,26,27,28,100); -endchar; % end "s" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{t} -% The letter `t'. -% \begin{macrocode} -cmchar "AUncial letter t"; -beginchar("t", 2u#+hstretch*(4/3x_height#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -numeric alpha; alpha:=0.5jut; -pickup quill; -x1=x2=w/2; -top y1=h; bot y2=0; -lft x3=pcshiftx; rt x4=w-pcshiftx; y3=y4=y1; -x5=pcshiftx+alpha; y5=h-1/2thin; -x6=w-pcshiftx-1/2thin; y6=y5; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw z3--z4; % top bar -draw_triangle(5,2alpha); draw_rtriangle(6,2alpha); -ductus:=false; -penlabels(1,2,3,4,5,100); -endchar; % end "t" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{u} -% The letter `u'. -% \begin{macrocode} -cmchar "AUncial letter u"; -beginchar("u", 2u#+hstretch*(4/3x_height#+jut#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% left half first -lft x6=pcshiftx+jut; -top y6=h-2thin; -lft x7=pcshiftx; y7=h/2; -x8=0.5[x6,x1]; bot y8=0; -% the stem -rt x1=w-pcshiftx-jut; top y1=h; -x2=x1; bot y2=0; -% construction points for the curved part -x5=0.5[x8,x1]; y5=y8; -z5'=z5 shifted (w*pdir); -path p[]; -p1=z5--z5'; -p2=z1--z2; -z9= p2 intersectionpoint p1; -pair vec[]; -p3=z6..z7{down}..{right}z8; -vec3 = direction 0 of p3; -z16=z6 shifted vec3; -%%ductus:=true; -if ductus: - pickup stylus; -fi -% draw the serifs, then the bowls -draw_serif(6,16,srad); % left half -draw z6a..z7{down}..z8{right}..{pdir}z9; -draw_istem(1,2,srad); % right stem -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,11,16,100); -endchar; % end "u" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{v} -% The letter `v'. The right half of the `w' is used for the `v' (or vice-versa -% if you prefer). -% \begin{macrocode} -cmchar "AUncial letter v"; -beginchar("v", 2u#+hstretch*(7/6x_height#+jut#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% right side of W -numeric midx; midx:= pcshiftx; -lft x1=midx+jut; top y1=h; -x2=x1; y2=h/2; -rt x4=w-pcshiftx; y4=y2; -x3=0.5[x2,x4]; bot y3=0; -x5=x4-thick; y5=y1; -%%ductus:=true; -if ductus: - pickup stylus; -fi -% draw the serifs, then the bowls -draw_tlserif(1,2,srad); -draw z2{down}..z3{right}..z4{up}..z5; -ductus:=false; -penlabels(1,2,3,4,5,11,100); -endchar; % end "v" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{w} -% The letter `w'. This is a modern version as the font did not have a W. -% \begin{macrocode} -cmchar "AUncial letter w"; -beginchar("w", 2u#+hstretch*(2x_height#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% right side first -numeric midx; midx:= w/2-jut; -lft x1=midx+jut; top y1=h; -x2=x1; y2=h/2; -rt x4=w-pcshiftx; y4=y2; -x3=0.5[x2,x4]; bot y3=0; -x5=x4-thick; y5=y1; -% left side -lft x6=pcshiftx+jut; -top y6=h-2thin; -lft x7=pcshiftx; y7=y2; -x8=0.5[x7,x1]; y8=y3; -% construction points -x15=0.5[x8,x1]; y15=y8; -z15'=z15 shifted (w*pdir); -x2'=x2; y2'=y15; -path p[]; -p1=z1--z2'; -p2=z15--z15'; -z9= p2 intersectionpoint p1; -pair vec[]; -p3=z6..z7{down}..{right}z8; -vec3 = direction 0 of p3; -z16=z6 shifted vec3; -%%ductus:=true; -if ductus: - pickup stylus; -fi -% draw the serifs, then the bowls -draw_tlserif(1,2,srad); % right half -draw z2{down}..z3{right}..z4{up}..z5; -draw_serif(6,16,srad); % left half -draw z6a..z7{down}..z8{right}..z9; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,11,16,100); -endchar; % end "w" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{x} -% The letter `x'. -% \begin{macrocode} -cmchar "AUncial letter x"; -beginchar("x", 2u#+hstretch*(4/3x_height#+jut#), x_height#, 1/2desc_depth#); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% thick diagonal -lft x1=pcshiftx+jut; rt x2=w-pcshiftx-jut; -y1=h; y2=0; -% thin diagonal -lft x3=pcshiftx; bot y3=-d; -rt x5=w-pcshiftx; top y5=h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_istem(1,2,srad); % thick diagonal -draw z3..{pdir}z5; % thin diagonal -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,100); -endchar; % end "x" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{y} -% The letter `y'. This has a dot on top! -% \begin{macrocode} -cmchar "AUncial letter y"; -beginchar("y", 2u#+hstretch*(4/3x_height#), x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% left stroke -lft x1=pcshiftx+jut; top y1=h; -rt x2=3/4w; top y2=0; -% right stroke -pickup stylus; -rt x3=w-pcshiftx; top y3=h; -lft x4=pcshiftx; bot y4=-d; -x5=x3-3thin; y5=y3; -x7=x2-3/2thin; y7=y2; -pickup quill; -% the dot -x8=w/2; y8=h+jut; -if ductus: - pickup stylus; -fi -draw_tlserif(1,2,srad); % left stroke -draw_pdot(8,dot_size); % the dot -pickup stylus; -filldraw z3..z2..z4 & z4..z7..z5--cycle; % right stroke -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 "AUncial letter z"; -beginchar("z", 2u#+hstretch*(7/6x_height#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% bottom stroke -lft x4=pcshiftx; bot y4=0; -x6=w-pcshiftx; y6=0; -% top stroke -x1=x4; top y1=h; -rt x3=6/7w; y3=y1; -x11=pcshiftx+0.5jut; y11=h-thin/2; % y11=h-thin; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z3; % top stroke -draw_triangle(11,jut); -draw_fork(4,6,jut); -draw z4--z3; % diagonal -ductus:=false; -penlabels(1,2,3,4,5,6,100); -endchar; % end "z" - -% \end{macrocode} -% \end{routine} -% -% -% The end of this file -% \begin{macrocode} -% -% \end{macrocode} -% -% -% \subsection{The code for capital letters} -% -% \thisfont{} `capitals' were drawn with the same pen as for the minuscules, -% and the letters were merely larger versions of the minuscules. -% -% \begin{macrocode} -%<*maj> -% AUNCLU.MF Program file for Artificial Uncial `capitals' -% - -% \end{macrocode} -% -% -% \begin{routine}{A} -% The letter `A'. -% \begin{macrocode} -cmchar "AUncial letter A"; -beginchar("A", 2u#+hstretch*caprat*(x_height#+jut#), caprat*(x_height#), 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -lft x1=pcshiftx+2jut; rt x2=w-u-jut; -top y1=h; bot y2=0; -% for the bowl -z3=3/4[z2,z1]; -x5=lft x3; y5=bot y3; -z13=1/2[z2,z1]; -x15=lft x13; y15=bot y13; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_istem(1,2,srad); % the stem -pickup thickstylus; % for the bowl -lft x4=pcshiftx; bot y4=0; -z14=0.2[z4,z5]; -draw z14{pdir}...{z5-z4}z15; % bowl bottom -draw z5--z4; % bowl top -ductus:=false; -penlabels(1,2,3,4,5,6,14,15,100); -endchar; % end "A" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{B} -% The letter `B'. -% \begin{macrocode} -cmchar "AUncial letter B"; -beginchar("B", 2u#+hstretch*caprat*(x_height#+jut#), caprat*(x_height#), 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -lft x1=lft x2=pcshiftx+jut; -top y1=h; bot y2=0; -% lower bowl -rt x4=w-pcshiftx; y4=1/3h; -lft x5=rt x1+2thin; y5=2/3h; -z6=z1; -rt x7=0.67[x1,x4]; y7=y6; -x9=rt x7-thin; y9=h-thin; -x8=lft x5+thin; y8=bot y5+thin; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tlserif(1,2,srad); % the stem -draw z2{right}..z4{up}..{left}z5; % bottom bowl -draw z6--z7; % top bowl -pickup stylus; -draw z9--z8; -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 "AUncial letter C"; -beginchar("C", 2u#+hstretch*caprat*(x_height#), caprat*(x_height#), 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -lft x1=pcshiftx; rt x3=w-pcshiftx; y1=y3=h/2; -x2=x4=w/2; top y2=h; bot y4=0; -x5=x6=x3; -y5=0.1h; -top y6=0.95h; y6'=top y6; y6''=bot y6; x6''=lft x6; -% the serif -pickup stylus; -rt x16=w-pcshiftx; top y16=y6'; -x17=x6; y17=y16-jut; -lft x18=x6''; bot y18=y6''; -pickup quill; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z5{-pdir}..{left}z4..z1..z2..z6; -pickup stylus; -filldraw z17..z18--z16--cycle; -ductus:=false; -penlabels(1,2,3,4,5,6,16,17,18,100); -endchar; % end "C" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{D} -% The letter `D'. -% \begin{macrocode} -cmchar "AUncial letter D"; -beginchar("D", 2u#+hstretch*caprat*(4/3x_height#), caprat*(4/3x_height#), 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -lft x1=pcshiftx; rt x3=w-pcshiftx; -x2=x4=w/2; top y2=3/4h; bot y4=0; -y1=y3=0.5[y4,y2]; -lft x5=pcshiftx; top y5=h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z2{-pdir}..z1{down}..z4{right}..z3{up}..z5; -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 "AUncial letter E"; -beginchar("E", 2u#+hstretch*caprat*(x_height#), caprat*(x_height#), 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -lft x1=pcshiftx; rt x3=w-pcshiftx; y1=y3=h/2; -x2=x4=w/2; top y2=h; bot y4=0; -x5=x6=x3; -y5=0.1h; -top y6=0.95h; y6'=top y6; y6''=bot y6; x6''=lft x6; -% the serif -pickup stylus; -rt x16=w-pcshiftx; top y16=y6'; -x17=x6; y17=y16-jut; -lft x18=x6''; bot y18=y6''; -pickup quill; -% the bar -x7=x1; y7=y1; -x8=w-pcshiftx; y8=y7; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z5{-pdir}..{left}z4..z1..z2..z6; % the bowl -pickup stylus; -filldraw z17..z18--z16--cycle; % the serif -draw_fork(7,8,jut); % the bar -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,10,16,17,18,100); -endchar; % end "E" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{F} -% The letter `F'. -% \begin{macrocode} -cmchar "AUncial letter F"; -beginchar("F", 2u#+hstretch*caprat*(x_height#), caprat*(x_height#), - caprat*(desc_depth#)); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% stem -lft x1=lft x2=pcshiftx+jut; -top y1=h; bot y2=-d/2; -% bars -x3=x4=x1; y3=y1; bot y4=0; -rt x5= rt x6=w-pcshiftx; y5=y3; y6=y4; -% triangles -x15=x16=rt x5-1/2thin; -y15=y5; y16=y6; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tlserif(1,2,srad); % stem -draw_tail(2,jut); -draw z3--z5; % top bar -draw_rtriangle(15,jut); -draw z4--z6; % bottom bar -draw_rtriangle(16,jut); -ductus:=false; -penlabels(1,2,3,4,5,6,100); -endchar; % end "F" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{G} -% The letter `G'. -% \begin{macrocode} -cmchar "AUncial letter G"; -beginchar("G", 2u#+hstretch*caprat*(x_height#), caprat*(x_height#), - caprat*(desc_depth#)); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% the bowl -lft x1=pcshiftx; rt x3=w-pcshiftx; y1=y3=h/2; -x2=x4=w/2; top y2=h; bot y4=0; -x5=x6=x3; -y5=0.1h; -top y6=0.95h; y6'=top y6; y6''=bot y6; x6''=lft x6; -% the serif -pickup stylus; -rt x16=w-pcshiftx; top y16=y6'; -x17=x6; y17=y16-jut; -lft x18=x6''; bot y18=y6''; -pickup quill; -% the stem -x7=rt x5-1/2thin; y7=top y5-1/2thin; -pickup stylus; -lft x8=w/2; bot y8=-d; -pickup quill; -pair vec[]; vec1:=z7-z8; vec2:=z8-z7; -y21=y8+3/2thick; z21=whatever[z8,z7]; -y22=y8+ thick; z22=whatever[z8,z7]; -x23=x8-thick; y23=y8; -x24=x23+1/2thick; y24=y23+1/2thick; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z5{-pdir}..{left}z4..z1..z2..z6; % the bowl -pickup stylus; -filldraw z17..z18--z16--cycle; % the serif -draw z7--z22; % the stem -filldraw z22{vec2}..{left}z23--z24{right}..{vec1}z21--cycle; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,16,17,18,21,22,23,24,100); -endchar; % end "G" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{H} -% The letter `H'. -% \begin{macrocode} -cmchar "AUncial letter H"; -beginchar("H", 2u#+hstretch*caprat*(x_height#+jut#), caprat*(asc_height#), 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -lft x1=lft x2=pcshiftx+jut; -top y1=h; bot y2=0; -% bowl -rt x5=w-pcshiftx; y5=3/8h; -lft x6=2/3w; bot y6=0; -x4=0.5[x1,x5]; top y4=3/4h; -x4'=0.5[x4,x1]; y4'=y4; -z4''=z4' shifted (-w*pdir); -z3'=whatever[z4',z4'']=whatever[z1,z2]; -x3=rt x3'; y3=y3'; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_istem(1,2,srad); % stem -draw z3{pdir}..z4{right}..z5{down}..z6; % bowl -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 "AUncial letter I"; -beginchar("I", 2u#+hstretch*(thick#+jut#), caprat*(x_height#), 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -lft x1=lft x2=pcshiftx+jut; -top y1=h; bot y2=0; -%%ductus:=true; -draw_tlserif(1,2,srad); -draw_tail(2,jut); -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 "AUncial letter J"; -beginchar("J", 2u#+hstretch*(thick#+jut#), caprat*(x_height#), - caprat*(desc_depth#)); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -lft x1=lft x2=pcshiftx+jut; -top y1=h; bot y2=-1/2d; -%%ductus:=true; -draw_tlserif(1,2,srad); -draw_tail(2,jut); -ductus:=false; -penlabels(1,2,100); -endchar; % end "J" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{K} -% The letter `K'. -% \begin{macrocode} -cmchar "AUncial letter K"; -beginchar("K", 2u#+hstretch*caprat*(4/3x_height#), caprat*(asc_height#), 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -lft x1=lft x2=pcshiftx+jut; -top y1=h; bot y2=0; -% for the flick -numeric rise,fall,fjut; -x3=rt x1; y3=5/8h; -rise:=1/6h; fall:=-rise/2; fjut:=1/2w; -% for the leg -%%x4=x1; y4=y3; -z4=z3; -x5=w-pcshiftx-jut; y5=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tlserif(1,2,srad); % stem -draw_tail(2,jut); -draw_flick(3,rise,fall,fjut); % upper diag -draw_tstem(4,5,srad); % lower diag -ductus:=false; -penlabels(1,2,3,4,5,100); -endchar; % end "K" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{L} -% The letter `L'. -% \begin{macrocode} -cmchar "AUncial letter L"; -beginchar("L", 2u#+hstretch*caprat*(x_height#), caprat*(asc_height#), 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -lft x1=lft x2=pcshiftx+jut; -top y1=h; bot y2=0; -z3=z2; -x4=w-u; y4=0; -%%ductus:=true; -draw_tlserif(1,2,srad); % the stem -draw_fork(3,4,jut); % the foot -ductus:=false; -penlabels(1,2,3,4,100); -endchar; % end "L" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{M} -% The letter `M'. -% \begin{macrocode} -cmchar "AUncial letter M"; -beginchar("M", 2u#+hstretch*caprat*(2x_height#), caprat*(x_height#), 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -rt x1=1/4w; bot y1=0; -lft x2= pcshiftx; y2=h/2; -x4=w/2; y4=2/3h; -x3=0.5[x2,x4]; top y3=h; -x5=x4; y5=y1; -z6=z4; -x7=3/4w; top y7=h; -rt x8=w-pcshiftx; y8=y2; -lft x9=3/4w; y9=y1; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1..z2{up}..z3{right}..{down}z4; % left half -draw_tstem(4,5,srad); % middle stem -draw z6..z7{right}..z8{down}..{-pdir}z9; % right half -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,100); -endchar; % end "M" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{N} -% The letter `N'. -% \begin{macrocode} -cmchar "AUncial letter N"; -beginchar("N", 2u#+hstretch*caprat*(2jut#+x_height#), caprat*(x_height#), - caprat*(0.5desc_depth#)); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% left stem -lft x1=pcshiftx+jut; top y1=h; -x2=x1; bot y2=0; -% right stem -rt x4=w-pcshiftx-jut; y4=y1; -x3=x4; bot y3=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tlserif(1,2,srad); % left stem -draw_tail(2,jut); -draw_istem(4,3,srad); % right stem -draw z1--z3; % diagonal -ductus:=false; -penlabels(1,2,3,4,100); -endchar; % end "N" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{O} -% The letter `O'. -% \begin{macrocode} -cmchar "AUncial letter O"; -beginchar("O", 2u#+hstretch*caprat*(7/6x_height#), caprat*(x_height#), 0); -adjust_fit(0,0); -pcshiftx := u; -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 "O" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{P} -% The letter `P'. -% \begin{macrocode} -cmchar "AUncial letter P"; -beginchar("P", 2u#+hstretch*caprat*(7/6x_height#), caprat*(x_height#), - caprat*(desc_depth#)); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% stem -lft x1=lft x2=pcshiftx+jut; top y1=h; bot y2=-1/2d; -% bowl -z3=z1; -rt x5=w-pcshiftx; y5=1/2h; -lft x7=rt x1; bot y7=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tlserif(1,2,srad); % stem -draw_tail(2,jut); -draw z3{pdir}..z5{down}..{-pdir}z7; % bowl -ductus:=false; -penlabels(1,2,3,4,5,6,7,100); -endchar; % end "P" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{Q} -% The letter `Q'. -% \begin{macrocode} -cmchar "AUncial letter Q"; -beginchar("Q", 2u#+hstretch*caprat*(7/6x_height#), caprat*(x_height#), - caprat*(desc_depth#)); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% right stem -rt x1=rt x2=w-pcshiftx; top y1=h; bot y2=-1/2d; -% bowl -z3=z1; -lft x5=pcshiftx; y5=1/2h; -rt x7=lft x1; y7=0.1h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2; % right stem -draw_tail(2,jut); -draw z3{left}..z5{down}..{pdir}z7; % bowl -ductus:=false; -penlabels(1,2,3,4,5,6,7,100); -endchar; % end "Q" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{R} -% The letter `R'. -% \begin{macrocode} -cmchar "AUncial letter R"; -beginchar("R", 2u#+hstretch*caprat*(4/3x_height#), caprat*(x_height#), - caprat*(1/2desc_depth#)); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% stem -lft x1=lft x2=pcshiftx+jut; top y1=h; bot y2=0; -% bowl -lft x3=rt x1-thin; y3=y1; -rt x5=3/4w; y5=3/4h; -lft x7=rt x1; bot y7=1/3h; -% leg -z8=z7; -rt x9=w-pcshiftx; bot y9=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tlserif(1,2,srad); % stem -draw_tail(2,jut); -draw z3{pdir}..z5{down}..{-pdir}z7; % bowl -draw z8{-ppdir}..{right}z9; % leg -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 "AUncial letter S"; -beginchar("S", 2u#+hstretch*caprat*(x_height#), caprat*(x_height#), 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -rt x1=w-pcshiftx; top y1=h-thin; -x2=w/2; top y2=h; -lft x3=pcshiftx; y3=0.75h; -x4=w/2; y4=h/2; -rt x5=w-pcshiftx; y5=0.25h; -x6=w/2; bot y6=0; -lft x7= pcshiftx; bot y7 = thin; -path p[]; -p1=z1..z2{left}..z3{down}..z4..z5{down}..z6{left}..z7; -pair vec[]; -vec1= direction 0 of p1; -vec2= direction (length p1) of p1; -z11=z1 shifted vec1; -z17=z7 shifted -vec2; -y6'=top y1; y6''=bot y1; x6''=lft x1; -% the serif -pickup stylus; -rt x26=w-pcshiftx; top y26=y6'; -x27=x1; y27=y26-0.75jut; -lft x28=x6''; bot y28=y6''; -pickup quill; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw p1; % the curve -pickup stylus; -filldraw z27..z28--z26--cycle; % the serif -ductus:=false; -penlabels(1,2,3,4,5,6,7,11,17,26,27,28,100); -endchar; % end "S" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{T} -% The letter `T'. -% \begin{macrocode} -cmchar "AUncial letter T"; -beginchar("T", 2u#+hstretch*caprat*(4/3x_height#), caprat*(x_height#), 0); -adjust_fit(0,0); -pcshiftx := u; -numeric alpha; alpha:=0.5jut; -pickup quill; -x1=x2=w/2; -top y1=h; bot y2=0; -lft x3=pcshiftx; rt x4=w-pcshiftx; y3=y4=y1; -x5=pcshiftx+alpha; y5=h-1/2thin; -x6=w-pcshiftx-1/2thin; y6=y5; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw z3--z4; % top bar -draw_triangle(5,2alpha); draw_rtriangle(6,2alpha); -ductus:=false; -penlabels(1,2,3,4,5,100); -endchar; % end "T" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{U} -% The letter `U'. -% \begin{macrocode} -cmchar "AUncial letter U"; -beginchar("U", 2u#+hstretch*caprat*(4/3x_height#+jut#), caprat*(x_height#), 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% left half first -lft x6=pcshiftx+jut; -top y6=h-2thin; -lft x7=pcshiftx; y7=h/2; -x8=0.5[x6,x1]; bot y8=0; -% the stem -rt x1=w-pcshiftx-jut; top y1=h; -x2=x1; bot y2=0; -% construction points for the curved part -x5=0.5[x8,x1]; y5=y8; -z5'=z5 shifted (w*pdir); -path p[]; -p1=z5--z5'; -p2=z1--z2; -z9= p2 intersectionpoint p1; -pair vec[]; -p3=z6..z7{down}..{right}z8; -vec3 = direction 0 of p3; -z16=z6 shifted vec3; -%%ductus:=true; -if ductus: - pickup stylus; -fi -% draw the serifs, then the bowls -draw_serif(6,16,srad); % left half -draw z6a..z7{down}..z8{right}..{pdir}z9; -draw_istem(1,2,srad); % right stem -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,11,16,100); -endchar; % end "U" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{V} -% The letter `V'. The right half of the `w' is used for the `v' (or vice-versa -% if you prefer). -% \begin{macrocode} -cmchar "AUncial letter V"; -beginchar("V", 2u#+hstretch*caprat*(7/6x_height#+jut#), caprat*(x_height#), 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% right side of W -numeric midx; midx:= pcshiftx; -lft x1=midx+jut; top y1=h; -x2=x1; y2=h/2; -rt x4=w-pcshiftx; y4=y2; -x3=0.5[x2,x4]; bot y3=0; -x5=x4-thick; y5=y1; -%%ductus:=true; -if ductus: - pickup stylus; -fi -% draw the serifs, then the bowls -draw_tlserif(1,2,srad); -draw z2{down}..z3{right}..z4{up}..z5; -ductus:=false; -penlabels(1,2,3,4,5,11,100); -endchar; % end "V" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{W} -% The letter `W'. This is a modern version as the font did not have a W. -% \begin{macrocode} -cmchar "AUncial letter W"; -beginchar("W", 2u#+hstretch*caprat*(2x_height#), caprat*(x_height#), 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% right side first -numeric midx; midx:= w/2-jut; -lft x1=midx+jut; top y1=h; -x2=x1; y2=h/2; -rt x4=w-pcshiftx; y4=y2; -x3=0.5[x2,x4]; bot y3=0; -x5=x4-thick; y5=y1; -% left side -lft x6=pcshiftx+jut; -top y6=h-2thin; -lft x7=pcshiftx; y7=y2; -x8=0.5[x7,x1]; y8=y3; -% construction points -x15=0.5[x8,x1]; y15=y8; -z15'=z15 shifted (w*pdir); -x2'=x2; y2'=y15; -path p[]; -p1=z1--z2'; -p2=z15--z15'; -z9= p2 intersectionpoint p1; -pair vec[]; -p3=z6..z7{down}..{right}z8; -vec3 = direction 0 of p3; -z16=z6 shifted vec3; -%%ductus:=true; -if ductus: - pickup stylus; -fi -% draw the serifs, then the bowls -draw_tlserif(1,2,srad); % right half -draw z2{down}..z3{right}..z4{up}..z5; -draw_serif(6,16,srad); % left half -draw z6a..z7{down}..z8{right}..z9; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,11,16,100); -endchar; % end "W" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{X} -% The letter `X'. -% \begin{macrocode} -cmchar "AUncial letter X"; -beginchar("X", 2u#+hstretch*caprat*(4/3x_height#+jut#), caprat*(x_height#), - caprat*(1/2desc_depth#)); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% thick diagonal -lft x1=pcshiftx+jut; rt x2=w-pcshiftx-jut; -y1=h; y2=0; -% thin diagonal -lft x3=pcshiftx; bot y3=-d; -rt x5=w-pcshiftx; top y5=h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_istem(1,2,srad); % thick diagonal -draw z3..{pdir}z5; % thin diagonal -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,100); -endchar; % end "X" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{Y} -% The letter `Y'. This has a dot on top! -% \begin{macrocode} -cmchar "AUncial letter Y"; -beginchar("Y", 2u#+hstretch*caprat*(4/3x_height#), caprat*(x_height#), - caprat*(desc_depth#)); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% left stroke -lft x1=pcshiftx+jut; top y1=h; -rt x2=3/4w; top y2=0; -% right stroke -pickup stylus; -rt x3=w-pcshiftx; top y3=h; -lft x4=pcshiftx; bot y4=-d; -x5=x3-3thin; y5=y3; -x7=x2-3/2thin; y7=y2; -pickup quill; -% the dot -x8=w/2; y8=h+jut; -if ductus: - pickup stylus; -fi -draw_tlserif(1,2,srad); % left stroke -draw_pdot(8,dot_size); % the dot -pickup stylus; -filldraw z3..z2..z4 & z4..z7..z5--cycle; % right stroke -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 "AUncial letter Z"; -beginchar("Z", 2u#+hstretch*caprat*(7/6x_height#), caprat*(x_height#), 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% bottom stroke -lft x4=pcshiftx; bot y4=0; -x6=w-pcshiftx; y6=0; -% top stroke -x1=x4; top y1=h; -rt x3=6/7w; y3=y1; -x11=pcshiftx+0.5jut; y11=h-thin/2; % y11=h-thin; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z3; % top stroke -draw_triangle(11,jut); -draw_fork(4,6,jut); -draw z4--z3; % diagonal -ductus:=false; -penlabels(1,2,3,4,5,6,100); -endchar; % end "Z" - -% \end{macrocode} -% \end{routine} -% -% -% -% -% The end of this file -% \begin{macrocode} -% -% \end{macrocode} -% -% -% -% \subsection{The punctuation file} -% -% The main punctuation marks are defined in this file. -% -% \begin{macrocode} -%<*punct> -% AUNCLPUNCT.MF This file contains punctuation marks - -% \end{macrocode} -% -% -% \begin{routine}{,} -% The `,' character. -% \begin{macrocode} - -cmchar "Uncial Comma"; -beginchar(",",2u#+hstretch*(comma_width#+dot_size#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=u; -x1=w-pcshiftx-(0.5hstretch*dot_size); y1=h/2; -draw_pcomma(1,dot_size,comma_width); -penlabels(1); -endchar; % end of "," - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{.} -% The `.' character. -% \begin{macrocode} - -cmchar "Uncial Period"; -beginchar(".",2u#+hstretch*(dot_size#),x_height#,0); -pcshiftx:=u; -x1=w/2; y1=h/2; -draw_pdot(1,dot_size); -penlabels(1); -endchar; % end of "." - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{:} -% The `:' character. -% \begin{macrocode} - -cmchar "Uncial Colon"; -beginchar(":",2u#+hstretch*(dot_size#),x_height#,0); -pcshiftx:=u; -x1=x2=w/2; y1=2/3h; y2=1/3h; -draw_pdot(1,dot_size); -draw_pdot(2,dot_size); -penlabels(1,2); -endchar; % end ":" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{;} -% The `;' character. -% \begin{macrocode} - -cmchar "Uncial Semicolon"; -beginchar(";",2u#+hstretch*(comma_width#+dot_size#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=u; -x1=x2=w-pcshiftx-(0.5hstretch*dot_size); y1=2/3h; y2=1/3h; -draw_pdot(1,dot_size); -draw_pcomma(2,dot_size,comma_width); -penlabels(1,2); -endchar; % end of ";" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{'} -% The `'' character. -% \begin{macrocode} - -cmchar "Uncial Apostrophe"; -beginchar("'",2u#+hstretch*(comma_width#+dot_size#),4/3x_height#,0); -adjust_fit(0,0); -pcshiftx:=u; -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 "Uncial Reverse apostrophe"; -beginchar("`",2u#+hstretch*(comma_width#+dot_size#),4/3x_height#,0); -adjust_fit(0,0); -pcshiftx:=u; -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} -% -% \end{macrocode} -% -% -% \subsection{The ligatures and dashes file} -% -% The ligatured punctuation marks and dashes are defined in this file. -% \begin{macrocode} -%<*lig> -% AUNCLLIG.MF Uncial ligatured 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 "Uncial closing quotes"; -beginchar(oct"042",2u#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0); -adjust_fit(0,0); -pcshiftx:=u; -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 "Uncial opening quotes"; -beginchar(oct"134",2u#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0); -adjust_fit(0,0); -pcshiftx:=u; -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 `-' character. -% \begin{macrocode} - -cmchar "Uncial hyphen"; -beginchar("-",u#+hstretch*(0.8x_height#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=u/2; -numeric alpha; alpha:=w/8; -pickup quill; -lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; -x11=lft x1+alpha/2; y11=top y1-0.5thin; -x12=rt x2; y12=bot y1+0.5thin; -draw z1--z2; % bar -draw_triangle(11,alpha); -draw_rutriangle(12,alpha); -penlabels(1,2); -endchar; % end of "-" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{--} -% The -- ligature. -% \begin{macrocode} - -cmchar "Uncial en dash"; -beginchar(oct"173",u#+hstretch*(x_height#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=u/2; -numeric alpha; alpha:=w/8; -pickup quill; -lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; -x11=lft x1+alpha/2; y11=top y1-0.5thin; -x12=rt x2; y12=bot y1+0.5thin; -draw z1--z2; % bar -draw_triangle(11,alpha); -draw_rutriangle(12,alpha); -penlabels(1,2); -endchar; % end of "--" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{---} -% The `---' ligature. The em dash is twice the width of the en dash. -% \begin{macrocode} - -cmchar "Uncial em dash"; -beginchar(oct"174",u#+hstretch*(2x_height#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=u/2; -numeric alpha; alpha:=w/8; -pickup quill; -lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; -x11=lft x1+alpha/2; y11=top y1-0.5thin; -x12=rt x2; y12=bot y1+0.5thin; -draw z1--z2; % bar -draw_triangle(11,alpha); -draw_rutriangle(12,alpha); -penlabels(1,2); -endchar; % end of "---" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{&} -% The ampersand (which is really an `et' ligature). -% \begin{macrocode} - -cmchar "Uncial ampersand"; -beginchar("&", 2u#+hstretch*(7/4x_height#), x_height#, 0.5desc_depth#); -adjust_fit(0,0); -pcshiftx:=u; -numeric alpha; alpha:=4/7w-u; -pickup quill; -% for the e part -lft x1=pcshiftx; rt x3= alpha; y1=y3=h/2; -x2=x4=alpha/2; top y2=h; bot y4=0; -x5=x6=x3; -y5=0.1h; -top y6=0.95h; y6'=top y6; y6''=bot y6; x6''=lft x6; -pickup stylus; -rt x16=alpha; top y16=y6'; -x17=x6; y17=y16-jut; -lft x18=x6''; bot y18=y6''; -pickup quill; -% the bar -x7=x1; y7=y1; -x8=w-pcshiftx; y8=y7; -% the t part -lft x31=alpha+2thin; y31=y8; -x32=x31; bot y32=-d; -x33=rt x8-0.5thin; y33=top y31-0.5thin; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z5{-pdir}..{left}z4..z1..z2..z6; % the bowl -draw_tstem(31,32,srad); % t stem -draw z7--z8; % the (top) bar -draw_rtriangle(33,jut); % t bar serif -pickup stylus; -filldraw z17..z18--z16--cycle; % e serif -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,10,16,17,18,31,32,33); -endchar; % end of "&" - -% \end{macrocode} -% \end{routine} -% -% -% The end of this file. -% \begin{macrocode} -% -% \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> -% AUNCLDIG.MF Program file for Artificial Uncial digits -% - -% \end{macrocode} -% -% -% \begin{routine}{1} -% The digit `1'. -% \begin{macrocode} -cmchar "AUncial digit 1"; -beginchar("1", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -x1=x2=w/2; -y1=h; bot y2=0; -%%ductus:=true; -draw_tlserif(1,2,srad); -draw_tail(2,jut); -ductus:=false; -penlabels(1,2,100); -endchar; % end "1" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{2} -% The digit `2'. -% \begin{macrocode} -cmchar "AUncial digit 2"; -beginchar("2", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% stem -lft x1=pcshiftx; y1=3/4h; -x2=1/2w; top y2= h+o; -rt x3=w-pcshiftx; y3=3/4h; -% foot -lft x5=pcshiftx; bot y5=0; -rt x6=w-pcshiftx; y6=y5; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_fork(5,6,jut); % foot -draw z1{up}..z2{right}..z3{down}..{down}z5; % curve -ductus:=false; -penlabels(1,2,3,4,5,6,100); -endchar; % end "2" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{3} -% The digit `3'. -% \begin{macrocode} -cmchar "AUncial 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; x7=x6; -% y values -y3=1/4h; y10=3/4h; -y6=0.5[y3,y10]; y7=y6; -bot y4=-thin; top y9=h+thin; -y5=0.5[y4,y6]; -y8=0.5[y7,y9]; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z3{down}..z4{right}..z5{up}...{left}z6; % bottom bowl -draw z7{right}...z8{up}..z9{left}..{down}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 "AUncial digit 4"; -beginchar("4", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% the stem -x1=x2=w-pcshiftx-jut; -y1=h; bot y2=0; -% the crossbar -lft x3=pcshiftx; y3=0.33h; -rt x4=w-pcshiftx; y4=y3; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % main stem -draw_wave(3,4,thin); % crossbar -draw z3wl--z1; % diagonal -ductus:=false; -penlabels(1,2,3,4,100); -endchar; % end "4" - -% \end{macrocode} -% \end{routine} -% -% -% -% \begin{routine}{5} -% The digit `5'. -% \begin{macrocode} -cmchar "AUncial digit 5"; -beginchar("5", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -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; -x8=w-pcshiftx; y8=h-0.5thin; -%%ductus:=true; -if ductus: - pickup stylus; -fi -%%draw_wave(2,1,thin); % top squiggle -draw z2--z1; % top bar -draw_rtriangle(8,3/4jut); -draw z3{pdir}..z5{down}..z6{left}..z7; % curve -draw z2--z3; % vertical -ductus:=false; -penlabels(1,2,3,4,5,6,7,100); -endchar; % end "5" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{6} -% The digit `6'. -% \begin{macrocode} -cmchar "AUncial 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; -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; -x8=w-pcshiftx; y8=h-0.5thin; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1{left}..z3{down}..z4{right}..z5{up}..{-pdir}z6; -draw_rtriangle(8,3/4jut); -ductus:=false; -penlabels(1,2,3,4,5,6,8,100); -endchar; % end "6" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{7} -% The digit `7'. -% \begin{macrocode} -cmchar "AUncial digit 7"; -beginchar("7", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% top bar -lft x1=pcshiftx; -rt x2=w-pcshiftx; -top y1=top y2=h; -x8=pcshiftx+3/8jut; y8=h-0.5thin; -% bowed leg -x4=w/2; bot y4=0; -x3=0.5[x2,x4]-3thin; y3=0.5[y2,y4]; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2; % top bar -draw_triangle(8,3/4jut); -draw z2..z3..z4; % leg -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,100); -endchar; % end "7" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{8} -% The digit `8'. -% \begin{macrocode} -cmchar "AUncial 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 "AUncial 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 "Uncial 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; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,100); -endchar; % end "0" - -% \end{macrocode} -% \end{routine} -% -% -% -% -% The end of this file. -% \begin{macrocode} -% -% \end{macrocode} -% -% \section{The font definition files} \label{sec:fd} -% -% The font comes in normal and bold weights only. -% -% \begin{macrocode} -%<*fdot1> -\DeclareFontFamily{OT1}{auncl}{} - \DeclareFontShape{OT1}{auncl}{m}{n}{ <-8.5> auncl7 <8.5-15> auncl10 <15-> auncl17 }{} - \DeclareFontShape{OT1}{auncl}{m}{sl}{ <-> sub * auncl/m/n }{} - \DeclareFontShape{OT1}{auncl}{m}{it}{ <-> sub * auncl/m/n }{} - \DeclareFontShape{OT1}{auncl}{m}{sc}{ <-> sub * auncl/m/n }{} - \DeclareFontShape{OT1}{auncl}{m}{u}{ <-> sub * auncl/m/n }{} - \DeclareFontShape{OT1}{auncl}{bx}{n}{ <-8.5> aunclb7 <8.5-15> aunclb10 <15-> aunclb17 }{} - \DeclareFontShape{OT1}{auncl}{bx}{it}{ <-> sub * auncl/bx/n }{} - \DeclareFontShape{OT1}{auncl}{bx}{sl}{ <-> sub * auncl/bx/n }{} - \DeclareFontShape{OT1}{auncl}{b}{n}{ <-> sub * auncl/bx/n }{} -% -% \end{macrocode} -% -% -% \begin{macrocode} -%<*fdt1> -\DeclareFontFamily{T1}{auncl}{} - \DeclareFontShape{T1}{auncl}{m}{n}{ <-8.5> auncl7 <8.5-15> auncl10 <15-> auncl17 }{} - \DeclareFontShape{T1}{auncl}{m}{sl}{ <-> sub * auncl/m/n }{} - \DeclareFontShape{T1}{auncl}{m}{it}{ <-> sub * auncl/m/n }{} - \DeclareFontShape{T1}{auncl}{m}{sc}{ <-> sub * auncl/m/n }{} - \DeclareFontShape{T1}{auncl}{m}{u}{ <-> sub * auncl/m/n }{} - \DeclareFontShape{T1}{auncl}{bx}{n}{ <-8.5> aunclb7 <8.5-15> aunclb10 <15-> aunclb17 }{} - \DeclareFontShape{T1}{auncl}{bx}{it}{ <-> sub * auncl/bx/n }{} - \DeclareFontShape{T1}{auncl}{bx}{sl}{ <-> sub * auncl/bx/n }{} - \DeclareFontShape{T1}{auncl}{b}{n}{ <-> sub * auncl/bx/n }{} -% -% \end{macrocode} -% -% \section{The package code} \label{sec:code} -% -% \subsection{The \Lpack{auncial} package} -% -% The \Lpack{auncial} 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{auncial}[1999/05/22 v1.0 package for Artificial Uncial 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}{\aunclfamily} -% Selects the \thisfont{} font family in the OT1 or T1 encoding. -% \begin{macrocode} -\ifx\Tienc\encodingdefault - \newcommand{\aunclfamily}{\usefont{T1}{auncl}{m}{n}} -\else - \newcommand{\aunclfamily}{\usefont{OT1}{auncl}{m}{n}} -\fi -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\textuncl} -% Text command for the \thisfont{} font family. -% \begin{macrocode} -\DeclareTextFontCommand{\textauncl}{\aunclfamily} -% \end{macrocode} -% \end{macro} -% -% The end of this package. -% \begin{macrocode} -% -% \end{macrocode} -% -% \subsection{The \Lpack{allauncl} package} -% -% The \Lpack{allauncl} 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{auncial} package. -% \begin{macrocode} -%<*uscall> -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{allauncl}[1999/05/22 v1.0 package for all Artificial Uncial fonts] -\RequirePackage{auncial} -% \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}{auncl} -\renewcommand{\sfdefault}{auncl} -\renewcommand{\ttdefault}{auncl} -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% -% The `leading' in the book-hand is the same as the |x-height|, which is 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 \\ -% 6 & 2.58 & 3.61 \\ -% 7 & 3.00 & 4.22 \\ -% 8 & 3.44 & 4.82 \\ -% 9 & 3.86 & 5.40 \\ -% 10 & 4.31 & 6.03 \\ -% 11 & 4.74 & 6.64 \\ -% 12 & 5.17 & 7.24 \\ -% 14 & 6.03 & 8.44 \\ -% 17 & 7.44 & 10.42 \\ -% 20 & 8.75 & 12.25 \\ -% 25 & 10.94 & 15.32 \\ \hline -% \end{tabular} -% \end{table} -% -% \begin{macro}{\auncial@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|. -% -% \begin{macrocode} -\newcommand{\auncial@baselineskip@table}{% - <\@vpt>6.6% - <\@vipt>7.9% - <\@viipt>9.3% - <\@viiipt>10.6% - <\@ixpt>11.9% - <\@xpt>13.3% - <\@xipt>14.6% - <\@xiipt>16.5% - <\@xivpt>18.6% - <\@xviipt>22.9% - <\@xxpt>26.9% - <\@xxvpt>33.7} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\auncial@new@setfontsize} -% This is a macro that replaces the |\@setfontsize| macro which is called by -% the font size changing commands. -% \begin{macrocode} -\newcommand{\auncial@new@setfontsize}[3]{% - \edef\@tempa{\def\noexpand\@tempb####1<#2}% - \@tempa>##2<##3\@nil{\def\auncial@baselineskip@value{##2}}% - \edef\@tempa{\noexpand\@tempb\auncial@baselineskip@table<#2}% - \@tempa><\@nil - \ifx\auncial@baselineskip@value\@empty - \def\auncial@baselineskip@value{#3}% - \fi - \auncial@old@setfontsize{#1}{#2}\auncial@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\auncial@old@setfontsize=\@setfontsize - \let\@setfontsize=\auncial@new@setfontsize} -\AtBeginDocument{\normalsize} -% \end{macrocode} -% -% -% The end of this package. -% \begin{macrocode} -% -% \end{macrocode} -% -% -% -% \bibliographystyle{alpha} -% \renewcommand{\refname}{Bibliography} -% \begin{thebibliography}{GMS94} -% \addcontentsline{toc}{section}{\refname} -% -% \bibitem[And69]{ANDERSON69} -% Donald M.~Anderson. -% \newblock {\em The Art of Written Forms: The Theory and Practice of Calligraphy}. -% \newblock Holt, Rinehart and Winston, 1969. -% -% \bibitem[Bol95]{BOLOGNA95} -% Giulia Bologna. -% \newblock {\em Illuminated Manuscripts: The Book before Gutenberg}. -% \newblock Crescent Books, 1995. -% -% \bibitem[Day95]{DAY95} -% Lewis F.~Day. -% \newblock {\em Alphabets Old \& New}. -% \newblock (3rd edition originally published by B.~T.~Batsford, 1910) -% \newblock Senate, 1995. -% -% \bibitem[Dro80]{DROGIN80} -% Marc Drogin. -% \newblock {\em Medieval Calligraphy: Its History and Technique}. -% \newblock Allenheld, Osmun \& Co., 1980. -% -% \bibitem[Dru95]{DRUCKER95} -% Johanna Drucker. -% \newblock {\em The Alphabetic Labyrinth}. -% \newblock Thames \& Hudson, 1995. -% -% \bibitem[Fir93]{FIRMAGE93} -% Richard A.~Firmage. -% \newblock {\em The Alphabet Abecedarium}. -% \newblock David R~Goodine, 1993. -% -% \bibitem[Fli98]{LETTRINE} -% Daniel Flipo. -% \newblock {\em The LETTRINE package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1998. -% -% \bibitem[Har95]{HARRIS95} -% David Harris. -% \newblock {\em The Art of Calligraphy}. -% \newblock DK Publishing, 1995. -% -% \bibitem[Jen95]{BETON} -% Frank Jensen. -% \newblock {\em The BETON package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1995. -% -% \bibitem[Joh71]{JOHNSTON75} -% Edward Johnston (ed. Heather Child). -% \newblock {\em Formal Penship and Other Papers}. -% \newblock Penthalic, 1971. -% -% \bibitem[Knu87]{CM} -% Donald E.~Knuth. -% \newblock {\em Computer Modern Typefaces}. -% \newblock Addison-Wesley, 1987. -% -% \bibitem[Knu92]{METAFONT} -% Donald E.~Knuth. -% \newblock {\em The METAFONTbook}. -% \newblock Addison-Wesley, 1992. -% -% \bibitem[GMS94]{GOOSSENS94} -% Michel Goossens, Frank Mittelbach, and Alexander Samarin. -% \newblock {\em The LaTeX Companion}. -% \newblock Addison-Wesley Publishing Company, 1994. -% -% \bibitem[Tho75]{THOMAS75} -% Alan G.~Thomas. -% \newblock {\em Great Books and Book Collectors}. -% \newblock Weidenfield and Nichoson, 1975. -% -% \bibitem[Wil99]{DOCMFP} -% Peter R.~Wilson. -% \newblock {\em The DOCMFP Package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1999. -% -% \bibitem[Wil99b]{ROMANNUM} -% Peter R.~Wilson. -% \newblock {\em The ROMANNUM Package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1999. -% -% \end{thebibliography} -% -% -% \Finale -% \PrintIndex -% -\endinput - -%% \CharacterTable -%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -%% Digits \0\1\2\3\4\5\6\7\8\9 -%% Exclamation \! Double quote \" Hash (number) \# -%% Dollar \$ Percent \% Ampersand \& -%% Acute accent \' Left paren \( Right paren \) -%% Asterisk \* Plus \+ Comma \, -%% Minus \- Point \. Solidus \/ -%% Colon \: Semicolon \; Less than \< -%% Equals \= Greater than \> Question mark \? -%% Commercial at \@ Left bracket \[ Backslash \\ -%% Right bracket \] Circumflex \^ Underscore \_ -%% Grave accent \` Left brace \{ Vertical bar \| -%% Right brace \} Tilde \~} - - diff --git a/Master/texmf-dist/source/latex/bookhands/auncial/auncial.ins b/Master/texmf-dist/source/latex/bookhands/auncial/auncial.ins deleted file mode 100644 index 1e0265bdd3e..00000000000 --- a/Master/texmf-dist/source/latex/bookhands/auncial/auncial.ins +++ /dev/null @@ -1,101 +0,0 @@ -%% -%% auncial.ins -%% Copyright 1999 Peter R. Wilson -%% -%% This program is provided under the terms of the -%% LaTeX Project Public License distributed from CTAN -%% archives in directory macros/latex/base/lppl.txt. -%% -%% Author: Peter Wilson (CUA) -%% now at: peter.r.wilson@boeing.com -%% -%% This file will generate fast loadable files and documentation -%% driver files from the doc files in this package when run through -%% LaTeX or TeX. -%% -%% --------------- start of docstrip commands ------------------ -%% -\def\batchfile{auncial.ins} -\input docstrip.tex -\preamble - - Copyright 1999 Peter R. Wilson - - This program is provided under the terms of the - LaTeX Project Public License distributed from CTAN - archives in directory macros/latex/base/lppl.txt. - -Author: Peter Wilson (CUA) - now at: peter.r.wilson@boeing.com - -\endpreamble - -\keepsilent - -%%% \Msg{*** Generating the driver file ***} -%%% \generateFile{auncial.drv}{t}{\from{auncial.dtx}{driver}} - -\Msg{*** Generating the Metafont files ***} - -\usepostamble\empty -\generateFile{auncl7.mf}{t}{\from{auncial.dtx}{base7}} -\generateFile{auncl10.mf}{t}{\from{auncial.dtx}{base10}} -\generateFile{auncl17.mf}{t}{\from{auncial.dtx}{base17}} -\generateFile{aunclb7.mf}{t}{\from{auncial.dtx}{base7b}} -\generateFile{aunclb10.mf}{t}{\from{auncial.dtx}{base10b}} -\generateFile{aunclb17.mf}{t}{\from{auncial.dtx}{base17b}} -\generateFile{auncll.mf}{t}{\from{auncial.dtx}{min}} -\generateFile{aunclu.mf}{t}{\from{auncial.dtx}{maj}} -\generateFile{auncltitle.mf}{t}{\from{auncial.dtx}{mfd}} -\generateFile{aunclpunct.mf}{t}{\from{auncial.dtx}{punct}} -\generateFile{auncllig.mf}{t}{\from{auncial.dtx}{lig}} -\generateFile{auncldig.mf}{t}{\from{auncial.dtx}{dig}} - -\Msg{*** Generating the Font Definition files ***} -\usepostamble\defaultpostamble - -\generateFile{ot1auncl.fd}{t}{\from{auncial.dtx}{fdot1}} -\generateFile{t1auncl.fd}{t}{\from{auncial.dtx}{fdt1}} - -\Msg{*** Generating the LaTeX2e package files ***} - -\generateFile{auncial.sty}{t}{\from{auncial.dtx}{usc}} -\generateFile{allauncl.sty}{t}{\from{auncial.dtx}{uscall}} - -\Msg{***********************************************************} -\Msg{*} -\Msg{* To finish the installation you have to move the following} -\Msg{* files into directories searched by TeX:} -\Msg{*} -\Msg{* Move these into the font source area:} -\Msg{* \space\space auncl7.mf} -\Msg{* \space\space auncl10.mf} -\Msg{* \space\space auncl17.mf} -\Msg{* \space\space aunclb7.mf} -\Msg{* \space\space aunclb10.mf} -\Msg{* \space\space aunclb17.mf} -\Msg{* \space\space auncll.mf} -\Msg{* \space\space aunclu.mf} -\Msg{* \space\space auncltitle.mf} -\Msg{* \space\space aunclpunct.mf} -\Msg{* \space\space auncllig.mf} -\Msg{* \space\space auncldig.mf} -\Msg{*} -\Msg{* Move these into the LaTeX macro area:} -\Msg{* \space\space ot1auncl.fd} -\Msg{* \space\space t1auncl.fd} -\Msg{* \space\space auncial.sty} -\Msg{* \space\space allauncl.sty} -\Msg{*} -\Msg{*} -\Msg{* To produce the documentation run the files ending with} -\Msg{* `.dtx' through LaTeX.} -\Msg{* Process any name.idx file by:} -\Msg{* \space\space\space\space makeindex -s gind.ist name} -\Msg{* Process any name.glo file by:} -\Msg{* \space\space\space\space makeindex -s gglo.ist -o name.gls name.glo} -\Msg{*} -\Msg{* Happy TeXing} -\Msg{***********************************************************} - -\endinput diff --git a/Master/texmf-dist/source/latex/bookhands/carolmin/carolmin.dtx b/Master/texmf-dist/source/latex/bookhands/carolmin/carolmin.dtx deleted file mode 100644 index ee05477a082..00000000000 --- a/Master/texmf-dist/source/latex/bookhands/carolmin/carolmin.dtx +++ /dev/null @@ -1,4924 +0,0 @@ -% \iffalse meta-comment -% -% carolmin.dtx -% Copyright 1999 Peter R. Wilson -% -% This program is provided under the terms of the -% LaTeX Project Public License distributed from CTAN -% archives in directory macros/latex/base/lppl.txt. -% -% Author: Peter Wilson (CUA) (now at: peter.r.wilson@boeing.com) -% -% If you do not have the docmfp package (available from CTAN in -% tex-archive/macros/latex/contrib/supported), comment out the -% \usepackage{docmfp} line below and uncomment the line following it. -% -%<*driver> -\documentclass{ltxdoc} -\usepackage{docmfp} -%%%%%% \providecommand{\DescribeVariable}[1]{} \newenvironment{routine}[1]{}{} -\EnableCrossrefs -\CodelineIndex -%% comment out the next line to show the code -\OnlyDescription -\setcounter{StandardModuleDepth}{1} -\begin{document} - \DocInput{carolmin.dtx} -\end{document} -% -% -% \fi -% -% \CheckSum{134} -% -% \DoNotIndex{\',\.,\@M,\@@input,\@addtoreset,\@arabic,\@badmath} -% \DoNotIndex{\@centercr,\@cite} -% \DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue} -% \DoNotIndex{\@input,\@ixpt,\@m} -% \DoNotIndex{\@minus,\@mkboth,\@ne,\@nil,\@nomath,\@plus,\@set@topoint} -% \DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb} -% \DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt} -% \DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt} -% \DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace} -% \DoNotIndex{\advance,\Alph,\alph} -% \DoNotIndex{\arabic,\ast,\begin,\begingroup,\bfseries,\bgroup,\box} -% \DoNotIndex{\bullet} -% \DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption} -% \DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass} -% \DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\endtrivlist} -% \DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup} -% \DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter} -% \DoNotIndex{\fbox} -% \DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef} -% \DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule} -% \DoNotIndex{\hsize,\hskip,\hspace,\hss,\if@tempswa,\ifcase,\or,\fi,\fi} -% \DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\fi,\fi,\fi,\fi,\fi} -% \DoNotIndex{\input} -% \DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark} -% \DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright} -% \DoNotIndex{\month,\newcommand,\newcounter,\newenvironment} -% \DoNotIndex{\NeedsTeXFormat,\newdimen} -% \DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number} -% \DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\p@} -% \DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip} -% \DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions} -% \DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright} -% \DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font} -% \DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily,\roman} -% \DoNotIndex{\roman,\secdef,\selectfont,\setbox,\setcounter,\setlength} -% \DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space} -% \DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase} -% \DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt} -% \DoNotIndex{\viipt,\vipt,\vskip,\vspace} -% \DoNotIndex{\wd,\xiipt,\year,\z@} -% -% \changes{v1.0}{2002/12/30}{First public release} -% -% \def\fileversion{v1.0} -% \def\filedate{2002/12/30} -% \newcommand*{\Lpack}[1]{\textsf {#1}} ^^A typeset a package -% \newcommand*{\Lopt}[1]{\textsf {#1}} ^^A typeset an option -% \newcommand*{\file}[1]{\texttt {#1}} ^^A typeset a file -% \newcommand*{\Lcount}[1]{\textsl {\small#1}} ^^A typeset a counter -% \newcommand*{\pstyle}[1]{\textsl {#1}} ^^A typeset a pagestyle -% \newcommand*{\Lenv}[1]{\texttt {#1}} ^^A typeset an environment -% \newcommand*{\AD}{\textsc{ad}} -% \newcommand*{\thisfont}{Carolingian Minuscule} -% -% \title{The \Lpack{Carolingian Minuscule} fonts\thanks{This -% file has version number \fileversion, last revised -% \filedate.}} -% -% \author{% -% Peter Wilson\\ -% Catholic University of America \\ -% Now at \texttt{peter.r.wilson@boeing.com} -% } -% \date{\filedate} -% \maketitle -% \begin{abstract} -% The \Lpack{carolmin} and \Lpack{allcmin} packages provide a set of -% Metafont \thisfont{} book-hands -% as used -% for manuscripts in the 8th to the 12th century. This is one in a series -% of manuscript fonts. -% \end{abstract} -% \tableofcontents -% \listoftables -% -% -% -% -% \section{Introduction} -% -% The \Lpack{carolmin} and \Lpack{allcmin} packages provide a Metafont~\cite{METAFONT} version -% of the \thisfont{} manuscript book-hand that was in use between about the -% eighth and twelfth centuries~\AD. It is part of a project to provide fonts -% covering the major manuscript hands between the first century~\AD{} and -% the invention of printing. The principal resources used in this project -% are listed in the Bibliography. -% -% This manual is typeset according to the conventions of the -% \LaTeX{} \textsc{docstrip} utility which enables the automatic -% extraction of the \LaTeX{} macro source files~\cite{GOOSSENS94}. -% The \Lpack{docmfp} package is used for documenting the Metafont portions -% of the distribution~\cite{DOCMFP}. -% -% Section~\ref{sec:usc} describes the usage of the package. -% Commented code for the fonts is in Sections~\ref{sec:mf} and~\ref{sec:fd} -% and source code for the package is in Section~\ref{sec:code}. -% -% \subsection{Manuscript book-hands} -% -% Before the invention of printing all books were written by hand. The book-hands -% used by the scribes and copyists for the manuscripts changed as time -% went on. Table~\ref{tab:1} lists some of the common book-hands which were used -% between the 1st and 15th centuries. The later book-hands formed the basis of the -% fonts used by the early printers, which in turn form the basis of the printing -% fonts in use today. -% -% The manuscript book-hands were written with a broad nibbed reed or quill -% pen. Among the distinguishing characteristics of a hand, apart from the -% actual shape of the letters, are the angle of the pen (which controls the -% variation between thick and thin strokes) and the height of a letter compared -% to the width of the nib. The lower the ratio of the letter height to nib -% width, the more condensed is the script. The scripts also varied in their -% typical height. -% -% Table~\ref{tab:1} gives an `average' x-height for each -% script, which I obtained by measuring a sample of photographs of -% manuscripts written in the various hands. About a dozen examples -% of each book-hand were measured. This figure should not be taken too -% seriously. -% -% There was not a sharp division between the use of one hand and another. -% Many manuscripts exhibit a variety of hands in the same document. For example, -% the scribe writing in an Uncial hand may have used Roman Rustic letters -% for capitals. Usually the same pen was used for the two different scripts. -% -% Generally speaking, as a hand got older it became more embelished, and -% therefore took longer to write. As this happened a new hand would appear that -% was faster, and which would eventually make the earlier one obsolete. -% -% Many of the book-hands were single-cased; that is, they did not have an -% upper- and lower-case as we do nowadays in Western scripts. On the other -% hand, a script might be majuscule or minuscule. A \textit{majuscule} script -% is one, like our upper-case, where the letters are drawn between two lines -% and are of a uniform height with no ascenders or descenders. -% A \textit{minuscule} script, like our lower-case, is drawn between four lines -% and has ascenders and descenders. -% -% \begin{table} -% \centering -% \caption{The main manuscript book-hands} \label{tab:1} -% \begin{tabular}{lccccc} \hline -% Name & Century & x-height & Height & Pen & Normalised \\ -% & & (mm) & (nib widths) & angle & height \\ \hline -% Roman Rustic & 1--6 & 5.7 & 4--6 & 45 & 1.90 \\ -% Uncial & 3--6 & 4.1 & 4--5 & 30 & 1.37 \\ -% Half Uncial & 3--9 & 3.2 & 3--6 & 20--30 & 1.07 \\ -% Artificial Uncial & 6--10 & 4.2 & 3--6 & 10 & 1.40 \\ -% Insular majuscule & 6--9 & 4.2 & 5 & 0--20 & 1.40 \\ -% Insular minuscule & 6 onward & 4.1 & 5--6 & 45--70 & 1.37 \\ -% Carolingian minuscule & 8--12 & 3.0 & 3--5 & 45 & 1.00 \\ -% Early Gothic & 11--12 & 3.8 & 4--6 & 20--45 & 1.27 \\ -% Gothic Textura & 13--15 & 3.9 & 3--5 & 30--45 & 1.30 \\ -% Gothic Prescius & 13 onward & 3.3 & 4--5 & 45 & 1.10 \\ -% Rotunda & 13--15 & 3.2 & 4--6 & 30 & 1.07 \\ -% Humanist minuscule & 14 onward & 3.0 & 4--5 & 30--40 & 1.00 \\ \hline -% \end{tabular} -% \end{table} -% -% During the period under consideration arabic numerals were effectively -% not used. At the beginning they were unknown and even though some knew -% of them towards the end, the glyphs used for them are not recognisable --- -% to me they look somewhat like cryllic letters --- and each locality -% and time had its own highly individualistic rendering. The general rule -% when using one of these book-hands is to write all numbers using -% roman numerals. -% -% The Roman alphabet consisted of 23 capital letters --- the J, U and W -% were absent. The book-hands initially used both a `u' and a `v' interchangeably -% but by the 10th century the practice had become to use the `v' before a vowel -% and the `u' otherwise. The letter corresponding to the W sound appeared -% in England around the 7th century in -% the form of the runic \textit{wen} character and by about the 11th century -% the `w' chacter was generally used. The `J' is the newest letter of all, not -% appearing until about the mid 16th century. -% -% In the first century punctuation was virtually unknown, and typically -% would not even be any additional space between individual words, never -% mind denoting ends of sentences. Sometimes a dot at mid-height would be -% used as a word seperator, or to mark off the end of a paragraph. Effectively -% a text was a continuous stream of letters. By the time that printing was -% invented, though, all of our modern punctuation marks were being used. -% -% Among all these manuscript hands, the Carolingian minuscule is the -% most important as our modern fonts are based on its letter shapes, and it is -% also at this point in time where the division occured between the black letter -% scripts as used even today in Germany, and the lighter fonts used elesewhere. -% The Rotunda and Humanist minuscule hands were developed in Italy and were -% essentially a rediscovery of the Carolingian minusucle. Guthenberg took the -% Gothic scripts as the model for his types. Later printers, -% such as Nicholas Jenson of Venice, -% took the Humanist scripts as their models. -% -% -% \subsection{The \thisfont{} script} -% -% Charlemagne (742--814), the Holy Roman Emperor, was naturally anxious to consolidate -% his empire. Although he was probably illiterate he employed scribes -% and when he came to the throne there was a wide diversity of bookhands -% in use. For efficiency he needed to have a more uniform style of writing -% so that reading mistakes were less likely to happen. To this end -% he employed the Anglo-Saxon monk Alcuin to be his `Minister for Education'. -% Alcuin produced an elegant, simple and easy-to-write hand that is now -% called \thisfont. -% -% Letters for capitals were taken from contemporary and earlier bookhands, -% thus helping to preserve them. All the modern punctuation marks were in use -% and the letter `v' appears for the first time. As well as the ampersand, the most -% common ligatures were `ct' and `st'; also, a special `half r' was used after -% an `o'. -% -% -% -% \section{The \Lpack{carolmin} and \Lpack{allcmin} packages} \label{sec:usc} -% -% The \thisfont{} font family is called |cmin|. The font is supplied in both -% OT1 and T1 encodings. -% -% \subsection{The \Lpack{carolmin} 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{\cminfamily} -% The |\cminfamily| 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{\textcmin} -% The command |\textcmin{|\meta{text}|}| will typeset \meta{text} using the -% \thisfont{} fonts. -% -% \subsection{The \Lpack{allcmin} 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{allcmin} package automatically loads the \Lpack{carolmin} package, -% so its font commands are available if necessary. -% -% \StopEventually{ -% \bibliographystyle{alpha} -% \renewcommand{\refname}{Bibliography} -% \begin{thebibliography}{GMS94} -% \addcontentsline{toc}{section}{\refname} -% -% \bibitem[And69]{ANDERSON69} -% Donald M.~Anderson. -% \newblock {\em The Art of Written Forms: The Theory and Practice of Calligraphy}. -% \newblock Holt, Rinehart and Winston, 1969. -% -% \bibitem[Bol95]{BOLOGNA95} -% Giulia Bologna. -% \newblock {\em Illuminated Manuscripts: The Book before Gutenberg}. -% \newblock Crescent Books, 1995. -% -% \bibitem[Day95]{DAY95} -% Lewis F.~Day. -% \newblock {\em Alphabets Old \& New}. -% \newblock (3rd edition originally published by B.~T.~Batsford, 1910) -% \newblock Senate, 1995. -% -% \bibitem[Dro80]{DROGIN80} -% Marc Drogin. -% \newblock {\em Medieval Calligraphy: Its History and Technique}. -% \newblock Allenheld, Osmun \& Co., 1980. -% -% \bibitem[Dru95]{DRUCKER95} -% Johanna Drucker. -% \newblock {\em The Alphabetic Labyrinth}. -% \newblock Thames \& Hudson, 1995. -% -% \bibitem[Fir93]{FIRMAGE93} -% Richard A.~Firmage. -% \newblock {\em The Alphabet Abecedarium}. -% \newblock David R~Goodine, 1993. -% -% \bibitem[Fli98]{LETTRINE} -% Daniel Flipo. -% \newblock {\em The LETTRINE package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1998. -% -% \bibitem[Har95]{HARRIS95} -% David Harris. -% \newblock {\em The Art of Calligraphy}. -% \newblock DK Publishing, 1995. -% -% \bibitem[Jen95]{BETON} -% Frank Jensen. -% \newblock {\em The BETON package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1995. -% -% \bibitem[Joh71]{JOHNSTON75} -% Edward Johnston (ed. Heather Child). -% \newblock {\em Formal Penship and Other Papers}. -% \newblock Penthalic, 1971. -% -% \bibitem[Knu87]{CM} -% Donald E.~Knuth. -% \newblock {\em Computer Modern Typefaces}. -% \newblock Addison-Wesley, 1987. -% -% \bibitem[Knu92]{METAFONT} -% Donald E.~Knuth. -% \newblock {\em The METAFONTbook}. -% \newblock Addison-Wesley, 1992. -% -% \bibitem[GMS94]{GOOSSENS94} -% Michel Goossens, Frank Mittelbach, and Alexander Samarin. -% \newblock {\em The LaTeX Companion}. -% \newblock Addison-Wesley Publishing Company, 1994. -% -% \bibitem[Tho75]{THOMAS75} -% Alan G.~Thomas. -% \newblock {\em Great Books and Book Collectors}. -% \newblock Weidenfield and Nichoson, 1975. -% -% \bibitem[Wil99]{DOCMFP} -% Peter R.~Wilson. -% \newblock {\em The DOCMFP Package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1999. -% -% \bibitem[Wil99b]{ROMANNUM} -% Peter R.~Wilson. -% \newblock {\em The ROMANNUM Package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1999. -% -% \end{thebibliography} -% } -% -% \section{The Metafont code} \label{sec:mf} -% -% -% As previously noted, this work is part of a larger project to provide -% fonts covering the main manuscript book-hands. As such, one of the -% aims is to produce a coordinated set of fonts, especially as multiple -% hands might be used in a single document. -% -% Noting that the hands tend to be somewhat larger than the typical 10pt -% size (where the x-height is approximately 1.5mm) used for modern books, -% I have also designed the fonts -% at a larger than normal size, then applied some non-linear factors when reducing -% them down to a 10pt size. -% Further, I have used the height of the Carolingian minuscule as a -% normalising factor when deciding on the absolute height of any particular -% script. The x-height of the Carolingian font is made equal to the -% x-height of the Computer Modern Roman (CMR) font. -% -% Modern fonts are effectively drawn. That is, the outline of the letter is -% drawn carefully and the center is filled with ink. This is shown to good -% effect in the Metafont code for the Computer Modern fonts~\cite{CM}. -% In contrast, the manuscript letters were inked by single pen strokes in -% a calligraphic manner. I have tried to repeat this calligraphic style -% in the Metafont code. -% -% As much as possible I have tried to use parameter values from the -% Computer Modern Roman (CMR) fonts in order to reduce possible -% infelicities if the CM and manuscript fonts are used together. However, -% few of the CMR parameters are applicable to the calligraphic style. -% -% -% \subsection{The parameter file} -% -% We deal with the parameter files first, and start by announcing -% what they are for. The \thisfont{} font comes in three sizes and also as a normal -% and a bold font. -% \begin{macrocode} -%<*base7|base10|base17|base7b|base10b|base17b> -%%%% CMIN7.MF Carolingian Minuscule at 7 point design size. -%%%% CMIN10.MF Carolingian Minuscule at 10 point design size. -%%%% CMIN17.MF Carolingian Minuscule at 17 point design size. -%%%% CMINB7.MF Carolingian Minuscule Bold at 7 point design size. -%%%% CMINB10.MF Carolingian Minuscule Bold at 10 point design size. -%%%% CMINB17.MF Carolingian Minuscule 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 - -%font_identifier:="CMIN"; font_size 7pt#; -%font_identifier:="CMIN"; font_size 10pt#; -%font_identifier:="CMIN"; font_size 17.28pt#; -%font_identifier:="CMINB"; font_size 7pt#; -%font_identifier:="CMINB"; font_size 10pt#; -%font_identifier:="CMINB"; font_size 17.28pt#; - -% \end{macrocode} -% -% \DescribeVariable{jutstretch} -% The CMR scaling for lowercase serifs wrt 17pt size. -% \begin{macrocode} -% jutstretch:=1.19; -% jutstretch:=1.152; -% jutstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{stemstretch} -% The CMR scaling for lowercase stem widths wrt 17pt size. -% \begin{macrocode} -% stemstretch:=1.50; -% stemstretch:=1.31; -% stemstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{caprat} -% The scaling for `capitals' wrt `lowercase'. This is pretty much a guess -% (the ratio for CMR10 is 1.59). -% \begin{macrocode} - caprat:=1.5; % ratio of capital height to minuscule height -% \end{macrocode} -% -% \DescribeVariable{cap_jutstretch} -% The CMR scaling for uppercase serifs wrt 17pt size. -% \begin{macrocode} -% cap_jutstretch:=1.3; -% cap_jutstretch:=1.2; -% cap_jutstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{cap_stemstretch} -% The CMR scaling for uppercase stem width wrt 17pt size. -% \begin{macrocode} -% cap_stemstretch:=1.45; -% cap_stemstretch:=1.31; -% cap_stemstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{bfudge} -% Letter width scaling for bold font wrt normal font. -% \begin{macrocode} -% bfudge:=1.0; -% bfudge:=1.2; -% \end{macrocode} -% -% \DescribeVariable{szfudge} -% Width scaling wrt 17pt letter width. -% \begin{macrocode} -% szfudge:=1.18; -% szfudge:=1.0; -% 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} -% carol_height#:=108.5/36pt#; -% carol_height#:=155/36pt#; -% carol_height#:=268/36pt#; -% \end{macrocode} -% -% \DescribeVariable{vstretch} -% The height of this font wrt the Carolingian font. -% \begin{macrocode} - vstretch:=1.00; - -% \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} -% u#:=15.5/36pt#; -% u#:=20/36pt#; -% u#:=32.5/36pt#; -% u#:=17.9/36pt#; -% u#:=23/36pt#; -% 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 -% cap_serif_fit#:=3.5/36pt#; % extra sidebar near uppercase serifs -% cap_serif_fit#:=5/36pt#; % extra sidebar near uppercase serifs -% cap_serif_fit#:=8/36pt#; % extra sidebar near uppercase serifs -% letter_fit#:=0pt#; % extra space added to all sidebars -% letter_fit#:=0pt#; % extra space added to all sidebars -% 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} -% sb#:=1/2u#; % unit for side bearings -% sb#:=1/2u#; % unit for side bearings -% sb#:=1/2u#; % unit for side bearings - -% \end{macrocode} -% -% \DescribeVariable{cap_height} -% The height of capital letters. -% \begin{macrocode} -% cap_height#:=172.2/36pt#; % height of caps -% cap_height#:=246/36pt#; % height of caps -% 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} -% thickfudge:=1/5; -% thickfudge:=1/4; -% \end{macrocode} -% -% \DescribeVariable{thinfudge} -% The nib sharpness. -% \begin{macrocode} -thinfudge:=1/6; -% \end{macrocode} -% -% \DescribeVariable{thick} -% The maximum nib width. -% That is, the width of the thickest line that can be penned. -% \begin{macrocode} -thick#:=stemstretch*thickfudge*x_height#; % max pen breadth -% \end{macrocode} -% -% \DescribeVariable{thin} -% The nib thinness. -% That is, the width of the thinnest line that can be penned. -% \begin{macrocode} -thin#:=thinfudge*thick#; -% \end{macrocode} -% -% \DescribeVariable{pangle} -% The pen angle (in degrees). -% \begin{macrocode} -pangle:=45; % pen angle -% \end{macrocode} -% -% \DescribeVariable{ascratio} -% The height of lower case ascenders wrt |x_height|. -% \begin{macrocode} - ascratio:=6/4; -% \end{macrocode} -% -% \DescribeVariable{asc_height} -% The height of lower case ascenders. -% \begin{macrocode} - asc_height#:=ascratio*x_height#; -% \end{macrocode} -% -% \DescribeVariable{descratio} -% The depth of lower case descenders wrt |x_height|. -% \begin{macrocode} - descratio:=3/4; -% \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} -% rule_thickness#:=.34pt#; -% rule_thickness#:=.4pt#; -% rule_thickness#:=.6pt#; - -% \end{macrocode} -% -% \DescribeVariable{jutfudge} -% Controls the protrusion of serifs. -% \begin{macrocode} -%%%jutfudge:= 3/4; -jutfudge:= 1/2; -% \end{macrocode} -% -% \DescribeVariable{jut} -% The lowercase serif protrusion. -% \begin{macrocode} -jut#:=jutstretch*jutfudge*thick#; -% \end{macrocode} -% -% \DescribeVariable{srad} -% |srad| with |0 < srad < 1| controls the serif radius. -% \begin{macrocode} -srad:=0.8; % was 0.5 -% \end{macrocode} -% -% \DescribeVariable{trijut} -% The lowercase triangular serif protrusion. -% \begin{macrocode} -trijut#:=0.75jutstretch*thick#; -% \end{macrocode} -% -% \DescribeVariable{clubjutfudge} -% The fractional protusion of a club serif. -% \begin{macrocode} -clubjutfudge:=1/2; -% \end{macrocode} -% -% \DescribeVariable{clubjut} -% The lowercase club serif protrusion. -% \begin{macrocode} -clubjut#:=jutstretch*clubjutfudge*thick#; -% \end{macrocode} -% -% \DescribeVariable{o} -% Amount of overshoot for curves (as in an `o'). Use CMR values. -% \begin{macrocode} -% o#:=5/36pt#; -% o#:=8/36pt#; -% 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 cmintitle %% switch to the driver file - -% \end{macrocode} -% -% The end of this code section. -% \begin{macrocode} -% -% \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 CMINTITLE.MF for the Carolingian Minuscule 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}{carolmin_font_setup} -% This macro contains the set up for the \thisfont{} fonts. -% \begin{macrocode} - -def carolmin_font_setup= % contains special stuff for carolmin 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); - let adjust_fit = normal_adjust_fit; -% \end{macrocode} -% \DescribeVariable{stylus} -% The pen for drawing the thinnest lines is |stylus|. -% \begin{macrocode} - pickup pencircle scaled thin; - stylus:=savepen; -% \end{macrocode} -% \DescribeVariable{thickstylus} -% The pen for drawing lines a bit thicker than the thinnest is |thickstylus|. -% \begin{macrocode} - pickup pencircle scaled (1.5thin); - thickstylus:=savepen; -% \end{macrocode} -% \DescribeVariable{quill} -% The normal calligraphic pen is |quill|. -% \begin{macrocode} - pickup pencircle xscaled thick yscaled thin rotated pangle; - quill:=savepen; - -% \end{macrocode} -% -% \DescribeVariable{threequarterquill} -% A pen with 3/4 of the width as quill (but with the same thinness). -% \begin{macrocode} - pickup pencircle xscaled 3/4thick yscaled thin rotated pangle; - threequarterquill := savepen; - -% \end{macrocode} -% -% \DescribeVariable{halfquill} -% A pen with 1/2 of the width as quill (but with the same thinness). -% \begin{macrocode} - pickup pencircle xscaled 1/2thick yscaled thin rotated pangle; - halfquill := savepen; - -% \end{macrocode} -% -% \DescribeVariable{quarterquill} -% A pen with 1/4 of the width as quill (but with the same thinness). -% \begin{macrocode} - pickup pencircle xscaled 1/4thick yscaled thin rotated pangle; - quarterquill := savepen; - -% \end{macrocode} -% -% -% \begin{macrocode} - numeric pcshiftx#; % x value of LHS of box wrt origin of char box - define_pixels(pcshiftx); - numeric sqxside#; % x size of the square - numeric sqyside#; % y size of the square - define_pixels(sqxside,sqyside); - -enddef; % end of carolmin_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 $0y$$: - 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 $0y$$: - 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 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; -carolmin_font_setup; - -% \end{macrocode} -% -% -% We generate letters, together with some punctuation and -% analphabetics. -% \begin{macrocode} - -input cminl; % lower case -input cminu; % capitals -input cminpunct; % punctuation -input cminlig; % the several dashes -input cmindig; % 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. - -% -% \end{macrocode} -% -% \subsection{The code for normal letters} -% -% The following code is for the lower case characters. -% -% \begin{macrocode} -%<*min> -% CMINL.MF Program file for Carolingian Minuscule lower case -% - -% \end{macrocode} -% -% -% \begin{routine}{a} -% The letter `a'. -% \begin{macrocode} -cmchar "CMIN letter a"; -beginchar("a", 2sb#+hstretch*(3/4x_height#+jut#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pair pr[]; -pickup quill; -n1 := w - 2pcshiftx -jut; % effective letter width -% "stem" -x1 = pcshiftx + 6/8n1; top y1=h; -rt x2 = pcshiftx + n1; bot y2=0; -z16 = 1/6[z2,z1]; -rt x6 = x16; y6=y16; -lft x4 = pcshiftx; y4 = 1/2h; -% stem path -pth1 := z1{down}..z2; -pr1 := direction 1 of pth1; -z20 = z2 shifted -10pr1; - -z11 = point 3/13 of pth1; z15 = point 10/13 of pth1; -lft x13 = pcshiftx; y13=1/4h; -%%ductus:=true; -if ductus: - pickup stylus; -else: - % draw stem - draw pth1; - draw_roundserif(1,2,srad); - draw_roundserif(2,20,srad); - % draw bowl -%% draw z1{-pdir}..z4{down}..z6{pdir}; - draw z11{-pdir}..z13{down}..z15{pdir}; -fi -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 "CMIN letter b"; -beginchar("b", 2sb#+hstretch*(3/4x_height#+clubjut#), - asc_height#, 0); -adjust_fit(0,0); -numeric n[]; -path pth[]; -pcshiftx := sb; -pickup quill; -n1:=w-2pcshiftx; % actual letter width -n2:=h/ascratio; % top of bowl -%%ductus:=true; -lft x1 = pcshiftx+clubjut; top y1=h; -x3 = x1; y3=1/2n2; -rt x5 = w-pcshiftx; y5=y3; -x4 = 1/2[x3,x5]; bot y4=0; -x6=x4; top y6=n2; -pth1 := z1..z3{down}..z4{right}.. z5{up}; -z98=(0,3/4n2); z99=(w,y98); -pth2 := z98--z99; -z7 = pth1 intersectionpoint pth2; -if ductus: - pickup stylus; -fi -draw z1..z3{down}..z4{right}..z5{up}..z6{left}..z7{-pdir}; -draw_clubserif(1,3,0.75); -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 "CMIN letter c"; -beginchar("c", 2sb#+hstretch*(5/8x_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{pdir}; -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 "CMIN letter d"; -beginchar("d", 2sb#+hstretch*(5/8x_height#+jut#), - asc_height#, 0); -adjust_fit(0,0); -numeric n[]; -path pth[]; -pcshiftx := sb; -pickup quill; -n1 = h/ascratio; % x-height -rt x1=w-pcshiftx-jut; top y1=h; -x2 = x1; bot y2=0; -x3 = x1; y3 = 1/4n1; -lft x5 = pcshiftx; y5=1/2n1; -x4 = 1/2[x3,x5]; bot y4 = 0; -x6=x4; top y6 = n1; -x7=x3; y7=3/4n1; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); -%%draw_flatserif(1,2,srad); -draw_clubserif(1,2,0.25); -draw_roundserif(2,1,srad); -draw z3..z4{left}..z5{up}..z6{right}..z7; -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 "CMIN letter e"; -beginchar("e", sb#+hstretch*(8/8x_height#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pickup quill; -n1 := w-pcshiftx; % actual letter width -n2 := 6/8n1; % width of bowl -x1 = pcshiftx + 5/8n2; top y1=h; -lft x2 = pcshiftx; y2 = 1/2h; -x3 = pcshiftx + 1/2n2; bot y3 = 0; -rt x4 = pcshiftx + n2; y4 = 1/4h; -%%z98=(0,3/8h); z99=(w,y98); -z98=(0,2/8h); z99=(w,y98); -pth1 := z98--z99; -pth2 := z1{left}..z2{down}..z3{right}; -z7 = pth1 intersectionpoint pth2; -rt x9 = w-pcshiftx; y9 = 3/4h; -z8=1/2[z7,z9]; - -z70 = z7 shifted 10pdir; -z17 = whatever[z7,z70]; -%%x17 = w-pcshiftx; -top y17 = h; - -rt x27=w-pcshiftx; top y27=h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z7{pdir}..z1{left}..z2{down}..z3{right}..z4{pdir}; -%%draw z7{pdir}..z8{right}..z9{pdir}; -%%draw z7--z17; -draw z7--z27; -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 "CMIN letter f"; -beginchar("f", 2sb#+hstretch*(3/4x_height#+jut#), - (asc_height#), 0); -adjust_fit(0,0); -numeric n[]; -pcshiftx := sb; -pickup quill; -n1 := h/ascratio; % x-height -%% stem -lft x1=lft x2=pcshiftx+jut; top y1=n1; bot y2=0; -%% flick -x4=x2; y4 = 1/2n1; -rt x6=w-pcshiftx; y6 = 2/3h; -x5 = 2/3[x4,x6]; top y5=h; -%% bar -z14=1/2[z4,z1]; -rt x16 = w -pcshiftx; top y16 = 1/2[y14,y6]; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -draw z4{up}...z5{right}...z6; % top -draw z14{right}..z16{pdir}; % bar -ductus:=false; -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 "CMIN letter g"; -beginchar("g", 2sb#+hstretch*(5/4x_height#), - x_height#, desc_depth#); -adjust_fit(0,0); -path pth[]; -pair vec[]; -numeric n[]; -pcshiftx := sb; -pickup quill; -n1 := 4/5w - 2pcshiftx; % width of top o -%% top O -x1 = x3 = pcshiftx + 1/2n1; top y1=h; bot y3=1/8h; -lft x4 = pcshiftx; rt x2 = pcshiftx+n1; y2 = y4 = 1/2[y1,y3]; - -%% top flick -lft x11 = rt x1; y11=y1; -rt x13 = w-pcshiftx; y13 = h; - -%% bottom -z31=z3; -x33 = w-pcshiftx; y33 = -1/2d; -x35=x31; bot y35 = -d; -rt x36 = lft x4; y36 = 1/2[y35,y33]; - -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1..z2..z3..z4..cycle; % top O -draw z11{right}..z13{pdir}; % flick -draw z31{right}..z33{down}..z35{left}..z36; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,11,12,13,31,32,33,34,35,36,100); -endchar; % end "g" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{h} -% The letter `h'. -% \begin{macrocode} -cmchar "CMIN letter h"; -beginchar("h", 2sb#+hstretch*(6/8x_height#+clubjut#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -numeric n[]; -%% stem -lft x1=lft x2=pcshiftx+jut; -top y1=h; bot y2=0; -%% bowl -z3=1/2[z2,z1]; -rt x5 = w-pcshiftx; y5=y3; -x4=1/2[x3,x5]; top y4 = h/ascratio; -%%lft x6=x4; bot y6=0; -x6=1/2[x4,x5]; -bot y6=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -%%draw_flatserif(1,2,srad); -draw_clubserif(1,2,0.5); -draw_roundserif(2,1,srad); -draw z3{pdir}..z4..z5..z6{-pdir}; - -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 "CMIN letter i"; -beginchar("i", 2sb#+hstretch*(thick#+2jut#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -lft x1=lft x2=pcshiftx+jut; -top y1=h; bot y2=0; -%%ductus:=true; -draw_tstem(1,2,srad); -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -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 "CMIN letter j"; -beginchar("j", sb#+hstretch*(3/8x_height#), - x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% stem -rt x1 = w-pcshiftx; top y1 = h; -x2=x1; y2=-1/2d; -%% bottom hook -lft x3 = 0; bot y3 = -d; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2; % stem -draw_flatserif(1,2,srad); -draw z2{down}..z3{-pdir}; % hook -ductus:=false; -penlabels(1,2,3,100); -endchar; % end "j" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{k} -% The letter `k'. -% \begin{macrocode} -cmchar "CMIN letter k"; -beginchar("k", 2sb#+hstretch*(7/8x_height#+clubjut#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -path pth[]; -numeric n[]; -pickup quill; -%% stem -n1 = h/ascratio; % x-height -lft x1=lft x2=pcshiftx+clubjut; -y1=h; bot y2=0; -%% top arm -%%z3=(x1,1/2n1); -x3 = x1; top y3 = 1/2n1; -rt x5=5/8[x1,w-pcshiftx]; top y5=n1; -x4=1/2[x3,x5]; top y4=n1; -pth1 := z3{pdir}..z5{up}; -%% lower arm -pth2 := (rt x1,0)--(rt x1,h); -z13 = pth1 intersectionpoint pth2; -pickup threequarterquill; -lft x14 = x13; bot y14 = y13; -rt x7=w-pcshiftx; bot y7=0; -pickup quill; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_clubserif(1,2,0.5); -draw_roundserif(2,1,srad); -draw pth1; % upper arm -pickup threequarterquill; -%%draw z14{down}..z7{-ppdir}; % lower arm -%%draw z14{down}..z7; % lower arm -draw z14{-ppdir}..z7{right}; % lower arm -pickup quill; -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 "CMIN letter l"; -beginchar("l", 2sb#+hstretch*(thick#+clubjut#+jut#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -lft x1=pcshiftx+clubjut; top y1=h; -x2=x1; bot y2 =0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); -draw_clubserif(1,2,0.5); -draw_roundserif(2,1,srad); -ductus:=false; -penlabels(1,2,3,4,100); -endchar; % end "l" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{m} -% The letter `m'. -% \begin{macrocode} -cmchar "CMIN letter m"; -beginchar("m", 2sb#+hstretch*(x_height#+2jut#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pickup quill; -%% left stem -lft x1=pcshiftx+jut; top y1=h; -x2=x1; bot y2=0; -%% start of bowl -x13=x1; y13=3/4h; -%% bottom of right and middle stems -rt x6 = w -pcshiftx - jut; y6=y2; -z4 = 1/2[z2,z6]; -%% top of middle and right stems -x3=x4; y3=y1; -x5=x6; y5=y13; -%% top of bowls -x14=2/3[x13,x3]; top y14 = h; -x33=x4; y33=y13; -x34=2/3[x33,x5]; y34 = y14; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % left half -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -draw z13{pdir}..z14{right}..z33{down}--z4; -draw_roundserif(4,3,srad); -draw z33{pdir}..z34{right}..z5{down}--z6; -draw_roundserif(6,5,srad); -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 "CMIN letter n"; -beginchar("n", 2sb#+hstretch*(5/8x_height#+2jut#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -%% left stem -lft x1=pcshiftx+jut; top y1=h; -x2=x1; bot y2=0; -% start of bowl -x13=x1; y13=3/4h; -%% right stem -rt x4 = w-pcshiftx-jut; y4=y2; -x3 = x4; y3 = y13; -% top of bowl -x14 = 2/3[x13,x3]; top y14 = h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % left stem -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -draw z13{pdir}..z14{right}..z3{down}--z4; -draw_roundserif(4,3,srad); -ductus:=false; -penlabels(1,2,3,4,5,6,13,14,100); -endchar; % end "n" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{o} -% The letter `o'. -% \begin{macrocode} -cmchar "CMIN letter o"; -beginchar("o", 2sb#+hstretch*(3/4x_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; -draw z1..z2..z3..z4..cycle; -z5=(pcshiftx,-o); -obowl(5, w-2pcshiftx, h+2o); -%%ductus:=true; -if ductus: - pickup stylus; - draw obfirst; draw obsecond; draw obouter; draw obinner; -else: -%% fill obouter; unfill obinner; -fi -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 "CMIN letter p"; -beginchar("p", 2sb#+hstretch*(3/4x_height#+jut#), - x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% stem -lft x1=lft x2=pcshiftx+jut; -top y1=h; bot y2=-d; -%% bowl % from "d" -z3=3/4[(x1,0),z1]; -rt x5 = w-pcshiftx; y5=1/2h; -x4=1/2[x3,x5]; top y4 = h; -x6=x4; bot y6=0; -z7=1/4[(x1,0),z1]; - -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad) -draw z3{pdir}..z4{right}..z5{down}..z6{left}..z7; % bowl (from d) -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 "CMIN letter q"; -beginchar("q", 2sb#+hstretch*(3/4x_height#+jut#), - x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% right stem -rt x1=w-pcshiftx-jut; top y1=h; -x2=x1; bot y2=-d; -%% bowl -z3=1/4[(x1,0),z1]; -lft x5=pcshiftx; y5=1/2h; -x4=1/2[x3,x5]; bot y4=0; -x6=x4; top y6=h; -z7=3/4[(x1,0),z1]; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); -%%draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -draw z3{-pdir}..z4{left}..z5{up}..z6{right}..z7; -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 "CMIN letter r"; -beginchar("r", 2sb#+hstretch*(7/8x_height#+jut#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% stem -lft x1=lft x2=pcshiftx+jut; -top y1=h; bot y2=0; -%% bowl -z3=3/4[z2,z1]; -rt x5 = w-pcshiftx; y5=y3; -x4=1/2[x3,x5]; top y4 = h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -draw z3{pdir}..z4{right}..z5{pdir}; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,100); -endchar; % end "r" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{s} -% The letter `s'. This is a `long' S. -% \begin{macrocode} -cmchar "CMIN letter s"; -beginchar("s", 2sb#+hstretch*(3/4x_height#+clubjut#), - asc_height#, 0); -adjust_fit(0,0); -numeric n[]; -pcshiftx := sb; -pickup quill; -n1 := h/ascratio; % x-height -%% stem -lft x1=lft x2=pcshiftx+clubjut; top y1=n1; bot y2=0; -%% flick -x4=x2; y4 = 1/2n1; -rt x6=w-pcshiftx; y6 = 2/3h; -x5 = 2/3[x4,x6]; top y5=h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_clubserif(1,2,0.5); -draw_roundserif(2,1,srad); -draw z4{up}...z5{right}...z6; -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 "CMIN letter t"; -beginchar("t", 2sb#+hstretch*(x_height#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% bar -top y3=h; n3 := h - top y3; -lft x1 = pcshiftx; rt x2=w-pcshiftx; -%%top y1 = y3-n3; bot y2=y3+n3; -y1 = y3-n3; y2=y3; -n1 := w; % width of bowl -n2 := h; % height of bowl -x3=1/2[x1,x2]; -lft x4 = pcshiftx + 1/8n1; y4 = 1/2h; -x5=x3; bot y5 = 0; -rt x6 = pcshiftx + 3/4n1; top y6 = 1/4h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1{pdir}..z3..z2{pdir}; % bar -draw z3..z4{down}..z5{right}..z6{pdir}; -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 "CMIN letter u"; -beginchar("u", 2sb#+hstretch*(5/8x_height#+2jut#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% left stem -lft x1 = pcshiftx + jut; top y1 = h; -% start of bowl -x13=x1; y13=1/3h; -% right stem -rt x3=w-pcshiftx-jut; 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; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z13{down}..z14{right}..z33{pdir}; -draw_flatserif(1,13,srad); -draw_tstem(3,4,srad); % right stem -draw_flatserif(3,4,srad); -draw_roundserif(4,3,srad); -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 "CMIN letter v"; -beginchar("v", 2sb#+hstretch*(3/4x_height#+jut#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -%% left stem -lft x1 = pcshiftx + jut; top y1 = h; -% start of bowl -x13=x1; y13=1/3h; -% right stem -rt x3=w-pcshiftx-jut; 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; -rt x23=w-pcshiftx; y23=3/4h; -lft x26=x14; top y26=h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z13{down}..z14{right}; % left stem -draw_flatserif(1,13,srad); -draw z14{pdir}..z23{up}..z26; - -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 "CMIN letter w"; -beginchar("w", 2sb#+hstretch*(x_height#+2jut#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -%% left stem -lft x1 = pcshiftx + jut; top y1 = h; -% start of bowl -x13=x1; y13=1/3h; -% right stem -rt x5=w-pcshiftx-jut; y5=y1; -x6=x5; bot y6=0; -z53=1/4[z6,z5]; % start of bowl -% middle stem -z3 = 1/2[z1,z5]; -z33=(x3,y13); -% middle of bowl -x14=1/3[x1,x3]; bot y14=0; -% middle of right bowl -x34=1/3[x3,x5]; y34=y14; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z13{down}..z14{right}..z33{pdir}; % left -draw_flatserif(1,13,srad); -draw z3--z33{down}..z34{right}..z53{pdir}; % middle -draw_flatserif(3,33,srad); -draw_tstem(5,6,srad); % right stem -draw_flatserif(5,6,srad); -draw_roundserif(6,5,srad); -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 "CMIN letter x"; -beginchar("x", 2sb#+hstretch*(x_height#), - x_height#, 0); -adjust_fit(0,0); -path pth[]; -numeric n[]; -pcshiftx := sb; -pickup quill; -n1 := w-2pcshiftx; % total width -n2 := thick; % triangle side -%% diag top left to bottom right -lft x1=pcshiftx; bot y1=2/3h; -x2=pcshiftx+1/7n1; top y2=h; -x5=pcshiftx+11/14n1; bot y5=-1/4d; -rt x6=pcshiftx+n1; top y6=1/6h; -z25 = 1/3[z2,z5]; -pth1 := z2{right}..z5{right}; -z251 = point 1/3 of pth1; -z252 = point 2/3 of pth1; -%% diag bottom left to top right -lft x10 = -w + 2pcshiftx; bot y10=-d; -x50=x5; top y50=h; -rt x60 = w -pcshiftx; bot y60=2/3h; -x40=pcshiftx+8/14n1; y40=h; - -x150=x2; bot y150 = 0; -lft x160 = pcshiftx; top y160=1/3h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1..z2{right}..z5{right}..z6; % top left to bottom right -%%draw z10{1/2pdir}..z25..z50{right}..z60; % bottom left to top right -draw z251..z50{right}..z60; % middle to top right -draw z252..z150{left}..z160; % middle to bottom left -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,10,25,251,252,40,50,150,60,160,100); -endchar; % end "x" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{y} -% The letter `y'. Modern, but with a dot on top. -% \begin{macrocode} -cmchar "CMIN letter y"; -beginchar("y", 2sb#+hstretch*(7/8x_height#+jut#), - x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -path pth[]; -numeric n[]; -pickup quill; -%% left stem top -lft x1 = pcshiftx + jut; top y1 = h; -bot y3 = 0; -%% right stem -rt x5=w-pcshiftx; top y5 = h; -lft x9=-1/2w; bot y9 = -d; -pth1 := z9{right}..z5{up}; -pth2 := (0,y3)--(w,y3); -z99 = pth1 intersectionpoint pth2; -x3 = x99; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1{down}..z3; % left stem -draw_flatserif(1,3,srad); -draw pth1; % right stem -draw_flatserif(5,3,srad); -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 "CMIN letter z"; -beginchar("z", 2sb#+hstretch*(x_height#), - x_height#, 0); -adjust_fit(0,0); -numeric n[]; -path pth[]; -pcshiftx := sb; -pickup quill; -%% top bar ends -top y12 = h; -n1 := h - y12; -lft x1 = pcshiftx; rt x2 = w-pcshiftx; -%%y1 = y12-n1; y2=y12+n1; -y1 = y12-n1; y2=y12; -x12 = 1/2[x1,x2]; -pth1 := z1{pdir}..z12{right}..z2{pdir}; -%% bottom bar ends -bot y34 = 0; -x3=x1; x4=x2; -%%y3=y34-n1; y4=y34+n1; -y3=y34-n1; y4=y34; -x34 = 1/2[x3,x4]; -pth2 := z3{pdir}..z34{right}..z4{pdir}; -%% diagonal -z5=z3; -pth3 := z5--(3/4w,h+jut); -z6 = pth3 intersectionpoint pth1; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; draw pth2; % bars -draw z5--z6; -ductus:=false; -penlabels(1,2,3,4,5,6,10o,10i,20o,20i,100); -endchar; % end "z" - -% \end{macrocode} -% \end{routine} -% -% -% The end of this file -% \begin{macrocode} -% -% \end{macrocode} -% -% -% \subsection{The code for capital letters} -% -% \thisfont{} `capitals' were drawn with the same pen as for the minuscules, -% and the letters were merely larger versions of the minuscules. -% -% \begin{macrocode} -%<*maj> -% CMINU.MF Program file for Carolingian Minuscule `capitals' -% - -% \end{macrocode} -% -% -% \begin{routine}{A} -% The letter `A'. -% \begin{macrocode} -cmchar "CMIN letter A"; -beginchar("A", 2sb#+caprat*hstretch*(3/4x_height#+jut#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pair pr[]; -pickup quill; -n1 := w - 2pcshiftx -jut; % effective letter width -% "stem" -x1 = pcshiftx + 6/8n1; top y1=h; -rt x2 = pcshiftx + n1; bot y2=0; -z16 = 1/6[z2,z1]; -rt x6 = x16; y6=y16; -lft x4 = pcshiftx; y4 = 1/2h; -% stem path -pth1 := z1{down}..z2; -pr1 := direction 1 of pth1; -z20 = z2 shifted -10pr1; - -z11 = point 3/13 of pth1; z15 = point 10/13 of pth1; -lft x13 = pcshiftx; y13=1/4h; -%%ductus:=true; -if ductus: - pickup stylus; -else: - % draw stem - draw pth1; - draw_roundserif(1,2,srad); - draw_roundserif(2,20,srad); - % draw bowl -%% draw z1{-pdir}..z4{down}..z6{pdir}; - draw z11{-pdir}..z13{down}..z15{pdir}; -fi -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 "CMIN letter B"; -beginchar("B", 2sb#+caprat*hstretch*(3/4x_height#+clubjut#), - caprat*asc_height#, 0); -adjust_fit(0,0); -numeric n[]; -path pth[]; -pcshiftx := sb; -pickup quill; -n1:=w-2pcshiftx; % actual letter width -n2:=h/ascratio; % top of bowl -%%ductus:=true; -lft x1 = pcshiftx+clubjut; top y1=h; -x3 = x1; y3=1/2n2; -rt x5 = w-pcshiftx; y5=y3; -x4 = 1/2[x3,x5]; bot y4=0; -x6=x4; top y6=n2; -pth1 := z1..z3{down}..z4{right}.. z5{up}; -z98=(0,3/4n2); z99=(w,y98); -pth2 := z98--z99; -z7 = pth1 intersectionpoint pth2; -if ductus: - pickup stylus; -fi -draw z1..z3{down}..z4{right}..z5{up}..z6{left}..z7{-pdir}; -draw_clubserif(1,3,0.75); -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 "CMIN letter C"; -beginchar("C", 2sb#+caprat*hstretch*(5/8x_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{pdir}; -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 "CMIN letter D"; -beginchar("D", 2sb#+caprat*hstretch*(5/8x_height#+jut#), - caprat*asc_height#, 0); -adjust_fit(0,0); -numeric n[]; -path pth[]; -pcshiftx := sb; -pickup quill; -n1 = h/ascratio; % x-height -rt x1=w-pcshiftx-jut; top y1=h; -x2 = x1; bot y2=0; -x3 = x1; y3 = 1/4n1; -lft x5 = pcshiftx; y5=1/2n1; -x4 = 1/2[x3,x5]; bot y4 = 0; -x6=x4; top y6 = n1; -x7=x3; y7=3/4n1; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); -%%draw_flatserif(1,2,srad); -draw_clubserif(1,2,0.25); -draw_roundserif(2,1,srad); -draw z3..z4{left}..z5{up}..z6{right}..z7; -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 "CMIN letter E"; -beginchar("E", sb#+caprat*hstretch*(8/8x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pickup quill; -n1 := w-pcshiftx; % actual letter width -n2 := 6/8n1; % width of bowl -x1 = pcshiftx + 5/8n2; top y1=h; -lft x2 = pcshiftx; y2 = 1/2h; -x3 = pcshiftx + 1/2n2; bot y3 = 0; -rt x4 = pcshiftx + n2; y4 = 1/4h; -%%z98=(0,3/8h); z99=(w,y98); -z98=(0,2/8h); z99=(w,y98); -pth1 := z98--z99; -pth2 := z1{left}..z2{down}..z3{right}; -z7 = pth1 intersectionpoint pth2; -rt x9 = w-pcshiftx; y9 = 3/4h; -z8=1/2[z7,z9]; - -z70 = z7 shifted 10pdir; -z17 = whatever[z7,z70]; -%%x17 = w-pcshiftx; -top y17 = h; - -rt x27=w-pcshiftx; top y27=h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z7{pdir}..z1{left}..z2{down}..z3{right}..z4{pdir}; -%%draw z7{pdir}..z8{right}..z9{pdir}; -%%draw z7--z17; -draw z7--z27; -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 "CMIN letter F"; -beginchar("F", 2sb#+caprat*hstretch*(3/4x_height#+jut#), - (asc_height#), 0); -adjust_fit(0,0); -numeric n[]; -pcshiftx := sb; -pickup quill; -n1 := h/ascratio; % x-height -%% stem -lft x1=lft x2=pcshiftx+jut; top y1=n1; bot y2=0; -%% flick -x4=x2; y4 = 1/2n1; -rt x6=w-pcshiftx; y6 = 2/3h; -x5 = 2/3[x4,x6]; top y5=h; -%% bar -z14=1/2[z4,z1]; -rt x16 = w -pcshiftx; top y16 = 1/2[y14,y6]; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -draw z4{up}...z5{right}...z6; % top -draw z14{right}..z16{pdir}; % bar -ductus:=false; -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 "CMIN letter G"; -beginchar("G", 2sb#+caprat*hstretch*(5/4x_height#), - caprat*x_height#, desc_depth#); -adjust_fit(0,0); -path pth[]; -pair vec[]; -numeric n[]; -pcshiftx := sb; -pickup quill; -n1 := 4/5w - 2pcshiftx; % width of top o -%% top O -x1 = x3 = pcshiftx + 1/2n1; top y1=h; bot y3=1/8h; -lft x4 = pcshiftx; rt x2 = pcshiftx+n1; y2 = y4 = 1/2[y1,y3]; - -%% top flick -lft x11 = rt x1; y11=y1; -rt x13 = w-pcshiftx; y13 = h; - -%% bottom -z31=z3; -x33 = w-pcshiftx; y33 = -1/2d; -x35=x31; bot y35 = -d; -rt x36 = lft x4; y36 = 1/2[y35,y33]; - -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1..z2..z3..z4..cycle; % top O -draw z11{right}..z13{pdir}; % flick -draw z31{right}..z33{down}..z35{left}..z36; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,11,12,13,31,32,33,34,35,36,100); -endchar; % end "G" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{H} -% The letter `H'. -% \begin{macrocode} -cmchar "CMIN letter H"; -beginchar("H", 2sb#+caprat*hstretch*(6/8x_height#+clubjut#), - caprat*asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -numeric n[]; -%% stem -lft x1=lft x2=pcshiftx+jut; -top y1=h; bot y2=0; -%% bowl -z3=1/2[z2,z1]; -rt x5 = w-pcshiftx; y5=y3; -x4=1/2[x3,x5]; top y4 = h/ascratio; -%%lft x6=x4; bot y6=0; -x6=1/2[x4,x5]; -bot y6=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -%%draw_flatserif(1,2,srad); -draw_clubserif(1,2,0.5); -draw_roundserif(2,1,srad); -draw z3{pdir}..z4..z5..z6{-pdir}; - -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 "CMIN letter I"; -beginchar("I", 2sb#+caprat*hstretch*(thick#+2jut#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -lft x1=lft x2=pcshiftx+jut; -top y1=h; bot y2=0; -%%ductus:=true; -draw_tstem(1,2,srad); -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -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 "CMIN letter J"; -beginchar("J", sb#+caprat*hstretch*(3/8x_height#), - caprat*x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% stem -rt x1 = w-pcshiftx; top y1 = h; -x2=x1; y2=-1/2d; -%% bottom hook -lft x3 = 0; bot y3 = -d; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2; % stem -draw_flatserif(1,2,srad); -draw z2{down}..z3{-pdir}; % hook -ductus:=false; -penlabels(1,2,3,100); -endchar; % end "J" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{K} -% The letter `K'. -% \begin{macrocode} -cmchar "CMIN letter K"; -beginchar("K", 2sb#+caprat*hstretch*(7/8x_height#+clubjut#), - caprat*asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -path pth[]; -numeric n[]; -pickup quill; -%% stem -n1 = h/ascratio; % x-height -lft x1=lft x2=pcshiftx+clubjut; -y1=h; bot y2=0; -%% top arm -%%z3=(x1,1/2n1); -x3 = x1; top y3 = 1/2n1; -rt x5=5/8[x1,w-pcshiftx]; top y5=n1; -x4=1/2[x3,x5]; top y4=n1; -pth1 := z3{pdir}..z5{up}; -%% lower arm -pth2 := (rt x1,0)--(rt x1,h); -z13 = pth1 intersectionpoint pth2; -pickup threequarterquill; -lft x14 = x13; bot y14 = y13; -rt x7=w-pcshiftx; bot y7=0; -pickup quill; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_clubserif(1,2,0.5); -draw_roundserif(2,1,srad); -draw pth1; % upper arm -pickup threequarterquill; -%%draw z14{down}..z7{-ppdir}; % lower arm -%%draw z14{down}..z7; % lower arm -draw z14{-ppdir}..z7{right}; % lower arm -pickup quill; -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 "CMIN letter L"; -beginchar("L", 2sb#+caprat*hstretch*(thick#+clubjut#+jut#), - caprat*asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -lft x1=pcshiftx+clubjut; top y1=h; -x2=x1; bot y2 =0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); -draw_clubserif(1,2,0.5); -draw_roundserif(2,1,srad); -ductus:=false; -penlabels(1,2,3,4,100); -endchar; % end "L" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{M} -% The letter `M'. -% \begin{macrocode} -cmchar "CMIN letter M"; -beginchar("M", 2sb#+caprat*hstretch*(x_height#+2jut#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pickup quill; -%% left stem -lft x1=pcshiftx+jut; top y1=h; -x2=x1; bot y2=0; -%% start of bowl -x13=x1; y13=3/4h; -%% bottom of right and middle stems -rt x6 = w -pcshiftx - jut; y6=y2; -z4 = 1/2[z2,z6]; -%% top of middle and right stems -x3=x4; y3=y1; -x5=x6; y5=y13; -%% top of bowls -x14=2/3[x13,x3]; top y14 = h; -x33=x4; y33=y13; -x34=2/3[x33,x5]; y34 = y14; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % left half -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -draw z13{pdir}..z14{right}..z33{down}--z4; -draw_roundserif(4,3,srad); -draw z33{pdir}..z34{right}..z5{down}--z6; -draw_roundserif(6,5,srad); -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 "CMIN letter N"; -beginchar("N", 2sb#+caprat*hstretch*(5/8x_height#+2jut#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -%% left stem -lft x1=pcshiftx+jut; top y1=h; -x2=x1; bot y2=0; -% start of bowl -x13=x1; y13=3/4h; -%% right stem -rt x4 = w-pcshiftx-jut; y4=y2; -x3 = x4; y3 = y13; -% top of bowl -x14 = 2/3[x13,x3]; top y14 = h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % left stem -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -draw z13{pdir}..z14{right}..z3{down}--z4; -draw_roundserif(4,3,srad); -ductus:=false; -penlabels(1,2,3,4,5,6,13,14,100); -endchar; % end "N" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{O} -% The letter `O'. -% \begin{macrocode} -cmchar "CMIN letter O"; -beginchar("O", 2sb#+caprat*hstretch*(3/4x_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; -draw z1..z2..z3..z4..cycle; -z5=(pcshiftx,-o); -obowl(5, w-2pcshiftx, h+2o); -%%ductus:=true; -if ductus: - pickup stylus; - draw obfirst; draw obsecond; draw obouter; draw obinner; -else: -%% fill obouter; unfill obinner; -fi -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 "CMIN letter P"; -beginchar("P", 2sb#+caprat*hstretch*(3/4x_height#+jut#), - caprat*x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% stem -lft x1=lft x2=pcshiftx+jut; -top y1=h; bot y2=-d; -%% bowl % from "d" -z3=3/4[(x1,0),z1]; -rt x5 = w-pcshiftx; y5=1/2h; -x4=1/2[x3,x5]; top y4 = h; -x6=x4; bot y6=0; -z7=1/4[(x1,0),z1]; - -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad) -draw z3{pdir}..z4{right}..z5{down}..z6{left}..z7; % bowl (from d) -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 "CMIN letter Q"; -beginchar("Q", 2sb#+caprat*hstretch*(3/4x_height#+jut#), - caprat*x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% right stem -rt x1=w-pcshiftx-jut; top y1=h; -x2=x1; bot y2=-d; -%% bowl -z3=1/4[(x1,0),z1]; -lft x5=pcshiftx; y5=1/2h; -x4=1/2[x3,x5]; bot y4=0; -x6=x4; top y6=h; -z7=3/4[(x1,0),z1]; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); -%%draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -draw z3{-pdir}..z4{left}..z5{up}..z6{right}..z7; -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 "CMIN letter R"; -beginchar("R", 2sb#+caprat*hstretch*(7/8x_height#+jut#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% stem -lft x1=lft x2=pcshiftx+jut; -top y1=h; bot y2=0; -%% bowl -z3=3/4[z2,z1]; -rt x5 = w-pcshiftx; y5=y3; -x4=1/2[x3,x5]; top y4 = h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -draw z3{pdir}..z4{right}..z5{pdir}; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,100); -endchar; % end "R" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{S} -% The letter `S'. This is a `long' S. -% \begin{macrocode} -cmchar "CMIN letter S"; -beginchar("S", 2sb#+caprat*hstretch*(3/4x_height#+clubjut#), - caprat*asc_height#, 0); -adjust_fit(0,0); -numeric n[]; -pcshiftx := sb; -pickup quill; -n1 := h/ascratio; % x-height -%% stem -lft x1=lft x2=pcshiftx+clubjut; top y1=n1; bot y2=0; -%% flick -x4=x2; y4 = 1/2n1; -rt x6=w-pcshiftx; y6 = 2/3h; -x5 = 2/3[x4,x6]; top y5=h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_clubserif(1,2,0.5); -draw_roundserif(2,1,srad); -draw z4{up}...z5{right}...z6; -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 "CMIN letter T"; -beginchar("T", 2sb#+caprat*hstretch*(x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% bar -top y3=h; n3 := h - top y3; -lft x1 = pcshiftx; rt x2=w-pcshiftx; -%%top y1 = y3-n3; bot y2=y3+n3; -y1 = y3-n3; y2=y3; -n1 := w; % width of bowl -n2 := h; % height of bowl -x3=1/2[x1,x2]; -lft x4 = pcshiftx + 1/8n1; y4 = 1/2h; -x5=x3; bot y5 = 0; -rt x6 = pcshiftx + 3/4n1; top y6 = 1/4h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1{pdir}..z3..z2{pdir}; % bar -draw z3..z4{down}..z5{right}..z6{pdir}; -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 "CMIN letter U"; -beginchar("U", 2sb#+caprat*hstretch*(5/8x_height#+2jut#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% left stem -lft x1 = pcshiftx + jut; top y1 = h; -% start of bowl -x13=x1; y13=1/3h; -% right stem -rt x3=w-pcshiftx-jut; 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; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z13{down}..z14{right}..z33{pdir}; -draw_flatserif(1,13,srad); -draw_tstem(3,4,srad); % right stem -draw_flatserif(3,4,srad); -draw_roundserif(4,3,srad); -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 "CMIN letter V"; -beginchar("V", 2sb#+caprat*hstretch*(3/4x_height#+jut#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -%% left stem -lft x1 = pcshiftx + jut; top y1 = h; -% start of bowl -x13=x1; y13=1/3h; -% right stem -rt x3=w-pcshiftx-jut; 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; -rt x23=w-pcshiftx; y23=3/4h; -lft x26=x14; top y26=h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z13{down}..z14{right}; % left stem -draw_flatserif(1,13,srad); -draw z14{pdir}..z23{up}..z26; - -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 "CMIN letter W"; -beginchar("W", 2sb#+caprat*hstretch*(x_height#+2jut#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -%% left stem -lft x1 = pcshiftx + jut; top y1 = h; -% start of bowl -x13=x1; y13=1/3h; -% right stem -rt x5=w-pcshiftx-jut; y5=y1; -x6=x5; bot y6=0; -z53=1/4[z6,z5]; % start of bowl -% middle stem -z3 = 1/2[z1,z5]; -z33=(x3,y13); -% middle of bowl -x14=1/3[x1,x3]; bot y14=0; -% middle of right bowl -x34=1/3[x3,x5]; y34=y14; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z13{down}..z14{right}..z33{pdir}; % left -draw_flatserif(1,13,srad); -draw z3--z33{down}..z34{right}..z53{pdir}; % middle -draw_flatserif(3,33,srad); -draw_tstem(5,6,srad); % right stem -draw_flatserif(5,6,srad); -draw_roundserif(6,5,srad); -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 "CMIN letter X"; -beginchar("X", 2sb#+caprat*hstretch*(x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -path pth[]; -numeric n[]; -pcshiftx := sb; -pickup quill; -n1 := w-2pcshiftx; % total width -n2 := thick; % triangle side -%% diag top left to bottom right -lft x1=pcshiftx; bot y1=2/3h; -x2=pcshiftx+1/7n1; top y2=h; -x5=pcshiftx+11/14n1; bot y5=-1/4d; -rt x6=pcshiftx+n1; top y6=1/6h; -z25 = 1/3[z2,z5]; -pth1 := z2{right}..z5{right}; -z251 = point 1/3 of pth1; -z252 = point 2/3 of pth1; -%% diag bottom left to top right -lft x10 = -w + 2pcshiftx; bot y10=-d; -x50=x5; top y50=h; -rt x60 = w -pcshiftx; bot y60=2/3h; -x40=pcshiftx+8/14n1; y40=h; - -x150=x2; bot y150 = 0; -lft x160 = pcshiftx; top y160=1/3h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1..z2{right}..z5{right}..z6; % top left to bottom right -%%draw z10{1/2pdir}..z25..z50{right}..z60; % bottom left to top right -draw z251..z50{right}..z60; % middle to top right -draw z252..z150{left}..z160; % middle to bottom left -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,10,25,251,252,40,50,150,60,160,100); -endchar; % end "X" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{Y} -% The letter `Y'. Modern, but with a dot on top. -% \begin{macrocode} -cmchar "CMIN letter Y"; -beginchar("Y", 2sb#+caprat*hstretch*(7/8x_height#+jut#), - caprat*x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -path pth[]; -numeric n[]; -pickup quill; -%% left stem top -lft x1 = pcshiftx + jut; top y1 = h; -bot y3 = 0; -%% right stem -rt x5=w-pcshiftx; top y5 = h; -lft x9=-1/2w; bot y9 = -d; -pth1 := z9{right}..z5{up}; -pth2 := (0,y3)--(w,y3); -z99 = pth1 intersectionpoint pth2; -x3 = x99; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1{down}..z3; % left stem -draw_flatserif(1,3,srad); -draw pth1; % right stem -draw_flatserif(5,3,srad); -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 "CMIN letter Z"; -beginchar("Z", 2sb#+caprat*hstretch*(x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -numeric n[]; -path pth[]; -pcshiftx := sb; -pickup quill; -%% top bar ends -top y12 = h; -n1 := h - y12; -lft x1 = pcshiftx; rt x2 = w-pcshiftx; -%%y1 = y12-n1; y2=y12+n1; -y1 = y12-n1; y2=y12; -x12 = 1/2[x1,x2]; -pth1 := z1{pdir}..z12{right}..z2{pdir}; -%% bottom bar ends -bot y34 = 0; -x3=x1; x4=x2; -%%y3=y34-n1; y4=y34+n1; -y3=y34-n1; y4=y34; -x34 = 1/2[x3,x4]; -pth2 := z3{pdir}..z34{right}..z4{pdir}; -%% diagonal -z5=z3; -pth3 := z5--(3/4w,h+jut); -z6 = pth3 intersectionpoint pth1; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; draw pth2; % bars -draw z5--z6; -ductus:=false; -penlabels(1,2,3,4,5,6,10o,10i,20o,20i,100); -endchar; % end "Z" - -% \end{macrocode} -% \end{routine} -% -% -% -% The end of this file -% \begin{macrocode} -% -% \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#+trijut#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -x1=w/2; top y1 = h; -z3=(x1, 1/2dot_size); -z2=(x1, y3+3/2dot_size); -draw z1--z2; -draw_pdot(3,dot_size); -penlabels(1,2,3); - -endchar; % end of "!" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{?} -% The `?' character, which had not been invented at this time. -% \begin{macrocode} - -cmchar "Question mark"; -beginchar("?", 2sb#+hstretch*(3/4x_height#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pickup quill; -n1 := w-2pcshiftx; % actual character width -n2 := 1/3h; % height of top bowl -n3 := n2; % height of bottom bowl -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/3h; -draw_pdot(1,dot_size); -draw_pdot(2,dot_size); -penlabels(1,2); -endchar; % end ":" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{;} -% The `;' character. -% \begin{macrocode} - -cmchar "Semicolon"; -beginchar(";",2sb#+hstretch*(comma_width#+dot_size#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb; -x1=x2=w-pcshiftx-(0.5hstretch*dot_size); y1=2/3h; y2=1/3h; -draw_pdot(1,dot_size); -draw_pcomma(2,dot_size,comma_width); -penlabels(1,2); -endchar; % end of ";" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{'} -% The `'' character. -% \begin{macrocode} - -cmchar "Apostrophe"; -beginchar("'",2sb#+hstretch*(comma_width#+dot_size#),4/3x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb; -x1=w-pcshiftx-(0.5hstretch*dot_size); y1=h; -draw_pcomma(1,dot_size,comma_width); -penlabels(1); -endchar; % end of "'" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{`} -% The ``' character. -% \begin{macrocode} - -cmchar "Reverse apostrophe"; -beginchar("`",2sb#+hstretch*(comma_width#+dot_size#),4/3x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb; -x1=pcshiftx+(0.5hstretch*dot_size); y1=h; -draw_plq(1,dot_size,comma_width); -penlabels(1); -endchar; % end of "`" - -% \end{macrocode} -% \end{routine} -% -% The end of this file. -% \begin{macrocode} -% -% \end{macrocode} -% -% -% \subsection{The ligatures and dashes file} -% -% The ligatured letters, punctuation marks and dashes are defined in this file. -% \begin{macrocode} -%<*lig> -% CMINLIG.MF Carolingian ligatured letters, punctation and dashes - -% \end{macrocode} -% First the ligtables. -% \begin{macrocode} - -ligtable "`": "`"=:oct"134"; -ligtable "'": "'"=:oct"042"; %% , "?" kern 2u#, "!" kern 2u#; - -ligtable "-": "-"=:oct"173"; -ligtable oct"173": "-"=:oct"174"; - -ligtable "c": "t"=:oct"014"; -ligtable "s": "t"=:oct"015"; - -% \end{macrocode} -% -% \begin{routine}{ct} -% The `ct' ligature. -% \begin{macrocode} - -cmchar "The ct ligature"; -beginchar(oct"014", 2sb#+hstretch*(6/4x_height#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pair vc[]; -pickup quill; -%%%%%%%%%%% C - -n1:=1/2(w-2pcshiftx); % actual letter width -n2 := h/ascratio; % x-height -x1=pcshiftx + 1/2n1; top y1 = n2; -lft x2 = pcshiftx; y2 = 1/2n2; -x3 = x1; bot y3 = 0; -rt x4 = n1; y4 = 1/4n2; -x6 = x4; -%%y6 = 3/4n2; -top y6 = y1; -pth1 := z6..z1{left}..z2{down}..z3{right}..z4{pdir}; -%%%%%%%%%%%%% T - -%% bar -top y33=n2; n3 := n2 - top y33; -%%lft x31 = n1+pcshiftx; -lft x31 = n1; -rt x32=w-pcshiftx; -%%top y31 = y33-n3; bot y32=y33+n3; -top y31 = y33-n3; y32=y33; -x33=1/2[x31,x32]; -pth2 := z31{pdir}..z33..z32{pdir}; % T bar -n31 := n1; % width of bowl -%%lft x34 = pcshiftx + n1 + 1/8n31; -lft x34 = n1 + 1/8n31; -y34 = 1/2n2; -x35=x33; bot y35 = 0; -rt x36 = pcshiftx + n1 + 3/4n31; top y36 = 1/4n2; -pth3 := z33..z34{down}..z35{right}..z36{pdir}; % T bowl - -%%%%%%%%%%%%%%%%% Ligature - -z51=z6; -z55=z33; -x53 = 1/2[x51,x55]; -top y53 = h; -vc51 := direction 0 of pth1; -vc55 := direction 0 of pth3; -pth4 := z51{vc51}..z53{right}..z55{vc55}; % loop -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; % C -draw pth2; % T bar -draw pth3; % T bowl -draw pth4; % ligature loop -ductus:=false; -penlabels(1,2,3,4,5,6,14,16,17,18,31,32,33,34,35,36,100); -endchar; % end of "ct" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{st} -% The `st' ligature. -% \begin{macrocode} - -cmchar "The st ligature"; -beginchar(oct"015", 2sb#+hstretch*(9/8x_height#+clubjut#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pair vc[]; -pickup quill; -%%%%%%%%%%% S - -n1:=3/7(w-2pcshiftx-clubjut); % actual letter width -n2 := h/ascratio; % x-height - -%% stem -lft x1=lft x2=pcshiftx+clubjut; top y1=n2; bot y2=0; -%% flick -x4=x2; y4 = 1/2n1; -%%%%%%%%%%%%% T - -%% bar -top y33=n2; n3 := n2 - top y33; -%%lft x31 = n1+pcshiftx; -lft x31 = n1; -rt x32=w-pcshiftx; -%%top y31 = y33-n3; bot y32=y33+n3; -top y31 = y33-n3; y32=y33; -x33=1/2[x31,x32]; -pth2 := z31{pdir}..z33..z32{pdir}; % T bar -n31 := n1; % width of bowl -%%lft x34 = pcshiftx + n1 + 1/8n31; -lft x34 = n1 + 1/8n31; -y34 = 1/2n2; -x35=x33; bot y35 = 0; -rt x36 = pcshiftx + n1 + 3/4n31; top y36 = 1/4n2; -pth3 := z33..z34{down}..z35{right}..z36{pdir}; % T bowl - -%%%%%%%%%%%%%%%%% Ligature - -z51=z4; -z55=z33; -x53 = 5/8[x51,x55]; -top y53 = h; -vc51 := up; -vc55 := direction 0 of pth3; -pth4 := z51{vc51}...z53{right}..z55{vc55}; % loop -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2; % S stem -draw_clubserif(1,2,0.5); -draw_roundserif(2,1,srad); -draw pth2; % T bar -draw pth3; % T bowl -draw pth4; % ligature loop -ductus:=false; -penlabels(1,2,3,4,5,6,14,16,17,18,31,32,33,34,35,36,100); -endchar; % end of "st" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{''} -% The `''' ligature. -% \begin{macrocode} - -cmchar "Closing quotes"; -beginchar(oct"042",2sb#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb; -x1=w-pcshiftx-(0.5hstretch*dot_size); y1=y2=h; -x2=x1-(2hstretch*dot_size); -draw_pcomma(1,dot_size,comma_width); % right -draw_pcomma(2,dot_size,comma_width); % left -penlabels(1,2); -endchar; % end of "''" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{``} -% The ```' ligature. -% \begin{macrocode} - -cmchar "Opening quotes"; -beginchar(oct"134",2sb#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb; -x1=pcshiftx+(0.5hstretch*dot_size); y1=y2=h; -x2=x1+(2hstretch*dot_size); -draw_plq(1,dot_size,comma_width); % left -draw_plq(2,dot_size,comma_width); % right -penlabels(1,2); -endchar; % end of "``" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{-} -% The `-' (hyphen) character. -% \begin{macrocode} - -cmchar "Hyphen"; -beginchar("-",sb#+hstretch*(0.8x_height#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb/2; -numeric alpha; alpha:=w/8; -%%pickup quill; -%%lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; -%%x11=lft x1+alpha/2; y11=top y1-0.5thin; -%%x12=rt x2; y12=bot y1+0.5thin; -%%draw_triangle(11,alpha); -%%draw_rutriangle(12,alpha); -%%pickup thickstylus; -pickup halfquill; -lft x21=pcshiftx+jut; rt x22=w-pcshiftx-jut; y21=y22=1/2h; -draw z21--z22; -draw_roundserif(21,22,srad); draw_flatserif(22,21,srad); -penlabels(1,2); -endchar; % end of "-" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{--} -% The `--' (en-dash) ligature. -% \begin{macrocode} - -cmchar "En dash"; -beginchar(oct"173",sb#+hstretch*(x_height#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb/2; -numeric alpha; alpha:=w/8; -pickup quill; -%%lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; -%%x11=lft x1+alpha/2; y11=top y1-0.5thin; -%%x12=rt x2; y12=bot y1+0.5thin; -%%draw_triangle(11,alpha); -%%draw_rutriangle(12,alpha); -%%pickup thickstylus; -pickup halfquill; -lft x21=pcshiftx+jut; rt x22=w-pcshiftx-jut; y21=y22=1/2h; -draw z21--z22; -draw_roundserif(21,22,srad); draw_flatserif(22,21,srad); -penlabels(1,2); -endchar; % end of "--" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{---} -% The `---' (em dash) ligature. The em dash is twice the width of the en dash. -% \begin{macrocode} - -cmchar "Em dash"; -beginchar(oct"174",sb#+hstretch*(2x_height#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb/2; -numeric alpha; alpha:=w/8; -pickup quill; -%%lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; -%%x11=lft x1+alpha/2; y11=top y1-0.5thin; -%%x12=rt x2; y12=bot y1+0.5thin; -%%draw_triangle(11,alpha); -%%draw_rutriangle(12,alpha); -%%pickup thickstylus; -pickup halfquill; -lft x21=pcshiftx+jut; rt x22=w-pcshiftx-jut; y21=y22=1/2h; -draw z21--z22; -draw_roundserif(21,22,srad); draw_flatserif(22,21,srad); -penlabels(1,2); -endchar; % end of "---" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{&} -% The ampersand (which is really an `et' ligature). -% \begin{macrocode} - -cmchar "CMIN ampersand"; -beginchar("&", 2sb#+hstretch*(5/4x_height#+2jut#), asc_height#, 0); -adjust_fit(0,0); -numeric n[]; -path pth[]; -pcshiftx:=sb; -pickup quill; -%% alpha looking part -n1 := w-2pcshiftx-jut; % actual letter width -n2 := h/ascratio; % x-height -n3 := 16/16n2; % height of alpha -x1 = w-pcshiftx; bot y1 = 0; -x3 = pcshiftx + 12/16n1; y3 = 1/2n3; % 10/16 too small -lft x5 = pcshiftx; y5=y3; -x4 = x6 = 1/2[x5,x3]; -top y4 = n3; bot y6 = 0; -rt x8 = w-pcshiftx-jut; top y8 = h; -x9 = x8-2jut; x10 = x8+2jut; -y9 = y10 = y8; -pth1 := z1{left}..z3..z4{left}..z5{down}..z6{right}..z3..z8{up}; -%% loop -z21 = z5; -z25 = point 1.5 of pth1; -x23 = 1/2[x21,x25]; -y23 = 6/8[y4,y8]; -pth2 := z21{up}..z23{right}..z25{down}; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; draw z9--z10; % alpha part -draw pth2; % loop -penlabels(1,2,3,4,5,6,7,8,9,10,16,17,18,19,21,22,23,24,25); -endchar; % end of "&" - -% \end{macrocode} -% \end{routine} -% -% -% The end of this file. -% \begin{macrocode} -% -% \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> -% CMINDIG.MF Program file for Carolingian Minuscule digits -% - -% \end{macrocode} -% -% -% -% \begin{routine}{1} -% The digit `1'. -% \begin{macrocode} -cmchar "Carolingian digit 1"; -beginchar("1", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -x1=x2=w/2; -y1=h; bot y2=0; -%%ductus:=true; -draw_tstem(1,2,srad); -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,100); -endchar; % end "1" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{2} -% The digit `2'. -% \begin{macrocode} -cmchar "Carolingian digit 2"; -beginchar("2", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -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; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_wave(5,6,thin); % foot -draw z1..z2{right}..z3{down}..{-pdir}z5wl; % curve -ductus:=false; -penlabels(1,2,3,4,5,6,100); -endchar; % end "2" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{3} -% The digit `3'. -% \begin{macrocode} -cmchar "Carolingian 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 "Carolingian digit 4"; -beginchar("4", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% the stem -x1=x2=w-pcshiftx-jut; -y1=h; bot y2=0; -% the crossbar -lft x3=pcshiftx; y3=0.33h; -rt x4=w-pcshiftx; y4=y3; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % main stem -draw_wave(3,4,thin); % crossbar -draw z3wl--z1; % diagonal -ductus:=false; -penlabels(1,2,3,4,100); -endchar; % end "4" - -% \end{macrocode} -% \end{routine} -% -% -% -% \begin{routine}{5} -% The digit `5'. -% \begin{macrocode} -cmchar "Carolingian digit 5"; -beginchar("5", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -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; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_wave(2,1,thin); % top squiggle -draw z3{pdir}..z5{down}..z6{left}..z7; % curve -draw z2wl--z3; % vertical -ductus:=false; -penlabels(1,2,3,4,5,6,7,100); -endchar; % end "5" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{6} -% The digit `6'. -% \begin{macrocode} -cmchar "Carolingian 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 "Carolingian digit 7"; -beginchar("7", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% top bar -lft x1=pcshiftx; -rt x2=w-pcshiftx; -top y1=top y2=h; -% bowed leg -x4=w/2; bot y4=0; -x3=0.5[x2,x4]-3thin; y3=0.5[y2,y4]; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_wave(1,2,thin); % top bar -draw z1wr..z3..z4; -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 "Carolingian 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 "Carolingian 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 "Carolingian 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; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,100); -endchar; % end "0" - -% \end{macrocode} -% \end{routine} -% -% -% The end of this file. -% \begin{macrocode} -% -% \end{macrocode} -% -% -% \section{The font definition files} \label{sec:fd} -% -% The font comes in normal and bold weights only. -% -% \begin{macrocode} -%<*fdot1> -\DeclareFontFamily{OT1}{cmin}{} - \DeclareFontShape{OT1}{cmin}{m}{n}{ <-8.5> cmin7 <8.5-15> cmin10 <15-> cmin17 }{} - \DeclareFontShape{OT1}{cmin}{m}{sl}{ <-> sub * cmin/m/n }{} - \DeclareFontShape{OT1}{cmin}{m}{it}{ <-> sub * cmin/m/n }{} - \DeclareFontShape{OT1}{cmin}{m}{sc}{ <-> sub * cmin/m/n }{} - \DeclareFontShape{OT1}{cmin}{m}{u}{ <-> sub * cmin/m/n }{} - \DeclareFontShape{OT1}{cmin}{bx}{n}{ <-8.5> cminb7 <8.5-15> cminb10 <15-> cminb17 }{} - \DeclareFontShape{OT1}{cmin}{bx}{it}{ <-> sub * cmin/bx/n }{} - \DeclareFontShape{OT1}{cmin}{bx}{sl}{ <-> sub * cmin/bx/n }{} - \DeclareFontShape{OT1}{cmin}{b}{n}{ <-> sub * cmin/bx/n }{} -% -% \end{macrocode} -% -% -% \begin{macrocode} -%<*fdt1> -\DeclareFontFamily{T1}{cmin}{} - \DeclareFontShape{T1}{cmin}{m}{n}{ <-8.5> cmin7 <8.5-15> cmin10 <15-> cmin17 }{} - \DeclareFontShape{T1}{cmin}{m}{sl}{ <-> sub * cmin/m/n }{} - \DeclareFontShape{T1}{cmin}{m}{it}{ <-> sub * cmin/m/n }{} - \DeclareFontShape{T1}{cmin}{m}{sc}{ <-> sub * cmin/m/n }{} - \DeclareFontShape{T1}{cmin}{m}{u}{ <-> sub * cmin/m/n }{} - \DeclareFontShape{T1}{cmin}{bx}{n}{ <-8.5> cminb7 <8.5-15> cminb10 <15-> cminb17 }{} - \DeclareFontShape{T1}{cmin}{bx}{it}{ <-> sub * cmin/bx/n }{} - \DeclareFontShape{T1}{cmin}{bx}{sl}{ <-> sub * cmin/bx/n }{} - \DeclareFontShape{T1}{cmin}{b}{n}{ <-> sub * cmin/bx/n }{} -% -% \end{macrocode} -% -% \section{The package code} \label{sec:code} -% -% \subsection{The \Lpack{carolmin} package} -% -% The \Lpack{carolmin} 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{carolmin}[2002/12/30 v1.0 package for Carolingian Minuscule 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}{\cminfamily} -% Selects the \thisfont{} font family in the OT1 or T1 encoding. -% \begin{macrocode} -\ifx\Tienc\encodingdefault - \newcommand{\cminfamily}{\usefont{T1}{cmin}{m}{n}} -\else - \newcommand{\cminfamily}{\usefont{OT1}{cmin}{m}{n}} -\fi -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\textcmin} -% Text command for the \thisfont{} font family. -% \begin{macrocode} -\DeclareTextFontCommand{\textcmin}{\cminfamily} -% \end{macrocode} -% \end{macro} -% -% The end of this package. -% \begin{macrocode} -% -% \end{macrocode} -% -% \subsection{The \Lpack{allcmin} package} -% -% The \Lpack{allcmin} 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{carolmin} package. -% \begin{macrocode} -%<*uscall> -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{allcmin}[2002/12/30 v1.0 package for all Carolingian Minuscule fonts] -\RequirePackage{carolmin} -% \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}{cmin} -\renewcommand{\sfdefault}{cmin} -\renewcommand{\ttdefault}{cmin} -% \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}{\cmin@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{\cmin@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}{\cmin@new@setfontsize} -% This is a macro that replaces the |\@setfontsize| macro which is called by -% the font size changing commands. -% \begin{macrocode} -\newcommand{\cmin@new@setfontsize}[3]{% - \edef\@tempa{\def\noexpand\@tempb####1<#2}% - \@tempa>##2<##3\@nil{\def\cmin@baselineskip@value{##2}}% - \edef\@tempa{\noexpand\@tempb\cmin@baselineskip@table<#2}% - \@tempa><\@nil - \ifx\cmin@baselineskip@value\@empty - \def\cmin@baselineskip@value{#3}% - \fi - \cmin@old@setfontsize{#1}{#2}\cmin@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\cmin@old@setfontsize=\@setfontsize - \let\@setfontsize=\cmin@new@setfontsize} -\AtBeginDocument{\normalsize} -% \end{macrocode} -% -% -% The end of this package. -% \begin{macrocode} -% -% \end{macrocode} -% -% -% -% -% -% \Finale -% \PrintIndex -% -\endinput - -%% \CharacterTable -%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -%% Digits \0\1\2\3\4\5\6\7\8\9 -%% Exclamation \! Double quote \" Hash (number) \# -%% Dollar \$ Percent \% Ampersand \& -%% Acute accent \' Left paren \( Right paren \) -%% Asterisk \* Plus \+ Comma \, -%% Minus \- Point \. Solidus \/ -%% Colon \: Semicolon \; Less than \< -%% Equals \= Greater than \> Question mark \? -%% Commercial at \@ Left bracket \[ Backslash \\ -%% Right bracket \] Circumflex \^ Underscore \_ -%% Grave accent \` Left brace \{ Vertical bar \| -%% Right brace \} Tilde \~} - - diff --git a/Master/texmf-dist/source/latex/bookhands/carolmin/carolmin.ins b/Master/texmf-dist/source/latex/bookhands/carolmin/carolmin.ins deleted file mode 100644 index c014d83af0e..00000000000 --- a/Master/texmf-dist/source/latex/bookhands/carolmin/carolmin.ins +++ /dev/null @@ -1,101 +0,0 @@ -%% -%% carolmin.ins -%% Copyright 1999 Peter R. Wilson -%% -%% This program is provided under the terms of the -%% LaTeX Project Public License distributed from CTAN -%% archives in directory macros/latex/base/lppl.txt. -%% -%% Author: Peter Wilson (CUA) -%% now at: peter.r.wilson@boeing.com -%% -%% This file will generate fast loadable files and documentation -%% driver files from the doc files in this package when run through -%% LaTeX or TeX. -%% -%% --------------- start of docstrip commands ------------------ -%% -\def\batchfile{carolmin.ins} -\input docstrip.tex -\preamble - - Copyright 1999 Peter R. Wilson - - This program is provided under the terms of the - LaTeX Project Public License distributed from CTAN - archives in directory macros/latex/base/lppl.txt. - -Author: Peter Wilson (CUA) - now at: peter.r.wilson@boeing.com - -\endpreamble - -\keepsilent - -%%% \Msg{*** Generating the driver file ***} -%%% \generateFile{carolmin.drv}{t}{\from{carolmin.dtx}{driver}} - -\Msg{*** Generating the Metafont files ***} - -\usepostamble\empty -\generateFile{cmin7.mf}{t}{\from{carolmin.dtx}{base7}} -\generateFile{cmin10.mf}{t}{\from{carolmin.dtx}{base10}} -\generateFile{cmin17.mf}{t}{\from{carolmin.dtx}{base17}} -\generateFile{cminb7.mf}{t}{\from{carolmin.dtx}{base7b}} -\generateFile{cminb10.mf}{t}{\from{carolmin.dtx}{base10b}} -\generateFile{cminb17.mf}{t}{\from{carolmin.dtx}{base17b}} -\generateFile{cminl.mf}{t}{\from{carolmin.dtx}{min}} -\generateFile{cminu.mf}{t}{\from{carolmin.dtx}{maj}} -\generateFile{cmintitle.mf}{t}{\from{carolmin.dtx}{mfd}} -\generateFile{cminpunct.mf}{t}{\from{carolmin.dtx}{punct}} -\generateFile{cminlig.mf}{t}{\from{carolmin.dtx}{lig}} -\generateFile{cmindig.mf}{t}{\from{carolmin.dtx}{dig}} - -\Msg{*** Generating the Font Definition files ***} -\usepostamble\defaultpostamble - -\generateFile{ot1cmin.fd}{t}{\from{carolmin.dtx}{fdot1}} -\generateFile{t1cmin.fd}{t}{\from{carolmin.dtx}{fdt1}} - -\Msg{*** Generating the LaTeX2e package files ***} - -\generateFile{carolmin.sty}{t}{\from{carolmin.dtx}{usc}} -\generateFile{allcmin.sty}{t}{\from{carolmin.dtx}{uscall}} - -\Msg{***********************************************************} -\Msg{*} -\Msg{* To finish the installation you have to move the following} -\Msg{* files into directories searched by TeX:} -\Msg{*} -\Msg{* Move these into the font source area:} -\Msg{* \space\space cmin7.mf} -\Msg{* \space\space cmin10.mf} -\Msg{* \space\space cmin17.mf} -\Msg{* \space\space cminb7.mf} -\Msg{* \space\space cminb10.mf} -\Msg{* \space\space cminb17.mf} -\Msg{* \space\space cminl.mf} -\Msg{* \space\space cminu.mf} -\Msg{* \space\space cmintitle.mf} -\Msg{* \space\space cminpunct.mf} -\Msg{* \space\space cminlig.mf} -\Msg{* \space\space cmindig.mf} -\Msg{*} -\Msg{* Move these into the LaTeX macro area:} -\Msg{* \space\space ot1cmin.fd} -\Msg{* \space\space t1cmin.fd} -\Msg{* \space\space carolmin.sty} -\Msg{* \space\space allcmin.sty} -\Msg{*} -\Msg{*} -\Msg{* To produce the documentation run the files ending with} -\Msg{* `.dtx' through LaTeX.} -\Msg{* Process any name.idx file by:} -\Msg{* \space\space\space\space makeindex -s gind.ist name} -\Msg{* Process any name.glo file by:} -\Msg{* \space\space\space\space makeindex -s gglo.ist -o name.gls name.glo} -\Msg{*} -\Msg{* Happy TeXing} -\Msg{***********************************************************} - -\endinput diff --git a/Master/texmf-dist/source/latex/bookhands/egothic/egothic.dtx b/Master/texmf-dist/source/latex/bookhands/egothic/egothic.dtx deleted file mode 100644 index 88a6cacefd8..00000000000 --- a/Master/texmf-dist/source/latex/bookhands/egothic/egothic.dtx +++ /dev/null @@ -1,5036 +0,0 @@ -% \iffalse meta-comment -% -% egothic.dtx -% Copyright 1999 Peter R. Wilson -% -% This program is provided under the terms of the -% LaTeX Project Public License distributed from CTAN -% archives in directory macros/latex/base/lppl.txt. -% -% Author: Peter Wilson (CUA) (now at: peter.r.wilson@boeing.com) -% -% If you do not have the docmfp package (available from CTAN in -% tex-archive/macros/latex/contrib/supported), comment out the -% \usepackage{docmfp} line below and uncomment the line following it. -% -%<*driver> -\documentclass{ltxdoc} -\usepackage{docmfp} -%%%%%% \providecommand{\DescribeVariable}[1]{} \newenvironment{routine}[1]{}{} -\EnableCrossrefs -\CodelineIndex -%% comment out next line to show the code -\OnlyDescription -\setcounter{StandardModuleDepth}{1} -\begin{document} - \DocInput{egothic.dtx} -\end{document} -% -% -% \fi -% -% \CheckSum{134} -% -% \DoNotIndex{\',\.,\@M,\@@input,\@addtoreset,\@arabic,\@badmath} -% \DoNotIndex{\@centercr,\@cite} -% \DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue} -% \DoNotIndex{\@input,\@ixpt,\@m} -% \DoNotIndex{\@minus,\@mkboth,\@ne,\@nil,\@nomath,\@plus,\@set@topoint} -% \DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb} -% \DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt} -% \DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt} -% \DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace} -% \DoNotIndex{\advance,\Alph,\alph} -% \DoNotIndex{\arabic,\ast,\begin,\begingroup,\bfseries,\bgroup,\box} -% \DoNotIndex{\bullet} -% \DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption} -% \DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass} -% \DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\endtrivlist} -% \DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup} -% \DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter} -% \DoNotIndex{\fbox} -% \DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef} -% \DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule} -% \DoNotIndex{\hsize,\hskip,\hspace,\hss,\if@tempswa,\ifcase,\or,\fi,\fi} -% \DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\fi,\fi,\fi,\fi,\fi} -% \DoNotIndex{\input} -% \DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark} -% \DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright} -% \DoNotIndex{\month,\newcommand,\newcounter,\newenvironment} -% \DoNotIndex{\NeedsTeXFormat,\newdimen} -% \DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number} -% \DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\p@} -% \DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip} -% \DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions} -% \DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright} -% \DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font} -% \DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily,\roman} -% \DoNotIndex{\roman,\secdef,\selectfont,\setbox,\setcounter,\setlength} -% \DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space} -% \DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase} -% \DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt} -% \DoNotIndex{\viipt,\vipt,\vskip,\vspace} -% \DoNotIndex{\wd,\xiipt,\year,\z@} -% -% \changes{v1.0}{2002/12/30}{First public release} -% -% \def\fileversion{v1.0} -% \def\filedate{2002/12/30} -% \newcommand*{\Lpack}[1]{\textsf {#1}} ^^A typeset a package -% \newcommand*{\Lopt}[1]{\textsf {#1}} ^^A typeset an option -% \newcommand*{\file}[1]{\texttt {#1}} ^^A typeset a file -% \newcommand*{\Lcount}[1]{\textsl {\small#1}} ^^A typeset a counter -% \newcommand*{\pstyle}[1]{\textsl {#1}} ^^A typeset a pagestyle -% \newcommand*{\Lenv}[1]{\texttt {#1}} ^^A typeset an environment -% \newcommand*{\AD}{\textsc{ad}} -% \newcommand*{\thisfont}{Early Gothic} -% -% \title{The \Lpack{Early Gothic} fonts\thanks{This -% file has version number \fileversion, last revised -% \filedate.}} -% -% \author{% -% Peter Wilson\\ -% Catholic University of America \\ -% Now at \texttt{peter.r.wilson@boeing.com} -% } -% \date{\filedate} -% \maketitle -% \begin{abstract} -% The \Lpack{egothic} and \Lpack{allegoth} packages provide a set of -% Metafont \thisfont{} book-hands -% as used -% for manuscripts in the 11th and 12th centuries. This is one in a series -% of manuscript fonts. -% \end{abstract} -% \tableofcontents -% \listoftables -% -% -% -% -% \section{Introduction} -% -% The \Lpack{egothic} and \Lpack{allegoth} packages provide a Metafont~\cite{METAFONT} version -% of the \thisfont{} manuscript book-hand that was in use between about the -% eleventh and twelfth centuries~\AD. It is part of a project to provide fonts -% covering the major manuscript hands between the first century~\AD{} and -% the invention of printing. The principal resources used in this project -% are listed in the Bibliography. -% -% This manual is typeset according to the conventions of the -% \LaTeX{} \textsc{docstrip} utility which enables the automatic -% extraction of the \LaTeX{} macro source files~\cite{GOOSSENS94}. -% The \Lpack{docmfp} package is used for documenting the Metafont portions -% of the distribution~\cite{DOCMFP}. -% -% Section~\ref{sec:usc} describes the usage of the package. -% Commented code for the fonts is in Sections~\ref{sec:mf} and~\ref{sec:fd} -% and source code for the package is in Section~\ref{sec:code}. -% -% \subsection{Manuscript book-hands} -% -% Before the invention of printing all books were written by hand. The book-hands -% used by the scribes and copyists for the manuscripts changed as time -% went on. Table~\ref{tab:1} lists some of the common book-hands which were used -% between the 1st and 15th centuries. The later book-hands formed the basis of the -% fonts used by the early printers, which in turn form the basis of the printing -% fonts in use today. -% -% The manuscript book-hands were written with a broad nibbed reed or quill -% pen. Among the distinguishing characteristics of a hand, apart from the -% actual shape of the letters, are the angle of the pen (which controls the -% variation between thick and thin strokes) and the height of a letter compared -% to the width of the nib. The lower the ratio of the letter height to nib -% width, the more condensed is the script. The scripts also varied in their -% typical height. -% -% Table~\ref{tab:1} gives an `average' x-height for each -% script, which I obtained by measuring a sample of photographs of -% manuscripts written in the various hands. About a dozen examples -% of each book-hand were measured. This figure should not be taken too -% seriously. -% -% There was not a sharp division between the use of one hand and another. -% Many manuscripts exhibit a variety of hands in the same document. For example, -% the scribe writing in an Uncial hand may have used Roman Rustic letters -% for capitals. Usually the same pen was used for the two different scripts. -% -% Generally speaking, as a hand got older it became more embelished, and -% therefore took longer to write. As this happened a new hand would appear that -% was faster, and which would eventually make the earlier one obsolete. -% -% Many of the book-hands were single-cased; that is, they did not have an -% upper- and lower-case as we do nowadays in Western scripts. On the other -% hand, a script might be majuscule or minuscule. A \textit{majuscule} script -% is one, like our upper-case, where the letters are drawn between two lines -% and are of a uniform height with no ascenders or descenders. -% A \textit{minuscule} script, like our lower-case, is drawn between four lines -% and has ascenders and descenders. -% -% \begin{table} -% \centering -% \caption{The main manuscript book-hands} \label{tab:1} -% \begin{tabular}{lccccc} \hline -% Name & Century & x-height & Height & Pen & Normalised \\ -% & & (mm) & (nib widths) & angle & height \\ \hline -% Roman Rustic & 1--6 & 5.7 & 4--6 & 45 & 1.90 \\ -% Uncial & 3--6 & 4.1 & 4--5 & 30 & 1.37 \\ -% Half Uncial & 3--9 & 3.2 & 3--6 & 20--30 & 1.07 \\ -% Artificial Uncial & 6--10 & 4.2 & 3--6 & 10 & 1.40 \\ -% Insular majuscule & 6--9 & 4.2 & 5 & 0--20 & 1.40 \\ -% Insular minuscule & 6 onward & 4.1 & 5--6 & 45--70 & 1.37 \\ -% Carolingian minuscule & 8--12 & 3.0 & 3--5 & 45 & 1.00 \\ -% Early Gothic & 11--12 & 3.8 & 4--6 & 20--45 & 1.27 \\ -% Gothic Textura & 13--15 & 3.9 & 3--5 & 30--45 & 1.30 \\ -% Gothic Prescius & 13 onward & 3.3 & 4--5 & 45 & 1.10 \\ -% Rotunda & 13--15 & 3.2 & 4--6 & 30 & 1.07 \\ -% Humanist minuscule & 14 onward & 3.0 & 4--5 & 30--40 & 1.00 \\ \hline -% \end{tabular} -% \end{table} -% -% During the period under consideration arabic numerals were effectively -% not used. At the beginning they were unknown and even though some knew -% of them towards the end, the glyphs used for them are not recognisable --- -% to me they look somewhat like cryllic letters --- and each locality -% and time had its own highly individualistic rendering. The general rule -% when using one of these book-hands is to write all numbers using -% roman numerals. -% -% The Roman alphabet consisted of 23 capital letters --- the J, U and W -% were absent. The book-hands initially used both a `u' and a `v' interchangeably -% but by the 10th century the practice had become to use the `v' before a vowel -% and the `u' otherwise. The letter corresponding to the W sound appeared -% in England around the 7th century in -% the form of the runic \textit{wen} character and by about the 11th century -% the `w' chacter was generally used. The `J' is the newest letter of all, not -% appearing until about the mid 16th century. -% -% In the first century punctuation was virtually unknown, and typically -% would not even be any additional space between individual words, never -% mind denoting ends of sentences. Sometimes a dot at mid-height would be -% used as a word seperator, or to mark off the end of a paragraph. Effectively -% a text was a continuous stream of letters. By the time that printing was -% invented, though, all of our modern punctuation marks were being used. -% -% Among all these manuscript hands, the Carolingian minuscule is the -% most important as our modern fonts are based on its letter shapes, and it is -% also at this point in time where the division occured between the black letter -% scripts as used even today in Germany, and the lighter fonts used elesewhere. -% The Rotunda and Humanist minuscule hands were developed in Italy and were -% essentially a rediscovery of the Carolingian minusucle. Guthenberg took the -% Gothic scripts as the model for his types. Later printers, -% such as Nicholas Jenson of Venice, -% took the Humanist scripts as their models. -% -% -% \subsection{The \thisfont{} script} -% -% Towards the end of the 10th century Carolingian Minuscule started to change, -% perhaps driven by an increased demand for books by a better educated public -% and the advent of what would become universities. Economics dictated that -% reproduction had to be quicker and that more words should be squeezed into -% a given space. -% -% To increase speed and word density, curves became straighter and the width -% of individual letter was decreased. The result is what is now called -% \thisfont, which was a short-lived intermediary between Carolingian -% Minuscule and the full blown Gothic scripts. -% -% The `ct' Carolingian ligature went out of fashion but the `half r' -% began to be used after any letter with a bowl. -% -% -% \section{The \Lpack{egothic} and \Lpack{allegoth} packages} \label{sec:usc} -% -% The \thisfont{} font family is called |egoth|. The font is supplied in both -% OT1 and T1 encodings. -% -% \subsection{The \Lpack{egothic} 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{\egothfamily} -% The |\egothfamily| 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{\textegoth} -% The command |\textegoth{|\meta{text}|}| will typeset \meta{text} using the -% \thisfont{} fonts. -% -% \subsection{The \Lpack{allegoth} 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{allegoth} package automatically loads the \Lpack{egothic} package, -% so its font commands are available if necessary. -% -% \StopEventually{ -% \bibliographystyle{alpha} -% \renewcommand{\refname}{Bibliography} -% \begin{thebibliography}{GMS94} -% \addcontentsline{toc}{section}{\refname} -% -% \bibitem[And69]{ANDERSON69} -% Donald M.~Anderson. -% \newblock {\em The Art of Written Forms: The Theory and Practice of Calligraphy}. -% \newblock Holt, Rinehart and Winston, 1969. -% -% \bibitem[Bol95]{BOLOGNA95} -% Giulia Bologna. -% \newblock {\em Illuminated Manuscripts: The Book before Gutenberg}. -% \newblock Crescent Books, 1995. -% -% \bibitem[Day95]{DAY95} -% Lewis F.~Day. -% \newblock {\em Alphabets Old \& New}. -% \newblock (3rd edition originally published by B.~T.~Batsford, 1910) -% \newblock Senate, 1995. -% -% \bibitem[Dro80]{DROGIN80} -% Marc Drogin. -% \newblock {\em Medieval Calligraphy: Its History and Technique}. -% \newblock Allenheld, Osmun \& Co., 1980. -% -% \bibitem[Dru95]{DRUCKER95} -% Johanna Drucker. -% \newblock {\em The Alphabetic Labyrinth}. -% \newblock Thames \& Hudson, 1995. -% -% \bibitem[Fir93]{FIRMAGE93} -% Richard A.~Firmage. -% \newblock {\em The Alphabet Abecedarium}. -% \newblock David R~Goodine, 1993. -% -% \bibitem[Fli98]{LETTRINE} -% Daniel Flipo. -% \newblock {\em The LETTRINE package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1998. -% -% \bibitem[Har95]{HARRIS95} -% David Harris. -% \newblock {\em The Art of Calligraphy}. -% \newblock DK Publishing, 1995. -% -% \bibitem[Jen95]{BETON} -% Frank Jensen. -% \newblock {\em The BETON package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1995. -% -% \bibitem[Joh71]{JOHNSTON75} -% Edward Johnston (ed. Heather Child). -% \newblock {\em Formal Penship and Other Papers}. -% \newblock Penthalic, 1971. -% -% \bibitem[Knu87]{CM} -% Donald E.~Knuth. -% \newblock {\em Computer Modern Typefaces}. -% \newblock Addison-Wesley, 1987. -% -% \bibitem[Knu92]{METAFONT} -% Donald E.~Knuth. -% \newblock {\em The METAFONTbook}. -% \newblock Addison-Wesley, 1992. -% -% \bibitem[GMS94]{GOOSSENS94} -% Michel Goossens, Frank Mittelbach, and Alexander Samarin. -% \newblock {\em The LaTeX Companion}. -% \newblock Addison-Wesley Publishing Company, 1994. -% -% \bibitem[Tho75]{THOMAS75} -% Alan G.~Thomas. -% \newblock {\em Great Books and Book Collectors}. -% \newblock Weidenfield and Nichoson, 1975. -% -% \bibitem[Wil99]{DOCMFP} -% Peter R.~Wilson. -% \newblock {\em The DOCMFP Package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1999. -% -% \bibitem[Wil99b]{ROMANNUM} -% Peter R.~Wilson. -% \newblock {\em The ROMANNUM Package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1999. -% -% \end{thebibliography} -% } -% -% \section{The Metafont code} \label{sec:mf} -% -% -% As previously noted, this work is part of a larger project to provide -% fonts covering the main manuscript book-hands. As such, one of the -% aims is to produce a coordinated set of fonts, especially as multiple -% hands might be used in a single document. -% -% Noting that the hands tend to be somewhat larger than the typical 10pt -% size (where the x-height is approximately 1.5mm) used for modern books, -% I have also designed the fonts -% at a larger than normal size, then applied some non-linear factors when reducing -% them down to a 10pt size. -% Further, I have used the height of the Carolingian minuscule as a -% normalising factor when deciding on the absolute height of any particular -% script. The x-height of the Carolingian font is made equal to the -% x-height of the Computer Modern Roman (CMR) font. -% -% Modern fonts are effectively drawn. That is, the outline of the letter is -% drawn carefully and the center is filled with ink. This is shown to good -% effect in the Metafont code for the Computer Modern fonts~\cite{CM}. -% In contrast, the manuscript letters were inked by single pen strokes in -% a calligraphic manner. I have tried to repeat this calligraphic style -% in the Metafont code. -% -% As much as possible I have tried to use parameter values from the -% Computer Modern Roman (CMR) fonts in order to reduce possible -% infelicities if the CM and manuscript fonts are used together. However, -% few of the CMR parameters are applicable to the calligraphic style. -% -% -% \subsection{The parameter file} -% -% We deal with the parameter files first, and start by announcing -% what they are for. The \thisfont{} font comes in three sizes and also as a normal -% and a bold font. -% \begin{macrocode} -%<*base7|base10|base17|base7b|base10b|base17b> -%%%% EGOTH7.MF Early Gothic at 7 point design size. -%%%% EGOTH10.MF Early Gothic at 10 point design size. -%%%% EGOTH17.MF Early Gothic at 17 point design size. -%%%% EGOTHB7.MF Early Gothic Bold at 7 point design size. -%%%% EGOTHB10.MF Early Gothic Bold at 10 point design size. -%%%% EGOTHB17.MF Early Gothic 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 - -%font_identifier:="EGOTH"; font_size 7pt#; -%font_identifier:="EGOTH"; font_size 10pt#; -%font_identifier:="EGOTH"; font_size 17.28pt#; -%font_identifier:="EGOTHB"; font_size 7pt#; -%font_identifier:="EGOTHB"; font_size 10pt#; -%font_identifier:="EGOTHB"; font_size 17.28pt#; - -% \end{macrocode} -% -% \DescribeVariable{jutstretch} -% The CMR scaling for lowercase serifs wrt 17pt size. -% \begin{macrocode} -% jutstretch:=1.19; -% jutstretch:=1.152; -% jutstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{stemstretch} -% The CMR scaling for lowercase stem widths wrt 17pt size. -% \begin{macrocode} -% stemstretch:=1.50; -% stemstretch:=1.31; -% stemstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{caprat} -% The scaling for `capitals' wrt `lowercase'. This is pretty much a guess -% (the ratio for CMR10 is 1.59). -% \begin{macrocode} - caprat:=1.5; % ratio of capital height to minuscule height -% \end{macrocode} -% -% \DescribeVariable{cap_jutstretch} -% The CMR scaling for uppercase serifs wrt 17pt size. -% \begin{macrocode} -% cap_jutstretch:=1.3; -% cap_jutstretch:=1.2; -% cap_jutstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{cap_stemstretch} -% The CMR scaling for uppercase stem width wrt 17pt size. -% \begin{macrocode} -% cap_stemstretch:=1.45; -% cap_stemstretch:=1.31; -% cap_stemstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{bfudge} -% Letter width scaling for bold font wrt normal font. -% \begin{macrocode} -% bfudge:=1.0; -% bfudge:=1.2; -% \end{macrocode} -% -% \DescribeVariable{szfudge} -% Width scaling wrt 17pt letter width. -% \begin{macrocode} -% szfudge:=1.18; -% szfudge:=1.0; -% szfudge:=1.0; -% \end{macrocode} -% -% \DescribeVariable{hstretch} -% Horizontal stretching factor wrt 17pt size letter width. -% \begin{macrocode} - hstretch:=szfudge*bfudge; -% \end{macrocode} -% -% \DescribeVariable{carol_height} -% The x-height of the Carolingian gothic font. -% \begin{macrocode} -% carol_height#:=108.5/36pt#; -% carol_height#:=155/36pt#; -% carol_height#:=268/36pt#; -% \end{macrocode} -% -% \DescribeVariable{vstretch} -% The height of this font wrt the Carolingian font. -% \begin{macrocode} - vstretch:=1.27; - -% \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} -% u#:=15.5/36pt#; -% u#:=20/36pt#; -% u#:=32.5/36pt#; -% u#:=17.9/36pt#; -% u#:=23/36pt#; -% 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 -% cap_serif_fit#:=3.5/36pt#; % extra sidebar near uppercase serifs -% cap_serif_fit#:=5/36pt#; % extra sidebar near uppercase serifs -% cap_serif_fit#:=8/36pt#; % extra sidebar near uppercase serifs -% letter_fit#:=0pt#; % extra space added to all sidebars -% letter_fit#:=0pt#; % extra space added to all sidebars -% letter_fit#:=-0.1pt#; % extra space added to all sidebars -% \end{macrocode} -% -% \DescribeVariable{sb} -% A length used for adjusting the side bearings of characters. -% This is normally |1/2u| but decrease by 3/4 for Gothic lowercase. -% \begin{macrocode} -% sb#:=3/8u#; % unit for side bearings -% sb#:=3/8u#; % unit for side bearings -% sb#:=3/8u#; % unit for side bearings - -% \end{macrocode} -% -% \DescribeVariable{cap_sb} -% A length used for adjusting the side bearings of uppercase characters. -% \begin{macrocode} -% cap_sb#:=4/3sb#; % unit for uppercase side bearings -% cap_sb#:=4/3sb#; % unit for side bearings -% cap_sb#:=4/3sb#; % unit for side bearings - -% \end{macrocode} -% -% \DescribeVariable{cap_height} -% The height of capital letters. -% \begin{macrocode} -% cap_height#:=172.2/36pt#; % height of caps -% cap_height#:=246/36pt#; % height of caps -% cap_height#:=425/36pt#; % height of caps -% \end{macrocode} -% -% \DescribeVariable{thickfudge} -% The reciprocal of the font height in nib widths. Normal font height -% is 6 nib widths and the bold font height is 5 nib widths. -% \begin{macrocode} -% thickfudge:=1/6; -% thickfudge:=1/5; -% \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:=35; % pen angle -% \end{macrocode} -% -% \DescribeVariable{cappangle} -% The pen angle for capitals (in degrees). -% \begin{macrocode} -cappangle:=0; % pen angle -cappangle := pangle; -% \end{macrocode} -% -% \DescribeVariable{ascratio} -% The height of lower case ascenders wrt |x_height|. -% \begin{macrocode} - ascratio:=6/4; -% \end{macrocode} -% -% \DescribeVariable{asc_height} -% The height of lower case ascenders. -% \begin{macrocode} - asc_height#:=ascratio*x_height#; -% \end{macrocode} -% -% \DescribeVariable{descratio} -% The depth of lower case descenders wrt |x_height|. -% \begin{macrocode} - descratio:=2/4; -% \end{macrocode} -% -% \DescribeVariable{desc_depth} -% The depth of lower case descenders. -% \begin{macrocode} - desc_depth#:=descratio*x_height#; -% \end{macrocode} -% -% \DescribeVariable{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} -% rule_thickness#:=.34pt#; -% rule_thickness#:=.4pt#; -% 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 Capitals flat serif protrusion. -% \begin{macrocode} -sqrcjut# := 2cap_jutstretch*thin#; -% \end{macrocode} -% -% \DescribeVariable{sqrcjutrat} -% Ratio of Square Capitals 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} -% o#:=5/36pt#; -% o#:=8/36pt#; -% 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 egothtitle %% switch to the driver file - -% \end{macrocode} -% -% The end of this code section. -% \begin{macrocode} -% -% \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 EGOTHTITLE.MF for the Early Gothic 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}{egothic_font_setup} -% This macro contains the set up for the \thisfont{} fonts. -% \begin{macrocode} - -def egothic_font_setup= % contains special stuff for egothic fonts - define_pixels(side,half_height,carol_height,comma_width); - define_pixels(u,dot_size,letter_size,cap_height,width_adj,serif_fit, - cap_serif_fit,jut,clubjut,cap_jut,trijut); - define_pixels(fig_width); - define_whole_pixels(letter_fit,sb,cap_sb); - define_whole_vertical_pixels(body_height,asc_height,cap_height,x_height, - desc_depth,body_depth,fig_height); - define_corrected_pixels(o); - define_blacker_pixels(thick,thin); - define_pixels(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 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} -% -% \DescribeVariable{capquill} -% The normal calligraphic pen for capitals is |capquill|. -% \begin{macrocode} - pickup pencircle xscaled thick yscaled thin rotated cappangle; - capquill:=savepen; - -% \end{macrocode} -% -% \DescribeVariable{capthinquill} -% A pen with a fraction of the width as capquill (but with the same thinness). -% \begin{macrocode} - pickup pencircle xscaled 3/8thick yscaled thin rotated cappangle; %% 1/4 too small - capthinquill := 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 egothic_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 $0y$$: - 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 $0y$$: - 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 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; -egothic_font_setup; - -% \end{macrocode} -% -% -% We generate letters, together with some punctuation and -% analphabetics. -% \begin{macrocode} - -input egothl; % lower case -input egothu; % capitals -input egothpunct; % punctuation -input egothlig; % the several dashes -input egothdig; % 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. - -% -% \end{macrocode} -% -% \subsection{The code for normal letters} -% -% The following code is for the lower case characters. -% -% \begin{macrocode} -%<*min> -% EGOTHL.MF Program file for Early Gothic lower case -% - -% \end{macrocode} -% -% -% \begin{routine}{a} -% The letter `a'. -% \begin{macrocode} -cmchar "EGOTH letter a"; -beginchar("a", 2sb#+hstretch*(9/16x_height#+jut#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pair pr[]; -pickup quill; -n1 := w - 2pcshiftx -jut; % effective letter width -% "stem" -rt x1 = w-pcshiftx-jut; top y1=h; -x2 = x1; bot y2=0; -z16 = 1/6[z2,z1]; -rt x6 = x16; y6=y16; -lft x4 = pcshiftx; y4 = 1/2h; -% stem path -pth1 := z1--z2; -pr1 := direction 1 of pth1; -z20 = z2 shifted -10pr1; - -z11 = point 3/13 of pth1; z15 = point 10/13 of pth1; -lft x13 = pcshiftx; y13=1/4h; -n2 := y13 - bot y13; -z23 = (x13, y13+n2); -z33 = (x13, y13-n2); -%%ductus:=true; -if ductus: - pickup stylus; -else: - % draw stem - draw pth1; - draw_roundserif(1,2,srad); - draw_roundserif(2,1,srad); - % draw bowl -%% draw z1{-pdir}..z4{down}..z6{pdir}; - draw z11{-pdir}..z23{down}..z33..z15{pdir}; -fi -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 "EGOTH letter b"; -beginchar("b", 2sb#+hstretch*(11/16x_height#+jut#), - asc_height#, 0); -adjust_fit(0,0); -numeric n[]; -path pth[]; -pcshiftx := sb; -pickup quill; -n1:=w-2pcshiftx; % actual letter width -n2:=h/ascratio; % top of bowl -%%ductus:=true; -lft x1 = pcshiftx+jut; top y1=h; -x3 = x1; y3=2/8n2; -rt x5 = w-pcshiftx; y5=y3; -x4 = 1/2[x3,x5]; bot y4=0; -x6=1/2[x4,x5]; top y6=n2; -pth1 := z1..z3{down}..z4{right}.. z5{up}; -z98=(0,3/4n2); z99=(w,y98); -pth2 := z98--z99; -%z7 = pth1 intersectionpoint pth2; -z7=(x1,6/8n2); -if ductus: - pickup stylus; -fi -draw z1--z3{down}..z4{right}..z5{up}..z6; -draw z6--z7; -draw_flatserif(1,3,srad); -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 "EGOTH letter c"; -beginchar("c", 2sb#+hstretch*(9/16x_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{pdir}; -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 "EGOTH letter d"; -beginchar("d", 2sb#+hstretch*(11/16x_height#+jut#), - asc_height#, 0); -adjust_fit(0,0); -numeric n[]; -path pth[]; -pcshiftx := sb; -pickup quill; -n1 = h/ascratio; % x-height -rt x1=w-pcshiftx-jut; top y1=h; -x2 = x1; bot y2=0; -x3 = x1; y3 = 1/4n1; -lft x5 = pcshiftx; y5=6/8n1; -x4 = 3/8[x3,x5]; bot y4 = 0; -x6=1/2[x4,x5]; top y6 = n1; -x7=x3; top y7=n1; -rt x8 = w-pcshiftx; y8=n1; -if ductus: - pickup stylus; -fi -draw z1--z2; -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -draw z3..z4{left}..z5{up}..z6; -draw z6..z7..z8; -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 "EGOTH letter e"; -beginchar("e", sb#+hstretch*(15/16x_height#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pickup quill; -n1 := w-pcshiftx; % actual letter width -n2 := 6/8n1; % width of bowl -x1 = pcshiftx + 5/8n2; top y1=h; -lft x2 = pcshiftx; y2 = 1/2h; -x3 = pcshiftx + 1/2n2; bot y3 = 0; -rt x4 = pcshiftx + n2; y4 = 1/4h; -%%z98=(0,3/8h); z99=(w,y98); -z98=(0,2/8h); z99=(w,y98); -pth1 := z98--z99; -pth2 := z1{left}..z2{down}..z3{right}; -z7 = pth1 intersectionpoint pth2; -rt x9 = w-pcshiftx; y9 = 3/4h; -z8=1/2[z7,z9]; - -z70 = z7 shifted 10pdir; -z17 = whatever[z7,z70]; -%%x17 = w-pcshiftx; -top y17 = h; - -rt x27=w-pcshiftx; top y27=h; -pth3 := z7--z27; % diagonal -pth4 := z1--z9; - -z34 = pth3 intersectionpoint pth4; -pth5 := z34--z1{left}...z2{down}..z3{right}..z4{pdir}; % bowl -%%ductus:=true; -if ductus: - pickup stylus; -fi -%%draw z7{pdir}..z1{left}..z2{down}..z3{right}..z4{pdir}; -%%draw z7{pdir}..z8{right}..z9{pdir}; -%%draw z7--z17; -draw pth5; % bowl -draw pth3; % diagonal -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,17,27,34,70,100); -endchar; % end "e" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{f} -% The letter `f'. -% \begin{macrocode} -cmchar "EGOTH letter f"; -beginchar("f", 2sb#+hstretch*(9/16x_height#+jut#), - (asc_height#), 0); -adjust_fit(0,0); -numeric n[]; -pcshiftx := sb; -pickup quill; -n1 := h/ascratio; % x-height -%% stem -lft x1=lft x2=pcshiftx+jut; top y1=h; bot y2=0; -%% flick -x4=x2; y4 = 1/2n1; -%%rt x6=w-pcshiftx; y6 = 2/3h; -%%x5 = 2/3[x4,x6]; top y5=h; -x6 = x1; y6=y1; rt x8 = w-pcshiftx; y8=h; -%% bar -z14=1/2[z4,z1]; -rt x16 = w -pcshiftx; bot y16 = y14; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -draw z6{right}..z8{pdir}; % top -draw z14{right}..z16{pdir}; % bar -ductus:=false; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,14,15,16,100); -endchar; % end "f" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{g} -% The letter `g'. -% \begin{macrocode} -cmchar "EGOTH letter g"; -beginchar("g", 2sb#+hstretch*(12/16x_height#+2jut#), - x_height#, desc_depth#); -adjust_fit(0,0); -path pth[]; -pair vec[]; -numeric n[]; -pcshiftx := sb; -pickup quill; -n1 := 4/5w - 2pcshiftx; % width of top o -%% S shape -x1 = x3 = x5 = 1/2w; -top y1 = h; bot y5 = -d; y3 = 1/2[y1,y5]; -lft x2 = pcshiftx + jut; rt x4 = w - pcshiftx - jut; -y2 = 1/2[y1,y3]; y4 = 1/2[y3,y5]; -%% bow -z12 = (x4,y2); -lft x16 = pcshiftx; bot y16=-d; -pth2 := z16...z12{up}...z1; -n2 := top y5; -pth3 := (0, n2)--(w, n2); -z6 = pth3 intersectionpoint pth2; -%% top flick -%lft x11 = rt x1; y11=y1; -z11=z1; -rt x13 = w-pcshiftx; y13 = h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1..z2{down}..z3..z4{down}..z5{left}..z6; % S -draw pth2; % bow -draw z11{right}..z13{pdir}; % flick -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,11,12,13,31,32,33,34,35,36,100); -endchar; % end "g" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{h} -% The letter `h'. -% \begin{macrocode} -cmchar "EGOTH letter h"; -beginchar("h", 2sb#+hstretch*(11/16x_height#+jut#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -numeric n[]; -%% stem -lft x1=lft x2=pcshiftx+jut; -top y1=h; bot y2=0; -%% bowl -z3=1/2[z2,z1]; -rt x5 = w-pcshiftx; y5=y3; -x4=9/16[x3,x5]; top y4 = h/ascratio; -%%lft x6=x4; bot y6=0; -x6=9/16[x4,x5]; -bot y6=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -draw z3--z4{right}...z5{down}...z6{-pdir}; - -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 "EGOTH letter i"; -beginchar("i", 2sb#+hstretch*(thick#+2jut#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -lft x1=lft x2=pcshiftx+jut; -top y1=h; bot y2=0; -%%ductus:=true; -draw_tstem(1,2,srad); -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -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 "EGOTH letter j"; -beginchar("j", sb#+hstretch*(3/8x_height#), - x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% stem -rt x1 = w-pcshiftx; top y1 = h; -x2=x1; y2=-1/2d; -%% bottom hook -lft x3 = 0; bot y3 = -d; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2; % stem -draw_flatserif(1,2,srad); -draw z2{down}..z3{-pdir}; % hook -ductus:=false; -penlabels(1,2,3,100); -endchar; % end "j" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{k} -% The letter `k'. -% \begin{macrocode} -cmchar "EGOTH letter k"; -beginchar("k", 2sb#+hstretch*(13/16x_height#+jut#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -path pth[]; -numeric n[]; -pickup quill; -%% stem -n1 = h/ascratio; % x-height -lft x1=lft x2=pcshiftx+jut; -y1=h; bot y2=0; -%% top arm -%%z3=(x1,1/2n1); -x3 = x1; top y3 = 1/2n1; -rt x5=5/8[x1,w-pcshiftx]; top y5=n1; -x4=1/2[x3,x5]; top y4=n1; -pth1 := z3{pdir}..z5{up}; -%% lower arm -pth2 := (rt x1,0)--(rt x1,h); -z13 = pth1 intersectionpoint pth2; -pickup threequarterquill; -lft x14 = x13; bot y14 = y13; -rt x7=w-pcshiftx; bot y7=0; -pickup quill; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -draw pth1; % upper arm -pickup threequarterquill; -%%draw z14{down}..z7{-ppdir}; % lower arm -%%draw z14{down}..z7; % lower arm -draw z14{-ppdir}..z7{right}; % lower arm -pickup quill; -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 "EGOTH letter l"; -beginchar("l", 2sb#+hstretch*(thick#+2jut#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -lft x1=pcshiftx+jut; top y1=h; -x2=x1; bot y2 =0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -ductus:=false; -penlabels(1,2,3,4,100); -endchar; % end "l" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{m} -% The letter `m'. -% \begin{macrocode} -cmchar "EGOTH letter m"; -beginchar("m", 2sb#+hstretch*(15/16x_height#+2jut#), % 12/16 too narrow, 14 a bit - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pickup quill; -%% left stem -lft x1=pcshiftx+jut; top y1=h; -x2=x1; bot y2=0; -%% start of bowl -x13=x1; y13=3/4h; -%% bottom of right and middle stems -rt x6 = w -pcshiftx - jut; y6=y2; -z4 = 1/2[z2,z6]; -%% top of middle and right stems -x3=x4; y3=y1; -x5=x6; y5=y13; -%% top of bowls -x14=2/3[x13,x3]; top y14 = h; -x33=x4; y33=y13; -x34=2/3[x33,x5]; y34 = y14; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % left half -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -draw z13--z14{right}..z33{down}--z4; -draw_roundserif(4,3,srad); -draw z33--z34{right}..z5{down}--z6; -draw_roundserif(6,5,srad); -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 "EGOTH letter n"; -beginchar("n", 2sb#+hstretch*(9/16x_height#+2jut#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -%% left stem -lft x1=pcshiftx+jut; top y1=h; -x2=x1; bot y2=0; -% start of bowl -x13=x1; y13=3/4h; -%% right stem -rt x4 = w-pcshiftx-jut; y4=y2; -x3 = x4; y3 = y13; -% top of bowl -x14 = 2/3[x13,x3]; top y14 = h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % left stem -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -draw z13--z14{right}..z3{down}--z4; -draw_roundserif(4,3,srad); -ductus:=false; -penlabels(1,2,3,4,5,6,13,14,100); -endchar; % end "n" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{o} -% The letter `o'. -% \begin{macrocode} -cmchar "EGOTH letter o"; -beginchar("o", 2sb#+hstretch*(3/4x_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; -draw z1..z2..z3..z4..cycle; -z5=(pcshiftx,-o); -obowl(5, w-2pcshiftx, h+2o); -%%ductus:=true; -if ductus: - pickup stylus; - draw obfirst; draw obsecond; draw obouter; draw obinner; -else: -%% fill obouter; unfill obinner; -fi -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 "EGOTH letter p"; -beginchar("p", 2sb#+hstretch*(11/16x_height#+jut#), - x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% stem -lft x1=lft x2=pcshiftx+jut; -top y1=h; bot y2=-d; -%% bowl % from "d" -z3=3/4[(x1,0),z1]; -rt x5 = w-pcshiftx; y5=1/2h; -x4=1/2[x3,x5]; top y4 = h; -x6=x4; bot y6=0; -z7=1/4[(x1,0),z1]; - -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad) -draw z3--z4; draw z4..z5{down}..z6{left}..z7; -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 "EGOTH letter q"; -beginchar("q", 2sb#+hstretch*(3/4x_height#+jut#), - x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% right stem -rt x1=w-pcshiftx-jut; top y1=h; -x2=x1; bot y2=-d; -%% bowl -z3=1/4[(x1,0),z1]; -lft x5=pcshiftx; y5=1/2h; -x4=1/2[x3,x5]; bot y4=0; -x6=x4; top y6=h; -%%z7=3/4[(x1,0),z1]; -z7=z1; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); -%%draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -draw z3{-pdir}..z4{left}..z5{up}..z6{right}..z7{pdir}; -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 "EGOTH letter r"; -beginchar("r", 2sb#+hstretch*(13/16x_height#+jut#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% stem -lft x1=lft x2=pcshiftx+jut; -top y1=h; bot y2=0; -%% bowl -z3=3/4[z2,z1]; -rt x5 = w-pcshiftx; y5=y3; -x4=1/2[x3,x5]; top y4 = h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -draw z3{pdir}..z4{right}..z5{pdir}; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,100); -endchar; % end "r" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{s} -% The letter `s'. This is a `long' S. -% \begin{macrocode} -cmchar "EGOTH letter s"; -beginchar("s", 2sb#+hstretch*(11/16x_height#+jut#), - 5/6asc_height#, 0); -adjust_fit(0,0); -numeric n[]; -pcshiftx := sb; -pickup quill; -n1 := (6/5h)/ascratio; % x-height -%% stem -lft x1=lft x2=pcshiftx+jut; top y1=n1; bot y2=0; -%% flick -x4=x2; y4 = 1/2n1; -rt x6=w-pcshiftx; top y6 = h; -x5 = 1/2[x4,x6]; -%top y5 = y6; -y5 = y6; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -%%draw z4--z5--z6; -draw z1--z5--z6; -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 "EGOTH letter t"; -beginchar("t", 2sb#+hstretch*(15/16x_height#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% bar -top y3=h; n3 := h - top y3; -lft x1 = pcshiftx; rt x2=w-pcshiftx; -%%top y1 = y3-n3; bot y2=y3+n3; -y1 = y3-n3; y2=y3; -n1 := w; % width of bowl -n2 := h; % height of bowl -x3=1/2[x1,x2]; -lft x4 = pcshiftx + 1/8n1; y4 = 1/2h; -x5=x3; bot y5 = 0; -rt x6 = pcshiftx + 3/4n1; top y6 = 1/4h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1{pdir}..z3..z2{pdir}; % bar -draw z3..z4{down}..z5{right}..z6{pdir}; -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 "EGOTH letter u"; -beginchar("u", 2sb#+hstretch*(9/16x_height#+2jut#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% left stem -lft x1 = pcshiftx + jut; top y1 = h; -% start of bowl -x13=x1; y13=1/3h; -% right stem -rt x3=w-pcshiftx-jut; 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; -%%ductus:=true; -if ductus: - pickup stylus; -fi -%%draw z1--z13{down}...z14{right}...z33{pdir}; -draw z1--z13--z14{right}...z33{pdir}; -draw_flatserif(1,13,srad); -draw_tstem(3,4,srad); % right stem -draw_flatserif(3,4,srad); -draw_roundserif(4,3,srad); -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 "EGOTH letter v"; -beginchar("v", 2sb#+hstretch*(11/16x_height#+jut#), % 13/16 too wide - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -%% left stem -lft x1 = pcshiftx + jut; top y1 = h; -%% right stem -rt x5=w-pcshiftx; top y5 = h; -bot y3 = 0; -x3 = 1/2[x1,x5]; -z51 = (x1,0); z55=(x5,0); -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1{down}..z3; % left stem -draw_flatserif(1,51,srad); -draw z5{down}..z3; % right stem -draw_flatserif(5,55,srad); -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 "EGOTH letter w"; -beginchar("w", 2sb#+hstretch*(15/16x_height#+2jut#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -%% left stem -lft x1 = pcshiftx + jut; top y1 = h; -% start of bowl -x13=x1; y13=1/3h; -% right stem -rt x5=w-pcshiftx-jut; y5=y1; -x6=x5; bot y6=0; -z53=1/4[z6,z5]; % start of bowl -% middle stem -z3 = 1/2[z1,z5]; -z33=(x3,y13); -% middle of bowl -x14=1/3[x1,x3]; bot y14=0; -% middle of right bowl -x34=1/3[x3,x5]; y34=y14; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z13--z14{right}...z33{pdir}; % left -draw_flatserif(1,13,srad); -draw z3--z33--z34{right}...z53{pdir}; % middle -draw_flatserif(3,33,srad); -draw_tstem(5,6,srad); % right stem -draw_flatserif(5,6,srad); -draw_roundserif(6,5,srad); -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 "EGOTH letter x"; -beginchar("x", 2sb#+hstretch*(15/16x_height#), - x_height#, desc_depth#); -adjust_fit(0,0); -path pth[]; -numeric n[]; -pcshiftx := sb; -pickup quill; -n1 := w-2pcshiftx; % total width -n2 := thick; % triangle side -%% diag top left to bottom right -lft x1=pcshiftx+jut; top y1=h; -rt x2=w-pcshiftx-jut; bot y2=0; -z251 = 7/16[z1,z2]; -%%z252 = 9/16[z1,z2]; -z252 = z251; -%% diag middle to top right -x60 = w-pcshiftx; -top y50 = h; -x50 = 1/2[x251,x60]; -top y60 = y50; -%% diag bottom left to middle -x10 = -1/3w; bot y10=-d; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2; % top left to bottom right -draw_flatserif(1,2,srad); draw_roundserif(2,1,srad); -draw z251...z50{right}...z60; % middle to top right -draw z10{right}..z252; % bottom left to middle -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,10,25,251,252,40,50,150,60,160,100); -endchar; % end "x" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{y} -% The letter `y'. Modern, but with a dot on top. -% \begin{macrocode} -cmchar "EGOTH letter y"; -beginchar("y", 2sb#+hstretch*(11/16x_height#+jut#), - x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -path pth[]; -numeric n[]; -pickup quill; -%% left stem top -lft x1 = pcshiftx + jut; top y1 = h; -bot y3 = 0; -%% right stem -rt x5=w-pcshiftx; top y5 = h; -lft x9=-1/2w; bot y9 = -d; -pth1 := z9{right}..z5{up}; -pth2 := (0,y3)--(w,y3); -z99 = pth1 intersectionpoint pth2; -x3 = x99; -z51 = (x1,0); z55=(x5,0); -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1{down}..z3; % left stem -draw_flatserif(1,51,srad); -draw pth1; % right stem -draw_flatserif(5,55,srad); -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 "EGOTH letter z"; -beginchar("z", 2sb#+hstretch*(15/16x_height#), - x_height#, 0); -adjust_fit(0,0); -numeric n[]; -path pth[]; -pcshiftx := sb; -pickup quill; -%% top bar ends -top y12 = h; -n1 := h - y12; -lft x1 = pcshiftx; rt x2 = w-pcshiftx; -%%y1 = y12-n1; y2=y12+n1; -y1 = y12-n1; y2=y12; -x12 = 1/2[x1,x2]; -pth1 := z1{pdir}..z12{right}..z2{pdir}; -%% bottom bar ends -bot y34 = 0; -x3=x1; x4=x2; -%%y3=y34-n1; y4=y34+n1; -y3=y34-n1; y4=y34; -x34 = 1/2[x3,x4]; -pth2 := z3{pdir}..z34{right}..z4{pdir}; -%% diagonal -z5=z3; -pth3 := z5--(3/4w,h+jut); -z6 = pth3 intersectionpoint pth1; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; draw pth2; % bars -draw z5--z6; -ductus:=false; -penlabels(1,2,3,4,5,6,10o,10i,20o,20i,100); -endchar; % end "z" - -% \end{macrocode} -% \end{routine} -% -% -% The end of this file -% \begin{macrocode} -% -% \end{macrocode} -% -% -% -% -% \subsection{The code for capital letters} -% -% \thisfont{} `capitals' were drawn with the same pen as for the minuscules, -% and the letters, in this case, are based on Square Capitals. -% -% \begin{macrocode} -%<*maj> -% EGOTHU.MF Program file for Early Gothic `capitals' -% - -% \end{macrocode} -% -% -% -% \begin{routine}{A} -% The letter `A'. -% \begin{macrocode} -cmchar "EGOTH letter A"; -beginchar("A", 2cap_sb#+caprat*hstretch*(14/13x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric n[]; -path pth[]; -pair pr[]; -pickup capquill; -x100 = 0; -n1 := sqrcjut; -n2 := sqrcjutrat*sqrcjut; -%% legs -x1 = 6/16w; top y1=h; -rt x3 = w-pcshiftx - n1; bot y3= 0; -pickup capthinquill; -lft x2 = pcshiftx; bot y2 = 0; -x21 = x2 + n2; y21 = y2; -y22 = y21+n2; z22 = whatever[z2,z1]; -pickup capquill; -%%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 capthinquill; -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 "EGOTH letter B"; -beginchar("B", 2cap_sb#+caprat*hstretch*(14/13x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -numeric n[]; -path pth[]; -pcshiftx := cap_sb; -pickup capquill; -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 "EGOTH letter C"; -beginchar("C", 2cap_sb#+caprat*hstretch*(14/13x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -numeric n[]; -pcshiftx := cap_sb; -pickup capquill; -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 "EGOTH letter D"; -beginchar("D", 2cap_sb#+caprat*hstretch*(14/13x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -numeric n[]; -path pth[]; -pcshiftx := cap_sb; -pickup capquill; -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 "EGOTH letter E"; -beginchar("E", cap_sb#+caprat*hstretch*(9/13x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric n[]; -path pth[]; -pickup capquill; -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 "EGOTH letter F"; -beginchar("F", 2cap_sb#+caprat*hstretch*(9/13x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -numeric n[]; -pcshiftx := cap_sb; -pickup capquill; -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 "EGOTH letter G"; -beginchar("G", 2cap_sb#+caprat*hstretch*(14/13x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -path pth[]; -pair vec[]; -numeric n[]; -pcshiftx := cap_sb; -pickup capquill; -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 "EGOTH letter H"; -beginchar("H", 2cap_sb#+caprat*hstretch*(14/13x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -pickup capquill; -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 "EGOTH letter I"; -beginchar("I", 2cap_sb#+caprat*hstretch*(thick#+2sqrcjut#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric n[]; -pickup capquill; -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 "EGOTH letter J"; -beginchar("J", 2cap_sb#+caprat*hstretch*(2thick#+sqrcjut#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -path pth[]; -numeric n[]; -pickup capquill; -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 "EGOTH letter K"; -beginchar("K", 2cap_sb#+caprat*hstretch*(16/13x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -path pth[]; -numeric n[]; -pickup capquill; -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 capquill; -%%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 "EGOTH letter L"; -beginchar("L", 2cap_sb#+caprat*hstretch*(9/13x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric n[]; -pickup capquill; -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 "EGOTH letter M"; -beginchar("M", 2cap_sb#+caprat*hstretch*(19/13x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric n[]; -path pth[]; -pickup capquill; -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 capthinquill; -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 capquill; -%% thin middle top and bottom -x83 = lft x3; y83 = top y3; -x824 = rt x24; y824 = bot y24; -pickup capthinquill; -lft x13 = x83; top y13 = y83; -rt x124 = x824; bot y124 = y824; -pickup capquill; -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 capthinquill; -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 "EGOTH letter N"; -beginchar("N", 2cap_sb#+caprat*hstretch*(14/13x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -path pth[]; -numeric n[]; -pickup capquill; -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 capthinquill; -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 capquill; -%%ductus:=true; -if ductus: - pickup stylus; -fi -%% diagonal -draw pth1; draw (x1-n1,y1)--(x1,y1); -%% stems -pickup capthinquill; -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 "EGOTH letter O"; -beginchar("O", 2cap_sb#+caprat*hstretch*(17/13x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -pickup capquill; -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 "EGOTH letter P"; -beginchar("P", 2cap_sb#+caprat*hstretch*(13/13x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -path pth[]; -numeric n[]; -pickup capquill; -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 "EGOTH letter Q"; -beginchar("Q", 2cap_sb#+caprat*hstretch*(17/13x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric n[]; -path pth[]; -pickup capquill; -%% 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 "EGOTH letter R"; -beginchar("R", 2cap_sb#+caprat*hstretch*(15/13x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric n[]; -path pth[]; -pickup capquill; -x100 = 0; -n1:= sqrcjut; -n3 := sqrcjutrat*sqrcjut; -n2 := 11/15; %% P/R width ratio -%% stem -pickup capthinquill; -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 capquill; -%% 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 capthinquill; -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 "EGOTH letter S"; -beginchar("S", 2cap_sb#+caprat*hstretch*(15/18x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -numeric n[]; -path pth[]; -pcshiftx := cap_sb; -pickup capquill; -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 "EGOTH letter T"; -beginchar("T", 2cap_sb#+caprat*hstretch*(10/13x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric n[]; -path pth[]; -pickup capquill; -%% 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 "EGOTH letter U"; -beginchar("U", 2cap_sb#+caprat*hstretch*(15/13x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric n[]; -path pth[]; -pickup capquill; -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 "EGOTH letter V"; -beginchar("V", 2cap_sb#+caprat*hstretch*(13/13x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric n[]; -path pth[]; -pickup capquill; -x100 = 0; -n1 := sqrcjut; -n2 := sqrcjutrat*sqrcjut; -%% stem tops -lft x1 = pcshiftx + n1; top y1 = h; -pickup capthinquill; -rt x3 = w - pcshiftx; top y3 = h; -x3a = x3-n2; y3a=y3; -x3b = x3; y3b = y3-n2; -pickup capquill; -%% 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 capthinquill; -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 "EGOTH letter W"; -beginchar("W", 2cap_sb#+caprat*hstretch*(22/13x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric n[]; -path pth[]; -pickup capquill; -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 capthinquill; -rt x5 = w-pcshiftx; top y5 = h; -x5a = x5-n2; y5a = y5; -x5b = x5; y5b = y5-n2; -pickup capquill; -%% 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 capthinquill; -rt x113 = x813; bot y113 = y813; -rt x135 = x835; bot y135 = y835; -%%ductus:=true; -if ductus: - pickup stylus; -fi -pickup capquill; -draw pth113; draw pth335; draw (x1-n1,y1)--(x1,y1); -pickup capthinquill; -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 "EGOTH letter X"; -beginchar("X", 2cap_sb#+caprat*hstretch*(17/13x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -path pth[]; -numeric n[]; -pcshiftx := cap_sb; -pickup capquill; -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 capthinquill; -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 capquill; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2; -draw (x1-n1,y1)--(x1,y1); -draw (x2,y2)--(x2+n1,y2); -pickup capthinquill; -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 "EGOTH letter Y"; -beginchar("Y", 2cap_sb#+caprat*hstretch*(13/13x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -path pth[]; -numeric n[]; -pickup capquill; -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 capthinquill; -rt x3=w-pcshiftx; top y3 = h; -x4=x85; y4 = y85; -x3a=x3-n2; y3a = y3; -y3b = y3-n2; z3b = whatever[z3,z4]; -pickup capquill; -%%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 capthinquill; -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 "EGOTH letter Z"; -beginchar("Z", 2cap_sb#+caprat*hstretch*(13/13x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -numeric n[]; -n1 := sqrcjutrat*sqrcjut; -path pth[]; -pcshiftx := cap_sb; -pickup capquill; -%% 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 capquill; -%%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} -% -% \end{macrocode} -% -% -% -% -% \subsection{The punctuation file} -% -% The main punctuation marks are defined in this file. -% -% \begin{macrocode} -%<*punct> -% EGOTHPUNCT.MF This file contains punctuation marks - -% \end{macrocode} -% -% -% \begin{routine}{!} -% The `!' character, which had not been invented at this time. -% \begin{macrocode} - -cmchar "Exclamation mark"; -beginchar("!", 2sb#+hstretch*(thick#+trijut#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -x1=w/2; top y1 = h; -z3=(x1, 1/2dot_size); -z2=(x1, y3+3/2dot_size); -draw z1--z2; -draw_pdot(3,dot_size); -penlabels(1,2,3); - -endchar; % end of "!" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{?} -% The `?' character, which had not been invented at this time. -% \begin{macrocode} - -cmchar "Question mark"; -beginchar("?", 2sb#+hstretch*(3/4x_height#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pickup quill; -n1 := w-2pcshiftx; % actual character width -n2 := 1/3h; % height of top bowl -n3 := n2; % height of bottom bowl -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=3/4h; y2=1/4h; -draw_pdot(1,dot_size); -draw_pdot(2,dot_size); -penlabels(1,2); -endchar; % end ":" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{;} -% The `;' character. -% \begin{macrocode} - -cmchar "Semicolon"; -beginchar(";",2sb#+hstretch*(comma_width#+dot_size#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb; -x1=x2=w-pcshiftx-(0.5hstretch*dot_size); y1=3/4h; y2=1/2dot_size; -draw_pdot(1,dot_size); -draw_pcomma(2,dot_size,comma_width); -penlabels(1,2); -endchar; % end of ";" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{'} -% The `'' character. -% \begin{macrocode} - -cmchar "Apostrophe"; -beginchar("'",2sb#+hstretch*(comma_width#+dot_size#),4/3x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb; -x1=w-pcshiftx-(0.5hstretch*dot_size); y1=h; -draw_pcomma(1,dot_size,comma_width); -penlabels(1); -endchar; % end of "'" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{`} -% The ``' character. -% \begin{macrocode} - -cmchar "Reverse apostrophe"; -beginchar("`",2sb#+hstretch*(comma_width#+dot_size#),4/3x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb; -x1=pcshiftx+(0.5hstretch*dot_size); y1=h; -draw_plq(1,dot_size,comma_width); -penlabels(1); -endchar; % end of "`" - -% \end{macrocode} -% \end{routine} -% -% The end of this file. -% \begin{macrocode} -% -% \end{macrocode} -% -% -% \subsection{The ligatures and dashes file} -% -% The ligatured letters, punctuation marks and dashes are defined in this file. -% \begin{macrocode} -%<*lig> -% EGOTHLIG.MF Uncial ligatured letters, punctation and dashes - -% \end{macrocode} -% First the ligtables. -% \begin{macrocode} - -ligtable "`": "`"=:oct"134"; -ligtable "'": "'"=:oct"042"; %% , "?" kern 2u#, "!" kern 2u#; - -ligtable "-": "-"=:oct"173"; -ligtable oct"173": "-"=:oct"174"; - -ligtable "c": "t"=:oct"014"; -ligtable "s": "t"=:oct"015"; - -% \end{macrocode} -% -% \begin{routine}{ct} -% The `ct' ligature. -% \begin{macrocode} - -cmchar "EGOTH ct ligature"; -beginchar(oct"014", 2sb#+hstretch*(6/4x_height#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pair vc[]; -pickup quill; -%%%%%%%%%%% C - -n1:=1/2(w-2pcshiftx); % actual letter width -n2 := h/ascratio; % x-height -x1=pcshiftx + 1/2n1; top y1 = n2; -lft x2 = pcshiftx; y2 = 1/2n2; -x3 = x1; bot y3 = 0; -rt x4 = n1; y4 = 1/4n2; -x6 = x4; -%%y6 = 3/4n2; -top y6 = y1; -pth1 := z6..z1{left}..z2{down}..z3{right}..z4{pdir}; -%%%%%%%%%%%%% T - -%% bar -top y33=n2; n3 := n2 - top y33; -%%lft x31 = n1+pcshiftx; -lft x31 = n1; -rt x32=w-pcshiftx; -%%top y31 = y33-n3; bot y32=y33+n3; -top y31 = y33-n3; y32=y33; -x33=1/2[x31,x32]; -pth2 := z31{pdir}..z33..z32{pdir}; % T bar -n31 := n1; % width of bowl -%%lft x34 = pcshiftx + n1 + 1/8n31; -lft x34 = n1 + 1/8n31; -y34 = 1/2n2; -x35=x33; bot y35 = 0; -rt x36 = pcshiftx + n1 + 3/4n31; top y36 = 1/4n2; -pth3 := z33..z34{down}..z35{right}..z36{pdir}; % T bowl - -%%%%%%%%%%%%%%%%% Ligature - -z51=z6; -z55=z33; -x53 = 1/2[x51,x55]; -top y53 = h; -vc51 := direction 0 of pth1; -vc55 := direction 0 of pth3; -pth4 := z51{vc51}..z53{right}..z55{vc55}; % loop -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; % C -draw pth2; % T bar -draw pth3; % T bowl -draw pth4; % ligature loop -ductus:=false; -penlabels(1,2,3,4,5,6,14,16,17,18,31,32,33,34,35,36,100); -endchar; % end of "ct" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{st} -% The `st' ligature. -% \begin{macrocode} - -cmchar "EGOTH st ligature"; -beginchar(oct"015", 2sb#+hstretch*(9/8x_height#+clubjut#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pair vc[]; -pickup quill; -%%%%%%%%%%% S - -n1:=3/7(w-2pcshiftx-clubjut); % actual letter width -n2 := h/ascratio; % x-height - -%% stem -lft x1=lft x2=pcshiftx+clubjut; top y1=n2; bot y2=0; -%% flick -x4=x2; y4 = 1/2n1; -%%%%%%%%%%%%% T - -%% bar -top y33=n2; n3 := n2 - top y33; -%%lft x31 = n1+pcshiftx; -lft x31 = n1; -rt x32=w-pcshiftx; -%%top y31 = y33-n3; bot y32=y33+n3; -top y31 = y33-n3; y32=y33; -x33=1/2[x31,x32]; -pth2 := z31{pdir}..z33..z32{pdir}; % T bar -n31 := n1; % width of bowl -%%lft x34 = pcshiftx + n1 + 1/8n31; -lft x34 = n1 + 1/8n31; -y34 = 1/2n2; -x35=x33; bot y35 = 0; -rt x36 = pcshiftx + n1 + 3/4n31; top y36 = 1/4n2; -pth3 := z33..z34{down}..z35{right}..z36{pdir}; % T bowl - -%%%%%%%%%%%%%%%%% Ligature - -z51=z4; -z55=z33; -x53 = 5/8[x51,x55]; -top y53 = h; -vc51 := up; -vc55 := direction 0 of pth3; -pth4 := z51{vc51}...z53{right}..z55{vc55}; % loop -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2; % S stem -draw_clubserif(1,2,0.5); -draw_roundserif(2,1,srad); -draw pth2; % T bar -draw pth3; % T bowl -draw pth4; % ligature loop -ductus:=false; -penlabels(1,2,3,4,5,6,14,16,17,18,31,32,33,34,35,36,100); -endchar; % end of "st" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{''} -% The `''' ligature. -% \begin{macrocode} - -cmchar "Closing quotes"; -beginchar(oct"042",2sb#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb; -x1=w-pcshiftx-(0.5hstretch*dot_size); y1=y2=h; -x2=x1-(2hstretch*dot_size); -draw_pcomma(1,dot_size,comma_width); % right -draw_pcomma(2,dot_size,comma_width); % left -penlabels(1,2); -endchar; % end of "''" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{``} -% The ```' ligature. -% \begin{macrocode} - -cmchar "Opening quotes"; -beginchar(oct"134",2sb#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb; -x1=pcshiftx+(0.5hstretch*dot_size); y1=y2=h; -x2=x1+(2hstretch*dot_size); -draw_plq(1,dot_size,comma_width); % left -draw_plq(2,dot_size,comma_width); % right -penlabels(1,2); -endchar; % end of "``" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{-} -% The `-' (hyphen) character. -% \begin{macrocode} - -cmchar "Hyphen"; -beginchar("-",sb#+hstretch*(0.8x_height#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb/2; -%%numeric alpha; alpha:=w/8; -%%pickup quill; -%%lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; -%%x11=lft x1+alpha/2; y11=top y1-0.5thin; -%%x12=rt x2; y12=bot y1+0.5thin; -%%draw_triangle(11,alpha); -%%draw_rutriangle(12,alpha); -pickup halfquill; -lft x21=pcshiftx+jut; rt x22=w-pcshiftx-jut; y21=y22=1/2h; -draw z21--z22; -draw_roundserif(21,22,srad); draw_flatserif(22,21,srad); -penlabels(1,2); -endchar; % end of "-" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{--} -% The `--' (en-dash) ligature. -% \begin{macrocode} - -cmchar "En dash"; -beginchar(oct"173",sb#+hstretch*(x_height#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb/2; -%%numeric alpha; alpha:=w/8; -%%pickup quill; -%%lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; -%%x11=lft x1+alpha/2; y11=top y1-0.5thin; -%%x12=rt x2; y12=bot y1+0.5thin; -%%draw_triangle(11,alpha); -%%draw_rutriangle(12,alpha); -pickup halfquill; -lft x21=pcshiftx+jut; rt x22=w-pcshiftx-jut; y21=y22=1/2h; -draw z21--z22; -draw_roundserif(21,22,srad); draw_flatserif(22,21,srad); -penlabels(1,2); -endchar; % end of "--" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{---} -% The `---' (em dash) ligature. The em dash is twice the width of the en dash. -% \begin{macrocode} - -cmchar "Em dash"; -beginchar(oct"174",sb#+hstretch*(2x_height#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb/2; -%%numeric alpha; alpha:=w/8; -%%pickup quill; -%%lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; -%%x11=lft x1+alpha/2; y11=top y1-0.5thin; -%%x12=rt x2; y12=bot y1+0.5thin; -%%draw_triangle(11,alpha); -%%draw_rutriangle(12,alpha); -pickup halfquill; -lft x21=pcshiftx+jut; rt x22=w-pcshiftx-jut; y21=y22=1/2h; -draw z21--z22; -draw_roundserif(21,22,srad); draw_flatserif(22,21,srad); -penlabels(1,2); -endchar; % end of "---" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{&} -% The ampersand (which is really an `et' ligature). -% \begin{macrocode} - -cmchar "EGOTH ampersand"; -beginchar("&", 2sb#+hstretch*(5/4x_height#+2jut#), asc_height#, 0); -adjust_fit(0,0); -numeric n[]; -path pth[]; -pcshiftx:=sb; -pickup quill; -%% alpha looking part -n1 := w-2pcshiftx-jut; % actual letter width -n2 := h/ascratio; % x-height -n3 := 16/16n2; % height of alpha -x1 = w-pcshiftx; bot y1 = 0; -x3 = pcshiftx + 12/16n1; y3 = 1/2n3; -lft x5 = pcshiftx; y5 = y3; -x4 = x6 = 1/2[x5,x3]; -top y4 = n3; bot y6 = 0; -%rt x8 = w-pcshiftx-jut; top y8=h; -rt x8 = w-pcshiftx; top y8=h; -x9 = x8-2jut; x10-x8 = x8-x9; -y9=y10=y8; -pth1 := z1{left}..z3..z4{left}..z5{down}..z6{right}..z3..z8{up}; -%% loop -z21 = z5; -z25 = point 1.5 of pth1; -x23 = 1/2[x21,x25]; -y23 = 6/8[y4,y8]; -pth2 := z21{up}..z23{right}..z25{down}; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; draw z9--z8; % alpha -draw pth2; % loop -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,10,16,17,18,19,21,22,23,24,25); -endchar; % end of "&" - -% \end{macrocode} -% \end{routine} -% -% -% The end of this file. -% \begin{macrocode} -% -% \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> -% EGOTHDIG.MF Program file for Early Gothic digits -% - -% \end{macrocode} -% -% -% -% \begin{routine}{1} -% The digit `1'. -% \begin{macrocode} -cmchar "EGOTH digit 1"; -beginchar("1", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -x1=x2=w/2; -y1=h; bot y2=0; -%%ductus:=true; -draw_tstem(1,2,srad); -draw_flatserif(1,2,srad); -%draw_roundserif(2,1,srad); -draw_flatserif(2,1,srad); -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,100); -endchar; % end "1" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{2} -% The digit `2'. -% \begin{macrocode} -cmchar "EGOTH digit 2"; -beginchar("2", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -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; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_wave(5,6,thin); % foot -%draw z1..z2{right}..z3{down}..{-pdir}z5wl; % curve -draw z1..z2{right}.. tension 0.75 ..z3{down}..{-pdir}z5wl; % curve -ductus:=false; -penlabels(1,2,3,4,5,6,100); -endchar; % end "2" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{3} -% The digit `3'. -% \begin{macrocode} -cmchar "EGOTH 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 "EGOTH digit 4"; -beginchar("4", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% the stem -x1=x2=w-pcshiftx-jut; -y1=h; bot y2=0; -% the crossbar -lft x3=pcshiftx; y3=0.33h; -rt x4=w-pcshiftx; y4=y3; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % main stem -draw_wave(3,4,thin); % crossbar -draw z3wl--z1; % diagonal -ductus:=false; -penlabels(1,2,3,4,100); -endchar; % end "4" - -% \end{macrocode} -% \end{routine} -% -% -% -% \begin{routine}{5} -% The digit `5'. -% \begin{macrocode} -cmchar "EGOTH digit 5"; -beginchar("5", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -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; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_wave(2,1,thin); % top squiggle -draw z3{pdir}..z5{down}..z6{left}..z7; % curve -draw z2wl--z3; % vertical -ductus:=false; -penlabels(1,2,3,4,5,6,7,100); -endchar; % end "5" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{6} -% The digit `6'. -% \begin{macrocode} -cmchar "EGOTH 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; -draw z1..z2{left}.. tension 0.8 ..z3{down}.. tension 0.8 ..z4{right}..z5{up}.. tension 0.8 ..{-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 "EGOTH digit 7"; -beginchar("7", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% top bar -lft x1=pcshiftx; -rt x2=w-pcshiftx; -top y1=top y2=h; -% bowed leg -x4=w/2; bot y4=0; -x3=0.5[x2,x4]-3thin; y3=0.5[y2,y4]; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_wave(1,2,thin); % top bar -draw z1wr..z3..z4; -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 "EGOTH 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; -draw z1.. tension 0.8 ..z2.. tension 0.8 ..z3..z5.. - z11.. tension 0.8 ..z4.. tension 0.8 ..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 "EGOTH 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; -draw z1..z2{right}.. tension 0.8 ..z3{up}.. tension 0.8 ..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 "EGOTHIC 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; -draw z1.. tension 0.8 ..z2.. tension 0.8 ..z3.. tension 0.8 ..z4.. tension 0.8 ..cycle; -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,100); -endchar; % end "0" - -% \end{macrocode} -% \end{routine} -% -% -% The end of this file. -% \begin{macrocode} -% -% \end{macrocode} -% -% -% \section{The font definition files} \label{sec:fd} -% -% The font comes in normal and bold weights only. -% -% \begin{macrocode} -%<*fdot1> -\DeclareFontFamily{OT1}{egoth}{} - \DeclareFontShape{OT1}{egoth}{m}{n}{ <-8.5> egoth7 <8.5-15> egoth10 <15-> egoth17 }{} - \DeclareFontShape{OT1}{egoth}{m}{sl}{ <-> sub * egoth/m/n }{} - \DeclareFontShape{OT1}{egoth}{m}{it}{ <-> sub * egoth/m/n }{} - \DeclareFontShape{OT1}{egoth}{m}{sc}{ <-> sub * egoth/m/n }{} - \DeclareFontShape{OT1}{egoth}{m}{u}{ <-> sub * egoth/m/n }{} - \DeclareFontShape{OT1}{egoth}{bx}{n}{ <-8.5> egothb7 <8.5-15> egothb10 <15-> egothb17 }{} - \DeclareFontShape{OT1}{egoth}{bx}{it}{ <-> sub * egoth/bx/n }{} - \DeclareFontShape{OT1}{egoth}{bx}{sl}{ <-> sub * egoth/bx/n }{} - \DeclareFontShape{OT1}{egoth}{b}{n}{ <-> sub * egoth/bx/n }{} -% -% \end{macrocode} -% -% -% \begin{macrocode} -%<*fdt1> -\DeclareFontFamily{T1}{egoth}{} - \DeclareFontShape{T1}{egoth}{m}{n}{ <-8.5> egoth7 <8.5-15> egoth10 <15-> egoth17 }{} - \DeclareFontShape{T1}{egoth}{m}{sl}{ <-> sub * egoth/m/n }{} - \DeclareFontShape{T1}{egoth}{m}{it}{ <-> sub * egoth/m/n }{} - \DeclareFontShape{T1}{egoth}{m}{sc}{ <-> sub * egoth/m/n }{} - \DeclareFontShape{T1}{egoth}{m}{u}{ <-> sub * egoth/m/n }{} - \DeclareFontShape{T1}{egoth}{bx}{n}{ <-8.5> egothb7 <8.5-15> egothb10 <15-> egothb17 }{} - \DeclareFontShape{T1}{egoth}{bx}{it}{ <-> sub * egoth/bx/n }{} - \DeclareFontShape{T1}{egoth}{bx}{sl}{ <-> sub * egoth/bx/n }{} - \DeclareFontShape{T1}{egoth}{b}{n}{ <-> sub * egoth/bx/n }{} -% -% \end{macrocode} -% -% \section{The package code} \label{sec:code} -% -% \subsection{The \Lpack{egothic} package} -% -% The \Lpack{egothic} 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{egothic}[2002/12/30 v1.0 package for Early Gothic 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}{\egothfamily} -% Selects the \thisfont{} font family in the OT1 or T1 encoding. -% \begin{macrocode} -\ifx\Tienc\encodingdefault - \newcommand{\egothfamily}{\usefont{T1}{egoth}{m}{n}} -\else - \newcommand{\egothfamily}{\usefont{OT1}{egoth}{m}{n}} -\fi -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\textegoth} -% Text command for the \thisfont{} font family. -% \begin{macrocode} -\DeclareTextFontCommand{\textegoth}{\egothfamily} -% \end{macrocode} -% \end{macro} -% -% The end of this package. -% \begin{macrocode} -% -% \end{macrocode} -% -% \subsection{The \Lpack{allegoth} package} -% -% The \Lpack{allegoth} 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{egothic} package. -% \begin{macrocode} -%<*uscall> -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{allegoth}[2002/12/30 v1.0 package for all Early Gothic fonts] -\RequirePackage{egothic} -% \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}{egoth} -\renewcommand{\sfdefault}{egoth} -\renewcommand{\ttdefault}{egoth} -% \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}{\egoth@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{\egoth@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}{\egoth@new@setfontsize} -% This is a macro that replaces the |\@setfontsize| macro which is called by -% the font size changing commands. -% \begin{macrocode} -\newcommand{\egoth@new@setfontsize}[3]{% - \edef\@tempa{\def\noexpand\@tempb####1<#2}% - \@tempa>##2<##3\@nil{\def\egoth@baselineskip@value{##2}}% - \edef\@tempa{\noexpand\@tempb\egoth@baselineskip@table<#2}% - \@tempa><\@nil - \ifx\egoth@baselineskip@value\@empty - \def\egoth@baselineskip@value{#3}% - \fi - \egoth@old@setfontsize{#1}{#2}\egoth@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\egoth@old@setfontsize=\@setfontsize - \let\@setfontsize=\egoth@new@setfontsize} -\AtBeginDocument{\normalsize} -% \end{macrocode} -% -% -% The end of this package. -% \begin{macrocode} -% -% \end{macrocode} -% -% -% -% -% -% \Finale -% \PrintIndex -% -\endinput - -%% \CharacterTable -%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -%% Digits \0\1\2\3\4\5\6\7\8\9 -%% Exclamation \! Double quote \" Hash (number) \# -%% Dollar \$ Percent \% Ampersand \& -%% Acute accent \' Left paren \( Right paren \) -%% Asterisk \* Plus \+ Comma \, -%% Minus \- Point \. Solidus \/ -%% Colon \: Semicolon \; Less than \< -%% Equals \= Greater than \> Question mark \? -%% Commercial at \@ Left bracket \[ Backslash \\ -%% Right bracket \] Circumflex \^ Underscore \_ -%% Grave accent \` Left brace \{ Vertical bar \| -%% Right brace \} Tilde \~} - - diff --git a/Master/texmf-dist/source/latex/bookhands/egothic/egothic.ins b/Master/texmf-dist/source/latex/bookhands/egothic/egothic.ins deleted file mode 100644 index 132c384137a..00000000000 --- a/Master/texmf-dist/source/latex/bookhands/egothic/egothic.ins +++ /dev/null @@ -1,101 +0,0 @@ -%% -%% egothic.ins -%% Copyright 1999 Peter R. Wilson -%% -%% This program is provided under the terms of the -%% LaTeX Project Public License distributed from CTAN -%% archives in directory macros/latex/base/lppl.txt. -%% -%% Author: Peter Wilson (CUA) -%% now at: peter.r.wilson@boeing.com -%% -%% This file will generate fast loadable files and documentation -%% driver files from the doc files in this package when run through -%% LaTeX or TeX. -%% -%% --------------- start of docstrip commands ------------------ -%% -\def\batchfile{egothic.ins} -\input docstrip.tex -\preamble - - Copyright 1999 Peter R. Wilson - - This program is provided under the terms of the - LaTeX Project Public License distributed from CTAN - archives in directory macros/latex/base/lppl.txt. - -Author: Peter Wilson (CUA) - now at: peter.r.wilson@boeing.com - -\endpreamble - -\keepsilent - -%%% \Msg{*** Generating the driver file ***} -%%% \generateFile{egothic.drv}{t}{\from{egothic.dtx}{driver}} - -\Msg{*** Generating the Metafont files ***} - -\usepostamble\empty -\generateFile{egoth7.mf}{t}{\from{egothic.dtx}{base7}} -\generateFile{egoth10.mf}{t}{\from{egothic.dtx}{base10}} -\generateFile{egoth17.mf}{t}{\from{egothic.dtx}{base17}} -\generateFile{egothb7.mf}{t}{\from{egothic.dtx}{base7b}} -\generateFile{egothb10.mf}{t}{\from{egothic.dtx}{base10b}} -\generateFile{egothb17.mf}{t}{\from{egothic.dtx}{base17b}} -\generateFile{egothl.mf}{t}{\from{egothic.dtx}{min}} -\generateFile{egothu.mf}{t}{\from{egothic.dtx}{maj}} -\generateFile{egothtitle.mf}{t}{\from{egothic.dtx}{mfd}} -\generateFile{egothpunct.mf}{t}{\from{egothic.dtx}{punct}} -\generateFile{egothlig.mf}{t}{\from{egothic.dtx}{lig}} -\generateFile{egothdig.mf}{t}{\from{egothic.dtx}{dig}} - -\Msg{*** Generating the Font Definition files ***} -\usepostamble\defaultpostamble - -\generateFile{ot1egoth.fd}{t}{\from{egothic.dtx}{fdot1}} -\generateFile{t1egoth.fd}{t}{\from{egothic.dtx}{fdt1}} - -\Msg{*** Generating the LaTeX2e package files ***} - -\generateFile{egothic.sty}{t}{\from{egothic.dtx}{usc}} -\generateFile{allegoth.sty}{t}{\from{egothic.dtx}{uscall}} - -\Msg{***********************************************************} -\Msg{*} -\Msg{* To finish the installation you have to move the following} -\Msg{* files into directories searched by TeX:} -\Msg{*} -\Msg{* Move these into the font source area:} -\Msg{* \space\space egoth7.mf} -\Msg{* \space\space egoth10.mf} -\Msg{* \space\space egoth17.mf} -\Msg{* \space\space egothb7.mf} -\Msg{* \space\space egothb10.mf} -\Msg{* \space\space egothb17.mf} -\Msg{* \space\space egothl.mf} -\Msg{* \space\space egothu.mf} -\Msg{* \space\space egothtitle.mf} -\Msg{* \space\space egothpunct.mf} -\Msg{* \space\space egothlig.mf} -\Msg{* \space\space egothdig.mf} -\Msg{*} -\Msg{* Move these into the LaTeX macro area:} -\Msg{* \space\space ot1egoth.fd} -\Msg{* \space\space t1egoth.fd} -\Msg{* \space\space egothic.sty} -\Msg{* \space\space allegoth.sty} -\Msg{*} -\Msg{*} -\Msg{* To produce the documentation run the files ending with} -\Msg{* `.dtx' through LaTeX.} -\Msg{* Process any name.idx file by:} -\Msg{* \space\space\space\space makeindex -s gind.ist name} -\Msg{* Process any name.glo file by:} -\Msg{* \space\space\space\space makeindex -s gglo.ist -o name.gls name.glo} -\Msg{*} -\Msg{* Happy TeXing} -\Msg{***********************************************************} - -\endinput diff --git a/Master/texmf-dist/source/latex/bookhands/humanist/humanist.dtx b/Master/texmf-dist/source/latex/bookhands/humanist/humanist.dtx deleted file mode 100644 index 6c61aeff77d..00000000000 --- a/Master/texmf-dist/source/latex/bookhands/humanist/humanist.dtx +++ /dev/null @@ -1,5019 +0,0 @@ -% \iffalse meta-comment -% -% humanist.dtx -% Author: Peter Wilson (CUA) now at peter.r.wilson@boeing.com -% (or pandgwilson@earthlink.net) -% Copyright 2002, 2003 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/supported), comment out the -% \usepackage{docmfp} line below and uncomment the line following it. -% -%<*driver> -\documentclass{ltxdoc} -\usepackage{docmfp} -%%%%%% \providecommand{\DescribeVariable}[1]{} \newenvironment{routine}[1]{}{} -\EnableCrossrefs -\CodelineIndex -%% comment out next line to show the code -\OnlyDescription -\setcounter{StandardModuleDepth}{1} -\begin{document} - \DocInput{humanist.dtx} -\end{document} -% -% -% \fi -% -% \CheckSum{134} -% -% \DoNotIndex{\',\.,\@M,\@@input,\@addtoreset,\@arabic,\@badmath} -% \DoNotIndex{\@centercr,\@cite} -% \DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue} -% \DoNotIndex{\@input,\@ixpt,\@m} -% \DoNotIndex{\@minus,\@mkboth,\@ne,\@nil,\@nomath,\@plus,\@set@topoint} -% \DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb} -% \DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt} -% \DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt} -% \DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace} -% \DoNotIndex{\advance,\Alph,\alph} -% \DoNotIndex{\arabic,\ast,\begin,\begingroup,\bfseries,\bgroup,\box} -% \DoNotIndex{\bullet} -% \DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption} -% \DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass} -% \DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\endtrivlist} -% \DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup} -% \DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter} -% \DoNotIndex{\fbox} -% \DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef} -% \DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule} -% \DoNotIndex{\hsize,\hskip,\hspace,\hss,\if@tempswa,\ifcase,\or,\fi,\fi} -% \DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\fi,\fi,\fi,\fi,\fi} -% \DoNotIndex{\input} -% \DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark} -% \DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright} -% \DoNotIndex{\month,\newcommand,\newcounter,\newenvironment} -% \DoNotIndex{\NeedsTeXFormat,\newdimen} -% \DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number} -% \DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\p@} -% \DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip} -% \DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions} -% \DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright} -% \DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font} -% \DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily,\roman} -% \DoNotIndex{\roman,\secdef,\selectfont,\setbox,\setcounter,\setlength} -% \DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space} -% \DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase} -% \DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt} -% \DoNotIndex{\viipt,\vipt,\vskip,\vspace} -% \DoNotIndex{\wd,\xiipt,\year,\z@} -% -% \changes{v1.0}{2002/12/30}{First public release} -% \changes{v1.1}{2003/06/20}{Added `ae' and `AE' conjoins} -% -% \def\dtxfilename{\texttt{humanist.dtx}} -% \def\fileversion{v1.1} -% \def\filedate{2003/06/20} -% \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}{Humanist} -% -% \title{The \Lpack{Humanist} fonts\thanks{This file (\dtxfilename) -% has version number \fileversion, last revised -% \filedate.}} -% -% \author{% -% Peter Wilson\\ -% Catholic University of America \\ -% Now at \texttt{peter.r.wilson@boeing.com} -% } -% \date{\filedate} -% \maketitle -% \begin{abstract} -% The \Lpack{humanist} and \Lpack{allhmin} packages provide a set of -% Metafont \thisfont{} book-hands -% as used -% for manuscripts in the 14th century onwards. This is one in a series -% of manuscript fonts. -% \end{abstract} -% \tableofcontents -% \listoftables -% -% -% -% -% \section{Introduction} -% -% The \Lpack{humanist} and \Lpack{allhmin} packages provide a Metafont~\cite{METAFONT} version -% of the \thisfont{} manuscript book-hand that was in use from about the -% fourteenth century~\AD{} onwards. It is part of a project to provide fonts -% covering the major manuscript hands between the first century~\AD{} and -% the invention of printing. The principal resources used in this project -% are listed in the Bibliography. -% -% This manual is typeset according to the conventions of the -% \LaTeX{} \textsc{docstrip} utility which enables the automatic -% extraction of the \LaTeX{} macro source files~\cite{GOOSSENS94}. -% The \Lpack{docmfp} package is used for documenting the Metafont portions -% of the distribution~\cite{DOCMFP}. -% -% Section~\ref{sec:usc} describes the usage of the package. -% Commented code for the fonts is in Sections~\ref{sec:mf} and~\ref{sec:fd} -% and source code for the package is in Section~\ref{sec:code}. -% -% \subsection{Manuscript book-hands} -% -% Before the invention of printing all books were written by hand. The book-hands -% used by the scribes and copyists for the manuscripts changed as time -% went on. Table~\ref{tab:1} lists some of the common book-hands which were used -% between the 1st and 15th centuries. The later book-hands formed the basis of the -% fonts used by the early printers, which in turn form the basis of the printing -% fonts in use today. -% -% The manuscript book-hands were written with a broad nibbed reed or quill -% pen. Among the distinguishing characteristics of a hand, apart from the -% actual shape of the letters, are the angle of the pen (which controls the -% variation between thick and thin strokes) and the height of a letter compared -% to the width of the nib. The lower the ratio of the letter height to nib -% width, the more condensed is the script. The scripts also varied in their -% typical height. -% -% Table~\ref{tab:1} gives an `average' x-height for each -% script, which I obtained by measuring a sample of photographs of -% manuscripts written in the various hands. About a dozen examples -% of each book-hand were measured. This figure should not be taken too -% seriously. -% -% There was not a sharp division between the use of one hand and another. -% Many manuscripts exhibit a variety of hands in the same document. For example, -% the scribe writing in an Uncial hand may have used Roman Rustic letters -% for capitals. Usually the same pen was used for the two different scripts. -% -% Generally speaking, as a hand got older it became more embelished, and -% therefore took longer to write. As this happened a new hand would appear that -% was faster, and which would eventually make the earlier one obsolete. -% -% Many of the book-hands were single-cased; that is, they did not have an -% upper- and lower-case as we do nowadays in Western scripts. On the other -% hand, a script might be majuscule or minuscule. A \textit{majuscule} script -% is one, like our upper-case, where the letters are drawn between two lines -% and are of a uniform height with no ascenders or descenders. -% A \textit{minuscule} script, like our lower-case, is drawn between four lines -% and has ascenders and descenders. -% -% \begin{table} -% \centering -% \caption{The main manuscript book-hands} \label{tab:1} -% \begin{tabular}{lccccc} \hline -% Name & Century & x-height & Height & Pen & Normalised \\ -% & & (mm) & (nib widths) & angle & height \\ \hline -% Roman Rustic & 1--6 & 5.7 & 4--6 & 45 & 1.90 \\ -% Uncial & 3--6 & 4.1 & 4--5 & 30 & 1.37 \\ -% Half Uncial & 3--9 & 3.2 & 3--6 & 20--30 & 1.07 \\ -% Artificial Uncial & 6--10 & 4.2 & 3--6 & 10 & 1.40 \\ -% Insular majuscule & 6--9 & 4.2 & 5 & 0--20 & 1.40 \\ -% Insular minuscule & 6 onward & 4.1 & 5--6 & 45--70 & 1.37 \\ -% Carolingian minuscule & 8--12 & 3.0 & 3--5 & 45 & 1.00 \\ -% Early Gothic & 11--12 & 3.8 & 4--6 & 20--45 & 1.27 \\ -% Gothic Textura & 13--15 & 3.9 & 3--5 & 30--45 & 1.30 \\ -% Gothic Prescius & 13 onward & 3.3 & 4--5 & 45 & 1.10 \\ -% Rotunda & 13--15 & 3.2 & 4--6 & 30 & 1.07 \\ -% Humanist minuscule & 14 onward & 3.0 & 4--5 & 30--40 & 1.00 \\ \hline -% \end{tabular} -% \end{table} -% -% During the period under consideration arabic numerals were effectively -% not used. At the beginning they were unknown and even though some knew -% of them towards the end, the glyphs used for them are not recognisable --- -% to me they look somewhat like cryllic letters --- and each locality -% and time had its own highly individualistic rendering. The general rule -% when using one of these book-hands is to write all numbers using -% roman numerals. -% -% The Roman alphabet consisted of 23 capital letters --- the J, U and W -% were absent. The book-hands initially used both a `u' and a `v' interchangeably -% but by the 10th century the practice had become to use the `v' before a vowel -% and the `u' otherwise. The letter corresponding to the W sound appeared -% in England around the 7th century in -% the form of the runic \textit{wen} character and by about the 11th century -% the `w' chacter was generally used. The `J' is the newest letter of all, not -% appearing until about the mid 16th century. -% -% In the first century punctuation was virtually unknown, and typically -% would not even be any additional space between individual words, never -% mind denoting ends of sentences. Sometimes a dot at mid-height would be -% used as a word seperator, or to mark off the end of a paragraph. Effectively -% a text was a continuous stream of letters. By the time that printing was -% invented, though, all of our modern punctuation marks were being used. -% -% Among all these manuscript hands, the Carolingian minuscule is the -% most important as our modern fonts are based on its letter shapes, and it is -% also at this point in time where the division occured between the black letter -% scripts as used even today in Germany, and the lighter fonts used elesewhere. -% The Rotunda and Humanist minuscule hands were developed in Italy and were -% essentially a rediscovery of the Carolingian minusucle. Guthenberg took the -% Gothic 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 Italians were never in favour of the excesses of the Gothic hands -% as they evolved from the Early Gothic. At sometime in the fourteenth -% or fifteenth century, under the influence of writing masters like -% Poggio Bracciolini (1380--1459) and Niccol\`{o} Niccoli (1363--1437), -% the \thisfont{} minuscule became popular in Italy. It is basically a -% return to the Carolingian Minuscule with capital letters based on the -% Square Capitals. Ligatures included ct and st as well as the ampersand. -% The conjunctions \ae{} and \AE{} were sometimes used (accessed by the -% usual macros \verb?\ae? and \verb?\AE? respectively). -% -% It is this hand that forms the basis for our modern roman and italic types. -% -% -% -% \section{The \Lpack{humanist} and \Lpack{allhmin} packages} \label{sec:usc} -% -% The \thisfont{} font family is called |hmin|. The font is supplied in both -% OT1 and T1 encodings. -% -% \subsection{The \Lpack{humanist} 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{\hminfamily} -% The |\hminfamily| 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{\texthmin} -% The command |\texthmin{|\meta{text}|}| will typeset \meta{text} using the -% \thisfont{} fonts. -% -% \subsection{The \Lpack{allhmin} 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{allhmin} package automatically loads the \Lpack{humanist} package, -% so its font commands are available if necessary. -% -% \StopEventually{ -% \bibliographystyle{alpha} -% \renewcommand{\refname}{Bibliography} -% \begin{thebibliography}{GMS94} -% \addcontentsline{toc}{section}{\refname} -% -% \bibitem[And69]{ANDERSON69} -% Donald M.~Anderson. -% \newblock {\em The Art of Written Forms: The Theory and Practice of Calligraphy}. -% \newblock Holt, Rinehart and Winston, 1969. -% -% \bibitem[Bol95]{BOLOGNA95} -% Giulia Bologna. -% \newblock {\em Illuminated Manuscripts: The Book before Gutenberg}. -% \newblock Crescent Books, 1995. -% -% \bibitem[Day95]{DAY95} -% Lewis F.~Day. -% \newblock {\em Alphabets Old \& New}. -% \newblock (3rd edition originally published by B.~T.~Batsford, 1910) -% \newblock Senate, 1995. -% -% \bibitem[Dro80]{DROGIN80} -% Marc Drogin. -% \newblock {\em Medieval Calligraphy: Its History and Technique}. -% \newblock Allenheld, Osmun \& Co., 1980. -% -% \bibitem[Dru95]{DRUCKER95} -% Johanna Drucker. -% \newblock {\em The Alphabetic Labyrinth}. -% \newblock Thames \& Hudson, 1995. -% -% \bibitem[Fir93]{FIRMAGE93} -% Richard A.~Firmage. -% \newblock {\em The Alphabet Abecedarium}. -% \newblock David R~Goodine, 1993. -% -% \bibitem[Fli98]{LETTRINE} -% Daniel Flipo. -% \newblock {\em The LETTRINE package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1998. -% -% \bibitem[Har95]{HARRIS95} -% David Harris. -% \newblock {\em The Art of Calligraphy}. -% \newblock DK Publishing, 1995. -% -% \bibitem[Jen95]{BETON} -% Frank Jensen. -% \newblock {\em The BETON package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1995. -% -% \bibitem[Joh71]{JOHNSTON75} -% Edward Johnston (ed. Heather Child). -% \newblock {\em Formal Penship and Other Papers}. -% \newblock Penthalic, 1971. -% -% \bibitem[Knu87]{CM} -% Donald E.~Knuth. -% \newblock {\em Computer Modern Typefaces}. -% \newblock Addison-Wesley, 1987. -% -% \bibitem[Knu92]{METAFONT} -% Donald E.~Knuth. -% \newblock {\em The METAFONTbook}. -% \newblock Addison-Wesley, 1992. -% -% \bibitem[GMS94]{GOOSSENS94} -% Michel Goossens, Frank Mittelbach, and Alexander Samarin. -% \newblock {\em The LaTeX Companion}. -% \newblock Addison-Wesley Publishing Company, 1994. -% -% \bibitem[Tho75]{THOMAS75} -% Alan G.~Thomas. -% \newblock {\em Great Books and Book Collectors}. -% \newblock Weidenfield and Nichoson, 1975. -% -% \bibitem[Wil99]{DOCMFP} -% Peter R.~Wilson. -% \newblock {\em The DOCMFP Package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1999. -% -% \bibitem[Wil99b]{ROMANNUM} -% Peter R.~Wilson. -% \newblock {\em The ROMANNUM Package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1999. -% -% \end{thebibliography} -% } -% -% \section{The Metafont code} \label{sec:mf} -% -% -% As previously noted, this work is part of a larger project to provide -% fonts covering the main manuscript book-hands. As such, one of the -% aims is to produce a coordinated set of fonts, especially as multiple -% hands might be used in a single document. -% -% Noting that the hands tend to be somewhat larger than the typical 10pt -% size (where the x-height is approximately 1.5mm) used for modern books, -% I have also designed the fonts -% at a larger than normal size, then applied some non-linear factors when reducing -% them down to a 10pt size. -% Further, I have used the height of the Carolingian minuscule as a -% normalising factor when deciding on the absolute height of any particular -% script. The x-height of the Carolingian font is made equal to the -% x-height of the Computer Modern Roman (CMR) font. -% -% Modern fonts are effectively drawn. That is, the outline of the letter is -% drawn carefully and the center is filled with ink. This is shown to good -% effect in the Metafont code for the Computer Modern fonts~\cite{CM}. -% In contrast, the manuscript letters were inked by single pen strokes in -% a calligraphic manner. I have tried to repeat this calligraphic style -% in the Metafont code. -% -% As much as possible I have tried to use parameter values from the -% Computer Modern Roman (CMR) fonts in order to reduce possible -% infelicities if the CM and manuscript fonts are used together. However, -% few of the CMR parameters are applicable to the calligraphic style. -% -% -% \subsection{The parameter file} -% -% We deal with the parameter files first, and start by announcing -% what they are for. The \thisfont{} font comes in three sizes and also as a normal -% and a bold font. -% \begin{macrocode} -%<*base7|base10|base17|base7b|base10b|base17b> -%%%% HMIN7.MF Humanist Miniscule at 7 point design size. -%%%% HMIN10.MF Humanist Miniscule at 10 point design size. -%%%% HMIN17.MF Humanist Miniscule at 17 point design size. -%%%% HMINB7.MF Humanist Miniscule Bold at 7 point design size. -%%%% HMINB10.MF Humanist Miniscule Bold at 10 point design size. -%%%% HMINB17.MF Humanist Miniscule 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 - -%font_identifier:="HMIN"; font_size 7pt#; -%font_identifier:="HMIN"; font_size 10pt#; -%font_identifier:="HMIN"; font_size 17.28pt#; -%font_identifier:="HMINB"; font_size 7pt#; -%font_identifier:="HMINB"; font_size 10pt#; -%font_identifier:="HMINB"; font_size 17.28pt#; - -% \end{macrocode} -% -% \DescribeVariable{jutstretch} -% The CMR scaling for lowercase serifs wrt 17pt size. -% \begin{macrocode} -% jutstretch:=1.19; -% jutstretch:=1.152; -% jutstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{stemstretch} -% The CMR scaling for lowercase stem widths wrt 17pt size. -% \begin{macrocode} -% stemstretch:=1.50; -% stemstretch:=1.31; -% stemstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{caprat} -% The scaling for `capitals' wrt `lowercase'. This is pretty much a guess -% (the ratio for CMR10 is 1.59). -% \begin{macrocode} - caprat:=1.5; % ratio of capital height to minuscule height -% \end{macrocode} -% -% \DescribeVariable{cap_jutstretch} -% The CMR scaling for uppercase serifs wrt 17pt size. -% \begin{macrocode} -% cap_jutstretch:=1.3; -% cap_jutstretch:=1.2; -% cap_jutstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{cap_stemstretch} -% The CMR scaling for uppercase stem width wrt 17pt size. -% \begin{macrocode} -% cap_stemstretch:=1.45; -% cap_stemstretch:=1.31; -% cap_stemstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{bfudge} -% Letter width scaling for bold font wrt normal font. -% \begin{macrocode} -% bfudge:=1.0; -% bfudge:=1.2; -% \end{macrocode} -% -% \DescribeVariable{szfudge} -% Width scaling wrt 17pt letter width. -% \begin{macrocode} -% szfudge:=1.18; -% szfudge:=1.0; -% 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} -% carol_height#:=108.5/36pt#; -% carol_height#:=155/36pt#; -% carol_height#:=268/36pt#; -% \end{macrocode} -% -% \DescribeVariable{vstretch} -% The height of this font wrt the Carolingian font. -% \begin{macrocode} - vstretch:=1.00; - -% \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} -% u#:=15.5/36pt#; -% u#:=20/36pt#; -% u#:=32.5/36pt#; -% u#:=17.9/36pt#; -% u#:=23/36pt#; -% 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 -% cap_serif_fit#:=3.5/36pt#; % extra sidebar near uppercase serifs -% cap_serif_fit#:=5/36pt#; % extra sidebar near uppercase serifs -% cap_serif_fit#:=8/36pt#; % extra sidebar near uppercase serifs -% letter_fit#:=0pt#; % extra space added to all sidebars -% letter_fit#:=0pt#; % extra space added to all sidebars -% 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} -% sb#:=1/2u#; % unit for side bearings -% sb#:=1/2u#; % unit for side bearings -% sb#:=1/2u#; % unit for side bearings - -% \end{macrocode} -% -% \DescribeVariable{cap_height} -% The height of capital letters. -% \begin{macrocode} -% cap_height#:=172.2/36pt#; % height of caps -% cap_height#:=246/36pt#; % height of caps -% 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} -% thickfudge:=1/5; -% 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:=25; % pen angle -% \end{macrocode} -% -% \DescribeVariable{ascratio} -% The height of lower case ascenders wrt |x_height|. -% \begin{macrocode} - ascratio:=7/4; -% \end{macrocode} -% -% \DescribeVariable{asc_height} -% The height of lower case ascenders. -% \begin{macrocode} - asc_height#:=ascratio*x_height#; -% \end{macrocode} -% -% \DescribeVariable{descratio} -% The depth of lower case descenders wrt |x_height|. -% \begin{macrocode} - descratio:=2/4; -% \end{macrocode} -% -% \DescribeVariable{desc_depth} -% The depth of lower case descenders. -% \begin{macrocode} - desc_depth#:=descratio*x_height#; -% \end{macrocode} -% -% \DescribeVariable{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} -% rule_thickness#:=.34pt#; -% rule_thickness#:=.4pt#; -% rule_thickness#:=.6pt#; - -% \end{macrocode} -% -% \DescribeVariable{jutfudge} -% Controls the protrusion of serifs. -% \begin{macrocode} -%%%jutfudge:= 3/4; -jutfudge:= 1/2; -% \end{macrocode} -% -% \DescribeVariable{jut} -% The lowercase serif protrusion. -% \begin{macrocode} -jut#:=jutstretch*jutfudge*thick#; -% \end{macrocode} -% -% \DescribeVariable{srad} -% |srad| with |0 < srad < 1| controls the serif radius. -% \begin{macrocode} -srad:=0.8; % was 0.5 -% \end{macrocode} -% -% \DescribeVariable{trijut} -% The lowercase triangular serif protrusion. -% \begin{macrocode} -trijut#:=0.75jutstretch*thick#; -% \end{macrocode} -% -% \DescribeVariable{clubjutfudge} -% The fractional protusion of a club serif. -% \begin{macrocode} -clubjutfudge:=1/2; -% \end{macrocode} -% -% \DescribeVariable{clubjut} -% The lowercase club serif protrusion. -% \begin{macrocode} -clubjut#:=jutstretch*clubjutfudge*thick#; -% \end{macrocode} -% -% \DescribeVariable{o} -% Amount of overshoot for curves (as in an `o'). Use CMR values. -% \begin{macrocode} -% o#:=5/36pt#; -% o#:=8/36pt#; -% 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#; -comma_width#:=4/4dot_size#; - -% \end{macrocode} -% -% Finally, call the driver file for the font. -% \begin{macrocode} -generate hmintitle %% switch to the driver file - -% \end{macrocode} -% -% The end of this code section. -% \begin{macrocode} -% -% \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 HMINTITLE.MF for the Humanist Miniscule 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}{humanist_font_setup} -% This macro contains the set up for the \thisfont{} fonts. -% \begin{macrocode} - -def humanist_font_setup= % contains special stuff for humanist 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); - let adjust_fit = normal_adjust_fit; -% \end{macrocode} -% \DescribeVariable{stylus} -% The pen for drawing the thinnest lines is |stylus|. -% \begin{macrocode} - pickup pencircle scaled thin; - stylus:=savepen; -% \end{macrocode} -% \DescribeVariable{thickstylus} -% The pen for drawing lines a bit thicker than the thinnest is |thickstylus|. -% \begin{macrocode} - pickup pencircle scaled (1.5thin); - thickstylus:=savepen; -% \end{macrocode} -% \DescribeVariable{quill} -% The normal calligraphic pen is |quill|. -% \begin{macrocode} - pickup pencircle xscaled thick yscaled thin rotated pangle; - quill:=savepen; - -% \end{macrocode} -% -% \DescribeVariable{threequarterquill} -% A pen with 3/4 of the width as quill (but with the same thinness). -% \begin{macrocode} - pickup pencircle xscaled 3/4thick yscaled thin rotated pangle; - threequarterquill := savepen; - -% \end{macrocode} -% -% \DescribeVariable{halfquill} -% A pen with 1/2 of the width as quill (but with the same thinness). -% \begin{macrocode} - pickup pencircle xscaled 1/2thick yscaled thin rotated pangle; - halfquill := savepen; - -% \end{macrocode} -% -% \DescribeVariable{quarterquill} -% A pen with 1/4 of the width as quill (but with the same thinness). -% \begin{macrocode} - pickup pencircle xscaled 1/4thick yscaled thin rotated pangle; - quarterquill := savepen; - -% \end{macrocode} -% -% -% \begin{macrocode} - numeric pcshiftx#; % x value of LHS of box wrt origin of char box - define_pixels(pcshiftx); - numeric sqxside#; % x size of the square - numeric sqyside#; % y size of the square - define_pixels(sqxside,sqyside); - -enddef; % end of humanist_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 $0y$$: - 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 $0y$$: - 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 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; -humanist_font_setup; - -% \end{macrocode} -% -% -% We generate letters, together with some punctuation and -% analphabetics. -% \begin{macrocode} - -input hminl; % lower case -input hminu; % capitals -input hminpunct; % punctuation -input hminlig; % the several dashes -input hmindig; % 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. - -% -% \end{macrocode} -% -% \subsection{The code for normal letters} -% -% The following code is for the lower case characters. -% -% \begin{macrocode} -%<*min> -% HMINL.MF Program file for Humanist Miniscule lower case -% - -% \end{macrocode} -% -% -% \begin{routine}{a} -% The letter `a'. -% \begin{macrocode} -cmchar "HMIN letter a"; -beginchar("a", 2sb#+hstretch*(11/11x_height#+jut#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pair pr[]; -pickup quill; -n1 := w - 2pcshiftx -jut; % effective letter width -% "stem" -rt x1 = w-pcshiftx-jut; top y1=h; -x2 = x1; bot y2=0; -z16 = 1/6[z2,z1]; -rt x6 = x16; y6=y16; -lft x4 = pcshiftx; y4 = 1/2h; -% stem path -pth1 := z1{down}..z2; -pr1 := direction 1 of pth1; -z20 = z2 shifted -10pr1; - -z11 = point 3/13 of pth1; z15 = point 10/13 of pth1; -lft x13 = pcshiftx; y13=1/4h; -%%ductus:=true; -if ductus: - pickup stylus; -else: - % draw stem - draw pth1; - draw_roundserif(1,2,srad); - draw_roundserif(2,20,srad); - % draw bowl -%% draw z1{-pdir}..z4{down}..z6{pdir}; - draw z11{-pdir}..z13{down}..z15{pdir}; -fi -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 "HMIN letter b"; -beginchar("b", 2sb#+hstretch*(13/11x_height#+jut#), - asc_height#, 0); -adjust_fit(0,0); -numeric n[]; -path pth[]; -pcshiftx := sb; -pickup quill; -n1:=w-2pcshiftx; % actual letter width -n2:=h/ascratio; % top of bowl -%%ductus:=true; -lft x1 = pcshiftx+jut; top y1=h; -x2=x1; bot y2=0; -x12=x2; bot y12=y2; -x3 = x1; y3=1/2n2; -rt x5 = w-pcshiftx; y5=y3; -x4 = 1/2[x3,x5]; bot y4=0; -x6=x4; top y6=n2; -pth1 := z1..z3{down}..z4{right}.. z5{up}; -z98=(0,3/4n2); z99=(w,y98); -pth2 := z98--z99; -z7 = pth1 intersectionpoint pth2; -if ductus: - pickup stylus; -fi -%%draw z1..z3{down}..z4{right}..z5{up}..z6{left}..z7{-pdir}; -draw z1--z2; -draw_flatserif(1,2,srad); -draw z12..z4{right}..z5{up}..z6{left}..z7{-pdir}; -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 "HMIN letter c"; -beginchar("c", 2sb#+hstretch*(11/11x_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{pdir}; -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 "HMIN letter d"; -beginchar("d", 2sb#+hstretch*(13/11x_height#+jut#), - asc_height#, 0); -adjust_fit(0,0); -numeric n[]; -path pth[]; -pcshiftx := sb; -pickup quill; -n1 = h/ascratio; % x-height -rt x1=w-pcshiftx-jut; top y1=h; -x2 = x1; bot y2=0; -x3 = x1; y3 = 1/4n1; -lft x5 = pcshiftx; y5=1/2n1; -x4 = 1/2[x3,x5]; bot y4 = 0; -x6=x4; top y6 = n1; -x7=x3; y7=3/4n1; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -draw z3..z4{left}..z5{up}..z6{right}..z7; -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 "CMIN letter e"; -beginchar("e", sb#+hstretch*(12/11x_height#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pickup quill; -n1 := w-pcshiftx; % actual letter width -n2 := 7/8n1; % width of bowl -x1 = pcshiftx + 5/8n2; top y1=h; -lft x2 = pcshiftx; y2 = 1/2h; -x3 = pcshiftx + 1/2n2; bot y3 = 0; -rt x4 = pcshiftx + n2; y4 = 1/4h; -z98=(0,5/8h); z99=(2w,y98); -pth1 := z98--z99; -pth2 := z1{left}..z2{down}..z3{right}; -z7 = pth1 intersectionpoint pth2; -rt x17 = w; y17=y7; -rt x8 =pcshiftx+n2; y8=y2; -pth3 := z1{right}..z8{down}..z3{left}; -z9 = pth1 intersectionpoint pth3; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z9{up}..z1{left}..z2{down}..z3{right}..z4{pdir}; -draw z7--z17; -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 "HMIN letter f"; -beginchar("f", 2sb#+hstretch*(11/11x_height#+jut#), - (asc_height#), 0); -adjust_fit(0,0); -numeric n[]; -pcshiftx := sb; -pickup quill; -n1 := h/ascratio; % x-height -%% stem -lft x1=lft x2=pcshiftx+jut; top y1=n1; bot y2=0; -%% flick -x4=x2; y4 = 1/2n1; -rt x6=w-pcshiftx; y6 = 2/3h; -x5 = 2/3[x4,x6]; top y5=h; -%% bar -x14=pcshiftx; top y14=n1; -rt x16 = w -pcshiftx; y16 = y14; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_roundserif(2,1,srad); -draw z1{up}...z5{right}...z6; % top -draw z14--z16; % bar -ductus:=false; -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 "CMIN letter g"; -beginchar("g", 2sb#+hstretch*(16/11x_height#), - x_height#, desc_depth#); -adjust_fit(0,0); -path pth[]; -pair vec[]; -numeric n[]; -pcshiftx := sb; -pickup quill; -n1 := 4/5w - 2pcshiftx; % width of top o -%% top O -x1 = x3 = pcshiftx + 1/2n1; top y1=h; bot y3=1/8h; -lft x4 = pcshiftx; rt x2 = pcshiftx+n1; y2 = y4 = 1/2[y1,y3]; - -%% top flick -lft x11 = rt x1; y11=y1; -rt x13 = w-pcshiftx; y13 = h; - -%% bottom O -x31=x3; top y31= -1/8d; -x33=x31; top y33 = -d; -%rt x32 = w-pcshiftx; y32 = 1/2[y31,y33]; -lft x32 = x2; y32 = 1/2[y31,y33]; -lft x34 = pcshiftx; y34=y32; - -%% link -x44=1/2[x34,x31]; y44=1/2[y3,y31]; - -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1..z2..z3..z4..cycle; % top O -draw z11{right}..z13{pdir}; % flick -%draw z31..z32..z33..z34..cycle; % bottom O -draw z31{right}..z32{down}..z33{left}..{up}z34..cycle; % bottom O -draw z3{left}..z44{down}..z31{right}; % link -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,11,12,13,31,32,33,34,35,36,100); -endchar; % end "g" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{h} -% The letter `h'. -% \begin{macrocode} -cmchar "HMIN letter h"; -beginchar("h", 2sb#+hstretch*(13/11x_height#+jut#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -numeric n[]; -%% stem -lft x1=lft x2=pcshiftx+jut; -top y1=h; bot y2=0; -%% bowl -n1 := h/ascratio; % x-height -z3=(x1,6/8n1); -rt x5 = w-pcshiftx; y5=1/2n1; -x4=1/2[x3,x5]; top y4 = n1; -%%lft x6=x4; bot y6=0; -x6=1/2[x4,x5]; -bot y6=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -draw z3..z4{right}..z5{down}..z6{-pdir}; - -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 "CMIN letter i"; -beginchar("i", 2sb#+hstretch*(thick#+2jut#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -lft x1=lft x2=pcshiftx+jut; -top y1=h; bot y2=0; -%% dot -x22 = x21=x1; -bot y22 = 2h - bot y1; -bot y21 = top y22; -%%ductus:=true; -draw_tstem(1,2,srad); -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -draw z21--z22; %% dot -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 "CMIN letter j"; -beginchar("j", sb#+hstretch*(3/8x_height#), - x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% stem -rt x1 = w-pcshiftx; top y1 = h; -x2=x1; y2=-1/2d; -%% dot -x22 = x21=x1; -bot y22 = 2h - bot y1; -bot y21 = top y22; -%% bottom hook -lft x3 = 0; bot y3 = -d; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2; % stem -draw_flatserif(1,2,srad); -draw z21--z22; % dot -draw z2{down}..z3{-pdir}; % hook -ductus:=false; -penlabels(1,2,3,100); -endchar; % end "j" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{k} -% The letter `k'. -% \begin{macrocode} -cmchar "HMIN letter k"; -beginchar("k", 2sb#+hstretch*(14/11x_height#+jut#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -path pth[]; -numeric n[]; -pickup quill; -%% stem -n1 = h/ascratio; % x-height -lft x1=lft x2=pcshiftx+jut; -top y1=h; bot y2=0; -%% top arm -%%z3=(x1,1/2n1); -x3 = x1; top y3 = 1/2n1; -rt x5=5/8[x1,w-pcshiftx]; top y5=n1; -x4=1/2[x3,x5]; top y4=n1; -pth1 := z3{pdir}..z5{up}; - -x29=x1; top y29 = 7/8n1; -rt x25=5/8[x1,w-pcshiftx]; y25=6/8[y3,y29]; -x27=1/2[x29,x25]; top y27=n1; -pth1 := z3{pdir}..z25{up}..z27{left}..z29; -pth1 := z3{pdir}..z25..z27{left}..z29; - - -%% lower arm -pth2 := (rt x1,0)--(rt x1,h); -z13 = pth1 intersectionpoint pth2; -pickup threequarterquill; -lft x14 = x13; bot y14 = y13; -rt x7=w-pcshiftx; bot y7=0; - -pth3 := z14{pdir}..z25..z27{left}..z29; -pickup quill; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -%%draw pth1; % upper arm -draw pth3; % upper arm -pickup threequarterquill; -%%draw z14{down}..z7{-ppdir}; % lower arm -%%draw z14{down}..z7; % lower arm -draw z14{-ppdir}..z7{right}; % lower arm -pickup quill; -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 "HMIN letter l"; -beginchar("l", 2sb#+hstretch*(9/11x_height#+jut#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -lft x1=pcshiftx+jut; top y1=h; -n1 := top y1 - y1; -x2=x1; bot y2 =3n1; -rt x4 = w-pcshiftx; bot y4=n1; -x3=1/2[x2,x4]; bot y3=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2..z3{right}..z4; -draw_flatserif(1,2,srad); -ductus:=false; -penlabels(1,2,3,4,100); -endchar; % end "l" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{m} -% The letter `m'. -% \begin{macrocode} -cmchar "HMIN letter m"; -beginchar("m", 2sb#+hstretch*(19/11x_height#+2jut#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pickup quill; -%% left stem -lft x1=pcshiftx+jut; top y1=h; -x2=x1; bot y2=0; -%% start of bowl -x13=x1; y13=3/4h; -%% bottom of right and middle stems -rt x6 = w -pcshiftx - jut; y6=y2; -z4 = 1/2[z2,z6]; -%% top of middle and right stems -x3=x4; y3=y1; -x5=x6; y5=y13; -%% top of bowls -x14=2/3[x13,x3]; top y14 = h; -x33=x4; y33=y13; -x34=2/3[x33,x5]; y34 = y14; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % left half -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -draw z13{pdir}..z14{right}..z33{down}--z4; -draw_roundserif(4,3,srad); -draw z33{pdir}..z34{right}..z5{down}--z6; -draw_roundserif(6,5,srad); -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 "HMIN letter n"; -beginchar("n", 2sb#+hstretch*(12/11x_height#+2jut#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -%% left stem -lft x1=pcshiftx+jut; top y1=h; -x2=x1; bot y2=0; -% start of bowl -x13=x1; y13=3/4h; -%% right stem -rt x4 = w-pcshiftx-jut; y4=y2; -x3 = x4; y3 = y13; -% top of bowl -x14 = 2/3[x13,x3]; top y14 = h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % left stem -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -draw z13{pdir}..z14{right}..z3{down}--z4; -draw_roundserif(4,3,srad); -ductus:=false; -penlabels(1,2,3,4,5,6,13,14,100); -endchar; % end "n" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{o} -% The letter `o'. -% \begin{macrocode} -cmchar "CMIN letter o"; -beginchar("o", 2sb#+hstretch*(15/11x_height#), % could be 15/11 - 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; -draw z1..z2..z3..z4..cycle; -z5=(pcshiftx,-o); -obowl(5, w-2pcshiftx, h+2o); -%%ductus:=true; -if ductus: - pickup stylus; - draw obfirst; draw obsecond; draw obouter; draw obinner; -else: -%% fill obouter; unfill obinner; -fi -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 "CMIN letter p"; -beginchar("p", 2sb#+hstretch*(13/11x_height#+jut#), - x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% stem -lft x1=lft x2=pcshiftx+jut; -top y1=h; bot y2=-d; -%% bowl % from "d" -z3=3/4[(x1,0),z1]; -rt x5 = w-pcshiftx; y5=1/2h; -x4=1/2[x3,x5]; top y4 = h; -x6=x4; bot y6=0; -z7=1/4[(x1,0),z1]; - -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad) -draw z3{pdir}..z4{right}..z5{down}..z6{left}..z7; % bowl (from d) -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 "CMIN letter q"; -beginchar("q", 2sb#+hstretch*(13/11x_height#+jut#), - x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% right stem -rt x1=w-pcshiftx-jut; top y1=h; -x2=x1; bot y2=-d; -%% bowl -z3=1/4[(x1,0),z1]; -lft x5=pcshiftx; y5=1/2h; -x4=1/2[x3,x5]; bot y4=0; -x6=x4; top y6=h; -z7=3/4[(x1,0),z1]; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); -%%draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -draw z3{-pdir}..z4{left}..z5{up}..z6{right}..z7; -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 "CMIN letter r"; -beginchar("r", 2sb#+hstretch*(10/11x_height#+jut#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% stem -lft x1=lft x2=pcshiftx+jut; -top y1=h; bot y2=0; -%% bowl -z3=3/4[z2,z1]; -rt x5 = w-pcshiftx; y5=y3; -x4=1/2[x3,x5]; top y4 = h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -draw z3{pdir}..z4{right}..z5{down}; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,100); -endchar; % end "r" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{s} -% The letter `s'. This is a `short' S. -% \begin{macrocode} -cmchar "HMIN letter s"; -beginchar("s", 2sb#+hstretch*(11/11x_height#+jut#), % 13/11 seems too wide - x_height#, 0); -adjust_fit(0,0); -numeric n[]; -pcshiftx := sb; -pickup quill; -x2=x4=x6=1/2w; -rt x1 = rt x5 = w-pcshiftx; -lft x3 = lft x7 = pcshiftx; -top y2=h; bot y6=0; -y4 = 7/16[y6,y2]; -n1 := top y2 - y2; -y3 = 1/2[y4,y2]; y5 = 1/2[y4,y6]; -y1 = y2-n1; -y7 = y6+n1; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1..z2{left}..z3{down}..z4..z5{down}..z6{left}..z7; -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 "CMIN letter t"; -beginchar("t", 2sb#+hstretch*(8/11x_height#+jut#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% bar -lft x11 = pcshiftx; rt x12=w-pcshiftx; -top y11= top y12=h; -n1 := top y11 - y11; -%% stem -lft x1=pcshiftx+jut; bot y1=h+n1; -x2=x1; bot y2 = 2n1; -rt x4 = w-pcshiftx; bot y4 = n1; -x3 = 1/2[x2,x4]; bot y3=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z11--z12; % bar -draw z1--z2..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 "CMIN letter u"; -beginchar("u", 2sb#+hstretch*(11/11x_height#+2jut#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% left stem -lft x1 = pcshiftx + jut; top y1 = h; -% start of bowl -x13=x1; y13=1/3h; -% right stem -rt x3=w-pcshiftx-jut; 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; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z13{down}..z14{right}..z33{pdir}; -draw_flatserif(1,13,srad); -draw_tstem(3,4,srad); % right stem -draw_flatserif(3,4,srad); -draw_roundserif(4,3,srad); -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 "CMIN letter v"; -beginchar("v", 2sb#+hstretch*(13/11x_height#+jut#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -path pth[]; -numeric n[]; -pickup quill; -%% left stem top -lft x1 = pcshiftx + jut; top y1 = h; -bot y3 = 0; -%% right stem -rt x5=w-pcshiftx; top y5 = h; -x3=5/8[x1,x5]; - -z11=(x1,0); z15=(x5,0); -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1{down}..z3; % left stem -draw_flatserif(1,11,srad); -draw z5{down}..z3; % right stem -draw_flatserif(5,15,srad); -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 "CMIN letter w"; -beginchar("w", 2sb#+hstretch*(21/11x_height#+jut#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -%% left stem -lft x1 = pcshiftx + jut; top y1 = h; -% start of bowl -x13=x1; y13=1/3h; -% right stem -rt x5=w-pcshiftx-jut; y5=y1; -x6=x5; bot y6=0; -z53=1/4[z6,z5]; % start of bowl -% middle stem -z3 = 1/2[z1,z5]; -z33=(x3,y13); -% middle of bowl -x14=1/3[x1,x3]; bot y14=0; -% middle of right bowl -x34=1/3[x3,x5]; y34=y14; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z13{down}..z14{right}..z33{pdir}; % left -draw_flatserif(1,13,srad); -draw z3--z33{down}..z34{right}..z53{pdir}; % middle -draw_flatserif(3,33,srad); -draw_tstem(5,6,srad); % right stem -draw_flatserif(5,6,srad); -draw_roundserif(6,5,srad); -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 "CMIN letter x"; -beginchar("x", 2sb#+hstretch*(13/11x_height#+jut#), - x_height#, 0); -adjust_fit(0,0); -path pth[]; -numeric n[]; -pcshiftx := sb; -pickup quill; - -% top left to bottom right -lft x1 = pcshiftx + jut; y1=h; -rt x2 = w - pcshiftx - jut; y2 =0; - -% bottom left to top right -lft x21=pcshiftx; bot y21=0; -rt x22=w-pcshiftx; top y22=h; -z12=14/24[z1,z2]; - -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2; -draw_roundserif(1,2,srad); -draw_roundserif(2,1,srad); - -draw z21..z12..z22{up}; - -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 "CMIN letter y"; -beginchar("y", 2sb#+hstretch*(14/11x_height#+jut#), - x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -path pth[]; -numeric n[]; -pickup quill; -%% left stem top -lft x1 = pcshiftx + jut; top y1 = h; -bot y3 = 0; -%% right stem -rt x5=w-pcshiftx; top y5 = h; -lft x9=-1/2w; bot y9 = -d; -pth1 := z9{right}..z5{up}; -pth2 := (0,y3)--(w,y3); -z99 = pth1 intersectionpoint pth2; -x3 = x99; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1{down}..z3; % left stem -draw_flatserif(1,3,srad); -draw pth1; % right stem -draw_flatserif(5,3,srad); -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 "CMIN letter z"; -beginchar("z", 2sb#+hstretch*(12/11x_height#), - x_height#, 0); -adjust_fit(0,0); -numeric n[]; -path pth[]; -pcshiftx := sb; -pickup quill; -%% top bar ends -lft x1 = pcshiftx; rt x2 = w-pcshiftx; -top y1 = top y2 = h; -%% bottom bar -x3=x1; x5=x2; x4=1/2[x3,x5]; -bot y3 = bot y4 = 0; -bot y5 = y4; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2; % top bar -draw z3--z4..z5; % bottom bar -draw z2--z3; % diagonal -ductus:=false; -penlabels(1,2,3,4,5,6,10o,10i,20o,20i,100); -endchar; % end "z" - -% \end{macrocode} -% \end{routine} -% -% -% The end of this file -% \begin{macrocode} -% -% \end{macrocode} -% -% -% \subsection{The code for capital letters} -% -% \thisfont{} `capitals' were drawn with the same pen as for the minuscules, -% and the letters were merely larger versions of the minuscules. -% -% \begin{macrocode} -%<*maj> -% HMINU.MF Program file for Humanist Miniscule `capitals' -% - -% \end{macrocode} -% -% -% \begin{routine}{A} -% The letter `A'. -% \begin{macrocode} -cmchar "HMIN letter A"; -beginchar("A", 2sb#+caprat*hstretch*(20/18x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pair pr[]; -pickup quill; -x100 = 0; -n2 := rt x100 - lft x100; -n1 := w - 2pcshiftx - n2; % effective letter width -%% legs -x1 = pcshiftx + n1/2; top y1=h; -lft x2 = pcshiftx; bot y2 = 0; -rt x3 = pcshiftx + n1; y3=y2; -rt x4 = w-pcshiftx; y4=y3; -%% bar -z12=10/16[z1,z2]; z83=10/16[z1,z3]; -z13 = (x83 - n2,y83); -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2; draw z1--z3; draw z12--z13; %% legs and bar -draw z3--z4; draw z2--(x2+n2,y2); draw (x1-n2,y1)--z1; %% serifs -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 "HMIN letter B"; -beginchar("B", 2sb#+caprat*hstretch*(14/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; -%% 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 "HMIN letter C"; -beginchar("C", 2sb#+caprat*hstretch*(16/18x_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{pdir}; -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 "HMIN letter D"; -beginchar("D", 2sb#+caprat*hstretch*(18/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; -%% stem -lft x1 = pcshiftx+n1; top y1=h; -x2 = x1; bot y2 = 0; -%% bowl -lft x3 = pcshiftx; y3=y1; -x7 = x3; y7=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 "HMIN letter E"; -beginchar("E", sb#+caprat*hstretch*(14/18x_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+n1; top y1 = h; -x2 = x1; bot y2=0; -%% bars -lft x3 = pcshiftx; y3 = y1; rt x4 = w-pcshiftx; y4=y3; -x5=x1; y5 = 1/2[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 "HMIN letter F"; -beginchar("F", 2sb#+caprat*hstretch*(14/18x_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+n1; top y1=h; bot y2=0; -%% bars -lft x3 = pcshiftx; y3 = y1; rt x4 = w-pcshiftx; y4 = y3; -x5=x1; y5 = 1/2[y1,y2]; x6 = x4; y6 = y5; -%% serif -x211 = x2 - n1; y211 = y2; -x212 = x2 + n1; y212 = y2; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2; -draw z3--z4; draw z5--z6; -draw z211--z212; -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 "HMIN letter G"; -beginchar("G", 2sb#+caprat*hstretch*(19/18x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -path pth[]; -pair vec[]; -numeric n[]; -pcshiftx := sb; -pickup quill; -x100 = 0; -n1 := rt x100 - lft x100; -%% bar -rt x52 = w - pcshiftx; y52 = 1/2h; -x51 = x52 - 2n1; y51 = y52; -z512 = 1/2[z51,z52]; -%% 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; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,11,12,13,31,32,33,34,35,36,100); -endchar; % end "G" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{H} -% The letter `H'. -% \begin{macrocode} -cmchar "HMIN letter H"; -beginchar("H", 2sb#+caprat*hstretch*(18/18x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -numeric n[]; -x100 = 0; -n1 := rt x100 - lft x100; -%% stems -lft x1=lft x2=pcshiftx+n1; -top y1=h; bot y2=0; -rt x3 = w - pcshiftx - n1; x4 = x3; y3 = y1; y4 = y2; -%% bar -z12 = 1/2[z1,z2]; z34 = 1/2[z3,z4]; -%% serifs -rt x111 = lft x1; y111 = y1; lft x112 = rt x1; y112 = y111; % TL -x211 = x111; x212 = x112; y211 = y212 = y2; % BL -rt x311 = lft x3; y311 = y3; lft x312 = rt x3; y312 = y311; % TR -x411 = x311; x412 = x4+n1; y411 = y412 = y4; % BR -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2; draw z3--z4; draw z12--z34; -draw (x1-n1,y1)--(x1+n1,y1); draw (x2-n1,y2)--(x2+n1,y2); -draw (x3-n1,y3)--(x3+n1,y3); draw (x4-n1,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 "HMIN letter I"; -beginchar("I", 2sb#+caprat*hstretch*(thick#+2jut#), - 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 -rt x111 = lft x1; lft x112 = rt x1; y111 = y112 = y1; -x211 = x111; x212 = x112; y211 = y212 = y2; -%%ductus:=true; -draw z1--z2; -draw z111--z112; draw z211--z212; -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 "HMIN letter J"; -beginchar("J", 2sb#+caprat*hstretch*(10/18x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -path pth[]; -numeric n[]; -pickup quill; -x100 = 0; -n1 := rt x100 - lft x100; -%% stem serif -rt x112 = w - pcshiftx; top y112 = h; -x111 = x112 - n1; y111 = y112; -%% stem -z1 = 1/2[z111,z112]; -x2 = x1; y2 = 1/4h; -%% hook -lft x4 = pcshiftx; y4 = 1/2y2; -x3 = 1/2[x2,x4]; bot y3 = 0; -pth1 := z2{down}..z3{left}..z4; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2; % stem -draw z111--z112; -draw pth1; -ductus:=false; -penlabels(1,2,3,100); -endchar; % end "J" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{K} -% The letter `K'. -% \begin{macrocode} -cmchar "HMIN letter K"; -beginchar("K", 2sb#+caprat*hstretch*(17/18x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -path pth[]; -numeric n[]; -pickup quill; -x100 = 0; -n1 := rt x100 - lft x100; -%% 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; -rt x5 = w - pcshiftx - n1; 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+n1,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 "HMIN letter L"; -beginchar("L", 2sb#+caprat*hstretch*(12/18x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -x100 = 0; n1 := rt x100 - lft x100; -lft x1=pcshiftx+n1; top y1=h; -x2=x1; bot y2 =0; -lft x3 = pcshiftx; 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+n1,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 "HMIN letter M"; -beginchar("M", 2sb#+caprat*hstretch*(25/18x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pickup quill; -x100 = 0; -n1 := rt x100 - lft x100; -%% left stem -lft x1=pcshiftx+n1; top y1=h; -lft x2=pcshiftx; bot y2=0; -%% right stem -rt x4 = w - pcshiftx - n1; y4 = y2; -x3 = x4 - n1; y3 = y1; -%% the V -z24 = 1/2[z2,z4]; -pth1 := z1{-ppdir}..{down}z24; -pth2 := z3{down}..{down}z24; -%% serifs -x111 = x1 - n1; y111 = y1; % TL -x212 = x2+n1; y212 = y2; % BL -x311 = x3-n1; y311 = y3; % TR -x412 = x4+n1; y412 = y4; % BR -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2; draw z3--z4; draw pth1; draw pth2; -draw z111--z1; draw z2--z212; -draw z311--z3; draw z4--z412; -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 "HMIN letter N"; -beginchar("N", 2sb#+caprat*hstretch*(22/18x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -path pth[]; -numeric n[]; -pickup quill; -x100 = 0; -n1 := rt x100 - lft x100; -%% stems -lft x1=pcshiftx+n1; top y1=h; x2=x1; bot y2=0; -rt x3 = w - pcshiftx - n1; x4 = x3; y3 = y1; y4 = y2; -pth1 := z1{-ppdir}..{-ppdir}z4; -%% serifs -x111 = x1 - n1; x112 = x1 + n1; y111 = y112 = y1; % TL -x211 = x111; x212 = x112; y211 = y212 = y2; % BL -x311 = x3 - n1; x312 = x3 + n1; y311 = y312 = y3; % TR -x411 = x311; x412 = x312; y411 = y412 = y4; % BR -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2; draw z3--z4; draw pth1; -draw z111--z112; draw z211--z212; -draw z311--z312; draw z411--z412; -ductus:=false; -penlabels(1,2,3,4,5,6,13,14,100); -endchar; % end "N" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{O} -% The letter `O'. -% \begin{macrocode} -cmchar "HMIN letter O"; -beginchar("O", 2sb#+caprat*hstretch*(18/18x_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 "HMIN letter P"; -beginchar("P", 2sb#+caprat*hstretch*(14/18x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -path pth[]; -numeric n[]; -pickup quill; -x100 = 0; -n1:= rt x100 - lft x100; -%% stem -lft x1=lft x2=pcshiftx+n1; -top y1=h; bot y2=0; -z12 = 1/2[z1,z2]; -%% bowl -z3 = (pcshiftx,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 "HMIN letter Q"; -beginchar("Q", 2sb#+caprat*hstretch*(18/18x_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 "HMIN letter R"; -beginchar("R", 2sb#+caprat*hstretch*(18/18x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pickup quill; -x100 = 0; -n1:= rt x100 - lft x100; -n2 := 14/18; %% P/R width ratio -%% stem -lft x1=lft x2=pcshiftx+n1; -top y1=h; bot y2=0; -z12 = 1/2[z1,z2]; -%% bowl -z3 = (pcshiftx,y1); -x7 = x12; top y7 = y12; -rt x5 = w*n2 - pcshiftx; y5 = 1/2[y3,y7]; -pth1 := z3--z1{right}..z5{down}..{left}z7; -%% leg -z21 = z7; -x23 = w-pcshiftx; bot y23 = 0; -pth2 := z21{-ppdir}..{right}z23; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2; draw pth1; draw pth2; -draw (x2-n1,y2)--(x2+n1,y2); -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 "HMIN 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 "HMIN letter T"; -beginchar("T", 2sb#+caprat*hstretch*(16/18x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% bar -lft x1 = pcshiftx; rt x2=w-pcshiftx; -top y1 = top y2 = h; -%% stem -z3 = 1/2[z1,z2]; -x4 = x3; bot y4 = 0; -%% foot -n1 := rt x4 - lft x4; -rt x5 = lft x4; x6 = x4 + n1; y5 = y6 = y4; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2; % bar -draw z3--z4; % stem -draw z5--z6; % foot -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 "HMIN letter U"; -beginchar("U", 2sb#+caprat*hstretch*(20/18x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pickup quill; -x100 = 0; -n1 := rt x100 - lft x100; -%% left stem -lft x1 = pcshiftx + n1; top y1 = h; -% start of bowl -x13=x1; 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 z3--z4; draw pth1; -draw (x1-n1,y1)--(x1+n1,y1); -draw (x3-n1,y3)--(x3+n1,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 "HMIN letter V"; -beginchar("V", 2sb#+caprat*hstretch*(20/18x_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 tops -lft x1 = pcshiftx + 2n1; top y1 = h; -rt x3 = w - pcshiftx - 2n1; top y3 = h; -%% bottom -x13 = 1/2[x1,x3]; bot y13 = 0; -pth1 := z1{-pdir}..{-ppdir}z13; -pth2 := z13{pdir}..z3; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; draw pth2; -draw (x1-2n1,y1)--(x1,y1); -draw (x3,y3)--(x3+2n1,y3); -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 "HMIN letter W"; -beginchar("W", 2sb#+caprat*hstretch*(26/18x_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 tops -lft x1 = pcshiftx + 2n1; top y1 = h; -rt x5 = w - pcshiftx - 2n1; top y5 = h; -z93 = 1/2[z1,z5]; -x3 = rt x93; y3 = y93; -%% V bottoms -x13 = 1/2[x1,x3]; bot y13 = 0; -x35 = 1/2[x3,x5]; bot y35 = 0; -pth1 := z1{-pdir}..{-ppdir}z13; -%%pth2 := z13{pdir}..z3; -pth3 := z3{-pdir}..{-ppdir}z35; -z335 = directionpoint down of pth3; -%%pth2 := z13..{up}z3; -%%pth3 := z3{down}..z35; -pth2 := z13..{up}z335; -pth4 := z35{pdir}..z5; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; draw (x1-2n1,y1)--(x1,y1); -draw pth2; -draw (x3-n1,y3)--(x3,y3); -draw pth3; -draw pth4; draw (x5,y5)--(x5+2n1,y5); -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 "HMIN letter X"; -beginchar("X", 2sb#+caprat*hstretch*(18/18x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -path pth[]; -numeric n[]; -pcshiftx := sb; -pickup quill; -x100 = 0; -n1 := rt x100 - lft x100; -%% 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 -rt x3 = w - pcshiftx - n1; top y3 = h; -lft x4 = pcshiftx; bot y4 = 0; -pth1 := z4{pdir}..z3; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2; draw pth1; -draw (x1-n1,y1)--(x1+n1,y1); -draw (x2-n1,y2)--(x2+n1,y2); -draw (x3-n1,y3)--(x3+n1,y3); -draw (x4,y4)--(x4+n1,y4); -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 "HMIN letter Y"; -beginchar("Y", 2sb#+caprat*hstretch*(15/18x_height#), - caprat*x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -path pth[]; -numeric n[]; -pickup quill; -x100 = 0; -n1 := rt x100 - lft x100; -%% left stem top -lft x1 = pcshiftx + n1; top y1 = h; -%% upright -x5 = 1/2w; y5 = 1/2y1; -x6 = x5; bot y6 = 0; -%% right stem -rt x3=w-pcshiftx-n1; top y3 = h; -pth1 := z5{ppdir}..{pdir}z1; % left -pth2 := z5{pdir}..{left}z3; % right -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z5--z6; draw (x6-n1,y6)--(x6+n1,y6); % stem -draw pth1; draw (x1-n1,y1)--(x1,y1); -draw pth2; -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 "HMIN letter Z"; -beginchar("Z", 2sb#+caprat*hstretch*(14/18x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -numeric n[]; -path pth[]; -pcshiftx := sb; -pickup quill; -%% top bar ends -lft x1 = pcshiftx; rt x2 = w -pcshiftx; top y1 = top y2 = h; -%% bottom bar ends -lft x3 = pcshiftx; rt x4 = w -pcshiftx; bot y3 = bot y4 = 0; -%% middle bar -lft x5 = x1; rt x6 = x2; y5 = y6 = 1/2h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2; draw z3--z4; draw z5--z6; -draw z2--z3; -ductus:=false; -penlabels(1,2,3,4,5,6,10o,10i,20o,20i,100); -endchar; % end "Z" - -% \end{macrocode} -% \end{routine} -% -% -% -% The end of this file -% \begin{macrocode} -% -% \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#+trijut#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -x1=w/2; top y1 = h; -z3=(x1, 1/2dot_size); -z2=(x1, y3+3/2dot_size); -draw z1--z2; -draw_pdot(3,dot_size); -penlabels(1,2,3); - -endchar; % end of "!" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{?} -% The `?' character, which had not been invented at this time. -% \begin{macrocode} - -cmchar "Question mark"; -beginchar("?", 2sb#+hstretch*(11/11x_height#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pickup quill; -n1 := w-2pcshiftx; % actual character width -n2 := 1/3h; % height of top bowl -n3 := n2; % height of bottom bowl -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} -% -% \end{macrocode} -% -% -% \subsection{The ligatures and dashes file} -% -% The ligatured letters, punctuation marks and dashes are defined in this file. -% \begin{macrocode} -%<*lig> -% HMINLIG.MF Uncial ligatured letters, punctation and dashes - -% \end{macrocode} -% First the ligtables. -% \begin{macrocode} - -ligtable "`": "`"=:oct"134"; -ligtable "'": "'"=:oct"042"; %% , "?" kern 2u#, "!" kern 2u#; - -ligtable "-": "-"=:oct"173"; -ligtable oct"173": "-"=:oct"174"; - -ligtable "c": "t"=:oct"014"; -ligtable "s": "t"=:oct"015"; - -% \end{macrocode} -% -% \begin{routine}{ae} -% The `\ae' conjoined characters. -% \begin{macrocode} -cmchar "HMIN ae conjunction"; -beginchar(oct "032", - 2sb#+hstretch*(18/11x_height#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pair pr[]; -numeric rta, lfte; % right and left limits of a & e respectively -pickup quill; - -z999=(0,0); n999 = rt x999 - lft x999; % width of vertical stroke -rta := 1/2w + n999 + pcshiftx; - -%%% The "a" -n1 := rta - 2pcshiftx -jut; % effective letter width -%% "stem" -rt x1 = rta - pcshiftx-jut; top y1=h; -x2 = x1; bot y2=0; -z16 = 1/6[z2,z1]; -rt x6 = x16; y6=y16; -lft x4 = pcshiftx; y4 = 1/2h; -%% stem path -pth1 := z1{down}..z2; -pr1 := direction 1 of pth1; -z20 = z2 shifted -10pr1; - -z11 = point 3/13 of pth1; z15 = point 11/13 of pth1; -lft x13 = pcshiftx; y13=1/4h; - -%%% The "e" - -lfte = lft x11 - pcshiftx; - -n51 := w-pcshiftx - lfte; % actual letter width -n52 := 7/8n51; % width of bowl -x51 = lfte + pcshiftx + 5/8n52; top y51=h; -lft x52 = lfte + pcshiftx; y52 = 1/2h; -x53 = lfte + pcshiftx + 1/2n52; bot y53 = 0; -rt x54 = lfte + pcshiftx + n52; y54 = 1/4h; -z98=(lfte,5/8h); z99=(2w,y98); -pth51 := z98--z99; -pth52 := z51{left}..z52{down}..z53{right}; -z57 = pth51 intersectionpoint pth52; -rt x67 = w; y67=y57; -rt x58 =lfte + pcshiftx+n52; y58=y52; -pth53 := z51{right}..z58{down}..z53{left}; -z59 = pth51 intersectionpoint pth53; - -%%ductus:=true; -if ductus: - pickup stylus; -else: - % draw the a stem - draw pth1; - draw_roundserif(1,2,srad); -%% draw_roundserif(2,20,srad); - % draw the a bowl - draw z15{-pdir}..z13{up}..z57{right}; - % draw the e - draw z59{up}..z51{left}..z52{down}..z53{right}..z54{pdir}; - draw z57--z67; -fi -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,11,12,13,14,15,100); -penlabels(51,52,53,54,55,56,57,58,59,67,70,98,99,100); -endchar; % end "ae" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{AE} -% The `\AE' conjoined characters. -% \begin{macrocode} -cmchar "HMIN AE conjunction"; -beginchar(oct "035", -%% sb#+caprat*hstretch*(14/18x_height#), - sb#+caprat*hstretch*(22/18x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric pcshifte; -numeric n[]; -path pth[]; -pickup quill; -x100 = 0; -n1 = rt x100 - lft x100; - -%% the E -%% stem -pcshifte = 7/16w; -lft x1 = pcshifte+n1; top y1 = h; -x2 = x1; bot y2=0; -%% bars -lft x3 = pcshifte; y3 = y1; rt x4 = w-pcshiftx; y4=y3; -x5=x1; y5 = 1/2[y1,y2]; x6 = x4; y6 = y5; -x7 = x3; y7 = y2; x8 = x4; y8=y7; - -%% bottom left A leg -lft x52 = pcshiftx; bot y52=0; -z62 = whatever[z52,z1]; y62=y5; - -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2; % stem -draw z3--z4; draw z5--z6; draw z7--z8; -draw z52--z1; draw z62--z5; % the A -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,17,70,100); -endchar; % end "AE" - -% \end{macrocode} -% \end{routine} -% -% -% -% \begin{routine}{ct} -% The `ct' ligature. -% \begin{macrocode} - -cmchar "The ct ligature"; -beginchar(oct"014", 2sb#+hstretch*(20/11x_height#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pair vc[]; -pickup quill; - -%%%%%%%%%%% C - -n1:=1/2(w-2pcshiftx); % actual letter width -n2 := h/ascratio; % x-height -x1=pcshiftx + 1/2n1; top y1 = n2; -lft x2 = pcshiftx; y2 = 1/2n2; -x3 = x1; bot y3 = 0; -rt x4 = n1; y4 = 1/4n2; -x6 = x4; -%%y6 = 3/4n2; -top y6 = y1; -pth1 := z6..z1{left}..z2{down}..z3{right}..z4{pdir}; - -%%%%%%%%%%%%% T - -%% bar -top y33=n2; n3 := n2 - top y33; -%%lft x31 = n1+pcshiftx; -lft x31 = n1; -rt x32=w-pcshiftx; -%%top y31 = y33-n3; bot y32=y33+n3; -%%top y31 = y33-n3; y32=y33; -y31 = y32 = y33; -x33=1/2[x31,x32]; -pth2 := z31--z32; % T bar - -n4 := top y33 - y33; -x34 = x33; bot y34 = 2n4; -rt x36 = w - pcshiftx; bot y36 = n4; -x35 = 1/2[x34,x36]; bot y35 = 0; -pth3 := z33--z34..z35..z36; % T stem - - -%%%%%%%%%%%%%%%%% Ligature - -z51=z6; -z55=z33; -x53 = 1/2[x51,x55]; -top y53 = h; -vc51 := direction 0 of pth1; -vc55 := direction 0 of pth3; -pth4 := z51{vc51}..z53{right}..z55{vc55}; % loop -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; % C -draw pth2; % T bar -draw pth3; % T bowl -draw pth4; % ligature loop -ductus:=false; -penlabels(1,2,3,4,5,6,14,16,17,18,31,32,33,34,35,36,100); -endchar; % end of "ct" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{st} -% The `st' ligature. -% \begin{macrocode} - -cmchar "The st ligature"; -beginchar(oct"015", 2sb#+hstretch*(15/11x_height#+jut#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pair vc[]; -pickup quill; -%%%%%%%%%%% S - -n1:=3/7(w-2pcshiftx-jut); % actual letter width -n2 := h/ascratio; % x-height - -%% stem -lft x1=lft x2=pcshiftx+jut; top y1=n2; bot y2=0; -%% flick -x4=x2; y4 = 1/2n1; -%%%%%%%%%%%%% T - - -%% bar -top y33=n2; n3 := n2 - top y33; -%%lft x31 = n1+pcshiftx; -lft x31 = n1; -rt x32=w-pcshiftx; -%%top y31 = y33-n3; bot y32=y33+n3; -%%top y31 = y33-n3; y32=y33; -y31 = y32 = y33; -x33=1/2[x31,x32]; -pth2 := z31--z32; % T bar - -n4 := top y33 - y33; -x34 = x33; bot y34 = 2n4; -rt x36 = w - pcshiftx; bot y36 = n4; -x35 = 1/2[x34,x36]; bot y35 = 0; -pth3 := z33--z34..z35..z36; % T stem - - - -%%%%%%%%%%%%%%%%% Ligature - -z51=z4; -z55=z33; -x53 = 5/8[x51,x55]; -top y53 = h; -vc51 := up; -vc55 := direction 0 of pth3; -pth4 := z51{vc51}...z53{right}..z55{vc55}; % loop -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2; % S stem -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -draw pth2; % T bar -draw pth3; % T bowl -draw pth4; % ligature loop -ductus:=false; -penlabels(1,2,3,4,5,6,14,16,17,18,31,32,33,34,35,36,100); -endchar; % end of "st" - -% \end{macrocode} -% \end{routine} -% -% \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*(0.8x_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*(x_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*(2x_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 (which is really an `et' ligature). -% \begin{macrocode} - -cmchar "HMIN ampersand"; -beginchar("&", 2sb#+hstretch*(15/11x_height#+2jut#), asc_height#, 0); -adjust_fit(0,0); -numeric n[]; -path pth[]; -pcshiftx:=sb; -pickup quill; -%% alpha looking part -n1 := w-2pcshiftx-jut; % actual letter width -n2 := h/ascratio; % x-height -n3 := 16/16n2; % height of alpha -rt x1 = w-pcshiftx; bot y1=0; - -x3 = pcshiftx + 12/16n1; y3 = 1/2n2; - -lft x5 = pcshiftx + thick; y5 = 1/2[n2,h]; -rt x7 = lft x5 + 1/2n1; y7 = y5; -x6 = 1/2[x5,x7]; top y6 = h; - -lft x9 = pcshiftx; y9 = 1/2n2; -rt x10 = pcshiftx + 1/2n1; bot y10 = 0; - -rt x12 = w - pcshiftx; y12 = y7; - -x4 = x6; y4 = 1/2[y9,y5]; - -pth1 = z1..z4..z5{up}..z6{right}..z7{down}..z9{down}..z10{right}..{up}z12; - -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,10,11,12,16,17,18,19,21,22,23,24,25); -endchar; % end of "&" - -% \end{macrocode} -% \end{routine} -% -% -% The end of this file. -% \begin{macrocode} -% -% \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> -% HMINDIG.MF Program file for Humanist Miniscule digits -% - -% \end{macrocode} -% -% -% -% \begin{routine}{1} -% The digit `1'. -% \begin{macrocode} -cmchar "Uncial digit 1"; -beginchar("1", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -x1=x2=w/2; -y1=h; bot y2=0; -%%ductus:=true; -draw_tstem(1,2,srad); -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,100); -endchar; % end "1" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{2} -% The digit `2'. -% \begin{macrocode} -cmchar "Uncial digit 2"; -beginchar("2", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -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; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_wave(5,6,thin); % foot -draw z1..z2{right}..z3{down}..{-pdir}z5wl; % curve -ductus:=false; -penlabels(1,2,3,4,5,6,100); -endchar; % end "2" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{3} -% The digit `3'. -% \begin{macrocode} -cmchar "Uncial 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 "Uncial digit 4"; -beginchar("4", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% the stem -x1=x2=w-pcshiftx-jut; -y1=h; bot y2=0; -% the crossbar -lft x3=pcshiftx; y3=0.33h; -rt x4=w-pcshiftx; y4=y3; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % main stem -draw_wave(3,4,thin); % crossbar -draw z3wl--z1; % diagonal -ductus:=false; -penlabels(1,2,3,4,100); -endchar; % end "4" - -% \end{macrocode} -% \end{routine} -% -% -% -% \begin{routine}{5} -% The digit `5'. -% \begin{macrocode} -cmchar "Uncial digit 5"; -beginchar("5", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -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; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_wave(2,1,thin); % top squiggle -draw z3{pdir}..z5{down}..z6{left}..z7; % curve -draw z2wl--z3; % vertical -ductus:=false; -penlabels(1,2,3,4,5,6,7,100); -endchar; % end "5" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{6} -% The digit `6'. -% \begin{macrocode} -cmchar "Uncial 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 "Uncial digit 7"; -beginchar("7", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% top bar -lft x1=pcshiftx; -rt x2=w-pcshiftx; -top y1=top y2=h; -% bowed leg -x4=w/2; bot y4=0; -x3=0.5[x2,x4]-3thin; y3=0.5[y2,y4]; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_wave(1,2,thin); % top bar -draw z1wr..z3..z4; -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 "Uncial 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 "Uncial 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 "Uncial 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; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,100); -endchar; % end "0" - -% \end{macrocode} -% \end{routine} -% -% -% The end of this file. -% \begin{macrocode} -% -% \end{macrocode} -% -% -% \section{The font definition files} \label{sec:fd} -% -% The font comes in normal and bold weights only. -% -% \begin{macrocode} -%<*fdot1> -\DeclareFontFamily{OT1}{hmin}{} - \DeclareFontShape{OT1}{hmin}{m}{n}{ <-8.5> hmin7 <8.5-15> hmin10 <15-> hmin17 }{} - \DeclareFontShape{OT1}{hmin}{m}{sl}{ <-> sub * hmin/m/n }{} - \DeclareFontShape{OT1}{hmin}{m}{it}{ <-> sub * hmin/m/n }{} - \DeclareFontShape{OT1}{hmin}{m}{sc}{ <-> sub * hmin/m/n }{} - \DeclareFontShape{OT1}{hmin}{m}{u}{ <-> sub * hmin/m/n }{} - \DeclareFontShape{OT1}{hmin}{bx}{n}{ <-8.5> hminb7 <8.5-15> hminb10 <15-> hminb17 }{} - \DeclareFontShape{OT1}{hmin}{bx}{it}{ <-> sub * hmin/bx/n }{} - \DeclareFontShape{OT1}{hmin}{bx}{sl}{ <-> sub * hmin/bx/n }{} - \DeclareFontShape{OT1}{hmin}{b}{n}{ <-> sub * hmin/bx/n }{} -% -% \end{macrocode} -% -% -% \begin{macrocode} -%<*fdt1> -\DeclareFontFamily{T1}{hmin}{} - \DeclareFontShape{T1}{hmin}{m}{n}{ <-8.5> hmin7 <8.5-15> hmin10 <15-> hmin17 }{} - \DeclareFontShape{T1}{hmin}{m}{sl}{ <-> sub * hmin/m/n }{} - \DeclareFontShape{T1}{hmin}{m}{it}{ <-> sub * hmin/m/n }{} - \DeclareFontShape{T1}{hmin}{m}{sc}{ <-> sub * hmin/m/n }{} - \DeclareFontShape{T1}{hmin}{m}{u}{ <-> sub * hmin/m/n }{} - \DeclareFontShape{T1}{hmin}{bx}{n}{ <-8.5> hminb7 <8.5-15> hminb10 <15-> hminb17 }{} - \DeclareFontShape{T1}{hmin}{bx}{it}{ <-> sub * hmin/bx/n }{} - \DeclareFontShape{T1}{hmin}{bx}{sl}{ <-> sub * hmin/bx/n }{} - \DeclareFontShape{T1}{hmin}{b}{n}{ <-> sub * hmin/bx/n }{} -% -% \end{macrocode} -% -% \section{The package code} \label{sec:code} -% -% \subsection{The \Lpack{humanist} package} -% -% The \Lpack{humanist} 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{humanist}[2002/12/30 v1.0 package for Humanist 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}{\hminfamily} -% Selects the \thisfont{} font family in the OT1 or T1 encoding. -% \begin{macrocode} -\ifx\Tienc\encodingdefault - \newcommand{\hminfamily}{\usefont{T1}{hmin}{m}{n}} -\else - \newcommand{\hminfamily}{\usefont{OT1}{hmin}{m}{n}} -\fi -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\texthmin} -% Text command for the \thisfont{} font family. -% \begin{macrocode} -\DeclareTextFontCommand{\texthmin}{\hminfamily} -% \end{macrocode} -% \end{macro} -% -% The end of this package. -% \begin{macrocode} -% -% \end{macrocode} -% -% \subsection{The \Lpack{allhmin} package} -% -% The \Lpack{allhmin} 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{humanist} package. -% \begin{macrocode} -%<*uscall> -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{allhmin}[2002/12/30 v1.0 package for all Humanist fonts] -\RequirePackage{humanist} -% \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}{hmin} -\renewcommand{\sfdefault}{hmin} -\renewcommand{\ttdefault}{hmin} -% \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}{\hmin@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{\hmin@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}{\hmin@new@setfontsize} -% This is a macro that replaces the |\@setfontsize| macro which is called by -% the font size changing commands. -% \begin{macrocode} -\newcommand{\hmin@new@setfontsize}[3]{% - \edef\@tempa{\def\noexpand\@tempb####1<#2}% - \@tempa>##2<##3\@nil{\def\hmin@baselineskip@value{##2}}% - \edef\@tempa{\noexpand\@tempb\hmin@baselineskip@table<#2}% - \@tempa><\@nil - \ifx\hmin@baselineskip@value\@empty - \def\hmin@baselineskip@value{#3}% - \fi - \hmin@old@setfontsize{#1}{#2}\hmin@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\hmin@old@setfontsize=\@setfontsize - \let\@setfontsize=\hmin@new@setfontsize} -\AtBeginDocument{\normalsize} -% \end{macrocode} -% -% -% The end of this package. -% \begin{macrocode} -% -% \end{macrocode} -% -% -% -% -% -% \Finale -% \PrintIndex -% -\endinput - -%% \CharacterTable -%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -%% Digits \0\1\2\3\4\5\6\7\8\9 -%% Exclamation \! Double quote \" Hash (number) \# -%% Dollar \$ Percent \% Ampersand \& -%% Acute accent \' Left paren \( Right paren \) -%% Asterisk \* Plus \+ Comma \, -%% Minus \- Point \. Solidus \/ -%% Colon \: Semicolon \; Less than \< -%% Equals \= Greater than \> Question mark \? -%% Commercial at \@ Left bracket \[ Backslash \\ -%% Right bracket \] Circumflex \^ Underscore \_ -%% Grave accent \` Left brace \{ Vertical bar \| -%% Right brace \} Tilde \~} - - diff --git a/Master/texmf-dist/source/latex/bookhands/humanist/humanist.ins b/Master/texmf-dist/source/latex/bookhands/humanist/humanist.ins deleted file mode 100644 index 4011e3d5bf1..00000000000 --- a/Master/texmf-dist/source/latex/bookhands/humanist/humanist.ins +++ /dev/null @@ -1,118 +0,0 @@ -%% humanist.ins -%% Author: Peter Wilson (CUA) now at peter.r.wilson@boeing.com -%% (or pandgwilson@earthlink.net) -%% Copyright 2002, 2003 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 and documentation -%% driver files from the doc files in this work when run through -%% LaTeX. -%% -%% -%% --------------- start of docstrip commands ------------------ -%% -\def\batchfile{humanist.ins} -\input docstrip.tex -\preamble - - Author: Peter Wilson (CUA) now at peter.r.wilson@boeing.com - (or pandgwilson@earthlink.net) - Copyright 2002, 2003 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{humanist.drv}{t}{\from{humanist.dtx}{driver}} - -\Msg{*** Generating the Metafont files ***} - -\usepostamble\empty -\generateFile{hmin7.mf}{t}{\from{humanist.dtx}{base7}} -\generateFile{hmin10.mf}{t}{\from{humanist.dtx}{base10}} -\generateFile{hmin17.mf}{t}{\from{humanist.dtx}{base17}} -\generateFile{hminb7.mf}{t}{\from{humanist.dtx}{base7b}} -\generateFile{hminb10.mf}{t}{\from{humanist.dtx}{base10b}} -\generateFile{hminb17.mf}{t}{\from{humanist.dtx}{base17b}} -\generateFile{hminl.mf}{t}{\from{humanist.dtx}{min}} -\generateFile{hminu.mf}{t}{\from{humanist.dtx}{maj}} -\generateFile{hmintitle.mf}{t}{\from{humanist.dtx}{mfd}} -\generateFile{hminpunct.mf}{t}{\from{humanist.dtx}{punct}} -\generateFile{hminlig.mf}{t}{\from{humanist.dtx}{lig}} -\generateFile{hmindig.mf}{t}{\from{humanist.dtx}{dig}} - -\Msg{*** Generating the Font Definition files ***} -\usepostamble\defaultpostamble - -\generateFile{ot1hmin.fd}{t}{\from{humanist.dtx}{fdot1}} -\generateFile{t1hmin.fd}{t}{\from{humanist.dtx}{fdt1}} - -\Msg{*** Generating the LaTeX2e package files ***} - -\generateFile{humanist.sty}{t}{\from{humanist.dtx}{usc}} -\generateFile{allhmin.sty}{t}{\from{humanist.dtx}{uscall}} - -\Msg{***********************************************************} -\Msg{*} -\Msg{* To finish the installation you have to move the following} -\Msg{* files into directories searched by TeX:} -\Msg{*} -\Msg{* Move these into the font source area:} -\Msg{* \space\space hmin7.mf} -\Msg{* \space\space hmin10.mf} -\Msg{* \space\space hmin17.mf} -\Msg{* \space\space hminb7.mf} -\Msg{* \space\space hminb10.mf} -\Msg{* \space\space hminb17.mf} -\Msg{* \space\space hminl.mf} -\Msg{* \space\space hminu.mf} -\Msg{* \space\space hmintitle.mf} -\Msg{* \space\space hminpunct.mf} -\Msg{* \space\space hminlig.mf} -\Msg{* \space\space hmindig.mf} -\Msg{*} -\Msg{* Move these into the LaTeX macro area:} -\Msg{* \space\space ot1hmin.fd} -\Msg{* \space\space t1hmin.fd} -\Msg{* \space\space humanist.sty} -\Msg{* \space\space allhmin.sty} -\Msg{*} -\Msg{*} -\Msg{* To produce the documentation run the files ending with} -\Msg{* `.dtx' through LaTeX.} -\Msg{* Process any name.idx file by:} -\Msg{* \space\space\space\space makeindex -s gind.ist name} -\Msg{* Process any name.glo file by:} -\Msg{* \space\space\space\space makeindex -s gglo.ist -o name.gls name.glo} -\Msg{*} -\Msg{* Happy TeXing} -\Msg{***********************************************************} - -\endinput diff --git a/Master/texmf-dist/source/latex/bookhands/huncial/huncial.dtx b/Master/texmf-dist/source/latex/bookhands/huncial/huncial.dtx deleted file mode 100644 index 66dc25a3240..00000000000 --- a/Master/texmf-dist/source/latex/bookhands/huncial/huncial.dtx +++ /dev/null @@ -1,3877 +0,0 @@ -% \iffalse meta-comment -% -% huncial.dtx -% Copyright 1999 Peter R. Wilson -% -% This program is provided under the terms of the -% LaTeX Project Public License distributed from CTAN -% archives in directory macros/latex/base/lppl.txt. -% -% Author: Peter Wilson (CUA) (now at: peter.r.wilson@boeing.com) -% -% If you do not have the docmfp package (available from CTAN in -% tex-archive/macros/latex/contrib/supported), comment out the -% \usepackage{docmfp} line below and uncomment the line following it. -% -%<*driver> -\documentclass{ltxdoc} -\usepackage{docmfp} -%%%%%% \providecommand{\DescribeVariable}[1]{} \newenvironment{routine}[1]{}{} -\EnableCrossrefs -\CodelineIndex -\setcounter{StandardModuleDepth}{1} -\begin{document} - \DocInput{huncial.dtx} -\end{document} -% -% -% \fi -% -% \CheckSum{132} -% -% \DoNotIndex{\',\.,\@M,\@@input,\@addtoreset,\@arabic,\@badmath} -% \DoNotIndex{\@centercr,\@cite} -% \DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue} -% \DoNotIndex{\@input,\@ixpt,\@m} -% \DoNotIndex{\@minus,\@mkboth,\@ne,\@nil,\@nomath,\@plus,\@set@topoint} -% \DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb} -% \DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt} -% \DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt} -% \DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace} -% \DoNotIndex{\advance,\Alph,\alph} -% \DoNotIndex{\arabic,\ast,\begin,\begingroup,\bfseries,\bgroup,\box} -% \DoNotIndex{\bullet} -% \DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption} -% \DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass} -% \DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\endtrivlist} -% \DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup} -% \DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter} -% \DoNotIndex{\fbox} -% \DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef} -% \DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule} -% \DoNotIndex{\hsize,\hskip,\hspace,\hss,\if@tempswa,\ifcase,\or,\fi,\fi} -% \DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\fi,\fi,\fi,\fi,\fi} -% \DoNotIndex{\input} -% \DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark} -% \DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright} -% \DoNotIndex{\month,\newcommand,\newcounter,\newenvironment} -% \DoNotIndex{\NeedsTeXFormat,\newdimen} -% \DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number} -% \DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\p@} -% \DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip} -% \DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions} -% \DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright} -% \DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font} -% \DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily,\roman} -% \DoNotIndex{\roman,\secdef,\selectfont,\setbox,\setcounter,\setlength} -% \DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space} -% \DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase} -% \DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt} -% \DoNotIndex{\viipt,\vipt,\vskip,\vspace} -% \DoNotIndex{\wd,\xiipt,\year,\z@} -% -% \changes{v1.0}{1999/05/22}{First public release} -% \changes{v1.0a}{2001/01/02}{Fixed missing * in fd files} -% -% ^^A \def\fileversion{v1.0} -% ^^A \def\filedate{1999/05/22} -% \def\fileversion{v1.0a} -% \def\filedate{2001/01/02} -% \newcommand*{\Lpack}[1]{\textsf {#1}} ^^A typeset a package -% \newcommand*{\Lopt}[1]{\textsf {#1}} ^^A typeset an option -% \newcommand*{\file}[1]{\texttt {#1}} ^^A typeset a file -% \newcommand*{\Lcount}[1]{\textsl {\small#1}} ^^A typeset a counter -% \newcommand*{\pstyle}[1]{\textsl {#1}} ^^A typeset a pagestyle -% \newcommand*{\Lenv}[1]{\texttt {#1}} ^^A typeset an environment -% \newcommand*{\AD}{\textsc{ad}} -% \newcommand*{\thisfont}{Half Uncial} -% -% \title{The \Lpack{Half Uncial} fonts\thanks{This -% file has version number \fileversion, last revised -% \filedate.}} -% -% \author{% -% Peter Wilson\\ -% Catholic University of America \\ -% Now at \texttt{peter.r.wilson@boeing.com} -% } -% \date{\filedate} -% \maketitle -% \begin{abstract} -% The \Lpack{huncial} and \Lpack{allhuncl} packages provide a set of -% Metafont \thisfont{} book-hands -% as used -% for manuscripts in the 3rd to the 9th century. This is one in a series -% of manuscript fonts. -% \end{abstract} -% \tableofcontents -% \listoftables -% -% \StopEventually{} -% -% -% -% \section{Introduction} -% -% The \Lpack{huncial} and \Lpack{allhuncl} packages provide a Metafont~\cite{METAFONT} version -% of the \thisfont{} manuscript book-hand that was in use between about the -% third and ninth centuries~\AD. It is part of a project to provide fonts -% covering the major manuscript hands between the first century~\AD{} and -% the invention of printing. The principal resources used in this project -% are listed in the Bibliography. -% -% This manual is typeset according to the conventions of the -% \LaTeX{} \textsc{docstrip} utility which enables the automatic -% extraction of the \LaTeX{} macro source files~\cite{GOOSSENS94}. -% The \Lpack{docmfp} package is used for documenting the Metafont portions -% of the distribution~\cite{DOCMFP}. -% -% Section~\ref{sec:usc} describes the usage of the package. -% Commented code for the fonts is in Sections~\ref{sec:mf} and~\ref{sec:fd} -% and source code for the package is in Section~\ref{sec:code}. -% -% \subsection{Manuscript book-hands} -% -% Before the invention of printing all books were written by hand. The book-hands -% used by the scribes and copyists for the manuscripts changed as time -% went on. Table~\ref{tab:1} lists some of the common book-hands which were used -% between the 1st and 15th centuries. The later book-hands formed the basis of the -% fonts used by the early printers, which in turn form the basis of the printing -% fonts in use today. -% -% The manuscript book-hands were written with a broad nibbed reed or quill -% pen. Among the distinguishing characteristics of a hand, apart from the -% actual shape of the letters, are the angle of the pen (which controls the -% variation between thick and thin strokes) and the height of a letter compared -% to the width of the nib. The lower the ratio of the letter height to nib -% width, the more condensed is the script. The scripts also varied in their -% typical height. -% -% Table~\ref{tab:1} gives an `average' x-height for each -% script, which I obtained by measuring a sample of photographs of -% manuscripts written in the various hands. About a dozen examples -% of each book-hand were measured. This figure should not be taken too -% seriously. -% -% There was not a sharp division between the use of one hand and another. -% Many manuscripts exhibit a variety of hands in the same document. For example, -% the scribe writing in an Uncial hand may have used Roman Rustic letters -% for capitals. Usually the same pen was used for the two different scripts. -% -% Generally speaking, as a hand got older it became more embelished, and -% therefore took longer to write. As this happened a new hand would appear that -% was faster, and which would eventually make the earlier one obsolete. -% -% Many of the book-hands were single-cased; that is, they did not have an -% upper- and lower-case as we do nowadays in Western scripts. On the other -% hand, a script might be majuscule or minuscule. A \textit{majuscule} script -% is one, like our upper-case, where the letters are drawn between two lines -% and are of a uniform height with no ascenders or descenders. -% A \textit{minuscule} script, like our lower-case, is drawn between four lines -% and has ascenders and descenders. -% -% \begin{table} -% \centering -% \caption{The main manuscript book-hands} \label{tab:1} -% \begin{tabular}{lccccc} \hline -% Name & Century & x-height & Height & Pen & Normalised \\ -% & & (mm) & (nib widths) & angle & height \\ \hline -% Roman Rustic & 1--6 & 5.7 & 4--6 & 45 & 1.90 \\ -% Uncial & 3--6 & 4.1 & 4--5 & 30 & 1.37 \\ -% Half Uncial & 3--9 & 3.2 & 3--6 & 20--30 & 1.07 \\ -% Artificial Uncial & 6--10 & 4.2 & 3--6 & 10 & 1.40 \\ -% Insular majuscule & 6--9 & 4.2 & 5 & 0--20 & 1.40 \\ -% Insular minuscule & 6 onward & 4.1 & 5--6 & 45--70 & 1.37 \\ -% Carolingian minuscule & 8--12 & 3.0 & 3--5 & 45 & 1.00 \\ -% Early Gothic & 11--12 & 3.8 & 4--6 & 20--45 & 1.27 \\ -% Gothic Textura & 13--15 & 3.9 & 3--5 & 30--45 & 1.30 \\ -% Gothic Prescius & 13 onward & 3.3 & 4--5 & 45 & 1.10 \\ -% Rotunda & 13--15 & 3.2 & 4--6 & 30 & 1.07 \\ -% Humanist minuscule & 14 onward & 3.0 & 4--5 & 30--40 & 1.00 \\ \hline -% \end{tabular} -% \end{table} -% -% During the period under consideration arabic numerals were effectively -% not used. At the beginning they were unknown and even though some knew -% of them towards the end, the glyphs used for them are not recognisable --- -% to me they look somewhat like cryllic letters --- and each locality -% and time had its own highly individualistic rendering. The general rule -% when using one of these book-hands is to write all numbers using -% roman numerals. -% -% The Roman alphabet consisted of 23 capital letters --- the J, U and W -% were absent. The book-hands initially used both a `u' and a `v' interchangeably -% but by the 10th century the practice had become to use the `v' before a vowel -% and the `u' otherwise. The letter corresponding to the W sound appeared -% in England around the 7th century in -% the form of the runic \textit{wen} character and by about the 11th century -% the `w' chacter was generally used. The `J' is the newest letter of all, not -% appearing until about the mid 16th century. -% -% In the first century punctuation was virtually unknown, and typically -% would not even be any additional space between individual words, never -% mind denoting ends of sentences. Sometimes a dot at mid-height would be -% used as a word seperator, or to mark off the end of a paragraph. Effectively -% a text was a continuous stream of letters. By the time that printing was -% invented, though, all of our modern punctuation marks were being used. -% -% Among all these manuscript hands, the Carolingian minuscule is the -% most important as our modern fonts are based on its letter shapes, and it is -% also at this point in time where the division occured between the black letter -% scripts as used even today in Germany, and the lighter fonts used elesewhere. -% The Rotunda and Humanist minuscule hands were developed in Italy and were -% essentially a rediscovery of the Carolingian minusucle. Guthenberg took the -% Gothic scripts as the model for his types. Later printers, -% such as Nicholas Jenson of Venice, -% took the Humanist scripts as their models. -% -% -% \subsection{The \thisfont{} script} -% -% The \thisfont{} hand, which is a minuscule script, was in use for some seven -% centuries and was, in a sense, an intermediate script between the Uncial -% and Artificial Uncial book-hands. It was less formal than these and was -% also faster to write as fewer pen movements were required. It was -% derived from cursive hands that were not used in formal manuscripts. -% -% This is the first book-hand that shows some of the more characteristic -% letter shapes that we associate with the lower-case letters. For example, -% the `b' lettter has lost its upper bowl, and the `d' has acquired an ascender. -% The `f' is in an intermediate form between the modern `F' and `f'. -% The \thisfont{} also introduces the long `s' letter shape. -% -% Stemming from its cursive roots, ligatured letter pairs make an -% appearance. These typically were only -% used at the end of a line if it was going to be too long, and were rarely -% used in the middle of a line. The most common ligatures were of the -% form `e*', where the bar of the `e' was joined to the following letter -% (donoted here as *). Sometimes the e was made taller so its bar would be -% a convenient height for joing to an `m', say. The ampersand, `\&', also -% makes a first appearance as a ligatured `et' which is the Latin for `and'. -% This would be used anywhere in the text. I have provided the ampersand -% and just the `fi' ligature. -% -% Usually the -% lettering in a manuscript was all one size. If the scribe felt the need -% for `capital' letters then, using the same pen, would either write a larger -% \thisfont{} letter or a letter from one of the more formal book-hands. -% I have provided a set of `capital' letters that are only a little larger -% than the normal letters for use in running text. -% During the time the \thisfont{} script was used the alphabet only had 24 -% letters. I have included the missing J. -% -% Arabic numerals were unknown at this time, so all numbers were written -% using the roman numbering system. I have provided \thisfont{} versions of -% the arabic digits. -% -% Punctuation was used, but not with the frequency of today. -% A sentence might be ended with -% a dot at mid-height or a paragraph ended with a colon, also at mid-height. -% The comma was was a small -% slash; the semi-colon was known, as was the single quotation -% mark which was represented by a raised comma. -% -% -% \section{The \Lpack{huncial} and \Lpack{allhuncl} packages} \label{sec:usc} -% -% The \thisfont{} font family is called |huncl|. The font is supplied in both -% OT1 and T1 encodings. -% -% \subsection{The \Lpack{huncial} 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{\hunclfamily} -% The |\hunclfamily| 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{\texthuncl} -% The command |\texthuncl{|\meta{text}|}| will typeset \meta{text} using the -% \thisfont{} fonts. -% -% \subsection{The \Lpack{allhuncl} 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{allhuncl} package automatically loads the \Lpack{huncial} package, -% so its font commands are available if necessary. -% -% -% -% \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> -%%%% HUNCL7.MF Half Uncial at 7 point design size. -%%%% HUNCL10.MF Half Uncial at 10 point design size. -%%%% HUNCL17.MF Half Uncial at 17 point design size. -%%%% HUNCLB7.MF Half Uncial Bold at 7 point design size. -%%%% HUNCLB10.MF Half Uncial Bold at 10 point design size. -%%%% HUNCLB17.MF Half Uncial 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 - -%font_identifier:="HUNCL"; font_size 7pt#; -%font_identifier:="HUNCL"; font_size 10pt#; -%font_identifier:="HUNCL"; font_size 17.28pt#; -%font_identifier:="HUNCLB"; font_size 7pt#; -%font_identifier:="HUNCLB"; font_size 10pt#; -%font_identifier:="HUNCLB"; font_size 17.28pt#; - -% \end{macrocode} -% -% \DescribeVariable{jutstretch} -% The CMR scaling for lowercase serifs wrt 17pt size. -% \begin{macrocode} -% jutstretch:=1.19; -% jutstretch:=1.152; -% jutstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{stemstretch} -% The CMR scaling for lowercase stem widths wrt 17pt size. -% \begin{macrocode} -% stemstretch:=1.50; -% stemstretch:=1.31; -% stemstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{caprat} -% The scaling for `capitals' wrt `lowercase'. This is pretty much a guess. -% \begin{macrocode} - caprat:=1.25; % ratio of capital height to minuscule height -% \end{macrocode} -% -% \DescribeVariable{cap_jutstretch} -% The CMR scaling for uppercase serifs wrt 17pt size. -% \begin{macrocode} -% cap_jutstretch:=1.3; -% cap_jutstretch:=1.2; -% cap_jutstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{cap_stemstretch} -% The CMR scaling for uppercase stem width wrt 17pt size. -% \begin{macrocode} -% cap_stemstretch:=1.45; -% cap_stemstretch:=1.31; -% cap_stemstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{bfudge} -% Letter width scaling for bold font wrt normal font. -% \begin{macrocode} -% bfudge:=1.0; -% bfudge:=1.2; -% \end{macrocode} -% -% \DescribeVariable{szfudge} -% Width scaling wrt 17pt letter width. -% \begin{macrocode} -% szfudge:=1.18; -% szfudge:=1.0; -% 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} -% carol_height#:=108.5/36pt#; -% carol_height#:=155/36pt#; -% carol_height#:=268/36pt#; -% \end{macrocode} -% -% \DescribeVariable{vstretch} -% The height of this font wrt the Carolingian font. -% \begin{macrocode} - vstretch:=1.07; - -% \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} -% u#:=15.5/36pt#; -% u#:=20/36pt#; -% u#:=32.5/36pt#; -% u#:=17.9/36pt#; -% u#:=23/36pt#; -% 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 -% cap_serif_fit#:=3.5/36pt#; % extra sidebar near uppercase serifs -% cap_serif_fit#:=5/36pt#; % extra sidebar near uppercase serifs -% cap_serif_fit#:=8/36pt#; % extra sidebar near uppercase serifs -% letter_fit#:=0pt#; % extra space added to all sidebars -% letter_fit#:=0pt#; % extra space added to all sidebars -% letter_fit#:=-0.1pt#; % extra space added to all sidebars - -% \end{macrocode} -% -% \DescribeVariable{cap_height} -% The height of capital letters. -% \begin{macrocode} -% cap_height#:=172.2/36pt#; % height of caps -% cap_height#:=246/36pt#; % height of caps -% 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 3.5 nib widths. -% \begin{macrocode} -% thickfudge:=1/5; -% thickfudge:=1/3.5; -% \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:=20; % pen angle -% \end{macrocode} -% -% \DescribeVariable{ascratio} -% The height of lower case ascenders wrt |x_height|. -% \begin{macrocode} - ascratio:=5/3; -% \end{macrocode} -% -% \DescribeVariable{asc_height} -% The height of lower case ascenders. -% \begin{macrocode} - asc_height#:=ascratio*x_height#; -% \end{macrocode} -% -% \DescribeVariable{descratio} -% The depth of lower case descenders wrt |x_height|. -% \begin{macrocode} - descratio:=2/3; -% \end{macrocode} -% -% \DescribeVariable{desc_depth} -% The depth of lower case descenders. -% \begin{macrocode} - desc_depth#:=descratio*x_height#; -% \end{macrocode} -% -% \DescribeVariable{fig_height} -% The height of numerals. Make these midway between normal and capital -% letters. -% \begin{macrocode} - fig_height#:=(0.5[1,caprat])*x_height#; -% \end{macrocode} -% -% \DescribeVariable{fig_width} -% The width of numerals. All numerals are the same width (roughly, an `o'). -% \begin{macrocode} - fig_width#:=hstretch*(x_height#); -% \end{macrocode} -% -% \DescribeVariable{body_height} -% The height of the tallest character. -% \begin{macrocode} - body_height#:=caprat*asc_height#; -% \end{macrocode} -% -% \DescribeVariable{body_depth} -% The depth of the lowest character. -% \begin{macrocode} - body_depth#:=caprat*desc_depth#; -% \end{macrocode} -% -% \DescribeVariable{half_height} -% Half the normal letter height. -% \begin{macrocode} - half_height#:=1/2x_height#; % half the height of x height letters - -% \end{macrocode} -% -% \DescribeVariable{side} -% We might be using a square for the character design. -% \begin{macrocode} -side#:=x_height#; -% \end{macrocode} -% -% \DescribeVariable{rule_thickness} -% Thickness of rules (in math symbols). The CMR values are used. -% \begin{macrocode} -% rule_thickness#:=.34pt#; -% rule_thickness#:=.4pt#; -% rule_thickness#:=.6pt#; - -% \end{macrocode} -% -% \DescribeVariable{jutfudge} -% Controls the protrusion of serifs. -% \begin{macrocode} -%%%%jutfudge:= 3/4; -jutfudge:= 1/2; -% \end{macrocode} -% -% \DescribeVariable{jut} -% The lowercase serif protrusion. -% \begin{macrocode} -jut#:=jutstretch*jutfudge*thick#; -% \end{macrocode} -% -% \DescribeVariable{srad} -% |srad| with |0 < srad < 1| controls the serif radius. -% \begin{macrocode} -srad:=0.5; -% \end{macrocode} -% -% \DescribeVariable{trijut} -% The lowercase triangular serif protrusion. -% \begin{macrocode} -trijut#:=0.75jutstretch*thick#; -% \end{macrocode} -% -% \DescribeVariable{o} -% Amount of overshoot for curves (as in an `o'). Use CMR values. -% \begin{macrocode} -% o#:=5/36pt#; -% o#:=8/36pt#; -% o#:=10/36pt#; - -% \end{macrocode} -% -% \DescribeVariable{slant} -% |slant| is the amount the font slopes to the right. -% \begin{macrocode} -slant:=0; % tilt ratio $(\Delta x/\Delta y)$ - -% \end{macrocode} -% -% \DescribeVariable{monospace} -% We are generating a variable-width font. -% \begin{macrocode} -monospace:=false; % should all characters have the same width? - -% \end{macrocode} -% -% \DescribeVariable{dot_size} -% The size of (punctuation) dots. -% \begin{macrocode} -dot_size#:=5thin#; % size of dots -% \end{macrocode} -% -% \DescribeVariable{comma_width} -% The horizontal width of a comma. -% \begin{macrocode} -comma_width#:=2.5dot_size#; - -% \end{macrocode} -% -% Finally, call the driver file for the font. -% \begin{macrocode} -generate huncltitle %% switch to the driver file - -% \end{macrocode} -% -% The end of this code section. -% \begin{macrocode} -% -% \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 UNCLTITLE.MF for the Half Uncial 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}{huncial_font_setup} -% This macro contains the set up for the \thisfont{} fonts. -% \begin{macrocode} - -def huncial_font_setup= % contains special stuff for huncial fonts - define_pixels(side,half_height,carol_height,comma_width); - define_pixels(u,dot_size,letter_size,cap_height,width_adj,serif_fit, - cap_serif_fit,jut,cap_jut,trijut); - define_pixels(fig_width); - define_whole_pixels(letter_fit); - define_whole_vertical_pixels(body_height,asc_height,cap_height,x_height, - desc_depth,body_depth,fig_height); - define_corrected_pixels(o); - define_blacker_pixels(thick,thin); - let adjust_fit = normal_adjust_fit; -% \end{macrocode} -% \DescribeVariable{stylus} -% The pen for drawing the thinnest lines is |stylus|. -% \begin{macrocode} - pickup pencircle scaled thin; - stylus:=savepen; -% \end{macrocode} -% \DescribeVariable{thickstylus} -% The pen for drawing lines a bit thicker than the thinnest is |thickstylus|. -% \begin{macrocode} - pickup pencircle scaled (1.5thin); - thickstylus:=savepen; -% \end{macrocode} -% \DescribeVariable{quill} -% The normal calligraphic pen is |quill|. -% \begin{macrocode} - pickup pencircle xscaled thick yscaled thin rotated pangle; - quill:=savepen; - numeric pcshiftx#; % x value of LHS of box wrt origin of char box - define_pixels(pcshiftx); - numeric sqxside#; % x size of the square - numeric sqyside#; % y size of the square - define_pixels(sqxside,sqyside); - -enddef; % end of huncial_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 $0y$$: - top_serif := true; - z$c=z$b shifted (-bjut*pdir); - else: - top_serif:=false; - z$c=z$b shifted (bjut*pdir); - fi -% \end{macrocode} -% Draw the parts, and finish off. -% \begin{macrocode} - if top_serif: - draw z$c--z$b{pdir}..{z$$-z$}z$a; % the serif - else: - draw z$c--z$b{-pdir}..{z$$-z$}z$a; - fi - labels($a,$b,$c); -enddef; % end of draw_serif - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{draw_triserif} -% A macro to draw a triangular top left serif. -% |draw_triserif(1,tj)| draws a serif at |z1| with its leftmost x -% value at |x1-tj|, where it is assumed that the -% top point on the stem is at |z1| and the stem was drawn with |quill|. -% \begin{macrocode} - -def draw_triserif(suffix $)(expr tj)= - pen oldpen; oldpen:=currentpen; - pickup quill; - x$ts1'=lft x$; y$ts1'=bot y$; - pickup stylus; - lft x$ts1=x$ts1'; bot y$ts1=y$ts1'; - x$ts2=x$ts1-tj; z$ts2=whatever[z$,z$ts1]; - x$ts3=x$ts1; y$ts3=y$ts2-tj; - pickup stylus; -%% filldraw z$ts1--z$ts2--z$ts3--cycle; - filldraw z$--z$ts2--z$ts3--cycle; - pickup oldpen; - labels($ts1,$ts2,$ts3); -enddef; % end of draw_triserif - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{draw_istem} -% A macro to draw the shape of an i. |draw_istem(1,2,f)| draws a stem whose -% top is at |z1| and bottom at |z2|. It draws with the current pen and the serifs -% are of extent |jut|. There is a top left and bottom right serif. -% The serif radius is controlled by |f|, with $0 -% \end{macrocode} -% -% \subsection{The code for normal letters} -% -% The following code is for the minuscule characters. -% -% \begin{macrocode} -%<*min> -% HUNCLL.MF Program file for Half Uncial minuscules -% - - -% \end{macrocode} -% -% -% \begin{routine}{a} -% The letter `a'. -% \begin{macrocode} -cmchar "HUncial letter a"; -beginchar("a", 2u#+hstretch*(x_height#+jut#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% stem -rt x1=w-pcshiftx; top y1=h; -x2=x1; bot y2=0; -x5=x1-jut; y5=0.5[y1,y2]; -path p[]; -p1=z1{-pdir}..z5{down}..{right}z2; -% bowl -lft x3=pcshiftx; y3=y5; -x4=x6=0.5[x3,x5]; top y4=h; bot y6=0; -x2'=0.5[x2,x5]; -bowl_stem(6,2'); -rt x7=x6i; top y7=y6i; -rt x8=x1; y4-y8=y7-y6; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw p1; % the stem -draw z8..z4{left}..z3{down}..z6{right}..{pdir}z7; % the bowl -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,100); -endchar; % end "a" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{b} -% The letter `b'. -% \begin{macrocode} -cmchar "HUncial letter b"; -beginchar("b", 2u#+hstretch*(x_height#+trijut#), asc_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -lft x1=lft x2=pcshiftx+trijut; -top y1=h; -% lower bowl -rt x4=w-pcshiftx; -x3=x5=0.5[x2,x4]; bot y3=0; top y5=h/ascratio; -y2=y4=0.5[y3,y5]; -x11=rt x1; bowl_stem(5,11); -lft x7=x5i; bot y7=y5i; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2{down}..z3{right}..z4{up}..z5{left}..{-pdir}z7; -draw_triserif(1,trijut); -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,100); -endchar; % end "b" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{c} -% The letter `c'. -% \begin{macrocode} -cmchar "HUncial letter c"; -beginchar("c", 2u#+hstretch*(x_height#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -lft x1=pcshiftx; rt x3=w-pcshiftx; y1=y3=h/2; -x2=x4=w/2; top y2=h; bot y4=0; -x3'=w-pcshiftx; -bowl_stem(4,3'); -rt x5=x4i; top y5=y4i; -x6=x5; y2-y6=y5-y4; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z5{-pdir}..{left}z4..z1..z2..z6; -ductus:=false; -penlabels(1,2,3,4,5,6,16,17,18,100); -endchar; % end "c" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{d} -% The letter `d'. -% \begin{macrocode} -cmchar "HUncial letter d"; -beginchar("d", 2u#+hstretch*(x_height#+thick#+jut#), asc_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -rt x1=w-pcshiftx-jut; top y1=h; -x2=x1; bot y2=0; -x1'=lft x1; y1'=h; -lft x5=pcshiftx; -top y4=h/ascratio; bot y6=0; -x4=x6=0.5[x5,x1']; y5=0.5[y6,y4]; -bowl_stem(6,1'); -rt x7=x6i; top y7=y6i; -x8=x7; y4-y8=y7-y6; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_triserif(1,trijut); -draw z8..z4{left}..z5{down}..z6{right}..{pdir}z7; % bowl -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 "HUncial letter e"; -beginchar("e", 2u#+hstretch*(x_height#+trijut#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -lft x1=pcshiftx; rt x3=w-pcshiftx-trijut; y1=y3=h/2; -x2=x4=w/2; top y2=h; bot y4=0; -x3'=w-pcshiftx-trijut; -bowl_stem(4,3'); -rt x5=x4i; top y5=y4i; -% the bar -x7=x1; y7=y1; -rt x8=w-pcshiftx; top y8=2/3h; -path p[]; -p1=z7{right}..{pdir}z8; -p2=z2{right}..z3{down}..{left}z4; -z6 = p1 intersectionpoint p2; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z5{-pdir}..{left}z4..z1..z2{right}..z6; % the bowl -draw p1; % the bar -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,100); -endchar; % end "e" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{f} -% The letter `f'. -% \begin{macrocode} -cmchar "HUncial letter f"; -beginchar("f", 2u#+hstretch*(7/6x_height#+trijut#), (3/2x_height#), desc_depth#); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% stem -lft x1=lft x2=pcshiftx+trijut; -top y1=2/3h; bot y2=-d; -% bars -z3=z4=z1; -rt x5= rt x6=w-pcshiftx; top y5=h; y6=y4; -x7=0.5[x4,x6]; y7=y6-2thin; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_triserif(1,trijut); -draw_urswish(3,5); % top bar -draw z4..z7{right}..{pdir}z6; % bottom bar -ductus:=false; -penlabels(1,2,3,4,5,6,7,100); -endchar; % end "f" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{g} -% The letter `g'. This came in three forms; like the `g' in the Artificial -% Uncial script, like an `S' with a bar at the top, or the form I have -% done here. -% \begin{macrocode} -cmchar "HUncial letter g"; -beginchar("g", 2u#+hstretch*(4/3x_height#), x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := u; -numeric alpha; alpha:=thin; -pickup quill; -% top bar -lft x1=pcshiftx; top y1=h+alpha; -rt x3=w-pcshiftx; top y3=h-alpha; -% diagonal -rt x2=3/4w; top y2=h-alpha; -x4=1/4w; y4=0; -% the bowl -rt x6=w-pcshiftx; y6=-1/2d; -x7=1/2w; bot y7=-d; -lft x8=pcshiftx; top y8=-1/2d; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_wave(1,3,alpha); % top bar -draw z2--z4; % diagonal -draw z4{pdir}..z6{down}..z7{left}..z8; % the bowl -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,100); -endchar; % end "g" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{h} -% The letter `h'. -% \begin{macrocode} -cmchar "HUncial letter h"; -beginchar("h", 2u#+hstretch*(x_height#+trijut#), asc_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -lft x1=lft x2=pcshiftx+trijut; -top y1=h; bot y2=0; -% bowl -rt x5=w-pcshiftx; y5=h/(2ascratio); -lft x6=2/3w; bot y6=0; -x4=0.5[x1,x5]; top y4=h/ascratio; -x1'=rt x1; -bowl_stem(4,1'); -lft x3=x4i; bot y3=y4i; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_triserif(1,trijut); -draw z3{pdir}..z4{right}..z5{down}..z6; % bowl -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 "HUncial letter i"; -beginchar("i", 2u#+hstretch*(thick#+trijut#+jut#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -lft x1=lft x2=pcshiftx+trijut; -top y1=h; bot y2=0; -%%ductus:=true; -draw_tstem(1,2,srad); -draw_triserif(1,trijut); -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 "HUncial letter j"; -beginchar("j", 2u#+hstretch*(thick#+trijut#), x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -lft x1=lft x2=pcshiftx+trijut; -top y1=h; bot y2=-1/2d; -lft x3=pcshiftx; bot y3=-d; -%%ductus:=true; -draw z1--z2{down}..{-pdir}z3; -draw_triserif(1,trijut); -ductus:=false; -penlabels(1,2,3,100); -endchar; % end "j" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{k} -% The letter `k'. -% \begin{macrocode} -cmchar "HUncial letter k"; -beginchar("k", 2u#+hstretch*(x_height#+trijut#+jut#), asc_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -lft x1=lft x2=pcshiftx+trijut; -top y1=h; bot y2=0; -% for the flick -numeric rise,fall,fjut; -x3=rt x1; y3=(3/4)*(h/ascratio); -rise:=1/6h; fall:=-rise/2; fjut:=1/2w; -% for the leg -z4=z3; -x5=w-pcshiftx-jut; y5=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_triserif(1,trijut); -draw_flick(3,rise,fall,fjut); % upper diag -draw_tstem(4,5,srad); % lower diag -ductus:=false; -penlabels(1,2,3,4,5,100); -endchar; % end "k" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{l} -% The letter `l'. -% \begin{macrocode} -cmchar "HUncial letter l"; -beginchar("l", 2u#+hstretch*(7/6x_height#+trijut#), asc_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -lft x1=lft x2=pcshiftx+trijut; -top y1=h; bot y2=0; -z3=z2; -rt x4=w-pcshiftx; bot y4=1/10h; -%%ductus:=true; -draw z1--z2; -draw_triserif(1,trijut); % the stem -draw z3{right}..{pdir}z4; % the foot -ductus:=false; -penlabels(1,2,3,4,100); -endchar; % end "l" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{m} -% The letter `m'. -% \begin{macrocode} -cmchar "HUncial letter m"; -beginchar("m", 2u#+hstretch*(5/3x_height#+trijut#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -lft x1=pcshiftx+trijut; top y1=h; -x2=x1; bot y2=0; -x4=w/2; y4=2/3h; -x3=0.5[x2,x4]; top y3=h; -x5=x4; y5=y2; -z6=z4; -x7=3/4w; top y7=h; -rt x8=w-pcshiftx; y8=h/2; -lft x9=3/4w; y9=y2; -x14=x1; y14=y4; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % left half -draw_triserif(1,trijut); -draw z14..z3{right}..{down}z4; -draw_tstem(4,5,srad); % middle stem -draw z6..z7{right}..z8{down}..{-pdir}z9; % right half -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,14,100); -endchar; % end "m" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{n} -% The letter `n'. This could be like a capital `N' or a lower-case `n'. -% I have chosen to do the latter form. -% \begin{macrocode} -cmchar "HUncial letter n"; -beginchar("n", 2u#+hstretch*(x_height#+trijut#+jut#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% left stem -lft x1=pcshiftx+trijut; top y1=h; -x2=x1; bot y2=0; -x1'=rt x1; -% right stem -rt x5=w-pcshiftx-jut; y5=h/2; -x6=x5; bot y6=0; -x4=0.5[x1,x5]; top y4=h; -bowl_stem(4,1'); -lft x3=x4i; bot y3=y4i; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % left stem -draw_triserif(1,trijut); -draw_tstem(5,6,srad); % right stem -draw z3{pdir}..z4{right}..{down}z5; % the bowl top -ductus:=false; -penlabels(1,2,3,4,5,6,100); -endchar; % end "n" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{o} -% The letter `o'. -% \begin{macrocode} -cmchar "HUncial letter o"; -beginchar("o", 2u#+hstretch*(7/6x_height#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -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 "o" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{p} -% The letter `p'. -% \begin{macrocode} -cmchar "HUncial letter p"; -beginchar("p", 2u#+hstretch*(7/6x_height#+trijut#), x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% stem -lft x1=lft x2=pcshiftx+trijut; -top y1=h; bot y2=-d; -% bowl -rt x4=w-pcshiftx; -x3=x5=0.5[x2,x4]; bot y3=0; top y5=h; -y4=0.5[y3,y5]; -x1'=rt x1; -bowl_stem(5,1'); -lft x7=x5i; bot y7=y5i; -lft x8=rt x1; bot y8=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_triserif(1,trijut); -draw z8{right}..z4{up}..z5{left}..{-pdir}z7; % bowl -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 "HUncial letter q"; -beginchar("q", 2u#+hstretch*(7/6x_height#+jut#), x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% right stem -rt x1=w-pcshiftx-jut; top y1=h; -x2=x1; bot y2=-d; -lft x5=pcshiftx; -top y4=h; bot y6=0; -x4=x6=0.5[x5,x1']; y5=0.5[y6,y4]; -x1'=lft x1; -bowl_stem(6,1'); -rt x7=x6i; top y7=y6i; -z8=z1; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw z8{left}..z5{down}..z6{right}..{pdir}z7; % bowl -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 "HUncial letter r"; -beginchar("r", 2u#+hstretch*(x_height#+trijut#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% stem -lft x1=lft x2=pcshiftx+trijut; top y1=h; bot y2=0; -% bowl -lft x3=rt x1; bot y3=7/8h; -rt x5=w-pcshiftx; top y5=1/2h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_triserif(1,trijut); -draw z3{pdir}..{pdir}z5; % bowl -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,100); -endchar; % end "r" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{s} -% The letter `s'. This is a `long' S. -% \begin{macrocode} -cmchar "HUncial letter s"; -beginchar("s", 2u#+hstretch*(x_height#+trijut#), 3/2x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% stem -lft x1=lft x2=pcshiftx+trijut; top y1=2/3h; bot y2=0; -% arm -x5=w-pcshiftx; y5=h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_triserif(1,trijut); -%%draw z1{pdir}..{right}z5; % arm -draw_urswish(1,5); -ductus:=false; -penlabels(1,2,3,4,5,6,7,11,17,26,27,28,100); -endchar; % end "s" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{t} -% The letter `t'. -% \begin{macrocode} -cmchar "HUncial letter t"; -beginchar("t", 2u#+hstretch*(4/3x_height#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% bowl -lft x1=pcshiftx+1/4w; rt x3=w-pcshiftx; y1=h/3; y3=h/2; -x2=x4=0.5[x1,x3]; top y2=h; bot y4=0; -x6=x3; -x6'=w-pcshiftx; -bowl_stem(4,6'); -rt x5=x4i; top y5=y4i; -top y6=h; -% arm -lft x12=pcshiftx; top y12=h; -x11=0.5[x6,x12]; y11=y12-thin; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z5{-pdir}..{left}z4..z1{up}..{pdir}z6; % bowl -draw z6..z11..z12; % top bar -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 "HUncial letter u"; -beginchar("u", 2u#+hstretch*(x_height#+trijut#+jut#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% left half first -lft x6=pcshiftx+trijut; -top y6=h; -x7=x6; y7=h/2; -x8=0.5[x6,x1]; bot y8=0; -% the stem -rt x1=w-pcshiftx-jut; top y1=h; -x2=x1; bot y2=0; -% construction points for the curved part -x1'=lft x1; -bowl_stem(8,1'); -rt x9=x8i; top y9=y8i; -%%ductus:=true; -if ductus: - pickup stylus; -fi -% draw the serifs, then the bowls -draw_triserif(6,trijut); % left half -draw z6--z7{down}..z8{right}..{pdir}z9; -draw_tstem(1,2,srad); % right stem -draw_triserif(1,trijut); -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,11,16,100); -endchar; % end "u" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{v} -% The letter `v'. The right half of the `w' is used for the `v' (or vice-versa -% if you prefer). -% \begin{macrocode} -cmchar "HUncial letter v"; -beginchar("v", 2u#+hstretch*(x_height#+trijut#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% right side of W -numeric midx; midx:= pcshiftx; -lft x1=midx+trijut; top y1=h; -x2=x1; y2=h/2; -rt x4=w-pcshiftx; y4=y2; -x3=0.5[x2,x4]; bot y3=0; -x5=x4-trijut; y5=y1; -%%ductus:=true; -if ductus: - pickup stylus; -fi -% draw the serifs, then the bowls -draw_triserif(1,trijut); -%%draw_triserif(5,trijut); -draw z1--z2{down}..z3{right}..z4{up}..z5; -ductus:=false; -penlabels(1,2,3,4,5,11,100); -endchar; % end "v" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{w} -% The letter `w'. This is a modern version as the font did not have a W. -% \begin{macrocode} -cmchar "HUncial letter w"; -beginchar("w", 2u#+hstretch*(5/3x_height#+trijut#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% right side first -numeric midx; midx:= w/2-trijut; -lft x1=midx+trijut; top y1=h; -x2=x1; y2=h/2; -rt x4=w-pcshiftx; y4=y2; -x3=0.5[x2,x4]; bot y3=0; -x5=x4-trijut; y5=y1; -% left side -lft x6=pcshiftx+trijut; -top y6=h; -%%lft x7=pcshiftx; y7=y2; -x7=x6; y7=y2; -x8=0.5[x7,x1]; y8=y3; -% construction points -x15=0.5[x8,x1]; y15=y8; -z15'=z15 shifted (w*pdir); -x2'=x2; y2'=y15; -path p[]; -p1=z1--z2'; -p2=z15--z15'; -z9= p2 intersectionpoint p1; -pair vec[]; -p3=z6..z7{down}..{right}z8; -vec3 = direction 0 of p3; -z16=z6 shifted vec3; -%%ductus:=true; -if ductus: - pickup stylus; -fi -% draw the serifs, then the bowls -draw_triserif(1,trijut); % right half -draw z1--z2{down}..z3{right}..z4{up}..z5; -draw_triserif(6,trijut); % left half -draw z6--z7{down}..z8{right}..z9; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,11,16,100); -endchar; % end "w" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{x} -% The letter `x'. -% \begin{macrocode} -cmchar "HUncial letter x"; -beginchar("x", 2u#+hstretch*(4/3x_height#+jut#), x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% thick diagonal -lft x1=1/4w; rt x2=w-pcshiftx-jut; -y1=h; y2=0; -% top half of thin diagonal -rt x4=w-pcshiftx; top y4=h; -z3=2/3[z2,z1]; -% bottom half -lft x6=pcshiftx; bot y6=-d; -path p[]; -pair vec; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_istem(1,2,srad); % thick diagonal -draw_urswish(3,4); % top thin diagonal -p1=z3..z4s1{pdir}..z4s2{down}; % bottom thin diagonal -vec= direction 0 of p1; -draw z3{-vec}..{down}z6; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,100); -endchar; % end "x" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{y} -% The letter `y'. This has a dot on top! -% \begin{macrocode} -cmchar "HUncial letter y"; -beginchar("y", 2u#+hstretch*(4/3x_height#), x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% left stroke -lft x1=pcshiftx; top y1=h; -lft x3=w/2; bot y3=-d; -x2=lft x5; y2=bot y5; -% right stroke -x5=w/2; y5=1/3h; -x4=w-pcshiftx; top y4=h; -% the dot -x8=w/2; y8=h+jut; -if ductus: - pickup stylus; -fi -draw z1..z2..z3; % left stroke -draw_urswish(2,4); % right stroke -draw_pdot(8,dot_size); % the dot -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 "HUncial letter z"; -beginchar("z", 2u#+hstretch*(5/3x_height#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -numeric alpha, beta; alpha:=thin; beta:=2thin; -pickup quill; -% bottom stroke -lft x4=pcshiftx; bot y4=0; x14=x4; y14=y4+beta; -rt x6=w-pcshiftx; bot y6=-beta; -% top stroke -lft x1=1/5w; top y1=h+alpha; -rt x3=4/5w; top y3=h; x13=x3; y13=y3-alpha; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_wave(1,13,alpha); % top stroke -draw_wave(14,6,beta); % bottom stroke -draw z4--z3; % diagonal -ductus:=false; -penlabels(1,2,3,4,5,6,100); -endchar; % end "z" - -% \end{macrocode} -% \end{routine} -% -% -% The end of this file -% \begin{macrocode} -% -% \end{macrocode} -% -% -% \subsection{The code for capital letters} -% -% \thisfont{} `capitals' were drawn with the same pen as for the minuscules, -% and the letters were merely larger versions of the minuscules. -% -% \begin{macrocode} -%<*maj> -% HUNCLU.MF Program file for Half Uncial `capitals' -% - -% \end{macrocode} -% -% -% \begin{routine}{A} -% The letter `A'. -% \begin{macrocode} -cmchar "HUncial letter A"; -beginchar("A", 2u#+caprat*hstretch*(x_height#+jut#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% stem -rt x1=w-pcshiftx; top y1=h; -x2=x1; bot y2=0; -x5=x1-jut; y5=0.5[y1,y2]; -path p[]; -p1=z1{-pdir}..z5{down}..{right}z2; -% bowl -lft x3=pcshiftx; y3=y5; -x4=x6=0.5[x3,x5]; top y4=h; bot y6=0; -x2'=0.5[x2,x5]; -bowl_stem(6,2'); -rt x7=x6i; top y7=y6i; -rt x8=x1; y4-y8=y7-y6; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw p1; % the stem -draw z8..z4{left}..z3{down}..z6{right}..{pdir}z7; % the bowl -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,100); -endchar; % end "A" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{B} -% The letter `B'. -% \begin{macrocode} -cmchar "HUncial letter B"; -beginchar("B", 2u#+caprat*hstretch*(x_height#+trijut#), caprat*asc_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -lft x1=lft x2=pcshiftx+trijut; -top y1=h; -% lower bowl -rt x4=w-pcshiftx; -x3=x5=0.5[x2,x4]; bot y3=0; top y5=h/ascratio; -y2=y4=0.5[y3,y5]; -x11=rt x1; bowl_stem(5,11); -lft x7=x5i; bot y7=y5i; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2{down}..z3{right}..z4{up}..z5{left}..{-pdir}z7; -draw_triserif(1,trijut); -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,100); -endchar; % end "B" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{C} -% The letter `C'. -% \begin{macrocode} -cmchar "HUncial letter C"; -beginchar("C", 2u#+caprat*hstretch*(x_height#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -lft x1=pcshiftx; rt x3=w-pcshiftx; y1=y3=h/2; -x2=x4=w/2; top y2=h; bot y4=0; -x3'=w-pcshiftx; -bowl_stem(4,3'); -rt x5=x4i; top y5=y4i; -x6=x5; y2-y6=y5-y4; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z5{-pdir}..{left}z4..z1..z2..z6; -ductus:=false; -penlabels(1,2,3,4,5,6,16,17,18,100); -endchar; % end "C" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{D} -% The letter `D'. -% \begin{macrocode} -cmchar "HUncial letter D"; -beginchar("D", 2u#+caprat*hstretch*(x_height#+thick#+jut#), caprat*asc_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -rt x1=w-pcshiftx-jut; top y1=h; -x2=x1; bot y2=0; -x1'=lft x1; y1'=h; -lft x5=pcshiftx; -top y4=h/ascratio; bot y6=0; -x4=x6=0.5[x5,x1']; y5=0.5[y6,y4]; -bowl_stem(6,1'); -rt x7=x6i; top y7=y6i; -x8=x7; y4-y8=y7-y6; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_triserif(1,trijut); -draw z8..z4{left}..z5{down}..z6{right}..{pdir}z7; % bowl -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 "HUncial letter E"; -beginchar("E", 2u#+caprat*hstretch*(x_height#+trijut#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -lft x1=pcshiftx; rt x3=w-pcshiftx-trijut; y1=y3=h/2; -x2=x4=w/2; top y2=h; bot y4=0; -x3'=w-pcshiftx-trijut; -bowl_stem(4,3'); -rt x5=x4i; top y5=y4i; -% the bar -x7=x1; y7=y1; -rt x8=w-pcshiftx; top y8=2/3h; -path p[]; -p1=z7{right}..{pdir}z8; -p2=z2{right}..z3{down}..{left}z4; -z6 = p1 intersectionpoint p2; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z5{-pdir}..{left}z4..z1..z2{right}..z6; % the bowl -draw p1; % the bar -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,100); -endchar; % end "E" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{F} -% The letter `F'. -% \begin{macrocode} -cmchar "HUncial letter F"; -beginchar("F", 2u#+caprat*hstretch*(7/6x_height#+trijut#), caprat*(3/2x_height#), - caprat*desc_depth#); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% stem -lft x1=lft x2=pcshiftx+trijut; -top y1=2/3h; bot y2=-d; -% bars -z3=z4=z1; -rt x5= rt x6=w-pcshiftx; top y5=h; y6=y4; -x7=0.5[x4,x6]; y7=y6-2thin; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_triserif(1,trijut); -draw_urswish(3,5); % top bar -draw z4..z7{right}..{pdir}z6; % bottom bar -ductus:=false; -penlabels(1,2,3,4,5,6,7,100); -endchar; % end "F" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{G} -% The letter `G'. -% \begin{macrocode} -cmchar "HUncial letter G"; -beginchar("G", 2u#+caprat*hstretch*(4/3x_height#), caprat*x_height#, - caprat*desc_depth#); -adjust_fit(0,0); -pcshiftx := u; -numeric alpha; alpha:=thin; -pickup quill; -% top bar -lft x1=pcshiftx; top y1=h+alpha; -rt x3=w-pcshiftx; top y3=h-alpha; -% diagonal -rt x2=3/4w; top y2=h-alpha; -x4=1/4w; y4=0; -% the bowl -rt x6=w-pcshiftx; y6=-1/2d; -x7=1/2w; bot y7=-d; -lft x8=pcshiftx; top y8=-1/2d; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_wave(1,3,alpha); % top bar -draw z2--z4; % diagonal -draw z4{pdir}..z6{down}..z7{left}..z8; % the bowl -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,100); -endchar; % end "G" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{H} -% The letter `H'. -% \begin{macrocode} -cmchar "HUncial letter H"; -beginchar("H", 2u#+caprat*hstretch*(x_height#+trijut#), caprat*asc_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -lft x1=lft x2=pcshiftx+trijut; -top y1=h; bot y2=0; -% bowl -rt x5=w-pcshiftx; y5=h/(2ascratio); -lft x6=2/3w; bot y6=0; -x4=0.5[x1,x5]; top y4=h/ascratio; -x1'=rt x1; -bowl_stem(4,1'); -lft x3=x4i; bot y3=y4i; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_triserif(1,trijut); -draw z3{pdir}..z4{right}..z5{down}..z6; % bowl -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 "HUncial letter I"; -beginchar("I", 2u#+hstretch*(thick#+trijut#+jut#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -lft x1=lft x2=pcshiftx+trijut; -top y1=h; bot y2=0; -%%ductus:=true; -draw_tstem(1,2,srad); -draw_triserif(1,trijut); -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 "HUncial letter J"; -beginchar("J", 2u#+hstretch*(thick#+trijut#), caprat*x_height#, caprat*desc_depth#); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -lft x1=lft x2=pcshiftx+trijut; -top y1=h; bot y2=-1/2d; -lft x3=pcshiftx; bot y3=-d; -%%ductus:=true; -draw z1--z2{down}..{-pdir}z3; -draw_triserif(1,trijut); -ductus:=false; -penlabels(1,2,3,100); -endchar; % end "J" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{K} -% The letter `K'. -% \begin{macrocode} -cmchar "HUncial letter K"; -beginchar("K", 2u#+caprat*hstretch*(x_height#+trijut#+jut#), caprat*asc_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -lft x1=lft x2=pcshiftx+trijut; -top y1=h; bot y2=0; -% for the flick -numeric rise,fall,fjut; -x3=rt x1; y3=(3/4)*(h/ascratio); -rise:=1/6h; fall:=-rise/2; fjut:=1/2w; -% for the leg -z4=z3; -x5=w-pcshiftx-jut; y5=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_triserif(1,trijut); -draw_flick(3,rise,fall,fjut); % upper diag -draw_tstem(4,5,srad); % lower diag -ductus:=false; -penlabels(1,2,3,4,5,100); -endchar; % end "K" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{L} -% The letter `L'. -% \begin{macrocode} -cmchar "HUncial letter L"; -beginchar("L", 2u#+caprat*hstretch*(7/6x_height#+trijut#), caprat*asc_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -lft x1=lft x2=pcshiftx+trijut; -top y1=h; bot y2=0; -z3=z2; -rt x4=w-pcshiftx; bot y4=1/10h; -%%ductus:=true; -draw z1--z2; -draw_triserif(1,trijut); % the stem -draw z3{right}..{pdir}z4; % the foot -ductus:=false; -penlabels(1,2,3,4,100); -endchar; % end "L" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{M} -% The letter `M'. -% \begin{macrocode} -cmchar "HUncial letter M"; -beginchar("M", 2u#+caprat*hstretch*(5/3x_height#+trijut#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -lft x1=pcshiftx+trijut; top y1=h; -x2=x1; bot y2=0; -x4=w/2; y4=2/3h; -x3=0.5[x2,x4]; top y3=h; -x5=x4; y5=y2; -z6=z4; -x7=3/4w; top y7=h; -rt x8=w-pcshiftx; y8=h/2; -lft x9=3/4w; y9=y2; -x14=x1; y14=y4; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % left half -draw_triserif(1,trijut); -draw z14..z3{right}..{down}z4; -draw_tstem(4,5,srad); % middle stem -draw z6..z7{right}..z8{down}..{-pdir}z9; % right half -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,14,100); -endchar; % end "M" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{N} -% The letter `N'. -% \begin{macrocode} -cmchar "HUncial letter N"; -beginchar("N", 2u#+caprat*hstretch*(x_height#+trijut#+jut#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% left stem -lft x1=pcshiftx+trijut; top y1=h; -x2=x1; bot y2=0; -x1'=rt x1; -% right stem -rt x5=w-pcshiftx-jut; y5=h/2; -x6=x5; bot y6=0; -x4=0.5[x1,x5]; top y4=h; -bowl_stem(4,1'); -lft x3=x4i; bot y3=y4i; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % left stem -draw_triserif(1,trijut); -draw_tstem(5,6,srad); % right stem -draw z3{pdir}..z4{right}..{down}z5; % the bowl top -ductus:=false; -penlabels(1,2,3,4,5,6,100); -endchar; % end "N" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{O} -% The letter `O'. -% \begin{macrocode} -cmchar "HUncial letter O"; -beginchar("O", 2u#+caprat*hstretch*(7/6x_height#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -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 "O" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{P} -% The letter `P'. -% \begin{macrocode} -cmchar "HUncial letter P"; -beginchar("P", 2u#+caprat*hstretch*(7/6x_height#+trijut#), caprat*x_height#, - caprat*desc_depth#); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% stem -lft x1=lft x2=pcshiftx+trijut; -top y1=h; bot y2=-d; -% bowl -rt x4=w-pcshiftx; -x3=x5=0.5[x2,x4]; bot y3=0; top y5=h; -y4=0.5[y3,y5]; -x1'=rt x1; -bowl_stem(5,1'); -lft x7=x5i; bot y7=y5i; -lft x8=rt x1; bot y8=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_triserif(1,trijut); -draw z8{right}..z4{up}..z5{left}..{-pdir}z7; % bowl -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 "HUncial letter Q"; -beginchar("Q", 2u#+caprat*hstretch*(7/6x_height#+jut#), caprat*x_height#, - caprat*desc_depth#); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% right stem -rt x1=w-pcshiftx-jut; top y1=h; -x2=x1; bot y2=-d; -lft x5=pcshiftx; -top y4=h; bot y6=0; -x4=x6=0.5[x5,x1']; y5=0.5[y6,y4]; -x1'=lft x1; -bowl_stem(6,1'); -rt x7=x6i; top y7=y6i; -z8=z1; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw z8{left}..z5{down}..z6{right}..{pdir}z7; % bowl -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 "HUncial letter R"; -beginchar("R", 2u#+caprat*hstretch*(x_height#+trijut#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% stem -lft x1=lft x2=pcshiftx+trijut; top y1=h; bot y2=0; -% bowl -lft x3=rt x1; bot y3=7/8h; -rt x5=w-pcshiftx; top y5=1/2h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_triserif(1,trijut); -draw z3{pdir}..{pdir}z5; % bowl -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,100); -endchar; % end "R" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{S} -% The letter `S'. This is a `long' S. -% \begin{macrocode} -cmchar "HUncial letter S"; -beginchar("S", 2u#+caprat*hstretch*(x_height#+trijut#), caprat*(3/2x_height#), 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% stem -lft x1=lft x2=pcshiftx+trijut; top y1=2/3h; bot y2=0; -% arm -x5=w-pcshiftx; y5=h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_triserif(1,trijut); -%%draw z1{pdir}..{right}z5; % arm -draw_urswish(1,5); -ductus:=false; -penlabels(1,2,3,4,5,6,7,11,17,26,27,28,100); -endchar; % end "S" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{T} -% The letter `T'. -% \begin{macrocode} -cmchar "HUncial letter T"; -beginchar("T", 2u#+caprat*hstretch*(4/3x_height#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% bowl -lft x1=pcshiftx+1/4w; rt x3=w-pcshiftx; y1=h/3; y3=h/2; -x2=x4=0.5[x1,x3]; top y2=h; bot y4=0; -x6=x3; -x6'=w-pcshiftx; -bowl_stem(4,6'); -rt x5=x4i; top y5=y4i; -top y6=h; -% arm -lft x12=pcshiftx; top y12=h; -x11=0.5[x6,x12]; y11=y12-thin; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z5{-pdir}..{left}z4..z1{up}..{pdir}z6; % bowl -draw z6..z11..z12; % top bar -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 "HUncial letter U"; -beginchar("U", 2u#+caprat*hstretch*(x_height#+trijut#+jut#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% left half first -lft x6=pcshiftx+trijut; -top y6=h; -x7=x6; y7=h/2; -x8=0.5[x6,x1]; bot y8=0; -% the stem -rt x1=w-pcshiftx-jut; top y1=h; -x2=x1; bot y2=0; -% construction points for the curved part -x1'=lft x1; -bowl_stem(8,1'); -rt x9=x8i; top y9=y8i; -%%ductus:=true; -if ductus: - pickup stylus; -fi -% draw the serifs, then the bowls -draw_triserif(6,trijut); % left half -draw z6--z7{down}..z8{right}..{pdir}z9; -draw_tstem(1,2,srad); % right stem -draw_triserif(1,trijut); -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,11,16,100); -endchar; % end "U" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{V} -% The letter `V'. The right half of the `w' is used for the `v' (or vice-versa -% if you prefer). -% \begin{macrocode} -cmchar "HUncial letter V"; -beginchar("V", 2u#+caprat*hstretch*(x_height#+trijut#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% right side of W -numeric midx; midx:= pcshiftx; -lft x1=midx+trijut; top y1=h; -x2=x1; y2=h/2; -rt x4=w-pcshiftx; y4=y2; -x3=0.5[x2,x4]; bot y3=0; -x5=x4-trijut; y5=y1; -%%ductus:=true; -if ductus: - pickup stylus; -fi -% draw the serifs, then the bowls -draw_triserif(1,trijut); -%%draw_triserif(5,trijut); -draw z1--z2{down}..z3{right}..z4{up}..z5; -ductus:=false; -penlabels(1,2,3,4,5,11,100); -endchar; % end "V" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{W} -% The letter `W'. This is a modern version as the font did not have a W. -% \begin{macrocode} -cmchar "HUncial letter W"; -beginchar("W", 2u#+caprat*hstretch*(5/3x_height#+trijut#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% right side first -numeric midx; midx:= w/2-trijut; -lft x1=midx+trijut; top y1=h; -x2=x1; y2=h/2; -rt x4=w-pcshiftx; y4=y2; -x3=0.5[x2,x4]; bot y3=0; -x5=x4-trijut; y5=y1; -% left side -lft x6=pcshiftx+trijut; -top y6=h; -%%lft x7=pcshiftx; y7=y2; -x7=x6; y7=y2; -x8=0.5[x7,x1]; y8=y3; -% construction points -x15=0.5[x8,x1]; y15=y8; -z15'=z15 shifted (w*pdir); -x2'=x2; y2'=y15; -path p[]; -p1=z1--z2'; -p2=z15--z15'; -z9= p2 intersectionpoint p1; -pair vec[]; -p3=z6..z7{down}..{right}z8; -vec3 = direction 0 of p3; -z16=z6 shifted vec3; -%%ductus:=true; -if ductus: - pickup stylus; -fi -% draw the serifs, then the bowls -draw_triserif(1,trijut); % right half -draw z1--z2{down}..z3{right}..z4{up}..z5; -draw_triserif(6,trijut); % left half -draw z6--z7{down}..z8{right}..z9; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,11,16,100); -endchar; % end "W" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{X} -% The letter `X'. -% \begin{macrocode} -cmchar "HUncial letter X"; -beginchar("X", 2u#+caprat*hstretch*(4/3x_height#+jut#), caprat*x_height#, - caprat*desc_depth#); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% thick diagonal -lft x1=1/4w; rt x2=w-pcshiftx-jut; -y1=h; y2=0; -% top half of thin diagonal -rt x4=w-pcshiftx; top y4=h; -z3=2/3[z2,z1]; -% bottom half -lft x6=pcshiftx; bot y6=-d; -path p[]; -pair vec; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_istem(1,2,srad); % thick diagonal -draw_urswish(3,4); % top thin diagonal -p1=z3..z4s1{pdir}..z4s2{down}; % bottom thin diagonal -vec= direction 0 of p1; -draw z3{-vec}..{down}z6; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,100); -endchar; % end "X" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{Y} -% The letter `Y'. This has a dot on top! -% \begin{macrocode} -cmchar "HUncial letter Y"; -beginchar("Y", 2u#+caprat*hstretch*(4/3x_height#), caprat*x_height#, - caprat*desc_depth#); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% left stroke -lft x1=pcshiftx; top y1=h; -lft x3=w/2; bot y3=-d; -x2=lft x5; y2=bot y5; -% right stroke -x5=w/2; y5=1/3h; -x4=w-pcshiftx; top y4=h; -% the dot -x8=w/2; y8=h+jut; -if ductus: - pickup stylus; -fi -draw z1..z2..z3; % left stroke -draw_urswish(2,4); % right stroke -draw_pdot(8,dot_size); % the dot -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 "HUncial letter Z"; -beginchar("Z", 2u#+caprat*hstretch*(5/3x_height#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -numeric alpha, beta; alpha:=thin; beta:=2thin; -pickup quill; -% bottom stroke -lft x4=pcshiftx; bot y4=0; x14=x4; y14=y4+beta; -rt x6=w-pcshiftx; bot y6=-beta; -% top stroke -lft x1=1/5w; top y1=h+alpha; -rt x3=4/5w; top y3=h; x13=x3; y13=y3-alpha; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_wave(1,13,alpha); % top stroke -draw_wave(14,6,beta); % bottom stroke -draw z4--z3; % diagonal -ductus:=false; -penlabels(1,2,3,4,5,6,100); -endchar; % end "Z" - -% \end{macrocode} -% \end{routine} -% -% -% The end of this file -% \begin{macrocode} -% -% \end{macrocode} -% -% -% -% \subsection{The punctuation file} -% -% The main punctuation marks are defined in this file. -% -% \begin{macrocode} -%<*punct> -% HUNCLPUNCT.MF This file contains punctuation marks - -% \end{macrocode} -% -% -% \begin{routine}{,} -% The `,' character. -% \begin{macrocode} - -cmchar "Uncial Comma"; -beginchar(",",2u#+hstretch*(comma_width#+dot_size#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=u; -x1=w-pcshiftx-(0.5hstretch*dot_size); y1=h/2; -draw_pcomma(1,dot_size,comma_width); -penlabels(1); -endchar; % end of "," - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{.} -% The `.' character. -% \begin{macrocode} - -cmchar "Uncial Period"; -beginchar(".",2u#+hstretch*(dot_size#),x_height#,0); -pcshiftx:=u; -x1=w/2; y1=h/2; -draw_pdot(1,dot_size); -penlabels(1); -endchar; % end of "." - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{:} -% The `:' character. -% \begin{macrocode} - -cmchar "Uncial Colon"; -beginchar(":",2u#+hstretch*(dot_size#),x_height#,0); -pcshiftx:=u; -x1=x2=w/2; y1=2/3h; y2=1/3h; -draw_pdot(1,dot_size); -draw_pdot(2,dot_size); -penlabels(1,2); -endchar; % end ":" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{;} -% The `;' character. -% \begin{macrocode} - -cmchar "Uncial Semicolon"; -beginchar(";",2u#+hstretch*(comma_width#+dot_size#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=u; -x1=x2=w-pcshiftx-(0.5hstretch*dot_size); y1=2/3h; y2=1/3h; -draw_pdot(1,dot_size); -draw_pcomma(2,dot_size,comma_width); -penlabels(1,2); -endchar; % end of ";" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{'} -% The `'' character. -% \begin{macrocode} - -cmchar "Uncial Apostrophe"; -beginchar("'",2u#+hstretch*(comma_width#+dot_size#),4/3x_height#,0); -adjust_fit(0,0); -pcshiftx:=u; -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 "Uncial Reverse apostrophe"; -beginchar("`",2u#+hstretch*(comma_width#+dot_size#),4/3x_height#,0); -adjust_fit(0,0); -pcshiftx:=u; -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} -% -% \end{macrocode} -% -% -% \subsection{The ligatures and dashes file} -% -% The ligatured letters, punctuation marks and dashes are defined in this file. -% \begin{macrocode} -%<*lig> -% HUNCLLIG.MF Uncial ligatured letters, punctation and dashes - -% \end{macrocode} -% First the ligtables. -% \begin{macrocode} - -ligtable "`": "`"=:oct"134"; -ligtable "'": "'"=:oct"042"; %% , "?" kern 2u#, "!" kern 2u#; - -ligtable "-": "-"=:oct"173"; -ligtable oct"173": "-"=:oct"174"; - -ligtable "f": "i"=:oct"014"; - -% \end{macrocode} -% -% \begin{routine}{''} -% The `''' ligature. -% \begin{macrocode} - -cmchar "Uncial closing quotes"; -beginchar(oct"042",2u#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0); -adjust_fit(0,0); -pcshiftx:=u; -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 "Uncial opening quotes"; -beginchar(oct"134",2u#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0); -adjust_fit(0,0); -pcshiftx:=u; -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 `-' character. -% \begin{macrocode} - -cmchar "Uncial hyphen"; -beginchar("-",u#+hstretch*(0.8x_height#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=u/2; -numeric alpha; alpha:=w/8; -pickup quill; -lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; -x11=lft x1+alpha/2; y11=top y1-0.5thin; -x12=rt x2; y12=bot y1+0.5thin; -draw z1--z2; % bar -%%draw_triangle(11,alpha); -%%draw_rutriangle(12,alpha); -penlabels(1,2); -endchar; % end of "-" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{--} -% The -- ligature. -% \begin{macrocode} - -cmchar "Uncial en dash"; -beginchar(oct"173",u#+hstretch*(x_height#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=u/2; -numeric alpha; alpha:=w/8; -pickup quill; -lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; -x11=lft x1+alpha/2; y11=top y1-0.5thin; -x12=rt x2; y12=bot y1+0.5thin; -draw z1--z2; % bar -%%draw_triangle(11,alpha); -%%draw_rutriangle(12,alpha); -penlabels(1,2); -endchar; % end of "--" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{---} -% The `---' ligature. The em dash is twice the width of the en dash. -% \begin{macrocode} - -cmchar "Uncial em dash"; -beginchar(oct"174",u#+hstretch*(2x_height#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=u/2; -numeric alpha; alpha:=w/8; -pickup quill; -lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; -x11=lft x1+alpha/2; y11=top y1-0.5thin; -x12=rt x2; y12=bot y1+0.5thin; -draw z1--z2; % bar -%%draw_triangle(11,alpha); -%%draw_rutriangle(12,alpha); -penlabels(1,2); -endchar; % end of "---" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{fi} -% The `fi' ligature. -% \begin{macrocode} - -cmchar "HUncial ligature fi"; -beginchar(oct"014", 2u#+hstretch*(7/6x_height#+trijut#), (3/2x_height#), desc_depth#); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% stem -lft x1=lft x2=pcshiftx+trijut; -top y1=2/3h; bot y2=-d; -% bars -z3=z4=z1; -rt x5=w-pcshiftx; top y5=h; -rt x6=w-pcshiftx-jut; y6=y4; -x7=x6; bot y7=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -% the f part -draw_tstem(1,2,srad); % stem -draw_triserif(1,trijut); -draw_urswish(3,5); % top bar -draw z4--z6; % bottom bar -% the i part -draw_tstem(6,7,srad); % stem -ductus:=false; -penlabels(1,2,3,4,5,6,7,100); -endchar; % end of "fi" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{&} -% The ampersand (which is really an `et' ligature). -% \begin{macrocode} - -cmchar "HUncial ampersand"; -beginchar("&", 2u#+hstretch*(5/3x_height#), x_height#, 0.5desc_depth#); -adjust_fit(0,0); -pcshiftx:=u; -numeric alpha; alpha:=3/5w-u; -pickup quill; -% for the e part -lft x1=pcshiftx; rt x3= alpha; y1=y3=h/2; -x2=x4=alpha/2; top y2=h; bot y4=0; -x3'=alpha; -bowl_stem(4,3'); -rt x5=x4i; top y5=y4i; -rt x6=x4i; y5-y4=y2-y6; -% the bar -x7=x1; y7=y1; -rt x8=w-pcshiftx; y8=y7; -% the t part -lft x9=x5; y9=y5; -x10=0.5[x9,x8]; bot y10=-d; -x8'=x8; -bowl_stem(10,8'); -x11=x10i; y11=y10i; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z5{-pdir}..{left}z4..z1..z2..z6; % the E bowl -draw z7--z8; % the (top) bar -draw z8{left}..z9..z10{right}..{pdir}z11; % the T bowl -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,10,16,17,18,31,32,33); -endchar; % end of "&" - -% \end{macrocode} -% \end{routine} -% -% -% The end of this file. -% \begin{macrocode} -% -% \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> -% HUNCLDIG.MF Program file for Half Uncial digits -% - -% \end{macrocode} -% -% -% \begin{routine}{1} -% The digit `1'. -% \begin{macrocode} -cmchar "HUncial digit 1"; -beginchar("1", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -x1=x2=w/2; -y1=h; bot y2=0; -%%ductus:=true; -draw_tstem(1,2,srad); -draw_triserif(1,trijut); -ductus:=false; -penlabels(1,2,100); -endchar; % end "1" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{2} -% The digit `2'. -% \begin{macrocode} -cmchar "HUncial digit 2"; -beginchar("2", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -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; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1..z2{right}..z3{down}..{-pdir}z5; % curve -draw z5--z6; % foot -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 "HUncial 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; -% y values -bot y3=thin; top y10=h-2thin; -y6=0.5[y3,y10]; y7=y6; -bot y4=-thin; top y9=h+thin; -y5=0.5[y3,y6]; -y8=11/12[y7,y10]; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z3..z4{right}..z5{up}...{-pdir}z6; % bottom bowl -draw z7{pdir}...z8{up}..z9{left}..z10; % top bowl -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,10,100); -endchar; % end "3" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{4} -% The digit `4'. -% \begin{macrocode} -cmchar "HUncial digit 4"; -beginchar("4", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% the stem -x1=x2=w-pcshiftx-jut; -y1=h; bot y2=0; -% the crossbar -lft x3=pcshiftx; y3=0.33h; -rt x4=w-pcshiftx; y4=y3; -% the diagonal -lft x5=pcshiftx+jut; y5=h; -x6=x5; y6=y4; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % main stem -draw z3--z4; % crossbar -draw z3{pdir}..{pdir}z1; % diagonal -ductus:=false; -penlabels(1,2,3,4,100); -endchar; % end "4" - -% \end{macrocode} -% \end{routine} -% -% -% -% \begin{routine}{5} -% The digit `5'. -% \begin{macrocode} -cmchar "HUncial digit 5"; -beginchar("5", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% for the top -rt x1=w-pcshiftx; top y1=h; -lft x2=pcshiftx+trijut; 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+trijut; bot y7=2thin; -%%x8=w-pcshiftx; y8=h-0.5thin; -%%ductus:=true; -if ductus: - pickup stylus; -fi -%%draw_wave(2,1,thin); % top squiggle -draw z2--z1; % top bar -%%draw_rtriangle(8,3/4jut); -draw z3{pdir}..z5{down}..z6{left}..z7; % curve -draw z2--z3; % vertical -draw_triserif(2,trijut); -ductus:=false; -penlabels(1,2,3,4,5,6,7,100); -endchar; % end "5" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{6} -% The digit `6'. -% \begin{macrocode} -cmchar "HUncial 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; -x8=w-pcshiftx; y8=h-0.5thin; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1..z2{left}..z3{down}..z4{right}..z5{up}..{-pdir}z6; -%%draw z1{left}..z3{down}..z4{right}..z5{up}..{-pdir}z6; -%%draw_rtriangle(8,3/4jut); -ductus:=false; -penlabels(1,2,3,4,5,6,8,100); -endchar; % end "6" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{7} -% The digit `7'. -% \begin{macrocode} -cmchar "HUncial digit 7"; -beginchar("7", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% top bar -lft x1=pcshiftx; -rt x2=w-pcshiftx; -top y1=top y2=h; -x8=pcshiftx+3/8jut; y8=h-0.5thin; -% bowed leg -x4=w/2; bot y4=0; -x3=0.5[x2,x4]-3thin; y3=0.5[y2,y4]; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2; % top bar -%%draw_triangle(8,3/4jut); -draw z2..z3..z4; % leg -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,100); -endchar; % end "7" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{8} -% The digit `8'. -% \begin{macrocode} -cmchar "HUncial 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 "HUncial 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 "Uncial 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; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,100); -endchar; % end "0" - -% \end{macrocode} -% \end{routine} -% -% -% -% -% The end of this file. -% \begin{macrocode} -% -% \end{macrocode} -% -% \section{The font definition files} \label{sec:fd} -% -% The font comes in normal and bold weights only. -% -% \begin{macrocode} -%<*fdot1> -\DeclareFontFamily{OT1}{huncl}{} - \DeclareFontShape{OT1}{huncl}{m}{n}{ <-8.5> huncl7 <8.5-15> huncl10 <15-> huncl17 }{} - \DeclareFontShape{OT1}{huncl}{m}{sl}{ <-> sub * huncl/m/n }{} - \DeclareFontShape{OT1}{huncl}{m}{it}{ <-> sub * huncl/m/n }{} - \DeclareFontShape{OT1}{huncl}{m}{sc}{ <-> sub * huncl/m/n }{} - \DeclareFontShape{OT1}{huncl}{m}{u}{ <-> sub * huncl/m/n }{} - \DeclareFontShape{OT1}{huncl}{bx}{n}{ <-8.5> hunclb7 <8.5-15> hunclb10 <15-> hunclb17 }{} - \DeclareFontShape{OT1}{huncl}{bx}{it}{ <-> sub * huncl/bx/n }{} - \DeclareFontShape{OT1}{huncl}{bx}{sl}{ <-> sub * huncl/bx/n }{} - \DeclareFontShape{OT1}{huncl}{b}{n}{ <-> sub * huncl/bx/n }{} -% -% \end{macrocode} -% -% -% \begin{macrocode} -%<*fdt1> -\DeclareFontFamily{T1}{huncl}{} - \DeclareFontShape{T1}{huncl}{m}{n}{ <-8.5> huncl7 <8.5-15> huncl10 <15-> huncl17 }{} - \DeclareFontShape{T1}{huncl}{m}{sl}{ <-> sub * huncl/m/n }{} - \DeclareFontShape{T1}{huncl}{m}{it}{ <-> sub * huncl/m/n }{} - \DeclareFontShape{T1}{huncl}{m}{sc}{ <-> sub * huncl/m/n }{} - \DeclareFontShape{T1}{huncl}{m}{u}{ <-> sub * huncl/m/n }{} - \DeclareFontShape{T1}{huncl}{bx}{n}{ <-8.5> hunclb7 <8.5-15> hunclb10 <15-> hunclb17 }{} - \DeclareFontShape{T1}{huncl}{bx}{it}{ <-> sub * huncl/bx/n }{} - \DeclareFontShape{T1}{huncl}{bx}{sl}{ <-> sub * huncl/bx/n }{} - \DeclareFontShape{T1}{huncl}{b}{n}{ <-> sub * huncl/bx/n }{} -% -% \end{macrocode} -% -% \section{The package code} \label{sec:code} -% -% \subsection{The \Lpack{huncial} package} -% -% The \Lpack{huncial} 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{huncial}[1999/05/22 v1.0 package for Half Uncial 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}{\hunclfamily} -% Selects the \thisfont{} font family in the OT1 or T1 encoding. -% \begin{macrocode} -\ifx\Tienc\encodingdefault - \newcommand{\hunclfamily}{\usefont{T1}{huncl}{m}{n}} -\else - \newcommand{\hunclfamily}{\usefont{OT1}{huncl}{m}{n}} -\fi -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\texthuncl} -% Text command for the \thisfont{} font family. -% \begin{macrocode} -\DeclareTextFontCommand{\texthuncl}{\hunclfamily} -% \end{macrocode} -% \end{macro} -% -% The end of this package. -% \begin{macrocode} -% -% \end{macrocode} -% -% \subsection{The \Lpack{allhuncl} package} -% -% The \Lpack{allhuncl} 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{huncial} package. -% \begin{macrocode} -%<*uscall> -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{allhuncl}[1999/05/22 v1.0 package for all Half Uncial fonts] -\RequirePackage{huncial} -% \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}{huncl} -\renewcommand{\sfdefault}{huncl} -\renewcommand{\ttdefault}{huncl} -% \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 & 2.29 \\ ^^A CMR skip = 6pt = 2.8 times -% 6 & 2.58 & 2.76 \\ ^^A CMR skip = 7pt = 2.7 times -% 7 & 3.00 & 3.21 \\ ^^A CMR skip = 8pt = 2.7 times -% 8 & 3.44 & 3.68 \\ ^^A CMR skip = 9.5pt = 2.8 times -% 9 & 3.86 & 4.13 \\ ^^A CMR skip = 11pt = 2.8 times -% 10 & 4.31 & 4.61 \\ ^^A CMR skip = 12pt = 2.8 times -% 11 & 4.74 & 5.08 \\ ^^A CMR skip = 13.6pt = 2.8 times -% 12 & 5.17 & 5.53 \\ ^^A CMR skip = 14.5pt = 2.8 times -% 14 & 6.03 & 6.45 \\ ^^A CMR skip = 18pt = 3.0 times -% 17 & 7.44 & 7.96 \\ ^^A CMR skip = 22pt = 3.0 times -% 20 & 8.75 & 9.36 \\ ^^A CMR skip = 25pt = 2.9 times -% 25 & 10.94 & 11.71 \\ ^^A CMR skip = 30pt = 2.7 times -% \hline -% \end{tabular} -% \end{table} -% -% \begin{macro}{\huncial@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 -% -% \begin{macrocode} -\newcommand{\huncial@baselineskip@table}{% - <\@vpt>5.7% - <\@vipt>6.9% - <\@viipt>8.0% - <\@viiipt>9.2% - <\@ixpt>10.3% - <\@xpt>11.5% - <\@xipt>12.7% - <\@xiipt>13.8% - <\@xivpt>16.1% - <\@xviipt>19.9% - <\@xxpt>23.4% - <\@xxvpt>29.3} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\huncial@new@setfontsize} -% This is a macro that replaces the |\@setfontsize| macro which is called by -% the font size changing commands. -% \begin{macrocode} -\newcommand{\huncial@new@setfontsize}[3]{% - \edef\@tempa{\def\noexpand\@tempb####1<#2}% - \@tempa>##2<##3\@nil{\def\huncial@baselineskip@value{##2}}% - \edef\@tempa{\noexpand\@tempb\huncial@baselineskip@table<#2}% - \@tempa><\@nil - \ifx\huncial@baselineskip@value\@empty - \def\huncial@baselineskip@value{#3}% - \fi - \huncial@old@setfontsize{#1}{#2}\huncial@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\huncial@old@setfontsize=\@setfontsize - \let\@setfontsize=\huncial@new@setfontsize} -\AtBeginDocument{\normalsize} -% \end{macrocode} -% -% -% The end of this package. -% \begin{macrocode} -% -% \end{macrocode} -% -% -% -% \bibliographystyle{alpha} -% \renewcommand{\refname}{Bibliography} -% \begin{thebibliography}{GMS94} -% \addcontentsline{toc}{section}{\refname} -% -% \bibitem[And69]{ANDERSON69} -% Donald M.~Anderson. -% \newblock {\em The Art of Written Forms: The Theory and Practice of Calligraphy}. -% \newblock Holt, Rinehart and Winston, 1969. -% -% \bibitem[Bol95]{BOLOGNA95} -% Giulia Bologna. -% \newblock {\em Illuminated Manuscripts: The Book before Gutenberg}. -% \newblock Crescent Books, 1995. -% -% \bibitem[Day95]{DAY95} -% Lewis F.~Day. -% \newblock {\em Alphabets Old \& New}. -% \newblock (3rd edition originally published by B.~T.~Batsford, 1910) -% \newblock Senate, 1995. -% -% \bibitem[Dro80]{DROGIN80} -% Marc Drogin. -% \newblock {\em Medieval Calligraphy: Its History and Technique}. -% \newblock Allenheld, Osmun \& Co., 1980. -% -% \bibitem[Dru95]{DRUCKER95} -% Johanna Drucker. -% \newblock {\em The Alphabetic Labyrinth}. -% \newblock Thames \& Hudson, 1995. -% -% \bibitem[Fir93]{FIRMAGE93} -% Richard A.~Firmage. -% \newblock {\em The Alphabet Abecedarium}. -% \newblock David R~Goodine, 1993. -% -% \bibitem[Fli98]{LETTRINE} -% Daniel Flipo. -% \newblock {\em The LETTRINE package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1998. -% -% \bibitem[Har95]{HARRIS95} -% David Harris. -% \newblock {\em The Art of Calligraphy}. -% \newblock DK Publishing, 1995. -% -% \bibitem[Jen95]{BETON} -% Frank Jensen. -% \newblock {\em The BETON package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1995. -% -% \bibitem[Joh71]{JOHNSTON75} -% Edward Johnston (ed. Heather Child). -% \newblock {\em Formal Penship and Other Papers}. -% \newblock Penthalic, 1971. -% -% \bibitem[Knu87]{CM} -% Donald E.~Knuth. -% \newblock {\em Computer Modern Typefaces}. -% \newblock Addison-Wesley, 1987. -% -% \bibitem[Knu92]{METAFONT} -% Donald E.~Knuth. -% \newblock {\em The METAFONTbook}. -% \newblock Addison-Wesley, 1992. -% -% \bibitem[GMS94]{GOOSSENS94} -% Michel Goossens, Frank Mittelbach, and Alexander Samarin. -% \newblock {\em The LaTeX Companion}. -% \newblock Addison-Wesley Publishing Company, 1994. -% -% \bibitem[Tho75]{THOMAS75} -% Alan G.~Thomas. -% \newblock {\em Great Books and Book Collectors}. -% \newblock Weidenfield and Nichoson, 1975. -% -% \bibitem[Wil99]{DOCMFP} -% Peter R.~Wilson. -% \newblock {\em The DOCMFP Package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1999. -% -% \bibitem[Wil99b]{ROMANNUM} -% Peter R.~Wilson. -% \newblock {\em The ROMANNUM Package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1999. -% -% \end{thebibliography} -% -% -% \Finale -% \PrintIndex -% -\endinput - -%% \CharacterTable -%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -%% Digits \0\1\2\3\4\5\6\7\8\9 -%% Exclamation \! Double quote \" Hash (number) \# -%% Dollar \$ Percent \% Ampersand \& -%% Acute accent \' Left paren \( Right paren \) -%% Asterisk \* Plus \+ Comma \, -%% Minus \- Point \. Solidus \/ -%% Colon \: Semicolon \; Less than \< -%% Equals \= Greater than \> Question mark \? -%% Commercial at \@ Left bracket \[ Backslash \\ -%% Right bracket \] Circumflex \^ Underscore \_ -%% Grave accent \` Left brace \{ Vertical bar \| -%% Right brace \} Tilde \~} - - diff --git a/Master/texmf-dist/source/latex/bookhands/huncial/huncial.ins b/Master/texmf-dist/source/latex/bookhands/huncial/huncial.ins deleted file mode 100644 index 84f2d8cfb41..00000000000 --- a/Master/texmf-dist/source/latex/bookhands/huncial/huncial.ins +++ /dev/null @@ -1,101 +0,0 @@ -%% -%% huncial.ins -%% Copyright 1999 Peter R. Wilson -%% -%% This program is provided under the terms of the -%% LaTeX Project Public License distributed from CTAN -%% archives in directory macros/latex/base/lppl.txt. -%% -%% Author: Peter Wilson (CUA) -%% now at: peter.r.wilson@boeing.com -%% -%% This file will generate fast loadable files and documentation -%% driver files from the doc files in this package when run through -%% LaTeX or TeX. -%% -%% --------------- start of docstrip commands ------------------ -%% -\def\batchfile{huncial.ins} -\input docstrip.tex -\preamble - - Copyright 1999 Peter R. Wilson - - This program is provided under the terms of the - LaTeX Project Public License distributed from CTAN - archives in directory macros/latex/base/lppl.txt. - -Author: Peter Wilson (CUA) - now at: peter.r.wilson@boeing.com - -\endpreamble - -\keepsilent - -%%% \Msg{*** Generating the driver file ***} -%%% \generateFile{huncial.drv}{t}{\from{huncial.dtx}{driver}} - -\Msg{*** Generating the Metafont files ***} - -\usepostamble\empty -\generateFile{huncl7.mf}{t}{\from{huncial.dtx}{base7}} -\generateFile{huncl10.mf}{t}{\from{huncial.dtx}{base10}} -\generateFile{huncl17.mf}{t}{\from{huncial.dtx}{base17}} -\generateFile{hunclb7.mf}{t}{\from{huncial.dtx}{base7b}} -\generateFile{hunclb10.mf}{t}{\from{huncial.dtx}{base10b}} -\generateFile{hunclb17.mf}{t}{\from{huncial.dtx}{base17b}} -\generateFile{huncll.mf}{t}{\from{huncial.dtx}{min}} -\generateFile{hunclu.mf}{t}{\from{huncial.dtx}{maj}} -\generateFile{huncltitle.mf}{t}{\from{huncial.dtx}{mfd}} -\generateFile{hunclpunct.mf}{t}{\from{huncial.dtx}{punct}} -\generateFile{huncllig.mf}{t}{\from{huncial.dtx}{lig}} -\generateFile{huncldig.mf}{t}{\from{huncial.dtx}{dig}} - -\Msg{*** Generating the Font Definition files ***} -\usepostamble\defaultpostamble - -\generateFile{ot1huncl.fd}{t}{\from{huncial.dtx}{fdot1}} -\generateFile{t1huncl.fd}{t}{\from{huncial.dtx}{fdt1}} - -\Msg{*** Generating the LaTeX2e package files ***} - -\generateFile{huncial.sty}{t}{\from{huncial.dtx}{usc}} -\generateFile{allhuncl.sty}{t}{\from{huncial.dtx}{uscall}} - -\Msg{***********************************************************} -\Msg{*} -\Msg{* To finish the installation you have to move the following} -\Msg{* files into directories searched by TeX:} -\Msg{*} -\Msg{* Move these into the font source area:} -\Msg{* \space\space huncl7.mf} -\Msg{* \space\space huncl10.mf} -\Msg{* \space\space huncl17.mf} -\Msg{* \space\space hunclb7.mf} -\Msg{* \space\space hunclb10.mf} -\Msg{* \space\space hunclb17.mf} -\Msg{* \space\space huncll.mf} -\Msg{* \space\space hunclu.mf} -\Msg{* \space\space huncltitle.mf} -\Msg{* \space\space hunclpunct.mf} -\Msg{* \space\space huncllig.mf} -\Msg{* \space\space huncldig.mf} -\Msg{*} -\Msg{* Move these into the LaTeX macro area:} -\Msg{* \space\space ot1huncl.fd} -\Msg{* \space\space t1huncl.fd} -\Msg{* \space\space huncial.sty} -\Msg{* \space\space allhuncl.sty} -\Msg{*} -\Msg{*} -\Msg{* To produce the documentation run the files ending with} -\Msg{* `.dtx' through LaTeX.} -\Msg{* Process any name.idx file by:} -\Msg{* \space\space\space\space makeindex -s gind.ist name} -\Msg{* Process any name.glo file by:} -\Msg{* \space\space\space\space makeindex -s gglo.ist -o name.gls name.glo} -\Msg{*} -\Msg{* Happy TeXing} -\Msg{***********************************************************} - -\endinput diff --git a/Master/texmf-dist/source/latex/bookhands/inslrmaj/inslrmaj.dtx b/Master/texmf-dist/source/latex/bookhands/inslrmaj/inslrmaj.dtx deleted file mode 100644 index a566a44ac9e..00000000000 --- a/Master/texmf-dist/source/latex/bookhands/inslrmaj/inslrmaj.dtx +++ /dev/null @@ -1,4809 +0,0 @@ -% \iffalse meta-comment -% -% inslrmaj.dtx -% Copyright 1999 Peter R. Wilson -% -% This program is provided under the terms of the -% LaTeX Project Public License distributed from CTAN -% archives in directory macros/latex/base/lppl.txt. -% -% Author: Peter Wilson (CUA) (now at: peter.r.wilson@boeing.com) -% -% If you do not have the docmfp package (available from CTAN in -% tex-archive/macros/latex/contrib/supported), comment out the -% \usepackage{docmfp} line below and uncomment the line following it. -% -%<*driver> -\documentclass{ltxdoc} -\usepackage{docmfp} -%%%%%% \providecommand{\DescribeVariable}[1]{} \newenvironment{routine}[1]{}{} -\EnableCrossrefs -\CodelineIndex -%%\OnlyDescription -\setcounter{StandardModuleDepth}{1} -\begin{document} - \DocInput{inslrmaj.dtx} -\end{document} -% -% -% \fi -% -% \CheckSum{132} -% -% \DoNotIndex{\',\.,\@M,\@@input,\@addtoreset,\@arabic,\@badmath} -% \DoNotIndex{\@centercr,\@cite} -% \DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue} -% \DoNotIndex{\@input,\@ixpt,\@m} -% \DoNotIndex{\@minus,\@mkboth,\@ne,\@nil,\@nomath,\@plus,\@set@topoint} -% \DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb} -% \DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt} -% \DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt} -% \DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace} -% \DoNotIndex{\advance,\Alph,\alph} -% \DoNotIndex{\arabic,\ast,\begin,\begingroup,\bfseries,\bgroup,\box} -% \DoNotIndex{\bullet} -% \DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption} -% \DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass} -% \DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\endtrivlist} -% \DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup} -% \DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter} -% \DoNotIndex{\fbox} -% \DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef} -% \DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule} -% \DoNotIndex{\hsize,\hskip,\hspace,\hss,\if@tempswa,\ifcase,\or,\fi,\fi} -% \DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\fi,\fi,\fi,\fi,\fi} -% \DoNotIndex{\input} -% \DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark} -% \DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright} -% \DoNotIndex{\month,\newcommand,\newcounter,\newenvironment} -% \DoNotIndex{\NeedsTeXFormat,\newdimen} -% \DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number} -% \DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\p@} -% \DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip} -% \DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions} -% \DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright} -% \DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font} -% \DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily,\roman} -% \DoNotIndex{\roman,\secdef,\selectfont,\setbox,\setcounter,\setlength} -% \DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space} -% \DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase} -% \DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt} -% \DoNotIndex{\viipt,\vipt,\vskip,\vspace} -% \DoNotIndex{\wd,\xiipt,\year,\z@} -% -% \changes{v1.0}{1999/05/22}{First public release} -% \changes{v1.0a}{2001/01/02}{Fixed missing * in .fd files} -% -% ^^A \def\fileversion{v1.0} -% ^^A \def\filedate{1999/05/22} -% \def\fileversion{v1.0a} -% \def\filedate{2001/01/02} -% \newcommand*{\Lpack}[1]{\textsf {#1}} ^^A typeset a package -% \newcommand*{\Lopt}[1]{\textsf {#1}} ^^A typeset an option -% \newcommand*{\file}[1]{\texttt {#1}} ^^A typeset a file -% \newcommand*{\Lcount}[1]{\textsl {\small#1}} ^^A typeset a counter -% \newcommand*{\pstyle}[1]{\textsl {#1}} ^^A typeset a pagestyle -% \newcommand*{\Lenv}[1]{\texttt {#1}} ^^A typeset an environment -% \newcommand*{\AD}{\textsc{ad}} -% \newcommand*{\thisfont}{Insular Majuscule} -% -% \title{The \Lpack{Insular Majuscule} fonts\thanks{This -% file has version number \fileversion, last revised -% \filedate.}} -% -% \author{% -% Peter Wilson\\ -% Catholic University of America \\ -% Now at \texttt{peter.r.wilson@boeing.com} -% } -% \date{\filedate} -% \maketitle -% \begin{abstract} -% The \Lpack{inslrmaj} and \Lpack{allimaj} packages provide a set of -% Metafont \thisfont{} book-hands -% as used -% for manuscripts in the 6th to the 9th century. This is one in a series -% of manuscript fonts. -% \end{abstract} -% \tableofcontents -% \listoftables -% -% -% -% -% \section{Introduction} -% -% The \Lpack{inslrmaj} and \Lpack{allimaj} packages provide a Metafont~\cite{METAFONT} version -% of the \thisfont{} manuscript book-hand that was in use between about the -% third and ninth centuries~\AD. It is part of a project to provide fonts -% covering the major manuscript hands between the first century~\AD{} and -% the invention of printing. The principal resources used in this project -% are listed in the Bibliography. -% -% This manual is typeset according to the conventions of the -% \LaTeX{} \textsc{docstrip} utility which enables the automatic -% extraction of the \LaTeX{} macro source files~\cite{GOOSSENS94}. -% The \Lpack{docmfp} package is used for documenting the Metafont portions -% of the distribution~\cite{DOCMFP}. -% -% Section~\ref{sec:usc} describes the usage of the package. -% Commented code for the fonts is in Sections~\ref{sec:mf} and~\ref{sec:fd} -% and source code for the package is in Section~\ref{sec:code}. -% -% \subsection{Manuscript book-hands} -% -% Before the invention of printing all books were written by hand. The book-hands -% used by the scribes and copyists for the manuscripts changed as time -% went on. Table~\ref{tab:1} lists some of the common book-hands which were used -% between the 1st and 15th centuries. The later book-hands formed the basis of the -% fonts used by the early printers, which in turn form the basis of the printing -% fonts in use today. -% -% The manuscript book-hands were written with a broad nibbed reed or quill -% pen. Among the distinguishing characteristics of a hand, apart from the -% actual shape of the letters, are the angle of the pen (which controls the -% variation between thick and thin strokes) and the height of a letter compared -% to the width of the nib. The lower the ratio of the letter height to nib -% width, the more condensed is the script. The scripts also varied in their -% typical height. -% -% Table~\ref{tab:1} gives an `average' x-height for each -% script, which I obtained by measuring a sample of photographs of -% manuscripts written in the various hands. About a dozen examples -% of each book-hand were measured. This figure should not be taken too -% seriously. -% -% There was not a sharp division between the use of one hand and another. -% Many manuscripts exhibit a variety of hands in the same document. For example, -% the scribe writing in an Uncial hand may have used Roman Rustic letters -% for capitals. Usually the same pen was used for the two different scripts. -% -% Generally speaking, as a hand got older it became more embelished, and -% therefore took longer to write. As this happened a new hand would appear that -% was faster, and which would eventually make the earlier one obsolete. -% -% Many of the book-hands were single-cased; that is, they did not have an -% upper- and lower-case as we do nowadays in Western scripts. On the other -% hand, a script might be majuscule or minuscule. A \textit{majuscule} script -% is one, like our upper-case, where the letters are drawn between two lines -% and are of a uniform height with no ascenders or descenders. -% A \textit{minuscule} script, like our lower-case, is drawn between four lines -% and has ascenders and descenders. -% -% \begin{table} -% \centering -% \caption{The main manuscript book-hands} \label{tab:1} -% \begin{tabular}{lccccc} \hline -% Name & Century & x-height & Height & Pen & Normalised \\ -% & & (mm) & (nib widths) & angle & height \\ \hline -% Roman Rustic & 1--6 & 5.7 & 4--6 & 45 & 1.90 \\ -% Uncial & 3--6 & 4.1 & 4--5 & 30 & 1.37 \\ -% Half Uncial & 3--9 & 3.2 & 3--6 & 20--30 & 1.07 \\ -% Artificial Uncial & 6--10 & 4.2 & 3--6 & 10 & 1.40 \\ -% Insular majuscule & 6--9 & 4.2 & 5 & 0--20 & 1.40 \\ -% Insular minuscule & 6 onward & 4.1 & 5--6 & 45--70 & 1.37 \\ -% Carolingian minuscule & 8--12 & 3.0 & 3--5 & 45 & 1.00 \\ -% Early Gothic & 11--12 & 3.8 & 4--6 & 20--45 & 1.27 \\ -% Gothic Textura & 13--15 & 3.9 & 3--5 & 30--45 & 1.30 \\ -% Gothic Prescius & 13 onward & 3.3 & 4--5 & 45 & 1.10 \\ -% Rotunda & 13--15 & 3.2 & 4--6 & 30 & 1.07 \\ -% Humanist minuscule & 14 onward & 3.0 & 4--5 & 30--40 & 1.00 \\ \hline -% \end{tabular} -% \end{table} -% -% During the period under consideration arabic numerals were effectively -% not used. At the beginning they were unknown and even though some knew -% of them towards the end, the glyphs used for them are not recognisable --- -% to me they look somewhat like cryllic letters --- and each locality -% and time had its own highly individualistic rendering. The general rule -% when using one of these book-hands is to write all numbers using -% roman numerals. -% -% The Roman alphabet consisted of 23 capital letters --- the J, U and W -% were absent. The book-hands initially used both a `u' and a `v' interchangeably -% but by the 10th century the practice had become to use the `v' before a vowel -% and the `u' otherwise. The letter corresponding to the W sound appeared -% in England around the 7th century in -% the form of the runic \textit{wen} character and by about the 11th century -% the `w' chacter was generally used. The `J' is the newest letter of all, not -% appearing until about the mid 16th century. -% -% In the first century punctuation was virtually unknown, and typically -% would not even be any additional space between individual words, never -% mind denoting ends of sentences. Sometimes a dot at mid-height would be -% used as a word seperator, or to mark off the end of a paragraph. Effectively -% a text was a continuous stream of letters. By the time that printing was -% invented, though, all of our modern punctuation marks were being used. -% -% Among all these manuscript hands, the Carolingian minuscule is the -% most important as our modern fonts are based on its letter shapes, and it is -% also at this point in time where the division occured between the black letter -% scripts as used even today in Germany, and the lighter fonts used elesewhere. -% The Rotunda and Humanist minuscule hands were developed in Italy and were -% essentially a rediscovery of the Carolingian minusucle. Guthenberg took the -% Gothic scripts as the model for his types. Later printers, -% such as Nicholas Jenson of Venice, -% took the Humanist scripts as their models. -% -% -% \subsection{The \thisfont{} script} -% -% The \thisfont{} hand, which is a majuscule script even though it does -% have some ascenders and descenders, was in use for some three -% centuries. It was originally developed in Ireland by St.~Patrick's monks -% from the Roman Half Uncial script which they brought with them. -% It was a formal script, the triangular serifs and clubbed ascenders took -% at least two strokes each, so was not fast to write. The most famous -% example of the script is the \textit{Book of Kells}, which was written -% between 790 and 830. The hand eventually moved from Ireland to England -% and became even more formal until it effectively dissappeared under its -% own weight. -% -% Although the letter shapes in this book-hand are principally of -% a lower-case form, there are a few that are shaped like capital letters. -% For example, the `n' appeared as both an `n' and as an `N', -% while the `f' and `r' were written like `F' and `R'. -% Some letters had multiple forms. As well as the `n', both a short and -% a long `s' were used and the `z' also took two forms. -% -% The letters were written very close together and the scibes used many -% adhoc ligatures. A favourite was using a long `e' before a letter -% with a bar at the x-height, and joining the crossbar of the `e' to -% the bar of the following letter, for instance the pair `eg'. -% I have only provided the ampersand, `\&', as a ligature, standing for -% `et' which is the Latin for `and'. -% Letters were also stretched if a line -% needed some filling. For example, the capital form of the `n' might be -% stretched to 2 or 3 times its normal width. -% -% Usually the -% lettering in a manuscript was all one size. If the scribe felt the need -% for `capital' letters then, using the same pen, would either write a larger -% \thisfont{} letter or a letter from one of the more formal book-hands. -% I have provided a set of `capital' letters that are only a little larger -% than the normal letters for use in running text. -% During the time the \thisfont{} script was used the alphabet only had 24 -% letters. I have included the missing J. -% -% Arabic numerals were unknown at this time, so all numbers were written -% using the roman numbering system. I have provided \thisfont{} versions of -% the arabic digits. -% -% Punctuation was used, but not with the frequency of today. -% A sentence might be ended with -% a dot at mid-height or a paragraph ended with a colon, also at mid-height. -% The comma was was a small -% slash; the semi-colon was known, as was the single quotation -% mark which was represented by a raised comma. -% -% -% \section{The \Lpack{inslrmaj} and \Lpack{allimaj} packages} \label{sec:usc} -% -% The \thisfont{} font family is called |imaj|. The font is supplied in both -% OT1 and T1 encodings. -% -% \subsection{The \Lpack{inslrmaj} package} -% -% This is intended for the occasions when some short pieces of text have -% to be written in \thisfont{} while the majority of the document is in another -% font. The normal baselineskips are used. -% -% \DescribeMacro{\imajfamily} -% The |\imajfamily| declaration starts typesetting with the \thisfont{} fonts. -% Use of the \thisfont{} font will continue until either there is another |\...family| -% declaration or the current group (e.g., environment) is closed. -% -% \DescribeMacro{\textimaj} -% The command |\textimaj{|\meta{text}|}| will typeset \meta{text} using the -% \thisfont{} fonts. -% -% \subsection{The \Lpack{allimaj} package} -% -% -% This package is for when the entire document will be typeset with the -% \thisfont font. The baselineskips are set to those appropriate to the -% book-hand. -% -% This is a minimalist package. Apart from declaring \thisfont{} to be the -% default font and setting the baselineskips appropriately, it makes no other -% alterations. -% Vertical spacing -% before and after section titles and before and after lists, etc., will be -% too small as the \LaTeX{} design assumes a font comparable in size to -% normal printing fonts, and the book-hand is much taller. -% To capture more of the flavour of the time, all numbers -% should be written using roman numerals. -% The \Lpack{romannum} package~\cite{ROMANNUM} -% can be used so that \LaTeX{} will typeset the numbers that it generates, -% like sectioning or caption numbers, using roman numerals instead of arabic -% digits. -% -% \DescribeMacro{\cmrfamily} -% \DescribeMacro{\textcmr} -% \DescribeMacro{\cmssfamily} -% \DescribeMacro{\textcmss} -% \DescribeMacro{\cmttfamily} -% \DescribeMacro{\textcmtt} -% The |...family| declarations start typesetting with the Computer Modern Roman -% (|\cmrfamily|), the Computer Modern Sans (|\cmssfamily|), and the Computer -% Modern Typewriter (|\cmttfamily|) font families. The |\textcm..{|\meta{text}|}| -% commands will typeset \meta{text} in the corresponding Computer Modern font. -% -% The \Lpack{allimaj} package automatically loads the \Lpack{inslrmaj} package, -% so its font commands are available if necessary. -% -% \StopEventually{ -% \bibliographystyle{alpha} -% \renewcommand{\refname}{Bibliography} -% \begin{thebibliography}{GMS94} -% \addcontentsline{toc}{section}{\refname} -% -% \bibitem[And69]{ANDERSON69} -% Donald M.~Anderson. -% \newblock {\em The Art of Written Forms: The Theory and Practice of Calligraphy}. -% \newblock Holt, Rinehart and Winston, 1969. -% -% \bibitem[Bol95]{BOLOGNA95} -% Giulia Bologna. -% \newblock {\em Illuminated Manuscripts: The Book before Gutenberg}. -% \newblock Crescent Books, 1995. -% -% \bibitem[Day95]{DAY95} -% Lewis F.~Day. -% \newblock {\em Alphabets Old \& New}. -% \newblock (3rd edition originally published by B.~T.~Batsford, 1910) -% \newblock Senate, 1995. -% -% \bibitem[Dro80]{DROGIN80} -% Marc Drogin. -% \newblock {\em Medieval Calligraphy: Its History and Technique}. -% \newblock Allenheld, Osmun \& Co., 1980. -% -% \bibitem[Dru95]{DRUCKER95} -% Johanna Drucker. -% \newblock {\em The Alphabetic Labyrinth}. -% \newblock Thames \& Hudson, 1995. -% -% \bibitem[Fir93]{FIRMAGE93} -% Richard A.~Firmage. -% \newblock {\em The Alphabet Abecedarium}. -% \newblock David R~Goodine, 1993. -% -% \bibitem[Fli98]{LETTRINE} -% Daniel Flipo. -% \newblock {\em The LETTRINE package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1998. -% -% \bibitem[Har95]{HARRIS95} -% David Harris. -% \newblock {\em The Art of Calligraphy}. -% \newblock DK Publishing, 1995. -% -% \bibitem[Jen95]{BETON} -% Frank Jensen. -% \newblock {\em The BETON package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1995. -% -% \bibitem[Joh71]{JOHNSTON75} -% Edward Johnston (ed. Heather Child). -% \newblock {\em Formal Penship and Other Papers}. -% \newblock Penthalic, 1971. -% -% \bibitem[Knu87]{CM} -% Donald E.~Knuth. -% \newblock {\em Computer Modern Typefaces}. -% \newblock Addison-Wesley, 1987. -% -% \bibitem[Knu92]{METAFONT} -% Donald E.~Knuth. -% \newblock {\em The METAFONTbook}. -% \newblock Addison-Wesley, 1992. -% -% \bibitem[GMS94]{GOOSSENS94} -% Michel Goossens, Frank Mittelbach, and Alexander Samarin. -% \newblock {\em The LaTeX Companion}. -% \newblock Addison-Wesley Publishing Company, 1994. -% -% \bibitem[Tho75]{THOMAS75} -% Alan G.~Thomas. -% \newblock {\em Great Books and Book Collectors}. -% \newblock Weidenfield and Nichoson, 1975. -% -% \bibitem[Wil99]{DOCMFP} -% Peter R.~Wilson. -% \newblock {\em The DOCMFP Package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1999. -% -% \bibitem[Wil99b]{ROMANNUM} -% Peter R.~Wilson. -% \newblock {\em The ROMANNUM Package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1999. -% -% \end{thebibliography} -% } -% -% \section{The Metafont code} \label{sec:mf} -% -% -% As previously noted, this work is part of a larger project to provide -% fonts covering the main manuscript book-hands. As such, one of the -% aims is to produce a coordinated set of fonts, especially as multiple -% hands might be used in a single document. -% -% Noting that the hands tend to be somewhat larger than the typical 10pt -% size (where the x-height is approximately 1.5mm) used for modern books, -% I have also designed the fonts -% at a larger than normal size, then applied some non-linear factors when reducing -% them down to a 10pt size. -% Further, I have used the height of the Carolingian minuscule as a -% normalising factor when deciding on the absolute height of any particular -% script. The x-height of the Carolingian font is made equal to the -% x-height of the Computer Modern Roman (CMR) font. -% -% Modern fonts are effectively drawn. That is, the outline of the letter is -% drawn carefully and the center is filled with ink. This is shown to good -% effect in the Metafont code for the Computer Modern fonts~\cite{CM}. -% In contrast, the manuscript letters were inked by single pen strokes in -% a calligraphic manner. I have tried to repeat this calligraphic style -% in the Metafont code. -% -% As much as possible I have tried to use parameter values from the -% Computer Modern Roman (CMR) fonts in order to reduce possible -% infelicities if the CM and manuscript fonts are used together. However, -% few of the CMR parameters are applicable to the calligraphic style. -% -% -% \subsection{The parameter file} -% -% We deal with the parameter files first, and start by announcing -% what they are for. The \thisfont{} font comes in three sizes and also as a normal -% and a bold font. -% \begin{macrocode} -%<*base7|base10|base17|base7b|base10b|base17b> -%%%% IMAJ7.MF Insular Majuscule at 7 point design size. -%%%% IMAJ10.MF Insular Majuscule at 10 point design size. -%%%% IMAJ17.MF Insular Majuscule at 17 point design size. -%%%% IMAJB7.MF Insular Majuscule Bold at 7 point design size. -%%%% IMAJB10.MF Insular Majuscule Bold at 10 point design size. -%%%% IMAJB17.MF Insular Majuscule Bold at 17 point design size. -% -% \end{macrocode} -% Parameters from CMR are used as much as possible. We also -% make sure that \Lpack{cmbase} is loaded as well as plain Metafont. -% \begin{macrocode} -if unknown cmbase: input cmbase fi - -%font_identifier:="IMAJ"; font_size 7pt#; -%font_identifier:="IMAJ"; font_size 10pt#; -%font_identifier:="IMAJ"; font_size 17.28pt#; -%font_identifier:="IMAJB"; font_size 7pt#; -%font_identifier:="IMAJB"; font_size 10pt#; -%font_identifier:="IMAJB"; font_size 17.28pt#; - -% \end{macrocode} -% -% \DescribeVariable{jutstretch} -% The CMR scaling for lowercase serifs wrt 17pt size. -% \begin{macrocode} -% jutstretch:=1.19; -% jutstretch:=1.152; -% jutstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{stemstretch} -% The CMR scaling for lowercase stem widths wrt 17pt size. -% \begin{macrocode} -% stemstretch:=1.50; -% stemstretch:=1.31; -% stemstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{caprat} -% The scaling for `capitals' wrt `lowercase'. This is pretty much a guess -% (the ratio for CMR10 is 1.59). -% \begin{macrocode} - caprat:=1.5; % ratio of capital height to minuscule height -% \end{macrocode} -% -% \DescribeVariable{cap_jutstretch} -% The CMR scaling for uppercase serifs wrt 17pt size. -% \begin{macrocode} -% cap_jutstretch:=1.3; -% cap_jutstretch:=1.2; -% cap_jutstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{cap_stemstretch} -% The CMR scaling for uppercase stem width wrt 17pt size. -% \begin{macrocode} -% cap_stemstretch:=1.45; -% cap_stemstretch:=1.31; -% cap_stemstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{bfudge} -% Letter width scaling for bold font wrt normal font. -% \begin{macrocode} -% bfudge:=1.0; -% bfudge:=1.2; -% \end{macrocode} -% -% \DescribeVariable{szfudge} -% Width scaling wrt 17pt letter width. -% \begin{macrocode} -% szfudge:=1.18; -% szfudge:=1.0; -% 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} -% carol_height#:=108.5/36pt#; -% carol_height#:=155/36pt#; -% carol_height#:=268/36pt#; -% \end{macrocode} -% -% \DescribeVariable{vstretch} -% The height of this font wrt the Carolingian font. -% \begin{macrocode} - vstretch:=1.4; - -% \end{macrocode} -% -% \DescribeVariable{x_height} -% The x-height of lower case letters. Scaled from the Carolingian font. -% \begin{macrocode} - x_height#:=vstretch*carol_height#; -% \end{macrocode} -% -% \DescribeVariable{u} -% The unit width. The CMR values are used. -% \begin{macrocode} -% u#:=15.5/36pt#; -% u#:=20/36pt#; -% u#:=32.5/36pt#; -% u#:=17.9/36pt#; -% u#:=23/36pt#; -% 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 -% cap_serif_fit#:=3.5/36pt#; % extra sidebar near uppercase serifs -% cap_serif_fit#:=5/36pt#; % extra sidebar near uppercase serifs -% cap_serif_fit#:=8/36pt#; % extra sidebar near uppercase serifs -% letter_fit#:=0pt#; % extra space added to all sidebars -% letter_fit#:=0pt#; % extra space added to all sidebars -% 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} -% sb#:=1/2u#; % unit for side bearings -% sb#:=1/2u#; % unit for side bearings -% sb#:=1/2u#; % unit for side bearings - -% \end{macrocode} -% -% \DescribeVariable{cap_height} -% The height of capital letters. -% \begin{macrocode} -% cap_height#:=172.2/36pt#; % height of caps -% cap_height#:=246/36pt#; % height of caps -% 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} -% thickfudge:=1/5; -% thickfudge:=1/4; -% \end{macrocode} -% -% \DescribeVariable{thinfudge} -% The nib sharpness. -% \begin{macrocode} -thinfudge:=1/6; -% \end{macrocode} -% -% \DescribeVariable{thick} -% The maximum nib width. -% That is, the width of the thickest line that can be penned. -% \begin{macrocode} -thick#:=stemstretch*thickfudge*x_height#; % max pen breadth -% \end{macrocode} -% -% \DescribeVariable{thin} -% The nib thinness. -% That is, the width of the thinnest line that can be penned. -% \begin{macrocode} -thin#:=thinfudge*thick#; -% \end{macrocode} -% -% \DescribeVariable{pangle} -% The pen angle (in degrees). -% \begin{macrocode} -pangle:=0; % pen angle -% \end{macrocode} -% -% \DescribeVariable{ascratio} -% The height of lower case ascenders wrt |x_height|. -% \begin{macrocode} - ascratio:=5/3; -% \end{macrocode} -% -% \DescribeVariable{asc_height} -% The height of lower case ascenders. -% \begin{macrocode} - asc_height#:=ascratio*x_height#; -% \end{macrocode} -% -% \DescribeVariable{descratio} -% The depth of lower case descenders wrt |x_height|. -% \begin{macrocode} - descratio:=1.5/3; -% \end{macrocode} -% -% \DescribeVariable{desc_depth} -% The depth of lower case descenders. -% \begin{macrocode} - desc_depth#:=descratio*x_height#; -% \end{macrocode} -% -% \DescribeVariable{fig_height} -% The height of numerals. Make these midway between normal and capital -% letters. -% \begin{macrocode} - fig_height#:=(0.5[1,caprat])*x_height#; -% \end{macrocode} -% -% \DescribeVariable{fig_width} -% The width of numerals. All numerals are the same width (roughly, an `o'). -% \begin{macrocode} - fig_width#:=hstretch*(x_height#); -% \end{macrocode} -% -% \DescribeVariable{body_height} -% The height of the tallest character. -% \begin{macrocode} - body_height#:=caprat*asc_height#; -% \end{macrocode} -% -% \DescribeVariable{body_depth} -% The depth of the lowest character. -% \begin{macrocode} - body_depth#:=caprat*desc_depth#; -% \end{macrocode} -% -% \DescribeVariable{half_height} -% Half the normal letter height. -% \begin{macrocode} - half_height#:=1/2x_height#; % half the height of x height letters - -% \end{macrocode} -% -% \DescribeVariable{side} -% We might be using a square for the character design. -% \begin{macrocode} -side#:=x_height#; -% \end{macrocode} -% -% \DescribeVariable{rule_thickness} -% Thickness of rules (in math symbols). The CMR values are used. -% \begin{macrocode} -% rule_thickness#:=.34pt#; -% rule_thickness#:=.4pt#; -% rule_thickness#:=.6pt#; - -% \end{macrocode} -% -% \DescribeVariable{jutfudge} -% Controls the protrusion of serifs. -% \begin{macrocode} -%%%%jutfudge:= 3/4; -jutfudge:= 1/2; -% \end{macrocode} -% -% \DescribeVariable{jut} -% The lowercase serif protrusion. -% \begin{macrocode} -jut#:=jutstretch*jutfudge*thick#; -% \end{macrocode} -% -% \DescribeVariable{srad} -% |srad| with |0 < srad < 1| controls the serif radius. -% \begin{macrocode} -srad:=0.5; -% \end{macrocode} -% -% \DescribeVariable{trijut} -% The lowercase triangular serif protrusion. -% \begin{macrocode} -trijut#:=0.75jutstretch*thick#; -% \end{macrocode} -% -% \DescribeVariable{clubjut} -% The fractional protusion of the club base. -% \begin{macrocode} -clubjut:=5/12; -% \end{macrocode} -% -% \DescribeVariable{o} -% Amount of overshoot for curves (as in an `o'). Use CMR values. -% \begin{macrocode} -% o#:=5/36pt#; -% o#:=8/36pt#; -% o#:=10/36pt#; - -% \end{macrocode} -% -% \DescribeVariable{slant} -% |slant| is the amount the font slopes to the right. -% \begin{macrocode} -slant:=0; % tilt ratio $(\Delta x/\Delta y)$ - -% \end{macrocode} -% -% \DescribeVariable{monospace} -% We are generating a variable-width font. -% \begin{macrocode} -monospace:=false; % should all characters have the same width? - -% \end{macrocode} -% -% \DescribeVariable{dot_size} -% The size of (punctuation) dots. -% \begin{macrocode} -dot_size#:=5thin#; % size of dots -% \end{macrocode} -% -% \DescribeVariable{comma_width} -% The horizontal width of a comma. -% \begin{macrocode} -comma_width#:=2.5dot_size#; - -% \end{macrocode} -% -% Finally, call the driver file for the font. -% \begin{macrocode} -generate imajtitle %% switch to the driver file - -% \end{macrocode} -% -% The end of this code section. -% \begin{macrocode} -% -% \end{macrocode} -% -% -% \subsection{The driver file} -% -% The driver file sets up the font parameters and also contains -% the macros used in the definition of the characters. -% -% \begin{macrocode} -%<*mfd> -% This is IMAJTITLE.MF for the Insular Majuscule font. -% This makes a short font. -% This file also contains special macros universally needed in the -% font but either not in the cmbase.mf file or modifications of these. -% -% \end{macrocode} -% -% \begin{routine}{makebox} -% This is a new version of the \Lpack{cmbase.mf} |makebox| macro. -% Essentially, as we are only generating a single case font, we don't -% need all the horizontals for the CMR characters. -% -% \begin{macrocode} -% A new version of cmbase.mf makebox macro -def makebox(text rule) = - for y=0,half_height,cap_height,body_height,x_height,-desc_depth,-body_depth: - rule((l,y)t_,(r,y)t_); endfor % horizontals - for x=l,r: rule((x,-body_depth)t_,(x,body_height)t_); endfor % verticals - for x=u*(1+floor(1/u)) step u until r-1: - rule((x,-body_depth)t_,(x,body_height)t_); endfor % more verticals - if charic<>0: - rule((r+charic*pt,h.o_),(r+charic*pt,.5h.o_)); fi % italic correction -enddef; - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{proofpcbb} -% The macro |proofpcbb(S, xoff, yoff)| draws crosses at the corners of the -% square, and at the bottom and top midpoints, where the point |zS| is at -% position |(xoff,yoff)| in the square. -% \begin{macrocode} - -% A macro to delineate a letter's bounding square in proof mode. -% Point z$ is at (xoff,yoff) in the bounding square. -def proofpcbb(suffix $)(expr xoff, yoff) = -if proofing > 0: - x$bl = x$ - xoff; y$bl = y$ - yoff; % Bottom Left Hand Corner - z$br = (x$bl+side, y$bl); % BRHC - z$tr = (x$bl+side, y$bl+side); % TRHC - z$tl = (x$bl, y$bl+side); % TLHC - z$bc = 1/2[z$bl,z$br]; z$tc = 1/2[z$tl,z$tr]; % horizontal mid points - pair hc, vc; - hc = (2u,0); vc = (0,2u); - pickup pensquare scaled 2; - for s = z$bl, z$br, z$tr, z$tl, z$bc, z$tc: - draw s-hc--s+hc; - draw s-vc--s+vc; - endfor -fi -enddef; - -% \end{macrocode} -% \end{routine} -% -% -% -% \begin{routine}{inslrmaj_font_setup} -% This macro contains the set up for the \thisfont{} fonts. -% \begin{macrocode} - -def inslrmaj_font_setup= % contains special stuff for inslrmaj fonts - define_pixels(side,half_height,carol_height,comma_width); - define_pixels(u,dot_size,letter_size,cap_height,width_adj,serif_fit, - cap_serif_fit,jut,cap_jut,trijut); - define_pixels(fig_width); - define_whole_pixels(letter_fit,sb); - define_whole_vertical_pixels(body_height,asc_height,cap_height,x_height, - desc_depth,body_depth,fig_height); - define_corrected_pixels(o); - define_blacker_pixels(thick,thin); - let adjust_fit = normal_adjust_fit; -% \end{macrocode} -% \DescribeVariable{stylus} -% The pen for drawing the thinnest lines is |stylus|. -% \begin{macrocode} - pickup pencircle scaled thin; - stylus:=savepen; -% \end{macrocode} -% \DescribeVariable{thickstylus} -% The pen for drawing lines a bit thicker than the thinnest is |thickstylus|. -% \begin{macrocode} - pickup pencircle scaled (1.5thin); - thickstylus:=savepen; -% \end{macrocode} -% \DescribeVariable{quill} -% The normal calligraphic pen is |quill|. -% \begin{macrocode} - pickup pencircle xscaled thick yscaled thin rotated pangle; - quill:=savepen; - numeric pcshiftx#; % x value of LHS of box wrt origin of char box - define_pixels(pcshiftx); - numeric sqxside#; % x size of the square - numeric sqyside#; % y size of the square - define_pixels(sqxside,sqyside); - -enddef; % end of inslrmaj_font_setup - -% \end{macrocode} -% \end{routine} -% -% -% \DescribeVariable{ductus} -% A boolean to control drawing the ductus (TRUE) or the full letter (FALSE). -% \begin{macrocode} -boolean ductus; -ductus:=false; -% \end{macrocode} -% -% \DescribeVariable{qhor} -% \DescribeVariable{qvert} -% The cosine and sine of the pen angle. -% \begin{macrocode} -numeric qhor, qvert; -qhor:=cosd(pangle); qvert:=sind(pangle); -% \end{macrocode} -% -% \DescribeVariable{pdir} -% The vector corresponding to the pen angle. -% \begin{macrocode} -pair pdir; pdir=dir(pangle); -% \end{macrocode} -% -% \DescribeVariable{ppdir} -% The vector that is perpendicular (anticlockwise) to the pen angle. -% \begin{macrocode} -pair ppdir; ppdir=dir(pangle+90); -% \end{macrocode} -% -% \begin{routine}{draw_serif} -% A macro to draw a serif. |draw_serif(1,2,f)| uses the current pen to -% draw a serif of extent |jut| at |z1| to the left of the line from |z2| -% to |z1|. The -% radius is controlled by |f|, where $0y$$: - top_serif := true; - z$c=z$b shifted (-bjut*pdir); - else: - top_serif:=false; - z$c=z$b shifted (bjut*pdir); - fi -% \end{macrocode} -% Draw the parts, and finish off. -% \begin{macrocode} - if top_serif: - draw z$c--z$b{pdir}..{z$$-z$}z$a; % the serif - else: - draw z$c--z$b{-pdir}..{z$$-z$}z$a; - fi - labels($a,$b,$c); -enddef; % end of draw_serif - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{draw_triserif} -% A macro to draw a triangular top left serif. -% |draw_triserif(1,tj)| draws a serif at |z1| with its leftmost x -% value at |x1-tj|, where it is assumed that the -% top point on the stem is at |z1| and the stem was drawn with |quill|. -% \begin{macrocode} - -def draw_triserif(suffix $)(expr tj)= - pen oldpen; oldpen:=currentpen; - pickup quill; - x$ts1'=lft x$; y$ts1'=bot y$; - pickup stylus; - lft x$ts1=x$ts1'; bot y$ts1=y$ts1'; - x$ts2=x$ts1-tj; z$ts2=whatever[z$,z$ts1]; - x$ts3=x$ts1; y$ts3=y$ts2-tj; - pickup stylus; -%% filldraw z$ts1--z$ts2--z$ts3--cycle; - filldraw z$--z$ts2--z$ts3--cycle; - pickup oldpen; - labels($ts1,$ts2,$ts3); -enddef; % end of draw_triserif - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{draw_istem} -% A macro to draw the shape of an i. |draw_istem(1,2,f)| draws a stem whose -% top is at |z1| and bottom at |z2|. It draws with the current pen and the serifs -% are of extent |jut|. There is a top left and bottom right serif. -% The serif radius is controlled by |f|, with $0 0) or - (abs sl < tantol) or (abs sm < tantol) or (abs sr < tantol); - if wtest: - if (stpsize < tantol): - z$tan=(0,0); - errmessage("No tangent; path too short"); - else: - if (sl*sr > 0): - z$tan=(0,0); - errmessage("No tangent; end products have the same sign"); - else: - if (abs sl < tantol): - z$tan=ptl; - else: - if (abs sm < tantol): - z$tan=ptm; - else: - z$tan=ptr; - fi - fi - fi - fi - else: -% \end{macrocode} -% There should be a tangent and we iterate to find it, using -% bisection. If there is one to be found it will be at the -% current middle point. The tangent point will be somewhere -% between the two points that lead to opposite signed scalar -% products. -% \begin{macrocode} - forever: - if (sl*sm < 0): % opposite signs, look between pl & pm - pr:=pm; pm:=0.5(pr+pl); - vecpr := vecpm; veclr := veclm; sr:=sm; - else: - pl:=pm; pm:=0.5(pr+pl); - vecpl:=vecpm; vecll:=veclm; sl:=sm; - fi - stpsize:=pr-pl; - ptm := point pm of pth; - veclm := unitvector (z$-ptm); - vecpm := unitvector (direction pm of pth); - sm := veclm scalarprod vecpm; -% \end{macrocode} -% We stop the iteration if the step size is too small or the -% middle point is the tangent point. In either case, the -% middle point is the best guess that can be made. -% \begin{macrocode} - wtest := (stpsize < tantol) or (abs sm < tantol); - if wtest: - if (abs sm < tantol): - z$tan = ptm; - else: - z$tan = ptm; -%%%%%% errmessage("Warning: tangent approximated"); - fi - fi - exitif wtest; - endfor - fi -enddef; - -% \end{macrocode} -% \end{routine} -% -% -% Set the mode and font setup. -% \begin{macrocode} - -font_coding_scheme:="ASCII minuscules and punctuation"; -mode_setup; -inslrmaj_font_setup; - -% \end{macrocode} -% -% -% We generate letters, together with some punctuation and -% analphabetics. -% \begin{macrocode} - -input imajl; % lower case -input imaju; % capitals -input imajpunct; % punctuation -input imajlig; % the several dashes -input imajdig; % arabic digits - -% \end{macrocode} -% -% Set up the spacings, stretches and shrinks. -% -% \begin{macrocode} - -font_slant slant; font_x_height x_height#; -if monospace: - font_normal_space vstretch*9u#; % no stretching or shrinking - font_quad vstretch*18u#; - font_extra_space vstretch*9u#; -else: - font_normal_space vstretch*6u#+2letter_fit#; - font_normal_stretch vstretch*3u#; font_normal_shrink vstretch*2u#; - font_quad vstretch*18u#+4letter_fit#; - font_extra_space vstretch*2u#; - -% \end{macrocode} -% -% Finally, do the ligtables. -% -% \begin{macrocode} - k#:=-.5u#; kk#:=-1.5u#; kkk#:=-2u#; % three degrees of kerning - kks#:=-4u#; kkx#:=-1.5u#; kkj#:=-2u#; kkr#:=-5u#; kkrs#:=-2u#; kkrl#:=-8u#; - ligtable "s": - "a" kern kks#, "A" kern kks#, - "c" kern kks#, "C" kern kks#, - "d" kern kks#, "D" kern kks#, - "e" kern kks#, "E" kern kks#, - "f" kern kks#, "F" kern kks#, - "g" kern kks#, "G" kern kks#, - "i" kern kks#, "I" kern kks#, - "j" kern kks#, "J" kern kks#, - "k" kern kks#, "K" kern kks#, - "m" kern kks#, "M" kern kks#, - "n" kern kks#, "N" kern kks#, - "o" kern kks#, "O" kern kks#, - "p" kern kks#, "P" kern kks#, - "q" kern kks#, "Q" kern kks#, - "r" kern kks#, "R" kern kks#, - "t" kern kks#, "T" kern kks#, - "u" kern kks#, "U" kern kks#, - "v" kern kks#, "V" kern kks#, - "w" kern kks#, "W" kern kks#, - "x" kern kks#, "X" kern kks#, - "y" kern kks#, "Y" kern kks#, - "z" kern kks#, "Z" kern kks#; - - ligtable "S": - "a" kern kks#, "A" kern kks#, - "c" kern kks#, "C" kern kks#, - "d" kern kks#, "D" kern kks#, - "e" kern kks#, "E" kern kks#, - "f" kern kks#, "F" kern kks#, - "g" kern kks#, "G" kern kks#, - "i" kern kks#, "I" kern kks#, - "j" kern kks#, "J" kern kks#, - "k" kern kks#, "K" kern kks#, - "m" kern kks#, "M" kern kks#, - "n" kern kks#, "N" kern kks#, - "o" kern kks#, "O" kern kks#, - "p" kern kks#, "P" kern kks#, - "q" kern kks#, "Q" kern kks#, - "r" kern kks#, "R" kern kks#, - "t" kern kks#, "T" kern kks#, - "u" kern kks#, "U" kern kks#, - "v" kern kks#, "V" kern kks#, - "w" kern kks#, "W" kern kks#, - "x" kern kks#, "X" kern kks#, - "y" kern kks#, "Y" kern kks#, - "z" kern kks#, "Z" kern kks#; - - ligtable "x": - "a" kern kkx#, "A" kern kkx#, - "b" kern kkx#, "B" kern kkx#, - "c" kern kkx#, "C" kern kkx#, - "d" kern kkx#, "D" kern kkx#, - "e" kern kkx#, "E" kern kkx#, - "g" kern kkx#, "G" kern kkx#, - "j" kern kkx#, "J" kern kkx#, - "l" kern kkx#, "L" kern kkx#, - "o" kern kkx#, "O" kern kkx#, - "q" kern kkx#, "Q" kern kkx#, - "t" kern kkx#, "T" kern kkx#, - "u" kern kkx#, "U" kern kkx#, - "v" kern kkx#, "V" kern kkx#, - "w" kern kkx#, "W" kern kkx#, - "y" kern kkx#, "Y" kern kkx#; - - ligtable "X": - "a" kern kkx#, "A" kern kkx#, - "b" kern kkx#, "B" kern kkx#, - "c" kern kkx#, "C" kern kkx#, - "d" kern kkx#, "D" kern kkx#, - "e" kern kkx#, "E" kern kkx#, - "g" kern kkx#, "G" kern kkx#, - "j" kern kkx#, "J" kern kkx#, - "l" kern kkx#, "L" kern kkx#, - "o" kern kkx#, "O" kern kkx#, - "q" kern kkx#, "Q" kern kkx#, - "t" kern kkx#, "T" kern kkx#, - "u" kern kkx#, "U" kern kkx#, - "v" kern kkx#, "V" kern kkx#, - "w" kern kkx#, "W" kern kkx#, - "y" kern kkx#, "Y" kern kkx#; - - ligtable "a": "A": - "b": "B": - "c": "C": - "d": "D": - "e": "E": - "h": "H": - "i": "I": - "k": "K": - "l": "L": - "m": "M": - "n": "N": - "o": "O": - "p": "P": - "t": "T": - "u": "U": - "v": "V": - "w": "W": - "z": "Z": - "j" kern kkj#, "J" kern kkj#; - - ligtable "r": - "a" kern kkr#, "A" kern kkr#, - "b" kern kkr#, "B" kern kkr#, - "c" kern kkr#, "C" kern kkr#, - "d" kern kkr#, "D" kern kkr#, - "e" kern kkr#, "E" kern kkr#, - "f" kern kkrs#, "F" kern kkrs#, - "g" kern kkrs#, "G" kern kkrs#, - "h" kern kkr#, "H" kern kkr#, - "i" kern kkr#, "I" kern kkr#, - "j" kern kkj#, "J" kern kkj#, - "k" kern kkrs#, "K" kern kkrs#, - "l" kern kkr#, "L" kern kkr#, - "m" kern kkr#, "M" kern kkr#, - "n" kern kkrs#, "N" kern kkrs#, - "o" kern kkr#, "O" kern kkr#, - "p" kern kkrs#, "P" kern kkrs#, - "q" kern kkr#, "Q" kern kkr#, - "r" kern kkrs#, "R" kern kkrs#, - "s" kern kkr#, "S" kern kkr#, - "t" kern kkr#, "T" kern kkr#, - "u" kern kkr#, "U" kern kkr#, - "v" kern kkr#, "V" kern kkr#, - "w" kern kkr#, "W" kern kkr#, - "x" kern kkx#, "X" kern kkx#, - "y" kern kkr#, "Y" kern kkr#, - "z" kern kkr#, "Z" kern kkr#; - - ligtable "R": - "a" kern kkr#, "A" kern kkr#, - "b" kern kkr#, "B" kern kkr#, - "c" kern kkr#, "C" kern kkr#, - "d" kern kkr#, "D" kern kkr#, - "e" kern kkr#, "E" kern kkr#, - "f" kern kkrs#, "F" kern kkrs#, - "g" kern kkrs#, "G" kern kkrs#, - "h" kern kkr#, "H" kern kkr#, - "i" kern kkr#, "I" kern kkr#, - "j" kern kkj#, "J" kern kkj#, - "k" kern kkrs#, "K" kern kkrs#, - "l" kern kkr#, "L" kern kkr#, - "m" kern kkr#, "M" kern kkr#, - "n" kern kkrs#, "N" kern kkrs#, - "o" kern kkr#, "O" kern kkr#, - "p" kern kkrs#, "P" kern kkrs#, - "q" kern kkr#, "Q" kern kkr#, - "r" kern kkrs#, "R" kern kkrs#, - "s" kern kkr#, "S" kern kkr#, - "t" kern kkr#, "T" kern kkr#, - "u" kern kkr#, "U" kern kkr#, - "v" kern kkr#, "V" kern kkr#, - "w" kern kkr#, "W" kern kkr#, - "x" kern kkx#, "X" kern kkx#, - "y" kern kkr#, "Y" kern kkr#, - "z" kern kkr#, "Z" kern kkr#; - - -fi - -bye. - -% -% \end{macrocode} -% -% \subsection{The code for normal letters} -% -% The following code is for the lower case characters. -% -% \begin{macrocode} -%<*min> -% IMAJL.MF Program file for Insular Majuscule lower case -% - -% \end{macrocode} -% -% -% \begin{routine}{a} -% The letter `a'. -% \begin{macrocode} -cmchar "IMAJ letter a"; -beginchar("a", 2sb#+hstretch*(5/3x_height#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pickup quill; -%% left bowl -n1 := w-2pcshiftx; % actual letter width -n2 := 7/10n1; % width of left bowl -z1=(pcshiftx,0); -obowl(1, n2, h); -pth1:=obouter; pth2:=obinner; -pth10:=obfirst; pth20:=obsecond; -%% right bowl -n3:=x1+n2-16/12thick; % leftmost point of "stem" -n4:=2(n1-n3); % total width of right stem bowl -z2=(n3,0); -offsetbowl(2, n4, h, 6/12, 1/2); -pth3:=obouter; pth4:=obinner; -pth30:=obfirst; pth40:=obsecond; -%% intersect left bowl with outer of right bowl -z1tout = (subpath (0,1) of pth1) intersectionpoint (subpath (4,2) of pth3); -z1tinn = (subpath (0,1) of pth2) intersectionpoint (subpath (4,2) of pth3); -z1lout = (subpath (1,2) of pth1) intersectionpoint (subpath (4,2) of pth3); -z1linn = (subpath (1,2) of pth2) intersectionpoint (subpath (4,2) of pth3); - -%%ductus:=true; -if ductus: - pickup stylus; - % draw the control paths - draw pth10; draw pth20; - draw pth30; draw pth40; -else: - %% draw left bowl - fill z1lout..z1minro{-pdir}..z1maxlo{ppdir}..z1minlo{pdir}..z1tout-- - z1tinn..z1minli{-pdir}..z1maxli{-ppdir}..z1minri{pdir}..z1linn-- - cycle; - %% draw right stem/bowl - fill z2minro{-pdir}..z2maxlo{ppdir}..{pdir}z2minlo-- - z2minli{-pdir}..z2maxli{-ppdir}..{pdir}z2minri--cycle; -fi -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,100); -endchar; % end "a" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{b} -% The letter `b'. -% \begin{macrocode} -cmchar "IMAJ letter b"; -beginchar("b", 2sb#+hstretch*(7/6x_height#), - asc_height#, 0); -adjust_fit(0,0); -numeric n[]; -pcshiftx := sb; -pickup quill; -n1:=w-2pcshiftx; % actual letter width -n2:=h/ascratio; % top of bowl -z1=(pcshiftx, -o); -obowl(1, n1, n2+o); -%% draw bowl -fill obouter; unfill obinner; -%% top of stem -x2=x1wt+1/3n1; top y2=h; -tangentpoint(2, subpath (3,4) of obsecond); -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z2tan--z2; -draw_triserif(2,trijut); -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,100); -endchar; % end "b" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{c} -% The letter `c'. -% \begin{macrocode} -cmchar "IMAJ letter c"; -beginchar("c", 2sb#+hstretch*(5/6x_height#), - x_height#, 0); -adjust_fit(0,0); -numeric n[]; -pcshiftx := sb; -pickup quill; -n1:=w-2pcshiftx; % actual letter width -n2:=6/5w-2pcshiftx; % width of full bowl -z1=(pcshiftx,0); -obowl(1, n2, h); -z3=(x1+n1, h); % top RH corner -z4=(x1obc,1/6h); z5=(3/2w,y4); % for horizontal line -%% top intersection points -z10i = (z1obc--z3) intersectionpoint obinner; -z10o = (z1obc--z3) intersectionpoint obouter; -%% bottom intersection points -z20i = (z4--z5) intersectionpoint obinner; -z20o = (z4--z5) intersectionpoint obouter; -%%ductus:=true; -if ductus: - pickup stylus; -fi -fill z20o..z1minro{-pdir}..z1maxlo{ppdir}..z1minlo{pdir}..z10o-- - z10i..z1minli{-pdir}..z1maxli{-ppdir}..z1minri{pdir}..z20i-- - cycle; -ductus:=false; -penlabels(1,2,3,4,5,6,16,17,18,100); -endchar; % end "c" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{d} -% The letter `d'. There is a choice between an upright and a low d. I have done -% the low d. -% \begin{macrocode} -cmchar "IMAJ letter d"; -beginchar("d", 2sb#+hstretch*(x_height#+1/2thick#), - x_height#, 0); -adjust_fit(0,0); -numeric n[]; -pcshiftx := sb; -pickup quill; -%% bowl -n1 := w-2pcshiftx; % actual letter width -n2 := n1-1/2thick; % width of bowl -n3 := h; % top of bowl -z1=(w-pcshiftx-n2, 0); -obowl(1, n2, n3); -%% top bar -lft x3=pcshiftx; y3=h; -z3i=(pcshiftx, y3-1/2thin); z3o=(x3i,y3i+thin); -z2i=(x1nh,y3i); -z2o=(x2i,y3o); -%%ductus:=true; -if ductus: - pickup stylus; -fi -fill z1minlo{-pdir}..z1maxlo{-ppdir}..z1minro{pdir}..z1maxro{ppdir}..{left}z2o-- - z3o--z3i-- - z2i{right}..z1maxri{-ppdir}..z1minri{-pdir}..z1maxli{ppdir}..{pdir}z1minli-- - cycle; -draw_utriangle(3, thick); -ductus:=false; -penlabels(0,1,2,3,4,5,6,7,8,100); -endchar; % end "d" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{e} -% The letter `e'. -% \begin{macrocode} -cmchar "IMAJ letter e"; -beginchar("e", sb#+hstretch*(x_height#+3/2thick#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -n1 := w-pcshiftx; % actual letter width -n2 := n1-3/2thick; % width of bowl -z1=(pcshiftx,0); -obowl(1, n2, h); -%% for crossbar -z2=(0,2/3h); rt x3=w; y3=y2; z3'=(x1obc,y2); -z4 = (z2--z3') intersectionpoint subpath (3,4) of obsecond; -z10tout = (z3'--z3) intersectionpoint subpath (0,3) of obouter; -z10tinn = (z3'--z3) intersectionpoint subpath (0,3) of obinner; -%% bottom cutoff -z5=(x1obc,1/6h); z6=(w,y5); -z20bout = (z5--z6) intersectionpoint subpath (0,3) of obouter; -z20binn = (z5--z6) intersectionpoint subpath (0,3) of obinner; -%%ductus:=true; -if ductus: - pickup stylus; -fi -fill z20bout..z1minro{-pdir}..z1maxlo{ppdir}..z1minlo{pdir}..z10tout-- - z10tinn..z1minli{-pdir}..z1maxli{-ppdir}..z1minri{pdir}..z20binn-- - cycle; -draw z4--z3; % crossbar & decoration -draw_triangle(3,thick); -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,100); -endchar; % end "e" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{f} -% The letter `f'. -% \begin{macrocode} -cmchar "IMAJ letter f"; -beginchar("f", 2sb#+hstretch*(x_height#+trijut#), - (x_height#), desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -%% stem -lft x1=lft x2=pcshiftx+trijut; -top y1=h; bot y2=-d; -%% bottom bar -z4=(rt x1,-thin); rt x6=w-pcshiftx; y6=y4+2thin; z5=1/2[z4,z6]; -%% top bar -z7=(rt x1, bot y1); -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_triserif(1,trijut); -draw_clubbase(1, 2, 1/3, clubjut, clubjut); -draw z4{dir(45)}..z5{right}..z6{dir(45)}; % bottom bar -draw_flick(7, 2thin, thin, (w-pcshiftx-x7+1/2thick)); % top bar -ductus:=false; -penlabels(1,2,3,4,5,6,7,100); -endchar; % end "f" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{g} -% The letter `g'. -% \begin{macrocode} -cmchar "IMAJ letter g"; -beginchar("g", 2sb#+hstretch*(5/3x_height#), - x_height#, desc_depth#); -adjust_fit(0,0); -path pth[]; -pair vec[]; -pcshiftx := sb; -pickup quill; -%% top bar -lft x1=pcshiftx; y1=h; rt x2=w-pcshiftx; y2=h; -%% curves -z3=2/5[z1,z2]; -x5=4/5[x1,x2]; y5=-1/2d; -x4=(x3-thick); y4=1/2[y5,y3]; -x7=1/2[x1,x4]; y7=y5; -x6=2/3[x7,x5]; bot y6=-d; -pth1 := z3..z4{down}..z5; -pth2 := z5--z6{left}..z7; -%% diagonal to close bottom bowl -vec1 := direction 2 of pth2; -vec2 := (z5-z6); -z7'=(lft x7, bot y7); z7''=(rt x7, y7); -pickup thickstylus; -lft x8 = x7'; bot y8 = y7'; -z9' = z8 shifted 2vec2; -z9 = (z8--z9') intersectionpoint pth1; -z7''' = z7'' shifted 2vec1; -z8' = whatever[z7'',z7'''] = whatever[z8,z9']; -%%ductus:=true; -if ductus: - pickup stylus; - draw z1--z2; % top bar - draw pth1; draw pth2; % curves - draw rt z8--z9; % diagonal -else: - pickup quill; - draw z1--z2; % top bar - draw_triangle(2,thick); - draw_utriangle(1,thick); - draw pth1; draw pth2; % curves - pickup thickstylus; - draw rt z8--z9; % diagonal - fill z7''--z8'--z8--cycle; -fi -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,100); -endchar; % end "g" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{h} -% The letter `h'. -% \begin{macrocode} -cmchar "IMAJ letter h"; -beginchar("h", 2sb#+hstretch*(x_height#+trijut#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -numeric n[]; -%% stem -lft x1=lft x2=pcshiftx+trijut; -top y1=h; bot y2=0; -%% bowl -rt x3 = lft x1; y3=0; -n1 := w-pcshiftx-x3; % bowl width -n2 := h/ascratio; % bowl height -obowl(3, n1, n2); -z1'=(rt x1, y1); z2'=(x1',y2); %% right hand side of stem -z10tout = (z1'--z2') intersectionpoint subpath (3,4) of obouter; -z10tinn = (z1'--z2') intersectionpoint subpath (3,4) of obinner; -z10toth = (x1, y10tinn); % avoids 180 turn in path -z6 = directionpoint down of obsecond; % top of right leg -z6i=(lft x6, bot y6); z6o=(rt x6, bot y6); -z8=(x6,0); -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_triserif(1,trijut); -draw_clubbase(1, 2, 1/3, clubjut, clubjut); -draw_tstem(6,8,srad); % right leg -draw_clubbase(6, 8, 1/3, 0, 1/2clubjut); -fill z6i{up}..z3minli{-pdir}..z10tinn--z10toth-- % top of bowl - z10tout..z3minlo{pdir}..{down}z6o--cycle; -ductus:=false; -penlabels(1,2,3,4,5,6,100); -endchar; % end "h" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{i} -% The letter `i'. -% \begin{macrocode} -cmchar "IMAJ letter i"; -beginchar("i", 2sb#+hstretch*(thick#+trijut#+jut#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -lft x1=lft x2=pcshiftx+trijut; -top y1=h; bot y2=0; -%%ductus:=true; -draw_tstem(1,2,srad); -draw_triserif(1,trijut); -draw_clubbase(1, 2, 1/3, clubjut, clubjut); -ductus:=false; -penlabels(1,2,100); -endchar; % end "i" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{j} -% The letter `j'. This letter was not in the script, it being a later invention. -% \begin{macrocode} -cmchar "IMAJ letter j"; -beginchar("j", sb#+hstretch*(2/3x_height#), - x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% stem -rt x1 = w-pcshiftx; top y1 = h; -x2=x1; y2=-1/2d; -%% bottom hook -lft x3 = 0; bot y3 = -d; -%% triangle -n1 := thick; % side length -z6=(lft x3, bot y3); -x7=x6+n1; z7=whatever[z6,z2]; -z8=1/2[z6,z7]; -z9=(x8, y8+0.9n1); -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2; % stem -draw_triserif(1,trijut); -draw z2--z3; % hook -fill z6--z7--z9--cycle; % triangle -ductus:=false; -penlabels(1,2,3,100); -endchar; % end "j" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{k} -% The letter `k'. -% \begin{macrocode} -cmchar "IMAJ letter k"; -beginchar("k", 2sb#+hstretch*(x_height#+trijut#), - x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -%% stem -lft x1=lft x2=pcshiftx+trijut; -top y1=h; bot y2=-d; -%% top arm -z3=(x1,5/6h); -rt x5=w-pcshiftx; y5=2/3h; -x4=1/2[x3,x5]; top y4=h; -%% lower arm -x7=x5; bot y7=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_triserif(1,trijut); -draw_clubbase(1,2,1/3, clubjut, clubjut); -draw z3..z4{right}..z5; % upper arm -draw z3..{right}z7; % lower arm -ductus:=false; -penlabels(1,2,3,4,5,100); -endchar; % end "k" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{l} -% The letter `l'. -% \begin{macrocode} -cmchar "IMAJ letter l"; -beginchar("l", 2sb#+hstretch*(7/6x_height#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -lft x2=pcshiftx; y2=1/5h; -x1=x2+trijut; top y1=h; -rt x4=w-pcshiftx; y4=1/5h; -x3=1/2[x2,x4]; bot y3=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1{down}..z2..z3{right}..z4; -draw_triserif(1,trijut); -ductus:=false; -penlabels(1,2,3,4,100); -endchar; % end "l" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{m} -% The letter `m'. -% \begin{macrocode} -cmchar "IMAJ letter m"; -beginchar("m", 2sb#+hstretch*(5/3x_height#+trijut#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pickup quill; -%% left stem -lft x1=pcshiftx+trijut; top y1=h; -x2=x1; bot y2=0; -z1'=(rt x1, y1+h); z2'=(rt x2, y2-h); -%% right stem -rt x5=w-pcshiftx; y5=y1; -z6=(x5,0); -%% middle stem -z3=1/2[z1,z5]; z4=1/2[z2,z6]; -z3'=(rt x3, y3); z4'=(rt x4, y4); -n1 := x4-x2+3/2thick; % width of bowl -n2 := 2/3h; % height of bowl -%% left bowl -z7=(rt x4 - n1, h-n2); -obowl(7, n1, n2); -pth1 := obouter; pth2 := obinner; pth3 := obsecond; -z17tout = (z1'--z2') intersectionpoint subpath (3,4) of obouter; -z17tinn = (z1'--z2') intersectionpoint subpath (3,4) of obinner; -z17toth = (x2, y17tinn); -%% right bowl -z8=(rt x6 - n1, y7); -obowl(8, n1, n2); -pth5 := obouter; pth6 := obinner; pth7 := obsecond; -z18tout = pth5 intersectionpoint subpath (0,1) of pth1; -z18tinn = pth6 intersectionpoint subpath (0,1) of pth1; -z13 = directionpoint down of pth3; -z15 = directionpoint down of pth7; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % left half -draw_triserif(1,trijut); -draw_clubbase(1, 2, 1/3, clubjut, clubjut); -fill z17tout..z7minlo{pdir}..{down}(rt x13, y13)-- - (lft x13, y13){up}..z7minli{-pdir}..z17tinn--z17toth--cycle; -draw_tstem(13,4,srad); % right half -fill z18tout..z8minlo{pdir}..{down}(rt x15, y15)-- - (lft x15, y15){up}..z8minli{-pdir}..z18tinn--cycle; -draw_tstem(15,6,srad); -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,14,100); -endchar; % end "m" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{n} -% The letter `n'. This could be like a capital `N' or a lower-case `n'. -% I have chosen to do the first form. -% \begin{macrocode} -cmchar "IMAJ letter n"; -beginchar("n", 2sb#+hstretch*(7/6x_height#+trijut#), - x_height#, 1/2desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -%% left stem -lft x1=pcshiftx+trijut; top y1=h; -x2=x1; bot y2=-d; -%% right stem -rt x3=w-pcshiftx; y3=y1; -z4=(x3,0); -%% bar -z5=(x1,1/3h); z6=(x4,1/6h); -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % left stem -draw_triserif(1,trijut); -draw_clubbase(1, 2, 1/3, clubjut, clubjut); -draw_tstem(3,4,srad); % right stem -draw_clubbase(3, 4, 1/3, clubjut, clubjut); -draw z5--z6; % bar -ductus:=false; -penlabels(1,2,3,4,5,6,100); -endchar; % end "n" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{o} -% The letter `o'. -% \begin{macrocode} -cmchar "IMAJ letter o"; -beginchar("o", 2sb#+hstretch*(7/6x_height#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -lft x1=pcshiftx; rt x3=w-pcshiftx; y1=y3=h/2; -x2=x4=w/2; top y2=h+o; bot y4=-o; -%%ductus:=true; -if ductus: - pickup stylus; -fi -%%%draw z1..z2..z3..z4..cycle; -z5=(pcshiftx,-o); -obowl(5, w-2pcshiftx, h+2o); -fill obouter; unfill obinner; -ductus:=false; -penlabels(1,2,3,4,5,100); -endchar; % end "o" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{p} -% The letter `p'. -% \begin{macrocode} -cmchar "IMAJ letter p"; -beginchar("p", 2sb#+hstretch*(8/6x_height#+trijut#), - x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% stem -lft x1=lft x2=pcshiftx+trijut; -top y1=1/3h; bot y2=-d; -n1 := w - pcshiftx - lft x1; % width of bowl -n2 := h+1/4d; % height of bowl -z3=(lft x1, -1/4d); -obowl(3, n1, n2); -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_triserif(1,trijut); -draw_clubbase(1, 2, 1/3, clubjut, 0); -fill lft z1{up}..z3minlo{pdir}..z3maxro{-ppdir}..{-pdir}z3minro-- - z3minri{pdir}..z3maxri{ppdir}..z3minli{-pdir}..{down}rt z1-- - cycle; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,100); -endchar; % end "p" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{q} -% The letter `q'. -% \begin{macrocode} -cmchar "IMAJ letter q"; -beginchar("q", 2sb#+hstretch*(x_height#+1/2trijut#), - x_height#, 1/2desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% right stem -rt x1=w-pcshiftx-1/2trijut; top y1=h; -x2=x1; bot y2=-d; -z3=(pcshiftx,0); -n1 := w; % width of bowl -n2 := h; % height of bowl -obowl(3, n1, n2); -z10o = (rt z1--rt z2) intersectionpoint subpath (0,1) of obouter; -z10i = (lft z1--lft z2) intersectionpoint subpath (0,1) of obinner; -z20o = (rt z1--rt z2) intersectionpoint subpath (1,2) of obouter; -z20i = (lft z1--lft z2) intersectionpoint subpath (1,2) of obinner; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_triserif(1,trijut); -draw_clubbase(1, 2, 1/3, 0, clubjut); -fill z10o..z3minlo{-pdir}..z3maxlo{-ppdir}..z3minro{right}..z20o-- - z20i..z3minri{-pdir}..z3maxli{ppdir}..z3minli{pdir}..z10i-- - cycle; -ductus:=false; -penlabels(0,1,2,3,4,5,6,7,8,100); -endchar; % end "q" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{r} -% The letter `r'. -% \begin{macrocode} -cmchar "IMAJ letter r"; -beginchar("r", sb#+hstretch*(11/6x_height#+trijut#), - x_height#, 1/2desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% stem -lft x1=lft x2=pcshiftx+trijut; top y1=h; bot y2=-d; -n1 := w-pcshiftx; % width of bowl -n2 := 5/6h; % height of bowl -z3=(x1-1/2n1, h-n2); -obowl(3, n1, n2); -z10o=(x1,h); z10i=(x1, y10o-thin); -z20o=(x1,y3); z20i=(x20o, y20o+thin); -%% arm -x4=x1; bot y4=y3; -x5=x3maxro; top y5=0; -%%rt x6=w; y6=y4; -rt x6=w; y6=y2; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_triserif(1,trijut); -draw_clubbase(1, 2, 1/3, clubjut, 0); -fill z10o{right}..z3maxro{-ppdir}..{left}z20o-- - z20i{right}..z3maxri{ppdir}..{left}z10i--cycle; -%%draw z4{right}..z5{right}..{right}z6; % arm -draw z4{right}..{right}z6; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,100); -endchar; % end "r" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{s} -% The letter `s'. This is a `long' S. -% \begin{macrocode} -cmchar "IMAJ letter s"; -beginchar("s", 2sb#+hstretch*(x_height#+trijut#), - asc_height#, 0); -adjust_fit(0,0); -numeric n[]; -pcshiftx := sb; -pickup quill; -%% stem -lft x1=lft x2=pcshiftx+trijut; top y1=h/ascratio; bot y2=0; -n1 := w; % width of bowl -n2 := 2(h-y1); % height of bowl -z3=(lft x1, y1-1/2n2); -obowl(3, n1, n2); -z4=(2w,2h); -z10o = (z3--z4) intersectionpoint subpath (0,1) of obouter; -z10i = (z3--z4) intersectionpoint subpath (0,1) of obinner; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_triserif(1,trijut); -draw_clubbase(1, 2, 1/3, clubjut, clubjut); -fill rt z1{up}..z3minli{pdir}..z10i-- - z10o..z3minlo{-pdir}..{down}lft z1--cycle; -ductus:=false; -penlabels(1,2,3,4,5,6,7,11,17,26,27,28,100); -endchar; % end "s" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{t} -% The letter `t'. -% \begin{macrocode} -cmchar "IMAJ letter t"; -beginchar("t", 2sb#+hstretch*(4/3x_height#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% bar -lft x1 = pcshiftx; y1=h; rt x2=w-pcshiftx; y2=y1; -n1 := w; % width of bowl -n2 := h; % height of bowl -z3=(pcshiftx+thick,0); -obowl(3, n1, n2); -z5=(x1+w, 0); -z20o = (z1--z5) intersectionpoint subpath (1,2) of obouter; -z20i = (z1--z5) intersectionpoint subpath (1,2) of obinner; -z10o = (x3minlo, top y1); -z10i = (x3minlo, bot y1); -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2; % bar -draw_utriangle(1, thick); -draw_triangle(2, thick); -fill z10o{left}..z3maxlo{-ppdir}..z3minro{pdir}..z20o-- - z20i..z3minri{-pdir}..z3maxli{ppdir}..z10i{right}--cycle; -ductus:=false; -penlabels(1,2,3,4,5,6,11,12,100); -endchar; % end "t" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{u} -% The letter `u'. -% \begin{macrocode} -cmchar "IMAJ letter u"; -beginchar("u", 2sb#+hstretch*(7/6x_height#+1/2trijut#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% right stem -rt x1 = rt x2 = w-pcshiftx-1/2trijut; -y1=h; y2=0; -z1'=(x1-1/2thick,2h); z2'=(x1',-h); -%% bowl -n1 := w; % width of bowl -n2 := 4/3h; % height of bowl -z3=(pcshiftx,0); -obowl(3, n1, n2); -z4=(pcshiftx,h); z5=(w,y4); -z10o = (z4--z5) intersectionpoint subpath (3,4) of obouter; -z10i = (z4--z5) intersectionpoint subpath (3,4) of obinner; -z10'=1/2[z10o,z10i]; -z10=(x10i,y1); -z20o = (z1'--z2') intersectionpoint subpath (1,3) of obouter; -z20i = (z1'--z2') intersectionpoint subpath (1,3) of obinner; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_triserif(1,trijut); -draw_clubbase(1, 2, 1/3, 0, clubjut); -fill z10o..z3maxlo{-ppdir}..z3minro{pdir}..z20o-- - z20i..z3minri{-pdir}..z3maxli{ppdir}..z10i--cycle; -draw_triserif(10,trijut); % serif on bowl -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,11,16,100); -endchar; % end "u" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{v} -% The letter `v'. The right half of the `w' is used for the `v' (or vice-versa -% if you prefer). -% \begin{macrocode} -cmchar "IMAJ letter v"; -beginchar("v", 2sb#+hstretch*(x_height#+trijut#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -% right side of W -numeric midx; midx:= pcshiftx; -lft x1=midx+trijut; top y1=h; -x2=x1; y2=h/2; -rt x4=w-pcshiftx; y4=y2; -x3=0.5[x2,x4]; bot y3=0; -x5=x4-trijut; y5=y1; -%%ductus:=true; -if ductus: - pickup stylus; -fi -% draw the serifs, then the bowls -draw_triserif(1,trijut); -%%draw_triserif(5,trijut); -draw z1--z2{down}..z3{right}..z4{up}..z5; -ductus:=false; -penlabels(1,2,3,4,5,11,100); -endchar; % end "v" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{w} -% The letter `w'. This is a modern version as the font did not have a W. -% \begin{macrocode} -cmchar "IMAJ letter w"; -beginchar("w", 2sb#+hstretch*(5/3x_height#+trijut#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -% right side first -numeric midx; midx:= w/2-trijut; -lft x1=midx+trijut; top y1=h; -x2=x1; y2=h/2; -rt x4=w-pcshiftx; y4=y2; -x3=0.5[x2,x4]; bot y3=0; -x5=x4-trijut; y5=y1; -% left side -lft x6=pcshiftx+trijut; -top y6=h; -%%lft x7=pcshiftx; y7=y2; -x7=x6; y7=y2; -x8=0.5[x7,x1]; y8=y3; -% construction points -x15=0.5[x8,x1]; y15=y8; -z15'=z15 shifted (w*pdir); -x2'=x2; y2'=y15; -path p[]; -p1=z1--z2'; -p2=z15--z15'; -z9= p2 intersectionpoint p1; -pair vec[]; -p3=z6..z7{down}..{right}z8; -vec3 = direction 0 of p3; -z16=z6 shifted vec3; -%%ductus:=true; -if ductus: - pickup stylus; -fi -% draw the serifs, then the bowls -draw_triserif(1,trijut); % right half -draw z1--z2{down}..z3{right}..z4{up}..z5; -draw_triserif(6,trijut); % left half -draw z6--z7{down}..z8{right}..z9; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,11,16,100); -endchar; % end "w" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{x} -% The letter `x'. -% \begin{macrocode} -cmchar "IMAJ letter x"; -beginchar("x", 2sb#+hstretch*(16/6x_height#), - x_height#, desc_depth#); -adjust_fit(0,0); -numeric n[]; -pcshiftx := sb; -pickup quill; -n1 := w-2pcshiftx; % total width -n2 := thick; % triangle side -%% diag top left to bottom right -lft x1=pcshiftx; bot y1=2/3h; -x2=pcshiftx+1/7n1; top y2=h; -x5=pcshiftx+11/14n1; bot y5=-1/4d; -rt x6=pcshiftx+n1; top y6=1/6h; -%% diag bottom left to top right -x10=x1; bot y10=-d; -x50=pcshiftx+9/14n1; top y50=h; -rt x60=x5; bot y60=2/3h; -x40=pcshiftx+8/14n1; y40=h; -%% triangle -z100=(lft x10, bot y10); -x101=x100+n2; z101=whatever[z100,z40]; -x102=x100; y102=1/2[y100,y101]+n2; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1..z2{right}..z5{right}..z6; % top left to bottom right -draw z10{z40-z10}..z50{right}..z60; % bottom left to top right -fill z100--z101--z102--cycle; % triangle -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,100); -endchar; % end "x" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{y} -% The letter `y'. This looks like a curly capital F. -% \begin{macrocode} -cmchar "IMAJ letter y"; -beginchar("y", 2sb#+hstretch*(x_height#), - x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -%% main stroke -rt x1=w-pcshiftx; top y1=h; -lft x3=pcshiftx; y3=1/2h; -x4=x1; y4=0; -x2=2/3[x3,x1]; bot y2=h; -lft x5=1/2[x3,x4]; bot y5=-d; -%% arm -z101=1/2[z3,z4]; -z103=(x1,y3); -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1..z2{left}..z3{down}..z4{down}..z5; % main stroke -draw z101..z103{right}; % arm -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,10,100); -endchar; % end "y" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{z} -% The letter `z'. -% \begin{macrocode} -cmchar "IMAJ letter z"; -beginchar("z", 2sb#+hstretch*(9/6x_height#), - x_height#, 0); -adjust_fit(0,0); -numeric n[]; -pcshiftx := sb; -pickup quill; -%% top bar -n10 := w-2pcshiftx; % letter width -lft x1=pcshiftx; y1=h; -rt x2=pcshiftx+2/3n10; y2=y1; -%% diagonal -x3=x1; bot y3=0; -%% bowl -n1 := 2/3n10; % width of bowl -n2 := 5/6h; % height of bowl -z4=(w-pcshiftx-n1, 0); -obowl(4, n1, n2); -z5'=(0,1/4n2); z6'=(x4obc,y5'); -z20o = (z5'--z6') intersectionpoint obouter; -z20i = (z5'--z6') intersectionpoint obinner; -z7'=(0,2/3n2); z8'=(x6',y7'); -z10o = whatever[lft z3, lft z2] = whatever[z7',z8']; -z10i = whatever[rt z3, rt z2] = whatever[z7',z8']; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2; % top bar -draw_utriangle(1,thick); -draw z2--z3; % diagonal -fill z20o..z4minro{pdir}..z4maxro{ppdir}..z4minlo{-pdir}..{z3-z2}z10o-- - z10i{z2-z3}..z4minli{pdir}..z4maxri{-ppdir}..z4minri{-pdir}..z20i-- - cycle; -ductus:=false; -penlabels(1,2,3,4,5,6,10o,10i,20o,20i,100); -endchar; % end "z" - -% \end{macrocode} -% \end{routine} -% -% -% The end of this file -% \begin{macrocode} -% -% \end{macrocode} -% -% -% \subsection{The code for capital letters} -% -% \thisfont{} `capitals' were drawn with the same pen as for the minuscules, -% and the letters were merely larger versions of the minuscules. -% -% \begin{macrocode} -%<*maj> -% IMAJU.MF Program file for Insular Majuscule `capitals' -% - -% \end{macrocode} -% -% \begin{routine}{A} -% The letter `A'. -% \begin{macrocode} -cmchar "IMAJ letter A"; -beginchar("A", 2sb#+caprat*hstretch*(5/3x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pickup quill; -%% left bowl -n1 := w-2pcshiftx; % actual letter width -n2 := 7/10n1; % width of left bowl -z1=(pcshiftx,0); -obowl(1, n2, h); -pth1:=obouter; pth2:=obinner; -pth10:=obfirst; pth20:=obsecond; -%% right bowl -n3:=x1+n2-16/12thick; % leftmost point of "stem" -n4:=2(n1-n3); % total width of right stem bowl -z2=(n3,0); -offsetbowl(2, n4, h, 6/12, 1/2); -pth3:=obouter; pth4:=obinner; -pth30:=obfirst; pth40:=obsecond; -%% intersect left bowl with outer of right bowl -z1tout = (subpath (0,1) of pth1) intersectionpoint (subpath (4,2) of pth3); -z1tinn = (subpath (0,1) of pth2) intersectionpoint (subpath (4,2) of pth3); -z1lout = (subpath (1,2) of pth1) intersectionpoint (subpath (4,2) of pth3); -z1linn = (subpath (1,2) of pth2) intersectionpoint (subpath (4,2) of pth3); - -%%ductus:=true; -if ductus: - pickup stylus; - % draw the control paths - draw pth10; draw pth20; - draw pth30; draw pth40; -else: - %% draw left bowl - fill z1lout..z1minro{-pdir}..z1maxlo{ppdir}..z1minlo{pdir}..z1tout-- - z1tinn..z1minli{-pdir}..z1maxli{-ppdir}..z1minri{pdir}..z1linn-- - cycle; - %% draw right stem/bowl - fill z2minro{-pdir}..z2maxlo{ppdir}..{pdir}z2minlo-- - z2minli{-pdir}..z2maxli{-ppdir}..{pdir}z2minri--cycle; -fi -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,100); -endchar; % end "A" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{B} -% The letter `B'. -% \begin{macrocode} -cmchar "IMAJ letter B"; -beginchar("B", 2sb#+caprat*hstretch*(7/6x_height#), - caprat*asc_height#, 0); -adjust_fit(0,0); -numeric n[]; -pcshiftx := sb; -pickup quill; -n1:=w-2pcshiftx; % actual letter width -n2:=h/ascratio; % top of bowl -z1=(pcshiftx, -o); -obowl(1, n1, n2+o); -%% draw bowl -fill obouter; unfill obinner; -%% top of stem -x2=x1wt+1/3n1; top y2=h; -tangentpoint(2, subpath (3,4) of obsecond); -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z2tan--z2; -draw_triserif(2,trijut); -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,100); -endchar; % end "B" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{C} -% The letter `C'. -% \begin{macrocode} -cmchar "IMAJ letter C"; -beginchar("C", 2sb#+caprat*hstretch*(5/6x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -numeric n[]; -pcshiftx := sb; -pickup quill; -n1:=w-2pcshiftx; % actual letter width -n2:=6/5w-2pcshiftx; % width of full bowl -z1=(pcshiftx,0); -obowl(1, n2, h); -z3=(x1+n1, h); % top RH corner -z4=(x1obc,1/6h); z5=(3/2w,y4); % for horizontal line -%% top intersection points -z10i = (z1obc--z3) intersectionpoint obinner; -z10o = (z1obc--z3) intersectionpoint obouter; -%% bottom intersection points -z20i = (z4--z5) intersectionpoint obinner; -z20o = (z4--z5) intersectionpoint obouter; -%%ductus:=true; -if ductus: - pickup stylus; -fi -fill z20o..z1minro{-pdir}..z1maxlo{ppdir}..z1minlo{pdir}..z10o-- - z10i..z1minli{-pdir}..z1maxli{-ppdir}..z1minri{pdir}..z20i-- - cycle; -ductus:=false; -penlabels(1,2,3,4,5,6,16,17,18,100); -endchar; % end "C" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{D} -% The letter `D'. -% \begin{macrocode} -cmchar "IMAJ letter D"; -beginchar("D", 2sb#+caprat*hstretch*(x_height#+1/2thick#), - caprat*x_height#, 0); -adjust_fit(0,0); -numeric n[]; -pcshiftx := sb; -pickup quill; -%% bowl -n1 := w-2pcshiftx; % actual letter width -n2 := n1-1/2thick; % width of bowl -n3 := h; % top of bowl -z1=(w-pcshiftx-n2, 0); -obowl(1, n2, n3); -%% top bar -lft x3=pcshiftx; y3=h; -z3i=(pcshiftx, y3-1/2thin); z3o=(x3i,y3i+thin); -z2i=(x1nh,y3i); -z2o=(x2i,y3o); -%%ductus:=true; -if ductus: - pickup stylus; -fi -fill z1minlo{-pdir}..z1maxlo{-ppdir}..z1minro{pdir}..z1maxro{ppdir}..{left}z2o-- - z3o--z3i-- - z2i{right}..z1maxri{-ppdir}..z1minri{-pdir}..z1maxli{ppdir}..{pdir}z1minli-- - cycle; -draw_utriangle(3, thick); -ductus:=false; -penlabels(0,1,2,3,4,5,6,7,8,100); -endchar; % end "D" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{E} -% The letter `E'. -% \begin{macrocode} -cmchar "IMAJ letter E"; -beginchar("E", sb#+caprat*hstretch*(x_height#+3/2thick#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -n1 := w-pcshiftx; % actual letter width -n2 := n1-3/2thick; % width of bowl -z1=(pcshiftx,0); -obowl(1, n2, h); -%% for crossbar -z2=(0,2/3h); rt x3=w; y3=y2; z3'=(x1obc,y2); -z4 = (z2--z3') intersectionpoint subpath (3,4) of obsecond; -z10tout = (z3'--z3) intersectionpoint subpath (0,3) of obouter; -z10tinn = (z3'--z3) intersectionpoint subpath (0,3) of obinner; -%% bottom cutoff -z5=(x1obc,1/6h); z6=(w,y5); -z20bout = (z5--z6) intersectionpoint subpath (0,3) of obouter; -z20binn = (z5--z6) intersectionpoint subpath (0,3) of obinner; -%%ductus:=true; -if ductus: - pickup stylus; -fi -fill z20bout..z1minro{-pdir}..z1maxlo{ppdir}..z1minlo{pdir}..z10tout-- - z10tinn..z1minli{-pdir}..z1maxli{-ppdir}..z1minri{pdir}..z20binn-- - cycle; -draw z4--z3; % crossbar & decoration -draw_triangle(3,thick); -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,100); -endchar; % end "E" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{F} -% The letter `F'. -% \begin{macrocode} -cmchar "IMAJ letter F"; -beginchar("F", 2sb#+caprat*hstretch*(x_height#+trijut#), - caprat*(x_height#), caprat*desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -%% stem -lft x1=lft x2=pcshiftx+trijut; -top y1=h; bot y2=-d; -%% bottom bar -z4=(rt x1,-thin); rt x6=w-pcshiftx; y6=y4+2thin; z5=1/2[z4,z6]; -%% top bar -z7=(rt x1, bot y1); -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_triserif(1,trijut); -draw_clubbase(1, 2, 1/3, clubjut, clubjut); -draw z4{dir(45)}..z5{right}..z6{dir(45)}; % bottom bar -draw_flick(7, 2thin, thin, (w-pcshiftx-x7+1/2thick)); % top bar -ductus:=false; -penlabels(1,2,3,4,5,6,7,100); -endchar; % end "F" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{G} -% The letter `G'. -% \begin{macrocode} -cmchar "IMAJ letter G"; -beginchar("G", 2sb#+caprat*hstretch*(5/3x_height#), - caprat*x_height#, caprat*desc_depth#); -adjust_fit(0,0); -path pth[]; -pair vec[]; -pcshiftx := sb; -pickup quill; -%% top bar -lft x1=pcshiftx; y1=h; rt x2=w-pcshiftx; y2=h; -%% curves -z3=2/5[z1,z2]; -x5=4/5[x1,x2]; y5=-1/2d; -x4=(x3-thick); y4=1/2[y5,y3]; -x7=1/2[x1,x4]; y7=y5; -x6=2/3[x7,x5]; bot y6=-d; -pth1 := z3..z4{down}..z5; -pth2 := z5--z6{left}..z7; -%% diagonal to close bottom bowl -vec1 := direction 2 of pth2; -vec2 := (z5-z6); -z7'=(lft x7, bot y7); z7''=(rt x7, y7); -pickup thickstylus; -lft x8 = x7'; bot y8 = y7'; -z9' = z8 shifted 2vec2; -z9 = (z8--z9') intersectionpoint pth1; -z7''' = z7'' shifted 2vec1; -z8' = whatever[z7'',z7'''] = whatever[z8,z9']; -%%ductus:=true; -if ductus: - pickup stylus; - draw z1--z2; % top bar - draw pth1; draw pth2; % curves - draw rt z8--z9; % diagonal -else: - pickup quill; - draw z1--z2; % top bar - draw_triangle(2,thick); - draw_utriangle(1,thick); - draw pth1; draw pth2; % curves - pickup thickstylus; - draw rt z8--z9; % diagonal - fill z7''--z8'--z8--cycle; -fi -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,100); -endchar; % end "G" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{H} -% The letter `H'. -% \begin{macrocode} -cmchar "IMAJ letter H"; -beginchar("H", 2sb#+caprat*hstretch*(x_height#+trijut#), - caprat*asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -numeric n[]; -%% stem -lft x1=lft x2=pcshiftx+trijut; -top y1=h; bot y2=0; -%% bowl -rt x3 = lft x1; y3=0; -n1 := w-pcshiftx-x3; % bowl width -n2 := h/ascratio; % bowl height -obowl(3, n1, n2); -z1'=(rt x1, y1); z2'=(x1',y2); %% right hand side of stem -z10tout = (z1'--z2') intersectionpoint subpath (3,4) of obouter; -z10tinn = (z1'--z2') intersectionpoint subpath (3,4) of obinner; -z10toth = (x1, y10tinn); % avoids 180 turn in path -z6 = directionpoint down of obsecond; % top of right leg -z6i=(lft x6, bot y6); z6o=(rt x6, bot y6); -z8=(x6,0); -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_triserif(1,trijut); -draw_clubbase(1, 2, 1/3, clubjut, clubjut); -draw_tstem(6,8,srad); % right leg -draw_clubbase(6, 8, 1/3, 0, 1/2clubjut); -fill z6i{up}..z3minli{-pdir}..z10tinn--z10toth-- % top of bowl - z10tout..z3minlo{pdir}..{down}z6o--cycle; -ductus:=false; -penlabels(1,2,3,4,5,6,100); -endchar; % end "H" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{I} -% The letter `I'. -% \begin{macrocode} -cmchar "IMAJ letter I"; -beginchar("I", 2sb#+caprat*hstretch*(thick#+trijut#+jut#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -lft x1=lft x2=pcshiftx+trijut; -top y1=h; bot y2=0; -%%ductus:=true; -draw_tstem(1,2,srad); -draw_triserif(1,trijut); -draw_clubbase(1, 2, 1/3, clubjut, clubjut); -ductus:=false; -penlabels(1,2,100); -endchar; % end "I" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{J} -% The letter `J'. This letter was not in the script, it being a later invention. -% \begin{macrocode} -cmchar "IMAJ letter J"; -beginchar("J", sb#+caprat*hstretch*(2/3x_height#), - caprat*x_height#, caprat*desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% stem -rt x1 = w-pcshiftx; top y1 = h; -x2=x1; y2=-1/2d; -%% bottom hook -lft x3 = 0; bot y3 = -d; -%% triangle -n1 := thick; % side length -z6=(lft x3, bot y3); -x7=x6+n1; z7=whatever[z6,z2]; -z8=1/2[z6,z7]; -z9=(x8, y8+0.9n1); -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2; % stem -draw_triserif(1,trijut); -draw z2--z3; % hook -fill z6--z7--z9--cycle; % triangle -ductus:=false; -penlabels(1,2,3,100); -endchar; % end "J" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{K} -% The letter `K'. -% \begin{macrocode} -cmchar "IMAJ letter K"; -beginchar("K", 2sb#+caprat*hstretch*(x_height#+trijut#), - caprat*x_height#, caprat*desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -%% stem -lft x1=lft x2=pcshiftx+trijut; -top y1=h; bot y2=-d; -%% top arm -z3=(x1,5/6h); -rt x5=w-pcshiftx; y5=2/3h; -x4=1/2[x3,x5]; top y4=h; -%% lower arm -x7=x5; bot y7=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_triserif(1,trijut); -draw_clubbase(1,2,1/3, clubjut, clubjut); -draw z3..z4{right}..z5; % upper arm -draw z3..{right}z7; % lower arm -ductus:=false; -penlabels(1,2,3,4,5,100); -endchar; % end "K" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{L} -% The letter `L'. -% \begin{macrocode} -cmchar "IMAJ letter L"; -beginchar("L", 2sb#+caprat*hstretch*(7/6x_height#), - caprat*asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -lft x2=pcshiftx; y2=1/5h; -x1=x2+trijut; top y1=h; -rt x4=w-pcshiftx; y4=1/5h; -x3=1/2[x2,x4]; bot y3=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1{down}..z2..z3{right}..z4; -draw_triserif(1,trijut); -ductus:=false; -penlabels(1,2,3,4,100); -endchar; % end "L" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{M} -% The letter `M'. -% \begin{macrocode} -cmchar "IMAJ letter M"; -beginchar("M", 2sb#+caprat*hstretch*(5/3x_height#+trijut#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pickup quill; -%% left stem -lft x1=pcshiftx+trijut; top y1=h; -x2=x1; bot y2=0; -z1'=(rt x1, y1+h); z2'=(rt x2, y2-h); -%% right stem -rt x5=w-pcshiftx; y5=y1; -z6=(x5,0); -%% middle stem -z3=1/2[z1,z5]; z4=1/2[z2,z6]; -z3'=(rt x3, y3); z4'=(rt x4, y4); -n1 := x4-x2+3/2thick; % width of bowl -n2 := 2/3h; % height of bowl -%% left bowl -z7=(rt x4 - n1, h-n2); -obowl(7, n1, n2); -pth1 := obouter; pth2 := obinner; pth3 := obsecond; -z17tout = (z1'--z2') intersectionpoint subpath (3,4) of obouter; -z17tinn = (z1'--z2') intersectionpoint subpath (3,4) of obinner; -z17toth = (x2, y17tinn); -%% right bowl -z8=(rt x6 - n1, y7); -obowl(8, n1, n2); -pth5 := obouter; pth6 := obinner; pth7 := obsecond; -z18tout = pth5 intersectionpoint subpath (0,1) of pth1; -z18tinn = pth6 intersectionpoint subpath (0,1) of pth1; -z13 = directionpoint down of pth3; -z15 = directionpoint down of pth7; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % left half -draw_triserif(1,trijut); -draw_clubbase(1, 2, 1/3, clubjut, clubjut); -fill z17tout..z7minlo{pdir}..{down}(rt x13, y13)-- - (lft x13, y13){up}..z7minli{-pdir}..z17tinn--z17toth--cycle; -draw_tstem(13,4,srad); % right half -fill z18tout..z8minlo{pdir}..{down}(rt x15, y15)-- - (lft x15, y15){up}..z8minli{-pdir}..z18tinn--cycle; -draw_tstem(15,6,srad); -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,14,100); -endchar; % end "M" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{N} -% The letter `n'. This could be like a capital `N' or a lower-case `n'. -% I have chosen to do the first form. -% \begin{macrocode} -cmchar "IMAJ letter N"; -beginchar("N", 2sb#+caprat*hstretch*(7/6x_height#+trijut#), - caprat*x_height#, caprat*(1/2desc_depth#)); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -%% left stem -lft x1=pcshiftx+trijut; top y1=h; -x2=x1; bot y2=-d; -%% right stem -rt x3=w-pcshiftx; y3=y1; -z4=(x3,0); -%% bar -z5=(x1,1/3h); z6=(x4,1/6h); -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % left stem -draw_triserif(1,trijut); -draw_clubbase(1, 2, 1/3, clubjut, clubjut); -draw_tstem(3,4,srad); % right stem -draw_clubbase(3, 4, 1/3, clubjut, clubjut); -draw z5--z6; % bar -ductus:=false; -penlabels(1,2,3,4,5,6,100); -endchar; % end "N" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{O} -% The letter `O'. -% \begin{macrocode} -cmchar "IMAJ letter O"; -beginchar("O", 2sb#+caprat*hstretch*(7/6x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -z5=(pcshiftx,-o); -obowl(5, w-2pcshiftx, h+2o); -%%ductus:=true; -if ductus: - pickup stylus; -fi -fill obouter; unfill obinner; -ductus:=false; -penlabels(1,2,3,4,5,100); -endchar; % end "O" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{P} -% The letter `P'. -% \begin{macrocode} -cmchar "IMAJ letter P"; -beginchar("P", 2sb#+caprat*hstretch*(8/6x_height#+trijut#), - caprat*x_height#, caprat*desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% stem -lft x1=lft x2=pcshiftx+trijut; -top y1=1/3h; bot y2=-d; -n1 := w - pcshiftx - lft x1; % width of bowl -n2 := h+1/4d; % height of bowl -z3=(lft x1, -1/4d); -obowl(3, n1, n2); -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_triserif(1,trijut); -draw_clubbase(1, 2, 1/3, clubjut, 0); -fill lft z1{up}..z3minlo{pdir}..z3maxro{-ppdir}..{-pdir}z3minro-- - z3minri{pdir}..z3maxri{ppdir}..z3minli{-pdir}..{down}rt z1-- - cycle; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,100); -endchar; % end "P" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{Q} -% The letter `Q'. -% \begin{macrocode} -cmchar "IMAJ letter Q"; -beginchar("Q", 2sb#+caprat*hstretch*(x_height#+1/2trijut#), - caprat*x_height#, caprat*(1/2desc_depth#)); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% right stem -rt x1=w-pcshiftx-1/2trijut; top y1=h; -x2=x1; bot y2=-d; -z3=(pcshiftx,0); -n1 := w; % width of bowl -n2 := h; % height of bowl -obowl(3, n1, n2); -z10o = (rt z1--rt z2) intersectionpoint subpath (0,1) of obouter; -z10i = (lft z1--lft z2) intersectionpoint subpath (0,1) of obinner; -z20o = (rt z1--rt z2) intersectionpoint subpath (1,2) of obouter; -z20i = (lft z1--lft z2) intersectionpoint subpath (1,2) of obinner; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_triserif(1,trijut); -draw_clubbase(1, 2, 1/3, 0, clubjut); -fill z10o..z3minlo{-pdir}..z3maxlo{-ppdir}..z3minro{right}..z20o-- - z20i..z3minri{-pdir}..z3maxli{ppdir}..z3minli{pdir}..z10i-- - cycle; -ductus:=false; -penlabels(0,1,2,3,4,5,6,7,8,100); -endchar; % end "Q" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{R} -% The letter `R'. -% \begin{macrocode} -cmchar "IMAJ letter R"; -beginchar("R", sb#+caprat*hstretch*(11/6x_height#+trijut#), - caprat*x_height#, caprat*(1/2desc_depth#)); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% stem -lft x1=lft x2=pcshiftx+trijut; top y1=h; bot y2=-d; -n1 := w-pcshiftx; % width of bowl -n2 := 5/6h; % height of bowl -z3=(x1-1/2n1, h-n2); -obowl(3, n1, n2); -z10o=(x1,h); z10i=(x1, y10o-thin); -z20o=(x1,y3); z20i=(x20o, y20o+thin); -%% arm -x4=x1; bot y4=y3; -x5=x3maxro; top y5=0; -%%rt x6=w; y6=y4; -rt x6=w; y6=y2; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_triserif(1,trijut); -draw_clubbase(1, 2, 1/3, clubjut, 0); -fill z10o{right}..z3maxro{-ppdir}..{left}z20o-- - z20i{right}..z3maxri{ppdir}..{left}z10i--cycle; -%%draw z4{right}..z5{right}..{right}z6; % arm -draw z4{right}..{right}z6; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,100); -endchar; % end "R" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{S} -% The letter `S'. This is a `long' S. -% \begin{macrocode} -cmchar "IMAJ letter S"; -beginchar("S", 2sb#+caprat*hstretch*(x_height#+trijut#), - caprat*asc_height#, 0); -adjust_fit(0,0); -numeric n[]; -pcshiftx := sb; -pickup quill; -%% stem -lft x1=lft x2=pcshiftx+trijut; top y1=h/ascratio; bot y2=0; -n1 := w; % width of bowl -n2 := 2(h-y1); % height of bowl -z3=(lft x1, y1-1/2n2); -obowl(3, n1, n2); -z4=(2w,2h); -z10o = (z3--z4) intersectionpoint subpath (0,1) of obouter; -z10i = (z3--z4) intersectionpoint subpath (0,1) of obinner; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_triserif(1,trijut); -draw_clubbase(1, 2, 1/3, clubjut, clubjut); -fill rt z1{up}..z3minli{pdir}..z10i-- - z10o..z3minlo{-pdir}..{down}lft z1--cycle; -ductus:=false; -penlabels(1,2,3,4,5,6,7,11,17,26,27,28,100); -endchar; % end "S" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{T} -% The letter `T'. -% \begin{macrocode} -cmchar "IMAJ letter T"; -beginchar("T", 2sb#+caprat*hstretch*(4/3x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% bar -lft x1 = pcshiftx; y1=h; rt x2=w-pcshiftx; y2=y1; -n1 := w; % width of bowl -n2 := h; % height of bowl -z3=(pcshiftx+thick,0); -obowl(3, n1, n2); -z5=(x1+w, 0); -z20o = (z1--z5) intersectionpoint subpath (1,2) of obouter; -z20i = (z1--z5) intersectionpoint subpath (1,2) of obinner; -z10o = (x3minlo, top y1); -z10i = (x3minlo, bot y1); -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2; % bar -draw_utriangle(1, thick); -draw_triangle(2, thick); -fill z10o{left}..z3maxlo{-ppdir}..z3minro{pdir}..z20o-- - z20i..z3minri{-pdir}..z3maxli{ppdir}..z10i{right}-- - cycle; -ductus:=false; -penlabels(1,2,3,4,5,6,11,12,100); -endchar; % end "T" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{U} -% The letter `U'. -% \begin{macrocode} -cmchar "IMAJ letter U"; -beginchar("U", 2sb#+caprat*hstretch*(7/6x_height#+1/2trijut#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% right stem -rt x1 = rt x2 = w-pcshiftx-1/2trijut; -y1=h; y2=0; -z1'=(x1-1/2thick,2h); z2'=(x1',-h); -%% bowl -n1 := w; % width of bowl -n2 := 4/3h; % height of bowl -z3=(pcshiftx,0); -obowl(3, n1, n2); -z4=(pcshiftx,h); z5=(w,y4); -z10o = (z4--z5) intersectionpoint subpath (3,4) of obouter; -z10i = (z4--z5) intersectionpoint subpath (3,4) of obinner; -z10'=1/2[z10o,z10i]; -z10=(x10i,y1); -z20o = (z1'--z2') intersectionpoint subpath (1,3) of obouter; -z20i = (z1'--z2') intersectionpoint subpath (1,3) of obinner; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_triserif(1,trijut); -draw_clubbase(1, 2, 1/3, 0, clubjut); -fill z10o..z3maxlo{-ppdir}..z3minro{pdir}..z20o-- - z20i..z3minri{-pdir}..z3maxli{ppdir}..z10i--cycle; -draw_triserif(10,trijut); % serif on bowl -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,11,16,100); -endchar; % end "U" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{V} -% The letter `V'. The right half of the `w' is used for the `v' (or vice-versa -% if you prefer). -% \begin{macrocode} -cmchar "IMAJ letter V"; -beginchar("V", 2sb#+caprat*hstretch*(x_height#+trijut#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -% right side of W -numeric midx; midx:= pcshiftx; -lft x1=midx+trijut; top y1=h; -x2=x1; y2=h/2; -rt x4=w-pcshiftx; y4=y2; -x3=0.5[x2,x4]; bot y3=0; -x5=x4-trijut; y5=y1; -%%ductus:=true; -if ductus: - pickup stylus; -fi -% draw the serifs, then the bowls -draw_triserif(1,trijut); -%%draw_triserif(5,trijut); -draw z1--z2{down}..z3{right}..z4{up}..z5; -ductus:=false; -penlabels(1,2,3,4,5,11,100); -endchar; % end "V" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{W} -% The letter `W'. This is a modern version as the font did not have a W. -% \begin{macrocode} -cmchar "IMAJ letter W"; -beginchar("W", 2sb#+caprat*hstretch*(5/3x_height#+trijut#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -% right side first -numeric midx; midx:= w/2-trijut; -lft x1=midx+trijut; top y1=h; -x2=x1; y2=h/2; -rt x4=w-pcshiftx; y4=y2; -x3=0.5[x2,x4]; bot y3=0; -x5=x4-trijut; y5=y1; -% left side -lft x6=pcshiftx+trijut; -top y6=h; -%%lft x7=pcshiftx; y7=y2; -x7=x6; y7=y2; -x8=0.5[x7,x1]; y8=y3; -% construction points -x15=0.5[x8,x1]; y15=y8; -z15'=z15 shifted (w*pdir); -x2'=x2; y2'=y15; -path p[]; -p1=z1--z2'; -p2=z15--z15'; -z9= p2 intersectionpoint p1; -pair vec[]; -p3=z6..z7{down}..{right}z8; -vec3 = direction 0 of p3; -z16=z6 shifted vec3; -%%ductus:=true; -if ductus: - pickup stylus; -fi -% draw the serifs, then the bowls -draw_triserif(1,trijut); % right half -draw z1--z2{down}..z3{right}..z4{up}..z5; -draw_triserif(6,trijut); % left half -draw z6--z7{down}..z8{right}..z9; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,11,16,100); -endchar; % end "W" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{X} -% The letter `X'. -% \begin{macrocode} -cmchar "IMAJ letter X"; -beginchar("X", 2sb#+caprat*hstretch*(16/6x_height#), - caprat*x_height#, caprat*desc_depth#); -adjust_fit(0,0); -numeric n[]; -pcshiftx := sb; -pickup quill; -n1 := w-2pcshiftx; % total width -n2 := thick; % triangle side -%% diag top left to bottom right -lft x1=pcshiftx; bot y1=2/3h; -x2=pcshiftx+1/7n1; top y2=h; -x5=pcshiftx+11/14n1; bot y5=-1/4d; -rt x6=pcshiftx+n1; top y6=1/6h; -%% diag bottom left to top right -x10=x1; bot y10=-d; -x50=pcshiftx+9/14n1; top y50=h; -rt x60=x5; bot y60=2/3h; -x40=pcshiftx+8/14n1; y40=h; -%% triangle -z100=(lft x10, bot y10); -x101=x100+n2; z101=whatever[z100,z40]; -x102=x100; y102=1/2[y100,y101]+n2; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1..z2{right}..z5{right}..z6; % top left to bottom right -draw z10{z40-z10}..z50{right}..z60; % bottom left to top right -fill z100--z101--z102--cycle; % triangle -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,100); -endchar; % end "X" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{Y} -% The letter `Y'. This looks like a curly capital F. -% \begin{macrocode} -cmchar "IMAJ letter Y"; -beginchar("Y", 2sb#+caprat*hstretch*(x_height#), - caprat*x_height#, caprat*desc_depth#); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -%% main stroke -rt x1=w-pcshiftx; top y1=h; -lft x3=pcshiftx; y3=1/2h; -x4=x1; y4=0; -x2=2/3[x3,x1]; bot y2=h; -lft x5=1/2[x3,x4]; bot y5=-d; -%% arm -z101=1/2[z3,z4]; -z103=(x1,y3); -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1..z2{left}..z3{down}..z4{down}..z5; % main stroke -draw z101..z103{right}; % arm -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,10,100); -endchar; % end "Y" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{Z} -% The letter `Z'. -% \begin{macrocode} -cmchar "IMAJ letter Z"; -beginchar("Z", 2sb#+caprat*hstretch*(9/6x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -numeric n[]; -pcshiftx := sb; -pickup quill; -%% top bar -n10 := w-2pcshiftx; % letter width -lft x1=pcshiftx; y1=h; -rt x2=pcshiftx+2/3n10; y2=y1; -%% diagonal -x3=x1; bot y3=0; -%% bowl -n1 := 2/3n10; % width of bowl -n2 := 5/6h; % height of bowl -z4=(w-pcshiftx-n1, 0); -obowl(4, n1, n2); -z5'=(0,1/4n2); z6'=(x4obc,y5'); -z20o = (z5'--z6') intersectionpoint obouter; -z20i = (z5'--z6') intersectionpoint obinner; -z7'=(0,2/3n2); z8'=(x6',y7'); -z10o = whatever[lft z3, lft z2] = whatever[z7',z8']; -z10i = whatever[rt z3, rt z2] = whatever[z7',z8']; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2; % top bar -draw_utriangle(1,thick); -draw z2--z3; % diagonal -fill z20o..z4minro{pdir}..z4maxro{ppdir}..z4minlo{-pdir}..{z3-z2}z10o-- - z10i{z2-z3}..z4minli{pdir}..z4maxri{-ppdir}..z4minri{-pdir}..z20i-- - cycle; -ductus:=false; -penlabels(1,2,3,4,5,6,10o,10i,20o,20i,100); -endchar; % end "Z" - -% \end{macrocode} -% \end{routine} -% -% -% -% The end of this file -% \begin{macrocode} -% -% \end{macrocode} -% -% -% -% \subsection{The punctuation file} -% -% The main punctuation marks are defined in this file. -% -% \begin{macrocode} -%<*punct> -% IMAJPUNCT.MF This file contains punctuation marks - -% \end{macrocode} -% -% -% \begin{routine}{!} -% The `!' character, which had not been invented at this time. -% \begin{macrocode} - -cmchar "Exclamation mark"; -beginchar("!", 2sb#+hstretch*(thick#+trijut#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -z1=(w/2,h); -z3=(x1, 1/2dot_size); -z2=(x1, y3+3/2dot_size); -draw z1--z2; -draw_pdot(3,dot_size); -penlabels(1,2,3); - -endchar; % end of "!" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{?} -% The `?' character, which had not been invented at this time. -% \begin{macrocode} - -cmchar "Question mark"; -beginchar("?", 2sb#+hstretch*(x_height#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pickup quill; -n1 := w-2pcshiftx; % actual character width -n2 := 1/3h; % height of top bowl -n3 := n2; % height of bottom bowl -%% top bowl -z1=(pcshiftx, h-n2); -obowl(1, n1, n2); -pth1 := obouter; -%% bottom bowl -z2=(x1,y1-n3); -obowl(2, n1, n3); -pth2 := obouter; -%% stem and dot -lft x4 = x1 + 4/4thick; -z5=(x4,1/2dot_size); -y4=y5+3/2dot_size; -z4o=(lft x4, y4); z4i=(rt x4, y4); -%%ductus:= true; -if ductus: - pickup stylus; - draw pth1; draw pth2; - draw z2wt--z4; - draw_pdot(5, dot_size); -else: - fill z1maxlo{ppdir}..z1minlo{pdir}..z1maxro{-ppdir}.. -%% z1minro..z2maxli{-ppdir}.. - z2minli.. - {down}z4i--z4o{up}.. - z2minlo.. -%% z1minri..z1maxri{ppdir}.. - z1maxri{ppdir}..z1minli{-pdir}..z1maxli{-ppdir}--cycle; - draw_pdot(5, dot_size); -fi -penlabels(1,2,3,4,5); -endchar; % end of "?" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{,} -% The `,' character. -% \begin{macrocode} - -cmchar "Comma"; -beginchar(",",2sb#+hstretch*(comma_width#+dot_size#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb; -x1=w-pcshiftx-(0.5hstretch*dot_size); y1=h/2; -draw_pcomma(1,dot_size,comma_width); -penlabels(1); -endchar; % end of "," - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{.} -% The `.' character. -% \begin{macrocode} - -cmchar "Period"; -beginchar(".",2sb#+hstretch*(dot_size#),x_height#,0); -pcshiftx:=sb; -x1=w/2; y1=h/2; -draw_pdot(1,dot_size); -penlabels(1); -endchar; % end of "." - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{:} -% The `:' character. -% \begin{macrocode} - -cmchar "Colon"; -beginchar(":",2sb#+hstretch*(dot_size#),x_height#,0); -pcshiftx:=sb; -x1=x2=w/2; y1=2/3h; y2=1/3h; -draw_pdot(1,dot_size); -draw_pdot(2,dot_size); -penlabels(1,2); -endchar; % end ":" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{;} -% The `;' character. -% \begin{macrocode} - -cmchar "Semicolon"; -beginchar(";",2sb#+hstretch*(comma_width#+dot_size#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb; -x1=x2=w-pcshiftx-(0.5hstretch*dot_size); y1=2/3h; y2=1/3h; -draw_pdot(1,dot_size); -draw_pcomma(2,dot_size,comma_width); -penlabels(1,2); -endchar; % end of ";" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{'} -% The `'' character. -% \begin{macrocode} - -cmchar "Apostrophe"; -beginchar("'",2sb#+hstretch*(comma_width#+dot_size#),4/3x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb; -x1=w-pcshiftx-(0.5hstretch*dot_size); y1=h; -draw_pcomma(1,dot_size,comma_width); -penlabels(1); -endchar; % end of "'" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{`} -% The ``' character. -% \begin{macrocode} - -cmchar "Reverse apostrophe"; -beginchar("`",2sb#+hstretch*(comma_width#+dot_size#),4/3x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb; -x1=pcshiftx+(0.5hstretch*dot_size); y1=h; -draw_plq(1,dot_size,comma_width); -penlabels(1); -endchar; % end of "`" - -% \end{macrocode} -% \end{routine} -% -% The end of this file. -% \begin{macrocode} -% -% \end{macrocode} -% -% -% \subsection{The ligatures and dashes file} -% -% The ligatured letters, punctuation marks and dashes are defined in this file. -% \begin{macrocode} -%<*lig> -% IMAJLIG.MF Uncial ligatured letters, punctation and dashes - -% \end{macrocode} -% First the ligtables. -% \begin{macrocode} - -ligtable "`": "`"=:oct"134"; -ligtable "'": "'"=:oct"042"; %% , "?" kern 2u#, "!" kern 2u#; - -ligtable "-": "-"=:oct"173"; -ligtable oct"173": "-"=:oct"174"; - -%%%%ligtable "f": "i"=:oct"014"; - -% \end{macrocode} -% -% \begin{routine}{''} -% The `''' ligature. -% \begin{macrocode} - -cmchar "Closing quotes"; -beginchar(oct"042",2sb#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb; -x1=w-pcshiftx-(0.5hstretch*dot_size); y1=y2=h; -x2=x1-(2hstretch*dot_size); -draw_pcomma(1,dot_size,comma_width); % right -draw_pcomma(2,dot_size,comma_width); % left -penlabels(1,2); -endchar; % end of "''" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{``} -% The ```' ligature. -% \begin{macrocode} - -cmchar "Opening quotes"; -beginchar(oct"134",2sb#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb; -x1=pcshiftx+(0.5hstretch*dot_size); y1=y2=h; -x2=x1+(2hstretch*dot_size); -draw_plq(1,dot_size,comma_width); % left -draw_plq(2,dot_size,comma_width); % right -penlabels(1,2); -endchar; % end of "``" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{-} -% The `-' (hyphen) character. -% \begin{macrocode} - -cmchar "Hyphen"; -beginchar("-",sb#+hstretch*(0.8x_height#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb/2; -numeric alpha; alpha:=w/8; -pickup quill; -lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; -x11=lft x1+alpha/2; y11=top y1-0.5thin; -x12=rt x2; y12=bot y1+0.5thin; -draw_triangle(11,alpha); -draw_rutriangle(12,alpha); -pickup thickstylus; -lft x21=pcshiftx; rt x22=w-pcshiftx; y21=y22=y1; -draw z21--z22; -penlabels(1,2); -endchar; % end of "-" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{--} -% The `--' (en-dash) ligature. -% \begin{macrocode} - -cmchar "En dash"; -beginchar(oct"173",sb#+hstretch*(x_height#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb/2; -numeric alpha; alpha:=w/8; -pickup quill; -lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; -x11=lft x1+alpha/2; y11=top y1-0.5thin; -x12=rt x2; y12=bot y1+0.5thin; -draw_triangle(11,alpha); -draw_rutriangle(12,alpha); -pickup thickstylus; -lft x21=pcshiftx; rt x22=w-pcshiftx; y21=y22=y1; -draw z21--z22; -penlabels(1,2); -endchar; % end of "--" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{---} -% The `---' (em dash) ligature. The em dash is twice the width of the en dash. -% \begin{macrocode} - -cmchar "Em dash"; -beginchar(oct"174",sb#+hstretch*(2x_height#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb/2; -numeric alpha; alpha:=w/8; -pickup quill; -lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; -x11=lft x1+alpha/2; y11=top y1-0.5thin; -x12=rt x2; y12=bot y1+0.5thin; -draw_triangle(11,alpha); -draw_rutriangle(12,alpha); -pickup thickstylus; -lft x21=pcshiftx; rt x22=w-pcshiftx; y21=y22=y1; -draw z21--z22; -penlabels(1,2); -endchar; % end of "---" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{&} -% The ampersand (which is really an `et' ligature). -% \begin{macrocode} - -cmchar "IMAJ ampersand"; -beginchar("&", 2sb#+hstretch*(6/3x_height#), asc_height#, 0); -adjust_fit(0,0); -numeric n[]; -path pth[]; -pcshiftx:=sb; -pickup quill; -n10 := w-2pcshiftx; % width of character -%% crossbar -z1'=(0,h/ascratio); -rt x2=w-pcshiftx; y2=y1'; -%% main bowl -n1 := 4/6n10; % width of bowl -n2 := h; % height of bowl -z3=(pcshiftx,0); -obowl(3, n1, n2); -z2'=(x3obc,y1'); -z1 = (z1'--z2') intersectionpoint obinner; -z10o = (z2'--z2) intersectionpoint obouter; -z10i = (z2'--z2) intersectionpoint obinner; -%% wave -x4=x2; bot y4=0; -pth1 := z1{right}..z4{right}; -%% wave/bowl -z20o = pth1 intersectionpoint subpath (0,2) of obouter; -z20i = pth1 intersectionpoint subpath (0,2) of obinner; -%%ductus:=true; -if ductus: - pickup stylus; -fi -fill z10o..z3minlo{-pdir}..z3maxlo{-ppdir}..z3minro{pdir}..z20o-- - z20i..z3minri{-pdir}..z3maxli{ppdir}..z3minli{pdir}..z10i-- - cycle; -draw z1--z2; % bar -draw pth1; % wave -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,10,16,17,18,31,32,33); -endchar; % end of "&" - -% \end{macrocode} -% \end{routine} -% -% -% The end of this file. -% \begin{macrocode} -% -% \end{macrocode} -% -% \subsection{The digits file} -% -% These are arabic digits in the style of the book-hand. They are a -% modern invention. -% -% \begin{macrocode} -%<*dig> -% IMAJDIG.MF Program file for Insular Majuscule digits -% - -% \end{macrocode} -% -% -% \begin{routine}{1} -% The digit `1'. -% \begin{macrocode} -cmchar "IMAJ digit 1"; -beginchar("1", 2sb#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -x1=x2=w/2; -y1=h; bot y2=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); -draw_triserif(1,trijut); -ductus:=false; -penlabels(1,2,100); -endchar; % end "1" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{2} -% The digit `2'. -% \begin{macrocode} -cmchar "IMAJ digit 2"; -beginchar("2", 2sb#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -%% stem -lft x1=pcshiftx+o; top y1=h-2thin; -x2=1/2w; top y2= h+o; -rt x3=w-pcshiftx-o; y3=3/4h; -%% foot -lft x5=pcshiftx; bot y5=0; -rt x6=w-pcshiftx; y6=y5; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1..z2{right}..z3{down}..{down}z5; % curve -draw z5--z6; % foot -draw_utriangle(6,thick); -ductus:=false; -penlabels(1,2,3,4,5,6,100); -endchar; % end "2" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{3} -% The digit `3'. -% \begin{macrocode} -cmchar "IMAJ digit 3"; -beginchar("3", 2sb#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -%% x values -lft x3=pcshiftx; x10=x3; -rt x5=w-pcshiftx; x8=x5-3thin; -x4=0.5[x3,x5]; -x9=0.5[x10,x8]; -lft x6=pcshiftx+3thin; x7=x6; -%% y values -bot y3=thin; top y10=h-2thin; -y6=0.5[y3,y10]; y7=y6; -bot y4=-thin; top y9=h+thin; -y5=0.5[y3,y6]; -y8=11/12[y7,y10]; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z3..z4{right}..z5{up}...{-pdir}z6; % bottom bowl -draw z7{pdir}...z8{up}..z9{left}..z10; % top bowl -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,10,100); -endchar; % end "3" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{4} -% The digit `4'. -% \begin{macrocode} -cmchar "IMAJ digit 4"; -beginchar("4", 2sb#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -%% the stem -x1=x2=w-pcshiftx-jut; -y1=h; bot y2=0; -%% the crossbar -lft x3=pcshiftx; y3=0.33h; -rt x4=w-pcshiftx; y4=y3; -%% the diagonal -lft x5=pcshiftx+jut; y5=h; -x6=x5; y6=y4; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % main stem -%%draw_clubbase(1, 2, 1/3, 0, clubjut); -draw z3--z4; % crossbar -draw z3{(1,1)}..{(1,1)}z1; % diagonal -ductus:=false; -penlabels(1,2,3,4,100); -endchar; % end "4" - -% \end{macrocode} -% \end{routine} -% -% -% -% \begin{routine}{5} -% The digit `5'. -% \begin{macrocode} -cmchar "IMAJ digit 5"; -beginchar("5", 2sb#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -numeric n[]; -pcshiftx := sb; -pickup quill; -%% for the top -rt x1=w-pcshiftx; top y1=h; -lft x2=pcshiftx; y2=y1; -z2'=(lft x2, top y2); z2''=(rt x2, y2'); -z0'=(x2', 0); z0''=(x2'', 0); -%% bowl -n1 := w-2pcshiftx+4/3thick; % width of bowl -n2 := 2/3h; % height of bowl -z3=(w-pcshiftx-n1, 0); -obowl(3, n1, n2); -z10o = (z2''--z0'') intersectionpoint subpath (3,4) of obouter; -z10i = (z2'--z0') intersectionpoint subpath (3,4) of obinner; -z10'=(x10i,y10o); -z20o = (z2'--z0') intersectionpoint subpath (2,3) of obouter; -z20i = (z2'--z0') intersectionpoint subpath (2,3) of obinner; -%%ductus:=true; -if ductus: - pickup stylus; - draw z2--z1; draw z2'--z0'; draw z2''--z0''; - draw obouter; draw obinner; -else: - draw z2--z1; % top bar - draw_triangle(1,thick); - fill z2'--z10i--z10o--z2''--cycle; % stem - fill z10o..z3minlo{pdir}..z3maxro{-ppdir}..z3minro{-pdir}..z20o-- - z20i..z3minri{pdir}..z3maxri{ppdir}..z3minli{-pdir}..z10i-- - z10'--cycle; -fi -ductus:=false; -penlabels(1,2,3,4,5,6,7,100); -endchar; % end "5" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{6} -% The digit `6'. -% \begin{macrocode} -cmchar "IMAJ digit 6"; -beginchar("6", 2sb#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -numeric n[]; -path pth[]; -pcshiftx := sb; -pickup quill; -n1 := w-2pcshiftx; % width of character -n2 := h; % height of character -%% main bowl -z3=(w-pcshiftx-n1,0); -obowl(3, n1, n2); -pth1 := obouter; pth2 := obinner; -z0 = (0,0); z0'=(w,h); -z10o' = (z0--z0') intersectionpoint subpath (0,1) of pth1; -z10i' = (z0--z0') intersectionpoint subpath (0,1) of pth2; -n0 := w-pcshiftx-x10o'; -z10o=(x10o'+n0, y10o'); -z10i=(x10i'+n0, y10i'); -%% bottom bowl -n3 := 16/12n2; % width -n4 := 2/3n2; % height -z13=(w-pcshiftx-n3, 0); -obowl(13, n3, n4); -pth11 := obouter; pth12 := obinner; -z20o = subpath (2,4) of pth2 intersectionpoint - (subpath (3,4) of pth11 & subpath (0,1) of pth11); -z20i = subpath (2,4) of pth2 intersectionpoint - (subpath (3,4) of pth12 & subpath (0,1) of pth12); -%%ductus:=true; -if ductus: - pickup stylus; - draw subpath (2,4) of pth2; - draw (subpath (3,4) of pth11 & subpath (0,1) of pth11); - draw (subpath (3,4) of pth12 & subpath (0,1) of pth12); -else: - fill z10o..z3minlo{-pdir}..z3maxlo{-ppdir}..z3minro{pdir}.. - z13maxro{ppdir}..{-pdir}z20o--z20i{pdir}..z13maxri{-ppdir}.. - z3minri{-pdir}..z3maxli{ppdir}..z3minli{pdir}..z10i-- - cycle; -fi -ductus:=false; -penlabels(1,2,3,4,5,6,8,100); -endchar; % end "6" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{7} -% The digit `7'. -% \begin{macrocode} -cmchar "IMAJ digit 7"; -beginchar("7", 2sb#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -%% top bar -lft x1=pcshiftx; -rt x2=w-pcshiftx; -top y1=top y2=h; -x8=pcshiftx+3/8jut; y8=h-0.5thin; -%% bowed leg -x4=w/2; bot y4=0; -x3=0.5[x2,x4]-3thin; y3=0.5[y2,y4]; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2; % top bar -draw_triangle(1,thick); -draw z2..z3..z4; % leg -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,100); -endchar; % end "7" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{8} -% The digit `8'. -% \begin{macrocode} -cmchar "IMAJ digit 8"; -beginchar("8", 2sb#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric alpha; alpha:=1; -pickup quill; -lft x1=alpha*pcshiftx+o; rt x3=w-alpha*pcshiftx-o; y1=y3=3/4h; -x2=x4=w/2; top y2=h+o; bot y4=-o; -x5=x2; y5=h/2+2o; -lft x11=pcshiftx; rt x13=w-pcshiftx; y11=y13=1/4h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1..z2..z3..z5..z11..z4..z13..z5..cycle; -ductus:=false; -penlabels(1,2,3,4,5,11,13,100); -endchar; % end "8" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{9} -% The digit `9'. -% \begin{macrocode} -cmchar "IMAJ digit 9"; -beginchar("9", 2sb#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -numeric n[]; -path pth[]; -pcshiftx := sb; -pickup quill; -n1 := w-2pcshiftx; % width of character -n2 := h; % height of character -%% main bowl -z3=(w-pcshiftx-n1,0); -obowl(3, n1, n2); -pth1 := obouter; pth2 := obinner; -z0=(0,0); z0'=(w,h); -z20o' = (z0--z0') intersectionpoint subpath (2,3) of pth1; -z20i' = (z0--z0') intersectionpoint subpath (2,3) of pth2; -n0 := x20o'-pcshiftx; -z20o=(x20o'-n0, y20o'); -z20i=(x20i'-n0, y20i'); -%% bottom bowl -n3 := 16/12n2; % width -n4 := 2/3n2; % height -z13=(pcshiftx,h-n4); -obowl(13, n3, n4); -pth11 := obouter; pth12 := obinner; -z10o = subpath (0,2) of pth2 intersectionpoint subpath (1,3) of pth11; -z10i = subpath (0,2) of pth2 intersectionpoint subpath (1,3) of pth12; -%%ductus:=true; -if ductus: - pickup stylus; - draw subpath (0,2) of pth2; - draw subpath (1,3) of pth11; - draw subpath (1,3) of pth12; -else: - fill z20o..z3minro{pdir}..z3maxro{ppdir}..z3minlo{-pdir}.. - z13maxlo{-ppdir}..{pdir}z10o--z10i{-pdir}..z13maxli{ppdir}.. - z3minli{pdir}..z3maxri{-ppdir}..z3minri{-pdir}..z20i-- - cycle; -fi -ductus:=false; -penlabels(1,2,3,4,5,6,100); -endchar; % end "9" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{0} -% The digit `0'. -% \begin{macrocode} -cmchar "Uncial digit 0"; -beginchar("0", 2sb#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -numeric n[]; -pcshiftx := sb; -pickup quill; -n1 := w-2pcshiftx; % bowl width -n2 := h+2o; % bowl height -z1=(pcshiftx,-o); -obowl(1, n1, n2); -%%ductus:=true; -if ductus: - pickup stylus; -fi -fill obouter; unfill obinner; -ductus:=false; -%%%proofpcbb(100, y100, y100); -penlabels(1,2,3,4,100); -endchar; % end "0" - -% \end{macrocode} -% \end{routine} -% -% -% -% -% The end of this file. -% \begin{macrocode} -% -% \end{macrocode} -% -% \section{The font definition files} \label{sec:fd} -% -% The font comes in normal and bold weights only. -% -% \begin{macrocode} -%<*fdot1> -\DeclareFontFamily{OT1}{imaj}{} - \DeclareFontShape{OT1}{imaj}{m}{n}{ <-8.5> imaj7 <8.5-15> imaj10 <15-> imaj17 }{} - \DeclareFontShape{OT1}{imaj}{m}{sl}{ <-> sub * imaj/m/n }{} - \DeclareFontShape{OT1}{imaj}{m}{it}{ <-> sub * imaj/m/n }{} - \DeclareFontShape{OT1}{imaj}{m}{sc}{ <-> sub * imaj/m/n }{} - \DeclareFontShape{OT1}{imaj}{m}{u}{ <-> sub * imaj/m/n }{} - \DeclareFontShape{OT1}{imaj}{bx}{n}{ <-8.5> imajb7 <8.5-15> imajb10 <15-> imajb17 }{} - \DeclareFontShape{OT1}{imaj}{bx}{it}{ <-> sub * imaj/bx/n }{} - \DeclareFontShape{OT1}{imaj}{bx}{sl}{ <-> sub * imaj/bx/n }{} - \DeclareFontShape{OT1}{imaj}{b}{n}{ <-> sub * imaj/bx/n }{} -% -% \end{macrocode} -% -% -% \begin{macrocode} -%<*fdt1> -\DeclareFontFamily{T1}{imaj}{} - \DeclareFontShape{T1}{imaj}{m}{n}{ <-8.5> imaj7 <8.5-15> imaj10 <15-> imaj17 }{} - \DeclareFontShape{T1}{imaj}{m}{sl}{ <-> sub * imaj/m/n }{} - \DeclareFontShape{T1}{imaj}{m}{it}{ <-> sub * imaj/m/n }{} - \DeclareFontShape{T1}{imaj}{m}{sc}{ <-> sub * imaj/m/n }{} - \DeclareFontShape{T1}{imaj}{m}{u}{ <-> sub * imaj/m/n }{} - \DeclareFontShape{T1}{imaj}{bx}{n}{ <-8.5> imajb7 <8.5-15> imajb10 <15-> imajb17 }{} - \DeclareFontShape{T1}{imaj}{bx}{it}{ <-> sub * imaj/bx/n }{} - \DeclareFontShape{T1}{imaj}{bx}{sl}{ <-> sub * imaj/bx/n }{} - \DeclareFontShape{T1}{imaj}{b}{n}{ <-> sub * imaj/bx/n }{} -% -% \end{macrocode} -% -% \section{The package code} \label{sec:code} -% -% \subsection{The \Lpack{inslrmaj} package} -% -% The \Lpack{inslrmaj} package is for typesetting short pieces of text -% in the \thisfont{} fonts. -% -% Announce the name and version of the package, which requires -% \LaTeXe{}. -% \begin{macrocode} -%<*usc> -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{inslrmaj}[1999/05/22 v1.0 package for Insular Majuscule fonts] -% \end{macrocode} -% -% \begin{macro}{\Tienc} -% A macro for testing the value of |\encodingdefault|. -% \begin{macrocode} -\providecommand{\Tienc}{T1} -% \end{macrocode} -% \end{macro} -% -% -% \begin{macro}{\imajfamily} -% Selects the \thisfont{} font family in the OT1 or T1 encoding. -% \begin{macrocode} -\ifx\Tienc\encodingdefault - \newcommand{\imajfamily}{\usefont{T1}{imaj}{m}{n}} -\else - \newcommand{\imajfamily}{\usefont{OT1}{imaj}{m}{n}} -\fi -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\textimaj} -% Text command for the \thisfont{} font family. -% \begin{macrocode} -\DeclareTextFontCommand{\textimaj}{\imajfamily} -% \end{macrocode} -% \end{macro} -% -% The end of this package. -% \begin{macrocode} -% -% \end{macrocode} -% -% \subsection{The \Lpack{allimaj} package} -% -% The \Lpack{allimaj} package is intended for use when the entire document -% will be typeset in the book-hand. This is a minimal package. Because the -% book-hand should not contain arabic digits a fuller package would redefine -% anything numbered in \LaTeX{} to use roman instead of arabic numbering. -% Also, because of the large |\baselineskip| many other aspects of \LaTeX{} -% to do with vertical positioning should also be redefined. -% -% -% Announce the name and version of the package, which requires -% \LaTeXe{}. It also uses the \Lpack{inslrmaj} package. -% \begin{macrocode} -%<*uscall> -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{allimaj}[1999/05/22 v1.0 package for all Insular Majuscule fonts] -\RequirePackage{inslrmaj} -% \end{macrocode} -% -% \begin{macro}{\Tienc} -% A macro for testing the value of |\encodingdefault|. -% \begin{macrocode} -\providecommand{\Tienc}{T1} -% \end{macrocode} -% \end{macro} -% -% Redefine the default fonts to be \thisfont, which has only one family -% member. -% \begin{macro}{\rmdefault} -% \begin{macro}{\sfdefault} -% \begin{macro}{\ttdefault} -% \begin{macrocode} -\renewcommand{\rmdefault}{imaj} -\renewcommand{\sfdefault}{imaj} -\renewcommand{\ttdefault}{imaj} -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% -% The `leading' in the book-hands is a function of the |x-height|, which is -% normally much -% greater than for the CMR fonts. I have borrowed code from Frank Jensen's -% \Lpack{beton} package~\cite{BETON} to do this. The |x-height| (in points) -% for the CMR -% fonts is given in Table~\ref{tab:cmrx}. Note that the CMR design sizes are -% 5--10, 12, and 17.28 points. The other values given are scaled from these -% figures. -% -% \begin{table} -% \centering -% \caption{The x heights of the CMR and \thisfont{} fonts} \label{tab:cmrx} -% \begin{tabular}{ccc} \hline -% Design & CMR & \thisfont \\ -% Size & X Height & X Height \\ \hline -% 5 & 2.14 & 3.00 \\ ^^A CMR skip = 6pt = 2.8 times -% 6 & 2.58 & 3.61 \\ ^^A CMR skip = 7pt = 2.7 times -% 7 & 3.00 & 4.20 \\ ^^A CMR skip = 8pt = 2.7 times -% 8 & 3.44 & 4.81 \\ ^^A CMR skip = 9.5pt = 2.8 times -% 9 & 3.86 & 5.40 \\ ^^A CMR skip = 11pt = 2.8 times -% 10 & 4.31 & 6.03 \\ ^^A CMR skip = 12pt = 2.8 times -% 11 & 4.74 & 6.64 \\ ^^A CMR skip = 13.6pt = 2.8 times -% 12 & 5.17 & 7.24 \\ ^^A CMR skip = 14.5pt = 2.8 times -% 14 & 6.03 & 8.44 \\ ^^A CMR skip = 18pt = 3.0 times -% 17 & 7.44 & 10.41 \\ ^^A CMR skip = 22pt = 3.0 times -% 20 & 8.75 & 12.25 \\ ^^A CMR skip = 25pt = 2.9 times -% 25 & 10.94 & 15.32 \\ ^^A CMR skip = 30pt = 2.7 times -% \hline -% \end{tabular} -% \end{table} -% -% \begin{macro}{\imaj@baselineskip@table} -% A table of the normal font sizes and the corresponding baselineskip. -% The distance between baselines for \thisfont{} is over twice -% the |x-height|. ^^A actually 2.5 times to nearest half point -% -% \begin{macrocode} -\newcommand{\imaj@baselineskip@table}{% - <\@vpt>7.5% - <\@vipt>9.0% - <\@viipt>10.5% - <\@viiipt>12.0% - <\@ixpt>13.5% - <\@xpt>15.0% - <\@xipt>16.5% - <\@xiipt>18.0% - <\@xivpt>21.0% - <\@xviipt>26.0% - <\@xxpt>30.5% - <\@xxvpt>38.5} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\imaj@new@setfontsize} -% This is a macro that replaces the |\@setfontsize| macro which is called by -% the font size changing commands. -% \begin{macrocode} -\newcommand{\imaj@new@setfontsize}[3]{% - \edef\@tempa{\def\noexpand\@tempb####1<#2}% - \@tempa>##2<##3\@nil{\def\imaj@baselineskip@value{##2}}% - \edef\@tempa{\noexpand\@tempb\imaj@baselineskip@table<#2}% - \@tempa><\@nil - \ifx\imaj@baselineskip@value\@empty - \def\imaj@baselineskip@value{#3}% - \fi - \imaj@old@setfontsize{#1}{#2}\imaj@baselineskip@value} -% \end{macrocode} -% \end{macro} -% -% We had better give an author a means of using The Computer Modern fonts -% if necessary. -% -% \begin{macro}{\cmrfamily} -% \begin{macro}{\cmssfamily} -% \begin{macro}{\cmttfamily} -% These macros select the Computer Modern Roman, Sans, and Typewriter -% font families in either the T1 or OT1 encodings. -% \begin{macrocode} -\ifx\Tienc\encodingdefault - \providecommand{\cmrfamily}{\usefont{T1}{cmr}{m}{n}} - \providecommand{\cmssfamily}{\usefont{T1}{cmss}{m}{n}} - \providecommand{\cmttfamily}{\usefont{T1}{cmtt}{m}{n}} -\else - \providecommand{\cmrfamily}{\usefont{OT1}{cmr}{m}{n}} - \providecommand{\cmssfamily}{\usefont{OT1}{cmss}{m}{n}} - \providecommand{\cmttfamily}{\usefont{OT1}{cmtt}{m}{n}} -\fi -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\textcmr} -% Text command for the Computer Modern Roman font family. -% \begin{macrocode} -\DeclareTextFontCommand{\textcmr}{\cmrfamily} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\textcmss} -% Text command for the Computer Modern Sans font family. -% \begin{macrocode} -\DeclareTextFontCommand{\textcmss}{\cmssfamily} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\textcmtt} -% Text command for the Computer Modern Typewriter font family. -% \begin{macrocode} -\DeclareTextFontCommand{\textcmtt}{\cmttfamily} -% \end{macrocode} -% \end{macro} -% -% -% At the start of the document, change the |\@setfontsize| macro and call -% the normal font to implement the change. -% \begin{macrocode} -\AtBeginDocument{% - \let\imaj@old@setfontsize=\@setfontsize - \let\@setfontsize=\imaj@new@setfontsize} -\AtBeginDocument{\normalsize} -% \end{macrocode} -% -% -% The end of this package. -% \begin{macrocode} -% -% \end{macrocode} -% -% -% -% -% -% \Finale -% \PrintIndex -% -\endinput - -%% \CharacterTable -%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -%% Digits \0\1\2\3\4\5\6\7\8\9 -%% Exclamation \! Double quote \" Hash (number) \# -%% Dollar \$ Percent \% Ampersand \& -%% Acute accent \' Left paren \( Right paren \) -%% Asterisk \* Plus \+ Comma \, -%% Minus \- Point \. Solidus \/ -%% Colon \: Semicolon \; Less than \< -%% Equals \= Greater than \> Question mark \? -%% Commercial at \@ Left bracket \[ Backslash \\ -%% Right bracket \] Circumflex \^ Underscore \_ -%% Grave accent \` Left brace \{ Vertical bar \| -%% Right brace \} Tilde \~} - - diff --git a/Master/texmf-dist/source/latex/bookhands/inslrmaj/inslrmaj.ins b/Master/texmf-dist/source/latex/bookhands/inslrmaj/inslrmaj.ins deleted file mode 100644 index 7860d41ef11..00000000000 --- a/Master/texmf-dist/source/latex/bookhands/inslrmaj/inslrmaj.ins +++ /dev/null @@ -1,101 +0,0 @@ -%% -%% inslrmaj.ins -%% Copyright 1999 Peter R. Wilson -%% -%% This program is provided under the terms of the -%% LaTeX Project Public License distributed from CTAN -%% archives in directory macros/latex/base/lppl.txt. -%% -%% Author: Peter Wilson (CUA) -%% now at: peter.r.wilson@boeing.com -%% -%% This file will generate fast loadable files and documentation -%% driver files from the doc files in this package when run through -%% LaTeX or TeX. -%% -%% --------------- start of docstrip commands ------------------ -%% -\def\batchfile{inslrmaj.ins} -\input docstrip.tex -\preamble - - Copyright 1999 Peter R. Wilson - - This program is provided under the terms of the - LaTeX Project Public License distributed from CTAN - archives in directory macros/latex/base/lppl.txt. - -Author: Peter Wilson (CUA) - now at: peter.r.wilson@boeing.com - -\endpreamble - -\keepsilent - -%%% \Msg{*** Generating the driver file ***} -%%% \generateFile{inslrmaj.drv}{t}{\from{inslrmaj.dtx}{driver}} - -\Msg{*** Generating the Metafont files ***} - -\usepostamble\empty -\generateFile{imaj7.mf}{t}{\from{inslrmaj.dtx}{base7}} -\generateFile{imaj10.mf}{t}{\from{inslrmaj.dtx}{base10}} -\generateFile{imaj17.mf}{t}{\from{inslrmaj.dtx}{base17}} -\generateFile{imajb7.mf}{t}{\from{inslrmaj.dtx}{base7b}} -\generateFile{imajb10.mf}{t}{\from{inslrmaj.dtx}{base10b}} -\generateFile{imajb17.mf}{t}{\from{inslrmaj.dtx}{base17b}} -\generateFile{imajl.mf}{t}{\from{inslrmaj.dtx}{min}} -\generateFile{imaju.mf}{t}{\from{inslrmaj.dtx}{maj}} -\generateFile{imajtitle.mf}{t}{\from{inslrmaj.dtx}{mfd}} -\generateFile{imajpunct.mf}{t}{\from{inslrmaj.dtx}{punct}} -\generateFile{imajlig.mf}{t}{\from{inslrmaj.dtx}{lig}} -\generateFile{imajdig.mf}{t}{\from{inslrmaj.dtx}{dig}} - -\Msg{*** Generating the Font Definition files ***} -\usepostamble\defaultpostamble - -\generateFile{ot1imaj.fd}{t}{\from{inslrmaj.dtx}{fdot1}} -\generateFile{t1imaj.fd}{t}{\from{inslrmaj.dtx}{fdt1}} - -\Msg{*** Generating the LaTeX2e package files ***} - -\generateFile{inslrmaj.sty}{t}{\from{inslrmaj.dtx}{usc}} -\generateFile{allimaj.sty}{t}{\from{inslrmaj.dtx}{uscall}} - -\Msg{***********************************************************} -\Msg{*} -\Msg{* To finish the installation you have to move the following} -\Msg{* files into directories searched by TeX:} -\Msg{*} -\Msg{* Move these into the font source area:} -\Msg{* \space\space imaj7.mf} -\Msg{* \space\space imaj10.mf} -\Msg{* \space\space imaj17.mf} -\Msg{* \space\space imajb7.mf} -\Msg{* \space\space imajb10.mf} -\Msg{* \space\space imajb17.mf} -\Msg{* \space\space imajl.mf} -\Msg{* \space\space imaju.mf} -\Msg{* \space\space imajtitle.mf} -\Msg{* \space\space imajpunct.mf} -\Msg{* \space\space imajlig.mf} -\Msg{* \space\space imajdig.mf} -\Msg{*} -\Msg{* Move these into the LaTeX macro area:} -\Msg{* \space\space ot1imaj.fd} -\Msg{* \space\space t1imaj.fd} -\Msg{* \space\space inslrmaj.sty} -\Msg{* \space\space allimaj.sty} -\Msg{*} -\Msg{*} -\Msg{* To produce the documentation run the files ending with} -\Msg{* `.dtx' through LaTeX.} -\Msg{* Process any name.idx file by:} -\Msg{* \space\space\space\space makeindex -s gind.ist name} -\Msg{* Process any name.glo file by:} -\Msg{* \space\space\space\space makeindex -s gglo.ist -o name.gls name.glo} -\Msg{*} -\Msg{* Happy TeXing} -\Msg{***********************************************************} - -\endinput diff --git a/Master/texmf-dist/source/latex/bookhands/inslrmin/inslrmin.dtx b/Master/texmf-dist/source/latex/bookhands/inslrmin/inslrmin.dtx deleted file mode 100644 index ea25389999a..00000000000 --- a/Master/texmf-dist/source/latex/bookhands/inslrmin/inslrmin.dtx +++ /dev/null @@ -1,4630 +0,0 @@ -% \iffalse meta-comment -% -% inslrmin.dtx -% Copyright 1999 Peter R. Wilson -% -% This program is provided under the terms of the -% LaTeX Project Public License distributed from CTAN -% archives in directory macros/latex/base/lppl.txt. -% -% Author: Peter Wilson (CUA) (now at: peter.r.wilson@boeing.com) -% -% If you do not have the docmfp package (available from CTAN in -% tex-archive/macros/latex/contrib/supported), comment out the -% \usepackage{docmfp} line below and uncomment the line following it. -% -%<*driver> -\documentclass{ltxdoc} -\usepackage{docmfp} -%%%%%% \providecommand{\DescribeVariable}[1]{} \newenvironment{routine}[1]{}{} -\EnableCrossrefs -\CodelineIndex -%% comment out next line to see the code -\OnlyDescription -\setcounter{StandardModuleDepth}{1} -\begin{document} - \DocInput{inslrmin.dtx} -\end{document} -% -% -% \fi -% -% \CheckSum{134} -% -% \DoNotIndex{\',\.,\@M,\@@input,\@addtoreset,\@arabic,\@badmath} -% \DoNotIndex{\@centercr,\@cite} -% \DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue} -% \DoNotIndex{\@input,\@ixpt,\@m} -% \DoNotIndex{\@minus,\@mkboth,\@ne,\@nil,\@nomath,\@plus,\@set@topoint} -% \DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb} -% \DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt} -% \DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt} -% \DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace} -% \DoNotIndex{\advance,\Alph,\alph} -% \DoNotIndex{\arabic,\ast,\begin,\begingroup,\bfseries,\bgroup,\box} -% \DoNotIndex{\bullet} -% \DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption} -% \DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass} -% \DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\endtrivlist} -% \DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup} -% \DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter} -% \DoNotIndex{\fbox} -% \DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef} -% \DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule} -% \DoNotIndex{\hsize,\hskip,\hspace,\hss,\if@tempswa,\ifcase,\or,\fi,\fi} -% \DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\fi,\fi,\fi,\fi,\fi} -% \DoNotIndex{\input} -% \DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark} -% \DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright} -% \DoNotIndex{\month,\newcommand,\newcounter,\newenvironment} -% \DoNotIndex{\NeedsTeXFormat,\newdimen} -% \DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number} -% \DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\p@} -% \DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip} -% \DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions} -% \DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright} -% \DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font} -% \DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily,\roman} -% \DoNotIndex{\roman,\secdef,\selectfont,\setbox,\setcounter,\setlength} -% \DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space} -% \DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase} -% \DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt} -% \DoNotIndex{\viipt,\vipt,\vskip,\vspace} -% \DoNotIndex{\wd,\xiipt,\year,\z@} -% -% \changes{v1.0}{2002/12/30}{First public release} -% -% \def\fileversion{v1.0} -% \def\filedate{2002/12/30} -% \newcommand*{\Lpack}[1]{\textsf {#1}} ^^A typeset a package -% \newcommand*{\Lopt}[1]{\textsf {#1}} ^^A typeset an option -% \newcommand*{\file}[1]{\texttt {#1}} ^^A typeset a file -% \newcommand*{\Lcount}[1]{\textsl {\small#1}} ^^A typeset a counter -% \newcommand*{\pstyle}[1]{\textsl {#1}} ^^A typeset a pagestyle -% \newcommand*{\Lenv}[1]{\texttt {#1}} ^^A typeset an environment -% \newcommand*{\AD}{\textsc{ad}} -% \newcommand*{\thisfont}{Insular Minuscule} -% -% \title{The \Lpack{Insular Minuscule} fonts\thanks{This -% file has version number \fileversion, last revised -% \filedate.}} -% -% \author{% -% Peter Wilson\\ -% Catholic University of America \\ -% Now at \texttt{peter.r.wilson@boeing.com} -% } -% \date{\filedate} -% \maketitle -% \begin{abstract} -% The \Lpack{inslrmin} and \Lpack{allimin} packages provide a set of -% Metafont \thisfont{} book-hands -% as used -% for manuscripts from the 6th century onwards. This is one in a series -% of manuscript fonts. -% \end{abstract} -% \tableofcontents -% \listoftables -% -% -% -% -% \section{Introduction} -% -% The \Lpack{inslrmin} and \Lpack{allimin} packages provide a Metafont~\cite{METAFONT} version -% of the \thisfont{} manuscript book-hand that was in use from the -% sixth century~\AD{} onwards. It is part of a project to provide fonts -% covering the major manuscript hands between the first century~\AD{} and -% the invention of printing. The principal resources used in this project -% are listed in the Bibliography. -% -% This manual is typeset according to the conventions of the -% \LaTeX{} \textsc{docstrip} utility which enables the automatic -% extraction of the \LaTeX{} macro source files~\cite{GOOSSENS94}. -% The \Lpack{docmfp} package is used for documenting the Metafont portions -% of the distribution~\cite{DOCMFP}. -% -% Section~\ref{sec:usc} describes the usage of the package. -% Commented code for the fonts is in Sections~\ref{sec:mf} and~\ref{sec:fd} -% and source code for the package is in Section~\ref{sec:code}. -% -% \subsection{Manuscript book-hands} -% -% Before the invention of printing all books were written by hand. The book-hands -% used by the scribes and copyists for the manuscripts changed as time -% went on. Table~\ref{tab:1} lists some of the common book-hands which were used -% between the 1st and 15th centuries. The later book-hands formed the basis of the -% fonts used by the early printers, which in turn form the basis of the printing -% fonts in use today. -% -% The manuscript book-hands were written with a broad nibbed reed or quill -% pen. Among the distinguishing characteristics of a hand, apart from the -% actual shape of the letters, are the angle of the pen (which controls the -% variation between thick and thin strokes) and the height of a letter compared -% to the width of the nib. The lower the ratio of the letter height to nib -% width, the more condensed is the script. The scripts also varied in their -% typical height. -% -% Table~\ref{tab:1} gives an `average' x-height for each -% script, which I obtained by measuring a sample of photographs of -% manuscripts written in the various hands. About a dozen examples -% of each book-hand were measured. This figure should not be taken too -% seriously. -% -% There was not a sharp division between the use of one hand and another. -% Many manuscripts exhibit a variety of hands in the same document. For example, -% the scribe writing in an Uncial hand may have used Roman Rustic letters -% for capitals. Usually the same pen was used for the two different scripts. -% -% Generally speaking, as a hand got older it became more embelished, and -% therefore took longer to write. As this happened a new hand would appear that -% was faster, and which would eventually make the earlier one obsolete. -% -% Many of the book-hands were single-cased; that is, they did not have an -% upper- and lower-case as we do nowadays in Western scripts. On the other -% hand, a script might be majuscule or minuscule. A \textit{majuscule} script -% is one, like our upper-case, where the letters are drawn between two lines -% and are of a uniform height with no ascenders or descenders. -% A \textit{minuscule} script, like our lower-case, is drawn between four lines -% and has ascenders and descenders. -% -% \begin{table} -% \centering -% \caption{The main manuscript book-hands} \label{tab:1} -% \begin{tabular}{lccccc} \hline -% Name & Century & x-height & Height & Pen & Normalised \\ -% & & (mm) & (nib widths) & angle & height \\ \hline -% Roman Rustic & 1--6 & 5.7 & 4--6 & 45 & 1.90 \\ -% Uncial & 3--6 & 4.1 & 4--5 & 30 & 1.37 \\ -% Half Uncial & 3--9 & 3.2 & 3--6 & 20--30 & 1.07 \\ -% Artificial Uncial & 6--10 & 4.2 & 3--6 & 10 & 1.40 \\ -% Insular majuscule & 6--9 & 4.2 & 5 & 0--20 & 1.40 \\ -% Insular minuscule & 6 onward & 4.1 & 5--6 & 45--70 & 1.37 \\ -% Carolingian minuscule & 8--12 & 3.0 & 3--5 & 45 & 1.00 \\ -% Early Gothic & 11--12 & 3.8 & 4--6 & 20--45 & 1.27 \\ -% Gothic Textura & 13--15 & 3.9 & 3--5 & 30--45 & 1.30 \\ -% Gothic Prescius & 13 onward & 3.3 & 4--5 & 45 & 1.10 \\ -% Rotunda & 13--15 & 3.2 & 4--6 & 30 & 1.07 \\ -% Humanist minuscule & 14 onward & 3.0 & 4--5 & 30--40 & 1.00 \\ \hline -% \end{tabular} -% \end{table} -% -% During the period under consideration arabic numerals were effectively -% not used. At the beginning they were unknown and even though some knew -% of them towards the end, the glyphs used for them are not recognisable --- -% to me they look somewhat like cryllic letters --- and each locality -% and time had its own highly individualistic rendering. The general rule -% when using one of these book-hands is to write all numbers using -% roman numerals. -% -% The Roman alphabet consisted of 23 capital letters --- the J, U and W -% were absent. The book-hands initially used both a `u' and a `v' interchangeably -% but by the 10th century the practice had become to use the `v' before a vowel -% and the `u' otherwise. The letter corresponding to the W sound appeared -% in England around the 7th century in -% the form of the runic \textit{wen} character and by about the 11th century -% the `w' chacter was generally used. The `J' is the newest letter of all, not -% appearing until about the mid 16th century. -% -% In the first century punctuation was virtually unknown, and typically -% would not even be any additional space between individual words, never -% mind denoting ends of sentences. Sometimes a dot at mid-height would be -% used as a word seperator, or to mark off the end of a paragraph. Effectively -% a text was a continuous stream of letters. By the time that printing was -% invented, though, all of our modern punctuation marks were being used. -% -% Among all these manuscript hands, the Carolingian minuscule is the -% most important as our modern fonts are based on its letter shapes, and it is -% also at this point in time where the division occured between the black letter -% scripts as used even today in Germany, and the lighter fonts used elesewhere. -% The Rotunda and Humanist minuscule hands were developed in Italy and were -% essentially a rediscovery of the Carolingian minusucle. Guthenberg took the -% Gothic 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 has been in use from the sixth century. -% It was originally developed in Ireland by St.~Patrick's monks -% as a less formal and faster hand than the Insular majuscule, -% the most famous example of which is the \textit{Book of Kells}. -% -% Although the letter shapes in this book-hand are principally of -% a lower-case form, there are a few that are shaped like capital letters. -% For example, the `n' appeared as both an `n' and as an `N', -% while the `f' and `r' were written like `F' and `R'. -% Some letters had multiple forms. As well as the `n' the `r' could be written -% as either `r' or `R'. -% -% The letters were written very close together and the scibes used many -% adhoc ligatures. A favourite was using a long `e' before a letter -% with a bar at the x-height, and joining the crossbar of the `e' to -% the bar of the following letter, for instance the pair `eg'. -% I have only provided the ampersand, `\&', as a ligature, standing for -% `et' which is the Latin for `and'. -% Letters were also stretched if a line -% needed some filling. For example, the capital form of the `N' might be -% stretched to 2 or 3 times its normal width. -% -% Usually the -% lettering in a manuscript was all one size. If the scribe felt the need -% for `capital' letters then, using the same pen, would either write a larger -% \thisfont{} letter or a letter from one of the more formal book-hands. -% I have provided a set of `capital' letters that are only a little larger -% than the normal letters for use in running text. -% During the time the \thisfont{} script was used the alphabet only had 24 -% letters. I have included the missing J. -% -% Arabic numerals were unknown at this time, so all numbers were written -% using the roman numbering system. I have provided \thisfont{} versions of -% the arabic digits. -% -% Punctuation was used, but not with the frequency of today. -% A sentence might be ended with -% a dot at mid-height or a paragraph ended with a colon, also at mid-height. -% The comma was was a small -% slash; the semi-colon was known, as was the single quotation -% mark which was represented by a raised comma. -% -% -% \section{The \Lpack{inslrmin} and \Lpack{allimin} packages} \label{sec:usc} -% -% The \thisfont{} font family is called |imin|. The font is supplied in both -% OT1 and T1 encodings. -% -% \subsection{The \Lpack{inslrmin} 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{\iminfamily} -% The |\iminfamily| 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{\textimin} -% The command |\textimin{|\meta{text}|}| will typeset \meta{text} using the -% \thisfont{} fonts. -% -% \subsection{The \Lpack{allimin} 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{allimin} package automatically loads the \Lpack{inslrmin} package, -% so its font commands are available if necessary. -% -% \StopEventually{ -% \bibliographystyle{alpha} -% \renewcommand{\refname}{Bibliography} -% \begin{thebibliography}{GMS94} -% \addcontentsline{toc}{section}{\refname} -% -% \bibitem[And69]{ANDERSON69} -% Donald M.~Anderson. -% \newblock {\em The Art of Written Forms: The Theory and Practice of Calligraphy}. -% \newblock Holt, Rinehart and Winston, 1969. -% -% \bibitem[Bol95]{BOLOGNA95} -% Giulia Bologna. -% \newblock {\em Illuminated Manuscripts: The Book before Gutenberg}. -% \newblock Crescent Books, 1995. -% -% \bibitem[Day95]{DAY95} -% Lewis F.~Day. -% \newblock {\em Alphabets Old \& New}. -% \newblock (3rd edition originally published by B.~T.~Batsford, 1910) -% \newblock Senate, 1995. -% -% \bibitem[Dro80]{DROGIN80} -% Marc Drogin. -% \newblock {\em Medieval Calligraphy: Its History and Technique}. -% \newblock Allenheld, Osmun \& Co., 1980. -% -% \bibitem[Dru95]{DRUCKER95} -% Johanna Drucker. -% \newblock {\em The Alphabetic Labyrinth}. -% \newblock Thames \& Hudson, 1995. -% -% \bibitem[Fir93]{FIRMAGE93} -% Richard A.~Firmage. -% \newblock {\em The Alphabet Abecedarium}. -% \newblock David R~Goodine, 1993. -% -% \bibitem[Fli98]{LETTRINE} -% Daniel Flipo. -% \newblock {\em The LETTRINE package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1998. -% -% \bibitem[Har95]{HARRIS95} -% David Harris. -% \newblock {\em The Art of Calligraphy}. -% \newblock DK Publishing, 1995. -% -% \bibitem[Jen95]{BETON} -% Frank Jensen. -% \newblock {\em The BETON package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1995. -% -% \bibitem[Joh71]{JOHNSTON75} -% Edward Johnston (ed. Heather Child). -% \newblock {\em Formal Penship and Other Papers}. -% \newblock Penthalic, 1971. -% -% \bibitem[Knu87]{CM} -% Donald E.~Knuth. -% \newblock {\em Computer Modern Typefaces}. -% \newblock Addison-Wesley, 1987. -% -% \bibitem[Knu92]{METAFONT} -% Donald E.~Knuth. -% \newblock {\em The METAFONTbook}. -% \newblock Addison-Wesley, 1992. -% -% \bibitem[GMS94]{GOOSSENS94} -% Michel Goossens, Frank Mittelbach, and Alexander Samarin. -% \newblock {\em The LaTeX Companion}. -% \newblock Addison-Wesley Publishing Company, 1994. -% -% \bibitem[Tho75]{THOMAS75} -% Alan G.~Thomas. -% \newblock {\em Great Books and Book Collectors}. -% \newblock Weidenfield and Nichoson, 1975. -% -% \bibitem[Wil99]{DOCMFP} -% Peter R.~Wilson. -% \newblock {\em The DOCMFP Package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1999. -% -% \bibitem[Wil99b]{ROMANNUM} -% Peter R.~Wilson. -% \newblock {\em The ROMANNUM Package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1999. -% -% \end{thebibliography} -% } -% -% \section{The Metafont code} \label{sec:mf} -% -% -% As previously noted, this work is part of a larger project to provide -% fonts covering the main manuscript book-hands. As such, one of the -% aims is to produce a coordinated set of fonts, especially as multiple -% hands might be used in a single document. -% -% Noting that the hands tend to be somewhat larger than the typical 10pt -% size (where the x-height is approximately 1.5mm) used for modern books, -% I have also designed the fonts -% at a larger than normal size, then applied some non-linear factors when reducing -% them down to a 10pt size. -% Further, I have used the height of the Carolingian minuscule as a -% normalising factor when deciding on the absolute height of any particular -% script. The x-height of the Carolingian font is made equal to the -% x-height of the Computer Modern Roman (CMR) font. -% -% Modern fonts are effectively drawn. That is, the outline of the letter is -% drawn carefully and the center is filled with ink. This is shown to good -% effect in the Metafont code for the Computer Modern fonts~\cite{CM}. -% In contrast, the manuscript letters were inked by single pen strokes in -% a calligraphic manner. I have tried to repeat this calligraphic style -% in the Metafont code. -% -% As much as possible I have tried to use parameter values from the -% Computer Modern Roman (CMR) fonts in order to reduce possible -% infelicities if the CM and manuscript fonts are used together. However, -% few of the CMR parameters are applicable to the calligraphic style. -% -% -% \subsection{The parameter file} -% -% We deal with the parameter files first, and start by announcing -% what they are for. The \thisfont{} font comes in three sizes and also as a normal -% and a bold font. -% \begin{macrocode} -%<*base7|base10|base17|base7b|base10b|base17b> -%%%% IMIN7.MF Insular Minuscule at 7 point design size. -%%%% IMIN10.MF Insular Minuscule at 10 point design size. -%%%% IMIN17.MF Insular Minuscule at 17 point design size. -%%%% IMINB7.MF Insular Minuscule Bold at 7 point design size. -%%%% IMINB10.MF Insular Minuscule Bold at 10 point design size. -%%%% IMINB17.MF Insular Minuscule 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 - -%font_identifier:="IMIN"; font_size 7pt#; -%font_identifier:="IMIN"; font_size 10pt#; -%font_identifier:="IMIN"; font_size 17.28pt#; -%font_identifier:="IMINB"; font_size 7pt#; -%font_identifier:="IMINB"; font_size 10pt#; -%font_identifier:="IMINB"; font_size 17.28pt#; - -% \end{macrocode} -% -% \DescribeVariable{jutstretch} -% The CMR scaling for lowercase serifs wrt 17pt size. -% \begin{macrocode} -% jutstretch:=1.19; -% jutstretch:=1.152; -% jutstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{stemstretch} -% The CMR scaling for lowercase stem widths wrt 17pt size. -% \begin{macrocode} -% stemstretch:=1.50; -% stemstretch:=1.31; -% stemstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{caprat} -% The scaling for `capitals' wrt `lowercase'. This is pretty much a guess -% (the ratio for CMR10 is 1.59). -% \begin{macrocode} - caprat:=1.5; % ratio of capital height to minuscule height -% \end{macrocode} -% -% \DescribeVariable{cap_jutstretch} -% The CMR scaling for uppercase serifs wrt 17pt size. -% \begin{macrocode} -% cap_jutstretch:=1.3; -% cap_jutstretch:=1.2; -% cap_jutstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{cap_stemstretch} -% The CMR scaling for uppercase stem width wrt 17pt size. -% \begin{macrocode} -% cap_stemstretch:=1.45; -% cap_stemstretch:=1.31; -% cap_stemstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{bfudge} -% Letter width scaling for bold font wrt normal font. -% \begin{macrocode} -% bfudge:=1.0; -% bfudge:=1.2; -% \end{macrocode} -% -% \DescribeVariable{szfudge} -% Width scaling wrt 17pt letter width. -% \begin{macrocode} -% szfudge:=1.18; -% szfudge:=1.0; -% 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} -% carol_height#:=108.5/36pt#; -% carol_height#:=155/36pt#; -% carol_height#:=268/36pt#; -% \end{macrocode} -% -% \DescribeVariable{vstretch} -% The height of this font wrt the Carolingian font. -% \begin{macrocode} - vstretch:=1.37; - -% \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} -% u#:=15.5/36pt#; -% u#:=20/36pt#; -% u#:=32.5/36pt#; -% u#:=17.9/36pt#; -% u#:=23/36pt#; -% 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 -% cap_serif_fit#:=3.5/36pt#; % extra sidebar near uppercase serifs -% cap_serif_fit#:=5/36pt#; % extra sidebar near uppercase serifs -% cap_serif_fit#:=8/36pt#; % extra sidebar near uppercase serifs -% letter_fit#:=0pt#; % extra space added to all sidebars -% letter_fit#:=0pt#; % extra space added to all sidebars -% 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} -% sb#:=1/2u#; % unit for side bearings -% sb#:=1/2u#; % unit for side bearings -% sb#:=1/2u#; % unit for side bearings - -% \end{macrocode} -% -% \DescribeVariable{cap_height} -% The height of capital letters. -% \begin{macrocode} -% cap_height#:=172.2/36pt#; % height of caps -% cap_height#:=246/36pt#; % height of caps -% cap_height#:=425/36pt#; % height of caps -% \end{macrocode} -% -% \DescribeVariable{thickfudge} -% The reciprocal of the font height in nib widths. Normal font height -% is 6 nib widths and the bold font height is 5 nib widths. -% \begin{macrocode} -% thickfudge:=1/6; -% thickfudge:=1/5; -% \end{macrocode} -% -% \DescribeVariable{thinfudge} -% The nib sharpness. -% \begin{macrocode} -thinfudge:=1/6; -% \end{macrocode} -% -% \DescribeVariable{thick} -% The maximum nib width. -% That is, the width of the thickest line that can be penned. -% \begin{macrocode} -thick#:=stemstretch*thickfudge*x_height#; % max pen breadth -% \end{macrocode} -% -% \DescribeVariable{thin} -% The nib thinness. -% That is, the width of the thinnest line that can be penned. -% \begin{macrocode} -thin#:=thinfudge*thick#; -% \end{macrocode} -% -% \DescribeVariable{pangle} -% The pen angle (in degrees). -% \begin{macrocode} -pangle:=45; % pen angle -% \end{macrocode} -% -% \DescribeVariable{ascratio} -% The height of lower case ascenders wrt |x_height|. -% \begin{macrocode} - ascratio:=6/4; -% \end{macrocode} -% -% \DescribeVariable{asc_height} -% The height of lower case ascenders. -% \begin{macrocode} - asc_height#:=ascratio*x_height#; -% \end{macrocode} -% -% \DescribeVariable{descratio} -% The depth of lower case descenders wrt |x_height|. -% \begin{macrocode} - descratio:=5/4; -% \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} -% rule_thickness#:=.34pt#; -% rule_thickness#:=.4pt#; -% rule_thickness#:=.6pt#; - -% \end{macrocode} -% -% \DescribeVariable{jutfudge} -% Controls the protrusion of serifs. -% \begin{macrocode} -jutfudge:= 3/4; -%%%%jutfudge:= 1/2; -% \end{macrocode} -% -% \DescribeVariable{jut} -% The lowercase serif protrusion. -% \begin{macrocode} -jut#:=jutstretch*jutfudge*thick#; -% \end{macrocode} -% -% \DescribeVariable{srad} -% |srad| with |0 < srad < 1| controls the serif radius. -% \begin{macrocode} -srad:=0.8; % was 0.5 -% \end{macrocode} -% -% \DescribeVariable{trijut} -% The lowercase triangular serif protrusion. -% \begin{macrocode} -trijut#:=0.75jutstretch*thick#; -% \end{macrocode} -% -% \DescribeVariable{clubjut} -% The fractional protusion of the club base. -% \begin{macrocode} -clubjut:=5/12; -% \end{macrocode} -% -% \DescribeVariable{o} -% Amount of overshoot for curves (as in an `o'). Use CMR values. -% \begin{macrocode} -% o#:=5/36pt#; -% o#:=8/36pt#; -% o#:=10/36pt#; - -% \end{macrocode} -% -% \DescribeVariable{slant} -% |slant| is the amount the font slopes to the right. -% \begin{macrocode} -slant:=0; % tilt ratio $(\Delta x/\Delta y)$ - -% \end{macrocode} -% -% \DescribeVariable{monospace} -% We are generating a variable-width font. -% \begin{macrocode} -monospace:=false; % should all characters have the same width? - -% \end{macrocode} -% -% \DescribeVariable{dot_size} -% The size of (punctuation) dots. -% \begin{macrocode} -dot_size#:=5thin#; % size of dots -% \end{macrocode} -% -% \DescribeVariable{comma_width} -% The horizontal width of a comma. -% \begin{macrocode} -comma_width#:=2.5dot_size#; - -% \end{macrocode} -% -% Finally, call the driver file for the font. -% \begin{macrocode} -generate imintitle %% switch to the driver file - -% \end{macrocode} -% -% The end of this code section. -% \begin{macrocode} -% -% \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 IMINTITLE.MF for the Insular Minuscule 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}{inslrmin_font_setup} -% This macro contains the set up for the \thisfont{} fonts. -% \begin{macrocode} - -def inslrmin_font_setup= % contains special stuff for inslrmin fonts - define_pixels(side,half_height,carol_height,comma_width); - define_pixels(u,dot_size,letter_size,cap_height,width_adj,serif_fit, - cap_serif_fit,jut,cap_jut,trijut); - define_pixels(fig_width); - define_whole_pixels(letter_fit,sb); - define_whole_vertical_pixels(body_height,asc_height,cap_height,x_height, - desc_depth,body_depth,fig_height); - define_corrected_pixels(o); - define_blacker_pixels(thick,thin); - let adjust_fit = normal_adjust_fit; -% \end{macrocode} -% \DescribeVariable{stylus} -% The pen for drawing the thinnest lines is |stylus|. -% \begin{macrocode} - pickup pencircle scaled thin; - stylus:=savepen; -% \end{macrocode} -% \DescribeVariable{thickstylus} -% The pen for drawing lines a bit thicker than the thinnest is |thickstylus|. -% \begin{macrocode} - pickup pencircle scaled (1.5thin); - thickstylus:=savepen; -% \end{macrocode} -% \DescribeVariable{quill} -% The normal calligraphic pen is |quill|. -% \begin{macrocode} - pickup pencircle xscaled thick yscaled thin rotated pangle; - quill:=savepen; - numeric pcshiftx#; % x value of LHS of box wrt origin of char box - define_pixels(pcshiftx); - numeric sqxside#; % x size of the square - numeric sqyside#; % y size of the square - define_pixels(sqxside,sqyside); - -enddef; % end of inslrmin_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 $0y$$: - 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 $0y$$: - 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_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 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; -inslrmin_font_setup; - -% \end{macrocode} -% -% -% We generate letters, together with some punctuation and -% analphabetics. -% \begin{macrocode} - -input iminl; % lower case -input iminu; % capitals -input iminpunct; % punctuation -input iminlig; % the several dashes -input imindig; % 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. - -% \end{macrocode} -% -% \begin{macrocode} - k#:=-.5u#; kk#:=-1.5u#; kkk#:=-2u#; % three degrees of kerning - kks#:=-4u#; kkx#:=-1.5u#; kkj#:=-2u#; kkr#:=-5u#; kkrs#:=-2u#; kkrl#:=-8u#; - ligtable "s": - "a" kern kks#, "A" kern kks#, - "c" kern kks#, "C" kern kks#, - "d" kern kks#, "D" kern kks#, - "e" kern kks#, "E" kern kks#, - "f" kern kks#, "F" kern kks#, - "g" kern kks#, "G" kern kks#, - "i" kern kks#, "I" kern kks#, - "j" kern kks#, "J" kern kks#, - "k" kern kks#, "K" kern kks#, - "m" kern kks#, "M" kern kks#, - "n" kern kks#, "N" kern kks#, - "o" kern kks#, "O" kern kks#, - "p" kern kks#, "P" kern kks#, - "q" kern kks#, "Q" kern kks#, - "r" kern kks#, "R" kern kks#, - "t" kern kks#, "T" kern kks#, - "u" kern kks#, "U" kern kks#, - "v" kern kks#, "V" kern kks#, - "w" kern kks#, "W" kern kks#, - "x" kern kks#, "X" kern kks#, - "y" kern kks#, "Y" kern kks#, - "z" kern kks#, "Z" kern kks#; - - ligtable "S": - "a" kern kks#, "A" kern kks#, - "c" kern kks#, "C" kern kks#, - "d" kern kks#, "D" kern kks#, - "e" kern kks#, "E" kern kks#, - "f" kern kks#, "F" kern kks#, - "g" kern kks#, "G" kern kks#, - "i" kern kks#, "I" kern kks#, - "j" kern kks#, "J" kern kks#, - "k" kern kks#, "K" kern kks#, - "m" kern kks#, "M" kern kks#, - "n" kern kks#, "N" kern kks#, - "o" kern kks#, "O" kern kks#, - "p" kern kks#, "P" kern kks#, - "q" kern kks#, "Q" kern kks#, - "r" kern kks#, "R" kern kks#, - "t" kern kks#, "T" kern kks#, - "u" kern kks#, "U" kern kks#, - "v" kern kks#, "V" kern kks#, - "w" kern kks#, "W" kern kks#, - "x" kern kks#, "X" kern kks#, - "y" kern kks#, "Y" kern kks#, - "z" kern kks#, "Z" kern kks#; - - ligtable "x": - "a" kern kkx#, "A" kern kkx#, - "b" kern kkx#, "B" kern kkx#, - "c" kern kkx#, "C" kern kkx#, - "d" kern kkx#, "D" kern kkx#, - "e" kern kkx#, "E" kern kkx#, - "g" kern kkx#, "G" kern kkx#, - "j" kern kkx#, "J" kern kkx#, - "l" kern kkx#, "L" kern kkx#, - "o" kern kkx#, "O" kern kkx#, - "q" kern kkx#, "Q" kern kkx#, - "t" kern kkx#, "T" kern kkx#, - "u" kern kkx#, "U" kern kkx#, - "v" kern kkx#, "V" kern kkx#, - "w" kern kkx#, "W" kern kkx#, - "y" kern kkx#, "Y" kern kkx#; - - ligtable "X": - "a" kern kkx#, "A" kern kkx#, - "b" kern kkx#, "B" kern kkx#, - "c" kern kkx#, "C" kern kkx#, - "d" kern kkx#, "D" kern kkx#, - "e" kern kkx#, "E" kern kkx#, - "g" kern kkx#, "G" kern kkx#, - "j" kern kkx#, "J" kern kkx#, - "l" kern kkx#, "L" kern kkx#, - "o" kern kkx#, "O" kern kkx#, - "q" kern kkx#, "Q" kern kkx#, - "t" kern kkx#, "T" kern kkx#, - "u" kern kkx#, "U" kern kkx#, - "v" kern kkx#, "V" kern kkx#, - "w" kern kkx#, "W" kern kkx#, - "y" kern kkx#, "Y" kern kkx#; - - ligtable "a": "A": - "b": "B": - "c": "C": - "d": "D": - "e": "E": - "h": "H": - "i": "I": - "k": "K": - "l": "L": - "m": "M": - "n": "N": - "o": "O": - "p": "P": - "t": "T": - "u": "U": - "v": "V": - "w": "W": - "z": "Z": - "j" kern kkj#, "J" kern kkj#; - - ligtable "r": - "a" kern kkr#, "A" kern kkr#, - "b" kern kkr#, "B" kern kkr#, - "c" kern kkr#, "C" kern kkr#, - "d" kern kkr#, "D" kern kkr#, - "e" kern kkr#, "E" kern kkr#, - "f" kern kkrs#, "F" kern kkrs#, - "g" kern kkrs#, "G" kern kkrs#, - "h" kern kkr#, "H" kern kkr#, - "i" kern kkr#, "I" kern kkr#, - "j" kern kkj#, "J" kern kkj#, - "k" kern kkrs#, "K" kern kkrs#, - "l" kern kkr#, "L" kern kkr#, - "m" kern kkr#, "M" kern kkr#, - "n" kern kkrs#, "N" kern kkrs#, - "o" kern kkr#, "O" kern kkr#, - "p" kern kkrs#, "P" kern kkrs#, - "q" kern kkr#, "Q" kern kkr#, - "r" kern kkrs#, "R" kern kkrs#, - "s" kern kkr#, "S" kern kkr#, - "t" kern kkr#, "T" kern kkr#, - "u" kern kkr#, "U" kern kkr#, - "v" kern kkr#, "V" kern kkr#, - "w" kern kkr#, "W" kern kkr#, - "x" kern kkx#, "X" kern kkx#, - "y" kern kkr#, "Y" kern kkr#, - "z" kern kkr#, "Z" kern kkr#; - - ligtable "R": - "a" kern kkr#, "A" kern kkr#, - "b" kern kkr#, "B" kern kkr#, - "c" kern kkr#, "C" kern kkr#, - "d" kern kkr#, "D" kern kkr#, - "e" kern kkr#, "E" kern kkr#, - "f" kern kkrs#, "F" kern kkrs#, - "g" kern kkrs#, "G" kern kkrs#, - "h" kern kkr#, "H" kern kkr#, - "i" kern kkr#, "I" kern kkr#, - "j" kern kkj#, "J" kern kkj#, - "k" kern kkrs#, "K" kern kkrs#, - "l" kern kkr#, "L" kern kkr#, - "m" kern kkr#, "M" kern kkr#, - "n" kern kkrs#, "N" kern kkrs#, - "o" kern kkr#, "O" kern kkr#, - "p" kern kkrs#, "P" kern kkrs#, - "q" kern kkr#, "Q" kern kkr#, - "r" kern kkrs#, "R" kern kkrs#, - "s" kern kkr#, "S" kern kkr#, - "t" kern kkr#, "T" kern kkr#, - "u" kern kkr#, "U" kern kkr#, - "v" kern kkr#, "V" kern kkr#, - "w" kern kkr#, "W" kern kkr#, - "x" kern kkx#, "X" kern kkx#, - "y" kern kkr#, "Y" kern kkr#, - "z" kern kkr#, "Z" kern kkr#; - - -fi - -bye. - -% -% \end{macrocode} -% -% \subsection{The code for normal letters} -% -% The following code is for the lower case characters. -% -% \begin{macrocode} -%<*min> -% IMINL.MF Program file for Insular Minuscule lower case -% - -% \end{macrocode} -% -% -% \begin{routine}{a} -% The letter `a'. -% \begin{macrocode} -cmchar "IMIN letter a"; -beginchar("a", 2sb#+hstretch*(3/4x_height#+jut#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pair pr[]; -pickup quill; -n1 := w - 2pcshiftx -jut; % effective letter width -% "stem" -x1 = pcshiftx + 2/3n1; top y1=h; -rt x2 = pcshiftx + n1; bot y2=0; -z16 = 1/6[z2,z1]; -rt x6 = x16; y6=y16; -lft x4 = pcshiftx; y4 = 1/2h; -% stem path -pth1 := z1{down}..z2; -pr1 := direction 1 of pth1; -z20 = z2 shifted -10pr1; -%%ductus:=true; -if ductus: - pickup stylus; -else: - % draw stem - draw pth1; - draw_roundserif(2,20,srad); - % draw bowl - draw z1{-pdir}..z4{down}..z6{pdir}; -fi -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,100); -endchar; % end "a" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{b} -% The letter `b'. -% \begin{macrocode} -cmchar "IMIN letter b"; -beginchar("b", 2sb#+hstretch*(3/4x_height#), - asc_height#, 0); -adjust_fit(0,0); -numeric n[]; -path pth[]; -pcshiftx := sb; -pickup quill; -n1:=w-2pcshiftx; % actual letter width -n2:=h/ascratio; % top of bowl -%%ductus:=true; -lft x1 = pcshiftx+jut; top y1=h; -lft x3 = pcshiftx; y3=1/2n2; -rt x5 = w-pcshiftx; y5=y3; -x4 = 1/2[x3,x5]; bot y4=0; -x6=x4; top y6=n2; -pth1 := z1..z3{down}..z4{right}.. z5{up}; -z98=(0,3/4n2); z99=(w,y98); -pth2 := z98--z99; -z7 = pth1 intersectionpoint pth2; -if ductus: - pickup stylus; -fi -draw z1..z3{down}..z4{right}..z5{up}..z6{left}..z7{-pdir}; -draw_flatserif(1,7,srad); -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 "IMIN letter c"; -beginchar("c", 2sb#+hstretch*(5/8x_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{pdir}; -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'. There is a choice between a curved and straight stem. -% I have done the straight one. -% \begin{macrocode} -cmchar "IMIN letter d"; -beginchar("d", 2sb#+hstretch*(3/4x_height#), - asc_height#, 0); -adjust_fit(0,0); -numeric n[]; -path pth[]; -pcshiftx := sb; -pickup quill; -lft x1=pcshiftx; top y1=h; -rt x3 = w-pcshiftx; y3 = 1/2h/ascratio; -x4 = 1/2[x1,x3]; bot y4 = 0; -z5=(x1,y3); -z98=(0,h/ascratio); z99=(w,y98); pth2 := z98--z99; -pth1 := z1{-ppdir}..z3{down}..z4{left}; -z6 = pth1 intersectionpoint pth2; -if ductus: - pickup stylus; -fi -draw z1{-ppdir}..z3{down}..z4{left}..z5{up}..z6{pdir}; -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 "IMIN letter e"; -beginchar("e", sb#+hstretch*(5/4x_height#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pickup quill; -n1 := w-pcshiftx; % actual letter width -n2 := 4/8n1; % width of bowl -x1 = pcshiftx + 5/8n2; top y1=h; -lft x2 = pcshiftx; y2 = 1/2h; -x3 = pcshiftx + 1/2n2; bot y3 = 0; -rt x4 = pcshiftx + n2; y4 = 1/4h; -z98=(0,3/8h); z99=(w,y98); -pth1 := z98--z99; -pth2 := z1{left}..z2{down}..z3{right}; -z7 = pth1 intersectionpoint pth2; -rt x9 = w-pcshiftx; y9 = 3/4h; -z8=1/2[z7,z9]; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z7{pdir}..z1{left}..z2{down}..z3{right}..z4{pdir}; -draw z7{pdir}..z8{right}..z9{pdir}; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,100); -endchar; % end "e" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{f} -% The letter `f'. -% \begin{macrocode} -cmchar "IMIN letter f"; -beginchar("f", 2sb#+hstretch*(3/4x_height#+jut#), - (x_height#), desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -%% stem -lft x1=lft x2=pcshiftx+jut; -top y1=h; y2=-1/2d; -lft x20=0; bot y20=-d; -%% bottom bar -z4=(rt x1,-thin); rt x6=w-pcshiftx; y6=y4+2thin; z5=1/2[z4,z6]; -%% top bar -x7= x1; bot y7 = 1/2h; -rt x9= w-pcshiftx; y9 = 1/2[y7,y1]; -x8 = 2/3[x7,x9]; top y8 = h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw z2{down}..z20{-pdir}; -draw_flatserif(1,2,srad); -draw z4{dir(45)}..z5{right}..z6{dir(45)}; % bottom bar -%%draw_flick(7, 2thin, thin, (w-pcshiftx-x7+1/2thick)); % top bar -draw z7..z8..z9; % top bar -ductus:=false; -penlabels(1,2,3,4,5,6,7,100); -endchar; % end "f" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{g} -% The letter `g'. -% \begin{macrocode} -cmchar "IMIN letter g"; -beginchar("g", 2sb#+hstretch*(x_height#), - x_height#, desc_depth#); -adjust_fit(0,0); -path pth[]; -pair vec[]; -pcshiftx := sb; -pickup quill; -%% top bar -lft x1=pcshiftx; top y1=h; rt x2=w-pcshiftx; top y2=h; -x3=1/2[x1,x2]; bot y3=1/8h; -rt x5 = w-pcshiftx; y5 = -1/2d; -x6 = x3; bot y6 = -d; -x7 = 1/2[x1,x3]; y7 = y5; -x8=x3; y8 = -y3; -%%ductus:=true; -if ductus: - pickup stylus; - draw z1--z2; % top bar - draw pth1; draw pth2; % curves - draw rt z8--z9; % diagonal -else: - draw z1--z2; - draw z2--z3; - draw z3{pdir}..z5{down}..z6{left}..z7{up}..z8{pdir}; - draw_roundserif(1,2,srad); -fi -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,100); -endchar; % end "g" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{h} -% The letter `h'. -% \begin{macrocode} -cmchar "IMIN letter h"; -beginchar("h", 2sb#+hstretch*(7/8x_height#+jut#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -numeric n[]; -%% stem -lft x1=lft x2=pcshiftx+jut; -top y1=h; bot y2=0; -%% bowl -z3=1/2[z2,z1]; -rt x5 = w-pcshiftx; y5=y3; -x4=1/2[x3,x5]; top y4 = h/ascratio; -lft x6=x4; bot y6=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -draw z3{pdir}..z4..z5..z6{-pdir}; - -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 "IMIN letter i"; -beginchar("i", 2sb#+hstretch*(thick#+2jut#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -lft x1=lft x2=pcshiftx+jut; -top y1=h; bot y2=0; -%%ductus:=true; -draw_tstem(1,2,srad); -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -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 "IMIN letter j"; -beginchar("j", sb#+hstretch*(3/8x_height#), - x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% stem -rt x1 = w-pcshiftx; top y1 = h; -x2=x1; y2=-1/2d; -%% bottom hook -lft x3 = 0; bot y3 = -d; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2; % stem -draw_flatserif(1,2,srad); -draw z2{down}..z3{-pdir}; % hook -ductus:=false; -penlabels(1,2,3,100); -endchar; % end "j" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{k} -% The letter `k'. -% \begin{macrocode} -cmchar "IMIN letter k"; -beginchar("k", 2sb#+hstretch*(x_height#+jut#), - asc_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -%% stem -lft x1=lft x2=pcshiftx+jut; -top y1=h; y2=-1/2d; -lft x20=pcshiftx; bot y20=-d; -%% top arm -z3=(x1,1/2h/ascratio); -rt x5=w-pcshiftx; y5=1/2[y3,y4]; -x4=1/2[x3,x5]; top y4=h/ascratio; -%% lower arm -x7=x5; bot y7=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw z2{down}..z20{-pdir}; -draw_flatserif(1,2,srad); -draw z3..z4{right}..z5; % upper arm -draw z3..{right}z7; % lower arm -ductus:=false; -penlabels(1,2,3,4,5,100); -endchar; % end "k" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{l} -% The letter `l'. -% \begin{macrocode} -cmchar "IMIN letter l"; -beginchar("l", 2sb#+hstretch*(3/4x_height#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -lft x2=pcshiftx; y2=1/5h; -x1=x2+jut; top y1=h; -rt x4=w-pcshiftx; y4=1/5h; -x3=1/2[x2,x4]; bot y3=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1{down}..z2..z3{right}..z4; -draw_flatserif(1,2,srad); -ductus:=false; -penlabels(1,2,3,4,100); -endchar; % end "l" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{m} -% The letter `m'. -% \begin{macrocode} -cmchar "IMIN letter m"; -beginchar("m", 2sb#+hstretch*(x_height#+2jut#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pickup quill; -%% left stem -lft x1=pcshiftx+jut; top y1=h; -x2=x1; bot y2=0; -%% start of bowl -x13=x1; y13=3/4h; -%% bottom of right and middle stems -rt x6 = w -pcshiftx - jut; y6=y2; -z4 = 1/2[z2,z6]; -%% top of middle and right stems -x3=x4; y3=y1; -x5=x6; y5=y13; -%% top of bowls -x14=2/3[x13,x3]; top y14 = h; -x33=x4; y33=y13; -x34=2/3[x33,x5]; y34 = y14; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % left half -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -draw z13{pdir}..z14{right}..z33{down}--z4; -draw_roundserif(4,3,srad); -draw z33{pdir}..z34{right}..z5{down}--z6; -draw_roundserif(6,5,srad); -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'. This could be like a capital `N' or a lower-case `n'. -% I have chosen to do the second form. -% \begin{macrocode} -cmchar "IMIN letter n"; -beginchar("n", 2sb#+hstretch*(5/8x_height#+2jut#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -%% left stem -lft x1=pcshiftx+jut; top y1=h; -x2=x1; bot y2=0; -% start of bowl -x13=x1; y13=3/4h; -%% right stem -rt x4 = w-pcshiftx-jut; y4=y2; -x3 = x4; y3 = y13; -% top of bowl -x14 = 2/3[x13,x3]; top y14 = h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % left stem -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -draw z13{pdir}..z14{right}..z3{down}--z4; -draw_roundserif(4,3,srad); -ductus:=false; -penlabels(1,2,3,4,5,6,13,14,100); -endchar; % end "n" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{o} -% The letter `o'. -% \begin{macrocode} -cmchar "IMIN letter o"; -beginchar("o", 2sb#+hstretch*(3/4x_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; -draw z1..z2..z3..z4..cycle; -z5=(pcshiftx,-o); -obowl(5, w-2pcshiftx, h+2o); -%%ductus:=true; -if ductus: - pickup stylus; - draw obfirst; draw obsecond; draw obouter; draw obinner; -else: -%% fill obouter; unfill obinner; -fi -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 "IMIN letter p"; -beginchar("p", 2sb#+hstretch*(3/4x_height#+jut#), - x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% stem -lft x1=lft x2=pcshiftx+jut; -top y1=h; bot y2=-1/2d; -lft x20 = pcshiftx; bot y20 = -d; -%% bowl % from "h" -z3=3/4[(x1,0),z1]; -rt x5 = w-pcshiftx; y5=y3; -x4=1/2[x3,x5]; top y4 = h; -lft x6=x4; bot y6=0; - -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_flatserif(1,2,srad); -draw z2{down}..z20{-pdir}; -draw z3{pdir}..z4..z5..z6{-pdir}; % bowl (from h) -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 "IMIN letter q"; -beginchar("q", 2sb#+hstretch*(3/4x_height#), - x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% right stem -rt x1=w-pcshiftx; top y1=h; -x2=x1; bot y2=-1/2d; -x20 = x1-jut; bot y20=-d; -%% bowl -z3=1/4[(x1,0),z1]; -lft x5=pcshiftx; y5=y3; -x4=1/2[x3,x5]; bot y4=0; -x6=x1-jut; top y6=h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); -draw z2{down}..z20{-pdir}; % stem -draw_flatserif(1,2,srad); -draw z3{-pdir}..z4{left}..z5{up}..z6{pdir}; -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 "IMIN letter r"; -beginchar("r", sb#+hstretch*(7/8x_height#+jut#), - x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% stem -lft x1=lft x2=pcshiftx+jut; -top y1=h; bot y2=-1/2d; -lft x20 = pcshiftx; bot y20 = -d; -%% bowl -z3=3/4[(x1,0),z1]; -rt x5 = w-pcshiftx; y5=y3; -x4=1/2[x3,x5]; top y4 = h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_flatserif(1,2,srad); -draw z2{down}..z20{-pdir}; - -draw z3{pdir}..z4{right}..z5{pdir}; - -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,100); -endchar; % end "r" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{s} -% The letter `s'. This is a `long' S. -% \begin{macrocode} -cmchar "IMIN letter s"; -beginchar("s", 2sb#+hstretch*(3/4x_height#+jut#), - asc_height#, desc_depth#); -adjust_fit(0,0); -numeric n[]; -pcshiftx := sb; -pickup quill; -%% stem -lft x1=lft x2=pcshiftx+jut; top y1=h/ascratio; bot y2=-1/2d; -lft x20=pcshiftx; bot y20=-d; -%% flick -x4=x2; y4 = 1/2h/ascratio; -rt x6=w-pcshiftx; y6 = 2/3h; -x5 = 2/3[x4,x6]; top y5=h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw z2{down}..z20{-pdir}; -draw_flatserif(1,2,srad); -draw z4{up}...z5{right}...z6; -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 "IMIN letter t"; -beginchar("t", 2sb#+hstretch*(5/4x_height#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% bar -lft x1 = pcshiftx; top y1=h; rt x2=w-pcshiftx; bot y2=h; -n1 := w; % width of bowl -n2 := h; % height of bowl -z3=1/2[z1,z2]; -lft x4 = pcshiftx + 1/8n1; y4 = 1/2h; -x5=x3; bot y5 = 0; -rt x6 = pcshiftx + 3/4n1; top y6 = 1/4h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1{pdir}..z3..z2{pdir}; % bar -draw z3..z4{down}..z5{right}..z6{pdir}; -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 "IMIN letter u"; -beginchar("u", 2sb#+hstretch*(5/8x_height#+2jut#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% left stem -lft x1 = pcshiftx + jut; top y1 = h; -% start of bowl -x13=x1; y13=1/3h; -% right stem -rt x3=w-pcshiftx-jut; 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; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z13{down}..z14{right}..z33{pdir}; -draw_flatserif(1,13,srad); -draw_tstem(3,4,srad); % right stem -draw_flatserif(3,4,srad); -draw_roundserif(4,3,srad); -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 "IMIN letter v"; -beginchar("v", 2sb#+hstretch*(3/4x_height#+jut#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -%% left stem -lft x1 = pcshiftx + jut; top y1 = h; -% start of bowl -x13=x1; y13=1/3h; -% right stem -rt x3=w-pcshiftx-jut; 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; -rt x23=w-pcshiftx; y23=3/4h; -lft x26=x14; top y26=h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z13{down}..z14{right}; % left stem -draw_flatserif(1,13,srad); -draw z14{pdir}..z23{up}..z26; - -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 "IMIN letter w"; -beginchar("w", 2sb#+hstretch*(x_height#+2jut#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -%% left stem -lft x1 = pcshiftx + jut; top y1 = h; -% start of bowl -x13=x1; y13=1/3h; -% right stem -rt x5=w-pcshiftx-jut; y5=y1; -x6=x5; bot y6=0; -z53=1/4[z6,z5]; % start of bowl -% middle stem -z3 = 1/2[z1,z5]; -z33=(x3,y13); -% middle of bowl -x14=1/3[x1,x3]; bot y14=0; -% middle of right bowl -x34=1/3[x3,x5]; y34=y14; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z13{down}..z14{right}..z33{pdir}; % left -draw_flatserif(1,13,srad); -draw z3--z33{down}..z34{right}..z53{pdir}; % middle -draw_flatserif(3,33,srad); -draw_tstem(5,6,srad); % right stem -draw_flatserif(5,6,srad); -draw_roundserif(6,5,srad); -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 "IMIN letter x"; -beginchar("x", 2sb#+hstretch*(x_height#), - x_height#, desc_depth#); -adjust_fit(0,0); -numeric n[]; -pcshiftx := sb; -pickup quill; -n1 := w-2pcshiftx; % total width -n2 := thick; % triangle side -%% diag top left to bottom right -lft x1=pcshiftx; bot y1=2/3h; -x2=pcshiftx+1/7n1; top y2=h; -x5=pcshiftx+11/14n1; bot y5=-1/4d; -rt x6=pcshiftx+n1; top y6=1/6h; -z25 = 1/3[z2,z5]; -%% diag bottom left to top right -lft x10 = -w + 2pcshiftx; bot y10=-d; -x50=x5; top y50=h; -rt x60 = w -pcshiftx; bot y60=2/3h; -x40=pcshiftx+8/14n1; y40=h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1..z2{right}..z5{right}..z6; % top left to bottom right -draw z10{1/2pdir}..z25..z50{right}..z60; % bottom left to top right -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,10,40,50,60,100); -endchar; % end "x" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{y} -% The letter `y'. Modern, but with a dot on top. -% \begin{macrocode} -cmchar "IMIN letter y"; -beginchar("y", 2sb#+hstretch*(5/8x_height#+jut#), - x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -%% left stem -lft x1 = pcshiftx + jut; top y1 = h; -% start of bowl -x13=x1; y13=1/3h; -% right stem -rt x3=w-pcshiftx; 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; -z50=(x3,-1/2d); -x60=x14; bot y60=-d; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z13{down}..z14{right}..z33{pdir}; -draw_flatserif(1,13,srad); -draw_tstem(3,50,srad); % right stem -draw z50{down}..z60{-pdir}; -draw_flatserif(3,4,srad); -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 "IMIN letter z"; -beginchar("z", 2sb#+hstretch*(x_height#), - x_height#, 0); -adjust_fit(0,0); -numeric n[]; -pcshiftx := sb; -pickup quill; -%% top bar -n10 := w-2pcshiftx; % letter width -lft x1=pcshiftx; top y1=h; -rt x2= w-pcshiftx; bot y2=y1; -%% diagonal -x3=x1; bot y3=0; -%% bowl -x4=3/4[x1,x2]; top y4 = 1/2h; -x6=x4; bot y6 = 0; -rt x5 = w-pcshiftx; y5 = 1/2[y4,y6]; -x7=1/2[x3,x5]; y7 = 1/2[y6,y5]; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1{right}..z2{right}; % top bar -draw_roundserif(1,2,srad); -draw z2--z3; % diagonal -draw z3..z4{right}..z5{down}..z6{left}..z7; -ductus:=false; -penlabels(1,2,3,4,5,6,10o,10i,20o,20i,100); -endchar; % end "z" - -% \end{macrocode} -% \end{routine} -% -% -% The end of this file -% \begin{macrocode} -% -% \end{macrocode} -% -% -% \subsection{The code for capital letters} -% -% \thisfont{} `capitals' were drawn with the same pen as for the minuscules, -% and the letters were merely larger versions of the minuscules. -% -% \begin{macrocode} -%<*maj> -% IMINU.MF Program file for Insular Minuscule `capitals' -% - -% \end{macrocode} -% -% -% -% \begin{routine}{A} -% The letter `A'. -% \begin{macrocode} -cmchar "IMIN letter A"; -beginchar("A", 2sb#+caprat*hstretch*(3/4x_height#+jut#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pair pr[]; -pickup quill; -n1 := w - 2pcshiftx -jut; % effective letter width -% "stem" -x1 = pcshiftx + 2/3n1; top y1=h; -rt x2 = pcshiftx + n1; bot y2=0; - -z16 = 1/6[z2,z1]; -rt x6 = x16; y6=y16; - -lft x4 = pcshiftx; y4 = 1/2h; - -% stem path -pth1 := z1{down}..z2; -pr1 := direction 1 of pth1; -z20 = z2 shifted -10pr1; - -%%ductus:=true; -if ductus: - pickup stylus; -else: - % draw stem - draw pth1; - draw_roundserif(2,20,srad); - % draw bowl - draw z1{-pdir}..z4{down}..z6{pdir}; -fi -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,100); -endchar; % end "A" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{B} -% The letter `B'. -% \begin{macrocode} -cmchar "IMIN letter B"; -beginchar("B", 2sb#+caprat*hstretch*(3/4x_height#), - caprat*asc_height#, 0); -adjust_fit(0,0); -numeric n[]; -path pth[]; -pcshiftx := sb; -pickup quill; -n1:=w-2pcshiftx; % actual letter width -n2:=h/ascratio; % top of bowl -lft x1 = pcshiftx+jut; top y1=h; -lft x3 = pcshiftx; y3=1/2n2; -rt x5 = w-pcshiftx; y5=y3; -x4 = 1/2[x3,x5]; bot y4=0; -x6=x4; top y6=n2; -pth1 := z1..z3{down}..z4{right}.. z5{up}; -z98=(0,3/4n2); z99=(w,y98); -pth2 := z98--z99; -z7 = pth1 intersectionpoint pth2; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1..z3{down}..z4{right}..z5{up}..z6{left}..z7{-pdir}; -draw_flatserif(1,7,srad); -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 "IMIN letter C"; -beginchar("C", 2sb#+caprat*hstretch*(5/8x_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{pdir}; -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'. There is a choice between a curved and straight stem. -% I have done the straight one. -% \begin{macrocode} -cmchar "IMIN letter D"; -beginchar("D", 2sb#+caprat*hstretch*(3/4x_height#), - caprat*asc_height#, 0); -adjust_fit(0,0); -numeric n[]; -path pth[]; -pcshiftx := sb; -pickup quill; -lft x1=pcshiftx; top y1=h; -rt x3 = w-pcshiftx; y3 = 1/2h/ascratio; -x4 = 1/2[x1,x3]; bot y4 = 0; -z5=(x1,y3); -z98=(0,h/ascratio); z99=(w,y98); pth2 := z98--z99; -pth1 := z1{-ppdir}..z3{down}..z4{left}; -z6 = pth1 intersectionpoint pth2; -if ductus: - pickup stylus; -fi -draw z1{-ppdir}..z3{down}..z4{left}..z5{up}..z6{pdir}; -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 "IMIN letter E"; -beginchar("E", sb#+caprat*hstretch*(5/4x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pickup quill; -n1 := w-pcshiftx; % actual letter width -n2 := 4/8n1; % width of bowl -x1 = pcshiftx + 5/8n2; top y1=h; -lft x2 = pcshiftx; y2 = 1/2h; -x3 = pcshiftx + 1/2n2; bot y3 = 0; -rt x4 = pcshiftx + n2; y4 = 1/4h; -z98=(0,3/8h); z99=(w,y98); -pth1 := z98--z99; -pth2 := z1{left}..z2{down}..z3{right}; -z7 = pth1 intersectionpoint pth2; -rt x9 = w-pcshiftx; y9 = 3/4h; -z8=1/2[z7,z9]; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z7{pdir}..z1{left}..z2{down}..z3{right}..z4{pdir}; -draw z7{pdir}..z8{right}..z9{pdir}; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,100); -endchar; % end "e" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{F} -% The letter `F'. -% \begin{macrocode} -cmchar "IMIN letter F"; -beginchar("F", 2sb#+caprat*hstretch*(3/4x_height#+jut#), - caprat*(x_height#), desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -%% stem -lft x1=lft x2=pcshiftx+jut; -top y1=h; y2=-1/2d; -lft x20=0; bot y20=-d; -%% bottom bar -z4=(rt x1,-thin); rt x6=w-pcshiftx; y6=y4+2thin; z5=1/2[z4,z6]; -%% top bar -x7= x1; bot y7 = 1/2h; -rt x9= w-pcshiftx; y9 = 1/2[y7,y1]; -x8 = 2/3[x7,x9]; top y8 = h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw z2{down}..z20{-pdir}; -draw_flatserif(1,2,srad); -draw z4{dir(45)}..z5{right}..z6{dir(45)}; % bottom bar -draw z7..z8..z9; % top bar -ductus:=false; -penlabels(1,2,3,4,5,6,7,100); -endchar; % end "F" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{G} -% The letter `G'. -% \begin{macrocode} -cmchar "IMIN letter G"; -beginchar("G", 2sb#+caprat*hstretch*(x_height#), - caprat*x_height#, desc_depth#); -adjust_fit(0,0); -path pth[]; -pair vec[]; -pcshiftx := sb; -pickup quill; -%% top bar -lft x1=pcshiftx; top y1=h; rt x2=w-pcshiftx; top y2=h; -x3=1/2[x1,x2]; bot y3=1/8h; -rt x5 = w-pcshiftx; y5 = -1/2d; -x6 = x3; bot y6 = -d; -x7 = 1/2[x1,x3]; y7 = y5; -x8=x3; y8 = -y3; -%%ductus:=true; -if ductus: - pickup stylus; - draw z1--z2; % top bar - draw pth1; draw pth2; % curves - draw rt z8--z9; % diagonal -else: - draw z1--z2; - draw z2--z3; - draw z3{pdir}..z5{down}..z6{left}..z7{up}..z8{pdir}; - draw_roundserif(1,2,srad); -fi -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,100); -endchar; % end "G" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{H} -% The letter `H'. -% \begin{macrocode} -cmchar "IMIN letter H"; -beginchar("H", 2sb#+caprat*hstretch*(7/8x_height#+jut#), - caprat*asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -numeric n[]; -%% stem -lft x1=lft x2=pcshiftx+jut; -top y1=h; bot y2=0; -%% bowl -z3=1/2[z2,z1]; -rt x5 = w-pcshiftx; y5=y3; -x4=1/2[x3,x5]; top y4 = h/ascratio; -lft x6=x4; bot y6=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -draw z3{pdir}..z4..z5..z6{-pdir}; - -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 "IMIN letter I"; -beginchar("I", 2sb#+caprat*hstretch*(thick#+2jut#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -lft x1=lft x2=pcshiftx+jut; -top y1=h; bot y2=0; -%%ductus:=true; -draw_tstem(1,2,srad); -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -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 "IMIN letter J"; -beginchar("J", sb#+caprat*hstretch*(3/8x_height#), - caprat*x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% stem -rt x1 = w-pcshiftx; top y1 = h; -x2=x1; y2=-1/2d; -%% bottom hook -lft x3 = 0; bot y3 = -d; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2; % stem -draw_flatserif(1,2,srad); -draw z2{down}..z3{-pdir}; % hook -ductus:=false; -penlabels(1,2,3,100); -endchar; % end "J" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{K} -% The letter `K'. -% \begin{macrocode} -cmchar "IMIN letter K"; -beginchar("K", 2sb#+caprat*hstretch*(x_height#+jut#), - caprat*asc_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -%% stem -lft x1=lft x2=pcshiftx+jut; -top y1=h; y2=-1/2d; -lft x20=pcshiftx; bot y20=-d; -%% top arm -z3=(x1,1/2h/ascratio); -rt x5=w-pcshiftx; y5=1/2[y3,y4]; -x4=1/2[x3,x5]; top y4=h/ascratio; -%% lower arm -x7=x5; bot y7=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw z2{down}..z20{-pdir}; -draw_flatserif(1,2,srad); -draw z3..z4{right}..z5; % upper arm -draw z3..{right}z7; % lower arm -ductus:=false; -penlabels(1,2,3,4,5,100); -endchar; % end "K" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{L} -% The letter `L'. -% \begin{macrocode} -cmchar "IMIN letter L"; -beginchar("L", 2sb#+caprat*hstretch*(3/4x_height#), - caprat*asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -lft x2=pcshiftx; y2=1/5h; -x1=x2+jut; top y1=h; -rt x4=w-pcshiftx; y4=1/5h; -x3=1/2[x2,x4]; bot y3=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1{down}..z2..z3{right}..z4; -draw_flatserif(1,2,srad); -ductus:=false; -penlabels(1,2,3,4,100); -endchar; % end "L" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{M} -% The letter `M'. -% \begin{macrocode} -cmchar "IMIN letter M"; -beginchar("M", 2sb#+caprat*hstretch*(x_height#+2jut#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pickup quill; -%% left stem -lft x1=pcshiftx+jut; top y1=h; -x2=x1; bot y2=0; -%% start of bowl -x13=x1; y13=3/4h; -%% bottom of right and middle stems -rt x6 = w -pcshiftx - jut; y6=y2; -z4 = 1/2[z2,z6]; -%% top of middle and right stems -x3=x4; y3=y1; -x5=x6; y5=y13; -%% top of bowls -x14=2/3[x13,x3]; top y14 = h; -x33=x4; y33=y13; -x34=2/3[x33,x5]; y34 = y14; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % left half -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -draw z13{pdir}..z14{right}..z33{down}--z4; -draw_roundserif(4,3,srad); -draw z33{pdir}..z34{right}..z5{down}--z6; -draw_roundserif(6,5,srad); -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'. This could be like a capital `N' or a lower-case `n'. -% I have chosen to do the first form. -% \begin{macrocode} -cmchar "IMIN letter N"; -beginchar("N", 2sb#+caprat*hstretch*(3/4x_height#+2jut#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -%% left stem -lft x1=pcshiftx+jut; top y1=h; -x2=x1; bot y2=0; -%% right stem -rt x3=w-pcshiftx-jut; y3=y1; -z4=(x3,y2); -%% bar -z5=3/8[lft z2, lft z1]; z6=2/8[rt z4,rt z3]; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % left stem -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -draw_tstem(3,4,srad); % right stem -draw_flatserif(3,4,srad); -draw_roundserif(4,3,srad); -draw z5{right}..z6{right}; % bar -ductus:=false; -penlabels(1,2,3,4,5,6,100); -endchar; % end "N" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{O} -% The letter `O'. -% \begin{macrocode} -cmchar "IMIN letter O"; -beginchar("O", 2sb#+caprat*hstretch*(3/4x_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; -draw z1..z2..z3..z4..cycle; -z5=(pcshiftx,-o); -obowl(5, w-2pcshiftx, h+2o); -%%ductus:=true; -if ductus: - pickup stylus; - draw obfirst; draw obsecond; draw obouter; draw obinner; -else: -%% fill obouter; unfill obinner; -fi -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 "IMIN letter P"; -beginchar("P", 2sb#+caprat*hstretch*(3/4x_height#+jut#), - caprat*x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% stem -lft x1=lft x2=pcshiftx+jut; -top y1=h; bot y2=-1/2d; -lft x20 = pcshiftx; bot y20 = -d; -%% bowl % from "h" -z3=3/4[(x1,0),z1]; -rt x5 = w-pcshiftx; y5=y3; -x4=1/2[x3,x5]; top y4 = h; -lft x6=x4; bot y6=0; - -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_flatserif(1,2,srad); -draw z2{down}..z20{-pdir}; -draw z3{pdir}..z4..z5..z6{-pdir}; % bowl (from h) -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 "IMIN letter Q"; -beginchar("Q", 2sb#+caprat*hstretch*(3/4x_height#), - caprat*x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% right stem -rt x1=w-pcshiftx; top y1=h; -x2=x1; bot y2=-1/2d; -x20 = x1-jut; bot y20=-d; -%% bowl -z3=1/4[(x1,0),z1]; -lft x5=pcshiftx; y5=y3; -x4=1/2[x3,x5]; bot y4=0; -x6=x1-jut; top y6=h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); -draw z2{down}..z20{-pdir}; % stem -draw_flatserif(1,2,srad); -draw z3{-pdir}..z4{left}..z5{up}..z6{pdir}; -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 "IMIN letter R"; -beginchar("R", sb#+caprat*hstretch*(3/4x_height#+jut#), - caprat*x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% stem -lft x1=lft x2=pcshiftx+jut; -top y1=h; bot y2=-1/2d; -lft x20 = pcshiftx; bot y20 = -d; -%% bowl % almost a "p" bowl -z3=3/4[(x1,0),z1]; -rt x5 = w-pcshiftx; y5=y3; -x4=1/2[x3,x5]; top y4 = h; -x100=x1; bot y100 = 0; -lft x6= rt x100; y6=y100; - -rt x26=w-pcshiftx; y26=-1/6d; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_flatserif(1,2,srad); -draw z2{down}..z20{-pdir}; -draw z3{pdir}..z4..z5..z6{-pdir}; % bowl (from h) -draw z6{-ppdir}..z26{pdir}; % leg -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,100); -endchar; % end "R" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{S} -% The letter `S'. This is a `long' S. -% \begin{macrocode} -cmchar "IMIN letter S"; -beginchar("S", 2sb#+caprat*hstretch*(3/4x_height#+jut#), - caprat*asc_height#, desc_depth#); -adjust_fit(0,0); -numeric n[]; -pcshiftx := sb; -pickup quill; -%% stem -lft x1=lft x2=pcshiftx+jut; top y1=h/ascratio; bot y2=-1/2d; -lft x20=pcshiftx; bot y20=-d; -%% flick -x4=x2; y4 = 1/2h/ascratio; -rt x6=w-pcshiftx; y6 = 2/3h; -x5 = 2/3[x4,x6]; top y5=h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw z2{down}..z20{-pdir}; -draw_flatserif(1,2,srad); -draw z4{up}...z5{right}...z6; -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 "IMIN letter T"; -beginchar("T", 2sb#+caprat*hstretch*(5/4x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% bar -lft x1 = pcshiftx; top y1=h; rt x2=w-pcshiftx; bot y2=h; -n1 := w; % width of bowl -n2 := h; % height of bowl -z3=1/2[z1,z2]; -lft x4 = pcshiftx + 1/8n1; y4 = 1/2h; -x5=x3; bot y5 = 0; -rt x6 = pcshiftx + 3/4n1; top y6 = 1/4h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1{pdir}..z3..z2{pdir}; % bar -draw z3..z4{down}..z5{right}..z6{pdir}; -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 "IMIN letter U"; -beginchar("U", 2sb#+caprat*hstretch*(5/8x_height#+2jut#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% left stem -lft x1 = pcshiftx + jut; top y1 = h; -% start of bowl -x13=x1; y13=1/3h; -% right stem -rt x3=w-pcshiftx-jut; 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; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z13{down}..z14{right}..z33{pdir}; -draw_flatserif(1,13,srad); -draw_tstem(3,4,srad); % right stem -draw_flatserif(3,4,srad); -draw_roundserif(4,3,srad); -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 "IMIN letter V"; -beginchar("V", 2sb#+caprat*hstretch*(3/4x_height#+jut#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -%% left stem -lft x1 = pcshiftx + jut; top y1 = h; -% start of bowl -x13=x1; y13=1/3h; -% right stem -rt x3=w-pcshiftx-jut; 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; -rt x23=w-pcshiftx; y23=3/4h; -lft x26=x14; top y26=h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z13{down}..z14{right}; % left stem -draw_flatserif(1,13,srad); -draw z14{pdir}..z23{up}..z26; -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 "IMIN letter W"; -beginchar("W", 2sb#+caprat*hstretch*(x_height#+2jut#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -%% left stem -lft x1 = pcshiftx + jut; top y1 = h; -% start of bowl -x13=x1; y13=1/3h; -% right stem -rt x5=w-pcshiftx-jut; y5=y1; -x6=x5; bot y6=0; -z53=1/4[z6,z5]; % start of bowl -% middle stem -z3 = 1/2[z1,z5]; -z33=(x3,y13); -% middle of bowl -x14=1/3[x1,x3]; bot y14=0; -% middle of right bowl -x34=1/3[x3,x5]; y34=y14; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z13{down}..z14{right}..z33{pdir}; % left -draw_flatserif(1,13,srad); -draw z3--z33{down}..z34{right}..z53{pdir}; % middle -draw_flatserif(3,33,srad); -draw_tstem(5,6,srad); % right stem -draw_flatserif(5,6,srad); -draw_roundserif(6,5,srad); -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 "IMIN letter X"; -beginchar("X", 2sb#+caprat*hstretch*(x_height#), - caprat*x_height#, desc_depth#); -adjust_fit(0,0); -numeric n[]; -pcshiftx := sb; -pickup quill; -n1 := w-2pcshiftx; % total width -n2 := thick; % triangle side -%% diag top left to bottom right -lft x1=pcshiftx; bot y1=2/3h; -x2=pcshiftx+1/7n1; top y2=h; -x5=pcshiftx+11/14n1; bot y5=-1/4d; -rt x6=pcshiftx+n1; top y6=1/6h; -z25 = 1/3[z2,z5]; -%% diag bottom left to top right -%%x10=x1; bot y10=-d; -lft x10 = -w + 2pcshiftx; bot y10=-d; -x50=x5; top y50=h; -%%rt x60=x5; bot y60=2/3h; -rt x60 = w -pcshiftx; bot y60=2/3h; -x40=pcshiftx+8/14n1; y40=h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1..z2{right}..z5{right}..z6; % top left to bottom right -draw z10{1/2pdir}..z25..z50{right}..z60; % bottom left to top right -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,10,40,50,60,100); -endchar; % end "X" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{Y} -% The letter `Y'. Modern style. -% \begin{macrocode} -cmchar "IMIN letter Y"; -beginchar("Y", 2sb#+caprat*hstretch*(5/8x_height#+jut#), - caprat*x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -%% left stem -lft x1 = pcshiftx + jut; top y1 = h; -% start of bowl -x13=x1; y13=1/3h; -% right stem -rt x3=w-pcshiftx; 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; -z50=(x3,-1/2d); -x60=x14; bot y60=-d; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z13{down}..z14{right}..z33{pdir}; -draw_flatserif(1,13,srad); -draw_tstem(3,50,srad); % right stem -draw z50{down}..z60{-pdir}; -draw_flatserif(3,4,srad); -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 "IMIN letter Z"; -beginchar("Z", 2sb#+caprat*hstretch*(x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -numeric n[]; -pcshiftx := sb; -pickup quill; -%% top bar -n10 := w-2pcshiftx; % letter width -lft x1=pcshiftx; top y1=h; -rt x2= w-pcshiftx; bot y2=y1; -%% diagonal -x3=x1; bot y3=0; -%% bowl -x4=3/4[x1,x2]; top y4 = 1/2h; -x6=x4; bot y6 = 0; -rt x5 = w-pcshiftx; y5 = 1/2[y4,y6]; -x7=1/2[x3,x5]; y7 = 1/2[y6,y5]; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1{right}..z2{right}; % top bar -draw_roundserif(1,2,srad); -draw z2--z3; % diagonal -draw z3..z4{right}..z5{down}..z6{left}..z7; -ductus:=false; -penlabels(1,2,3,4,5,6,10o,10i,20o,20i,100); -endchar; % end "Z" - -% \end{macrocode} -% \end{routine} -% -% -% -% The end of this file -% \begin{macrocode} -% -% \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#+trijut#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -x1=w/2; top y1 = h; -z3=(x1, 1/2dot_size); -z2=(x1, y3+3/2dot_size); -draw z1--z2; -draw_pdot(3,dot_size); -penlabels(1,2,3); - -endchar; % end of "!" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{?} -% The `?' character, which had not been invented at this time. -% \begin{macrocode} - -cmchar "Question mark"; -beginchar("?", 2sb#+hstretch*(3/4x_height#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pickup quill; -n1 := w-2pcshiftx; % actual character width -n2 := 1/3h; % height of top bowl -n3 := n2; % height of bottom bowl -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/3h; -draw_pdot(1,dot_size); -draw_pdot(2,dot_size); -penlabels(1,2); -endchar; % end ":" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{;} -% The `;' character. -% \begin{macrocode} - -cmchar "Semicolon"; -beginchar(";",2sb#+hstretch*(comma_width#+dot_size#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb; -x1=x2=w-pcshiftx-(0.5hstretch*dot_size); y1=2/3h; y2=1/3h; -draw_pdot(1,dot_size); -draw_pcomma(2,dot_size,comma_width); -penlabels(1,2); -endchar; % end of ";" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{'} -% The `'' character. -% \begin{macrocode} - -cmchar "Apostrophe"; -beginchar("'",2sb#+hstretch*(comma_width#+dot_size#),4/3x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb; -x1=w-pcshiftx-(0.5hstretch*dot_size); y1=h; -draw_pcomma(1,dot_size,comma_width); -penlabels(1); -endchar; % end of "'" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{`} -% The ``' character. -% \begin{macrocode} - -cmchar "Reverse apostrophe"; -beginchar("`",2sb#+hstretch*(comma_width#+dot_size#),4/3x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb; -x1=pcshiftx+(0.5hstretch*dot_size); y1=h; -draw_plq(1,dot_size,comma_width); -penlabels(1); -endchar; % end of "`" - -% \end{macrocode} -% \end{routine} -% -% The end of this file. -% \begin{macrocode} -% -% \end{macrocode} -% -% -% \subsection{The ligatures and dashes file} -% -% The ligatured letters, punctuation marks and dashes are defined in this file. -% \begin{macrocode} -%<*lig> -% IMINLIG.MF Uncial ligatured letters, punctation and dashes - -% \end{macrocode} -% First the ligtables. -% \begin{macrocode} - -ligtable "`": "`"=:oct"134"; -ligtable "'": "'"=:oct"042"; %% , "?" kern 2u#, "!" kern 2u#; - -ligtable "-": "-"=:oct"173"; -ligtable oct"173": "-"=:oct"174"; - -%%%%ligtable "f": "i"=:oct"014"; - -% \end{macrocode} -% -% \begin{routine}{''} -% The `''' ligature. -% \begin{macrocode} - -cmchar "Closing quotes"; -beginchar(oct"042",2sb#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb; -x1=w-pcshiftx-(0.5hstretch*dot_size); y1=y2=h; -x2=x1-(2hstretch*dot_size); -draw_pcomma(1,dot_size,comma_width); % right -draw_pcomma(2,dot_size,comma_width); % left -penlabels(1,2); -endchar; % end of "''" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{``} -% The ```' ligature. -% \begin{macrocode} - -cmchar "Opening quotes"; -beginchar(oct"134",2sb#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb; -x1=pcshiftx+(0.5hstretch*dot_size); y1=y2=h; -x2=x1+(2hstretch*dot_size); -draw_plq(1,dot_size,comma_width); % left -draw_plq(2,dot_size,comma_width); % right -penlabels(1,2); -endchar; % end of "``" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{-} -% The `-' (hyphen) character. -% \begin{macrocode} - -cmchar "Hyphen"; -beginchar("-",sb#+hstretch*(0.8x_height#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb/2; -numeric alpha; alpha:=w/8; -%%pickup quill; -%%lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; -%%x11=lft x1+alpha/2; y11=top y1-0.5thin; -%%x12=rt x2; y12=bot y1+0.5thin; -%%draw_triangle(11,alpha); -%%draw_rutriangle(12,alpha); -pickup thickstylus; -lft x21=pcshiftx; rt x22=w-pcshiftx; y21=y22=1/2h; -draw z21--z22; -draw_roundserif(21,22,srad); draw_flatserif(22,21,srad); -penlabels(1,2); -endchar; % end of "-" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{--} -% The `--' (en-dash) ligature. -% \begin{macrocode} - -cmchar "En dash"; -beginchar(oct"173",sb#+hstretch*(x_height#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb/2; -numeric alpha; alpha:=w/8; -pickup quill; -%%lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; -%%x11=lft x1+alpha/2; y11=top y1-0.5thin; -%%x12=rt x2; y12=bot y1+0.5thin; -%%draw_triangle(11,alpha); -%%draw_rutriangle(12,alpha); -pickup thickstylus; -lft x21=pcshiftx; rt x22=w-pcshiftx; y21=y22=1/2h; -draw z21--z22; -draw_roundserif(21,22,srad); draw_flatserif(22,21,srad); -penlabels(1,2); -endchar; % end of "--" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{---} -% The `---' (em dash) ligature. The em dash is twice the width of the en dash. -% \begin{macrocode} - -cmchar "Em dash"; -beginchar(oct"174",sb#+hstretch*(2x_height#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb/2; -numeric alpha; alpha:=w/8; -pickup quill; -%%lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; -%%x11=lft x1+alpha/2; y11=top y1-0.5thin; -%%x12=rt x2; y12=bot y1+0.5thin; -%%draw_triangle(11,alpha); -%%draw_rutriangle(12,alpha); -pickup thickstylus; -lft x21=pcshiftx; rt x22=w-pcshiftx; y21=y22=1/2h; -draw z21--z22; -draw_roundserif(21,22,srad); draw_flatserif(22,21,srad); -penlabels(1,2); -endchar; % end of "---" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{&} -% The ampersand (which is really an `et' ligature). -% \begin{macrocode} - -cmchar "IMIN ampersand"; -beginchar("&", 2sb#+hstretch*(5/4x_height#), asc_height#, 0); -adjust_fit(0,0); -numeric n[]; -path pth[]; -pcshiftx:=sb; -pickup quill; -%% E part -n1 := w-pcshiftx; % actual letter width -n2 := 4/8n1; % width of bowl -x1 = pcshiftx + 5/8n2; top y1=h; -lft x2 = pcshiftx; y2 = 1/2h; -x3 = pcshiftx + 1/2n2; bot y3 = 0; -rt x4 = pcshiftx + n2; y4 = 1/4h; -z98=(0,3/8h); z99=(w,y98); -pth1 := z98--z99; -pth2 := z1{left}..z2{down}..z3{right}; -z7 = pth1 intersectionpoint pth2; -rt x9 = w-pcshiftx; y9 = 3/4h; -z8=6/8[z7,z9]; - -%% T part -x18=x8; bot y18=0; -x19=5/8[x18,x9]; -y19=1/8h; - - -%%ductus:=true; -if ductus: - pickup stylus; -fi -%% E part -draw z7{pdir}..z1{left}..z2{down}..z3{right}..z4{up}..z8{right}; -draw z7{pdir}..z8{right}..z9{pdir}; -%% T bowl -draw z8{left}..z4{down}..z18{right}..z19{pdir}; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,10,16,17,18,19,31,32,33); -endchar; % end of "&" - -% \end{macrocode} -% \end{routine} -% -% -% The end of this file. -% \begin{macrocode} -% -% \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> -% IMINDIG.MF Program file for Insular Minuscule digits -% - -% \end{macrocode} -% -% -% -% \begin{routine}{1} -% The digit `1'. -% \begin{macrocode} -cmchar "Uncial digit 1"; -beginchar("1", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -x1=x2=w/2; -y1=h; bot y2=0; -%%ductus:=true; -draw_tstem(1,2,srad); -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,100); -endchar; % end "1" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{2} -% The digit `2'. -% \begin{macrocode} -cmchar "Uncial digit 2"; -beginchar("2", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -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; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_wave(5,6,thin); % foot -draw z1..z2{right}..z3{down}..{-pdir}z5wl; % curve -ductus:=false; -penlabels(1,2,3,4,5,6,100); -endchar; % end "2" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{3} -% The digit `3'. -% \begin{macrocode} -cmchar "Uncial 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 "Uncial digit 4"; -beginchar("4", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% the stem -x1=x2=w-pcshiftx-jut; -y1=h; bot y2=0; -% the crossbar -lft x3=pcshiftx; y3=0.33h; -rt x4=w-pcshiftx; y4=y3; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % main stem -draw_wave(3,4,thin); % crossbar -draw z3wl--z1; % diagonal -ductus:=false; -penlabels(1,2,3,4,100); -endchar; % end "4" - -% \end{macrocode} -% \end{routine} -% -% -% -% \begin{routine}{5} -% The digit `5'. -% \begin{macrocode} -cmchar "Uncial digit 5"; -beginchar("5", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -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; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_wave(2,1,thin); % top squiggle -draw z3{pdir}..z5{down}..z6{left}..z7; % curve -draw z2wl--z3; % vertical -ductus:=false; -penlabels(1,2,3,4,5,6,7,100); -endchar; % end "5" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{6} -% The digit `6'. -% \begin{macrocode} -cmchar "Uncial 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 "Uncial digit 7"; -beginchar("7", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% top bar -lft x1=pcshiftx; -rt x2=w-pcshiftx; -top y1=top y2=h; -% bowed leg -x4=w/2; bot y4=0; -x3=0.5[x2,x4]-3thin; y3=0.5[y2,y4]; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_wave(1,2,thin); % top bar -draw z1wr..z3..z4; -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 "Uncial 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 "Uncial 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 "Uncial 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; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,100); -endchar; % end "0" - -% \end{macrocode} -% \end{routine} -% -% -% The end of this file. -% \begin{macrocode} -% -% \end{macrocode} -% -% -% \section{The font definition files} \label{sec:fd} -% -% The font comes in normal and bold weights only. -% -% \begin{macrocode} -%<*fdot1> -\DeclareFontFamily{OT1}{imin}{} - \DeclareFontShape{OT1}{imin}{m}{n}{ <-8.5> imin7 <8.5-15> imin10 <15-> imin17 }{} - \DeclareFontShape{OT1}{imin}{m}{sl}{ <-> sub * imin/m/n }{} - \DeclareFontShape{OT1}{imin}{m}{it}{ <-> sub * imin/m/n }{} - \DeclareFontShape{OT1}{imin}{m}{sc}{ <-> sub * imin/m/n }{} - \DeclareFontShape{OT1}{imin}{m}{u}{ <-> sub * imin/m/n }{} - \DeclareFontShape{OT1}{imin}{bx}{n}{ <-8.5> iminb7 <8.5-15> iminb10 <15-> iminb17 }{} - \DeclareFontShape{OT1}{imin}{bx}{it}{ <-> sub * imin/bx/n }{} - \DeclareFontShape{OT1}{imin}{bx}{sl}{ <-> sub * imin/bx/n }{} - \DeclareFontShape{OT1}{imin}{b}{n}{ <-> sub * imin/bx/n }{} -% -% \end{macrocode} -% -% -% \begin{macrocode} -%<*fdt1> -\DeclareFontFamily{T1}{imin}{} - \DeclareFontShape{T1}{imin}{m}{n}{ <-8.5> imin7 <8.5-15> imin10 <15-> imin17 }{} - \DeclareFontShape{T1}{imin}{m}{sl}{ <-> sub * imin/m/n }{} - \DeclareFontShape{T1}{imin}{m}{it}{ <-> sub * imin/m/n }{} - \DeclareFontShape{T1}{imin}{m}{sc}{ <-> sub * imin/m/n }{} - \DeclareFontShape{T1}{imin}{m}{u}{ <-> sub * imin/m/n }{} - \DeclareFontShape{T1}{imin}{bx}{n}{ <-8.5> iminb7 <8.5-15> iminb10 <15-> iminb17 }{} - \DeclareFontShape{T1}{imin}{bx}{it}{ <-> sub * imin/bx/n }{} - \DeclareFontShape{T1}{imin}{bx}{sl}{ <-> sub * imin/bx/n }{} - \DeclareFontShape{T1}{imin}{b}{n}{ <-> sub * imin/bx/n }{} -% -% \end{macrocode} -% -% \section{The package code} \label{sec:code} -% -% \subsection{The \Lpack{inslrmin} package} -% -% The \Lpack{inslrmin} 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{inslrmin}[2002/12/30 v1.0 package for Insular Minuscule 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}{\iminfamily} -% Selects the \thisfont{} font family in the OT1 or T1 encoding. -% \begin{macrocode} -\ifx\Tienc\encodingdefault - \newcommand{\iminfamily}{\usefont{T1}{imin}{m}{n}} -\else - \newcommand{\iminfamily}{\usefont{OT1}{imin}{m}{n}} -\fi -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\textimin} -% Text command for the \thisfont{} font family. -% \begin{macrocode} -\DeclareTextFontCommand{\textimin}{\iminfamily} -% \end{macrocode} -% \end{macro} -% -% The end of this package. -% \begin{macrocode} -% -% \end{macrocode} -% -% \subsection{The \Lpack{allimin} package} -% -% The \Lpack{allimin} 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{inslrmin} package. -% \begin{macrocode} -%<*uscall> -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{allimin}[2002/12/30 v1.0 package for all Insular Minuscule fonts] -\RequirePackage{inslrmin} -% \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}{imin} -\renewcommand{\sfdefault}{imin} -\renewcommand{\ttdefault}{imin} -% \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}{\imin@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{\imin@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}{\imin@new@setfontsize} -% This is a macro that replaces the |\@setfontsize| macro which is called by -% the font size changing commands. -% \begin{macrocode} -\newcommand{\imin@new@setfontsize}[3]{% - \edef\@tempa{\def\noexpand\@tempb####1<#2}% - \@tempa>##2<##3\@nil{\def\imin@baselineskip@value{##2}}% - \edef\@tempa{\noexpand\@tempb\imin@baselineskip@table<#2}% - \@tempa><\@nil - \ifx\imin@baselineskip@value\@empty - \def\imin@baselineskip@value{#3}% - \fi - \imin@old@setfontsize{#1}{#2}\imin@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\imin@old@setfontsize=\@setfontsize - \let\@setfontsize=\imin@new@setfontsize} -\AtBeginDocument{\normalsize} -% \end{macrocode} -% -% -% The end of this package. -% \begin{macrocode} -% -% \end{macrocode} -% -% -% -% -% -% \Finale -% \PrintIndex -% -\endinput - -%% \CharacterTable -%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -%% Digits \0\1\2\3\4\5\6\7\8\9 -%% Exclamation \! Double quote \" Hash (number) \# -%% Dollar \$ Percent \% Ampersand \& -%% Acute accent \' Left paren \( Right paren \) -%% Asterisk \* Plus \+ Comma \, -%% Minus \- Point \. Solidus \/ -%% Colon \: Semicolon \; Less than \< -%% Equals \= Greater than \> Question mark \? -%% Commercial at \@ Left bracket \[ Backslash \\ -%% Right bracket \] Circumflex \^ Underscore \_ -%% Grave accent \` Left brace \{ Vertical bar \| -%% Right brace \} Tilde \~} - - diff --git a/Master/texmf-dist/source/latex/bookhands/inslrmin/inslrmin.ins b/Master/texmf-dist/source/latex/bookhands/inslrmin/inslrmin.ins deleted file mode 100644 index a02ee5e2706..00000000000 --- a/Master/texmf-dist/source/latex/bookhands/inslrmin/inslrmin.ins +++ /dev/null @@ -1,101 +0,0 @@ -%% -%% inslrmin.ins -%% Copyright 1999 Peter R. Wilson -%% -%% This program is provided under the terms of the -%% LaTeX Project Public License distributed from CTAN -%% archives in directory macros/latex/base/lppl.txt. -%% -%% Author: Peter Wilson (CUA) -%% now at: peter.r.wilson@boeing.com -%% -%% This file will generate fast loadable files and documentation -%% driver files from the doc files in this package when run through -%% LaTeX or TeX. -%% -%% --------------- start of docstrip commands ------------------ -%% -\def\batchfile{inslrmin.ins} -\input docstrip.tex -\preamble - - Copyright 1999 Peter R. Wilson - - This program is provided under the terms of the - LaTeX Project Public License distributed from CTAN - archives in directory macros/latex/base/lppl.txt. - -Author: Peter Wilson (CUA) - now at: peter.r.wilson@boeing.com - -\endpreamble - -\keepsilent - -%%% \Msg{*** Generating the driver file ***} -%%% \generateFile{inslrmin.drv}{t}{\from{inslrmin.dtx}{driver}} - -\Msg{*** Generating the Metafont files ***} - -\usepostamble\empty -\generateFile{imin7.mf}{t}{\from{inslrmin.dtx}{base7}} -\generateFile{imin10.mf}{t}{\from{inslrmin.dtx}{base10}} -\generateFile{imin17.mf}{t}{\from{inslrmin.dtx}{base17}} -\generateFile{iminb7.mf}{t}{\from{inslrmin.dtx}{base7b}} -\generateFile{iminb10.mf}{t}{\from{inslrmin.dtx}{base10b}} -\generateFile{iminb17.mf}{t}{\from{inslrmin.dtx}{base17b}} -\generateFile{iminl.mf}{t}{\from{inslrmin.dtx}{min}} -\generateFile{iminu.mf}{t}{\from{inslrmin.dtx}{maj}} -\generateFile{imintitle.mf}{t}{\from{inslrmin.dtx}{mfd}} -\generateFile{iminpunct.mf}{t}{\from{inslrmin.dtx}{punct}} -\generateFile{iminlig.mf}{t}{\from{inslrmin.dtx}{lig}} -\generateFile{imindig.mf}{t}{\from{inslrmin.dtx}{dig}} - -\Msg{*** Generating the Font Definition files ***} -\usepostamble\defaultpostamble - -\generateFile{ot1imin.fd}{t}{\from{inslrmin.dtx}{fdot1}} -\generateFile{t1imin.fd}{t}{\from{inslrmin.dtx}{fdt1}} - -\Msg{*** Generating the LaTeX2e package files ***} - -\generateFile{inslrmin.sty}{t}{\from{inslrmin.dtx}{usc}} -\generateFile{allimin.sty}{t}{\from{inslrmin.dtx}{uscall}} - -\Msg{***********************************************************} -\Msg{*} -\Msg{* To finish the installation you have to move the following} -\Msg{* files into directories searched by TeX:} -\Msg{*} -\Msg{* Move these into the font source area:} -\Msg{* \space\space imin7.mf} -\Msg{* \space\space imin10.mf} -\Msg{* \space\space imin17.mf} -\Msg{* \space\space iminb7.mf} -\Msg{* \space\space iminb10.mf} -\Msg{* \space\space iminb17.mf} -\Msg{* \space\space iminl.mf} -\Msg{* \space\space iminu.mf} -\Msg{* \space\space imintitle.mf} -\Msg{* \space\space iminpunct.mf} -\Msg{* \space\space iminlig.mf} -\Msg{* \space\space imindig.mf} -\Msg{*} -\Msg{* Move these into the LaTeX macro area:} -\Msg{* \space\space ot1imin.fd} -\Msg{* \space\space t1imin.fd} -\Msg{* \space\space inslrmin.sty} -\Msg{* \space\space allimin.sty} -\Msg{*} -\Msg{*} -\Msg{* To produce the documentation run the files ending with} -\Msg{* `.dtx' through LaTeX.} -\Msg{* Process any name.idx file by:} -\Msg{* \space\space\space\space makeindex -s gind.ist name} -\Msg{* Process any name.glo file by:} -\Msg{* \space\space\space\space makeindex -s gglo.ist -o name.gls name.glo} -\Msg{*} -\Msg{* Happy TeXing} -\Msg{***********************************************************} - -\endinput diff --git a/Master/texmf-dist/source/latex/bookhands/pgothic/pgothic.dtx b/Master/texmf-dist/source/latex/bookhands/pgothic/pgothic.dtx deleted file mode 100644 index 5e9a6e3bb38..00000000000 --- a/Master/texmf-dist/source/latex/bookhands/pgothic/pgothic.dtx +++ /dev/null @@ -1,5484 +0,0 @@ -% \iffalse meta-comment -% -% pgothic.dtx -% Copyright 1999 Peter R. Wilson -% -% This program is provided under the terms of the -% LaTeX Project Public License distributed from CTAN -% archives in directory macros/latex/base/lppl.txt. -% -% Author: Peter Wilson (CUA) (now at: peter.r.wilson@boeing.com) -% -% If you do not have the docmfp package (available from CTAN in -% tex-archive/macros/latex/contrib/supported), comment out the -% \usepackage{docmfp} line below and uncomment the line following it. -% -%<*driver> -\documentclass{ltxdoc} -\usepackage{docmfp} -%%%%%% \providecommand{\DescribeVariable}[1]{} \newenvironment{routine}[1]{}{} -\EnableCrossrefs -\CodelineIndex -%% comment out the next line to show the code -\OnlyDescription -\setcounter{StandardModuleDepth}{1} -\begin{document} - \DocInput{pgothic.dtx} -\end{document} -% -% -% \fi -% -% \CheckSum{134} -% -% \DoNotIndex{\',\.,\@M,\@@input,\@addtoreset,\@arabic,\@badmath} -% \DoNotIndex{\@centercr,\@cite} -% \DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue} -% \DoNotIndex{\@input,\@ixpt,\@m} -% \DoNotIndex{\@minus,\@mkboth,\@ne,\@nil,\@nomath,\@plus,\@set@topoint} -% \DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb} -% \DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt} -% \DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt} -% \DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace} -% \DoNotIndex{\advance,\Alph,\alph} -% \DoNotIndex{\arabic,\ast,\begin,\begingroup,\bfseries,\bgroup,\box} -% \DoNotIndex{\bullet} -% \DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption} -% \DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass} -% \DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\endtrivlist} -% \DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup} -% \DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter} -% \DoNotIndex{\fbox} -% \DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef} -% \DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule} -% \DoNotIndex{\hsize,\hskip,\hspace,\hss,\if@tempswa,\ifcase,\or,\fi,\fi} -% \DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\fi,\fi,\fi,\fi,\fi} -% \DoNotIndex{\input} -% \DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark} -% \DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright} -% \DoNotIndex{\month,\newcommand,\newcounter,\newenvironment} -% \DoNotIndex{\NeedsTeXFormat,\newdimen} -% \DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number} -% \DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\p@} -% \DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip} -% \DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions} -% \DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright} -% \DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font} -% \DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily,\roman} -% \DoNotIndex{\roman,\secdef,\selectfont,\setbox,\setcounter,\setlength} -% \DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space} -% \DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase} -% \DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt} -% \DoNotIndex{\viipt,\vipt,\vskip,\vspace} -% \DoNotIndex{\wd,\xiipt,\year,\z@} -% -% \changes{v1.0}{2002/12/30}{First public release} -% -% \def\fileversion{v1.0} -% \def\filedate{2002/12/30} -% \newcommand*{\Lpack}[1]{\textsf {#1}} ^^A typeset a package -% \newcommand*{\Lopt}[1]{\textsf {#1}} ^^A typeset an option -% \newcommand*{\file}[1]{\texttt {#1}} ^^A typeset a file -% \newcommand*{\Lcount}[1]{\textsl {\small#1}} ^^A typeset a counter -% \newcommand*{\pstyle}[1]{\textsl {#1}} ^^A typeset a pagestyle -% \newcommand*{\Lenv}[1]{\texttt {#1}} ^^A typeset an environment -% \newcommand*{\AD}{\textsc{ad}} -% \newcommand*{\thisfont}{Gothic Textura Prescius} -% -% \title{The \Lpack{Gothic Textura Prescius} fonts\thanks{This -% file has version number \fileversion, last revised -% \filedate.}} -% -% \author{% -% Peter Wilson\\ -% Catholic University of America \\ -% Now at \texttt{peter.r.wilson@boeing.com} -% } -% \date{\filedate} -% \maketitle -% \begin{abstract} -% The \Lpack{pgothic} and \Lpack{allpgoth} packages provide a set of -% Metafont \thisfont{} book-hands -% as used -% for manuscripts in the 13th century onwards. This is one in a series -% of manuscript fonts. -% \end{abstract} -% \tableofcontents -% \listoftables -% -% -% -% -% \section{Introduction} -% -% The \Lpack{pgothic} and \Lpack{allpgoth} packages provide a Metafont~\cite{METAFONT} version -% of the \thisfont{} manuscript book-hand that was in use from about the -% thirteenth century~\AD{} onwards. It is part of a project to provide fonts -% covering the major manuscript hands between the first century~\AD{} and -% the invention of printing. The principal resources used in this project -% are listed in the Bibliography. -% -% This manual is typeset according to the conventions of the -% \LaTeX{} \textsc{docstrip} utility which enables the automatic -% extraction of the \LaTeX{} macro source files~\cite{GOOSSENS94}. -% The \Lpack{docmfp} package is used for documenting the Metafont portions -% of the distribution~\cite{DOCMFP}. -% -% Section~\ref{sec:usc} describes the usage of the package. -% Commented code for the fonts is in Sections~\ref{sec:mf} and~\ref{sec:fd} -% and source code for the package is in Section~\ref{sec:code}. -% -% \subsection{Manuscript book-hands} -% -% Before the invention of printing all books were written by hand. The book-hands -% used by the scribes and copyists for the manuscripts changed as time -% went on. Table~\ref{tab:1} lists some of the common book-hands which were used -% between the 1st and 15th centuries. The later book-hands formed the basis of the -% fonts used by the early printers, which in turn form the basis of the printing -% fonts in use today. -% -% The manuscript book-hands were written with a broad nibbed reed or quill -% pen. Among the distinguishing characteristics of a hand, apart from the -% actual shape of the letters, are the angle of the pen (which controls the -% variation between thick and thin strokes) and the height of a letter compared -% to the width of the nib. The lower the ratio of the letter height to nib -% width, the more condensed is the script. The scripts also varied in their -% typical height. -% -% Table~\ref{tab:1} gives an `average' x-height for each -% script, which I obtained by measuring a sample of photographs of -% manuscripts written in the various hands. About a dozen examples -% of each book-hand were measured. This figure should not be taken too -% seriously. -% -% There was not a sharp division between the use of one hand and another. -% Many manuscripts exhibit a variety of hands in the same document. For example, -% the scribe writing in an Uncial hand may have used Roman Rustic letters -% for capitals. Usually the same pen was used for the two different scripts. -% -% Generally speaking, as a hand got older it became more embelished, and -% therefore took longer to write. As this happened a new hand would appear that -% was faster, and which would eventually make the earlier one obsolete. -% -% Many of the book-hands were single-cased; that is, they did not have an -% upper- and lower-case as we do nowadays in Western scripts. On the other -% hand, a script might be majuscule or minuscule. A \textit{majuscule} script -% is one, like our upper-case, where the letters are drawn between two lines -% and are of a uniform height with no ascenders or descenders. -% A \textit{minuscule} script, like our lower-case, is drawn between four lines -% and has ascenders and descenders. -% -% \begin{table} -% \centering -% \caption{The main manuscript book-hands} \label{tab:1} -% \begin{tabular}{lccccc} \hline -% Name & Century & x-height & Height & Pen & Normalised \\ -% & & (mm) & (nib widths) & angle & height \\ \hline -% Roman Rustic & 1--6 & 5.7 & 4--6 & 45 & 1.90 \\ -% Uncial & 3--6 & 4.1 & 4--5 & 30 & 1.37 \\ -% Half Uncial & 3--9 & 3.2 & 3--6 & 20--30 & 1.07 \\ -% Artificial Uncial & 6--10 & 4.2 & 3--6 & 10 & 1.40 \\ -% Insular majuscule & 6--9 & 4.2 & 5 & 0--20 & 1.40 \\ -% Insular minuscule & 6 onward & 4.1 & 5--6 & 45--70 & 1.37 \\ -% Carolingian minuscule & 8--12 & 3.0 & 3--5 & 45 & 1.00 \\ -% Early Gothic & 11--12 & 3.8 & 4--6 & 20--45 & 1.27 \\ -% Gothic Textura & 13--15 & 3.9 & 3--5 & 30--45 & 1.30 \\ -% Gothic Prescius & 13 onward & 3.3 & 4--5 & 45 & 1.10 \\ -% Rotunda & 13--15 & 3.2 & 4--6 & 30 & 1.07 \\ -% Humanist minuscule & 14 onward & 3.0 & 4--5 & 30--40 & 1.00 \\ \hline -% \end{tabular} -% \end{table} -% -% During the period under consideration arabic numerals were effectively -% not used. At the beginning they were unknown and even though some knew -% of them towards the end, the glyphs used for them are not recognisable --- -% to me they look somewhat like cryllic letters --- and each locality -% and time had its own highly individualistic rendering. The general rule -% when using one of these book-hands is to write all numbers using -% roman numerals. -% -% The Roman alphabet consisted of 23 capital letters --- the J, U and W -% were absent. The book-hands initially used both a `u' and a `v' interchangeably -% but by the 10th century the practice had become to use the `v' before a vowel -% and the `u' otherwise. The letter corresponding to the W sound appeared -% in England around the 7th century in -% the form of the runic \textit{wen} character and by about the 11th century -% the `w' chacter was generally used. The `J' is the newest letter of all, not -% appearing until about the mid 16th century. -% -% In the first century punctuation was virtually unknown, and typically -% would not even be any additional space between individual words, never -% mind denoting ends of sentences. Sometimes a dot at mid-height would be -% used as a word seperator, or to mark off the end of a paragraph. Effectively -% a text was a continuous stream of letters. By the time that printing was -% invented, though, all of our modern punctuation marks were being used. -% -% Among all these manuscript hands, the Carolingian minuscule is the -% most important as our modern fonts are based on its letter shapes, and it is -% also at this point in time where the division occured between the black letter -% scripts as used even today in Germany, and the lighter fonts used elesewhere. -% The Rotunda and Humanist minuscule hands were developed in Italy and were -% essentially a rediscovery of the Carolingian minusucle. Guthenberg took the -% Gothic Textura Quadrata script as the model for his types. Later printers, -% such as Nicholas Jenson of Venice, -% took the Humanist scripts as their models. -% -% -% \subsection{The \thisfont{} script} -% -% With the Gothic hands, used from the thirteenth century, the attention of -% the scribes moved from the individual letter to the word. The scripts -% changed to accomodate this interest so the appearance of the letters -% became subordinate to the overall appearance of the words they formed. -% Many of the letters appear to be indistinguishable today but the contemporary -% reading public seemed to have no difficulty. -% -% It was during the heyday of the Gothic scripts that separate capital -% letters were introduced. Also, as a small concession to legibility, -% the lowecase `i' acquired a small mark above it. Ligatures were similar -% to those in Early Gothic. The letter `w' was added to the hand early on -% and `j' started to appear after 1400, providing the full 26 letter alphabet -% for the first time. -% -% The Gothic Textura Prescius is a version of the Gothic scripts that was -% popular in England. Caxton used it as the basis for his printing types. -% -% \section{The \Lpack{pgothic} and \Lpack{allpgoth} packages} \label{sec:usc} -% -% The \thisfont{} font family is called |pgoth|. The font is supplied in both -% OT1 and T1 encodings. -% -% \subsection{The \Lpack{pgothic} package} -% -% This is intended for the occasions when some short pieces of text have -% to be written in \thisfont{} while the majority of the document is in another -% font. The normal baselineskips are used. -% -% \DescribeMacro{\pgothfamily} -% The |\pgothfamily| declaration starts typesetting with the \thisfont{} fonts. -% Use of the \thisfont{} font will continue until either there is another |\...family| -% declaration or the current group (e.g., environment) is closed. -% -% \DescribeMacro{\textpgoth} -% The command |\textpgoth{|\meta{text}|}| will typeset \meta{text} using the -% \thisfont{} fonts. -% -% \subsection{The \Lpack{allpgoth} package} -% -% -% This package is for when the entire document will be typeset with the -% \thisfont{} font. The baselineskips are set to those appropriate to the -% book-hand. -% -% This is a minimalist package. Apart from declaring \thisfont{} to be the -% default font and setting the baselineskips appropriately, it makes no other -% alterations. -% Vertical spacing -% before and after section titles and before and after lists, etc., will be -% too small as the \LaTeX{} design assumes a font comparable in size to -% normal printing fonts, and the book-hand is much taller. -% To capture more of the flavour of the time, all numbers -% should be written using roman numerals. -% The \Lpack{romannum} package~\cite{ROMANNUM} -% can be used so that \LaTeX{} will typeset the numbers that it generates, -% like sectioning or caption numbers, using roman numerals instead of arabic -% digits. -% -% \DescribeMacro{\cmrfamily} -% \DescribeMacro{\textcmr} -% \DescribeMacro{\cmssfamily} -% \DescribeMacro{\textcmss} -% \DescribeMacro{\cmttfamily} -% \DescribeMacro{\textcmtt} -% The |...family| declarations start typesetting with the Computer Modern Roman -% (|\cmrfamily|), the Computer Modern Sans (|\cmssfamily|), and the Computer -% Modern Typewriter (|\cmttfamily|) font families. The |\textcm..{|\meta{text}|}| -% commands will typeset \meta{text} in the corresponding Computer Modern font. -% -% The \Lpack{allpgoth} package automatically loads the \Lpack{pgothic} package, -% so its font commands are available if necessary. -% -% \StopEventually{ -% \bibliographystyle{alpha} -% \renewcommand{\refname}{Bibliography} -% \begin{thebibliography}{GMS94} -% \addcontentsline{toc}{section}{\refname} -% -% \bibitem[And69]{ANDERSON69} -% Donald M.~Anderson. -% \newblock {\em The Art of Written Forms: The Theory and Practice of Calligraphy}. -% \newblock Holt, Rinehart and Winston, 1969. -% -% \bibitem[Bol95]{BOLOGNA95} -% Giulia Bologna. -% \newblock {\em Illuminated Manuscripts: The Book before Gutenberg}. -% \newblock Crescent Books, 1995. -% -% \bibitem[Day95]{DAY95} -% Lewis F.~Day. -% \newblock {\em Alphabets Old \& New}. -% \newblock (3rd edition originally published by B.~T.~Batsford, 1910) -% \newblock Senate, 1995. -% -% \bibitem[Dro80]{DROGIN80} -% Marc Drogin. -% \newblock {\em Medieval Calligraphy: Its History and Technique}. -% \newblock Allenheld, Osmun \& Co., 1980. -% -% \bibitem[Dru95]{DRUCKER95} -% Johanna Drucker. -% \newblock {\em The Alphabetic Labyrinth}. -% \newblock Thames \& Hudson, 1995. -% -% \bibitem[Fir93]{FIRMAGE93} -% Richard A.~Firmage. -% \newblock {\em The Alphabet Abecedarium}. -% \newblock David R~Goodine, 1993. -% -% \bibitem[Fli98]{LETTRINE} -% Daniel Flipo. -% \newblock {\em The LETTRINE package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1998. -% -% \bibitem[Har95]{HARRIS95} -% David Harris. -% \newblock {\em The Art of Calligraphy}. -% \newblock DK Publishing, 1995. -% -% \bibitem[Jen95]{BETON} -% Frank Jensen. -% \newblock {\em The BETON package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1995. -% -% \bibitem[Joh71]{JOHNSTON75} -% Edward Johnston (ed. Heather Child). -% \newblock {\em Formal Penship and Other Papers}. -% \newblock Penthalic, 1971. -% -% \bibitem[Knu87]{CM} -% Donald E.~Knuth. -% \newblock {\em Computer Modern Typefaces}. -% \newblock Addison-Wesley, 1987. -% -% \bibitem[Knu92]{METAFONT} -% Donald E.~Knuth. -% \newblock {\em The METAFONTbook}. -% \newblock Addison-Wesley, 1992. -% -% \bibitem[GMS94]{GOOSSENS94} -% Michel Goossens, Frank Mittelbach, and Alexander Samarin. -% \newblock {\em The LaTeX Companion}. -% \newblock Addison-Wesley Publishing Company, 1994. -% -% \bibitem[Tho75]{THOMAS75} -% Alan G.~Thomas. -% \newblock {\em Great Books and Book Collectors}. -% \newblock Weidenfield and Nichoson, 1975. -% -% \bibitem[Wil99]{DOCMFP} -% Peter R.~Wilson. -% \newblock {\em The DOCMFP Package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1999. -% -% \bibitem[Wil99b]{ROMANNUM} -% Peter R.~Wilson. -% \newblock {\em The ROMANNUM Package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1999. -% -% \end{thebibliography} -% } -% -% \section{The Metafont code} \label{sec:mf} -% -% -% As previously noted, this work is part of a larger project to provide -% fonts covering the main manuscript book-hands. As such, one of the -% aims is to produce a coordinated set of fonts, especially as multiple -% hands might be used in a single document. -% -% Noting that the hands tend to be somewhat larger than the typical 10pt -% size (where the x-height is approximately 1.5mm) used for modern books, -% I have also designed the fonts -% at a larger than normal size, then applied some non-linear factors when reducing -% them down to a 10pt size. -% Further, I have used the height of the Carolingian minuscule as a -% normalising factor when deciding on the absolute height of any particular -% script. The x-height of the Carolingian font is made equal to the -% x-height of the Computer Modern Roman (CMR) font. -% -% Modern fonts are effectively drawn. That is, the outline of the letter is -% drawn carefully and the center is filled with ink. This is shown to good -% effect in the Metafont code for the Computer Modern fonts~\cite{CM}. -% In contrast, the manuscript letters were inked by single pen strokes in -% a calligraphic manner. I have tried to repeat this calligraphic style -% in the Metafont code. -% -% As much as possible I have tried to use parameter values from the -% Computer Modern Roman (CMR) fonts in order to reduce possible -% infelicities if the CM and manuscript fonts are used together. However, -% few of the CMR parameters are applicable to the calligraphic style. -% -% -% \subsection{The parameter file} -% -% We deal with the parameter files first, and start by announcing -% what they are for. The \thisfont{} font comes in three sizes and also as a normal -% and a bold font. -% \begin{macrocode} -%<*base7|base10|base17|base7b|base10b|base17b> -%%%% PGOTH7.MF Gothic Textura Prescius at 7 point design size. -%%%% PGOTH10.MF Gothic Textura Prescius at 10 point design size. -%%%% PGOTH17.MF Gothic Textura Prescius at 17 point design size. -%%%% PGOTHB7.MF Gothic Textura Prescius Bold at 7 point design size. -%%%% PGOTHB10.MF Gothic Textura Prescius Bold at 10 point design size. -%%%% PGOTHB17.MF Gothic Textura Prescius Bold at 17 point design size. -% -% \end{macrocode} -% Parameters from CMR are used as much as possible. We also -% make sure that \Lpack{cmbase} is loaded as well as plain Metafont. -% \begin{macrocode} -if unknown cmbase: input cmbase fi - -%font_identifier:="PGOTH"; font_size 7pt#; -%font_identifier:="PGOTH"; font_size 10pt#; -%font_identifier:="PGOTH"; font_size 17.28pt#; -%font_identifier:="PGOTHB"; font_size 7pt#; -%font_identifier:="PGOTHB"; font_size 10pt#; -%font_identifier:="PGOTHB"; font_size 17.28pt#; - -% \end{macrocode} -% -% \DescribeVariable{jutstretch} -% The CMR scaling for lowercase serifs wrt 17pt size. -% \begin{macrocode} -% jutstretch:=1.19; -% jutstretch:=1.152; -% jutstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{stemstretch} -% The CMR scaling for lowercase stem widths wrt 17pt size. -% \begin{macrocode} -% stemstretch:=1.50; -% stemstretch:=1.31; -% stemstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{caprat} -% The scaling for capitals wrt lowercase. -% (the ratio for CMR10 is 1.59). -% \begin{macrocode} - caprat:=7/5; % ratio of capital height to minuscule height -% \end{macrocode} -% -% \DescribeVariable{cap_jutstretch} -% The CMR scaling for uppercase serifs wrt 17pt size. -% \begin{macrocode} -% cap_jutstretch:=1.3; -% cap_jutstretch:=1.2; -% cap_jutstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{cap_stemstretch} -% The CMR scaling for uppercase stem width wrt 17pt size. -% \begin{macrocode} -% cap_stemstretch:=1.45; -% cap_stemstretch:=1.31; -% cap_stemstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{bfudge} -% Letter width scaling for bold font wrt normal font. We don't really -% need to change this for bold fonts as the letter width is in terms -% of the pen, not the x-height. -% -% \begin{macrocode} -% bfudge:=1.0; -% bfudge:=1.0; %% normally 1.2 -% \end{macrocode} -% -% \DescribeVariable{szfudge} -% Width scaling wrt 17pt letter width. -% \begin{macrocode} -% szfudge:=1.18; -% szfudge:=1.0; -% szfudge:=1.0; -% \end{macrocode} -% -% \DescribeVariable{hstretch} -% Horizontal stretching factor wrt 17pt size letter width. -% \begin{macrocode} - hstretch:=szfudge*bfudge; -% \end{macrocode} -% -% \DescribeVariable{carol_height} -% The x-height of the Carolingian gothic font. -% \begin{macrocode} -% carol_height#:=108.5/36pt#; -% carol_height#:=155/36pt#; -% carol_height#:=268/36pt#; -% \end{macrocode} -% -% \DescribeVariable{vstretch} -% The height of this font wrt the Carolingian font. -% \begin{macrocode} - vstretch:=1.3; - -% \end{macrocode} -% -% \DescribeVariable{x_height} -% The x-height of lower case letters. Scaled from the Carolingian font. -% \begin{macrocode} - x_height#:=vstretch*carol_height#; -% \end{macrocode} -% -% \DescribeVariable{u} -% The unit width. The CMR values are used. -% \begin{macrocode} -% u#:=15.5/36pt#; -% u#:=20/36pt#; -% u#:=32.5/36pt#; -% u#:=17.9/36pt#; -% u#:=23/36pt#; -% 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 -% cap_serif_fit#:=3.5/36pt#; % extra sidebar near uppercase serifs -% cap_serif_fit#:=5/36pt#; % extra sidebar near uppercase serifs -% cap_serif_fit#:=8/36pt#; % extra sidebar near uppercase serifs -% letter_fit#:=0pt#; % extra space added to all sidebars -% letter_fit#:=0pt#; % extra space added to all sidebars -% letter_fit#:=-0.1pt#; % extra space added to all sidebars -% \end{macrocode} -% -% \DescribeVariable{sb} -% A length used for adjusting the side bearings of characters. -% Normally this is |1/2u| but reduce it by 1/2 for the Gothic. -% \begin{macrocode} -% sb#:=1/4u#; % unit for side bearings -% sb#:=1/4u#; % unit for side bearings -% sb#:=1/4u#; % unit for side bearings - -% \end{macrocode} -% -% \DescribeVariable{cap_sb} -% A length used for adjusting the side bearings of uppercase characters. -% \begin{macrocode} -% cap_sb#:=2sb#; % unit for uppercase side bearings -% cap_sb#:=2sb#; % unit for uppercase side bearings -% cap_sb#:=2sb#; % unit for uppercase side bearings - -% \end{macrocode} -% -% \DescribeVariable{cap_height} -% The height of capital letters. -% \begin{macrocode} -% cap_height#:=172.2/36pt#; % height of caps -% cap_height#:=246/36pt#; % height of caps -% 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} -% thickfudge:=1/5; -% thickfudge:=1/4; -% \end{macrocode} -% -% \DescribeVariable{thinfudge} -% The nib sharpness. -% \begin{macrocode} -thinfudge:=1/6; -% \end{macrocode} -% -% \DescribeVariable{thick} -% The maximum nib width. -% That is, the width of the thickest line that can be penned. -% \begin{macrocode} -thick#:=stemstretch*thickfudge*x_height#; % max pen breadth -% \end{macrocode} -% -% \DescribeVariable{thin} -% The nib thinness. -% That is, the width of the thinnest line that can be penned. -% \begin{macrocode} -thin#:=thinfudge*thick#; -% \end{macrocode} -% -% \DescribeVariable{pangle} -% The pen angle (in degrees). -% \begin{macrocode} -pangle:=45; % pen angle -% \end{macrocode} -% -% \DescribeVariable{stem_width} -% The width of a vertical stem. -% \begin{macrocode} -stem_width#:= thick#*(cosd pangle); -% \end{macrocode} -% -% \DescribeVariable{perpdec} -% \DescribeVariable{angdec} -% The perpendicular shift between pairs of thin decorative lines in capitals -% is |perpdec| and between angled lines is |angdec|. -% \begin{macrocode} -perpdec#:= 3thin#; -angdec#:= perpdec#/(cosd pangle); -% \end{macrocode} -% -% -% \DescribeVariable{ascratio} -% The height of lower case ascenders wrt |x_height|. -% \begin{macrocode} - ascratio:=5/4; -% \end{macrocode} -% -% \DescribeVariable{asc_height} -% The height of lower case ascenders. -% \begin{macrocode} - asc_height#:=ascratio*x_height#; -% \end{macrocode} -% -% \DescribeVariable{descratio} -% The depth of lower case descenders wrt |x_height|. -% \begin{macrocode} - descratio:=2/4; -% \end{macrocode} -% -% \DescribeVariable{desc_depth} -% The depth of lower case descenders. -% \begin{macrocode} - desc_depth#:=descratio*x_height#; -% \end{macrocode} -% -% \DescribeVariable{body_height} -% The height of the tallest character. -% \begin{macrocode} - body_height#:=caprat*asc_height#; -% \end{macrocode} -% -% \DescribeVariable{body_depth} -% The depth of the lowest character. -% \begin{macrocode} - body_depth#:=caprat*desc_depth#; -% \end{macrocode} -% -% \DescribeVariable{half_height} -% Half the normal letter height. -% \begin{macrocode} - half_height#:=1/2x_height#; % half the height of x height letters - -% \end{macrocode} -% -% \DescribeVariable{side} -% We might be using a square for the character design. -% \begin{macrocode} -side#:=x_height#; -% \end{macrocode} -% -% \DescribeVariable{rule_thickness} -% Thickness of rules (in math symbols). The CMR values are used. -% \begin{macrocode} -% rule_thickness#:=.34pt#; -% rule_thickness#:=.4pt#; -% rule_thickness#:=.6pt#; - -% \end{macrocode} -% -% \DescribeVariable{jutfudge} -% Controls the protrusion of serifs. -% \begin{macrocode} -%%%jutfudge:= 3/4; -jutfudge:= 1/2; -% \end{macrocode} -% -% \DescribeVariable{jut} -% The lowercase serif protrusion. -% \begin{macrocode} -jut#:=jutstretch*jutfudge*thick#; -% \end{macrocode} -% -% \DescribeVariable{srad} -% |srad| with |0 < srad < 1| controls the serif radius. -% \begin{macrocode} -srad:=0.8; % was 0.5 -% \end{macrocode} -% -% \DescribeVariable{trijut} -% The lowercase triangular serif protrusion. -% \begin{macrocode} -trijut#:=0.75jutstretch*thick#; -% \end{macrocode} -% -% \DescribeVariable{clubjutfudge} -% The fractional protusion of a club serif. -% \begin{macrocode} -clubjutfudge:=1/2; -% \end{macrocode} -% -% \DescribeVariable{clubjut} -% The lowercase club serif protrusion. -% \begin{macrocode} -clubjut#:=jutstretch*clubjutfudge*thick#; -% \end{macrocode} -% -% \DescribeVariable{wided} -% \DescribeVariable{widedmin} -% Default juts of wide (touching) diamonds. -% \begin{macrocode} -wided:= 0.75; -widedmin := 1.05 - wided; -% \end{macrocode} -% -% \DescribeVariable{narrowd} -% \DescribeVariable{narrowdmin} -% Default juts of narrow (non-touching) diamonds. -% \begin{macrocode} -narrowd:= 0.5; -narrowdmin := 0.7 - narrowd; -% \end{macrocode} -% -% \DescribeVariable{diawd} -% \DescribeVariable{diang} -% Default width and angle of diamonds. -% \begin{macrocode} -diawd := 1.0; -diang := 30; -% \end{macrocode} -% -% \DescribeVariable{fig_height} -% The height of numerals. Make these midway between normal and capital -% letters. -% \begin{macrocode} - fig_height#:=(0.5[1,caprat])*x_height#; -% \end{macrocode} -% -% \DescribeVariable{fig_width} -% The width of numerals. All numerals are the same width (roughly, an `o'). -% \begin{macrocode} - fig_width#:=hstretch*(4+wided+widedmin)*stem_width#; -% \end{macrocode} -% -% -% -% \DescribeVariable{o} -% Amount of overshoot for curves (as in an `o'). Use CMR values. -% \begin{macrocode} -% o#:=5/36pt#; -% o#:=8/36pt#; -% o#:=10/36pt#; - -% \end{macrocode} -% -% \DescribeVariable{slant} -% |slant| is the amount the font slopes to the right. \\ -% 5 degrees = 9/100; 10 degrees = 11/50. -% \begin{macrocode} -slant:=0; % tilt ratio $(\Delta x/\Delta y)$ -%%%%%%slant:= sind 10/cosd 10; %% 10 degree slant - -% \end{macrocode} -% -% \DescribeVariable{monospace} -% We are generating a variable-width font. -% \begin{macrocode} -monospace:=false; % should all characters have the same width? - -% \end{macrocode} -% -% \DescribeVariable{dot_size} -% The size of (punctuation) dots. -% \begin{macrocode} -dot_size#:=5thin#; % size of dots -% \end{macrocode} -% -% \DescribeVariable{comma_width} -% The horizontal width of a comma. -% \begin{macrocode} -comma_width#:=5/4dot_size#; - -% \end{macrocode} -% -% Finally, call the driver file for the font. -% \begin{macrocode} -generate pgothtitle %% switch to the driver file - -% \end{macrocode} -% -% The end of this code section. -% \begin{macrocode} -% -% \end{macrocode} -% -% -% \subsection{The driver file} -% -% The driver file sets up the font parameters and also contains -% the macros used in the definition of the characters. -% -% \begin{macrocode} -%<*mfd> -% This is PGOTHTITLE.MF for the Gothic Textura Prescius font. -% This makes a short font. -% This file also contains special macros universally needed in the -% font but either not in the cmbase.mf file or modifications of these. -% -% \end{macrocode} -% -% \begin{routine}{makebox} -% This is a new version of the \Lpack{cmbase.mf} |makebox| macro. -% Essentially, as we are only generating a single case font, we don't -% need all the horizontals for the CMR characters. -% -% \begin{macrocode} -% A new version of cmbase.mf makebox macro -def makebox(text rule) = - for y=0,half_height,cap_height,body_height,x_height,-desc_depth,-body_depth: - rule((l,y)t_,(r,y)t_); endfor % horizontals - for x=l,r: rule((x,-body_depth)t_,(x,body_height)t_); endfor % verticals - for x=u*(1+floor(1/u)) step u until r-1: - rule((x,-body_depth)t_,(x,body_height)t_); endfor % more verticals - if charic<>0: - rule((r+charic*pt,h.o_),(r+charic*pt,.5h.o_)); fi % italic correction -enddef; - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{proofpcbb} -% The macro |proofpcbb(S, xoff, yoff)| draws crosses at the corners of the -% square, and at the bottom and top midpoints, where the point |zS| is at -% position |(xoff,yoff)| in the square. -% \begin{macrocode} - -% A macro to delineate a letter's bounding square in proof mode. -% Point z$ is at (xoff,yoff) in the bounding square. -def proofpcbb(suffix $)(expr xoff, yoff) = -if proofing > 0: - x$bl = x$ - xoff; y$bl = y$ - yoff; % Bottom Left Hand Corner - z$br = (x$bl+side, y$bl); % BRHC - z$tr = (x$bl+side, y$bl+side); % TRHC - z$tl = (x$bl, y$bl+side); % TLHC - z$bc = 1/2[z$bl,z$br]; z$tc = 1/2[z$tl,z$tr]; % horizontal mid points - pair hc, vc; - hc = (2u,0); vc = (0,2u); - pickup pensquare scaled 2; - for s = z$bl, z$br, z$tr, z$tl, z$bc, z$tc: - draw s-hc--s+hc; - draw s-vc--s+vc; - endfor -fi -enddef; - -% \end{macrocode} -% \end{routine} -% -% -% -% \begin{routine}{pgothic_font_setup} -% This macro contains the set up for the \thisfont{} fonts. -% \begin{macrocode} - -def pgothic_font_setup= % contains special stuff for pgothic fonts - define_pixels(side,half_height,carol_height,comma_width); - define_pixels(u,dot_size,letter_size,cap_height,width_adj,serif_fit, - cap_serif_fit,jut,clubjut,cap_jut,trijut); - define_pixels(fig_width); - define_whole_pixels(letter_fit,sb,cap_sb); - define_whole_vertical_pixels(body_height,asc_height,cap_height,x_height, - desc_depth,body_depth,fig_height); - define_corrected_pixels(o); - define_blacker_pixels(thick,thin); - define_pixels(stem_width); - define_pixels(perpdec,angdec); - let adjust_fit = normal_adjust_fit; -% \end{macrocode} -% \DescribeVariable{stylus} -% The pen for drawing the thinnest lines is |stylus|. -% \begin{macrocode} - pickup pencircle scaled thin; - stylus:=savepen; -% \end{macrocode} -% \DescribeVariable{thickstylus} -% The pen for drawing lines a bit thicker than the thinnest is |thickstylus|. -% \begin{macrocode} - pickup pencircle scaled (1.5thin); - thickstylus:=savepen; -% \end{macrocode} -% \DescribeVariable{quill} -% The normal calligraphic pen is |quill|. -% \begin{macrocode} - pickup pencircle xscaled thick yscaled thin rotated pangle; - quill:=savepen; - -% \end{macrocode} -% -% \DescribeVariable{threequarterquill} -% A pen with 3/4 of the width as quill (but with the same thinness). -% \begin{macrocode} - pickup pencircle xscaled 3/4thick yscaled thin rotated pangle; - threequarterquill := savepen; - -% \end{macrocode} -% -% \DescribeVariable{halfquill} -% A pen with 1/2 of the width as quill (but with the same thinness). -% \begin{macrocode} - pickup pencircle xscaled 1/2thick yscaled thin rotated pangle; - halfquill := savepen; - -% \end{macrocode} -% -% \DescribeVariable{quarterquill} -% A pen with 1/4 of the width as quill (but with the same thinness). -% \begin{macrocode} - pickup pencircle xscaled 1/4thick yscaled thin rotated pangle; - quarterquill := savepen; - -% \end{macrocode} -% -% -% \begin{macrocode} - numeric pcshiftx#; % x value of LHS of box wrt origin of char box - define_pixels(pcshiftx); - numeric sqxside#; % x size of the square - numeric sqyside#; % y size of the square - define_pixels(sqxside,sqyside); - -enddef; % end of pgothic_font_setup - -% \end{macrocode} -% \end{routine} -% -% -% \DescribeVariable{ductus} -% A boolean to control drawing the ductus (TRUE) or the full letter (FALSE). -% \begin{macrocode} -boolean ductus; -ductus:=false; -% \end{macrocode} -% -% \DescribeVariable{qhor} -% \DescribeVariable{qvert} -% The cosine and sine of the pen angle. -% \begin{macrocode} -numeric qhor, qvert; -qhor:=cosd(pangle); qvert:=sind(pangle); -% \end{macrocode} -% -% \DescribeVariable{pdir} -% The vector corresponding to the pen angle. -% \begin{macrocode} -pair pdir; pdir=dir(pangle); -% \end{macrocode} -% -% \DescribeVariable{ppdir} -% The vector that is perpendicular (anticlockwise) to the pen angle. -% \begin{macrocode} -pair ppdir; ppdir=dir(pangle+90); -% \end{macrocode} -% -% \begin{routine}{draw_upforkstem} -% A macro to draw a vertical stem with a fork at the top. -% |draw_upforkstem(1,2)| uses the current pen to draw a vertical line, whose absolute -% top and bottom are at |z1| and |z2|. The top (|z1|) has a wedge shaped slit. -% \begin{macrocode} - -def draw_upforkstem(suffix $, $$)= - pen oldpen; oldpen:=currentpen; - x$a=x$; top y$a = bot y$; % top of straight stem - draw z$a--z$$; % straight part - z$b = (rt x$, y$); z$c = (x$b, top y$a); - z$d = (lft x$, bot y$a); z$e = (x$d, y$); - pickup stylus; - rt x$cc = x$c; y$cc = y$c; - lft x$bb = x$b; y$bb = y$b; - lft x$dd = x$d; y$dd = y$d; - rt x$ee = x$e; y$ee = y$e; - filldraw z$a--z$bb..z$cc--cycle; % fork - filldraw z$a--z$dd..z$ee--cycle; - pickup oldpen; - labels($a,$b,$c,$d,$e); -enddef; % end of draw_upforkstem - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{draw_downforkstem} -% A macro to draw a vertical stem with a fork at the bottom. -% |draw_downforkstem(1,2)| uses the current pen to draw a vertical line, whose absolute -% top and bottom are at |z1| and |z2|. The bottom (|z2|) has a wedge shaped slit. -% \begin{macrocode} - -def draw_downforkstem(suffix $, $$)= - pen oldpen; oldpen:=currentpen; - x$$a=x$$; bot y$$a = top y$$; % bottom of straight stem - draw z$--z$$a; % straight part - z$$b = (rt x$$, y$$); z$$c = (x$$b, top y$$a); - z$$d = (lft x$$, bot y$$a); z$$e = (x$$d, y$$); - pickup stylus; - rt x$$cc = x$$c; y$$cc = y$$c; - lft x$$bb = x$$b; y$$bb = y$$b; - lft x$$dd = x$$d; y$$dd = y$$d; - rt x$$ee = x$$e; y$$ee = y$$e; - filldraw z$$a--z$$bb..z$$cc--cycle; % fork - filldraw z$$a--z$$dd..z$$ee--cycle; - pickup oldpen; - labels($$a,$$b,$$c,$$d,$$e); -enddef; % end of draw_downforkstem - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{draw_upcurlstem} -% A macro to draw a vertical stem with a curl to the left at the top. -% |draw_upcurlstem(1,2)| uses the current pen to draw a vertical line, whose absolute -% top and bottom are at |z1| and |z2|. The top (|z1|) has a fancy curl to the left, -% jutting out 3 stem widths. -% \begin{macrocode} - -def draw_upcurlstem(suffix $, $$)= - pen oldpen; oldpen:=currentpen; - path curlp[]; numeric curln[]; - x$a=x$; top y$a = y$; % top of straight stem - draw z$a--z$$; % straight part - curln1 := rt x$a - lft x$a; % stem width - x$b = x$a - 4/2curln1; y$b = y$a; % left jut - curlp1 := z$a{-pdir}..{left}z$b; - draw curlp1; - - x$c = x$a-3curln1; top y$c = bot y$a-1/2curln1; - x$f = x$b; y$f = 1/3[y$c,y$b]; - x$tb = rt x$b; y$tb = top y$b; - x$bb = lft x$b; y$bb = bot y$b; - curlp2 := z$tb--z$bb..{down}z$c..{ppdir}z$f; - pickup stylus; - draw curlp2; - pickup oldpen; - labels($a,$b,$c,$d,$e,$f); -enddef; % end of draw_upcurlstem - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{draw_updiamondstem} -% A macro to draw a vertical stem with a diamond at the top. -% |draw_updiamondstem(1,2,fr,minfr,wd,ang)| uses the quill pen to draw a vertical line, -% whose absolute -% top and bottom are at |z1| and |z2|. The top (|z1|) has a leftward diamond, whose -% left jut is |fr| times the width of the stem, right jut is |minfr*stem_width|, width -% is |wd*stem_width| and angle above the horizontal is |ang|. -% \begin{macrocode} - -def draw_updiamondstem(suffix $, $$)(expr fr, minfr, wd, phi)= - pen oldpen; oldpen:=currentpen; - numeric sj; sj := fr*stem_width; % jut distance - numeric sjr; sjr := minfr*stem_width; % right jut distance - numeric jw; jw := wd*stem_width; % jut width - %% $b is bottom left of jut, on LHS of stem - %% $c is leftmost point on jut - %% $d is topmost point on jut - %% $g is topmost point on stem - %% $e is on exprapolation of line from $d through $g - %% i.e., the rightmost point on jut - %% $f is on RHS of stem - pickup quill; - x$b = lft x$; - x$c = x$b - sj; y$c = y$ - jw*(cosd phi); % $c done - y$b = y$c - sj*(sind phi); % $b done - x$d = x$c + jw*(sind phi); y$d = y$; % $d done - x$g = x$f = rt x$; - y$g = y$ - (x$g-x$d)*(sind phi)/(cosd phi); % $g done - x$a = x$; top y$a = y$g; % $a done - x$e = x$g + sjr; z$e = whatever[z$d,z$g]; % $e done - z$f-z$e = whatever*(z$c-z$d); % $f done - x$h = x$b; y$h = bot y$a; - draw z$a--z$$; % straight part - pickup stylus; - lft x$cc = x$c; y$cc = y$c; - x$dd = x$d; top y$dd = y$d; - rt x$ee = x$e; bot y$ee=y$e; - filldraw z$b--z$cc--z$dd--z$ee--z$f--cycle; % diamond - if y$b > y$h: - lft x$hh = x$h; y$hh=y$h; - filldraw z$b--z$hh--z$g--cycle; - fi - pickup oldpen; - labels($a,$b,$c,$d,$e,$f); -enddef; % end of draw_updiamondstem - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{draw_downdiamondstem} -% A macro to draw a vertical stem with a diamond at the bottom. -% |draw_downdiamondstem(1,2,fr,minfr,wd,ang)| uses the quill pen to draw a vertical line, -% whose absolute -% top and bottom are at |z1| and |z2|. The bottom (|z2|) has a rightward diamond, whose -% right jut is |fr| times the width of the stem, left jut is |minfr*stem_width|, -% width is |wd*stem_width| and is at |ang| degrees below the horizontal. -% \begin{macrocode} - -def draw_downdiamondstem(suffix $, $$)(expr fr, minfr, wd, phi)= - pen oldpen; oldpen:=currentpen; - numeric sj; sj := fr*stem_width; % (left) jut distance - numeric sjr; sjr := minfr*stem_width;; % right jut distance - numeric jw; jw := wd*stem_width; % jut width - %% $$b is top right of jut, on RHS of stem - %% $$c is rightmost point on jut - %% $$d is bottommost point on jut - %% $$g is bottommost point on stem - %% $$e is on exprapolation of line from $d through $g - %% i.e., the leftmost point on jut - %% $$f is on LHS of stem - pickup quill; - x$$b = rt x$$; - x$$c = x$$b + sj; y$$c = y$$ + jw*(cosd phi); % $$c done - y$$b = y$$c + sj*(sind phi); % $$b done - x$$d = x$$c - jw*(sind phi); y$$d = y$$; % $$d done - x$$g = x$$f = lft x$$; - y$$g = y$$ + (x$$d-x$$g)*(sind phi)/(cosd phi); % $$g done - x$$a = x$$; bot y$$a = y$$g; % $$a done - x$$e = x$$g - sjr; z$$e = whatever[z$$d,z$$g]; % $$e done - z$$f-z$$e = whatever*(z$$c-z$$d); % $$f done - x$$h = x$$b; y$$h = top y$$a; - draw z$--z$$a; % straight part - pickup stylus; - rt x$$cc = x$$c; y$$cc=y$$c; - x$$dd = x$$d; bot y$$dd = y$$d; - lft x$$ee = x$$e; top y$$ee = y$$e; - filldraw z$$b--z$$cc--z$$dd--z$$ee--z$$f--cycle; % diamond - if y$$b < y$$h: - rt x$$hh = x$$h; y$$hh=y$$h; - filldraw z$$b--z$$hh--z$$g--cycle; - fi - pickup oldpen; - labels($$a,$$b,$$c,$$d,$$e,$$f); -enddef; % end of draw_downdiamondstem - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{draw_flat_head} -% A macro to draw a squared off top of a vertical stroke. -% |draw_flat_head(1)| draws at the top of the stem ending at |z1|. -% \begin{macrocode} - -def draw_flat_head(suffix $)= - pen oldpen; oldpen:=currentpen; -%% pickup quill; - x$bl'' = lft x$; y$bl'' = bot y$; - x$tr'' = rt x$; y$tr'' = top y$; - pickup stylus; - lft x$blfh = x$bl''; y$blfh = y$bl''; - rt x$trfh = x$tr''; top y$trfh = y$tr''; - x$tlfh = x$blfh; y$tlfh = y$trfh; - filldraw z$blfh--z$tlfh--z$trfh--cycle; - pickup oldpen; - labels($tlfh); -enddef; % end of draw_flat_head -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{draw_flat_foot} -% A macro to draw a squared off bottom of a vertical stroke. -% |draw_flat_foot(1)| draws at the bottom of the stem ending at |z1|. -% \begin{macrocode} - -def draw_flat_foot(suffix $)= - pen oldpen; oldpen:=currentpen; -%% pickup quill; - x$bl'' = lft x$; y$bl'' = bot y$; - x$tr'' = rt x$; y$tr'' = top y$; - pickup stylus; - lft x$blff = x$bl''; bot y$blff = y$bl''; - rt x$trff = x$tr''; y$trff = y$tr''; - x$brff = x$trff; y$brff = y$blff; - filldraw z$blff--z$trff--z$brff--cycle; - pickup oldpen; - labels($brff); -enddef; % end of draw_flat_foot -% \end{macrocode} -% \end{routine} -% -% -% -% \begin{routine}{draw_serif} -% A macro to draw a serif. |draw_serif(1,2,f)| uses the current pen to -% draw a serif of extent |jut| at |z1| to the left of the line from |z2| -% to |z1|. The -% radius is controlled by |f|, where $0y$$: - 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 $0y$$: - 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 0) or - (abs sl < tantol) or (abs sm < tantol) or (abs sr < tantol); - if wtest: - if (stpsize < tantol): - z$tan=(0,0); - errmessage("No tangent; path too short"); - else: - if (sl*sr > 0): - z$tan=(0,0); - errmessage("No tangent; end products have the same sign"); - else: - if (abs sl < tantol): - z$tan=ptl; - else: - if (abs sm < tantol): - z$tan=ptm; - else: - z$tan=ptr; - fi - fi - fi - fi - else: -% \end{macrocode} -% There should be a tangent and we iterate to find it, using -% bisection. If there is one to be found it will be at the -% current middle point. The tangent point will be somewhere -% between the two points that lead to opposite signed scalar -% products. -% \begin{macrocode} - forever: - if (sl*sm < 0): % opposite signs, look between pl & pm - pr:=pm; pm:=0.5(pr+pl); - vecpr := vecpm; veclr := veclm; sr:=sm; - else: - pl:=pm; pm:=0.5(pr+pl); - vecpl:=vecpm; vecll:=veclm; sl:=sm; - fi - stpsize:=pr-pl; - ptm := point pm of pth; - veclm := unitvector (z$-ptm); - vecpm := unitvector (direction pm of pth); - sm := veclm scalarprod vecpm; -% \end{macrocode} -% We stop the iteration if the step size is too small or the -% middle point is the tangent point. In either case, the -% middle point is the best guess that can be made. -% \begin{macrocode} - wtest := (stpsize < tantol) or (abs sm < tantol); - if wtest: - if (abs sm < tantol): - z$tan = ptm; - else: - z$tan = ptm; -%%%%%% errmessage("Warning: tangent approximated"); - fi - fi - exitif wtest; - endfor - fi -enddef; - -% \end{macrocode} -% \end{routine} -% -% -% Set the mode and font setup. -% \begin{macrocode} - -font_coding_scheme:="ASCII minuscules and punctuation"; -mode_setup; -pgothic_font_setup; - -% \end{macrocode} -% -% -% We generate letters, together with some punctuation and -% analphabetics. -% \begin{macrocode} - -input pgothl; % lower case -input pgothu; % capitals -input pgothpunct; % punctuation -input pgothlig; % the several dashes -input pgothdig; % arabic digits - -% \end{macrocode} -% -% Set up the spacings, stretches and shrinks. -% -% \begin{macrocode} - -font_slant slant; font_x_height x_height#; -if monospace: - font_normal_space 2vstretch*stem_width#; % no stretching or shrinking - font_quad vstretch*18u#; - font_extra_space vstretch*9u#; -else: - font_normal_space 2vstretch*stem_width#+2letter_fit#; - font_normal_stretch vstretch*3u#; font_normal_shrink vstretch*2u#; - font_quad vstretch*18u#+4letter_fit#; - font_extra_space vstretch*2u#; - -% \end{macrocode} -% -% Finally, do the ligtables, but I don't think they are needed (yet?). -% -% \begin{macrocode} - -fi - -bye. - - k#:=-.5u#; kk#:=-1.5u#; kkk#:=-2u#; % three degrees of kerning - kks#:=-4u#; kkx#:=-1.5u#; kkj#:=-2u#; kkr#:=-5u#; kkrs#:=-2u#; kkrl#:=-8u#; - ligtable "s": - "a" kern kks#, "A" kern kks#, - "c" kern kks#, "C" kern kks#, - "d" kern kks#, "D" kern kks#, - "e" kern kks#, "E" kern kks#, - "f" kern kks#, "F" kern kks#, - "g" kern kks#, "G" kern kks#, - "i" kern kks#, "I" kern kks#, - "j" kern kks#, "J" kern kks#, - "k" kern kks#, "K" kern kks#, - "m" kern kks#, "M" kern kks#, - "n" kern kks#, "N" kern kks#, - "o" kern kks#, "O" kern kks#, - "p" kern kks#, "P" kern kks#, - "q" kern kks#, "Q" kern kks#, - "r" kern kks#, "R" kern kks#, - "t" kern kks#, "T" kern kks#, - "u" kern kks#, "U" kern kks#, - "v" kern kks#, "V" kern kks#, - "w" kern kks#, "W" kern kks#, - "x" kern kks#, "X" kern kks#, - "y" kern kks#, "Y" kern kks#, - "z" kern kks#, "Z" kern kks#; - - ligtable "S": - "a" kern kks#, "A" kern kks#, - "c" kern kks#, "C" kern kks#, - "d" kern kks#, "D" kern kks#, - "e" kern kks#, "E" kern kks#, - "f" kern kks#, "F" kern kks#, - "g" kern kks#, "G" kern kks#, - "i" kern kks#, "I" kern kks#, - "j" kern kks#, "J" kern kks#, - "k" kern kks#, "K" kern kks#, - "m" kern kks#, "M" kern kks#, - "n" kern kks#, "N" kern kks#, - "o" kern kks#, "O" kern kks#, - "p" kern kks#, "P" kern kks#, - "q" kern kks#, "Q" kern kks#, - "r" kern kks#, "R" kern kks#, - "t" kern kks#, "T" kern kks#, - "u" kern kks#, "U" kern kks#, - "v" kern kks#, "V" kern kks#, - "w" kern kks#, "W" kern kks#, - "x" kern kks#, "X" kern kks#, - "y" kern kks#, "Y" kern kks#, - "z" kern kks#, "Z" kern kks#; - - ligtable "x": - "a" kern kkx#, "A" kern kkx#, - "b" kern kkx#, "B" kern kkx#, - "c" kern kkx#, "C" kern kkx#, - "d" kern kkx#, "D" kern kkx#, - "e" kern kkx#, "E" kern kkx#, - "g" kern kkx#, "G" kern kkx#, - "j" kern kkx#, "J" kern kkx#, - "l" kern kkx#, "L" kern kkx#, - "o" kern kkx#, "O" kern kkx#, - "q" kern kkx#, "Q" kern kkx#, - "t" kern kkx#, "T" kern kkx#, - "u" kern kkx#, "U" kern kkx#, - "v" kern kkx#, "V" kern kkx#, - "w" kern kkx#, "W" kern kkx#, - "y" kern kkx#, "Y" kern kkx#; - - ligtable "X": - "a" kern kkx#, "A" kern kkx#, - "b" kern kkx#, "B" kern kkx#, - "c" kern kkx#, "C" kern kkx#, - "d" kern kkx#, "D" kern kkx#, - "e" kern kkx#, "E" kern kkx#, - "g" kern kkx#, "G" kern kkx#, - "j" kern kkx#, "J" kern kkx#, - "l" kern kkx#, "L" kern kkx#, - "o" kern kkx#, "O" kern kkx#, - "q" kern kkx#, "Q" kern kkx#, - "t" kern kkx#, "T" kern kkx#, - "u" kern kkx#, "U" kern kkx#, - "v" kern kkx#, "V" kern kkx#, - "w" kern kkx#, "W" kern kkx#, - "y" kern kkx#, "Y" kern kkx#; - - ligtable "a": "A": - "b": "B": - "c": "C": - "d": "D": - "e": "E": - "h": "H": - "i": "I": - "k": "K": - "l": "L": - "m": "M": - "n": "N": - "o": "O": - "p": "P": - "t": "T": - "u": "U": - "v": "V": - "w": "W": - "z": "Z": - "j" kern kkj#, "J" kern kkj#; - - ligtable "r": - "a" kern kkr#, "A" kern kkr#, - "b" kern kkr#, "B" kern kkr#, - "c" kern kkr#, "C" kern kkr#, - "d" kern kkr#, "D" kern kkr#, - "e" kern kkr#, "E" kern kkr#, - "f" kern kkrs#, "F" kern kkrs#, - "g" kern kkrs#, "G" kern kkrs#, - "h" kern kkr#, "H" kern kkr#, - "i" kern kkr#, "I" kern kkr#, - "j" kern kkj#, "J" kern kkj#, - "k" kern kkrs#, "K" kern kkrs#, - "l" kern kkr#, "L" kern kkr#, - "m" kern kkr#, "M" kern kkr#, - "n" kern kkrs#, "N" kern kkrs#, - "o" kern kkr#, "O" kern kkr#, - "p" kern kkrs#, "P" kern kkrs#, - "q" kern kkr#, "Q" kern kkr#, - "r" kern kkrs#, "R" kern kkrs#, - "s" kern kkr#, "S" kern kkr#, - "t" kern kkr#, "T" kern kkr#, - "u" kern kkr#, "U" kern kkr#, - "v" kern kkr#, "V" kern kkr#, - "w" kern kkr#, "W" kern kkr#, - "x" kern kkx#, "X" kern kkx#, - "y" kern kkr#, "Y" kern kkr#, - "z" kern kkr#, "Z" kern kkr#; - - ligtable "R": - "a" kern kkr#, "A" kern kkr#, - "b" kern kkr#, "B" kern kkr#, - "c" kern kkr#, "C" kern kkr#, - "d" kern kkr#, "D" kern kkr#, - "e" kern kkr#, "E" kern kkr#, - "f" kern kkrs#, "F" kern kkrs#, - "g" kern kkrs#, "G" kern kkrs#, - "h" kern kkr#, "H" kern kkr#, - "i" kern kkr#, "I" kern kkr#, - "j" kern kkj#, "J" kern kkj#, - "k" kern kkrs#, "K" kern kkrs#, - "l" kern kkr#, "L" kern kkr#, - "m" kern kkr#, "M" kern kkr#, - "n" kern kkrs#, "N" kern kkrs#, - "o" kern kkr#, "O" kern kkr#, - "p" kern kkrs#, "P" kern kkrs#, - "q" kern kkr#, "Q" kern kkr#, - "r" kern kkrs#, "R" kern kkrs#, - "s" kern kkr#, "S" kern kkr#, - "t" kern kkr#, "T" kern kkr#, - "u" kern kkr#, "U" kern kkr#, - "v" kern kkr#, "V" kern kkr#, - "w" kern kkr#, "W" kern kkr#, - "x" kern kkx#, "X" kern kkx#, - "y" kern kkr#, "Y" kern kkr#, - "z" kern kkr#, "Z" kern kkr#; - - -fi - -bye. - -% -% \end{macrocode} -% -% \subsection{The code for normal letters} -% -% The following code is for the lower case characters. -% -% \begin{macrocode} -%<*min> -% PGOTHL.MF Program file for Gothic Textura Prescius lower case -% - -% \end{macrocode} -% -% -% \begin{routine}{a} -% The letter `a'. -% \begin{macrocode} -cmchar "PGOTH letter a"; -beginchar("a", 2sb#+hstretch*((3+widedmin+wided)*stem_width#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pair pr[]; -pickup quill; -%% left hand -lft x1 = pcshiftx + widedmin*stem_width; y1 = 1/2h; -x2 = x1; y2 = 0; -draw_downdiamondstem(1,2,wided,widedmin,diawd,diang); -%% right stem -rt x3 = w - pcshiftx - wided*stem_width; y3=h; -x4=x3; bot y4=0; -z34=1/2[z3,z4]; -draw_updiamondstem(3,34,1.0,0.1,diawd,diang); -%draw_downdiamondstem(34,4,wided,widedmin,diawd,diang); -draw z34--z4; draw_flat_foot(4); -%% swirl -x11=rt x1; y11 = top y1; -pickup stylus; -draw z3d--z3c..{-ppdir}z11; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,11,12,13,14,15,100); -endchar; % end "a" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{b} -% The letter `b'. -% \begin{macrocode} -cmchar "PGOTH letter b"; -beginchar("b", 2sb#+hstretch*((3 + widedmin + narrowdmin)*stem_width#), - asc_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pcshiftx := sb; -pickup quill; -n1:=w-2pcshiftx; % actual letter width -n2:=h/ascratio; % top of bowl -%%ductus:=true; -lft x1 = pcshiftx + widedmin*st; y1=h; -x2 = x1; y2=0; -z3=1/2[z1,z2]; -draw_upforkstem(1,3); -draw_downdiamondstem(3,2,1.0,widedmin,diawd,diang); -lft x6 = x2c; bot y6 = y2c; -x4 = x6; y4=n2; -draw_updiamondstem(4,6,narrowd,narrowdmin,diawd,diang); -x7 = x1; z7 = whatever[z4d,z4c]; -pickup stylus; -draw z4d--z7; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,100); -endchar; % end "b" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{c} -% The letter `c'. -% \begin{macrocode} -cmchar "PGOTH letter c"; -beginchar("c", 2sb#+hstretch*((3+wided)*stem_width#), - x_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; -st := stem_width; -pcshiftx := sb; -pickup quill; -%% left -lft x1 = pcshiftx+wided*st; y1 = 3/4h; -x2 = x1; y2 = 0; -draw_downdiamondstem(1,2,wided,widedmin,diawd,diang); -%% top -lft x3 = rt x1; bot y3 = top y1; -rt x4 = w - pcshiftx; -z3 - z4 = -whatever*ppdir; -draw z3--z4; -z11-z2c = z2c - z2d; -pickup stylus; -draw z2d--z11; -ductus:=false; -penlabels(1,2,3,4,5,6,14,16,17,18,100); -endchar; % end "c" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{d} -% The letter `d'. -% \begin{macrocode} -cmchar "PGOTH letter d"; -beginchar("d", 2sb#+hstretch*((3+widedmin+narrowdmin)*stem_width#), - asc_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pcshiftx := sb; -pickup quill; -n1 = h/ascratio; % x-height -%% left -n2 := st*(cosd diang); -lft x1 = pcshiftx + widedmin*st; top y1 = 12/16n1; -x2=x1; y2=0; -draw_downdiamondstem(1,2, 1.0, widedmin, diawd,diang); -%% right -rt x3 = w-pcshiftx-narrowdmin*st; y3=h; -x4 = x3; bot y4 = y2c; -draw_updiamondstem(3,4, 2.0, narrowdmin, diawd,diang); -x31 = lft x1; y31 = bot y1; -x32 = rt x1; y32 = top y1; -z33 = whatever[z31,z32] = whatever[z3e,z3c]; -pickup stylus; -draw z31--z33; -ductus:=false; -penlabels(0,1,2,3,4,5,6,7,8,100); -endchar; % end "d" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{e} -% The letter `e'. -% \begin{macrocode} -cmchar "PGOTH letter e"; -beginchar("e", 2sb#+hstretch*((3+wided)*stem_width#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -numeric st; -st := stem_width; -path pth[]; -pickup quill; -%% left -lft x1 = pcshiftx+wided*st; y1 = 3/4h; -x2 = x1; y2 = 0; -draw_downdiamondstem(1,2,wided,widedmin,diawd,diang); -%% top -lft x3 = rt x1; bot y3 = top y1; -rt x4 = w - pcshiftx; -z3 - z4 = -whatever*ppdir; -draw z3--z4; -x5 = x1; -z4-z5 = whatever*pdir; -pickup stylus; -draw z4--z5; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,17,27,34,70,100); -endchar; % end "e" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{f} -% The letter `f'. -% \begin{macrocode} -cmchar "PGOTH letter f"; -beginchar("f", 2sb#+hstretch*((3+widedmin)*stem_width#), - (asc_height#), 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -pcshiftx := sb; -pickup quill; -n1 := h/ascratio; % x-height -%% stem -lft x1=lft x2=pcshiftx+widedmin*st; y2=0; top y1 = h - (top y2 - bot y2); -%draw_downdiamondstem(1,2,wided,widedmin,diawd,diang); -draw z1--z2; draw_flat_foot(2); -%% top bar -lft x3 = rt x1; rt x5 = w-pcshiftx; bot y3 = top y1; y5=y3; -draw z3--z5; -%% middle bar -lft x7 = pcshiftx; rt x9 = x5; -y7 = y9 = 10/16h; -draw z7--z9; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,14,15,16,100); -endchar; % end "f" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{g} -% The letter `g'. -% \begin{macrocode} -cmchar "PGOTH letter g"; -beginchar("g", 2sb#+hstretch*((4)*stem_width#), - x_height#, desc_depth#); -adjust_fit(0,0); -path pth[]; -pair vec[]; -numeric n[]; -numeric st; st := stem_width; -pcshiftx := sb; -pickup quill; -%% left -lft x1 = pcshiftx; -x2 = x1; bot y2 = 0; top y1 = h - (top y2 - bot y2); -draw z1--z2; -x3 = x4 = x1 + 2st; y4 = y2; -lft x13 = rt x1; bot y13 = top y1; -(z3-z13) = whatever*(dir -diang); -draw z13--z3--z4; -z34 = 1/2[z13,z3]; rt x37 = w-pcshiftx; top y37 = h; -draw z34{right}..{pdir}z37; -pickup stylus; -bot y5 = -d; -(z4-z5) = whatever*pdir; -draw z4--z5; -pickup quill; -%% bottom loop -z21 = z2; -lft x25 = x5; bot y25=-d; -x29 = 1/2[x3,x37]; -(z29-z21) = whatever*(dir -diang); -x23 = x29; y23 = 1/2[y29,y25]; -draw z21{dir - diang}..z23{down}..{left}z25; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,11,12,13,31,32,33,34,35,36,100); -endchar; % end "g" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{h} -% The letter `h'. -% \begin{macrocode} -cmchar "PGOTH letter h"; -beginchar("h", 2sb#+hstretch*((3 + narrowd + narrowdmin)*stem_width#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -numeric n[]; -n1 = h/ascratio; -%% stem -lft x1=lft x2=pcshiftx + narrowdmin*stem_width; -y1=h; bot y2=0; -z12 = 1/2[z1,z2]; -draw_upforkstem(1,12); -%draw_downdiamondstem(12,2,narrowd,narrowdmin,diawd,diang); -draw z12--z2; -draw_flat_foot(2); -%% bowl -x3 = x1 + 2stem_width; x4 = x3; -y3 = n1; bot y4=0; -z34 = 1/2[z3,z4]; -draw_updiamondstem(3,34,narrowd,narrowdmin,diawd,diang); -%draw_downdiamondstem(34,4,narrowd,narrowdmin,diawd,diang); -draw z34--z4; draw_flat_foot(4); -x7 = x1; z7 = whatever[z3d,z3c]; -pickup stylus; -draw z3d--z7; -penlabels(1,2,3,4,5,6,100); -endchar; % end "h" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{i} -% The letter `i'. -% \begin{macrocode} -cmchar "PGOTH letter i"; -beginchar("i", 2sb#+hstretch*(2stem_width#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -x1 = x2 = 1/2w; y1 = h; bot y2 = 0; -z12 = 1/2[z1,z2]; -draw_updiamondstem(1,12,1/2,1/2,diawd,diang); -%draw_downdiamondstem(12,2,1/2,1/2,diawd,diang); -draw z12--z2; draw_flat_foot(2); -x3= x1-thin; bot y3 = h + 1/2stem_width; -z4 = (x3+3thin,y3); -pickup halfquill; -draw z3--z4; -penlabels(1,2,100); -endchar; % end "i" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{j} -% The letter `j'. This letter was not in the script, it being a later invention. -% \begin{macrocode} -cmchar "PGOTH letter j"; -beginchar("j", sb#+hstretch*(5/2stem_width#), - x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% stem -rt x1 = w-pcshiftx - 1/2stem_width; y1 = h; -x2=x1; y2=-1/2d; -%% bottom hook -lft x3 = pcshiftx; bot y3 = -d; -draw_updiamondstem(1,2,narrowd,narrowdmin,diawd,diang); -draw z2{down}..z3{-pdir}; % hook -ductus:=false; -penlabels(1,2,3,100); -endchar; % end "j" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{k} -% The letter `k'. -% \begin{macrocode} -cmchar "PGOTH letter k"; -beginchar("k", 2sb#+hstretch*((3 + narrowd + narrowdmin)*stem_width#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -path pth[]; -numeric n[]; -numeric st; st := stem_width; -pickup quill; -%% stem -n1 = h/ascratio; % x-height -lft x1=lft x2=pcshiftx + narrowdmin*st; -y1=h; bot y2=0; -z12 = 1/2[z1,z2]; -draw_upforkstem(1,12); -%draw_downdiamondstem(12,2, narrowd, narrowdmin, diawd,diang); -draw z12--z2; draw_flat_foot(2); -%% right leg -x3 = x1 + 2st; y3 = 8/16n1; -x4 = x3; bot y4 = 0; -z34 = 1/2[z3,z4]; -%draw_downdiamondstem(34,4, narrowd, narrowdmin, diawd,diang); -draw z3--z4; draw_flat_foot(4); -draw z3--z34; -lft x5 = rt x1; -(z3-z5) = whatever*(dir -diang); -draw z5--z3; - -%% top arm -x6 = 1/2[x3, rt x3]; -(z6-z5) = whatever*(pdir); -rt x8 = lft x5; top y8 = bot y5+thick; -(z7-z8) = whatever*(z6-z5); -(z7-z6)=whatver*(z5-z3); -draw z6--z7; -pickup stylus; -draw z5--z6--z7--z8; - -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,13,14,100); -endchar; % end "k" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{l} -% The letter `l'. -% \begin{macrocode} -cmchar "PGOTH letter l"; -%beginchar("l", 2sb#+hstretch*((2 + widedmin)*stem_width#), -% asc_height#, 0); -beginchar("l", 2sb#+hstretch*((1 + widedmin)*stem_width#), - asc_height#, 0); -adjust_fit(0,0); -numeric st; st := stem_width; -pcshiftx := sb; -pickup quill; -%lft x1=pcshiftx + widedmin*st; y1=h; -x1 = 1/2w; y1=h; -x2=x1; bot y2 =0; -z3 = 1/2[z1,z2]; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_upforkstem(1,3); -%draw_downdiamondstem(3,2,1.0,widedmin,diawd,diang); -draw z3--z2; draw_flat_foot(2); -ductus:=false; -penlabels(1,2,3,4,100); -endchar; % end "l" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{m} -% The letter `m'. -% \begin{macrocode} -cmchar "PGOTH letter m"; -beginchar("m", 2sb#+hstretch*((5+wided+narrowd)*stem_width#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pickup quill; -%% left stem -lft x1=pcshiftx+wided*stem_width; y1 = y3 = y5 = h; -x2=x1; bot y2 = 0; y2 = y4 = y6; -z12=1/2[z1,z2]; -draw_updiamondstem(1,12,wided,widedmin,diawd,diang); -%draw_downdiamondstem(12,2,narrowd,narrowdmin,diawd,diang); -draw z12--z2; draw_flat_foot(2); -%% right stem -rt x5 = rt x6 = w-pcshiftx-narrowd*stem_width; -z56 = 1/2[z5,z6]; -draw_updiamondstem(5,56,wided,widedmin,diawd,diang); -%draw_downdiamondstem(56,6,narrowd,narrowdmin,diawd,diang); -draw z56--z6; draw_flat_foot(6); -%% middle stem -z3=1/2[z1,z5]; z4 = 1/2[z2,z6]; z34=1/2[z3,z4]; -draw_updiamondstem(3,34,wided,widedmin,diawd,diang); -%draw_downdiamondstem(34,4,narrowd,narrowdmin,diawd,diang); -draw z34--z4; draw_flat_foot(4); -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,13,14,33,34,100); -endchar; % end "m" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{n} -% The letter `n'. -% \begin{macrocode} -cmchar "PGOTH letter n"; -beginchar("n", 2sb#+hstretch*((3+wided+narrowd)*stem_width#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% left stem -lft x1 = pcshiftx + wided*stem_width; y1 = h; -x2 = x1; bot y2 = 0; -z12 = 1/2[z1,z2]; -draw_updiamondstem(1,12,wided,widedmin,diawd,diang); -%draw_downdiamondstem(12,2,narrowd,narrowdmin,diawd,diang); -draw z12--z2; draw_flat_foot(2); -%% right stem -rt x3 = w-pcshiftx - narrowd*stem_width; y3=y1; -x4=x3;y4=y2; -z34=1/2[z3,z4]; -draw_updiamondstem(3,34,wided,widedmin,diawd,diang); -%draw_downdiamondstem(34,4,narrowd,narrowdmin,diawd,diang); -draw z34--z4; draw_flat_foot(4); -penlabels(1,2,3,4,5,6,13,14,100); -endchar; % end "n" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{o} -% The letter `o'. -% \begin{macrocode} -cmchar "PGOTH letter o"; -beginchar("o", 2sb#+hstretch*((3 + narrowdmin + narrowdmin)*stem_width#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -numeric st; st := stem_width; -pickup quill; -%% bottom left -lft x12 = pcshiftx + narrowdmin*st; y12 = 1/2h; -x2 = x12; y2 = 0; -draw_downdiamondstem(12,2, 1.0, narrowdmin, diawd,diang); -%% right -rt x3 = w - pcshiftx - narrowdmin*st; x4=x3; -y3 = h; bot y4 = y2c; -draw_updiamondstem(3,4, 1.0, narrowdmin, diawd,diang); -%% top left -x1 = x12; top y1 = y3c; -draw z1--z12; -ductus:=false; -penlabels(1,2,3,4,5,100); -endchar; % end "o" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{p} -% The letter `p'. -% \begin{macrocode} -cmchar "PGOTH letter p"; -beginchar("p", 2sb#+hstretch*((3 + wided + widedmin)*stem_width#), - x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -numeric st; st := stem_width; -pickup quill; -%% stem -lft x1=lft x2=pcshiftx+wided*st; -y1=h; y2=-d; -z12 = 1/2[z1,z2]; -draw_updiamondstem(1,12,wided,widedmin,diawd,diang); -%draw_downforkstem(12,2); -draw z12--z2; -%% bowl -x3 = x4 = x1 + 2st; -y3 = y1; bot y4 = 0; -draw_updiamondstem(3,4,wided,widedmin,diawd,diang); -lft x5 = pcshiftx; y5 = y4; -draw z5--z4; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,100); -endchar; % end "p" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{q} -% The letter `q'. -% \begin{macrocode} -cmchar "PGOTH letter q"; -beginchar("q", 2sb#+hstretch*((3 + widedmin)*stem_width#), - x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -numeric st; st := stem_width; -pickup quill; -%% left/bottom of bowl -y99 = 0; -lft x1 = pcshiftx +widedmin*st; top y1 = h - (top y99 - bot y99); -x2 = x1; y2 = 0; -draw_downdiamondstem(1,2, 1.0, widedmin,diawd,diang); -%% rest -x3 = x1 + 2st; x4 = x3; y3 = y1; y4 = -d; -lft x5 = rt x1; bot y5 = top y1; -%draw_downforkstem(3,4); -draw z3--z4; -draw z5--z3; -ductus:=false; -penlabels(0,1,2,3,4,5,6,7,8,100); -endchar; % end "q" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{r} -% The letter `r'. -% \begin{macrocode} -cmchar "PGOTH letter r"; -beginchar("r", 2sb#+hstretch*((3+wided)*stem_width#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -numeric st; st := stem_width; -pickup quill; -%% stem -lft x1=lft x2=pcshiftx + wided*st; -y1=h; bot y2=0; -z12 = 1/2[z1,z2]; -draw_updiamondstem(1,12,wided,widedmin,diawd,diang); -%draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); -draw z12--z2; draw_flat_foot(2); -%% bar -lft x3 = rt x1; rt x4 = w-pcshiftx; top y3 = top y4 = h; -draw z3--z4; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,100); -endchar; % end "r" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{s} -% The letter `s'. This is a short S. -% \begin{macrocode} -cmchar "PGOTH letter s"; -beginchar("s", 2sb#+hstretch*((4)*stem_width#), - x_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -pcshiftx := sb; -pickup stylus; -%% the diagonal -lft x2 = pcshiftx; bot y2 = 0; -rt x1 = w-pcshiftx; top y1 = h; -draw z1--z2; -pickup quill; -z211 = 13/32[z2,z1]; %% 10/32 too small, 16/32 too large -z213 = 24/32[z2,z1]; %% 26/32 too large -z212 = 1/2[z211,z213]; -%% bottom bowl -lft x21 = x2; bot y21 = 0; -rt x22 = w - pcshiftx; bot y22 = 0; -x23 = x22; z24 = z212; -(z24-z23) = whatever*(dir (180-diang)); -draw z21{pdir}..z22--z23--z24; -%% top bowl -z14 = z211; z11 = z213; -lft x12 = lft x13 = pcshiftx; -(z13-z14) = whatever*(dir (180-diang)); -(z12-z11) = whatever*(dir (180-diang)); -draw z11--z12--z13--z14; -ductus:=false; -penlabels(1,2,3,4,5,6,7,11,12,13,14,15,16,17,20,21,22,23,24,25,26,27,28,100); -endchar; % end "s" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{t} -% The letter `t'. -% \begin{macrocode} -cmchar "PGOTH letter t"; -beginchar("t", 2sb#+hstretch*((2+1.0)*stem_width#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -numeric st; st := stem_width; -pickup quill; -%% bar -lft x3 = pcshiftx; top y1 = h; -top y3 = bot y1; -rt x4 = w-pcshiftx; y4=y3; -draw z3--z4; -%% stem -lft x1 = rt x3; -x2 = x1; -bot y2 = 0; -%draw_downdiamondstem(1,2,wided,widedmin,diawd,diang); -draw z1--z2; draw_flat_foot(2); -ductus:=false; -penlabels(1,2,3,4,5,6,11,12,100); -endchar; % end "t" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{u} -% The letter `u'. -% \begin{macrocode} -cmchar "PGOTH letter u"; -beginchar("u", 2sb#+hstretch*((3+narrowd+wided)*stem_width#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% left stem -lft x1 = pcshiftx + narrowd*stem_width; y1 = h; -x2 = x1; y2 = 0; -z12 = 1/2[z1,z2]; -draw_updiamondstem(1,12,narrowd,narrowdmin,diawd,diang); -draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); -rt x3 = w - pcshiftx - wided*stem_width; y3=y1; -x4=x3; -%y4=y2; -bot y4 = 0; -z34=1/2[z3,z4]; -draw_updiamondstem(3,34,narrowd,narrowdmin,diawd,diang); -%draw_downdiamondstem(34,4,wided,widedmin,diawd,diang); -draw z34--z4; draw_flat_foot(4); -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,11,13,14,16,33,100); -endchar; % end "u" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{v} -% The letter `v'. -% \begin{macrocode} -cmchar "PGOTH letter v"; -beginchar("v", 2sb#+hstretch*((4 + narrowdmin)*stem_width#), - asc_height#, 0); -adjust_fit(0,0); -numeric n[]; numeric st; -pcshiftx := sb; -st := stem_width; -n1 := h/ascratio; % x-height -pickup quill; -%% bottom left stem -%% right and bottom left stems -rt x23 = w - pcshiftx - narrowdmin*st; y23 = n1; x24=x23; -x1 = x23 - 2st; y1 = 1/2n1; -x2 = x1; y2 = 0; -draw_downdiamondstem(1,2, 1.0, widedmin, diawd, diang); -bot y24 = y2c; -draw_updiamondstem(23, 24, narrowd, narrowdmin, diawd, diang); -%% curly bit -%x11=x1; top y11 = h; -%lft x12 = pcshiftx; y12 = 1/2[y11,y1]; -%draw z11{down}..z12{down}..{down}z1; -x11 = x1; y11 = n1; -draw_updiamondstem(11,1,narrowd,narrowdmin,diawd,diang); -ductus:=false; -penlabels(1,2,3,4,5,11,13,14,23,26,100); -endchar; % end "v" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{w} -% The letter `w'. This is a modern version as the font did not have a W. -% \begin{macrocode} -cmchar "PGOTH letter w"; -beginchar("w", 2sb#+hstretch*((5+wided+narrowd)*stem_width#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -%% left stem -lft x1 = pcshiftx + narrowd*stem_width; y1 = y3 = y5 = h; -x2 = x1; y2 = y4 = 0; bot y6 = 0; -z12=1/2[z1,z2]; -draw_updiamondstem(1,12, narrowd, narrowdmin, diawd, diang); -draw_downdiamondstem(12,2, wided, widedmin, diawd, diang); -%% right stem -rt x5 = w -pcshiftx-wided*stem_width; x6 = x5; -z56 = 1/2[z5,z6]; -draw_updiamondstem(5,56, narrowd, narrowdmin, diawd, diang); -%draw_downdiamondstem(56,6, wided, widedmin, diawd, diang); -draw z56--z6; -%% middle stem -z3 = 1/2[z1,z5]; -x4 = 1/2[x2,x6]; -z34 = 1/2[z3,z4]; -draw_updiamondstem(3,34, narrowd, narrowdmin, diawd, diang); -draw_downdiamondstem(34,4, wided, widedmin, diawd, diang); -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,11,13,14,33,34,53,16,100); -endchar; % end "w" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{x} -% The letter `x'. -% \begin{macrocode} -cmchar "PGOTH letter x"; -beginchar("x", 2sb#+hstretch*((4)*stem_width#), - x_height#, 0); -adjust_fit(0,0); -path pth[]; -numeric n[]; -numeric st; st := stem_width; -pcshiftx := sb; -pickup quill; -%% upright -x1 = 1/2w; y1 = h; -x2 = x1; y2 = 0; -z12 = 1/2[z1,z2]; -draw_updiamondstem(1,12, 1.5, widedmin,diawd,2/3diang); -draw_downdiamondstem(12,2, 1.5, widedmin,diawd,2/3diang); -%% top right bar -lft x3 = rt x1; top y3 = h; -rt x4 = w - pcshiftx; y4=y3; -draw z3--z4; -%% middle bar -n1 := h-y3; -lft x5 = pcshiftx; rt x6 = w - pcshiftx; -y5 = 1/2h - n1; y6 = 1/2h; -z56 = 1/2[z5,z6]; -draw z5{pdir}..z56..{pdir}z6; -%% bottom left -pickup stylus; -lft x11 = pcshiftx; bot y11 = 0; -draw z2e--z11; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,10,25,251,252,40,50,150,60,160,100); -endchar; % end "x" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{y} -% The letter `y'. Modern, but with a dot on top. -% \begin{macrocode} -cmchar "PGOTH letter y"; -beginchar("y", 2sb#+hstretch*((3 + narrowd+ narrowdmin)*stem_width#), - x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -path pth[]; -numeric n[]; -numeric st; st = stem_width; -pickup quill; -%% right side -rt x3 = w - pcshiftx - narrowdmin*st; y3 = h; -x33 = x3; y33 = 0; -%%draw_updiamondstem(3,4,narrowd,narrowdmin, diawd,diang); -%% left side -x1 = x3 - 2st; y1 = y3; -x2 = x1; y2 = 0; -n1 := top y2 - y2; -draw_updiamondstem(1,2,narrowd,narrowdmin, diawd,diang); -%% tail -x11 = rt x2; y11 = top y2; -x12 = lft x2; y12 = bot y2; -pickup stylus; -lft x14 = x1 - 2st; y14 = -d + n1; -x15 = x14+n1; bot y15 = -d; -z4 = whatever[z11,z12] = whatever[z3,z33]; -x10=x4; bot y10 = y4; -draw z10--z11--z12..{down}z14..{-ppdir}z15; -pickup quill; -draw_updiamondstem(3,4,narrowd,narrowdmin, diawd,diang); -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,10,11,12,14,15,33,100); -endchar; % end "y" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{z} -% The letter `z'. -% \begin{macrocode} -cmchar "PGOTH letter z"; -beginchar("z", 2sb#+hstretch*(3stem_width#), - x_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pcshiftx := sb; -pickup quill; -%% top bar ends -top y12 = h; -n1 := h - y12; -lft x1 = pcshiftx; rt x2 = w-pcshiftx; -%%y1 = y12-n1; y2=y12+n1; -y1 = y12-n1/2; y2=y12; -x12 = 1/2[x1,x2]; -pth1 := z1{pdir}..z12{right}..z2{pdir}; -%% bottom bar ends -bot y34 = 0; -x3=x1; x4=x2; -%%y3=y34-n1; y4=y34+n1; -y3=y34-n1/2; y4=y34; -x34 = 1/2[x3,x4]; -pth2 := z3{pdir}..z34{right}..z4{pdir}; -%% centre bar -z5 = 1/2[z1,z3]; z6 = 1/2[z2,z4]; z56 = 1/2[z5,z6]; -pth3 := z5{pdir}..z56{right}..z6{pdir}; -draw pth1; draw pth2; draw pth3; % bars -draw z2--z3; -ductus:=false; -penlabels(1,2,3,4,5,6,10o,10i,20o,20i,100); -endchar; % end "z" - -% \end{macrocode} -% \end{routine} -% -% -% The end of this file -% \begin{macrocode} -% -% \end{macrocode} -% -% -% \subsection{The code for capital letters} -% -% \thisfont{} `capitals' were drawn with the same pen as for the minuscules. -% The letters are pretty fancy. -% -% \begin{macrocode} -%<*maj> -% PGOTHU.MF Program file for Gothic Prescius capitals -% - -% \end{macrocode} -% -% -% \begin{routine}{A} -% The letter `A'. -% \begin{macrocode} -cmchar "PGOTH letter A"; -beginchar("A", 2cap_sb#+hstretch*((7)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pair pr[]; -pickup quill; -%% stem -rt x1 = w - pcshiftx - wided*st; y1 = h; -x2 = x1; y2 = 0; -z12 = 1/2[z1,z2]; -draw_upcurlstem(1,12); -draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); -%% leg -x21 = x1; top y21 = h; -lft x22 = pcshiftx + widedmin*st; bot y22 = 0; -draw z21--z22; -draw (x22-widedmin*st, y22)--(x22+wided*st, y22); -%% bar -z13 = z12; -y16 = y13; z16 = whatever[z21,z22]; -x14 = 1/2[x13,x16]; (z13-z14) = whatever*pdir; -pickup threequarterquill; -draw z13--z14; -draw z14{ppdir}..{left}z16; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,11,12,13,14,15,100); -endchar; % end "A" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{B} -% The letter `B'. -% \begin{macrocode} -cmchar "PGOTH letter B"; -beginchar("B", 2cap_sb#+hstretch*((7)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pcshiftx := cap_sb; -pickup quill; -%% stem -lft x1 = pcshiftx; bot y1 = 0; -n1 := top y1; -lft x99 = 2/5w; bot y99 = 12/16h; -rt x12 = lft x99; top y12 = bot y99; -x14 = x1; y14 = y12; -x13 = 1/2[x14,x12]; y13 = 1/2[y12,(h-n1/2)]; -pth1 := z1{pdir}..z12..{left}z13..{-pdir}z14; -%% stem decoration -z101=z99; -z181 = (x99,-h); -z102 = (x101,y1); -z112 = 1/2[z101,z102]; -lft x8 = x112; y8 = y112; -%% lower bowl -x113 = w-pcshiftx; -(z113-z112) = whatever*(pdir); -rt x5 = w-pcshiftx; y5 = 6/16y113; -x3 = 10/16[x1,x5]; y3 = y1; -z7 = 2/16[z8,z113]; -pth2 := z1{pdir}..{right}z3..{up}z5..{-pdir}z7--z8; - -%% upper bowl -x10 = 1/2[x7,x5]; y10 = 1/2[y12,y99]; -x19 = 1/2[x99,x10]; top y19 = h; -pth3 := z8--z7{pdir}..{up}z10..{left}z19..{-pdir}z99; -%% angled decoration - -z105 = 1/4[z102,z112]; -x185 = 2w; -(z185-z105) = whatever*(pdir); -z106 = (z105--z185) intersectionpoint pth2; - -z107 = 1/4[z112,z101]; -x187 = 2w; -(z187-z107) = whatever*(pdir); -z108 = (z107--z187) intersectionpoint pth3; - -if ductus: - pickup stylus; -fi -draw pth1; -draw pth2; -draw pth3; -pickup stylus; -draw z101--z102; -draw z105--z106; draw z107--z108; - -ductus:=false; -penlabels(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,99,100); -endchar; % end "B" - - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{C} -% The letter `C'. -% \begin{macrocode} -cmchar "PGOTH letter C"; -beginchar("C", 2cap_sb#+hstretch*((5)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pcshiftx := cap_sb; -pickup quill; -%% bowl -n1:=w-2pcshiftx; % actual letter width -n2:=6/5w-2pcshiftx; % width of full bowl -x1=pcshiftx + 1/2n1; top y1 = h; -lft x2 = pcshiftx; y2 = 1/2h; -x3 = x1; bot y3 = 0; -rt x4 = w-pcshiftx; y4 = 1/4h; -x24 = x4; y24 = 3/4h; -pth1 := z24..z1{left}..z2{down}..z3{right}..z4{pdir}; -%% decoration -z101 = (x1,y1); z102 = (x1,y3); -z103 = (x1+perpdec, y1); z104 = (x103,y102+thin); -z105 = 1/2[z101,z102]; z107 = (x105,y105+angdec); -x185 = -w; (z105-z185) = whatever*(pdir); -z106 = (z105--z185) intersectionpoint pth1; -x187 = -w; (z107-z187) = whatever*(pdir); -z108 = (z107--z187) intersectionpoint pth1; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; %% bowl -pickup stylus; -draw z101--z102; draw z103--z104; -draw z105--z106; draw z107--z108; -ductus:=false; -penlabels(1,2,3,4,5,6,14,16,17,18,100,101,102,103,104,105,106,107,108,185); -endchar; % end "C" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{D} -% The letter `D'. -% \begin{macrocode} -cmchar "PGOTH letter D"; -beginchar("D", 2cap_sb#+hstretch*((7)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pcshiftx := cap_sb; -pickup quill; -%% bowl -lft x1 = pcshiftx; bot y1 = 0; -rt x5 = w-pcshiftx; y5 = 1/2h; -x3 = 10/16[x1,x5]; y3 = y1; -x7 = x3; top y7 = h; -lft x9 = 2/5w; bot y9 = 12/16h; -pth1 := z1{pdir}..{right}z3..{up}z5..{left}z7..{-pdir}z9; -%% stem -rt x12 = lft x9; top y12 = bot y9; -x14 = x1; y14 = y12; -x13 = 1/2[x14,x12]; y13 = 1/2[y12,y7]; -pth2 := z1{pdir}..z12..{left}z13..{-pdir}z14; -%% vertical decoration -z101=z9; -z181 = (x9,-h); -z102 = ((x101,h/2)--z181) intersectionpoint pth1; -z103a=(x101+perpdec,h); z103b=(x103a,h/2); z103c=(x103a,-h); -z103 = (z103a--z103b) intersectionpoint pth1; -z104 = (z103b--z103c) intersectionpoint pth1; -%% angled decoration -z106 = (lft x5, y5); -x105 = x103; (z106-z105) = whatever*(pdir); -z107 = (x105, y105+angdec); -x108a = 2w; (z108a-z107) = whatever*(pdir); -z108 = (z108a--z107) intersectionpoint pth1; -if ductus: - pickup stylus; -fi -draw pth1; -draw pth2; -pickup stylus; -draw z101--z102; draw z103--z104; -draw z105--z106; draw z107--z108; -ductus:=false; -penlabels(0,1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,100); -endchar; % end "D" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{E} -% The letter `E'. -% \begin{macrocode} -cmchar "PGOTH letter E"; -beginchar("E", 2cap_sb#+hstretch*((6)*stem_width#), %% (5) too small - caprat*x_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pcshiftx := cap_sb; -pickup quill; -%% bowl -n1:=w-2pcshiftx; % actual letter width -n2:=6/5w-2pcshiftx; % width of full bowl -x1=pcshiftx + 1/2n1; top y1 = h; -lft x2 = pcshiftx; y2 = 1/2h; -x3 = x1; bot y3 = 0; -rt x4 = w-pcshiftx; y4 = 1/4h; -x24 = x4; y24 = 3/4h; -pth1 := z24..z1{left}..z2{down}..z3{right}..z4{pdir}; -%% decoration -z101 = (x1,y1); z102 = (x1,y3); -z103 = (x1+perpdec, y1); z104 = (x103,y102+thin); -z105 = 1/2[z101,z102]; z107 = (x105,y105+angdec); -x185 = -w; (z105-z185) = whatever*(pdir); -z106 = (z105--z185) intersectionpoint pth1; -x187 = -w; (z107-z187) = whatever*(pdir); -z108 = (z107--z187) intersectionpoint pth1; -%% bar -lft x31 = x103; top y31 = y105; -rt x32 = w-pcshiftx; y32=y31; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; %% bowl -draw z31--z32; %% bar -pickup stylus; -draw z101--z102; draw z103--z104; -draw z105--z106; draw z107--z108; -ductus:=false; -penlabels(1,2,3,4,5,6,14,16,17,18,100,105,185,106); -endchar; % end "E" - - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{F} -% The letter `F'. -% \begin{macrocode} -cmchar "PGOTH letter F"; -beginchar("F", 2cap_sb#+hstretch*((5)*stem_width#), - 5/4caprat*x_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pcshiftx := cap_sb; -pickup quill; -%% stem (1--2) and top bar (21--22) -lft x1=lft x2=pcshiftx+widedmin*st; y2 = 0; -top y21 = top y22 = h - (top y2 - bot y2); x22 = w-pcshiftx-st; -lft x21 = rt x1; top y1 = bot y21; -z12 = 1/3[z1,z2]; -draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); -draw z1--z12; -draw z21--z22; -%% vertical decoration -z102 = 2/3[z2b,z2c]; -x101 = x102; y101 = y21; -%% bar -lft x14 = x101; y14 = y12; -rt x16 = w-pcshiftx; y16 = y14; -draw z14--z16; -z16tr = (rt x16, top y16); -pickup stylus; -draw z101--z102; -%% Other decoration -%% bottom bar -rt x201 = x16tr; top y201 = y16tr; -y202 = y201 - 2st; (z201-z202) = whatever*pdir; -draw z201--z202; -%% top bar -pickup quill; -z22tb = (rt x22, top y22); -x22bb - x22 = x22 - x22tb; y22bb - y22 = y22 - y22tb; -x22c = x22 + st; bot y22c = top y22 + 1/2st; -x22f = x22; y22f = 1/3[y22c, y22]; -pickup stylus; -x22br = x22bb; bot y22br = y22bb; -pth3 := z22br--z22tb..{up}z22c..{-ppdir}z22f; -draw pth3; - -penlabels(1,2,3,4,5,6,7,14,15,16,21,22,100); -endchar; % end "F" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{G} -% The letter `G'. -% \begin{macrocode} -cmchar "PGOTH letter G"; -beginchar("G", 2cap_sb#+hstretch*((7)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pickup quill; -%% bar -top y3=h; n3 := h - top y3; -lft x1 = pcshiftx; rt x2=w-pcshiftx; -y1 = y3-n3; y2=y3; -x3=1/2[x1,x2]; -pth1 := z1{pdir}..z3..z2{pdir}; -%% bowl -n1 := w; % width of bowl -n2 := h; % height of bowl -lft x4 = pcshiftx; y4 = 1/2h; -x5=x3; bot y5 = 0; -rt x6 = w-pcshiftx; y6 = 6/16h; -%% decoration -x101 = lft x3; y101=y3; -x181 = x101; y181=-h/4; z191 = 1/2[z101,z181]; -z102=(x101,y5); -z103 = (x101+3thin, y101); z104 = (x103,y102); -lft x7 = x104; y7 = 10/16[y104,y103]; -%%pth2 := z3..z4{down}..z5{right}..z6{up}..{-pdir}z7; -%%pth2 := z2{-pdir}..z3..z4{down}..z5{right}..z6{up}..{-pdir}z7; -pth2 := z2--z3..z4{down}..z5{right}..z6{up}..{-pdir}z7; -z105 = (x104,y104+4thin); z107=(x105,y105+3thin); -x185 = 2w; (z185-z105) = whatever*(pdir); -z106 = (z105--z185) intersectionpoint pth2; -z108 = (x106,y106+3thin); -%% fork -z2tr = (rt x2, top y2); -x2a = x2tr; y2a = y2tr + thin; -x2b = x2a; y2b - y2 = y2 - y2a; -x2d = x2 - thick; y2d = y2; -pickup stylus; -% finish off the fork -x2c = x2d = x2e; -top y2e = y2tr; y2c - y2d = y2d - y2e; -%%filldraw z2d--z2c{right}..z2b--cycle; -%%filldraw z2d--z2a..{left}z2e--cycle; -filldraw z2e--z2c{right}..z2b--cycle; -filldraw z2c--z2a..{left}z2e--cycle; -pth9 := (rt x2a,y2a)--(rt x2b,y2b)--(rt x2d,y2d)--cycle; -unfill pth9; -unfill pth9; -unfill pth9; -draw z101--z102; draw z103--z104; -draw z105--z106; draw z107--z108; -pickup quill; -%%ductus:=true; -if ductus: - pickup stylus; -fi -%%draw pth1; %% bar -draw pth2; %% bowl -ductus:=false; -penlabels(1,2,2a,2b,2c,2d,2e,3,4,5,6,11,12,100,101,102,103,104,181,191); -endchar; % end "G" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{H} -% The letter `H'. -% \begin{macrocode} -cmchar "PGOTH letter H"; -beginchar("H", 2cap_sb#+hstretch*((8)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric st; st := stem_width; -numeric n[]; -path pth[]; -pickup quill; -%% left stem -lft x1=pcshiftx+3st; y1=h; -x2=x1; y2=0; -z12 = 1/2[z1,z2]; -draw_upcurlstem(1,12); -draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); -% start of bowl -n1 := 12/16h; %% take this as the top of the bowl -x13=x1; y13=3/4n1; -rt x3 = w-pcshiftx; y3 = 8/16n1; -x14 = 8/16[x13,x3]; top y14 = n1; -x4 = 1/2[x14,x3]; bot y4=0; -pth1 := z13{pdir}..{right}z14..{down}z3..{-pdir}z4; -%% bottom curl -z21 = z4; -x24 = x3; top y24 = 0; -x23 = 1/2[x21,x24]; top y23 = bot y24; -pth2 := z21{-pdir}..z23..{ppdir}z24; -%% vertical decoration -z102 = 2/3[z2b,z2c]; -z182 = (x102,h); -z101 = (z102--z182) intersectionpoint pth1; -z105 = 1/2[z102,z101]; -x185 = 2w; -(z185-z105) = whatever*(pdir); -z106 = (z105--z185) intersectionpoint pth1; -z107 = (x105, y105-angdec); z187 = (x185, y185-angdec); -z108 = (z107--z187) intersectionpoint pth1; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; -pickup stylus; -draw pth2; -draw z101--z102; -draw z105--z106; draw z107--z108; -ductus:=false; -penlabels(1,2,3,4,5,6,13,14,100); -endchar; % end "H" - - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{I} -% The letter `I'. -% \begin{macrocode} -cmchar "PGOTH letter I"; -beginchar("I", 2cap_sb#+hstretch*((4+wided)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric st; st := stem_width; -pickup quill; -lft x1=lft x2=pcshiftx+3st; -y1=h; y2=0; -z12 = 1/2[z1,z2]; -draw_upcurlstem(1,12); -draw_downdiamondstem(12,2,wided, widedmin,diawd,diang); -%% vertical decoration -z102 = 2/3[z2b,z2c]; -pickup stylus; -x101=x102; top y101 = h; -draw z101--z102; -ductus:=false; -penlabels(1,2,101,102,100); -endchar; % end "I" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{J} -% The letter `J'. This letter was not in the script, it being a later invention. -% \begin{macrocode} -cmchar "PGOTH letter J"; -beginchar("J", cap_sb#+hstretch*((4+wided)*stem_width#), - caprat*x_height#, 1/2caprat*x_height#); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric n[]; -numeric st; st := stem_width; -pickup quill; -%% stem -lft x1 = pcshiftx+3st; y1 = h; -x2=x1; y2=-d + (top y1 - bot y1); -%% bottom hook -lft x3 = pcshiftx; bot y3 = -d; -draw_upcurlstem(1,2); -draw z2{ppdir}..{-pdir}z3; -%% vertical decoration -x201 = rt x1; -x101 = x201 + 2/3wided*st; -pickup stylus; -top y101 = h; y201=y101; -z102=(x101,0); -draw z201--z101--z102; -ductus:=false; -penlabels(1,2,3,101,102,100); -endchar; % end "J" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{K} -% The letter `K'. -% \begin{macrocode} -cmchar "PGOTH letter K"; -beginchar("K", 2cap_sb#+hstretch*((8+wided)*stem_width#), - 5/4caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -path pth[]; -numeric n[]; -numeric st; st := stem_width; -pickup quill; -%% stem -n1 = 4/5h; % x-height -lft x1=lft x2=pcshiftx+3st; -y1=h; y2=0; -z12 = 1/2[z1,z2]; -draw_upcurlstem(1,12); -draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); -%% top arm -%%z3=(x1,1/2n1); -x3 = x1; top y3 = 14/16n1; -z7c = 1/2[z2,z3]; -top y3a = n1; (z3a-z3) = whatever*pdir; -rt x7a = w - pcshiftx - 2st; (z7a-z7c) = whatever*pdir; -x4 = 1/2[x3a,x7a]; y4 = y3a; -x5 = x7a; y5 = 1/2[y3a, y7a]; -z7 = (rt x7c, y7c); -pth1 := z3{pdir}..z4..z5..{-pdir}z7; -%% lower arm -z21=z7; -z24=(x5+st,y2a); -x23 = x24; y23 = 1/2[y21,y24]; -rt x25 = w-pcshiftx; bot y25 = 0; -pth2 := z21{pdir}..{down}z23..z24..{pdir}z25; -pickup quill; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; % upper bowl -draw pth2; % lower half -%% decorations -z1tr = (rt x1, top y1); -pickup stylus; -z102 = 2/3[z2b,z2c]; x101 = x102; top y101 = h; -x103 = x1tr; y103 = y101; -draw z103--z101--z102; -x105 = x101; y105 = 1/2[y7,y3]; -y185 = 2w; (z185-z105) = whatever*pdir; -z106 = (z105--z185) intersectionpoint pth1; -x107 = x105; y107 = y105-angdec; -x187 = x185; y187-y185 = y107-y105; -%%z108 = (z107--z187) intersectionpoint pth1; -draw z105--z106; -%%draw z107--z108; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,13,14,21,22,23,24,25,100); -endchar; % end "K" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{L} -% The letter `L'. -% \begin{macrocode} -cmchar "PGOTH letter L"; -beginchar("L", 2cap_sb#+hstretch*((7)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric st; st := stem_width; -pickup quill; -lft x1=pcshiftx+3st; y1=h; -x2=x1; bot y2 =0; -draw_upcurlstem(1,2); -rt x4 = w-pcshiftx; bot y4 = 0; -draw z2{right}..{pdir}z4; -%% vertical decoration -x201 = rt x1; -x101 = x201+2/3wided*st; -pickup stylus; -top y101 = h; y201 = y101; -x102 = x101; bot y102=0; -draw z201--z101--z102; -ductus:=false; -penlabels(1,2,3,4,101,102,201,100); -endchar; % end "L" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{M} -% The letter `M'. -% \begin{macrocode} -cmchar "PGOTH letter M"; -beginchar("M", 2cap_sb#+hstretch*((11)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric st; st := stem_width; -path pth[]; -pickup quill; -%%% left part -lft x301 = pcshiftx+3st; y301 = h; -x302 = x301; y302 = 0; -z312 = 1/2[z301,z302]; -draw_upcurlstem(301,312); -draw_downdiamondstem(312,302,wided,widedmin,diawd,diang); - -%% left N stem (and N part) -%%%lft x1=pcshiftx+3st; y1=h; -x1 = x301 + 3st; y1 = h; -x2=x1; y2=0; -z12 = 1/2[z1,z2]; -%%draw_upcurlstem(1,12); -%%draw_updiamondstem(1,12,wided,widedmin,diawd,diang); -draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); -% start of bowl -x13=x1; y13=3/4h; -rt x3 = w-pcshiftx; y3 = 8/16h; -x14 = 8/16[x13,x3]; top y14 = h; -x4 = 1/2[x14,x3]; bot y4=0; -pth1 := z13{pdir}..{right}z14..{down}z3..{-pdir}z4; -%% bottom curl -z21 = z4; -x24 = x3; top y24 = 0; -x23 = 1/2[x21,x24]; top y23 = bot y24; -pth2 := z21{-pdir}..z23..{ppdir}z24; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; -pickup stylus; -draw pth2; -pickup quill; -%% finish off the left part -x3011 = 1/2[x301,x1]; top y3011 = h; -z3123 = (x301,3/4h); z123 = (x1,y3123); -draw z3123--z3011--z123--z12; -%% vertical decorations - %% left part -z402 = 2/3[z302b,z302c]; -x401 = x402; z401 = whatever[z3123,z3011]; - %% right part -z102 = 2/3[z2b,z2c]; -z182 = (x102,h); -z101 = (z102--z182) intersectionpoint pth1; -%% angled decorations - %% left part -z406 = z13; -x405 = x402; (z406-z405) = whatever*pdir; -z407 = (x405, y405-angdec); z408 = (x406, y406-angdec); - %% right part -z105 = (x102,y405); -x185 = 2w; -(z185-z105) = whatever*(pdir); -z106 = (z105--z185) intersectionpoint pth1; -z107 = (x105, y105-angdec); z187 = (x185, y185-angdec); -z108 = (z107--z187) intersectionpoint pth1; -pickup stylus; -draw z401--z402; -draw z405--z406; draw z407--z408; -draw z101--z102; -draw z105--z106; draw z107--z108; -ductus:=false; -penlabels(1,2,3,4,5,6,13,14,101,102,105,106,107,108,301,302,100); -endchar; % end "M" - - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{N} -% The letter `N'. -% \begin{macrocode} -cmchar "PGOTH letter N"; -beginchar("N", 2cap_sb#+hstretch*((8)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric st; st := stem_width; -path pth[]; -pickup quill; -%% left stem -lft x1=pcshiftx+3st; y1=h; -x2=x1; y2=0; -z12 = 1/2[z1,z2]; -draw_upcurlstem(1,12); -draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); -% start of bowl -x13=x1; y13=3/4h; -rt x3 = w-pcshiftx; y3 = 8/16h; -x14 = 8/16[x13,x3]; top y14 = h; -x4 = 1/2[x14,x3]; bot y4=0; -pth1 := z13{pdir}..{right}z14..{down}z3..{-pdir}z4; -%% bottom curl -z21 = z4; -x24 = x3; top y24 = 0; -x23 = 1/2[x21,x24]; top y23 = bot y24; -pth2 := z21{-pdir}..z23..{ppdir}z24; -%% vertical decoration -z102 = 2/3[z2b,z2c]; -z182 = (x102,h); -z101 = (z102--z182) intersectionpoint pth1; -z105 = 1/2[z102,z101]; -x185 = 2w; -(z185-z105) = whatever*(pdir); -z106 = (z105--z185) intersectionpoint pth1; -z107 = (x105, y105-angdec); z187 = (x185, y185-angdec); -z108 = (z107--z187) intersectionpoint pth1; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; -pickup stylus; -draw pth2; -draw z101--z102; -draw z105--z106; draw z107--z108; -ductus:=false; -penlabels(1,2,3,4,5,6,13,14,100); -endchar; % end "N" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{O} -% The letter `O'. -% \begin{macrocode} -cmchar "PGOTH letter O"; -beginchar("O", 2cap_sb#+hstretch*((7)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -path pth[]; -pickup quill; -lft x1=pcshiftx; rt x3=w-pcshiftx; y1=y3=h/2; -x2=x4=w/2; top y2=h; bot y4=0; -pth1 := z1..z2..z3..z4..cycle; -%% vertical decoration -z101=z2; z102=z4; -z103 = (x101-perpdec, y101); z104 = (x103,y102); -%% angled decoration -z108 = (lft x3,y3); -x107 = x101; (z108-z107) = whatever*(pdir); -z105 = (x107, y107+angdec); -x106a = 2w; (z106a-z105) = whatever*(pdir); -z106 = (z105--z106a) intersectionpoint pth1; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; -pickup stylus; -draw z101--z102; draw z103--z104; -draw z105--z106; draw z107--z108; -ductus:=false; -penlabels(1,2,3,4,5,100); -endchar; % end "O" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{P} -% The letter `P'. -% \begin{macrocode} -cmchar "PGOTH letter P"; -beginchar("P", 2cap_sb#+hstretch*((8)*stem_width#), - caprat*x_height#, 1/2caprat*x_height#); -adjust_fit(0,0); -pcshiftx := cap_sb; -path pth[]; -numeric n[]; -numeric st; st := stem_width; -pickup quill; -%% stem -lft x1=lft x2=pcshiftx+3st; -y1=h; y2=-d; -z12 = 1/2[z1,z2]; -draw_upcurlstem(1,12); -draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); -%% vertical decoration -z1tr = (rt x1, top y1); -z102 = 2/3[z2b,z2c]; -pickup stylus; -x101 = x102; top y101 = h; -x103 = x1tr; y103 = y101; -draw z103--z101--z102; -pickup quill; -%% bowl -lft x22 = x101; top y22 = h; -x21 = x1; (z22-z21) = whatever*pdir; -rt x24 = w - pcshiftx; y24 = 1/2h; -x25 = 1/2[x22,x24]; bot y25 = 0; -pth1 := z21--z22{down}..{down}z24..{-pdir}z25; -z31 = z25; -lft x33 = pcshiftx; bot y33 = 0; -pth2 := z33{pdir}..{right}z31; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; draw pth2; -%% angled decoration -x105 = x101; y105 = 1/3h; -x185 = 2w; -(z185-z105) = whatever*pdir; -z106 = (z105--z185) intersectionpoint pth1; -z107 = (x105,y105-angdec); -x187 = x185; y107 - y105 = y187 - y185; -z108 = (z107--z187) intersectionpoint pth1; -pickup stylus; -draw z105--z106; draw z107--z108; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,100); -endchar; % end "P" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{Q} -% The letter `Q'. -% \begin{macrocode} -cmchar "PGOTH letter Q"; -beginchar("Q", 2cap_sb#+hstretch*((8)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -path pth[]; -pickup quill; -lft x1=pcshiftx; rt x3=w-pcshiftx-stem_width; y1=y3=h/2; -x2=x4=w/2; top y2=h; bot y4=0; -pth1 := z1..z2..z3..z4..cycle; -%% tail -pth2 := z1..z4..z3; -z11 = directionpoint pdir of pth2; -rt x13 = w-pcshiftx; bot y13 = 0; -pth3 := z11{pdir}..{pdir}z13; -%% vertical decoration -z101=z2; z102=z4; -z103 = (x101-perpdec, y101); z104 = (x103,y102); -%% angled decoration -z108 = (lft x3,y3); -x107 = x101; (z108-z107) = whatever*(pdir); -z105 = (x107, y107+angdec); -x106a = 2w; (z106a-z105) = whatever*(pdir); -z106 = (z105--z106a) intersectionpoint pth1; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; draw pth3; -pickup stylus; -draw z101--z102; draw z103--z104; -draw z105--z106; draw z107--z108; -ductus:=false; -penlabels(1,2,3,4,5,100); -endchar; % end "Q" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{R} -% The letter `R'. -% \begin{macrocode} -cmchar "PGOTH letter R"; -beginchar("R", 2cap_sb#+hstretch*((8+wided)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -path pth[]; -numeric n[]; -numeric st; st := stem_width; -pickup quill; -%% stem -n1 = h; % x-height -lft x1=lft x2=pcshiftx+3st; -y1=h; y2=0; -z12 = 1/2[z1,z2]; -draw_upcurlstem(1,12); -draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); -%% top arm -%%z3=(x1,1/2n1); -x3 = x1; top y3 = 14/16n1; -z7c = 1/2[z2,z3]; -top y3a = n1; (z3a-z3) = whatever*pdir; -rt x7a = w - pcshiftx - 2st; (z7a-z7c) = whatever*pdir; -x4 = 1/2[x3a,x7a]; y4 = y3a; -x5 = x7a; y5 = 1/2[y3a, y7a]; -z7 = (rt x7c, y7c); -pth1 := z3{pdir}..z4..z5..{-pdir}z7; -%% lower arm -z21=z7; -z24=(x5,y2a); -x23 = x24; y23 = 1/2[y21,y24]; -rt x25 = w-pcshiftx; bot y25 = 0; -pth2 := z21{pdir}..{down}z23..z24..{pdir}z25; -pickup quill; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; % upper bowl -draw pth2; % lower half -%% decorations -z1tr = (rt x1, top y1); -pickup stylus; -z102 = 2/3[z2b,z2c]; x101 = x102; top y101 = h; -x103 = x1tr; y103 = y101; -draw z103--z101--z102; -x105 = x101; y105 = 1/2[y7,y3]; -y185 = 2w; (z185-z105) = whatever*pdir; -z106 = (z105--z185) intersectionpoint pth1; -x107 = x105; y107 = y105-angdec; -x187 = x185; y187-y185 = y107-y105; -%%z108 = (z107--z187) intersectionpoint pth1; -draw z105--z106; -%%draw z107--z108; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,13,14,21,22,23,24,25,100); -endchar; % end "R" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{S} -% The letter `S'. -% \begin{macrocode} -cmchar "PGOTH letter S"; -beginchar("S", 2cap_sb#+hstretch*((8)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pcshiftx := cap_sb; -pickup quill; -pickup threequarterquill; -%% top -n1 := 1; -lft x1 = pcshiftx + n1*st; top y1 = h; -rt x3 = w - pcshiftx; y3 = y1; -x2 = 1/2[x1,x3]; top y2 = y1; -pth1 := z1..z2..{pdir}z3; -draw pth1; -%% bottom -lft x4 = pcshiftx; bot y4 = 0; -rt x6 = w -pcshiftx - n1*st; y6 = y4; -x5 = 1/2[x4,x6]; bot y5 = y4; -pth2 := z4{pdir}..z5..z6; -draw pth2; -%% top path -z100 = (1/2w, 1/2h); -z11 = z1; z15 = z6; -x13 = x100; y13 = y100 + st; -pth3 := z11..{right}z13{right}..z15; -draw pth3; -%% bottom path -z21 = z11; z25 = z6; -x23 = x100; y100 - y23 = y13 - y100; -pth4 := z21..{right}z23{right}..z25; -draw pth4; -%% decorations - %% top -z101 = (x2+angdec,y2); y181 = 0; (z101-z181) = whatever*pdir; -z102 = (z101--z181) intersectionpoint pth3; -z103 = (x101-angdec, y101); x183-x181 = x103-x101; y183 = 0; -z104 = (z103--z183) intersectionpoint pth3; - %% bottom -z201 = (x5,y5); y281 = h; (z201-z281) = whatever*pdir; -z202 = (z201--z281) intersectionpoint pth4; -z203 = (x201-angdec, y201); x283-x281 = x203-x201; y283 = h; -z204 = (z203--z283) intersectionpoint pth4; -pickup stylus; -draw z101--z102; draw z103--z104; -draw z201--z202; draw z203--z204; - - -%%ductus:=true; -if ductus: - pickup stylus; -fi -ductus:=false; -penlabels(1,2,3,4,5,6,7,11,17,20,26,27,28,100,101,102,103,104,201,202,203,204); -endchar; % end "S" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{T} -% The letter `T'. -% \begin{macrocode} -cmchar "PGOTH letter T"; -beginchar("T", 2cap_sb#+hstretch*((7)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pickup quill; -%% bar -top y3=h; n3 := h - top y3; -lft x1 = pcshiftx; rt x2=w-pcshiftx; -y1 = y3-n3; y2=y3; -x3=1/2[x1,x2]; -pth1 := z1{pdir}..z3..z2{pdir}; -%% bowl -n1 := w; % width of bowl -n2 := h; % height of bowl -lft x4 = pcshiftx; y4 = 1/2h; -x5=x3; bot y5 = 0; -rt x6 = w-pcshiftx; y6 = 6/16h; -%%pth2 := z3..z4{down}..z5{right}..z6{pdir}; -%% decoration -x101 = lft x3; y101=y3; -x181 = x101; y181=-h/4; z191 = 1/2[z101,z181]; -%%z102 = z191--z181 intersectionpoint pth2; %%% ???? NO INTERSECTION!!!!!! -z102=(x101,y5); -z103 = (x101+3thin, y101); z104 = (x103,y102); -lft x7 = x104; y7 = 10/16[y104,y103]; -pth2 := z3..z4{down}..z5{right}..z6{up}..{-pdir}z7; -z105 = (x104,y104+4thin); z107=(x105,y105+3thin); -x185 = 2w; (z185-z105) = whatever*(pdir); -z106 = (z105--z185) intersectionpoint pth2; -z108 = (x106,y106+3thin); -pickup stylus; -draw z101--z102; draw z103--z104; -draw z105--z106; draw z107--z108; -pickup quill; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; %% bar -draw pth2; %% bowl -ductus:=false; -penlabels(1,2,3,4,5,6,11,12,100,101,102,103,104,181,191); -endchar; % end "T" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{U} -% The letter `U'. -% \begin{macrocode} -cmchar "PGOTH letter U"; -beginchar("U", 2cap_sb#+hstretch*((8)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pickup quill; -%% stem tops -lft x1 = pcshiftx + 3st; y1 = h; -rt x3 = w - pcshiftx - widedmin*st; y3 = h; -% bottom of bowl -x7 = x1 - 3/2st; bot y7 = 0; -rt x9 = lft x3; bot y9 = 0; -pth1 := z7{pdir}..{pdir}z9; -draw pth1; -%% stem bottoms -z2 = (z1 -- (x1,-h)) intersectionpoint pth1; -x4 = x3; bot y4 = top y9; -draw_upcurlstem(1,2); -draw_updiamondstem(3,4,wided,widedmin,diawd,diang); -%% decorations -z1tr = (rt x1, top y1); -pickup stylus; -z99 = 2/3[z3b,z3c]; -x101 - x1 = x3 - x99; top y101 = h; -x102 = x101; y102 = y2; -x103 = x1tr; y103 = y101; -draw z103--z101--z102; -x105 = x101; y105 = 1/3h; -x106 = x3; (z106-z105) = whatever*pdir; -z107 = (x105, y105-angdec); x108 = x106; y108-y106 = y107-y105; -draw z105--z106; draw z107--z108; -%%ductus:=true; -if ductus: - pickup stylus; -fi -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,11,13,14,16,33,100); -endchar; % end "U" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{V} -% The letter `V'. -% \begin{macrocode} -cmchar "PGOTH letter V"; -beginchar("V", 2cap_sb#+hstretch*((8)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pcshiftx := cap_sb; -pickup quill; -%% left stem top -lft x1 = pcshiftx + 3st; y1 = h; -% bottom of bowl -x7 = x1 - 3/2st; bot y7 = 0; -x9 = w/2; bot y9 = 0; -pth1 := z7{pdir}..{right}z9; -draw pth1; -%% left stem bottom -x81 = x1; y81 = - h; -z2 = (z1--z81) intersectionpoint pth1; -draw_upcurlstem(1,2); -%% right stem -z6 = z9; -rt x5 = w - pcshiftx; top y5 = 3/4h; -x3 = 1/2[rt x1, lft x5]; -x4 = 1/2[x3,x5]; top y4 = h; -y3 = 1/2[y4,y5]; -pth2 := z6{pdir}..{up}z5..{left}z4..{-pdir}z3; -draw pth2; -pth3 := pth1 & pth2; -%% decoration -z1tr = (rt x1, top y1); -x101 = x1tr + 2/3wided*st; -pickup stylus; -top y101 = h; -z103 = (x1tr,y101); -z181 = (x101,-w); -z102 = (z101--z181) intersectionpoint pth3; -draw z103--z101--z102; -x105 = x101; y105 = 1/3[y102,y101]; -x185 = 2w; (z185-z105) = whatever*pdir; -z106 = (z105--z185) intersectionpoint pth2; -z107 = (x105, y105-angdec); -x187 = x185; y187-y185 = y107-y105; -z108 = (z107--z187) intersectionpoint pth2; -draw z105--z106; draw z107--z108; - -%%ductus:=true; -if ductus: - pickup stylus; -fi - -ductus:=false; -penlabels(1,2,3,4,5,11,13,14,23,26,100); -endchar; % end "V" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{W} -% The letter `W'. This is a modern version as the font did not have a W. -% \begin{macrocode} -cmchar "PGOTH letter W"; -beginchar("W", 2cap_sb#+hstretch*((12)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pcshiftx := cap_sb; -pickup quill; -%% top of stems -lft x1 = pcshiftx + 3st; y1 = h; -rt x999 = w - pcshiftx; -x3 = 1/2[x1,x999]; y3 = h; -%% bowl bottoms -x21 = x1 - 3/2st; bot y21 = 0; -rt x23 = lft x3; bot y23 = 0; -pth1 := z21{pdir}..z23; -draw pth1; -lft x31 = rt x23; bot y31 = top y23; -x33 = 1/2[x31,x999]; bot y33 = 0; -pth2 := z31{pdir}..z33; -draw pth2; -%% bottom of stems -z2 = (z1--(x1,0)) intersectionpoint pth1; -x4 = x3; bot y4 = top y23; -draw_upcurlstem(1,2); -draw_updiamondstem(3,4,wided,widedmin,diawd,diang); -%% right V stem -z16 = z33; -x15 = x999; top y15 = 3/4h; -x13 = 1/2[rt x3, lft x15]; -x14 = 1/2[x13,x15]; top y14 = h; -y13 = 1/2[y14,y15]; -pth3 = z16{pdir}..{up}z15..{left}z14..{-pdir}z13; -draw pth3; -%% decorations -z1tr = (rt x1, top y1); -z3tr = (rt x3, top y3); -pickup stylus; -%% for U -z99 = 2/3[z3b,z3c]; -x101 - x1 = x3 - x99; top y101 = h; -x102 = x101; y102 = y2; -x103 = x1tr; y103 = y101; -draw z103--z101--z102; -x105 = x101; y105 = 1/3h; -x106 = x3; (z106-z105) = whatever*pdir; -z107 = (x105, y105-angdec); x108 = x106; y108-y106 = y107-y105; -draw z105--z106; draw z107--z108; -%% for V - -x301 = x3tr+2/3wided*st; top y301 = y3e; -z381 = (x301,-w); -z302 = (z301--z381) intersectionpoint pth2; -draw z3e--z301--z302; -x305 = x301; y305 = 1/3[y302,y301]; -x385 = 2w; (z385-z305) = whatever*pdir; -z306 = (z305--z385) intersectionpoint pth3; -z307 = (x305, y305-angdec); -x387 = x385; y387-y385 = y307-y305; -z308 = (z307--z387) intersectionpoint pth3; -draw z305--z306; draw z307--z308; - - - -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,11,13,14,33,34,53,16,100); -endchar; % end "W" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{X} -% The letter `X'. -% \begin{macrocode} -cmchar "PGOTH letter X"; -beginchar("X", 2cap_sb#+hstretch*((8)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -path pth[]; -numeric n[]; -numeric st; st := stem_width; -pcshiftx := cap_sb; -pickup quill; -%% center stem -lft x1 = lft x2 = pcshiftx + 3st; -y1 = 3/4h; y2 = 1/4h; -draw z1--z2; -%% top right -z21 = z1; top y22 = h; (z22-z21) = whatever*pdir; -rt x24 = w-pcshiftx; y24 = y21; -pth1 := z21--z22{-ppdir}..{pdir}z24; -draw pth1; -%% bottom right -z31 = z2; -rt x33 = w-pcshiftx; bot y33 = 0; -pth2 := z31{-ppdir}..{pdir}z33; -draw pth2; -%% bottom left -z41 = z2; -bot y43 = -1/4h; (z41-z43) = whatever*pdir; -x45 = x43 + st; y45=y43; -pth3 := z41--z43{-pdir}..{pdir}z45; -pickup stylus; -draw pth3; -pickup quill; -%% top left -x11 = x1; y11 = h; -draw_upcurlstem(11,1); -%% decoration -x81 = rt x1; -pickup stylus; -x101 = x102 = x81 + 2/3wided*st; -z101 = whatever[z1,z22]; -z102 = (z101--(x101,0)) intersectionpoint pth2; -draw z101--z102; -pickup quill; -%% middle arms -z120 = 1/2[z1,z2]; -z51 = z120; -lft x53 = pcshiftx; top y53 = y51; -x52 = 1/2[x51,x53]; y52 = y51; -pth5 := z51--z52{left}..{-pdir}z53; -draw pth5; -lft x61 = x101; y61 = y120; -rt x63 = w-pcshiftx; bot y63 = y61; -x62 = 1/2[x61,x63]; y62 = y61; -pth6 := z61--z62{right}..{pdir}z63; -draw pth6; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,10,25,251,252,40,50,51,52,53,61,62,63,101,102,150,60,160,100); -endchar; % end "X" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{Y} -% The letter `Y'. -% \begin{macrocode} -cmchar "PGOTH letter Y"; -beginchar("Y", 2cap_sb#+hstretch*((8)*stem_width#), - caprat*x_height#, 1/2caprat*x_height#); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pcshiftx := cap_sb; -pickup quill; -%% stem tops -lft x1 = pcshiftx + 3st; y1 = h; -rt x3 = w - pcshiftx - widedmin*st; y3 = h; -% bottom of bowl -x7 = x1 - 3/2st; bot y7 = 0; -x9 = 1/2[x1,x3]; bot y9 = 0; -pth1 := z7{pdir}..{right}z9; -draw pth1; -%% left stem bottom -x81 = x1; y81 = - h; -z2 = (z1--z81) intersectionpoint pth1; -draw_upcurlstem(1,2); -%% right stem -x4 = x3; y4 = 0; -x5 = x4; y5 = -1/4d; -lft x6 = x9; bot y6 = -d; -draw_updiamondstem(3,4,wided,widedmin,diawd,diang); -draw z6{pdir}..{up}z5--z4; -z3cd = 1/2[z3c,z3d]; -pth2 = z5--z3a--z3cd; -%% fill bowl bottom -x91 = x3; (z91-z9) = whatever*pdir; -draw z9--z91; - -%% decoration -z1tr = (rt x1, top y1); -x101 = x1tr + 2/3wided*st; -pickup stylus; -top y101 = h; -z103 = (x1tr,y101); -z181 = (x101,-w); -z102 = (z101--z181) intersectionpoint pth1; -draw z103--z101--z102; -x105 = x101; y105 = 1/3[y102,y101]; -x185 = 2w; (z185-z105) = whatever*pdir; -z106 = (z105--z185) intersectionpoint pth2; -z107 = (x105, y105-angdec); -x187 = x185; y187-y185 = y107-y105; -z108 = (z107--z187) intersectionpoint pth2; -draw z105--z106; draw z107--z108; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,10,100,101,102,181); -endchar; % end "Y" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{Z} -% The letter `Z'. -% \begin{macrocode} -cmchar "PGOTH letter Z"; -beginchar("Z", 2cap_sb#+hstretch*((5)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pcshiftx := cap_sb; -pickup quill; -%% top bar ends -top y12 = h; -n1 := h - y12; -lft x1 = pcshiftx; rt x2 = w-pcshiftx-perpdec; -%%y1 = y12-n1; y2=y12+n1; -y1 = y12-n1/2; y2=y12; -x12 = 1/2[x1,x2]; -pth1 := z1{pdir}..z12{right}..z2{pdir}; -x102 = rt x2; y102 = top y2; x202 = x102+perpdec; y202=y102; -%% bottom bar ends -bot y34 = 0; -x3=x1+perpdec; rt x4= w-pcshiftx; -y3=y34-n1/2; y4=y34; -x34 = 1/2[x3,x4]; -pth2 := z3{pdir}..z34{right}..z4{pdir}; -x203 = lft x3; y203 = bot y3; x103 = x203-perpdec; y103=y203; -%% centre bar -z5 = (x1,1/2[y1,y3]); z6 = (x4,1/2[y2,y4]); z56 = 1/2[z5,z6]; -pth3 := z5{pdir}..z56{right}..z6{pdir}; -draw pth1; draw pth2; % bars -draw pth3; -%% decorations -pickup stylus; -draw z102--z103; draw z202--z203; -unfill z102--z103--z203--z202--cycle; -draw z102--z103; draw z202--z203; -ductus:=false; -penlabels(1,2,3,4,5,6,10o,10i,20o,20i,100); -endchar; % end "Z" - -% \end{macrocode} -% \end{routine} -% -% -% -% The end of this file -% \begin{macrocode} -% -% \end{macrocode} -% -% -% -% \subsection{The punctuation file} -% -% The main punctuation marks are defined in this file. -% -% \begin{macrocode} -%<*punct> -% PGOTHPUNCT.MF This file contains punctuation marks - -% \end{macrocode} -% -% -% \begin{routine}{!} -% The `!' character, which had not been invented at this time. -% \begin{macrocode} - -cmchar "Exclamation mark"; -beginchar("!", 2sb#+hstretch*(thick#+trijut#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -x1=w/2; top y1 = h; -z3=(x1, 1/2dot_size); -z2=(x1, y3+3/2dot_size); -draw z1--z2; -draw_pdot(3,dot_size); -penlabels(1,2,3); - -endchar; % end of "!" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{?} -% The `?' character, which had not been invented at this time. -% \begin{macrocode} - -cmchar "Question mark"; -beginchar("?", 2sb#+hstretch*((3+wided+widedmin)*stem_width#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pickup quill; -n1 := w-2pcshiftx; % actual character width -n2 := 1/3h; % height of top bowl -n3 := n2; % height of bottom bowl -z5=(1/2w,1/2dot_size); -x45 = x5; y45=y5+3/2dot_size; -lft x1 = pcshiftx; y1 = 3/4h; -x2 = 1/2w; top y2 = h; -rt x3 = w-pcshiftx; y3 = 11/16h; - -x4 = x45; -(z3-z4) = whatever*pdir; - -%%ductus:= true; -if ductus: - pickup stylus; -fi -%%draw z1..z2{right}..z3{down}..z4{down}; -draw z1--z2--z3--z4--z45; -draw_pdot(5, dot_size); -penlabels(1,2,3,4,45,5); -endchar; % end of "?" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{,} -% The `,' character. -% \begin{macrocode} - -cmchar "Comma"; -beginchar(",",2sb#+hstretch*(comma_width#+dot_size#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb; -x1=w-pcshiftx-(0.5hstretch*dot_size); y1=1/2dot_size; -draw_pcomma(1,dot_size,comma_width); -penlabels(1); -endchar; % end of "," - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{.} -% The `.' character. -% \begin{macrocode} - -cmchar "Period"; -beginchar(".",2sb#+hstretch*(dot_size#),x_height#,0); -pcshiftx:=sb; -z1=(w/2, 1/2dot_size); -draw_pdot(1,dot_size); -penlabels(1); -endchar; % end of "." - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{:} -% The `:' character. -% \begin{macrocode} - -cmchar "Colon"; -beginchar(":",2sb#+hstretch*(dot_size#),x_height#,0); -pcshiftx:=sb; -x1=x2=w/2; y1=3/4h; y2=1/4h; -draw_pdot(1,dot_size); -draw_pdot(2,dot_size); -penlabels(1,2); -endchar; % end ":" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{;} -% The `;' character. -% \begin{macrocode} - -cmchar "Semicolon"; -beginchar(";",2sb#+hstretch*(comma_width#+dot_size#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb; -x1=x2=w-pcshiftx-(0.5hstretch*dot_size); y1=3/4h; y2=1/2dot_size; -draw_pdot(1,dot_size); -draw_pcomma(2,dot_size,comma_width); -penlabels(1,2); -endchar; % end of ";" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{'} -% The `'' character. -% \begin{macrocode} - -cmchar "Apostrophe"; -beginchar("'",2sb#+hstretch*(comma_width#+dot_size#),4/3x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb; -x1=w-pcshiftx-(0.5hstretch*dot_size); y1=h; -draw_pcomma(1,dot_size,comma_width); -penlabels(1); -endchar; % end of "'" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{`} -% The ``' character. -% \begin{macrocode} - -cmchar "Reverse apostrophe"; -beginchar("`",2sb#+hstretch*(comma_width#+dot_size#),4/3x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb; -x1=pcshiftx+(0.5hstretch*dot_size); y1=h; -draw_plq(1,dot_size,comma_width); -penlabels(1); -endchar; % end of "`" - -% \end{macrocode} -% \end{routine} -% -% The end of this file. -% \begin{macrocode} -% -% \end{macrocode} -% -% -% \subsection{The ligatures and dashes file} -% -% The ligatured letters, punctuation marks and dashes are defined in this file. -% \begin{macrocode} -%<*lig> -% PGOTHLIG.MF Gothic Prescius ligatured letters, punctation and dashes - -% \end{macrocode} -% First the ligtables. -% \begin{macrocode} - -ligtable "`": "`"=:oct"134"; -ligtable "'": "'"=:oct"042"; %% , "?" kern 2u#, "!" kern 2u#; - -ligtable "-": "-"=:oct"173"; -ligtable oct"173": "-"=:oct"174"; - -%%%%ligtable "c": "t"=:oct"014"; -ligtable "s": "t"=:oct"015"; - -% \end{macrocode} -% -% -% -% \begin{routine}{st} -% The `st' ligature. -% \begin{macrocode} - -cmchar "PGOTH st ligature"; -beginchar(oct"015", 2sb#+hstretch*((1 + narrowd + 3)*stem_width#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -numeric st; st := stem_width; -n1 := h/ascratio; % x-height -pickup quill; -%% the S (long) -lft x1 = pcshiftx + narrowd*st; -x2 = x1; y2 = 0; y1 = h - (top y2 - bot y2); -z12 = 1/2[z1,z2]; -draw_updiamondstem(1,12,narrowd, 1/4narrowdmin, diawd, diang); -%draw_downdiamondstem(12,2,narrowd, narrowdmin, diawd, diang); -draw z12--z2; draw_flat_foot(2); -%% the T -%% bar -lft x23 = rt x1 + pcshiftx; top y23 = n1; -rt x24 = w-pcshiftx; y24=y23; -draw z23--z24; -%% stem -lft x21 = rt x23; top y21 = h; -x22 = x21; y22 = 0; -%draw_downdiamondstem(21,22,narrowd,narrowdmin,diawd,diang); -draw z21--z22; draw_flat_foot(22); -%% the ligature -x11=x1; top y11=h; -draw z12--z11--z21; -ductus:=false; -penlabels(1,2,3,4,5,11,21,22,23,24,100); -%% end "t" -endchar; %% end st ligature - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{''} -% The `''' ligature. -% \begin{macrocode} - -cmchar "Closing quotes"; -beginchar(oct"042",2sb#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb; -x1=w-pcshiftx-(0.5hstretch*dot_size); y1=y2=h; -x2=x1-(2hstretch*dot_size); -draw_pcomma(1,dot_size,comma_width); % right -draw_pcomma(2,dot_size,comma_width); % left -penlabels(1,2); -endchar; % end of "''" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{``} -% The ```' ligature. -% \begin{macrocode} - -cmchar "Opening quotes"; -beginchar(oct"134",2sb#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb; -x1=pcshiftx+(0.5hstretch*dot_size); y1=y2=h; -x2=x1+(2hstretch*dot_size); -draw_plq(1,dot_size,comma_width); % left -draw_plq(2,dot_size,comma_width); % right -penlabels(1,2); -endchar; % end of "``" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{-} -% The `-' (hyphen) character. -% \begin{macrocode} - -cmchar "Hyphen"; -beginchar("-",sb#+hstretch*((2)*stem_width#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb/2; -pickup threequarterquill; -lft x21=pcshiftx; rt x22=w-pcshiftx; y21=y22=1/2h; -draw z21--z22; -%%draw_roundserif(21,22,srad); draw_flatserif(22,21,srad); -penlabels(1,2); -endchar; % end of "-" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{--} -% The `--' (en-dash) ligature. -% \begin{macrocode} - -cmchar "En dash"; -beginchar(oct"173",sb#+hstretch*((3)*stem_width#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb/2; -pickup threequarterquill; -lft x21=pcshiftx; rt x22=w-pcshiftx; y21=y22=1/2h; -draw z21--z22; -%%draw_roundserif(21,22,srad); draw_flatserif(22,21,srad); -penlabels(1,2); -endchar; % end of "--" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{---} -% The `---' (em dash) ligature. The em dash is twice the width of the en dash. -% \begin{macrocode} - -cmchar "Em dash"; -beginchar(oct"174",sb#+hstretch*((6)*stem_width#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb/2; -pickup threequarterquill; -lft x21=pcshiftx; rt x22=w-pcshiftx; y21=y22=1/2h; -draw z21--z22; -%%draw_roundserif(21,22,srad); draw_flatserif(22,21,srad); -penlabels(1,2); -endchar; % end of "---" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{&} -% The ampersand (which is really an `et' ligature). -% In this case, a `t' with one thin bar. -% \begin{macrocode} - -cmchar "PGOTH ampersand"; -beginchar("&", 2sb#+hstretch*((7/2)*stem_width#), asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -numeric st; st := stem_width; -pickup quill; -%% bar -lft x3 = pcshiftx; top y1 = h; -top y3 = bot y1; -rt x4 = w-pcshiftx; y4=y3; -draw z3--z4; -%% stem -lft x1 = rt x3; -x2 = x1; y2 = 0; -%draw_downdiamondstem(1,2,wided,widedmin,diawd,diang); -draw z1--z2; draw_flat_foot(2); -%% E bars -n1 = 1/2[y3,y2a] + 1/2angdec; -pickup halfquill; -lft x11 = pcshiftx; rt x12 = w-pcshiftx; -%y11=y12=n1; -y11 = y12 = 1/2h; -x13 = x11; x14=x12; y13 = y14 = n1-angdec; -draw z11--z12; -%%draw z13--z14; -ductus:=false; -penlabels(1,2,3,4,5,6,11,12,13,14,100); -endchar; % end "&" - -% \end{macrocode} -% \end{routine} -% -% -% The end of this file. -% \begin{macrocode} -% -% \end{macrocode} -% -% \subsection{The digits file} -% -% These are arabic digits in the style of the book-hand. They are a -% modern invention. -% -% \begin{macrocode} -%<*dig> -% PGOTHDIG.MF Program file for Gothic Prescius digits -% - -% \end{macrocode} -% -% -% -% \begin{routine}{1} -% The digit `1'. -% \begin{macrocode} -cmchar "PGOTH digit 1"; -beginchar("1", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -x1 = x2 = 1/2w; y1 = h; y2 = 0; -z12 = 1/2[z1,z2]; -draw_updiamondstem(1,12,1/2,1/2,diawd,diang); -%draw_downdiamondstem(12,2,1/2,1/2,diawd,diang); -draw z12--z2; draw_flat_foot(2); -penlabels(1,2,100); -endchar; % end "1" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{2} -% The digit `2'. -% \begin{macrocode} -cmchar "PGOTH digit 2"; -beginchar("2", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -numeric st; st := stem_width; -numeric n[]; -n1 := 1/2st; -pickup quill; -% stem -lft x1=pcshiftx+n1; top y1=h-2n1; -rt x3=w-pcshiftx-n1; y3=3/4h; -x2=1/2[x1,x3]; top y2= h; -% foot -x5= lft x1; bot y5=0; -x6= rt x3; y6=y5; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_wave(5,6,thin); % foot -draw z1--z2--z3--z5wl; % curve -ductus:=false; -penlabels(1,2,3,4,5,6,100); -endchar; % end "2" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{3} -% The digit `3'. -% \begin{macrocode} -cmchar "PGOTH digit 3"; -beginchar("3", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -n1 := st; -pcshiftx := u; -pickup quill; -%% top -lft x1 = pcshiftx + n1; rt x3 = w - pcshiftx - n1; -x2 = 1/2[x1,x3]; x4 = 1/2[x1,x2]; -top y2 = h; y3 = 12/16h; -(z2-z1) = whatever*pdir; -(z3-z4) = whatever*pdir; -%% bottom -x5 = 12/16[x4, rt x4]; x6 = x3; x7 = x2; -x18 = x1-n1; x17 = x7; -bot y7 = thin; -y5 = 12/16[y4, top y4]; -(z5-z6) = whatever*(z2-z3); -bot y18 = 0; bot y17 = 0; - -draw z1--z2--z3--z4; % top -draw_wave(18,17,thin); -draw z5--z6--z18wr; % bottom -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,10,17,18,100); -endchar; % end "3" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{4} -% The digit `4'. -% \begin{macrocode} -cmchar "PGOTH digit 4"; -beginchar("4", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -numeric st; st := stem_width; -numeric n[]; -pcshiftx := u; -pickup quill; -% the stem -x1=x2=w-pcshiftx-(wided+widedmin)*st; -y1=h; y2=0; -% the crossbar -lft x3=pcshiftx; y3=7/16h; -rt x4=w-pcshiftx; y4=y3; -%%ductus:=true; -if ductus: - pickup stylus; -fi -%draw_downdiamondstem(1,2,wided,widedmin,diawd,diang); % stem -draw z1--z2; draw_flat_foot(2); -draw z3--z4; % horizontal -draw z1--z3; % diagonal -ductus:=false; -penlabels(1,2,3,4,100); -endchar; % end "4" - -% \end{macrocode} -% \end{routine} -% -% -% -% \begin{routine}{5} -% The digit `5'. -% \begin{macrocode} -cmchar "PGOTH digit 5"; -beginchar("5", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -numeric n[]; -numeric st; st := stem_width; -n1 := st; -pickup quill; -% for the top -rt x1=w-pcshiftx; top y1=h; -lft x2=pcshiftx+n1; y2=y1; -% the S curve -x3=x2; y3=0.5h; -x4=0.5[x1,x3]; y4=0.5[y3,y5]; -rt x5=w-pcshiftx; y5=1/2[thick,y3]; -x6=w/2; bot y6=0; -%%x16 = 12/16[x3,x5]; -x16 = lft x5; -bot y16 = 0; -lft x17=pcshiftx; bot y17=0; -z167 = 1/2[z16,z17]; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_wave(2,1,thin); % top squiggle -draw z2wl--z3; % vertical -%%draw_wave(17,16,thin); % foot -draw z17{pdir}..{pdir}z16; % foot -draw z3{pdir}..z5{down}..z16; % curve -ductus:=false; -penlabels(1,2,3,4,5,6,7,100); -endchar; % end "5" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{6} -% The digit `6'. -% \begin{macrocode} -cmchar "PGOTH digit 6"; -beginchar("6", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -numeric st; st := stem_width; -n1 := 24/16st; -pickup quill; -%% bottom left -x1 = x4 = w/2; top y1 = h - thick; bot y4 = 0; -x2 = x3 = x1 + n1; x5 = x6 = x1 - n1; -n2 = top y1; -y2 = y6 = 3/4[y4,y1]; -y3 = y5 = 1/4[y4,y1]; -%% bowl -draw z1--z2--z3--z4--z5--z6--cycle; -%% head -x11 = x5; top y11 = h; -x12 = x2; y12 = y11; -draw_wave(11,12,thin); -x16 = x11; y16 = y11-thin; -draw z6--z16; -penlabels(1,2,3,4,5,6,12,100); -endchar; % end "6" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{7} -% The digit `7'. -% \begin{macrocode} -cmchar "PGOTH digit 7"; -beginchar("7", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% top bar -lft x1=pcshiftx; -rt x2=w-pcshiftx; -top y1=top y2=h; -% bowed leg -x4=w/2; bot y4=0; -x3=0.5[x2,x4]-3thin; y3=0.5[y2,y4]; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_wave(1,2,thin); % top bar -draw z1wr..z3..z4; -draw_flat_foot(4); -ductus:=false; -penlabels(1,2,3,4,5,6,100); -endchar; % end "7" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{8} -% The digit `8'. -% \begin{macrocode} -cmchar "PGOTH digit 8"; -beginchar("8", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -numeric alpha; alpha:=1; -pickup quill; -lft x1= pcshiftx; rt x3=w-pcshiftx; top y1 = y3 = 3/4h; -rt x2 = lft x4 = w/2; top y2=h; bot y4=0; -x5=x2; y5=h/2+2o; -lft x11=pcshiftx; rt x13=w-pcshiftx; y11 = bot y13 = 1/4h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -%%draw z1..z2..z3..z5..z11..z4..z13..z5..cycle; -draw z1--z2--z3--z11--z4--z13--cycle; -ductus:=false; -penlabels(1,2,3,4,5,11,13,100); -endchar; % end "8" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{9} -% The digit `9'. -% \begin{macrocode} -cmchar "PGOTH digit 9"; -beginchar("9", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -numeric st; st := stem_width; -n1 := 24/16st; -pickup quill; -%% bottom left -x1 = x4 = w/2; top y1 = h; bot y4 = thick; -x2 = x3 = x1 + n1; x5 = x6 = x1 - n1; -y2 = y6 = 3/4[y4,y1]; -y3 = y5 = 1/4[y4,y1]; -%% bowl -draw z1--z2--z3--z4--z5--z6--cycle; -%% foot -x11 = x5; bot y11 = 0; -x12 = x2; y12 = y11; -draw_wave(11,12,thin); -x13 = x12; y13 = y12+thin; -draw z3--z13; -penlabels(1,2,3,4,5,6,12,100); -endchar; % end "9" - - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{0} -% The digit `0'. -% \begin{macrocode} -cmchar "PGOTH digit 0"; -beginchar("0", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -numeric st; st := stem_width; -n1 := 24/16st; -pickup quill; -%% bottom left -x1 = x4 = w/2; top y1 = h; bot y4 = 0; -x2 = x3 = x1 + n1; x5 = x6 = x1 - n1; -y2 = y6 = 3/4h; -y3 = y5 = 1/4h; - -draw z1--z2--z3--z4--z5--z6--cycle; - -penlabels(1,2,3,4,5,6,12,100); -endchar; % end "0" - -% \end{macrocode} -% \end{routine} -% -% -% The end of this file. -% \begin{macrocode} -% -% \end{macrocode} -% -% -% \section{The font definition files} \label{sec:fd} -% -% The font comes in normal and bold weights only. -% -% \begin{macrocode} -%<*fdot1> -\DeclareFontFamily{OT1}{pgoth}{} - \DeclareFontShape{OT1}{pgoth}{m}{n}{ <-8.5> pgoth7 <8.5-15> pgoth10 <15-> pgoth17 }{} - \DeclareFontShape{OT1}{pgoth}{m}{sl}{ <-> sub * pgoth/m/n }{} - \DeclareFontShape{OT1}{pgoth}{m}{it}{ <-> sub * pgoth/m/n }{} - \DeclareFontShape{OT1}{pgoth}{m}{sc}{ <-> sub * pgoth/m/n }{} - \DeclareFontShape{OT1}{pgoth}{m}{u}{ <-> sub * pgoth/m/n }{} - \DeclareFontShape{OT1}{pgoth}{bx}{n}{ <-15> pgothb10 <15-> pgothb17 }{} - \DeclareFontShape{OT1}{pgoth}{bx}{it}{ <-> sub * pgoth/bx/n }{} - \DeclareFontShape{OT1}{pgoth}{bx}{sl}{ <-> sub * pgoth/bx/n }{} - \DeclareFontShape{OT1}{pgoth}{b}{n}{ <-> sub * pgoth/bx/n }{} -% -% \end{macrocode} -% -% -% \begin{macrocode} -%<*fdt1> -\DeclareFontFamily{T1}{pgoth}{} - \DeclareFontShape{T1}{pgoth}{m}{n}{ <-8.5> pgoth7 <8.5-15> pgoth10 <15-> pgoth17 }{} - \DeclareFontShape{T1}{pgoth}{m}{sl}{ <-> sub * pgoth/m/n }{} - \DeclareFontShape{T1}{pgoth}{m}{it}{ <-> sub * pgoth/m/n }{} - \DeclareFontShape{T1}{pgoth}{m}{sc}{ <-> sub * pgoth/m/n }{} - \DeclareFontShape{T1}{pgoth}{m}{u}{ <-> sub * pgoth/m/n }{} - \DeclareFontShape{T1}{pgoth}{bx}{n}{ <-15> pgothb10 <15-> pgothb17 }{} - \DeclareFontShape{T1}{pgoth}{bx}{it}{ <-> sub * pgoth/bx/n }{} - \DeclareFontShape{T1}{pgoth}{bx}{sl}{ <-> sub * pgoth/bx/n }{} - \DeclareFontShape{T1}{pgoth}{b}{n}{ <-> sub * pgoth/bx/n }{} -% -% \end{macrocode} -% -% \section{The package code} \label{sec:code} -% -% \subsection{The \Lpack{pgothic} package} -% -% The \Lpack{pgothic} package is for typesetting short pieces of text -% in the \thisfont{} fonts. -% -% Announce the name and version of the package, which requires -% \LaTeXe{}. -% \begin{macrocode} -%<*usc> -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{pgothic}[2002/12/30 v1.0 package for Gothic Prescius fonts] -% \end{macrocode} -% -% \begin{macro}{\Tienc} -% A macro for testing the value of |\encodingdefault|. -% \begin{macrocode} -\providecommand{\Tienc}{T1} -% \end{macrocode} -% \end{macro} -% -% -% \begin{macro}{\pgothfamily} -% Selects the \thisfont{} font family in the OT1 or T1 encoding. -% \begin{macrocode} -\ifx\Tienc\encodingdefault - \newcommand{\pgothfamily}{\usefont{T1}{pgoth}{m}{n}} -\else - \newcommand{\pgothfamily}{\usefont{OT1}{pgoth}{m}{n}} -\fi -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\textpgoth} -% Text command for the \thisfont{} font family. -% \begin{macrocode} -\DeclareTextFontCommand{\textpgoth}{\pgothfamily} -% \end{macrocode} -% \end{macro} -% -% The end of this package. -% \begin{macrocode} -% -% \end{macrocode} -% -% \subsection{The \Lpack{allpgoth} package} -% -% The \Lpack{allpgoth} package is intended for use when the entire document -% will be typeset in the book-hand. This is a minimal package. Because the -% book-hand should not contain arabic digits a fuller package would redefine -% anything numbered in \LaTeX{} to use roman instead of arabic numbering. -% Also, because of the large |\baselineskip| many other aspects of \LaTeX{} -% to do with vertical positioning should also be redefined. -% -% -% Announce the name and version of the package, which requires -% \LaTeXe{}. It also uses the \Lpack{pgothic} package. -% \begin{macrocode} -%<*uscall> -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{allpgoth}[2002/12/30 v1.0 package for all Gothic Prescius fonts] -\RequirePackage{pgothic} -% \end{macrocode} -% -% \begin{macro}{\Tienc} -% A macro for testing the value of |\encodingdefault|. -% \begin{macrocode} -\providecommand{\Tienc}{T1} -% \end{macrocode} -% \end{macro} -% -% Redefine the default fonts to be \thisfont, which has only one family -% member. -% \begin{macro}{\rmdefault} -% \begin{macro}{\sfdefault} -% \begin{macro}{\ttdefault} -% \begin{macrocode} -\renewcommand{\rmdefault}{pgoth} -\renewcommand{\sfdefault}{pgoth} -\renewcommand{\ttdefault}{pgoth} -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% -% The `leading' in the book-hands is a function of the |x-height|, which is -% normally much -% greater than for the CMR fonts. I have borrowed code from Frank Jensen's -% \Lpack{beton} package~\cite{BETON} to do this. The |x-height| (in points) -% for the CMR -% fonts is given in Table~\ref{tab:cmrx}. Note that the CMR design sizes are -% 5--10, 12, and 17.28 points. The other values given are scaled from these -% figures. -% -% \begin{table} -% \centering -% \caption{The x heights of the CMR and \thisfont{} fonts} \label{tab:cmrx} -% \begin{tabular}{ccc} \hline -% Design & CMR & \thisfont \\ -% Size & X Height & X Height \\ \hline -% 5 & 2.14 & 3.00 \\ ^^A CMR skip = 6pt = 2.8 times -% 6 & 2.58 & 3.61 \\ ^^A CMR skip = 7pt = 2.7 times -% 7 & 3.00 & 4.20 \\ ^^A CMR skip = 8pt = 2.7 times -% 8 & 3.44 & 4.81 \\ ^^A CMR skip = 9.5pt = 2.8 times -% 9 & 3.86 & 5.40 \\ ^^A CMR skip = 11pt = 2.8 times -% 10 & 4.31 & 6.03 \\ ^^A CMR skip = 12pt = 2.8 times -% 11 & 4.74 & 6.64 \\ ^^A CMR skip = 13.6pt = 2.8 times -% 12 & 5.17 & 7.24 \\ ^^A CMR skip = 14.5pt = 2.8 times -% 14 & 6.03 & 8.44 \\ ^^A CMR skip = 18pt = 3.0 times -% 17 & 7.44 & 10.41 \\ ^^A CMR skip = 22pt = 3.0 times -% 20 & 8.75 & 12.25 \\ ^^A CMR skip = 25pt = 2.9 times -% 25 & 10.94 & 15.32 \\ ^^A CMR skip = 30pt = 2.7 times -% \hline -% \end{tabular} -% \end{table} -% -% \begin{macro}{\pgoth@baselineskip@table} -% A table of the normal font sizes and the corresponding baselineskip. -% The distance between baselines for \thisfont{} is over twice -% the |x-height|. ^^A actually 2.5 times to nearest half point -% -% \begin{macrocode} -\newcommand{\pgoth@baselineskip@table}{% - <\@vpt>7.5% - <\@vipt>9.0% - <\@viipt>10.5% - <\@viiipt>12.0% - <\@ixpt>13.5% - <\@xpt>15.0% - <\@xipt>16.5% - <\@xiipt>18.0% - <\@xivpt>21.0% - <\@xviipt>26.0% - <\@xxpt>30.5% - <\@xxvpt>38.5} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\pgoth@new@setfontsize} -% This is a macro that replaces the |\@setfontsize| macro which is called by -% the font size changing commands. -% \begin{macrocode} -\newcommand{\pgoth@new@setfontsize}[3]{% - \edef\@tempa{\def\noexpand\@tempb####1<#2}% - \@tempa>##2<##3\@nil{\def\pgoth@baselineskip@value{##2}}% - \edef\@tempa{\noexpand\@tempb\pgoth@baselineskip@table<#2}% - \@tempa><\@nil - \ifx\pgoth@baselineskip@value\@empty - \def\pgoth@baselineskip@value{#3}% - \fi - \pgoth@old@setfontsize{#1}{#2}\pgoth@baselineskip@value} -% \end{macrocode} -% \end{macro} -% -% We had better give an author a means of using The Computer Modern fonts -% if necessary. -% -% \begin{macro}{\cmrfamily} -% \begin{macro}{\cmssfamily} -% \begin{macro}{\cmttfamily} -% These macros select the Computer Modern Roman, Sans, and Typewriter -% font families in either the T1 or OT1 encodings. -% \begin{macrocode} -\ifx\Tienc\encodingdefault - \providecommand{\cmrfamily}{\usefont{T1}{cmr}{m}{n}} - \providecommand{\cmssfamily}{\usefont{T1}{cmss}{m}{n}} - \providecommand{\cmttfamily}{\usefont{T1}{cmtt}{m}{n}} -\else - \providecommand{\cmrfamily}{\usefont{OT1}{cmr}{m}{n}} - \providecommand{\cmssfamily}{\usefont{OT1}{cmss}{m}{n}} - \providecommand{\cmttfamily}{\usefont{OT1}{cmtt}{m}{n}} -\fi -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\textcmr} -% Text command for the Computer Modern Roman font family. -% \begin{macrocode} -\DeclareTextFontCommand{\textcmr}{\cmrfamily} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\textcmss} -% Text command for the Computer Modern Sans font family. -% \begin{macrocode} -\DeclareTextFontCommand{\textcmss}{\cmssfamily} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\textcmtt} -% Text command for the Computer Modern Typewriter font family. -% \begin{macrocode} -\DeclareTextFontCommand{\textcmtt}{\cmttfamily} -% \end{macrocode} -% \end{macro} -% -% -% At the start of the document, change the |\@setfontsize| macro and call -% the normal font to implement the change. -% \begin{macrocode} -\AtBeginDocument{% - \let\pgoth@old@setfontsize=\@setfontsize - \let\@setfontsize=\pgoth@new@setfontsize} -\AtBeginDocument{\normalsize} -% \end{macrocode} -% -% -% The end of this package. -% \begin{macrocode} -% -% \end{macrocode} -% -% -% -% -% -% \Finale -% \PrintIndex -% -\endinput - -%% \CharacterTable -%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -%% Digits \0\1\2\3\4\5\6\7\8\9 -%% Exclamation \! Double quote \" Hash (number) \# -%% Dollar \$ Percent \% Ampersand \& -%% Acute accent \' Left paren \( Right paren \) -%% Asterisk \* Plus \+ Comma \, -%% Minus \- Point \. Solidus \/ -%% Colon \: Semicolon \; Less than \< -%% Equals \= Greater than \> Question mark \? -%% Commercial at \@ Left bracket \[ Backslash \\ -%% Right bracket \] Circumflex \^ Underscore \_ -%% Grave accent \` Left brace \{ Vertical bar \| -%% Right brace \} Tilde \~} - - diff --git a/Master/texmf-dist/source/latex/bookhands/pgothic/pgothic.ins b/Master/texmf-dist/source/latex/bookhands/pgothic/pgothic.ins deleted file mode 100644 index dc0ee1705c5..00000000000 --- a/Master/texmf-dist/source/latex/bookhands/pgothic/pgothic.ins +++ /dev/null @@ -1,101 +0,0 @@ -%% -%% pgothic.ins -%% Copyright 1999 Peter R. Wilson -%% -%% This program is provided under the terms of the -%% LaTeX Project Public License distributed from CTAN -%% archives in directory macros/latex/base/lppl.txt. -%% -%% Author: Peter Wilson (CUA) -%% now at: peter.r.wilson@boeing.com -%% -%% This file will generate fast loadable files and documentation -%% driver files from the doc files in this package when run through -%% LaTeX or TeX. -%% -%% --------------- start of docstrip commands ------------------ -%% -\def\batchfile{pgothic.ins} -\input docstrip.tex -\preamble - - Copyright 1999 Peter R. Wilson - - This program is provided under the terms of the - LaTeX Project Public License distributed from CTAN - archives in directory macros/latex/base/lppl.txt. - -Author: Peter Wilson (CUA) - now at: peter.r.wilson@boeing.com - -\endpreamble - -\keepsilent - -%%% \Msg{*** Generating the driver file ***} -%%% \generateFile{pgothic.drv}{t}{\from{pgothic.dtx}{driver}} - -\Msg{*** Generating the Metafont files ***} - -\usepostamble\empty -\generateFile{pgoth7.mf}{t}{\from{pgothic.dtx}{base7}} -\generateFile{pgoth10.mf}{t}{\from{pgothic.dtx}{base10}} -\generateFile{pgoth17.mf}{t}{\from{pgothic.dtx}{base17}} -\generateFile{pgothb7.mf}{t}{\from{pgothic.dtx}{base7b}} -\generateFile{pgothb10.mf}{t}{\from{pgothic.dtx}{base10b}} -\generateFile{pgothb17.mf}{t}{\from{pgothic.dtx}{base17b}} -\generateFile{pgothl.mf}{t}{\from{pgothic.dtx}{min}} -\generateFile{pgothu.mf}{t}{\from{pgothic.dtx}{maj}} -\generateFile{pgothtitle.mf}{t}{\from{pgothic.dtx}{mfd}} -\generateFile{pgothpunct.mf}{t}{\from{pgothic.dtx}{punct}} -\generateFile{pgothlig.mf}{t}{\from{pgothic.dtx}{lig}} -\generateFile{pgothdig.mf}{t}{\from{pgothic.dtx}{dig}} - -\Msg{*** Generating the Font Definition files ***} -\usepostamble\defaultpostamble - -\generateFile{ot1pgoth.fd}{t}{\from{pgothic.dtx}{fdot1}} -\generateFile{t1pgoth.fd}{t}{\from{pgothic.dtx}{fdt1}} - -\Msg{*** Generating the LaTeX2e package files ***} - -\generateFile{pgothic.sty}{t}{\from{pgothic.dtx}{usc}} -\generateFile{allpgoth.sty}{t}{\from{pgothic.dtx}{uscall}} - -\Msg{***********************************************************} -\Msg{*} -\Msg{* To finish the installation you have to move the following} -\Msg{* files into directories searched by TeX:} -\Msg{*} -\Msg{* Move these into the font source area:} -\Msg{* \space\space pgoth7.mf} -\Msg{* \space\space pgoth10.mf} -\Msg{* \space\space pgoth17.mf} -\Msg{* \space\space pgothb7.mf} -\Msg{* \space\space pgothb10.mf} -\Msg{* \space\space pgothb17.mf} -\Msg{* \space\space pgothl.mf} -\Msg{* \space\space pgothu.mf} -\Msg{* \space\space pgothtitle.mf} -\Msg{* \space\space pgothpunct.mf} -\Msg{* \space\space pgothlig.mf} -\Msg{* \space\space pgothdig.mf} -\Msg{*} -\Msg{* Move these into the LaTeX macro area:} -\Msg{* \space\space ot1pgoth.fd} -\Msg{* \space\space t1pgoth.fd} -\Msg{* \space\space pgothic.sty} -\Msg{* \space\space allpgoth.sty} -\Msg{*} -\Msg{*} -\Msg{* To produce the documentation run the files ending with} -\Msg{* `.dtx' through LaTeX.} -\Msg{* Process any name.idx file by:} -\Msg{* \space\space\space\space makeindex -s gind.ist name} -\Msg{* Process any name.glo file by:} -\Msg{* \space\space\space\space makeindex -s gglo.ist -o name.gls name.glo} -\Msg{*} -\Msg{* Happy TeXing} -\Msg{***********************************************************} - -\endinput diff --git a/Master/texmf-dist/source/latex/bookhands/rotunda/rotunda.dtx b/Master/texmf-dist/source/latex/bookhands/rotunda/rotunda.dtx deleted file mode 100644 index abd34224644..00000000000 --- a/Master/texmf-dist/source/latex/bookhands/rotunda/rotunda.dtx +++ /dev/null @@ -1,4959 +0,0 @@ -% \iffalse meta-comment -% -% rotunda.dtx -% Copyright 1999 Peter R. Wilson -% -% This program is provided under the terms of the -% LaTeX Project Public License distributed from CTAN -% archives in directory macros/latex/base/lppl.txt. -% -% Author: Peter Wilson (CUA) (now at: peter.r.wilson@boeing.com) -% -% If you do not have the docmfp package (available from CTAN in -% tex-archive/macros/latex/contrib/supported), comment out the -% \usepackage{docmfp} line below and uncomment the line following it. -% -%<*driver> -\documentclass{ltxdoc} -\usepackage{docmfp} -%%%%%% \providecommand{\DescribeVariable}[1]{} \newenvironment{routine}[1]{}{} -\EnableCrossrefs -\CodelineIndex -%% comment out next line to show code -\OnlyDescription -\setcounter{StandardModuleDepth}{1} -\begin{document} - \DocInput{rotunda.dtx} -\end{document} -% -% -% \fi -% -% \CheckSum{134} -% -% \DoNotIndex{\',\.,\@M,\@@input,\@addtoreset,\@arabic,\@badmath} -% \DoNotIndex{\@centercr,\@cite} -% \DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue} -% \DoNotIndex{\@input,\@ixpt,\@m} -% \DoNotIndex{\@minus,\@mkboth,\@ne,\@nil,\@nomath,\@plus,\@set@topoint} -% \DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb} -% \DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt} -% \DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt} -% \DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace} -% \DoNotIndex{\advance,\Alph,\alph} -% \DoNotIndex{\arabic,\ast,\begin,\begingroup,\bfseries,\bgroup,\box} -% \DoNotIndex{\bullet} -% \DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption} -% \DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass} -% \DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\endtrivlist} -% \DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup} -% \DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter} -% \DoNotIndex{\fbox} -% \DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef} -% \DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule} -% \DoNotIndex{\hsize,\hskip,\hspace,\hss,\if@tempswa,\ifcase,\or,\fi,\fi} -% \DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\fi,\fi,\fi,\fi,\fi} -% \DoNotIndex{\input} -% \DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark} -% \DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright} -% \DoNotIndex{\month,\newcommand,\newcounter,\newenvironment} -% \DoNotIndex{\NeedsTeXFormat,\newdimen} -% \DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number} -% \DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\p@} -% \DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip} -% \DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions} -% \DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright} -% \DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font} -% \DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily,\roman} -% \DoNotIndex{\roman,\secdef,\selectfont,\setbox,\setcounter,\setlength} -% \DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space} -% \DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase} -% \DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt} -% \DoNotIndex{\viipt,\vipt,\vskip,\vspace} -% \DoNotIndex{\wd,\xiipt,\year,\z@} -% -% \changes{v1.0}{2002/12/30}{First public release} -% -% \def\fileversion{v1.0} -% \def\filedate{2002/12/30} -% \newcommand*{\Lpack}[1]{\textsf {#1}} ^^A typeset a package -% \newcommand*{\Lopt}[1]{\textsf {#1}} ^^A typeset an option -% \newcommand*{\file}[1]{\texttt {#1}} ^^A typeset a file -% \newcommand*{\Lcount}[1]{\textsl {\small#1}} ^^A typeset a counter -% \newcommand*{\pstyle}[1]{\textsl {#1}} ^^A typeset a pagestyle -% \newcommand*{\Lenv}[1]{\texttt {#1}} ^^A typeset an environment -% \newcommand*{\AD}{\textsc{ad}} -% \newcommand*{\thisfont}{Rotunda} -% -% \title{The \Lpack{Rotunda} fonts\thanks{This -% file has version number \fileversion, last revised -% \filedate.}} -% -% \author{% -% Peter Wilson\\ -% Catholic University of America \\ -% Now at \texttt{peter.r.wilson@boeing.com} -% } -% \date{\filedate} -% \maketitle -% \begin{abstract} -% The \Lpack{rotunda} and \Lpack{allrtnd} packages provide a set of -% Metafont \thisfont{} book-hands -% as used -% for manuscripts in the 13th to 15th centuries. This is one in a series -% of manuscript fonts. -% \end{abstract} -% \tableofcontents -% \listoftables -% -% -% -% -% \section{Introduction} -% -% The \Lpack{rotunda} and \Lpack{allrtnd} packages provide a Metafont~\cite{METAFONT} version -% of the \thisfont{} manuscript book-hand that was in use between about the -% eleventh and twelfth centuries~\AD. It is part of a project to provide fonts -% covering the major manuscript hands between the first century~\AD{} and -% the invention of printing. The principal resources used in this project -% are listed in the Bibliography. -% -% This manual is typeset according to the conventions of the -% \LaTeX{} \textsc{docstrip} utility which enables the automatic -% extraction of the \LaTeX{} macro source files~\cite{GOOSSENS94}. -% The \Lpack{docmfp} package is used for documenting the Metafont portions -% of the distribution~\cite{DOCMFP}. -% -% Section~\ref{sec:usc} describes the usage of the package. -% Commented code for the fonts is in Sections~\ref{sec:mf} and~\ref{sec:fd} -% and source code for the package is in Section~\ref{sec:code}. -% -% \subsection{Manuscript book-hands} -% -% Before the invention of printing all books were written by hand. The book-hands -% used by the scribes and copyists for the manuscripts changed as time -% went on. Table~\ref{tab:1} lists some of the common book-hands which were used -% between the 1st and 15th centuries. The later book-hands formed the basis of the -% fonts used by the early printers, which in turn form the basis of the printing -% fonts in use today. -% -% The manuscript book-hands were written with a broad nibbed reed or quill -% pen. Among the distinguishing characteristics of a hand, apart from the -% actual shape of the letters, are the angle of the pen (which controls the -% variation between thick and thin strokes) and the height of a letter compared -% to the width of the nib. The lower the ratio of the letter height to nib -% width, the more condensed is the script. The scripts also varied in their -% typical height. -% -% Table~\ref{tab:1} gives an `average' x-height for each -% script, which I obtained by measuring a sample of photographs of -% manuscripts written in the various hands. About a dozen examples -% of each book-hand were measured. This figure should not be taken too -% seriously. -% -% There was not a sharp division between the use of one hand and another. -% Many manuscripts exhibit a variety of hands in the same document. For example, -% the scribe writing in an Uncial hand may have used Roman Rustic letters -% for capitals. Usually the same pen was used for the two different scripts. -% -% Generally speaking, as a hand got older it became more embelished, and -% therefore took longer to write. As this happened a new hand would appear that -% was faster, and which would eventually make the earlier one obsolete. -% -% Many of the book-hands were single-cased; that is, they did not have an -% upper- and lower-case as we do nowadays in Western scripts. On the other -% hand, a script might be majuscule or minuscule. A \textit{majuscule} script -% is one, like our upper-case, where the letters are drawn between two lines -% and are of a uniform height with no ascenders or descenders. -% A \textit{minuscule} script, like our lower-case, is drawn between four lines -% and has ascenders and descenders. -% -% \begin{table} -% \centering -% \caption{The main manuscript book-hands} \label{tab:1} -% \begin{tabular}{lccccc} \hline -% Name & Century & x-height & Height & Pen & Normalised \\ -% & & (mm) & (nib widths) & angle & height \\ \hline -% Roman Rustic & 1--6 & 5.7 & 4--6 & 45 & 1.90 \\ -% Uncial & 3--6 & 4.1 & 4--5 & 30 & 1.37 \\ -% Half Uncial & 3--9 & 3.2 & 3--6 & 20--30 & 1.07 \\ -% Artificial Uncial & 6--10 & 4.2 & 3--6 & 10 & 1.40 \\ -% Insular majuscule & 6--9 & 4.2 & 5 & 0--20 & 1.40 \\ -% Insular minuscule & 6 onward & 4.1 & 5--6 & 45--70 & 1.37 \\ -% Carolingian minuscule & 8--12 & 3.0 & 3--5 & 45 & 1.00 \\ -% Early Gothic & 11--12 & 3.8 & 4--6 & 20--45 & 1.27 \\ -% Gothic Textura & 13--15 & 3.9 & 3--5 & 30--45 & 1.30 \\ -% Gothic Prescius & 13 onward & 3.3 & 4--5 & 45 & 1.10 \\ -% Rotunda & 13--15 & 3.2 & 4--6 & 30 & 1.07 \\ -% Humanist minuscule & 14 onward & 3.0 & 4--5 & 30--40 & 1.00 \\ \hline -% \end{tabular} -% \end{table} -% -% During the period under consideration arabic numerals were effectively -% not used. At the beginning they were unknown and even though some knew -% of them towards the end, the glyphs used for them are not recognisable --- -% to me they look somewhat like cryllic letters --- and each locality -% and time had its own highly individualistic rendering. The general rule -% when using one of these book-hands is to write all numbers using -% roman numerals. -% -% The Roman alphabet consisted of 23 capital letters --- the J, U and W -% were absent. The book-hands initially used both a `u' and a `v' interchangeably -% but by the 10th century the practice had become to use the `v' before a vowel -% and the `u' otherwise. The letter corresponding to the W sound appeared -% in England around the 7th century in -% the form of the runic \textit{wen} character and by about the 11th century -% the `w' chacter was generally used. The `J' is the newest letter of all, not -% appearing until about the mid 16th century. -% -% In the first century punctuation was virtually unknown, and typically -% would not even be any additional space between individual words, never -% mind denoting ends of sentences. Sometimes a dot at mid-height would be -% used as a word seperator, or to mark off the end of a paragraph. Effectively -% a text was a continuous stream of letters. By the time that printing was -% invented, though, all of our modern punctuation marks were being used. -% -% Among all these manuscript hands, the Carolingian minuscule is the -% most important as our modern fonts are based on its letter shapes, and it is -% also at this point in time where the division occured between the black letter -% scripts as used even today in Germany, and the lighter fonts used elesewhere. -% The Rotunda and Humanist minuscule hands were developed in Italy and were -% essentially a rediscovery of the Carolingian minusucle. Guthenberg took the -% Gothic scripts as the model for his types. Later printers, -% such as Nicholas Jenson of Venice, -% took the Humanist scripts as their models. -% -% -% \subsection{The \thisfont{} script} -% -% The Italians developed their own version of the Gothic hands which -% was more open than the Textura forms. Their script became to be called -% Rotunda and was in use in Italy until the Humanist hand came along. -% -% Ligatures disappeared, except of course the ampersand. The script -% was basically a miniscule but when capital letters were required each scribe -% seemed to do his own thing --- letters based on uncial, square capitals, or -% Carolingian forms might be used. -% -% \section{The \Lpack{rotunda} and \Lpack{allrtnd} packages} \label{sec:usc} -% -% The \thisfont{} font family is called |rtnd|. The font is supplied in both -% OT1 and T1 encodings. -% -% \subsection{The \Lpack{rotunda} 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{\rtndfamily} -% The |\rtndfamily| 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{\textrtnd} -% The command |\textrtnd{|\meta{text}|}| will typeset \meta{text} using the -% \thisfont{} fonts. -% -% \subsection{The \Lpack{allrtnd} 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{allrtnd} package automatically loads the \Lpack{rotunda} package, -% so its font commands are available if necessary. -% -% \StopEventually{ -% \bibliographystyle{alpha} -% \renewcommand{\refname}{Bibliography} -% \begin{thebibliography}{GMS94} -% \addcontentsline{toc}{section}{\refname} -% -% \bibitem[And69]{ANDERSON69} -% Donald M.~Anderson. -% \newblock {\em The Art of Written Forms: The Theory and Practice of Calligraphy}. -% \newblock Holt, Rinehart and Winston, 1969. -% -% \bibitem[Bol95]{BOLOGNA95} -% Giulia Bologna. -% \newblock {\em Illuminated Manuscripts: The Book before Gutenberg}. -% \newblock Crescent Books, 1995. -% -% \bibitem[Day95]{DAY95} -% Lewis F.~Day. -% \newblock {\em Alphabets Old \& New}. -% \newblock (3rd edition originally published by B.~T.~Batsford, 1910) -% \newblock Senate, 1995. -% -% \bibitem[Dro80]{DROGIN80} -% Marc Drogin. -% \newblock {\em Medieval Calligraphy: Its History and Technique}. -% \newblock Allenheld, Osmun \& Co., 1980. -% -% \bibitem[Dru95]{DRUCKER95} -% Johanna Drucker. -% \newblock {\em The Alphabetic Labyrinth}. -% \newblock Thames \& Hudson, 1995. -% -% \bibitem[Fir93]{FIRMAGE93} -% Richard A.~Firmage. -% \newblock {\em The Alphabet Abecedarium}. -% \newblock David R~Goodine, 1993. -% -% \bibitem[Fli98]{LETTRINE} -% Daniel Flipo. -% \newblock {\em The LETTRINE package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1998. -% -% \bibitem[Har95]{HARRIS95} -% David Harris. -% \newblock {\em The Art of Calligraphy}. -% \newblock DK Publishing, 1995. -% -% \bibitem[Jen95]{BETON} -% Frank Jensen. -% \newblock {\em The BETON package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1995. -% -% \bibitem[Joh71]{JOHNSTON75} -% Edward Johnston (ed. Heather Child). -% \newblock {\em Formal Penship and Other Papers}. -% \newblock Penthalic, 1971. -% -% \bibitem[Knu87]{CM} -% Donald E.~Knuth. -% \newblock {\em Computer Modern Typefaces}. -% \newblock Addison-Wesley, 1987. -% -% \bibitem[Knu92]{METAFONT} -% Donald E.~Knuth. -% \newblock {\em The METAFONTbook}. -% \newblock Addison-Wesley, 1992. -% -% \bibitem[GMS94]{GOOSSENS94} -% Michel Goossens, Frank Mittelbach, and Alexander Samarin. -% \newblock {\em The LaTeX Companion}. -% \newblock Addison-Wesley Publishing Company, 1994. -% -% \bibitem[Tho75]{THOMAS75} -% Alan G.~Thomas. -% \newblock {\em Great Books and Book Collectors}. -% \newblock Weidenfield and Nichoson, 1975. -% -% \bibitem[Wil99]{DOCMFP} -% Peter R.~Wilson. -% \newblock {\em The DOCMFP Package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1999. -% -% \bibitem[Wil99b]{ROMANNUM} -% Peter R.~Wilson. -% \newblock {\em The ROMANNUM Package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1999. -% -% \end{thebibliography} -% } -% -% \section{The Metafont code} \label{sec:mf} -% -% -% As previously noted, this work is part of a larger project to provide -% fonts covering the main manuscript book-hands. As such, one of the -% aims is to produce a coordinated set of fonts, especially as multiple -% hands might be used in a single document. -% -% Noting that the hands tend to be somewhat larger than the typical 10pt -% size (where the x-height is approximately 1.5mm) used for modern books, -% I have also designed the fonts -% at a larger than normal size, then applied some non-linear factors when reducing -% them down to a 10pt size. -% Further, I have used the height of the Carolingian minuscule as a -% normalising factor when deciding on the absolute height of any particular -% script. The x-height of the Carolingian font is made equal to the -% x-height of the Computer Modern Roman (CMR) font. -% -% Modern fonts are effectively drawn. That is, the outline of the letter is -% drawn carefully and the center is filled with ink. This is shown to good -% effect in the Metafont code for the Computer Modern fonts~\cite{CM}. -% In contrast, the manuscript letters were inked by single pen strokes in -% a calligraphic manner. I have tried to repeat this calligraphic style -% in the Metafont code. -% -% As much as possible I have tried to use parameter values from the -% Computer Modern Roman (CMR) fonts in order to reduce possible -% infelicities if the CM and manuscript fonts are used together. However, -% few of the CMR parameters are applicable to the calligraphic style. -% -% -% \subsection{The parameter file} -% -% We deal with the parameter files first, and start by announcing -% what they are for. The \thisfont{} font comes in three sizes and also as a normal -% and a bold font. -% \begin{macrocode} -%<*base7|base10|base17|base7b|base10b|base17b> -%%%% RTND7.MF Early Gothic at 7 point design size. -%%%% RTND10.MF Early Gothic at 10 point design size. -%%%% RTND17.MF Early Gothic at 17 point design size. -%%%% RTNDB7.MF Early Gothic Bold at 7 point design size. -%%%% RTNDB10.MF Early Gothic Bold at 10 point design size. -%%%% RTNDB17.MF Early Gothic 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 - -%font_identifier:="RTND"; font_size 7pt#; -%font_identifier:="RTND"; font_size 10pt#; -%font_identifier:="RTND"; font_size 17.28pt#; -%font_identifier:="RTNDB"; font_size 7pt#; -%font_identifier:="RTNDB"; font_size 10pt#; -%font_identifier:="RTNDB"; font_size 17.28pt#; - -% \end{macrocode} -% -% \DescribeVariable{jutstretch} -% The CMR scaling for lowercase serifs wrt 17pt size. -% \begin{macrocode} -% jutstretch:=1.19; -% jutstretch:=1.152; -% jutstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{stemstretch} -% The CMR scaling for lowercase stem widths wrt 17pt size. -% \begin{macrocode} -% stemstretch:=1.50; -% stemstretch:=1.31; -% stemstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{caprat} -% The scaling for `capitals' wrt `lowercase'. This is pretty much a guess -% (the ratio for CMR10 is 1.59). -% \begin{macrocode} - caprat:=1.5; % ratio of capital height to minuscule height -% \end{macrocode} -% -% \DescribeVariable{cap_jutstretch} -% The CMR scaling for uppercase serifs wrt 17pt size. -% \begin{macrocode} -% cap_jutstretch:=1.3; -% cap_jutstretch:=1.2; -% cap_jutstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{cap_stemstretch} -% The CMR scaling for uppercase stem width wrt 17pt size. -% \begin{macrocode} -% cap_stemstretch:=1.45; -% cap_stemstretch:=1.31; -% cap_stemstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{bfudge} -% Letter width scaling for bold font wrt normal font. -% \begin{macrocode} -% bfudge:=1.0; -% bfudge:=1.2; -% \end{macrocode} -% -% \DescribeVariable{szfudge} -% Width scaling wrt 17pt letter width. -% \begin{macrocode} -% szfudge:=1.18; -% szfudge:=1.0; -% szfudge:=1.0; -% \end{macrocode} -% -% \DescribeVariable{hstretch} -% Horizontal stretching factor wrt 17pt size letter width. -% \begin{macrocode} - hstretch:=szfudge*bfudge; -% \end{macrocode} -% -% \DescribeVariable{carol_height} -% The x-height of the Carolingian gothic font. -% \begin{macrocode} -% carol_height#:=108.5/36pt#; -% carol_height#:=155/36pt#; -% carol_height#:=268/36pt#; -% \end{macrocode} -% -% \DescribeVariable{vstretch} -% The height of this font wrt the Carolingian font. -% \begin{macrocode} - vstretch:=1.1; - -% \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} -% u#:=15.5/36pt#; -% u#:=20/36pt#; -% u#:=32.5/36pt#; -% u#:=17.9/36pt#; -% u#:=23/36pt#; -% 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 -% cap_serif_fit#:=3.5/36pt#; % extra sidebar near uppercase serifs -% cap_serif_fit#:=5/36pt#; % extra sidebar near uppercase serifs -% cap_serif_fit#:=8/36pt#; % extra sidebar near uppercase serifs -% letter_fit#:=0pt#; % extra space added to all sidebars -% letter_fit#:=0pt#; % extra space added to all sidebars -% letter_fit#:=-0.1pt#; % extra space added to all sidebars -% \end{macrocode} -% -% \DescribeVariable{sb} -% A length used for adjusting the side bearings of characters. -% This is normally |1/2u| but needs to be half that for this -% font, like the Gothics. -% \begin{macrocode} -% sb#:=1/4u#; % unit for side bearings -% sb#:=1/4u#; % unit for side bearings -% sb#:=1/4u#; % unit for side bearings - -% \end{macrocode} -% -% \DescribeVariable{cap_sb} -% A length used for adjusting the side bearings of uppercase characters. -% \begin{macrocode} -% cap_sb#:=2sb#; % unit for uppercase side bearings -% cap_sb#:=2sb#; % unit for uppercase side bearings -% cap_sb#:=2sb#; % unit for uppercase side bearings - -% \end{macrocode} -% -% \DescribeVariable{cap_height} -% The height of capital letters. -% \begin{macrocode} -% cap_height#:=172.2/36pt#; % height of caps -% cap_height#:=246/36pt#; % height of caps -% cap_height#:=425/36pt#; % height of caps -% \end{macrocode} -% -% \DescribeVariable{thickfudge} -% The reciprocal of the font height in nib widths. Normal font height -% is 6 nib widths and the bold font height is 5 nib widths. -% \begin{macrocode} -% thickfudge:=1/6; -% thickfudge:=1/5; -% \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:=35; % pen angle -% \end{macrocode} -% -% \DescribeVariable{ascratio} -% The height of lower case ascenders wrt |x_height|. -% \begin{macrocode} - ascratio:=6/4; -% \end{macrocode} -% -% \DescribeVariable{asc_height} -% The height of lower case ascenders. -% \begin{macrocode} - asc_height#:=ascratio*x_height#; -% \end{macrocode} -% -% \DescribeVariable{descratio} -% The depth of lower case descenders wrt |x_height|. -% \begin{macrocode} - descratio:=2/4; -% \end{macrocode} -% -% \DescribeVariable{desc_depth} -% The depth of lower case descenders. -% \begin{macrocode} - desc_depth#:=descratio*x_height#; -% \end{macrocode} -% -% \DescribeVariable{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} -% rule_thickness#:=.34pt#; -% rule_thickness#:=.4pt#; -% rule_thickness#:=.6pt#; - -% \end{macrocode} -% -% \DescribeVariable{jutfudge} -% Controls the protrusion of serifs. -% \begin{macrocode} -%%%jutfudge:= 3/4; -jutfudge:= 1/2; -% \end{macrocode} -% -% \DescribeVariable{jut} -% The lowercase serif protrusion. -% \begin{macrocode} -jut#:=jutstretch*jutfudge*thick#; -% \end{macrocode} -% -% \DescribeVariable{srad} -% |srad| with |0 < srad < 1| controls the serif radius. -% \begin{macrocode} -srad:=0.8; % was 0.5 -% \end{macrocode} -% -% \DescribeVariable{trijut} -% The lowercase triangular serif protrusion. -% \begin{macrocode} -trijut#:=0.75jutstretch*thick#; -% \end{macrocode} -% -% \DescribeVariable{clubjutfudge} -% The fractional protusion of a club serif. -% \begin{macrocode} -clubjutfudge:=1/2; -% \end{macrocode} -% -% \DescribeVariable{clubjut} -% The lowercase club serif protrusion. -% \begin{macrocode} -clubjut#:=jutstretch*clubjutfudge*thick#; -% \end{macrocode} -% -% \DescribeVariable{o} -% Amount of overshoot for curves (as in an `o'). Use CMR values. -% \begin{macrocode} -% o#:=5/36pt#; -% o#:=8/36pt#; -% 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 rtndtitle %% switch to the driver file - -% \end{macrocode} -% -% The end of this code section. -% \begin{macrocode} -% -% \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 RTNDTITLE.MF for the Early Gothic 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}{rotunda_font_setup} -% This macro contains the set up for the \thisfont{} fonts. -% \begin{macrocode} - -def rotunda_font_setup= % contains special stuff for rotunda fonts - define_pixels(side,half_height,carol_height,comma_width); - define_pixels(u,dot_size,letter_size,cap_height,width_adj,serif_fit, - cap_serif_fit,jut,clubjut,cap_jut,trijut); - define_pixels(fig_width); - define_whole_pixels(letter_fit,sb,cap_sb); - define_whole_vertical_pixels(body_height,asc_height,cap_height,x_height, - desc_depth,body_depth,fig_height); - define_corrected_pixels(o); - define_blacker_pixels(thick,thin); - let adjust_fit = normal_adjust_fit; -% \end{macrocode} -% \DescribeVariable{stylus} -% The pen for drawing the thinnest lines is |stylus|. -% \begin{macrocode} - pickup pencircle scaled thin; - stylus:=savepen; -% \end{macrocode} -% \DescribeVariable{thickstylus} -% The pen for drawing lines a bit thicker than the thinnest is |thickstylus|. -% \begin{macrocode} - pickup pencircle scaled (1.5thin); - thickstylus:=savepen; -% \end{macrocode} -% \DescribeVariable{quill} -% The normal calligraphic pen is |quill|. -% \begin{macrocode} - pickup pencircle xscaled thick yscaled thin rotated pangle; - quill:=savepen; - -% \end{macrocode} -% -% \DescribeVariable{threequarterquill} -% A pen with 3/4 of the width as quill (but with the same thinness). -% \begin{macrocode} - pickup pencircle xscaled 3/4thick yscaled thin rotated pangle; - threequarterquill := savepen; - -% \end{macrocode} -% -% \DescribeVariable{halfquill} -% A pen with 1/2 of the width as quill (but with the same thinness). -% \begin{macrocode} - pickup pencircle xscaled 1/2thick yscaled thin rotated pangle; - halfquill := savepen; - -% \end{macrocode} -% -% \DescribeVariable{quarterquill} -% A pen with 1/4 of the width as quill (but with the same thinness). -% \begin{macrocode} - pickup pencircle xscaled 1/4thick yscaled thin rotated pangle; - quarterquill := savepen; - -% \end{macrocode} -% -% -% \begin{macrocode} - numeric pcshiftx#; % x value of LHS of box wrt origin of char box - define_pixels(pcshiftx); - numeric sqxside#; % x size of the square - numeric sqyside#; % y size of the square - define_pixels(sqxside,sqyside); - -enddef; % end of rotunda_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 $0y$$: - 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 $0y$$: - 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 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; -rotunda_font_setup; - -% \end{macrocode} -% -% -% We generate letters, together with some punctuation and -% analphabetics. -% \begin{macrocode} - -input rtndl; % lower case -input rtndu; % capitals -input rtndpunct; % punctuation -input rtndlig; % the several dashes -input rtnddig; % 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. - -% -% \end{macrocode} -% -% \subsection{The code for normal letters} -% -% The following code is for the lower case characters. -% -% \begin{macrocode} -%<*min> -% RTNDL.MF Program file for Early Gothic lower case -% - -% \end{macrocode} -% -% -% \begin{routine}{a} -% The letter `a'. -% \begin{macrocode} -cmchar "RTND letter a"; -beginchar("a", 2sb#+hstretch*(9/16x_height#+jut#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pair pr[]; -pickup quill; -n1 := w - 2pcshiftx -jut; % effective letter width -% "stem" -x1=1/2w; top y1=h; -rt x2 = w-pcshiftx-jut; top y2 = bot y1; -x3 = x2; bot y3 = 0; -z4 = z3 shifted (jut*pdir); -pth1 := z1--z2--z3--z4; -% bowl -rt x6 = lft x3; bot y6 = 0; -lft x5 = pcshiftx; bot y5 = 1/4h; - -z15 = (lft x5, bot y5); z25 = (rt x5, top y5); -z7 = whatever[z15,z25] = whatever[z2,z3]; -x8 = x25; y8 = y25 + 1/2(y1-y7); - -%%ductus:=true; -if ductus: - pickup stylus; -else: - % draw stem - draw pth1; - % draw bowl - draw z5--z6; - pickup stylus; - draw z5--z7; - draw z1{-pdir}..z8..z7{pdir}; -fi -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 "RTND letter b"; -beginchar("b", 2sb#+hstretch*(11/16x_height#+jut#), - asc_height#, 0); -adjust_fit(0,0); -numeric n[]; -path pth[]; -pcshiftx := sb; -pickup quill; -n1:=w-2pcshiftx; % actual letter width -n2:=h/ascratio; % top of bowl -%%ductus:=true; -lft x1 = pcshiftx+jut; top y1=h; -x3 = x1; bot y3= thick; -rt x5 = w-pcshiftx; y5=1/2n2; -x4 = 1/2[x3,x5]; bot y4=0; -x6=1/2[x4,x5]; top y6=n2; -pth1 := z1..z3{down}..z4{right}.. z5{up}; -z98=(0,3/4n2); z99=(w,y98); -pth2 := z98--z99; -%z7 = pth1 intersectionpoint pth2; -z7=(x1,6/8n2); -if ductus: - pickup stylus; -fi -%draw z1--z3{down}..z4{right}..z5{up}..z6; -%draw z6--z7; -draw z1--z3--z4; -draw z4{pdir}..z5{up}..{-pdir}z7; -%draw_flatserif(1,3,srad); -draw_flat_head(1); -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 "RTND letter c"; -beginchar("c", 2sb#+hstretch*(9/16x_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{pdir}; -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 "RTND letter d"; -beginchar("d", 2sb#+hstretch*(11/16x_height#+jut#), - asc_height#, 0); -adjust_fit(0,0); -numeric n[]; -path pth[]; -pcshiftx := sb; -pickup quill; -n1 = h/ascratio; % x-height -rt x1=w-pcshiftx-jut; top y1=h; -x2 = x1; bot y2=0; -x3 = x1; y3 = 1/4n1; -lft x5 = pcshiftx; y5=6/8n1; -x4 = 3/8[x3,x5]; bot y4 = 0; -x6=1/2[x4,x5]; top y6 = n1; -x7=x3; top y7=n1; -rt x8 = w-pcshiftx; y8=n1; -if ductus: - pickup stylus; -fi -draw z1--z2; -draw_flatserif(1,2,srad); -%draw_roundserif(2,1,srad); -draw_flat_foot(2); -%%draw z3..z4{left}..z5{up}..z6; -draw z3..z4{left}.. tension 0.8 ..z5{up}..z6; -draw z6..z7..z8; -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 "RTND letter e"; -beginchar("e", sb#+hstretch*(15/16x_height#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pickup quill; -n1 := w-pcshiftx; % actual letter width -n2 := 6/8n1; % width of bowl -x1 = pcshiftx + 5/8n2; top y1=h; -lft x2 = pcshiftx; y2 = 1/2h; -x3 = pcshiftx + 1/2n2; bot y3 = 0; -rt x4 = pcshiftx + n2; y4 = 1/4h; -%%z98=(0,3/8h); z99=(w,y98); -z98=(0,2/8h); z99=(w,y98); -pth1 := z98--z99; -pth2 := z1{left}..z2{down}..z3{right}; -z7 = pth1 intersectionpoint pth2; -rt x9 = w-pcshiftx; y9 = 3/4h; -z8=1/2[z7,z9]; - -z70 = z7 shifted 10pdir; -z17 = whatever[z7,z70]; -%%x17 = w-pcshiftx; -top y17 = h; - -rt x27=w-pcshiftx; top y27=h; -pth3 := z7--z27; % diagonal -pth4 := z1--z9; - -z34 = pth3 intersectionpoint pth4; -pth5 := z34--z1{left}...z2{down}..z3{right}..z4{pdir}; % bowl -%%ductus:=true; -if ductus: - pickup stylus; -fi -%%draw z7{pdir}..z1{left}..z2{down}..z3{right}..z4{pdir}; -%%draw z7{pdir}..z8{right}..z9{pdir}; -%%draw z7--z17; -draw pth5; % bowl -%%draw pth3; % diagonal -draw z34--z7; % daigonal -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,17,27,34,70,100); -endchar; % end "e" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{f} -% The letter `f'. -% \begin{macrocode} -cmchar "RTND letter f"; -beginchar("f", 2sb#+hstretch*(9/16x_height#+jut#), - (asc_height#), 0); -adjust_fit(0,0); -numeric n[]; -pcshiftx := sb; -pickup quill; -n1 := h/ascratio; % x-height -%% stem -lft x1 = lft x2 = pcshiftx+jut; bot y2=0; -%% flick -rt x4 = w-pcshiftx; top y4 = h-thick; -top y3 = h; -lft x3 = rt x1; -top y1 = bot y3; -%% bar -lft x5 = pcshiftx; top y5 = n1; -rt x6 = lft x4; y6 = y5; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2; draw_flat_foot(2); % stem -draw z3--z4; % top -draw z5--z6; % bar -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,14,15,16,100); -endchar; % end "f" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{g} -% The letter `g'. -% \begin{macrocode} -cmchar "RTND letter g"; -beginchar("g", 2sb#+hstretch*(11/16x_height#+jut#), - x_height#, desc_depth#); -adjust_fit(0,0); -numeric n[]; -path pth[]; -pcshiftx := sb; -pickup quill; -%%n1 = h/ascratio; % x-height -rt x1=w-pcshiftx-jut; top y1=h; -rt x2 = x1; y2=1/2h; -x3 = x1; y3 = 0; -rt x4 = w-pcshiftx; y4 = -1/2d; -x5 = 1/2w; bot y5 = -d; -lft x6 = pcshiftx; y6 = top y5; -x13 = x1; y13 = 1/4h; -lft x15 = pcshiftx; y15=6/8h; -x14 = 3/8[x13,x15]; bot y14 = 0; -x16=1/2[x14,x15]; top y16 = h; -x17=x13; top y17=h; -rt x18 = w-pcshiftx; y18=h; -if ductus: - pickup stylus; -fi -% stem -%draw z1..z3..z4{down}..z5{left}..z6; -draw z1..z13..z4{down}..z5{left}..z6; -draw z6--z13; -%% top bowl -draw z13..z14{left}..z15{up}..z16; -draw z16..z17..z18; -ductus:=false; -penlabels(0,1,2,3,4,5,6,7,8,13,14,15,16,17,18,100); -endchar; % end "g" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{h} -% The letter `h'. -% \begin{macrocode} -cmchar "RTND letter h"; -beginchar("h", 2sb#+hstretch*(11/16x_height#+jut#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -numeric n[]; -%% stem -lft x1=lft x2=pcshiftx+jut; -top y1=h; bot y2=0; -%% bowl -z3=1/2[z2,z1]; -rt x5 = w-pcshiftx; y5=y3; -x4=9/16[x3,x5]; top y4 = h/ascratio; -%%lft x6=x4; bot y6=0; -x6=9/16[x4,x5]; -bot y6=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -%draw_tstem(1,2,srad); % stem -%draw_flatserif(1,2,srad); -%%draw_roundserif(2,1,srad); -draw z1--z2; -draw_flat_head(1); draw_flat_foot(2); -draw z3--z4{right}...z5{down}...z6{-pdir}; - -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 "RTND letter i"; -beginchar("i", 2sb#+hstretch*(thick#+2jut#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -lft x1=lft x2=pcshiftx+jut; -top y1=h; bot y2= thick; -bot y3 = 0; rt x3 = w-pcshiftx; -x8 = x1; y8 = h + 3/2thick; -%%ductus:=true; -draw_tstem(1,2,srad); -draw_flatserif(1,2,srad); -%draw_roundserif(2,1,srad); -draw z2--z3; -draw_pdot(8, dot_size); -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 "RTND letter j"; -beginchar("j", sb#+hstretch*(3/8x_height#), - x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% stem -rt x1 = w-pcshiftx; top y1 = h; -x2=x1; y2=-1/2d; -%% bottom hook -lft x3 = 0; bot y3 = -d; -x8 = x1; y8 = h + 3/2thick; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2; % stem -draw_flatserif(1,2,srad); -draw z2{down}..z3{-pdir}; % hook -draw_pdot(8, dot_size); -ductus:=false; -penlabels(1,2,3,100); -endchar; % end "j" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{k} -% The letter `k'. -% \begin{macrocode} -cmchar "RTND letter k"; -beginchar("k", 2sb#+hstretch*(13/16x_height#+jut#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -path pth[]; -numeric n[]; -pickup quill; -%% stem -n1 = h/ascratio; % x-height -lft x1=lft x2=pcshiftx+jut; -y1=h; bot y2=0; -%% top arm -%%z3=(x1,1/2n1); -x3 = x1; top y3 = 1/2n1; -rt x5=5/8[x1,w-pcshiftx]; top y5=n1; -x4=1/2[x3,x5]; top y4=n1; -pth1 := z3{pdir}..z5{up}; -%% lower arm -pth2 := (rt x1,0)--(rt x1,h); -z13 = pth1 intersectionpoint pth2; -pickup threequarterquill; -lft x14 = x13; bot y14 = y13; -rt x7=w-pcshiftx; bot y7=0; -pickup quill; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_flatserif(1,2,srad); -%draw_roundserif(2,1,srad); -draw_flat_foot(2); -draw pth1; % upper arm -pickup threequarterquill; -%%draw z14{down}..z7{-ppdir}; % lower arm -%%draw z14{down}..z7; % lower arm -draw z14{-ppdir}..z7{right}; % lower arm -pickup quill; -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 "RTND letter l"; -beginchar("l", 2sb#+hstretch*(thick#+2jut#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -lft x1=pcshiftx+jut; top y1=h; -x2=x1; -bot y2 = thick; -rt x3 = w-pcshiftx; bot y3 = 0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); -draw_flatserif(1,2,srad); -%draw_roundserif(2,1,srad); -draw z2--z3; -ductus:=false; -penlabels(1,2,3,4,100); -endchar; % end "l" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{m} -% The letter `m'. -% \begin{macrocode} -cmchar "RTND letter m"; -beginchar("m", 2sb#+hstretch*(15/16x_height#+2jut#), % 12/16 too narrow, 14 a bit - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pickup quill; -%% left stem -lft x1=pcshiftx+jut; top y1=h; -x2=x1; bot y2=0; -%% start of bowl -x13=x1; y13=3/4h; -%% bottom of right and middle stems -rt x6 = w -pcshiftx - jut; y6=y2; -z4 = 1/2[z2,z6]; -%% top of middle and right stems -x3=x4; y3=y1; -x5=x6; y5=y13; -%% top of bowls -x14=2/3[x13,x3]; top y14 = h; -x33=x4; y33=y13; -x34=2/3[x33,x5]; y34 = y14; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % left half -draw_flatserif(1,2,srad); -%draw_roundserif(2,1,srad); -draw_flat_foot(2); -draw z13--z14{right}..z33{down}--z4; -%draw_roundserif(4,3,srad); -draw_flat_foot(4); -draw z33--z34{right}..z5{down}--z6; -draw_roundserif(6,5,srad); -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 "RTND letter n"; -beginchar("n", 2sb#+hstretch*(9/16x_height#+2jut#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -%% left stem -lft x1=pcshiftx+jut; top y1=h; -x2=x1; bot y2=0; -% start of bowl -x13=x1; y13=3/4h; -%% right stem -rt x4 = w-pcshiftx-jut; y4=y2; -x3 = x4; y3 = y13; -% top of bowl -x14 = 2/3[x13,x3]; top y14 = h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % left stem -draw_flatserif(1,2,srad); -%draw_roundserif(2,1,srad); -draw_flat_foot(2); -draw z13--z14{right}..z3{down}--z4; -draw_roundserif(4,3,srad); -ductus:=false; -penlabels(1,2,3,4,5,6,13,14,100); -endchar; % end "n" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{o} -% The letter `o'. -% \begin{macrocode} -cmchar "RTND letter o"; -beginchar("o", 2sb#+hstretch*(7/8x_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; -draw z2..z3..z4{left}.. tension 0.8 ..{up}z1..cycle; -%z5=(pcshiftx,-o); -%obowl(5, w-2pcshiftx, h+2o); -%%ductus:=true; -if ductus: - pickup stylus; - draw obfirst; draw obsecond; draw obouter; draw obinner; -else: -%% fill obouter; unfill obinner; -fi -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 "RTND letter p"; -beginchar("p", 2sb#+hstretch*(14/16x_height#+jut#), - x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% stem -lft x1=lft x2=pcshiftx+jut; -top y1=h; bot y2=-d; -%% bowl % from "d" -z3=3/4[(x1,0),z1]; -rt x5 = w-pcshiftx; y5=1/2h; -x4=1/2[x3,x5]; top y4 = h; -x6=x4; bot y6=0; -z7=1/4[(x1,0),z1]; - -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_flatserif(1,2,srad); -%draw_roundserif(2,1,srad) -draw_flat_foot(2); -draw z3--z4; draw z4..z5{down}..z6{left}..z7; -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 "RTND letter q"; -beginchar("q", 2sb#+hstretch*(7/8x_height#), - x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% right stem -rt x1=w-pcshiftx; top y1=h; -x2=x1; bot y2=-d; -%% bowl -z3=1/4[(x1,0),z1]; -lft x5=pcshiftx; y5=1/2h; -x4=1/2[x3,x5]; bot y4=0; -x6=x4; top y6=h; -%%z7=3/4[(x1,0),z1]; -z7=z1; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); -%%draw_flatserif(1,2,srad); -%%draw_roundserif(2,1,srad); -draw_flat_foot(2); -draw z3{-pdir}..z4{left}..z5{up}..z6{right}..z7{pdir}; -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 "RTND letter r"; -beginchar("r", 2sb#+hstretch*(11/16x_height#+jut#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% stem -lft x1=lft x2=pcshiftx+jut; -top y1=h; bot y2=0; -%% bowl -z3=3/4[z2,z1]; -rt x5 = w-pcshiftx; y5=y3; -x4=1/2[x3,x5]; top y4 = h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_flatserif(1,2,srad); -draw_flat_foot(2); -%%draw_roundserif(2,1,srad); -draw z3{pdir}..z4{right}..z5{pdir}; -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 "RTND letter s"; -beginchar("s", 2sb#+hstretch*(7/8x_height#), - x_height#, 0); -adjust_fit(0,0); -numeric n[]; -pcshiftx := sb; -pickup quill; - -% center -z50=(1/2w, 1/2h); -x60 = w-pcshiftx; z60 = z50 shifted (whatever*pdir); -x40 = pcshiftx; z40 = z50 shifted (whatever*pdir); -rt x5 = x50; top y5 = y50; -z54 = (lft x5, bot y5); -lft x6 = x50; bot y6 = y50; -z56 = (rt x6, top y6); - -% top bowl -z1 = 1/2[z56,z60]; -x3 = 1/2[x5,x1]; top y3 = h; - -% bottom bowl -z10 = 1/2[z54,z40]; -%x8 = 1/4[x6,x10]; -x8 = x56; -bot y8 = 0; - -%%ductus:=true; -if ductus: - pickup stylus; -fi -% top bowl -draw z5{ppdir}..z3..z1{-ppdir}; - -% bottom bowl -draw z6..z8{left}..z10{ppdir}; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,10,11,17,20,26,27,28,40,50,54,56,60,100); -endchar; % end "s" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{t} -% The letter `t'. -% \begin{macrocode} -cmchar "RTND letter t"; -beginchar("t", 2sb#+hstretch*(10/16x_height#+jut#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% bar -lft x1 = pcshiftx; top y1 = h; -rt x2 = w - pcshiftx; y2 = y1; -%% stem -lft x3 = rt x1; bot y3 = top y1; -rt x5 = x2; bot y5 = 0; -x4 = x3; bot y4 = thick; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2; % bar -draw z3--z4--z5; % 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 "RTND letter u"; -beginchar("u", 2sb#+hstretch*(9/16x_height#+2jut#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% left stem -lft x1 = pcshiftx + jut; top y1 = h; -% start of bowl -x13=x1; y13=1/3h; -% right stem -rt x3=w-pcshiftx-jut; 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; -%%ductus:=true; -if ductus: - pickup stylus; -fi -%%draw z1--z13{down}...z14{right}...z33{pdir}; -draw z1--z13--z14{right}...z33{pdir}; -draw_flatserif(1,13,srad); -draw_tstem(3,4,srad); % right stem -draw_flatserif(3,4,srad); -draw_roundserif(4,3,srad); -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 "RTND letter v"; -beginchar("v", 2sb#+hstretch*(11/16x_height#+jut#), % 13/16 too wide - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -%% left stem -lft x1 = pcshiftx + jut; top y1 = h; -%% right stem -rt x5=w-pcshiftx; top y5 = h; -bot y3 = 0; -x3 = 1/2[x1,x5]; -z51 = (x1,0); z55=(x5,0); -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1{down}..z3; % left stem -draw_flatserif(1,51,srad); -draw z5{down}..z3; % right stem -draw_flatserif(5,55,srad); -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 "RTND letter w"; -beginchar("w", 2sb#+hstretch*(15/16x_height#+2jut#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -%% left stem -lft x1 = pcshiftx + jut; top y1 = h; -% start of bowl -x13=x1; y13=1/3h; -% right stem -rt x5=w-pcshiftx-jut; y5=y1; -x6=x5; bot y6=0; -z53=1/4[z6,z5]; % start of bowl -% middle stem -z3 = 1/2[z1,z5]; -z33=(x3,y13); -% middle of bowl -x14=1/3[x1,x3]; bot y14=0; -% middle of right bowl -x34=1/3[x3,x5]; y34=y14; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z13--z14{right}...z33{pdir}; % left -draw_flatserif(1,13,srad); -draw z3--z33--z34{right}...z53{pdir}; % middle -draw_flatserif(3,33,srad); -draw_tstem(5,6,srad); % right stem -draw_flatserif(5,6,srad); -draw_roundserif(6,5,srad); -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 "RTND letter x"; -beginchar("x", 2sb#+hstretch*(7/2thick#), - x_height#, 0); -adjust_fit(0,0); -path pth[]; -numeric n[]; -pcshiftx := sb; -pickup quill; -n1 := w-2pcshiftx; % total width -n2 := thick; % triangle side -%% diag top left to bottom right -lft x1 = pcshiftx; top y1 = h; -rt x4 = w-pcshiftx; bot y4 = 0; -x2 = x3 = 1/2w; -top y5 = h; lft x5 = rt x2; -top y2 = bot y5; -rt x6 = w - pcshiftx; y6 = y2; -y3 = h - y2; -lft x8 = lft x1; bot y8 = 0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2--z3--z4; % top left to bottom right -draw z5--z6; % top right -draw z3--z8; % bottom left -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 "RTND letter y"; -beginchar("y", 2sb#+hstretch*(11/16x_height#+jut#), - x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -path pth[]; -numeric n[]; -pickup quill; -%% left stem top -lft x1 = pcshiftx + jut; top y1 = h; -bot y3 = 0; -%% right stem -rt x5=w-pcshiftx; top y5 = h; -%%lft x9=-1/2w; bot y9 = -d; -lft x9 = 0; bot y9 = -d; -pth1 := z9{right}..z5{up}; -pth2 := (0,y3)--(w,y3); -z99 = pth1 intersectionpoint pth2; -x3 = x99; -z51 = (x1,0); z55=(x5,0); -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1{down}..z3; % left stem -draw_flatserif(1,51,srad); -draw pth1; % right stem -draw_flatserif(5,55,srad); -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 "RTND letter z"; -beginchar("z", 2sb#+hstretch*(12/16x_height#), - x_height#, 0); -adjust_fit(0,0); -numeric n[]; -path pth[]; -pcshiftx := sb; -pickup quill; -%% top bar ends -lft x1 = pcshiftx; rt x2 = w-pcshiftx; -top y1 = top y2 = h; -%% bottom bar ends -lft x3 = pcshiftx; rt x4 = w-pcshiftx; -bot y3 = bot y4 = 0; -%% middle bar ends -lft x5 = x1; rt x6 = x2; -y5 = y6 = 1/2h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2; draw z3--z4; draw z5--z6; % bars -draw z2--z3; % diagonal -ductus:=false; -penlabels(1,2,3,4,5,6,10o,10i,20o,20i,100); -endchar; % end "z" - -% \end{macrocode} -% \end{routine} -% -% -% The end of this file -% \begin{macrocode} -% -% \end{macrocode} -% -% -% \subsection{The code for capital letters} -% -% \thisfont{} `capitals' were drawn with the same pen as for the minuscules, -% and the letters were merely larger versions of the minuscules. -% -% \begin{macrocode} -%<*maj> -% RTNDU.MF Program file for Early Gothic `capitals' -% - -% \end{macrocode} -% -% -% \begin{routine}{A} -% The letter `A'. -% \begin{macrocode} -cmchar "RTND letter A"; -beginchar("A", 2cap_sb#+caprat*hstretch*(3/4x_height#+jut#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric n[]; -path pth[]; -pair pr[]; -pickup quill; -n1 := w - 2pcshiftx -jut; % effective letter width -% right leg -x1 = pcshiftx + 6/8n1; top y1=h; -rt x2 = pcshiftx + n1; bot y2=0; -pth1 := z1{down}..z2; -z20 = 7/8[z1,z2]; - -% left leg -rt x4 = lft x1; top y4 = y1; - -lft x8 = pcshiftx; top y8 = -thin; - -x6 = 3/8w; y6 = 1/2h; -pth2 := z4..{down}z6..{-pdir}z8; - -% top -lft x11 = pcshiftx; top y11 = h - thick; - -x14 = x1; y14 = y1; - -x13 = 1/2[x11,x14]; y13 = y14; -pth3 := z11{pdir}.. z13..z14; - -%%ductus:=true; -if ductus: - pickup stylus; -else: - % draw stem - draw pth1; -% draw_roundserif(1,2,srad); - draw_roundserif(2,20,srad); - % draw bowl -% draw z11{-pdir}..z13{down}..z15{pdir}; - % left leg - draw pth2; - % top - draw pth3; -fi -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,11,12,13,14,15,20,100); -endchar; % end "A" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{B} -% The letter `B'. -% \begin{macrocode} -cmchar "RTND letter B"; -beginchar("B", 2cap_sb#+caprat*hstretch*(3/4x_height#+jut#), - caprat*x_height#, 0); -adjust_fit(0,0); -numeric n[]; -path pth[]; -pcshiftx := cap_sb; -pickup quill; -n1:=w-2pcshiftx; % actual letter width -n2:=h/ascratio; % top of bowl -%%ductus:=true; -lft x1 = pcshiftx+2jut; top y1=7/8h; -lft x13 = pcshiftx; top y13 = y1; -x2 = x1; bot y2 = 0; -z3 = 9/16[z2,z1]; -pth1 := z1--z2; % stem - -rt x6 = w-pcshiftx; y6 = 2/3[y2,y3]; - -pth2 := z2{right}..z6...{-pdir}z3; % bottom bowl - -rt x8 = lft x6; y8 = 13/16[y3,y1]; - -pth3 := z3{pdir}...z8..{-pdir}z13; % top bowl -if ductus: - pickup stylus; -fi -draw pth1; -draw pth2; -draw pth3; -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 "RTND letter C"; -beginchar("C", 2cap_sb#+caprat*hstretch*(5/8x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -numeric n[]; -pcshiftx := cap_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{pdir}; -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 "RTND letter D"; -beginchar("D", 2cap_sb#+caprat*hstretch*(3/4x_height#+jut#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric n[]; -path pth[]; -pickup quill; -%% stem -lft x1=lft x2=pcshiftx+2jut; -top y1=h; bot y2=0; -%% bowl -rt x5 = w-pcshiftx; -x4=1/2[x1,x5]; top y4 = h; -x6'=x4; bot y6' = 5/16h; -y5=1/2[y4,y6']; -x7 = x2; y7 = y2; -x6 = 1/2[x6',x5]; y6 = 1/2[y6',y7]; -lft x3 = pcshiftx; top y3 = y1; -pth1 := z3{pdir}..z4..{down}z5..z6..{-pdir}z7; % bowl -z14 = point 0.75 of pth1; -pth2 := z2{pdir}..{up}z14; -%%ductus:=true; -if ductus: - pickup stylus; -fi -%draw z1--z2; -%draw_roundserif(2,1,srad) -draw pth2; -draw pth1; -ductus:=false; -penlabels(1,2,3,4,5,6,6',7,8,100); -endchar; % end "D" - - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{E} -% The letter `E'. -% \begin{macrocode} -cmchar "RTND letter E"; -beginchar("E", 2cap_sb#+caprat*hstretch*(5/8x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric n[]; -path pth[]; -pickup quill; -%% bowl -n1 := w-2pcshiftx; % actual letter width -n2 := 6/5w-2pcshiftx; % width of full bowl -x1=pcshiftx + 1/2n1; top y1 = h; -lft x2 = pcshiftx; y2 = 1/2h; -x3 = x1; bot y3 = 0; -rt x4 = w-pcshiftx; y4 = 1/4h; -x24 = x4; y24 = 3/4h; -pth1 := z24..z1{left}..z2{down}..z3{right}..z4{pdir}; -% cross bar -x31 = x2; y31 = y2; -x32 = x4; y32 = y31; -pth2 = z31--z32; - -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; -draw pth2; -ductus:=false; -penlabels(1,2,3,4,5,6,14,16,17,18,24,31,32,100); -endchar; % end "E" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{F} -% The letter `F'. -% \begin{macrocode} -cmchar "RTND letter F"; -beginchar("F", 2cap_sb#+caprat*hstretch*(10/16x_height#+jut#), - caprat*x_height#, 0); -adjust_fit(0,0); -numeric n[]; -pcshiftx := cap_sb; -pickup quill; -n1 := h/ascratio; % x-height -%% stem -lft x1=lft x2=pcshiftx+jut; top y1=n1; bot y2=0; -%% flick -x4=x2; y4 = 1/2n1; -rt x6=w-pcshiftx; y6 = 2/3h; -x5 = 2/3[x4,x6]; top y5=h; -%% bar -z14=1/2[z4,z1]; -rt x16 = w -pcshiftx; top y16 = 1/2[y14,y6]; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -draw z4{up}...z5{right}...z6; % top -draw z14{right}..z16{pdir}; % bar -ductus:=false; -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 "RTND letter G"; -beginchar("G", 2cap_sb#+caprat*hstretch*(5/8x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric n[]; -path pth[]; -pickup quill; -%% bowl -n1 := w-2pcshiftx; % actual letter width -n2 := 6/5w-2pcshiftx; % width of full bowl -x1=pcshiftx + 1/2n1; top y1 = h; -lft x2 = pcshiftx; y2 = 1/2h; -x3 = x1; bot y3 = 0; -rt x4 = w-pcshiftx; y4 = 1/4h; -x24 = x4; y24 = 3/4h; -pth1 := z24..z1{left}..z2{down}..z3{right}..z4{pdir}; -% cross bar -x31 = x2; y31 = y2; -x32 = x4; y32 = y31; -pth2 = z31--z32; -% upright -z41 = 5/8[z31,z32]; -z42 = z32; -z43 = z4; -lft x45 = x3; top y45 = - thick; -pth3 := z41--z42--z43..{-pdir}z45; - -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; -%draw pth2; -draw pth3; -ductus:=false; -penlabels(1,2,3,4,5,6,14,16,17,18,24,31,32,100); -endchar; % end "G" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{H} -% The letter `H'. -% \begin{macrocode} -cmchar "RTND letter H"; -beginchar("H", 2cap_sb#+caprat*hstretch*(5/8x_height#+2jut#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -path pth[]; -pickup quill; -numeric n[]; -%% stem -lft x1=lft x2=pcshiftx+3jut; -top y1=h; bot y2=0; -% twiddle -lft x16 = pcshiftx; top y16 = h; -x18 = x1; y18 = y1; -pth1 := z16{pdir}..{pdir}z18; - -%% bowl -z3=1/2[z2,z1]; -rt x5 = w-pcshiftx; y5=y3; -x4=1/2[x3,x5]; top y4 = h/ascratio; -%%lft x6=x4; bot y6=0; -x6=1/2[x4,x5]; -%bot y6=0; -top y6 = 0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -%%draw_flatserif(1,2,srad); -%draw_clubserif(1,2,0.5); -draw_roundserif(2,1,srad); -draw pth1; -draw z3{pdir}..z4..z5..z6{-pdir}; - -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 "RTND letter I"; -beginchar("I", 2cap_sb#+caprat*hstretch*(thick#+3jut#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -path pth[]; -pickup quill; -rt x1 = w - pcshiftx - jut; -x2 = x1; -top y1=h; bot y2=0; -% bar -lft x6 = pcshiftx; top y6 = h; -x8 = x1; y8 = y1; -pth1 := z6{pdir}..{pdir}z8; -%ductus:=true; -draw_tstem(1,2,srad); -%%draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -draw pth1; -ductus:=false; -penlabels(1,2,3,4,5,6,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 "RTND letter J"; -beginchar("J", cap_sb#+caprat*hstretch*(thick#+2jut#), - caprat*x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric n[]; -path pth[]; -pickup quill; -%% stem -rt x1 = w-pcshiftx; top y1 = h; -x2=x1; y2=-1/2d; -%% bottom hook -lft x3 = 0; bot y3 = -d; -pth1 := z1--z2..z3{-pdir}; -% bar -lft x6 = pcshiftx; top y6 = h; -x8 = x1; y8 = y1; -pth2 := z6{pdir}..{pdir}z8; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; % stem -draw pth2; % bar -ductus:=false; -penlabels(1,2,3,6,7,8,100); -endchar; % end "J" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{K} -% The letter `K'. -% \begin{macrocode} -cmchar "RTND letter K"; -beginchar("K", 2cap_sb#+caprat*hstretch*(7/8x_height#+jut#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -path pth[]; -numeric n[]; -pickup quill; -%% stem -n1 = h; % x-height -lft x1=lft x2=pcshiftx+2jut; -top y1=h; bot y2=0; -% bar -lft x26 = pcshiftx; top y26 = h; -x28 = x1; y28 = y1; -pth22 := z26{pdir}..{pdir}z28; -%% top arm -%%z3=(x1,1/2n1); -x3 = x1; top y3 = 1/2n1; -rt x5=5/8[x1,w-pcshiftx]; top y5=n1; -x4=1/2[x3,x5]; top y4=n1; -pth1 := z3{pdir}..z5{up}; -%% lower arm -pth2 := (rt x1,0)--(rt x1,h); -z13 = pth1 intersectionpoint pth2; -pickup threequarterquill; -lft x14 = x13; bot y14 = y13; -rt x7=w-pcshiftx; bot y7=0; -pickup quill; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % stem -%draw_clubserif(1,2,0.5); -draw_roundserif(2,1,srad); -draw pth22; -draw pth1; % upper arm -pickup threequarterquill; -draw z14{-ppdir}..z7{right}; % lower arm -pickup quill; -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 "RTND letter L"; -beginchar("L", 2cap_sb#+caprat*hstretch*(thick#+5jut#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -path pth[]; -pickup quill; -% stem -lft x1= pcshiftx + 3jut; top y1=h; -lft x2= pcshiftx; bot y2 =0; -pth1 := z1{down}..{-pdir}z2; -% bar -lft x6 = pcshiftx; top y6 = h; -x8 = x1; y8 = y1; -pth2 := z6{pdir}..{pdir}z8; -% foot -x3 = x2; y3 = y2; -rt x5 = w - pcshiftx; bot y5 = 0; -pth3 := z3{pdir}..{pdir}z5; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; % stem -draw pth2; % bar -draw pth3; % foot -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,100); -endchar; % end "L" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{M} -% The letter `M'. -% \begin{macrocode} -cmchar "RTND letter M"; -beginchar("M", 2cap_sb#+caprat*hstretch*(x_height#+2jut#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric n[]; -path pth[]; -pickup quill; -%% left stem -lft x1=pcshiftx+jut; top y1=h; -x2'=x1; bot y2'=0; -%% start of bowl -x13=x1; y13=3/4h; -%% bottom of left, right and middle stems -rt x6' = w -pcshiftx - jut; y6'=y2'; -z4 = 1/2[z2',z6']; -x6 = 1/2[x4,x6']; bot y6 = -thick; -rt x2 = lft x4; bot y2 = 0; -%% top of middle and right stems -x3=x4; y3=y1; -x5=x6'; y5=y13; -%% top of bowls -x14=2/3[x13,x3]; top y14 = h; -x33=x4; y33=y13; -x34=2/3[x33,x5]; y34 = y14; -%%ductus:=true; -if ductus: - pickup stylus; -fi -%draw_tstem(1,2,srad); % left half -%draw_flatserif(1,2,srad); -%draw_roundserif(2,1,srad); -%draw z13{pdir}..z14{right}..z33{down}--z4; % middle -draw z2..z13..{right}z14..z33{down}--z4; -draw_roundserif(4,3,srad); -%%draw z33{pdir}..z34{right}..z5{down}--z6; -%%draw_roundserif(6,5,srad); -draw z33{pdir}..z34{right}..z5{down}..{-pdir}z6; % rightmost -ductus:=false; -penlabels(1,2,2',3,4,5,6,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 "RTND letter N"; -beginchar("N", 2cap_sb#+caprat*hstretch*(5/8x_height#+2jut#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -pickup quill; -%% left stem -lft x1=pcshiftx+jut; top y1=h; -x2=x1; bot y2=0; -% start of bowl -x13=x1; y13=3/4h; -%% right stem -rt x4 = w-pcshiftx-jut; y4=y2; -x3 = x4; y3 = y13; -% top of bowl -x14 = 2/3[x13,x3]; top y14 = h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % left stem -draw_flatserif(1,2,srad); -draw_roundserif(2,1,srad); -draw z13{pdir}..z14{right}..z3{down}--z4; -draw_roundserif(4,3,srad); -ductus:=false; -penlabels(1,2,3,4,5,6,13,14,100); -endchar; % end "N" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{O} -% The letter `O'. -% \begin{macrocode} -cmchar "RTND letter O"; -beginchar("O", 2cap_sb#+caprat*hstretch*(7/8x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -path pth[]; -pickup quill; -lft x1=pcshiftx; rt x3=w-pcshiftx; y1=y3=h/2; -x2=x4=w/2; top y2=h+o; bot y4=-o; -pth1 := z2..z3..z4{left}.. tension 0.8 ..{up}z1..cycle; -%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; -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 "RTND letter P"; -beginchar("P", 2cap_sb#+caprat*hstretch*(3/4x_height#+jut#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric n[]; -path pth[]; -pickup quill; -%% stem -lft x1=lft x2=pcshiftx+2jut; -top y1=h; bot y2=0; -%% bowl -rt x5 = w-pcshiftx; -x4=1/2[x1,x5]; top y4 = h; -x6=x4; bot y6 = 5/16h; -y5=1/2[y4,y6]; -x7 = x1; y7 = 1/2[y6,y5]; -lft x3 = pcshiftx; top y3 = y1; -pth1 := z3{pdir}..z4..{down}z5..{left}z6..z7; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2; -draw_roundserif(2,1,srad) -draw pth1; -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 "RTND letter Q"; -beginchar("Q", 2cap_sb#+caprat*hstretch*(7/8x_height#+jut#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric n[]; -path pth[]; -pickup quill; -lft x1=pcshiftx; rt x3=w-pcshiftx-jut; y1=y3=h/2; -x2=x4=w/2; top y2=h+o; bot y4=-o; -pth1 := z2..z3..z4{left}.. tension 0.8 ..{up}z1..cycle; -% foot -z5 = point 1.5 of pth1; -rt x7 = w - pcshiftx; bot y7 = 0; -pth2 := z5..{right}z7; -%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; -draw pth2; -ductus:=false; -penlabels(1,2,3,4,5,6,7,100); -endchar; % end "Q" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{R} -% The letter `R'. -% \begin{macrocode} -cmchar "RTND letter R"; -beginchar("R", 2cap_sb#+caprat*hstretch*(3/4x_height#+jut#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric n[]; -path pth[]; -pickup quill; -%% stem -lft x1=lft x2=pcshiftx+2jut; -top y1=h; bot y2=0; -%% bowl -rt x5 = w-pcshiftx; -x4=1/2[x1,x5]; top y4 = h; -x6=x4; bot y6 = 6/16h; -y5=1/2[y4,y6]; -x7 = x1; -%y7 = 1/8[y6,y5]; -y7 = y6; -lft x3 = pcshiftx; top y3 = y1; -pth1 := z3{pdir}..z4..{down}z5..{left}z6..z7; -%% leg -x16 = x6; y16 = y6; -rt x18 = w - pcshiftx; bot y18 = 0; -pth2 := z16..{right}z18; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z2; -draw_roundserif(2,1,srad) -draw pth1; -draw pth2; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,100); -endchar; % end "R" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{S} -% The letter `S'. -% \begin{macrocode} - -cmchar "RTND letter S"; -beginchar("S", 2cap_sb#+caprat*hstretch*(7/8x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -numeric n[]; -pcshiftx := cap_sb; -pickup quill; - -% center -z50=(1/2w, 1/2h); -x60 = w-pcshiftx; z60 = z50 shifted (whatever*pdir); -x40 = pcshiftx; z40 = z50 shifted (whatever*pdir); -rt x5 = x50; top y5 = y50; -z54 = (lft x5, bot y5); -lft x6 = x50; bot y6 = y50; -z56 = (rt x6, top y6); - -% top bowl -z1 = 1/2[z56,z60]; -x3 = 1/2[x5,x1]; top y3 = h; - -% bottom bowl -z10 = 1/2[z54,z40]; -%x8 = 1/4[x6,x10]; -x8 = x56; -bot y8 = 0; - -%%ductus:=true; -if ductus: - pickup stylus; -fi -% top bowl -draw z5{ppdir}..z3..z1{-ppdir}; - -% bottom bowl -draw z6..z8{left}..z10{ppdir}; -pickup stylus; -draw z60--z10; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,10,11,17,20,26,27,28,40,50,54,56,60,100); -endchar; % end "S" - - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{T} -% The letter `T'. -% \begin{macrocode} -cmchar "RTND letter T"; -beginchar("T", 2cap_sb#+caprat*hstretch*(x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric n[]; -pickup quill; -%% bar -top y3=h; n3 := h - top y3; -lft x1 = pcshiftx; rt x2=w-pcshiftx; -%%top y1 = y3-n3; bot y2=y3+n3; -y1 = y3-n3; y2=y3; -n1 := w; % width of bowl -n2 := h; % height of bowl -x3=1/2[x1,x2]; -lft x4 = pcshiftx + 1/8n1; y4 = 1/2h; -x5=x3; bot y5 = 0; -rt x6 = pcshiftx + 3/4n1; top y6 = 1/4h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1{pdir}..z3..z2{pdir}; % bar -%draw z3..z4{down}..z5{right}..z6{pdir}; -draw z3--z5; -draw_roundserif(5,3,srad); -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 "RTND letter U"; -beginchar("U", 2cap_sb#+caprat*hstretch*(5/8x_height#+2jut#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric n[]; -pickup quill; -%% left stem -lft x1 = pcshiftx + jut; top y1 = h; -% start of bowl -x13=x1; y13=1/3h; -% right stem -rt x3=w-pcshiftx-jut; 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; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z13{down}..z14{right}..z33{pdir}; -draw_flatserif(1,13,srad); -draw_tstem(3,4,srad); % right stem -draw_flatserif(3,4,srad); -draw_roundserif(4,3,srad); -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 "RTND letter V"; -beginchar("V", 2cap_sb#+caprat*hstretch*(3/4x_height#+jut#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -pickup quill; -%% left stem -lft x1 = pcshiftx + jut; top y1 = h; -% start of bowl -x13=x1; y13=1/3h; -% right stem -rt x3=w-pcshiftx-jut; 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; -rt x23=w-pcshiftx; y23=3/4h; -lft x26=x14; top y26=h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z13{down}..z14{right}; % left stem -draw_flatserif(1,13,srad); -draw z14{pdir}..z23{up}..z26; - -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 "RTND letter W"; -beginchar("W", 2cap_sb#+caprat*hstretch*(x_height#+2jut#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -pickup quill; -%% left stem -lft x1 = pcshiftx + jut; top y1 = h; -% start of bowl -x13=x1; y13=1/3h; -% right stem -rt x5=w-pcshiftx-jut; y5=y1; -x6=x5; bot y6=0; -z53=1/4[z6,z5]; % start of bowl -% middle stem -z3 = 1/2[z1,z5]; -z33=(x3,y13); -% middle of bowl -x14=1/3[x1,x3]; bot y14=0; -% middle of right bowl -x34=1/3[x3,x5]; y34=y14; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1--z13{down}..z14{right}..z33{pdir}; % left -draw_flatserif(1,13,srad); -draw z3--z33{down}..z34{right}..z53{pdir}; % middle -draw_flatserif(3,33,srad); -draw_tstem(5,6,srad); % right stem -draw_flatserif(5,6,srad); -draw_roundserif(6,5,srad); -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 "RTND letter X"; -beginchar("X", 2cap_sb#+caprat*hstretch*(x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -path pth[]; -numeric n[]; -pcshiftx := cap_sb; -pickup quill; -n1 := w-2pcshiftx; % total width -n2 := thick; % triangle side -%% diag top left to bottom right -lft x1=pcshiftx; bot y1=2/3h; -x2=pcshiftx+1/7n1; top y2=h; -x5=pcshiftx+11/14n1; bot y5=-1/4d; -rt x6=pcshiftx+n1; top y6=1/6h; -z25 = 1/3[z2,z5]; -pth1 := z2{right}..z5{right}; -z251 = point 1/3 of pth1; -z252 = point 2/3 of pth1; -%% diag bottom left to top right -lft x10 = -w + 2pcshiftx; bot y10=-d; -x50=x5; top y50=h; -rt x60 = w -pcshiftx; bot y60=2/3h; -x40=pcshiftx+8/14n1; y40=h; - -x150=x2; bot y150 = 0; -lft x160 = pcshiftx; top y160=1/3h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1..z2{right}..z5{right}..z6; % top left to bottom right -%%draw z10{1/2pdir}..z25..z50{right}..z60; % bottom left to top right -draw z251..z50{right}..z60; % middle to top right -draw z252..z150{left}..z160; % middle to bottom left -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,10,25,251,252,40,50,150,60,160,100); -endchar; % end "X" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{Y} -% The letter `Y'. Modern. -% \begin{macrocode} -cmchar "RTND letter Y"; -beginchar("Y", 2cap_sb#+caprat*hstretch*(7/8x_height#), - caprat*x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := cap_sb; -path pth[]; -numeric n[]; -pickup quill; -%% left stem top -lft x1 = pcshiftx + jut; top y1 = h; -bot y3 = 0; -%% right stem -rt x5=w-pcshiftx; top y5 = h; -lft x9=-1/2w; bot y9 = -d; -pth1 := z9{right}..z5{up}; -pth2 := (0,y3)--(w,y3); -z99 = pth1 intersectionpoint pth2; -x3 = x99; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1{down}..z3; % left stem -draw_flatserif(1,3,srad); -draw pth1; % right stem -draw_flatserif(5,3,srad); -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 "RTND letter Z"; -beginchar("Z", 2cap_sb#+caprat*hstretch*(7/8x_height#), - caprat*x_height#, 0); -adjust_fit(0,0); -numeric n[]; -path pth[]; -pcshiftx := cap_sb; -pickup quill; -%% top bar ends -top y12 = h; -n1 := h - y12; -lft x1 = pcshiftx; rt x2 = w-pcshiftx; -%%y1 = y12-n1; y2=y12+n1; -top y1 = y12-n1; y2=y12; -x12 = 1/2[x1,x2]; -pth1 := z1{pdir}..z12{right}..z2{pdir}; -%% bottom bar ends -bot y34 = 0; -x3=x1; x4=x2; -%%y3=y34-n1; y4=y34+n1; -y3=y34-n1; bot y4=y34; -x34 = 1/2[x3,x4]; -pth2 := z3{pdir}..z34{right}..z4{pdir}; -%% diagonal -z5=z3; -%pth3 := z5--(3/4w,h+jut); -%z6 = pth3 intersectionpoint pth1; -z6 = z2; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; draw pth2; % bars -draw z5--z6; -ductus:=false; -penlabels(1,2,3,4,5,6,12,34,10o,10i,20o,20i,100); -endchar; % end "Z" - -% \end{macrocode} -% \end{routine} -% -% -% -% The end of this file -% \begin{macrocode} -% -% \end{macrocode} -% -% -% -% \subsection{The punctuation file} -% -% The main punctuation marks are defined in this file. -% -% \begin{macrocode} -%<*punct> -% RTNDPUNCT.MF This file contains punctuation marks - -% \end{macrocode} -% -% -% \begin{routine}{!} -% The `!' character, which had not been invented at this time. -% \begin{macrocode} - -cmchar "Exclamation mark"; -beginchar("!", 2sb#+hstretch*(thick#+trijut#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -x1=w/2; top y1 = h; -z3=(x1, 1/2dot_size); -z2=(x1, y3+3/2dot_size); -draw z1--z2; -draw_pdot(3,dot_size); -penlabels(1,2,3); - -endchar; % end of "!" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{?} -% The `?' character, which had not been invented at this time. -% \begin{macrocode} - -cmchar "Question mark"; -beginchar("?", 2sb#+hstretch*(3/4x_height#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pickup quill; -n1 := w-2pcshiftx; % actual character width -n2 := 1/3h; % height of top bowl -n3 := n2; % height of bottom bowl -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=3/4h; y2=1/4h; -draw_pdot(1,dot_size); -draw_pdot(2,dot_size); -penlabels(1,2); -endchar; % end ":" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{;} -% The `;' character. -% \begin{macrocode} - -cmchar "Semicolon"; -beginchar(";",2sb#+hstretch*(comma_width#+dot_size#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb; -x1=x2=w-pcshiftx-(0.5hstretch*dot_size); y1=3/4h; y2=1/2dot_size; -draw_pdot(1,dot_size); -draw_pcomma(2,dot_size,comma_width); -penlabels(1,2); -endchar; % end of ";" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{'} -% The `'' character. -% \begin{macrocode} - -cmchar "Apostrophe"; -beginchar("'",2sb#+hstretch*(comma_width#+dot_size#),4/3x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb; -x1=w-pcshiftx-(0.5hstretch*dot_size); y1=h; -draw_pcomma(1,dot_size,comma_width); -penlabels(1); -endchar; % end of "'" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{`} -% The ``' character. -% \begin{macrocode} - -cmchar "Reverse apostrophe"; -beginchar("`",2sb#+hstretch*(comma_width#+dot_size#),4/3x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb; -x1=pcshiftx+(0.5hstretch*dot_size); y1=h; -draw_plq(1,dot_size,comma_width); -penlabels(1); -endchar; % end of "`" - -% \end{macrocode} -% \end{routine} -% -% The end of this file. -% \begin{macrocode} -% -% \end{macrocode} -% -% -% \subsection{The ligatures and dashes file} -% -% The ligatured letters, punctuation marks and dashes are defined in this file. -% \begin{macrocode} -%<*lig> -% RTNDLIG.MF Uncial ligatured letters, punctation and dashes - -% \end{macrocode} -% First the ligtables. -% \begin{macrocode} - -ligtable "`": "`"=:oct"134"; -ligtable "'": "'"=:oct"042"; %% , "?" kern 2u#, "!" kern 2u#; - -ligtable "-": "-"=:oct"173"; -ligtable oct"173": "-"=:oct"174"; - -%%%%ligtable "c": "t"=:oct"014"; -%%%%ligtable "s": "t"=:oct"015"; - -% \end{macrocode} -% -% -% \begin{routine}{''} -% The `''' ligature. -% \begin{macrocode} - -cmchar "Closing quotes"; -beginchar(oct"042",2sb#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb; -x1=w-pcshiftx-(0.5hstretch*dot_size); y1=y2=h; -x2=x1-(2hstretch*dot_size); -draw_pcomma(1,dot_size,comma_width); % right -draw_pcomma(2,dot_size,comma_width); % left -penlabels(1,2); -endchar; % end of "''" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{``} -% The ```' ligature. -% \begin{macrocode} - -cmchar "Opening quotes"; -beginchar(oct"134",2sb#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb; -x1=pcshiftx+(0.5hstretch*dot_size); y1=y2=h; -x2=x1+(2hstretch*dot_size); -draw_plq(1,dot_size,comma_width); % left -draw_plq(2,dot_size,comma_width); % right -penlabels(1,2); -endchar; % end of "``" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{-} -% The `-' (hyphen) character. -% \begin{macrocode} - -cmchar "Hyphen"; -beginchar("-",sb#+hstretch*(0.8x_height#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb/2; -%%numeric alpha; alpha:=w/8; -%%pickup quill; -%%lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; -%%x11=lft x1+alpha/2; y11=top y1-0.5thin; -%%x12=rt x2; y12=bot y1+0.5thin; -%%draw_triangle(11,alpha); -%%draw_rutriangle(12,alpha); -pickup halfquill; -lft x21=pcshiftx+jut; rt x22=w-pcshiftx-jut; y21=y22=1/2h; -draw z21--z22; -draw_roundserif(21,22,srad); draw_flatserif(22,21,srad); -penlabels(1,2); -endchar; % end of "-" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{--} -% The `--' (en-dash) ligature. -% \begin{macrocode} - -cmchar "En dash"; -beginchar(oct"173",sb#+hstretch*(x_height#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb/2; -%%numeric alpha; alpha:=w/8; -%%pickup quill; -%%lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; -%%x11=lft x1+alpha/2; y11=top y1-0.5thin; -%%x12=rt x2; y12=bot y1+0.5thin; -%%draw_triangle(11,alpha); -%%draw_rutriangle(12,alpha); -pickup halfquill; -lft x21=pcshiftx+jut; rt x22=w-pcshiftx-jut; y21=y22=1/2h; -draw z21--z22; -draw_roundserif(21,22,srad); draw_flatserif(22,21,srad); -penlabels(1,2); -endchar; % end of "--" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{---} -% The `---' (em dash) ligature. The em dash is twice the width of the en dash. -% \begin{macrocode} - -cmchar "Em dash"; -beginchar(oct"174",sb#+hstretch*(2x_height#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb/2; -%%numeric alpha; alpha:=w/8; -%%pickup quill; -%%lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; -%%x11=lft x1+alpha/2; y11=top y1-0.5thin; -%%x12=rt x2; y12=bot y1+0.5thin; -%%draw_triangle(11,alpha); -%%draw_rutriangle(12,alpha); -pickup halfquill; -lft x21=pcshiftx+jut; rt x22=w-pcshiftx-jut; y21=y22=1/2h; -draw z21--z22; -draw_roundserif(21,22,srad); draw_flatserif(22,21,srad); -penlabels(1,2); -endchar; % end of "---" - -% \end{macrocode} -% \end{routine} -% -% -% -% \begin{routine}{&} -% The ampersand (which is really an `et' ligature). -% \begin{macrocode} - -cmchar "RTND ampersand"; -beginchar("&", 2sb#+hstretch*(5/4x_height#+2jut#), asc_height#, 0); -adjust_fit(0,0); -numeric n[]; -path pth[]; -pcshiftx:=sb; -pickup quill; -%% alpha looking part -n1 := w-2pcshiftx-jut; % actual letter width -n2 := h/ascratio; % x-height -n3 := 16/16n2; % height of alpha -x1 = w-pcshiftx; bot y1 = 0; -x3 = pcshiftx + 12/16n1; y3 = 1/2n3; -lft x5 = pcshiftx; y5 = y3; -x4 = x6 = 1/2[x5,x3]; -top y4 = n3; bot y6 = 0; -%rt x8 = w-pcshiftx-jut; top y8=h; -rt x8 = w-pcshiftx-jut; -top y8 = h - thick; -x9 = x8-2jut; x10-x8 = x8-x9; -y9=y10=y8; -%pth1 := z1{left}..z3..z4{left}..z5{down}..z6{right}..z3..z8{up}; -pth1 := z1{left}..z3..z4{left}.. tension 0.8 ..z5{down}.. - tension 0.8 ..z6{right}..z3..z8{up}; -%% loop -z21 = z5; -z25 = point 1.5 of pth1; -x23 = 1/2[x21,x25]; -%y23 = 7/8[y4,y8]; -top y23 = h; -pth2 := z21{up}..z23{right}..z25{down}; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; draw z8--z10; % alpha -draw pth2; % loop -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,10,16,17,18,19,21,22,23,24,25); -endchar; % end of "&" - -% \end{macrocode} -% \end{routine} -% -% -% -% The end of this file. -% \begin{macrocode} -% -% \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> -% RTNDDIG.MF Program file for Early Gothic digits -% - -% \end{macrocode} -% -% -% -% \begin{routine}{1} -% The digit `1'. -% \begin{macrocode} -cmchar "RTND digit 1"; -beginchar("1", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -x1=x2=w/2; -y1=h; bot y2=0; -%%ductus:=true; -draw_tstem(1,2,srad); -draw_flatserif(1,2,srad); -%draw_roundserif(2,1,srad); -%draw_flatserif(2,1,srad); -draw_flat_foot(2); -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,100); -endchar; % end "1" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{2} -% The digit `2'. -% \begin{macrocode} -cmchar "RTND digit 2"; -beginchar("2", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -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; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_wave(5,6,thin); % foot -%draw z1..z2{right}..z3{down}..{-pdir}z5wl; % curve -draw z1..z2{right}.. tension 0.8 ..z3{down}..{-pdir}z5wl; % curve -ductus:=false; -penlabels(1,2,3,4,5,6,100); -endchar; % end "2" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{3} -% The digit `3'. -% \begin{macrocode} -cmchar "RTND 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 "RTND digit 4"; -beginchar("4", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% the stem -x1=x2=w-pcshiftx-jut; -y1=h; bot y2=0; -% the crossbar -lft x3=pcshiftx; y3=0.33h; -rt x4=w-pcshiftx; y4=y3; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % main stem -draw_flat_foot(2); -draw_wave(3,4,thin); % crossbar -draw z3wl--z1; % diagonal -ductus:=false; -penlabels(1,2,3,4,100); -endchar; % end "4" - -% \end{macrocode} -% \end{routine} -% -% -% -% \begin{routine}{5} -% The digit `5'. -% \begin{macrocode} -cmchar "RTND digit 5"; -beginchar("5", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -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; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_wave(2,1,thin); % top squiggle -%draw z3{pdir}..z5{down}..z6{left}..z7; % curve -draw z3{pdir}..z5{down}.. tension 0.8 ..z6{left}..z7; % curve -draw z2wl--z3; % vertical -ductus:=false; -penlabels(1,2,3,4,5,6,7,100); -endchar; % end "5" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{6} -% The digit `6'. -% \begin{macrocode} -cmchar "RTND 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; -draw z1..z2{left}.. tension 0.8 ..z3{down}.. tension 0.8 ..z4{right}.. tension 0.8 - ..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 "RTND digit 7"; -beginchar("7", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% top bar -lft x1=pcshiftx; -rt x2=w-pcshiftx; -top y1=top y2=h; -% bowed leg -x4=w/2; bot y4=0; -x3=0.5[x2,x4]-3thin; y3=0.5[y2,y4]; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_wave(1,2,thin); % top bar -draw z1wr..z3..z4; -draw_flat_foot(4); -ductus:=false; -penlabels(1,2,3,4,5,6,100); -endchar; % end "7" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{8} -% The digit `8'. -% \begin{macrocode} -cmchar "RTND 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.. tension 0.8 ..z2.. tension 0.8 ..z3..z5.. - z11.. tension 0.8 ..z4.. tension 0.8 ..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 "RTND 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; -draw z1..z2{right}.. tension 0.8 ..z3{up}.. tension 0.8 ..z4{left}.. - tension 0.8 ..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 "RTND 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; -draw z1.. tension 0.8 ..z2.. tension 0.8 ..z3.. tension 0.8 ..z4.. tension 0.8 ..cycle; -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,100); -endchar; % end "0" - -% \end{macrocode} -% \end{routine} -% -% -% The end of this file. -% \begin{macrocode} -% -% \end{macrocode} -% -% -% \section{The font definition files} \label{sec:fd} -% -% The font comes in normal and bold weights only. -% -% \begin{macrocode} -%<*fdot1> -\DeclareFontFamily{OT1}{rtnd}{} - \DeclareFontShape{OT1}{rtnd}{m}{n}{ <-8.5> rtnd7 <8.5-15> rtnd10 <15-> rtnd17 }{} - \DeclareFontShape{OT1}{rtnd}{m}{sl}{ <-> sub * rtnd/m/n }{} - \DeclareFontShape{OT1}{rtnd}{m}{it}{ <-> sub * rtnd/m/n }{} - \DeclareFontShape{OT1}{rtnd}{m}{sc}{ <-> sub * rtnd/m/n }{} - \DeclareFontShape{OT1}{rtnd}{m}{u}{ <-> sub * rtnd/m/n }{} - \DeclareFontShape{OT1}{rtnd}{bx}{n}{ <-8.5> rtndb7 <8.5-15> rtndb10 <15-> rtndb17 }{} - \DeclareFontShape{OT1}{rtnd}{bx}{it}{ <-> sub * rtnd/bx/n }{} - \DeclareFontShape{OT1}{rtnd}{bx}{sl}{ <-> sub * rtnd/bx/n }{} - \DeclareFontShape{OT1}{rtnd}{b}{n}{ <-> sub * rtnd/bx/n }{} -% -% \end{macrocode} -% -% -% \begin{macrocode} -%<*fdt1> -\DeclareFontFamily{T1}{rtnd}{} - \DeclareFontShape{T1}{rtnd}{m}{n}{ <-8.5> rtnd7 <8.5-15> rtnd10 <15-> rtnd17 }{} - \DeclareFontShape{T1}{rtnd}{m}{sl}{ <-> sub * rtnd/m/n }{} - \DeclareFontShape{T1}{rtnd}{m}{it}{ <-> sub * rtnd/m/n }{} - \DeclareFontShape{T1}{rtnd}{m}{sc}{ <-> sub * rtnd/m/n }{} - \DeclareFontShape{T1}{rtnd}{m}{u}{ <-> sub * rtnd/m/n }{} - \DeclareFontShape{T1}{rtnd}{bx}{n}{ <-8.5> rtndb7 <8.5-15> rtndb10 <15-> rtndb17 }{} - \DeclareFontShape{T1}{rtnd}{bx}{it}{ <-> sub * rtnd/bx/n }{} - \DeclareFontShape{T1}{rtnd}{bx}{sl}{ <-> sub * rtnd/bx/n }{} - \DeclareFontShape{T1}{rtnd}{b}{n}{ <-> sub * rtnd/bx/n }{} -% -% \end{macrocode} -% -% \section{The package code} \label{sec:code} -% -% \subsection{The \Lpack{rotunda} package} -% -% The \Lpack{rotunda} 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{rotunda}[2002/12/30 v1.0 package for Rotunda 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}{\rtndfamily} -% Selects the \thisfont{} font family in the OT1 or T1 encoding. -% \begin{macrocode} -\ifx\Tienc\encodingdefault - \newcommand{\rtndfamily}{\usefont{T1}{rtnd}{m}{n}} -\else - \newcommand{\rtndfamily}{\usefont{OT1}{rtnd}{m}{n}} -\fi -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\textrtnd} -% Text command for the \thisfont{} font family. -% \begin{macrocode} -\DeclareTextFontCommand{\textrtnd}{\rtndfamily} -% \end{macrocode} -% \end{macro} -% -% The end of this package. -% \begin{macrocode} -% -% \end{macrocode} -% -% \subsection{The \Lpack{allrtnd} package} -% -% The \Lpack{allrtnd} 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{rotunda} package. -% \begin{macrocode} -%<*uscall> -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{allrtnd}[2002/12/30 v1.0 package for all Rotunda fonts] -\RequirePackage{rotunda} -% \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}{rtnd} -\renewcommand{\sfdefault}{rtnd} -\renewcommand{\ttdefault}{rtnd} -% \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}{\rtnd@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{\rtnd@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}{\rtnd@new@setfontsize} -% This is a macro that replaces the |\@setfontsize| macro which is called by -% the font size changing commands. -% \begin{macrocode} -\newcommand{\rtnd@new@setfontsize}[3]{% - \edef\@tempa{\def\noexpand\@tempb####1<#2}% - \@tempa>##2<##3\@nil{\def\rtnd@baselineskip@value{##2}}% - \edef\@tempa{\noexpand\@tempb\rtnd@baselineskip@table<#2}% - \@tempa><\@nil - \ifx\rtnd@baselineskip@value\@empty - \def\rtnd@baselineskip@value{#3}% - \fi - \rtnd@old@setfontsize{#1}{#2}\rtnd@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\rtnd@old@setfontsize=\@setfontsize - \let\@setfontsize=\rtnd@new@setfontsize} -\AtBeginDocument{\normalsize} -% \end{macrocode} -% -% -% The end of this package. -% \begin{macrocode} -% -% \end{macrocode} -% -% -% -% -% -% \Finale -% \PrintIndex -% -\endinput - -%% \CharacterTable -%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -%% Digits \0\1\2\3\4\5\6\7\8\9 -%% Exclamation \! Double quote \" Hash (number) \# -%% Dollar \$ Percent \% Ampersand \& -%% Acute accent \' Left paren \( Right paren \) -%% Asterisk \* Plus \+ Comma \, -%% Minus \- Point \. Solidus \/ -%% Colon \: Semicolon \; Less than \< -%% Equals \= Greater than \> Question mark \? -%% Commercial at \@ Left bracket \[ Backslash \\ -%% Right bracket \] Circumflex \^ Underscore \_ -%% Grave accent \` Left brace \{ Vertical bar \| -%% Right brace \} Tilde \~} - - diff --git a/Master/texmf-dist/source/latex/bookhands/rotunda/rotunda.ins b/Master/texmf-dist/source/latex/bookhands/rotunda/rotunda.ins deleted file mode 100644 index 8bd58e53132..00000000000 --- a/Master/texmf-dist/source/latex/bookhands/rotunda/rotunda.ins +++ /dev/null @@ -1,101 +0,0 @@ -%% -%% rotunda.ins -%% Copyright 1999 Peter R. Wilson -%% -%% This program is provided under the terms of the -%% LaTeX Project Public License distributed from CTAN -%% archives in directory macros/latex/base/lppl.txt. -%% -%% Author: Peter Wilson (CUA) -%% now at: peter.r.wilson@boeing.com -%% -%% This file will generate fast loadable files and documentation -%% driver files from the doc files in this package when run through -%% LaTeX or TeX. -%% -%% --------------- start of docstrip commands ------------------ -%% -\def\batchfile{rotunda.ins} -\input docstrip.tex -\preamble - - Copyright 1999 Peter R. Wilson - - This program is provided under the terms of the - LaTeX Project Public License distributed from CTAN - archives in directory macros/latex/base/lppl.txt. - -Author: Peter Wilson (CUA) - now at: peter.r.wilson@boeing.com - -\endpreamble - -\keepsilent - -%%% \Msg{*** Generating the driver file ***} -%%% \generateFile{rotunda.drv}{t}{\from{rotunda.dtx}{driver}} - -\Msg{*** Generating the Metafont files ***} - -\usepostamble\empty -\generateFile{rtnd7.mf}{t}{\from{rotunda.dtx}{base7}} -\generateFile{rtnd10.mf}{t}{\from{rotunda.dtx}{base10}} -\generateFile{rtnd17.mf}{t}{\from{rotunda.dtx}{base17}} -\generateFile{rtndb7.mf}{t}{\from{rotunda.dtx}{base7b}} -\generateFile{rtndb10.mf}{t}{\from{rotunda.dtx}{base10b}} -\generateFile{rtndb17.mf}{t}{\from{rotunda.dtx}{base17b}} -\generateFile{rtndl.mf}{t}{\from{rotunda.dtx}{min}} -\generateFile{rtndu.mf}{t}{\from{rotunda.dtx}{maj}} -\generateFile{rtndtitle.mf}{t}{\from{rotunda.dtx}{mfd}} -\generateFile{rtndpunct.mf}{t}{\from{rotunda.dtx}{punct}} -\generateFile{rtndlig.mf}{t}{\from{rotunda.dtx}{lig}} -\generateFile{rtnddig.mf}{t}{\from{rotunda.dtx}{dig}} - -\Msg{*** Generating the Font Definition files ***} -\usepostamble\defaultpostamble - -\generateFile{ot1rtnd.fd}{t}{\from{rotunda.dtx}{fdot1}} -\generateFile{t1rtnd.fd}{t}{\from{rotunda.dtx}{fdt1}} - -\Msg{*** Generating the LaTeX2e package files ***} - -\generateFile{rotunda.sty}{t}{\from{rotunda.dtx}{usc}} -\generateFile{allrtnd.sty}{t}{\from{rotunda.dtx}{uscall}} - -\Msg{***********************************************************} -\Msg{*} -\Msg{* To finish the installation you have to move the following} -\Msg{* files into directories searched by TeX:} -\Msg{*} -\Msg{* Move these into the font source area:} -\Msg{* \space\space rtnd7.mf} -\Msg{* \space\space rtnd10.mf} -\Msg{* \space\space rtnd17.mf} -\Msg{* \space\space rtndb7.mf} -\Msg{* \space\space rtndb10.mf} -\Msg{* \space\space rtndb17.mf} -\Msg{* \space\space rtndl.mf} -\Msg{* \space\space rtndu.mf} -\Msg{* \space\space rtndtitle.mf} -\Msg{* \space\space rtndpunct.mf} -\Msg{* \space\space rtndlig.mf} -\Msg{* \space\space rtnddig.mf} -\Msg{*} -\Msg{* Move these into the LaTeX macro area:} -\Msg{* \space\space ot1rtnd.fd} -\Msg{* \space\space t1rtnd.fd} -\Msg{* \space\space rotunda.sty} -\Msg{* \space\space allrtnd.sty} -\Msg{*} -\Msg{*} -\Msg{* To produce the documentation run the files ending with} -\Msg{* `.dtx' through LaTeX.} -\Msg{* Process any name.idx file by:} -\Msg{* \space\space\space\space makeindex -s gind.ist name} -\Msg{* Process any name.glo file by:} -\Msg{* \space\space\space\space makeindex -s gglo.ist -o name.gls name.glo} -\Msg{*} -\Msg{* Happy TeXing} -\Msg{***********************************************************} - -\endinput diff --git a/Master/texmf-dist/source/latex/bookhands/rustic/rustic.dtx b/Master/texmf-dist/source/latex/bookhands/rustic/rustic.dtx deleted file mode 100644 index f42b4d0df45..00000000000 --- a/Master/texmf-dist/source/latex/bookhands/rustic/rustic.dtx +++ /dev/null @@ -1,3778 +0,0 @@ -% \iffalse meta-comment -% -% rustic.dtx -% Copyright 1999 Peter R. Wilson -% -% This program is provided under the terms of the -% LaTeX Project Public License distributed from CTAN -% archives in directory macros/latex/base/lppl.txt. -% -% Author: Peter Wilson (CUA) (now at: peter.r.wilson@boeing.com) -% -% If you do not have the docmfp package (available from CTAN in -% tex-archive/macros/latex/contrib/supported), comment out the -% \usepackage{docmfp} line below and uncomment the line following it. -% -%<*driver> -\documentclass{ltxdoc} -\usepackage{docmfp} -%%%%%% \providecommand{\DescribeVariable}[1]{} \newenvironment{routine}[1]{}{} -\EnableCrossrefs -\CodelineIndex -\setcounter{StandardModuleDepth}{1} -\begin{document} - \DocInput{rustic.dtx} -\end{document} -% -% -% \fi -% -% \CheckSum{137} -% -% \DoNotIndex{\',\.,\@M,\@@input,\@addtoreset,\@arabic,\@badmath} -% \DoNotIndex{\@centercr,\@cite} -% \DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue} -% \DoNotIndex{\@input,\@ixpt,\@m} -% \DoNotIndex{\@minus,\@mkboth,\@ne,\@nil,\@nomath,\@plus,\@set@topoint} -% \DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb} -% \DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt} -% \DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt} -% \DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace} -% \DoNotIndex{\advance,\Alph,\alph} -% \DoNotIndex{\arabic,\ast,\begin,\begingroup,\bfseries,\bgroup,\box} -% \DoNotIndex{\bullet} -% \DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption} -% \DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass} -% \DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\endtrivlist} -% \DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup} -% \DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter} -% \DoNotIndex{\fbox} -% \DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef} -% \DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule} -% \DoNotIndex{\hsize,\hskip,\hspace,\hss,\if@tempswa,\ifcase,\or,\fi,\fi} -% \DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\fi,\fi,\fi,\fi,\fi} -% \DoNotIndex{\input} -% \DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark} -% \DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright} -% \DoNotIndex{\month,\newcommand,\newcounter,\newenvironment} -% \DoNotIndex{\NeedsTeXFormat,\newdimen} -% \DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number} -% \DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\p@} -% \DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip} -% \DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions} -% \DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright} -% \DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font} -% \DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily,\roman} -% \DoNotIndex{\roman,\secdef,\selectfont,\setbox,\setcounter,\setlength} -% \DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space} -% \DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase} -% \DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt} -% \DoNotIndex{\viipt,\vipt,\vskip,\vspace} -% \DoNotIndex{\wd,\xiipt,\year,\z@} -% -% \changes{v1.0}{1999/05/01}{First public release} -% \changes{v1.0a}{2001/01/02}{Fixed missing * in .fd files} -% -% ^^A \def\fileversion{v1.0} -% ^^A \def\filedate{1999/05/01} -% \def\fileversion{v1.0a} -% \def\filedate{2001/01/02} -% \newcommand*{\Lpack}[1]{\textsf {#1}} ^^A typeset a package -% \newcommand*{\Lopt}[1]{\textsf {#1}} ^^A typeset an option -% \newcommand*{\file}[1]{\texttt {#1}} ^^A typeset a file -% \newcommand*{\Lcount}[1]{\textsl {\small#1}} ^^A typeset a counter -% \newcommand*{\pstyle}[1]{\textsl {#1}} ^^A typeset a pagestyle -% \newcommand*{\Lenv}[1]{\texttt {#1}} ^^A typeset an environment -% \newcommand*{\AD}{\textsc{ad}} -% -% \title{The \Lpack{rustic} fonts\thanks{This -% file has version number \fileversion, last revised -% \filedate.}} -% -% \author{% -% Peter Wilson\\ -% Catholic University of America \\ -% Now at \texttt{peter.r.wilson@boeing.com} -% } -% \date{\filedate} -% \maketitle -% \begin{abstract} -% The \Lpack{rustic} and \Lpack{allrust} packages provide a set of -% Metafont Roman Rustic book-hands -% as used -% for manuscripts in the 1st to the 6th century. This is one in a series -% of manuscript fonts. -% \end{abstract} -% \tableofcontents -% -% \StopEventually{} -% -% -% -% \section{Introduction} -% -% The \Lpack{rustic} and \Lpack{allrust} packages provide -% a Metafont~\cite{METAFONT} version -% of the Roman Rustic manuscript book-hand that was in use between about the -% first and sixth centuries~\AD. It is part of a project to provide fonts -% covering the major manuscript hands between the first century~\AD{} and -% the invention of printing. The principal resources used in this project -% are listed in the Bibliography. -% -% This manual is typeset according to the conventions of the -% \LaTeX{} \textsc{docstrip} utility which enables the automatic -% extraction of the \LaTeX{} macro source files~\cite{GOOSSENS94}. -% The \Lpack{docmfp} package is used for documenting the Metafont portions -% of the distribution~\cite{DOCMFP}. -% -% Section~\ref{sec:usc} describes the usage of the package. -% Commented code for the fonts is in Sections~\ref{sec:mf} and~\ref{sec:fd} -% and source code for the packages is in Section~\ref{sec:code}. -% -% \subsection{Manuscript book-hands} -% -% Before the invention of printing all books were written by hand. The book-hands -% used by the scribes and copyists for the manuscripts changed as time -% went on. Table~\ref{tab:1} lists some of the common book-hands which were used -% between the 1st and 15th centuries. The later book-hands formed the basis of the -% fonts used by the early printers, which in turn form the basis of the printing -% fonts in use today. -% -% The manuscript book-hands were written with a broad nibbed reed or quill -% pen. Among the distinguishing characteristics of a hand, apart from the -% actual shape of the letters, are the angle of the pen (which controls the -% variation between thick and thin strokes) and the height of a letter compared -% to the width of the nib. The lower the ratio of the letter height to nib -% width, the more condensed is the script. The scripts also varied in their -% typical height. -% -% Table~\ref{tab:1} gives an `average' x-height for each -% script, which I obtained by measuring a sample of photographs of -% manuscripts written in the various hands. About a dozen examples -% of each book-hand were measured. This figure should not be taken too -% seriously. -% -% There was not a sharp division between the use of one hand and another. -% Many manuscripts exhibit a variety of hands in the same document. For example, -% the scribe writing in an Uncial hand may have used Roman Rustic letters -% for capitals. Usually the same pen was used for the two different scripts. -% -% Generally speaking, as a hand got older it became more embelished and -% calligraphic, 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 \\ -% Artificial Uncial & 6--10 & 4.2 & 3--6 & 10 & 1.40 \\ -% Half Uncial & 3--9 & 3.2 & 3--6 & 20--30 & 1.07 \\ -% 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. -% -% In the first century punctuation was virtually unknown, and typically there -% 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 Roman Rustic script} -% -% The Roman Rustic hand, which is a majuscule script, was in use for some five -% centuries until it was suceeded by the Uncial book-hands. Usually the -% lettering in a manuscript was all one size. If the scribe felt the need -% for `capital' letters then, using the same pen, would write a slightly larger -% letter. -% During the period when the -% script was used the alphabet only had 23 letters. I have included -% the missing J, U and W. -% -% Arabic numerals were unknown at this time, so all numbers were written -% using the roman numbering system. I have provided Roman Rustic versions of -% the arabic digits. -% -% Punctuation was non-existant. A dot at mid-height might be used as -% a word seperator, but that was all. Paragraphs had no indentation, neither -% was there any extra vertical space between paragraphs. Essentially, the -% script ran continuously with no spaces, even between words. -% -% The `leading' --- the amount of white space between lines --- was about -% the same height as the letters. -% -% -% \section{The \Lpack{rustic} and \Lpack{allrust} package} \label{sec:usc} -% -% The Roman Rustic font family is called |rust|. The font is supplied in both -% OT1 and T1 encodings. -% -% \subsection{The \Lpack{rustic} package} -% -% This is intended for the occasions when some short pieces of text have to be -% written in Roman Rustic while the majority of the document is in another font. -% The normal baselineskips are used. -% -% \DescribeMacro{\rustfamily} -% The |\rustfamily| declaration starts typesetting with the Roman Rustic fonts. -% Use of the Rustic font will continue until either there is another |\...family| -% declaration or the current group (e.g., environment) is closed. -% -% \DescribeMacro{\textrust} -% The command |\textrust{|\meta{text}|}| will typeset \meta{text} using the -% Roman Rustic fonts. -% -% \subsection{The \Lpack{allrust} package} -% -% This package is for when the entire document will be typeset with the -% Roman Rustic font. The baselineskips are set to those appropriate to the -% book-hand. -% -% This is a minimalist package. Apart from declaring Roman Rustic 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{allrust} package automatically loads the \Lpack{rustic} package, -% so the rustic font commands are available if necessary. -% -% -% -% \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 Rustic font comes in three sizes and also as a normal -% and a bold font. -% \begin{macrocode} -%<*base7|base10|base17|base7b|base10b|base17b> -%%%% RUST7.MF Roman Rustic at 7 point design size. -%%%% RUST10.MF Roman Rustic at 10 point design size. -%%%% RUST17.MF Roman Rustic at 17 point design size. -%%%% RUSTB7.MF Roman Rustic Bold at 7 point design size. -%%%% RUSTB10.MF Roman Rustic Bold at 10 point design size. -%%%% RUSTB17.MF Roman Rustic 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 - -%font_identifier:="RUST"; font_size 7pt#; -%font_identifier:="RUST"; font_size 10pt#; -%font_identifier:="RUST"; font_size 17.28pt#; -%font_identifier:="RUSTB"; font_size 7pt#; -%font_identifier:="RUSTB"; font_size 10pt#; -%font_identifier:="RUSTB"; font_size 17.28pt#; - -% \end{macrocode} -% -% \DescribeVariable{jutstretch} -% The scaling for minuscule serifs wrt 17pt size. -% \begin{macrocode} -% jutstretch:=1.19; -% jutstretch:=1.152; -% jutstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{stemstretch} -% The scaling for minuscule stem widths wrt 17pt size. -% \begin{macrocode} -% stemstretch:=1.50; -% stemstretch:=1.31; -% stemstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{caprat} -% The scaling for `capitals' wrt `lowercase'. This is pretty much a guess. -% \begin{macrocode} - caprat:=1.2; % ratio of capital height to minuscule height -% \end{macrocode} -% -% \DescribeVariable{cap_jutstretch} -% Scaling for majuscule serifs wrt 17pt size. -% \begin{macrocode} -% cap_jutstretch:=1.3; -% cap_jutstretch:=1.2; -% cap_jutstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{cap_stemstretch} -% Scaling for majuscule stem width wrt 17pt size. -% \begin{macrocode} -% cap_stemstretch:=1.45; -% cap_stemstretch:=1.31; -% cap_stemstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{bfudge} -% Letter width scaling for bold font wrt normal font. -% \begin{macrocode} -% bfudge:=1.0; -% bfudge:=1.2; -% \end{macrocode} -% -% \DescribeVariable{szfudge} -% Width scaling wrt 17pt size letter width. -% \begin{macrocode} -% szfudge:=1.18; -% szfudge:=1.0; -% szfudge:=1.0; -% \end{macrocode} -% -% \DescribeVariable{hstretch} -% Horizontal stretching factor. -% \begin{macrocode} - hstretch:=szfudge*bfudge; -% \end{macrocode} -% -% \DescribeVariable{carol_height} -% The x-height of the Carolingian minuscule font. -% \begin{macrocode} -% carol_height#:=108.5/36pt#; -% carol_height#:=155/36pt#; -% carol_height#:=268/36pt#; -% \end{macrocode} -% -% \DescribeVariable{vstretch} -% The height of this font wrt the Carolingian font. -% \begin{macrocode} - vstretch:=1.9; - -% \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{thickfudge} -% The reciprocal of the font height in nib widths. Normal font height -% is 6 nib widths and the bold font height is 4.5 nib widths. -% \begin{macrocode} -% thickfudge:=1/6; -% thickfudge:=1/4.5; -% \end{macrocode} -% -% \DescribeVariable{thinfudge} -% The nib sharpness. -% \begin{macrocode} -thinfudge:=1/6; -% \end{macrocode} -% -% \DescribeVariable{thick} -% The maximum nib width. -% That is, the width of the thickest line that can be penned. -% \begin{macrocode} -thick#:=stemstretch*thickfudge*x_height#; % max pen breadth -% \end{macrocode} -% -% \DescribeVariable{thin} -% The nib thinness. -% That is, the width of the thinnest line that can be penned. -% \begin{macrocode} -thin#:=thinfudge*thick#; -% \end{macrocode} -% -% \DescribeVariable{pangle} -% The pen angle (in degrees). -% \begin{macrocode} -pangle:=45; % pen angle -% \end{macrocode} -% -% \DescribeVariable{u} -% The unit width. The CMR values are used. -% \begin{macrocode} -% u#:=15.5/36pt#; -% u#:=17.9/36pt#; -% u#:=20/36pt#; -% u#:=23/36pt#; -% u#:=32.5/36pt#; -% 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 -% cap_serif_fit#:=3.5/36pt#; % extra sidebar near uppercase serifs -% cap_serif_fit#:=5/36pt#; % extra sidebar near uppercase serifs -% cap_serif_fit#:=8/36pt#; % extra sidebar near uppercase serifs -% letter_fit#:=0pt#; % extra space added to all sidebars -% letter_fit#:=0pt#; % extra space added to all sidebars -% letter_fit#:=-0.1pt#; % extra space added to all sidebars - -% \end{macrocode} -% -% -% \DescribeVariable{asc_height} -% The height of lower case ascenders. -% \begin{macrocode} - asc_height#:=6/5x_height#; -% \end{macrocode} -% -% \DescribeVariable{desc_depth} -% The depth of lower case descenders (the tail of the Q). -% \begin{macrocode} - desc_depth#:=2/3thick#; -% \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. -% \begin{macrocode} - fig_width#:=hstretch*(3/5x_height#); -% \end{macrocode} -% -% \DescribeVariable{cap_height} -% The height of capital letters. -% \begin{macrocode} - cap_height#:=caprat*asc_height#; % height of caps -% \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} -% rule_thickness#:=.34pt#; -% rule_thickness#:=.4pt#; -% rule_thickness#:=.6pt#; - -% \end{macrocode} -% -% \DescribeVariable{jutfudge} -% Controls the protrusion of serifs. -% \begin{macrocode} -jutfudge:= 5/8; -% \end{macrocode} -% -% \DescribeVariable{jut} -% The lowercase serif protrusion. -% \begin{macrocode} -jut#:=jutstretch*jutfudge*thick#; -% \end{macrocode} -% -% \DescribeVariable{hookjut} -% The horizontal protrusion of hook serifs. -% \begin{macrocode} -hookjut#:=1/2jut#; -% \end{macrocode} -% -% \DescribeVariable{footjut} -% Half the horizontal width of a foot stroke, assuming vertical ends. -% \begin{macrocode} -footjut#:=2/20x_height#; -% \end{macrocode} -% -% \DescribeVariable{extra_fhjut} -% Half the extra horizontal width of a foot or head stroke, taking sloped -% ends into account. Thus the maximum overall horizontal width is -% |2(footjut+extra_fhjut)|. -% \begin{macrocode} -extra_fhjut#:=1/3thick#; -% \end{macrocode} -% -% \DescribeVariable{stem_offset} -% The x offset of the center of a left (stem + foot) from the left of the -% character box. -% \begin{macrocode} -stem_offset#:=8/12thick#+thin#; -% \end{macrocode} -% -% \DescribeVariable{srad} -% |srad| with |0 < srad < 1| controls the serif radius. -% \begin{macrocode} -srad:=0.5; -% \end{macrocode} -% -% \DescribeVariable{wiggle} -% Controls the amount of wiggle in a |squiggle|, with |0 <= wiggle <1|. -% \begin{macrocode} -wiggle:= 0.05; -% \end{macrocode} -% -% \DescribeVariable{bowoff} -% Controls the amount of bow in a |bow|, with |0 <= bowoff <1|. -% \begin{macrocode} -bowoff:= 0.05; -% \end{macrocode} -% -% \DescribeVariable{o} -% Amount of overshoot for curves (as in an `o'). Use CMR values. -% \begin{macrocode} -% o#:=5/36pt#; -% o#:=8/36pt#; -% o#:=10/36pt#; - -% \end{macrocode} -% -% \DescribeVariable{thick_tltobr} -% A vector of the slope of thick diagonals from the top left point to the -% bottom right point. Use as: -% |ztl-zbr = whatever*thick_tltobr|. -% \begin{macrocode} -pair thick_tltobr; -thick_tltobr:=(-2,5); - -% \end{macrocode} -% -% \DescribeVariable{slant} -% |slant| is the amount the font slopes to the right. -% \begin{macrocode} -slant:=0; % tilt ratio $(\Delta x/\Delta y)$ - -% \end{macrocode} -% -% \DescribeVariable{monospace} -% We are generating a variable-width font. -% \begin{macrocode} -monospace:=false; % should all characters have the same width? - -% \end{macrocode} -% -% \DescribeVariable{dot_size} -% The size of (punctuation) dots. -% \begin{macrocode} -dot_size#:=5thin#; % size of dots -% \end{macrocode} -% -% \DescribeVariable{comma_width} -% The horizontal width of a comma. -% \begin{macrocode} -comma_width#:=2.5dot_size#; - -% \end{macrocode} -% -% Finally, call the driver file for the font. -% \begin{macrocode} -generate rusttitle %% switch to the driver file - -% \end{macrocode} -% -% The end of this code section. -% \begin{macrocode} -% -% \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 RUSTTITLE.MF for the Roman Rustic 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}{rustic_font_setup} -% This macro contains the set up for the fonts. -% \begin{macrocode} - -def rustic_font_setup= - define_pixels(side,half_height,carol_height,comma_width); - define_pixels(u,dot_size,letter_size,cap_height,width_adj,serif_fit, - cap_serif_fit,jut,cap_jut); - define_pixels(hookjut,footjut,stem_offset,extra_fhjut,fig_width); - define_whole_pixels(letter_fit); - define_whole_vertical_pixels(body_height,asc_height,cap_height,x_height, - desc_depth,body_depth,fig_height); - define_corrected_pixels(o); - define_blacker_pixels(thick,thin); - let adjust_fit = normal_adjust_fit; -% \end{macrocode} -% \DescribeVariable{stylus} -% The pen for drawing the thinnest lines is |stylus|. -% \begin{macrocode} - pickup pencircle scaled thin; - stylus:=savepen; -% \end{macrocode} -% \DescribeVariable{quill} -% The normal calligraphic pen is |quill|. -% \begin{macrocode} - pickup pencircle xscaled thick yscaled thin rotated pangle; - quill:=savepen; -% \end{macrocode} -% \DescribeVariable{bowpen} -% The pen for drawing a bow is |bowpen|. -% \begin{macrocode} - pickup pencircle xscaled thick yscaled thin rotated ((1/2(pangle+90))); - bowpen:=savepen; - numeric pcshiftx#; % x value of LHS of box wrt origin of char box - define_pixels(pcshiftx); - numeric sqxside#; % x size of the square - numeric sqyside#; % y size of the square - define_pixels(sqxside,sqyside); - -enddef; % end of rustic_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{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_rusticstem} -% A macro to draw a rustic thin vertical stem. -% |draw_rusticstem(1,2)| draws the stem with top at |z1| and bottom at |z2|. -% \begin{macrocode} - -def draw_rusticstem(suffix $, $$)= - numeric alpha, beta; alpha:=0.5thick; - beta:=60; % the ending angle - pair rustic[]; - xpart rustic1=x$$; ypart rustic1=y$$+alpha*sind(beta); - z$a=1/2[z$,rustic1]; - z$b=2/3[z$,rustic1]; - z$c=5/6[z$,rustic1]; - z$d=rustic1; - z$ar=z$a shifted (alpha*up); z$al=z$a shifted (alpha*down); - - rustic2:=z$b shifted (alpha*right); - z$br=rustic2 rotatedaround(z$b,1/4[90,beta]); z$bl=z$br rotatedaround(z$b,180); - - rustic2:=z$c shifted (alpha*right); - z$cr=rustic2 rotatedaround(z$c,1/2[90,beta]); z$cl=z$cr rotatedaround(z$c,180); - - rustic2:=z$d shifted (alpha*right); -%% z$dr=rustic2 rotatedaround(z$d,60); z$dl=z$dr rotatedaround(z$d,180); - rustic3=rustic2 rotatedaround(z$d,beta); - x$dr=xpart rustic3; y$dr=ypart rustic3 - thin; - z$dl=z$dr rotatedaround(z$d,180); - pen oldpen; oldpen:=currentpen; - pickup stylus; - draw z$--z$al; -%% filldraw z$ar..z$br..z$cr..z$dr--z$dl..z$cl..z$bl..z$al--cycle; - filldraw z$ar..z$br..z$cr..z$dr--z$dl..z$bl..z$al--cycle; - pickup oldpen; -%% labels($a,$al,$ar,$b,$bl,$br,$c,$cl,$cr,$dl,$dr); - labels($a,$b,$c,$d,$dl,$dr); -enddef; % end of draw_rusticstem - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{draw_hserif} -% A macro to draw a hooked serif. |draw_hserif(1,2,f)| uses the |stylus| pen to -% draw a serif of extent |hookjut| at |z1| to the left of the line from |z2| -% to |z1|. The -% radius is controlled by |f|, where $0y$$: - top_serif := true; - z$c=z$b shifted (-bjut*pdir); - else: - if y$=y$$: - if x$ -% \end{macrocode} -% -% \subsection{The code for normal letters} -% -% The following code is for the normal alphabetic characters. -% -% \begin{macrocode} -%<*min> -% RUSTL.MF Program file for normal rustic letters -% - - -% \end{macrocode} -% -% -% \begin{routine}{a} -% The letter `a'. -% \begin{macrocode} -cmchar "Rustic letter a"; -beginchar("a", 2u#+hstretch*(4/5x_height#+jut#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% right leg -z1-z2=whatever*thick_tltobr; -top y1=h; -rt x2=w-pcshiftx-jut; bot y2=0; -% for the left leg -z3=9/10[z2,z1]; -x4=pcshiftx+footjut+extra_fhjut; bot y4=0; -% code for foot -x7=x4; y7=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_istem(1,2,srad); % right leg -draw_bow(3,4,bowoff); % left leg -draw_foot(7); % left leg foot -ductus:=false; -penlabels(1,2,3,4,5,6,100); -endchar; % end "a" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{b} -% The letter `b'. This is a tall letter -% \begin{macrocode} -cmchar "Rustic letter b"; -beginchar("b", 2u#+hstretch*(7/10x_height#), 11/10x_height#, 0); -adjust_fit(0,0); -pcshiftx := u+hookjut+thin; -pickup quill; -% stem -x1=x2=pcshiftx; -y1=h; y2=0; -% bottom bowl -rt x3=x1; bot y3=thin; -rt x5=w-u; y5 = 1/6h; -x4=0.4[x2,x5]; y4=0; -lft x6=x2; y6=2/3h; -% top bowl -z7=z6; -x8=0.25[x4,x5]; top y8=y1; -x9=0.5[x1,x8]; bot y9=h; -z10=z1; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_rusticstem(1,2); % the stem -draw z3..z4{right}..z5..{dir(pangle+90)}z6; % bottom bowl -draw z7{pdir}..z8{up}..z9{left}..z10; % top bowl -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,10,100); -endchar; % end "b" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{c} -% The letter `c'. -% \begin{macrocode} -cmchar "Rustic letter c"; -beginchar("c", 2u#+hstretch*(3/5x_height#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -lft x1=pcshiftx; rt x3=pcshiftx+sqxside; y1=y3=h/2; -x2=x4=w/2; top y2=h; bot y4=0; -rt x5= rt x6=w-pcshiftx; -top y5=1/5h; -top y6=4/5h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z5{-pdir}..{left}z4..z1..z2..z6; -ductus:=false; -penlabels(1,2,3,4,5,6,100); -endchar; % end "c" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{d} -% The letter `d'. -% \begin{macrocode} -cmchar "Rustic letter d"; -beginchar("d", 2u#+hstretch*(3/5x_height#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -x1=x2=pcshiftx+hookjut+thin; -top y1=h; y2=0; -% bowl -rt x3=x1; bot y3=thin; -rt x5=w-u; y5 = 2/5h; -x4=0.4[x2,x5]; y4=0; -x6=x1; top y6=h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_rusticstem(1,2); % stem -draw z3..z4{right}..z5{up}..z6; % bowl -ductus:=false; -penlabels(0,1,2,3,4,5,6,100); -endchar; % end "d" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{e} -% The letter `e'. -% \begin{macrocode} -cmchar "Rustic letter e"; -beginchar("e", 2u#+hstretch*(4/10x_height#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% stem -x1=x2=pcshiftx+stem_offset; -top y1=h; y2=0; -% top bar -rt x3=x1; x4=w-u; -top y3=top y4=h; -% middle bar -x5=x3; x6=x4; -y5=y6=3/5h; -% foot -x7=x3; x8=x4; -bot y7= bot y8=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_rusticstem(1,2); % stem -draw_squiggle(3,4,wiggle,srad); % top bar -draw_squiggle(5,6,wiggle,srad); % middle bar -draw_squiggle(7,8,wiggle,srad); % bottom bar -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,100); -endchar; % end "e" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{f} -% The letter `f'. This is a tall letter -% \begin{macrocode} -cmchar "Rustic letter f"; -beginchar("f", 2u#+hstretch*(4/10x_height#), 6/5x_height#, 0); -adjust_fit(0,0); -pcshiftx := u +stem_offset; -pickup quill; -% stem -x1=x2=pcshiftx; -top y1=h; y2=0; -% top bar -x3=x1; x4=w-u; -top y3=top y4=h; -% middle bar -x5=x3; x6=x4; -y5=y6=2/3h; -% foot -x7=x3; x8=x4; -bot y7= bot y8=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_footstem(1,2); % stem -draw_squiggle(3,4,wiggle,srad); % top bar -draw_squiggle(5,6,wiggle,srad); % middle bar -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,100); -endchar; % end "f" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{g} -% The letter `g'. Like a `c' but bottom curls inwards. -% \begin{macrocode} -cmchar "Rustic letter g"; -beginchar("g", 2u#+hstretch*(3/5x_height#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -lft x1=pcshiftx; rt x3=pcshiftx+sqxside; y1=y3=h/2; -x2=x4=w/2; top y2=h; bot y4=0; -rt x5= rt x6=w-pcshiftx; -top y5=1/5h; -top y6=4/5h; -lft x7=w/2; y7=h/2; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z7..z5{down}..{left}z4..z1..z2..z6; % the bowl -ductus:=false; -penlabels(1,2,3,4,5,6,7,100); -endchar; % end "g" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{h} -% The letter `h'. -% \begin{macrocode} -cmchar "Rustic letter h"; -beginchar("h", 2u#+hstretch*(4/5x_height#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -y100 = sqyside/2; x100 = pcshiftx+y100; % square center -pickup quill; -% left stem and foot -x1=x2=pcshiftx+stem_offset; -y1=h; y2=0; -% bar -y5=y6=7/10h; -lft x5=pcshiftx; rt x6=w-pcshiftx; -% right stem -rt x7=w-pcshiftx; top y7=h; -x8=x7; bot y8=0; -x9=x8-2thin; y9=0.5[y8,y7]; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_footstem(1,2); % left stem -draw_hserif(1,2,srad); % its serif -draw_squiggle(5,6,wiggle,srad); % the bar -draw z7..z9..z8; % right stem -ductus:=false; -penlabels(1,1',2,2',3,4,5,6,7,7',8,8',99,99',100); -endchar; % end "h" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{i} -% The letter i. -% \begin{macrocode} -cmchar "Rustic letter i"; -beginchar("i", 2u#+hstretch*(2footjut#+hookjut#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -x1=x2=pcshiftx+stem_offset; -y1=h; y2=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_footstem(1,2); % stem and foot -draw_hserif(1,2,srad); % serif -ductus:=false; -penlabels(1,2,3,4,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 "Rustic letter j"; -beginchar("j", 4u#+hstretch*(3/5x_height#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := 3u; -pickup quill; -% stem -x1=x2=pcshiftx+2/3(w-4u); -y1=h; y2=0; -% top bar -rt x4=w-u; top y4=h; -x1-x3 = x4-x1; y3=y4; -% bowl -rt x5 = lft x3; -top y5=2/5h; -x7=x2; bot y7=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_rusticstem(1,2); % stem -draw_squiggle(3,4,wiggle,srad); % top bar -draw z7{left}..{pdir}z5; % bowl -ductus:=false; -penlabels(1,2,3,4,5,6,7,100); -endchar; % end "j" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{k} -% The letter `k'. -% \begin{macrocode} -cmchar "Rustic letter k"; -beginchar("k", 2u#+hstretch*(x_height#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% the stem and its foot -x1=x2=pcshiftx+stem_offset; -y1=h; y2=0; -lft x13=pcshiftx; bot y13=0; -x2-x13=x14-x2; y14=y13; -% upper diagonal and its top -x3=x1; y3=h/2; -x4=x1+y3; top y4=h; -x5=x4-jut; x6-x4=x4-x5; -top y5=top y6=h; -x24=x4; y24=h; -% bottom leg -lft x7=x3; bot y7=y3; -rt x9=w-pcshiftx; bot y9=0; -x8=0.5[x7,x9]; y8=0.7[y7,y9]; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_footstem(1,2); % the stem -draw_hserif(1,2,srad); % its serif -draw z3--z4; % upper diagonal -draw_head(24); -draw z7..z8..z9; % bottom leg -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,100); -endchar; % end "k" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{l} -% The letter `l'. This is a tall letter. -% \begin{macrocode} -cmchar "Rustic letter l"; -beginchar("l", 2u#+hstretch*(1/2x_height#), 6/5x_height#, 0); -adjust_fit(0,0); -pcshiftx := u+hookjut; -pickup quill; -x1=x2=pcshiftx+thin+hookjut; -y1=h; y2=0; -rt x3=x1; rt x4=w-u; -bot y3= bot y4=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_rusticstem(1,2); % stem -draw_hserif(1,2,srad); % serif -draw_squiggle(3,4,wiggle,srad); % foot -ductus:=false; -penlabels(1,2,3,4,100); -endchar; % end "l" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{m} -% The letter `m'. Like 2 As stuck together. -% \begin{macrocode} -cmchar "Rustic letter m"; -beginchar("m", 2u#+hstretch*(6/5x_height#+jut#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% right a thick diag -z11-z12=whatever*thick_tltobr; -rt x12=w-pcshiftx-jut; bot y12=0; -top y11=h; -% left a thin diag -pickup bowpen; -x4=pcshiftx+footjut+extra_fhjut; bot y4=thin; -z3=9/10[z2,z1]; -pickup quill; -x7=x4; y7=0; % for the foot -% the two thin diags are parallel, and just shifted horizontally -z13=9/10[z12,z11]; -z3-z4=z13-z14; y4=y14; -% similarly for the two thick diags -z1-z2=z11-z12; % y2=y12; -x12-x2=1/3w; -%%ductus:=true; -if ductus: - pickup stylus; -fi -% draw left a -draw_istem(1,2,srad); % right leg -draw_bow(3,4,bowoff); % left leg -draw_foot(7); % left leg foot -% draw right a -draw_istem(11,12,srad); -draw_bow(13,14,bowoff); -ductus:=false; -penlabels(1,2,3,4,5,6,11,12,13,14,100); -endchar; % end "m" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{n} -% The letter `n'. -% \begin{macrocode} -cmchar "Rustic letter n"; -beginchar("n", 2u#+hstretch*(9/10x_height#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% left stem and foot -x1=x2=pcshiftx+stem_offset; -y1=h; y2=0; -% right stem -x5=x6=w-u-hookjut-thin; -y5=y1; y6=y2; -% diagonal -x7=x1; y7=h; -x9=x6; bot y9=0; -x8=0.5[x7,x9]; y8=0.6[y7,y9]; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_footstem(1,2); % left stem -draw_rusticstem(5,6); % right stem -draw_hserif(5,6,srad); % its serif -draw z7..z8..z9; % diagonal -draw_serif(9,8,srad); % its bottom serif -ductus:=false; -penlabels(1,2,5,6,7,8,9,100); -endchar; % end "n" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{o} -% The letter `o'. -% \begin{macrocode} -cmchar "Rustic letter o"; -beginchar("o", 2u#+hstretch*(3/5x_height#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -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 "o" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{p} -% The letter `p'. -% \begin{macrocode} -cmchar "Rustic letter p"; -beginchar("p", 2u#+hstretch*(5/10x_height#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% stem and foot -x1=x2=pcshiftx+stem_offset; -top y1=h; y2=0; -% bowl -lft x7=x2; y7=1/2h; % y7=2/3h; -rt x8=w-pcshiftx; top y8=y1; -z10=z1; -x9=0.5[x1,x8]; y9=h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_footstem(1,2); % stem -draw z7{pdir}..z8{up}..z9{left}..z10; % top bowl -ductus:=false; -penlabels(1,2,7,8,9,10,100); -endchar; % end "p" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{q} -% The letter `q'. -% \begin{macrocode} -cmchar "Rustic letter q"; -beginchar("q", 2u#+hstretch*(3/5x_height#), x_height#, 2/3thick#); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% the O shape -lft x1=pcshiftx; rt x3=w-pcshiftx; y1=y3=h/2; -x2=x4=w/2; top y2=h+o; bot y4=-o; -% the tail -path p; -p = z4{right}..{up}z3; -z5 = directionpoint pdir of p; -x7= x4+w/2; top y7=0; -x6=0.5[x5,x7]; y6=y7; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1..z2..z3..z4..cycle; % O shape -draw z5..z6..z7; % the tail -ductus:=false; -penlabels(0,1,2,3,4,5,6,6',7,100); -endchar; % end "q" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{r} -% The letter `r'. -% \begin{macrocode} -cmchar "Rustic letter r"; -beginchar("r", 2u#+hstretch*(4/5x_height#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -numeric alpha, beta; -alpha:=thin*(xpart pdir); beta:=thin*(ypart pdir); -pickup quill; -% stem -x1=x2=pcshiftx+stem_offset; -top y1=h; y2=0; -% bowl -lft x7=x2; bot y7=1/2h; -rt x8=5/8w; top y8=y1; -z10=z1; -x9=0.5[x1,x8]; y9=h; -% leg -z11=z7 shifted (thin*pdir); -rt x13=w-pcshiftx; bot y13=0; -x12=0.5[x11,x13]; y12=0.7[y11,y13]; -% points defining the leg profile -x11l=lft x11 + alpha; y11l=bot y11 + beta; -x11r= rt x11 - alpha; y11r=top y11 - beta; -x12l=0.6[lft x12, x12]; y12l=0.6[bot y12, y12]; -x12r=0.6[rt x12, x12]; y12r=0.6[top y12, y12]; -x14=w-pcshiftx-thin; y14=thin; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_footstem(1,2); % stem and foot -draw z7{pdir}..z8{up}..z9{left}..z10; % bowl -pickup stylus; % drawing the leg -filldraw z11l..z12l..{right}z14 & z14{left}..z12r..z11r--cycle; -ductus:=false; -penlabels(1,2,7,8,9,10,11,12,14,100); -endchar; % end "r" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{s} -% The letter `s'. -% \begin{macrocode} -cmchar "Rustic letter s"; -beginchar("s", 2u#+hstretch*(3/5x_height#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% for the foot -lft x7=pcshiftx+extra_fhjut; bot y7=0; -% the S curve -rt x1=w-pcshiftx; top y1=h-thin; -lft x3=pcshiftx+extra_fhjut; y3=0.75h; -x4=0.5[x1,x3]; y4=0.5[y3,y5]; -x2=x4; top y2=h; -x5=x1; y5=0.3h; -x6=0.75w; bot y6=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1..z2{left}..z3{down}..z4..z5{down}..{-pdir}z6; % S curve -draw_squiggle(7,6,wiggle,srad); % base -ductus:=false; -penlabels(1,2,3,4,5,6,7,100); -endchar; % end "s" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{t} -% The letter `t'. -% \begin{macrocode} -cmchar "Rustic letter t"; -beginchar("t", 2u#+hstretch*(2/5x_height#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -x1=x2=w/2; -y1=h; y2=0; -lft x3=pcshiftx; top y3=h; -rt x4=w-pcshiftx; y4=y3; -rt x5=x2; bot y5= bot y6=0; -rt x6=w-pcshiftx; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_footstem(1,2); % the stem -draw_squiggle(3,4,wiggle,srad); % the top crossbar -ductus:=false; -penlabels(1,2,3,4,5,6,100); -endchar; % end "t" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{u} -% The letter `u'. This is a modern version as the font did not have a U. -% \begin{macrocode} -cmchar "Rustic letter u"; -beginchar("u", 2u#+hstretch*(4/5x_height#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% the right stem -x5=x6=w-pcshiftx-hookjut-thin; y5=h; y6=-thin; -% left stem and bowl -lft x1= lft x2=pcshiftx+jut; -top y1=h; y2=2thick; -x3=0.5[x1,x5]; bot y3=0; -rt x4=x5; bot y4=0.25thick; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_rusticstem(5,6); % right stem -draw_hserif(5,6,srad); % its serif -draw_tlserif(1,2,srad); % left stem and serif -draw z2{down}..z3{right}..{pdir}z4; % the bowl -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,11,16,100); -endchar; % end "u" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{v} -% The letter `v'. -% if you prefer). -% \begin{macrocode} -cmchar "Rustic letter v"; -beginchar("v", 2u#+hstretch*(x_height#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% left side -z1-z2=whatever*thick_tltobr; -lft x1=pcshiftx+jut; top y1=h; -bot y2=0; -% right side -pickup bowpen; -x3=w-pcshiftx-footjut-extra_fhjut; top y3=h; -pickup quill; -x4=lft x2; y4=0; -x5=x3; y5=h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_istem(1,2,srad); % left part -draw_bow(3,4,bowoff); % right part -draw_head(5); % and its head -ductus:=false; -penlabels(1,2,3,4,5,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 "Rustic letter w"; -beginchar("w", 2u#+hstretch*(8/5x_height#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% left thick diagonal -z1-z2=whatever*thick_tltobr; -lft x1=pcshiftx+jut; top y1=h; bot y2=0; -% right thin diagonal -pickup bowpen; -x13=w-pcshiftx-footjut-extra_fhjut; top y13=h-thin; -x23=x13; y23=h; % for the head -bot y14=thin; -pickup quill; -% right thick diagonal -z11-z12=z1-z2; -x12-x2=1/3w; y12=y2; -% left thin diagonal -z3-z4=z13-z14; -x4=x2; -x14=x12; -y3=y13; - -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_istem(1,2,srad); % left and right thick diags -draw_istem(11,12,srad); -draw_bow(3,4,bowoff); % left thin diag -draw_bow(13,14,bowoff); % right thin diag -draw_head(23); % its head -ductus:=false; -penlabels(1,2,3,4,11,12,13,14,23,100); -endchar; % end "w" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{x} -% The letter `x'. -% \begin{macrocode} -cmchar "Rustic letter x"; -beginchar("x", 2u#+hstretch*(9/10x_height#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% thick diagonal -lft x1=pcshiftx+jut; top y1=h; -rt x2= w-pcshiftx-jut; bot y2=0; -% thin diagonal -pickup bowpen; -x3=w-pcshiftx-footjut-extra_fhjut-thin; top y3=h; -x4=pcshiftx+footjut+extra_fhjut+thin; bot y4=0; -x7=x3; y7=h; -x8=x4; y8=0; -pickup quill; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_istem(1,2,srad); % thick diagonal -draw_bow(3,4,bowoff); % thin diagonal -draw_head(7); % its head -draw_foot(8); % its foot -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,100); -endchar; % end "x" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{y} -% The letter `y'. -% \begin{macrocode} -cmchar "Rustic letter y"; -beginchar("y", 2u#+hstretch*(4/5x_height#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% left side -lft x1=pcshiftx+jut; top y1=h; -x2=1/2w; bot y2=1/3h; -% right side -pickup bowpen; -x3=w-pcshiftx-footjut-extra_fhjut; top y3=h; -lft x4=x2; bot y4=y2; -pickup quill; -x5=x3; y5=h; -% leg -x7=x2; y7=y2; -x8=x7; y8=0; -pickup bowpen; -x10=lft x8; x11=rt x8; -pickup stylus; -bot y10= bot y11=thin; -pickup quill; -%% ductus:=true; -if ductus: - pickup stylus; -fi -draw_istem(1,2,srad); % left stroke -draw_bow(3,4,bowoff); % right stroke -draw_head(5); % its head -draw_foot(8); % the foot -pickup stylus; % the leg -filldraw z7--z10--z11--cycle; -ductus:=false; -penlabels(1,2,3,4,5,7,8,9,100); -endchar; % end "y" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{z} -% The letter `z'. -% \begin{macrocode} -cmchar "Rustic letter z"; -beginchar("z", 2u#+hstretch*(4/5x_height#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% bottom stroke -lft x4=pcshiftx; bot y4=0; -rt x6=w-pcshiftx; y6=y4; -% top stroke -x1=x4; top y1=h; -rt x3 =7/8w-pcshiftx; y3=y1; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_squiggle(1,3,1/2wiggle,srad); % top stroke -draw_squiggle(4,6,1/2wiggle,srad); % bottom stroke -% the diagonal -pickup stylus; -draw z4--z3; -ductus:=false; -penlabels(1,2,3,4,5,6,100); -endchar; % end "z" - -% \end{macrocode} -% \end{routine} -% -% -% The end of this file -% \begin{macrocode} -% -% \end{macrocode} -% -% -% \subsection{The code for capitals} -% -% Roman Rustic `capitals' were drawn with the same pen as for the normal -% text, the letters were merely drawn slightly larger. -% -% \begin{macrocode} -%<*maj> -% RUSTU.MF Program file for Roman Rustic `capitals' -% - -% \end{macrocode} -% -% -% \begin{routine}{A} -% The letter `A'. -% \begin{macrocode} -cmchar "Rustic letter A"; -beginchar("A", 2u#+caprat*hstretch*(4/5x_height#+jut#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% right leg -z1-z2=whatever*thick_tltobr; -top y1=h; -rt x2=w-pcshiftx-jut; bot y2=0; -% for the left leg -z3=9/10[z2,z1]; -x4=pcshiftx+footjut+extra_fhjut; bot y4=0; -% code for foot -x7=x4; y7=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_istem(1,2,srad); % right leg -draw_bow(3,4,bowoff); % left leg -draw_foot(7); % left leg foot -ductus:=false; -penlabels(1,2,3,4,5,6,100); -endchar; % end "A" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{B} -% The letter `B'. This is a tall letter -% \begin{macrocode} -cmchar "Rustic letter B"; -beginchar("B", 2u#+caprat*hstretch*(7/10x_height#), caprat*(11/10x_height#), 0); -adjust_fit(0,0); -pcshiftx := u+hookjut+thin; -pickup quill; -% stem -x1=x2=pcshiftx; -y1=h; y2=0; -% bottom bowl -rt x3=x1; bot y3=thin; -rt x5=w-u; y5 = 1/6h; -x4=0.4[x2,x5]; y4=0; -lft x6=x2; y6=2/3h; -% top bowl -z7=z6; -x8=0.25[x4,x5]; top y8=y1; -x9=0.5[x1,x8]; bot y9=h; -z10=z1; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_rusticstem(1,2); % the stem -draw z3..z4{right}..z5..{dir(pangle+90)}z6; % bottom bowl -draw z7{pdir}..z8{up}..z9{left}..z10; % top bowl -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,10,100); -endchar; % end "B" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{C} -% The letter `C'. -% \begin{macrocode} -cmchar "Rustic letter C"; -beginchar("C", 2u#+caprat*hstretch*(3/5x_height#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -lft x1=pcshiftx; rt x3=pcshiftx+sqxside; y1=y3=h/2; -x2=x4=w/2; top y2=h; bot y4=0; -rt x5= rt x6=w-pcshiftx; -top y5=1/5h; -top y6=4/5h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z5{-pdir}..{left}z4..z1..z2..z6; -ductus:=false; -penlabels(1,2,3,4,5,6,100); -endchar; % end "C" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{D} -% The letter `D'. -% \begin{macrocode} -cmchar "Rustic letter D"; -beginchar("D", 2u#+caprat*hstretch*(3/5x_height#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -x1=x2=pcshiftx+hookjut+thin; -top y1=h; y2=0; -% bowl -rt x3=x1; bot y3=thin; -rt x5=w-u; y5 = 2/5h; -x4=0.4[x2,x5]; y4=0; -x6=x1; top y6=h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_rusticstem(1,2); % stem -draw z3..z4{right}..z5{up}..z6; % bowl -ductus:=false; -penlabels(0,1,2,3,4,5,6,100); -endchar; % end "D" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{E} -% The letter `E'. -% \begin{macrocode} -cmchar "Rustic letter E"; -beginchar("E", 2u#+caprat*hstretch*(4/10x_height#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% stem -x1=x2=pcshiftx+stem_offset; -top y1=h; y2=0; -% top bar -rt x3=x1; x4=w-u; -top y3=top y4=h; -% middle bar -x5=x3; x6=x4; -y5=y6=3/5h; -% foot -x7=x3; x8=x4; -bot y7= bot y8=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_rusticstem(1,2); % stem -draw_squiggle(3,4,wiggle,srad); % top bar -draw_squiggle(5,6,wiggle,srad); % middle bar -draw_squiggle(7,8,wiggle,srad); % bottom bar -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,100); -endchar; % end "E" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{F} -% The letter `F'. This is a tall letter -% \begin{macrocode} -cmchar "Rustic letter F"; -beginchar("F", 2u#+caprat*hstretch*(4/10x_height#), caprat*(6/5x_height#), 0); -adjust_fit(0,0); -pcshiftx := u +stem_offset; -pickup quill; -% stem -x1=x2=pcshiftx; -top y1=h; y2=0; -% top bar -x3=x1; x4=w-u; -top y3=top y4=h; -% middle bar -x5=x3; x6=x4; -y5=y6=2/3h; -% foot -x7=x3; x8=x4; -bot y7= bot y8=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_footstem(1,2); % stem -draw_squiggle(3,4,wiggle,srad); % top bar -draw_squiggle(5,6,wiggle,srad); % middle bar -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,100); -endchar; % end "F" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{G} -% The letter `G'. Like a `C' but bottom curls inwards. -% \begin{macrocode} -cmchar "Rustic letter G"; -beginchar("G", 2u#+caprat*hstretch*(3/5x_height#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -lft x1=pcshiftx; rt x3=pcshiftx+sqxside; y1=y3=h/2; -x2=x4=w/2; top y2=h; bot y4=0; -rt x5= rt x6=w-pcshiftx; -top y5=1/5h; -top y6=4/5h; -lft x7=w/2; y7=h/2; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z7..z5{down}..{left}z4..z1..z2..z6; % the bowl -ductus:=false; -penlabels(1,2,3,4,5,6,7,100); -endchar; % end "G" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{H} -% The letter `H'. -% \begin{macrocode} -cmchar "Rustic letter H"; -beginchar("H", 2u#+caprat*hstretch*(4/5x_height#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -y100 = sqyside/2; x100 = pcshiftx+y100; % square center -pickup quill; -% left stem and foot -x1=x2=pcshiftx+stem_offset; -y1=h; y2=0; -% bar -y5=y6=7/10h; -lft x5=pcshiftx; rt x6=w-pcshiftx; -% right stem -rt x7=w-pcshiftx; top y7=h; -x8=x7; bot y8=0; -x9=x8-2thin; y9=0.5[y8,y7]; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_footstem(1,2); % left stem -draw_hserif(1,2,srad); % its serif -draw_squiggle(5,6,wiggle,srad); % the bar -draw z7..z9..z8; % right stem -ductus:=false; -penlabels(1,1',2,2',3,4,5,6,7,7',8,8',99,99',100); -endchar; % end "H" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{I} -% The letter I. -% \begin{macrocode} -cmchar "Rustic letter I"; -beginchar("I", 2u#+caprat*hstretch*(2footjut#+hookjut#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -x1=x2=pcshiftx+stem_offset; -y1=h; y2=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_footstem(1,2); % stem and foot -draw_hserif(1,2,srad); % serif -ductus:=false; -penlabels(1,2,3,4,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 "Rustic letter J"; -beginchar("J", 4u#+caprat*hstretch*(3/5x_height#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := 3u; -pickup quill; -% stem -x1=x2=pcshiftx+2/3(w-4u); -y1=h; y2=0; -% top bar -rt x4=w-u; top y4=h; -x1-x3 = x4-x1; y3=y4; -% bowl -rt x5 = lft x3; -top y5=2/5h; -x7=x2; bot y7=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_rusticstem(1,2); % stem -draw_squiggle(3,4,wiggle,srad); % top bar -draw z7{left}..{pdir}z5; % bowl -ductus:=false; -penlabels(1,2,3,4,5,6,7,100); -endchar; % end "J" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{K} -% The letter `K'. -% \begin{macrocode} -cmchar "Rustic letter K"; -beginchar("K", 2u#+caprat*hstretch*(x_height#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% the stem and its foot -x1=x2=pcshiftx+stem_offset; -y1=h; y2=0; -lft x13=pcshiftx; bot y13=0; -x2-x13=x14-x2; y14=y13; -% upper diagonal and its top -x3=x1; y3=h/2; -x4=x1+y3; top y4=h; -x5=x4-jut; x6-x4=x4-x5; -top y5=top y6=h; -x24=x4; y24=h; -% bottom leg -lft x7=x3; bot y7=y3; -rt x9=w-pcshiftx; bot y9=0; -x8=0.5[x7,x9]; y8=0.7[y7,y9]; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_footstem(1,2); % the stem -draw_hserif(1,2,srad); % its serif -draw z3--z4; % upper diagonal -draw_head(24); -draw z7..z8..z9; % bottom leg -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,100); -endchar; % end "K" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{L} -% The letter `L'. This is a tall letter. -% \begin{macrocode} -cmchar "Rustic letter L"; -beginchar("L", 2u#+caprat*hstretch*(1/2x_height#), caprat*(6/5x_height#), 0); -adjust_fit(0,0); -pcshiftx := u+hookjut; -pickup quill; -x1=x2=pcshiftx+thin+hookjut; -y1=h; y2=0; -rt x3=x1; rt x4=w-u; -bot y3= bot y4=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_rusticstem(1,2); % stem -draw_hserif(1,2,srad); % serif -draw_squiggle(3,4,wiggle,srad); % foot -ductus:=false; -penlabels(1,2,3,4,100); -endchar; % end "L" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{M} -% The letter `M'. Like 2 As stuck together. -% \begin{macrocode} -cmchar "Rustic letter M"; -beginchar("M", 2u#+caprat*hstretch*(6/5x_height#+jut#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% right a thick diag -z11-z12=whatever*thick_tltobr; -rt x12=w-pcshiftx-jut; bot y12=0; -top y11=h; -% left a thin diag -pickup bowpen; -x4=pcshiftx+footjut+extra_fhjut; bot y4=thin; -z3=9/10[z2,z1]; -pickup quill; -x7=x4; y7=0; % for the foot -% the two thin diags are parallel, and just shifted horizontally -z13=9/10[z12,z11]; -z3-z4=z13-z14; y4=y14; -% similarly for the two thick diags -z1-z2=z11-z12; % y2=y12; -x12-x2=1/3w; -%%ductus:=true; -if ductus: - pickup stylus; -fi -% draw left a -draw_istem(1,2,srad); % right leg -draw_bow(3,4,bowoff); % left leg -draw_foot(7); % left leg foot -% draw right a -draw_istem(11,12,srad); -draw_bow(13,14,bowoff); -ductus:=false; -penlabels(1,2,3,4,5,6,11,12,13,14,100); -endchar; % end "M" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{N} -% The letter `N'. -% \begin{macrocode} -cmchar "Rustic letter N"; -beginchar("N", 2u#+caprat*hstretch*(9/10x_height#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% left stem and foot -x1=x2=pcshiftx+stem_offset; -y1=h; y2=0; -% right stem -x5=x6=w-u-hookjut-thin; -y5=y1; y6=y2; -% diagonal -x7=x1; y7=h; -x9=x6; bot y9=0; -x8=0.5[x7,x9]; y8=0.6[y7,y9]; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_footstem(1,2); % left stem -draw_rusticstem(5,6); % right stem -draw_hserif(5,6,srad); % its serif -draw z7..z8..z9; % diagonal -draw_serif(9,8,srad); % its bottom serif -ductus:=false; -penlabels(1,2,5,6,7,8,9,100); -endchar; % end "N" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{O} -% The letter `O'. -% \begin{macrocode} -cmchar "Rustic letter O"; -beginchar("O", 2u#+caprat*hstretch*(3/5x_height#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -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 "O" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{P} -% The letter `P'. -% \begin{macrocode} -cmchar "Rustic letter P"; -beginchar("P", 2u#+caprat*hstretch*(5/10x_height#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% stem and foot -x1=x2=pcshiftx+stem_offset; -top y1=h; y2=0; -% bowl -lft x7=x2; y7=1/2h; % y7=2/3h; -rt x8=w-pcshiftx; top y8=y1; -z10=z1; -x9=0.5[x1,x8]; y9=h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_footstem(1,2); % stem -draw z7{pdir}..z8{up}..z9{left}..z10; % top bowl -ductus:=false; -penlabels(1,2,7,8,9,10,100); -endchar; % end "P" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{Q} -% The letter `Q'. -% \begin{macrocode} -cmchar "Rustic letter Q"; -beginchar("Q", 2u#+caprat*hstretch*(3/5x_height#), caprat*x_height#, - caprat*(2/3thick#)); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% the O shape -lft x1=pcshiftx; rt x3=w-pcshiftx; y1=y3=h/2; -x2=x4=w/2; top y2=h+o; bot y4=-o; -% the tail -path p; -p = z4{right}..{up}z3; -z5 = directionpoint pdir of p; -x7= x4+w/2; top y7=0; -x6=0.5[x5,x7]; y6=y7; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1..z2..z3..z4..cycle; % O shape -draw z5..z6..z7; % the tail -ductus:=false; -penlabels(0,1,2,3,4,5,6,6',7,100); -endchar; % end "Q" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{R} -% The letter `R'. -% \begin{macrocode} -cmchar "Rustic letter R"; -beginchar("R", 2u#+caprat*hstretch*(4/5x_height#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -numeric alpha, beta; -alpha:=thin*(xpart pdir); beta:=thin*(ypart pdir); -pickup quill; -% stem -x1=x2=pcshiftx+stem_offset; -top y1=h; y2=0; -% bowl -lft x7=x2; bot y7=1/2h; -rt x8=5/8w; top y8=y1; -z10=z1; -x9=0.5[x1,x8]; y9=h; -% leg -z11=z7 shifted (thin*pdir); -rt x13=w-pcshiftx; bot y13=0; -x12=0.5[x11,x13]; y12=0.7[y11,y13]; -% points defining the leg profile -x11l=lft x11 + alpha; y11l=bot y11 + beta; -x11r= rt x11 - alpha; y11r=top y11 - beta; -x12l=0.6[lft x12, x12]; y12l=0.6[bot y12, y12]; -x12r=0.6[rt x12, x12]; y12r=0.6[top y12, y12]; -x14=w-pcshiftx-thin; y14=thin; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_footstem(1,2); % stem and foot -draw z7{pdir}..z8{up}..z9{left}..z10; % bowl -pickup stylus; % drawing the leg -filldraw z11l..z12l..{right}z14 & z14{left}..z12r..z11r--cycle; -ductus:=false; -penlabels(1,2,7,8,9,10,11,12,14,100); -endchar; % end "R" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{S} -% The letter `S'. -% \begin{macrocode} -cmchar "Rustic letter S"; -beginchar("S", 2u#+caprat*hstretch*(3/5x_height#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% for the foot -lft x7=pcshiftx+extra_fhjut; bot y7=0; -% the S curve -rt x1=w-pcshiftx; top y1=h-thin; -lft x3=pcshiftx+extra_fhjut; y3=0.75h; -x4=0.5[x1,x3]; y4=0.5[y3,y5]; -x2=x4; top y2=h; -x5=x1; y5=0.3h; -x6=0.75w; bot y6=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1..z2{left}..z3{down}..z4..z5{down}..{-pdir}z6; % S curve -draw_squiggle(7,6,wiggle,srad); % base -ductus:=false; -penlabels(1,2,3,4,5,6,7,100); -endchar; % end "S" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{T} -% The letter `T'. -% \begin{macrocode} -cmchar "Rustic letter T"; -beginchar("T", 2u#+caprat*hstretch*(2/5x_height#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -x1=x2=w/2; -y1=h; y2=0; -lft x3=pcshiftx; top y3=h; -rt x4=w-pcshiftx; y4=y3; -rt x5=x2; bot y5= bot y6=0; -rt x6=w-pcshiftx; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_footstem(1,2); % the stem -draw_squiggle(3,4,wiggle,srad); % the top crossbar -ductus:=false; -penlabels(1,2,3,4,5,6,100); -endchar; % end "T" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{U} -% The letter `U'. This is a modern version as the font did not have a U. -% \begin{macrocode} -cmchar "Rustic letter U"; -beginchar("U", 2u#+caprat*hstretch*(4/5x_height#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% the right stem -x5=x6=w-pcshiftx-hookjut-thin; y5=h; y6=-thin; -% left stem and bowl -lft x1= lft x2=pcshiftx+jut; -top y1=h; y2=2thick; -x3=0.5[x1,x5]; bot y3=0; -rt x4=x5; bot y4=0.25thick; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_rusticstem(5,6); % right stem -draw_hserif(5,6,srad); % its serif -draw_tlserif(1,2,srad); % left stem and serif -draw z2{down}..z3{right}..{pdir}z4; % the bowl -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,11,16,100); -endchar; % end "U" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{V} -% The letter `V'. -% if you prefer). -% \begin{macrocode} -cmchar "Rustic letter V"; -beginchar("V", 2u#+caprat*hstretch*(x_height#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% left side -z1-z2=whatever*thick_tltobr; -lft x1=pcshiftx+jut; top y1=h; -bot y2=0; -% right side -pickup bowpen; -x3=w-pcshiftx-footjut-extra_fhjut; top y3=h; -pickup quill; -x4=lft x2; y4=0; -x5=x3; y5=h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_istem(1,2,srad); % left part -draw_bow(3,4,bowoff); % right part -draw_head(5); % and its head -ductus:=false; -penlabels(1,2,3,4,5,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 "Rustic letter W"; -beginchar("W", 2u#+caprat*hstretch*(8/5x_height#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% left thick diagonal -z1-z2=whatever*thick_tltobr; -lft x1=pcshiftx+jut; top y1=h; bot y2=0; -% right thin diagonal -pickup bowpen; -x13=w-pcshiftx-footjut-extra_fhjut; top y13=h-thin; -x23=x13; y23=h; % for the head -bot y14=thin; -pickup quill; -% right thick diagonal -z11-z12=z1-z2; -x12-x2=1/3w; y12=y2; -% left thin diagonal -z3-z4=z13-z14; -x4=x2; -x14=x12; -y3=y13; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_istem(1,2,srad); % left and right thick diags -draw_istem(11,12,srad); -draw_bow(3,4,bowoff); % left thin diag -draw_bow(13,14,bowoff); % right thin diag -draw_head(23); % its head -ductus:=false; -penlabels(1,2,3,4,11,12,13,14,23,100); -endchar; % end "W" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{X} -% The letter `X'. -% \begin{macrocode} -cmchar "Rustic letter X"; -beginchar("X", 2u#+caprat*hstretch*(9/10x_height#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% thick diagonal -lft x1=pcshiftx+jut; top y1=h; -rt x2= w-pcshiftx-jut; bot y2=0; -% thin diagonal -pickup bowpen; -x3=w-pcshiftx-footjut-extra_fhjut-thin; top y3=h; -x4=pcshiftx+footjut+extra_fhjut+thin; bot y4=0; -x7=x3; y7=h; -x8=x4; y8=0; -pickup quill; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_istem(1,2,srad); % thick diagonal -draw_bow(3,4,bowoff); % thin diagonal -draw_head(7); % its head -draw_foot(8); % its foot -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,100); -endchar; % end "X" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{Y} -% The letter `Y'. -% \begin{macrocode} -cmchar "Rustic letter Y"; -beginchar("Y", 2u#+caprat*hstretch*(4/5x_height#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% left side -lft x1=pcshiftx+jut; top y1=h; -x2=1/2w; bot y2=1/3h; -% right side -pickup bowpen; -x3=w-pcshiftx-footjut-extra_fhjut; top y3=h; -lft x4=x2; bot y4=y2; -pickup quill; -x5=x3; y5=h; -% leg -x7=x2; y7=y2; -x8=x7; y8=0; -pickup bowpen; -x10=lft x8; x11=rt x8; -pickup stylus; -bot y10= bot y11=thin; -pickup quill; -%% ductus:=true; -if ductus: - pickup stylus; -fi -draw_istem(1,2,srad); % left stroke -draw_bow(3,4,bowoff); % right stroke -draw_head(5); % its head -draw_foot(8); % the foot -pickup stylus; % the leg -filldraw z7--z10--z11--cycle; -ductus:=false; -penlabels(1,2,3,4,5,7,8,9,100); -endchar; % end "Y" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{Z} -% The letter `Z'. -% \begin{macrocode} -cmchar "Rustic letter Z"; -beginchar("Z", 2u#+caprat*hstretch*(4/5x_height#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% bottom stroke -lft x4=pcshiftx; bot y4=0; -rt x6=w-pcshiftx; y6=y4; -% top stroke -x1=x4; top y1=h; -rt x3 =7/8w-pcshiftx; y3=y1; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_squiggle(1,3,1/2wiggle,srad); % top stroke -draw_squiggle(4,6,1/2wiggle,srad); % bottom stroke -% the diagonal -pickup stylus; -draw z4--z3; -ductus:=false; -penlabels(1,2,3,4,5,6,100); -endchar; % end "Z" - -% \end{macrocode} -% \end{routine} -% -% -% -% -% The end of this file -% \begin{macrocode} -% -% \end{macrocode} -% -% -% -% \subsection{The punctuation file} -% -% The main punctuation marks are defined in this file. -% -% \begin{macrocode} -%<*punct> -% RUSTPUNCT.MF This file contains punctuation marks - -% \end{macrocode} -% -% -% \begin{routine}{,} -% The `,' character. -% \begin{macrocode} - -cmchar "Rustic Comma"; -beginchar(",",2u#+hstretch*(comma_width#+dot_size#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=u; -x1=w-pcshiftx-(0.5hstretch*dot_size); y1=h/2; -draw_pcomma(1,dot_size,comma_width); -penlabels(1); -endchar; % end of "," - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{.} -% The `.' character. -% \begin{macrocode} - -cmchar "Rustic Period"; -beginchar(".",2u#+hstretch*(dot_size#),x_height#,0); -pcshiftx:=u; -x1=w/2; y1=h/2; -draw_pdot(1,dot_size); -penlabels(1); -endchar; % end of "." - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{:} -% The `:' character. -% \begin{macrocode} - -cmchar "Rustic Colon"; -beginchar(":",2u#+hstretch*(dot_size#),x_height#,0); -pcshiftx:=u; -x1=x2=w/2; y1=2/3h; y2=1/3h; -draw_pdot(1,dot_size); -draw_pdot(2,dot_size); -penlabels(1,2); -endchar; % end ":" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{;} -% The `;' character. -% \begin{macrocode} - -cmchar "Rustic Semicolon"; -beginchar(";",2u#+hstretch*(comma_width#+dot_size#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=u; -x1=x2=w-pcshiftx-(0.5hstretch*dot_size); y1=2/3h; y2=1/3h; -draw_pdot(1,dot_size); -draw_pcomma(2,dot_size,comma_width); -penlabels(1,2); -endchar; % end of ";" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{'} -% The `'' character. -% \begin{macrocode} - -cmchar "Rustic Apostrophe"; -beginchar("'",2u#+hstretch*(comma_width#+dot_size#),4/3x_height#,0); -adjust_fit(0,0); -pcshiftx:=u; -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 "Rustic Reverse apostrophe"; -beginchar("`",2u#+hstretch*(comma_width#+dot_size#),4/3x_height#,0); -adjust_fit(0,0); -pcshiftx:=u; -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} -% -% \end{macrocode} -% -% -% \subsection{The ligatures and dashes file} -% -% The ligatured punctuation marks and dashes are defined in this file. -% \begin{macrocode} -%<*lig> -% RUSTLIG.MF Roman Rustic ligatured 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 "Rustic closing quotes"; -beginchar(oct"042",2u#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0); -adjust_fit(0,0); -pcshiftx:=u; -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 "Rustic opening quotes"; -beginchar(oct"134",2u#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0); -adjust_fit(0,0); -pcshiftx:=u; -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 `-' character. -% \begin{macrocode} - -cmchar "Rustic hyphen"; -beginchar("-",u#+hstretch*(0.8x_height#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=u/2; -pickup quill; -lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; -draw z1--z2; % bar -penlabels(1,2); -endchar; % end of "-" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{--} -% The -- ligature. -% \begin{macrocode} - -cmchar "Rustic en dash"; -beginchar(oct"173",u#+hstretch*(x_height#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=u/2; -pickup quill; -lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; -draw z1--z2; % bar -penlabels(1,2); -endchar; % end of "--" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{---} -% The `---' ligature. The em dash is twice the width of the en dash. -% \begin{macrocode} - -cmchar "Rustic em dash"; -beginchar(oct"174",u#+hstretch*(2x_height#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=u/2; -pickup quill; -lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; -draw z1--z2; % bar -penlabels(1,2); -endchar; % end of "---" - -% \end{macrocode} -% \end{routine} -% -% -% The end of this file. -% \begin{macrocode} -% -% \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> -% RUSTDIG.MF Program file for Roman Rustic `digits' -% - -% \end{macrocode} -% -% \begin{routine}{1} -% The digit `1'. -% \begin{macrocode} -cmchar "Rustic digit 1"; -beginchar("1", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -x1=x2=w/2; -y1=h; y2=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_footstem(1,2); % stem and foot -draw_hserif(1,2,srad); % serif -ductus:=false; -penlabels(1,2,3,4,100); -endchar; % end "1" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{2} -% The digit `2'. This is like a stemless B. -% \begin{macrocode} -cmchar "Rustic digit 2"; -beginchar("2", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% stem -lft x1=pcshiftx; top y1=h-2thin; -x2=1/2w; top y2= h; -rt x3=w-pcshiftx; y3=3/4h; -% squiggle -x5=pcshiftx+extra_fhjut; bot y5=0; -x6=w-pcshiftx-extra_fhjut; y6=y5; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1..z2{right}..z3{down}..{-pdir}z5; % curve -draw_squiggle(5,6,wiggle,srad); % foot -ductus:=false; -penlabels(1,2,3,4,5,6,100); -endchar; % end "2" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{3} -% The digit `3'. This is like a stemless B. -% \begin{macrocode} -cmchar "Rustic 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+extra_fhjut; 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_rusticstem(1,2); % the stem -draw z3..z4{right}..z5{up}...{-pdir}z6; % bottom bowl -draw z7{pdir}..z8{up}..z9{left}..z10; % top bowl -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,10,100); -endchar; % end "3" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{4} -% The digit `4'. -% \begin{macrocode} -cmchar "Rustic digit 4"; -beginchar("4", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% the stem -x1=x2=w-pcshiftx-footjut-extra_fhjut; -y1=h; y2=0; -% the crossbar -x3=pcshiftx+extra_fhjut; y3=0.33h; -x4=w-pcshiftx-extra_fhjut; y4=y3; -% the thin diagonal -x5=lft x3; y5=bot y3+thin; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_footstem(1,2); % stem and foot -%%draw_hserif(1,2,srad); % serif -draw_squiggle(3,4,wiggle,srad); % squiggle -pickup stylus; -draw z5{pdir}..z1; % thin 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 "Rustic digit 5"; -beginchar("5", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% for the foot -lft x7=pcshiftx+extra_fhjut; bot y7=0; -% for the top -rt x1=w-pcshiftx-extra_fhjut; top y1=h; -lft x2=pcshiftx+extra_fhjut; y2=y1; - -% the S curve -x3=x2; y3=0.5h; -x4=0.5[x1,x3]; y4=0.5[y3,y5]; -rt x5=w-pcshiftx; y5=0.3h; -x6=0.75w; bot y6=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_squiggle(2,1,wiggle,srad); % top squiggle -draw z3{pdir}..z5{down}..{-pdir}z6; % curve -draw_squiggle(7,6,wiggle,srad); % base -pickup stylus; -draw z2--z3; % vertical -ductus:=false; -penlabels(1,2,3,4,5,6,7,100); -endchar; % end "5" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{6} -% The digit `6'. -% \begin{macrocode} -cmchar "Rustic 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 "Rustic digit 7"; -beginchar("7", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% top bar -x1=pcshiftx+extra_fhjut; -x2=w-pcshiftx-extra_fhjut; -top y1=top y2=h; -% bowed leg -rt x4=w-pcshiftx-3thin; bot y4=0; -x3=0.5[x2,x4]-2thin; y3=0.5[y2,y4]; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_squiggle(1,2,wiggle,srad); -draw z2..z3..z4; -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 "Rustic digit 8"; -beginchar("8", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -lft x1=pcshiftx-o; rt x3=w-pcshiftx; y1=y3=3/4h; -x2=x4=w/2; top y2=h+o; bot y4=-o; -x5=x2; y5=h/2; -x11=x1+o; x13=x3+o; 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 "Rustic 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 "Rustic digit 0"; -beginchar("0", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -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} -% -% \end{macrocode} -% -% -% \section{The font definition files} \label{sec:fd} -% -% The font comes in normal and bold weights only. -% -% \begin{macrocode} -%<*fdot1> -\DeclareFontFamily{OT1}{rust}{} -%% \DeclareFontShape{OT1}{rust}{m}{n}{ <-> rust10 }{} - \DeclareFontShape{OT1}{rust}{m}{n}{ <-8.5> rust7 <8.5-15> rust10 <15-> rust17 }{} - \DeclareFontShape{OT1}{rust}{m}{sl}{ <-> sub * rust/m/n }{} - \DeclareFontShape{OT1}{rust}{m}{it}{ <-> sub * rust/m/n }{} - \DeclareFontShape{OT1}{rust}{m}{sc}{ <-> sub * rust/m/n }{} - \DeclareFontShape{OT1}{rust}{m}{u}{ <-> sub * rust/m/n }{} -%% \DeclareFontShape{OT1}{rust}{bx}{n}{ <-> rustb10 }{} - \DeclareFontShape{OT1}{rust}{bx}{n}{ <-8.5> rustb7 <8.5-15> rustb10 <15-> rustb17 }{} - \DeclareFontShape{OT1}{rust}{bx}{it}{ <-> sub * rust/bx/n }{} - \DeclareFontShape{OT1}{rust}{bx}{sl}{ <-> sub * rust/bx/n }{} - \DeclareFontShape{OT1}{rust}{b}{n}{ <-> sub * rust/bx/n }{} -% -% \end{macrocode} -% -% -% \begin{macrocode} -%<*fdt1> -\DeclareFontFamily{T1}{rust}{} - \DeclareFontShape{T1}{rust}{m}{n}{ <-8.5> rust7 <8.5-15> rust10 <15-> rust17 }{} - \DeclareFontShape{T1}{rust}{m}{sl}{ <-> sub * rust/m/n }{} - \DeclareFontShape{T1}{rust}{m}{it}{ <-> sub * rust/m/n }{} - \DeclareFontShape{T1}{rust}{m}{sc}{ <-> sub * rust/m/n }{} - \DeclareFontShape{T1}{rust}{m}{u}{ <-> sub * rust/m/n }{} - \DeclareFontShape{T1}{rust}{bx}{n}{ <-8.5> rustb7 <8.5-15> rustb10 <15-> rustb17 }{} - \DeclareFontShape{T1}{rust}{bx}{it}{ <-> sub * rust/bx/n }{} - \DeclareFontShape{T1}{rust}{bx}{sl}{ <-> sub * rust/bx/n }{} - \DeclareFontShape{T1}{rust}{b}{n}{ <-> sub * rust/bx/n }{} -% -% \end{macrocode} -% -% \section{The \Lpack{rustic} and \Lpack{allrust} package code} \label{sec:code} -% -% \subsection{The \Lpack{rustic} code} -% -% The \Lpack{rustic} package is intended for use when typesetting examples -% of the book-hand in a document that is otherwise typeset in normal fonts. -% -% Announce the name and version of the package, which requires -% \LaTeXe{}. -% \begin{macrocode} -%<*usc> -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{rustic}[1999/05/01 v1.0 package for Roman Rustic 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}{\rustfamily} -% Selects the Roman Rustic font family in either T1 or OT1 encoding. -% \begin{macrocode} -\ifx\Tienc\encodingdefault - \newcommand{\rustfamily}{\usefont{T1}{rust}{m}{n}} -\else - \newcommand{\rustfamily}{\usefont{OT1}{rust}{m}{n}} -\fi -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\textrust} -% Text command for the Roman Rustic font family. -% \begin{macrocode} -\DeclareTextFontCommand{\textrust}{\rustfamily} -% \end{macrocode} -% \end{macro} -% -% The end of this package. -% \begin{macrocode} -% -% \end{macrocode} -% -% \subsection{The \Lpack{allrust} code} -% -% The \Lpack{allrust} 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{rustic} package. -% \begin{macrocode} -%<*uscall> -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{allrust}[1999/05/01 v1.0 package for all Roman Rustic fonts] -\RequirePackage{rustic} -% \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 Roman Rustic, which has only one family -% member. -% \begin{macro}{\rmdefault} -% \begin{macro}{\sfdefault} -% \begin{macro}{\ttdefault} -% \begin{macrocode} -\renewcommand{\rmdefault}{rust} -\renewcommand{\sfdefault}{rust} -\renewcommand{\ttdefault}{rust} -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% -% The `leading' in the book-hand is the same as the |x-height|, which is much -% greater than for the CMR fonts. I have borrowed code from Frank Jensen's -% \Lpack{beton} package~\cite{BETON} to do this. -% -% \begin{macro}{\rustic@baselineskip@table} -% A table of the normal font sizes and the corresponding baselineskip. -% \begin{macrocode} -\newcommand{\rustic@baselineskip@table}{% - <\@vpt>9.5% - <\@vipt>11.4% - <\@viipt>13.3% - <\@viiipt>15.2% - <\@xpt>19% - <\@xipt>20.9% - <\@xiipt>22.8% - <\@xivpt>27.36% - <\@xviipt>23.3% - <\@xxpt>38% - <\@xxvpt>47.5} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\rustic@new@setfontsize} -% This is a macro that replaces the |\@setfontsize| macro which is called by -% the font size changing commands. -% \begin{macrocode} -\newcommand{\rustic@new@setfontsize}[3]{% - \edef\@tempa{\def\noexpand\@tempb####1<#2}% - \@tempa>##2<##3\@nil{\def\rustic@baselineskip@value{##2}}% - \edef\@tempa{\noexpand\@tempb\rustic@baselineskip@table<#2}% - \@tempa><\@nil - \ifx\rustic@baselineskip@value\@empty - \def\rustic@baselineskip@value{#3}% - \fi - \rustic@old@setfontsize{#1}{#2}\rustic@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\rustic@old@setfontsize=\@setfontsize - \let\@setfontsize=\rustic@new@setfontsize} -\AtBeginDocument{\normalsize} -% \end{macrocode} -% -% -% The end of this package. -% \begin{macrocode} -% -% \end{macrocode} -% -% -% \bibliographystyle{alpha} -% \renewcommand{\refname}{Bibliography} -% \begin{thebibliography}{GMS94a} -% \addcontentsline{toc}{section}{\refname} -% -% \bibitem[And69]{ANDERSON69} -% Donald M.~Anderson. -% \newblock {\em The Art of Written Forms: The Theory and Practice of Calligraphy}. -% \newblock Holt, Rinehart and Winston, 1969. -% -% \bibitem[Bol95]{BOLOGNA95} -% Giulia Bologna. -% \newblock {\em Illuminated Manuscripts: The Book before Gutenberg}. -% \newblock Crescent Books, 1995. -% -% \bibitem[Day95]{DAY95} -% Lewis F.~Day. -% \newblock {\em Alphabets Old \& New}. -% \newblock (3rd edition originally published by B.~T.~Batsford, 1910) -% \newblock Senate, 1995. -% -% \bibitem[Dro80]{DROGIN80} -% Marc Drogin. -% \newblock {\em Medieval Calligraphy: Its History and Technique}. -% \newblock Allenheld, Osmun \& Co., 1980. -% -% \bibitem[Dru95]{DRUCKER95} -% Johanna Drucker. -% \newblock {\em The Alphabetic Labyrinth}. -% \newblock Thames \& Hudson, 1995. -% -% \bibitem[Fir93]{FIRMAGE93} -% Richard A.~Firmage. -% \newblock {\em The Alphabet Abecedarium}. -% \newblock David R~Goodine, 1993. -% -% -% \bibitem[Har95]{HARRIS95} -% David Harris. -% \newblock {\em The Art of Calligraphy}. -% \newblock DK Publishing, 1995. -% -% \bibitem[Jen95]{BETON} -% Frank Jensen. -% \newblock {\em The BETON package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1995. -% -% -% \bibitem[Joh71]{JOHNSTON75} -% Edward Johnston (ed. Heather Child). -% \newblock {\em Formal Penship and Other Papers}. -% \newblock Penthalic, 1971. -% -% \bibitem[Knu87]{CM} -% Donald E.~Knuth. -% \newblock {\em Computer Modern Typefaces}. -% \newblock Addison-Wesley, 1987. -% -% \bibitem[Knu92]{METAFONT} -% Donald E.~Knuth. -% \newblock {\em The METAFONTbook}. -% \newblock Addison-Wesley, 1992. -% -% -% \bibitem[GMS94]{GOOSSENS94} -% Michel Goossens, Frank Mittelbach, and Alexander Samarin. -% \newblock {\em The LaTeX Companion}. -% \newblock Addison-Wesley Publishing Company, 1994. -% -% \bibitem[Tho75]{THOMAS75} -% Alan G.~Thomas. -% \newblock {\em Great Books and Book Collectors}. -% \newblock Weidenfield and Nichoson, 1975. -% -% \bibitem[Wil99a]{DOCMFP} -% Peter R.~Wilson. -% \newblock {\em The DOCMFP Package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1999. -% -% \bibitem[Wil99b]{ROMANNUM} -% Peter R.~Wilson. -% \newblock {\em The ROMANNUM Package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1999. -% -% \end{thebibliography} -% -% -% \Finale -% \PrintIndex -% -\endinput - -%% \CharacterTable -%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -%% Digits \0\1\2\3\4\5\6\7\8\9 -%% Exclamation \! Double quote \" Hash (number) \# -%% Dollar \$ Percent \% Ampersand \& -%% Acute accent \' Left paren \( Right paren \) -%% Asterisk \* Plus \+ Comma \, -%% Minus \- Point \. Solidus \/ -%% Colon \: Semicolon \; Less than \< -%% Equals \= Greater than \> Question mark \? -%% Commercial at \@ Left bracket \[ Backslash \\ -%% Right bracket \] Circumflex \^ Underscore \_ -%% Grave accent \` Left brace \{ Vertical bar \| -%% Right brace \} Tilde \~} - - diff --git a/Master/texmf-dist/source/latex/bookhands/rustic/rustic.ins b/Master/texmf-dist/source/latex/bookhands/rustic/rustic.ins deleted file mode 100644 index 7c885c2de53..00000000000 --- a/Master/texmf-dist/source/latex/bookhands/rustic/rustic.ins +++ /dev/null @@ -1,103 +0,0 @@ -%% -%% rustic.ins -%% Copyright 1999 Peter R. Wilson -%% -%% This program is provided under the terms of the -%% LaTeX Project Public License distributed from CTAN -%% archives in directory macros/latex/base/lppl.txt. -%% -%% Author: Peter Wilson (CUA and NIST) -%% now at: peter.r.wilson@boeing.com -%% -%% This file will generate fast loadable files and documentation -%% driver files from the doc files in this package when run through -%% LaTeX or TeX. -%% -%% --------------- start of docstrip commands ------------------ -%% -\def\batchfile{rustic.ins} -\input docstrip.tex -\preamble - - Copyright 1999 Peter R. Wilson - - This program is provided under the terms of the - LaTeX Project Public License distributed from CTAN - archives in directory macros/latex/base/lppl.txt. - -Author: Peter Wilson (CUA) - now at: peter.r.wilson@boeing.com - -\endpreamble - -\keepsilent - -%%% \Msg{*** Generating the driver file ***} -%%% \generateFile{rustic.drv}{t}{\from{rustic.dtx}{driver}} - -\Msg{*** Generating the Metafont files ***} - -\usepostamble\empty -\generateFile{rust7.mf}{t}{\from{rustic.dtx}{base7}} -\generateFile{rust10.mf}{t}{\from{rustic.dtx}{base10}} -\generateFile{rust17.mf}{t}{\from{rustic.dtx}{base17}} -\generateFile{rustb7.mf}{t}{\from{rustic.dtx}{base7b}} -\generateFile{rustb10.mf}{t}{\from{rustic.dtx}{base10b}} -\generateFile{rustb17.mf}{t}{\from{rustic.dtx}{base17b}} -\generateFile{rustl.mf}{t}{\from{rustic.dtx}{min}} -\generateFile{rustu.mf}{t}{\from{rustic.dtx}{maj}} -\generateFile{rusttitle.mf}{t}{\from{rustic.dtx}{mfd}} -\generateFile{rustpunct.mf}{t}{\from{rustic.dtx}{punct}} -\generateFile{rustlig.mf}{t}{\from{rustic.dtx}{lig}} -\generateFile{rustdig.mf}{t}{\from{rustic.dtx}{dig}} -%%% \generateFile{rustp.mf}{t}{\from{rustic.dtx}{xp}} - -\Msg{*** Generating the Font Definition files ***} -\usepostamble\defaultpostamble - -\generateFile{ot1rust.fd}{t}{\from{rustic.dtx}{fdot1}} -\generateFile{t1rust.fd}{t}{\from{rustic.dtx}{fdt1}} - -\Msg{*** Generating the LaTeX2e package files ***} - -\generateFile{rustic.sty}{t}{\from{rustic.dtx}{usc}} -\generateFile{allrust.sty}{t}{\from{rustic.dtx}{uscall}} - -\Msg{***********************************************************} -\Msg{*} -\Msg{* To finish the installation you have to move the following} -\Msg{* files into directories searched by TeX:} -\Msg{*} -\Msg{* Move these into the font source area:} -\Msg{* \space\space rust7.mf} -\Msg{* \space\space rust10.mf} -\Msg{* \space\space rust17.mf} -\Msg{* \space\space rustb7.mf} -\Msg{* \space\space rustb10.mf} -\Msg{* \space\space rustb17.mf} -\Msg{* \space\space rustl.mf} -\Msg{* \space\space rustu.mf} -\Msg{* \space\space rusttitle.mf} -\Msg{* \space\space rustpunct.mf} -\Msg{* \space\space rustlig.mf} -\Msg{* \space\space rustdig.mf} -%%% \Msg{* \space\space rustp.mf} -\Msg{*} -\Msg{* Move these into the LaTeX macro area:} -\Msg{* \space\space ot1rust.fd} -\Msg{* \space\space t1rust.fd} -\Msg{* \space\space rustic.sty} -\Msg{* \space\space allrust.sty} -\Msg{*} -\Msg{*} -\Msg{* To produce the documentation run the files ending with} -\Msg{* `.dtx' through LaTeX.} -\Msg{* Process any name.idx file by:} -\Msg{* \space\space\space\space makeindex -s gind.ist name} -\Msg{* Process any name.glo file by:} -\Msg{* \space\space\space\space makeindex -s gglo.ist -o name.gls name.glo} -\Msg{*} -\Msg{* Happy TeXing} -\Msg{***********************************************************} - -\endinput diff --git a/Master/texmf-dist/source/latex/bookhands/sqrcaps/sqrcaps.dtx b/Master/texmf-dist/source/latex/bookhands/sqrcaps/sqrcaps.dtx deleted file mode 100644 index 5e46e90e1c7..00000000000 --- a/Master/texmf-dist/source/latex/bookhands/sqrcaps/sqrcaps.dtx +++ /dev/null @@ -1,4908 +0,0 @@ -% \iffalse meta-comment -% -% sqrcaps.dtx -% Copyright 1999 Peter R. Wilson -% -% This program is provided under the terms of the -% LaTeX Project Public License distributed from CTAN -% archives in directory macros/latex/base/lppl.txt. -% -% Author: Peter Wilson (CUA) (now at: peter.r.wilson@boeing.com) -% -% If you do not have the docmfp package (available from CTAN in -% tex-archive/macros/latex/contrib/supported), comment out the -% \usepackage{docmfp} line below and uncomment the line following it. -% -%<*driver> -\documentclass{ltxdoc} -\usepackage{docmfp} -%%%%%% \providecommand{\DescribeVariable}[1]{} \newenvironment{routine}[1]{}{} -\EnableCrossrefs -\CodelineIndex -%% comment out the next line to show the code. -\OnlyDescription -\setcounter{StandardModuleDepth}{1} -\begin{document} - \DocInput{sqrcaps.dtx} -\end{document} -% -% -% \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} -% -% \def\fileversion{v1.0} -% \def\filedate{2002/12/30} -% \newcommand*{\Lpack}[1]{\textsf {#1}} ^^A typeset a package -% \newcommand*{\Lopt}[1]{\textsf {#1}} ^^A typeset an option -% \newcommand*{\file}[1]{\texttt {#1}} ^^A typeset a file -% \newcommand*{\Lcount}[1]{\textsl {\small#1}} ^^A typeset a counter -% \newcommand*{\pstyle}[1]{\textsl {#1}} ^^A typeset a pagestyle -% \newcommand*{\Lenv}[1]{\texttt {#1}} ^^A typeset an environment -% \newcommand*{\AD}{\textsc{ad}} -% \newcommand*{\thisfont}{Square Capitals} -% -% \title{The \Lpack{Square Capitals} fonts\thanks{This -% file has version number \fileversion, last revised -% \filedate.}} -% -% \author{% -% Peter Wilson\\ -% Catholic University of America \\ -% Now at \texttt{peter.r.wilson@boeing.com} -% } -% \date{\filedate} -% \maketitle -% \begin{abstract} -% The \Lpack{sqrcaps} and \Lpack{allsqrc} packages provide a set of -% Metafont \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 Metafont~\cite{METAFONT} version -% 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 for the fonts is in Sections~\ref{sec:mf} and~\ref{sec:fd} -% and source code for the package is in Section~\ref{sec:code}. -% -% \subsection{Manuscript book-hands} -% -% Before the invention of printing all books were written by hand. The book-hands -% used by the scribes and copyists for the manuscripts changed as time -% went on. Table~\ref{tab:1} lists some of the common book-hands which were used -% between the 1st and 15th centuries. The later book-hands formed the basis of the -% fonts used by the early printers, which in turn form the basis of the printing -% fonts in use today. -% -% The manuscript book-hands were written with a broad nibbed reed or quill -% pen. Among the distinguishing characteristics of a hand, apart from the -% actual shape of the letters, are the angle of the pen (which controls the -% variation between thick and thin strokes) and the height of a letter compared -% to the width of the nib. The lower the ratio of the letter height to nib -% width, the more condensed is the script. The scripts also varied in their -% typical height. -% -% Table~\ref{tab:1} gives an `average' x-height for each -% script, which I obtained by measuring a sample of photographs of -% manuscripts written in the various hands. About a dozen examples -% of each book-hand were measured. This figure should not be taken too -% seriously. -% -% There was not a sharp division between the use of one hand and another. -% Many manuscripts exhibit a variety of hands in the same document. For example, -% the scribe writing in an Uncial hand may have used Roman Rustic letters -% for capitals. Usually the same pen was used for the two different scripts. -% -% Generally speaking, as a hand got older it became more embelished, and -% therefore took longer to write. As this happened a new hand would appear that -% was faster, and which would eventually make the earlier one obsolete. -% -% Many of the book-hands were single-cased; that is, they did not have an -% upper- and lower-case as we do nowadays in Western scripts. On the other -% hand, a script might be majuscule or minuscule. A \textit{majuscule} script -% is one, like our upper-case, where the letters are drawn between two lines -% and are of a uniform height with no ascenders or descenders. -% A \textit{minuscule} script, like our lower-case, is drawn between four lines -% and has ascenders and descenders. -% -% \begin{table} -% \centering -% \caption{The main manuscript book-hands} \label{tab:1} -% \begin{tabular}{lccccc} \hline -% Name & Century & x-height & Height & Pen & Normalised \\ -% & & (mm) & (nib widths) & angle & height \\ \hline -% Roman Rustic & 1--6 & 5.7 & 4--6 & 45 & 1.90 \\ -% Uncial & 3--6 & 4.1 & 4--5 & 30 & 1.37 \\ -% Half Uncial & 3--9 & 3.2 & 3--6 & 20--30 & 1.07 \\ -% Artificial Uncial & 6--10 & 4.2 & 3--6 & 10 & 1.40 \\ -% Insular majuscule & 6--9 & 4.2 & 5 & 0--20 & 1.40 \\ -% Insular minuscule & 6 onward & 4.1 & 5--6 & 45--70 & 1.37 \\ -% Carolingian minuscule & 8--12 & 3.0 & 3--5 & 45 & 1.00 \\ -% Early Gothic & 11--12 & 3.8 & 4--6 & 20--45 & 1.27 \\ -% Gothic Textura & 13--15 & 3.9 & 3--5 & 30--45 & 1.30 \\ -% Gothic Prescius & 13 onward & 3.3 & 4--5 & 45 & 1.10 \\ -% Rotunda & 13--15 & 3.2 & 4--6 & 30 & 1.07 \\ -% Humanist minuscule & 14 onward & 3.0 & 4--5 & 30--40 & 1.00 \\ \hline -% \end{tabular} -% \end{table} -% -% During the period under consideration arabic numerals were effectively -% not used. At the beginning they were unknown and even though some knew -% of them towards the end, the glyphs used for them are not recognisable --- -% to me they look somewhat like cryllic letters --- and each locality -% and time had its own highly individualistic rendering. The general rule -% when using one of these book-hands is to write all numbers using -% roman numerals. -% -% The Roman alphabet consisted of 23 capital letters --- the J, U and W -% were absent. The book-hands initially used both a `u' and a `v' interchangeably -% but by the 10th century the practice had become to use the `v' before a vowel -% and the `u' otherwise. The letter corresponding to the W sound appeared -% in England around the 7th century in -% the form of the runic \textit{wen} character and by about the 11th century -% the `w' chacter was generally used. The `J' is the newest letter of all, not -% appearing until about the mid 16th century. -% -% In the first century punctuation was virtually unknown, and typically -% would not even be any additional space between individual words, never -% mind denoting ends of sentences. Sometimes a dot at mid-height would be -% used as a word seperator, or to mark off the end of a paragraph. Effectively -% a text was a continuous stream of letters. By the time that printing was -% invented, though, all of our modern punctuation marks were being used. -% -% Among all these manuscript hands, the Carolingian minuscule is the -% most important as our modern fonts are based on its letter shapes, and it is -% also at this point in time where the division occured between the black letter -% scripts as used even today in Germany, and the lighter fonts used elesewhere. -% The Rotunda and Humanist minuscule hands were developed in Italy and were -% essentially a rediscovery of the Carolingian minusucle. Guthenberg took the -% Gothic scripts as the model for his types. Later printers, -% such as Nicholas Jenson of Venice, -% took the Humanist scripts as their models. -% -% -% \subsection{The \thisfont{} script} -% -% The \thisfont{} hand 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 {\em The Art of Written Forms: The Theory and Practice of Calligraphy}. -% \newblock Holt, Rinehart and Winston, 1969. -% -% \bibitem[Bol95]{BOLOGNA95} -% Giulia Bologna. -% \newblock {\em Illuminated Manuscripts: The Book before Gutenberg}. -% \newblock Crescent Books, 1995. -% -% \bibitem[Day95]{DAY95} -% Lewis F.~Day. -% \newblock {\em Alphabets Old \& New}. -% \newblock (3rd edition originally published by B.~T.~Batsford, 1910) -% \newblock Senate, 1995. -% -% \bibitem[Dro80]{DROGIN80} -% Marc Drogin. -% \newblock {\em Medieval Calligraphy: Its History and Technique}. -% \newblock Allenheld, Osmun \& Co., 1980. -% -% \bibitem[Dru95]{DRUCKER95} -% Johanna Drucker. -% \newblock {\em The Alphabetic Labyrinth}. -% \newblock Thames \& Hudson, 1995. -% -% \bibitem[Fir93]{FIRMAGE93} -% Richard A.~Firmage. -% \newblock {\em The Alphabet Abecedarium}. -% \newblock David R~Goodine, 1993. -% -% \bibitem[Fli98]{LETTRINE} -% Daniel Flipo. -% \newblock {\em The LETTRINE package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1998. -% -% \bibitem[Har95]{HARRIS95} -% David Harris. -% \newblock {\em The Art of Calligraphy}. -% \newblock DK Publishing, 1995. -% -% \bibitem[Jen95]{BETON} -% Frank Jensen. -% \newblock {\em The BETON package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1995. -% -% \bibitem[Joh71]{JOHNSTON75} -% Edward Johnston (ed. Heather Child). -% \newblock {\em Formal Penship and Other Papers}. -% \newblock Penthalic, 1971. -% -% \bibitem[Knu87]{CM} -% Donald E.~Knuth. -% \newblock {\em Computer Modern Typefaces}. -% \newblock Addison-Wesley, 1987. -% -% \bibitem[Knu92]{METAFONT} -% Donald E.~Knuth. -% \newblock {\em The METAFONTbook}. -% \newblock Addison-Wesley, 1992. -% -% \bibitem[GMS94]{GOOSSENS94} -% Michel Goossens, Frank Mittelbach, and Alexander Samarin. -% \newblock {\em The LaTeX Companion}. -% \newblock Addison-Wesley Publishing Company, 1994. -% -% \bibitem[Tho75]{THOMAS75} -% Alan G.~Thomas. -% \newblock {\em Great Books and Book Collectors}. -% \newblock Weidenfield and Nichoson, 1975. -% -% \bibitem[Wil99]{DOCMFP} -% Peter R.~Wilson. -% \newblock {\em The DOCMFP Package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1999. -% -% \bibitem[Wil99b]{ROMANNUM} -% Peter R.~Wilson. -% \newblock {\em The ROMANNUM Package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1999. -% -% \end{thebibliography} -% } -% -% \section{The Metafont code} \label{sec:mf} -% -% -% As previously noted, this work is part of a larger project to provide -% fonts covering the main manuscript book-hands. As such, one of the -% aims is to produce a coordinated set of fonts, especially as multiple -% hands might be used in a single document. -% -% Noting that the hands tend to be somewhat larger than the typical 10pt -% size (where the x-height is approximately 1.5mm) used for modern books, -% I have also designed the fonts -% at a larger than normal size, then applied some non-linear factors when reducing -% them down to a 10pt size. -% Further, I have used the height of the Carolingian minuscule as a -% normalising factor when deciding on the absolute height of any particular -% script. The x-height of the Carolingian font is made equal to the -% x-height of the Computer Modern Roman (CMR) font. -% -% Modern fonts are effectively drawn. That is, the outline of the letter is -% drawn carefully and the center is filled with ink. This is shown to good -% effect in the Metafont code for the Computer Modern fonts~\cite{CM}. -% In contrast, the manuscript letters were inked by single pen strokes in -% a calligraphic manner. I have tried to repeat this calligraphic style -% in the Metafont code. -% -% As much as possible I have tried to use parameter values from the -% Computer Modern Roman (CMR) fonts in order to reduce possible -% infelicities if the CM and manuscript fonts are used together. However, -% few of the CMR parameters are applicable to the calligraphic style. -% -% -% \subsection{The parameter file} -% -% We deal with the parameter files first, and start by announcing -% what they are for. The \thisfont{} font comes in three sizes and also as a normal -% and a bold font. -% \begin{macrocode} -%<*base7|base10|base17|base7b|base10b|base17b> -%%%% SQRC7.MF Square Capitals at 7 point design size. -%%%% SQRC10.MF Square Capitals at 10 point design size. -%%%% SQRC17.MF Square Capitals at 17 point design size. -%%%% SQRCB7.MF Square Capitals Bold at 7 point design size. -%%%% SQRCB10.MF Square Capitals Bold at 10 point design size. -%%%% 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 - -%font_identifier:="SQRC"; font_size 7pt#; -%font_identifier:="SQRC"; font_size 10pt#; -%font_identifier:="SQRC"; font_size 17.28pt#; -%font_identifier:="SQRCB"; font_size 7pt#; -%font_identifier:="SQRCB"; font_size 10pt#; -%font_identifier:="SQRCB"; font_size 17.28pt#; - -% \end{macrocode} -% -% \DescribeVariable{jutstretch} -% The CMR scaling for lowercase serifs wrt 17pt size. -% \begin{macrocode} -% jutstretch:=1.19; -% jutstretch:=1.152; -% jutstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{stemstretch} -% The CMR scaling for lowercase stem widths wrt 17pt size. -% \begin{macrocode} -% stemstretch:=1.50; -% stemstretch:=1.31; -% 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} -% cap_jutstretch:=1.3; -% cap_jutstretch:=1.2; -% cap_jutstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{cap_stemstretch} -% The CMR scaling for uppercase stem width wrt 17pt size. -% \begin{macrocode} -% cap_stemstretch:=1.45; -% cap_stemstretch:=1.31; -% cap_stemstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{bfudge} -% Letter width scaling for bold font wrt normal font. -% \begin{macrocode} -% bfudge:=1.0; -% bfudge:=1.2; -% \end{macrocode} -% -% \DescribeVariable{szfudge} -% Width scaling wrt 17pt letter width. -% \begin{macrocode} -% szfudge:=1.18; -% szfudge:=1.0; -% 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} -% carol_height#:=108.5/36pt#; -% carol_height#:=155/36pt#; -% 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} -% u#:=15.5/36pt#; -% u#:=20/36pt#; -% u#:=32.5/36pt#; -% u#:=17.9/36pt#; -% u#:=23/36pt#; -% 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 -% cap_serif_fit#:=3.5/36pt#; % extra sidebar near uppercase serifs -% cap_serif_fit#:=5/36pt#; % extra sidebar near uppercase serifs -% cap_serif_fit#:=8/36pt#; % extra sidebar near uppercase serifs -% letter_fit#:=0pt#; % extra space added to all sidebars -% letter_fit#:=0pt#; % extra space added to all sidebars -% 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} -% sb#:=1/2u#; % unit for side bearings -% sb#:=1/2u#; % unit for side bearings -% sb#:=1/2u#; % unit for side bearings - -% \end{macrocode} -% -% \DescribeVariable{cap_height} -% The height of capital letters. -% \begin{macrocode} -% cap_height#:=172.2/36pt#; % height of caps -% cap_height#:=246/36pt#; % height of caps -% 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} -% thickfudge:=1/5; -% 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} -% rule_thickness#:=.34pt#; -% rule_thickness#:=.4pt#; -% 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} -% o#:=5/36pt#; -% o#:=8/36pt#; -% 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} -% -% \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 $0y$$: - 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 $0y$$: - 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 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. - -% -% \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} -% -% \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} -% -% \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} -% -% \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} -% -% \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} -% -% \end{macrocode} -% -% -% \section{The font definition files} \label{sec:fd} -% -% The font comes in normal and bold weights only. -% -% \begin{macrocode} -%<*fdot1> -\DeclareFontFamily{OT1}{sqrc}{} - \DeclareFontShape{OT1}{sqrc}{m}{n}{ <-8.5> sqrc7 <8.5-15> sqrc10 <15-> sqrc17 }{} - \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}{it}{ <-> sub * sqrc/bx/n }{} - \DeclareFontShape{OT1}{sqrc}{bx}{sl}{ <-> sub * sqrc/bx/n }{} - \DeclareFontShape{OT1}{sqrc}{b}{n}{ <-> sub * sqrc/bx/n }{} -% -% \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}{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}{it}{ <-> sub * sqrc/bx/n }{} - \DeclareFontShape{T1}{sqrc}{bx}{sl}{ <-> sub * sqrc/bx/n }{} - \DeclareFontShape{T1}{sqrc}{b}{n}{ <-> sub * sqrc/bx/n }{} -% -% \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} -% -% \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} -% -% \end{macrocode} -% -% -% -% -% -% \Finale -% \PrintIndex -% -\endinput - -%% \CharacterTable -%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -%% Digits \0\1\2\3\4\5\6\7\8\9 -%% Exclamation \! Double quote \" Hash (number) \# -%% Dollar \$ Percent \% Ampersand \& -%% Acute accent \' Left paren \( Right paren \) -%% Asterisk \* Plus \+ Comma \, -%% Minus \- Point \. Solidus \/ -%% Colon \: Semicolon \; Less than \< -%% Equals \= Greater than \> Question mark \? -%% Commercial at \@ Left bracket \[ Backslash \\ -%% Right bracket \] Circumflex \^ Underscore \_ -%% Grave accent \` Left brace \{ Vertical bar \| -%% Right brace \} Tilde \~} - - diff --git a/Master/texmf-dist/source/latex/bookhands/sqrcaps/sqrcaps.ins b/Master/texmf-dist/source/latex/bookhands/sqrcaps/sqrcaps.ins deleted file mode 100644 index 05a77644f8d..00000000000 --- a/Master/texmf-dist/source/latex/bookhands/sqrcaps/sqrcaps.ins +++ /dev/null @@ -1,101 +0,0 @@ -%% -%% sqrcaps.ins -%% Copyright 1999 Peter R. Wilson -%% -%% This program is provided under the terms of the -%% LaTeX Project Public License distributed from CTAN -%% archives in directory macros/latex/base/lppl.txt. -%% -%% Author: Peter Wilson (CUA) -%% now at: peter.r.wilson@boeing.com -%% -%% This file will generate fast loadable files and documentation -%% driver files from the doc files in this package when run through -%% LaTeX or TeX. -%% -%% --------------- start of docstrip commands ------------------ -%% -\def\batchfile{sqrcaps.ins} -\input docstrip.tex -\preamble - - Copyright 1999 Peter R. Wilson - - This program is provided under the terms of the - LaTeX Project Public License distributed from CTAN - archives in directory macros/latex/base/lppl.txt. - -Author: Peter Wilson (CUA) - now at: peter.r.wilson@boeing.com - -\endpreamble - -\keepsilent - -%%% \Msg{*** Generating the driver file ***} -%%% \generateFile{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{***********************************************************} -\Msg{*} -\Msg{* To finish the installation you have to move the following} -\Msg{* files into directories searched by TeX:} -\Msg{*} -\Msg{* Move these into the font source area:} -\Msg{* \space\space sqrc7.mf} -\Msg{* \space\space sqrc10.mf} -\Msg{* \space\space sqrc17.mf} -\Msg{* \space\space sqrcb7.mf} -\Msg{* \space\space sqrcb10.mf} -\Msg{* \space\space sqrcb17.mf} -\Msg{* \space\space sqrcl.mf} -\Msg{* \space\space sqrcu.mf} -\Msg{* \space\space sqrctitle.mf} -\Msg{* \space\space sqrcpunct.mf} -\Msg{* \space\space sqrclig.mf} -\Msg{* \space\space sqrcdig.mf} -\Msg{*} -\Msg{* Move these 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{*} -\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/Master/texmf-dist/source/latex/bookhands/tgothic/tgothic.dtx b/Master/texmf-dist/source/latex/bookhands/tgothic/tgothic.dtx deleted file mode 100644 index 68b4c095968..00000000000 --- a/Master/texmf-dist/source/latex/bookhands/tgothic/tgothic.dtx +++ /dev/null @@ -1,5402 +0,0 @@ -% \iffalse meta-comment -% -% tgothic.dtx -% Copyright 1999 Peter R. Wilson -% -% This program is provided under the terms of the -% LaTeX Project Public License distributed from CTAN -% archives in directory macros/latex/base/lppl.txt. -% -% Author: Peter Wilson (CUA) (now at: peter.r.wilson@boeing.com) -% -% If you do not have the docmfp package (available from CTAN in -% tex-archive/macros/latex/contrib/supported), comment out the -% \usepackage{docmfp} line below and uncomment the line following it. -% -%<*driver> -\documentclass{ltxdoc} -\usepackage{docmfp} -%%%%%% \providecommand{\DescribeVariable}[1]{} \newenvironment{routine}[1]{}{} -\EnableCrossrefs -\CodelineIndex -%% comment out the next line to show the code -\OnlyDescription -\setcounter{StandardModuleDepth}{1} -\begin{document} - \DocInput{tgothic.dtx} -\end{document} -% -% -% \fi -% -% \CheckSum{134} -% -% \DoNotIndex{\',\.,\@M,\@@input,\@addtoreset,\@arabic,\@badmath} -% \DoNotIndex{\@centercr,\@cite} -% \DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue} -% \DoNotIndex{\@input,\@ixpt,\@m} -% \DoNotIndex{\@minus,\@mkboth,\@ne,\@nil,\@nomath,\@plus,\@set@topoint} -% \DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb} -% \DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt} -% \DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt} -% \DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace} -% \DoNotIndex{\advance,\Alph,\alph} -% \DoNotIndex{\arabic,\ast,\begin,\begingroup,\bfseries,\bgroup,\box} -% \DoNotIndex{\bullet} -% \DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption} -% \DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass} -% \DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\endtrivlist} -% \DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup} -% \DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter} -% \DoNotIndex{\fbox} -% \DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef} -% \DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule} -% \DoNotIndex{\hsize,\hskip,\hspace,\hss,\if@tempswa,\ifcase,\or,\fi,\fi} -% \DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\fi,\fi,\fi,\fi,\fi} -% \DoNotIndex{\input} -% \DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark} -% \DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright} -% \DoNotIndex{\month,\newcommand,\newcounter,\newenvironment} -% \DoNotIndex{\NeedsTeXFormat,\newdimen} -% \DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number} -% \DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\p@} -% \DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip} -% \DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions} -% \DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright} -% \DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font} -% \DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily,\roman} -% \DoNotIndex{\roman,\secdef,\selectfont,\setbox,\setcounter,\setlength} -% \DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space} -% \DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase} -% \DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt} -% \DoNotIndex{\viipt,\vipt,\vskip,\vspace} -% \DoNotIndex{\wd,\xiipt,\year,\z@} -% -% \changes{v1.0}{2002/12/30}{First public release} -% -% \def\fileversion{v1.0} -% \def\filedate{2002/12/30} -% \newcommand*{\Lpack}[1]{\textsf {#1}} ^^A typeset a package -% \newcommand*{\Lopt}[1]{\textsf {#1}} ^^A typeset an option -% \newcommand*{\file}[1]{\texttt {#1}} ^^A typeset a file -% \newcommand*{\Lcount}[1]{\textsl {\small#1}} ^^A typeset a counter -% \newcommand*{\pstyle}[1]{\textsl {#1}} ^^A typeset a pagestyle -% \newcommand*{\Lenv}[1]{\texttt {#1}} ^^A typeset an environment -% \newcommand*{\AD}{\textsc{ad}} -% \newcommand*{\thisfont}{Gothic Textura Quadrata} -% -% \title{The \Lpack{Gothic Textura Quadrata} fonts\thanks{This -% file has version number \fileversion, last revised -% \filedate.}} -% -% \author{% -% Peter Wilson\\ -% Catholic University of America \\ -% Now at \texttt{peter.r.wilson@boeing.com} -% } -% \date{\filedate} -% \maketitle -% \begin{abstract} -% The \Lpack{tgothic} and \Lpack{alltgoth} packages provide a set of -% Metafont \thisfont{} book-hands -% as used -% for manuscripts in the 13th to the 15th century. This is one in a series -% of manuscript fonts. -% \end{abstract} -% \tableofcontents -% \listoftables -% -% -% -% -% \section{Introduction} -% -% The \Lpack{tgothic} and \Lpack{alltgoth} packages provide a Metafont~\cite{METAFONT} version -% of the \thisfont{} manuscript book-hand that was in use between about the -% thirteenth and fifteenth centuries~\AD. It is part of a project to provide fonts -% covering the major manuscript hands between the first century~\AD{} and -% the invention of printing. The principal resources used in this project -% are listed in the Bibliography. -% -% This manual is typeset according to the conventions of the -% \LaTeX{} \textsc{docstrip} utility which enables the automatic -% extraction of the \LaTeX{} macro source files~\cite{GOOSSENS94}. -% The \Lpack{docmfp} package is used for documenting the Metafont portions -% of the distribution~\cite{DOCMFP}. -% -% Section~\ref{sec:usc} describes the usage of the package. -% Commented code for the fonts is in Sections~\ref{sec:mf} and~\ref{sec:fd} -% and source code for the package is in Section~\ref{sec:code}. -% -% \subsection{Manuscript book-hands} -% -% Before the invention of printing all books were written by hand. The book-hands -% used by the scribes and copyists for the manuscripts changed as time -% went on. Table~\ref{tab:1} lists some of the common book-hands which were used -% between the 1st and 15th centuries. The later book-hands formed the basis of the -% fonts used by the early printers, which in turn form the basis of the printing -% fonts in use today. -% -% The manuscript book-hands were written with a broad nibbed reed or quill -% pen. Among the distinguishing characteristics of a hand, apart from the -% actual shape of the letters, are the angle of the pen (which controls the -% variation between thick and thin strokes) and the height of a letter compared -% to the width of the nib. The lower the ratio of the letter height to nib -% width, the more condensed is the script. The scripts also varied in their -% typical height. -% -% Table~\ref{tab:1} gives an `average' x-height for each -% script, which I obtained by measuring a sample of photographs of -% manuscripts written in the various hands. About a dozen examples -% of each book-hand were measured. This figure should not be taken too -% seriously. -% -% There was not a sharp division between the use of one hand and another. -% Many manuscripts exhibit a variety of hands in the same document. For example, -% the scribe writing in an Uncial hand may have used Roman Rustic letters -% for capitals. Usually the same pen was used for the two different scripts. -% -% Generally speaking, as a hand got older it became more embelished, and -% therefore took longer to write. As this happened a new hand would appear that -% was faster, and which would eventually make the earlier one obsolete. -% -% Many of the book-hands were single-cased; that is, they did not have an -% upper- and lower-case as we do nowadays in Western scripts. On the other -% hand, a script might be majuscule or minuscule. A \textit{majuscule} script -% is one, like our upper-case, where the letters are drawn between two lines -% and are of a uniform height with no ascenders or descenders. -% A \textit{minuscule} script, like our lower-case, is drawn between four lines -% and has ascenders and descenders. -% -% \begin{table} -% \centering -% \caption{The main manuscript book-hands} \label{tab:1} -% \begin{tabular}{lccccc} \hline -% Name & Century & x-height & Height & Pen & Normalised \\ -% & & (mm) & (nib widths) & angle & height \\ \hline -% Roman Rustic & 1--6 & 5.7 & 4--6 & 45 & 1.90 \\ -% Uncial & 3--6 & 4.1 & 4--5 & 30 & 1.37 \\ -% Half Uncial & 3--9 & 3.2 & 3--6 & 20--30 & 1.07 \\ -% Artificial Uncial & 6--10 & 4.2 & 3--6 & 10 & 1.40 \\ -% Insular majuscule & 6--9 & 4.2 & 5 & 0--20 & 1.40 \\ -% Insular minuscule & 6 onward & 4.1 & 5--6 & 45--70 & 1.37 \\ -% Carolingian minuscule & 8--12 & 3.0 & 3--5 & 45 & 1.00 \\ -% Early Gothic & 11--12 & 3.8 & 4--6 & 20--45 & 1.27 \\ -% Gothic Textura & 13--15 & 3.9 & 3--5 & 30--45 & 1.30 \\ -% Gothic Prescius & 13 onward & 3.3 & 4--5 & 45 & 1.10 \\ -% Rotunda & 13--15 & 3.2 & 4--6 & 30 & 1.07 \\ -% Humanist minuscule & 14 onward & 3.0 & 4--5 & 30--40 & 1.00 \\ \hline -% \end{tabular} -% \end{table} -% -% During the period under consideration arabic numerals were effectively -% not used. At the beginning they were unknown and even though some knew -% of them towards the end, the glyphs used for them are not recognisable --- -% to me they look somewhat like cryllic letters --- and each locality -% and time had its own highly individualistic rendering. The general rule -% when using one of these book-hands is to write all numbers using -% roman numerals. -% -% The Roman alphabet consisted of 23 capital letters --- the J, U and W -% were absent. The book-hands initially used both a `u' and a `v' interchangeably -% but by the 10th century the practice had become to use the `v' before a vowel -% and the `u' otherwise. The letter corresponding to the W sound appeared -% in England around the 7th century in -% the form of the runic \textit{wen} character and by about the 11th century -% the `w' chacter was generally used. The `J' is the newest letter of all, not -% appearing until about the mid 16th century. -% -% In the first century punctuation was virtually unknown, and typically -% would not even be any additional space between individual words, never -% mind denoting ends of sentences. Sometimes a dot at mid-height would be -% used as a word seperator, or to mark off the end of a paragraph. Effectively -% a text was a continuous stream of letters. By the time that printing was -% invented, though, all of our modern punctuation marks were being used. -% -% Among all these manuscript hands, the Carolingian minuscule is the -% most important as our modern fonts are based on its letter shapes, and it is -% also at this point in time where the division occured between the black letter -% scripts as used even today in Germany, and the lighter fonts used elesewhere. -% The Rotunda and Humanist minuscule hands were developed in Italy and were -% essentially a rediscovery of the Carolingian minusucle. Guthenberg took the -% Gothic scripts as the model for his types. Later printers, -% such as Nicholas Jenson of Venice, -% took the Humanist scripts as their models. -% -% -% \subsection{The \thisfont{} script} -% -% With the Gothic hands, used from the thirteenth century, the attention of -% the scribes moved from the individual letter to the word. The scripts -% changed to accomodate this interest so the appearance of the letters -% became subordinate to the overall appearance of the words they formed. -% Many of the letters appear to be indistinguishable today but the contemporary -% reading public seemed to have no difficulty. -% -% It was during the heyday of the Gothic scripts that separate capital -% letters were introduced. Also, as a small concession to legibility, -% the lowecase `i' acquired a small mark above it. Ligatures were similar -% to those in Early Gothic. The letter `w' was added to the hand early on -% and `j' started to appear after 1400, providing the full 26 letter alphabet -% for the first time. -% -% This font includes both lowercase and (fancy) uppercase letters. Guthenberg -% used this script as a model. -% -% \section{The \Lpack{tgothic} and \Lpack{alltgoth} packages} \label{sec:usc} -% -% The \thisfont{} font family is called |tgoth|. The font is supplied in both -% OT1 and T1 encodings. -% -% \subsection{The \Lpack{tgothic} 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{\tgothfamily} -% The |\tgothfamily| 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{\texttgoth} -% The command |\texttgoth{|\meta{text}|}| will typeset \meta{text} using the -% \thisfont{} fonts. -% -% \subsection{The \Lpack{alltgoth} 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{alltgoth} package automatically loads the \Lpack{tgothic} package, -% so its font commands are available if necessary. -% -% \StopEventually{ -% \bibliographystyle{alpha} -% \renewcommand{\refname}{Bibliography} -% \begin{thebibliography}{GMS94} -% \addcontentsline{toc}{section}{\refname} -% -% \bibitem[And69]{ANDERSON69} -% Donald M.~Anderson. -% \newblock {\em The Art of Written Forms: The Theory and Practice of Calligraphy}. -% \newblock Holt, Rinehart and Winston, 1969. -% -% \bibitem[Bol95]{BOLOGNA95} -% Giulia Bologna. -% \newblock {\em Illuminated Manuscripts: The Book before Gutenberg}. -% \newblock Crescent Books, 1995. -% -% \bibitem[Day95]{DAY95} -% Lewis F.~Day. -% \newblock {\em Alphabets Old \& New}. -% \newblock (3rd edition originally published by B.~T.~Batsford, 1910) -% \newblock Senate, 1995. -% -% \bibitem[Dro80]{DROGIN80} -% Marc Drogin. -% \newblock {\em Medieval Calligraphy: Its History and Technique}. -% \newblock Allenheld, Osmun \& Co., 1980. -% -% \bibitem[Dru95]{DRUCKER95} -% Johanna Drucker. -% \newblock {\em The Alphabetic Labyrinth}. -% \newblock Thames \& Hudson, 1995. -% -% \bibitem[Fir93]{FIRMAGE93} -% Richard A.~Firmage. -% \newblock {\em The Alphabet Abecedarium}. -% \newblock David R~Goodine, 1993. -% -% \bibitem[Fli98]{LETTRINE} -% Daniel Flipo. -% \newblock {\em The LETTRINE package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1998. -% -% \bibitem[Har95]{HARRIS95} -% David Harris. -% \newblock {\em The Art of Calligraphy}. -% \newblock DK Publishing, 1995. -% -% \bibitem[Jen95]{BETON} -% Frank Jensen. -% \newblock {\em The BETON package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1995. -% -% \bibitem[Joh71]{JOHNSTON75} -% Edward Johnston (ed. Heather Child). -% \newblock {\em Formal Penship and Other Papers}. -% \newblock Penthalic, 1971. -% -% \bibitem[Knu87]{CM} -% Donald E.~Knuth. -% \newblock {\em Computer Modern Typefaces}. -% \newblock Addison-Wesley, 1987. -% -% \bibitem[Knu92]{METAFONT} -% Donald E.~Knuth. -% \newblock {\em The METAFONTbook}. -% \newblock Addison-Wesley, 1992. -% -% \bibitem[GMS94]{GOOSSENS94} -% Michel Goossens, Frank Mittelbach, and Alexander Samarin. -% \newblock {\em The LaTeX Companion}. -% \newblock Addison-Wesley Publishing Company, 1994. -% -% \bibitem[Tho75]{THOMAS75} -% Alan G.~Thomas. -% \newblock {\em Great Books and Book Collectors}. -% \newblock Weidenfield and Nichoson, 1975. -% -% \bibitem[Wil99]{DOCMFP} -% Peter R.~Wilson. -% \newblock {\em The DOCMFP Package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1999. -% -% \bibitem[Wil99b]{ROMANNUM} -% Peter R.~Wilson. -% \newblock {\em The ROMANNUM Package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1999. -% -% \end{thebibliography} -% } -% -% \section{The Metafont code} \label{sec:mf} -% -% -% As previously noted, this work is part of a larger project to provide -% fonts covering the main manuscript book-hands. As such, one of the -% aims is to produce a coordinated set of fonts, especially as multiple -% hands might be used in a single document. -% -% Noting that the hands tend to be somewhat larger than the typical 10pt -% size (where the x-height is approximately 1.5mm) used for modern books, -% I have also designed the fonts -% at a larger than normal size, then applied some non-linear factors when reducing -% them down to a 10pt size. -% Further, I have used the height of the Carolingian minuscule as a -% normalising factor when deciding on the absolute height of any particular -% script. The x-height of the Carolingian font is made equal to the -% x-height of the Computer Modern Roman (CMR) font. -% -% Modern fonts are effectively drawn. That is, the outline of the letter is -% drawn carefully and the center is filled with ink. This is shown to good -% effect in the Metafont code for the Computer Modern fonts~\cite{CM}. -% In contrast, the manuscript letters were inked by single pen strokes in -% a calligraphic manner. I have tried to repeat this calligraphic style -% in the Metafont code. -% -% As much as possible I have tried to use parameter values from the -% Computer Modern Roman (CMR) fonts in order to reduce possible -% infelicities if the CM and manuscript fonts are used together. However, -% few of the CMR parameters are applicable to the calligraphic style. -% -% -% \subsection{The parameter file} -% -% We deal with the parameter files first, and start by announcing -% what they are for. The \thisfont{} font comes in three sizes and also as a normal -% and a bold font. -% \begin{macrocode} -%<*base7|base10|base17|base7b|base10b|base17b> -%%%% TGOTH7.MF Gothic Textura Quadrata at 7 point design size. -%%%% TGOTH10.MF Gothic Textura Quadrata at 10 point design size. -%%%% TGOTH17.MF Gothic Textura Quadrata at 17 point design size. -%%%% TGOTHB7.MF Gothic Textura Quadrata Bold at 7 point design size. -%%%% TGOTHB10.MF Gothic Textura Quadrata Bold at 10 point design size. -%%%% TGOTHB17.MF Gothic Textura Quadrata 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 - -%font_identifier:="TGOTH"; font_size 7pt#; -%font_identifier:="TGOTH"; font_size 10pt#; -%font_identifier:="TGOTH"; font_size 17.28pt#; -%font_identifier:="TGOTHB"; font_size 7pt#; -%font_identifier:="TGOTHB"; font_size 10pt#; -%font_identifier:="TGOTHB"; font_size 17.28pt#; - -% \end{macrocode} -% -% \DescribeVariable{jutstretch} -% The CMR scaling for lowercase serifs wrt 17pt size. -% \begin{macrocode} -% jutstretch:=1.19; -% jutstretch:=1.152; -% jutstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{stemstretch} -% The CMR scaling for lowercase stem widths wrt 17pt size. -% \begin{macrocode} -% stemstretch:=1.50; -% stemstretch:=1.31; -% stemstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{caprat} -% The scaling for capitals wrt lowercase. -% (the ratio for CMR10 is 1.59). -% \begin{macrocode} - caprat:=7/5; % ratio of capital height to minuscule height -% \end{macrocode} -% -% \DescribeVariable{cap_jutstretch} -% The CMR scaling for uppercase serifs wrt 17pt size. -% \begin{macrocode} -% cap_jutstretch:=1.3; -% cap_jutstretch:=1.2; -% cap_jutstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{cap_stemstretch} -% The CMR scaling for uppercase stem width wrt 17pt size. -% \begin{macrocode} -% cap_stemstretch:=1.45; -% cap_stemstretch:=1.31; -% cap_stemstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{bfudge} -% Letter width scaling for bold font wrt normal font. We don't really -% need to change this for bold fonts as the letter width is in terms -% of the pen, not the x-height. -% -% \begin{macrocode} -% bfudge:=1.0; -% bfudge:=1.0; %% normally 1.2 -% \end{macrocode} -% -% \DescribeVariable{szfudge} -% Width scaling wrt 17pt letter width. -% \begin{macrocode} -% szfudge:=1.18; -% szfudge:=1.0; -% szfudge:=1.0; -% \end{macrocode} -% -% \DescribeVariable{hstretch} -% Horizontal stretching factor wrt 17pt size letter width. -% \begin{macrocode} - hstretch:=szfudge*bfudge; -% \end{macrocode} -% -% \DescribeVariable{carol_height} -% The x-height of the Carolingian gothic font. -% \begin{macrocode} -% carol_height#:=108.5/36pt#; -% carol_height#:=155/36pt#; -% carol_height#:=268/36pt#; -% \end{macrocode} -% -% \DescribeVariable{vstretch} -% The height of this font wrt the Carolingian font. -% \begin{macrocode} - vstretch:=1.3; - -% \end{macrocode} -% -% \DescribeVariable{x_height} -% The x-height of lower case letters. Scaled from the Carolingian font. -% \begin{macrocode} - x_height#:=vstretch*carol_height#; -% \end{macrocode} -% -% \DescribeVariable{u} -% The unit width. The CMR values are used. -% \begin{macrocode} -% u#:=15.5/36pt#; -% u#:=20/36pt#; -% u#:=32.5/36pt#; -% u#:=17.9/36pt#; -% u#:=23/36pt#; -% 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 -% cap_serif_fit#:=3.5/36pt#; % extra sidebar near uppercase serifs -% cap_serif_fit#:=5/36pt#; % extra sidebar near uppercase serifs -% cap_serif_fit#:=8/36pt#; % extra sidebar near uppercase serifs -% letter_fit#:=0pt#; % extra space added to all sidebars -% letter_fit#:=0pt#; % extra space added to all sidebars -% letter_fit#:=-0.1pt#; % extra space added to all sidebars -% \end{macrocode} -% -% \DescribeVariable{sb} -% A length used for adjusting the side bearings of characters. Normally -% |1/2u| but want it less (1/2) for a Gothic. -% \begin{macrocode} -% sb#:=1/4u#; % unit for side bearings -% sb#:=1/4u#; % unit for side bearings -% sb#:=1/4u#; % unit for side bearings - -% \end{macrocode} -% -% \DescribeVariable{cap_sb} -% A length used for adjusting the side bearings of uppercase characters. -% \begin{macrocode} -% cap_sb#:=2sb#; % unit for uppercase side bearings -% cap_sb#:=2sb#; % unit for uppercase side bearings -% cap_sb#:=2sb#; % unit for uppercase side bearings - -% \end{macrocode} -% -% \DescribeVariable{cap_height} -% The height of capital letters. -% \begin{macrocode} -% cap_height#:=172.2/36pt#; % height of caps -% cap_height#:=246/36pt#; % height of caps -% 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} -% thickfudge:=1/5; -% thickfudge:=1/4; -% \end{macrocode} -% -% \DescribeVariable{thinfudge} -% The nib sharpness. -% \begin{macrocode} -thinfudge:=1/6; -% \end{macrocode} -% -% \DescribeVariable{thick} -% The maximum nib width. -% That is, the width of the thickest line that can be penned. -% \begin{macrocode} -thick#:=stemstretch*thickfudge*x_height#; % max pen breadth -% \end{macrocode} -% -% \DescribeVariable{thin} -% The nib thinness. -% That is, the width of the thinnest line that can be penned. -% \begin{macrocode} -thin#:=thinfudge*thick#; -% \end{macrocode} -% -% \DescribeVariable{pangle} -% The pen angle (in degrees). -% \begin{macrocode} -pangle:=45; % pen angle -% \end{macrocode} -% -% \DescribeVariable{stem_width} -% The width of a vertical stem. -% \begin{macrocode} -stem_width#:= thick#*(cosd pangle); -% \end{macrocode} -% -% \DescribeVariable{perpdec} -% \DescribeVariable{angdec} -% The perpendicular shift between pairs of thin decorative lines in capitals -% is |perpdec| and between angled lines is |angdec|. -% \begin{macrocode} -perpdec#:= 3thin#; -angdec#:= perpdec#/(cosd pangle); -% \end{macrocode} -% -% -% \DescribeVariable{ascratio} -% The height of lower case ascenders wrt |x_height|. -% \begin{macrocode} - ascratio:=5/4; -% \end{macrocode} -% -% \DescribeVariable{asc_height} -% The height of lower case ascenders. -% \begin{macrocode} - asc_height#:=ascratio*x_height#; -% \end{macrocode} -% -% \DescribeVariable{descratio} -% The depth of lower case descenders wrt |x_height|. -% \begin{macrocode} - descratio:=2/4; -% \end{macrocode} -% -% \DescribeVariable{desc_depth} -% The depth of lower case descenders. -% \begin{macrocode} - desc_depth#:=descratio*x_height#; -% \end{macrocode} -% -% \DescribeVariable{body_height} -% The height of the tallest character. -% \begin{macrocode} - body_height#:=caprat*asc_height#; -% \end{macrocode} -% -% \DescribeVariable{body_depth} -% The depth of the lowest character. -% \begin{macrocode} - body_depth#:=caprat*desc_depth#; -% \end{macrocode} -% -% \DescribeVariable{half_height} -% Half the normal letter height. -% \begin{macrocode} - half_height#:=1/2x_height#; % half the height of x height letters - -% \end{macrocode} -% -% \DescribeVariable{side} -% We might be using a square for the character design. -% \begin{macrocode} -side#:=x_height#; -% \end{macrocode} -% -% \DescribeVariable{rule_thickness} -% Thickness of rules (in math symbols). The CMR values are used. -% \begin{macrocode} -% rule_thickness#:=.34pt#; -% rule_thickness#:=.4pt#; -% rule_thickness#:=.6pt#; - -% \end{macrocode} -% -% \DescribeVariable{jutfudge} -% Controls the protrusion of serifs. -% \begin{macrocode} -%%%jutfudge:= 3/4; -jutfudge:= 1/2; -% \end{macrocode} -% -% \DescribeVariable{jut} -% The lowercase serif protrusion. -% \begin{macrocode} -jut#:=jutstretch*jutfudge*thick#; -% \end{macrocode} -% -% \DescribeVariable{srad} -% |srad| with |0 < srad < 1| controls the serif radius. -% \begin{macrocode} -srad:=0.8; % was 0.5 -% \end{macrocode} -% -% \DescribeVariable{trijut} -% The lowercase triangular serif protrusion. -% \begin{macrocode} -trijut#:=0.75jutstretch*thick#; -% \end{macrocode} -% -% \DescribeVariable{clubjutfudge} -% The fractional protusion of a club serif. -% \begin{macrocode} -clubjutfudge:=1/2; -% \end{macrocode} -% -% \DescribeVariable{clubjut} -% The lowercase club serif protrusion. -% \begin{macrocode} -clubjut#:=jutstretch*clubjutfudge*thick#; -% \end{macrocode} -% -% \DescribeVariable{wided} -% \DescribeVariable{widedmin} -% Default juts of wide (touching) diamonds. -% \begin{macrocode} -wided:= 0.75; -widedmin := 1.05 - wided; -% \end{macrocode} -% -% \DescribeVariable{narrowd} -% \DescribeVariable{narrowdmin} -% Default juts of narrow (non-touching) diamonds. -% \begin{macrocode} -narrowd:= 0.5; -narrowdmin := 0.7 - narrowd; -% \end{macrocode} -% -% \DescribeVariable{diawd} -% \DescribeVariable{diang} -% Default width and angle of diamonds. -% \begin{macrocode} -diawd := 1.0; -diang := 30; -% \end{macrocode} -% -% \DescribeVariable{fig_height} -% The height of numerals. Make these midway between normal and capital -% letters. -% \begin{macrocode} - fig_height#:=(0.5[1,caprat])*x_height#; -% \end{macrocode} -% -% \DescribeVariable{fig_width} -% The width of numerals. All numerals are the same width (roughly, an `o'). -% \begin{macrocode} - fig_width#:=hstretch*(4+wided+widedmin)*stem_width#; -% \end{macrocode} -% -% -% -% \DescribeVariable{o} -% Amount of overshoot for curves (as in an `o'). Use CMR values. -% \begin{macrocode} -% o#:=5/36pt#; -% o#:=8/36pt#; -% 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 tgothtitle %% switch to the driver file - -% \end{macrocode} -% -% The end of this code section. -% \begin{macrocode} -% -% \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 TGOTHTITLE.MF for the Gothic Textura Quadrata 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}{tgothic_font_setup} -% This macro contains the set up for the \thisfont{} fonts. -% \begin{macrocode} - -def tgothic_font_setup= % contains special stuff for tgothic fonts - define_pixels(side,half_height,carol_height,comma_width); - define_pixels(u,dot_size,letter_size,cap_height,width_adj,serif_fit, - cap_serif_fit,jut,clubjut,cap_jut,trijut); - define_pixels(fig_width); - define_whole_pixels(letter_fit,sb,cap_sb); - define_whole_vertical_pixels(body_height,asc_height,cap_height,x_height, - desc_depth,body_depth,fig_height); - define_corrected_pixels(o); - define_blacker_pixels(thick,thin); - define_pixels(stem_width); - define_pixels(perpdec,angdec); - let adjust_fit = normal_adjust_fit; -% \end{macrocode} -% \DescribeVariable{stylus} -% The pen for drawing the thinnest lines is |stylus|. -% \begin{macrocode} - pickup pencircle scaled thin; - stylus:=savepen; -% \end{macrocode} -% \DescribeVariable{thickstylus} -% The pen for drawing lines a bit thicker than the thinnest is |thickstylus|. -% \begin{macrocode} - pickup pencircle scaled (1.5thin); - thickstylus:=savepen; -% \end{macrocode} -% \DescribeVariable{quill} -% The normal calligraphic pen is |quill|. -% \begin{macrocode} - pickup pencircle xscaled thick yscaled thin rotated pangle; - quill:=savepen; - -% \end{macrocode} -% -% \DescribeVariable{threequarterquill} -% A pen with 3/4 of the width as quill (but with the same thinness). -% \begin{macrocode} - pickup pencircle xscaled 3/4thick yscaled thin rotated pangle; - threequarterquill := savepen; - -% \end{macrocode} -% -% \DescribeVariable{halfquill} -% A pen with 1/2 of the width as quill (but with the same thinness). -% \begin{macrocode} - pickup pencircle xscaled 1/2thick yscaled thin rotated pangle; - halfquill := savepen; - -% \end{macrocode} -% -% \DescribeVariable{quarterquill} -% A pen with 1/4 of the width as quill (but with the same thinness). -% \begin{macrocode} - pickup pencircle xscaled 1/4thick yscaled thin rotated pangle; - quarterquill := savepen; - -% \end{macrocode} -% -% -% \begin{macrocode} - numeric pcshiftx#; % x value of LHS of box wrt origin of char box - define_pixels(pcshiftx); - numeric sqxside#; % x size of the square - numeric sqyside#; % y size of the square - define_pixels(sqxside,sqyside); - -enddef; % end of tgothic_font_setup - -% \end{macrocode} -% \end{routine} -% -% -% \DescribeVariable{ductus} -% A boolean to control drawing the ductus (TRUE) or the full letter (FALSE). -% \begin{macrocode} -boolean ductus; -ductus:=false; -% \end{macrocode} -% -% \DescribeVariable{qhor} -% \DescribeVariable{qvert} -% The cosine and sine of the pen angle. -% \begin{macrocode} -numeric qhor, qvert; -qhor:=cosd(pangle); qvert:=sind(pangle); -% \end{macrocode} -% -% \DescribeVariable{pdir} -% The vector corresponding to the pen angle. -% \begin{macrocode} -pair pdir; pdir=dir(pangle); -% \end{macrocode} -% -% \DescribeVariable{ppdir} -% The vector that is perpendicular (anticlockwise) to the pen angle. -% \begin{macrocode} -pair ppdir; ppdir=dir(pangle+90); -% \end{macrocode} -% -% \begin{routine}{draw_upforkstem} -% A macro to draw a vertical stem with a fork at the top. -% |draw_upforkstem(1,2)| uses the current pen to draw a vertical line, whose absolute -% top and bottom are at |z1| and |z2|. The top (|z1|) has a wedge shaped slit. -% \begin{macrocode} - -def draw_upforkstem(suffix $, $$)= - pen oldpen; oldpen:=currentpen; - x$a=x$; top y$a = bot y$; % top of straight stem - draw z$a--z$$; % straight part - z$b = (rt x$, y$); z$c = (x$b, top y$a); - z$d = (lft x$, bot y$a); z$e = (x$d, y$); - pickup stylus; - rt x$cc = x$c; y$cc = y$c; - lft x$bb = x$b; y$bb = y$b; - lft x$dd = x$d; y$dd = y$d; - rt x$ee = x$e; y$ee = y$e; - filldraw z$a--z$bb..z$cc--cycle; % fork - filldraw z$a--z$dd..z$ee--cycle; - pickup oldpen; - labels($a,$b,$c,$d,$e); -enddef; % end of draw_upforkstem - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{draw_downforkstem} -% A macro to draw a vertical stem with a fork at the bottom. -% |draw_downforkstem(1,2)| uses the current pen to draw a vertical line, whose absolute -% top and bottom are at |z1| and |z2|. The bottom (|z2|) has a wedge shaped slit. -% \begin{macrocode} - -def draw_downforkstem(suffix $, $$)= - pen oldpen; oldpen:=currentpen; - x$$a=x$$; bot y$$a = top y$$; % bottom of straight stem - draw z$--z$$a; % straight part - z$$b = (rt x$$, y$$); z$$c = (x$$b, top y$$a); - z$$d = (lft x$$, bot y$$a); z$$e = (x$$d, y$$); - pickup stylus; - rt x$$cc = x$$c; y$$cc = y$$c; - lft x$$bb = x$$b; y$$bb = y$$b; - lft x$$dd = x$$d; y$$dd = y$$d; - rt x$$ee = x$$e; y$$ee = y$$e; - filldraw z$$a--z$$bb..z$$cc--cycle; % fork - filldraw z$$a--z$$dd..z$$ee--cycle; - pickup oldpen; - labels($$a,$$b,$$c,$$d,$$e); -enddef; % end of draw_downforkstem - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{draw_upcurlstem} -% A macro to draw a vertical stem with a curl to the left at the top. -% |draw_upcurlstem(1,2)| uses the current pen to draw a vertical line, whose absolute -% top and bottom are at |z1| and |z2|. The top (|z1|) has a fancy curl to the left, -% jutting out 3 stem widths. -% \begin{macrocode} - -def draw_upcurlstem(suffix $, $$)= - pen oldpen; oldpen:=currentpen; - path curlp[]; numeric curln[]; - x$a=x$; top y$a = y$; % top of straight stem - draw z$a--z$$; % straight part - curln1 := rt x$a - lft x$a; % stem width - x$b = x$a - 4/2curln1; y$b = y$a; % left jut - curlp1 := z$a{-pdir}..{left}z$b; - draw curlp1; - - x$c = x$a-3curln1; top y$c = bot y$a-1/2curln1; - x$f = x$b; y$f = 1/3[y$c,y$b]; - x$tb = rt x$b; y$tb = top y$b; - x$bb = lft x$b; y$bb = bot y$b; - curlp2 := z$tb--z$bb..{down}z$c..{ppdir}z$f; - pickup stylus; - draw curlp2; - pickup oldpen; - labels($a,$b,$c,$d,$e,$f); -enddef; % end of draw_upcurlstem - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{draw_updiamondstem} -% A macro to draw a vertical stem with a diamond at the top. -% |draw_updiamondstem(1,2,fr,minfr,wd,ang)| uses the quill pen to draw a vertical line, -% whose absolute -% top and bottom are at |z1| and |z2|. The top (|z1|) has a leftward diamond, whose -% left jut is |fr| times the width of the stem, right jut is |minfr*stem_width|, width -% is |wd*stem_width| and angle above the horizontal is |ang|. -% \begin{macrocode} - -def draw_updiamondstem(suffix $, $$)(expr fr, minfr, wd, phi)= - pen oldpen; oldpen:=currentpen; - numeric sj; sj := fr*stem_width; % jut distance - numeric sjr; sjr := minfr*stem_width; % right jut distance - numeric jw; jw := wd*stem_width; % jut width - %% $b is bottom left of jut, on LHS of stem - %% $c is leftmost point on jut - %% $d is topmost point on jut - %% $g is topmost point on stem - %% $e is on exprapolation of line from $d through $g - %% i.e., the rightmost point on jut - %% $f is on RHS of stem - pickup quill; - x$b = lft x$; - x$c = x$b - sj; y$c = y$ - jw*(cosd phi); % $c done - y$b = y$c - sj*(sind phi); % $b done - x$d = x$c + jw*(sind phi); y$d = y$; % $d done - x$g = x$f = rt x$; - y$g = y$ - (x$g-x$d)*(sind phi)/(cosd phi); % $g done - x$a = x$; top y$a = y$g; % $a done - x$e = x$g + sjr; z$e = whatever[z$d,z$g]; % $e done - z$f-z$e = whatever*(z$c-z$d); % $f done - x$h = x$b; y$h = bot y$a; - draw z$a--z$$; % straight part - pickup stylus; - lft x$cc = x$c; y$cc = y$c; - x$dd = x$d; top y$dd = y$d; - rt x$ee = x$e; bot y$ee=y$e; - filldraw z$b--z$cc--z$dd--z$ee--z$f--cycle; % diamond - if y$b > y$h: - lft x$hh = x$h; y$hh=y$h; - filldraw z$b--z$hh--z$g--cycle; - fi - pickup oldpen; - labels($a,$b,$c,$d,$e,$f); -enddef; % end of draw_updiamondstem - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{draw_downdiamondstem} -% A macro to draw a vertical stem with a diamond at the bottom. -% |draw_downdiamondstem(1,2,fr,minfr,wd,ang)| uses the quill pen to draw a vertical line, -% whose absolute -% top and bottom are at |z1| and |z2|. The bottom (|z2|) has a rightward diamond, whose -% right jut is |fr| times the width of the stem, left jut is |minfr*stem_width|, -% width is |wd*stem_width| and is at |ang| degrees below the horizontal. -% \begin{macrocode} - -def draw_downdiamondstem(suffix $, $$)(expr fr, minfr, wd, phi)= - pen oldpen; oldpen:=currentpen; - numeric sj; sj := fr*stem_width; % (left) jut distance - numeric sjr; sjr := minfr*stem_width;; % right jut distance - numeric jw; jw := wd*stem_width; % jut width - %% $$b is top right of jut, on RHS of stem - %% $$c is rightmost point on jut - %% $$d is bottommost point on jut - %% $$g is bottommost point on stem - %% $$e is on exprapolation of line from $d through $g - %% i.e., the leftmost point on jut - %% $$f is on LHS of stem - pickup quill; - x$$b = rt x$$; - x$$c = x$$b + sj; y$$c = y$$ + jw*(cosd phi); % $$c done - y$$b = y$$c + sj*(sind phi); % $$b done - x$$d = x$$c - jw*(sind phi); y$$d = y$$; % $$d done - x$$g = x$$f = lft x$$; - y$$g = y$$ + (x$$d-x$$g)*(sind phi)/(cosd phi); % $$g done - x$$a = x$$; bot y$$a = y$$g; % $$a done - x$$e = x$$g - sjr; z$$e = whatever[z$$d,z$$g]; % $$e done - z$$f-z$$e = whatever*(z$$c-z$$d); % $$f done - x$$h = x$$b; y$$h = top y$$a; - draw z$--z$$a; % straight part - pickup stylus; - rt x$$cc = x$$c; y$$cc=y$$c; - x$$dd = x$$d; bot y$$dd = y$$d; - lft x$$ee = x$$e; top y$$ee = y$$e; - filldraw z$$b--z$$cc--z$$dd--z$$ee--z$$f--cycle; % diamond - if y$$b < y$$h: - rt x$$hh = x$$h; y$$hh=y$$h; - filldraw z$$b--z$$hh--z$$g--cycle; - fi - pickup oldpen; - labels($$a,$$b,$$c,$$d,$$e,$$f); -enddef; % end of draw_downdiamondstem - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{draw_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 $0y$$: - 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 $0y$$: - 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 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; -tgothic_font_setup; - -% \end{macrocode} -% -% -% We generate letters, together with some punctuation and -% analphabetics. -% \begin{macrocode} - -input tgothl; % lower case -input tgothu; % capitals -input tgothpunct; % punctuation -input tgothlig; % the several dashes -input tgothdig; % arabic digits - -% \end{macrocode} -% -% Set up the spacings, stretches and shrinks. -% -% \begin{macrocode} - -font_slant slant; font_x_height x_height#; -if monospace: - font_normal_space 2vstretch*stem_width#; % no stretching or shrinking - font_quad vstretch*18u#; - font_extra_space vstretch*9u#; -else: - font_normal_space 2vstretch*stem_width#+2letter_fit#; - font_normal_stretch vstretch*3u#; font_normal_shrink vstretch*2u#; - font_quad vstretch*18u#+4letter_fit#; - font_extra_space vstretch*2u#; - -% \end{macrocode} -% -% Finally, do the ligtables, but I don't think they are needed (yet?). -% -% \begin{macrocode} - -fi - -bye. - - k#:=-.5u#; kk#:=-1.5u#; kkk#:=-2u#; % three degrees of kerning - kks#:=-4u#; kkx#:=-1.5u#; kkj#:=-2u#; kkr#:=-5u#; kkrs#:=-2u#; kkrl#:=-8u#; - ligtable "s": - "a" kern kks#, "A" kern kks#, - "c" kern kks#, "C" kern kks#, - "d" kern kks#, "D" kern kks#, - "e" kern kks#, "E" kern kks#, - "f" kern kks#, "F" kern kks#, - "g" kern kks#, "G" kern kks#, - "i" kern kks#, "I" kern kks#, - "j" kern kks#, "J" kern kks#, - "k" kern kks#, "K" kern kks#, - "m" kern kks#, "M" kern kks#, - "n" kern kks#, "N" kern kks#, - "o" kern kks#, "O" kern kks#, - "p" kern kks#, "P" kern kks#, - "q" kern kks#, "Q" kern kks#, - "r" kern kks#, "R" kern kks#, - "t" kern kks#, "T" kern kks#, - "u" kern kks#, "U" kern kks#, - "v" kern kks#, "V" kern kks#, - "w" kern kks#, "W" kern kks#, - "x" kern kks#, "X" kern kks#, - "y" kern kks#, "Y" kern kks#, - "z" kern kks#, "Z" kern kks#; - - ligtable "S": - "a" kern kks#, "A" kern kks#, - "c" kern kks#, "C" kern kks#, - "d" kern kks#, "D" kern kks#, - "e" kern kks#, "E" kern kks#, - "f" kern kks#, "F" kern kks#, - "g" kern kks#, "G" kern kks#, - "i" kern kks#, "I" kern kks#, - "j" kern kks#, "J" kern kks#, - "k" kern kks#, "K" kern kks#, - "m" kern kks#, "M" kern kks#, - "n" kern kks#, "N" kern kks#, - "o" kern kks#, "O" kern kks#, - "p" kern kks#, "P" kern kks#, - "q" kern kks#, "Q" kern kks#, - "r" kern kks#, "R" kern kks#, - "t" kern kks#, "T" kern kks#, - "u" kern kks#, "U" kern kks#, - "v" kern kks#, "V" kern kks#, - "w" kern kks#, "W" kern kks#, - "x" kern kks#, "X" kern kks#, - "y" kern kks#, "Y" kern kks#, - "z" kern kks#, "Z" kern kks#; - - ligtable "x": - "a" kern kkx#, "A" kern kkx#, - "b" kern kkx#, "B" kern kkx#, - "c" kern kkx#, "C" kern kkx#, - "d" kern kkx#, "D" kern kkx#, - "e" kern kkx#, "E" kern kkx#, - "g" kern kkx#, "G" kern kkx#, - "j" kern kkx#, "J" kern kkx#, - "l" kern kkx#, "L" kern kkx#, - "o" kern kkx#, "O" kern kkx#, - "q" kern kkx#, "Q" kern kkx#, - "t" kern kkx#, "T" kern kkx#, - "u" kern kkx#, "U" kern kkx#, - "v" kern kkx#, "V" kern kkx#, - "w" kern kkx#, "W" kern kkx#, - "y" kern kkx#, "Y" kern kkx#; - - ligtable "X": - "a" kern kkx#, "A" kern kkx#, - "b" kern kkx#, "B" kern kkx#, - "c" kern kkx#, "C" kern kkx#, - "d" kern kkx#, "D" kern kkx#, - "e" kern kkx#, "E" kern kkx#, - "g" kern kkx#, "G" kern kkx#, - "j" kern kkx#, "J" kern kkx#, - "l" kern kkx#, "L" kern kkx#, - "o" kern kkx#, "O" kern kkx#, - "q" kern kkx#, "Q" kern kkx#, - "t" kern kkx#, "T" kern kkx#, - "u" kern kkx#, "U" kern kkx#, - "v" kern kkx#, "V" kern kkx#, - "w" kern kkx#, "W" kern kkx#, - "y" kern kkx#, "Y" kern kkx#; - - ligtable "a": "A": - "b": "B": - "c": "C": - "d": "D": - "e": "E": - "h": "H": - "i": "I": - "k": "K": - "l": "L": - "m": "M": - "n": "N": - "o": "O": - "p": "P": - "t": "T": - "u": "U": - "v": "V": - "w": "W": - "z": "Z": - "j" kern kkj#, "J" kern kkj#; - - ligtable "r": - "a" kern kkr#, "A" kern kkr#, - "b" kern kkr#, "B" kern kkr#, - "c" kern kkr#, "C" kern kkr#, - "d" kern kkr#, "D" kern kkr#, - "e" kern kkr#, "E" kern kkr#, - "f" kern kkrs#, "F" kern kkrs#, - "g" kern kkrs#, "G" kern kkrs#, - "h" kern kkr#, "H" kern kkr#, - "i" kern kkr#, "I" kern kkr#, - "j" kern kkj#, "J" kern kkj#, - "k" kern kkrs#, "K" kern kkrs#, - "l" kern kkr#, "L" kern kkr#, - "m" kern kkr#, "M" kern kkr#, - "n" kern kkrs#, "N" kern kkrs#, - "o" kern kkr#, "O" kern kkr#, - "p" kern kkrs#, "P" kern kkrs#, - "q" kern kkr#, "Q" kern kkr#, - "r" kern kkrs#, "R" kern kkrs#, - "s" kern kkr#, "S" kern kkr#, - "t" kern kkr#, "T" kern kkr#, - "u" kern kkr#, "U" kern kkr#, - "v" kern kkr#, "V" kern kkr#, - "w" kern kkr#, "W" kern kkr#, - "x" kern kkx#, "X" kern kkx#, - "y" kern kkr#, "Y" kern kkr#, - "z" kern kkr#, "Z" kern kkr#; - - ligtable "R": - "a" kern kkr#, "A" kern kkr#, - "b" kern kkr#, "B" kern kkr#, - "c" kern kkr#, "C" kern kkr#, - "d" kern kkr#, "D" kern kkr#, - "e" kern kkr#, "E" kern kkr#, - "f" kern kkrs#, "F" kern kkrs#, - "g" kern kkrs#, "G" kern kkrs#, - "h" kern kkr#, "H" kern kkr#, - "i" kern kkr#, "I" kern kkr#, - "j" kern kkj#, "J" kern kkj#, - "k" kern kkrs#, "K" kern kkrs#, - "l" kern kkr#, "L" kern kkr#, - "m" kern kkr#, "M" kern kkr#, - "n" kern kkrs#, "N" kern kkrs#, - "o" kern kkr#, "O" kern kkr#, - "p" kern kkrs#, "P" kern kkrs#, - "q" kern kkr#, "Q" kern kkr#, - "r" kern kkrs#, "R" kern kkrs#, - "s" kern kkr#, "S" kern kkr#, - "t" kern kkr#, "T" kern kkr#, - "u" kern kkr#, "U" kern kkr#, - "v" kern kkr#, "V" kern kkr#, - "w" kern kkr#, "W" kern kkr#, - "x" kern kkx#, "X" kern kkx#, - "y" kern kkr#, "Y" kern kkr#, - "z" kern kkr#, "Z" kern kkr#; - - -fi - -bye. - -% -% \end{macrocode} -% -% \subsection{The code for normal letters} -% -% The following code is for the lower case characters. -% -% \begin{macrocode} -%<*min> -% TGOTHL.MF Program file for Gothic Textura Quadrata lower case -% - -% \end{macrocode} -% -% -% \begin{routine}{a} -% The letter `a'. -% \begin{macrocode} -cmchar "TGOTH letter a"; -beginchar("a", 2sb#+hstretch*((3+widedmin+wided)*stem_width#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pair pr[]; -pickup quill; -%% left hand -lft x1 = pcshiftx + widedmin*stem_width; y1 = 1/2h; -x2 = x1; y2 = 0; -draw_downdiamondstem(1,2,wided,widedmin,diawd,diang); -%% right stem -rt x3 = w - pcshiftx - wided*stem_width; y3=h; -x4=x3; y4=0; -z34=1/2[z3,z4]; -draw_updiamondstem(3,34,1.0,0.1,diawd,diang); -draw_downdiamondstem(34,4,wided,widedmin,diawd,diang); -%% swirl -x11=rt x1; y11 = top y1; -pickup stylus; -draw z3d--z3c..{-ppdir}z11; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,11,12,13,14,15,100); -endchar; % end "a" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{b} -% The letter `b'. -% \begin{macrocode} -cmchar "TGOTH letter b"; -beginchar("b", 2sb#+hstretch*((3 + widedmin + narrowdmin)*stem_width#), - asc_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pcshiftx := sb; -pickup quill; -n1:=w-2pcshiftx; % actual letter width -n2:=h/ascratio; % top of bowl -%%ductus:=true; -lft x1 = pcshiftx + widedmin*st; y1=h; -x2 = x1; y2=0; -z3=1/2[z1,z2]; -draw_upforkstem(1,3); -draw_downdiamondstem(3,2,1.0,widedmin,diawd,diang); -lft x6 = x2c; bot y6 = y2c; -x4 = x6; y4=n2; -draw_updiamondstem(4,6,narrowd,narrowdmin,diawd,diang); -x7 = x1; z7 = whatever[z4d,z4c]; -pickup stylus; -draw z4d--z7; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,100); -endchar; % end "b" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{c} -% The letter `c'. -% \begin{macrocode} -cmchar "TGOTH letter c"; -beginchar("c", 2sb#+hstretch*((3+wided)*stem_width#), - x_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; -st := stem_width; -pcshiftx := sb; -pickup quill; -%% left -lft x1 = pcshiftx+wided*st; y1 = 3/4h; -x2 = x1; y2 = 0; -draw_downdiamondstem(1,2,wided,widedmin,diawd,diang); -%% top -lft x3 = rt x1; bot y3 = top y1; -rt x4 = w - pcshiftx; -z3 - z4 = -whatever*ppdir; -draw z3--z4; -z11-z2c = z2c - z2d; -pickup stylus; -draw z2d--z11; -ductus:=false; -penlabels(1,2,3,4,5,6,14,16,17,18,100); -endchar; % end "c" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{d} -% The letter `d'. -% \begin{macrocode} -cmchar "TGOTH letter d"; -beginchar("d", 2sb#+hstretch*((3+widedmin+narrowdmin)*stem_width#), - asc_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pcshiftx := sb; -pickup quill; -n1 = h/ascratio; % x-height -%% left -n2 := st*(cosd diang); -lft x1 = pcshiftx + widedmin*st; top y1 = 12/16n1; -x2=x1; y2=0; -draw_downdiamondstem(1,2, 1.0, widedmin, diawd,diang); -%% right -rt x3 = w-pcshiftx-narrowdmin*st; y3=h; -x4 = x3; bot y4 = y2c; -draw_updiamondstem(3,4, 2.0, narrowdmin, diawd,diang); -x31 = lft x1; y31 = bot y1; -x32 = rt x1; y32 = top y1; -z33 = whatever[z31,z32] = whatever[z3e,z3c]; -pickup stylus; -draw z31--z33; -ductus:=false; -penlabels(0,1,2,3,4,5,6,7,8,100); -endchar; % end "d" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{e} -% The letter `e'. -% \begin{macrocode} -cmchar "TGOTH letter e"; -beginchar("e", 2sb#+hstretch*((3+wided)*stem_width#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -numeric st; -st := stem_width; -path pth[]; -pickup quill; -%% left -lft x1 = pcshiftx+wided*st; y1 = 3/4h; -x2 = x1; y2 = 0; -draw_downdiamondstem(1,2,wided,widedmin,diawd,diang); -%% top -lft x3 = rt x1; bot y3 = top y1; -rt x4 = w - pcshiftx; -z3 - z4 = -whatever*ppdir; -draw z3--z4; -x5 = x1; -z4-z5 = whatever*pdir; -pickup stylus; -draw z4--z5; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,17,27,34,70,100); -endchar; % end "e" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{f} -% The letter `f'. -% \begin{macrocode} -cmchar "TGOTH letter f"; -beginchar("f", 2sb#+hstretch*((3+widedmin)*stem_width#), - (asc_height#), 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -pcshiftx := sb; -pickup quill; -n1 := h/ascratio; % x-height -%% stem -lft x1=lft x2=pcshiftx+widedmin*st; y2=0; top y1 = h - (top y2 - bot y2); -draw_downdiamondstem(1,2,wided,widedmin,diawd,diang); -%% top bar -lft x3 = rt x1; rt x5 = w-pcshiftx; bot y3 = top y1; y5=y3; -draw z3--z5; -%% middle bar -lft x7 = pcshiftx; rt x9 = x5; -y7 = y9 = 10/16h; -draw z7--z9; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,14,15,16,100); -endchar; % end "f" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{g} -% The letter `g'. -% \begin{macrocode} -cmchar "TGOTH letter g"; -beginchar("g", 2sb#+hstretch*((4)*stem_width#), - x_height#, desc_depth#); -adjust_fit(0,0); -path pth[]; -pair vec[]; -numeric n[]; -numeric st; st := stem_width; -pcshiftx := sb; -pickup quill; -%% left -lft x1 = pcshiftx; -x2 = x1; bot y2 = 0; top y1 = h - (top y2 - bot y2); -draw z1--z2; -x3 = x4 = x1 + 2st; y4 = y2; -lft x13 = rt x1; bot y13 = top y1; -(z3-z13) = whatever*(dir -diang); -draw z13--z3--z4; -z34 = 1/2[z13,z3]; rt x37 = w-pcshiftx; top y37 = h; -draw z34{right}..{pdir}z37; -pickup stylus; -bot y5 = -d; -(z4-z5) = whatever*pdir; -draw z4--z5; -pickup quill; -%% bottom loop -z21 = z2; -lft x25 = x5; bot y25=-d; -x29 = 1/2[x3,x37]; -(z29-z21) = whatever*(dir -diang); -x23 = x29; y23 = 1/2[y29,y25]; -draw z21{dir - diang}..z23{down}..{left}z25; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,11,12,13,31,32,33,34,35,36,100); -endchar; % end "g" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{h} -% The letter `h'. -% \begin{macrocode} -cmchar "TGOTH letter h"; -beginchar("h", 2sb#+hstretch*((3 + narrowd + narrowdmin)*stem_width#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -numeric n[]; -n1 = h/ascratio; -%% stem -lft x1=lft x2=pcshiftx + narrowdmin*stem_width; -y1=h; y2=0; -z12 = 1/2[z1,z2]; -draw_upforkstem(1,12); -draw_downdiamondstem(12,2,narrowd,narrowdmin,diawd,diang); -%% bowl -x3 = x1 + 2stem_width; x4 = x3; -y3 = n1; y4=0; -z34 = 1/2[z3,z4]; -draw_updiamondstem(3,34,narrowd,narrowdmin,diawd,diang); -draw_downdiamondstem(34,4,narrowd,narrowdmin,diawd,diang); -x7 = x1; z7 = whatever[z3d,z3c]; -pickup stylus; -draw z3d--z7; -penlabels(1,2,3,4,5,6,100); -endchar; % end "h" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{i} -% The letter `i'. -% \begin{macrocode} -cmchar "TGOTH letter i"; -beginchar("i", 2sb#+hstretch*(2stem_width#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -x1 = x2 = 1/2w; y1 = h; y2 = 0; -z12 = 1/2[z1,z2]; -draw_updiamondstem(1,12,1/2,1/2,diawd,diang); -draw_downdiamondstem(12,2,1/2,1/2,diawd,diang); -x3= x1-thin; bot y3 = h + 1/2stem_width; -z4 = (x3+3thin,y3); -pickup halfquill; -draw z3--z4; -penlabels(1,2,100); -endchar; % end "i" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{j} -% The letter `j'. This letter was not in the script, it being a later invention. -% \begin{macrocode} -cmchar "TGOTH letter j"; -beginchar("j", sb#+hstretch*(5/2stem_width#), - x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% stem -rt x1 = w-pcshiftx - 1/2stem_width; y1 = h; -x2=x1; y2=-1/2d; -%% bottom hook -lft x3 = pcshiftx; bot y3 = -d; -draw_updiamondstem(1,2,narrowd,narrowdmin,diawd,diang); -draw z2{down}..z3{-pdir}; % hook -ductus:=false; -penlabels(1,2,3,100); -endchar; % end "j" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{k} -% The letter `k'. -% \begin{macrocode} -cmchar "TGOTH letter k"; -beginchar("k", 2sb#+hstretch*((3 + narrowd + narrowdmin)*stem_width#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -path pth[]; -numeric n[]; -numeric st; st := stem_width; -pickup quill; -%% stem -n1 = h/ascratio; % x-height -lft x1=lft x2=pcshiftx + narrowdmin*st; -y1=h; y2=0; -z12 = 1/2[z1,z2]; -draw_upforkstem(1,12); -draw_downdiamondstem(12,2, narrowd, narrowdmin, diawd,diang); -%% right leg -x3 = x1 + 2st; y3 = 8/16n1; -x4 = x3; y4 = 0; -z34 = 1/2[z3,z4]; -draw_downdiamondstem(34,4, narrowd, narrowdmin, diawd,diang); -draw z3--z34; -lft x5 = rt x1; -(z3-z5) = whatever*(dir -diang); -draw z5--z3; - -%% top arm -x6 = 1/2[x3, rt x3]; -(z6-z5) = whatever*(pdir); -rt x8 = lft x5; top y8 = bot y5+thick; -(z7-z8) = whatever*(z6-z5); -(z7-z6)=whatver*(z5-z3); -draw z6--z7; -pickup stylus; -draw z5--z6--z7--z8; - -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,13,14,100); -endchar; % end "k" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{l} -% The letter `l'. -% \begin{macrocode} -cmchar "TGOTH letter l"; -beginchar("l", 2sb#+hstretch*((2 + widedmin)*stem_width#), - asc_height#, 0); -adjust_fit(0,0); -numeric st; st := stem_width; -pcshiftx := sb; -pickup quill; -lft x1=pcshiftx + widedmin*st; y1=h; -x2=x1; y2 =0; -z3 = 1/2[z1,z2]; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_upforkstem(1,3); -draw_downdiamondstem(3,2,1.0,widedmin,diawd,diang); -ductus:=false; -penlabels(1,2,3,4,100); -endchar; % end "l" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{m} -% The letter `m'. -% \begin{macrocode} -cmchar "TGOTH letter m"; -beginchar("m", 2sb#+hstretch*((5+wided+narrowd)*stem_width#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pickup quill; -%% left stem -lft x1=pcshiftx+wided*stem_width; y1 = y3 = y5 = h; -x2=x1; y2=y4=y6=0; -z12=1/2[z1,z2]; -draw_updiamondstem(1,12,wided,widedmin,diawd,diang); -draw_downdiamondstem(12,2,narrowd,narrowdmin,diawd,diang); -%% right stem -rt x5 = rt x6 = w-pcshiftx-narrowd*stem_width; -z56 = 1/2[z5,z6]; -draw_updiamondstem(5,56,wided,widedmin,diawd,diang); -draw_downdiamondstem(56,6,narrowd,narrowdmin,diawd,diang); -%% middle stem -z3=1/2[z1,z5]; z4 = 1/2[z2,z6]; z34=1/2[z3,z4]; -draw_updiamondstem(3,34,wided,widedmin,diawd,diang); -draw_downdiamondstem(34,4,narrowd,narrowdmin,diawd,diang); -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 "TGOTH letter n"; -beginchar("n", 2sb#+hstretch*((3+wided+narrowd)*stem_width#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% left stem -lft x1 = pcshiftx + wided*stem_width; y1 = h; -x2 = x1; y2 = 0; -z12 = 1/2[z1,z2]; -draw_updiamondstem(1,12,wided,widedmin,diawd,diang); -draw_downdiamondstem(12,2,narrowd,narrowdmin,diawd,diang); -%% right stem -rt x3 = w-pcshiftx - narrowd*stem_width; y3=y1; -x4=x3;y4=y2; -z34=1/2[z3,z4]; -draw_updiamondstem(3,34,wided,widedmin,diawd,diang); -draw_downdiamondstem(34,4,narrowd,narrowdmin,diawd,diang); -penlabels(1,2,3,4,5,6,13,14,100); -endchar; % end "n" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{o} -% The letter `o'. -% \begin{macrocode} -cmchar "TGOTH letter o"; -beginchar("o", 2sb#+hstretch*((3 + narrowdmin + narrowdmin)*stem_width#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -numeric st; st := stem_width; -pickup quill; -%% bottom left -lft x12 = pcshiftx + narrowdmin*st; y12 = 1/2h; -x2 = x12; y2 = 0; -draw_downdiamondstem(12,2, 1.0, narrowdmin, diawd,diang); -%% right -rt x3 = w - pcshiftx - narrowdmin*st; x4=x3; -y3 = h; bot y4 = y2c; -draw_updiamondstem(3,4, 1.0, narrowdmin, diawd,diang); -%% top left -x1 = x12; top y1 = y3c; -draw z1--z12; -ductus:=false; -penlabels(1,2,3,4,5,100); -endchar; % end "o" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{p} -% The letter `p'. -% \begin{macrocode} -cmchar "TGOTH letter p"; -beginchar("p", 2sb#+hstretch*((3 + wided + widedmin)*stem_width#), - x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -numeric st; st := stem_width; -pickup quill; -%% stem -lft x1=lft x2=pcshiftx+wided*st; -y1=h; y2=-d; -z12 = 1/2[z1,z2]; -draw_updiamondstem(1,12,wided,widedmin,diawd,diang); -draw_downforkstem(12,2); -%% bowl -x3 = x4 = x1 + 2st; -y3 = y1; bot y4 = 0; -draw_updiamondstem(3,4,wided,widedmin,diawd,diang); -lft x5 = pcshiftx; y5 = y4; -draw z5--z4; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,100); -endchar; % end "p" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{q} -% The letter `q'. -% \begin{macrocode} -cmchar "TGOTH letter q"; -beginchar("q", 2sb#+hstretch*((3 + widedmin)*stem_width#), - x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -numeric st; st := stem_width; -pickup quill; -%% left/bottom of bowl -y99 = 0; -lft x1 = pcshiftx +widedmin*st; top y1 = h - (top y99 - bot y99); -x2 = x1; y2 = 0; -draw_downdiamondstem(1,2, 1.0, widedmin,diawd,diang); -%% rest -x3 = x1 + 2st; x4 = x3; y3 = y1; y4 = -d; -lft x5 = rt x1; bot y5 = top y1; -draw_downforkstem(3,4); -draw z5--z3; -ductus:=false; -penlabels(0,1,2,3,4,5,6,7,8,100); -endchar; % end "q" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{r} -% The letter `r'. -% \begin{macrocode} -cmchar "TGOTH letter r"; -beginchar("r", 2sb#+hstretch*((3+wided)*stem_width#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -numeric st; st := stem_width; -pickup quill; -%% stem -lft x1=lft x2=pcshiftx + wided*st; -y1=h; y2=0; -z12 = 1/2[z1,z2]; -draw_updiamondstem(1,12,wided,widedmin,diawd,diang); -draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); -%% bar -lft x3 = rt x1; rt x4 = w-pcshiftx; top y3 = top y4 = h; -draw z3--z4; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,100); -endchar; % end "r" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{s} -% The letter `s'. This is a short S. -% \begin{macrocode} -cmchar "TGOTH letter s"; -beginchar("s", 2sb#+hstretch*((4)*stem_width#), - x_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -pcshiftx := sb; -pickup stylus; -%% the diagonal -lft x2 = pcshiftx; bot y2 = 0; -rt x1 = w-pcshiftx; top y1 = h; -draw z1--z2; -pickup quill; -z211 = 13/32[z2,z1]; %% 10/32 too small, 16/32 too large -z213 = 24/32[z2,z1]; %% 26/32 too large -z212 = 1/2[z211,z213]; -%% bottom bowl -lft x21 = x2; bot y21 = 0; -rt x22 = w - pcshiftx; bot y22 = 0; -x23 = x22; z24 = z212; -(z24-z23) = whatever*(dir (180-diang)); -draw z21{pdir}..z22--z23--z24; -%% top bowl -z14 = z211; z11 = z213; -lft x12 = lft x13 = pcshiftx; -(z13-z14) = whatever*(dir (180-diang)); -(z12-z11) = whatever*(dir (180-diang)); -draw z11--z12--z13--z14; -ductus:=false; -penlabels(1,2,3,4,5,6,7,11,12,13,14,15,16,17,20,21,22,23,24,25,26,27,28,100); -endchar; % end "s" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{t} -% The letter `t'. -% \begin{macrocode} -cmchar "TGOTH letter t"; -beginchar("t", 2sb#+hstretch*((2+1.0)*stem_width#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -numeric st; st := stem_width; -pickup quill; -%% bar -lft x3 = pcshiftx; top y1 = h; -top y3 = bot y1; -rt x4 = w-pcshiftx; y4=y3; -draw z3--z4; -%% stem -lft x1 = rt x3; -x2 = x1; y2 = 0; -draw_downdiamondstem(1,2,wided,widedmin,diawd,diang); -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 "TGOTH letter u"; -beginchar("u", 2sb#+hstretch*((3+narrowd+wided)*stem_width#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -pickup quill; -%% left stem -lft x1 = pcshiftx + narrowd*stem_width; y1 = h; -x2 = x1; y2 = 0; -z12 = 1/2[z1,z2]; -draw_updiamondstem(1,12,narrowd,narrowdmin,diawd,diang); -draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); -rt x3 = w - pcshiftx - wided*stem_width; y3=y1; -x4=x3;y4=y2; -z34=1/2[z3,z4]; -draw_updiamondstem(3,34,narrowd,narrowdmin,diawd,diang); -draw_downdiamondstem(34,4,wided,widedmin,diawd,diang); -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,11,13,14,16,33,100); -endchar; % end "u" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{v} -% The letter `v'. -% \begin{macrocode} -cmchar "TGOTH letter v"; -beginchar("v", 2sb#+hstretch*((4 + narrowdmin)*stem_width#), - asc_height#, 0); -adjust_fit(0,0); -numeric n[]; numeric st; -pcshiftx := sb; -st := stem_width; -n1 := h/ascratio; % x-height -pickup quill; -%% bottom left stem -%% right and bottom left stems -rt x23 = w - pcshiftx - narrowdmin*st; y23 = n1; x24=x23; -x1 = x23 - 2st; y1 = 1/2n1; -x2 = x1; y2 = 0; -draw_downdiamondstem(1,2, 1.0, widedmin, diawd, diang); -bot y24 = y2c; -draw_updiamondstem(23, 24, narrowd, narrowdmin, diawd, diang); -%% curly bit -x11=x1; top y11 = h; -lft x12 = pcshiftx; y12 = 1/2[y11,y1]; -draw z11{down}..z12{down}..{down}z1; -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 "TGOTH letter w"; -beginchar("w", 2sb#+hstretch*((5+wided+narrowd)*stem_width#), - x_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -%% left stem -lft x1 = pcshiftx + narrowd*stem_width; y1 = y3 = y5 = h; -x2 = x1; y2 = y4 = y6 = 0; -z12=1/2[z1,z2]; -draw_updiamondstem(1,12, narrowd, narrowdmin, diawd, diang); -draw_downdiamondstem(12,2, wided, widedmin, diawd, diang); -%% right stem -rt x5 = w -pcshiftx-wided*stem_width; x6 = x5; -z56 = 1/2[z5,z6]; -draw_updiamondstem(5,56, narrowd, narrowdmin, diawd, diang); -draw_downdiamondstem(56,6, wided, widedmin, diawd, diang); -%% middle stem -z3 = 1/2[z1,z5]; z4 = 1/2[z2,z6]; z34 = 1/2[z3,z4]; -draw_updiamondstem(3,34, narrowd, narrowdmin, diawd, diang); -draw_downdiamondstem(34,4, wided, widedmin, diawd, diang); -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,11,13,14,33,34,53,16,100); -endchar; % end "w" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{x} -% The letter `x'. -% \begin{macrocode} -cmchar "TGOTH letter x"; -beginchar("x", 2sb#+hstretch*((4)*stem_width#), - x_height#, 0); -adjust_fit(0,0); -path pth[]; -numeric n[]; -numeric st; st := stem_width; -pcshiftx := sb; -pickup quill; -%% upright -x1 = 1/2w; y1 = h; -x2 = x1; y2 = 0; -z12 = 1/2[z1,z2]; -draw_updiamondstem(1,12, 1.5, widedmin,diawd,2/3diang); -draw_downdiamondstem(12,2, 1.5, widedmin,diawd,2/3diang); -%% top right bar -lft x3 = rt x1; top y3 = h; -rt x4 = w - pcshiftx; y4=y3; -draw z3--z4; -%% middle bar -n1 := h-y3; -lft x5 = pcshiftx; rt x6 = w - pcshiftx; -y5 = 1/2h - n1; y6 = 1/2h; -z56 = 1/2[z5,z6]; -draw z5{pdir}..z56..{pdir}z6; -%% bottom left -pickup stylus; -lft x11 = pcshiftx; bot y11 = 0; -draw z2e--z11; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,10,25,251,252,40,50,150,60,160,100); -endchar; % end "x" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{y} -% The letter `y'. Modern, but with a dot on top. -% \begin{macrocode} -cmchar "TGOTH letter y"; -beginchar("y", 2sb#+hstretch*((3 + narrowd+ narrowdmin)*stem_width#), - x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := sb; -path pth[]; -numeric n[]; -numeric st; st = stem_width; -pickup quill; -%% right side -rt x3 = w - pcshiftx - narrowdmin*st; y3 = h; -x33 = x3; y33 = 0; -%%draw_updiamondstem(3,4,narrowd,narrowdmin, diawd,diang); -%% left side -x1 = x3 - 2st; y1 = y3; -x2 = x1; y2 = 0; -n1 := top y2 - y2; -draw_updiamondstem(1,2,narrowd,narrowdmin, diawd,diang); -%% tail -x11 = rt x2; y11 = top y2; -x12 = lft x2; y12 = bot y2; -pickup stylus; -lft x14 = x1 - 2st; y14 = -d + n1; -x15 = x14+n1; bot y15 = -d; -z4 = whatever[z11,z12] = whatever[z3,z33]; -x10=x4; bot y10 = y4; -draw z10--z11--z12..{down}z14..{-ppdir}z15; -pickup quill; -draw_updiamondstem(3,4,narrowd,narrowdmin, diawd,diang); -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,10,11,12,14,15,33,100); -endchar; % end "y" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{z} -% The letter `z'. -% \begin{macrocode} -cmchar "TGOTH letter z"; -beginchar("z", 2sb#+hstretch*(3stem_width#), - x_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pcshiftx := sb; -pickup quill; -%% top bar ends -top y12 = h; -n1 := h - y12; -lft x1 = pcshiftx; rt x2 = w-pcshiftx; -%%y1 = y12-n1; y2=y12+n1; -y1 = y12-n1/2; y2=y12; -x12 = 1/2[x1,x2]; -pth1 := z1{pdir}..z12{right}..z2{pdir}; -%% bottom bar ends -bot y34 = 0; -x3=x1; x4=x2; -%%y3=y34-n1; y4=y34+n1; -y3=y34-n1/2; y4=y34; -x34 = 1/2[x3,x4]; -pth2 := z3{pdir}..z34{right}..z4{pdir}; -%% centre bar -z5 = 1/2[z1,z3]; z6 = 1/2[z2,z4]; z56 = 1/2[z5,z6]; -pth3 := z5{pdir}..z56{right}..z6{pdir}; -draw pth1; draw pth2; draw pth3; % bars -draw z2--z3; -ductus:=false; -penlabels(1,2,3,4,5,6,10o,10i,20o,20i,100); -endchar; % end "z" - -% \end{macrocode} -% \end{routine} -% -% -% The end of this file -% \begin{macrocode} -% -% \end{macrocode} -% -% -% \subsection{The code for capital letters} -% -% \thisfont{} `capitals' were drawn with the same pen as for the minuscules. -% The letters are pretty fancy. -% -% \begin{macrocode} -%<*maj> -% TGOTHU.MF Program file for Early Gothic `capitals' -% - -% \end{macrocode} -% -% -% \begin{routine}{A} -% The letter `A'. -% \begin{macrocode} -cmchar "TGOTH letter A"; -beginchar("A", 2cap_sb#+hstretch*((7)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pair pr[]; -pickup quill; -%% stem -rt x1 = w - pcshiftx - wided*st; y1 = h; -x2 = x1; y2 = 0; -z12 = 1/2[z1,z2]; -draw_upcurlstem(1,12); -draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); -%% leg -x21 = x1; top y21 = h; -lft x22 = pcshiftx + widedmin*st; bot y22 = 0; -draw z21--z22; -draw (x22-widedmin*st, y22)--(x22+wided*st, y22); -%% bar -z13 = z12; -y16 = y13; z16 = whatever[z21,z22]; -x14 = 1/2[x13,x16]; (z13-z14) = whatever*pdir; -pickup threequarterquill; -draw z13--z14; -draw z14{ppdir}..{left}z16; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,11,12,13,14,15,100); -endchar; % end "A" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{B} -% The letter `B'. -% \begin{macrocode} -cmchar "TGOTH letter B"; -beginchar("B", 2cap_sb#+hstretch*((7)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pcshiftx := cap_sb; -pickup quill; -%% stem -lft x1 = pcshiftx; bot y1 = 0; -n1 := top y1; -lft x99 = 2/5w; bot y99 = 12/16h; -rt x12 = lft x99; top y12 = bot y99; -x14 = x1; y14 = y12; -x13 = 1/2[x14,x12]; y13 = 1/2[y12,(h-n1/2)]; -pth1 := z1{pdir}..z12..{left}z13..{-pdir}z14; -%% stem decoration -z101=z99; -z181 = (x99,-h); -z102 = (x101,y1); -z112 = 1/2[z101,z102]; -lft x8 = x112; y8 = y112; -%% lower bowl -x113 = w-pcshiftx; -(z113-z112) = whatever*(pdir); -rt x5 = w-pcshiftx; y5 = 6/16y113; -x3 = 10/16[x1,x5]; y3 = y1; -z7 = 2/16[z8,z113]; -pth2 := z1{pdir}..{right}z3..{up}z5..{-pdir}z7--z8; - -%% upper bowl -x10 = 1/2[x7,x5]; y10 = 1/2[y12,y99]; -x19 = 1/2[x99,x10]; top y19 = h; -pth3 := z8--z7{pdir}..{up}z10..{left}z19..{-pdir}z99; -%% angled decoration - -z105 = 1/4[z102,z112]; -x185 = 2w; -(z185-z105) = whatever*(pdir); -z106 = (z105--z185) intersectionpoint pth2; - -z107 = 1/4[z112,z101]; -x187 = 2w; -(z187-z107) = whatever*(pdir); -z108 = (z107--z187) intersectionpoint pth3; - -if ductus: - pickup stylus; -fi -draw pth1; -draw pth2; -draw pth3; -pickup stylus; -draw z101--z102; -draw z105--z106; draw z107--z108; - -ductus:=false; -penlabels(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,99,100); -endchar; % end "B" - - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{C} -% The letter `C'. -% \begin{macrocode} -cmchar "TGOTH letter C"; -beginchar("C", 2cap_sb#+hstretch*((5)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pcshiftx := cap_sb; -pickup quill; -%% bowl -n1:=w-2pcshiftx; % actual letter width -n2:=6/5w-2pcshiftx; % width of full bowl -x1=pcshiftx + 1/2n1; top y1 = h; -lft x2 = pcshiftx; y2 = 1/2h; -x3 = x1; bot y3 = 0; -rt x4 = w-pcshiftx; y4 = 1/4h; -x24 = x4; y24 = 3/4h; -pth1 := z24..z1{left}..z2{down}..z3{right}..z4{pdir}; -%% decoration -z101 = (x1,y1); z102 = (x1,y3); -z103 = (x1+perpdec, y1); z104 = (x103,y102+thin); -z105 = 1/2[z101,z102]; z107 = (x105,y105+angdec); -x185 = -w; (z105-z185) = whatever*(pdir); -z106 = (z105--z185) intersectionpoint pth1; -x187 = -w; (z107-z187) = whatever*(pdir); -z108 = (z107--z187) intersectionpoint pth1; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; %% bowl -pickup stylus; -draw z101--z102; draw z103--z104; -draw z105--z106; draw z107--z108; -ductus:=false; -penlabels(1,2,3,4,5,6,14,16,17,18,100,101,102,103,104,105,106,107,108,185); -endchar; % end "C" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{D} -% The letter `D'. -% \begin{macrocode} -cmchar "TGOTH letter D"; -beginchar("D", 2cap_sb#+hstretch*((7)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pcshiftx := cap_sb; -pickup quill; -%% bowl -lft x1 = pcshiftx; bot y1 = 0; -rt x5 = w-pcshiftx; y5 = 1/2h; -x3 = 10/16[x1,x5]; y3 = y1; -x7 = x3; top y7 = h; -lft x9 = 2/5w; bot y9 = 12/16h; -pth1 := z1{pdir}..{right}z3..{up}z5..{left}z7..{-pdir}z9; -%% stem -rt x12 = lft x9; top y12 = bot y9; -x14 = x1; y14 = y12; -x13 = 1/2[x14,x12]; y13 = 1/2[y12,y7]; -pth2 := z1{pdir}..z12..{left}z13..{-pdir}z14; -%% vertical decoration -z101=z9; -z181 = (x9,-h); -z102 = ((x101,h/2)--z181) intersectionpoint pth1; -z103a=(x101+perpdec,h); z103b=(x103a,h/2); z103c=(x103a,-h); -z103 = (z103a--z103b) intersectionpoint pth1; -z104 = (z103b--z103c) intersectionpoint pth1; -%% angled decoration -z106 = (lft x5, y5); -x105 = x103; (z106-z105) = whatever*(pdir); -z107 = (x105, y105+angdec); -x108a = 2w; (z108a-z107) = whatever*(pdir); -z108 = (z108a--z107) intersectionpoint pth1; -if ductus: - pickup stylus; -fi -draw pth1; -draw pth2; -pickup stylus; -draw z101--z102; draw z103--z104; -draw z105--z106; draw z107--z108; -ductus:=false; -penlabels(0,1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,100); -endchar; % end "D" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{E} -% The letter `E'. -% \begin{macrocode} -cmchar "TGOTH letter E"; -beginchar("E", 2cap_sb#+hstretch*((6)*stem_width#), %% (5) too small - caprat*x_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pcshiftx := cap_sb; -pickup quill; -%% bowl -n1:=w-2pcshiftx; % actual letter width -n2:=6/5w-2pcshiftx; % width of full bowl -x1=pcshiftx + 1/2n1; top y1 = h; -lft x2 = pcshiftx; y2 = 1/2h; -x3 = x1; bot y3 = 0; -rt x4 = w-pcshiftx; y4 = 1/4h; -x24 = x4; y24 = 3/4h; -pth1 := z24..z1{left}..z2{down}..z3{right}..z4{pdir}; -%% decoration -z101 = (x1,y1); z102 = (x1,y3); -z103 = (x1+perpdec, y1); z104 = (x103,y102+thin); -z105 = 1/2[z101,z102]; z107 = (x105,y105+angdec); -x185 = -w; (z105-z185) = whatever*(pdir); -z106 = (z105--z185) intersectionpoint pth1; -x187 = -w; (z107-z187) = whatever*(pdir); -z108 = (z107--z187) intersectionpoint pth1; -%% bar -lft x31 = x103; top y31 = y105; -rt x32 = w-pcshiftx; y32=y31; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; %% bowl -draw z31--z32; %% bar -pickup stylus; -draw z101--z102; draw z103--z104; -draw z105--z106; draw z107--z108; -ductus:=false; -penlabels(1,2,3,4,5,6,14,16,17,18,100,105,185,106); -endchar; % end "E" - - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{F} -% The letter `F'. -% \begin{macrocode} -cmchar "TGOTH letter F"; -beginchar("F", 2cap_sb#+hstretch*((5)*stem_width#), - 5/4caprat*x_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pcshiftx := cap_sb; -pickup quill; -%% stem (1--2) and top bar (21--22) -lft x1=lft x2=pcshiftx+widedmin*st; y2 = 0; -top y21 = top y22 = h - (top y2 - bot y2); x22 = w-pcshiftx-st; -lft x21 = rt x1; top y1 = bot y21; -z12 = 1/3[z1,z2]; -draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); -draw z1--z12; -draw z21--z22; -%% vertical decoration -z102 = 2/3[z2b,z2c]; -x101 = x102; y101 = y21; -%% bar -lft x14 = x101; y14 = y12; -rt x16 = w-pcshiftx; y16 = y14; -draw z14--z16; -z16tr = (rt x16, top y16); -pickup stylus; -draw z101--z102; -%% Other decoration -%% bottom bar -rt x201 = x16tr; top y201 = y16tr; -y202 = y201 - 2st; (z201-z202) = whatever*pdir; -draw z201--z202; -%% top bar -pickup quill; -z22tb = (rt x22, top y22); -x22bb - x22 = x22 - x22tb; y22bb - y22 = y22 - y22tb; -x22c = x22 + st; bot y22c = top y22 + 1/2st; -x22f = x22; y22f = 1/3[y22c, y22]; -pickup stylus; -x22br = x22bb; bot y22br = y22bb; -pth3 := z22br--z22tb..{up}z22c..{-ppdir}z22f; -draw pth3; - -penlabels(1,2,3,4,5,6,7,14,15,16,21,22,100); -endchar; % end "F" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{G} -% The letter `G'. -% \begin{macrocode} -cmchar "TGOTH letter G"; -beginchar("G", 2cap_sb#+hstretch*((7)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pickup quill; -%% bar -top y3=h; n3 := h - top y3; -lft x1 = pcshiftx; rt x2=w-pcshiftx; -y1 = y3-n3; y2=y3; -x3=1/2[x1,x2]; -pth1 := z1{pdir}..z3..z2{pdir}; -%% bowl -n1 := w; % width of bowl -n2 := h; % height of bowl -lft x4 = pcshiftx; y4 = 1/2h; -x5=x3; bot y5 = 0; -rt x6 = w-pcshiftx; y6 = 6/16h; -%% decoration -x101 = lft x3; y101=y3; -x181 = x101; y181=-h/4; z191 = 1/2[z101,z181]; -z102=(x101,y5); -z103 = (x101+3thin, y101); z104 = (x103,y102); -lft x7 = x104; y7 = 10/16[y104,y103]; -%%pth2 := z3..z4{down}..z5{right}..z6{up}..{-pdir}z7; -%%pth2 := z2{-pdir}..z3..z4{down}..z5{right}..z6{up}..{-pdir}z7; -pth2 := z2--z3..z4{down}..z5{right}..z6{up}..{-pdir}z7; -z105 = (x104,y104+4thin); z107=(x105,y105+3thin); -x185 = 2w; (z185-z105) = whatever*(pdir); -z106 = (z105--z185) intersectionpoint pth2; -z108 = (x106,y106+3thin); -%% fork -z2tr = (rt x2, top y2); -x2a = x2tr; y2a = y2tr + thin; -x2b = x2a; y2b - y2 = y2 - y2a; -x2d = x2 - thick; y2d = y2; -pickup stylus; -% finish off the fork -x2c = x2d = x2e; -top y2e = y2tr; y2c - y2d = y2d - y2e; -%%filldraw z2d--z2c{right}..z2b--cycle; -%%filldraw z2d--z2a..{left}z2e--cycle; -filldraw z2e--z2c{right}..z2b--cycle; -filldraw z2c--z2a..{left}z2e--cycle; -pth9 := (rt x2a,y2a)--(rt x2b,y2b)--(rt x2d,y2d)--cycle; -unfill pth9; -unfill pth9; -unfill pth9; -draw z101--z102; draw z103--z104; -draw z105--z106; draw z107--z108; -pickup quill; -%%ductus:=true; -if ductus: - pickup stylus; -fi -%%draw pth1; %% bar -draw pth2; %% bowl -ductus:=false; -penlabels(1,2,2a,2b,2c,2d,2e,3,4,5,6,11,12,100,101,102,103,104,181,191); -endchar; % end "G" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{H} -% The letter `H'. -% \begin{macrocode} -cmchar "TGOTH letter H"; -beginchar("H", 2cap_sb#+hstretch*((8)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric st; st := stem_width; -numeric n[]; -path pth[]; -pickup quill; -%% left stem -lft x1=pcshiftx+3st; y1=h; -x2=x1; y2=0; -z12 = 1/2[z1,z2]; -draw_upcurlstem(1,12); -draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); -% start of bowl -n1 := 12/16h; %% take this as the top of the bowl -x13=x1; y13=3/4n1; -rt x3 = w-pcshiftx; y3 = 8/16n1; -x14 = 8/16[x13,x3]; top y14 = n1; -x4 = 1/2[x14,x3]; bot y4=0; -pth1 := z13{pdir}..{right}z14..{down}z3..{-pdir}z4; -%% bottom curl -z21 = z4; -x24 = x3; top y24 = 0; -x23 = 1/2[x21,x24]; top y23 = bot y24; -pth2 := z21{-pdir}..z23..{ppdir}z24; -%% vertical decoration -z102 = 2/3[z2b,z2c]; -z182 = (x102,h); -z101 = (z102--z182) intersectionpoint pth1; -z105 = 1/2[z102,z101]; -x185 = 2w; -(z185-z105) = whatever*(pdir); -z106 = (z105--z185) intersectionpoint pth1; -z107 = (x105, y105-angdec); z187 = (x185, y185-angdec); -z108 = (z107--z187) intersectionpoint pth1; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; -pickup stylus; -draw pth2; -draw z101--z102; -draw z105--z106; draw z107--z108; -ductus:=false; -penlabels(1,2,3,4,5,6,13,14,100); -endchar; % end "H" - - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{I} -% The letter `I'. -% \begin{macrocode} -cmchar "TGOTH letter I"; -beginchar("I", 2cap_sb#+hstretch*((4+wided)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric st; st := stem_width; -pickup quill; -lft x1=lft x2=pcshiftx+3st; -y1=h; y2=0; -z12 = 1/2[z1,z2]; -draw_upcurlstem(1,12); -draw_downdiamondstem(12,2,wided, widedmin,diawd,diang); -%% vertical decoration -z102 = 2/3[z2b,z2c]; -pickup stylus; -x101=x102; top y101 = h; -draw z101--z102; -ductus:=false; -penlabels(1,2,101,102,100); -endchar; % end "I" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{J} -% The letter `J'. This letter was not in the script, it being a later invention. -% \begin{macrocode} -cmchar "TGOTH letter J"; -beginchar("J", cap_sb#+hstretch*((4+wided)*stem_width#), - caprat*x_height#, 1/2caprat*x_height#); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric n[]; -numeric st; st := stem_width; -pickup quill; -%% stem -lft x1 = pcshiftx+3st; y1 = h; -x2=x1; y2=-d + (top y1 - bot y1); -%% bottom hook -lft x3 = pcshiftx; bot y3 = -d; -draw_upcurlstem(1,2); -draw z2{ppdir}..{-pdir}z3; -%% vertical decoration -x201 = rt x1; -x101 = x201 + 2/3wided*st; -pickup stylus; -top y101 = h; y201=y101; -z102=(x101,0); -draw z201--z101--z102; -ductus:=false; -penlabels(1,2,3,101,102,100); -endchar; % end "J" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{K} -% The letter `K'. -% \begin{macrocode} -cmchar "TGOTH letter K"; -beginchar("K", 2cap_sb#+hstretch*((8+wided)*stem_width#), - 5/4caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -path pth[]; -numeric n[]; -numeric st; st := stem_width; -pickup quill; -%% stem -n1 = 4/5h; % x-height -lft x1=lft x2=pcshiftx+3st; -y1=h; y2=0; -z12 = 1/2[z1,z2]; -draw_upcurlstem(1,12); -draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); -%% top arm -%%z3=(x1,1/2n1); -x3 = x1; top y3 = 14/16n1; -z7c = 1/2[z2,z3]; -top y3a = n1; (z3a-z3) = whatever*pdir; -rt x7a = w - pcshiftx - 2st; (z7a-z7c) = whatever*pdir; -x4 = 1/2[x3a,x7a]; y4 = y3a; -x5 = x7a; y5 = 1/2[y3a, y7a]; -z7 = (rt x7c, y7c); -pth1 := z3{pdir}..z4..z5..{-pdir}z7; -%% lower arm -z21=z7; -z24=(x5+st,y2a); -x23 = x24; y23 = 1/2[y21,y24]; -rt x25 = w-pcshiftx; bot y25 = 0; -pth2 := z21{pdir}..{down}z23..z24..{pdir}z25; -pickup quill; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; % upper bowl -draw pth2; % lower half -%% decorations -z1tr = (rt x1, top y1); -pickup stylus; -z102 = 2/3[z2b,z2c]; x101 = x102; top y101 = h; -x103 = x1tr; y103 = y101; -draw z103--z101--z102; -x105 = x101; y105 = 1/2[y7,y3]; -y185 = 2w; (z185-z105) = whatever*pdir; -z106 = (z105--z185) intersectionpoint pth1; -x107 = x105; y107 = y105-angdec; -x187 = x185; y187-y185 = y107-y105; -%%z108 = (z107--z187) intersectionpoint pth1; -draw z105--z106; -%%draw z107--z108; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,13,14,21,22,23,24,25,100); -endchar; % end "K" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{L} -% The letter `L'. -% \begin{macrocode} -cmchar "TGOTH letter L"; -beginchar("L", 2cap_sb#+hstretch*((7)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric st; st := stem_width; -pickup quill; -lft x1=pcshiftx+3st; y1=h; -x2=x1; bot y2 =0; -draw_upcurlstem(1,2); -rt x4 = w-pcshiftx; bot y4 = 0; -draw z2{right}..{pdir}z4; -%% vertical decoration -x201 = rt x1; -x101 = x201+2/3wided*st; -pickup stylus; -top y101 = h; y201 = y101; -x102 = x101; bot y102=0; -draw z201--z101--z102; -ductus:=false; -penlabels(1,2,3,4,101,102,201,100); -endchar; % end "L" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{M} -% The letter `M'. -% \begin{macrocode} -cmchar "TGOTH letter M"; -beginchar("M", 2cap_sb#+hstretch*((11)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric st; st := stem_width; -path pth[]; -pickup quill; -%%% left part -lft x301 = pcshiftx+3st; y301 = h; -x302 = x301; y302 = 0; -z312 = 1/2[z301,z302]; -draw_upcurlstem(301,312); -draw_downdiamondstem(312,302,wided,widedmin,diawd,diang); - -%% left N stem (and N part) -%%%lft x1=pcshiftx+3st; y1=h; -x1 = x301 + 3st; y1 = h; -x2=x1; y2=0; -z12 = 1/2[z1,z2]; -%%draw_upcurlstem(1,12); -%%draw_updiamondstem(1,12,wided,widedmin,diawd,diang); -draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); -% start of bowl -x13=x1; y13=3/4h; -rt x3 = w-pcshiftx; y3 = 8/16h; -x14 = 8/16[x13,x3]; top y14 = h; -x4 = 1/2[x14,x3]; bot y4=0; -pth1 := z13{pdir}..{right}z14..{down}z3..{-pdir}z4; -%% bottom curl -z21 = z4; -x24 = x3; top y24 = 0; -x23 = 1/2[x21,x24]; top y23 = bot y24; -pth2 := z21{-pdir}..z23..{ppdir}z24; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; -pickup stylus; -draw pth2; -pickup quill; -%% finish off the left part -x3011 = 1/2[x301,x1]; top y3011 = h; -z3123 = (x301,3/4h); z123 = (x1,y3123); -draw z3123--z3011--z123--z12; -%% vertical decorations - %% left part -z402 = 2/3[z302b,z302c]; -x401 = x402; z401 = whatever[z3123,z3011]; - %% right part -z102 = 2/3[z2b,z2c]; -z182 = (x102,h); -z101 = (z102--z182) intersectionpoint pth1; -%% angled decorations - %% left part -z406 = z13; -x405 = x402; (z406-z405) = whatever*pdir; -z407 = (x405, y405-angdec); z408 = (x406, y406-angdec); - %% right part -z105 = (x102,y405); -x185 = 2w; -(z185-z105) = whatever*(pdir); -z106 = (z105--z185) intersectionpoint pth1; -z107 = (x105, y105-angdec); z187 = (x185, y185-angdec); -z108 = (z107--z187) intersectionpoint pth1; -pickup stylus; -draw z401--z402; -draw z405--z406; draw z407--z408; -draw z101--z102; -draw z105--z106; draw z107--z108; -ductus:=false; -penlabels(1,2,3,4,5,6,13,14,101,102,105,106,107,108,301,302,100); -endchar; % end "M" - - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{N} -% The letter `N'. -% \begin{macrocode} -cmchar "TGOTH letter N"; -beginchar("N", 2cap_sb#+hstretch*((8)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric st; st := stem_width; -path pth[]; -pickup quill; -%% left stem -lft x1=pcshiftx+3st; y1=h; -x2=x1; y2=0; -z12 = 1/2[z1,z2]; -draw_upcurlstem(1,12); -draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); -% start of bowl -x13=x1; y13=3/4h; -rt x3 = w-pcshiftx; y3 = 8/16h; -x14 = 8/16[x13,x3]; top y14 = h; -x4 = 1/2[x14,x3]; bot y4=0; -pth1 := z13{pdir}..{right}z14..{down}z3..{-pdir}z4; -%% bottom curl -z21 = z4; -x24 = x3; top y24 = 0; -x23 = 1/2[x21,x24]; top y23 = bot y24; -pth2 := z21{-pdir}..z23..{ppdir}z24; -%% vertical decoration -z102 = 2/3[z2b,z2c]; -z182 = (x102,h); -z101 = (z102--z182) intersectionpoint pth1; -z105 = 1/2[z102,z101]; -x185 = 2w; -(z185-z105) = whatever*(pdir); -z106 = (z105--z185) intersectionpoint pth1; -z107 = (x105, y105-angdec); z187 = (x185, y185-angdec); -z108 = (z107--z187) intersectionpoint pth1; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; -pickup stylus; -draw pth2; -draw z101--z102; -draw z105--z106; draw z107--z108; -ductus:=false; -penlabels(1,2,3,4,5,6,13,14,100); -endchar; % end "N" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{O} -% The letter `O'. -% \begin{macrocode} -cmchar "TGOTH letter O"; -beginchar("O", 2cap_sb#+hstretch*((7)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -path pth[]; -pickup quill; -lft x1=pcshiftx; rt x3=w-pcshiftx; y1=y3=h/2; -x2=x4=w/2; top y2=h; bot y4=0; -pth1 := z1..z2..z3..z4..cycle; -%% vertical decoration -z101=z2; z102=z4; -z103 = (x101-perpdec, y101); z104 = (x103,y102); -%% angled decoration -z108 = (lft x3,y3); -x107 = x101; (z108-z107) = whatever*(pdir); -z105 = (x107, y107+angdec); -x106a = 2w; (z106a-z105) = whatever*(pdir); -z106 = (z105--z106a) intersectionpoint pth1; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; -pickup stylus; -draw z101--z102; draw z103--z104; -draw z105--z106; draw z107--z108; -ductus:=false; -penlabels(1,2,3,4,5,100); -endchar; % end "O" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{P} -% The letter `P'. -% \begin{macrocode} -cmchar "TGOTH letter P"; -beginchar("P", 2cap_sb#+hstretch*((8)*stem_width#), - caprat*x_height#, 1/2caprat*x_height#); -adjust_fit(0,0); -pcshiftx := cap_sb; -path pth[]; -numeric n[]; -numeric st; st := stem_width; -pickup quill; -%% stem -lft x1=lft x2=pcshiftx+3st; -y1=h; y2=-d; -z12 = 1/2[z1,z2]; -draw_upcurlstem(1,12); -draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); -%% vertical decoration -z1tr = (rt x1, top y1); -z102 = 2/3[z2b,z2c]; -pickup stylus; -x101 = x102; top y101 = h; -x103 = x1tr; y103 = y101; -draw z103--z101--z102; -pickup quill; -%% bowl -lft x22 = x101; top y22 = h; -x21 = x1; (z22-z21) = whatever*pdir; -rt x24 = w - pcshiftx; y24 = 1/2h; -x25 = 1/2[x22,x24]; bot y25 = 0; -pth1 := z21--z22{down}..{down}z24..{-pdir}z25; -z31 = z25; -lft x33 = pcshiftx; bot y33 = 0; -pth2 := z33{pdir}..{right}z31; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; draw pth2; -%% angled decoration -x105 = x101; y105 = 1/3h; -x185 = 2w; -(z185-z105) = whatever*pdir; -z106 = (z105--z185) intersectionpoint pth1; -z107 = (x105,y105-angdec); -x187 = x185; y107 - y105 = y187 - y185; -z108 = (z107--z187) intersectionpoint pth1; -pickup stylus; -draw z105--z106; draw z107--z108; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,100); -endchar; % end "P" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{Q} -% The letter `Q'. -% \begin{macrocode} -cmchar "TGOTH letter Q"; -beginchar("Q", 2cap_sb#+hstretch*((8)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -path pth[]; -pickup quill; -lft x1=pcshiftx; rt x3=w-pcshiftx-stem_width; y1=y3=h/2; -x2=x4=w/2; top y2=h; bot y4=0; -pth1 := z1..z2..z3..z4..cycle; -%% tail -pth2 := z1..z4..z3; -z11 = directionpoint pdir of pth2; -rt x13 = w-pcshiftx; bot y13 = 0; -pth3 := z11{pdir}..{pdir}z13; -%% vertical decoration -z101=z2; z102=z4; -z103 = (x101-perpdec, y101); z104 = (x103,y102); -%% angled decoration -z108 = (lft x3,y3); -x107 = x101; (z108-z107) = whatever*(pdir); -z105 = (x107, y107+angdec); -x106a = 2w; (z106a-z105) = whatever*(pdir); -z106 = (z105--z106a) intersectionpoint pth1; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; draw pth3; -pickup stylus; -draw z101--z102; draw z103--z104; -draw z105--z106; draw z107--z108; -ductus:=false; -penlabels(1,2,3,4,5,100); -endchar; % end "Q" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{R} -% The letter `R'. -% \begin{macrocode} -cmchar "TGOTH letter R"; -beginchar("R", 2cap_sb#+hstretch*((8+wided)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -path pth[]; -numeric n[]; -numeric st; st := stem_width; -pickup quill; -%% stem -n1 = h; % x-height -lft x1=lft x2=pcshiftx+3st; -y1=h; y2=0; -z12 = 1/2[z1,z2]; -draw_upcurlstem(1,12); -draw_downdiamondstem(12,2,wided,widedmin,diawd,diang); -%% top arm -%%z3=(x1,1/2n1); -x3 = x1; top y3 = 14/16n1; -z7c = 1/2[z2,z3]; -top y3a = n1; (z3a-z3) = whatever*pdir; -rt x7a = w - pcshiftx - 2st; (z7a-z7c) = whatever*pdir; -x4 = 1/2[x3a,x7a]; y4 = y3a; -x5 = x7a; y5 = 1/2[y3a, y7a]; -z7 = (rt x7c, y7c); -pth1 := z3{pdir}..z4..z5..{-pdir}z7; -%% lower arm -z21=z7; -z24=(x5,y2a); -x23 = x24; y23 = 1/2[y21,y24]; -rt x25 = w-pcshiftx; bot y25 = 0; -pth2 := z21{pdir}..{down}z23..z24..{pdir}z25; -pickup quill; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; % upper bowl -draw pth2; % lower half -%% decorations -z1tr = (rt x1, top y1); -pickup stylus; -z102 = 2/3[z2b,z2c]; x101 = x102; top y101 = h; -x103 = x1tr; y103 = y101; -draw z103--z101--z102; -x105 = x101; y105 = 1/2[y7,y3]; -y185 = 2w; (z185-z105) = whatever*pdir; -z106 = (z105--z185) intersectionpoint pth1; -x107 = x105; y107 = y105-angdec; -x187 = x185; y187-y185 = y107-y105; -%%z108 = (z107--z187) intersectionpoint pth1; -draw z105--z106; -%%draw z107--z108; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,13,14,21,22,23,24,25,100); -endchar; % end "R" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{S} -% The letter `S'. -% \begin{macrocode} -cmchar "TGOTH letter S"; -beginchar("S", 2cap_sb#+hstretch*((8)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pcshiftx := cap_sb; -pickup quill; -pickup threequarterquill; -%% top -n1 := 1; -lft x1 = pcshiftx + n1*st; top y1 = h; -rt x3 = w - pcshiftx; y3 = y1; -x2 = 1/2[x1,x3]; top y2 = y1; -pth1 := z1..z2..{pdir}z3; -draw pth1; -%% bottom -lft x4 = pcshiftx; bot y4 = 0; -rt x6 = w -pcshiftx - n1*st; y6 = y4; -x5 = 1/2[x4,x6]; bot y5 = y4; -pth2 := z4{pdir}..z5..z6; -draw pth2; -%% top path -z100 = (1/2w, 1/2h); -z11 = z1; z15 = z6; -x13 = x100; y13 = y100 + st; -pth3 := z11..{right}z13{right}..z15; -draw pth3; -%% bottom path -z21 = z11; z25 = z6; -x23 = x100; y100 - y23 = y13 - y100; -pth4 := z21..{right}z23{right}..z25; -draw pth4; -%% decorations - %% top -z101 = (x2+angdec,y2); y181 = 0; (z101-z181) = whatever*pdir; -z102 = (z101--z181) intersectionpoint pth3; -z103 = (x101-angdec, y101); x183-x181 = x103-x101; y183 = 0; -z104 = (z103--z183) intersectionpoint pth3; - %% bottom -z201 = (x5,y5); y281 = h; (z201-z281) = whatever*pdir; -z202 = (z201--z281) intersectionpoint pth4; -z203 = (x201-angdec, y201); x283-x281 = x203-x201; y283 = h; -z204 = (z203--z283) intersectionpoint pth4; -pickup stylus; -draw z101--z102; draw z103--z104; -draw z201--z202; draw z203--z204; - - -%%ductus:=true; -if ductus: - pickup stylus; -fi -ductus:=false; -penlabels(1,2,3,4,5,6,7,11,17,20,26,27,28,100,101,102,103,104,201,202,203,204); -endchar; % end "S" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{T} -% The letter `T'. -% \begin{macrocode} -cmchar "TGOTH letter T"; -beginchar("T", 2cap_sb#+hstretch*((7)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pickup quill; -%% bar -top y3=h; n3 := h - top y3; -lft x1 = pcshiftx; rt x2=w-pcshiftx; -y1 = y3-n3; y2=y3; -x3=1/2[x1,x2]; -pth1 := z1{pdir}..z3..z2{pdir}; -%% bowl -n1 := w; % width of bowl -n2 := h; % height of bowl -lft x4 = pcshiftx; y4 = 1/2h; -x5=x3; bot y5 = 0; -rt x6 = w-pcshiftx; y6 = 6/16h; -%%pth2 := z3..z4{down}..z5{right}..z6{pdir}; -%% decoration -x101 = lft x3; y101=y3; -x181 = x101; y181=-h/4; z191 = 1/2[z101,z181]; -%%z102 = z191--z181 intersectionpoint pth2; %%% ???? NO INTERSECTION!!!!!! -z102=(x101,y5); -z103 = (x101+3thin, y101); z104 = (x103,y102); -lft x7 = x104; y7 = 10/16[y104,y103]; -pth2 := z3..z4{down}..z5{right}..z6{up}..{-pdir}z7; -z105 = (x104,y104+4thin); z107=(x105,y105+3thin); -x185 = 2w; (z185-z105) = whatever*(pdir); -z106 = (z105--z185) intersectionpoint pth2; -z108 = (x106,y106+3thin); -pickup stylus; -draw z101--z102; draw z103--z104; -draw z105--z106; draw z107--z108; -pickup quill; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw pth1; %% bar -draw pth2; %% bowl -ductus:=false; -penlabels(1,2,3,4,5,6,11,12,100,101,102,103,104,181,191); -endchar; % end "T" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{U} -% The letter `U'. -% \begin{macrocode} -cmchar "TGOTH letter U"; -beginchar("U", 2cap_sb#+hstretch*((8)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := cap_sb; -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pickup quill; -%% stem tops -lft x1 = pcshiftx + 3st; y1 = h; -rt x3 = w - pcshiftx - widedmin*st; y3 = h; -% bottom of bowl -x7 = x1 - 3/2st; bot y7 = 0; -rt x9 = lft x3; bot y9 = 0; -pth1 := z7{pdir}..{pdir}z9; -draw pth1; -%% stem bottoms -z2 = (z1 -- (x1,-h)) intersectionpoint pth1; -x4 = x3; bot y4 = top y9; -draw_upcurlstem(1,2); -draw_updiamondstem(3,4,wided,widedmin,diawd,diang); -%% decorations -z1tr = (rt x1, top y1); -pickup stylus; -z99 = 2/3[z3b,z3c]; -x101 - x1 = x3 - x99; top y101 = h; -x102 = x101; y102 = y2; -x103 = x1tr; y103 = y101; -draw z103--z101--z102; -x105 = x101; y105 = 1/3h; -x106 = x3; (z106-z105) = whatever*pdir; -z107 = (x105, y105-angdec); x108 = x106; y108-y106 = y107-y105; -draw z105--z106; draw z107--z108; -%%ductus:=true; -if ductus: - pickup stylus; -fi -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,11,13,14,16,33,100); -endchar; % end "U" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{V} -% The letter `V'. -% \begin{macrocode} -cmchar "TGOTH letter V"; -beginchar("V", 2cap_sb#+hstretch*((8)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pcshiftx := cap_sb; -pickup quill; -%% left stem top -lft x1 = pcshiftx + 3st; y1 = h; -% bottom of bowl -x7 = x1 - 3/2st; bot y7 = 0; -x9 = w/2; bot y9 = 0; -pth1 := z7{pdir}..{right}z9; -draw pth1; -%% left stem bottom -x81 = x1; y81 = - h; -z2 = (z1--z81) intersectionpoint pth1; -draw_upcurlstem(1,2); -%% right stem -z6 = z9; -rt x5 = w - pcshiftx; top y5 = 3/4h; -x3 = 1/2[rt x1, lft x5]; -x4 = 1/2[x3,x5]; top y4 = h; -y3 = 1/2[y4,y5]; -pth2 := z6{pdir}..{up}z5..{left}z4..{-pdir}z3; -draw pth2; -pth3 := pth1 & pth2; -%% decoration -z1tr = (rt x1, top y1); -x101 = x1tr + 2/3wided*st; -pickup stylus; -top y101 = h; -z103 = (x1tr,y101); -z181 = (x101,-w); -z102 = (z101--z181) intersectionpoint pth3; -draw z103--z101--z102; -x105 = x101; y105 = 1/3[y102,y101]; -x185 = 2w; (z185-z105) = whatever*pdir; -z106 = (z105--z185) intersectionpoint pth2; -z107 = (x105, y105-angdec); -x187 = x185; y187-y185 = y107-y105; -z108 = (z107--z187) intersectionpoint pth2; -draw z105--z106; draw z107--z108; - -%%ductus:=true; -if ductus: - pickup stylus; -fi - -ductus:=false; -penlabels(1,2,3,4,5,11,13,14,23,26,100); -endchar; % end "V" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{W} -% The letter `W'. This is a modern version as the font did not have a W. -% \begin{macrocode} -cmchar "TGOTH letter W"; -beginchar("W", 2cap_sb#+hstretch*((12)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pcshiftx := cap_sb; -pickup quill; -%% top of stems -lft x1 = pcshiftx + 3st; y1 = h; -rt x999 = w - pcshiftx; -x3 = 1/2[x1,x999]; y3 = h; -%% bowl bottoms -x21 = x1 - 3/2st; bot y21 = 0; -rt x23 = lft x3; bot y23 = 0; -pth1 := z21{pdir}..z23; -draw pth1; -lft x31 = rt x23; bot y31 = top y23; -x33 = 1/2[x31,x999]; bot y33 = 0; -pth2 := z31{pdir}..z33; -draw pth2; -%% bottom of stems -z2 = (z1--(x1,0)) intersectionpoint pth1; -x4 = x3; bot y4 = top y23; -draw_upcurlstem(1,2); -draw_updiamondstem(3,4,wided,widedmin,diawd,diang); -%% right V stem -z16 = z33; -x15 = x999; top y15 = 3/4h; -x13 = 1/2[rt x3, lft x15]; -x14 = 1/2[x13,x15]; top y14 = h; -y13 = 1/2[y14,y15]; -pth3 = z16{pdir}..{up}z15..{left}z14..{-pdir}z13; -draw pth3; -%% decorations -z1tr = (rt x1, top y1); -z3tr = (rt x3, top y3); -pickup stylus; -%% for U -z99 = 2/3[z3b,z3c]; -x101 - x1 = x3 - x99; top y101 = h; -x102 = x101; y102 = y2; -x103 = x1tr; y103 = y101; -draw z103--z101--z102; -x105 = x101; y105 = 1/3h; -x106 = x3; (z106-z105) = whatever*pdir; -z107 = (x105, y105-angdec); x108 = x106; y108-y106 = y107-y105; -draw z105--z106; draw z107--z108; -%% for V - -x301 = x3tr+2/3wided*st; top y301 = y3e; -z381 = (x301,-w); -z302 = (z301--z381) intersectionpoint pth2; -draw z3e--z301--z302; -x305 = x301; y305 = 1/3[y302,y301]; -x385 = 2w; (z385-z305) = whatever*pdir; -z306 = (z305--z385) intersectionpoint pth3; -z307 = (x305, y305-angdec); -x387 = x385; y387-y385 = y307-y305; -z308 = (z307--z387) intersectionpoint pth3; -draw z305--z306; draw z307--z308; - - - -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,11,13,14,33,34,53,16,100); -endchar; % end "W" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{X} -% The letter `X'. -% \begin{macrocode} -cmchar "TGOTH letter X"; -beginchar("X", 2cap_sb#+hstretch*((8)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -path pth[]; -numeric n[]; -numeric st; st := stem_width; -pcshiftx := cap_sb; -pickup quill; -%% center stem -lft x1 = lft x2 = pcshiftx + 3st; -y1 = 3/4h; y2 = 1/4h; -draw z1--z2; -%% top right -z21 = z1; top y22 = h; (z22-z21) = whatever*pdir; -rt x24 = w-pcshiftx; y24 = y21; -pth1 := z21--z22{-ppdir}..{pdir}z24; -draw pth1; -%% bottom right -z31 = z2; -rt x33 = w-pcshiftx; bot y33 = 0; -pth2 := z31{-ppdir}..{pdir}z33; -draw pth2; -%% bottom left -z41 = z2; -bot y43 = -1/4h; (z41-z43) = whatever*pdir; -x45 = x43 + st; y45=y43; -pth3 := z41--z43{-pdir}..{pdir}z45; -pickup stylus; -draw pth3; -pickup quill; -%% top left -x11 = x1; y11 = h; -draw_upcurlstem(11,1); -%% decoration -x81 = rt x1; -pickup stylus; -x101 = x102 = x81 + 2/3wided*st; -z101 = whatever[z1,z22]; -z102 = (z101--(x101,0)) intersectionpoint pth2; -draw z101--z102; -pickup quill; -%% middle arms -z120 = 1/2[z1,z2]; -z51 = z120; -lft x53 = pcshiftx; top y53 = y51; -x52 = 1/2[x51,x53]; y52 = y51; -pth5 := z51--z52{left}..{-pdir}z53; -draw pth5; -lft x61 = x101; y61 = y120; -rt x63 = w-pcshiftx; bot y63 = y61; -x62 = 1/2[x61,x63]; y62 = y61; -pth6 := z61--z62{right}..{pdir}z63; -draw pth6; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,10,25,251,252,40,50,51,52,53,61,62,63,101,102,150,60,160,100); -endchar; % end "X" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{Y} -% The letter `Y'. -% \begin{macrocode} -cmchar "TGOTH letter Y"; -beginchar("Y", 2cap_sb#+hstretch*((8)*stem_width#), - caprat*x_height#, 1/2caprat*x_height#); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pcshiftx := cap_sb; -pickup quill; -%% stem tops -lft x1 = pcshiftx + 3st; y1 = h; -rt x3 = w - pcshiftx - widedmin*st; y3 = h; -% bottom of bowl -x7 = x1 - 3/2st; bot y7 = 0; -x9 = 1/2[x1,x3]; bot y9 = 0; -pth1 := z7{pdir}..{right}z9; -draw pth1; -%% left stem bottom -x81 = x1; y81 = - h; -z2 = (z1--z81) intersectionpoint pth1; -draw_upcurlstem(1,2); -%% right stem -x4 = x3; y4 = 0; -x5 = x4; y5 = -1/4d; -lft x6 = x9; bot y6 = -d; -draw_updiamondstem(3,4,wided,widedmin,diawd,diang); -draw z6{pdir}..{up}z5--z4; -z3cd = 1/2[z3c,z3d]; -pth2 = z5--z3a--z3cd; -%% fill bowl bottom -x91 = x3; (z91-z9) = whatever*pdir; -draw z9--z91; - -%% decoration -z1tr = (rt x1, top y1); -x101 = x1tr + 2/3wided*st; -pickup stylus; -top y101 = h; -z103 = (x1tr,y101); -z181 = (x101,-w); -z102 = (z101--z181) intersectionpoint pth1; -draw z103--z101--z102; -x105 = x101; y105 = 1/3[y102,y101]; -x185 = 2w; (z185-z105) = whatever*pdir; -z106 = (z105--z185) intersectionpoint pth2; -z107 = (x105, y105-angdec); -x187 = x185; y187-y185 = y107-y105; -z108 = (z107--z187) intersectionpoint pth2; -draw z105--z106; draw z107--z108; -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,10,100,101,102,181); -endchar; % end "Y" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{Z} -% The letter `Z'. -% \begin{macrocode} -cmchar "TGOTH letter Z"; -beginchar("Z", 2cap_sb#+hstretch*((5)*stem_width#), - caprat*x_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -path pth[]; -pcshiftx := cap_sb; -pickup quill; -%% top bar ends -top y12 = h; -n1 := h - y12; -lft x1 = pcshiftx; rt x2 = w-pcshiftx-perpdec; -%%y1 = y12-n1; y2=y12+n1; -y1 = y12-n1/2; y2=y12; -x12 = 1/2[x1,x2]; -pth1 := z1{pdir}..z12{right}..z2{pdir}; -x102 = rt x2; y102 = top y2; x202 = x102+perpdec; y202=y102; -%% bottom bar ends -bot y34 = 0; -x3=x1+perpdec; rt x4= w-pcshiftx; -y3=y34-n1/2; y4=y34; -x34 = 1/2[x3,x4]; -pth2 := z3{pdir}..z34{right}..z4{pdir}; -x203 = lft x3; y203 = bot y3; x103 = x203-perpdec; y103=y203; -%% centre bar -z5 = (x1,1/2[y1,y3]); z6 = (x4,1/2[y2,y4]); z56 = 1/2[z5,z6]; -pth3 := z5{pdir}..z56{right}..z6{pdir}; -draw pth1; draw pth2; % bars -draw pth3; -%% decorations -pickup stylus; -draw z102--z103; draw z202--z203; -unfill z102--z103--z203--z202--cycle; -draw z102--z103; draw z202--z203; -ductus:=false; -penlabels(1,2,3,4,5,6,10o,10i,20o,20i,100); -endchar; % end "Z" - -% \end{macrocode} -% \end{routine} -% -% -% -% The end of this file -% \begin{macrocode} -% -% \end{macrocode} -% -% -% -% \subsection{The punctuation file} -% -% The main punctuation marks are defined in this file. -% -% \begin{macrocode} -%<*punct> -% TGOTHPUNCT.MF This file contains punctuation marks - -% \end{macrocode} -% -% -% \begin{routine}{!} -% The `!' character, which had not been invented at this time. -% \begin{macrocode} - -cmchar "Exclamation mark"; -beginchar("!", 2sb#+hstretch*(thick#+trijut#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -x1=w/2; top y1 = h; -z3=(x1, 1/2dot_size); -z2=(x1, y3+3/2dot_size); -draw z1--z2; -draw_pdot(3,dot_size); -penlabels(1,2,3); - -endchar; % end of "!" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{?} -% The `?' character, which had not been invented at this time. -% \begin{macrocode} - -cmchar "Question mark"; -beginchar("?", 2sb#+hstretch*((3+wided+widedmin)*stem_width#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -path pth[]; -pickup quill; -n1 := w-2pcshiftx; % actual character width -n2 := 1/3h; % height of top bowl -n3 := n2; % height of bottom bowl -z5=(1/2w,1/2dot_size); -x45 = x5; y45=y5+3/2dot_size; -lft x1 = pcshiftx; y1 = 3/4h; -x2 = 1/2w; top y2 = h; -rt x3 = w-pcshiftx; y3 = 11/16h; - -x4 = x45; -(z3-z4) = whatever*pdir; - -%%ductus:= true; -if ductus: - pickup stylus; -fi -%%draw z1..z2{right}..z3{down}..z4{down}; -draw z1--z2--z3--z4--z45; -draw_pdot(5, dot_size); -penlabels(1,2,3,4,45,5); -endchar; % end of "?" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{,} -% The `,' character. -% \begin{macrocode} - -cmchar "Comma"; -beginchar(",",2sb#+hstretch*(comma_width#+dot_size#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb; -x1=w-pcshiftx-(0.5hstretch*dot_size); y1=1/2dot_size; -draw_pcomma(1,dot_size,comma_width); -penlabels(1); -endchar; % end of "," - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{.} -% The `.' character. -% \begin{macrocode} - -cmchar "Period"; -beginchar(".",2sb#+hstretch*(dot_size#),x_height#,0); -pcshiftx:=sb; -z1=(w/2, 1/2dot_size); -draw_pdot(1,dot_size); -penlabels(1); -endchar; % end of "." - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{:} -% The `:' character. -% \begin{macrocode} - -cmchar "Colon"; -beginchar(":",2sb#+hstretch*(dot_size#),x_height#,0); -pcshiftx:=sb; -x1=x2=w/2; y1=3/4h; y2=1/4h; -draw_pdot(1,dot_size); -draw_pdot(2,dot_size); -penlabels(1,2); -endchar; % end ":" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{;} -% The `;' character. -% \begin{macrocode} - -cmchar "Semicolon"; -beginchar(";",2sb#+hstretch*(comma_width#+dot_size#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb; -x1=x2=w-pcshiftx-(0.5hstretch*dot_size); y1=3/4h; y2=1/2dot_size; -draw_pdot(1,dot_size); -draw_pcomma(2,dot_size,comma_width); -penlabels(1,2); -endchar; % end of ";" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{'} -% The `'' character. -% \begin{macrocode} - -cmchar "Apostrophe"; -beginchar("'",2sb#+hstretch*(comma_width#+dot_size#),4/3x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb; -x1=w-pcshiftx-(0.5hstretch*dot_size); y1=h; -draw_pcomma(1,dot_size,comma_width); -penlabels(1); -endchar; % end of "'" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{`} -% The ``' character. -% \begin{macrocode} - -cmchar "Reverse apostrophe"; -beginchar("`",2sb#+hstretch*(comma_width#+dot_size#),4/3x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb; -x1=pcshiftx+(0.5hstretch*dot_size); y1=h; -draw_plq(1,dot_size,comma_width); -penlabels(1); -endchar; % end of "`" - -% \end{macrocode} -% \end{routine} -% -% The end of this file. -% \begin{macrocode} -% -% \end{macrocode} -% -% -% \subsection{The ligatures and dashes file} -% -% The ligatured letters, punctuation marks and dashes are defined in this file. -% \begin{macrocode} -%<*lig> -% TGOTHLIG.MF Uncial ligatured letters, punctation and dashes - -% \end{macrocode} -% First the ligtables. -% \begin{macrocode} - -ligtable "`": "`"=:oct"134"; -ligtable "'": "'"=:oct"042"; %% , "?" kern 2u#, "!" kern 2u#; - -ligtable "-": "-"=:oct"173"; -ligtable oct"173": "-"=:oct"174"; - -%%%%ligtable "c": "t"=:oct"014"; -ligtable "s": "t"=:oct"015"; - -% \end{macrocode} -% -% -% -% \begin{routine}{st} -% The `st' ligature. -% \begin{macrocode} - -cmchar "TGOTH st ligature"; -beginchar(oct"015", 2sb#+hstretch*((1 + narrowd + 3)*stem_width#), - asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -numeric st; st := stem_width; -n1 := h/ascratio; % x-height -pickup quill; -%% the S (long) -lft x1 = pcshiftx + narrowd*st; -x2 = x1; y2 = 0; y1 = h - (top y2 - bot y2); -z12 = 1/2[z1,z2]; -draw_updiamondstem(1,12,narrowd, 1/4narrowdmin, diawd, diang); -draw_downdiamondstem(12,2,narrowd, narrowdmin, diawd, diang); -%% the T -%% bar -lft x23 = rt x1 + pcshiftx; top y23 = n1; -rt x24 = w-pcshiftx; y24=y23; -draw z23--z24; -%% stem -lft x21 = rt x23; top y21 = h; -x22 = x21; y22 = 0; -draw_downdiamondstem(21,22,narrowd,narrowdmin,diawd,diang); -%% the ligature -x11=x1; top y11=h; -draw z12--z11--z21; -ductus:=false; -penlabels(1,2,3,4,5,11,21,22,23,24,100); -%% end "t" -endchar; %% end st ligature - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{''} -% The `''' ligature. -% \begin{macrocode} - -cmchar "Closing quotes"; -beginchar(oct"042",2sb#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb; -x1=w-pcshiftx-(0.5hstretch*dot_size); y1=y2=h; -x2=x1-(2hstretch*dot_size); -draw_pcomma(1,dot_size,comma_width); % right -draw_pcomma(2,dot_size,comma_width); % left -penlabels(1,2); -endchar; % end of "''" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{``} -% The ```' ligature. -% \begin{macrocode} - -cmchar "Opening quotes"; -beginchar(oct"134",2sb#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb; -x1=pcshiftx+(0.5hstretch*dot_size); y1=y2=h; -x2=x1+(2hstretch*dot_size); -draw_plq(1,dot_size,comma_width); % left -draw_plq(2,dot_size,comma_width); % right -penlabels(1,2); -endchar; % end of "``" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{-} -% The `-' (hyphen) character. -% \begin{macrocode} - -cmchar "Hyphen"; -beginchar("-",sb#+hstretch*((2)*stem_width#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb/2; -pickup threequarterquill; -lft x21=pcshiftx; rt x22=w-pcshiftx; y21=y22=1/2h; -draw z21--z22; -%%draw_roundserif(21,22,srad); draw_flatserif(22,21,srad); -penlabels(1,2); -endchar; % end of "-" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{--} -% The `--' (en-dash) ligature. -% \begin{macrocode} - -cmchar "En dash"; -beginchar(oct"173",sb#+hstretch*((3)*stem_width#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb/2; -pickup threequarterquill; -lft x21=pcshiftx; rt x22=w-pcshiftx; y21=y22=1/2h; -draw z21--z22; -%%draw_roundserif(21,22,srad); draw_flatserif(22,21,srad); -penlabels(1,2); -endchar; % end of "--" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{---} -% The `---' (em dash) ligature. The em dash is twice the width of the en dash. -% \begin{macrocode} - -cmchar "Em dash"; -beginchar(oct"174",sb#+hstretch*((6)*stem_width#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=sb/2; -pickup threequarterquill; -lft x21=pcshiftx; rt x22=w-pcshiftx; y21=y22=1/2h; -draw z21--z22; -%%draw_roundserif(21,22,srad); draw_flatserif(22,21,srad); -penlabels(1,2); -endchar; % end of "---" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{&} -% The ampersand (which is really an `et' ligature). -% In this case, a `t' with one thin bar. -% \begin{macrocode} - -cmchar "TGOTH ampersand"; -beginchar("&", 2sb#+hstretch*((7/2)*stem_width#), asc_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -numeric st; st := stem_width; -pickup quill; -%% bar -lft x3 = pcshiftx; top y1 = h; -top y3 = bot y1; -rt x4 = w-pcshiftx; y4=y3; -draw z3--z4; -%% stem -lft x1 = rt x3; -x2 = x1; y2 = 0; -draw_downdiamondstem(1,2,wided,widedmin,diawd,diang); -%% E bars -n1 = 1/2[y3,y2a] + 1/2angdec; -pickup halfquill; -lft x11 = pcshiftx; rt x12 = w-pcshiftx; -%y11=y12=n1; -y11 = y12 = 1/2h; -x13 = x11; x14=x12; y13 = y14 = n1-angdec; -draw z11--z12; -%%draw z13--z14; -ductus:=false; -penlabels(1,2,3,4,5,6,11,12,13,14,100); -endchar; % end "&" - -% \end{macrocode} -% \end{routine} -% -% -% The end of this file. -% \begin{macrocode} -% -% \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> -% TGOTHDIG.MF Program file for Early Gothic digits -% - -% \end{macrocode} -% -% -% -% \begin{routine}{1} -% The digit `1'. -% \begin{macrocode} -cmchar "TGOTH digit 1"; -beginchar("1", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -pickup quill; -x1 = x2 = 1/2w; y1 = h; y2 = 0; -z12 = 1/2[z1,z2]; -draw_updiamondstem(1,12,1/2,1/2,diawd,diang); -draw_downdiamondstem(12,2,1/2,1/2,diawd,diang); -penlabels(1,2,100); -endchar; % end "1" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{2} -% The digit `2'. -% \begin{macrocode} -cmchar "TGOTH digit 2"; -beginchar("2", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -numeric st; st := stem_width; -numeric n[]; -n1 := 1/2st; -pickup quill; -% stem -lft x1=pcshiftx+n1; top y1=h-2n1; -rt x3=w-pcshiftx-n1; y3=3/4h; -x2=1/2[x1,x3]; top y2= h; -% foot -x5= lft x1; bot y5=0; -x6= rt x3; y6=y5; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_wave(5,6,thin); % foot -draw z1--z2--z3--z5wl; % curve -ductus:=false; -penlabels(1,2,3,4,5,6,100); -endchar; % end "2" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{3} -% The digit `3'. -% \begin{macrocode} -cmchar "TGOTH digit 3"; -beginchar("3", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -numeric n[]; -numeric st; st := stem_width; -n1 := st; -pcshiftx := u; -pickup quill; -%% top -lft x1 = pcshiftx + n1; rt x3 = w - pcshiftx - n1; -x2 = 1/2[x1,x3]; x4 = 1/2[x1,x2]; -top y2 = h; y3 = 12/16h; -(z2-z1) = whatever*pdir; -(z3-z4) = whatever*pdir; -%% bottom -x5 = 12/16[x4, rt x4]; x6 = x3; x7 = x2; -x18 = x1-n1; x17 = x7; -bot y7 = thin; -y5 = 12/16[y4, top y4]; -(z5-z6) = whatever*(z2-z3); -bot y18 = 0; bot y17 = 0; - -draw z1--z2--z3--z4; % top -draw_wave(18,17,thin); -draw z5--z6--z18wr; % bottom -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,10,17,18,100); -endchar; % end "3" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{4} -% The digit `4'. -% \begin{macrocode} -cmchar "TGOTH digit 4"; -beginchar("4", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -numeric st; st := stem_width; -numeric n[]; -pcshiftx := u; -pickup quill; -% the stem -x1=x2=w-pcshiftx-(wided+widedmin)*st; -y1=h; y2=0; -% the crossbar -lft x3=pcshiftx; y3=7/16h; -rt x4=w-pcshiftx; y4=y3; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_downdiamondstem(1,2,wided,widedmin,diawd,diang); % stem -draw 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 "TGOTH digit 5"; -beginchar("5", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -numeric n[]; -numeric st; st := stem_width; -n1 := st; -pickup quill; -% for the top -rt x1=w-pcshiftx; top y1=h; -lft x2=pcshiftx+n1; y2=y1; -% the S curve -x3=x2; y3=0.5h; -x4=0.5[x1,x3]; y4=0.5[y3,y5]; -rt x5=w-pcshiftx; y5=1/2[thick,y3]; -x6=w/2; bot y6=0; -%%x16 = 12/16[x3,x5]; -x16 = lft x5; -bot y16 = 0; -lft x17=pcshiftx; bot y17=0; -z167 = 1/2[z16,z17]; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_wave(2,1,thin); % top squiggle -draw z2wl--z3; % vertical -%%draw_wave(17,16,thin); % foot -draw z17{pdir}..{pdir}z16; % foot -draw z3{pdir}..z5{down}..z16; % curve -ductus:=false; -penlabels(1,2,3,4,5,6,7,100); -endchar; % end "5" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{6} -% The digit `6'. -% \begin{macrocode} -cmchar "TGOTH digit 6"; -beginchar("6", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -numeric st; st := stem_width; -n1 := 24/16st; -pickup quill; -%% bottom left -x1 = x4 = w/2; top y1 = h - thick; bot y4 = 0; -x2 = x3 = x1 + n1; x5 = x6 = x1 - n1; -y2 = y6 = 3/4[y4,y1]; -y3 = y5 = 1/4[y4,y1]; -%% bowl -draw z1--z2--z3--z4--z5--z6--cycle; -%% head -x11 = x5; top y11 = h; -x12 = x2; y12 = y11; -draw_wave(11,12,thin); -x16 = x11; y16 = y11-thin; -draw z6--z16; -penlabels(1,2,3,4,5,6,12,100); -endchar; % end "6" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{7} -% The digit `7'. -% \begin{macrocode} -cmchar "TGOTH digit 7"; -beginchar("7", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% top bar -lft x1=pcshiftx; -rt x2=w-pcshiftx; -top y1=top y2=h; -% bowed leg -x4=w/2; bot y4=0; -x3=0.5[x2,x4]-3thin; y3=0.5[y2,y4]; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_wave(1,2,thin); % top bar -draw z1wr..z3..z4; -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 "TGOTH digit 8"; -beginchar("8", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -numeric alpha; alpha:=1; -pickup quill; -lft x1= pcshiftx; rt x3=w-pcshiftx; top y1 = y3 = 3/4h; -rt x2 = lft x4 = w/2; top y2=h; bot y4=0; -x5=x2; y5=h/2+2o; -lft x11=pcshiftx; rt x13=w-pcshiftx; y11 = bot y13 = 1/4h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -%%draw z1..z2..z3..z5..z11..z4..z13..z5..cycle; -draw z1--z2--z3--z11--z4--z13--cycle; -ductus:=false; -penlabels(1,2,3,4,5,11,13,100); -endchar; % end "8" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{9} -% The digit `9'. -% \begin{macrocode} -cmchar "TGOTH digit 9"; -beginchar("9", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -numeric st; st := stem_width; -n1 := 24/16st; -pickup quill; -%% bottom left -x1 = x4 = w/2; top y1 = h; bot y4 = thick; -x2 = x3 = x1 + n1; x5 = x6 = x1 - n1; -y2 = y6 = 3/4[y4,y1]; -y3 = y5 = 1/4[y4,y1]; -%% bowl -draw z1--z2--z3--z4--z5--z6--cycle; -%% foot -x11 = x5; bot y11 = 0; -x12 = x2; y12 = y11; -draw_wave(11,12,thin); -x13 = x12; y13 = y12+thin; -draw z3--z13; -penlabels(1,2,3,4,5,6,12,100); -endchar; % end "9" - - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{0} -% The digit `0'. -% \begin{macrocode} -cmchar "TGOTH digit 0"; -beginchar("0", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := sb; -numeric n[]; -numeric st; st := stem_width; -n1 := 24/16st; -pickup quill; -%% bottom left -x1 = x4 = w/2; top y1 = h; bot y4 = 0; -x2 = x3 = x1 + n1; x5 = x6 = x1 - n1; -y2 = y6 = 3/4h; -y3 = y5 = 1/4h; - -draw z1--z2--z3--z4--z5--z6--cycle; - -penlabels(1,2,3,4,5,6,12,100); -endchar; % end "0" - -% \end{macrocode} -% \end{routine} -% -% -% The end of this file. -% \begin{macrocode} -% -% \end{macrocode} -% -% -% \section{The font definition files} \label{sec:fd} -% -% The font comes in normal and bold weights only. -% -% \begin{macrocode} -%<*fdot1> -\DeclareFontFamily{OT1}{tgoth}{} - \DeclareFontShape{OT1}{tgoth}{m}{n}{ <-8.5> tgoth7 <8.5-15> tgoth10 <15-> tgoth17 }{} - \DeclareFontShape{OT1}{tgoth}{m}{sl}{ <-> sub * tgoth/m/n }{} - \DeclareFontShape{OT1}{tgoth}{m}{it}{ <-> sub * tgoth/m/n }{} - \DeclareFontShape{OT1}{tgoth}{m}{sc}{ <-> sub * tgoth/m/n }{} - \DeclareFontShape{OT1}{tgoth}{m}{u}{ <-> sub * tgoth/m/n }{} - \DeclareFontShape{OT1}{tgoth}{bx}{n}{ <-15> tgothb10 <15-> tgothb17 }{} - \DeclareFontShape{OT1}{tgoth}{bx}{it}{ <-> sub * tgoth/bx/n }{} - \DeclareFontShape{OT1}{tgoth}{bx}{sl}{ <-> sub * tgoth/bx/n }{} - \DeclareFontShape{OT1}{tgoth}{b}{n}{ <-> sub * tgoth/bx/n }{} -% -% \end{macrocode} -% -% -% \begin{macrocode} -%<*fdt1> -\DeclareFontFamily{T1}{tgoth}{} - \DeclareFontShape{T1}{tgoth}{m}{n}{ <-8.5> tgoth7 <8.5-15> tgoth10 <15-> tgoth17 }{} - \DeclareFontShape{T1}{tgoth}{m}{sl}{ <-> sub * tgoth/m/n }{} - \DeclareFontShape{T1}{tgoth}{m}{it}{ <-> sub * tgoth/m/n }{} - \DeclareFontShape{T1}{tgoth}{m}{sc}{ <-> sub * tgoth/m/n }{} - \DeclareFontShape{T1}{tgoth}{m}{u}{ <-> sub * tgoth/m/n }{} - \DeclareFontShape{T1}{tgoth}{bx}{n}{ <-15> tgothb10 <15-> tgothb17 }{} - \DeclareFontShape{T1}{tgoth}{bx}{it}{ <-> sub * tgoth/bx/n }{} - \DeclareFontShape{T1}{tgoth}{bx}{sl}{ <-> sub * tgoth/bx/n }{} - \DeclareFontShape{T1}{tgoth}{b}{n}{ <-> sub * tgoth/bx/n }{} -% -% \end{macrocode} -% -% \section{The package code} \label{sec:code} -% -% \subsection{The \Lpack{tgothic} package} -% -% The \Lpack{tgothic} 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{tgothic}[2002/12/30 v1.0 package for Gothic Textura 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}{\tgothfamily} -% Selects the \thisfont{} font family in the OT1 or T1 encoding. -% \begin{macrocode} -\ifx\Tienc\encodingdefault - \newcommand{\tgothfamily}{\usefont{T1}{tgoth}{m}{n}} -\else - \newcommand{\tgothfamily}{\usefont{OT1}{tgoth}{m}{n}} -\fi -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\texttgoth} -% Text command for the \thisfont{} font family. -% \begin{macrocode} -\DeclareTextFontCommand{\texttgoth}{\tgothfamily} -% \end{macrocode} -% \end{macro} -% -% The end of this package. -% \begin{macrocode} -% -% \end{macrocode} -% -% \subsection{The \Lpack{alltgoth} package} -% -% The \Lpack{alltgoth} 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{tgothic} package. -% \begin{macrocode} -%<*uscall> -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{alltgoth}[2002/12/30 v1.0 package for all Gothic Textura fonts] -\RequirePackage{tgothic} -% \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}{tgoth} -\renewcommand{\sfdefault}{tgoth} -\renewcommand{\ttdefault}{tgoth} -% \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}{\tgoth@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{\tgoth@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}{\tgoth@new@setfontsize} -% This is a macro that replaces the |\@setfontsize| macro which is called by -% the font size changing commands. -% \begin{macrocode} -\newcommand{\tgoth@new@setfontsize}[3]{% - \edef\@tempa{\def\noexpand\@tempb####1<#2}% - \@tempa>##2<##3\@nil{\def\tgoth@baselineskip@value{##2}}% - \edef\@tempa{\noexpand\@tempb\tgoth@baselineskip@table<#2}% - \@tempa><\@nil - \ifx\tgoth@baselineskip@value\@empty - \def\tgoth@baselineskip@value{#3}% - \fi - \tgoth@old@setfontsize{#1}{#2}\tgoth@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\tgoth@old@setfontsize=\@setfontsize - \let\@setfontsize=\tgoth@new@setfontsize} -\AtBeginDocument{\normalsize} -% \end{macrocode} -% -% -% The end of this package. -% \begin{macrocode} -% -% \end{macrocode} -% -% -% -% -% -% \Finale -% \PrintIndex -% -\endinput - -%% \CharacterTable -%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -%% Digits \0\1\2\3\4\5\6\7\8\9 -%% Exclamation \! Double quote \" Hash (number) \# -%% Dollar \$ Percent \% Ampersand \& -%% Acute accent \' Left paren \( Right paren \) -%% Asterisk \* Plus \+ Comma \, -%% Minus \- Point \. Solidus \/ -%% Colon \: Semicolon \; Less than \< -%% Equals \= Greater than \> Question mark \? -%% Commercial at \@ Left bracket \[ Backslash \\ -%% Right bracket \] Circumflex \^ Underscore \_ -%% Grave accent \` Left brace \{ Vertical bar \| -%% Right brace \} Tilde \~} - - diff --git a/Master/texmf-dist/source/latex/bookhands/tgothic/tgothic.ins b/Master/texmf-dist/source/latex/bookhands/tgothic/tgothic.ins deleted file mode 100644 index e78ed2aba99..00000000000 --- a/Master/texmf-dist/source/latex/bookhands/tgothic/tgothic.ins +++ /dev/null @@ -1,101 +0,0 @@ -%% -%% tgothic.ins -%% Copyright 1999 Peter R. Wilson -%% -%% This program is provided under the terms of the -%% LaTeX Project Public License distributed from CTAN -%% archives in directory macros/latex/base/lppl.txt. -%% -%% Author: Peter Wilson (CUA) -%% now at: peter.r.wilson@boeing.com -%% -%% This file will generate fast loadable files and documentation -%% driver files from the doc files in this package when run through -%% LaTeX or TeX. -%% -%% --------------- start of docstrip commands ------------------ -%% -\def\batchfile{tgothic.ins} -\input docstrip.tex -\preamble - - Copyright 1999 Peter R. Wilson - - This program is provided under the terms of the - LaTeX Project Public License distributed from CTAN - archives in directory macros/latex/base/lppl.txt. - -Author: Peter Wilson (CUA) - now at: peter.r.wilson@boeing.com - -\endpreamble - -\keepsilent - -%%% \Msg{*** Generating the driver file ***} -%%% \generateFile{tgothic.drv}{t}{\from{tgothic.dtx}{driver}} - -\Msg{*** Generating the Metafont files ***} - -\usepostamble\empty -\generateFile{tgoth7.mf}{t}{\from{tgothic.dtx}{base7}} -\generateFile{tgoth10.mf}{t}{\from{tgothic.dtx}{base10}} -\generateFile{tgoth17.mf}{t}{\from{tgothic.dtx}{base17}} -\generateFile{tgothb7.mf}{t}{\from{tgothic.dtx}{base7b}} -\generateFile{tgothb10.mf}{t}{\from{tgothic.dtx}{base10b}} -\generateFile{tgothb17.mf}{t}{\from{tgothic.dtx}{base17b}} -\generateFile{tgothl.mf}{t}{\from{tgothic.dtx}{min}} -\generateFile{tgothu.mf}{t}{\from{tgothic.dtx}{maj}} -\generateFile{tgothtitle.mf}{t}{\from{tgothic.dtx}{mfd}} -\generateFile{tgothpunct.mf}{t}{\from{tgothic.dtx}{punct}} -\generateFile{tgothlig.mf}{t}{\from{tgothic.dtx}{lig}} -\generateFile{tgothdig.mf}{t}{\from{tgothic.dtx}{dig}} - -\Msg{*** Generating the Font Definition files ***} -\usepostamble\defaultpostamble - -\generateFile{ot1tgoth.fd}{t}{\from{tgothic.dtx}{fdot1}} -\generateFile{t1tgoth.fd}{t}{\from{tgothic.dtx}{fdt1}} - -\Msg{*** Generating the LaTeX2e package files ***} - -\generateFile{tgothic.sty}{t}{\from{tgothic.dtx}{usc}} -\generateFile{alltgoth.sty}{t}{\from{tgothic.dtx}{uscall}} - -\Msg{***********************************************************} -\Msg{*} -\Msg{* To finish the installation you have to move the following} -\Msg{* files into directories searched by TeX:} -\Msg{*} -\Msg{* Move these into the font source area:} -\Msg{* \space\space tgoth7.mf} -\Msg{* \space\space tgoth10.mf} -\Msg{* \space\space tgoth17.mf} -\Msg{* \space\space tgothb7.mf} -\Msg{* \space\space tgothb10.mf} -\Msg{* \space\space tgothb17.mf} -\Msg{* \space\space tgothl.mf} -\Msg{* \space\space tgothu.mf} -\Msg{* \space\space tgothtitle.mf} -\Msg{* \space\space tgothpunct.mf} -\Msg{* \space\space tgothlig.mf} -\Msg{* \space\space tgothdig.mf} -\Msg{*} -\Msg{* Move these into the LaTeX macro area:} -\Msg{* \space\space ot1tgoth.fd} -\Msg{* \space\space t1tgoth.fd} -\Msg{* \space\space tgothic.sty} -\Msg{* \space\space alltgoth.sty} -\Msg{*} -\Msg{*} -\Msg{* To produce the documentation run the files ending with} -\Msg{* `.dtx' through LaTeX.} -\Msg{* Process any name.idx file by:} -\Msg{* \space\space\space\space makeindex -s gind.ist name} -\Msg{* Process any name.glo file by:} -\Msg{* \space\space\space\space makeindex -s gglo.ist -o name.gls name.glo} -\Msg{*} -\Msg{* Happy TeXing} -\Msg{***********************************************************} - -\endinput diff --git a/Master/texmf-dist/source/latex/bookhands/uncial/uncial.dtx b/Master/texmf-dist/source/latex/bookhands/uncial/uncial.dtx deleted file mode 100644 index 96041df453a..00000000000 --- a/Master/texmf-dist/source/latex/bookhands/uncial/uncial.dtx +++ /dev/null @@ -1,3761 +0,0 @@ -% \iffalse meta-comment -% -% uncial.dtx -% Copyright 1999 Peter R. Wilson -% -% This program is provided under the terms of the -% LaTeX Project Public License distributed from CTAN -% archives in directory macros/latex/base/lppl.txt. -% -% Author: Peter Wilson (CUA) (now at: peter.r.wilson@boeing.com) -% -% If you do not have the docmfp package (available from CTAN in -% tex-archive/macros/latex/contrib/supported), comment out the -% \usepackage{docmfp} line below and uncomment the line following it. -% -%<*driver> -\documentclass{ltxdoc} -\usepackage{docmfp} -%%%%%% \providecommand{\DescribeVariable}[1]{} \newenvironment{routine}[1]{}{} -\EnableCrossrefs -\CodelineIndex -\setcounter{StandardModuleDepth}{1} -\begin{document} - \DocInput{uncial.dtx} -\end{document} -% -% -% \fi -% -% \CheckSum{131} -% -% \DoNotIndex{\',\.,\@M,\@@input,\@addtoreset,\@arabic,\@badmath} -% \DoNotIndex{\@centercr,\@cite} -% \DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue} -% \DoNotIndex{\@input,\@ixpt,\@m} -% \DoNotIndex{\@minus,\@mkboth,\@ne,\@nil,\@nomath,\@plus,\@set@topoint} -% \DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb} -% \DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt} -% \DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt} -% \DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace} -% \DoNotIndex{\advance,\Alph,\alph} -% \DoNotIndex{\arabic,\ast,\begin,\begingroup,\bfseries,\bgroup,\box} -% \DoNotIndex{\bullet} -% \DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption} -% \DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass} -% \DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\endtrivlist} -% \DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup} -% \DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter} -% \DoNotIndex{\fbox} -% \DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef} -% \DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule} -% \DoNotIndex{\hsize,\hskip,\hspace,\hss,\if@tempswa,\ifcase,\or,\fi,\fi} -% \DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\fi,\fi,\fi,\fi,\fi} -% \DoNotIndex{\input} -% \DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark} -% \DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright} -% \DoNotIndex{\month,\newcommand,\newcounter,\newenvironment} -% \DoNotIndex{\NeedsTeXFormat,\newdimen} -% \DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number} -% \DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\p@} -% \DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip} -% \DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions} -% \DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright} -% \DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font} -% \DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily,\roman} -% \DoNotIndex{\roman,\secdef,\selectfont,\setbox,\setcounter,\setlength} -% \DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space} -% \DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase} -% \DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt} -% \DoNotIndex{\viipt,\vipt,\vskip,\vspace} -% \DoNotIndex{\wd,\xiipt,\year,\z@} -% -% \changes{v1.0}{1999/04/02}{First public release} -% \changes{v1.0a}{1999/04/29}{Corrected the bookhand table} -% \changes{v1.1}{1999/05/15}{Added arabic digits and new package} -% \changes{v1.1a}{2001/01/02}{Fixed missing * in .fd files} -% -% ^^A \def\fileversion{v1.1} -% ^^A \def\filedate{1999/05/15} -% \def\fileversion{v1.1a} -% \def\filedate{2001/01/02} -% \newcommand*{\Lpack}[1]{\textsf {#1}} ^^A typeset a package -% \newcommand*{\Lopt}[1]{\textsf {#1}} ^^A typeset an option -% \newcommand*{\file}[1]{\texttt {#1}} ^^A typeset a file -% \newcommand*{\Lcount}[1]{\textsl {\small#1}} ^^A typeset a counter -% \newcommand*{\pstyle}[1]{\textsl {#1}} ^^A typeset a pagestyle -% \newcommand*{\Lenv}[1]{\texttt {#1}} ^^A typeset an environment -% \newcommand*{\AD}{\textsc{ad}} -% -% \title{The \Lpack{uncial} fonts\thanks{This -% file has version number \fileversion, last revised -% \filedate.}} -% -% \author{% -% Peter Wilson\\ -% Catholic University of America \\ -% Now at \texttt{peter.r.wilson@boeing.com} -% } -% \date{\filedate} -% \maketitle -% \begin{abstract} -% The \Lpack{uncial} and \Lpack{alluncl} packages provide a set of -% Metafont Uncial book-hands -% as used -% for manuscripts in the 3rd to the 6th century. This is one in a series -% of manuscript fonts. -% \end{abstract} -% \tableofcontents -% \listoftables -% -% \StopEventually{} -% -% -% -% \section{Introduction} -% -% The \Lpack{uncial} and \Lpack{alluncl} packages provide a Metafont~\cite{METAFONT} version -% of the Uncial manuscript book-hand that was in use between about the -% third and sixth centuries~\AD. It is part of a project to provide fonts -% covering the major manuscript hands between the first century~\AD{} and -% the invention of printing. The principal resources used in this project -% are listed in the Bibliography. -% -% This manual is typeset according to the conventions of the -% \LaTeX{} \textsc{docstrip} utility which enables the automatic -% extraction of the \LaTeX{} macro source files~\cite{GOOSSENS94}. -% The \Lpack{docmfp} package is used for documenting the Metafont portions -% of the distribution~\cite{DOCMFP}. -% -% Section~\ref{sec:usc} describes the usage of the package. -% Commented code for the fonts is in Sections~\ref{sec:mf} and~\ref{sec:fd} -% and source code for the package is in Section~\ref{sec:code}. -% -% \subsection{Manuscript book-hands} -% -% Before the invention of printing all books were written by hand. The book-hands -% used by the scribes and copyists for the manuscripts changed as time -% went on. Table~\ref{tab:1} lists some of the common book-hands which were used -% between the 1st and 15th centuries. The later book-hands formed the basis of the -% fonts used by the early printers, which in turn form the basis of the printing -% fonts in use today. -% -% The manuscript book-hands were written with a broad nibbed reed or quill -% pen. Among the distinguishing characteristics of a hand, apart from the -% actual shape of the letters, are the angle of the pen (which controls the -% variation between thick and thin strokes) and the height of a letter compared -% to the width of the nib. The lower the ratio of the letter height to nib -% width, the more condensed is the script. The scripts also varied in their -% typical height. -% -% Table~\ref{tab:1} gives an `average' x-height for each -% script, which I obtained by measuring a sample of photographs of -% manuscripts written in the various hands. About a dozen examples -% of each book-hand were measured. This figure should not be taken too -% seriously. -% -% There was not a sharp division between the use of one hand and another. -% Many manuscripts exhibit a variety of hands in the same document. For example, -% the scribe writing in an Uncial hand may have used Roman Rustic letters -% for capitals. Usually the same pen was used for the two different scripts. -% -% Generally speaking, as a hand got older it became more embelished, and -% therefore took longer to write. As this happened a new hand would appear that -% was faster, and which would eventually make the earlier one obsolete. -% -% Many of the book-hands were single-cased; that is, they did not have an -% upper- and lower-case as we do nowadays in Western scripts. On the other -% hand, a script might be majuscule or minuscule. A \textit{majuscule} script -% is one, like our upper-case, where the letters are drawn between two lines -% and are of a uniform height with no ascenders or descenders. -% A \textit{minuscule} script, like our lower-case, is drawn between four lines -% and has ascenders and descenders. -% -% \begin{table} -% \centering -% \caption{The main manuscript book-hands} \label{tab:1} -% \begin{tabular}{lccccc} \hline -% Name & Century & x-height & Height & Pen & Normalised \\ -% & & (mm) & (nib widths) & angle & height \\ \hline -% Roman Rustic & 1--6 & 5.7 & 4--6 & 45 & 1.90 \\ -% Uncial & 3--6 & 4.1 & 4--5 & 30 & 1.37 \\ -% Half Uncial & 3--9 & 3.2 & 3--6 & 20--30 & 1.07 \\ -% Artificial Uncial & 6--10 & 4.2 & 3--6 & 10 & 1.40 \\ -% Insular majuscule & 6--9 & 4.2 & 5 & 0--20 & 1.40 \\ -% Insular minuscule & 6 onward & 4.1 & 5--6 & 45--70 & 1.37 \\ -% Carolingian minuscule & 8--12 & 3.0 & 3--5 & 45 & 1.00 \\ -% Early Gothic & 11--12 & 3.8 & 4--6 & 20--45 & 1.27 \\ -% Gothic Textura & 13--15 & 3.9 & 3--5 & 30--45 & 1.30 \\ -% Gothic Prescius & 13 onward & 3.3 & 4--5 & 45 & 1.10 \\ -% Rotunda & 13--15 & 3.2 & 4--6 & 30 & 1.07 \\ -% Humanist minuscule & 14 onward & 3.0 & 4--5 & 30--40 & 1.00 \\ \hline -% \end{tabular} -% \end{table} -% -% During the period under consideration arabic numerals were effectively -% not used. At the beginning they were unknown and even though some knew -% of them towards the end, the glyphs used for them are not recognisable --- -% to me they look somewhat like cryllic letters --- and each locality -% and time had its own highly individualistic rendering. The general rule -% when using one of these book-hands is to write all numbers using -% roman numerals. -% -% 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 Uncial script} -% -% The Uncial hand, which is a minuscule script, was in use for some four -% centuries and was the sucessor to the Roman Rustic book-hand. Usually the -% lettering in a manuscript was all one size. If the scribe felt the need -% for `capital' letters then, using the same pen, would either write a larger -% Uncial letter or write a Roman Rustic letter. During the period when the -% Uncial script was used the alphabet only had 23 letters. I have included -% the missing J, U and W. -% -% Arabic numerals were unknown at this time, so all numbers were written -% using the roman numbering system. I have provided Uncial versions of -% the arabic digits. -% -% Punctuation was practically non-existant. A sentence might be ended with -% a dot at mid-height or a paragraph ended with a colon, also at mid-height. -% More typically, the text ran on continuously with no breaks (in the earliest -% uses of the script there might not be even any extra space between words). -% Towards the end of the script's lifetime, a comma was introduced which was a small -% slash; the semi-colon also made an appearance, as did the single quotation -% mark which was represented by a raised comma. -% -% -% \section{The \Lpack{uncial} and \Lpack{alluncl} packages} \label{sec:usc} -% -% The Uncial font family is called |uncl|. The font is supplied in both -% OT1 and T1 encodings. -% -% \subsection{The \Lpack{uncial} package} -% -% This is intended for the occasions when some short pieces of text have -% to be written in Uncial while the majority of the document is in another -% font. The normal baselineskips are used. -% -% \DescribeMacro{\unclfamily} -% The |\unclfamily| declaration starts typesetting with the Uncial fonts. -% Use of the Uncial font will continue until either there is another |\...family| -% declaration or the current group (e.g., environment) is closed. -% -% \DescribeMacro{\textuncl} -% The command |\textuncl{|\meta{text}|}| will typeset \meta{text} using the -% Uncial fonts. -% -% \subsection{The \Lpack{alluncl} package} -% -% -% This package is for when the entire document will be typeset with the -% Uncial font. The baselineskips are set to those appropriate to the -% book-hand. -% -% This is a minimalist package. Apart from declaring Uncial 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{alluncl} package automatically loads the \Lpack{uncial} package, -% so the uncial font commands are available if necessary. -% -% -% -% \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 Uncial font comes in three sizes and also as a normal -% and a bold font. -% \begin{macrocode} -%<*base7|base10|base17|base7b|base10b|base17b> -%%%% UNCL7.MF Computer Uncial at 7 point design size. -%%%% UNCL10.MF Computer Uncial at 10 point design size. -%%%% UNCL17.MF Computer Uncial at 17 point design size. -%%%% UNCLB7.MF Computer Uncial Bold at 7 point design size. -%%%% UNCLB10.MF Computer Uncial Bold at 10 point design size. -%%%% UNCLB17.MF Computer Uncial 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 - -%font_identifier:="UNCL"; font_size 7pt#; -%font_identifier:="UNCL"; font_size 10pt#; -%font_identifier:="UNCL"; font_size 17.28pt#; -%font_identifier:="UNCLB"; font_size 7pt#; -%font_identifier:="UNCLB"; font_size 10pt#; -%font_identifier:="UNCLB"; font_size 17.28pt#; - -% \end{macrocode} -% -% \DescribeVariable{jutstretch} -% The CMR scaling for lowercase serifs wrt 17pt size. -% \begin{macrocode} -% jutstretch:=1.19; -% jutstretch:=1.152; -% jutstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{stemstretch} -% The CMR scaling for lowercase stem widths wrt 17pt size. -% \begin{macrocode} -% stemstretch:=1.50; -% stemstretch:=1.31; -% stemstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{caprat} -% The scaling for `capitals' wrt `lowercase'. This is pretty much a guess. -% \begin{macrocode} - caprat:=1.25; % ratio of capital height to minuscule height -% \end{macrocode} -% -% \DescribeVariable{cap_jutstretch} -% The CMR scaling for uppercase serifs wrt 17pt size. -% \begin{macrocode} -% cap_jutstretch:=1.3; -% cap_jutstretch:=1.2; -% cap_jutstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{cap_stemstretch} -% The CMR scaling for uppercase stem width wrt 17pt size. -% \begin{macrocode} -% cap_stemstretch:=1.45; -% cap_stemstretch:=1.31; -% cap_stemstretch:=1.0; -% \end{macrocode} -% -% \DescribeVariable{bfudge} -% Letter width scaling for bold font wrt normal font. -% \begin{macrocode} -% bfudge:=1.0; -% bfudge:=1.15; -% \end{macrocode} -% -% \DescribeVariable{szfudge} -% Width scaling wrt 17pt letter width. -% \begin{macrocode} -% szfudge:=1.18; -% szfudge:=1.0; -% 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} -% carol_height#:=108.5/36pt#; -% carol_height#:=155/36pt#; -% carol_height#:=268/36pt#; -% \end{macrocode} -% -% \DescribeVariable{vstretch} -% The height of this font wrt the Carolingian font. -% \begin{macrocode} - vstretch:=1.37; - -% \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} -% u#:=15.5/36pt#; -% u#:=20/36pt#; -% u#:=32.5/36pt#; -% u#:=17.9/36pt#; -% u#:=23/36pt#; -% 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 -% cap_serif_fit#:=3.5/36pt#; % extra sidebar near uppercase serifs -% cap_serif_fit#:=5/36pt#; % extra sidebar near uppercase serifs -% cap_serif_fit#:=8/36pt#; % extra sidebar near uppercase serifs -% letter_fit#:=0pt#; % extra space added to all sidebars -% letter_fit#:=0pt#; % extra space added to all sidebars -% letter_fit#:=-0.1pt#; % extra space added to all sidebars - -% \end{macrocode} -% -% \DescribeVariable{cap_height} -% The height of capital letters. -% \begin{macrocode} -% cap_height#:=172.2/36pt#; % height of caps -% cap_height#:=246/36pt#; % height of caps -% cap_height#:=425/36pt#; % height of caps -% \end{macrocode} -% -% \DescribeVariable{thickfudge} -% The reciprical 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} -% thickfudge:=1/5; -% 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:=30; % pen angle -% \end{macrocode} -% -% \DescribeVariable{asc_height} -% The height of lower case ascenders. -% \begin{macrocode} - asc_height#:=2x_height#; -% \end{macrocode} -% -% \DescribeVariable{desc_depth} -% The depth of lower case descenders. -% \begin{macrocode} - desc_depth#:=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*(9/10x_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} -% rule_thickness#:=.34pt#; -% rule_thickness#:=.4pt#; -% rule_thickness#:=.6pt#; - -% \end{macrocode} -% -% \DescribeVariable{jutfudge} -% Controls the protrusion of serifs. -% \begin{macrocode} -jutfudge:= 3/4; -% \end{macrocode} -% -% \DescribeVariable{jut} -% The lowercase serif protrusion. -% \begin{macrocode} -jut#:=jutstretch*jutfudge*thick#; -% \end{macrocode} -% -% \DescribeVariable{srad} -% |srad| with |0 < srad < 1| controls the serif radius. -% \begin{macrocode} -srad:=0.5; -% \end{macrocode} -% -% \DescribeVariable{o} -% Amount of overshoot for curves (as in an `o'). Use CMR values. -% \begin{macrocode} -% o#:=5/36pt#; -% o#:=8/36pt#; -% o#:=10/36pt#; - -% \end{macrocode} -% -% \DescribeVariable{slant} -% |slant| is the amount the font slopes to the right. -% \begin{macrocode} -slant:=0; % tilt ratio $(\Delta x/\Delta y)$ - -% \end{macrocode} -% -% \DescribeVariable{monospace} -% We are generating a variable-width font. -% \begin{macrocode} -monospace:=false; % should all characters have the same width? - -% \end{macrocode} -% -% \DescribeVariable{dot_size} -% The size of (punctuation) dots. -% \begin{macrocode} -dot_size#:=5thin#; % size of dots -% \end{macrocode} -% -% \DescribeVariable{comma_width} -% The horizontal width of a comma. -% \begin{macrocode} -comma_width#:=2.5dot_size#; - -% \end{macrocode} -% -% Finally, call the driver file for the font. -% \begin{macrocode} -generate uncltitle %% switch to the driver file - -% \end{macrocode} -% -% The end of this code section. -% \begin{macrocode} -% -% \end{macrocode} -% -% -% \subsection{The driver file} -% -% The driver file sets up the font parametrs and also contains -% the macros used in the definition of the characters. -% -% \begin{macrocode} -%<*mfd> -% This is UNCLTITLE.MF for the Uncial 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}{uncial_font_setup} -% This macro contains the set up for the uncial fonts. -% \begin{macrocode} - -def uncial_font_setup= % contains special stuff for uncial fonts - define_pixels(side,half_height,carol_height,comma_width); - define_pixels(u,dot_size,letter_size,cap_height,width_adj,serif_fit, - cap_serif_fit,jut,cap_jut); - define_pixels(fig_width); - define_whole_pixels(letter_fit); - define_whole_vertical_pixels(body_height,asc_height,cap_height,x_height, - desc_depth,body_depth,fig_height); - define_corrected_pixels(o); - define_blacker_pixels(thick,thin); - let adjust_fit = normal_adjust_fit; -% \end{macrocode} -% \DescribeVariable{stylus} -% The pen for drawing the thinnest lines is |stylus|. -% \begin{macrocode} - pickup pencircle scaled thin; - stylus:=savepen; -% \end{macrocode} -% \DescribeVariable{quill} -% The normal calligraphic pen is |quill|. -% \begin{macrocode} - pickup pencircle xscaled thick yscaled thin rotated pangle; - quill:=savepen; - numeric pcshiftx#; % x value of LHS of box wrt origin of char box - define_pixels(pcshiftx); - numeric sqxside#; % x size of the square - numeric sqyside#; % y size of the square - define_pixels(sqxside,sqyside); - -enddef; % end of uncial_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 $0y$$: - 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_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|. The serif radius is controlled by |f|, with $0 -% \end{macrocode} -% -% \subsection{The code for normal letters} -% -% The following code is for the minuscule characters. -% -% \begin{macrocode} -%<*min> -% UNCLL.MF Program file for uncial minuscules -% - - -% \end{macrocode} -% -% -% \begin{routine}{a} -% The letter `a'. -% \begin{macrocode} -cmchar "Uncial letter a"; -beginchar("a", 2u#+hstretch*(x_height#+jut#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -sqyside:=h; sqxside:=hstretch*sqyside; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -lft x1=pcshiftx+sqxside/3; rt x2=lft x1+2/3sqxside; -y1=h; y2=0; -% for the bowl -z3=3/4[z2,z1]; -z5=3/16[z2,z1]; -y4=1/10[y5,y3]; -lft x4=pcshiftx; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_istem(1,2,srad); % the stem -draw z3{-pdir}..z4{down}..{pdir}z5; -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,5,100); -endchar; % end "a" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{b} -% The letter `b'. -% \begin{macrocode} -cmchar "Uncial letter b"; -beginchar("b", 2u#+hstretch*(x_height#+jut#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u+jut/2; -sqyside:=h; sqxside:=hstretch*sqyside; -y100 = h/2; x100 = pcshiftx+y100; % square center -pair uncial; uncial=(qhor,0.5qvert); -pickup quill; -lft x1=lft x2=pcshiftx; -top y1=h; y2=h/4; -x3=pcshiftx+sqxside/2; bot y3=0; -rt x4=pcshiftx+sqxside; y4=0.3h; -lft x5=x1; bot y5=h/2; -z5'=z5 + thick*uncial; -x6=x4-thick; y6=0.85h; -x7=x1; y7=0.9h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tlserif(1,2,srad); % the stem -draw z2{down}..z3{right}..z4{up}..{-uncial}z5'--z5; % bottom bowl -draw z5--z5'{uncial}..z6{up}..{-pdir}z7; % top bowl -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,5,5',6,7,8,100); -endchar; % end "b" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{c} -% The letter `c'. -% \begin{macrocode} -cmchar "Uncial letter c"; -beginchar("c", u#+hstretch*(x_height#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u/2; -sqyside:=h; sqxside:=hstretch*sqyside; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -lft x1=pcshiftx; rt x3=pcshiftx+sqxside; y1=y3=h/2; -x2=x4=w/2; top y2=h; bot y4=0; -x5=x6=x3; -y5=0.2h; -y6=0.75h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z5{-pdir}..{left}z4..z1..z2..z6; -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,5,6,100); -endchar; % end "c" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{d} -% The letter `d'. -% \begin{macrocode} -cmchar "Uncial letter d"; -beginchar("d", 2u#+hstretch*(x_height#), 5/4x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -sqyside:=4/5h; sqxside:=hstretch*sqyside; -y100 = side/2; x100 = pcshiftx+y100; % square center -pickup quill; -lft x1=pcshiftx; rt x3=pcshiftx+sqxside; y1=y3=sqyside/2; -x2=x4=w/2; top y2=sqyside; bot y4=0; -x5=x6=x3; -y5=0.2h; -y6=0.75h; -rt x0=pcshiftx+0.5sqxside; top y0=sqyside; -lft x7=pcshiftx+0.5sqxside; -bot y7=sqyside; -lft x8=pcshiftx; y8=y7+thick; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z0{-pdir}..z1{down}..z4{right}..z3{up}..z7..z8; -ductus:=false; -proofpcbb(100, y100, y100); -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 "Uncial letter e"; -beginchar("e", 2u#+hstretch*(x_height#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -sqyside:=h; sqxside:=hstretch*sqyside; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -lft x1=pcshiftx; rt x3=pcshiftx+sqxside; y1=y3=h/2; -x2=x4=w/2; top y2=h; bot y4=0; -x5=x6=x3; -y5=0.2h; -y6=0.75h; -% the bar -x7=x1; y7=y1; -%%x8=x7+side+0.5thick; y8=y7; -x8=w-pcshiftx; y8=y7; -x10=x7; y10=y7+3thin; -numeric alpha; alpha:=0.5; % dishing -x9=0.5[x8,x10]; y9=(0.5alpha)[y8,y10]; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z5{-pdir}..{left}z4..z1..z2..z6; % the bowl -pickup stylus; -filldraw z7--z8..z9..z10--cycle; % the bar -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,5,6,7,8,9,10,100); -endchar; % end "e" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{f} -% The letter `f'. -% \begin{macrocode} -cmchar "Uncial letter f"; -beginchar("f", 2u#+hstretch*(jut#+x_height#), x_height#, 2/3x_height#); -adjust_fit(0,0); -pcshiftx := u+jut; -sqyside:=h; sqxside:=hstretch*sqyside; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -lft x1=lft x2=pcshiftx; -top y1=h; bot y2=-d/2; -x3=x4=x1; y3=h-thick; y4=0; -numeric rise, fall, fjut; -rise:=thick; fall:=0; fjut:=2/3sqxside; -%%ductus:=true; -draw_jstem(1,2,srad,d/2,d/2); -draw_flick(3,rise,fall,fjut); -draw_flick(4,rise,fall,fjut); -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,100); -endchar; % end "f" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{g} -% The letter `g'. Like a `c' but with a small stem. -% \begin{macrocode} -cmchar "Uncial letter g"; -beginchar("g", u#+hstretch*(x_height#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u/2; -sqyside:=h; sqxside:=hstretch*sqyside; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -lft x1=pcshiftx; rt x3=pcshiftx+sqxside; y1=y3=h/2; -x2=x4=w/2; top y2=h; bot y4=0; -x5=x6=x3; -y5=0.2h; -y6=0.75h; -lft x7=x5-thick; bot y7=y5-3thick; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z5{-pdir}..{left}z4..z1..z2..z6; % the bowl -draw z5{down}..{-pdir}z7; % the stem -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,5,6,7,100); -endchar; % end "g" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{h} -% The letter `h'. -% \begin{macrocode} -cmchar "Uncial letter h"; -beginchar("h", 2u#+hstretch*(jut#+thick#+x_height#), asc_height#, 0); -adjust_fit(0,0); -pcshiftx := u+jut; -sqyside:=h/2; % asc_height is 2x_height !!! -sqxside:=hstretch*sqyside; -y100 = sqyside/2; x100 = pcshiftx+y100; % square center -pickup quill; -lft x1=lft x2=pcshiftx; -top y1=h; bot y2=0; -% center of circle -x99=w/2; y99=sqyside/2; -y3=y5=y99; -lft x3= pcshiftx; -%%rt x5=x99+w-pcshiftx; -x5 = x99 + (x99-x3); -x4=x6=x99; top y4=sqyside; bot y6 =0; -path pcirc; pcirc=z6..z5..z4..z3..cycle; -x1'=x2'=x1+0.5thick; y1'=h; y2'=0; -z7' = (z1'--z2') intersectionpoint (subpath(2,3) of pcirc); -x7=x1; y7=y7'; -z99'=z99 - 500ppdir; -z8' = (z99--z99') intersectionpoint subpath(0,1) of pcirc; -x8=x8'; bot y8=0; -%%ductus:=true; -if ductus: - pickup stylus; - draw z1'--z2'; draw z99--z99'; draw pcirc; -fi -draw_istem(1,2,srad); -draw z7{pdir}..z4{right}..z5{down}..{-pdir}z8; -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,1',2,2',3,4,5,6,7,7',8,8',99,99',100); -endchar; % end "h" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{i} -% The letter i. -% \begin{macrocode} -cmchar "Uncial letter i"; -beginchar("i", 2u#+hstretch*(thick#+2jut#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u+jut; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -x1=x2=w/2; -top y1=h; bot y2=0; -%%ductus:=true; -draw_istem(1,2,srad); -ductus:=false; -proofpcbb(100, y100, y100); -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 "Uncial letter j"; -beginchar("j", 2u#+hstretch*(thick#+2jut#), x_height#, desc_depth#); -adjust_fit(0,0); -pcshiftx := u+jut; -sqyside:=h; sqxside:=sqyside; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -x1=x2=w/2; -top y1=h; bot y2=0; -%%ductus:=true; -draw_jstem(1,2,srad,2/3sqxside,desc_depth); -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,100); -endchar; % end "j" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{k} -% The letter `k'. -% \begin{macrocode} -cmchar "Uncial letter k"; -beginchar("k", 2u#+hstretch*(jut#+4/3x_height#), asc_height#, 0); -adjust_fit(0,0); -pcshiftx := u+jut; -sqyside:=h/2; % asc_height = 2x_height !!! -sqxside:=hstretch*sqyside; -y100 = side/2; x100 = pcshiftx+y100; % square center -pickup quill; -lft x1=lft x2=pcshiftx; -top y1=h; bot y2=0; -% for the flick -numeric rise,fall,fjut; -x3=x1; y3=2/3side; -rise:=1/3sqyside; fall:=-rise/2; fjut:=sqxside; %% fjut:=2/3side; -% for the leg -x4=x3+0.25thick; y4=y3+0.5thick; -x5=x3+side; y5=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_istem(1,2,srad); -draw_flick(3,rise,fall,fjut); -draw_tstem(4,5,srad); -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,5,100); -endchar; % end "k" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{l} -% The letter `l'. Like a high `i' but with a bottom bowl like the lower half -% of the `c'. -% \begin{macrocode} -cmchar "Uncial letter l"; -beginchar("l", 2u#+hstretch*(x_height#+jut#), asc_height#, 0); -adjust_fit(0,0); -pcshiftx := u+jut; -sqyside:=h/2; sqxside:=hstretch*sqyside; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -lft x1=lft x2=pcshiftx; -top y1=h; y2=h/4; -x3=0.5[x1,x4]; bot y3=0; -rt x4=w-u; y4=0.1h; -%%ductus:=true; -draw_tlserif(1,2,srad); % the stem -draw z2{down}..z3{right}..{pdir}z4; % the bowl -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,100); -endchar; % end "l" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{m} -% The letter `m'. -% \begin{macrocode} -cmchar "Uncial letter m"; -beginchar("m", 2u#+hstretch*(9/6x_height#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -sqyside:=h; sqxside:=hstretch*sqyside; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -x1=1/3sqxside; bot y1=0; -lft x2= pcshiftx; y2=h/2; -lft x4=pcshiftx+2/3sqxside; y4=2/3h; -x3=0.5[x2,x4]; top y3=h; -x5=x4; y5=y1; -z6=z4; -numeric rise,fall,mjut; -rise=h-y6; fall=y6; mjut=w-pcshiftx-x6; -%%ductus:=true; -draw z1..z2{up}..z3{right}..{down}z4; % left half -draw_tstem(4,5,srad); % middle stem -draw_hbowl(6,rise,fall,mjut); % right half -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,5,6,100); -endchar; % end "m" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{n} -% The letter `n'. -% \begin{macrocode} -cmchar "Uncial letter n"; -beginchar("n", 2u#+hstretch*(jut#+x_height#), x_height#, 0.5x_height#); -adjust_fit(0,0); -pcshiftx := u; -sqyside:=h; sqxside:=hstretch*sqyside; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -% left stem -lft x1=pcshiftx; top y1=h; -x2=x1; y2=y1-thin; -numeric jjut, jdepth; -jjut=2jut; jdepth=y2+d-thin; -% right stem -rt x4=pcshiftx+sqxside; y4=y1; -x3=x4; bot y3=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_jcurve(1,srad,jjut,jdepth); % left stem -draw_istem(4,3,srad); % right stem -draw z1--z3; % diagonal -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,100); -endchar; % end "n" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{o} -% The letter `o'. -% \begin{macrocode} -cmchar "Uncial letter o"; -beginchar("o", u#+hstretch*(x_height#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u/2; -sqyside:=h; -sqxside:=hstretch*sqyside; -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; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,100); -endchar; % end "o" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{p} -% The letter `p'. -% \begin{macrocode} -cmchar "Uncial letter p"; -beginchar("p", 2u#+hstretch*(x_height#+jut#), x_height#, x_height#); -adjust_fit(0,0); -pcshiftx := u+jut; -sqyside:=h; sqxside:=hstretch*sqyside; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -% stem -lft x1=pcshiftx; top y1=h; -numeric jjut, jdepth; -jjut=1/3sqxside-thin; jdepth=h+d-thin; -% bowl -x2=x1; y2=3/4h; %% y2=2/3side; -rt x4=w-u; -lft x5=x1+thick; y5=0; -y4=0.4[y3,y5]; -top y3=h; x3=0.5[x2,x4]; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_jcurve(1,srad,jjut,jdepth); % stem -%%draw z2..z3{right}..z4{down}..{-pdir}z5; % bowl -draw z1a..z3{right}..z4{down}..{-pdir}z5; % bowl -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,5,100); -endchar; % end "p" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{q} -% The letter `q'. -% \begin{macrocode} -cmchar "Uncial letter q"; -beginchar("q", 2u#+hstretch*(x_height#), x_height#, x_height#); -adjust_fit(0,0); -pcshiftx := u; -sqyside:=h; sqxside:=hstretch*sqyside; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -% right stem -rt x1=w-pcshiftx; top y1=h; -numeric jjut, jdepth; -jjut=2jut; jdepth=h+d-thin; -x2=x1-jjut; y2=y1-jdepth; -% bowl -numeric rad; rad := w/2; -x0=w/2; y0=h/2; -lft x4=pcshiftx; y4=y0; -x3=x5=x0; top y3=h; bot y5=0; -x7=x0+rad; y7=y0; -path p[]; -p1=z1{down}..{-pdir}z2; % stem -p2=z4{down}..z5{right}..{up}z7; -z6'= p1 intersectionpoint p2; -rt x6=x6'; y6=y6'; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1{down}...{-pdir}z2; % right stem -draw z1--z3..z4{down}..{right}z5..z6; % bowl -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(0,1,2,3,4,5,6,6',7,100); -endchar; % end "q" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{r} -% The letter `r'. -% \begin{macrocode} -cmchar "Uncial letter r"; -beginchar("r", 2u#+hstretch*(4/3x_height#), x_height#, 2/3x_height#); -adjust_fit(0,0); -sqyside:=h; sqxside:=hstretch*sqyside; -pcshiftx := u+jut; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -% stem -lft x1=pcshiftx; top y1=h; -numeric jjut, jdepth; -jjut=1/5sqxside; jdepth=h+d-thin; -% bowl -x2=x1; y2=3/4h; -rt x4=pcshiftx+3/4sqxside; -lft x5=x1; bot y5=1/6h; -y4=0.4[y3,y5]; -top y3=h; x3=0.5[x2,x4]; -rt x7=w-u; y7=-thin; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_jcurve(1,srad,jjut,jdepth); % stem -draw z1a..z3{right}..z4{down}..{-pdir}z5; % bowl -draw z5{-ppdir}..{right}z7; % leg -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,5,6,7,100); -endchar; % end "r" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{s} -% The letter `s'. -% \begin{macrocode} -cmchar "Uncial letter s"; -beginchar("s", 2u#+hstretch*(5/6x_height#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -sqyside:=h; sqxside:=hstretch*sqyside; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -rt x1=w-pcshiftx; top y1=h-thin; -x2=w/2; top y2=h; -lft x3=pcshiftx; y3=0.75h; -x4=w/2; y4=h/2; -rt x5=w-pcshiftx; y5=0.25h; -x6=w/2; bot y6=0; -lft x7= pcshiftx; bot y7 = thin; -path p[]; -p1=z1..z2{left}..z3{down}..z4..z5{down}..z6{left}..z7; -pair vec[]; -vec1= direction 0 of p1; -vec2= direction (length p1) of p1; -z11=z1 shifted vec1; -z17=z7 shifted -vec2; -%%ductus:=true; -if ductus: - pickup stylus; -fi -%%draw_serif(1,11,srad); -%%draw_serif(7,17,srad); -%%draw z1a..z2{left}..z3{down}..z4..z5{down}..z6{left}..z7a; -draw p1; -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,5,6,7,11,17,100); -endchar; % end "s" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{t} -% The letter `t'. -% \begin{macrocode} -cmchar "Uncial letter t"; -beginchar("t", u#+hstretch*(x_height#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u/2; -sqyside:=h; sqxside:=hstretch*sqyside; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -x1=x2=w/2; -top y1=h; bot y2=0; -lft x3=pcshiftx; top y3=h-thin; -x4=x2; top y4=h; -rt x5=w-pcshiftx; top y5=h+thin; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); -draw z3{pdir}..z4{right}..{pdir}z5; -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,5,100); -endchar; % end "t" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{u} -% The letter `u'. This is a modern version as the font did not have a U. -% It uses part of the left half of the W. -% \begin{macrocode} -cmchar "Uncial letter u"; -beginchar("u", 2u#+hstretch*(x_height#+jut#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -sqyside:=h; sqxside:=hstretch*sqyside; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -% left half first -lft x6=pcshiftx+thick; -top y6=h; -lft x7=pcshiftx; y7=h/2; -x8=pcshiftx+0.5sqxside; bot y8=0; -% the stem -rt x1=w-pcshiftx-jut; y1=h; -x2=x1; bot y2=0; -% a construction point for the curved part -x5=x1+sqxside-thick; y5=y6; -path p[]; -p1=z1--z2; -p2=z6..z7{down}..z8{right}..z5; -z9= p2 intersectionpoint p1; -pair vec[]; -vec2 = direction 0 of p2; -z16=z6 shifted vec2; -%%ductus:=true; -if ductus: - pickup stylus; -fi -% draw the serifs, then the bowls -draw_serif(6,16,srad); % left half -draw z6a..z7{down}..z8{right}..z9; -draw_istem(1,2,srad); % right stem -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,5,6,7,8,9,11,16,100); -endchar; % end "u" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{v} -% The letter `v'. The right half of the `w' is used for the `v' (or vice-versa -% if you prefer). -% \begin{macrocode} -cmchar "Uncial letter v"; -beginchar("v", 2u#+hstretch*(x_height#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -sqyside:=h; sqxside:=hstretch*sqyside; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -% right side first -numeric midx; midx:= pcshiftx; -lft x1=midx+jut; top y1=h; -lft x2=midx; y2=h/2; -rt x4=midx+sqxside; y4=y2; -x3=0.5[x2,x4]; bot y3=0; -x5=x4-thick; y5=y1; -path p[]; -p1=z1..z2{down}..z3{right}..z4{up}..z5; -pair vec[]; -vec1 = direction 0 of p1; -z11=z1 shifted vec1; -%%ductus:=true; -if ductus: - pickup stylus; -fi -% draw the serifs, then the bowls -draw_serif(1,11,srad); % right half -draw z1a..z2{down}..z3{right}..z4{up}..z5; -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,5,11,100); -endchar; % end "v" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{w} -% The letter `w'. This is a modern version as the font did not have a W. -% \begin{macrocode} -cmchar "Uncial letter w"; -beginchar("w", 2u#+hstretch*(5/3x_height#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -sqyside:=h; sqxside:=hstretch*sqyside; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -% right side first -numeric midx; midx:= pcshiftx+2/3sqxside; -lft x1=midx+jut; top y1=h; -lft x2=midx; y2=h/2; -rt x4=midx+sqxside; y4=y2; -x3=0.5[x2,x4]; bot y3=0; -x5=x4-thick; y5=y1; -path p[]; -p1=z1..z2{down}..z3{right}..z4{up}..z5; -% left side -lft x6=pcshiftx+thick; -y6=y1; -lft x7=pcshiftx; y7=y2; -x8=pcshiftx+0.5sqxside; y8=y3; -p2=z6..z7{down}..z8{right}..(z5 shifted -pdir); -z9= p2 intersectionpoint p1; -pair vec[]; -vec1 = direction 0 of p1; -vec2 = direction 0 of p2; -z11=z1 shifted vec1; -z16=z6 shifted vec2; -%%ductus:=true; -if ductus: - pickup stylus; -fi -% draw the serifs, then the bowls -draw_serif(1,11,srad); % right half -draw z1a..z2{down}..z3{right}..z4{up}..z5; -draw_serif(6,16,srad); % left half -draw z6a..z7{down}..z8{right}..z9; -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,5,6,7,8,9,11,16,100); -endchar; % end "w" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{x} -% The letter `x'. -% \begin{macrocode} -cmchar "Uncial letter x"; -beginchar("x", u#+hstretch*(5/3x_height#), x_height#, 1/3x_height#); -adjust_fit(0,0); -pcshiftx := 0; -sqyside:=h; sqxside:=hstretch*sqyside; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -% thick diagonal -lft x1=pcshiftx+1/2sqxside; rt x2=w-jut; -y1=h; y2=0; -% thin diagonal -lft x3=pcshiftx; bot y3=-d; -z4=z3 shifted (jut*right); -z5=z4 shifted (jut*pdir); -rt x8=w-pcshiftx; top y8=h; -z7=z8 shifted (jut*left); -z6=z7 shifted (-jut*pdir); -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_istem(1,2,srad); % thick diagonal -draw z3---z4..z5---z6..z7---z8; % thin diagonal -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,5,6,7,8,100); -endchar; % end "x" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{y} -% The letter `y'. This has a dot on top! -% \begin{macrocode} -cmchar "Uncial letter y"; -beginchar("y", 2u#+hstretch*(4/3x_height#), x_height#, 2/3x_height#); -adjust_fit(0,0); -pcshiftx := u; -sqyside:=h; sqxside:=hstretch*sqyside; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -% left stroke -lft x1=pcshiftx; top y1=3/4h; -lft x3=w/2; bot y3=-d; -x2=0.8[x1,x3]; y2=0.5[y1,y3]; -% right stroke -rt x4=w-pcshiftx; y4=y1; -x7=pcshiftx; y7=-d; -path p[]; -p1=z1..z2..z3; -z6= (z7--z4) intersectionpoint p1; -x5=0.4[x6,x4]; y5=0.5[y6,y4]; -% the dot -x8=x6; y8=h; -if ductus: - pickup stylus; -fi -draw z1..z2..z3; % left stroke -draw z4{left}..z6; % right stroke -draw_pdot(8,dot_size); -ductus:=false; -proofpcbb(100, y100, y100); -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 "Uncial letter z"; -beginchar("z", 2u#+hstretch*(4/3x_height#), x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -sqyside:=h; sqxside:=hstretch*sqyside; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -% bottom stroke -lft x4=pcshiftx; bot y4=0; -rt x6=w-pcshiftx; y6=y4; -x5=0.5[x4,x6]; y5=y4+thin; -% top stroke -x1=x4; top y1=h; -x3=pcshiftx+sqxside; y3=y1; -x2=0.5[x1,x3]; top y2=h-thin; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1..z2..z3; % top stroke -draw z4..z5..z6; % bottom stroke -% the diagonal -pickup stylus; -draw z4--z3; -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,5,6,100); -endchar; % end "z" - -% \end{macrocode} -% \end{routine} -% -% -% The end of this file -% \begin{macrocode} -% -% \end{macrocode} -% -% -% \subsection{The code for capital letters} -% -% Uncial `capitals' were drawn with the same pen as for the minuscules, -% and the letters were merely larger versions of the minuscules. -% -% \begin{macrocode} -%<*maj> -% UNCLU.MF Program file for uncial `capitals' -% - -% \end{macrocode} -% -% -% \begin{routine}{A} -% The letter `A'. -% \begin{macrocode} -cmchar "Uncial letter A"; -beginchar("A", 2u#+caprat*hstretch*(x_height#+jut#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -sqyside:=h; sqxside:=hstretch*sqyside; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -lft x1=pcshiftx+sqxside/3; rt x2=lft x1+2/3sqxside; -y1=h; y2=0; -% for the bowl -z3=3/4[z2,z1]; -z5=3/16[z2,z1]; -y4=1/10[y5,y3]; -lft x4=pcshiftx; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_istem(1,2,srad); % the stem -draw z3{-pdir}..z4{down}..{pdir}z5; -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,5,100); -endchar; % end "A" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{B} -% The letter `B'. -% \begin{macrocode} -cmchar "Uncial letter B"; -beginchar("B", 2u#+caprat*hstretch*(x_height#+jut#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u+jut; -sqyside:=h; sqxside:=hstretch*sqyside; -y100 = h/2; x100 = pcshiftx+y100; % square center -pair uncial; uncial=(qhor,0.5qvert); -pickup quill; -lft x1=lft x2=pcshiftx; -top y1=h; y2=h/4; -x3=pcshiftx+sqxside/2; bot y3=0; -rt x4=pcshiftx+sqxside; y4=0.3h; -lft x5=x1; bot y5=h/2; -z5'=z5 + thick*uncial; -x6=x4-thick; y6=0.85h; -x7=x1; y7=0.9h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tlserif(1,2,srad); % the stem -draw z2{down}..z3{right}..z4{up}..{-uncial}z5'--z5; % bottom bowl -draw z5--z5'{uncial}..z6{up}..{-pdir}z7; % top bowl -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,5,5',6,7,8,100); -endchar; % end "B" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{C} -% The letter `C'. -% \begin{macrocode} -cmchar "Uncial letter C"; -beginchar("C", u#+caprat*hstretch*(x_height#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u/2; -sqyside:=h; sqxside:=hstretch*sqyside; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -lft x1=pcshiftx; rt x3=pcshiftx+sqxside; y1=y3=h/2; -x2=x4=w/2; top y2=h; bot y4=0; -x5=x6=x3; -y5=0.2h; -y6=0.75h; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z5{-pdir}..{left}z4..z1..z2..z6; -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,5,6,100); -endchar; % end "C" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{D} -% The letter `D'. -% \begin{macrocode} -cmchar "Uncial letter D"; -beginchar("D", 2u#+caprat*hstretch*(x_height#), caprat*(5/4x_height#), 0); -adjust_fit(0,0); -pcshiftx := u; -sqyside:=4/5h; sqxside:=hstretch*sqyside; -y100 = side/2; x100 = pcshiftx+y100; % square center -pickup quill; -lft x1=pcshiftx; rt x3=pcshiftx+sqxside; y1=y3=sqyside/2; -x2=x4=w/2; top y2=sqyside; bot y4=0; -x5=x6=x3; -y5=0.2h; -y6=0.75h; -rt x0=pcshiftx+0.5sqxside; top y0=sqyside; -lft x7=pcshiftx+0.5sqxside; -bot y7=sqyside; -lft x8=pcshiftx; y8=y7+thick; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z0{-pdir}..z1{down}..z4{right}..z3{up}..z7..z8; -ductus:=false; -proofpcbb(100, y100, y100); -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 "Uncial letter E"; -beginchar("E", 2u#+caprat*hstretch*(x_height#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -sqyside:=h; sqxside:=hstretch*sqyside; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -lft x1=pcshiftx; rt x3=pcshiftx+sqxside; y1=y3=h/2; -x2=x4=w/2; top y2=h; bot y4=0; -x5=x6=x3; -y5=0.2h; -y6=0.75h; -% the bar -x7=x1; y7=y1; -%%x8=x7+side+0.5thick; y8=y7; -x8=w-pcshiftx; y8=y7; -x10=x7; y10=y7+3thin; -numeric alpha; alpha:=0.5; % dishing -x9=0.5[x8,x10]; y9=(0.5alpha)[y8,y10]; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z5{-pdir}..{left}z4..z1..z2..z6; % the bowl -pickup stylus; -filldraw z7--z8..z9..z10--cycle; % the bar -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,5,6,7,8,9,10,100); -endchar; % end "E" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{F} -% The letter `F'. -% \begin{macrocode} -cmchar "Uncial letter F"; -beginchar("F", 2u#+caprat*hstretch*(jut#+x_height#), caprat*x_height#, - caprat*(2/3x_height#)); -adjust_fit(0,0); -pcshiftx := u+jut; -sqyside:=h; sqxside:=hstretch*sqyside; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -lft x1=lft x2=pcshiftx; -top y1=h; bot y2=-d/2; -x3=x4=x1; y3=h-thick; y4=0; -numeric rise, fall, fjut; -rise:=thick; fall:=0; fjut:=2/3sqxside; -%%ductus:=true; -draw_jstem(1,2,srad,d/2,d/2); -draw_flick(3,rise,fall,fjut); -draw_flick(4,rise,fall,fjut); -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,100); -endchar; % end "F" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{G} -% The letter `G'. Like a `c' but with a small stem. -% \begin{macrocode} -cmchar "Uncial letter G"; -beginchar("G", u#+caprat*hstretch*(x_height#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u/2; -sqyside:=h; sqxside:=hstretch*sqyside; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -lft x1=pcshiftx; rt x3=pcshiftx+sqxside; y1=y3=h/2; -x2=x4=w/2; top y2=h; bot y4=0; -x5=x6=x3; -y5=0.2h; -y6=0.75h; -lft x7=x5-thick; bot y7=y5-3thick; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z5{-pdir}..{left}z4..z1..z2..z6; % the bowl -draw z5{down}..{-pdir}z7; % the stem -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,5,6,7,100); -endchar; % end "G" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{H} -% The letter `H'. -% \begin{macrocode} -cmchar "Uncial letter H"; -beginchar("H", 2u#+caprat*hstretch*(jut#+thick#+x_height#), caprat*asc_height#, 0); -adjust_fit(0,0); -pcshiftx := u+jut; -sqyside:=h/2; % asc_height is 2x_height !!! -sqxside:=hstretch*sqyside; -y100 = sqyside/2; x100 = pcshiftx+y100; % square center -pickup quill; -lft x1=lft x2=pcshiftx; -top y1=h; bot y2=0; -% center of circle -x99=w/2; y99=sqyside/2; -y3=y5=y99; -lft x3= pcshiftx; -%%rt x5=x99+w-pcshiftx; -x5 = x99 + (x99-x3); -x4=x6=x99; top y4=sqyside; bot y6 =0; -path pcirc; pcirc=z6..z5..z4..z3..cycle; -x1'=x2'=x1+0.5thick; y1'=h; y2'=0; -z7' = (z1'--z2') intersectionpoint (subpath(2,3) of pcirc); -x7=x1; y7=y7'; -z99'=z99 - 500ppdir; -z8' = (z99--z99') intersectionpoint subpath(0,1) of pcirc; -x8=x8'; bot y8=0; -%%ductus:=true; -if ductus: - pickup stylus; - draw z1'--z2'; draw z99--z99'; draw pcirc; -fi -draw_istem(1,2,srad); -draw z7{pdir}..z4{right}..z5{down}..{-pdir}z8; -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,1',2,2',3,4,5,6,7,7',8,8',99,99',100); -endchar; % end "H" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{I} -% The letter `I'. -% \begin{macrocode} -cmchar "Uncial letter I"; -beginchar("I", 2u#+hstretch*(thick#+2jut#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u+jut; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -x1=x2=w/2; -top y1=h; bot y2=0; -%%ductus:=true; -draw_istem(1,2,srad); -ductus:=false; -proofpcbb(100, y100, y100); -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 "Uncial letter J"; -beginchar("J", 2u#+caprat*hstretch*(thick#+2jut#), caprat*x_height#, - caprat*desc_depth#); -adjust_fit(0,0); -pcshiftx := u+jut; -sqyside:=h; sqxside:=sqyside; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -x1=x2=w/2; -top y1=h; bot y2=0; -%%ductus:=true; -draw_jstem(1,2,srad,2/3sqxside,desc_depth); -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,100); -endchar; % end "J" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{K} -% The letter `K'. -% \begin{macrocode} -cmchar "Uncial letter K"; -beginchar("K", 2u#+caprat*hstretch*(jut#+4/3x_height#), caprat*asc_height#, 0); -adjust_fit(0,0); -pcshiftx := u+jut; -sqyside:=h/2; % asc_height = 2x_height !!! -sqxside:=hstretch*sqyside; -y100 = side/2; x100 = pcshiftx+y100; % square center -pickup quill; -lft x1=lft x2=pcshiftx; -top y1=h; bot y2=0; -% for the flick -numeric rise,fall,fjut; -x3=x1; y3=2/3side; -rise:=1/3sqyside; fall:=-rise/2; fjut:=sqxside; %% fjut:=2/3side; -% for the leg -x4=x3+0.25thick; y4=y3+0.5thick; -x5=x3+side; y5=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_istem(1,2,srad); -draw_flick(3,rise,fall,fjut); -draw_tstem(4,5,srad); -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,5,100); -endchar; % end "K" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{L} -% The letter `l'. Like a high `i' but with a bottom bowl like the lower half -% of the `c'. -% \begin{macrocode} -cmchar "Uncial letter L"; -beginchar("L", 2u#+caprat*hstretch*(x_height#+jut#), caprat*asc_height#, 0); -adjust_fit(0,0); -pcshiftx := u+jut; -sqyside:=h/2; sqxside:=hstretch*sqyside; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -lft x1=lft x2=pcshiftx; -top y1=h; y2=h/4; -x3=0.5[x1,x4]; bot y3=0; -rt x4=w-u; -y4=0.1h; -%%ductus:=true; -draw_tlserif(1,2,srad); % the stem -draw z2{down}..z3{right}..{pdir}z4; % the bowl -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,100); -endchar; % end "L" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{M} -% The letter `M'. -% \begin{macrocode} -cmchar "Uncial letter M"; -beginchar("M", 2u#+caprat*hstretch*(9/6x_height#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -sqyside:=h; sqxside:=hstretch*sqyside; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -x1=1/3sqxside; bot y1=0; -lft x2= pcshiftx; y2=h/2; -lft x4=pcshiftx+2/3sqxside; y4=2/3h; -x3=0.5[x2,x4]; top y3=h; -x5=x4; y5=y1; -z6=z4; -numeric rise,fall,mjut; -rise=h-y6; fall=y6; mjut=w-pcshiftx-x6; -%%ductus:=true; -draw z1..z2{up}..z3{right}..{down}z4; % left half -draw_tstem(4,5,srad); % middle stem -draw_hbowl(6,rise,fall,mjut); % right half -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,5,6,100); -endchar; % end "M" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{N} -% The letter `N'. -% \begin{macrocode} -cmchar "Uncial letter N"; -beginchar("N", 2u#+caprat*hstretch*(jut#+x_height#), caprat*x_height#, - caprat*(0.5x_height#)); -adjust_fit(0,0); -pcshiftx := u; -sqyside:=h; sqxside:=hstretch*sqyside; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -% left stem -lft x1=pcshiftx; top y1=h; -x2=x1; y2=y1-thin; -numeric jjut, jdepth; -jjut=2jut; jdepth=y2+d-thin; -% right stem -rt x4=pcshiftx+sqxside; y4=y1; -x3=x4; bot y3=0; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_jcurve(1,srad,jjut,jdepth); % left stem -draw_istem(4,3,srad); % right stem -draw z1--z3; % diagonal -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,100); -endchar; % end "N" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{O} -% The letter `O'. -% \begin{macrocode} -cmchar "Uncial letter O"; -beginchar("O", 2u#+caprat*hstretch*(x_height#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -sqyside:=h; sqxside:=hstretch*sqyside; -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; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,100); -endchar; % end "O" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{P} -% The letter `P'. -% \begin{macrocode} -cmchar "Uncial letter P"; -beginchar("P", 2u#+caprat*hstretch*(x_height#+jut#), caprat*x_height#, - caprat*x_height#); -adjust_fit(0,0); -pcshiftx := u+jut; -sqyside:=h; sqxside:=hstretch*sqyside; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -% stem -lft x1=pcshiftx; top y1=h; -numeric jjut, jdepth; -jjut=1/3sqxside-thin; jdepth=h+d-thin; -% bowl -x2=x1; y2=3/4h; %% y2=2/3side; -rt x4=w-u; -lft x5=x1+thick; y5=0; -y4=0.4[y3,y5]; -top y3=h; x3=0.5[x2,x4]; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_jcurve(1,srad,jjut,jdepth); % stem -%%draw z2..z3{right}..z4{down}..{-pdir}z5; % bowl -draw z1a..z3{right}..z4{down}..{-pdir}z5; % bowl -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,5,100); -endchar; % end "P" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{Q} -% The letter `Q'. -% \begin{macrocode} -cmchar "Uncial letter Q"; -beginchar("Q", 2u#+caprat*hstretch*(x_height#), caprat*x_height#, caprat*x_height#); -adjust_fit(0,0); -pcshiftx := u; -sqyside:=h; sqxside:=hstretch*sqyside; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -% right stem -rt x1=w-pcshiftx; top y1=h; -numeric jjut, jdepth; -jjut=2jut; jdepth=h+d-thin; -x2=x1-jjut; y2=y1-jdepth; -% bowl -numeric rad; rad := w/2; -x0=w/2; y0=h/2; -lft x4=pcshiftx; y4=y0; -x3=x5=x0; top y3=h; bot y5=0; -x7=x0+rad; y7=y0; -path p[]; -p1=z1{down}..{-pdir}z2; % stem -p2=z4{down}..z5{right}..{up}z7; -z6'= p1 intersectionpoint p2; -rt x6=x6'; y6=y6'; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1{down}...{-pdir}z2; % right stem -draw z1--z3..z4{down}..{right}z5..z6; % bowl -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(0,1,2,3,4,5,6,6',7,100); -endchar; % end "Q" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{R} -% The letter `R'. -% \begin{macrocode} -cmchar "Uncial letter R"; -beginchar("R", 2u#+caprat*hstretch*(4/3x_height#), caprat*x_height#, - caprat*(2/3x_height#)); -adjust_fit(0,0); -sqyside:=h; sqxside:=hstretch*sqyside; -pcshiftx := u+jut; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -% stem -lft x1=pcshiftx; top y1=h; -numeric jjut, jdepth; -jjut=1/5sqxside; jdepth=h+d-thin; -% bowl -x2=x1; y2=3/4h; -rt x4=pcshiftx+3/4sqxside; -lft x5=x1; bot y5=1/6h; -y4=0.4[y3,y5]; -top y3=h; x3=0.5[x2,x4]; -rt x7=w-u; y7=-thin; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_jcurve(1,srad,jjut,jdepth); % stem -draw z1a..z3{right}..z4{down}..{-pdir}z5; % bowl -draw z5{-ppdir}..{right}z7; % leg -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,5,6,7,100); -endchar; % end "R" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{S} -% The letter `S'. -% \begin{macrocode} -cmchar "Uncial letter S"; -beginchar("S", 2u#+caprat*hstretch*(5/6x_height#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -sqyside:=h; sqxside:=hstretch*sqyside; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -rt x1=w-pcshiftx; top y1=h-thin; -x2=w/2; top y2=h; -lft x3=pcshiftx; y3=0.75h; -x4=w/2; y4=h/2; -rt x5=w-pcshiftx; y5=0.25h; -x6=w/2; bot y6=0; -lft x7= pcshiftx; bot y7 = thin; -path p[]; -p1=z1..z2{left}..z3{down}..z4..z5{down}..z6{left}..z7; -pair vec[]; -vec1= direction 0 of p1; -vec2= direction (length p1) of p1; -z11=z1 shifted vec1; -z17=z7 shifted -vec2; -%%ductus:=true; -if ductus: - pickup stylus; -fi -%%draw_serif(1,11,srad); -%%draw_serif(7,17,srad); -%%draw z1a..z2{left}..z3{down}..z4..z5{down}..z6{left}..z7a; -draw p1; -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,5,6,7,11,17,100); -endchar; % end "S" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{T} -% The letter `T'. -% \begin{macrocode} -cmchar "Uncial letter T"; -beginchar("T", u#+caprat*hstretch*(x_height#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u/2; -sqyside:=h; sqxside:=hstretch*sqyside; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -x1=x2=w/2; -top y1=h; bot y2=0; -lft x3=pcshiftx; top y3=h-thin; -x4=x2; top y4=h; -rt x5=w-pcshiftx; top y5=h+thin; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); -draw z3{pdir}..z4{right}..{pdir}z5; -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,5,100); -endchar; % end "T" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{U} -% The letter `U'. This is a modern version as the font did not have a U. -% It uses part of the left half of the W. -% \begin{macrocode} -cmchar "Uncial letter U"; -beginchar("U", 2u#+caprat*hstretch*(x_height#+jut#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -sqyside:=h; sqxside:=hstretch*sqyside; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -% left half first -lft x6=pcshiftx+thick; -top y6=h; -lft x7=pcshiftx; y7=h/2; -x8=pcshiftx+0.5sqxside; bot y8=0; -% the stem -rt x1=w-pcshiftx-jut; y1=h; -x2=x1; bot y2=0; -% a construction point for the curved part -x5=x1+sqxside-thick; y5=y6; -path p[]; -p1=z1--z2; -p2=z6..z7{down}..z8{right}..z5; -z9= p2 intersectionpoint p1; -pair vec[]; -vec2 = direction 0 of p2; -z16=z6 shifted vec2; -%%ductus:=true; -if ductus: - pickup stylus; -fi -% draw the serifs, then the bowls -draw_serif(6,16,srad); % left half -draw z6a..z7{down}..z8{right}..z9; -draw_istem(1,2,srad); % right stem -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,5,6,7,8,9,11,16,100); -endchar; % end "U" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{V} -% The letter `V'. The right half of the `w' is used for the `v' (or vice-versa -% if you prefer). -% \begin{macrocode} -cmchar "Uncial letter V"; -beginchar("V", 2u#+caprat*hstretch*(x_height#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -sqyside:=h; sqxside:=hstretch*sqyside; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -% right side first -numeric midx; midx:= pcshiftx; -lft x1=midx+jut; top y1=h; -lft x2=midx; y2=h/2; -rt x4=midx+sqxside; y4=y2; -x3=0.5[x2,x4]; bot y3=0; -x5=x4-thick; y5=y1; -path p[]; -p1=z1..z2{down}..z3{right}..z4{up}..z5; -pair vec[]; -vec1 = direction 0 of p1; -z11=z1 shifted vec1; -%%ductus:=true; -if ductus: - pickup stylus; -fi -% draw the serifs, then the bowls -draw_serif(1,11,srad); % right half -draw z1a..z2{down}..z3{right}..z4{up}..z5; -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,5,11,100); -endchar; % end "V" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{W} -% The letter `W'. This is a modern version as the font did not have a W. -% \begin{macrocode} -cmchar "Uncial letter W"; -beginchar("W", 2u#+caprat*hstretch*(5/3x_height#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -sqyside:=h; sqxside:=hstretch*sqyside; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -% right side first -numeric midx; midx:= pcshiftx+2/3sqxside; -lft x1=midx+jut; top y1=h; -lft x2=midx; y2=h/2; -rt x4=midx+sqxside; y4=y2; -x3=0.5[x2,x4]; bot y3=0; -x5=x4-thick; y5=y1; -path p[]; -p1=z1..z2{down}..z3{right}..z4{up}..z5; -% left side -lft x6=pcshiftx+thick; -y6=y1; -lft x7=pcshiftx; y7=y2; -x8=pcshiftx+0.5sqxside; y8=y3; -p2=z6..z7{down}..z8{right}..(z5 shifted -pdir); -z9= p2 intersectionpoint p1; -pair vec[]; -vec1 = direction 0 of p1; -vec2 = direction 0 of p2; -z11=z1 shifted vec1; -z16=z6 shifted vec2; -%%ductus:=true; -if ductus: - pickup stylus; -fi -% draw the serifs, then the bowls -draw_serif(1,11,srad); % right half -draw z1a..z2{down}..z3{right}..z4{up}..z5; -draw_serif(6,16,srad); % left half -draw z6a..z7{down}..z8{right}..z9; -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,5,6,7,8,9,11,16,100); -endchar; % end "W" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{X} -% The letter `X'. -% \begin{macrocode} -cmchar "Uncial letter X"; -beginchar("X", u#+caprat*hstretch*(5/3x_height#), caprat*x_height#, - caprat*(1/3x_height#)); -adjust_fit(0,0); -pcshiftx := 0; -sqyside:=h; sqxside:=hstretch*sqyside; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -% thick diagonal -lft x1=pcshiftx+1/2sqxside; rt x2=w-jut; -y1=h; y2=0; -% thin diagonal -lft x3=pcshiftx; bot y3=-d; -z4=z3 shifted (jut*right); -z5=z4 shifted (jut*pdir); -rt x8=w-pcshiftx; top y8=h; -z7=z8 shifted (jut*left); -z6=z7 shifted (-jut*pdir); -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_istem(1,2,srad); % thick diagonal -draw z3---z4..z5---z6..z7---z8; % thin diagonal -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,5,6,7,8,100); -endchar; % end "X" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{Y} -% The letter `Y'. This has a dot on top! -% \begin{macrocode} -cmchar "Uncial letter Y"; -beginchar("Y", 2u#+caprat*hstretch*(4/3x_height#), caprat*x_height#, 2/3caprat*x_height#); -adjust_fit(0,0); -pcshiftx := u; -sqyside:=h; sqxside:=hstretch*sqyside; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -% left stroke -lft x1=pcshiftx; top y1=3/4h; -lft x3=w/2; bot y3=-d; -x2=0.8[x1,x3]; y2=0.5[y1,y3]; -% right stroke -rt x4=w-pcshiftx; y4=y1; -x7=pcshiftx; y7=-d; -path p[]; -p1=z1..z2..z3; -z6= (z7--z4) intersectionpoint p1; -x5=0.4[x6,x4]; y5=0.5[y6,y4]; -% the dot -x8=x6; y8=h; -if ductus: - pickup stylus; -fi -draw z1..z2..z3; % left stroke -draw z4{left}..z6; % right stroke -draw_pdot(8,dot_size); -ductus:=false; -proofpcbb(100, y100, y100); -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 "Uncial letter Z"; -beginchar("Z", 2u#+caprat*hstretch*(4/3x_height#), caprat*x_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -sqyside:=h; sqxside:=hstretch*sqyside; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -% bottom stroke -lft x4=pcshiftx; bot y4=0; -rt x6=w-pcshiftx; y6=y4; -x5=0.5[x4,x6]; y5=y4+thin; -% top stroke -x1=x4; top y1=h; -x3=pcshiftx+sqxside; y3=y1; -x2=0.5[x1,x3]; top y2=h-thin; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z1..z2..z3; % top stroke -draw z4..z5..z6; % bottom stroke -% the diagonal -pickup stylus; -draw z4--z3; -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,5,6,100); -endchar; % end "Z" - -% \end{macrocode} -% \end{routine} -% -% -% -% The end of this file -% \begin{macrocode} -% -% \end{macrocode} -% -% -% -% \subsection{The punctuation file} -% -% The main punctuation marks are defined in this file. -% -% \begin{macrocode} -%<*punct> -% UNCLPUNCT.MF This file contains punctuation marks - -% \end{macrocode} -% -% -% \begin{routine}{,} -% The `,' character. -% \begin{macrocode} - -cmchar "Uncial Comma"; -beginchar(",",2u#+hstretch*(comma_width#+dot_size#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=u; -x1=w-pcshiftx-(0.5hstretch*dot_size); y1=h/2; -draw_pcomma(1,dot_size,comma_width); -penlabels(1); -endchar; % end of "," - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{.} -% The `.' character. -% \begin{macrocode} - -cmchar "Uncial Period"; -beginchar(".",2u#+hstretch*(dot_size#),x_height#,0); -pcshiftx:=u; -x1=w/2; y1=h/2; -draw_pdot(1,dot_size); -penlabels(1); -endchar; % end of "." - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{:} -% The `:' character. -% \begin{macrocode} - -cmchar "Uncial Colon"; -beginchar(":",2u#+hstretch*(dot_size#),x_height#,0); -pcshiftx:=u; -x1=x2=w/2; y1=2/3h; y2=1/3h; -draw_pdot(1,dot_size); -draw_pdot(2,dot_size); -penlabels(1,2); -endchar; % end ":" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{;} -% The `;' character. -% \begin{macrocode} - -cmchar "Uncial Semicolon"; -beginchar(";",2u#+hstretch*(comma_width#+dot_size#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=u; -x1=x2=w-pcshiftx-(0.5hstretch*dot_size); y1=2/3h; y2=1/3h; -draw_pdot(1,dot_size); -draw_pcomma(2,dot_size,comma_width); -penlabels(1,2); -endchar; % end of ";" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{'} -% The `'' character. -% \begin{macrocode} - -cmchar "Uncial Apostrophe"; -beginchar("'",2u#+hstretch*(comma_width#+dot_size#),4/3x_height#,0); -adjust_fit(0,0); -pcshiftx:=u; -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 "Uncial Reverse apostrophe"; -beginchar("`",2u#+hstretch*(comma_width#+dot_size#),4/3x_height#,0); -adjust_fit(0,0); -pcshiftx:=u; -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} -% -% \end{macrocode} -% -% -% \subsection{The ligatures and dashes file} -% -% The ligatured punctuation marks and dashes are defined in this file. -% \begin{macrocode} -%<*lig> -% UNCLLIG.MF Uncial ligatured 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 "Uncial closing quotes"; -beginchar(oct"042",2u#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0); -adjust_fit(0,0); -pcshiftx:=u; -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 "Uncial opening quotes"; -beginchar(oct"134",2u#+hstretch*(comma_width#+3dot_size#),4/3x_height#,0); -adjust_fit(0,0); -pcshiftx:=u; -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 `-' character. -% \begin{macrocode} - -cmchar "Uncial hyphen"; -beginchar("-",u#+hstretch*(0.8x_height#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=u/2; -pickup quill; -lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; -draw z1--z2; % bar -penlabels(1,2); -endchar; % end of "-" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{--} -% The -- ligature. -% \begin{macrocode} - -cmchar "Uncial en dash"; -beginchar(oct"173",u#+hstretch*(x_height#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=u/2; -pickup quill; -lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; -draw z1--z2; % bar -penlabels(1,2); -endchar; % end of "--" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{---} -% The `---' ligature. The em dash is twice the width of the en dash. -% \begin{macrocode} - -cmchar "Uncial em dash"; -beginchar(oct"174",u#+hstretch*(2x_height#),x_height#,0); -adjust_fit(0,0); -pcshiftx:=u/2; -pickup quill; -lft x1 = pcshiftx; rt x2=w-pcshiftx; y1=y2=h/2; -draw z1--z2; % bar -penlabels(1,2); -endchar; % end of "---" - -% \end{macrocode} -% \end{routine} -% -% -% The end of this file. -% \begin{macrocode} -% -% \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> -% UNCLDIG.MF Program file for Uncial digits -% - -% \end{macrocode} -% -% -% \begin{routine}{1} -% The digit `1'. -% \begin{macrocode} -cmchar "Uncial digit 1"; -beginchar("1", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -y100 = h/2; x100 = pcshiftx+y100; % square center -pickup quill; -x1=x2=w/2; -y1=h; bot y2=0; -%%ductus:=true; -draw_tstem(1,2,srad); -ductus:=false; -proofpcbb(100, y100, y100); -penlabels(1,2,100); -endchar; % end "1" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{2} -% The digit `2'. -% \begin{macrocode} -cmchar "Uncial digit 2"; -beginchar("2", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -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; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_wave(5,6,thin); % foot -draw z1..z2{right}..z3{down}..{-pdir}z5wl; % curve -ductus:=false; -penlabels(1,2,3,4,5,6,100); -endchar; % end "2" - -% \end{macrocode} -% \end{routine} -% -% -% \begin{routine}{3} -% The digit `3'. -% \begin{macrocode} -cmchar "Uncial 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; -% y values -bot y3=thin; top y10=h-2thin; -y6=0.5[y3,y10]; y7=y6; -bot y4=-thin; top y9=h+thin; -y5=0.5[y3,y6]; -y8=11/12[y7,y10]; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw z3..z4{right}..z5{up}...{-pdir}z6; % bottom bowl -draw z7{pdir}..z8{up}..z9{left}..z10; % top bowl -ductus:=false; -penlabels(1,2,3,4,5,6,7,8,9,10,100); -endchar; % end "3" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{4} -% The digit `4'. -% \begin{macrocode} -cmchar "Uncial digit 4"; -beginchar("4", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% the stem -x1=x2=w-pcshiftx-jut; -y1=h; bot y2=0; -% the crossbar -lft x3=pcshiftx; y3=0.33h; -rt x4=w-pcshiftx; y4=y3; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_tstem(1,2,srad); % main stem -draw_wave(3,4,thin); % crossbar -draw z3wl--z1; % diagonal -ductus:=false; -penlabels(1,2,3,4,100); -endchar; % end "4" - -% \end{macrocode} -% \end{routine} -% -% -% -% \begin{routine}{5} -% The digit `5'. -% \begin{macrocode} -cmchar "Uncial digit 5"; -beginchar("5", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -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; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_wave(2,1,thin); % top squiggle -draw z3{pdir}..z5{down}..z6{left}..z7; % curve -draw z2wl--z3; % vertical -ductus:=false; -penlabels(1,2,3,4,5,6,7,100); -endchar; % end "5" - -% \end{macrocode} -% \end{routine} -% -% \begin{routine}{6} -% The digit `6'. -% \begin{macrocode} -cmchar "Uncial 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 "Uncial digit 7"; -beginchar("7", 2u#+fig_width#, fig_height#, 0); -adjust_fit(0,0); -pcshiftx := u; -pickup quill; -% top bar -lft x1=pcshiftx; -rt x2=w-pcshiftx; -top y1=top y2=h; -% bowed leg -x4=w/2; bot y4=0; -x3=0.5[x2,x4]-3thin; y3=0.5[y2,y4]; -%%ductus:=true; -if ductus: - pickup stylus; -fi -draw_wave(1,2,thin); % top bar -draw z1wr..z3..z4; -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 "Uncial 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 "Uncial 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 "Uncial 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; -proofpcbb(100, y100, y100); -penlabels(1,2,3,4,100); -endchar; % end "0" - -% \end{macrocode} -% \end{routine} -% -% -% -% -% The end of this file. -% \begin{macrocode} -% -% \end{macrocode} -% -% \section{The font definition files} \label{sec:fd} -% -% The font comes in normal and bold weights only. -% -% \begin{macrocode} -%<*fdot1> -\DeclareFontFamily{OT1}{uncl}{} - \DeclareFontShape{OT1}{uncl}{m}{n}{ <-8.5> uncl7 <8.5-15> uncl10 <15-> uncl17 }{} - \DeclareFontShape{OT1}{uncl}{m}{sl}{ <-> sub * uncl/m/n }{} - \DeclareFontShape{OT1}{uncl}{m}{it}{ <-> sub * uncl/m/n }{} - \DeclareFontShape{OT1}{uncl}{m}{sc}{ <-> sub * uncl/m/n }{} - \DeclareFontShape{OT1}{uncl}{m}{u}{ <-> sub * uncl/m/n }{} - \DeclareFontShape{OT1}{uncl}{bx}{n}{ <-8.5> unclb7 <8.5-15> unclb10 <15-> unclb17 }{} - \DeclareFontShape{OT1}{uncl}{bx}{it}{ <-> sub * uncl/bx/n }{} - \DeclareFontShape{OT1}{uncl}{bx}{sl}{ <-> sub * uncl/bx/n }{} - \DeclareFontShape{OT1}{uncl}{b}{n}{ <-> sub * uncl/bx/n }{} -% -% \end{macrocode} -% -% -% \begin{macrocode} -%<*fdt1> -\DeclareFontFamily{T1}{uncl}{} - \DeclareFontShape{T1}{uncl}{m}{n}{ <-8.5> uncl7 <8.5-15> uncl10 <15-> uncl17 }{} - \DeclareFontShape{T1}{uncl}{m}{sl}{ <-> sub * uncl/m/n }{} - \DeclareFontShape{T1}{uncl}{m}{it}{ <-> sub * uncl/m/n }{} - \DeclareFontShape{T1}{uncl}{m}{sc}{ <-> sub * uncl/m/n }{} - \DeclareFontShape{T1}{uncl}{m}{u}{ <-> sub * uncl/m/n }{} - \DeclareFontShape{T1}{uncl}{bx}{n}{ <-8.5> unclb7 <8.5-15> unclb10 <15-> unclb17 }{} - \DeclareFontShape{T1}{uncl}{bx}{it}{ <-> sub * uncl/bx/n }{} - \DeclareFontShape{T1}{uncl}{bx}{sl}{ <-> sub * uncl/bx/n }{} - \DeclareFontShape{T1}{uncl}{b}{n}{ <-> sub * uncl/bx/n }{} -% -% \end{macrocode} -% -% \section{The package code} \label{sec:code} -% -% \subsection{The \Lpack{uncial} package} -% -% The \Lpack{uncial} package is for typesetting short pieces of text -% in the Uncial fonts. -% -% Announce the name and version of the package, which requires -% \LaTeXe{}. -% \begin{macrocode} -%<*usc> -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{uncial}[1999/05/15 v1.1 package for uncial 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}{\unclfamily} -% Selects the Uncial font family in the OT1 or T1 encoding. -% \begin{macrocode} -\ifx\Tienc\encodingdefault - \newcommand{\unclfamily}{\usefont{T1}{uncl}{m}{n}} -\else - \newcommand{\unclfamily}{\usefont{OT1}{uncl}{m}{n}} -\fi -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\textuncl} -% Text command for the Uncial font family. -% \begin{macrocode} -\DeclareTextFontCommand{\textuncl}{\unclfamily} -% \end{macrocode} -% \end{macro} -% -% The end of this package. -% \begin{macrocode} -% -% \end{macrocode} -% -% \subsection{The \Lpack{alluncl} package} -% -% The \Lpack{alluncl} 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{uncial} package. -% \begin{macrocode} -%<*uscall> -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{alluncl}[1999/05/15 v1.1 package for all Uncial fonts] -\RequirePackage{uncial} -% \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 Uncial, which has only one family -% member. -% \begin{macro}{\rmdefault} -% \begin{macro}{\sfdefault} -% \begin{macro}{\ttdefault} -% \begin{macrocode} -\renewcommand{\rmdefault}{uncl} -\renewcommand{\sfdefault}{uncl} -\renewcommand{\ttdefault}{uncl} -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% -% The `leading' in the book-hand is the same as the |x-height|, which is much -% greater than for the CMR fonts. I have borrowed code from Frank Jensen's -% \Lpack{beton} package~\cite{BETON} to do this. -% -% \begin{macro}{\uncial@baselineskip@table} -% A table of the normal font sizes and the corresponding baselineskip. -% \begin{macrocode} -\newcommand{\uncial@baselineskip@table}{% - <\@vpt>9.5% - <\@vipt>11.4% - <\@viipt>13.3% - <\@viiipt>15.2% - <\@xpt>19% - <\@xipt>20.9% - <\@xiipt>22.8% - <\@xivpt>27.36% - <\@xviipt>23.3% - <\@xxpt>38% - <\@xxvpt>47.5} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\uncial@new@setfontsize} -% This is a macro that replaces the |\@setfontsize| macro which is called by -% the font size changing commands. -% \begin{macrocode} -\newcommand{\uncial@new@setfontsize}[3]{% - \edef\@tempa{\def\noexpand\@tempb####1<#2}% - \@tempa>##2<##3\@nil{\def\uncial@baselineskip@value{##2}}% - \edef\@tempa{\noexpand\@tempb\uncial@baselineskip@table<#2}% - \@tempa><\@nil - \ifx\uncial@baselineskip@value\@empty - \def\uncial@baselineskip@value{#3}% - \fi - \uncial@old@setfontsize{#1}{#2}\uncial@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\uncial@old@setfontsize=\@setfontsize - \let\@setfontsize=\uncial@new@setfontsize} -\AtBeginDocument{\normalsize} -% \end{macrocode} -% -% -% The end of this package. -% \begin{macrocode} -% -% \end{macrocode} -% -% -% -% \bibliographystyle{alpha} -% \renewcommand{\refname}{Bibliography} -% \begin{thebibliography}{GMS94} -% \addcontentsline{toc}{section}{\refname} -% -% \bibitem[And69]{ANDERSON69} -% Donald M.~Anderson. -% \newblock {\em The Art of Written Forms: The Theory and Practice of Calligraphy}. -% \newblock Holt, Rinehart and Winston, 1969. -% -% \bibitem[Bol95]{BOLOGNA95} -% Giulia Bologna. -% \newblock {\em Illuminated Manuscripts: The Book before Gutenberg}. -% \newblock Crescent Books, 1995. -% -% \bibitem[Day95]{DAY95} -% Lewis F.~Day. -% \newblock {\em Alphabets Old \& New}. -% \newblock (3rd edition originally published by B.~T.~Batsford, 1910) -% \newblock Senate, 1995. -% -% \bibitem[Dro80]{DROGIN80} -% Marc Drogin. -% \newblock {\em Medieval Calligraphy: Its History and Technique}. -% \newblock Allenheld, Osmun \& Co., 1980. -% -% \bibitem[Dru95]{DRUCKER95} -% Johanna Drucker. -% \newblock {\em The Alphabetic Labyrinth}. -% \newblock Thames \& Hudson, 1995. -% -% \bibitem[Fir93]{FIRMAGE93} -% Richard A.~Firmage. -% \newblock {\em The Alphabet Abecedarium}. -% \newblock David R~Goodine, 1993. -% -% \bibitem[Har95]{HARRIS95} -% David Harris. -% \newblock {\em The Art of Calligraphy}. -% \newblock DK Publishing, 1995. -% -% \bibitem[Jen95]{BETON} -% Frank Jensen. -% \newblock {\em The BETON package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1995. -% -% \bibitem[Joh71]{JOHNSTON75} -% Edward Johnston (ed. Heather Child). -% \newblock {\em Formal Penship and Other Papers}. -% \newblock Penthalic, 1971. -% -% \bibitem[Knu87]{CM} -% Donald E.~Knuth. -% \newblock {\em Computer Modern Typefaces}. -% \newblock Addison-Wesley, 1987. -% -% \bibitem[Knu92]{METAFONT} -% Donald E.~Knuth. -% \newblock {\em The METAFONTbook}. -% \newblock Addison-Wesley, 1992. -% -% \bibitem[GMS94]{GOOSSENS94} -% Michel Goossens, Frank Mittelbach, and Alexander Samarin. -% \newblock {\em The LaTeX Companion}. -% \newblock Addison-Wesley Publishing Company, 1994. -% -% \bibitem[Tho75]{THOMAS75} -% Alan G.~Thomas. -% \newblock {\em Great Books and Book Collectors}. -% \newblock Weidenfield and Nichoson, 1975. -% -% \bibitem[Wil99]{DOCMFP} -% Peter R.~Wilson. -% \newblock {\em The DOCMFP Package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1999. -% -% \bibitem[Wil99b]{ROMANNUM} -% Peter R.~Wilson. -% \newblock {\em The ROMANNUM Package}. -% \newblock (Available from CTAN in \texttt{macros/latex/contrib/supported}). -% \newblock 1999. -% -% \end{thebibliography} -% -% -% \Finale -% \PrintIndex -% -\endinput - -%% \CharacterTable -%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -%% Digits \0\1\2\3\4\5\6\7\8\9 -%% Exclamation \! Double quote \" Hash (number) \# -%% Dollar \$ Percent \% Ampersand \& -%% Acute accent \' Left paren \( Right paren \) -%% Asterisk \* Plus \+ Comma \, -%% Minus \- Point \. Solidus \/ -%% Colon \: Semicolon \; Less than \< -%% Equals \= Greater than \> Question mark \? -%% Commercial at \@ Left bracket \[ Backslash \\ -%% Right bracket \] Circumflex \^ Underscore \_ -%% Grave accent \` Left brace \{ Vertical bar \| -%% Right brace \} Tilde \~} - - diff --git a/Master/texmf-dist/source/latex/bookhands/uncial/uncial.ins b/Master/texmf-dist/source/latex/bookhands/uncial/uncial.ins deleted file mode 100644 index 8d5d48a5ce5..00000000000 --- a/Master/texmf-dist/source/latex/bookhands/uncial/uncial.ins +++ /dev/null @@ -1,103 +0,0 @@ -%% -%% uncial.ins -%% Copyright 1999 Peter R. Wilson -%% -%% This program is provided under the terms of the -%% LaTeX Project Public License distributed from CTAN -%% archives in directory macros/latex/base/lppl.txt. -%% -%% Author: Peter Wilson (CUA) -%% now at: peter.r.wilson@boeing.com -%% -%% This file will generate fast loadable files and documentation -%% driver files from the doc files in this package when run through -%% LaTeX or TeX. -%% -%% --------------- start of docstrip commands ------------------ -%% -\def\batchfile{uncial.ins} -\input docstrip.tex -\preamble - - Copyright 1999 Peter R. Wilson - - This program is provided under the terms of the - LaTeX Project Public License distributed from CTAN - archives in directory macros/latex/base/lppl.txt. - -Author: Peter Wilson (CUA) - now at: peter.r.wilson@boeing.com - -\endpreamble - -\keepsilent - -%%% \Msg{*** Generating the driver file ***} -%%% \generateFile{uncial.drv}{t}{\from{uncial.dtx}{driver}} - -\Msg{*** Generating the Metafont files ***} - -\usepostamble\empty -\generateFile{uncl7.mf}{t}{\from{uncial.dtx}{base7}} -\generateFile{uncl10.mf}{t}{\from{uncial.dtx}{base10}} -\generateFile{uncl17.mf}{t}{\from{uncial.dtx}{base17}} -\generateFile{unclb7.mf}{t}{\from{uncial.dtx}{base7b}} -\generateFile{unclb10.mf}{t}{\from{uncial.dtx}{base10b}} -\generateFile{unclb17.mf}{t}{\from{uncial.dtx}{base17b}} -\generateFile{uncll.mf}{t}{\from{uncial.dtx}{min}} -\generateFile{unclu.mf}{t}{\from{uncial.dtx}{maj}} -\generateFile{uncltitle.mf}{t}{\from{uncial.dtx}{mfd}} -\generateFile{unclpunct.mf}{t}{\from{uncial.dtx}{punct}} -\generateFile{uncllig.mf}{t}{\from{uncial.dtx}{lig}} -\generateFile{uncldig.mf}{t}{\from{uncial.dtx}{dig}} -%%% \generateFile{unclp.mf}{t}{\from{uncial.dtx}{xp}} - -\Msg{*** Generating the Font Definition files ***} -\usepostamble\defaultpostamble - -\generateFile{ot1uncl.fd}{t}{\from{uncial.dtx}{fdot1}} -\generateFile{t1uncl.fd}{t}{\from{uncial.dtx}{fdt1}} - -\Msg{*** Generating the LaTeX2e package files ***} - -\generateFile{uncial.sty}{t}{\from{uncial.dtx}{usc}} -\generateFile{alluncl.sty}{t}{\from{uncial.dtx}{uscall}} - -\Msg{***********************************************************} -\Msg{*} -\Msg{* To finish the installation you have to move the following} -\Msg{* files into directories searched by TeX:} -\Msg{*} -\Msg{* Move these into the font source area:} -\Msg{* \space\space uncl7.mf} -\Msg{* \space\space uncl10.mf} -\Msg{* \space\space uncl17.mf} -\Msg{* \space\space unclb7.mf} -\Msg{* \space\space unclb10.mf} -\Msg{* \space\space unclb17.mf} -\Msg{* \space\space uncll.mf} -\Msg{* \space\space unclu.mf} -\Msg{* \space\space uncltitle.mf} -\Msg{* \space\space unclpunct.mf} -\Msg{* \space\space uncllig.mf} -\Msg{* \space\space uncldig.mf} -%%% \Msg{* \space\space unclp.mf} -\Msg{*} -\Msg{* Move these into the LaTeX macro area:} -\Msg{* \space\space ot1uncl.fd} -\Msg{* \space\space t1uncl.fd} -\Msg{* \space\space uncial.sty} -\Msg{* \space\space alluncl.sty} -\Msg{*} -\Msg{*} -\Msg{* To produce the documentation run the files ending with} -\Msg{* `.dtx' through LaTeX.} -\Msg{* Process any name.idx file by:} -\Msg{* \space\space\space\space makeindex -s gind.ist name} -\Msg{* Process any name.glo file by:} -\Msg{* \space\space\space\space makeindex -s gglo.ist -o name.gls name.glo} -\Msg{*} -\Msg{* Happy TeXing} -\Msg{***********************************************************} - -\endinput diff --git a/Master/texmf-dist/tex/latex/bookhands/allhmin.sty b/Master/texmf-dist/tex/latex/bookhands/allhmin.sty index 4b137997545..2c7d41dfd60 100644 --- a/Master/texmf-dist/tex/latex/bookhands/allhmin.sty +++ b/Master/texmf-dist/tex/latex/bookhands/allhmin.sty @@ -6,14 +6,22 @@ %% %% humanist.dtx (with options: `uscall') %% -%% Copyright 1999 Peter R. Wilson +%% Author: Peter Wilson (CUA) now at peter.r.wilson@boeing.com +%% (or pandgwilson@earthlink.net) +%% Copyright 2002, 2003 Peter R. Wilson %% -%% This program is provided under the terms of the -%% LaTeX Project Public License distributed from CTAN -%% archives in directory macros/latex/base/lppl.txt. +%% 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. %% -%% Author: Peter Wilson (CUA) -%% now at: peter.r.wilson@boeing.com +%% This work has the LPPL maintenance status "author-maintained". +%% +%% This work consists of the files listed in the README file. %% \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{allhmin}[2002/12/30 v1.0 package for all Humanist fonts] diff --git a/Master/texmf-dist/tex/latex/bookhands/allsqrc.sty b/Master/texmf-dist/tex/latex/bookhands/allsqrc.sty index c96e5b38576..44baef0fc11 100644 --- a/Master/texmf-dist/tex/latex/bookhands/allsqrc.sty +++ b/Master/texmf-dist/tex/latex/bookhands/allsqrc.sty @@ -5,16 +5,23 @@ %% The original source files were: %% %% sqrcaps.dtx (with options: `uscall') +%% ------------------------------------------------------------------ +%% Author: Peter Wilson (Herries Press) herries dot press at earthlink dot net +%% Copyright 2002--2005 Peter R. Wilson %% -%% Copyright 1999 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 program is provided under the terms of the -%% LaTeX Project Public License distributed from CTAN -%% archives in directory macros/latex/base/lppl.txt. -%% -%% Author: Peter Wilson (CUA) -%% now at: peter.r.wilson@boeing.com +%% This work has the LPPL maintenance status "author-maintained". %% +%% This work consists of the files listed in the README file. +%% ------------------------------------------------------------------ \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{allsqrc}[2002/12/30 v1.0 package for all Square Capitals fonts] \RequirePackage{sqrcaps} diff --git a/Master/texmf-dist/tex/latex/bookhands/humanist.sty b/Master/texmf-dist/tex/latex/bookhands/humanist.sty index 066f17a8697..6602fac8a34 100644 --- a/Master/texmf-dist/tex/latex/bookhands/humanist.sty +++ b/Master/texmf-dist/tex/latex/bookhands/humanist.sty @@ -6,14 +6,22 @@ %% %% humanist.dtx (with options: `usc') %% -%% Copyright 1999 Peter R. Wilson +%% Author: Peter Wilson (CUA) now at peter.r.wilson@boeing.com +%% (or pandgwilson@earthlink.net) +%% Copyright 2002, 2003 Peter R. Wilson %% -%% This program is provided under the terms of the -%% LaTeX Project Public License distributed from CTAN -%% archives in directory macros/latex/base/lppl.txt. +%% 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. %% -%% Author: Peter Wilson (CUA) -%% now at: peter.r.wilson@boeing.com +%% This work has the LPPL maintenance status "author-maintained". +%% +%% This work consists of the files listed in the README file. %% \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{humanist}[2002/12/30 v1.0 package for Humanist fonts] diff --git a/Master/texmf-dist/tex/latex/bookhands/ot1hmin.fd b/Master/texmf-dist/tex/latex/bookhands/ot1hmin.fd index 19479f17395..7ed5404480b 100644 --- a/Master/texmf-dist/tex/latex/bookhands/ot1hmin.fd +++ b/Master/texmf-dist/tex/latex/bookhands/ot1hmin.fd @@ -6,14 +6,22 @@ %% %% humanist.dtx (with options: `fdot1') %% -%% Copyright 1999 Peter R. Wilson +%% Author: Peter Wilson (CUA) now at peter.r.wilson@boeing.com +%% (or pandgwilson@earthlink.net) +%% Copyright 2002, 2003 Peter R. Wilson %% -%% This program is provided under the terms of the -%% LaTeX Project Public License distributed from CTAN -%% archives in directory macros/latex/base/lppl.txt. +%% 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. %% -%% Author: Peter Wilson (CUA) -%% now at: peter.r.wilson@boeing.com +%% This work has the LPPL maintenance status "author-maintained". +%% +%% This work consists of the files listed in the README file. %% \DeclareFontFamily{OT1}{hmin}{} \DeclareFontShape{OT1}{hmin}{m}{n}{ <-8.5> hmin7 <8.5-15> hmin10 <15-> hmin17 }{} diff --git a/Master/texmf-dist/tex/latex/bookhands/ot1sqrc.fd b/Master/texmf-dist/tex/latex/bookhands/ot1sqrc.fd index 7c73735018f..2c59da6ebfb 100644 --- a/Master/texmf-dist/tex/latex/bookhands/ot1sqrc.fd +++ b/Master/texmf-dist/tex/latex/bookhands/ot1sqrc.fd @@ -5,23 +5,32 @@ %% The original source files were: %% %% sqrcaps.dtx (with options: `fdot1') +%% ------------------------------------------------------------------ +%% Author: Peter Wilson (Herries Press) herries dot press at earthlink dot net +%% Copyright 2002--2005 Peter R. Wilson %% -%% Copyright 1999 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 program is provided under the terms of the -%% LaTeX Project Public License distributed from CTAN -%% archives in directory macros/latex/base/lppl.txt. -%% -%% Author: Peter Wilson (CUA) -%% now at: peter.r.wilson@boeing.com +%% This work has the LPPL maintenance status "author-maintained". %% +%% This work consists of the files listed in the README file. +%% ------------------------------------------------------------------ \DeclareFontFamily{OT1}{sqrc}{} - \DeclareFontShape{OT1}{sqrc}{m}{n}{ <-8.5> sqrc7 <8.5-15> sqrc10 <15-> sqrc17 }{} +%%% \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}{ <-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 }{} diff --git a/Master/texmf-dist/tex/latex/bookhands/sqrcaps.sty b/Master/texmf-dist/tex/latex/bookhands/sqrcaps.sty index b136a6cebce..39f4721526d 100644 --- a/Master/texmf-dist/tex/latex/bookhands/sqrcaps.sty +++ b/Master/texmf-dist/tex/latex/bookhands/sqrcaps.sty @@ -5,16 +5,23 @@ %% The original source files were: %% %% sqrcaps.dtx (with options: `usc') +%% ------------------------------------------------------------------ +%% Author: Peter Wilson (Herries Press) herries dot press at earthlink dot net +%% Copyright 2002--2005 Peter R. Wilson %% -%% Copyright 1999 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 program is provided under the terms of the -%% LaTeX Project Public License distributed from CTAN -%% archives in directory macros/latex/base/lppl.txt. -%% -%% Author: Peter Wilson (CUA) -%% now at: peter.r.wilson@boeing.com +%% This work has the LPPL maintenance status "author-maintained". %% +%% This work consists of the files listed in the README file. +%% ------------------------------------------------------------------ \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{sqrcaps}[2002/12/30 v1.0 package for Square Capitals fonts] \providecommand{\Tienc}{T1} diff --git a/Master/texmf-dist/tex/latex/bookhands/t1hmin.fd b/Master/texmf-dist/tex/latex/bookhands/t1hmin.fd index 2ebc8b6aafa..9d90748c545 100644 --- a/Master/texmf-dist/tex/latex/bookhands/t1hmin.fd +++ b/Master/texmf-dist/tex/latex/bookhands/t1hmin.fd @@ -6,14 +6,22 @@ %% %% humanist.dtx (with options: `fdt1') %% -%% Copyright 1999 Peter R. Wilson +%% Author: Peter Wilson (CUA) now at peter.r.wilson@boeing.com +%% (or pandgwilson@earthlink.net) +%% Copyright 2002, 2003 Peter R. Wilson %% -%% This program is provided under the terms of the -%% LaTeX Project Public License distributed from CTAN -%% archives in directory macros/latex/base/lppl.txt. +%% 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. %% -%% Author: Peter Wilson (CUA) -%% now at: peter.r.wilson@boeing.com +%% This work has the LPPL maintenance status "author-maintained". +%% +%% This work consists of the files listed in the README file. %% \DeclareFontFamily{T1}{hmin}{} \DeclareFontShape{T1}{hmin}{m}{n}{ <-8.5> hmin7 <8.5-15> hmin10 <15-> hmin17 }{} diff --git a/Master/texmf-dist/tex/latex/bookhands/t1sqrc.fd b/Master/texmf-dist/tex/latex/bookhands/t1sqrc.fd index 2235ff2278a..3f5d83f7041 100644 --- a/Master/texmf-dist/tex/latex/bookhands/t1sqrc.fd +++ b/Master/texmf-dist/tex/latex/bookhands/t1sqrc.fd @@ -5,23 +5,32 @@ %% The original source files were: %% %% sqrcaps.dtx (with options: `fdt1') +%% ------------------------------------------------------------------ +%% Author: Peter Wilson (Herries Press) herries dot press at earthlink dot net +%% Copyright 2002--2005 Peter R. Wilson %% -%% Copyright 1999 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 program is provided under the terms of the -%% LaTeX Project Public License distributed from CTAN -%% archives in directory macros/latex/base/lppl.txt. -%% -%% Author: Peter Wilson (CUA) -%% now at: peter.r.wilson@boeing.com +%% This work has the LPPL maintenance status "author-maintained". %% +%% This work consists of the files listed in the README file. +%% ------------------------------------------------------------------ \DeclareFontFamily{T1}{sqrc}{} - \DeclareFontShape{T1}{sqrc}{m}{n}{ <-8.5> sqrc7 <8.5-15> sqrc10 <15-> sqrc17 }{} +%%% \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}{ <-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 }{} diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check index a8a499ea42b..1d6d8a20496 100755 --- a/Master/tlpkg/bin/tlpkg-ctan-check +++ b/Master/tlpkg/bin/tlpkg-ctan-check @@ -63,7 +63,7 @@ my @TLP_working = qw( bidi bigfoot bigints binomexp biocon bizcard blacklettert1 blindtext blkarray block blockdraw_mp blowup bodegraph boisik bold-extra - boites boldtensors bondgraph bookest booklet + boites boldtensors bondgraph bookest bookhands booklet booktabs booktabs-de booktabs-fr boolexpr bophook borceux bosisio boxedminipage boxhandler bpchem bpolynomial diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds index 328824922b4..d107b0e48f2 100755 --- a/Master/tlpkg/libexec/ctan2tds +++ b/Master/tlpkg/libexec/ctan2tds @@ -733,6 +733,7 @@ chomp ($Build = `cd $Master/../Build/source && pwd`); 'sprite', "die 'skipping, noinfo license'", 'ssqquote', "die 'skipping, nonfree license'", 'staves', "&MAKEflatten", + 'stmaryrd', "&MAKEflatten", 'stellenbosch',"&MAKEcopy", 'streetex', "die 'skipping, nonfree'", 'style_showcase', "die 'skipping, until JimH advises it is a good idea'", @@ -2055,11 +2056,13 @@ for (@ARGV) { $DEST_TREE = $specialdest{$package} || $standarddest; # usually texmf-dist $DEST = "$TOPDEST/$DEST_TREE"; # goes to Master/texmf-dist or whatever - $insrunner = $specialinsrunner{$package} || $standardinsrunner; - $whichformat = $specialfmt{$package} || $standardfmt; $whichdocformat = $specialdocfmt{$package} || $standarddocfmt; + $inspatt = $specialins{$package} || $standardins; + $insrunner = $specialinsrunner{$package} || $standardinsrunner; + $Foundry = $specialfoundry{$package} || $standardfoundry; + print "pkg=$package (fmt=$whichformat docfmt=$whichdocformat) -> $DEST\n"; if (exists $special{$package}) { if ($special{$package} =~ s/^die //) { @@ -2285,8 +2288,7 @@ sub setup &SYSTEM ("$CP -r $packagedir/* $DEST/doc/$whichdocformat/$package"); } -sub donormal -{ +sub donormal { my ($ctrl) = @_; print "doing donormal($ctrl)...\n"; @@ -2386,9 +2388,9 @@ sub install { -# build the documentation files (we don't any more) -sub dodvi -{ +# build the documentation files (we don't any more). +# +sub dodvi { # packages which are doc themselves rarely rebuild cleanly, # and aren't worth it. $dvipatt = $specialdvi{$package} || $standarddvi; @@ -2399,8 +2401,7 @@ sub dodvi } # move the runtime files -sub dotex -{ +sub dotex { my $texpatt = $specialtex{$package} || $standardtex; &install("$DEST/tex/$whichformat/$package", $texpatt); } @@ -3557,24 +3558,24 @@ sub MAKEwilson { print "\t PROCESS Wilson subdir $d\n"; &xchdir ($target); - if ($d) { - for my $f (glob ("try*"), glob ("*.pdf"), "README") { - my $dest = "$docdir/"; - $dest .= "$d-" if $f !~ /$d/; - $dest .= $f; - &runjob("$MV $f $dest"); - } + for my $f (glob ("try*"), glob ("*.pdf"), "README") { + next unless -f $f; # trysqrcaps.pdf matches both, can only mv once + my $dest = "$docdir/"; + $dest .= "$d-" if $f !~ /$d/; + $dest .= $f; + &runjob("$MV $f $dest"); } &buildfilelist; # run the .ins files (if any) supplied - $inspatt = $specialins{$package}; - &buildfilelist; - &runins($inspatt || $standardins); + $inspatt = $specialins{$package} || $standardins; + &runins($inspatt); + unlink ("auncial.sty", "allauncl.sty"); # in auncial-new package + &dodvi; &domf; &dodvi; -# rebuild again, as we have .dvi files now + # rebuild again, as we have .dvi files now &buildfilelist; &runfonts; &dobst; @@ -3586,10 +3587,11 @@ sub MAKEwilson { killfiles($standardclean); } killfiles($standardclean); + &SYSTEM ("find $docdir -name \*.ps | xargs gzip"); # compress big output } -sub MAKEt2 -{ + +sub MAKEt2 { &xchdir ($packagedir); &xmkdir ("$DEST/tex/plain"); &runjob ("$MV cyrplain $DEST/tex/plain"); diff --git a/Master/tlpkg/tlpsrc/bookhands.tlpsrc b/Master/tlpkg/tlpsrc/bookhands.tlpsrc index e69de29bb2d..5cb63d03b69 100644 --- a/Master/tlpkg/tlpsrc/bookhands.tlpsrc +++ b/Master/tlpkg/tlpsrc/bookhands.tlpsrc @@ -0,0 +1 @@ +execute addMap sqrcaps.map -- cgit v1.2.3