SVGは出力用フォーマットなのね

というのが最初のWillustratorのプロトタイプを作ったときに得られた知見でした。

何か別のフォーマットからSVGを生成して画面に表示するだけなら便利だけど、SVGを編集したり保存したりといった使い方には向いていない。SVGはGIFやJPEGのような出力用のフォーマットで、オーサリングフォーマットではないという結論に達した。

理由は以下の通り。

  • レイヤーが無い (もちろん階層はあるけど)
  • 複数行のテキストを書けない。1行文字列をたくさん並べて複数行に見せかけることはできるけど、SVG内で一続きの文章として表現できない。
  • closepathを直線でしか描けない。曲線で閉じようと思ったら始点と終点を重ねるしかなく、閉じた図形であることをSVG内で表現できない。
  • 図形同士の関連性を表現できない。「円の中央に書かれた文字」や「図形同士をつなぐ線」といったことをSVG内で表現できない。
  • やたら柔軟性が高く、省略表記法も多い。こんなの解釈できるか!

知ってる人にしてみれば当たり前のことなんでしょうね。。。そんなこんなで今はオリジナルフォーマットを使ってます。

追記:
SVGをオーサリングフォーマットにしているSodipodiやSVGCatはかなり頑張ってると思う。Sodipodiが吐き出すSVGに癖があるのは苦労の跡なんだろうなぁ。