pyfribidi for windows or any other bidi algorithm

2019-01-26 17:02发布

I'm trying to generate a report using reportlab, and the report language is Arabic. but the problem is reportlab doesn't support BIDI (Bidirection) Display because of the lack BIDI Algorithm support in Python. after alot of googling I found that there is a wrapper around Gnome Fribidi called PyFribidi. but it compiled and runs only on Linux, I tried to build it on windows using mingwin but the compilation fails because a lot of linux libs not found.

My question is, is there any Unicode bi-direction algorithm implementation in python, that runs on windows?

thanks.

4条回答
Evening l夕情丶
2楼-- · 2019-01-26 17:37

Here is another pure Python implementation of the Unicode bidi algorithm: http://code.google.com/p/pybidi/

查看更多
做个烂人
3楼-- · 2019-01-26 17:49

python-bidi http://pypi.python.org/pypi/python-bidi/ is a pure python API so presumably it should work fine on windows.

You need to use the RL branch of reportlab and changes any calls to pyfribidi with calls to python-bidi. This link might help http://code.pediapress.com/wiki/wiki/RightToLeft

查看更多
别忘想泡老子
4楼-- · 2019-01-26 17:56

In the meantime I implemented Arabic shaping in Python:

https://github.com/behdad/pyarabicshaping

查看更多
聊天终结者
5楼-- · 2019-01-26 18:00

Python BiDi is a great BiDi algorithm implementation, but it just support bi-direction (As Is) without fixing the contextual form of arabic script, to solve contextual form problem, you should use python-bidi module with an arabic reshaper library called python-arabic-reshaper.

example : (from => http://mpcabd.igeex.biz/python-arabic-text-reshaper/)

import arabic_reshaper
from bidi.algorithm import get_display

#...
reshaped_text = arabic_reshaper.reshape(u'اللغة العربية رائعة')
bidi_text = get_display(reshaped_text)
pass_arabic_text_to_render(bidi_text)
#...

it fixes my problem perfectly, and both packages are pure python implementation.

查看更多
登录 后发表回答