<html><head></head><body><div style="font-family: Verdana;font-size: 12.0px;"><div>Thanks for the clarification.</div>

<div> 
<div> 
<div name="quote" style="margin:10px 5px 5px 10px; padding: 10px 0 10px 10px; border-left:2px solid #C3D9E5; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">
<div style="margin:0 0 10px 0;"><b>Sent:</b> Thursday, December 07, 2023 at 6:56 PM<br/>
<b>From:</b> "Manish Goregaokar via Unicode" <unicode@corp.unicode.org><br/>
<b>To:</b> "prospero" <prospero@cyber-wizard.com><br/>
<b>Cc:</b> "Unicode" <unicode@corp.unicode.org><br/>
<b>Subject:</b> Re: Question regarding TR-29</div>

<div name="quoted-content">
<div>
<div>Hi!
<div> </div>

<div>I think a crucial thing to note about interpreting these rules is that they must be applied in order, WB4 can only be applied after all of the WB3s, etc. In general the logical model is that each rule is applied to the entire input string before moving on to the next rule. In practice, implementations tend to come up with a way of doing this in one or a handful of loops by retaining some careful state.</div>

<div> </div>

<div>The sequences `WSegSpace Format* WSegSpace` or `ZWJ Extend Ext_Pict` won't have do-not-breaks generated by WB3d/WB3c because those rules apply before the "ignore Extend/Format"</div>

<div> </div>

<div>Since no rules after WB4 mention Extended_Pictographic or WSegSpace, WB4 does not need to try to include them in the "except" clause.</div>

<div> </div>

<div>Hope this helps</div>

<div> </div>

<div>Thanks,</div>

<div>-Manish</div>

<div> </div>
 

<div class="gmail_quote">
<div class="gmail_attr">On Wed, Dec 6, 2023, 4:17 PM prospero via Unicode <<a href="mailto:unicode@corp.unicode.org" onclick="" target="_blank">unicode@corp.unicode.org</a>> wrote:</div>

<blockquote class="gmail_quote" style="margin: 0 0 0 0.8ex;border-left: 1.0px rgb(204,204,204) solid;padding-left: 1.0ex;"><br/>
<a href="http://unicode.org/reports/tr29" target="_blank">unicode.org/reports/tr29</a><br/>
 <br/>
The WB4 rule for word breaks:<br/>
 <br/>
> Ignore Format and Extend characters, except after sot, CR, LF, and Newline. (See Section 6.2, Replacing Ignore Rules[<a href="https://unicode.org/reports/tr29/#Grapheme_Cluster_and_Format_Rules]" target="_blank">https://unicode.org/reports/tr29/#Grapheme_Cluster_and_Format_Rules]</a>.)<br/>
> This also has the effect of: Any × (Format | Extend | ZWJ)<br/>
<br/>
seems incomplete and ambiguous. First, the "except after" part needs to apply to WSegSpace also, otherwise tests fail. And the handling of WB3c seems contradicted by the tests, e.g., the one on line 1158:<br/>
<br/>
÷ 200D × 0308 ÷ 231A ÷  #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (     Extend_FE) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]<br/>
<br/>
seems to contradict it, since ignoring the 0308 (Extend_FE) should yield a ZWJ_FE + ExtPict, which should not break, but the test requires a break. If the tests are dispositive, could TR-29 be better clarified to reflect them?<br/>
 </blockquote>
</div>
</div>
</div>
</div>
</div>
</div>
</div></div></body></html>