SVGLoader: Fix setting first path point after multiple moveTo commands #22983
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There’s a bug in interpreting
m
andM
commands in the pathd
attribute. Here’s an example of SVG as rendered by a browser and Inkscape:hindi.svg.zip
Here’s how it is loaded by SVGLoader (note how the last char is inset to the center):
Here’s a result with the patch applied:
The problem is in the definition of the initial point (
firstPoint
in terms of three.js). The SVG standard says:And:
That “must” from the later is basically not applied in the current implementation. This leads to glitches in paths that contain
Z
after multipleM
commands because only the very firstM
sets the initial point and the path is mistakenly joined with it.