% blackboard typefaces by Anthony Phan.
% file: mbbhebvw.mf (Hebrew points and punctuation)
% last modification: 25.10.2001.

diacritics_proofing;% changes extra_endchar for proof mode.

def horizontal_rules_list=
  -body_depth,-paren_depth,-desc_depth,
  x_height,cap_height,asc_height,body_height
enddef;

use_rule1;

beginchar(bbhebvow[0],8u#+2appr#,0,bot_skip#+heb_size2#);
  "Hebrew point sheva";
  center_bar(1,1'); x2=x1; x2'=x1';
  top y1'=bot y2+heb_size2=-bot_skip;
  top y1'-bot y1=top y2'-bot y2=dot_size;
  dot(1,1'); dot(2,2');
endchar;

beginchar(bbhebvow[1],8u#+2appr#,0,bot_skip#+heb_size2#);
  "Hebrew point hataf-segol";
  center_bar(2,2');
  lft x1-apprl=w-apprr-rt x3'=w-apprr-rt x5'
  =hround min(0,(w-apprl-apprr)/3-hthick-thin-2dot_skip/3);
  x1'-x1=x3'-x3=x4'-x4=x5'-x5=hthick; x4=good.x 0.5[x1,x2];
  top y1'=bot y4+heb_size2=-bot_skip;
  top y1'-bot y1=top y4'-bot y4=dot_size;
  y1=y2=y3; y1'=y2'=y3'; y4=y5; y4'=y5';
  dot(1,1'); dot(2,2'); dot(3,3'); dot(4,4'); dot(5,5');
endchar;

beginchar(bbhebvow[2],8u#+2appr#,0,bot_skip#+dot_size#);
  "Hebrew point hataf-patah";
  pickup circle.nib;
  rt x1'=w-apprr; x1'-x1=hthick; top y1'=-bot_skip;
  lft x2=apprl; x3-x2=2hround u+hthick;
  top y1'-bot y1=dot_size;  y1'=y2=y3;
  dot(1,1'); pickup square.nib; draw z2..z3;
  labels(2,3);
endchar;

% humm
beginchar(bbhebvow[3],8u#+2appr#,0,bot_skip#+heb_size2#);
  "Hebrew point hataf-qamats";
  pickup circle.nib;  
  rt x2=rt x10=w-apprr; x2-x1=x8-x5=x7-x6=x10-x9=hthick;
  lft x3=apprl; x4-x3=2hround u+hthick;
  x5=x6=x3+hround u;
  top y2=bot y9+heb_size2=-bot_skip; top y2-bot y1=top y10-bot y9=dot_size;
  bot y6=bot y7=-bot_skip-heb_size1; y2=y3=y4=y5=y8;
  dot(1,2); dot(9,10); pickup square.nib; draw z3..z4;
  draw z5--z6--z7--z8; labels(3,4,5,6,7,8);
endchar;

beginchar(bbhebvow[4],8u#+2appr#,0,bot_skip#+dot_size#);
  "Hebrew point hiriq";
  center_bar(1,1');
  top y1'=-bot_skip; top y1'-bot y1=dot_size; dot(1,1');
endchar;

beginchar(bbhebvow[5],8u#+2appr#,0,bot_skip#+dot_size#);
  "Hebrew point tsere";
  pickup circle.nib;
  lft x1-apprl=w-apprr-rt x2'
  =hround min(0.5u,0.5(w-apprl-apprr)-hthick-thin-dot_skip);
  x1'-x1=x2'-x2=hthick;
  top y1'=top y2'=-bot_skip; top y1'-bot y1=top y2'-bot y2=dot_size;
  dot(1,1'); dot(2,2');
endchar;

beginchar(bbhebvow[6],8u#+2appr#,0,bot_skip#+heb_size2#);
  "Hebrew point segol";
  center_bar(3,3');
  lft x1-apprl=w-apprr-rt x2'=hround 0.5u; x1'-x1=x2'-x2=hthick;
  top y1'=bot y3+heb_size2=-bot_skip; y2=y1;
  top y1'-bot y1=top y2'-bot y2=top y3'-bot y3=dot_size;
  dot(1,1'); dot(2,2'); dot(3,3');
endchar;

beginchar(bbhebvow[7],8u#+2appr#,0,bot_skip#+thin#);
  "Hebrew point patah";
  center_bar(3,4); x3-x1=x2-x4=hround u;
  top y1=top y2=-bot_skip; pickup square.nib;
  draw z1..z2; labels(1,2);
endchar;

beginchar(bbhebvow[8],8u#+2appr#,0,bot_skip#+heb_size1#);
  "Hebrew point qamats";
  center_bar(4,5); x3=x4; x5=x6; x2-x5=x4-x1=hround u;
  bot y4=bot y5=-d; top y1=-bot_skip; y1=y2=y3=y6;
  pickup square.nib; draw z1..z2; draw z3--z4--z5--z6;
  labels(1,2,3,4,5,6);
endchar;

beginchar(bbhebvow[9],8u#+2appr#,x_height#+top_skip#+dot_size#,0);
  "Hebrew point holam";
  italcorr asc_height#*slant-0.5u#;
  pickup circle.nib; lft x1=apprl-hround u; x1'-x1=hthick;
  top y1'=h; bot y1=h-dot_size; dot(1,1');
endchar;

beginchar(bbhebvow[11],8u#+2appr#,0,bot_skip#+heb_size2#);
  "Hebrew point qubuts";
  center_bar(2,2'); lft x1-apprl=w-apprr-rt x3'
  =hround min(0,(w-apprl-apprr)/3-hthick-thin-0.5u);
  x1'-x1=x3'-x3=hthick; top y1'=bot y3+heb_size2=-bot_skip;
  top y1'-bot y1=top y2'-bot y2=top y3'-bot y3=dot_size;
  y2=good.y 0.5[y1,y3]; dot(1,1'); dot(2,2'); dot(3,3');
endchar;

beginchar(bbhebvow[12],8u#+2appr#,
    0.5(-cap_height#+dot_size#)+x_height#,0);
  "Hebrew point dagesh or mapiq";
  pickup circle.nib;
  top y3=top y4=h; top y3-bot y1=dot_size; y1=y2;
  lft x1=lft x4=apprl; x2-x1=x3-x4=hthick;
  pickup square.nib; draw z1--z2--z3--z4--cycle;
  labels(1,2,3,4);
endchar;

beginchar(bbhebvow[13],8u#+2appr#,0,bot_skip#+heb_size1#);
  "Hebrew point meteg";
  center_bar(1,2); x1=x4; x2=x3;
  bot y1=bot y2=-d; top y3=top y4=-bot_skip;
  pickup square.nib; draw z1--z2--z3--z4--cycle;
  labels(1,2,3,4);
endchar;

beginchar(bbhebvow[14],6u#,cap_height#,0);
  "Hebrew punctuation maqaf (hyphen dash)";
   italcorr .5x_height#*slant-.5u#;
  penpos1(rule_thickness,90); penpos2(rule_thickness,90);
  top y1r=top y2r=vround(.5h+.5rule_thickness); rt x2=hround(w-u);
  lft x1=hround .2u; penstroke z1e--z2e; penlabels(1,2);
endchar;

% humm
beginchar(bbhebvow[15],8u#+2appr#,x_height#+top_skip#+thin#,0);
  "Hebrew point rafe";
  italcorr charht*slant-1.5u#;
  center_bar(3,4); x3-x1=x2-x4=hround u; top y1=top y2=h;
  pickup square.nib; draw z1..z2; labels(1,2);
endchar;

beginchar(bbhebvow[16],5u#+2appr#,cap_height#,0);
  "Hebrew punctuation paseq (vertical)";
   italcorr .5x_height#*slant-.5u#;
  penpos1(rule_thickness,0); penpos2(rule_thickness,0);
  top y1=h; bot y2=0; x1l=x2l=hround(.5w-.5rule_thickness);
  penstroke z1e--z2e; penlabels(1,2);
endchar;

beginchar(bbhebvow[17],8u#+2appr#,x_height#+top_skip#+dot_size#,0);
  "Hebrew point shin dot";
  italcorr charht*slant+0.5u#;
  pickup circle.nib; rt x1'=w-apprr+hround u; x1'-x1=hthick;
  bot y1'=x_height+top_skip; top y1'-bot y1=dot_size; dot(1,1');
endchar;

beginchar(bbhebvow[18],8u#+2appr#,x_height#+top_skip#+dot_size#,0);
  "Hebrew point sin dot";
  pickup circle.nib; lft x1=apprl-hround u; x1'-x1=hthick;
  bot y1'=x_height+top_skip; top y1'-bot y1=dot_size; dot(1,1');
endchar;

beginchar(bbhebvow[19],5u#+2appr#,cap_height#,0);
  "Hebrew punctuation sof pasuq (colon)";
  if not(odd(w-apprl-apprr)): change_width; fi
  x0=x0'=0.5[apprl,w-apprr]; y0=floor(h-dot_size/sqrt 2)+0.5;
  h-y0=y0';
  x3r-x1r=sqrt 2*(thick+thin)*(1++slant);
  y2r-y4r=sqrt2*dot_size;
  x0=x2r=x4r=0.5[x3r,x1r]; y0=y1r=y3r=0.5[y2r,y4r];
  z1a-z1r=(diag_width(thin,z2r-z1r),0);
  z1b-z1r=(diag_width(thin,z4r-z1r),0);
  z3a-z3r=(-diag_width(thin,z2r-z3r),0);
  z3b-z3r=(-diag_width(thin,z4r-z3r),0);
  z2l-z1a=whatever*(z2r-z1r); z2l-z3a=whatever*(z2r-z3r);
  z4l-z1b=whatever*(z4r-z1r); z4l-z3b=whatever*(z4r-z3r);
  z2l-z1l=whatever*(z2r-z1r); z4l-z1l=whatever*(z4r-z1r);
  z2l-z3l=whatever*(z2r-z3r); z4l-z3l=whatever*(z4r-z3r);
  forsuffixes $=1,2,3,4:
    z$'.r-z0'=z$.r-z0; z$'.l-z0'=z$.l-z0; endfor
  penstroke z1e--z2e--z3e--z4e--cycle;
  penstroke z1'.e--z2'.e--z3'.e--z4'.e--cycle;
  penlabels(1,2,3,4,1',2',3',4'); labels(1a,1b,2a,2b);
endchar;

beginchar(bbhebvow[20],8u#+2appr#,x_height#+top_skip#+dot_size#,0);
  "Hebrew mark upper dot";
  pickup circle.nib; center_bar(1,1');
  bot y1'=x_height+top_skip; top y1'-bot y1=dot_size; dot(1,1');
endchar;

standard_proofing;% restore extra_endchar.

endinput;

% from Bigelow and Holmes Unicode's Lucida

beginchar(bbhebvow[23],8u#+2appr#,x_height#+top_skip#+dot_size#,0);
  "Hebrew point breve";
  center_bar(4,5); x4-x1=x3-x5=hround u; x2=0.5[x1,x3];
  bot y2=x_height+top_skip; top y1-bot y2=dot_size; y1=y3=y4=y5;
  draw z1 down_to_right z2 right_to_up z3;
  square_end1(up); square_end3(up);
  labels(1,2,3,4,5);
endchar;
