diff --git a/src/hb-ot-shape-complex-indic.cc b/src/hb-ot-shape-complex-indic.cc index 6fea16443..01d6d965c 100644 --- a/src/hb-ot-shape-complex-indic.cc +++ b/src/hb-ot-shape-complex-indic.cc @@ -188,18 +188,24 @@ set_indic_properties (hb_glyph_info_t &info) /* The spec says U+0952 is OT_A. However, testing shows that Uniscribe - * treats U+0951..U+0954 all behave similarly. - * TESTS: + * treats a whole bunch of characters similarly. + * TESTS: For example, for U+0951: * U+092E,U+0947,U+0952 * U+092E,U+0952,U+0947 * U+092E,U+0947,U+0951 * U+092E,U+0951,U+0947 + * U+092E,U+0951,U+0952 + * U+092E,U+0952,U+0951 */ - if (unlikely (hb_in_range (u, 0x0951, 0x0954))) - cat = OT_A; - /* Same for the following... */ - if (unlikely (hb_in_range (u, 0xA8E0, 0xA8F1))) + if (unlikely (hb_in_ranges (u, 0x0951, 0x0952, + 0xA8E0, 0xA8F1) && + hb_in_ranges (u, 0x1CD0, 0x1CD2, + 0x1CD4, 0x1CE0, + 0x1CF4, 0x1CF4))) cat = OT_A; + /* The following act more like the Bindus. */ + else if (unlikely (hb_in_range (u, 0x0953, 0x0954))) + cat = OT_SM; if (unlikely (u == 0x17D1)) cat = OT_X;