Hi!
Atached is a patch that should solve most of the existing problems
with ledger lines on porrectus grobs, but also on custodes and note
heads. (Actually, I already sent a previous version of this patch a while
ago, but is was obviously lost due to network problems). In particular,
it includes the following changes:
* ledger lines no more composed from metafont symbols, but drawn
directly;
* new paper variable ledgerlinethickness introduced that controls the
thickness of ledger lines; default is 2.0 times default
stafflinethickness;
* bugfix: no minimum length of ledger lines (actually, the minimum is
bound to blotdiameter);
* no minimum thickness of ledger lines (actually, the minimum is bound
to blotdiameter);
* elimiated duplicate code in note-head.cc / custos.cc / porrectus.cc;
* bugfix: avoid empty ledger lines molecule in porrectus and custos
grobs (saves a little bit of memory);
* ledger line code now much shorter, simpler and cleaner.
I have still left the metafont code for ledger lines in
feta-bolletjes.mf, but if you think my patch is ok, it probably should
be removed. Since the definition of draw_box in
music-drawing-routines.ps seems to encounter blotdiameter, I do not
see any reason to compose ledger lines from metafont symbols any more,
right?
Greetings,
Juergen
diff -Naur lilypond-1.5.28/input/test/ancient-font.ly
lilypond-1.5.28.NEW/input/test/ancient-font.ly
--- lilypond-1.5.28/input/test/ancient-font.ly Sat Oct 6 12:09:06 2001
+++ lilypond-1.5.28.NEW/input/test/ancient-font.ly Mon Dec 31 20:08:27 2001
@@ -216,6 +216,7 @@
linewidth = 17.25\cm
textheight = 26.0\cm
stafflinethickness = \staffspace / 5.0
+ ledgerlinethickness = \stafflinethickness
indent = 0.0
\translator {
\StaffContext
diff -Naur lilypond-1.5.28/lily/custos.cc lilypond-1.5.28.NEW/lily/custos.cc
--- lilypond-1.5.28/lily/custos.cc Sat Mar 17 00:49:30 2001
+++ lilypond-1.5.28.NEW/lily/custos.cc Mon Dec 31 21:30:19 2001
@@ -23,6 +23,7 @@
#include <stdio.h>
+#include <math.h> // rint
#include "staff-symbol-referencer.hh"
#include "custos.hh"
#include "molecule.hh"
@@ -31,112 +32,8 @@
#include "item.hh"
#include "font-interface.hh"
-/*
- This function is a patched and hopefully much more understandable
- rewrite of Note_head::ledger_line (). It still has some
- bugs/limitations:
- *
- (1) The term thick/2 probably should be thick*2 (probably a bug,
- see the code below).
- *
- (2) The minimal width of the resulting ledger line equals the width
- of the noteheads-ledgerending symbol (a limitation):
- *
- (---- left ledger ending
- ----) right ledger ending
- (---) resulting ledger line (just ok)
- *
- If x_extent ("xwid" in Note_head) is less than the width of the
- ledger ending, the width of the total ledger line is even *greater*
- than the width of a ledger ending (I would call this a bug). In
- the below code, the condition "if (x_extent.length () >
- slice_x_extent.length ())" avoids outputting the left ending in such
- cases (rather a silly workaround, but better than nothing).
- *
- (---- left ledger ending
- ----) right ledger ending
- (-) desired ledger line
- ------- resulting ledger line (too long)
- ----) resulting ledger line with additional "if" (still too long)
- *
- The algorithm works properly only for a desired ledger line width
- greater than the width of the ledger ending:
- *
- (---- left ledger ending
- ----) right ledger ending
- (------) desired ledger line
- (------) resulting ledger line (ok)
- *
- * (3) The thickness of the ledger line is fixed (limitation).
- */
-Molecule
-Custos::create_ledger_line (Interval x_extent, Grob *me)
-{
- Molecule line;
- Molecule slice = Font_interface::get_default_font (me)->find_by_name
("noteheads-ledgerending");
- Interval slice_x_extent = slice.extent (X_AXIS);
- Interval slice_y_extent = slice.extent (Y_AXIS);
-
- // Create left ending of ledger line.
- Molecule left_ending = slice;
- left_ending.translate_axis (x_extent[LEFT] - slice_x_extent[LEFT], X_AXIS);
- if (x_extent.length () > slice_x_extent.length ())
- line.add_molecule (left_ending);
-
- // Create right ending of ledger line.
- Molecule right_ending = slice;
- right_ending.translate_axis (x_extent[RIGHT] - slice_x_extent[RIGHT],
- X_AXIS);
- line.add_molecule (right_ending);
-
- // Fill out space between left and right ending of ledger line by
- // lining up a series of slices in a row between them.
- Molecule fill_out_slice = left_ending;
- Real thick = slice_y_extent.length ();
- Real delta_x = slice_x_extent.length () - thick;
- Real xpos = x_extent [LEFT] + 2*delta_x + thick/2; // TODO: check: thick*2?
- while (xpos <= x_extent[RIGHT])
- {
- fill_out_slice.translate_axis (delta_x, X_AXIS);
- line.add_molecule (fill_out_slice);
- xpos += delta_x;
- }
-
- return line;
-}
-
-void
-Custos::add_streepjes (Grob* me,
- int pos,
- int interspaces,
- Molecule* custos_p_)
-{
- // TODO: This is (almost) duplicated code (see
- // Note_head::brew_molecule). Junk me.
- Real inter_f = Staff_symbol_referencer::staff_space (me)/2;
- int streepjes_i = abs (pos) < interspaces
- ? 0
- : (abs (pos) - interspaces) /2;
- if (streepjes_i)
- {
- Direction dir = (Direction)sign (pos);
- Molecule ledger_line (create_ledger_line (custos_p_->extent (X_AXIS),
- me));
- ledger_line.set_empty (true);
- Real offs = (Staff_symbol_referencer::on_staffline (me))
- ? 0.0
- : -dir * inter_f;
- for (int i = 0; i < streepjes_i; i++)
- {
- Molecule streep (ledger_line);
- streep.translate_axis (-dir * inter_f * i * 2 + offs,
- Y_AXIS);
- custos_p_->add_molecule (streep);
- }
- }
-}
-
MAKE_SCHEME_CALLBACK (Custos,brew_molecule,1);
+
SCM
Custos::brew_molecule (SCM smob)
{
@@ -165,8 +62,19 @@
}
else
{
- add_streepjes (me, (int)pos, interspaces, &molecule);
- return molecule.smobbed_copy ();
+ // add ledger lines
+ int pos = (int)rint (Staff_symbol_referencer::position_f (me));
+ int interspaces = Staff_symbol_referencer::line_count (me)-1;
+ if (abs (pos) - interspaces > 1)
+ {
+ Molecule ledger_lines =
+ Note_head::brew_ledger_lines (me, pos, interspaces,
+ molecule.extent (X_AXIS),
+ true);
+ molecule.add_molecule (ledger_lines);
+ }
+
+ return molecule.smobbed_copy ();
}
}
else
diff -Naur lilypond-1.5.28/lily/include/custos.hh
lilypond-1.5.28.NEW/lily/include/custos.hh
--- lilypond-1.5.28/lily/include/custos.hh Sun Mar 11 19:10:33 2001
+++ lilypond-1.5.28.NEW/lily/include/custos.hh Mon Dec 31 20:13:17 2001
@@ -15,11 +15,6 @@
{
DECLARE_SCHEME_CALLBACK (brew_molecule, (SCM ));
static bool has_interface (Grob*);
-
-private:
- static void add_streepjes (Grob* me, int pos, int interspaces, Molecule*
custos_p_);
- static Molecule create_ledger_line (Interval x_extent, Grob *me) ;
-
};
#endif // CUSTOS_HH
diff -Naur lilypond-1.5.28/lily/include/note-head.hh
lilypond-1.5.28.NEW/lily/include/note-head.hh
--- lilypond-1.5.28/lily/include/note-head.hh Sat Dec 1 15:34:56 2001
+++ lilypond-1.5.28.NEW/lily/include/note-head.hh Mon Dec 31 21:24:28 2001
@@ -20,10 +20,10 @@
class Note_head
{
public:
- DECLARE_SCHEME_CALLBACK (brew_molecule, (SCM ));
static Interval head_extent (Grob*,Axis);
- static Molecule ledger_lines (Grob*, bool, int,Direction,Interval);
- static Molecule ledger_line (Interval, Grob*) ;
+ static Molecule brew_ledger_line (Interval, Grob *);
+ static Molecule brew_ledger_lines (Grob *, int, int, Interval, bool);
+ DECLARE_SCHEME_CALLBACK (brew_molecule, (SCM ));
DECLARE_SCHEME_CALLBACK (brew_ez_molecule, (SCM ));
static bool has_interface (Grob*);
static Real stem_attachment_coordinate (Grob *, Axis a);
diff -Naur lilypond-1.5.28/lily/include/porrectus.hh
lilypond-1.5.28.NEW/lily/include/porrectus.hh
--- lilypond-1.5.28/lily/include/porrectus.hh Sat Oct 6 12:09:06 2001
+++ lilypond-1.5.28.NEW/lily/include/porrectus.hh Mon Dec 31 20:17:06 2001
@@ -32,8 +32,6 @@
bool, Direction);
static Molecule brew_bezier_sandwich (Bezier, Bezier);
static Molecule brew_horizontal_slope (Real, Real, Real);
- static Molecule create_ledger_line (Interval, Grob *);
- static Molecule create_streepjes (Grob *, int, int, Interval);
};
#endif // PORRECTUS_HH
diff -Naur lilypond-1.5.28/lily/note-head.cc lilypond-1.5.28.NEW/lily/note-head.cc
--- lilypond-1.5.28/lily/note-head.cc Sat Dec 1 15:34:56 2001
+++ lilypond-1.5.28.NEW/lily/note-head.cc Mon Dec 31 21:37:52 2001
@@ -6,7 +6,6 @@
(c) 1997--2001 Han-Wen Nienhuys <[EMAIL PROTECTED]>
*/
#include <math.h>
-
#include "misc.hh"
#include "dots.hh"
#include "note-head.hh"
@@ -15,6 +14,8 @@
#include "molecule.hh"
#include "musical-request.hh"
#include "rhythmic-head.hh"
+#include "lookup.hh"
+#include "paper-def.hh"
/*
Note_head contains the code for printing note heads and the ledger lines.
@@ -28,81 +29,53 @@
build a ledger line for small pieces.
*/
Molecule
-Note_head::ledger_line (Interval xwid, Grob *me)
+Note_head::brew_ledger_line (Interval x_extent, Grob *me)
{
- Drul_array<Molecule> endings;
- endings[LEFT] = Font_interface::get_default_font (me)->find_by_name
("noteheads-ledgerending");
- Molecule *e = &endings[LEFT];
- endings[RIGHT] = *e;
-
- Real thick = e->extent (Y_AXIS).length ();
- Real len = e->extent (X_AXIS).length () - thick;
-
- Molecule total;
- Direction d = LEFT;
- do {
- endings[d].translate_axis (xwid[d] - endings[d].extent (X_AXIS)[d], X_AXIS);
- total.add_molecule (endings[d]);
- } while ((flip (&d)) != LEFT);
-
- Real xpos = xwid [LEFT] + len;
-
- while (xpos + len + thick /2 <= xwid[RIGHT])
- {
- e->translate_axis (len, X_AXIS);
- total.add_molecule (*e);
- xpos += len;
- }
+ Real ledgerlinethickness = me->paper_l ()->get_var ("ledgerlinethickness");
+ Interval y_extent =
+ Interval (-ledgerlinethickness * 0.5, +ledgerlinethickness * 0.5);
- return total;
+ Box ledger_line (x_extent, y_extent);
+ return Lookup::filledbox (ledger_line);
}
Molecule
-Note_head::ledger_lines (Grob*me,
- bool take_space,
- int count, Direction dir, Interval idw)
+Note_head::brew_ledger_lines (Grob *me,
+ int pos,
+ int interspaces,
+ Interval extent,
+ bool take_space)
{
Real inter_f = Staff_symbol_referencer::staff_space (me)/2;
+ int lines_i = abs (pos) < interspaces
+ ? 0
+ : (abs (pos) - interspaces) / 2;
+ Molecule molecule = Molecule();
- /*
- idw ?
-
- (who's that ? :-)
-
-
- --hwn
- */
- Molecule ledger (ledger_line (idw, me));
-
- if (!take_space)
- ledger.set_empty (true);
-
- Real offs = (Staff_symbol_referencer::on_staffline (me))
- ? 0.0
- : -dir * inter_f;
-
- Molecule legs;
- for (int i=0; i < count; i++)
+ if (lines_i)
{
- Molecule s (ledger);
- s.translate_axis (-dir * inter_f * i*2 + offs,
- Y_AXIS);
- legs.add_molecule (s);
+ Direction dir = (Direction)sign (pos);
+ Molecule proto_ledger_line (brew_ledger_line (extent, me));
+ if (!take_space)
+ proto_ledger_line.set_empty (true);
+ Real offs = (Staff_symbol_referencer::on_staffline (me, pos))
+ ? 0.0
+ : -dir * inter_f;
+ for (int i = 0; i < lines_i; i++)
+ {
+ Molecule ledger_line (proto_ledger_line);
+ ledger_line.translate_axis (-dir * inter_f * i * 2 + offs, Y_AXIS);
+ molecule.add_molecule (ledger_line);
+ }
}
- return legs;
+ return molecule;
}
Molecule
-internal_brew_molecule (Grob *me, bool ledger_take_space)
+internal_brew_molecule (Grob *me, bool ledger_take_space)
{
- int sz = Staff_symbol_referencer::line_count (me)-1;
- int p = (int) rint (Staff_symbol_referencer::position_f (me));
- int streepjes_i = abs (p) < sz
- ? 0
- : (abs (p) - sz) /2;
-
SCM style = me->get_grob_property ("style");
if (!gh_symbol_p (style))
{
@@ -121,14 +94,16 @@
String name = "noteheads-" + ly_scm2string (scm_primitive_eval (exp));
Molecule out = Font_interface::get_default_font (me)->find_by_name (name);
- if (streepjes_i)
+ int interspaces = Staff_symbol_referencer::line_count (me)-1;
+ int pos = (int)rint (Staff_symbol_referencer::position_f (me));
+ if (abs (pos) - interspaces > 1)
{
- Direction dir = (Direction)sign (p);
Interval hd = out.extent (X_AXIS);
Real hw = hd.length ()/4;
- out.add_molecule (Note_head::ledger_lines (me, ledger_take_space, streepjes_i,
dir,
- Interval (hd[LEFT] - hw,
- hd[RIGHT] + hw)));
+ out.add_molecule (Note_head::brew_ledger_lines (me, pos, interspaces,
+ Interval (hd[LEFT] - hw,
+ hd[RIGHT] + hw),
+ ledger_take_space));
}
return out;
}
@@ -143,7 +118,7 @@
}
/*
- Compute the width the head without ledgers.
+ Compute the width of the head without ledgers.
*/
Interval
Note_head::head_extent (Grob *me, Axis a)
@@ -154,7 +129,7 @@
bool
Note_head::has_interface (Grob*m)
{
- return m&& m->has_interface (ly_symbol2scm ("note-head-interface"));
+ return m && m->has_interface (ly_symbol2scm ("note-head-interface"));
}
@@ -178,23 +153,16 @@
SCM_UNDEFINED);
Box bx (Interval (0, 1.0), Interval (-0.5, 0.5));
Molecule m (bx, at);
- int p = (int) rint (Staff_symbol_referencer::position_f (me));
-
- int sz = Staff_symbol_referencer::line_count (me)-1;
- int streepjes_i = abs (p) < sz
- ? 0
- : (abs (p) - sz) /2;
-
- if (streepjes_i)
+ int pos = (int)rint (Staff_symbol_referencer::position_f (me));
+ int interspaces = Staff_symbol_referencer::line_count (me)-1;
+ if (abs (pos) - interspaces > 1)
{
- Direction dir = (Direction)sign (p);
Interval hd = m.extent (X_AXIS);
Real hw = hd.length ()/4;
- m.add_molecule (ledger_lines (me, false, streepjes_i, dir,
- Interval (hd[LEFT] - hw,
- hd[RIGHT] + hw)));
+ Interval extent = Interval (hd[LEFT] - hw, hd[RIGHT] + hw);
+ m.add_molecule (brew_ledger_lines (me, pos, interspaces, extent, false));
}
-
+
return m.smobbed_copy ();
}
@@ -214,6 +182,6 @@
return 0.0;
result = (a == X_AXIS) ? ly_car (result) : ly_cdr (result);
-
+
return gh_number_p (result) ? gh_scm2double (result) : 0.0;
}
diff -Naur lilypond-1.5.28/lily/porrectus-engraver.cc
lilypond-1.5.28.NEW/lily/porrectus-engraver.cc
--- lilypond-1.5.28/lily/porrectus-engraver.cc Sat Dec 1 15:34:56 2001
+++ lilypond-1.5.28.NEW/lily/porrectus-engraver.cc Mon Dec 31 21:04:09 2001
@@ -24,9 +24,6 @@
*
* TODO: Do not allow a series of adjacent porrectus requests, as in:
* e \~ d \~ c.
- *
- * TODO: Junk duplicate (or rather triple) implementation of
- * create_ledger_line in porrectus.cc, custos.cc and note-head.cc.
*/
#include "staff-symbol-referencer.hh"
diff -Naur lilypond-1.5.28/lily/porrectus.cc lilypond-1.5.28.NEW/lily/porrectus.cc
--- lilypond-1.5.28/lily/porrectus.cc Sat Dec 29 20:30:42 2001
+++ lilypond-1.5.28.NEW/lily/porrectus.cc Mon Dec 31 21:40:11 2001
@@ -11,6 +11,7 @@
#include "staff-symbol-referencer.hh"
#include "porrectus.hh"
#include "item.hh"
+#include "note-head.hh"
#include "molecule.hh"
#include "pitch.hh"
#include "lookup.hh"
@@ -82,76 +83,8 @@
}
}
-// Uugh. The following two functions are almost duplicated code from
-// custos.cc, which itself is similar to code in note-head.cc. Maybe
-// this should be moved to staff-symbol-referencer.cc?
-Molecule
-Porrectus::create_ledger_line (Interval x_extent, Grob *me)
-{
- Molecule line;
- Molecule slice = Font_interface::get_default_font (me)->find_by_name
("noteheads-ledgerending");
- Interval slice_x_extent = slice.extent (X_AXIS);
- Interval slice_y_extent = slice.extent (Y_AXIS);
-
- // Create left ending of ledger line.
- Molecule left_ending = slice;
- left_ending.translate_axis (x_extent[LEFT] - slice_x_extent[LEFT], X_AXIS);
- if (x_extent.length () > slice_x_extent.length ())
- line.add_molecule (left_ending);
-
- // Create right ending of ledger line.
- Molecule right_ending = slice;
- right_ending.translate_axis (x_extent[RIGHT] - slice_x_extent[RIGHT],
- X_AXIS);
- line.add_molecule (right_ending);
-
- // Fill out space between left and right ending of ledger line by
- // lining up a series of slices in a row between them.
- Molecule fill_out_slice = left_ending;
- Real thick = slice_y_extent.length ();
- Real delta_x = slice_x_extent.length () - thick;
- Real xpos = x_extent [LEFT] + 2*delta_x + thick/2; // TODO: check: thick*2?
- while (xpos <= x_extent[RIGHT])
- {
- fill_out_slice.translate_axis (delta_x, X_AXIS);
- line.add_molecule (fill_out_slice);
- xpos += delta_x;
- }
-
- return line;
-}
-
-Molecule
-Porrectus::create_streepjes (Grob *me,
- int pos,
- int interspaces,
- Interval extent)
-{
- Real inter_f = Staff_symbol_referencer::staff_space (me)/2;
- int streepjes_i = abs (pos) < interspaces
- ? 0
- : (abs (pos) - interspaces) /2;
- Molecule molecule = Molecule();
- if (streepjes_i)
- {
- Direction dir = (Direction)sign (pos);
- Molecule ledger_line (create_ledger_line (extent, me));
- ledger_line.set_empty (true);
- Real offs = (Staff_symbol_referencer::on_staffline (me, pos))
- ? 0.0
- : -dir * inter_f;
- for (int i = 0; i < streepjes_i; i++)
- {
- Molecule streep (ledger_line);
- streep.translate_axis (-dir * inter_f * i * 2 + offs,
- Y_AXIS);
- molecule.add_molecule (streep);
- }
- }
- return molecule;
-}
-
MAKE_SCHEME_CALLBACK (Porrectus,brew_molecule,1);
+
SCM
Porrectus::brew_molecule (SCM smob)
{
@@ -166,6 +99,7 @@
return SCM_EOL;
}
+ // determine porrectus style
SCM scm_style = me->get_grob_property ("style");
String style;
if ((gh_symbol_p (scm_style)) && (scm_style != SCM_EOL))
@@ -175,15 +109,14 @@
style = "mensural";
}
+ // determine fill style and stem properties
bool solid = to_boolean (me->get_grob_property ("solid"));
bool add_stem = to_boolean (me->get_grob_property ("add-stem"));
-
SCM stem_direction_scm = me->get_grob_property ("stem-direction");
Direction stem_direction =
gh_number_p (stem_direction_scm) ? to_dir (stem_direction_scm) : DOWN;
if (!stem_direction)
stem_direction = DOWN;
-
bool auto_properties = to_boolean (me->get_grob_property ("auto-properties"));
if (auto_properties)
// determine add_stem and stem_direction automatically from durations
@@ -225,12 +158,12 @@
}
}
+ // determine porrectus interval
Real left_position_f = Staff_symbol_referencer::position_f (left_head);
Real right_position_f = Staff_symbol_referencer::position_f (right_head);
Real interval = right_position_f - left_position_f;
- Molecule molecule;
-
+ // determine line thickness
SCM line_thickness_scm = me->get_grob_property ("line-thickness");
Real line_thickness;
if (gh_number_p (line_thickness_scm))
@@ -244,6 +177,7 @@
Real thickness =
line_thickness * me->paper_l ()->get_var ("stafflinethickness");
+ // determine porrectus width
SCM porrectus_width_scm = me->get_grob_property ("porrectus-width");
Real porrectus_width;
if (gh_number_p (porrectus_width_scm))
@@ -256,6 +190,8 @@
}
Real width = porrectus_width * Staff_symbol_referencer::staff_space (me);
+ // brew core molecule
+ Molecule molecule;
if (String::compare_i (style, "vaticana") == 0)
molecule = brew_vaticana_molecule (me, interval,
solid, width, thickness,
@@ -267,22 +203,32 @@
else
return SCM_EOL;
+ // translate core molecule
Real space = Staff_symbol_referencer::staff_space (me);
+ molecule.translate_axis (left_position_f * space/2, Y_AXIS);
+
+ // add ledger lines
Real head_extent = molecule.extent (X_AXIS).length ();
Interval extent (-0.2 * head_extent, 1.2 * head_extent);
int interspaces = Staff_symbol_referencer::line_count (me)-1;
-
- molecule.translate_axis (left_position_f * space/2, Y_AXIS);
-
- Molecule left_head_streepjes =
- create_streepjes (me, (int)rint (left_position_f), interspaces, extent);
- left_head_streepjes.translate_axis (left_position_f * space/2, Y_AXIS);
- molecule.add_molecule (left_head_streepjes);
-
- Molecule right_head_streepjes =
- create_streepjes (me, (int)rint (right_position_f), interspaces, extent);
- right_head_streepjes.translate_axis (right_position_f * space/2, Y_AXIS);
- molecule.add_molecule (right_head_streepjes);
+ int left_pos = (int)rint (left_position_f);
+ if (abs (left_pos) - interspaces > 1)
+ {
+ Molecule left_head_ledger_lines =
+ Note_head::brew_ledger_lines (me, left_pos, interspaces, extent, true);
+ left_head_ledger_lines.translate_axis (left_position_f * space/2,
+ Y_AXIS);
+ molecule.add_molecule (left_head_ledger_lines);
+ }
+ int right_pos = (int)rint (right_position_f);
+ if (abs (right_pos) - interspaces > 1)
+ {
+ Molecule right_head_ledger_lines =
+ Note_head::brew_ledger_lines (me, right_pos, interspaces, extent, true);
+ right_head_ledger_lines.translate_axis (right_position_f * space/2,
+ Y_AXIS);
+ molecule.add_molecule (right_head_ledger_lines);
+ }
return molecule.smobbed_copy();
}
@@ -509,7 +455,7 @@
Porrectus::brew_bezier_sandwich (Bezier top_curve, Bezier bottom_curve)
{
/*
- Need the weird order b.o. the way PS want its arguments
+ Need the weird order b.o. the way PS wants its arguments
*/
SCM list = SCM_EOL;
list = gh_cons (ly_offset2scm (bottom_curve.control_[3]), list);
diff -Naur lilypond-1.5.28/ly/params-init.ly lilypond-1.5.28.NEW/ly/params-init.ly
--- lilypond-1.5.28/ly/params-init.ly Wed Dec 5 18:54:37 2001
+++ lilypond-1.5.28.NEW/ly/params-init.ly Mon Dec 31 21:16:38 2001
@@ -20,6 +20,7 @@
staffspace = \staffheight / 4.0
stafflinethickness = \staffspace / 10.0
+ledgerlinethickness = \stafflinethickness * 2.0
outputscale = \staffheight / 4.0
blotdiameter = 0.4 / \outputscale