X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Fdefine-grobs.scm;h=8062363b241959c4362c79af326ef1790f5ca7eb;hb=HEAD;hp=ddacbcb7ec1131864197462b77ef59f7dca37b4b;hpb=0bc7f77ff63d9aa044f7d75f9cce255ed2afc0f2;p=lilypond.git diff --git a/scm/define-grobs.scm b/scm/define-grobs.scm index ddacbcb7ec..8062363b24 100644 --- a/scm/define-grobs.scm +++ b/scm/define-grobs.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 1998--2014 Han-Wen Nienhuys +;;;; Copyright (C) 1998--2015 Han-Wen Nienhuys ;;;; Jan Nieuwenhuizen ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify @@ -29,14 +29,16 @@ `( (Accidental . ( + (after-line-breaking . ,ly:accidental-interface::remove-tied) (alteration . ,accidental-interface::calc-alteration) (avoid-slur . inside) + (extra-spacing-width . (-0.2 . 0.0)) (glyph-name . ,accidental-interface::glyph-name) (glyph-name-alist . ,standard-alteration-glyph-name-alist) (stencil . ,ly:accidental-interface::print) (horizontal-skylines . ,(ly:make-unpure-pure-container ly:accidental-interface::horizontal-skylines)) (vertical-skylines . ,grob::unpure-vertical-skylines-from-stencil) - (X-extent . ,ly:accidental-interface::width) + (X-offset . ,ly:grob::x-parent-positioning) (Y-extent . ,accidental-interface::height) (meta . ((class . Item) (interfaces . (accidental-interface @@ -45,11 +47,13 @@ (AccidentalCautionary . ( + (after-line-breaking . ,ly:accidental-interface::remove-tied) (alteration . ,accidental-interface::calc-alteration) (avoid-slur . inside) (glyph-name-alist . ,standard-alteration-glyph-name-alist) (parenthesized . #t) (stencil . ,ly:accidental-interface::print) + (X-offset . ,ly:grob::x-parent-positioning) (Y-extent . ,accidental-interface::height) (meta . ((class . Item) (interfaces . (accidental-interface @@ -74,17 +78,18 @@ (AccidentalSuggestion . ( + (after-line-breaking . ,ly:accidental-interface::remove-tied) (alteration . ,accidental-interface::calc-alteration) (direction . ,UP) (font-size . -2) (glyph-name-alist . ,standard-alteration-glyph-name-alist) (outside-staff-priority . 0) + (parent-alignment-X . ,CENTER) (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) (X-offset . ,ly:self-alignment-interface::aligned-on-x-parent) (Y-extent . ,accidental-interface::height) (Y-offset . ,side-position-interface::y-aligned-side) @@ -127,7 +132,7 @@ (padding . 0.5) (side-axis . ,X) (stencil . ,ly:accidental-interface::print) - (X-offset . ,ly:side-position-interface::x-aligned-side) + (X-offset . ,ly:grob::x-parent-positioning) (Y-extent . ,accidental-interface::height) (meta . ((class . Item) (interfaces . (accidental-interface @@ -151,6 +156,7 @@ . ( (duration-log . 2) (glyph-name . ,note-head::calc-glyph-name) + (ignore-ambitus . #t) (stencil . ,ly:note-head::print) (Y-offset . ,staff-symbol-referencer::callback) (Y-extent . ,grob::always-Y-extent-from-stencil) @@ -166,6 +172,7 @@ . ( (cross-staff . ,ly:arpeggio::calc-cross-staff) (direction . ,LEFT) + (line-thickness . 1) (padding . 0.5) (positions . ,ly:arpeggio::calc-positions) (protrusion . 0.4) @@ -173,6 +180,7 @@ (side-axis . ,X) (staff-position . 0.0) (stencil . ,ly:arpeggio::print) + (thickness . 1) (X-extent . ,ly:arpeggio::width) (Y-extent . ,(grob::unpure-Y-extent-from-stencil ly:arpeggio::pure-height)) (X-offset . ,ly:side-position-interface::x-aligned-side) @@ -216,7 +224,7 @@ ;; TODO: ;; kern should scale with line-thickness too. (kern . 3.0) - (thin-kern . 3.0) + (segno-kern . 3.0) (hair-thickness . 1.9) (thick-thickness . 6.0) @@ -226,7 +234,7 @@ (space-alist . ( (time-signature . (extra-space . 0.75)) (custos . (minimum-space . 2.0)) - (clef . (minimum-space . 1.0)) + (clef . (extra-space . 1.0)) (key-signature . (extra-space . 1.0)) (key-cancellation . (extra-space . 1.0)) (first-note . (fixed-space . 1.3)) @@ -262,12 +270,7 @@ (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))))) + (X-offset . ,self-alignment-interface::self-aligned-on-breakable) (Y-offset . ,side-position-interface::y-aligned-side) (Y-extent . ,grob::always-Y-extent-from-stencil) (meta . @@ -577,10 +580,14 @@ . ( (break-visibility . ,(grob::inherit-parent-property X 'break-visibility)) + (clef-alignments . ((G . (-0.2 . 0.1)) + (F . (-0.3 . -0.2)) + (C . (0 . 0)))) (color . ,(grob::inherit-parent-property X 'color)) (font-shape . italic) (font-size . -4) + (parent-alignment-X . ,ly:clef-modifier::calc-parent-alignment) (self-alignment-X . ,CENTER) (staff-padding . 0.7) (stencil . ,ly:text-interface::print) @@ -625,6 +632,7 @@ (font-series . bold) (outside-staff-priority . 450) (padding . 0.5) + (parent-alignment-X . #f) (script-priority . 200) (self-alignment-X . #f) (side-axis . ,Y) @@ -742,6 +750,7 @@ (stencil . ,ly:dots::print) (Y-extent . ,grob::always-Y-extent-from-stencil) (extra-spacing-height . (-0.5 . 0.5)) + (extra-spacing-width . (0.0 . 0.2)) (meta . ((class . Item) (interfaces . (dots-interface font-interface @@ -771,6 +780,7 @@ (font-encoding . fetaText) (font-size . -2) (padding . 0.2) + (parent-alignment-X . ,CENTER) (self-alignment-X . ,CENTER) (side-axis . ,Y) (staff-padding . 0.25) @@ -837,12 +847,14 @@ (font-encoding . fetaText) (font-series . bold) (font-shape . italic) + (parent-alignment-X . ,CENTER) (positioning-done . ,ly:script-interface::calc-positioning-done) (right-padding . 0.5) (self-alignment-X . ,CENTER) (stencil . ,ly:text-interface::print) (vertical-skylines . ,grob::always-vertical-skylines-from-stencil) (Y-extent . ,grob::always-Y-extent-from-stencil) + (X-align-on-main-noteheads . #t) (X-offset . ,ly:self-alignment-interface::aligned-on-x-parent) (Y-offset . ,(scale-by-font-size -0.6)) ; center on an 'm' (meta . ((class . Item) @@ -948,6 +960,8 @@ (font-encoding . fetaText) (font-size . -5) ; don't overlap when next to heads. (padding . 0.5) + (parent-alignment-X . ,CENTER) + (parent-alignment-Y . ,CENTER) (positioning-done . ,ly:script-interface::calc-positioning-done) (script-priority . 100) (self-alignment-X . ,CENTER) @@ -1058,6 +1072,7 @@ )) (left . ((attach-dir . ,RIGHT) (padding . 0.5) + (start-at-dot . #t) )) )) (cross-staff . ,ly:line-spanner::calc-cross-staff) @@ -1091,6 +1106,7 @@ (GridLine . ( (layer . 0) + (parent-alignment-X . ,CENTER) (self-alignment-X . ,CENTER) (stencil . ,ly:grid-line-interface::print) (X-extent . ,ly:grid-line-interface::width) @@ -1150,6 +1166,24 @@ side-position-interface spanner-interface)))))) + (HorizontalBracketText + . ( + (direction . ,ly:horizontal-bracket-text::calc-direction) + (font-size . -1) + (padding . 0.5) + (parent-alignment-X . ,CENTER) + (self-alignment-X . ,CENTER) + (side-axis . ,Y) + (stencil . ,ly:horizontal-bracket-text::print) + (X-offset . ,ly:self-alignment-interface::aligned-on-x-parent) + (Y-offset . ,side-position-interface::y-aligned-side) + (meta . ((class . Spanner) + (interfaces . (font-interface + horizontal-bracket-text-interface + outside-staff-interface + self-alignment-interface + side-position-interface + text-interface)))))) (InstrumentName . ( @@ -1164,7 +1198,8 @@ (interfaces . (font-interface self-alignment-interface side-position-interface - system-start-text-interface)))))) + system-start-text-interface + text-interface)))))) (InstrumentSwitch . ( @@ -1172,12 +1207,13 @@ (extra-spacing-width . (+inf.0 . -inf.0)) (outside-staff-priority . 500) (padding . 0.5) + (parent-alignment-X . #f) (self-alignment-X . ,LEFT) (side-axis . ,Y) (staff-padding . 0.5) (stencil . ,ly:text-interface::print) (Y-extent . ,grob::always-Y-extent-from-stencil) - (X-offset . ,ly:self-alignment-interface::x-aligned-on-self) + (X-offset . ,ly:self-alignment-interface::aligned-on-x-parent) (Y-offset . ,side-position-interface::y-aligned-side) (meta . ((class . Item) (interfaces . (font-interface @@ -1201,7 +1237,8 @@ (key-signature . (extra-space . 0.5)) (cue-clef . (extra-space . 0.5)) (right-edge . (extra-space . 0.5)) - (first-note . (fixed-space . 2.5)))) + (first-note . (fixed-space . 2.5)) + (custos . (extra-space . 1.0)))) (stencil . ,ly:key-signature-interface::print) (vertical-skylines . ,grob::always-vertical-skylines-from-stencil) (Y-extent . ,grob::always-Y-extent-from-stencil) @@ -1391,12 +1428,14 @@ (extra-spacing-height . (0.2 . -0.2)) (font-series . medium) (font-size . 1.0) + (parent-alignment-X . ()) (self-alignment-X . ,CENTER) (stencil . ,lyric-text::print) (text . ,(grob::calc-property-by-copy 'text)) (word-space . 0.6) (skyline-horizontal-padding . 0.1) (vertical-skylines . ,grob::always-vertical-skylines-from-stencil) + (X-align-on-main-noteheads . #t) (X-offset . ,ly:self-alignment-interface::aligned-on-x-parent) (Y-extent . ,grob::always-Y-extent-from-stencil) (meta . ((class . Item) @@ -1416,8 +1455,10 @@ (outside-staff-priority . 750) (self-alignment-X . ,CENTER) (side-axis . ,Y) + (spacing-pair . (break-alignment . break-alignment)) (staff-padding . 0.5) (stencil . ,measure-counter-stencil) + (Y-offset . ,side-position-interface::y-aligned-side) (meta . ((class . Spanner) (interfaces . (font-interface measure-counter-interface @@ -1470,12 +1511,7 @@ (stencil . ,ly:text-interface::print) (vertical-skylines . ,grob::always-vertical-skylines-from-stencil) (Y-offset . ,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))))) + (X-offset . ,self-alignment-interface::self-aligned-on-breakable) (self-alignment-X . ,LEFT) (break-align-symbols . (time-signature)) (non-break-align-symbols . (paper-column-interface)) @@ -1494,13 +1530,16 @@ (expand-limit . 10) (hair-thickness . 2.0) (round-up-exceptions . ()) - (padding . 1) + (bound-padding . 0.5) + (max-symbol-separation . 8.0) + (space-increment . 2.0) (spacing-pair . (break-alignment . break-alignment)) (springs-and-rods . ,ly:multi-measure-rest::set-spacing-rods) (stencil . ,ly:multi-measure-rest::print) (thick-thickness . 6.6) ;; See Wanske pp. 125 (usable-duration-logs . ,(iota 4 -3)) + (voiced-position . 4) (Y-extent . ,(ly:make-unpure-pure-container ly:multi-measure-rest::height)) (Y-offset . ,staff-symbol-referencer::callback) (meta . ((class . Spanner) @@ -1513,10 +1552,11 @@ (MultiMeasureRestNumber . ( - (bound-padding . 2.0) + (bound-padding . 1.0) (direction . ,UP) (font-encoding . fetaText) (padding . 0.4) + (parent-alignment-X . ,CENTER) (self-alignment-X . ,CENTER) (side-axis . ,Y) (springs-and-rods . ,ly:multi-measure-rest::set-text-rods) @@ -1539,6 +1579,7 @@ (direction . ,UP) (outside-staff-priority . 450) (padding . 0.2) + (parent-alignment-X . ,CENTER) (self-alignment-X . ,CENTER) (skyline-horizontal-padding . 0.2) (staff-padding . 0.25) @@ -1587,6 +1628,7 @@ (NoteCollision . ( (axes . (,X ,Y)) + (note-collision-threshold . 1) (positioning-done . ,ly:note-collision-interface::calc-positioning-done) (prefer-dotted-right . #t) (X-extent . ,ly:axis-group-interface::width) @@ -1619,6 +1661,7 @@ (extra-spacing-height . ,ly:note-head::include-ledger-line-height) (glyph-name . ,note-head::calc-glyph-name) (ligature-flexa . #f) + (parenthesis-friends . (accidental-grob dot)) (stem-attachment . ,ly:note-head::calc-stem-attachment) (stencil . ,ly:note-head::print) (X-offset . ,ly:note-head::stem-x-shift) @@ -1661,12 +1704,12 @@ . ( (dash-fraction . 0.3) (direction . ,UP) - (edge-height . (0 . 1.2)) + (edge-height . (0 . 0.8)) (font-shape . italic) - (minimum-length . 1.0) + (minimum-length . 0.3) (outside-staff-priority . 400) (padding . 0.5) - (shorten-pair . (0.0 . -0.6)) + (shorten-pair . (-0.8 . -0.6)) (staff-padding . 2.0) (stencil . ,ly:ottava-bracket::print) (style . dashed-line) @@ -1718,6 +1761,7 @@ ;; horizontal attachment. ParenthesesItem does not reserve ;; space of its own, however. (X-extent . (0 . 0)) + (Y-extent . ,parentheses-item::y-extent) (meta . ((class . Item) (interfaces . (font-interface parentheses-interface)))))) @@ -1742,6 +1786,7 @@ (font-encoding . fetaText) (font-size . -2) (padding . 0.2) + (parent-alignment-X . ,CENTER) (self-alignment-X . ,CENTER) (staff-padding . 0.25) (stencil . ,ly:text-interface::print) @@ -1765,7 +1810,6 @@ (height-limit . 2.0) (minimum-length . 1.5) (ratio . 0.333) - (spanner-id . "") (springs-and-rods . ,ly:spanner::set-spacing-rods) (stencil . ,ly:slur::print) (thickness . 1.1) @@ -1809,12 +1853,7 @@ (self-alignment-X . ,CENTER) (stencil . ,ly:text-interface::print) (vertical-skylines . ,grob::always-vertical-skylines-from-stencil) - (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))))) + (X-offset . ,self-alignment-interface::self-aligned-on-breakable) (Y-offset . ,side-position-interface::y-aligned-side) (Y-extent . ,grob::always-Y-extent-from-stencil) (meta . ((class . Item) @@ -1856,7 +1895,6 @@ (RepeatTieColumn . ( - (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) @@ -1869,7 +1907,9 @@ (cross-staff . ,ly:rest::calc-cross-staff) (duration-log . ,stem::calc-duration-log) (minimum-distance . 0.25) + (parenthesis-friends . (dot)) (stencil . ,ly:rest::print) + (voiced-position . 4) (X-extent . ,ly:rest::width) (Y-extent . ,(ly:make-unpure-pure-container ly:rest::height ly:rest::pure-height)) (Y-offset . ,(ly:make-unpure-pure-container ly:rest::y-offset-callback)) @@ -1897,6 +1937,7 @@ (font-encoding . fetaMusic) (horizon-padding . 0.1) ; to avoid interleaving with accidentals (positioning-done . ,ly:script-interface::calc-positioning-done) + (self-alignment-X . ,CENTER) (side-axis . ,Y) ;; padding set in script definitions. @@ -1912,6 +1953,7 @@ (interfaces . (font-interface outside-staff-interface script-interface + self-alignment-interface side-position-interface)))))) (ScriptColumn @@ -1937,7 +1979,6 @@ (line-thickness . 0.8) (minimum-length . 1.5) (ratio . 0.25) - (spanner-id . "") (springs-and-rods . ,ly:spanner::set-spacing-rods) (stencil . ,ly:slur::print) (thickness . 1.2) @@ -1953,10 +1994,11 @@ (extra-spacing-width . (+inf.0 . -inf.0)) (font-shape . italic) (padding . 0.0) ;; padding relative to SostenutoPedalLineSpanner + (parent-alignment-X . #f) (self-alignment-X . ,CENTER) (stencil . ,ly:text-interface::print) (vertical-skylines . ,grob::always-vertical-skylines-from-stencil) - (X-offset . ,ly:self-alignment-interface::x-aligned-on-self) + (X-offset . ,ly:self-alignment-interface::aligned-on-x-parent) (Y-extent . ,grob::always-Y-extent-from-stencil) (meta . ((class . Item) (interfaces . (font-interface @@ -2051,6 +2093,7 @@ (StaffSymbol . ( + (break-align-symbols . (staff-bar break-alignment)) (layer . 0) (ledger-line-thickness . (1.0 . 0.1)) (line-count . 5) @@ -2104,7 +2147,7 @@ ;; Stems in unnatural (forced) direction should be shortened by ;; one staff space, according to [Roush & Gourlay]. ;; Flagged stems we shorten only half a staff space. - (stem-shorten . (1.0 0.5)) + (stem-shorten . (1.0 0.5 0.25)) )) @@ -2112,9 +2155,11 @@ ;; and the extreme minima as abolute minimum length. (direction . ,ly:stem::calc-direction) + (double-stem-separation . 0.5) (duration-log . ,stem::calc-duration-log) (length . ,(ly:make-unpure-pure-container ly:stem::calc-length ly:stem::pure-calc-length)) (neutral-direction . ,DOWN) + (note-collision-threshold . 1) (positioning-done . ,ly:stem::calc-positioning-done) (stem-info . ,ly:stem::calc-stem-info) (stem-begin-position . ,(ly:make-unpure-pure-container ly:stem::calc-stem-begin-position ly:stem::pure-calc-stem-begin-position)) @@ -2140,9 +2185,10 @@ (beam-thickness . 0.48) ; staff-space (beam-width . ,ly:stem-tremolo::calc-width) ; staff-space (direction . ,ly:stem-tremolo::calc-direction) + (parent-alignment-X . ,CENTER) (slope . ,ly:stem-tremolo::calc-slope) (stencil . ,ly:stem-tremolo::print) - (style . ,ly:stem-tremolo::calc-style) + (shape . ,ly:stem-tremolo::calc-shape) (X-extent . ,ly:stem-tremolo::width) (X-offset . ,ly:self-alignment-interface::aligned-on-x-parent) (Y-extent . ,(grob::unpure-Y-extent-from-stencil ly:stem-tremolo::pure-height)) @@ -2157,7 +2203,9 @@ (cross-staff . ,script-or-side-position-cross-staff) (font-encoding . fetaText) (font-size . -5) ; don't overlap when next to heads. + (number-type . arabic) (padding . 0.5) + (parent-alignment-X . ,CENTER) (script-priority . 100) (self-alignment-X . ,CENTER) (self-alignment-Y . ,CENTER) @@ -2170,6 +2218,7 @@ self-alignment-interface outside-staff-interface side-position-interface + number-interface string-number-interface text-interface text-script-interface)))))) @@ -2180,6 +2229,7 @@ (font-shape . italic) (font-size . -4) ; don't overlap when next to heads. (padding . 0.5) + (parent-alignment-X . ,CENTER) (script-priority . 100) (self-alignment-X . ,CENTER) (self-alignment-Y . ,CENTER) @@ -2200,10 +2250,11 @@ . ( (extra-spacing-width . (+inf.0 . -inf.0)) (padding . 0.0) ;; padding relative to SustainPedalLineSpanner + (parent-alignment-X . #f) (self-alignment-X . ,CENTER) (stencil . ,ly:sustain-pedal::print) (vertical-skylines . ,grob::always-vertical-skylines-from-stencil) - (X-offset . ,ly:self-alignment-interface::x-aligned-on-self) + (X-offset . ,ly:self-alignment-interface::aligned-on-x-parent) (Y-extent . ,grob::always-Y-extent-from-stencil) (meta . ((class . Item) (interfaces . (font-interface @@ -2298,6 +2349,7 @@ (SystemStartSquare . ( + (collapse-height . 5.0) (direction . ,LEFT) (stencil . ,ly:system-start-delimiter::print) (style . line-bracket) @@ -2331,6 +2383,7 @@ (duration-log . ,note-head::calc-duration-log) (font-series . bold) (font-size . -2) + (parenthesis-friends . (dot)) (stem-attachment . (0.0 . 1.35)) (stencil . ,tab-note-head::print) (whiteout . #t) @@ -2349,7 +2402,7 @@ (TextScript . ( (avoid-slur . around) - (cross-staff . ,script-or-side-position-cross-staff) + (cross-staff . #f) (direction . ,DOWN) (extra-spacing-width . (+inf.0 . -inf.0)) (outside-staff-horizontal-padding . 0.2) @@ -2358,6 +2411,7 @@ ;; sync with Fingering ? (padding . 0.3) + (parent-alignment-X . #f) (script-priority . 200) ;; self-alignment cannot be LEFT because of fingering diagrams. (self-alignment-X . #f) @@ -2367,6 +2421,7 @@ (stencil . ,ly:text-interface::print) (vertical-skylines . ,grob::always-vertical-skylines-from-stencil) (Y-extent . ,grob::always-Y-extent-from-stencil) + (X-align-on-main-noteheads . #t) (X-offset . ,ly:self-alignment-interface::aligned-on-x-parent) (Y-offset . ,side-position-interface::y-aligned-side) (meta . ((class . Item) @@ -2611,11 +2666,12 @@ (extra-spacing-width . (+inf.0 . -inf.0)) (font-shape . italic) (padding . 0.0) ;; padding relative to UnaCordaPedalLineSpanner + (parent-alignment-X . #f) (self-alignment-X . ,CENTER) (stencil . ,ly:text-interface::print) (vertical-skylines . ,grob::always-vertical-skylines-from-stencil) (Y-extent . ,grob::always-Y-extent-from-stencil) - (X-offset . ,ly:self-alignment-interface::x-aligned-on-self) + (X-offset . ,ly:self-alignment-interface::aligned-on-x-parent) (meta . ((class . Item) (interfaces . (font-interface piano-pedal-script-interface @@ -2806,7 +2862,7 @@ (for-each (lambda (x) ;; (display (car x)) (newline) - (set-object-property! (car x) 'translation-type? list?) + (set-object-property! (car x) 'translation-type? ly:grob-properties?) (set-object-property! (car x) 'is-grob? #t)) all-grob-descriptions)