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