Le jeudi 07 septembre 2023 à 17:31 -0400, brin solomon a écrit :
> I'm using a modified version of this LSR snippet
> https://lsr.di.unimi.it/LSR/Item?id=900 to re-engrave a historical score that
> uses a curly-style bass clef. The clef shape is a little wider than a standard
> bass clef, and this means that it sometimes collides with notes and rests when
> used in actual music. After looking at the internals manual, I want to try
> adjusting the horizontal-skylines property, but I can't find any documentation
> on what a "pair of skylines" should look like (as opposed to a boolean, pair
> of numbers, etc). Can anyone point me in the right direction so I can give
> this custom clef a little more space? Is there a different approach that would
> be better here?
A skyline pair is, well, a pair of skylines. (In current versions, anyway; there
used to be special "skyline pair" objects, but now they're plain normal Scheme
pairs of skylines.) And if you want to visualize what a skyline is, you can do
\layout {
\context {
\Score
\override Clef.show-horizontal-skylines = ##t
\override Clef.show-vertical-skylines = ##t
}
}
to see that they're basically object outlines in a given direction.
You can construct them with functions like
ly:make-skylines
ly:skylines-for-stencil
ly:skyline-pad
of which the documentation is at
https://lilypond.org/doc/v2.24/Documentation/internals/scheme-functions
With that being said, this will be inconvenient; I think it would
be much simpler to just add the padding to your shape itself.
(For example, construct it as \markup \with-dimensions #... #... \path ...)
Jean
Hi Jean,
Thanks for the quick response! I'm always happy to do something simpler, but I admit that I'm a bit at a loss as to how to convert the linked snippet to the construct you described. The snippet stores the \path for the clef in a variable ("my-clef") and then sets is at the stencil for the bass clef using a layout block like this:
\layout {
\context {
\Score
\override Clef.stencil =
#(lambda (grob)
(let* ((sz (ly:grob-property grob 'font-size 0))
(mlt (magstep sz))
(glyph (ly:grob-property grob 'glyph-name)))
(cond
((equal? glyph "clefs.F")
(ly:stencil-scale my-clef (* 1 mlt) (* 1 mlt)))
((equal? glyph "clefs.F_change")
(ly:stencil-scale my-clef (* .8 mlt) (* .8 mlt)))
(else (ly:clef::print grob)))))
}
}
Where in that block would I indicate that kind of extra padding?
Thanks,
brin