[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: avoid alignment of hairpin and dynamic text
From: |
Werner LEMBERG |
Subject: |
Re: avoid alignment of hairpin and dynamic text |
Date: |
Sun, 31 Jan 2021 11:09:35 +0100 (CET) |
>> Note that `spanner-broken` is an internal property, not to be
>> modified by the user. A search in the code yields the command
>> `\breakDynamicSpan` as user syntax – introduced more than 10 years
>> ago in version 2.13.23... I will document that soon.
>
> Excellent!
>
>> Unfortunately, it doesn't cover the case where a dynamic mark is
>> immediately followed by a hairpin:
>>
>> {
>> <>^\markup { \typewriter "e''2\\f\\> f2\\p" }
>> e''2\f\> f2\p | \break
>>
>> <>^\markup { \typewriter "e''2\\f\\breakDynamicSpan\\> f2\\p"
>> (doesn't work) }
>> e''2\f\breakDynamicSpan\> f2\p | \break
>>
>> <>^\markup { \typewriter "e''2\\f\\> f2\\breakDynamicSpan\\p"
>> (works) }
>> e''2\f\> f2\breakDynamicSpan\p | \break
>> }
>>
>> Can this be fixed easily? This is, making the hairpin listen to a
>> `BreakDynamicSpanEvent` at the creation time of a
>> `DynamicLineSpanner`? It's probably a special case, since the
>> dynamic mark *should* influence the horizontal position of the
>> hairpin's starting point.
>
> At least I have not found a way to fix it easily :-(
To answer my own question: No, it can't be fixed as outlined above.
Reason is that the order of events at a given moment is not specified.
This means that it is not possible to make a reliable distinction
between
\f \< ... \breakDynamicSpan \p \< ... \f
and
\f \< ... \p \breakDynamicSpan \< ... \f
However, I could imagine that a property `no-dynamic-span` gets added
to the `DynamicText` grob. The `Dynamic_align_engraver` checks this
while creating a `DynamicLineSpanner` grob; if set, the `DynamicText`
grob is not added as a child to `DynamicLineSpanner`.
Werner