src/gen-arabic-table.py | 14 ++-- src/gen-indic-table.py | 14 ++-- src/hb-ot-layout.cc | 15 ++++ src/hb-ot-layout.h | 7 ++ src/hb-ot-shape-complex-arabic-table.hh | 106 +++++++++++++++++++++++++------- src/hb-ot-shape-complex-arabic.cc | 34 +--------- src/hb-ot-shape-complex-indic-table.cc | 12 +-- 7 files changed, 133 insertions(+), 69 deletions(-)
New commits: commit 911ca38645bd51764e7859bc482319e8f6d2f710 Author: Behdad Esfahbod <[email protected]> Date: Tue Jun 24 10:20:36 2014 -0600 Add back API removed recently Add hb_ot_layout_language_get_required_feature_index() again, which is used in Pango. This was removed in da132937989acb4d8ca9bd41c79f98750e7dda30 in favor of hb_ot_layout_language_get_required_feature(). API changes: - Added hb_ot_layout_language_get_required_feature_index back. diff --git a/src/hb-ot-layout.cc b/src/hb-ot-layout.cc index e414ddc..661d90e 100644 --- a/src/hb-ot-layout.cc +++ b/src/hb-ot-layout.cc @@ -321,6 +321,21 @@ hb_ot_layout_script_find_language (hb_face_t *face, } hb_bool_t +hb_ot_layout_language_get_required_feature_index (hb_face_t *face, + hb_tag_t table_tag, + unsigned int script_index, + unsigned int language_index, + unsigned int *feature_index) +{ + return hb_ot_layout_language_get_required_feature (face, + table_tag, + script_index, + language_index, + feature_index, + NULL); +} + +hb_bool_t hb_ot_layout_language_get_required_feature (hb_face_t *face, hb_tag_t table_tag, unsigned int script_index, diff --git a/src/hb-ot-layout.h b/src/hb-ot-layout.h index 32ce762..87171d7 100644 --- a/src/hb-ot-layout.h +++ b/src/hb-ot-layout.h @@ -140,6 +140,13 @@ hb_ot_layout_script_find_language (hb_face_t *face, unsigned int *language_index); hb_bool_t +hb_ot_layout_language_get_required_feature_index (hb_face_t *face, + hb_tag_t table_tag, + unsigned int script_index, + unsigned int language_index, + unsigned int *feature_index); + +hb_bool_t hb_ot_layout_language_get_required_feature (hb_face_t *face, hb_tag_t table_tag, unsigned int script_index, commit 89e4946929a8cd2359c7d76fa9272d5604243002 Author: Behdad Esfahbod <[email protected]> Date: Sun Jun 22 11:32:13 2014 -0600 Add new IndicSyllabicCategory short forms for Unicode 7.0 diff --git a/src/gen-indic-table.py b/src/gen-indic-table.py index 2c87ccf..6891424 100755 --- a/src/gen-indic-table.py +++ b/src/gen-indic-table.py @@ -80,6 +80,10 @@ print # Shorten values short = [{ "Bindu": 'Bi', + "Cantillation_Mark": 'Ca', + "Joiner": 'ZWJ', + "Non_Joiner": 'ZWNJ', + "Number": 'Nd', "Visarga": 'Vs', "Vowel": 'Vo', "Vowel_Dependent": 'M', commit dcee838e89c2863c2fda4e8f098e720637e02335 Author: Behdad Esfahbod <[email protected]> Date: Sun Jun 22 11:29:59 2014 -0600 Minor diff --git a/src/gen-arabic-table.py b/src/gen-arabic-table.py index a5ec15a..c484708 100755 --- a/src/gen-arabic-table.py +++ b/src/gen-arabic-table.py @@ -73,7 +73,7 @@ def print_joining_table(f): num = len(values) all_blocks = set([blocks[u] for u in uu]) - last = -1 + last = -100000 ranges = [] for u in uu: if u - last <= 1+16*5: diff --git a/src/gen-indic-table.py b/src/gen-indic-table.py index eea345f..2c87ccf 100755 --- a/src/gen-indic-table.py +++ b/src/gen-indic-table.py @@ -150,7 +150,7 @@ def print_block (block, start, end, data): uu = data.keys () uu.sort () -last = -1 +last = -100000 num = 0 offset = 0 starts = [] commit f2ad86e6053fa87ab188c36edc3d98c92324c049 Author: Behdad Esfahbod <[email protected]> Date: Sat Jun 21 15:31:10 2014 -0600 [indic-table-gen] Minor diff --git a/src/gen-indic-table.py b/src/gen-indic-table.py index e21b5e7..eea345f 100755 --- a/src/gen-indic-table.py +++ b/src/gen-indic-table.py @@ -87,14 +87,14 @@ short = [{ },{ "Not_Applicable": 'x', }] -all_shorts = [[],[]] +all_shorts = [{},{}] # Add some of the values, to make them more readable, and to avoid duplicates for i in range (2): for v,s in short[i].items (): - all_shorts[i].append (s) + all_shorts[i][s] = v what = ["INDIC_SYLLABIC_CATEGORY", "INDIC_MATRA_CATEGORY"] what_short = ["ISC", "IMC"] @@ -109,8 +109,8 @@ for i in range (2): else: s = ''.join ([c for c in v_no_and if ord ('A') <= ord (c) <= ord ('Z')]) if s in all_shorts[i]: - raise Exception ("Duplicate short value alias", v, s) - all_shorts[i].append (s) + raise Exception ("Duplicate short value alias", v, all_shorts[i][s]) + all_shorts[i][s] = v short[i][v] = s print "#define %s_%s %s_%s %s/* %3d chars; %s */" % \ (what_short[i], s, what[i], v.upper (), \ commit 2ec62279aab8c2263f17ffbc7c6f74304674f9a8 Author: Behdad Esfahbod <[email protected]> Date: Sat Jun 21 15:25:59 2014 -0600 [indic-table] Update to Unicode 6.3.0 Was from 6.2.0. It's a no-op. Committing for the record. diff --git a/src/hb-ot-shape-complex-indic-table.cc b/src/hb-ot-shape-complex-indic-table.cc index a6d805e..14637fa 100644 --- a/src/hb-ot-shape-complex-indic-table.cc +++ b/src/hb-ot-shape-complex-indic-table.cc @@ -6,12 +6,12 @@ * * on files with these headers: * - * # IndicSyllabicCategory-6.2.0.txt - * # Date: 2012-05-15, 21:12:00 GMT [KW] - * # IndicMatraCategory-6.2.0.txt - * # Date: 2012-05-15, 21:10:00 GMT [KW] - * # Blocks-6.2.0.txt - * # Date: 2012-05-14, 22:42:00 GMT [KW, LI] + * # IndicSyllabicCategory-6.3.0.txt + * # Date: 2013-08-01, 21:17:00 GMT [KW, LI] + * # IndicMatraCategory-6.3.0.txt + * # Date: 2013-01-02, 08:33:00 GMT [KW, LI] + * # Blocks-6.3.0.txt + * # Date: 2012-12-02, 09:45:00 GMT [KW, LI] */ #include "hb-ot-shape-complex-indic-private.hh" commit 5d4d7384efa97a30893ad28b9ad9a994722de12c Author: Behdad Esfahbod <[email protected]> Date: Sat Jun 21 14:53:21 2014 -0600 Minor: format diff --git a/src/hb-ot-shape-complex-arabic.cc b/src/hb-ot-shape-complex-arabic.cc index 878f97f..b7aa694 100644 --- a/src/hb-ot-shape-complex-arabic.cc +++ b/src/hb-ot-shape-complex-arabic.cc @@ -61,8 +61,11 @@ static unsigned int get_joining_type (hb_codepoint_t u, hb_unicode_general_categ if (likely (j_type != JOINING_TYPE_X)) return j_type; - return (FLAG(gen_cat) & (FLAG(HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK) | FLAG(HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK) | FLAG(HB_UNICODE_GENERAL_CATEGORY_FORMAT))) ? - JOINING_TYPE_T : JOINING_TYPE_U; + return (FLAG(gen_cat) & + (FLAG(HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK) | + FLAG(HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK) | + FLAG(HB_UNICODE_GENERAL_CATEGORY_FORMAT)) + ) ? JOINING_TYPE_T : JOINING_TYPE_U; } static const hb_tag_t arabic_features[] = commit 44243ae5902cc420e6bf6ec2fca2584ba93ff2fb Author: Behdad Esfahbod <[email protected]> Date: Sat Jun 21 14:19:34 2014 -0600 [arabic-table] Update to Unicode 7.0 Old table was from 6.2. Remove hard-coded Mongolian and Phags-pa data. This completes support for new scripts Manichian and Psaltar Pahlavi. diff --git a/src/hb-ot-shape-complex-arabic-table.hh b/src/hb-ot-shape-complex-arabic-table.hh index 77dfc6e..ae7011a 100644 --- a/src/hb-ot-shape-complex-arabic-table.hh +++ b/src/hb-ot-shape-complex-arabic-table.hh @@ -6,10 +6,10 @@ * * on files with these headers: * - * # ArabicShaping-6.2.0.txt - * # Date: 2012-05-15, 21:05:00 GMT [KW] - * # Blocks-6.2.0.txt - * # Date: 2012-05-14, 22:42:00 GMT [KW, LI] + * # ArabicShaping-7.0.0.txt + * # Date: 2014-02-14, 21:00:00 GMT [RP, KW, LI] + * # Blocks-7.0.0.txt + * # Date: 2014-04-03, 23:23:00 GMT [RP, KW] * UnicodeData.txt does not have a header. */ @@ -22,6 +22,7 @@ #define U JOINING_TYPE_U #define A JOINING_GROUP_ALAPH #define DR JOINING_GROUP_DALATH_RISH +#define L JOINING_TYPE_L #define C JOINING_TYPE_C #define D JOINING_TYPE_D @@ -32,7 +33,7 @@ static const uint8_t joining_table[] = /* Arabic */ - /* 0600 */ U,U,U,U,U,X,X,X,U,X,X,U,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, + /* 0600 */ U,U,U,U,U,U,X,X,U,X,X,U,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, /* 0620 */ D,U,R,R,R,R,D,R,D,R,D,D,D,D,D,R,R,R,R,D,D,D,D,D,D,D,D,D,D,D,D,D, /* 0640 */ C,D,D,D,D,D,D,D,R,D,D,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, /* 0660 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,D,D,X,R,R,R,U,R,R,R,D,D,D,D,D,D,D,D, @@ -75,15 +76,53 @@ static const uint8_t joining_table[] = /* Arabic Extended-A */ - /* 08A0 */ D,X,D,D,D,D,D,D,D,D,R,R,R, + /* 08A0 */ D,D,D,D,D,D,D,D,D,D,R,R,R,U,R,D,D,R,R, -#define joining_offset_0x200c 685 +#define joining_offset_0x1806 691 + + /* Mongolian */ + + /* 1800 */ U,D,X,X,C,X,X,X,U,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, + /* 1820 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D, + /* 1840 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D, + /* 1860 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,X,X,X,X,X,X,X,X, + /* 1880 */ U,U,U,U,U,U,U,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D, + /* 18A0 */ D,D,D,D,D,D,D,D,D,X,D, + +#define joining_offset_0x200c 856 /* General Punctuation */ /* 2000 */ U,C, -}; /* Table items: 687; occupancy: 45% */ +#define joining_offset_0x2066 858 + + /* General Punctuation */ + + /* 2060 */ U,U,U,U, + +#define joining_offset_0xa840 862 + + /* Phags-pa */ + + /* A840 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D, + /* A860 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,L,U, + +#define joining_offset_0x10ac0 914 + + /* Manichaean */ + + /* 10AC0 */ D,D,D,D,D,R,U,R,U,R,R,U,U,L,R,R,R,R,R,D,D,D,D,L,D,D,D,D,D,R,D,D, + /* 10AE0 */ D,R,U,U,R,X,X,X,X,X,X,D,D,D,D,R, + +#define joining_offset_0x10b80 962 + + /* Psalter Pahlavi */ + + /* 10B80 */ D,R,D,R,R,R,D,D,D,R,D,D,R,D,R,R,D,R,X,X,X,X,X,X,X,X,X,X,X,X,X,X, + /* 10BA0 */ X,X,X,X,X,X,X,X,X,R,R,R,R,D,D,U, + +}; /* Table items: 1010; occupancy: 57% */ static unsigned int @@ -92,11 +131,25 @@ joining_type (hb_codepoint_t u) switch (u >> 12) { case 0x0: - if (0x0600 <= u && u <= 0x08AC) return joining_table[u - 0x0600 + joining_offset_0x0600]; + if (0x0600 <= u && u <= 0x08B2) return joining_table[u - 0x0600 + joining_offset_0x0600]; + break; + + case 0x1: + if (0x1806 <= u && u <= 0x18AA) return joining_table[u - 0x1806 + joining_offset_0x1806]; break; case 0x2: if (0x200C <= u && u <= 0x200D) return joining_table[u - 0x200C + joining_offset_0x200c]; + if (0x2066 <= u && u <= 0x2069) return joining_table[u - 0x2066 + joining_offset_0x2066]; + break; + + case 0xA: + if (0xA840 <= u && u <= 0xA873) return joining_table[u - 0xA840 + joining_offset_0xa840]; + break; + + case 0x10: + if (0x10AC0 <= u && u <= 0x10AEF) return joining_table[u - 0x10AC0 + joining_offset_0x10ac0]; + if (0x10B80 <= u && u <= 0x10BAF) return joining_table[u - 0x10B80 + joining_offset_0x10b80]; break; default: @@ -110,6 +163,7 @@ joining_type (hb_codepoint_t u) #undef U #undef A #undef DR +#undef L #undef C #undef D diff --git a/src/hb-ot-shape-complex-arabic.cc b/src/hb-ot-shape-complex-arabic.cc index 4ce8478..878f97f 100644 --- a/src/hb-ot-shape-complex-arabic.cc +++ b/src/hb-ot-shape-complex-arabic.cc @@ -61,28 +61,6 @@ static unsigned int get_joining_type (hb_codepoint_t u, hb_unicode_general_categ if (likely (j_type != JOINING_TYPE_X)) return j_type; - /* Mongolian joining data is not in ArabicJoining.txt yet. */ - if (unlikely (hb_in_range<hb_codepoint_t> (u, 0x1800, 0x18AF))) - { - if (unlikely (hb_in_range<hb_codepoint_t> (u, 0x1880, 0x1886))) - return JOINING_TYPE_U; - - /* All letters, SIBE SYLLABLE BOUNDARY MARKER, and NIRUGU are D */ - if ((FLAG(gen_cat) & (FLAG (HB_UNICODE_GENERAL_CATEGORY_OTHER_LETTER) | - FLAG (HB_UNICODE_GENERAL_CATEGORY_MODIFIER_LETTER))) - || u == 0x1807 || u == 0x180A) - return JOINING_TYPE_D; - } - - /* 'Phags-pa joining data is not in ArabicJoining.txt yet. */ - if (unlikely (hb_in_range<hb_codepoint_t> (u, 0xA840, 0xA872))) - { - if (unlikely (u == 0xA872)) - return JOINING_TYPE_L; - - return JOINING_TYPE_D; - } - return (FLAG(gen_cat) & (FLAG(HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK) | FLAG(HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK) | FLAG(HB_UNICODE_GENERAL_CATEGORY_FORMAT))) ? JOINING_TYPE_T : JOINING_TYPE_U; } commit cd86ab9b4f4d7bd4f563be64a83714fc8fb395d7 Author: Behdad Esfahbod <[email protected]> Date: Sat Jun 21 14:10:38 2014 -0600 [arabic-table] Add ZWJ/ZWNJ now that table is segmented diff --git a/src/gen-arabic-table.py b/src/gen-arabic-table.py index ce80cc8..a5ec15a 100755 --- a/src/gen-arabic-table.py +++ b/src/gen-arabic-table.py @@ -52,8 +52,6 @@ def print_joining_table(f): continue u = int (fields[0], 16) - if u == 0x200C or u == 0x200D: - continue if fields[3] in ["ALAPH", "DALATH RISH"]: value = "JOINING_GROUP_" + fields[3].replace(' ', '_') diff --git a/src/hb-ot-shape-complex-arabic-table.hh b/src/hb-ot-shape-complex-arabic-table.hh index 0a61d8f..77dfc6e 100644 --- a/src/hb-ot-shape-complex-arabic-table.hh +++ b/src/hb-ot-shape-complex-arabic-table.hh @@ -77,7 +77,13 @@ static const uint8_t joining_table[] = /* 08A0 */ D,X,D,D,D,D,D,D,D,D,R,R,R, -}; /* Table items: 685; occupancy: 45% */ +#define joining_offset_0x200c 685 + + /* General Punctuation */ + + /* 2000 */ U,C, + +}; /* Table items: 687; occupancy: 45% */ static unsigned int @@ -89,6 +95,10 @@ joining_type (hb_codepoint_t u) if (0x0600 <= u && u <= 0x08AC) return joining_table[u - 0x0600 + joining_offset_0x0600]; break; + case 0x2: + if (0x200C <= u && u <= 0x200D) return joining_table[u - 0x200C + joining_offset_0x200c]; + break; + default: break; } diff --git a/src/hb-ot-shape-complex-arabic.cc b/src/hb-ot-shape-complex-arabic.cc index 61a55ef..4ce8478 100644 --- a/src/hb-ot-shape-complex-arabic.cc +++ b/src/hb-ot-shape-complex-arabic.cc @@ -83,11 +83,6 @@ static unsigned int get_joining_type (hb_codepoint_t u, hb_unicode_general_categ return JOINING_TYPE_D; } - if (unlikely (hb_in_range<hb_codepoint_t> (u, 0x200C, 0x200D))) - { - return u == 0x200C ? JOINING_TYPE_U : JOINING_TYPE_C; - } - return (FLAG(gen_cat) & (FLAG(HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK) | FLAG(HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK) | FLAG(HB_UNICODE_GENERAL_CATEGORY_FORMAT))) ? JOINING_TYPE_T : JOINING_TYPE_U; } commit 2390d9b67e1dfeccd3f0850d1304c52b54817ca0 Author: Behdad Esfahbod <[email protected]> Date: Sat Jun 21 14:07:00 2014 -0600 [arabic-table] Further tune In anticipation of Unicode 7.0 data coming in the next commit. diff --git a/src/gen-arabic-table.py b/src/gen-arabic-table.py index 1596126..ce80cc8 100755 --- a/src/gen-arabic-table.py +++ b/src/gen-arabic-table.py @@ -73,11 +73,12 @@ def print_joining_table(f): uu = sorted(values.keys()) num = len(values) + all_blocks = set([blocks[u] for u in uu]) last = -1 ranges = [] for u in uu: - if u - last <= 1+16*3: + if u - last <= 1+16*5: ranges[-1][-1] = u else: ranges.append([u,u]) @@ -101,7 +102,10 @@ def print_joining_table(f): if block != last_block or u == start: if u != start: print - print "\n /* %s */" % block + if block in all_blocks: + print "\n /* %s */" % block + else: + print "\n /* FILLER */" last_block = block if u % 32 != 0: print @@ -119,7 +123,7 @@ def print_joining_table(f): print "}; /* Table items: %d; occupancy: %d%% */" % (offset, occupancy) print - page_bits = 8 + page_bits = 12; print print "static unsigned int" print "joining_type (hb_codepoint_t u)" diff --git a/src/hb-ot-shape-complex-arabic-table.hh b/src/hb-ot-shape-complex-arabic-table.hh index 877625a..0a61d8f 100644 --- a/src/hb-ot-shape-complex-arabic-table.hh +++ b/src/hb-ot-shape-complex-arabic-table.hh @@ -52,45 +52,41 @@ static const uint8_t joining_table[] = /* 0740 */ D,D,D,D,D,D,D,D,D,R,R,R,D,D,D,D, /* 0760 */ D,D,D,D,D,D,D,D,D,D,D,R,R,D,D,D,D,R,D,R,R,D,D,D,R,R,D,D,D,D,D,D, -#define joining_offset_0x07ca 384 + /* FILLER */ + + /* 0780 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, + /* 07A0 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, /* NKo */ - /* 07C0 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D, - /* 07E0 */ D,D,D,D,D,D,D,D,D,D,D,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,C, + /* 07C0 */ X,X,X,X,X,X,X,X,X,X,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D, + /* 07E0 */ D,D,D,D,D,D,D,D,D,D,D,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,C,X,X,X,X,X, -#define joining_offset_0x0840 433 + /* FILLER */ - /* Mandaic */ + /* 0800 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, + /* 0820 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, - /* 0840 */ R,D,D,D,D,D,R,D,D,R,D,D,D,D,D,R,D,D,D,D,R,D,U,U,U, + /* Mandaic */ -#define joining_offset_0x08a0 458 + /* 0840 */ R,D,D,D,D,D,R,D,D,R,D,D,D,D,D,R,D,D,D,D,R,D,U,U,U,X,X,X,X,X,X,X, + /* 0860 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, + /* 0880 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, /* Arabic Extended-A */ /* 08A0 */ D,X,D,D,D,D,D,D,D,D,R,R,R, -}; /* Table items: 471; occupancy: 66% */ +}; /* Table items: 685; occupancy: 45% */ static unsigned int joining_type (hb_codepoint_t u) { - switch (u >> 8) + switch (u >> 12) { - case 0x6: - if (0x0600 <= u && u <= 0x077F) return joining_table[u - 0x0600 + joining_offset_0x0600]; - break; - - case 0x7: - if (0x0600 <= u && u <= 0x077F) return joining_table[u - 0x0600 + joining_offset_0x0600]; - if (0x07CA <= u && u <= 0x07FA) return joining_table[u - 0x07CA + joining_offset_0x07ca]; - break; - - case 0x8: - if (0x0840 <= u && u <= 0x0858) return joining_table[u - 0x0840 + joining_offset_0x0840]; - if (0x08A0 <= u && u <= 0x08AC) return joining_table[u - 0x08A0 + joining_offset_0x08a0]; + case 0x0: + if (0x0600 <= u && u <= 0x08AC) return joining_table[u - 0x0600 + joining_offset_0x0600]; break; default: _______________________________________________ HarfBuzz mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/harfbuzz
