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

4
我有一个专门在Android设备上查看的网站,我使用古吉拉特语言,但是我遇到了一个大问题,无法正确渲染古吉拉特字体。我至少希望找到一种解决方案来使默认情况下不支持任何Android版本的古吉拉特字体正常工作。于是我做了以下几步:
解决方案: - 手机Root - 找到适用于古吉拉特语的正确Unicode字体 - 将现有的System/fonts中的DroidSansFallback.ttf替换为古吉拉特字体(对于ICS,在system/etc文件夹中的fontsfallback.xml中进行了一些额外的更改)
这帮助我至少查看古吉拉特文本,但不能正确渲染。
问题: 1)半形式的问题,半形式字母没有按照应该组合的方式正确渲染出来。
如果您参考unicode.org上的常见问题解答,它清楚地定义了如何渲染。我还使用了[unicodeLookup][7]使用html代码为每个字母使用所提到的“零宽连接器”,但它没有效果。
无论如何,这个问题并不是主要问题,因为它不正确但也不是错误的。

2)这个渲染问题导致文字打印错误。请看下面的两张图片,第一张在电脑上正确地渲染,第二张是从Android原生浏览器中截取的。

image

标记为1的问题是第一个问题,标记为2的问题是第二个问题。如果你在谷歌上搜索“Devanagari - Unicode Consortium ch09”,你会得到一份PDF文件,其中提到了这个问题(只需进入“Figure 9-8. Rendering Order in Devanagari”),清楚地解释了如何正确地渲染这些脚本。似乎无论Android使用什么来渲染这些脚本,都不支持这些语言。如果有任何可以更改Android操作系统以正确呈现字体的方法,请帮忙。

这绝对不是字体的问题,因为我已经尝试过Windows操作系统使用的Shruti字体,而是与渲染这些复杂脚本有关的问题。

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

1)使用Opera Mini和位图字体(不是我的解决方案)

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

请给我一个适当的解决方案,谢谢!
2个回答

2
渲染古吉拉特文字(以及其他“复杂”脚本,即使用半形式、上下文形式、重新排列等的脚本)需要不仅仅是字体,还需要文本布局。文本布局能力通常由主机操作系统或在某些情况下由应用程序提供。Android已经改进了文本布局支持,但即使是最新版本,也对所有脚本仍然不完整。换句话说:即使对于最近的Android版本,您也不能仅通过字体轻松解决此问题。
可能的解决方法:
- 开发某种插件或扩展程序,以执行正确的古吉拉特文本布局,并要求用户下载/安装插件以使用您的站点。这很可能是一条非常高阻抗的路径,需要专门知识和技能,包括字体、软件开发和目标书写系统的知识。更不用说对用户的不便了。 - 开发古吉拉特字体的自定义版本,并在您的站点中使用相应的自定义文本,而不需要文本布局;通过 @font-face (webfont) 提供字体。如果您没有字体开发经验,这也可能会相当具有挑战性,但这可能是最好的路径。 - 将文本呈现为图像;对于已知不支持复杂脚本的客户端,进行浏览器嗅探并提供图像。这很可能会失败很多次(难以跟踪浏览器功能,更不用说可靠地检测浏览器的问题了)。但是保证能够给出正确的结果。

谢谢伙计,我已经在第三个解决方案上工作了,因为它不需要客户端进行任何预设置。 - Aun Rizvi

1
如果您想在所有设备上查看您的网站,只需将Web字体放在您的网站中。Web字体是嵌入式字体,您可以将其放在服务器上,并通过适当的CSS链接使每个人都可以在不在设备上安装字体的情况下查看它。
对于其他没有Web字体的网站,请使用Android上的Firefox浏览器,然后获取插件https://addons.mozilla.org/en-us/android/addon/gujarati-fonts-package。现在,您可以在Gujarati字体中查看所有网页,而无需进行任何复杂的程序或root Android。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接