Disons que j'ai le fichier SVG:
<svg width="1024" height="768" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<text x='20' y='60' style="font-size: 60px">b</text>
<text x='100' y='60' style="font-size: 60px">a</text>
</svg>
Je veux en quelque sorte aligner le haut de a
et b
. En fait, je veux que mon positionnement soit conforme à la roofline
au lieu de baseline
!
La propriété alignment-baseline
est ce que vous recherchez. Elle peut prendre les valeurs suivantes
auto | baseline | before-Edge | text-before-Edge |
middle | central | after-Edge | text-after-Edge |
ideographic | alphabetic | hanging | mathematical |
inherit
Description de w3c
Cette propriété spécifie comment un objet est aligné par rapport à son parent. Cette propriété spécifie quelle ligne de base de cet élément doit être alignée sur la ligne de base correspondante du parent. Par exemple, cela permet aux lignes de base alphabétiques en texte romain de rester alignées malgré les changements de taille de police. Par défaut, la référence de base porte le même nom que la valeur calculée de la propriété alignment-baseline. C'est-à-dire que la position du point d'alignement "idéographique" dans la direction de progression de bloc est la position de la ligne de base "idéographique" dans la table de lignes de base de l'objet en cours d'alignement.
Malheureusement, bien que ce soit la méthode "correcte" pour obtenir ce que vous cherchez, il semblerait que Firefox n'ait pas implémenté beaucoup d'attributs de présentation pour le module de texte SVG ( documentation MDN 'SVG dans Firefox' )
Selon les spécifications SVG, alignment-baseline
s'applique uniquement à <tspan>
, <textPath>
, <tref>
et <altGlyph>
. D'après ce que je comprends, il est utilisé pour compenser ceux de l'objet <text>
situé au-dessus d'eux. Je pense que ce que vous recherchez, c'est dominant-baseline
.
Les valeurs possibles de dominant-baseline
sont les suivantes:
auto | use-script | no-change | reset-size | ideographic | alphabetic | hanging | mathematical | central | middle | text-after-Edge | text-before-Edge | inherit
Vérifiez recommandation du W3C concernant la propriété dominante-baseline pour plus d'informations sur chaque valeur possible.
attr ("dominante-baseline", "central")
Si vous testez cela dans IE, dominante-baseline et alignement-baseline ne sont pas pris en charge.
Le moyen le plus efficace de centrer le texte dans IE consiste à utiliser quelque chose comme ceci avec "dy":
<text font-size="ANY SIZE" text-anchor="middle" "dy"="-.4em"> Ya Text </text>
La valeur négative le fera monter et une valeur positive de dy le fera descendre. J'ai trouvé que l'utilisation de -.4em me paraissait un peu plus centrée verticalement que -.5em, mais vous en jugerez.
Après avoir examiné recommandation SVG , j'ai compris que les propriétés de la ligne de base sont censées positionner le texte par rapport à un autre texte, en particulier lors du mélange de polices et/ou de langues différentes. Si vous souhaitez positionner du texte de sorte que son sommet se trouve à y
, vous devez utiliser dy = "y + the height of your text"
.