首先让我说明我想要实现的目标:
为Android操作系统创建补丁,使其能够正确显示阿拉伯语/希伯来语。这两种语言都是从右到左(RTL),它们的脚本涉及连接字母/ 字形(与具有离散字母的拉丁字母不同)。
示例:
“car”的阿拉伯语单词是:
سيارة
离散字母如下所示:
سيارة
正如您所看到的,每个字母以不同的方式连接到彼此的字母,具体取决于它之前的字母和字母。接下来是什么。好的,语言课程足够:)我的问题是:
我需要劫持什么二元/类才能启用此功能?
另一种说法是;如果你希望每个实例“x”在系统范围内显示为“y”,你需要干什么二进制/类?
源代码可在GitHub浏览:http://github.com/android/
我认为它可能位于C / C ++ platform_system_core 之下,或者是自定义JVM platfom_dalvik 。
为了清楚起见,字体不是问题,因为您可以将阿拉伯语/希伯来语字体作为后备字体删除,并且它们会显示,尽管是以离散形式显示。
非常感谢您的帮助:)
答案 0 :(得分:1)
在签出的源代码树中查看external / skia。那是skia图形库,它最终负责字体渲染。
答案 1 :(得分:1)
请记住,问题比修改底层图形引擎更复杂。
如果你在Skia中应用重塑,如果行的宽度发生变化(当لا替换ل后跟ا)时会发生问题。这是因为重塑阿拉伯语也可能改变字母序列,而我所看到的Skia试图对文本内容采取被动行为。它只是将字母输出到显示设备。
现在更糟糕的问题实际上是Android本身。阿拉伯语/希伯来语需要BiDi重新定位文本,这在Android中非常愚蠢,无法处理非常基本的问题。
更多坏消息? Android的字体Droid不包含阿拉伯语或希伯来语字形。除非我们将设备置为root并将其替换为另一种字体,否则将显示正方形而不是阿拉伯字母:)
整个平台仍然远远无法应对任何RTL语言,尤其是阿拉伯语。
如您所见,RTL语言的正确修改不仅仅在Skia ....
答案 2 :(得分:0)