Guida alla Notazione di LilyPond: 3.3.3 Caratteri speciali

### 3.3.3 Caratteri speciali

#### Codifica del testo

LilyPond usa il repertorio di caratteri definito dall’Unicode Consortium e dalla ISO/IEC 10646. Questo sistema di codifica definisce un nome e un numero univoci per gli insiemi di caratteri utilizzati in tutte le lingue moderne e anche in molte altre. Unicode può essere implementato in varie codifiche diverse. LilyPond usa la codifica UTF-8 (UTF sta per Unicode Transformation Format) che rappresenta tutti i comuni caratteri latini con un byte, e gli altri caratteri con un formato di lunghezza variabile fino a quattro byte.

L’aspetto grafico dei caratteri è determinato dai glifi definiti nei tipi di carattere disponibili - un tipo di carattere definisce la mappatura tra un sottoinsieme dei numeri Unicode e i glifi. LilyPond usa la libreria Pango per rappresentare e formattare i testi multilingua.

LilyPond non esegue alcuna conversione della codifica dell’input. Ciò significa che qualsiasi testo, sia esso un titolo, un testo vocale o un’istruzione musicale contenente caratteri non-ASCII, deve essere codificato in UTF-8. Il modo più semplice per inserire tale testo è usare un editor che sappia riconoscere la codifica Unicode e salvare il file con la codifica UTF-8. La maggior parte dei moderni editor supporta la codifica UTF-8, per esempio vim, Emacs, jEdit e Gedit. Tutti i sistemi MS Windows successivi a NT usano Unicode come codifica dei caratteri nativa, quindi perfino Notepad può modificare e salvare un file in formato UTF-8. Un’alternativa più efficiente per Windows è BabelPad.

Se un file di input LilyPond contenente un caratter non-ASCII non viene salvato in formato UTF-8, apparirà il seguente messaggio di errore:

>     FT_Get_Glyph_Name () error: invalid argument

Ecco un esempio che mostra del testo cirillico, ebraico e portoghese:

#### Unicode

Per inserire un singolo carattere per il quale è noto il codice Unicode ma che non è disponibile nell’editor in uso, usare `\char ##xhhhh` o `\char #dddd` dentro un blocco `\markup`, dove `hhhh` è il codice esadecimale del carattere richiesto e `dddd` è il valore decimale corrispondente. Gli zero iniziali possono essere omessi, ma di norma nella rappresentazione esadecimale si specificano tutti e quattro i caratteri. (Fare attenzione al fatto che la codifica UTF-8 del codice non deve essere usata dopo `\char`, perché le codifiche UTF-8 contengono bit extra che indicano il numero di ottetti.) Le tabelle dei codici Unicode e un indice dei nomi dei caratteri col proprio codice esadecimale sono disponibili sul sito dell’Unicode Consortium, http://www.unicode.org/.

Per esempio, `\char ##x03BE` e `\char #958` corrispondono entambi al carattere Unicode U+03BE, che ha il nome Unicode “Greek Small Letter Xi”.

Qualsiasi codice Unicode può essere inserito in questo modo e se tutti i caratteri speciali sono inseriti in questo formato non è necessario salvare il file di input in formato UTF-8. Ovviamente, un tipo di carattere contenente tutti questi caratteri codificati deve essere installato e disponibile per LilyPond.

L’esempio seguente mostra valori esadecimali Unicode inseriti in quattro posti diversi: come numero di chiamata, come articolazione, nel testo vocale e come testo separato sotto il brano:

>     \score {
>       \relative {
>         c''1 \mark \markup { \char ##x03A8 }
>         c1_\markup { \tiny { \char ##x03B1 " a " \char ##x03C9 } }
>       }
>       \addlyrics { O \markup { \concat { Ph \char ##x0153 be! } } }
>     }
>     \markup { "Copyright 2008--2020" \char ##x00A9 }

Per inserire il segno del copyright nell’apposito campo usare:

>     \header {
>       copyright = \markup { \char ##x00A9 "2008" }
>     }

#### Alias ASCII

È possibile includere una lista di alias ASCII per i caratteri speciali:

>     \paper {
>       #(include-special-characters)
>     }

>     \markup "&flqq; &ndash; &OE;uvre incomplète&hellip; &frqq;"

>     \score {
>       \new Staff { \repeat unfold 9 a'4 }
>       \addlyrics {
>         Fun -- ziona an -- che nel~tes -- to: &ndash;_&OE;&hellip;
>       }
>     }

>     \markup \column {
>       "La sostituzione può essere disabilitata:"
>       "&ndash; &OE; &hellip;"
>       \override #'(replacement-alist . ()) "&ndash; &OE; &hellip;"
>     }

Si possono creare i propri alias, sia globalmente:

>     \paper {
>       #(add-text-replacements!
>         '(("100" . "hundred")
>           ("dpi" . "dots per inch")))
>     }
>     \markup "A 100 dpi."

che localmente:

>     \markup \replace #'(("100" . "hundred")
>                         ("dpi" . "dots per inch")) "A 100 dpi."

#### Vedi anche

Guida alla notazione: Elenco dei caratteri speciali.

File installati: ‘`ly/text-replacements.ly`’.

#### LilyPond — Guida alla Notazione v2.22.2 (ramo stabile).