From 03d39c542972f1bc70a15ed0726dc9130e6ef2e8 Mon Sep 17 00:00:00 2001 From: "Quentin (OpenERP)" Date: Fri, 31 May 2013 13:46:12 +0200 Subject: [PATCH] [IMP/FIX] report, trml2pdf: added the support of registerFontFamily tag to allow the mapping of different fonts for bold, italic or boldItalic bzr revid: qdp-launchpad@openerp.com-20130531114612-ofcn1swt5o5cc7oc --- openerp/report/render/rml2pdf/trml2pdf.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/openerp/report/render/rml2pdf/trml2pdf.py b/openerp/report/render/rml2pdf/trml2pdf.py index 243cc02a0b3..793c6d573fe 100644 --- a/openerp/report/render/rml2pdf/trml2pdf.py +++ b/openerp/report/render/rml2pdf/trml2pdf.py @@ -277,11 +277,24 @@ class _rml_doc(object): fname = font.get('fontFile').encode('ascii') if name not in pdfmetrics._fonts: pdfmetrics.registerFont(TTFont(name, fname)) + #by default, we map the fontName to each style (bold, italic, bold and italic), so that + #if there isn't any font defined for one of these style (via a font family), the system + #will fallback on the normal font. addMapping(name, 0, 0, name) #normal addMapping(name, 0, 1, name) #italic addMapping(name, 1, 0, name) #bold addMapping(name, 1, 1, name) #italic and bold + #if registerFontFamily is defined, we register the mapping of the fontName to use for each style. + for font_family in node.findall('registerFontFamily'): + family_name = font_family.get('normal').encode('ascii') + if font_family.get('italic'): + addMapping(family_name, 0, 1, font_family.get('italic').encode('ascii')) + if font_family.get('bold'): + addMapping(family_name, 1, 0, font_family.get('bold').encode('ascii')) + if font_family.get('boldItalic'): + addMapping(family_name, 1, 1, font_family.get('boldItalic').encode('ascii')) + def setTTFontMapping(self,face, fontname, filename, mode='all'): from reportlab.lib.fonts import addMapping from reportlab.pdfbase import pdfmetrics