%mode=ascii;

if unknown fontsize#:
	fontsize#=10;
fi
designsize:=fontsize#;
mode_setup;
openit;

if known Xerox_world:
    font_family "ASCII LOGO";
    coding_scheme "ASCII LETTERS ONLY";
fi

def clear =
  numeric x[],y[],x[]l,y[]l,x[]r,y[]r,dx[],dy[];
  currentpicture:=nullpicture;
enddef;

def curve(suffix $,$$,$$$) =
  fill z$l
   if known dz$: {dz$} fi
  .. z$$l{if known dz$$: dz$$ else: z$$$l-z$l fi}
  .. z$$$l
   if known dz$$$: {dz$$$} fi
  & z$$$l..z$$$r
  & z$$$r
   if known dz$$$: {-dz$$$} fi
  .. z$$r{if known dz$$: -dz$$ else: z$r-z$$$r fi}
  .. z$r
   if known dz$: {-dz$} fi
  & z$r..z$l & cycle;
enddef;

vardef setpos@#(expr a,b) =
  z@#=.5[z@#l,z@#r] enddef;

def setwidth (expr x) =
  chardx:=x;
  numeric w; w=chardx;
  if proofing>1:
  for n:=0 step 2bs until chardx-1:
  proofrule((n,-ydepth),(n,hheight)); endfor
  proofrule((chardx,-ydepth),(chardx,hheight));
  proofrule((0,-ydepth),(chardx,-ydepth));
  proofrule((0,0),(chardx,0));
  proofrule((0,xheight),(chardx,xheight));
  proofrule((0,capheight),(chardx,capheight));
  proofrule((0,hheight),(chardx,hheight));
  fi
enddef;

%def labelpos(text t) =
%  if proofing>1:
%  forsuffixes $$=l,,r: forsuffixes $=t:
%    makelabel(str $.$$, z$.$$); endfor endfor fi enddef;

def mask(expr mx,my) =
  cullit;
  pix:=nullpicture;
  unfill (0,0)..(round(mx+1)*pt,round(my+1)*pt)..cycle;
  for r=1 step 1 until mx*pt/2: addto pix also PIX shifted (2*r*sqsize,0);
    endfor
  cull pix including (1,9);
  for i:=0 step pxsize until my*pt:
    addto currentpicture also pix shifted(0,i);
  endfor
  picture pix;
enddef;

  show designsize; 
  numeric hheight,ydepth,bss,bs,f;
  180f = designsize; 
  hheight=140f ; ydepth=40f; 
  bss = 140f/17.3;
  bs = bss*pt;
maxx=16bs;
maxy=17.3bs;

% make mask paturn
%if designsize*mag > 30:
%  pxsize=4;
%  rep=round(maxx/2+1);
%  sqsize=1;
%  picture pix,px,PIX;
%  px=pix=nullpicture;
%  addto px contour unitsquare scaled sqsize;
%  addto pix also px shifted (0,0);
%  addto pix also px shifted (sqsize,sqsize);
%  addto pix also px shifted (0,2sqsize);
%  addto pix also px shifted (sqsize,3sqsize);
%  cull pix excluding (0,0);
%  PIX=pix;
%  picture px,pix;
%fi;

vardef char.A =
%   setwidth (15bs);
   x1r:=16bs;
   y1:=0;
   x2r:=16bs;
   y2:=17.3bs;
   x3r:=6bs;
   y3:=0;
   x4:=12bs;
   y4:=3.5bs;
   x5:=7bs;
   y5:=3.5bs;
   penpos1(4.2bs,0);
   penpos2(4.2bs,0);
   penpos3(4.9bs,0);
   penpos4(2.4bs,90);
   penpos5(2.4bs,90);
   penstroke z1e..z2e;
   penstroke z2e..z3e;
   penstroke z4e..z5e;
   penlabels(1,2,3,4,5);
enddef;

vardef char.S =
%   setwidth (13bs);
   x1l:=1bs;
   y1l:=5.5bs;
   x2l:=1bs;
   y2l:=3bs;
   x3l:=1.6bs;
   y3l:=1bs;
   x4l:=3.7bs;
   y4l:=0;
   x5l:=11bs;
   y5l:=0;
   x6l:=13.4bs;
   y6l:=1bs;
   x7l:=14bs;
   y7l:=3bs;
   x8l:=14bs;
   y8l:=5.6bs;
   x9l:=13.6bs;
   y9l:=6.6bs;
   x10l:=13bs;
   y10l:=7.2bs;
   x11r:=2.2bs;
   y11r:=10.1bs;
%  x11l:=5.4bs;
%  y11l:=13bs;
   penpos1(4.25bs,0);
   penpos2(4.3bs,7);
   penpos3(4.4bs,28);
   penpos4(3.7bs,48);
   penpos5(3.4bs,126);
   penpos6(4.4bs,152);
   penpos7(4.25bs,174);
   penpos8(4.5bs,200);
   penpos9(4.55bs,208);
   penpos10(4.4bs,215);
   penpos11(4.2bs,215);
