iOS字体无法正确显示所有Unicode字符。

4

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

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

我正在一个NSString中捕获它,并尝试简单地更新文本字段。类似于:

NSString *test = @"\u23ba";
[displayText setText:test];

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

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


23ba是正确的Unicode吗?http://www.fileformat.info/info/unicode/char/23ba/index.htm - Fahim Parkar
制作 \u23BA(B和A是大写字母),看看你会得到什么... - Fahim Parkar
@FahimParkar 很遗憾,这并没有改变任何事情。 - Meshach
1个回答

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是商业字体,随一些微软产品发货。可能还有其他覆盖这些字符的字体,但不多(我想可能是Everson Mono,但我目前没有它)。


这也是我所认为的,但是甚至系统字体似乎也无法显示这些类型的字符。是否有一个“已知”的字体包含更大比例的字符? - Meshach
添加了一些特定的字体信息。 - Jukka K. Korpela
恩,你说得完全正确!如果我想使用一些Unicode字符,似乎只能选择很有限的字体,或者走下可归属字符串的兔子洞。 - Meshach

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