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