% mathematical symbols by Anthony Phan.
% file: mathsmsy.mf (various small mathematical symbols)
% last modification: May 16, 2005.
% Only known charcodes will be generated.

def horizontal_rules_list=math_axis,
  -body_depth,-desc_depth,x_height,cap_height,asc_height,body_height,
  0.5[-d,h],math_axis
enddef;

% SMALL TRIANGLES

beginchar(triangle_small_left,
    7u#+2appr#,v_center(7u#));
  "Small triangle left";
  pickup tiny.nib;
  a:=7u;
  set_triangle(left,a,rth0,true,false);
  filldraw stroke z1e--z2e--z3e--z1e;
endchar;

beginchar(triangle_small_right,
    7u#+2appr#,v_center(7u#));
  "Small triangle right";
  pickup tiny.nib;
  a:=7u;
  set_triangle(right,a,rth0,true,false);
  filldraw stroke z1e--z2e--z3e--z1e;
endchar;

beginchar(triangle_small_up,
    7u#+2appr#,v_center(7u#));
  "Small triangle up";
  pickup tiny.nib;
  a:=7u;
  set_triangle(up,a,rth0,true,false);
  filldraw stroke z1e--z2e--z3e--z1e;
endchar;

beginchar(triangle_small_down,
    7u#+2appr#,v_center(7u#));
  "Small triangle down";
  pickup tiny.nib;
  a:=7u;
  set_triangle(down,a,rth0,true,false);
  filldraw stroke z1e--z2e--z3e--z1e;
endchar;

% FULL SMALL TRIANGLES

beginchar(triangle_small_full_left,
    7u#+2appr#,v_center(7u#));
  "Small full triangle left";
  pickup tiny.nib;
  a:=7u-0.5rth0;
  set_triangle(left,a,rth0,true,false);
  filldraw z1r--z2r--z3r--cycle;
endchar;

beginchar(triangle_small_full_right,
    7u#+2appr#,v_center(7u#));
  "Small full triangle right";
  pickup tiny.nib;
  a:=7u-0.5rth0;
  set_triangle(right,a,rth0,true,false);
  filldraw z1r--z2r--z3r--cycle;
endchar;

beginchar(triangle_small_full_up,
    7u#+2appr#,v_center(7u#));
  "Small full triangle up";
  pickup tiny.nib;
  a:=7u-0.5rth0;
  set_triangle(up,a,rth0,true,false);
  filldraw z1r--z2r--z3r--cycle;
endchar;

beginchar(triangle_small_full_down,
    7u#+2appr#,v_center(7u#));
  "Small full triangle down";
  pickup tiny.nib;
  a:=7u-0.5rth0;
  set_triangle(down,a,rth0,true,false);
  filldraw z1r--z2r--z3r--cycle;
endchar;

% MEDIUM TRIANGLES

beginchar(triangle_med_left,
    12u#+2appr#,x_height#,0);
  "Medium triangle left";
  pickup tiny.nib;
  a:=2(h+o)/sqrt 3;
  set_triangle(left,a,rth1,true,false);
  filldraw stroke z1e--z2e--z3e--z1e;
endchar;

beginchar(triangle_med_right,
    12u#+2appr#,x_height#,0);
  "Medium triangle right";
  pickup tiny.nib;
  a:=2(h+o)/sqrt 3;
  set_triangle(right,a,rth1,true,false);
  filldraw stroke z1e--z2e--z3e--z1e;
endchar;

beginchar(triangle_med_up,
    12u#+2appr#,x_height#,0);
  "Medium triangle up";
  pickup tiny.nib;
  a:=2(h+o)/sqrt 3; triangle_foot:=0;
  set_triangle(up,a,rth1,false,false);
  filldraw stroke z1e--z2e--z3e--z1e;
endchar;

beginchar(triangle_med_down,
    12u#+2appr#,x_height#,0);
  "Medium triangle down";
  pickup tiny.nib;
  a:=2(h+o)/sqrt 3; triangle_foot:=h;
  set_triangle(down,a,rth1,false,false);
  filldraw stroke z1e--z2e--z3e--z1e;
endchar;

% MEDIUM FULL TRIANGLES

beginchar(triangle_med_full_left,
    12u#+2appr#,x_height#,0);
  "Medium full triangle left";
  pickup tiny.nib;
  a:=2(h+o)/sqrt 3;
  set_triangle(left,a,rth1,true,false);
  filldraw z1r--z2r--z3r--cycle;
endchar;

beginchar(triangle_med_full_right,
    12u#+2appr#,x_height#,0);
  "Medium full triangle right";
  pickup tiny.nib;
  a:=2(h+o)/sqrt 3;
  set_triangle(right,a,rth1,true,false);
  filldraw z1r--z2r--z3r--cycle;
endchar;

beginchar(triangle_med_full_up,
    12u#+2appr#,x_height#,0);
  "Medium full triangle up";
  pickup tiny.nib;
  a:=2(h+o)/sqrt 3; triangle_foot:=0;
  set_triangle(up,a,rth1,false,false);
  filldraw z1r--z2r--z3r--cycle;
endchar;

beginchar(triangle_med_full_down,
    12u#+2appr#,x_height#,0);
  "Medium full triangle down";
  pickup tiny.nib;
  a:=2(h+o)/sqrt 3; triangle_foot:=h;
  set_triangle(down,a,rth1,false,false);
  filldraw z1r--z2r--z3r--cycle;
endchar;

% BIG TRIANGLES

beginchar(triangle_big_left,
    13u#+2appr#,cap_height#,0);
  "Big triangle left";
  pickup tiny.nib;
  a:=2(h+o)/sqrt 3;
  set_triangle(left,a,rth1,true,false);
  filldraw stroke z1e--z2e--z3e--z1e;
endchar;

beginchar(triangle_big_right,
    13u#+2appr#,cap_height#,0);
  "Big triangle right";
  pickup tiny.nib;
  a:=2(h+o)/sqrt 3;
  set_triangle(right,a,rth1,true,false);
  filldraw stroke z1e--z2e--z3e--z1e;
endchar;

beginchar(triangle_big_up,
    13u#+2appr#,cap_height#,0);
  "Big triangle up";
  pickup tiny.nib;
  a:=2(h+o)/sqrt 3; triangle_foot:=0;
  set_triangle(up,a,rth1,false,false);
  filldraw stroke z1e--z2e--z3e--z1e;
endchar;

beginchar(triangle_big_down,
    13u#+2appr#,cap_height#,0);
  "Big triangle down";
  pickup tiny.nib;
  a:=2(h+o)/sqrt 3; triangle_foot:=h;
  set_triangle(down,a,rth1,false,false);
  filldraw stroke z1e--z2e--z3e--z1e;
endchar;

% BIG FULL TRIANGLES

beginchar(triangle_big_full_left,
    13u#+2appr#,cap_height#,0);
  "Big full triangle left";
  pickup tiny.nib;
  a:=2(h+o)/sqrt 3;
  set_triangle(left,a,rth1,true,false);
  filldraw z1r--z2r--z3r--cycle;
endchar;

beginchar(triangle_big_full_right,
    13u#+2appr#,cap_height#,0);
  "Big full triangle right";
  pickup tiny.nib;
  a:=2(h+o)/sqrt 3;
  set_triangle(right,a,rth1,true,false);
  filldraw z1r--z2r--z3r--cycle;
endchar;

beginchar(triangle_big_full_up,
    13u#+2appr#,cap_height#,0);
  "Big full triangle up";
  pickup tiny.nib;
  a:=2(h+o)/sqrt 3; triangle_foot:=0;
  set_triangle(up,a,rth1,false,false);
  filldraw z1r--z2r--z3r--cycle;
endchar;

beginchar(triangle_big_full_down,
    13u#+2appr#,cap_height#,0);
  "Big full triangle down";
  pickup tiny.nib;
  a:=2(h+o)/sqrt 3; triangle_foot:=h;
  set_triangle(down,a,rth1,false,false);
  filldraw z1r--z2r--z3r--cycle;
endchar;