2

我目前正在使用 iPhone SDK 创建一个使用印度语脚本的应用程序。但是,iPhone 在渲染许多印度语脚本中的某些字形时存在问题。例如:

प + ् + र = प्र

或者

ਕ + ੍ + ਰ = ਕ੍ਰ

当您在 Mac(或 Windows)上键入时,计算机会自动将这三个字符呈现为一个字形(प्र - 但是在 Unicode 中它仍然表示为三个字符)。因为 iPhone 不支持 AAT(Apple 高级排版)或高级 OpenType 功能,它会将字符呈现为三个单独的字符,这在许多情况下变得不可读。我认为应该有一种在 Objective-C 中进行硬编码的方法,以确保每次三个字符出现在 UILabel 中时,它们应该从 Arial Unicode MS(内置)字体呈现某个字形。我不介意使用未记录的 API 来完成此操作。

4

3 回答 3

2

问题不在于 iPhone 仅支持某些 Indic 或不支持 AAT 字体。iPhone肯定支持AAT表。问题是不包括您使用的正确 AAT 字体!U 可以显示很少的字形,因为这些字形包含在 arialuni.ttf 或 helvetica.ttf 中。但这些字体没有任何 OpenType 或 AAT 表。

我可以用图片确认我所说的,我有一部越狱的 iPhone,您可以查看 flickr.com/photos/41161441@N03/ 以获取正确的高棉渲染图片,这是最复杂的印度文字之一。

我在 modmyi.com 网站论坛上解释了这个问题。 http://www.modmyi.com/forums/general-iphone-chat/680094-indic-font-rendering-iphone-yes-working.html#post4897261

于 2009-08-06T04:43:37.327 回答
1

首先探索 Apple 使用的内容,如下所示:

  • 尝试在 Notes 和 Mail 中输入单独的字形,看看它们是否合成。如果不是,那么不太可能有隐藏的代码可以做到这一点。

  • 接下来,在 Mac 上创建一个合成角色并将其通过电子邮件发送到您的 iPhone。看看 Mail 是否甚至能够显示各种复合字符。通过托管一个包含复合字符的网页并观察 MobileSafari 的功能来重复此操作。我已经通过在 MobileSafari 中查看此页面为您完成了这项工作;它没有正确合成字符。这告诉我们,iPhone 上的 WebKit 无法帮助您(并且 iPhone 完全不可能做到这一点)。

  • 最后,你为什么认为 प्र 完全可以在 iPhone 上使用?您是否曾经能够在 iPhone 上的任何应用程序中显示此字形?很有可能没有这样的字形定义,在这种情况下,除非您准备好编写自己的布局管理器(这可能需要创建一个全新的文本视图),否则您可能会被卡住。如果您能够在某个地方显示它,那么您可以从那里继续了解 Apple 是如何显示它的。

iPhone 上是否还有印度语键盘?我一直找不到,如果没有,那么他们极不可能在私有方法中隐藏很多印度语支持。

请务必打开 Radars (bugreport.apple.com) 以查看任何在 iPhone 上错误绘制的字形。这就是他们知道如何修复它的方式。

于 2009-08-04T14:25:45.193 回答
1

我致力于语言学习应用程序。

iPhone 上几乎不支持印度语脚本。您将不得不编写自己的文本渲染支持和使用它的元素,或者等待 Apple 实现它。

iPhone OS 在 3.0 之前无法渲染阿拉伯语脚本,而 OS X 仅支持某些具有第三方渲染支持的印度语文本。

我支持 iPhone OS 无法渲染的脚本的解决方案是使用预渲染图像。可能对您没有太大帮助,但这就是我们所做的。

于 2009-08-04T14:46:29.247 回答