From 460999e232e2126654185e5f5675f72cea495b13 Mon Sep 17 00:00:00 2001
From: Han-Wen Nienhuys <hanwen@xs4all.nl>
Date: Wed, 15 Oct 1997 00:39:05 +0200
Subject: [PATCH] release: 0.1.23

---
 AUTHORS.text               |   2 +-
 Documentation/lilypond.pod |   2 +-
 INSTALL.text               |  12 ++--
 NEWS                       |  12 +++-
 TODO                       |  14 +++-
 VERSION                    |   4 +-
 bin/cpgento.sh             |  49 -------------
 bin/lily-python.py         |  63 +++++++++++++++++
 bin/make-docxx.sh          |   9 ++-
 bin/make-website.pl        |   4 +-
 init/font-en-tja16.ly      |  22 +++---
 init/font-en-tja20.ly      |  22 +++---
 input/cadenza.ly           |  12 ++--
 lily/VERSION               |   2 +-
 lily/bar.cc                |   2 +
 lily/lookup.cc             |   7 +-
 lily/rest-collision.cc     |   8 +--
 lily/staff-side.cc         |   2 +-
 make/lelievijver.lsm       |   8 +--
 make/lilypond.lsm          |   8 +--
 make/lilypond.spec         |  16 +++--
 mf/TODO                    |   6 +-
 mf/dimen.tex               |   3 +-
 mf/feta-banier.mf          |   2 +-
 mf/feta-bolletjes.mf       |   8 +--
 mf/feta-macros.mf          |   5 ++
 mf/feta-params.mf          |   4 +-
 mf/feta-schrift.mf         |  59 ++++++++--------
 mf/feta-toevallig.mf       | 136 ++++++++++++++++++++++++-------------
 mf/foo.mf                  |  22 ++++++
 tex/font-en-tja16.tex      |   2 +-
 tex/font-en-tja20.tex      |   2 +-
 tex/lilyponddefs.tex       |   8 +--
 33 files changed, 316 insertions(+), 221 deletions(-)
 delete mode 100644 bin/cpgento.sh
 create mode 100644 bin/lily-python.py
 create mode 100644 mf/foo.mf

diff --git a/AUTHORS.text b/AUTHORS.text
index 45db5d4374..22eb7acff0 100644
--- a/AUTHORS.text
+++ b/AUTHORS.text
@@ -61,6 +61,6 @@ CCCCOOOONNNNTTTTRRRRIIIIBBBBUUUUTTTTOOOORRRRSS
 
 
 
-10/Oct/97                LilyPond 0.1.22                        1
+10/Oct/97                LilyPond 0.1.23                        1
 
 
diff --git a/Documentation/lilypond.pod b/Documentation/lilypond.pod
index 6d4a627446..0e8f4e945f 100644
--- a/Documentation/lilypond.pod
+++ b/Documentation/lilypond.pod
@@ -263,7 +263,7 @@ If you have bugreports, you should send them to this list.  If you want
 to read all bugreports, you should subscribe to this list.  To
 subscribe: send mail with subject "subscribe" to
 bug-gnu-music-request@vuse.vanderbilt.edu
-	
+
 =item gnu-music-discuss@vuse.vanderbilt.edu,
 
 For discussions concerning the GNU Music project, to subscribe: send
diff --git a/INSTALL.text b/INSTALL.text
index 202a89efff..215a2e2509 100644
--- a/INSTALL.text
+++ b/INSTALL.text
@@ -61,7 +61,7 @@ RRRRUUUUNNNNNNNNIIIINNNNGGGG
 
 
 
-8/Oct/97                 LilyPond 0.1.22                        1
+8/Oct/97                 LilyPond 0.1.23                        1
 
 
 
@@ -127,7 +127,7 @@ CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRIIIINNNNGGGG a
 
 
 
-8/Oct/97                 LilyPond 0.1.22                        2
+8/Oct/97                 LilyPond 0.1.23                        2
 
 
 
@@ -193,7 +193,7 @@ INSTALL(1)            LilyPond documentation           INSTALL(1)
 
 
 
-8/Oct/97                 LilyPond 0.1.22                        3
+8/Oct/97                 LilyPond 0.1.23                        3
 
 
 
@@ -259,7 +259,7 @@ IIIINNNNSSSSTTTTAAAALLLLLLLLIIIINNNNGGGG
 
 
 
-8/Oct/97                 LilyPond 0.1.22                        4
+8/Oct/97                 LilyPond 0.1.23                        4
 
 
 
@@ -325,7 +325,7 @@ RRRREEEEDDDDHHHHAAAATTTT LLLLIIIINNNNUUUUXXXX
 
 
 
-8/Oct/97                 LilyPond 0.1.22                        5
+8/Oct/97                 LilyPond 0.1.23                        5
 
 
 
@@ -391,6 +391,6 @@ AAAAUUUUTTTTHHHHOOOORRRRSSSS
 
 
 
-8/Oct/97                 LilyPond 0.1.22                        6
+8/Oct/97                 LilyPond 0.1.23                        6
 
 
diff --git a/NEWS b/NEWS
index f5329244d3..e73a035807 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,11 @@
-pl 22.jcn1
-	- redo of quarter rest 
-	- fixes of 8-128 rests
+pl 23
+	- feta changes: 1/4 rest, flat, bf 8-128 rest
+	- bf: cadenza
+	- bf: scripts
+	- bf: rest-collision
+	- bf: meter placement
+	- junked cpgento.sh
+*********
 
 pl 22
 	- bf: lyric 's- Zondags
@@ -15,6 +20,7 @@ pl 22
 	- moved staff to centerline == 0;
 
 ********
+
 pl 21
 	- shrinking uses more energy  than stretching
 	- check IO error on writing (disk full?)
diff --git a/TODO b/TODO
index e8416d1003..b8615af6f3 100644
--- a/TODO
+++ b/TODO
@@ -6,9 +6,16 @@ done, or is an idea that I want to think about
 Most of the items are marked in the code as well, with full explanation. 
 grep for TODO and ugh/ugr
 
-	* todo key-sig placement.
-	
-	* put errorlevel in Input
+	* LILYSOURCEDIR
+
+	* spurious "Junk beam" warnings
+
+	* standchen: warning: Excentric column (Meter dims?)
+
+
+	* optimal pagebreaking.
+
+	* put errorlevel in Input class
 
 	* AFM for font input?
 
@@ -63,6 +70,7 @@ PROJECTS
 
 	* Spring_spacer:
 	- write a faster Spring_spacer ( without matrices if possible )
