]> git.donarmstrong.com Git - lilypond.git/blob - scm/define-grobs.scm
* scm/define-grobs.scm (all-grob-descriptions): reorganize in
[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     (DynamicText
405      . (
406         (Y-offset-callbacks . (,Self_alignment_interface::aligned_on_self))
407         (print-function . ,Text_interface::print)
408         (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self))
409         (self-alignment-X . 0)
410         (no-spacing-rods . #t)
411         (script-priority . 100)
412         (font-series . bold)
413         (font-encoding . fetaDynamic)
414         (font-shape . italic)
415         (self-alignment-Y . 0)
416         (meta . ((interfaces . (font-interface text-interface self-alignment-interface
417                                                dynamic-interface script-interface item-interface))))
418         ))
419     (DynamicTextSpanner
420      . ((print-function . ,Dynamic_text_spanner::print)
421
422 ;; rather ugh with NCSB
423 ;       (font-series . bold)
424         (font-shape . italic)
425         (style . dashed-line)
426
427         ; need to blend with dynamic texts.
428         (font-size . 1)
429         (bound-padding . 0.75)
430         (dash-fraction . 0.2)
431         (dash-period . 3.0)
432         (meta . ((interfaces . (font-interface
433                                 text-interface
434                                 dynamic-interface dynamic-text-spanner-interface
435                                 item-interface))))
436          ))
437
438     (DynamicLineSpanner
439      . (
440         (axes . (1))
441         (Y-extent-callback . ,Axis_group_interface::group_extent_callback)      
442         (Y-offset-callbacks . (,Side_position_interface::aligned_side))
443         (staff-padding . 0.1)
444         (padding . 0.6)
445         (minimum-space . 1.2)
446         (direction . -1)
447         
448         (meta . ((interfaces . (dynamic-interface axis-group-interface
449                                                   side-position-interface spanner-interface))))))
450
451     (Fingering
452      . (
453         (print-function . ,Text_interface::print)
454
455         ; sync with TextScript (?)
456         (padding . 0.5)
457         (staff-padding . 0.5)
458         (self-alignment-X . 0)
459         (self-alignment-Y . 0)
460         (script-priority . 100)
461         (font-encoding . fetaNumber)
462         (font-size . -5)                ; don't overlap when next to heads.
463         (meta . ((interfaces . (finger-interface
464                                 font-interface text-script-interface text-interface
465                                 side-position-interface self-alignment-interface
466                                 item-interface))))
467         ))
468     (Glissando
469      . (
470         (style . line)
471         (gap . 0.5)
472         (zigzag-width . 0.75)
473         (breakable . #t)
474         (X-extent-callback . #f)
475         (Y-extent-callback . #f)                        
476         (after-line-breaking-callback . ,Line_spanner::after_line_breaking)
477         (print-function . ,Line_spanner::print)
478         (meta . ((interfaces . (line-interface line-spanner-interface spanner-interface))))
479         ))
480
481     (GridPoint
482      . (
483         (X-extent . (0 . 0))
484         (Y-extent . (0 . 0))
485         (meta . ((interfaces . (grid-point-interface))))
486         ))
487
488     (GridLine
489      . (
490         (print-function . ,Grid_line_interface::print)
491         (X-extent-callback  . ,Grid_line_interface::width_callback)
492         (self-alignment-X . ,CENTER)
493         (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self
494                                ,Self_alignment_interface::centered_on_parent))
495         (layer . 0)
496         (meta . ((interfaces . (self-alignment-interface grid-line-interface)))
497         )))
498         
499     (Hairpin
500      . (
501         (print-function . ,Hairpin::print)
502         (after-line-breaking-callback . ,Hairpin::after_line_breaking)
503         (thickness . 1.0)
504         (height . 0.6666)
505         (spacing-procedure . ,Spanner::set_spacing_rods)
506         (minimum-length . 2.0)
507         (bound-padding . 1.0)
508         (self-alignment-Y . 0)
509         (Y-offset-callbacks . (,Self_alignment_interface::aligned_on_self))
510         (meta . ((interfaces . (hairpin-interface
511                                 line-interface self-alignment-interface dynamic-interface
512                                 spanner-interface))))
513         ))
514
515     (HorizontalBracket
516      . (
517         (thickness . 1.0)
518         (print-function . ,Horizontal_bracket::print)
519         (Y-offset-callbacks . (,Side_position_interface::aligned_side))
520         (padding . 0.2)
521         (staff-padding . 0.2)
522         (direction . -1)
523         (bracket-flare . (0.5 . 0.5))
524         (meta . ((interfaces . (horizontal-bracket-interface
525                                 side-position-interface
526                                 line-interface
527                                 spanner-interface))))
528         ))
529     (InstrumentName
530      . (
531         (breakable . #t)
532         (Y-offset-callbacks . (,Self_alignment_interface::aligned_on_self
533                                ,Side_position_interface::aligned_on_support_refpoints))
534         ;; This direction is for aligned_on_support_refpoints
535         ;; (?) --hwn
536         (direction . 0)
537         (space-alist . (
538                         (left-edge . (extra-space . 1.0))
539                         ))
540
541         (self-alignment-Y . 0)
542         (print-function . ,Text_interface::print)               
543         (break-align-symbol . instrument-name)
544         (break-visibility . ,begin-of-line-visible)
545         (baseline-skip . 2)
546         (meta . ((interfaces . (font-interface
547                                 self-alignment-interface side-position-interface text-interface
548                                 break-aligned-interface item-interface ))))
549         ))
550
551     (KeyCancellation
552      . (
553         (print-function . ,Key_signature_interface::print)
554         (space-alist . (
555                         (time-signature . (extra-space . 1.25))
556                         (staff-bar . (extra-space . 0.6))
557                         (key-signature . (extra-space . 0.5))
558                         (right-edge . (extra-space . 0.5))
559                         (first-note . (fixed-space . 2.5))
560                         ))
561         (Y-offset-callbacks . (,Staff_symbol_referencer::callback))
562         (break-align-symbol . key-cancellation)
563         (break-visibility . ,begin-of-line-invisible)
564         (breakable . #t)
565         
566         (meta . ((interfaces . (key-signature-interface font-interface
567                                                         break-aligned-interface item-interface ))))
568         ))
569     (KeySignature
570      . (
571         (print-function . ,Key_signature_interface::print)
572         (space-alist . (
573                         (time-signature . (extra-space . 1.25))
574                         (staff-bar . (extra-space . 1.1))
575                         (right-edge . (extra-space . 0.5))
576                         (first-note . (fixed-space . 2.5))
577                         ))
578         (Y-offset-callbacks . (,Staff_symbol_referencer::callback))
579         (break-align-symbol . key-signature)
580         (break-visibility . ,begin-of-line-visible)
581         (breakable . #t)
582         
583         (meta . ((interfaces . (key-signature-interface font-interface
584                                                         break-aligned-interface item-interface ))))
585         ))
586     (LedgerLineSpanner
587      . (
588         (print-function . ,Ledger_line_spanner::print)
589         (X-extent-callback . #f)
590         (Y-extent-callback . #f)
591         (minimum-length-fraction . 0.25)
592         (length-fraction . 0.25)
593         (spacing-procedure . ,Ledger_line_spanner::set_spacing_rods)
594         (print-function . ,Ledger_line_spanner::print)
595         (layer . 0)
596         (meta . ((interfaces . (spanner-interface ledger-line-interface))))
597         ))
598
599     (LeftEdge
600      . (
601         (break-align-symbol . left-edge)
602         (X-extent . (0 . 0))
603         (breakable . #t)
604         (break-visibility . ,center-invisible)
605         (space-alist . (
606                         (custos . (extra-space . 0.0))
607                         (ambitus . (extra-space . 2.0))
608                         (time-signature . (extra-space . 0.0))
609                         (staff-bar . (extra-space . 0.0))
610                         (breathing-sign . (minimum-space . 0.0))
611                         (clef . (extra-space . 0.8))
612                         (first-note . (fixed-space . 1.0))
613                         (right-edge . (extra-space . 0.0))
614                         (key-signature . (extra-space . 0.0))
615                         (key-cancellation . (extra-space . 0.0))
616                         
617                         ))
618         (meta . ((interfaces . (break-aligned-interface item-interface ))))
619         ))
620
621     (LigatureBracket
622      . (
623         (ligature-primitive-callback . ,Note_head::print)
624         (direction . 1)
625         (gap . 0.0)
626         (padding . 2.0)
627         (thickness . 1.6)
628         (edge-height . (0.7 . 0.7))
629         (shorten-pair . (-0.2 . -0.2))
630         (before-line-breaking-callback . ,Tuplet_bracket::before_line_breaking)
631         (after-line-breaking-callback . ,Tuplet_bracket::after_line_breaking)
632         (print-function . ,Tuplet_bracket::print)
633         (meta . ((interfaces . (tuplet-bracket-interface line-interface spanner-interface))))
634         ))
635
636     (LyricHyphen
637      . (
638         (thickness . 1.3)
639         (height . 0.42)
640         (dash-period . 10.0)
641         (length . 0.66)
642         (minimum-length . 0.3)
643         (padding . 0.07)
644 ;       (spacing-procedure . ,Hyphen_spanner::set_spacing_rods)
645         (print-function . ,Hyphen_spanner::print)
646         (Y-extent . (0 . 0))
647         (meta . ((interfaces . (lyric-interface lyric-hyphen-interface
648                                                 spanner-interface))))
649         ))
650
651     (LyricExtender
652      . (
653         (print-function . ,Lyric_extender::print)
654         (thickness . 0.8) ; linethickness
655         (minimum-length . 1.5)
656         (Y-extent . (0 . 0))
657         (meta . ((interfaces . (lyric-interface
658                                 lyric-extender-interface spanner-interface))))
659         ))
660
661     (LyricText
662      . ((print-function . ,Text_interface::print)
663         (X-offset-callbacks . (,Self_alignment_interface::aligned_on_parent))
664         (self-alignment-X . 0)
665         (word-space . 0.6)
666         (font-series . bold-narrow)
667         (font-size . 1.0)
668         (meta . ((interfaces . (rhythmic-grob-interface
669                                 lyric-syllable-interface
670                                 self-alignment-interface text-interface
671                                 font-interface item-interface ))))
672         ))
673
674     (MensuralLigature
675      . (
676         (thickness . 1.4)
677         (flexa-width . 2.0)
678         (ligature-primitive-callback . ,Mensural_ligature::brew_ligature_primitive)
679         (print-function . ,Mensural_ligature::print)
680         (meta . ((interfaces . (mensural-ligature-interface font-interface))))
681         ))
682
683      (MetronomeMark
684      . (
685         (print-function . ,Text_interface::print)
686         (Y-offset-callbacks . (,Side_position_interface::aligned_side)) 
687         (direction . 1)
688         (padding . 0.8)
689         (meta . ((interfaces . (text-interface
690                                 side-position-interface font-interface
691                                 metronome-mark-interface item-interface))))
692         ))
693     (MeasureGrouping
694      . (
695         (Y-offset-callbacks . (,Side_position_interface::aligned_side))
696         (print-function . ,Measure_grouping::print)
697         (padding . 2)
698         (direction . 1)
699         (thickness . 1)
700         (height . 2.0)
701         (staff-padding . 3)
702         (meta . ((interfaces . (spanner-interface side-position-interface
703                                                   measure-grouping-interface))))
704         ))
705     (MultiMeasureRest
706      . (
707         (spacing-procedure . ,Multi_measure_rest::set_spacing_rods)
708         (print-function . ,Multi_measure_rest::print)
709         (Y-offset-callbacks . (,Staff_symbol_referencer::callback))
710         (staff-position . 0)
711         (expand-limit . 10)
712         (thick-thickness . 6.6)
713         (hair-thickness . 2.0)
714         (padding . 1)
715         (meta . ((interfaces . (multi-measure-rest-interface
716                                 multi-measure-interface rest-interface
717                                 font-interface staff-symbol-referencer-interface))))
718         ))
719
720     (MultiMeasureRestNumber
721      . (
722         (print-function . ,Text_interface::print)
723         (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self
724                                ,Self_alignment_interface::centered_on_other_axis_parent))
725         (Y-offset-callbacks . (,Side_position_interface::aligned_side))
726         (self-alignment-X . 0)
727         (direction . 1)
728         (padding . 0.4)
729         (staff-padding . 0.4)
730         (font-encoding . fetaNumber)
731         (meta . ((interfaces . (side-position-interface
732                                 multi-measure-interface self-alignment-interface
733                                 font-interface spanner-interface text-interface))))
734         ))
735     (MultiMeasureRestText
736      . (
737         (print-function . ,Text_interface::print)
738         (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self
739                                ,Self_alignment_interface::centered_on_other_axis_parent))
740         (Y-offset-callbacks . (,Side_position_interface::aligned_side))
741         (self-alignment-X . 0)
742         (direction . 1)
743         (padding . 0.2)
744         (staff-padding . 0.25)
745         (meta . ((interfaces . (side-position-interface
746                                 multi-measure-interface self-alignment-interface font-interface
747                                 spanner-interface text-interface))))
748         ))
749
750     (NoteCollision
751      . (
752         (axes . (0 1))
753         (X-extent-callback . ,Axis_group_interface::group_extent_callback)
754         (Y-extent-callback . ,Axis_group_interface::group_extent_callback)      
755         (meta . ((interfaces . (note-collision-interface axis-group-interface item-interface ))))
756         ))
757
758     (NoteColumn
759      . (
760         (axes . (0 1))
761         (X-extent-callback . ,Axis_group_interface::group_extent_callback)
762         (Y-extent-callback . ,Axis_group_interface::group_extent_callback)      
763         (meta . ((interfaces . (axis-group-interface note-column-interface item-interface ))))
764         ))
765
766     (NoteHead
767      . (
768         (print-function . ,Note_head::print)
769         (ligature-primitive-callback . ,Note_head::print)
770         (glyph-name-procedure . ,find-notehead-symbol)
771         (Y-offset-callbacks . (,Staff_symbol_referencer::callback))
772         (stem-attachment-function . ,note-head-style->attachment-coordinates)
773         (meta . ((interfaces . (rhythmic-grob-interface
774                                 rhythmic-head-interface font-interface note-head-interface
775                                 ledgered-interface
776                                 staff-symbol-referencer-interface item-interface ))))
777         ))
778
779     (NoteSpacing
780      . (
781         (stem-spacing-correction . 0.5)
782         (same-direction-correction . 0.25)
783         ;; Changed this from 0.75.
784         ;; If you ever change this back, please document! --hwn
785         (knee-spacing-correction . 1.0)
786         
787         (meta . ((interfaces . (spacing-interface note-spacing-interface item-interface ))))
788         ))
789
790
791     (NoteName
792      . (
793         (print-function . ,Text_interface::print)
794         (meta . ((interfaces . (note-name-interface
795                                 text-interface font-interface item-interface ))))
796         ))
797
798     (OctavateEight
799      . (
800         (self-alignment-X . 0)
801         (break-visibility . ,begin-of-line-visible)
802         (X-offset-callbacks . (,Self_alignment_interface::centered_on_parent ,Self_alignment_interface::aligned_on_self))
803         (Y-offset-callbacks . (,Side_position_interface::aligned_side))
804         (print-function . ,Text_interface::print)
805
806         ;; no Y dimensions, because of lyrics under tenor clef.
807         (Y-extent . (0 . 0))
808         (font-shape . italic)
809         (padding . 0.6)
810         (staff-padding . 0.2)
811         (font-size . -4)
812         (meta . ((interfaces . (text-interface self-alignment-interface side-position-interface font-interface item-interface ))))
813         ))
814
815     (OttavaBracket
816      . (
817         (Y-offset-callbacks . (,Side_position_interface::aligned_side))
818         (print-function . ,Ottava_bracket::print)
819         (font-shape . italic)
820         (shorten-pair . (0.0 . -0.6))
821         (staff-padding . 1.0)
822         (padding . 0.5)
823         (minimum-length . 1.0)
824         (dash-fraction . 0.3)
825         (edge-height . (0 . 1.2))
826         (direction . 1)
827         (meta . ((interfaces . (ottava-bracket-interface
828                                 line-interface side-position-interface
829                                 font-interface text-interface spanner-interface))))             
830         ))
831
832     (PaperColumn
833      . (
834         (axes . (0))
835         (before-line-breaking-callback . ,Paper_column::before_line_breaking)
836         (X-extent-callback . ,Axis_group_interface::group_extent_callback)
837
838 ;               (print-function . ,Paper_column::print) (font-name . "ecrm8") (Y-extent-callback . #f)
839         (meta . ((interfaces . (paper-column-interface axis-group-interface spaceable-grob-interface item-interface ))))
840         ))
841
842     (PhrasingSlur
843      . ((slur-details . ,default-slur-details)
844         (print-function . ,Slur::print)
845         (thickness . 1.1)               
846         (spacing-procedure . ,Spanner::set_spacing_rods)                
847         (minimum-length . 1.5)
848         (after-line-breaking-callback . ,Slur::after_line_breaking)
849         (Y-extent-callback . ,Slur::height)
850         (height-limit . 2.0)
851         (ratio . 0.333)
852         (meta . ((interfaces . (slur-interface spanner-interface))))
853         ))
854
855     (NonMusicalPaperColumn
856      . (
857         (axes . (0))
858         (X-extent-callback . ,Axis_group_interface::group_extent_callback)
859         (before-line-breaking-callback . ,Paper_column::before_line_breaking)
860         (breakable . #t)
861         ;; debugging stuff: print column number.
862 ;       (print-function . ,Paper_column::print) (font-name . "ecrm8")   (Y-extent-callback . #f)
863
864
865         (meta . ((interfaces . (paper-column-interface axis-group-interface spaceable-grob-interface item-interface ))))
866         ))
867
868     (PercentRepeat
869      . (
870         (spacing-procedure . ,Multi_measure_rest::set_spacing_rods)
871         (print-function . ,Multi_measure_rest::percent)
872         (slope . 1.0)
873         (thickness . 0.48)
874         (font-encoding . fetaMusic)
875         (meta . ((interfaces . (multi-measure-rest-interface spanner-interface font-interface percent-repeat-interface))))
876         ))
877
878     ;; an example of a text spanner
879     (PianoPedalBracket
880      . (
881         (print-function . ,Piano_pedal_bracket::print)
882         (style . line)
883         (bound-padding . 1.0)
884         (direction . -1)
885         (bracket-flare . (0.5 . 0.5))
886         (edge-height . (1.0 . 1.0))
887         (shorten-pair . (0.0 . 0.0))
888         (thickness .  1.0)
889         (meta . ((interfaces . (line-interface
890                                 piano-pedal-interface piano-pedal-bracket-interface spanner-interface))))
891         ))
892
893     (RehearsalMark
894      . (
895         (print-function . ,Text_interface::print)
896         (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self))
897         (Y-offset-callbacks . (,Side_position_interface::aligned_side))
898         (after-line-breaking-callback . ,shift-right-at-line-begin)
899         (self-alignment-X . 0)
900         (direction . 1)
901         (breakable . #t)
902         (font-size . 2)
903         (baseline-skip . 2)
904         (break-visibility . ,end-of-line-invisible)
905         (padding . 0.8)
906         (meta . ((interfaces . (text-interface
907                                 side-position-interface font-interface mark-interface
908                                 self-alignment-interface item-interface ))))
909         ))
910     
911
912     (RemoveEmptyVerticalGroup
913      . (
914         (Y-offset-callbacks . (,Hara_kiri_group_spanner::force_hara_kiri_callback))
915         (Y-extent-callback . ,Hara_kiri_group_spanner::y_extent)
916         (axes . (1))
917         (meta . ((interfaces . (axis-group-interface
918                                 vertically-spaceable-interface hara-kiri-group-interface
919                                 item-interface spanner-interface))))
920         ))
921
922     (RepeatSlash
923      . (
924         (print-function . ,Percent_repeat_item_interface::beat_slash)
925         (thickness . 0.48)
926         (slope . 1.7)
927         (meta . ((interfaces . (percent-repeat-interface item-interface ))))
928         ))
929     (Rest
930      . (
931         (after-line-breaking-callback . ,Rest::after_line_breaking)
932         (X-extent-callback . ,Rest::extent_callback)
933         (Y-extent-callback . ,Rest::extent_callback)            
934         (print-function . ,Rest::print)
935         (Y-offset-callbacks . (,Staff_symbol_referencer::callback
936                                ,Rest::polyphonic_offset_callback
937                                ))
938         (minimum-distance . 0.25)
939         (meta . ((interfaces . (font-interface
940                                 rhythmic-head-interface
941                                 rhythmic-grob-interface
942                                 staff-symbol-referencer-interface
943                                 rest-interface item-interface ))
944                 ))))
945
946     (RestCollision
947      . (
948         (minimum-distance . 0.75)
949         (meta . ((interfaces . (rest-collision-interface item-interface ))))
950         ))
951
952     (Script
953      . (
954         ;; don't set direction here: it breaks staccato.
955         (print-function . ,Script_interface::print)
956
957         ;; This value is sensitive: if too large, staccato dots will move a
958         ;; space a away.
959         (padding . 0.20)
960         (staff-padding . 0.25)
961         ;; (script-priority . 0) priorities for scripts, see script.scm
962         (X-offset-callbacks . (,Self_alignment_interface::centered_on_parent))
963         (before-line-breaking-callback . ,Script_interface::before_line_breaking)
964         (font-encoding . fetaMusic)
965         (meta . ((interfaces . (script-interface
966                                 side-position-interface font-interface item-interface ))))
967         ))
968
969     (ScriptColumn
970      . (
971         (before-line-breaking-callback . ,Script_column::before_line_breaking)
972         (meta . ((interfaces . (script-column-interface item-interface ))))
973         ))
974
975
976     (SeparationItem
977      . (
978         (X-extent-callback . #f)
979         (Y-extent-callback . #f)
980         (meta . ((interfaces . (spacing-interface separation-item-interface item-interface ))))
981         ))
982
983     (SeparatingGroupSpanner
984      . (
985         (spacing-procedure . ,Separating_group_spanner::set_spacing_rods)
986         (meta . ((interfaces . (only-prebreak-interface spacing-interface separation-spanner-interface spanner-interface))))
987         ))
988     
989     (Slur
990      . ((slur-details . ,default-slur-details)
991         (print-function . ,Slur::print)
992         (thickness . 1.0)               
993         (spacing-procedure . ,Spanner::set_spacing_rods)                
994         (minimum-length . 1.5)
995         (after-line-breaking-callback . ,Slur::after_line_breaking)
996         (Y-extent-callback . ,Slur::height)
997                                         ; Slur::height)
998         (height-limit . 2.0)
999         (ratio . 0.25)
1000         (meta . ((interfaces . (slur-interface spanner-interface))))
1001         ))
1002
1003     (SpacingSpanner
1004      . (
1005         (spacing-procedure . ,Spacing_spanner::set_springs)
1006         (grace-space-factor . 0.6)
1007         (shortest-duration-space . 2.0)
1008         (spacing-increment . 1.2)
1009         (base-shortest-duration . ,(ly:make-moment 3 16))
1010         (meta . ((interfaces . (spacing-interface spacing-spanner-interface spanner-interface))))
1011         ))
1012
1013     (SpanBar
1014      . (
1015         (break-align-symbol . staff-bar)
1016         (bar-size-procedure . ,Span_bar::get_bar_size)
1017         (print-function . ,Span_bar::print)
1018         (X-extent-callback . ,Span_bar::width_callback)
1019         (Y-extent-callback . ())
1020         (layer . 0)
1021         (breakable . #t)
1022         (before-line-breaking-callback . ,Span_bar::before_line_breaking)
1023         ;; ugh duplication!
1024
1025         ;;
1026         ;; Ross. page 151 lists other values, we opt for a leaner look
1027         ;;
1028         (kern . 3.0)
1029         (thin-kern . 3.0)
1030         (hair-thickness . 1.6)
1031         (thick-thickness . 6.0)
1032         (meta . ((interfaces . (span-bar-interface font-interface
1033                                                    bar-line-interface item-interface ))))
1034         ))
1035
1036     (StanzaNumber
1037      . ((print-function . ,Text_interface::print)               
1038         (font-series . bold)
1039         (padding . 1.0)
1040         (X-offset-callbacks . (,Side_position_interface::aligned_side))
1041         (direction . ,LEFT)
1042         (meta . ((interfaces . (side-position-interface
1043                                 stanza-number-interface text-interface font-interface item-interface ))))               
1044         ))
1045
1046     (StringNumber
1047      . (
1048         (print-function . ,print-circled-text-callback)
1049         (padding . 0.5)
1050         (staff-padding . 0.5)
1051         (self-alignment-X . 0)
1052         (self-alignment-Y . 0)
1053         (script-priority . 100)
1054         (font-encoding . fetaNumber)
1055         (font-size . -5)                ; don't overlap when next to heads.
1056         (meta . ((interfaces . (string-number-interface
1057                                 font-interface text-script-interface text-interface
1058                                 side-position-interface self-alignment-interface
1059                                 item-interface))))
1060         ))
1061
1062     (StaffSpacing
1063      . (
1064         (breakable . #t)
1065         (stem-spacing-correction . 0.4)
1066
1067         (meta . ((interfaces . (spacing-interface staff-spacing-interface item-interface ))))
1068         ))
1069
1070     (SostenutoPedal
1071      . (
1072         (print-function . ,Text_interface::print)
1073         (direction . 1)
1074         (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self))
1075         (no-spacing-rods . #t)
1076         (padding . 0.0) ;; padding relative to SostenutoPedalLineSpanner
1077         (font-shape . italic)
1078         (self-alignment-X . 0)
1079         (meta . ((interfaces . (text-interface
1080                                 self-alignment-interface font-interface item-interface))))
1081         ))
1082
1083     (SostenutoPedalLineSpanner
1084      . (
1085         (axes . (1))
1086         (Y-extent-callback . ,Axis_group_interface::group_extent_callback)      
1087         (Y-offset-callbacks . (,Side_position_interface::aligned_side))
1088         
1089
1090         (padding . 1.2)
1091         (minimum-space . 1.0)
1092         (direction . -1)
1093         (meta . ((interfaces . (piano-pedal-interface
1094                                 axis-group-interface side-position-interface spanner-interface))))
1095         ))
1096
1097     (StaffSymbol
1098      . (
1099         (print-function . ,Staff_symbol::print)
1100         (line-count . 5)
1101         (ledger-line-thickness . (1.0 . 0.1))
1102         (layer . 0)
1103         (meta . ((interfaces . (staff-symbol-interface spanner-interface))))
1104         ))
1105         
1106     (Stem
1107      . (
1108         ;; this list is rather long. Trim --hwn
1109         (before-line-breaking-callback . ,Stem::before_line_breaking)
1110         (print-function . ,Stem::print)
1111         (thickness . 1.3)
1112
1113         ;; 3.5 (or 3 measured from note head) is standard length
1114         ;; 32nd, 64th flagged stems should be longer
1115         (lengths . (3.5 3.5 3.5 4.5 5.0))
1116         
1117         ;; Stems in unnatural (forced) direction should be shortened by
1118         ;; one staff space, according to [Roush & Gourlay].
1119         ;; Flagged stems we shorten only half a staff space.
1120         (stem-shorten . (1.0 0.5))
1121
1122         ;; default stem direction for note on middle line
1123         (neutral-direction . -1)
1124
1125
1126
1127         ;; FIXME.  3.5 yields too long beams (according to Ross and
1128         ;; looking at Baerenreiter examples) for a number of common
1129         ;; boundary cases.  Subtracting half a beam thickness fixes
1130         ;; this, but the bug may well be somewhere else.
1131
1132         ;; FIXME this should come from 'lengths
1133
1134         (beamed-lengths . (3.26 3.5 3.6))
1135         
1136         ;; We use the normal minima as minimum for the ideal lengths,
1137         ;; and the extreme minima as abolute minimum length.
1138         
1139         ;; The 'normal' minima
1140         (beamed-minimum-free-lengths . (1.83 1.5 1.25))
1141         ;(beamed-minimum-free-lengths . (2.0 1.83 1.25))
1142         
1143         ;; The 'extreme case' minima
1144         (beamed-extreme-minimum-free-lengths . (2.0 1.25))
1145
1146         (X-offset-callbacks . (,Stem::offset_callback))
1147         (X-extent-callback . ,Stem::width_callback)     
1148         (Y-extent-callback . ,Stem::height)
1149         (Y-offset-callbacks . (,Staff_symbol_referencer::callback))
1150         (meta . ((interfaces . (stem-interface font-interface item-interface ))))
1151         ))
1152
1153     (StemTremolo
1154      . (
1155         (print-function . ,Stem_tremolo::print)
1156         (Y-extent-callback . ,Stem_tremolo::height)
1157         (X-extent-callback . #f)
1158
1159         (beam-width . 1.6) ; staff-space
1160         (beam-thickness . 0.48) ; staff-space
1161         (meta . ((interfaces . (stem-tremolo-interface item-interface ))))
1162         ))
1163
1164     (SustainPedal
1165      . (
1166         (no-spacing-rods . #t)
1167         (print-function . ,Sustain_pedal::print)
1168         (self-alignment-X . 0)
1169         (direction . 1)
1170         (padding . 0.0)  ;; padding relative to SustainPedalLineSpanner
1171         (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self))
1172         (meta . ((interfaces . (piano-pedal-interface
1173                                 text-spanner-interface text-interface self-alignment-interface
1174                                 font-interface item-interface))))
1175         ))
1176
1177     (SustainPedalLineSpanner
1178      . (
1179         (axes . (1))
1180         (Y-extent-callback . ,Axis_group_interface::group_extent_callback)
1181         (Y-offset-callbacks . (,Side_position_interface::aligned_side))
1182         
1183         (padding . 1.2)
1184         (staff-padding . 1.2)
1185         (minimum-space . 1.0)
1186         (direction . -1)
1187         (meta . ((interfaces . (piano-pedal-interface
1188                                 axis-group-interface side-position-interface spanner-interface))))
1189         ))
1190
1191     (System
1192      . (
1193         (axes . (0 1))
1194         (X-extent-callback . ,Axis_group_interface::group_extent_callback)
1195         (Y-extent-callback . ,Axis_group_interface::group_extent_callback)      
1196         (meta . ((interfaces . (system-interface axis-group-interface spanner-interface))))
1197         ))
1198
1199     (SystemStartBrace
1200      . (
1201         (glyph . "brace")
1202         (print-function . ,System_start_delimiter::print)
1203         (collapse-height . 5.0)
1204         (font-encoding . fetaBraces)
1205         (Y-extent-callback . #f)
1206         (meta . ((interfaces . (system-start-delimiter-interface font-interface))))
1207         ))
1208
1209     (SystemStartBracket
1210      . (
1211         (Y-extent-callback . #f)
1212         (X-offset-callbacks . (,(lambda (g a) -0.8)))
1213         (print-function . ,System_start_delimiter::print)
1214         (glyph . "bracket")
1215         (collapse-height . 1)
1216         (thickness . 0.45)
1217         (meta . ((interfaces . (font-interface system-start-delimiter-interface
1218                                                spanner-interface))))
1219         ))
1220
1221     (SystemStartBar
1222      . (
1223         (Y-extent-callback . #f)
1224         (print-function . ,System_start_delimiter::print)
1225         (glyph . "bar-line")
1226         (thickness . 1.6)
1227         (after-line-breaking-callback . ,System_start_delimiter::after_line_breaking)
1228         (meta . ((interfaces . (system-start-delimiter-interface spanner-interface))))
1229         ))
1230
1231
1232     (TabNoteHead
1233      . (
1234         (print-function . ,Text_interface::print)
1235         (Y-offset-callbacks . (,Staff_symbol_referencer::callback))
1236         (stem-attachment-function . ,tablature-stem-attachment-function)
1237         (font-series . bold)
1238         (meta . ((interfaces
1239                   . (rhythmic-head-interface
1240                      font-interface 
1241                      note-head-interface staff-symbol-referencer-interface
1242                      text-interface item-interface ))))
1243         ))
1244
1245
1246     (TextScript
1247      . (
1248         (print-function . ,Text_interface::print)
1249         (no-spacing-rods . #t)
1250         (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self))
1251         (direction . -1)
1252
1253         ; sync with Fingering ?
1254         (padding . 0.5)
1255         (staff-padding . 0.5)
1256         (script-priority . 200)
1257         ;; todo: add X self alignment?
1258         (meta . ((interfaces . (text-script-interface
1259                                 text-interface side-position-interface font-interface
1260                                 item-interface ))))
1261         ))
1262     
1263     (TextSpanner
1264      . (
1265         (print-function . ,Text_spanner::print)
1266         (font-shape . italic)
1267         (style . dashed-line)
1268         (staff-padding . 0.8)
1269         (dash-fraction . 0.2)
1270         (dash-period . 3.0)
1271         (direction . 1)
1272         (meta . ((interfaces . (text-spanner-interface side-position-interface font-interface spanner-interface))))             
1273         ))
1274
1275     
1276     (Tie
1277      . (
1278         (print-function . ,Tie::print)
1279         (spacing-procedure . ,Spanner::set_spacing_rods)
1280         (staffline-clearance . 0.35)
1281         (details . ((ratio . 0.333) (height-limit . 1.0)))
1282         (thickness . 1.0)
1283         (x-gap . -0.1)
1284         (y-offset . 0.6)
1285         (minimum-length . 2.5)
1286         (meta . ((interfaces . (tie-interface spanner-interface))))
1287         ))
1288
1289     (TieColumn
1290      . (
1291         (after-line-breaking-callback . ,Tie_column::after_line_breaking)
1292         (before-line-breaking-callback . ,Tie_column::before_line_breaking)
1293         (X-extent-callback . #f)
1294         (Y-extent-callback . #f)        
1295         (meta . ((interfaces . (tie-column-interface spanner-interface))))
1296         ))
1297
1298     (TimeSignature
1299      . (
1300         (print-function . ,Time_signature::print)
1301 ;       (print-function . ,Text_interface::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 ;       (text . (,time-signature-glue-markup))
1312         (meta . ((interfaces . (time-signature-interface break-aligned-interface font-interface item-interface ))))
1313         ))
1314
1315
1316     (TrillSpanner
1317      . (
1318         (print-function . ,Dynamic_text_spanner::print)
1319         (edge-text . ,(cons (make-musicglyph-markup "scripts.trill")
1320                             ""))
1321         (style . trill)
1322         (staff-padding . 1.0)
1323         (padding . 0.5)
1324         (direction . 1)
1325         (Y-offset-callbacks . (,Side_position_interface::aligned_side))
1326         (meta . ((interfaces . (text-spanner-interface side-position-interface font-interface spanner-interface))))             
1327         ))
1328     
1329     (TrillPitchAccidental
1330      . ((X-offset-callbacks . (,Side_position_interface::aligned_side))
1331         (padding . 0.2)
1332         (direction . ,LEFT)
1333         (font-size . -4)
1334         (print-function . ,Accidental_interface::print)
1335         (meta . ((interfaces . (item-interface  font-interface))))
1336         ))
1337
1338     (TrillPitchGroup
1339      . ((X-offset-callbacks . (,Side_position_interface::aligned_side))
1340         (axes . (,X))
1341         (font-size . -4)
1342         (print-function . ,parenthesize-elements)
1343         (direction . ,RIGHT)
1344         (padding . 0.3)
1345         (meta . ((interfaces . (font-interface item-interface axis-group-interface))))
1346         ))
1347
1348     (TrillPitchHead
1349      . ((print-function . ,Note_head::print)
1350         (duration-log . 2)
1351         (Y-offset-callbacks . (,Staff_symbol_referencer::callback))
1352         (font-size . -4)
1353         (meta . ((interfaces . (item-interface font-interface ledgered-interface staff-symbol-referencer-interface))))
1354         ))
1355     
1356
1357     (TupletBracket
1358      . (
1359         (padding . 1.1)
1360         (thickness . 1.6)
1361         (edge-height . (0.7 . 0.7))
1362         (shorten-pair . (-0.2 . -0.2))
1363         (before-line-breaking-callback . ,Tuplet_bracket::before_line_breaking)
1364         (after-line-breaking-callback . ,Tuplet_bracket::after_line_breaking)
1365         (print-function . ,Tuplet_bracket::print)
1366         (font-shape . italic)
1367 ;       (font-series . bold)
1368
1369         (font-size . -2)
1370         (meta . ((interfaces . (text-interface line-interface
1371                                                tuplet-bracket-interface
1372                                                font-interface spanner-interface))))
1373         ))
1374
1375     (UnaCordaPedal
1376      . (
1377         (print-function . ,Text_interface::print)
1378         (font-shape . italic)
1379         (no-spacing-rods . #t)
1380         (self-alignment-X . 0)
1381         (direction . 1)
1382         (padding . 0.0)  ;; padding relative to UnaCordaPedalLineSpanner
1383         (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self))
1384         (meta . ((interfaces . (text-interface self-alignment-interface font-interface item-interface ))))
1385         ))
1386
1387     (UnaCordaPedalLineSpanner
1388      . (
1389         (axes . (1))
1390         (Y-extent-callback . ,Axis_group_interface::group_extent_callback)      
1391         (Y-offset-callbacks . (,Side_position_interface::aligned_side))
1392         (padding . 1.2)
1393         (staff-padding . 1.2)
1394         (minimum-space . 1.0)
1395         (direction . -1)
1396         (meta . ((interfaces . (piano-pedal-interface axis-group-interface side-position-interface spanner-interface))))
1397         ))
1398
1399     (VaticanaLigature
1400      . (
1401         (thickness . 0.6)
1402         (flexa-width . 2.0)
1403         (ligature-primitive-callback . ,Vaticana_ligature::brew_ligature_primitive)
1404         (print-function . ,Vaticana_ligature::print)
1405         (meta . ((interfaces . (vaticana-ligature-interface font-interface))))
1406         ))
1407
1408
1409     (VerticalAlignment
1410      . (
1411         (axes . (1))
1412         (Y-extent-callback . ,Axis_group_interface::group_extent_callback)
1413         (X-extent-callback . ,Axis_group_interface::group_extent_callback)
1414         (stacking-dir . -1)
1415         (meta . ((interfaces . (align-interface axis-group-interface spanner-interface))))
1416         ))
1417
1418     (VerticalAxisGroup
1419      . (
1420         (axes . (1))
1421         (Y-extent-callback . ,Axis_group_interface::group_extent_callback)      
1422         (X-extent-callback . ,Axis_group_interface::group_extent_callback)
1423         
1424         (meta . ((interfaces . (axis-group-interface
1425                                 vertically-spaceable-interface spanner-interface))))
1426         ))
1427
1428     (VocalName
1429      . (
1430         (breakable . #t)
1431         (Y-offset-callbacks . (,Side_position_interface::aligned_on_support_refpoints))
1432         (direction . 0)
1433         (space-alist . ((left-edge . (extra-space . 1.0))
1434                         ))
1435         (break-align-symbol . instrument-name)
1436         (print-function . ,Text_interface::print)               
1437         (break-align-symbol . clef)
1438         (break-visibility . ,begin-of-line-visible)
1439         (baseline-skip . 2)
1440         (meta . ((interfaces . (font-interface
1441                                 self-alignment-interface
1442                                 side-position-interface text-interface
1443                                 break-aligned-interface item-interface ))))
1444         ))
1445
1446     (VoltaBracket
1447      . (
1448         (print-function . ,Volta_bracket_interface::print)
1449         (direction . 1)
1450         (padding . 1)
1451         (font-encoding . fetaNumber)
1452         (Y-offset-callbacks . (,Side_position_interface::aligned_side))
1453         (thickness . 1.6)  ;;  linethickness
1454         (height . 2.0) ;; staffspace;
1455         (minimum-space . 5)
1456         (font-size . -4)
1457         (meta . ((interfaces . (volta-bracket-interface
1458                                 line-interface text-interface
1459                                 side-position-interface font-interface spanner-interface))))
1460         ))
1461
1462
1463     (VoiceFollower
1464      . (
1465         (style . line)
1466         (gap . 0.5)
1467         (breakable . #t)
1468         (X-extent-callback . #f)
1469         (Y-extent-callback . #f)                        
1470         (print-function . ,Line_spanner::print)
1471         (after-line-breaking-callback . ,Line_spanner::after_line_breaking)
1472         (meta . ((interfaces . (line-spanner-interface line-interface spanner-interface))))
1473         ))
1474    ))
1475
1476 (define (completize-grob-entry x)
1477   "transplant assoc key into 'name entry of 'meta of X
1478 "
1479   (let* ((name-sym  (car x))
1480          (grob-entry (cdr x))
1481          (metaentry (cdr (assoc 'meta grob-entry)))
1482          (ifaces-entry
1483           (cdr (assoc 'interfaces metaentry)))
1484
1485         )
1486     (set! metaentry (assoc-set! metaentry 'name name-sym))
1487     (set! metaentry (assoc-set! metaentry 'interfaces
1488                                 (cons 'grob-interface ifaces-entry)))
1489     (set! grob-entry (assoc-set! grob-entry 'meta metaentry))
1490     (cons name-sym grob-entry)))
1491
1492 (set! all-grob-descriptions (map completize-grob-entry all-grob-descriptions))
1493
1494
1495 ;;  (display (map pair? all-grob-descriptions))
1496
1497 ;; make sure that \property Foo.Bar =\turnOff doesn't complain
1498
1499 (map (lambda (x)
1500        ;; (display (car x)) (newline)
1501
1502        (set-object-property! (car x) 'translation-type? list?)
1503        (set-object-property! (car x) 'is-grob? #t))
1504      all-grob-descriptions)
1505
1506 (set! all-grob-descriptions (sort all-grob-descriptions alist<?))