Améliorations en matière de fontes et de mise en forme du texte (LilyPond Changes)

### Améliorations en matière de fontes et de mise en forme du texte

- Des têtes de note de forme triangulaire ont été ajoutées à la fonte Emmentaler. Elles sont utilisables en réglant `NoteHead.style` à `arrow`.
- La nouvelle commande de markup `\bar-line` permet d’imprimer une barre de mesure dans du texte.

  >     \markup {
  >       \override #'(word-space . 2)
  >         \line {
  >           Exemples
  >           \fontsize #-5 \translate-scaled #'(0 . 2) {
  >             \bar-line ":|."
  >             \bar-line ".|:"
  >             \bar-line ";!S!;"
  >             \bar-line "]{|}["
  >           }
  >         }
  >     }

- La syntaxe permettant de modifier les fontes musicales et textuelles a changé. Au lieu de

  >     \paper {
  >       #(define fonts
  >          (set-global-fonts
  >            #:music "Nom de la fonte musicale"
  >            #:brace "Nom de la fonte musicale d'accolades"
  >            #:roman "Nom de la fonte à empattements"
  >            #:sans "Nom de la fonte sans empattements"
  >            #:typewriter "Nom de la fonte monospace"))
  >     }

  ou

  >     \paper {
  >       #(define fonts
  >          (make-pango-font-tree
  >            "Nom de la fonte à empattements"
  >            "Nom de la fonte sans empattements"
  >            "Nom de la fonte monospace"
  >            factor))
  >     }

  la syntaxe consacrée est dorénavant

  >     \paper {
  >       property-defaults.fonts.music = "Nom de la fonte musicale"
  >       property-defaults.fonts.serif = "Nom de la fonte à empattements"
  >       property-defaults.fonts.sans = "Nom de la fonte sans empattement"
  >       property-defaults.fonts.typewriter = "Nom de la fonte monospace"
  >     }

  Contrairement aux anciennes pratiques, la nouvelle syntaxe n’interfère en rien dans la taille des fontes, qui doit se gérer séparément à l’aide de `set-global-staff-size` ou `layout-set-staff-size`.

  La liste associative ne comporte pas de clé `brace` ; les glyphes d’accolade sont désormais toujours pris dans la fonte musicale. Il est néanmoins possible d’y déroger en utilisant une famille de fontes supplémentaire, comme dans l’exemple suivant (la fonte LilyJAZZ doit alors être disponible) :

  >     \layout {
  >       \context {
  >         \Score
  >         \override SystemStartBrace.font.music = "lilyjazz"
  >       }
  >     }

  >     \new PianoStaff <<
  >       \new Staff { c' }
  >       \new Staff { c' }
  >     >>

  >     \markup \override #'(fonts . ((music . "lilyjazz"))) \left-brace #20

  Dans la mesure où `fonts` est une simple propriété, il est possible de lui porter dérogation sur la base d’un objet graphique, comme par exemple

  >     \layout {
  >       \override Score.SectionLabel.fonts.roman = "Custom font"
  >     }

  Ceci s’avère préférable à l’utilisation de la propriété `font-name`, cette dernière rendant ineffectives les commandes telles que `\bold` et requérant d’inclure « Bold » dans la chaîne de `font-name`. L’utilisation de `fonts` ne provoque pas de tels effets.

- La commande de markup `\lookup` n’est désormais disponible que pour les accolades ; pour les autres glyphes, c’est la commande `\musicglyph` qu’il faut utiliser. Au lieu de `\lookup`, il vaut d’ailleurs mieux lui préférer `\left-brace`.
- Lorsqu’une fonte musicale est utilisée dans un markup – typiquement pour une indication de nuance – et qu’un glyphe en était absent, celui-ci était rendu dans une fonte textuelle normale. Ceci n’est plus le cas, et un avertissement est alors émis quant au glyphe manquant. Afin d’utiliser une fonte textuelle, il faut utiliser l’une des commande de markup `\serif`, `\sans` ou `\typewriter`, comme ici par exemple.

  >     dolceP =
  >     #(make-dynamic-script
  >       #{
  >         \markup {
  >           \serif \normal-weight dolce
  >           p
  >         }
  >       #})

  >     { c'\dolceP }

- Les petites capitales s’obtiennent désormais en réglant `font-variant` sur `small-caps`, plutôt qu’en fixant `font-shape` à `caps`. Dans la mesure où la raison d’être de `font-shape` est de pouvoir accéder à l’italique, ce changement rend possible l’utilisation conjointe de petites capitales et de l’italique.
- La propriété `font-series` est désormais plus flexible et accepte des valeurs telles que `semibold` et `light` en plus des seules `normal` et `bold`.

  La valeur `medium` est désormais une valeur intermédiaire entre `normal` et `bold` plutôt qu’un équivalent de `normal`. Par conséquent, la commande de markup `\medium` a été renommée en `\normal-weight`.

- La nouvelle propriété `font-stretch` permet de sélectionner une fonte resserrée ou expansée.
- Le texte d’un objet `VoltaBracket` tel que défini par un `\override Score.VoltaBracket.text = …` ou `\set Score.repeatCommands = …` n’est plus automatiquement rendu dans une fonte musicale ; il faut pour cela utiliser la commande de markup `\volta-number` sur les parties qui le nécessitent. Il faudra donc, par exemple, convertir

  >     \set Score.repeatCommands = #'((volta "2, 5"))

  en

  >     \set Score.repeatCommands =
  >       #`((volta ,#{ \markup {
  >                       \concat { \volta-number 2 , }
  >                       \volta-number 5 }
  >                 #}))

- Dans un markup, les doigtés (`\markup \finger`) et chiffrages d’accord (`\markup \figured-bass`) sont désormais adaptés à la taille du texte normal en présence d’un `\fontsize`.

  >     myText = \markup {
  >       The fingering \finger { 5-4 } for a \figured-bass { 7 "6\\" } …
  >     }

  >     \myText
  >     \markup\fontsize #6 \myText

  Le comportement antérieur peut être retrouvé en activant les variables globales `legacy-figured-bass-markup-fontsize` et `legacy-finger-markup-fontsize`, soit :

  >     #(set! legacy-figured-bass-markup-fontsize #t)
  >     #(set! legacy-finger-markup-fontsize #t)

  >     myText = \markup {
  >       The fingering \finger { 4-5 } for a \figured-bass { 5+ 6 } …
  >     }

  >     \myText
  >     \markup\fontsize #6 \myText

- Pour plus de clarté, la commande de markup `\roman` a été renommée en `\serif`. Aussi, pour modifier une propriété `font-family` réglée à `sans` ou `typewriter`, il faut la définir à `serif`, non plus à `roman`.
- La commande de markup `\text` a été supprimée. Doivent être utilisées en remplacement les commandes `\serif`, `\sans` ou `\typewriter`. Si ces commandes permettaient de définir le style de fonte uniquement lorsqu’une fonte textuelle était utilisée (non une fonte musicale comme pour les nuances), elles déterminent désormais à la fois le style de fonte et l’utilisation d’une fonte textuelle.
- La taille de la police utilisée par la commande de markup `\volta-number` a été réduite afin de mieux s’harmoniser avec le texte environnant. Par la même occasion, la taille du crochet de reprise (qui utilise `\volta-number` pour son formatage par défaut) a été augmentée en proportion inverse afin de compenser dans les cas habituels.
- Certains glyphes, tels que « one » ou « accidentals.hufnagelM1 », de la fonte Emmentaler avaient une boîte englobante excessivement large en raison d’un bogue dans la chaîne de production des fontes. Ceci est désormais corrigé, mais certaines différences pourraient apparaître dans la typographie puisque des boîtes englobantes plus étroites peuvent entraîner une typographie plus resserrée.
- De nouvelles commandes pour imprimer une représentation textuelle des altérations ont été ajoutées : `\text-doubleflat`, `\text-flat`, `\text-natural`, `\text-sharp`, `\text-doublesharp` ainsi que de manière plus générale `\text-accidental`.

  >     \markuplist \override #'(padding . 1) \table #'(-1 -1 -1 -1 -1 -1) {
  >       "Altérations pour du texte :"
  >        \text-doubleflat \text-flat \text-natural \text-sharp
  >        \text-doublesharp
  >       "Altérations dans la musique :"
  >       \doubleflat \flat \natural \sharp \doublesharp
  >     }

- La commande de markup `\circle` accepte désormais une propriété `bbox`. Lorsque cette propriété est activée, la boîte englobant ses argument est utilisée pour définir le diamètre du cercle.

  >     \markup {
  >       \circle {
  >         \center-column { "court" "court" "très très long" }
  >       }
  >       \override #'(bbox . #t) \circle {
  >         \center-column { "court" "court" "très très long" }
  >       }
  >     }

