这是this one的后续问题。
CATextLayer
只能在不透明时使用子像素抗锯齿来绘制文本。
文本显示在有色图像上。图像用90%的颜色着色,这意味着我基本上可以忽略图像和色调颜色之间的少数色差,以及针对色调的抗锯齿。
现在显然CATextLayer
的背景仍然必须是透明的
不幸的是,没有办法真正控制子像素AA,你可以禁用它或启用它,其余的发生在后台。
我想知道是否有办法将反别名设置为实际上不存在的颜色 所以我的问题在一句话中:
是否有办法针对从未绘制的颜色进行亚像素抗锯齿?
答案 0 :(得分:1)
有一种方法。 (这有点像黑客,但由于还没有答案,一小时后,我认为我应该发布它,虽然它可能不完美。)
将黑色文字渲染到白色背景上并将其保存到图像上。
然后,您可以使用函数kCGBlendModeMultiply
以混合模式-drawInRect:blendMode:alpha:
渲染该图像。
要绘制其他颜色的文字,您需要更多的图像hackery,但也应该可以创造性地使用混合模式。