所以我有一个NSFont,我想获得任何角色的最大尺寸,即。音高和字母高度。 [font maximumAdvancement]似乎返回{pitch,0}的NSSize,所以这没有帮助。绑定rect似乎也不起作用,并且jwz's similar question建议创建贝塞尔路径,附加一个字形并获得边界矩形的建议也让我回到{0,0}。这里给出了什么?
更新:我用来获得贝塞尔大小的代码是这样的:
NSBezierPath *bezier = [NSBezierPath bezierPath];
NSGlyph g;
{
NSTextStorage *ts = [[NSTextStorage alloc] initWithString:@" "];
[ts setFont:font];
NSLayoutManager *lm = [[NSLayoutManager alloc] init];
NSTextContainer *tc = [[NSTextContainer alloc] init];
[lm addTextContainer:tc];
[tc release]; // lm retains tc
[ts addLayoutManager:lm];
[lm release]; // ts retains lm
g = [lm glyphAtIndex:0];
[ts release];
}
NSPoint pt = {0.0f};
[bezier moveToPoint:pt];
[bezier appendBezierPathWithGlyph:g inFont:font];
NSRect bounds = [bezier bounds];
答案 0 :(得分:6)
空格字符的字形没有任何子路径,因此其边界的大小为NSZeroSize
。请改为-[NSFont boundingRectForFont]
。