- La commande `\tag` est désormais fonctionnelle dans les environnements `\markup`. De nouvelles commandes de markup sont ajoutées pour filtrer (`\keep-with-tag` et `\remove-with-tag`) et insérer des makups dans un contexte de markup (`\push-to-tag`, `\append-to-tag` et `\replace-with-tag`) ou dans un contexte musical (`\pushToTagMarkup`, `\appendToTagMarkup` et `\replaceWithMarkup`).

  >     test = \markup {
  >       \tag #'a a
  >       \tag #'b b
  >       c
  >     }

  >     music = \relative {
  >       c'^\test c c c
  >     }

  >     \keepWithTag #'a \music
  >     \removeWithTag #'a \music
  >     \pushToTagMarkup #'a push \music
  >     \appendToTagMarkup #'a append \music
  >     \replaceWithTagMarkup #'a replacement \music

  >     \markup { \keep-with-tag #'a \test }
  >     \markup { \remove-with-tag #'a \test }
  >     \markup { \push-to-tag #'a push \test }
  >     \markup { \append-to-tag #'a append \test }
  >     \markup { \replace-with-tag #'a replacement \test }
  >     \markup { \keep-with-tag #'a \score { \music } }

- Les deux nouvelles commandes `\pad-x-left` et `\pad-x-right` se comportent comme `\pad-x`, à ceci près qu’elles appliquent un décalage horizontal sur un seul des côtés du markup.

#### LilyPond Changes v2.26.0 (stable-branch).

- Modifications majeures de LilyPond
  - Notes à propos de la compilation des sources et à l’attention des empaqueteurs
- Nouveautés en matière de notation musicale
  - Améliorations de la représentation des hauteurs
  - Améliorations en matière de rythme
  - Améliorations en matière d’expressivité
  - Améliorations en matière de reprises
  - Améliorations en matière d’annotations éditoriales
  - Améliorations en matière de fontes et de mise en forme du texte
- Nouveautés en matière de notation spécialisée
  - Améliorations pour la musique vocale
  - Améliorations pour instruments à portées multiples
  - Améliorations pour les cordes non frettées
  - Améliorations pour les cordes frettées
  - Améliorations pour la notation des accords
  - Améliorations pour les notations anciennes
  - Améliorations pour les musiques du monde
- Autres améliorations diverses