本文へスキップ

SVGパス編集

SVG Path Editor

パスデータを絶対・相対コマンドで書き換え、移動・拡大・回転・向きの反転を加え、バウンディングボックスとプレビューを表示します。

`d`属性を読み、変換したものを返します。絶対と相対、移動、拡大縮小、バウンディングボックスの中心まわりの回転、向きの反転、指定した小数桁での丸めです。結果はPath2Dを通して描くので、円弧の計算はSVGのレンダラと同じやり方でブラウザが行い、バウンディングボックスと、そのまま貼れるviewBoxを報告します。

🔒 ブラウザの中だけで動きますsvgpathvectoredit

path の d 属性

コマンドの形式

プレビュー

破線の長方形がバウンディングボックス、赤い点が始点です。塗りは nonzero 規則です。

結果

コマンド

18

サブパス

3

数値

32

バイト

113 → 97

バウンディングボックス

x 2.00 y 2.00 w 20.00 h 20.00

viewBox

2.00 2.00 20.00 20.00

何をするか

  • · SVG 最適化と同じパーサーで読むので、1.5.5 のような詰めた書き方も円弧のフラグも正しく読めます。絶対と相対の変換、小数の丸め、移動、拡大縮小、バウンディングボックスの中心を軸にした回転、向きの反転、バウンディングボックスの算出ができます。
  • · 回転させると H と V は L になり、円弧の半径・x 軸回転・sweep フラグは SVG 1.1 付録 F.6 の式で計算し直します。バウンディングボックスは制御点ではなく、各曲線の実際の極値から求めます。
  • · 曲線を単純化することはしません。それは形そのものを変える作業で、どこまで許すかを決めるのは人です。

ファイル全体を小さくするなら SVG 最適化、曲線の加速のしかたを調整するならイージング曲線エディタがあります。

使い方

  1. d属性を貼り付けます

    囲みの`<path>`は要らず、値だけです。詰めた書き方でも構いません。`1.5.5`を2つの数として読みますし、区切りのない円弧のフラグも扱えます。パーサがSVG最適化のものだからです。

  2. 必要な変換をかけます

    移動・拡大縮小・回転は座標そのものに適用されるので、出てきたものに`transform`属性は要りません。回転はバウンディングボックスの中心まわりで、アイコンならそれが望みどおりの動きであり、素の`rotate()`がすることとは違います。

  3. 絶対と相対、そして精度を選びます

    相対コマンドのほうがたいてい短く、インラインで埋め込むアイコンではそれが効きます。本当に容量を左右するのは精度です。24単位のアイコングリッドなら小数3桁で十分で、6桁から2桁に落とすと文字列が半分になることもよくあります。動かしながらバイト数の表示を見てください。

  4. 塗りがおかしければ向きを反転します

    赤い点が始点を示すので、反転の効き目が目に見えます。nonzeroの規則で内側のサブパスが穴になるかを決めるのは向きですし、stroke-dashのアニメーションがたどるのも向きです。

  5. パスか、viewBoxを取ります

    出力欄には`d`の値と、そのまま使える`<path>`要素が入っています。統計のパネルにはバウンディングボックスがviewBoxの文字列として出ていて、アイコンを枠にぴったり収めるいちばん速い方法です。

よくある質問

曲線を単純化してくれないのはなぜですか。

単純化は形を変えるもので、どれだけの変化なら許せるかはその絵についての判断であり、ツールには下せないからです。点を減らすアルゴリズムはどれも許容誤差を取りますし、その判断をする正直な場所は、代償が目で見えるベクター編集ソフトの中です。安全に容量を動かせるのは小数桁の丸めで、それはここにあります。

回転や拡大縮小をすると円弧はどうなりますか。

円弧のままです。半径、x軸の回転、スイープのフラグはSVG 1.1の附属書F.6の式で計算し直され、それが縦横で倍率の異なる拡大でも楕円の軸を正しく保ちます。回転すると`H`と`V`は`L`になります。水平な線は水平のままではいられないからです。

バウンディングボックスは制御点から取っていますか。

違います。各曲線の実際の極値から取っています。3次曲線の制御点はたいてい曲線の外側にあるので、制御点から作った箱は大きすぎます。しかも目に見えて大きすぎることが多く、まさにそこが効いてきます。この箱はviewBoxとして貼るものだからです。

パス1本しか扱えません。ファイル全体はどうしますか。

これは`d`の値ひとつを対象にする設計で、変換や反転が意味を持つのがその粒度だからです。文書全体なら、SVG最適化が中のすべてのパスを書き換えますし、SVGエディタ・解説がその周りの構造を読みます。

ここから渡せます

次の一手

このツールが出したものをそのまま受け取れる道具です。