Referencia de la notación de GNU LilyPond: 1.8.3 Tipografías

### 1.8.3 Tipografías

Esta sección presenta la forma en que se manejan las fuentes tipográficas, y cómo se pueden cambiar en las partituras.

#### Explicación de las fuentes tipográficas

Las fuentes tipográficas se manejan a través de distintas bibliotecas. FontConfig se utiliza para detectar las tipografías disponibles; las tipografías seleccionadas se trazan utilizando Pango.

Además de cualquier fuente tipográfica que ya esté instalada en el sistema operativo, se pueden añadir fuentes adicionales al conjunto que detecta FontConfig (y por ello disponibles en las partituras de LilyPond) a través de las instrucciones siguientes:

>     #(ly:font-config-add-font "ruta/hacia/archivo-de-fuente.otf")

>     #(ly:font-config-add-directory "ruta/hacia/directorio/")

Las dos instrucciones admiten rutas absolutas y relativas, lo que permite compilar una partitura en cualquier sistema, simplemente copiando los archivos de fuente necesarios junto al código fuente de la partitura.

Cuando las fuentes han sido instaladas y detectadas, se pueden seleccionar usando los métodos que se describen en Fuentes de un solo elemento y en Fuentes tipográficas del documento completo. Dado que imprime la lista completa de las fuentes tipográficas disponibles en el archivo de registro de la consola, puede ser de utilidad la instrucción `#(ly:font-config-display-fonts)` para verificar qué fuentes se están efectivamente detectando, y bajo qué nombres (ya que pueden ser diferentes de los propios nombres de archivo).

Las tipografías de notación musical se pueden describir como un conjunto de glifos específicos, ordenados en varias familias. La siguiente sintaxis permite usar directamente varios glifos de la tipografía `Feta` de LilyPond distintas a las de texto en el modo de marcado:

>     a'1^\markup {
>       \vcenter {
>         \override #'(font-encoding . fetaBraces)
>         \lookup "brace120"
>         \override #'(font-encoding . fetaText)
>         \column { 1 3 sf }
>         \override #'(font-encoding . fetaMusic)
>         \lookup "noteheads.s0petrucci"
>       }
>     }

Sin embargo, todos estos glifos excepto las llaves de varios tamaños que están contenidas en la fuente tipográfica `fetaBraces` están disponibles utilizando la sintaxis más sencilla que se describe en Notación musical dentro de elementos de marcado.

Cuando se usan los glifos de la fuente de llaves `fetaBraces`, el tamaño de la llave se especifica por la parte numérica del nombre del glifo, en unidades arbitrarias. Se puede especificar cualquier entero de `0` a `575` inclusive, siendo `0` el que produce la llave más pequeña. El valor óptimo se debe determinar por ensayo y error. Todos estos glifos son llaves izquierdas; las llaves derechas se pueden obtener mediante rotación, véase Rotación de objetos.

Están disponibles tres familias de fuentes tipográficas para el texto: la fuente roman (romana, serif o con remates), la fuente sans (sin remates), y la fuente typewriter o monoespaciada.

Para el backend `svg`:

Familia | Fuente predeterminada
--- | ---
roman | `serif`
sans | `sans-serif`
typewriter | `monospace`

`serif`, `sans-serif` y `monospace` son `generic-family` (las familias estándar) en las especificaciones de SVG y CSS.

Para otros backends:

Familia | Fuente predeterminada (alias) | Listas de definición del alias
--- | --- | ---
roman | `LilyPond Serif` | TeX Gyre Schola, C059, Century SchoolBook URW, Century Schoolbook L, DejaVu Serif, ..., serif
sans | `LilyPond Sans Serif` | TeX Gyre Heros, Nimbus Sans, Nimbus Sans L, DejaVu Sans, ..., sans-serif
typewriter | `LilyPond Monospace` | TeX Gyre Cursor, Nimbus Mono PS, Nimbus Mono, Nimbus Mono L, DejaVu Sans Mono, ..., monospace

