2008-10-23 61 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]