Happy New Year, Behdad! Hey just wondering what do you think about Jonathan's patch (attached below)?
Best - Ed ---------- Forwarded message ---------- From: Jonathan Kew <jfkth...@googlemail.com> Date: Fri, Dec 27, 2013 at 12:09 PM Subject: Re: [HarfBuzz] Change in HarfBuzz after version 0.90 ? To: Ed Trager <ed.tra...@gmail.com>, Danh Hong <danhh...@gmail.com>, Behdad Esfahbod <beh...@behdad.org> Cc: Martin Hosken <mhos...@gmail.com>, Richard Wordingham < richard.wording...@ntlworld.com>, Theppitak Karoonboonyanan < theppi...@gmail.com>, Harfbuzz <harfbuzz@lists.freedesktop.org> On 27/12/13 16:21, Ed Trager wrote: > > Hi, Martin, Richard, and Danh Hong, > > With regard to forcing the re-ordering of the > UCD-enforced-but-totally-broken normalisation of TAI THAM TONE MARK plus > U+1A60, does the following approach in the OpenType feature file make > sense as the quickest and cleanest way to do it or not?: > > Basically the idea is to compose the out-of-order pair of characters > into a ligature; and then take that ligature and decompose it back to a > pair of characters that are in the correct order: > > If there is a better way to do this in OpenType, please enlighten me! > :-) I was trying to get this to work last night, so far without success: > > The trouble with this idea (or at least one trouble with it!) is that by the time your lookups have a chance to do anything, harfbuzz has already inserted dotted-circle glyphs because it treated the (normalized) sequence as being a "broken" cluster. The pattern for a "consonant syllable" in the SEAsian shaper allows for a <sakot, consonant> pair (i.e. a subjoined consonant) among the various possible syllable-tail items, but it does not allow for the <sakot> and <cons> to be separated by other marks, which is what the normalization does. You -might- be able to work around this by explicitly including the dotted circles in your ligature-composition rules, though that will make them all more cumbersome. The better way forward is for us to fix harfbuzz, as previously suggested. Possible patch attached; Behdad, wdyt?
diff --git a/src/hb-unicode-private.hh b/src/hb-unicode-private.hh index dd4d001..eac3144 100644 --- a/src/hb-unicode-private.hh +++ b/src/hb-unicode-private.hh @@ -107,8 +107,12 @@ HB_UNICODE_FUNCS_IMPLEMENT_CALLBACKS_SIMPLE unsigned int modified_combining_class (hb_codepoint_t unicode) { + /* XXX This hack belongs to the SEA shaper (for Tai Tham): + reorder SAKOT to ensure it comes after any tone marks. */ + if (unlikely (unicode == 0x1A60)) return 254; + /* XXX This hack belongs to the Myanmar shaper. */ - if (unicode == 0x1037) unicode = 0x103A; + if (unlikely (unicode == 0x1037)) unicode = 0x103A; return _hb_modified_combining_class[combining_class (unicode)]; }
_______________________________________________ HarfBuzz mailing list HarfBuzz@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/harfbuzz