[reportlab-users] Farsi[persian] characters are printed wrong
Kay D
dtc.kay at gmail.com
Mon Oct 11 12:20:12 EDT 2010
1) Find TTF font which have all glyphs you need, put it to reportlab/fonts
2) Register it:
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
from reportlab import rl_config
rl_config.warnOnMissingFontGlyphs = 0
pdfmetrics.registerFont(TTFont('FreeSerif', 'FreeSerif.ttf'))
3) Use it:
c.setFont('FreeSerif', 12)
c.drawString(3*inch, -3*inch, "Farsi chars here")
Works fine for Russian and special chars like copyright.
PS. As for your question - what you're doing wrong - you just using fonts
which don't have Farsi glyphs. You also can try Asian fonts from Adobe, but
ttf approach above is easier and faster to do.
-- Kay
hello all,
> i tried to print a persian document with reportlab but the result was
> unknows black squares.
> my code is this:
>
> #########################################################################
> # -*- encoding: utf-8 -*-
> from reportlab.pdfgen import canvas
> c = canvas.Canvas("hello.pdf")
> from reportlab.lib.units import inch
> # move the origin up and to the left
> c.translate(inch,inch)
> # define a large font
> c.setFont("Helvetica", 80)
> # choose some colors
> c.setStrokeColorRGB(0.2,0.5,0.3)
> c.setFillColorRGB(1,0,1)
> # draw a rectangle
> c.rect(inch,inch,6*inch,9*inch, fill=1)
> # make text go straight up
> c.rotate(90)
> # change color
> c.setFillColorRGB(0,0,0.77)
> # say hello (note after rotate the y coord needs to be negative!)
> c.drawString(3*inch, -3*inch, "?????????????")
> c.showPage()
> c.save()
> #########################################################################
> what am i doing wrong?
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://two.pairlist.net/pipermail/reportlab-users/attachments/20101011/a4aaaae8/attachment.html>
More information about the reportlab-users
mailing list