[indic-table] Make table more compact by not covering full blocks
-#define indic_offset_total 4416
+#define indic_offset_total 3816
-}; /* Table occupancy: 60% */
+}; /* Table occupancy: 69% */
diff --git a/src/gen-indic-table.py b/src/gen-indic-table.py
index 5adbe6a..0310a9c 100755
--- a/src/gen-indic-table.py
+++ b/src/gen-indic-table.py
@@ -124,10 +124,13 @@
total = 0
used = 0
+last_block = None
def print_block (block, start, end, data):
- print
- print
- print " /* %s */" % block
+ global total, used, last_block
+ if block and block != last_block:
+ print
+ print
+ print " /* %s */" % block
num = 0
assert start % 8 == 0
assert (end+1) % 8 == 0
@@ -140,9 +143,10 @@
d = data.get (u, defaults)
sys.stdout.write ("%9s" % ("_(%s,%s)," % (short[0][d[0]], short[1][d[1]])))
- global total, used
total += end - start + 1
used += num
+ if block:
+ last_block = block
uu = data.keys ()
uu.sort ()
@@ -157,11 +161,17 @@
if u <= last:
continue
block = data[u][2]
- (start, end) = blocks[block]
+ (bstart, bend) = blocks[block]
+
+ start = u//8*8
+ end = start+1
+ while end < bend and end in uu:
+ end += 1
+ end = (end-1)//8*8 + 7
if start != last + 1:
- if start - last <= 33:
- print_block ("FILLER", last+1, start-1, data)
+ if start - last <= 1+16*3:
+ print_block (None, last+1, start-1, data)
last = start-1
else:
if last >= 0: