<div dir="ltr">Richard,<div><br></div><div>I am working on a new update of InSC for Unicode 8.0, which is available at <a href="https://github.com/roozbehp/unicode-data">https://github.com/roozbehp/unicode-data</a>.</div><div><br></div><div>After that, we'll push that into HarfBuzz.</div><div><br></div><div>It would be best if you suggest updates to the Unicode property instead, including potentially subdividing a property value. In this way, users of all implementations (including Microsoft's Universal Shaping Engine) would benefit.</div><div><br></div><div>Please take a look and send me or UTC your suggestions (or file bugs at <a href="https://github.com/roozbehp/unicode-data/issues">https://github.com/roozbehp/unicode-data/issues</a>). If there was still a need to change something in HarfBuzz, we can do that too.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Feb 23, 2015 at 4:31 PM, Richard Wordingham <span dir="ltr"><<a href="mailto:richard.wordingham@ntlworld.com" target="_blank">richard.wordingham@ntlworld.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Sun, 1 Feb 2015 01:39:42 +0000<br>
Richard Wordingham <<a href="mailto:richard.wordingham@ntlworld.com">richard.wordingham@ntlworld.com</a>> wrote:<br>
<br>
> I've been having some problems with spurious dotted circles in various<br>
> versions of HarfBuzz, and I thought I would share before proposing a<br>
> complete solution to Behdad.<br>
<br>
</span>Well, no-one has shown any interest, so I will go ahead with my<br>
proposals/requests.  For ease of reference, I have deleted little from<br>
my original post.<br>
<span class=""><br>
> I've been looking at 3 versions of HarfBuzz:<br>
<br>
> 'LibreOffice 4.3.4', i.e. whatever (clearly old) version of HarfBuzz<br>
> is in that version of LibreOffice.<br>
<br>
</span>When checking the version later, I saw 'LibreOffice 4.3.3.2', so it's<br>
possible LbreOffice 4.3.4 is different.<br>
<span class=""><br>
> 'HarfBuzz 0.9.38+', i.e. the latest sources at some time today.<br>
<br>
</span>Some time on Saturday 31 January 2015 might be more precise.<br>
<div><div class="h5"><br>
> 'New ISC', i.e. HarfBuzz 0.9.38+ plus changes to Indic Syllable<br>
> Category (ISC) as I suggested on the Unicode list on 17 May 2014 (post<br>
> 'Indic Syllable Categories'<br>
> <a href="http://www.unicode.org/mail-arch/unicode-ml/y2014-m05/0038.html" target="_blank">http://www.unicode.org/mail-arch/unicode-ml/y2014-m05/0038.html</a>).<br>
<br>
> These categories are defined in HarfBuzz by file<br>
> hb-ot-shape-complex-indic-table.cc.  I was about to formally submit my<br>
> suggestions to the Unicode Technical Committee, but then I discovered<br>
> that the changes would adversely affect HarfBuzz.<br>
<br>
> The first problem arose with U+1A7B MAI SAM.  While there<br>
> is no problem with its uses to indicate word (or phrase) repetition by<br>
> marking the last akshara and to indicate the merger of two 1-consonant<br>
> vowelless consonant stacks, a dotted circle occurs in the example<br>
> example /thanon/ <U+1A33 HIGH THA, U+1A60 SAKOT, U+1A36 NA, U+1A7B MAI<br>
> SAM, U+1A6B SIGN O, U+1A41 RA>.  The problem is that MAI SAM has an<br>
> ISC of 'other', so U+25CC in inserted before SIGN O.  Making MAI SAM a<br>
> 'dependent vowel' as I had suggested fixed this problem.<br>
<br>
> The second problem arose with U+1A7A RA HAAM, and could also arise<br>
> with U+1A7C KARAN.  The problem is that with the influx of foreign<br>
> loans into Thai, in Thailand there are now clusters of two consonants<br>
> in which the *first* consonant cluster is silent.  In most cases,<br>
> there is no way for Tai Tham to show which is silent, but when the<br>
> tail of the second consonant rises to the hanging baseline, the<br>
> placement of the cancellation marks tends to show which consonant is<br>
> cancelled.  A (hpyothetical) example is the English surname 'Dawes',<br>
> which is represented with three consonants in Thai.  The<br>
> transliteration of 'w' is marked as silent.  Conversely, 'Howes'<br>
> would be written with the transliteration of the 's' as silent.  This<br>
> prevents the font deciding the placement of the cancellation mark on<br>
> a cluster by cluster basis. Following the lead of Thai, this would be<br>
> written <U+1A2F DA, U+1A6C SIGN OA BELOW, U+1A45 WA, U+1A7A RA HAAM,<br>
> U+1A60 SAKOT, U+1A48 HIGH SA>.<br>
<br>
> LibreOffice 4.3.4 splits the cluster into three syllables, <WA,<br>
> SAKOT>, <RA HAAM> and <HIGH SA>, and the problem is simply that the<br>
</div></div>> SAKOT>subscript<br>
<span class="">> form cannot be generated until after the syllable boundaries are<br>
> dropped.  This is simply a variant of the font-soluble but for the<br>
> future eliminated tone and SAKOT problem.<br>
><br>
> HarfBuzz 0.9.38+ also splits the cluster into three syllables, <WA>,<br>
> <RA HAAM>, <U+25CC, SAKOT, HIGH SA> because RA HAAM has an ISC of<br>
> 'other'.  New ISC marks RA HAAM as a 'pure killer'.  Unfortunately,<br>
> this does not change the misdeduced syllable structure.  I think the<br>
> analysis needs to treat the sequence 'pure killer', 'invisible<br>
> stacker' as being within a single syllable.  Is this too much to ask<br>
> for?<br>
><br>
> The third problem arose with U+1A7F TAI THAM COMBINING CRYPTOGRAMMIC<br>
> DOT, and possibly is not a real problem.  I have too few examples of<br>
> the character's use.  CRYPTOGRAMMIC DOT currently has an ISC of<br>
> 'other', so LibreOffice 4.3.4 and HarfBuzz 0.9.38+ split the sequence<br>
> <U+1A49 HIGH HA, U+1A7F CRYPTOGRAMMIC DOT, U+1A63 SIGN AA> into three<br>
> syllables, <HIGH HA>, <CRYPTOGRAMMIC DOT> and <U+25CC, SIGN AA>.  It<br>
> is possible that the input sequence will not occur in the wild.  In<br>
> 'New ISC', CRYPTOGRAMMIC DOT is reclassified as a 'nukta', and the<br>
> sequence is treated as a single syllable, as desired.<br>
<br>
</span>The first (MAI SAM) and third (CRYPTOGRAMMIC DOT) problems are solved<br>
by recategorising the characters as interior members of the syllable,<br>
with Indic Syllabic categories 'matra' and 'nukta' respectively.  I<br>
recommend that HarfBuzz make these changes, in the file<br>
hb-ot-shape-complex-indic-table.cc.<br>
<br>
MAI SAM is an odd matra, as its placement is determined by its phonetic<br>
role, not its visual position.  It is worth noting that this mark is a<br>
superscript version of U+1A91 TAI THAM THAM DIGIT TWO, and that its<br>
core meaning is that there are two of something, not just one of<br>
something.  A classification as 'Consonant_medial' would work just as<br>
well.<br>
<br>
For the second problem, an analogue can be found in the Khmer<br>
sequences <U+179C KHMER LETTER VO, U+17CD KHMER SIGN TOANDAKHIAT,<br>
U+17D2 KHMER SING COENG, U+179F KHMER LETTER SA> and its anagram<br>
<U+179C, U+17D2, U+179F, U+17CD>, which render without complaint and<br>
slightly differently in both HarfBuzz and Windows 7 (other versions not<br>
tested).<br>
<br>
Now, at present, U+17CD is classified as 'Vowel_Dependent' by an<br>
explicit override in gen-indic-table.py, the generator of<br>
hb-ot-shape-complex-indic-table.cc.  The same treatment would suffice<br>
for U+1A7A RA HAAM and U+1A7C KARAN.<br>
<span class=""><br>
> The next problem was with the admittedly unusual writing <U+1A93 THAM<br>
> DIGIT THREE, U+1A60 SAKOT, U+1A34 LOW TA> 'three times'.  None of the<br>
> three versions allowed the digit to be treated as a consonant base,<br>
> and so U+25CC was introduced before SAKOT.  Does the SEA engine need<br>
> to be specifically instructed to treat Tai Tham decimal numbers as<br>
> potential character bases?<br>
<br>
</span>The answer, I see, is that it does need to be so instructed.<br>
<span class=""><br>
> Some of my changes for 'New ISC' had bad consequences.  Changing<br>
> U+1A53 TAI THAM LETTER LAE from a letter to an independent vowel<br>
> resulted in <U+1A29 LOW CA, U+1A60 SAKOT, U+1A53 LAE> being split into<br>
> two syllables, <LOW CA, SAKOT> and <LAE>.  While the font can work<br>
> round this, this is not good.<br>
<br>
</span>Occasional subscripting of ancient independent vowels has been<br>
reported, and I think HarfBuzz should support this behaviour.<br>
<span class=""><br>
> Changing U+1A74 TAI THAM SIGN MAI KANG from 'dependent vowel' to<br>
> 'bindu' resulted in the word <U+1A37 BA, U+1A74 MAI KANG, U+1A75<br>
> TONE-1> being split into two syllables, <BA, MAI KANG> and <U+25CC,<br>
> TONE-1>.  This seems odd;  U+0ECD LAO NIGGAHITA is classified by<br>
> Unicode as 'bindu', yet regularly has tone marks mounted on it.  Is<br>
> the syllable splitting here a HarfBuzz error?<br>
<br>
</span>The problem with anusvara (Indic syllabic category  'bindu') is that<br>
there are two types - those that terminate the syllable (a subgroup of<br>
Indic syllabic category type OT_SM), and those that are more matra-like<br>
(the rare category type OT_A).  The file<br>
hb-ot-shape-complex-indic-table.cc maps them to the category type<br>
OT_SM, but the SEA syllable analyser is set up for category OT_A.<br>
At present, assignments to Indic category OT_A are done by<br>
executable code checking the character codes, and many of the<br>
characters in this group are in fact Vedic tone marks!<br>
<br>
I think this is an area where HarfBuzz will just have to override the<br>
Unicode settings - the general categorisations don't help with layout<br>
constraints.<br>
<div class="HOEnZb"><div class="h5"><br>
Richard.<br>
_______________________________________________<br>
HarfBuzz mailing list<br>
<a href="mailto:HarfBuzz@lists.freedesktop.org">HarfBuzz@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/harfbuzz" target="_blank">http://lists.freedesktop.org/mailman/listinfo/harfbuzz</a><br>
</div></div></blockquote></div><br></div>