少しSVGパスパーサー/ノーマライザーを作成しようとしていますが、仕様に関する最後の問題が発生しました:
私が理解している限り、ほとんどのコマンドは追加の暗黙的なコマンドをサポートしており、それらがサポートしていて相対モードになっている場合、「現在のポイント」は最後の暗黙的なコマンドの後で更新されます。それらの間ではありません。
しかし、「moveTo」コマンドは特別なものであり、暗黙的な「lineTo」コマンドを許可します。「lineTo」コマンド自体は、最後の暗黙的なコマンドの後にのみ「現在のポイント」を更新します。
現在の点から指定された (x,y) 座標まで線を引き、それが新しい現在の点になります。L (大文字) は、絶対座標が続くことを示します。l (小文字) は、相対座標が続くことを示します。ポリラインを描画するために、いくつかの座標ペアを指定できます。コマンドの最後に、新しい現在の点が、提供された最終的な座標セットに設定されます。
「lineTo」を追加した「moveTo」が何をするのかわかりません。SVG パス仕様の抜粋:
指定された (x,y) 座標で新しいサブパスを開始します。M (大文字) は、絶対座標が続くことを示します。m (小文字) は、相対座標が続くことを示します。moveto の後に複数の座標のペアが続く場合、後続のペアは暗黙の lineto コマンドとして扱われます。したがって、暗黙的な lineto コマンドは、moveto が相対の場合は相対になり、moveto が絶対の場合は絶対になります。相対 moveto (m) がパスの最初の要素として表示される場合、絶対座標のペアとして扱われます。この場合、最初の moveto が絶対 moveto として解釈されても、後続の座標ペアは相対座標として扱われます。
特に最後の文は紛らわしいです。
さらに悪いことに、SVGTiny Path Specでは別の説明が書かれていますが、他のほとんどすべては同じです。
指定された (x,y) 座標で新しいサブパスが開始されます。これにより、指定された座標に新しい現在のポイントも確立されます。相対「moveto」(m) が「path」の最初の要素として表示される場合、絶対座標のペアとして扱われます。「moveto」の後に複数の座標のペアが続く場合、後続のペアは暗黙の「lineto」コマンドとして扱われます。
「現在のポイント」がその間に更新されることを意味しますか (これは他のすべてと矛盾します)、それとも新しいバージョンで修正されたあいまいな説明でしたか?