From: uid67283 <uid67283>
Date: Mon, 29 Dec 2003 16:32:09 +0000 (+0000)
Subject: * mf/feta-params.mf (stafflines): fix stafflinethickness at 0.5 pt
X-Git-Tag: release/2.1.4~8
X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=fd7679ace7d1e2720f302fa1b3db34e10697790d;p=lilypond.git

* mf/feta-params.mf (stafflines): fix stafflinethickness at 0.5 pt
throughout. Many fixes.

* mf/feta-sleur,slur.mf: remove.

* mf/feta-slag.mf: rewrite.
---

diff --git a/ChangeLog b/ChangeLog
index 7bea6ea3f4..306161c853 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2003-12-29  Han-Wen Nienhuys   <hanwen@cs.uu.nl>
+
+	* mf/feta-params.mf (stafflines): fix stafflinethickness at 0.5 pt
+	throughout. Many fixes.
+
+	* mf/feta-sleur,slur.mf: remove. 
+
+	* mf/feta-slag.mf: rewrite.
+
 2003-12-24  Han-Wen Nienhuys   <hanwen@cs.uu.nl>
 
 	* stepmake/stepmake/toplevel-targets.make: remove pfa targets
diff --git a/ly/paper16-init.ly b/ly/paper16-init.ly
index 8ace29880a..054feec723 100644
--- a/ly/paper16-init.ly
+++ b/ly/paper16-init.ly
@@ -6,7 +6,6 @@
 paperSixteen = \paper {
 	staffheight = 16.0\pt
 	#(define fonts (scale-font-list (/ 16. 20.)))
-
 	\include "params-init.ly"
 }
 
diff --git a/ly/params-init.ly b/ly/params-init.ly
index 1091b75b09..2d92144942 100644
--- a/ly/params-init.ly
+++ b/ly/params-init.ly
@@ -19,13 +19,15 @@ paperfile = \papersize + "-init.ly"
 \include "paper-init.ly"
 
 staffspace = #(/ staffheight 4.0)
-linethickness = #(/ staffspace  10.0)
+linethickness = 0.5 \pt 
 outputscale =  #(/ staffheight 4.0)
-ledgerlinethickness = #(* 2.0 linethickness)
+
+% don't do full 2x for ledger, otherwise no white is left. 
+ledgerlinethickness = #(+ linethickness (/ staffspace 10))
 
 % 2/3 stafflinethickness in 20pt staffheight
 % this parameter is independent of the output size.
-blotdiameter = 0.45 \pt
+blotdiameter = 0.35 \pt
 interscoreline = 4. \mm
 
 
diff --git a/mf/feta-accordion.mf b/mf/feta-accordion.mf
index c06618dc37..06215e1af1 100644
--- a/mf/feta-accordion.mf
+++ b/mf/feta-accordion.mf
@@ -132,7 +132,7 @@ enddef;
 
 def def_some_vars =
 	save hs, mb, mt, thin, thick, height, width, cOne, cTwo;
-	width = .8staffsize;
+	width = .8(4 staff_space);
 	height = 2.4staff_space;
 	% URG.  smaller sizes should be wider and fatter
 	%thin = 0.05staff_space;
@@ -156,14 +156,14 @@ def print_penpos (suffix $)=
 enddef;
 
 %fet_beginchar("accTEST", "accTEST", "accTEST")
