在iPhone上渲染某些角色标志符号

时间:2009-08-04 13:50:01

标签: iphone cocoa-touch glyph gnu-toolchain

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

प + ् + र = प्र

ਕ + ੍ + ਰ = ਕ੍ਰ

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

3 个答案:

答案 0 :(得分:2)

问题不在于iPhone只支持某些印度语或不支持AAT字体。 iPhone支持AAT表肯定。 问题是您使用的正确AAT字体不包括在内! 你可以显示很少的字形,因为那些字形包含在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

答案 1 :(得分:1)

首先探索Apple正在使用的内容如下:

  • 尝试在Notes和Mail中输入单独的字形,看看它们是否合成。如果没有,则不可能有一段隐藏的代码来执行此操作。

  • 接下来,在Mac上创建一个合成角色并通过电子邮件发送给您的iPhone。查看Mail是否能够显示各种合成字符。通过托管带有合成字符的网页并观察MobileSafari的功能来重复此操作。我通过在MobileSafari中查看此页面为您完成了这个;它没有正确合成字符。所以这告诉我们iPhone上的WebKit无法帮助你(而且iPhone根本不太可能这样做)。

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

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

请确保为iPhone上错误绘制的任何字形打开Radars(bugreport.apple.com)。这就是他们知道解决问题的方法。

答案 2 :(得分:1)

我从事语言学习应用。

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

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

我支持脚本iPhone OS无法渲染的解决方案是使用预渲染图像。可能对你没什么帮助,但这就是我们的工作。