+	- use straight QP to find minimal "fitting force"
 	- relate energybound to linelen unitspace fontsize etc.
 	- used fixed point fp
 
diff --git a/VERSION b/VERSION
index 1ceb51ba39..b337cd5d37 100644
--- a/VERSION
+++ b/VERSION
@@ -1,6 +1,6 @@
 TOPLEVEL_MAJOR_VERSION = 0
 TOPLEVEL_MINOR_VERSION = 1
-TOPLEVEL_PATCH_LEVEL = 22
-TOPLEVEL_MY_PATCH_LEVEL = .jcn1
+TOPLEVEL_PATCH_LEVEL = 23
+TOPLEVEL_MY_PATCH_LEVEL = 
 
 # use the above to send patches, always empty for released version:
diff --git a/bin/cpgento.sh b/bin/cpgento.sh
deleted file mode 100644
index 74f77787db..0000000000
--- a/bin/cpgento.sh
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/bin/sh
-# cpgento
-#
-
-if test $# -ne 1
-then
-	echo "Usage: "
-	echo "	cpgento LOCATION, e.g.:"; 
-	echo
-	echo "	cpgento /mnt/aix/usr/src/lily"
-       	echo "	CP=rcp cpgento fred@pcnov095.win.tue.nl:music/lily"
-	exit 1
-fi
-
-MAKE=${MAKE:-make}
-CP=${CP:-cp}
-
-genlily="out/parser.hh out/parser.cc out/lexer.cc"
-echo generating $genlily ...
-$MAKE -C lily $genlily
-
-genmi2mu="out/midi-parser.hh out/midi-parser.cc out/midi-lexer.cc"
-echo generating $genmi2mu ...
-$MAKE -C mi2mu $genmi2mu
-
-lilydir=`pwd | sed "s/.*\///"`
-todir=$1/$lilydir
-echo "copying $lilydir -> $todir"
-
-cpto() {
-	name=$1
-	tostuff=$todir/$name/out
-	genstuff="$2"
-	if [ "$CP" = "cp" -a \! -d $tostuff ]
-	then
-		echo mkdir -p $tostuff
-		mkdir -p $tostuff
-	fi
-	echo $CP $genstuff $tostuff
-	(cd $name; $CP $genstuff $tostuff)
-}
-
-cpto lily "$genlily"
-cpto mi2mu "$genmi2mu"
-
-# if you cannot gen the above, you-ll probably want:
-flexlexerh=/usr/include/FlexLexer.h
-cpto lib $flexlexerh
-
diff --git a/bin/lily-python.py b/bin/lily-python.py
new file mode 100644
index 0000000000..6f85149b50
--- /dev/null
+++ b/bin/lily-python.py
@@ -0,0 +1,63 @@
+#!@PYTHON@
+
+# 
+# lily-python.py --  implement general LilyPond-wide python stuff
+# 
+# source file of the GNU LilyPond music typesetter
+# 
+# (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+# 
+
+import posix
+import pwd
+import regex
+import regsub
+import string
+import sys
+import os
+import getopt
+
+
+
+
+
+make_assign_re = regex.compile('^\([A-Z_]*\) *= *\(.*\)$')
+
+def version_str_tuple(file):
+    lines = file.readlines()
+
+    mi = pa = mp = mj = ''
+    
+    for l in lines:
+	if make_assign_re.search(l) <> -1:
+	    nm = make_assign_re.group(1)
+	    val = make_assign_re.group(2)
+	    if nm == 'TOPLEVEL_MAJOR_VERSION':
+		mj = val
+	    elif nm == 'TOPLEVEL_MINOR_VERSION':
+		mi = val
+	    elif nm == 'TOPLEVEL_PATCH_LEVEL':
+		pa = val
+	    elif nm == 'TOPLEVEL_MY_PATCH_LEVEL':
+		mp = val
+    return (mj,mi,pa,mp)
+
+class Lilydirs:
+    def __init__(self):
+	try:
+	    self.topdir = os.environ['LILYPOND_SOURCEDIR'] + '/'
+	except IndexError:
+	    self.topdir = os.environ['HOME'] + 'musix/current'
+	    
+	self.release_dir = self.topdir + '../releases/'
+	self.patch_dir = self.topdir + '../patches/'
+
+    def version_str_tuple(self):
+        f = open (self.topdir + 'VERSION')
+	v = version_str_tuple(f)
+	f.close ()
+	return v
+
+lilydirs = Lilydirs()
+
+print lilydirs.version_str_tuple()
diff --git a/bin/make-docxx.sh b/bin/make-docxx.sh
index dc60f80f1c..b74572e399 100644
--- a/bin/make-docxx.sh
+++ b/bin/make-docxx.sh
@@ -1,5 +1,8 @@
 #!/bin/sh
-
-p1=`find ./ -name '*.hh' |egrep -v out/` 
-p2=`find ./ -name '*.cc' |egrep -v out/`
+if [ x$LILYTOP = x ];
+then
+    LILYTOP = .
+fi
+p1=`find $LILYTOP -name '*.hh' |egrep -v out/` 
+p2=`find $LILYTOP -name '*.cc' |egrep -v out/`
 doc++ -d out/ -S -k -p $p1 $p2
diff --git a/bin/make-website.pl b/bin/make-website.pl
index 1d690e23ad..3ac7f7bf1f 100644
--- a/bin/make-website.pl
+++ b/bin/make-website.pl
@@ -295,7 +295,7 @@ sub docxx_update
     $ban =~ s!index.html!../index.html!g;
     print BANNER $ban;
     close BANNER;
-    my_system "BANNEROPT=\"-B /tmp/lilybanner.html\" $depth/bin/out/make-docxx";
+    my_system("BANNEROPT=\"-B /tmp/lilybanner.html\" $depth/bin/out/make-docxx");
 }
 
 sub do_tar
@@ -335,7 +335,7 @@ sub main
     chdir ("out");
     $ENV{"TEXINPUTS"} .= ":$depth/input/:";
     $ENV{"LILYINCLUDE"} = "$depth/input/";
-
+    $ENV{"LILYTOP"} = $depth;
 
     gen_html;
     copy_files;
diff --git a/init/font-en-tja16.ly b/init/font-en-tja16.ly
index 4d27f2f750..037eee9b66 100644
--- a/init/font-en-tja16.ly
+++ b/init/font-en-tja16.ly
@@ -1,5 +1,5 @@
 % generated automatically by mf-to-table.py version 0.4
