def get_font(d, font_paths, font_key="fontName", size_key="fontSize"): if font_key in d: font_name = d[font_key] resolved = False try: getTypeFace(font_name) resolved = True except: if font_paths is not None: for path in font_paths: try: registerFont(TTFont(font_name, os.path.join(path, "{0}.ttf".format(font_name)))) resolved = True break except: pass if not resolved: raise Exception("Could not locate font {0}".format(font_name)) else: font_name = shapes.STATE_DEFAULTS["fontName"] font_size = d.get(size_key, shapes.STATE_DEFAULTS["fontSize"]) return (font_name, font_size)
def _patch_font(self, svgAttr): font_mapping = {'sans-serif': 'Helvetica', 'serif': 'Times-Roman', 'monospace': 'Courier'} font_name = font_mapping.get(svgAttr, svgAttr) from reportlab.pdfbase.pdfmetrics import getTypeFace try: getTypeFace(font_name) except KeyError: font_name = 'Helvetica' return font_name
def _set_font( me): from reportlab.pdfbase.pdfmetrics import getFont from fonts import ff fonts = ff.getFontsWithAttributes( name=me._fontname) params = [ me._fontname, me._fontsize ] if fonts: #print 'FOUND IT', fonts f = fonts[0] params += [ f.isBold, f.isItalic ] else: from reportlab.pdfbase.pdfmetrics import getTypeFace try: f = getTypeFace( me._fontname) except KeyError: pass else: params += [ f.bold, f.italic ] me.context.SetFont( *params)