2010-01-15 10 views
7

Let Me primer estado lo que yo estoy tratando de lograr:¿Dónde está exactamente renderizado el texto en el sistema operativo Android?

Para crear un parche para el sistema operativo Android para permitir que se muestre árabe/hebreo correctamente. Ambos idiomas son de derecha a izquierda (RTL) y su secuencia de comandos implica letras conectadas/glifos (a diferencia de los alfabetos latinos que tienen letras discretas).

Ejemplo:

La palabra árabe para "coche" es:

سيارة

Las letras discretas tener este aspecto:

س ي ا رة

Como se puede ver, cada letra se conecta a la otra carta de diferentes maneras dependiendo de lo que le precede & lo que sigue. Ok, suficiente con las lecciones de idioma :) Mi pregunta es:

¿Qué binario/clase en Android necesito secuestrar para habilitar esta funcionalidad?

Otra forma de decirlo es; si quisiera que cada instancia "x" se muestre como "y", en todo el sistema, ¿con qué clase/binario debería entrometerse?

El código fuente es navegable en GitHub: http://github.com/android/

creo que podría estar en algún lugar debajo de la C/C++ platform_system_core o emabrgo JVM personalizada platfom_dalvik.

Para que quede claro, la fuente no es un problema ya que puede colocar las fuentes en árabe/hebreo como fuentes secundarias y se mostrarían, aunque en forma discreta.

Su ayuda sería muy apreciada :)

Respuesta

0
+0

Gracias por la ayuda. El enlace que proporcionó representará el texto correctamente dentro de una aplicación, aunque es parte de la solución. Quiero implementar esto en el nivel del sistema, para que se visualice correctamente ANTES de llegar o DESPUES de abandonar cualquier llamada a la aplicación. –

+1

¡Guau! ... Cuando lo hagas, por favor regresa y publica tu propia respuesta, ¿o sí? Suena tremendamente interesante – OscarRyz

+0

Esto implica modificar el paquete platform/base.git, compilando efectivamente la mayor parte del sistema Android. Los resultados son prácticamente un mod del sistema Android (como CyanogenMod), a menos que sepa qué bibliotecas jar reemplazar. –

1

ver externo/skia en un árbol de fuentes desprotegido. esa es la biblioteca gráfica de skia, y esa es la responsable final del renderizado de fuentes.

1

Recuerde que el problema es más complicado que modificar el motor de gráficos subyacente.

Si aplica la remodelación en Skia, puede tener problemas si el ancho de las líneas cambia (sucede cuando لا sustituye a ل seguido de ا). Esto se debe a que la remodelación del árabe también podría cambiar la secuencia de letras, y Skia, como veo, intenta actuar pasivamente con respecto al contenido del texto. Simplemente envía las letras al dispositivo de visualización tal como están.

Ahora el peor problema es en realidad en Android.El árabe/hebreo requiere el reposicionamiento de texto en BiDi, que es muy tonto en Android y no puede manejar problemas muy básicos.

¿Más malas noticias? La fuente de Android, Droid, no contiene glifos árabes o hebreos. A menos que rooteemos el dispositivo y lo reemplacemos con otra fuente, se muestran cuadrados en lugar de letras arábicas :)

Toda la plataforma aún está lejos de poder manejar cualquier lenguaje RTL, especialmente el árabe.

Como ve, una modificación correcta para los lenguajes RTL no está solo en Skia ....

Cuestiones relacionadas