[USE] Map from Unicode data to USE syllabic categories
authorBehdad Esfahbod <behdad@behdad.org>
Mon, 20 Jul 2015 16:00:06 +0000 (17:00 +0100)
committerBehdad Esfahbod <behdad@behdad.org>
Mon, 20 Jul 2015 16:00:06 +0000 (17:00 +0100)
Positional sub-categories not applied yet.

src/gen-use-table.py
src/hb-ot-shape-complex-use-table.cc

index a79becb..f1484fd 100755 (executable)
@@ -63,6 +63,7 @@ property_names = [
        'Me', 'Mn', 'Nd', 'Nl', 'No', 'Pc', 'Pd', 'Pe', 'Pf', 'Pi', 'Po',
        'Ps', 'Sc', 'Sk', 'Sm', 'So', 'Zl', 'Zp', 'Zs',
        # Indic_Syllabic_Category
+       'Other',
        'Bindu',
        'Visarga',
        'Avagraha',
@@ -98,6 +99,7 @@ property_names = [
        'Number',
        'Brahmi_Joining_Number',
        # Indic_Positional_Category
+       'Not_Applicable'
        'Right',
        'Left',
        'Visual_Order_Left',
@@ -116,6 +118,13 @@ property_names = [
 class PropertyValue(object):
        def __init__(self, name_):
                self.name = name_
+       def __str__(self):
+               return self.name
+       def __eq__(self, other):
+               assert isinstance(other, basestring)
+               return self.name == other
+       def __ne__(self, other):
+               return not (self == other)
 
 property_values = {}
 
@@ -128,16 +137,21 @@ globals().update(property_values)
 
 
 def is_BASE(U, UISC, UGC):
-       return (UISC in [Number, Consonant, Consonant_Head_Letter, Consonant_Placeholder, Tone_Letter] or
+       return (UISC in [Number, Consonant, Consonant_Head_Letter,
+                       #SPEC-OUTDATED Consonant_Placeholder,
+                       Tone_Letter] or
                (UGC == Lo and UISC in [Avagraha, Bindu, Consonant_Final, Consonant_Medial,
                                        Consonant_Subjoined, Vowel, Vowel_Dependent]))
 def is_BASE_VOWEL(U, UISC, UGC):
        return UISC == Vowel_Independent
 def is_BASE_IND(U, UISC, UGC):
-       return (UISC in [Consonant_Dead, Modifying_Letter] or UGC == Po)
+       #SPEC-BROKEN return (UISC in [Consonant_Dead, Modifying_Letter] or UGC == Po)
+       return (UISC in [Consonant_Dead, Modifying_Letter] or
+               (UGC == Po and not is_BASE_OTHER(U, UISC, UGC))) # for 104E
 def is_BASE_NUM(U, UISC, UGC):
        return UISC == Brahmi_Joining_Number
 def is_BASE_OTHER(U, UISC, UGC):
+       if UISC == Consonant_Placeholder: return True #SPEC-OUTDATED
        return U in [0x00A0, 0x00D7, 0x2015, 0x2022, 0x25CC,
                     0x25FB, 0x25FC, 0x25FD, 0x25FE]
 def is_CGJ(U, UISC, UGC):
@@ -146,13 +160,15 @@ def is_CONS_FINAL(U, UISC, UGC):
        return ((UISC == Consonant_Final and UGC != Lo) or
                UISC == Consonant_Succeeding_Repha)
 def is_CONS_FINAL_MOD(U, UISC, UGC):
-       return  UISC in [Consonant_Final_Modifier, Syllable_Modifier]
+       #SPEC-OUTDATED return  UISC in [Consonant_Final_Modifier, Syllable_Modifier]
+       return  UISC == Syllable_Modifier
 def is_CONS_MED(U, UISC, UGC):
        return UISC == Consonant_Medial and UGC != Lo
 def is_CONS_MOD(U, UISC, UGC):
        return UISC in [Nukta, Gemination_Mark, Consonant_Killer]
 def is_CONS_SUB(U, UISC, UGC):
-       return UISC == Consonant_Subjoined
+       #SPEC-OUTDATED return UISC == Consonant_Subjoined
+       return UISC == Consonant_Subjoined and UGC != Lo
 def is_HALANT(U, UISC, UGC):
        return UISC in [Virama, Invisible_Stacker]
 def is_HALANT_NUM(U, UISC, UGC):
@@ -164,13 +180,18 @@ def is_ZWJ(U, UISC, UGC):
 def is_Word_Joiner(U, UISC, UGC):
        return U == 0x2060
 def is_OTHER(U, UISC, UGC):
-       return UGC == Zs # or any other SCRIPT_COMMON characters
+       #SPEC-OUTDATED return UGC == Zs # or any other SCRIPT_COMMON characters
+       return UISC == Other and not is_SYM_MOD(U, UISC, UGC)
 def is_Reserved(U, UISC, UGC):
        return UGC == 'Cn'
 def is_REPHA(U, UISC, UGC):
-       return UISC == Consonant_Preceding_Repha
+       #return UISC == Consonant_Preceding_Repha
+       #SPEC-OUTDATED hack to categorize Consonant_With_Stacker and Consonant_Prefixed
+       return UISC in [Consonant_Preceding_Repha, Consonant_With_Stacker, Consonant_Prefixed]
 def is_SYM(U, UISC, UGC):
-       return UGC in [So, Sc] or UISC == Symbol_Letter
+       if U == 0x25CC: return False #SPEC-OUTDATED
+       #SPEC-OUTDATED return UGC in [So, Sc] or UISC == Symbol_Letter
+       return UGC in [So, Sc]
 def is_SYM_MOD(U, UISC, UGC):
        return U in [0x1B6B, 0x1B6C, 0x1B6D, 0x1B6E, 0x1B6F, 0x1B70, 0x1B71, 0x1B72, 0x1B73]
 def is_VARIATION_SELECTOR(U, UISC, UGC):
@@ -209,7 +230,18 @@ use_mapping = {
        'VM':   is_VOWEL_MOD,
 }
 
-#data = map_to_use(data)
+def map_to_use(data):
+       out = {}
+       items = use_mapping.items()
+       for U,(UISC,UIPC,UGC,UBlock) in data.items():
+               evals = [(k, v(U,UISC,UGC)) for k,v in items]
+               values = [k for k,v in evals if v]
+               assert len(values) == 1, "%s %s %s %s" % (hex(U), UISC, UGC, values)
+               out[U] = (values[0], UBlock)
+       return out
+
+defaults = ('O', 'No_Block')
+data = map_to_use(data)
 
 # Remove the outliers
 singles = {}
@@ -233,55 +265,6 @@ print
 print '#include "hb-ot-shape-complex-use-private.hh"'
 print
 
-# Shorten values
-short = [{
-       "Bindu":                'Bi',
-       "Cantillation_Mark":    'Ca',
-       "Joiner":               'ZWJ',
-       "Non_Joiner":           'ZWNJ',
-       "Number":               'Nd',
-       "Visarga":              'Vs',
-       "Vowel":                'Vo',
-       "Vowel_Dependent":      'M',
-       "Other":                'x',
-       "Consonant_Placeholder":'GB',
-},{
-       "Not_Applicable":       'x',
-}]
-all_shorts = [{},{}]
-
-# Add some of the values, to make them more readable, and to avoid duplicates
-
-
-for i in range (2):
-       for v,s in short[i].items ():
-               all_shorts[i][s] = v
-
-what = ["INDIC_SYLLABIC_CATEGORY", "INDIC_POSITIONAL_CATEGORY"]
-what_short = ["SC", "PC"]
-for i in range (2):
-       print
-       vv = values[i].keys ()
-       vv.sort ()
-       for v in vv:
-               v_no_and = v.replace ('_And_', '_')
-               if v in short[i]:
-                       s = short[i][v]
-               else:
-                       s = ''.join ([c for c in v_no_and if ord ('A') <= ord (c) <= ord ('Z')])
-                       if s in all_shorts[i]:
-                               raise Exception ("Duplicate short value alias", v, all_shorts[i][s])
-                       all_shorts[i][s] = v
-                       short[i][v] = s
-               print "#define %s_%s    %s_%s   %s/* %3d chars; %s */" % \
-                       (what_short[i], s, what[i], v.upper (), \
-                       '       '* ((56-1 - len (what[i]) - 1 - len (v)) / 8), \
-                       values[i][v], v)
-print
-print "#define _(S,M) USE_COMBINE_CATEGORIES (SC_##S, PC_##M)"
-print
-print
-
 total = 0
 used = 0
 last_block = None
@@ -291,17 +274,19 @@ def print_block (block, start, end, data):
                print
                print
                print "  /* %s */" % block
+               if start % 16:
+                       print ' ' * (20 + (start % 16 * 4)),
        num = 0
        assert start % 8 == 0
        assert (end+1) % 8 == 0
        for u in range (start, end+1):
-               if u % 8 == 0:
+               if u % 16 == 0:
                        print
                        print "  /* %04X */" % u,
                if u in data:
                        num += 1
                d = data.get (u, defaults)
-               sys.stdout.write ("%9s" % ("_(%s,%s)," % (short[0][d[0]], short[1][d[1]])))
+               sys.stdout.write ("%4s," % d[0])
 
        total += end - start + 1
        used += num
@@ -316,15 +301,18 @@ num = 0
 offset = 0
 starts = []
 ends = []
+for k,v in sorted(use_mapping.items()):
+       print "#define %s       USE_%s  /* %s */" % (k, k, v.__name__[3:])
+print ""
 print "static const USE_TABLE_ELEMENT_TYPE use_table[] = {"
 for u in uu:
        if u <= last:
                continue
-       block = data[u][3]
+       block = data[u][1]
 
        start = u//8*8
        end = start+1
-       while end in uu and block == data[end][3]:
+       while end in uu and block == data[end][1]:
                end += 1
        end = (end-1)//8*8 + 7
 
@@ -365,7 +353,7 @@ for p in sorted(pages):
                print "      if (hb_in_range (u, 0x%04Xu, 0x%04Xu)) return use_table[u - 0x%04Xu + %s];" % (start, end-1, start, offset)
        for u,d in singles.items ():
                if p != u>>page_bits: continue
-               print "      if (unlikely (u == 0x%04Xu)) return _(%s,%s);" % (u, short[0][d[0]], short[1][d[1]])
+               print "      if (unlikely (u == 0x%04Xu)) return %s;" % (u, d[0])
        print "      break;"
        print ""
 print "    default:"
@@ -373,18 +361,12 @@ print "      break;"
 print "  }"
 print "  return _(x,x);"
 print "}"
-print
-print "#undef _"
-for i in range (2):
-       print
-       vv = values[i].keys ()
-       vv.sort ()
-       for v in vv:
-               print "#undef %s_%s" % \
-                       (what_short[i], short[i][v])
+print ""
+for k in sorted(use_mapping.keys()):
+       print "#undef %s" % k
 print
 print "/* == End of generated table == */"
 
-# Maintain at least 30% occupancy in the table */
-if occupancy < 30:
+# Maintain at least 50% occupancy in the table */
+if occupancy < 50:
        raise Exception ("Table too sparse, please investigate: ", occupancy)
index 8f5234c..1eb054a 100644 (file)
 
 #include "hb-ot-shape-complex-use-private.hh"
 
-
-#define SC_A   INDIC_SYLLABIC_CATEGORY_AVAGRAHA                        /*  13 chars; Avagraha */
-#define SC_Bi  INDIC_SYLLABIC_CATEGORY_BINDU                           /*  60 chars; Bindu */
-#define SC_BJN INDIC_SYLLABIC_CATEGORY_BRAHMI_JOINING_NUMBER           /*  20 chars; Brahmi_Joining_Number */
-#define SC_Ca  INDIC_SYLLABIC_CATEGORY_CANTILLATION_MARK               /*  52 chars; Cantillation_Mark */
-#define SC_C   INDIC_SYLLABIC_CATEGORY_CONSONANT                       /* 1805 chars; Consonant */
-#define SC_CD  INDIC_SYLLABIC_CATEGORY_CONSONANT_DEAD                  /*   7 chars; Consonant_Dead */
-#define SC_CF  INDIC_SYLLABIC_CATEGORY_CONSONANT_FINAL                 /*  62 chars; Consonant_Final */
-#define SC_CHL INDIC_SYLLABIC_CATEGORY_CONSONANT_HEAD_LETTER           /*   5 chars; Consonant_Head_Letter */
-#define SC_CK  INDIC_SYLLABIC_CATEGORY_CONSONANT_KILLER                /*   2 chars; Consonant_Killer */
-#define SC_CM  INDIC_SYLLABIC_CATEGORY_CONSONANT_MEDIAL                /*  22 chars; Consonant_Medial */
-#define SC_GB  INDIC_SYLLABIC_CATEGORY_CONSONANT_PLACEHOLDER           /*  13 chars; Consonant_Placeholder */
-#define SC_CPR INDIC_SYLLABIC_CATEGORY_CONSONANT_PRECEDING_REPHA       /*   1 chars; Consonant_Preceding_Repha */
-#define SC_CP  INDIC_SYLLABIC_CATEGORY_CONSONANT_PREFIXED              /*   2 chars; Consonant_Prefixed */
-#define SC_CS  INDIC_SYLLABIC_CATEGORY_CONSONANT_SUBJOINED             /*  61 chars; Consonant_Subjoined */
-#define SC_CSR INDIC_SYLLABIC_CATEGORY_CONSONANT_SUCCEEDING_REPHA      /*   4 chars; Consonant_Succeeding_Repha */
-#define SC_CWS INDIC_SYLLABIC_CATEGORY_CONSONANT_WITH_STACKER          /*   4 chars; Consonant_With_Stacker */
-#define SC_GM  INDIC_SYLLABIC_CATEGORY_GEMINATION_MARK                 /*   2 chars; Gemination_Mark */
-#define SC_IS  INDIC_SYLLABIC_CATEGORY_INVISIBLE_STACKER               /*   7 chars; Invisible_Stacker */
-#define SC_ZWJ INDIC_SYLLABIC_CATEGORY_JOINER                          /*   1 chars; Joiner */
-#define SC_ML  INDIC_SYLLABIC_CATEGORY_MODIFYING_LETTER                /*   1 chars; Modifying_Letter */
-#define SC_ZWNJ        INDIC_SYLLABIC_CATEGORY_NON_JOINER                      /*   1 chars; Non_Joiner */
-#define SC_N   INDIC_SYLLABIC_CATEGORY_NUKTA                           /*  23 chars; Nukta */
-#define SC_Nd  INDIC_SYLLABIC_CATEGORY_NUMBER                          /* 420 chars; Number */
-#define SC_NJ  INDIC_SYLLABIC_CATEGORY_NUMBER_JOINER                   /*   1 chars; Number_Joiner */
-#define SC_x   INDIC_SYLLABIC_CATEGORY_OTHER                           /*   1 chars; Other */
-#define SC_PK  INDIC_SYLLABIC_CATEGORY_PURE_KILLER                     /*  16 chars; Pure_Killer */
-#define SC_RS  INDIC_SYLLABIC_CATEGORY_REGISTER_SHIFTER                /*   2 chars; Register_Shifter */
-#define SC_SM  INDIC_SYLLABIC_CATEGORY_SYLLABLE_MODIFIER               /*  20 chars; Syllable_Modifier */
-#define SC_TL  INDIC_SYLLABIC_CATEGORY_TONE_LETTER                     /*   7 chars; Tone_Letter */
-#define SC_TM  INDIC_SYLLABIC_CATEGORY_TONE_MARK                       /*  42 chars; Tone_Mark */
-#define SC_V   INDIC_SYLLABIC_CATEGORY_VIRAMA                          /*  22 chars; Virama */
-#define SC_Vs  INDIC_SYLLABIC_CATEGORY_VISARGA                         /*  29 chars; Visarga */
-#define SC_Vo  INDIC_SYLLABIC_CATEGORY_VOWEL                           /*  30 chars; Vowel */
-#define SC_M   INDIC_SYLLABIC_CATEGORY_VOWEL_DEPENDENT                 /* 572 chars; Vowel_Dependent */
-#define SC_VI  INDIC_SYLLABIC_CATEGORY_VOWEL_INDEPENDENT               /* 404 chars; Vowel_Independent */
-
-#define PC_B   INDIC_POSITIONAL_CATEGORY_BOTTOM                        /* 256 chars; Bottom */
-#define PC_BR  INDIC_POSITIONAL_CATEGORY_BOTTOM_AND_RIGHT              /*   2 chars; Bottom_And_Right */
-#define PC_L   INDIC_POSITIONAL_CATEGORY_LEFT                          /*  55 chars; Left */
-#define PC_LR  INDIC_POSITIONAL_CATEGORY_LEFT_AND_RIGHT                /*  21 chars; Left_And_Right */
-#define PC_x   INDIC_POSITIONAL_CATEGORY_NOT_APPLICABLE                /*   1 chars; Not_Applicable */
-#define PC_O   INDIC_POSITIONAL_CATEGORY_OVERSTRUCK                    /*  10 chars; Overstruck */
-#define PC_R   INDIC_POSITIONAL_CATEGORY_RIGHT                         /* 249 chars; Right */
-#define PC_T   INDIC_POSITIONAL_CATEGORY_TOP                           /* 324 chars; Top */
-#define PC_TB  INDIC_POSITIONAL_CATEGORY_TOP_AND_BOTTOM                /*  10 chars; Top_And_Bottom */
-#define PC_TBR INDIC_POSITIONAL_CATEGORY_TOP_AND_BOTTOM_AND_RIGHT      /*   1 chars; Top_And_Bottom_And_Right */
-#define PC_TL  INDIC_POSITIONAL_CATEGORY_TOP_AND_LEFT                  /*   6 chars; Top_And_Left */
-#define PC_TLR INDIC_POSITIONAL_CATEGORY_TOP_AND_LEFT_AND_RIGHT        /*   4 chars; Top_And_Left_And_Right */
-#define PC_TR  INDIC_POSITIONAL_CATEGORY_TOP_AND_RIGHT                 /*  13 chars; Top_And_Right */
-#define PC_VOL INDIC_POSITIONAL_CATEGORY_VISUAL_ORDER_LEFT             /*  19 chars; Visual_Order_Left */
-
-#define _(S,M) USE_COMBINE_CATEGORIES (SC_##S, PC_##M)
-
+#define B      USE_B   /* BASE */
+#define CGJ    USE_CGJ /* CGJ */
+#define CM     USE_CM  /* CONS_MOD */
+#define F      USE_F   /* CONS_FINAL */
+#define FM     USE_FM  /* CONS_FINAL_MOD */
+#define GB     USE_GB  /* BASE_OTHER */
+#define H      USE_H   /* HALANT */
+#define HN     USE_HN  /* HALANT_NUM */
+#define IND    USE_IND /* BASE_IND */
+#define IV     USE_IV  /* BASE_VOWEL */
+#define M      USE_M   /* CONS_MED */
+#define N      USE_N   /* BASE_NUM */
+#define O      USE_O   /* OTHER */
+#define R      USE_R   /* REPHA */
+#define Rsv    USE_Rsv /* Reserved */
+#define S      USE_S   /* SYM */
+#define SM     USE_SM  /* SYM_MOD */
+#define SUB    USE_SUB /* CONS_SUB */
+#define V      USE_V   /* VOWEL */
+#define VM     USE_VM  /* VOWEL_MOD */
+#define VS     USE_VS  /* VARIATION_SELECTOR */
+#define WJ     USE_WJ  /* Word_Joiner */
+#define ZWJ    USE_ZWJ /* ZWJ */
+#define ZWNJ   USE_ZWNJ        /* ZWNJ */
 
 static const USE_TABLE_ELEMENT_TYPE use_table[] = {
 
@@ -79,830 +49,534 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
 
 
   /* Basic Latin */
-
-  /* 0028 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x), _(GB,x),  _(x,x),  _(x,x),
-  /* 0030 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
-  /* 0038 */ _(Nd,x), _(Nd,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+                                                       O,   O,   O,   O,   O,  GB,   O,   O,
+  /* 0030 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   O,   O,   O,   O,   O,   O,
 
 #define use_offset_0x00a0u 24
 
 
   /* Latin-1 Supplement */
 
-  /* 00A0 */ _(GB,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
-  /* 00A8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
-  /* 00B0 */  _(x,x),  _(x,x), _(SM,x), _(SM,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
-  /* 00B8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
-  /* 00C0 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
-  /* 00C8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
-  /* 00D0 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x), _(GB,x),
+  /* 00A0 */  GB,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
+  /* 00B0 */   O,   O,  FM,  FM,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
+  /* 00C0 */   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
+  /* 00D0 */   O,   O,   O,   O,   O,   O,   O,  GB,
 
 #define use_offset_0x0900u 80
 
 
   /* Devanagari */
 
-  /* 0900 */ _(Bi,T), _(Bi,T), _(Bi,T), _(Vs,R), _(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,B),  _(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), _(Ca,T), _(Ca,B),  _(x,T),  _(x,T),  _(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), _(Nd,x), _(Nd,x),
-  /* 0968 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
-  /* 0970 */  _(x,x),  _(x,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
-  /* 0978 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 0900 */  VM,  VM,  VM,  VM,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,
+  /* 0910 */  IV,  IV,  IV,  IV,  IV,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 0920 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 0930 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   V,   V,  CM,   B,   V,   V,
+  /* 0940 */   V,   V,   V,   V,   V,   V,   V,   V,   V,   V,   V,   V,   V,   H,   V,   V,
+  /* 0950 */   O,  VM,  VM,   O,   O,   V,   V,   V,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 0960 */  IV,  IV,   V,   V,   O,   O,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 0970 */   O,   O,  IV,  IV,  IV,  IV,  IV,  IV,   B,   B,   B,   B,   B,   B,   B,   B,
 
   /* Bengali */
 
-  /* 0980 */  _(x,x), _(Bi,T), _(Bi,R), _(Vs,R),  _(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,B),  _(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), _(Nd,x), _(Nd,x),
-  /* 09E8 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,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 */   O,  VM,  VM,  VM,   O,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,   O,   O,  IV,
+  /* 0990 */  IV,   O,   O,  IV,  IV,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 09A0 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   O,   B,   B,   B,   B,   B,   B,
+  /* 09B0 */   B,   O,   B,   O,   O,   O,   B,   B,   B,   B,   O,   O,  CM,   B,   V,   V,
+  /* 09C0 */   V,   V,   V,   V,   V,   O,   O,   V,   V,   O,   O,   V,   V,   H, IND,   O,
+  /* 09D0 */   O,   O,   O,   O,   O,   O,   O,   V,   O,   O,   O,   O,   B,   B,   O,   B,
+  /* 09E0 */  IV,  IV,   V,   V,   O,   O,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 09F0 */   B,   B,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
 
   /* Gurmukhi */
 
-  /* 0A00 */  _(x,x), _(Bi,T), _(Bi,T), _(Vs,R),  _(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,B),  _(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), _(Nd,x), _(Nd,x),
-  /* 0A68 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
-  /* 0A70 */ _(Bi,T), _(GM,T), _(GB,x), _(GB,x),  _(x,x), _(CM,B),  _(x,x),  _(x,x),
-  /* 0A78 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0A00 */   O,  VM,  VM,  VM,   O,  IV,  IV,  IV,  IV,  IV,  IV,   O,   O,   O,   O,  IV,
+  /* 0A10 */  IV,   O,   O,  IV,  IV,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 0A20 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   O,   B,   B,   B,   B,   B,   B,
+  /* 0A30 */   B,   O,   B,   B,   O,   B,   B,   O,   B,   B,   O,   O,  CM,   O,   V,   V,
+  /* 0A40 */   V,   V,   V,   O,   O,   O,   O,   V,   V,   O,   O,   V,   V,   H,   O,   O,
+  /* 0A50 */   O,   O,   O,   O,   O,   O,   O,   O,   O,   B,   B,   B,   B,   O,   B,   O,
+  /* 0A60 */   O,   O,   O,   O,   O,   O,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 0A70 */  VM,  CM,  GB,  GB,   O,   M,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
 
   /* Gujarati */
 
-  /* 0A80 */  _(x,x), _(Bi,T), _(Bi,T), _(Vs,R),  _(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,B),  _(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), _(Nd,x), _(Nd,x),
-  /* 0AE8 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
-  /* 0AF0 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
-  /* 0AF8 */  _(x,x),  _(C,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0A80 */   O,  VM,  VM,  VM,   O,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,   O,  IV,
+  /* 0A90 */  IV,  IV,   O,  IV,  IV,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 0AA0 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   O,   B,   B,   B,   B,   B,   B,
+  /* 0AB0 */   B,   O,   B,   B,   O,   B,   B,   B,   B,   B,   O,   O,  CM,   B,   V,   V,
+  /* 0AC0 */   V,   V,   V,   V,   V,   V,   O,   V,   V,   V,   O,   V,   V,   H,   O,   O,
+  /* 0AD0 */   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
+  /* 0AE0 */  IV,  IV,   V,   V,   O,   O,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 0AF0 */   O,   O,   O,   O,   O,   O,   O,   O,   O,   B,   O,   O,   O,   O,   O,   O,
 
   /* Oriya */
 
-  /* 0B00 */  _(x,x), _(Bi,T), _(Bi,R), _(Vs,R),  _(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,B),  _(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), _(Nd,x), _(Nd,x),
-  /* 0B68 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,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 */   O,  VM,  VM,  VM,   O,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,   O,   O,  IV,
+  /* 0B10 */  IV,   O,   O,  IV,  IV,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 0B20 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   O,   B,   B,   B,   B,   B,   B,
+  /* 0B30 */   B,   O,   B,   B,   O,   B,   B,   B,   B,   B,   O,   O,  CM,   B,   V,   V,
+  /* 0B40 */   V,   V,   V,   V,   V,   O,   O,   V,   V,   O,   O,   V,   V,   H,   O,   O,
+  /* 0B50 */   O,   O,   O,   O,   O,   O,   V,   V,   O,   O,   O,   O,   B,   B,   O,   B,
+  /* 0B60 */  IV,  IV,   V,   V,   O,   O,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 0B70 */   O,   B,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
 
   /* Tamil */
 
-  /* 0B80 */  _(x,x),  _(x,x), _(Bi,T), _(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,R),  _(M,R),  _(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), _(Nd,x), _(Nd,x),
-  /* 0BE8 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,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 */   O,   O,  VM, IND,   O,  IV,  IV,  IV,  IV,  IV,  IV,   O,   O,   O,  IV,  IV,
+  /* 0B90 */  IV,   O,  IV,  IV,  IV,   B,   O,   O,   O,   B,   B,   O,   B,   O,   B,   B,
+  /* 0BA0 */   O,   O,   O,   B,   B,   O,   O,   O,   B,   B,   B,   O,   O,   O,   B,   B,
+  /* 0BB0 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   O,   O,   O,   O,   V,   V,
+  /* 0BC0 */   V,   V,   V,   O,   O,   O,   V,   V,   V,   O,   V,   V,   V,   H,   O,   O,
+  /* 0BD0 */   O,   O,   O,   O,   O,   O,   O,   V,   O,   O,   O,   O,   O,   O,   O,   O,
+  /* 0BE0 */   O,   O,   O,   O,   O,   O,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 0BF0 */   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
 
   /* Telugu */
 
-  /* 0C00 */ _(Bi,T), _(Bi,R), _(Bi,R), _(Vs,R),  _(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),  _(C,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),  _(C,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
-  /* 0C60 */ _(VI,x), _(VI,x),  _(M,B),  _(M,B),  _(x,x),  _(x,x), _(Nd,x), _(Nd,x),
-  /* 0C68 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,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 */  VM,  VM,  VM,  VM,   O,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,   O,  IV,  IV,
+  /* 0C10 */  IV,   O,  IV,  IV,  IV,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 0C20 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   O,   B,   B,   B,   B,   B,   B,
+  /* 0C30 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   O,   O,   O,   B,   V,   V,
+  /* 0C40 */   V,   V,   V,   V,   V,   O,   V,   V,   V,   O,   V,   V,   V,   H,   O,   O,
+  /* 0C50 */   O,   O,   O,   O,   O,   V,   V,   O,   B,   B,   B,   O,   O,   O,   O,   O,
+  /* 0C60 */  IV,  IV,   V,   V,   O,   O,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 0C70 */   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
 
   /* Kannada */
 
-  /* 0C80 */  _(x,x), _(Bi,T), _(Bi,R), _(Vs,R),  _(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,B),  _(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), _(Nd,x), _(Nd,x),
-  /* 0CE8 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
-  /* 0CF0 */  _(x,x),_(CWS,x),_(CWS,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 */   O,  VM,  VM,  VM,   O,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,   O,  IV,  IV,
+  /* 0C90 */  IV,   O,  IV,  IV,  IV,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 0CA0 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   O,   B,   B,   B,   B,   B,   B,
+  /* 0CB0 */   B,   B,   B,   B,   O,   B,   B,   B,   B,   B,   O,   O,  CM,   B,   V,   V,
+  /* 0CC0 */   V,   V,   V,   V,   V,   O,   V,   V,   V,   O,   V,   V,   V,   H,   O,   O,
+  /* 0CD0 */   O,   O,   O,   O,   O,   V,   V,   O,   O,   O,   O,   O,   O,   O,   B,   O,
+  /* 0CE0 */  IV,  IV,   V,   V,   O,   O,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 0CF0 */   O,   R,   R,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
 
   /* Malayalam */
 
-  /* 0D00 */  _(x,x), _(Bi,T), _(Bi,R), _(Vs,R),  _(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),_(CPR,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), _(VI,x),
-  /* 0D60 */ _(VI,x), _(VI,x),  _(M,B),  _(M,B),  _(x,x),  _(x,x), _(Nd,x), _(Nd,x),
-  /* 0D68 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,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 */   O,  VM,  VM,  VM,   O,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,   O,  IV,  IV,
+  /* 0D10 */  IV,   O,  IV,  IV,  IV,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 0D20 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 0D30 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   O,   O,   B,   V,   V,
+  /* 0D40 */   V,   V,   V,   V,   V,   O,   V,   V,   V,   O,   V,   V,   V,   H,   R,   O,
+  /* 0D50 */   O,   O,   O,   O,   O,   O,   O,   V,   O,   O,   O,   O,   O,   O,   O,  IV,
+  /* 0D60 */  IV,  IV,   V,   V,   O,   O,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 0D70 */   O,   O,   O,   O,   O,   O,   O,   O,   O,   O, IND, IND, IND, IND, IND, IND,
 
   /* Sinhala */
 
-  /* 0D80 */  _(x,x),  _(x,x), _(Bi,R), _(Vs,R),  _(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,TLR), _(M,LR),  _(M,R),
-  /* 0DE0 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x), _(Nd,x), _(Nd,x),
-  /* 0DE8 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
-  /* 0DF0 */  _(x,x),  _(x,x),  _(M,R),  _(M,R),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 0D80 */   O,   O,  VM,  VM,   O,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,
+  /* 0D90 */  IV,  IV,  IV,  IV,  IV,  IV,  IV,   O,   O,   O,   B,   B,   B,   B,   B,   B,
+  /* 0DA0 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 0DB0 */   B,   B,   O,   B,   B,   B,   B,   B,   B,   B,   B,   B,   O,   B,   O,   O,
+  /* 0DC0 */   B,   B,   B,   B,   B,   B,   B,   O,   O,   O,   H,   O,   O,   O,   O,   V,
+  /* 0DD0 */   V,   V,   V,   V,   V,   O,   V,   O,   V,   V,   V,   V,   V,   V,   V,   V,
+  /* 0DE0 */   O,   O,   O,   O,   O,   O,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 0DF0 */   O,   O,   V,   V,   O,   O,   O,   O,
 
 #define use_offset_0x1000u 1352
 
 
   /* Myanmar */
 
-  /* 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,T), _(TM,B),
-  /* 1038 */ _(Vs,R), _(IS,x), _(PK,T), _(CM,R), _(CM,x), _(CM,B), _(CM,B),  _(C,x),
-  /* 1040 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
-  /* 1048 */ _(Nd,x), _(Nd,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x), _(GB,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,B), _(CM,B),
-  /* 1060 */ _(CM,B),  _(C,x),  _(M,R), _(TM,R), _(TM,R),  _(C,x),  _(C,x),  _(M,R),
-  /* 1068 */  _(M,R), _(TM,R), _(TM,R), _(TM,R), _(TM,R), _(TM,R),  _(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,B),  _(M,R),  _(M,L),  _(M,T),  _(M,T), _(TM,R),
-  /* 1088 */ _(TM,R), _(TM,R), _(TM,R), _(TM,R), _(TM,R), _(TM,B),  _(C,x), _(TM,R),
-  /* 1090 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
-  /* 1098 */ _(Nd,x), _(Nd,x), _(TM,R), _(TM,R),  _(M,R),  _(M,T),  _(x,x),  _(x,x),
+  /* 1000 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 1010 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 1020 */   B,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,   V,   V,   V,   V,   V,
+  /* 1030 */   V,   V,   V,   V,   V,   V,  VM,  VM,  VM,   H,   V,   M,   M,   M,   M,   B,
+  /* 1040 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   O,   O,   O,   O,  GB,   O,
+  /* 1050 */   B,   B,  IV,  IV,  IV,  IV,   V,   V,   V,   V,   B,   B,   B,   B,   M,   M,
+  /* 1060 */   M,   B,   V,  VM,  VM,   B,   B,   V,   V,  VM,  VM,  VM,  VM,  VM,   B,   B,
+  /* 1070 */   B,   V,   V,   V,   V,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 1080 */   B,   B,   M,   V,   V,   V,   V,  VM,  VM,  VM,  VM,  VM,  VM,  VM,   B,  VM,
+  /* 1090 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,  VM,  VM,   V,   V,   O,   O,
 
 #define use_offset_0x1700u 1512
 
 
   /* Tagalog */
 
-  /* 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), _(PK,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 */  IV,  IV,  IV,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   O,   B,   B,
+  /* 1710 */   B,   B,   V,   V,   V,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
 
   /* Hanunoo */
 
-  /* 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), _(PK,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 */  IV,  IV,  IV,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 1730 */   B,   B,   V,   V,   V,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
 
   /* Buhid */
 
-  /* 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),
+  /* 1740 */  IV,  IV,  IV,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 1750 */   B,   B,   V,   V,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
 
   /* Tagbanwa */
 
-  /* 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),
+  /* 1760 */  IV,  IV,  IV,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   O,   B,   B,
+  /* 1770 */   B,   O,   V,   V,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
 
   /* Khmer */
 
-  /* 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,T), _(Vs,R),
-  /* 17C8 */  _(M,R), _(RS,T), _(RS,T), _(SM,T),_(CSR,T), _(CK,T), _(SM,T), _(SM,T),
-  /* 17D0 */ _(SM,T), _(PK,T), _(IS,x), _(SM,T),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
-  /* 17D8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(A,x),  _(x,T),  _(x,x),  _(x,x),
-  /* 17E0 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
-  /* 17E8 */ _(Nd,x), _(Nd,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 1780 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 1790 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 17A0 */   B,   B,   B,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,
+  /* 17B0 */  IV,  IV,  IV,  IV,   O,   O,   V,   V,   V,   V,   V,   V,   V,   V,   V,   V,
+  /* 17C0 */   V,   V,   V,   V,   V,   V,  VM,  VM,   V,  VM,  VM,  FM,   F,  CM,  FM,  FM,
+  /* 17D0 */  FM,   V,   H,  FM,   O,   O,   O,   O,   O,   O,   O,   O,   B,   O,   O,   O,
+  /* 17E0 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   O,   O,   O,   O,   O,   O,
 
 #define use_offset_0x1900u 1752
 
 
   /* Limbu */
 
-  /* 1900 */ _(GB,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),  _(C,x),  _(C,x),  _(x,x),
-  /* 1920 */  _(M,T),  _(M,T),  _(M,B),  _(M,R),  _(M,R), _(M,TR), _(M,TR),  _(M,T),
-  /* 1928 */  _(M,T), _(CS,R), _(CS,R), _(CS,R),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
-  /* 1930 */ _(CF,R), _(CF,R), _(Bi,B), _(CF,R), _(CF,R), _(CF,R), _(CF,R), _(CF,R),
-  /* 1938 */ _(CF,R), _(CF,B),  _(M,T), _(SM,B),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
-  /* 1940 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x), _(Nd,x), _(Nd,x),
-  /* 1948 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
+  /* 1900 */  GB,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 1910 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   O,
+  /* 1920 */   V,   V,   V,   V,   V,   V,   V,   V,   V, SUB, SUB, SUB,   O,   O,   O,   O,
+  /* 1930 */   F,   F,  VM,   F,   F,   F,   F,   F,   F,   F,   V,  FM,   O,   O,   O,   O,
+  /* 1940 */   O,   O,   O,   O,   O,   O,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
 
   /* Tai Le */
 
-  /* 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 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 1960 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   O,   O,
+  /* 1970 */   B,   B,   B,   B,   B,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
 
   /* New Tai Lue */
 
-  /* 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,VOL),_(M,VOL),_(M,VOL),
-  /* 19B8 */  _(M,R),  _(M,R),_(M,VOL),  _(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,R), _(TM,R),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
-  /* 19D0 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
-  /* 19D8 */ _(Nd,x), _(Nd,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),
+  /* 1980 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 1990 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 19A0 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   O,   O,   O,   O,
+  /* 19B0 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 19C0 */   B,   B,   B,   B,   B,   B,   B,   B,  VM,  VM,   O,   O,   O,   O,   O,   O,
+  /* 19D0 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   O,   O,   O,   O,   O,   O,
+  /* 19E0 */   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
+  /* 19F0 */   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
 
   /* Buginese */
 
-  /* 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,T),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 1A00 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 1A10 */   B,   B,   B,   B,   B,   B,   B,   V,   V,   V,   V,   V,   O,   O,   O,   O,
 
   /* Tai Tham */
 
-  /* 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,L), _(CM,B), _(CF,R),
-  /* 1A58 */ _(CF,T), _(CF,T), _(CF,T), _(CF,B), _(CF,B), _(CF,B), _(CF,B),  _(x,x),
-  /* 1A60 */ _(IS,x),  _(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,T), _(TM,T), _(TM,T),
-  /* 1A78 */ _(TM,T), _(TM,T), _(SM,T), _(SM,T), _(SM,T),  _(x,x),  _(x,x), _(SM,B),
-  /* 1A80 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
-  /* 1A88 */ _(Nd,x), _(Nd,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
-  /* 1A90 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
-  /* 1A98 */ _(Nd,x), _(Nd,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 1A20 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 1A30 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 1A40 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,  IV,  IV,  IV,
+  /* 1A50 */  IV,  IV,  IV,   B,   B,   M,   M,   F,   F,   F,   F,   F,   F,   F,   F,   O,
+  /* 1A60 */   H,   V,   V,   V,   V,   V,   V,   V,   V,   V,   V,   V,   V,   V,   V,   V,
+  /* 1A70 */   V,   V,   V,   V,   V,  VM,  VM,  VM,  VM,  VM,  FM,  FM,  FM,   O,   O,  FM,
+  /* 1A80 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   O,   O,   O,   O,   O,   O,
+  /* 1A90 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   O,   O,   O,   O,   O,   O,
 
 #define use_offset_0x1b00u 2168
 
 
   /* Balinese */
 
-  /* 1B00 */ _(Bi,T), _(Bi,T), _(Bi,T),_(CSR,T), _(Vs,R), _(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,T),  _(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 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
-  /* 1B58 */ _(Nd,x), _(Nd,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,T),  _(x,B),  _(x,T),  _(x,T),  _(x,T),
-  /* 1B70 */  _(x,T),  _(x,T),  _(x,T),  _(x,T),  _(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 */  VM,  VM,  VM,   F,  VM,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,
+  /* 1B10 */  IV,  IV,  IV,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 1B20 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 1B30 */   B,   B,   B,   B,  CM,   V,   V,   V,   V,   V,   V,   V,   V,   V,   V,   V,
+  /* 1B40 */   V,   V,   V,   V,   H,   B,   B,   B,   B,   B,   B,   B,   O,   O,   O,   O,
+  /* 1B50 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   O,   O,   O,   O,   O,   O,
+  /* 1B60 */   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,  SM,  SM,  SM,  SM,  SM,
+  /* 1B70 */  SM,  SM,  SM,  SM,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
 
   /* Sundanese */
 
-  /* 1B80 */ _(Bi,T),_(CSR,T), _(Vs,R), _(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,R), _(CS,B), _(CS,B),  _(M,T),  _(M,B),  _(M,L),  _(M,R),
-  /* 1BA8 */  _(M,T),  _(M,T), _(PK,R), _(IS,x), _(CS,B), _(CS,B),  _(C,x),  _(C,x),
-  /* 1BB0 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
-  /* 1BB8 */ _(Nd,x), _(Nd,x),  _(A,x),  _(C,x),  _(C,x),  _(C,x), _(CF,x), _(CF,x),
+  /* 1B80 */  VM,   F,  VM,  IV,  IV,  IV,  IV,  IV,  IV,  IV,   B,   B,   B,   B,   B,   B,
+  /* 1B90 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 1BA0 */   B, SUB, SUB, SUB,   V,   V,   V,   V,   V,   V,   V,   H, SUB, SUB,   B,   B,
+  /* 1BB0 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
 
   /* Batak */
 
-  /* 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,T),  _(M,R),
-  /* 1BE8 */  _(M,T),  _(M,T),  _(M,R),  _(M,R),  _(M,R),  _(M,T),  _(M,R),  _(M,T),
-  /* 1BF0 */ _(CF,T), _(CF,T), _(PK,R), _(PK,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 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 1BD0 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 1BE0 */   B,   B,   B,   B,  IV,  IV,  CM,   V,   V,   V,   V,   V,   V,   V,   V,   V,
+  /* 1BF0 */   F,   F,   V,   V,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
 
   /* Lepcha */
 
-  /* 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,R), _(CS,R),  _(M,R),  _(M,L),
-  /* 1C28 */  _(M,L), _(M,TL),  _(M,R),  _(M,R),  _(M,B), _(CF,T), _(CF,T), _(CF,T),
-  /* 1C30 */ _(CF,T), _(CF,T), _(CF,T), _(CF,T), _(Bi,L), _(Bi,L), _(SM,T),  _(N,B),
-  /* 1C38 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
-  /* 1C40 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
-  /* 1C48 */ _(Nd,x), _(Nd,x),  _(x,x),  _(x,x),  _(x,x),  _(C,x),  _(C,x),  _(C,x),
+  /* 1C00 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 1C10 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 1C20 */   B,   B,   B,   B, SUB, SUB,   V,   V,   V,   V,   V,   V,   V,   F,   F,   F,
+  /* 1C30 */   F,   F,   F,   F,  VM,  VM,  FM,  CM,   O,   O,   O,   O,   O,   O,   O,   O,
+  /* 1C40 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   O,   O,   O,   B,   B,   B,
 
 #define use_offset_0x1cd0u 2504
 
 
   /* Vedic Extensions */
 
-  /* 1CD0 */ _(Ca,T), _(Ca,T), _(Ca,T),  _(x,x), _(Ca,O), _(Ca,B), _(Ca,B), _(Ca,B),
-  /* 1CD8 */ _(Ca,B), _(Ca,B), _(Ca,T), _(Ca,T), _(Ca,B), _(Ca,B), _(Ca,B), _(Ca,B),
-  /* 1CE0 */ _(Ca,T), _(Ca,R),  _(x,O),  _(x,O),  _(x,O),  _(x,O),  _(x,O),  _(x,O),
-  /* 1CE8 */  _(x,O),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,B),  _(x,x),  _(x,x),
-  /* 1CF0 */  _(x,x),  _(x,x), _(Vs,x), _(Vs,x), _(Ca,T),  _(x,x),  _(x,x),  _(x,x),
-  /* 1CF8 */ _(Ca,x), _(Ca,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 1CD0 */  VM,  VM,  VM,   O,  VM,  VM,  VM,  VM,  VM,  VM,  VM,  VM,  VM,  VM,  VM,  VM,
+  /* 1CE0 */  VM,  VM,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
+  /* 1CF0 */   O,   O,  VM,  VM,  VM,   O,   O,   O,  VM,  VM,   O,   O,   O,   O,   O,   O,
 
 #define use_offset_0x2008u 2552
 
 
   /* General Punctuation */
-
-  /* 2008 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),_(ZWNJ,x),_(ZWJ,x),  _(x,x),  _(x,x),
-  /* 2010 */ _(GB,x), _(GB,x), _(GB,x), _(GB,x), _(GB,x),  _(x,x),  _(x,x),  _(x,x),
+                                                       O,   O,   O,   O,ZWNJ, ZWJ,   O,   O,
+  /* 2010 */  GB,  GB,  GB,  GB,  GB,   O,   O,   O,
 
 #define use_offset_0x2070u 2568
 
 
   /* Superscripts and Subscripts */
 
-  /* 2070 */  _(x,x),  _(x,x),  _(x,x),  _(x,x), _(SM,x),  _(x,x),  _(x,x),  _(x,x),
-  /* 2078 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
-  /* 2080 */  _(x,x),  _(x,x), _(SM,x), _(SM,x), _(SM,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 2070 */   O,   O,   O,   O,  FM,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
+  /* 2080 */   O,   O,  FM,  FM,  FM,   O,   O,   O,
 
 #define use_offset_0xa800u 2592
 
 
   /* Syloti Nagri */
 
-  /* A800 */ _(VI,x), _(VI,x),  _(x,x), _(VI,x), _(VI,x), _(VI,x), _(PK,T),  _(C,x),
-  /* A808 */  _(C,x),  _(C,x),  _(C,x), _(Bi,T),  _(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),
-  /* 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),
+  /* A800 */  IV,  IV,   O,  IV,  IV,  IV,   V,   B,   B,   B,   B,  VM,   B,   B,   B,   B,
+  /* A810 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* A820 */   B,   B,   B,   V,   V,   V,   V,   V,   O,   O,   O,   O,   O,   O,   O,   O,
+  /* A830 */   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
 
   /* Phags-pa */
 
-  /* 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 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* A850 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* A860 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* A870 */   B,   B,   B,   B,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
 
   /* Saurashtra */
 
-  /* A880 */ _(Bi,R), _(Vs,R), _(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,R),  _(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 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
-  /* A8D8 */ _(Nd,x), _(Nd,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* A880 */  VM,  VM,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,
+  /* A890 */  IV,  IV,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* A8A0 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* A8B0 */   B,   B,   B,   B,   F,   V,   V,   V,   V,   V,   V,   V,   V,   V,   V,   V,
+  /* A8C0 */   V,   V,   V,   V,   H,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
+  /* A8D0 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   O,   O,   O,   O,   O,   O,
 
   /* Devanagari Extended */
 
-  /* A8E0 */ _(Ca,T), _(Ca,T), _(Ca,T), _(Ca,T), _(Ca,T), _(Ca,T), _(Ca,T), _(Ca,T),
-  /* A8E8 */ _(Ca,T), _(Ca,T), _(Ca,T), _(Ca,T), _(Ca,T), _(Ca,T), _(Ca,T), _(Ca,T),
-  /* A8F0 */ _(Ca,T), _(Ca,T),  _(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 */  VM,  VM,  VM,  VM,  VM,  VM,  VM,  VM,  VM,  VM,  VM,  VM,  VM,  VM,  VM,  VM,
+  /* A8F0 */  VM,  VM,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
 
   /* Kayah Li */
 
-  /* A900 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
-  /* A908 */ _(Nd,x), _(Nd,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,B), _(TM,B), _(TM,B),  _(x,x),  _(x,x),
+  /* A900 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* A910 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* A920 */   B,   B,   B,   B,   B,   B,   V,   V,   V,   V,   V,  VM,  VM,  VM,   O,   O,
 
   /* Rejang */
 
-  /* 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,T),
-  /* A950 */ _(CF,T), _(CF,T), _(CF,R), _(PK,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),
-  /* 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),
+  /* A930 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* A940 */   B,   B,   B,   B,   B,   B,   B,   V,   V,   V,   V,   V,   V,   V,   V,   F,
+  /* A950 */   F,   F,   F,   V,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
+  /* A960 */   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
+  /* A970 */   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
 
   /* Javanese */
 
-  /* A980 */ _(Bi,T), _(Bi,T),_(CSR,T), _(Vs,R), _(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,T),  _(M,R),  _(M,R),  _(M,T),  _(M,T),
-  /* A9B8 */  _(M,B),  _(M,B),  _(M,L),  _(M,L),  _(M,T), _(CS,R), _(CM,R), _(CM,R),
-  /* 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 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
-  /* A9D8 */ _(Nd,x), _(Nd,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* A980 */  VM,  VM,   F,  VM,  IV,  IV,  IV,  IV,  IV,   B,   B,   B,  IV,  IV,  IV,   B,
+  /* A990 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* A9A0 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* A9B0 */   B,   B,   B,  CM,   V,   V,   V,   V,   V,   V,   V,   V,   V, SUB,   M,   M,
+  /* A9C0 */   H,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
+  /* A9D0 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   O,   O,   O,   O,   O,   O,
 
   /* Myanmar Extended-B */
 
-  /* A9E0 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(M,T),  _(x,x),  _(C,x),
-  /* A9E8 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
-  /* A9F0 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
-  /* A9F8 */ _(Nd,x), _(Nd,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(x,x),
+  /* A9E0 */   B,   B,   B,   B,   B,   V,   O,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* A9F0 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   O,
 
   /* Cham */
 
-  /* 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,R), _(CM,L), _(CM,B), _(CM,B),  _(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,T), _(CF,x), _(CF,x), _(CF,x), _(CF,x),
-  /* AA48 */ _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,T), _(CF,R),  _(x,x),  _(x,x),
-  /* AA50 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
-  /* AA58 */ _(Nd,x), _(Nd,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* AA00 */  IV,  IV,  IV,  IV,  IV,  IV,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* AA10 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* AA20 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   V,   V,   V,   V,   V,   V,   V,
+  /* AA30 */   V,   V,   V,   M,   M,   M,   M,   O,   O,   O,   O,   O,   O,   O,   O,   O,
+  /* AA40 */   B,   B,   B,   F,   B,   B,   B,   B,   B,   B,   B,   B,   F,   F,   O,   O,
+  /* AA50 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   O,   O,   O,   O,   O,   O,
 
   /* Myanmar Extended-A */
 
-  /* 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,R), _(TM,T), _(TM,R),  _(C,x),  _(C,x),
+  /* AA60 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* AA70 */   O,   B,   B,   B,   O,   O,   O,   O,   O,   O,   B,  VM,  VM,  VM,   B,   B,
 
   /* Tai Viet */
 
-  /* 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,T),
-  /* AAC0 */ _(TL,x), _(TM,T), _(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 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* AA90 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* AAA0 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* AAB0 */   V,   B,   V,   V,   V,   B,   B,   V,   V,   B,   B,   B,   B,   B,   V,  VM,
+  /* AAC0 */   B,  VM,   B,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
+  /* AAD0 */   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
 
   /* Meetei Mayek Extensions */
 
-  /* AAE0 */ _(VI,x), _(VI,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
-  /* AAE8 */  _(C,x),  _(C,x),  _(C,x),  _(M,L),  _(M,B),  _(M,T),  _(M,L),  _(M,R),
-  /* AAF0 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x), _(Vs,R), _(IS,x),  _(x,x),
+  /* AAE0 */  IV,  IV,   B,   B,   B,   B,   B,   B,   B,   B,   B,   V,   V,   V,   V,   V,
+  /* AAF0 */   O,   O,   O,   O,   O,  VM,   H,   O,
 
 #define use_offset_0xabc0u 3352
 
 
   /* Meetei Mayek */
 
-  /* 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), _(VI,x), _(VI,x),
-  /* ABD0 */  _(C,x), _(VI,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,R), _(PK,B),  _(x,x),  _(x,x),
-  /* ABF0 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
-  /* ABF8 */ _(Nd,x), _(Nd,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* ABC0 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,  IV,  IV,
+  /* ABD0 */   B,  IV,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* ABE0 */   B,   B,   B,   V,   V,   V,   V,   V,   V,   V,   V,   O,  VM,   V,   O,   O,
+  /* ABF0 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   O,   O,   O,   O,   O,   O,
 
 #define use_offset_0x10a00u 3416
 
 
   /* Kharoshthi */
 
-  /* 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),  _(M,B), _(Bi,B), _(Vs,T),
-  /* 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 */  _(N,T),  _(N,B),  _(N,B),  _(x,x),  _(x,x),  _(x,x),  _(x,x), _(IS,x),
-  /* 10A40 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
+  /* 10A00 */   B,   V,   V,   V,   O,   V,   V,   O,   O,   O,   O,   O,   V,   V,  VM,  VM,
+  /* 10A10 */   B,   B,   B,   B,   O,   B,   B,   B,   O,   B,   B,   B,   B,   B,   B,   B,
+  /* 10A20 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 10A30 */   B,   B,   B,   B,   O,   O,   O,   O,  CM,  CM,  CM,   O,   O,   O,   O,   H,
+  /* 10A40 */   B,   B,   B,   B,   B,   B,   B,   B,
 
 #define use_offset_0x11000u 3488
 
 
   /* Brahmi */
 
-  /* 11000 */ _(Bi,R), _(Bi,T), _(Vs,R),_(CWS,x),_(CWS,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),_(BJN,x),_(BJN,x),_(BJN,x),_(BJN,x),_(BJN,x),_(BJN,x),
-  /* 11058 */_(BJN,x),_(BJN,x),_(BJN,x),_(BJN,x),_(BJN,x),_(BJN,x),_(BJN,x),_(BJN,x),
-  /* 11060 */_(BJN,x),_(BJN,x),_(BJN,x),_(BJN,x),_(BJN,x),_(BJN,x), _(Nd,x), _(Nd,x),
-  /* 11068 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,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 */  VM,  VM,  VM,   R,   R,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,
+  /* 11010 */  IV,  IV,  IV,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 11020 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 11030 */   B,   B,   B,   B,   B,   B,   B,   B,   V,   V,   V,   V,   V,   V,   V,   V,
+  /* 11040 */   V,   V,   V,   V,   V,   V,   H,   O,   O,   O,   O,   O,   O,   O,   O,   O,
+  /* 11050 */   O,   O,   N,   N,   N,   N,   N,   N,   N,   N,   N,   N,   N,   N,   N,   N,
+  /* 11060 */   N,   N,   N,   N,   N,   N,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 11070 */   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
 
   /* Kaithi */
 
-  /* 11080 */ _(Bi,T), _(Bi,T), _(Vs,R), _(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,B),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 11080 */  VM,  VM,  VM,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,   B,   B,   B,
+  /* 11090 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 110A0 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 110B0 */   V,   V,   V,   V,   V,   V,   V,   V,   V,   H,  CM,   O,   O,   O,   O,   O,
 
 #define use_offset_0x11100u 3680
 
 
   /* Chakma */
 
-  /* 11100 */ _(Bi,T), _(Bi,T), _(Vs,T), _(VI,x), _(VI,x), _(VI,x), _(VI,x),  _(C,x),
-  /* 11108 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
-  /* 11110 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
-  /* 11118 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
-  /* 11120 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(M,T),
-  /* 11128 */  _(M,T),  _(M,T),  _(M,B),  _(M,B),  _(M,L),  _(M,T), _(M,TB), _(M,TB),
-  /* 11130 */  _(M,T),  _(M,B),  _(M,B), _(IS,x), _(PK,T),  _(x,x), _(Nd,x), _(Nd,x),
-  /* 11138 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
-  /* 11140 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
-  /* 11148 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 11100 */  VM,  VM,  VM,  IV,  IV,  IV,  IV,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 11110 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 11120 */   B,   B,   B,   B,   B,   B,   B,   V,   V,   V,   V,   V,   V,   V,   V,   V,
+  /* 11130 */   V,   V,   V,   H,   V,   O,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 11140 */   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
 
   /* Mahajani */
 
-  /* 11150 */ _(Vo,x), _(Vo,x), _(Vo,x), _(Vo,x), _(Vo,x),  _(C,x),  _(C,x),  _(C,x),
-  /* 11158 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
-  /* 11160 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
-  /* 11168 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
-  /* 11170 */  _(C,x),  _(C,x),  _(C,x),  _(N,B),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
-  /* 11178 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 11150 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 11160 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 11170 */   B,   B,   B,  CM,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
 
   /* Sharada */
 
-  /* 11180 */ _(Bi,T), _(Bi,T), _(Vs,R), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
-  /* 11188 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
-  /* 11190 */ _(VI,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
-  /* 11198 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
-  /* 111A0 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
-  /* 111A8 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
-  /* 111B0 */  _(C,x),  _(C,x),  _(C,x),  _(M,R),  _(M,L),  _(M,R),  _(M,B),  _(M,B),
-  /* 111B8 */  _(M,B),  _(M,B),  _(M,B),  _(M,B),  _(M,T),  _(M,T),  _(M,T), _(M,TR),
-  /* 111C0 */  _(V,R),  _(A,x), _(CP,x), _(CP,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
-  /* 111C8 */  _(x,x),  _(x,x),  _(N,x),  _(M,T),  _(M,B),  _(x,x),  _(x,x),  _(x,x),
-  /* 111D0 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
-  /* 111D8 */ _(Nd,x), _(Nd,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 11180 */  VM,  VM,  VM,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,
+  /* 11190 */  IV,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 111A0 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 111B0 */   B,   B,   B,   V,   V,   V,   V,   V,   V,   V,   V,   V,   V,   V,   V,   V,
+  /* 111C0 */   H,   B,   R,   R,   O,   O,   O,   O,   O,   O,  CM,   V,   V,   O,   O,   O,
+  /* 111D0 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   O,   O,   O,   O,   O,   O,
 
   /* Sinhala Archaic Numbers */
 
-  /* 111E0 */  _(x,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
-  /* 111E8 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
-  /* 111F0 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),  _(x,x),  _(x,x),  _(x,x),
-  /* 111F8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 111E0 */   O,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 111F0 */   B,   B,   B,   B,   B,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
 
   /* Khojki */
 
-  /* 11200 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
-  /* 11208 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
-  /* 11210 */  _(C,x),  _(C,x),  _(x,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
-  /* 11218 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
-  /* 11220 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
-  /* 11228 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(M,R),  _(M,R),  _(M,R),  _(M,B),
-  /* 11230 */  _(M,T),  _(M,T), _(M,TR), _(M,TR), _(Bi,T),  _(V,R),  _(N,T), _(GM,T),
+  /* 11200 */  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 11210 */   B,   B,   O,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 11220 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   V,   V,   V,   V,
+  /* 11230 */   V,   V,   V,   V,  VM,   H,  CM,  CM,
 
 #define use_offset_0x11280u 3992
 
 
   /* Multani */
 
-  /* 11280 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x),  _(C,x),  _(C,x),  _(C,x),  _(x,x),
-  /* 11288 */  _(C,x),  _(x,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(x,x),  _(C,x),
-  /* 11290 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
-  /* 11298 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(x,x),  _(C,x),
-  /* 112A0 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
-  /* 112A8 */  _(C,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 11280 */  IV,  IV,  IV,  IV,   B,   B,   B,   O,   B,   O,   B,   B,   B,   B,   O,   B,
+  /* 11290 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   O,   B,
+  /* 112A0 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   O,   O,   O,   O,   O,   O,   O,
 
   /* Khudawadi */
 
-  /* 112B0 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
-  /* 112B8 */ _(VI,x), _(VI,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
-  /* 112C0 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
-  /* 112C8 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
-  /* 112D0 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
-  /* 112D8 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x), _(Bi,T),
-  /* 112E0 */  _(M,R),  _(M,L),  _(M,R),  _(M,B),  _(M,B),  _(M,T),  _(M,T),  _(M,T),
-  /* 112E8 */  _(M,T),  _(N,B), _(PK,B),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
-  /* 112F0 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
-  /* 112F8 */ _(Nd,x), _(Nd,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 112B0 */  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,   B,   B,   B,   B,   B,   B,
+  /* 112C0 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 112D0 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,  VM,
+  /* 112E0 */   V,   V,   V,   V,   V,   V,   V,   V,   V,  CM,   V,   O,   O,   O,   O,   O,
+  /* 112F0 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   O,   O,   O,   O,   O,   O,
 
   /* Grantha */
 
-  /* 11300 */ _(Bi,x), _(Bi,T), _(Bi,R), _(Vs,R),  _(x,x), _(VI,x), _(VI,x), _(VI,x),
-  /* 11308 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),  _(x,x),  _(x,x), _(VI,x),
-  /* 11310 */ _(VI,x),  _(x,x),  _(x,x), _(VI,x), _(VI,x),  _(C,x),  _(C,x),  _(C,x),
-  /* 11318 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
-  /* 11320 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
-  /* 11328 */  _(C,x),  _(x,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
-  /* 11330 */  _(C,x),  _(x,x),  _(C,x),  _(C,x),  _(x,x),  _(C,x),  _(C,x),  _(C,x),
-  /* 11338 */  _(C,x),  _(C,x),  _(x,x),  _(x,x),  _(N,x),  _(A,x),  _(M,R),  _(M,R),
-  /* 11340 */  _(M,T),  _(M,R),  _(M,R),  _(M,R),  _(M,R),  _(x,x),  _(x,x),  _(M,L),
-  /* 11348 */  _(M,L),  _(x,x),  _(x,x), _(M,LR), _(M,LR),  _(V,R),  _(x,x),  _(x,x),
-  /* 11350 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(M,R),
-  /* 11358 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
-  /* 11360 */ _(VI,x), _(VI,x),  _(M,R),  _(M,R),  _(x,x),  _(x,x), _(Ca,T), _(Ca,T),
-  /* 11368 */ _(Ca,T), _(Ca,T), _(Ca,T), _(Ca,T), _(Ca,T),  _(x,x),  _(x,x),  _(x,x),
-  /* 11370 */ _(Ca,T), _(Ca,T), _(Ca,T), _(Ca,T), _(Ca,T),  _(x,x),  _(x,x),  _(x,x),
+  /* 11300 */  VM,  VM,  VM,  VM,   O,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,   O,   O,  IV,
+  /* 11310 */  IV,   O,   O,  IV,  IV,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 11320 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   O,   B,   B,   B,   B,   B,   B,
+  /* 11330 */   B,   O,   B,   B,   O,   B,   B,   B,   B,   B,   O,   O,  CM,   B,   V,   V,
+  /* 11340 */   V,   V,   V,   V,   V,   O,   O,   V,   V,   O,   O,   V,   V,   H,   O,   O,
+  /* 11350 */   O,   O,   O,   O,   O,   O,   O,   V,   O,   O,   O,   O,   O,   O,   O,   O,
+  /* 11360 */  IV,  IV,   V,   V,   O,   O,  VM,  VM,  VM,  VM,  VM,  VM,  VM,   O,   O,   O,
+  /* 11370 */  VM,  VM,  VM,  VM,  VM,   O,   O,   O,
 
 #define use_offset_0x11480u 4240
 
 
   /* Tirhuta */
 
-  /* 11480 */  _(x,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
-  /* 11488 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),  _(C,x),
-  /* 11490 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
-  /* 11498 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
-  /* 114A0 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
-  /* 114A8 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
-  /* 114B0 */  _(M,R),  _(M,L),  _(M,R),  _(M,B),  _(M,B),  _(M,B),  _(M,B),  _(M,B),
-  /* 114B8 */  _(M,B),  _(M,L),  _(M,T), _(M,TL), _(M,LR),  _(M,R), _(M,LR), _(Bi,T),
-  /* 114C0 */ _(Bi,T), _(Vs,R),  _(V,B),  _(N,B),  _(A,x),  _(x,x),  _(x,x),  _(x,x),
-  /* 114C8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
-  /* 114D0 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
-  /* 114D8 */ _(Nd,x), _(Nd,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 11480 */   O,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,   B,
+  /* 11490 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 114A0 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 114B0 */   V,   V,   V,   V,   V,   V,   V,   V,   V,   V,   V,   V,   V,   V,   V,  VM,
+  /* 114C0 */  VM,  VM,   H,  CM,   B,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
+  /* 114D0 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   O,   O,   O,   O,   O,   O,
 
 #define use_offset_0x11580u 4336
 
 
   /* Siddham */
 
-  /* 11580 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
-  /* 11588 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),  _(C,x),  _(C,x),
-  /* 11590 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
-  /* 11598 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
-  /* 115A0 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
-  /* 115A8 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(M,R),
-  /* 115B0 */  _(M,L),  _(M,R),  _(M,B),  _(M,B),  _(M,B),  _(M,B),  _(x,x),  _(x,x),
-  /* 115B8 */  _(M,L), _(M,TL), _(M,LR),_(M,TLR), _(Bi,T), _(Bi,T), _(Vs,R),  _(V,B),
-  /* 115C0 */  _(N,B),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
-  /* 115C8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
-  /* 115D0 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
-  /* 115D8 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x),  _(M,B),  _(M,B),  _(x,x),  _(x,x),
-  /* 115E0 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
-  /* 115E8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
-  /* 115F0 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
-  /* 115F8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 11580 */  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,   B,   B,
+  /* 11590 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 115A0 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   V,
+  /* 115B0 */   V,   V,   V,   V,   V,   V,   O,   O,   V,   V,   V,   V,  VM,  VM,  VM,   H,
+  /* 115C0 */  CM,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
+  /* 115D0 */   O,   O,   O,   O,   O,   O,   O,   O,  IV,  IV,  IV,  IV,   V,   V,   O,   O,
+  /* 115E0 */   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
+  /* 115F0 */   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
 
   /* Modi */
 
-  /* 11600 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
-  /* 11608 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),  _(C,x),  _(C,x),
-  /* 11610 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
-  /* 11618 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
-  /* 11620 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
-  /* 11628 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
-  /* 11630 */  _(M,R),  _(M,R),  _(M,R),  _(M,B),  _(M,B),  _(M,B),  _(M,B),  _(M,B),
-  /* 11638 */  _(M,B),  _(M,T),  _(M,T),  _(M,R),  _(M,R), _(Bi,T), _(Vs,R),  _(V,B),
-  /* 11640 */  _(M,T),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
-  /* 11648 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
-  /* 11650 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
-  /* 11658 */ _(Nd,x), _(Nd,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
-  /* 11660 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
-  /* 11668 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
-  /* 11670 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
-  /* 11678 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 11600 */  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,   B,   B,
+  /* 11610 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 11620 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 11630 */   V,   V,   V,   V,   V,   V,   V,   V,   V,   V,   V,   V,   V,  VM,  VM,   H,
+  /* 11640 */   V,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
+  /* 11650 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   O,   O,   O,   O,   O,   O,
+  /* 11660 */   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
+  /* 11670 */   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
 
   /* Takri */
 
-  /* 11680 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
-  /* 11688 */ _(VI,x), _(VI,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
-  /* 11690 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
-  /* 11698 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
-  /* 116A0 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
-  /* 116A8 */  _(C,x),  _(C,x),  _(C,x), _(Bi,T), _(Vs,R),  _(M,T),  _(M,L),  _(M,R),
-  /* 116B0 */  _(M,B),  _(M,B),  _(M,T),  _(M,T),  _(M,T),  _(M,T),  _(V,R),  _(N,B),
-  /* 116B8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
-  /* 116C0 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
-  /* 116C8 */ _(Nd,x), _(Nd,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
-  /* 116D0 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
-  /* 116D8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
-  /* 116E0 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
-  /* 116E8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
-  /* 116F0 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
-  /* 116F8 */  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 11680 */  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,  IV,   B,   B,   B,   B,   B,   B,
+  /* 11690 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 116A0 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,  VM,  VM,   V,   V,   V,
+  /* 116B0 */   V,   V,   V,   V,   V,   V,   H,  CM,   O,   O,   O,   O,   O,   O,   O,   O,
+  /* 116C0 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   O,   O,   O,   O,   O,   O,
+  /* 116D0 */   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
+  /* 116E0 */   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
+  /* 116F0 */   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,   O,
 
   /* Ahom */
 
-  /* 11700 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
-  /* 11708 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
-  /* 11710 */  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),  _(C,x),
-  /* 11718 */  _(C,x),  _(C,x),  _(x,x),  _(x,x),  _(x,x), _(CM,B), _(CM,x), _(CM,T),
-  /* 11720 */  _(M,R),  _(M,R),  _(M,T),  _(M,T),  _(M,B),  _(M,B),  _(M,L),  _(M,T),
-  /* 11728 */  _(M,B),  _(M,T),  _(M,T), _(PK,T),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
-  /* 11730 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
-  /* 11738 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),  _(x,x),  _(x,x),  _(x,x),  _(x,x),
+  /* 11700 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,
+  /* 11710 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   O,   O,   O,   M,   M,   M,
+  /* 11720 */   V,   V,   V,   V,   V,   V,   V,   V,   V,   V,   V,   V,   O,   O,   O,   O,
+  /* 11730 */   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   B,   O,   O,   O,   O,
 
 }; /* Table items: 4784; occupancy: 72% */
 
@@ -928,7 +602,7 @@ hb_use_get_categories (hb_codepoint_t u)
     case 0x2u:
       if (hb_in_range (u, 0x2008u, 0x2017u)) return use_table[u - 0x2008u + use_offset_0x2008u];
       if (hb_in_range (u, 0x2070u, 0x2087u)) return use_table[u - 0x2070u + use_offset_0x2070u];
-      if (unlikely (u == 0x25CCu)) return _(GB,x);
+      if (unlikely (u == 0x25CCu)) return GB;
       break;
 
     case 0xAu:
@@ -946,7 +620,7 @@ hb_use_get_categories (hb_codepoint_t u)
       if (hb_in_range (u, 0x11280u, 0x11377u)) return use_table[u - 0x11280u + use_offset_0x11280u];
       if (hb_in_range (u, 0x11480u, 0x114DFu)) return use_table[u - 0x11480u + use_offset_0x11480u];
       if (hb_in_range (u, 0x11580u, 0x1173Fu)) return use_table[u - 0x11580u + use_offset_0x11580u];
-      if (unlikely (u == 0x1107Fu)) return _(NJ,x);
+      if (unlikely (u == 0x1107Fu)) return HN;
       break;
 
     default:
@@ -955,57 +629,29 @@ hb_use_get_categories (hb_codepoint_t u)
   return _(x,x);
 }
 
-#undef _
-
-#undef SC_A
-#undef SC_Bi
-#undef SC_BJN
-#undef SC_Ca
-#undef SC_C
-#undef SC_CD
-#undef SC_CF
-#undef SC_CHL
-#undef SC_CK
-#undef SC_CM
-#undef SC_GB
-#undef SC_CPR
-#undef SC_CP
-#undef SC_CS
-#undef SC_CSR
-#undef SC_CWS
-#undef SC_GM
-#undef SC_IS
-#undef SC_ZWJ
-#undef SC_ML
-#undef SC_ZWNJ
-#undef SC_N
-#undef SC_Nd
-#undef SC_NJ
-#undef SC_x
-#undef SC_PK
-#undef SC_RS
-#undef SC_SM
-#undef SC_TL
-#undef SC_TM
-#undef SC_V
-#undef SC_Vs
-#undef SC_Vo
-#undef SC_M
-#undef SC_VI
-
-#undef PC_B
-#undef PC_BR
-#undef PC_L
-#undef PC_LR
-#undef PC_x
-#undef PC_O
-#undef PC_R
-#undef PC_T
-#undef PC_TB
-#undef PC_TBR
-#undef PC_TL
-#undef PC_TLR
-#undef PC_TR
-#undef PC_VOL
+#undef B
+#undef CGJ
+#undef CM
+#undef F
+#undef FM
+#undef GB
+#undef H
+#undef HN
+#undef IND
+#undef IV
+#undef M
+#undef N
+#undef O
+#undef R
+#undef Rsv
+#undef S
+#undef SM
+#undef SUB
+#undef V
+#undef VM
+#undef VS
+#undef WJ
+#undef ZWJ
+#undef ZWNJ
 
 /* == End of generated table == */