% Variablen: % sel, sel# Breite eines Sel % las, las# Breite eines Las % nel, nel# Höhe eines Nel % has, has# Tiefe eines Has % innenx halbe Breite eines Sel-Schwunges % curvx Breite einer Ecke % curvy Höhe einer Ecke % uvm. (siehe fuch10.mf) path thp, % der Arbeitspfad ser, % die kleine Serife bigser; % die große Serife % Zeichencodes: def dashq= "0" enddef; def dashh= "1" enddef; def dashd= "2" enddef; def dashf= "3" enddef; def ulosd= "U" enddef; def ulosdl= "4" enddef; def alosd= "A" enddef; def alosdl= "5" enddef; def lingd= "M" enddef; def lingdr= "6" enddef; def gheld= "H" enddef; def gheldr= "7" enddef; def xasd= "X" enddef; def xasdr= "8" enddef; def endulos= "R" enddef; def bindulos= "S" enddef; def endalos= "T" enddef; def bindalos= "9" enddef; def endghel= "V" enddef; def bindghel= "W" enddef; def endxas= "Y" enddef; def bindxas= "Z" enddef; def basleft= "B" enddef; def basmid= "C" enddef; def basright= "D" enddef; def basleftl= "E" enddef; def basrightr= "F" enddef; def basdash= "P" enddef; def zasleft= "I" enddef; def zasmid= "J" enddef; def zasright= "K" enddef; def zasleftl= "L" enddef; def zasrightr="O" enddef; def zasdash= "Q" enddef; %%%% def ww= (w-hspace) enddef; def wwd= (charwd-hspace#) enddef; def wwmwp= (w-hspace-1/2wideplus) enddef; def wwmwpd= (charwd-hspace#-1/2wideplus#) enddef; def wwmwpy= (w-hspace-1/2wideplus-ylosminx) enddef; def wwmwpyd= (charwd-hspace#-1/2wideplus#-ylosminx#) enddef; if unknown drgiven: def dr expr thepath= % malt den Pfad und definiert ihn als p thp:= thepath; thepen; draw thepath; enddef; fi def odr(expr anf, ende)= % malt einen Teil über, falls circumline>epsilon if docircum: theoverpen; erase draw subpath (anf,ende) of thp; thepen; draw subpath (anf-1,ende+1) of thp; fi enddef; def odrr(expr anf, ende, af, ede)= if docircum: theoverpen; erase draw subpath (anf,ende) of thp; thepen; draw subpath (af,ede) of thp; fi enddef; def normdir (expr nr, p)= dir angle direction nr of p enddef; def odrle(expr p,anza,anzb)= % odr lengthen end. Wie thp:= reverse thp; odrr(0,1,0,1); thp:= reverse thp; % aber zusätzlich wird das Ende des Pfades tangential ein wenig verlängert, % um Überstehendes auch frei zu machen. Vor allem für die ulos-, alos- usw. % Sonderzeichen und für ylos. if docircum: theoverpen; erase draw subpath (length p-anza, length p) of p -- point (length p) of p + ueberstand * normdir (length p, p); thepen; draw subpath (length p-anzb, length p) of p; fi enddef; def drawjoint (expr thepath)= if hspace>epsilon: theoverpenhoriz; erase draw (point 0 of thepath)..(point 0 of thepath)+(hspace,0); thepen; draw (point 0 of thepath)..(point 0 of thepath)+(hspace,0); fi enddef; def drawserif (expr thepath, mulx, muly, ende, pp, qq)= % mulx= muly= 1: Serife nach links-oben if serifs: ser:= (point 0 of thepath)+(serifx*mulx,1.5serify*muly).. (point 0 of thepath)+(0,2serify*muly).. (point 0 of thepath)+(-serifx*mulx,serify*muly).. (point 0 of thepath){if mulx>0: right else: left fi}; if ende: thepen; draw ser; theoverpen; erase draw subpath (0,1) of ser; thepen; draw subpath (0,2) of ser; else: thepen; draw ser; theoverpen; erase draw subpath (0,pp) of thepath; thepen; draw subpath (2,3+qq) of (ser&thepath); fi else: ser:= (point 0 of thepath)--(point 0 of thepath)-(serifx*mulx,0); draw ser; % Strich vollenden fi enddef; def drawbigserif (expr mulx, muly, ende)= % mulx= muly= 1: Serife nach links-oben pair startpoint; startpoint:= point infinity of thp; bigser:= startpoint{if mulx>0: left else: right fi}.. startpoint+(-bserifx*mulx,bserify*muly).. startpoint+(0,2bserify*muly){if mulx>0: right else: left fi}; if serifs: draw bigser; drawserif (reverse bigser, -mulx, -muly, ende, 1.5, 2); else: draw subpath (0,1) of bigser; fi enddef; % def widthof (expr thepath)= % hide ( % numeric leastx,mostx,xx; % leastx:= mostx:= xpart (point 0 of thepath); % for i= 1 upto length (thepath)-1: % xx:= xpart (point i of thepath); % if xx > mostx: mostx:= xx; fi % if xx < leastx: leastx:= xx; fi % endfor; % ) % (mostx-leastx) % enddef; % % def ymirrorpath (expr thepath)= % hide (path q; q= thepath xscaled -1;) (q shifted (widthof (thepath), 0)) % enddef; % def wider (expr thepath)= % Vor.: point 0 ist links, point infinity ist rechts % Hängt je einen Punkt an und verbreitert den Buchstaben um penthick (point 0 of thepath).. (thepath shifted (1/2wideplus,0)).. ((point infinity of thepath) shifted (wideplus,0)) enddef; def widerleft (expr thepath)= % Vor.: point 0 ist links % Hängt einen Punkt an und verbreitert den Buchstaben um 1/2penthick (point 0 of thepath).. (thepath shifted (1/2wideplus,0)) enddef; def widerright (expr thepath)= % Vor.: point 0 ist rechts % Hängt einen Punkt an und verbreitert den Buchstaben um 1/2penthick ((point 0 of thepath) shifted (1/2wideplus,0)).. thepath enddef; def mark expr thepath= for i=0 upto length thepath: z[i]= point i of thepath; endfor; labels (range 0 thru length thepath); enddef; def revornot= if rev: thp:= reverse thp; fi enddef; def leftup expr thepath= if chardp>0: hide (vorne:= 2) ((point 0 of thepath) yscaled 0+(0,curvy)){down}.. (point 0 of thepath){down}.. (point 1 of thepath){direction 1 of thepath}& subpath (1,infinity) of thepath else: hide (vorne:= 0) ((point 0 of thepath) yscaled 0-(0,curvy)){up}.. (point 0 of thepath){up}.. (point 1 of thepath){direction 1 of thepath}& subpath (1,infinity) of thepath fi enddef; def rightup expr thepath= if chardp>0: hide (hinten:= 2) subpath (0,length thepath-1) of thepath& {direction length thepath-1 of thepath} (point (length thepath-1) of thepath).. (point infinity of thepath){up}.. ((point infinity of thepath) yscaled 0+(0,curvy)){up} else: hide (hinten:= 0) subpath (0,length thepath-1) of thepath& {direction length thepath-1 of thepath} (point (length thepath-1) of thepath).. (point infinity of thepath){down}.. ((point infinity of thepath) yscaled 0-(0,curvy)){down} fi enddef; def pullpath (expr thepath, wieviel)= ((point 0 of thepath) + (-wieviel,0)) {direction 0 of thepath}.. {direction 1 of thepath}subpath (1, infinity) of thepath; enddef; def killpart (expr thepath, wieviel)= theoverpenvert; erase draw point 0 of thepath-(0,wieviel) -- point 0 of thepath+ (0,if docircum: 0.95wieviel else: 1/2wieviel fi); enddef; def endligchar (expr toleft,toright,toboth, subleftsh,subleft, subrightsh,subright, startpkt,stoppkt, widen,dojoint) (text thetext)= % ,isround` ist speziell für runde Ligaturbuchstaben, bei denen das % Schriftbild sonst gespiegel aussähe. Die Modifikationen sind fast % völlig anders als bei normalen Buchstaben. ,isround` wird von % nel,has,rel und ylos gegeben % !!im Moment gibt es ,isround` nicht und ,widen` wird nicht mehr benutzt!! % sich merken, welcher Punkt links ist (kann leicht erzwungen werden, indem % in ,thetext` rev:= true|false gesetzt wird. boolean rev; rev:= xpart point 0 of thp > xpart point infinity of thp; % Maße des Buchstaben speichern cwd:= charwd; cht:= charht; cdp:= chardp; % zuende malen: thetext; if dojoint: drawjoint ((ww,0)); fi endchar; % Grundbuchstabe ist beendet. % Initialwerte für die Additionswerte: addleftxsh:= addleftx:= addrightxsh:= addrightx:= 0; path thq,thr; % Umdrehen, falls nötig: if rev: thp:= reverse thp; fi thr:= thp; if known toleft: if widen: addrightxsh:= penthick#+circumline#; addrightx:= penthick+circumline; thp:= pullpath (reverse thp, -addrightx); thp:= reverse thp; fi beginchar (toleft,cwd-subleftsh+addrightxsh,cht,cdp); "Lig to the left"; thepen; thq:= leftup subpath (startpkt,infinity) of thp shifted (-subleft,0); draw thq; mark thq; thp:= subpath (vorne-startpkt-1,infinity) of thq; revornot; thetext; if dojoint: drawjoint((ww, 0)); fi thp:= thr; endchar; fi if known toright: if widen: addleftxsh:= penthick#+circumline#; addleftx:= penthick+circumline; thp:= pullpath (thp, addleftx); fi; beginchar (toright,cwd-subrightsh-hspace#+addleftxsh, cht,cdp); "Lig to the right"; thepen; thq:= rightup subpath (0, length thp-stoppkt) of thp shifted (addleftx,0); draw thq; mark thq; thp:= subpath (0,length thq-hinten+stoppkt+1) of thq; revornot; thetext; killpart (reverse thq, if cdp>0: - fi 2curvy); thp:= thr; endchar; fi if known toboth: if widen: addleftxsh:= penthick#+circumline#; addleftx:= penthick+circumline; thp:= pullpath (thp, addleftx); fi; beginchar (toboth,cwd-subleftsh-subrightsh-hspace#+addleftxsh, cht,cdp); "Lig to both sides "; thepen; thq:= (leftup rightup (subpath (startpkt, length thp-stoppkt) of thp)) shifted (-subleft+addleftx,0); draw thq; mark thq; thp:= subpath (vorne-startpkt-1,length thq-hinten+stoppkt+1) of thq; revornot; thetext; killpart (reverse thq, if cdp>0: - fi 2curvy); thp:= thr; endchar; fi enddef; % Maße für Standardbuchstaben: def std= curvx#,curvx,curvx#,curvx,1,1,false,true enddef; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% beginchar(" ",rundx#+hspace#,0,0); "Fukhian space"; endchar; beginchar("s",sel#+hspace#,nel#,0); "Fukhian Sel (standard)"; x1= 0; y1= y0= 0; x2= x1+curvx; y2= y4= curvy; x3= x2+innenx; y3= nel; x4= x3+innenx; x0= x4+curvx; dr z1{right}..z2{up}..z3{right}..z4{down}..z0{right}; penlabels(1,2,3,4,0); endligchar (128,129,130,std,); beginchar("l",las#+hspace#,0,has#); "Fukhian Las (standard)"; x1=0; y1= y0= 0; x4=x2=x3=x1+curvx; y2=y4=-curvy; y3=-has; x0= x4+curvx; dr z1{right}..z2{down}--z3--z4{up}..z0{right}; penlabels(1,2,3,4,0); endligchar (131,132,none,std, odr(2,4); ); beginchar("e",las#+hspace#,nel#,0); "Fukhian Elos (standard)"; x1=0; y1= y0= 0; x4=x2=x3=x1+curvx; y2=y4=+curvy; y3=+nel; x0= x4+curvx; dr z1{right}..z2{up}--z3--z4{down}..z0{right}; penlabels(1,2,3,4,0); endligchar (134,135,none,std, odr(2,4); ); beginchar("i",ilos#+hspace#,nel#,0); "Fukhian Ilos (standard)"; y1=y0=0; y3= y2+curvy; y7= y8= y4= y5= y1+nel; y2= y6= 0; y9= y7-curvy; x1= 0; x2= x7; x6= x8; hat= x7-x4= x5-x8; 0= x2-x1= x0-x6; curvx= x3-x2= x6-x3; x3=x9; dr z2{right}..z3{up}..z9{up}..z7{left}..z4{left}--z5{left}.. z8{left}..z9{down}..z3{down}..z0{right}; penlabels(1,3,4,5,7,8,9,0); endligchar (137,138,none,std, if ilosfull: odr(1,4); odr(5,6); odrr(6,10,6,10); else: odr(8,9); fi ); beginchar("g",ilos#+hspace#,0,has#); "Fukhian gel (standard)"; y1=y0=0; y3= y2-curvy; y7= y8= y4= y5= y1-has; y2= y6= 0; y9= y7+curvy; x1= 0; x2= x7; x6= x8; hat= x7-x4= x5-x8; 0= x2-x1= x0-x6; curvx= x3-x2= x6-x3; x3=x9; dr z2{right}..z3{down}..z9{down}..z7{left}..z4{left}--z5{left}.. z8{left}..z9{up}..z3{up}..z0{right}; penlabels(1,3,4,5,7,8,0); endligchar (140,141,none,std, if ilosfull: odr(1,4); odr(5,6); odrr(6,10,6,10); else: odr(8,9); fi ); beginchar("n",wideplus#+2rundx#+hspace#-2smallerx#, nel#,0); "Fukhian Nel (standard)"; y1= y2= y0= 0; y3= y5= 1/2nel; y4= nel; x1= 0; smallerx= x1-x5= x3-x0; x2= x4; rundx= x2-x5= x3-x2; if stickynel: dr wider (z1{right}..z2..z3..z4..z5..z2..z0{right}); odr(5,7); else: dr wider (z1{right}..z3..z4..z5..z0{right}); odr(4,5); fi penlabels(1,2,3,4,5,0); drawjoint ((ww,0)); endchar; % if stickynel: % endligchar(179,180,none,wwmwpd,wwmwp,wwmwpd,wwmwp,3,3,true,true, % odr (5,7); % ) % else: % endligchar(179,180,none,wwmwpd,wwmwp,wwmwpd,wwmwp,2,2,true,true, % odr (3,5); % ) % fi; beginchar("f",sel#+hspace#,0,rel#); "Fukhian Fas (standard)"; y1= y0= 0; y2= y4= -curvy; y3= -rel; x1= 0; x2= x1+curvx; x3= x2+innenx; x4= x3+innenx; x0= x4+curvx; dr z1{right}..z2{down}..z3{right}..z4{up}..z0{right}; penlabels(1,2,3,4,0); endligchar (146,147,148,std,); beginchar("r",wideplus#+2rundx#+hspace#-2smallerx#, 0,rel#); "Fukhian Rel (standard)"; y1= y2= y0= 0; y3= y5= -1/2rel; y4= -rel; x1= 0; smallerx= x1-x5= x3-x0; x2= x4; rundx= x2-x5= x3-x2; if stickynel: dr wider (z1{right}..z2..z3..z4..z5..z2..z0{right}); odr (5,7); else: dr wider (z1{right}..z3..z4..z5..z0{right}); odr (3,5); fi penlabels(1,2,3,4,5,0); drawjoint((ww,0)); endchar; beginchar("m",sel#+hspace#,0,has#); "Fukhian Mas (standard)"; y1= y0= 0; y2= y4= -curvy; y3= -has; x1= 0; x2= x1+curvx; x3= x2+innenx; x4= x3+innenx; x0= x4+curvx; dr z1{right}..z2{down}..z3{right}..z4{up}..z0{right}; penlabels(1,2,3,4,0); endligchar(152,153,154,std,); beginchar("u",ulos#+hspace#,0,has#); "Fukhian Ulos (standard)"; y1= y2= 0; y3= -uloshalby; y4= -has; y0= -has; x1= 0; x2= x1+ulosofsxo; x3= x2+ulosradx; x0= x1-ulosofsxs; x4= x0+ulosofsxu; dr z1{right}..z2{right}..z3{down}..z4..z0{left}; penlabels(1,2,3,4,0); endligchar(155,none,none,wwd,ww,0,0,2,1,false,false, rev:= false; drawserif (reverse thp, 1, 1, true, 1.5, 1.7); ); beginchar(ulosd,ulos#+hspace#,0,has#); "Fukhian Ulos, variation"; y1= y2= 0; y3= -uloshalby; y4= -has; y0= -has; y5= -has+deltaaddy; x1= 0; x2= x1+ulosofsxo; x3= x2+ulosradx; x0= x1-ulosofsxs; x4= x0+ulosofsxu; x5= w; dr z1{right}..z2{right}..z3{down}..z4..z0{left}..z0{right}..z5{deltaru}; penlabels(1,2,3,4,5,0); endligchar(ulosdl,none,none,wwd,ww,0,0,2,1,false,false, odrle(thp,1,1); ); beginchar(endulos,deltawidth#+ulos#+hspace#,0,has#); "End to an Ulos"; y1= y2= -has+deltaaddy; y3= y4+deltaaddx; y4= -has; y0= -has; x1= 0; x2= x1+ulosofsxo; x3= x2+ulosradx+deltawidth; x0= x1-ulosofsxs+deltawidth+deltaligx; x4= x0+ulosofsxu; if deltabaseline: thepen; draw (0,0) -- (w,0); fi dr z1{deltaru}..z2{deltaru}..z3..z4..z0{left}; penlabels(1,2,3,4,0); endligchar(none,none,none,wwd,ww,0,0,2,1,false,false, rev:= false; drawserif (reverse thp, 1, 1, true, 1.5, 1.7); ); beginchar(bindulos,deltawidth#+ulos#+hspace#,0,has#); "Middle piece for an Ulos"; y1= y2= -has+deltaaddy; y3= y4+deltaaddx; y4= -has; y0= -has; y5= -has+deltaaddy; x1= 0; x2= x1+ulosofsxo; x3= x2+ulosradx+deltawidth; x0= x1-ulosofsxs+deltawidth+deltaligx; x4= x0+ulosofsxu; x5= w; if deltabaseline: thepen; draw (0,0) -- (w,0); fi dr z1{deltaru}..z2{deltaru}..z3..z4..z0{left}..z0{right}..z5{deltaru}; penlabels(1,2,3,4,5,0); endligchar(none,none,none,wwd,ww,0,0,2,1,false,false, odrle(thp,1,1); ); beginchar("o",olos#+hspace#,0,has#); "Fukhian olos (standard)"; y1= y0= 0; y7= y2= -curvy; y6= y3= -has; olosrady= y5-y6= y4-y5; x1= 0; x3= x2+innenx; olosradx= x5-x6= x5-x4; olosinnenx= x6-x3; x0= x5; curvx= x2-x1; 2olosradx=x0-x7; dr z1{right}..z2{down}..z3..z4..z5..z6..z7..z0{right}; penlabels(1,2,3,4,5,6,7,0); endligchar(158,159,160,curvx#,curvx,2olosradx#,2olosradx,1,1,false,true, odr(5,6); ); beginchar("a",ulos#+hspace#,nel#,0); "Fukhian alos (standard)"; y1= y2= 0; y3= uloshalby; y4= nel; y0= nel; x1= 0; x2= x1+ulosofsxo; x3= x2+ulosradx; x0= x1-ulosofsxs; x4= x0+ulosofsxu; dr z1{right}..z2{right}..z3{up}..z4..z0{left}; penlabels(1,2,3,4,0); endligchar(161,none,none,wwd,ww,0,0,2,1,false,false, rev:= false; drawserif (reverse thp, 1, -1, true, 1.5, 1.7); ); beginchar(alosd,ulos#+hspace#,nel#,0); "Fukhian Alos, variation"; y1= y2= 0; y3= uloshalby; y4= nel; y0= nel; y5= nel-deltaaddy; x1= 0; x2= x1+ulosofsxo; x3= x2+ulosradx; x0= x1-ulosofsxs; x4= x0+ulosofsxu; x5= w; dr z1{right}..z2{right}..z3{up}..z4..z0{left}..z0{right}..z5{deltard}; penlabels(1,2,3,4,5,0); endligchar(alosdl,none,none,wwd,ww,0,0,2,1,false,false, rev:= false; odrle(thp,1,1); ); beginchar(endalos,deltawidth#+ulos#+hspace#,nel#,0); "End for an alos"; y1= y2= nel-deltaaddy; y3= y4-deltaaddx; y4= nel; y0= nel; x1= 0; x2= x1+ulosofsxo; x3= x2+ulosradx+deltawidth; x0= x1-ulosofsxs+deltawidth+deltaligx; x4= x0+ulosofsxu; if deltabaseline: thepen; draw (0,0) -- (w,0); fi dr z1{deltard}..z2{deltard}..z3..z4..z0{left}; penlabels(1,2,3,4,0); endligchar(none,none,none,wwd,ww,0,0,2,1,false,false, rev:= false; drawserif (reverse thp, 1, -1, true, 1.5, 1.7); ); beginchar(bindalos,deltawidth#+ulos#+hspace#,nel#,0); "Middle piece for an alos"; y1= y2= nel-deltaaddy; y3= y4-deltaaddx; y4= nel; y0= nel; y5= nel-deltaaddy; x1= 0; x2= x1+ulosofsxo; x3= x2+ulosradx+deltawidth; x0= x1-ulosofsxs+deltawidth+deltaligx; x4= x0+ulosofsxu; x5= w; if deltabaseline: thepen; draw (0,0) -- (w,0); fi dr z1{deltard}..z2{deltard}..z3..z4..z0{left}..z0{right}..z5{deltard}; penlabels(1,2,3,4,5,0); endligchar(none,none,none,wwd,ww,0,0,2,1,false,false, odrle(thp,1,1); ); beginchar("c",olos#+hspace#,0,has#); "Fukhian cas (standard)"; y1= y0= 0; y7= y2= -curvy; y6= y3= -has; olosrady= y5-y6= y4-y5; x1= olos; x3= x2-innenx; -olosradx= x5-x6= x5-x4; -olosinnenx= x6-x3; x0= x5; -curvx= x2-x1; -2olosradx=x0-x7; dr z1{left}..z2{down}..z3..z4..z5..z6..z7..z0{left}; penlabels (1,2,3,4,5,6,7,0); endligchar(164,165,166,2olosradx#,2olosradx,curvx#,curvx,1,1,false,true, odr(2,3); ); beginchar("j",zhel#+hspace#,0,has#); "Fukhian Jel (standard)"; y1=y0=0; y9= y3= y2-curvy; y7= y8= y4= y5= y1-has; y2= y6= 0; x1= 0; x2= x7; x6= x8; zhelinnenx= x9-x3; hat= x7-x4= x5-x8; 0= x2-x1= x0-x6; curvx= x3-x2= x6-x9; dr z1{right}..z3{down}..z7{left}..z4{left}--z5{left}.. z8{left}..z9{up}..z0{right}; penlabels(1,2,3,4,5,6,7,8,9,0); endligchar(167,168,169,std, if ilosfull: odr(4,5); odr(6,8); fi ); beginchar("d",las#+hspace#,0,rel#); "Fukhian das (standard)"; x1=0; y1= y0= 0; x4=x2=x3=x1+curvx; y2=y4=-curvy; y3=-rel; x0= x4+curvx; dr z1{right}..z2{down}--z3--z4{up}..z0{right}; penlabels(1,2,3,4,0); endligchar(170,171,none,std, odr(2,4); ); beginchar("N",ulos#+hspace#,0,rel#); "Fukhian liN (standard)"; y1= y2= 0; y3= -7/20d; %uloshalby/has*rel; y4= -rel; y0= -rel; x1= ulos; x2= x1-ulosofsxo; x3= x2-ulosradx+linginnenx; x0= x1+ulosofsxs; x4= x0-ulosofsxu; path help; help:= z1{left}..z2{left}..{right}z3{left}..z4..z0{right}; z5= directionpoint down of subpath(1,2) of help; dr subpath (0,1) of help.. z5{down}.. {right}subpath (2,infinity) of help; penlabels(1,2,3,4,5,0); endligchar(none,174,none,0,0, (ww-x5)/hppp,(ww-x5),1,1.99,false,true, rev:= true; odrr(1,3,0,3); drawserif (reverse thp, -1, 1, false, 1.5, 1.7); ); beginchar(lingd,ulos#+hspace#,0,rel#); "Fukhian liN, variation"; y1= y2= 0; y3= -7/20d; %uloshalby/has*rel; y4= -rel; y0= -rel; y6= -rel+deltaaddy; x1= ulos; x2= x1-ulosofsxo; x3= x2-ulosradx+linginnenx; x0= x1+ulosofsxs; x4= x0-ulosofsxu; x6= 0; path help; help:= z1{left}..z2{left}..{right}z3{left}..z4..z0{right} ..z0{left}..(z6+2deltaling*unit){deltaling}; z5= directionpoint down of subpath(1,2) of help; dr subpath (0,1) of help.. z5{down}.. {right}subpath (2,infinity) of help; penlabels(1,2,3,4,5,6,0); endligchar(none,lingdr,none,0,0, (ww-x5)/hppp,(ww-x5),1,1.99,false,true, rev:= true; odrr(3,4,3,4); odrr(1,3,0,3); ); beginchar("z",las#+hspace#,0,rel#); "Fukhian zas (standard)"; y1= y0= 0; y2=y4=-curvy; y3=-rel+olosrady; olosrady= y3-y5= y6-y5= y8-y5= y8-y9= y7-y3; x1=0; x4=x2=x3=x1+curvx; x0= x4+curvx; olosradx= x3-x5= x5-x6= x9-x3= x8-x9= x7-x5; dr z1{right}..z2{down}..{down}z3.. z5..z6..z7..z8..z9.. {up}z3..z4{up}..z0{right}; penlabels(1,2,3,4,5,6,7,8,9,0); endligchar(188,189,none,std, odr(7,10) ); beginchar(zasright,las#+hspace#,0,rel#); "Fukhian zas, right side only"; y1= y0= 0; y2=y4=-curvy; y3=-rel+olosrady; olosrady= y3-y9= y8-y9= y7-y3; x1=0; x4=x2=x3=x1+curvx; x0= x4+curvx; olosradx= x9-x3= x8-x9= x9-x7; x5= x1-deltabasx; y5= y7; dr z5{right}..z7{right}..z8..z9.. {up}z3..z4{up}..z0{right}; penlabels(1,2,3,4,5,6,7,8,9,0); endligchar(none,zasrightr,none,std, odrle(thp,2,3) ); beginchar(zasleft,las#+hspace#,0,rel#); "Fukhian zas, left side only"; y1= y0= 0; y2=y4=-curvy; y3=-rel+olosrady; olosrady= y3-y5= y6-y5= y7-y3; x1=0; x4=x2=x3=x1+curvx; x0= x4+curvx; olosradx= x3-x5= x5-x6= x7-x5; x8= x0; y8= y7; z9= z8-(deltabasx, 0); dr z1{right}..z2{down}..{down}z3.. z5..z6..z7{right}..z9{right} penlabels(1,2,3,4,5,6,7,8,9,0); endligchar(zasleftl,none,none,std, odrle(thp,2,3); ); beginchar(zasmid,las#+hspace#,0,rel#); "Fukhian zas, middle part only"; y1= y0= -rel+2olosrady; y3= -rel; y4= y5= -rel+olosrady; x1= -deltabasx; x0= w-deltabasx; x4= 1/2w-curvx; x5= 1/2w+curvx; x3= 1/2w; dr z1{right}..z5..z3..z4..z0{right}; penlabels(1,3,4,5,0); endligchar(none,none,none,std, odrle(thp,1,2); ); beginchar(basdash,basdashx#+hspace#,0,rel#); "Fukhian zas-dash"; y1= y0= -rel+2olosrady; x1= -deltabasx; x0= w-deltabasx; dr z1{right}..z0{right}; endligchar(none,none,none,std, ); beginchar("h",wideplus#+2rundx#+hspace#-2smallerx#, 0,has#); "Fukhian Has (standard)"; y1= y2= y0= 0; y3= y5= -1/2has; y4= -has; x1= 0; smallerx= x1-x5= x3-x0; x2= x4; rundx= x2-x5= x3-x2; if stickynel: dr wider (z1{right}..z2..z3..z4..z5..z2..z0{right}); odrle(thp,2,3); else: dr wider (z1{right}..z3..z4..z5..z0{right}); odrle(thp,2,3); fi penlabels(1,2,3,4,5,0); drawjoint((ww,0)); endchar; beginchar("G",ulos#+hspace#,0,has#); "Fukhian Gel (standard)"; y1= y2= 0; y3= -uloshalby; y4= -has; y0= -has; x1= ulos; x2= x1-ulosofsxo; x3= x2-ulosradx; x0= x1+ulosofsxs; x4= x0-ulosofsxu; dr z1{left}..z2{left}..z3{down}..z4..z0{right}; penlabels(1,2,3,4,0); endligchar(none,183,none,0,0,wwd,ww,2,2,false,true, rev:= true; drawserif (reverse thp, -1, 1, false, 1.5, 1.7); ); beginchar(gheld,ulos#+hspace#,0,has#); "Fukhian Gel, variation"; y1= y2= 0; y3= -uloshalby; y4= -has; y0= -has; y5= -has+deltaaddy; x1= ulos; x2= x1-ulosofsxo; x3= x2-ulosradx; x0= x1+ulosofsxs; x4= x0-ulosofsxu; x5= 0; dr z1{left}..z2{left}..z3{down}..z4..z0{right}..z0{left}.. (z5+2deltalu*unit){deltalu}; penlabels(1,2,3,4,5,0); endligchar(none,gheldr,none,0,0,wwd,ww,2,2,false,false, rev:= true; odr(1,3); ); beginchar(endghel,deltawidth#+ulos#+hspace#,0,has#); "End to a Gel"; y1= y2= -has+deltaaddy; y3= y4+deltaaddx; y4= -has; y0= -has; x1= w; x2= x1-ulosofsxo; x3= x2-ulosradx-deltawidth; x0= x1+ulosofsxs-deltawidth-deltaligx; x4= x0-ulosofsxu; if deltabaseline: thepen; draw (0,0) -- (w,0); fi dr (z1+2deltalu*unit){deltalu}..(z2+2deltalu*unit){deltalu}..z3..z4..z0{right}; penlabels(1,2,3,4,0); endligchar(none,none,none,wwd,ww,0,0,2,1,false,false, rev:= true; drawserif (reverse thp, -1, 1, false, 1.5, 1.7); ); beginchar(bindghel,deltawidth#+ulos#+hspace#,0,has#); "Middle piece for a Gel"; y1= y2= -has+deltaaddy; y3= y4+deltaaddx; y4= -has; y0= -has; y5= -has+deltaaddy; x1= w; x2= x1-ulosofsxo; x3= x2-ulosradx-deltawidth; x0= x1+ulosofsxs-deltawidth-deltaligx; x4= x0-ulosofsxu; x5= 0; if deltabaseline: thepen; draw (0,0) -- (w,0); fi dr (z1+2deltalu*unit){deltalu}..(z2+2deltalu*unit){deltalu}..z3..z4.. z0{right}..z0{left}..(z5+2deltalu*unit){deltalu}; penlabels(1,2,3,4,5,0); endligchar(none,none,none,wwd,ww,0,0,2,1,false,false, rev:= false; odr(1,3); ); beginchar("x",ulos#+hspace#,0,rel#); "Fukhian xas (standard)"; y1= y2= 0; y3= -uloshalby/has*rel; y4= -rel; y0= -rel; x1= ulos; x2= x1-ulosofsxo; x3= x2-ulosradx; x0= x1+ulosofsxs; x4= x0-ulosofsxu; dr z1{left}..z2{left}..z3{down}..z4..z0{right}; penlabels(1,2,3,4,0); endligchar(none,186,none,0,0,wwd,ww,2,2,false,true, rev:= true; drawserif (reverse thp, -1, 1, false, 1.5, 1.7); ); beginchar(xasd,ulos#+hspace#,0,rel#); "Fukhian xas, variation"; y1= y2= 0; y3= -uloshalby/has*rel; y4= -rel; y0= -rel; y5= -rel+deltaaddy; x1= ulos; x2= x1-ulosofsxo; x3= x2-ulosradx; x0= x1+ulosofsxs; x4= x0-ulosofsxu; x5= 0; dr z1{left}..z2{left}..z3{down}..z4..z0{right}..z0{left}.. (z5+2deltaling*unit){deltaling}; penlabels(1,2,3,4,5,0); endligchar(none,xasdr,none,0,0,wwd,ww,2,2,false,false, rev:= true; odr(1,3); ); beginchar(endxas,deltawidth#+ulos#+hspace#,0,rel#+deltaaddyling#); "End to a xas"; y1= y2= -rel+deltaaddy; y3= y4+deltaaddx; y4= -rel-deltaaddyling; y0= -rel-deltaaddyling; x1= w; x2= x1-ulosofsxo; x3= x2-ulosradx-deltawidth; x0= x1+ulosofsxs-deltawidth-deltaligx; x4= x0-ulosofsxu; if deltabaseline: thepen; draw (0,0) -- (w,0); fi dr (z1+2deltaling*unit){deltaling}..(z2+2deltaling*unit){deltaling}..z3..z4..z0{right}; penlabels(1,2,3,4,0); endligchar(none,none,none,wwd,ww,0,0,2,1,false,false, rev:= true; drawserif (reverse thp, -1, 1, false, 1.5, 1.7); ); beginchar(bindxas,deltawidth#+ulos#+hspace#,0,rel#+deltaaddyling#); "Middle piece for a xas"; y1= y2= -rel+deltaaddy; y3= y4+deltaaddx; y4= -rel-deltaaddyling; y0= -rel-deltaaddyling; y5= -rel+deltaaddy; x1= w; x2= x1-ulosofsxo; x3= x2-ulosradx-deltawidth; x0= x1+ulosofsxs-deltawidth-deltaligx; x4= x0-ulosofsxu; x5= 0; if deltabaseline: thepen; draw (0,0) -- (w,0); fi dr (z1+2deltaling*unit){deltaling}..(z2+2deltaling*unit){deltaling}..z3..z4.. z0{right}..z0{left}..(z5+2deltaling*unit){deltaling}; penlabels(1,2,3,4,5,0); endligchar(none,none,none,wwd,ww,0,0,2,1,false,false, rev:= false; odr(1,3); ); beginchar("b",las#+hspace#,0,has#); "Fukhian bas (standard)"; y1= y0= 0; y2=y4=-curvy; y3=-has+olosrady; olosrady= y3-y5= y6-y5= y8-y5= y8-y9= y7-y3; x1=0; x4=x2=x3=x1+curvx; x0= x4+curvx; olosradx= x3-x5= x5-x6= x9-x3= x8-x9= x7-x5; dr z1{right}..z2{down}..{down}z3.. z5..z6..z7..z8..z9.. {up}z3..z4{up}..z0{right}; penlabels(1,2,3,4,5,6,7,8,9,0); endligchar(176,177,none,std, odr(7,10) ); beginchar(basright,las#+hspace#,0,has#); "Fukhian bas, right side only"; y1= y0= 0; y2=y4=-curvy; y3=-has+olosrady; olosrady= y3-y9= y8-y9= y7-y3; x1=0; x4=x2=x3=x1+curvx; x0= x4+curvx; olosradx= x9-x3= x8-x9= x9-x7; x5= x1-deltabasx; y5= y7; dr z5{right}..z7{right}..z8..z9.. {up}z3..z4{up}..z0{right}; penlabels(1,2,3,4,5,6,7,8,9,0); endligchar(none,basrightr,none,std, odrle(thp,2,3) ); beginchar(basleft,las#+hspace#,0,has#); "Fukhian bas, left side only"; y1= y0= 0; y2=y4=-curvy; y3=-has+olosrady; olosrady= y3-y5= y6-y5= y7-y3; x1=0; x4=x2=x3=x1+curvx; x0= x4+curvx; olosradx= x3-x5= x5-x6= x7-x5; x8= x0; y8= y7; z9= z8-(deltabasx, 0); dr z1{right}..z2{down}..{down}z3.. z5..z6..z7{right}..z9{right} penlabels(1,2,3,4,5,6,7,8,9,0); endligchar(basleftl,none,none,std, odrle(thp,2,3); ); beginchar(basdash,basdashx#+hspace#,0,has#); "Fukhian bas-dash"; y1= y0= -has+2olosrady; x1= -deltabasx; x0= w-deltabasx; dr z1{right}..z0{right}; endligchar(none,none,none,std, ); beginchar(basmid,las#+hspace#,0,has#); "Fukhian bas, middle part only"; y1= y0= -has+2olosrady; y3= -has; y4= y5= -has+olosrady; x1= -deltabasx; x0= w-deltabasx; x4= 1/2w-curvx; x5= 1/2w+curvx; x3= 1/2w; dr z1{right}..z5..z3..z4..z0{right}; penlabels(1,3,4,5,0); endligchar(none,none,none,std, odrle(thp,1,2); ); beginchar("y",wideplus#+2rundx#+hspace#-2smallerx#, 0,rel#); "Fukhian Ylos (standard)"; y1= y2= y0= 0; y3= y5= y0-1/4rel; y4= -1/2rel+ylosminy; y7= -rel; y8= y6= 1/2[y7,y4]; x1= 0; -smallerx= x6-x1= x0-x8; ylosminx= x5-x6= x8-x3; x7= x2= x4; rundx= x2-x6= x8-x2; if stickynel: dr wider (z1{right}..z2..z3..z4..z6..z7..z8..z4..z5..z2..z0{right}); odrle(thp,5,6); else: dr wider (z1{right}..z3..z4..z6..z7..z8..z4..z5..z0{right}); odrle(thp,4,5); fi penlabels(1,2,3,4,5,6,7,8,0); drawjoint ((ww,0)); endchar; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% beginchar("-",curvx#+hspace#,0,0); "Fukhian Dash"; y1= y0= 0; x1= 0; x0= x1+curvx; dr z1--z0; penlabels(1,0); drawjoint((ww,0)); endchar; beginchar(dashq,1/4*curvx#+hspace#,0,0); "Fukhian Quarter Dash"; y1= y0= 0; x1= 0; x0= x1+1/4*curvx; dr z1--z0; penlabels(1,0); drawjoint((ww,0)); endchar; beginchar(dashh,1/2*curvx#+hspace#,0,0); "Fukhian Half Dash"; y1= y0= 0; x1= 0; x0= x1+1/2*curvx; dr z1--z0; penlabels(1,0); drawjoint((ww,0)); endchar; beginchar(dashd,2*curvx#+hspace#,0,0); "Fukhian Double Dash"; y1= y0= 0; x1= 0; x0= x1+2*curvx; dr z1--z0; penlabels(1,0); drawjoint((ww,0)); endchar; beginchar(dashf,4*curvx#+hspace#,0,0); "Fukhian Fourtimes Dash"; y1= y0= 0; x1= 0; x0= x1+4*curvx; dr z1--z0; penlabels(1,0); drawjoint((ww,0)); endchar; beginchar("(",sandigh#+hspace#,0,songdigh#); "Fukhian soNdiG"; y1= 0; y2= -1/2d; y0= -d; x1= ww; ww= x1-x2; bserifx= x1-x0; dr z1{left}..z2..z0{right}; drawbigserif (-1, 1, false); penlabels(1,2,0); drawjoint((ww,0)); endchar; beginchar(")",sandigh#+hspace#,0,songdigh#); "Fukhian sandiG"; y1= 0; y2= -1/2d; y0= -d; x1= 0; -ww= x1-x2; -bserifx= x1-x0; dr z1{right}..z2..z0{left}; drawbigserif (1, 1, true); penlabels(1,2,0); %drawjoint(thp); endchar; beginchar(0,sandighb#+hspace#,0,songdigh#); "Fukhian songdiG 2"; y1= 0; y2= -3/7d; y0= -d; x1= ww; sandigh-zweitinnenx= x1-x2; bserifx= x1-x0; dr z1{left}..{right}z2{left}..z0{right}; odrr(0,1,0,1); drawbigserif (-1, 1, false); penlabels(1,2,3,4,0); drawjoint(thp); endchar; beginchar(1,sandighb#+hspace#,0,songdigh#); "Fukhian sandiG 2"; y1= 0; y2= -3/7d; y0= -d; x1= 0; -(sandigh-zweitinnenx)= x1-x2; -bserifx= x1-x0; dr z1{right}..{left}z2{right}..z0{left}; odrr(1,2,1,2); drawbigserif (1, 1, true); penlabels(1,2,3,4,0); %drawjoint(thp); endchar; beginchar("[",1/2wideplus#+flungdigh#+hspace#, nel#,songdigh#); "Fukhian fluNdiG"; y1= y6= 0; y2= 1/2h; y3= h; y4= 0; y5= -3/7d; y0= -d; x1= wwmwp; wwmwp= x1-x6; 2rundx+unit= x1-x2; unit= x1-x4; x3= 1/2[x6,x4]; x5= x4; bserifx= x0-x6; dr widerright (z1{left}..z2..z3..z4..z5..z0{left}); odr(0,2); drawbigserif(1, 1, false); penlabels(1,2,3,4,5,6,0); drawjoint(thp); endchar; beginchar("]",1/2wideplus#+flungdigh#+hspace#, nel#,songdigh#); "Fukhian fluNsandiG"; y1= y6= 0; y2= 1/2h; y3= h; y4= 0; y5= -3/7d; y0= -d; x1= 0; -wwmwp= x1-x6; -(2rundx+unit)= x1-x2; -unit= x1-x4; x3= 1/2[x6,x4]; x5= x4; -bserifx= x0-x6; dr widerleft (z1{right}..z2..z3..z4..z5..z0{right}); odr(3,5); drawbigserif(-1, 1, true); penlabels(1,2,3,4,5,6,0); %drawjoint(thp); endchar; beginchar(2,1/2wideplus#+flungdigh#+hspace#, nel#,songdigh#); "Fukhian fluNdiG 2"; y1= y6= 0; y2= 1/2h; y3= h; y4= 0; y5= -3/7d; y0= -d; x1= wwmwp; wwmwp= x1-x6; 2rundx+unit= x1-x2; unit= x1-x4; x3= 1/2[x6,x4]; zweitinnenx= x4-x5; bserifx= x0-x6; dr widerright (z1{left}..z2..z3..z4..{left}z5{right}..z0{left}); odrr(4,5,4,5) odr(0,2); drawbigserif(1, 1, false); penlabels(1,2,3,4,5,6,0); drawjoint(thp); endchar; beginchar(3,1/2wideplus#+flungdigh#+hspace#, nel#,songdigh#); "Fukhian fluNsandiG 2"; y1= y6= 0; y2= 1/2h; y3= h; y4= 0; y5= -3/7d; y0= -d; x1= 0; -wwmwp= x1-x6; -(2rundx+unit)= x1-x2; -unit= x1-x4; x3= 1/2[x6,x4]; -zweitinnenx= x4-x5; -bserifx= x0-x6; dr widerleft (z1{right}..z2..z3..z4..{right}z5{left}..z0{right}); odr(3,4.5); odrr(5,6,5,7); drawbigserif(-1, 1, true); penlabels(1,2,3,4,5,6,0); %drawjoint(thp); endchar; beginchar("`",2rundx#+unit#+hspace#,nel#,0); "Fukhian buldiG"; y1= y6= 0; y2= 1/2h; y0= y3= h; y4= 0; x1= ww; ww= x1-x6; 2rundx+unit= x1-x2; unit= x1-x4; x3= 1/2[x6,x4]; unit= x0-x3; dr z1{left}..z2..z3..z0{right}; drawbigserif(-1, -1, false); penlabels(1,2,3,4,6,0); drawjoint(thp); endchar; beginchar("'",2rundx#+unit#+hspace#,nel#,0); "Fukhian bulsandiG"; y1= y6= 0; y2= 1/2h; y0= y3= h; y4= 0; x1= 0; -ww= x1-x6; -(2rundx+unit)= x1-x2; -unit= x1-x4; x3= 1/2[x6,x4]; -unit= x0-x3; dr z1{right}..z2..z3..z0{left}; drawbigserif(1, -1, true); penlabels(1,2,3,4,6,0); %drawjoint(thp); endchar; beginchar("<",1/2wideplus#+flungdigh#+hspace#, nel#,songdigh#); "Fukhian fursandiG"; y1= y6= 0; y2= 1/2h; y3= h; y4= 0; y5= -5/14d; y0= -d; furrady= y5-y7= y8-y5; x1= wwmwp; wwmwp= x1-x6; 2rundx+unit= x1-x2; unit= x1-x4; x3= 1/2[x6,x4]; zweitinnenx=x4-x7= x4-x8; (zweitinnenx+furradx)= x4-x5; bserifx= x0-x6; dr widerright (z1{left}..z2..z3..z4..z7..z5..z8..tension 1.2..z0{left}); odr(4,5); odr(0,2); drawbigserif(1, 1, false); penlabels(1,2,3,4,5,6,7,8,0); drawjoint(thp); endchar; beginchar(">",1/2wideplus#+flungdigh#+hspace#, nel#,songdigh#); "Fukhian furdiG"; y1= y6= 0; y2= 1/2h; y3= h; y4= 0; y5= -5/14d; y0= -d; furrady= y5-y7= y8-y5; x1= 0; -wwmwp= x1-x6; -(2rundx+unit)= x1-x2; -unit= x1-x4; x3= 1/2[x6,x4]; -zweitinnenx=x4-x7= x4-x8; -(zweitinnenx+furradx)= x4-x5; -bserifx= x0-x6; dr widerleft (z1{right}..z2..z3..z4..z7..z5..z8..tension 1.2..z0{right}); odr(3,5); odr(7,8); drawbigserif(-1, 1, true); penlabels(1,2,3,4,5,6,7,8,0); %drawjoint(thp); endchar; beginchar(4,1/2wideplus#+flungdigh#+hspace#,nel#,has#); "Fukhian gahdiG"; y1= y6= 0; y2= -1/2d; y3= -d; y4= 0; y0= h; x1= wwmwp; wwmwp= x1-x6; 2rundx+unit= x1-x2; unit= x1-x4; x3= 1/2[x6,x4]; bserifx= x0-x6; dr widerright (z1{left}..z2..z3..z4..z0{left}); odr(0,2); drawbigserif(1, -1, false); penlabels(1,2,3,4,6,0); drawjoint(thp); endchar; beginchar(5,1/2wideplus#+flungdigh#+hspace#,nel#,has#); "Fukhian gahsandiG"; y1= y6= 0; y2= -1/2d; y3= -d; y4= 0; y0= h; x1= 0; -wwmwp= x1-x6; -(2rundx+unit)= x1-x2; -unit= x1-x4; x3= 1/2[x6,x4]; -bserifx= x0-x6; dr widerleft (z1{right}..z2..z3..z4..z0{right}); odr(3,5); drawbigserif(-1, -1, true); penlabels(1,2,3,4,6,0); %drawjoint(thp); endchar; beginchar(6,1/2wideplus#+flungdigh#+hspace#, nel#,songdigh#); "Fukhian reserve("; y1= y6= 0; y2= 1/2h; y3= h; y4= 0; y5= -5/7d; y0= -d; x1= wwmwp; wwmwp= x1-x6; 2rundx+unit= x1-x2; unit= x1-x4; x3= 1/2[x6,x4]; x5= x6; -bserifx= x0-x1; dr widerright (z1{left}..z2..z3..z4..z5..z0+unit*left..z0{right}); odr(0,2); drawbigserif(-1, 1, false); penlabels(1,2,3,4,5,6,0); drawjoint(thp); endchar; beginchar(7,1/2wideplus#+flungdigh#+hspace#, nel#,songdigh#); "Fukhian reserve)"; y1= y6= 0; y2= 1/2h; y3= h; y4= 0; y5= -5/7d; y0= -d; x6= w; -wwmwp= x1-x6; -2rundx-unit= x1-x2; -unit= x1-x4; x3= 1/2[x6,x4]; x5= x6; bserifx= x0-x1; dr widerright (z1{right}..z2..z3..z4..z5..z0+unit*right..z0{left}); odr(3,5); drawbigserif(1, 1, true); penlabels(1,2,3,4,5,6,0); %drawjoint(thp); endchar; beginchar("|",2*curvx#+2*bserifx#+hspace#,nel#,rel#); "Fukhian separator"; z1= (0,0); z0= (w,0); z8= z0-(hspace,0); dr z0--z1; % Verbindung z2= (1/2[x1,x8],h); z3= (1/2[x1,x8],-d); if serifs: z4= z2-(0,curvy); z5= z3+(0,curvy); z6= z4+(curvx,curvy); z7= z5-(curvx,curvy); dr z6{left}..z4..z5..z7{left}; drawserif (thp, -1,-1,false,1,2); odr (1,2); drawserif (reverse thp, 1,1,true,1,2); penlabels (1,2,3,4,5,6,8,0); else: dr z2--z3; odr (0,1); penlabels (1,2,3,0); fi endchar; beginchar("~",nel#+hspace#,0,0); "fixed space"; endchar; beginchar("*",0,0,0); "Modifier *"; endchar; beginchar(":",0,0,0); "Modifier :"; endchar; beginchar("!",0,0,0); "Modifier !"; endchar; beginchar("?",0,0,0); "Modifier ?"; endchar; ligtable ")" : "!" =: 1, "*" =: 5, ":" =: ">", "-" =: "'", "?" =: 7; ligtable ":" : "(" =: "<"; ligtable "*" : "(" =: 4; ligtable "?" : "(" =: 6; ligtable "-" : "(" =: "`"; ligtable "!" : "(" =: 0, "[" =: 2; ligtable "]" : "!" =: 3;