% % Washington Romanized Indic accent driver % % Macros to draw macron + breve accents % numeric barwidth; barwidth=vround .2[vair,stem]; numeric semiwidth; semiwidth=7.5u; %cmchar "Breve accent"; beginchar(oct"025",9u#,min(asc_height#,2x_height#),0); italcorr h#*slant+.5vair#-1.5u#; adjust_fit(0,0); pickup crisp.nib; pos1(vair,-180); pos3(vair,0); top y1=top y3=h; lft x1r=w-rt x3r=hround(2u-.5vair); numeric mid_thickness; mid_thickness=vround 1/3[vair,stem]; pos2(mid_thickness,-90); x2=.5w; bot y2r=vround max(x_height+o+tiny,1/3[x_height,h]+o-.5mid_thickness); filldraw stroke z1e{down}...z2e{right}...{up}z3e; % stroke transform Tf; Tf = identity shifted (-.5w+slant*(-y2r),-y2r*aspect_ratio); savePicture(MacronPic); endgroup; %cmchar "Macron (bar) 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 transform At; At=identity shifted(.5w+slant*(h+acctdiff),aspect_ratio*(h+acctdiff)); ap(MacronPic); if monospace: currentpicture:=currentpicture shifted(0,1/2aspect_ratio*dot_size); fi makeACCENT(MacronPic); endgroup; extra_endchar:= " czu ap(MacronPic); ah; oechar; "; boolean dotson; dotson=false; % omit dots on i, j, and possibly etc. def cp = mcbrv enddef; % end of file brbracct.mf