2010年7月10日土曜日

パスエフェクトのXMLコード

inkscapeではほとんどの基本図形がsvg:pathタグで保存されています。 pathタグの中に、例えば「inkscapeでは円として扱う」などの独自xmlタグの図形データがあります。 円や楕円なら独自タグで中心座標とx方向の半径、y方向の半径を持ち、inkscape内で円を編集するときのモトになります。 SVGの仕様で、ビューアが解釈できないタグは無視することになっています。 inkscape以外でSVGファイルを開くと独自タグは無視され、パスだけ表示されるという仕組みです。

確か四角形(rect)以外はパスだったはず。 「sodipodi:」付きの独自タグが図形ごとのデータです。

inkscapeのパスメニューにはパスエフェクトエディタがあります。 パスエフェクトエディタでパスに「曲げる」、「スケッチ」などのエフェクトをかけることができます。 このパスエフェクトはinkscape独自のものです。 (sodipodiタグではなくinkscape:path-effectタグ。) inkscape内部では

  • エフェクトをかける前の図形データ
  • パスエフェクトのデータ
  • エフェクトをかけた後のパスデータ

を持っています。 図形データとパスエフェクトは独自タグで保存されているので、inkscape以外のSVGビューアでは無視されます。 普通のSVGビューアに関係があるのはパスデータだけです。

レンダリング前の図形データ&パスエフェクトとレンダリング後のパスデータの両方を持っているとファイルサイズが大きくなります。 独自形式のデータは編集には必要ですが、絵を見る人には無駄です。 特に理由がないのなら、公開するときには消した方が良いでしょう。 プレーンSVGで出力すれば独自形式のデータを消すことができます。

一度プレーンSVGにしてしまうと独自形式のデータは復元できないので注意。 編集用のinkscape SVGのファイルと公開用のプレーンSVGのファイルは別に持っていた方が良いでしょう。

ちなみに、四角形(rect)にパスエフェクトをかけると、その時点でrectタグからpathタグに変更されました。 パスエフェクトを消去してもpathのままです。 (アンドゥしたらrectに戻ります。) なぜ生rectだけpathにしなかったのかが謎ですね。 全部pathにした方が統一感があると思うんですけど。