-%	set_char_box(.4staffsize#, .4staffsize#, 0, 2.4staff_space#);
+%	set_char_box(.4(4 staff_space#), .4(4 staff_space#), 0, 2.4staff_space#);
 %	def_some_vars;
 %	penlabels(10, 11, 12, 13, 14);
 %	penstroke z10e--z11e{right}..z12e..z13e{left}--z14e;
 %fet_endchar;
 
 fet_beginchar("accSB", "accSB", "accSB")
-	set_char_box(.4staffsize#, .4staffsize#, 0, 2.4staff_space#);
+	set_char_box(.4(4 staff_space#), .4(4 staff_space#), 0, 2.4staff_space#);
 	def_some_vars;
 	def_B(.35width, .7height);
 
@@ -197,7 +197,7 @@ fet_beginchar("accSB", "accSB", "accSB")
 fet_endchar;
 
 fet_beginchar("accBB", "accBB", "accBB")
-	set_char_box(.4staffsize#, .4staffsize#, 0, 2.4staff_space#);
+	set_char_box(.4(4 staff_space#), .4(4 staff_space#), 0, 2.4staff_space#);
 	def_some_vars;
 	def_B(.35width, .7height);
 
diff --git a/mf/feta-banier.mf b/mf/feta-banier.mf
index 206cf20d84..e384cc0d4c 100644
--- a/mf/feta-banier.mf
+++ b/mf/feta-banier.mf
@@ -25,8 +25,9 @@ right_downflag_space# = .0 downflag_width#;
 %
 
 save hip_thickness, foot_thickness;
-hip_thickness# = 1.3 stemthickness#;
-foot_thickness# =  0.95 hip_thickness#;
+
+hip_thickness# = 1.0 stafflinethickness# + 0.069 staff_space#;
+foot_thickness# =   1.2055 stafflinethickness# + 0.06 staff_space#;
 
 %
 % Inspired by Adobe Sonata and [Wanske]
diff --git a/mf/feta-bolletjes.mf b/mf/feta-bolletjes.mf
index 396f895dca..b895f96e44 100644
--- a/mf/feta-bolletjes.mf
+++ b/mf/feta-bolletjes.mf
@@ -402,50 +402,70 @@ endgroup;
 
 %%% Editable values:
 
-slash_slope := 1.7; % slope of slash. From scm/grob-description.scm. How to auto-copy?
-slt# := 2/3*0.48staff_space#; % thickness of lines. quarter notes get 1.5slt width.
-slh# := 2staff_space#; % height of char.
 
-%%% Calculated values:
-sxa# := 0; % how much the char exceeds the boundingbox horizontally:
+% slope of slash. From scm/grob-description.scm. How to auto-copy?
+slash_slope := 1.7; 
 
- % Width of hor. pen - with thanks to Pythagoras
-slxt# := sqrt(slt#*slt#+(slt#/slash_slope)*(slt#/slash_slope));
-slw# := slh#/slash_slope; % width of sloping part of slash:
+% thickness of lines. quarter notes get 1.5slt width.
+slash_thick# := 2/3*0.48staff_space#;
 
-define_pixels(slt,slh,sxa,slxt,slw);
+define_pixels(slash_thick);
 
+def draw_slash(expr hwid_hash) =
+	set_char_box (0, staff_space# / slash_slope + hwid_hash,
+			staff_space#/2 + stafflinethickness#/2,
+			staff_space#/2 + stafflinethickness#/2);
 
-%
-%
-% UUGGGH! FIXME -- get rid of those sharp corners. 
-%
-%
-%
+	clearxy;
+	pickup pencircle scaled blot_diameter;
+
+	bot y1 = - d;
+	top y2 = h;
+	lft x1 = 0;
+	lft x2 = staff_space / slash_slope;
+	
+	rt x3 = w;
+	y3 = y2;
+	y4 = y1;
+	x3- x2 = x4 - x1;
+
+	filldraw z1 --- z2 --- z3 --- z4 --- cycle;
+
+	if hwid_hash > 2 slash_thick#:
+		save th;
+
+		th = slash_thick - blot_diameter;
+		y6 = y7;
+		y5 = y8;
+		y3 - y7 = th;
+		y5 - y1 = th;
+		z6 - z5 = whatever * (1,  slash_slope);
+		z8 - z7 = whatever * (1,  slash_slope);
+
+		z5  = z1 + whatever * (1,  slash_slope) + (th, 0);
+		z8  = z4 + whatever * (1,  slash_slope) + (-th, 0);
+
+		unfill
+			z5 -- z6 -- z7 -- z8 -- cycle;
+	fi
+	labels (range 1 thru 10);
 
 
-def draw_slash(expr hwid_hash) =
-	wid# := slw#+2slxt#+hwid_hash;
-	set_char_box(0,wid#-2sxa#,slh#/2,slh#/2);
-	define_pixels (wid#);
-	pickup penrazor scaled slxt;
-	draw (-b+slxt/2-sxa,-d) -- (-b+slxt/2+slw-sxa,h);
-	draw (w-slxt/2-slw+sxa,-d) -- (w-slxt/2+sxa,h);
-	pickup penrazor scaled slt rotated 90;
-	draw (-b+slxt-sxa,-d+slt/2) -- (w-slw+sxa,-d+slt/2);
-	draw (-b+slw-sxa,h-slt/2) -- (w-slxt+sxa,h-slt/2);
 enddef;
 
+
+
+
 fet_beginchar("Whole slashhead","0slash","wholeslashhead")
- 	draw_slash(staff_space#);
+	draw_slash(2 slash_thick# + 0.5 staff_space#);
 fet_endchar;
 
 fet_beginchar("Half slashhead","1slash","halfslashhead")
-	draw_slash(0.6staff_space#);
+	draw_slash(2 slash_thick# + 0.15 staff_space#);
 fet_endchar;
 
 fet_beginchar("Quart slashhead","2slash","quartslashhead")
-	draw_slash(-slxt#/2);
+	draw_slash(slash_thick#);
 fet_endchar;
 
 % thick is the distance between the two parallel lines in the cross (distance between centres of lines)
diff --git a/mf/feta-generic.mf b/mf/feta-generic.mf
index 4c1e0916eb..6b4ad8e883 100644
--- a/mf/feta-generic.mf
+++ b/mf/feta-generic.mf
@@ -18,8 +18,6 @@ mode_setup;
 
 input feta-macros;
 
-make_pen_stack;
-make_picture_stack;
 input feta-params;
 
 font_x_height  staff_space#;
diff --git a/mf/feta-klef.mf b/mf/feta-klef.mf
index 3fcb0ef876..7838004e2e 100644
--- a/mf/feta-klef.mf
+++ b/mf/feta-klef.mf
@@ -21,7 +21,7 @@ def draw_c_clef (expr reduction) =
 	save hair, norm, reduced_ss, right_edge;
 	reduced_ss#=staff_space#*reduction;
 	norm#:=2/3reduced_ss#;
-	hair#:=1/6norm#;
+	hair#:=0.06 reduced_ss# + 0.5 stafflinethickness# ;
 
 	right_edge# = 15/4norm#+2hair#;
 
@@ -43,7 +43,7 @@ def draw_c_clef (expr reduction) =
 	z3=(((right_edge -xoff)/2)+xoff,2hair);
 
 	penpos4(hair,0);
-	z4=(xoff+1/2norm+1/2hair,reduced_ss-hair);
+	z4=(xoff+1/2norm+1/2hair, reduced_ss - stafflinethickness - .2 hair);
 	
 	penpos5(4hair,0);
 	z5=(xoff+5/4hair,0);
@@ -275,7 +275,7 @@ def draw_gclef (expr reduction)=
 	define_pixels(reduced_ss);
 	pair downstroke_dir, center;
 
-	thinness = 1.4 stafflinethickness;
+	thinness = 0.1 staff_space + 0.4 stafflinethickness;
 	downstroke_dir = unitvector (14, -75);
 	downstroke_angle = angle downstroke_dir;
 
@@ -283,7 +283,7 @@ def draw_gclef (expr reduction)=
 	breapth_factor = 21.0 /14;
 	inner_thick_end = 45;
 	inner_start_angle = downstroke_angle - 43;
-	thickness = .4 reduced_ss;
+	thickness = .3 reduced_ss + 1 stafflinethickness;
 
 	thinnib = thinness;
 
@@ -296,7 +296,7 @@ def draw_gclef (expr reduction)=
 	center := (1.0 * breapth_factor* reduced_ss, 0);
 
 	save upward_swoosh_angle;
-	upward_swoosh_angle =130 ;
+	upward_swoosh_angle = 132;
 	penpos7(thickness, upward_swoosh_angle);
 	penpos5(thickness, upward_swoosh_angle);
 
@@ -337,7 +337,7 @@ def draw_gclef (expr reduction)=
 
 	z10 = .5 [z10l, z10r];
 
-	z11 =  center + whatever * downstroke_dir +  ( .05 reduced_ss, 0);
+	z11 =  center + whatever * downstroke_dir +  ( .00 reduced_ss, 0);
 
 	penpos1(thinnib, inner_start_angle);
 	penpos2(thickness, 90);
@@ -349,7 +349,7 @@ def draw_gclef (expr reduction)=
 	save lipje;
 	pair lipje;
 	lipje= .5 [z9l, z9r] +  .25 ((z9r- z9l)  rotated -90);
-	penpos13(2 thinnib, 180);
+	penpos13(thinnib + 0.14 staff_space, 180);
 
 	pickup pencircle scaled 1;
 
@@ -359,12 +359,10 @@ def draw_gclef (expr reduction)=
 		.. z4l{left}
 		.. z5l{up}
 		.. z7l{up} 
-		%.. z8l	
 		.. tension 1.2 
 		.. z9l -- lipje
 		--z9r % {dir (downstroke_angle+ 0)}
 		.. tension 0.8
-		%.. z8r
 		.. z7r{down} .. z5r{down} .. z4r{right}
 		.. z3r .. z2r{left} .. 
 		tension .95 .. 
@@ -394,8 +392,7 @@ def draw_gclef (expr reduction)=
 
 	p := z9 .. z10{down}
 		.. z6
-		.. (.52 [z4, z3])
-		.. z11{down}
+		.. z11{dir (-95) }
 		.. z12{dir(bot_angle)}
 		.. z13{up}
 	;
@@ -431,7 +428,9 @@ def draw_gclef (expr reduction)=
 		z11r{dir(start_angle)}
 		.. z12r{dir(bot_angle)}
 
-		..new_bulb (z13r, 0.45 reduced_ss, 0.38 reduced_ss, 3 stafflinethickness,  1, -1) {down}
+		..new_bulb (z13r, 0.45 reduced_ss, 0.38 reduced_ss, thinnib
+			+ .15 staff_space
+			,  1, -1) {down}
 
 %		.. tension 0.98
 		.. z12l{-dir (bot_angle)}
diff --git a/mf/feta-macros.mf b/mf/feta-macros.mf
index ae413e6a51..6f07c7d2c3 100644
--- a/mf/feta-macros.mf
+++ b/mf/feta-macros.mf
@@ -305,3 +305,5 @@ def draw_bulb(expr turndir, zl, zr, bulb_rad, radius_factor)=
 
 	endgroup
 enddef;
+
+pi:=3.14159;
diff --git a/mf/feta-params.mf b/mf/feta-params.mf
index e822bcc591..4029517579 100644
--- a/mf/feta-params.mf
+++ b/mf/feta-params.mf
@@ -7,15 +7,10 @@ stafflines = 5;
 staff_space#:=staffsize#/(stafflines-1);
 
 
-% URG!
-%font_x_height  staff_space# ;
 
-%
-% [D.K.Roush & J.S.Gourlay] say this should be 0.072
-% We know better
-% FIXME: generally, the "blackness" of most chars depends on this.
-%        these dimensions should be independent.
-stafflinethickness#:=0.1 staff_space#;
+% measuring on pocket scores turns out: stafflinethickness is
+% independent on staff size, and generally 0.5 pt.
+stafflinethickness#  :=0.5 pt#; 
 
 stemthickness# := 1.3 stafflinethickness#;
 ledgerlinethickness# := 2 stafflinethickness#;
@@ -50,3 +45,5 @@ if (blot_diameter# * vppp) < 1:
 	blot_diameter# := 1/vppp;
 fi
 define_pixels(blot_diameter);
+
+
diff --git a/mf/feta-pendaal.mf b/mf/feta-pendaal.mf
index f783f302ef..9695556381 100644
--- a/mf/feta-pendaal.mf
+++ b/mf/feta-pendaal.mf
@@ -20,8 +20,9 @@ pedalpha = 40;
 pedbeta = 25;
 
 penh#=0.7stafflinethickness#;
-penw#=4penh#;
-%penw#=penh#;
+
+penw# = 2penh# + 0.14 staff_space#;
+
 define_pixels (penh,penw);
 
 pedalh# = 2staff_space#;
@@ -31,42 +32,48 @@ define_pixels (pedalh,pedalbh);
 % code values for own pedal font commented out
 % code := 41;  % * = 42
 
-def draw_asterisk_bulb (expr w, h, i) =
-	begingroup;
-	clearxy;
-	save bulb, p;
+fet_beginchar("Pedal asterisk", "*", "pedalasterisk")
+	set_char_box(0, 7/9pedalh#, 0, pedalh#);
+	z0 = (1/2w, h - 1/2w);
+	save bulb, p, radius, thin;
 	path p;
-	bulb = 4/3penw;
+
+	thin = 0.8 stafflinethickness;
+
+	bulb + 2 radius = w;
+	0.9 thin +  bulb = (radius * pi * 2) / 8;
 
 	pickup pencircle scaled penh;
 	penpos 1 (bulb, 180);
 	penpos 2 (bulb, 0);
-	penpos 3 (penh, 0);
-	penpos 4 (penw, 0);
+	penpos 3 (thin, 0);
 
-	z0 = (1/2w, h - 1/2w);
-	z1 = (1/2w, h-1/2bulb);
+	z1 = z0 + (0,radius);
 	z2 = z1;
-	z3 = (x1, y1-penw);
-	z4 = (x1, y3-2penh);
+
+	save inner_r ;
+	inner_r = .45 radius ;
+
+	z4l = z0 + inner_r * dir (90 + 360/16);
+	z4r = z0 + inner_r * dir (90 - 360/16);
+
+	z4 = .5 [z4l,z4r];
+	z3 = .75 [z1,z4];
+
 
 	penlabels (1,2,3,4);
-%	penstroke z1e{up}..z2e{down}..z3e{down}..z4e;
-	p = z1l{up}..z2l{down}..z3l{down}..z4l..z4r
-		..z3r{up}..z2r{up}..z1r{down}..cycle;
-	p := p rotatedaround (z0, 360/8i);
-	fill p;
-	endgroup;
-	enddef;
 
-fet_beginchar("Pedal asterisk", "*", "pedalasterisk")
-	set_char_box(0, 7/9pedalh#, 0, pedalh#);
-	z0 = (1/2w, h - 1/2w);
-	for i = 0 upto 7:
-		draw_asterisk_bulb (w, h, i);
-		pickup pencircle scaled penw;
-		undraw z0;
-	endfor
+	%% what is empty path? 
+	p = z3r{up} ..  z1l{up}..z2l{down}..z3l{down} .. z4l{dir (180 + 360/16)}; 
+	for i = 1 upto 7:
+		p := p ... ((z3r{up}.. z1l{up}..z2l{down}..z3l{down}..z4l{dir (180 + 360/16)}) 
+		rotatedaround (z0, 360/8i));
+		endfor
+
+	p := p .. cycle;
+	fill p;
+	pickup pencircle scaled (7/8 inner_r);
+	undraw z0;
 fet_endchar;
 
 % skip + and ,
diff --git a/mf/feta-schrift.mf b/mf/feta-schrift.mf
index 513acfcf22..e49aad3217 100644
--- a/mf/feta-schrift.mf
+++ b/mf/feta-schrift.mf
@@ -20,7 +20,7 @@ def draw_fermata =
 
   radius# = 1.25 staff_space#;
   crook_thinness# = 1.5stafflinethickness#;
-  crook_fatness# = 4 stafflinethickness#;
+  crook_fatness# = 0.25 staff_space# +  1.5 stafflinethickness#;
 
   radius# + crook_fatness#/2 = h#;
   radius# + crook_thinness#/2 = w#;
@@ -60,7 +60,8 @@ fet_endchar;
 def draw_short_fermata =
 	save fat_factor, thinness, dot_radius;
 	set_char_box(staff_space#, staff_space#, 0, 2.2 staff_space#);
-	dot_radius# = 8/3*stafflinethickness#;
+
+	dot_radius# = 0.133 staff_space# + 1.33 stafflinethickness#;
 	define_pixels(dot_radius)
 
 	fat_factor = .11;
@@ -101,8 +102,8 @@ def draw_long_fermata =
 
 	wd# = 2.5 staff_space#;
 	stemthick = 1.5 stafflinethickness;
-	beamheight = 4 stafflinethickness;
-	dot_radius# = 8/3*stafflinethickness#;
+	beamheight = 0.3 staff_space+  stafflinethickness;
+	dot_radius# = 0.133 staff_space#+ + 1.333 *stafflinethickness#;
 	set_char_box(wd#/2, wd#/2, 0, 3/2 staff_space#);
 
 	draw_rounded_block((-b, h-beamheight), (w, h), blot_diameter);
@@ -128,16 +129,18 @@ def draw_very_long_fermata =
 	save ibeamheight, obeamheight;
 	save ihwd, ohwd, iht, oht; % inner/outer half_width/height
 	save stemthick, dot_radius;
-	define_pixels(ihwd, ohwd, iht, oht, dot_radius)
+	define_pixels(ihwd, ohwd, iht, oht)
 
 	ihwd# = 1.0 staff_space#;
 	ohwd# = 1.5 staff_space#;
 	iht# = 0.9 staff_space#;
 	oht# = 1.6 staff_space#;
+
 	stemthick = 1.5 stafflinethickness;
-	ibeamheight = 3 stafflinethickness;
-	obeamheight = 5 stafflinethickness;
-	dot_radius# = 8/3*stafflinethickness#;
+	ibeamheight = 0.3 staff_space;
+	obeamheight = 0.5 staff_space;
+	dot_radius = ((iht - ibeamheight) * 4/10)  ;
+
 	set_char_box(ohwd#, ohwd#, 0, oht#);
 
 	draw_rounded_block((-ohwd, oht-obeamheight), (ohwd, oht), blot_diameter);
@@ -171,10 +174,12 @@ fet_beginchar("Thumb", "thumb", "thumb")
         save thin, height, width, thick;
         height# = 5/4 width#;
         height# = staff_space#;
-        thin = 1.2 stafflinethickness;
-        thick =  2 thin;
         set_char_box(width#/2, width#/2, height#/2, height#/2);
-        
+	define_pixels (height,width)
+
+        thin = .6  stafflinethickness + 0.06 staff_space;
+	2 thick + 0.5 (height - 2 thin) = width;
+
 	penpos1(thick, 0);
         penpos2(thin, 90);
         z1r = (w, 0);
@@ -198,7 +203,7 @@ fet_beginchar("> accent", "sforzato", "sforzatoaccent")
 	set_char_box(.9 staff_space#, .9 staff_space#, .5 staff_space#, .5 staff_space#);
 	save thickness, diminish;
 
-	thickness = 3/2 stafflinethickness;
+	thickness = 0.05 staff_space + stafflinethickness;
 	pickup pencircle scaled thickness;
 
 	% prevent blobs at crossing lines
@@ -210,7 +215,7 @@ fet_beginchar("> accent", "sforzato", "sforzatoaccent")
 	y2 = .25 thickness* diminish;
 
 	rt z4 = (w,0);
-	x3 =0;
+	x3 = - stafflinethickness + 0.1 staff_space;
 	z3 = whatever [z1, z4];
 
 	penpos2(thickness*(2 - diminish)/2 , 90);
@@ -239,7 +244,7 @@ fet_endchar;
 def draw_staccatissimo =
 	save radius, height;
 	height# = .8 staff_space#;
-	radius# = 2 stafflinethickness#;
+	radius# = stafflinethickness# + .1 staff_space#;
 	define_whole_pixels(radius);
 	define_pixels(height);
 
@@ -341,9 +346,10 @@ fet_beginchar("open (unstopped)", "open", "ouvert")
 	save thin, height, width, thick;
 	height# = 5/4 width#;
 	height# = staff_space#;
-	thin = 1.2 stafflinethickness;
-	thick =  1.4 thin;
+        thin = .6  stafflinethickness + 0.06 staff_space;
 	set_char_box(width#/2, width#/2, height#/2, height#/2);
+	define_pixels (width,height);
+	2 thick + 0.6 (height - 2 thin) = width;
 	
 	penpos1(thick, 0);
 	penpos2(thin, 90);
@@ -384,7 +390,9 @@ begingroup
 	rt x2 =  w;
 	top y2 = h;
 
-	z3 = 0.6 [z2, z1];
+	z3 = whatever [z2, z1];
+	y3 = 0.6 [y2, y1] + thickness;
+
 	penpos3(thickness, 0);
 	penpos4(thickness * diminish, 0);
 	x4r = thickness/2;
@@ -438,7 +446,7 @@ def draw_turn =
 
 	wd# = 35/16 staff_space#;
 	ht# = 18/17 staff_space#;
-	darkness = 1.20 stafflinethickness;
+	darkness = 0.3 stafflinethickness + 0.09 staff_space;
 
 	set_char_box(wd#/2, wd#/2, ht#/2, ht#/2);	
 
@@ -484,16 +492,12 @@ enddef;
 fet_beginchar("Reverse turn","reverseturn","reverseturn")
 	draw_turn;
 	currentpicture := currentpicture yscaled -1;
-	penlabels(5,6,7);
-	penlabels(2,3,4);
 fet_endchar;
 
 
 fet_beginchar("Turn","turn","turn")
 	draw_turn;
-		
-	penlabels(5,6,7);
-	penlabels(1,2,3,4);
+	penlabels(1,2,3,4,5,6,7);
 fet_endchar;
 
 
@@ -521,7 +525,7 @@ fet_beginchar("Trill (`tr')","trill","trill")
 	ex# = 1.4 staff_space#;
 	kerning# = .60 ex#;
 	start_nib_angle = 20;
-	bulb_size = 0.70;
+	bulb_size = 0.80;
 	define_pixels(ex, ascender_extra, ascender, kerning);
 
 	t_overshoot = 0.03 ex;
@@ -530,8 +534,8 @@ fet_beginchar("Trill (`tr')","trill","trill")
 	t_width =  1.9 t_fatness;
 	r_fatness = 0.78 fatness;
 	uitschieter = 0.48 ex;
-	hair_thick =  blot_diameter;
-	r_flare = 0.45  r_fatness;
+	hair_thick =  stafflinethickness;
+	r_flare = .5 hair_thick + 0.25 r_fatness;
 	r_width =  2 r_fatness + 0.25 kerning;
 	slant = .2;
 
@@ -617,13 +621,13 @@ fet_beginchar("Trill (`tr')","trill","trill")
 	set_char_box(.85 staff_space# , .85 staff_space#, 0,ascender#);
 
 
-	penpos11(1/4 r_fatness, -4);
+	penpos11(hair_thick, -4);
 	z11r = z9r;
 	
 	z13l = (x9l + r_width, y11 -  stafflinethickness );
 	penpos13(r_flare, 180);
 
-	z15 = z13r  - (bulb_size * r_fatness,0);
+	z15 = z13r  - ( bulb_size * r_fatness,0);
 	z14 = 0.5 [z13l, z15] - (0,bulb_size* r_fatness);
 	z16 = 0.5 [z13l, z15] + (0,bulb_size* r_fatness);
 
@@ -720,6 +724,12 @@ fet_beginchar("Flageolet", "flageolet", "flageolet")
 	draw z1..z2..z3..z4..cycle;
 fet_endchar;
 
+%%
+%
+%TODO:  ARGRGHGH code dup.
+%
+%
+
 fet_beginchar("Segno", "segno", "segno")
 	save thin, thick, ball_diam, darkness, pointheight;
 	save wd, ht, thick_nibangle, ball_nib_thick;
@@ -728,7 +738,7 @@ fet_beginchar("Segno", "segno", "segno")
 
 	ht# = 3 staff_space#;
 	wd# = 2 staff_space#;
-	darkness = 1.20 stafflinethickness;
+	darkness = .08 staff_space + 0.4  stafflinethickness;
 
 	set_char_box(wd#/2, wd#/2, ht#/2, ht#/2);	
 
@@ -781,15 +791,18 @@ fet_beginchar("Segno", "segno", "segno")
 fet_endchar;
 
 fet_beginchar("Coda", "coda", "coda")
-	save thin, thick, codawidth, codaheight;
-	thin# = 1.2 stafflinethickness#;
-	thick# = 3.5 stafflinethickness#;
+	save stickout, thin, thick, codawidth, codaheight;
+
+	stickout# = 0.35 staff_space#;
 	codawidth# = 2/3 staff_space#;
 	codaheight# = 1 staff_space#;
-	define_pixels(thin, thick, codawidth, codaheight);
 
-	set_char_box(codawidth#+thick#, codawidth#+thick#,
-		codaheight#+thick#, codaheight#+thick#);
+	set_char_box(codawidth#+stickout#, codawidth#+stickout#,
+		codaheight#+stickout#, codaheight#+stickout#);
+
+	define_pixels(codawidth, codaheight);
+	thin = 1.2 stafflinethickness;
+	0.1 (codaheight - 2 thin)  = (codawidth - 2 thick);
 
 	penpos1(thick,0);
 	penpos2(thin,-90);
@@ -815,7 +828,7 @@ fet_endchar;
 fet_beginchar("Varied Coda", "varcoda", "varcoda")
 	save thin, thick, codawidth, codaheight;
 	thin# = 1.2 stafflinethickness#;
-	thick# = 3.5 stafflinethickness#;
+	thick# = 1.0 stafflinethickness# + 0.25 staff_space#;
 	codawidth# = 2/3 staff_space#;
 	codaheight# = 1 staff_space#;
 	define_pixels(thin, thick, codawidth, codaheight);
@@ -902,7 +915,7 @@ fet_endchar;
 thick#:=1/24designsize;
 define_blacker_pixels(thick);
 
-rthin:=1/8*staff_space;
+rthin:= 0.075 *staff_space + 0.5 stafflinethickness;
 rthick:=2thick+rthin;
 
 def draw_arpeggio =
diff --git a/mf/feta-slag.mf b/mf/feta-slag.mf
index ab3ab508c6..e7105bd081 100644
--- a/mf/feta-slag.mf
+++ b/mf/feta-slag.mf
@@ -9,198 +9,191 @@
 
 % this file is included by feta-scripts.mf
 
-tfat := 1/2;
-%twidth# := 0.5staff_space#;
-%theight# := 0.55staff_space#;
-% tthin# := stafflinethickness#;
-tthin# := 1.6stafflinethickness#;
+trill_thin# = 0.1 staff_space# + 0.6 stafflinethickness#;
+trill_thick# = 1/2 staff_space#;
+trill_width# = 5/12 staff_space#;
+trill_height# = 1/2staff_space#;
+trill_overlap# = 1/6 staff_space#;
 
-twidth# := 2/3staff_space#;
-theight# := 1/2staff_space#;
+pair trill_ne;
+trill_ne := unitvector ((6,9));
 
-% uhg/ uhuh?
-% toverlap# := tfat*twidth#+tthin#;
-toverlap# := tfat*twidth#+0.45tthin#;
-define_pixels(twidth,theight,tthin,toverlap);
+define_pixels (trill_thick, trill_thin, 
+		trill_width, trill_overlap, trill_height);
 
-def draw_trillelement = 
-	save x, y;
 
-	pickup pencircle scaled tthin;
+%
+% the trill element sticks out on both the left and right side
+% out of the normal bbox, so you can glue them together easily.
+%
+def draw_trillelement (expr startx) =
+begingroup
+	clearxy;
+	save x, y, p;
+
+	pickup pencircle scaled trill_thin;
 	
-	lft x1 = -twidth;
-%	x3 = -1/3*twidth;
-	x3 = -0.3*twidth;
-	top y3 = theight;
+	x1 = - trill_width;
+	y1 = 0;
+	z3 = whatever * trill_ne + z1;
+	top y3 = trill_height;
+	z2 =  z3 - (trill_thick - trill_thin) * trill_ne;
 
-	z3 - z1 = whatever * (0.5twidth, theight);
-	z2 = tfat[z3, z1];
+	z4 = z1 - trill_ne * trill_overlap;
 
 	path p;
-	p = z3 -- z2 -- z1 -- z2;
+	p = z3 -- z2 -- z4 -- z2;
 	p := p -- (p scaled -1) -- cycle;
-	filldraw p;
-	labels(1,2,3);
+	%pickup pencircle scaled 2;
+	filldraw (p shifted (startx + trill_width,0)) ;
+	%draw p;
+	labels(1,2,3,4);
+endgroup;
 enddef;
 
-def draw_trill_two = 
-	draw_trillelement;
-	currentpicture := currentpicture shifted (-2*twidth+toverlap, 0);
-	draw_trillelement;
-	currentpicture := currentpicture shifted (twidth-0.5toverlap, 0);
-enddef;
 
-def draw_trill_three = 
-	draw_trillelement;
-	currentpicture := currentpicture shifted (-2*twidth+toverlap, 0);
-	draw_trillelement;
-	currentpicture := currentpicture shifted (-2*twidth+toverlap, 0);
-	draw_trillelement;
-	currentpicture := currentpicture shifted (2twidth-toverlap, 0);
-enddef;
 
-def draw_trill_four = 
-	draw_trillelement;
-	currentpicture := currentpicture shifted (-2*twidth+toverlap, 0);
-	draw_trillelement;
-	currentpicture := currentpicture shifted (-2*twidth+toverlap, 0);
-	draw_trillelement;
-	currentpicture := currentpicture shifted (-2*twidth+toverlap, 0);
-	draw_trillelement;
-	currentpicture := currentpicture shifted (3twidth-1.5toverlap, 0);
-enddef;
-
-def draw_mordent(expr a) = 
-	pickup pencircle scaled tthin;
-	save x, y;
-	top y1 = 4/3theight;
-	x1 = x2 = a;
-	y2 = - y1;
-	draw z1 -- z2;
-enddef;
 
 fet_beginchar("trilelement", "trilelement", "trilelement")
-%	set_char_box(twidth#, twidth#, theight#, theight#);
-	set_char_box(twidth#, twidth#-toverlap#, theight#, theight#);
-	draw_trillelement;
+	set_char_box(trill_width#, trill_width#,
+				trill_height#, trill_height#);
+	draw_trillelement(-trill_width);
 fet_endchar;
 
 fet_beginchar("prall", "prall", "prall")
-	trills := 2;
-	set_char_box(trills*twidth#-0.5toverlap#, trills*twidth#-0.5toverlap#, theight#, theight#);
-	draw_trill_two;
+	set_char_box(2 trill_width#, 2 trill_width#,
+		     trill_height#, trill_height#);
+	draw_trillelement(-2 trill_width);
+	draw_trillelement(0);
 fet_endchar;
 
 fet_beginchar("mordent", "mordent", "mordent")
-	trills := 2;
-	set_char_box(trills*twidth#-0.5toverlap#, trills*twidth#-0.5toverlap#, 4/3*theight#, 4/3*theight#);
-	draw_trill_two;
-	draw_mordent(0);
+	set_char_box(2 trill_width#, 2 trill_width#,
+			4/3 trill_height#, 4/3 trill_height#);
+	draw_trillelement(-2 trill_width);
+	draw_trillelement(0);
+
+	pickup pencircle scaled trill_thin;
+	top y1 = h;
+	bot y2 = -d;
+	x1 = x2 ;
+	x2 = 0;
+	draw z1 -- z2;
 fet_endchar;
 
-
-% in modern typesetting, i've seen these double symbols implemented 
-% as three trills rather than the actual double four [gerou and lusk].
-% it looks nicer and i don't think it introduces ambiguity.
-% would like to have more references -- jcn.
-
 fet_beginchar("prallprall", "prallprall", "prallprall")
-	trills := 3;
-	set_char_box(trills*twidth#-(trills-1)*0.5toverlap#, trills*twidth#-(trills-1)*0.5toverlap#, theight#, theight#);
-	draw_trill_three;
+	set_char_box(3 trill_width#, 3 trill_width#,
+		     trill_height#, trill_height#);
+	draw_trillelement(-3 trill_width);
+	draw_trillelement(-1 trill_width);
+	draw_trillelement(1 trill_width);
 fet_endchar;
 
 fet_beginchar("prallmordent", "prallmordent", "prallmordent")
-	trills := 3;
-	set_char_box(trills*twidth#-(trills-1)*0.5toverlap#, trills*twidth#-(trills-1)*0.5toverlap#, 4/3*theight#, 4/3*theight#);
-	draw_trill_three;
-	draw_mordent(twidth-0.5toverlap);
-fet_endchar;
 
-input feta-sleur;
+	set_char_box(3 trill_width#, 3 trill_width#,
+		     4/3 trill_height#, 4/3trill_height#);
+	draw_trillelement(-3 trill_width);
+	draw_trillelement(-1 trill_width);
+	draw_trillelement(1 trill_width);
+
+	pickup pencircle scaled trill_thin;
+	top y1 = h;
+	bot y2 = -d;
+	x1 = x2 ;
+	x2 = trill_width;
+	draw z1 -- z2;
+fet_endchar;
 
-%
-% URG.   The attached slurs look weird, and discontinuous in their connection to the 
-% main part.  --hwn
+save remember_pic;
+picture remember_pic;
 
 fet_beginchar("upprall", "upprall", "upprall")
-%	trills := 4;
-	trills := 3;
-	set_char_box(trills*twidth#-(trills-1)*0.5toverlap#, trills*twidth#-(trills-1)*0.5toverlap#, theight#, theight#);
-%	draw_slur(-2twidth#,-2theight#,0,-1);
-%	currentpicture := currentpicture shifted (-0.5w+tthin,-tfat*theight+0.75tthin);
-	draw_slur(0,-2theight#,0,-1);
-%	currentpicture := currentpicture shifted (-0.5w+1.3tthin,-tfat*theight+1.5tthin);
-	currentpicture := currentpicture shifted (-0.5w+1.65tthin,-tfat*theight+1.15tthin);
-%	draw_trill_four;
-	draw_trill_three;
-fet_endchar;
-
-fet_beginchar("downprall", "downprall", "downprall")
-	trills := 3;
-	set_char_box(trills*twidth#-(trills-1)*0.5toverlap#, trills*twidth#-(trills-1)*0.5toverlap#, theight#, theight#);
-%	draw_slur(-2twidth#,2theight#,0,1);
-	draw_slur(0,2theight#,0,1);
-%	currentpicture := currentpicture shifted (-0.5w+tthin,-tfat*theight+0.75tthin);
-	currentpicture := currentpicture shifted (-0.5w+tthin,-tfat*theight+0.5tthin);
-	draw_trill_three;
+	set_char_box(3 trill_width#, 3 trill_width#,
+		      trill_height#, trill_height#);
+	draw_trillelement(-3 trill_width);
+	draw_trillelement(-1 trill_width);
+	draw_trillelement(1 trill_width);
+
+
+	z1 = (- b,0) - trill_overlap * trill_ne ;
+	z4 = z1 + (0, - 2 trill_height);
+	labels (1,4);
+	draw z1{-trill_ne} .. z4{trill_ne yscaled  -1};
+	remember_pic := currentpicture ;
 fet_endchar;
 
 fet_beginchar("upmordent", "upmordent", "upmordent")
-%	trills := 4;
-	trills := 3;
-	set_char_box(trills*twidth#-(trills-1)*0.5toverlap#, trills*twidth#-(trills-1)*0.5toverlap#, 4/3*theight#, 4/3*theight#);
-%	draw_slur(-2twidth#,-2theight#,0,-1);
-%	currentpicture := currentpicture shifted (-0.5w+tthin,-tfat*theight+0.75tthin);
-	draw_slur(0,-2theight#,0,-1);
-%	currentpicture := currentpicture shifted (-0.5w+1.3tthin,-tfat*theight+1.5tthin);
-	currentpicture := currentpicture shifted (-0.5w+1.65tthin,-tfat*theight+1.15tthin);
-%	draw_trill_four;
-	draw_trill_three;
-	draw_mordent(twidth-0.5toverlap);
+	set_char_box(3 trill_width#, 3 trill_width#,
+		      trill_height#, trill_height#);
+
+	currentpicture := remember_pic;
+
+	pickup pencircle scaled trill_thin;
+	top y1 = h;
+	bot y2 = -d;
+	x1 = x2 ;
+	x2 = trill_width;
+	draw z1 -- z2;
 fet_endchar;
 
-fet_beginchar("downmordent", "downmordent", "downmordent")
-	trills := 3;
-	set_char_box(trills*twidth#-(trills-1)*0.5toverlap#, trills*twidth#-(trills-1)*0.5toverlap#, 4/3*theight#, 4/3*theight#);
-%	draw_slur(-2twidth#,2theight#,0,1);
-	draw_slur(0,2theight#,0,1);
-%	currentpicture := currentpicture shifted (-0.5w+tthin,-tfat*theight+0.75tthin);
-	currentpicture := currentpicture shifted (-0.5w+tthin,-tfat*theight+0.5tthin);
-	draw_trill_three;
-	draw_mordent(twidth-0.5toverlap);
+fet_beginchar("pralldown", "pralldown", "pralldown")
+	set_char_box(3 trill_width#, 3 trill_width#,
+		      trill_height#, trill_height#);
+	currentpicture := remember_pic xscaled -1;
 fet_endchar;
 
-fet_beginchar("lineprall", "lineprall", "lineprall")
-	trills := 3;
-	set_char_box(trills*twidth#-(trills-1)*0.5toverlap#, trills*twidth#-(trills-1)*0.5toverlap#, theight#, 4*theight#);
-	pickup pencircle scaled tthin;
-	draw (-0.5w+tthin,-tfat*theight+0.5tthin) -- (-0.5w+tthin,h);
-	draw_trill_three;
+fet_beginchar("downprall", "downprall", "downprall")
+	set_char_box(3 trill_width#, 3 trill_width#,
+		      trill_height#, trill_height#);
+	remember_pic := currentpicture;
+	draw_trillelement(-3 trill_width);
+	draw_trillelement(-1 trill_width);
+	draw_trillelement(1 trill_width);
+
+
+	z1 = (- b,0) - trill_overlap * trill_ne ;
+	z4 = z1 + (0, 2 trill_height);
+	labels (1,4);
+	draw z1{trill_ne xscaled -1} .. z4{trill_ne};
+	remember_pic := currentpicture ;
+
 fet_endchar;
 
-fet_beginchar("pralldown", "pralldown", "pralldown")
-%	trills := 4;
-	trills := 3;
-	set_char_box(trills*twidth#-(trills-1)*0.5toverlap#, trills*twidth#-(trills-1)*0.5toverlap#, theight#, theight#);
-%	draw_slur(-2twidth#,-2theight#,0,-1);
-%	currentpicture := currentpicture shifted (-0.5w+tthin,-tfat*theight+0.75tthin);
-	draw_slur(0,-2theight#,0,-1);
-%	currentpicture := currentpicture shifted (-0.5w+1.3tthin,-tfat*theight+1.5tthin);
-	currentpicture := currentpicture shifted (-0.5w+1.65tthin,-tfat*theight+1.15tthin);
-%	draw_trill_four;
-	draw_trill_three;
-	currentpicture := currentpicture xscaled -1;
+fet_beginchar("downmordent", "downmordent", "downmordent")
+	set_char_box(3 trill_width#, 3 trill_width#,
+		    4/3  trill_height#, 4/3trill_height#);
+
+	currentpicture := remember_pic;
+
+	pickup pencircle scaled trill_thin;
+	top y1 = h;
+	bot y2 = -d;
+	x1 = x2 ;
+	x2 = trill_width;
+	draw z1 -- z2;
 fet_endchar;
 
 fet_beginchar("prallup", "prallup", "prallup")
-	trills := 3;
-	set_char_box(trills*twidth#-(trills-1)*0.5toverlap#, trills*twidth#-(trills-1)*0.5toverlap#, theight#, theight#);
-%	draw_slur(-2twidth#,2theight#,0,1);
-	draw_slur(0,2theight#,0,1);
-%	currentpicture := currentpicture shifted (-0.5w+tthin,-tfat*theight+0.75tthin);
-	currentpicture := currentpicture shifted (-0.5w+tthin,-tfat*theight+0.5tthin);
-	draw_trill_three;
-	currentpicture := currentpicture xscaled -1;
+	set_char_box(3 trill_width#, 3 trill_width#,
+		      trill_height#, trill_height#);
+	currentpicture := remember_pic xscaled -1;
+fet_endchar;
+
+
+fet_beginchar("lineprall", "lineprall", "lineprall")
+	set_char_box(3 trill_width#, 3 trill_width#,
+		      trill_height#, 4trill_height#);
+	remember_pic := currentpicture;
+	draw_trillelement(-3 trill_width);
+	draw_trillelement(-1 trill_width);
+	draw_trillelement(1 trill_width);
+
+	
+	z1 = (- b,0) - trill_overlap * trill_ne ;
+	z4 = z1 + (0, h);
+	labels (1,4);
+	draw z1 -- z4;
 fet_endchar;
 
+
diff --git a/mf/feta-sleur.mf b/mf/feta-sleur.mf
deleted file mode 100644
index e1b9321a68..0000000000
--- a/mf/feta-sleur.mf
+++ /dev/null
@@ -1,59 +0,0 @@
-% 
-% feta-sleur.mf --  implement runtime MF slurs
-% 
-% source file of LilyPond's pretty-but-neat music font
-% 
-% (c)  1997--2003 Jan Nieuwenhuizen <janneke@gnu.org>
-% & Han-Wen Nienhuys <hanwen@cs.uu.nl>
-% 
-% see Documentation/fonts.tex
-
-% mode_setup;
-
-%% staffsize#=16pt#;
-% staff_space#:=staffsize#/4;
-% stafflinethickness#:=0.1staff_space#;
-
-pi:=3.14159;
-
-def atan(expr x) = 
-	(angle(1,x)*pi/180)
-	enddef;
-
-
-sleur_pen#:=stafflinethickness#;
-slurheightlimit#:=staffsize#/2;
-slurthick#:=1.8stafflinethickness#;
-
-define_pixels(staffsize,staff_space,stafflinethickness);
-define_pixels(sleur_pen,slurheightlimit,slurthick);
-
-sluralpha:=2slurheightlimit#/pi;
-slurratio:=1/3;
-slurbeta:=pi*slurratio/2slurheightlimit#;
-
-def draw_slur(expr dxs,dys,hs,d) =
-	save x, y;
-	save b, dx, dy, h, indent;
-	dx#:=dxs*1pt#;
-	dy#:=dys*1pt#;
-	h#:=hs*1pt#;
-	define_pixels(dx,dy);
-	b#:=length(dx#,dy#);
-	indent#:=sluralpha*atan(slurbeta*b#);
-	define_pixels(b,h,indent);
-	height:=(indent+h)*d;
-	z1=(0,0);
-	z2=(b,0);
-	z3=(indent,height);
-	z4=(b-indent,height);
-	z5=z4-(0,d*slurthick);
-	z6=z3-(0,d*slurthick);
-	path boogje;
-	boogje=z1..controls z3 and z4..z2..controls z5 and z6..cycle;
-	boogje:=boogje rotated angle(dxs,dys);
-	pickup pencircle scaled sleur_pen;
-	filldraw boogje;
-enddef;
-
-
diff --git a/mf/feta-test-generic.mf b/mf/feta-test-generic.mf
index 4e89505e42..d48e01932c 100644
--- a/mf/feta-test-generic.mf
+++ b/mf/feta-test-generic.mf
@@ -6,12 +6,13 @@
 
 input feta-bolletjes;	
 %input feta-banier;
+%input feta-slag;
 %input feta-eindelijk;
 %input feta-klef;
 %	input feta-toevallig;
 %	input feta-schrift;
 %	input feta-haak;
 %	input feta-timesig;
-%	input feta-pendaal;
+	input feta-pendaal;
 %	input feta-accordion;
 %	input feta-solfa;
diff --git a/mf/feta-timesig.mf b/mf/feta-timesig.mf
index 28bf31a86f..5caf9cbd31 100644
--- a/mf/feta-timesig.mf
+++ b/mf/feta-timesig.mf
@@ -83,18 +83,19 @@ fet_beginchar ("4/4 meter", "C4/4", "fourfourmeter")
 fet_endchar;
 
 fet_beginchar ("2/2 meter", "C2/2", "allabreve")
-
 	draw_C;
 	save excentricity;
 	pair excentricity;
 
-	xpart	excentricity = x2 -1.25 stafflinethickness;
+	xpart excentricity = x2 -1.25 stafflinethickness;
 	ypart excentricity = 0;
 
 	save stemlen ;
 	stemlen = 1.4 staff_space;
+	save thick;
+	thick = stafflinethickness / 2 + 0.025 staff_space;
 
-	draw_block((- .75 stafflinethickness, - stemlen) + excentricity, (.75 stafflinethickness , stemlen) + excentricity);
+	draw_block((- thick, - stemlen) + excentricity, (thick , stemlen) + excentricity);
 fet_endchar;
 
 fet_endgroup("timesig");
diff --git a/mf/feta-toevallig.mf b/mf/feta-toevallig.mf
index 1c5ca0165e..bad84f5104 100644
--- a/mf/feta-toevallig.mf
+++ b/mf/feta-toevallig.mf
@@ -36,7 +36,7 @@ def draw_meta_sharp (expr width) =
 	pair center;
 
 	interbeam := 1.05 staff_space;
-	beamheight := 4 stafflinethickness;
+	beamheight := 0.3 staff_space + stafflinethickness;
 	beamwidth := width;
 	stemwidth := 1.5 stafflinethickness;
 	roundness := 2 blot_diameter;
@@ -133,7 +133,7 @@ fet_beginchar( "Natural", "0", "natural")
 	stemwidth;
 	save top_stem_thick;
 
-	beamheight# = 4.0 stafflinethickness#;
+	beamheight# = 0.3 staff_space# + stafflinethickness#;
 	height# = 1.5 staff_space#;
 	set_char_box(0, 2/3 staff_space#, height#, height#);
 
@@ -146,7 +146,7 @@ fet_beginchar( "Natural", "0", "natural")
 	
 
 	interstem + stemwidth =  w;
-	stemwidth = 1.3 stafflinethickness;
+	stemwidth = 0.03 staff_space + stafflinethickness;
 
 	z2 -z1 = (interstem, slope * interstem);
 	xpart .5 [z2,z1] = xcenter ;
@@ -228,10 +228,10 @@ def draw_meta_flat(expr xcenter, w, crook_fatness) =
 
 	% this is a somewhat heuristic.  We should  probably make it
 	% straight for low resolution (300 dpi and less).
-	top_stem_thick = round (2.2 stafflinethickness) + 0.74;
+	top_stem_thick = round (0.1 staff_space + 1.2 stafflinethickness) + 0.74;
 
 	bottom_overshoot = stafflinethickness;
-	bottom_stem_thick = 1.2 stafflinethickness;
+	bottom_stem_thick =0.06 staff_space +  0.6 stafflinethickness;
 
 	z1 = (0, 2 staff_space) + center - (0, stafflinethickness/2
 		+ clearing);
diff --git a/mf/slur.mf b/mf/slur.mf
deleted file mode 100644
index 86a394ae0a..0000000000
--- a/mf/slur.mf
+++ /dev/null
@@ -1,31 +0,0 @@
-
-staffsize# = 1pt#;
-stafflinethickness# = staffsize#/10;
-define_pixels (stafflinethickness, staffsize);
-
-input feta-sleur;
-
-
-
-% beginchar
-
-indent = 1.17 staffsize;
-height = 6.15 staffsize;
-len = 10 staffsize;
-
-path boogje;
-
-
-
-z1 = (0,0);
-z2 = (indent, height);
-z3 = (len - indent, height);
-z4 = (len, 0);
-
-boogje=z1..controls z2 and z3..z4;
-pickup pencircle scaled stafflinethickness;
-draw boogje;
-shipit;
-
-
-bye
diff --git a/stepmake/stepmake/metafont-rules.make b/stepmake/stepmake/metafont-rules.make
index e71a9502bc..8f10f03530 100644
--- a/stepmake/stepmake/metafont-rules.make
+++ b/stepmake/stepmake/metafont-rules.make
@@ -3,7 +3,7 @@
 
 # we want to see botched results as well.
 $(outdir)/%.dvi: %.mf
-	-$(METAFONT) "\nonstopmode; input $<;"
+	-$(METAFONT) "\scrollmode; input $<;"
 	gftodvi  $(basename $<)
 	mv $(basename $<).dvi $(outdir)
 	rm $(basename $<).*gf