Android 操作系统中的文本具体在哪里渲染?
让我首先说明我想要实现的目标:
为 Android 操作系统创建补丁,使其能够正确显示阿拉伯语/希伯来语。这两种语言都是从右到左 (RTL) 语言,其脚本涉及连接的字母/字形(与具有离散字母的拉丁字母不同)。
示例:
“汽车”的阿拉伯语单词是:
斯尼亚拉
离散字母如下所示:
塞拉利昂
正如您所看到的,每个字母以不同的方式相互连接,具体取决于它前面的内容和后面的内容 接下来是什么。好的,语言课程已经足够了:)我的问题是:
我需要劫持 Android 中的哪些二进制文件/类才能启用此功能?
另一种说法是;如果您希望每个实例“x”在系统范围内显示为“y”,您需要干预什么二进制/类?
源代码可以在 GitHub 上浏览: http://github.com/android/
我认为可能是C/C++ platform_system_core 或自定义 JVM platfom_dalvik 下的某个位置。
需要明确的是,字体不是问题,因为您可以将阿拉伯语/希伯来语字体作为后备字体,并且它们会显示,尽管以离散形式显示。
非常感谢您的帮助:)
Let me first state what I am trying to achieve:
To create a patch for the Android OS to enable it to display Arabic/Hebrew correctly. Both of these languages are Right-to-Left (RTL) and their script involves connected letters/glyphs (unlike Latin alphabets which have discrete letters).
Example:
The Arabic word for "car" is:
سيارة
The discrete letters look like this:
س ي ا ر ة
As you can see, each letter connects to each other letter in different ways depending on what precedes it & what follows it. Ok, enough with the language lessons :) My question is:
What binary/class in android do I need to hijack to enable this functionality?
Another way to put it is; if you wanted every instance "x" to be displayed as "y", system-wide, what binary/class would you need to meddle with?
The source code is browsable at GitHub: http://github.com/android/
I think it might be somewhere under the C/C++ platform_system_core, or thier custom JVM platfom_dalvik.
Just to be clear, the font is not an issue since you can drop Arabic/Hebrew fonts as fall-back fonts and they would display, albeit in discrete form.
Your help would be much appreciated :)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
发布评论
评论(3)
请记住,这个问题比修改底层图形引擎更复杂。
如果您在 Skia 中应用重塑,如果线条宽度发生变化,您可能会遇到问题(当 ä 取代 ä 后接 â 时会发生这种情况)。这是因为重塑阿拉伯语也可能会改变字母的顺序,而正如我所见,斯基亚试图对文本内容采取被动的行动。它只是将字母按原样输出到显示设备。
现在更糟糕的问题实际上是Android本身。阿拉伯语/希伯来语需要 BiDi 重新定位文本,这在 Android 中非常愚蠢,无法处理非常基本的问题。
还有更多坏消息吗? Android 的字体 Droid 不包含阿拉伯语或希伯来语字形。除非我们root设备并用另一种字体替换它,否则会显示方块而不是阿拉伯字母:)
整个平台还远远不能应对任何RTL语言,尤其是阿拉伯语。
如您所见,对 RTL 语言的正确修改不仅仅在 Skia 中......
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
在签出的源代码树中查看 external/skia 。那是skia图形库,它最终负责字体渲染。
see external/skia in a checked-out source tree. that's the skia graphics library, and that's ultimately responsible for font rendering.