CoreText渲染文本故障

时间:2011-06-01 20:50:45

标签: iphone ios core-text

我正在开发一款新应用。我使用Core Text从NSAttributedString渲染不同的文档。我在渲染文本时遇到了奇怪的故障。每个文档都不会发生这种情况。当它出现与否时似乎没有押韵或理由。

这是一个裁剪的屏幕截图,用于演示此问题。

Glitch in rendering

以下是正确渲染的相同屏幕截图中的一行。

Correct rendering

屏幕截图来自相同的屏幕截图和相同的文档。

出现问题时,通常只有2-3行连续不正确的文本。文件的其余部分没问题。

以下是我用于在drawRect中呈现文本的代码:

CGContextRef context = UIGraphicsGetCurrentContext();

float viewHeight = self.bounds.size.height;
CGContextTranslateCTM(context, 0, viewHeight);
CGContextScaleCTM(context, 1.0, -1.0);
CGContextSetTextMatrix(context, CGAffineTransformMakeScale(1.0, 1.0));

CGMutablePathRef path = CGPathCreateMutable();
CGRect bounds = CGRectMake(PADDING_LEFT, -PADDING_TOP, self.bounds.size.width-20.0, self.bounds.size.height);
CGPathAddRect(path, NULL, bounds);

CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((CFMutableAttributedStringRef)attrString);
CTFrameRef frame = CTFramesetterCreateFrame(framesetter, CFRangeMake(0, 0), path, NULL);
CFRelease(framesetter);
CFRelease(path);
CTFrameDraw(frame, context);

感谢任何帮助!

编辑:此问题在iPhone 4上似乎不存在,仅在我测试的3GS上存在。

故障始终位于文档的中间。

1 个答案:

答案 0 :(得分:0)

请尝试各种设置以影响文本的子像素渲染。您可以在https://github.com/Cocoanetics/NSAttributedString-Additions-for-HTML/blob/master/Classes/DTCoreTextLayoutFrame.m

的第259行查看各种选项