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