vardef oldeng_serif.l(suffix $,$$,@)(expr darkness,jut,drop) = pickup crisp.nib; pos@2(slab,-90); lft x@0=tiny.lft x$l; rt x@1=tiny.rt x$r; bot y@1=tiny.bot y$r; % top y@1=tiny.top y$r; lft x@2=lft x@0-jut; y@2l=y@1-drop; % y@2r=y@1-drop; y@0=min(y@2l+bracket,y$$)-eps; if drop>0: erase fill z@1-- top z@1 --(x@2r,top y@1)--z@2r--cycle; fi % erase excess at bottom filldraw z@1--z@2r--z@2l{z@1-z@2} % ...darkness[(x@0,y@2l),.5[z@2l,z@0] ]{z@0-z@2l} ...{up}z@0--(x@1,y@0)--cycle; % sloped serif labels(@0,@1,@2); enddef; def circ_coord(suffix $,$$) (expr len, ang) = x$ := x$$ + (len * cosd ang); y$ := y$$ - (len * aspect_ratio * cosd (ang + 90)); enddef; if unknown spike: boolean spike; spike=false; fi def spickle = .5[slab,stem] enddef; spike:=false; % cmchar " and abbreviation (&)"; newchar(OEamp,9u#,x_height#,desc_depth#); italcorr x_height#*slant; adjust_fit(0,0); numeric arm_thickness, bot_width, top_shift, top_hair; if hefty: arm_thickness=Vround(slab+2stem_corr); top_shift=0; bot_width=hround .825[stem,curve]; top_hair=.4[thin_join,bot_width]; %bot_width=hround .51[curve,cap_curve]; else: arm_thickness=Vround .4[stem,cap_stem]; top_shift=.5u; bot_width=.75[stem,curve]; top_hair=cap_hair; fi %bot_width=hround .51[curve,cap_curve]; if top_hair0: erase fill z@1--bot z@1 --(x@2r,bot y@1)--z@2r--cycle; fi % erase excess at bottom filldraw z@1--z@2r--z@2l{right} ...darkness[(x@0,y@2l),.5[z@2l,z@0] ]{z@0-z@2l} ...{up}z@0--(x@1,y@0)--cycle; % sloped serif labels(@0,@1,@2); enddef;