I should declare up front that I know there are some arcane ways to
measure string metrics using things like NSTextStorage,
NSLayoutManager and the kin.
Given the string and the font used to render it, it is reasonable
there should be some straightforward way to tell the metrics of the
string when laid out in one line. Actually, I thought I'd found
several after reading through the docs; however, all of them turned
out to be very miserable.
Here goes what I've tried, with the effects in comments:
    NSFont *font = [NSFont labelFontOfSize:12]; // I put the string in a label
    NSRect fontRect = [font boundingRectForFont]; // too large
    NSRect glyphRect = [font boundingRectForGlyph:'W']; // too too small
    NSLog(@"fontRect: %f, %f, %f, %f\nglyphRect: %f, %f, %f, %f",
fontRect.origin.x, fontRect.origin.y, fontRect.size.width,
fontRect.size.height, glyphRect.origin.x, glyphRect.origin.y,
glyphRect.size.width, glyphRect.size.height);
    NSTextField *label1 = [[[NSTextField alloc] init] autorelease];
    [label1 setStringValue:@"ABC"];
    [label1 setFrame:NSMakeRect(0, 0, fontRect.size.width * 3,
fontRect.size.height)];
    [[box contentView] addSubview:label1]; // box is an NSBox
    NSTextField *label2 = [[[NSTextField alloc] init] autorelease];
    [label2 setStringValue:@"ABC"];
    NSSize size = [@"ABC" sizeWithAttributes:[NSDictionary
dictionaryWithObject:font forKey:NSFontAttributeName]]; // too small
    NSLog(@"string size: %f, %f", size.width, size.height);
    [label2 setFrame:NSMakeRect(fontRect.size.width * 3, 0,
size.width, size.height)];
    [[box contentView] addSubview:label2];

So, can anyone tell me why all these fell through so badly, and what
is the true straightforward way to do this if any?
Thanks in advance.
_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [EMAIL PROTECTED]

Reply via email to