diff options
Diffstat (limited to 'Lib/fontTools/pens/reportLabPen.py')
-rw-r--r-- | Lib/fontTools/pens/reportLabPen.py | 135 |
1 files changed, 71 insertions, 64 deletions
diff --git a/Lib/fontTools/pens/reportLabPen.py b/Lib/fontTools/pens/reportLabPen.py index 43217d42..2cb89c8b 100644 --- a/Lib/fontTools/pens/reportLabPen.py +++ b/Lib/fontTools/pens/reportLabPen.py @@ -7,67 +7,74 @@ __all__ = ["ReportLabPen"] class ReportLabPen(BasePen): - """A pen for drawing onto a ``reportlab.graphics.shapes.Path`` object.""" - - def __init__(self, glyphSet, path=None): - BasePen.__init__(self, glyphSet) - if path is None: - path = Path() - self.path = path - - def _moveTo(self, p): - (x,y) = p - self.path.moveTo(x,y) - - def _lineTo(self, p): - (x,y) = p - self.path.lineTo(x,y) - - def _curveToOne(self, p1, p2, p3): - (x1,y1) = p1 - (x2,y2) = p2 - (x3,y3) = p3 - self.path.curveTo(x1, y1, x2, y2, x3, y3) - - def _closePath(self): - self.path.closePath() - - -if __name__=="__main__": - import sys - if len(sys.argv) < 3: - print("Usage: reportLabPen.py <OTF/TTF font> <glyphname> [<image file to create>]") - print(" If no image file name is created, by default <glyphname>.png is created.") - print(" example: reportLabPen.py Arial.TTF R test.png") - print(" (The file format will be PNG, regardless of the image file name supplied)") - sys.exit(0) - - from fontTools.ttLib import TTFont - from reportlab.lib import colors - - path = sys.argv[1] - glyphName = sys.argv[2] - if (len(sys.argv) > 3): - imageFile = sys.argv[3] - else: - imageFile = "%s.png" % glyphName - - font = TTFont(path) # it would work just as well with fontTools.t1Lib.T1Font - gs = font.getGlyphSet() - pen = ReportLabPen(gs, Path(fillColor=colors.red, strokeWidth=5)) - g = gs[glyphName] - g.draw(pen) - - w, h = g.width, 1000 - from reportlab.graphics import renderPM - from reportlab.graphics.shapes import Group, Drawing, scale - - # Everything is wrapped in a group to allow transformations. - g = Group(pen.path) - g.translate(0, 200) - g.scale(0.3, 0.3) - - d = Drawing(w, h) - d.add(g) - - renderPM.drawToFile(d, imageFile, fmt="PNG") + """A pen for drawing onto a ``reportlab.graphics.shapes.Path`` object.""" + + def __init__(self, glyphSet, path=None): + BasePen.__init__(self, glyphSet) + if path is None: + path = Path() + self.path = path + + def _moveTo(self, p): + (x, y) = p + self.path.moveTo(x, y) + + def _lineTo(self, p): + (x, y) = p + self.path.lineTo(x, y) + + def _curveToOne(self, p1, p2, p3): + (x1, y1) = p1 + (x2, y2) = p2 + (x3, y3) = p3 + self.path.curveTo(x1, y1, x2, y2, x3, y3) + + def _closePath(self): + self.path.closePath() + + +if __name__ == "__main__": + import sys + + if len(sys.argv) < 3: + print( + "Usage: reportLabPen.py <OTF/TTF font> <glyphname> [<image file to create>]" + ) + print( + " If no image file name is created, by default <glyphname>.png is created." + ) + print(" example: reportLabPen.py Arial.TTF R test.png") + print( + " (The file format will be PNG, regardless of the image file name supplied)" + ) + sys.exit(0) + + from fontTools.ttLib import TTFont + from reportlab.lib import colors + + path = sys.argv[1] + glyphName = sys.argv[2] + if len(sys.argv) > 3: + imageFile = sys.argv[3] + else: + imageFile = "%s.png" % glyphName + + font = TTFont(path) # it would work just as well with fontTools.t1Lib.T1Font + gs = font.getGlyphSet() + pen = ReportLabPen(gs, Path(fillColor=colors.red, strokeWidth=5)) + g = gs[glyphName] + g.draw(pen) + + w, h = g.width, 1000 + from reportlab.graphics import renderPM + from reportlab.graphics.shapes import Group, Drawing, scale + + # Everything is wrapped in a group to allow transformations. + g = Group(pen.path) + g.translate(0, 200) + g.scale(0.3, 0.3) + + d = Drawing(w, h) + d.add(g) + + renderPM.drawToFile(d, imageFile, fmt="PNG") |