3.3.3 Caracteres especiales
Codificación del texto | ||
Unicode | ||
Alias de ASCII |
[ << Entrada y salida generales ] | [Arriba][Índice general][Índice] | [ Problemas de espaciado >> ] |
[ < Caracteres especiales ] | [ Subir : Caracteres especiales ] | [ Unicode > ] |
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 la codificación 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:
[ << Entrada y salida generales ] | [Arriba][Índice general][Índice] | [ Problemas de espaciado >> ] |
[ < Codificación del texto ] | [ Subir : Caracteres especiales ] | [ Alias de ASCII > ] |
Unicode
Para introducir un carácter aislado para el que se conoce el
punto de código Unicode pero no está disponible en el editor que
se está usando, use \char ##xhhhh
o bien \char
#dddd
dentro de un bloque \markup
, donde hhhh
es
el código hexadecimal del carácter en cuestión y dddd
es
su valor decimal correspondiente. Pueden omitirse los ceros
iniciales, pero es costumbre indicar los cuatro caracteres en la
representación hexadecimal (observe que no debe utilizarse
la codificación UTF-8 del punto de código Unicode después de
\char
, pues la codificación UTF-8 contiene bits
adicionales que indican el número de octetos). Hay tablas de
códigos Unicode y un índice de nombres de caracteres que da el
punto de código en hexadecimal para cualquier carácter en el
portal del Consorcio Unicode, https://www.unicode.org/.
Por ejemplo, tanto \char ##x03BE
como \char #958
insertan el carácter Unicode U+03BE, que tiene el nombre Unicode
“Letra griega Xi pequeña”.
Se puede escribir de esta forma cualquier punto de código 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 valores hexadecimales Unicode 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''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 }
Para escribir el símbolo de copyright en la nota de créditos, utilice:
\header { copyright = \markup { \char ##x00A9 "2008" } }
[ << Entrada y salida generales ] | [Arriba][Índice general][Índice] | [ Problemas de espaciado >> ] |
[ < Unicode ] | [ Subir : Caracteres especiales ] | [ Controlar la salida > ] |
Alias de ASCII
Se puede incluir una lista de alias de ASCII para caracteres especiales:
\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; …" }
También podemos hacer nuestros propios alias, ya sea de forma global,
\paper { #(add-text-replacements! '(("100" . "hundred") ("dpi" . "dots per inch"))) } \markup "A 100 dpi."
o local:
\markup \replace #'(("100" . "hundred") ("dpi" . "dots per inch")) "A 100 dpi."
Véase también
Referencia de la notación: Lista de caracteres especiales.
Archivos instalados: ‘ly/text-replacements.ly’.
[ << Entrada y salida generales ] | [Arriba][Índice general][Índice] | [ Problemas de espaciado >> ] |
[ < Unicode ] | [ Subir : Caracteres especiales ] | [ Controlar la salida > ] |