iPhone SDK Quartz Glyph图画

问题描述:

我想以某种精度在特定点渲染字体字形,并且遇到了相当多的麻烦。iPhone SDK Quartz Glyph图画

首先,文本位置Y值永远不会改变,所以我无法得到字形的高度。例如,在下面的代码,则断言始终闪光:

CGContextSelectFont(g, "Arial", 32.0f, kCGEncodingFontSpecific); 

char c = 'A'; 
CGPoint pt = CGPointMake(400, 400); 

CGContextSetTextDrawingMode(g, kCGTextInvisible); 
CGContextSetTextPosition(g, pt.x, pt.y); 
CGContextShowText(g, &c, 1); 

CGPoint pt2 = CGContextGetTextPosition(g); 
assert(pt2.y != pt.y); 

我试图解决此使用一些硬编码的宽度与高度的比率,假定字形线性比例。请注意,文本位置的X值已正确更新。

但是,更重要的是字形如何与文本位置相关呈现;一些字形以Y值作为字形的中心进行渲染,一些使用Y值作为字形的顶部,另一些使用Y值作为字形的底部。我无法对所有这些数据进行硬编码,并希望在今年的任何时候都可以完成我的应用。

在上面的绘图代码中是否有任何错误的操作?我在石英文档中找不到与垂直对齐相关的任何参考,并且有点失落。

从我已经发现的这是一个相当复杂的任务。我会检查出zynga's LabelFont library,并从他们的代码中学习或简单地使用该库。特别是看看LabelFont类的'drawTextInRect:方法。

+0

感谢您的链接。我在一周前看过这个,这并不符合我的需求;它要复杂得多,而且这些方法似乎更适合动态调整大小。我不需要将字形更改为匹配矩形,我需要一个矩形作为字形! – Chris 2010-02-24 20:33:43

+0

检出sizeWithZFont:在FontLabelStringDrawing类中。 – Felixyz 2010-02-24 22:50:35