]> git.donarmstrong.com Git - lilypond.git/blob - scm/define-grobs.scm
* lily/include/music.hh (class Music): remove Music::duration_log()
[lilypond.git] / scm / define-grobs.scm
1 ;;;; define-grobs.scm --
2 ;;;;
3 ;;;;  source file of the GNU LilyPond music typesetter
4 ;;;;
5 ;;;; (c) 1998--2005 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6 ;;;;                 Jan Nieuwenhuizen <janneke@gnu.org>
7
8 ;;;; distances are given in linethickness (thicknesses) and
9 ;;;; staffspace (distances)
10
11 ;;;; WARNING: the meta field should be the last one.
12 ;;;; WARNING: don't use anonymous functions for initialization.
13
14 ;; TODO: junk the meta field in favor of something more compact?
15
16 ;;; todo:: reorder sensibly.
17
18 (define-public all-grob-descriptions
19   `(
20     (Accidental
21      . (
22         (print-function . ,Accidental_interface::print)
23         (inside-slur . #t)
24         (cautionary-style . parentheses)
25         (after-line-breaking-callback . ,Accidental_interface::after_line_breaking)
26         (meta . ((interfaces . (item-interface accidental-interface
27                                                font-interface))))
28         ))
29
30     (AccidentalPlacement
31      . ((X-extent-callback . ,Axis_group_interface::group_extent_callback)
32         (left-padding . 0.2)
33
34         ;; this is quite small, but it is very ugly to have
35         ;; accs closer to the previous note than to the next one.
36         (right-padding . 0.15)
37         (meta . ((interfaces . (item-interface accidental-placement-interface))))
38         ))
39     (Ambitus
40      . (
41         (axes . (0 1))
42         (X-extent-callback . ,Axis_group_interface::group_extent_callback)
43         (Y-extent-callback . ,Axis_group_interface::group_extent_callback)
44         (space-alist . (
45                         (clef . (extra-space . 0.5))
46                         (key-signature . (extra-space . 0.0))
47                         (staff-bar . (extra-space . 0.0))
48                         (time-signature . (extra-space . 0.0))
49                         (first-note . (fixed-space . 0.0))
50                         ))
51         (breakable . #t)
52         (break-align-symbol . ambitus)
53         (break-visibility . ,begin-of-line-visible)
54         (meta . ((interfaces . (axis-group-interface
55                                 break-aligned-interface ambitus-interface item-interface))))
56         ))
57
58     (AmbitusLine
59      . (
60        (print-function . ,Ambitus::print)
61        (join-heads . #t)
62        (thickness . 2)
63        (X-offset-callbacks . (,Self_alignment_interface::centered_on_parent))
64
65        (meta . ((interfaces . (ambitus-interface staff-symbol-referencer-interface item-interface font-interface))))
66        ))
67     (AmbitusAccidental
68      . (
69         (print-function . ,Accidental_interface::print)
70         (font-family . music)
71         (padding . 0.5)
72         (X-offset-callbacks . (,Side_position_interface::aligned_side))
73         (direction . -1)
74         (cautionary-style . parentheses)
75         (after-line-breaking-callback . ,Accidental_interface::after_line_breaking)
76         (meta . ((interfaces . (item-interface
77                                 accidental-interface break-aligned-interface
78                                 side-position-interface font-interface))))
79         ))
80
81     (AmbitusNoteHead
82      . (
83         (duration-log . 2)
84         (print-function . ,Note_head::print)
85         (glyph-name-procedure . ,find-notehead-symbol)
86         (Y-offset-callbacks . (,Staff_symbol_referencer::callback))
87         (meta . ((interfaces . (font-interface note-head-interface
88                                                ambitus-interface
89                                                staff-symbol-referencer-interface
90                                                rhythmic-head-interface
91                                                ledgered-interface
92                                                item-interface ))))
93         ))
94
95     (Arpeggio
96      . (
97         (X-extent-callback . ,Arpeggio::width_callback)
98         (print-function . ,Arpeggio::print)
99         (Y-offset-callbacks . (,Staff_symbol_referencer::callback))
100         (X-offset-callbacks . (,Side_position_interface::aligned_side))
101         (direction . -1)
102         (padding . 0.5)
103         (staff-position . 0.0)
104         (meta . ((interfaces . (arpeggio-interface
105                                 staff-symbol-referencer-interface side-position-interface
106                                 item-interface font-interface))))
107         ))
108
109     (BarLine
110      . (
111         (break-align-symbol . staff-bar)
112         (glyph . "|")
113         (break-glyph-function . ,default-break-barline)
114         (layer . 0)
115         (bar-size-procedure . ,Bar_line::get_staff_bar_size)
116         (print-function . ,Bar_line::print)     
117         (break-visibility . ,all-visible)
118         (breakable . #t)
119         (before-line-breaking-callback . ,Bar_line::before_line_breaking)
120         (space-alist . (
121                         (time-signature . (extra-space . 0.75))
122                         (custos . (minimum-space . 2.0))
123                         (clef . (minimum-space . 1.0))
124                         (key-signature . (extra-space . 1.0))
125                         (key-cancellation . (extra-space . 1.0))
126                         (first-note . (fixed-space . 1.3))
127                         (next-note . (semi-fixed-space . 1.3))
128                         (right-edge . (extra-space . 0.0))
129                         ))
130
131         ;;
132         ;; Ross. page 151 lists other values, we opt for a leaner look
133         ;;
134         ;; TODO:
135         ;; kern should scale with linethickness too.
136         (kern . 3.0)
137         (thin-kern . 3.0)
138         (hair-thickness . 1.9)
139         (thick-thickness . 6.0)
140         (meta . ((interfaces . (bar-line-interface
141                                 item-interface break-aligned-interface font-interface))))
142         ))
143
144
145     (BarNumber
146      . (
147         (print-function . ,Text_interface::print)
148         (breakable . #t)
149         (break-visibility . ,begin-of-line-visible)
150         (padding . 1.0)
151         (direction . 1)
152         (font-family . roman)
153         (font-size . -2)
154         (Y-offset-callbacks . (,Side_position_interface::aligned_side))
155         (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self))
156         (self-alignment-X . 1)
157
158         (meta .
159               ((interfaces . (side-position-interface
160                               text-interface
161                               self-alignment-interface
162                               font-interface item-interface break-aligned-interface))))
163
164              ))
165
166     (BassFigure
167      . (
168         (print-function . ,Text_interface::print)
169         (Y-offset-callbacks . (,Self_alignment_interface::aligned_on_self))
170         (direction . 1)
171         (font-family . number)
172
173         ;; We must do this, other BFs in
174         ;; layout16 become too small.
175         (font-size . -4)
176         (kern . 0.2)
177         (meta . ((interfaces . (text-interface
178                                 rhythmic-grob-interface bass-figure-interface item-interface
179                                 self-alignment-interface font-interface))))
180         ))
181     (Beam
182      . (
183         ;; todo: clean this up a bit: the list is getting
184         ;; rather long.
185         (print-function . ,Beam::print)
186         (gap . 0.8)
187         (positions . (#f . #f))
188         (position-callbacks . (,Beam::least_squares
189                                ,Beam::check_concave
190                                ,Beam::slope_damping
191                                ,Beam::shift_region_to_valid
192                                ,Beam::quanting
193                               ))
194
195         ;; TODO: should be in SLT.
196         (thickness . 0.48) ; in staff-space
197         (before-line-breaking-callback . ,Beam::before_line_breaking)
198         (after-line-breaking-callback . ,Beam::after_line_breaking)
199         (neutral-direction . -1)
200         (dir-function . ,beam-dir-majority-median)
201         
202         ;; Whe have some unreferenced problems here.
203         ;;
204         ;; If we shorten beamed stems less than normal stems (1 staffspace),
205         ;; or high order less than 8th beams, patterns like
206         ;;     c''4 [c''8 c''] c''4 [c''16 c]
207         ;; are ugly (different stem lengths).
208         ;;
209         ;; But if we shorten 16th beams as much as 8th beams, a single
210         ;; forced 16th beam looks *very* short.
211
212         ;; We choose to shorten 8th beams the same as single stems,
213         ;; and high order beams less than 8th beams, so that all
214         ;; isolated shortened beams look nice and a bit shortened,
215         ;; sadly possibly breaking patterns with high order beams.
216         (beamed-stem-shorten . (1.0 0.5 0.25))
217         
218         (flag-width-function . ,beam-flag-width-function)
219         (damping . 1)
220         (auto-knee-gap . 5.5)
221
222         ;; only for debugging.
223         (font-family . roman)
224         
225         (space-function . ,Beam::space_function)
226         (meta . ((interfaces . (staff-symbol-referencer-interface beam-interface spanner-interface))))
227         ))
228
229     (BreakAlignment
230      . (
231         (breakable . #t)
232         (stacking-dir . 1)
233         (break-align-orders . #(; end-of-line:
234                                 (instrument-name
235                                  left-edge ambitus breathing-sign
236                                  clef staff-bar key-cancellation key-signature
237                                  time-signature custos)
238
239                                 ; unbroken
240                                 (instrument-name left-edge ambitus breathing-sign
241                                                  clef staff-bar key-cancellation key-signature
242                                                  staff
243                                                  time-signature custos)
244                                 ; begin of line
245                                 (instrument-name left-edge ambitus breathing-sign
246                                                  clef key-cancellation key-signature staff-bar
247                                                  time-signature custos)
248
249                                 ))
250         (axes . (0))
251         (X-extent-callback . ,Axis_group_interface::group_extent_callback)
252         (meta . ((interfaces . (break-alignment-interface item-interface axis-group-interface)))))
253         )
254
255     (BreakAlignGroup
256      . (
257         (axes . (0))
258         (X-offset-callbacks . (,Break_align_interface::alignment_callback))
259         (X-extent-callback . ,Axis_group_interface::group_extent_callback)
260         (meta . ((interfaces . (break-aligned-interface item-interface axis-group-interface item-interface ))))
261         ))
262
263     (BreathingSign
264      . (
265         (break-align-symbol . breathing-sign)
266         (breakable . #t)
267         (space-alist . (
268                         (ambitus . (extra-space . 2.0))
269                         (custos . (minimum-space . 1.0))
270                         (key-signature . (minimum-space . 1.5))
271                         (staff-bar . (minimum-space . 1.5))
272                         (clef . (minimum-space . 2.0))
273                         (first-note . (fixed-space . 1.0)) ;huh?
274                         (right-edge . (extra-space . 0.1))
275                         ))
276         (print-function . ,Text_interface::print)
277         (text . ,(make-musicglyph-markup "scripts.rcomma"))
278         (Y-offset-callbacks . (,Breathing_sign::offset_callback))
279         (break-visibility . ,begin-of-line-invisible)
280         (meta . ((interfaces . (break-aligned-interface breathing-sign-interface text-interface font-interface item-interface ))))
281         ))
282
283     (Clef
284      . (
285         (print-function . ,Clef::print)
286         (before-line-breaking-callback . ,Clef::before_line_breaking)
287         (breakable . #t)
288         (font-family . music)   
289         (break-align-symbol . clef)
290         (break-visibility . ,begin-of-line-visible)
291         (space-alist . ((ambitus . (extra-space . 2.0))
292                         (staff-bar . (extra-space . 0.7))
293                         (key-cancellation . (minimum-space . 4.0))
294                         (key-signature . (minimum-space . 4.0))
295                         (time-signature . (minimum-space . 4.2))
296                         (first-note . (minimum-fixed-space . 5.0))
297                         (next-note . (extra-space . 0.5))
298                         (right-edge . (extra-space . 0.5))
299                         ))
300         (Y-offset-callbacks . (,Staff_symbol_referencer::callback))
301         (meta . ((interfaces . (clef-interface
302                                 staff-symbol-referencer-interface font-interface
303                                 break-aligned-interface item-interface ))))
304         ))
305
306     (ClusterSpannerBeacon
307      . (
308         (print-function . #f)
309         (Y-extent-callback . ,Cluster_beacon::height)
310         (meta . ((interfaces . (cluster-beacon-interface item-interface))))
311         ))
312
313     (ClusterSpanner
314      . (
315         (print-function . ,Cluster::print)
316         (spacing-procedure . ,Spanner::set_spacing_rods)                
317         (minimum-length . 0.0)
318         (padding . 0.25)
319         (style . ramp)
320         (meta . ((interfaces . (cluster-interface spanner-interface))))
321         ))
322
323
324     (ChordName
325      . (
326         (print-function . ,Text_interface::print)
327         (after-line-breaking-callback . ,Chord_name::after_line_breaking)
328         (word-space . 0.0)
329         (font-family . sans)
330         (font-size . 1.5)
331         (meta . ((interfaces . (font-interface
332                                 rhythmic-grob-interface text-interface chord-name-interface
333                                 item-interface))))
334         ))
335
336     (CombineTextScript
337      . (
338         (print-function . ,Text_interface::print)
339         (no-spacing-rods . #t)
340         (Y-offset-callbacks . (,Side_position_interface::aligned_side))
341         (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self))
342         (direction . 1)
343         (padding . 0.5)
344         (staff-padding . 0.5)
345         (script-priority . 200)
346         ;; todo: add X self alignment?
347         (baseline-skip . 2)
348         (font-series . bold)
349         (meta . ((interfaces . (text-script-interface
350                                 text-interface side-position-interface
351                                 font-interface item-interface ))))
352         ))
353     
354     (Custos
355      . (
356         (break-align-symbol . custos)
357         (breakable . #t)
358         (print-function . ,Custos::print)
359         (break-visibility . ,end-of-line-visible)
360         (style . vaticana)
361         (neutral-direction . -1)
362         (Y-offset-callbacks . (,Staff_symbol_referencer::callback))
363         (space-alist . (
364                         (first-note . (minimum-fixed-space . 0.0))
365                         (right-edge . (extra-space . 0.1))
366                         ))
367         (meta . ((interfaces
368                   . (custos-interface staff-symbol-referencer-interface
369                                       font-interface
370                                       break-aligned-interface item-interface ))))
371         ))
372
373     (DotColumn
374      . (
375         (axes . (0))
376         (direction . ,RIGHT)
377         (X-extent-callback . ,Axis_group_interface::group_extent_callback)
378         (X-offset-callbacks . (,Dot_column::side_position))
379         (meta . ((interfaces . (dot-column-interface axis-group-interface item-interface ))))
380         ))
381
382     (Dots
383      . (
384         (print-function . ,Dots::print)
385         (dot-count . 1)
386         (meta . ((interfaces . (font-interface
387                                 staff-symbol-referencer-interface dots-interface item-interface ))))
388         ))
389
390     (DoublePercentRepeat
391      . (
392         (print-function . ,Percent_repeat_item_interface::double_percent)
393         (breakable . #t)
394         (slope . 1.0)
395         (font-encoding . fetaMusic)
396         (width . 2.0)
397         (thickness . 0.48)
398         (break-align-symbol . staff-bar)
399         (break-visibility . ,begin-of-line-invisible)
400         (meta . ((interfaces . (font-interface
401                                 break-aligned-interface
402                                 percent-repeat-interface item-interface ))))
403         ))
404     
405     (DynamicText
406      . (
407         (Y-offset-callbacks . (,Self_alignment_interface::aligned_on_self))
408         (print-function . ,Text_interface::print)
409         (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self))
410         (self-alignment-X . 0)
411         (no-spacing-rods . #t)
412         (script-priority . 100)
413         (font-series . bold)
414         (font-encoding . fetaDynamic)
415         (font-shape . italic)
416         (self-alignment-Y . 0)
417         (meta . ((interfaces . (font-interface text-interface self-alignment-interface
418                                                dynamic-interface script-interface item-interface))))
419         ))
420     (DynamicTextSpanner
421      . ((print-function . ,Dynamic_text_spanner::print)
422
423 ;; rather ugh with NCSB
424 ;       (font-series . bold)
425         (font-shape . italic)
426         (style . dashed-line)
427
428         ; need to blend with dynamic texts.
429         (font-size . 1)
430         (bound-padding . 0.75)
431         (dash-fraction . 0.2)
432         (dash-period . 3.0)
433         (meta . ((interfaces . (font-interface
434                                 text-interface
435                                 dynamic-interface dynamic-text-spanner-interface
436                                 item-interface))))
437          ))
438
439     (DynamicLineSpanner
440      . (
441         (axes . (1))
442         (Y-extent-callback . ,Axis_group_interface::group_extent_callback)      
443         (Y-offset-callbacks . (,Side_position_interface::aligned_side))
444         (staff-padding . 0.1)
445         (padding . 0.6)
446         (minimum-space . 1.2)
447         (direction . -1)
448         
449         (meta . ((interfaces . (dynamic-interface axis-group-interface
450                                                   side-position-interface spanner-interface))))))
451
452     (Fingering
453      . (
454         (print-function . ,Text_interface::print)
455
456         ; sync with TextScript (?)
457         (padding . 0.5)
458         (staff-padding . 0.5)
459         (self-alignment-X . 0)
460         (self-alignment-Y . 0)
461         (script-priority . 100)
462         (font-encoding . fetaNumber)
463         (font-size . -5)                ; don't overlap when next to heads.
464         (meta . ((interfaces . (finger-interface
465                                 font-interface text-script-interface text-interface
466                                 side-position-interface self-alignment-interface
467                                 item-interface))))
468         ))
469     (Glissando
470      . (
471         (style . line)
472         (gap . 0.5)
473         (zigzag-width . 0.75)
474         (breakable . #t)
475         (X-extent-callback . #f)
476         (Y-extent-callback . #f)                        
477         (after-line-breaking-callback . ,Line_spanner::after_line_breaking)
478         (print-function . ,Line_spanner::print)
479         (meta . ((interfaces . (line-interface line-spanner-interface spanner-interface))))
480         ))
481
482     (GridPoint
483      . (
484         (X-extent . (0 . 0))
485         (Y-extent . (0 . 0))
486         (meta . ((interfaces . (grid-point-interface))))
487         ))
488
489     (GridLine
490      . (
491         (print-function . ,Grid_line_interface::print)
492         (X-extent-callback  . ,Grid_line_interface::width_callback)
493         (self-alignment-X . ,CENTER)
494         (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self
495                                ,Self_alignment_interface::centered_on_parent))
496         (layer . 0)
497         (meta . ((interfaces . (self-alignment-interface grid-line-interface)))
498         )))
499         
500     (Hairpin
501      . (
502         (print-function . ,Hairpin::print)
503         (after-line-breaking-callback . ,Hairpin::after_line_breaking)
504         (thickness . 1.0)
505         (height . 0.6666)
506         (spacing-procedure . ,Spanner::set_spacing_rods)
507         (minimum-length . 2.0)
508         (bound-padding . 1.0)
509         (self-alignment-Y . 0)
510         (Y-offset-callbacks . (,Self_alignment_interface::aligned_on_self))
511         (meta . ((interfaces . (hairpin-interface
512                                 line-interface self-alignment-interface dynamic-interface
513                                 spanner-interface))))
514         ))
515
516     (HorizontalBracket
517      . (
518         (thickness . 1.0)
519         (print-function . ,Horizontal_bracket::print)
520         (Y-offset-callbacks . (,Side_position_interface::aligned_side))
521         (padding . 0.2)
522         (staff-padding . 0.2)
523         (direction . -1)
524         (bracket-flare . (0.5 . 0.5))
525         (meta . ((interfaces . (horizontal-bracket-interface
526                                 side-position-interface
527                                 line-interface
528                                 spanner-interface))))
529         ))
530     (InstrumentName
531      . (
532         (breakable . #t)
533         (Y-offset-callbacks . (,Self_alignment_interface::aligned_on_self
534                                ,Side_position_interface::aligned_on_support_refpoints))
535         ;; This direction is for aligned_on_support_refpoints
536         ;; (?) --hwn
537         (direction . 0)
538         (space-alist . (
539                         (left-edge . (extra-space . 1.0))
540                         ))
541
542         (self-alignment-Y . 0)
543         (print-function . ,Text_interface::print)               
544         (break-align-symbol . instrument-name)
545         (break-visibility . ,begin-of-line-visible)
546         (baseline-skip . 2)
547         (meta . ((interfaces . (font-interface
548                                 self-alignment-interface side-position-interface text-interface
549                                 break-aligned-interface item-interface ))))
550         ))
551
552     (KeyCancellation
553      . (
554         (print-function . ,Key_signature_interface::print)
555         (space-alist . (
556                         (time-signature . (extra-space . 1.25))
557                         (staff-bar . (extra-space . 0.6))
558                         (key-signature . (extra-space . 0.5))
559                         (right-edge . (extra-space . 0.5))
560                         (first-note . (fixed-space . 2.5))
561                         ))
562         (Y-offset-callbacks . (,Staff_symbol_referencer::callback))
563         (break-align-symbol . key-cancellation)
564         (break-visibility . ,begin-of-line-invisible)
565         (breakable . #t)
566         
567         (meta . ((interfaces . (key-signature-interface font-interface
568                                                         break-aligned-interface item-interface ))))
569         ))
570     (KeySignature
571      . (
572         (print-function . ,Key_signature_interface::print)
573         (space-alist . (
574                         (time-signature . (extra-space . 1.25))
575                         (staff-bar . (extra-space . 1.1))
576                         (right-edge . (extra-space . 0.5))
577                         (first-note . (fixed-space . 2.5))
578                         ))
579         (Y-offset-callbacks . (,Staff_symbol_referencer::callback))
580         (break-align-symbol . key-signature)
581         (break-visibility . ,begin-of-line-visible)
582         (breakable . #t)
583         
584         (meta . ((interfaces . (key-signature-interface font-interface
585                                                         break-aligned-interface item-interface ))))
586         ))
587     (LedgerLineSpanner
588      . (
589         (print-function . ,Ledger_line_spanner::print)
590         (X-extent-callback . #f)
591         (Y-extent-callback . #f)
592         (minimum-length-fraction . 0.25)
593         (length-fraction . 0.25)
594         (spacing-procedure . ,Ledger_line_spanner::set_spacing_rods)
595         (print-function . ,Ledger_line_spanner::print)
596         (layer . 0)
597         (meta . ((interfaces . (spanner-interface ledger-line-interface))))
598         ))
599
600     (LeftEdge
601      . (
602         (break-align-symbol . left-edge)
603         (X-extent . (0 . 0))
604         (breakable . #t)
605         (break-visibility . ,center-invisible)
606         (space-alist . (
607                         (custos . (extra-space . 0.0))
608                         (ambitus . (extra-space . 2.0))
609                         (time-signature . (extra-space . 0.0))
610                         (staff-bar . (extra-space . 0.0))
611                         (breathing-sign . (minimum-space . 0.0))
612                         (clef . (extra-space . 0.8))
613                         (first-note . (fixed-space . 1.0))
614                         (right-edge . (extra-space . 0.0))
615                         (key-signature . (extra-space . 0.0))
616                         (key-cancellation . (extra-space . 0.0))
617                         
618                         ))
619         (meta . ((interfaces . (break-aligned-interface item-interface ))))
620         ))
621
622     (LigatureBracket
623      . (
624         (ligature-primitive-callback . ,Note_head::print)
625         (direction . 1)
626         (gap . 0.0)
627         (padding . 2.0)
628         (thickness . 1.6)
629         (edge-height . (0.7 . 0.7))
630         (shorten-pair . (-0.2 . -0.2))
631         (before-line-breaking-callback . ,Tuplet_bracket::before_line_breaking)
632         (after-line-breaking-callback . ,Tuplet_bracket::after_line_breaking)
633         (print-function . ,Tuplet_bracket::print)
634         (meta . ((interfaces . (tuplet-bracket-interface line-interface spanner-interface))))
635         ))
636
637     (LyricHyphen
638      . (
639         (thickness . 1.3)
640         (height . 0.42)
641         (dash-period . 10.0)
642         (length . 0.66)
643         (minimum-length . 0.3)
644         (padding . 0.07)
645 ;       (spacing-procedure . ,Hyphen_spanner::set_spacing_rods)
646         (print-function . ,Hyphen_spanner::print)
647         (Y-extent . (0 . 0))
648         (meta . ((interfaces . (lyric-interface lyric-hyphen-interface
649                                                 spanner-interface))))
650         ))
651
652     (LyricExtender
653      . (
654         (print-function . ,Lyric_extender::print)
655         (thickness . 0.8) ; linethickness
656         (minimum-length . 1.5)
657         (Y-extent . (0 . 0))
658         (meta . ((interfaces . (lyric-interface
659                                 lyric-extender-interface spanner-interface))))
660         ))
661
662     (LyricText
663      . ((print-function . ,Text_interface::print)
664         (X-offset-callbacks . (,Self_alignment_interface::aligned_on_parent))
665         (self-alignment-X . 0)
666         (word-space . 0.6)
667         (font-series . bold-narrow)
668         (font-size . 1.0)
669         (meta . ((interfaces . (rhythmic-grob-interface
670                                 lyric-syllable-interface
671                                 self-alignment-interface text-interface
672                                 font-interface item-interface ))))
673         ))
674
675     (MensuralLigature
676      . (
677         (thickness . 1.4)
678         (flexa-width . 2.0)
679         (ligature-primitive-callback . ,Mensural_ligature::brew_ligature_primitive)
680         (print-function . ,Mensural_ligature::print)
681         (meta . ((interfaces . (mensural-ligature-interface font-interface))))
682         ))
683
684      (MetronomeMark
685      . (
686         (print-function . ,Text_interface::print)
687         (Y-offset-callbacks . (,Side_position_interface::aligned_side)) 
688         (direction . 1)
689         (padding . 0.8)
690         (meta . ((interfaces . (text-interface
691                                 side-position-interface font-interface
692                                 metronome-mark-interface item-interface))))
693         ))
694     (MeasureGrouping
695      . (
696         (Y-offset-callbacks . (,Side_position_interface::aligned_side))
697         (print-function . ,Measure_grouping::print)
698         (padding . 2)
699         (direction . 1)
700         (thickness . 1)
701         (height . 2.0)
702         (staff-padding . 3)
703         (meta . ((interfaces . (spanner-interface side-position-interface
704                                                   measure-grouping-interface))))
705         ))
706     (MultiMeasureRest
707      . (
708         (spacing-procedure . ,Multi_measure_rest::set_spacing_rods)
709         (print-function . ,Multi_measure_rest::print)
710         (Y-offset-callbacks . (,Staff_symbol_referencer::callback))
711         (staff-position . 0)
712         (expand-limit . 10)
713         (thick-thickness . 6.6)
714         (hair-thickness . 2.0)
715         (padding . 1)
716         (meta . ((interfaces . (multi-measure-rest-interface
717                                 multi-measure-interface rest-interface
718                                 font-interface staff-symbol-referencer-interface))))
719         ))
720
721     (MultiMeasureRestNumber
722      . (
723         (print-function . ,Text_interface::print)
724         (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self
725                                ,Self_alignment_interface::centered_on_other_axis_parent))
726         (Y-offset-callbacks . (,Side_position_interface::aligned_side))
727         (self-alignment-X . 0)
728         (direction . 1)
729         (padding . 0.4)
730         (staff-padding . 0.4)
731         (font-encoding . fetaNumber)
732         (meta . ((interfaces . (side-position-interface
733                                 multi-measure-interface self-alignment-interface
734                                 font-interface spanner-interface text-interface))))
735         ))
736     (MultiMeasureRestText
737      . (
738         (print-function . ,Text_interface::print)
739         (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self
740                                ,Self_alignment_interface::centered_on_other_axis_parent))
741         (Y-offset-callbacks . (,Side_position_interface::aligned_side))
742         (self-alignment-X . 0)
743         (direction . 1)
744         (padding . 0.2)
745         (staff-padding . 0.25)
746         (meta . ((interfaces . (side-position-interface
747                                 multi-measure-interface self-alignment-interface font-interface
748                                 spanner-interface text-interface))))
749         ))
750
751     (NoteCollision
752      . (
753         (axes . (0 1))
754         (X-extent-callback . ,Axis_group_interface::group_extent_callback)
755         (Y-extent-callback . ,Axis_group_interface::group_extent_callback)      
756         (meta . ((interfaces . (note-collision-interface axis-group-interface item-interface ))))
757         ))
758
759     (NoteColumn
760      . (
761         (axes . (0 1))
762         (X-extent-callback . ,Axis_group_interface::group_extent_callback)
763         (Y-extent-callback . ,Axis_group_interface::group_extent_callback)      
764         (meta . ((interfaces . (axis-group-interface note-column-interface item-interface ))))
765         ))
766
767     (NoteHead
768      . (
769         (print-function . ,Note_head::print)
770         (ligature-primitive-callback . ,Note_head::print)
771         (glyph-name-procedure . ,find-notehead-symbol)
772         (Y-offset-callbacks . (,Staff_symbol_referencer::callback))
773         (stem-attachment-function . ,note-head-style->attachment-coordinates)
774         (meta . ((interfaces . (rhythmic-grob-interface
775                                 rhythmic-head-interface font-interface note-head-interface
776                                 ledgered-interface
777                                 staff-symbol-referencer-interface item-interface ))))
778         ))
779
780     (NoteSpacing
781      . (
782         (stem-spacing-correction . 0.5)
783         (same-direction-correction . 0.25)
784         ;; Changed this from 0.75.
785         ;; If you ever change this back, please document! --hwn
786         (knee-spacing-correction . 1.0)
787         
788         (meta . ((interfaces . (spacing-interface note-spacing-interface item-interface ))))
789         ))
790
791
792     (NoteName
793      . (
794         (print-function . ,Text_interface::print)
795         (meta . ((interfaces . (note-name-interface
796                                 text-interface font-interface item-interface ))))
797         ))
798
799     (OctavateEight
800      . (
801         (self-alignment-X . 0)
802         (break-visibility . ,begin-of-line-visible)
803         (X-offset-callbacks . (,Self_alignment_interface::centered_on_parent ,Self_alignment_interface::aligned_on_self))
804         (Y-offset-callbacks . (,Side_position_interface::aligned_side))
805         (print-function . ,Text_interface::print)
806
807         ;; no Y dimensions, because of lyrics under tenor clef.
808         (Y-extent . (0 . 0))
809         (font-shape . italic)
810         (padding . 0.6)
811         (staff-padding . 0.2)
812         (font-size . -4)
813         (meta . ((interfaces . (text-interface self-alignment-interface side-position-interface font-interface item-interface ))))
814         ))
815
816     (OttavaBracket
817      . (
818         (Y-offset-callbacks . (,Side_position_interface::aligned_side))
819         (print-function . ,Ottava_bracket::print)
820         (font-shape . italic)
821         (shorten-pair . (0.0 . -0.6))
822         (staff-padding . 1.0)
823         (padding . 0.5)
824         (minimum-length . 1.0)
825         (dash-fraction . 0.3)
826         (edge-height . (0 . 1.2))
827         (direction . 1)
828         (meta . ((interfaces . (ottava-bracket-interface
829                                 line-interface side-position-interface
830                                 font-interface text-interface spanner-interface))))             
831         ))
832
833     (PaperColumn
834      . (
835         (axes . (0))
836         (before-line-breaking-callback . ,Paper_column::before_line_breaking)
837         (X-extent-callback . ,Axis_group_interface::group_extent_callback)
838
839 ;               (print-function . ,Paper_column::print) (font-name . "ecrm8") (Y-extent-callback . #f)
840         (meta . ((interfaces . (paper-column-interface axis-group-interface spaceable-grob-interface item-interface ))))
841         ))
842
843     (PhrasingSlur
844      . ((slur-details . ,default-slur-details)
845         (print-function . ,Slur::print)
846         (thickness . 1.1)               
847         (spacing-procedure . ,Spanner::set_spacing_rods)                
848         (minimum-length . 1.5)
849         (after-line-breaking-callback . ,Slur::after_line_breaking)
850         (Y-extent-callback . ,Slur::height)
851         (height-limit . 2.0)
852         (ratio . 0.333)
853         (meta . ((interfaces . (slur-interface spanner-interface))))
854         ))
855
856     (NonMusicalPaperColumn
857      . (
858         (axes . (0))
859         (X-extent-callback . ,Axis_group_interface::group_extent_callback)
860         (before-line-breaking-callback . ,Paper_column::before_line_breaking)
861         (breakable . #t)
862         ;; debugging stuff: print column number.
863 ;       (print-function . ,Paper_column::print) (font-name . "ecrm8")   (Y-extent-callback . #f)
864
865
866         (meta . ((interfaces . (paper-column-interface axis-group-interface spaceable-grob-interface item-interface ))))
867         ))
868
869     (PercentRepeat
870      . (
871         (spacing-procedure . ,Multi_measure_rest::set_spacing_rods)
872         (print-function . ,Multi_measure_rest::percent)
873         (slope . 1.0)
874         (thickness . 0.48)
875         (font-encoding . fetaMusic)
876         (meta . ((interfaces . (multi-measure-rest-interface spanner-interface font-interface percent-repeat-interface))))
877         ))
878
879     ;; an example of a text spanner
880     (PianoPedalBracket
881      . (
882         (print-function . ,Piano_pedal_bracket::print)
883         (style . line)
884         (bound-padding . 1.0)
885         (direction . -1)
886         (bracket-flare . (0.5 . 0.5))
887         (edge-height . (1.0 . 1.0))
888         (shorten-pair . (0.0 . 0.0))
889         (thickness .  1.0)
890         (meta . ((interfaces . (line-interface
891                                 piano-pedal-interface piano-pedal-bracket-interface spanner-interface))))
892         ))
893
894     (RehearsalMark
895      . (
896         (print-function . ,Text_interface::print)
897         (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self))
898         (Y-offset-callbacks . (,Side_position_interface::aligned_side))
899         (after-line-breaking-callback . ,shift-right-at-line-begin)
900         (self-alignment-X . 0)
901         (direction . 1)
902         (breakable . #t)
903         (font-size . 2)
904         (baseline-skip . 2)
905         (break-visibility . ,end-of-line-invisible)
906         (padding . 0.8)
907         (meta . ((interfaces . (text-interface
908                                 side-position-interface font-interface mark-interface
909                                 self-alignment-interface item-interface ))))
910         ))
911     
912
913     (RemoveEmptyVerticalGroup
914      . (
915         (Y-offset-callbacks . (,Hara_kiri_group_spanner::force_hara_kiri_callback))
916         (Y-extent-callback . ,Hara_kiri_group_spanner::y_extent)
917         (axes . (1))
918         (meta . ((interfaces . (axis-group-interface
919                                 vertically-spaceable-interface hara-kiri-group-interface
920                                 item-interface spanner-interface))))
921         ))
922
923     (RepeatSlash
924      . (
925         (print-function . ,Percent_repeat_item_interface::beat_slash)
926         (thickness . 0.48)
927         (slope . 1.7)
928         (meta . ((interfaces . (percent-repeat-interface item-interface ))))
929         ))
930     (Rest
931      . (
932         (after-line-breaking-callback . ,Rest::after_line_breaking)
933         (X-extent-callback . ,Rest::extent_callback)
934         (Y-extent-callback . ,Rest::extent_callback)            
935         (print-function . ,Rest::print)
936         (Y-offset-callbacks . (,Staff_symbol_referencer::callback
937                                ,Rest::polyphonic_offset_callback
938                                ))
939         (minimum-distance . 0.25)
940         (meta . ((interfaces . (font-interface
941                                 rhythmic-head-interface
942                                 rhythmic-grob-interface
943                                 staff-symbol-referencer-interface
944                                 rest-interface item-interface ))
945                 ))))
946
947     (RestCollision
948      . (
949         (minimum-distance . 0.75)
950         (meta . ((interfaces . (rest-collision-interface item-interface ))))
951         ))
952
953     (Script
954      . (
955         ;; don't set direction here: it breaks staccato.
956         (print-function . ,Script_interface::print)
957
958         ;; This value is sensitive: if too large, staccato dots will move a
959         ;; space a away.
960         (padding . 0.20)
961         (staff-padding . 0.25)
962         ;; (script-priority . 0) priorities for scripts, see script.scm
963         (X-offset-callbacks . (,Self_alignment_interface::centered_on_parent))
964         (before-line-breaking-callback . ,Script_interface::before_line_breaking)
965         (font-encoding . fetaMusic)
966         (meta . ((interfaces . (script-interface
967                                 side-position-interface font-interface item-interface ))))
968         ))
969
970     (ScriptColumn
971      . (
972         (before-line-breaking-callback . ,Script_column::before_line_breaking)
973         (meta . ((interfaces . (script-column-interface item-interface ))))
974         ))
975
976
977     (SeparationItem
978      . (
979         (X-extent-callback . #f)
980         (Y-extent-callback . #f)
981         (meta . ((interfaces . (spacing-interface separation-item-interface item-interface ))))
982         ))
983
984     (SeparatingGroupSpanner
985      . (
986         (spacing-procedure . ,Separating_group_spanner::set_spacing_rods)
987         (meta . ((interfaces . (only-prebreak-interface spacing-interface separation-spanner-interface spanner-interface))))
988         ))
989     
990     (Slur
991      . ((slur-details . ,default-slur-details)
992         (print-function . ,Slur::print)
993         (thickness . 1.0)               
994         (spacing-procedure . ,Spanner::set_spacing_rods)                
995         (minimum-length . 1.5)
996         (after-line-breaking-callback . ,Slur::after_line_breaking)
997         (Y-extent-callback . ,Slur::height)
998                                         ; Slur::height)
999         (height-limit . 2.0)
1000         (ratio . 0.25)
1001         (meta . ((interfaces . (slur-interface spanner-interface))))
1002         ))
1003
1004     (SpacingSpanner
1005      . (
1006         (spacing-procedure . ,Spacing_spanner::set_springs)
1007         (grace-space-factor . 0.6)
1008         (shortest-duration-space . 2.0)
1009         (spacing-increment . 1.2)
1010         (base-shortest-duration . ,(ly:make-moment 3 16))
1011         (meta . ((interfaces . (spacing-interface spacing-spanner-interface spanner-interface))))
1012         ))
1013
1014     (SpanBar
1015      . (
1016         (break-align-symbol . staff-bar)
1017         (bar-size-procedure . ,Span_bar::get_bar_size)
1018         (print-function . ,Span_bar::print)
1019         (X-extent-callback . ,Span_bar::width_callback)
1020         (Y-extent-callback . ())
1021         (layer . 0)
1022         (breakable . #t)
1023         (before-line-breaking-callback . ,Span_bar::before_line_breaking)
1024         ;; ugh duplication!
1025
1026         ;;
1027         ;; Ross. page 151 lists other values, we opt for a leaner look
1028         ;;
1029         (kern . 3.0)
1030         (thin-kern . 3.0)
1031         (hair-thickness . 1.6)
1032         (thick-thickness . 6.0)
1033         (meta . ((interfaces . (span-bar-interface font-interface
1034                                                    bar-line-interface item-interface ))))
1035         ))
1036
1037     (StanzaNumber
1038      . ((print-function . ,Text_interface::print)               
1039         (font-series . bold)
1040         (padding . 1.0)
1041         (X-offset-callbacks . (,Side_position_interface::aligned_side))
1042         (direction . ,LEFT)
1043         (meta . ((interfaces . (side-position-interface
1044                                 stanza-number-interface text-interface font-interface item-interface ))))               
1045         ))
1046
1047     (StringNumber
1048      . (
1049         (print-function . ,print-circled-text-callback)
1050         (padding . 0.5)
1051         (staff-padding . 0.5)
1052         (self-alignment-X . 0)
1053         (self-alignment-Y . 0)
1054         (script-priority . 100)
1055         (font-encoding . fetaNumber)
1056         (font-size . -5)                ; don't overlap when next to heads.
1057         (meta . ((interfaces . (string-number-interface
1058                                 font-interface text-script-interface text-interface
1059                                 side-position-interface self-alignment-interface
1060                                 item-interface))))
1061         ))
1062
1063     (StaffSpacing
1064      . (
1065         (breakable . #t)
1066         (stem-spacing-correction . 0.4)
1067
1068         (meta . ((interfaces . (spacing-interface staff-spacing-interface item-interface ))))
1069         ))
1070
1071     (SostenutoPedal
1072      . (
1073         (print-function . ,Text_interface::print)
1074         (direction . 1)
1075         (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self))
1076         (no-spacing-rods . #t)
1077         (padding . 0.0) ;; padding relative to SostenutoPedalLineSpanner
1078         (font-shape . italic)
1079         (self-alignment-X . 0)
1080         (meta . ((interfaces . (text-interface
1081                                 self-alignment-interface font-interface item-interface))))
1082         ))
1083
1084     (SostenutoPedalLineSpanner
1085      . (
1086         (axes . (1))
1087         (Y-extent-callback . ,Axis_group_interface::group_extent_callback)      
1088         (Y-offset-callbacks . (,Side_position_interface::aligned_side))
1089         
1090
1091         (padding . 1.2)
1092         (minimum-space . 1.0)
1093         (direction . -1)
1094         (meta . ((interfaces . (piano-pedal-interface
1095                                 axis-group-interface side-position-interface spanner-interface))))
1096         ))
1097
1098     (StaffSymbol
1099      . (
1100         (print-function . ,Staff_symbol::print)
1101         (line-count . 5)
1102         (ledger-line-thickness . (1.0 . 0.1))
1103         (layer . 0)
1104         (meta . ((interfaces . (staff-symbol-interface spanner-interface))))
1105         ))
1106         
1107     (Stem
1108      . (
1109         ;; this list is rather long. Trim --hwn
1110         (before-line-breaking-callback . ,Stem::before_line_breaking)
1111         (print-function . ,Stem::print)
1112         (thickness . 1.3)
1113
1114         ;; 3.5 (or 3 measured from note head) is standard length
1115         ;; 32nd, 64th flagged stems should be longer
1116         (lengths . (3.5 3.5 3.5 4.5 5.0))
1117         
1118         ;; Stems in unnatural (forced) direction should be shortened by
1119         ;; one staff space, according to [Roush & Gourlay].
1120         ;; Flagged stems we shorten only half a staff space.
1121         (stem-shorten . (1.0 0.5))
1122
1123         ;; default stem direction for note on middle line
1124         (neutral-direction . -1)
1125
1126
1127
1128         ;; FIXME.  3.5 yields too long beams (according to Ross and
1129         ;; looking at Baerenreiter examples) for a number of common
1130         ;; boundary cases.  Subtracting half a beam thickness fixes
1131         ;; this, but the bug may well be somewhere else.
1132
1133         ;; FIXME this should come from 'lengths
1134
1135         (beamed-lengths . (3.26 3.5 3.6))
1136         
1137         ;; We use the normal minima as minimum for the ideal lengths,
1138         ;; and the extreme minima as abolute minimum length.
1139         
1140         ;; The 'normal' minima
1141         (beamed-minimum-free-lengths . (1.83 1.5 1.25))
1142         ;(beamed-minimum-free-lengths . (2.0 1.83 1.25))
1143         
1144         ;; The 'extreme case' minima
1145         (beamed-extreme-minimum-free-lengths . (2.0 1.25))
1146
1147         (X-offset-callbacks . (,Stem::offset_callback))
1148         (X-extent-callback . ,Stem::width_callback)     
1149         (Y-extent-callback . ,Stem::height)
1150         (Y-offset-callbacks . (,Staff_symbol_referencer::callback))
1151         (meta . ((interfaces . (stem-interface font-interface item-interface ))))
1152         ))
1153
1154     (StemTremolo
1155      . (
1156         (print-function . ,Stem_tremolo::print)
1157         (Y-extent-callback . ,Stem_tremolo::height)
1158         (X-extent-callback . #f)
1159
1160         (beam-width . 1.6) ; staff-space
1161         (beam-thickness . 0.48) ; staff-space
1162         (meta . ((interfaces . (stem-tremolo-interface item-interface ))))
1163         ))
1164
1165     (SustainPedal
1166      . (
1167         (no-spacing-rods . #t)
1168         (print-function . ,Sustain_pedal::print)
1169         (self-alignment-X . 0)
1170         (direction . 1)
1171         (padding . 0.0)  ;; padding relative to SustainPedalLineSpanner
1172         (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self))
1173         (meta . ((interfaces . (piano-pedal-interface
1174                                 text-spanner-interface text-interface self-alignment-interface
1175                                 font-interface item-interface))))
1176         ))
1177
1178     (SustainPedalLineSpanner
1179      . (
1180         (axes . (1))
1181         (Y-extent-callback . ,Axis_group_interface::group_extent_callback)
1182         (Y-offset-callbacks . (,Side_position_interface::aligned_side))
1183         
1184         (padding . 1.2)
1185         (staff-padding . 1.2)
1186         (minimum-space . 1.0)
1187         (direction . -1)
1188         (meta . ((interfaces . (piano-pedal-interface
1189                                 axis-group-interface side-position-interface spanner-interface))))
1190         ))
1191
1192     (System
1193      . (
1194         (axes . (0 1))
1195         (X-extent-callback . ,Axis_group_interface::group_extent_callback)
1196         (Y-extent-callback . ,Axis_group_interface::group_extent_callback)      
1197         (meta . ((interfaces . (system-interface axis-group-interface spanner-interface))))
1198         ))
1199
1200     (SystemStartBrace
1201      . (
1202         (glyph . "brace")
1203         (print-function . ,System_start_delimiter::print)
1204         (collapse-height . 5.0)
1205         (font-encoding . fetaBraces)
1206         (Y-extent-callback . #f)
1207         (meta . ((interfaces . (system-start-delimiter-interface font-interface))))
1208         ))
1209
1210     (SystemStartBracket
1211      . (
1212         (Y-extent-callback . #f)
1213         (X-offset-callbacks . (,(lambda (g a) -0.8)))
1214         (print-function . ,System_start_delimiter::print)
1215         (glyph . "bracket")
1216         (collapse-height . 1)
1217         (thickness . 0.45)
1218         (meta . ((interfaces . (font-interface system-start-delimiter-interface
1219                                                spanner-interface))))
1220         ))
1221
1222     (SystemStartBar
1223      . (
1224         (Y-extent-callback . #f)
1225         (print-function . ,System_start_delimiter::print)
1226         (glyph . "bar-line")
1227         (thickness . 1.6)
1228         (after-line-breaking-callback . ,System_start_delimiter::after_line_breaking)
1229         (meta . ((interfaces . (system-start-delimiter-interface spanner-interface))))
1230         ))
1231
1232
1233     (TabNoteHead
1234      . (
1235         (print-function . ,Text_interface::print)
1236         (Y-offset-callbacks . (,Staff_symbol_referencer::callback))
1237         (stem-attachment-function . ,tablature-stem-attachment-function)
1238         (font-series . bold)
1239         (meta . ((interfaces
1240                   . (rhythmic-head-interface
1241                      font-interface 
1242                      note-head-interface staff-symbol-referencer-interface
1243                      text-interface item-interface ))))
1244         ))
1245
1246
1247     (TextScript
1248      . (
1249         (print-function . ,Text_interface::print)
1250         (no-spacing-rods . #t)
1251         (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self))
1252         (direction . -1)
1253
1254         ; sync with Fingering ?
1255         (padding . 0.5)
1256         (staff-padding . 0.5)
1257         (script-priority . 200)
1258         ;; todo: add X self alignment?
1259         (meta . ((interfaces . (text-script-interface
1260                                 text-interface side-position-interface font-interface
1261                                 item-interface ))))
1262         ))
1263     
1264     (TextSpanner
1265      . (
1266         (print-function . ,Text_spanner::print)
1267         (font-shape . italic)
1268         (style . dashed-line)
1269         (staff-padding . 0.8)
1270         (dash-fraction . 0.2)
1271         (dash-period . 3.0)
1272         (direction . 1)
1273         (meta . ((interfaces . (text-spanner-interface side-position-interface font-interface spanner-interface))))             
1274         ))
1275
1276     
1277     (Tie
1278      . (
1279         (print-function . ,Tie::print)
1280         (spacing-procedure . ,Spanner::set_spacing_rods)
1281         (staffline-clearance . 0.35)
1282         (details . ((ratio . 0.333) (height-limit . 1.0)))
1283         (thickness . 1.0)
1284         (x-gap . -0.1)
1285         (y-offset . 0.6)
1286         (minimum-length . 2.5)
1287         (meta . ((interfaces . (tie-interface spanner-interface))))
1288         ))
1289
1290     (TieColumn
1291      . (
1292         (after-line-breaking-callback . ,Tie_column::after_line_breaking)
1293         (before-line-breaking-callback . ,Tie_column::before_line_breaking)
1294         (X-extent-callback . #f)
1295         (Y-extent-callback . #f)        
1296         (meta . ((interfaces . (tie-column-interface spanner-interface))))
1297         ))
1298
1299     (TimeSignature
1300      . (
1301         (print-function . ,Time_signature::print)
1302         (break-align-symbol . time-signature)
1303         (break-visibility . ,all-visible)
1304         (space-alist . (
1305                         (first-note . (fixed-space . 2.0))
1306                         (right-edge . (extra-space . 0.5))
1307                         (staff-bar . (minimum-space . 2.0))
1308                         ))
1309         (breakable . #t)
1310         (style . C)
1311         (meta . ((interfaces . (time-signature-interface break-aligned-interface font-interface item-interface ))))
1312         ))
1313
1314
1315     (TrillSpanner
1316      . (
1317         (print-function . ,Dynamic_text_spanner::print)
1318         (edge-text . ,(cons (make-musicglyph-markup "scripts.trill")
1319                             ""))
1320         (style . trill)
1321         (staff-padding . 1.0)
1322         (padding . 0.5)
1323         (direction . 1)
1324         (Y-offset-callbacks . (,Side_position_interface::aligned_side))
1325         (meta . ((interfaces . (text-spanner-interface side-position-interface font-interface spanner-interface))))             
1326         ))
1327     
1328     (TrillPitchAccidental
1329      . ((X-offset-callbacks . (,Side_position_interface::aligned_side))
1330         (padding . 0.2)
1331         (direction . ,LEFT)
1332         (font-size . -4)
1333         (print-function . ,Accidental_interface::print)
1334         (meta . ((interfaces . (item-interface
1335                                 accidental-interface
1336                                 side-position-interface font-interface))))
1337         ))
1338
1339     (TrillPitchGroup
1340      . ((X-offset-callbacks . (,Side_position_interface::aligned_side))
1341         (axes . (,X))
1342         (font-size . -4)
1343         (print-function . ,parenthesize-elements)
1344         (direction . ,RIGHT)
1345         (padding . 0.3)
1346         (meta . ((interfaces . (side-position-interface
1347                                 note-head-interface rhythmic-head-interface
1348                                 font-interface accidental-interface
1349                                 item-interface axis-group-interface))))
1350         ))
1351
1352     (TrillPitchHead
1353      . ((print-function . ,Note_head::print)
1354         (duration-log . 2)
1355         (Y-offset-callbacks . (,Staff_symbol_referencer::callback))
1356         (font-size . -4)
1357         (meta . ((interfaces . (item-interface
1358                                 rhythmic-head-interface
1359                                 font-interface pitched-trill-interface
1360                                 ledgered-interface staff-symbol-referencer-interface))))
1361         ))
1362     
1363     (TupletBracket
1364      . (
1365         (padding . 1.1)
1366         (thickness . 1.6)
1367         (edge-height . (0.7 . 0.7))
1368         (shorten-pair . (-0.2 . -0.2))
1369         (before-line-breaking-callback . ,Tuplet_bracket::before_line_breaking)
1370         (after-line-breaking-callback . ,Tuplet_bracket::after_line_breaking)
1371         (print-function . ,Tuplet_bracket::print)
1372         (font-shape . italic)
1373
1374         (font-size . -2)
1375         (meta . ((interfaces . (text-interface line-interface
1376                                                tuplet-bracket-interface
1377                                                font-interface spanner-interface))))
1378         ))
1379
1380     (UnaCordaPedal
1381      . (
1382         (print-function . ,Text_interface::print)
1383         (font-shape . italic)
1384         (no-spacing-rods . #t)
1385         (self-alignment-X . 0)
1386         (direction . 1)
1387         (padding . 0.0)  ;; padding relative to UnaCordaPedalLineSpanner
1388         (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self))
1389         (meta . ((interfaces . (text-interface self-alignment-interface font-interface item-interface ))))
1390         ))
1391
1392     (UnaCordaPedalLineSpanner
1393      . (
1394         (axes . (1))
1395         (Y-extent-callback . ,Axis_group_interface::group_extent_callback)      
1396         (Y-offset-callbacks . (,Side_position_interface::aligned_side))
1397         (padding . 1.2)
1398         (staff-padding . 1.2)
1399         (minimum-space . 1.0)
1400         (direction . -1)
1401         (meta . ((interfaces . (piano-pedal-interface axis-group-interface side-position-interface spanner-interface))))
1402         ))
1403
1404     (VaticanaLigature
1405      . (
1406         (thickness . 0.6)
1407         (flexa-width . 2.0)
1408         (ligature-primitive-callback . ,Vaticana_ligature::brew_ligature_primitive)
1409         (print-function . ,Vaticana_ligature::print)
1410         (meta . ((interfaces . (vaticana-ligature-interface font-interface))))
1411         ))
1412
1413
1414     (VerticalAlignment
1415      . (
1416         (axes . (1))
1417         (Y-extent-callback . ,Axis_group_interface::group_extent_callback)
1418         (X-extent-callback . ,Axis_group_interface::group_extent_callback)
1419         (stacking-dir . -1)
1420         (meta . ((interfaces . (align-interface axis-group-interface spanner-interface))))
1421         ))
1422
1423     (VerticalAxisGroup
1424      . (
1425         (axes . (1))
1426         (Y-extent-callback . ,Axis_group_interface::group_extent_callback)      
1427         (X-extent-callback . ,Axis_group_interface::group_extent_callback)
1428         
1429         (meta . ((interfaces . (axis-group-interface
1430                                 vertically-spaceable-interface spanner-interface))))
1431         ))
1432
1433     (VocalName
1434      . (
1435         (breakable . #t)
1436         (Y-offset-callbacks . (,Side_position_interface::aligned_on_support_refpoints))
1437         (direction . 0)
1438         (space-alist . ((left-edge . (extra-space . 1.0))
1439                         ))
1440         (break-align-symbol . instrument-name)
1441         (print-function . ,Text_interface::print)               
1442         (break-align-symbol . clef)
1443         (break-visibility . ,begin-of-line-visible)
1444         (baseline-skip . 2)
1445         (meta . ((interfaces . (font-interface
1446                                 self-alignment-interface
1447                                 side-position-interface text-interface
1448                                 break-aligned-interface item-interface ))))
1449         ))
1450
1451     (VoltaBracket
1452      . (
1453         (print-function . ,Volta_bracket_interface::print)
1454         (direction . 1)
1455         (padding . 1)
1456         (font-encoding . fetaNumber)
1457         (Y-offset-callbacks . (,Side_position_interface::aligned_side))
1458         (thickness . 1.6)  ;;  linethickness
1459         (height . 2.0) ;; staffspace;
1460         (minimum-space . 5)
1461         (font-size . -4)
1462         (meta . ((interfaces . (volta-bracket-interface
1463                                 line-interface text-interface
1464                                 side-position-interface font-interface spanner-interface))))
1465         ))
1466
1467
1468     (VoiceFollower
1469      . (
1470         (style . line)
1471         (gap . 0.5)
1472         (breakable . #t)
1473         (X-extent-callback . #f)
1474         (Y-extent-callback . #f)                        
1475         (print-function . ,Line_spanner::print)
1476         (after-line-breaking-callback . ,Line_spanner::after_line_breaking)
1477         (meta . ((interfaces . (line-spanner-interface line-interface spanner-interface))))
1478         ))
1479    ))
1480
1481 (define (completize-grob-entry x)
1482   "transplant assoc key into 'name entry of 'meta of X
1483 "
1484   (let* ((name-sym  (car x))
1485          (grob-entry (cdr x))
1486          (metaentry (cdr (assoc 'meta grob-entry)))
1487          (ifaces-entry
1488           (cdr (assoc 'interfaces metaentry)))
1489
1490         )
1491     (set! metaentry (assoc-set! metaentry 'name name-sym))
1492     (set! metaentry (assoc-set! metaentry 'interfaces
1493                                 (cons 'grob-interface ifaces-entry)))
1494     (set! grob-entry (assoc-set! grob-entry 'meta metaentry))
1495     (cons name-sym grob-entry)))
1496
1497 (set! all-grob-descriptions (map completize-grob-entry all-grob-descriptions))
1498
1499
1500 ;;  (display (map pair? all-grob-descriptions))
1501
1502 ;; make sure that \property Foo.Bar =\turnOff doesn't complain
1503
1504 (map (lambda (x)
1505        ;; (display (car x)) (newline)
1506
1507        (set-object-property! (car x) 'translation-type? list?)
1508        (set-object-property! (car x) 'is-grob? #t))
1509      all-grob-descriptions)
1510
1511 (set! all-grob-descriptions (sort all-grob-descriptions alist<?))