[ << Tutoriel Scheme ] | [Top][Contents][Index] | [ Interfaces pour programmeurs >> ] |
[ < Chaînes d’alist ] | [ Up : Scheme et LilyPond ] | [ Représentation interne de la musique > ] |
1.2.8 Le modèle de boîte de LilyPond
Le modèle de boîte « classique » pour du texte – tel qu’en vigueur par exemple chez TeX – comporte les trois dimensions largeur, hauteur et profondeur : les glyphes sont positionnés sur une ligne de base horizontale de texte ; la hauteur d’un glyphe est l’empan vertical au-dessus de cette ligne, la profondeur l’empan au-dessous de cette ligne et la largeur représente l’étendue horizontale de ce glyphe. LilyPond y ajoute une quatrième dimension, breapth,1 pour étendre la taille horizontale quelque peu sur la gauche du « point de référence » du glyphe, noté « (0, 0) » dans l’image ci-dessous. La raison principale à cette extension tient au fait que de nombreux glyphes, tel que le point d’orgue, ont une symétrie horizontale (et sont aussi attachés symétriquement à une tête de note) et que le meilleur point de référence de tels glyphes est par conséquent le centre horizontal. D’autres glyphes, comme par exemple l’altération de quart de ton présent sur la gauche de l’image, disposent quant à eux d’un breapth considérable.
Comme l’indique le glyphe de guidon sur la droite de l’image, la boîte définie pour un glyphe diffère souvent et de façon considérable avec ce qui est en fait imprimé : LilyPond positionne le côté droit du glyphe de guidon à la fin d’une portée, faisant dépasser la ligne d’extension à droite dans la marge.
Ce modèle de boîte sert non seulement aux glyphes musicaux de LilyPond,
mais aussi pour les markups quelle qu’en soit la nature. Les
dimensions, tant horizontale que verticale, sont spécifiées en terme
d’étendue ; utilisant la notation Scheme, le glyphe de gauche dans
l’image ci-dessus a une étendue horizontale de #'(-9 . 26)
et une
étendue verticale de #'(-10 . 29)
.
LilyPond utilise aussi quelques extensions au modèle de boîte afin de couvrir certains cas particuliers.
- Lorsqu’une boîte de devrait pas intervenir dans l’algorithme
d’espacement de la musique sur un axe donné, l’étendue sur cet axe est
fixé à la valeur de
#'(+inf.0 . -inf.0)
qui ailleurs serait absurde, aussi disponible en tant que symboleempty-interval
. - En matière de markup, l’espacement, qui normalement
déclenche un déplacement horizontal ou vertical de l’objet qui suit dans
le markup, est aussi fixé de manière interne en tant que boîte :
l’étendue sur l’axe orthogonal est définie à
empty-interval
en tant que marqueur, et une valeur s d’espacement est représentée par l’étendue#'(0 . s)
. Contrairement aux boîtes « normales », l’espacement peut aussi être négatif : par exemple, l’étendue horizontale de la commande de markup\hspace #-4
est#'(0 . -4)
.
Footnotes
(1)
Il s’agit d’un terme inventé, dérivé du mot anglais « breadth » (ampleur, laize) et qui est un proche synonyme de « largeur ».
[ << Tutoriel Scheme ] | [Top][Contents][Index] | [ Interfaces pour programmeurs >> ] |
[ < Chaînes d’alist ] | [ Up : Scheme et LilyPond ] | [ Représentation interne de la musique > ] |