-% on Fri Oct 10 21:22:38 1997
+% on Tue Oct 14 23:56:57 1997
 % Do not edit
 % input from out/font-en-tja16.log
 % name=\symboltables {
@@ -8,18 +8,18 @@
         "1"	"\\halfrest"	-0.00\pt	6.00\pt	-0.00\pt	2.50\pt	
         "0o"	"\\outsidewholerest"	-2.50\pt	8.50\pt	1.50\pt	4.00\pt	
         "1o"	"\\outsidehalfrest"	-2.50\pt	8.50\pt	-0.00\pt	2.50\pt	
-        "2"	"\\quartrest"	-0.00\pt	4.00\pt	3.00\pt	14.00\pt	
+        "2"	"\\quartrest"	-0.00\pt	4.32\pt	3.00\pt	14.40\pt	
         "3"	"\\eighthrest"	-0.00\pt	5.33\pt	4.00\pt	11.47\pt	
-        "4"	"\\sixteenthrest"	-0.00\pt	5.33\pt	-0.00\pt	11.47\pt	
-        "5"	"\\thirtysecondrest"	-0.00\pt	5.33\pt	-0.00\pt	15.47\pt	
-        "6"	"\\sixtyfourthrest"	-0.00\pt	5.33\pt	-0.00\pt	19.47\pt	
-        "7"	"\\hundredtwentyeighthrest"	-0.00\pt	5.33\pt	-0.00\pt	23.47\pt	
+        "4"	"\\sixteenthrest"	-0.00\pt	6.23\pt	-0.00\pt	11.47\pt	
+        "5"	"\\thirtysecondrest"	-0.00\pt	7.03\pt	-0.00\pt	15.47\pt	
+        "6"	"\\sixtyfourthrest"	-0.00\pt	7.53\pt	-0.00\pt	19.47\pt	
+        "7"	"\\hundredtwentyeighthrest"	-0.00\pt	8.38\pt	-0.00\pt	23.47\pt	
         }
     "accidentals"	 = \table {
         "1"	"\\sharp"	-0.00\pt	4.40\pt	-6.00\pt	6.00\pt	
         "0"	"\\natural"	-0.00\pt	2.67\pt	-6.00\pt	6.00\pt	
-        "-1"	"\\flat"	-0.00\pt	3.00\pt	-2.00\pt	8.00\pt	
-        "-2"	"\\flatflat"	-0.00\pt	6.00\pt	-2.00\pt	8.00\pt	
+        "-1"	"\\flat"	-0.48\pt	3.20\pt	-2.00\pt	8.00\pt	
+        "-2"	"\\flatflat"	-0.48\pt	5.80\pt	-2.00\pt	8.00\pt	
         "2"	"\\sharpsharp"	-0.00\pt	4.00\pt	-2.00\pt	2.00\pt	
         }
     "dots"	 = \table {
@@ -34,7 +34,7 @@
         }
     "scripts"	 = \table {
         "ufermata"	"\\ufermata"	-5.30\pt	5.30\pt	-0.30\pt	5.80\pt	
-        "dfermata"	"\\dfermata"	-5.30\pt	5.30\pt	-5.80\pt	0.00\pt	
+        "dfermata"	"\\dfermata"	-5.30\pt	5.30\pt	-5.80\pt	0.30\pt	
         "sforzato"	"\\sforzatoaccent"	-3.60\pt	3.60\pt	-2.00\pt	2.00\pt	
         "staccato"	"\\staccato"	-0.60\pt	0.60\pt	-0.60\pt	0.60\pt	
         "ustaccatissimo"	"\\ustaccatissimo"	-0.80\pt	0.80\pt	-0.20\pt	4.00\pt	
@@ -52,7 +52,7 @@
         "pedaltoe"	"\\pedaltoe"	-2.00\pt	2.00\pt	-0.00\pt	6.00\pt	
         }
     "floogbars"	 = \table {
-        "3u"	"\\eighthflag"	-0.20\pt	4.10\pt	-12.77\pt	0.20\pt	
-        "3d"	"\\deighthflag"	-0.20\pt	4.10\pt	-0.20\pt	12.77\pt	
+        "3u"	"\\eighthflag"	-0.20\pt	4.18\pt	-12.77\pt	0.20\pt	
+        "3d"	"\\deighthflag"	-0.20\pt	4.18\pt	-0.20\pt	12.77\pt	
         }
     %  } % $name
diff --git a/init/font-en-tja20.ly b/init/font-en-tja20.ly
index 63af39049e..716f6bbc76 100644
--- a/init/font-en-tja20.ly
+++ b/init/font-en-tja20.ly
@@ -1,5 +1,5 @@
 % generated automatically by mf-to-table.py version 0.4
