请原谅这个问题的长度。我需要解释所有这些信息以帮助他人,并避免有帮助的贡献者在不提出澄清的情况下提供答案。

我的要求是:“使Android手机能够正确显示泰米尔语字符”。 />
阐述:
泰米尔语与其他印度语言一样,具有复杂的字符呈现系统。与基于英语或其他基于拉丁语的脚本不同,它具有由多个字符组成的字形(在屏幕上看到的内容)。
Android无法呈现此类复杂脚本(例外)。我的目标是要知道如何为Android手机或平板电脑提供这种功能。合适的字体文件。 Android设备的文件夹/ system / fonts很少。该文件夹中最有趣的文件是DroidSansFallback.ttf。顾名思义,当Android系统无法找到系统字体中的字符(可能是DroidSans.ttf或DroidSans-Bold.ttf等)时,它会回退以在DroidSansFallback.ttf中搜索它。

通过从PC替换合适的字体文件(Latha.ttf或Lohit-Tamil.ttf-这些是Tamil的字体),DroidSansFallback.ttf将能够在设备中显示Tamil字符。
替换起来并不容易并且涉及将设备植根并以可写方式安装系统。

尽管有这些麻烦,即使替换了DroidSansFallback.ttf,所显示的泰米尔字符也无法正确呈现。泰米尔语字符“தி”是两个字符的连词,而不是显示为“தி”,而是显示为“த”。尽管这足以阅读短信,但不能用于阅读书籍等。

从Android 4.0及更高版本开始,通过浏览器支持泰米尔语和其他几种语言,如Android 4.x API概述所述如下所示。

Support for Indic fonts (Devanagari, Bengali, and Tamil, including the complex
character support needed for combining glyphs) in WebView and the built-in Browser


注意的单词是“在WebView和内置浏览器中”,这意味着如果将Tamil字符呈现为HTML内容,则将完美呈现,而不会以其他方式呈现。 Opera和其他少数浏览器甚至在Android 4.0之前就通过替换图像而不是字符来做到这一点。

我注意到,针对印度市场的设备很少(例如LG Optimus One,大多数三星手机和平板电脑)能够在浏览器中甚至在浏览器外的位置(例如联系人,短信,文件名等)中正确显示泰米尔语。令我惊讶的是,即使在Android 2.3及更高版本中,它们也可以显示泰米尔语。我还注意到针对非印度国家/地区运行同一版本Android的同一模型不支持泰米尔语字符显示。

这使我进行了进一步调查,得出的结论是Android(与其他基于Linux的操作系统) )取决于字体渲染引擎来显示这种复杂的字符。我遇到的两个引擎是Skia和Harfbuzz。我注意到LG在他们的设备中使用了skia,而三星在其设备中使用了Harfbuzz库。

我遇到了很多网站,建议更换这些库和字体。它不起作用并导致冻结。幸运的是,我使用clockworkmod进行了备份,因此恢复了电话。问题(如果您仍在阅读;))
现在,非常确定应该存在一个TTF文件来提供字符,并且需要适当的库(libskia.so或libharfbuzz.so)来正确呈现它们。有谁知道这些制造商能够提供的能力吗?我什至准备从AOSP(Android开放源代码项目)构建自己的ROM。

评论

Cyanogenmod具有显示文本从右到左显示的功能。 Skia是图形渲染的标准配置。结果会有所不同,从一个ROM中获取一个Skia库并放入另一个ROM中可能是灾难性的,因为需要从头开始构建(通过获取AOSP源),并用harfbuzz替换Skia并重新编译(您根本无法“只是”插入harfbuzz插入另一个未使用该库构建的ROM中-这些库是链接在一起的,因此,如果ROM的内部版本不知道harfbuzz,则将无法正常运行)

@narayanan出于某种原因,网站m.oneindia.in/tamil可以在Android 4.1.2的Chrome中完美呈现泰米尔语。该网站在做什么而其他人却做不到?

#1 楼

Rooted Phone

Android的/system/fonts文件夹下包含名为“ DroidSansFallback.ttf”的文件,该文件应包含所有语言字符。当前它不支持包括泰米尔语在内的许多语言。

始终可以用包含泰米尔语字符的文件替换该文件,从而允许在手机上使用泰米尔语。

来自XDA Developers Thread-DroidSans Fallback Indic字体,用户已经在手机上尝试并成功使用Tamil。


下载DroidSansFallback.ttf文件
下载原始DroidHindi.ttf文件

要完成此方法,您需要对电话具有root访问权限,以便访问/system并更改回退文件:


阅读如何将我的root用户设备?如果您的手机还没有植根。

跟随XDA Developers线程查看如何替换文件:

Using and Android SDK environment:

First Copy the DroidSansFallback.ttf file into your sdcard,
then issue the following commands:

adb shell
su
mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
cd /sdcard
busybox cp DroidSansFallback.ttf /system/fonts
mount -o ro,remount -t yaffs2 /dev/block/mtdblock3 /system
exit
exit

Lastly, rebooted the phone


注意:安装点并非所有手机都一样。



Android APP

虽然上述方法可能对某些用户有吸引力,但我还是更喜欢APP

此外,泰米尔语的键盘共有247个字符,而英语仅需要26个字符。所以在键入时,这成为一个主要问题:

请参阅Wikipedia ::泰米尔语-书写系统


当前的泰米尔语文字包括12个元音,18个辅音和一个特殊字符āytam。元音和辅音组合形成216个复合字符,总共提供247个字符(12 + 18 + 1 +(12 x 18))。



感谢Krishan,并且正在研究这个主题,已经有一个APP可以处理两个问题,泰米尔语在系统范围内的使用,以及可以用来键入泰米尔语字符的键盘。

阅读Krishan的帖子,标题为泰米尔语Android Unicode字体–有关此解决方案开发的详细信息。

总结

克里山(Krishan)在Google Play上开发和发布了两个APP,完全解决了在泰米尔语中拥有整个Android操作系统的问题:



泰米尔语Unicode键盘

>


泰米尔语Unicode字体





评论


我已经提到过,替换字体只是部分解决方案,它将仅显示非连续字符,并且接合字符将无法正确呈现。而关于该应用程序的第二个解决方案对我来说并不是公认的解决方案。正如我所期望的那样,它提供了通过键入英语并转换并引用网页为例来撰写泰米尔语文本的方法。谢谢您的努力和时间。

–奈良
2012年7月23日在5:20



#2 楼

您似乎正在描述问题4153,这是Android中的已知错误。

已报告此问题已在Jelly Bean中解决。如果此屏幕截图正确,则应解决此问题。 (我无法真正告诉自己,但是我确实可以访问Jelly Bean并可以从中进行屏幕截图。)



评论


谢谢,这似乎不仅仅是一个错误,正如我所说的那样,即使在制造商的某种干预下,泰米尔语渲染也可以在Android 2.3.3手机中正常工作。

–奈良
2012年7月23日下午5:24

2012年7月20日,我参加了Google的gDays,我目睹了Android JellyBean 4.1甚至在浏览器中也显示了泰米尔语字符。不幸的是,我无法再测试了。

–奈良
2012年7月23日在5:25

关于问题android.stackexchange.com/questions/26797/…的评论,我想说我能够通过ThinkFree Office Mobile Viewer读取网页,文本文件,SMS,联系人,文件名,DOCX文件中的泰米尔语。我观察到泰卢固语,卡纳达语,孟加拉语和印地语也应该相同。

–奈良
2012年8月1日上午10:48

#3 楼

安装Opera Mini Web浏览器

在Opera Mini Web浏览器中,键入“ about:Config”

对复杂脚本使用位图字体:选择“是”

您可以在任何品牌的手机中查看所有使用泰米尔语字体的网站

注意事项

评论


这是浏览器内部的位图,也不是操作系统范围内的解决方案(例如,您将无法在SMS中键入或看到泰米尔语或其他印度字符)。顺便说一句,您的建议已经在主要文章中提到:>“甚至在Android 4.0之前,Opera和其他少数浏览器都通过替换图像而不是字符来做到这一点。”

–user23404
2012年11月9日10:00

#4 楼

您无需在Android系统上植根并替换字体。

将设备的固件替换为印度地区类似的固件,以正确呈现Devanagari字体。其他地区的固件无法正确渲染Devanagari字体。 Devanagari字体可在印度地区的Android版本2.x上正确呈现。