Re: CoreText & NSMutableParagraphStyle maximumLineHeight
Re: CoreText & NSMutableParagraphStyle maximumLineHeight
- Subject: Re: CoreText & NSMutableParagraphStyle maximumLineHeight
- From: Peter C <email@hidden>
- Date: Tue, 20 Aug 2013 17:07:40 +0800
On 20 Aug, 2013, at 4:23 PM, Graham Cox <email@hidden> wrote:
> On 20/08/2013, at 8:38 AM, Peter C <email@hidden> wrote:
>
>> Yes, it is possible to pass values with NSParagraphStyleAttributeName for NSString drawInRect:withAttributes. However by default line spacing or gap between lines is different compare to CoreText functions (CTFramesetter and etc). The gap is taller for NSString, perhaps the calculation is based on round up values rather than fraction values of the font height.
>
> I'm not sure but I think because the purpose of the NSString convenience method is for UI labelling, there is an additional border added to the bounding rect needed. However, this shouldn't affect the spacing of multiple lines if the text wraps. If you are trying to draw each line yourself then you are not going to see the same line spacing and you're doing unnecessary work.
I do not intend to draw line by line. The app would auto flow line of text in a text box. It is a simple variable text length, one to few lines text for label printing (printer and display).
>> I believe the user would be probably happy with CoreText compare to NSString by default values. Print people, they are sensitive to typography measurements. According to the user, it's a common feature for apps like MS Word (line spacing) or Adobe Indesign (font leading). Putting some controls for line spacing and kern width will make them happy.
>
> You can do all of that with NSString + attributes, or alternatively NSAttributedString. You can also use Core Text, but it's generally harder to use than NSAttributedString and in this case doesn't give you anything you don't already have.
Core Text is harder. I would prefer NSString but line spacing by default is bad for NSString. Check this URL out, especially the picture.
http://stackoverflow.com/questions/10587606/core-text-a-bit-smaller-than-nsstring-drawinrect?lq=1
When bigger font size is use, the line spacing is worse for NSString.
>> The question is how to get maximum value of maximumLineHeight of a particular font ?
>
> I think that question is meaningless because there's no inherent "maximum" for a line height for any font or font size. There is a minimum, which is easily calculated from the NSFont - the simplest is probably to use -boundingRectForFont.size.height.
>
> But you are taking about line SPACING, not line height. This is additional space inserted between each line of wrapped text. It is a property of the paragraph style and is implemented by the NSLayoutManager. For your purposes, the [NSParagraphStyle lineHeightMultiple] is probably what you want - you can just set it to 1, 1.5, 2 etc and it will perform all the calculations for you. This is the property that the line spacing control in NSTextView affects.
>
>
> --Graham
OK, I will investigate NSParagraphStyle lineHeightMultiple. NSParagraphStyle lineSpacing would have work if negative value is allow.
-- Peter Chan
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden