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

Inkscapeで閉じたパスを切りのいい破線にする

 このページでは、Inkscapeを使って破線で閉じたパスを描くときに始点と終点のつなぎ目のところで中途半端な破線にならないようにする(切りのいいところで閉じる)方法について書いておきたいと思います。

(2024.07.02更新)

 Inkscapeがメインのファイル形式にしているSVG形式では破線の繰り返しパターンとして「線(ダッシュ)」と「隙間」のそれぞれの長さを記述することができます。

 Inkscapeでパスやシェイプのストロークを破線にするときも、ダイアログ上で「線」と「隙間」の長さを直接数値で指定することができます。詳しいことは「オブジェクトのスタイルを設定する」のほうに書いてあります。

 ところで、閉じたパス(楕円や多角形など)を破線で描く場合、パスの先頭と末尾(始点と終点)を重ねることになるので、破線の繰り返しパターンは始点からスタートして終点の位置で中断されます。そのため、始点から終点までの長さ(つまりパス1周の長さ)が繰り返しパターン1周期分の長さのちょうど整数倍であれば破線の「線」と「隙間」がバランスよく描かれますが、整数倍でない場合は次のように始点/終点の近くで中途半端な長さの破線になってしまい、少し格好悪いです。

 かといって、切りのいい破線になるようにパスの長さを調節するのも難しいですし、破線の「線」や「隙間」の長さをパス全体を100%としたときの比率で記述する方法はSVGの仕様として(もちろんInkscapeでも)サポートされていないようです。

 SVG形式としては「stroke-dasharray」という属性に「10% 5%」のように「%」で記述する方法もあるようですが、Inkscapeで試してみても「%」の文字は無視されてしまいました。ちなみに「%」で記述したときはパスオブジェクトの左上から右下までの距離を100%としたときの長さになるようです。

 Inkscapeの標準機能では始点(と終点)のところで切りのいい破線にすることは難しそうなので「破線のストローク(Dashed Stroke)」という名前のパスエフェクトを使ってみます。

 このパスエフェクトは固定長の「線」と「隙間」ではなく、ノードからノードまで(すなわちセグメント)を等分割した「線」と「隙間」を描いてくれるというものです。

 「破線のストローク」にはセグメントの両端で破線をどう描くかを指定するパラメータがあるので、これをうまく指定すれば閉じたパスの始点のところが中途半端にならないようにすることができます。

 具体的には「破線のストローク」を適用すると表示されるダイアログで次のように指定します。

 特に「始点/終点は半分」というオプションにチェックを入れるところがポイントで、こうすることでセグメントの端のところの「線(ダッシュ)」が他のものの半分になるので、2つのセグメントをまたぐ「線」は半分と半分を合わせてちょうど1本分の「線」に見えるようになり、始点のところも切りがよくなります。

 なお、あくまでもパスエフェクトを使って疑似的(?)に描いている破線なので、適用後に元のパスを変形するとその変形に合わせて破線の形も次のように変形されてしまいます。

 こうならないようにするには、変形後にあらためて「破線のストローク」を適用する必要があるようです。