当我指定字体时,reportlab 字体粗细不起作用
reportlab font weight does not work when I specify the font
我正在 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 中指定它?
注册完所有字体后,你想用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)
我正在 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 中指定它?
注册完所有字体后,你想用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)