Как работать с языками RTL в версиях Android до 4.2?

Фон

TextView всегда имел проблемы с языками RTL (справа налево). Поскольку я знаю только как читать на иврите (помимо английского), я расскажу о его проблемах:

Выравнивание текста (и я не говорю о гравитации). Как язык RTL, иврит помещает слова справа налево (по сравнению с английским языком, который противоположен).

Чтобы продемонстрировать, насколько это раздражает, представьте, что вместо того, чтобы показывать «Hello world». Вы обычно получаете ". Привет мир". Это может быть легко исправлено, если вы поместите его в одно предложение, но сложнее, если в нем есть несколько знаков препинания.

Позиции гласных. Для чтения текста на иврите не нужны гласные, но иногда без них очень трудно читать (особенно Библию). Для гласных, иврит имеет то, что называется «НИКУД», которые на самом деле похожи на точки внутри букв. Проблема в Android заключалась в том, что они обычно располагались не в том месте.

Чтобы продемонстрировать, насколько это раздражает, представьте, что вместо того, чтобы показывать «Hello world». Вы обычно получаете ".eHlol owrld". Даже если вы попытаетесь это исправить (ставьте гласные всегда на один символ после текущего), позиция в букве не была правильной (представьте, что буква «e» в «Hello» будет как бы выше «H», для пример) .

Только на версии 4.2 (читайВотв разделе «Поддержка нативного RTL» Google исправил все проблемы, связанные с ивритом (или, по крайней мере, так кажется).

Проблема

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

Вещи могут стать еще более расстраивающими, если текст включает в себя как еврейские, так и английские буквы.

Что я пробовал

Я читал много сайтов, рассказывающих об этих проблемах, и я пробовал много вариантов решений, но ни один не решил проблему на всех устройствах:

Некоторые предлагают поставить символ «\ u200F» (или «\ u202D») в конце / начале / обоих текстов.

Некоторые предлагают использоватьHtml.fromHtml () метод и положить что-то особенное там.

Некоторые даже предлагают вместо этого использовать WebView (и, возможно, использоватьWebSettings.setDefaultTextEncodingName () ).

Вопрос

Есть ли определенное решение этой проблемы?

Я бы предположил, что лучше всего то, что поскольку Android 4.2 решает эту проблему, а Android является открытым исходным кодом, мы должны импортировать его TextView в библиотеку, которую мы можем использовать, но Google еще не предоставил такую библиотеку.

Ответы на вопрос(2)

Ваш ответ на вопрос