2013-11-30 4 views

ответ

1

В their documentation есть хорошее представление. Грубо говоря, жирные и курсивные версии любого шрифта на самом деле отличаются шрифтами. Поэтому вы просто устанавливаете шрифт, когда хотите изменить шрифты. Возможно, это было затянуто, но работало для меня:

import reportlab 
import os 
from reportlab.pdfgen import canvas 
from reportlab.pdfbase import pdfmetrics 
from reportlab.pdfbase.ttfonts import TTFont 

canv = canvas.Canvas("fonts_demo.pdf") 

font_variants = ("DejaVuSans","DejaVuSans-Oblique","DejaVuSans-Bold") 
folder = '/usr/share/fonts/truetype/dejavu/' 
for variant in font_variants: 
    pdfmetrics.registerFont(TTFont(variant, os.path.join(folder, variant+'.ttf'))) 

""" I could have registered each font with a line like this... 
pdfmetrics.registerFont(TTFont(DejaVuSans, os.path.join(folder,'DejaVuSans.ttf'))) 
but I like just making a list of my fonts and then iterating through it. """ 

## 0,0 is the bottom left corner of the page 
## and there are 72 dots per inch, so on an 8.5 inch page 
## the top left corner is at 8.5 * 72 
## canvas actually generates an A4 sheet, but this is close enough. 
x = 0; y = 8.5 * 72 
canv.setFont('DejaVuSans-Bold', 30) 
canv.drawString(x,y,"This is bold") 

## Move down one inch to draw the next line: 
y = y - 72 
canv.setFont('DejaVuSans-Oblique', 30) 
canv.drawString(x,y,"This is oblique, aka italic") 


## Move down one inch again: 
y = y - 72 
canv.setFont('DejaVuSans', 30) 
canv.drawString(x,y,"This is neither bold nor italic") 

## Save your work 
canv.save() 
+0

PS. Технически «наклонный» и «курсив» разные. Но это еще один вопрос/может червей – Amanda

Смежные вопросы