% ogham.mf % This font was designed by Alan M Stanier ( alan@essex.ac.uk ), % at Essex University Computer Service, Colchester, Essex CO4 3EA. England. % % Maintenance now overseen by Robin Fairbairns of Cambridge University. % (search on the web for my email address) % % Alan Stanier asked that if you make significant additions % or improvements to the font, you should send him an updated version; % if you send it to CTAN as a contribution, and mark it for my attention, % I shall see that it is installed, and ensure that Alan has a copy. % % The font is released into the public domain. % % % 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#:=.4pt#; % a unit length, not a magnification. mode_setup; font_size 10pt#; pensize#:=1.25*mg#; bigpensize#:=2.0*mg#; height#:=15pt#; bigheight#:=20pt#; define_pixels(mg); define_blacker_pixels(pensize,bigpensize); 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