textとtspan要素のx,y属性について

SVG1.1の仕様を読みながら

text、tspan要素のx,y属性の実装を進めていたのですが、どうやら、x属性とy属性について、私は理解が不足していたようです。

x属性は子要素に影響を及ぼす

例を考えながら、x属性についてみていきましょう。

あいうえ

この場合、x属性はリストであるため、「あ」の絶対座標xは「20」、「い」の絶対座標は「30」、「う」は「40」、「え」は「50」です。
さて、この例にtpan要素を加えて、さらに、x属性に「100, 200」を指定します。

いうえ

子要素のx属性で、絶対座標が指定されたので、「い」は「100」で、「う」は「200」となります。
では、「え」はどうなるのでしょうか?
わたしは、当初、「え」の絶対座標は200に文字のサイズなどを足せばいいと考えていました。しかし、そうではなくて、「50」のままになるようです。

x属性のリストが継承されている

SVG1.1の仕様を見ると、親要素のx属性がリストであれば、それを座標として採用することが書かれています(参照注1のx属性の解説をご覧下さい)。
つまり、リストである場合のみ、親要素のx属性が子要素に継承するのです。たとえば、先ほどの例を簡単な表にしてみると、

  1. 親:30, 40, 50
  2. 子:100, 200

最初の2文字は子の値によって、「100、200」と上書きされますが、あとの1文字は子のx属性では指定されていないので、50という値を継承します。

わたしの独自の解釈ですので

まだ、わたしの上記の解釈には誤りが含まれているかもしれませんが、今回のSIEの実装は、今回検討した解釈を用いるつもりです。