お絵描きソフトInkscape(インクスケープ)の使い方を初級レベルから上級レベルまで広く紹介しています。
情報追加のリクエストや分かりにくい点があれば下のCONTACTフォームからどうぞ。

Inkscapeの塗りつぶしパターンを自作するときに切り取られる位置について

 このページでは、Inkscapeを使ってオブジェクトの塗りつぶしに使う「パターン」を自作するときに、オブジェクトのどの位置で切り取ったものが「パターン」として登録されるのかをメモしておきたいと思います。

  (参考:パターンを使って塗りつぶす

(2025.02.07)

 Inkscapeには、繰り返しパターンを敷き詰めることでオブジェクトのフィルやストロークを塗りつぶす機能があります。そもそもこの機能はSVG形式の仕様として定義されているもので、「パターンをメニューに登録する」のほうでも書いたように、キャンバス上に描いた任意のオブジェクトを独自の「パターン」として登録して、他のオブジェクトの塗りつぶしに使うことができます。

 ところで独自のパターンを作るときにちょっとした注意点があって、描いたオブジェクトを選択してパターン1個分として登録するときに、そのオブジェクトのどこからどこまでが切り取られてパターンになるのかという点には少しクセがあります。

 例えば次のようなオブジェクトを描いてこれをパターン化するとします。

 これをパターンに登録して塗りつぶしに使ったときに、次の右のようになることを期待しますが・・・

 実際にやってみると次のようになります。1個のパターンの端のストローク(緑のストローク)が青いストロークよりも太くなってしまいます。

 どうしてこうなってしまうかというと、どうやらパターンの切り取り位置に「仮想境界枠」が採用されているのが理由のようです。

 「仮想境界枠」でパターンを切り取っているので、パターンを敷き詰めたときは次のような配置になっています。隣り合う2本のストロークがくっつくので2倍の幅があるように見えてしまいます。右の図は説明用に少し隙間を空けて描いたものです。

 「仮想境界枠」を使ってパターンを切り取ると、描かれているオブジェクトの見た目に沿って、例えば太いストロークもその外側で切り取ることになるので、とても自然な切り取り方と言えなくもないですが、オブジェクトの端にストロークを描いているときは「仮想境界枠」ではなく「幾何学的境界枠」のほうで切り取ってほしいときもあります。上の例でももし「幾何学的境界枠」で切り取ってくれれば境界上の緑のストロークは縦に半分になる位置で切り取られるので敷き詰めたあとでストローク2本がぴったりくっついて1本分の幅になってくれます。

 かといって、パターン化するための元のオブジェクトの外側のストロークの幅をあらかじめ調整しておくようにしたり、パターンの切り出し位置にはストロークを描かないようにするのも大変です。

 そこで次のようにすることを考えてみました。

 パターン化対象のオブジェクトの外枠部分(この例では緑色の矩形オブジェクト)を複製して、それをクリッピングパスとして(上の例では説明用に色を黒く変更しています)使ってクリッピングします。すると幾何学的境界枠の位置でクリッピングされるので、このクリッピング後のオブジェクトをパターン化します。言い換えれば、幾何学的境界枠の位置でクリッピングすれば、クリッピング後は仮想境界枠と幾何学的境界枠が一致するということです。

 このクリッピング後のオブジェクトをパターンとして使うと、次のように目的通りストロークの幅が太くならずに敷き詰めることができます。