% halftone font with 65 levels of gray, characters "0" (white) to "p" (black) pair p[]; % the pixels in order (first p0 becomes black, then p1, etc) p0=(1,1); p8=(2,0); p16=(1,0); p24=(0,0); p32=(3,-1); p40=(2,-1); p48=(1,-1); p56=(2,-2); transform r; r=identity rotatedaround ((1.5,1.5),90); for i=0 step 8 until 56: p[i+2]=p[i] transformed r; p[i+6]=p[i+2] transformed r; p[i+5]=p[i+6] transformed r; p[i+1]=p[i] shifted (4,4); p[i+3]=p[i+2] shifted (4,4); p[i+7]=p[i+6] shifted (4,4); p[i+4]=p[i+5] shifted (4,4); endfor for i=32 step 1 until 63: p[i] := (xpart p[i] mod 8, ypart p[i] mod 8); endfor mode_setup; designsize:=64/pt; % that's 64 pixels def makebox(text t)= enddef; % shut off boxes picture prevchar; prevchar=nullpicture; for i=0 upto 64: beginchar(i+ASCII"0",designsize/8,designsize/8,0); currentpicture:=prevchar; if i>0: fill unitsquare shifted p[i-1]; fi prevchar:=currentpicture; endchar; endfor font_quad=designsize/8; end