Three20框架中的TTSearchlightLabel
类忽略空格和拉丁字母。它的渲染代码如下所示:
CGContextSelectFont(context, [_font.fontName UTF8String], _font.pointSize, kCGEncodingMacRoman);
CGContextSetTextDrawingMode(context, kCGTextFill);
CGContextSetTextMatrix(context, CGAffineTransformScale(CGAffineTransformIdentity, 1, -1));
CGContextSetFillColorWithColor(context, _textColor.CGColor);
CGContextShowTextAtPoint(context, x, y, [self.text UTF8String], self.text.length);
我对这种低级别的渲染不是很熟悉但是有人摆脱了这个吗?我也试过kCGEncodingFontSpecific
,但它甚至变得更糟。
我猜这个问题不是那么快就可以修复,是否有替代方法可以获得这种文字效果?
非常感谢, 冈特
答案 0 :(得分:0)
CGContextSelectFont
编码参数的documentation表示:
textEncoding
一个CGTextEncoding
值,指定用于字体的编码。有关可用值的说明,请参阅“CGTextEncoding”。
可能的值是:
kCGEncodingFontSpecific
字体的内置编码。
和
kCGEncodingMacRoman
MacRoman编码。 MacRoman是最初为在Mac OS中使用而创建的ASCII变体,其中字符127和更低的字符是ASCII,字符128和更高的字符是非英文字符和符号。
将参数更改为kCGEncodingFontSpecific,它应该正确显示。