/
githubmirror
/
nbs
Обзор
Документация
Войти
/
githubmirror
/
nbs
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
contrib/python/fonttools/fontTools/pens/explicitClosingLinePen.py
101 строка
3 KB
Anton Myagkov
Update ydb version to 24.4 (#4579)
07 фев 2026, 11:59
Не верифицирован
07 фев 2026, 11:59
2c21cae
Код
Авторство
О чём код?
from fontTools.pens.filterPen import ContourFilterPen class ExplicitClosingLinePen(ContourFilterPen): """A filter pen that adds an explicit lineTo to the first point of each closed contour if the end point of the last segment is not already the same as the first point. Otherwise, it passes the contour through unchanged. >>> from pprint import pprint >>> from fontTools.pens.recordingPen import RecordingPen >>> rec = RecordingPen() >>> pen = ExplicitClosingLinePen(rec) >>> pen.moveTo((0, 0)) >>> pen.lineTo((100, 0)) >>> pen.lineTo((100, 100)) >>> pen.closePath() >>> pprint(rec.value) [('moveTo', ((0, 0),)), ('lineTo', ((100, 0),)), ('lineTo', ((100, 100),)), ('lineTo', ((0, 0),)), ('closePath', ())] >>> rec = RecordingPen() >>> pen = ExplicitClosingLinePen(rec) >>> pen.moveTo((0, 0)) >>> pen.lineTo((100, 0)) >>> pen.lineTo((100, 100)) >>> pen.lineTo((0, 0)) >>> pen.closePath() >>> pprint(rec.value) [('moveTo', ((0, 0),)), ('lineTo', ((100, 0),)), ('lineTo', ((100, 100),)), ('lineTo', ((0, 0),)), ('closePath', ())] >>> rec = RecordingPen() >>> pen = ExplicitClosingLinePen(rec) >>> pen.moveTo((0, 0)) >>> pen.curveTo((100, 0), (0, 100), (100, 100)) >>> pen.closePath() >>> pprint(rec.value) [('moveTo', ((0, 0),)), ('curveTo', ((100, 0), (0, 100), (100, 100))), ('lineTo', ((0, 0),)), ('closePath', ())] >>> rec = RecordingPen() >>> pen = ExplicitClosingLinePen(rec) >>> pen.moveTo((0, 0)) >>> pen.curveTo((100, 0), (0, 100), (100, 100)) >>> pen.lineTo((0, 0)) >>> pen.closePath() >>> pprint(rec.value) [('moveTo', ((0, 0),)), ('curveTo', ((100, 0), (0, 100), (100, 100))), ('lineTo', ((0, 0),)), ('closePath', ())] >>> rec = RecordingPen() >>> pen = ExplicitClosingLinePen(rec) >>> pen.moveTo((0, 0)) >>> pen.curveTo((100, 0), (0, 100), (0, 0)) >>> pen.closePath() >>> pprint(rec.value) [('moveTo', ((0, 0),)), ('curveTo', ((100, 0), (0, 100), (0, 0))), ('closePath', ())] >>> rec = RecordingPen() >>> pen = ExplicitClosingLinePen(rec) >>> pen.moveTo((0, 0)) >>> pen.closePath() >>> pprint(rec.value) [('moveTo', ((0, 0),)), ('closePath', ())] >>> rec = RecordingPen() >>> pen = ExplicitClosingLinePen(rec) >>> pen.closePath() >>> pprint(rec.value) [('closePath', ())] >>> rec = RecordingPen() >>> pen = ExplicitClosingLinePen(rec) >>> pen.moveTo((0, 0)) >>> pen.lineTo((100, 0)) >>> pen.lineTo((100, 100)) >>> pen.endPath() >>> pprint(rec.value) [('moveTo', ((0, 0),)), ('lineTo', ((100, 0),)), ('lineTo', ((100, 100),)), ('endPath', ())] """ def filterContour(self, contour): if ( not contour or contour[0][0] != "moveTo" or contour[-1][0] != "closePath" or len(contour) < 3 ): return movePt = contour[0][1][0] lastSeg = contour[-2][1] if lastSeg and movePt != lastSeg[-1]: contour[-1:] = [("lineTo", (movePt,)), ("closePath", ())]