Re: Text height for printing (fixed width)
Re: Text height for printing (fixed width)
- Subject: Re: Text height for printing (fixed width)
- From: Jérôme Jaglale <email@hidden>
- Date: Tue, 3 Jan 2006 21:19:57 +0400
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:
This email sent to email@hidden