2008-10-23 5 views
0

Итак, у меня есть NSFont, и я хочу получить максимальные размеры для любых символов, т.е. высота тона и буквы. [font максимумAdvancement], кажется, возвращает NSSize из {pitch, 0}, так что это не помогает. Ограничение rect тоже не работает, и предложение от jwz's similar question создания пути безье, добавление глифа и получение ограничивающего прямоугольника также возвращает мне {0, 0}. Что здесь дает?Получение максимальной высоты шрифта

UPDATE: код, я использую, чтобы получить размер Безье это:

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].

Смежные вопросы