[ << Notation musicale générale ] | [Racine][Table des matières][Index] | [ Notation spécialisée >> ] |
[ < Notation musicale dans du texte formaté ] | [Plus haut: Texte ] | [ Localisation des fontes > ] |
1.8.3 Fontes
La gestion des fontes dans LilyPond est assurée par plusieurs bibliothèques : FontConfig se charge de répertorier les différentes fontes disponibles ; quant à Pango, elle se charge plus particulièrement de leur rendu.
Ce chapitre indique comment accéder aux fontes et polices de caractère dans LilyPond. Vous y apprendrez aussi comment changer de fonte en cours de partition.
Localisation des fontes | ||
Familles de fontes | ||
Fonctionnalités des fontes | ||
Attribution d’une fonte en particulier | ||
Choix des fontes par défaut | ||
Fontes musicales |
[ << Notation musicale générale ] | [Racine][Table des matières][Index] | [ Notation spécialisée >> ] |
[ < Fontes ] | [Plus haut: Fontes ] | [ Familles de fontes > ] |
Localisation des fontes
En sus de celles déjà installées sur le système, d’autres fontes peuvent s’ajouter au répertoire de FontConfig, ce qui les rendra donc disponibles pour les partitions LilyPond, à l’aide des commandes suivantes :
#(ly:font-config-add-font "chemin/au/fichier-fonte") #(ly:font-config-add-directory "chemin/au/dossier/")
Le chemin fourni à ces deux commandes peut être absolu ou relatif, ce qui permet de compiler une partition sur n’importe quel système dans la mesure où les fichiers de fontes concernés sont transmis avec les fichiers sources de la partition.
L’instruction #(ly:font-config-display-fonts)
permettra de
vérifier que la fonte requise est bien détectée par FontConfig. Elle
affiche en console la liste exhaustive des fontes du système ainsi que
le nom exact qu’il faudra transmettre à LilyPond ; ce nom peut être
différent du nom du fichier.
Les fontes se sélectionnent selon les méthodes indiquées dans Attribution d’une fonte en particulier et Choix des fontes par défaut.
[ << Notation musicale générale ] | [Racine][Table des matières][Index] | [ Notation spécialisée >> ] |
[ < Localisation des fontes ] | [Plus haut: Fontes ] | [ Fonctionnalités des fontes > ] |
Familles de fontes
Vous disposez de trois familles de fontes1 textuelles : roman pour la police sérif ou avec empattement, une police sans empattement (sans sérif) et une police à chasse fixe (monospace ou typewriter). En fonction du moteur de rendu utilisé, ces familles seront mappées selon des alias différents.
Pour le moteur svg
:
Famille générique | Famille de fonte SVG |
---|---|
roman | serif |
sans | sans-serif |
typewriter | monospace |
« serif », « sans-serif » et « monospace » sont des « generic-family » au titre des spécifications SVG et CSS.
Pour les autres moteurs :
Famille générique | Fonte par défaut (alias) | Listes de définition des alias |
---|---|---|
roman | LilyPond Serif | C059, Century SchoolBook URW, Century Schoolbook L, TeX Gyre Schola, DejaVu Serif, …, serif |
sans | LilyPond Sans Serif | Nimbus Sans, Nimbus Sans L, TeX Gyre Heros, DejaVu Sans, …, sans-serif |
typewriter | LilyPond Monospace | Nimbus Mono PS, Nimbus Mono, Nimbus Mono L, TeX Gyre Cursor, DejaVu Sans Mono, …, monospace |
Lorsqu’un caractère est absent de la première fonte listée, il sera remplacé par celui de la fonte suivante.
Il est à noter que les fontes URW distribuées avec LilyPond (« C059 », « Nimbus Mono PS » et « Nimbus Sans ») disposent d’une particularité : par défaut, et en complément des ligatures standard telles que « fl » ou « ffi », elles substituent la chaîne « Nr. » par le caractère « Numero Sign » (U+2116) dès lors que le script « latn » est sélectionné. On peut toutefois s’en préserver temporairement par l’insertion d’un caractère de largeur nulle et non jointant (zero-width non-joiner ZWNJ, U+200C) entre les caractères « N » et « r ». Les lignes ci-dessous auront pour conséquence que LilyPond insérera toujours un caractère ZWNJ.
\paper { #(add-text-replacements! `(("Nr." . ,(format #f "N~ar." (ly:wide-char->utf-8 #x200C))))) }
« LilyPond Serif », « LilyPond Sans Serif » et « LilyPond Monospace » sont des alias de fonte définis dans le fichier de configuration de FontConfig spécifique à LilyPond ‘00-lilypond-fonts.conf’ qui se trouve normalement dans le répertoire ‘/usr/local/share/lilypond/2.23.82/fonts’.
Chaque famille dispose en principe de différents styles et niveaux de
graisse. L’exemple qui suit illustre la manière de changer la famille,
le style, la graisse ou la taille. Notez bien que l’argument fourni à
font-size
correspond à la correction à apporter à la taille par
défaut.
\override Score.TextMark.font-family = #'typewriter \textMark "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
Cette syntaxe s’applique aussi en mode markup, bien que celui-ci dispose d’une syntaxe allégée comme nous l’avons vu dans Sélection de la fonte et de la taille :
\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 } } }
[ << Notation musicale générale ] | [Racine][Table des matières][Index] | [ Notation spécialisée >> ] |
[ < Familles de fontes ] | [Plus haut: Fontes ] | [ Attribution d'une fonte en particulier > ] |
Fonctionnalités des fontes
Le recours aux fontes OpenType permet d’utiliser certaines fonctionnalités de ces fontes.2 Toutefois, les fontes OpenType ne disposent pas toutes de l’intégralité de ces fonctionnalités. Dans le cas où la fonctionnalité demandée n’est pas disponible dans la fonte choisie, cette fonctionnalité est tout bonnement ignorée. Les exemples ci-dessous utilisent « TeX Gyre Schola », autrement dit le style romain de la famille.
\markup { \override #'(font-name . "TeX Gyre Schola") Style normal : Hello HELLO } \markup { \override #'(font-name . "TeX Gyre Schola") \caps { Petites capitales : Hello } } \markup { \override #'(font-name . "TeX Gyre Schola") \override #'(font-features . ("smcp")) { Vraies petites capitales : Hello } } \markup { \override #'(font-name . "TeX Gyre Schola") Style numérique normal : 0123456789 } \markup { \override #'(font-name . "TeX Gyre Schola") \override #'(font-features . ("onum")) { Style numérique ancien : 0123456789 } } \markup { \override #'(font-name . "TeX Gyre Schola") \override #'(font-features . ("salt 0")) { Alternative stylistique 0 : εφπρθ } } \markup { \override #'(font-name . "TeX Gyre Schola") \override #'(font-features . ("salt 1")) { Alternative stylistique 1 : εφπρθ } } \markup { \override #'(font-name . "TeX Gyre Schola") \override #'(font-features . ("onum" "smcp" "salt 1")) { Fonctionnalités multiples : Hello 0123456789 εφπρθ } }
Une liste exhaustive des fonctionnalités des fontes OpenType est disponible à l’adresse https://www.microsoft.com/typography/otspec/featurelist.htm, et les différents types de fonctionnalités des fontes OpenType sont recensés dans le message https://lists.gnu.org/archive/html/lilypond-devel/2017-08/msg00004.html.
En plus de pouvoir jongler entre les différentes fontes prédéfinies, LilyPond vous permet d’en utiliser d’autres, ce qui fait l’objet des deux prochaines parties : Attribution d’une fonte en particulier et Choix des fontes par défaut.
Voir aussi
Manuel de notation : La fonte Emmentaler, Notation musicale dans du texte formaté, Rotation des objets, Sélection de la fonte et de la taille, Fonte.
[ << Notation musicale générale ] | [Racine][Table des matières][Index] | [ Notation spécialisée >> ] |
[ < Fonctionnalités des fontes ] | [Plus haut: Fontes ] | [ Choix des fontes par défaut > ] |
Attribution d’une fonte en particulier
La plupart des fontes installées sur le système et reconnues par FontConfig peuvent s’utiliser dans une partition, à l’exception des polices bitmap – qui ne sont pas supportées de par leur conception – et les OpenType Variation Fonts (non prises en charge à ce jour).
LilyPond appelle la fonction pango_font_description_from_string
de la bibliothèque Pango pour accéder aux fontes ; elle utilise la forme
syntaxique suivante pour le nom des fontes.3
[family-list] [style-options]
où family-list est une liste, dont le séparateur est la virgule, des familles éventuellement terminée par une virgule, et style-options une liste, dont le séparateur est l’espace, de mots dont chacun désigne un style, une variante, une graisse, une chasse, ou une orientation.
Les termes suivants sont considérés comme des styles : Normal
(par défaut), Roman
, Oblique
, Italic
.
Les termes suivants sont considérés comme des variantes :
Small-Caps
. Il n’y a pas de variante par défaut.
Les termes suivants sont considérés comme des graisses : Thin
,
Ultra-Light
, Extra-Light
, Light
, Semi-Light
,
Demi-Light
, Book
, Regular
(the default),
Medium
, Semi-Bold
, Demi-Bold
, Bold
,
Ultra-Bold
, Extra-Bold
, Heavy
, Black
,
Ultra-Black
, Extra-Black
.
Les termes suivants sont considérés comme des valeurs de chasse :
Ultra-Condensed
, Extra-Condensed
, Condensed
,
Semi-Condensed
, Semi-Expanded
, Expanded
,
Extra-Expanded
, Ultra-Expanded
. Il n’y a pas d’étirement
par défaut.
Les termes suivants sont considérés comme des valeurs d’orientation :
Not-Rotated
, South
, Upside-Down
, North
,
Rotated-Left
, East
, Rotated-Right
, West
. Il
n’y a pas d’orientation par défaut.
Partant du principe que la syntaxe est correcte, déterminer le nom d’une police n’échoue jamais. Si aucune famille de fonte n’est reconnue (ou aucune famille n’a été donnée), FontConfig renvoie une fonte par défaut dépendant du système. Si aucune option de style n’est reconnue (ou aucune option de style n’a été spécifiée), seront utilisées les valeurs par défaut.
Dans l’exemple qui suit, la fonte de la métrique est déterminée à « Bitstream Charter ». Dans la mesure où aucun style n’est spécifié, FontConfig utilisera les valeurs par défaut comme vu ci-dessus. Pour la chaîne de markup sont demandées les familles « Bitstream Vera Sans » et « sans-serif », ce qui indique à FontConfig de rechercher en premier « Bitstream Vera Sans » et, si elle n’est pas disponible, de se reporter sur une famille « sans-serif » générique comme indiqué dans Familles de fontes. Le style du markup est défini à « Oblique Bold » ; FontConfig tentera donc de trouver une fonte qui soit à la fois penchée et grasse. Si elle échoue, elle tentera de trouver soit une fonte penchée, soit une fonte grasse. Si elle échoue à nouveau, elle essaiera une fonte répondant aux options de style par défaut.
Notez bien que FontConfig vérifie aussi la présence du glyphe requis dans la fonte demandée. Dans le cas où il y serait absent, sera essayée une autre fonte, toujours selon le même algorithme, jusqu’à ce qu’elle trouve le glyphe en question. Dans l’éventualité où FontConfig ne trouve nulle part le glyphe approprié, sera affiché un symbole de glyphe absent – habituellement un rectangle ou un simple espace blanc.
\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 } }
Note : Dès lors que l’une des options stylistiques mentionnées
ci-dessus fait partie du nom de la (famille) fonte, il est impératif
de faire suivre ce nom d’une virgule même si aucun style n’est défini.
L’exemple typique est « Times New Roman » : spécifier "Times New
Roman"
fera rechercher à FontConfig une police « Times New » de style
roman, et c’est seulement si est libellé "Times New Roman,"
que
cette police sera réellement accédée.
Lancer lilypond
en ligne de commande avec l’option suivante,
affiche la liste de toutes les polices disponibles sur votre machine :
lilypond -dshow-available-fonts
Voir aussi
Manuel de notation : Choix des fontes par défaut, Localisation des fontes, Familles de fontes.
Morceaux choisis : Texte.
[ << Notation musicale générale ] | [Racine][Table des matières][Index] | [ Notation spécialisée >> ] |
[ < Attribution d'une fonte en particulier ] | [Plus haut: Fontes ] | [ Fontes musicales > ] |
Choix des fontes par défaut
On peut tout à fait modifier le jeu de polices par défaut de LilyPond
grâce à un appel de la fonction make-pango-font-tree
. Il vous
faudra alors spécifier les différentes familles, en respectant l’ordre
roman, sans empattement et monospace, ainsi qu’un
facteur d’échelle. Tout comme indiqué dans
Attribution d’une fonte en particulier,
il peut s’agir d’une liste de polices séparées par une virgule, à
ceci près qu’il n’est pas possible de spécifier de
style.4
Note : make-pango-font-tree
réinitialise les fontes musicales à
leur valeur par défaut, à savoir emmentaler
.
Dans l’exemple suivant, les fontes seront mises à l’échelle de la taille globale des portées.
\paper { #(define fonts (make-pango-font-tree "Linux Libertine O" "Nimbus Sans, Nimbus Sans L" "DejaVu Sans Mono" (/ staff-height pt 20))) } \relative c'{ c1-\markup { roman, \sans sans, \typewriter typewriter. } }
La syntaxe suivante permet de substituer une fonte particulière tout en
laissant les autres à leur valeur par défaut. L’exemple ci-dessous
produit les mêmes effets que celui utilisant
make-pango-font-tree
. De même qu’avec
make-pango-font-tree
, il est possible de fournir une liste de
fontes séparées par une virgule pour les catégories roman
,
sans
et typewriter
. Dès lors que la taille de portée reste
à sa valeur par défaut de 20 pt, l’instruction #:factor
n’est pas
nécessaire.
\paper { #(define fonts (set-global-fonts #:roman "Linux Libertine O" #:sans "Nimbus Sans, Nimbus Sans L" #:typewriter "DejaVu Sans Mono" ; inutile si taille de portée par défaut #:factor (/ staff-height pt 20) )) }
Il est aussi posible de substituer les fontes musicales. L’exemple ci-dessous produit les mêmes effets que ceux qui précèdent dans la mesure où les fontes musicales sont fixées à leur valeur par défaut. Pour de plus amples informations, voir Changement des fontes musicales.
\paper { #(define fonts (set-global-fonts #:music "emmentaler" ; défaut #:brace "emmentaler" ; défaut #:roman "Linux Libertine O" #:sans "Nimbus Sans, Nimbus Sans L" #:typewriter "DejaVu Sans Mono" ; inutile si taille de portée par défaut #:factor (/ staff-height pt 20) )) }
En tout état de cause, tout appel à set-global-fonts
réinitialise
aussi bien les fontes musicales que les fontes textuelles.5 Dès lors que l’une de ces catégories n’est pas
mentionnée, sera utilisée la fonte par défaut y afférente.
Par ailleurs, chaque appel à set-global-fonts
affecte les
fontes du bloc \book
qui le suit ; chaque bloc \book
consécutif peut donc disposer de son propre jeu de fontes grâce à
un simple appel à set-global-fonts
, comme ici :
\paper { #(define fonts (set-global-fonts … )) } \book { … } \paper { #(define fonts (set-global-fonts … )) } \book { … }
Voir aussi
Manuel de notation : Attribution d’une fonte en particulier, Fonte, Changement des fontes musicales, Familles de fontes, Localisation des fontes, Sélection de la fonte et de la taille.
[ << Notation musicale générale ] | [Racine][Table des matières][Index] | [ Notation spécialisée >> ] |
[ < Choix des fontes par défaut ] | [Plus haut: Fontes ] | [ Notation spécialisée > ] |
Fontes musicales
En matière de fontes musicales, LilyPond ne recourt ni à FontConfig, ni à Pango, mais les gère directement. Par voie de conséquence, l’interface est différente. Cette section décrit la manière d’insérer des symboles musicaux en mode markup.
Les fontes de notation musicale sont des ensembles de glyphes accessibles selon divers encodages. La syntaxe suivante permet d’accéder aux différents glyphes Emmentaler6 directement en mode markup :
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" } }
Néanmoins, tous ces glyphes, à l’exception des accolades de différente taille, sont disponibles selon une syntaxe plus simple, indiquée dans Notation musicale dans du texte formaté.
Lorsque l’on accède aux accolades avec l’encodage « fetaBraces », la taille de l’accolade est spécifiée par la partie numérique du nom de glyphe, en unité arbitraire. Il s’agit d’un entier, de 0 à 575 inclus, zéro procurant la plus petite accolade. La valeur optimale s’obtient par tâtonnement. Ces glyphes sont tous des accolades gauche (ouvrantes) ; une accolade droite (fermante) s’obtient par rotation voir Rotation des objets.
Notes de bas de page
[1] Dans sa forme la plus simple, une famille de fonte contient habituellement les styles de police romain, italique, gras et gras italique.
[2] La sélection de scripts ou de langages des fontes OpenType n’est à ce jour par prise en charge.
[3] La donnée est issue des références de la version 1.46.1 de Pango ; la syntaxe prise en charge par LilyPond est en fait un sous-ensemble de ce que Pango procure.
[4] Ce qui a pour conséquence que, contrairement au cas d’une fonte particulière, aucune virgule terminale n’est nécessaire.
[5] Pour
être plus précis, « emmentaler » (avec un « e » minuscule en argument à
#:music
et #:brace
) constitue un jeu de fontes – et non
une famille de fonte au sens de FontConfig – auquel LilyPond a accès et
gère directement. Au lieu de plusieurs styles, elle est toutefois
fournie dans différentes tailles – voir Fontes musicales et
Changement des fontes musicales. Les noms de fonte, pour
FontConfig, sont « Emmentaler-taille », où taille est un
nombre entre 11, 13, 14, 16, 18, 20, 23 et 26.
Pour ce qui est des accolades, le nom de la fonte pour FontConfig est « Emmentaler-Brace ».
[6] Les fontes Emmentaler de LilyPond disposent de trois jeux de glyphes : Feta pour la notation moderne, Parmesan pour la notation ancienne, et des accolades (braces en anglais). Feta et Parmesan sont toutes deux accesssibles avec l’encodage « fetamusic ».
[ << Notation musicale générale ] | [Racine][Table des matières][Index] | [ Notation spécialisée >> ] |
[ < Choix des fontes par défaut ] | [Plus haut: Fontes ] | [ Notation spécialisée > ] |