[HarfBuzz] harfbuzz-ng: Branch 'master' - 6 commits

Behdad Esfahbod behdad at kemper.freedesktop.org
Fri Jun 17 15:32:24 PDT 2011


 src/gen-indic-table.py                 |    9 
 src/hb-blob.cc                         |   18 
 src/hb-buffer-private.hh               |    8 
 src/hb-glib.cc                         |   20 
 src/hb-icu.cc                          |   20 
 src/hb-object-private.hh               |    6 
 src/hb-open-type-private.hh            |   20 
 src/hb-ot-layout-common-private.hh     |    8 
 src/hb-ot-layout-gdef-private.hh       |    2 
 src/hb-ot-layout.cc                    |    2 
 src/hb-ot-map-private.hh               |    2 
 src/hb-ot-map.cc                       |   28 
 src/hb-ot-shape-complex-arabic.cc      |    3 
 src/hb-ot-shape-complex-indic-table.hh | 1038 ++++++++++++++++-----------------
 src/hb-ot-shape-complex-indic.cc       |   57 +
 src/hb-ot-shape-private.hh             |    2 
 src/hb-ot-shape.cc                     |    2 
 src/hb-ot-tag.cc                       |    4 
 src/hb-private.hh                      |    2 
 src/hb-view.cc                         |   11 
 test/test-object.c                     |   22 
 test/test-unicode.c                    |    4 
 22 files changed, 652 insertions(+), 636 deletions(-)

New commits:
commit 422e08dbb8e2c0c5664f1bdc7e159a673cfea8c5
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Wed Jun 15 17:22:48 2011 -0400

    Better categorize Indic character classes
    
    Matches OT types now.

