Question

I see that there is an attribute name (NSParagraphStyleAttributeName) for applying paragraph styles to text in Cocoa. Text is stored in an NSAttributedString, but what defines a "paragraph" in that string -- is it the newline character \n? Other characters? If it's a \n, then how do you create a new line without starting a new paragraph. And lastly, when you attach a ParagraphStyle to the string, do you have to use the exact range of the whole paragraph, or can you put it on any sub-range in the paragraph. If it can be a sub-range, how does the system handle two or more ParagraphStyles on the same paragraph?

thanks, Rob

Was it helpful?

Solution

I got an answer from Douglas on Apple's cocoa-dev mailing list:

http://lists.apple.com/archives/Cocoa-dev/2010/Dec/msg00347.html

I'll copy what he wrote here:

Any of the standard paragraph separators can be used (\n, \r, \r\n, Unicode paragraph separator). Use the Unicode line separator character to start a new line without a paragraph break. It is best to apply a paragraph style to an entire paragraph; if that is not done, then the paragraph style attribute will be automatically fixed at attribute fixing time so that it is constant over each paragraph range, because that is needed at layout time.

OTHER TIPS

the best way in iOS from my experience is to use

@"\n\r";

i found inconsistent behaviour with just using \n or even 0x2029 (which should be the equivalent of NSParagraphSeparatorCharacter (not defined in iOS))

the problems emerged when using NSAttributedString and NSParagraphStyle... as when using the @"\n" or (0x2029) the setParagraphSpacing was ignored by other than the first paragraph... using @"\n\r" got the paragraphes right

It might be worth mentioning that Apple's String Programming Guide has a section on Paragraph and Line Breaks, and that NSString will give you the paragraph ranges without your having to search for paragraph separators.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top