Mailing Lists: Apple Mailing Lists

Image of Mac OS face in stamp
 
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Text height for printing (fixed width)



Le 3 janv. 06, à 17:12, Jerry Krinock a écrit :

Sorry I have not read these or your project, but it sounds similar to the
question in this recent thread:


http://www.cocoabuilder.com/archive/message/cocoa/2005/12/20/152875


You're right, it was my question. You gave the Apple NSLayout Guide method. But it didn't really satisfy me, because you said :

You may find that you need to add a little margin.  I don't know why,
but to guarantee no wrapping I have to add 15 pixels to the returned
measurement.  The required margin may depend on your font, size, etc.

It's true : sometimes (and only sometimes !), it needs a margin. To have a font independent margin , I just add a breakline at the end of the string when there isn't :


		if( ! [aString hasSuffix:@"\n"])
		aString = [NSString stringWithFormat:@"%@\n", aString];

It's isn't perfect because there is sometimes a small extra vertical space.

The complete method :
// from Apple Text NSLayout Programming Guide
- (float) heightForStringDrawingV1:(NSString *)aString withFont:(NSFont *)aFont andWitdh:(float)myWidth
{
if( ! [aString hasSuffix:@"\n"])
aString = [NSString stringWithFormat:@"%@\n", aString];

NSTextStorage *textStorage = [[[NSTextStorage alloc] initWithString:aString] autorelease];
NSTextContainer *textContainer = [[[NSTextContainer alloc] initWithContainerSize:NSMakeSize(myWidth,1e7)] autorelease];
NSLayoutManager *layoutManager = [[[NSLayoutManager alloc] init] autorelease];
[layoutManager addTextContainer:textContainer];
[textStorage addLayoutManager:layoutManager];

[textStorage addAttribute:NSFontAttributeName value:aFont range:NSMakeRange(0,[textStorage length])];
[textContainer setLineFragmentPadding:0.0];

(void) [layoutManager glyphRangeForTextContainer:textContainer];
return [layoutManager usedRectForTextContainer:textContainer].size.height;
}


Thanks for your help Jerry, it's your post which gave me this idea ! _______________________________________________
Do not post admin requests to the list. They will be ignored.
Cocoa-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/email@hidden

This email sent to email@hidden


Visit the Apple Store online or at retail locations.
1-800-MY-APPLE

Contact Apple | Terms of Use | Privacy Policy

Copyright © 2007 Apple Inc. All rights reserved.