Exemple #1
0
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)