4

我正在尝试使用reportlab 生成报告,报告语言是阿拉伯语。但问题是reportlab不支持BIDI(双向)显示,因为Python中缺乏BIDI算法支持。经过大量谷歌搜索后,我发现 Gnome Fribidi周围有一个名为PyFribidi的包装器。但它只能在 Linux 上编译和运行,我尝试使用 mingwin 在 Windows 上构建它,但编译失败,因为找不到很多 linux 库。

我的问题是,在 python 中是否有任何在 Windows 上运行的 Unicode 双向算法实现?

谢谢。

4

4 回答 4

3

Python BiDi是一个很棒的 BiDi 算法实现,但它只支持双向(As Is)而不修复阿拉伯语脚本的上下文形式,要解决上下文形式问题,您应该使用 python-bidi 模块和一个名为python-的阿拉伯语重塑器库阿拉伯语整形器

示例:(来自 => 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)
#...

它完美地解决了我的问题,并且两个包都是纯 python 实现。

于 2012-09-28T21:43:38.973 回答
2

与此同时,我在 Python 中实现了阿拉伯语整形:

https://github.com/behdad/pyarabicshaping

于 2013-06-25T04:01:46.283 回答
1

python-bidi http://pypi.python.org/pypi/python-bidi/是一个纯python API,所以想必它应该可以在windows上正常工作。

您需要使用 reportlab 的 RL 分支,并将任何对 pyfribidi 的调用更改为对 python-bidi 的调用。此链接可能会帮助http://code.pediapress.com/wiki/wiki/RightToLeft

于 2011-07-21T13:58:28.510 回答
1

这是 Unicode 双向算法的另一个纯 Python 实现: http ://code.google.com/p/pybidi/

于 2012-08-12T22:40:30.407 回答