iOS字体未正确显示所有Unicode字符

时间:2013-10-10 19:15:27

标签: ios objective-c unicode

两个字符的示例:U + 22FF,U + 23BA ......以及许多其他字符。

这是一个我误解iOS的编码层吗?就像,在某些时候它不再能够正确地显示超过22B的代码......?

我在NSString中捕获它,并尝试简单地更新文本字段。像

这样的东西
NSString *test = @"\u23ba";
[displayText setText:test];

这将显示标准类型错误,如带有问号的框,或仅显示一个框(取决于字体)。

有没有办法扩展iOS的unicode选项?因为这些可以在我的Mac上显示。或者,我唯一的选择是NSAttributableString路线的一些变体吗?

1 个答案:

答案 0 :(得分:2)

U + 22FF和U + 23BA是有效的代码点(分配给字符)。但它们仅受少量字体的支持。因此,您应首先检查正在使用或可用的字体。

例如,U + 22FF包含在Asana-Math,Cambria,Cambria Math,Code2000,DejaVu Sans(奇怪的是,只有Bold Oblique字体),FreeSerif,GNU Unifont,Quivira,Segoe UI Symbol,STIXMath,STX,Sun -ExtA,Symbola,XITS,XITSMath。 U + 23BA包含在Cambria,Cambria Math,Code2000,FreeMono,FreeSerif,GNU Unifont,Quivira,Segoe UI Symbol,Sun-ExtA,Symbola中。其中许多都是免费字体。印刷质量差异很大。 Cambria字体和Segoe UI Symbol是商业版,随某些Microsoft产品一起提供。可能还有一些其他字体覆盖了这些字符,但并不多(Everson Mono,我想,我目前还没有)。