Příručka k učení se: 4.2.2 Vlastnosti nacházející se v rozhraních

### 4.2.2 Vlastnosti nacházející se v rozhraních

Der Text unseres Beispiels soll jetzt kursiv gesetzt werden. Was für ein `\override`-Befehl wird dazu benötigt? Schauen wir uns zunächst das Inhaltsverzeichnis in der IR an: „All layout objects“, wie auch schon zuvor. Welches Objekt könnte die Darstellung des Textes (engl. lyrics) beeinflussen? Es gibt den Eintrag `LyricText`, das hört sich schon sehr gut an. Ein Klick hierauf zeigt alle Eigenschaften an, die verändert werden können. Dazu gehört `font-series` und `font-size`, aber nichts, womit man kursiven Text erreichen könnte. Das liegt daran, dass die Schnitteigenschaft allen Schrift-Objekten gemeinsam ist. Sie findet sich also nicht in jedem einzelnen Layout-Objekt aufgelistet, sondern ist mit anderen ähnlichen Eigenschaften zusammen in einem Interface – einer Schnittstelle – verortet; in diesem Fall das `font-interface`.

Jetzt müssen wir also lernen, wie wir Eigenschaften von Schnittstellen finden und wie wir herausfinden, welche Objekte diese Schnittstelleneigenschaften benutzen.

Schauen Sie sich noch einmal die Seite in der IR an, die `LyricText` beschreibt. Unten auf der Seite ist eine klickbare Liste (in der HTML-Version der IR) an Eigenschaften, die von `LyricText` unterstützt werden. Diese Liste enthält sieben Einträge, darunter auch `font-interface`. Ein Klick hierauf bringt uns zu den Eigenschaften, die mit dieser Schnittstelle verbunden sind, also auch `LyricText`.

Jetzt sehen wir alle die Eigenschaften, die der Benutzer verändern kann, um die Schriftartendarstellung zu beeinflussen. Dazu gehört nun auch `font-shape(symbol)`, wobei `symbol` auf die Werte `upright` (gerade), `italics` (kursiv) oder `caps` (Kapitälchen) gesetzt werden kann.

Sie werden gemerkt haben, dass `font-series` und `font-size` hier auch aufgelistet sind. Es stellt sich die Frage, warum diese allgemeinen Schriftarteigenschaften `font-series` und `font-size` sowohl unter der Überschrift `LyricText` als unter dem `font-interface` aufgelistet sind, aber `font-shape` befindet sich nur im `font-interface`? Die Antwort ist: Die globalen Einstellungen von `font-series` und `font-size` werden geändert, wenn ein `LyricText`-Objekt erstellt wird, aber `font-shape` wird davon nicht beeinflusst. Die zusätzlichen Einträge unter der Überschrift `LyricText` beinhalten dann die Werte der Standardeinstellungen dieser zwei Eigenschaften, wenn es sich um ein `LyricText`-Objekt handelt. Andere Objekte, die auch das `font-interface` unterstützen, setzen diese Eigenschaften anders, wenn sie erstellt werden.

Versuchen wir nun einen `\override`-Befehl zu konstruieren, der den Gesangstext kursiv setzt. Das Objekt hat die Bezeichnung `LyricText`, die Eigenschaft ist `font-shape` und der Wert `italic`. Wie vorher schon lassen wir den Kontext aus.

Am Rande sei angemerkt, dass die Werte der `font-shape`-Eigenschaft mit einem Apostroph (`'`) gekennzeichnet werden müssen, weil es sich um Symbole handelt. Aus dem gleichen Grund mussten auch für `thickness` weiter oben im Text ein Apostroph gesetzt werden. Symbole sind besondere Bezeichnungen, die LilyPond intern bekannt sind. Einige sind Bezeichnungen von Eigenschaften, wie eben `thickness` oder `font-shape`. Andere sind besondere Werte, die an Eigenschaften übergeben werden können, wie `italic`. Im Unterschied hierzu gibt es auch beliebige Zeichenketten, die immer mit Anführungszeichen, also als `"Zeichenkette"` auftreten. Für weitere Einzelheiten zu Zeichenketten und Werten, siehe Scheme-Übung.

Gut, der `\override`-Befehl, mit dem der Gesangstext kursiv gesetzt wird, lautet:

>     \override LyricText.font-shape = #'italic

und er muss direkt vor den Text gesetzt werden, auf den er sich bezieht, etwa so:

>     {
>       \key es \major
>       \time 6/8
>       \relative {
>         r4 bes'8 bes[( g]) g |
>         g8[( es]) es d[( f]) as |
>         as8 g
>       }
>       \addlyrics {
>         \override LyricText.font-shape = #'italic
>         The man who | feels love's sweet e -- | mo -- tion
>       }
>     }

Jetzt wird der Text kursiv gesetzt.

### Den Kontext im Liedtextmodus bestimmen

Bei Gesangstexten funktioniert der `\override`-Befehl nicht mehr, wenn Sie den Kontext im oben dargestellten Format angeben. Eine Silbe wird im Gesangtextmodus (lyricmode) entweder von einem Leerzeichen, einer neuen Zeile oder einer Zahl beendet. Alle anderen Zeichen werden als Teil der Silbe integriert. Aus diesem Grund muss auch vor der schließenden Klammer `}` ein Leerzeichen gesetzt oder eine neue Zeile begonnen werden. Genauso müssen Leerzeichen vor und nach einem Punkt benutzt werden, um die Kontext-Bezeichnung von der Objekt-Bezeichnung zu trennen, denn sonst würden beide Bezeichnungen als ein Begriff interpretiert und von LilyPond nicht verstanden werden. Der Befehl muss also lauten:

>     \override Lyrics.LyricText.font-shape = #'italic

Pozor: Innerhalb von Gesangstext muss immer ein Leerzeichen zwischen der letzten Silbe und der schließenden Klammer gesetzt werden.

Pozor: Innerhalb von `override`-Befehlen in Gesangstexten müssen Leerzeichen um Punkte zwischen Kontext- und Objektbezeichnungen gesetzt werden.

#### Podívejte se také na

Erweitern: Scheme-Übung.

#### LilyPond – Learning Manual v2.22.2 (Stálá větev).