summaryrefslogtreecommitdiff
path: root/fonts/tapir/tap.mf
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/tap.mf
Initial commit
Diffstat (limited to 'fonts/tapir/tap.mf')
-rw-r--r--fonts/tapir/tap.mf3866
1 files changed, 3866 insertions, 0 deletions
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.
+