%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%% 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. %%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%