Где точно в ОС Android представленный текст?

Позвольте мне сначала заявить, чего я пытаюсь достигнуть:

Создать патч для ОС Android, чтобы позволить этому отобразить арабский язык/Иврит правильно. Оба из этих языков Справа налево (RTL), и их сценарий включает соединенные буквы/глифы (в отличие от Латинских алфавитов, которые имеют дискретные буквы).

Пример:

Арабское слово для "автомобиля":

سيارة

Дискретные буквы похожи на это:

س ي ا ر ة

Как Вы видите, каждая буква подключения друг к другу буква по-разному в зависимости от того, что предшествует ей и что следует за нею. Хорошо, достаточно с уроками языка :) Мой вопрос:

Какой двоичный файл/класс в андроиде я должен угнать для добавления этой функциональности?

Другой способ поместить его; если бы Вы хотели, чтобы каждый экземпляр "x" был отображен как "y", в масштабе всей системы, в какой двоичный файл/класс необходимо было бы влезть?

Исходный код доступен для просмотра в GitHub: http://github.com/android/

Я думаю, что это могло бы где-нибудь находиться под C/C++ platform_system_core, или их пользовательская JVM platfom_dalvik.

Только, чтобы быть ясным, шрифт не является проблемой, так как можно отбросить арабские/Еврейские шрифты как резервные шрифты, и они отобразились бы, хотя в дискретной форме.

Ваша справка очень ценилась бы :)

7
задан j0k 5 June 2013 в 11:26
поделиться

3 ответа

0
ответ дан 7 December 2019 в 18:43
поделиться

смотрите external/skia в проверенном дереве исходных текстов. это библиотека графики skia, которая в конечном итоге отвечает за рендеринг шрифтов.

1
ответ дан 7 December 2019 в 18:43
поделиться

Помните, что проблема сложнее, чем изменение базового графического движка.

Если вы примените изменение формы в Skia, вы можете столкнуться с проблемами, если ширина линий изменится (это происходит, когда لا заменяет ل, за которым следует ا). Это происходит потому, что изменение формы арабского языка может изменить и последовательность букв, а Skia, как я вижу, пытается действовать пассивно относительно содержания текста. Она просто выводит буквы на устройство отображения как есть.

Теперь более серьезная проблема в самом Android. Арабский/иврит требует BiDi перепозиционирования текста, который в Android очень тупой и не может справиться с самыми элементарными вопросами.

Еще более плохие новости? Шрифт Android, Droid, не содержит арабских или ивритских глифов. Если не рутировать устройство и не заменить его другим шрифтом, вместо арабских букв будут отображаться квадратики :)

Вся платформа еще далека от того, чтобы справиться с любым RTL языком, особенно арабским.

Как видите, правильная модификация для RTL языков есть не только в Skia ....

1
ответ дан 7 December 2019 в 18:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: