I just checked that this unwanted behavior happens in the default make-stencil-boxer function too.
Is there a fix for this? Thanks %%%%%%%%%%%%%%%% { \override DynamicText.stencil = #(make-stencil-boxer 0.4 0 ly:text-interface::print) c'_\mf } %%%%%%%%%%%%%%%% On Sun, Feb 23, 2020 at 1:19 AM Paolo Prete <paolopr...@gmail.com> wrote: > (This is for Aaron (and anyone who shows interest...) > > Hi Aaron, > > I need a little fix on the wonderful function you implemented. > As you can see, in case of dynamic, the box has a little unwanted overlay. > How we could avoid this? > > Thanks, > Best > P > > %%%% > \version "2.19.83" > > #(define (box-stencil stencil thickness padding color expand?) > "Add a box around @var{stencil}, producing a new stencil." > (define (css-style-padding padding) > ;; padding => (top right bottom left) > (cond > ((or (null? padding) (eqv? #f padding)) '(0 0 0 0)) > ((number? padding) (make-list 4 padding)) > ((number-pair? padding) > (list (car padding) (cdr padding) > (car padding) (cdr padding))) > ((and (number-list? padding) (<= (length padding) 4)) > (case (length padding) > ((1) (make-list 4 (first padding))) > ((2) (list (first padding) (second padding) > (first padding) (second padding))) > ((3) (list (first padding) (second padding) > (third padding) (second padding))) > (else padding))) > (else > (begin (ly:warning "Ignoring invalid padding: ~a" padding) > '(0 0 0 0))))) > (let* ((padding (css-style-padding padding)) > (padding-top (first padding)) > (padding-right (second padding)) > (padding-bottom (third padding)) > (padding-left (fourth padding)) > > (x-ext-orig (ly:stencil-extent stencil X)) > (y-ext-orig (ly:stencil-extent stencil Y)) > (x-ext-inner > (cons (- (interval-start x-ext-orig) padding-left) > (+ (interval-end x-ext-orig) padding-right))) > (y-ext-inner > (cons (- (interval-start y-ext-orig) padding-bottom) > (+ (interval-end y-ext-orig) padding-top))) > (x-ext-outer (interval-widen x-ext-inner thickness)) > (y-ext-outer (interval-widen y-ext-inner thickness)) > (x-ext-new (if expand? x-ext-outer x-ext-orig)) > (y-ext-new (if expand? y-ext-outer y-ext-orig)) > > (x-rule (make-filled-box-stencil (cons 0 thickness) y-ext-inner)) (y-rule > (make-filled-box-stencil x-ext-outer (cons 0 thickness))) > (box (stencil-with-color > (ly:stencil-add > (ly:stencil-translate-axis y-rule (interval-end y-ext-inner) Y) > (ly:stencil-translate-axis x-rule (interval-end x-ext-inner) X) > (ly:stencil-translate-axis y-rule (interval-start y-ext-outer) Y) > (ly:stencil-translate-axis x-rule (interval-start x-ext-outer) X)) > color))) > (ly:make-stencil > (ly:stencil-expr (ly:stencil-add stencil box)) > x-ext-new y-ext-new))) > > #(define* (make-stencil-boxer thickness padding callback > #:optional (color red) (expand? #t)) > "Return function that adds a box around the grob passed as argument." > (lambda (grob) > (box-stencil (callback grob) thickness padding color expand?))) > > { > \override DynamicText.stencil = > #(make-stencil-boxer 0.4 0 ly:text-interface::print) > c'_\mf > } > %%%% >