[reportlab-users] Farsi[persian] characters are printed wrong
Nima
nima.g.67 at gmail.com
Tue Oct 12 00:42:54 EDT 2010
thank you kay.i was realy helpful and correct.
to be more helpful to others yesterday i wrote a complete program that
prints persian characters which use dejavu fonts :
#################################################################
# -*- encoding: utf-8 -*-
from reportlab.pdfgen import canvas
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
canv = canvas.Canvas('test_03.pdf')
fontname = 'CS'
my_location_of_TTF = 'C:\WINDOWS\Fonts\DejaVuSans.ttf'
pdfmetrics.registerFont(TTFont(fontname,my_location_of_TTF))
a=u'\u010d\u0107\u017e\u0161\u0111\u010c\u0106\u017d\u0160\u0110'
canv.setFont(fontname,10)
canv.drawString(50,100,'hjhjgjhhj!!!!!!!!!!!!!!!!!'+a.encode('UTF8'))
canv.save()
################################################################
ps.any user have to download font files and install them in fonts folder.
On Mon, 11 Oct 2010 19:50:12 +0330, Kay D <dtc.kay at gmail.com> wrote:
> 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?
>>
>>
--
Using Opera's revolutionary email client: http://www.opera.com/mail/
More information about the reportlab-users
mailing list