Comment #9 on issue 1472 by mts...@gmail.com: 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 _______________________________________________ bug-lilypond mailing list bug-lilypond@gnu.org http://lists.gnu.org/mailman/listinfo/bug-lilypond