summaryrefslogtreecommitdiff
path: root/language/ethiopia/ethiop/mf/ethiomac.mf
diff options
context:
space:
mode:
Diffstat (limited to 'language/ethiopia/ethiop/mf/ethiomac.mf')
-rw-r--r--language/ethiopia/ethiop/mf/ethiomac.mf353
1 files changed, 353 insertions, 0 deletions
diff --git a/language/ethiopia/ethiop/mf/ethiomac.mf b/language/ethiopia/ethiop/mf/ethiomac.mf
new file mode 100644
index 0000000000..a488b4b881
--- /dev/null
+++ b/language/ethiopia/ethiop/mf/ethiomac.mf
@@ -0,0 +1,353 @@
+%-------------------------------------------------------------
+% This is ETHIOPMAC.MF as of Dec, 1995 by Jochen Metzinger
+% originally distributed by Abass B. Alamnehe [February, 1993]
+%-------------------------------------------------------------
+
+%%% THUMB %%%
+
+def t_thumb(suffix @)=
+ pickup fine.nib;
+ x@a=x@s=x@-3.25u; x@b=x@a+.75u; x@c=x@a; x@d=x@a+2u; x@e=x@a+3.25u;
+ x@f=x@a+3.25u; x@g=x@a+1.75u;
+ y@a=y@-.1h+oo; y@b=y@; y@c=y@+.1h-oo;
+ y@d=y@c+oo; y@e=y@c-.025h; y@f=y@a+.05h; y@g=y@a-oo;
+ fill flex(z@a,z@b,z@c) & flex(z@c,z@d,z@e)...flex(z@f,z@g,z@a)
+ & cycle;
+ penlabels(@,@a,@b,@c,@d,@e,@f,@g);
+enddef;
+
+def left_up_thumb(suffix @)=
+ pickup tiny.nib;
+ x@a=x@; y@a=y@;
+ x@b=x@-1.9u; x@c=x@-1.7u; x@d=x@-2.2u; x@e=x@-.5u; x@f=x@-.5u;
+ y@b=y@; y@c=y@+.07h; y@d=y@+.15h; y@e=y@+.14h; y@f=y@;
+ pickup fine.nib;
+ filldraw flex(z@b,z@c,z@d) & flex(z@d,z@e,z@a)
+ & flex(z@a,z@f,z@b) & cycle;
+ pickup fine.nib;
+ labels(x@,@a,@b,@c,@d,@e,@f,@g,@i);
+enddef;
+
+%%% WING %%%
+
+def upper_left_wing(suffix @)=
+ pickup fine.nib; pos@g(vair,90); pos@i(vair,90);
+ x@g=x@; x@i=x@-1.5u; y@g=y@i=y@;
+ filldraw stroke z@g.e--z@i.e;
+ x@a=x@-1.52u; y@a=y@;
+ x@b=x@-3.9u; x@c=x@-3.7u; x@d=x@-4.2u; x@e=x@-2.5u; x@f=x@-2.5u;
+ y@b=y@-oo; y@c=y@+.07h; y@d=y@+.15h; y@e=y@+.14h; y@f=y@-oo;
+ filldraw flex(z@b,z@c,z@d) & flex(z@d,z@e,z@a)
+ & flex(z@a,z@f,z@b) & cycle;
+ labels(x@,@a,@b,@c,@d,@e,@f,@g,@i);
+enddef;
+
+def upper_right_wing(suffix $)=
+ pickup fine.nib; pos$a(vair,90); pos$b(vair,90);
+ x$a=x$; x$b=x$+1.5u; y$a=y$b=y$;
+ filldraw stroke z$a.e--z$b.e;
+ x$g=x$+1.52u; y$g=y$;
+ x$i=x$+3.9u; x$j=x$+3.7u; x$k=x$+4.2u; x$l=x$+2.5u; x$m=x$+2.5u;
+ y$i=y$-oo; y$j=y$+.07h; y$k=y$+.15h; y$l=y$+.14h; y$m=y$-oo;
+ filldraw flex(z$i,z$j,z$k) & flex(z$k,z$l,z$g)
+ & flex(z$g,z$m,z$i) & cycle;
+ labels(x$,$g,$i,$j,$k,$l,$m,$a,$b);
+enddef;
+
+def upside_down_left_wing(suffix @)=
+ pickup tiny.nib;
+ pos@g(bar,90); pos@i(bar,90);
+ x@g=x@; x@i=x@-2u-eps; y@g=y@i=y@;
+ draw z@g--z@i;
+ x@a=x@-2u; y@a=y@; x@b=x@-3.9u; x@c=x@-3.7u;
+ x@d=x@-4.2u; x@e=x@-2.5u; x@f=x@-2.5u;
+ y@b=y@; y@c=y@+.07h; y@d=y@+.15h; y@e=y@+.14h; y@f=y@;
+ pickup fine.nib;
+ filldraw flex(z@b,z@c,z@d) & flex(z@d,z@e,z@a)
+ & flex(z@a,z@f,z@b) & cycle;
+ pickup fine.nib;
+ labels(x@,@a,@b,@c,@d,@e,@f,@g,@i);
+enddef;
+
+def rt_wing(suffix $)(expr x_bar, slope)=
+ pickup fine.nib;
+ x$g=x$; x$:=x$+x_bar;
+ x$a=x$; x$b=x$+2u; x$c=x$+2u; x$d=x$+2u; x$e=x$+2.5u;
+ x$f=x$+.75u; x$h=x$a;
+ y$a=y$+slope; y$b=y$+o+slope; y$c=y$b-.025h; y$d=y$b-.075h;
+ y$e=y$b-.135h-o; y$f=y$b-.15h-o; y$g=y$; y$h=y$a;
+ if x_bar > 0:
+ pos$g(vair,90); pos$h(vair,90);
+ filldraw stroke z$g--z$h;
+ fi
+ filldraw flex(z$a,z$b,z$c) & flex(z$c,z$d,z$e)
+ & flex(z$e,z$f,z$a) & cycle;
+ labels(x$,$a,$b,$c,$d,$e,$f,$g);
+enddef;
+
+def lft_wing(suffix $)(expr x_bar, slope)=
+ pickup fine.nib;
+ x$g=x$; x$:=x$-x_bar;
+ x$a=x$; x$b=x$-2u; x$c=x$-2u; x$d=x$-2u; x$e=x$-2.5u;
+ x$f=x$-.75u; x$h=x$a;
+ y$a=y$-slope; y$b=y$-2slope; y$c=y$b-.025h; y$d=y$b-.075h;
+ y$e=y$b-.135h-o; y$f=y$b-.15h-o; y$g=y$; y$h=y$a;
+ if x_bar > 0:
+ pos$g(vair,90); pos$h(vair,90);
+ filldraw stroke z$g--z$h;
+ fi
+ filldraw flex(z$a,z$b,z$c) & flex(z$c,z$d,z$e)
+ & flex(z$e,z$f,z$a) & cycle;
+ labels(x$,$a,$b,$c,$d,$e,$f,$g);
+enddef;
+
+def right_wing_no_bar(suffix @)=
+ x@a=x@; y@a=y@;
+ x@b=x@-1.9u; x@c=x@-1.7u; x@d=x@-2.2u; x@e=x@-.5u; x@f=x@-.5u;
+ y@b=y@; y@c=y@-.07h; y@d=y@-.15h; y@e=y@-.14h; y@f=y@;
+ pickup fine.nib;
+ filldraw flex(z@b,z@c,z@d) & flex(z@d,z@e,z@a) & flex(z@a,z@f,z@b)
+ & cycle;
+ pickup fine.nib;
+ labels(x@,@a,@b,@c,@d,@e,@f,@g,@i);
+enddef;
+
+def r_wing(suffix $)=
+ pickup fine.nib; x$g=x$; y$g=y$;
+ x$i=x$+2u; x$j=x$+1.75u; x$k=x$+2.5u; x$l=x$+.5u; x$m=x$+.5u;
+ y$i=y$; y$j=y$-.07h; y$k=y$-.15h; y$l=y$-.14h; y$m=y$;
+ filldraw flex(z$i,z$j,z$k) & flex(z$k,z$l,z$g)
+ & flex(z$g,z$m,z$i) & cycle;
+ labels(x$,$g,$i,$j,$k,$l,$m,$a,$b);
+enddef;
+
+def p_wing(suffix $)=
+ pickup fine.nib; x$g=x$; y$g=y$;
+ x$i=x$-1.9u; x$j=x$-1.7u; x$k=x$-2.2u; x$l=x$-.5u; x$m=x$-.5u;
+ y$i=y$; y$j=y$-.07h; y$k=y$-.15h; y$l=y$-.14h; y$m=y$;
+ filldraw flex(z$i,z$j,z$k) & flex(z$k,z$l,z$g)
+ & flex(z$g,z$m,z$i) & cycle;
+ pickup fine.nib;
+ labels(x$,$g,$i,$j,$k,$l,$m,$a,$b);
+enddef;
+
+def t_wing(suffix $)=
+ pickup fine.nib;
+ x$a=x$; x$b=x$c=x$d=x$-2u; x$e=x$-2.5u; x$f=x$-.75u;
+ y$a=y$c=y$; y$b=y$+.025h; y$d=y$-.05h; y$e=y$-.11h-o;
+ y$f=y$-.125h-o;
+ filldraw flex(z$a,z$b,z$c) & flex(z$c,z$d,z$e)
+ & flex(z$e,z$f,z$a) & cycle;
+ labels($,$a,$b,$c,$d,$e,$f);
+enddef;
+
+%%% RING %%%
+
+def half_ring(suffix @) =
+ pickup fine.nib;
+ pos@1(vair,270); penpos@2(stem,360); pos@3(vair,90);
+ pos@4(vair,90); pos@5(vair,270);
+ x@5=x@4=x@+fine; x@1=x@3=x@5+1u; x@2=x@1+2u;
+ y@5=y@1=y@+.5o; y@3=y@4=y@5+.225h; y@2=.5[y@5,y@3];
+ filldraw stroke z@5e..pulled_super_arc.e(@1,@2)(superpull)
+ .. pulled_super_arc.e(@2,@3)(superpull)..z@4e;
+ penlabels(@,@1,@2,@3);
+enddef;
+
+def jj_ring(suffix @) =
+ pickup fine.nib;
+ pos@1(vair,270); pos@2(stem,0); pos@3(vair,90);
+ pos@4(vair,90); pos@5(vair,270);
+ x@5=x@4=x@+fine; x@1=x@3=x@5+.75u; x@2=x@1+1.72u;
+ y@5=y@1=y@+o; y@3=y@4=y@5+.225h; y@2=.5[y@5,y@3];
+ filldraw stroke z@5e...pulled_arc.e(@1,@2)
+ .. pulled_arc.e(@2,@3)...z@4e;
+ penlabels(@,@1,@2,@3);
+enddef;
+
+def large_ring(suffix $)(expr theta) =
+ pickup tiny.nib;
+ transform t; t=identity rotatedaround((.5w,.5h),theta);
+ x$a=x$c=x$+1.75u; x$b=x$b'=x$; x$d=x$d'=x$a+2u; x$e=x$f=x$+1.75u;
+ y$a=y$b=y$d'=y$+.25h; y$b'=y$d=y$c=y$-.05h; y$e=y$+.2h; y$f=y$;
+ path p, q;
+ p=z$a..z$b..z$b'..z$c..z$d..z$d'..cycle;
+ q=z$e..z$f..cycle;
+ fill p transformed t;
+ unfill q transformed t;
+ penlabels($,$a,$b,$b',$c,$d,$d',$e,$f);
+enddef;
+
+def rfive_ring(suffix $)(expr theta)=
+ pickup tiny.nib;
+ transform t; t=identity rotatedaround((.5w,.5h),theta);
+ x$a=x$c=x$+1.75u; x$b=x$b'=x$; x$d=x$d'=x$a+2u; x$e=x$f=x$+1.75u;
+ y$a=y$b=y$d'=y$+.25h; y$b'=y$d=y$c=y$-.05h; y$e=y$+.2h; y$f=y$;
+ path p, q;
+ p=z$a..z$b..z$b'..z$c..z$d..z$d'..cycle;
+ q=z$e..z$f..cycle;
+ fill p transformed t;
+ unfill q transformed t;
+ penlabels(z$a,z$b,z$b',z$c,z$d,z$d',z$e,z$f);
+enddef;
+
+def rseven_ring(suffix $)=
+ pickup fine.nib;
+ pos$a(vair,90); penpos$b(stem,180); pos$b'(stem,205);
+ pos$c(vair,270); penpos$d(stem,0); pos$d'(stem,0);
+ x$a=x$+3u; x$b.l=x$+2.25u; x$b'.l=x$+2.5u; x$c=x$+3u; x$d.l=x$+4u;
+ x$d'.l=x$+4u;
+ y$a=y$+.05h; y$b=y$-.05h; y$b'=y$-.25h; y$c=y$-.225h; y$d=y$-.1h;
+ y$d'=y$;
+ filldraw stroke z$a.e{left}...z$b.e..z$b'.e{right}...z$c.e{right}
+ .. z$d.e..z$d'.e..{left}z$a.e;
+ labels(z$a,z$b,z$b',z$c,z$d,z$d');
+enddef;
+
+def dfive_ring(suffix $)(expr theta)=
+ pickup fine.nib;
+ transform t; t=identity rotatedaround((.5w,.5h),theta);
+ x$:=x$+.4u; y$:=y$-.125h;
+ x$a=x$c=x$+1.5u; x$b=x$b'=x$; x$d=x$d'=x$a+1.75u; x$e=x$f=x$+1.5u;
+ y$b=y$d'=y$+.175h; y$a=y$b+o; y$b'=y$d=y$c=y$-.075h; y$e=y$+.15h;
+ y$f=y$-.025h;
+ path p, q;
+ p=z$a..z$b..z$b'..z$c..z$d..z$d'..cycle;
+ q=z$e...z$f...cycle;
+ fill p transformed t;
+ unfill q transformed t;
+ penlabels(z$a,z$b,z$b',z$c,z$d,z$d',z$e,z$f);
+enddef;
+
+def gfive_ring(suffix $)(expr theta,s)=
+ pickup fine.nib;
+ transform t; t=identity slanted (s) rotatedaround((.5w,.5h),theta);
+ x$:=x$+.4u; y$:=y$-.125h;
+ x$a=x$c=x$+1.5u; x$b=x$b'=x$; x$d=x$d'=x$a+1.75u; x$e=x$f=x$+1.5u;
+ y$b=y$d'=y$+.195h; y$a=y$b+o; y$b'=y$d=y$c=y$-.095h; y$e=y$+.15h;
+ y$f=y$-.025h;
+ path p, q;
+ p=z$a..z$b..z$b'..z$c..z$d..z$d'..cycle;
+ q=z$e...z$f...cycle;
+ fill p transformed t;
+ unfill q transformed t;
+ penlabels(z$a,z$b,z$b',z$c,z$d,z$d',z$e,z$f);
+enddef;
+
+def nfour_ring(suffix $)(expr theta,s)=
+ pickup fine.nib;
+ transform t; t=identity slanted (s) rotatedaround((.5w,.5h),theta);
+ x$:=x$+.4u; y$:=y$-.125h;
+ x$a=x$c=x$+1.75u; x$b=x$b'=x$; x$d=x$d'=x$a+2u; x$e=x$f=x$+1.75u;
+ y$b=y$+.175h; y$a=y$b+.025h; y$b'=y$c=y$-.075h; y$e=y$+.15h; y$f=y$-.035h;
+ y$d'=y$+.175h; y$d=y$-.075h;
+ path p, q;
+ p=z$a...z$b..z$b'..z$c..z$d..z$d'...cycle;
+ q=z$e...z$f...cycle;
+ fill p transformed t;
+ unfill q transformed t;
+ penlabels(z$a,z$b,z$b',z$c,z$d,z$d',z$e,z$f);
+enddef;
+
+def lsix_ring(suffix $)(expr theta) =
+ pickup tiny.nib;
+ transform t; t=identity rotatedaround((.5w,.5h),theta);
+ x$a=x$c=x$+1.75u; x$b=x$b'=x$; x$d=x$d'=x$a+2u; x$e=x$f=x$+1.75u;
+ y$a=y$b=y$d'=y$+.25h; y$b'=y$d=y$c=y$-.05h; y$e=y$+.2h; y$f=y$;
+ path p, q;
+ p=z$a..z$b..z$b'..z$c..z$d..z$d'..cycle;
+ q=z$e..z$f..cycle;
+ fill p transformed t;
+ unfill q transformed t;
+ penlabels(z$a,z$b,z$b',z$c,z$d,z$d',z$e,z$f);
+enddef;
+
+def ynseven_ring(suffix $)(expr theta,s)=
+ pickup fine.nib;
+ transform t; t=identity slanted (s) rotatedaround((.5w,.5h),theta);
+ x$:=x$+.4u; y$:=y$-.125h;
+ x$a=x$c=x$+1.75u; x$b=x$b'=x$; x$d=x$d'=x$a+2u; x$e=x$f=x$+1.75u;
+ y$b=y$d'=y$a=y$+.195h; y$b'=y$d=y$c=y$-.05h; y$e=y$+.15h; y$f=y$-.025h;
+ path p, q;
+ p=z$a...z$b..z$b'..z$c..z$d..z$d'...cycle;
+ q=z$e...z$f...cycle;
+ fill p transformed t;
+ unfill q transformed t;
+ penlabels(z$a,z$b,z$b',z$c,z$d,z$d',z$e,z$f);
+enddef;
+
+def yfive_ring(suffix $)(expr theta)=
+ pickup tiny.nib;
+ transform t; t=identity rotatedaround((.5w,.5h),theta);
+ x$:=x$+.4u; y$:=y$-.125h;
+ x$a=x$c=x$+1.75u; x$b=x$b'=x$; x$d=x$d'=x$a+2u; x$e=x$f=x$+1.75u;
+ y$a=y$b=y$d'=y$+.15h; y$b'=y$d=y$c=y$-.05h; y$e=y$+.125h; y$f=y$-.025h;
+ path p, q;
+ p=z$a..z$b..z$b'..z$c..z$d..z$d'..cycle;
+ q=z$e..z$f..cycle;
+ fill p transformed t;
+ unfill q transformed t;
+ penlabels(z$a,z$b,z$b',z$c,z$d,z$d',z$e,z$f);
+enddef;
+
+%%% ELLIPSE %%%
+
+def rt_half_ellipse(suffix @)(expr x_bar)=
+ pickup fine.nib;
+ x@g=x@; y@:=y@+.015h;
+ x@:=x@+x_bar; x@h=x@; x@a=x@+3.25u; x@b=x@a-u;
+ x@c=x@a-.5u; x@d=x@a-2.5u; x@e=x@; x@f=x@a-2.25u;
+ y@a=y@-.065h; y@b=y@+.05h; y@c=y@+.125h; y@d=y@+.1h; y@e=y@;
+ y@f=y@-.1h; y@g=y@-.015h; y@h=y@;
+ pos@g(vair,90); pos@h(vair,90);
+ if x_bar>0 :
+ filldraw stroke z@g.e--z@h.e;
+ fi
+ fill flex(z@a,z@b,z@c) & flex(z@c,z@d,z@e)...flex(z@e,z@f,z@a) & cycle;
+ penlabels(@,@a,@b,@c,@d,@e,@f,z@g,z@h);
+enddef;
+
+def lft_half_ellipse(suffix @)(expr x_bar)=
+ pickup fine.nib;
+ x@g=x@; y@:=y@-.03h;
+ x@:=x@-x_bar; x@h=x@; x@a=x@-3.25u; x@b=x@a+u; x@c=x@a+.5u; x@d=x@a+2.5u;
+ x@e=x@; x@f=x@a+2.25u;
+ y@a=y@-.125h; y@b=y@-.05h; y@c=y@+.065h; y@d=y@+.1h; y@e=y@; y@f=y@-.1h;
+ y@g=y@+.015h; y@h=y@;
+ pos@g(vair,90); pos@h(vair,90);
+ if x_bar>0 :
+ filldraw stroke z@g.e--z@h.e;
+ fi
+ fill flex(z@a,z@b,z@c) & flex(z@c,z@d,z@e)...flex(z@e,z@f,z@a) & cycle;
+ penlabels(@,@a,@b,@c,@d,@e,@f,z@g,z@h);
+enddef;
+
+%%% DIAGONALS %%%
+
+def top_diagonals(suffix @)=
+ penpos@a(vair,45); penpos@b(vair,-45);
+ penpos@c(vair,45); penpos@d(vair,-45);
+ penpos@e(2stem,45); penpos@f(2stem,-45);
+ z@a.l=z@.l; z@b.r=z@.r;
+ x@c=x@a-1u; y@c=y@a+1u; x@d=x@b+1u; y@d=y@b+1u;
+ x@e=x@c-1.2stem; y@e=y@c+1.2stem; x@f=x@d+1.2stem; y@f=y@d+1.2stem;
+ z@g=.5[z@c,z@e]; z@h=.5[z@d,z@f];
+ z@i=whatever[z@a.r,z@c.r]=whatever[z@b.r,z@d.r];
+ filldraw z@a.l--z@c.l--z@c.r--z@i--z@b.l--
+ z@d.l--z@d.r--z@b.r--z@a.l & cycle;
+ fill z@e.l..controls z@g..z@e.r &
+ z@e.r..{down}z@c.r--z@c.l{left}..z@e.l & cycle;
+ fill z@f.l..controls z@h..z@f.r &
+ z@f.r..{left}z@d.r--z@d.l{up}..z@f.l & cycle;
+enddef;
+
+%%% NO_CHAR %%%
+
+def no_char(expr code) =
+ "undefined character";
+ beginchar(code,9u#,body_height#,paren_depth#);
+ italcorr fig_height#*slant-.5u#; % same as for digits
+ adjust_fit(0,0);
+ fill (0,h)--(w,h)--(w,-d)--(0,-d)--cycle;
+ endchar;
+enddef;