`LilyPond Serif`, `LilyPond Sans Serif` y `LilyPond Monospace` son alias de las fuentes tipográficas que están definidos en el archivo dedicado de configuración de LilyPond `00-lilypond-fonts.conf`. Allí donde un carácter no exista en la primera fuente de la lista, será sustituido por el carácter correspondiente extraído de la siguiente fuente de la lista. Para ver más detalles acerca de las definiciones de los alias, consulte `00-lilypond-fonts.conf` dentro de la carpeta de instalación del programa.

Cada familia puede incluir distintas formas y series. El ejemplo siguiente muestra la posibilidad de seleccionar familias, formas, series y tamaños alternativos. El valor que se da a `font-size` es el cambio requerido a partir del tamaño predeterminado.

>     \override Score.RehearsalMark.font-family = #'typewriter
>     \mark \markup "Ouverture"
>     \override Voice.TextScript.font-shape = #'italic
>     \override Voice.TextScript.font-series = #'bold
>     d''2.^\markup "Allegro"
>     \override Voice.TextScript.font-size = #-3
>     c''4^smaller

Se puede usar una sintaxis similar en el modo de marcado, aunque en este caso es preferible usar la sintaxis sencilla que se explica en Seleccionar la tipografía y su tamaño:

>     \markup {
>       \column {
>         \line {
>           \override #'((font-shape . italic) (font-size . 4))
>           Idomeneo,
>         }
>         \line {
>           \override #'(font-family . typewriter)
>           {
>             \override #'(font-series . bold)
>             re
>             di
>           }
>           \override #'(font-family . sans)
>           Creta
>         }
>       }
>     }

Al usar fuentes tipográficas de OpenType, pueden usarse las funcionalidades de fuente o font features. No se pueden especificar los idiomas ni los scripts de OpenType. Nota: no todas las fuentes de OpenType tienen todas las funciones. Si se requiere una funcionalidad que no existe en la fuente seleccionada, la funcionalidad sencillamente se ignora.

>     % Versalitas auténticas
>     \markup { Estilo normal: Hola HOLA }
>     \markup { \caps { Falsa versalita: Hola } }
>     \markup { \override #'(font-features . ("smcp"))
>               { Versalitas auténticas: Hola } }

>     % Estilos de números
>     \markup { Cifras de estilo normal: 0123456789 }
>     \markup { \override #'(font-features . ("onum"))
>               { Cifras de estilo antiguo: 0123456789 } }

>     % Alternativas de estilo
>     \markup { \override #'(font-features . ("salt 0"))
>               { Alternativa de estilo 0: εφπρθ } }
>     \markup { \override #'(font-features . ("salt 1"))
>               { Alternativa de estilo 1: εφπρθ } }

>     % Acumulación de funcionalidades
>     \markup { \override #'(font-features . ("onum" "smcp" "salt 1"))
>               { Acumulación de funcionalidades: Hola 0123456789 εφπρθ } }

Para ver la lista completa de funcionalidades de fuente de OpenType font, consulte: https://www.microsoft.com/typography/otspec/featurelist.htm

Para la identificación de las funcionalidades de fuente de OpenType, consulte: http://lists.gnu.org/archive/html/lilypond-devel/2017-08/msg00004.html

Aunque es fácil cambiar entre las fuentes tipográficas preconfiguradas, también es posible usar otras fuentes, como se explica en las siguientes secciones: Fuentes de un solo elemento y Fuentes tipográficas del documento completo.

#### Véase también

Referencia de la notación: La tipografía Emmentaler, Notación musical dentro de elementos de marcado, Rotación de objetos, Seleccionar la tipografía y su tamaño, Tipografías.

#### Fuentes de un solo elemento

Se puede usar en una partitura cualquier fuente tipográfica que esté instalada en el sistema operativo y reconocida por parte de FontConfig, usando la siguiente sintaxis:

>     \override Staff.TimeSignature.font-name = "Bitstream Charter"
>     \override Staff.TimeSignature.font-size = #2
>     \time 3/4

>     a'1_\markup {
>       \override #'(font-name . "Bitstream Vera Sans,sans-serif, Oblique Bold")
>         { Vera Oblique Bold }
>     }

font-name puede describirse usando una lista de ‘fuentes tipográfcias’ separadas por comas y una lista de ‘estilos’ separados por espacios. En la medida en que la ‘fuente tipográfica’ de la lista esté instalada y contenga el glifo solicitado, se usará. En caso contrario, se usará como sustitución la siguiente fuente tipográfica de la lista.

