%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%% The Yi Syllable Font.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%% (c) Oliver Corff, Berlin/Beijing/Ulaanbaatar 1997.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%% Common definitions.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def getpen	=
	pickup pencircle scaled thick;
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def eyebrow =		% nnnX syllables are covered by this!
	x97=5/16width;
	x98=4/8width;
	x99=11/16width;
	y97=y99=11/12height;
	y98=23/24height;
	getpen;
	draw z97..z98..z99;
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def gong(expr lx, uy, rx, ly) = % The gong-shape appearing so often.
	numeric x[];
	numeric y[];
	x1:=lx; y1:=uy;
	x2:=rx; y2:=uy;
	x3:=lx; y3:=ly;
	x4:=rx; y4:=ly;
	z5=1/2[z1,z2];
	z6=1/2[z3,z4];
	getpen;
	draw z1--z2; draw z3--z4; draw z5--z6;
	numeric x[];
	numeric y[];
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def Ddash(expr lx, uy, rx, ly) =	% The Double Dash-shape appearing so often.
	numeric x[];
	numeric y[];
	z1=(lx,uy);
	z2=1/3[z1,z4];
	z3=2/3[z1,z4];
	z4=(rx,ly);
	getpen;
	draw z1--z2;
	draw z3--z4;
	numeric x[];
	numeric y[];
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def Er(expr lx, uy, rx, ly) =% The er-shape appearing so often.
	numeric x[];
	numeric y[];
	x1=lx; y1=uy;
	x2=rx; y2=uy;
	x3=lx; y3=ly;
	x4=rx; y4=ly;
	getpen;
	draw z1--z2; draw z3--z4;
	numeric x[];
	numeric y[];
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def san(expr lx, uy, rx, ly) =% The san-shape appearing so often.
	numeric x[];
	numeric y[];
	x1=lx; y1=uy;
	x2=rx; y2=uy;
	x3=lx; y3=ly;
	x4=rx; y4=ly;
	x5=lx; y5=1/2[ly,uy];
	x6=rx; y6=1/2[ly,uy];
	getpen;
	draw z1--z2; draw z3--z4; draw z5--z6;
	numeric x[];
	numeric y[];
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def H(expr lx, uy, rx, ly) =	% The H-shape appearing so often.
	numeric x[];
	numeric y[];
	x1:=lx; y1:=uy;
	x2:=lx; y2:=ly;
	x3:=rx; y3:=uy;
	x4:=rx; y4:=ly;
	z5=1/2[z1,z2];
	z6=1/2[z3,z4];
	getpen;
	draw z1--z2; draw z3--z4; draw z5--z6;
	numeric x[];
	numeric y[];
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def Ih(expr lx, uy, rx, ly) =	% The Single Dash-shape appearing so often.
	numeric x[];
	numeric y[];
	z1=(lx,uy);
	z2=(rx,ly);
	getpen;
	draw z1--z2;
	numeric x[];
	numeric y[];
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def II(expr lx, uy, rx, ly) =% The II-shape appearing so often.
	numeric x[];
	numeric y[];
	x1:=lx; y1:=uy;
	x2:=lx; y2:=ly;
	x3:=rx; y3:=uy;
	x4:=rx; y4:=ly;
	getpen;
	draw z1--z2; draw z3--z4;
	numeric x[];
	numeric y[];
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def III(expr lx, uy, rx, ly) =% The III-shape appearing so often.
	numeric x[];
	numeric y[];
	x1=lx; y1=uy;
	x2=lx; y2=ly;
	x3=rx; y3=uy;
	x4=rx; y4=ly;
	x5=1/2[lx,rx]; y5=uy;
	x6=1/2[lx,rx]; y6=ly;
	getpen;
	draw z1--z2; draw z3--z4; draw z5--z6;
	numeric x[];
	numeric y[];
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def N(expr lx, uy, rx, ly) =	% The N-shape appearing so often.
	numeric x[];
	numeric y[];
	x1:=lx; y1:=ly;
	x2:=lx; y2:=uy;
	x3:=rx; y3:=ly;
	x4:=rx; y4:=uy;
	getpen;
	draw z1--z2--z3--z4;
	numeric x[];
	numeric y[];
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def Oh(expr lx, uy, rx, ly) =	% The O-shape appearing so often.
	numeric x[];
	numeric y[];
	x51:=x53:=1/2[lx,rx];
	y51:=uy;
	x52:=rx;
	y52:=y54:=1/2[uy,ly];
	y53:=ly;
	x54:=lx;
	getpen;
	draw z51..z52..z53..z54..cycle;
	numeric x[];
	numeric y[];
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def Otense(expr lx, uy, rx, ly, t) = % The O-shape appearing so often.
	numeric x[];
	numeric y[];
	x1=x3=1/2[lx,rx];
	y1=uy;
	x2=rx;
	y2=y4=1/2[uy,ly];
	y3=ly;
	x4=lx;
	getpen;
	draw z1..tension t..z2..tension t..z3..tension t..z4..tension t..cycle;
	numeric x[];
	numeric y[];
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def S(expr lx, uy, rx, ly) =	% The S-shape appearing so often.
	numeric x[];
	numeric y[];
	z1=(rx,5/6[ly,uy]);
	z2=(1/2[lx,rx],uy);
	z3=(lx,1/4[uy,ly]);
	z4=(x2,1/2[uy,ly]);
	z5=(rx,1/4[ly,uy]);
	z6=(x2,ly);
	z7=(lx,1/6[ly,uy]);
	getpen;
	draw z1..{left}z2{left}..z3..z4..z5..{left}z6{left}..z7;
	numeric x[];
	numeric y[];
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def T(expr lx, uy, rx, ly) =	% The Single Dash-shape appearing so often.
	Ih(lx,uy,rx,uy);
	Ih(1/2[lx,rx],uy,1/2[lx,rx],ly);
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def Tdash(expr px, uy, ly) =	% The Triple Dash-shape appearing so often.
	numeric x[];
	numeric y[];
	z1=(px,uy);
	z2=(x1,1/5[uy,ly]);
	z3=(x1,2/5[uy,ly]);
	z4=(x1,3/5[uy,ly]);
	z5=(x1,4/5[uy,ly]);
	z6=(x1,ly);
	getpen;
	draw z1--z2;
	draw z3--z4;
	draw z5--z6;
	numeric x[];
	numeric y[];
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def U(expr lx, uy, rx, ly) =	% The U-shape appearing so often.
	numeric x[];
	numeric y[];
	z1=(lx,uy);
	z2=(lx,2/3[uy,ly]);
	z3=(1/2[lx,rx],ly);
	z4=(rx,y2);
	z5=(rx,uy);

	getpen;
	draw z1---z2..z3..z4---z5;
	numeric x[];
	numeric y[];
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def X(expr lx, uy, rx, ly) =	% The X-shape appearing so often.
	numeric x[];
	numeric y[];
	x1:=lx; y1:=uy;
	x2:=rx; y2:=uy;
	x3:=lx; y3:=ly;
	x4:=rx; y4:=ly;
	getpen;
	draw z1--z4; draw z2--z3;
	numeric x[];
	numeric y[];
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def Xi(expr lx, uy, rx, ly) = % The XI-shape appearing so often.
	numeric x[];	% Since there is a syllable
	numeric y[];	% "XI" in the corpus this one
	x1:=lx; y1:=uy;	% is given as 'Xi'; see also
	x2:=rx; y2:=uy;	% "O" and 'Oh'. This helps us
	x3:=lx; y3:=ly;	% to avoid confusion.
	x4:=rx; y4:=ly;
	getpen;
	draw z1--z4--z2--z3;
	numeric x[];
	numeric y[];
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def IXI(expr lx, uy, rx, ly) = % The IXI-shape appearing so often.
	numeric x[];
	numeric y[];
	x1:=lx; y1:=uy;
	x2:=rx; y2:=uy;
	x3:=lx; y3:=ly;
	x4:=rx; y4:=ly;
	getpen;
	draw z1--z4--z2--z3--cycle;
	numeric x[];
	numeric y[];
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def Z(expr lx, uy, rx, ly) = % the inverted Z-shape
	numeric x[];
	numeric y[];
	x1:=lx;
	x4:=rx;
	x2:=x3:=1/2[x1,x4];
	y2:=ly;
	y3:=uy;
	y1:=1/6[y2,y3];
	y4:=5/6[y2,y3];
	getpen;
	draw z1--z2--z3--z4;
	numeric x[];
	numeric y[];
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def Zdash(expr lx, uy, rx, ly) = % the inverted Z-shape with dash
	numeric x[];
	numeric y[];
	x1:=lx;
	x4:=rx;
	x2:=x3:=1/2[x1,x4];
	y2:=ly;
	y3:=uy;
	y1:=1/6[y2,y3];
	y4:=5/6[y2,y3];
	z5=(lx,1/2[uy,ly]); z6=(rx,y5);
	getpen;
	draw z1--z2--z3--z4;
	draw z5--z6;
	numeric x[];
	numeric y[];
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def ZPimmel(expr lx, uy, rx, ly) = % the inverted Z-shape with Pimmel
	numeric x[];
	numeric y[];
	x1:=lx;
	x4:=rx;
	x2:=x3:=1/2[x1,x4];
	y2:=ly;
	y3:=uy;
	y1:=1/6[y2,y3];
	y4:=5/6[y2,y3];
	z5=(1/2[lx,rx],2/5[uy,ly]); z6=(7/8[lx,rx],1/4[ly,uy]);
	getpen;
	draw z1--z2--z3--z4;
	draw z5{z2-z1}..{down}z6;
	numeric x[];
	numeric y[];
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def Arsch(expr lx, uy, rx, ly) = % the Arsch-shape
	numeric x[];
	numeric y[];
	z1=(1/2[lx,rx],uy);
	z2=(rx,6/24[ly,uy]);
	z3=(1/2[x2,x4],ly);
	z4=(x1,y2);
	z5=(1/2[x4,x6],ly);
	z6=(lx,y2);
	getpen;
	draw z1{right}..tension 1.5..z2{down}..z3..{up}z4 &
	z4{down}..z5..{up}z6..tension 1.5..{right}z1..cycle;
	numeric x[];
	numeric y[];
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def Blitz(expr lx, uy, rx, ly) = % the Blitz-shape
	numeric x[];
	numeric y[];
	z1=(1/2[lx,rx],uy);
	z2=(lx,1/3[ly,uy]);
	z3=(rx,1/3[uy,ly]);
	z4=(x1,ly);
	getpen;
	draw z1--z2--z3--z4;
	numeric x[];
	numeric y[];
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def Brunnen(expr lx, uy, rx, ly) = % the Brunnen (jing)-shape
	numeric x[];
	numeric y[];
	z1=(1/4[lx,rx],uy);
	z2=(x1,ly);
	z3=(3/4[lx,rx],uy);
	z4=(x3,ly);
	z5=(lx,1/4[uy,ly]);
	z6=(rx,y5);
	z7=(lx,3/4[uy,ly]);
	z8=(rx,y7);
	getpen;
	draw z1--z2;
	draw z3--z4;
	draw z5--z6;
	draw z7--z8;
	numeric x[];
	numeric y[];
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def Busen(expr lx, uy, rx, ly) = % the Busen-shape
	numeric x[];
	numeric y[];
	x11:=lx;
	x15:=rx;
	x13:=1/2[x11,x15];
	x12:=1/2[x11,x13];
	x14:=1/2[x13,x15];
	y11:=y13:=y15:=uy;
	y12:=y14:=ly;
	
	getpen;
	draw z11{down}..z12..{up}z13 & z13{down}..z14..{up}z15;
	numeric x[];
	numeric y[];
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def Gasmaske(expr lx, uy, rx, ly) = % the Gasmaske-shape
	numeric x[];
	numeric y[];
	Oh(lx,uy,1/3[lx,rx],5/12[uy,ly]);
	Oh(2/3[lx,rx],uy,rx,5/12[uy,ly]);
	Oh(1/3[lx,rx],7/12[uy,ly],2/3[lx,rx],ly);
	numeric x[];
	numeric y[];
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def Huegel(expr lx, uy, rx, ly) = % the Huegel-shape
	numeric x[];
	numeric y[];
	z1=(lx,ly);
	z2=(1/2[lx,rx],uy);
	z3=(rx,ly);
	getpen;
	draw z1{up}..tension 1.2..z2..tension 1.2..{down}z3;
	numeric x[];
	numeric y[];
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def Jalousie(expr lx, uy, rx, ly) =	% The Jalousie-shape appearing so often.
	numeric x[];
	numeric y[];
	z1=(lx,uy);
	z2=(rx,1/5[uy,ly]);
	z3=(x1,2/5[uy,ly]);
	z4=(x2,3/5[uy,ly]);
	z5=(x1,4/5[uy,ly]);
	z6=(x2,ly);
	getpen;
	draw z1--z2;
	draw z3--z4;
	draw z5--z6;
	numeric x[];
	numeric y[];
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def Liane(expr lx, uy, rx, ly) = % the Liane-shape
	numeric x[];
	numeric y[];
	z1=(lx,uy);
	z2=(1/2[lx,rx],ly);
	z3=(rx,uy);
	getpen;
	draw z1{down}..tension 1.2..z2..tension 1.2..{up}z3;
	numeric x[];
	numeric y[];
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def Plus(expr lx, uy, rx, ly) = % The Plus-shape appearing so often.
	numeric x[];
	numeric y[];
	x1=1/2[lx,rx]; y1=uy;
	x2=rx; y2=1/2[uy,ly];
	x3=lx; y3=y2;
	x4=x1; y4=ly;
	getpen;
	draw z1--z4; draw z2--z3;
	numeric x[];
	numeric y[];
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def Quad(expr lx, uy, rx, ly) = % the Four Strokes-shape
	numeric x[];
	numeric y[];
	z1=(lx,uy);
	z2=(lx,1/3[uy,ly]);
	z3=(lx,2/3[uy,ly]);
	z4=(lx,ly);
	z5=(rx,y1);
	z6=(rx,y2);
	z7=(rx,y3);
	z8=(rx,y4);
	getpen;
	draw z1--z2;
	draw z3--z4;
	draw z5--z6;
	draw z7--z8;
	numeric x[];
	numeric y[];
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def Sanduhr(expr lx, uy, rx, ly) = % the Sanduhr-shape
	numeric x[];
	numeric y[];
	z1=(lx,uy);
	z2=(rx,uy);
	z3=(lx,ly);
	z4=(rx,ly);
	getpen;
	draw z1--z2--z3--z4--cycle;
	numeric x[];
	numeric y[];
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def Sichel(expr lx, uy, rx, ly) = % the Sichel-shape
	numeric x[];
	numeric y[];
	x1:=x5:=x6:=lx;
	x3:=x4:=rx;
	x2:=1/2[x1,x3];
	
	y2:=uy;
	y6:=ly;
	y1:=y3:=1/6[y2,y6];
	y4:=y5:=11/16[y2,y6];
	x7:=rx; y7:=ly;	% Ein Hilfspunkt!
	getpen;
	draw z1..z2..z3---z4{z4-z3}..{z5-z7}z5&z5--z6;
	numeric x[];
	numeric y[];
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def Smiley(expr lx, uy, rx, ly) = % the Smiley-shape
	numeric x[];
	numeric y[];
	z1=(lx,uy);
	z2=(lx,1/3[uy,ly]);
	z3=(rx,y1);
	z4=(rx,y2);
	z5=(1/2[lx,rx],2/3[uy,ly]);
	z6=(x5,ly);
	getpen;
	draw z1--z2;
	draw z3--z4;
	draw z5--z6;
	numeric x[];
	numeric y[];
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%% The Yi Syllable Font, Common Definitions, ends here. %%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
