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.