[ << Allgemeine Eingabe und Ausgabe ] | [Anfang][Inhalt][Index] | [ Abstände >> ] |
[ < Globale Einstellungen benutzen ] | [ Nach oben : Arbeiten an Eingabe-Dateien ] | [ Zeichenkodierung > ] |
3.3.3 Sonderzeichen
Zeichenkodierung | ||
Unicode | ||
ASCII-Aliase |
[ << Allgemeine Eingabe und Ausgabe ] | [Anfang][Inhalt][Index] | [ Abstände >> ] |
[ < Sonderzeichen ] | [ Nach oben : Sonderzeichen ] | [ Unicode > ] |
Zeichenkodierung
LilyPond benutzt alle Zeichen, die durch das Unicode-Konsortium und ISO/IEC 10646 definiert sind. Hiermit wird den Zeichen fast aller Schriftsysteme der Welt ein eindeutiger Name und ein Code-Punkt zugewiesen, mit dem sie identifizierbar sind. Unicode kann mit mehreren Zeichenkodierungen verwirklicht werden. LilyPond benutzt die UTF-8-Kodierung (UTF = Unicode Transformation Format), in der die normalen Zeichen des lateinischen Alphabets mit einem Byte dargestellt werden, während alle anderen Zeichen zwischen zwei und vier Byte Länge haben.
Das Aussehen des Zeichens wird bestimmt durch die gerade benutzte Schriftart (engl. font). In einer Schriftartdatei werden die Nummern der Unicode-Zeichen einem bestimmten Glyphen zugeordnet. LilyPond verwendet die Pango-Bibliothek um mehrsprachige Texte und komplexe Skripte korrekt zu setzen.
LilyPond verändert die Kodierung der Eingabedatei nicht. Das heißt, dass jeder Text – Überschriften, Gesangstext, Spielanweisungen etc. – der nicht nur aus ASCII-Zeichen besteht, in UTF-8 kodiert sein musst. Am einfachsten geht das, indem man einen Texteditor einsetzt, der mit Unicode-Zeichen umgehen kann. Die meisten modernen weit verbreiteten Editoren besitzen heute UTF-8-Unterstützung, wie etwa vim, Emacs, jEdit oder GEdit. Alle MS Windows-Systeme nach NT benutzen Unicode intern, sodass sogar Notepad Dateien in UTF-8 lesen und speichern kann. Ein Editor mit mehr Funktionen unter Windows ist BabelPad oder Notepad++.
Wenn eine LilyPond-Eingabedatei nicht-ASCII-Zeichen enthält und nicht in UTF-8 gespeichert ist, gibt es folgende Fehlermeldung:
FT_Get_Glyph_Name () error: invalid argument
Heir ein Beispiel mit Kyrilliza, hebräischem und portugiesischem Text:
[ << Allgemeine Eingabe und Ausgabe ] | [Anfang][Inhalt][Index] | [ Abstände >> ] |
[ < Zeichenkodierung ] | [ Nach oben : Sonderzeichen ] | [ ASCII-Aliase > ] |
Unicode
Um einen einzelnen Buchstaben zu notieren, für den die Unicode-Ziffernfolge
bekannt ist, der aber nicht auf der Tastatur zu finden ist, kann
der Befehl \char ##xhhhh
oder \char #dddd
innerhalb einer
\markup
-Umgebung benutzt werden. Hierbei bedeutet hhhh
die
hexadezimale Zahl und ddd
die entsprechende dezimale Zahl
für das erforderliche Zeichen. Nullen zu Beginn können ausgelassen werden,
aber normalerweise werden alle vier Zeichen der hexadezimalen Notation
notiert. (Achten Sie darauf, dass Sie nicht UTF-8-Codepunkte
einsetzen, weil UTF-8 zusätzliche Bits enthält, die die Nummer der Oktets bezeichnet.) Unicode-Tabellen und ein Verzeichnis der Zeichenbezeichnungen
mit einer hexadezimalen Verweiszahl finden sich auf der Internetseite
des Unicode Consortiums: https://www.unicode.org/.
Mit \char ##x03BE
und \char #958
wird
beispielsweise das Unicode-Zeichen U+03BE notiert, welches die
Unicode-Bezeichnung „Greek Small Letter Xi“ hat.
Alle existierenden Unicode-Zeichen können auf diese Weise notiert werden, und wenn für alle Zeichen dieses Format angewandt wird, muss die Datei nicht im utf-8-Format gespeichert werden. Es muss natürlich auch noch eine Schriftart auf dem System installiert sein, die die notierten Zeichen darstellen kann.
Das nächste Beispiel zeigt, wie Unicode-Zeichen an vier Stellen mit dem hexadezimalen Code notiert werden: in einem Übungszeichen, als Artikulationszeichen, im Gesangstext und als normaler Text außerhalb der Partitur.
\score { \relative { c''1 \mark \markup { \char ##x03A8 } c1_\markup { \tiny { \char ##x03B1 " to " \char ##x03C9 } } } \addlyrics { O \markup { \concat { Ph \char ##x0153 be! } } } } \markup { "Copyright 2008--2022" \char ##x00A9 }
Um das Copyright-Zeichen zu notieren, kann folgender Code eingesetzt werden:
\header { copyright = \markup { \char ##x00A9 "2008" } }
[ << Allgemeine Eingabe und Ausgabe ] | [Anfang][Inhalt][Index] | [ Abstände >> ] |
[ < Unicode ] | [ Nach oben : Sonderzeichen ] | [ Ausgabe kontrollieren > ] |
ASCII-Aliase
Eine Liste von ASCII-Befehlen für Sonderzeichen kann eingefügt werden:
\paper { #(include-special-characters) } \markup "&flqq; – &OE;uvre incomplète… &frqq;" \score { \new Staff { \repeat unfold 9 a'4 } \addlyrics { This is al -- so wor -- kin'~in ly -- rics: –_&OE;… } } \markup \column { "The replacement can be disabled:" "– &OE; …" \override #'(replacement-alist . ()) "– &OE; …" }
Man kann auch eigen Aliase erstellen, entweder global:
\paper { #(add-text-replacements! '(("100" . "hundred") ("dpi" . "dots per inch"))) } \markup "A 100 dpi."
oder lokal:
\markup \replace #'(("100" . "hundred") ("dpi" . "dots per inch")) "A 100 dpi."
Siehe auch
Notationsreferenz: Liste der Sonderzeichen.
Installierte Dateien: ‘ly/text-replacements.ly’.
[ << Allgemeine Eingabe und Ausgabe ] | [Anfang][Inhalt][Index] | [ Abstände >> ] |
[ < Unicode ] | [ Nach oben : Sonderzeichen ] | [ Ausgabe kontrollieren > ] |