[Arabic] Zero marks by GDEF, not Unicode category
authorBehdad Esfahbod <behdad@behdad.org>
Thu, 4 Apr 2013 18:25:36 +0000 (14:25 -0400)
committerBehdad Esfahbod <behdad@behdad.org>
Thu, 4 Apr 2013 18:25:36 +0000 (14:25 -0400)
Testing shows that this is closer to what Uniscribe does.

Reported by Khaled Hosny:

"""
commit 568000274c8edb5f41bc4f876ce21fcc8bdaeed8
...
This commit is causing a regression with Amiri, the string “هَٰذ” with
Uniscribe and HarfBuzz before this commit, gives:

[uni0630.fina=3+965|uni0670.medi=0+600|uni064E=0@-256,0+0|uni0647.init=0+926]

But now it gives:

[uni0630.fina=3+965|uni0670.medi=0+0|uni064E=0@-256,0+0|uni0647.init=0+926]

i.e. uni0670.medi is zeroed though it has a base glyph GDEF class.
"""

The test case is U+0647,U+064E,U+0670,U+0630 with Amiri.

src/hb-ot-shape-complex-arabic.cc

index 18b3d02..2f069d0 100644 (file)
@@ -352,6 +352,6 @@ const hb_ot_complex_shaper_t _hb_ot_complex_shaper_arabic =
   NULL, /* decompose */
   NULL, /* compose */
   setup_masks_arabic,
-  HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_UNICODE,
+  HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_GDEF,
   true, /* fallback_position */
 };