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

Reply via email to