%*****************************************************************************
%        Copyright (c) 1989 by N. N. Billawala
%*****************************************************************************


% punctr.mf  punctuation: for roman text set

% 8 characters


iff OK "x":  "Cross for Polish l and L";   %******* 1 ACCENT WIDTH  x 20 degrees
  beginchar(oct"040",accent_w*width#+b_mono#,ascender#,0); 
  
  save_num(theta)=max(0,20-.5oblique);                       % angle of the bar
  save_num(thickness)=.5[accent_thin_end,accent_thick_end]*1/cosd theta;
  min_limit(join_radius)(.5thickness);
  bot lft z1l=(0,.4h)//; multpos(1,2)(thickness,90+ if bold:theta else:0 fi);
  rt x2l=lft x1l+w;  z2l=z1l+(whatever,0) rotated theta;
  z0=.5[z1l,z2l]; 
  
  p1=(z0 soften(z2l,z2r,z1r,z1l) z0)--cycle;
 
  showpoints(0,1,2);

draw (0,xheight)--(w,xheight);
adjust(0+m_a*b_mfit#,0+m_a*b_mfit#); 
show_character; endchar;

% Theta here is the angle of the bar




iff OK "'":  "Right quotes or closing quotes"; 
  beginchar(oct"042",accent_w*width#+b_mono#,cap#,0);
  save_num(head)=accent_dot_diameter;
  top z1=(.5head,.75[xheight,cap]-.5head)//;
  top z2=(w-.5head,y1)//;
  ref1=comma(z1,head,min(.6xheight,1.5pt),accent_thin_end,0);
  ref2=comma(z2,head,min(.6xheight,1.5pt),accent_thin_end,0); 
  p1=ref1 rotatedaround (z1,if prime:prime_angle fi -oblique);
  p2=ref2 rotatedaround (z2,if prime:prime_angle fi -oblique);
  showpoints(1,2);
adjust(v_a*fitbasis.lc#+m_a*b_mfit#,v_a*fitbasis.lc#+m_a*b_mfit#); 
show_character; endchar;



iff OK "-":  "Hyphen";
  beginchar(oct"055",.33width#+b_mono#,cap#,0); 
  pickup mathpen;
  lft z1=(0,math_axis)//;
  rt z2=lft z1+(w,0);
  draw z1--z2;
adjust(v_f*fitbasis.uc#+m_a*b_mfit#,v_f*fitbasis.uc#+m_a*b_mfit#); 
show_character; endchar;

% use different mathpen for softness
% character position, but not shape slants with obliqueness
% must make sure that the plus/minus have the same widths


% rotation and slant of position with obliqueness
iff OK "`":  "Left quotes or open quotes"; 
  beginchar(oct"134",accent_w*width#+b_mono#,cap#,0);
  save_num(head)=accent_dot_diameter;
  top z1=(.5head,.75[xheight,cap]-.5head-min(.6xheight,2pt))//;
  top z2=(w-.5head,y1)//;
  ref1=comma(z1,head,min(.6xheight,1.5pt),accent_thin_end,0);
  ref2=comma(z2,head,min(.6xheight,1.5pt),accent_thin_end,0);  
  p1=ref1 rotatedaround (z1,180 if prime:prime_angle fi -oblique);
  p2=ref2 rotatedaround (z2,180 if prime:prime_angle fi -oblique);
  showpoints(1,2);
adjust(v_a*fitbasis.lc#+m_a*b_mfit#,v_a*fitbasis.lc#+m_a*b_mfit#); 
show_character; endchar;

% rotation and slant of position with obliqueness



iff OK "x":  "Dot accent"; 
  beginchar(oct"137",accent_w*width#+b_mono#,
    accent_height#+xheight#+2/3accent_depth#,0); 
  bot z1=(.5w,h-accent_dot_diameter)//;
  p1=dot.b(z1,accent_dot_diameter);
  showpoints(1);

draw (0,xheight)--(w,xheight);
adjust(0+m_a*b_mfit#,0+m_a*b_mfit#); 
show_character; endchar;

% no slant of shape with obliqueness


iff OK "-":  "En-Dash";
  beginchar(oct"173",.5width#+.5mono#,cap#,0); 
  pickup dashpen;
  lft z1=(0,math_axis)//;
  rt z2=lft z1+(w,0);
  draw z1--z2;
adjust(.25mono#,.25mono#); 
show_character; endchar;

% use different dashpen for softness
% character position, but not shape slants with obliqueness
% must make sure that the plus/minus have the same widths


iff OK "-":  "Em-Dash";
  beginchar(oct"174",width#+mono#,cap#,0); 
  pickup dashpen;
  lft z1=(0,math_axis)//;
  rt z2=lft z1+(w,0);
  draw z1--z2;
adjust(0,0); 
show_character; endchar;

% use different dashpen for softness
% character position, but not shape slants with obliqueness
% must make sure that the plus/minus have the same widths
       


iff OK "x":  "Long Hungarian umlaut accent";   
  beginchar(oct"175",.8accent_w*width#+b_mono#,
    accent_height#+xheight#+accent_depth#,0); 

  top rt z1=(round(.45w),h)//;  
  bot lft z2=(0,h-max(1,accent_depth))//;
  top rt z3=(w,h)//;  
  bot lft z4=(round(.55w),h-max(1,accent_depth))//;
  p1=prime_accent(z1,z2,accent_thick_end,accent_thin_end);
  p2=prime_accent(z3,z4,accent_thick_end,accent_thin_end);
  showpoints(1,2,3,4);

draw (0,xheight)--(w,xheight);
adjust(0+m_a*b_mfit#,0+m_a*b_mfit#); 
show_character; endchar;

