2008-10-23 4 views
0

J'ai donc une NSFont, et je veux obtenir les dimensions maximales pour tous les caractères, ie. la hauteur et la hauteur de la lettre. [police maximumAdvancement] semble retourner un NSSize de {pitch, 0}, donc ça n'aide pas. Le rectangle de délimitation ne semble pas fonctionner non plus, et la suggestion de jwz's similar question de créer un chemin de Bézier, d'ajouter un glyphe et d'obtenir le rectangle de délimitation me renvoie également {0, 0}. Qu'est-ce qui donne ici?Obtention de la hauteur maximale d'une police

MISE À JOUR: Le code que je utilise pour obtenir la taille de Bézier est la suivante:

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

Répondre

6

Le glyphe pour le caractère d'espace n'a pas de sous-chemins, donc bien sûr ses limites ont une taille NSZeroSize . Essayez plutôt -[NSFont boundingRectForFont].

Questions connexes