"""Pen multiplexing drawing to one or more pens.""" from fontTools.pens.basePen import AbstractPen __all__ = ["TeePen"] class TeePen(AbstractPen): """Pen multiplexing drawing to one or more pens. Use either as TeePen(pen1, pen2, ...) or TeePen(iterableOfPens).""" def __init__(self, *pens): if len(pens) == 1: pens = pens[0] self.pens = pens def moveTo(self, p0): for pen in self.pens: pen.moveTo(p0) def lineTo(self, p1): for pen in self.pens: pen.lineTo(p1) def qCurveTo(self, *points): for pen in self.pens: pen.qCurveTo(*points) def curveTo(self, *points): for pen in self.pens: pen.curveTo(*points) def closePath(self): for pen in self.pens: pen.closePath() def endPath(self): for pen in self.pens: pen.endPath() def addComponent(self, glyphName, transformation): for pen in self.pens: pen.addComponent(glyphName, transformation) if __name__ == "__main__": from fontTools.pens.basePen import _TestPen pen = TeePen(_TestPen(), _TestPen()) pen.moveTo((0, 0)) pen.lineTo((0, 100)) pen.curveTo((50, 75), (60, 50), (50, 25)) pen.closePath()