3.3.3 Codificación del texto
LilyPond usa el conjunto de caracteres definido por el consorcio Unicode y la norma ISO/IEC 10646. Define un nombre único y un código para los conjuntos de caracteres que se utilizan en prácticamente todos los idiomas modernos y también en muchos otros. Unicode se puede implementar utilizando varios esquemas de codificación distintos. LilyPond usa la codificación UTF-8 (UTF son las siglas de Unicode Transformation Format, o formato de transformación de Unicode) que representa todos los caracteres comunes de Latin en un solo byte, y representa otros caracteres usando un formato de longitud variable de hasta cuatro bytes.
El aspecto visual real de los caracteres viene determinado por los glifos que se definen en las fuentes tipográficas concretas que se tengan disponibles: una fuente tipográfica define la asignación de un subconjunto de los códigos de Unicode a glifos. LilyPond usa la biblioteca Pango para representar y disponer tipográficamente textos multilingües.
Lilypond no realiza ninguna conversión en la codificación de la entrada. Esto significa que cualquier text, ya sea el título, la letra de la canción o una instrucción musical que contenga caracteres distintos a los del conjunto ASCII, se deben codificar en UTF-8. La forma más fácil de escribir dicho texto es utilizar un editor preparado para Unicode y guardar el archivo con la codificación UTF-8. Casi todos los editores modernos populares contemplan el UTF-8, por ejemplo lo hacen vim, Emacs, jEdit, y GEdit. Todos los sistemas MS Windows posteriores a NT usan Unicode como codificación de caracteres nativa, de manera que incluso el accesorio Bloc de Notas (Notepad) puede editar y guardar un archivo en el formato UTF-8. Una alternativa más funcional para Windows es BabelPad.
Si un archivo de entrada que contiene un carácter que no es ASCII, no se guarda en el formato UTF-8, se genera el mensaje de error
FT_Get_Glyph_Name () error: argumento inválido
He aquí un ejemplo que muestra texto cirílico, hebreo y portugués:
Para introducir un caracter aislado para el que se conoce la secuencia
de escape de Unicode pero no está disponible en el editor que se está
usando, use \char ##xhhhh
dentro de un bloque \markup
,
donde hhhh
es el código hexadecimal del carácter en cuestión.
Por ejemplo, \char ##x03BE
inserta el carácter Unicode U+03BE,
que tiene el nombre Unicode “Letra griega Xi pequeña”. Se puede
sustituir cualquier código hexadecimal Unicode, y si todos los
caracteres especiales se escriben en este formato no es necesario
guardar el archivo de entrada en formato UTF-8. Por supuesto, debe
estar instalada y estar disponible para Lilypond una fuente
tipográfica que contenga codificados todos estos caracteres.
El ejemplo siguiente muestra caracteres codificados en UTF-8 que se usan en cuatro lugares: en una llamada de ensayo, como texto de articulación, en la letra y como texto independiente bajo la partitura:
\score { \relative c'' { c1 \mark \markup { \char ##x03EE } c1_\markup { \tiny { \char ##x03B1 " to " \char ##x03C9 } } } \addlyrics { O \markup { \concat{ Ph \char ##x0153 be! } } } } \markup { "Copyright 2008--2009" \char ##x00A9 }
Para escribir el símbolo de copyright en la nota de créditos, utilice:
\header { copyright = \markup { \char ##x00A9 "2008" } }