NSString boundingRectWithSize возвращает излишне высокую высоту

Когда используешь[NSString boundingRectWithSize:options:attributes] размер возвращаемого прямоугольника выше, чем я ожидал бы для определенных строк. Возвращенная высота, по-видимому, представляет максимально возможную высоту строки с заданными атрибутами, а не высоту самой строки.

Принимая те же атрибуты и параметры, высота, возвращаемая для строки ""cars та же самая высота, возвращаемая для строки ""ÉTAS-UNIS (обратите внимание на акцент на E).

Я бы ожидалboundingRectWithSize рассматривать только символы в данной строке, которые, по моему мнению, вернут более короткую высоту для строки "".cars

На приложенных скриншотах ямы заполнили прямоугольник, возвращенный изboundingRectWithSize и обрисовал красным, что я бы предположил, что должен был быть ограничительный прямоугольник. Ширина прямоугольника довольно большая, как я и ожидал, но высота значительно выше, чем я ожидал. Это почему?

Образец кода:

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

Выход:

Lowercase rect: {{0, -6}, {43.1953125, 33}}
Uppercase rect: {{0, -6}, {128.44921875, 33}}
Capitalized rect: {{0, -6}, {64.5, 33}}

Ответы на вопрос(3)

Ваш ответ на вопрос