2010-10-18 113 views
0

我正在尝试使用自定义字体在屏幕上编写文本堆。 这一切运作良好,但我有点麻烦得到它与字符串包含变音。 我尝试了各种编码没有成功。 这就是我所做的......我认为在获取字符串的C版本时出错。 车阵犯规包含字符的话,因此它不会被添加到字形排列,最后没有绘制... :-(如何将带有变音符的NSString转换为字符/字符

有什么建议? 感谢 汤姆

CGGlyph* Glyphs = malloc(sizeof(CGGlyph) * [textToDraw length]); 
char* Chars = malloc(sizeof(char) * ([textToDraw length] + 1)); 
[textToDraw getCString:Chars maxLength: ([textToDraw length] + 1) encoding: NSNEXTSTEPStringEncoding]; 

for(int CurrentChar = 0; CurrentChar < [textToDraw length]; ++CurrentChar) 
{ 
    Glyphs[CurrentChar] = Chars[CurrentChar]- 29; 
} 
CGContextShowGlyphs(UIGraphicsGetCurrentContext(), Glyphs, [textToDraw length]) 
+0

为什么在世界上你使用NextStep拉丁字符串编码? – Chuck 2010-10-18 17:29:22

+0

因为这个编码至少给我所有的字符,除了Umlaut(e)。其他编码如utf8或ascii给我提供了一个更糟的结果... – Tom 2010-10-20 11:37:00

回答

-1

如果我正确理解您要非ASCI字符存储在正在编译文件你不能这样做,你要逃避,像这样的字符串:。

@"The Greek letter Beta looks like this: \u03b2" 

How do I escape a Unicode character in my source code?

+0

不,我正在尝试使用CGContextShowGlyphs编写一个包含变音符字符的字符串到屏幕...... 但是我为任何其他(快速)来确定我的(Umlaut-)字符串的长度。 – Tom 2010-10-20 11:42:14

1

NSNextStepStringEncoding?它是否具有变音符号的编码?如果没有,您的转换将失败(或至少跳过它无法转换的字符)。

+0

正好。但其他编码不会工作。 什么是用CGContextShowGlyphs绘制包含元音字符的字符串的正确方法?????? (或者测量一个包含元音字符的字符串) – Tom 2010-10-20 11:38:19

+0

我不会使用CGContextShowGlyphs。我会使用文本绘图功能。如果您确实需要直接使用字形,则需要将字符逐个转换为字形数字。请注意,即使在UTF-16中,并非所有字符都由一个unichar表示。 – JeremyP 2010-10-20 12:24:46

+0

感谢您的输入。以及我必须测量我正在绘制的字符串的长度。这就是为什么我必须使用这个CGContextShowGlyphs函数。但当然,如果你知道更好的方法,请让我知道。 – Tom 2010-10-20 13:09:12

相关问题