NSString boundingRectWithSize retornando altura desnecessariamente alta
Ao usar[NSString boundingRectWithSize:options:attributes]
o tamanho do rect que é retornado é mais alto do que eu esperaria para certas strings. A altura retornada parece representar a altura máxima possível de uma sequência com os atributos fornecidos, em vez da altura da própria sequência.
Supondo os mesmos atributos e opções, a altura retornada para a sequência "cars
"é a mesma altura retornada para a sequência"ÉTAS-UNIS
"(observe o acento no E).
Eu teria esperadoboundingRectWithSize
considerar apenas os caracteres na sequência especificada, o que, na minha opinião, retornaria uma altura menor, t para a sequência "cars
"
Nas capturas de tela anexadas, preenchi o texto retornado deboundingRectWithSize
e descrevi em vermelho o que eu teria assumido que o retângulo delimitador deveria ter sido. A largura do retângulo é praticamente como eu esperaria, mas a altura é consideravelmente mais alta do que eu esperava. Por que é que?
Código de amostra:
NSRect boundingRect = NSZeroRect;
NSSize constraintSize = NSMakeSize(CGFLOAT_MAX, 0);
NSString *lowercaseString = @"cars";
NSString *uppercaseString = @"ÉTAS-UNIS";
NSString *capitalizedString = @"Japan";
NSFont *drawingFont = [NSFont fontWithName:@"Georgia" size:24.0];
NSDictionary *attributes = @{NSFontAttributeName : drawingFont, NSForegroundColorAttributeName : [NSColor blackColor]};
boundingRect = [lowercaseString boundingRectWithSize:constraintSize options:0 attributes:attributes];
NSLog(@"Lowercase rect: %@", NSStringFromRect(boundingRect));
boundingRect = [uppercaseString boundingRectWithSize:constraintSize options:0 attributes:attributes];
NSLog(@"Uppercase rect: %@", NSStringFromRect(boundingRect));
boundingRect = [capitalizedString boundingRectWithSize:constraintSize options:0 attributes:attributes];
NSLog(@"Capitalized rect: %@", NSStringFromRect(boundingRect));
Resultado:
Lowercase rect: {{0, -6}, {43.1953125, 33}}
Uppercase rect: {{0, -6}, {128.44921875, 33}}
Capitalized rect: {{0, -6}, {64.5, 33}}