summaryrefslogtreecommitdiff
path: root/fonts/tapir
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/tapir
Initial commit
Diffstat (limited to 'fonts/tapir')
-rw-r--r--fonts/tapir/readme48
-rw-r--r--fonts/tapir/readme.pdfbin0 -> 59492 bytes
-rw-r--r--fonts/tapir/tap-enc.mf192
-rw-r--r--fonts/tapir/tap.mf3866
-rw-r--r--fonts/tapir/tap.pfbbin0 -> 34861 bytes
5 files changed, 4106 insertions, 0 deletions
diff --git a/fonts/tapir/readme b/fonts/tapir/readme
new file mode 100644
index 0000000000..6afde00dce
--- /dev/null
+++ b/fonts/tapir/readme
@@ -0,0 +1,48 @@
+The 'Tapir' is a simple geometrical font mostly created of line and circular segments with constant thickness.
+The character set contains all characters in the range 0--127 (as in cmr10), accented characters used
+in czech, slovak and polish language.
+
+There are some other characters which are not created and encoded by default. To use them create your own encoding
+(see 'tap-enc.mf'). Full list of available symbols can be obtained by
+
+ grep "iff known" tap.mf | sed -e "s/iff known \(.*\):/\1/"
+
+The set of symbols contains accented latin-based characters (identifiers beginning 'latin_') and some special symbols
+(identifiers beginning 'sign_'). Download the Type1 font with all characters from my web page.
+
+
+Installation:
+1) copy tap.mf into appropriate directory (e.g. texmf/fonts/source/public/tapir)
+2) copy tap.pfb into appropriate directory (e.g. texmf/fonts/type1/public/tapir)
+3) add line `tap Tapir <tap.pfb' into dvips map file (e.g. texmf/dvips/config/psfonts.map)
+4) refresh TeX database (mktexlsr)
+
+Testing of installation:
+1) run `tex testfont'
+2) enter `tap'
+3) enter `\table\end'
+4) view testfont.dvi
+
+Usage:
+1) put `\font\tapir tap' into your document
+2) use as `{\tapir My text}'
+
+Notes:
+1) There are some parameters on the beginning of `tap.mf' file. You can change them but the result is not predictable.
+2) There is a boolean parameter 'serifs'. When it is set 'true' by running METAFONT with
+ boolean serifs; serifs:=true; input tap
+ lowercase letters will have upper serifs.
+3) Simple italic version can be made via `boolean italic; italic:=true; slant:=.25; input tap'. Only letters `a' and `g'
+ have different look.
+
+This font is licensed under GNU GPL.
+WWW: http://mitek.webpark.cz
+email: mitek@email.cz
+
+-----------------------------------------------
+Version 0.2 August 29, 2004
+ added polish and other characters (128+248)
+
+Version 0.1 July 17, 2004
+ initial release
+
diff --git a/fonts/tapir/readme.pdf b/fonts/tapir/readme.pdf
new file mode 100644
index 0000000000..45985c6d88
--- /dev/null
+++ b/fonts/tapir/readme.pdf
Binary files differ
diff --git a/fonts/tapir/tap-enc.mf b/fonts/tapir/tap-enc.mf
new file mode 100644
index 0000000000..21250f8e4c
--- /dev/null
+++ b/fonts/tapir/tap-enc.mf
@@ -0,0 +1,192 @@
+%%Characters used in czech and slovak
+latin_aacute:=225;
+latin_aumlaut:=228;
+latin_agrave:=oct"270";
+latin_ccaron:=232;
+latin_dcaron:=239;
+latin_eacute:=233;
+latin_ecaron:=236;
+latin_iacute:=237;
+latin_lacute:=229;
+latin_lcaron:=181;
+latin_ncaron:=242;
+latin_oacute:=243;
+latin_ocircumflex:=244;
+latin_oumlaut:=246;
+latin_rcaron:=248;
+latin_racute:=224;
+latin_scaron:=185;
+latin_tcaron:=187;
+latin_uacute:=250;
+latin_uring:=249;
+latin_uumlaut:=252;
+latin_yacute:=253;
+latin_zcaron:=190;
+latin_Aacute:=193;
+latin_Aumlaut:=196;
+latin_Agrave:=oct"230";
+latin_Ccaron:=200;
+latin_Dcaron:=207;
+latin_Eacute:=201;
+latin_Ecaron:=204;
+latin_Iacute:=205;
+latin_Lacute:=197;
+latin_Lcaron:=165;
+latin_Ncaron:=210;
+latin_Oacute:=211;
+latin_Ocircumflex:=212;
+latin_Oumlaut:=214;
+latin_Rcaron:=216;
+latin_Racute:=192;
+latin_Scaron:=169;
+latin_Tcaron:=171;
+latin_Uacute:=218;
+latin_Uring:=217;
+latin_Uumlaut:=220;
+latin_Yacute:=221;
+latin_Zcaron:=174;
+latin_hyphen_alt:=oct"234";
+sign_czech_closing:=255;
+sign_CE_opening:=254;
+sign_ogonek:=oct"235";
+sign_per_thousand:=oct"215";
+sign_french_opening:=oct"236";
+sign_french_closing:=oct"237";
+
+%%Characters used in polish
+latin_aogonek:=177;
+latin_cacute:=230;
+latin_eogonek:=234;
+latin_lstroke:=179;
+latin_nacute:=241;
+latin_sacute:=182;
+latin_zacute:=188;
+latin_zdotabove:=191;
+
+latin_Aogonek:=161;
+latin_Cacute:=198;
+latin_Eogonek:=202;
+latin_Lstroke:=163;
+latin_Nacute:=209;
+latin_Sacute:=166;
+latin_Zacute:=172;
+latin_Zdotabove:=175;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Ligtable for letters
+def okr:= kern -3u# enddef;
+def ko:= kern -.5u# enddef;
+def kc:= kern -.25u# enddef;
+def kv:= kern -.1u# enddef;
+def kz:= kern 1.5u# enddef;
+def kzz:=kern 1u# enddef;
+def kr expr t:= kern -t*u# enddef;
+
+ligtable "A": "C" kr 1.5, 198 kr 1.5, "G" kr 1.5, "O" kr 1.5, "Q" kr 1.5, "S" kr .5, 166 kr .5, "T" kr 2.5, "V" kr 3.5, "W" kr 3.5, "Y" kr 2, "b" ko, "c" ko, 230 ko, "d" ko, "e" ko, 234 ko, "g" kr 1, "o" ko, "q" ko, "s" ko, 182 ko, "t" kr 1, "u" ko, "v" kr 2, "w" kr 2, "x" kr .3, "y" kr 2, 169 kr .5, 171 kr 2.5, 185 ko, 187 kr 1, 200 kr 1.5, 211 kr 1.5, 212 kr 1.5, 214 kr 1.5, 221 kr 2, 232 ko, 233 ko, 236 ko, 239 ko, 243 ko, 246 ko, 244 ko, 249 ko, 250 ko, 252 ko, 253 kr 2;
+ligtable 161: "C" kr 1.5, 198 kr 1.5, "G" kr 1.5, "O" kr 1.5, "Q" kr 1.5, "S" kr .5, 166 kr .5, "T" kr 2.5, "V" kr 3.5, "W" kr 3.5, "Y" kr 2, "b" ko, "c" ko, 230 ko, "d" ko, "e" ko, 234 ko, "g" kr 1, "j" kr -2, "o" ko, "q" ko, "s" ko, 182 ko, "t" kr 1, "u" ko, "v" kr 2, "w" kr 2, "x" kr .3, "y" kr 2, 169 kr .5, 171 kr 2.5, 185 ko, 187 kr 1, 200 kr 1.5, 211 kr 1.5, 212 kr 1.5, 214 kr 1.5, 221 kr 2, 232 ko, 233 ko, 236 ko, 239 ko, 243 ko, 246 ko, 244 ko, 249 ko, 250 ko, 252 ko, 253 kr 2;
+ligtable 196: "C" kr 1.5, 198 kr 1.5, "G" kr 1.5, "O" kr 1.5, "Q" kr 1.5, "S" kr .5, 166 kr .5, "T" kr 2.5, "V" kr 3.5, "W" kr 3.5, "Y" kr 2, "b" ko, "c" ko, 230 ko, "d" ko, "e" ko, 234 ko, "g" kr 1, "o" ko, "q" ko, "s" ko, 182 ko, "t" kr 1, "u" ko, "v" kr 2, "w" kr 2, "x" kr .3, "y" kr 2, 169 kr .5, 171 kr 2.5, 185 ko, 187 kr 1, 200 kr 1.5, 211 kr 1.5, 212 kr 1.5, 214 kr 1.5, 221 kr 2, 232 ko, 233 ko, 236 ko, 239 ko, 243 ko, 246 ko, 244 ko, 249 ko, 250 ko, 252 ko, 253 kr 2;
+ligtable 193: "C" kr 1.5, 198 kr 1.5, "G" kr 1.5, "O" kr 1.5, "Q" kr 1.5, "S" kr .5, 166 kr .5, "T" kr 2.5, "V" kr 3.5, "W" kr 3.5, "Y" kr 2, "b" ko, "c" ko, 230 ko, "d" ko, "e" ko, 234 ko, "g" kr 1, "o" ko, "q" ko, "s" ko, 182 ko, "t" kr 1, "u" ko, "v" kr 2, "w" kr 2, "x" kr .3, "y" kr 2, 169 kr .5, 171 kr 2.5, 185 ko, 187 kr 1, 200 kr 1.5, 211 kr 1.5, 212 kr 1.5, 214 kr 1.5, 221 kr 2, 232 ko, 233 ko, 236 ko, 239 ko, 243 ko, 246 ko, 244 ko, 249 ko, 250 ko, 252 ko, 253 kr 2;
+ligtable "B": "M" kr .7, "V" kr .7, "W" kr .7, "Y" kr .5, "Z" kr .2, 172 kr .2, 175 kr .2, "g" kr 1.5, "s" kr .5, 182 kr .5, "v" kr 1, "w" kr 1, "x" kr .7, "y" kr .7, 174 kr .2, 185 kr .5, 221 kr .5 , 253 kr .7;
+ligtable "C": "C" ko, 198 ko, "G" ko, "O" ko, "Q" ko, "g" kr 2, "v" kr 1, "w" kr 1, "y" kr 2, 200 ko, 211 ko, 214 ko, 212 ko, 253 kr 2;
+ligtable 200: "C" ko, 198 ko, "G" ko, "O" ko, "Q" ko, "g" kr 2, "v" kr 1, "w" kr 1, "y" kr 2, 200 ko, 211 ko, 214 ko, 212 ko, 253 kr 2;
+ligtable 198: "C" ko, 198 ko, "G" ko, "O" ko, "Q" ko, "g" kr 2, "v" kr 1, "w" kr 1, "y" kr 2, 200 ko, 211 ko, 214 ko, 212 ko, 253 kr 2;
+ligtable "D": "A" kr 1, 177 kr 1, "J" kr 1, "M" kr .5, "T" kr 1, "V" kr 1, "W" kr 1, "X" kr 1, "Y" kr 1, "Z" kr 1, 172 kr 1, 175 kr 1, "c" ko, 230 ko, "d" ko, "e" ko, 234 ko, "g" kr 2, "o" ko, "q" ko, "s" kr .3, 182 kr .3, 171 kr 1, 174 kr 1, 185 kr .3, 193 kr 1, 196 kr 1, 221 kr 1, 232 ko, 239 ko, 236 ko, 233 ko, 243 ko, 246 ko, 244 ko;
+ligtable 207: "A" kr 1, 177 kr 1, "J" kr 1, "M" kr .5, "T" kr 1, "V" kr 1, "W" kr 1, "X" kr 1, "Y" kr 1, "Z" kr 1, 172 kr 1, 175 kr 1, "c" ko, 230 ko, "d" ko, "e" ko, 234 ko, "g" kr 2, "o" ko, "q" ko, "s" kr .3, 171 kr 1, 174 kr 1, 185 kr .3, 193 kr 1, 196 kr 1, 221 kr 1, 232 ko, 239 ko, 236 ko, 233 ko, 243 ko, 246 ko, 244 ko;
+ligtable "E": "C" kr 1, 198 kr 1, "G" kr 1, "O" kr 1, "Q" kr 1, "g" kr 1.5, "v" kr 1.5, "w" kr 1.5, "y" kr 1.5, 200 kr 1, 211 kr 1, 214 kr 1, 212 kr 1, 253 kr 1.5;
+ligtable 201: "C" kr 1, 198 kr 1, "G" kr 1, "O" kr 1, "Q" kr 1, "g" kr 1.5, "v" kr 1.5, "w" kr 1.5, "y" kr 1.5, 200 kr 1, 211 kr 1, 214 kr 1, 212 kr 1, 253 kr 1.5;
+ligtable 202: "C" kr 1, 198 kr 1, "G" kr 1, "O" kr 1, "Q" kr 1, "g" kr 1.5, "j" kr -2, "v" kr 1.5, "w" kr 1.5, "y" kr 1.5, 200 kr 1, 211 kr 1, 214 kr 1, 212 kr 1, 253 kr 1.5;
+ligtable 204: "C" kr 1, 198 kr 1, "G" kr 1, "O" kr 1, "Q" kr 1, "g" kr 1.5, "v" kr 1.5, "w" kr 1.5, "y" kr 1.5, 200 kr 1, 211 kr 1, 214 kr 1, 212 kr 1, 253 kr 1.5;
+ligtable "F": "A" kr 2, 161 kr 2, "C" kr 1, 198 kr 1, "G" kr 1, "J" kr 4, "M" kr 1, "O" kr 1, "Q" kr 1, "a" kr 1.8, 177 kr 1.8, "c" kr 1.5, 230 kr 1.5, "d" kr 1.5, "e" kr 1.5, 234 kr 1.5, "f" kr .5, "g" kr 2, "i" kr 1.5, "j" kr 1.5, "m" kr 1, "n" kr 1, 241 kr 1, "o" kr 1.5, "p" kr 1, "q" kr 1.5, "r" kr 1, "s" kr 1.5, 182 kr 1.5, "t" kr 1, "u" kr 1, "v" kr 1, "w" kr 1, "x" kr 1, "y" kr 1, "z" kr 1, 185 kr 1, 187 kr 1, 188 kr 1, 190 kr 1, 191 kr 1, 193 kr 2, 196 kr 2, 200 kr 1, 211 kr 1, 214 kr 1, 212 kr 1, 224 kr 1, 225 kr 1.8, 228 kr 1.8, 232 kr 1.5, 236 kr 1.5, 233 kr 1.5, 237 kr 1.5, 239 kr 1.5, 242 kr 1, 243 kr 1.5, 246 kr 1.5, 244 kr 1.5, 248 kr 1, 249 kr 1, 250 kr 1, 252 kr 1, 253 kr 1;
+ligtable "G": "g" kr 1;
+ligtable "I": "g" kr .5;
+ligtable 205: "g" kr .5;
+ligtable "J": "A" kr .75, 161 kr .75, "J" kr 1, "g" kr 1, 193 kr .75, 196 kr .75;
+ligtable "K": "C" kr 1.75, 198 kr 1.75, 200 kr 1.75, "G" kr 1.75, "J" kr 1, "O" kr 1.75, 214 kr 1.75, 211 kr 1.75, 212 kr 1.75, "Q" kr 1.75, "S" kr 1.15, 166 kr 1.15, 169 kr 1.15, "a" kr 1, 177 kr 1, 225 kr 1, 228 kr 1, "c" kr 1, 230 kr 1, 232 kr 1, "d" kr 1, 239 kr 1, "e" kr 1, 234 kr 1, 236 kr 1, 233 kr 1, "f" kr .5, "g" kr 2, "o" kr 1, 243 kr 1, 246 kr 1, 244 kr 1, "q" kr 1, "s" kr .5, 182 kr .5, 185 kr .5, "t" kr .5, 187 kr .5, "u" kr .5, 249 kr .5, 250 kr .5, 252 kr .5, "v" kr 1.7, "w" kr 1.7, "y" kr 1.7, 253 kr 1.7, "z" kr .5, 188 kr .5, 190 kr .5, 191 kr .5;
+ligtable "L": "C" kr 1.75, 198 kr 1.75, 200 kr 1.75, "G" kr 1.75, "J" kr .75, "O" kr 1.75, 214 kr 1.75, 211 kr 1.75, 212 kr 1.75, "Q" kr 1.75, "S" kr .5, 166 kr .5, 169 kr .5, "T" kr 4, 171 kr 4, "V" kr 4, "W" kr 4, "Y" kr 2, 221 kr 2, "a" ko, 177 ko, 225 ko, 228 ko, "b" ko, "c" ko, 230 ko, 232 ko, "d" ko, 239 ko, "e" ko, 233 ko, 234 ko, 236 ko, "f" kr .7, "g" kr 2, "o" ko, 243 ko, 246 ko, 244 ko, "q" ko, "s" kr .5, 182 kr .5, 185 kr .5, "t" kr .5, 187 kr .5, "u" ko, 249 ko, 250 ko, 252 ko, "v" kr 2, "w" kr 2, "y" kr 1.5, 253 kr 1.5;
+ligtable 163: "C" kr 1.75, 198 kr 1.75, 200 kr 1.75, "G" kr 1.75, "J" kr .75, "O" kr 1.75, 214 kr 1.75, 211 kr 1.75, 212 kr 1.75, "Q" kr 1.75, "S" kr .5, 166 kr .5, 169 kr .5, "T" kr 4, 171 kr 4, "V" kr 4, "W" kr 4, "Y" kr 2, 221 kr 2, "a" ko, 177 ko, 225 ko, 228 ko, "b" ko, "c" ko, 230 ko, 232 ko, "d" ko, 239 ko, "e" ko, 233 ko, 234 ko, 236 ko, "f" kr .7, "g" kr 2, "o" ko, 243 ko, 246 ko, 244 ko, "q" ko, "s" kr .5, 182 kr .5, 185 kr .5, "t" kr .5, 187 kr .5, "u" ko, 249 ko, 250 ko, 252 ko, "v" kr 2, "w" kr 2, "y" kr 1.5, 253 kr 1.5;
+ligtable "M": "C" kr .5, 198 kr .5, 200 kr .5, "G" kr .5, "O" kr .5, 214 kr .5, 211 kr .5, 212 kr .5, "Q" kr .5, "T" kr 1.5, 171 kr 1.5, "V" kr 1.8, "W" kr 1.8, "Y" kr 1.8, 221 kr 1.8, "g" kr 1, "t" kr .5, 187 kr .5, "v" kr 1.5, "w" kr 1.5, "y" kr 1.5, 253 kr 1.5;
+ligtable "N": "g" kr .5;
+ligtable 209: "g" kr .5;
+ligtable 210: "g" kr .5;
+ligtable "O": "A" kr 2, 161 kr 2, 193 kr 2, 196 kr 2, "J" kr 2, "M" kr .5, "T" kr 2, 171 kr 2, "V" kr 2, "W" kr 2, "X" kr 2, "Y" kr 2, 221 kr 2, "Z" kr 2, 172 kr 2, 174 kr 2, 175 kr 2, "g" kr 1.3;
+ligtable 211: "A" kr 2, 161 kr 2, 193 kr 2, 196 kr 2, "J" kr 2, "M" kr .5, "T" kr 2, 171 kr 2, "V" kr 2, "W" kr 2, "X" kr 2, "Y" kr 2, 221 kr 2, "Z" kr 2, 172 kr 2, 174 kr 2, 175 kr 2, "g" kr 1.3;
+ligtable 214: "A" kr 2, 161 kr 2, 193 kr 2, 196 kr 2, "J" kr 2, "M" kr .5, "T" kr 2, 171 kr 2, "V" kr 2, "W" kr 2, "X" kr 2, "Y" kr 2, 221 kr 2, "Z" kr 2, 172 kr 2, 174 kr 2, 175 kr 2, "g" kr 1.3;
+ligtable 212: "A" kr 2, 161 kr 2, 193 kr 2, 196 kr 2, "J" kr 2, "M" kr .5, "T" kr 2, 171 kr 2, "V" kr 2, "W" kr 2, "X" kr 2, "Y" kr 2, 221 kr 2, "Z" kr 2, 172 kr 2, 174 kr 2, 175 kr 2, "g" kr 1.3;
+ligtable "P": "A" kr 2, 161 kr 2, "C" kr 1, 198 kr 1, "G" kr 1, "J" kr 5, "M" kr 1, "O" kr 1, "Q" kr 1, "T" kr 1, 171 kr 1, "V" kr 1, "W" kr 1, "X" kr 1, "Y" kr 1, 221 kr 1, "Z" kr 1, 172 kr 1, 174 kr 1, 175 kr 1, "a" kr 1.8, 177 kr 1.8, "c" kr 1.5, 230 kr 1.5, "d" kr 1.5, "e" kr 1.5, 234 kr 1.5, "f" kr .3, "g" kr 2, "m" kr 1, "n" kr 1, 241 kr 1, "o" kr 1.5, "p" kr 1, "q" kr 1.5, "r" kr 1, "s" kr 1.5, 182 kr 1.5, "t" kr 1, "u" kr 1, "v" kr 1, "w" kr 1, "x" kr 1, "y" kr 1, "z" kr 1, 185 kr 1, 187 kr 1, 188 kr 1, 190 kr 1, 191 kr 1, 193 kr 2, 196 kr 2, 200 kr 1, 211 kr 1, 214 kr 1, 212 kr 1, 224 kr 1, 225 kr 1.8, 228 kr .5, 232 kr 1.5, 236 kr 1.5, 233 kr 1.5, 239 kr 1.5, 242 kr 1, 243 kr 1.5, 246 kr 1.5, 244 kr 1.5, 248 kr 1, 249 kr 1, 250 kr 1, 252 kr 1, 253 kr 1;
+ligtable "Q": "A" kr 2, 161 kr 2, 193 kr 2, 196 kr 2, "J" kr 2, "M" kr .5, "T" kr 2, 171 kr 2, "V" kr 2, "W" kr 2, "X" kr 2, "Y" kr 2, 221 kr 2, "Z" kr 2, 172 kr 2, 175 kr 2, 174 kr 2, "g" kr 1.3, "j" kr -.5;
+ligtable "R": "A" kr .5, 161 kr .5, 193 kr .5, 196 kr .5, "C" kr .5, 198 kr .5, 200 kr .5, "G" kr .5, "J" kr .5, "O" kr .5, 214 kr .5, 211 kr .5, 212 kr .5, "Q" kr .5, "T" kr 1, 171 kr 1, "V" kr 1, "W" kr 1, "X" kr .5, "Y" kr 1, 221 kr 1, "Z" kr .5, 172 kr .5, 174 kr .5, 175 kr .5, "a" ko, 177 ko, 225 ko, 228 ko, "c" ko, 230 ko, 232 ko, "d" ko, 239 ko, "e" ko, 234 ko, 236 ko, 233 ko, "g" kr 1.5, "o" ko, 243 ko, 246 ko, 244 ko, "q" ko, "s" kr .5, 182 kr .5, 185 kr .5, "u" ko, "v" kr 1.5, "w" kr 1.5, "x" kr 1, "y" kr 1.5, "z" kr .5, 188 kr .5, 190 kr .5, 191 kr .5;
+ligtable 192: "A" kr .5, 161 kr .5, 193 kr .5, 196 kr .5, "C" kr .5, 198 kr .5, 200 kr .5, "G" kr .5, "J" kr .5, "O" kr .5, 214 kr .5, 211 kr .5, 212 kr .5, "Q" kr .5, "T" kr 1, 171 kr 1, "V" kr 1, "W" kr 1, "X" kr .5, "Y" kr 1, 221 kr 1, "Z" kr .5, 172 kr .5, 174 kr .5, 175 kr .5, "a" ko, 177 ko, 225 ko, 228 ko, "c" ko, 230 ko, 232 ko, "d" ko, 239 ko, "e" ko, 234 ko, 236 ko, 233 ko, "g" kr 1.5, "o" ko, 243 ko, 246 ko, 244 ko, "q" ko, "s" kr .5, 182 kr .5, 185 kr .5, "u" ko, "v" kr 1.5, "w" kr 1.5, "x" kr 1, "y" kr 1.5, "z" kr .5, 188 kr .5, 190 kr .5, 191 kr .5;
+ligtable 216: "A" kr .5, 161 kr .5, 193 kr .5, 196 kr .5, "C" kr .5, 198 kr .5, 200 kr .5, "G" kr .5, "J" kr .5, "O" kr .5, 214 kr .5, 211 kr .5, 212 kr .5, "Q" kr .5, "T" kr 1, 171 kr 1, "V" kr 1, "W" kr 1, "X" kr .5, "Y" kr 1, 221 kr 1, "Z" kr .5, 172 kr .5, 174 kr .5, 175 kr .5, "a" ko, 177 ko, 225 ko, 228 ko, "c" ko, 230 ko, 232 ko, "d" ko, 239 ko, "e" ko, 234 ko, 236 ko, 233 ko, "g" kr 1.5, "o" ko, 243 ko, 246 ko, 244 ko, "q" ko, "s" kr .5, 182 kr .5, 185 kr .5, "u" ko, "v" kr 1.5, "w" kr 1.5, "x" kr 1, "y" kr 1.5, "z" kr .5, 188 kr .5, 190 kr .5, 191 kr .5;
+ligtable "S": "A" kr 1, 161 kr 1, 193 kr 1, 196 kr 1, "C" kr .5, 198 kr .5, 200 kr .5, "G" kr .5, "J" kr .5, "M" kr .3, "O" kr .5, 214 kr .5, 211 kr .5, 212 kr .5, "Q" kr .5, "T" kr .5, 171 kr .5, "V" kr .5, "W" kr .5, "X" kr .5, "Y" kr .5, 221 kr .5 , "g" kr 1, "v" ko, "w" ko, "x" ko, "y" ko, 253 ko, "z" ko, 188 ko, 190 ko, 191 ko;
+ligtable 166: "A" kr 1, 161 kr 1, 193 kr 1, 196 kr 1, "C" kr .5, 198 kr .5, 200 kr .5, "G" kr .5, "J" kr .5, "M" kr .3, "O" kr .5, 214 kr .5, 211 kr .5, 212 kr .5, "Q" kr .5, "T" kr .5, 171 kr .5, "V" kr .5, "W" kr .5, "X" kr .5, "Y" kr .5, 221 kr .5 , "g" kr 1, "v" ko, "w" ko, "x" ko, "y" ko, 253 ko, "z" ko, 188 ko, 190 ko, 191 ko;
+ligtable 169: "A" kr 1, 161 kr 1, 193 kr 1, 196 kr 1, "C" kr .5, 198 kr .5, 200 kr .5, "G" kr .5, "J" kr .5, "M" kr .3, "O" kr .5, 214 kr .5, 211 kr .5, 212 kr .5, "Q" kr .5, "T" kr .5, 171 kr .5, "V" kr .5, "W" kr .5, "X" kr .5, "Y" kr .5, 221 kr .5 , "g" kr 1, "v" ko, "w" ko, "x" ko, "y" ko, 253 ko, "z" ko, 188 ko, 190 ko, 191 ko;
+ligtable "T": "A" kr 3, 161 kr 3, 193 kr 3, 196 kr 3, "C" kr 2, 198 kr 2, 200 kr 2, "G" kr 2, "J" kr 4, "M" kr 2, "O" kr 2, 214 kr 2, 211 kr 2, 212 kr 2, "Q" kr 2, "S" kr 1, 166 kr 1, 169 kr 1, "a" okr, 177 okr, 225 okr, 228 kr 2, "c" okr, 230 okr, 232 kr 2, "d" okr, 239 okr, "e" okr, 234 okr, 236 kr 2, 233 okr, "f" kr 1.5, "g" kern -3.5u#, "i" kr 2, 237 kr 2, "j" kr 2, "m" okr, "n" okr, 241 okr, 242 kr 2, "o" okr, 243 okr, 246 kr 2, 244 kr 2, "p" okr, "q" okr, "r" okr, 224 kr 2, "s" okr, 182 okr, 185 kr 1.5, "t" okr, 187 kr 2, "u" okr, 249 kr 2, 250 kr 2, 252 kr 2, "v" okr, "w" okr, "x" okr, "y" okr, 253 okr, "z" okr, 188 okr, 190 kr 2, 191 okr;
+ligtable 171: "A" kr 3, 161 kr 3, 193 kr 3, 196 kr 3, "C" kr 2, 198 kr 2, 200 kr 2, "G" kr 2, "J" kr 4, "M" kr 2, "O" kr 2, 214 kr 2, 211 kr 2, 212 kr 2, "Q" kr 2, "S" kr 1, 166 kr 1, 169 kr 1, "a" okr, 177 okr, 225 okr, 228 kr 2, "c" okr, 230 okr, 232 kr 2, "d" okr, 239 okr, "e" okr, 234 okr, 236 kr 2, 233 okr, "f" kr 1.5, "g" kern -3.5u#, "i" kr 2, 237 kr 2, "j" kr 2, "m" okr, "n" okr, 241 okr, 242 kr 2, "o" okr, 243 okr, 246 kr 2, 244 kr 2, "p" okr, "q" okr, "r" okr, 224 kr 2, "s" okr, 182 okr, 185 kr 1.5, "t" okr, 187 kr 2, "u" okr, 249 kr 2, 250 kr 2, 252 kr 2, "v" okr, "w" okr, "x" okr, "y" okr, 253 okr, "z" okr, 188 okr, 190 kr 2, 191 okr;
+ligtable "U": "g" kr 1;
+ligtable 218: "g" kr 1;
+ligtable 220: "g" kr 1;
+ligtable 217: "g" kr 1;
+ligtable "V": "A" kr 3.5, 161 kr 3.5, 193 kr 3.5, 196 kr 3.5, "C" kr 1.5, 198 kr 1.5, 200 kr 1.5, "G" kr 1.5, "J" kr 3.5, "M" kr 2, "O" kr 1.5, 214 kr 1.5, 211 kr 1.75, 212 kr 1.5, "Q" kr 1.5, "S" kr .5, 166 kr .5, 169 kr .5, "a" kr 2, 177 kr 2, 225 kr 2, 228 kr 2, "c" kr 2.5, 230 kr 2.5, 232 kr 2.5, "d" kr 2.5, 239 kr 2.5, "e" kr 2.5, 234 kr 2.5, 236 kr 2.5, 233 kr 2.5, "f" kr 1, "g" kr 3.5, 237 kr 1, "m" kr 1.5, "n" kr 1.5, 241 kr 1.5, 242 kr 1.5, "o" kr 2.5, 243 kr 2.5, 246 kr 2.5, 244 kr 2.5, "p" kr 1.5, "q" kr 2.5, "r" kr 1.5, 224 kr 1.5, 248 kr 1, "s" kr 2.2, 182 kr 2.2, 185 kr 1.5, "t" kr 1, 187 kr 1, "u" kr 1.5, 250 kr 1.5, 249 kr 1.5, 252 kr 1.5, "v" kr 1.5, "w" kr 1.5, "x" kr 1.5, "y" kr 1.5, 253 kr 1.5, "z" kr 1.5, 188 kr 1.5, 190 kr 1, 191 kr 1.5;
+ligtable "W": "A" kr 4.5, 161 kr 4.5, 193 kr 4.5, 196 kr 4.5, "C" kr 1.5, 198 kr 1.5, 200 kr 1.5, "G" kr 1.5, "J" kr 3.5, "M" kr 2, "O" kr 1.5, 214 kr 1.5, 211 kr 1.75, 212 kr 1.5, "Q" kr 1.5, "S" kr .5, 166 kr .5, 169 kr .5, "a" kr 2, 177 kr 2, 225 kr 2, 228 kr 1.5, "c" kr 2.5, 230 kr 2.5, 232 kr 2.5, "d" kr 2.5, 239 kr 2.5, "e" kr 2.5, 234 kr 2.5, 236 kr 2.5, 233 kr 2.5, "f" kr 1, "g" kr 3.5, "i" kr 1, 237 kr 1, "j" kr 1, "m" kr 1.5, "n" kr 1.5, 241 kr 1.5, 242 kr 1.5, "o" kr 2.5, 243 kr 2.5, 246 kr 2.5, 244 kr 2.5, "p" kr 1.5, "q" kr 2.5, "r" kr 1.5, 224 kr 1.5, 248 kr 1, "s" kr 2.2, 182 kr 2.2, 185 kr 1.5, "t" kr 1, 187 kr 1, "u" kr 1.5, 250 kr 1.5, 249 kr 1.5, 252 kr 1.5, "v" kr 1.5, "w" kr 1.5, "x" kr 1.5, "y" kr 1.5, 253 kr 1.5, "z" kr 1.5, 188 kr 1.5, 190 kr 1, 191 kr 1.5;
+ligtable "X": "C" kr 1.75, 198 kr 1.75, 200 kr 1.75, "G" kr 1.75, "J" kr 1, "O" kr 1.75, 214 kr 1.75, 211 kr 1.75, 212 kr 1.75, "Q" kr 1.75, "S" kr 1.15, 166 kr 1.15, 169 kr 1.15, "a" kr .5, 177 kr .5, 225 kr .5, 228 kr .5, "c" kr 1, 230 kr 1, 232 kr 1, "d" kr 1, 239 kr 1, "e" kr 1, 234 kr 1, 236 kr 1, 233 kr 1, "f" kr .5, "g" kr 2, "o" kr 1, 243 kr 1, 246 kr 1, 244 kr 1, "q" kr 1, "s" kr .5, 182 kr .5, 185 kr .5, "t" kr .5, 187 kr .5, "u" kr .5, 249 kr .5, 250 kr .5, 252 kr .5, "v" kr 1.7, "w" kr 1.7, "y" kr 1.7, 253 kr 1.7, "z" kr .5, 188 kr .5, 190 kr .5, 191 kr .5;
+ligtable "Y": "A" kr 4, 161 kr 4, 193 kr 4, 196 kr 4, "C" kr 1.5, 198 kr 1.5, 200 kr 1.5, "G" kr 1.5, "J" kr 4, "M" kr 2, "O" kr 1.5, 214 kr 1.5, 211 kr 1.75, 212 kr 1.5, "Q" kr 1.5, "S" kr .5, 166 kr .5, 169 kr .5, "a" kr 2.5, 177 kr 2.5, 225 kr 2.5, 228 kr 2, "c" kr 2.5, 230 kr 2.5, 232 kr 2.5, "d" kr 2.5, 239 kr 2.5, "e" kr 2.5, 234 kr 2.5, 236 kr 2.5, 233 kr 2.5, "f" kr 1, "g" kr 3.5, 237 kr 1, "m" kr 1.5, "n" kr 1.5, 241 kr 1.5, 242 kr 1.5, "o" kr 2.5, 243 kr 2.5, 246 kr 2.5, 244 kr 2.5, "p" kr 1.5, "q" kr 2.5, "r" kr 1.5, 224 kr 1.5, 248 kr 1, "s" kr 2.2, 182 kr 1.5, 185 kr 1.5, "t" kr 1, 187 kr 1, "u" kr 1.5, 250 kr 1.5, 249 kr 1.5, 252 kr 1.5, "v" kr 1.5, "w" kr 1.5, "x" kr 1.5, "y" kr 1.5, 253 kr 1.5, "z" kr 1.5, 188 kr 1.5, 190 kr 1, 191 kr 1.5;
+ligtable 221: "A" kr 4, 161 kr 4, 193 kr 4, 196 kr 4, "C" kr 1.5, 198 kr 1.5, 200 kr 1.5, "G" kr 1.5, "J" kr 4, "M" kr 2, "O" kr 1.5, 214 kr 1.5, 211 kr 1.75, 212 kr 1.5, "Q" kr 1.5, "S" kr .5, 166 kr .5, 169 kr .5, "a" kr 2.5, 177 kr 2.5, 225 kr 2.5, 228 kr 2, "c" kr 2.5, 230 kr 2.5, 232 kr 2.5, "d" kr 2.5, 239 kr 2.5, "e" kr 2.5, 234 kr 2.5, 236 kr 2.5, 233 kr 2.5, "f" kr 1, "g" kr 3.5, 237 kr 1, "m" kr 1.5, "n" kr 1.5, 241 kr 1.5, 242 kr 1.5, "o" kr 2.5, 243 kr 2.5, 246 kr 2.5, 244 kr 2.5, "p" kr 1.5, "q" kr 2.5, "r" kr 1.5, 224 kr 1.5, 248 kr 1, "s" kr 2.2, 182 kr 1.5, 185 kr 1.5, "t" kr 1, 187 kr 1, "u" kr 1.5, 250 kr 1.5, 249 kr 1.5, 252 kr 1.5, "v" kr 1.5, "w" kr 1.5, "x" kr 1.5, "y" kr 1.5, 253 kr 1.5, "z" kr 1.5, 188 kr 1.5, 190 kr 1, 191 kr 1.5;
+ligtable "Z": "C" kr 1, 198 kr 1, "G" kr 1, "O" kr 1, 214 kr 1, 211 kr 1, 212 kr 1, "Q" kr 1, "g" kr 1.5, "i" kr -.5, "j" kr -.5, "v" kr 1.5, "w" kr 1.5, "y" kr 1.5, 200 kr 1, 211 kr 1, 214 kr 1, 212 kr 1, 253 kr 1.5;
+ligtable 174: "C" kr 1, 198 kr 1, "G" kr 1, "O" kr 1, 214 kr 1, 211 kr 1, 212 kr 1, "Q" kr 1, "g" kr 1.5, "i" kr -.5, "j" kr -.5, "v" kr 1.5, "w" kr 1.5, "y" kr 1.5, 200 kr 1, 211 kr 1, 214 kr 1, 212 kr 1, 253 kr 1.5;
+ligtable 172: "C" kr 1, 198 kr 1, "G" kr 1, "O" kr 1, 214 kr 1, 211 kr 1, 212 kr 1, "Q" kr 1, "g" kr 1.5, "i" kr -.5, "j" kr -.5, "v" kr 1.5, "w" kr 1.5, "y" kr 1.5, 200 kr 1, 211 kr 1, 214 kr 1, 212 kr 1, 253 kr 1.5;
+ligtable 175: "C" kr 1, 198 kr 1, "G" kr 1, "O" kr 1, 214 kr 1, 211 kr 1, 212 kr 1, "Q" kr 1, "g" kr 1.5, "i" kr -.5, "j" kr -.5, "v" kr 1.5, "w" kr 1.5, "y" kr 1.5, 200 kr 1, 211 kr 1, 214 kr 1, 212 kr 1, 253 kr 1.5;
+
+ligtable "a": "T" kr 2, 171 kr 2, "V" kr 1.5, "W" kr 1.5, "Y" kr 1.2, 221 kr 1.2, "g" kr 1;
+ligtable 177: "T" kr 2, 171 kr 2, "V" kr 1.5, "W" kr 1.5, "Y" kr 1.2, 221 kr 1.2, "g" kr 1, "j" kr -1.5;
+ligtable 225: "T" kr 2, 171 kr 2, "g" kr 1;
+ligtable 228: "T" kr 2, 171 kr 2, "V" kr .5, "W" kr .5, "Y" kr .5, 221 kr .5, "g" kr 1;
+ligtable "b": "A" kr .8, 161 kr .8, 193 kr .8, 196 kr .8, "C" kr .5, 198 kr .5, 200 kr .5, "G" kr .5, "J" kr .5, "M" kr .3, "O" kr .5, 211 kr .5, 214 kr .5, 212 kr .5, "Q" kr .5, "S" kr .3, 166 kr .3, 169 kr .3, "T" kr 2, 171 kr 2, "V" kr 2, "W" kr 2, "Y" kr 2, 221 kr 2, "Z" kr .5, 172 kr .5, 174 kr .5, 175 kr .5, "a" kr .2, 177 kr .2, 225 kr .2, 228 kr .2, "c" kc, 230 kc, 232 kc, "d" kc, 239 kc, "e" kc, 233 kc, 234 kc, 236 kc, "f" kr .8, "g" kr 1, "i" kv, 237 kv, "j" kv, "l" kv, 179 kv, 181 kv, "o" kc, 243 kv, 246 kv, 244 kv, "q" kc, "s" kv, 182 kv, 185 kv, "v" kr .5, "w" kr .5, "x" kr .5, "y" kr .5, 253 kr .5, "z" kr .5, 188 kr .5, 190 kr .5, 191 kr .5;
+ligtable "c": "A" kr 1, 161 kr 1, 193 kr 1, 196 kr 1, "J" kr 1, "T" kr 2.5, 171 kr 2.5, "V" kr 2, "W" kr 2, "Y" kr 2, 221 kr 2, "a" kc, 177 kc, 225 kc, 228 kc, "c" ko, 230 ko, 232 ko, "d" ko, 239 ko, "e" ko, 233 ko, 234 ko, 236 ko, "g" kr 1, "o" ko, 243 ko, 246 ko, 244 ko, "q" ko;
+ligtable 230: "A" kr 1, 161 kr 1, 193 kr 1, 196 kr 1, "J" kr 1, "T" kr 1.5, 171 kr 1.5, "V" kr 1, "W" kr 1, "Y" kr 1, 221 kr 1, "a" kc, 177 kc, 225 kc, 228 kc, "c" ko, 230 ko, 232 ko, "d" ko, 239 ko, "e" ko, 233 ko, 234 ko, 236 ko, "g" kr 1, "o" ko, 243 ko, 246 ko, 244 ko, "q" ko;
+ligtable 232: "A" kr 1, 161 kr 1, 193 kr 1, 196 kr 1, "J" kr 1, "T" kr 1.5, 171 kr 1.5, "V" kr 1, "W" kr 1, "Y" kr 1, 221 kr 1, "a" kc, 177 kc, 225 kc, 228 kc, "c" ko, 230 ko, 232 ko, "d" ko, 239 ko, "e" ko, 233 ko, 234 ko, 236 ko, "g" kr 1, "o" ko, 243 ko, 246 ko, 244 ko, "q" ko;
+ligtable "d": "g" kr .8;
+ligtable 239: "A" kr 2.5, 161 kr 2.5, 193 kr 2.5, 196 kr 2.5, "C" kr 2, 198 kr 2, 200 kr 2, "G" kr 2, "J" kr 2.5, "M" kr 2, "O" kr 2, 211 kr 2, 214 kr 2, 212 kr 2, "Q" kr 2, "S" kr 1, 166 kr 1, 169 kr 1, "a" kr 2, 177 kr 2, 225 kr 2, 228 kr 2, "c" kr 2, 230 kr 2, 232 kr 2, "d" kr 2, "ï" kr 2, "e" kr 2, 233 kr 2, 234 kr 2, 236 kr 2, "f" kr 1, "g" kr 2.5 , "i" kr 2, 237 kr 2, "j" kr 2, "m" kr 2, "n" kr 2, 241 kr 2, 242 kr 2, "o" kr 2, 243 kr 2, 246 kr 2, 244 kr 2, "p" kr 2, "q" kr 2, "r" kr 2, 248 kr 2, "s" kr 2, 182 kr 2, 185 kr 2, "t" kr 2, 187 kr 2, "u" kr 2, 250 kr 2, 249 kr 2, 252 kr 2, "v" kr 2, "w" kr 2, "x" kr 2, "y" kr 2, 253 kr 2, "z" kr 2, 188 kr 2, 190 kr 2, 191 kr 2;
+ligtable "e": "A" kr 1, 161 kr 1, 193 kr 1, 196 kr 1, "J" kr 1, "T" kr 3, 171 kr 3, "V" kr 2, "W" kr 2, "Y" kr 2, 221 kr 2, "g" kr 1;
+ligtable 234: "A" kr 1, 161 kr 1, 193 kr 1, 196 kr 1, "J" kr 1, "T" kr 3, 171 kr 3, "V" kr 2, "W" kr 2, "Y" kr 2, 221 kr 2, "g" kr 1, "j" kr -1.5;
+ligtable 233: "A" kr 1, 161 kr 1, 193 kr 1, 196 kr 1, "J" kr 1, "T" kr 3, 171 kr 3, "V" kr 1, "W" kr 1, "Y" kr 1, 221 kr 1, "g" kr 1;
+ligtable 236: "A" kr 1, 161 kr 1, 193 kr 1, 196 kr 1, "J" kr 1, "T" kr 3, 171 kr 3, "V" kr 1, "W" kr 1, "Y" kr 2, 221 kr 2, "g" kr 1;
+ligtable "f": "A" kr .5, 161 kr .5, 193 kr .5, 196 kr .5, "J" kr 1.5, "M" kr .5, "a" kr .5, 177 kr .5, 225 kr .5, 228 kr .5, "c" kr .5, 230 kr .5, 232 kr .5, "d" kr .5, 239 kr .5, "e" kr .5, 233 kr .5, 234 kr .5, 236 kr .5, "f"=:oct"013", "g" kr 2, "i"=:oct"014", 237 kr .5, "l"=:oct"015", "o" kr .5, 243 kr .5, 246 kr .5, 244 kr .5, "q" kr .5, "s" kr .25, 182 kr .25, "t" kr .5, 187 kr .5;
+ligtable "g": "A" kr .5, 161 kr .5, 193 kr .5, 196 kr .5, "J" kr .5, "T" kr 2.5, 171 kr 2.5, "V" kr 1.5, "W" kr 1.5, "Y" kr 1.5, 221 kr 1.5, "j" kr -1.5;
+ligtable "h": "T" kr 2, 171 kr 2, "V" kr 1.5, "W" kr 1.5, "Y" kr 1.5, 221 kr 1.5, "g" kr .5;
+ligtable "i": "T" kr 2, 171 kr 2;
+ligtable 237: "B" kz, "C" kzz, 198 kzz, 200 kzz, "D" kz, 207 kz, "E" kz, 202 kz, 204 kz, 201 kz, "F" kz, "G" kzz, "H" kz, "I" kz, 205 kz, "K" kz, "L" kz, 163 kz, 197 kz, 165 kz, "M" kzz, "N" kz, 209 kz, 210 kz, "O" kzz, 211 kzz, 214 kzz, 212 kzz, "P" kz, "Q" kzz, "R" kz, 216 kz, "S" kz, 166 kzz, 169 kzz, "T" kr 1, 171 kr 1, "U" kz, 218 kz, 217 kz, 220 kz, "V" kzz, "W" kzz, "X" kzz, "Y" kzz, 221 kzz, "b" kz, "f" kzz, "h" kz, "i" kzz, "j" kzz, "k" kz, "l" kz, 179 kz, 181 kz, 229 kz, 248 kzz, "t" kzz, 187 kzz, "!" kz;
+ligtable "j": "T" kr 2, 171 kr 2, "j" kr -1;
+ligtable "k": "J" kr 1, "T" kr 2, 171 kr 2, "V" kr 1, "W" kr 1, "Y" kr 1, 221 kr 1, "a" kv, 177 kv, 225 kv, 228 kv, "c" kr 1, 230 kr 1, 232 kr 1, "d" kr 1, 239 kr 1, "e" kr 1, 234 kr 1, 236 kr 1, 233 kr 1, "g" kr 1.5, "o" kr 1, 243 kr 1, 246 kr 1, 244 kr 1, "q" kr 1, "s" kr .5, 182 kr .5, 185 kr .5;
+ligtable "l": "g" kr .5;
+ligtable 179: "g" kr 1.5;
+ligtable "m": "T" kr 2.5, 171 kr 2.5, "V" kr 1.5, "W" kr 1.5, "Y" kr 1.5, 221 kr 1.5, "g" kr 1, "t" kr .5, 187 kr .5;
+ligtable "n": "T" kr 3, 171 kr 3, "V" kr 1.5, "W" kr 1.5, "Y" kr 1.5, 221 kr 1.5, "g" kr 1, "t" kr .5, 187 kr .5;
+ligtable 241: "T" kr 3, 171 kr 3, "V" kr 1.5, "W" kr 1.5, "Y" kr 1.5, 221 kr 1.5, "g" kr 1, "t" kr .5, 187 kr .5;
+ligtable 242: "T" kr 3, 171 kr 3, "V" kr 1.5, "W" kr 1.5, "Y" kr 1.5, 221 kr 1.5, "g" kr 1, "t" kr .5, 187 kr .5;
+ligtable "o": "A" kr 1, 161 kr 1, 193 kr 1, 196 kr 1, "J" kr 1, "T" kr 3, 171 kr 3, "V" kr 2, "W" kr 2, "X" kr 1, "Y" kr 2, 221 kr 2, "Z" kr 1, 172 kr 1, 174 kr 1, 175 kr 1, "g" kr 1, "o" ko, 243 ko, 246 ko, 244 ko, "q" ko, "s" kr .5, 182 kr .5, 185 kr .5, "t" kr .5, 187 kr .5, "v" kr 1, "w" kr 1, "x" kr .5, "y" kr 1, 253 kr 1, "z" kr .5, 188 kr .5, 190 kr .5, 191 kr .5;
+ligtable 243: "A" kr 1, 161 kr 1, 193 kr 1, 196 kr 1, "J" kr 1, "T" kr 3, 171 kr 3, "V" kr 2, "W" kr 2, "X" kr 1, "Y" kr 2, 221 kr 2, "Z" kr 1, 172 kr 1, 174 kr 1, 175 kr 1, "g" kr 1, "o" ko, "ó" ko, 246 ko, 244 ko, "q" ko, "s" kr .5, 182 kr .5, 185 kr .5, "t" kr .5, 187 kr .5, "v" kr 1, "w" kr 1, "x" kr .5, "y" kr 1, 253 kr 1, "z" kr .5, 188 kr .5, 190 kr .5, 191 kr .5;
+ligtable 246: "A" kr 1, 161 kr 1, 193 kr 1, 196 kr 1, "J" kr 1, "T" kr 3, 171 kr 3, "V" kr 2, "W" kr 2, "X" kr 1, "Y" kr 2, 221 kr 2, "Z" kr 1, 172 kr 1, 174 kr 1, 175 kr 1, "g" kr 1, "o" ko, 243 ko, 246 ko, 244 ko, "q" ko, "s" kr .5, 182 kr .5, 185 kr .5, "t" kr .5, 187 kr .5, "v" kr 1, "w" kr 1, "x" kr .5, "y" kr 1, 253 kr 1, "z" kr .5, 188 kr .5, 190 kr .5, 191 kr .5;
+ligtable 244: "A" kr 1, 161 kr 1, 193 kr 1, 196 kr 1, "J" kr 1, "T" kr 3, 171 kr 3, "V" kr 2, "W" kr 2, "X" kr 1, "Y" kr 2, 221 kr 2, "Z" kr 1, 172 kr 1, 174 kr 1, 175 kr 1, "g" kr 1, "o" ko, 243 ko, 246 ko, 244 ko, "q" ko, "s" kr .5, 182 kr .5, 185 kr .5, "t" kr .5, 187 kr .5, "v" kr 1, "w" kr 1, "x" kr .5, "y" kr 1, 253 kr 1, "z" kr .5, 188 kr .5, 190 kr .5, 191 kr .5;
+ligtable "p": "A" kr 1, 161 kr 1, 193 kr 1, 196 kr 1, "J" kr 1, "T" kr 3, 171 kr 3, "V" kr 2, "W" kr 2, "X" kr 1, "Y" kr 2, 221 kr 2, "Z" kr 1, 172 kr 1, 174 kr 1, 175 kr 1, "a" kr .5, 177 kr .5, 225 kr .5, 228 kr .5, "c" ko, 230 ko, 232 ko, "d" ko, 239 ko, "e" ko, 233 ko, 234 ko, 236 ko, "g" kr 1, "o" ko, 243 ko, 246 ko, 244 ko, "q" ko, "s" kr .5, 182 kr .5, 185 kr .5, "t" kr .5, 187 kr .5, "v" kr 1, "w" kr 1, "x" kr .5, "y" kr 1, 253 kr 1, "z" kr .5, 188 kr .5, 190 kr .5, 191 kr .5;
+ligtable "q": "T" kr 2.5, "V" kr 1, "W" kr 1, "Y" kr 1, 221 kr 1, "g" kr .5, "j" kr -1;
+ligtable "r": "A" kr 2, 161 kr 2, 193 kr 2, 196 kr 2, "J" kr 2.5, "M" kr 1, "S" kr .5, 166 kr .5, 169 kr .5, "T" kr 3, 171 kr 3, "V" kr 1.5, "W" kr 1.5, "X" kr 1.5, "Y" kr 1.5, 221 kr 1.5, "Z" kr 1.5, 172 kr 1.5, 174 kr 1.5, 175 kr 1.5, "a" kr .5, 177 kr .5, 225 kr .5, 228 kr .5, "c" ko, 230 ko, 232 ko, "d" ko, 239 ko, "e" ko, 233 ko, 234 ko, 236 ko, "g" kr 1.5, "o" ko, 243 ko, 246 ko, 244 ko, "q" ko, "s" kr .3, 182 kr .3, 185 kr .3;
+ligtable 248: "A" kr 2, 161 kr 2, 193 kr 2, 196 kr 2, "J" kr 2.5, "M" kr 1, "T" kr 2, 171 kr 2, "V" kr 1, "W" kr 1, "X" kr 1.5, "Y" kr 1.5, 221 kr 1.5, "Z" kr .5, 172 kr .5, 174 kr .5, 175 kr .5, "a" kr .5, 177 kr .5, 225 kr .5, 228 kr .5, "c" ko, 230 ko, 232 ko, "d" ko, 239 ko, "e" ko, 233 ko, 234 ko, 236 ko, "g" kr 1.5, "o" ko, 243 ko, 246 ko, 244 ko, "q" ko, "s" kr .3, 182 kr .3, 185 kr .3;
+ligtable "s": "T" kr 3, 171 kr 3, "V" kr 1.5, "W" kr 1.5, "Y" kr 1.5, 221 kr 1.5, "g" kr 1, "s" kr .5, 182 kr .5, 185 kr .5, "t" kr .5, 187 kr .5, "v" kr .5, "w" kr .5, "y" kr .5, 253 kr .5;
+ligtable 182: "T" kr 2, 171 kr 2, "V" kr 1.5, "W" kr 1.5, "Y" kr 1.5, 221 kr 1.5, "g" kr 1, "s" kr .5, 182 kr .5, 185 kr .5, "t" kr .5, 187 kr .5, "v" kr .5, "w" kr .5, "y" kr .5, 253 kr .5;
+ligtable 185: "T" kr 2, 171 kr 2, "V" kr 1.5, "W" kr 1.5, "Y" kr 1.5, 221 kr 1.5, "g" kr 1, "s" kr .5, 182 kr .5, 185 kr .5, "t" kr .5, 187 kr .5, "v" kr .5, "w" kr .5, "y" kr .5, 253 kr .5;
+ligtable "t": "J" kr .5, "T" kr 2.5, 171 kr 2.5, "V" kr 1, "W" kr 1, "Y" kr 1, 221 kr 1, "g" kr 1;
+ligtable 187: "J" kr .5, "T" kr 2.5, 171 kr 2.5, "V" kr 1, "W" kr 1, "Y" kr 1, 221 kr 1, "g" kr 1;
+ligtable "u": "T" kr 2.5, 171 kr 2.5, "V" kr 1, "W" kr 1, "Y" kr 1, 221 kr 1, "g" kr .5;
+ligtable 250: "T" kr 2.5, 171 kr 2.5, "V" kr 1, "W" kr 1, "Y" kr 1, 221 kr 1, "g" kr .5;
+ligtable 249: "T" kr 2.5, 171 kr 2.5, "V" kr 1, "W" kr 1, "Y" kr 1, 221 kr 1, "g" kr .5;
+ligtable 252: "T" kr 2.5, 171 kr 2.5, "V" kr 1, "W" kr 1, "Y" kr 1, 221 kr 1, "g" kr .5;
+ligtable "v": "A" kr 2, 161 kr 2, 193 kr 2, 196 kr 2, "J" kr 2, "M" kr .5, "S" kr .5, 166 kr .5, 169 kr .5, "T" kr 2.5, 171 kr 2.5, "V" kr 2, "W" kr 2, "X" kr 2, "Y" kr 2.5, 221 kr 2.5, "Z" kr 2, 172 kr 2, 174 kr 2, 175 kr 2, "a" kr .8, 177 kr .8, 225 kr .8, 228 kr .8, "c" ko, 230 ko, 232 ko, "d" ko, 239 ko, "e" ko, 234 ko, 236 ko, 233 ko, "g" kr 1.5, "o" ko, 243 ko, 246 ko, 244 ko, "q" ko, "s" kr .3, 182 kr .3, 185 kr .3;
+ligtable "w": "A" kr 2.5, 161 kr 2.5, 193 kr 2.5, 196 kr 2.5, "J" kr 2, "M" kr .5, "S" kr .5, 166 kr .5, 169 kr .5, "T" kr 2.5, 171 kr 2.5, "V" kr 2, "W" kr 2, "X" kr 2, "Y" kr 2.5, 221 kr 2.5, "Z" kr 2, 172 kr 2, 174 kr 2, 175 kr 2, "a" kr .8, 177 kr .8, 225 kr .8, 228 kr .8, "c" ko, 230 ko, 232 ko, "d" ko, 239 ko, "e" ko, 234 ko, 236 ko, 233 ko, "g" kr 1.5, "o" ko, 243 ko, 246 ko, 244 ko, "q" ko, "s" kr .3, 182 kr .3, 185 kr .3;
+ligtable "x": "J" kr 1, "S" kr .5, 166 kr .5, 169 kr .5, "T" kr 3, 171 kr 3, "V" kr 2, "W" kr 2, "Y" kr 2.5, 221 kr 2.5, "a" kr .8, 177 kr .8, 225 kr .8, 228 kr .8, "c" ko, 230 ko, 232 ko, "d" ko, 239 ko, "e" ko, 234 ko,236 ko, 233 ko, "g" kr 1.5, "o" ko, 243 ko, 246 ko, 244 ko, "q" ko;
+ligtable "y": "A" kr 2.5, 161 kr 2.5, 193 kr 2.5, 196 kr 2.5, "J" kr 2, "M" kr .5, "S" kr .5, 166 kr .5, 169 kr .5, "T" kr 3, 171 kr 3, "V" kr 2, "W" kr 2, "X" kr 2, "Y" kr 2.5, 221 kr 2.5, "Z" kr 2, 172 kr 2, 174 kr 2, 175 kr 2, "a" kr .8, 177 kr .8, 225 kr .8, 228 kr .8, "c" ko, 230 ko, 232 ko, "d" ko, 239 ko, "e" ko, 234 ko, 236 ko, 233 ko, "g" kr 1.5, "o" ko, 243 ko, 246 ko, 244 ko, "q" ko, "s" kr .3, 182 kr .3, 185 kr .3;
+ligtable 253: "A" kr 2.5, 161 kr 2.5, 193 kr 2.5, 196 kr 2.5, "J" kr 2, "M" kr .5, "S" kr .5, 166 kr .5, 169 kr .5, "T" kr 3, 171 kr 3, "V" kr 2, "W" kr 2, "X" kr 2, "Y" kr 2.5, 221 kr 2.5, "Z" kr 2, 172 kr 2, 174 kr 2, 175 kr 2, "a" kr .8, 177 kr .8, 225 kr .8, 228 kr .8, "c" ko, 230 ko, 232 ko, "d" ko, 239 ko, "e" ko, 234 ko, 236 ko, 233 ko, "g" kr 1.5, "o" ko, 243 ko, 246 ko, 244 ko, "q" ko, "s" kr .3, 182 kr .3, 185 kr .3;
+ligtable "z": "J" kr 1, "T" kr 3, 171 kr 3, "V" kr 1, "W" kr 1, "Y" kr 1, 221 kr 1, "a" kv, 177 kv, 225 kv, 228 kv, "c" ko, 230 ko, 232 ko, "d" ko, 239 ko, "e" ko, 234 ko, 236 ko, 233 ko, "g" kr 1.5, "o" ko, 243 ko, 246 ko, 244 ko, "q" ko, "s" kr .5, 182 kr .5, 185 kr .5;
+ligtable 188: "J" kr 1, "T" kr 3, 171 kr 3, "V" kr 1, "W" kr 1, "Y" kr 1, 221 kr 1, "a" kv, 177 kv, 225 kv, 228 kv, "c" ko, 230 ko, 232 ko, "d" ko, 239 ko, "e" ko, 234 ko, 236 ko, 233 ko, "g" kr 1.5, "o" ko, 243 ko, 246 ko, 244 ko, "q" ko, "s" kr .5, 182 kr .5, 185 kr .5;
+ligtable 190: "J" kr 1, "T" kr 3, 171 kr 3, "V" kr 1, "W" kr 1, "Y" kr 1, 221 kr 1, "a" kv, 177 kv, 225 kv, 228 kv, "c" ko, 230 ko, 232 ko, "d" ko, 239 ko, "e" ko, 234 ko, 236 ko, 233 ko, "g" kr 1.5, "o" ko, 243 ko, 246 ko, 244 ko, "q" ko, "s" kr .5, 182 kr .5, 185 kr .5;
+ligtable 191: "J" kr 1, "T" kr 3, 171 kr 3, "V" kr 1, "W" kr 1, "Y" kr 1, 221 kr 1, "a" kv, 177 kv, 225 kv, 228 kv, "c" ko, 230 ko, 232 ko, "d" ko, 239 ko, "e" ko, 234 ko, 236 ko, 233 ko, "g" kr 1.5, "o" ko, 243 ko, 246 ko, 244 ko, "q" ko, "s" kr .5, 182 kr .5, 185 kr .5;
+
+
diff --git a/fonts/tapir/tap.mf b/fonts/tapir/tap.mf
new file mode 100644
index 0000000000..1b3ef58704
--- /dev/null
+++ b/fonts/tapir/tap.mf
@@ -0,0 +1,3866 @@
+font_identifier:="Tapir";
+u#:=20/36pt#;
+asc_height#:=12u#;
+cap_height#:=14.5u#;
+Asc_height#:=19u#;
+desc_depth#:=4.5u#;
+par_height#:=15.5u#;
+par_depth#:=u#;
+x_height#:=8u#;
+stem#:=1.1u#;
+cap_stem#:=1.1u#;
+fig_width#:=.5cap_height#+2u#+.5stem#;
+can:=15;
+dot_height#:=1.5cap_stem#;
+math_axis#:=5u#;
+font_size 10pt#;
+font_x_height 8u#;
+font_normal_space 4u#;
+font_normal_shrink 2u#;
+font_normal_stretch 3u#;
+
+mode_setup;
+define_pixels(u, cap_height, asc_height, Asc_height, x_height, desc_depth, stem, cap_stem, dot_height, math_axis, par_height, par_depth, fig_width);
+
+if unknown tapir_extended_charset: input tap-enc fi;
+
+let semi_ =;; let colon_ = :; let endchar_ = endchar;
+def iff expr b = if b:let next_=use_it else:let next_=lose_it fi; next_ enddef;
+def use_it = let : = restore_colon; enddef;
+def restore_colon = let : = colon_; enddef;
+def lose_it = let endchar=fi; inner cmchar; let ;=fix_ semi_ if false enddef;
+def fix_=let ;=semi_; let endchar=endchar_; outer cmchar; enddef;
+def always_iff = let : = endgroup; killboolean enddef;
+def killboolean text t = use_it enddef;
+
+%%Taken from cmbase
+vardef diag_ratio(expr a,b,y,c) = % assuming that $a>\vert b/y\vert$,
+% compute the value $\alpha=(x\6{++}y)/y$ such that $ax+b\alpha=c$
+ numeric aa_,bb_,cc_; bb_=b/y; cc_=c/y; aa_=a*a-bb_*bb_;
+ (a*(cc_++sqrt aa_)-bb_*cc_)/aa_ enddef;
+
+
+def t_:=slanted slant enddef;
+if unknown serifs: boolean serifs; serifs:=false; fi
+if unknown italic: boolean italic; italic:=false; fi
+if unknown slant: numeric slant ; slant:=0; fi
+numeric c_height;
+picture used_p;
+boolean low, low.low, upper, upper.upper;
+low=upper=false; low.low=upper.upper=true;
+extra_beginchar:="pickup pencircle scaled .005pt;";
+
+def savep:= used_p:=currentpicture; enddef;
+def usep:= addto currentpicture also used_p; enddef;
+def v_center(expr t):= .5t+math_axis#, .5t-math_axis# enddef;
+def serif(suffix $)(expr tha, thb):=
+if serifs:
+ penpos$sa(.45stem,thb); penpos$sb(.45stem,90+tha);
+ z$sa.l=z$; z$sb=z$sa+(1.5stem,0) rotated tha;
+ z$sc=z$+(.5stem,0) rotated tha;
+ filldraw z$sa.l---z$sb.l..z$sb.r---z$sa.r--cycle;
+ penlabels($sa,$sb);
+fi
+enddef;
+
+def hpos(suffix $)(expr wid, ang):=
+ x$r-x$l=wid; .5[x$r,x$l]=x$; y$=y$l=y$r-wid*sind(ang)*aspect_ratio;
+enddef;
+
+def vpos(suffix $)(expr wid, ang):=
+ y$r-y$l=wid; .5[y$r,y$l]=y$; x$=x$l=x$r-wid*sind(ang)*aspect_ratio;
+enddef;
+
+def kruh(suffix $)(expr rad):=
+.5[z$a,z$c]=.5[z$b,z$d]=z$; x$a-x$c=y$b-y$d=rad; x$b=x$d; y$a=y$c;
+penpos$a(stem,0); penpos$b(stem,90); penpos$c(stem,180); penpos$d(stem,270);
+filldraw z$a.r{up}..{left}z$b.r..{down}z$c.r..{right}z$d.r..{up}z$a.r--z$a.l{down}..{left}z$d.l..{up}z$c.l..{right}z$b.l..{down}z$a.l--cycle;
+penlabels($,$a,$b,$c,$d);
+enddef;
+
+def italic_a(suffix $)(expr rad):=
+penpos10(stem,0); penpos11(stem,90); penpos12(stem,180); penpos13(stem,-90);
+penpos14(stem,0);
+.5[z10,z12]=.5[z11,z13]; .5[y13,y11]=y$; y10=y12; x11=x13; y11-y13=x10-x12; x10-x12=rad;
+x11=x$; %.5[x12,x14]=x$;
+y14=y10; x14=x11+2stem; z15r=(x14r,y11r); z15l=(x14l,y11l);
+filldraw z14r--z15r---z11r..{down}z12r..{right}z13r..{up}z14r--z14l{down}..{left}z13l..{up}z12l..{right}z11l
+---z15l--z14l--cycle;
+enddef;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Accent macros
+def acute(suffix $)suffix modifier:=
+numeric acutewid;
+y$'=y$=y$''+3u; .5[x$',x$'']=x$; x$'-x$''=2.5u;
+acutewid:=(if low.modifier: cap_stem else: stem fi)/cosd(90+angle(z$''-z$'));
+penpos$'(acutewid,0); penpos$''(.75acutewid,0);
+filldraw (z$'l--z$'r--z$''r--z$''l--cycle) if low.modifier: shifted -z$ yscaled .75 shifted z$ fi;
+enddef;
+
+def grave(suffix $)suffix modifier:=
+numeric acutewid;
+y$'=y$=y$''+3u; .5[x$',x$'']=x$; x$'-x$''=-2.5u;
+acutewid:=(if low.modifier: cap_stem else: stem fi)/cosd(90+angle(z$''-z$'));
+penpos$'(acutewid,0); penpos$''(.75acutewid,0);
+filldraw (z$'l--z$'r--z$''r--z$''l--cycle) if low.modifier: shifted -z$ yscaled .75 shifted z$ fi;
+enddef;
+
+def dot(suffix $):=
+.5[y$c,y$d]=y$b=y$a=y$; .5[x$a,x$b]=x$c=x$d=x$; x$a-x$b=dot_height=.8(y$c-y$d);
+filldraw z$a--z$c--z$b--z$d--cycle;
+enddef;
+
+def acc_dot(suffix $):=
+.5[y$c,y$d]=y$b=y$a=y$; .5[x$a,x$b]=x$c=x$d=x$; x$a-x$b=1.2stem=.75(y$c-y$d);
+filldraw z$a--z$c--z$b--z$d--cycle;
+enddef;
+
+def caron(suffix $)suffix modifier:=
+numeric carontheta, caron_stem;
+caron_stem:=if low.modifier: cap_stem else: stem fi;
+hpos($a)(caron_stem,can); hpos($b)(caron_stem,-can);
+y$a.r=y$=y$b.l;
+x$c.r=.5[x$a.r,x$b.l]=x$; y$-y$c.r=3u; x$b.l-x$a.r=2.5u;
+carontheta:=90+angle(z$a.l-z$c.r);
+penpos$c(if low.modifier: 0.8\\fi caron_stem/sind(carontheta),90);
+filldraw (z$a.l--z$c.r--z$b.r--z$b.l--z$c.l--z$a.r--cycle);% if low.modifier: shifted -z$ scaled .8 shifted z$ fi;
+penlabels($c);
+enddef;
+
+def ring(suffix $)suffix modifier:=
+numeric ring_stem;
+ring_stem:=.7* if low.modifier: cap_stem else: stem fi;
+.5[z$a,z$c]=.5[z$d,z$b]; .5[x$a,x$c]=x$; x$a-x$c=y$b-y$d=2.5u; y$b=y$-.5ring_stem; y$a=y$c; x$b=x$d;
+penpos$a(ring_stem,0);penpos$b(ring_stem,90);penpos$c(ring_stem,180);penpos$d(ring_stem,270);
+filldraw z$a.r{up}..z$b.r{left}..z$c.r{down}..{right}z$d.r..{up}z$a.r--z$a.l{down}..z$d.l{left}..{up}z$c.l..{right}z$b.l..{down}z$a.l--cycle;
+penlabels($a,$b,$c,$d);
+enddef;
+
+def ac_caron(suffix $)suffix modifier:=
+numeric ac_carwid;
+y$'=y$=y$''+2u; .5[x$',x$'']=x$; x$'-x$''=.8u;
+ac_carwid:=(if low.modifier: cap_stem else: stem fi)/cosd(90+angle(z$''-z$'));
+penpos$'(ac_carwid,0); penpos$''(.75ac_carwid,0);
+filldraw (z$'l--z$'r--z$''r--z$''l--cycle) if low.modifier: shifted -z$ yscaled .75 shifted z$ fi;
+enddef;
+
+def umlaut(suffix $):=
+.5[x$a,x$b]=x$; y$a=y$b=y$; x$b-x$a=2.5u;
+acc_dot($a); acc_dot($b);
+enddef;
+
+def H_acute(suffix $)suffix modifier:=
+numeric H_acutewid;
+y$'=y$=y$''+3u; .5[x$',x$'']=x$; x$'-x$''=1.4u;
+H_acutewid:=(if low.modifier: cap_stem else: stem fi)/cosd(90+angle(z$''-z$'));
+penpos$'(H_acutewid,0); penpos$''(.75H_acutewid,0);
+filldraw (z$'l--z$'r--z$''r--z$''l--cycle) if low.modifier: shifted -z$ yscaled .75 shifted z$ fi;
+enddef;
+
+def H_umlaut(suffix $)suffix modifier:=
+.5[x$a,x$b]=x$; y$a=y$b=y$; x$b-x$a=2u;
+H_acute($a).modifier; H_acute($b).modifier;
+enddef;
+
+def quota(suffix $)suffix modifier:=
+y$'=y$=y$''+3.5u; .5[x$',x$'']=x$; x$'=x$'';
+hpos($')(if not upper.modifier: 1.5\\fi stem,if not upper.modifier: 0\\fi can); hpos($'')(if upper.modifier: 1.5\\fi stem, if upper.modifier:0\\fi can);
+filldraw z$'l--z$'r--z$''r--z$''l--cycle;
+enddef;
+
+def circumflex(suffix $)suffix modifier:=
+numeric circtheta, circ_stem;
+circ_stem:=if low.modifier: cap_stem else: stem fi;
+hpos($a)(circ_stem,-can); hpos($b)(circ_stem,can);
+y$a.r=y$b.l; y$c.r=y$;
+x$c.r=.5[x$a.r,x$b.l]=x$; y$-y$a.r=3u; x$b.l-x$a.r=2.5u;
+circtheta:=180+angle(z$c.r-z$a.r);
+penpos$c(1.5*if low.modifier: 0.8\\fi circ_stem/sind(circtheta),270);
+filldraw (z$a.l--z$c.r--z$b.r--z$b.l--z$c.l--z$a.r--cycle);
+penlabels($c);
+enddef;
+
+def cedilla(suffix $):=
+vpos($')(.75stem,can); vpos($'')(.75stem,can); vpos($'''')(.5stem,can); penpos$'''(.5stem,90);
+.5[x$',x$'']=x$; x$''-x$'=3u; y$'r=y$''r=y$; y$'''l=y$''''l=-d; x$'''=x$; x$''''=x$';
+filldraw z$'l+u*right--z$''l{down}..{left}z$'''r..z$''''r--z$''''l..z$'''l{right}..z$''r---z$'r+u*right--cycle;
+penlabels($',$'',$''',$'''');
+enddef;
+
+def breve(suffix $)suffix modifier:=
+hpos($')(stem,can); hpos($''')(stem,can); penpos$''(stem,90);
+.5[x$'l,x$'''r]=x$; x$'''r-x$'l=5u; x$''=x$; y$'r=y$'''r=y$; y$''=y$-if low.modifier: .35 else: .5fi\\(x$'''-x$');
+filldraw z$'l{down}..{right}z$''l..{up}z$'''r--z$'''l{down}..{left}z$''r..{up}z$'r--cycle;
+penlabels($',$'',$''',$);
+enddef;
+
+def macron(suffix $):=
+vpos($')(stem,can); penpos$''(stem,90);
+y$'r=y$''r=y$; x$''-x$'l=4u; .5[x$'l,x$'']=x$;
+filldraw z$'l--z$''l--z$''r--z$'r--cycle;
+enddef;
+
+def tilde(suffix $):=
+hpos($')(stem,-can); hpos($'''')(stem,-can); penpos$''(stem,90); penpos$'''(stem,90);
+x$'l-x$''''r=-7u; .5[x$'l,x$''''r]=x$; x$''=.5[x$',x$]; x$'''=.5[x$'''',x$];
+y$''r=y$; y$''-y$'=1.5u; y$''-y$'=y$''''-y$'''=.75(y$''-y$''');
+penpos$''a(stem, angle(z$''-z$''')-90); z$''a=.5[z$'',z$'''];
+filldraw z$'r{up}..z$''l..z$''a.l..z$'''l ..{up}z$''''r--z$''''l{down}..z$'''r..z$''a.r..z$''r..{down}z$'l--cycle;
+penlabels($',$'',$''a,$''',$'''',$);
+enddef;
+
+def acc_tilde(suffix $)suffix modifier:=
+hpos($')(.9stem,-can); hpos($'''')(.9stem,-can); penpos$''(.9stem,90); penpos$'''(.9stem,90);
+x$'l-x$''''r=-7u; .5[x$'l,x$''''r]=x$; x$''=.5[x$',x$]; x$'''=.5[x$'''',x$];
+y$''r=y$; y$''-y$'=if not low.modifier: 1.5fi\\u; y$''-y$'=y$''''-y$'''=.75(y$''-y$''');
+penpos$''a(stem, angle(z$''-z$''')-90); z$''a=.5[z$'',z$'''];
+filldraw z$'r{up}..z$''l..z$''a.l..z$'''l ..{up}z$''''r--z$''''l{down}..z$'''r..z$''a.r..z$''r..{down}z$'l--cycle;
+penlabels($',$'',$''a,$''',$'''',$);
+enddef;
+
+def ogonek(suffix $):=
+.5[z$',z$''']=.5[z$'',z$'''']; y$''''=y$-desc_depth+.5stem; .5[x$',x$''']=x$; x$'''-x$'=-3.5u;
+y$'=y$'''; x$''=x$''''; y$''=y$-.5stem;
+penpos$'(stem,0); penpos$''(stem,90); penpos$'''(stem,180); penpos$''''(stem,-90);
+p:= z$'{up}..{left}z$''..{down}z$'''..{right}z$''''..cycle;
+vpos($''''')(stem,-can); z$'''''=point 3.5 of p; penpos$''''''(stem,135);
+filldraw z$'''l{down}..z$''''l..{direction 3.5 of p}z$'''''r--z$'''''l{dir (angle(direction 3.5 of p)-180)}..z$''''r..{up}z$'''r..z$''r+stem*up--z$''l+stem*up..cycle;
+penlabels($',$'',$''',$'''');
+enddef;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Lowercase
+if italic:
+beginchar("a", x_height#+stem#, x_height#,0);
+z0=(.5w+.5stem,.5h); vpos(1)(stem,can);
+x1r=w-.5u; y1l=0;
+italic_a(0)(w-2u);
+filldraw z14l{down}..{right}z1l--z1r{left}..{up}z14r--cycle;
+penlabels(1,10,11,12,13,14);
+savep;
+endchar;
+
+iff known latin_aacute:
+beginchar(latin_aacute,x_height#+stem#,asc_height#,0);
+usep;
+z0=(5.3u,h);
+acute(0);
+endchar;
+
+iff known latin_aumlaut:
+beginchar(latin_aumlaut,x_height#+stem#,.15[asc_height#,x_height#],0);
+usep;
+z0=(.5w+u,h-.6stem);
+umlaut(0);
+endchar;
+
+iff known latin_agrave:
+beginchar(latin_agrave,x_height#+stem#,asc_height#,0);
+usep;
+z0=(.5w+1.5u,h);
+grave(0);
+endchar;
+
+iff known latin_acircumflex:
+beginchar(latin_acircumflex,7.6u#,asc_height#,0);
+usep;
+z0=(.5w+1.8u,h);
+circumflex(0);
+endchar;
+
+iff known latin_atilde:
+beginchar(latin_atilde,8.6u#,asc_height#,0);
+addto currentpicture also used_p shifted (.2u,0);
+z0=(.5w+u,h);
+acc_tilde(0);
+endchar;
+
+iff known latin_aring:
+beginchar(latin_aring,7.6u#,asc_height#,0);
+usep;
+z0=(.5w+1.7u,h);
+ring(0);
+endchar;
+
+iff known latin_amacron:
+beginchar(latin_amacron,7.6u#,asc_height#,0);
+usep;
+z0=(.5w+u,h);
+macron(0);
+endchar;
+
+iff known latin_abreve:
+beginchar(latin_abreve,7.6u#,asc_height#,0);
+usep;
+z0=(.5w+1.5u,h);
+breve(0);
+endchar;
+
+iff known latin_aogonek:
+beginchar(latin_aogonek, x_height#+stem#, x_height#,desc_depth#);
+z0=(.5w+.5stem,.5h); vpos(1)(stem,can);
+x1r=w-.5u; y1l=0;
+italic_a(0)(w-2u);
+penlabels(1,10,11,12,13,14);
+.5[z20,z22]=.5[z21,z23]; y23=-d+.5stem; x20+.5stem=(w+u)-u; y20=y22; x21=x23; y21-y23=x20-x22; y21=-.5stem;
+penpos20(stem,0); penpos21(stem,90); penpos22(stem,180); penpos23(stem,-90);
+path p;
+p:= z20{up}..{left}z21..{down}z22..{right}z23..cycle;
+vpos(24)(stem,-can); z24=point 3.5 of p; penpos25(stem,135);
+path p[]; numeric t[];
+p1:=z22r{up}..{z1l-z22r}z1r;
+p2:=z1l{left}..{up}z14l--z14r{down}..{right}z1r;
+(t1,t2)=p1 intersectiontimes p2;
+t3-2=xpart(subpath (2,infinity) of p2 intersectiontimes (z21--z10r));
+filldraw z22l{down}..z23l..{direction 3.5 of p}z24r--z24l{dir (angle(direction 3.5 of p)-180)}..z23r..subpath (0,t1) of p1--
+subpath (t2,t3) of p2..z1l{z22r-z1l}..cycle;
+penlabels(20,21,22,23,24,25,100);
+endchar;
+
+else:
+beginchar("a", 7.6u#, x_height#,0);
+hpos(1)(stem,can); penpos2(stem,0); penpos3(stem,90); vpos(4)(stem,-can);
+lft x1r=w-u; y1=0; x2=x1; y2=.72h; x3=.5w; top y3r=h; y4=.9h; x4l=2u;
+filldraw z1l--z1r--z2r{up}..{left}z3r..z4r--z4l..z3l{right}..{down}z2l--cycle;
+serif(4r,angle(z4l-z4r),180+angle(direction 1 of (z3r{left}..z4r)));
+.5[z10,z12]=.5[z11,z13]; y13=.5stem; x10+.5stem=w-u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5stem=u;
+penpos10(stem,0); penpos11(stem,90); penpos12(stem,180); penpos13(stem,-90);
+filldraw z10r{up}..{left}z11r..{down}z12r..{right}z13r..{up}z10r--z10l{down}..{left}z13l..{up}z12l..{right}z11l..{down}z10l--cycle;
+labels(4l);
+savep;
+endchar;
+
+iff known latin_aacute:
+beginchar(latin_aacute,7.6u#,asc_height#,0);
+usep;
+z0=(5.3u,h);
+acute(0);
+endchar;
+
+iff known latin_aumlaut:
+beginchar(latin_aumlaut,7.6u#,.15[asc_height#,x_height#],0);
+usep;
+z0=(.5w,h-.6stem);
+umlaut(0);
+endchar;
+
+iff known latin_agrave:
+beginchar(latin_agrave,7.6u#,asc_height#,0);
+usep;
+z0=(.5w,h);
+grave(0);
+endchar;
+
+iff known latin_acircumflex:
+beginchar(latin_acircumflex,7.6u#,asc_height#,0);
+usep;
+z0=(.5w+.25u,h);
+circumflex(0);
+endchar;
+
+iff known latin_atilde:
+beginchar(latin_atilde,8.6u#,asc_height#,0);
+addto currentpicture also used_p shifted (.2u,0);
+z0=(.5w,h);
+acc_tilde(0);
+endchar;
+
+iff known latin_aring:
+beginchar(latin_aring,7.6u#,asc_height#,0);
+usep;
+z0=(.5w+.25u,h);
+ring(0);
+endchar;
+
+iff known latin_amacron:
+beginchar(latin_amacron,7.6u#,asc_height#,0);
+usep;
+z0=(.5w+.5u,h);
+macron(0);
+endchar;
+
+iff known latin_abreve:
+beginchar(latin_abreve,7.6u#,asc_height#,0);
+usep;
+z0=(.5w+.5u,h);
+breve(0);
+endchar;
+
+iff known latin_aogonek:
+beginchar(latin_aogonek,7.6u#,x_height#,desc_depth#);
+path p;
+hpos(1)(stem,can); penpos2(stem,0); penpos3(stem,90); vpos(4)(stem,-can);
+lft x1r=w-u; y1=0; x2=x1; y2=.72h; x3=.5w; top y3r=h; y4=.9h; x4l=2u;
+filldraw z1l--z1r--z2r{up}..{left}z3r..z4r--z4l..z3l{right}..{down}z2l--cycle;
+serif(4r,angle(z4l-z4r),180+angle(direction 1 of (z3r{left}..z4r)));
+.5[z10,z12]=.5[z11,z13]; y13=.5stem; x10+.5stem=w-u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5stem=u;
+penpos10(stem,0); penpos11(stem,90); penpos12(stem,180); penpos13(stem,-90);
+filldraw z10r{up}..{left}z11r..{down}z12r..{right}z13r..{up}z10r--z10l{down}..{left}z13l..{up}z12l..{right}z11l..{down}z10l--cycle;
+penlabels(1,2,3,4);
+.5[z20,z22]=.5[z21,z23]; y23=-d+.5stem; x20+.5stem=(w+u)-u; y20=y22; x21=x23; y21-y23=x20-x22; y21=-.5stem;
+penpos20(stem,0); penpos21(stem,90); penpos22(stem,180); penpos23(stem,-90);
+p:= z20{up}..{left}z21..{down}z22..{right}z23..cycle;
+vpos(24)(stem,-can); z24=point 3.5 of p; penpos25(stem,135);
+filldraw z22l{down}..z23l..{direction 3.5 of p}z24r--z24l{dir (angle(direction 3.5 of p)-180)}..z23r..{up}z22r..{z1l-z22r}z1l--z1r{down}..z21l..cycle;
+penlabels(20,21,22,23,24,25);
+endchar;
+fi
+
+beginchar("b", 10u#,cap_height#,0);
+penpos1(stem,0); hpos(2)(stem,can);
+x1l=u=x2l; y1=y10; y2r=h;
+.5[z10,z12]=.5[z11,z13]; y13=.5stem; x10+.5stem=w-u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5stem=u;
+filldraw z1l--z1r--z2r--z2l--cycle;
+serif(2r)(angle(z2l-z2r),270);
+penpos10(stem,0); penpos11(stem,90); penpos12(stem,180); penpos13(stem,-90);
+filldraw z10r{up}..{left}z11r..{down}z12r..{right}z13r..{up}z10r--z10l{down}..{left}z13l..{up}z12l..{right}z11l..{down}z10l--cycle;
+endchar;
+
+beginchar("c", 9u#,x_height#,0);
+path p;
+penpos11(stem,90); penpos12(stem,0); penpos13(stem,90);
+.5[z10,z12]=.5[z11,z13]; y13=.5stem; x10+.5stem=(w+u)-u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5stem=u;
+p:= z10{up}..{left}z11..{down}z12..{right}z13..cycle;
+z1=point .5 of p;
+z2=point 3.5 of p;
+penpos1(stem,(170-angle(direction.5 of p))); penpos2(stem,(100+angle(direction 3.5 of p)));
+filldraw z1r..{left}z11r..{down}z12l..{right}z13l..z2l--z2r..z13r{left}..z12r{up}..z11l{right}..z1l--cycle;
+c_height:=y2l;
+penlabels(1,2);
+serif(1r,angle(z1l-z1r),180+angle(direction.5 of p));
+savep;
+endchar;
+
+iff known latin_ccaron:
+beginchar(latin_ccaron,9u#,asc_height#,0);
+usep;
+z0=(.5w+.7u,h);
+caron(0);
+endchar;
+
+iff known latin_cacute:
+beginchar(latin_cacute,9u#,asc_height#,0);
+usep;
+z0=(.5w+1.9u,h);
+acute(0);
+endchar;
+
+iff known latin_ccircumflex:
+beginchar(latin_ccircumflex,9u#,asc_height#,0);
+usep;
+z0=(.5w+.75u,h);
+circumflex(0);
+endchar;
+
+iff known latin_cdotabove:
+beginchar(latin_cdotabove,9u#,.15[asc_height#,x_height#],0);
+usep;
+z0=(.5w+.5u,h-.6stem);
+acc_dot(0);
+endchar;
+
+
+iff known latin_ccedilla:
+beginchar(latin_ccedilla,9u#,x_height#,.75desc_depth#-.5stem#);
+usep;
+z0=(.5w,.5stem);
+cedilla(0);
+endchar;
+
+beginchar("d", 10u#,cap_height#,0);
+hpos(1)(stem,can); hpos(2)(stem,can);
+x1r=w-u=x2r; y1=0; y2r=h;
+filldraw z1l--z1r--z2r--z2l--cycle;
+serif(2r)(angle(z2l-z2r),270);
+.5[z10,z12]=.5[z11,z13]; y13=.5stem; x10+.5stem=w-u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5stem=u;
+penpos10(stem,0); penpos11(stem,90); penpos12(stem,180); penpos13(stem,-90);
+filldraw z10r{up}..{left}z11r..{down}z12r..{right}z13r..{up}z10r--z10l{down}..{left}z13l..{up}z12l..{right}z11l..{down}z10l--cycle;
+savep;
+endchar;
+
+iff known latin_dcaron:
+beginchar(latin_dcaron,12u#,cap_height#,0);
+usep;
+z0=(w-1.8u,h);
+ac_caron(0);
+endchar;
+
+iff known latin_dslash:
+beginchar(latin_dslash,10.5u#,cap_height#,0);
+usep;
+y0=.75h; rt x0''=w-.75u;
+macron(0);
+endchar;
+
+iff known latin_eth:
+beginchar(latin_eth, 10u#,cap_height#,0);
+.5[z10,z12]=.5[z11,z13]; y13=.5stem; x10+.5stem=w-u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5stem=u;
+penpos10(stem,0); penpos11(stem,90); penpos12(stem,180); penpos13(stem,-90);
+filldraw z10r{up}..{left}z11r..{down}z12r..{right}z13r..{up}z10r--z10l{down}..{left}z13l..{up}z12l..{right}z11l..{down}z10l--cycle;
+hpos(1)(stem,can); vpos(2)(stem,-can);
+x1r=w-u; x2=.3w; y1=y10; y2r=.9h;
+filldraw z1l--z1r{up}..z2r--z2l..{down}cycle;
+z0=((.5w,0)--(.5w,h)) intersectionpoint (z1{up}..z2);
+.5[z3,z4]=z0; z3-z4=(4u,0) rotated 30;
+penpos3(.9stem,120); penpos4(.9stem,120-can);
+filldraw z3r--z3l--z4l--z4r--cycle;
+penlabels(3,4);
+endchar;
+
+beginchar("e", 9u#,x_height#,0);
+path p;
+penpos11(stem,90); penpos12(stem,0); penpos13(stem,90);
+.5[z10,z12]=.5[z11,z13]; y13=.5stem; x10+.5stem=(w+u)-u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5stem=u;
+p:= z10{up}..{left}z11..{down}z12..{right}z13..cycle;
+z1=point .5 of p;
+z2=point 3.5 of p;
+z3=((0,.25h)--(.5w,.25h)) intersectionpoint p;
+penpos1(stem,(170-angle(direction.5 of p))); penpos2(stem,(100+angle(direction 3.5 of p)));
+penpos3(stem,(90+angle(z3-z1))); z1''=(subpath (0,.5) of (z1r--z3r)) intersectionpoint p; z1'''=z1''+stem*dir(270+angle(z3-z1));
+z1'=(z1'''--z3l) intersectionpoint (z11l{right}..z1l);
+filldraw z3r--z1r..{left}z11r..{down}z12l..{right}z13l..z2l--z2r..z13r{left}..z12r{up}..z11l{right}..z1'--z3l--cycle;
+penlabels(3); labels(1'', 1');
+savep;
+endchar;
+
+iff known latin_eacute:
+beginchar(latin_eacute,9u#,asc_height#,0);
+usep;
+z0=(6.5u,h);
+acute(0);
+endchar;
+
+iff known latin_ecaron:
+beginchar(latin_ecaron,9u#,asc_height#,0);
+usep;
+z0=(.5w+.56u,h);
+caron(0);
+endchar;
+
+iff known latin_egrave:
+beginchar(latin_egrave,9u#,asc_height#,0);
+usep;
+z0=(.5w-.56u,h);
+grave(0);
+endchar;
+
+iff known latin_eumlaut:
+beginchar(latin_eumlaut,9u#,.15[asc_height#,x_height#],0);
+usep;
+z0=(.5w+.5u,h-.6stem);
+umlaut(0);
+endchar;
+
+iff known latin_ecircumflex:
+beginchar(latin_ecircumflex,9u#,asc_height#,0);
+usep;
+z0=(.5w+.56u,h);
+circumflex(0);
+endchar;
+
+iff known latin_emacron:
+beginchar(latin_emacron,9u#,asc_height#,0);
+usep;
+z0=(.5w+.4u,h);
+macron(0);
+endchar;
+
+iff known latin_ebreve:
+beginchar(latin_ebreve,9u#,asc_height#,0);
+usep;
+z0=(.5w+.56u,h);
+breve(0);
+endchar;
+
+iff known latin_edotabove:
+beginchar(latin_edotabove,9u#,.15[asc_height#,x_height#],0);
+usep;
+z0=(.5w+.75u,h-.6stem);
+acc_dot(0);
+endchar;
+
+iff known latin_eogonek:
+beginchar(latin_eogonek,9u#,x_height#,desc_depth#);
+path p;
+penpos11(stem,90); penpos12(stem,0); penpos13(stem,90);
+.5[z10,z12]=.5[z11,z13]; y13=.5stem; x10+.5stem=(w+u)-u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5stem=u;
+p:= z10{up}..{left}z11..{down}z12..{right}z13..cycle;
+z1=point .5 of p;
+z2=point 3.5 of p;
+z3=((0,.25h)--(.5w,.25h)) intersectionpoint p;
+penpos1(stem,(170-angle(direction.5 of p))); penpos2(stem,(100+angle(direction 3.5 of p)));
+penpos3(stem,(90+angle(z3-z1))); z1''=(subpath (0,.5) of (z1r--z3r)) intersectionpoint p; z1'''=z1''+stem*dir(270+angle(z3-z1));
+z1'=(z1'''--z3l) intersectionpoint (z11l{right}..z1l);
+filldraw z3r--z1r..{left}z11r..{down}z12l..{right}z13l..z2l--z2r..z13r{left}..z12r{up}..z11l{right}..z1'--z3l--cycle;
+penlabels(1,2,3,4,12); labels(1'', 1');
+vpos(5)(stem,-can); x5=x2; y5=-.8d; penpos6(stem,0); y6=-.5d; (x5-x6)/(y6-y5)=(x2-x12)/(y12-y2);
+filldraw z2l{dir (angle(direction 3.5 of p)-180)}..{down}z6r..z5r--z5l..z6l{up}..{dir angle(direction 3.5 of p)}z2r--cycle;
+penlabels(5,6);
+endchar;
+
+beginchar("f", 6u#,cap_height#,0);
+hpos(1)(stem,can); penpos2(stem,0); vpos(3)(stem,can);
+x1l=2u=x2l; y1=0; y2=.8h;
+path p;
+penpos11(stem,90); penpos12(stem,0); penpos13(stem,90);
+.5[z10,z12]=.5[z11,z13]; y11=h-.5stem; x10+.5stem=(w+4u)-u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5stem=2u;
+p:= z10{up}..{left}z11..{down}z12..{right}z13..cycle;
+z3l=z11l;
+filldraw z3r..z11r{left}..{down}z2l--z1l--z1r--z2r{up}..{right}z11l--cycle;
+vpos(4)(stem,can); penpos5(stem,90);
+y4=y5=x_height; x4l=u; x5=w-u;
+filldraw z4r--z5r--z5l--z4l--cycle;
+penlabels(3);
+serif(3r)(angle(z3l-z3r),180-angle(direction 0 of (z3r..{left}z11r)));
+endchar;
+
+iff known latin_long_s:
+beginchar(latin_long_s, 6u#,cap_height#,0);
+hpos(1)(stem,can); penpos2(stem,0); vpos(3)(stem,can);
+x1l=2u=x2l; y1=0; y2=.8h;
+path p;
+penpos11(stem,90); penpos12(stem,0); penpos13(stem,90);
+.5[z10,z12]=.5[z11,z13]; y11=h-.5stem; x10+.5stem=(w+4u)-u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5stem=2u;
+p:= z10{up}..{left}z11..{down}z12..{right}z13..cycle;
+z3l=z11l;
+filldraw z3r..z11r{left}..{down}z2l--z1l--z1r--z2r{up}..{right}z11l--cycle;
+penlabels(3);
+serif(3r)(angle(z3l-z3r),180-angle(direction 0 of (z3r..{left}z11r)));
+endchar;
+
+if italic:
+beginchar("g", x_height#+stem#, x_height#,desc_depth#);
+z0=(.5w+.5stem,.5h); vpos(1)(stem,can); penpos2(stem,0);
+x1r=x12l; y1l=-.95d; y2=0; x2=x14;
+italic_a(0)(w-2u);
+filldraw z14l---z2l..z1r--z1l..z2r---z14r--cycle;
+savep;
+penlabels(1,2,10,11,12,13,14);
+endchar;
+else:
+beginchar("g", 9.5u#,x_height#,desc_depth#);
+.5[z10,z12]=.5[z11,z13];
+x10+.5stem=w-1.5u; y10=y12; x11=x13; y11=h-.5stem; x12-.5stem=2u;
+penpos20(stem,180); penpos21(stem,270); penpos23(stem,90);
+.5[z20,z22]=.5[z21,z23]; y23=-d+.5stem; x20+.5stem=w-u; y20=y22; x21=x23;
+y21=y13; y21-y23=x20-x22;
+x22-.5stem=u;
+penpos10(stem,0); penpos11(stem,90); penpos12(stem,180); penpos13(stem,-90);
+filldraw z10r{up}..{left}z11r..{down}z12r..{right}z13r..{up}z10r--z10l{down}..{left}z13l..{up}z12l..{right}z11l..{down}z10l--cycle;
+path p;
+p:=subpath(2.2,5.4) of (z20{up}..{left}z21..{down}z22..{right}z23..cycle);
+z1=point 0 of p; z2=point 4 of p;
+penpos1(stem,90+angle(direction 0 of p)+can); penpos2(stem,90+angle(direction 4 of p)-can);
+filldraw (z1l..{right}z23l..{up}z20l..{left}z21l..z2l--z2r..{right}z21r..{down}z20r..{left}z23r..z1r--cycle);
+vpos(3)(stem,can); penpos4(stem,90);
+z4=z11; x3r=w-u; y3r=h;
+filldraw z4r--z3r--z3l--z4l--cycle;
+serif(2l)(angle(z2r-z2l),0);
+savep;
+penlabels(1,2,3,4);
+endchar;
+fi
+
+iff known latin_gcircumflex:
+beginchar(latin_gcircumflex,9.5u#,asc_height#,desc_depth#);
+usep;
+z0=(.5w+.5u,h);
+circumflex(0);
+endchar;
+
+iff known latin_gbreve:
+beginchar(latin_gbreve,9.5u#,asc_height#,desc_depth#);
+usep;
+z0=(.5w+.5u,h);
+breve(0);
+endchar;
+
+iff known latin_gdotabove:
+beginchar(latin_gdotabove,9.5u#,.15[asc_height#,x_height#],desc_depth#);
+usep;
+z0=(.5w+.5u,h-.6stem);
+acc_dot(0);
+endchar;
+
+iff known latin_gcedilla:
+beginchar(latin_gcedilla,9.5u#,x_height#,1.75desc_depth#-.5stem#);
+usep;
+z0=(.5w-u,-desc_depth+.5stem);
+cedilla(0);
+endchar;
+
+beginchar("h", 9u#,cap_height#,0);
+hpos(1)(stem,can); hpos(2)(stem,can); vpos(3)(stem,can); penpos4(stem,0); hpos(5)(stem,can);
+x1l=u=x2l; y1=y5=0; y2r=h; y4=.7x_height; x5r=x4r=w-u;
+filldraw z1l--z1r--z2r--z2l--cycle;
+serif(2r)(angle(z2l-z2r),270);
+path p;
+penpos11(stem,90); penpos12(stem,0); penpos13(stem,90);
+.5[z10,z12]=.5[z11,z13]; y13=.5stem; x10+.5stem=(w+1u)-u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5stem=u;
+p:= z10{up}..{left}z11..{down}z12..{right}z13..cycle;
+z3l=z11l;
+filldraw z4r{up}..z11r{left}..{down}z12l--z12r{up}..{right}z11l..{down}z4l--z5l--z5r--cycle;
+penlabels(3);
+savep;
+endchar;
+
+iff known latin_hcircumflex:
+beginchar(latin_hcircumflex,9u#,Asc_height#,0);
+usep;
+z0=(.5w+.5u,h);
+circumflex(0);
+endchar;
+
+iff known latin_hbar:
+beginchar(latin_hbar,10u#,cap_height#,0);
+addto currentpicture also used_p shifted (u,0);;
+vpos(1)(.75stem,can); vpos(2)(.75stem,0);
+lft x1l=u; rt x2=.75w; y1=y2=.75h;
+filldraw z1r--z2r--z2l--z1l--cycle;
+penlabels(1,2);
+endchar;
+
+beginchar(16, 3u#,x_height#,0); %dotless i
+hpos(1)(stem,can); hpos(2)(stem,can);
+x1=.5w=x2; y1=0; y2r=h;
+filldraw z1l--z1r--z2r--z2l--cycle;
+serif(2r)(angle(z2l-z2r),270);
+savep;
+endchar;
+
+beginchar("i", 3u#,.15[asc_height#,x_height#],0);
+usep;
+z0=(.5w,h-.6stem);
+acc_dot(0);
+endchar;
+
+iff known latin_iacute:
+beginchar(latin_iacute, 3u#,asc_height#,0);
+usep;
+z0=(2.75u,h);
+acute(0);
+endchar;
+
+iff known latin_igrave:
+beginchar(latin_igrave, 3u#,asc_height#,0);
+usep;
+z0=(.45u,h);
+grave(0);
+endchar;
+
+iff known latin_icircumflex:
+beginchar(latin_icircumflex, 5u#,asc_height#,0);
+addto currentpicture also used_p shifted (u,0);
+z0=(.5w,h);
+circumflex(0);
+endchar;
+
+iff known latin_iumlaut:
+beginchar(latin_iumlaut, 5u#,.15[asc_height#,x_height#],0);
+addto currentpicture also used_p shifted (u,0);
+z0=(.5w,h-.6stem);
+umlaut(0);
+endchar;
+
+iff known latin_itilde:
+beginchar(latin_itilde, 8u#,asc_height#,0);
+addto currentpicture also used_p shifted (2.5u,0);
+z0=(.5w,h);
+acc_tilde(0);
+endchar;
+
+iff known latin_imacron:
+beginchar(latin_imacron, 5.5u#,asc_height#,0);
+addto currentpicture also used_p shifted (1.25u,0);
+z0=(.5w,h);
+macron(0);
+endchar;
+
+iff known latin_ibreve:
+beginchar(latin_ibreve, 6.5u#,asc_height#,0);
+addto currentpicture also used_p shifted (1.75u,0);
+z0=(.5w,h);
+breve(0);
+endchar;
+
+iff known latin_iogonek:
+beginchar(latin_iogonek, 3u#,.15[asc_height#,x_height#],desc_depth#);
+usep;
+z0=(.5w,h-.6stem); z1=(.5w+.5stem,0);
+acc_dot(0);
+ogonek(1);
+endchar;
+
+beginchar(17, 3u#,x_height#,4u#-.5stem#); %dotless j
+hpos(1)(stem,0); hpos(2)(stem,can); vpos(3)(stem,can);
+x1=.5w=x2; y1=-u; y2r=h;
+filldraw z1l--z1r--z2r--z2l--cycle;
+serif(2r)(angle(z2l-z2r),270);
+path p;
+penpos10(stem,0); penpos11(stem,90); penpos12(stem,0); penpos13(stem,90);
+.5[z10,z12]=.5[z11,z13]; y10=0; x10+.5stem=w-u; y10=y12;
+x11=x13; y11-y13=x10-x12; x12-.5stem=2u-(w+4u);
+p:= z10{down}..{left}z13..{up}z12..{right}z11..cycle;
+z3l=z13l;
+filldraw z3l{right}..{up}z1r--z2r--z2l--z1l{down}..{left}z3r--cycle;
+serif(3l)(angle(z3r-z3l),angle(direction 0 of (z3l..{right}z13r)));
+savep;
+penlabels(3,10,11,12,13);
+endchar;
+
+beginchar("j", 3u#,.15[asc_height#,x_height#],4u#-.5stem#);
+usep;
+z0=(.5w,h-.6stem);
+acc_dot(0);
+endchar;
+
+iff known latin_jcircumflex:
+beginchar(latin_jcircumflex, 5u#,asc_height#,4u#-.5stem#);
+addto currentpicture also used_p shifted (u,0);
+z0=(.5w,h);
+circumflex(0);
+endchar;
+
+beginchar("k", 8u#, cap_height#,0);
+hpos(1)(stem,can); hpos(2)(stem,can); hpos(4)(stem,-can); hpos(6)(stem,can);
+x1l=u=x2l; y1=0; y2r=h; x4r=x6r=w-u; y4r=x_height; y6=0; x5l=.25[x2r,x2l]; y5l=.6y4;
+penpos5(stem/cosd(angle(z4l-z5l)),0);
+filldraw z1l--z1r--z2r--z2l--cycle;
+filldraw z4l--z5l--z6l--z6r--z5r--z4r--cycle;
+serif(2r)(angle(z2l-z2r),270); serif(4r)(angle(z4l-z4r),180+ angle(z4r-z5r));
+penlabels(1,2,3,4,5,6);
+savep;
+endchar;
+
+iff known latin_kcedilla:
+beginchar(latin_kcedilla, 8u#,cap_height#,.75desc_depth#-.5stem#);
+usep;
+z0=(.5w-u,0);
+cedilla(0);
+endchar;
+
+iff known latin_kra:
+"Greenlandic kra";
+beginchar(latin_kra, 8u#, x_height#,0);
+hpos(1)(stem,can); hpos(2)(stem,can); hpos(4)(stem,-can); hpos(6)(stem,can);
+x1l=u=x2l; y1=0; y2r=h; x4r=x6r=w-u; y4r=x_height; y6=0; x5l=.25[x2r,x2l]; y5l=.6y4;
+penpos7(stem,-90); y7l=h; x7=.78w;
+x8l=w-u; z8r=z7r; y8l=y8r+stem+-+(x8l-x8r);
+penpos5(stem/cosd(angle(z4l-z5l)),0);
+filldraw z1l--z1r--z2r--z2l--cycle;
+filldraw z8l..z7l{left}..z5l--z6l--z6r--z5r..{right}z7r--cycle;
+serif(2r)(angle(z2l-z2r),270);
+penlabels(1,2,3,5,6,7,8);
+endchar;
+
+beginchar("l", 3u#,cap_height#,0);
+hpos(1)(stem,can); hpos(2)(stem,can);
+x1=.5w=x2; y1=0; y2r=h;
+filldraw z1l--z1r--z2r--z2l--cycle;
+serif(2r)(angle(z2l-z2r),270);
+savep;
+endchar;
+
+iff known latin_lacute:
+beginchar(latin_lacute, 3u#, Asc_height#,0);
+usep;
+z0=(2.75u,h);
+acute(0);
+endchar;
+
+iff known latin_lcaron:
+beginchar(latin_lcaron, 5u#, cap_height#,0);
+usep;
+z0=(w-1.5u,h);
+ac_caron(0);
+endchar;
+
+iff known latin_lstroke:
+beginchar(latin_lstroke, 5u#, cap_height#,0);
+addto currentpicture also (used_p shifted (u,0));
+vpos(1)(stem,can); penpos2(stem,90);
+y1=.65h; y2=.8h; x1l=.5u; x2=w-.5u;
+filldraw z1l--z2l--z2r--z1r--cycle;
+penlabels(1,2);
+endchar;
+
+iff known latin_lcedilla:
+beginchar(latin_lcedilla, 5u#, cap_height#,.75desc_depth#-.5stem#);
+addto currentpicture also used_p shifted (u,0);
+z0=(.3w,.5stem);
+cedilla(0);
+endchar;
+
+iff known latin_ldot:
+beginchar(latin_ldot, 5u#, cap_height#,0);
+usep;
+z0=(3.5u,.6h);
+dot(0);
+endchar;
+
+beginchar("m", 12u#,x_height#,0);
+hpos(1)(stem,can); hpos(2)(stem,can); vpos(3)(stem,can); penpos4(stem,0); hpos(5)(stem,can);
+penpos6(stem,0); hpos(7)(stem,can);
+x1l=u=x2l; y1=y5=y7=0; y2r=h; y4=y6=.7h; x5=x4; x6r=x7r=w-u; x6r-x4r=x4r-x1r;
+filldraw z1l--z1r--z2r--z2l--cycle;
+serif(2r)(angle(z2l-z2r),270);
+path p;
+penpos11(stem,90); penpos12(stem,0); penpos13(stem,90);
+.5[z10,z12]=.5[z11,z13]; y13=.5stem; x10+.5stem=(w-3u)-u; y10=y12; x11=x13; y11-y13-u=x10-x12; x12-.5stem=u;
+p:= z10{up}..{left}z11..{down}z12..{right}z13..cycle;
+z3l=z11l;
+filldraw z4r{up}..z11r{left}..{down}z12l--z12r{up}..{right}z11l..{down}z4l--z5l--z5r--cycle;
+filldraw z6r{up}..((z11r{left}..{down}z12l--z12r{up}..{right}z11l) shifted (z6r-z4r))..{down}z6l--z7l--z7r--cycle;
+penlabels(3);
+endchar;
+
+beginchar("n", 9u#,x_height#,0);
+hpos(1)(stem,can); hpos(2)(stem,can); vpos(3)(stem,can); penpos4(stem,0); hpos(5)(stem,can);
+x1l=u=x2l; y1=y5=0; y2r=h; y4=.7h; x5r=x4r=w-u;
+filldraw z1l--z1r--z2r--z2l--cycle;
+serif(2r)(angle(z2l-z2r),270);
+path p;
+penpos11(stem,90); penpos12(stem,0); penpos13(stem,90);
+.5[z10,z12]=.5[z11,z13]; y13=.5stem; x10+.5stem=(w+1u)-u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5stem=u;
+p:= z10{up}..{left}z11..{down}z12..{right}z13..cycle;
+z3l=z11l;
+filldraw z4r{up}..z11r{left}..{down}z12l--z12r{up}..{right}z11l..{down}z4l--z5l--z5r--cycle;
+penlabels(3);
+savep;
+endchar;
+
+iff known latin_ncaron:
+beginchar(latin_ncaron,9u#,asc_height#,0);
+usep;
+z0=(.5w+.5u,h);
+caron(0);
+endchar;
+
+iff known latin_nacute:
+beginchar(latin_nacute,9u#,asc_height#,0);
+usep;
+z0=(.5w+1.5u,h);
+acute(0);
+endchar;
+
+iff known latin_ntilde:
+beginchar(latin_ntilde,9u#,asc_height#,0);
+usep;
+z0=(.5w,h);
+acc_tilde(0);
+endchar;
+
+iff known latin_ncedilla:
+beginchar(latin_ncedilla,9u#,x_height#,.75desc_depth#-.5stem#);
+usep;
+z0=(.5w-.75u,0);
+cedilla(0);
+endchar;
+
+iff known latin_napostrophe:
+beginchar(latin_napostrophe,10.5u#,asc_height#,0);
+addto currentpicture also used_p shifted (1.5u,0);
+z0=(2u,h);
+quota(0);
+endchar;
+
+iff known latin_eng:
+beginchar(latin_eng, 9u#,x_height#,desc_depth#);
+hpos(1)(stem,can); hpos(2)(stem,can); vpos(3)(stem,can); penpos4(stem,0); hpos(5)(stem,can);
+x1l=u=x2l; y1=0; y5=-d; y2r=h; y4=.7h; x5r=x4r=w-u;
+filldraw z1l--z1r--z2r--z2l--cycle;
+serif(2r)(angle(z2l-z2r),270);
+path p;
+penpos11(stem,90); penpos12(stem,0); penpos13(stem,90);
+.5[z10,z12]=.5[z11,z13]; y13=.5stem; x10+.5stem=(w+1u)-u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5stem=u;
+p:= z10{up}..{left}z11..{down}z12..{right}z13..cycle;
+z3l=z11l;
+filldraw z4r{up}..z11r{left}..{down}z12l--z12r{up}..{right}z11l..{down}z4l--z5l--z5r--cycle;
+penlabels(1,2,3,4,5);
+endchar;
+
+beginchar("o", 10u#,x_height#,0);
+.5[z10,z12]=.5[z11,z13]; y13=.5stem; x10+.5stem=w-u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5stem=u;
+penpos10(stem,0); penpos11(stem,90); penpos12(stem,180); penpos13(stem,-90);
+filldraw z10r{up}..{left}z11r..{down}z12r..{right}z13r..{up}z10r--z10l{down}..{left}z13l..{up}z12l..{right}z11l..{down}z10l--cycle;
+savep;
+endchar;
+
+iff known latin_oacute:
+beginchar(latin_oacute,10u#,asc_height#,0);
+usep;
+z0=(6.5u,h);
+acute(0);
+endchar;
+
+iff known latin_oacute:
+beginchar(latin_ograve,10u#,asc_height#,0);
+usep;
+z0=(4u,h);
+grave(0);
+endchar;
+
+iff known latin_ocircumflex:
+beginchar(latin_ocircumflex,10u#,asc_height#,0);
+usep;
+z0=(.5w,h);
+circumflex(0);
+endchar;
+
+iff known latin_oumlaut:
+beginchar(latin_oumlaut,10u#,.15[asc_height#,x_height#],0);
+usep;
+z0=(.5w,h-.6stem);
+umlaut(0);
+endchar;
+
+iff known latin_otilde:
+beginchar(latin_otilde,10u#,asc_height#,0);
+usep;
+z0=(.5w+.5u,h);
+acc_tilde(0);
+endchar;
+
+iff known latin_omacron:
+beginchar(latin_omacron,10u#,asc_height#,0);
+usep;
+z0=(.5w,h);
+macron(0);
+endchar;
+
+iff known latin_obreve:
+beginchar(latin_obreve,10u#,asc_height#,0);
+usep;
+z0=(.5w+.25u,h);
+breve(0);
+endchar;
+
+iff known latin_ohungarumlaut:
+beginchar(latin_ohungarumlaut,10u#,asc_height#,0);
+usep;
+z0=(.5w+u,h);
+H_umlaut(0);
+endchar;
+
+beginchar("p", 10u#,x_height#,desc_depth#);
+hpos(1)(stem,can); hpos(2)(stem,can);
+x1l=u=x2l; y1=-d; y2r=h;
+filldraw z1l--z1r--z2r--z2l--cycle;
+serif(2r)(angle(z2l-z2r),270);
+.5[z10,z12]=.5[z11,z13]; y13=.5stem; x10+.5stem=w-u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5stem=u;
+penpos10(stem,0); penpos11(stem,90); penpos12(stem,180); penpos13(stem,-90);
+filldraw z10r{up}..{left}z11r..{down}z12r..{right}z13r..{up}z10r--z10l{down}..{left}z13l..{up}z12l..{right}z11l..{down}z10l--cycle;
+endchar;
+
+iff known latin_thorn:
+beginchar(latin_thorn, 10u#,cap_height#,desc_depth#);
+hpos(1)(stem,can); hpos(2)(stem,can);
+x1l=u=x2l; y1=-d; y2r=h;
+filldraw z1l--z1r--z2r--z2l--cycle;
+serif(2r)(angle(z2l-z2r),270);
+.5[z10,z12]=.5[z11,z13]; y13=.5stem; x10+.5stem=w-u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5stem=u;
+penpos10(stem,0); penpos11(stem,90); penpos12(stem,180); penpos13(stem,-90);
+filldraw z10r{up}..{left}z11r..{down}z12r..{right}z13r..{up}z10r--z10l{down}..{left}z13l..{up}z12l..{right}z11l..{down}z10l--cycle;
+endchar;
+
+beginchar("q", 10u#,x_height#,desc_depth#);
+hpos(1)(stem,can); hpos(2)(stem,-can);
+x1r=w-u=x2r; y1=-d; y2l=h;
+filldraw z1l--z1r--z2r--z2l--cycle;
+z2l'=z2l+.45stem*down;
+serif(2l')(angle(z2r-z2l),90);
+.5[z10,z12]=.5[z11,z13]; y13=.5stem; x10+.5stem=w-u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5stem=u;
+penpos10(stem,0); penpos11(stem,90); penpos12(stem,180); penpos13(stem,-90);
+filldraw z10r{up}..{left}z11r..{down}z12r..{right}z13r..{up}z10r--z10l{down}..{left}z13l..{up}z12l..{right}z11l..{down}z10l--cycle;
+endchar;
+
+beginchar("r", 6u#,x_height#,0);
+hpos(1)(stem,can); hpos(2)(stem,can); vpos(3)(stem,can);
+x1l=u=x2l; y1=0; y2r=h;
+filldraw z1l--z1r--z2r--z2l--cycle;
+path p;
+penpos11(stem,90); penpos12(stem,0); penpos13(stem,90);
+.5[z10,z12]=.5[z11,z13]; y13=.5stem; x10+.5stem=(w+4u)-u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5stem=u;
+p:= z10{up}..{left}z11..{down}z12..{right}z13..cycle;
+z3l=z11l;
+filldraw z3r..z11r{left}..{down}z12l--z12r{up}..{right}z11l--cycle;
+serif(2r)(angle(z2l-z2r),270); serif(3r)(angle(z3l-z3r),180+angle(direction 0 of (z3r..{left}z11r)));
+penlabels(3);
+savep;
+endchar;
+
+iff known latin_rcaron:
+beginchar(latin_rcaron,6u#,asc_height#,0);
+usep;
+z0=(.5w+.2u,h);
+caron(0);
+endchar;
+
+iff known latin_racute:
+beginchar(latin_racute,6u#,asc_height#,0);
+usep;
+z0=(.5w-.2u,h);
+acute(0);
+endchar;
+
+iff known latin_rcedilla:
+beginchar(latin_rcedilla,6u#,x_height#,.75desc_depth#-stem#);
+usep;
+z0=(1.5u,stem);
+cedilla(0);
+endchar;
+
+beginchar("s",8u#,x_height#,0);
+numeric theta;
+path p;
+penpos10(stem,0); penpos11(stem,90); penpos12(stem,0); penpos13(stem,90);
+.5[z10,z12]=.5[z11,z13]; y13=.5stem; x10+.5stem=(w); y10=y12; x11=x13; y11-y13=x10-x12; x12-.5stem=0;
+p:= z10{up}..{left}z11..{down}z12..{right}z13..cycle;
+z1=point .5 of p;
+z2=point 1.5 of p;
+z3=point 2.5 of p;
+z4=point 3.5 of p;
+theta:=280+angle(z4-z2);
+penpos1(stem,(170-angle(direction .5 of p))); penpos2(stem,theta);
+penpos3(stem,(-10-angle(direction 2.5 of p))); penpos4(stem,theta);
+penpos5(stem,theta); z5=(.5w,.5h);
+%z2l'=z2l+(.8stem,0) rotated (90+theta);
+z2l'=z2r+1.1stem*dir10;
+z4r'=z4r+(.8stem,0) rotated (theta-90);
+filldraw z1r..{left}z11r..z2r..z5r..z4r'..{left}z13r..z3r--z3l..{right}z13l..z4l..z5l..z2l'..{right}z11l..z1l--cycle;
+penlabels(1,2,3,4,5,11);
+labels(2l',4r');
+serif(1r)(angle(z1l-z1r),90-angle(direction 0 of (z1r..{left}z11r)));
+savep;
+endchar;
+
+iff known latin_scaron:
+beginchar(latin_scaron,8u#,asc_height#,0);
+usep;
+z0=(.5w+.3u,h);
+caron(0);
+endchar;
+
+iff known latin_sacute:
+beginchar(latin_sacute,8u#,asc_height#,0);
+usep;
+z0=(.5w+u,h);
+acute(0);
+endchar;
+
+iff known latin_scircumflex:
+beginchar(latin_scircumflex,8u#,asc_height#,0);
+usep;
+z0=(.5w+.25u,h);
+circumflex(0);
+endchar;
+
+iff known latin_scedilla:
+beginchar(latin_scedilla,8u#,x_height#,.75desc_depth#-.5stem#);
+usep;
+z0=(.5w-u,.5stem);
+cedilla(0);
+endchar;
+
+beginchar("t", 7u#,.5[x_height#,cap_height#],0);
+hpos(1)(stem,0); hpos(2)(stem,can); vpos(3)(stem,-can);
+vpos(4)(stem,can); penpos5(stem,90);
+y4=y5=x_height; x4l=u; x5=w-u;
+x1l=2u=x2l; y2r=h;
+path p;
+penpos11(stem,90); penpos12(stem,0); penpos13(stem,90);
+.5[z10,z12]=.5[z11,z13]; y13=.5stem; x10+.5stem=(w+4u)-u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5stem=2u;
+p:= z10{up}..{left}z11..{down}z12..{right}z13..cycle;
+z3l=z13l; y1=y12-2u;
+filldraw z1l--z1r--z2r--z2l--cycle;
+filldraw z12r+2u*down{down}..{right}z3r--z3l{left}..{up}z12l+2u*down--cycle;
+filldraw z4l--z5l--z5r--z4r--cycle;
+serif(3l)(angle(z3r-z3l),+angle(direction 0 of (z3r..{left}z13r)));
+penlabels(1,2,3,4,5);
+savep;
+endchar;
+
+iff known latin_tcaron:
+beginchar(latin_tcaron,7u#,.4[cap_height#,x_height#],0);
+usep;
+z0=(2u+2stem+.5u,h);
+ac_caron(0);
+endchar;
+
+iff known latin_tcommaaccent:
+beginchar(latin_tcommaaccent,7u#,.5[cap_height#,x_height#],2.5u#);
+usep;
+y1r=-.5u; y2l=-d; x1r-x2l=2u; .5[x1r,x2l]=.5w;
+hpos(2)(stem,-can); hpos(1)(cap_stem,-can);
+filldraw (z1l--z1r--z2r--z2l--cycle);
+endchar;
+
+iff known latin_tbar:
+beginchar(latin_tbar,7u#,.4[cap_height#,x_height#],0);
+usep;
+vpos(1)(.75stem,can); vpos(2)(.75stem,0);
+lft x1l=u; rt x2=w-2u; y1=y2=.7x_height;
+filldraw z1r--z2r--z2l--z1l--cycle;
+penlabels(1,2);
+endchar;
+
+beginchar("u", 9u#,x_height#,0);
+hpos(1)(stem,can); hpos(2)(stem,-can); vpos(3)(stem,can); penpos4(stem,0); hpos(5)(stem,can);
+x1r=w-u=x2r; y1=0; y2l=y5r=h; y4=.3h; x5l=u; x4r=w-u;
+filldraw z1l--z1r--z2r--z2l--cycle;
+serif(2r)(angle(z2l-z2r),270);
+path p;
+penpos10(stem,180);penpos11(stem,90); penpos12(stem,0); penpos13(stem,90);
+.5[z10,z12]=.5[z11,z13]; y13=.5stem; x10+.5stem=(w+0u)-u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5stem=u;
+p:= z10{up}..{left}z11..{down}z12..{right}z13..cycle;
+filldraw z10l{down}..z13l{left}..{up}z12l--z5l--z5r--z12r{down}..{right}z13r..{up}z10r--cycle;
+serif(5r)(angle(z5l-z5r),270);
+penlabels(1,2,3,4,5,6);
+savep;
+endchar;
+
+iff known latin_uacute:
+beginchar(latin_uacute,9u#,asc_height#,0);
+usep;
+z0=(5u,h);
+acute(0);
+endchar;
+
+iff known latin_ugrave:
+beginchar(latin_ugrave,9u#,asc_height#,0);
+usep;
+z0=(3.5u,h);
+grave(0);
+endchar;
+
+iff known latin_ucircumflex:
+beginchar(latin_ucircumflex,9u#,asc_height#,0);
+usep;
+z0=(.5w,h);
+circumflex(0);
+endchar;
+
+iff known latin_uring:
+beginchar(latin_uring,9u#, asc_height#,0);
+usep;
+z0=(.5w,h);
+ring(0);
+endchar;
+
+iff known latin_utilde:
+beginchar(latin_utilde,9u#, asc_height#,0);
+usep;
+z0=(.5w,h);
+acc_tilde(0);
+endchar;
+
+iff known latin_uumlaut:
+beginchar(latin_uumlaut,9u#, .15[asc_height#,x_height#],0);
+usep;
+z0=(.5w,h-.6stem);
+umlaut(0);
+endchar;
+
+iff known latin_umacron:
+beginchar(latin_umacron,9u#, asc_height#,0);
+usep;
+z0=(.5w,h);
+macron(0);
+endchar;
+
+iff known latin_ubreve:
+beginchar(latin_ubreve,9u#, asc_height#,0);
+usep;
+z0=(.5w,h);
+breve(0);
+endchar;
+
+iff known latin_uhungarumlaut:
+beginchar(latin_uhungarumlaut,9u#, asc_height#,0);
+usep;
+z0=(.5w+.75u,h);
+H_umlaut(0);
+endchar;
+
+iff known latin_uogonek:
+beginchar(latin_uogonek,9u#, x_height#,desc_depth#);
+usep;
+z0=(.5w+.75u,0);
+ogonek(0);
+endchar;
+
+beginchar("v", 10u#,x_height#,0);
+numeric theta;
+hpos(1)(stem,-can); hpos(2)(stem,can);
+x1r=w-u; y1l=h=y2r; x2l=u; z3l=(.5w,0);
+theta:=90+angle(z1r-z3l);
+penpos3(stem/sind(theta),90);
+filldraw z1l--z3r--z2r--z2l--z3l--z1r--cycle;
+penlabels(1,2,3,4);
+serif(1r)(angle(z1l-z1r),180+angle(z1r-z3r));serif(2r)(angle(z2l-z2r),180+angle(z2r-z3r));
+endchar;
+
+beginchar("w", 14u#,x_height#,0);
+numeric theta;
+hpos(1)(stem,-can); hpos(2)(stem,can);
+x1r=w-u; y1l=h=y2r; x2l=u; z3r=(.5w,h); y4l=y5l=0; .5[x4l,x5l]=x3; x5l=.75w-u;
+theta:=90+angle(z1r-z5l);
+penpos4(stem/sind(theta),90); penpos5(stem/sind(theta),90);
+penpos3(stem/cosd(angle(z5r-z3r)),90);
+z4'=whatever[z2r,z4r]=whatever[z3r,z4l+z3r-z3l];
+z5'=whatever[z1r,z5r]=whatever[z3r,z5l+z3r-z3l];
+filldraw z1l--z1r--z5l--z3l--z4l--z2l--z2r--z4'--z3r--z5'--cycle;
+penlabels(1,2,3,4,5);
+serif(1r)(angle(z1l-z1r),180+angle(z1r-z3r));serif(2r)(angle(z2l-z2r),180+angle(z2r-z3r));
+savep;
+endchar;
+
+iff known latin_wcircumflex:
+beginchar(latin_wcircumflex,14u#, asc_height#,0);
+usep;
+z0=(.5w,h);
+circumflex(0);
+endchar;
+
+beginchar("x", 8.5u#,x_height#,0);
+numeric theta;
+hpos(1)(stem,-can); hpos(2)(stem,can);
+hpos(3)(stem,-can); hpos(4)(stem,can);
+x1r=w-u=x4r; y1l=h=y2r; x2l=x3l=u; y3r=y4l=0;
+filldraw z1l--z3l--z3r--z1r--cycle;
+filldraw z2l--z4l--z4r--z2r--cycle;
+penlabels(1,2,3,4);
+serif(1r)(angle(z1l-z1r),180+angle(z1r-z3r));serif(2r)(angle(z2l-z2r),180+angle(z2r-z4r));
+endchar;
+
+beginchar("y", 10u#,x_height#,desc_depth#);
+hpos(1)(stem,-can); hpos(2)(stem,-can); hpos(3)(stem,can);
+x1r=w-u; y1l=h=y3r; x3l=u; y2r=-d; x2l=2u; z4l=whatever[z1l,z2l]; y4l=c_height;
+z4r=z4l+(stem/sind(angle(z3l-z4l)),0) rotated (angle(z1l-z4l)-10);
+filldraw z1l--z1r--z2r--z2l--cycle;
+filldraw z3l--z3r--z4r--z4l--cycle;
+penlabels(1,2,3,4);
+serif(3r)(angle(z3l-z3r),180+angle(z3r-z4r));serif(1r)(angle(z1l-z1r),180+angle(z1r-z2r));
+savep;
+endchar;
+
+iff known latin_yacute:
+beginchar(latin_yacute, 10u#,asc_height#,desc_depth#);
+usep;
+z0=(.5w+.5u,h);
+acute(0);
+endchar;
+
+iff known latin_yumlaut:
+beginchar(latin_yumlaut,10u#, .15[asc_height#,x_height#],desc_depth#);
+usep;
+z0=(.5w,h-.6stem);
+umlaut(0);
+endchar;
+
+iff known latin_ycircumflex:
+beginchar(latin_ycircumflex, 10u#,asc_height#,desc_depth#);
+usep;
+z0=(.5w,h);
+circumflex(0);
+endchar;
+
+beginchar("z", 8u#, x_height#, 0);
+vpos(1)(stem,can); vpos(4)(stem,0);
+x1l=u=x3; x2=w-u=x4r; y1r=h=y2; y4l=y3=0;
+y3'=stem; y2'=h-stem; x3'-x3=x2-x2'; y2''=h; x2''=x2-1.2stem; z2'=whatever[z3,z2''];
+filldraw z1r--z2--z3'--z4r--z4l--z3--z2'--z1l--cycle;
+serif(1r)(angle(z1l-z1r),0);
+penlabels(1,4); labels(2,2',3,3');
+savep;
+endchar;
+
+iff known latin_zcaron:
+beginchar(latin_zcaron,8u#,asc_height#,0);
+usep;
+z0=(.5w,h);
+caron(0);
+endchar;
+
+iff known latin_zacute:
+beginchar(latin_zacute,8u#,asc_height#,0);
+usep;
+z0=(.5w+u,h);
+acute(0);
+endchar;
+
+iff known latin_zdotabove:
+beginchar(latin_zdotabove,8u#,.15[asc_height#,x_height#],0);
+usep;
+z0=(.5w,h-.6stem);
+acc_dot(0);
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Uppercase
+beginchar("A", 14u#,cap_height#,0);
+numeric theta;
+hpos(1)(cap_stem,can); hpos(2)(cap_stem,-can);
+x1r=w-u; y1l=0=y2r; x2l=u; z3r=(.5w,h);
+theta:=90+angle(z1r-z3r);
+penpos3(cap_stem/sind(theta),90);
+filldraw z1r--z3r--z2l--z2r--z3l--z1l--cycle;
+y4r-y4l=cap_stem; y5r=y4r; y5l=y4l; .5[y4r,y4l]=.6x_height;
+z4r=whatever[z1,z3]; z4l=whatever[z1,z3]; z5l=whatever[z3,z2]; z5r=whatever[z3,z2];
+filldraw z4r--z5r--z5l--z4l--cycle;
+penlabels(1,2,3,4,5);
+savep;
+endchar;
+
+iff known latin_Aacute:
+beginchar(latin_Aacute,14u#,Asc_height#,0);
+usep;
+z0=(.5w,h);
+acute(0).low;
+endchar;
+
+iff known latin_Aumlaut:
+beginchar(latin_Aumlaut,14u#,.3[Asc_height#,cap_height#],0);
+usep;
+z0=(.5w,h-.6stem);
+umlaut(0);
+endchar;
+
+iff known latin_Agrave:
+beginchar(latin_Agrave,14u#,Asc_height#,0);
+usep;
+z0=(.5w,h);
+grave(0).low;
+endchar;
+
+iff known latin_Acircumflex:
+beginchar(latin_Acircumflex,14u#,Asc_height#,0);
+usep;
+z0=(.5w,h);
+circumflex(0).low;
+endchar;
+
+iff known latin_Atilde:
+beginchar(latin_Atilde,14u#,Asc_height#,0);
+usep;
+z0=(.5w+.5u,h);
+acc_tilde(0).low;
+endchar;
+
+iff known latin_Amacron:
+beginchar(latin_Amacron,14u#,Asc_height#,0);
+usep;
+z0=(.5w,h);
+macron(0);
+endchar;
+
+iff known latin_Abreve:
+beginchar(latin_Abreve,14u#,Asc_height#,0);
+usep;
+z0=(.5w,h);
+breve(0);
+endchar;
+
+iff known latin_Aring:
+beginchar(latin_Aring,14u#,Asc_height#-1.25u#-.75cap_stem#,0);
+usep;
+z0=(.5w,h);
+ring(0).low;
+endchar;
+
+iff known latin_Aogonek:
+beginchar(latin_Aogonek,14u#,cap_height#,desc_depth#);
+numeric theta;
+hpos(1)(cap_stem,can); hpos(2)(cap_stem,-can);
+x1r=w-u; y1l=0=y2r; x2l=u; z3r=(.5w,h);
+theta:=90+angle(z1r-z3r);
+penpos3(cap_stem/sind(theta),90);
+filldraw z1r--z3r--z2l--z2r--z3l--z1l--cycle;
+y4r-y4l=cap_stem; y5r=y4r; y5l=y4l; .5[y4r,y4l]=.6x_height;
+z4r=whatever[z1,z3]; z4l=whatever[z1,z3]; z5l=whatever[z3,z2]; z5r=whatever[z3,z2];
+filldraw z4r--z5r--z5l--z4l--cycle;
+penlabels(1,2,3,4,5);
+.5[z20,z22]=.5[z21,z23]; y23=-d+.5stem; x20+.5stem=(w+u)-u; y20=y22; x21=x23; y21-y23=x20-x22; y21=-.5stem;
+penpos20(stem,0); penpos21(stem,90); penpos22(stem,180); penpos23(stem,-90);
+p:= z20{up}..{left}z21..{down}z22..{right}z23..cycle;
+vpos(24)(stem,-can); z24=point 3.5 of p; penpos25(stem,135);
+filldraw z22l{down}..z23l..{direction 3.5 of p}z24r--z24l{dir (angle(direction 3.5 of p)-180)}..z23r..{up}z22r..{z1l-z22r}z1l--z1r{down}..z21l..cycle;
+penlabels(20,21,22,23,24,25);
+endchar;
+
+beginchar("B", 12u#,cap_height#,0);
+hpos(1)(cap_stem,0); hpos(2)(cap_stem,0);
+x1l=u=x2l; y1=0; y2r=h;
+filldraw z1l--z1r--z2r--z2l--cycle;
+.5[z10,z12]=.5[z11,z13]; y11=h-.5cap_stem; x10+.5cap_stem=w-u; y10=y12; x11=x13; y11-y13=x10-x12; y13=.5h;%x12-.5cap_stem=2u;
+penpos10(cap_stem,0); penpos11(cap_stem,90); penpos12(cap_stem,180); penpos13(cap_stem,-90);
+penpos2'(cap_stem,90); penpos2''(cap_stem,270);
+.5[y2'',y2']=y10; x2'=x2''=x2r; y2'r=y2r;
+filldraw z2'r---z11r..{down}z10r..{left}z13r---z2''r--z2''l---z13l{right}..{up}z10l..{left}z11l---z2'l--cycle;
+filldraw (z2'r---z11r..{down}z10r..{left}z13r---z2''r--z2''l---z13l{right}..{up}z10l..{left}z11l---z2'l--cycle) shifted (0,-.5h+.5cap_stem);
+endchar;
+
+beginchar("C", 12.5u#,cap_height#,0);
+path p;
+penpos11(cap_stem,90); penpos12(cap_stem,0); penpos13(cap_stem,90);
+.5[z10,z12]=.5[z11,z13]; y13=.5cap_stem; x10+.5cap_stem=(w+4u)-u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5cap_stem=u;
+p:= z10{up}..{left}z11..{down}z12..{right}z13..cycle;
+z1=point .68 of p;
+z2=point 3.28 of p;
+vpos(1)(cap_stem,-.5can); vpos(2)(cap_stem,.5can);
+filldraw z1r..{left}z11r..{down}z12l..{right}z13l..z2l--z2r..z13r{left}..z12r{up}..z11l{right}..z1l--cycle;
+penlabels(1,2);
+savep;
+endchar;
+
+iff known latin_Ccaron:
+beginchar(latin_Ccaron,12.5u#,Asc_height#,0);
+usep;
+z0=(.65w,h);
+caron(0).low;
+endchar;
+
+iff known latin_Cacute:
+beginchar(latin_Cacute,12.5u#,Asc_height#,0);
+usep;
+z0=(.75w,h);
+acute(0).low;
+endchar;
+
+iff known latin_Ccircumflex:
+beginchar(latin_Ccircumflex,12.5u#,Asc_height#,0);
+usep;
+z0=(.5w+2u,h);
+circumflex(0).low;
+endchar;
+
+iff known latin_Cdotabove:
+beginchar(latin_Cdotabove,12.5u#,.3[Asc_height#,cap_height#],0);
+usep;
+z0=(.5w+2u,h-.6stem);
+acc_dot(0);
+endchar;
+
+iff known latin_Ccedilla:
+beginchar(latin_Ccedilla,12.5u#,Asc_height#,.75desc_depth#-.5stem#);
+usep;
+z0=(.5w,.5stem);
+cedilla(0);
+endchar;
+
+iff known sign_euro:
+beginchar(sign_euro,11u#,cap_height#,0);
+path p;
+penpos11(cap_stem,90); penpos12(cap_stem,0); penpos13(cap_stem,90);
+.5[z10,z12]=.5[z11,z13]; y13=.5cap_stem; x10+.5cap_stem=(w+3.5u)-u; y10=y12; x11=x13; y11=h-.5cap_stem; x12-.5cap_stem=u;
+p:= z10{up}..{left}z11..{down}z12..{right}z13..cycle;
+z1=point .68 of p;
+z2=point 3.28 of p;
+vpos(1)(cap_stem,-.5can); vpos(2)(cap_stem,.5can);
+filldraw z1r..{left}z11r..{down}z12l..{right}z13l..z2l--z2r..z13r{left}..z12r{up}..z11l{right}..z1l--cycle;
+penpos3(.75stem,90); vpos(4)(.75stem,can); y3=.55h; y4=.6h;
+x4r=.75w; x3l=x12;
+filldraw z3r--z4r--z4l--z3l--cycle;
+filldraw (z3r--z4r--z4l--z3l--cycle) shifted (0,-2stem);
+penlabels(1,2,3,4);
+endchar;
+
+beginchar("D", 13u#,cap_height#,0);
+hpos(1)(cap_stem,0); hpos(2)(cap_stem,0);
+x1l=u=x2l; y1=0; y2r=h;
+filldraw z1l--z1r--z2r--z2l--cycle;
+penpos10(cap_stem,0); penpos11(cap_stem,90); penpos12(cap_stem,180); penpos13(cap_stem,-90);
+.5[z10,z12]=.5[z11,z13]; y11=h-.5cap_stem; x10+.5cap_stem=w-u; y10=y12; x11=x13; y13=.5cap_stem; x12-.5cap_stem=0;
+penpos2'(cap_stem,90); penpos2''(cap_stem,270);
+.5[y2'',y2']=y10; x2'=x2''=x2r; y2'r=y2r;
+filldraw z2'r---z11r..{down}z10r..{left}z13r---z2''r--z2''l---z13l{right}..{up}z10l..{left}z11l---z2'l--cycle;
+savep;
+endchar;
+
+iff known latin_Dcaron:
+beginchar(latin_Dcaron,13u#,Asc_height#,0);
+usep;
+z0=(.35w,h);
+caron(0).low;
+endchar;
+
+iff known latin_Dstroke:
+beginchar(latin_Dstroke,14u#,cap_height#,0);
+addto currentpicture also used_p shifted (u,0);
+z0=(3u,.55h);
+macron(0);
+endchar;
+
+iff known latin_Eth:
+beginchar(latin_Eth,14u#,cap_height#,0);
+addto currentpicture also used_p shifted (u,0);
+z0=(3u,.55h);
+macron(0);
+endchar;
+
+beginchar("E", 11u#,cap_height#,0);
+hpos(1)(cap_stem,0); hpos(2)(cap_stem,0); vpos(3)(cap_stem,-can); penpos4(cap_stem,90); vpos(5)(cap_stem,0); vpos(6)(cap_stem,can);
+x1l=u=x2l; y1=y6l=0; y2r=h; y3r=h; x3l=x6r=w-u; x2r=x4; y4=y5=.5h; x5r=.75[x2r,x3r];
+filldraw z1l--z2l--z3r--z3l--(x2r,y3l)--z4r--z5r--z5l--z4l--(x1r,y6r)--z6r--z6l--cycle;
+penlabels(1,2,3,4,5,6);
+savep;
+endchar;
+
+iff known latin_Eacute:
+beginchar(latin_Eacute,11u#,Asc_height#,0);
+usep;
+z0=(.5w,h);
+acute(0).low;
+endchar;
+
+iff known latin_Ecaron:
+beginchar(latin_Ecaron,11u#,Asc_height#,0);
+usep;
+z0=(.5w,h);
+caron(0).low;
+endchar;
+
+iff known latin_Emacron:
+beginchar(latin_Emacron,11u#,Asc_height#,0);
+usep;
+z0=(.5w,h);
+macron(0);
+endchar;
+
+iff known latin_Edotabove:
+beginchar(latin_Edotabove,11u#,.3[Asc_height#,cap_height#],0);
+usep;
+z0=(.5w+.3u,h-.6stem);
+acc_dot(0);
+endchar;
+
+iff known latin_Ebreve:
+beginchar(latin_Ebreve,11u#,Asc_height#,0);
+usep;
+z0=(.5w,h);
+breve(0);
+endchar;
+
+iff known latin_Eogonek:
+beginchar(latin_Eogonek,11u#,cap_height#,desc_depth#);
+usep;
+.5[z20,z22]=.5[z21,z23]; y23=-d+.5stem; x20+.5stem=(w+u)-u; y20=y22; x21=x23; y21-y23=x20-x22; y21=-.5stem;
+penpos20(stem,0); penpos21(stem,90); penpos22(stem,180); penpos23(stem,-90);
+p:= z20{up}..{left}z21..{down}z22..{right}z23..cycle;
+vpos(24)(stem,-can); z24=point 3.5 of p; penpos25(stem,135);
+filldraw z22l{down}..z23l..{direction 3.5 of p}z24r--z24l{dir (angle(direction 3.5 of p)-180)}..z23r..{up}z22r..z21r+stem*up--z21l+stem*up..cycle;
+penlabels(20,21,22,23,24,25);
+endchar;
+
+iff known latin_Egrave:
+beginchar(latin_Egrave,11u#,Asc_height#,0);
+usep;
+z0=(.45w,h);
+grave(0).low;
+endchar;
+
+iff known latin_Ecircumflex:
+beginchar(latin_Ecircumflex,11u#,Asc_height#,0);
+usep;
+z0=(.5w,h);
+circumflex(0).low;
+endchar;
+
+iff known latin_Eumlaut:
+beginchar(latin_Eumlaut,11u#,.3[Asc_height#,cap_height#],0);
+usep;
+z0=(.5w,h-.6stem);
+umlaut(0);
+endchar;
+
+beginchar("F", 11u#,cap_height#,0);
+hpos(1)(cap_stem,can); hpos(2)(cap_stem,0); vpos(3)(cap_stem,-can); penpos4(cap_stem,90); vpos(5)(cap_stem,0);
+x1l=u=x2l; y1=0; y2r=h; y3r=h; x3l=w-u; x2r=x4; y4=y5=.5h; x5r=.75[x2r,x3r];
+filldraw z1r--z1l--z2l--z3r--z3l--(x2r,y3l)--z4r--z5r--z5l--z4l--cycle;
+penlabels(1,2,3,4,5);
+endchar;
+
+beginchar("G", 14.5u#,cap_height#,0);
+path p;
+penpos11(cap_stem,90); penpos12(cap_stem,0); penpos13(cap_stem,90);
+.5[z10,z12]=.5[z11,z13]; y13=.5cap_stem; x10+.5cap_stem=(w+2u)-u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5cap_stem=u;
+p:= z10{up}..{left}z11..{down}z12..{right}z13..cycle;
+z1'=point .5 of p;
+z2'=point 3.4 of p;
+penpos1(cap_stem,170-(angle(direction .5 of p))); penpos2(cap_stem,90+(angle(direction 3.5 of p)));
+penpos3(cap_stem,0); penpos4(cap_stem,0); vpos(5)(cap_stem,can);
+x1r=w-u; y1=y1';
+z3l=z2r; x4=x3; y4=.8x_height=y5r; y4l:=y5l; x5=.55w; x3r=w-u; y2=y2';
+filldraw z1r..{left}z11r..{down}z12l..{right}z13l..{direction 3.4 of p}z2l..{up}z3r--z4r--z5r--z5l--z4l--z3l--z2r..z13r{left}..z12r{up}..z11l{right}..z1l--cycle;
+penlabels(1,2,3,4,5);
+savep;
+endchar;
+
+iff known latin_Gcircumflex:
+beginchar(latin_Gcircumflex,14.5u#,Asc_height#,0);
+usep;
+z0=(.5w+1.3u,h);
+circumflex(0).low;
+endchar;
+
+iff known latin_Gbreve:
+beginchar(latin_Gbreve,14.5u#,Asc_height#,0);
+usep;
+z0=(.5w+1.3u,h);
+breve(0);
+endchar;
+
+iff known latin_Gdotabove:
+beginchar(latin_Gdotabove,14.5u#,.3[Asc_height#,cap_height#],0);
+usep;
+z0=(.5w+u,h-.6stem);
+acc_dot(0);
+endchar;
+
+iff known latin_Gcedilla:
+beginchar(latin_Gcedilla,14.5u#,cap_height#,.75desc_depth#-.5stem#);
+usep;
+z0=(.5w-.5u,.5stem);
+cedilla(0);
+endchar;
+
+beginchar("H", 11.5u#,cap_height#,0);
+hpos(1)(cap_stem,can); hpos(2)(cap_stem,can); hpos(3)(cap_stem,can); hpos(4)(cap_stem,can);
+penpos5(cap_stem,90); penpos6(cap_stem,90);
+x1l=u=x2l; y1=y3=0; y2r=y4r=h; x3r=x4r=w-u;
+y5=y6=.5h; x5=x1r; x6=x3l;
+filldraw z1l--z2l--z2r--z1r--cycle;
+filldraw z3l--z4l--z4r--z3r--cycle;
+filldraw z5l--z6l--z6r--z5r--cycle;
+penlabels(1,2,3,4);
+savep;
+endchar;
+
+iff known latin_Hcircumflex:
+beginchar(latin_Hcircumflex,11.5u#,Asc_height#,0);
+usep;
+z0=(.5w,h);
+circumflex(0).low;
+endchar;
+
+iff known latin_Hbar:
+beginchar(latin_Hbar,13.5u#,cap_height#,0);
+addto currentpicture also used_p shifted (u,0);;
+vpos(1)(.75stem,can); vpos(2)(.75stem,0);
+lft x1l=u; rt x2=w-u; y1=y2=.75h;
+filldraw z1r--z2r--z2l--z1l--cycle;
+penlabels(1,2);
+endchar;
+
+beginchar("I", 3.5u#,cap_height#,0);
+hpos(1)(cap_stem,can); hpos(2)(cap_stem,can);
+x1=.5w=x2; y1=0; y2r=h;
+filldraw z1l--z1r--z2r--z2l--cycle;
+savep;
+endchar;
+
+iff known latin_Iacute:
+beginchar(latin_Iacute,3.5u#,Asc_height#,0);
+usep;
+z0=(.5w,h);
+acute(0).low;
+endchar;
+
+iff known latin_Igrave:
+beginchar(latin_Igrave,3.5u#,Asc_height#,0);
+usep;
+z0=(.5w,h);
+grave(0).low;
+endchar;
+
+iff known latin_Icircumflex:
+beginchar(latin_Icircumflex,3.5u#,Asc_height#,0);
+usep;
+z0=(.5w,h);
+circumflex(0).low;
+endchar;
+
+iff known latin_Iumlaut:
+beginchar(latin_Iumlaut,4u#,.3[Asc_height#,cap_height#],0);
+addto currentpicture also used_p shifted (.25u,0);
+z0=(.5w,h-.6stem);
+umlaut(0);
+endchar;
+
+iff known latin_Itilde:
+beginchar(latin_Itilde,3.5u#,Asc_height#,0);
+usep;
+z0=(.5w,h);
+acc_tilde(0).low;
+endchar;
+
+iff known latin_Imacron:
+beginchar(latin_Imacron,3.5u#,Asc_height#,0);
+usep;
+z0=(.5w,h);
+macron(0);
+endchar;
+
+iff known latin_Ibreve:
+beginchar(latin_Ibreve,3.5u#,Asc_height#,0);
+usep;
+z0=(.5w,h);
+breve(0);
+endchar;
+
+iff known latin_Idot:
+beginchar(latin_Idot,3.5u#,.3[Asc_height#,cap_height#],0);
+usep;
+z0=(.5w,h-.6stem);
+acc_dot(0);
+endchar;
+
+iff known latin_Iogonek:
+beginchar(latin_Iogonek,3.5u#,cap_height#,desc_depth#);
+usep;
+z0=(.5w+.5cap_stem,0);
+ogonek(0);
+endchar;
+
+beginchar("J", 10u#,cap_height#,0);
+hpos(1)(cap_stem,0); hpos(2)(cap_stem,can); vpos(3)(cap_stem,can);
+x1r=x2r=w-u; y1=.5x_height; y2r=h;
+filldraw z1l--z1r--z2r--z2l--cycle;
+path p;
+penpos10(cap_stem,0); penpos11(cap_stem,90); penpos12(cap_stem,0); penpos13(cap_stem,90);
+.5[z10,z12]=.5[z11,z13]; y13=.5cap_stem; x10+.5cap_stem=w-u; y10=y12;
+x11=x13; y11-y13=x10-x12; x13=.5w; x3=x12l; y3=.25x_height;
+p:= z10{down}..{left}z13..{up}z12..{right}z11..cycle;
+filldraw z3l..z13l{right}..{up}z1r--z2r--z2l--z1l{down}..{left}z13r..z3r--cycle;
+penlabels(1,2,3,10,11,12,13);
+savep;
+endchar;
+
+iff known latin_Jcircumflex:
+beginchar(latin_Jcircumflex, 10u#,Asc_height#,0);
+usep;
+z0=(w-1.5u,h);
+circumflex(0).low;
+endchar;
+
+beginchar("K", 11u#, cap_height#,0);
+hpos(1)(cap_stem,can); hpos(2)(cap_stem,can); hpos(4)(cap_stem,-can); hpos(6)(cap_stem,can);
+x1l=u=x2l; y1=0; y2r=h; x4r=x6r=w-u; y4l=h; y6=0; x5l=.25[x2r,x2l]; y5l=.5y4;
+penpos5(.9cap_stem/cosd(angle(z4l-z5l)),0);
+filldraw z1l--z1r--z2r--z2l--cycle;
+filldraw z4l--z5l--z6l--z6r--z5r--z4r--cycle;
+penlabels(1,2,3,4,5,6);
+savep;
+endchar;
+
+iff known latin_Kcedilla:
+beginchar(latin_Kcedilla, 11u#,cap_height#,.75desc_depth#-.5stem#);
+usep;
+z0=(.5w-u,.5stem);
+cedilla(0);
+endchar;
+
+beginchar("L", 10u#,cap_height#,0);
+hpos(1)(cap_stem,0); hpos(2)(cap_stem,can); vpos(3)(cap_stem,can);
+x1l=u=x2l; y1=0; y2r=h; y3l=0; x3r=w-u;
+filldraw z3l--z1l--z2l--z2r--(x2r,y3r)--z3r--cycle;
+penlabels(1,2,3);
+savep;
+endchar;
+
+iff known latin_Lacute:
+beginchar(latin_Lacute, 10u#,Asc_height#,0);
+usep;
+z0=(2u+stem,h);
+acute(0).low;
+endchar;
+
+iff known latin_Lcaron:
+beginchar(latin_Lcaron, 10u#,cap_height#,0);
+usep;
+z0=(stem+3u,h);
+ac_caron(0);
+endchar;
+
+iff known latin_Lstroke:
+beginchar(latin_Lstroke, 11u#,cap_height#,0);
+addto currentpicture also used_p shifted (u,0);
+vpos(1)(stem,can); penpos2(stem,90);
+y1=.65h; y2=.8h; x1l=.5u; x2=w-6u;
+filldraw z1l--z2l--z2r--z1r--cycle;
+endchar;
+
+iff known latin_Lcedilla:
+beginchar(latin_Lcedilla, 10u#,cap_height#,.75desc_depth#-.5stem#);
+usep;
+z0=(.5w-u,.25stem);
+cedilla(0);
+endchar;
+
+iff known latin_Ldot:
+beginchar(latin_Ldot, 10u#,cap_height#,0);
+usep;
+z0=(4u,.6h);
+dot(0);
+endchar;
+
+beginchar("M", 18u#,cap_height#,0);
+numeric theta;
+hpos(1)(cap_stem,can); hpos(2)(cap_stem,-can);
+x1r=w-u; y1l=0=y2r; x2l=u; z3l=(.5w,0); y4r=y5r=h; .5[x4l,x5l]=x3; x5r=.85w-u;
+theta:=angle(z1r-z5r);
+penpos4(cap_stem/cosd(theta),90); penpos5(cap_stem/cosd(theta),90);
+penpos3(cap_stem/cosd(angle(z5-z3l)),90);
+z4'=z3l+whatever*(z4r-z3r)=z2r+whatever*(z4r-z2l);
+z5'=z3l+whatever*(z5r-z3r)=z1l+whatever*(z5r-z1r);
+filldraw z1r--z5r--z3r--z4r--z2l--z2r--z4'--z3l--z5'--z1l--cycle;
+penlabels(1,2,3,4,5); labels(4',5');
+endchar;
+
+beginchar("N", 12u#,cap_height#,0);
+numeric theta;
+hpos(1)(cap_stem,can); hpos(2)(cap_stem,0); hpos(3)(cap_stem,0); hpos(4)(cap_stem,can);
+x1l=w-x4r=u; x2=x1; x3=x4; y1l=y3=0; y2=y4r=h;
+theta:=(angle(z2l-z3r));
+z3''=z3r+((cap_stem,0) rotated (theta-90)); z3'=whatever[z3'',(z2l)]=whatever[z4l,z3l];
+z2''=z2l+((cap_stem,0) rotated (theta+90)); z2'=whatever[z2'',(z3r)]=whatever[z1r,z2r];
+filldraw z1l--z1r--z2'--z3r--z4r--z4l--z3'--z2l--cycle;
+penlabels(1,2,3,4); labels(2',2'',3',3'');
+savep;
+endchar;
+
+iff known latin_Ncaron:
+beginchar(latin_Ncaron,12u#,Asc_height#,0);
+usep;
+z0=(.5w,h);
+caron(0);
+endchar;
+
+iff known latin_Nacute:
+beginchar(latin_Nacute,12u#,Asc_height#,0);
+usep;
+z0=(.5w,h);
+acute(0).low;
+endchar;
+
+iff known latin_Ntilde:
+beginchar(latin_Ntilde,12u#,Asc_height#,0);
+usep;
+z0=(.5w,h);
+acc_tilde(0).low;
+endchar;
+
+iff known latin_Ncedilla:
+beginchar(latin_Ncedilla,12u#,cap_height#,.75desc_depth#-.5stem#);
+usep;
+z0=(u+.45stem,.5stem);
+cedilla(0);
+endchar;
+
+iff known latin_Eng:
+beginchar(latin_Eng, 12u#,cap_height#,desc_depth#);
+numeric theta;
+hpos(1)(cap_stem,can); hpos(2)(cap_stem,0); hpos(3)(cap_stem,0); hpos(4)(cap_stem,can);
+hpos(5)(cap_stem,can);
+x1l=w-x4r=u; x2=x1; x3=x4; y1l=y3=0; y2=y4r=h; x5=x3; y5l=-d;
+theta:=(angle(z2l-z3r));
+z3''=z3r+((cap_stem,0) rotated (theta-90)); z3'=whatever[z3'',(z2l)]=whatever[z4l,z3l];
+z2''=z2l+((cap_stem,0) rotated (theta+90)); z2'=whatever[z2'',(z3r)]=whatever[z1r,z2r];
+filldraw z1l--z1r--z2'--z3r--z4r--z4l--z3'--z2l--cycle;
+filldraw z4l--z5l--z5r--z4r--cycle;
+penlabels(1,2,3,4); labels(2',2'',3',3'');
+endchar;
+
+beginchar("O", 16.5u#,cap_height#,0);
+penpos10(cap_stem,0); penpos11(cap_stem,90); penpos12(cap_stem,180); penpos13(cap_stem,-90);
+.5[z10,z12]=.5[z11,z13]; y13=.5cap_stem; x10+.5cap_stem=w-u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5cap_stem=u;
+filldraw z10r{up}..{left}z11r..{down}z12r..{right}z13r..{up}z10r--z10l{down}..{left}z13l..{up}z12l..{right}z11l..{down}z10l--cycle;
+savep;
+endchar;
+
+iff known latin_Oacute:
+beginchar(latin_Oacute,16.5u#,Asc_height#,0);
+usep;
+z0=(.5w+1.5u,h);
+acute(0).low;
+endchar;
+
+iff known latin_Ocircumflex:
+beginchar(latin_Ocircumflex,16.5u#,Asc_height#,0);
+usep;
+z0=(.5w,h);
+circumflex(0).low;
+endchar;
+
+iff known latin_Oumlaut:
+beginchar(latin_Oumlaut,16.5u#,.3[Asc_height#,cap_height#],0);
+usep;
+z0=(.5w,h-.6stem);
+umlaut(0);
+endchar;
+
+iff known latin_Ograve:
+beginchar(latin_Ograve,16.5u#,Asc_height#,0);
+usep;
+z0=(.5w-1.5u,h);
+grave(0);
+endchar;
+
+iff known latin_Otilde:
+beginchar(latin_Otilde,16.5u#,Asc_height#,0);
+usep;
+z0=(.5w+.5u,h);
+acc_tilde(0).low;
+endchar;
+
+iff known latin_Omacron:
+beginchar(latin_Omacron,16.5u#,Asc_height#,0);
+usep;
+z0=(.5w,h);
+macron(0);
+endchar;
+
+iff known latin_Obreve:
+beginchar(latin_Obreve,16.5u#,Asc_height#,0);
+usep;
+z0=(.5w,h);
+breve(0);
+endchar;
+
+iff known latin_Ohungarumlaut:
+beginchar(latin_Ohungarumlaut,16.5u#,Asc_height#,0);
+usep;
+z0=(.5w+.8u,h);
+H_umlaut(0).low;
+endchar;
+
+beginchar("P", 11u#,cap_height#,0);
+hpos(1)(cap_stem,can); hpos(2)(cap_stem,0);
+x1l=u=x2l; y1=0; y2r=h;
+filldraw z1l--z1r--z2r--z2l--cycle;
+.5[z10,z12]=.5[z11,z13]; y11=h-.5cap_stem; x10+.5cap_stem=w-u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5cap_stem=2u;
+penpos10(cap_stem,0); penpos11(cap_stem,90); penpos12(cap_stem,180); penpos13(cap_stem,-90);
+penpos2'(cap_stem,90); penpos2''(cap_stem,270);
+.5[y2'',y2']=y10; x2'=x2''=x2r; y2'r=y2r;
+filldraw z2'r---z11r..{down}z10r..{left}z13r---z2''r--z2''l---z13l{right}..{up}z10l..{left}z11l---z2'l--cycle;
+penlabels(1,2,10,11,12,13);
+endchar;
+
+beginchar(latin_Thorn, 11u#,cap_height#,0);
+hpos(1)(cap_stem,can); hpos(2)(cap_stem,0);
+x1l=u=x2l; y1=0; y2r=h;
+filldraw z1l--z1r--z2r--z2l--cycle;
+.5[z10,z12]=.5[z11,z13]; y10=.55h; x10+.5cap_stem=w-u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5cap_stem=2u;
+penpos10(cap_stem,0); penpos11(cap_stem,90); penpos12(cap_stem,180); penpos13(cap_stem,-90);
+penpos2'(cap_stem,90); penpos2''(cap_stem,270);
+.5[y2'',y2']=y10; x2'=x2''=x2r; y2'=y11;
+filldraw z2'r---z11r..{down}z10r..{left}z13r---z2''r--z2''l---z13l{right}..{up}z10l..{left}z11l---z2'l--cycle;
+penlabels(1,2,2',2'',10,11,12,13);
+endchar;
+
+beginchar("Q", 16.5u#,cap_height#,.5desc_depth#);
+penpos10(cap_stem,0); penpos11(cap_stem,90); penpos12(cap_stem,180); penpos13(cap_stem,-90);
+.5[z10,z12]=.5[z11,z13]; y13=.5cap_stem; x10+.5cap_stem=w-u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5cap_stem=u;
+filldraw z10r{up}..{left}z11r..{down}z12r..{right}z13r..{up}z10r--z10l{down}..{left}z13l..{up}z12l..{right}z11l..{down}z10l--cycle;
+hpos(1)(cap_stem,can); hpos(2)(cap_stem,can);
+y1l=-d; x1r=w-u; y2=.5x_height; z2=z1+whatever*(-1,1.5);
+filldraw z1l--z2l--z2r--z1r--cycle;
+penlabels(1,2);
+endchar;
+
+beginchar("R", 11u#,cap_height#,0);
+hpos(1)(cap_stem,can); hpos(2)(cap_stem,0);
+x1l=u=x2l; y1=0; y2r=h;
+filldraw z1l--z1r--z2r--z2l--cycle;
+.5[z10,z12]=.5[z11,z13]; y11=h-.5cap_stem; x10+.5cap_stem=w-u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5cap_stem=2u;
+z2'=z2r+.5cap_stem*down; x2'=x2''; .5[y2',y2'']=.5[y11,y13];
+penpos2'(cap_stem,90); penpos2''(cap_stem,270); penpos11(cap_stem,90); penpos10(cap_stem,0); penpos13(cap_stem,270);
+hpos(3)(cap_stem,0); hpos(4)(cap_stem,can);
+z3l=z2''l; x4r=w-u; y4l=0;
+z0=(z4r--z3r) intersectionpoint (z13r--z2''r);
+filldraw z2'r---z11r..{down}z10r..{left}z13r--- z0--z4r--z4l --z2''l---z13l..{up}z10l..z11l---z2'l--cycle;
+penlabels(2',2'',3,4,10,11,13); labels(0);
+savep;
+endchar;
+
+iff known latin_Rcaron:
+beginchar(latin_Rcaron,11u#,Asc_height#,0);
+usep;
+z0=(.45w,h);
+caron(0).low;
+endchar;
+
+iff known latin_Racute:
+beginchar(latin_Racute,11u#,Asc_height#,0);
+usep;
+z0=(.45w,h);
+acute(0).low;
+endchar;
+
+iff known latin_Rcedilla:
+beginchar(latin_Rcedilla,11u#,cap_height#,.75desc_depth#-stem#);
+usep;
+z0=(1.5u,stem);
+cedilla(0);
+endchar;
+
+beginchar("S", 12u#,cap_height#,0);
+hpos(1)(cap_stem,0); penpos2(cap_stem,(-can+90)); vpos(3)(cap_stem,can); hpos(4)(cap_stem,0); penpos0(cap_stem,90);
+x1r=w-u; y1=.5x_height; y4=h-.5x_height; x4l=u;
+path p;
+penpos10(cap_stem,0); penpos11(cap_stem,90); penpos12(cap_stem,0); penpos13(cap_stem,90);
+.5[z10,z12]=.5[z11,z13]; y13=.5cap_stem; x10+.5cap_stem=w-u; y10=y12;
+x11=x13; y11-y13=x10-x12; x13=.5w; x3=x12l; y3=.35x_height;
+p:= z10{down}..{left}z13..{up}z12..{right}z11..cycle;
+penpos20(cap_stem,0); penpos21(cap_stem,90); penpos22(cap_stem,0); penpos23(cap_stem,90);
+.5[z20,z22]=.5[z21,z23]; y21=h-.5cap_stem; x20+.5cap_stem=w-u; y20=y22;
+x21=x23; y21-y23=x20-x22; x23=.5w; x2r=x10r; y2r=h-.25x_height;
+filldraw z3l..z13l{right}..{up}z1r--z1l{down}..{left}z13r..z3r--cycle;
+filldraw z2l..z21l{left}..{down}z4r--z4l{up}..{right}z21r..z2r--cycle;
+p:=z4r{down}..{down}z1r; z0=((.5w,0)--(.5w,h)) intersectionpoint p;
+filldraw z4l{down}..z0l..{down}z1l--z1r{up}..z0r..{up}z4r--cycle;
+penlabels(1,2,3,4,10,11,12,13,20,21,22,23);
+savep;
+endchar;
+
+iff known latin_Scaron:
+beginchar(latin_Scaron,12u#,Asc_height#,0);
+usep;
+z0=(.55w,h);
+caron(0).low;
+endchar;
+
+iff known latin_Sacute:
+beginchar(latin_Sacute,12u#,Asc_height#,0);
+usep;
+z0=(.6w,h);
+acute(0).low;
+endchar;
+
+iff known latin_Scedilla:
+beginchar(latin_Scedilla,12u#,cap_height#,.75desc_depth#-.5stem#);
+usep;
+z0=(.45w,.5stem);
+cedilla(0);
+endchar;
+
+iff known latin_Scircumflex:
+beginchar(latin_Scircumflex,12u#,Asc_height#,0);
+usep;
+z0=(.5w+.5u,h);
+circumflex(0).low;
+endchar;
+
+beginchar("T", 12u#, cap_height#, 0);
+hpos(1)(cap_stem,can); penpos2(cap_stem,0); penpos3(cap_stem,90); vpos(4)(cap_stem,can)
+z1=(.5w,0); z2=(x1,h-cap_stem); x3=w-x4l=w-u; y3=y4=h-.5cap_stem;
+filldraw z1l--z1r--z2r--z3l--z3r--z4r--z4l--z2l--cycle;
+%serif(3r,angle(z3l-z3r),0); serif(4r,angle(z4l-z4r),0);
+savep;
+endchar;
+
+iff known latin_Tcaron:
+beginchar(latin_Tcaron,12u#,Asc_height#,0);
+usep;
+z0=(.5w,h);
+caron(0).low;
+endchar;
+
+iff known latin_Tcommaaccent:
+beginchar(latin_Tcommaaccent,12u#,cap_height#,2.5u#);
+usep;
+y1r=-.5u; y2l=-d; x1r-x2l=2u; .5[x1r,x2l]=.5w-.5cap_stem;
+hpos(2)(stem,-can); hpos(1)(cap_stem,-can);
+filldraw (z1l--z1r--z2r--z2l--cycle);
+endchar;
+
+iff known latin_Tbar:
+beginchar(latin_Tbar,12u#,cap_height#,0);
+usep;
+vpos(1)(.75stem,can); vpos(2)(.75stem,0);
+lft x1l=3u; rt x2=w-3u; y1=y2=x_height;
+filldraw z1r--z2r--z2l--z1l--cycle;
+penlabels(1,2);
+endchar;
+
+beginchar("U", 13u#,cap_height#,0);
+hpos(1)(cap_stem,0); hpos(2)(cap_stem,can); hpos(3)(cap_stem,0); hpos(4)(cap_stem,can);
+x1r=x2r=w-u; y1=.5x_height=y3; y2r=y4r=h; x4l=x3l=u;
+filldraw z1l--z1r--z2r--z2l--cycle;
+filldraw z3l--z3r--z4r--z4l--cycle;
+path p;
+penpos10(cap_stem,0); penpos11(cap_stem,90); penpos12(cap_stem,0); penpos13(cap_stem,90);
+.5[z10,z12]=.5[z11,z13]; y13=.5cap_stem; x10+.5cap_stem=w-u; y10=y12;
+x11=x13; y11-y13=x10-x12; x13=.5w;
+p:= z10{down}..{left}z13..{up}z12..{right}z11..cycle;
+filldraw z3l{down}..z13l{right}..{up}z1r--z2r--z2l--z1l{down}..{left}z13r..{up}z3r--cycle;
+penlabels(1,2,3,10,11,12,13);
+savep;
+endchar;
+
+iff known latin_Uacute:
+beginchar(latin_Uacute,13u#,Asc_height#,0);
+usep;
+z0=(.5w+.5u,h);
+acute(0).low;
+endchar;
+
+iff known latin_Uring:
+beginchar(latin_Uring,13u#, Asc_height#,0);
+usep;
+z0=(.5w,h);
+ring(0).low;
+endchar;
+
+iff known latin_Uumlaut:
+beginchar(latin_Uumlaut,13u#, .3[Asc_height#,cap_height#],0);
+usep;
+z0=(.5w,h-.6stem);
+umlaut(0);
+endchar;
+
+iff known latin_Ugrave:
+beginchar(latin_Ugrave,13u#, Asc_height#,0);
+usep;
+z0=(.5w,h);
+grave(0).low;
+endchar;
+
+iff known latin_Ucircumflex:
+beginchar(latin_Ucircumflex,13u#, Asc_height#,0);
+usep;
+z0=(.5w,h);
+circumflex(0).low;
+endchar;
+
+iff known latin_Utilde:
+beginchar(latin_Utilde,13u#, Asc_height#,0);
+usep;
+z0=(.5w,h);
+acc_tilde(0).low;
+endchar;
+
+iff known latin_Umacron:
+beginchar(latin_Umacron,13u#, Asc_height#,0);
+usep;
+z0=(.5w,h);
+macron(0);
+endchar;
+
+iff known latin_Uhungarumlaut:
+beginchar(latin_Uhungarumlaut,13u#, Asc_height#,0);
+usep;
+z0=(.5w+.75u,h);
+H_umlaut(0).low;
+endchar;
+
+iff known latin_Ubreve:
+beginchar(latin_Ubreve,13u#, Asc_height#,0);
+usep;
+z0=(.5w,h);
+breve(0);
+endchar;
+
+iff known latin_Uogonek:
+beginchar(latin_Uogonek,13u#, cap_height#,desc_depth#);
+usep;
+z0=(.5w+u,0);
+ogonek(0);
+endchar;
+
+beginchar("V", 13u#,cap_height#,0);
+numeric theta;
+hpos(1)(cap_stem,-can); hpos(2)(cap_stem,can);
+x1r=w-u; y1l=h=y2r; x2l=u; z3l=(.5w,0);
+theta:=90+angle(z1r-z3l);
+penpos3(cap_stem/sind(theta),90);
+filldraw z1l--z3r--z2r--z2l--z3l--z1r--cycle;
+penlabels(1,2,3,4);
+endchar;
+
+beginchar("W", 18u#,cap_height#,0);
+numeric theta, wid;
+wid=12u;
+hpos(1)(cap_stem,-can); hpos(2)(cap_stem,can);
+x1r=wid; y1l=h=y2r; x2l=u; z3l=(.5[x1,x2],0); x4=w-u; y4=y1r;
+theta:=90+angle(z1r-z3l);
+penpos3(cap_stem/sind(theta),90);
+filldraw z1l--z3r--z2r--z2l--z3l--z1r--cycle;
+filldraw (z1l--z3r--z2r--z2l--z3l--z1r--cycle) shifted (z4-z1r);
+penlabels(1,2,3,4);
+savep;
+endchar;
+
+iff known latin_Wcircumflex:
+beginchar(latin_Wcircumflex,18u#, Asc_height#,0);
+usep;
+z0=(.5w+.25u,h);
+circumflex(0);
+endchar;
+
+beginchar("X", 14u#,cap_height#,0);
+numeric theta;
+hpos(1)(cap_stem,-can); hpos(2)(cap_stem,can);
+hpos(3)(cap_stem,-can); hpos(4)(cap_stem,can);
+x1r=w-u=x4r; y1l=h=y2r; x2l=x3l=u; y3r=y4l=0;
+filldraw z1l--z3l--z3r--z1r--cycle;
+filldraw z2l--z4l--z4r--z2r--cycle;
+penlabels(1,2,3,4);
+endchar;
+
+beginchar("Y", 13u#,cap_height#,0);
+hpos(1)(cap_stem,-can); hpos(2)(cap_stem,-can); hpos(3)(cap_stem,can);
+x1r=w-u; y1l=h=y3r; x3l=u; y2r=0; x2l=3.5u; z4l=whatever[z1l,z2l]; y4l=.4h;
+z4r=z4l+(cap_stem/sind(angle(z3l-z4l)),0) rotated (angle(z1l-z4l)-10);
+filldraw z1l--z1r--z2r--z2l--cycle;
+filldraw z3l--z3r--z4r--z4l--cycle;
+penlabels(1,2,3,4);
+savep;
+endchar;
+
+iff known latin_Yacute:
+beginchar(latin_Yacute,13u#,Asc_height#,0);
+usep;
+z0=(.5w,h);
+acute(0).low;
+endchar;
+
+iff known latin_Ycircumflex:
+beginchar(latin_Ycircumflex,13u#,Asc_height#,0);
+usep;
+z0=(.5w,h);
+circumflex(0).low;
+endchar;
+
+iff known latin_Yumlaut:
+beginchar(latin_Yumlaut,13u#,.3[Asc_height#,cap_height#],0);
+usep;
+z0=(.5w+.5u,h-.6stem);
+umlaut(0);
+endchar;
+
+beginchar("Z", 14u#,cap_height#,0);
+numeric theta;
+vpos(1)(cap_stem,can); vpos(2)(cap_stem,0); vpos(3)(cap_stem,0); vpos(4)(cap_stem,-can);
+x1l=w-x4r=u; x1l=x3; x4r=x2; y1r=y2r=h; y4l=y3l=0;
+theta:=(-angle(z2r-z3l));
+z3''=z3l+((0,cap_stem) rotated (theta-90)); z3'=whatever[z3'',(z2r)]=whatever[z4r,z3r];
+z2''=z2r+((0,cap_stem) rotated (theta+90)); z2'=whatever[z2'',(z3l)]=whatever[z1l,z2l];
+filldraw z1l--z2'--z3l--z4l--z4r--z3'--z2r--z1r--cycle;
+penlabels(1,2,3,4); labels(2',2'',3',3'');
+savep;
+endchar;
+
+iff known latin_Zcaron:
+beginchar(latin_Zcaron,14u#,Asc_height#,0);
+usep;
+z0=(.5w,h);
+caron(0).low;
+endchar;
+
+iff known latin_Zacute:
+beginchar(latin_Zacute,14u#,Asc_height#,0);
+usep;
+z0=(.5w,h);
+acute(0).low;
+endchar;
+
+iff known latin_Zdotabove:
+beginchar(latin_Zdotabove,14u#,.3[Asc_height#,cap_height#],0);
+usep;
+z0=(.5w,h-.6stem);
+acc_dot(0);
+endchar;
+
+"German sharp s";
+beginchar(oct"031", 10.5u#, cap_height#,0);
+hpos(1)(stem,can);
+z1l=(x12r,0);
+.5[z10,z12]=.5[z11,z13]; y11=h-.5stem; x10+.5stem=w-2.5u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5stem=u;
+penpos10(stem,0); penpos11(stem,90); penpos12(stem,180); vpos(13)(stem,can);
+.5[z20,z22]=.5[z21,z23]; y21=y13; x20+.5stem=w-u; y20=y22; x21=x23; y23-.5stem=0; x22-.5stem=u;
+penpos20(stem,0); penpos21(stem,90); penpos22(stem,180); penpos23(stem,90); vpos(2)(stem,can);
+y2=y23; x2=.5[x23,x1l];
+filldraw z1l---z12r..{right}z11r..{down}z10r..{left}z13l--z13r{right}..z10l{up}..z11l{left}..z12l---z1r--cycle;
+filldraw z13r{right}..{down}z20r..z23l---z2l--z2r---z23r..z20l{up}..{left}z13l--cycle;
+penlabels(1,10,11,12,13,14,20,21,22,23);
+endchar;
+
+"ae";
+beginchar(oct"032", 12.8u#,x_height#,0);
+path p, op[]; numeric t[];
+penpos11(stem,90); penpos12(stem,0); penpos13(stem,90);
+.5[z10,z12]=.5[z11,z13]; y13=.5stem; x10+.5stem=(w+u)-u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5stem=w-8u;
+p:= z10{up}..{left}z11..{down}z12..{right}z13..cycle;
+z1=point .5 of p;
+z2=point 3.5 of p;
+z3=((0,.25h)--(.75w,.25h)) intersectionpoint p;
+penpos1(stem,(170-angle(direction.5 of p))); penpos2(stem,(100+angle(direction 3.5 of p)));
+penpos3(stem,(90+angle(z3-z1))); z1''=(subpath (0,.5) of (z1r--z3r)) intersectionpoint p; z1'''=z1''+stem*dir(270+angle(z3-z1));
+z1'=(z1'''--z3l) intersectionpoint (z11l{right}..z1l);
+filldraw z3r--z1r..{left}z11r..{down}z12l..{right}z13l..z2l--z2r..z13r{left}..z12r{up}..z11l{right}..z1'--z3l--cycle;
+penlabels(3); labels(1'', 1');
+.5[z20,z22]=.5[z21,z23]; y23=.5stem; x20-x22=5.6u-stem; y20=y22; x21=x23; y21-y23=x20-x22; x22-.5stem=u;
+penpos20(stem,0); penpos21(stem,90); penpos22(stem,180); penpos23(stem,-90);
+op1:=z20r{up}..{left}z21r;
+op2:=z21l{right}..{down}z20l;
+op0:=z11{left}..{down}z12..{right}z13;
+op3:=z11l{left}..{down}z12l..{right}z13l;
+op4:=z11r{left}..{down}z12r..{right}z13r;
+t1=xpart(op1 intersectiontimes op0);
+t2=xpart(op2 intersectiontimes op0);
+filldraw subpath (t1,1) of op1..{down}z22r..{right}z23r..z3r--z3l..{left}z23l..{up}z22l..
+subpath (0,t2) of op2--cycle;
+z5r=op4 intersectionpoint op1; z5l=op3 intersectionpoint op2;
+penpos6(stem,0); penpos7(stem,90); vpos(8)(stem,-can);
+x6l=x5l; y6=.72h; x7=.5[x5l,x8l]; top y7r=h; y8=.9h; x8l=2u;
+filldraw z5l--z5r--z6r{up}..{left}z7r..z8r--z8l..z7l{right}..{down}z6l--cycle;
+endchar;
+
+"oe";
+beginchar(oct"033", 14.7u#,x_height#,0);
+path p, op[]; numeric t[];
+penpos11(stem,90); penpos12(stem,0); penpos13(stem,90);
+.5[z10,z12]=.5[z11,z13]; y13=.5stem; x10+.5stem=(w+u)-u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5stem=w-8u;
+p:= z10{up}..{left}z11..{down}z12..{right}z13..cycle;
+z1=point .5 of p;
+z2=point 3.5 of p;
+z3=((0,.25h)--(.75w,.25h)) intersectionpoint p;
+penpos1(stem,(170-angle(direction.5 of p))); penpos2(stem,(100+angle(direction 3.5 of p)));
+penpos3(stem,(90+angle(z3-z1))); z1''=(subpath (0,.5) of (z1r--z3r)) intersectionpoint p; z1'''=z1''+stem*dir(270+angle(z3-z1));
+z1'=(z1'''--z3l) intersectionpoint (z11l{right}..z1l);
+filldraw z3r--z1r..{left}z11r..{down}z12l..{right}z13l..z2l--z2r..z13r{left}..z12r{up}..z11l{right}..z1'--z3l--cycle;
+penlabels(3); labels(1'', 1');
+.5[z20,z22]=.5[z21,z23]; y23=.5stem; x20-x22=8u-stem; y20=y22; x21=x23; y21-y23=x20-x22; x22-.5stem=u;
+penpos20(stem,0); penpos21(stem,90); penpos22(stem,180); penpos23(stem,-90);
+op1:=z20r{up}..{left}z21r;
+op2:=z21l{right}..{down}z20l;
+op0:=z11{left}..{down}z12;
+t1=xpart(op1 intersectiontimes op0);
+t2=xpart(op2 intersectiontimes op0);
+filldraw subpath (t1,1) of op1..{down}z22r..{right}z23r..z3r--z3l..{left}z23l..{up}z22l..
+subpath (0,t2) of op2--cycle;
+endchar;
+
+"oslash";
+beginchar(oct"034", 10u#,x_height#,0);
+.5[z10,z12]=.5[z11,z13]; y13=.5stem; x10+.5stem=w-u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5stem=u;
+penpos10(stem,0); penpos11(stem,90); penpos12(stem,180); penpos13(stem,-90);
+filldraw z10r{up}..{left}z11r..{down}z12r..{right}z13r..{up}z10r--z10l{down}..{left}z13l..{up}z12l..{right}z11l..{down}z10l--cycle;
+hpos(1)(stem,can); hpos(2)(stem,can);
+y1l=0; y2r=h; x1l=u; x2r=w-u;
+filldraw z1l--z2l--z2r--z1r--cycle;
+endchar;
+
+"AE";
+beginchar(oct"035", 18u#,cap_height#,0);
+numeric theta;
+hpos(1)(cap_stem,0); hpos(2)(cap_stem,0); vpos(3)(cap_stem,-can); penpos4(cap_stem,90); vpos(5)(cap_stem,0); vpos(6)(cap_stem,can);
+x1l=8u=x2l; y1=y6l=0; y2r=h; y3r=h; x3l=x6r=w-u; x2r=x4; y4=y5=.8x_height; x5r=.75[x2r,x3r];
+filldraw z1l--z2l--z3r--z3l--(x2r,y3l)--z4r--z5r--z5l--z4l--(x1r,y6r)--z6r--z6l--cycle;
+hpos(7)(cap_stem,-can);
+y7r=0; x7l=u; z8r=(x1l,h);
+theta:=90+angle(z8r-z7l);
+penpos8(cap_stem/sind(theta),90);
+filldraw z8r--z7l--z7r--z8l--cycle;
+y14r-y14l=cap_stem; y15r=y14r; y15l=y14l; .5[y14r,y14l]=y4;
+x14r=x14l=x1l; z15l=whatever[z8,z7]; z15r=whatever[z8,z7];
+filldraw z14r--z15r--z15l--z14l--cycle;
+penlabels(1,2,3,4,5,6,7,8);
+endchar;
+
+"OE";
+beginchar(oct"036", 18u#,cap_height#,0);
+numeric theta;
+hpos(1)(cap_stem,0); hpos(2)(cap_stem,0); vpos(3)(cap_stem,-can); penpos4(cap_stem,90); vpos(5)(cap_stem,0); vpos(6)(cap_stem,can); penpos7(cap_stem,270); penpos8(cap_stem,0); penpos9(cap_stem,90);
+x1l=8u=x2l; y1=y6l=0; y2r=h; y3r=h; x3l=x6r=w-u; x2r=x4; y4=y5=.5h; x5r=.75[x2r,x3r];
+z7l=z2l; z9l=z1l; x8l=u; y8l=.5h;
+filldraw z1l--z2l--z3r--z3l--(x2r,y3l)--z4r--z5r--z5l--z4l--(x1r,y6r)--z6r--z6l--cycle;
+filldraw z7l{left}..{down}z8l..{right}z9l--z9r{left}..{up}z8r..{right}z7r--cycle;
+penlabels(1,2,3,4,5,6,7,8,9);
+endchar;
+
+"Oslash";
+beginchar(oct"037", 16.5u#,cap_height#,0);
+penpos10(cap_stem,0); penpos11(cap_stem,90); penpos12(cap_stem,180); penpos13(cap_stem,-90);
+.5[z10,z12]=.5[z11,z13]; y13=.5cap_stem; x10+.5cap_stem=w-u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5cap_stem=u;
+filldraw z10r{up}..{left}z11r..{down}z12r..{right}z13r..{up}z10r--z10l{down}..{left}z13l..{up}z12l..{right}z11l..{down}z10l--cycle;
+hpos(1)(stem,can); hpos(2)(stem,can);
+y1l=0; y2r=h; x1l=u; x2r=w-u;
+filldraw z1l--z2l--z2r--z1r--cycle;
+endchar;
+
+beginchar("@", asc_height#+2u#, asc_height#,0);
+z0=(.5w,.5h);
+italic_a(0)(.4w);
+penpos20(stem,0); penpos21(stem,90); penpos22(stem,180); vpos(23)(stem,-can);
+penpos1(stem,90); z1l=(.5[x14r,x20l],y13r);
+.5[z20,z22]=.5[z21,z23]; y23=.5stem; x20+.5stem=w-u; y20=y22; x21=x23; y21-y23=x20-x22; x22-.5stem=u;
+filldraw z14l{down}..{right}z1l..z20r{up}..{left}z21r..{down}z22r..{right}z23l--z23r{left}..{up}z22l..{right}z21l
+..{down}z20l..z1r{left}..{up}z14r--cycle;
+penlabels(1,10,11,12,13,14,15,20,21,22,23);
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Greek uppercase
+beginchar(0, 10u#,cap_height#,0);%Gamma
+hpos(1)(cap_stem,can); hpos(2)(cap_stem,0); vpos(3)(cap_stem,can);
+x1l=u=x2l; y1=0; y2r=h; y3r=h; x3r=w-u;
+filldraw z1r--z1l--z2l--z3r--z3l--(x2r,y3l)--cycle;
+penlabels(1,2,3);
+endchar;
+
+beginchar(1, 15u#,cap_height#,0);%Delta
+numeric theta;
+hpos(1)(cap_stem,0); hpos(2)(cap_stem,0);
+penpos4(cap_stem,90); penpos5(cap_stem,90);
+x1r=w-u; y1l=0=y2r; x2l=u; z3r=(.5w,h);
+theta:=90+angle(z1r-z3r);
+penpos3(cap_stem/sind(theta),90);
+z4l=z1l; z5l=z2r;
+filldraw z1r--z3r--z2l--z2r--z3l--z1l--cycle;
+filldraw z4r--z5r--z5l--z4l--cycle;
+penlabels(1,2,3,4,5);
+endchar;
+
+beginchar(2, 16.5u#,cap_height#,0);%Theta
+penpos10(cap_stem,0); penpos11(cap_stem,90); penpos12(cap_stem,180); penpos13(cap_stem,-90);
+.5[z10,z12]=.5[z11,z13]; y13=.5cap_stem; x10+.5cap_stem=w-u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5cap_stem=u;
+vpos(5)(cap_stem,can); vpos(6)(cap_stem,0);
+.5[x5l,x6r]=.5w; y5=y6=.5h; x6r=.65w;
+filldraw z10r{up}..{left}z11r..{down}z12r..{right}z13r..{up}z10r--z10l{down}..{left}z13l..{up}z12l..{right}z11l..{down}z10l--cycle;
+filldraw z5l--z6l--z6r--z5r--cycle;
+endchar;
+
+beginchar(3, 13u#,cap_height#,0);%Lambda
+numeric theta;
+hpos(1)(cap_stem,can); hpos(2)(cap_stem,-can);
+x1r=w-u; y1l=0=y2r; x2l=u; z3r=(.5w,h);
+theta:=90+angle(z1r-z3r);
+penpos3(cap_stem/sind(theta),90);
+filldraw z1r--z3r--z2l--z2r--z3l--z1l--cycle;
+penlabels(1,2,3,4,5);
+endchar;
+
+beginchar(4, 11u#,cap_height#,0);
+vpos(1)(cap_stem,can); vpos(2)(cap_stem,0);
+vpos(3)(cap_stem,0); vpos(4)(cap_stem,-can);
+vpos(5)(cap_stem,0); vpos(6)(cap_stem,0);
+x1l=u=x3l; x2r=x4l=w-u; y1r=y2r=h; y3l=y4l=0;
+.5[x5l,x6r]=.5w; y5=y6=x_height; x6r=.75w;
+filldraw z1l--z2l--z2r--z1r--cycle;
+filldraw z3l--z4l--z4r--z3r--cycle;
+filldraw z5l--z6l--z6r--z5r--cycle;
+penlabels(1,2,3,4,5,6);
+endchar;
+
+beginchar(5, 13.5u#, cap_height#, 0);%Pi
+hpos(1)(cap_stem,can); penpos2(cap_stem,0); penpos3(cap_stem,90); vpos(4)(cap_stem,can)
+z1l=(2.5u,0); z2=(x1,h-cap_stem); x3=w-x4l=w-u; y3=y4=h-.5cap_stem;
+filldraw z1l--z1r--z2r--z2l--cycle;
+filldraw (z1l--z1r--z2r--z2l--cycle) shifted (w-2x1,0);
+filldraw z3l--z3r--z4r--z4l--cycle;
+penlabels(1,2,3,4);
+endchar;
+
+beginchar(6,14u#, cap_height#,0);%Sigma
+vpos(1)(cap_stem,can); vpos(5)(cap_stem,-can); penpos3(cap_stem,180);
+x1r=x5l=w-u; y1r=y2r=h; y4r=y5l=0; y3=.5h; x3=.65w; x2r=x4r=u; y2l=y1l; y4l=y5r;
+z4'=z4r+((cap_stem,0) rotated (angle((z3r-z4r))-90));
+z2'=z2r+((cap_stem,0) rotated (angle((z3r-z2r))+90));
+z4l=z4'+whatever*(z3r-z4r); z2l=z2'+whatever*(z3r-z2r);
+filldraw z1r--z2r--z3r--z4r--z5l--z5r--z4l--z3l--z2l--z1l--cycle;
+penlabels(1,2,3,4,5); labels(2',4');
+endchar;
+
+beginchar(7,12u#,cap_height#,0);
+path lp, rp;
+numeric t[];
+vpos(1)(cap_stem,-can); penpos2(cap_stem,0); hpos(3)(cap_stem,can); vpos(4)(cap_stem,0);
+x1r=u=w-x4r; x2=x3=.5w; y1r=y4r=h; y2=x_height; y3l=0;
+lp:=z2r{up}..{left}z1r;
+rp:=z2l{up}..{right}z4r;
+(t2,t1)=lp intersectiontimes rp;
+z2'=point t1 of lp;
+filldraw z1l{right}..z2l---z3l--z3r---z2r..{right}z4l--subpath (0,1-t1) of (reverse rp)--z2'--subpath (t2,1) of lp --cycle;
+penlabels(1,2,3);
+endchar;
+
+beginchar(8, 13u#,cap_height#,0);%Phi
+penpos10(cap_stem,0); penpos11(cap_stem,90); penpos12(cap_stem,180); penpos13(cap_stem,-90);
+hpos(1)(cap_stem,can); hpos(2)(cap_stem,can);
+x1=x2=.5w; y1l=0; y2r=h;
+.5[z10,z12]=.5[z11,z13]=(.5w,.5h); x10+.5cap_stem=w-u; y10=y12; x11=x13; y11-y13=.75(x10-x12); %x12-.5cap_stem=u;
+filldraw z10r{up}..{left}z11r..{down}z12r..{right}z13r..{up}z10r--z10l{down}..{left}z13l..{up}z12l..{right}z11l..{down}z10l--cycle;
+filldraw z1l--z2l--z2r--z1r--cycle;
+endchar;
+
+beginchar(9, 13u#,cap_height#,0);%Psi
+hpos(10)(cap_stem,can); penpos11(cap_stem,90); hpos(12)(cap_stem,can); penpos13(cap_stem,-90);
+hpos(1)(cap_stem,can); hpos(2)(cap_stem,can);
+x1=x2=.5w; y1l=0; y2r=h;
+.5[z10,z12]=.5[z11,z13]; x10+.5cap_stem=w-u; y10r=y12r=h; x11=x13; y11-y13=1.35(x10-x12); .5[x10,x12]=x1;
+filldraw z12l{down}..{right}z13r..{up}z10r--z10l{down}..{left}z13l..{up}z12r--cycle;
+filldraw z1l--z2l--z2r--z1r--cycle;
+endchar;
+
+beginchar(10, 14u#,cap_height#,0);%Omega
+penpos10(cap_stem,0); penpos11(cap_stem,90); penpos12(cap_stem,180); penpos13(cap_stem,-90);
+.5[z10,z12]=.5[z11,z13]; y11=h-.5cap_stem; x10+.5cap_stem=w-u; y10=y12; x11=x13; y11-y13=.9(x10-x12); x12-.5cap_stem=u;
+hpos(1)(cap_stem,can); hpos(2)(cap_stem,can);
+penpos3(cap_stem,0); penpos4(cap_stem,0);
+y1l=y2l=0; .5[x1,x2]=.5w; x2-x1=.2w; x3=x1; x4=x2;
+y3=y4=.3y13;
+filldraw z2r--z4r{up}..z10r{up}..{left}z11r..{down}z12r..{down}z3l--z1l--z1r--z3r{up}..{up}z12l..{right}z11l..{down}z10l..{down}z4l--z2l--cycle;
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Digits
+beginchar("0", fig_width#,cap_height#,0);
+penpos10(stem,0); penpos11(stem,90); penpos12(stem,180); penpos13(stem,-90);
+.5[z10,z12]=.5[z11,z13]; y13=.5stem; y11=h-.5stem; x10+.5stem=w-u; y10=y12; x11=x13; x12-.5stem=u;
+filldraw z10r{up}..{left}z11r..{down}z12r..{right}z13r..{up}z10r--z10l{down}..{left}z13l..{up}z12l..{right}z11l..{down}z10l--cycle;
+endchar;
+
+beginchar("1", fig_width#,cap_height#,0);
+numeric theta;
+hpos(1)(stem,can); hpos(3)(stem,-can);
+x1r=w-u; y1l=0; y3l=.6h; x3l=u; z2r=(w-u,h);
+theta:=(angle(z2r-z3l));
+z2'=z2r+((stem,0) rotated (theta-90));
+z2l=whatever[z2',z3r]=whatever[z1l,z2r-(stem,0)];
+filldraw z1r--z2r--z3l--z3r--z2l--z1l--cycle;
+penlabels(1,2,3); labels(2');
+endchar;
+
+beginchar("2", fig_width#,cap_height#,0);
+numeric theta;
+vpos(1)(stem,can);
+x1r=w-u; y1l=0; z2l=(u,0); y2r=y1r;
+.5[z10,z12]=.5[z11,z13]; y11=h-.5stem; x10+.5stem=w-u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5stem=u;
+penpos10(stem,0); penpos11(stem,90); penpos12(stem,180); penpos13(stem,-90); penpos10'(stem,0);
+y10'=y10; x10'r=w;
+theta:=angle(z10'l-z2l);
+z2'=z2l+((stem,0) rotated (theta-90));
+z2r=whatever[z2',z10'r];
+y3l=y3r=y13; z3=.5[z3l,z3r];
+z3l=whatever[z2l,z10'l]; z3r=whatever[z2r,z10'r];
+penpos4(stem,180+theta); z4=z13;
+filldraw z1r--z2r---z3r..z10r{up}..{left}z11r..{down}z12r..{right}z4r--z4l{left}..z12l..{right}z11l..{down}z10l..z3l---z2l--z1l--cycle;
+penlabels(1,2,3,4,10,10',11,12,13); labels(2');
+endchar;
+
+beginchar("3", fig_width#, cap_height#,0);
+.5[z10,z12]=.5[z11,z13]; y11=h-.5stem; x10+.5stem=w-u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5stem=u;
+penpos10(stem,0); penpos11(stem,90); hpos(12)(stem,-can); vpos(13)(stem,can);
+.5[z20,z22]=.5[z21,z23]; y21=y13; x20+.5stem=w-u; y20=y22; x21=x23; y23-.5stem=0; x22-.5stem=u;
+penpos20(stem,0); penpos21(stem,90); hpos(22)(stem,can); penpos23(stem,90); vpos(2)(stem,can);
+filldraw z12l{up}..{right}z11r..{down}z10r..{left}z13l--z13r{right}..z10l{up}..z11l{left}..{down}z12r--cycle;
+filldraw z13r{right}..{down}z20r..{left}z23l..{up}z22l--z22r{down}..{right}z23r..z20l{up}..{left}z13l--cycle;
+penlabels(10,11,12,13,14,20,21,22,23);
+endchar;
+
+beginchar("4", fig_width#,cap_height#,0);
+numeric theta;
+hpos(1)(stem,can); penpos4(stem,90);
+x1r=w-2.5u; y1l=0; y3l=.7x_height; x3l=u; z2r=(x1r,h); y4l=y3l; x4=w-u; y3r=y4r;
+theta:=(angle(z2r-z3l));
+z2'=z2r+((stem,0) rotated (theta-90));
+z2l=z2'+whatever*(z3l-z2r)=whatever[z1l,z2r-(stem,0)];
+z3r=whatever[z2l,z2'];
+filldraw z1r--z2r--z3l--z4l--z4r--z3r--z2l--z1l--cycle;
+penlabels(1,2,3,4); labels(2');
+endchar;
+
+beginchar("5", fig_width#,cap_height#,0);
+path op[]; numeric t[];
+vpos(1)(stem,can);
+x1r=w-u; y1r=h; y2r=h; y2l=y1l; x2r=u; x2l=x2r+stem;
+.5[z10,z12]=.5[z11,z13]; y13=.5stem; x10+.5stem=w-u; y10=y12; x11=x13; y11-y13=1(x10-x12); x12-.5stem=-.5u;
+penpos10(stem,0); penpos11(stem,90); penpos12(stem,180); penpos13(stem,-90);
+op1:=z11r{left}..{down}z12r;
+op2:=z12l{up}..{right}z11l;
+op3:=z2r--(x2r,0);
+op4:=z2l--(x2l,0);
+op5:=.5[z2l,z2r]--(.5[x2l,x2r],0);
+op6:=z13{left}..{up}z12;
+t1=xpart (op1 intersectiontimes op4); t2=xpart (op2 intersectiontimes op3);
+z4=op5 intersectionpoint op6;
+z3=op2 intersectionpoint op3;
+op7:=z4--z4+w*(cosd(can),sind(can));
+op8:=z4--z4-w*(cosd(can),sind(can));
+op9:=z12r{down}..{right}z13r;
+op10:=z13l{left}..{up}z12l;
+filldraw z1r--z2r-- subpath (t2,1) of op2..{down}z10l..{left}z13l--subpath (0, xpart (op10 intersectiontimes op7)) of op10-- subpath (xpart (op9 intersectiontimes op8),1) of op9 --z13r{right}..{up}z10r..subpath (0,t1) of op1--z2l--z1l--cycle;
+penlabels(1,2,10,11,12,13); labels(3);
+endchar;
+
+beginchar("6", fig_width#,cap_height#,0);
+vpos(1)(stem,-can);
+x1=.65w; y1r=h;
+.5[z10,z12]=.5[z11,z13]; y13=.5stem; x10+.5stem=w-u; y10=y12; x11=x13; y11-y13=1.2(x10-x12); x12-.5stem=u;
+penpos10(stem,0); penpos11(stem,90); penpos12(stem,180); penpos13(stem,-90);
+filldraw z10r{up}..{left}z11r..{down}z12r..{right}z13r..{up}z10r--z10l{down}..{left}z13l..{up}z12l..{right}z11l..{down}z10l--cycle;
+filldraw z12r{up}..z1r--z1l..{down}z12l--cycle;
+penlabels(1,10,11,12,13);
+endchar;
+
+beginchar("7", fig_width#,cap_height#,0);
+numeric theta;
+hpos(1)(stem,can); vpos(3)(stem,can);
+x1=.5w; y1l=0; x3l=u; y3r=h; y2r=h; x2r=w-u; y2l=y3l;
+theta:=(angle(z2r-z1r));
+z2'=z2r+((-stem,0) rotated (theta-90));
+z2l=whatever[z2',z1l];
+filldraw z1r--z2r--z3r--z3l--z2l--z1l--cycle;
+penlabels(1,2,3);
+endchar;
+
+beginchar("8", fig_width#,cap_height#,0);
+.5[z10,z12]=.5[z11,z13]; y13=.5stem; x10+.5stem=w-u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5stem=u;
+penpos10(stem,0); penpos11(stem,90); penpos12(stem,180); penpos13(stem,-90);
+filldraw z10r{up}..{left}z11r..{down}z12r..{right}z13r..{up}z10r--z10l{down}..{left}z13l..{up}z12l..{right}z11l..{down}z10l--cycle;
+filldraw (z10r{up}..{left}z11r..{down}z12r..{right}z13r..{up}z10r--z10l{down}..{left}z13l..{up}z12l..{right}z11l..{down}z10l--cycle) shifted (z11-z13);
+endchar;
+
+beginchar("9", fig_width#,cap_height#,0);
+vpos(1)(stem,-can);
+x1=.35w; y1l=0;
+.5[z10,z12]=.5[z11,z13]; y11=h-.5stem; x10+.5stem=w-u; y10=y12; x11=x13; y11-y13=1.2(x10-x12); x12-.5stem=u;
+penpos10(stem,0); penpos11(stem,90); penpos12(stem,180); penpos13(stem,-90);
+filldraw z10r{up}..{left}z11r..{down}z12r..{right}z13r..{up}z10r--z10l{down}..{left}z13l..{up}z12l..{right}z11l..{down}z10l--cycle;
+filldraw z10r{down}..z1l--z1r..{up}z10l--cycle;
+penlabels(1,10,11,12,13);
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Punctation, accents, etc.
+beginchar(".",2u#+dot_height#, 2dot_height#/1.2,0);
+z0=(.5w,dot_height/1.2);
+dot(0);
+endchar;
+
+beginchar("-", 6u#, x_height#,0);
+vpos(1)(stem,can); penpos2(stem,90);
+y1=y2=.65h; x1l=u; x2=w-u;
+filldraw z1l--z2l--z2r--z1r--cycle;
+endchar;
+
+iff known latin_hyphen_alt:
+beginchar(latin_hyphen_alt, 6u#, x_height#,0);
+vpos(1)(stem,can); penpos2(stem,90);
+y1=y2=.65h; x1l=u; x2=w-u;
+filldraw z1l--z2l--z2r--z1r--cycle;
+endchar;
+
+beginchar(oct"173", 9u#, x_height#,0);
+vpos(1)(stem,can); penpos2(stem,90);
+y1=y2=.65h; x1l=u; x2=w-u;
+filldraw z1l--z2l--z2r--z1r--cycle;
+endchar;
+
+beginchar(oct"174", 12u#, x_height#,0);
+vpos(1)(stem,can); penpos2(stem,90);
+y1=y2=.65h; x1l=u; x2=w-u;
+filldraw z1l--z2l--z2r--z1r--cycle;
+endchar;
+
+beginchar("+", 10u#, v_center(8u#));
+vpos(1)(stem,can); penpos2(stem,90); hpos(3)(stem,can); hpos(4)(stem,can);
+y1=y2=math_axis; x1l=u; x2=w-u; x3=x4=.5w; y3r=h; y4l=-d;
+filldraw z1l--z2l--z2r--z1r--cycle;
+filldraw z3l--z4l--z4r--z3r--cycle;
+endchar;
+
+beginchar("*", 8u#, cap_height#,0);
+hpos(1)(stem,can); hpos(2)(stem,can);
+hpos(3)(stem,-45+can); hpos(4)(stem,-45+can);
+hpos(5)(stem,45-can); hpos(6)(stem,45-can);
+x1=x2=x0=.5w; y1r=h; y2l=h-6u; .5[y1,y2]=y0;
+.5[z3l,z4r]=z0=.5[z5r,z6l]; x3r=w-u=x6r; cosd(45)*(x3r-x4l)=y3l-y4r;
+cosd(45)*(x5l-x6r)=y6l-y5r;
+filldraw z1l--z2l--z2r--z1r--cycle;
+filldraw z3l--z4l--z4r--z3r--cycle;
+filldraw z5l--z6l--z6r--z5r--cycle;
+penlabels(1,2,3,4,5,6);
+endchar;
+
+beginchar("&", 14u#, cap_height#,0);
+vpos(1)(stem,-can); hpos(2)(stem,can); penpos3(stem,210);
+y1l=0; x1r=w-u=x2r+u; y2l=x_height; z3=z11l;
+.5[z10,z12]=.5[z11,z13]; y13=.5stem; x10+.5stem=.65w; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5stem=u;
+penpos10(stem,0); penpos11(stem,90); penpos12(stem,180); penpos13(stem,-90);
+.5[z20,z22]=.5[z21,z23]; y21=h-.5stem; .5[x20,x22]=.5w-u; y20=y22; x21=x23; y21-y23=x20-x22; x20-x22=.3w+u;
+penpos20(stem,0); penpos21(stem,90); penpos22(stem,180); penpos23(stem,-90);
+filldraw z2r{down}..z13r{left}..{up}z12r..{right}z11r..{up}z20l..{left}z21l..{down}z22l..z3l..{right}z1r--z1l{left}..z3r..z22r{up}..{right}z21r..{down}z20r..{left}z11l..{down}z12l..{right}z13l..{up}z2l--cycle;
+penlabels(1,2,3,10,11,12,13,20,21,22,23);
+endchar;
+
+beginchar("'",2.5u#,asc_height#,0);
+z0=(.5w,h);
+quota(0);
+endchar;
+
+beginchar("`",2.5u#,asc_height#,0);
+z0=(.5w,h);
+quota(0).upper;
+endchar;
+
+beginchar(34,7u#,asc_height#,0);
+.5[z1,z2]=(.5w,h); y1=y2; x1=2u;
+quota(1); quota(2);
+endchar;
+
+beginchar(oct"134",7u#,asc_height#,0);
+.5[z1,z2]=(.5w,h); y1=y2; x1=2u;
+quota(1).upper; quota(2).upper;
+endchar;
+
+iff known sign_czech_closing:
+beginchar(sign_czech_closing,7u#,asc_height#,0);
+.5[z1,z2]=(.5w,h); y1=y2; x1=2u;
+quota(1).upper; quota(2).upper;
+endchar;
+
+iff known sign_CE_opening:
+beginchar(sign_CE_opening,7u#,1.5u#,2u#);
+.5[z1,z2]=(.5w,h); y1=y2; x1=2u;
+quota(1); quota(2);
+endchar;
+
+"Grave accent";
+beginchar(oct"022",6u#,asc_height#,0);
+z0=(.5w,h);
+grave(0);
+endchar;
+
+"Acute accent";
+beginchar(oct"023",6u#,asc_height#,0);
+z0=(.5w,h);
+acute(0);
+endchar;
+
+"Caron";
+beginchar(oct"024",6u#,asc_height#,0);
+z0=(.5w,h);
+caron(0);
+endchar;
+
+
+"Breve";
+beginchar(oct"025",7u#,asc_height#,0);
+z0=(.5w,h);
+breve(0);
+endchar;
+
+"Macron (bar)";
+beginchar(oct"026",6u#,asc_height#,0);
+z0=(.5w,h);
+macron(0);
+endchar;
+
+"Ring accent";
+beginchar(oct"027",6u#,asc_height#,0);
+z0=(.5w,h);
+ring(0);
+endchar;
+
+"Circumflex";
+beginchar(oct"136",6u#,asc_height#,0);
+z0=(.5w,h);
+circumflex(0);
+endchar;
+
+"Dot accent";
+beginchar(oct"137",6u#,asc_height#,0);
+z0=(.5w,h-.6stem);
+acc_dot(0);
+endchar;
+
+"Hungarian umlaut";
+beginchar(oct"175",6u#,asc_height#,0);
+z0=(.5w,h);
+H_umlaut(0);
+endchar;
+
+"Tilde";
+beginchar(oct"176",9u#,asc_height#,0);
+z0=(.5w,h);
+tilde(0)
+endchar;
+
+"Umlaut";
+beginchar(oct"177",6u#,asc_height#,0);
+z0=(.5w,h-.6stem);
+umlaut(0);
+endchar;
+
+iff known sign_ogonek:
+"Ogonek";
+beginchar(sign_ogonek,6u#,0,desc_depth#);
+z0=(.5w+.7u,0); ogonek(0);
+endchar;
+
+"Cedilla";
+beginchar(oct"030",6u#,0,.75desc_depth#);
+z0=(.5w,0); cedilla(0);
+penlabels(1,2,3);
+endchar;
+
+beginchar(",",4u#,dot_height#,2u#);
+y1r=h; y2l=-d; x1r=w-u; x2l=u;
+hpos(2)(stem,-can); hpos(1)(cap_stem,-can);
+filldraw (z1l--z1r--z2r--z2l--cycle);
+endchar;
+
+beginchar(";",4u#,x_height#,2u#);
+y1r=1.5dot_height; y2l=-d; x1r=w-u; x2l=u;
+hpos(2)(stem,-can); hpos(1)(cap_stem,-can);
+filldraw (z1l--z1r--z2r--z2l--cycle);
+z0=(x1,h-.5dot_height); dot(0);
+endchar;
+
+beginchar(":",4u#,x_height#,0);
+.5[y1,y2]=.5h; x1=x2=.5w; y1=.75dot_height;
+dot(1); dot(2);
+endchar;
+
+beginchar("/", 7u#, cap_height#,0);
+hpos(1)(cap_stem,can); hpos(2)(cap_stem,can);
+x1l=u; x2r=w-u; y1l=0; y2r=h;
+path slash_path;
+slash_path:=z1l--z2l--z2r--z1r--cycle;
+filldraw slash_path;
+endchar;
+
+beginchar("=", 10u#, v_center(7u#));
+vpos(1)(stem,can); penpos2(stem,90);
+x1l=u; x2=w-u; y1=y2; .5[y1,y3]=math_axis; y1-y3=2dot_height;
+filldraw z1l--z2l--z2r--z1r--cycle;
+filldraw (z1l--z2l--z2r--z1r--cycle) shifted (0,y3-y1);
+endchar;
+
+beginchar("#", 11u#, cap_height#, 0);
+vpos(1)(stem,can); penpos2(stem,90);
+hpos(3)(cap_stem,can); hpos(4)(cap_stem,can);
+x1l=u; x2=w-u; y1=y2; .5[y1,y1']=.5h; y1-y1'=2dot_height;
+x3l=u; x4r=.5w+u; y3l=0; y4r=h;
+filldraw z3l--z4l--z4r--z3r--cycle;
+filldraw (z3l--z4l--z4r--z3r--cycle) shifted (w-u-x4r,0);
+filldraw z1l--z2l--z2r--z1r--cycle;
+filldraw (z1l--z2l--z2r--z1r--cycle) shifted (0,y1'-y1);
+endchar;
+
+beginchar("$",8u#,cap_height#,par_depth#);
+penpos10(stem,0); penpos11(stem,90); hpos(12)(stem,can); penpos13(stem,270);
+.5[z10,z12]=.5[z11,z13]; y13=.5stem; x10+.5stem=(w-u); y10=y12; x11=x13; y11-y13=x10-x12; x12-.5stem=u;
+hpos(20)(stem,can); penpos21(stem,90); penpos22(stem,180); penpos23(stem,270);
+penpos15(stem,45); z15=.5[z23,z11];
+.5[z20,z22]=.5[z21,z23]; y21=h-1.5stem; x20+.5stem=(w-u); y20=y22; x21=x23; y21-y23=x20-x22; x22-.5stem=u;
+filldraw z20r{up}..{left}z21r..{down}z22r..z15l..{down}z10l..{left}z13l..{up}z12r--z12l{down}..{right}z13r..z10r{up}
+..z15r..z22l{up}..{right}z21l..{down}z20l--cycle;
+hpos(1)(stem,can); hpos(2)(stem,can);
+x1=x2=.5w; y1r=h; y2l=-d;
+filldraw z1l--z2l--z2r--z1r--cycle;
+penlabels(10,11,12,13,20,21,22,23);
+endchar;
+
+beginchar("%", 11u#, cap_height#, 0);
+numeric circ; circ=3u;
+.5[z1,z2]=.5(w,h); x1-.5circ-.5stem=u; y1+.5circ+.5stem=h;
+kruh(1)(circ); kruh(2)(circ);
+hpos(3)(cap_stem,can); hpos(4)(cap_stem,can);
+y3l=0; y4r=h; x4r=w-u; x3l=u ;
+filldraw z4l--z3l--z3r--z4r--cycle;
+endchar;
+
+iff known sign_per_thousand:
+beginchar(sign_per_thousand, 15u#, cap_height#, 0);
+numeric circ; circ=3u;
+.5[z1,z2]=.5(10u,h); x1-.5circ-.5stem=u; y1+.5circ+.5stem=h;
+y2'=y2; x2'=w-u-.5circ-.5stem;
+kruh(1)(circ); kruh(2)(circ); kruh(2')(circ);
+hpos(3)(cap_stem,can); hpos(4)(cap_stem,can);
+y3l=0; y4r=h; x4r=10u; x3l=u ;
+filldraw z4l--z3l--z3r--z4r--cycle;
+endchar;
+
+iff known sign_per_ten_thousand:
+beginchar(sign_per_ten_thousand, 19u#, cap_height#, 0);
+numeric circ; circ=3u;
+.5[z1,z2]=.5(10u,h); x1-.5circ-.5stem=u; y1+.5circ+.5stem=h;
+y2'=y2''=y2; x2''=w-u-.5circ-.5stem; x2'=x2''-circ-1.4stem;
+kruh(1)(circ); kruh(2)(circ); kruh(2')(circ); kruh(2'')(circ);
+hpos(3)(cap_stem,can); hpos(4)(cap_stem,can);
+y3l=0; y4r=h; x4r=10u; x3l=u ;
+filldraw z4l--z3l--z3r--z4r--cycle;
+endchar;
+
+beginchar("(", 5u#, par_height#, par_depth#);
+hpos(1)(stem,can); penpos2(stem,0); hpos(3)(stem,can);
+x1r=x3r=w-u; x2l=u; y2=.5[y1,y3]; y3l=-d; y1r=h;
+filldraw z1l..z2l..z3l--z3r..z2r..z1r--cycle;
+penlabels(1,2,3);
+endchar;
+
+beginchar(")", 5u#, par_height#, par_depth#);
+hpos(1)(stem,-can); penpos2(stem,0); hpos(3)(stem,-can);
+x1l=x3l=u; x2r=w-u; y2=.5[y1,y3]; y3r=-d; y1l=h;
+filldraw z1l..z2l..z3l--z3r..z2r..z1r--cycle;
+penlabels(1,2,3);
+endchar;
+
+beginchar("[", 7u#, par_height#, par_depth#);
+vpos(1)(stem,can); vpos(4)(stem,can);
+x1r=x4r=w-u; x2r=x3r=u; y1r=y2r=h; y4l=y3r=-d; z3l=(x3r+stem,y4r); z2l=(x2r+stem,y1l);
+filldraw z1r--z2r--z3r--z4l--z4r--z3l--z2l--z1l--cycle;
+penlabels(1,2,3,4);
+endchar;
+
+beginchar("]", 7u#, par_height#, par_depth#);
+vpos(1)(stem,-can); vpos(4)(stem,-can);
+x1r=x4r=u; x2r=x3r=w-u; y1r=y2r=h; y4l=y3r=-d; z3l=(x3r-stem,y4r); z2l=(x2r-stem,y1l);
+filldraw z1r--z2r--z3r--z4l--z4r--z3l--z2l--z1l--cycle;
+penlabels(1,2,3,4);
+endchar;
+
+beginchar("!", 4u#, par_height#, 0);
+hpos(1)(stem,can); hpos(2)(cap_stem,can);
+x0=x1=x2=.5w; y2r=h; y1l=1.5dot_height; y0=.6stem;
+filldraw z1l--z2l--z2r--z1r--cycle;
+dot(0);
+endchar;
+
+"Reversed exclamation mark";
+beginchar(oct"074", 4u#, par_height#-desc_depth#, desc_depth#);
+hpos(1)(stem,can); hpos(2)(cap_stem,can);
+x0=x1=x2=.5w; y2l=-d; y1l=h-1.5dot_height; y0=h-.6stem;
+filldraw z1l--z2l--z2r--z1r--cycle;
+dot(0);
+endchar;
+
+beginchar("?", 9u#, par_height#, 0);
+path p;
+hpos(1)(stem,can); hpos(2)(stem,0);
+x0=x1=x2=.5w; y2r=.5[y1,y13]; y1l=1.5dot_height; y0=.6stem;
+.5[z10,z12]=.5[z11,z13]; y11=h-.5stem; x10+.5stem=w-u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5stem=u;
+penpos10(stem,0); penpos11(stem,90); hpos(12)(stem,-can); penpos13(stem,-90);
+p:=z2{up}..{up}z10; z3=point .5 of p; penpos3(stem,270+angle(direction .5 of p));
+filldraw z1l---z2l..z3l..z10l{up}..{left}z11l..{down}z12r--z12l{up}..z11r{right}..{down}z10r..z3r..z2r---z1r--cycle;
+dot(0);
+penlabels(1,2,3,10,11,12,13);
+used_p:=nullpicture; addto used_p also currentpicture rotatedaround ((.5w,.5h),180);
+endchar;
+
+"Reversed question sign";
+beginchar(oct"076", 9u#, par_height#-desc_depth#, desc_depth#);
+addto currentpicture also used_p shifted (0,h-par_height);
+endchar;
+
+iff known sign_less_than:
+beginchar(sign_less_than, 10u#, .8cap_height#,0);
+hpos(1)(stem/cosd(45),can); penpos2(stem/cosd(60),0);hpos(3)(stem/cosd(45),-can);
+x2l=u; x1=x3; .5[y1l,y3l]=y2; y3l=h; y2=.5cap_height; rt x1r=w-u;
+filldraw z1l--z2l--z3l--z3r--z2r--z1r--cycle;
+penlabels(1,2,3);
+endchar;
+
+iff known sign_greater_than:
+beginchar(sign_greater_than, 10u#, .8cap_height#,0);
+hpos(1)(stem/cosd(45),-can); penpos2(stem/cosd(60),0);hpos(3)(stem/cosd(45),can);
+x2r=w-u; x1=x3; .5[y1r,y3r]=y2; y3r=h; y2=.5cap_height; lft x1l=u;
+filldraw z1l--z2l--z3l--z3r--z2r--z1r--cycle;
+endchar;
+
+iff known sign_french_opening:
+"Left guillemot";
+beginchar(sign_french_opening, 8u#, .75[cap_height#,x_height#],0);
+hpos(1)(stem,can); penpos2(stem,0);hpos(3)(stem,can);
+x2l=u; x1=x3; y1l=0; y3r=h; y2=.5h; x1r=.6w;
+filldraw z1l--z2l--z3l--z3r--z2r--z1r--cycle;
+filldraw (z1l--z2l--z3l--z3r--z2r--z1r--cycle) shifted (w-u-x1r,0);
+endchar;
+
+iff known sign_french_closing:
+"Right guillemot";
+beginchar(sign_french_closing, 8u#, .75[cap_height#,x_height#],0);
+hpos(1)(stem,-can); penpos2(stem,0);hpos(3)(stem,-can);
+x2r=w-u; x1=x3; y1r=0; y3l=h; y2=.5h; x1l=.4w;
+filldraw z1l--z2l--z3l--z3r--z2r--z1r--cycle;
+filldraw (z1l--z2l--z3l--z3r--z2r--z1r--cycle) shifted (u-x1l,0);
+endchar;
+
+"Polish crossbar";
+beginchar(oct"040", 3u#, cap_height#,0);
+vpos(1)(stem,can); penpos2(stem,90);
+y1=.65h; y2=.8h; x1l=0; x2=w;
+filldraw z1l--z2l--z2r--z1r--cycle;
+endchar;
+
+"Ligature ff";
+beginchar(oct"013", 10u#,cap_height#,0);
+hpos(1)(stem,can); penpos2(stem,0); vpos(3)(stem,can);
+x1l=2u=x2l; y1=0; y2=.8h;
+path p; pair shift;
+penpos11(stem,90); penpos12(stem,0); penpos13(stem,90);
+.5[z10,z12]=.5[z11,z13]; y11=h-.5stem; x10+.5stem=(.6w+4u)-u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5stem=2u;
+p:= z10{up}..{left}z11..{down}z12..{right}z13..cycle;
+z3l=z11l;
+shift:=(w-u-x3r,0);
+filldraw z3r..z11r{left}..{down}z2l--z1l--z1r--z2r{up}..{right}z11l--cycle;
+filldraw (z3r..z11r{left}..{down}z2l--z1l--z1r--z2r{up}..{right}z11l--cycle) shifted shift;
+filldraw z3r--z3r+shift--z3l+shift--z3l--cycle;
+vpos(4)(stem,can); penpos5(stem,90);
+y4=y5=x_height; x4l=u; x5=w-u;
+filldraw z4r--z5r--z5l--z4l--cycle;
+penlabels(3);
+z6r=z3r+shift; z6l=z3l+shift;
+serif(6r)(angle(z6l-z6r),180-angle(direction 0 of (z3r..{left}z11r)));
+endchar;
+
+"Ligature fi";
+beginchar(oct"014", 6u#+stem#,cap_height#,0);
+hpos(1)(stem,can); penpos2(stem,0); vpos(3)(stem,can);
+x1l=2u=x2l; y1=0; y2=.8h;
+path p; pair shift;
+penpos11(stem,90); penpos12(stem,0); penpos13(stem,90);
+.5[z10,z12]=.5[z11,z13]; y11=h-.5stem; x10+.5stem=(w+4u)-u-stem; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5stem=2u;
+p:= z10{up}..{left}z11..{down}z12..{right}z13..cycle;
+z3l=z11l;
+filldraw z3r..z11r{left}..{down}z2l--z1l--z1r--z2r{up}..{right}z11l--cycle;
+vpos(4)(stem,can); penpos5(stem,90);
+y4=y5=x_height; x4l=u; x5=w-u;
+filldraw z4r--z5r--z5l--z4l--cycle;
+hpos(6)(stem,can); penpos7(stem,0);
+x6r=x7r=w-u; y7r=x_height; y6l=0;
+filldraw z6l--z7l--z7r--z6r--cycle;
+z8a=(w-u,y3r); z8b=(x8a-(x3r-x3l),y3l); z8c=(x8a-.6stem,y8b-.8stem); z8d=(x8c-.6stem,y8b);
+filldraw z3r--z8a--z8b--z8c--z8d--cycle;
+penlabels(3);
+endchar;
+
+"Ligature fl";
+beginchar(oct"015", 6u#+stem#,cap_height#,0);
+hpos(1)(stem,can); penpos2(stem,0); vpos(3)(stem,can);
+x1l=2u=x2l; y1=0; y2=.8h;
+path p; pair shift;
+penpos11(stem,90); penpos12(stem,0); penpos13(stem,90);
+.5[z10,z12]=.5[z11,z13]; y11=h-.5stem; x10+.5stem=(w+4u)-u-stem; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5stem=2u;
+p:= z10{up}..{left}z11..{down}z12..{right}z13..cycle;
+z3l=z11l;
+filldraw z3r..z11r{left}..{down}z2l--z1l--z1r--z2r{up}..{right}z11l--cycle;
+vpos(4)(stem,can); penpos5(stem,90);
+y4=y5=x_height; x4l=u; x5=w-u;
+filldraw z4r--z5r--z5l--z4l--cycle;
+hpos(6)(stem,can); penpos7(stem,0);
+x6r=x7r=w-u; y7r=h; y6l=0;
+filldraw z6l--z7l--z7r--z6r--cycle;
+penlabels(3);
+endchar;
+
+"Ligature ffi";
+beginchar(oct"016", 10u#+stem#,cap_height#,0);
+hpos(1)(stem,can); penpos2(stem,0); vpos(3)(stem,can);
+x1l=2u=x2l; y1=0; y2=.8h;
+path p; pair shift;
+penpos11(stem,90); penpos12(stem,0); penpos13(stem,90);
+.5[z10,z12]=.5[z11,z13]; y11=h-.5stem; x10+.5stem=(w)-u-stem; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5stem=2u;
+p:= z10{up}..{left}z11..{down}z12..{right}z13..cycle;
+z3l=z11l;
+shift:=(w-u-stem-x3r,0);
+filldraw z3r..z11r{left}..{down}z2l--z1l--z1r--z2r{up}..{right}z11l--cycle;
+filldraw (z3r..z11r{left}..{down}z2l--z1l--z1r--z2r{up}..{right}z11l--cycle) shifted shift;
+filldraw z3r--z3r+shift--z3l+shift--z3l--cycle;
+vpos(4)(stem,can); penpos5(stem,90);
+y4=y5=x_height; x4l=u; x5=w-u;
+filldraw z4r--z5r--z5l--z4l--cycle;
+hpos(6)(stem,can); penpos7(stem,0);
+x6r=x7r=w-u; y7r=x_height; y6l=0;
+filldraw z6l--z7l--z7r--z6r--cycle;
+z8a=(w-u,y3r); z8b=(x8a-(x3r-x3l),y3l); z8c=(x8a-.6stem,y8b-.8stem); z8d=(x8c-.6stem,y8b);
+filldraw z3r+shift--z8a--z8b--z8c--z8d--cycle;
+penlabels(3);
+endchar;
+
+"Ligature ffl";
+beginchar(oct"017", 10u#+stem#,cap_height#,0);
+hpos(1)(stem,can); penpos2(stem,0); vpos(3)(stem,can);
+x1l=2u=x2l; y1=0; y2=.8h;
+path p; pair shift;
+penpos11(stem,90); penpos12(stem,0); penpos13(stem,90);
+.5[z10,z12]=.5[z11,z13]; y11=h-.5stem; x10+.5stem=(w)-u-stem; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5stem=2u;
+p:= z10{up}..{left}z11..{down}z12..{right}z13..cycle;
+z3l=z11l;
+shift:=(w-u-stem-x3r,0);
+filldraw z3r..z11r{left}..{down}z2l--z1l--z1r--z2r{up}..{right}z11l--cycle;
+filldraw (z3r..z11r{left}..{down}z2l--z1l--z1r--z2r{up}..{right}z11l--cycle) shifted shift;
+filldraw z3r--z3r+shift--z3l+shift--z3l--cycle;
+vpos(4)(stem,can); penpos5(stem,90);
+y4=y5=x_height; x4l=u; x5=w-u;
+filldraw z4r--z5r--z5l--z4l--cycle;
+hpos(6)(stem,can); penpos7(stem,0);
+x6r=x7r=w-u; y7r=h; y6l=0;
+filldraw z6l--z7l--z7r--z6r--cycle;
+penlabels(3);
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Ligatures and specials
+ligtable "!": "`"=:oct"074";
+ligtable "?": "`"=:oct"076";
+ligtable oct"040": "l" kern -3u#;
+ligtable oct"013": "i"=:oct"016", "l"=:oct"017";
+ligtable "-": "-"=:oct"173";
+ligtable oct"173": "-"=:oct"174";
+ligtable "/": "/" kern -3u#;
+
+w:=fig_width;
+h:=cap_height;
+numeric theta, sstem;
+path digit[];
+sstem:=3/2stem;%digit one
+hpos(1)(sstem,can); hpos(3)(sstem,-can);
+x1r=w-u; y1l=0; y3l=.6h; x3l=2u; z2r=(w-u,h);
+theta:=(angle(z2r-z3l));
+z2'=z2r+((sstem,0) rotated (theta-90));
+z2l=whatever[z2',z3r]=whatever[z1l,z2r-(sstem,0)];
+digit[1]:=(z1r--z2r--z3l--z3r--z2l--z1l--cycle) scaled 2/3;
+clearxy; %digit two
+vpos(1)(sstem,can);
+x1r=w-u; y1l=0; z2l=(u,0); y2r=y1r;
+.5[z10,z12]=.5[z11,z13]; y11=h-.5sstem; x10+.5sstem=w-u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5sstem=u;
+penpos10(sstem,0); penpos11(sstem,90); penpos12(sstem,180); penpos13(sstem,-90); penpos10'(sstem,0);
+y10'=y10; x10'r=w;
+theta:=angle(z10'l-z2l);
+z2'=z2l+((sstem,0) rotated (theta-90));
+z2r=whatever[z2',z10'r];
+y3l=y3r=y13; z3=.5[z3l,z3r];
+z3l=whatever[z2l,z10'l]; z3r=whatever[z2r,z10'r];
+penpos4(sstem,180+theta); z4=z13;
+digit[2]:=(z1r--z2r---z3r..z10r{up}..{left}z11r..{down}z12r..{right}z4r--z4l{left}..z12l..{right}z11l..{down}z10l..z3l---z2l--z1l--cycle) scaled 2/3;
+clearxy; %digit three
+.5[z10,z12]=.5[z11,z13]; y11=h-.5sstem; x10+.5sstem=w-u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5sstem=u;
+penpos10(sstem,0); penpos11(sstem,90); hpos(12)(sstem,-can); vpos(13)(sstem,can);
+.5[z20,z22]=.5[z21,z23]; y21=y13; x20+.5sstem=w-u; y20=y22; x21=x23; y23-.5sstem=0; x22-.5sstem=u;
+penpos20(sstem,0); penpos21(sstem,90); hpos(22)(sstem,can); penpos23(sstem,90); vpos(2)(sstem,can);
+digit[3]:= (z12l{up}..{right}z11r..{down}z10r..{left}z13l--z13r{right}..z10l{up}..z11l{left}..{down}z12r--cycle) scaled 2/3;
+digit3.1:=(z13r{right}..{down}z20r..{left}z23l..{up}z22l--z22r{down}..{right}z23r..z20l{up}..{left}z13l--cycle) scaled 2/3;
+clearxy; %digit four
+hpos(1)(sstem,can); penpos4(sstem,90);
+x1r=w-2.5u; y1l=0; y3l=.7x_height; x3l=u; z2r=(x1r,h); y4l=y3l; x4=w-u; y3r=y4r;
+theta:=(angle(z2r-z3l));
+z2'=z2r+((sstem,0) rotated (theta-90));
+z2l=z2'+whatever*(z3l-z2r)=whatever[z1l,z2r-(sstem,0)];
+z3r=whatever[z2l,z2'];
+digit4:=(z1r--z2r--z3l--z4l--z4r--z3r--z2l--z1l--cycle) scaled 2/3;
+
+iff known sign_sup_one:
+"One superscript";
+beginchar(sign_sup_one,.75fig_width#,cap_height#,0);
+filldraw digit1 shifted (.5u,1/3*cap_height);
+endchar;
+
+iff known sign_sup_two:
+"Two superscript";
+beginchar(sign_sup_two,.75fig_width#,cap_height#,0);
+filldraw digit2 shifted (.5u,1/3*cap_height);
+endchar;
+
+iff known sign_sup_three:
+"Three superscript";
+beginchar(sign_sup_three,.75fig_width#,cap_height#,0);
+filldraw digit3 shifted (.5u,1/3*cap_height);
+filldraw digit3.1 shifted (.5u,1/3*cap_height);
+endchar;
+
+iff known sign_sup_a:
+"Underbared letter 'a' supperscript (ordfeminine)";
+beginchar(sign_sup_a, 5.4u#, cap_height#,0);
+hpos(1)(sstem,can); penpos2(sstem,0); penpos3(sstem,90); vpos(4)(sstem,-can);
+lft x1r=6.6u; y1=0; x2=x1; y2=.7x_height; x3=3.8u; top y3r=x_height; y4=.86x_height; x4l=2u;
+filldraw (z1l--z1r--z2r{up}..{left}z3r..z4r--z4l..z3l{right}..{down}z2l--cycle) scaled 2/3 shifted (0,1/3cap_height+1/3x_height);
+.5[z10,z12]=.5[z11,z13]; y13=.5sstem; x10+.5sstem=6.6u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5sstem=u;
+penpos10(sstem,0); penpos11(sstem,90); penpos12(sstem,180); penpos13(sstem,-90);
+filldraw (z10r{up}..{left}z11r..{down}z12r..{right}z13r..{up}z10r--z10l{down}..{left}z13l..{up}z12l..{right}z11l..{down}z10l--cycle) scaled 2/3 shifted (0,1/3*cap_height+1/3x_height);
+z0=(.5w,1/3(cap_height+x_height)-.75stem); macron(0);
+endchar;
+
+iff known sign_sup_o:
+"Underbared letter 'o' superscript (ordmasculine)";
+beginchar(sign_sup_o, 6.7u#,cap_height#,0);
+.5[z10,z12]=.5[z11,z13]; y13=.5sstem; x10+.5sstem=9u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5sstem=u;
+penpos10(sstem,0); penpos11(sstem,90); penpos12(sstem,180); penpos13(sstem,-90);
+filldraw (z10r{up}..{left}z11r..{down}z12r..{right}z13r..{up}z10r--z10l{down}..{left}z13l..{up}z12l..{right}z11l..{down}z10l--cycle) scaled 2/3 shifted (0, 1/3cap_height+1/3x_height);
+z0=(.5w,1/3(cap_height+x_height)-.75stem); macron(0);
+endchar;
+
+iff known sign_onequarter:
+"One quarter sign";
+beginchar(sign_onequarter,13u#,cap_height#+stem#,-stem#);
+filldraw digit[1] shifted (-.5u,1/3cap_height+2stem);
+filldraw slash_path shifted (3.5u,stem);
+filldraw digit[4] shifted (w-.7fig_width,0);
+endchar;
+
+iff known sign_threequarters:
+"Three quarters sign";
+beginchar(sign_threequarters,13.5u#,cap_height#+stem#,-stem#);
+filldraw digit[3] shifted (.5u,1/3cap_height+2stem);
+filldraw digit3.1 shifted (.5u,1/3cap_height+2stem);
+filldraw slash_path shifted (4u,stem);
+filldraw digit[4] shifted (w-.7fig_width,0);
+endchar;
+
+iff known sign_onehalf:
+"One half sign";
+beginchar(sign_onehalf,14u#,cap_height#+stem#,-stem#);
+filldraw digit[1] shifted (-.5u,1/3cap_height+2stem);
+filldraw slash_path shifted (3.5u,stem);
+filldraw digit[2] shifted (w-.7fig_width,0);
+endchar;
+
+iff known sign_registered:
+"Registered sign";
+beginchar(sign_registered, 16.5u#,cap_height#,0);
+numeric scap_stem; scap_stem:=cap_stem/.65;
+pair shift_it;
+shift_it:=(.5*(16.5-.65*11)*u+.5u,.5*.35h);
+hpos(1)(scap_stem,can); hpos(2)(scap_stem,0);
+x1l=u=x2l; y1=0; y2r=h;
+filldraw (z1l--z1r--z2r--z2l--cycle) scaled .65 shifted shift_it;
+.5[z10,z12]=.5[z11,z13]; y11=h-.5scap_stem; x10+.5scap_stem=10u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5scap_stem=2u;
+z2'=z2r+.5scap_stem*down; x2'=x2''; .5[y2',y2'']=.5[y11,y13];
+penpos2'(scap_stem,90); penpos2''(scap_stem,270); penpos11(scap_stem,90); penpos10(scap_stem,0); penpos13(scap_stem,270);
+hpos(3)(scap_stem,0); hpos(4)(scap_stem,can);
+z3l=z2''l; x4r=10u; y4l=0;
+z0=(z4r--z3r) intersectionpoint (z13r--z2''r);
+filldraw (z2'r---z11r..{down}z10r..{left}z13r--- z0--z4r--z4l --z2''l---z13l..{up}z10l..z11l---z2'l--cycle) scaled .65 shifted shift_it;
+penpos20(cap_stem,0); penpos21(cap_stem,90); penpos22(cap_stem,180); penpos23(cap_stem,-90);
+.5[z20,z22]=.5[z21,z23]; y23=.5cap_stem; x20+.5cap_stem=w-u; y20=y22; x21=x23; y21-y23=x20-x22; x22-.5cap_stem=u;
+filldraw z20r{up}..{left}z21r..{down}z22r..{right}z23r..{up}z20r--z20l{down}..{left}z23l..{up}z22l..{right}z21l..{down}z20l--cycle;
+endchar;
+
+iff known sign_copyright:
+"Copyright sign";
+beginchar(sign_copyright, 16.5u#,cap_height#,0);
+numeric scap_stem; scap_stem:=cap_stem/.65;
+path p;
+penpos11(scap_stem,90); penpos12(scap_stem,0); penpos13(scap_stem,90);
+.5[z10,z12]=.5[z11,z13]; y13=.5scap_stem; x10+.5scap_stem=w-u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5scap_stem=u;
+p:= z10{up}..{left}z11..{down}z12..{right}z13..cycle;
+z1=point .68 of p;
+z2=point 3.28 of p;
+vpos(1)(scap_stem,-.5can); vpos(2)(scap_stem,.5can);
+filldraw (z1r..{left}z11r..{down}z12l..{right}z13l..z2l--z2r..z13r{left}..z12r{up}..z11l{right}..z1l--cycle) scaled .65 shifted (.22*w,.5*.35h);
+penpos20(cap_stem,0); penpos21(cap_stem,90); penpos22(cap_stem,180); penpos23(cap_stem,-90);
+.5[z20,z22]=.5[z21,z23]; y23=.5cap_stem; x20+.5cap_stem=w-u; y20=y22; x21=x23; y21-y23=x20-x22; x22-.5cap_stem=u;
+filldraw z20r{up}..{left}z21r..{down}z22r..{right}z23r..{up}z20r--z20l{down}..{left}z23l..{up}z22l..{right}z21l..{down}z20l--cycle;
+endchar;
+
+iff known sign_period_centered:
+"Centered period";
+beginchar(sign_period_centered,2u#+dot_height#, .5cap_height#+dot_height#/1.2,0);
+z0=(.5w,h-2dot_height);
+dot(0);
+endchar;
+
+iff known sign_logicalnot:
+"Logical not sign";
+beginchar(sign_logicalnot,10u#,x_height#,0);
+vpos(1)(stem,can); penpos3(stem,0);
+lft z1l=(u,h-stem); rt x3r=w-u; y3l=.45h; z2r=(x3r,y1r); z2l=(x3l,y1l);
+filldraw z1r--z2r--z3r--z3l--z2l--z1l--cycle;
+penlabels(1,2,3);
+endchar;
+
+iff known sign_alinea:
+"Paragraph sign";
+beginchar(sign_alinea, 11u#,cap_height#,0);
+hpos(1)(cap_stem,0); hpos(2)(cap_stem,0);
+x1r=w-u=x2r; y1=0; y2r=h;
+filldraw z1l--z1r--z2r--z2l--cycle;
+.5[z10,z12]=.5[z11,z13]; y11=h-.5cap_stem; x10+.5cap_stem=w-u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5cap_stem=u;
+penpos10(cap_stem,0); penpos11(cap_stem,90); penpos12(cap_stem,180); penpos13(cap_stem,-90);
+penpos2'(cap_stem,90); penpos2''(cap_stem,270);
+.5[y2'',y2']=y10; x2'=x2''+2.5stem=x2l; y2'r=y2r;
+filldraw z2'r---z11r..{down}z12r..{right}z13r---z2''r--z2''l---z13l{left}..{up}z12l..{right}z11l---z2'l--cycle;
+z3=(x2''+stem,y2r); hpos(4)(cap_stem,can); x4r=x3; y4l=0;
+filldraw z3--z4r--z4l--z2''r---z13r{left}..{up}z12r..z11r--cycle;
+penlabels(1,2,2',3,4,10,11,12,13);
+endchar;
+
+iff known sign_micron:
+"Micron sign (greek mu)";
+beginchar(sign_micron, 9u#,x_height#,desc_depth#);
+hpos(1)(stem,0); hpos(2)(stem,-can); vpos(3)(stem,can); penpos4(stem,0); hpos(5)(stem,can);
+vpos(1')(stem,can);
+x1l=u=x2l; y1=-.35d; y2l=y5r=h; y4=.3h; x5r=w-u; x4r=w-u; y1'l=-d; x1-x1'=y1'-y1;
+filldraw z1'r--z1'l..z1l---z2l--z2r--z1r..{right}cycle;
+path p;
+penpos10(stem,180);penpos11(stem,90); penpos12(stem,0); penpos13(stem,90);
+.5[z10,z12]=.5[z11,z13]; y13=.5stem; x10+.5stem=(w+0u)-u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5stem=u;
+p:= z10{up}..{left}z11..{down}z12..{right}z13..cycle;
+filldraw z5l--z5r--z10l{down}..z13l{left}..{up}z12l--z12r{down}..{right}z13r..{up}z10r--cycle;
+endchar;
+
+iff known sign_plusminus:
+"Plus minus sign";
+beginchar(sign_plusminus, 10u#, v_center(8u#));
+vpos(1)(stem,can); penpos2(stem,90); hpos(3)(stem,can); hpos(4)(stem,can);
+y1=y2=math_axis; x1l=u; x2=w-u; x3=x4=.5w; y3r=h; y4l=-d;
+filldraw z1l--z2l--z2r--z1r--cycle;
+filldraw z3l--z4l--z4r--z3r--cycle;
+filldraw (z1l--z2l--z2r--z1r--cycle) shifted (0,y2-y3);
+endchar;
+
+iff known sign_minusplus:
+"Minus plus sign";
+beginchar(sign_minusplus, 10u#, v_center(8u#));
+vpos(1)(stem,can); penpos2(stem,90); hpos(3)(stem,can); hpos(4)(stem,can);
+y1=y2=math_axis; x1l=u; x2=w-u; x3=x4=.5w; y3r=h; y4l=-d;
+filldraw z1l--z2l--z2r--z1r--cycle;
+filldraw z3l--z4l--z4r--z3r--cycle;
+filldraw (z1l--z2l--z2r--z1r--cycle) shifted (0,y3-y1);
+endchar;
+
+iff known sign_cent:
+"Cent sign";
+beginchar(sign_cent, 9u#,cap_height#,0);
+path p;
+penpos11(stem,90); penpos12(stem,0); penpos13(stem,90);
+.5[z10,z12]=.5[z11,z13]; y13=.25h; x10+.5stem=(w+u)-u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5stem=u;
+p:= z10{up}..{left}z11..{down}z12..{right}z13..cycle;
+z1=point .5 of p;
+z2=point 3.5 of p;
+penpos1(stem,(170-angle(direction.5 of p))); penpos2(stem,(100+angle(direction 3.5 of p)));
+filldraw z1r..{left}z11r..{down}z12l..{right}z13l..z2l--z2r..z13r{left}..z12r{up}..z11l{right}..z1l--cycle;
+serif(1r,angle(z1l-z1r),180+angle(direction.5 of p));
+filldraw slash_path shifted (u,0);
+endchar;
+
+iff known sign_yen:
+"Yen sign";
+beginchar(sign_yen, 13u#,cap_height#,0);
+hpos(1)(cap_stem,-can); hpos(2)(cap_stem,-can); hpos(3)(cap_stem,can);
+x1r=w-u; y1l=h=y3r; x3l=u; y2r=0; x2l=3.5u; z4l=whatever[z1l,z2l]; y4l=.4h;
+z4r=z4l+(cap_stem/sind(angle(z3l-z4l)),0) rotated (angle(z1l-z4l)-10);
+filldraw z1l--z1r--z2r--z2l--cycle;
+filldraw z3l--z3r--z4r--z4l--cycle;
+vpos(6)(.75stem,can); vpos(7)(.75stem,0);
+lft x6l=2u; rt x7=w-2u; y6=y7=y4l;
+filldraw z6r--z7r--z7l--z6l--cycle;
+filldraw (z6r--z7r--z7l--z6l--cycle) shifted (0,-2stem);
+endchar;
+
+iff known sign_currency:
+beginchar(sign_currency, 12u#,cap_height#,0);
+"Currency sign";
+.5[z10,z12]=.5[z11,z13]=z0=(.5w,.5h); y10=y12; x11=x13; y11-y13=x10-x12; x12-.5stem=2u;
+penpos10(stem,0); penpos11(stem,90); penpos12(stem,180); penpos13(stem,-90);
+filldraw z10r{up}..{left}z11r..{down}z12r..{right}z13r..{up}z10r--z10l{down}..{left}z13l..{up}z12l..{right}z11l..{down}z10l--cycle;
+path p; p:=z10{up}..{left}z11..{down}z12..{right}z13..{up}cycle;
+x1'l=x4'r=w-u; x2'r=x3'l=u;
+for i=1,2,3,4:
+z[i]=point (i-.5) of p; penpos[i](stem,angle(direction (i-.5) of p));
+penpos[i]'(stem,angle(direction (i-.5) of p));
+z[i]'=whatever[z0,z[i]];
+filldraw z[i]r--z[i]l--z[i]'l--z[i]'r--cycle;
+endfor;
+penlabels(1,1',2,2',3,3',4,4');
+endchar;
+
+iff known sign_sterling:
+"Sterling sing";
+beginchar(sign_sterling, 10u#,cap_height#,0);
+vpos(1)(cap_stem,can); vpos(2)(cap_stem,can); penpos3(cap_stem,0); penpos4(cap_stem,0); vpos(5)(cap_stem,can);
+y1l=0; x1r=w-u; y2l=0; x2l=u; y3=.15x_height; x3l-x2=y3-y2l; x4=x3; y4=.75h; y5r=h; x5-x4r=y5r-y4;
+filldraw z1r--z1l--z2l{dir10}..{up}z3l---z4l..z5r--z5l..z4r---z3r--(x3r,y1r)--cycle;
+vpos(6)(cap_stem,can); penpos7(cap_stem,90);
+y6=y7=.5h; x6l=u; x7=.55w;
+filldraw z6r--z6l--z7l--z7r--cycle;
+penlabels(1,2,3,4,5,6,7);
+endchar;
+
+iff known sign_bar:
+"Vertical bar";
+beginchar(sign_bar, 5u#, cap_height#,0);
+hpos(1)(cap_stem,can); hpos(2)(cap_stem,can);
+x1=x2=.5w; y1l=0; y2r=h;
+filldraw z1l--z2l--z2r--z1r--cycle;
+endchar;
+
+iff known sign_broken_bar:
+"Vertical broken bar";
+beginchar(sign_broken_bar, 5u#, cap_height#,0);
+hpos(1)(cap_stem,can); penpos2(cap_stem,0); hpos(3)(cap_stem,can); penpos4(cap_stem,0);
+x1=x2=x3=x4=.5w; y1l=0; y4r=h; .5[y2,y3]=.5h; y3l-y2=2cap_stem;
+filldraw z1l--z2l--z2r--z1r--cycle;
+filldraw z3l--z4l--z4r--z3r--cycle;
+penlabels(1,2,3,4);
+endchar;
+
+iff known sign_section:
+"Section sign";
+beginchar(sign_section, 12u#,cap_height#,desc_depth#);
+hpos(1)(cap_stem,0); penpos2(cap_stem,(-can+90)); vpos(3)(cap_stem,can); hpos(4)(cap_stem,0); penpos0(cap_stem,90);
+x1r=w-u; y1=.6x_height; y4=h-.4x_height; x4l=u;
+path p;
+penpos10(cap_stem,0); penpos11(cap_stem,90); penpos12(cap_stem,0); penpos13(cap_stem,90);
+.5[z10,z12]=.5[z11,z13]; y13=cap_stem+.1x_height; x10+.5cap_stem=w-u; y10=y12;
+x11=x13; y11-y13=x10-x12; x13=.5w; x3=x12l; y3=.45x_height;
+p:= z10{down}..{left}z13..{up}z12..{right}z11..cycle;
+penpos20(cap_stem,0); penpos21(cap_stem,90); penpos22(cap_stem,0); penpos23(cap_stem,90);
+.5[z20,z22]=.5[z21,z23]; y21=h-cap_stem+.1x_height; x20+.5cap_stem=w-u; y20=y22;
+x21=x23; y21-y23=x20-x22; x23=.5w; x2r=x10r; y2r=h-.15x_height;
+filldraw z13l{right}..{up}z1r--z1l{down}..{left}z13r--cycle;
+filldraw z2l..z21l{left}..{down}z4r--z4l{up}..{right}z21r..z2r--cycle;
+p:=z4r{down}..{down}z1r; z0=((.5w,0)--(.5w,h)) intersectionpoint p;
+filldraw z4l{down}..z0l..{down}z1l--z1r{up}..z0r..{up}z4r--cycle;
+filldraw (z4r{up}..{right}z21l--z21r{left}..{down} z4l) shifted (z0-z21)..{right}z13l..(z1l{down}..{left}z13r..z3r--z3l..z13l{right}..{up}z1r) shifted (z0-z21)..z13r{left}..{up}cycle;
+penlabels(0,1,2,3,4,10,11,12,13,20,21,22,23);
+endchar;
+
+iff known sign_divide:
+"Divide sign";
+beginchar(sign_divide, 10u#, v_center(8u#));
+vpos(1)(stem,can); penpos2(stem,90);
+y1=y2=math_axis; x1l=u; x2=w-u; .5[y3,y4]=math_axis; x3=x4=.5w; y3=dot_height;
+filldraw z1l--z2l--z2r--z1r--cycle;
+dot(3); dot(4);
+endchar;
+
+iff known sign_backslash:
+beginchar(sign_backslash, 8u#, cap_height#,0);
+hpos(1)(cap_stem,-can); hpos(2)(cap_stem,-can);
+x1r=w-u; x2l=u; y1r=0; y2l=h;
+filldraw z1l--z2l--z2r--z1r--cycle;
+endchar;
+
+iff known sign_underscore:
+beginchar(sign_underscore, 9u#, 0,stem#);
+vpos(1)(stem,can); penpos2(stem,90);
+y1=y2=-.5stem; x1l=0; x2=w;
+filldraw z1l--z2l--z2r--z1r--cycle;
+endchar;
+
+iff known sign_times:
+"Times sign";
+beginchar(sign_times, 9u#, v_center(6u#));
+numeric mstem; mstem=stem/cosd(15);
+hpos(1)(stem/cosd(15),0); hpos(2)(stem/cosd(15),0); hpos(3)(mstem,can); hpos(4)(mstem,can);
+x1l=x4l=u; x2r=x3r=w-u; y1l=y3l=0; y2r=y4r=h;
+filldraw z1l--z2l--z2r--z1r--cycle;
+filldraw z3l--z4l--z4r--z3r--cycle;
+penlabels(1,2,3,4);
+endchar;
+
+iff known sign_brace_left:
+"Brace left";
+beginchar(sign_brace_left, 6.5u#, par_height#, par_depth#);
+vpos(0)(.5stem,can);
+vpos(1)(stem,can); penpos2(stem,180); penpos3(stem,180);
+penpos4(stem,180); penpos5(stem,180); vpos(6)(stem,-can);
+z0=(u,.5(h-d)); x1r=x6r=w-u; y1r=h; y2=.85h; y1-y2=x1-x2l; y3-y0=y1-y2; x3=x4=x5=x2;
+y7=y0; x7=x3l-stem;
+y6l=-d; y5=-d+.15h; .5[y4,y3]=y0;
+filldraw z1r..z2r---z3r..{left}z0r--z0l{right}..z4r---z5r..{right}z6l--z6r{left}..z5l---z4l..{left}z7{right}..z3l---z2l..z1l--cycle;
+penlabels(0,1,2,3,4,5,6,7);
+endchar;
+
+iff known sign_brace_right:
+"Brace right";
+beginchar(sign_brace_right, 6.5u#, par_height#, par_depth#);
+vpos(0)(.5stem,-can);
+vpos(1)(stem,-can); penpos2(stem,0); penpos3(stem,0);
+penpos4(stem,0); penpos5(stem,0); vpos(6)(stem,can);
+z0=(w-u,.5(h-d)); x1l=x6l=u; y1r=h; y2=.85h; y1-y2=x2l-x1; y3-y0=y1-y2; x3=x4=x5=x2;
+y7=y0; x7=x3l+stem;
+y6l=-d; y5=-d+.15h; .5[y4,y3]=y0;
+filldraw z1r..z2r---z3r..{right}z0r--z0l{left}..z4r---z5r..{left}z6l--z6r{right}..z5l---z4l..{right}z7{left}..z3l---z2l..z1l--cycle;
+penlabels(0,1,2,3,4,5,6,7);
+endchar;
+
+iff known sign_dag:
+"Dagger sign";
+beginchar(sign_dag, 8u#,cap_height#,0);
+hpos(1)(stem,can); penpos2(stem,0); vpos(3)(stem,can);
+x1=.5w=x2; y1=0; y2=h;
+filldraw z2l--z1l--z1r--z2r--cycle;
+vpos(4)(stem,can); penpos5(stem,90);
+y4=y5=.4[x_height,h]; x4l=u; x5=w-u;
+filldraw z4r--z5r--z5l--z4l--cycle;
+endchar;
+
+iff known sign_dagg:
+"Double dagger sign";
+beginchar(sign_dagg, 8u#,cap_height#,0);
+hpos(1)(stem,can); penpos2(stem,0); vpos(3)(stem,can);
+x1=.5w=x2; y1=0; y2=h;
+filldraw z2l--z1l--z1r--z2r--cycle;
+vpos(4)(stem,can); penpos5(stem,90);
+vpos(7)(stem,can); penpos6(stem,90);
+y4=y5=.4[x_height,h]; x4l=u; x5=w-u;
+y6=y7=.5x_height; x6l=u; x7=w-u;
+filldraw z4r--z5r--z5l--z4l--cycle;
+filldraw z6r--z7r--z7l--z6l--cycle;
+endchar;
+
+iff known sign_bullet:
+"Bullet sign";
+beginchar(sign_bullet, 8u#,v_center(6u#));
+filldraw fullcircle scaled 6u shifted (.5w,.5(h-d));
+endchar;
+
+iff known sign_bullet_triangle:
+"Triangle bullet sign";
+beginchar(sign_bullet_triangle, 7u#,v_center(6u#));
+filldraw (u,-d)--(w-u,math_axis)--(u,h)--cycle;
+endchar;
+
+iff known sign_prime:
+"Prime sign";
+beginchar(sign_prime,4u#,asc_height#,0);
+y1r=h; y2l=.9x_height; x1r=w-u; x2l=u;
+hpos(2)(stem,-can); hpos(1)(cap_stem,-can);
+filldraw (z1l--z1r--z2r--z2l--cycle);
+endchar;
+
+iff known sign_doubleprime:
+"Double prime sign";
+beginchar(sign_doubleprime,6u#,asc_height#,0);
+y1r=h; y2l=.9x_height; x1r=w-3u; x2l=u;
+hpos(2)(stem,-can); hpos(1)(cap_stem,-can);
+filldraw (z1l--z1r--z2r--z2l--cycle);
+filldraw (z1l--z1r--z2r--z2l--cycle) shifted (2u,0);
+endchar;
+
+iff known sign_tripleprime:
+"Triple prime sign";
+beginchar(sign_tripleprime,8u#,asc_height#,0);
+y1r=h; y2l=.9x_height; x1r=w-5u; x2l=u;
+hpos(2)(stem,-can); hpos(1)(cap_stem,-can);
+filldraw (z1l--z1r--z2r--z2l--cycle);
+filldraw (z1l--z1r--z2r--z2l--cycle) shifted (2u,0);
+filldraw (z1l--z1r--z2r--z2l--cycle) shifted (4u,0);
+endchar;
+
+iff known sign_prime_reversed:
+"Reversed prime sign";
+beginchar(sign_prime_reversed,4u#,asc_height#,0);
+y1r=h; y2l=.9x_height; x1l=u; x2r=w-u;
+hpos(2)(stem,-can); hpos(1)(cap_stem,-can);
+filldraw (z1l--z1r--z2r--z2l--cycle);
+endchar;
+
+iff known sign_doubleprime_reversed:
+"Reversed double prime sign";
+beginchar(sign_doubleprime_reversed,6u#,asc_height#,0);
+y1r=h; y2l=.9x_height; x1l=u; x2r=w-3u;
+hpos(2)(stem,-can); hpos(1)(cap_stem,-can);
+filldraw (z1l--z1r--z2r--z2l--cycle);
+filldraw (z1l--z1r--z2r--z2l--cycle) shifted (2u,0);
+endchar;
+
+iff known sign_tripleprime_reversed:
+"Reversed triple prime sign";
+beginchar(sign_tripleprime_reversed,8u#,asc_height#,0);
+y1r=h; y2l=.9x_height; x1l=u; x2r=w-5u;
+hpos(2)(stem,-can); hpos(1)(cap_stem,-can);
+filldraw (z1l--z1r--z2r--z2l--cycle);
+filldraw (z1l--z1r--z2r--z2l--cycle) shifted (2u,0);
+filldraw (z1l--z1r--z2r--z2l--cycle) shifted (4u,0);
+endchar;
+
+iff known sign_arrow_left:
+"Left arrow";
+beginchar(sign_arrow_left, 18u#, .8cap_height#,0);
+hpos(1)(stem/cosd(30),can); penpos2(stem/cosd(45),0);hpos(3)(stem/cosd(30),-can);
+penpos4(stem,90); vpos(5)(stem,-can);
+x2l=u; x1=x3; .5[y1l,y3l]=y2; y3l=h; y2=.5cap_height; rt x1l=.3w;
+rt x5r=w-u; y5=y2; z4=z2r;
+filldraw z1l--z2l--z3l--z3r--z2r--z1r--cycle;
+filldraw z4r--z5r--z5l--z4l--cycle;
+penlabels(1,2,3,4,5);
+endchar;
+
+iff known sign_arrow_right:
+"Right arrow";
+beginchar(sign_arrow_right, 18u#, .8cap_height#,0);
+hpos(1)(stem/cosd(30),-can); penpos2(stem/cosd(45),0);hpos(3)(stem/cosd(30),can);
+penpos4(stem,90); vpos(5)(stem,can);
+x2r=w-u; x1=x3; .5[y1r,y3r]=y2; y3r=h; y2=.5cap_height; lft x1r=.7w;
+lft x5l=u; y5=y2; z4=z2l;
+filldraw z1l--z2l--z3l--z3r--z2r--z1r--cycle;
+filldraw z4r--z5r--z5l--z4l--cycle;
+penlabels(1,2,3,4,5);
+endchar;
+
+iff known sign_arrow_left_filled:
+"Filled left arrow";
+beginchar(sign_arrow_left_filled, 18u#, .8cap_height#,0);
+hpos(1)(stem/cosd(30),can); penpos2(stem/cosd(45),0);hpos(3)(stem/cosd(30),-can);
+penpos4(stem,90); vpos(5)(stem,-can);
+x2l=u; x1=x3; .5[y1l,y3l]=y2; y3l=h; y2=.5cap_height; rt x1l=.3w;
+rt x5r=w-u; y4=y5=y2; x4=x3l;
+filldraw z1l--z2l--z3l--z3r--z4r--z5r--z5l--z4l--z1r--cycle;
+penlabels(1,2,3,4,5);
+endchar;
+
+iff known sign_arrow_leftright:
+"Left-right arrow";
+beginchar(sign_arrow_leftright, 18u#, .8cap_height#,0);
+hpos(1)(stem/cosd(30),can); penpos2(stem/cosd(45),0);hpos(3)(stem/cosd(30),-can);
+hpos(6)(stem/cosd(30),-can); penpos7(stem/cosd(45),0);hpos(8)(stem/cosd(30),can);
+penpos4(stem,90); vpos(5)(stem,can);
+x7r=w-u; x6=x8; .5[y6r,y8r]=y7; y8r=h; y7=.5cap_height; lft x6r=.7w;
+x2l=u; x1=x3; .5[y1l,y3l]=y2; y3l=h; y2=.5cap_height; rt x1l=.3w;
+z5=z7l; z4=z2r;
+filldraw z1l--z2l--z3l--z3r--z2r--z1r--cycle;
+filldraw z6l--z7l--z8l--z8r--z7r--z6r--cycle;
+filldraw z4r--z5r--z5l--z4l--cycle;
+penlabels(1,2,3,4,5,6,7,8);
+endchar;
+
+iff known sign_arrow_up:
+"Up arrow";
+beginchar(sign_arrow_up, 10u#, cap_height#,0);
+hpos(1)(stem/cosd(30),-can); penpos2(stem/cosd(60),90);hpos(3)(stem/cosd(30),can);
+penpos4(stem,0); hpos(5)(stem,can);
+y2r=h; y1=y3; .5[x1l,x3r]=x2; rt x3r=w-u; x2=.5w; y1=x_height;
+y5l=0; x5=x2; z4=z2l;
+filldraw z1l--z2r--z3r--z3l--z2l--z1r--cycle;
+filldraw z4r--z5r--z5l--z4l--cycle;
+penlabels(1,2,3,4,5);
+endchar;
+
+iff known sign_arrow_down:
+"Down arrow";
+beginchar(sign_arrow_down, 10u#, cap_height#,0);
+hpos(1)(stem/cosd(30),can); penpos2(stem/cosd(60),90);hpos(3)(stem/cosd(30),-can);
+penpos4(stem,0); hpos(5)(stem,can);
+y2l=0; y1=y3; .5[x1l,x3r]=x2; rt x3r=w-u; x2=.5w; y1=h-x_height;
+y5r=h; x5=x2; z4=z2r;
+filldraw z1l--z2l--z3r--z3l--z2r--z1r--cycle;
+filldraw z4r--z5r--z5l--z4l--cycle;
+penlabels(1,2,3,4,5);
+endchar;
+
+iff known sign_arrow_updown:
+"Up-down arrow";
+beginchar(sign_arrow_updown, 10u#, cap_height#,0);
+hpos(1)(stem/cosd(30),-can); penpos2(stem/cosd(50),90);hpos(3)(stem/cosd(30),can);
+hpos(6)(stem/cosd(30),can); penpos7(stem/cosd(50),90);hpos(8)(stem/cosd(30),-can);
+penpos4(stem,0); hpos(5)(stem,can);
+y2r=h; y1=y3; .5[x1l,x3r]=x2; rt x3r=w-u; x2=.5w; y1=1.2x_height;
+y7l=0; y6=y8; .5[x6l,x8r]=x7; rt x8r=w-u; x7=.5w; y6=h-1.2x_height;
+z5=z7r; z4=z2l;
+filldraw z1l--z2r--z3r--z3l--z2l--z1r--cycle;
+filldraw z6l--z7l--z8r--z8l--z7r--z6r--cycle;
+filldraw z4r--z5r--z5l--z4l--cycle;
+penlabels(1,2,3,4,5);
+endchar;
+
+iff known sign_sum:
+"Sumation sign (text mode)";
+beginchar(sign_sum,14u#, par_height#,desc_depth#);
+vpos(1)(cap_stem,can); vpos(5)(cap_stem,-can); penpos3(cap_stem/cosd(45),180);
+x1r=x5l=w-u; y1r=y2r=h; y4r=y5l=-d; y3=.5(h-d); x3=.65w; x2r=x4r=u; y2l=y1l; y4l=y5r;
+z4'=z4r+((cap_stem,0) rotated (angle((z3r-z4r))-90));
+z2'=z2r+((cap_stem,0) rotated (angle((z3r-z2r))+90));
+z4l=z4'+whatever*(z3r-z4r); z2l=z2'+whatever*(z3r-z2r);
+filldraw z1r--z2r--z3r--z4r--z5l--z5r--z4l--z3l--z2l--z1l--cycle;
+penlabels(1,2,3,4,5); labels(2',4');
+endchar;
+
+iff known sign_integral:
+"Simple integral sign (text mode)";
+beginchar(sign_integral, 6u#,par_height#,desc_depth#);
+penpos1(stem,0); penpos2(stem,0); vpos(3)(stem,can); vpos(3')(stem,-can);
+x1=.5w=x2; y1=0; y2=.8cap_height;path p;
+penpos10(stem,0); penpos11(stem,90); penpos12(stem,0); penpos13(stem,90);
+.5[z10,z12]=.5[z11,z13]; y11=h-.5stem; x10+.5stem=(w+6u)-u; y10=y12; x11=x13; y11-y13=x10-x12; x12-.5stem=2u;
+p:= z10{up}..{left}z11..{down}z12..{right}z13..cycle;
+z3l=z11l; z3'=z13;
+filldraw z3r..z11r{left}..{down}z2l---z1l..{left}((z3'r--z3'l) shifted (z1l-z10l)){right}..z1r--z2r{up}..{right}z11l--cycle;
+penlabels(1,2,3,3');
+endchar;
+
+iff known sign_exist:
+"Exists sign";
+beginchar(sign_exist, 8u#,cap_height#,0);
+hpos(1)(stem,0); hpos(2)(stem,0); vpos(3)(stem,-can); penpos4(stem,90); vpos(5)(stem,0); vpos(6)(stem,can);
+x1r=w-u=x2r; y1=y6l=0; y2r=h; y3r=h; x3r=x6l=u; x2l=x4; y4=y5=.5h; x5=x3;
+filldraw z1r--z2r--z3r--z3l--(x2l,y3l)--z4r--z5r--z5l--z4l--(x1l,y6r)--z6r--z6l--cycle;
+penlabels(1,2,3,4,5,6);
+endchar;
+
+iff known sign_forall:
+"For all sign";
+beginchar(sign_forall, 11u#,cap_height#,2u#);
+numeric theta;
+hpos(1)(stem,-can); hpos(2)(stem,can);
+x1r=w-u; y1l=h=y2r; x2l=u; z3l=(.5w,-d);
+theta:=90+angle(z1r-z3l);
+penpos3(stem/sind(theta),90);
+penpos4(stem,90); penpos5(stem,90);
+y5=y4=.6h; z4=whatever[z2,z3]; z5=whatever[z1,z3];
+filldraw z1l--z3r--z2r--z2l--z3l--z1r--cycle;
+filldraw z4l--z5l--z5r--z4r--cycle;
+penlabels(1,2,3,4,5);
+endchar;
+
+iff known sign_infinity:
+"Infinity";
+beginchar(sign_infinity, 17u#,x_height#,0);
+penpos10(stem,0); penpos11(stem,90); penpos12(stem,180); penpos13(stem,-90);
+penpos20(stem,0); penpos21(stem,90); penpos22(stem,180); penpos23(stem,-90);
+.5[z10,z12]=.5[z11,z13]; y13=y23=.5stem; y10=y20=y12=y22; x11=x13; y11-y13=x10-x12=y21-y23=x20-x22;
+.5[z20,z22]=.5[z21,z23]; x21=x23; x12-.5stem=u; x10=.5w; .5[x12,x20]=.5w;
+filldraw z13r{left}..{up}z12r..{right}z11r..z10r..{right}z23l..{up}z20l..{left}z21l..z22l..{left}z13r--z13l{right}..z22r..z21r{right}..z20r{down}..z23r{left}..z10l..z11l{left}..{down}z12l..{right}z13l--cycle;
+penlabels(10,11,12,13,20,21,22,23);
+endchar;
+
+iff known sign_partial:
+"Partial derivative sign";
+beginchar(sign_partial, 10u#,cap_height#,0);
+.5[z10,z12]=.5[z11,z13]; y13=.5stem; x10+.5stem=w-u; y10=y12; x11=x13; y11-y13=1.1(x10-x12); x12-.5stem=u;
+penpos10(stem,0); penpos11(stem,90); penpos12(stem,180); penpos13(stem,-90);
+filldraw z10r{up}..{left}z11r..{down}z12r..{right}z13r..{up}z10r--z10l{down}..{left}z13l..{up}z12l..{right}z11l..{down}z10l--cycle;
+penpos1(stem,30); vpos(2)(stem,-can);
+x1r=w-2u; y1=.75h; x2l=.3w; y2r=h;
+filldraw z10r{up}..z1r..{left}z2r--z2l{right}..z1l..{down}z10l--cycle;
+penlabels(0,1,2,10,11,12,13);
+endchar;
+
+iff known sign_root:
+"Square root sign";
+beginchar(sign_root, 13u#,par_height#,desc_depth#);
+numeric theta;
+hpos(1)(stem,-can);
+x1r=w-u; y1l=h; z3l=(.5w,-d);
+theta:=90+angle(z1r-z3l);
+penpos3(stem/sind(theta),90);
+x4l=u; y2r=.5cap_height; x2r=4u; z4l=z2r+whatever*dir(angle(z3r-z2r)+90);
+z4r=z4l+stem*dir(angle(z2r-z4l)-90);
+z2l=z4r+whatever*(z2r-z4l)=z3l+whatever*(z2r-z3r);
+filldraw z1l--z3r--z3l--z1r--cycle;
+filldraw z4l--z2r--z3r--z3l--z2l--z4r--cycle;
+penlabels(1,2,3,4,5);
+endchar;
+
+iff known sign_in_set:
+"In set sign";
+beginchar(sign_in_set, 8u#,v_center(.75cap_height#));
+hpos(2)(stem,0); vpos(3)(stem,can); penpos4(stem,90); vpos(5)(stem,0); vpos(6)(stem,-can);
+x2l=u; y1=y6l=-d; z2r=z4; y3r=h; x3r=x6l=w-u; y4=y5=.5(h-d); x5r=x3l;
+filldraw z2l{up}...{right}z3r--z3l{left}..{down}z4r--z5r--z5l--z4l{down}..{right}z6r--z6l{left}...cycle;
+penlabels(2,3,4,5,6);
+endchar;
+
+iff known sign_empty_set:
+"Empty set";
+beginchar(sign_empty_set, fig_width#,cap_height#,0);
+penpos10(stem,0); penpos11(stem,90); penpos12(stem,180); penpos13(stem,-90);
+.5[z10,z12]=.5[z11,z13]; y13=.5stem; y11=h-.5stem; x10+.5stem=w-u; y10=y12; x11=x13; x12-.5stem=u;
+filldraw z10r{up}..{left}z11r..{down}z12r..{right}z13r..{up}z10r--z10l{down}..{left}z13l..{up}z12l..{right}z11l..{down}z10l--cycle;
+hpos(1)(cap_stem,can); hpos(2)(cap_stem,can);
+x1l=u; x2r=w-u; y1l=0; y2r=h;
+filldraw z1l--z2l--z2r--z1r--cycle;
+endchar;
+
+end.
+
diff --git a/fonts/tapir/tap.pfb b/fonts/tapir/tap.pfb
new file mode 100644
index 0000000000..a5859635fe
--- /dev/null
+++ b/fonts/tapir/tap.pfb
Binary files differ