%		ogham.mf
% This font was designed by Alan M Stanier	( alan@essex.ac.uk ),
% at Essex University Computer Service, Colchester, Essex CO4 3EA. England.
% 
% If you make significant additions or improvements to the font, please email me an updated version
%
%
%	The OGHAM alphabet is found on a number of Irish and Pictish
% carvings dated from the 4th century AD.
% The characters touch or cross the edges of the stone.
%
% There are 20 characters in the alphabet, representing:
%
%	a	o	u 	e 	i
%	b	l	v	s	n
%	h	d	t	c	q
%	m	g	ng	z	r
%
% I have coded ng as 'j'.
%
% Each character is given in lower case (as carved on vertical edges)
% and upper case (as carved on horizontal edges).
%
mg:=1.0;	% CHANGE THIS TO GET DIFFERENT SIZES OF FONT (font size = 10*mg pt)

mode_setup;
pensize#:=mg*0.5pt;
bigpensize#:=mg*1pt;
height#:=mg*15pt#;
bigheight#:=mg*20pt#;
define_pixels(height);

def getpen = pickup pencircle scaled pensize# enddef;
def getbigpen = pickup pencircle scaled bigpensize# enddef;

def top =
  getbigpen;
  draw (-5*mg,15*mg) -- (40*mg,15*mg);
  getpen;
enddef;

def bigtop =
  getbigpen;
  draw (-5,15*mg) -- (50*mg,15*mg);
  getpen;
enddef;

def edge =
  getbigpen;
  draw (15*mg,0) -- (15*mg,30*mg);
  getpen;
enddef;

def bigedge =
  getbigpen;
  draw (15*mg,0) -- (15*mg,40*mg);
  getpen;
enddef;

def full(expr n) =
  edge;
  for i = 1 upto n: draw (0,5*i*mg) -- (30*mg,5*i*mg); endfor
enddef;

def lineright(expr n) =
  edge;
  for i = 1 upto n: draw (15*mg,5*i*mg) -- (30*mg,5*i*mg); endfor
enddef;

def lineleft(expr n) =
  edge;
  for i = 1 upto n: draw (0,5*i*mg) -- (15*mg,5*i*mg); endfor
enddef;

def slope(expr n) =
  bigedge;
  for i = 1 upto n: draw (0,(6*i+16)*mg) -- (30*mg,6*(i-1)*mg); endfor
enddef;

def across(expr n) =
  top;
  for i = 1 upto n: draw (5*i*mg,0) -- (5*i*mg,30*mg); endfor
enddef;

def lineup(expr n) =
  top;
  for i = 1 upto n: draw (5*i*mg,15*mg) -- (5*i*mg,30*mg); endfor
enddef;

def linedown(expr n) =
  top;
  for i = 1 upto n: draw (5*i*mg,0) -- (5*i*mg,15*mg); endfor
enddef;

def lean(expr n) =
  bigtop;
  for i = 1 upto n: draw (6*(i-1)*mg,0) -- ((6*i+16)*mg,30*mg); endfor
enddef;

beginchar("a",height#,height#,0); full(1); endchar;
beginchar("A",height#,height#,0); across(1); endchar;
beginchar("o",height#,height#,0); full(2); endchar;
beginchar("O",height#,height#,0); across(2); endchar;
beginchar("u",height#,height#,0); full(3); endchar;
beginchar("U",height#,height#,0); across(3); endchar;
beginchar("e",height#,height#,0); full(4); endchar;
beginchar("E",height#,height#,0); across(4); endchar;
beginchar("i",height#,height#,0); full(5); endchar;
beginchar("I",height#,height#,0); across(5); endchar;

beginchar("b",height#,height#,0); lineright(1); endchar;
beginchar("B",height#,height#,0); linedown(1); endchar;
beginchar("l",height#,height#,0); lineright(2); endchar;
beginchar("L",height#,height#,0); linedown(2); endchar;
beginchar("v",height#,height#,0); lineright(3); endchar;
beginchar("V",height#,height#,0); linedown(3); endchar;
beginchar("s",height#,height#,0); lineright(4); endchar;
beginchar("S",height#,height#,0); linedown(4); endchar;
beginchar("n",height#,height#,0); lineright(5); endchar;
beginchar("N",height#,height#,0); linedown(5); endchar;

beginchar("h",height#,height#,0); lineleft(1); endchar;
beginchar("H",height#,height#,0); lineup(1); endchar;
beginchar("d",height#,height#,0); lineleft(2); endchar;
beginchar("D",height#,height#,0); lineup(2); endchar;
beginchar("t",height#,height#,0); lineleft(3); endchar;
beginchar("T",height#,height#,0); lineup(3); endchar;
beginchar("c",height#,height#,0); lineleft(4); endchar;
beginchar("C",height#,height#,0); lineup(4); endchar;
beginchar("q",height#,height#,0); lineleft(5); endchar;
beginchar("Q",height#,height#,0); lineup(5); endchar;

beginchar("m",height#,bigheight#,0); slope(1); endchar;
beginchar("M",bigheight#,height#,0); lean(1); endchar;
beginchar("g",height#,bigheight#,0); slope(2); endchar;
beginchar("G",bigheight#,height#,0); lean(2); endchar;
beginchar("j",height#,bigheight#,0); slope(3); endchar;
beginchar("J",bigheight#,height#,0); lean(3); endchar;
beginchar("z",height#,bigheight#,0); slope(4); endchar;
beginchar("Z",bigheight#,height#,0); lean(4); endchar;
beginchar("r",height#,bigheight#,0); slope(5); endchar;
beginchar("R",bigheight#,height#,0); lean(5); endchar;

end
