From 60211a90ac71b02d8c2c09e8fcf81dbe1dc085d0 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Andr=C3=A9=20Wobst?= Date: Thu, 16 Jun 2011 21:56:49 +0000 Subject: [PATCH] remove code duplication git-svn-id: https://pyx.svn.sourceforge.net/svnroot/pyx/trunk/pyx@3166 069f4177-920e-0410-937b-c2a4a81bcd90 --- pyx/font/font.py | 70 +++++++++++++++++++++----------------------------------- 1 file changed, 26 insertions(+), 44 deletions(-) diff --git a/pyx/font/font.py b/pyx/font/font.py index 69e548ac..ea319ed6 100644 --- a/pyx/font/font.py +++ b/pyx/font/font.py @@ -421,33 +421,36 @@ class T1text_pt(text_pt): encodings[encodingname] = dict([(glyphname, i) for i, glyphname in enumerate(glyphnames)]) return encodingname + def textpath(self): + if self.decode: + if self.kerning: + data = self.font.metric.resolvekernings(self.glyphnames, self.size_pt) + else: + data = self.glyphnames + else: + data = self.charcodes + textpath = path.path() + x_pt = self.x_pt + y_pt = self.y_pt + for i, value in enumerate(data): + if self.kerning and i % 2: + if value is not None: + x_pt += value + else: + if i: + x_pt += self.spaced_pt + glyphpath, wx_pt, wy_pt = self.font.t1file.getglyphpathwxwy_pt(value, self.size_pt, convertcharcode=not self.decode) + textpath += glyphpath.transformed(trafo.translate_pt(x_pt, y_pt)) + x_pt += wx_pt + y_pt += wy_pt + return textpath + def processPS(self, file, writer, context, registry, bbox): if not self.ignorebbox: bbox += self.bbox() if writer.text_as_path: - if self.decode: - if self.kerning: - data = self.font.metric.resolvekernings(self.glyphnames, self.size_pt) - else: - data = self.glyphnames - else: - data = self.charcodes - textpath = path.path() - x_pt = self.x_pt - y_pt = self.y_pt - for i, value in enumerate(data): - if self.kerning and i % 2: - if value is not None: - x_pt += value - else: - if i: - x_pt += self.spaced_pt - glyphpath, wx_pt, wy_pt = self.font.t1file.getglyphpathwxwy_pt(value, self.size_pt, convertcharcode=not self.decode) - textpath += glyphpath.transformed(trafo.translate_pt(x_pt, y_pt)) - x_pt += wx_pt - y_pt += wy_pt - deco.decoratedpath(textpath, fillstyles=[]).processPS(file, writer, context, registry, bbox) + deco.decoratedpath(self.textpath(), fillstyles=[]).processPS(file, writer, context, registry, bbox) else: # register resources if self.font.t1file is not None: @@ -510,28 +513,7 @@ class T1text_pt(text_pt): bbox += self.bbox() if writer.text_as_path: - if self.decode: - if self.kerning: - data = self.font.metric.resolvekernings(self.glyphnames, self.size_pt) - else: - data = self.glyphnames - else: - data = self.charcodes - textpath = path.path() - x_pt = self.x_pt - y_pt = self.y_pt - for i, value in enumerate(data): - if self.kerning and i % 2: - if value is not None: - x_pt += value - else: - if i: - x_pt += self.spaced_pt - glyphpath, wx_pt, wy_pt = self.font.t1file.getglyphpathwxwy_pt(value, self.size_pt, convertcharcode=not self.decode) - textpath += glyphpath.transformed(trafo.translate_pt(x_pt, y_pt)) - x_pt += wx_pt - y_pt += wy_pt - deco.decoratedpath(textpath, fillstyles=[]).processPDF(file, writer, context, registry, bbox) + deco.decoratedpath(self.textpath(), fillstyles=[]).processPDF(file, writer, context, registry, bbox) else: if self.decode: encodingname = self.getencodingname(writer.encodings.setdefault(self.font.name, {})) -- 2.11.4.GIT