% Visible speech glides %%%%%%%%%%%%%%%%%%%%%%%%%% beginchar(incr ccode,3/2curve#+2sidebar#,2/3loop_h#,0); pickup hrazorpen; x.stem=1/2[lside,rside]; draw (x.stem,0)--(x.stem,h); pickup smallserifpen; bot y1=0; top y2=h; width_serif(y1); width_serif(y2); endchar; beginchar(incr ccode,9/4curve#+2sidebar#,3/4loop_h#,0); pickup hrazorpen; fix_height; x.stem=1/2[lside,rside]; draw (x.stem,0)--(x.stem,h); pickup penrazor scaled thin rotated 90; % thick bar here. draw (lside,1/2h)--(rside,1/2h); endchar; beginchar(incr ccode,3/2curve#+2sidebar#,loop_h#,0); pickup hrazorpen; fix_height; y1=h; y4=0; y1-y2=y3-y4; y2-y3=3/2(y1-y2); x.stem=1/2[lside,rside]; draw (x.stem,y1)--(x.stem,y2); draw (x.stem,y3)--(x.stem,y4); pickup smallserifpen; top y5=y1; bot y6=y4; width_serif(y5); width_serif(y6); pickup pencircle scaled 2/3fine; lft x7=lside; rt x8=rside; draw (x8,h/2){up}..(x.stem,y2){left}..(x7,h/2){down}.. (x.stem,y3){right}..cycle; endchar; for ud=1,-1: for b=0,1: beginchar(incr ccode,2curve#+2sidebar#, 2/3loop_h# if ud>0: -1/2curve# fi, if ud>0: 1/2curve# else: 0 fi); pickup pencircle xscaled thin yscaled fine; ud*y3-ud*y1=5/4curve; if ud>0: bot else: top fi y1=if ud>0: -d+ else: h- fi 1/3fine; y4=if ud>0: h else: 0 fi; y2=1/2[y3,y1]; if ud>0: rt else: lft fi x1=if ud>0: rside else: lside fi; if ud>0: lft else: rt fi x2=if ud>0: lside else: rside fi; x3=x4=1/2[lside,rside]; cutdraw z1..(x3,y1-ud*1/3fine){ud*left}..z2{ud*up}...z3{ud*right}&z3--z4; pickup smallserifpen; if ud>0: top else: bot fi y5=if ud>0: h else: 0 fi; draw (lside,y5)--(rside,y5); if b=1: if ud>0: bot else: top fi y6=y3 + ud*fine; draw (lside,y6)--(rside,y6); fi labels (1,2,3,4,5); endchar; endfor; endfor; for ud=1,-1: for b=0,1: beginchar(incr ccode,2curve#+2sidebar#, 2/3loop_h# if ud<0: -1/2curve# fi, if ud<0: 1/2curve# else: 0 fi); if not odd (rside-lside): w:=w+1 fi; pickup finepen; lft x1=lside; rt x2=rside; y1=y2=if ud>0: h else: -d fi; y3=1/2[-d,h]; x4=x3=1/2[lside,rside]; pickup thinpen; if ud>0: bot else: top fi y4=if ud>0: 0 else: h fi; draw z3--z4; cutoff(z3,ud*90); cullit; pickup finepen; cutdraw z1{ud*down}..z3..{ud*up}z2; pickup thinpen; % redo the cutting, or there are rounding bugs. cutoff(z1,ud*90); cutoff(z2,ud*90); pickup smallserifpen; if ud>0: bot else: top fi y5=if ud>0: 0 else: h fi; draw (lside,y5)--(rside,y5); if b=1: if ud>0: top else: bot fi y6=y3 - ud*fine; draw (lside,y6)--(rside,y6); fi endchar; endfor; endfor;