%(c) 1992 by Jo Grant mode_def testing= pixels_per_inch:=300*4; blacker:=.1; o_correction:=1; fillin:=.01; proofing:=2; fontmaking:=0; tracingtitles:=1; enddef; if unknown mode: mode:=testing; fi mode_setup; turningcheck := 0; string style; style := "classic"; %style := "academic"; %style := "academicbf"; if mode=testing: screenstrokes; fi % parameters that control what a wedge looks like. width_to_length_ratio := 1/2; tailang := 30; costail := cosd tailang; tantail := sind tailang/cosd tailang; u# = 1/384in#; wedge_len# := 50u#; letter_fit#:= 5u#; wedge_wid# := wedge_len#*width_to_length_ratio; tail_len# := wedge_wid#*costail; stem_len# := wedge_len# - tail_len#; tail_porp := tail_len#/wedge_len#; stem_porp := stem_len#/wedge_len#; let_height# := wedge_len#+wedge_wid#; pen_thick# := wedge_len#/25; half_big# := .5*let_height#*width_to_length_ratio; define_pixels(wedge_len, wedge_wid, tail_len, stem_len, let_height, pen_thick); define_pixels(letter_fit); def wedgepen = pickup pencircle scaled pen_thick; enddef; def wedgesetup = save V; numeric V[]len, V[]width, V[]theta, V[]doit; pair V[]pnt, V[]cw, V[]ccw; for n = 0 step 1 until 20: wlen(n) := wedge_len; wwid(n) := wedge_wid; rot(n) := 0; V[n]doit := 0; endfor enddef; def set (expr n) = wccw(n) = wpnt(n) - ((V[n]len,-V[n]wid/2) rotated (rot(n))); wcw(n) = wpnt(n) - ((V[n]len, V[n]wid/2) rotated (rot(n))); V[n]doit := 1; enddef; def drawwedges = for n = 0 step 1 until 20: if V[n]doit = 1: % classic if style = "classic": wedgepen; path cw, ccw, tail; ccw = wpnt(n)..controls mid(n) and mid(n)..wccw(n); tail = wccw(n)..controls .7[mid(n),wccw(n)] and .7[mid(n),wcw(n)]..wcw(n); cw = wcw(n)..controls mid(n) and mid(n)..wpnt(n); filldraw ccw & tail & cw & cycle; drawdot wccw(n); drawdot wcw(n); fi; % academic if style = "academic": wedgepen; draw wpnt(n)--mid(n)--wccw(n)--wcw(n)--mid(n); unfill edgein(mid(n), tback(n), pen_thick)-- edgein(wccw(n), cwmid(n), pen_thick)-- edgein(wcw(n), ccwmid(n), pen_thick)--cycle; unfill edgein(mid(n), tback(n), pen_thick)-- edgein(wccw(n), cwmid(n), pen_thick)-- edgein(wcw(n), ccwmid(n), pen_thick)--cycle; fi; % % bf academic if style = "academicbf": wedgepen; draw wpnt(n)--mid(n); filldraw mid(n)--wccw(n)--wcw(n)--cycle; fi; fi; endfor; enddef; def edgein(expr from, to, amnt) = ((from) + ((to) - (from))/length((to) - (from))*(amnt)) enddef; def wedgeset(expr first, last) = for n = first step 1 until last: set(n); endfor; drawwedges; enddef; def wlen(expr n) = V[n]len enddef; def wwid(expr n) = V[n]wid enddef; def wlenwid(expr n, l) = V[n]len := l; V[n]wid := l*width_to_length_ratio enddef; def rot(expr n) = V[n]theta enddef; def wpnt(expr n) = V[n]pnt enddef; def wccw(expr n) = V[n]ccw enddef; def wcw(expr n) = V[n]cw enddef; def tback(expr n) = (.5[wcw(n), wccw(n)]) enddef; def cwmid(expr n) = (.5[wcw(n), mid(n)]) enddef; def ccwmid(expr n) = (.5[wccw(n), mid(n)]) enddef; def wmid(expr n) = % identical to mid ((wpnt(n) + wcw(n) + wccw(n))/3) enddef; def mid(expr n) = ((wpnt(n) + wcw(n) + wccw(n))/3) enddef; def cen(expr n) = (.5[tback(n), wpnt(n)]) enddef; def mstem(expr n) = (.5[mid(n), wpnt(n)]) enddef; def tmid(expr n) = ((mid(n) + wcw(n) + wccw(n))/3) enddef; def adjust_fit(expr left_adj, right_adj) = l := -hround(left_adj*hppp)-letter_fit; interim xoffset := -l; charwd := charwd+2letter_fit# + left_adj + right_adj; r := l+hround(charwd*hppp); w := r-hround(right_adj*hppp) - letter_fit; enddef; def makebox(text r) = r((-letter_fit,0), (w+letter_fit,0)); r((-letter_fit,h), (w+letter_fit,h)); r((-letter_fit,0), (-letter_fit,h)); r((w+letter_fit,0), (w+letter_fit,h)); r((0,0), (0,h)); r((w,0), (w,h)); if charic<>0: r((w+charic*hppp,h.o_),(w+charic*hppp,.5h.o_)); fi enddef; extra_beginchar := extra_beginchar & "wedgesetup;adjust_fit(0,0);"; input cunsum; %input cun0076; font_normal_space wedge_wid#; font_normal_stretch wedge_wid#/3; font_normal_shrink wedge_wid#/3; end;