-;;;; define-grobs.scm --
+;;;; This file is part of LilyPond, the GNU music typesetter.
;;;;
-;;;; source file of the GNU LilyPond music typesetter
-;;;;
-;;;; (c) 1998--2009 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; Copyright (C) 1998--2010 Han-Wen Nienhuys <hanwen@xs4all.nl>
;;;; Jan Nieuwenhuizen <janneke@gnu.org>
+;;;;
+;;;; LilyPond is free software: you can redistribute it and/or modify
+;;;; it under the terms of the GNU General Public License as published by
+;;;; the Free Software Foundation, either version 3 of the License, or
+;;;; (at your option) any later version.
+;;;;
+;;;; LilyPond is distributed in the hope that it will be useful,
+;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;;; GNU General Public License for more details.
+;;;;
+;;;; You should have received a copy of the GNU General Public License
+;;;; along with LilyPond. If not, see <http://www.gnu.org/licenses/>.
;;;; distances are given in line-thickness (thicknesses) and
;;;; staff-space (distances)
;; TODO: junk the meta field in favor of something more compact?
-;;; todo:: reorder sensibly.
-
(define-public all-grob-descriptions
`(
(Accidental
. (
+ (alteration . ,accidental-interface::calc-alteration)
(avoid-slur . inside)
(glyph-name-alist . ,standard-alteration-glyph-name-alist)
- (alteration . ,accidental-interface::calc-alteration)
(stencil . ,ly:accidental-interface::print)
- (Y-extent . ,ly:accidental-interface::height)
(X-extent . ,ly:accidental-interface::width)
+ (Y-extent . ,ly:accidental-interface::height)
(meta . ((class . Item)
(interfaces . (accidental-interface
font-interface))))))
(AccidentalCautionary
. (
+ (alteration . ,accidental-interface::calc-alteration)
(avoid-slur . inside)
- (parenthesized . #t)
(glyph-name-alist . ,standard-alteration-glyph-name-alist)
- (alteration . ,accidental-interface::calc-alteration)
+ (parenthesized . #t)
(stencil . ,ly:accidental-interface::print)
(Y-extent . ,ly:accidental-interface::height)
(meta . ((class . Item)
(interfaces . (accidental-interface
font-interface))))))
+ (AccidentalPlacement
+ . (
+ (direction . ,LEFT)
+ (positioning-done . ,ly:accidental-placement::calc-positioning-done)
+
+ ;; this is quite small, but it is very ugly to have
+ ;; accs closer to the previous note than to the next one.
+ (right-padding . 0.15)
+
+ ;; for horizontally stacked scripts.
+ (script-priority . -100)
+
+ (X-extent . ,ly:axis-group-interface::width)
+ (meta . ((class . Item)
+ (interfaces . (accidental-placement-interface))))))
+
(AccidentalSuggestion
. (
+ (alteration . ,accidental-interface::calc-alteration)
+ (direction . ,UP)
+ (font-size . -2)
+ (glyph-name-alist . ,standard-alteration-glyph-name-alist)
+ (outside-staff-priority . 0)
+ (script-priority . 0)
+ (self-alignment-X . ,CENTER)
+ (side-axis . ,Y)
+ (staff-padding . 0.25)
(stencil . ,ly:accidental-interface::print)
- (X-extent . ,ly:accidental-interface::width)
- (Y-extent . ,ly:accidental-interface::height)
+ (X-extent . ,ly:accidental-interface::width)
(X-offset . ,(ly:make-simple-closure
`(,+
,(ly:make-simple-closure
(list ly:self-alignment-interface::centered-on-x-parent))
,(ly:make-simple-closure
(list ly:self-alignment-interface::x-aligned-on-self)))))
- (self-alignment-X . ,CENTER)
- (font-size . -2)
- (glyph-name-alist . ,standard-alteration-glyph-name-alist)
- (alteration . ,accidental-interface::calc-alteration)
+ (Y-extent . ,ly:accidental-interface::height)
(Y-offset . ,ly:side-position-interface::y-aligned-side)
- (direction . ,UP)
- (staff-padding . 0.25)
- (outside-staff-priority . 0)
- (script-priority . 0)
- (side-axis . ,Y)
(meta . ((class . Item)
- (interfaces . (side-position-interface
- script-interface
- accidental-interface
+ (interfaces . (accidental-interface
accidental-suggestion-interface
+ font-interface
+ script-interface
self-alignment-interface
- font-interface))))))
-
- (AccidentalPlacement
- . (
- (left-padding . 0.2)
+ side-position-interface))))))
- ;; for horizontally stacked scripts.
- (script-priority . -100)
- (direction . ,LEFT)
-
- (positioning-done . ,ly:accidental-placement::calc-positioning-done)
- (X-extent . ,ly:axis-group-interface::width)
-
- ;; this is quite small, but it is very ugly to have
- ;; accs closer to the previous note than to the next one.
- (right-padding . 0.15)
- (meta . ((class . Item)
- (interfaces . (accidental-placement-interface))))))
-
(Ambitus
. (
(axes . (,X ,Y))
- (X-extent . ,ly:axis-group-interface::width)
- (Y-extent . ,ly:axis-group-interface::height)
+ (break-align-symbol . ambitus)
+ (break-visibility . ,begin-of-line-visible)
+ (non-musical . #t)
(space-alist . (
(clef . (extra-space . 0.5))
(key-signature . (extra-space . 0.0))
(staff-bar . (extra-space . 0.0))
(time-signature . (extra-space . 0.0))
(first-note . (fixed-space . 0.0))))
- (non-musical . #t)
- (break-align-symbol . ambitus)
- (break-visibility . ,begin-of-line-visible)
- (meta . ((class . Item)
- (interfaces . (axis-group-interface
- break-aligned-interface
- ambitus-interface))))))
-
- (AmbitusLine
- . (
- (stencil . ,ly:ambitus::print)
- (join-heads . #t)
- (thickness . 2)
- (X-offset . ,ly:self-alignment-interface::centered-on-x-parent)
+ (X-extent . ,ly:axis-group-interface::width)
+ (Y-extent . ,ly:axis-group-interface::height)
(meta . ((class . Item)
+ (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
+ (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)
+ (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items)
+ (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners)))
(interfaces . (ambitus-interface
- staff-symbol-referencer-interface
- font-interface))))))
+ axis-group-interface
+ break-aligned-interface))))))
+
(AmbitusAccidental
. (
- (font-family . music)
- (padding . 0.5)
- (X-offset . ,ly:side-position-interface::x-aligned-side)
(direction . ,LEFT)
+ (glyph-name-alist . ,standard-alteration-glyph-name-alist)
+ (padding . 0.5)
+ (side-axis . ,X)
(stencil . ,ly:accidental-interface::print)
+ (X-offset . ,ly:side-position-interface::x-aligned-side)
(Y-extent . ,ly:accidental-interface::height)
- (glyph-name-alist . ,standard-alteration-glyph-name-alist)
- (side-axis . ,X)
(meta . ((class . Item)
- (interfaces . (
- accidental-interface
+ (interfaces . (accidental-interface
break-aligned-interface
- side-position-interface
+ font-interface
+ side-position-interface))))))
+
+ (AmbitusLine
+ . (
+ (gap . 0.35)
+ (stencil . ,ambitus::print)
+ (thickness . 2)
+ (X-offset . ,ly:self-alignment-interface::centered-on-x-parent)
+ (meta . ((class . Item)
+ (interfaces . (ambitus-interface
font-interface))))))
(AmbitusNoteHead
. (
(duration-log . 2)
- (stencil . ,ly:note-head::print)
(glyph-name . ,note-head::calc-glyph-name)
+ (stencil . ,ly:note-head::print)
(Y-offset . ,ly:staff-symbol-referencer::callback)
(meta . ((class . Item)
- (interfaces . (font-interface
+ (interfaces . (ambitus-interface
+ font-interface
+ ledgered-interface
note-head-interface
- ambitus-interface
- staff-symbol-referencer-interface
rhythmic-head-interface
- ledgered-interface))))))
+ staff-symbol-referencer-interface))))))
(Arpeggio
- . ((X-extent . ,ly:arpeggio::width)
- (stencil . ,ly:arpeggio::print)
- (Y-offset . ,ly:staff-symbol-referencer::callback)
- (X-offset . ,ly:side-position-interface::x-aligned-side)
+ . (
(direction . ,LEFT)
- (positions . ,ly:arpeggio::calc-positions)
(padding . 0.5)
+ (positions . ,ly:arpeggio::calc-positions)
(script-priority . 0)
(side-axis . ,X)
(staff-position . 0.0)
- (Y-extent . ,ly:arpeggio::height)
+ (stencil . ,ly:arpeggio::print)
+ (X-extent . ,ly:arpeggio::width)
+ (X-offset . ,ly:side-position-interface::x-aligned-side)
+ (Y-offset . ,ly:staff-symbol-referencer::callback)
(meta . ((class . Item)
(interfaces . (arpeggio-interface
- staff-symbol-referencer-interface
+ font-interface
side-position-interface
- font-interface))))))
+ staff-symbol-referencer-interface))))))
- (BalloonTextItem
- . ((stencil . ,ly:balloon-interface::print)
- (text . ,(grob::calc-property-by-copy 'text))
- (X-offset . ,(grob::calc-property-by-copy 'X-offset))
- (Y-offset . ,(grob::calc-property-by-copy 'Y-offset))
+ (BalloonTextItem
+ . (
+ (stencil . ,ly:balloon-interface::print)
+ (text . ,(grob::calc-property-by-copy 'text))
+ (X-offset . ,(grob::calc-property-by-copy 'X-offset))
+ (Y-offset . ,(grob::calc-property-by-copy 'Y-offset))
(meta . ((class . Item)
(interfaces . (balloon-interface
- text-interface
- font-interface))))))
+ font-interface
+ text-interface))))))
+
(BarLine
. (
- (break-align-symbol . staff-bar)
+ (allow-span-bar . #t)
+ (bar-extent . ,ly:bar-line::calc-bar-extent)
+ (bar-size . ,ly:bar-line::calc-bar-size)
(break-align-anchor . ,ly:bar-line::calc-anchor)
- (glyph . "|")
- (gap . 0.4)
- (layer . 0)
+ (break-align-symbol . staff-bar)
(break-visibility . ,bar-line::calc-break-visibility)
- (non-musical . #t)
- (stencil . ,ly:bar-line::print)
+ (gap . 0.4)
+ (glyph . "|")
(glyph-name . ,bar-line::calc-glyph-name)
- (bar-size . ,ly:bar-line::calc-bar-size)
- (bar-extent . ,ly:bar-line::calc-bar-extent)
- (allow-span-bar . #t)
-
- (space-alist . (
- (time-signature . (extra-space . 0.75))
- (custos . (minimum-space . 2.0))
- (clef . (minimum-space . 1.0))
- (key-signature . (extra-space . 1.0))
- (key-cancellation . (extra-space . 1.0))
- (first-note . (fixed-space . 1.3))
- (next-note . (semi-fixed-space . 0.9))
- (right-edge . (extra-space . 0.0))))
;;
;; Ross. page 151 lists other values, we opt for a leaner look
(thin-kern . 3.0)
(hair-thickness . 1.9)
(thick-thickness . 6.0)
+
+ (layer . 0)
+ (non-musical . #t)
+ (space-alist . (
+ (time-signature . (extra-space . 0.75))
+ (custos . (minimum-space . 2.0))
+ (clef . (minimum-space . 1.0))
+ (key-signature . (extra-space . 1.0))
+ (key-cancellation . (extra-space . 1.0))
+ (first-note . (fixed-space . 1.3))
+ (next-note . (semi-fixed-space . 0.9))
+ (right-edge . (extra-space . 0.0))))
+ (stencil . ,ly:bar-line::print)
(meta . ((class . Item)
(interfaces . (bar-line-interface
break-aligned-interface
(BarNumber
. (
- (stencil . ,ly:text-interface::print)
- (non-musical . #t)
+ (after-line-breaking . ,ly:side-position-interface::move-to-extremal-staff)
+ ;; want the bar number before the clef at line start.
+ (break-align-symbols . (left-edge staff-bar))
+
(break-visibility . ,begin-of-line-visible)
- (padding . 1.0)
(direction . ,UP)
(font-family . roman)
(font-size . -2)
- (Y-offset . ,ly:side-position-interface::y-aligned-side)
- (side-axis . ,Y)
+ (non-musical . #t)
(outside-staff-priority . 100)
+ (padding . 1.0)
+ (self-alignment-X . ,RIGHT)
+ (side-axis . ,Y)
+ (stencil . ,ly:text-interface::print)
(X-offset . ,(ly:make-simple-closure
`(,+
,(ly:make-simple-closure
(list ly:break-alignable-interface::self-align-callback))
,(ly:make-simple-closure
(list ly:self-alignment-interface::x-aligned-on-self)))))
-
- (self-alignment-X . ,RIGHT)
-
- ;; want the bar number before the clef at line start.
- (break-align-symbols . (left-edge staff-bar))
+ (Y-offset . ,ly:side-position-interface::y-aligned-side)
(meta .
((class . Item)
- (interfaces . (side-position-interface
- text-interface
- break-alignable-interface
+ (interfaces . (break-alignable-interface
+ font-interface
self-alignment-interface
- font-interface))))))
+ side-position-interface
+ text-interface))))))
(BassFigure
. (
(stencil . ,ly:text-interface::print)
(meta . ((class . Item)
- (interfaces . (text-interface
+ (interfaces . (bass-figure-interface
+ font-interface
rhythmic-grob-interface
- bass-figure-interface
- font-interface))))))
+ text-interface))))))
(BassFigureAlignment
. (
(axes . (,Y))
- (threshold . (2 . 1000))
- (positioning-done . ,ly:align-interface::calc-positioning-done)
- (Y-extent . ,ly:axis-group-interface::height)
- (stacking-dir . ,DOWN)
(padding . 0.2)
+ (positioning-done . ,ly:align-interface::align-to-minimum-distances)
+ (stacking-dir . ,DOWN)
+ (Y-extent . ,ly:axis-group-interface::height)
(meta . ((class . Spanner)
+ (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
+ (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)
+ (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items)
+ (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners)))
(interfaces . (align-interface
- bass-figure-alignment-interface
- axis-group-interface))))))
+ axis-group-interface
+ bass-figure-alignment-interface))))))
(BassFigureAlignmentPositioning
- . ((Y-offset . ,ly:side-position-interface::y-aligned-side)
- (side-axis . ,Y)
- (direction . ,UP)
- (Y-extent . ,ly:axis-group-interface::height)
+ . (
(axes . (,Y))
- (staff-padding . 1.0)
+ (direction . ,UP)
(padding . 0.5)
+ (side-axis . ,Y)
+ (staff-padding . 1.0)
+ (Y-extent . ,ly:axis-group-interface::height)
+ (Y-offset . ,ly:side-position-interface::y-aligned-side)
(meta . ((class . Spanner)
- (interfaces . (side-position-interface
- axis-group-interface))))))
-
+ (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
+ (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)
+ (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items)
+ (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners)))
+ (interfaces . (axis-group-interface
+ side-position-interface))))))
+
(BassFigureBracket
. (
+ (edge-height . (0.2 . 0.2))
(stencil . ,ly:enclosing-bracket::print)
(X-extent . ,ly:enclosing-bracket::width)
- (edge-height . (0.2 . 0.2))
(meta . ((class . Item)
(interfaces . (enclosing-bracket-interface))))))
(BassFigureLine
. (
+ (adjacent-pure-heights . ,ly:axis-group-interface::adjacent-pure-heights)
(axes . (,Y))
- (Y-extent . ,ly:axis-group-interface::height)
(vertical-skylines . ,ly:axis-group-interface::calc-skylines)
- (adjacent-pure-heights . ,ly:axis-group-interface::adjacent-pure-heights)
+ (Y-extent . ,ly:axis-group-interface::height)
(meta . ((class . Spanner)
+ (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
+ (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)
+ (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items)
+ (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners)))
(interfaces . (axis-group-interface))))))
. (
;; todo: clean this up a bit: the list is getting
;; rather long.
- (gap . 0.8)
- (positions . ,(ly:make-simple-closure
- (ly:make-simple-closure
- (list chain-grob-member-functions
- `(,cons 0 0)
- ly:beam::calc-least-squares-positions
- ly:beam::slope-damping
- ly:beam::shift-region-to-valid
- ly:beam::quanting
- ))))
- ;; this is a hack to set stem lengths, if positions is set.
- (quantized-positions . ,ly:beam::set-stem-lengths)
- (concaveness . ,ly:beam::calc-concaveness)
- (direction . ,ly:beam::calc-direction)
- (shorten . ,ly:beam::calc-stem-shorten)
- (beaming . ,ly:beam::calc-beaming)
- (stencil . ,ly:beam::print)
- (clip-edges . #t)
- (cross-staff . ,ly:beam::calc-cross-staff)
- (details
- .(
- (secondary-beam-demerit . 10)
- (stem-length-demerit-factor . 5)
- (region-size . 2)
- (beam-eps . 0.001)
- (stem-length-limit-penalty . 5000)
- (damping-direction-penalty . 800)
- (hint-direction-penalty . 20)
- (musical-direction-factor . 400)
- (ideal-slope-factor . 10)
- (round-to-zero-slope . 0.02)))
- ;; TODO: should be in SLT.
- (thickness . 0.48) ; in staff-space
- (neutral-direction . ,DOWN)
+ (auto-knee-gap . 5.5)
+ (beam-thickness . 0.48) ; in staff-space
- ;; Whe have some unreferenced problems here.
+ ;; We have some unreferenced problems here.
;;
;; If we shorten beamed stems less than normal stems (1 staff-space),
;; or high order less than 8th beams, patterns like
;; isolated shortened beams look nice and a bit shortened,
;; sadly possibly breaking patterns with high order beams.
(beamed-stem-shorten . (1.0 0.5 0.25))
- (damping . 1)
- (auto-knee-gap . 5.5)
- ;; only for debugging.
+ (beaming . ,ly:beam::calc-beaming)
+ (clip-edges . #t)
+ (concaveness . ,ly:beam::calc-concaveness)
+ (cross-staff . ,ly:beam::calc-cross-staff)
+ (damping . 1)
+ (details
+ .(
+ (secondary-beam-demerit . 10)
+ (stem-length-demerit-factor . 5)
+ (region-size . 2)
+ (beam-eps . 0.001)
+ (stem-length-limit-penalty . 5000)
+ (damping-direction-penalty . 800)
+ (hint-direction-penalty . 20)
+ (musical-direction-factor . 400)
+ (ideal-slope-factor . 10)
+ (round-to-zero-slope . 0.02)))
+ (direction . ,ly:beam::calc-direction)
+
+ ;; only for debugging.
(font-family . roman)
+
+ (gap . 0.8)
+ (neutral-direction . ,DOWN)
+ (positions . ,(ly:make-simple-closure
+ (ly:make-simple-closure
+ (list chain-grob-member-functions
+ `(,cons 0 0)
+ ly:beam::calc-least-squares-positions
+ ly:beam::slope-damping
+ ly:beam::shift-region-to-valid
+ ly:beam::quanting
+ ))))
+
+ ;; this is a hack to set stem lengths, if positions is set.
+ (quantized-positions . ,ly:beam::set-stem-lengths)
+
+ (shorten . ,ly:beam::calc-stem-shorten)
+ (stencil . ,ly:beam::print)
+
(meta . ((class . Spanner)
- (object-callbacks . ((normal-stems . ,ly:beam::calc-normal-stems)))
- (interfaces . (staff-symbol-referencer-interface
- unbreakable-spanner-interface
- beam-interface
- font-interface))))))
+ (object-callbacks . ((normal-stems . ,ly:beam::calc-normal-stems)))
+ (interfaces . (beam-interface
+ font-interface
+ staff-symbol-referencer-interface
+ unbreakable-spanner-interface))))))
(BendAfter
. (
- (stencil . ,bend::print)
(minimum-length . 0.5)
+ (stencil . ,bend::print)
(thickness . 2.0)
(meta . ((class . Spanner)
- (interfaces . (spanner-interface
- bend-after-interface))))))
+ (interfaces . (bend-after-interface
+ spanner-interface))))))
- (BreakAlignment
+ (BreakAlignGroup
. (
- (non-musical . #t)
- (stacking-dir . 1)
- (positioning-done . ,ly:break-alignment-interface::calc-positioning-done)
+ (axes . (,X))
+ (break-align-anchor . ,ly:break-aligned-interface::calc-average-anchor)
+ (break-visibility . ,ly:break-aligned-interface::calc-break-visibility)
(X-extent . ,ly:axis-group-interface::width)
+ (meta . ((class . Item)
+ (interfaces . (axis-group-interface
+ break-aligned-interface))))))
+
+ (BreakAlignment
+ . (
+ (axes . (,X))
(break-align-orders . ;; end of line
#((
left-edge
staff-bar
time-signature
custos)))
- (axes . (,X))
- (meta . ((class . Item)
- (interfaces . (break-alignment-interface
- axis-group-interface))))))
-
- (BreakAlignGroup
- . (
- (axes . (,X))
+ (non-musical . #t)
+ (positioning-done . ,ly:break-alignment-interface::calc-positioning-done)
+ (stacking-dir . 1)
(X-extent . ,ly:axis-group-interface::width)
- (break-align-anchor . ,ly:break-aligned-interface::calc-average-anchor)
- (break-visibility . ,ly:break-aligned-interface::calc-break-visibility)
(meta . ((class . Item)
- (interfaces . (break-aligned-interface
- axis-group-interface))))))
+ (interfaces . (axis-group-interface
+ break-alignment-interface))))))
(BreathingSign
. (
(break-align-symbol . breathing-sign)
+ (break-visibility . ,begin-of-line-invisible)
(non-musical . #t)
(space-alist . (
(ambitus . (extra-space . 2.0))
(stencil . ,ly:text-interface::print)
(text . ,(make-musicglyph-markup "scripts.rcomma"))
(Y-offset . ,ly:breathing-sign::offset-callback)
- (break-visibility . ,begin-of-line-invisible)
(meta . ((class . Item)
(interfaces . (break-aligned-interface
breathing-sign-interface
- text-interface
- font-interface))))))
+ font-interface
+ text-interface))))))
+
+ (ChordName
+ . (
+ (after-line-breaking . ,ly:chord-name::after-line-breaking)
+ (font-family . sans)
+ (font-size . 1.5)
+ (stencil . ,ly:text-interface::print)
+ (word-space . 0.0)
+ (meta . ((class . Item)
+ (interfaces . (chord-name-interface
+ font-interface
+ rhythmic-grob-interface
+ text-interface))))))
(Clef
. (
- (stencil . ,ly:clef::print)
- (glyph-name . ,ly:clef::calc-glyph-name)
- (non-musical . #t)
(avoid-slur . inside)
- (font-family . music)
- (break-align-symbol . clef)
(break-align-anchor . ,ly:break-aligned-interface::calc-extent-aligned-anchor)
+ (break-align-symbol . clef)
(break-visibility . ,begin-of-line-visible)
+ (glyph-name . ,ly:clef::calc-glyph-name)
+ (non-musical . #t)
(space-alist . ((ambitus . (extra-space . 2.0))
(staff-bar . (extra-space . 0.7))
(key-cancellation . (minimum-space . 3.5))
(first-note . (minimum-fixed-space . 5.0))
(next-note . (extra-space . 0.5))
(right-edge . (extra-space . 0.5))))
+ (stencil . ,ly:clef::print)
+ (extra-spacing-height . (-0.5 . 0.5))
(Y-offset . ,ly:staff-symbol-referencer::callback)
(meta . ((class . Item)
- (interfaces . (clef-interface
- staff-symbol-referencer-interface
+ (interfaces . (break-aligned-interface
+ clef-interface
font-interface
- break-aligned-interface))))))
-
- (ClusterSpannerBeacon
- . (
- (Y-extent . ,ly:cluster-beacon::height)
- (meta . ((class . Item)
- (interfaces . (rhythmic-grob-interface
- cluster-beacon-interface))))))
+ staff-symbol-referencer-interface))))))
(ClusterSpanner
. (
- (springs-and-rods . ,ly:spanner::set-spacing-rods)
- (stencil . ,ly:cluster::print)
+ (cross-staff . ,ly:cluster::calc-cross-staff)
(minimum-length . 0.0)
(padding . 0.25)
- (cross-staff . ,ly:cluster::calc-cross-staff)
+ (springs-and-rods . ,ly:spanner::set-spacing-rods)
+ (stencil . ,ly:cluster::print)
(style . ramp)
(meta . ((class . Spanner)
(interfaces . (cluster-interface))))))
- (ChordName
+ (ClusterSpannerBeacon
. (
- (stencil . ,ly:text-interface::print)
- (after-line-breaking . ,ly:chord-name::after-line-breaking)
- (word-space . 0.0)
- (font-family . sans)
- (font-size . 1.5)
+ (Y-extent . ,ly:cluster-beacon::height)
(meta . ((class . Item)
- (interfaces . (font-interface
- rhythmic-grob-interface
- text-interface
- chord-name-interface))))))
+ (interfaces . (cluster-beacon-interface
+ rhythmic-grob-interface))))))
(CombineTextScript
. (
- (stencil . ,ly:text-interface::print)
- (extra-spacing-width . (+inf.0 . -inf.0))
- (Y-offset . ,ly:side-position-interface::y-aligned-side)
- (X-offset . ,ly:self-alignment-interface::x-aligned-on-self)
+ (avoid-slur . outside)
+ (baseline-skip . 2)
(direction . ,UP)
+ (extra-spacing-width . (+inf.0 . -inf.0))
+ (font-series . bold)
+ (outside-staff-priority . 450)
(padding . 0.5)
- (staff-padding . 0.5)
(script-priority . 200)
- ;; todo: add X self alignment?
- (baseline-skip . 2)
(side-axis . ,Y)
- (avoid-slur . outside)
- (font-series . bold)
+ (staff-padding . 0.5)
+ ;; todo: add X self alignment?
+ (stencil . ,ly:text-interface::print)
+ (X-offset . ,ly:self-alignment-interface::x-aligned-on-self)
+ (Y-offset . ,ly:side-position-interface::y-aligned-side)
(meta . ((class . Item)
- (interfaces . (text-script-interface
- text-interface
+ (interfaces . (font-interface
side-position-interface
- font-interface))))))
+ text-interface
+ text-script-interface))))))
(Custos
. (
(break-align-symbol . custos)
- (non-musical . #t)
- (stencil . ,ly:custos::print)
(break-visibility . ,end-of-line-visible)
- (style . vaticana)
(neutral-direction . ,DOWN)
- (Y-offset . ,ly:staff-symbol-referencer::callback)
+ (non-musical . #t)
(space-alist . (
(first-note . (minimum-fixed-space . 0.0))
(right-edge . (extra-space . 0.1))))
+ (stencil . ,ly:custos::print)
+ (style . vaticana)
+ (Y-offset . ,ly:staff-symbol-referencer::callback)
(meta . ((class . Item)
- (interfaces . (custos-interface
- staff-symbol-referencer-interface
+ (interfaces . (break-aligned-interface
+ custos-interface
font-interface
- break-aligned-interface))))))
+ staff-symbol-referencer-interface))))))
(DotColumn
. (
(axes . (,X))
(direction . ,RIGHT)
- (positioning-done . ,ly:dot-column::calc-positioning-done)
+ (positioning-done . ,ly:dot-column::calc-positioning-done)
(X-extent . ,ly:axis-group-interface::width)
(meta . ((class . Item)
- (interfaces . (dot-column-interface
- axis-group-interface))))))
+ (interfaces . (axis-group-interface
+ dot-column-interface))))))
(Dots
. (
- (stencil . ,ly:dots::print)
(dot-count . ,dots::calc-dot-count)
(staff-position . ,dots::calc-staff-position)
+ (stencil . ,ly:dots::print)
+ (extra-spacing-height . (-0.5 . 0.5))
(meta . ((class . Item)
- (interfaces . (font-interface
- staff-symbol-referencer-interface
- dots-interface))))))
+ (interfaces . (dots-interface
+ font-interface
+ staff-symbol-referencer-interface))))))
(DoublePercentRepeat
. (
- (stencil . ,ly:percent-repeat-item-interface::double-percent)
- (non-musical . #t)
- (slope . 1.0)
+ (break-align-symbol . staff-bar)
+ (break-visibility . ,begin-of-line-invisible)
(dot-negative-kern . 0.75)
- (slash-negative-kern . 1.6)
(font-encoding . fetaMusic)
- (width . 2.0)
+ (non-musical . #t)
+ (slash-negative-kern . 1.6)
+ (slope . 1.0)
+ (stencil . ,ly:percent-repeat-item-interface::double-percent)
(thickness . 0.48)
- (break-align-symbol . staff-bar)
- (break-visibility . ,begin-of-line-invisible)
+ (width . 2.0)
(meta . ((class . Item)
- (interfaces . (font-interface
- break-aligned-interface
+ (interfaces . (break-aligned-interface
+ font-interface
percent-repeat-interface
percent-repeat-item-interface))))))
(DoublePercentRepeatCounter
. (
+ (direction . ,UP)
+ (font-encoding . fetaText)
+ (font-size . -2)
+ (padding . 0.2)
+ (self-alignment-X . ,CENTER)
+ (side-axis . ,Y)
+ (staff-padding . 0.25)
(stencil . ,ly:text-interface::print)
(X-offset . ,(ly:make-simple-closure
`(,+
,(ly:make-simple-closure
(list ly:self-alignment-interface::x-aligned-on-self)))))
(Y-offset . ,ly:side-position-interface::y-aligned-side)
- (font-encoding . fetaNumber)
- (self-alignment-X . ,CENTER)
- (font-size . -2)
- (direction . ,UP)
- (padding . 0.2)
- (staff-padding . 0.25)
- (side-axis . ,Y)
(meta . ((class . Item)
- (interfaces . (side-position-interface
- self-alignment-interface
- percent-repeat-item-interface
+ (interfaces . (font-interface
percent-repeat-interface
- font-interface
+ percent-repeat-item-interface
+ self-alignment-interface
+ side-position-interface
text-interface))))))
(DynamicLineSpanner
. (
(axes . (,Y))
- (Y-offset . ,ly:side-position-interface::y-aligned-side)
- (staff-padding . 0.1)
- (padding . 0.6)
- (slur-padding . 0.3)
- (minimum-space . 1.2)
+ (cross-staff . ,ly:side-position-interface::calc-cross-staff)
(direction . ,DOWN)
- (side-axis . ,Y)
+ (minimum-space . 1.2)
(outside-staff-priority . 250)
- (Y-extent . ,ly:axis-group-interface::height)
+ (padding . 0.6)
+ (side-axis . ,Y)
+ (slur-padding . 0.3)
+ (staff-padding . 0.1)
(X-extent . ,ly:axis-group-interface::width)
- (cross-staff . ,ly:side-position-interface::calc-cross-staff)
+ (Y-extent . ,ly:axis-group-interface::height)
+ (Y-offset . ,ly:side-position-interface::y-aligned-side)
(meta . ((class . Spanner)
+ (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
+ (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)
+ (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items)
+ (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners)))
(interfaces . (axis-group-interface
dynamic-interface
dynamic-line-spanner-interface
;; todo.
- (stencil . ,ly:text-interface::print)
(direction . ,ly:script-interface::calc-direction)
- (positioning-done . ,ly:script-interface::calc-positioning-done)
-
- (X-offset . ,ly:self-alignment-interface::x-aligned-on-self)
- (self-alignment-X . ,CENTER)
- (Y-offset . ,ly:self-alignment-interface::y-aligned-on-self)
- (self-alignment-Y . ,CENTER)
+ (extra-spacing-width . (+inf.0 . -inf.0))
+ (font-encoding . fetaText)
(font-series . bold)
- (font-encoding . fetaDynamic)
(font-shape . italic)
- (extra-spacing-width . (+inf.0 . -inf.0))
(outside-staff-priority . 250)
+ (positioning-done . ,ly:script-interface::calc-positioning-done)
+ (right-padding . 0.5)
+ (self-alignment-X . ,CENTER)
+ (self-alignment-Y . ,CENTER)
+ (stencil . ,ly:text-interface::print)
+ (X-offset . ,ly:self-alignment-interface::x-aligned-on-self)
+ (Y-offset . ,ly:self-alignment-interface::y-aligned-on-self)
(meta . ((class . Item)
- (interfaces . (font-interface
- text-interface
+ (interfaces . (dynamic-interface
+ dynamic-text-interface
+ font-interface
+ script-interface
self-alignment-interface
- dynamic-interface
- script-interface))))))
+ text-interface))))))
(DynamicTextSpanner
. (
- ;; rather ugh with NCSB
- ;; (font-series . bold)
- (font-shape . italic)
- (style . dashed-line)
-
- ;; make sure the spanner doesn't get too close to notes
- (minimum-Y-extent . (-1 . 1))
+ (before-line-breaking . ,dynamic-text-spanner::before-line-breaking)
(bound-details . ((right . ((attach-dir . ,LEFT)
(Y . 0)
(padding . 0.75)
(right-broken . ((attach-dir . ,RIGHT)
(padding . 0.0)
))
-
+
(left . ((attach-dir . ,LEFT)
(Y . 0)
- (stencil-offset . (0 . -0.5))
- (padding . 0.5)
+ (stencil-offset . (-0.75 . -0.5))
+ (padding . 0.75)
))
(left-broken . ((attach-dir . ,RIGHT)
))
))
- (stencil . ,ly:line-spanner::print)
- (left-bound-info . ,ly:line-spanner::calc-left-bound-info-and-text)
- (right-bound-info . ,ly:line-spanner::calc-right-bound-info)
-
- ;; need to blend with dynamic texts.
- (font-size . 1)
(dash-fraction . 0.2)
(dash-period . 3.0)
+
+ ;; rather ugh with NCSB
+ ;; (font-series . bold)
+ (font-shape . italic)
+
+ ;; need to blend with dynamic texts.
+ (font-size . 1)
+
+ (left-bound-info . ,ly:line-spanner::calc-left-bound-info-and-text)
+
+ ;; make sure the spanner doesn't get too close to notes
+ (minimum-Y-extent . (-1 . 1))
+
+ (right-bound-info . ,ly:line-spanner::calc-right-bound-info)
+ (stencil . ,ly:line-spanner::print)
+ (style . dashed-line)
(meta . ((class . Spanner)
- (interfaces . (font-interface
- text-interface
+ (interfaces . (dynamic-interface
+ dynamic-text-spanner-interface
+ font-interface
+ line-interface
line-spanner-interface
+ spanner-interface
+ text-interface))))))
+
+
+ (Episema
+ . (
+ (bound-details . ((left . ((Y . 0)
+ (padding . 0)
+ (attach-dir . ,LEFT)
+ ))
+ (right . ((Y . 0)
+ (padding . 0)
+ (attach-dir . ,RIGHT)
+ ))
+ ))
+ (direction . ,UP)
+ (left-bound-info . ,ly:line-spanner::calc-left-bound-info)
+ (quantize-position . #t)
+ (right-bound-info . ,ly:line-spanner::calc-right-bound-info)
+ (side-axis . ,Y)
+ (stencil . ,ly:line-spanner::print)
+ (style . line)
+ (Y-offset . ,ly:side-position-interface::y-aligned-side)
+ (meta . ((class . Spanner)
+ (interfaces . (episema-interface
+ font-interface
line-interface
- dynamic-interface
- dynamic-text-spanner-interface
- spanner-interface))))))
+ line-spanner-interface
+ side-position-interface))))))
+
-
(Fingering
. (
;; sync with TextScript (?)
- (padding . 0.5)
(avoid-slur . around)
- (slur-padding . 0.2)
- (staff-padding . 0.5)
+ (cross-staff . ,ly:side-position-interface::calc-cross-staff)
+ (direction . ,ly:script-interface::calc-direction)
+ (font-encoding . fetaText)
+ (font-size . -5) ; don't overlap when next to heads.
+ (padding . 0.5)
+ (positioning-done . ,ly:script-interface::calc-positioning-done)
+ (script-priority . 100)
(self-alignment-X . ,CENTER)
(self-alignment-Y . ,CENTER)
- (script-priority . 100)
+ (slur-padding . 0.2)
+ (staff-padding . 0.5)
(stencil . ,ly:text-interface::print)
- (direction . ,ly:script-interface::calc-direction)
- (positioning-done . ,ly:script-interface::calc-positioning-done)
- (cross-staff . ,ly:side-position-interface::calc-cross-staff)
-
- (text . ,fingering::calc-text)
- (font-encoding . fetaNumber)
- (font-size . -5) ; don't overlap when next to heads.
+ (text . ,fingering::calc-text)
(meta . ((class . Item)
(interfaces . (finger-interface
font-interface
- text-script-interface
- text-interface
+ self-alignment-interface
side-position-interface
- self-alignment-interface))))))
+ text-interface
+ text-script-interface))))))
(FretBoard
- . ((stencil . ,fret-board::calc-stencil)
+ . (
(after-line-breaking . ,ly:chord-name::after-line-breaking)
(fret-diagram-details . ((finger-code . below-string)))
+ (stencil . ,fret-board::calc-stencil)
(meta . ((class . Item)
- (interfaces . (fret-diagram-interface
- rhythmic-grob-interface
- chord-name-interface
- font-interface))))))
+ (interfaces . (chord-name-interface
+ font-interface
+ fret-diagram-interface
+ rhythmic-grob-interface))))))
(Glissando
. (
- (style . line)
- (gap . 0.5)
- (zigzag-width . 0.75)
- (X-extent . #f)
- (Y-extent . #f)
+ (after-line-breaking . ,ly:spanner::kill-zero-spanned-time)
(bound-details . ((right . ((attach-dir . ,CENTER)
(padding . 1.5)
))
(padding . 1.5)
))
))
- (after-line-breaking . ,ly:spanner::kill-zero-spanned-time)
- (stencil . ,ly:line-spanner::print)
+ (gap . 0.5)
(left-bound-info . ,ly:line-spanner::calc-left-bound-info)
(right-bound-info . ,ly:line-spanner::calc-right-bound-info)
+ (stencil . ,ly:line-spanner::print)
+ (style . line)
+ (X-extent . #f)
+ (Y-extent . #f)
+ (zigzag-width . 0.75)
(meta . ((class . Spanner)
(interfaces . (line-interface
- unbreakable-spanner-interface
- line-spanner-interface))))))
+ line-spanner-interface
+ unbreakable-spanner-interface))))))
(GraceSpacing
. (
(common-shortest-duration . ,grace-spacing::calc-shortest-duration)
- (spacing-increment . 0.8)
(shortest-duration-space . 1.6)
+ (spacing-increment . 0.8)
(meta . ((class . Spanner)
(interfaces . (grace-spacing-interface
spacing-options-interface
spanner-interface))))))
- (GridPoint
- . (
- (X-extent . (0 . 0))
- (Y-extent . (0 . 0))
- (meta . ((class . Item)
- (interfaces . (grid-point-interface))))))
-
(GridLine
. (
- (X-extent . ,ly:grid-line-interface::width)
- (stencil . ,ly:grid-line-interface::print)
+ (layer . 0)
(self-alignment-X . ,CENTER)
+ (stencil . ,ly:grid-line-interface::print)
+ (X-extent . ,ly:grid-line-interface::width)
(X-offset . ,(ly:make-simple-closure
`(,+
,(ly:make-simple-closure
(list ly:self-alignment-interface::centered-on-x-parent))
,(ly:make-simple-closure
(list ly:self-alignment-interface::x-aligned-on-self)))))
- (layer . 0)
(meta . ((class . Item)
- (interfaces . (self-alignment-interface
- grid-line-interface))))))
+ (interfaces . (grid-line-interface
+ self-alignment-interface))))))
+
+ (GridPoint
+ . (
+ (X-extent . (0 . 0))
+ (Y-extent . (0 . 0))
+ (meta . ((class . Item)
+ (interfaces . (grid-point-interface))))))
(Hairpin
. (
- (stencil . ,ly:hairpin::print)
- (springs-and-rods . ,ly:spanner::set-spacing-rods)
(after-line-breaking . ,ly:spanner::kill-zero-spanned-time)
- (grow-direction . ,hairpin::calc-grow-direction)
+ (bound-padding . 1.0)
(circled-tip . #f)
- (to-barline . #t)
- (thickness . 1.0)
+ (grow-direction . ,hairpin::calc-grow-direction)
(height . 0.6666)
(minimum-length . 2.0)
- (bound-padding . 1.0)
(self-alignment-Y . ,CENTER)
+ (springs-and-rods . ,ly:spanner::set-spacing-rods)
+ (stencil . ,ly:hairpin::print)
+ (thickness . 1.0)
+ (to-barline . #t)
(Y-offset . ,ly:self-alignment-interface::y-aligned-on-self)
- (Y-extent . ,ly:hairpin::height)
(meta . ((class . Spanner)
- (interfaces . (hairpin-interface
+ (interfaces . (dynamic-interface
+ hairpin-interface
line-interface
self-alignment-interface
- dynamic-interface
spanner-interface))))))
+ (HarmonicParenthesesItem
+ . (
+ (padding . 0)
+ (stencil . ,parentheses-item::print)
+ (stencils . ,parentheses-item::calc-angled-bracket-stencils)
+ (meta . ((class . Item)
+ (interfaces . (font-interface
+ parentheses-interface))))))
+
(HorizontalBracket
. (
- (thickness . 1.0)
- (stencil . ,ly:horizontal-bracket::print)
- (Y-offset . ,ly:side-position-interface::y-aligned-side)
+ (bracket-flare . (0.5 . 0.5))
(connect-to-neighbor . ,ly:tuplet-bracket::calc-connect-to-neighbors)
-
- (padding . 0.2)
- (staff-padding . 0.2)
(direction . ,DOWN)
+ (padding . 0.2)
(side-axis . ,Y)
- (bracket-flare . (0.5 . 0.5))
+ (staff-padding . 0.2)
+ (stencil . ,ly:horizontal-bracket::print)
+ (thickness . 1.0)
+ (Y-offset . ,ly:side-position-interface::y-aligned-side)
(meta . ((class . Spanner)
(interfaces . (horizontal-bracket-interface
- side-position-interface
line-interface
+ side-position-interface
spanner-interface))))))
(InstrumentName
. (
- (padding . 0.3)
- (stencil . ,ly:system-start-text::print)
- (X-offset . ,ly:side-position-interface::x-aligned-side)
(direction . ,LEFT)
- (self-alignment-Y . ,CENTER)
+ (padding . 0.3)
(self-alignment-X . ,CENTER)
+ (self-alignment-Y . ,CENTER)
+ (stencil . ,system-start-text::print)
+ (X-offset . ,system-start-text::calc-x-offset)
+ (Y-offset . ,system-start-text::calc-y-offset)
(meta . ((class . Spanner)
- (interfaces . (system-start-text-interface
- side-position-interface
+ (interfaces . (font-interface
self-alignment-interface
- font-interface))))))
+ side-position-interface
+ system-start-text-interface))))))
(InstrumentSwitch
. (
+ (direction . ,UP)
+ (extra-spacing-width . (+inf.0 . -inf.0))
+ (outside-staff-priority . 500)
(padding . 0.5)
+ (self-alignment-X . ,LEFT)
+ (side-axis . ,Y)
+ (staff-padding . 0.5)
(stencil . ,ly:text-interface::print)
- (Y-offset . ,ly:side-position-interface::y-aligned-side)
(X-offset . ,ly:self-alignment-interface::x-aligned-on-self)
- (staff-padding . 0.5)
- (direction . ,UP)
- (side-axis . ,Y)
- (self-alignment-X . ,LEFT)
- (outside-staff-priority . 500)
- (extra-spacing-width . (+inf.0 . -inf.0))
+ (Y-offset . ,ly:side-position-interface::y-aligned-side)
(meta . ((class . Item)
- (interfaces . (side-position-interface
+ (interfaces . (font-interface
self-alignment-interface
- text-interface
- font-interface))))))
+ side-position-interface
+ text-interface))))))
+
-
(KeyCancellation
. (
- (stencil . ,ly:key-signature-interface::print)
+ (break-align-symbol . key-cancellation)
+ (break-visibility . ,begin-of-line-invisible)
(glyph-name-alist . ,cancellation-glyph-name-alist)
+ (non-musical . #t)
(space-alist . (
(time-signature . (extra-space . 1.25))
(staff-bar . (extra-space . 0.6))
(key-signature . (extra-space . 0.5))
(right-edge . (extra-space . 0.5))
(first-note . (fixed-space . 2.5))))
+ (stencil . ,ly:key-signature-interface::print)
(Y-offset . ,ly:staff-symbol-referencer::callback)
- (break-align-symbol . key-cancellation)
- (break-visibility . ,begin-of-line-invisible)
- (non-musical . #t)
(meta . ((class . Item)
- (interfaces . (key-cancellation-interface
- key-signature-interface
- staff-symbol-referencer-interface
+ (interfaces . (break-aligned-interface
font-interface
- break-aligned-interface))))))
+ key-cancellation-interface
+ key-signature-interface
+ staff-symbol-referencer-interface))))))
(KeySignature
. (
- (stencil . ,ly:key-signature-interface::print)
(avoid-slur . inside)
+ (break-align-anchor . ,ly:break-aligned-interface::calc-extent-aligned-anchor)
+ (break-align-symbol . key-signature)
+ (break-visibility . ,begin-of-line-visible)
(glyph-name-alist . ,standard-alteration-glyph-name-alist)
+ (non-musical . #t)
(space-alist . (
(time-signature . (extra-space . 1.15))
(staff-bar . (extra-space . 1.1))
(right-edge . (extra-space . 0.5))
(first-note . (fixed-space . 2.5))))
+ (stencil . ,ly:key-signature-interface::print)
(Y-offset . ,ly:staff-symbol-referencer::callback)
- (break-align-symbol . key-signature)
- (break-align-anchor . ,ly:break-aligned-interface::calc-extent-aligned-anchor)
- (break-visibility . ,begin-of-line-visible)
- (non-musical . #t)
(meta . ((class . Item)
- (interfaces . (key-signature-interface
- staff-symbol-referencer-interface
+ (interfaces . (break-aligned-interface
font-interface
- break-aligned-interface))))))
-
-
+ key-signature-interface
+ staff-symbol-referencer-interface))))))
+
+
(LaissezVibrerTie
. (
- (stencil . ,ly:tie::print)
(control-points . ,ly:semi-tie::calc-control-points)
- (direction . ,ly:tie::calc-direction)
(details . ((ratio . 0.333)
(height-limit . 1.0)))
+ (direction . ,ly:tie::calc-direction)
(head-direction . ,LEFT)
+ (stencil . ,laissez-vibrer::print)
(thickness . 1.0)
+ (extra-spacing-height . (-0.5 . 0.5))
(meta . ((class . Item)
(interfaces . (semi-tie-interface))))))
(LaissezVibrerTieColumn
. (
+ (head-direction . ,ly:semi-tie-column::calc-head-direction)
+ (positioning-done . ,ly:semi-tie-column::calc-positioning-done)
(X-extent . #f)
(Y-extent . #f)
- (head-direction . ,LEFT)
- (positioning-done . ,ly:semi-tie-column::calc-positioning-done)
(meta . ((class . Item)
(interfaces . (semi-tie-column-interface))))))
(LedgerLineSpanner
. (
+ (layer . 0)
+ (length-fraction . 0.25)
+ (minimum-length-fraction . 0.25)
(springs-and-rods . ,ly:ledger-line-spanner::set-spacing-rods)
(stencil . ,ly:ledger-line-spanner::print)
(X-extent . #f)
(Y-extent . #f)
- (minimum-length-fraction . 0.25)
- (length-fraction . 0.25)
- (layer . 0)
(meta . ((class . Spanner)
(interfaces . (ledger-line-spanner-interface))))))
(LeftEdge
. (
- (break-align-symbol . left-edge)
(break-align-anchor . ,ly:break-aligned-interface::calc-extent-aligned-anchor)
- (X-extent . (0 . 0))
- (non-musical . #t)
+ (break-align-symbol . left-edge)
(break-visibility . ,center-invisible)
+ (non-musical . #t)
(space-alist . (
(custos . (extra-space . 0.0))
(ambitus . (extra-space . 2.0))
(clef . (extra-space . 0.8))
(first-note . (fixed-space . 2.0))
(right-edge . (extra-space . 0.0))
- (key-signature . (extra-space . 0.0))
+ (key-signature . (extra-space . 0.8))
(key-cancellation . (extra-space . 0.0))
))
+ (X-extent . (0 . 0))
(meta . ((class . Item)
(interfaces . (break-aligned-interface))))))
;; ugh. A ligature bracket is totally different from
;; a tuplet bracket.
- (padding . 2.0)
- (thickness . 1.6)
- (edge-height . (0.7 . 0.7))
- (shorten-pair . (-0.2 . -0.2))
+ (connect-to-neighbor . ,ly:tuplet-bracket::calc-connect-to-neighbors)
+ (control-points . ,ly:tuplet-bracket::calc-control-points)
(direction . ,UP)
+ (edge-height . (0.7 . 0.7))
+ (padding . 2.0)
(positions . ,ly:tuplet-bracket::calc-positions)
- (stencil . ,ly:tuplet-bracket::print)
+ (shorten-pair . (-0.2 . -0.2))
(staff-padding . 0.25)
- (connect-to-neighbor . ,ly:tuplet-bracket::calc-connect-to-neighbors)
- (control-points . ,ly:tuplet-bracket::calc-control-points)
+ (stencil . ,ly:tuplet-bracket::print)
+ (thickness . 1.6)
(meta . ((class . Spanner)
(interfaces . (line-interface
tuplet-bracket-interface))))))
(LyricExtender
. (
+ (minimum-length . 1.5)
(stencil . ,ly:lyric-extender::print)
(thickness . 0.8) ; line-thickness
- (minimum-length . 1.5)
(Y-extent . (0 . 0))
(meta . ((class . Spanner)
- (interfaces . (lyric-interface
- lyric-extender-interface))))))
+ (interfaces . (lyric-extender-interface
+ lyric-interface))))))
(LyricHyphen
. (
- (thickness . 1.3)
- (height . 0.42)
(dash-period . 10.0)
+ (height . 0.42)
(length . 0.66)
- (minimum-length . 0.3)
(minimum-distance . 0.1)
+ (minimum-length . 0.3)
(padding . 0.07)
(springs-and-rods . ,ly:lyric-hyphen::set-spacing-rods)
(stencil . ,ly:lyric-hyphen::print)
+ (thickness . 1.3)
(Y-extent . (0 . 0))
(meta . ((class . Spanner)
- (interfaces . (lyric-interface
- font-interface
+ (interfaces . (font-interface
lyric-hyphen-interface
+ lyric-interface
spanner-interface))))))
(LyricSpace
- . ((minimum-distance . 0.45)
- (springs-and-rods . ,ly:lyric-hyphen::set-spacing-rods)
+ . (
+ (minimum-distance . 0.45)
(padding . 0.0)
- (Y-extent . #f)
+ (springs-and-rods . ,ly:lyric-hyphen::set-spacing-rods)
(X-extent . #f)
+ (Y-extent . #f)
(meta . ((class . Spanner)
- (interfaces . (spanner-interface
- lyric-hyphen-interface))))))
-
+ (interfaces . (lyric-hyphen-interface
+ spanner-interface))))))
+
(LyricText
. (
- (stencil . ,lyric-text::print)
- (text . ,(grob::calc-property-by-copy 'text))
- (X-offset . ,ly:self-alignment-interface::aligned-on-x-parent)
- (self-alignment-X . ,CENTER)
- (word-space . 0.6)
+ (extra-spacing-width . (0.0 . 0.0))
(font-series . bold-narrow)
(font-size . 1.0)
- (extra-spacing-width . (0.0 . 0.0))
+ (self-alignment-X . ,CENTER)
+ (stencil . ,lyric-text::print)
+ (text . ,(grob::calc-property-by-copy 'text))
+ (word-space . 0.6)
+ (X-offset . ,ly:self-alignment-interface::aligned-on-x-parent)
(meta . ((class . Item)
- (interfaces . (rhythmic-grob-interface
+ (interfaces . (font-interface
lyric-syllable-interface
+ rhythmic-grob-interface
self-alignment-interface
- text-interface
- font-interface))))))
+ text-interface))))))
(MeasureGrouping
. (
- (Y-offset . ,ly:side-position-interface::y-aligned-side)
- (side-axis . ,Y)
- (stencil . ,ly:measure-grouping::print)
- (padding . 2)
(direction . ,UP)
- (thickness . 1)
(height . 2.0)
+ (padding . 2)
+ (side-axis . ,Y)
(staff-padding . 3)
+ (stencil . ,ly:measure-grouping::print)
+ (thickness . 1)
+ (Y-offset . ,ly:side-position-interface::y-aligned-side)
(meta . ((class . Spanner)
- (interfaces . (side-position-interface
- measure-grouping-interface))))))
+ (interfaces . (measure-grouping-interface
+ side-position-interface))))))
(MelodyItem
. (
(MensuralLigature
. (
- (thickness . 1.4)
(flexa-width . 2.0)
(stencil . ,ly:mensural-ligature::print)
+ (thickness . 1.4)
(meta . ((class . Spanner)
- (interfaces . (mensural-ligature-interface
- font-interface))))))
+ (interfaces . (font-interface
+ mensural-ligature-interface))))))
(MetronomeMark
. (
- (stencil . ,ly:text-interface::print)
- (Y-offset . ,ly:side-position-interface::y-aligned-side)
+ (after-line-breaking . ,ly:side-position-interface::move-to-extremal-staff)
(direction . ,UP)
- (padding . 0.8)
- (side-axis . ,Y)
(extra-spacing-width . (+inf.0 . -inf.0))
(outside-staff-priority . 1000)
+ (padding . 0.8)
+ (side-axis . ,Y)
+ (stencil . ,ly:text-interface::print)
+ (Y-offset . ,ly:side-position-interface::y-aligned-side)
+ (X-offset . ,(ly:make-simple-closure
+ `(,+
+ ,(ly:make-simple-closure
+ (list ly:break-alignable-interface::self-align-callback))
+ ,(ly:make-simple-closure
+ (list ly:self-alignment-interface::x-aligned-on-self)))))
+ (self-alignment-X . -1)
+ (break-align-symbol . time-signature)
+ (break-align-symbols . (time-signature))
(meta . ((class . Item)
- (interfaces . (text-interface
+ (interfaces . (font-interface
+ metronome-mark-interface
side-position-interface
- font-interface
- metronome-mark-interface))))))
+ break-alignable-interface
+ text-interface))))))
(MultiMeasureRest
. (
- (stencil . ,ly:multi-measure-rest::print)
- (springs-and-rods . ,ly:multi-measure-rest::set-spacing-rods)
- (Y-offset . ,ly:staff-symbol-referencer::callback)
- (staff-position . 0)
(expand-limit . 10)
- (thick-thickness . 6.6)
(hair-thickness . 2.0)
(padding . 1)
+ (spacing-pair . (break-alignment . staff-bar))
+ (springs-and-rods . ,ly:multi-measure-rest::set-spacing-rods)
+ (staff-position . 0)
+ (stencil . ,ly:multi-measure-rest::print)
+ (thick-thickness . 6.6)
+ (Y-offset . ,ly:staff-symbol-referencer::callback)
(meta . ((class . Spanner)
- (interfaces . (multi-measure-rest-interface
+ (interfaces . (font-interface
multi-measure-interface
+ multi-measure-rest-interface
rest-interface
- font-interface
staff-symbol-referencer-interface))))))
(MultiMeasureRestNumber
. (
(bound-padding . 2.0)
+ (direction . ,UP)
+ (font-encoding . fetaText)
+ (padding . 0.4)
+ (self-alignment-X . ,CENTER)
+ (side-axis . ,Y)
(springs-and-rods . ,ly:multi-measure-rest::set-text-rods)
+ (staff-padding . 0.4)
(stencil . ,ly:text-interface::print)
(X-offset . ,(ly:make-simple-closure
`(,+
,(ly:make-simple-closure
(list ly:self-alignment-interface::x-centered-on-y-parent)))))
(Y-offset . ,ly:side-position-interface::y-aligned-side)
- (side-axis . ,Y)
- (self-alignment-X . ,CENTER)
- (direction . ,UP)
- (padding . 0.4)
- (staff-padding . 0.4)
- (font-encoding . fetaNumber)
(meta . ((class . Spanner)
- (interfaces . (side-position-interface
+ (interfaces . (font-interface
multi-measure-interface
self-alignment-interface
- font-interface
+ side-position-interface
text-interface))))))
(MultiMeasureRestText
. (
+ (direction . ,UP)
+ (outside-staff-priority . 450)
+ (padding . 0.2)
+ (self-alignment-X . ,CENTER)
+ (staff-padding . 0.25)
(stencil . ,ly:text-interface::print)
(X-offset . ,(ly:make-simple-closure
`(,+
,(ly:make-simple-closure
(list ly:self-alignment-interface::x-aligned-on-self)))))
(Y-offset . ,ly:side-position-interface::y-aligned-side)
- (self-alignment-X . ,CENTER)
- (direction . ,UP)
- (padding . 0.2)
- (staff-padding . 0.25)
- (outside-staff-priority . 450)
(meta . ((class . Spanner)
- (interfaces . (side-position-interface
+ (interfaces . (font-interface
multi-measure-interface
self-alignment-interface
- font-interface
+ side-position-interface
text-interface))))))
(allow-loose-spacing . #t)
(axes . (,X))
(before-line-breaking . ,ly:paper-column::before-line-breaking)
- (X-extent . ,ly:axis-group-interface::width)
+ (full-measure-extra-space . 1.0)
(horizontal-skylines . ,ly:separation-item::calc-skylines)
;; (stencil . ,ly:paper-column::print)
-
- (non-musical . #t)
+
(line-break-permission . allow)
+ (non-musical . #t)
(page-break-permission . allow)
- (full-measure-extra-space . 1.0)
;; debugging stuff: print column number.
;; (font-size . -6) (font-name . "sans") (Y-extent . #f)
+ (X-extent . ,ly:axis-group-interface::width)
(meta . ((class . Paper_column)
- (interfaces . (paper-column-interface
- axis-group-interface
+ (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
+ (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)
+ (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items)
+ (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners)))
+ (interfaces . (axis-group-interface
+ font-interface
+ paper-column-interface
separation-item-interface
- spaceable-grob-interface
- font-interface))))))
+ spaceable-grob-interface))))))
(NoteCollision
. (
(axes . (,X ,Y))
+ (positioning-done . ,ly:note-collision-interface::calc-positioning-done)
+ (prefer-dotted-right . #t)
(X-extent . ,ly:axis-group-interface::width)
(Y-extent . ,ly:axis-group-interface::height)
- (prefer-dotted-right . #t)
- (positioning-done . ,ly:note-collision-interface::calc-positioning-done)
(meta . ((class . Item)
- (interfaces . (note-collision-interface
- axis-group-interface))))))
+ (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
+ (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)
+ (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items)
+ (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners)))
+ (interfaces . (axis-group-interface
+ note-collision-interface))))))
(NoteColumn
. (
(axes . (,X ,Y))
+ (horizontal-skylines . ,ly:separation-item::calc-skylines)
(X-extent . ,ly:axis-group-interface::width)
(Y-extent . ,ly:axis-group-interface::height)
- (horizontal-skylines . ,ly:separation-item::calc-skylines)
(meta . ((class . Item)
+ (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
+ (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)
+ (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items)
+ (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners)))
(interfaces . (axis-group-interface
- separation-item-interface
- note-column-interface))))))
+ note-column-interface
+ separation-item-interface))))))
(NoteHead
. (
- (stencil . ,ly:note-head::print)
(duration-log . ,note-head::calc-duration-log)
- (stem-attachment . ,ly:note-head::calc-stem-attachment)
+ (extra-spacing-height . ,ly:note-head::include-ledger-line-height)
(glyph-name . ,note-head::calc-glyph-name)
- (Y-offset . ,ly:staff-symbol-referencer::callback)
+ (stem-attachment . ,ly:note-head::calc-stem-attachment)
+ (stencil . ,ly:note-head::print)
(X-offset . ,ly:note-head::stem-x-shift)
+ (Y-offset . ,ly:staff-symbol-referencer::callback)
(meta . ((class . Item)
- (interfaces . (rhythmic-grob-interface
- rhythmic-head-interface
- font-interface
- note-head-interface
- ledgered-interface
- staff-symbol-referencer-interface
+ (interfaces . (font-interface
gregorian-ligature-interface
+ ledgered-interface
mensural-ligature-interface
+ note-head-interface
+ rhythmic-grob-interface
+ rhythmic-head-interface
+ staff-symbol-referencer-interface
vaticana-ligature-interface))))))
+ (NoteName
+ . (
+ (stencil . ,ly:text-interface::print)
+ (meta . ((class . Item)
+ (interfaces . (font-interface
+ note-name-interface
+ text-interface))))))
+
(NoteSpacing
. (
- (stem-spacing-correction . 0.5)
- (same-direction-correction . 0.25)
- (space-to-barline . #t)
;; Changed this from 0.75.
;; If you ever change this back, please document! --hwn
(knee-spacing-correction . 1.0)
+ (same-direction-correction . 0.25)
+ (space-to-barline . #t)
+ (stem-spacing-correction . 0.5)
(meta . ((class . Item)
- (interfaces . (spacing-interface
- note-spacing-interface))))))
-
- (NoteName
- . (
- (stencil . ,ly:text-interface::print)
- (meta . ((class . Item)
- (interfaces . (note-name-interface
- text-interface
- font-interface))))))
+ (interfaces . (note-spacing-interface
+ spacing-interface))))))
(OctavateEight
. (
- (self-alignment-X . ,CENTER)
(break-visibility . ,begin-of-line-visible)
+ (font-shape . italic)
+ (font-size . -4)
+ (self-alignment-X . ,CENTER)
+ (staff-padding . 0.2)
+ (stencil . ,ly:text-interface::print)
(X-offset . ,(ly:make-simple-closure
`(,+
,(ly:make-simple-closure
(list ly:self-alignment-interface::x-aligned-on-self))
,(ly:make-simple-closure
- (list ly:self-alignment-interface::centered-on-x-parent)))))
+ (list ly:self-alignment-interface::centered-on-x-parent)))))
(Y-offset . ,ly:side-position-interface::y-aligned-side)
- (stencil . ,ly:text-interface::print)
- (font-shape . italic)
- (staff-padding . 0.2)
- (font-size . -4)
(meta . ((class . Item)
- (interfaces . (text-interface
+ (interfaces . (font-interface
self-alignment-interface
side-position-interface
- font-interface))))))
+ text-interface))))))
(OttavaBracket
. (
- (Y-offset . ,ly:side-position-interface::y-aligned-side)
- (stencil . ,ly:ottava-bracket::print)
+ (dash-fraction . 0.3)
+ (direction . ,UP)
+ (edge-height . (0 . 1.2))
(font-shape . italic)
+ (minimum-length . 1.0)
+ (outside-staff-priority . 400)
+ (padding . 0.5)
(shorten-pair . (0.0 . -0.6))
(staff-padding . 1.0)
- (padding . 0.5)
- (minimum-length . 1.0)
+ (stencil . ,ly:ottava-bracket::print)
(style . dashed-line)
- (dash-fraction . 0.3)
- (edge-height . (0 . 1.2))
- (direction . ,UP)
- (outside-staff-priority . 400)
+ (Y-offset . ,ly:side-position-interface::y-aligned-side)
(meta . ((class . Spanner)
- (interfaces . (ottava-bracket-interface
+ (interfaces . (font-interface
horizontal-bracket-interface
line-interface
+ ottava-bracket-interface
side-position-interface
- font-interface
text-interface))))))
(PaperColumn
. (
- (axes . (,X))
(allow-loose-spacing . #t)
+ (axes . (,X))
(before-line-breaking . ,ly:paper-column::before-line-breaking)
(horizontal-skylines . ,ly:separation-item::calc-skylines)
;; (stencil . ,ly:paper-column::print)
(X-extent . ,ly:axis-group-interface::width)
-
+
;; debugging
;; (font-size . -6) (font-name . "sans") (Y-extent . #f)
(meta . ((class . Paper_column)
- (interfaces . (paper-column-interface
+ (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
+ (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)
+ (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items)
+ (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners)))
+ (interfaces . (axis-group-interface
+ font-interface
+ paper-column-interface
separation-item-interface
- axis-group-interface
- spaceable-grob-interface
- font-interface))))))
+ spaceable-grob-interface))))))
(ParenthesesItem
- . ((stencil . ,parentheses-item::print)
- (stencils . ,parentheses-item::calc-parenthesis-stencils)
+ . (
(font-size . -6)
(padding . 0.2)
+ (stencil . ,parentheses-item::print)
+ (stencils . ,parentheses-item::calc-parenthesis-stencils)
(meta . ((class . Item)
- (interfaces . (parentheses-interface font-interface))))))
-
- (HarmonicParenthesesItem
- . ((stencil . ,parentheses-item::print)
- (padding . 0)
- (stencils . ,parentheses-item::calc-angled-bracket-stencils)
- (meta . ((class . Item)
- (interfaces . (parentheses-interface font-interface))))))
-
- (PhrasingSlur
- . ((details . ,default-slur-details)
- (control-points . ,ly:slur::calc-control-points)
- (direction . ,ly:slur::calc-direction)
- (springs-and-rods . ,ly:spanner::set-spacing-rods)
- (Y-extent . ,ly:slur::height)
- (stencil . ,ly:slur::print)
- (thickness . 1.1)
- (minimum-length . 1.5)
- (height-limit . 2.0)
- (ratio . 0.333)
- (cross-staff . ,ly:slur::calc-cross-staff)
- (meta . ((class . Spanner)
- (interfaces . (slur-interface))))))
+ (interfaces . (font-interface
+ parentheses-interface))))))
(PercentRepeat
. (
+ (dot-negative-kern . 0.75)
+ (font-encoding . fetaMusic)
+ (slope . 1.0)
+ (spacing-pair . (break-alignment . staff-bar))
(springs-and-rods . ,ly:multi-measure-rest::set-spacing-rods)
(stencil . ,ly:multi-measure-rest::percent)
- (slope . 1.0)
(thickness . 0.48)
- (dot-negative-kern . 0.75)
- (font-encoding . fetaMusic)
(meta . ((class . Spanner)
- (interfaces . (multi-measure-rest-interface
- font-interface
+ (interfaces . (font-interface
+ multi-measure-rest-interface
percent-repeat-interface))))))
(PercentRepeatCounter
. (
+ (direction . ,UP)
+ (font-encoding . fetaText)
+ (font-size . -2)
+ (padding . 0.2)
+ (self-alignment-X . ,CENTER)
+ (staff-padding . 0.25)
(stencil . ,ly:text-interface::print)
(X-offset . ,(ly:make-simple-closure
`(,+
,(ly:make-simple-closure
(list ly:self-alignment-interface::x-aligned-on-self)))))
(Y-offset . ,ly:side-position-interface::y-aligned-side)
- (self-alignment-X . ,CENTER)
- (direction . ,UP)
- (padding . 0.2)
- (staff-padding . 0.25)
- (font-size . -2)
- (font-encoding . fetaNumber)
(meta . ((class . Spanner)
- (interfaces . (side-position-interface
- self-alignment-interface
+ (interfaces . (font-interface
percent-repeat-interface
- font-interface
+ self-alignment-interface
+ side-position-interface
text-interface))))))
+ (PhrasingSlur
+ . (
+ (control-points . ,ly:slur::calc-control-points)
+ (cross-staff . ,ly:slur::calc-cross-staff)
+ (details . ,default-slur-details)
+ (direction . ,ly:slur::calc-direction)
+ (height-limit . 2.0)
+ (minimum-length . 1.5)
+ (ratio . 0.333)
+ (springs-and-rods . ,ly:spanner::set-spacing-rods)
+ (stencil . ,ly:slur::print)
+ (thickness . 1.1)
+ (Y-extent . ,ly:slur::height)
+ (meta . ((class . Spanner)
+ (interfaces . (slur-interface))))))
+
;; an example of a text spanner
(PianoPedalBracket
. (
- (stencil . ,ly:piano-pedal-bracket::print)
- (style . line)
(bound-padding . 1.0)
- (direction . ,DOWN)
(bracket-flare . (0.5 . 0.5))
+ (direction . ,DOWN)
(edge-height . (1.0 . 1.0))
(shorten-pair . (0.0 . 0.0))
+ (stencil . ,ly:piano-pedal-bracket::print)
+ (style . line)
(thickness . 1.0)
(meta . ((class . Spanner)
(interfaces . (line-interface
- piano-pedal-interface
- piano-pedal-bracket-interface))))))
+ piano-pedal-bracket-interface
+ piano-pedal-interface))))))
(RehearsalMark
. (
- (stencil . ,ly:text-interface::print)
- (X-offset . ,(ly:make-simple-closure
- `(,+
+ (after-line-breaking . ,ly:side-position-interface::move-to-extremal-staff)
+ (baseline-skip . 2)
+ (break-align-symbols . (staff-bar clef))
+ (break-visibility . ,end-of-line-invisible)
+ (direction . ,UP)
+ (extra-spacing-width . (+inf.0 . -inf.0))
+ (font-size . 2)
+ (non-musical . #t)
+ (outside-staff-priority . 1500)
+ (padding . 0.8)
+ (self-alignment-X . ,CENTER)
+ (stencil . ,ly:text-interface::print)
+ (X-offset . ,(ly:make-simple-closure
+ `(,+
,(ly:make-simple-closure
(list ly:break-alignable-interface::self-align-callback))
,(ly:make-simple-closure
(list ly:self-alignment-interface::x-aligned-on-self)))))
(Y-offset . ,ly:side-position-interface::y-aligned-side)
- (extra-spacing-width . (+inf.0 . -inf.0))
- (self-alignment-X . ,CENTER)
- (direction . ,UP)
- (non-musical . #t)
- (font-size . 2)
- (baseline-skip . 2)
- (break-visibility . ,end-of-line-invisible)
- (break-align-symbols . (staff-bar clef))
- (padding . 0.8)
- (outside-staff-priority . 1500)
(meta . ((class . Item)
- (interfaces . (text-interface
- side-position-interface
- break-alignable-interface
+ (interfaces . (break-alignable-interface
font-interface
mark-interface
- self-alignment-interface))))))
+ self-alignment-interface
+ side-position-interface
+ text-interface))))))
(RepeatSlash
. (
+ (slope . 1.7)
(stencil . ,ly:percent-repeat-item-interface::beat-slash)
(thickness . 0.48)
- (slope . 1.7)
(meta . ((class . Item)
- (interfaces . (rhythmic-grob-interface
- percent-repeat-interface
- percent-repeat-item-interface))))))
+ (interfaces . (percent-repeat-interface
+ percent-repeat-item-interface
+ rhythmic-grob-interface))))))
(RepeatTie
. (
- (stencil . ,ly:tie::print)
(control-points . ,ly:semi-tie::calc-control-points)
- (direction . ,ly:tie::calc-direction)
(details . ((ratio . 0.333)
(height-limit . 1.0)))
- (thickness . 1.0)
+ (direction . ,ly:tie::calc-direction)
(head-direction . ,RIGHT)
+ (stencil . ,ly:tie::print)
+ (thickness . 1.0)
+ (extra-spacing-height . (-0.5 . 0.5))
(meta . ((class . Item)
(interfaces . (semi-tie-interface))))))
(RepeatTieColumn
. (
- (X-extent . #f)
- (Y-extent . #f)
(direction . ,ly:tie::calc-direction)
(head-direction . ,ly:semi-tie-column::calc-head-direction)
-
(positioning-done . ,ly:semi-tie-column::calc-positioning-done)
+ (X-extent . #f)
+ (Y-extent . #f)
(meta . ((class . Item)
(interfaces . (semi-tie-column-interface))))))
(Rest
. (
- (stencil . ,ly:rest::print)
+ (cross-staff . ,ly:rest::calc-cross-staff)
(duration-log . ,stem::calc-duration-log)
+ (minimum-distance . 0.25)
+ (stencil . ,ly:rest::print)
(X-extent . ,ly:rest::width)
(Y-extent . ,ly:rest::height)
(Y-offset . ,ly:rest::y-offset-callback)
- (minimum-distance . 0.25)
- (cross-staff . ,ly:rest::calc-cross-staff)
(meta . ((class . Item)
(interfaces . (font-interface
- rhythmic-head-interface
+ rest-interface
rhythmic-grob-interface
- staff-symbol-referencer-interface
- rest-interface))))))
+ rhythmic-head-interface
+ staff-symbol-referencer-interface))))))
(RestCollision
. (
(Script
. (
- ;; don't set direction here: it breaks staccato.
+ (add-stem-support . #t)
+ (cross-staff . ,ly:script-interface::calc-cross-staff)
+ (direction . ,ly:script-interface::calc-direction)
+ (font-encoding . fetaMusic)
+ (positioning-done . ,ly:script-interface::calc-positioning-done)
+ (side-axis . ,Y)
;; padding set in script definitions.
(staff-padding . 0.25)
- (X-offset . ,script-interface::calc-x-offset)
- (Y-offset . ,ly:side-position-interface::y-aligned-side)
- (side-axis . ,Y)
(stencil . ,ly:script-interface::print)
- (direction . ,ly:script-interface::calc-direction)
- (positioning-done . ,ly:script-interface::calc-positioning-done)
- (font-encoding . fetaMusic)
- (cross-staff . ,ly:script-interface::calc-cross-staff)
+ (X-offset . ,script-interface::calc-x-offset)
+ (Y-offset . ,ly:side-position-interface::y-aligned-side)
(meta . ((class . Item)
- (interfaces . (script-interface
- side-position-interface
- font-interface))))))
+ (interfaces . (font-interface
+ script-interface
+ side-position-interface))))))
(ScriptColumn
. (
(meta . ((class . Item)
(interfaces . (script-column-interface))))))
- (SeparationItem
- . (
- (avoid-slur . inside)
- (X-extent . ,ly:axis-group-interface::width)
- (Y-extent . ,ly:axis-group-interface::height)
- (horizontal-skylines . ,ly:separation-item::calc-skylines)
- (stencil . ,ly:separation-item::print)
- (meta . ((class . Item)
- (interfaces . (separation-item-interface))))))
-
(Slur
. (
- (details . ,default-slur-details)
+ (avoid-slur . inside)
(control-points . ,ly:slur::calc-control-points)
+ (cross-staff . ,ly:slur::calc-cross-staff)
+ (details . ,default-slur-details)
(direction . ,ly:slur::calc-direction)
- (springs-and-rods . ,ly:spanner::set-spacing-rods)
- (Y-extent . ,ly:slur::height)
- (stencil . ,ly:slur::print)
- (thickness . 1.2)
+ (height-limit . 2.0)
(line-thickness . 0.8)
(minimum-length . 1.5)
- (height-limit . 2.0)
(ratio . 0.25)
- (avoid-slur . inside)
- (cross-staff . ,ly:slur::calc-cross-staff)
+ (springs-and-rods . ,ly:spanner::set-spacing-rods)
+ (stencil . ,ly:slur::print)
+ (thickness . 1.2)
+ (Y-extent . ,ly:slur::height)
(meta . ((class . Spanner)
(interfaces . (slur-interface))))))
(SostenutoPedal
. (
- (stencil . ,ly:text-interface::print)
(direction . ,RIGHT)
- (X-offset . ,ly:self-alignment-interface::x-aligned-on-self)
(extra-spacing-width . (+inf.0 . -inf.0))
- (padding . 0.0) ;; padding relative to SostenutoPedalLineSpanner
(font-shape . italic)
+ (padding . 0.0) ;; padding relative to SostenutoPedalLineSpanner
(self-alignment-X . ,CENTER)
+ (stencil . ,ly:text-interface::print)
+ (X-offset . ,ly:self-alignment-interface::x-aligned-on-self)
(meta . ((class . Item)
- (interfaces . (text-interface
- self-alignment-interface
+ (interfaces . (font-interface
piano-pedal-script-interface
- font-interface))))))
+ self-alignment-interface
+ text-interface))))))
(SostenutoPedalLineSpanner
. (
(axes . (,Y))
- (Y-extent . ,ly:axis-group-interface::height)
- (X-extent . ,ly:axis-group-interface::width)
- (Y-offset . ,ly:side-position-interface::y-aligned-side)
+ (direction . ,DOWN)
+ (minimum-space . 1.0)
(outside-staff-priority . 1000)
+ (padding . 1.2)
(side-axis . ,Y)
(staff-padding . 1.0)
- (padding . 1.2)
- (minimum-space . 1.0)
- (direction . ,DOWN)
+ (X-extent . ,ly:axis-group-interface::width)
+ (Y-extent . ,ly:axis-group-interface::height)
+ (Y-offset . ,ly:side-position-interface::y-aligned-side)
(meta . ((class . Spanner)
- (interfaces . (piano-pedal-interface
- axis-group-interface
+ (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
+ (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)
+ (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items)
+ (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners)))
+ (interfaces . (axis-group-interface
+ piano-pedal-interface
side-position-interface))))))
(SpacingSpanner
. (
- (springs-and-rods . ,ly:spacing-spanner::set-springs)
- (common-shortest-duration . ,ly:spacing-spanner::calc-common-shortest-duration)
(average-spacing-wishes . #t)
+ (base-shortest-duration . ,(ly:make-moment 3 16))
+ (common-shortest-duration . ,ly:spacing-spanner::calc-common-shortest-duration)
(shortest-duration-space . 2.0)
(spacing-increment . 1.2)
-
- (base-shortest-duration . ,(ly:make-moment 3 16))
+ (springs-and-rods . ,ly:spacing-spanner::set-springs)
(meta . ((class . Spanner)
(interfaces . (spacing-options-interface
spacing-spanner-interface))))))
(SpanBar
. (
+ (allow-span-bar . #t)
+ (bar-extent . ,ly:axis-group-interface::height)
+ (bar-size . ,ly:span-bar::calc-bar-size)
+ (before-line-breaking . ,ly:span-bar::before-line-breaking)
(break-align-symbol . staff-bar)
- (Y-extent . ,ly:axis-group-interface::height)
(cross-staff . #t)
- (layer . 0)
- (non-musical . #t)
- (stencil . ,ly:span-bar::print)
- (bar-size . ,ly:span-bar::calc-bar-size)
- (bar-extent . ,ly:axis-group-interface::height)
- (X-extent . ,ly:span-bar::width)
(glyph-name . ,ly:span-bar::calc-glyph-name)
- (before-line-breaking . ,ly:span-bar::before-line-breaking)
- (allow-span-bar . #t)
-
- ;; ugh duplication!
+ ;; ugh duplication! (these 4 properties were copied from Barline)
;;
;; Ross. page 151 lists other values, we opt for a leaner look
;;
(thin-kern . 3.0)
(hair-thickness . 1.6)
(thick-thickness . 6.0)
+
+ (layer . 0)
+ (non-musical . #t)
+ (stencil . ,ly:span-bar::print)
+ (X-extent . ,ly:span-bar::width)
+ (Y-extent . ,ly:axis-group-interface::height)
(meta . ((class . Item)
- (interfaces . (span-bar-interface
+ (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
+ (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)
+ (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items)
+ (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners)))
+ (interfaces . (bar-line-interface
font-interface
- bar-line-interface))))))
+ span-bar-interface))))))
- (StanzaNumber
+ (StaffGrouper
. (
- (stencil . ,ly:text-interface::print)
- (font-series . bold)
- (padding . 1.0)
- (X-offset . ,ly:side-position-interface::x-aligned-side)
- (side-axis . ,X)
- (direction . ,LEFT)
- (meta . ((class . Item)
- (interfaces . (side-position-interface
- stanza-number-interface
- text-interface
- font-interface))))))
+ (between-staff-spacing . ((space . 9)
+ (minimum-distance . 7)
+ (padding . 1)))
+ (after-last-staff-spacing . ((space . 10.5)
+ (minimum-distance . 8)
+ (padding . 1)))
+ (meta . ((class . Spanner)
+ (interfaces . (staff-grouper-interface))))))
(StaffSpacing
. (
(meta . ((class . Item)
(interfaces . (spacing-interface
staff-spacing-interface))))))
-
+
(StaffSymbol
. (
- (Y-extent . ,ly:staff-symbol::height)
- (stencil . ,ly:staff-symbol::print)
- (line-count . 5)
- (ledger-line-thickness . (1.0 . 0.1))
(layer . 0)
+ (ledger-line-thickness . (1.0 . 0.1))
+ (line-count . 5)
+ (stencil . ,ly:staff-symbol::print)
+ (Y-extent . ,ly:staff-symbol::height)
(meta . ((class . Spanner)
(interfaces . (staff-symbol-interface))))))
- (Stem
+ (StanzaNumber
. (
- (direction . ,ly:stem::calc-direction)
- (duration-log . ,stem::calc-duration-log)
- (default-direction . ,ly:stem::calc-default-direction)
- (stem-end-position . ,ly:stem::calc-stem-end-position)
+ (direction . ,LEFT)
+ (font-series . bold)
+ (padding . 1.0)
+ (side-axis . ,X)
+ (stencil . ,ly:text-interface::print)
+ (X-offset . ,ly:side-position-interface::x-aligned-side)
+ (meta . ((class . Item)
+ (interfaces . (font-interface
+ side-position-interface
+ stanza-number-interface
+ text-interface))))))
- (neutral-direction . ,DOWN)
- (stem-info . ,ly:stem::calc-stem-info)
- (positioning-done . ,ly:stem::calc-positioning-done)
- (stencil . ,ly:stem::print)
- (X-extent . ,ly:stem::width)
- (Y-extent . ,ly:stem::height)
- (length . ,ly:stem::calc-length)
- (thickness . 1.3)
- (cross-staff . ,ly:stem::calc-cross-staff)
- (flag . ,ly:stem::calc-flag)
+ (Stem
+ . (
(beamlet-default-length . (1.1 . 1.1))
(beamlet-max-length-proportion . (0.75 . 0.75))
+ (cross-staff . ,ly:stem::calc-cross-staff)
+ (default-direction . ,ly:stem::calc-default-direction)
(details
. (
;; 3.5 (or 3 measured from note head) is standard length
;; We use the normal minima as minimum for the ideal lengths,
;; and the extreme minima as abolute minimum length.
+ (direction . ,ly:stem::calc-direction)
+ (duration-log . ,stem::calc-duration-log)
+ (flag . ,ly:stem::calc-flag)
+ (length . ,ly:stem::calc-length)
+ (neutral-direction . ,DOWN)
+ (positioning-done . ,ly:stem::calc-positioning-done)
+ (stem-end-position . ,ly:stem::calc-stem-end-position)
+ (stem-info . ,ly:stem::calc-stem-info)
+ (stencil . ,ly:stem::print)
+ (thickness . 1.3)
+ (X-extent . ,ly:stem::width)
(X-offset . ,ly:stem::offset-callback)
+ (Y-extent . ,ly:stem::height)
(Y-offset . ,ly:staff-symbol-referencer::callback)
(meta . ((class . Item)
- (interfaces . (stem-interface
- font-interface))))))
+ (interfaces . (font-interface
+ stem-interface))))))
(StemTremolo
. (
- (Y-extent . ,ly:stem-tremolo::height)
- (X-extent . ,ly:stem-tremolo::width)
- (stencil . ,ly:stem-tremolo::print)
- (slope . ,ly:stem-tremolo::calc-slope)
- (beam-width . ,ly:stem-tremolo::calc-width) ; staff-space
- (style . ,ly:stem-tremolo::calc-style)
(beam-thickness . 0.48) ; staff-space
+ (beam-width . ,ly:stem-tremolo::calc-width) ; staff-space
+ (slope . ,ly:stem-tremolo::calc-slope)
+ (stencil . ,ly:stem-tremolo::print)
+ (style . ,ly:stem-tremolo::calc-style)
+ (X-extent . ,ly:stem-tremolo::width)
+ (Y-extent . ,ly:stem-tremolo::height)
(meta . ((class . Item)
(interfaces . (stem-tremolo-interface))))))
(StringNumber
. (
- (stencil . ,print-circled-text-callback)
- (text . ,string-number::calc-text)
+ (avoid-slur . around)
+ (font-encoding . fetaText)
+ (font-size . -5) ; don't overlap when next to heads.
(padding . 0.5)
- (staff-padding . 0.5)
+ (script-priority . 100)
(self-alignment-X . ,CENTER)
(self-alignment-Y . ,CENTER)
- (script-priority . 100)
- (avoid-slur . around)
- (font-encoding . fetaNumber)
- (font-size . -5) ; don't overlap when next to heads.
+ (staff-padding . 0.5)
+ (stencil . ,print-circled-text-callback)
+ (text . ,string-number::calc-text)
(meta . ((class . Item)
- (interfaces . (string-number-interface
- font-interface
- text-script-interface
- text-interface
+ (interfaces . (font-interface
+ self-alignment-interface
side-position-interface
- self-alignment-interface))))))
-
+ string-number-interface
+ text-interface
+ text-script-interface))))))
+
(StrokeFinger
. (
- (stencil . ,ly:text-interface::print)
- (text . ,stroke-finger::calc-text)
(digit-names . #("p" "i" "m" "a" "x"))
+ (font-shape . italic)
+ (font-size . -4) ; don't overlap when next to heads.
(padding . 0.5)
- (staff-padding . 0.5)
+ (script-priority . 100)
(self-alignment-X . ,CENTER)
(self-alignment-Y . ,CENTER)
- (script-priority . 100)
- (font-shape . italic)
- (font-size . -4) ; don't overlap when next to heads.
+ (staff-padding . 0.5)
+ (stencil . ,ly:text-interface::print)
+ (text . ,stroke-finger::calc-text)
(meta . ((class . Item)
- (interfaces . (stroke-finger-interface
- font-interface
- text-script-interface
- text-interface
+ (interfaces . (font-interface
+ self-alignment-interface
side-position-interface
- self-alignment-interface))))))
+ stroke-finger-interface
+ text-interface
+ text-script-interface))))))
(SustainPedal
. (
- (extra-spacing-width . (+inf.0 . -inf.0))
- (stencil . ,ly:sustain-pedal::print)
- (self-alignment-X . ,CENTER)
(direction . ,RIGHT)
+ (extra-spacing-width . (+inf.0 . -inf.0))
(padding . 0.0) ;; padding relative to SustainPedalLineSpanner
+ (self-alignment-X . ,CENTER)
+ (stencil . ,ly:sustain-pedal::print)
(X-offset . ,ly:self-alignment-interface::x-aligned-on-self)
(meta . ((class . Item)
- (interfaces . (piano-pedal-interface
- text-interface
- self-alignment-interface
+ (interfaces . (font-interface
+ piano-pedal-interface
piano-pedal-script-interface
- font-interface))))))
+ self-alignment-interface
+ text-interface))))))
(SustainPedalLineSpanner
. (
(axes . (,Y))
- (Y-extent . ,ly:axis-group-interface::height)
- (X-extent . ,ly:axis-group-interface::width)
- (Y-offset . ,ly:side-position-interface::y-aligned-side)
+ (direction . ,DOWN)
+ (minimum-space . 1.0)
(outside-staff-priority . 1000)
- (side-axis . ,Y)
(padding . 1.2)
+ (side-axis . ,Y)
(staff-padding . 1.2)
- (minimum-space . 1.0)
- (direction . ,DOWN)
+ (X-extent . ,ly:axis-group-interface::width)
+ (Y-extent . ,ly:axis-group-interface::height)
+ (Y-offset . ,ly:side-position-interface::y-aligned-side)
(meta . ((class . Spanner)
- (interfaces . (piano-pedal-interface
- axis-group-interface
+ (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
+ (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)
+ (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items)
+ (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners)))
+ (interfaces . (axis-group-interface
+ piano-pedal-interface
side-position-interface))))))
(System
. (
+ (adjacent-pure-heights . ,ly:axis-group-interface::adjacent-pure-heights)
(axes . (,X ,Y))
- (X-extent . ,ly:axis-group-interface::width)
- (Y-extent . ,ly:axis-group-interface::height)
(vertical-skylines . ,ly:axis-group-interface::calc-skylines)
- (max-stretch . ,ly:axis-group-interface::calc-max-stretch)
+ (X-extent . ,ly:axis-group-interface::width)
+ (Y-extent . ,ly:system::height)
(meta . ((class . System)
- (interfaces . (system-interface
- axis-group-interface))))))
+ (object-callbacks . ((pure-relevant-grobs . ,ly:system::calc-pure-relevant-grobs)
+ (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items)
+ (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners)
+ (pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)))
+ (interfaces . (axis-group-interface
+ system-interface))))))
- (SystemStartBrace
+ (SystemStartBar
. (
- (style . brace)
- (padding . 0.3)
- (stencil . ,ly:system-start-delimiter::print)
(collapse-height . 5.0)
- (X-offset . ,ly:side-position-interface::x-aligned-side)
(direction . ,LEFT)
- (font-encoding . fetaBraces)
+
+ ;; ugh--hardcoded.
+ (padding . -0.1) ;; bar must cover rounded ending of staff line.
+ (stencil . ,ly:system-start-delimiter::print)
+ (style . bar-line)
+ (thickness . 1.6)
+ (X-offset . ,ly:side-position-interface::x-aligned-side)
(Y-extent . #f)
(meta . ((class . Spanner)
- (interfaces . (system-start-delimiter-interface
- side-position-interface
- font-interface))))))
+ (interfaces . (side-position-interface
+ system-start-delimiter-interface))))))
- (SystemStartSquare
+ (SystemStartBrace
. (
- (Y-extent . #f)
- (X-offset . ,ly:side-position-interface::x-aligned-side)
+ (collapse-height . 5.0)
(direction . ,LEFT)
+ (font-encoding . fetaBraces)
+ (padding . 0.3)
(stencil . ,ly:system-start-delimiter::print)
- (style . line-bracket)
- (thickness . 1.0)
+ (style . brace)
+ (X-offset . ,ly:side-position-interface::x-aligned-side)
+ (Y-extent . #f)
(meta . ((class . Spanner)
(interfaces . (font-interface
side-position-interface
(SystemStartBracket
. (
- (Y-extent . #f)
- (padding . 0.8)
- (X-offset . ,ly:side-position-interface::x-aligned-side)
+ (collapse-height . 5.0)
(direction . ,LEFT)
+ (padding . 0.8)
(stencil . ,ly:system-start-delimiter::print)
(style . bracket)
- (collapse-height . 5.0)
(thickness . 0.45)
+ (X-offset . ,ly:side-position-interface::x-aligned-side)
+ (Y-extent . #f)
(meta . ((class . Spanner)
(interfaces . (font-interface
side-position-interface
system-start-delimiter-interface))))))
- (SystemStartBar
+ (SystemStartSquare
. (
- (Y-extent . #f)
-
- ;; ugh--hardcoded.
- (padding . -0.1) ;; bar must cover rounded ending of staff line.
- (X-offset . ,ly:side-position-interface::x-aligned-side)
(direction . ,LEFT)
- (style . bar-line)
- (collapse-height . 5.0)
- (thickness . 1.6)
(stencil . ,ly:system-start-delimiter::print)
+ (style . line-bracket)
+ (thickness . 1.0)
+ (X-offset . ,ly:side-position-interface::x-aligned-side)
+ (Y-extent . #f)
(meta . ((class . Spanner)
- (interfaces . (side-position-interface
+ (interfaces . (font-interface
+ side-position-interface
system-start-delimiter-interface))))))
(TabNoteHead
. (
- (stencil . ,ly:text-interface::print)
- (duration-log . ,note-head::calc-duration-log)
- (Y-offset . ,ly:staff-symbol-referencer::callback)
- (X-offset . ,ly:self-alignment-interface::x-aligned-on-self)
+ (details . ((tied-properties . ((break-visibility . ,begin-of-line-visible)
+ (parenthesize . #t)))
+ (repeat-tied-properties . ((note-head-visible . #t)
+ (parenthesize . #t)))))
(direction . ,CENTER)
+ (duration-log . ,note-head::calc-duration-log)
+ (font-series . bold)
(font-size . -2)
(stem-attachment . (0.0 . 1.35))
- (font-series . bold)
+ (stencil . ,ly:text-interface::print)
+ (whiteout . #t)
+ (X-offset . ,ly:self-alignment-interface::x-aligned-on-self)
+ (Y-offset . ,ly:staff-symbol-referencer::callback)
(meta . ((class . Item)
- (interfaces . (rhythmic-head-interface
- font-interface
- rhythmic-grob-interface
+ (interfaces . (font-interface
note-head-interface
+ rhythmic-grob-interface
+ rhythmic-head-interface
staff-symbol-referencer-interface
+ tab-note-head-interface
text-interface))))))
(TextScript
. (
- (extra-spacing-width . (+inf.0 . -inf.0))
- (X-offset . ,ly:self-alignment-interface::x-aligned-on-self)
- (Y-offset . ,ly:side-position-interface::y-aligned-side)
- (side-axis . ,Y)
+ (avoid-slur . around)
+ (cross-staff . ,ly:script-interface::calc-cross-staff)
(direction . ,DOWN)
+ (direction . ,ly:script-interface::calc-direction)
+ (extra-spacing-width . (+inf.0 . -inf.0))
+ (outside-staff-priority . 450)
;; sync with Fingering ?
(padding . 0.5)
- (staff-padding . 0.5)
- (stencil . ,ly:text-interface::print)
- (direction . ,ly:script-interface::calc-direction)
(positioning-done . ,ly:script-interface::calc-positioning-done)
-
- (outside-staff-priority . 450)
- (avoid-slur . around)
- (slur-padding . 0.5)
(script-priority . 200)
- (cross-staff . ,ly:script-interface::calc-cross-staff)
+ (side-axis . ,Y)
+ (slur-padding . 0.5)
+ (staff-padding . 0.5)
+ (stencil . ,ly:text-interface::print)
;; todo: add X self alignment?
+ (X-offset . ,ly:self-alignment-interface::x-aligned-on-self)
+ (Y-offset . ,ly:side-position-interface::y-aligned-side)
(meta . ((class . Item)
- (interfaces . (text-script-interface
- text-interface
+ (interfaces . (font-interface
instrument-specific-markup-interface
- side-position-interface
self-alignment-interface
- font-interface))))))
+ side-position-interface
+ text-interface
+ text-script-interface))))))
(TextSpanner
. (
- (Y-offset . ,ly:side-position-interface::y-aligned-side)
- (font-shape . italic)
- (style . dashed-line)
- (staff-padding . 0.8)
- (dash-fraction . 0.2)
- (dash-period . 3.0)
- (side-axis . ,Y)
- (direction . ,UP)
- (outside-staff-priority . 350)
-
- (left-bound-info . ,ly:line-spanner::calc-left-bound-info)
- (right-bound-info . ,ly:line-spanner::calc-right-bound-info)
(bound-details . ((left . ((Y . 0)
(padding . 0.25)
(attach-dir . ,LEFT)
))
+ (left-broken . ((end-on-note . #t)))
(right . ((Y . 0)
(padding . 0.25)
))
))
+ (dash-fraction . 0.2)
+ (dash-period . 3.0)
+ (direction . ,UP)
+ (font-shape . italic)
+ (left-bound-info . ,ly:line-spanner::calc-left-bound-info)
+ (outside-staff-priority . 350)
+ (right-bound-info . ,ly:line-spanner::calc-right-bound-info)
+ (side-axis . ,Y)
+ (staff-padding . 0.8)
(stencil . ,ly:line-spanner::print)
+ (style . dashed-line)
+ (Y-offset . ,ly:side-position-interface::y-aligned-side)
(meta . ((class . Spanner)
- (interfaces . (line-spanner-interface
+ (interfaces . (font-interface
line-interface
- side-position-interface
- font-interface))))))
+ line-spanner-interface
+ side-position-interface))))))
(Tie
. (
- (control-points . ,ly:tie::calc-control-points)
- (springs-and-rods . ,ly:spanner::set-spacing-rods)
(avoid-slur . inside)
- (direction . ,ly:tie::calc-direction)
- (neutral-direction . ,UP)
- (stencil . ,ly:tie::print)
- (font-size . -6)
+ (control-points . ,ly:tie::calc-control-points)
(details . (
;; for a full list, see tie-details.cc
(ratio . 0.333)
(horizontal-distance-penalty-factor . 10)
(same-dir-as-stem-penalty . 8)
(min-length-penalty-factor . 26)
- (tie-tie-collision-distance . 0.45)
+ (tie-tie-collision-distance . 0.45)
(tie-tie-collision-penalty . 25.0)
(intra-space-threshold . 1.25)
(outer-tie-vertical-distance-symmetry-penalty-factor . 10)
(multi-tie-region-size . 3)
(single-tie-region-size . 4)
(between-length-limit . 1.0)))
-
+
+ (direction . ,ly:tie::calc-direction)
+ (font-size . -6)
+ (line-thickness . 0.8)
+ (neutral-direction . ,UP)
+ (springs-and-rods . ,ly:spanner::set-spacing-rods)
+ (stencil . ,ly:tie::print)
(thickness . 1.2)
- (line-thickness . 0.8)
(meta . ((class . Spanner)
(interfaces . (tie-interface))))))
(TieColumn
. (
- (positioning-done . ,ly:tie-column::calc-positioning-done)
(before-line-breaking . ,ly:tie-column::before-line-breaking)
+ (positioning-done . ,ly:tie-column::calc-positioning-done)
(X-extent . #f)
(Y-extent . #f)
(meta . ((class . Spanner)
(TimeSignature
. (
- (stencil . ,ly:time-signature::print)
- (break-align-symbol . time-signature)
+ (avoid-slur . inside)
(break-align-anchor
. ,ly:break-aligned-interface::calc-extent-aligned-anchor)
+ (break-align-symbol . time-signature)
+ (break-align-anchor-alignment . ,LEFT)
(break-visibility . ,all-visible)
- (avoid-slur . inside)
(extra-spacing-height . (-1.0 . 1.0))
+ (non-musical . #t)
(space-alist . (
(first-note . (fixed-space . 2.0))
(right-edge . (extra-space . 0.5))
(staff-bar . (minimum-space . 2.0))))
- (non-musical . #t)
+ (stencil . ,ly:time-signature::print)
(style . C)
(meta . ((class . Item)
- (interfaces . (time-signature-interface
- break-aligned-interface
- font-interface))))))
-
- (TrillSpanner
- . (
- (left-bound-info . ,ly:line-spanner::calc-left-bound-info)
- (right-bound-info . ,ly:line-spanner::calc-right-bound-info)
-
- (bound-details . ((left . ((text . ,(make-translate-scaled-markup
- '(0.0 . -1.0)
- (make-musicglyph-markup "scripts.trill")))
- (Y . 0)
- (stencil-offset . (-0.5 . 0))
- (padding . 1.5)
- (attach-dir . ,CENTER)
- ;; this isn't CENTER because the trill glyph's origin
- ;; is not centered in its extent; to have the trill
- ;; spanner aligned the same as a trill, we need a slight offset
- (anchor-alignment . 0.15)
- ))
- (left-broken . ((end-on-note . #t)))
- (right . ((Y . 0)))
- ))
-
- (stencil . ,ly:line-spanner::print)
- (after-line-breaking . ,ly:spanner::kill-zero-spanned-time)
- (style . trill)
- (staff-padding . 1.0)
- (padding . 0.5)
- (direction . ,UP)
- (Y-offset . ,ly:side-position-interface::y-aligned-side)
- (side-axis . ,Y)
- (outside-staff-priority . 50)
- (meta . ((class . Spanner)
- (interfaces . (line-spanner-interface
- line-interface
- trill-spanner-interface
- side-position-interface
- font-interface))))))
+ (interfaces . (break-aligned-interface
+ font-interface
+ time-signature-interface))))))
(TrillPitchAccidental
- . ((X-offset . ,ly:side-position-interface::x-aligned-side)
- (padding . 0.2)
+ . (
(direction . ,LEFT)
(font-size . -4)
+ (glyph-name-alist . ,standard-alteration-glyph-name-alist)
+ (padding . 0.2)
(side-axis . ,X)
(stencil . ,ly:accidental-interface::print)
+ (X-offset . ,ly:side-position-interface::x-aligned-side)
(Y-extent . ,ly:accidental-interface::height)
- (glyph-name-alist . ,standard-alteration-glyph-name-alist)
(meta . ((class . Item)
- (interfaces . (trill-pitch-accidental-interface
- accidental-interface
+ (interfaces . (accidental-interface
+ font-interface
side-position-interface
- font-interface))))))
+ trill-pitch-accidental-interface))))))
(TrillPitchGroup
- . ((X-offset . ,ly:side-position-interface::x-aligned-side)
+ . (
(axes . (,X))
+ (direction . ,RIGHT)
(font-size . -4)
+ (padding . 0.3)
+ (side-axis . ,X)
(stencil . ,parenthesize-elements)
(stencils . ,parentheses-item::calc-parenthesis-stencils)
- (direction . ,RIGHT)
- (side-axis . ,X)
- (padding . 0.3)
+ (X-offset . ,ly:side-position-interface::x-aligned-side)
(meta . ((class . Item)
- (interfaces . (side-position-interface
- parentheses-interface
- note-head-interface
+ (interfaces . (axis-group-interface
font-interface
- axis-group-interface))))))
+ note-head-interface
+ parentheses-interface
+ side-position-interface))))))
(TrillPitchHead
. (
- (stencil . ,ly:note-head::print)
(duration-log . 2)
- (Y-offset . ,ly:staff-symbol-referencer::callback)
(font-size . -4)
+ (stencil . ,ly:note-head::print)
+ (Y-offset . ,ly:staff-symbol-referencer::callback)
(meta . ((class . Item)
- (interfaces . (rhythmic-head-interface
- font-interface
- pitched-trill-interface
+ (interfaces . (font-interface
ledgered-interface
+ pitched-trill-interface
+ rhythmic-head-interface
staff-symbol-referencer-interface))))))
+ (TrillSpanner
+ . (
+ (after-line-breaking . ,ly:spanner::kill-zero-spanned-time)
+ (bound-details . ((left . ((text . ,(make-musicglyph-markup "scripts.trill"))
+ (Y . 0)
+ (stencil-offset . (-0.5 . -1))
+ (padding . 0.5)
+ (attach-dir . ,CENTER)
+ ))
+ (left-broken . ((end-on-note . #t)))
+ (right . ((Y . 0)))
+ ))
+ (direction . ,UP)
+ (left-bound-info . ,ly:line-spanner::calc-left-bound-info)
+ (outside-staff-priority . 50)
+ (padding . 0.5)
+ (right-bound-info . ,ly:line-spanner::calc-right-bound-info)
+ (side-axis . ,Y)
+ (staff-padding . 1.0)
+ (stencil . ,ly:line-spanner::print)
+ (style . trill)
+ (Y-offset . ,ly:side-position-interface::y-aligned-side)
+ (meta . ((class . Spanner)
+ (interfaces . (font-interface
+ line-interface
+ line-spanner-interface
+ side-position-interface
+ trill-spanner-interface))))))
+
(TupletBracket
. (
- (padding . 1.1)
- (thickness . 1.6)
+ (connect-to-neighbor . ,ly:tuplet-bracket::calc-connect-to-neighbors)
+ (control-points . ,ly:tuplet-bracket::calc-control-points)
+ (cross-staff . ,ly:tuplet-bracket::calc-cross-staff)
+ (direction . ,ly:tuplet-bracket::calc-direction)
(edge-height . (0.7 . 0.7))
- (shorten-pair . (-0.2 . -0.2))
- (staff-padding . 0.25)
(full-length-to-extent . #t)
- (direction . ,ly:tuplet-bracket::calc-direction)
+ (padding . 1.1)
(positions . ,ly:tuplet-bracket::calc-positions)
- (connect-to-neighbor . ,ly:tuplet-bracket::calc-connect-to-neighbors)
- (control-points . ,ly:tuplet-bracket::calc-control-points)
+ (shorten-pair . (-0.2 . -0.2))
+ (staff-padding . 0.25)
(stencil . ,ly:tuplet-bracket::print)
- (cross-staff . ,ly:tuplet-bracket::calc-cross-staff)
-
+ (thickness . 1.6)
+
(meta . ((class . Spanner)
(interfaces . (line-interface
tuplet-bracket-interface))))))
(TupletNumber
. (
- (stencil . ,ly:tuplet-number::print)
- (text . ,tuplet-number::calc-denominator-text)
- (font-shape . italic)
- (font-size . -2)
(avoid-slur . inside)
(cross-staff . ,ly:tuplet-number::calc-cross-staff)
+ (font-shape . italic)
+ (font-size . -2)
+ (stencil . ,ly:tuplet-number::print)
+ (text . ,tuplet-number::calc-denominator-text)
(meta . ((class . Spanner)
- (interfaces . (text-interface tuplet-number-interface
- font-interface))))))
+ (interfaces . (font-interface
+ text-interface
+ tuplet-number-interface))))))
+
-
(UnaCordaPedal
. (
- (stencil . ,ly:text-interface::print)
- (font-shape . italic)
- (extra-spacing-width . (+inf.0 . -inf.0))
- (self-alignment-X . ,CENTER)
(direction . ,RIGHT)
+ (extra-spacing-width . (+inf.0 . -inf.0))
+ (font-shape . italic)
(padding . 0.0) ;; padding relative to UnaCordaPedalLineSpanner
+ (self-alignment-X . ,CENTER)
+ (stencil . ,ly:text-interface::print)
(X-offset . ,ly:self-alignment-interface::x-aligned-on-self)
(meta . ((class . Item)
- (interfaces . (text-interface
+ (interfaces . (font-interface
piano-pedal-script-interface
self-alignment-interface
- font-interface))))))
+ text-interface))))))
(UnaCordaPedalLineSpanner
. (
(axes . (,Y))
- (Y-extent . ,ly:axis-group-interface::height)
- (X-extent . ,ly:axis-group-interface::width)
- (Y-offset . ,ly:side-position-interface::y-aligned-side)
+ (direction . ,DOWN)
+ (minimum-space . 1.0)
(outside-staff-priority . 1000)
- (side-axis . ,Y)
(padding . 1.2)
+ (side-axis . ,Y)
(staff-padding . 1.2)
- (minimum-space . 1.0)
- (direction . ,DOWN)
+ (X-extent . ,ly:axis-group-interface::width)
+ (Y-extent . ,ly:axis-group-interface::height)
+ (Y-offset . ,ly:side-position-interface::y-aligned-side)
(meta . ((class . Spanner)
- (interfaces . (piano-pedal-interface
- axis-group-interface
+ (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
+ (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)
+ (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items)
+ (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners)))
+ (interfaces . (axis-group-interface
+ piano-pedal-interface
side-position-interface))))))
(VaticanaLigature
. (
- (thickness . 0.6)
(flexa-width . 2.0)
(stencil . ,ly:vaticana-ligature::print)
+ (thickness . 0.6)
(meta . ((class . Spanner)
- (interfaces . (vaticana-ligature-interface
- font-interface))))))
+ (interfaces . (font-interface
+ vaticana-ligature-interface))))))
(VerticalAlignment
. (
(axes . (,Y))
- (positioning-done . ,ly:align-interface::calc-positioning-done)
- (after-line-breaking . ,ly:align-interface::stretch-after-break)
- (Y-extent . ,ly:axis-group-interface::height)
- (X-extent . ,ly:axis-group-interface::width)
+ (positioning-done . ,ly:align-interface::align-to-ideal-distances)
(stacking-dir . -1)
- (padding . 0.5)
(vertical-skylines . ,ly:axis-group-interface::combine-skylines)
- (max-stretch . 0)
+ (X-extent . ,ly:axis-group-interface::width)
+ (Y-extent . ,ly:axis-group-interface::height)
(meta . ((class . Spanner)
- (object-callbacks . ((Y-common . ,ly:axis-group-interface::calc-y-common)))
+ (object-callbacks . ((Y-common . ,ly:axis-group-interface::calc-y-common)
+ (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)
+ (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items)
+ (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners)
+ (pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)))
(interfaces . (align-interface
axis-group-interface))))))
(VerticalAxisGroup
. (
+ (adjacent-pure-heights . ,ly:axis-group-interface::adjacent-pure-heights)
(axes . (,Y))
- (Y-offset . ,ly:hara-kiri-group-spanner::force-hara-kiri-callback)
- (Y-extent . ,ly:hara-kiri-group-spanner::y-extent)
- (X-extent . ,ly:axis-group-interface::width)
- (vertical-skylines . ,ly:hara-kiri-group-spanner::calc-skylines)
- (max-stretch . ,ly:axis-group-interface::calc-max-stretch)
+ (default-next-staff-spacing . ((space . 9)
+ (minimum-distance . 8)
+ (padding . 1)))
+ (next-staff-spacing . ,ly:axis-group-interface::calc-next-staff-spacing)
+ (non-affinity-spacing . ((padding . 0.5)))
(stencil . ,ly:axis-group-interface::print)
- (adjacent-pure-heights . ,ly:axis-group-interface::adjacent-pure-heights)
+ (vertical-skylines . ,ly:hara-kiri-group-spanner::calc-skylines)
+ (X-extent . ,ly:axis-group-interface::width)
+ (Y-extent . ,ly:hara-kiri-group-spanner::y-extent)
+ (Y-offset . ,ly:hara-kiri-group-spanner::force-hara-kiri-callback)
(meta . ((class . Spanner)
- (object-callbacks . ((X-common . ,ly:axis-group-interface::calc-x-common)))
+ (object-callbacks . (
+ (X-common . ,ly:axis-group-interface::calc-x-common)
+ (pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
+ (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)
+ (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items)
+ (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners)))
+
(interfaces . (axis-group-interface
- hara-kiri-group-spanner-interface
- vertically-spaceable-interface))))))
+ hara-kiri-group-spanner-interface))))))
+
+ (VoiceFollower
+ . (
+ (after-line-breaking . ,ly:spanner::kill-zero-spanned-time)
+ (bound-details . ((right . ((attach-dir . ,CENTER)
+ (padding . 1.5)
+ ))
+ (left . ((attach-dir . ,CENTER)
+ (padding . 1.5)
+ ))
+ ))
+ (gap . 0.5)
+ (left-bound-info . ,ly:line-spanner::calc-left-bound-info)
+ (non-musical . #t)
+ (right-bound-info . ,ly:line-spanner::calc-right-bound-info)
+ (stencil . ,ly:line-spanner::print)
+ (style . line)
+ (X-extent . #f)
+ (Y-extent . #f)
+ (meta . ((class . Spanner)
+ (interfaces . (line-interface
+ line-spanner-interface))))))
(VoltaBracket
. (
- (stencil . ,ly:volta-bracket-interface::print)
- (font-encoding . fetaNumber)
- (thickness . 1.6) ;; line-thickness
+ (direction . ,UP)
(edge-height . (2.0 . 2.0)) ;; staff-space;
+ (font-encoding . fetaText)
(font-size . -4)
+ (stencil . ,ly:volta-bracket-interface::print)
+ (thickness . 1.6) ;; line-thickness
(word-space . 0.6)
- (direction . ,UP)
(meta . ((class . Spanner)
- (interfaces . (volta-bracket-interface
- horizontal-bracket-interface
+ (interfaces . (font-interface
+ horizontal-bracket-interface
line-interface
- text-interface
side-position-interface
- font-interface))))))
+ text-interface
+ volta-bracket-interface
+ volta-interface))))))
(VoltaBracketSpanner
- . (
+ . (
+ (after-line-breaking . ,ly:side-position-interface::move-to-extremal-staff)
(axes . (,Y))
- (side-axis . ,Y)
(direction . ,UP)
+ (no-alignment . #t)
+ (outside-staff-priority . 600)
(padding . 1)
- (Y-offset . ,ly:side-position-interface::y-aligned-side)
- (outside-staff-priority . 100)
- (Y-extent . ,ly:axis-group-interface::height)
+ (side-axis . ,Y)
(X-extent . ,ly:axis-group-interface::width)
- (no-alignment . ,#t)
- (meta . ((class . Spanner)
- (interfaces . (side-position-interface
- axis-group-interface))))))
-
- (VoiceFollower
- . (
- (style . line)
- (gap . 0.5)
- (non-musical . #t)
- (X-extent . #f)
- (Y-extent . #f)
- (bound-details . ((right . ((attach-dir . ,CENTER)
- (padding . 1.5)
- ))
- (left . ((attach-dir . ,CENTER)
- (padding . 1.5)
- ))
- ))
- (after-line-breaking . ,ly:spanner::kill-zero-spanned-time)
- (stencil . ,ly:line-spanner::print)
- (left-bound-info . ,ly:line-spanner::calc-left-bound-info)
- (right-bound-info . ,ly:line-spanner::calc-right-bound-info)
+ (Y-extent . ,ly:axis-group-interface::height)
+ (Y-offset . ,ly:side-position-interface::y-aligned-side)
(meta . ((class . Spanner)
- (interfaces . (line-spanner-interface
- line-interface))))))
+ (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
+ (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)
+ (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items)
+ (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners)))
+ (interfaces . (axis-group-interface
+ side-position-interface
+ volta-interface))))))
))
;; (newline)
(let* ((name-sym (car x))
(grob-entry (cdr x))
- (meta-entry (cdr (assoc 'meta grob-entry)))
- (class (cdr (assoc 'class meta-entry)))
+ (meta-entry (assoc-get 'meta grob-entry))
+ (class (assoc-get 'class meta-entry))
(ifaces-entry
- (cdr (assoc 'interfaces meta-entry))))
+ (assoc-get 'interfaces meta-entry)))
(cond
((eq? 'Item class)
(set! all-grob-descriptions (sort all-grob-descriptions alist<?))
+(define (volta-bracket-interface::pure-height grob start end)
+ (let ((edge-height (ly:grob-property grob 'edge-height)))
+ (if (number-pair? edge-height)
+ (let ((smaller (min (car edge-height) (cdr edge-height)))
+ (larger (max (car edge-height) (cdr edge-height))))
+ (interval-union '(0 . 0) (cons smaller larger)))
+ '(0 . 0))))
+
(define pure-print-callbacks
(list
fret-board::calc-stencil
+ note-head::brew-ez-stencil
print-circled-text-callback
+ laissez-vibrer::print
lyric-text::print
- ly:arpeggio::print
- ly:arpeggio::brew-chord-bracket
ly:bar-line::print
ly:mensural-ligature::brew-ligature-primitive
ly:note-head::print
ly:dots::print
ly:clef::print
+ ly:percent-repeat-item-interface::beat-slash
ly:text-interface::print
- ly:script-interface::print))
+ ly:script-interface::print
+ ly:sustain-pedal::print))
+
+;; Sometimes we have grobs with (Y-extent . ,ly:grob::stencil-height)
+;; and the print function is not pure, but there is a easy way to
+;; figure out the Y-extent from the print function.
+(define pure-print-to-height-conversions
+ `(
+ (,ly:arpeggio::print . ,ly:arpeggio::pure-height)
+ (,ly:arpeggio::brew-chord-bracket . ,ly:arpeggio::pure-height)
+ (,ly:hairpin::print . ,ly:hairpin::pure-height)
+ (,ly:volta-bracket-interface::print . ,volta-bracket-interface::pure-height)))
-;; ly:grob::stencil-extent is safe iff the print callback is safe too
+;; ly:grob::stencil-extent is safe if the print callback is safe too
(define (pure-stencil-height grob start stop)
- (let ((sten (ly:grob-property-data grob 'stencil)))
- (if (or
- (ly:stencil? sten)
- (memq sten pure-print-callbacks))
- (ly:grob::stencil-height grob)
- '(0 . 0))))
+ (let* ((sten (ly:grob-property-data grob 'stencil))
+ (pure-height-callback (assoc-get sten pure-print-to-height-conversions)))
+ (cond ((or
+ (ly:stencil? sten)
+ (memq sten pure-print-callbacks))
+ (ly:grob::stencil-height grob))
+ ((procedure? pure-height-callback)
+ (pure-height-callback grob start stop))
+ (else
+ '(0 . 0)))))
+
+;; Sometimes, a pure callback will be chained to a non-pure callback via
+;; chain_offset_callback, in which case this provides a default by simply
+;; passing through the value from the pure callback.
+(define (pure-chain-offset-callback grob start end prev-offset) prev-offset)
(define pure-conversions-alist
`(
(,ly:accidental-interface::height . ,ly:accidental-interface::pure-height)
- (,ly:arpeggio::height . ,ly:arpeggio::pure-height)
- (,ly:slur::outside-slur-callback . ,ly:slur::pure-outside-slur-callback)
- (,ly:hairpin::height . ,ly:hairpin::pure-height)
- (,ly:stem::height . ,ly:stem::pure-height)
- (,ly:rest::height . ,ly:rest::pure-height)
+ (,ly:axis-group-interface::calc-next-staff-spacing . ,ly:axis-group-interface::calc-pure-next-staff-spacing)
+ (,ly:axis-group-interface::height . ,ly:axis-group-interface::pure-height)
(,ly:grob::stencil-height . ,pure-stencil-height)
+ (,ly:hara-kiri-group-spanner::y-extent . ,ly:hara-kiri-group-spanner::pure-height)
+ (,ly:rest-collision::force-shift-callback-rest . ,pure-chain-offset-callback)
+ (,ly:rest::height . ,ly:rest::pure-height)
(,ly:self-alignment-interface::y-aligned-on-self . ,ly:self-alignment-interface::pure-y-aligned-on-self)
(,ly:side-position-interface::y-aligned-side . ,ly:side-position-interface::pure-y-aligned-side)
- (,ly:axis-group-interface::height . ,ly:axis-group-interface::pure-height)
- (,ly:hara-kiri-group-spanner::y-extent . ,ly:hara-kiri-group-spanner::pure-height)
(,ly:slur::height . ,ly:slur::pure-height)
- (,ly:side-position-interface::y-aligned-side . ,ly:side-position-interface::pure-y-aligned-side)))
+ (,ly:slur::outside-slur-callback . ,ly:slur::pure-outside-slur-callback)
+ (,ly:stem::height . ,ly:stem::pure-height)
+ (,ly:system::height . ,ly:system::calc-pure-height)))
(define pure-functions
(list
parenthesize-elements
+ laissez-vibrer::print
ly:rest::y-offset-callback
ly:staff-symbol-referencer::callback
ly:staff-symbol::height))
(memq extent-callback pure-functions)
(and
(pair? (assq extent-callback pure-conversions-alist))
- (begin
+ (let ((stencil (ly:grob-property-data grob 'stencil)))
(or
(not (eq? extent-callback ly:grob::stencil-height))
- (memq (ly:grob-property-data grob 'stencil) pure-print-callbacks)
- (ly:stencil? (ly:grob-property-data grob 'stencil))
-
- ))))))))
+ (memq stencil pure-print-callbacks)
+ (assq stencil pure-print-to-height-conversions)
+ (ly:stencil? stencil)))))))))
(define-public (call-pure-function unpure args start end)
(if (ly:simple-closure? unpure)