• 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: Wed, 4 Jan 2006 09:22:14 +0400

Thanks a lot for your crystal clear explanations, Aki.
Your solution gives the good text height, issue closed.
Jérôme

2006/1/3, Aki Inoue <email@hidden>:
>
> Jérôme,
>
> What you (and others) are observing here is the typesetter behavior
> difference between measurement and rendering.
>
> You're using one of string drawing convenience to render text, but
> using NSLayoutManager for measurement.
>
> Currently the string drawing convenience methods defined in
> NSStringDrawing.h are using
> NSTypesetterBehavior_10_2_WithCompatibility whereas the default
> setting for NSLayoutManager is NSTypesetterLatestBehavior.
>
> This causes line height calculation mismatch.
>
> A easy solution for your problem is to add the following line in -
> heightForStringDrawingV1:withFont:andWitdh:.
>         [layoutManager
> setTypesetterBehavior:NSTypesetterBehavior_10_2_WithCompatibility];
>
> Ideally, you should use the same layout manager you used to measure
> for rendering (especially for performance).
>
> Aki
>
> > 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
>
>
 _______________________________________________
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

References: 
 >Re: Text height for printing (fixed width) (From: Jérôme Jaglale <email@hidden>)
 >Re: Text height for printing (fixed width) (From: Aki Inoue <email@hidden>)

  • Prev by Date: Re: Core Data Binding: Reading a binary image (TIFF)
  • Next by Date: Re: Embedding Flash in .app, Round Two
  • Previous by thread: Re: Text height for printing (fixed width)
  • Next by thread: Re: Text height for printing (fixed width)
  • Index(es):
    • Date
    • Thread