bug-lilypond
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Issue 1472 in lilypond: Collision between MMR and key signature


From: lilypond
Subject: Re: Issue 1472 in lilypond: Collision between MMR and key signature
Date: Thu, 20 Jan 2011 11:55:13 +0000


Comment #9 on issue 1472 by address@hidden: Collision between MMR and key signature
http://code.google.com/p/lilypond/issues/detail?id=1472

From Keith O'Hara:

The patches look like they do the job, and give clean regression tests,
but the developers are hesitant.  I am not a programmer, and I cannot
read minds, but I can tell you what makes *me* hesitant.

Look at issue 1120. A lyric syllable covering more than one note spread
those note inappropriately. The issue was fixed, but try this:
%}
\version "2.13.46"
<< \context Voice = "v" { d'4 c' d'4 fis'4 g'1 }
\new Lyrics \with { % Surely somebody will adjust the spacing this way.
 \override VerticalAxisGroup % No padding spec, so padding = 0
 #'nonstaff-relatedstaff-spacing = #'((basic-distance . 7))
} \lyricsto "v" {
 \lyricmode { Oooooooooooooooooooooooo _ _ _  A }
} >>

% The debug output, yellow and blue lines, helps to see what is going on.
\layout {
 \context { \Score
 \override PaperColumn #'stencil = #ly:separation-item::print
%  \override Accidental #'extra-spacing-height = #'(-0.2 . 0.2)
%  \override LyricText #'extra-spacing-height = #'(+0.4 . -0.4)
}}
#(ly:set-option 'debug-skylines)
%{
If the page is vertically tight, the Oooo lyric might be placed
immeidately against the notes, because the user requested 0 padding.
When the horizontal spacing of notes is determined, Lilypond avoids
collisions and also ensures an 'extra-spacing-height' of clearance
around objects when considering whether to slide notes closer.
Formerly, the default 'extra-spacing-height' was 0.1, so the c' would
refuse to slide over the lyrics, there being 0.1 staffspace of
interference, and we had issue 1120.

The commit to fix 1120 changed the default from 0.1 to 0.0, removing the
interference and letting the notes correctly slide over the lyrics --
most of the time. If somebody sets zero padding between lyrics and notes
like I did above, the c does not slide.  Make the c' a cis' and it
slides; I don't know why.

I worry that reducing the default extra-spacing-height had side effects.
The old 0.1 seems to have avoided some issues, issue 1472 and 1474 that
we know so far, and it made the collision I reported yesterday much
more rare in 2.12.3.

Reducing the default to 0.0 also puts an awkward constraint on parameter
tweakers like me.  If a cis' is the lowest note and I give Accidentals
and extra-spacing-height, the notes don't slide any more. (Oh no! trying
to fix 1474 I just broke the fix to 1120.)  Any objects that might need
to slide over lyrics must have zero extra-spacing-height, meaning they
will slide /very/ close to each other.  I get the feeling we are "painting
ourselves into a corner".

I tried the usual method for making an object be ignored during
note-spacing (copying from \textLengthOff) LyricText'extra-spacing-width
= '(+inf.0 .-inf.0), but that lets barlines overlap lyrics and breaks
test lyrics-bar.ly.


I recommend replacing the commit to fix 1120 with an initialization
(extra-spacing-height . (+0.4 . -0.4)) for LyricText,
and probably LyricHyphen&LyricExtenter, because that fixes 1120 more
solidly and removes the cause for issues 1474 and 1472, and it seems
more conservative than three individual patches.

I got a clean make check (unless I got mixed up with my baseline) and my
scores came out nice.  Does this approach have problems I don't see?
What better long-term solution is there?

****
Mike pushed this patch to Rietveld at http://codereview.appspot.com/4056043

Attachments:
        Ghost_of_1120.png  7.2 KB




reply via email to

[Prev in Thread] Current Thread [Next in Thread]