2010-01-15 15 views
7

mi permetta primo stato quello che sto cercando di realizzare:Dove esattamente nel sistema operativo Android viene visualizzato il testo?

Per creare una patch per il sistema operativo Android per consentirle di visualizzare arabo/ebraica correttamente. Entrambe queste lingue sono da destra a sinistra (RTL) e il loro script include lettere collegate/glifi (a differenza degli alfabeti latini che hanno lettere discrete).

Esempio:

La parola araba per "auto" è:

سيارة

Le lettere discreti simile a questa:

س ي Invia

Come si può vedere, ogni lettera collega tra di loro lettera in modi diversi a seconda di ciò che lo precede & quanto segue. Ok, basta con le lezioni di lingua :) La mia domanda è:

Quale binario/classe in Android ho bisogno di dirottare per abilitare questa funzionalità?

Un altro modo per dirlo è; se volevi che ogni istanza "x" fosse visualizzata come "y", a livello di sistema, con quale binario/classe avresti bisogno di immischiarti?

Il codice sorgente è sfogliabile in GitHub: http://github.com/android/

penso che potrebbe essere da qualche parte sotto il C/C++ platform_system_core, o thier personalizzato JVM platfom_dalvik.

Giusto per essere chiari, il carattere non è un problema poiché è possibile rilasciare i caratteri arabi/ebraici come font di fallback e verranno visualizzati, anche se in forma discreta.

Il vostro aiuto sarebbe molto apprezzato :)

risposta

0
+0

Grazie per l'aiuto. Il link che hai fornito renderà il testo correttamente all'interno di un'applicazione, tuttavia fa parte della soluzione. Voglio implementarlo a livello di sistema - in modo che venga visualizzato correttamente PRIMA di raggiungere o DOPO aver lasciato qualsiasi chiamata di applicazione. –

+1

Wow !! .. Quando lo fai, per favore torna e scrivi la tua risposta, vero? Sembra tremendamente interessante – OscarRyz

+0

Ciò comporta la modifica del pacchetto platform/base.git, che ricompensa in modo efficace gran parte del sistema Android. I risultati sono praticamente una mod del sistema Android (come CyanogenMod), a meno che tu non sappia quali librerie jar sostituire. –

1

vedere esterna/skia in una struttura di origine check-out. questa è la libreria grafica di skia e, in definitiva, è responsabile del rendering dei font.

1

Ricordare che il problema è più complicato della modifica del motore grafico sottostante.

Se si applica rimodellamento in Skia, è possibile che si verifichino problemi se le larghezze delle linee cambiano (accade quando لا sostituisce ل seguito da ا). Questo perché rimodellare l'arabo potrebbe cambiare anche la sequenza di lettere e Skia, come vedo, cerca di agire passivamente sui contenuti del testo. Invia semplicemente le lettere al dispositivo di visualizzazione così com'è.

Ora il problema peggiore è in realtà in Android stesso.Arabo/Ebraico richiede il riposizionamento di testo BiDi, che è molto stupido in Android e non può gestire problemi di base.

Altre cattive notizie? Il carattere di Android, Droid, non contiene glifi arabi o ebraici. A meno che non root del dispositivo e sostituirlo con un altro tipo di carattere, le piazze vengono visualizzati invece di lettere arabe :)

L'intera piattaforma è ancora lontano dall'essere in grado di far fronte a qualsiasi linguaggio RTL, in particolare l'arabo.

Come vedete, una corretta modifica per le lingue RTL non è solo in Skia ....

Problemi correlati