0

したがって、NSFontがあり、任意の文字の最大サイズを取得したいと思います。ピッチと文字の高さ。[font maximumAdvancement]は{pitch、0}のNSSizeを返すように見えるので、それは役に立ちません。バウンディング長方形も機能していないようです。ベジェパスを作成し、グリフを追加し、バウンディング長方形を取得するという、 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];
4

1 に答える 1

6

スペース文字のグリフにはサブパスがないため、もちろんその境界のサイズはNSZeroSizeです。-[NSFont boundingRectForFont]代わりに試してください。

于 2008-10-23T17:07:25.250 に答える