X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Fdefine-grobs.scm;h=1b0ec25293b3b8369e8d3f0e4bc3622e949a6e6d;hb=70cc70f3a6183472b93fc4c2b4c60cc0375b6d64;hp=920aaafbf63e1a1a12d253beefc0563bdde90eaa;hpb=5383cafcc75ae088f833df0081e2b2a73a5442a1;p=lilypond.git diff --git a/scm/define-grobs.scm b/scm/define-grobs.scm index 920aaafbf6..658d2dfeb0 100644 --- a/scm/define-grobs.scm +++ b/scm/define-grobs.scm @@ -2,7 +2,7 @@ ;;;; ;;;; source file of the GNU LilyPond music typesetter ;;;; -;;;; (c) 1998--2006 Han-Wen Nienhuys +;;;; (c) 1998--2007 Han-Wen Nienhuys ;;;; Jan Nieuwenhuizen ;;;; distances are given in line-thickness (thicknesses) and @@ -20,28 +20,45 @@ (Accidental . ( (avoid-slur . inside) - (cautionary-style . parentheses) + (glyph-name-alist . ,standard-alteration-glyph-name-alist) + (alteration . ,accidental-interface::calc-alteration) (stencil . ,ly:accidental-interface::print) - (after-line-breaking - . ,ly:accidental-interface::after-line-breaking) + (Y-extent . ,ly:accidental-interface::height) + (X-extent . ,ly:accidental-interface::width) (meta . ((class . Item) (interfaces . (accidental-interface font-interface)))))) + (AccidentalCautionary + . ( + (avoid-slur . inside) + (parenthesized . #t) + (glyph-name-alist . ,standard-alteration-glyph-name-alist) + (alteration . ,accidental-interface::calc-alteration) + (stencil . ,ly:accidental-interface::print) + (Y-extent . ,ly:accidental-interface::height) + (meta . ((class . Item) + (interfaces . (accidental-interface + font-interface)))))) + (AccidentalSuggestion . ( (stencil . ,ly:accidental-interface::print) + (Y-extent . ,ly:accidental-interface::height) (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))))) + ,(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) - (cautionary . #t) - (cautionary-style . smaller) + (font-size . -2) + (glyph-name-alist . ,standard-alteration-glyph-name-alist) + (alteration . ,accidental-interface::calc-alteration) (Y-offset . ,ly:side-position-interface::y-aligned-side) - (cautionary-style . parentheses) (direction . ,UP) (staff-padding . 0.25) + (outside-staff-priority . 0) (script-priority . 0) (side-axis . ,X) (meta . ((class . Item) @@ -51,6 +68,7 @@ accidental-suggestion-interface self-alignment-interface font-interface)))))) + (AccidentalPlacement . ( (left-padding . 0.2) @@ -103,12 +121,12 @@ (padding . 0.5) (X-offset . ,ly:side-position-interface::x-aligned-side) (direction . ,LEFT) - (cautionary-style . parentheses) (stencil . ,ly:accidental-interface::print) - (after-line-breaking . ,ly:accidental-interface::after-line-breaking) + (Y-extent . ,ly:accidental-interface::height) + (glyph-name-alist . ,standard-alteration-glyph-name-alist) (side-axis . ,X) (meta . ((class . Item) - (interfaces . (item-interface + (interfaces . ( accidental-interface break-aligned-interface side-position-interface @@ -134,10 +152,12 @@ (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) (script-priority . 0) (side-axis . ,X) (staff-position . 0.0) + (Y-extent . ,ly:arpeggio::height) (meta . ((class . Item) (interfaces . (arpeggio-interface staff-symbol-referencer-interface @@ -155,15 +175,17 @@ (BarLine . ( (break-align-symbol . staff-bar) + (break-align-anchor . ,ly:bar-line::calc-anchor) (glyph . "|") (gap . 0.4) (layer . 0) - (break-visibility . ,all-visible) + (break-visibility . ,bar-line::calc-break-visibility) (non-musical . #t) - (stencil . ,ly:bar-line::print) (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)) @@ -172,7 +194,7 @@ (key-signature . (extra-space . 1.0)) (key-cancellation . (extra-space . 1.0)) (first-note . (fixed-space . 1.3)) - (next-note . (semi-fixed-space . 1.3)) + (next-note . (semi-fixed-space . 0.9)) (right-edge . (extra-space . 0.0)))) ;; @@ -200,22 +222,23 @@ (font-size . -2) (Y-offset . ,ly:side-position-interface::y-aligned-side) (side-axis . ,Y) + (outside-staff-priority . 100) (X-offset . ,(ly:make-simple-closure `(,+ ,(ly:make-simple-closure - (list ly:break-alignment-align-interface::self-align-callback)) + (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) ;; want the bar number before the clef at line start. - (break-align-symbol . left-edge) + (break-align-symbols . (left-edge staff-bar)) (meta . ((class . Item) (interfaces . (side-position-interface text-interface - break-alignment-align-interface + break-alignable-interface self-alignment-interface font-interface )))) @@ -237,6 +260,7 @@ (positioning-done . ,ly:align-interface::calc-positioning-done) (Y-extent . ,ly:axis-group-interface::height) (stacking-dir . -1) + (padding . 0.2) (meta . ((class . Spanner) (interfaces . (align-interface bass-figure-alignment-interface @@ -274,6 +298,8 @@ . ( (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) (meta . ((class . Spanner) (interfaces . (axis-group-interface )))))) @@ -302,7 +328,9 @@ (beaming . ,ly:beam::calc-beaming) (stencil . ,ly:beam::print) (clip-edges . #t) - + (cross-staff . ,ly:beam::calc-cross-staff) + + (details . ((hint-direction-penalty . 20))) ;; TODO: should be in SLT. (thickness . 0.48) ; in staff-space (neutral-direction . ,DOWN) @@ -328,12 +356,14 @@ ;; only for debugging. (font-family . roman) (meta . ((class . Spanner) + (object-callbacks . ((normal-stems . ,ly:beam::calc-normal-stems))) (interfaces . (staff-symbol-referencer-interface + unbreakable-spanner-interface beam-interface)))))) (BendAfter . ( - (stencil . ,fall::print) + (stencil . ,bend::print) (thickness . 2.0) (meta . ((class . Spanner) (interfaces . (spanner-interface @@ -343,7 +373,7 @@ . ( (non-musical . #t) (stacking-dir . 1) - (positioning-done . ,ly:break-align-interface::calc-positioning-done) + (positioning-done . ,ly:break-alignment-interface::calc-positioning-done) (X-extent . ,ly:axis-group-interface::width) (break-align-orders . ;; end of line #(( @@ -389,6 +419,8 @@ . ( (axes . (0)) (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)))))) @@ -421,8 +453,10 @@ (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-visibility . ,begin-of-line-visible) (space-alist . ((ambitus . (extra-space . 2.0)) (staff-bar . (extra-space . 0.7)) @@ -443,7 +477,8 @@ . ( (Y-extent . ,ly:cluster-beacon::height) (meta . ((class . Item) - (interfaces . (cluster-beacon-interface)))))) + (interfaces . (rhythmic-grob-interface + cluster-beacon-interface)))))) (ClusterSpanner . ( @@ -451,6 +486,7 @@ (stencil . ,ly:cluster::print) (minimum-length . 0.0) (padding . 0.25) + (cross-staff . ,ly:cluster::calc-cross-staff) (style . ramp) (meta . ((class . Spanner) (interfaces . (cluster-interface)))))) @@ -467,12 +503,12 @@ rhythmic-grob-interface text-interface chord-name-interface - item-interface)))))) + )))))) (CombineTextScript . ( (stencil . ,ly:text-interface::print) - (no-spacing-rods . #t) + (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) (direction . ,UP) @@ -514,7 +550,6 @@ (direction . ,RIGHT) (positioning-done . ,ly:dot-column::calc-positioning-done) (X-extent . ,ly:axis-group-interface::width) - (X-offset . ,ly:dot-column::side-position) (meta . ((class . Item) (interfaces . (dot-column-interface axis-group-interface)))))) @@ -523,6 +558,7 @@ . ( (stencil . ,ly:dots::print) (dot-count . ,dots::calc-dot-count) + (staff-position . ,dots::calc-staff-position) (meta . ((class . Item) (interfaces . (font-interface staff-symbol-referencer-interface @@ -541,7 +577,7 @@ (meta . ((class . Item) (interfaces . (font-interface break-aligned-interface - percent-repeat-interface)))))) + percent-repeat-item-interface)))))) (DoublePercentRepeatCounter . ( @@ -559,7 +595,7 @@ (meta . ((class . Item) (interfaces . (side-position-interface self-alignment-interface - percent-repeat-interface + percent-repeat-item-interface font-interface text-interface)))))) (DynamicLineSpanner @@ -568,13 +604,14 @@ (Y-offset . ,ly:side-position-interface::y-aligned-side) (staff-padding . 0.1) (padding . 0.6) - (avoid-slur . outside) (slur-padding . 0.3) (minimum-space . 1.2) (direction . ,DOWN) (side-axis . ,Y) + (outside-staff-priority . 250) (Y-extent . ,ly:axis-group-interface::height) (X-extent . ,ly:axis-group-interface::width) + (cross-staff . ,ly:side-position-interface::calc-cross-staff) (meta . ((class . Spanner) (interfaces . (axis-group-interface dynamic-interface @@ -588,6 +625,7 @@ (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 . 0) @@ -596,9 +634,8 @@ (font-series . bold) (font-encoding . fetaDynamic) (font-shape . italic) - (avoid-slur . around) - (no-spacing-rods . #t) - (script-priority . 100) + (extra-spacing-width . (+inf.0 . -inf.0)) + (outside-staff-priority . 250) (meta . ((class . Item) (interfaces . (font-interface text-interface @@ -608,22 +645,42 @@ (DynamicTextSpanner . ( - (stencil . ,ly:dynamic-text-spanner::print) - ;; 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)) + (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) + )) + (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) - (bound-padding . 0.75) (dash-fraction . 0.2) (dash-period . 3.0) (meta . ((class . Spanner) (interfaces . (font-interface text-interface line-spanner-interface + line-interface dynamic-interface dynamic-text-spanner-interface spanner-interface)))))) @@ -641,9 +698,10 @@ (self-alignment-X . 0) (self-alignment-Y . 0) (script-priority . 100) - (stencil . ,ly:text-interface::print) (direction . ,ly:script-interface::calc-direction) + (positioning-done . ,ly:script-interface::calc-positioning-done) + (text . ,fingering::calc-text) (font-encoding . fetaNumber) (font-size . -5) ; don't overlap when next to heads. @@ -654,7 +712,7 @@ text-interface side-position-interface self-alignment-interface - item-interface)))))) + )))))) (FretBoard . ((stencil . ,fret-board::calc-stencil) (finger-code . below-string) @@ -668,13 +726,21 @@ (style . line) (gap . 0.5) (zigzag-width . 0.75) - (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) + )) + )) (stencil . ,ly:line-spanner::print) - (after-line-breaking . ,ly:line-spanner::after-line-breaking) + (left-bound-info . ,ly:line-spanner::calc-left-bound-info) + (right-bound-info . ,ly:line-spanner::calc-right-bound-info) (meta . ((class . Spanner) (interfaces . (line-interface + unbreakable-spanner-interface line-spanner-interface)))))) (GraceSpacing @@ -684,7 +750,7 @@ (shortest-duration-space . 1.6) (meta . ((class . Spanner) (interfaces . (grace-spacing-interface - spacing-interface + spacing-options-interface spanner-interface)))))) (GridPoint @@ -768,13 +834,13 @@ (direction . ,UP) (self-alignment-X . ,CENTER) (meta . ((class . Item) - (interfaces . (system-start-text-interface - side-position-interface + (interfaces . (side-position-interface font-interface)))))) (KeyCancellation . ( (stencil . ,ly:key-signature-interface::print) + (glyph-name-alist . ,cancellation-glyph-name-alist) (space-alist . ( (time-signature . (extra-space . 1.25)) (staff-bar . (extra-space . 0.6)) @@ -786,12 +852,15 @@ (break-visibility . ,begin-of-line-invisible) (non-musical . #t) (meta . ((class . Item) - (interfaces . (key-signature-interface + (interfaces . (key-cancellation-interface + key-signature-interface font-interface break-aligned-interface)))))) (KeySignature . ( (stencil . ,ly:key-signature-interface::print) + (avoid-slur . inside) + (glyph-name-alist . ,standard-alteration-glyph-name-alist) (space-alist . ( (time-signature . (extra-space . 1.15)) (staff-bar . (extra-space . 1.1)) @@ -799,6 +868,7 @@ (first-note . (fixed-space . 2.5)))) (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) @@ -842,11 +912,12 @@ (length-fraction . 0.25) (layer . 0) (meta . ((class . Spanner) - (interfaces . (ledger-line-interface)))))) + (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-visibility . ,center-invisible) @@ -904,8 +975,8 @@ (minimum-length . 0.3) (minimum-distance . 0.1) (padding . 0.07) - (springs-and-rods . ,ly:hyphen-spanner::set-spacing-rods) - (stencil . ,ly:hyphen-spanner::print) + (springs-and-rods . ,ly:lyric-hyphen::set-spacing-rods) + (stencil . ,ly:lyric-hyphen::print) (Y-extent . (0 . 0)) (meta . ((class . Spanner) (interfaces . (lyric-interface @@ -915,13 +986,13 @@ (LyricSpace . ((minimum-distance . 0.45) - (springs-and-rods . ,ly:hyphen-spanner::set-spacing-rods) + (springs-and-rods . ,ly:lyric-hyphen::set-spacing-rods) (padding . 0.0) (Y-extent . #f) (X-extent . #f) (meta . ((class . Spanner) (interfaces . (spanner-interface - lyric-hyphen-interface spacing-interface)) + lyric-hyphen-interface )) )) )) @@ -934,6 +1005,7 @@ (word-space . 0.6) (font-series . bold-narrow) (font-size . 1.0) + (extra-spacing-width . (0.0 . 0.0)) (meta . ((class . Item) (interfaces . (rhythmic-grob-interface lyric-syllable-interface @@ -960,7 +1032,7 @@ . ( (neutral-direction . ,DOWN) (meta . ((class . Item) - (interfaces . (melody-spanner-interface spacing-interface)))))) + (interfaces . (melody-spanner-interface )))))) (MensuralLigature . ( (thickness . 1.4) @@ -977,6 +1049,8 @@ (direction . ,UP) (padding . 0.8) (side-axis . ,Y) + (extra-spacing-width . (+inf.0 . -inf.0)) + (outside-staff-priority . 1000) (meta . ((class . Item) (interfaces . (text-interface side-position-interface @@ -1037,6 +1111,7 @@ (direction . ,UP) (padding . 0.2) (staff-padding . 0.25) + (outside-staff-priority . 450) (meta . ((class . Spanner) (interfaces . (side-position-interface multi-measure-interface @@ -1050,6 +1125,7 @@ (axes . (0)) (before-line-breaking . ,ly:paper-column::before-line-breaking) (X-extent . ,ly:axis-group-interface::width) + (horizontal-skylines . ,ly:separation-item::calc-skylines) ;; (stencil . ,ly:paper-column::print) (non-musical . #t) @@ -1062,6 +1138,7 @@ (meta . ((class . Paper_column) (interfaces . (paper-column-interface axis-group-interface + separation-item-interface spaceable-grob-interface)))))) (NoteCollision @@ -1079,8 +1156,10 @@ (axes . (0 1)) (X-extent . ,ly:axis-group-interface::width) (Y-extent . ,ly:axis-group-interface::height) + (horizontal-skylines . ,ly:separation-item::calc-skylines) (meta . ((class . Item) (interfaces . (axis-group-interface + separation-item-interface note-column-interface)))))) (NoteHead @@ -1103,6 +1182,7 @@ . ( (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) @@ -1128,11 +1208,7 @@ (Y-offset . ,ly:side-position-interface::y-aligned-side) (stencil . ,ly:text-interface::print) - - ;; no Y dimensions, because of lyrics under tenor clef. - (Y-extent . (0 . 0)) (font-shape . italic) - (padding . 0.6) (staff-padding . 0.2) (font-size . -4) (meta . ((class . Item) @@ -1150,9 +1226,11 @@ (staff-padding . 1.0) (padding . 0.5) (minimum-length . 1.0) + (style . dashed-line) (dash-fraction . 0.3) (edge-height . (0 . 1.2)) (direction . ,UP) + (outside-staff-priority . 400) (meta . ((class . Spanner) (interfaces . (ottava-bracket-interface horizontal-bracket-interface @@ -1166,6 +1244,7 @@ (axes . (0)) (allow-loose-spacing . #t) (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) @@ -1173,16 +1252,26 @@ ;; (font-size . -6) (font-name . "sans") (Y-extent . #f) (meta . ((class . Paper_column) (interfaces . (paper-column-interface + separation-item-interface axis-group-interface spaceable-grob-interface)))))) (ParenthesesItem . ((stencil . ,parentheses-item::print) + (stencils . ,parentheses-item::calc-parenthesis-stencils) (font-size . -6) (padding . 0.2) (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) @@ -1195,6 +1284,7 @@ (minimum-length . 1.5) (height-limit . 2.0) (ratio . 0.333) + (cross-staff . ,ly:slur::calc-cross-staff) (meta . ((class . Spanner) (interfaces . (slur-interface)))))) @@ -1210,7 +1300,7 @@ (meta . ((class . Spanner) (interfaces . (multi-measure-rest-interface font-interface - percent-repeat-interface)))))) + percent-repeat-item-interface)))))) (PercentRepeatCounter . ( (stencil . ,ly:text-interface::print) @@ -1227,7 +1317,7 @@ (meta . ((class . Spanner) (interfaces . (side-position-interface self-alignment-interface - percent-repeat-interface + percent-repeat-item-interface font-interface text-interface)))))) @@ -1253,23 +1343,25 @@ (X-offset . ,(ly:make-simple-closure `(,+ ,(ly:make-simple-closure - (list ly:break-alignment-align-interface::self-align-callback)) + (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 . 0) (direction . ,UP) (non-musical . #t) (font-size . 2) (baseline-skip . 2) (break-visibility . ,end-of-line-invisible) - (break-align-symbol . staff-bar) + (break-align-symbols . (staff-bar clef)) (padding . 0.8) + (outside-staff-priority . 1500) (meta . ((class . Item) (interfaces . (text-interface side-position-interface - break-alignment-align-interface + break-alignable-interface font-interface mark-interface self-alignment-interface)))))) @@ -1280,7 +1372,8 @@ (thickness . 0.48) (slope . 1.7) (meta . ((class . Item) - (interfaces . (percent-repeat-interface)))))) + (interfaces . (rhythmic-grob-interface + percent-repeat-item-interface)))))) (RepeatTie . ( @@ -1301,7 +1394,7 @@ (X-extent . #f) (Y-extent . #f) (direction . ,ly:tie::calc-direction) - (head-direction . ,RIGHT) + (head-direction . ,ly:semi-tie-column::calc-head-direction) (positioning-done . ,ly:semi-tie-column::calc-positioning-done) (meta . ((class . Item) @@ -1312,7 +1405,7 @@ (Rest . ( (stencil . ,ly:rest::print) - (duration-log . ,note-head::calc-duration-log) + (duration-log . ,stem::calc-duration-log) (X-extent . ,ly:rest::width) (Y-extent . ,ly:rest::height) (Y-offset . ,ly:rest::y-offset-callback) @@ -1337,14 +1430,15 @@ ;; padding set in script definitions. (staff-padding . 0.25) - ;; (script-priority . 0) priorities for scripts, see script.scm - (X-offset . ,ly:self-alignment-interface::centered-on-x-parent) + (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) (meta . ((class . Item) (interfaces . (script-interface side-position-interface @@ -1366,18 +1460,12 @@ (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 . (spacing-interface + (interfaces . ( separation-item-interface)))))) - (SeparatingGroupSpanner - . ( - (springs-and-rods . ,ly:separating-group-spanner::set-spacing-rods) - (meta . ((class . Spanner) - (interfaces . (only-prebreak-interface - spacing-interface - separation-spanner-interface)))))) - (Slur . ((details . ,default-slur-details) (control-points . ,ly:slur::calc-control-points) @@ -1391,6 +1479,7 @@ (height-limit . 2.0) (ratio . 0.25) (avoid-slur . inside) + (cross-staff . ,ly:slur::calc-cross-staff) (meta . ((class . Spanner) (interfaces . (slur-interface)))))) @@ -1399,7 +1488,7 @@ (stencil . ,ly:text-interface::print) (direction . ,RIGHT) (X-offset . ,ly:self-alignment-interface::x-aligned-on-self) - (no-spacing-rods . #t) + (extra-spacing-width . (+inf.0 . -inf.0)) (padding . 0.0) ;; padding relative to SostenutoPedalLineSpanner (font-shape . italic) (self-alignment-X . 0) @@ -1433,21 +1522,23 @@ (base-shortest-duration . ,(ly:make-moment 3 16)) (meta . ((class . Spanner) - (interfaces . (spacing-interface + (interfaces . ( spacing-options-interface spacing-spanner-interface)))))) (SpanBar . ( (break-align-symbol . staff-bar) - (Y-extent . ()) + (Y-extent . ,ly:axis-group-interface::height) (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! @@ -1512,6 +1603,7 @@ (Y-extent . ,ly:stem::height) (length . ,ly:stem::calc-length) (thickness . 1.3) + (cross-staff . ,ly:stem::calc-cross-staff) (details . ( ;; 3.5 (or 3 measured from note head) is standard length @@ -1552,8 +1644,8 @@ (StemTremolo . ( (Y-extent . ,ly:stem-tremolo::height) + (X-extent . ,ly:stem-tremolo::width) (stencil . ,ly:stem-tremolo::print) - (X-extent . #f) (slope . ,ly:stem-tremolo::calc-slope) (beam-width . ,ly:stem-tremolo::calc-width) ; staff-space (style . ,ly:stem-tremolo::calc-style) @@ -1579,7 +1671,7 @@ text-interface side-position-interface self-alignment-interface - item-interface)))))) + )))))) (StrokeFinger . ( @@ -1600,12 +1692,12 @@ text-interface side-position-interface self-alignment-interface - item-interface)))))) + )))))) (SustainPedal . ( - (no-spacing-rods . #t) + (extra-spacing-width . (+inf.0 . -inf.0)) (stencil . ,ly:sustain-pedal::print) (self-alignment-X . 0) (direction . ,RIGHT) @@ -1613,8 +1705,6 @@ (X-offset . ,ly:self-alignment-interface::x-aligned-on-self) (meta . ((class . Item) (interfaces . (piano-pedal-interface - text-spanner-interface - line-spanner-interface text-interface self-alignment-interface piano-pedal-script-interface @@ -1640,6 +1730,8 @@ (axes . (0 1)) (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) (meta . ((class . System) (interfaces . (system-interface axis-group-interface)))))) @@ -1696,18 +1788,19 @@ (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) (meta . ((class . Spanner) (interfaces . (side-position-interface system-start-delimiter-interface)))))) - (TabNoteHead . ( (stencil . ,ly:text-interface::print) (Y-offset . ,ly:staff-symbol-referencer::callback) - (duration-log . ,note-head::calc-duration-log) + (X-offset . ,ly:self-alignment-interface::x-aligned-on-self) + (direction . 0) (font-size . -2) (stem-attachment . (0.0 . 1.35)) (font-series . bold) @@ -1721,7 +1814,7 @@ (TextScript . ( - (no-spacing-rods . #t) + (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) @@ -1733,10 +1826,13 @@ (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) ;; todo: add X self alignment? (meta . ((class . Item) (interfaces . (text-script-interface @@ -1746,7 +1842,6 @@ (TextSpanner . ( - (stencil . ,ly:text-spanner::print) (Y-offset . ,ly:side-position-interface::y-aligned-side) (font-shape . italic) (style . dashed-line) @@ -1755,9 +1850,22 @@ (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) + )) + (right . ((Y . 0) + (padding . 0.25) + )) + )) + (stencil . ,ly:line-spanner::print) + (meta . ((class . Spanner) - (interfaces . (text-spanner-interface - line-spanner-interface + (interfaces . (line-spanner-interface side-position-interface font-interface)))))) @@ -1770,7 +1878,7 @@ (stencil . ,ly:tie::print) (font-size . -6) (details . ( - ;; for a full list, see tie-helper.cc + ;; for a full list, see tie-details.cc (ratio . 0.333) (center-staff-line-clearance . 0.6) (tip-staff-line-clearance . 0.45) @@ -1778,14 +1886,17 @@ (stem-gap . 0.35) (height-limit . 1.0) (horizontal-distance-penalty-factor . 10) - (min-length-penalty-factor . 20) + (same-dir-as-stem-penalty . 8) + (min-length-penalty-factor . 26) (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) (outer-tie-length-symmetry-penalty-factor . 10) + (vertical-distance-penalty-factor . 7) (outer-tie-vertical-gap . 0.25) (multi-tie-region-size . 1) + (single-tie-region-size . 4) (between-length-limit . 1.0))) (thickness . 1.2) @@ -1807,7 +1918,10 @@ . ( (stencil . ,ly:time-signature::print) (break-align-symbol . time-signature) + (break-align-anchor + . ,ly:break-aligned-interface::calc-extent-aligned-anchor) (break-visibility . ,all-visible) + (avoid-slur . inside) (space-alist . ( (first-note . (fixed-space . 2.0)) (right-edge . (extra-space . 0.5)) @@ -1821,18 +1935,34 @@ (TrillSpanner . ( - (stencil . ,ly:dynamic-text-spanner::print) - (edge-text . ,(cons (make-musicglyph-markup "scripts.trill") - "")) + (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 . ,LEFT) + )) + (left-broken . ((end-on-note . #t))) + (right . ((Y . 0))) + )) + + (stencil . ,ly:line-spanner::print) + (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 . (text-spanner-interface - line-spanner-interface + (interfaces . (line-spanner-interface + line-interface + trill-spanner-interface side-position-interface font-interface)))))) @@ -1843,9 +1973,11 @@ (font-size . -4) (side-axis . ,X) (stencil . ,ly:accidental-interface::print) + (Y-extent . ,ly:accidental-interface::height) + (glyph-name-alist . ,standard-alteration-glyph-name-alist) (meta . ((class . Item) - (interfaces . (item-interface - trill-pitch-accidental-interface + (interfaces . (trill-pitch-accidental-interface + accidental-interface side-position-interface font-interface)))))) @@ -1854,15 +1986,16 @@ (axes . (,X)) (font-size . -4) (stencil . ,parenthesize-elements) + (stencils . ,parentheses-item::calc-parenthesis-stencils) (direction . ,RIGHT) (side-axis . ,X) (padding . 0.3) (meta . ((class . Item) (interfaces . (side-position-interface + parentheses-interface note-head-interface rhythmic-head-interface font-interface - accidental-interface axis-group-interface)))))) (TrillPitchHead @@ -1872,8 +2005,7 @@ (Y-offset . ,ly:staff-symbol-referencer::callback) (font-size . -4) (meta . ((class . Item) - (interfaces . (item-interface - rhythmic-head-interface + (interfaces . (rhythmic-head-interface font-interface pitched-trill-interface ledgered-interface @@ -1891,6 +2023,7 @@ (connect-to-neighbor . ,ly:tuplet-bracket::calc-connect-to-neighbors) (control-points . ,ly:tuplet-bracket::calc-control-points) (stencil . ,ly:tuplet-bracket::print) + (cross-staff . ,ly:tuplet-bracket::calc-cross-staff) (meta . ((class . Spanner) (interfaces . (line-interface @@ -1903,6 +2036,7 @@ (font-shape . italic) (font-size . -2) (avoid-slur . inside) + (cross-staff . ,ly:tuplet-number::calc-cross-staff) (meta . ((class . Spanner) (interfaces . (text-interface tuplet-number-interface font-interface)))))) @@ -1911,7 +2045,7 @@ . ( (stencil . ,ly:text-interface::print) (font-shape . italic) - (no-spacing-rods . #t) + (extra-spacing-width . (+inf.0 . -inf.0)) (self-alignment-X . 0) (direction . ,RIGHT) (padding . 0.0) ;; padding relative to UnaCordaPedalLineSpanner @@ -1954,8 +2088,11 @@ (Y-extent . ,ly:axis-group-interface::height) (X-extent . ,ly:axis-group-interface::width) (stacking-dir . -1) - (padding . 0.1) + (padding . 0.5) + (vertical-skylines . ,ly:axis-group-interface::combine-skylines) + (max-stretch . 0) (meta . ((class . Spanner) + (object-callbacks . ((Y-common . ,ly:axis-group-interface::calc-y-common))) (interfaces . (align-interface axis-group-interface)))))) (VerticalAxisGroup @@ -1964,24 +2101,25 @@ (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) + (stencil . ,ly:axis-group-interface::print) + (adjacent-pure-heights . ,ly:axis-group-interface::adjacent-pure-heights) (meta . ((class . Spanner) + (object-callbacks . ((X-common . ,ly:axis-group-interface::calc-x-common))) (interfaces . (axis-group-interface - hara-kiri-group-interface + hara-kiri-group-spanner-interface vertically-spaceable-interface)))))) (VoltaBracket . ( (stencil . ,ly:volta-bracket-interface::print) - (direction . ,UP) - (padding . 1) (font-encoding . fetaNumber) - (Y-offset . ,ly:side-position-interface::y-aligned-side) - (side-axis . ,Y) (thickness . 1.6) ;; line-thickness (edge-height . (2.0 . 2.0)) ;; staff-space; - (minimum-space . 5) (font-size . -4) + (direction . ,UP) (meta . ((class . Spanner) (interfaces . (volta-bracket-interface horizontal-bracket-interface @@ -1991,6 +2129,21 @@ font-interface))) ))) + (VoltaBracketSpanner + . ( + (axes . (1)) + (side-axis . ,Y) + (direction . ,UP) + (padding . 1) + (Y-offset . ,ly:side-position-interface::y-aligned-side) + (outside-staff-priority . 100) + (Y-extent . ,ly:axis-group-interface::height) + (X-extent . ,ly:axis-group-interface::width) + (no-alignment . ,#t) + (meta . ((class . Spanner) + (interfaces . (side-position-interface + axis-group-interface))) + ))) (VoiceFollower . ( @@ -1999,8 +2152,16 @@ (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) + )) + )) (stencil . ,ly:line-spanner::print) - (after-line-breaking . ,ly:line-spanner::after-line-breaking) + (left-bound-info . ,ly:line-spanner::calc-left-bound-info) + (right-bound-info . ,ly:line-spanner::calc-right-bound-info) (meta . ((class . Spanner) (interfaces . (line-spanner-interface line-interface)))) @@ -2033,6 +2194,8 @@ (cons 'spanner-interface ifaces-entry)))) (else (ly:warning "Unknown class ~a" class))) + + (set! ifaces-entry (uniq-list (sort ifaces-entry symbol