<div dir="ltr"><div class="gmail_quote"><div dir="ltr">On Fri, Nov 2, 2018 at 4:48 PM Nathan Willis <<a href="mailto:nwillis@glyphography.com">nwillis@glyphography.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>Hiyo. I'm revisiting the 'clusters' chapter in the User Manual, to make it more consistent with the rest and hopefully easier to understand. Rereading it has raised some questions....</div><div><br></div><div>1) The opening sentence says "a cluster is a sequence of code points [...]"</div><div> ...which might be true for the initial buffer contents, but all the interesting stuff happens after replacing them with glyphs. So that will certainly need some changing. I know it's a can of worms to open, but what if we said "characters" here? Explaining the relationship between code points, characters, and glyphs can be tricky, but then again explaining clusters to new readers is already difficult....</div></div></div></div></blockquote><div><br></div><div>Right.  "code points" by itself doesn't mean anything.  They might be Unicode code points, aka characters, or glyph code points, aka glyphs.</div><div><br></div><div>A cluster refers to a sequence of characters and their corresponding glyphs.  Or the other way around, depending on your taste.<br></div><div> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>2) "Most clients will use UTF-8, UTF-16, or UTF-32 indices, but the actual number does not matter" ... is "indices" here referring to the buffer contents (code points)? <br></div></div></div></div></blockquote><div><br></div><div>Refers to position in the text that was passed to hb_buffer_add_utf8/16/32.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div></div><div>3) "Moreover, it is not required for the
    cluster values to be monotonically increasing. Most of HarfBuzz's tests are performed on monotonically increasing cluster numbers but, there is no such assumption in the code itself."</div></div></div></div></blockquote><div><br></div><div>Some of that sentence is implementation detals and can go.  The first sentence is enough.</div><div> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div> ... This is the big one. The examples that follow in subsequent subsections hinge on the fact that the cluster values need to be monotonically increasing. Keeping them monotonic & increasing is given as the reason that clusters get merged when reordering (levels 0 and 1). So this sentence sticks out. I'm not sure how to resolve that discrepancy; can anyone explain how both of those pieces are supposed to fit together?</div></div></div></div></blockquote><div><br></div><div>There's two things:</div><div><br></div><div>  1. Whether or not the input clusters are monotonic,</div><div><br></div><div>  2. Whether buffer cluster-level is set to any of the monotonic enum values.</div><div><br></div><div>The promise is that *if* both of those are true, then the output cluster values are monotonic.  If any of the above is false, there's no guarantee.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>Finally, I am adding a short "why your software cares about clusters" paragraph to the beginning. I've got cursor positioning, coloring diacritics, and line breaking in mind; anything else worth mentioning?</div></div></div></div></blockquote><div><br></div><div>Text selection.  Is same as positioning but still.</div><div> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>Thanks,</div><div>Nate<br>-- <br><div dir="ltr" class="m_-888508226882398171gmail_signature"><div dir="ltr">nathan.p.willis<br><a href="mailto:nwillis@glyphography.com" target="_blank">nwillis@glyphography.com</a><a href="http://identi.ca/n8" target="_blank"></a></div></div></div></div></div></div>
_______________________________________________<br>
HarfBuzz mailing list<br>
<a href="mailto:HarfBuzz@lists.freedesktop.org" target="_blank">HarfBuzz@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/harfbuzz" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/harfbuzz</a><br>
</blockquote></div><br clear="all"><br>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature">behdad<br><a href="http://behdad.org/" target="_blank">http://behdad.org/</a></div></div>