summaryrefslogtreecommitdiff
path: root/fonts/stmaryrd
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /fonts/stmaryrd
Initial commit
Diffstat (limited to 'fonts/stmaryrd')
-rw-r--r--fonts/stmaryrd/INSTALL37
-rw-r--r--fonts/stmaryrd/README15
-rw-r--r--fonts/stmaryrd/ps-type1/hoekwater/README36
-rw-r--r--fonts/stmaryrd/ps-type1/hoekwater/afm/stmary10.afm152
-rw-r--r--fonts/stmaryrd/ps-type1/hoekwater/afm/stmary5.afm152
-rw-r--r--fonts/stmaryrd/ps-type1/hoekwater/afm/stmary6.afm146
-rw-r--r--fonts/stmaryrd/ps-type1/hoekwater/afm/stmary7.afm152
-rw-r--r--fonts/stmaryrd/ps-type1/hoekwater/afm/stmary8.afm146
-rw-r--r--fonts/stmaryrd/ps-type1/hoekwater/afm/stmary9.afm146
-rw-r--r--fonts/stmaryrd/ps-type1/hoekwater/pfm/stmary10.pfmbin0 -> 779 bytes
-rw-r--r--fonts/stmaryrd/ps-type1/hoekwater/pfm/stmary5.pfmbin0 -> 777 bytes
-rw-r--r--fonts/stmaryrd/ps-type1/hoekwater/pfm/stmary6.pfmbin0 -> 484 bytes
-rw-r--r--fonts/stmaryrd/ps-type1/hoekwater/pfm/stmary7.pfmbin0 -> 777 bytes
-rw-r--r--fonts/stmaryrd/ps-type1/hoekwater/pfm/stmary8.pfmbin0 -> 484 bytes
-rw-r--r--fonts/stmaryrd/ps-type1/hoekwater/pfm/stmary9.pfmbin0 -> 484 bytes
-rw-r--r--fonts/stmaryrd/ps-type1/hoekwater/stmary10.pfbbin0 -> 27430 bytes
-rw-r--r--fonts/stmaryrd/ps-type1/hoekwater/stmary5.pfbbin0 -> 28325 bytes
-rw-r--r--fonts/stmaryrd/ps-type1/hoekwater/stmary6.pfbbin0 -> 27786 bytes
-rw-r--r--fonts/stmaryrd/ps-type1/hoekwater/stmary7.pfbbin0 -> 28237 bytes
-rw-r--r--fonts/stmaryrd/ps-type1/hoekwater/stmary8.pfbbin0 -> 27873 bytes
-rw-r--r--fonts/stmaryrd/ps-type1/hoekwater/stmary9.pfbbin0 -> 27392 bytes
-rw-r--r--fonts/stmaryrd/ps-type1/hoekwater/stmaryrd.map7
-rw-r--r--fonts/stmaryrd/stmary10.mf60
-rw-r--r--fonts/stmaryrd/stmary5.mf59
-rw-r--r--fonts/stmaryrd/stmary6.mf59
-rw-r--r--fonts/stmaryrd/stmary7.mf59
-rw-r--r--fonts/stmaryrd/stmary8.mf59
-rw-r--r--fonts/stmaryrd/stmary9.mf59
-rw-r--r--fonts/stmaryrd/stmaryaj.mf1066
-rw-r--r--fonts/stmaryrd/stmaryba.mf121
-rw-r--r--fonts/stmaryrd/stmarych.mf221
-rw-r--r--fonts/stmaryrd/stmaryjg.mf600
-rw-r--r--fonts/stmaryrd/stmaryrd.dtx664
-rw-r--r--fonts/stmaryrd/stmaryrd.mf95
-rw-r--r--fonts/stmaryrd/stmaryrd.pdfbin0 -> 98554 bytes
35 files changed, 4111 insertions, 0 deletions
diff --git a/fonts/stmaryrd/INSTALL b/fonts/stmaryrd/INSTALL
new file mode 100644
index 0000000000..ffe9ac1e10
--- /dev/null
+++ b/fonts/stmaryrd/INSTALL
@@ -0,0 +1,37 @@
+THE ST MARY'S ROAD SYMBOL FONT
+
+6 APRIL 1994
+
+This distribution contains the St Mary's Road symbol fonts:
+
+ INSTALL stmary5.mf stmary8.mf stmaryba.mf stmaryrd.dtx
+ README stmary6.mf stmary9.mf stmarych.mf stmaryrd.mf
+ stmary10.mf stmary7.mf stmaryaj.mf stmaryjg.mf
+
+To install the fonts, you should:
+
+ * run METAFONT on the fonts, for example under Unix you say:
+
+ mf "\mode=localfont; input stmary5;"
+ mf "\mode=localfont; input stmary6;"
+ mf "\mode=localfont; input stmary7;"
+ mf "\mode=localfont; input stmary8;"
+ mf "\mode=localfont; input stmary9;"
+ mf "\mode=localfont; input stmary10;"
+
+ * move stmary*.tfm into a TeX font metrics directory
+
+ * move stmary*.*pk into a TeX bitmaps directory
+
+If you want to use the St Mary's Road font in LaTeX2e, you should:
+
+ * run LaTeX2e on stmaryrd.dtx
+
+ * move stmaryrd.sty and Ustmry.fd into a TeX inputs directory
+
+ * read the documentation in stmaryrd.dvi
+
+This file should only be distributed as part of the St Mary's Road
+distribution.
+
+Copyright 1994 Alan Jeffrey
diff --git a/fonts/stmaryrd/README b/fonts/stmaryrd/README
new file mode 100644
index 0000000000..7cc4924148
--- /dev/null
+++ b/fonts/stmaryrd/README
@@ -0,0 +1,15 @@
+THE ST MARY'S ROAD SYMBOL FONT
+
+6 APRIL 1994
+
+This directory contains the St Mary's Road symbol font. This font
+contains a number of mathematical symbols which we (and others!) have
+found useful.
+
+Read the INSTALL file for details of how to install the St Mary's Road
+package.
+
+Alan Jeffrey (alanje@cogs.susx.ac.uk)
+
+Jeremy Gibbons (jeremy@cs.aukuni.ac.nz)
+
diff --git a/fonts/stmaryrd/ps-type1/hoekwater/README b/fonts/stmaryrd/ps-type1/hoekwater/README
new file mode 100644
index 0000000000..8c44610fcf
--- /dev/null
+++ b/fonts/stmaryrd/ps-type1/hoekwater/README
@@ -0,0 +1,36 @@
+
+Hi there,
+
+This directory contains a Type 1 version of (some of) the
+Metafont sources from the directory above. The pfb files
+are intended to be used with the original TFM files,
+_don't_ run finst or afmtotfm on the afm files!
+
+The afm and pfm files are provided just in case you want to
+install the files on your windowing system. I'm sorry for
+the Macintosh users amongst you, but I don't know how to
+create the MacType1 files.
+
+The fonts should give exactly the same output results as
+the .mf originals, up to the point of sillyness. All bugs
+in the metafont sources have been kept (and there might be
+new ones).
+
+Files are herewith donated to the public domain, and
+provided as is. Note that I feel that the copyright
+from the metafont sources still applies, my only statement
+here is that I do not impose extra restrictions.
+
+Conversion process:
+ .mf -> metapost (c) Hobby -> .eps
+ .eps -> metafog (c) Kinch -> .pfb
+ .pfb -> hinted & touched up with FontLab v3.0c
+
+More fonts should follow in the next few months. I can be reached for
+propositions/bugs at: taco.hoekwater@wkap.nl
+
+Greetings,
+
+Taco Hoekwater
+
+ \ No newline at end of file
diff --git a/fonts/stmaryrd/ps-type1/hoekwater/afm/stmary10.afm b/fonts/stmaryrd/ps-type1/hoekwater/afm/stmary10.afm
new file mode 100644
index 0000000000..ea2c27f83e
--- /dev/null
+++ b/fonts/stmaryrd/ps-type1/hoekwater/afm/stmary10.afm
@@ -0,0 +1,152 @@
+StartFontMetrics 2.0
+Comment Copyright Conversion of metafont curves by Metafog (c) 1995 Richard Kinch
+Comment Panose 5 1 5 0 2 0 0 2 0 3
+FullName stmary10
+FontName stmary10
+FamilyName stmary10
+Weight Roman
+Notice Copyright (c) Taco Hoekwater, 1998. All rights reserved.
+Version 001.000
+IsFixedPitch false
+ItalicAngle 0.00
+FontBBox -123 -2958 1055 803
+Ascender 700
+Descender -200
+XHeight 431
+CapHeight 700
+UnderlinePosition -100
+UnderlineThickness 50
+StdHW 25
+StdVW 25
+EncodingScheme AdobeStandardEncoding
+StartCharMetrics 128
+C 1 ; WX 778 ; N shortrightarrow ; B 55 72 721 428 ;
+C 2 ; WX 500 ; N shortuparrow ; B 72 -83 426 584 ;
+C 3 ; WX 500 ; N shortdownarrow ; B 72 -84 426 583 ;
+C 4 ; WX 556 ; N Yup ; B 55 28 498 528 ;
+C 5 ; WX 556 ; N Ydown ; B 55 -28 498 472 ;
+C 6 ; WX 611 ; N Yleft ; B 55 28 554 472 ;
+C 7 ; WX 611 ; N Yright ; B 55 28 554 472 ;
+C 8 ; WX 667 ; N varcurlyvee ; B 0 -217 665 694 ;
+C 9 ; WX 667 ; N varcurlywedge ; B 0 -217 665 694 ;
+C 10 ; WX 778 ; N minuso ; B 55 28 720 472 ;
+C 11 ; WX 556 ; N baro ; B 56 -83 498 583 ;
+C 12 ; WX 667 ; N sslash ; B 56 -250 609 750 ;
+C 13 ; WX 667 ; N bbslash ; B 56 -250 609 750 ;
+C 14 ; WX 778 ; N moo ; B 111 -22 665 522 ;
+C 15 ; WX 778 ; N varotimes ; B 56 -82 720 582 ;
+C 16 ; WX 778 ; N varoast ; B 56 -82 720 582 ;
+C 17 ; WX 778 ; N varobar ; B 56 -82 720 582 ;
+C 18 ; WX 778 ; N varodot ; B 56 -82 720 582 ;
+C 19 ; WX 778 ; N varoslash ; B 56 -82 720 582 ;
+C 20 ; WX 778 ; N varobslash ; B 56 -82 720 582 ;
+C 21 ; WX 778 ; N varocircle ; B 56 -82 720 582 ;
+C 22 ; WX 778 ; N varoplus ; B 56 -82 720 582 ;
+C 23 ; WX 778 ; N varominus ; B 56 -82 720 582 ;
+C 24 ; WX 778 ; N boxast ; B 83 -55 692 555 ;
+C 25 ; WX 778 ; N boxbar ; B 83 -55 692 555 ;
+C 26 ; WX 778 ; N boxdot ; B 83 -55 692 555 ;
+C 27 ; WX 778 ; N boxslash ; B 83 -55 692 555 ;
+C 28 ; WX 778 ; N boxbslash ; B 83 -55 692 555 ;
+C 29 ; WX 778 ; N boxcircle ; B 83 -55 692 555 ;
+C 30 ; WX 778 ; N boxbox ; B 83 -55 692 555 ;
+C 31 ; WX 778 ; N boxempty ; B 83 -55 692 555 ;
+C 32 ; WX 611 ; N lightning ; B 75 -194 408 694 ;
+C 33 ; WX 889 ; N merge ; B 61 0 826 737 ;
+C 34 ; WX 556 ; N vartimes ; B 55 0 498 694 ;
+C 35 ; WX 333 ; N fatsemi ; B 55 -194 276 562 ;
+C 36 ; WX 611 ; N ssearrow ; B 75 -194 554 695 ;
+C 37 ; WX 611 ; N curlywedgeuparrow ; B 55 -194 534 695 ;
+C 38 ; WX 667 ; N sswarrow ; B 0 -194 665 708 ;
+C 39 ; WX 667 ; N curlywedgedownarrow ; B 0 -226 665 717 ;
+C 40 ; WX 722 ; N fatslash ; B 279 -250 889 750 ;
+C 41 ; WX 722 ; N fatbslash ; B 55 -250 665 750 ;
+C 42 ; WX 444 ; N lbag ; B 55 -250 387 750 ;
+C 43 ; WX 444 ; N rbag ; B 55 -250 387 750 ;
+C 44 ; WX 1000 ; N varbigcirc ; B 55 -194 943 694 ;
+C 45 ; WX 778 ; N leftrightarroweq ; B 41 132 734 526 ;
+C 46 ; WX 667 ; N curlyveedownarrow ; B 0 -208 665 694 ;
+C 47 ; WX 667 ; N curlyveeuparrow ; B 0 -217 665 726 ;
+C 48 ; WX 611 ; N nnwarrow ; B 75 -195 554 694 ;
+C 49 ; WX 611 ; N nnearrow ; B 55 -195 534 694 ;
+C 50 ; WX 778 ; N leftslice ; B 55 9 720 491 ;
+C 51 ; WX 778 ; N rightslice ; B 56 9 720 491 ;
+C 52 ; WX 778 ; N varolessthan ; B 55 -82 720 582 ;
+C 53 ; WX 778 ; N varogreaterthan ; B 55 -82 719 582 ;
+C 54 ; WX 778 ; N varovee ; B 55 -82 720 582 ;
+C 55 ; WX 778 ; N varowedge ; B 55 -82 720 582 ;
+C 56 ; WX 500 ; N talloblong ; B 131 -250 367 750 ;
+C 57 ; WX 694 ; N interleave ; B 130 -250 563 750 ;
+C 58 ; WX 778 ; N obar ; B 55 -83 720 583 ;
+C 59 ; WX 778 ; N obslash ; B 55 -83 720 583 ;
+C 60 ; WX 778 ; N olessthan ; B 55 -83 720 583 ;
+C 61 ; WX 778 ; N ogreaterthan ; B 55 -83 720 583 ;
+C 62 ; WX 778 ; N ovee ; B 55 -83 720 583 ;
+C 63 ; WX 778 ; N owedge ; B 55 -83 720 583 ;
+C 64 ; WX 667 ; N oblong ; B 61 0 604 598 ;
+C 65 ; WX 667 ; N inplus ; B 84 -41 582 541 ;
+C 66 ; WX 667 ; N niplus ; B 83 -41 581 541 ;
+C 67 ; WX 667 ; N nplus ; B 55 -22 609 598 ;
+C 68 ; WX 778 ; N subsetplus ; B 83 -41 693 541 ;
+C 69 ; WX 778 ; N supsetplus ; B 83 -41 692 541 ;
+C 70 ; WX 778 ; N subsetpluseq ; B 83 -143 693 636 ;
+C 71 ; WX 778 ; N supsetpluseq ; B 83 -143 692 636 ;
+C 72 ; WX 444 ; N Lbag ; B 55 -250 387 750 ;
+C 73 ; WX 444 ; N Rbag ; B 55 -250 387 750 ;
+C 74 ; WX 403 ; N llbracket ; B 116 -250 380 750 ;
+C 75 ; WX 403 ; N rrbracket ; B 24 -250 285 750 ;
+C 76 ; WX 389 ; N llparenthesis ; B 99 -250 331 750 ;
+C 77 ; WX 389 ; N rrparenthesis ; B 55 -250 287 750 ;
+C 78 ; WX 778 ; N binampersand ; B 56 -82 721 582 ;
+C 79 ; WX 778 ; N bindnasrepma ; B 55 -82 720 582 ;
+C 80 ; WX 778 ; N trianglelefteqslant ; B 83 -143 693 636 ;
+C 81 ; WX 778 ; N trianglerighteqslant ; B 83 -143 693 636 ;
+C 82 ; WX 778 ; N ntrianglelefteqslant ; B 83 -303 693 803 ;
+C 83 ; WX 778 ; N ntrianglerighteqslant ; B 83 -303 693 803 ;
+C 84 ; WX 556 ; N llfloor ; B 120 -250 554 750 ;
+C 85 ; WX 556 ; N rrfloor ; B 0 -250 434 750 ;
+C 86 ; WX 556 ; N llceil ; B 120 -250 554 750 ;
+C 87 ; WX 556 ; N rrceil ; B 0 -250 434 750 ;
+C 88 ; WX 0 ; N arrownot ; B 368 63 630 437 ;
+C 89 ; WX 0 ; N Arrownot ; B 396 -35 602 535 ;
+C 90 ; WX 0 ; N Mapstochar ; B 56 -35 123 535 ;
+C 91 ; WX 0 ; N mapsfromchar ; B -123 63 -55 437 ;
+C 92 ; WX 0 ; N Mapsfromchar ; B -123 -35 -55 535 ;
+C 93 ; WX 1000 ; N leftrightarrowtriangle ; B 56 83 942 417 ;
+C 94 ; WX 1000 ; N leftarrowtriangle ; B 55 83 943 417 ;
+C 95 ; WX 1000 ; N rightarrowtriangle ; B 55 83 942 417 ;
+C 96 ; WX 833 ; N bigtriangledown ; B 55 -1000 776 0 ;
+C 97 ; WX 833 ; N bigtriangleup ; B 55 -1000 776 0 ;
+C 98 ; WX 833 ; N bigcurlyvee ; B 56 -1000 776 0 ;
+C 99 ; WX 833 ; N bigcurlywedge ; B 56 -1000 776 0 ;
+C 100 ; WX 833 ; N bigsqcap ; B 55 -1000 776 0 ;
+C 101 ; WX 833 ; N bigbox ; B 55 -1000 776 0 ;
+C 102 ; WX 444 ; N bigparallel ; B 55 -1000 387 0 ;
+C 103 ; WX 611 ; N biginterleave ; B 56 -1000 620 0 ;
+C 104 ; WX 1111 ; N hugetriangledown ; B 55 -1400 1054 0 ;
+C 105 ; WX 1111 ; N hugetriangleup ; B 55 -1400 1054 0 ;
+C 106 ; WX 1111 ; N hugecurlyvee ; B 56 -1400 1053 0 ;
+C 107 ; WX 1111 ; N hugecurlywedge ; B 56 -1400 1053 0 ;
+C 108 ; WX 1111 ; N hugesqcap ; B 55 -1398 1054 0 ;
+C 109 ; WX 1111 ; N hugebox ; B 55 -1400 1055 0 ;
+C 110 ; WX 556 ; N hugeparallel ; B 55 -1400 499 0 ;
+C 111 ; WX 833 ; N hugeinterleave ; B 56 -1400 856 0 ;
+C 112 ; WX 833 ; N hugenplus ; B 55 -1000 776 0 ;
+C 113 ; WX 528 ; N largellbracket ; B 202 -1158 504 40 ;
+C 114 ; WX 583 ; N Largellbracket ; B 226 -1758 563 40 ;
+C 115 ; WX 639 ; N LARGEllbracket ; B 251 -2358 622 40 ;
+C 116 ; WX 694 ; N hugellbracket ; B 275 -2958 681 40 ;
+C 117 ; WX 778 ; N Hugellbrackettop ; B 327 -1771 768 38 ;
+C 118 ; WX 778 ; N Hugellbracketbot ; B 327 -1758 768 51 ;
+C 119 ; WX 778 ; N Hugellbracketex ; B 327 -602 592 13 ;
+C 120 ; WX 1111 ; N Hugenplus ; B 55 -1400 1054 0 ;
+C 121 ; WX 528 ; N largerrbracket ; B 21 -1158 324 40 ;
+C 122 ; WX 583 ; N Largerrbracket ; B 18 -1758 355 40 ;
+C 123 ; WX 639 ; N LARGErrbracket ; B 15 -2358 386 40 ;
+C 124 ; WX 694 ; N hugerrbracket ; B 11 -2958 417 40 ;
+C 125 ; WX 778 ; N Hugerrbrackettop ; B 8 -1771 449 38 ;
+C 126 ; WX 778 ; N Hugerrbracketbot ; B 8 -1758 449 51 ;
+C 127 ; WX 778 ; N Hugerrbracketex ; B 184 -602 449 13 ;
+C 0 ; WX 778 ; N shortleftarrow ; B 55 72 720 428 ;
+EndCharMetrics
+EndFontMetrics
diff --git a/fonts/stmaryrd/ps-type1/hoekwater/afm/stmary5.afm b/fonts/stmaryrd/ps-type1/hoekwater/afm/stmary5.afm
new file mode 100644
index 0000000000..3c2cc2b02d
--- /dev/null
+++ b/fonts/stmaryrd/ps-type1/hoekwater/afm/stmary5.afm
@@ -0,0 +1,152 @@
+StartFontMetrics 2.0
+Comment Copyright Conversion of metafont curves by Metafog (c) 1995 Richard Kinch
+Comment Panose 5 1 5 0 2 0 0 2 0 3
+FullName stmary5
+FontName stmary5
+FamilyName stmary5
+Weight Roman
+Notice Copyright (c) Taco Hoekwater, 1998. All rights reserved.
+Version 001.000
+IsFixedPitch false
+ItalicAngle 0.00
+FontBBox -104 -2940 1371 927
+Ascender 700
+Descender -200
+XHeight 431
+CapHeight 700
+UnderlinePosition -100
+UnderlineThickness 50
+StdHW 56
+StdVW 56
+EncodingScheme AdobeStandardEncoding
+StartCharMetrics 128
+C 1 ; WX 1083 ; N shortrightarrow ; B 124 67 955 434 ;
+C 2 ; WX 736 ; N shortuparrow ; B 142 -167 590 666 ;
+C 3 ; WX 736 ; N shortdownarrow ; B 142 -167 590 667 ;
+C 4 ; WX 806 ; N Yup ; B 125 -28 677 598 ;
+C 5 ; WX 806 ; N Ydown ; B 125 -98 677 528 ;
+C 6 ; WX 875 ; N Yleft ; B 125 -28 746 528 ;
+C 7 ; WX 875 ; N Yright ; B 125 -28 746 528 ;
+C 8 ; WX 944 ; N varcurlyvee ; B 56 -217 885 694 ;
+C 9 ; WX 944 ; N varcurlywedge ; B 56 -217 885 694 ;
+C 10 ; WX 1083 ; N minuso ; B 125 -28 955 528 ;
+C 11 ; WX 806 ; N baro ; B 125 -167 677 667 ;
+C 12 ; WX 944 ; N sslash ; B 125 -250 816 750 ;
+C 13 ; WX 944 ; N bbslash ; B 125 -250 816 750 ;
+C 14 ; WX 1083 ; N moo ; B 194 -22 885 522 ;
+C 15 ; WX 1083 ; N varotimes ; B 125 -165 955 665 ;
+C 16 ; WX 1083 ; N varoast ; B 125 -165 955 665 ;
+C 17 ; WX 1083 ; N varobar ; B 125 -165 955 665 ;
+C 18 ; WX 1083 ; N varodot ; B 125 -165 955 665 ;
+C 19 ; WX 1083 ; N varoslash ; B 125 -165 955 665 ;
+C 20 ; WX 1083 ; N varobslash ; B 125 -165 955 665 ;
+C 21 ; WX 1083 ; N varocircle ; B 125 -165 955 665 ;
+C 22 ; WX 1083 ; N varoplus ; B 125 -165 955 665 ;
+C 23 ; WX 1083 ; N varominus ; B 125 -165 955 665 ;
+C 24 ; WX 1083 ; N boxast ; B 159 -130 920 630 ;
+C 25 ; WX 1083 ; N boxbar ; B 159 -130 920 630 ;
+C 26 ; WX 1083 ; N boxdot ; B 159 -130 920 630 ;
+C 27 ; WX 1083 ; N boxslash ; B 159 -130 920 630 ;
+C 28 ; WX 1083 ; N boxbslash ; B 159 -130 920 630 ;
+C 29 ; WX 1083 ; N boxcircle ; B 159 -130 920 630 ;
+C 30 ; WX 1083 ; N boxbox ; B 159 -130 920 630 ;
+C 31 ; WX 1083 ; N boxempty ; B 159 -130 920 630 ;
+C 32 ; WX 875 ; N lightning ; B 180 -194 558 694 ;
+C 33 ; WX 1222 ; N merge ; B 132 0 1086 745 ;
+C 34 ; WX 806 ; N vartimes ; B 125 0 677 695 ;
+C 35 ; WX 528 ; N fatsemi ; B 124 -194 399 562 ;
+C 36 ; WX 875 ; N ssearrow ; B 180 -194 747 695 ;
+C 37 ; WX 875 ; N curlywedgeuparrow ; B 124 -194 691 695 ;
+C 38 ; WX 944 ; N sswarrow ; B 56 -194 885 705 ;
+C 39 ; WX 944 ; N curlywedgedownarrow ; B 56 -260 885 717 ;
+C 40 ; WX 1014 ; N fatslash ; B 405 -250 1166 750 ;
+C 41 ; WX 1014 ; N fatbslash ; B 125 -250 885 750 ;
+C 42 ; WX 667 ; N lbag ; B 125 -250 538 750 ;
+C 43 ; WX 667 ; N rbag ; B 124 -250 538 750 ;
+C 44 ; WX 1361 ; N varbigcirc ; B 125 -304 1232 804 ;
+C 45 ; WX 1083 ; N leftrightarroweq ; B 108 102 972 554 ;
+C 46 ; WX 944 ; N curlyveedownarrow ; B 56 -205 885 694 ;
+C 47 ; WX 944 ; N curlyveeuparrow ; B 56 -217 885 760 ;
+C 48 ; WX 875 ; N nnwarrow ; B 180 -195 747 694 ;
+C 49 ; WX 875 ; N nnearrow ; B 124 -195 691 694 ;
+C 50 ; WX 1083 ; N leftslice ; B 125 -52 955 552 ;
+C 51 ; WX 1083 ; N rightslice ; B 125 -52 954 552 ;
+C 52 ; WX 1083 ; N varolessthan ; B 126 -165 955 665 ;
+C 53 ; WX 1083 ; N varogreaterthan ; B 125 -165 955 665 ;
+C 54 ; WX 1083 ; N varovee ; B 125 -164 954 665 ;
+C 55 ; WX 1083 ; N varowedge ; B 125 -165 954 664 ;
+C 56 ; WX 736 ; N talloblong ; B 217 -250 515 750 ;
+C 57 ; WX 979 ; N interleave ; B 219 -250 757 750 ;
+C 58 ; WX 1083 ; N obar ; B 125 -167 955 666 ;
+C 59 ; WX 1083 ; N obslash ; B 125 -167 955 667 ;
+C 60 ; WX 1083 ; N olessthan ; B 125 -167 955 667 ;
+C 61 ; WX 1083 ; N ogreaterthan ; B 125 -167 955 667 ;
+C 62 ; WX 1083 ; N ovee ; B 125 -167 955 667 ;
+C 63 ; WX 1083 ; N owedge ; B 125 -167 955 667 ;
+C 64 ; WX 944 ; N oblong ; B 132 0 809 606 ;
+C 65 ; WX 944 ; N inplus ; B 161 -103 781 603 ;
+C 66 ; WX 944 ; N niplus ; B 159 -103 780 603 ;
+C 67 ; WX 944 ; N nplus ; B 125 -22 816 606 ;
+C 68 ; WX 1083 ; N subsetplus ; B 160 -103 920 603 ;
+C 69 ; WX 1083 ; N supsetplus ; B 159 -103 920 603 ;
+C 70 ; WX 1083 ; N subsetpluseq ; B 160 -228 920 719 ;
+C 71 ; WX 1083 ; N supsetpluseq ; B 159 -228 920 719 ;
+C 72 ; WX 667 ; N Lbag ; B 124 -250 538 750 ;
+C 73 ; WX 667 ; N Rbag ; B 124 -250 538 750 ;
+C 74 ; WX 615 ; N llbracket ; B 196 -250 529 750 ;
+C 75 ; WX 615 ; N rrbracket ; B 84 -250 415 750 ;
+C 76 ; WX 597 ; N llparenthesis ; B 177 -250 469 750 ;
+C 77 ; WX 597 ; N rrparenthesis ; B 124 -250 417 750 ;
+C 78 ; WX 1083 ; N binampersand ; B 125 -165 954 665 ;
+C 79 ; WX 1083 ; N bindnasrepma ; B 125 -165 955 665 ;
+C 80 ; WX 1083 ; N trianglelefteqslant ; B 159 -228 920 719 ;
+C 81 ; WX 1083 ; N trianglerighteqslant ; B 159 -228 920 719 ;
+C 82 ; WX 1083 ; N ntrianglelefteqslant ; B 159 -427 920 927 ;
+C 83 ; WX 1083 ; N ntrianglerighteqslant ; B 159 -427 920 927 ;
+C 84 ; WX 806 ; N llfloor ; B 208 -250 746 750 ;
+C 85 ; WX 806 ; N rrfloor ; B 56 -250 593 750 ;
+C 86 ; WX 806 ; N llceil ; B 208 -250 746 750 ;
+C 87 ; WX 806 ; N rrceil ; B 56 -250 593 750 ;
+C 88 ; WX 0 ; N arrownot ; B 512 55 845 445 ;
+C 89 ; WX 0 ; N Arrownot ; B 547 -65 811 565 ;
+C 90 ; WX 0 ; N Mapstochar ; B 125 -65 216 565 ;
+C 91 ; WX 0 ; N mapsfromchar ; B -104 55 -14 445 ;
+C 92 ; WX 0 ; N Mapsfromchar ; B -104 -65 -14 565 ;
+C 93 ; WX 1361 ; N leftrightarrowtriangle ; B 125 41 1232 459 ;
+C 94 ; WX 1361 ; N leftarrowtriangle ; B 125 41 1232 459 ;
+C 95 ; WX 1361 ; N rightarrowtriangle ; B 125 41 1232 459 ;
+C 96 ; WX 1153 ; N bigtriangledown ; B 125 -1000 1024 0 ;
+C 97 ; WX 1153 ; N bigtriangleup ; B 125 -1000 1024 0 ;
+C 98 ; WX 1153 ; N bigcurlyvee ; B 125 -1000 1024 0 ;
+C 99 ; WX 1153 ; N bigcurlywedge ; B 125 -1000 1024 0 ;
+C 100 ; WX 1153 ; N bigsqcap ; B 125 -1000 1024 0 ;
+C 101 ; WX 1153 ; N bigbox ; B 125 -1000 1024 0 ;
+C 102 ; WX 667 ; N bigparallel ; B 125 -1000 538 0 ;
+C 103 ; WX 875 ; N biginterleave ; B 125 -1000 832 0 ;
+C 104 ; WX 1500 ; N hugetriangledown ; B 125 -1400 1371 0 ;
+C 105 ; WX 1500 ; N hugetriangleup ; B 125 -1400 1371 0 ;
+C 106 ; WX 1500 ; N hugecurlyvee ; B 125 -1400 1371 0 ;
+C 107 ; WX 1500 ; N hugecurlywedge ; B 125 -1400 1371 0 ;
+C 108 ; WX 1500 ; N hugesqcap ; B 125 -1400 1371 0 ;
+C 109 ; WX 1500 ; N hugebox ; B 125 -1400 1371 0 ;
+C 110 ; WX 806 ; N hugeparallel ; B 125 -1400 677 0 ;
+C 111 ; WX 1153 ; N hugeinterleave ; B 125 -1400 1121 0 ;
+C 112 ; WX 1153 ; N hugenplus ; B 125 -1000 1024 0 ;
+C 113 ; WX 771 ; N largellbracket ; B 304 -1140 688 56 ;
+C 114 ; WX 840 ; N Largellbracket ; B 335 -1740 761 56 ;
+C 115 ; WX 910 ; N LARGEllbracket ; B 366 -2340 834 56 ;
+C 116 ; WX 979 ; N hugellbracket ; B 397 -2940 907 56 ;
+C 117 ; WX 1083 ; N Hugellbrackettop ; B 463 -1761 1015 52 ;
+C 118 ; WX 1083 ; N Hugellbracketbot ; B 463 -1740 1015 73 ;
+C 119 ; WX 1083 ; N Hugellbracketex ; B 463 -604 795 21 ;
+C 120 ; WX 1500 ; N Hugenplus ; B 125 -1400 1371 0 ;
+C 121 ; WX 771 ; N largerrbracket ; B 79 -1140 463 56 ;
+C 122 ; WX 840 ; N Largerrbracket ; B 75 -1740 502 56 ;
+C 123 ; WX 910 ; N LARGErrbracket ; B 72 -2340 539 56 ;
+C 124 ; WX 979 ; N hugerrbracket ; B 68 -2940 578 56 ;
+C 125 ; WX 1083 ; N Hugerrbrackettop ; B 64 -1761 616 52 ;
+C 126 ; WX 1083 ; N Hugerrbracketbot ; B 64 -1740 616 73 ;
+C 127 ; WX 1083 ; N Hugerrbracketex ; B 284 -604 616 21 ;
+C 0 ; WX 1083 ; N shortleftarrow ; B 125 67 955 433 ;
+EndCharMetrics
+EndFontMetrics
diff --git a/fonts/stmaryrd/ps-type1/hoekwater/afm/stmary6.afm b/fonts/stmaryrd/ps-type1/hoekwater/afm/stmary6.afm
new file mode 100644
index 0000000000..88ae6cdba4
--- /dev/null
+++ b/fonts/stmaryrd/ps-type1/hoekwater/afm/stmary6.afm
@@ -0,0 +1,146 @@
+StartFontMetrics 4.0
+Comment Copyright 1995, Richard J. Kinch
+FontName stmary6
+FullName stmary6
+FamilyName stmary6
+Comment UniqueID 0
+FontBBox -123 -2945 1256 897
+Notice Copyright 1995, Richard J. Kinch
+EncodingScheme FontSpecific
+XHeight 431
+ItalicAngle 0
+StartCharMetrics 128
+C 0 ; WX 963 ; N shortleftarrow ; B 92 68 867 432 ;
+C 1 ; WX 963 ; N shortrightarrow ; B 92 68 867 432 ;
+C 2 ; WX 639 ; N shortuparrow ; B 109 -139 526 639 ;
+C 3 ; WX 639 ; N shortdownarrow ; B 109 -139 526 639 ;
+C 4 ; WX 704 ; N Yup ; B 92 -10 608 574 ;
+C 5 ; WX 704 ; N Ydown ; B 92 -74 608 510 ;
+C 6 ; WX 769 ; N Yleft ; B 92 -10 673 510 ;
+C 7 ; WX 769 ; N Yright ; B 92 -10 673 510 ;
+C 8 ; WX 833 ; N varcurlyvee ; B 28 -215 802 694 ;
+C 9 ; WX 833 ; N varcurlywedge ; B 28 -215 802 694 ;
+C 10 ; WX 963 ; N minuso ; B 92 -9 867 509 ;
+C 11 ; WX 704 ; N baro ; B 92 -139 608 639 ;
+C 12 ; WX 833 ; N sslash ; B 92 -250 738 750 ;
+C 13 ; WX 833 ; N bbslash ; B 92 -250 738 750 ;
+C 14 ; WX 963 ; N moo ; B 157 -21 803 521 ;
+C 15 ; WX 963 ; N varotimes ; B 92 -137 867 637 ;
+C 16 ; WX 963 ; N varoast ; B 92 -137 867 637 ;
+C 17 ; WX 963 ; N varobar ; B 92 -137 867 637 ;
+C 18 ; WX 963 ; N varodot ; B 92 -137 867 637 ;
+C 19 ; WX 963 ; N varoslash ; B 92 -137 867 637 ;
+C 20 ; WX 963 ; N varobslash ; B 92 -137 867 637 ;
+C 21 ; WX 963 ; N varocircle ; B 92 -137 867 637 ;
+C 22 ; WX 963 ; N varoplus ; B 92 -137 867 637 ;
+C 23 ; WX 963 ; N varominus ; B 92 -137 867 637 ;
+C 24 ; WX 963 ; N boxast ; B 125 -105 835 605 ;
+C 25 ; WX 963 ; N boxbar ; B 125 -105 835 605 ;
+C 26 ; WX 963 ; N boxdot ; B 125 -105 835 605 ;
+C 27 ; WX 963 ; N boxslash ; B 125 -105 835 605 ;
+C 28 ; WX 963 ; N boxbslash ; B 125 -105 835 605 ;
+C 29 ; WX 963 ; N boxcircle ; B 125 -105 835 605 ;
+C 30 ; WX 963 ; N boxbox ; B 125 -105 835 605 ;
+C 31 ; WX 963 ; N boxempty ; B 125 -105 835 605 ;
+C 32 ; WX 333 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 1093 ; N merge ; B 99 0 990 742 ;
+C 34 ; WX 704 ; N vartimes ; B 92 0 608 694 ;
+C 35 ; WX 444 ; N fatsemi ; B 92 -194 349 563 ;
+C 36 ; WX 769 ; N ssearrow ; B 135 -194 673 695 ;
+C 37 ; WX 769 ; N curlywedgeuparrow ; B 92 -194 630 695 ;
+C 38 ; WX 833 ; N sswarrow ; B 28 -194 802 704 ;
+C 39 ; WX 833 ; N curlywedgedownarrow ; B 28 -249 802 715 ;
+C 40 ; WX 898 ; N fatslash ; B 354 -250 1064 750 ;
+C 41 ; WX 898 ; N fatbslash ; B 92 -250 802 750 ;
+C 42 ; WX 574 ; N lbag ; B 92 -250 479 750 ;
+C 43 ; WX 574 ; N rbag ; B 92 -250 479 750 ;
+C 44 ; WX 1222 ; N varbigcirc ; B 92 -267 1126 767 ;
+C 45 ; WX 963 ; N leftrightarroweq ; B 76 106 883 549 ;
+C 46 ; WX 833 ; N curlyveedownarrow ; B 28 -204 802 694 ;
+C 47 ; WX 833 ; N curlyveeuparrow ; B 28 -215 802 749 ;
+C 48 ; WX 769 ; N nnwarrow ; B 135 -195 673 694 ;
+C 49 ; WX 769 ; N nnearrow ; B 92 -195 630 694 ;
+C 50 ; WX 963 ; N leftslice ; B 92 -32 867 532 ;
+C 51 ; WX 963 ; N rightslice ; B 92 -32 867 532 ;
+C 52 ; WX 963 ; N varolessthan ; B 92 -137 867 637 ;
+C 53 ; WX 963 ; N varogreaterthan ; B 92 -137 867 637 ;
+C 54 ; WX 963 ; N varovee ; B 92 -137 867 637 ;
+C 55 ; WX 963 ; N varowedge ; B 92 -137 867 637 ;
+C 56 ; WX 639 ; N talloblong ; B 174 -250 462 750 ;
+C 57 ; WX 866 ; N interleave ; B 170 -250 692 750 ;
+C 58 ; WX 963 ; N obar ; B 92 -139 867 639 ;
+C 59 ; WX 963 ; N obslash ; B 92 -139 867 639 ;
+C 60 ; WX 963 ; N olessthan ; B 92 -139 867 639 ;
+C 61 ; WX 963 ; N ogreaterthan ; B 92 -139 867 639 ;
+C 62 ; WX 963 ; N ovee ; B 92 -139 867 639 ;
+C 63 ; WX 963 ; N owedge ; B 92 -139 867 639 ;
+C 64 ; WX 833 ; N oblong ; B 99 0 731 603 ;
+C 65 ; WX 833 ; N inplus ; B 125 -91 705 591 ;
+C 66 ; WX 833 ; N niplus ; B 125 -91 705 591 ;
+C 67 ; WX 833 ; N nplus ; B 92 -21 738 603 ;
+C 68 ; WX 963 ; N subsetplus ; B 125 -91 835 591 ;
+C 69 ; WX 963 ; N supsetplus ; B 125 -91 835 591 ;
+C 70 ; WX 963 ; N subsetpluseq ; B 125 -215 835 702 ;
+C 71 ; WX 963 ; N supsetpluseq ; B 125 -215 835 702 ;
+C 72 ; WX 574 ; N Lbag ; B 92 -250 479 750 ;
+C 73 ; WX 574 ; N Rbag ; B 92 -250 479 750 ;
+C 74 ; WX 525 ; N llbracket ; B 159 -250 470 750 ;
+C 75 ; WX 525 ; N rrbracket ; B 55 -250 364 750 ;
+C 76 ; WX 509 ; N llparenthesis ; B 140 -250 414 750 ;
+C 77 ; WX 509 ; N rrparenthesis ; B 92 -250 366 750 ;
+C 78 ; WX 963 ; N binampersand ; B 92 -137 867 637 ;
+C 79 ; WX 963 ; N bindnasrepma ; B 92 -137 867 637 ;
+C 80 ; WX 963 ; N trianglelefteqslant ; B 125 -215 835 702 ;
+C 81 ; WX 963 ; N trianglerighteqslant ; B 125 -215 835 702 ;
+C 82 ; WX 963 ; N ntrianglelefteqslant ; B 125 -397 835 897 ;
+C 83 ; WX 963 ; N ntrianglerighteqslant ; B 125 -397 835 897 ;
+C 84 ; WX 704 ; N llfloor ; B 151 -250 673 750 ;
+C 85 ; WX 704 ; N rrfloor ; B 28 -250 550 750 ;
+C 86 ; WX 704 ; N llceil ; B 151 -250 673 750 ;
+C 87 ; WX 704 ; N rrceil ; B 28 -250 550 750 ;
+C 88 ; WX 0 ; N arrownot ; B 453 57 765 443 ;
+C 89 ; WX 0 ; N Arrownot ; B 486 -61 733 561 ;
+C 90 ; WX 0 ; N Mapstochar ; B 92 -61 178 561 ;
+C 91 ; WX 0 ; N mapsfromchar ; B -123 57 -37 443 ;
+C 92 ; WX 0 ; N Mapsfromchar ; B -123 -61 -37 561 ;
+C 93 ; WX 1222 ; N leftrightarrowtriangle ; B 92 55 1126 445 ;
+C 94 ; WX 1222 ; N leftarrowtriangle ; B 92 55 1126 445 ;
+C 95 ; WX 1222 ; N rightarrowtriangle ; B 92 55 1126 445 ;
+C 96 ; WX 1028 ; N bigtriangledown ; B 92 -1000 932 0 ;
+C 97 ; WX 1028 ; N bigtriangleup ; B 92 -1000 932 0 ;
+C 98 ; WX 1028 ; N bigcurlyvee ; B 92 -1000 932 0 ;
+C 99 ; WX 1028 ; N bigcurlywedge ; B 92 -1000 932 0 ;
+C 100 ; WX 1028 ; N bigsqcap ; B 92 -1000 932 0 ;
+C 101 ; WX 1028 ; N bigbox ; B 92 -1000 932 0 ;
+C 102 ; WX 574 ; N bigparallel ; B 92 -1000 479 0 ;
+C 103 ; WX 769 ; N biginterleave ; B 93 -1000 754 0 ;
+C 104 ; WX 1352 ; N hugetriangledown ; B 92 -1400 1256 0 ;
+C 105 ; WX 1352 ; N hugetriangleup ; B 92 -1400 1256 0 ;
+C 106 ; WX 1352 ; N hugecurlyvee ; B 92 -1400 1256 0 ;
+C 107 ; WX 1352 ; N hugecurlywedge ; B 92 -1400 1256 0 ;
+C 108 ; WX 1352 ; N hugesqcap ; B 92 -1400 1256 0 ;
+C 109 ; WX 1352 ; N hugebox ; B 92 -1400 1256 0 ;
+C 110 ; WX 704 ; N hugeparallel ; B 92 -1400 608 0 ;
+C 111 ; WX 1028 ; N hugeinterleave ; B 93 -1400 1024 0 ;
+C 112 ; WX 1028 ; N hugenplus ; B 92 -1000 932 0 ;
+C 113 ; WX 671 ; N largellbracket ; B 259 -1145 619 52 ;
+C 114 ; WX 736 ; N Largellbracket ; B 288 -1745 687 52 ;
+C 115 ; WX 801 ; N LARGEllbracket ; B 317 -2345 755 52 ;
+C 116 ; WX 866 ; N hugellbracket ; B 346 -2945 823 52 ;
+C 117 ; WX 963 ; N Hugellbrackettop ; B 408 -1763 924 48 ;
+C 118 ; WX 963 ; N Hugellbracketbot ; B 408 -1745 924 67 ;
+C 119 ; WX 963 ; N Hugellbracketex ; B 408 -603 719 18 ;
+C 120 ; WX 1352 ; N Hugenplus ; B 92 -1400 1256 0 ;
+C 121 ; WX 671 ; N largerrbracket ; B 49 -1145 409 52 ;
+C 122 ; WX 736 ; N Largerrbracket ; B 46 -1745 445 52 ;
+C 123 ; WX 801 ; N LARGErrbracket ; B 42 -2345 480 52 ;
+C 124 ; WX 866 ; N hugerrbracket ; B 39 -2945 516 52 ;
+C 125 ; WX 963 ; N Hugerrbrackettop ; B 36 -1763 552 48 ;
+C 126 ; WX 963 ; N Hugerrbracketbot ; B 36 -1745 552 67 ;
+C 127 ; WX 963 ; N Hugerrbracketex ; B 241 -603 552 18 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 0
+EndKernPairs
+EndKernData
+EndFontMetrics
diff --git a/fonts/stmaryrd/ps-type1/hoekwater/afm/stmary7.afm b/fonts/stmaryrd/ps-type1/hoekwater/afm/stmary7.afm
new file mode 100644
index 0000000000..89ea0758f5
--- /dev/null
+++ b/fonts/stmaryrd/ps-type1/hoekwater/afm/stmary7.afm
@@ -0,0 +1,152 @@
+StartFontMetrics 2.0
+Comment Copyright Conversion of metafont curves by Metafog (c) 1995 Richard Kinch
+Comment Panose 5 1 5 0 2 0 0 2 0 3
+FullName stmary7
+FontName stmary7
+FamilyName stmary7
+Weight Roman
+Notice Copyright (c) Taco Hoekwater, 1998. All rights reserved.
+Version 001.000
+IsFixedPitch false
+ItalicAngle 0.00
+FontBBox -125 -2949 1182 870
+Ascender 700
+Descender -200
+XHeight 431
+CapHeight 700
+UnderlinePosition -100
+UnderlineThickness 50
+StdHW 49
+StdVW 49
+EncodingScheme AdobeStandardEncoding
+StartCharMetrics 128
+C 1 ; WX 893 ; N shortrightarrow ; B 77 69 813 431 ;
+C 2 ; WX 585 ; N shortuparrow ; B 94 -119 489 619 ;
+C 3 ; WX 585 ; N shortdownarrow ; B 94 -119 489 619 ;
+C 4 ; WX 647 ; N Yup ; B 77 3 567 558 ;
+C 5 ; WX 647 ; N Ydown ; B 77 -58 567 496 ;
+C 6 ; WX 708 ; N Yleft ; B 77 3 628 496 ;
+C 7 ; WX 708 ; N Yright ; B 77 3 628 496 ;
+C 8 ; WX 770 ; N varcurlyvee ; B 16 -214 751 695 ;
+C 9 ; WX 770 ; N varcurlywedge ; B 16 -214 751 694 ;
+C 10 ; WX 893 ; N minuso ; B 77 4 813 496 ;
+C 11 ; WX 647 ; N baro ; B 77 -119 567 619 ;
+C 12 ; WX 770 ; N sslash ; B 77 -250 690 750 ;
+C 13 ; WX 770 ; N bbslash ; B 77 -250 690 750 ;
+C 14 ; WX 893 ; N moo ; B 138 -20 752 520 ;
+C 15 ; WX 893 ; N varotimes ; B 77 -118 813 618 ;
+C 16 ; WX 893 ; N varoast ; B 77 -118 813 618 ;
+C 17 ; WX 893 ; N varobar ; B 77 -118 813 618 ;
+C 18 ; WX 893 ; N varodot ; B 77 -118 813 618 ;
+C 19 ; WX 893 ; N varoslash ; B 77 -118 813 618 ;
+C 20 ; WX 893 ; N varobslash ; B 77 -118 813 618 ;
+C 21 ; WX 893 ; N varocircle ; B 77 -118 813 618 ;
+C 22 ; WX 893 ; N varoplus ; B 77 -118 813 618 ;
+C 23 ; WX 893 ; N varominus ; B 77 -118 813 618 ;
+C 24 ; WX 893 ; N boxast ; B 108 -87 782 587 ;
+C 25 ; WX 893 ; N boxbar ; B 108 -87 782 587 ;
+C 26 ; WX 893 ; N boxdot ; B 108 -87 782 587 ;
+C 27 ; WX 893 ; N boxslash ; B 108 -87 782 587 ;
+C 28 ; WX 893 ; N boxbslash ; B 108 -87 782 587 ;
+C 29 ; WX 893 ; N boxcircle ; B 108 -87 782 587 ;
+C 30 ; WX 893 ; N boxbox ; B 108 -87 782 587 ;
+C 31 ; WX 893 ; N boxempty ; B 108 -87 782 587 ;
+C 32 ; WX 708 ; N lightning ; B 112 -194 462 694 ;
+C 33 ; WX 1016 ; N merge ; B 83 0 930 738 ;
+C 34 ; WX 647 ; N vartimes ; B 77 0 567 695 ;
+C 35 ; WX 401 ; N fatsemi ; B 77 -195 321 563 ;
+C 36 ; WX 708 ; N ssearrow ; B 112 -194 629 695 ;
+C 37 ; WX 708 ; N curlywedgeuparrow ; B 77 -194 594 695 ;
+C 38 ; WX 770 ; N sswarrow ; B 16 -195 751 704 ;
+C 39 ; WX 770 ; N curlywedgedownarrow ; B 16 -240 751 714 ;
+C 40 ; WX 831 ; N fatslash ; B 325 -250 1000 750 ;
+C 41 ; WX 831 ; N fatbslash ; B 77 -250 751 750 ;
+C 42 ; WX 524 ; N lbag ; B 77 -250 444 750 ;
+C 43 ; WX 524 ; N rbag ; B 77 -250 444 750 ;
+C 44 ; WX 1139 ; N varbigcirc ; B 77 -241 1059 741 ;
+C 45 ; WX 893 ; N leftrightarroweq ; B 62 114 828 542 ;
+C 46 ; WX 770 ; N curlyveedownarrow ; B 16 -204 751 695 ;
+C 47 ; WX 770 ; N curlyveeuparrow ; B 16 -214 751 740 ;
+C 48 ; WX 708 ; N nnwarrow ; B 112 -195 629 694 ;
+C 49 ; WX 708 ; N nnearrow ; B 77 -195 594 694 ;
+C 50 ; WX 893 ; N leftslice ; B 77 -17 813 517 ;
+C 51 ; WX 893 ; N rightslice ; B 77 -17 813 517 ;
+C 52 ; WX 893 ; N varolessthan ; B 77 -118 813 618 ;
+C 53 ; WX 893 ; N varogreaterthan ; B 77 -118 813 618 ;
+C 54 ; WX 893 ; N varovee ; B 77 -118 813 618 ;
+C 55 ; WX 893 ; N varowedge ; B 77 -118 813 618 ;
+C 56 ; WX 585 ; N talloblong ; B 155 -250 428 750 ;
+C 57 ; WX 801 ; N interleave ; B 151 -250 647 750 ;
+C 58 ; WX 893 ; N obar ; B 77 -119 813 619 ;
+C 59 ; WX 893 ; N obslash ; B 77 -119 813 619 ;
+C 60 ; WX 893 ; N olessthan ; B 77 -119 813 619 ;
+C 61 ; WX 893 ; N ogreaterthan ; B 77 -119 813 619 ;
+C 62 ; WX 893 ; N ovee ; B 77 -119 813 619 ;
+C 63 ; WX 893 ; N owedge ; B 77 -119 813 619 ;
+C 64 ; WX 770 ; N oblong ; B 83 0 684 600 ;
+C 65 ; WX 770 ; N inplus ; B 108 -78 659 578 ;
+C 66 ; WX 770 ; N niplus ; B 108 -78 659 578 ;
+C 67 ; WX 770 ; N nplus ; B 77 -20 690 600 ;
+C 68 ; WX 893 ; N subsetplus ; B 108 -78 782 578 ;
+C 69 ; WX 893 ; N supsetplus ; B 108 -78 782 578 ;
+C 70 ; WX 893 ; N subsetpluseq ; B 108 -195 782 685 ;
+C 71 ; WX 893 ; N supsetpluseq ; B 108 -195 782 685 ;
+C 72 ; WX 524 ; N Lbag ; B 77 -250 444 750 ;
+C 73 ; WX 524 ; N Rbag ; B 77 -250 444 750 ;
+C 74 ; WX 478 ; N llbracket ; B 141 -250 435 750 ;
+C 75 ; WX 478 ; N rrbracket ; B 42 -250 334 750 ;
+C 76 ; WX 462 ; N llparenthesis ; B 124 -250 382 750 ;
+C 77 ; WX 462 ; N rrparenthesis ; B 77 -250 335 750 ;
+C 78 ; WX 893 ; N binampersand ; B 77 -118 813 618 ;
+C 79 ; WX 893 ; N bindnasrepma ; B 77 -118 813 618 ;
+C 80 ; WX 893 ; N trianglelefteqslant ; B 107 -196 783 685 ;
+C 81 ; WX 893 ; N trianglerighteqslant ; B 107 -196 783 685 ;
+C 82 ; WX 893 ; N ntrianglelefteqslant ; B 107 -370 783 870 ;
+C 83 ; WX 893 ; N ntrianglerighteqslant ; B 107 -370 783 870 ;
+C 84 ; WX 647 ; N llfloor ; B 132 -250 628 750 ;
+C 85 ; WX 647 ; N rrfloor ; B 16 -250 512 750 ;
+C 86 ; WX 647 ; N llceil ; B 132 -250 628 750 ;
+C 87 ; WX 647 ; N rrceil ; B 16 -250 512 750 ;
+C 88 ; WX 0 ; N arrownot ; B 421 59 715 441 ;
+C 89 ; WX 0 ; N Arrownot ; B 452 -53 684 553 ;
+C 90 ; WX 0 ; N Mapstochar ; B 77 -53 157 553 ;
+C 91 ; WX 0 ; N mapsfromchar ; B -125 59 -45 441 ;
+C 92 ; WX 0 ; N Mapsfromchar ; B -125 -53 -45 553 ;
+C 93 ; WX 1139 ; N leftrightarrowtriangle ; B 77 65 1059 435 ;
+C 94 ; WX 1139 ; N leftarrowtriangle ; B 77 65 1059 435 ;
+C 95 ; WX 1139 ; N rightarrowtriangle ; B 77 65 1059 435 ;
+C 96 ; WX 954 ; N bigtriangledown ; B 77 -1000 874 0 ;
+C 97 ; WX 954 ; N bigtriangleup ; B 77 -1000 874 0 ;
+C 98 ; WX 954 ; N bigcurlyvee ; B 77 -1000 874 0 ;
+C 99 ; WX 954 ; N bigcurlywedge ; B 77 -1000 874 0 ;
+C 100 ; WX 954 ; N bigsqcap ; B 78 -1000 874 0 ;
+C 101 ; WX 954 ; N bigbox ; B 78 -1000 874 0 ;
+C 102 ; WX 524 ; N bigparallel ; B 77 -1000 444 0 ;
+C 103 ; WX 708 ; N biginterleave ; B 78 -1000 705 0 ;
+C 104 ; WX 1262 ; N hugetriangledown ; B 77 -1400 1182 0 ;
+C 105 ; WX 1262 ; N hugetriangleup ; B 77 -1400 1182 0 ;
+C 106 ; WX 1262 ; N hugecurlyvee ; B 77 -1400 1182 0 ;
+C 107 ; WX 1262 ; N hugecurlywedge ; B 77 -1400 1182 0 ;
+C 108 ; WX 1262 ; N hugesqcap ; B 78 -1400 1182 0 ;
+C 109 ; WX 1262 ; N hugebox ; B 78 -1400 1182 0 ;
+C 110 ; WX 647 ; N hugeparallel ; B 77 -1400 567 0 ;
+C 111 ; WX 954 ; N hugeinterleave ; B 78 -1400 963 0 ;
+C 112 ; WX 954 ; N hugenplus ; B 78 -1000 874 0 ;
+C 113 ; WX 616 ; N largellbracket ; B 237 -1149 576 49 ;
+C 114 ; WX 678 ; N Largellbracket ; B 264 -1749 641 49 ;
+C 115 ; WX 739 ; N LARGEllbracket ; B 291 -2349 706 49 ;
+C 116 ; WX 801 ; N hugellbracket ; B 318 -2949 771 49 ;
+C 117 ; WX 893 ; N Hugellbrackettop ; B 376 -1765 867 46 ;
+C 118 ; WX 893 ; N Hugellbracketbot ; B 376 -1749 867 62 ;
+C 119 ; WX 893 ; N Hugellbracketex ; B 376 -603 673 17 ;
+C 120 ; WX 1262 ; N Hugenplus ; B 78 -1400 1182 0 ;
+C 121 ; WX 616 ; N largerrbracket ; B 37 -1149 377 49 ;
+C 122 ; WX 678 ; N Largerrbracket ; B 34 -1749 411 49 ;
+C 123 ; WX 739 ; N LARGErrbracket ; B 30 -2349 445 49 ;
+C 124 ; WX 801 ; N hugerrbracket ; B 27 -2949 479 49 ;
+C 125 ; WX 893 ; N Hugerrbrackettop ; B 23 -1765 514 46 ;
+C 126 ; WX 893 ; N Hugerrbracketbot ; B 23 -1749 514 62 ;
+C 127 ; WX 893 ; N Hugerrbracketex ; B 217 -603 514 17 ;
+C 0 ; WX 893 ; N shortleftarrow ; B 77 69 813 431 ;
+EndCharMetrics
+EndFontMetrics
diff --git a/fonts/stmaryrd/ps-type1/hoekwater/afm/stmary8.afm b/fonts/stmaryrd/ps-type1/hoekwater/afm/stmary8.afm
new file mode 100644
index 0000000000..9edb5e3dca
--- /dev/null
+++ b/fonts/stmaryrd/ps-type1/hoekwater/afm/stmary8.afm
@@ -0,0 +1,146 @@
+StartFontMetrics 4.0
+Comment Copyright 1995, Richard J. Kinch
+FontName stmary8
+FullName stmary8
+FamilyName stmary8
+Comment UniqueID 0
+FontBBox -133 -2953 1119 846
+Notice Copyright 1995, Richard J. Kinch
+EncodingScheme FontSpecific
+XHeight 431
+ItalicAngle 0
+StartCharMetrics 128
+C 0 ; WX 826 ; N shortleftarrow ; B 59 69 765 431 ;
+C 1 ; WX 826 ; N shortrightarrow ; B 59 69 765 431 ;
+C 2 ; WX 531 ; N shortuparrow ; B 74 -104 455 604 ;
+C 3 ; WX 531 ; N shortdownarrow ; B 74 -104 455 604 ;
+C 4 ; WX 590 ; N Yup ; B 59 14 529 545 ;
+C 5 ; WX 590 ; N Ydown ; B 59 -45 529 486 ;
+C 6 ; WX 649 ; N Yleft ; B 59 14 588 486 ;
+C 7 ; WX 649 ; N Yright ; B 59 14 588 486 ;
+C 8 ; WX 708 ; N varcurlyvee ; B 0 -215 706 694 ;
+C 9 ; WX 708 ; N varcurlywedge ; B 0 -215 706 694 ;
+C 10 ; WX 826 ; N minuso ; B 59 14 765 486 ;
+C 11 ; WX 590 ; N baro ; B 59 -104 529 604 ;
+C 12 ; WX 708 ; N sslash ; B 59 -250 647 750 ;
+C 13 ; WX 708 ; N bbslash ; B 59 -250 647 750 ;
+C 14 ; WX 826 ; N moo ; B 118 -21 706 521 ;
+C 15 ; WX 826 ; N varotimes ; B 59 -103 765 603 ;
+C 16 ; WX 826 ; N varoast ; B 59 -103 765 603 ;
+C 17 ; WX 826 ; N varobar ; B 59 -103 765 603 ;
+C 18 ; WX 826 ; N varodot ; B 59 -103 765 603 ;
+C 19 ; WX 826 ; N varoslash ; B 59 -103 765 603 ;
+C 20 ; WX 826 ; N varobslash ; B 59 -103 765 603 ;
+C 21 ; WX 826 ; N varocircle ; B 59 -103 765 603 ;
+C 22 ; WX 826 ; N varoplus ; B 59 -103 765 603 ;
+C 23 ; WX 826 ; N varominus ; B 59 -103 765 603 ;
+C 24 ; WX 826 ; N boxast ; B 88 -74 736 574 ;
+C 25 ; WX 826 ; N boxbar ; B 88 -74 736 574 ;
+C 26 ; WX 826 ; N boxdot ; B 88 -74 736 574 ;
+C 27 ; WX 826 ; N boxslash ; B 88 -74 736 574 ;
+C 28 ; WX 826 ; N boxbslash ; B 88 -74 736 574 ;
+C 29 ; WX 826 ; N boxcircle ; B 88 -74 736 574 ;
+C 30 ; WX 826 ; N boxbox ; B 88 -74 736 574 ;
+C 31 ; WX 826 ; N boxempty ; B 88 -74 736 574 ;
+C 32 ; WX 333 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 944 ; N merge ; B 65 0 877 738 ;
+C 34 ; WX 590 ; N vartimes ; B 59 0 529 694 ;
+C 35 ; WX 354 ; N fatsemi ; B 59 -194 293 563 ;
+C 36 ; WX 649 ; N ssearrow ; B 87 -194 588 695 ;
+C 37 ; WX 649 ; N curlywedgeuparrow ; B 59 -194 559 695 ;
+C 38 ; WX 708 ; N sswarrow ; B 0 -194 706 707 ;
+C 39 ; WX 708 ; N curlywedgedownarrow ; B 0 -233 706 715 ;
+C 40 ; WX 767 ; N fatslash ; B 297 -250 944 750 ;
+C 41 ; WX 767 ; N fatbslash ; B 59 -250 706 750 ;
+C 42 ; WX 472 ; N lbag ; B 59 -250 411 750 ;
+C 43 ; WX 472 ; N rbag ; B 59 -250 411 750 ;
+C 44 ; WX 1063 ; N varbigcirc ; B 59 -221 1001 721 ;
+C 45 ; WX 826 ; N leftrightarroweq ; B 44 119 780 539 ;
+C 46 ; WX 708 ; N curlyveedownarrow ; B 0 -207 706 694 ;
+C 47 ; WX 708 ; N curlyveeuparrow ; B 0 -215 706 733 ;
+C 48 ; WX 649 ; N nnwarrow ; B 87 -195 588 694 ;
+C 49 ; WX 649 ; N nnearrow ; B 59 -195 559 694 ;
+C 50 ; WX 826 ; N leftslice ; B 59 -6 765 506 ;
+C 51 ; WX 826 ; N rightslice ; B 59 -6 765 506 ;
+C 52 ; WX 826 ; N varolessthan ; B 59 -103 765 603 ;
+C 53 ; WX 826 ; N varogreaterthan ; B 59 -103 765 603 ;
+C 54 ; WX 826 ; N varovee ; B 59 -103 765 603 ;
+C 55 ; WX 826 ; N varowedge ; B 59 -103 765 603 ;
+C 56 ; WX 531 ; N talloblong ; B 134 -250 395 750 ;
+C 57 ; WX 738 ; N interleave ; B 129 -250 606 750 ;
+C 58 ; WX 826 ; N obar ; B 59 -104 765 604 ;
+C 59 ; WX 826 ; N obslash ; B 59 -104 765 604 ;
+C 60 ; WX 826 ; N olessthan ; B 59 -104 765 604 ;
+C 61 ; WX 826 ; N ogreaterthan ; B 59 -104 765 604 ;
+C 62 ; WX 826 ; N ovee ; B 59 -104 765 604 ;
+C 63 ; WX 826 ; N owedge ; B 59 -104 765 604 ;
+C 64 ; WX 708 ; N oblong ; B 65 0 641 599 ;
+C 65 ; WX 708 ; N inplus ; B 88 -64 618 564 ;
+C 66 ; WX 708 ; N niplus ; B 88 -64 618 564 ;
+C 67 ; WX 708 ; N nplus ; B 59 -21 647 599 ;
+C 68 ; WX 826 ; N subsetplus ; B 88 -64 736 564 ;
+C 69 ; WX 826 ; N supsetplus ; B 88 -64 736 564 ;
+C 70 ; WX 826 ; N subsetpluseq ; B 88 -175 736 669 ;
+C 71 ; WX 826 ; N supsetpluseq ; B 88 -175 736 669 ;
+C 72 ; WX 472 ; N Lbag ; B 59 -250 411 750 ;
+C 73 ; WX 472 ; N Rbag ; B 59 -250 411 750 ;
+C 74 ; WX 428 ; N llbracket ; B 122 -250 404 750 ;
+C 75 ; WX 428 ; N rrbracket ; B 25 -250 304 750 ;
+C 76 ; WX 413 ; N llparenthesis ; B 103 -250 352 750 ;
+C 77 ; WX 413 ; N rrparenthesis ; B 59 -250 307 750 ;
+C 78 ; WX 826 ; N binampersand ; B 59 -103 765 603 ;
+C 79 ; WX 826 ; N bindnasrepma ; B 59 -103 765 603 ;
+C 80 ; WX 826 ; N trianglelefteqslant ; B 88 -175 736 669 ;
+C 81 ; WX 826 ; N trianglerighteqslant ; B 88 -175 736 669 ;
+C 82 ; WX 826 ; N ntrianglelefteqslant ; B 88 -346 736 846 ;
+C 83 ; WX 826 ; N ntrianglerighteqslant ; B 88 -346 736 846 ;
+C 84 ; WX 590 ; N llfloor ; B 111 -250 588 750 ;
+C 85 ; WX 590 ; N rrfloor ; B 0 -250 477 750 ;
+C 86 ; WX 590 ; N llceil ; B 111 -250 588 750 ;
+C 87 ; WX 590 ; N rrceil ; B 0 -250 477 750 ;
+C 88 ; WX 0 ; N arrownot ; B 390 61 670 439 ;
+C 89 ; WX 0 ; N Arrownot ; B 419 -47 641 547 ;
+C 90 ; WX 0 ; N Mapstochar ; B 59 -47 133 547 ;
+C 91 ; WX 0 ; N mapsfromchar ; B -133 61 -59 439 ;
+C 92 ; WX 0 ; N Mapsfromchar ; B -133 -47 -59 547 ;
+C 93 ; WX 1063 ; N leftrightarrowtriangle ; B 59 73 1001 427 ;
+C 94 ; WX 1063 ; N leftarrowtriangle ; B 59 73 1001 427 ;
+C 95 ; WX 1063 ; N rightarrowtriangle ; B 59 73 1001 427 ;
+C 96 ; WX 885 ; N bigtriangledown ; B 59 -1000 824 0 ;
+C 97 ; WX 885 ; N bigtriangleup ; B 59 -1000 824 0 ;
+C 98 ; WX 885 ; N bigcurlyvee ; B 59 -1000 824 0 ;
+C 99 ; WX 885 ; N bigcurlywedge ; B 59 -1000 824 0 ;
+C 100 ; WX 885 ; N bigsqcap ; B 59 -1000 824 0 ;
+C 101 ; WX 885 ; N bigbox ; B 59 -1000 824 0 ;
+C 102 ; WX 472 ; N bigparallel ; B 59 -1000 411 0 ;
+C 103 ; WX 649 ; N biginterleave ; B 59 -1000 662 0 ;
+C 104 ; WX 1181 ; N hugetriangledown ; B 59 -1400 1119 0 ;
+C 105 ; WX 1181 ; N hugetriangleup ; B 59 -1400 1119 0 ;
+C 106 ; WX 1181 ; N hugecurlyvee ; B 59 -1400 1119 0 ;
+C 107 ; WX 1181 ; N hugecurlywedge ; B 59 -1400 1119 0 ;
+C 108 ; WX 1181 ; N hugesqcap ; B 59 -1400 1119 0 ;
+C 109 ; WX 1181 ; N hugebox ; B 59 -1400 1119 0 ;
+C 110 ; WX 590 ; N hugeparallel ; B 59 -1400 529 0 ;
+C 111 ; WX 885 ; N hugeinterleave ; B 59 -1400 911 0 ;
+C 112 ; WX 885 ; N hugenplus ; B 59 -1000 824 0 ;
+C 113 ; WX 561 ; N largellbracket ; B 213 -1153 537 45 ;
+C 114 ; WX 620 ; N Largellbracket ; B 239 -1753 600 45 ;
+C 115 ; WX 679 ; N LARGEllbracket ; B 264 -2353 662 45 ;
+C 116 ; WX 738 ; N hugellbracket ; B 290 -2953 725 45 ;
+C 117 ; WX 826 ; N Hugellbrackettop ; B 346 -1769 817 42 ;
+C 118 ; WX 826 ; N Hugellbracketbot ; B 346 -1753 817 59 ;
+C 119 ; WX 826 ; N Hugellbracketex ; B 346 -603 630 16 ;
+C 120 ; WX 1181 ; N Hugenplus ; B 59 -1400 1119 0 ;
+C 121 ; WX 561 ; N largerrbracket ; B 21 -1153 346 45 ;
+C 122 ; WX 620 ; N Largerrbracket ; B 18 -1753 379 45 ;
+C 123 ; WX 679 ; N LARGErrbracket ; B 14 -2353 412 45 ;
+C 124 ; WX 738 ; N hugerrbracket ; B 10 -2953 445 45 ;
+C 125 ; WX 826 ; N Hugerrbrackettop ; B 7 -1769 478 42 ;
+C 126 ; WX 826 ; N Hugerrbracketbot ; B 7 -1753 478 59 ;
+C 127 ; WX 826 ; N Hugerrbracketex ; B 193 -603 478 16 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 0
+EndKernPairs
+EndKernData
+EndFontMetrics
diff --git a/fonts/stmaryrd/ps-type1/hoekwater/afm/stmary9.afm b/fonts/stmaryrd/ps-type1/hoekwater/afm/stmary9.afm
new file mode 100644
index 0000000000..833e0da532
--- /dev/null
+++ b/fonts/stmaryrd/ps-type1/hoekwater/afm/stmary9.afm
@@ -0,0 +1,146 @@
+StartFontMetrics 4.0
+Comment Copyright 1995, Richard J. Kinch
+FontName stmary9
+FullName stmary9
+FamilyName stmary9
+Comment UniqueID 0
+FontBBox -128 -2956 1083 823
+Notice Copyright 1995, Richard J. Kinch
+EncodingScheme FontSpecific
+XHeight 431
+ItalicAngle 0
+StartCharMetrics 128
+C 0 ; WX 799 ; N shortleftarrow ; B 57 71 740 429 ;
+C 1 ; WX 799 ; N shortrightarrow ; B 57 71 740 429 ;
+C 2 ; WX 514 ; N shortuparrow ; B 73 -93 439 593 ;
+C 3 ; WX 514 ; N shortdownarrow ; B 73 -93 439 593 ;
+C 4 ; WX 571 ; N Yup ; B 57 21 512 536 ;
+C 5 ; WX 571 ; N Ydown ; B 57 -36 512 479 ;
+C 6 ; WX 628 ; N Yleft ; B 57 21 569 479 ;
+C 7 ; WX 628 ; N Yright ; B 57 21 569 479 ;
+C 8 ; WX 685 ; N varcurlyvee ; B 0 -216 683 694 ;
+C 9 ; WX 685 ; N varcurlywedge ; B 0 -216 683 694 ;
+C 10 ; WX 799 ; N minuso ; B 57 21 740 479 ;
+C 11 ; WX 571 ; N baro ; B 57 -93 512 593 ;
+C 12 ; WX 685 ; N sslash ; B 57 -250 626 750 ;
+C 13 ; WX 685 ; N bbslash ; B 57 -250 626 750 ;
+C 14 ; WX 799 ; N moo ; B 114 -22 683 522 ;
+C 15 ; WX 799 ; N varotimes ; B 57 -92 740 592 ;
+C 16 ; WX 799 ; N varoast ; B 57 -92 740 592 ;
+C 17 ; WX 799 ; N varobar ; B 57 -92 740 592 ;
+C 18 ; WX 799 ; N varodot ; B 57 -92 740 592 ;
+C 19 ; WX 799 ; N varoslash ; B 57 -92 740 592 ;
+C 20 ; WX 799 ; N varobslash ; B 57 -92 740 592 ;
+C 21 ; WX 799 ; N varocircle ; B 57 -92 740 592 ;
+C 22 ; WX 799 ; N varoplus ; B 57 -92 740 592 ;
+C 23 ; WX 799 ; N varominus ; B 57 -92 740 592 ;
+C 24 ; WX 799 ; N boxast ; B 85 -63 712 563 ;
+C 25 ; WX 799 ; N boxbar ; B 85 -63 712 563 ;
+C 26 ; WX 799 ; N boxdot ; B 85 -63 712 563 ;
+C 27 ; WX 799 ; N boxslash ; B 85 -63 712 563 ;
+C 28 ; WX 799 ; N boxbslash ; B 85 -63 712 563 ;
+C 29 ; WX 799 ; N boxcircle ; B 85 -63 712 563 ;
+C 30 ; WX 799 ; N boxbox ; B 85 -63 712 563 ;
+C 31 ; WX 799 ; N boxempty ; B 85 -63 712 563 ;
+C 32 ; WX 333 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 914 ; N merge ; B 63 0 849 737 ;
+C 34 ; WX 571 ; N vartimes ; B 57 0 512 694 ;
+C 35 ; WX 343 ; N fatsemi ; B 57 -194 284 563 ;
+C 36 ; WX 628 ; N ssearrow ; B 80 -194 569 695 ;
+C 37 ; WX 628 ; N curlywedgeuparrow ; B 57 -194 545 695 ;
+C 38 ; WX 685 ; N sswarrow ; B 0 -194 683 707 ;
+C 39 ; WX 685 ; N curlywedgedownarrow ; B 0 -229 683 716 ;
+C 40 ; WX 742 ; N fatslash ; B 287 -250 913 750 ;
+C 41 ; WX 742 ; N fatbslash ; B 57 -250 683 750 ;
+C 42 ; WX 457 ; N lbag ; B 57 -250 398 750 ;
+C 43 ; WX 457 ; N rbag ; B 57 -250 398 750 ;
+C 44 ; WX 1028 ; N varbigcirc ; B 57 -206 969 706 ;
+C 45 ; WX 799 ; N leftrightarroweq ; B 43 126 754 532 ;
+C 46 ; WX 685 ; N curlyveedownarrow ; B 0 -207 683 694 ;
+C 47 ; WX 685 ; N curlyveeuparrow ; B 0 -216 683 729 ;
+C 48 ; WX 628 ; N nnwarrow ; B 80 -195 569 694 ;
+C 49 ; WX 628 ; N nnearrow ; B 57 -195 545 694 ;
+C 50 ; WX 799 ; N leftslice ; B 57 2 740 498 ;
+C 51 ; WX 799 ; N rightslice ; B 57 2 740 498 ;
+C 52 ; WX 799 ; N varolessthan ; B 57 -92 740 592 ;
+C 53 ; WX 799 ; N varogreaterthan ; B 57 -92 740 592 ;
+C 54 ; WX 799 ; N varovee ; B 57 -92 740 592 ;
+C 55 ; WX 799 ; N varowedge ; B 57 -92 740 592 ;
+C 56 ; WX 514 ; N talloblong ; B 132 -250 380 750 ;
+C 57 ; WX 714 ; N interleave ; B 129 -250 582 750 ;
+C 58 ; WX 799 ; N obar ; B 57 -93 740 593 ;
+C 59 ; WX 799 ; N obslash ; B 57 -93 740 593 ;
+C 60 ; WX 799 ; N olessthan ; B 57 -93 740 593 ;
+C 61 ; WX 799 ; N ogreaterthan ; B 57 -93 740 593 ;
+C 62 ; WX 799 ; N ovee ; B 57 -93 740 593 ;
+C 63 ; WX 799 ; N owedge ; B 57 -93 740 593 ;
+C 64 ; WX 685 ; N oblong ; B 63 0 620 598 ;
+C 65 ; WX 685 ; N inplus ; B 85 -52 598 552 ;
+C 66 ; WX 685 ; N niplus ; B 85 -52 598 552 ;
+C 67 ; WX 685 ; N nplus ; B 57 -22 626 598 ;
+C 68 ; WX 799 ; N subsetplus ; B 85 -52 712 552 ;
+C 69 ; WX 799 ; N supsetplus ; B 85 -52 712 552 ;
+C 70 ; WX 799 ; N subsetpluseq ; B 85 -158 712 652 ;
+C 71 ; WX 799 ; N supsetpluseq ; B 85 -158 712 652 ;
+C 72 ; WX 457 ; N Lbag ; B 57 -250 398 750 ;
+C 73 ; WX 457 ; N Rbag ; B 57 -250 398 750 ;
+C 74 ; WX 414 ; N llbracket ; B 119 -250 390 750 ;
+C 75 ; WX 414 ; N rrbracket ; B 25 -250 293 750 ;
+C 76 ; WX 400 ; N llparenthesis ; B 101 -250 341 750 ;
+C 77 ; WX 400 ; N rrparenthesis ; B 57 -250 296 750 ;
+C 78 ; WX 799 ; N binampersand ; B 57 -92 740 592 ;
+C 79 ; WX 799 ; N bindnasrepma ; B 57 -92 740 592 ;
+C 80 ; WX 799 ; N trianglelefteqslant ; B 85 -158 712 652 ;
+C 81 ; WX 799 ; N trianglerighteqslant ; B 85 -158 712 652 ;
+C 82 ; WX 799 ; N ntrianglelefteqslant ; B 85 -323 712 823 ;
+C 83 ; WX 799 ; N ntrianglerighteqslant ; B 85 -323 712 823 ;
+C 84 ; WX 571 ; N llfloor ; B 116 -250 569 750 ;
+C 85 ; WX 571 ; N rrfloor ; B 0 -250 453 750 ;
+C 86 ; WX 571 ; N llceil ; B 116 -250 569 750 ;
+C 87 ; WX 571 ; N rrceil ; B 0 -250 453 750 ;
+C 88 ; WX 0 ; N arrownot ; B 378 62 648 438 ;
+C 89 ; WX 0 ; N Arrownot ; B 406 -41 619 541 ;
+C 90 ; WX 0 ; N Mapstochar ; B 57 -40 128 540 ;
+C 91 ; WX 0 ; N mapsfromchar ; B -128 62 -57 438 ;
+C 92 ; WX 0 ; N Mapsfromchar ; B -128 -40 -57 540 ;
+C 93 ; WX 1028 ; N leftrightarrowtriangle ; B 57 79 969 421 ;
+C 94 ; WX 1028 ; N leftarrowtriangle ; B 57 79 969 421 ;
+C 95 ; WX 1028 ; N rightarrowtriangle ; B 57 79 969 421 ;
+C 96 ; WX 856 ; N bigtriangledown ; B 57 -1000 797 0 ;
+C 97 ; WX 856 ; N bigtriangleup ; B 57 -1000 797 0 ;
+C 98 ; WX 856 ; N bigcurlyvee ; B 57 -1000 797 0 ;
+C 99 ; WX 856 ; N bigcurlywedge ; B 57 -1000 797 0 ;
+C 100 ; WX 856 ; N bigsqcap ; B 57 -1000 797 0 ;
+C 101 ; WX 856 ; N bigbox ; B 57 -1000 797 0 ;
+C 102 ; WX 457 ; N bigparallel ; B 57 -1000 398 0 ;
+C 103 ; WX 628 ; N biginterleave ; B 57 -1000 640 0 ;
+C 104 ; WX 1142 ; N hugetriangledown ; B 57 -1400 1083 0 ;
+C 105 ; WX 1142 ; N hugetriangleup ; B 57 -1400 1083 0 ;
+C 106 ; WX 1142 ; N hugecurlyvee ; B 57 -1400 1083 0 ;
+C 107 ; WX 1142 ; N hugecurlywedge ; B 57 -1400 1083 0 ;
+C 108 ; WX 1142 ; N hugesqcap ; B 57 -1400 1083 0 ;
+C 109 ; WX 1142 ; N hugebox ; B 57 -1400 1083 0 ;
+C 110 ; WX 571 ; N hugeparallel ; B 57 -1400 512 0 ;
+C 111 ; WX 856 ; N hugeinterleave ; B 57 -1400 880 0 ;
+C 112 ; WX 856 ; N hugenplus ; B 57 -1000 797 0 ;
+C 113 ; WX 542 ; N largellbracket ; B 207 -1156 519 42 ;
+C 114 ; WX 600 ; N Largellbracket ; B 232 -1756 579 42 ;
+C 115 ; WX 657 ; N LARGEllbracket ; B 257 -2356 640 42 ;
+C 116 ; WX 714 ; N hugellbracket ; B 282 -2956 701 42 ;
+C 117 ; WX 799 ; N Hugellbrackettop ; B 335 -1770 790 40 ;
+C 118 ; WX 799 ; N Hugellbracketbot ; B 335 -1756 790 55 ;
+C 119 ; WX 799 ; N Hugellbracketex ; B 335 -602 610 15 ;
+C 120 ; WX 1142 ; N Hugenplus ; B 57 -1400 1083 0 ;
+C 121 ; WX 542 ; N largerrbracket ; B 21 -1156 334 42 ;
+C 122 ; WX 600 ; N Largerrbracket ; B 18 -1756 366 42 ;
+C 123 ; WX 657 ; N LARGErrbracket ; B 14 -2356 398 42 ;
+C 124 ; WX 714 ; N hugerrbracket ; B 11 -2956 430 42 ;
+C 125 ; WX 799 ; N Hugerrbrackettop ; B 7 -1770 462 40 ;
+C 126 ; WX 799 ; N Hugerrbracketbot ; B 7 -1756 462 55 ;
+C 127 ; WX 799 ; N Hugerrbracketex ; B 188 -602 462 15 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 0
+EndKernPairs
+EndKernData
+EndFontMetrics
diff --git a/fonts/stmaryrd/ps-type1/hoekwater/pfm/stmary10.pfm b/fonts/stmaryrd/ps-type1/hoekwater/pfm/stmary10.pfm
new file mode 100644
index 0000000000..16040e843c
--- /dev/null
+++ b/fonts/stmaryrd/ps-type1/hoekwater/pfm/stmary10.pfm
Binary files differ
diff --git a/fonts/stmaryrd/ps-type1/hoekwater/pfm/stmary5.pfm b/fonts/stmaryrd/ps-type1/hoekwater/pfm/stmary5.pfm
new file mode 100644
index 0000000000..d0069e34cb
--- /dev/null
+++ b/fonts/stmaryrd/ps-type1/hoekwater/pfm/stmary5.pfm
Binary files differ
diff --git a/fonts/stmaryrd/ps-type1/hoekwater/pfm/stmary6.pfm b/fonts/stmaryrd/ps-type1/hoekwater/pfm/stmary6.pfm
new file mode 100644
index 0000000000..f0caaf84d7
--- /dev/null
+++ b/fonts/stmaryrd/ps-type1/hoekwater/pfm/stmary6.pfm
Binary files differ
diff --git a/fonts/stmaryrd/ps-type1/hoekwater/pfm/stmary7.pfm b/fonts/stmaryrd/ps-type1/hoekwater/pfm/stmary7.pfm
new file mode 100644
index 0000000000..0f2c157959
--- /dev/null
+++ b/fonts/stmaryrd/ps-type1/hoekwater/pfm/stmary7.pfm
Binary files differ
diff --git a/fonts/stmaryrd/ps-type1/hoekwater/pfm/stmary8.pfm b/fonts/stmaryrd/ps-type1/hoekwater/pfm/stmary8.pfm
new file mode 100644
index 0000000000..beea9bf17b
--- /dev/null
+++ b/fonts/stmaryrd/ps-type1/hoekwater/pfm/stmary8.pfm
Binary files differ
diff --git a/fonts/stmaryrd/ps-type1/hoekwater/pfm/stmary9.pfm b/fonts/stmaryrd/ps-type1/hoekwater/pfm/stmary9.pfm
new file mode 100644
index 0000000000..01937580ef
--- /dev/null
+++ b/fonts/stmaryrd/ps-type1/hoekwater/pfm/stmary9.pfm
Binary files differ
diff --git a/fonts/stmaryrd/ps-type1/hoekwater/stmary10.pfb b/fonts/stmaryrd/ps-type1/hoekwater/stmary10.pfb
new file mode 100644
index 0000000000..276de6e54d
--- /dev/null
+++ b/fonts/stmaryrd/ps-type1/hoekwater/stmary10.pfb
Binary files differ
diff --git a/fonts/stmaryrd/ps-type1/hoekwater/stmary5.pfb b/fonts/stmaryrd/ps-type1/hoekwater/stmary5.pfb
new file mode 100644
index 0000000000..66742c7d77
--- /dev/null
+++ b/fonts/stmaryrd/ps-type1/hoekwater/stmary5.pfb
Binary files differ
diff --git a/fonts/stmaryrd/ps-type1/hoekwater/stmary6.pfb b/fonts/stmaryrd/ps-type1/hoekwater/stmary6.pfb
new file mode 100644
index 0000000000..2c3c542458
--- /dev/null
+++ b/fonts/stmaryrd/ps-type1/hoekwater/stmary6.pfb
Binary files differ
diff --git a/fonts/stmaryrd/ps-type1/hoekwater/stmary7.pfb b/fonts/stmaryrd/ps-type1/hoekwater/stmary7.pfb
new file mode 100644
index 0000000000..83e0ed1c93
--- /dev/null
+++ b/fonts/stmaryrd/ps-type1/hoekwater/stmary7.pfb
Binary files differ
diff --git a/fonts/stmaryrd/ps-type1/hoekwater/stmary8.pfb b/fonts/stmaryrd/ps-type1/hoekwater/stmary8.pfb
new file mode 100644
index 0000000000..14922688de
--- /dev/null
+++ b/fonts/stmaryrd/ps-type1/hoekwater/stmary8.pfb
Binary files differ
diff --git a/fonts/stmaryrd/ps-type1/hoekwater/stmary9.pfb b/fonts/stmaryrd/ps-type1/hoekwater/stmary9.pfb
new file mode 100644
index 0000000000..81a2f8bc20
--- /dev/null
+++ b/fonts/stmaryrd/ps-type1/hoekwater/stmary9.pfb
Binary files differ
diff --git a/fonts/stmaryrd/ps-type1/hoekwater/stmaryrd.map b/fonts/stmaryrd/ps-type1/hoekwater/stmaryrd.map
new file mode 100644
index 0000000000..1f03d5bf7c
--- /dev/null
+++ b/fonts/stmaryrd/ps-type1/hoekwater/stmaryrd.map
@@ -0,0 +1,7 @@
+% Thomas Esser, 1998, public domain.
+stmary5 stmary5 <stmary5.pfb
+stmary6 stmary6 <stmary6.pfb
+stmary7 stmary7 <stmary7.pfb
+stmary8 stmary8 <stmary8.pfb
+stmary9 stmary9 <stmary9.pfb
+stmary10 stmary10 <stmary10.pfb
diff --git a/fonts/stmaryrd/stmary10.mf b/fonts/stmaryrd/stmary10.mf
new file mode 100644
index 0000000000..47dee9d3ca
--- /dev/null
+++ b/fonts/stmaryrd/stmary10.mf
@@ -0,0 +1,60 @@
+%%% ====================================================================
+%%% @METAFONT-file{
+%%% author-1 = "Jeremy Gibbons",
+%%% author-2 = "Alan Jeffrey",
+%%% version = "1.1",
+%%% date = "02 June 1992",
+%%% time = "15:06:36 BST",
+%%% filename = "stmary10.mf",
+%%% address-1 = "Department of Computer Science
+%%% University of Aukland
+%%% Private Bag
+%%% Aukland
+%%% New Zealand",
+%%% address-2 = "School of Cognitive and Computing Sciences
+%%% University of Sussex
+%%% Brighton BN1 9QH
+%%% UK",
+%%% telephone-1 = "+64 9 373 7599 x 5120",
+%%% telephone-2 = "+44 273 606755 x 3238",
+%%% FAX-1 = "+64 9 373 7453",
+%%% FAX-2 = "+44 273 678188",
+%%% checksum = "55779 60 311 2704",
+%%% email-1 = "jeremy@cs.aukuni.ac.nz",
+%%% email-2 = "alanje@cogs.sussex.ac.uk",
+%%% codetable = "ISO/ASCII",
+%%% keywords = "metafont symbols math fonts",
+%%% supported = "yes",
+%%% abstract = "This is part of the metafont program for
+%%% the St Mary's Road symbol font.",
+%%% docstring = "This is part of the metafont program for
+%%% the St Mary's Road symbol font. The font
+%%% contains a number of mathematical
+%%% characters which are not present in the
+%%% standard TeX and AMS symbol fonts.
+%%%
+%%% It is described in stmaryrd.tex.
+%%%
+%%% Copyright 1992 Jeremy Gibbons and Alan Jeffrey.
+%%%
+%%% The checksum field above contains a CRC-16
+%%% checksum as the first value, followed by the
+%%% equivalent of the standard UNIX wc (word
+%%% count) utility output of lines, words, and
+%%% characters. This is produced by Robert
+%%% Solovay's checksum utility.",
+%%% package = "St Mary's Road",
+%%% dependencies = "stmaryrd.mf stmaryba.mf stmarych.mf
+%%% stmaryjg.mf stmaryaj.mf",
+%%% }
+%%% ====================================================================
+%%%
+%%% 20 May 1991, v1.0: Created the font out of alans.mf and galileo.mf.
+%%%
+%%% 2 Jun 1992, v1.1: added the headers.
+
+if unknown cmbase: input cmbase fi;
+def generate suffix t = enddef;
+input cmsy10;
+slant:= 0;
+input stmaryrd;
diff --git a/fonts/stmaryrd/stmary5.mf b/fonts/stmaryrd/stmary5.mf
new file mode 100644
index 0000000000..886e72c107
--- /dev/null
+++ b/fonts/stmaryrd/stmary5.mf
@@ -0,0 +1,59 @@
+%%% ====================================================================
+%%% @METAFONT-file{
+%%% author-1 = "Jeremy Gibbons",
+%%% author-2 = "Alan Jeffrey",
+%%% version = "1.1",
+%%% date = "02 June 1992",
+%%% time = "15:06:36 BST",
+%%% filename = "stmary5.mf",
+%%% address-1 = "Department of Computer Science
+%%% University of Aukland
+%%% Private Bag
+%%% Aukland
+%%% New Zealand",
+%%% address-2 = "School of Cognitive and Computing Sciences
+%%% University of Sussex
+%%% Brighton BN1 9QH
+%%% UK",
+%%% telephone-1 = "+64 9 373 7599 x 5120",
+%%% telephone-2 = "+44 273 606755 x 3238",
+%%% FAX-1 = "+64 9 373 7453",
+%%% FAX-2 = "+44 273 678188",
+%%% checksum = "34417 59 310 2701",
+%%% email-1 = "jeremy@cs.aukuni.ac.nz",
+%%% email-2 = "alanje@cogs.sussex.ac.uk",
+%%% codetable = "ISO/ASCII",
+%%% keywords = "metafont symbols math fonts",
+%%% supported = "yes",
+%%% abstract = "This is part of the metafont program for
+%%% the St Mary's Road symbol font.",
+%%% docstring = "This is part of the metafont program for
+%%% the St Mary's Road symbol font. The font
+%%% contains a number of mathematical
+%%% characters which are not present in the
+%%% standard TeX and AMS symbol fonts.
+%%%
+%%% It is described in stmaryrd.tex.
+%%%
+%%% Copyright 1992 Jeremy Gibbons and Alan Jeffrey.
+%%%
+%%% The checksum field above contains a CRC-16
+%%% checksum as the first value, followed by the
+%%% equivalent of the standard UNIX wc (word
+%%% count) utility output of lines, words, and
+%%% characters. This is produced by Robert
+%%% Solovay's checksum utility.",
+%%% package = "St Mary's Road",
+%%% dependencies = "stmaryrd.mf stmaryba.mf stmarych.mf
+%%% stmaryjg.mf stmaryaj.mf",
+%%% }
+%%% ====================================================================
+%%%
+%%% 20 May 1991, v1.0: Created the font out of alans.mf and galileo.mf.
+%%%
+%%% 2 Jun 1992, v1.1: added the headers.
+
+if unknown cmbase: input cmbase fi;
+def generate suffix t = enddef;
+input cmsy5; slant:=0;
+input stmaryrd;
diff --git a/fonts/stmaryrd/stmary6.mf b/fonts/stmaryrd/stmary6.mf
new file mode 100644
index 0000000000..131179e5e4
--- /dev/null
+++ b/fonts/stmaryrd/stmary6.mf
@@ -0,0 +1,59 @@
+%%% ====================================================================
+%%% @METAFONT-file{
+%%% author-1 = "Jeremy Gibbons",
+%%% author-2 = "Alan Jeffrey",
+%%% version = "1.1",
+%%% date = "02 June 1992",
+%%% time = "15:06:36 BST",
+%%% filename = "stmary6.mf",
+%%% address-1 = "Department of Computer Science
+%%% University of Aukland
+%%% Private Bag
+%%% Aukland
+%%% New Zealand",
+%%% address-2 = "School of Cognitive and Computing Sciences
+%%% University of Sussex
+%%% Brighton BN1 9QH
+%%% UK",
+%%% telephone-1 = "+64 9 373 7599 x 5120",
+%%% telephone-2 = "+44 273 606755 x 3238",
+%%% FAX-1 = "+64 9 373 7453",
+%%% FAX-2 = "+44 273 678188",
+%%% checksum = "40321 59 310 2701",
+%%% email-1 = "jeremy@cs.aukuni.ac.nz",
+%%% email-2 = "alanje@cogs.sussex.ac.uk",
+%%% codetable = "ISO/ASCII",
+%%% keywords = "metafont symbols math fonts",
+%%% supported = "yes",
+%%% abstract = "This is part of the metafont program for
+%%% the St Mary's Road symbol font.",
+%%% docstring = "This is part of the metafont program for
+%%% the St Mary's Road symbol font. The font
+%%% contains a number of mathematical
+%%% characters which are not present in the
+%%% standard TeX and AMS symbol fonts.
+%%%
+%%% It is described in stmaryrd.tex.
+%%%
+%%% Copyright 1992 Jeremy Gibbons and Alan Jeffrey.
+%%%
+%%% The checksum field above contains a CRC-16
+%%% checksum as the first value, followed by the
+%%% equivalent of the standard UNIX wc (word
+%%% count) utility output of lines, words, and
+%%% characters. This is produced by Robert
+%%% Solovay's checksum utility.",
+%%% package = "St Mary's Road",
+%%% dependencies = "stmaryrd.mf stmaryba.mf stmarych.mf
+%%% stmaryjg.mf stmaryaj.mf",
+%%% }
+%%% ====================================================================
+%%%
+%%% 20 May 1991, v1.0: Created the font out of alans.mf and galileo.mf.
+%%%
+%%% 2 Jun 1992, v1.1: added the headers.
+
+if unknown cmbase: input cmbase fi;
+def generate suffix t = enddef;
+input cmsy6; slant:=0;
+input stmaryrd;
diff --git a/fonts/stmaryrd/stmary7.mf b/fonts/stmaryrd/stmary7.mf
new file mode 100644
index 0000000000..9021aa4d1b
--- /dev/null
+++ b/fonts/stmaryrd/stmary7.mf
@@ -0,0 +1,59 @@
+%%% ====================================================================
+%%% @METAFONT-file{
+%%% author-1 = "Jeremy Gibbons",
+%%% author-2 = "Alan Jeffrey",
+%%% version = "1.1",
+%%% date = "02 June 1992",
+%%% time = "15:06:36 BST",
+%%% filename = "stmary7.mf",
+%%% address-1 = "Department of Computer Science
+%%% University of Aukland
+%%% Private Bag
+%%% Aukland
+%%% New Zealand",
+%%% address-2 = "School of Cognitive and Computing Sciences
+%%% University of Sussex
+%%% Brighton BN1 9QH
+%%% UK",
+%%% telephone-1 = "+64 9 373 7599 x 5120",
+%%% telephone-2 = "+44 273 606755 x 3238",
+%%% FAX-1 = "+64 9 373 7453",
+%%% FAX-2 = "+44 273 678188",
+%%% checksum = "63333 59 311 2702",
+%%% email-1 = "jeremy@cs.aukuni.ac.nz",
+%%% email-2 = "alanje@cogs.sussex.ac.uk",
+%%% codetable = "ISO/ASCII",
+%%% keywords = "metafont symbols math fonts",
+%%% supported = "yes",
+%%% abstract = "This is part of the metafont program for
+%%% the St Mary's Road symbol font.",
+%%% docstring = "This is part of the metafont program for
+%%% the St Mary's Road symbol font. The font
+%%% contains a number of mathematical
+%%% characters which are not present in the
+%%% standard TeX and AMS symbol fonts.
+%%%
+%%% It is described in stmaryrd.tex.
+%%%
+%%% Copyright 1992 Jeremy Gibbons and Alan Jeffrey.
+%%%
+%%% The checksum field above contains a CRC-16
+%%% checksum as the first value, followed by the
+%%% equivalent of the standard UNIX wc (word
+%%% count) utility output of lines, words, and
+%%% characters. This is produced by Robert
+%%% Solovay's checksum utility.",
+%%% package = "St Mary's Road",
+%%% dependencies = "stmaryrd.mf stmaryba.mf stmarych.mf
+%%% stmaryjg.mf stmaryaj.mf",
+%%% }
+%%% ====================================================================
+%%%
+%%% 20 May 1991, v1.0: Created the font out of alans.mf and galileo.mf.
+%%%
+%%% 2 Jun 1992, v1.1: added the headers.
+
+if unknown cmbase: input cmbase fi;
+def generate suffix t = enddef;
+input cmsy7; slant:= 0;
+input stmaryrd;
diff --git a/fonts/stmaryrd/stmary8.mf b/fonts/stmaryrd/stmary8.mf
new file mode 100644
index 0000000000..16a060ab92
--- /dev/null
+++ b/fonts/stmaryrd/stmary8.mf
@@ -0,0 +1,59 @@
+%%% ====================================================================
+%%% @METAFONT-file{
+%%% author-1 = "Jeremy Gibbons",
+%%% author-2 = "Alan Jeffrey",
+%%% version = "1.1",
+%%% date = "02 June 1992",
+%%% time = "15:06:36 BST",
+%%% filename = "stmary8.mf",
+%%% address-1 = "Department of Computer Science
+%%% University of Aukland
+%%% Private Bag
+%%% Aukland
+%%% New Zealand",
+%%% address-2 = "School of Cognitive and Computing Sciences
+%%% University of Sussex
+%%% Brighton BN1 9QH
+%%% UK",
+%%% telephone-1 = "+64 9 373 7599 x 5120",
+%%% telephone-2 = "+44 273 606755 x 3238",
+%%% FAX-1 = "+64 9 373 7453",
+%%% FAX-2 = "+44 273 678188",
+%%% checksum = "57569 59 310 2701",
+%%% email-1 = "jeremy@cs.aukuni.ac.nz",
+%%% email-2 = "alanje@cogs.sussex.ac.uk",
+%%% codetable = "ISO/ASCII",
+%%% keywords = "metafont symbols math fonts",
+%%% supported = "yes",
+%%% abstract = "This is part of the metafont program for
+%%% the St Mary's Road symbol font.",
+%%% docstring = "This is part of the metafont program for
+%%% the St Mary's Road symbol font. The font
+%%% contains a number of mathematical
+%%% characters which are not present in the
+%%% standard TeX and AMS symbol fonts.
+%%%
+%%% It is described in stmaryrd.tex.
+%%%
+%%% Copyright 1992 Jeremy Gibbons and Alan Jeffrey.
+%%%
+%%% The checksum field above contains a CRC-16
+%%% checksum as the first value, followed by the
+%%% equivalent of the standard UNIX wc (word
+%%% count) utility output of lines, words, and
+%%% characters. This is produced by Robert
+%%% Solovay's checksum utility.",
+%%% package = "St Mary's Road",
+%%% dependencies = "stmaryrd.mf stmaryba.mf stmarych.mf
+%%% stmaryjg.mf stmaryaj.mf",
+%%% }
+%%% ====================================================================
+%%%
+%%% 20 May 1991, v1.0: Created the font out of alans.mf and galileo.mf.
+%%%
+%%% 2 Jun 1992, v1.1: added the headers.
+
+if unknown cmbase: input cmbase fi;
+def generate suffix t = enddef;
+input cmsy8; slant:=0;
+input stmaryrd;
diff --git a/fonts/stmaryrd/stmary9.mf b/fonts/stmaryrd/stmary9.mf
new file mode 100644
index 0000000000..05cbc1189d
--- /dev/null
+++ b/fonts/stmaryrd/stmary9.mf
@@ -0,0 +1,59 @@
+%%% ====================================================================
+%%% @METAFONT-file{
+%%% author-1 = "Jeremy Gibbons",
+%%% author-2 = "Alan Jeffrey",
+%%% version = "1.1",
+%%% date = "02 June 1992",
+%%% time = "15:06:36 BST",
+%%% filename = "stmary9.mf",
+%%% address-1 = "Department of Computer Science
+%%% University of Aukland
+%%% Private Bag
+%%% Aukland
+%%% New Zealand",
+%%% address-2 = "School of Cognitive and Computing Sciences
+%%% University of Sussex
+%%% Brighton BN1 9QH
+%%% UK",
+%%% telephone-1 = "+64 9 373 7599 x 5120",
+%%% telephone-2 = "+44 273 606755 x 3238",
+%%% FAX-1 = "+64 9 373 7453",
+%%% FAX-2 = "+44 273 678188",
+%%% checksum = "59825 59 310 2701",
+%%% email-1 = "jeremy@cs.aukuni.ac.nz",
+%%% email-2 = "alanje@cogs.sussex.ac.uk",
+%%% codetable = "ISO/ASCII",
+%%% keywords = "metafont symbols math fonts",
+%%% supported = "yes",
+%%% abstract = "This is part of the metafont program for
+%%% the St Mary's Road symbol font.",
+%%% docstring = "This is part of the metafont program for
+%%% the St Mary's Road symbol font. The font
+%%% contains a number of mathematical
+%%% characters which are not present in the
+%%% standard TeX and AMS symbol fonts.
+%%%
+%%% It is described in stmaryrd.tex.
+%%%
+%%% Copyright 1992 Jeremy Gibbons and Alan Jeffrey.
+%%%
+%%% The checksum field above contains a CRC-16
+%%% checksum as the first value, followed by the
+%%% equivalent of the standard UNIX wc (word
+%%% count) utility output of lines, words, and
+%%% characters. This is produced by Robert
+%%% Solovay's checksum utility.",
+%%% package = "St Mary's Road",
+%%% dependencies = "stmaryrd.mf stmaryba.mf stmarych.mf
+%%% stmaryjg.mf stmaryaj.mf",
+%%% }
+%%% ====================================================================
+%%%
+%%% 20 May 1991, v1.0: Created the font out of alans.mf and galileo.mf.
+%%%
+%%% 2 Jun 1992, v1.1: added the headers.
+
+if unknown cmbase: input cmbase fi;
+def generate suffix t = enddef;
+input cmsy9; slant:=0;
+input stmaryrd;
diff --git a/fonts/stmaryrd/stmaryaj.mf b/fonts/stmaryrd/stmaryaj.mf
new file mode 100644
index 0000000000..dfe4f630b1
--- /dev/null
+++ b/fonts/stmaryrd/stmaryaj.mf
@@ -0,0 +1,1066 @@
+%%% ====================================================================
+%%% @METAFONT-file{
+%%% author-1 = "Jeremy Gibbons",
+%%% author-2 = "Alan Jeffrey",
+%%% version = "1.1",
+%%% date = "02 June 1992",
+%%% time = "15:06:36 BST",
+%%% filename = "stmaryaj.mf",
+%%% address-1 = "Department of Computer Science
+%%% University of Aukland
+%%% Private Bag
+%%% Aukland
+%%% New Zealand",
+%%% address-2 = "School of Cognitive and Computing Sciences
+%%% University of Sussex
+%%% Brighton BN1 9QH
+%%% UK",
+%%% telephone-1 = "+64 9 373 7599 x 5120",
+%%% telephone-2 = "+44 273 606755 x 3238",
+%%% FAX-1 = "+64 9 373 7453",
+%%% FAX-2 = "+44 273 678188",
+%%% checksum = "16420 1066 3686 40419",
+%%% email-1 = "jeremy@cs.aukuni.ac.nz",
+%%% email-2 = "alanje@cogs.sussex.ac.uk",
+%%% codetable = "ISO/ASCII",
+%%% keywords = "metafont symbols math fonts",
+%%% supported = "yes",
+%%% abstract = "This is part of the metafont program for
+%%% the St Mary's Road symbol font.",
+%%% docstring = "This is part of the metafont program for
+%%% the St Mary's Road symbol font. The font
+%%% contains a number of mathematical
+%%% characters which are not present in the
+%%% standard TeX and AMS symbol fonts.
+%%%
+%%% It is described in stmaryrd.tex.
+%%%
+%%% Copyright 1992 Jeremy Gibbons and Alan Jeffrey.
+%%%
+%%% The checksum field above contains a CRC-16
+%%% checksum as the first value, followed by the
+%%% equivalent of the standard UNIX wc (word
+%%% count) utility output of lines, words, and
+%%% characters. This is produced by Robert
+%%% Solovay's checksum utility.",
+%%% package = "St Mary's Road",
+%%% dependencies = "none",
+%%% }
+%%% ====================================================================
+%%%
+%%% 20 May 1991, v1.0: Created the font out of alans.mf and galileo.mf.
+%%%
+%%% 24 May 1991, v1.01: Finished the first version.
+%%%
+%%% 25 Jun 1991, v1.02: Corrected bugs with arrow_not and Arrow_not.
+%%%
+%%% 2 Jun 1992, v1.1: added the headers.
+
+iff known left_right_arrow_eq:
+cmchar "Left and right arrow equality";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(left_right_arrow_eq,14u#,v_center(spread#+.96asc_height#));
+adjust_fit(0,0); pickup crisp.nib; pos1(rule_thickness,90);
+pos2(rule_thickness,90); pos3(bar,0); pos4(bar,0);
+y0=y1=y2=math_axis; x1=.5w; rt
+x0=hround(w-.75u); y3-y0=y0-y4=.24asc_height+eps;
+x3=x4=x0-3u-eps; pos5(bar,angle(z4-z0)); z5l=z0;
+pos6(bar,angle(z3-z0)); z6l=z0; z9=.381966[.5[z3,z4],z0];
+numeric t; path p; p=z4l{z9-z4}..z6r; t=xpart(p
+intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
+path p; p=z0..{z4-z9}z4r--subpath (0,t)
+of\\(z4l{z9-z4}..z6r)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3l{z9-z3}..z5r)
+ --z3r{z9-z3}..z0 & cycle; % arrowhead and stem
+p:=p shifted (0,.5spread); filldraw p; % top
+addto currentpicture also currentpicture xscaled -1 shifted (w,0);
+pickup rule.nib;
+lft x10=hround u; x11=w-x10; y10=y11=math_axis-.5spread;
+draw z10--z11; % bottom
+penlabels(0,1,2,3,4,5,6,9,10,11); endchar;
+
+iff known curly_vee_down_arrow:
+cmchar "Upside-down upwards accumulate symbol";
+beginchar(curly_vee_down_arrow,12u#,asc_height#,asc_depth#);
+adjust_fit(0,0); pickup rule.nib;
+x2=good.x .5w; w:=r:=2x2;
+lft x1=0; x3=w-x1;
+bot y1=-d; top y2=h+o; y3=y1;
+x4=x2; y4=h-(x_height+d);
+pickup crisp.nib;
+pos11(rule_thickness,0); pos12(rule_thickness,0); % arrow head nicked from
+pos13(bar,90); pos14(bar,90); % up_arrow
+lft x11l=hround(.5w-.5rule_thickness); y11-.5rule_thickness=-d;
+x10=x11=x12; top y10=top y2; x10-x13=x14-x10=3u+eps;
+y13=y14=y10-.24asc_height-eps;
+pos15(bar,angle(z14-z10)); z15l=z10;
+pos16(bar,angle(z13-z10)); z16l=z10;
+z19=.381966[.5[z13,z14],z10];
+numeric t; path p; p=z14l{z19-z14}..z16r;
+t=xpart(p intersectiontimes((x12r,-d)--(x12r,h))); y12=ypart point t of p;
+filldraw z10..{z14-z19}z14r--subpath (0,t) of\\(z14l{z19-z14}..z16r)
+ --z12r
+ -- % ---z11r..z11l---
+ z12l--subpath (t,0) of\\(z13l{z19-z13}..z15r)
+ --z13r{z19-z13}..z10 & cycle; % arrowhead
+pickup rule.nib;
+numeric t; path p; p=z1{z4-z1}..{up}z2;
+t=xpart(p intersectiontimes((0,y12)--(w,y12)));
+draw subpath (0,t) of\\(z1{z4-z1}..{up}z2); % left arm
+draw subpath (0,t) of\\(z3{z4-z3}..{up}z2); % right arm
+currentpicture:= currentpicture yscaled -1 shifted (0,h-d);
+endchar;
+
+iff known curly_vee_up_arrow:
+cmchar "Upside-down downwards accumulate symbol";
+beginchar(curly_vee_up_arrow,12u#,asc_height#,asc_depth#);
+adjust_fit(0,0); pickup rule.nib;
+x2=good.x .5w; w:=r:=2x2;
+lft x1=0; x3=w-x1;
+bot y1=-d; top y2=h+o; y3=y1;
+x4=x2; y4=h-(x_height+d);
+pickup crisp.nib;
+numeric theta,delta; theta=angle(z4-z1); delta=3u++.24asc_height;
+pos11(rule_thickness,-90+theta); pos12(rule_thickness,-90+theta);
+pos13(bar,-180+theta); pos14(bar,-180+theta);
+lft x10=0; bot y10=-d;
+x11=w; z11=z10+whatever*(dir theta); % where the arrow stem would go
+y13a=y10; x14a=x10; x13a-x10=y14a-y10=delta+eps;
+z13=z13a rotatedaround(z10,theta-45);
+z14=z14a rotatedaround(z10,theta-45);
+pos15(bar,theta+45); z15l=z10; pos16(bar,theta-45); z16l=z10;
+z19=.381966[.5[z13,z14],z10];
+numeric t; path p; p=z14l{z19-z14}..z16r;
+t=xpart(p intersectiontimes (z11l--(z11l+2(z10-z11)))); z12l=point t of p;
+filldraw z10..{z14-z19}z14r
+ --subpath (0,t) of\\(z14l{z19-z14}..z16r)
+ --z12l
+ -- % ---z11l..z11r---
+ z12r
+ --subpath (t,0) of\\(z13l{z19-z13}..z15r)
+ --z13r{z19-z13}..z10 & cycle; % left arrowhead
+numeric theta,delta; theta=angle(z3-z4); delta=3u++.24asc_height;
+pos21(rule_thickness,90+theta); pos22(rule_thickness,90+theta);
+pos23(bar,theta); pos24(bar,theta);
+rt x20=w; bot y20=-d;
+x21=0; z21=z20+whatever*-(dir theta); % where the arrow stem would go
+x23a=x20; y24a=y20; y23a-y20=x20-x24a=delta+eps;
+z23=z23a rotatedaround(z20,theta+45);
+z24=z24a rotatedaround(z20,theta+45);
+pos25(bar,theta+225); z25l=z20; pos26(bar,theta+135); z26l=z20;
+z29=.381966[.5[z23,z24],z20];
+numeric t; path p; p=z24l{z29-z24}..z26r;
+t=xpart(p intersectiontimes (z21l--(z21l+2(z20-z21)))); z22l=point t of p;
+filldraw z20..{z24-z29}z24r
+ --subpath (0,t) of\\(z24l{z29-z24}..z26r)
+ --z22l
+ -- % ---z21l..z21r---
+ z22r
+ --subpath (t,0) of\\(z23l{z29-z23}..z25r)
+ --z23r{z29-z23}..z20 & cycle; % right arrowhead
+pickup rule.nib;
+numeric t; path p; p=z2{down}..{z1-z4}z1;
+t=xpart(p intersectiontimes(z12l--z12r));
+draw subpath (0,t) of\\(z2{down}..{z1-z4}z1); % left arm
+draw subpath (0,t) of\\(z2{down}..{z3-z4}z3); % right arm
+currentpicture:= currentpicture yscaled -1 shifted (0,h-d);
+endchar;
+
+iff known nnw_arrow: cmchar "Northnorthwest arrow";
+beginchar(nnw_arrow,11u#,asc_height#,asc_depth#);
+adjust_fit(0,0); pickup crisp.nib;
+x1+.5rule_thickness=hround(w-u); lft x0=hround 3u; % This 3u used to be a u in
+y1+.5rule_thickness=h; bot y0=-d; % the program for swarrow.
+ % 3u (with width 11u) gives
+ % arrow parallel to langle.
+numeric theta,delta; theta=angle(z1-z0); delta=3u++.24asc_height;
+if abs(theta-45)<2.5: theta:=45; y1:=y0+x1-x0; fi % near-45$^\circ$ angle
+pos1(rule_thickness,-90+theta); pos2(rule_thickness,-90+theta);
+pos3(bar,-180+theta); pos4(bar,-180+theta);
+ %y3=y0; x4=x0; x3-x0=y4-y0=delta+eps;
+y10=y0; x11=x0; x10-x0=y11-y0=delta+eps; % Can now do arrows of any angle
+z3=z10 rotatedaround(z0,theta-45);
+z4=z11 rotatedaround(z0,theta-45);
+pos5(bar,theta+45); z5l=z0; pos6(bar,theta-45); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+numeric t; path p; p=z4l{z9-z4}..z6r;
+t=xpart(p intersectiontimes (z1l--(z1l+2(z0-z1)))); z2l=point t of p;
+filldraw z0..{z4-z9}z4r
+ --subpath (0,t) of\\(z4l{z9-z4}..z6r)
+ --z2l---z1l..z1r---z2r
+ --subpath (t,0) of\\(z3l{z9-z3}..z5r)
+ --z3r{z9-z3}..z0 & cycle; % arrowhead and stem
+currentpicture:= currentpicture yscaled -1 shifted (0,h-d);
+endchar;
+
+iff known nne_arrow: cmchar "Northnortheast arrow";
+beginchar(nne_arrow,11u#,asc_height#,asc_depth#);
+adjust_fit(0,0); pickup crisp.nib;
+x1-.5rule_thickness=hround u; rt x0=hround(w-3u);
+y1+.5rule_thickness=h; bot y0=-d;
+numeric theta,delta; theta=angle(z0-z1); delta=3u++.24asc_height;
+if abs(theta+45)<2.5: theta:=-45; y1:=y0+x0-x1; fi % near-45$^\circ$ angle
+pos1(rule_thickness,90+theta); pos2(rule_thickness,90+theta);
+pos3(bar,theta); pos4(bar,theta);
+ %x3=x0; y4=y0; y3-y0=x0-x4=delta+eps;
+x10=x0; y11=y0; y10-y0=x0-x11=delta+eps;
+z3=z10 rotatedaround(z0,theta+45);
+z4=z11 rotatedaround(z0,theta+45);
+pos5(bar,theta+225); z5l=z0; pos6(bar,theta+135); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+numeric t; path p; p=z4l{z9-z4}..z6r;
+t=xpart(p intersectiontimes (z1l--(z1l+2(z0-z1)))); z2l=point t of p;
+filldraw z0..{z4-z9}z4r
+ --subpath (0,t) of\\(z4l{z9-z4}..z6r)
+ --z2l---z1l..z1r---z2r
+ --subpath (t,0) of\\(z3l{z9-z3}..z5r)
+ --z3r{z9-z3}..z0 & cycle; % arrowhead and stem
+currentpicture:= currentpicture yscaled -1 shifted (0,h-d);
+endchar;
+
+iff known left_slice: cmchar "Left slice";
+beginarithchar(left_slice); pickup rule.nib; autorounded;
+lft x6=hround u; x2=w-x6; y2=math_axis; y8-y2 = .5(x2-x6);
+circle_points; % circle
+draw z1--z6--z3; % lessthan
+draw z1..z2..z3; % arc
+labels(1,2,3,4,5,6,7,8); endchar;
+
+iff known right_slice: cmchar "Right slice";
+beginarithchar(right_slice); pickup rule.nib; autorounded;
+lft x6=hround u; x2=w-x6; y2=math_axis; y8-y2 = .5(x2-x6);
+circle_points; % circle
+draw z5--z2--z7; % greaterthan
+draw z5..z6..z7; % arc
+labels(1,2,3,4,5,6,7,8); endchar;
+
+iff known var_o_less_than: cmchar "Circular circle-lessthan operator";
+begincircle(var_o_less_than);
+draw z1--z6--z3; % lessthan
+labels(1,2,3,4,5,6,7,8); endchar;
+
+iff known var_o_greater_than: cmchar "Circular circle-greaterthan operator";
+begincircle(var_o_greater_than);
+draw z5--z2--z7; % greaterthan
+labels(1,2,3,4,5,6,7,8); endchar;
+
+iff known var_o_vee: cmchar "Circular circle-vee operator";
+begincircle(var_o_vee);
+draw z1--z4--z7; % vee
+labels(1,2,3,4,5,6,7,8); endchar;
+
+iff known var_o_wedge: cmchar "Circular circle-wedge operator";
+begincircle(var_o_wedge);
+draw z3--z8--z5; % wedge
+labels(1,2,3,4,5,6,7,8); endchar;
+
+iff known tall_oblong: cmchar "Tall oblong (Dijkstra choice symbol)";
+beginchar(tall_oblong,9u#,body_height#,paren_depth#);
+adjust_fit(0,0); pickup rule.nib;
+x1=x2; top y1=h; .5[y1,y2]=math_axis;
+x3=x4=w-x1; y3=y1; y4=y2;
+compute_spread(.45x_height#,.55x_height#); x3-x1=spread;
+draw z1--z2--z4--z3--cycle; % stems
+labels(1,2,3,4); endchar;
+
+iff known interleave:
+cmchar "Triple vertical line (interleaving)";
+beginchar(interleave,12.5u#,body_height#,paren_depth#);
+adjust_fit(0,0); pickup rule.nib;
+compute_spread(.45x_height#,.55x_height#);
+x1=x2; top y1=h; .5[y1,y2]=math_axis;
+x4=x3; x5=x6=w-x1; y5=y3=y1; y6=y4=y2;
+x3-x1=x5-x3=hround spread;
+draw z1--z2; draw z3--z4; draw z5--z6; % stems
+labels(1,2,3,4,5,6); endchar;
+
+iff known o_bar: cmchar "Circle-bar operator";
+beginarithchar(o_bar); pickup light_rule.nib; autorounded;
+lft x6=hround u; x2=w-x6; y2=math_axis; top y8=h;
+circle_points; draw_circle; % circle
+draw z4--z8; % bar
+labels(1,2,3,4,5,6,7,8); endchar;
+
+iff known o_bslash: cmchar "Circle-backslash operator";
+beginarithchar(o_bslash); pickup light_rule.nib; autorounded;
+lft x6=hround u; x2=w-x6; y2=math_axis; top y8=h;
+circle_points; draw_circle; % circle
+draw z3--z7; % diagonal
+labels(1,2,3,4,5,6,7,8); endchar;
+
+iff known o_less_than: cmchar "Circle-lessthan operator";
+beginarithchar(o_less_than); pickup light_rule.nib; autorounded;
+lft x6=hround u; x2=w-x6; y2=math_axis; top y8=h;
+circle_points; draw_circle; % circle
+draw z1--z6--z3; % lessthan
+labels(1,2,3,4,5,6,7,8); endchar;
+
+iff known o_greater_than: cmchar "Circle-greaterthan operator";
+beginarithchar(o_greater_than); pickup light_rule.nib; autorounded;
+lft x6=hround u; x2=w-x6; y2=math_axis; top y8=h;
+circle_points; draw_circle; % circle
+draw z5--z2--z7; % greaterthan
+labels(1,2,3,4,5,6,7,8); endchar;
+
+iff known o_vee: cmchar "Circle-vee operator";
+beginarithchar(o_vee); pickup light_rule.nib; autorounded;
+lft x6=hround u; x2=w-x6; y2=math_axis; top y8=h;
+circle_points; draw_circle; % circle
+draw z1--z4--z7; % vee
+labels(1,2,3,4,5,6,7,8); endchar;
+
+iff known o_wedge: cmchar "Circle-wedge operator";
+beginarithchar(o_wedge); pickup light_rule.nib; autorounded;
+lft x6=hround u; x2=w-x6; y2=math_axis; top y8=h;
+circle_points; draw_circle; % circle
+draw z3--z8--z5; % wedge
+labels(1,2,3,4,5,6,7,8); endchar;
+
+iff known oblong:
+cmchar "Oblong (Hoare choice)";
+beginchar(oblong,12u#,.8asc_height#,0);
+adjust_fit(0,0); pickup rule.nib;
+lft x1=hround 1.1u; x2=x1; x4=x5=w-x1;
+y1=good.y h+o; bot y2=0; y4=y2; y5=y1;
+draw z1---z2---z4---z5--cycle; % stems and bar
+labels(1,2,4,5); endchar;
+
+iff known in_plus: cmchar "Bag element sign";
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(in_plus,12u#,v_center(spread#+rule_thickness#));
+italcorr h#*slant-u#;
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x2=hround 1.5u-eps; x1=x3=x6=w-x2;
+y1-y3=spread; y2=y6=.5[y1,y3]=math_axis;
+x4=x5=.5w+u; y4=y1; y5=y3;
+draw z1---z4...z2{down}...z5---z3; % arc and bars
+draw z2--z6; % middle bar
+x12=x13=.47[x1,x2]; y12=y1-3rule_thickness+eps; y13=y3+3rule_thickness+eps;
+draw z12--z13; % vertical bar
+labels(1,2,3,4,5,6,12,13); endchar;
+
+iff known ni_plus: cmchar "Reversed bag element sign";
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(ni_plus,12u#,v_center(spread#+rule_thickness#));
+italcorr h#*slant-u#;
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x1=hround 1.5u-eps; x1=x3=x6=w-x2;
+y1-y3=spread; y2=y6=.5[y1,y3]=math_axis;
+x4=x5=.5w-u; y4=y1; y5=y3;
+draw z1---z4...z2{down}...z5---z3; % arc and bars
+draw z2--z6; % middle bar
+x12=x13=.47[x1,x2]; y12=y1-3rule_thickness+eps; y13=y3+3rule_thickness+eps;
+draw z12--z13; % vertical bar
+labels(1,2,3,4,5,6,12,13); endchar;
+
+iff known n_plus: cmchar "Bag intersection";
+beginchar(n_plus,12u#,.8asc_height#,0);
+italcorr .8asc_height#*slant-.5u#;
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x1=hround u; x2=x1; x3=w-x3; x4=x5=w-x1;
+y3=good.y h+o; bot y1=-o; y2=y4=2/3[y1,y3]; y5=y1;
+draw z1---z2...z3...z4---z5; % stems and cap
+y8=y9=.47[y1,y3]; x8=w-x9=x1+2rule_thickness+eps;
+x6=x7=x3; .5[y6,y7]=y8; y7-y6=x9-x8;
+draw z6--z7; draw z8--z9; % enclosed plus sign
+labels(1,2,3,4,5,6,7,8,9); endchar;
+
+iff known sub_set_plus: cmchar "Proper subbag sign";
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(sub_set_plus,14u#,v_center(spread#+rule_thickness#));
+italcorr h#*slant-u#;
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x2=hround 1.5u-eps; x1=x3=w-x2;
+y1-y3=spread; y2=.5[y1,y3]=math_axis;
+x4=x5=.5w; y4=y1; y5=y3;
+draw z1---z4...z2{down}...z5---z3; % arc and bars
+x12=x13=.40[x1,x2]; y12=y1-3rule_thickness+eps; y13=y3+3rule_thickness+eps;
+y10=y11=y2; .5[x10,x11]=x12; x11-x10=y12-y13;
+draw z12--z13; draw z10--z11; % enclosed plus sign
+labels(1,2,3,4,5,10,11,12,13); endchar;
+
+iff known sup_set_plus: cmchar "Proper superbag sign";
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(sup_set_plus,14u#,v_center(spread#+rule_thickness#));
+italcorr h#*slant-u#;
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x1=hround 1.5u-eps; x2=w-x1; x3=x1;
+y1-y3=spread; y2=.5[y1,y3]=math_axis;
+x4=x5=.5w; y4=y1; y5=y3;
+draw z1---z4...z2{down}...z5---z3; % arc and bars
+x12=x13=.40[x1,x2]; y12=y1-3rule_thickness+eps; y13=y3+3rule_thickness+eps;
+y10=y11=y2; .5[x10,x11]=x12; x11-x10=y12-y13;
+draw z12--z13; draw z10--z11; % enclosed plus sign
+labels(1,2,3,4,5,10,11,12,13); endchar;
+
+iff known sub_set_plus_eq: cmchar "Subbag or equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(sub_set_plus_eq,14u#,v_center(spread#'+spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x2=hround 1.5u-eps; x1=x3=w-x2;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+x4=x5=.5w; y4=y1; y5=y3;
+draw z1---z4...z2{down}...z5---z3; % arc and bars
+x8=x1; lft x9=x2; y8=y9; y3-y9=spread'; draw z8--z9; % lower bar
+x12=x13=.40[x1,x2]; y12=y1-3rule_thickness+eps; y13=y3+3rule_thickness+eps;
+y10=y11=y2; .5[x10,x11]=x12; x11-x10=y12-y13;
+draw z12--z13; draw z10--z11; % enclosed plus sign
+labels(1,2,3,4,5,7,8,10,11,12,13); endchar;
+
+iff known sup_set_plus_eq: cmchar "Superbag or equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(sup_set_plus_eq,14u#,v_center(spread#'+spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x1=hround 1.5u-eps; x2=w-x1; x3=x1;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+x4=x5=.5w; y4=y1; y5=y3;
+draw z1---z4...z2{down}...z5---z3; % arc and bars
+x8=x1; rt x9=x2; y8=y9; y3-y9=spread'; draw z8--z9; % lower bar
+x12=x13=.40[x1,x2]; y12=y1-3rule_thickness+eps; y13=y3+3rule_thickness+eps;
+y10=y11=y2; .5[x10,x11]=x12; x11-x10=y12-y13;
+draw z12--z13; draw z10--z11; % enclosed plus sign
+labels(1,2,3,4,5,7,8,10,11,12,13); endchar;
+
+iff known L_bag: cmchar "Left bag bracket";
+beginchar(L_bag,8u#,body_height#,paren_depth#);
+ % ht and dp from "left parenthesis" symbol
+adjust_fit(0,0); pickup fine.nib;
+pos0(hair,180); pos1(vair,90); pos2(hair,0);
+pos3(cap_stem,0); pos4(vair,90); pos5(flare,180);
+lft x0r=lft x3l=lft x5r=hround u; y0=h-2u;
+x1=1/2[x0,x2]; top y1r=h;
+x2=2/3[x0,x4]; y2=y0;
+y3=0;
+x4=w-x0r; bot y4l=-d;
+filldraw stroke z1e{right}..z2e{down}..z3e{down}..{right}z4e; % arc
+bulb(1,0,5);
+penlabels(0,1,2,3,4,5); endchar;
+
+iff known R_bag: cmchar "Right bag bracket";
+beginchar(R_bag,8u#,body_height#,paren_depth#);
+ % ht and dp from "left parenthesis" symbol
+adjust_fit(0,0); pickup fine.nib;
+pos0(hair,180); pos1(vair,90); pos2(hair,0);
+pos3(cap_stem,0); pos4(vair,90); pos5(flare,180);
+lft x0r=lft x3l=lft x5r=hround u; y0=h-2u;
+x1=1/2[x0,x2]; top y1r=h;
+x2=2/3[x0,x4]; y2=y0;
+y3=0;
+x4=w-x0r; bot y4l=-d;
+filldraw stroke z1e{right}..z2e{down}..z3e{down}..{right}z4e; % arc
+bulb(1,0,5);
+currentpicture:= currentpicture xscaled -1 shifted (w,0); % OK, so sue me!
+endchar;
+
+iff known ll_bracket:
+cmchar "Left semantic bracket [[";
+beginchar(ll_bracket,7.25u#,body_height#,paren_depth#);
+adjust_fit(0,0);
+pickup crisp.nib; pos1(rule_thickness,0); pos2(rule_thickness,0);
+top y1=h; bot y2=-d; lft x1l=lft x2l=hround(2.5u-.5rule_thickness)-1-eps;
+filldraw stroke z1e--z2e; % left stem
+pos7(rule_thickness,0); pos8(rule_thickness,0);
+top y7=h; bot y8=-d; lft x7l=lft x8l=hround(4.75u-.5rule_thickness)-1-eps;
+filldraw stroke z7e--z8e; % right stem
+pos3(rule_thickness,90); pos4(rule_thickness,90);
+pos5(rule_thickness,90); pos6(rule_thickness,90);
+x3=x5=x1l; rt x4=rt x6=ceiling(w-.4u)+eps; y3r=y4r=y1; y5l=y6l=y2;
+filldraw stroke z3e--z4e; % upper bar
+filldraw stroke z5e--z6e; % lower bar
+penlabels(1,2,3,4,5,6,7,8); endchar;
+
+iff known rr_bracket:
+cmchar "Right semantic bracket ]]";
+beginchar(rr_bracket,7.25u#,body_height#,paren_depth#);
+adjust_fit(0,0);
+pickup crisp.nib; pos1(rule_thickness,0); pos2(rule_thickness,0);
+top y1=h; bot y2=-d; rt x1r=rt x2r=hround(w-2.5u+.5rule_thickness)+1+eps;
+filldraw stroke z1e--z2e; % left stem
+pos7(rule_thickness,0); pos8(rule_thickness,0);
+top y7=h; bot y8=-d; rt x7r=rt x8r=hround(w-4.75u+.5rule_thickness)+1+eps;
+filldraw stroke z7e--z8e; % right stem
+pos3(rule_thickness,90); pos4(rule_thickness,90);
+pos5(rule_thickness,90); pos6(rule_thickness,90);
+x3=x5=x1l; lft x4=lft x6=ceiling(.4u)-eps; y3r=y4r=y1; y5l=y6l=y2;
+filldraw stroke z3e--z4e; % upper bar
+filldraw stroke z5e--z6e; % lower bar
+penlabels(1,2,3,4,5,6,7,8); endchar;
+
+iff known ll_parenthesis:
+cmchar "Left relational image (|";
+beginchar(ll_parenthesis,7u#,body_height#,paren_depth#);
+italcorr body_height#*slant-.5u#;
+adjust_fit(0,0); pickup fine.nib;
+pos1(vair,0); pos2(.75[hair,stem],0); pos3(vair,0);
+rt x1r=rt x3r=hround(w-u); lft x2l=hround(x1-4u);
+top y1=h; y2=.5[y1,y3]=math_axis;
+filldraw stroke z1e{3(x2e-x1e),y2-y1}...z2e
+ ...{3(x3e-x2e),y3-y2}z3e; % arc
+pos4(whatever,45); pos5(whatever,-45);
+rt x4r-lft x4l=rt x5r-lft x5l=rule_thickness;
+z4r=z1r; z5r=z3r;
+filldraw stroke z4e--z5e;
+penlabels(1,2,3,4,5); endchar;
+
+iff known rr_parenthesis:
+cmchar "Right relational image |)";
+beginchar(rr_parenthesis,7u#,body_height#,paren_depth#);
+italcorr math_axis#*slant-.5u#;
+adjust_fit(0,0); pickup fine.nib;
+pos1(vair,0); pos2(.75[hair,stem],0); pos3(vair,0);
+lft x1l=lft x3l=hround u; rt x2r=hround(x1+4u);
+top y1=h; y2=.5[y1,y3]=math_axis;
+filldraw stroke z1e{3(x2e-x1e),y2-y1}...z2e
+ ...{3(x3e-x2e),y3-y2}z3e; % arc
+pos4(whatever,-45); pos5(whatever,45);
+rt x4r-lft x4l=rt x5r-lft x5l=rule_thickness;
+z4l=z1l; z5l=z3l;
+filldraw stroke z4e--z5e;
+penlabels(1,2,3,4,5); endchar;
+
+iff known bin_ampersand:
+cmchar "Binary operator ampersand (for linear logic)";
+beginarithchar(bin_ampersand); pickup rule.nib; autorounded;
+rt x1=hround(w-u)+eps; y1=.5[y2,y5]=math_axis;
+x2=.25[x3,x1]; y5-y2=x1-x3;
+lft x3=hround u-eps; y3=.45[y2,y1];
+x5=.5[x3,x1]; x6=x1; y6=y2+o;
+z4=whatever[z2,z5]; z4=z6+whatever*dir 140;
+draw z1..z2{left}..z3{up}..z4..tension .85..z5{left}..tension .75..z4---z6;
+labels(1,2,3,4,5,6);
+endchar;
+
+iff known bin_dnasrepma:
+cmchar "Binary operator dnasrepma (for linear logic)";
+beginarithchar(bin_dnasrepma); pickup rule.nib; autorounded;
+rt x1=hround(w-u)+eps; y1=.5[y2,y5]=math_axis;
+x2=.25[x3,x1]; y5-y2=x1-x3;
+lft x3=hround u-eps; y3=.45[y2,y1];
+x5=.5[x3,x1]; x6=x1; y6=y2+o;
+z4=whatever[z2,z5]; z4=z6+whatever*dir 140;
+draw z1..z2{left}..z3{up}..z4..tension .85..z5{left}..tension .75..z4---z6;
+currentpicture:= currentpicture scaled -1 shifted (w,h-d);
+endchar;
+
+iff known triangle_left_eq_slant:
+cmchar "Triangular less than or (slanted) equal sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(triangle_left_eq_slant,14u#,
+ v_center(spread#'+spread#+rule_thickness#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+lft x2=hround 1.5u-eps; x1=x3=w-x2; y1-y3=spread;
+y2=.5[y1,y3]; y3-y8=y2-y9=spread'; top y1=h;
+x2=x9; x1=x8;
+draw z1--z2--z3--cycle; % diagonals
+draw z8--z9; % equal sign
+penlabels(1,2,3,8,9); endchar;
+
+iff known triangle_right_eq_slant:
+cmchar "Triangular greater than or (slanted) equal sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(triangle_right_eq_slant,14u#,
+ v_center(spread#'+spread#+rule_thickness#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+rt x2=hround(w-1.5u)+eps; x1=x3=w-x2; y1-y3=spread;
+x2=x9; x1=x8;
+y2=.5[y1,y3]; y3-y8=y2-y9=spread'; top y1=h;
+draw z1--z2--z3--cycle; % diagonals
+draw z8--z9;
+penlabels(1,2,3,8,9); endchar;
+
+iff known n_triangle_left_eq_slant:
+cmchar "Not triangular less than or (slanted) equal sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(n_triangle_left_eq_slant,14u#,
+ v_center(spread#'+spread#+rule_thickness#+6u#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+lft x2=hround 1.5u-eps; x1=x3=w-x2; y1-y3=spread;
+y2=.5[y1,y3]; y3-y8=y2-y9=spread'; top y1=h-3u;
+x2=x9; x1=x8;
+draw z1--z2--z3--cycle; % diagonals
+draw z8--z9; % equal sign
+char_center(c); x.t=w-3u; y.t=y1+3u;
+char_negate(c,t,b);
+penlabels(1,2,3,8,9); endchar;
+
+iff known n_triangle_right_eq_slant:
+cmchar "Not triangular greater than or (slanted) equal sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(n_triangle_right_eq_slant,14u#,
+ v_center(spread#'+spread#+rule_thickness#+6u#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+rt x2=hround(w-1.5u)+eps; x1=x3=w-x2; y1-y3=spread;
+x2=x9; x1=x8;
+y2=.5[y1,y3]; y3-y8=y2-y9=spread'; top y1=h-3u;
+draw z1--z2--z3--cycle; % diagonals
+draw z8--z9;
+char_center(c); x.t=w-3u; y.t=y1+3u;
+char_negate(c,t,b);
+penlabels(1,2,3,8,9); endchar;
+
+iff known ll_floor:
+cmchar "Left merge or left double-floor";
+beginchar(ll_floor,10u#,body_height#,paren_depth#);
+adjust_fit(0,0); pickup rule.nib;
+compute_spread(.45x_height#,.55x_height#);
+x1=x2; top y1=h; .5[y1,y2]=math_axis;
+x4=x3; rt x5=rt x6=w; y5=y3=y1; y6=y4=y2;
+x3-x1=x5-x3=hround spread;
+draw z1--z2; draw z3--z4; % stems
+draw z2--z6; % horizontal
+labels(1,2,3,4,5,6); endchar;
+
+iff known rr_floor:
+cmchar "Right merge or right double-floor";
+beginchar(rr_floor,10u#,body_height#,paren_depth#);
+adjust_fit(0,0); pickup rule.nib;
+compute_spread(.45x_height#,.55x_height#);
+x5=x6; top y1=h; .5[y1,y2]=math_axis;
+x4=x3; lft x1=lft x2=0; y5=y3=y1; y6=y4=y2;
+x3-x1=x5-x3=hround spread;
+draw z3--z4; draw z5--z6; % stems
+draw z2--z6; % horizontal
+labels(1,2,3,4,5,6); endchar;
+
+iff known ll_ceil:
+cmchar "Left double-ceiling";
+beginchar(ll_ceil,10u#,body_height#,paren_depth#);
+adjust_fit(0,0); pickup rule.nib;
+compute_spread(.45x_height#,.55x_height#);
+x1=x2; bot y1=-d; .5[y1,y2]=math_axis;
+x4=x3; rt x5=rt x6=w; y5=y3=y1; y6=y4=y2;
+x3-x1=x5-x3=hround spread;
+draw z1--z2; draw z3--z4; % stems
+draw z2--z6; % horizontal
+labels(1,2,3,4,5,6); endchar;
+
+iff known rr_ceil:
+cmchar "Right double-ceiling";
+beginchar(rr_ceil,10u#,body_height#,paren_depth#);
+adjust_fit(0,0); pickup rule.nib;
+compute_spread(.45x_height#,.55x_height#);
+x5=x6; bot y1=-d; .5[y1,y2]=math_axis;
+x4=x3; lft x1=lft x2=0; y5=y3=y1; y6=y4=y2;
+x3-x1=x5-x3=hround spread;
+draw z3--z4; draw z5--z6; % stems
+draw z2--z6; % horizontal
+labels(1,2,3,4,5,6); endchar;
+
+iff known arrow_not:
+cmchar "Negated nonexistant arrow";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(arrow_not,18u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup crisp.nib;
+y3=.24asc_height+eps+math_axis;
+char_center(100); top y101=top y3; x101=x100+2u;
+char_negate(100,101,102);
+zero_width; endchar;
+
+iff known Arrow_not:
+cmchar "Negated nonexistant double arrow";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(Arrow_not,18u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib;
+y1-y2=spread; .5[y1,y2]=math_axis;
+y3=.24asc_height+eps+y1;
+char_center(100); top y101=top y3; x101=x100+1.5u; char_negate(100,101,102);
+zero_width; endchar;
+
+iff known Maps_to_char:
+cmchar "Maps-To relation";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(Maps_to_char,14u#,v_center(spread#+rule_thickness#));
+% this character should be followed immediately by equals or Rightarrow
+adjust_fit(0,0); pickup rule.nib;
+lft x1=hround u; x6=x2=x1+.5u; x3=x4=x5=x1;
+.5[y1,y5]=.5[y2,y6]=math_axis; y5-y3=y4-y1=.24asc_height+eps;
+y1-y5=y2-y6=spread;
+draw z3--z4; % stem
+draw z1--z2; % top bar stub
+draw z5--z6; % bottom bar stub
+labels(1,2,3,4,5,6); zero_width; endchar;
+
+iff known maps_from_char:
+cmchar "Maps-from relation";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(maps_from_char,14u#,v_center(spread#+rule_thickness#));
+% this character should be preceded immediately by minus or leftarrow
+adjust_fit(0,0); pickup rule.nib;
+lft x1=hround u; x2=x1+.5u; x3=x4=x1;
+y1=y2=math_axis; y1-y3=y4-y1=.24asc_height+eps;
+draw z3--z4; % stem
+draw z1--z2; % bar stub
+zero_width;
+currentpicture:= currentpicture xscaled -1;
+endchar;
+
+iff known Maps_from_char:
+cmchar "Maps-From relation";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(Maps_from_char,14u#,v_center(spread#+rule_thickness#));
+% this character should be preceded immediately by equals or Rightarrow
+adjust_fit(0,0); pickup rule.nib;
+lft x1=hround u; x6=x2=x1+.5u; x3=x4=x5=x1;
+.5[y1,y5]=.5[y2,y6]=math_axis; y5-y3=y4-y1=.24asc_height+eps;
+y1-y5=y2-y6=spread;
+draw z3--z4; % stem
+draw z1--z2; % top bar stub
+draw z5--z6; % bottom bar stub
+zero_width;
+currentpicture:= currentpicture xscaled -1;
+endchar;
+
+iff known left_right_arrow_triangle:
+cmchar "Left-right arrow with triangular heads";
+beginchar(left_right_arrow_triangle,18u#,4u#+math_axis#,4u#-math_axis#);
+adjust_fit(0,0); pickup rule.nib;
+z1=z2 + whatever*(dir -150); y4=y1=math_axis;
+lft x1=hround u-eps; x4=x3=x2;
+top y2=h-u; bot y3=-d+u;
+z5=z6 + whatever*(dir 150); y8=y5=math_axis;
+rt x5=hround(w-u)+eps; x8=x7=x6;
+top y6=h-u; bot y7=-d+u;
+draw z1--z2--z3--cycle; % left head
+draw z5--z6--z7--cycle; % right head
+draw z4--z8; % stem
+labels(1,2,3,4,5); endchar;
+
+iff known left_arrow_triangle:
+cmchar "Left arrow with triangular head";
+beginchar(left_arrow_triangle,18u#,4u#+math_axis#,4u#-math_axis#);
+adjust_fit(0,0); pickup rule.nib;
+rt x1=w-u; y1 = math_axis;
+z2=z3 + whatever*(dir -150); y5=y2=y1;
+lft x2=u; x5=x4=x3;
+top y3=h-u; bot y4=-d+u;
+draw z1--z5; draw z2--z3--z4--cycle;
+labels(1,2,3,4,5); endchar;
+
+iff known right_arrow_triangle:
+cmchar "Right arrow with triangular head";
+beginchar(right_arrow_triangle,18u#,4u#+math_axis#,4u#-math_axis#);
+adjust_fit(0,0); pickup rule.nib;
+lft x1=u; y1 = math_axis;
+z2=z3 + whatever*(dir 150); y5=y2=y1;
+rt x2=w-u; x5=x4=x3;
+top y3=h-u; bot y4=-d+u;
+draw z1--z5; draw z2--z3--z4--cycle;
+labels(1,2,3,4,5); endchar;
+
+iff known big_triangle_down:
+cmchar "\textstyle triangular join";
+beginchar(big_triangle_down,15u#,0,10/6dh#);
+adjust_fit(0,0); pickup pencircle scaled stem;
+lft x1=hround u-eps; x3=w-x3; x5=w-x1;
+top y1=eps; bot y3=-d; y5=y1;
+draw z1--z3--z5--cycle; % diagonals
+labels(1,3,5); endchar;
+
+iff known big_triangle_up:
+cmchar "\textstyle triangular meet";
+beginchar(big_triangle_up,15u#,0,10/6dh#);
+adjust_fit(0,0); pickup pencircle scaled stem;
+lft x1=hround u-eps; x3=w-x3; x5=w-x1;
+top y3=0; bot y1=-d-eps; y5=y1;
+draw z1--z3--z5--cycle; % diagonals
+labels(1,3,5); endchar;
+
+iff known big_curly_vee:
+cmchar "\textstyle big curly vee";
+beginchar(big_curly_vee,15u#,0,10/6dh#);
+adjust_fit(0,0); pickup pencircle scaled stem;
+lft x1=hround u-eps; x3=w-x3; x5=w-x1;
+top y1=eps; bot y3=-d; y5=y1;
+draw z1{dir -30}..{down}z3{up}..{dir 30}z5; % diagonals
+labels(1,3,5); endchar;
+
+iff known big_curly_wedge:
+cmchar "\textstyle big curly wedge";
+beginchar(big_curly_wedge,15u#,0,10/6dh#);
+adjust_fit(0,0); pickup pencircle scaled stem;
+lft x1=hround u-eps; x3=w-x3; x5=w-x1;
+top y3=0; bot y1=-d-eps; y5=y1;
+draw z1{dir 30}..{up}z3{down}..{dir -30}z5; % diagonals
+labels(1,3,5); endchar;
+
+iff known big_sq_cap:
+cmchar "\textstyle square set intersection sign";
+beginchar(big_sq_cap,15u#,0,10/6dh#);
+adjust_fit(0,0); pickup pencircle scaled stem;
+lft x1=hround u; x2=x1; x4=x5=w-x1;
+top y1=eps; bot y2=-d; y4=y2; y5=y1;
+draw z2---z1---z5---z4; % stems and bar
+labels(1,2,4,5); endchar;
+
+iff known big_box:
+cmchar "\textstyle box sign";
+beginchar(big_box,15u#,0,10/6dh#);
+adjust_fit(0,0); pickup pencircle scaled stem;
+lft x1=hround u; x2=x1; x4=x5=w-x1;
+top y1=eps; bot y2=-d; y4=y2; y5=y1;
+draw z1---z2---z4---z5---cycle; % stems and bar
+labels(1,2,4,5); endchar;
+
+iff known big_parallel:
+cmchar "\textstyle big parallelism sign";
+beginchar(big_parallel,8u#,0,10/6dh#);
+adjust_fit(0,0); pickup pencircle scaled stem;
+lft x1=hround u; x2=x1; x4=x5=w-x1;
+top y1=eps; bot y2=-d; y4=y2; y5=y1;
+draw z1---z2; % left line
+draw z4---z5; % right line
+labels(1,2,4,5); endchar;
+
+iff known big_interleave:
+cmchar "\textstyle big interleaving sign";
+beginchar(big_interleave,9u#,0,10/6dh#);
+adjust_fit(u#,u#); pickup pencircle scaled stem;
+lft x1=hround 0; x2=x1;
+top y1=eps; bot y2=-d;
+x4=x5=x1+2hround(.5w);
+y4=y1;y5=y2;
+x6=x7=x1+hround(.5w);
+y6=y1;y7=y2;
+draw z1---z2; % left line
+draw z4---z5; % right line
+draw z6---z7; % middle line
+labels(1,2,4,5,6,7); endchar;
+
+iff known big_triangle_down:
+cmchar "\displaystyle triangular join";
+beginchar(big_triangle_down+8,20u#,0,14/6dh#); padded 1/6dh#;
+adjust_fit(0,0); pickup pencircle scaled curve;
+lft x1=hround u-eps; x3=w-x3; x5=w-x1;
+top y1=eps; bot y3=-d; y5=y1;
+draw z1--z3--z5--cycle; % diagonals
+labels(1,3,5); endchar;
+
+iff known big_triangle_up:
+cmchar "\displaystyle triangular meet";
+beginchar(big_triangle_up+8,20u#,0,14/6dh#); padded 1/6dh#;
+adjust_fit(0,0); pickup pencircle scaled curve;
+lft x1=hround u-eps; x3=w-x3; x5=w-x1;
+top y3=0; bot y1=-d-eps; y5=y1;
+draw z1--z3--z5--cycle; % diagonals
+labels(1,3,5); endchar;
+
+iff known big_curly_vee:
+cmchar "\displaystyle big curly vee";
+beginchar(big_curly_vee+8,20u#,0,14/6dh#); padded 1/6dh#;
+adjust_fit(0,0); pickup pencircle scaled curve;
+lft x1=hround u-eps; x3=w-x3; x5=w-x1;
+top y1=eps; bot y3=-d; y5=y1;
+draw z1{dir -30}..{down}z3{up}..{dir 30}z5; % diagonals
+labels(1,3,5); endchar;
+
+iff known big_curly_wedge:
+cmchar "\displaystyle big curly wedge";
+beginchar(big_curly_wedge+8,20u#,0,14/6dh#); padded 1/6dh#;
+adjust_fit(0,0); pickup pencircle scaled curve;
+lft x1=hround u-eps; x3=w-x3; x5=w-x1;
+top y3=0; bot y1=-d-eps; y5=y1;
+draw z1{dir 30}..{up}z3{down}..{dir -30}z5; % diagonals
+labels(1,3,5); endchar;
+
+iff known big_sq_cap:
+cmchar "\displaystyle square set union sign";
+beginchar(big_sq_cap+8,20u#,0,14/6dh#); padded 1/6dh#;
+adjust_fit(0,0); pickup pencircle scaled curve;
+lft x1=hround u; x2=x1; x4=x5=w-x1;
+top y1=eps; bot y2=-d; y4=y2; y5=y1;
+draw z2---z1---z5---z4; % stems and bar
+labels(1,2,4,5); endchar;
+
+iff known big_box:
+cmchar "\displaystyle box sign";
+beginchar(big_box+8,20u#,0,14/6dh#); padded 1/6dh#;
+adjust_fit(0,0); pickup pencircle scaled curve;
+lft x1=hround u; x2=x1; x4=x5=w-x1;
+top y1=eps; bot y2=-d; y4=y2; y5=y1;
+draw z1---z2---z4---z5---cycle; % stems and bar
+labels(1,2,4,5); endchar;
+
+iff known big_parallel:
+cmchar "\displaystyle big parallelism sign";
+beginchar(big_parallel+8,10u#,0,14/6dh#); padded 1/6dh#;
+adjust_fit(0,0); pickup pencircle scaled curve;
+lft x1=hround u; x2=x1; x4=x5=w-x1;
+top y1=eps; bot y2=-d; y4=y2; y5=y1;
+draw z1---z2; % left line
+draw z4---z5; % right line
+labels(1,2,4,5); endchar;
+
+iff known big_interleave:
+cmchar "\displaystyle big interleaving sign";
+beginchar(big_interleave+8,13u#,0,14/6dh#); padded 1/6dh#;
+adjust_fit(u#,u#); pickup pencircle scaled curve;
+lft x1=hround 0; x2=x1;
+top y1=eps; bot y2=-d;
+x4=x5=x1+2hround(.5w);
+y4=y1;y5=y2;
+x6=x7=x1+hround(.5w);
+y6=y1;y7=y2;
+draw z1---z2; % left line
+draw z4---z5; % right line
+draw z6---z7; % middle line
+labels(1,2,4,5,6,7); endchar;
+
+iff known big_n_plus:
+cmchar "\textstyle multiset intersection sign";
+beginchar(big_n_plus,15u#,0,10/6dh#);
+adjust_fit(0,0); pickup pencircle scaled stem;
+lft x1=hround u; x2=x1; x3=w-x3; x4=x5=w-x1;
+top y3=0; bot y1=-d-eps; y2=y4=2/3[y1,y3]; y5=y1;
+draw z1---z2...z3...z4---z5; % stems and cap
+y8=y9=.47[y1,y3]; x8=w-x9=x1+2stem+eps; x6=x7=x3;
+.5[y6,y7]=y8; y7-y6=x9-x8; draw z8--z9; draw z6--z7; % enclosed `$+$'
+labels(1,2,3,4,5,6,7,8,9); endchar;
+
+iff known big_ll_bracket:
+cmchar "\big left semantic bracket";
+beginchar(big_ll_bracket,8u#,rule_thickness#,2dh#-rule_thickness#);
+adjust_fit(1.5u#,0); left_semantic_bracket(rule_thickness,true,true); endchar;
+
+iff known big_ll_bracket:
+cmchar "\Big left semantic bracket";
+beginchar(big_ll_bracket+1,8.5u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(2u#,0); left_semantic_bracket(.25[rule_thickness,stem],true,true); endchar;
+
+iff known big_ll_bracket:
+cmchar "\bigg left semantic bracket";
+beginchar(big_ll_bracket+2,9u#,rule_thickness#,4dh#-rule_thickness#);
+adjust_fit(2.5u#,0); left_semantic_bracket(.5[rule_thickness,stem],true,true); endchar;
+
+iff known big_ll_bracket:
+cmchar "\Bigg left semantic bracket";
+beginchar(big_ll_bracket+3,9.5u#,rule_thickness#,5dh#-rule_thickness#);
+adjust_fit(3u#,0); left_semantic_bracket(.75[rule_thickness,stem],true,true); endchar;
+
+iff known big_ll_bracket:
+cmchar "Extensible left semantic bracket---top";
+beginchar(big_ll_bracket+4,10u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(4u#,0); pickup crisp.nib;
+pos1(stem,0); pos2(stem,0);
+top y1=h-1; y2=-d-eps; lft x1l=lft x2l=hround(2.5u-.5stem);
+filldraw stroke z1e--z2e; % stem1
+pos3(stem,90); pos4(stem,90);
+x3=x1l; rt x4=hround(w-.75u+.5stem); y3r=y4r=y1;
+filldraw stroke z3e--z4e; % upper bar
+pos7(stem,0); pos8(stem,0);
+y7=y1; y8=y2; x7=x8=0.5(x1+x4);
+filldraw stroke z7e--z8e; % stem2
+penlabels(1,2,3,4,7,8); endchar;
+
+iff known big_ll_bracket:
+cmchar "Extensible left semantic bracket---bottom";
+beginchar(big_ll_bracket+5,10u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(4u#,0); pickup crisp.nib;
+pos1(stem,0); pos2(stem,0);
+y1=h+eps; bot y2=1-d; lft x1l=lft x2l=hround(2.5u-.5stem);
+filldraw stroke z1e--z2e; % stem1
+pos5(stem,90); pos6(stem,90);
+x5=x1l; rt x6=hround(w-.75u+.5stem); y5l=y6l=y2;
+filldraw stroke z5e--z6e; % lower bar
+pos7(stem,0); pos8(stem,0);
+y7=y1; y8=y2; x7=x8=0.5(x1+x6);
+filldraw stroke z7e--z8e; % stem2
+penlabels(1,2,5,6); endchar;
+
+iff known big_ll_bracket:
+cmchar "Extensible left semantic bracket---extension module";
+beginchar(big_ll_bracket+6,10u#,0,dh#);
+adjust_fit(4u#,0); pickup crisp.nib;
+pos1(stem,0); pos2(stem,0);
+y1=h+1+eps; bot y2=-d-1-eps; lft x1l=lft x2l=hround(2.5u-.5stem);
+filldraw stroke z1e--z2e; % stem1
+rt x6=hround(w-.75u+.5stem);
+pos7(stem,0); pos8(stem,0);
+y7=y1; y8=y2; x7=x8=0.5(x1+x6);
+filldraw stroke z7e--z8e; % stem2
+penlabels(1,2,7,8); endchar;
+
+iff known big_n_plus:
+cmchar "\displaystyle multiset intersection sign";
+beginchar(big_n_plus+8,20u#,0,14/6dh#); padded 1/6dh#;
+adjust_fit(0,0); pickup pencircle scaled curve;
+lft x1=hround u; x2=x1; x3=w-x3; x4=x5=w-x1;
+top y3=0; bot y1=-d-eps; y2=y4=2/3[y1,y3]; y5=y1;
+draw z1---z2...z3...z4---z5; % stems and cap
+y8=y9=.47[y1,y3]; x8=w-x9=x1+2curve+eps; x6=x7=x3;
+.5[y6,y7]=y8; y7-y6=x9-x8; draw z8--z9; draw z6--z7; % enclosed `$+$'
+labels(1,2,3,4,5,6,7,8,9); endchar;
+
+iff known big_rr_bracket:
+cmchar "\big right semantic bracket";
+beginchar(big_rr_bracket,8u#,rule_thickness#,2dh#-rule_thickness#);
+adjust_fit(0,1.5u#); right_semantic_bracket(rule_thickness,true,true); endchar;
+
+iff known big_rr_bracket:
+cmchar "\Big right semantic bracket";
+beginchar(big_rr_bracket+1,8.5u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(0,2u#); right_semantic_bracket(.25[rule_thickness,stem],true,true); endchar;
+
+iff known big_rr_bracket:
+cmchar "\bigg right semantic bracket";
+beginchar(big_rr_bracket+2,9u#,rule_thickness#,4dh#-rule_thickness#);
+adjust_fit(0,2.5u#); right_semantic_bracket(.5[rule_thickness,stem],true,true); endchar;
+
+iff known big_rr_bracket:
+cmchar "\Bigg right semantic bracket";
+beginchar(big_rr_bracket+3,9.5u#,rule_thickness#,5dh#-rule_thickness#);
+adjust_fit(0,3u#); right_semantic_bracket(.75[rule_thickness,stem],true,true); endchar;
+
+iff known big_rr_bracket:
+cmchar "Extensible right semantic bracket---top";
+beginchar(big_rr_bracket+4,10u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(0,4u#); pickup crisp.nib;
+pos1(stem,0); pos2(stem,0);
+top y1=h-1; y2=-d-eps; rt x1r=rt x2r=hround(w-2.5u+.5stem);
+filldraw stroke z1e--z2e; % stem1
+pos3(stem,90); pos4(stem,90);
+x3=x1r; lft x4=hround(.75u-.5stem); y3r=y4r=y1;
+filldraw stroke z3e--z4e; % upper bar
+pos7(stem,0); pos8(stem,0);
+y7=y1; y8=y2; x7=x8=0.5(x1+x4);
+filldraw stroke z7e--z8e; % stem2
+penlabels(1,2,3,4,7,8); endchar;
+
+iff known big_rr_bracket:
+cmchar "Extensible right semantic bracket---bottom";
+beginchar(big_rr_bracket+5,10u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(0,4u#); pickup crisp.nib;
+pos1(stem,0); pos2(stem,0);
+y1=h+eps; bot y2=1-d; rt x1r=rt x2r=hround(w-2.5u+.5stem);
+filldraw stroke z1e--z2e; % stem1
+pos5(stem,90); pos6(stem,90);
+x5=x1r; lft x6=hround(.75u-.5stem); y5l=y6l=y2;
+filldraw stroke z5e--z6e; % lower bar
+pos7(stem,0); pos8(stem,0);
+y7=y1; y8=y2; x7=x8=0.5(x1+x6);
+filldraw stroke z7e--z8e; % stem2
+penlabels(1,2,5,6,7,8); endchar;
+
+iff known big_rr_bracket:
+cmchar "Extensible right semantic bracket---extension module";
+beginchar(big_rr_bracket+6,10u#,0,dh#);
+adjust_fit(0,4u#); pickup crisp.nib;
+pos1(stem,0); pos2(stem,0);
+y1=h+1+eps; bot y2=-d-1-eps; rt x1r=rt x2r=hround(w-2.5u+.5stem);
+filldraw stroke z1e--z2e; % stem1
+lft x6=hround(.75u-.5stem);
+pos7(stem,0); pos8(stem,0);
+y7=y1; y8=y2; x7=x8=0.5(x1+x6);
+filldraw stroke z7e--z8e; % stem2
+penlabels(1,2,7,8); endchar;
diff --git a/fonts/stmaryrd/stmaryba.mf b/fonts/stmaryrd/stmaryba.mf
new file mode 100644
index 0000000000..6f9a1d8d0d
--- /dev/null
+++ b/fonts/stmaryrd/stmaryba.mf
@@ -0,0 +1,121 @@
+%%% ====================================================================
+%%% @METAFONT-file{
+%%% author-1 = "Jeremy Gibbons",
+%%% author-2 = "Alan Jeffrey",
+%%% version = "1.1",
+%%% date = "02 June 1992",
+%%% time = "15:06:36 BST",
+%%% filename = "stmaryba.mf",
+%%% address-1 = "Department of Computer Science
+%%% University of Aukland
+%%% Private Bag
+%%% Aukland
+%%% New Zealand",
+%%% address-2 = "School of Cognitive and Computing Sciences
+%%% University of Sussex
+%%% Brighton BN1 9QH
+%%% UK",
+%%% telephone-1 = "+64 9 373 7599 x 5120",
+%%% telephone-2 = "+44 273 606755 x 3238",
+%%% FAX-1 = "+64 9 373 7453",
+%%% FAX-2 = "+44 273 678188",
+%%% checksum = "49457 121 567 4939",
+%%% email-1 = "jeremy@cs.aukuni.ac.nz",
+%%% email-2 = "alanje@cogs.sussex.ac.uk",
+%%% codetable = "ISO/ASCII",
+%%% keywords = "metafont symbols math fonts",
+%%% supported = "yes",
+%%% abstract = "This is part of the metafont program for
+%%% the St Mary's Road symbol font.",
+%%% docstring = "This is part of the metafont program for
+%%% the St Mary's Road symbol font. The font
+%%% contains a number of mathematical
+%%% characters which are not present in the
+%%% standard TeX and AMS symbol fonts.
+%%%
+%%% It is described in stmaryrd.tex.
+%%%
+%%% Copyright 1992 Jeremy Gibbons and Alan Jeffrey.
+%%%
+%%% The checksum field above contains a CRC-16
+%%% checksum as the first value, followed by the
+%%% equivalent of the standard UNIX wc (word
+%%% count) utility output of lines, words, and
+%%% characters. This is produced by Robert
+%%% Solovay's checksum utility.",
+%%% package = "St Mary's Road",
+%%% dependencies = "none",
+%%% }
+%%% ====================================================================
+%%%
+%%% 20 May 1991, v1.0: Created the font out of alans.mf and galileo.mf.
+%%%
+%%% 2 Jun 1992, v1.1: added the headers.
+
+% This is the base file for the St Mary's Road symbol font, stmaryrd.mf.
+
+% The following stolen from the AMS bsymbols.mf file:
+
+def char_negate(suffix c,t,b) = %c is center point; t is top point; b is bottom
+pickup rule.nib;
+w-x.t=x.b; y.t-y.c=y.c-y.b; draw z.t--z.b;
+penlabels(t,c,b); enddef;
+def char_center(suffix c) = % find center of type character
+x.c=w/2; y.c=.5[-d,h]; enddef;
+
+% The command to draw semantic brackets:
+
+def left_semantic_bracket(expr breadth,do_top,do_bot) =
+ pickup crisp.nib;
+ numeric thickness; thickness=hround breadth;
+ pos1(thickness,0); pos2(thickness,0);
+ top y1=h; bot y2=1-d; lft x1l=lft x2l=hround(2.5u-.5thickness);
+ filldraw stroke z1e--z2e; % stem1
+ pos3(thickness,90); pos4(thickness,90);
+ pos5(thickness,90); pos6(thickness,90);
+ x3=x5=x1l; rt x4=rt x6=hround(w-.75u+.5thickness);
+ y3r=y4r=y1; y5l=y6l=y2;
+ if do_top: filldraw stroke z3e--z4e; fi % upper bar
+ if do_bot: filldraw stroke z5e--z6e; fi % lower bar
+ pos7(thickness,0); pos8(thickness,0);
+ y7=y1; y8=y2; x7=x8=x1+hround(0.5(w - 3.25u));
+ filldraw stroke z7e--z8e; % stem2
+ penlabels(1,2,3,4,5,6,7,8); enddef;
+
+def right_semantic_bracket(expr breadth,do_top,do_bot) =
+ pickup crisp.nib;
+ numeric thickness; thickness=hround breadth;
+ pos1(thickness,0); pos2(thickness,0);
+ top y1=h; bot y2=1-d; rt x1r=rt x2r=hround(w-2.5u+.5thickness);
+ filldraw stroke z1e--z2e; % stem1
+ pos3(thickness,90); pos4(thickness,90);
+ pos5(thickness,90); pos6(thickness,90);
+ x3=x5=x1r; lft x4=lft x6=hround(.75u-.5thickness);
+ y3r=y4r=y1; y5l=y6l=y2;
+ if do_top: filldraw stroke z3e--z4e; fi % upper bar
+ if do_bot: filldraw stroke z5e--z6e; fi % lower bar
+ pos7(thickness,0); pos8(thickness,0);
+ y7=y1; y8=y2; x7=x8=x1-hround(0.5(w - 3.25u));
+ filldraw stroke z7e--z8e; % stem2
+ penlabels(1,2,3,4,5,6,7,8); enddef;
+
+% The command to draw a circle (with free symmetry hacks):
+
+def begincircle (expr n) =
+ beginarithchar(n);
+ pickup rule.nib;
+ if .5w <> good.x .5w: change_width; fi
+ lft x6=hround u-eps; x2=w-x6; y2=math_axis; y8-y2 = .5(x2-x6);
+ circle_points; draw_circle % circle
+enddef;
+
+% And to draw a box (with free symmetry hacks):
+
+def beginbox (expr n) =
+ beginarithchar(n);
+ pickup rule.nib;
+ if .5w <> good.x .5w: change_width; fi
+ lft x1=hround 1.5u-eps; x2=w-x1; x3=x2; x4=x1;
+ y1-y4 = x2-x1; .5[y1,y4]=math_axis; y1=y2; y3=y4;
+ draw z1--z2--z3--z4--cycle; % box
+enddef
diff --git a/fonts/stmaryrd/stmarych.mf b/fonts/stmaryrd/stmarych.mf
new file mode 100644
index 0000000000..6bb836a24f
--- /dev/null
+++ b/fonts/stmaryrd/stmarych.mf
@@ -0,0 +1,221 @@
+%%% ====================================================================
+%%% @METAFONT-file{
+%%% author-1 = "Jeremy Gibbons",
+%%% author-2 = "Alan Jeffrey",
+%%% version = "1.1",
+%%% date = "02 June 1992",
+%%% time = "15:06:36 BST",
+%%% filename = "stmarych.mf",
+%%% address-1 = "Department of Computer Science
+%%% University of Aukland
+%%% Private Bag
+%%% Aukland
+%%% New Zealand",
+%%% address-2 = "School of Cognitive and Computing Sciences
+%%% University of Sussex
+%%% Brighton BN1 9QH
+%%% UK",
+%%% telephone-1 = "+64 9 373 7599 x 5120",
+%%% telephone-2 = "+44 273 606755 x 3238",
+%%% FAX-1 = "+64 9 373 7453",
+%%% FAX-2 = "+44 273 678188",
+%%% checksum = "17234 221 693 7683",
+%%% email-1 = "jeremy@cs.aukuni.ac.nz",
+%%% email-2 = "alanje@cogs.sussex.ac.uk",
+%%% codetable = "ISO/ASCII",
+%%% keywords = "metafont symbols math fonts",
+%%% supported = "yes",
+%%% abstract = "This is part of the metafont program for
+%%% the St Mary's Road symbol font.",
+%%% docstring = "This is part of the metafont program for
+%%% the St Mary's Road symbol font. The font
+%%% contains a number of mathematical
+%%% characters which are not present in the
+%%% standard TeX and AMS symbol fonts.
+%%%
+%%% It is described in stmaryrd.tex.
+%%%
+%%% Copyright 1992 Jeremy Gibbons and Alan Jeffrey.
+%%%
+%%% The checksum field above contains a CRC-16
+%%% checksum as the first value, followed by the
+%%% equivalent of the standard UNIX wc (word
+%%% count) utility output of lines, words, and
+%%% characters. This is produced by Robert
+%%% Solovay's checksum utility.",
+%%% package = "St Mary's Road",
+%%% dependencies = "none",
+%%% }
+%%% ====================================================================
+%%%
+%%% 20 May 1991, v1.0: Created the file out of which.mf, which performed a
+%%% similar job for alans.mf and galileo.mf.
+%%%
+%%% 21 May 1991, v1.01: Renamed some of the characters to be more AMSy.
+%%%
+%%% 2 Jun 1992, v1.1: added the headers.
+
+% Defines the character positions and extension information for the St
+% Mary's Road font, stmaryrd.mf.
+
+short_left_arrow := 0;
+short_right_arrow := 1;
+short_up_arrow := 2;
+short_down_arrow := 3;
+
+Y_up := 4;
+Y_down := 5;
+Y_left := 6;
+Y_right := 7;
+
+var_curly_vee := 8;
+var_curly_wedge := 9;
+
+minus_o := 10;
+bar_o := 11;
+
+sslash := 12;
+bbslash := 13;
+
+moo := 14;
+
+var_o_times := 15;
+var_o_ast := 16;
+var_o_bar := 17;
+var_o_dot := 18;
+var_o_slash := 19;
+var_o_bslash := 20;
+var_o_circle := 21;
+var_o_plus := 22;
+var_o_minus := 23;
+
+box_ast := 24;
+box_bar := 25;
+box_dot := 26;
+box_slash := 27;
+box_bslash := 28;
+box_circle := 29;
+box_box := 30;
+box_empty := 31;
+
+lightning := 32;
+merge := 33;
+var_times := 34;
+
+fat_semi := 35;
+
+ssw_arrow := 36;
+sse_arrow := 37;
+
+curly_wedge_up_arrow := 38;
+curly_wedge_down_arrow := 39;
+
+fat_slash := 40;
+fat_bslash := 41;
+
+l_bag := 42;
+r_bag := 43;
+
+var_big_circ := 44;
+
+left_right_arrow_eq := 45;
+
+curly_vee_down_arrow := 46;
+curly_vee_up_arrow := 47;
+
+nnw_arrow := 48;
+nne_arrow := 49;
+
+left_slice := 50;
+right_slice := 51;
+
+var_o_less_than := 52;
+var_o_greater_than := 53;
+var_o_vee := 54;
+var_o_wedge := 55;
+
+tall_oblong := 56;
+interleave := 57;
+
+o_bar := 58;
+o_bslash := 59;
+o_less_than := 60;
+o_greater_than := 61;
+o_vee := 62;
+o_wedge := 63;
+
+oblong := 64;
+
+in_plus := 65;
+ni_plus := 66;
+n_plus := 67;
+sub_set_plus := 68;
+sup_set_plus := 69;
+sub_set_plus_eq := 70;
+sup_set_plus_eq := 71;
+
+L_bag := 72;
+R_bag := 73;
+ll_bracket := 74;
+rr_bracket := 75;
+ll_parenthesis := 76;
+rr_parenthesis := 77;
+
+bin_ampersand := 78;
+bin_dnasrepma := 79;
+
+triangle_left_eq_slant := 80;
+triangle_right_eq_slant := 81;
+n_triangle_left_eq_slant := 82;
+n_triangle_right_eq_slant := 83;
+
+ll_floor := 84;
+rr_floor := 85;
+
+ll_ceil := 86;
+rr_ceil := 87;
+
+arrow_not := 88;
+Arrow_not := 89;
+
+Maps_to_char := 90;
+maps_from_char := 91;
+Maps_from_char := 92;
+
+left_right_arrow_triangle := 93;
+left_arrow_triangle := 94;
+right_arrow_triangle := 95;
+
+big_triangle_down := 96;
+big_triangle_up := 97;
+big_curly_vee := 98;
+big_curly_wedge := 99;
+big_sq_cap := 100;
+big_box := 101;
+big_parallel := 102;
+big_interleave := 103;
+
+big_n_plus := 112;
+
+big_ll_bracket := 113;
+big_rr_bracket := 121;
+
+charlist big_sq_cap: big_sq_cap+8;
+charlist big_box: big_box+8;
+charlist big_parallel: big_parallel+8;
+charlist big_interleave: big_interleave+8;
+charlist big_n_plus: big_n_plus+8;
+charlist big_triangle_down: big_triangle_down+8;
+charlist big_triangle_up: big_triangle_up+8;
+charlist big_curly_vee: big_curly_vee+8;
+charlist big_curly_wedge: big_curly_wedge+8;
+
+charlist big_ll_bracket:
+ big_ll_bracket+1: big_ll_bracket+2: big_ll_bracket+3: big_ll_bracket+4;
+extensible big_ll_bracket+4:
+ big_ll_bracket+4,0,big_ll_bracket+5,big_ll_bracket+6;
+charlist big_rr_bracket:
+ big_rr_bracket+1: big_rr_bracket+2: big_rr_bracket+3: big_rr_bracket+4;
+extensible big_rr_bracket+4:
+ big_rr_bracket+4,0,big_rr_bracket+5,big_rr_bracket+6;
+
diff --git a/fonts/stmaryrd/stmaryjg.mf b/fonts/stmaryrd/stmaryjg.mf
new file mode 100644
index 0000000000..c5ff3fa43b
--- /dev/null
+++ b/fonts/stmaryrd/stmaryjg.mf
@@ -0,0 +1,600 @@
+%%% ====================================================================
+%%% @METAFONT-file{
+%%% author-1 = "Jeremy Gibbons",
+%%% author-2 = "Alan Jeffrey",
+%%% version = "1.1",
+%%% date = "02 June 1992",
+%%% time = "15:06:36 BST",
+%%% filename = "stmaryjg.mf",
+%%% address-1 = "Department of Computer Science
+%%% University of Aukland
+%%% Private Bag
+%%% Aukland
+%%% New Zealand",
+%%% address-2 = "School of Cognitive and Computing Sciences
+%%% University of Sussex
+%%% Brighton BN1 9QH
+%%% UK",
+%%% telephone-1 = "+64 9 373 7599 x 5120",
+%%% telephone-2 = "+44 273 606755 x 3238",
+%%% FAX-1 = "+64 9 373 7453",
+%%% FAX-2 = "+44 273 678188",
+%%% checksum = "58461 600 2192 23548",
+%%% email-1 = "jeremy@cs.aukuni.ac.nz",
+%%% email-2 = "alanje@cogs.sussex.ac.uk",
+%%% codetable = "ISO/ASCII",
+%%% keywords = "metafont symbols math fonts",
+%%% supported = "yes",
+%%% abstract = "This is part of the metafont program for
+%%% the St Mary's Road symbol font.",
+%%% docstring = "This is part of the metafont program for
+%%% the St Mary's Road symbol font. The font
+%%% contains a number of mathematical
+%%% characters which are not present in the
+%%% standard TeX and AMS symbol fonts.
+%%%
+%%% It is described in stmaryrd.tex.
+%%%
+%%% Copyright 1992 Jeremy Gibbons and Alan Jeffrey.
+%%%
+%%% The checksum field above contains a CRC-16
+%%% checksum as the first value, followed by the
+%%% equivalent of the standard UNIX wc (word
+%%% count) utility output of lines, words, and
+%%% characters. This is produced by Robert
+%%% Solovay's checksum utility.",
+%%% package = "St Mary's Road",
+%%% dependencies = "none",
+%%% }
+%%% ====================================================================
+%%%
+%%% 20 May 1991, v1.0: Created the file out of galileo.mf.
+%%%
+%%% 2 Jun 1992, v1.1: added the headers.
+
+% These are Jeremy's symbols for the St Mary's Road font, stmaryrd.mf.
+
+iff known short_left_arrow: cmchar "Short leftwards arrow";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(short_left_arrow,14u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup crisp.nib;
+pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(bar,0); pos4(bar,0);
+y0=y1=y2=math_axis; x1+.5rule_thickness=hround(w-u); lft x0=hround u;
+y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0+3u+eps;
+pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+numeric t; path p; p=z4r{z9-z4}..z6r;
+t=xpart(p intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
+filldraw z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3r{z9-z3}..z5r)
+ --z3l{z9-z3}..z0 & cycle; % arrowhead and stem
+penlabels(0,1,2,3,4,5,6,9);
+endchar;
+
+iff known short_right_arrow: cmchar "Short rightwards arrow";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(short_right_arrow,14u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup crisp.nib;
+pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(bar,0); pos4(bar,0);
+y0=y1=y2=math_axis; x1-.5rule_thickness=hround u; rt x0=hround(w-u);
+y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0-3u-eps;
+pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+numeric t; path p; p=z4l{z9-z4}..z6r;
+t=xpart(p intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
+filldraw z0..{z4-z9}z4r--subpath (0,t) of\\(z4l{z9-z4}..z6r)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3l{z9-z3}..z5r)
+ --z3r{z9-z3}..z0 & cycle; % arrowhead and stem
+penlabels(0,1,2,3,4,5,6,9);
+endchar;
+
+iff known short_up_arrow: cmchar "Upward arrow";
+beginchar(short_up_arrow,9u#,
+ if monospace: 27/7u#+math_axis#,27/7u#-math_axis#
+ else: 6u#+math_axis#,6u#-math_axis#
+ fi);
+italcorr .76asc_height#*slant+.5crisp#-u#;
+adjust_fit(0,0); pickup crisp.nib;
+pos1(rule_thickness,0); pos2(rule_thickness,0);
+pos3(bar,90); pos4(bar,90);
+lft x1l=hround(.5w-.5rule_thickness); y1-.5rule_thickness=-d;
+x0=x1=x2; top y0=h; x0-x3=x4-x0=3u+eps;
+y3=y4=y0-.24asc_height-eps;
+pos5(bar,angle(z4-z0)); z5l=z0;
+pos6(bar,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+numeric t; path p; p=z4l{z9-z4}..z6r;
+t=xpart(p intersectiontimes((x2r,-d)--(x2r,h))); y2=ypart point t of p;
+filldraw z0..{z4-z9}z4r--subpath (0,t) of\\(z4l{z9-z4}..z6r)
+ --z2r---z1r..z1l---z2l--subpath (t,0) of\\(z3l{z9-z3}..z5r)
+ --z3r{z9-z3}..z0 & cycle; % arrowhead and stem
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+iff known short_down_arrow: cmchar "Downward arrow";
+beginchar(short_down_arrow,9u#,
+ if monospace: 27/7u#+math_axis#,27/7u#-math_axis#
+ else: 6u#+math_axis#,6u#-math_axis#
+ fi);
+italcorr .76asc_height#*slant+.5crisp#-u#;
+adjust_fit(0,0); pickup crisp.nib;
+pos1(rule_thickness,0); pos2(rule_thickness,0);
+pos3(bar,90); pos4(bar,90);
+lft x1l=hround(.5w-.5rule_thickness); y1+.5rule_thickness=h;
+x0=x1=x2; bot y0=-d; x0-x3=x4-x0=3u+eps;
+y3=y4=y0+.24asc_height+eps;
+pos5(bar,angle(z4-z0)); z5l=z0;
+pos6(bar,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+numeric t; path p; p=z4r{z9-z4}..z6r;
+t=xpart(p intersectiontimes((x2r,-d)--(x2r,h))); y2=ypart point t of p;
+filldraw z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r)
+ --z2r---z1r..z1l---z2l--subpath (t,0) of\\(z3r{z9-z3}..z5r)
+ --z3l{z9-z3}..z0 & cycle; % arrowhead and stem
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+iff known Y_up: cmchar "Fork (upside-down Y)";
+beginchar(Y_up,10u#,6u#+math_axis#,5u#-math_axis#); pickup rule.nib;
+adjust_fit(0,0);
+x1=.5w; top y1=h-u;
+x2=x1; y2=math_axis;
+lft x3=u; rt x4=w-u; bot y3 = -d+u; y4=y3;
+draw z1--z2; draw z3--z2--z4;
+labels(1,2,3,4); endchar;
+
+iff known Y_down: cmchar "Join (Y)";
+beginchar(Y_down,10u#,5u#+math_axis#,6u#-math_axis#); pickup rule.nib;
+adjust_fit(0,0);
+x1=.5w; bot y1=-d+u;
+x2=x1; y2=math_axis;
+lft x3=u; rt x4=w-u; top y3 = h-u; y4=y3;
+draw z1--z2; draw z3--z2--z4;
+labels(1,2,3,4); endchar;
+
+iff known Y_left: cmchar "Leftwards pointing Y -<";
+beginchar(Y_left,11u#,5u#+math_axis#,5u#-math_axis#); pickup rule.nib;
+adjust_fit(0,0);
+lft x1=hround u; x2=6u; y1=y2=vround math_axis;
+rt x3=rt x4=hround(w-u); top y3=vround(h-u)+eps; bot y4=vround(u-d)+eps;
+draw z1--z2; draw z3--z2--z4;
+labels(1,2,3,4); endchar;
+
+iff known Y_right: cmchar "Rightwards pointing Y >-";
+beginchar(Y_right,11u#,5u#+math_axis#,5u#-math_axis#); pickup rule.nib;
+adjust_fit(0,0);
+rt x1=hround(w-u); x2=5u; y1=y2=vround math_axis;
+lft x3=lft x4=hround u; top y3=vround(h-u)+eps; bot y4=vround(u-d)+eps;
+draw z1--z2; draw z3--z2--z4;
+labels(1,2,3,4); endchar;
+
+iff known var_curly_vee: cmchar "Zipwith symbol";
+beginchar(var_curly_vee,12u#,asc_height#,asc_depth#);
+adjust_fit(0,0); pickup rule.nib;
+x2=good.x .5w; w:=r:=2x2;
+lft x1=0; x3=w-x1;
+top y1=h; bot y2=-d-o; y3=y1;
+x4=x2; y4=x_height;
+draw z1{z4-z1}..{down}z2; % left arm
+draw z3{z4-z3}..{down}z2; % right arm
+labels(1,2,3,4); endchar;
+
+iff known var_curly_wedge: cmchar "Upside-down zipwith symbol";
+beginchar(var_curly_wedge,12u#,asc_height#,asc_depth#);
+adjust_fit(0,0); pickup rule.nib;
+x2=good.x .5w; w:=r:=2x2;
+lft x1=0; x3=w-x1;
+top y2=h; bot y1=-d-o; y3=y1;
+x4=x2; y4=h-(x_height+d);
+draw z1{z4-z1}..{up}z2; % left arm
+draw z3{z4-z3}..{up}z2; % right arm
+labels(1,2,3,4); endchar;
+
+iff known minus_o: cmchar "Above sign"; % Parts nicked from "plus"
+beginchar(minus_o,14u#,5u#+math_axis#,5u#-math_axis#); pickup rule.nib;
+adjust_fit(0,0);
+%x11=x12=good.x .5w; top y11=h+eps; .5[y11,y12]=math_axis;
+lft x13=hround u-eps; x14=w-x13; y13=y14=math_axis;
+%draw z11--z12; % stem
+draw z13--z14; % crossbar
+top y8=vround h-u-eps; y8-math_axis = math_axis-y4; x4=.5w; .5(y8-y4) = x2-x4;
+circle_points; draw_circle; % circle
+labels(1,2,3,4,5,6,7,8,13,14); endchar;
+
+iff known bar_o: cmchar "Beside sign";
+beginchar(bar_o,10u#,6u#+math_axis#,6u#-math_axis#); pickup rule.nib;
+adjust_fit(0,0);
+x11=x12=good.x .5w; top y11=h+eps; .5[y11,y12]=math_axis;
+%lft x3=hround u-eps; x4=w-x3; y3=y4=math_axis;
+draw z11--z12; % stem
+%draw z3--z4; % crossbar
+lft x6=hround u; x2=w-x6; y2=math_axis; y8-y2 = .5(x2-x6);
+circle_points; draw_circle; % circle
+penlabels(1,2,3,4,5,6,7,8,11,12); endchar;
+
+iff known sslash: cmchar "Double forwards slash";
+beginchar(sslash,9u#+slash_separation#,body_height#, paren_depth#);
+adjust_fit(0,0); pickup rule.nib;
+lft x2=hround u-eps; bot y4=bot y2=-d-eps;
+rt x3=hround(w-u)+eps; top y3=top y1= h+eps;
+x1=x3-hround slash_separation;
+x4=x2+hround slash_separation;
+draw z1--z2; draw z3--z4;
+penlabels(1,2,3,4);
+endchar;
+
+iff known bbslash: cmchar "Double backwards slash";
+beginchar(bbslash,9u#+slash_separation#,body_height#, paren_depth#);
+adjust_fit(0,0); pickup rule.nib;
+lft x2=hround u-eps; bot y3=bot y1=-d-eps;
+rt x3=hround(w-u)+eps; top y4=top y2= h+eps;
+x1=x3-hround slash_separation;
+x4=x2+hround slash_separation;
+draw z1--z2; draw z3--z4;
+penlabels(1,2,3,4);
+endchar;
+
+iff known moo: cmchar "Moo (Chinese for `tree')";
+beginarithchar(moo); pickup rule.nib;
+if .5w <> good.x .5w: change_width; fi
+x1= .5w; y1-y3=y3-y7;
+lft x3=hround 2u-eps; x4=w-x3; y3=y4=math_axis;
+z2 = .5[z3,z4];
+lft x5=hround 2u-eps; x6=w-x5; y6=y5=.3[y7,y3];
+x7 = .4[x5,x1]; x8=w-x7; bot y7 = vround -o; y8=y7;
+draw z1--z2{down}..z7{left}..z5; % left leg
+draw z1--z2{down}..z8{right}..z6; % right leg
+draw z3--z4; % crossbar
+labels(1,2,3,4,5,6,7,8); endchar;
+
+iff known var_o_times: cmchar "Circular circle-times operator";
+begincircle(var_o_times);
+draw z1--z5; draw z3--z7; % diagonals
+labels(1,2,3,4,5,6,7,8); endchar;
+
+iff known var_o_ast: cmchar "Circular circle-asterisk operator";
+begincircle(var_o_ast);
+z0=.5[z2,z6]; % centre of circle
+numeric ast_flare; ast_flare=hround .7[thin_join,stem];
+for d=-150 step 60 until 150: z[d]=z0+.7dir d scaled (y8-y2); % ie scaled radius
+ numeric theta; theta=angle(z[d]-z0);
+ fill z0+.5(0,-thin_join)rotated theta
+ ---z[d]+.5(-ast_flare,-ast_flare)rotated theta
+ ..z[d]..z[d]+.5(-ast_flare,ast_flare)rotated theta
+ ---z0+.5(0,thin_join)rotated theta--cycle; endfor % diagonal at angle |d|
+labels(0,[-150],[-90],[-30],30,90,150,1,2,3,4,5,6,7,8); endchar;
+
+iff known var_o_bar: cmchar "Circular circle-bar operator";
+begincircle(var_o_bar);
+draw z4--z8; % bar
+labels(1,2,3,4,5,6,7,8); endchar;
+
+iff known var_o_dot: cmchar "Circle-dot operator";
+begincircle(var_o_dot);
+fill fullcircle scaled(1.3dot_size+eps) shifted(.5[z4,z8]); % dot
+labels(1,2,3,4,5,6,7,8); endchar;
+
+iff known var_o_slash: cmchar "Circular circle-slash operator";
+begincircle(var_o_slash);
+draw z1--z5; % diagonal
+labels(1,2,3,4,5,6,7,8); endchar;
+
+iff known var_o_bslash: cmchar "Circular circle-backslash operator";
+begincircle(var_o_bslash);
+draw z3--z7; % diagonal
+labels(1,2,3,4,5,6,7,8); endchar;
+
+iff known var_o_circle: cmchar "Circular circle-circle operator";
+begincircle(var_o_circle);
+z0=.5[z2,z6]; % centre of circle
+for i = 1 upto 8:
+ z[i+8]=.5[z0,z[i]];
+endfor;
+draw z16{right}...z9{z10-z16}...z10{down}...z11{z12-z10}...z12{left}
+ ...z13{z14-z12}...z14{up}...z15{z16-z14}...cycle; % inner circle
+labels(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16); endchar;
+
+iff known var_o_plus: cmchar "Circular circle-plus operator";
+begincircle(var_o_plus);
+draw z2--z6; draw z4--z8; % bar and stem
+labels(1,2,3,4,5,6,7,8); endchar;
+
+iff known var_o_minus: cmchar "Circular circle-minus operator";
+begincircle(var_o_minus);
+draw z2--z6; % bar
+labels(1,2,3,4,5,6,7,8); endchar;
+
+% Changed hround to floor in the following to make sure that x1<>x2,
+% otherwise theta ends up being angle(0,0). AJ.
+
+iff known box_ast: cmchar "Box_ast operator";
+beginbox(box_ast);
+z0=.5[z1,z3];
+numeric ast_flare; ast_flare=hround .7[thin_join,stem];
+for d=-150 step 60 until 150: z[d]=z0+.7dir d scaled .5(x2-x1); % ie scaled `radius'
+ numeric theta; theta=angle(z[d]-z0);
+ fill z0+.5(0,-thin_join)rotated theta
+ ---z[d]+.5(-ast_flare,-ast_flare)rotated theta
+ ..z[d]..z[d]+.5(-ast_flare,ast_flare)rotated theta
+ ---z0+.5(0,thin_join)rotated theta--cycle; endfor % diagonal at angle |d|
+labels(0,[-150],[-90],[-30],30,90,150,1,2,3,4); endchar;
+
+iff known box_bar: cmchar "Box_bar operator";
+beginbox(box_bar);
+draw .5[z1,z2]--.5[z3,z4];
+labels(1,2,3,4); endchar;
+
+iff known box_dot: cmchar "Box_dot operator";
+beginbox(box_dot);
+fill fullcircle scaled(1.3dot_size+eps) shifted(.5[z1,z3]); % dot
+labels(1,2,3,4); endchar;
+
+iff known box_slash: cmchar "Box_slash operator";
+beginbox(box_slash);
+draw z2--z4;
+labels(1,2,3,4); endchar;
+
+iff known box_bslash: cmchar "Box_bslash operator";
+beginbox(box_bslash);
+draw z1--z3;
+labels(1,2,3,4); endchar;
+
+iff known box_circle: cmchar "Box_circle operator";
+beginarithchar(box_circle);
+if .5w <> good.x .5w: change_width; fi
+pickup rule.nib; autorounded;
+lft x11=hround 1.5u; x12=w-x11; x13=x12; x14=x11;
+y11-y14 = x12-x11; .5[y11,y14]=math_axis; y11=y12; y13=y14;
+lft x6=hround .25[x11,x12]; x2=w-x6; y2=math_axis; y8-y2 = .5(x2-x6);
+circle_points; draw_circle; % circle
+draw z11--z12--z13--z14--cycle; % box
+labels(11,12,13,14); endchar;
+
+iff known box_box: cmchar "Box_box operator";
+beginbox(box_box);
+z0=.5[z1,z3];
+for i = 1 upto 4: z[i+4]=.4[z0,z[i]]; endfor
+draw z5--z6--z7--z8--cycle;
+labels(1,2,3,4); endchar;
+
+iff known box_empty: cmchar "Box operator";
+beginbox(box_empty);
+labels(1,2,3,4); endchar; % like LaTeX Box, only with less side bearing
+
+iff known lightning: cmchar "Lightning strike"; % Adapted from sswarrow
+beginchar(lightning,11u#,asc_height#,asc_depth#);
+adjust_fit(0,0); pickup crisp.nib;
+x1+.5rule_thickness=hround(w-u); lft x0=hround 3u;
+y1+.5rule_thickness=h; bot y0=-d;
+numeric theta,delta; theta=angle(z1-z0); delta=3u++.24asc_height;
+if abs(theta-45)<2.5: theta:=45; y1:=y0+x1-x0; fi % near-45$^\circ$ angle
+pos1(rule_thickness,-90+theta); pos2(rule_thickness,-90+theta);
+pos3(bar,-180+theta); pos4(bar,-180+theta);
+ %y3=y0; x4=x0; x3-x0=y4-y0=delta+eps;
+y10=y0; x11=x0; x10-x0=y11-y0=delta+eps; % Can now do arrows of any angle
+z3=z10 rotatedaround(z0,theta-45);
+z4=z11 rotatedaround(z0,theta-45);
+pos5(bar,theta+45); z5l=z0; pos6(bar,theta-45); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+numeric t; path p; p=z4l{z9-z4}..z6r;
+t=xpart(p intersectiontimes (z1l--(z1l+2(z0-z1)))); z2l=point t of p;
+filldraw z0..{z4-z9}z4r
+ --subpath (0,t) of\\(z4l{z9-z4}..z6r)
+ % --z2l---z1l..z1r---z2r
+ --subpath (t,0) of\\(z3l{z9-z3}..z5r)
+ --z3r{z9-z3}..z0 & cycle; % arrowhead
+z20=.45[z1,z2];
+z21=z22 + .55(z2-z1);
+x22=x1-3u; y22=y1;
+pickup rule.nib; draw z2--z20--z21--z22; % stem
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+iff known merge: cmchar "Merge symbol";
+beginchar(merge,16u#,asc_height#,0);
+adjust_fit(0,0); pickup rule.nib;
+lft x1=hround 1.1u; x3 = .65[x1,x6]; x2 = .5[x1,x3];
+y2=h+o; bot y1=0; y3 = y1;
+x6=w-x1; y6=y1;
+z4-z1 = z5-z2 = z6-z3;
+draw z1---z2---z3; % left-hand
+draw z4--z5--z6; % right-hand
+labels(1,2,3,4,5,6); endchar;
+
+iff known var_times: cmchar "Cartesian Product operator"; % bits of this taken
+beginchar(var_times,10u#,asc_height#,0); % from "exists"
+adjust_fit(0,0); pickup rule.nib;
+lft x1=hround u-eps; x2=x3=w-x1; x4=x1;
+top y1=h; bot y4=0; y2=y1; y3=y4;
+draw z1--z3; draw z2--z4; % diagonals
+labels(1,2,3,4); endchar;
+
+iff known fat_semi: cmchar "Fat semicolon";
+beginchar(fat_semi,6u#,0.5[x_height#,asc_height#],comma_depth#);
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x3=lft x7=hround u; rt x1=rt x5=hround(w-u); x2=x4=x6=x8=w/2;
+top y4=h; bot y6=0; y4-y2=y8-y6=x1-x3; y1=y3=0.5[y2,y4];
+y5=y7=0.5[y6,y8]; lft x9=2u; bot y9=-d;
+draw z1..z2..z3..z4..cycle;
+draw z5{down}..z6..z7..z8..z5{down}..{curl 0}z9;
+labels(1,2,3,4,5,6,7,8,9); endchar;
+
+iff known ssw_arrow: cmchar "Southsouthwest arrow";
+beginchar(ssw_arrow,11u#,asc_height#,asc_depth#);
+adjust_fit(0,0); pickup crisp.nib;
+x1+.5rule_thickness=hround(w-u); lft x0=hround 3u; % This 3u used to be a u in
+y1+.5rule_thickness=h; bot y0=-d; % the program for swarrow.
+ % 3u (with width 11u) gives
+ % arrow parallel to langle.
+numeric theta,delta; theta=angle(z1-z0); delta=3u++.24asc_height;
+if abs(theta-45)<2.5: theta:=45; y1:=y0+x1-x0; fi % near-45$^\circ$ angle
+pos1(rule_thickness,-90+theta); pos2(rule_thickness,-90+theta);
+pos3(bar,-180+theta); pos4(bar,-180+theta);
+ %y3=y0; x4=x0; x3-x0=y4-y0=delta+eps;
+y10=y0; x11=x0; x10-x0=y11-y0=delta+eps; % Can now do arrows of any angle
+z3=z10 rotatedaround(z0,theta-45);
+z4=z11 rotatedaround(z0,theta-45);
+pos5(bar,theta+45); z5l=z0; pos6(bar,theta-45); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+numeric t; path p; p=z4l{z9-z4}..z6r;
+t=xpart(p intersectiontimes (z1l--(z1l+2(z0-z1)))); z2l=point t of p;
+filldraw z0..{z4-z9}z4r
+ --subpath (0,t) of\\(z4l{z9-z4}..z6r)
+ --z2l---z1l..z1r---z2r
+ --subpath (t,0) of\\(z3l{z9-z3}..z5r)
+ --z3r{z9-z3}..z0 & cycle; % arrowhead and stem
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+iff known sse_arrow: cmchar "Southsoutheast arrow";
+beginchar(sse_arrow,11u#,asc_height#,asc_depth#);
+adjust_fit(0,0); pickup crisp.nib;
+x1-.5rule_thickness=hround u; rt x0=hround(w-3u);
+y1+.5rule_thickness=h; bot y0=-d;
+numeric theta,delta; theta=angle(z0-z1); delta=3u++.24asc_height;
+if abs(theta+45)<2.5: theta:=-45; y1:=y0+x0-x1; fi % near-45$^\circ$ angle
+pos1(rule_thickness,90+theta); pos2(rule_thickness,90+theta);
+pos3(bar,theta); pos4(bar,theta);
+ %x3=x0; y4=y0; y3-y0=x0-x4=delta+eps;
+x10=x0; y11=y0; y10-y0=x0-x11=delta+eps;
+z3=z10 rotatedaround(z0,theta+45);
+z4=z11 rotatedaround(z0,theta+45);
+pos5(bar,theta+225); z5l=z0; pos6(bar,theta+135); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+numeric t; path p; p=z4l{z9-z4}..z6r;
+t=xpart(p intersectiontimes (z1l--(z1l+2(z0-z1)))); z2l=point t of p;
+filldraw z0..{z4-z9}z4r
+ --subpath (0,t) of\\(z4l{z9-z4}..z6r)
+ --z2l---z1l..z1r---z2r
+ --subpath (t,0) of\\(z3l{z9-z3}..z5r)
+ --z3r{z9-z3}..z0 & cycle; % arrowhead and stem
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+iff known curly_wedge_up_arrow:
+cmchar "Upwards accumulate symbol";
+beginchar(curly_wedge_up_arrow,12u#,asc_height#,asc_depth#);
+adjust_fit(0,0); pickup rule.nib;
+x2=good.x .5w; w:=r:=2x2;
+lft x1=0; x3=w-x1;
+bot y1=-d; top y2=h+o; y3=y1;
+x4=x2; y4=h-(x_height+d);
+pickup crisp.nib;
+pos11(rule_thickness,0); pos12(rule_thickness,0); % arrow head nicked from
+pos13(bar,90); pos14(bar,90); % up_arrow
+lft x11l=hround(.5w-.5rule_thickness); y11-.5rule_thickness=-d;
+x10=x11=x12; top y10=top y2; x10-x13=x14-x10=3u+eps;
+y13=y14=y10-.24asc_height-eps;
+pos15(bar,angle(z14-z10)); z15l=z10;
+pos16(bar,angle(z13-z10)); z16l=z10;
+z19=.381966[.5[z13,z14],z10];
+numeric t; path p; p=z14l{z19-z14}..z16r;
+t=xpart(p intersectiontimes((x12r,-d)--(x12r,h))); y12=ypart point t of p;
+filldraw z10..{z14-z19}z14r--subpath (0,t) of\\(z14l{z19-z14}..z16r)
+ --z12r
+ -- % ---z11r..z11l---
+ z12l--subpath (t,0) of\\(z13l{z19-z13}..z15r)
+ --z13r{z19-z13}..z10 & cycle; % arrowhead
+pickup rule.nib;
+numeric t; path p; p=z1{z4-z1}..{up}z2;
+t=xpart(p intersectiontimes((0,y12)--(w,y12)));
+draw subpath (0,t) of\\(z1{z4-z1}..{up}z2); % left arm
+draw subpath (0,t) of\\(z3{z4-z3}..{up}z2); % right arm
+penlabels(10,11,12,13,14,15,16,19);
+labels(1,2,3,4); endchar;
+
+iff known curly_wedge_down_arrow:
+cmchar "Downwards accumulate symbol";
+beginchar(curly_wedge_down_arrow,12u#,asc_height#,asc_depth#);
+adjust_fit(0,0); pickup rule.nib;
+x2=good.x .5w; w:=r:=2x2;
+lft x1=0; x3=w-x1;
+bot y1=-d; top y2=h+o; y3=y1;
+x4=x2; y4=h-(x_height+d);
+pickup crisp.nib;
+numeric theta,delta; theta=angle(z4-z1); delta=3u++.24asc_height;
+pos11(rule_thickness,-90+theta); pos12(rule_thickness,-90+theta);
+pos13(bar,-180+theta); pos14(bar,-180+theta);
+lft x10=0; bot y10=-d;
+x11=w; z11=z10+whatever*(dir theta); % where the arrow stem would go
+y13a=y10; x14a=x10; x13a-x10=y14a-y10=delta+eps;
+z13=z13a rotatedaround(z10,theta-45);
+z14=z14a rotatedaround(z10,theta-45);
+pos15(bar,theta+45); z15l=z10; pos16(bar,theta-45); z16l=z10;
+z19=.381966[.5[z13,z14],z10];
+numeric t; path p; p=z14l{z19-z14}..z16r;
+t=xpart(p intersectiontimes (z11l--(z11l+2(z10-z11)))); z12l=point t of p;
+filldraw z10..{z14-z19}z14r
+ --subpath (0,t) of\\(z14l{z19-z14}..z16r)
+ --z12l
+ -- % ---z11l..z11r---
+ z12r
+ --subpath (t,0) of\\(z13l{z19-z13}..z15r)
+ --z13r{z19-z13}..z10 & cycle; % left arrowhead
+numeric theta,delta; theta=angle(z3-z4); delta=3u++.24asc_height;
+pos21(rule_thickness,90+theta); pos22(rule_thickness,90+theta);
+pos23(bar,theta); pos24(bar,theta);
+rt x20=w; bot y20=-d;
+x21=0; z21=z20+whatever*-(dir theta); % where the arrow stem would go
+x23a=x20; y24a=y20; y23a-y20=x20-x24a=delta+eps;
+z23=z23a rotatedaround(z20,theta+45);
+z24=z24a rotatedaround(z20,theta+45);
+pos25(bar,theta+225); z25l=z20; pos26(bar,theta+135); z26l=z20;
+z29=.381966[.5[z23,z24],z20];
+numeric t; path p; p=z24l{z29-z24}..z26r;
+t=xpart(p intersectiontimes (z21l--(z21l+2(z20-z21)))); z22l=point t of p;
+filldraw z20..{z24-z29}z24r
+ --subpath (0,t) of\\(z24l{z29-z24}..z26r)
+ --z22l
+ -- % ---z21l..z21r---
+ z22r
+ --subpath (t,0) of\\(z23l{z29-z23}..z25r)
+ --z23r{z29-z23}..z20 & cycle; % right arrowhead
+pickup rule.nib;
+numeric t; path p; p=z2{down}..{z1-z4}z1;
+t=xpart(p intersectiontimes(z12l--z12r));
+draw subpath (0,t) of\\(z2{down}..{z1-z4}z1); % left arm
+draw subpath (0,t) of\\(z2{down}..{z3-z4}z3); % right arm
+penlabels(10,11,12,13,14,15,16,19);
+labels(1,2,3,4); endchar;
+
+iff known fat_slash: cmchar "Fat slash";
+beginchar(fat_slash,13u#,body_height#,paren_depth#);
+numeric fatness; fatness = w-9u;
+adjust_fit(0,0); pickup rule.nib;
+rt x1=hround(w-u)+eps; top y1=h+eps; z4 = z1+fatness*right;
+lft x2=hround(fatness+u)+eps; bot y2=-d-eps; z3 = z2+fatness*right;
+draw z1--z2--z3--z4--z1; % diagonal
+labels(1,2); endchar;
+
+iff known fat_bslash: cmchar "Fat reverse slash";
+beginchar(fat_bslash,13u#,body_height#,paren_depth#);
+numeric fatness; fatness = w-9u;
+adjust_fit(0,0); pickup rule.nib;
+lft x1=hround u-eps; top y1=h+eps; z4 = z1+fatness*right;
+rt x2=hround(w-fatness-u)+eps; bot y2=-d-eps; z3 = z2+fatness*right;
+draw z1--z2--z3--z4--z1; % diagonal
+labels(1,2); endchar;
+
+iff known l_bag: cmchar "Left bag bracket";
+beginchar(l_bag,8u#,body_height#,paren_depth#);
+ % ht and dp from "left parenthesis" symbol
+adjust_fit(0,0); pickup rule.nib;
+lft x0=u; y0=h-2u;
+x1=1/2[x0,x2]; top y1=h;
+x2=2/3[x0,x3]; y2=y0;
+bot rt z3=(w-u,-d);
+draw z0..z1{right}..z2{down}..{right}z3;
+penlabels(0,1,2,3); endchar;
+
+iff known r_bag: cmchar "Right bag bracket";
+beginchar(r_bag,8u#,body_height#,paren_depth#);
+adjust_fit(0,0); pickup rule.nib;
+rt x0=w-u; y0=h-2u;
+x1=1/2[x0,x2]; top y1=h;
+x2=2/3[x0,x3]; y2=y0;
+bot lft z3=(u,-d);
+draw z0..z1{left}..z2{down}..{left}z3;
+penlabels(0,1,2,3); endchar;
+
+iff known var_big_circ: cmchar "Circular circle for copyright, etc.";
+beginchar(var_big_circ,18u#,asc_height#,desc_depth#); autorounded;
+adjust_fit(if monospace:-3u#,-3u# else: 0,0 fi); pickup rule.nib;
+lft x6=hround u; x2=w-x6; y2=.5[h+o,-d-o]; y8-y2 = .5(x2-x6);
+circle_points; draw_circle; % circle
+labels(1,2,3,4,5,6,7,8); endchar;
diff --git a/fonts/stmaryrd/stmaryrd.dtx b/fonts/stmaryrd/stmaryrd.dtx
new file mode 100644
index 0000000000..64c14d2d7a
--- /dev/null
+++ b/fonts/stmaryrd/stmaryrd.dtx
@@ -0,0 +1,664 @@
+%\iffalse
+% ====================================================================
+% @LaTeX-documentation-file{
+% author = "Alan Jeffrey",
+% version = "2.02a-tmp-CAR",
+% date = "03 March 2004",
+% time = "14:00:40 GMT",
+% filename = "stmaryrd.dtx",
+% address = "School of Cognitive and Computing Sciences
+% University of Sussex
+% Brighton BN1 9QH
+% UK",
+% telephone = "+44 273 606755 x 3238",
+% FAX = "+44 273 678188",
+% checksum = "???",
+% email = "alanje@cogs.sussex.ac.uk",
+% codetable = "ISO/ASCII",
+% keywords = "LaTeX math fonts",
+% supported = "yes",
+% abstract = "This is the documentation and
+% self-extracting archive for the stmaryrd
+% package. If you run latex2e on it, it will
+% produce the documentation, as well as
+% the stmaryrd package and font definition
+% file.",
+% docstring = "The checksum field above contains a CRC-16
+% checksum as the first value, followed by the
+% equivalent of the standard UNIX wc (word
+% count) utility output of lines, words, and
+% characters. This is produced by Robert
+% Solovay's checksum utility.",
+% package = "stands alone",
+% dependencies = "none",
+% }
+% ====================================================================
+%\fi
+% \CheckSum{772}
+%% \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 \~}
+%
+% \setcounter{StandardModuleDepth}{1}
+% \def\dst{\expandafter{\normalfont\scshape docstrip}}
+%
+% \changes{1.00}{1991/05/23}{File created}
+% \changes{1.01}{1991/05/25}{Updated for the new module.sty and
+% stmaryrd.mf.}
+% \changes{1.02}{1991/06/05}{By mistake, `varotimes wasn't swapped for
+% `otimes.}
+% \changes{1.03}{1991/06/25}{`longarrownot and `Longarrownot.}
+% \changes{1.04}{1991/06/27}{The default is now for the cmsy circles,
+% not the heavier ones. If you want `oplus, `otimes, etc. to
+% generate the heavier symbols, set the tag `heavycircles.}
+% \changes{1.10}{1992/06/02}{Added the headers.}
+% \changes{2.00}{1994/03/02}{Hacked for \LaTeXe{} by Martin Ward
+% (Martin.Ward@durham.ac.uk).}
+% \changes{2.01}{1994/03/02}{Made into a dtx file.}
+% \changes{2.02}{1994/03/03}{Fixed a couple of bugs with options.}
+% \changes{2.02a-tmp-CAR}{2004/03/03}{An emergency version to make
+% TLC2 correct (Chris Rowley).}
+%
+% \title{The St Mary's Road symbol font}
+% \author{Jeremy Gibbons \and Alan Jeffrey (and temporarily Chris Rowley)}
+% \date{Version 2.02a-tmp-CAR, March 2004}
+%
+% \maketitle
+%
+% \section{Introduction}
+%
+% This is a brief guide to the St Mary's Road symbol font, a new symbol
+% font for \TeX\ and \LaTeX. It is designed to live with the American
+% Mathematical Society's fonts, contained in {\tt amssymb.sty}.
+%
+% It provides a number of new symbols, including ones for derivation of
+% functional programming (such as $\varcurlyvee$, $\moo$ and
+% $\merge$), process algebra ($\llfloor$, $\oblong$ and
+% $\lightning$), domain theory ($\bigsqcap$), linear logic
+% ($\binampersand$ and $\bindnasrepma$), multisets ($\Lbag x \Rbag$,
+% $\nplus$, and $\subsetpluseq$) and many more. It also fixes some `features'
+% with previous symbols ($\oplus$ used not to be circular, now you can
+% use $\varoplus$ instead) and adds obvious variants of others (such as
+% $\mapsfrom$, $\Mapsto$ and $\Mapsfrom$).
+% It is all wrapped up in a \LaTeXe package called {\tt stmaryrd},
+% which can be used by saying:
+% \begin{verbatim}
+% \usepackage{stmaryrd}
+% \end{verbatim}
+% This package understands a large number of options:
+% \begin{itemize}
+% \item |heavycircles| says that all of the circular operators
+% such as |\oplus| and |\otimes| should by default be heavy, and
+% that |\varoplus| and |\varotimes| should refer to the light ones.
+% \item |only| says that only the symbols listed in the option list
+% should be defined. For example:
+% \begin{verbatim}
+% \usepackage[only,mapsfrom,Mapsto,Mapsfrom]{stmaryrd}
+% \end{verbatim}
+% says that only the symbols `$\mapsfrom$', `$\Mapsto$' and
+% `$\Mapsfrom$' should be defined, which is useful if you use a
+% \TeX{} implementation with limited memory.
+% \end{itemize}
+%
+% \section{Symbols}
+%
+% The following operators are defined:
+% \begin{symbols}
+% \dosymbol\Ydown
+% \dosymbol\Yleft
+% \dosymbol\Yright
+% \dosymbol\Yup
+% \dosymbol\baro
+% \dosymbol\bbslash
+% \dosymbol\binampersand
+% \dosymbol\bindnasrepma
+% \dosymbol\boxast
+% \dosymbol\boxbar
+% \dosymbol\boxbox
+% \dosymbol\boxbslash
+% \dosymbol\boxcircle
+% \dosymbol\boxdot
+% \dosymbol\boxempty
+% \dosymbol\boxslash
+% \dosymbol\curlyveedownarrow
+% \dosymbol\curlyveeuparrow
+% \dosymbol\curlywedgedownarrow
+% \dosymbol\curlywedgeuparrow
+% \dosymbol\fatbslash
+% \dosymbol\fatsemi
+% \dosymbol\fatslash
+% \dosymbol\interleave
+% \dosymbol\leftslice
+% \dosymbol\merge
+% \dosymbol\minuso
+% \dosymbol\moo
+% \dosymbol\nplus
+% \dosymbol\obar
+% \dosymbol\oblong
+% \dosymbol\obslash
+% \dosymbol\ogreaterthan
+% \dosymbol\olessthan
+% \dosymbol\ovee
+% \dosymbol\owedge
+% \dosymbol\rightslice
+% \dosymbol\sslash
+% \dosymbol\talloblong
+% \dosymbol\varbigcirc
+% \dosymbol\varcurlyvee
+% \dosymbol\varcurlywedge
+% \dosymbol\varoast
+% \dosymbol\varobar
+% \dosymbol\varobslash
+% \dosymbol\varocircle
+% \dosymbol\varodot
+% \dosymbol\varogreaterthan
+% \dosymbol\varolessthan
+% \dosymbol\varominus
+% \dosymbol\varoplus
+% \dosymbol\varoslash
+% \dosymbol\varotimes
+% \dosymbol\varovee
+% \dosymbol\varowedge
+% \dosymbol\vartimes
+% \end{symbols}
+% (CAR) Added by Chris Rowley, March 2004:
+%
+% If the \textsf{amssymb} package has been loaded then the following
+% are also defined: \verb|\oast| and \verb|\ocircle|.
+% The following large operators are defined:
+% \begin{symbols}
+% \dosymbol\bigbox
+% \dosymbol\bigcurlyvee
+% \dosymbol\bigcurlywedge
+% \dosymbol\biginterleave
+% \dosymbol\bignplus
+% \dosymbol\bigparallel
+% \dosymbol\bigsqcap
+% \dosymbol\bigtriangledown
+% \dosymbol\bigtriangleup
+% \end{symbols}
+% The following relations are defined:
+% \begin{symbols}
+% \dosymbol\inplus
+% \dosymbol\niplus
+% \dosymbol\ntrianglelefteqslant
+% \dosymbol\ntrianglerighteqslant
+% \dosymbol\subsetplus
+% \dosymbol\subsetpluseq
+% \dosymbol\supsetplus
+% \dosymbol\supsetpluseq
+% \dosymbol\trianglelefteqslant
+% \dosymbol\trianglerighteqslant
+% \end{symbols}
+% The following arrows are defined:
+% \begin{symbols}
+% \dosymbol\Longmapsfrom
+% \dosymbol\Longmapsto
+% \dosymbol\Mapsfrom
+% \dosymbol\Mapsto
+% \dosymbol\leftarrowtriangle
+% \dosymbol\leftrightarroweq
+% \dosymbol\leftrightarrowtriangle
+% \dosymbol\lightning
+% \dosymbol\longmapsfrom
+% \dosymbol\mapsfrom
+% \dosymbol\nnearrow
+% \dosymbol\nnwarrow
+% \dosymbol\rightarrowtriangle
+% \dosymbol\rrparenthesis
+% \dosymbol\shortdownarrow
+% \dosymbol\shortleftarrow
+% \dosymbol\shortrightarrow
+% \dosymbol\shortuparrow
+% \dosymbol\ssearrow
+% \dosymbol\sswarrow
+% \end{symbols}
+% The following delimiters are defined:
+% \begin{symbols}
+% \dosymbol\Lbag
+% \dosymbol\Rbag
+% \dosymbol\lbag
+% \dosymbol\llbracket
+% \dosymbol\llceil
+% \dosymbol\llfloor
+% \dosymbol\llparenthesis
+% \dosymbol\rbag
+% \dosymbol\rrbracket
+% \dosymbol\rrceil
+% \dosymbol\rrfloor
+% \end{symbols}
+% Note that \verb|\llbracket| and \verb|\rrbracket| are `growing'
+% delimiters that can be used with \verb|\left| and \verb|\right|:
+% \[
+% \left\llbracket {\cal P} \right\rrbracket \quad
+% \left\llbracket \bigbox {\cal P} \right\rrbracket \quad
+% \left\llbracket \bigbox_{i\inplus I}^{a \varoplus b} P_i
+% \right\rrbracket \quad
+% \left\llbracket \begin{array}{c}a\\b\\c\end{array}
+% \right\rrbracket \quad
+% \left\llbracket \begin{array}{c}a\\b\\c\\d\\e\\f\end{array} \right\rrbracket
+% \]
+% The following special characters are used in building others:
+% \begin{symbols}
+% \dosymbol\Arrownot
+% \dosymbol\Mapsfromchar
+% \dosymbol\Mapstochar
+% \dosymbol\arrownot
+% \dosymbol\mapsfromchar
+% \end{symbols}
+% For example, if you type
+% \verb|$\Arrownot\Rightarrow$|
+% you get
+% $\Arrownot\Rightarrow$,
+% and if you type
+% \verb|$\arrownot\rightarrowtriangle$|
+% you get
+% $\arrownot\rightarrowtriangle$.
+%
+% \section*{Acknowledgements}
+%
+% Thanks to David Murphy for suggestions in the design of the St
+% Mary's Road font.
+% Thanks to Martin Ward for the first pass of converting the
+% |stmaryrd| package to \LaTeXe.
+% Thanks to Simon Mercer for all the wine at 45 St.~Mary's Road.
+%
+% \section*{Legal rubbish}
+%
+% This document is copyright \copyright~1991--1994 Alan Jeffrey.%
+% The St Mary's Road fonts are copyright \copyright~1991--1994 Jeremy
+% Gibbons and Alan Jeffrey. All rights are reserved.
+% The moral right of the authors has been asserted.
+%
+% This package may be distributed under the terms of the LaTeX Project Public
+% License, as described in lppl.txt in the base LaTeX distribution.
+% Either version 1.0 or, at your option, any later version.
+%
+% \StopEventually{}
+%
+% \section{Installation}
+%
+% To begin with, the |stmaryrd| package is
+% installed by running \LaTeXe{} on this document, so we begin with
+% the instllation procedure. This needs to use \LaTeXe:
+% \begin{macrocode}
+%<*install>
+\NeedsTeXFormat{LaTeX2e}
+% \end{macrocode}
+% First of all, we write out a little |.ins| file which creates the
+% |stmaryrd| package:
+% \begin{macrocode}
+\begin{filecontents}{stmaryrd.ins}
+ \generateFile{stmaryrd.sty}{f}{
+ \from{stmaryrd.dtx}{package}}
+ \generateFile{Ustmry.fd}{f}{
+ \from{stmaryrd.dtx}{fontdef}}
+\end{filecontents}
+% \end{macrocode}
+% Then we do some horrible low-level hacks to run docstrip on
+% |stmaryrd.ins|:
+% \begin{macrocode}
+\bgroup
+ \makeatletter
+ \let\@@end=\relax
+ \def\batchfile{stmaryrd.ins}
+ \input{docstrip}
+\egroup
+% \end{macrocode}
+% That's it for the installation:
+% \begin{macrocode}
+%</install>
+% \end{macrocode}
+%
+% \section{Documentation}
+%
+% We now provide the documentation driver for this document:
+% \begin{macrocode}
+%<*driver>
+\documentclass{ltxdoc}
+\DisableCrossrefs
+\OnlyDescription
+\usepackage{stmaryrd}
+% \end{macrocode}
+% \begin{macro}{\symbols}
+% \begin{macro}{\endsymbols}
+% \begin{macro}{\dosymbol}
+% \begin{macro}{\test}
+% Some hacks that are used in the documentation:
+% \begin{macrocode}
+\def\symbols{\flushleft}
+\def\endsymbols{\endflushleft}
+\def\dosymbol#1{\leavevmode\hbox to .33\textwidth{\hbox to 1.2em
+ {\hss$#1$\hfil}\footnotesize\tt\string#1\hss}\penalty10}
+\def\test#1{\par\leavevmode\llap{#1\tt\string#1:}
+ \rlap{#1$\left\llbracket\bigbox_{i \inplus I}^{a \varoplus b} P_i
+ \right\rrbracket$}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% Then we produce the documentation:
+% \begin{macrocode}
+\begin{document}
+ \DocInput{stmaryrd.dtx}
+\end{document}
+%</driver>
+% \end{macrocode}
+%
+% \section{The package}
+%
+% We can now implement the |stmaryrd| package.
+% \begin{macrocode}
+%<*package>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{stmaryrd}[1994/03/03 St Mary's Road symbol package]
+% \end{macrocode}
+%
+% \begin{macro}{\stmry@if}
+% Most definitions in this file are preceded by |stm@if|,
+% which sets its second argument to be undefined, and expands to
+% |\iftrue| if its second argument is going to be
+% defined, for example:
+% \begin{verbatim}
+% \stmry@if\def\foo{baz}\fi
+% \end{verbatim}
+% By default, this is always true.
+% \begin{macrocode}
+\def\stmry@if#1#2{\let#2=\@undefined\iftrue#1#2}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ds@only}
+% \begin{macro}{\stmry@only}
+% The |only| option causes |\stmry@if| to be true only when its
+% second argument is defined to be |\relax|.
+% \begin{macrocode}
+\DeclareOption{only}{\let\stmry@if=\stmry@only}
+\def\stmry@only#1#2{\ifx#2\relax\let#2=\@undefined#1#2}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\ds@heavycircles}
+% \begin{macro}{\ifstmry@heavy@}
+% The |heavycircles| option makes sure all of the heavy circles
+% are defined, and sets |\stmry@heavy@true|.
+% \begin{macrocode}
+\newif\ifstmry@heavy@
+\stmry@heavy@false
+\DeclareOption{heavycircles}{%
+ \stmry@option{varotimes}\stmry@option{varoast}%
+ \stmry@option{varobar}\stmry@option{varodot}%
+ \stmry@option{varoslash}\stmry@option{varobslash}%
+ \stmry@option{varocircle}\stmry@option{varoplus}%
+ \stmry@option{varominus}\stmry@option{varbigcirc}%
+ \stmry@heavy@true
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\stmry@option}
+% For every other option, we call |\stmry@option|, which defines
+% its argument to be |\relax|.
+% \begin{macrocode}
+\def\stmry@option#1{\expandafter\let\csname#1\endcsname\relax}
+\DeclareOption*{\stmry@option\CurrentOption}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ds@Mapsto}
+% \begin{macro}{\ds@mapsfrom}
+% \begin{macro}{\ds@Mapsfrom}
+% \begin{macro}{\ds@longarrownot}
+% \begin{macro}{\ds@Longarrownot}
+% \begin{macro}{\ds@longmapsto}
+% \begin{macro}{\ds@Longmapsto}
+% \begin{macro}{\ds@longmapsfrom}
+% \begin{macro}{\ds@Longmapsfrom}
+% All of the other options for |stmaryrd| are command names. Some of
+% the commands need others to be defined, so we declare these
+% explicitly.
+% \begin{macrocode}
+\DeclareOption{Mapsto}{%
+ \stmry@option{Mapsto}%
+ \stmry@option{Mapstochar}%
+}
+\DeclareOption{mapsfrom}{%
+ \stmry@option{mapsfrom}%
+ \stmry@option{mapsfromchar}%
+}
+\DeclareOption{Mapsfrom}{%
+ \stmry@option{Mapsfrom}%
+ \stmry@option{Mapsfromchar}%
+}
+\DeclareOption{longarrownot}{%
+ \stmry@option{longarrownot}%
+ \stmry@option{arrownot}%
+}
+\DeclareOption{Longarrownot}{%
+ \stmry@option{Longarrownot}%
+ \stmry@option{Arrownot}%
+}
+\DeclareOption{Longmapsto}{%
+ \stmry@option{Longmapsto}%
+ \stmry@option{Mapstochar}%
+}
+\DeclareOption{longmapsfrom}{%
+ \stmry@option{longmapsfrom}%
+ \stmry@option{mapsfromchar}%
+}
+\DeclareOption{Longmapsfrom}{%
+ \stmry@option{Longmapsfrom}%
+ \stmry@option{Mapsfromchar}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% Then we can process the options!
+% \begin{macrocode}
+\ProcessOptions
+% \end{macrocode}
+% Declare the symbol fonts:
+% \begin{macrocode}
+\DeclareSymbolFont{stmry}{U}{stmry}{m}{n}
+\SetSymbolFont{stmry}{bold}{U}{stmry}{b}{n}
+% \end{macrocode}
+% Then we load those symbols!
+% \begin{macrocode}
+\stmry@if\DeclareMathSymbol\shortleftarrow\mathrel{stmry}{"00}\fi
+\stmry@if\DeclareMathSymbol\shortrightarrow\mathrel{stmry}{"01}\fi
+\stmry@if\DeclareMathSymbol\shortuparrow\mathrel{stmry}{"02}\fi
+\stmry@if\DeclareMathSymbol\shortdownarrow\mathrel{stmry}{"03}\fi
+\stmry@if\DeclareMathSymbol\Yup\mathbin{stmry}{"04}\fi
+\stmry@if\DeclareMathSymbol\Ydown\mathbin{stmry}{"05}\fi
+\stmry@if\DeclareMathSymbol\Yleft\mathbin{stmry}{"06}\fi
+\stmry@if\DeclareMathSymbol\Yright\mathbin{stmry}{"07}\fi
+\stmry@if\DeclareMathSymbol\varcurlyvee\mathbin{stmry}{"08}\fi
+\stmry@if\DeclareMathSymbol\varcurlywedge\mathbin{stmry}{"09}\fi
+\stmry@if\DeclareMathSymbol\minuso\mathbin{stmry}{"0A}\fi
+\stmry@if\DeclareMathSymbol\baro\mathbin{stmry}{"0B}\fi
+\stmry@if\DeclareMathSymbol\sslash\mathbin{stmry}{"0C}\fi
+\stmry@if\DeclareMathSymbol\bbslash\mathbin{stmry}{"0D}\fi
+\stmry@if\DeclareMathSymbol\moo\mathbin{stmry}{"0E}\fi
+\stmry@if\DeclareMathSymbol\varotimes\mathbin{stmry}{"0F}\fi
+\stmry@if\DeclareMathSymbol\varoast\mathbin{stmry}{"10}\fi
+\stmry@if\DeclareMathSymbol\varobar\mathbin{stmry}{"11}\fi
+\stmry@if\DeclareMathSymbol\varodot\mathbin{stmry}{"12}\fi
+\stmry@if\DeclareMathSymbol\varoslash\mathbin{stmry}{"13}\fi
+\stmry@if\DeclareMathSymbol\varobslash\mathbin{stmry}{"14}\fi
+\stmry@if\DeclareMathSymbol\varocircle\mathbin{stmry}{"15}\fi
+\stmry@if\DeclareMathSymbol\varoplus\mathbin{stmry}{"16}\fi
+\stmry@if\DeclareMathSymbol\varominus\mathbin{stmry}{"17}\fi
+\stmry@if\DeclareMathSymbol\boxast\mathbin{stmry}{"18}\fi
+\stmry@if\DeclareMathSymbol\boxbar\mathbin{stmry}{"19}\fi
+\stmry@if\DeclareMathSymbol\boxdot\mathbin{stmry}{"1A}\fi
+\stmry@if\DeclareMathSymbol\boxslash\mathbin{stmry}{"1B}\fi
+\stmry@if\DeclareMathSymbol\boxbslash\mathbin{stmry}{"1C}\fi
+\stmry@if\DeclareMathSymbol\boxcircle\mathbin{stmry}{"1D}\fi
+\stmry@if\DeclareMathSymbol\boxbox\mathbin{stmry}{"1E}\fi
+\stmry@if\DeclareMathSymbol\boxempty\mathbin{stmry}{"1F}\fi
+\stmry@if\DeclareMathSymbol\lightning\mathord{stmry}{"20}\fi
+\stmry@if\DeclareMathSymbol\merge\mathbin{stmry}{"21}\fi
+\stmry@if\DeclareMathSymbol\vartimes\mathbin{stmry}{"22}\fi
+\stmry@if\DeclareMathSymbol\fatsemi\mathbin{stmry}{"23}\fi
+\stmry@if\DeclareMathSymbol\sswarrow\mathrel{stmry}{"24}\fi
+\stmry@if\DeclareMathSymbol\ssearrow\mathrel{stmry}{"25}\fi
+\stmry@if\DeclareMathSymbol\curlywedgeuparrow\mathrel{stmry}{"26}\fi
+\stmry@if\DeclareMathSymbol\curlywedgedownarrow\mathrel{stmry}{"27}\fi
+\stmry@if\DeclareMathSymbol\fatslash\mathbin{stmry}{"28}\fi
+\stmry@if\DeclareMathSymbol\fatbslash\mathbin{stmry}{"29}\fi
+\stmry@if\DeclareMathSymbol\lbag\mathbin{stmry}{"2A}\fi
+\stmry@if\DeclareMathSymbol\rbag\mathbin{stmry}{"2B}\fi
+\stmry@if\DeclareMathSymbol\varbigcirc\mathbin{stmry}{"2C}\fi
+\stmry@if\DeclareMathSymbol\leftrightarroweq\mathrel{stmry}{"2D}\fi
+\stmry@if\DeclareMathSymbol\curlyveedownarrow\mathrel{stmry}{"2E}\fi
+\stmry@if\DeclareMathSymbol\curlyveeuparrow\mathrel{stmry}{"2F}\fi
+\stmry@if\DeclareMathSymbol\nnwarrow\mathrel{stmry}{"30}\fi
+\stmry@if\DeclareMathSymbol\nnearrow\mathrel{stmry}{"31}\fi
+\stmry@if\DeclareMathSymbol\leftslice\mathbin{stmry}{"32}\fi
+\stmry@if\DeclareMathSymbol\rightslice\mathbin{stmry}{"33}\fi
+\stmry@if\DeclareMathSymbol\varolessthan\mathbin{stmry}{"34}\fi
+\stmry@if\DeclareMathSymbol\varogreaterthan\mathbin{stmry}{"35}\fi
+\stmry@if\DeclareMathSymbol\varovee\mathbin{stmry}{"36}\fi
+\stmry@if\DeclareMathSymbol\varowedge\mathbin{stmry}{"37}\fi
+\stmry@if\DeclareMathSymbol\talloblong\mathbin{stmry}{"38}\fi
+\stmry@if\DeclareMathSymbol\interleave\mathbin{stmry}{"39}\fi
+%% (CAR) Added by Chris Rowley, March 2004:
+\stmry@if\let\oast\circledast\fi
+\stmry@if\let\ocircle\circledcirc\fi
+%%
+\stmry@if\DeclareMathSymbol\obar\mathbin{stmry}{"3A}\fi
+\stmry@if\DeclareMathSymbol\obslash\mathbin{stmry}{"3B}\fi
+\stmry@if\DeclareMathSymbol\olessthan\mathbin{stmry}{"3C}\fi
+\stmry@if\DeclareMathSymbol\ogreaterthan\mathbin{stmry}{"3D}\fi
+\stmry@if\DeclareMathSymbol\ovee\mathbin{stmry}{"3E}\fi
+\stmry@if\DeclareMathSymbol\owedge\mathbin{stmry}{"3F}\fi
+\stmry@if\DeclareMathSymbol\oblong\mathbin{stmry}{"40}\fi
+\stmry@if\DeclareMathSymbol\inplus\mathrel{stmry}{"41}\fi
+\stmry@if\DeclareMathSymbol\niplus\mathrel{stmry}{"42}\fi
+\stmry@if\DeclareMathSymbol\nplus\mathbin{stmry}{"43}\fi
+\stmry@if\DeclareMathSymbol\subsetplus\mathrel{stmry}{"44}\fi
+\stmry@if\DeclareMathSymbol\supsetplus\mathrel{stmry}{"45}\fi
+\stmry@if\DeclareMathSymbol\subsetpluseq\mathrel{stmry}{"46}\fi
+\stmry@if\DeclareMathSymbol\supsetpluseq\mathrel{stmry}{"47}\fi
+\stmry@if\DeclareMathSymbol\Lbag\mathopen{stmry}{"48}\fi
+\stmry@if\DeclareMathSymbol\Rbag\mathclose{stmry}{"49}\fi
+
+\stmry@if\DeclareMathSymbol\llparenthesis\mathopen{stmry}{"4C}\fi
+\stmry@if\DeclareMathSymbol\rrparenthesis\mathclose{stmry}{"4D}\fi
+\stmry@if\DeclareMathSymbol\binampersand\mathopen{stmry}{"4E}\fi
+\stmry@if\DeclareMathSymbol\bindnasrepma\mathclose{stmry}{"4F}\fi
+\stmry@if\DeclareMathSymbol\trianglelefteqslant\mathrel{stmry}{"50}\fi
+\stmry@if\DeclareMathSymbol\trianglerighteqslant\mathrel{stmry}{"51}\fi
+\stmry@if\DeclareMathSymbol\ntrianglelefteqslant\mathrel{stmry}{"52}\fi
+\stmry@if\DeclareMathSymbol\ntrianglerighteqslant\mathrel{stmry}{"53}\fi
+\stmry@if\DeclareMathSymbol\llfloor\mathopen{stmry}{"54}\fi
+\stmry@if\DeclareMathSymbol\rrfloor\mathclose{stmry}{"55}\fi
+\stmry@if\DeclareMathSymbol\llceil\mathopen{stmry}{"56}\fi
+\stmry@if\DeclareMathSymbol\rrceil\mathclose{stmry}{"57}\fi
+\stmry@if\DeclareMathSymbol\arrownot\mathrel{stmry}{"58}\fi
+\stmry@if\DeclareMathSymbol\Arrownot\mathrel{stmry}{"59}\fi
+\stmry@if\DeclareMathSymbol\Mapstochar\mathrel{stmry}{"5A}\fi
+\stmry@if\DeclareMathSymbol\mapsfromchar\mathrel{stmry}{"5B}\fi
+\stmry@if\DeclareMathSymbol\Mapsfromchar\mathrel{stmry}{"5C}\fi
+%% (CAR) Corrected by Chris Rowley, March 2004:
+%% \stmry@if\DeclareMathSymbol\leftrightarrowtriangle\mathbin{stmry}{"5D}\fi
+\stmry@if\DeclareMathSymbol\leftrightarrowtriangle\mathrel{stmry}{"5D}\fi
+%%
+\stmry@if\DeclareMathSymbol\leftarrowtriangle\mathrel{stmry}{"5E}\fi
+\stmry@if\DeclareMathSymbol\rightarrowtriangle\mathrel{stmry}{"5F}\fi
+\stmry@if\DeclareMathSymbol\bigtriangledown\mathop{stmry}{"60}\fi
+\stmry@if\DeclareMathSymbol\bigtriangleup\mathop{stmry}{"61}\fi
+\stmry@if\DeclareMathSymbol\bigcurlyvee\mathop{stmry}{"62}\fi
+\stmry@if\DeclareMathSymbol\bigcurlywedge\mathop{stmry}{"63}\fi
+\stmry@if\DeclareMathSymbol\bigsqcap\mathop{stmry}{"64}\fi
+\stmry@if\DeclareMathSymbol\bigbox\mathop{stmry}{"65}\fi
+\stmry@if\DeclareMathSymbol\bigparallel\mathop{stmry}{"66}\fi
+\stmry@if\DeclareMathSymbol\biginterleave\mathop{stmry}{"67}\fi
+\stmry@if\DeclareMathSymbol\bignplus\mathop{stmry}{"70}\fi
+
+\stmry@if\DeclareMathDelimiter\llbracket{\mathopen}{stmry}{"4A}
+ {stmry}{"71}\fi
+\stmry@if\DeclareMathDelimiter\rrbracket{\mathclose}{stmry}{"4B}
+ {stmry}{"79}\fi
+% \end{macrocode}
+% The heavy \varcopyright:
+% \begin{macrocode}
+\stmry@if\def\varcopyright
+ {{\ooalign{\hfil\raise.07ex\hbox{c}\hfil\crcr%
+ \mbox{$\m@th\varbigcirc$}}}}\fi
+% \end{macrocode}
+% The long arrow negations.
+% \begin{macrocode}
+\stmry@if\def\longarrownot{\mathrel{\mkern5.5mu\arrownot\mkern-5.5mu}}\fi
+\stmry@if\def\Longarrownot{\mathrel{\mkern5.5mu\Arrownot\mkern-5.5mu}}\fi
+% \end{macrocode}
+% The variants on $\mapsto$:
+% \begin{macrocode}
+\stmry@if\def\Mapsto{\Mapstochar\Rightarrow}\fi
+\stmry@if\def\mapsfrom{\leftarrow\mapsfromchar}\fi
+\stmry@if\def\Mapsfrom{\Leftarrow\Mapsfromchar}\fi
+\stmry@if\def\Longmapsto{\Mapstochar\Longrightarrow}\fi
+\stmry@if\def\longmapsfrom{\longleftarrow\mapsfromchar}\fi
+\stmry@if\def\Longmapsfrom{\Longleftarrow\Mapsfromchar}\fi
+% \end{macrocode}
+% The circular circles:
+% \begin{macrocode}
+\ifstmry@heavy@
+ \def\@swap#1#2{\let\@tempa#1\let#1#2\let#2\@tempa}
+ \@swap\varotimes\otimes
+ \@swap\varolessthan\olessthan
+ \@swap\varogreaterthan\ogreaterthan
+ \@swap\varovee\ovee
+ \@swap\varowedge\owedge
+ \@swap\varoast\oast
+ \@swap\varobar\obar
+ \@swap\varodot\odot
+ \@swap\varoslash\oslash
+ \@swap\varobslash\obslash
+ \@swap\varocircle\ocircle
+ \@swap\varoplus\oplus
+ \@swap\varominus\ominus
+ \@swap\varbigcirc\bigcirc
+ \@swap\varcopyright\copyright
+\fi
+%</package>
+% \end{macrocode}
+%
+% \section{The font definitions}
+%
+% The font definitions for the St Mary's Road fonts are:
+% \begin{macrocode}
+%<*fontdef>
+\DeclareFontFamily{U}{stmry}{}
+\DeclareFontShape{U}{stmry}{m}{n}
+ { <5> <6> <7> <8> <9> <10> gen * stmary
+ <10.95><12><14.4><17.28><20.74><24.88>stmary10%
+ }{}
+%</fontdef>
+% \end{macrocode}
+%
+% \Finale
+\endinput
diff --git a/fonts/stmaryrd/stmaryrd.mf b/fonts/stmaryrd/stmaryrd.mf
new file mode 100644
index 0000000000..44b8ac3b3e
--- /dev/null
+++ b/fonts/stmaryrd/stmaryrd.mf
@@ -0,0 +1,95 @@
+%%% ====================================================================
+%%% @METAFONT-file{
+%%% author-1 = "Jeremy Gibbons",
+%%% author-2 = "Alan Jeffrey",
+%%% version = "1.1",
+%%% date = "02 June 1992",
+%%% time = "15:06:36 BST",
+%%% filename = "stmaryrd.mf",
+%%% address-1 = "Department of Computer Science
+%%% University of Aukland
+%%% Private Bag
+%%% Aukland
+%%% New Zealand",
+%%% address-2 = "School of Cognitive and Computing Sciences
+%%% University of Sussex
+%%% Brighton BN1 9QH
+%%% UK",
+%%% telephone-1 = "+64 9 373 7599 x 5120",
+%%% telephone-2 = "+44 273 606755 x 3238",
+%%% FAX-1 = "+64 9 373 7453",
+%%% FAX-2 = "+44 273 678188",
+%%% checksum = "50004 95 506 4017",
+%%% email-1 = "jeremy@cs.aukuni.ac.nz",
+%%% email-2 = "alanje@cogs.sussex.ac.uk",
+%%% codetable = "ISO/ASCII",
+%%% keywords = "metafont symbols math fonts",
+%%% supported = "yes",
+%%% abstract = "This is part of the metafont program for
+%%% the St Mary's Road symbol font.",
+%%% docstring = "This is part of the metafont program for
+%%% the St Mary's Road symbol font. The font
+%%% contains a number of mathematical
+%%% characters which are not present in the
+%%% standard TeX and AMS symbol fonts.
+%%%
+%%% It is described in stmaryrd.tex.
+%%%
+%%% Copyright 1992 Jeremy Gibbons and Alan Jeffrey.
+%%%
+%%% The checksum field above contains a CRC-16
+%%% checksum as the first value, followed by the
+%%% equivalent of the standard UNIX wc (word
+%%% count) utility output of lines, words, and
+%%% characters. This is produced by Robert
+%%% Solovay's checksum utility.",
+%%% package = "St Mary's Road",
+%%% dependencies = "stmaryba.mf stmarych.mf stmaryjg.mf stmaryaj.mf",
+%%% }
+%%% ====================================================================
+%%%
+%%% 20 May 1991, v1.0: Created the font out of alans.mf and galileo.mf.
+%%%
+%%% 2 Jun 1992, v1.1: added the headers.
+
+% This is the driver file for the St Mary's Road symbol font, named
+% after the palatial mansion (currently under investigation by the
+% Enviromental Health Officer) where we lived, and where many of the
+% symbols were designed and discussed over a bottle of wine and some
+% halva.
+%
+% Many of the symbols are derived (or `stolen', to use the technical
+% phrase from Knuth's Computer Modern fonts, and the American
+% Mathematical Society's msam and msbm fonts. Please don't sue.
+
+% We assume the parameters have been set by whichever file called us
+% (for example stmary10.mf).
+
+% Here we steal a bit from mathsy
+
+mode_setup; font_setup;
+autorounding:=0;
+
+font_slant slant; font_x_height x_height#;
+font_quad 18u# if not monospace:+4letter_fit# fi;
+slant:=mono_charic#:=0; % the remaining characters will not be slanted
+currenttransform:=identity yscaled aspect_ratio scaled granularity;
+
+% The parameters for slashes for reductions:
+
+slash_width := 7u; % horizontal extent of a slash
+slash_height := body_height;
+define_pixels(paren_depth); slash_depth := paren_depth;
+slash_offset := 3u; % offset of slash from arrowhead for reduction and accm
+slash_separation# := 3u#; % gap between slashes for accumulates
+
+define_pixels(slash_separation);
+
+% The input files:
+
+input stmaryba; % Various macros we need.
+input stmarych; % Defines the character positions and extension information.
+input stmaryjg; % Jeremy's symbols.
+input stmaryaj; % Alan's symbols.
+
+end
diff --git a/fonts/stmaryrd/stmaryrd.pdf b/fonts/stmaryrd/stmaryrd.pdf
new file mode 100644
index 0000000000..26e103bdad
--- /dev/null
+++ b/fonts/stmaryrd/stmaryrd.pdf
Binary files differ