-% on Fri Oct 10 21:22:44 1997
+% on Tue Oct 14 23:57:04 1997
 % Do not edit
 % input from out/font-en-tja20.log
 % name=\symboltables {
@@ -8,18 +8,18 @@
         "1"	"\\halfrest"	-0.00\pt	7.50\pt	-0.00\pt	3.13\pt	
         "0o"	"\\outsidewholerest"	-3.13\pt	10.62\pt	1.88\pt	5.00\pt	
         "1o"	"\\outsidehalfrest"	-3.13\pt	10.62\pt	-0.00\pt	3.13\pt	
-        "2"	"\\quartrest"	-0.00\pt	5.00\pt	3.75\pt	17.50\pt	
+        "2"	"\\quartrest"	-0.00\pt	5.40\pt	3.75\pt	18.00\pt	
         "3"	"\\eighthrest"	-0.00\pt	6.67\pt	5.00\pt	14.33\pt	
-        "4"	"\\sixteenthrest"	-0.00\pt	6.67\pt	-0.00\pt	14.33\pt	
-        "5"	"\\thirtysecondrest"	-0.00\pt	6.67\pt	-0.00\pt	19.33\pt	
-        "6"	"\\sixtyfourthrest"	-0.00\pt	6.67\pt	-0.00\pt	24.33\pt	
-        "7"	"\\hundredtwentyeighthrest"	-0.00\pt	6.67\pt	-0.00\pt	29.33\pt	
+        "4"	"\\sixteenthrest"	-0.00\pt	7.79\pt	-0.00\pt	14.33\pt	
+        "5"	"\\thirtysecondrest"	-0.00\pt	8.78\pt	-0.00\pt	19.33\pt	
+        "6"	"\\sixtyfourthrest"	-0.00\pt	9.41\pt	-0.00\pt	24.33\pt	
+        "7"	"\\hundredtwentyeighthrest"	-0.00\pt	10.47\pt	-0.00\pt	29.33\pt	
         }
     "accidentals"	 = \table {
         "1"	"\\sharp"	-0.00\pt	5.50\pt	-7.50\pt	7.50\pt	
         "0"	"\\natural"	-0.00\pt	3.33\pt	-7.50\pt	7.50\pt	
-        "-1"	"\\flat"	-0.00\pt	3.75\pt	-2.50\pt	10.00\pt	
-        "-2"	"\\flatflat"	-0.00\pt	7.50\pt	-2.50\pt	10.00\pt	
+        "-1"	"\\flat"	-0.60\pt	4.00\pt	-2.50\pt	10.00\pt	
+        "-2"	"\\flatflat"	-0.60\pt	7.25\pt	-2.50\pt	10.00\pt	
         "2"	"\\sharpsharp"	-0.00\pt	5.00\pt	-2.50\pt	2.50\pt	
         }
     "dots"	 = \table {
@@ -34,7 +34,7 @@
         }
     "scripts"	 = \table {
         "ufermata"	"\\ufermata"	-6.63\pt	6.63\pt	-0.38\pt	7.25\pt	
-        "dfermata"	"\\dfermata"	-6.63\pt	6.63\pt	-7.25\pt	0.00\pt	
+        "dfermata"	"\\dfermata"	-6.63\pt	6.63\pt	-7.25\pt	0.38\pt	
         "sforzato"	"\\sforzatoaccent"	-4.50\pt	4.50\pt	-2.50\pt	2.50\pt	
         "staccato"	"\\staccato"	-0.75\pt	0.75\pt	-0.75\pt	0.75\pt	
         "ustaccatissimo"	"\\ustaccatissimo"	-1.00\pt	1.00\pt	-0.20\pt	5.00\pt	
@@ -52,7 +52,7 @@
         "pedaltoe"	"\\pedaltoe"	-2.50\pt	2.50\pt	-0.00\pt	7.50\pt	
         }
     "floogbars"	 = \table {
-        "3u"	"\\eighthflag"	-0.25\pt	5.13\pt	-15.91\pt	0.25\pt	
-        "3d"	"\\deighthflag"	-0.25\pt	5.13\pt	-0.25\pt	15.91\pt	
+        "3u"	"\\eighthflag"	-0.25\pt	5.23\pt	-15.91\pt	0.25\pt	
+        "3d"	"\\deighthflag"	-0.25\pt	5.23\pt	-0.25\pt	15.91\pt	
         }
     %  } % $name
