lilypond-user
[Top][All Lists]
Advanced

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

Re: Access the first/last line of a markup


From: Urs Liska
Subject: Re: Access the first/last line of a markup
Date: Tue, 12 Mar 2019 15:10:11 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.5.1

Hi Aaron,

thank you for this example.

Am 11.03.19 um 17:20 schrieb Aaron Hill:
On 2019-03-11 2:49 am, Urs Liska wrote:
Hi,
...

A *hack* using transparent glyphs to force alignment:

%%%%
\version "2.19.82"

#(define-markup-command (ascender-descender-placeholder layout props) ()
  (let* ((sten (interpret-markup layout props #{
            \markup \transparent \overlay { d p } #} ))
         (yex (ly:stencil-extent sten Y)))
    (ly:make-stencil (ly:stencil-expr sten) empty-interval yex)))

#(define-markup-command (apply-hack layout props arg) (markup?)
  (interpret-markup layout props #{ \markup \concat {
    \ascender-descender-placeholder $arg } #} ))

bad = -\tweak color #(rgb-color 0.9 0 0) \etc
good = -\tweak color #(rgb-color 0 0.8 0) \etc

{ \time 3/4
  f'4\bad^"d" _"d" f'4\bad^"x" \bad_"x" f'4^"p" \bad_"p"
  f'4\good^\markup \apply-hack "d" _\markup \apply-hack "d"
  f'4\good^\markup \apply-hack "x" \good_\markup \apply-hack "x"
  f'4^\markup \apply-hack "p" \good_\markup \apply-hack "p"
  f'2.^\markup \override #'(line-width . 35) \wordwrap \apply-hack
    { raucous racoon commune consume cocoa-cream macaroons }
  _\markup \override #'(line-width . 35) \wordwrap \apply-hack
    { museum owner unaware wax moose wears mauve mascara }
}
%%%%

This presumes that "d" and "p" are suitable exemplars of ascenders and descenders in the font being used.

If you want to visualize what is happening, replace "\transparent" in the markup command definition with something like "\with-color #blue".


Actually I don't find this that hacky, and it seems to do exactly what I want. I just have to integrate it into a different context, which didn't work out at the first attempt ...

Best
Urs




reply via email to

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