当我指定字体时,reportlab字体粗细不起作用

时间:2016-01-18 23:57:05

标签: fonts reportlab

我在python中使用reportlab来制作pdf报告。 我可以根据需要在我的段落中使用粗体标记,如下所示,但是一旦我使用特定字体,粗体标记就不再显示为粗体。

import reportlab.rl_config
reportlab.rl_config.TTFSearchPath.append('/usr/share/fonts/FansyFont/')
from reportlab.pdfbase.pdfmetrics import registerFontFamily
registerFontFamily('FansyFont', normal='FansyFont-Regular', bold='FansyFont-Bold', italic='FansyFont-Italic', boldItalic='FansyFont-BoldItalic')
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
pdfmetrics.registerFont(TTFont('FansyFont-Bold', 'FansyFont-Bold.ttf'))
pdfmetrics.registerFont(TTFont('FansyFont-Regular', 'FansyFont-Regular.ttf'))
pdfmetrics.registerFont(TTFont('FansyFont-Italic', 'FansyFont-Italic.ttf'))
pdfmetrics.registerFont(TTFont('FansyFont-BoldItalic', 'FansyFont-BoldItalic.ttf'))


styles = getSampleStyleSheet()
ps = ParagraphStyle(styles['Normal'], fontName='FansyFont-Regular', alignment=TA_LEFT, fontSize=8)
Paragraph("<b>Table1:</b> some nice table", ps)

是否有人要求reportlab明白它应该将字体切换为“FansyFont-Bold”,还是有办法让它选择正确的字体?

此外,在其他编程语言甚至其他python包(如matplotlib)中,您只需为不同的权重指定字体系列而不是单个字体文件,那么我需要在reportlab中指定它?

1 个答案:

答案 0 :(得分:4)

注册所有字体后,您希望将它们与registerFontFamily()

绑定在一起
pdfmetrics.registerFont(TTFont('FansyFont-Bold', 'FansyFont-Bold.ttf'))
pdfmetrics.registerFont(TTFont('FansyFont-Regular', 'FansyFont-Regular.ttf'))
pdfmetrics.registerFont(TTFont('FansyFont-Italic', 'FansyFont-Italic.ttf'))
pdfmetrics.registerFont(TTFont('FansyFont-BoldItalic', 'FansyFont-BoldItalic.ttf'))

pdfmetrics.registerFontFamily(
    'FansyFont',
    normal='FansyFont-Regular',
    bold='FansyFont-Bold',
    italic='FansyFont-Italic',
    boldItalic='FansyFont-BoldItalic')

然后,只需使用FansyFont作为fontName

ps = ParagraphStyle(styles['Normal'], fontName='FansyFont', alignment=TA_LEFT, fontSize=8)