[IMP]register custom fonts once only

bzr revid: tony@wonderland-20101220055040-lti41w3qq5xi3dtp
This commit is contained in:
Tony Gu
2010-12-20 13:50:40 +08:00
parent 2e03947c9f
commit 5cde817a86
+5 -2
View File
@@ -65,7 +65,7 @@ def _open_image(filename, path=None):
except IOError:
pass
raise IOError("File %s cannot be found in image path" % filename)
class NumberedCanvas(canvas.Canvas):
def __init__(self, *args, **kwargs):
canvas.Canvas.__init__(self, *args, **kwargs)
@@ -243,7 +243,8 @@ class _rml_doc(object):
for font in node.findall('registerFont'):
name = font.get('fontName').encode('ascii')
fname = font.get('fontFile').encode('ascii')
pdfmetrics.registerFont(TTFont(name, fname ))
if name not in pdfmetrics._fonts:
pdfmetrics.registerFont(TTFont(name, fname ))
addMapping(name, 0, 0, name) #normal
addMapping(name, 0, 1, name) #italic
addMapping(name, 1, 0, name) #bold
@@ -254,6 +255,8 @@ class _rml_doc(object):
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
if fontname not in pdfmetrics._fonts:
pdfmetrics.registerFont(TTFont(name, fname ))
pdfmetrics.registerFont(TTFont(fontname, filename ))
if (mode == 'all'):
addMapping(face, 0, 0, fontname) #normal