1"""Pen multiplexing drawing to one or more pens.""" 2 3from fontTools.pens.basePen import AbstractPen 4 5 6__all__ = ["TeePen"] 7 8 9class TeePen(AbstractPen): 10 """Pen multiplexing drawing to one or more pens. 11 12 Use either as TeePen(pen1, pen2, ...) or TeePen(iterableOfPens).""" 13 14 def __init__(self, *pens): 15 if len(pens) == 1: 16 pens = pens[0] 17 self.pens = pens 18 19 def moveTo(self, p0): 20 for pen in self.pens: 21 pen.moveTo(p0) 22 23 def lineTo(self, p1): 24 for pen in self.pens: 25 pen.lineTo(p1) 26 27 def qCurveTo(self, *points): 28 for pen in self.pens: 29 pen.qCurveTo(*points) 30 31 def curveTo(self, *points): 32 for pen in self.pens: 33 pen.curveTo(*points) 34 35 def closePath(self): 36 for pen in self.pens: 37 pen.closePath() 38 39 def endPath(self): 40 for pen in self.pens: 41 pen.endPath() 42 43 def addComponent(self, glyphName, transformation): 44 for pen in self.pens: 45 pen.addComponent(glyphName, transformation) 46 47 48if __name__ == "__main__": 49 from fontTools.pens.basePen import _TestPen 50 51 pen = TeePen(_TestPen(), _TestPen()) 52 pen.moveTo((0, 0)) 53 pen.lineTo((0, 100)) 54 pen.curveTo((50, 75), (60, 50), (50, 25)) 55 pen.closePath() 56