%  penpos11(4.4bs,215);
   x12r:=14bs;
   y12r:=11.8bs;
   x13r:=14bs;
   y13r:=14.3bs;
   x14r:=13.4bs;
   y14r:=16.3bs;
   x15r:=11.3bs;
   y15r:=17.3bs;
   x16r:=4bs;
   y16r:=17.3bs;
   x17r:=1.6bs;
   y17r:=16.3bs;
   x18r:=1bs;
   y18r:=14.3bs;
   x19r:=1bs;
   y19r:=11.7bs;
   x20r:=1.4bs;
   y20r:=10.7bs;
   x21r:=2.2bs;
   y21r:=10.1bs;
   x22l:=13bs;
   y22l:=7.2bs;
   penpos12(4.25bs,0);
   penpos13(4.3bs,7);
   penpos14(4.4bs,28);
   penpos15(3.7bs,48);
   penpos16(3.4bs,126);
   penpos17(4.4bs,152);
   penpos18(4.25bs,174);
   penpos19(4.5bs,200);
   penpos20(4.5bs,208);
   penpos21(4.2bs,215);
   penpos22(4.4bs,215);
  % penstroke z1e--z2e{z2-z1}..{z5-z4}z4e--z5e{z5-z4}..{z8-z7}z7e--z8e{z8-z7}..{z11-z10}z10e--z11e;
   penstroke z1e--z2e{z2-z1}..{z5-z4}z4e--z5e{z5-z4}..{z8-z7}z7e--z8e{z8-z7}..{z11-z10}z10e--z11e;
   penstroke z12e--z13e{z13-z12}..{z16-z15}z15e--z16e{z16-z15}..{z19-z18}z18e--z19e{z19-z18}..{z22-z21}z21e--z22e;
   penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21);
enddef;


vardef char.C =
%   setwidth (13bs);
   x1l:=1bs;
   y1l:=5.5bs;
   x2l:=1bs;
   y2l:=3bs;
   x3l:=1.6bs;
   y3l:=1bs;
   x4l:=3.7bs;
   y4l:=0;
   x5l:=11bs;
   y5l:=0;
   x6l:=13.4bs;
   y6l:=1bs;
   x7l:=14bs;
   y7l:=3bs;
   x8l:=14bs;
   y8l:=5.5bs;

   penpos1(4.3bs,0);
   penpos2(4.3bs,7);
   penpos3(4.4bs,28);
   penpos4(3.7bs,48);
   penpos5(3.4bs,126);
   penpos6(4.4bs,152);
   penpos7(4.3bs,174);
   penpos8(4.3bs,180);

   penstroke z1e---z2e{z2-z1}..{z5-z4}z4e---z5e{z5-z4}..{z8-z7}z7e---z8e;

   x12r:=14bs;
   y12r:=11.8bs;
   x13r:=14bs;
   y13r:=14.3bs;
   x14r:=13.4bs;
   y14r:=16.3bs;
   x15r:=11.3bs;
   y15r:=17.3bs;
   x16r:=4bs;
   y16r:=17.3bs;
   x17r:=1.6bs;
   y17r:=16.3bs;
   x18r:=1bs;
   y18r:=14.3bs;
   x19r:=1bs;
   y19r:=5.5bs;
   penpos12(4.25bs,0);
   penpos13(4.3bs,7);
   penpos14(4.4bs,28);
   penpos15(3.7bs,48);
   penpos16(3.4bs,126);
   penpos17(4.4bs,152);
   penpos18(4.3bs,174);
   penpos19(4.25bs,180);

   penstroke z12e---z13e{z13-z12}..{z16-z15}z15e---z16e{z16-z15}..{z19-z18}z18e---z19e;
   penlabels(1,2,3,4,5,6,7,8,12,13,14,15,16,17,18,19);
enddef;

vardef char.I =
%   setwidth (6bs);
   x1l:=1bs;
   y1l:=0;
   x2l:=1bs;
   y2l:=17.3bs;
   penpos1(4.2bs,0);
   penpos2(4.2bs,0);
   penstroke z1e..z2e;
   penlabels(1,2);
enddef;

%vardef char.a = char.A enddef;
%vardef char.s = char.S enddef;
%vardef char.c = char.C enddef;
%vardef char.i = char.I enddef;

vardef make@#(expr char_w)=
 begingroup beginchar(str@#,char_w,hheight,ydepth);
 "the character "&str @#; char@#;
% if (fontsize#*mag>30) and (proofing=0): mask(char_w,hheight); fi
 endchar;
endgroup enddef;

%vardef make@#(expr char_w)=
% begingroup beginchar(str@#,char_w,hheight,ydepth);
% "the character "&str @#; char@#; endchar;
%endgroup enddef;

smoothing:=10;

make.S(14bss);
make.C(14bss);
make.A(16bss);
make.I(5.5bss);
