|
From: | Paul Morris |
Subject: | Non-standard ledger lines and articulations collisions |
Date: | Wed, 10 Jan 2018 09:56:41 -0500 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.0 |
Hi all, I'm working on a work-around for a collision between ledger
lines and articulations, for Clairnote an alternative notation
system: http://clairnote.org/sn/ LilyPond does not currently take
non-standard 'extra' ledger lines into account when positioning
articulations. Here's a minimal example with a proof of concept for
a possible work-around: %%%%%%%%%% \version "2.19.63" m = { c''' c'''\fermata c'''\trill c'''-^ c'''-. c'''\segno } % collisions ahead! { \override Staff.StaffSymbol.ledger-extra = 2 \m } % wrap the usual Script.Y-offset procedure in another % one to make an adjustment to what it returns, to % avoid the collisions { \override Staff.StaffSymbol.ledger-extra = 2 \override Staff.Script.Y-offset = #(lambda (grob) (+ 1 (ly:side-position-interface::y-aligned-side grob))) \m } %%%%%%%%%% Here's my specific question. The docs say this for the Y-offset property of the Script object:
But in the source code, in 'scm/define-grobs.scm', for the Script grob I see no mention of unpure-pure-container: (Y-offset . ,side-position-interface::y-aligned-side) I see other grob properties in that file that do have the unpure-pure-container pattern, like Rest.Y-extent: (Y-extent . ,(ly:make-unpure-pure-container ly:rest::height ly:rest::pure-height)) So am I missing something or are the docs off for Script.Y-offset? Is a call to "(ly:side-position-interface::y-aligned-side grob)" actually the default call to use? (On the other hand, maybe it would work to change the Y-parent of Script grobs to be the ledger lines grob in cases where there are ledger lines that are further from the staff than the furthest note head?) Thanks, -Paul |
[Prev in Thread] | Current Thread | [Next in Thread] |