% magenc.mf 1.2.0 1994/10/11 -- Malvern G (greek)
% Copyright 1994 P. Damian Cugley

%%% @METAFONT-file {
%%%   filename       = "magenc.mf",
%%%   version        = "1.2.0",
%%%   date           = "1994/10/11",
%%%   package        = "Malvern 1.2",
%%%   author         = "P. Damian Cugley",
%%%   email          = "damian.cugley@comlab.ox.ac.uk",
%%%   address        = "Oxford University Computing Laboratory,
%%%                     Parks Road, Oxford  OX1 3QD, UK",
%%%   codetable      = "USASCII",
%%%   keywords       = "Malvern, METAFONT, font, typefont, TeX",
%%%   supported      = "Maybe",
%%%   abstract       = "Greek encoding definition for the Malvern
%%%                     font family.",
%%%   dependencies   = "other program files",
%%% }

%  See the Malvern Handbook (maman.tex) for more info about Malvern.
%  This software is available freely but without warranty.
%  See the file COPYING for details.

%{{{ magenc.mf

numeric c; c = -1;
vardef next_code = 
    c := c + 1;
    if c = 32: c := hex"80"; fi
    c
enddef;

%{{{   capitals

code.gr.cap.alpha	= ASCII"A";
code.gr.cap.beta	= ASCII"B";
code.gr.cap.sigma1	= ASCII"C";		  % lunate sigma
code.gr.cap.delta	= ASCII"D";
code.gr.cap.epsilon	= ASCII"E";
code.gr.cap.phi		= ASCII"F";
code.gr.cap.gamma	= ASCII"G";
code.gr.cap.eta		= ASCII"H";
code.gr.cap.iota	= ASCII"I";
code.gr.cap.theta	= ASCII"J";
code.gr.cap.kappa	= ASCII"K";
code.gr.cap.lambda	= ASCII"L";
code.gr.cap.mu	    	= ASCII"M";
code.gr.cap.nu		= ASCII"N";
code.gr.cap.omicron	= ASCII"O";
code.gr.cap.pi		= ASCII"P";
code.gr.cap.chi		= ASCII"Q";
code.gr.cap.rho	    	= ASCII"R";
code.gr.cap.sigma	= ASCII"S";
code.gr.cap.tau		= ASCII"T";
code.gr.cap.upsilon	= ASCII"U";
code.gr.cap.digamma	= ASCII"V";		  % obselete
code.gr.cap.omega	= ASCII"W"; 	
code.gr.cap.xi		= ASCII"X";
code.gr.cap.psi		= ASCII"Y";
code.gr.cap.zeta	= ASCII"Z"; 

%code.gr.cap.upsilon1  	= 91;	
%code.gr.cap.koppa	= 92; 	
%code.gr.cap.xi1	= 93;

%}}}    capitals
%{{{   lower case

%  Transliteration as per Yannis's

%  alpha beta gamma delta epsilon zeta eta theta iota kappa mu nu
%    a    b     g     d      e     z    h    j     i    k    m  n
%  xi omicron pi rho sigma final-sigma tau upsilon phi chi psi omega
%   x     o    p  r    s        c       t     u     f   q   y   w

%  also:  koppa digamma lunate-sigma sampi stimga 
%         92/124    v      91/123    64/96

% code.gr.lc.sampi    	= 96;			  % obselete letter

code.gr.lc.alpha	= ASCII"a";
code.gr.lc.beta	    	= ASCII"b";
code.gr.lc.sigma1	= ASCII"c"; 	% lunate sigma
code.gr.lc.delta	= ASCII"d";
code.gr.lc.epsilon    	= ASCII"e";
code.gr.lc.phi	    	= ASCII"f";
code.gr.lc.gamma	= ASCII"g";
code.gr.lc.eta	    	= ASCII"h";
code.gr.lc.iota	    	= ASCII"i";
code.gr.lc.theta	= ASCII"j";
code.gr.lc.kappa	= ASCII"k";
code.gr.lc.lambda	= ASCII"l";
code.gr.lc.mu 	    	= ASCII"m";
code.gr.lc.nu 	    	= ASCII"n";
code.gr.lc.omicron    	= ASCII"o";
code.gr.lc.pi 	    	= ASCII"p";
code.gr.lc.chi	    	= ASCII"q";
code.gr.lc.rho	    	= ASCII"r";
code.gr.lc.sigma	= ASCII"s"; 	% medial sigma ($\sigma$)
code.gr.lc.tau	    	= ASCII"t";
code.gr.lc.upsilon    	= ASCII"u";
code.gr.lc.digamma 	= ASCII"v";		  % obselete letter
code.gr.lc.omega 	= ASCII"w";
code.gr.lc.xi 		= ASCII"x";
code.gr.lc.psi	    	= ASCII"y";
code.gr.lc.zeta	    	= ASCII"z"; 

code.gr.lc.final_sigma  = 127; 	% $\varsigma$
code.gr.lc.phi1	= 92;

%code.gr.lc.koppa 	= 124;			  % obselete letter
%code.gr.lc.epsilon1  	= 125;
%code.gr.lc.theta1	= 127;
%code.gr.lc.rho1	    	= 94;
%code.gr.lc.pi1	    	= 95;

%}}}    lower case
%{{{   punctuation etc.

code.exclam	    	= ASCII"!";
code.colon		= ASCII":";		  % two dots
code.gr.colon		= ASCII";";		  % raised dot
code.gr.question	= ASCII"?";		  % looks like ;
code.full_stop		= ASCII".";
code.comma		= ASCII",";
code.hyphen 	    	= ASCII"-";

code.zero	   	= ASCII"0";
code.percent	    	= ASCII"%";
code.plus_sign 	    	= ASCII"+";
code.asterisk7	    	= ASCII"*";
code.equals 	    	= ASCII"=";
code.paren.left	    	= ASCII"(";
code.paren.right    	= ASCII")";
code.brack.left   	= ASCII"[";
code.brack.right   	= ASCII"]";
code.slash  	    	= ASCII"/";
code.guillemet.left 	= ASCII"{";
code.guillemet.right	= ASCII"}";

code.cwm		= ASCII" "; % same effect as end of word
code.null		= ASCII"@"; % supresses effect of being at end of word

forsuffixes $ = apostrophe, en_dash, em_dash:
    code.$ = next_code;
endfor

%}}}    punctuation
%{{{   marks

code.gr.accent		= next_code;
code.gr.breve		= next_code;
code.gr.macron		= next_code;

code.gr.acute 		= ASCII"'";
code.gr.grave 		= ASCII"`";
code.gr.circumflex 	= ASCII"~";
code.gr.asp 		= ASCII"<";
code.gr.len 		= ASCII">";
code.gr.di 		= 34;
code.gr.iota_sub    	= ASCII"|";

forsuffixes $ = asp, len, di:
    forsuffixes @ = acute, grave, circumflex:
    	code.gr.$.@ = next_code;
    endfor
endfor

code.gr.di.accent = next_code;

if false:

code.gr.iota_sub 	= 0;			  % iota subscript
code.gr.lc.alpha.iota_sub = 1;
code.gr.lc.eta.iota_sub = 2;
code.gr.lc.omega.iota_sub = 3;

code.gr.acute		= 9;
code.gr.grave		= 10;
code.gr.circumflex	= 11;
code.gr.tilde		= 12;
code.gr.accent 		= 13;			  % the new universal accent

code.gr.asp 	    	= 14;
code.gr.asp.acute	= 15;
code.gr.asp.grave	= 16;
code.gr.asp.circumflex	= 17;
code.gr.asp.tilde	= 18;
code.gr.breve	    	= 19; % instead of asp.accent, which does not occur

code.gr.len 	    	= 20;
code.gr.len.acute	= 21;
code.gr.len.grave	= 22;
code.gr.len.circumflex	= 23;
code.gr.len.tilde	= 24;
code.gr.macron	    	= 25; % instead of len.accent

code.gr.di  	    	= 26;
code.gr.di.acute	= 27;
code.gr.di.grave	= 28;
code.gr.di.circumflex	= 29;
code.gr.di.tilde	= 30;
code.gr.di.accent	= 31;

fi

%}}}    marks
%{{{   composites

if c + 1 < hex"10": c := hex"10" - 1; fi

forsuffixes $ = alpha, eta, omega:
    code.gr.lc.$.iota_sub = next_code;
endfor

forsuffixes # = asp, len:
    code.gr.lc.rho.# = next_code;
endfor

forsuffixes $$ = cap, lc:
    forsuffixes $ = sigma, zeta, psi, xi:
    	code.gr.$$.$.breve = next_code;
    endfor
endfor

%if c + 1 < hex"80": c := hex"80" - 1; fi

forsuffixes $ = alpha, alpha.iota_sub, epsilon, eta, eta.iota_sub, 
    	iota, omicron, upsilon, omega, omega.iota_sub:
    forsuffixes @ = accent, acute, grave, circumflex:
    	code.gr.lc.$.@ = next_code;
    endfor
    forsuffixes # = asp, len:
    	forsuffixes @ = , acute, grave, circumflex:
    	    code.gr.lc.$.#.@ = next_code;
    	endfor
    endfor
endfor

forsuffixes $ = iota, upsilon:
    forsuffixes @ = , accent, acute, grave, circumflex:
    	code.gr.lc.$.di.@ = next_code;
    endfor
endfor

if false:
%  These codes are from Levy's fonts.

code.gr.lc.alpha.grave		= hex"80";
code.gr.lc.alpha.asp		= hex"81";
code.gr.lc.alpha.len		= hex"82";

code.gr.lc.alpha.iota_sub.grave = hex"84";
code.gr.lc.alpha.iota_sub.asp = hex"85";
code.gr.lc.alpha.iota_sub.len = hex"86";

code.gr.lc.alpha.acute		= hex"88";
code.gr.lc.alpha.asp.acute	= hex"89";
code.gr.lc.alpha.len.acute	= hex"8A";

code.gr.lc.alpha.iota_sub.acute = hex"8C";
code.gr.lc.alpha.iota_sub.asp.acute = hex"8D";
code.gr.lc.alpha.iota_sub.len.acute = hex"8E";

code.gr.lc.alpha.circumflex	= hex"90";
code.gr.lc.alpha.asp.circumflex = hex"91";
code.gr.lc.alpha.len.circumflex = hex"92";

code.gr.lc.alpha.iota_sub.circumflex = hex"94";
code.gr.lc.alpha.iota_sub.asp.circumflex = hex"95";
code.gr.lc.alpha.iota_sub.len.circumflex = hex"96";

code.gr.lc.eta.grave		= hex"98";
code.gr.lc.eta.asp		= hex"99";
code.gr.lc.eta.len		= hex"9A";

code.gr.lc.eta.iota_sub.grave 	= hex"9C";
code.gr.lc.eta.iota_sub.asp 	= hex"9D";
code.gr.lc.eta.iota_sub.len 	= hex"9E";

code.gr.lc.eta.acute		= hex"A0";
code.gr.lc.eta.asp.acute	= hex"A1";
code.gr.lc.eta.len.acute	= hex"A2";

code.gr.lc.eta.iota_sub.acute 	= hex"A4";
code.gr.lc.eta.iota_sub.asp.acute = hex"A5";
code.gr.lc.eta.iota_sub.len.acute = hex"A6";

code.gr.lc.eta.circumflex	= hex"A8";
code.gr.lc.eta.asp.circumflex = hex"A9";
code.gr.lc.eta.len.circumflex = hex"AA";

code.gr.lc.eta.iota_sub.circumflex = hex"AC";
code.gr.lc.eta.iota_sub.asp.circumflex = hex"AD";
code.gr.lc.eta.iota_sub.len.circumflex = hex"AE";

code.gr.lc.omega.grave		= hex"B0";
code.gr.lc.omega.asp		= hex"B1";
code.gr.lc.omega.len		= hex"B2";

code.gr.lc.omega.iota_sub.grave = hex"B4";
code.gr.lc.omega.iota_sub.asp = hex"B5";
code.gr.lc.omega.iota_sub.len = hex"B6";

code.gr.lc.omega.acute		= hex"B8";
code.gr.lc.omega.asp.acute	= hex"B9";
code.gr.lc.omega.len.acute	= hex"BA";

code.gr.lc.omega.iota_sub.acute = hex"BC";
code.gr.lc.omega.iota_sub.asp.acute = hex"BD";
code.gr.lc.omega.iota_sub.len.acute = hex"BE";

code.gr.lc.omega.circumflex	= hex"C0";
code.gr.lc.omega.asp.circumflex = hex"C1";
code.gr.lc.omega.len.circumflex = hex"C2";

code.gr.lc.omega.iota_sub.circumflex = hex"C4";
code.gr.lc.omega.iota_sub.asp.circumflex = hex"C5";
code.gr.lc.omega.iota_sub.len.circumflex = hex"C6";

code.gr.lc.iota.grave		= hex"C8";
code.gr.lc.iota.asp		= hex"C9";
code.gr.lc.iota.len		= hex"CA";

code.gr.lc.upsilon.grave 	= hex"CC";
code.gr.lc.upsilon.asp 	= hex"CD";
code.gr.lc.upsilon.len 	= hex"CE";

code.gr.lc.iota.acute		= hex"D0";
code.gr.lc.iota.asp.acute	= hex"D1";
code.gr.lc.iota.len.acute	= hex"D2";

code.gr.lc.upsilon.acute 	= hex"D4";
code.gr.lc.upsilon.asp.acute	= hex"D5";
code.gr.lc.upsilon.len.acute = hex"D6";

code.gr.lc.iota.circumflex	= hex"D8";
code.gr.lc.iota.asp.circumflex = hex"D9";
code.gr.lc.iota.len.circumflex = hex"DA";

code.gr.lc.upsilon.circumflex 	= hex"DC";
code.gr.lc.upsilon.asp.circumflex = hex"DD";
code.gr.lc.upsilon.len.circumflex = hex"DE";

code.gr.lc.epsilon.grave	= hex"E0";
code.gr.lc.epsilon.asp	= hex"E1";
code.gr.lc.epsilon.len	= hex"E2";

code.gr.lc.omicron.grave 	= hex"E4";
code.gr.lc.omicron.asp 	= hex"E5";
code.gr.lc.omicron.len 	= hex"E6";

code.gr.lc.epsilon.acute	= hex"E8";
code.gr.lc.epsilon.asp.acute	= hex"E9";
code.gr.lc.epsilon.len.acute	= hex"EA";

code.gr.lc.omicron.acute 	= hex"EC";
code.gr.lc.omicron.asp.acute	= hex"ED";
code.gr.lc.omicron.len.acute = hex"EE";

code.gr.lc.iota.di		= hex"F0";
code.gr.lc.iota.di.grave	= hex"F1";
code.gr.lc.iota.di.acute	= hex"F2";
code.gr.lc.iota.di.circumflex	= hex"F3";
code.gr.lc.upsilon.di		= hex"F4";
code.gr.lc.upsilon.di.grave	= hex"F5";
code.gr.lc.upsilon.di.acute	= hex"F6";
code.gr.lc.upsilon.di.circumflex = hex"F7";

code.gr.lc.rho.asp	    	= hex"FB";
code.gr.lc.rho.len	    	= hex"FC";

fi

%}}}   composites

font_coding_scheme "Malvern G " & maversion;

%}}}  Malvern G

% Local variables:
% fold-folded-p: t
% End: