% blackboard typefaces by Anthony Phan.
% file: mbbdigit.mf (Arabic numerals)
% last modification: 25.10.2001.

def horizontal_rules_list=0.25h,0.5h,0.7h,
  -body_depth,-desc_depth,x_height,cap_height,asc_height,body_height
enddef;

use_rule1;

if not(known old_digits): old_digits=false; fi

beginchar("0",8u#+2appr#,
    if old_digits: x_height# else: fig_height# fi,0);
  "The numeral 0";
  italcorr if old_digits: x_height#
  else: fig_height# fi *slant-.5u#;
  pickup circle.nib;
  bbcircle1(apprl-ho,w-apprr+ho,h+o,-o); draw last_path;
  bbbowl(z1b,z1a,z1d,hThick) last_path;
  bbbowl(z1b,z1c,z1d,hThick) last_path;
endchar;

beginchar("1",8u#+2appr#,
    if old_digits: x_height# else: fig_height# fi,0); 
  "The numeral 1";
  italcorr if old_digits: x_height#
  else: fig_height# fi *slant-.5u#;
  pickup circle.nib;
  y3r=top y4=top y5=h+o;
  bot y6=bot y7=0; y1r=vround(0.68h+0.5thin);
  rt x5=rt x6=hround(0.5[apprl,w-apprr]+0.5(u+hthick+thin));
  x6-x7=hthick; x3r=lft x4=0.25[lft x7,rt x6];
  x1r=hround max(lft x7-2.3u,apprl+0.5u);
  z2r=0.5[z1r,z3r]+0.08(z3r-z1r)rotated -90;
  tmpp_path:=z1r...z2r{z3r-z1r}...z3r;
  ortho_penpos1(thin,-direction 0 of tmpp_path);
  ortho_penpos2(thin,z1r-z3r);
  ortho_penpos3(thin,-direction 2 of tmpp_path);
  tmp_path:=z1...z2{z3-z1}...z3;
  z8=tmp_path intersectionpoint (z7..(x7,y3r));
  penstroke z1e...z2e{z3e-z1e}...z3e; draw z7..z8;
  pickup square.nib; draw z4--z5--z6--z7;
  penlabels(1,2,3); labels(4,5,6,7,8); 
endchar;

beginchar("2",8u#+2appr#,
    if old_digits: x_height# else: fig_height# fi,0);
  "The numeral 2";
  italcorr if old_digits: x_height#
  else: fig_height# fi *slant-.5u#;
  pickup circle.nib;
  x1l=rt x7=w-apprr+ho; x2l=lft x13=apprl; x9=x12=0.5[x13,x7];
  y1l=y2l=0; bot y7=bot y13=vround 0.7h; top y12=h+o;
  penpos1(thin,90); penpos2(thin,90); z3l=z2r;
  adjust_slanted_bar(3l,7,4,6l)((thick+thin)/2,-1);
  z5r-z4=z8r-z7=z4-z3l;
  a:=diag_width(thin,z7-z4);
  penpos3(a,0); penpos5(a,0); penpos6(a,0); penpos8(a,0);
  numeric a,x,y;
  (x,y)=(z7-z4)slanted slant; a=angle((y,-x)slanted -slant);
  z9=whatever[z3,z6];
  z9l=whatever[z3l,z6l]; z9l=z9+whatever*dir(a);
  z9r=whatever[z3r,z6r]; z9r=z9+whatever*dir(a);
  z10=whatever[z5,z8]; z10=z9+whatever*dir(a);
  z10r=whatever[z5r,z8r]; z10r=z9+whatever*dir(a);
  z10l=whatever[z5l,z8l]; z10l=z9+whatever*dir(a);
  x7l=x7; z7l=whatever[z5,z8]; z11-z7=z9-z10;
  x11l=x11; z11l=whatever[z3,z6];
  penstroke z1e..z2e; penstroke z3e..z9e; penstroke z5e..z10e;
  draw z9..controls 2/3[z9,z11l] and 2/3[z11,z11l]..z11 up_to_left z12;
  draw z10..controls 2/3[z10,z7l] and 2/3[z7,z7l]..z7
  up_to_left z12 left_to_down  z13;
  square_end13(down); penlabels(range 1 thru 13);
endchar;

beginchar("3",8u#+2appr#,
    if old_digits: x_height#,desc_depth# else: fig_height#,0 fi);
  "The numeral 3";
  italcorr if old_digits: x_height#
  else: fig_height# fi *slant-.5u#;
  pickup circle.nib; top y2=h+o; bot y7=-d-o;
  bot y4=bot y5=vround 0.5(h-d); y3=0.5[y2,y4];
  bot y1=vround y3; y6=0.5[y4,y7]; top y8=0.2[-d,h];
  lft x1-hround 0.2u=lft x8=apprl; rt x3=rt x6-ho=w-apprr;
  x4=0.5[x8,x3]; x6-x9=hThick; x11=min(x9,x3-thin);
  lft x5=hround min(apprl+2.75u,x11-1.5thin);
  tmpp_path:=z5..z4 right_to_up z3 & elliptic_arc(3,2,1);
  tmp_path:=z5..z4 left_to_down z6& elliptic_arc(6,7,8);
  bbbowl(z4,z6,z7,hThick) tmp_path;
  bbbowl(z2,z3,z4,max(0,x3-x.bowl.mid)) tmpp_path;
  draw tmp_path; draw tmpp_path;
  square_end1(z1-z1');
  square_end5(left);
  square_end8(z8-z8');
  penlabels(range 1 thru 8,8'); 
endchar;

beginchar("4",8u#+2appr#,
    if old_digits: x_height#,desc_depth# else: fig_height#,0 fi); 
  "The numeral 4";
  italcorr if old_digits: x_height#
  else: fig_height# fi *slant-.5u#;
  pickup circle.nib;
  rt x2=w-apprr-hround u; top y2=h+o; x3=x2=lft x7;
  bot y7=if old_digits:0 else: vround 0.25h fi;
  bot y3=-d; y4=y3; x4=x3-hthick; x5=rt x8=x4; y8=y7=y9=y6;
  rt x6=w-apprr+hround 0.5u; lft x9=x10l=apprl-hround 0.5u;
  x11l=0.25[lft x4,rt x3]; y10l=top y9; y11l=top y2;
  a:=diag_width(thin,z11l-z10l);
  penpos10(a,0); penpos11(a,0); z1r=z11; penpos2(thin,90);
  z1l=whatever[z10,z11]; y1l=y2l; z5=whatever[z10,z11];
  draw z5..z4; penstroke z10e..z11e; penstroke z1e..z2e;
  pickup square.nib; draw z2--z3--z4; draw z6--z7; draw z8--z9;
  penlabels(range 1 thru 11);
endchar;

beginchar("5",8u#+2appr#,
    if old_digits: x_height#,desc_depth# else: fig_height#,0 fi);
  "The numeral 5";
  italcorr if old_digits: x_height#
  else: fig_height# fi *slant-.5u#;
  penpos6(thin,-90);
  pickup circle.nib;
  top y1=top y2=top y10=h;
  top y6=x_height-d; bot y8=-d-o;
  top y9=0.2[-d,h]; y7=0.5[y8,y6];
  bot y3=bot y4=y5r=min(vround 0.5(h-d),bot y6);
  lft x9=apprl; rt x1=w-apprr-hround 0.3u;
  rt x7=w-apprr+ho; lft x2=lft x3=apprl+hround 0.3u;
  x10-x2=hthick;
  tmp_path:=elliptic_arc(7,8,9);
  x4=0.5[x3,x10]; x6=max(0.4[x4,x7],x8);
  x5r=x4+0.5thin*((1++slant)-slant);
  z0=(z6r-z5r) xscaled 1/3;
  ortho_penpos5(thin,z0);
  tmp_path:=z3--z4--z5{z0}...z6
  right_to_down z7 & tmp_path;
  z11=tmp_path intersectionpoint (z10..(x10,y3));
  bbbowl(z6,z7,z8,hThick) tmp_path;
  draw subpath (3,infinity) of tmp_path; draw z10..z11;
  penstroke z5e{z0}...z6e{right};
  pickup square.nib; draw z1--z2--z3--z4;
  square_end9(z9-z9');
  labels(1,2,3,4,7,8,9,9',10,11);
  penlabels(5,6);
endchar;

beginchar("6",8u#+2appr#,fig_height#,0);
  "The numeral 6";
  italcorr fig_height#*slant-.5u#;
  numeric t;
  pickup circle.nib; top y2=h+o;
  bot y1=min(0.095[h,-d],bot y2-1); bot y4=-d-o;
  top y6=x_height-d; y3=0.5[y2,y4]; y5=y7=0.5[y4,y6];
  rt x1=w-apprr-0.74u; lft x3=lft x7=apprl-ho;
  rt x5=w-apprr+ho; x4=x6=0.5[x3,x5];
  tmp_path:=reverse elliptic_arc(3,2,1)
  & z3 down_to_right z4 right_to_up z5
  up_to_left z6 left_to_down z7;
  bbbowl(z2,z3,z4,hThick) tmp_path;
  t=8+xpart(subpath (8,12) of tmp_path intersectiontimes bowl_path);
  bbbowl(z6,z5,z4,hThick) tmp_path;
  draw subpath (0,t) of tmp_path;
  square_end1(z1-z1');
  labels(1,1',2,3,4,5,6,7);
endchar;

beginchar("7",8u#+2appr#,
    if old_digits: x_height#,desc_depth# else: fig_height#,0 fi); 
  "The numeral 7";
  italcorr if old_digits: x_height#
  else: fig_height# fi *slant-.5u#;
  y1r=y2r=h; x1r=apprl; x2r=w-apprr+hround 0.75u;
  penpos1(thin,90); penpos2(thin,90);
  z3r=z2l; y6l=y4r=-d; y5l=y3r; x3r-x4r=hround 4.25u;
  numeric a;
  a=diag_width(1,z3r-z4r);
  x4r-x6l=x3r-x5l=(thick+thin)*a;
  penpos3(thin*a,0); penpos4(thin*a,0);
  penpos5(thin*a,0); penpos6(thin*a,0);
  y4a-y4=thin; z4a=whatever[z3,z4]; z6a-z6=z4a-z4;
  penstroke z1e..z2e; penstroke z3e..z4e;
  penstroke z5e..z6e; fill z4a--z6a--z6--z4--cycle; 
  penlabels(range 1 thru 8); labels(4a,6a);
endchar;

beginchar("8",8u#+2appr#,fig_height#,0);
  "The numeral 8";
  italcorr fig_height#*slant-.5u#;
  pickup circle.nib;
  rt z1=(w-apprr,0.5[y4,y2]); top z2=(0.5[x1,x3],h+o); lft z3=(apprl,y1);
  bot z4=(x2,vround 0.5(h-d));
  rt z5=(w-apprr+ho,0.5[y7,y4]); bot z7=(x2,-d-o); lft z6=(apprl-ho,y5);
  tmpp_path:=superellipse(z1,z2,z3,z4,superness);
  tmp_path:=superellipse(z5,z4,z6,z7,superness);
  bbbowl(z4,z6,z7,hThick) tmp_path;
  bbbowl(z2,z3,z4,max(0,x.bowl.mid-x3)) tmpp_path;
  bbbowl(z4,z5,z7,hThick) tmp_path;
  bbbowl(z2,z1,z4,max(0,x1-x.bowl.mid)) tmpp_path;
  draw tmpp_path; draw tmp_path;
  labels(1,2,3,4,5,6,7); 
endchar;

beginchar("9",8u#+2appr#,
    if old_digits: x_height#,desc_depth# else: fig_height#,0 fi);
  "The numeral 9";
  italcorr if old_digits: x_height#
  else: fig_height# fi *slant-.5u#;
  numeric t;
  pickup circle.nib; bot y2=-d-o;
  top y1=max(0.095[-d,h],top y2+1); top y4=h+o;
  bot y6=h-x_height; y3=0.5[y2,y4]; y5=y7=0.5[y4,y6];
  lft x1=apprl+0.74u; rt x3=rt x7=w-apprr+ho;
  lft x5=apprl-ho; x4=x6=0.5[x3,x5]; x3-x8=x10-x5=hThick;
  tmp_path:=reverse elliptic_arc(3,2,1)
  & z3 up_to_left z4 left_to_down z5
  down_to_right z6 right_to_up z7;
  bbbowl(z4,z3,z2,hThick) tmp_path;
  t=8+xpart(subpath (8,12) of tmp_path intersectiontimes bowl_path);
  bbbowl(z4,z5,z6,hThick) tmp_path;
  draw subpath (0,t) of tmp_path;
  square_end1(z1-z1');
  labels(1,1',2,3,4,5,6,7);
endchar;




