diff --git a/src/gen-indic-table.py b/src/gen-indic-table.py index a2004e4fc..0ff3ef4ac 100755 --- a/src/gen-indic-table.py +++ b/src/gen-indic-table.py @@ -458,7 +458,7 @@ for k, (cat, pos, block) in indic_data.items(): if block.startswith('Khmer') or block.startswith('Myanmar'): cat = position_to_category(pos) else: - pos = indic_matra_position(u, pos, block) + pos = indic_matra_position(k, pos, block) elif cat in smvd_categories: pos = 'SMVD'; indic_data[k] = (cat, pos, block) diff --git a/src/hb-ot-shaper-indic-table.cc b/src/hb-ot-shaper-indic-table.cc index 3d3698d73..8994f3ca5 100644 --- a/src/hb-ot-shaper-indic-table.cc +++ b/src/hb-ot-shaper-indic-table.cc @@ -109,9 +109,9 @@ static_assert (OT_VPst == M_Cat(VPst), ""); #define _POS_T POS_ABOVE_C /* 22 chars; ABOVE_C */ #define _POS_A POS_AFTER_MAIN /* 3 chars; AFTER_MAIN */ #define _POS_AP POS_AFTER_POST /* 50 chars; AFTER_POST */ -#define _POS_AS POS_AFTER_SUB /* 45 chars; AFTER_SUB */ +#define _POS_AS POS_AFTER_SUB /* 51 chars; AFTER_SUB */ #define _POS_C POS_BASE_C /* 833 chars; BASE_C */ -#define _POS_BS POS_BEFORE_SUB /* 31 chars; BEFORE_SUB */ +#define _POS_BS POS_BEFORE_SUB /* 25 chars; BEFORE_SUB */ #define _POS_B POS_BELOW_C /* 13 chars; BELOW_C */ #define _POS_X POS_END /* 71 chars; END */ #define _POS_R POS_POST_C /* 13 chars; POST_C */ @@ -276,7 +276,7 @@ static const uint16_t indic_table[] = { /* 0C28 */ _(C,C), _(X,X), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), /* 0C30 */ _(R,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), /* 0C38 */ _(C,C), _(C,C), _(X,X), _(X,X), _(N,X), _(S,SM), _(M,BS), _(M,BS), - /* 0C40 */ _(M,BS), _(M,AS), _(M,AS), _(M,AS), _(M,AS), _(X,X), _(M,BS), _(M,BS), + /* 0C40 */ _(M,BS), _(M,BS), _(M,BS), _(M,AS), _(M,AS), _(X,X), _(M,BS), _(M,BS), /* 0C48 */ _(M,BS), _(X,X), _(M,BS), _(M,BS), _(M,BS), _(H,T), _(X,X), _(X,X), /* 0C50 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(M,BS), _(M,BS), _(X,X), /* 0C58 */ _(C,C), _(C,C), _(C,C), _(X,X), _(X,X), _(C,C), _(X,X), _(X,X), @@ -295,9 +295,9 @@ static const uint16_t indic_table[] = { /* 0CA8 */ _(C,C), _(X,X), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), /* 0CB0 */ _(R,C), _(C,C), _(C,C), _(C,C), _(X,X), _(C,C), _(C,C), _(C,C), /* 0CB8 */ _(C,C), _(C,C), _(X,X), _(X,X), _(N,X), _(S,SM), _(M,BS), _(M,BS), - /* 0CC0 */ _(M,BS), _(M,BS), _(M,BS), _(M,BS), _(M,BS), _(X,X), _(M,BS), _(M,BS), - /* 0CC8 */ _(M,BS), _(X,X), _(M,BS), _(M,BS), _(M,BS), _(H,T), _(X,X), _(X,X), - /* 0CD0 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(M,BS), _(M,BS), _(X,X), + /* 0CC0 */ _(M,BS), _(M,BS), _(M,BS), _(M,AS), _(M,AS), _(X,X), _(M,BS), _(M,AS), + /* 0CC8 */ _(M,AS), _(X,X), _(M,AS), _(M,AS), _(M,BS), _(H,T), _(X,X), _(X,X), + /* 0CD0 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(M,AS), _(M,AS), _(X,X), /* 0CD8 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(C,C), _(C,C), _(X,X), /* 0CE0 */ _(V,C), _(V,C), _(M,BS), _(M,BS), _(X,X), _(X,X), _(GB,C), _(GB,C), /* 0CE8 */ _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), diff --git a/test/shape/data/in-house/fonts/e716f6bd00a108d186b7e9f47b4515565f784f36.ttf b/test/shape/data/in-house/fonts/e716f6bd00a108d186b7e9f47b4515565f784f36.ttf new file mode 100644 index 000000000..6786f7c4c Binary files /dev/null and b/test/shape/data/in-house/fonts/e716f6bd00a108d186b7e9f47b4515565f784f36.ttf differ diff --git a/test/shape/data/in-house/tests/indic-special-cases.tests b/test/shape/data/in-house/tests/indic-special-cases.tests index 86106589a..016f8947f 100644 --- a/test/shape/data/in-house/tests/indic-special-cases.tests +++ b/test/shape/data/in-house/tests/indic-special-cases.tests @@ -1,3 +1,4 @@ ../fonts/3cae6bfe5b57c07ba81ddbd54c02fe4f3a1e3bf6.ttf;;U+0CB0,U+0CCD,U+0C95;[gid1=0+1176|gid5=0+1161] ../fonts/3cae6bfe5b57c07ba81ddbd54c02fe4f3a1e3bf6.ttf;;U+0CB0,U+200D,U+0CCD,U+0C95;[gid2=0+1334|gid6=0+358] ../fonts/3cae6bfe5b57c07ba81ddbd54c02fe4f3a1e3bf6.ttf;;U+0CB0,U+0CCD,U+200D,U+0C95;[gid2=0+1334|gid6=0+358] +../fonts/e716f6bd00a108d186b7e9f47b4515565f784f36.ttf;;U+0C1A,U+0C3F,U+0C32,U+0C4D,U+0C15,U+0C42,U+0C30,U+0C4D;[civoweltelu=0+766|latelu=2+709|uuvowelsigntelu=2+661|kasubscripttelu=2+483|rahalanttelu=6+593]