2008-10-23 60 views
0

所以我有一个NSFont,我想获得任何字符的最大尺寸,即。音高和字母高度。 [font maximumAdvancement]似乎会返回{pitch,0}的NSSize,所以这没有帮助。边界矩形似乎也不起作用,并且从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]; 

回答

6

的空格字符没有任何的子路径字形,所以当然它的边界有大小NSZeroSize 。改为尝试-[NSFont boundingRectForFont]