Lütfen bu sorunun uzunluğu için özür dilerim. Bunları başkalarına yardım etmek ve açıklamada bulunmadan cevap vermeleri konusunda katkıda bulunmaktan kaçınmak için bunları açıklamam gerekiyor.
Bir satırdaki gereksinim: "Bir Android telefonun Tamilce karakterlerini doğru göstermesini sağlamak".
Ayrıntılı: Tamil, diğer Hint dillerinde olduğu gibi karmaşık karakter oluşturma sistemine sahiptir. İngilizce'den veya diğer Latince tabanlı senaryolardan farklı olarak, birden fazla karakterden oluşan glifine (ekranda gördüğünüz) sahiptir. Android bu tür karmaşık komut dosyalarını (istisna dışında) oluşturma yeteneğine sahip değildir. Amacım bir Android telefon veya tablete nasıl böyle bir yetenek sağlayabileceğimi bilmek.
Şimdiye kadar topladığım küçük arkaplan: Ekranda bir glif görüntülemek için Android önce uygun bir font dosyasına ihtiyaç duyuyor. Android cihaz, birkaç tanesine sahip bir klasör / sistem / yazı tipine sahiptir. Bu klasördeki en ilginç dosya DroidSansFallback.ttf'dir. Adından da anlaşılacağı gibi, Android sistemi sistem yazı tiplerinde (DroidSans.ttf veya DroidSans-Bold.ttf vb. Gibi) bir karakter bulamadığında, DroidSansFallback.ttf'de arama yapmak için geri döner.
Uygun bir font dosyasını PC'den değiştirerek (Latha.ttf veya Lohit-Tamil.ttf - bunlar Tamil için fonttur) ve DroidSansFallback.ttf, aygıtta Tamil karakterlerini görüntülemenizi sağlar. Değiştirmesi o kadar kolay değildir ve cihazın köklendirilmesini ve sistemin yazılabilir olarak monte edilmesini içerir.
Bu sıkıntılara rağmen, DroidSansFallback.ttf değiştirilse bile, görüntülenen Tamil karakterleri doğru şekilde görüntülenmiyor. Tamil karakteri "தி" iki karakterin bir birleşimidir ve "தி" olarak gösterilmek yerine, aralarında boşluk kalmadan "த ி" olarak gösterilecektir. Bu kısa mesajları okumak için yeterli olmasına rağmen, kitap okumak için kullanılamaz.
Servislerde Android 4.0'dan, Tamil ve diğer birkaç dil, aşağıda gösterildiği gibi Android 4.x API'ye genel bakışta açıklandığı gibi tarayıcı aracılığıyla desteklenmektedir.
Support for Indic fonts (Devanagari, Bengali, and Tamil, including the complex character support needed for combining glyphs) in WebView and the built-in Browser
Dikkat edilmesi gereken kelimeler "WebView ve yerleşik Tarayıcıda" dır, bu da Tamil karakterlerinin HTML içeriği olarak işlendiğinde mükemmel şekilde oluşturulacağı ve başka şekilde oluşturulmayacağı anlamına gelir. Opera ve diğer birkaç tarayıcı, Android 4.0'dan önce bile karakter yerine görüntüyü değiştirdi.
Hint pazarını hedef alan az sayıda cihazda (ör: LG Optimus One, Samsung telefonların ve tabletlerin çoğunun) Tamil'i hem tarayıcıda hem de kişiler, metin mesajları, dosya adları vb. Sürprizime göre bunu Android 2.3'te bile yapıyorlar. Ayrıca Android'in aynı sürümünü çalıştıran Hintli olmayan ülkeleri hedef alan aynı modelin Tamil karakter gösterimini desteklemediğini fark ettim.
Bu beni daha fazla araştırmamı sağladı ve Android'in (diğer Linux tabanlı işletim sistemleri gibi) böyle karmaşık karakterleri görüntülemek için bir yazı tipi oluşturma motoruna bağlı olduğu sonucuna vardım. Karşılaştığım iki motor Skia ve Harfbuzz. LG'nin skia kullandığını ve Samsung'un bu yeteneği sağlamak için cihazlarında Harfbuzz kütüphanelerini kullandığını fark ettim.
Bu kütüphaneleri ve yazı tiplerini değiştirmeyi öneren birçok web sitesine rastladım. İşe yaramadı ve donmayla sonuçlandı. Neyse ki clockwork modunu kullanarak yedekleme yaptım ve telefonumu geri yükledim.
Bunu Tamil ile açıklamış olmama rağmen, bu Hint dillerinin çoğu için geçerlidir.
İşte benim sorum geliyor (eğer hala okuyorsanız;)) Şimdi, karakterleri sağlamak için bir TTF dosyasının mevcut olması gerektiği ve bunları doğru şekilde oluşturmak için uygun bir kütüphanenin (libskia.so veya libharfbuzz.so) gerekli olduğu kesin. Herhangi biri bu üreticilerin bu yeteneği nasıl sağlayabildiğini biliyor mu? AOSP'den kendi ROM'umu oluşturmaya bile hazırım (Android Açık Kaynak Projesi).