La ejecución de lilypond con la opción siguiente presenta una lista de todas las tipografías disponibles en el sistema operativo:

>     lilypond -dshow-available-fonts

#### Véase también

Referencia de la notación: Explicación de las fuentes tipográficas, Fuentes tipográficas del documento completo.

Fragmentos de código: Text.

#### Fuentes tipográficas del documento completo

Se pueden cambiar las fuentes tipográficas que se usan como tipografías predeterminadas en las familias romana, sans-serif y monoespaciada, especificándolas en este orden como se ve en el ejemplo de abajo, que escala las tipografías automáticamente con el valor fijado para el tamaño global del pentagrama. De forma parecida a Fuentes de un solo elemento, se puede describir usando una lista de ‘fuentes tipográficas’ separadas por comas. Sin embargo, los ‘estilos’ de fuente no se pueden describir. Para leer más explicaciones sobre las fuentes tipográficas, consulte Explicación de las fuentes tipográficas.

>     \paper  {
>       #(define fonts
>         (make-pango-font-tree "Times New Roman"
>                               "Nimbus Sans,Nimbus Sans L"
>                               "Luxi Mono"
>                               (/ staff-height pt 20)))
>     }

>     \relative c'{
>       c1-\markup {
>         roman,
>         \sans sans,
>         \typewriter typewriter. }
>     }

Nota: `make-pango-font-tree` reinicia las fuentes tipográficas al tipo predeterminado Emmentaler.

La sintaxis siguiente nos permite cambiar las tipografías específicas, dejando el resto en sus valores predeterminados. El siguiente ejemplo tiene el mismo efecto que el ejemplo anterior de utilización de `make-pango-font-tree`. De igual manera que con `make-pango-font-tree`, podemos especificar una lista de valores separados por comas de ‘fonts’ para las categorías Romana, Sans serif y Monoespaciada (`roman`, `sans` y `typewriter`). Si no queremos cambiar el tamaño del pentagrama a otro distinto del predeterminado de 20 pt, no es necesaria la parte `#:factor (/ staff-height pt 20)`.

>     \paper {
>       #(define fonts
>         (set-global-fonts
>          #:roman "Times New Roman"
>          #:sans "Nimbus Sans,Nimbus Sans L"
>          #:typewriter "Luxi Mono"
>          #:factor (/ staff-height pt 20) ; innecesario si el tamaño del pentagrama es el predeterminado
>         ))
>     }

También se pueden especificar las fuentes de la notación. El ejemplo siguiente también tiene el mismo efecto que en los casos anteriores, porque establece las fuentes para la notación como las predeterminadas. Para más información, véase Sustituir la tipografía de la notación.

>     \paper {
>       #(define fonts
>         (set-global-fonts
>          #:music "emmentaler"            ; predeterminado
>          #:brace "emmentaler"            ; predeterminado
>          #:roman "Times New Roman"
>          #:sans "Nimbus Sans,Nimbus Sans L"
>          #:typewriter "Luxi Mono"
>          #:factor (/ staff-height pt 20) ; innecesario si el tamaño del pentagrama es el predeterminado
>         ))
>     }

Nota: cada llamada a `set-global-fonts` reinicia completamente tanto la fuente tipográfica de la notación como las de texto. Si se deja sin especificar una cualquiera de las categorías, entonces se utiliza la fuente predeterminada para dicha categoría. Cada llamada a `set-global-fonts` afecta a cada uno de los bloques `\book` que le siguen. Si existen varios bloques `\book` y queremos usar distintas fuentes tipográficas para cada uno de ellos, sencillamente llamamos de nuevo a `set-global-fonts`, así:

>     \paper {
>       #(define fonts
>         (set-global-fonts
>          …
>         ))
>     }
>     \book {
>       …
>     }

>     \paper {
>       #(define fonts
>         (set-global-fonts
>          …
>         ))
>     }
>     \book {
>       …
>     }

#### Véase también

Referencia de la notación: Explicación de las fuentes tipográficas, Fuentes de un solo elemento, Seleccionar la tipografía y su tamaño, Tipografías, Sustituir la tipografía de la notación.

#### LilyPond — Referencia de la notación v2.22.2 (rama estable).