% % Washington Romanized Indic accent driver % % Macros to draw combination macron accent and underring % cmchar "Vocalic underring accent"; beginchar(oct"027",13u#+4/3(asc_height#-x_height#)*slant,asc_height#,0); adjust_fit(cap_serif_fit#,cap_serif_fit#); numeric circ_hair,circ_vair; circ_hair=hround min(hair,u+.5); circ_vair=vround min(vair,(h-x_height)/6+.5); penpos1(circ_vair,90); penpos3(circ_vair,-90); penpos2(circ_hair,180); penpos4(circ_hair,0); x2r=hround(.5w-1.5u-.5circ_hair); x4r=w-x2r; x1=x3=.5w; y1r=h+apex_o; y2=y4=.5[y1,y3]; y3r=vround(1/3[x_height,h]+apex_o); penstroke pulled_arc.e(1,2) & pulled_arc.e(2,3) & pulled_arc.e(3,4) & pulled_arc.e(4,1) & cycle; % bowl transform Tf; Tf = identity shifted (-.5w+slant*(-y1r-.25x_height),-y1r-.25x_height); savePicture(RingPic); endgroup; cmchar "Macron accent"; numeric macron_breadth#; macron_breadth#=.2[vair#,stem#]; beginchar(oct"026",9u#,.4[x_height#,asc_height#]+macron_breadth#,0); italcorr h#*slant-.75u#; adjust_fit(0,0); numeric macron_breadth; macron_breadth:=Vround .2[vair,stem]; pickup if serifs: crisp.nib else: fine.nib fi; pos1(macron_breadth,90); pos2(macron_breadth,90); top y1r=top y2r=h+o; lft x1=w-rt x2=hround 1.25u; filldraw stroke z1e--z2e; % bar if monospace: currentpicture:=currentpicture shifted(0,1/2aspect_ratio*dot_size); fi makeACCENT(MacronPic); endgroup; extra_endchar:= " czu ap(MacronPic); czdm ap(RingPic); ah; oechar; "; boolean dotson; dotson=false; % omit dots on i, j, and possibly etc. def cp = urmc enddef; % end of file urmcacct.mf