Am 12.03.19 um 15:10 schrieb Urs Liska:
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 ...
Well, I *thought* I'd managed to integrate it in my project
infrastructure, but as often the devil is in the details.
The solution works only if \apply-hack is basically the last markup command:
% This works
\markup \column \apply-hack { a column }
% but not this
\markup \apply-hack \column { a column }
In the first example the placeholder is overlaid over *every* column (or
word in a \wordwrap context), but in the second example it is only
attached to the *first* element.
The problem is that I have a function that takes markup? arguments -
which of course may include all sorts of markup constructs. I have no
idea how I could solve this. I'm afraid I would have to somehow parse
the markup? argument recursively and use \apply-hack on *every*
sub-element of the markup.
Well, I'll try further to get to grips with how markups are handled ...
Urs
Best
Urs
_______________________________________________
lilypond-user mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-user
_______________________________________________
lilypond-user mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-user