[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: bug in magnetic snapping lyrics engraver
From: |
Jean Abou Samra |
Subject: |
Re: bug in magnetic snapping lyrics engraver |
Date: |
Wed, 6 Apr 2022 20:46:49 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.7.0 |
Le 06/04/2022 à 20:17, Jean Abou Samra a écrit :
Did I miss something?
Whoops, big problem at line breaks ...
\version "2.23.7"
#(define (Left_hyphen_pointer_engraver context)
(let ((hyphen #f)
(text #f))
(make-engraver
(acknowledgers
((lyric-syllable-interface engraver grob source-engraver)
(set! text grob)))
(end-acknowledgers
((lyric-hyphen-interface engraver grob source-engraver)
(when (not (grob::has-interface grob 'lyric-space-interface))
(set! hyphen grob))))
((stop-translation-timestep engraver)
(when (and text hyphen)
(ly:grob-set-object! text 'left-hyphen hyphen))
(set! text #f)
(set! hyphen #f)))))
#(define (lyric-text::apply-magnetic-offset! grob)
(let ((hyphen (ly:grob-object grob 'left-hyphen #f)))
(when hyphen
(let ((left-text (ly:spanner-bound hyphen LEFT)))
(when (grob::has-interface left-text 'lyric-syllable-interface)
(let* ((common (ly:grob-common-refpoint grob left-text X))
(my-x-ext (ly:grob-extent grob common X))
(left-x-ext (begin
;; Trigger magnetism for left-text
(ly:grob-property left-text
'after-line-breaking)
(ly:grob-extent left-text common X)))
(delta (- (interval-start my-x-ext)
(interval-end left-x-ext)))
(details (ly:grob-property grob 'details))
(threshold (assoc-get 'squash-threshold details 0.2)))
(when (< delta threshold)
(ly:grob-translate-axis! grob
(- delta)
X))))))))
#(define (lyric-hyphen::displace-bounds-first grob)
;; Make very sure this callback isn't triggered too early.
(let ((left (ly:spanner-bound grob LEFT))
(right (ly:spanner-bound grob RIGHT)))
(ly:grob-property left 'after-line-breaking)
(ly:grob-property right 'after-line-breaking)
(ly:lyric-hyphen::print grob)))
\layout {
\context {
\Lyrics
\consists #Left_hyphen_pointer_engraver
\override LyricText.after-line-breaking =
#lyric-text::apply-magnetic-offset!
\override LyricHyphen.stencil = #lyric-hyphen::displace-bounds-first
\override LyricText.details.squash-threshold = 10
\override LyricHyphen.minimum-distance = 0
\override LyricHyphen.minimum-length = 0.2
\override LyricSpace.minimum-distance = 1
}
}
- bug in magnetic snapping lyrics engraver, Werner LEMBERG, 2022/04/06
- Re: bug in magnetic snapping lyrics engraver, Werner LEMBERG, 2022/04/06
- Re: bug in magnetic snapping lyrics engraver, Jean Abou Samra, 2022/04/06
- Re: bug in magnetic snapping lyrics engraver, Kieren MacMillan, 2022/04/06
- Re: bug in magnetic snapping lyrics engraver,
Jean Abou Samra <=
- Re: bug in magnetic snapping lyrics engraver, Werner LEMBERG, 2022/04/07
- Re: bug in magnetic snapping lyrics engraver, Jean Abou Samra, 2022/04/07
- Re: bug in magnetic snapping lyrics engraver, Werner LEMBERG, 2022/04/13
- Re: bug in magnetic snapping lyrics engraver, Werner LEMBERG, 2022/04/14
- Re: bug in magnetic snapping lyrics engraver, Jean Abou Samra, 2022/04/14
- Re: bug in magnetic snapping lyrics engraver, Werner LEMBERG, 2022/04/14
- Re: bug in magnetic snapping lyrics engraver, Jean Abou Samra, 2022/04/14
- Re: bug in magnetic snapping lyrics engraver, Werner LEMBERG, 2022/04/14
- Re: bug in magnetic snapping lyrics engraver, Werner LEMBERG, 2022/04/15
- Re: bug in magnetic snapping lyrics engraver, Kieren MacMillan, 2022/04/07