[ << Input e output ] | [Inizio][Contenuti][Indice] | [ Gestione dello spazio >> ] |
[ < Impostazioni globali ] | [ Su : Lavorare coi file di input ] | [ Codifica del testo > ] |
3.3.3 Caratteri speciali
Codifica del testo | ||
Unicode | ||
Alias ASCII |
[ << Input e output ] | [Inizio][Contenuti][Indice] | [ Gestione dello spazio >> ] |
[ < Caratteri speciali ] | [ Su : Caratteri speciali ] | [ Unicode > ] |
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:
[ << Input e output ] | [Inizio][Contenuti][Indice] | [ Gestione dello spazio >> ] |
[ < Codifica del testo ] | [ Su : Caratteri speciali ] | [ Alias ASCII > ] |
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,
https://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--2022" \char ##x00A9 }
Per inserire il segno del copyright nell’apposito campo usare:
\header { copyright = \markup { \char ##x00A9 "2008" } }
[ << Input e output ] | [Inizio][Contenuti][Indice] | [ Gestione dello spazio >> ] |
[ < Unicode ] | [ Su : Caratteri speciali ] | [ Controllo dell'output > ] |
Alias ASCII
È possibile includere una lista di alias ASCII per i caratteri speciali:
\paper { #(include-special-characters) } \markup "&flqq; – &OE;uvre incomplète… &frqq;" \score { \new Staff { \repeat unfold 9 a'4 } \addlyrics { Fun -- ziona an -- che nel~tes -- to: –_&OE;… } } \markup \column { "La sostituzione può essere disabilitata:" "– &OE; …" \override #'(replacement-alist . ()) "– &OE; …" }
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’.
[ << Input e output ] | [Inizio][Contenuti][Indice] | [ Gestione dello spazio >> ] |
[ < Unicode ] | [ Su : Caratteri speciali ] | [ Controllo dell'output > ] |