When collecting a glyph's segments, we can't simply call the glyphs' draw
method with the GetSegmentsPen, but we must initialize the
PointToSegmentPen explicitly with outputImpliedClosingLine=True.
By default PointToSegmentPen does not outputImpliedClosingLine -- unless
last and first point on closed contour are duplicated.
Because we are converting multiple glyphs at the same time, we want to
make sure the _get_segments function returns the same number of segments,
whether or not the last and first point overlap.
Fixes https://github.com/googlefonts/fontmake/issues/572
Also see: https://github.com/fonttools/fonttools/pull/1720
The PointToSegmentPen translates between PointPen and (Segment)Pen
protocol.
In the SegmentPen protocol, closed contours always imply a final 'lineTo'
segment from the last oncurve point to the starting point.
So the PointToSegmentPen omits the final 'lineTo' segment for closed
contours -- unless the option 'outputImpliedClosingLine' is True
(it is False by default, and defcon.Glyph.draw method initializes the
converter pen without this option).
However, if the last oncurve point is on a "line" segment and has same
coordinates as the starting point of a closed contour, the converter pen must
always output the closing 'lineTo' explicitly (regardless of the value of the
'outputImpliedClosingLine' option) in order to disambiguate this case from
the implied closing 'lineTo'.
If it doesn't do that, a duplicate 'line' point at the end of a closed
contour gets lost in the conversion.
See https://github.com/googlefonts/fontmake/issues/572.
I forgot to do this before releasing 4.0.0 -- but it's ok.
Even if wheel file name incorrectly says 'py2.py3', PyPI reads the metadata
from the package and returns the correct version of fonttools (3.44.0 vs 4.0)
depending on the version of the python interpreter used to run pip installer.
the boilerplate .gitignore from Github was too broad and all-catching.
It included things like 'lib' (which is where all modules are in fonttools...)
or stuff for tools which we never use.
So I just deleted those.
Similar to what we do with “post” table names. I’d have said the font is
broken, but all applications I tried it with loaded it just fine, though
they differed in which glyph to pick from the duplicate ones.
Fixes https://github.com/fonttools/fonttools/issues/1602