def font(runtime, fontname, fontsize, leading=None): if fontname not in pdfmetrics._fonts and not fontname in pdfmetrics.standardFonts: try: font = TTFont(fontname, '{}.ttf'.format(fontname)) except: font = TTFont(fontname, '{}.ttc'.format(fontname)) pdfmetrics.registerFont(font) reportlab_mapping(font) if font.face.fileKind == 'TTC': for idx, _ in enumerate(font.face.subfontOffsets[1:]): tt_font = TTFont(fontname, '{}.ttc'.format(fontname), subfontIndex=idx + 1) tt_font.fontName = tt_font.face.name.decode('utf-8') pdfmetrics.registerFont(tt_font) reportlab_mapping(tt_font) if leading is not None: leading = float(leading) runtime.state.set_font(fontname, fontsize, leading)