% Macros to draw ogonek (polish hook) accents using accent-pointed chardefs % map files and hacccm %cmchar "Ogonek accent"; beginchar(oct"030",8u#,0,.875desc_depth#); adjust_fit(0,0); pickup crisp.nib; pos1(hair,0); pos4(stem,0); if hefty: pos5(hair,90); else: pos5(.15[hair,stem],90); fi x1=.5w; x4=x1-1.5u; x5=x1+.5u; %y1=oo; if monospace: y1=oo+ else: bot y1= fi cdilorigin; x11=x1; y4=.675[y1,y5]; bot y5=-.875desc_depth-o; x6=x5+stem+.25dot_size; y6=y5r+.25dot_size; pos6(hair,180); filldraw stroke z1e...z4e{down}...{right}z5e...z6e; % hook makeACCENT(OgonPic); endgroup; cmchar "Grave accent"; beginchar(oct"022",9u#,min(asc_height#,2x_height#),0); adjust_fit(0,0); if serifs: pickup crisp.nib; x1-.5stem=hround 2u; x2=2/3[x1,w-x1]; y1+.5stem=h+eps; y2=max(2/3[h,x_height],x_height+o+hair); numeric theta; theta=angle(z2-z1)+90; pos1(stem,theta); pos2(hair,theta); filldraw circ_stroke z1e--z2e; % diagonal else: pickup fine.nib; pos1(stem,0); pos2(vair,0); lft x1l=hround 1.5u; rt x2r=hround(.5w+.25u+.5vair); top y1=h; bot y2=vround 2/3[h,x_height]; filldraw stroke z1e--z2e; fi % diagonal makeACCENT(GravePic); endgroup; extra_endchar:=" czd ap(OgonPic); czu ap(GravePic); ah; oechar; "; boolean dotson; dotson=false; % omit dots on i, j, and possibly etc. def cp = grog enddef;