viewBox属性とpreserveAspectRatio属性をsvg要素に実装しました

viewBox属性とpreserveAspectRatio属性の実装について

SVG画像のアスペクト比を扱う上で、重要な二つの上記属性について、実装が終わりました。svg要素のみに使うことができます。また、これにあわせて、width属性とhiehgt属性もサポートしています。自身の覚書として、以下のような方法をとったことを書き残しておきます。

方法論

  1. SVGを埋め込むobject(embed)要素のwidth(height)属性を取得
  2. svg要素のwidth(height)属性を取得
  3. 項目2がないと判明したら、項目1を代用して、STLengthを使い、値の単位をpxに変換する(例:128pt->160px)
  4. すべてのshape要素のcoordsize属性に項目3の値を設定する。また、すべての要素のwidth(height)属性に"100%"という値を設定する。

VMLのcoordsize属性について

MSによれば(http://msdn2.microsoft.com/en-us/library/bb263837.aspx)coordsize属性は座標系の単位を決定します。例えば、その要素のwidth(height)をcoordsizeのwidth(height)で割って、その数値を1単位としているようです。(例:width:10ptで、coordsize="1000 1000"の場合、10/1000(pt)で、1単位につき、1/100ptとなる)
確認が取れていないのですが、以上のような認識でSIEを作っていきます。

今後の予定

  • 二つの属性のテストを行います。
  • 弧の実装に再び取り掛かります。