diff --git a/src/hb-ot-shape-complex-indic.cc b/src/hb-ot-shape-complex-indic.cc
index 07ec95b..c79d0fc 100644
--- a/src/hb-ot-shape-complex-indic.cc
+++ b/src/hb-ot-shape-complex-indic.cc
@@ -57,7 +57,7 @@ enum {
 enum indic_syllabic_category_t {
   INDIC_SYLLABIC_CATEGORY_OTHER			= OT_X,
 
-  INDIC_SYLLABIC_CATEGORY_AVAGRAHA		= OT_SM,
+  INDIC_SYLLABIC_CATEGORY_AVAGRAHA		= OT_X,
   INDIC_SYLLABIC_CATEGORY_BINDU			= OT_SM,
   INDIC_SYLLABIC_CATEGORY_CONSONANT		= OT_C,
   INDIC_SYLLABIC_CATEGORY_CONSONANT_DEAD	= OT_C,
@@ -67,11 +67,11 @@ enum indic_syllabic_category_t {
   INDIC_SYLLABIC_CATEGORY_CONSONANT_PLACEHOLDER	= OT_NBSP,
   INDIC_SYLLABIC_CATEGORY_CONSONANT_SUBJOINED	= OT_C,
   INDIC_SYLLABIC_CATEGORY_CONSONANT_REPHA	= OT_C,
-  INDIC_SYLLABIC_CATEGORY_MODIFYING_LETTER	= OT_SM,
+  INDIC_SYLLABIC_CATEGORY_MODIFYING_LETTER	= OT_X,
   INDIC_SYLLABIC_CATEGORY_NUKTA			= OT_N,
-  INDIC_SYLLABIC_CATEGORY_REGISTER_SHIFTER	= OT_SM,
-  INDIC_SYLLABIC_CATEGORY_TONE_LETTER		= OT_V,
-  INDIC_SYLLABIC_CATEGORY_TONE_MARK		= OT_M,
+  INDIC_SYLLABIC_CATEGORY_REGISTER_SHIFTER	= OT_X,
+  INDIC_SYLLABIC_CATEGORY_TONE_LETTER		= OT_X,
+  INDIC_SYLLABIC_CATEGORY_TONE_MARK		= OT_X,
   INDIC_SYLLABIC_CATEGORY_VIRAMA		= OT_H,
   INDIC_SYLLABIC_CATEGORY_VISARGA		= OT_SM,
   INDIC_SYLLABIC_CATEGORY_VOWEL			= OT_V,
@@ -83,20 +83,33 @@ enum indic_syllabic_category_t {
 enum indic_matra_category_t {
   INDIC_MATRA_CATEGORY_NOT_APPLICABLE		= 0,
 
-  INDIC_MATRA_CATEGORY_BOTTOM,
-  INDIC_MATRA_CATEGORY_BOTTOM_AND_RIGHT,
-  INDIC_MATRA_CATEGORY_INVISIBLE,
-  INDIC_MATRA_CATEGORY_LEFT,
-  INDIC_MATRA_CATEGORY_LEFT_AND_RIGHT,
-  INDIC_MATRA_CATEGORY_OVERSTRUCK,
-  INDIC_MATRA_CATEGORY_RIGHT,
-  INDIC_MATRA_CATEGORY_TOP,
-  INDIC_MATRA_CATEGORY_TOP_AND_BOTTOM,
-  INDIC_MATRA_CATEGORY_TOP_AND_BOTTOM_AND_RIGHT,
-  INDIC_MATRA_CATEGORY_TOP_AND_LEFT,
-  INDIC_MATRA_CATEGORY_TOP_AND_LEFT_AND_RIGHT,
-  INDIC_MATRA_CATEGORY_TOP_AND_RIGHT,
-  INDIC_MATRA_CATEGORY_VISUAL_ORDER_LEFT
+  INDIC_MATRA_CATEGORY_LEFT			= 0x01,
+  INDIC_MATRA_CATEGORY_TOP			= 0x02,
+  INDIC_MATRA_CATEGORY_BOTTOM			= 0x04,
+  INDIC_MATRA_CATEGORY_RIGHT			= 0x08,
+
+  /* We don't really care much about these since we decompose them
+   * in the generic pre-shaping layer. */
+  INDIC_MATRA_CATEGORY_BOTTOM_AND_RIGHT		= INDIC_MATRA_CATEGORY_BOTTOM +
+						  INDIC_MATRA_CATEGORY_RIGHT,
+  INDIC_MATRA_CATEGORY_LEFT_AND_RIGHT		= INDIC_MATRA_CATEGORY_LEFT +
+						  INDIC_MATRA_CATEGORY_RIGHT,
+  INDIC_MATRA_CATEGORY_TOP_AND_BOTTOM		= INDIC_MATRA_CATEGORY_TOP +
+						  INDIC_MATRA_CATEGORY_BOTTOM,
+  INDIC_MATRA_CATEGORY_TOP_AND_BOTTOM_AND_RIGHT	= INDIC_MATRA_CATEGORY_TOP +
+						  INDIC_MATRA_CATEGORY_BOTTOM +
+						  INDIC_MATRA_CATEGORY_RIGHT,
+  INDIC_MATRA_CATEGORY_TOP_AND_LEFT		= INDIC_MATRA_CATEGORY_TOP +
+						  INDIC_MATRA_CATEGORY_LEFT,
+  INDIC_MATRA_CATEGORY_TOP_AND_LEFT_AND_RIGHT	= INDIC_MATRA_CATEGORY_TOP +
+						  INDIC_MATRA_CATEGORY_LEFT +
+						  INDIC_MATRA_CATEGORY_RIGHT,
+  INDIC_MATRA_CATEGORY_TOP_AND_RIGHT		= INDIC_MATRA_CATEGORY_TOP +
+						  INDIC_MATRA_CATEGORY_RIGHT,
+
+  INDIC_MATRA_CATEGORY_INVISIBLE		= INDIC_MATRA_CATEGORY_NOT_APPLICABLE,
+  INDIC_MATRA_CATEGORY_OVERSTRUCK		= INDIC_MATRA_CATEGORY_NOT_APPLICABLE,
+  INDIC_MATRA_CATEGORY_VISUAL_ORDER_LEFT	= INDIC_MATRA_CATEGORY_NOT_APPLICABLE
 };
 
 #define INDIC_COMBINE_CATEGORIES(S,M) \
commit 31f18abecb149f8888a72510f2660328dd6de16d
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Wed Jun 15 09:49:58 2011 -0400

    Minor compiler warning fixes

diff --git a/src/hb-buffer-private.hh b/src/hb-buffer-private.hh
index 7c298b0..4fae884 100644
--- a/src/hb-buffer-private.hh
+++ b/src/hb-buffer-private.hh
@@ -128,13 +128,13 @@ struct _hb_buffer_t {
 
   inline void reset_masks (hb_mask_t mask)
   {
-    for (unsigned int i = 0; i < len; i++)
-      info[i].mask = mask;
+    for (unsigned int j = 0; j < len; j++)
+      info[j].mask = mask;
   }
   inline void add_masks (hb_mask_t mask)
   {
-    for (unsigned int i = 0; i < len; i++)
-      info[i].mask |= mask;
+    for (unsigned int j = 0; j < len; j++)
+      info[j].mask |= mask;
   }
   inline void set_masks (hb_mask_t value,
 			 hb_mask_t mask,
diff --git a/src/hb-object-private.hh b/src/hb-object-private.hh
index 247f493..acd1b9e 100644
--- a/src/hb-object-private.hh
+++ b/src/hb-object-private.hh
@@ -179,11 +179,11 @@ struct _hb_object_header_t {
 
   inline bool set_user_data (hb_user_data_key_t *key,
 			     void *              data,
-			     hb_destroy_func_t   destroy) {
+			     hb_destroy_func_t   destroy_func) {
     if (unlikely (!this || this->is_inert ()))
       return false;
 
-    return user_data.set (key, data, destroy);
+    return user_data.set (key, data, destroy_func);
   }
 
   inline void *get_user_data (hb_user_data_key_t *key) {
diff --git a/src/hb-open-type-private.hh b/src/hb-open-type-private.hh
index 300a13a..ea763e9 100644
--- a/src/hb-open-type-private.hh
+++ b/src/hb-open-type-private.hh
@@ -151,7 +151,7 @@ ASSERT_STATIC (Type::min_size + 1 <= sizeof (_Null##Type))
 
 template <int max_depth>
 struct hb_trace_t {
-  explicit hb_trace_t (unsigned int *pdepth, const char *what, const char *function, const void *obj) : pdepth(pdepth) {
+  explicit hb_trace_t (unsigned int *pdepth_, const char *what, const char *function, const void *obj) : pdepth(pdepth_) {
     (void) (*pdepth < max_depth &&
 	    fprintf (stderr, "%s(%p) %-*d-> %s\n", what, obj, *pdepth, *pdepth, function));
     if (max_depth) ++*pdepth;
@@ -183,9 +183,9 @@ struct hb_trace_t<0> {
 
 struct hb_sanitize_context_t
 {
-  inline void init (hb_blob_t *blob)
+  inline void init (hb_blob_t *b)
   {
-    this->blob = hb_blob_reference (blob);
+    this->blob = hb_blob_reference (b);
     this->writable = false;
   }
 
diff --git a/src/hb-ot-layout-common-private.hh b/src/hb-ot-layout-common-private.hh
index 1381964..ce47e22 100644
--- a/src/hb-ot-layout-common-private.hh
+++ b/src/hb-ot-layout-common-private.hh
@@ -89,10 +89,10 @@ struct RecordArrayOf : SortedArrayOf<Record<Type> > {
 				hb_tag_t     *record_tags /* OUT */) const
   {
     if (record_count) {
-      const Record<Type> *array = this->sub_array (start_offset, record_count);
+      const Record<Type> *arr = this->sub_array (start_offset, record_count);
       unsigned int count = *record_count;
       for (unsigned int i = 0; i < count; i++)
-	record_tags[i] = array[i].tag;
+	record_tags[i] = arr[i].tag;
     }
     return this->len;
   }
@@ -150,10 +150,10 @@ struct IndexArray : ArrayOf<Index>
 				   unsigned int *_indexes /* OUT */) const
   {
     if (_count) {
-      const USHORT *array = this->sub_array (start_offset, _count);
+      const USHORT *arr = this->sub_array (start_offset, _count);
       unsigned int count = *_count;
       for (unsigned int i = 0; i < count; i++)
-	_indexes[i] = array[i];
+	_indexes[i] = arr[i];
     }
     return this->len;
   }
diff --git a/src/hb-ot-map.cc b/src/hb-ot-map.cc
index 68e1321..a68f123 100644
--- a/src/hb-ot-map.cc
+++ b/src/hb-ot-map.cc
@@ -104,21 +104,23 @@ hb_ot_map_builder_t::compile (hb_face_t *face,
 
 
   /* Sort features and merge duplicates */
-  feature_infos.sort ();
-  unsigned int j = 0;
-  for (unsigned int i = 1; i < feature_infos.len; i++)
-    if (feature_infos[i].tag != feature_infos[j].tag)
-      feature_infos[++j] = feature_infos[i];
-    else {
-      if (feature_infos[i].global)
-	feature_infos[j] = feature_infos[i];
+  {
+    feature_infos.sort ();
+    unsigned int j = 0;
+    for (unsigned int i = 1; i < feature_infos.len; i++)
+      if (feature_infos[i].tag != feature_infos[j].tag)
+	feature_infos[++j] = feature_infos[i];
       else {
-	feature_infos[j].global = false;
-	feature_infos[j].max_value = MAX (feature_infos[j].max_value, feature_infos[i].max_value);
-	/* Inherit default_value from j */
+	if (feature_infos[i].global)
+	  feature_infos[j] = feature_infos[i];
+	else {
+	  feature_infos[j].global = false;
+	  feature_infos[j].max_value = MAX (feature_infos[j].max_value, feature_infos[i].max_value);
+	  /* Inherit default_value from j */
+	}
       }
-    }
-  feature_infos.shrink (j + 1);
+    feature_infos.shrink (j + 1);
+  }
 
 
   /* Allocate bits now */
diff --git a/src/hb-ot-shape-complex-arabic.cc b/src/hb-ot-shape-complex-arabic.cc
index 4e7170c..edcd7fb 100644
--- a/src/hb-ot-shape-complex-arabic.cc
+++ b/src/hb-ot-shape-complex-arabic.cc
@@ -121,8 +121,7 @@ enum {
 static const struct arabic_state_table_entry {
 	uint8_t prev_action;
 	uint8_t curr_action;
-	uint8_t next_state;
-	uint8_t padding;
+	uint16_t next_state;
 } arabic_state_table[][NUM_STATE_MACHINE_COLS] =
 {
   /*   jt_U,          jt_R,          jt_D,          jg_ALAPH,      jg_DALATH_RISH */
diff --git a/src/hb-view.cc b/src/hb-view.cc
index 104d95c..97352cd 100644
--- a/src/hb-view.cc
+++ b/src/hb-view.cc
@@ -72,8 +72,6 @@ static int height = 0;
 static cairo_surface_t *surface = NULL;
 static cairo_pattern_t *fore_pattern = NULL;
 static cairo_pattern_t *back_pattern = NULL;
-static FT_Library ft_library;
-static FT_Face ft_face;
 static cairo_font_face_t *cairo_face;
 
 
@@ -141,6 +139,7 @@ parse_opts (int argc, char **argv)
 	  break;
 	case 'm':
 	  switch (sscanf (optarg, "%d %d %d %d", &margin_t, &margin_r, &margin_b, &margin_l)) {
+	    default: break;
 	    case 1: margin_r = margin_t;
 	    case 2: margin_b = margin_t;
 	    case 3: margin_l = margin_r;
@@ -346,7 +345,7 @@ static void parse_features (char *s)
 
 static cairo_glyph_t *
 _hb_cr_text_glyphs (cairo_t *cr,
-		    const char *text, int len,
+		    const char *utf8, int len,
 		    unsigned int *pnum_glyphs)
 {
   cairo_scaled_font_t *scaled_font = cairo_get_scaled_font (cr);
@@ -369,8 +368,8 @@ _hb_cr_text_glyphs (cairo_t *cr,
     hb_buffer_set_language (hb_buffer, hb_language_from_string (language));
 
   if (len < 0)
-    len = strlen (text);
-  hb_buffer_add_utf8 (hb_buffer, text, len, 0, len);
+    len = strlen (utf8);
+  hb_buffer_add_utf8 (hb_buffer, utf8, len, 0, len);
 
   hb_shape (hb_font, hb_buffer, features, num_features);
 
@@ -526,6 +525,8 @@ draw (void)
 int
 main (int argc, char **argv)
 {
+  static FT_Library ft_library;
+  static FT_Face ft_face;
   cairo_status_t status;
 
   setlocale (LC_ALL, "");
diff --git a/test/test-object.c b/test/test-object.c
index bac6d1a..d0145c5 100644
--- a/test/test-object.c
+++ b/test/test-object.c
@@ -231,7 +231,7 @@ test_object (void)
     hb_user_data_key_t key[2];
 
     {
-      unsigned int i;
+      unsigned int j;
       data_t data[2] = {{MAGIC0, FALSE}, {MAGIC1, FALSE}};
       deadlock_test_t deadlock_test;
 
@@ -282,16 +282,16 @@ test_object (void)
       g_assert_cmpuint (global_data, ==, 1);
 
       global_data = 0;
-      for (i = 2; i < 1000; i++)
-	g_assert (o->set_user_data (obj, &key[i], &data[i], global_free_up));
-      for (i = 2; i < 1000; i++)
-	g_assert (o->get_user_data (obj, &key[i]) == &data[i]);
-      for (i = 100; i < 1000; i++)
-	g_assert (o->set_user_data (obj, &key[i], NULL, NULL));
-      for (i = 2; i < 100; i++)
-	g_assert (o->get_user_data (obj, &key[i]) == &data[i]);
-      for (i = 100; i < 1000; i++)
-	g_assert (!o->get_user_data (obj, &key[i]));
+      for (j = 2; j < 1000; j++)
+	g_assert (o->set_user_data (obj, &key[j], &data[j], global_free_up));
+      for (j = 2; j < 1000; j++)
+	g_assert (o->get_user_data (obj, &key[j]) == &data[j]);
+      for (j = 100; j < 1000; j++)
+	g_assert (o->set_user_data (obj, &key[j], NULL, NULL));
+      for (j = 2; j < 100; j++)
+	g_assert (o->get_user_data (obj, &key[j]) == &data[j]);
+      for (j = 100; j < 1000; j++)
+	g_assert (!o->get_user_data (obj, &key[j]));
       g_assert_cmpuint (global_data, ==, 900);
 
       /* Test set_user_data where the destroy() func calls user_data functions.
diff --git a/test/test-unicode.c b/test/test-unicode.c
index cce4fd2..c84ba86 100644
--- a/test/test-unicode.c
+++ b/test/test-unicode.c
@@ -511,9 +511,9 @@ test_unicode_properties (gconstpointer user_data)
 }
 
 static hb_codepoint_t
-default_value (hb_codepoint_t default_value, hb_codepoint_t unicode)
+default_value (hb_codepoint_t _default_value, hb_codepoint_t unicode)
 {
-  return default_value == RETURNS_UNICODE_ITSELF ?  unicode : default_value;
+  return _default_value == RETURNS_UNICODE_ITSELF ?  unicode : _default_value;
 }
 
 static void
commit e3693b72f0651985d4f619cde668611639dca885
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Wed Jun 15 09:33:52 2011 -0400

    Change a couple strstr() to strchr()

diff --git a/src/hb-ot-tag.cc b/src/hb-ot-tag.cc
index 0ed0c83..0ce635a 100644
--- a/src/hb-ot-tag.cc
+++ b/src/hb-ot-tag.cc
@@ -586,10 +586,10 @@ lang_compare_first_component (const char *a,
   unsigned int da, db;
   const char *p;
 
-  p = strstr (a, "-");
+  p = strchr (a, '-');
   da = p ? (unsigned int) (p - a) : strlen (a);
 
-  p = strstr (b, "-");
+  p = strchr (b, '-');
   db = p ? (unsigned int) (p - b) : strlen (b);
 
   return strncmp (a, b, MAX (da, db));
commit b9452bfc1696457e156e79037c863903da5454fc
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Tue Jun 14 14:47:07 2011 -0400

    Fix compiler warnings with -pedantic

diff --git a/src/hb-blob.cc b/src/hb-blob.cc
index 17ff339..db972a1 100644
--- a/src/hb-blob.cc
+++ b/src/hb-blob.cc
@@ -244,22 +244,22 @@ _try_make_writable_inplace_unix (hb_blob_t *blob)
 
   if ((uintptr_t) -1L == pagesize) {
     (void) (HB_DEBUG_BLOB &&
-      fprintf (stderr, "%p %s: failed to get pagesize: %s\n", blob, HB_FUNC, strerror (errno)));
+      fprintf (stderr, "%p %s: failed to get pagesize: %s\n", (void *) blob, HB_FUNC, strerror (errno)));
     return FALSE;
   }
   (void) (HB_DEBUG_BLOB &&
-    fprintf (stderr, "%p %s: pagesize is %lu\n", blob, HB_FUNC, (unsigned long) pagesize));
+    fprintf (stderr, "%p %s: pagesize is %lu\n", (void *) blob, HB_FUNC, (unsigned long) pagesize));
 
   mask = ~(pagesize-1);
   addr = (const char *) (((uintptr_t) blob->data) & mask);
   length = (const char *) (((uintptr_t) blob->data + blob->length + pagesize-1) & mask)  - addr;
   (void) (HB_DEBUG_BLOB &&
     fprintf (stderr, "%p %s: calling mprotect on [%p..%p] (%lu bytes)\n",
-	     blob, HB_FUNC,
+	     (void *) blob, HB_FUNC,
 	     addr, addr+length, (unsigned long) length));
   if (-1 == mprotect ((void *) addr, length, PROT_READ | PROT_WRITE)) {
     (void) (HB_DEBUG_BLOB &&
-      fprintf (stderr, "%p %s: %s\n", blob, HB_FUNC, strerror (errno)));
+      fprintf (stderr, "%p %s: %s\n", (void *) blob, HB_FUNC, strerror (errno)));
     return FALSE;
   }
 
@@ -267,7 +267,7 @@ _try_make_writable_inplace_unix (hb_blob_t *blob)
 
   (void) (HB_DEBUG_BLOB &&
     fprintf (stderr, "%p %s: successfully made [%p..%p] (%lu bytes) writable\n",
-	     blob, HB_FUNC,
+	     (void *) blob, HB_FUNC,
 	     addr, addr+length, (unsigned long) length));
   return TRUE;
 #else
@@ -279,13 +279,13 @@ static bool
 _try_writable_inplace (hb_blob_t *blob)
 {
   (void) (HB_DEBUG_BLOB &&
-    fprintf (stderr, "%p %s: making writable inplace\n", blob, HB_FUNC));
+    fprintf (stderr, "%p %s: making writable inplace\n", (void *) blob, HB_FUNC));
 
   if (_try_make_writable_inplace_unix (blob))
     return TRUE;
 
   (void) (HB_DEBUG_BLOB &&
-    fprintf (stderr, "%p %s: making writable -> FAILED\n", blob, HB_FUNC));
+    fprintf (stderr, "%p %s: making writable -> FAILED\n", (void *) blob, HB_FUNC));
 
   /* Failed to make writable inplace, mark that */
   blob->mode = HB_MEMORY_MODE_READONLY;
@@ -309,7 +309,7 @@ _try_writable (hb_blob_t *blob)
 
 
   (void) (HB_DEBUG_BLOB &&
-    fprintf (stderr, "%p %s -> %p\n", blob, HB_FUNC, blob->data));
+    fprintf (stderr, "%p %s -> %p\n", (void *) blob, HB_FUNC, blob->data));
 
   char *new_data;
 
@@ -318,7 +318,7 @@ _try_writable (hb_blob_t *blob)
     return FALSE;
 
   (void) (HB_DEBUG_BLOB &&
-    fprintf (stderr, "%p %s: dupped successfully -> %p\n", blob, HB_FUNC, blob->data));
+    fprintf (stderr, "%p %s: dupped successfully -> %p\n", (void *) blob, HB_FUNC, blob->data));
 
   memcpy (new_data, blob->data, blob->length);
   _hb_blob_destroy_user_data (blob);
diff --git a/src/hb-glib.cc b/src/hb-glib.cc
index 2bce1f9..109b9ba 100644
--- a/src/hb-glib.cc
+++ b/src/hb-glib.cc
@@ -177,26 +177,26 @@ hb_glib_script_from_script (hb_script_t script)
 
 
 static unsigned int
-hb_glib_get_combining_class (hb_unicode_funcs_t *ufuncs,
+hb_glib_get_combining_class (hb_unicode_funcs_t *ufuncs HB_UNUSED,
                              hb_codepoint_t      unicode,
-                             void               *user_data)
+                             void               *user_data HB_UNUSED)
 
 {
   return g_unichar_combining_class (unicode);
 }
 
 static unsigned int
-hb_glib_get_eastasian_width (hb_unicode_funcs_t *ufuncs,
+hb_glib_get_eastasian_width (hb_unicode_funcs_t *ufuncs HB_UNUSED,
                              hb_codepoint_t      unicode,
-                             void               *user_data)
+                             void               *user_data HB_UNUSED)
 {
   return g_unichar_iswide (unicode) ? 2 : 1;
 }
 
 static hb_unicode_general_category_t
-hb_glib_get_general_category (hb_unicode_funcs_t *ufuncs,
+hb_glib_get_general_category (hb_unicode_funcs_t *ufuncs HB_UNUSED,
                               hb_codepoint_t      unicode,
-                              void               *user_data)
+                              void               *user_data HB_UNUSED)
 
 {
   /* hb_unicode_general_category_t and GUnicodeType are identical */
@@ -204,18 +204,18 @@ hb_glib_get_general_category (hb_unicode_funcs_t *ufuncs,
 }
 
 static hb_codepoint_t
-hb_glib_get_mirroring (hb_unicode_funcs_t *ufuncs,
+hb_glib_get_mirroring (hb_unicode_funcs_t *ufuncs HB_UNUSED,
                        hb_codepoint_t      unicode,
-                       void               *user_data)
+                       void               *user_data HB_UNUSED)
 {
   g_unichar_get_mirror_char (unicode, &unicode);
   return unicode;
 }
 
 static hb_script_t
-hb_glib_get_script (hb_unicode_funcs_t *ufuncs,
+hb_glib_get_script (hb_unicode_funcs_t *ufuncs HB_UNUSED,
                     hb_codepoint_t      unicode,
-                    void               *user_data)
+                    void               *user_data HB_UNUSED)
 {
   return hb_glib_script_to_script (g_unichar_get_script (unicode));
 }
diff --git a/src/hb-icu.cc b/src/hb-icu.cc
index 9b94a94..1e0134c 100644
--- a/src/hb-icu.cc
+++ b/src/hb-icu.cc
@@ -63,18 +63,18 @@ hb_icu_script_from_script (hb_script_t script)
 
 
 static unsigned int
-hb_icu_get_combining_class (hb_unicode_funcs_t *ufuncs,
+hb_icu_get_combining_class (hb_unicode_funcs_t *ufuncs HB_UNUSED,
 			    hb_codepoint_t      unicode,
-			    void               *user_data)
+			    void               *user_data HB_UNUSED)
 
 {
   return u_getCombiningClass (unicode);
 }
 
 static unsigned int
-hb_icu_get_eastasian_width (hb_unicode_funcs_t *ufuncs,
+hb_icu_get_eastasian_width (hb_unicode_funcs_t *ufuncs HB_UNUSED,
 			    hb_codepoint_t      unicode,
-			    void               *user_data)
+			    void               *user_data HB_UNUSED)
 {
   switch (u_getIntPropertyValue(unicode, UCHAR_EAST_ASIAN_WIDTH))
   {
@@ -91,9 +91,9 @@ hb_icu_get_eastasian_width (hb_unicode_funcs_t *ufuncs,
 }
 
 static hb_unicode_general_category_t
-hb_icu_get_general_category (hb_unicode_funcs_t *ufuncs,
+hb_icu_get_general_category (hb_unicode_funcs_t *ufuncs HB_UNUSED,
 			     hb_codepoint_t      unicode,
-			     void               *user_data)
+			     void               *user_data HB_UNUSED)
 {
   switch (u_getIntPropertyValue(unicode, UCHAR_GENERAL_CATEGORY))
   {
@@ -142,17 +142,17 @@ hb_icu_get_general_category (hb_unicode_funcs_t *ufuncs,
 }
 
 static hb_codepoint_t
-hb_icu_get_mirroring (hb_unicode_funcs_t *ufuncs,
+hb_icu_get_mirroring (hb_unicode_funcs_t *ufuncs HB_UNUSED,
 		      hb_codepoint_t      unicode,
-		      void               *user_data)
+		      void               *user_data HB_UNUSED)
 {
   return u_charMirror(unicode);
 }
 
 static hb_script_t
-hb_icu_get_script (hb_unicode_funcs_t *ufuncs,
+hb_icu_get_script (hb_unicode_funcs_t *ufuncs HB_UNUSED,
 		   hb_codepoint_t      unicode,
-		   void               *user_data)
+		   void               *user_data HB_UNUSED)
 {
   UErrorCode status = U_ZERO_ERROR;
   UScriptCode scriptCode = uscript_getScript(unicode, &status);
diff --git a/src/hb-object-private.hh b/src/hb-object-private.hh
index 90f227c..247f493 100644
--- a/src/hb-object-private.hh
+++ b/src/hb-object-private.hh
@@ -193,7 +193,7 @@ struct _hb_object_header_t {
   inline void trace (const char *function) const {
     (void) (HB_DEBUG_OBJECT &&
 	    fprintf (stderr, "OBJECT(%p) refcount=%d %s\n",
-		     this,
+		     (void *) this,
 		     this ? ref_count.get () : 0,
 		     function));
   }
diff --git a/src/hb-open-type-private.hh b/src/hb-open-type-private.hh
index 665a260..300a13a 100644
--- a/src/hb-open-type-private.hh
+++ b/src/hb-open-type-private.hh
@@ -198,7 +198,7 @@ struct hb_sanitize_context_t
 
     (void) (HB_DEBUG_SANITIZE &&
       fprintf (stderr, "sanitize %p init [%p..%p] (%lu bytes)\n",
-	       this->blob, this->start, this->end,
+	       (void *) this->blob, this->start, this->end,
 	       (unsigned long) (this->end - this->start)));
   }
 
@@ -206,7 +206,7 @@ struct hb_sanitize_context_t
   {
     (void) (HB_DEBUG_SANITIZE &&
       fprintf (stderr, "sanitize %p fini [%p..%p] %u edit requests\n",
-	       this->blob, this->start, this->end, this->edit_count));
+	       (void *) this->blob, this->start, this->end, this->edit_count));
 
     hb_blob_destroy (this->blob);
     this->blob = NULL;
@@ -293,7 +293,7 @@ struct Sanitizer
 
   retry:
     (void) (HB_DEBUG_SANITIZE &&
-      fprintf (stderr, "Sanitizer %p start %s\n", blob, HB_FUNC));
+      fprintf (stderr, "Sanitizer %p start %s\n", (void *) blob, HB_FUNC));
 
     c->setup ();
 
@@ -309,7 +309,7 @@ struct Sanitizer
       if (c->edit_count) {
 	(void) (HB_DEBUG_SANITIZE &&
 	  fprintf (stderr, "Sanitizer %p passed first round with %d edits; doing a second round %s\n",
-		   blob, c->edit_count, HB_FUNC));
+		   (void *) blob, c->edit_count, HB_FUNC));
 
         /* sanitize again to ensure no toe-stepping */
         c->edit_count = 0;
@@ -317,7 +317,7 @@ struct Sanitizer
 	if (c->edit_count) {
 	  (void) (HB_DEBUG_SANITIZE &&
 	    fprintf (stderr, "Sanitizer %p requested %d edits in second round; FAILLING %s\n",
-		     blob, c->edit_count, HB_FUNC));
+		     (void *) blob, c->edit_count, HB_FUNC));
 	  sane = false;
 	}
       }
@@ -331,7 +331,7 @@ struct Sanitizer
 	  c->writable = true;
 	  /* ok, we made it writable by relocating.  try again */
 	  (void) (HB_DEBUG_SANITIZE &&
-	    fprintf (stderr, "Sanitizer %p retry %s\n", blob, HB_FUNC));
+	    fprintf (stderr, "Sanitizer %p retry %s\n", (void *) blob, HB_FUNC));
 	  goto retry;
 	}
       }
@@ -340,7 +340,7 @@ struct Sanitizer
     c->finish ();
 
     (void) (HB_DEBUG_SANITIZE &&
-      fprintf (stderr, "Sanitizer %p %s %s\n", blob, sane ? "passed" : "FAILED", HB_FUNC));
+      fprintf (stderr, "Sanitizer %p %s %s\n", (void *) blob, sane ? "passed" : "FAILED", HB_FUNC));
     if (sane)
       return blob;
     else {
diff --git a/src/hb-ot-layout-gdef-private.hh b/src/hb-ot-layout-gdef-private.hh
index 0fcfe3b..08fd757 100644
--- a/src/hb-ot-layout-gdef-private.hh
+++ b/src/hb-ot-layout-gdef-private.hh
@@ -143,7 +143,7 @@ struct CaretValueFormat3
 {
   friend struct CaretValue;
 
-  inline hb_position_t get_caret_value (hb_font_t *font, hb_direction_t direction, hb_codepoint_t glyph_id) const
+  inline hb_position_t get_caret_value (hb_font_t *font, hb_direction_t direction, hb_codepoint_t glyph_id HB_UNUSED) const
   {
     return HB_DIRECTION_IS_HORIZONTAL (direction) ?
            font->em_scale_x (coordinate) + (this+deviceTable).get_x_delta (font) :
diff --git a/src/hb-ot-layout.cc b/src/hb-ot-layout.cc
index 0d34e11..a49f339 100644
--- a/src/hb-ot-layout.cc
+++ b/src/hb-ot-layout.cc
@@ -458,7 +458,7 @@ hb_ot_layout_substitute_lookup (hb_face_t    *face,
 }
 
 void
-hb_ot_layout_substitute_finish (hb_buffer_t  *buffer)
+hb_ot_layout_substitute_finish (hb_buffer_t  *buffer HB_UNUSED)
 {
 }
 
diff --git a/src/hb-ot-map-private.hh b/src/hb-ot-map-private.hh
index 07a321f..2b31261 100644
--- a/src/hb-ot-map-private.hh
+++ b/src/hb-ot-map-private.hh
@@ -96,7 +96,7 @@ struct hb_ot_map_t
       hb_ot_layout_substitute_lookup (face, buffer, lookups[0][i].index, lookups[0][i].mask);
   }
 
-  inline void position (hb_font_t *font, hb_face_t *face, hb_buffer_t *buffer) const {
+  inline void position (hb_font_t *font, hb_buffer_t *buffer) const {
     for (unsigned int i = 0; i < lookups[1].len; i++)
       hb_ot_layout_position_lookup (font, buffer, lookups[1][i].index, lookups[1][i].mask);
   }
diff --git a/src/hb-ot-shape-complex-indic.cc b/src/hb-ot-shape-complex-indic.cc
index 62bea9a..07ec95b 100644
--- a/src/hb-ot-shape-complex-indic.cc
+++ b/src/hb-ot-shape-complex-indic.cc
@@ -49,7 +49,7 @@ enum {
   OT_SM,
   OT_VD,
   OT_A,
-  OT_NBSP,
+  OT_NBSP
 };
 
 /* Categories used in IndicSyllabicCategory.txt from UCD */
@@ -76,7 +76,7 @@ enum indic_syllabic_category_t {
   INDIC_SYLLABIC_CATEGORY_VISARGA		= OT_SM,
   INDIC_SYLLABIC_CATEGORY_VOWEL			= OT_V,
   INDIC_SYLLABIC_CATEGORY_VOWEL_DEPENDENT	= OT_M,
-  INDIC_SYLLABIC_CATEGORY_VOWEL_INDEPENDENT	= OT_V,
+  INDIC_SYLLABIC_CATEGORY_VOWEL_INDEPENDENT	= OT_V
 };
 
 /* Categories used in IndicSMatraCategory.txt from UCD */
@@ -96,7 +96,7 @@ enum indic_matra_category_t {
   INDIC_MATRA_CATEGORY_TOP_AND_LEFT,
   INDIC_MATRA_CATEGORY_TOP_AND_LEFT_AND_RIGHT,
   INDIC_MATRA_CATEGORY_TOP_AND_RIGHT,
-  INDIC_MATRA_CATEGORY_VISUAL_ORDER_LEFT,
+  INDIC_MATRA_CATEGORY_VISUAL_ORDER_LEFT
 };
 
 #define INDIC_COMBINE_CATEGORIES(S,M) \
@@ -136,7 +136,7 @@ static const hb_tag_t indic_other_features[] =
 
 
 void
-_hb_ot_shape_complex_collect_features_indic	(hb_ot_shape_planner_t *planner, const hb_segment_properties_t  *props)
+_hb_ot_shape_complex_collect_features_indic	(hb_ot_shape_planner_t *planner, const hb_segment_properties_t  *props HB_UNUSED)
 {
   for (unsigned int i = 0; i < ARRAY_LENGTH (indic_basic_features); i++)
     planner->map.add_bool_feature (indic_basic_features[i], false);
diff --git a/src/hb-ot-shape-private.hh b/src/hb-ot-shape-private.hh
index bce27f5..f7f1cae 100644
--- a/src/hb-ot-shape-private.hh
+++ b/src/hb-ot-shape-private.hh
@@ -44,7 +44,7 @@ HB_BEGIN_DECLS
 enum hb_ot_complex_shaper_t {
   hb_ot_complex_shaper_none,
   hb_ot_complex_shaper_arabic,
-  hb_ot_complex_shaper_indic,
+  hb_ot_complex_shaper_indic
 };
 
 
diff --git a/src/hb-ot-shape.cc b/src/hb-ot-shape.cc
index 34f1570..6bda700 100644
--- a/src/hb-ot-shape.cc
+++ b/src/hb-ot-shape.cc
@@ -161,7 +161,7 @@ hb_ot_position_complex (hb_ot_shape_context_t *c)
 					    &c->buffer->pos[i].y_offset);
   }
 
-  c->plan->map.position (c->font, c->face, c->buffer);
+  c->plan->map.position (c->font, c->buffer);
 
   for (unsigned int i = 0; i < count; i++) {
     hb_font_subtract_glyph_origin_for_direction (c->font, c->buffer->info[i].codepoint,
commit 970e092dc23cbeb7897d4c7bb58c042209f518fb
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Tue Jun 14 14:35:44 2011 -0400

    Remove extra semicolon

diff --git a/src/hb-private.hh b/src/hb-private.hh
index 33d5a3e..f385146 100644
--- a/src/hb-private.hh
+++ b/src/hb-private.hh
@@ -451,7 +451,7 @@ static inline unsigned char TOLOWER (unsigned char c)
 /* Makes class uncopyable.  Use in private: section. */
 #define NO_COPY(T) \
   T (const T &o); \
-  T &operator = (const T &o);
+  T &operator = (const T &o)
 
 
 /* Debug */
commit 81426808020e2b88f008480bd63519aa68c579a7
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Mon Jun 13 16:02:18 2011 -0400

    Cosmetic

diff --git a/src/gen-indic-table.py b/src/gen-indic-table.py
index 92ec8fe..dc6a19a 100755
--- a/src/gen-indic-table.py
+++ b/src/gen-indic-table.py
@@ -81,9 +81,10 @@ short = [{
 	"Bindu":		'Bi',
 	"Visarga":		'Vs',
 	"Vowel":		'Vo',
-	"Other":		'X',
+	"Vowel_Dependent":	'M',
+	"Other":		'x',
 },{
-	"Not_Applicable":	'X',
+	"Not_Applicable":	'x',
 }]
 all_shorts = [[],[]]
 
@@ -131,7 +132,7 @@ def print_block (block, start, end, data):
 		if u in data:
 			num += 1
 		d = data.get (u, defaults)
-		print "%10s" % ("_(%s,%s)," % (short[0][d[0]], short[1][d[1]])),
+		sys.stdout.write ("%9s" % ("_(%s,%s)," % (short[0][d[0]], short[1][d[1]])))
 
 	if num == 0:
 		# Filler block, don't check occupancy
@@ -183,7 +184,7 @@ for u in tables:
 	print "  if (0x%04X <= u && u <= 0x%04X + ARRAY_LENGTH (%s)) return %s[u - 0x%04X];" % (u, u, t, t, u)
 for u,d in singles.items ():
 	print "  if (unlikely (u == 0x%04X)) return _(%s,%s);" % (u, short[0][d[0]], short[1][d[1]])
-print "  return _(X,X);"
+print "  return _(x,x);"
 print "}"
 
 print
diff --git a/src/hb-ot-shape-complex-indic-table.hh b/src/hb-ot-shape-complex-indic-table.hh
index 2d0d32b..4b04914 100644
--- a/src/hb-ot-shape-complex-indic-table.hh
+++ b/src/hb-ot-shape-complex-indic-table.hh
@@ -60,14 +60,14 @@ HB_BEGIN_DECLS
 #define ISC_CS	INDIC_SYLLABIC_CATEGORY_CONSONANT_SUBJOINED	/*   9 chars; Consonant_Subjoined */
 #define ISC_ML	INDIC_SYLLABIC_CATEGORY_MODIFYING_LETTER	/*   1 chars; Modifying_Letter */
 #define ISC_N	INDIC_SYLLABIC_CATEGORY_NUKTA			/*  11 chars; Nukta */
-#define ISC_X	INDIC_SYLLABIC_CATEGORY_OTHER			/*   1 chars; Other */
+#define ISC_x	INDIC_SYLLABIC_CATEGORY_OTHER			/*   1 chars; Other */
 #define ISC_RS	INDIC_SYLLABIC_CATEGORY_REGISTER_SHIFTER	/*   1 chars; Register_Shifter */
 #define ISC_TL	INDIC_SYLLABIC_CATEGORY_TONE_LETTER		/*   3 chars; Tone_Letter */
 #define ISC_TM	INDIC_SYLLABIC_CATEGORY_TONE_MARK		/*  16 chars; Tone_Mark */
 #define ISC_V	INDIC_SYLLABIC_CATEGORY_VIRAMA			/*  29 chars; Virama */
 #define ISC_Vs	INDIC_SYLLABIC_CATEGORY_VISARGA			/*  19 chars; Visarga */
 #define ISC_Vo	INDIC_SYLLABIC_CATEGORY_VOWEL			/*   5 chars; Vowel */
-#define ISC_VD	INDIC_SYLLABIC_CATEGORY_VOWEL_DEPENDENT		/* 161 chars; Vowel_Dependent */
+#define ISC_M	INDIC_SYLLABIC_CATEGORY_VOWEL_DEPENDENT		/* 161 chars; Vowel_Dependent */
 #define ISC_VI	INDIC_SYLLABIC_CATEGORY_VOWEL_INDEPENDENT	/*  53 chars; Vowel_Independent */
 
 #define IMC_B	INDIC_MATRA_CATEGORY_BOTTOM			/*  60 chars; Bottom */
@@ -75,7 +75,7 @@ HB_BEGIN_DECLS
 #define IMC_I	INDIC_MATRA_CATEGORY_INVISIBLE			/*   4 chars; Invisible */
 #define IMC_L	INDIC_MATRA_CATEGORY_LEFT			/*  25 chars; Left */
 #define IMC_LR	INDIC_MATRA_CATEGORY_LEFT_AND_RIGHT		/*   8 chars; Left_And_Right */
-#define IMC_X	INDIC_MATRA_CATEGORY_NOT_APPLICABLE		/*   1 chars; Not_Applicable */
+#define IMC_x	INDIC_MATRA_CATEGORY_NOT_APPLICABLE		/*   1 chars; Not_Applicable */
 #define IMC_O	INDIC_MATRA_CATEGORY_OVERSTRUCK			/*   2 chars; Overstruck */
 #define IMC_R	INDIC_MATRA_CATEGORY_RIGHT			/*  70 chars; Right */
 #define IMC_T	INDIC_MATRA_CATEGORY_TOP			/*  74 chars; Top */
@@ -94,289 +94,289 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table_0x0900[] =
 
   /* Devanagari  (0900..097F) */
 
-  /* 0900 */   _(Bi,X),   _(Bi,X),   _(Bi,X),   _(Vs,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),
-  /* 0908 */   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),
-  /* 0910 */   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0918 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0920 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0928 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0930 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0938 */    _(C,X),    _(C,X),   _(VD,T),   _(VD,R),    _(N,X),    _(A,X),   _(VD,R),   _(VD,L),
-  /* 0940 */   _(VD,R),   _(VD,B),   _(VD,B),   _(VD,B),   _(VD,B),   _(VD,T),   _(VD,T),   _(VD,T),
-  /* 0948 */   _(VD,T),   _(VD,R),   _(VD,R),   _(VD,R),   _(VD,R),    _(V,B),   _(VD,L),   _(VD,R),
-  /* 0950 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),   _(VD,T),   _(VD,B),   _(VD,B),
-  /* 0958 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0960 */   _(VI,X),   _(VI,X),   _(VD,B),   _(VD,B),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0968 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0970 */    _(X,X),    _(X,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),
-  /* 0978 */    _(X,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
+  /* 0900 */ _(Bi,x), _(Bi,x), _(Bi,x), _(Vs,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
+  /* 0908 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
+  /* 0910 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0918 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0920 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0928 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0930 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0938 */  _(C,x),  _(C,x),  _(M,T),  _(M,R),  _(N,x),  _(A,x),  _(M,R),  _(M,L),
+  /* 0940 */  _(M,R),  _(M,B),  _(M,B),  _(M,B),  _(M,B),  _(M,T),  _(M,T),  _(M,T),
+  /* 0948 */  _(M,T),  _(M,R),  _(M,R),  _(M,R),  _(M,R),  _(V,B),  _(M,L),  _(M,R),
+  /* 0950 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(M,T),  _(M,B),  _(M,B),
+  /* 0958 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0960 */ _(VI,x), _(VI,x),  _(M,B),  _(M,B),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0968 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0970 */  _(x,x),  _(x,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
+  /* 0978 */  _(x,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
 
   /* Bengali  (0980..09FF) */
 
-  /* 0980 */    _(X,X),   _(Bi,X),   _(Bi,X),   _(Vs,X),    _(X,X),   _(VI,X),   _(VI,X),   _(VI,X),
-  /* 0988 */   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),    _(X,X),    _(X,X),   _(VI,X),
-  /* 0990 */   _(VI,X),    _(X,X),    _(X,X),   _(VI,X),   _(VI,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0998 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 09A0 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 09A8 */    _(C,X),    _(X,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 09B0 */    _(C,X),    _(X,X),    _(C,X),    _(X,X),    _(X,X),    _(X,X),    _(C,X),    _(C,X),
-  /* 09B8 */    _(C,X),    _(C,X),    _(X,X),    _(X,X),    _(N,X),    _(A,X),   _(VD,R),   _(VD,L),
-  /* 09C0 */   _(VD,R),   _(VD,B),   _(VD,B),   _(VD,B),   _(VD,B),    _(X,X),    _(X,X),   _(VD,L),
-  /* 09C8 */   _(VD,L),    _(X,X),    _(X,X),  _(VD,LR),  _(VD,LR),    _(V,B),   _(CD,X),    _(X,X),
-  /* 09D0 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),   _(VD,R),
-  /* 09D8 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(C,X),    _(C,X),    _(X,X),    _(C,X),
-  /* 09E0 */   _(VI,X),   _(VI,X),   _(VD,B),   _(VD,B),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 09E8 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 09F0 */    _(C,X),    _(C,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 09F8 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
+  /* 0980 */  _(x,x), _(Bi,x), _(Bi,x), _(Vs,x),  _(x,x), _(VI,x), _(VI,x), _(VI,x),
+  /* 0988 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),  _(x,x),  _(x,x), _(VI,x),
+  /* 0990 */ _(VI,x),  _(x,x),  _(x,x), _(VI,x), _(VI,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0998 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 09A0 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 09A8 */  _(C,x),  _(x,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 09B0 */  _(C,x),  _(x,x),  _(C,x),  _(x,x),  _(x,x),  _(x,x),  _(C,x),  _(C,x),
+  /* 09B8 */  _(C,x),  _(C,x),  _(x,x),  _(x,x),  _(N,x),  _(A,x),  _(M,R),  _(M,L),
+  /* 09C0 */  _(M,R),  _(M,B),  _(M,B),  _(M,B),  _(M,B),  _(x,x),  _(x,x),  _(M,L),
+  /* 09C8 */  _(M,L),  _(x,x),  _(x,x), _(M,LR), _(M,LR),  _(V,B), _(CD,x),  _(x,x),
+  /* 09D0 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(M,R),
+  /* 09D8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(C,x),  _(C,x),  _(x,x),  _(C,x),
+  /* 09E0 */ _(VI,x), _(VI,x),  _(M,B),  _(M,B),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 09E8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 09F0 */  _(C,x),  _(C,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 09F8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
 
   /* Gurmukhi  (0A00..0A7F) */
 
-  /* 0A00 */    _(X,X),   _(Bi,X),   _(Bi,X),   _(Vs,X),    _(X,X),   _(VI,X),   _(VI,X),   _(VI,X),
-  /* 0A08 */   _(VI,X),   _(VI,X),   _(VI,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),   _(VI,X),
-  /* 0A10 */   _(VI,X),    _(X,X),    _(X,X),   _(VI,X),   _(VI,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0A18 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0A20 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0A28 */    _(C,X),    _(X,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0A30 */    _(C,X),    _(X,X),    _(C,X),    _(C,X),    _(X,X),    _(C,X),    _(C,X),    _(X,X),
-  /* 0A38 */    _(C,X),    _(C,X),    _(X,X),    _(X,X),    _(N,X),    _(X,X),   _(VD,R),   _(VD,L),
-  /* 0A40 */   _(VD,R),   _(VD,B),   _(VD,B),    _(X,X),    _(X,X),    _(X,X),    _(X,X),   _(VD,T),
-  /* 0A48 */   _(VD,T),    _(X,X),    _(X,X),   _(VD,T),   _(VD,T),    _(V,B),    _(X,X),    _(X,X),
-  /* 0A50 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0A58 */    _(X,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(X,X),    _(C,X),    _(X,X),
-  /* 0A60 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0A68 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0A70 */   _(Bi,X),    _(X,X),   _(CP,X),   _(CP,X),    _(X,X),   _(CM,X),    _(X,X),    _(X,X),
-  /* 0A78 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
+  /* 0A00 */  _(x,x), _(Bi,x), _(Bi,x), _(Vs,x),  _(x,x), _(VI,x), _(VI,x), _(VI,x),
+  /* 0A08 */ _(VI,x), _(VI,x), _(VI,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x), _(VI,x),
+  /* 0A10 */ _(VI,x),  _(x,x),  _(x,x), _(VI,x), _(VI,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0A18 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0A20 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0A28 */  _(C,x),  _(x,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0A30 */  _(C,x),  _(x,x),  _(C,x),  _(C,x),  _(x,x),  _(C,x),  _(C,x),  _(x,x),
+  /* 0A38 */  _(C,x),  _(C,x),  _(x,x),  _(x,x),  _(N,x),  _(x,x),  _(M,R),  _(M,L),
+  /* 0A40 */  _(M,R),  _(M,B),  _(M,B),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(M,T),
+  /* 0A48 */  _(M,T),  _(x,x),  _(x,x),  _(M,T),  _(M,T),  _(V,B),  _(x,x),  _(x,x),
+  /* 0A50 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0A58 */  _(x,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(x,x),  _(C,x),  _(x,x),
+  /* 0A60 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0A68 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0A70 */ _(Bi,x),  _(x,x), _(CP,x), _(CP,x),  _(x,x), _(CM,x),  _(x,x),  _(x,x),
+  /* 0A78 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
 
   /* Gujarati  (0A80..0AFF) */
 
-  /* 0A80 */    _(X,X),   _(Bi,X),   _(Bi,X),   _(Vs,X),    _(X,X),   _(VI,X),   _(VI,X),   _(VI,X),
-  /* 0A88 */   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),    _(X,X),   _(VI,X),
-  /* 0A90 */   _(VI,X),   _(VI,X),    _(X,X),   _(VI,X),   _(VI,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0A98 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0AA0 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0AA8 */    _(C,X),    _(X,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0AB0 */    _(C,X),    _(X,X),    _(C,X),    _(C,X),    _(X,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0AB8 */    _(C,X),    _(C,X),    _(X,X),    _(X,X),    _(N,X),    _(A,X),   _(VD,R),   _(VD,L),
-  /* 0AC0 */   _(VD,R),   _(VD,B),   _(VD,B),   _(VD,B),   _(VD,B),   _(VD,T),    _(X,X),   _(VD,T),
-  /* 0AC8 */   _(VD,T),  _(VD,TR),    _(X,X),   _(VD,R),   _(VD,R),    _(V,B),    _(X,X),    _(X,X),
-  /* 0AD0 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0AD8 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0AE0 */   _(VI,X),   _(VI,X),   _(VD,B),   _(VD,B),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0AE8 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0AF0 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0AF8 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
+  /* 0A80 */  _(x,x), _(Bi,x), _(Bi,x), _(Vs,x),  _(x,x), _(VI,x), _(VI,x), _(VI,x),
+  /* 0A88 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),  _(x,x), _(VI,x),
+  /* 0A90 */ _(VI,x), _(VI,x),  _(x,x), _(VI,x), _(VI,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0A98 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0AA0 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0AA8 */  _(C,x),  _(x,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0AB0 */  _(C,x),  _(x,x),  _(C,x),  _(C,x),  _(x,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0AB8 */  _(C,x),  _(C,x),  _(x,x),  _(x,x),  _(N,x),  _(A,x),  _(M,R),  _(M,L),
+  /* 0AC0 */  _(M,R),  _(M,B),  _(M,B),  _(M,B),  _(M,B),  _(M,T),  _(x,x),  _(M,T),
+  /* 0AC8 */  _(M,T), _(M,TR),  _(x,x),  _(M,R),  _(M,R),  _(V,B),  _(x,x),  _(x,x),
+  /* 0AD0 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0AD8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0AE0 */ _(VI,x), _(VI,x),  _(M,B),  _(M,B),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0AE8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0AF0 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0AF8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
 
   /* Oriya  (0B00..0B7F) */
 
-  /* 0B00 */    _(X,X),   _(Bi,X),   _(Bi,X),   _(Vs,X),    _(X,X),   _(VI,X),   _(VI,X),   _(VI,X),
-  /* 0B08 */   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),    _(X,X),    _(X,X),   _(VI,X),
-  /* 0B10 */   _(VI,X),    _(X,X),    _(X,X),   _(VI,X),   _(VI,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0B18 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0B20 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0B28 */    _(C,X),    _(X,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0B30 */    _(C,X),    _(X,X),    _(C,X),    _(C,X),    _(X,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0B38 */    _(C,X),    _(C,X),    _(X,X),    _(X,X),    _(N,X),    _(A,X),   _(VD,R),   _(VD,T),
-  /* 0B40 */   _(VD,R),   _(VD,B),   _(VD,B),   _(VD,B),   _(VD,B),    _(X,X),    _(X,X),   _(VD,L),
-  /* 0B48 */  _(VD,TL),    _(X,X),    _(X,X),  _(VD,LR), _(VD,TLR),    _(V,B),    _(X,X),    _(X,X),
-  /* 0B50 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),   _(VD,T),  _(VD,TR),
-  /* 0B58 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(C,X),    _(C,X),    _(X,X),    _(C,X),
-  /* 0B60 */   _(VI,X),   _(VI,X),   _(VD,B),   _(VD,B),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0B68 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0B70 */    _(X,X),    _(C,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0B78 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
+  /* 0B00 */  _(x,x), _(Bi,x), _(Bi,x), _(Vs,x),  _(x,x), _(VI,x), _(VI,x), _(VI,x),
+  /* 0B08 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),  _(x,x),  _(x,x), _(VI,x),
+  /* 0B10 */ _(VI,x),  _(x,x),  _(x,x), _(VI,x), _(VI,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0B18 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0B20 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0B28 */  _(C,x),  _(x,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0B30 */  _(C,x),  _(x,x),  _(C,x),  _(C,x),  _(x,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0B38 */  _(C,x),  _(C,x),  _(x,x),  _(x,x),  _(N,x),  _(A,x),  _(M,R),  _(M,T),
+  /* 0B40 */  _(M,R),  _(M,B),  _(M,B),  _(M,B),  _(M,B),  _(x,x),  _(x,x),  _(M,L),
+  /* 0B48 */ _(M,TL),  _(x,x),  _(x,x), _(M,LR),_(M,TLR),  _(V,B),  _(x,x),  _(x,x),
+  /* 0B50 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(M,T), _(M,TR),
+  /* 0B58 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(C,x),  _(C,x),  _(x,x),  _(C,x),
+  /* 0B60 */ _(VI,x), _(VI,x),  _(M,B),  _(M,B),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0B68 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0B70 */  _(x,x),  _(C,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0B78 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
 
   /* Tamil  (0B80..0BFF) */
 
-  /* 0B80 */    _(X,X),    _(X,X),   _(Bi,X),   _(ML,X),    _(X,X),   _(VI,X),   _(VI,X),   _(VI,X),
-  /* 0B88 */   _(VI,X),   _(VI,X),   _(VI,X),    _(X,X),    _(X,X),    _(X,X),   _(VI,X),   _(VI,X),
-  /* 0B90 */   _(VI,X),    _(X,X),   _(VI,X),   _(VI,X),   _(VI,X),    _(C,X),    _(X,X),    _(X,X),
-  /* 0B98 */    _(X,X),    _(C,X),    _(C,X),    _(X,X),    _(C,X),    _(X,X),    _(C,X),    _(C,X),
-  /* 0BA0 */    _(X,X),    _(X,X),    _(X,X),    _(C,X),    _(C,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0BA8 */    _(C,X),    _(C,X),    _(C,X),    _(X,X),    _(X,X),    _(X,X),    _(C,X),    _(C,X),
-  /* 0BB0 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0BB8 */    _(C,X),    _(C,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),   _(VD,R),   _(VD,R),
-  /* 0BC0 */   _(VD,T),   _(VD,B),   _(VD,B),    _(X,X),    _(X,X),    _(X,X),   _(VD,L),   _(VD,L),
-  /* 0BC8 */   _(VD,L),    _(X,X),  _(VD,LR),  _(VD,LR),  _(VD,LR),    _(V,T),    _(X,X),    _(X,X),
-  /* 0BD0 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),   _(VD,R),
-  /* 0BD8 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0BE0 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0BE8 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0BF0 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0BF8 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
+  /* 0B80 */  _(x,x),  _(x,x), _(Bi,x), _(ML,x),  _(x,x), _(VI,x), _(VI,x), _(VI,x),
+  /* 0B88 */ _(VI,x), _(VI,x), _(VI,x),  _(x,x),  _(x,x),  _(x,x), _(VI,x), _(VI,x),
+  /* 0B90 */ _(VI,x),  _(x,x), _(VI,x), _(VI,x), _(VI,x),  _(C,x),  _(x,x),  _(x,x),
+  /* 0B98 */  _(x,x),  _(C,x),  _(C,x),  _(x,x),  _(C,x),  _(x,x),  _(C,x),  _(C,x),
+  /* 0BA0 */  _(x,x),  _(x,x),  _(x,x),  _(C,x),  _(C,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0BA8 */  _(C,x),  _(C,x),  _(C,x),  _(x,x),  _(x,x),  _(x,x),  _(C,x),  _(C,x),
+  /* 0BB0 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0BB8 */  _(C,x),  _(C,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(M,R),  _(M,R),
+  /* 0BC0 */  _(M,T),  _(M,B),  _(M,B),  _(x,x),  _(x,x),  _(x,x),  _(M,L),  _(M,L),
+  /* 0BC8 */  _(M,L),  _(x,x), _(M,LR), _(M,LR), _(M,LR),  _(V,T),  _(x,x),  _(x,x),
+  /* 0BD0 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(M,R),
+  /* 0BD8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0BE0 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0BE8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0BF0 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0BF8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
 
   /* Telugu  (0C00..0C7F) */
 
-  /* 0C00 */    _(X,X),   _(Bi,X),   _(Bi,X),   _(Vs,X),    _(X,X),   _(VI,X),   _(VI,X),   _(VI,X),
-  /* 0C08 */   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),    _(X,X),   _(VI,X),   _(VI,X),
-  /* 0C10 */   _(VI,X),    _(X,X),   _(VI,X),   _(VI,X),   _(VI,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0C18 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0C20 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0C28 */    _(C,X),    _(X,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0C30 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(X,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0C38 */    _(C,X),    _(C,X),    _(X,X),    _(X,X),    _(X,X),    _(A,X),   _(VD,T),   _(VD,T),
-  /* 0C40 */   _(VD,T),   _(VD,R),   _(VD,R),   _(VD,R),   _(VD,R),    _(X,X),   _(VD,T),   _(VD,T),
-  /* 0C48 */  _(VD,TB),    _(X,X),   _(VD,T),   _(VD,T),   _(VD,T),    _(V,T),    _(X,X),    _(X,X),
-  /* 0C50 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),   _(VD,T),   _(VD,B),    _(X,X),
-  /* 0C58 */    _(C,X),    _(C,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0C60 */   _(VI,X),   _(VI,X),   _(VD,B),   _(VD,B),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0C68 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0C70 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0C78 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
+  /* 0C00 */  _(x,x), _(Bi,x), _(Bi,x), _(Vs,x),  _(x,x), _(VI,x), _(VI,x), _(VI,x),
+  /* 0C08 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),  _(x,x), _(VI,x), _(VI,x),
+  /* 0C10 */ _(VI,x),  _(x,x), _(VI,x), _(VI,x), _(VI,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0C18 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0C20 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0C28 */  _(C,x),  _(x,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0C30 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(x,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0C38 */  _(C,x),  _(C,x),  _(x,x),  _(x,x),  _(x,x),  _(A,x),  _(M,T),  _(M,T),
+  /* 0C40 */  _(M,T),  _(M,R),  _(M,R),  _(M,R),  _(M,R),  _(x,x),  _(M,T),  _(M,T),
+  /* 0C48 */ _(M,TB),  _(x,x),  _(M,T),  _(M,T),  _(M,T),  _(V,T),  _(x,x),  _(x,x),
+  /* 0C50 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(M,T),  _(M,B),  _(x,x),
+  /* 0C58 */  _(C,x),  _(C,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0C60 */ _(VI,x), _(VI,x),  _(M,B),  _(M,B),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0C68 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0C70 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0C78 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
 
   /* Kannada  (0C80..0CFF) */
 
-  /* 0C80 */    _(X,X),    _(X,X),   _(Bi,X),   _(Vs,X),    _(X,X),   _(VI,X),   _(VI,X),   _(VI,X),
-  /* 0C88 */   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),    _(X,X),   _(VI,X),   _(VI,X),
-  /* 0C90 */   _(VI,X),    _(X,X),   _(VI,X),   _(VI,X),   _(VI,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0C98 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0CA0 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0CA8 */    _(C,X),    _(X,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0CB0 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(X,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0CB8 */    _(C,X),    _(C,X),    _(X,X),    _(X,X),    _(N,X),    _(A,X),   _(VD,R),   _(VD,T),
-  /* 0CC0 */  _(VD,TR),   _(VD,R),   _(VD,R),   _(VD,R),   _(VD,R),    _(X,X),   _(VD,T),  _(VD,TR),
-  /* 0CC8 */  _(VD,TR),    _(X,X),  _(VD,TR),  _(VD,TR),   _(VD,T),    _(V,T),    _(X,X),    _(X,X),
-  /* 0CD0 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),   _(VD,R),   _(VD,R),    _(X,X),
-  /* 0CD8 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(C,X),    _(X,X),
-  /* 0CE0 */   _(VI,X),   _(VI,X),   _(VD,B),   _(VD,B),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0CE8 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0CF0 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0CF8 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
+  /* 0C80 */  _(x,x),  _(x,x), _(Bi,x), _(Vs,x),  _(x,x), _(VI,x), _(VI,x), _(VI,x),
+  /* 0C88 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),  _(x,x), _(VI,x), _(VI,x),
+  /* 0C90 */ _(VI,x),  _(x,x), _(VI,x), _(VI,x), _(VI,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0C98 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0CA0 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0CA8 */  _(C,x),  _(x,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0CB0 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(x,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0CB8 */  _(C,x),  _(C,x),  _(x,x),  _(x,x),  _(N,x),  _(A,x),  _(M,R),  _(M,T),
+  /* 0CC0 */ _(M,TR),  _(M,R),  _(M,R),  _(M,R),  _(M,R),  _(x,x),  _(M,T), _(M,TR),
+  /* 0CC8 */ _(M,TR),  _(x,x), _(M,TR), _(M,TR),  _(M,T),  _(V,T),  _(x,x),  _(x,x),
+  /* 0CD0 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(M,R),  _(M,R),  _(x,x),
+  /* 0CD8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(C,x),  _(x,x),
+  /* 0CE0 */ _(VI,x), _(VI,x),  _(M,B),  _(M,B),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0CE8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0CF0 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0CF8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
 
   /* Malayalam  (0D00..0D7F) */
 
-  /* 0D00 */    _(X,X),    _(X,X),   _(Bi,X),   _(Vs,X),    _(X,X),   _(VI,X),   _(VI,X),   _(VI,X),
-  /* 0D08 */   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),    _(X,X),   _(VI,X),   _(VI,X),
-  /* 0D10 */   _(VI,X),    _(X,X),   _(VI,X),   _(VI,X),   _(VI,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0D18 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0D20 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0D28 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0D30 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0D38 */    _(C,X),    _(C,X),    _(C,X),    _(X,X),    _(X,X),    _(A,X),   _(VD,R),   _(VD,R),
-  /* 0D40 */   _(VD,R),   _(VD,R),   _(VD,R),   _(VD,B),   _(VD,B),    _(X,X),   _(VD,L),   _(VD,L),
-  /* 0D48 */   _(VD,L),    _(X,X),  _(VD,LR),  _(VD,LR),  _(VD,LR),    _(V,T),   _(CR,X),    _(X,X),
-  /* 0D50 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),   _(VD,R),
-  /* 0D58 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0D60 */   _(VI,X),   _(VI,X),   _(VD,B),   _(VD,B),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0D68 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0D70 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0D78 */    _(X,X),    _(X,X),   _(CD,X),   _(CD,X),   _(CD,X),   _(CD,X),   _(CD,X),   _(CD,X),
+  /* 0D00 */  _(x,x),  _(x,x), _(Bi,x), _(Vs,x),  _(x,x), _(VI,x), _(VI,x), _(VI,x),
+  /* 0D08 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),  _(x,x), _(VI,x), _(VI,x),
+  /* 0D10 */ _(VI,x),  _(x,x), _(VI,x), _(VI,x), _(VI,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0D18 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0D20 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0D28 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0D30 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0D38 */  _(C,x),  _(C,x),  _(C,x),  _(x,x),  _(x,x),  _(A,x),  _(M,R),  _(M,R),
+  /* 0D40 */  _(M,R),  _(M,R),  _(M,R),  _(M,B),  _(M,B),  _(x,x),  _(M,L),  _(M,L),
+  /* 0D48 */  _(M,L),  _(x,x), _(M,LR), _(M,LR), _(M,LR),  _(V,T), _(CR,x),  _(x,x),
+  /* 0D50 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(M,R),
+  /* 0D58 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0D60 */ _(VI,x), _(VI,x),  _(M,B),  _(M,B),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0D68 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0D70 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0D78 */  _(x,x),  _(x,x), _(CD,x), _(CD,x), _(CD,x), _(CD,x), _(CD,x), _(CD,x),
 
   /* Sinhala  (0D80..0DFF) */
 
-  /* 0D80 */    _(X,X),    _(X,X),   _(Bi,X),   _(Vs,X),    _(X,X),   _(VI,X),   _(VI,X),   _(VI,X),
-  /* 0D88 */   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),
-  /* 0D90 */   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),    _(X,X),
-  /* 0D98 */    _(X,X),    _(X,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0DA0 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0DA8 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0DB0 */    _(C,X),    _(C,X),    _(X,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0DB8 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(X,X),    _(C,X),    _(X,X),    _(X,X),
-  /* 0DC0 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(X,X),
-  /* 0DC8 */    _(X,X),    _(X,X),    _(V,T),    _(X,X),    _(X,X),    _(X,X),    _(X,X),   _(VD,R),
-  /* 0DD0 */   _(VD,R),   _(VD,R),   _(VD,T),   _(VD,T),   _(VD,B),    _(X,X),   _(VD,B),    _(X,X),
-  /* 0DD8 */   _(VD,R),   _(VD,L),  _(VD,TL),   _(VD,L),  _(VD,LR),  _(VD,LR),  _(VD,LR),   _(VD,R),
-  /* 0DE0 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0DE8 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0DF0 */    _(X,X),    _(X,X),   _(VD,R),   _(VD,R),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0DF8 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
+  /* 0D80 */  _(x,x),  _(x,x), _(Bi,x), _(Vs,x),  _(x,x), _(VI,x), _(VI,x), _(VI,x),
+  /* 0D88 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
+  /* 0D90 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),  _(x,x),
+  /* 0D98 */  _(x,x),  _(x,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0DA0 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0DA8 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0DB0 */  _(C,x),  _(C,x),  _(x,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0DB8 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(x,x),  _(C,x),  _(x,x),  _(x,x),
+  /* 0DC0 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(x,x),
+  /* 0DC8 */  _(x,x),  _(x,x),  _(V,T),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(M,R),
+  /* 0DD0 */  _(M,R),  _(M,R),  _(M,T),  _(M,T),  _(M,B),  _(x,x),  _(M,B),  _(x,x),
+  /* 0DD8 */  _(M,R),  _(M,L), _(M,TL),  _(M,L), _(M,LR), _(M,LR), _(M,LR),  _(M,R),
+  /* 0DE0 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0DE8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0DF0 */  _(x,x),  _(x,x),  _(M,R),  _(M,R),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0DF8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
 
   /* Thai  (0E00..0E7F) */
 
-  /* 0E00 */    _(X,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0E08 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0E10 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0E18 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0E20 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0E28 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(X,X),
-  /* 0E30 */   _(VD,R),   _(VD,T),   _(VD,R),   _(VD,R),   _(VD,T),   _(VD,T),   _(VD,T),   _(VD,T),
-  /* 0E38 */   _(VD,B),   _(VD,B),    _(V,B),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0E40 */ _(VD,VOL), _(VD,VOL), _(VD,VOL), _(VD,VOL), _(VD,VOL),   _(VD,R),    _(X,X),   _(VD,T),
-  /* 0E48 */   _(TM,X),   _(TM,X),   _(TM,X),   _(TM,X),    _(X,X),   _(Bi,X),    _(V,T),    _(X,X),
-  /* 0E50 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0E58 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0E60 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0E68 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0E70 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0E78 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
+  /* 0E00 */  _(x,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0E08 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0E10 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0E18 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0E20 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0E28 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(x,x),
+  /* 0E30 */  _(M,R),  _(M,T),  _(M,R),  _(M,R),  _(M,T),  _(M,T),  _(M,T),  _(M,T),
+  /* 0E38 */  _(M,B),  _(M,B),  _(V,B),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0E40 */_(M,VOL),_(M,VOL),_(M,VOL),_(M,VOL),_(M,VOL),  _(M,R),  _(x,x),  _(M,T),
+  /* 0E48 */ _(TM,x), _(TM,x), _(TM,x), _(TM,x),  _(x,x), _(Bi,x),  _(V,T),  _(x,x),
+  /* 0E50 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0E58 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0E60 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0E68 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0E70 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0E78 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
 
   /* Lao  (0E80..0EFF) */
 
-  /* 0E80 */    _(X,X),    _(C,X),    _(C,X),    _(X,X),    _(C,X),    _(X,X),    _(X,X),    _(C,X),
-  /* 0E88 */    _(C,X),    _(X,X),    _(C,X),    _(X,X),    _(X,X),    _(C,X),    _(X,X),    _(X,X),
-  /* 0E90 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0E98 */    _(X,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0EA0 */    _(X,X),    _(C,X),    _(C,X),    _(C,X),    _(X,X),    _(C,X),    _(X,X),    _(C,X),
-  /* 0EA8 */    _(X,X),    _(X,X),    _(C,X),    _(C,X),    _(X,X),    _(C,X),    _(C,X),    _(X,X),
-  /* 0EB0 */   _(VD,R),   _(VD,T),   _(VD,R),   _(VD,R),   _(VD,T),   _(VD,T),   _(VD,T),   _(VD,T),
-  /* 0EB8 */   _(VD,B),   _(VD,B),    _(X,X),   _(VD,T),   _(CM,X),   _(CM,X),    _(X,X),    _(X,X),
-  /* 0EC0 */ _(VD,VOL), _(VD,VOL), _(VD,VOL), _(VD,VOL), _(VD,VOL),    _(X,X),    _(X,X),    _(X,X),
-  /* 0EC8 */   _(TM,X),   _(TM,X),   _(TM,X),   _(TM,X),    _(X,X),   _(Bi,X),    _(X,X),    _(X,X),
-  /* 0ED0 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0ED8 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(C,X),    _(C,X),    _(X,X),    _(X,X),
-  /* 0EE0 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0EE8 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0EF0 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0EF8 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
+  /* 0E80 */  _(x,x),  _(C,x),  _(C,x),  _(x,x),  _(C,x),  _(x,x),  _(x,x),  _(C,x),
+  /* 0E88 */  _(C,x),  _(x,x),  _(C,x),  _(x,x),  _(x,x),  _(C,x),  _(x,x),  _(x,x),
+  /* 0E90 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0E98 */  _(x,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0EA0 */  _(x,x),  _(C,x),  _(C,x),  _(C,x),  _(x,x),  _(C,x),  _(x,x),  _(C,x),
+  /* 0EA8 */  _(x,x),  _(x,x),  _(C,x),  _(C,x),  _(x,x),  _(C,x),  _(C,x),  _(x,x),
+  /* 0EB0 */  _(M,R),  _(M,T),  _(M,R),  _(M,R),  _(M,T),  _(M,T),  _(M,T),  _(M,T),
+  /* 0EB8 */  _(M,B),  _(M,B),  _(x,x),  _(M,T), _(CM,x), _(CM,x),  _(x,x),  _(x,x),
+  /* 0EC0 */_(M,VOL),_(M,VOL),_(M,VOL),_(M,VOL),_(M,VOL),  _(x,x),  _(x,x),  _(x,x),
+  /* 0EC8 */ _(TM,x), _(TM,x), _(TM,x), _(TM,x),  _(x,x), _(Bi,x),  _(x,x),  _(x,x),
+  /* 0ED0 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0ED8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(C,x),  _(C,x),  _(x,x),  _(x,x),
+  /* 0EE0 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0EE8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0EF0 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0EF8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
 
   /* Tibetan  (0F00..0FFF) */
 
-  /* 0F00 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0F08 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0F10 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0F18 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0F20 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0F28 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0F30 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0F38 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0F40 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0F48 */    _(X,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0F50 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0F58 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0F60 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 0F68 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0F70 */    _(X,X),   _(VD,B),   _(VD,T),  _(VD,TB),   _(VD,B),   _(VD,B),  _(VD,TB),  _(VD,TB),
-  /* 0F78 */  _(VD,TB),  _(VD,TB),   _(VD,T),   _(VD,T),   _(VD,T),   _(VD,T),   _(Bi,X),   _(Vs,X),
-  /* 0F80 */   _(VD,T),  _(VD,TB),   _(Bi,X),   _(Bi,X),    _(V,B),    _(A,X),    _(X,X),    _(X,X),
-  /* 0F88 */  _(CHL,X),  _(CHL,X),  _(CHL,X),  _(CHL,X),  _(CHL,X),   _(CS,X),   _(CS,X),   _(CS,X),
-  /* 0F90 */   _(CS,X),   _(CS,X),   _(CS,X),   _(CS,X),   _(CS,X),   _(CS,X),   _(CS,X),   _(CS,X),
-  /* 0F98 */    _(X,X),   _(CS,X),   _(CS,X),   _(CS,X),   _(CS,X),   _(CS,X),   _(CS,X),   _(CS,X),
-  /* 0FA0 */   _(CS,X),   _(CS,X),   _(CS,X),   _(CS,X),   _(CS,X),   _(CS,X),   _(CS,X),   _(CS,X),
-  /* 0FA8 */   _(CS,X),   _(CS,X),   _(CS,X),   _(CS,X),   _(CS,X),   _(CS,X),   _(CS,X),   _(CS,X),
-  /* 0FB0 */   _(CS,X),   _(CS,X),   _(CS,X),   _(CS,X),   _(CS,X),   _(CS,X),   _(CS,X),   _(CS,X),
-  /* 0FB8 */   _(CS,X),   _(CS,X),   _(CS,X),   _(CS,X),   _(CS,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0FC0 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0FC8 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0FD0 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0FD8 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0FE0 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0FE8 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0FF0 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 0FF8 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
+  /* 0F00 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0F08 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0F10 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0F18 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0F20 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0F28 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0F30 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0F38 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0F40 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0F48 */  _(x,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0F50 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0F58 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0F60 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0F68 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0F70 */  _(x,x),  _(M,B),  _(M,T), _(M,TB),  _(M,B),  _(M,B), _(M,TB), _(M,TB),
+  /* 0F78 */ _(M,TB), _(M,TB),  _(M,T),  _(M,T),  _(M,T),  _(M,T), _(Bi,x), _(Vs,x),
+  /* 0F80 */  _(M,T), _(M,TB), _(Bi,x), _(Bi,x),  _(V,B),  _(A,x),  _(x,x),  _(x,x),
+  /* 0F88 */_(CHL,x),_(CHL,x),_(CHL,x),_(CHL,x),_(CHL,x), _(CS,x), _(CS,x), _(CS,x),
+  /* 0F90 */ _(CS,x), _(CS,x), _(CS,x), _(CS,x), _(CS,x), _(CS,x), _(CS,x), _(CS,x),
+  /* 0F98 */  _(x,x), _(CS,x), _(CS,x), _(CS,x), _(CS,x), _(CS,x), _(CS,x), _(CS,x),
+  /* 0FA0 */ _(CS,x), _(CS,x), _(CS,x), _(CS,x), _(CS,x), _(CS,x), _(CS,x), _(CS,x),
+  /* 0FA8 */ _(CS,x), _(CS,x), _(CS,x), _(CS,x), _(CS,x), _(CS,x), _(CS,x), _(CS,x),
+  /* 0FB0 */ _(CS,x), _(CS,x), _(CS,x), _(CS,x), _(CS,x), _(CS,x), _(CS,x), _(CS,x),
+  /* 0FB8 */ _(CS,x), _(CS,x), _(CS,x), _(CS,x), _(CS,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0FC0 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0FC8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0FD0 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0FD8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0FE0 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0FE8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0FF0 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0FF8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
 
   /* Myanmar  (1000..109F) */
 
-  /* 1000 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 1008 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 1010 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 1018 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 1020 */    _(C,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),
-  /* 1028 */   _(VI,X),   _(VI,X),   _(VI,X),   _(VD,R),   _(VD,R),   _(VD,T),   _(VD,T),   _(VD,B),
-  /* 1030 */   _(VD,B),   _(VD,L),   _(VD,T),   _(VD,T),   _(VD,T),   _(VD,T),   _(Bi,X),   _(TM,X),
-  /* 1038 */   _(Vs,X),    _(V,I),    _(V,T),   _(CM,X),   _(CM,X),   _(CM,X),   _(CM,X),    _(C,X),
-  /* 1040 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 1048 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 1050 */    _(C,X),    _(C,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VD,R),   _(VD,R),
-  /* 1058 */   _(VD,B),   _(VD,B),    _(C,X),    _(C,X),    _(C,X),    _(C,X),   _(CM,X),   _(CM,X),
-  /* 1060 */   _(CM,X),    _(C,X),   _(VD,R),   _(TM,X),   _(TM,X),    _(C,X),    _(C,X),   _(VD,R),
-  /* 1068 */   _(VD,R),   _(TM,X),   _(TM,X),   _(TM,X),   _(TM,X),   _(TM,X),    _(C,X),    _(C,X),
-  /* 1070 */    _(C,X),   _(VD,T),   _(VD,T),   _(VD,T),   _(VD,T),    _(C,X),    _(C,X),    _(C,X),
-  /* 1078 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 1080 */    _(C,X),    _(C,X),   _(CM,X),   _(VD,R),   _(VD,L),   _(VD,T),   _(VD,T),   _(TM,X),
-  /* 1088 */   _(TM,X),   _(TM,X),   _(TM,X),   _(TM,X),   _(TM,X),   _(TM,X),    _(C,X),   _(TM,X),
-  /* 1090 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 1098 */    _(X,X),    _(X,X),   _(TM,X),   _(TM,X),   _(VD,R),   _(VD,T),    _(X,X),    _(X,X),
+  /* 1000 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1008 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1010 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1018 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1020 */  _(C,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
+  /* 1028 */ _(VI,x), _(VI,x), _(VI,x),  _(M,R),  _(M,R),  _(M,T),  _(M,T),  _(M,B),
+  /* 1030 */  _(M,B),  _(M,L),  _(M,T),  _(M,T),  _(M,T),  _(M,T), _(Bi,x), _(TM,x),
+  /* 1038 */ _(Vs,x),  _(V,I),  _(V,T), _(CM,x), _(CM,x), _(CM,x), _(CM,x),  _(C,x),
+  /* 1040 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 1048 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 1050 */  _(C,x),  _(C,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),  _(M,R),  _(M,R),
+  /* 1058 */  _(M,B),  _(M,B),  _(C,x),  _(C,x),  _(C,x),  _(C,x), _(CM,x), _(CM,x),
+  /* 1060 */ _(CM,x),  _(C,x),  _(M,R), _(TM,x), _(TM,x),  _(C,x),  _(C,x),  _(M,R),
+  /* 1068 */  _(M,R), _(TM,x), _(TM,x), _(TM,x), _(TM,x), _(TM,x),  _(C,x),  _(C,x),
+  /* 1070 */  _(C,x),  _(M,T),  _(M,T),  _(M,T),  _(M,T),  _(C,x),  _(C,x),  _(C,x),
+  /* 1078 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1080 */  _(C,x),  _(C,x), _(CM,x),  _(M,R),  _(M,L),  _(M,T),  _(M,T), _(TM,x),
+  /* 1088 */ _(TM,x), _(TM,x), _(TM,x), _(TM,x), _(TM,x), _(TM,x),  _(C,x), _(TM,x),
+  /* 1090 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 1098 */  _(x,x),  _(x,x), _(TM,x), _(TM,x),  _(M,R),  _(M,T),  _(x,x),  _(x,x),
 };
 
 static const INDIC_TABLE_ELEMENT_TYPE indic_table_0x1700[] =
@@ -384,50 +384,50 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table_0x1700[] =
 
   /* Tagalog  (1700..171F) */
 
-  /* 1700 */   _(VI,X),   _(VI,X),   _(VI,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 1708 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(X,X),    _(C,X),    _(C,X),
-  /* 1710 */    _(C,X),    _(C,X),   _(VD,T),   _(VD,B),    _(V,B),    _(X,X),    _(X,X),    _(X,X),
-  /* 1718 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
+  /* 1700 */ _(VI,x), _(VI,x), _(VI,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1708 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(x,x),  _(C,x),  _(C,x),
+  /* 1710 */  _(C,x),  _(C,x),  _(M,T),  _(M,B),  _(V,B),  _(x,x),  _(x,x),  _(x,x),
+  /* 1718 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
 
   /* Hanunoo  (1720..173F) */
 
-  /* 1720 */   _(VI,X),   _(VI,X),   _(VI,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 1728 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 1730 */    _(C,X),    _(C,X),   _(VD,T),   _(VD,B),    _(V,B),    _(X,X),    _(X,X),    _(X,X),
-  /* 1738 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
+  /* 1720 */ _(VI,x), _(VI,x), _(VI,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1728 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1730 */  _(C,x),  _(C,x),  _(M,T),  _(M,B),  _(V,B),  _(x,x),  _(x,x),  _(x,x),
+  /* 1738 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
 
   /* Buhid  (1740..175F) */
 
-  /* 1740 */   _(VI,X),   _(VI,X),   _(VI,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 1748 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 1750 */    _(C,X),    _(C,X),   _(VD,T),   _(VD,B),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 1758 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
+  /* 1740 */ _(VI,x), _(VI,x), _(VI,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1748 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1750 */  _(C,x),  _(C,x),  _(M,T),  _(M,B),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 1758 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
 
   /* Tagbanwa  (1760..177F) */
 
-  /* 1760 */   _(VI,X),   _(VI,X),   _(VI,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 1768 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(X,X),    _(C,X),    _(C,X),
-  /* 1770 */    _(C,X),    _(X,X),   _(VD,T),   _(VD,B),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 1778 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
+  /* 1760 */ _(VI,x), _(VI,x), _(VI,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1768 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(x,x),  _(C,x),  _(C,x),
+  /* 1770 */  _(C,x),  _(x,x),  _(M,T),  _(M,B),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 1778 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
 
   /* Khmer  (1780..17FF) */
 
-  /* 1780 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 1788 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 1790 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 1798 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 17A0 */    _(C,X),    _(C,X),    _(C,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),
-  /* 17A8 */   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),
-  /* 17B0 */   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),    _(X,X),    _(X,X),   _(VD,R),   _(VD,T),
-  /* 17B8 */   _(VD,T),   _(VD,T),   _(VD,T),   _(VD,B),   _(VD,B),   _(VD,B),  _(VD,TL), _(VD,TLR),
-  /* 17C0 */  _(VD,LR),   _(VD,L),   _(VD,L),   _(VD,L),  _(VD,LR),  _(VD,LR),   _(Bi,X),   _(Vs,X),
-  /* 17C8 */   _(VD,R),   _(RS,X),   _(RS,X),    _(X,X),   _(CR,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 17D0 */    _(X,X),    _(V,T),    _(V,I),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 17D8 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(A,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 17E0 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 17E8 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 17F0 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 17F8 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
+  /* 1780 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1788 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1790 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1798 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 17A0 */  _(C,x),  _(C,x),  _(C,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
+  /* 17A8 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
+  /* 17B0 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x),  _(x,x),  _(x,x),  _(M,R),  _(M,T),
+  /* 17B8 */  _(M,T),  _(M,T),  _(M,T),  _(M,B),  _(M,B),  _(M,B), _(M,TL),_(M,TLR),
+  /* 17C0 */ _(M,LR),  _(M,L),  _(M,L),  _(M,L), _(M,LR), _(M,LR), _(Bi,x), _(Vs,x),
+  /* 17C8 */  _(M,R), _(RS,x), _(RS,x),  _(x,x), _(CR,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 17D0 */  _(x,x),  _(V,T),  _(V,I),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 17D8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(A,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 17E0 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 17E8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 17F0 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 17F8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
 };
 
 static const INDIC_TABLE_ELEMENT_TYPE indic_table_0x1900[] =
@@ -435,75 +435,75 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table_0x1900[] =
 
   /* Limbu  (1900..194F) */
 
-  /* 1900 */   _(CP,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 1908 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 1910 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 1918 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 1920 */   _(VD,T),   _(VD,T),   _(VD,B),   _(VD,R),   _(VD,R),  _(VD,TR),  _(VD,TR),   _(VD,T),
-  /* 1928 */   _(VD,T),   _(CS,X),   _(CS,X),   _(CS,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 1930 */   _(CF,X),   _(CF,X),   _(Bi,X),   _(CF,X),   _(CF,X),   _(CF,X),   _(CF,X),   _(CF,X),
-  /* 1938 */   _(CF,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 1940 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 1948 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
+  /* 1900 */ _(CP,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1908 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1910 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1918 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 1920 */  _(M,T),  _(M,T),  _(M,B),  _(M,R),  _(M,R), _(M,TR), _(M,TR),  _(M,T),
+  /* 1928 */  _(M,T), _(CS,x), _(CS,x), _(CS,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 1930 */ _(CF,x), _(CF,x), _(Bi,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x),
+  /* 1938 */ _(CF,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 1940 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 1948 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
 
   /* Tai Le  (1950..197F) */
 
-  /* 1950 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 1958 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 1960 */    _(C,X),    _(C,X),    _(C,X),   _(Vo,X),   _(Vo,X),   _(Vo,X),   _(Vo,X),   _(Vo,X),
-  /* 1968 */   _(Vo,X),   _(Vo,X),   _(Vo,X),   _(Vo,X),   _(Vo,X),   _(Vo,X),    _(X,X),    _(X,X),
-  /* 1970 */   _(TL,X),   _(TL,X),   _(TL,X),   _(TL,X),   _(TL,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 1978 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
+  /* 1950 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1958 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1960 */  _(C,x),  _(C,x),  _(C,x), _(Vo,x), _(Vo,x), _(Vo,x), _(Vo,x), _(Vo,x),
+  /* 1968 */ _(Vo,x), _(Vo,x), _(Vo,x), _(Vo,x), _(Vo,x), _(Vo,x),  _(x,x),  _(x,x),
+  /* 1970 */ _(TL,x), _(TL,x), _(TL,x), _(TL,x), _(TL,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 1978 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
 
   /* New Tai Lue  (1980..19DF) */
 
-  /* 1980 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 1988 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 1990 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 1998 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 19A0 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 19A8 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 19B0 */   _(VD,R),   _(VD,R),   _(VD,R),   _(VD,R),   _(VD,R),   _(VD,L),   _(VD,L),   _(VD,L),
-  /* 19B8 */   _(VD,R),   _(VD,R),   _(VD,L),   _(VD,R),   _(VD,R),   _(VD,R),   _(VD,R),   _(VD,R),
-  /* 19C0 */   _(VD,R),   _(CF,X),   _(CF,X),   _(CF,X),   _(CF,X),   _(CF,X),   _(CF,X),   _(CF,X),
-  /* 19C8 */   _(TM,X),   _(TM,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 19D0 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 19D8 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
+  /* 1980 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1988 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1990 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1998 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 19A0 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 19A8 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 19B0 */  _(M,R),  _(M,R),  _(M,R),  _(M,R),  _(M,R),  _(M,L),  _(M,L),  _(M,L),
+  /* 19B8 */  _(M,R),  _(M,R),  _(M,L),  _(M,R),  _(M,R),  _(M,R),  _(M,R),  _(M,R),
+  /* 19C0 */  _(M,R), _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x),
+  /* 19C8 */ _(TM,x), _(TM,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 19D0 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 19D8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
 
   /* FILLER  (19E0..19FF) */
 
-  /* 19E0 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 19E8 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 19F0 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 19F8 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
+  /* 19E0 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 19E8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 19F0 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 19F8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
 
   /* Buginese  (1A00..1A1F) */
 
-  /* 1A00 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 1A08 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 1A10 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),   _(VD,T),
-  /* 1A18 */   _(VD,B),   _(VD,L),   _(VD,R),   _(VD,L),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
+  /* 1A00 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1A08 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1A10 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(M,T),
+  /* 1A18 */  _(M,B),  _(M,L),  _(M,R),  _(M,L),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
 
   /* Tai Tham  (1A20..1AAF) */
 
-  /* 1A20 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 1A28 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 1A30 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 1A38 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 1A40 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 1A48 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),   _(VI,X),   _(VI,X),   _(VI,X),
-  /* 1A50 */   _(VI,X),   _(VI,X),   _(VI,X),    _(C,X),    _(C,X),   _(CM,X),   _(CM,X),   _(CF,X),
-  /* 1A58 */   _(CF,X),   _(CF,X),   _(CF,X),   _(CF,X),   _(CF,X),   _(CF,X),   _(CF,X),    _(X,X),
-  /* 1A60 */    _(V,I),   _(VD,R),   _(VD,T),   _(VD,R),   _(VD,R),   _(VD,T),   _(VD,T),   _(VD,T),
-  /* 1A68 */   _(VD,T),   _(VD,B),   _(VD,B),   _(VD,T),   _(VD,B),   _(VD,R),   _(VD,L),   _(VD,L),
-  /* 1A70 */   _(VD,L),   _(VD,L),   _(VD,L),   _(VD,T),   _(VD,T),   _(TM,X),   _(TM,X),   _(TM,X),
-  /* 1A78 */   _(TM,X),   _(TM,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 1A80 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 1A88 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 1A90 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 1A98 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 1AA0 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 1AA8 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
+  /* 1A20 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1A28 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1A30 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1A38 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1A40 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1A48 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x), _(VI,x), _(VI,x), _(VI,x),
+  /* 1A50 */ _(VI,x), _(VI,x), _(VI,x),  _(C,x),  _(C,x), _(CM,x), _(CM,x), _(CF,x),
+  /* 1A58 */ _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x),  _(x,x),
+  /* 1A60 */  _(V,I),  _(M,R),  _(M,T),  _(M,R),  _(M,R),  _(M,T),  _(M,T),  _(M,T),
+  /* 1A68 */  _(M,T),  _(M,B),  _(M,B),  _(M,T),  _(M,B),  _(M,R),  _(M,L),  _(M,L),
+  /* 1A70 */  _(M,L),  _(M,L),  _(M,L),  _(M,T),  _(M,T), _(TM,x), _(TM,x), _(TM,x),
+  /* 1A78 */ _(TM,x), _(TM,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 1A80 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 1A88 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 1A90 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 1A98 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 1AA0 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 1AA8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
 };
 
 static const INDIC_TABLE_ELEMENT_TYPE indic_table_0x1b00[] =
@@ -511,57 +511,57 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table_0x1b00[] =
 
   /* Balinese  (1B00..1B7F) */
 
-  /* 1B00 */   _(Bi,X),   _(Bi,X),   _(Bi,X),   _(CR,X),   _(Vs,X),   _(VI,X),   _(VI,X),   _(VI,X),
-  /* 1B08 */   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),
-  /* 1B10 */   _(VI,X),   _(VI,X),   _(VI,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 1B18 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 1B20 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 1B28 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 1B30 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(N,X),   _(VD,R),   _(VD,T),   _(VD,T),
-  /* 1B38 */   _(VD,B),   _(VD,B),   _(VD,B),  _(VD,BR),  _(VD,TB), _(VD,TBR),   _(VD,L),   _(VD,L),
-  /* 1B40 */  _(VD,LR),  _(VD,LR),   _(VD,T),  _(VD,TR),    _(V,R),    _(C,X),    _(C,X),    _(C,X),
-  /* 1B48 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 1B50 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 1B58 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 1B60 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 1B68 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 1B70 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 1B78 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
+  /* 1B00 */ _(Bi,x), _(Bi,x), _(Bi,x), _(CR,x), _(Vs,x), _(VI,x), _(VI,x), _(VI,x),
+  /* 1B08 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
+  /* 1B10 */ _(VI,x), _(VI,x), _(VI,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1B18 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1B20 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1B28 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1B30 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(N,x),  _(M,R),  _(M,T),  _(M,T),
+  /* 1B38 */  _(M,B),  _(M,B),  _(M,B), _(M,BR), _(M,TB),_(M,TBR),  _(M,L),  _(M,L),
+  /* 1B40 */ _(M,LR), _(M,LR),  _(M,T), _(M,TR),  _(V,R),  _(C,x),  _(C,x),  _(C,x),
+  /* 1B48 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 1B50 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 1B58 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 1B60 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 1B68 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 1B70 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 1B78 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
 
   /* Sundanese  (1B80..1BBF) */
 
-  /* 1B80 */   _(Bi,X),   _(CR,X),   _(Vs,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),
-  /* 1B88 */   _(VI,X),   _(VI,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 1B90 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 1B98 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 1BA0 */    _(C,X),   _(CS,X),   _(CS,X),   _(CS,X),   _(VD,T),   _(VD,B),   _(VD,L),   _(VD,R),
-  /* 1BA8 */   _(VD,T),   _(VD,T),    _(V,R),    _(X,X),    _(X,X),    _(X,X),    _(C,X),    _(C,X),
-  /* 1BB0 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 1BB8 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
+  /* 1B80 */ _(Bi,x), _(CR,x), _(Vs,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
+  /* 1B88 */ _(VI,x), _(VI,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1B90 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1B98 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1BA0 */  _(C,x), _(CS,x), _(CS,x), _(CS,x),  _(M,T),  _(M,B),  _(M,L),  _(M,R),
+  /* 1BA8 */  _(M,T),  _(M,T),  _(V,R),  _(x,x),  _(x,x),  _(x,x),  _(C,x),  _(C,x),
+  /* 1BB0 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 1BB8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
 
   /* Batak  (1BC0..1BFF) */
 
-  /* 1BC0 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 1BC8 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 1BD0 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 1BD8 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 1BE0 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),   _(VI,X),   _(VI,X),    _(N,X),   _(VD,X),
-  /* 1BE8 */   _(VD,X),   _(VD,X),   _(VD,X),   _(VD,X),   _(VD,X),   _(VD,X),   _(VD,X),   _(VD,X),
-  /* 1BF0 */   _(CF,X),   _(CF,X),    _(V,R),    _(V,R),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 1BF8 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
+  /* 1BC0 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1BC8 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1BD0 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1BD8 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1BE0 */  _(C,x),  _(C,x),  _(C,x),  _(C,x), _(VI,x), _(VI,x),  _(N,x),  _(M,x),
+  /* 1BE8 */  _(M,x),  _(M,x),  _(M,x),  _(M,x),  _(M,x),  _(M,x),  _(M,x),  _(M,x),
+  /* 1BF0 */ _(CF,x), _(CF,x),  _(V,R),  _(V,R),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 1BF8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
 
   /* Lepcha  (1C00..1C4F) */
 
-  /* 1C00 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 1C08 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 1C10 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 1C18 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 1C20 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),   _(CS,X),   _(CS,X),   _(VD,R),   _(VD,L),
-  /* 1C28 */   _(VD,L),  _(VD,TL),   _(VD,R),   _(VD,R),   _(VD,B),   _(CF,X),   _(CF,X),   _(CF,X),
-  /* 1C30 */   _(CF,X),   _(CF,X),   _(CF,X),   _(CF,X),   _(Bi,X),   _(Bi,X),    _(X,X),    _(N,X),
-  /* 1C38 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 1C40 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 1C48 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(C,X),    _(C,X),    _(C,X),
+  /* 1C00 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1C08 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1C10 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1C18 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1C20 */  _(C,x),  _(C,x),  _(C,x),  _(C,x), _(CS,x), _(CS,x),  _(M,R),  _(M,L),
+  /* 1C28 */  _(M,L), _(M,TL),  _(M,R),  _(M,R),  _(M,B), _(CF,x), _(CF,x), _(CF,x),
+  /* 1C30 */ _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(Bi,x), _(Bi,x),  _(x,x),  _(N,x),
+  /* 1C38 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 1C40 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 1C48 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(C,x),  _(C,x),  _(C,x),
 };
 
 static const INDIC_TABLE_ELEMENT_TYPE indic_table_0xa800[] =
@@ -569,134 +569,134 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table_0xa800[] =
 
   /* Syloti Nagri  (A800..A82F) */
 
-  /* A800 */   _(VI,X),   _(VI,X),    _(X,X),   _(VI,X),   _(VI,X),   _(VI,X),    _(V,T),    _(C,X),
-  /* A808 */    _(C,X),    _(C,X),    _(C,X),   _(Bi,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* A810 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* A818 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* A820 */    _(C,X),    _(C,X),    _(C,X),   _(VD,R),   _(VD,R),   _(VD,B),   _(VD,T),   _(VD,R),
-  /* A828 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
+  /* A800 */ _(VI,x), _(VI,x),  _(x,x), _(VI,x), _(VI,x), _(VI,x),  _(V,T),  _(C,x),
+  /* A808 */  _(C,x),  _(C,x),  _(C,x), _(Bi,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* A810 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* A818 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* A820 */  _(C,x),  _(C,x),  _(C,x),  _(M,R),  _(M,R),  _(M,B),  _(M,T),  _(M,R),
+  /* A828 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
 
   /* FILLER  (A830..A83F) */
 
-  /* A830 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* A838 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
+  /* A830 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* A838 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
 
   /* Phags-pa  (A840..A87F) */
 
-  /* A840 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* A848 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* A850 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* A858 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),   _(Vo,X),   _(Vo,X),
-  /* A860 */   _(Vo,X),   _(Vo,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),   _(Vo,X),   _(CS,X),
-  /* A868 */   _(CS,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* A870 */    _(C,X),   _(CS,X),    _(C,X),   _(Bi,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* A878 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
+  /* A840 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* A848 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* A850 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* A858 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x), _(Vo,x), _(Vo,x),
+  /* A860 */ _(Vo,x), _(Vo,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x), _(Vo,x), _(CS,x),
+  /* A868 */ _(CS,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* A870 */  _(C,x), _(CS,x),  _(C,x), _(Bi,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* A878 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
 
   /* Saurashtra  (A880..A8DF) */
 
-  /* A880 */   _(Bi,X),   _(Vs,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),
-  /* A888 */   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),
-  /* A890 */   _(VI,X),   _(VI,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* A898 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* A8A0 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* A8A8 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* A8B0 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),   _(CF,X),   _(VD,R),   _(VD,R),   _(VD,R),
-  /* A8B8 */   _(VD,R),   _(VD,R),   _(VD,R),   _(VD,R),   _(VD,R),   _(VD,R),   _(VD,R),   _(VD,R),
-  /* A8C0 */   _(VD,R),   _(VD,R),   _(VD,R),   _(VD,R),    _(V,B),    _(X,X),    _(X,X),    _(X,X),
-  /* A8C8 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* A8D0 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* A8D8 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
+  /* A880 */ _(Bi,x), _(Vs,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
+  /* A888 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
+  /* A890 */ _(VI,x), _(VI,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* A898 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* A8A0 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* A8A8 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* A8B0 */  _(C,x),  _(C,x),  _(C,x),  _(C,x), _(CF,x),  _(M,R),  _(M,R),  _(M,R),
+  /* A8B8 */  _(M,R),  _(M,R),  _(M,R),  _(M,R),  _(M,R),  _(M,R),  _(M,R),  _(M,R),
+  /* A8C0 */  _(M,R),  _(M,R),  _(M,R),  _(M,R),  _(V,B),  _(x,x),  _(x,x),  _(x,x),
+  /* A8C8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* A8D0 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* A8D8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
 
   /* FILLER  (A8E0..A8FF) */
 
-  /* A8E0 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* A8E8 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* A8F0 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* A8F8 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
+  /* A8E0 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* A8E8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* A8F0 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* A8F8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
 
   /* Kayah Li  (A900..A92F) */
 
-  /* A900 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* A908 */    _(X,X),    _(X,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* A910 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* A918 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* A920 */    _(C,X),    _(C,X),   _(Vo,X),   _(Vo,X),   _(Vo,X),   _(Vo,X),   _(Vo,X),   _(Vo,X),
-  /* A928 */   _(Vo,X),   _(Vo,X),   _(Vo,X),   _(TM,X),   _(TM,X),   _(TM,X),    _(X,X),    _(X,X),
+  /* A900 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* A908 */  _(x,x),  _(x,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* A910 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* A918 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* A920 */  _(C,x),  _(C,x), _(Vo,x), _(Vo,x), _(Vo,x), _(Vo,x), _(Vo,x), _(Vo,x),
+  /* A928 */ _(Vo,x), _(Vo,x), _(Vo,x), _(TM,x), _(TM,x), _(TM,x),  _(x,x),  _(x,x),
 
   /* Rejang  (A930..A95F) */
 
-  /* A930 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* A938 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* A940 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),   _(VD,B),
-  /* A948 */   _(VD,B),   _(VD,B),   _(VD,T),   _(VD,B),   _(VD,B),   _(VD,B),   _(VD,B),   _(CF,X),
-  /* A950 */   _(CF,X),   _(CF,X),   _(CF,X),    _(V,R),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* A958 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
+  /* A930 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* A938 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* A940 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(M,B),
+  /* A948 */  _(M,B),  _(M,B),  _(M,T),  _(M,B),  _(M,B),  _(M,B),  _(M,B), _(CF,x),
+  /* A950 */ _(CF,x), _(CF,x), _(CF,x),  _(V,R),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* A958 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
 
   /* FILLER  (A960..A97F) */
 
-  /* A960 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* A968 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* A970 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* A978 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
+  /* A960 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* A968 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* A970 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* A978 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
 
   /* Javanese  (A980..A9DF) */
 
-  /* A980 */   _(Bi,X),   _(Bi,X),   _(CR,X),   _(Vs,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),
-  /* A988 */   _(VI,X),    _(C,X),    _(C,X),    _(C,X),   _(VI,X),   _(VI,X),   _(VI,X),    _(C,X),
-  /* A990 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* A998 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* A9A0 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* A9A8 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* A9B0 */    _(C,X),    _(C,X),    _(C,X),    _(N,X),   _(VD,R),   _(VD,R),   _(VD,T),   _(VD,T),
-  /* A9B8 */   _(VD,B),   _(VD,B),   _(VD,L),   _(VD,L),   _(VD,T),   _(CS,X),   _(CM,X),   _(CM,X),
-  /* A9C0 */   _(V,BR),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* A9C8 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* A9D0 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* A9D8 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
+  /* A980 */ _(Bi,x), _(Bi,x), _(CR,x), _(Vs,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
+  /* A988 */ _(VI,x),  _(C,x),  _(C,x),  _(C,x), _(VI,x), _(VI,x), _(VI,x),  _(C,x),
+  /* A990 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* A998 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* A9A0 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* A9A8 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* A9B0 */  _(C,x),  _(C,x),  _(C,x),  _(N,x),  _(M,R),  _(M,R),  _(M,T),  _(M,T),
+  /* A9B8 */  _(M,B),  _(M,B),  _(M,L),  _(M,L),  _(M,T), _(CS,x), _(CM,x), _(CM,x),
+  /* A9C0 */ _(V,BR),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* A9C8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* A9D0 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* A9D8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
 
   /* FILLER  (A9E0..A9FF) */
 
-  /* A9E0 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* A9E8 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* A9F0 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* A9F8 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
+  /* A9E0 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* A9E8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* A9F0 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* A9F8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
 
   /* Cham  (AA00..AA5F) */
 
-  /* AA00 */   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),    _(C,X),    _(C,X),
-  /* AA08 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* AA10 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* AA18 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* AA20 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* AA28 */    _(C,X),   _(VD,T),   _(VD,T),   _(VD,T),   _(VD,T),   _(VD,B),   _(VD,T),   _(VD,L),
-  /* AA30 */   _(VD,L),   _(VD,T),   _(VD,B),   _(CM,X),   _(CM,X),   _(CM,X),   _(CM,X),    _(X,X),
-  /* AA38 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* AA40 */   _(CF,X),   _(CF,X),   _(CF,X),   _(CF,X),   _(CF,X),   _(CF,X),   _(CF,X),   _(CF,X),
-  /* AA48 */   _(CF,X),   _(CF,X),   _(CF,X),   _(CF,X),   _(CF,X),   _(CF,X),    _(X,X),    _(X,X),
-  /* AA50 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* AA58 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
+  /* AA00 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),  _(C,x),  _(C,x),
+  /* AA08 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* AA10 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* AA18 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* AA20 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* AA28 */  _(C,x),  _(M,T),  _(M,T),  _(M,T),  _(M,T),  _(M,B),  _(M,T),  _(M,L),
+  /* AA30 */  _(M,L),  _(M,T),  _(M,B), _(CM,x), _(CM,x), _(CM,x), _(CM,x),  _(x,x),
+  /* AA38 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* AA40 */ _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x),
+  /* AA48 */ _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x),  _(x,x),  _(x,x),
+  /* AA50 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* AA58 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
 
   /* Myanmar Extended-A  (AA60..AA7F) */
 
-  /* AA60 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* AA68 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* AA70 */    _(X,X),    _(C,X),    _(C,X),    _(C,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* AA78 */    _(X,X),    _(X,X),    _(C,X),   _(TM,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
+  /* AA60 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* AA68 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* AA70 */  _(x,x),  _(C,x),  _(C,x),  _(C,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* AA78 */  _(x,x),  _(x,x),  _(C,x), _(TM,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
 
   /* Tai Viet  (AA80..AADF) */
 
-  /* AA80 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* AA88 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* AA90 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* AA98 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* AAA0 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* AAA8 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* AAB0 */   _(VD,T),   _(VD,R),   _(VD,T),   _(VD,T),   _(VD,B), _(VD,VOL), _(VD,VOL),   _(VD,T),
-  /* AAB8 */   _(VD,T), _(VD,VOL),   _(VD,R), _(VD,VOL), _(VD,VOL),   _(VD,R),   _(VD,T),   _(TM,X),
-  /* AAC0 */   _(TL,X),   _(TM,X),   _(TL,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* AAC8 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* AAD0 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* AAD8 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
+  /* AA80 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* AA88 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* AA90 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* AA98 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* AAA0 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* AAA8 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* AAB0 */  _(M,T),  _(M,R),  _(M,T),  _(M,T),  _(M,B),_(M,VOL),_(M,VOL),  _(M,T),
+  /* AAB8 */  _(M,T),_(M,VOL),  _(M,R),_(M,VOL),_(M,VOL),  _(M,R),  _(M,T), _(TM,x),
+  /* AAC0 */ _(TL,x), _(TM,x), _(TL,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* AAC8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* AAD0 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* AAD8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
 };
 
 static const INDIC_TABLE_ELEMENT_TYPE indic_table_0xabc0[] =
@@ -704,14 +704,14 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table_0xabc0[] =
 
   /* Meetei Mayek  (ABC0..ABFF) */
 
-  /* ABC0 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* ABC8 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* ABD0 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* ABD8 */    _(C,X),    _(C,X),    _(C,X),   _(CF,X),   _(CF,X),   _(CF,X),   _(CF,X),   _(CF,X),
-  /* ABE0 */   _(CF,X),   _(CF,X),   _(CF,X),   _(VD,R),   _(VD,R),   _(VD,T),   _(VD,R),   _(VD,R),
-  /* ABE8 */   _(VD,B),   _(VD,R),   _(VD,R),    _(X,X),   _(TM,X),    _(V,B),    _(X,X),    _(X,X),
-  /* ABF0 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* ABF8 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
+  /* ABC0 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* ABC8 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* ABD0 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* ABD8 */  _(C,x),  _(C,x),  _(C,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x),
+  /* ABE0 */ _(CF,x), _(CF,x), _(CF,x),  _(M,R),  _(M,R),  _(M,T),  _(M,R),  _(M,R),
+  /* ABE8 */  _(M,B),  _(M,R),  _(M,R),  _(x,x), _(TM,x),  _(V,B),  _(x,x),  _(x,x),
+  /* ABF0 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* ABF8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
 };
 
 static const INDIC_TABLE_ELEMENT_TYPE indic_table_0x10a00[] =
@@ -719,18 +719,18 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table_0x10a00[] =
 
   /* Kharoshthi  (10A00..10A5F) */
 
-  /* 10A00 */    _(C,X),   _(VD,O),   _(VD,B),   _(VD,B),    _(X,X),   _(VD,T),   _(VD,O),    _(X,X),
-  /* 10A08 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),   _(VD,B),    _(X,X),   _(Bi,X),   _(Vs,X),
-  /* 10A10 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(X,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 10A18 */    _(X,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 10A20 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 10A28 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 10A30 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 10A38 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(V,I),
-  /* 10A40 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 10A48 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 10A50 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 10A58 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
+  /* 10A00 */  _(C,x),  _(M,O),  _(M,B),  _(M,B),  _(x,x),  _(M,T),  _(M,O),  _(x,x),
+  /* 10A08 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(M,B),  _(x,x), _(Bi,x), _(Vs,x),
+  /* 10A10 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(x,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 10A18 */  _(x,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 10A20 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 10A28 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 10A30 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 10A38 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(V,I),
+  /* 10A40 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 10A48 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 10A50 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 10A58 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
 };
 
 static const INDIC_TABLE_ELEMENT_TYPE indic_table_0x11000[] =
@@ -738,35 +738,35 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table_0x11000[] =
 
   /* Brahmi  (11000..1107F) */
 
-  /* 11000 */   _(Bi,X),   _(Bi,X),   _(Vs,X),    _(X,X),    _(X,X),   _(VI,X),   _(VI,X),   _(VI,X),
-  /* 11008 */   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),
-  /* 11010 */   _(VI,X),   _(VI,X),   _(VI,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 11018 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 11020 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 11028 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 11030 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 11038 */   _(VD,T),   _(VD,T),   _(VD,T),   _(VD,T),   _(VD,B),   _(VD,B),   _(VD,B),   _(VD,B),
-  /* 11040 */   _(VD,B),   _(VD,B),   _(VD,T),   _(VD,T),   _(VD,T),   _(VD,T),    _(V,T),    _(X,X),
-  /* 11048 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 11050 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 11058 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 11060 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 11068 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 11070 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 11078 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
+  /* 11000 */ _(Bi,x), _(Bi,x), _(Vs,x),  _(x,x),  _(x,x), _(VI,x), _(VI,x), _(VI,x),
+  /* 11008 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
+  /* 11010 */ _(VI,x), _(VI,x), _(VI,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 11018 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 11020 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 11028 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 11030 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 11038 */  _(M,T),  _(M,T),  _(M,T),  _(M,T),  _(M,B),  _(M,B),  _(M,B),  _(M,B),
+  /* 11040 */  _(M,B),  _(M,B),  _(M,T),  _(M,T),  _(M,T),  _(M,T),  _(V,T),  _(x,x),
+  /* 11048 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 11050 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 11058 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 11060 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 11068 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 11070 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 11078 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
 
   /* Kaithi  (11080..110CF) */
 
-  /* 11080 */   _(Bi,X),   _(Bi,X),   _(Vs,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),
-  /* 11088 */   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),   _(VI,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 11090 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 11098 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 110A0 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 110A8 */    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),    _(C,X),
-  /* 110B0 */   _(VD,R),   _(VD,L),   _(VD,R),   _(VD,B),   _(VD,B),   _(VD,T),   _(VD,T),   _(VD,R),
-  /* 110B8 */   _(VD,R),    _(V,B),    _(N,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 110C0 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
-  /* 110C8 */    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),    _(X,X),
+  /* 11080 */ _(Bi,x), _(Bi,x), _(Vs,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
+  /* 11088 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 11090 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 11098 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 110A0 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 110A8 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 110B0 */  _(M,R),  _(M,L),  _(M,R),  _(M,B),  _(M,B),  _(M,T),  _(M,T),  _(M,R),
+  /* 110B8 */  _(M,R),  _(V,B),  _(N,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 110C0 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 110C8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
 };
 
 
@@ -781,9 +781,9 @@ get_indic_categories (hb_codepoint_t u)
   if (0xABC0 <= u && u <= 0xABC0 + ARRAY_LENGTH (indic_table_0xabc0)) return indic_table_0xabc0[u - 0xABC0];
   if (0x10A00 <= u && u <= 0x10A00 + ARRAY_LENGTH (indic_table_0x10a00)) return indic_table_0x10a00[u - 0x10A00];
   if (0x11000 <= u && u <= 0x11000 + ARRAY_LENGTH (indic_table_0x11000)) return indic_table_0x11000[u - 0x11000];
-  if (unlikely (u == 0x00A0)) return _(CP,X);
-  if (unlikely (u == 0x25CC)) return _(CP,X);
-  return _(X,X);
+  if (unlikely (u == 0x00A0)) return _(CP,x);
+  if (unlikely (u == 0x25CC)) return _(CP,x);
+  return _(x,x);
 }
 
 #undef _
@@ -800,14 +800,14 @@ get_indic_categories (hb_codepoint_t u)
 #undef ISC_CS
 #undef ISC_ML
 #undef ISC_N
-#undef ISC_X
+#undef ISC_x
 #undef ISC_RS
 #undef ISC_TL
 #undef ISC_TM
 #undef ISC_V
 #undef ISC_Vs
 #undef ISC_Vo
-#undef ISC_VD
+#undef ISC_M
 #undef ISC_VI
 
 #undef IMC_B
@@ -815,7 +815,7 @@ get_indic_categories (hb_codepoint_t u)
 #undef IMC_I
 #undef IMC_L
 #undef IMC_LR
-#undef IMC_X
+#undef IMC_x
 #undef IMC_O
 #undef IMC_R
 #undef IMC_T



More information about the HarfBuzz mailing list