Layout interfaces - GNU LilyPond
Description: GNU LilyPond

Next: Determining the grob property, Previous: Navigating the program reference, Up: The \override command

#### 9.3.3 Layout interfaces

The HTML page that we found in the previous section describes the layout object called Fingering. Such an object is a symbol within the score. It has properties that store numbers (like thicknesses and directions), but also pointers to related objects. A layout object is also called a Grob, which is short for Graphical Object. For more details about Grobs, see grob-interface.

The page for `Fingering` lists the definitions for the `Fingering` object. For example, the page says

> `padding` (dimension, in staff space):

> `0.5`

which means that the number will be kept at a distance of at least 0.6 of the note head.

Each layout object may have several functions as a notational or typographical element. For example, the Fingering object has the following aspects

- Its size is independent of the horizontal spacing, unlike slurs or beams.
- It is a piece of text. Granted, it is usually a very short text.
- That piece of text is typeset with a font, unlike slurs or beams.
- Horizontally, the center of the symbol should be aligned to the center of the notehead.
- Vertically, the symbol is placed next to the note and the staff.
- The vertical position is also coordinated with other superscript and subscript symbols.

Each of these aspects is captured in so-called interfaces, which are listed on the Fingering page at the bottom

> This object supports the following interfaces: item-interface, self-alignment-interface, side-position-interface, text-interface, text-script-interface, font-interface, finger-interface, and grob-interface.

Clicking any of the links will take you to the page of the respective object interface. Each interface has a number of properties. Some of them are not user-serviceable (“Internal properties”), but others can be modified.

We have been talking of the `Fingering` object, but actually it does not amount to much. The initialization file (see Default files) `scm/define-grobs.scm` shows the soul of the `object',

    (Fingering
      . ((padding . 0.5)
         (avoid-slur . around)
         (slur-padding . 0.2)
         (staff-padding . 0.5)
         (self-alignment-X . 0)
         (self-alignment-Y . 0)
         (script-priority . 100)
         (stencil . ,ly:text-interface::print)
         (direction . ,ly:script-interface::calc-direction)
         (font-encoding . fetaNumber)
         (font-size . -5) 		; don't overlap when next to heads.
         (meta . ((class . Item)
         (interfaces . (finger-interface
                        font-interface
                        text-script-interface
                        text-interface
                        side-position-interface
                        self-alignment-interface
                        item-interface))))))

As you can see, the `Fingering` object is nothing more than a bunch of variable settings, and the webpage in the Program Reference is directly generated from this definition.

This page is for LilyPond-2.8.8 (stable-branch).

Other languages: English.
Using automatic language selection.