2011年3月26日土曜日

inkscapeのフィル/スウォッチは少しだけファイルサイズの無駄

inkscapeにあるよく分からない塗りつぶし方~スウォッチ。 調べてみると、色を登録しておいてリスト選択で選べるようにするためのものらしいです。 ペイント系ソフトのパレットのように使うらしい。

xmlエディタでdefsを見ると、その正体はstopが1つしかないlinearGradientでした。 それに fill:url(#id) のリンクを張ることで同じ色を選べるという仕掛けです。

と、いうわけでスウォッチを使うたびにdefsにlinearGradientが追加されます。 そのオブジェクトで最初にスウォッチをクリックしたときにとりあえずのlinearGradientが追加されます。 そのためsvgファイルのサイズは肥大。 一応、「Defのバキューム」で消せる...と思ったら消えませんね。 このコマンドは何に効いて何に効かないか良く分からないです。 まぁ、効くときもあるんでしょう。 ファイルサイズにこだわるならスウォッチは使わない方が無難です。

ちなみに、スウォッチの正体がlinearGradientということで登録済みの線形グラデーションを色んなオブジェクトに適用することができます。 手順は、

  1. 1つ目のオブジェクトで線形グラデーションを設定。
  2. そのオブジェクトのフィルでスウォッチをクリック。
  3. さっきの線形グラデーションがスウォッチで選択された状態に。
  4. 他のオブジェクトでもスウォッチで登録グラデーションが選べるように。

グラデーションの始点終点を調節する必要があるときはオブジェクトごとに設定することも可能です。 こういう使い方をするときは、便利かな? defsは肥大するけど...

こういう使い方が出来るのは線形グラデーションだけで、放射グラデーションでは使えないみたいですね。 放射グラデーションの設定をした後にスウォッチをクリックしたら線形グラデーションに変更されて登録されてしまいました。 どうしてこんな仕様に?