% tipagerm.mf: TIPA symbols for germanic languages
% Copyright 1996-2003 FUKUI Rei
%
% This program may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.2
% of this license or (at your option) any later version.
% The latest version of this license is in
%   http://www.latex-project.org/lppl.txt
% and version 1.2 or later is part of all distributions of LaTeX 
% version 1999/12/01 or later.
%
% This program consists of all files listed in Manifest.txt.
%
% Version 1.2 2003/01/01
%
% This font is based on:
%   Computer Modern font series by D. E. Knuth,
%   DC fonts by J"org Knappen and
%   TSIPA by KOBAYASHI Hajime, FUKUI Rei and SHIRAKAWA Shun.
%

% The next codes are from cmman.
cmchar "Thorn";
beginchar(oct"376",10u#+serif_fit#,asc_height#,desc_depth#);
italcorr .5x_height#*slant+min(.5curve#-.85u#,-.1u#);
adjust_fit(serif_fit#,0);
pickup tiny.nib; pos1(stem',0); pos2(stem,0);
pos0'(stem',0); pos0(stem,0); z0l=z0'l; x0'=x1; x0=x2;
lft x1l=hround(side_gap-.5stem'); top y1=h;
numeric edge; edge=rt x2r;
pickup fine.nib; pos3(if hefty:thin_join else: hair fi,180);
pos4(vair',90); pos5(curve,0); pos6(vair,-90);
rt x3l=1/3[rt x2,edge]; y3=1/8[bar_height,x_height];
x4l=w-.5(w-serif_fit)+.5u; top y4r=x_height+oo;
rt x5r=hround min(w-1.35u+.5curve,w-.6u); y5=.5x_height;
x6=x3; bot y6r=-oo;
(x,y4r)=whatever[z3l,z4l]; x4r:=min(x,.5[x5r,x4]);
filldraw stroke z3e{up}...{right}z4e&super_arc.e(4,5)
 &z5e{down}...{5(x6-x5),y6-y5}z6e;  % bowl
y0=ypart(((edge,h)--(edge,0))intersectionpoint(z3l{up}...{right}z4l));
pickup tiny.nib; bot y2=-d;
filldraw stroke z1e--z0'e--z0e--z2e;  % stem
pickup crisp.nib; pos8(hair,0); pos7'(stem,0);
z7'=z2; x8l=x7'l; bot y8=0;
filldraw stroke z7'e--z8e;  % point
if serifs: sloped_serif.l(1,0',a,1/3,jut,serif_drop);  % upper serif
 dish_serif(2,0,b,1/3,jut,c,1/3,jut); fi  % lower serif
penlabels(0,1,2,3,4,5,6,8); endchar;

cmchar "Wynn";
beginchar(oct"337",9u#+serif_fit#,x_height#,desc_depth#);
italcorr .5x_height#*slant+min(.5curve#-.75u#,.1u#);
adjust_fit(serif_fit#,0);
pickup tiny.nib; pos2(stem,if serifs:0 else: 15 fi);
pos0'(stem',0); pos0(stem,0); pos1(stem',0); z0l=z0'l; x0'=x1; x0=x2;
lft x1l=hround(side_gap-.5stem');top y1=h;
pickup fine.nib; pos3(vair,90); pos4(vair,90);
pos5(curve,0); pos6(vair,-90); pos7(vair,-90);
x3=x7=x0; x4+.5u=x6=.6w; top y4r=x_height; y4-y3=y6-y7;
rt x5r=hround min(w-1.35u+.5curve,w-.6u); y5=.6x_height;
bot y6r=.1x_height-oo; bot y7r=-oo; y0=y3;
pickup tiny.nib; bot y2=if serifs: -.7d; else: -d; fi
filldraw stroke z1e--z0'e--z0e--z2e;  % stem
filldraw stroke z3e--z4e{z6-z7}...z5e{down}...{z7-z6}z6e--z7e;
if serifs: pickup crisp.nib; pos10(stem,0); pos11(vair,-90);
 z10=z2; lft x11l=x22=.5u; y11l=-d-oo;
 varm(10,11,a,.8beak_darkness,-1.5beak_jut);
 pickup crisp.nib;
 pos21(stem',0); pos22(vair,90); z21=(x1,.6h); y22r=y4r;
 varm(21,22,b,.8beak_darkness,-1.3beak_jut); fi
penlabels(0,0',1,2,3,4,5,6,7,8,9,10,11,21,22); endchar;

cmchar "H-V ligature";
beginchar(oct"377",13.8u#,asc_height#,0);
italcorr .5[bar_height#,x_height#]*slant-serif_fit#+.5stem#-u#;
adjust_fit(serif_fit#+stem_shift#,serif_fit#-stem_shift#);
pickup tiny.nib; pos1(stem,0); pos2(stem,0);
pos1'(stem',0); pos2'(stem',0); pos3(stem,0);
lft x1l=hround(side_gap-.5stem); x1l=x1'l=x2l=x2'l; x3=w-x1-3.8u;
top y1=h; bot y2=0; y1=y1'; y2=y2';
filldraw stroke z1'e--z2'e;  % left stem
y3=1/3[bar_height,x_height];
penpos2''(x2r-x2l,0); x2''=x2; y2''=1/8[bar_height,x_height];
filldraw stroke z2''e--z2e;  % thicken the lower left stem
penpos a0(min(rt x2r-lft x2l,thin_join)-fine,180); pickup fine.nib;
rt x a0l=tiny.rt x2r; y a0=y2'';
pos a1(vair,90); pos3'(x3r-x3l+tiny,0); z3'=z3;
x a1=.5[rt x a0l,rt x3'r]; top y a1r=x_height+oo;
(x a,y a1l)=whatever[z a1r,z a0l]; x a1l:=x a;
filldraw stroke z a0e{up}...{right}z a1e
 &{{interim superness:=hein_super; super_arc.e(a1,3')}};  % arch
labels(a0); penlabels(a1);
if serifs: sloped_serif.l(1',2',b,1/3,jut,serif_drop); % upper left serif
 numeric inner_jut; pickup tiny.nib;
 if rt x2r+jut+.5u+1<=lft x3l-jut: inner_jut=jut;
 else: rt x2r+jut+.5u+1=lft x3l-inner_jut; fi
 dish_serif(2,1,c,1/3,jut,d,1/3,jut); fi % lower left serif
pickup tiny.nib; interim superness:=more_super;
pos3''(stem,180);y3''=y3;
pos4(stem,180); x4=x3''=x3;
pos5(vair,-90); pos6(hair,0);
x5=x4+2.8u; rt x6r=hround(w-.7u); y4=.4h; bot y5r=-oo; y6=.4h;
filldraw stroke z3''e{down}--super_arc.e(4,5) % v stroke
 ..tension atleast 1.05..{up}z6e; % left stem and arc
v_bulb(6,7);  % closing bulb
penlabels(1,2,3,4,5,6,7); endchar;

cmchar "Comma-tail Z";
beginchar(oct"336",9u#,x_height#,desc_depth#);
italcorr x_height#*slant-.5serif_fit#-1u#;
adjust_fit(0,.5serif_fit#);
numeric arm_thickness[],z_stem;
arm_thickness1=vair; arm_thickness2=1.2vair; z_stem=.9[vair,stem];
pickup tiny.nib; rt x1r=rt x2r=hround(.89w-.8u);
lft x3l=lft x4l=hround .5u;
top y1=h; y2=min(y1,h-2/3arm_thickness1);
bot y4=0; y3=max(y4,2/3arm_thickness2);
numeric alpha; alpha=diag_ratio(1,z_stem-tiny,y2-y3,x2r-x3l-slant*(y2-y3));
penpos1(alpha*(z_stem-tiny),0); penpos2(alpha*(z_stem-tiny),0);
penpos3(alpha*(z_stem-tiny),0); penpos4(alpha*(z_stem-tiny),0);
pair delta; delta=penoffset z3-z2 of currentpen;
fill top lft z1l--z2l+delta---z3l+delta..lft z3l---lft z4l..bot z4l
 ---bot rt z4r--z3r-delta---z2r-delta..rt z2r---rt z1r..top z1r
 ---cycle;  % diagonal
pickup tiny.nib; pos5(arm_thickness1,90); pos6(hair,180);
top y5r=h; x5=x1; lft x6r=hround .75u; y6=good.y(y5l-beak/1.4)-eps;
arm(5,6,a,beak_darkness,-.4beak_jut);  % upper arm and beak
pos7(arm_thickness2,90); pos8(arm_thickness2,90);
x7=x4; bot y8l=bot y7l=y8'=0; x8=x5-1.5u;
if serifs: pos9(hair,0); pos10(vair,-90); pos11(vair,-100);
else: pos9(fudged.hair,0); pos10(vair,-90); pos11(vair,-100); fi
y9=-.4d; rt x9r =hround(w-1.5u+.5hair); y10=-.8d;
y11=-.7d; x11=.5[x3,x9]; x9-x10=x10-x11;
filldraw stroke z7e--z8e{right}..z9e{down}..{left}z10e..z11e;
penlabels(1,2,3,4,5,6,7,8,9,10,11); endchar;

% end of tipagerm.mf
