[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 @@
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 @@
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 @@
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 @@
/* 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 */
+
+ /* 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,
/* Mandaic */
- /* 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,
-
-#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: