Scusa per la lunghezza di questa domanda. Devo spiegare tutto ciò per aiutare gli altri ed evitare collaboratori utili per fornire una risposta senza chiedere chiarimenti.
Il mio requisito in una riga: "consentire a un telefono Android di visualizzare correttamente i caratteri Tamil".
Elaborazione: il tamil, come qualsiasi altra lingua indiana, ha un complesso sistema di rendering dei personaggi. A differenza dell'inglese o di altri script a base latina, ha glifo (quello che vedi sullo schermo) composto da più di un personaggio. Android non ha la capacità di eseguire il rendering di script così complessi (con eccezioni). Il mio obiettivo è sapere come posso fornire tale capacità a un telefono o tablet Android.
Poco sfondo che ho raccolto finora: per visualizzare un glifo sullo schermo, Android ha prima bisogno di un file di caratteri adatto. Il dispositivo Android ha una cartella / sistema / caratteri che ne ha pochi. Il file più interessante in quella cartella è DroidSansFallback.ttf. Come suggerisce il nome, quando il sistema Android non riesce a trovare un carattere nei caratteri di sistema (che potrebbe essere DroidSans.ttf o DroidSans-Bold.ttf ecc.), Torna a cercarlo in DroidSansFallback.ttf.
Sostituendo un file di font adatto dal PC (Latha.ttf o Lohit-Tamil.ttf - questi sono i caratteri per Tamil) e DroidSansFallback.ttf consentirà di visualizzare i caratteri Tamil nel dispositivo. Non è così facile da sostituire e comporta il rooting del dispositivo e il montaggio del sistema come scrivibile.
Nonostante questi problemi, anche se DroidSansFallback.ttf viene sostituito, i caratteri tamil visualizzati non vengono visualizzati correttamente. Il carattere tamil "தி" è un congiunto di due caratteri e invece di essere visualizzato come "தி", verrà visualizzato come "த ி" senza spazio in mezzo. Sebbene questo sia sufficiente per leggere brevi messaggi, non può essere utilizzato per leggere libri, ecc.
Da Android 4.0 nei reparti, il Tamil e altre poche lingue sono supportate tramite il browser, come indicato nella panoramica dell'API di Android 4.x come mostrato di seguito.
Support for Indic fonts (Devanagari, Bengali, and Tamil, including the complex
character support needed for combining glyphs) in WebView and the built-in Browser
Le parole da notare sono "in WebView e nel browser integrato", il che significa che i caratteri tamil verranno resi perfettamente se sono resi come contenuto HTML e non saranno resi altrimenti. Opera e altri pochi browser lo hanno fatto anche prima di Android 4.0 sostituendo l'immagine anziché il personaggio.
Ho notato che in alcuni dispositivi destinati al mercato indiano (ad esempio LG Optimus One, la maggior parte dei telefoni e tablet Samsung) sono in grado di visualizzare correttamente il Tamil sia nel browser che anche in luoghi al di fuori del browser come contatti, messaggi di testo, nomi di file, ecc. Con mia sorpresa lo fanno anche in Android 2.3 in poi. Ho anche notato che lo stesso modello destinato a paesi non indiani con la stessa versione di Android non supporta la visualizzazione dei caratteri tamil.
Questo mi ha spinto a indagare ulteriormente e ho concluso che Android (come altri sistemi operativi basati su Linux) dipende da un motore di rendering dei caratteri per visualizzare caratteri così complessi. I due motori che ho incontrato sono Skia e Harfbuzz. Ho notato che LG usa skia e Samsung usa le librerie Harfbuzz nei loro dispositivi per portare questa abilità.
Mi sono imbattuto in molti siti web che mi hanno suggerito di sostituire queste librerie e caratteri. Non ha funzionato e provoca il congelamento. Fortunatamente ho eseguito il backup utilizzando clockworkmod e quindi ho ripristinato il mio telefono.
Anche se l'ho spiegato con il Tamil, questo è applicabile per la maggior parte delle lingue indiane.
Ecco la mia domanda (se stai ancora leggendo;)) Ora, è certo che è chiaro che dovrebbe essere presente un file TTF per fornire caratteri e che sono necessarie librerie appropriate (libskia.so o libharfbuzz.so) per renderli correttamente. Qualcuno sa come questi produttori sono in grado di fornire la capacità? Sono anche pronto a costruire la mia ROM da AOSP (Android Open Source Project).