Question

Donc, j'ai un NSFont, et je veux obtenir les dimensions maximales pour tous les caractères, c'est-à-dire. la hauteur et la hauteur des lettres. [font maximumAdvancement] semble renvoyer une taille NSS égale à {pas, 0}, donc cela n’aide en rien. Bounding rect ne semble pas non plus fonctionner, et la suggestion de la question similaire de jwz de créer un le chemin de Bézier, l’ajout d’un glyphe et l’obtention du rectangle englobant me rendent également {0, 0}. Qu'est-ce qui donne ici?

UPDATE : le code que j'utilise pour obtenir la taille de Bézier est le suivant:

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];
Était-ce utile?

La solution

Le glyphe du caractère espace ne comporte pas de sous-chemins. Par conséquent, ses limites ont la taille NSZeroSize . Essayez plutôt - [NSFont boundingRectForFont] .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top