diff --git a/input/cadenza.ly b/input/cadenza.ly
index e7538272f9..2a52afd4bf 100644
--- a/input/cadenza.ly
+++ b/input/cadenza.ly
@@ -31,28 +31,28 @@ cad = \melodic  {
 		\bar "empty";
 			c [c_"rubato" e g c']
 	\octave c'';
-	e4. e [g ~ f_"rit" e d]
+	e4. e [g () f_"rit" e d]
 
 	\duration 16;
-	dis4~ e4
+	dis4() e4
 		\bar "" ;
 		r8 [c d] [e f g gis]
 	\duration 4;
-	a-> 'f~ 'e g
-	f-> 'd~ 'cis e
+	a-> 'f() 'e g
+	f-> 'd() 'cis e
 	\duration 8;	
 	d4^\fermata
 		\bar "" ;
 
 	r8 'a ['b cis]
 	\duration 16;	[d cis d e]
-	f4~ [f e d c]
+	f4() [f e d c]
 	'b4-\turn
 	\octave c'; [2/3 d'8 c'8 a8]1/1
 	g2
 		\bar "" ;
 	[g c e g] [c' e g c']\octave c''; 
-	[e 'g c e] g4^\fermata %~ % BUG!
+	[e 'g c e] g4^\fermata 
 		\bar "" ;
 	[g8.(_"a tempo" e g8. )e]
 	a4. g8 [f8 e8 d8 c8]
diff --git a/lily/VERSION b/lily/VERSION
index c767ffade7..287c16e672 100644
--- a/lily/VERSION
+++ b/lily/VERSION
@@ -1,6 +1,6 @@
 MAJOR_VERSION = 0
 MINOR_VERSION = 1
-PATCH_LEVEL = 22
+PATCH_LEVEL = 23
 # use to send patches, always empty for released version:
 # include separator: ".postfix", "-pl" makes rpm barf
 
diff --git a/lily/bar.cc b/lily/bar.cc
index 8fb5728314..ac7e0f19a2 100644
--- a/lily/bar.cc
+++ b/lily/bar.cc
@@ -27,7 +27,9 @@ IMPLEMENT_IS_TYPE_B1(Bar,Item);
 void
 Bar::do_print() const
 {
+#ifndef NPRINT
   DOUT << type_str_;
+#endif
 }
 
 Molecule*
diff --git a/lily/lookup.cc b/lily/lookup.cc
index 38e31d9000..333072ad2f 100644
--- a/lily/lookup.cc
+++ b/lily/lookup.cc
@@ -216,11 +216,8 @@ Lookup::linestaff (int lines, Real interline_f, Real wid) const
 Atom
 Lookup::meter (Array<Scalar> a) const
 {
-  Atom s;
-  s.dim_.x() = Interval (0 PT, 10 PT);
-  s.dim_.y() = Interval (0, 20 PT);	// todo
-  String src = (*symtables_)("param")->lookup ("meter").tex_;
-  s.tex_ = substitute_args (src,a);
+  Atom s((*symtables_)("param")->lookup ("meter"));
+  s.tex_ = substitute_args (s.tex_,a);
   return s;    
 }
 
diff --git a/lily/rest-collision.cc b/lily/rest-collision.cc
index 6c50682722..0be9090d2c 100644
--- a/lily/rest-collision.cc
+++ b/lily/rest-collision.cc
@@ -94,15 +94,10 @@ Rest_collision::do_pre_processing()
   // meisjes met jongetjes
   else 
     {
-#if 0 // breendet: rests go always under
-      // geen gemug, trug op je rug
-      int dir_i = -1;
-      rest_l_arr_[0]->translate_rests (dir_i * 3);	
-#else
       // int dir_i = - ncol_l_arr_[0]->dir_;
       int dir_i = rest_l_arr_[0]->dir_;
       // hope it's 4: if it works->doco
-      int midpos = 4;
+      int midpos = 0;
 	
       // minimum move
       int minpos = 4;
@@ -121,7 +116,6 @@ Rest_collision::do_pre_processing()
 	      (ncol_l_arr_[i]->head_l_arr_[j]->position_i_ -midpos) + sep_i;
 	}
       rest_l_arr_[0]->translate_rests (dir_i * minpos);	
-#endif
     }
 }
 
diff --git a/lily/staff-side.cc b/lily/staff-side.cc
index eba7d09a13..28df70b255 100644
--- a/lily/staff-side.cc
+++ b/lily/staff-side.cc
@@ -75,7 +75,7 @@ Staff_side::get_position_i() const
   Real inter_f = paper()-> internote_f ();
   if (!inside_staff_b_) 
     {
-      y  = (staff_sym_l_) ? dir_ * (staff_sym_l_->steps_i() + 2) : -2;  
+      y  = (staff_sym_l_) ? dir_ * (staff_sym_l_->steps_i()/2 + 2) : -2;  
       y *=inter_f;
       
       Interval v= support_height();
diff --git a/make/lelievijver.lsm b/make/lelievijver.lsm
index 2e800615f3..0ea5e5d258 100644
--- a/make/lelievijver.lsm
+++ b/make/lelievijver.lsm
@@ -1,7 +1,7 @@
 Begin3
 Titel: LilyPond
-Versie: 0.1.22.jcn1
-Inschrijf datum: 13OCT97
+Versie: 0.1.23
+Inschrijf datum: 15OCT97
 Beschrijving: LilyPond is de muziek typesetter van het GNU Project.  
 		Het programma genereert muziek in zichtbare of 
 		hoorbare vorm uit uit een muzikale definitie file: 
@@ -16,8 +16,8 @@ Auteur: hanwen@stack.nl (Han-Wen Nienhuys)
 	jan@digicash.com (Jan Nieuwenhuizen)
 Onderhouden door: hanwen@stack.nl (Han-Wen Nienhuys)
 Voornaamste plek: sunsite.unc.edu /pub/Linux/apps
-	395k lilypond-0.1.22.jcn1.tar.gz 
+	395k lilypond-0.1.23.tar.gz 
 Oorspronkelijke plek: pcnov095.win.tue.nl /pub/lilypond/
-	395k lilypond-0.1.22.jcn1.tar.gz 
+	395k lilypond-0.1.23.tar.gz 
 Copi"eer politie: GPL
 End
diff --git a/make/lilypond.lsm b/make/lilypond.lsm
index 9077acff9c..d38fbdc838 100644
--- a/make/lilypond.lsm
+++ b/make/lilypond.lsm
@@ -1,7 +1,7 @@
 Begin3
 Title: LilyPond
-Version: 0.1.22
-Entered-date: 10OCT97
+Version: 0.1.23
+Entered-date: 15OCT97
 Description: LilyPond is the GNU Project music typesetter.  The program
 		generates visual or auditive output from a music 
 		definition file: it can typeset formatted sheet music 
@@ -14,8 +14,8 @@ Author: hanwen@stack.nl (Han-Wen Nienhuys)
 	jan@digicash.com (Jan Nieuwenhuizen)
 Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
 Primary-site: sunsite.unc.edu /pub/Linux/apps
-	395k lilypond-0.1.22.tar.gz 
+	395k lilypond-0.1.23.tar.gz 
 Original-site: pcnov095.win.tue.nl /pub/lilypond/
-	395k lilypond-0.1.22.tar.gz 
+	395k lilypond-0.1.23.tar.gz 
 Copying-policy: GPL
 End
diff --git a/make/lilypond.spec b/make/lilypond.spec
index 296e2fd7a5..ee21c49a31 100644
--- a/make/lilypond.spec
+++ b/make/lilypond.spec
@@ -1,9 +1,9 @@
 Name: lilypond
-Version: 0.1.22
+Version: 0.1.23
 Release: 1
 Copyright: GPL
 Group: Applications/Publishing
-Source0: pcnov095.win.tue.nl:/pub/lilypond/lilypond-0.1.22.tar.gz
+Source0: pcnov095.win.tue.nl:/pub/lilypond/lilypond-0.1.23.tar.gz
 Summary: A preprocessor to make TeX typeset music.
 URL: http://www.stack.nl/~hanwen/lilypond
 Packager: Han-Wen Nienhuys <hanwen@stack.nl>
@@ -11,11 +11,13 @@ Icon: lelie_icon.gif
 Buildroot: /tmp/lilypond-install
 
 %description 
-LilyPond is the GNU Project music typesetter. This program converts
-music definition files into visual or auditive output: it can typeset
-formatted sheet music to a TeX file and and (mechanical) performances
-to MIDI files. Features include multiple staffs, meters, clefs, keys,
-lyrics, versatile input-language, cadenzas beams, slurs, triplets.
+LilyPond is the GNU Project music typesetter.  The program
+generates visual or auditive output from a music 
+definition file: it can typeset formatted sheet music 
+to a TeX file and play (mechanical) performances to a 
+MIDI file.  Features include multiple staffs, meters, 
+clefs, keys, lyrics, versatile input-language, 
+cadenzas, beams, slurs, triplets.
 
 %prep
 %setup
diff --git a/mf/TODO b/mf/TODO
index 1c9189e7d2..d2ef7043d7 100644
--- a/mf/TODO
+++ b/mf/TODO
@@ -2,10 +2,12 @@
 	- design macro for penstroke with rounded endings
 	- y-refpoint for rests should be the 4th staffline (gclef: b')
 	- more symbols
+	  * ledgerlines
+	  * stem-notehead attachments.
 	  * flags
 	  * clefs
 	  * some scripts:
-	    - piano pedals,
+	  * piano pedals,
 	  * braces.
 	  * trills
 	  * maxima notehead
@@ -14,8 +16,6 @@
 
 	- include important spacing dims in fetalog 
 	- lilyrules.mf for different rules (lines) ?
-	- check out Adobe Sonata/Petrucci font layout.  They are the
-standard for Music fonts
 
 	- hack up GS or the mf-gray font to do round pixels
 iso. square pixels.  (Printers don't do square pixels.)
diff --git a/mf/dimen.tex b/mf/dimen.tex
index 928a0b7602..44c59a4ef4 100644
--- a/mf/dimen.tex
+++ b/mf/dimen.tex
@@ -9,9 +9,8 @@
 \font\slurs=xslhd16
 \font\specfont=musixspx
 \font\egler=opus16
-%\def\thefont{\egler}
+\def\thefont{\egler}
 %\def\thefont{\specfont}
-\def\thefont{\fet}
 
 \def\mb#1{{\thefont\char#1}}
 
diff --git a/mf/feta-banier.mf b/mf/feta-banier.mf
index 5dad6a8216..a7995d6ee1 100644
--- a/mf/feta-banier.mf
+++ b/mf/feta-banier.mf
@@ -18,7 +18,7 @@ hip_depth# = 15/7 interline#;
 hip_width# = 7/8 interline# + hip_thickness# /2 + stemthickness#/2;
 
 foot_depth# = flare# + 15/7 interline#;
-foot_width# = .885 hip_width#;
+foot_width# = .8 hip_width#;
 
 
 define_pixels(flare, 
diff --git a/mf/feta-bolletjes.mf b/mf/feta-bolletjes.mf
index f99fed2e69..d558cf751a 100644
--- a/mf/feta-bolletjes.mf
+++ b/mf/feta-bolletjes.mf
@@ -3,7 +3,7 @@
 
 % most beautiful noteheads are pronounced, not circular, 
 % and not even symmetric.
-% These examples are inspired by [Wanske] [see literature list]
+% These examples are inspired by [Wanske], see literature list
 
 
 fet_begingroup("balls");
@@ -17,7 +17,7 @@ define_pixels(noteheight);
 def draw_brevis =
 	save beamheight, head_width;
 	save holeheight, stem_width;
-	save serif_size;
+	save serif_size, serif_protrude;
 
 	head_width# = 2 interline#;
 	holeheight = 3 stafflinethickness;
@@ -29,7 +29,7 @@ def draw_brevis =
 	
 	2 beamheight + holeheight = noteheight;
 	serif_size = (holeheight - stafflinethickness)/2;
-
+	serif_protrude = 1.5 serif_size;
 	penpos1(stem_width, 0);
 	penpos2(stem_width, 0);
 	penpos3(beamheight, 90);
@@ -41,7 +41,7 @@ def draw_brevis =
 	z3r = z2r + serif_size *(1,-1);
 	y4r = y3r;
 	x4r = head_width/2;
-	z5l = z3l + serif_size * (-1,-1);
+	z5l = z3l + (-serif_size, -serif_protrude);
 
 	penlabels(1,2,3,4, 5);
 	fill z1r -- z1l -- z5r{down} .. z5l{up} .. z3l{right}
diff --git a/mf/feta-macros.mf b/mf/feta-macros.mf
index e50ef98781..01a314f985 100644
--- a/mf/feta-macros.mf
+++ b/mf/feta-macros.mf
@@ -87,6 +87,11 @@ enddef;
 % drawing
 %
 
+def simple_serif(expr p,q, a)= 
+	p{dir(angle(q-p) -a)} .. q{ - dir(angle(p -q) + a)}
+enddef;
+%
+
 % a: x diameter
 % b: y diameter
 % err_x: drift of y axis at top
diff --git a/mf/feta-params.mf b/mf/feta-params.mf
index 51ec99126a..1ae189f1fa 100644
--- a/mf/feta-params.mf
+++ b/mf/feta-params.mf
@@ -11,7 +11,7 @@ interline#:=staffsize#/(stafflines-1);
 stafflinethickness#:=0.1 interline#;
 
 stemthickness# := stafflinethickness#;
-ledgerlinethickness# := 1.5 stafflinethickness#;
+ledgerlinethickness# := 2 stafflinethickness#;
 
 define_pixels(interline, stemthickness);
 define_pixels(stafflinethickness,ledgerlinethickness);
@@ -32,6 +32,8 @@ overdone_heads = 0.0;
 %
 % this is not a meta variable: it is related to absolute sizes.
 %
+% According to [Wanske], only outside corners should be round
+%
 numeric blot_diameter;
 blot_diameter# = .4pt#;
 define_pixels(blot_diameter);
diff --git a/mf/feta-schrift.mf b/mf/feta-schrift.mf
index 05202ee229..8c9d7d795d 100644
--- a/mf/feta-schrift.mf
+++ b/mf/feta-schrift.mf
@@ -49,9 +49,7 @@ fet_endchar;
 
 fet_beginchar("fermata down", "dfermata", "dfermata")
 	draw_fermata;
-	currentpicture:=currentpicture yscaled -1 ;
-	set_char_box(w#, w#, h#, 0);
-	
+	y_mirror_char;
 fet_endchar;
 
 
@@ -64,16 +62,17 @@ fet_beginchar("> accent", "sforzato", "sforzatoaccent")
 	save thickness, diminish;
 
 	thickness = 2 stafflinethickness;
+	pickup pencircle scaled thickness;
 
 	% prevent blobs at crossing lines
 	diminish = .75;
 
-	y1 + thickness/2 = h;
-	x1 = -b;
-	x2 = w;
+	top y1 = h;
+	lft x1 = -b;
+	rt x2 = w;
 	y2 = .25 thickness* diminish;
 
-	z4 = (w,0);
+	rt z4 = (w,0);
 	x3 =0;
 	z3 = whatever [z1, z4];
 
@@ -81,10 +80,14 @@ fet_beginchar("> accent", "sforzato", "sforzatoaccent")
 	penpos1(thickness, 90);
 	penpos3(thickness, 90);
 
-	penstroke z1e .. z3e .. z2e;
-	penstroke (z1e .. z3e .. z2e) yscaled -1;
+	draw z1 .. z3;
+	draw (z1 .. z3) yscaled -1;
+	draw z4;
+	penstroke z3e .. z2e;
+	penstroke (z3e .. z2e) yscaled -1;
 
 	penlabels(1,2,3);
+	labels(4);
 fet_endchar;
 
 fet_beginchar("staccato dot", "staccato", "staccato")
@@ -102,7 +105,7 @@ def draw_staccatissimo =
 	radius# = 2 stafflinethickness#;
 	define_pixels(radius, height);
 
-	draw_brush((0,0), blot_diameter, (0, height),2 radius);
+	draw_brush((0,0), stafflinethickness, (0, height),2 radius);
 	set_char_box(radius#,radius#, blot_diameter#/2, height# + radius#);
 enddef;
 
@@ -134,25 +137,24 @@ fet_endchar;
 
 
 def draw_marcato = 
-	save fatness, thinness;
+	save fat_factor, thinness;
 	set_char_box(interline#/2, interline#/2, 0, 1.1 interline#);
 
-	fatness = 3 stafflinethickness;
-	thinness = .8 stafflinethickness;
-	x2 - x1  + blot_diameter = fatness;
-	x2 + thinness/2 = w;
-	
-	y1 = y2;
-	y1 = thinness/2;
-	z2 - z3 = whatever * (charwd, -charht);
-	z1 - z4 = whatever * (charwd, -charht);
-	z3 - z4 = whatever * (charwd, charht);
-	y3 + thinness/2 = h;
-	draw_rounded_path(z1 -- z2 -- z3 -- z4 -- cycle, thinness);
+	fat_factor = .3;
+	thinness =  stafflinethickness;
 
 	pickup pencircle scaled thinness;
-	z3 - z5 = whatever* (z3 - z4);
+	rt x2 = w;
+	lft x5 = -b;
 	bot y5 = 0;
+	top y3 = h;
+	y1 = y2 = y5;
+
+	x3 =0;
+	z1 - z4 = whatever * (charwd, -charht);
+	z4 = fat_factor [z3, z5];
+
+	filldraw z1 -- z2 -- z3 -- z4 -- cycle;
 	draw z3 .. z5;
 enddef;
 
@@ -165,8 +167,8 @@ fet_endchar;
 %
 % The down marcato char (not very much used). 
 % Contrary to what some MF/TeX `gurus' believe
-% it is *point*-symmetric with the "up" version; (at least [Chlapik] 
-% agrees with us)
+% it is *point*-symmetric with the "up" version; (at least [Chlapik] and 
+% and [Wanske] agree with us)
 %
 fet_beginchar("marcato down", "dmarcato", "dmarcato")
 	draw_marcato;
@@ -269,7 +271,7 @@ fet_beginchar("Downbow", "downbow", "downbow")
 fet_endchar;
 
 %
-% Inspired by a computer-set version of auf dem Strom by Baerenreiter. 
+% Inspired by a computer-set version of Auf dem Strom by Baerenreiter. 
 %
 fet_beginchar("Turn","turn","turn")
 	save thin, thick, ball_diam, darkness;
@@ -369,6 +371,7 @@ fet_beginchar("Trill (`tr')","trill","trill")
 	kerning# = .75 ex#;
 
 	define_pixels(ex, ascender_extra, ascender, kerning);
+
 	t_overshoot = 0.03 ex;
 	fatness = 12/40 ex;
 	t_fatness = 8/10 fatness;
@@ -376,7 +379,7 @@ fet_beginchar("Trill (`tr')","trill","trill")
 	uitschieter = 21/40 ex;
 	hair_thick =  blot_diameter;
 	bulb_size = 0.47;
-	slant = .15;
+	slant = .2;
 
 	local_copy(transform)(currenttransform);
 	currenttransform := currenttransform slanted slant;
diff --git a/mf/feta-toevallig.mf b/mf/feta-toevallig.mf
index 69ef0a7315..1238eb366b 100644
--- a/mf/feta-toevallig.mf
+++ b/mf/feta-toevallig.mf
@@ -1,8 +1,8 @@
 %
 % Accidentals from various sources, notably
 %
-%   Baerenreiter edition of Schuberts `Auf dem Strom' (sharp, natural, flat)
-%   F Hofmeister edition of Muellers `Etueden fuer Horn'  (double sharp)
+%   Baerenreiter edition of Schuberts `Auf dem Strom' (sharp, natural)
+%   F Hofmeister edition of Muellers `Etueden fuer Horn'  (double sharp, flat)
 %
 
 
@@ -19,7 +19,7 @@ fet_beginchar("Sharp" , "1", "sharp");
 	save interbeam, interstem, beamheight, beamwidth, 
 		stemwidth;
 
-	interbeam := 1.1 interline;
+	interbeam := 1.05 interline;
 	interstem := 7/16 ;
 	beamheight := 4 stafflinethickness;
 	beamwidth := w;
@@ -102,6 +102,7 @@ fet_beginchar( "Natural", "0", "natural")
 	labels(1,2,3,4);
 	fet_endchar;
 
+
 %
 % Dedicated to my mom.    (3/10/97)
 %
@@ -109,63 +110,100 @@ fet_beginchar( "Natural", "0", "natural")
 %    -- HW
 %
 
-%
-% FIXME more metaness
-% FIXME distribution of the crooks' thickness
-%
-% FIXME probably doesn't look quite right. 
-%
+% TODO: remove crook_fatness
+def draw_meta_flat(expr xcenter, w, crook_fatness) =
+	clearxy;
+	save crook_thinness;
+	save top_stem_thick, bottom_stem_thick, hair;
+	save center;
+	pair center;
+	center = (xcenter, 0);
 
-def flat_meta_symbol(expr w, d, h, 
-	 stemwidth, crook_fatness, crook_thinness,
-	bottom_stem_thick, top_stem_thick)=
+	crook_thinness = 1.25 stafflinethickness;
+	top_stem_thick = 2 stafflinethickness;
+	bottom_stem_thick = 1.2 stafflinethickness;
+
+
+	z1 = (0, 2 interline) + center;
+	z2 = (0, - 1/2 interline)+  center;
+
+	penpos1(top_stem_thick, 0);
+	penpos2(bottom_stem_thick, 0); 
+
+	fill simple_serif(z1r, z1l, 30) -- z2l -- z2r -- cycle;
+
+
+	y3l = (interline - stafflinethickness)/2 + ypart center;
+	z3l = whatever [z2r,z1r];
+
+	z3r = .26 [z2r, z1r];
 
-	z1 = (0, h);
-	z2 = (0, -d);
-	brush(z1, top_stem_thick , z2, bottom_stem_thick);
-	
-	z3 = (0, 7/16 interline);
-	z4 = z3 + whatever * (dir 30);
-	y4 = 1/2 interline ;
-	y5 = 4/16 interline;
-	x5 + crook_fatness/2 = w;
-	z6 = z2 + (0,-1) * (bottom_stem_thick - crook_thinness);
-
-	penpos3(crook_thinness, 90);
-	penpos4(crook_thinness, 90);
-	penpos5(crook_fatness, 0);
-	penpos6(crook_thinness, -90);
-	labels(1,2,3,4,5,6);
-	penstroke z3e{dir 32} .. z4e{dir 30} .. z5e{down} .. {dir 220}z6e;
-	enddef;
-	
-def flat_symbol (expr w, d, h)=
-	save stemwidth, bottom_stem_thick, top_stem_thick, 
-		crook_thinness, crook_fatness;
-	stemwidth = stafflinethickness;
-	crook_fatness = 1/4 interline;
-	crook_thinness =  stemwidth;
-	bottom_stem_thick =  5/4 stemwidth;
-	top_stem_thick = 2 stemwidth;
-	flat_meta_symbol(w,d,h, stemwidth, crook_fatness, crook_thinness, 
-		bottom_stem_thick, top_stem_thick);
-	enddef;
 
+	z4 = (3/8 interline, interline/2) + center;
+	penpos4(whatever, 53);
+	y4l - y4r = 2 crook_thinness ;
+%	y4l - y4r = 6/20[crook_thinness, crook_fatness] ;
+
+	y5r = 1/4 interline + ypart center;
+	x5l = w + xpart center;
+	penpos5(crook_fatness, -175);
+
+	z8 = (0, - interline/2 - stafflinethickness/2) + center;
+
+	z9 = (x5,0);
+
+	save ne_angle;
+	ne_angle = angle(z9 - z8);
+
+	z7 = 8/33 [z8,z9];
+	z6l = 18/33 [z8,z9] + .5 crook_thinness *dir(ne_angle -90);
+  
+	penpos7(crook_thinness, ne_angle + 90);
+
+	z6r = .3 (z9-z8) + z7r;
+
+%	penpos7(crook_thinness, angle(dir(z8-center) -180);
+
+	penpos8(whatever, ne_angle + 90);
+	x8r =  xpart center - bottom_stem_thick/2;
+	penlabels(range 0 thru 10);
+
+	z10 = (bottom_stem_thick/2, -1/5 interline) + center;
+
+	unfill z3r{up} .. z4r{right} .. tension .9 
+		.. z6r ---
+		z7r{left}
+		.. z10 {up} -- cycle;
+	fill z8r{down}
+		.. tension 0.8 ..z8l{(z9-z8)}
+		.. z7l
+		.. z6l
+		.. z5l{up}
+		.. z4l{left} .. z3l -- cycle;
+		
+	labels(10);
+enddef;
+
+	
 %
 % unfortunately, 600dpi is not enough to show the brush of the stem.
 %
 fet_beginchar("Flat", "-1", "flat")
-	set_char_box(0, 9/12 interline#, .5 interline#, 2 interline#);
-	flat_symbol (w, d, h);
+	set_char_box(1.2 stafflinethickness#, .8 interline#, .5 interline#, 2 interline#);
+	draw_meta_flat(0, w, 1/3 interline);
 	fet_endchar;
 
+
 fet_beginchar("Double flat", "-2", "flatflat")
-	set_char_box(0, 18/12 interline#, .5 interline#, 2 interline#);
-	flat_symbol(w/2, d, h);
-	addto currentpicture also currentpicture
-		shifted (w/2 - stafflinethickness/2,0);
+	save left_wid, overlap, right_wid;
+	left_wid = .7;
+	right_wid = .8;
+	overlap = .05;
+	set_char_box(1.2 stafflinethickness#, (left_wid + right_wid -overlap) *interline#, .5 interline#, 2 interline#);
+	draw_meta_flat(0, left_wid*  interline, 1/3 interline);
+	draw_meta_flat((left_wid - overlap) *interline,  
+		right_wid *interline, 1/3 interline);
 	fet_endchar;
-	
 
 fet_beginchar("Double sharp", "2", "sharpsharp")
 	set_char_box(0, interline#, .5 interline#, .5 interline#);
diff --git a/mf/foo.mf b/mf/foo.mf
new file mode 100644
index 0000000000..6bd9b647f7
--- /dev/null
+++ b/mf/foo.mf
@@ -0,0 +1,22 @@
+
+def simple_serif(expr p,q, a)= 
+	p{dir(angle(q-p) -a)} .. q{ - dir(angle(p -q) + a)}
+enddef;
+%
+% Accidentals from various sources, notably
+%
+%   Baerenreiter edition of Schuberts `Auf dem Strom' (sharp, natural, flat)
+%   F Hofmeister edition of Muellers `Etueden fuer Horn'  (double sharp)
+%
+
+
+%tracingall;
+%proofing := 2;
+%\tracingequations:= tracingonline := 1;
+
+fet_begingroup("accidentals");
+
+
+
+fet_endgroup("accidentals");
+
diff --git a/tex/font-en-tja16.tex b/tex/font-en-tja16.tex
index e6809e2253..b941882ea8 100644
--- a/tex/font-en-tja16.tex
+++ b/tex/font-en-tja16.tex
@@ -1,5 +1,5 @@
 % generated automatically by mf-to-table.py version 0.4
-% on Fri Oct 10 21:22:38 1997
+% on Tue Oct 14 23:56:57 1997
 % Do not edit
 % input from out/font-en-tja16.log
 % name
diff --git a/tex/font-en-tja20.tex b/tex/font-en-tja20.tex
index 1791d0ebad..e105c51ff3 100644
--- a/tex/font-en-tja20.tex
+++ b/tex/font-en-tja20.tex
@@ -1,5 +1,5 @@
 % generated automatically by mf-to-table.py version 0.4
-% on Fri Oct 10 21:22:44 1997
+% on Tue Oct 14 23:57:04 1997
 % Do not edit
 % input from out/font-en-tja20.log
 % name
diff --git a/tex/lilyponddefs.tex b/tex/lilyponddefs.tex
index add2284b62..4e3b74bc83 100644
--- a/tex/lilyponddefs.tex
+++ b/tex/lilyponddefs.tex
@@ -106,7 +106,7 @@
         % We know better
         \staffrulethickness=0.1\interlinedist
         \stemthickness=\staffrulethickness
-        \ledgerlinethickness=1.5\staffrulethickness
+        \ledgerlinethickness=2\staffrulethickness
 }
 
 
@@ -196,9 +196,9 @@
 \def\hslurcharu#1{{\hslurufont\char#1}}
 \def\hslurchard#1{{\hslurdfont\char#1}}
 % stacked numbers
-\def\generalmeter#1#2{\botalign{\vbox to0.5\balkheight{\vss \meterfont#1}%
-        \nointerlineskip
-        \vbox to 0.5\balkheight{\vss\meterfont #2}}}
+\def\generalmeter#1#2{\vbox to 0pt{\vss\hbox{\meterfont
+        #1}\nointerlineskip
+        \hbox{\meterfont #2}\vss}}
 
 % stacked horizontal lines 
 \def\lines#1#2#3{%
-- 
2.39.5