Android 浏览器/GUI(古吉拉特语)上的印度语言渲染不正确

Posted

技术标签:

【中文标题】Android 浏览器/GUI(古吉拉特语)上的印度语言渲染不正确【英文标题】:Indic languages on Android browser/GUI (Gujarati) improper rendering 【发布时间】:2012-09-14 13:07:37 【问题描述】:

我有一个专门用于在 android 设备上查看的网站,我使用的是古吉拉特语,但我在正确渲染古吉拉特语字体时遇到了很大问题,我至少想要一个解决方法来让古吉拉特语字体正常工作,默认情况下不支持任何安卓版本。所以我做到了,

解决方法: - 植根手机 - 为古吉拉特语找到正确的 unicode 字体 - 将 System/fonts 中现有的 DroidSansFallback.ttf 替换为古吉拉特语字体(对 ICS 的 system/etc 文件夹中的 fontsfallback.xml 进行了一些额外的更改)

这有助于我至少查看古吉拉特语文本,但不能正确呈现。

问题:

1) 半格式问题,半格式字母没有正确呈现,因为它们应该组合但它们没有,

如果您在unicode.org 上参考此常见问题解答,它清楚地定义了它应该如何呈现,我还使用提到的“零宽度连接器”,通过使用 [unicodeLookup][7] 对每个字母使用 html 代码,但它有没有效果。

无论如何这个问题不是主要的,因为它不正确但仍然不正确。

2) 此渲染问题导致文本打印不正确,请参见下面的两张图片,第一张在 PC 上正确渲染为可见,第二张是 Android 原生浏览器的屏幕截图

image

标记为 1 的问题是第一个问题,标记为 2 的问题是第二个问题,如果你在谷歌上搜索“梵文 - Unicode Consortium ch09”,你会得到一个关于这个问题的 pdf 文件(只需转到“图 9-8。渲染天城文中的顺序”)清楚地解释了正确呈现脚本的方法。似乎这些语言不支持 android 用来呈现脚本的任何内容,如果可以对 Android OS 进行任何更改以按正确顺序呈现字体,请帮助。

这绝对不是字体的问题,因为我尝试使用 Windows 操作系统使用的 Shruti 字体,渲染这些复杂的脚本是个问题

可能的解决方案:(不需要的)

1) 使用带有位图字体的opera mini(不是我的解决方案)

2) 使用图片而不是文本(同样不是我的解决方案,因为我的网站将有 300 行列表,而且对于移动设备也是如此,不想增加页面大小)

请给我一个适当的解决方案,提前谢谢!!

【问题讨论】:

【参考方案1】:

渲染古吉拉特语(和其他“复杂”脚本,即使用半格式、上下文格式、重新排列等的脚本)需要的不仅仅是字体;它还需要文本布局。文本布局功能通常由主机操作系统或在某些情况下由应用程序提供。 Android 一直在改进对文本布局的支持,但即使是最新版本的所有脚本仍然不完整。换句话说:即使是最新版本的 Android,您也无法仅使用字体轻松解决此问题。

可能的解决方法:

开发某种插件或扩展程序,以纠正古吉拉特语布局并要求用户下载/安装插件以使用您的站点。这可能是一条非常高阻抗的路径,需要大量的字体专业知识、软件开发和目标书写系统的知识。更不用说给您的用户带来的不便了。

开发自定义版本的古吉拉特语字体并在您的站点中使用相应的自定义文本,不需要文本布局;通过@font-face (webfont) 提供字体。如果您没有字体开发经验,这也可能相当具有挑战性,但这可能是最佳途径。

将文本渲染为图像;在已知客户端不支持复杂脚本的情况下进行浏览器嗅探并提供图像。这在很多时候很可能会失败(很难跟踪浏览器的功能,更不用说从一开始就可靠地检测浏览器的问题)。但保证给出正确的结果。

【讨论】:

谢谢哥们..我已经在研究第三种解决方案了,因为它不需要在客户端进行任何预先设置【参考方案2】:

如果您想在所有设备上查看您的网站,只需将 webfonts 放入您的网站。网络字体是您放置在服务器上的嵌入式字体,并且通过适当的 css 链接,每个人都可以查看,而无需在设备上安装字体。

对于其他没有网络字体的网站,请使用适用于 android 的 firefox,然后获取插件 https://addons.mozilla.org/en-us/android/addon/gujarati-fonts-package。现在您可以查看所有古吉拉特语字体的网页,无需任何复杂的程序或root android。

【讨论】:

以上是关于Android 浏览器/GUI(古吉拉特语)上的印度语言渲染不正确的主要内容,如果未能解决你的问题,请参考以下文章

Qt GUI 在 Android 上的行为不正常

触摸屏幕上的任何位置,除了 GUI 按钮 Android Unity

安卓上的OProfile

为啥使用 Arial Unicode MS 无法正确呈现古吉拉特语-印度语文本?

如何在Windows窗体应用程序中显示古吉拉特语本地数字?

将古吉拉特语文本插入 MySQL 表会导致垃圾字符和不可读的文本