Am Sa., 23. Juli 2022 um 16:06 Uhr schrieb Jean Abou Samra <j...@abou-samra.fr>: > > Hi Harm, > > > Le 23/07/2022 à 10:59, Thomas Morley a écrit : > > I'm attempting to create a s-curve stencil for TextSpanner. > > While so far all works as wished and it is possibel to use \shape, > > \vshape doesn't print the control-points. > > > > What am I missing? > > > \shape works because it's an override/tweak to the control-points > property, and your code reads this property. > > \vshape is implemented with separate grobs, ControlPoint and > ControlPolygon. This is so that you can override their basic > properties (color, layer, thickness, ...) independently from the > bezier grob. They are created by the Show_control_points_engraver, > which acknowledges bezier curve grobs and reads their > show-control-points-property. Your custom TextSpanner isn't > recognized because it doesn't have the bezier-curve-interface, > and this is what Show_control_points_engraver acknowledges.
Thanks, for your detailed explanation. To get around it one could do: #(define (add-to-interfaces iface name grob-descriptions-alist) (map (lambda (x) (if (eq? (car x) name) (let* (;; Use `list-copy' like `completize-grob-entry' in ;; scm/define-grobs.scm (grob-entry (map list-copy (cdr x))) ;; Though why here again? (meta-entry (map list-copy (assoc-get 'meta grob-entry))) ;; and not here? (ifaces-entry (assoc-get 'interfaces meta-entry))) (set! ifaces-entry (cons iface ifaces-entry)) (set! meta-entry (assoc-set! meta-entry 'interfaces ifaces-entry)) (set! grob-entry (assoc-set! grob-entry 'meta meta-entry)) (cons name grob-entry)) x)) grob-descriptions-alist)) \layout { \context { \Global \grobdescriptions #(add-to-interfaces 'bezier-curve-interface 'TextSpanner all-grob-descriptions) } } > Do you have a specific reason to use a TextSpanner? How > about using a Slur? Well, I need to directly connect two notes/rests, probably with a lot of other stuff in between. For this connection several styles are possible (1) A straight line (maybe dashed or dotted) Thus TextSpanner was my first thought. Alas, in most cases the line will not be horizontal so I need some stencil override anyway. Pretty simple, though, can be made to work automatically. (2) A curve, probably a s-curve. Thus current thread topic (3) A multiple kneed line: ________ |_______| | v (the graphic will likely not survive mail delivery unchanged, though maybe you can imagine it) To summarize, all three possibilities will need other stencils. If control-points are available (Slur) it is probably not hard to get to (1). For (2), a Slur may be good out of the box, otherwise vshape will always work. For kneed lines (3), make connected-path-stencil may work. All three possibilities can be made to work with TextSpanner and Slur. I think I have to experiment, what works out better. Thanks, Harm