lilypond-user
[Top][All Lists]
Advanced

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

Re: Text spanner padding


From: Trevor Bača
Subject: Re: Text spanner padding
Date: Fri, 1 Mar 2019 16:34:27 -0600



On Thu, Feb 28, 2019 at 4:10 PM David Kastrup <address@hidden> wrote:
Trevor Bača <address@hidden> writes:

> On Fri, Feb 22, 2019 at 2:58 AM Andrew Bernard <address@hidden>
> wrote:
>
>> Solved. It's right-broken-padding set to false that does the trick.
>>
>>   \override TextSpanner.bound-details.right-broken.padding = ##f
>>   \override TextSpanner.bound-details.right.padding = #11
>>
>
>
> As a note for posterity (whenever the time comes to finally equip text
> spanners with their remaining missing features), it would be fantastic to
> allow text spanners to start (and stop) nonmusical items, like bar lines.
>
> Then magic numbers (like 11, in the example here) can be replaced by
> something semantic that says "stop text span on bar line", which seems to
> be what Andrew is actually engraving in this excerpt.

So?  There is the to-barline property.

Hi David,

This is extremely useful. Thank you so much for sending over the example; I had no idea to-barline was implemented on TextSpanner.

A cleaned up the example for future archive-searchers:

%%% TEXT SPANNER TO BARLINE (MID-SYSTEM) %%%

\version "2.19.82"

left-bracket-path = #'(
    (moveto 0 -1)
    (lineto 0 0)
    (lineto 2 0)
    )

right-bracket-path = #'(
    (lineto 2 0)
    (lineto 2 -1)
    )

repeat-spanner-start-markup = \markup {
    \path #0.25 #left-bracket-path
    \general-align #Y #CENTER
    \sans \upright " x3"
    }

repeat-spanner-stop-markup = \markup {
    \general-align #X #RIGHT
    \line {
        \general-align #Y #CENTER
        \sans \upright " x3"
        \path #0.25 #right-bracket-path
        }
    }

\new Staff
{

    c'1
    - \tweak bound-details.left.text \repeat-spanner-start-markup
    - \tweak bound-details.left-broken.text ##f
    - \tweak bound-details.right.padding 0
    - \tweak bound-details.right.text \repeat-spanner-stop-markup
    - \tweak bound-details.right-broken.text ##f
    - \tweak dash-period 1
    - \tweak staff-padding 4
    - \tweak to-barline ##t
    \startTextSpan

    c'1
    \break

    c'1

    c'1
    \stopTextSpan

}

\paper {
    indent = 0
    system-system-spacing = #'((minimum-distance . 20))
}

%%% END %%%

text-spanner-to-barline.png


IMPORTANT NOTE: the likely-to-be-overlooked key here is "\general-align #X #RIGHT" included in the definition of the markup used *at the right end* of the spanner. (In this example, repeat-spanner-stop-markup.)

Equally astonishingly, the example can be made to work at line breaks:

%%% TEXT SPANNER TO BARLINE (END-OF-SYSTEM) %%%

\version "2.19.82"

left-bracket-path = #'(
    (moveto 0 -1)
    (lineto 0 0)
    (lineto 2 0)
    )

right-bracket-path = #'(
    (lineto 2 0)
    (lineto 2 -1)
    )

repeat-spanner-start-markup = \markup {
    \path #0.25 #left-bracket-path
    \general-align #Y #CENTER
    \sans \upright " x3"
    }

repeat-spanner-stop-markup = \markup {
    \general-align #X #RIGHT
    \line {
        \general-align #Y #CENTER
        \sans \upright " x3"
        \path #0.25 #right-bracket-path
        }
    }

\new Staff
{

    c'1
    - \tweak bound-details.left.text \repeat-spanner-start-markup
    - \tweak bound-details.left-broken.text ##f
    - \tweak bound-details.right.padding 0
    - \tweak bound-details.right.text \repeat-spanner-stop-markup
    %%%- \tweak bound-details.right-broken.text ##f
    - \tweak dash-period 1
    - \tweak staff-padding 4
    - \tweak to-barline ##t
    \startTextSpan

    c'1
    \break

    c'1
    \stopTextSpan

    c'1

}

\paper {
    indent = 0
    system-system-spacing = #'((minimum-distance . 20))
}

%%% END %%%
 
text-spanner-to-barline-at-line-break.png

These examples are hugely important if you are engraving extensively with text spanners.

I had assumed that these were gaps in Lily's functionality; good to see I was wrong.


Trevor.

--

reply via email to

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