Pyfribidi для Windows или любой другой алгоритм Биди - PullRequest
4 голосов
/ 26 мая 2011

Я пытаюсь создать отчет, используя reportlab, и язык отчета - арабский. но проблема в том, что reportlab не поддерживает BIDI (двунаправленное отображение) из-за отсутствия поддержки BIDI Algorithm в Python. после многих поисков я обнаружил, что вокруг Gnome Fribidi есть обертка, называемая PyFribidi . но он скомпилирован и работает только на Linux, я пытался собрать его на Windows, используя mingwin, но компиляция не удалась, потому что многие библиотеки linux не найдены.

У меня такой вопрос, есть ли в Python реализация алгоритма двунаправленного Unicode, которая работает на Windows?

спасибо.

Ответы [ 4 ]

2 голосов
/ 25 июня 2013

Тем временем я реализовал арабский шейпинг в Python:

https://github.com/behdad/pyarabicshaping

2 голосов
/ 29 сентября 2012

Python BiDi является отличной реализацией алгоритма BiDi, но она просто поддерживает двунаправленное (как есть), не исправляя контекстную форму арабского скрипта, для решения проблемы контекстной формы,вам следует использовать модуль python-bidi с библиотекой арабского преобразования, называемой python-arabic-reshaper .

пример: (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решает мою проблему отлично, и оба пакета являются чистой реализацией Python.

1 голос
/ 13 августа 2012

Вот еще одна чистая реализация Python алгоритма Unicode Bidi: http://code.google.com/p/pybidi/

1 голос
/ 21 июля 2011

python-bidi http://pypi.python.org/pypi/python-bidi/ - это чистый API-интерфейс Python, поэтому, вероятно, он должен хорошо работать на Windows.

Вам необходимо использовать ветку RL reportlab и изменять любые вызовы pyfribidi с вызовами python-bidi. Эта ссылка может помочь http://code.pediapress.com/wiki/wiki/RightToLeft

...