Как я могу автоматически «изменять форму» сложных скриптов?

#android #blackberry #unicode #blackberry-playbook

#Android #ежевика #Юникод #blackberry-playbook

Вопрос:

Проблема:

Я пытаюсь отобразить небольшой объем текста, используя сложные скрипты, такие как арабский и бенгальский, на мобильных устройствах (в частности, на Android, телефонах BlackBerry и BlackBerry PlayBook). (Приложение является Allergy Traveler) Оба этих устройства не могут корректно отображать текст, но по разным причинам.

На Android и PlayBook я могу указать шрифт, в этом случае символы отображаются, но символы соединены неправильно. Каждый символ отображается без учета контекста.

На BlackBerry на устройстве нет подходящих шрифтов. Я могу предоставить шрифт, но файл шрифта намного превышает максимальный размер шрифта (70 КБ).

Предлагаемое решение:

Я думаю, что процесс правильного использования контекста для отображения слова называется изменением формы. Предположительно, это принимает текст и возвращает альтернативный набор символов для отображения. Мое предлагаемое решение состоит в том, чтобы выполнить это изменение формы заранее. На Android это гарантировало бы, что текст правильно использует контекст, а на BlackBerry это позволило бы мне удалить неиспользуемые символы и уменьшить размер шрифта.

Вопрос:

Существуют ли какие-либо API для выполнения этого «изменения формы» или какие-либо другие предложения? Я готов использовать любую технологию в Windows или Linux (например, Win32 API, Perl, Python, Java, …)

Спасибо за все предложения.

Ответ №1:

Для изменения формы арабского языка на Android это возможно с помощью фреймворка arabic reshaper от Amr Gawish, ознакомьтесьhttp://bar.amr-gawish.com /. Однако вы должны отметить, что, хотя он изменяет форму и соединяет обычные арабские буквы и текст правильно, он не может соединить арабские буквы, если текст содержит диакритические знаки.

Я заметил приложение в Android Marketplace, которое объединяет / изменяет форму арабского текста с помощью диакритических знаков, но я не уверен, что они использовали для этого, возможно, это может быть их собственная внутренняя структура. Мне также интересно найти API для изменения формы, в частности те, которые также могут работать с арабскими диакритическими знаками.

Надеюсь, что приведенная выше ссылка поможет! Дайте нам знать, если найдете что-нибудь получше.

редактировать: следующее также может использовать диакритические знаки — https://github.com/AhmedEssam/Better-Arabic-Reshaper

Ответ №2:

Я почти уверен, что в Windows есть API для этого. Для начала взгляните на описание Microsoft обработки глиф Windows.