From d533e8bd3910f17cc1dd360857cc6cbffaebb87e Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Thu, 5 Dec 2024 14:19:08 -0700 Subject: [PATCH] [StatisticsControlPen] Fix uninitialized variable An open contour was hitting this because _startingPoint wasn't set. Fixes https://github.com/fonttools/fonttools/issues/3527 --- Lib/fontTools/pens/statisticsPen.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Lib/fontTools/pens/statisticsPen.py b/Lib/fontTools/pens/statisticsPen.py index b91d93b6e..874a3c5b8 100644 --- a/Lib/fontTools/pens/statisticsPen.py +++ b/Lib/fontTools/pens/statisticsPen.py @@ -106,6 +106,7 @@ class StatisticsControlPen(StatisticsBase, BasePen): def _moveTo(self, pt): self._nodes.append(complex(*pt)) + self._startPoint = pt def _lineTo(self, pt): self._nodes.append(complex(*pt)) @@ -119,12 +120,16 @@ class StatisticsControlPen(StatisticsBase, BasePen): self._nodes.append(complex(*pt)) def _closePath(self): + p0 = self._getCurrentPoint() + if p0 != self._startPoint: + self._lineTo(self._startPoint) self._update() def _endPath(self): p0 = self._getCurrentPoint() if p0 != self._startPoint: raise OpenContourError("Glyph statistics not defined on open contours.") + self._update() def _update(self): nodes = self._nodes