• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Text height for printing (fixed width)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


  • Follow-Ups:
    • Re: Text height for printing (fixed width)
      • From: Aki Inoue <email@hidden>
  • Prev by Date: Re: Persistent ZeroLink
  • Next by Date: Re: Agent Applications and launchd
  • Previous by thread: Text height for printing (fixed width)
  • Next by thread: Re: Text height for printing (fixed width)
  • Index(es):
    • Date
    • Thread