# [reportlab-users] RTL Patch Committed

Hosam Aly haly at centrivision.com
Mon Nov 23 10:06:16 EST 2009

Robin Becker wrote:

> Hosam Aly wrote:

>> Robin Becker wrote:

>>

> ...........

>>

>> Hello Robin. I am thinking about using UTF-16 because, I guess, we

>> would be writing character points instead of font code points. When

>> we are using font code points, the reader has no option but to render

>> the font glyphs that we wrote. I wanted to see, if we used character

>> points instead, whether the reader would be smart enough to do the

>> shaping itself.

>>

>>

> .........

> I think that is right, but then the font has somehow to be known to

> Acrobat Reader. I know this works in the CJK case for the places where

> pdfdoc encoding would normally be used. UTF16 is required because the

> fonts for the standard document annotations are not declared so the

> fonts have to be standard.

>

> If you modify the test_hello.py test file ie

>

> change line 19 to

>

> c.setAuthor(u'\u0643\u0644\u0627\u0645 \u0639\u0631\u0628\u064a')

>

> then in the document properties you will see that Acrobat Reader does

> get the visual reversal and character shaping correct (tested in

> ubuntu and windows).

>

> However, I haven't declared any font there so presumably Acrobat is

> using some standard system font.

I have tried changing the author text, and it worked as you said, but
that's probably irrelevant to PDF rendering. The text is being shown in
a text box, which uses the platform's APIs (Windows, GTK, etc.) to do
the rendering, and those APIs automatically handle bidirectionality and
character shaping.

What I really want to do is to get a UTF-16 sequence of characters
inside the brackets of a BT tag, to get something similar to this:

BT

/F13 12 Tf

288 720 Td

(\xff\xfe-\x063\x06'\x06E\x06) Tj

ET

(using a font that supports Arabic characters)

So I was wondering how I could get ReportLab to write a similar string
into the PDF. I wish to know which method(s) I should be calling, or
where to edit in ReportLab's code to test my hypothesis.

Thank you,

Hosam Aly

Software Engineer

Centrivision