Получение максимальной высоты шрифта - PullRequest
0 голосов
/ 23 октября 2008

Итак, у меня есть NSFont, и я хочу получить максимальные размеры для любых символов, т.е. высота тона и буквы. [font MaximumAdvancement], кажется, возвращает NSSize {pitch, 0}, так что это не помогает. Ограничивающий прямоугольник, похоже, тоже не работает, и предложение из аналогичного вопроса jwz о создании пути Безье, добавлении глифа и получении ограничивающего прямоугольника также возвращает меня {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];

1 Ответ

6 голосов
/ 23 октября 2008

Глиф для символа пробела не имеет подпутей, поэтому его границы имеют размер NSZeroSize Попробуйте -[NSFont boundingRectForFont] вместо.

...