Hi Gabriel,

Baselines vs. descenders has always been a bit of a bane of my Lilypond 
existence…

> The problem, I think, is that \general-align uses the wrong baseline if the 
> markup block to which it applies contains a descender (in this case, the 
> lowercase letter “y”).

How about using a [transparent] strut?

%%%  SNIPPET BEGINS
\version "2.24.4"

struttj = \markup \transparent "Tj"

musicAdvent = \relative c' {
  \time 7/4 f1 f4 d2 | \bar "||"
  \time 8/4 f1 f4 d4 e2 | \bar "||"
}

collectAdvent = \lyricmode {
  \markup
    % The following line of code works,
    % because “Lord announced unto” contains no descenders …
    \general-align #Y #-0.835
    {
      \concat { "℣. "
        \column {
            \line { The Angel of the }
            \combine \struttj \line { Lord announced unto }
        }
      }
  }
  Ma -- ry.
 
  \markup
    % The following line of code *does not work,*
    % because the word “by” has a descender …
    \general-align #Y #-0.835
    {
      \concat { "℟. "
        \column {
            \line \bold { And she }
            \line \bold { conceived by the }
        }
      }
  }
  Ho -- ly Ghost.
}


\score {
  <<
    \new Voice = "firstversicle" \musicAdvent
    \new Lyrics \lyricsto "firstversicle" \collectAdvent
  >>
}

%%%  SNIPPET ENDS

I believe the #-0.835 can remain constant regardless of the lyric that follows, 
but you’ll have to do more testing to confirm — for example, changing Mary 
[which has a descender] to Marvin [which does not] seems to keep 
proper/expected alignment.

Hope that helps!
Kieren.

__________________________________________________

My work day may look different than your work day. Please do not feel obligated 
to read or respond to this email outside of your normal working hours.


Reply via email to