%% This file generates Old Hebrew glyphs for use with the Makor
%% system for typesetting Hebrew with Omega.


mode_setup;
designsize:=10pt#;
if unknown FontSize: FontSize := 10pt#; fi
FX# := FontSize *   0.075 / 2.4; % normalize to 10pt---AH
FY# := FontSize *   0.075 / 2.4;
%% At 10ot, FX#=FY#=.3125pt.
my_adj# := 3FX#;
define_pixels (FX, FY);

mynib#:=2.5FX#;
define_pixels (mynib);
def picknib=pickup pencircle scaled mynib enddef;

def adjust_fit(expr left_adj, right_adj) =
  l := -hround(left_adj*hppp);
  interim xoffset := -1;
  charwd := charwd+left_adj+right_adj;
  r := l+hround(charwd*hppp);
  w := r-hround(right_adj*hppp);
enddef;

beginchar(33, 8FX#, 22.563FY#, 0); % blank character mark
  adjust_fit(2my_adj#, 2my_adj#);
  z0=(0,h); z1=(w,y0); z2=(x1,-d); z3=(x0,y2);
  pickup pensquare scaled FX;
  draw z0--z1--z2--z3--cycle;
endchar;

beginchar(46, 5mynib#, 12FY#, 0); % period
  adjust_fit(my_adj#, my_adj#);
  picknib; drawdot (w/2,h);
endchar;

beginchar(91, 6FX#, 25FY#, 1FY#); % left square bracket!
  adjust_fit(my_adj#, my_adj#);
  z0=(0,h); z1=(w,h); z2=(w,-d); z3=(0,-d);
  pickup pensquare scaled 1.0FX;
  draw z0--z1--z2--z3;
endchar;

beginchar(93, 6FX#, 25FY#, 1FY#); % right square bracket!
  adjust_fit(my_adj#, my_adj#);
  z0=(0,h); z1=(w,h); z2=(w,-d); z3=(0,-d);
  pickup pensquare scaled 1.0FX;
  draw z1--z0--z3--z2;
endchar;

beginchar(94, 5FX#, 22.563FY#, 0); % circumflex
  adjust_fit(my_adj#, my_adj#);
  z1=(.5w, h); y0=y2=.75h; x0=0; x2=w-x0;
  picknib; draw z0--z1--z2;
endchar;

beginchar(96, 25FX#, 22.563FY#, 0.5FY#); % old alef
  adjust_fit(my_adj#, my_adj#);
  z2=(w,-d); z0=(w,h); z1=(0, .25h); picknib;
  draw z0--z1--z2;
  z3=(.45w, h); z4=(.96x3,-d); draw z3--z4;
endchar;

beginchar(97, 17FX#, 22.563FY#, 0.5FY#); % bet/vet
  adjust_fit(my_adj#, my_adj#);
  z0'=(w,.35h); z1=(0,y0'); z2=(w,h); z3=(.35w,-d); z4=(0,-d);
  path p; pair pr; pr=.5[.5[z3,z2], (w,-d)];
  p=z2{down}...pr{z3-z2}...{left}z3; z0=(z0'--z1)intersectionpoint p;
  picknib; draw z0--z1--z2{down}...pr{z3-z2}...{left}z3--z4;
endchar;

beginchar(98, 17FX#, 22.563FY#, 0.5FY#); % gimel
  adjust_fit(my_adj#, my_adj#);
  z0=(0,.65h); z1=(.65w,h); z2=(w,-d); picknib;
  draw z0--z1--z2;
endchar;

beginchar(99, 23FX#, 22.563FY#, .5FY#); % dalet
  adjust_fit(my_adj#, my_adj#);
  z0=(0,.4h); z1=(w,h); z2=(w,-d); picknib;
  draw z0--z1--z2--cycle;
endchar;

beginchar(100, 17FX#, 22.563FY#, 0.5FY#); % he
  adjust_fit(my_adj#, my_adj#);
  z0=(0,.65h); z1=(.65w,h); z2=(w,-d); picknib;
  draw z0--z1--z2; path p;
  p:=(z1--z0) shifted ( .3[z2,z1] - z1); draw p;
    p:=(z1--z0) shifted ( .6[z2,z1] - z1); draw p; 
endchar;

beginchar(101,20FX#, 22.563FY#, 0.5FY#); % vav
  adjust_fit(my_adj#, my_adj#);
  z0=(0,h); z2=(w,y0); z1=(.5w, .65h); picknib;
  z3=(.5w, -d);
  draw z0{(w,-d)-(0,h)}..z1..{(w,h)-(0,-d)}z2; draw z1--z3;
endchar;

beginchar(102, 17FX#, 22.563FY#, 0.5FY#); % zayin
  adjust_fit(my_adj#, my_adj#);
  z0=(0,h); z2=(.125w, y0); z1=(w,y0); z3=(x1,-d); z4=(x0,y3);
  picknib; draw z0--z1; draw z2--z3--z4;
endchar;

beginchar(103, 20FX#, 22.563FY#, .5FY#); % chet
  adjust_fit(my_adj#, my_adj#);
  z0=(0,h); z1=(.2w, -d); z2=(w-x1,y0); z3=(w,y1);
  fudge:=.222;
  z4=fudge[z0,z1]; z5=whatever[z2,z3];
  picknib; draw z0--z1; draw z2--z3;
  z5'-z4= (z0-z4) rotated (-90); z5=whatever[z4,z5'];
  draw z4--z5;
  z8=(1-fudge)[z0,z1]; z9=whatever[z2,z3];
  z9'-z8= (z0-z8) rotated (-90); z9=whatever[z8,z9'];
  draw z8--z9;
  z6 = .5[z8,z4]; z7 = .5[z9,z5]; draw z6--z7;
endchar;

beginchar(104, 23.063FX#, 22.563FY#, .5FY#); % tet
  adjust_fit(my_adj#, my_adj#);
  z50=(.5w, h); z52=(x50,-d); z51=(w,.5h); z53=(0,y51);
  path p; p := z50..z51..z52..z53..cycle; z4=(.5w,.5h);
  path q;
  q := z4--(w,h); z01 = q intersectionpoint p;
  q := z4--(w,-d); z12 = q intersectionpoint p;
  q := z4--(0,-d); z23 = q intersectionpoint p;
  q := z4--(0,h); z30 = q intersectionpoint p;
  picknib; draw p; draw z01--z23; draw z12--z30;
endchar;

beginchar(105, 20FX#, 22.563FY#,.5FY#); % yod
  adjust_fit(my_adj#, my_adj#);
  z0=(0,h); z1=(w,y0); z4=(.2w,-d); z5=(1.05w,d);
  z3=whatever[z4,z1]; z2=(.165w,.7h); y3=y2; z4'=(1.5x4, y4);
  picknib; draw z0--z1--z4--z4'{right}..z5; draw z2--z3;
endchar;

beginchar(106, 15FX#, 22.563FY#, .5FY#); % final kaf (same as kaf)
  adjust_fit(my_adj#, my_adj#);
  fudge := -.06;
  z0=(.5w, .5[-d,h]); x0 := x0+fudge*w;
  z1=(0,h); z2=(x0,y1); z3=(w,y1); z4=(0,-d);
  picknib; draw z0--z1; draw z0--z2; draw z3..z0..z4;
endchar;

beginchar(107, 15FX#, 22.563FY#, .5FY#); % kaf
  adjust_fit(my_adj#, my_adj#);
  fudge := -.06;
  z0=(.5w, .5[-d,h]); x0 := x0+fudge*w;
  z1=(0,h); z2=(x0,y1); z3=(w,y1); z4=(0,-d);
  picknib; draw z0--z1; draw z0--z2; draw z3..z0..z4;
endchar;

beginchar(108, 15FX#, 22.563FY#, .5FY#); % lamed
  adjust_fit(my_adj#, my_adj#);
  z0=(.6w,h); z1=(0,-d); z2=(w,y1);
  picknib; draw z0--z1--z2;
endchar;

beginchar(109, 23FX#, 22.563FY#, .5FY#); % final mem (same as mem)
  adjust_fit(my_adj#, my_adj#);
  x0=0; x2=.55w; x4=w; y0=y2=y4=h;
  x1=.2w; x3=.9x2; y1=y3=.45h; z5=(x3,-d);
  picknib; draw z0--z1--z2{down}..z3&z3{(1,.5)}..z4&z4{down}..z5;
endchar;

beginchar(110, 23FX#, 22.563FY#, .5FY#); % mem
  adjust_fit(my_adj#, my_adj#);
  x0=0; x2=.55w; x4=w; y0=y2=y4=h;
  x1=.2w; x3=.9x2; y1=y3=.45h; z5=(x3,-d);
  picknib; draw z0--z1--z2{down}..z3&z3{(1,.5)}..z4&z4{down}..z5;
endchar;

beginchar(111, 16FX#, 22.563FY#, .5FY#); % final nun (same as nun)
  adjust_fit(my_adj#, my_adj#);
  y0=h; y3=-d; x0=.66w; x3=w-x0; z1=(0,.7h); z2=(w,y1);
  picknib; draw z0--z1--z2--z3;
endchar;

beginchar(112, 16FX#, 22.563FY#, .5FY#); % nun
  adjust_fit(my_adj#, my_adj#);
  y0=h; y3=-d; x0=.66w; x3=w-x0; z1=(0,.7h); z2=(w,y1);
  picknib; draw z0--z1--z2--z3;
endchar;

beginchar(113, 21FX#, 22.563FY#, .5FY#); % samekh
  adjust_fit(my_adj#, my_adj#);
  z6=(.5w,y4); z7=(x6,-d); z0=(.25w,h); z1=(w-x0,y0);
  z2=(x0-.2w, .8h); z3=(w-x2,y2); z4=(0,.6h); z5=(w-x4,y4);
  picknib; draw z0--z1; draw z2--z3; draw z4--z5; draw z6--z7;
endchar;

beginchar(114, 23.063FX#, 22.563FY#, .5FY#); % ayin; stolen from tet
  adjust_fit(my_adj#, my_adj#);
  z50=(.5w, h); z52=(x50,-d); z51=(w,.5h); z53=(0,y51);
  path p; p := z50..z51..z52..z53..cycle; 
  picknib; draw p; 
endchar;

beginchar(115, 16FX#, 22.563FY#, .5FY#); % final fe (same as fe)
  adjust_fit(my_adj#, my_adj#);
  z1=(w,h); z0=(0,y1-.2h); z2=(.45w,-d);
  picknib; draw z0--z1{down}..{-1,-.5}z2;
endchar;

beginchar(116, 16FX#, 22.563FY#, .5FY#); % pe
  adjust_fit(my_adj#, my_adj#);
  z1=(w,h); z0=(0,y1-.2h); z2=(.45w,-d);
  picknib; draw z0--z1{down}..{-1,-.5}z2;
endchar;

beginchar(117, 16FX#, 22.563FY#, .5FY#); % final tsade (same as tsade)
  adjust_fit(my_adj#, my_adj#);
  z0=(0,-d); z1=(.1w,h); y2=.8h; z2=whatever[z0,z1];
  z3=(.9w,h); z4=(.5w,.6h); z5=(w,y4+.05h);
  picknib; draw z0--z1; draw z2--z3--z4--z5;
endchar;

beginchar(118, 16FX#, 22.563FY#, .5FY#); % tsade
  adjust_fit(my_adj#, my_adj#);
  z0=(0,-d); z1=(.1w,h); y2=.8h; z2=whatever[z0,z1];
  z3=(.9w,h); z4=(.5w,.6h); z5=(w,y4+.05h);
  picknib; draw z0--z1; draw z2--z3--z4--z5;
endchar;

beginchar(119, 20FX#, 22.563FY#, 0.5FY#); % qof
  adjust_fit(my_adj#, my_adj#);
  z0=(0,.65h); z2=(w,y0); z1=(.5w, h); picknib;
  z3=(.5w, -d);
  draw z0..z1..z2; draw z1--z3; draw z0--z2;
endchar;

beginchar(120, 14FX#, 22.563FY#, 0.5FY#); % resh
  adjust_fit(my_adj#, my_adj#);
  z0=(w,h); z1=(x0,-d); z3=(x0,.4h); z2=(0, .45[y3,y0]);
  picknib; draw z1--z0--z2--z3;
endchar;

beginchar(121, 29FX#, 22.563FY#, 0.5FY#); % shin
  adjust_fit(my_adj#, my_adj#);
  y0=y2=y4=h; y1=y3=-d; x0=0; x4=w; x2=.45[x0,x4];
  x1=.45[x0,x2]; x3=.5[x2,x4]; picknib;
  draw z0--z1--z2--z3--z4;
endchar;

beginchar(122, 18FX#, 22.563FY#, .5FY#); % taf
  adjust_fit(my_adj#, my_adj#);
  x0=x3=0; x1=x2=w; y1=y3=h; y0=y2=-d;
  picknib; draw z0--z1; draw z2--z3;
endchar;

font_slant := 0;
font_normal_space := 11 * FX#;
font_normal_stretch := 3.631 * FX#;
font_normal_shrink := 2.421 * FX#;
font_quad := 21.787 * FX#;
designsize := FontSize;

end.