Где именно в ОС Android отображается текст? - PullRequest
7 голосов
/ 16 января 2010

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

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

Пример:

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

سيارة

Дискретные буквы выглядят так:

س ي ا ر ة

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

Какой двоичный файл / класс в Android нужно перехватить, чтобы включить эту функцию?

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

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

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

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

Ваша помощь будет высоко ценится:)

Ответы [ 3 ]

1 голос
/ 17 января 2010

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

1 голос
/ 05 марта 2010

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

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

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

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

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

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

0 голосов
/ 16 января 2010
...