【发布时间】:2013-04-24 02:57:21
【问题描述】:
我正在尝试将 Unicode 字符(使用自定义字体)放入一个字符串中,然后使用 Quartz 显示该字符串,但 XCode 出于某种原因不喜欢转义码,我真的被卡住了。
CGContextShowTextAtPoint (context, 15, 15, "\u0066", 1);
它不喜欢这个(拉丁文小写 f)并说它是“无效的通用字符”。
CGContextShowTextAtPoint (context, 15, 15, "\ue118", 1);
它没有抱怨这一点,但什么也没显示。当我在 FontForge 中打开字体时,它显示字形在那里并且有效。 Font Book 也很好地验证了字体。如果我在 TextEdit 中使用字体并将 Unicode 字符与字符查看器 Unicode 表一起放入,它看起来就很好。只是 Quartz 不会显示它。
任何想法为什么这不起作用?
【问题讨论】:
-
尝试大写 E... 例如"
\uE118" -
这个问题可能会有所帮助:stackoverflow.com/questions/1237565/…
-
@trojanfoe 的链接很好。 CGContextShowTextAtPoint 不是很灵活(根据字体,即使是简单的显示也会有问题)。见lists.apple.com/archives/cocoa-dev/2012/May/msg00593.html。
-
谢谢!我得到了它的工作。使用 CGContextShowGlyphsAtPoint(context, 15, 15, (const CGGlyph *)"4", 1);但我在字符串中使用的符号与字体不匹配。所有数字 0 - 9,然后是小写字母,然后是大写字母,按照字形的顺序(不是匹配的字符)穿过大部分字体,但我不知道如何让其他字形显示出来。例如“0”表示U+E119,“1”表示U+E11A
-
我还有一个问题,就是说某些字符无效,这很奇怪。