【发布时间】:2023-03-28 21:48:02
【问题描述】:
我正在使用 CGContextShowTextAtPoint 绘制一个字符串。因此,我需要将要绘制的 NSString 转换为 c 字符串。不幸的是,欧元货币符号等特殊符号未正确显示。
CGContextSelectFont(currentContext, "TrebuchetMS", 15, kCGEncodingMacRoman);
CGContextShowTextAtPoint(currentContext, 0, 0, [myString cStringUsingEncoding:[NSString defaultCStringEncoding]], [myString length]);
我在 CGContextSelectFont 函数中使用 kCGEncodingFontSpecific 编码进行了尝试,但也没有用。
出于性能原因,我需要使用 CG 函数,而不是 NSString 提供的 drawInRect 函数。
也许你能帮帮我!
PS:我知道这是一个经常发布的话题,但我不知道为什么我不能让它发挥作用......
【问题讨论】:
-
两件事:1. 不能保证 defaultCStringEncoding 是 UTF-8 还是 MacRoman,2. 作为最后一个参数传递给 CGContextShowTextAtPoint() 的长度应该是 C 字符串的长度(以字节为单位) ,而不是 NSString 的字符长度。
-
是的,对于 MacRoman 编码,您需要使用 NSMacOSRomanStringEncoding 而不是 [NSString defaultCStringEncoding]。
标签: iphone objective-c core-graphics