From 308f419215716460479fbde482d66d1687176102 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Wed, 3 Jan 2018 14:22:07 +0000 Subject: [PATCH] [use] Fix Brahmi Number Joiner 1107F Fixes https://github.com/harfbuzz/harfbuzz/pull/660 --- src/gen-indic-table.py | 6 +++--- src/gen-use-table.py | 6 +++--- src/hb-ot-shape-complex-indic-table.cc | 4 ++-- src/hb-ot-shape-complex-use-table.cc | 6 +++--- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/gen-indic-table.py b/src/gen-indic-table.py index a849db18e..735b9015e 100755 --- a/src/gen-indic-table.py +++ b/src/gen-indic-table.py @@ -229,13 +229,13 @@ print " {" pages = set([u>>page_bits for u in starts+ends+singles.keys()]) for p in sorted(pages): print " case 0x%0Xu:" % p + for u,d in singles.items (): + if p != u>>page_bits: continue + print " if (unlikely (u == 0x%04Xu)) return _(%s,%s);" % (u, short[0][d[0]], short[1][d[1]]) for (start,end) in zip (starts, ends): if p not in [start>>page_bits, end>>page_bits]: continue offset = "indic_offset_0x%04xu" % start print " if (hb_in_range (u, 0x%04Xu, 0x%04Xu)) return indic_table[u - 0x%04Xu + %s];" % (start, end-1, start, offset) - for u,d in singles.items (): - if p != u>>page_bits: continue - print " if (unlikely (u == 0x%04Xu)) return _(%s,%s);" % (u, short[0][d[0]], short[1][d[1]]) print " break;" print "" print " default:" diff --git a/src/gen-use-table.py b/src/gen-use-table.py index bbcaaf89b..586e59434 100755 --- a/src/gen-use-table.py +++ b/src/gen-use-table.py @@ -462,13 +462,13 @@ print " {" pages = set([u>>page_bits for u in starts+ends+singles.keys()]) for p in sorted(pages): print " case 0x%0Xu:" % p + for u,d in singles.items (): + if p != u>>page_bits: continue + print " if (unlikely (u == 0x%04Xu)) return %s;" % (u, d[0]) for (start,end) in zip (starts, ends): if p not in [start>>page_bits, end>>page_bits]: continue offset = "use_offset_0x%04xu" % start print " if (hb_in_range (u, 0x%04Xu, 0x%04Xu)) return use_table[u - 0x%04Xu + %s];" % (start, end-1, start, offset) - for u,d in singles.items (): - if p != u>>page_bits: continue - print " if (unlikely (u == 0x%04Xu)) return %s;" % (u, d[0]) print " break;" print "" print " default:" diff --git a/src/hb-ot-shape-complex-indic-table.cc b/src/hb-ot-shape-complex-indic-table.cc index bfd1c6d34..867cfb33b 100644 --- a/src/hb-ot-shape-complex-indic-table.cc +++ b/src/hb-ot-shape-complex-indic-table.cc @@ -399,10 +399,10 @@ hb_indic_get_categories (hb_codepoint_t u) switch (u >> 12) { case 0x0u: + if (unlikely (u == 0x00A0u)) return _(CP,x); if (hb_in_range (u, 0x0028u, 0x003Fu)) return indic_table[u - 0x0028u + indic_offset_0x0028u]; if (hb_in_range (u, 0x00B0u, 0x00D7u)) return indic_table[u - 0x00B0u + indic_offset_0x00b0u]; if (hb_in_range (u, 0x0900u, 0x0DF7u)) return indic_table[u - 0x0900u + indic_offset_0x0900u]; - if (unlikely (u == 0x00A0u)) return _(CP,x); break; case 0x1u: @@ -412,9 +412,9 @@ hb_indic_get_categories (hb_codepoint_t u) break; case 0x2u: + if (unlikely (u == 0x25CCu)) return _(CP,x); if (hb_in_range (u, 0x2008u, 0x2017u)) return indic_table[u - 0x2008u + indic_offset_0x2008u]; if (hb_in_range (u, 0x2070u, 0x2087u)) return indic_table[u - 0x2070u + indic_offset_0x2070u]; - if (unlikely (u == 0x25CCu)) return _(CP,x); break; case 0xAu: diff --git a/src/hb-ot-shape-complex-use-table.cc b/src/hb-ot-shape-complex-use-table.cc index c1a33625a..7e764cd00 100644 --- a/src/hb-ot-shape-complex-use-table.cc +++ b/src/hb-ot-shape-complex-use-table.cc @@ -683,10 +683,10 @@ hb_use_get_categories (hb_codepoint_t u) switch (u >> 12) { case 0x0u: + if (unlikely (u == 0x034Fu)) return CGJ; if (hb_in_range (u, 0x0028u, 0x003Fu)) return use_table[u - 0x0028u + use_offset_0x0028u]; if (hb_in_range (u, 0x00A0u, 0x00D7u)) return use_table[u - 0x00A0u + use_offset_0x00a0u]; if (hb_in_range (u, 0x0900u, 0x0DF7u)) return use_table[u - 0x0900u + use_offset_0x0900u]; - if (unlikely (u == 0x034Fu)) return CGJ; break; case 0x1u: @@ -699,10 +699,10 @@ hb_use_get_categories (hb_codepoint_t u) break; case 0x2u: + if (unlikely (u == 0x25CCu)) return GB; if (hb_in_range (u, 0x2008u, 0x2017u)) return use_table[u - 0x2008u + use_offset_0x2008u]; if (hb_in_range (u, 0x2060u, 0x2087u)) return use_table[u - 0x2060u + use_offset_0x2060u]; if (hb_in_range (u, 0x20F0u, 0x20F7u)) return use_table[u - 0x20F0u + use_offset_0x20f0u]; - if (unlikely (u == 0x25CCu)) return GB; break; case 0xAu: @@ -719,6 +719,7 @@ hb_use_get_categories (hb_codepoint_t u) break; case 0x11u: + if (unlikely (u == 0x1107Fu)) return HN; if (hb_in_range (u, 0x11000u, 0x110BFu)) return use_table[u - 0x11000u + use_offset_0x11000u]; if (hb_in_range (u, 0x11100u, 0x1123Fu)) return use_table[u - 0x11100u + use_offset_0x11100u]; if (hb_in_range (u, 0x11280u, 0x11377u)) return use_table[u - 0x11280u + use_offset_0x11280u]; @@ -727,7 +728,6 @@ hb_use_get_categories (hb_codepoint_t u) if (hb_in_range (u, 0x11A00u, 0x11A9Fu)) return use_table[u - 0x11A00u + use_offset_0x11a00u]; if (hb_in_range (u, 0x11C00u, 0x11CB7u)) return use_table[u - 0x11C00u + use_offset_0x11c00u]; if (hb_in_range (u, 0x11D00u, 0x11D5Fu)) return use_table[u - 0x11D00u + use_offset_0x11d00u]; - if (unlikely (u == 0x1107Fu)) return HN; break; default: