> On Mar 8, 2017, at 4:17 PM, Daryle Walker <dary...@mac.com> wrote:
> 
> I tried:
> 
>>            // Set the paragraph formatting for the body...
>>            let bodyAdvancement = bodyFont.maximumAdvancement
>>            let bodyIndent = max(bodyAdvancement.width, 
>> bodyAdvancement.height) / 2.0
>>            let bodyParagraphStyle = NSParagraphStyle.default().mutableCopy() 
>> as! NSMutableParagraphStyle
>>            bodyParagraphStyle.headIndent = bodyIndent
>>            bodyParagraphStyle.lineBreakMode = .byWordWrapping
>> 
>>            // ...and separator
>>            let separatorParagraphStyle = bodyParagraphStyle.mutableCopy() 
>> as! NSMutableParagraphStyle
>>            let separatorTextBlock = NSTextBlock()
>>            separatorParagraphStyle.textBlocks.append(separatorTextBlock)
>> 
>>            // Set the body, but add a line for the initial separator
>>            let richSeparator = NSMutableAttributedString(string: " \n", 
>> attributes: [NSFontAttributeName: bodyFont, NSParagraphStyleAttributeName: 
>> separatorParagraphStyle])
>>            let richBody = NSMutableAttributedString(string: body, 
>> attributes: [NSFontAttributeName: bodyFont, NSParagraphStyleAttributeName: 
>> bodyParagraphStyle])
>>            result.append(richSeparator)
>>            result.append(richBody)
> 
> What I wanted: the separator line surrounded by a block.
> What I got: the separator and the body all surrounded by a block.
> 
> I originally had the separator and body in a single string, and used a range 
> to influence just the separator. This got the same result. I thought treating 
> the separator and body in separate strings first wouldn’t infect the body 
> with the text block, but it (illogically) does!
> 
> How do I end the influence of a block? Put -1 entries in the text-block array?

From tinkering around it seem like there is splatter dynamics when going across 
ranges of text with different “textBlocks” settings, UNLESS the second range 
uses no blocks. In just that case the second range copies the block policy of 
the first range. This makes no sense.

NSTextBlock is a rarely used class, so it’s hard to find sample code on it. I 
got some on <https://github.com/jyhong836/MarkdownAttribute>, but his/her 
handling code is spread over several files. But I don’t see how his/her code 
could work if the paragraph/block attribute doesn’t splatter upon range change. 
I don’t see that s/he is doing anything special to ensure a reset.

How is a paragraph defined in terms of applied paragraph styles? (Like if you 
fix an attributed-string’s paragraph styles, they are based on the setting of 
the “first” character.) Is it the first character after a line-break sequence 
to the end of the next line-break sequence?

— 
Daryle Walker
Mac, Internet, and Video Game Junkie
darylew AT mac DOT com 


_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to