Dear code wizards,
I still have more to solve on this issue, if possible.
I think I have discovered why most of the shifting is happening: The
skyline rather than the baseline of the lyric line text is being
referenced by LilyPond when calculating vertical placement.
What I am going for is a way to make chordsheets where there is a
single-line staff that has chords (and sometimes lyrics) above and below
the line. I want the chord/lyric lines to have a fixed vertical position
in relation to the staff line and other chord/lyric lines, such that the
_baseline_ of the chords and text in a lyric line are the same distance
from the staff line and any adjacent lyric baselines in all of the staff
systems of a manuscript (like lines of text in a text document).
My current method is to create notes on the single-line staff that
represent the harmonic rhythm of the piece (and in some situations
another Voice for the rhythm of song lyrics.) I have an include file of
custom chord symbols for all of my manuscripts. I can get the symbols
exactly like I want using the many markup formatting commands. I then
use a lyric line to attach these chord symbols to the harmonic rhythm
notes. I hide the notes and omit all of the staff objects like stems,
ties, tuplet brackets, etc. This has worked well except for the issue of
the shifting text baseline of the lyric lines.
In order to make lines of chords and lyrics that have their text
baseline visually in the same relationship to the staff line from one
staff system to the next, I have to make many tweaks with many tries and
re-compiles of the manuscript using - \override LyricText.extra-offset =
#'(0 . Y). If later I make changes to the manuscript, then often I have
to go back and tweak the positions again. I would like to just set the
VerticalAxisGroup lyric-to-staff and lyric-to-lyric padding once and
leave it.
I now realize that lyric lines are not being placed according to the
baseline of the text, but rather the bounding box/skyline of the text.
So, subscripting or superscripting in chord symbols, the height of
letters, and letters that dip below the text baseline (like 'j', 'y',
'g') all affect the skyline, which can cause the skyline to be different
from one staff system to another, and thus shift the baseline of the
lyric line's text in relation to the staff line and other lyric lines.
Am I correct on this?
My conclusions are:
1. The bounding box/skylines of staff items are effecting the vertical
spacing of lyric lines from one staff system to the next. So, all of
these staff objects need to be omitted rather than hidden, except for
notes. To hide the notes, I can use - \override NoteHead.stencil =
#point-stencil - which reduces the size of all the notes to an invisible
point, and eliminate any skyline changes that may be caused by different
sized noteheads.
2. The skylines of the lyric text is changing from one staff system to
the next, causing the baseline of the text to shift in its visual
relation to the staff line.
3. Possibly, other items or factors that I have not discovered are
causing shifting of the lyric line.
Is there a way to have the vertical position adjusted from the baseline
of the lyric line's text, and thus make it rigidly fixed to a vertical
position from the single-line staff or to the baseline of any adjacent
lyric lines?
If there are no current settings to do this, could Scheme code be
written to do this? Or could some functionality be added to the program
to do this?
Perhaps, stacked lyric lines could look more even in their spacing in
some situations, if a 'reference text baseline' setting were available
within the program for VerticalAxisGroup tweaks.
I hope I am making sense.
Thank your for any help or advice, and for this amazing program.
Peace,
David
_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user