Android OS中究竟在哪里呈现文字?

时间:2010-01-15 23:52:45

标签: android arabic right-to-left glyph bidi

首先让我说明我想要实现的目标:

为Android操作系统创建补丁,使其能够正确显示阿拉伯语/希伯来语。这两种语言都是从右到左(RTL),它们的脚本涉及连接字母/ 字形(与具有离散字母的拉丁字母不同)。

示例:

“car”的阿拉伯语单词是:

  

سيارة

离散字母如下所示:

  

سيارة

正如您所看到的,每个字母以不同的方式连接到彼此的字母,具体取决于它之前的字母和字母。接下来是什么。好的,语言课程足够:)我的问题是:

我需要劫持什么二元/类才能启用此功能?

另一种说法是;如果你希望每个实例“x”在系统范围内显示为“y”,你需要干什么二进制/类?

源代码可在GitHub浏览:http://github.com/android/

我认为它可能位于C / C ++ platform_system_core 之下,或者是自定义JVM platfom_dalvik

为了清楚起见,字体不是问题,因为您可以将阿拉伯语/希伯来语字体作为后备字体删除,并且它们会显示,尽管是以离散形式显示。

非常感谢您的帮助:)

3 个答案:

答案 0 :(得分:1)

在签出的源代码树中查看external / skia。那是skia图形库,它最终负责字体渲染。

答案 1 :(得分:1)

请记住,问题比修改底层图形引擎更复杂。

如果你在Skia中应用重塑,如果行的宽度发生变化(当لا替换ل后跟ا)时会发生问题。这是因为重塑阿拉伯语也可能改变字母序列,而我所看到的Skia试图对文本内容采取被动行为。它只是将字母输出到显示设备。

现在更糟糕的问题实际上是Android本身。阿拉伯语/希伯来语需要BiDi重新定位文本,这在Android中非常愚蠢,无法处理非常基本的问题。

更多坏消息? Android的字体Droid不包含阿拉伯语或希伯来语字形。除非我们将设备置为root并将其替换为另一种字体,否则将显示正方形而不是阿拉伯字母:)

整个平台仍然远远无法应对任何RTL语言,尤其是阿拉伯语。

如您所见,RTL语言的正确修改不仅仅在Skia ....

答案 2 :(得分:0)