Como lidar com idiomas RTL em versões pré 4.2 do Android?

fundo

O TextView sempre teve problemas com idiomas RTL (da direita para a esquerda). Como eu sei apenas ler hebraico (além do inglês), falarei sobre seus problemas:

Alinhamento de texto (e não estou falando de gravidade). Como uma linguagem RTL, o hebraico coloca palavras da direita para a esquerda (comparado ao inglês, que é o oposto).

Para demonstrar o quão irritante é, imagine que, em vez de mostrar "Olá mundo". você geralmente recebe ".Olá mundo". Isso pode ser facilmente corrigido se você o tiver em uma única frase, mas é mais difícil quando há vários caracteres de pontuações.

Posições de vogais. O hebraico não requer vogais para ler textos, mas às vezes é muito difícil de ler sem eles (especialmente a bíblia). Para as vogais, o hebraico tem o que é chamado de "NIKUD", que na verdade são como pontos dentro das letras. O problema no Android era que eles geralmente eram posicionados no local errado.

Para demonstrar o quão irritante é, imagine que, em vez de mostrar "Olá mundo". você geralmente recebe ".eHlol owrld". Mesmo se você tentar consertá-lo (colocar as vogais sempre um caractere após o atual), a posição na carta não estava correta (imagine que o "e" em "Olá" seria como acima do "H", para exemplo).

Apenas na versão 4.2 (leiaAqui, em "Suporte nativo a RTL"), o Google corrigiu todos os problemas relacionados ao hebraico (ou pelo menos parece que sim).

O problema

os problemas com o hebraico fizeram com que cada operadora israelense e cada fabricante de ROM customizado tivesse sua própria solução de como consertar os diferentes problemas, o que torna praticamente impossível lidar com o texto RTL nos dispositivos pre 4.2.

As coisas podem ficar ainda mais frustrantes caso o texto inclua letras em hebraico e inglês.

O que eu tentei

Eu li muitos sites falando sobre esses problemas, e eu tentei muitas variantes das soluções, nenhum resolveu o problema em todos os dispositivos:

Alguns sugerem colocar o caractere '\ u200F' (ou '\ u202D') no final / início / ambos do texto.

Alguns sugerem usarHtml.fromHtml () método e colocar algo especial lá.

Alguns até sugerem usar o WebView (e talvez usarWebSettings.setDefaultTextEncodingName () ).

A questão

Existe uma solução definitiva para este problema?

Eu diria que a melhor coisa é que, como o Android 4.2 resolve isso, e o Android é de código aberto, devemos ter o TextView importado em uma biblioteca que possamos usar, mas o Google ainda não forneceu essa biblioteca.

questionAnswers(2)

yourAnswerToTheQuestion