Correct for (rare) bad tracking of previousIntersectionPoint #65
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.
The single E glyph in prevint.zip exhibits a problem with
previousIntersectionPoint
tracking inflatten.py:reCurveSubSegments()
. This is a real example from a production font but unfortunately I haven't been able to generate other similar cases synthetically. (I tried less hard with this one because the fix seemed straightforward.)Anyway, it appears that very rarely the
previousIntersectionPoint
is not on the segment handled next. This is a particular problem for theelif flatSegment[-1] == inputSegment.flat[-1] and flatSegment[0] != inputSegment.flat[0]:
code, which will use that point as the start of the spline if it isn'tNone
.My added code just checks to see if the
previousIntersectionPoint
is actually on the currentinputSegment
and if not sets it back toNone
so that it won't cause problems.