summaryrefslogtreecommitdiffstats
path: root/third_party/harfbuzz/contrib
diff options
context:
space:
mode:
authoragl@chromium.org <agl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-04-07 00:44:49 +0000
committeragl@chromium.org <agl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-04-07 00:44:49 +0000
commit83f6e08f4c56ef411ad1da5f3bfd4711ec94b052 (patch)
tree6bf8e871963cfc1ab8bf6190dceed5b9631cf8ee /third_party/harfbuzz/contrib
parentd5c0e0e416a67e7e8dd98745cdf1bdc7de20517c (diff)
downloadchromium_src-83f6e08f4c56ef411ad1da5f3bfd4711ec94b052.zip
chromium_src-83f6e08f4c56ef411ad1da5f3bfd4711ec94b052.tar.gz
chromium_src-83f6e08f4c56ef411ad1da5f3bfd4711ec94b052.tar.bz2
Add Harfbuzz to third_party and Skia support for such.
Harfbuzz is an open source library which is a unification of the Qt and Pango shaping engines. We'll be using it on Chromium Linux to perform complex text shaping. Additionally, we add support for Harfbuzz into Skia, guarded by SKIA_HARFBUZZ. http://codereview.chromium.org/63035/show git-svn-id: svn://svn.chromium.org/chrome/trunk/src@13214 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'third_party/harfbuzz/contrib')
-rw-r--r--third_party/harfbuzz/contrib/README9
-rw-r--r--third_party/harfbuzz/contrib/harfbuzz-freetype.c149
-rw-r--r--third_party/harfbuzz/contrib/harfbuzz-freetype.h9
-rw-r--r--third_party/harfbuzz/contrib/harfbuzz-unicode-glib.c169
-rw-r--r--third_party/harfbuzz/contrib/harfbuzz-unicode-tables.c84
-rw-r--r--third_party/harfbuzz/contrib/harfbuzz-unicode.c264
-rw-r--r--third_party/harfbuzz/contrib/harfbuzz-unicode.h54
-rw-r--r--third_party/harfbuzz/contrib/tables/DerivedCombiningClass.txt1881
-rw-r--r--third_party/harfbuzz/contrib/tables/DerivedGeneralCategory.txt3072
-rw-r--r--third_party/harfbuzz/contrib/tables/GraphemeBreakProperty.txt1166
-rw-r--r--third_party/harfbuzz/contrib/tables/README17
-rw-r--r--third_party/harfbuzz/contrib/tables/Scripts.txt1747
-rw-r--r--third_party/harfbuzz/contrib/tables/category-parse.py70
-rw-r--r--third_party/harfbuzz/contrib/tables/category-properties.h2869
-rw-r--r--third_party/harfbuzz/contrib/tables/combining-class-parse.py34
-rw-r--r--third_party/harfbuzz/contrib/tables/combining-properties.h247
-rw-r--r--third_party/harfbuzz/contrib/tables/grapheme-break-parse.py45
-rw-r--r--third_party/harfbuzz/contrib/tables/grapheme-break-properties.h1113
-rw-r--r--third_party/harfbuzz/contrib/tables/script-properties.h297
-rw-r--r--third_party/harfbuzz/contrib/tables/scripts-parse.py75
-rw-r--r--third_party/harfbuzz/contrib/tables/unicode_parse_common.py70
21 files changed, 13441 insertions, 0 deletions
diff --git a/third_party/harfbuzz/contrib/README b/third_party/harfbuzz/contrib/README
new file mode 100644
index 0000000..074cc52
--- /dev/null
+++ b/third_party/harfbuzz/contrib/README
@@ -0,0 +1,9 @@
+Harfbuzz requires several functions to be defined in order to work with the
+platform's Unicode tables etc.
+
+If you are building on top of Qt4 you should look at the code in the tests/
+directory for examples of how to hook up Qt4 functions to Harfbuzz.
+
+Otherwise, this directory contains examples of using downloaded Unicode tables
+and/or glib to host Harfbuzz. You should read the README file in tables/ for how
+to build the header files for some of the Unicode tables.
diff --git a/third_party/harfbuzz/contrib/harfbuzz-freetype.c b/third_party/harfbuzz/contrib/harfbuzz-freetype.c
new file mode 100644
index 0000000..a2962df
--- /dev/null
+++ b/third_party/harfbuzz/contrib/harfbuzz-freetype.c
@@ -0,0 +1,149 @@
+#include <stdint.h>
+
+#include <ft2build.h>
+#include FT_FREETYPE_H
+#include FT_TRUETYPE_TABLES_H
+
+#if 0
+#include <freetype/freetype.h>
+#include <freetype/tttables.h>
+#endif
+
+#include <harfbuzz-shaper.h>
+#include "harfbuzz-unicode.h"
+
+static HB_Bool
+hb_freetype_string_to_glyphs(HB_Font font,
+ const HB_UChar16 *chars, hb_uint32 len,
+ HB_Glyph *glyphs, hb_uint32 *numGlyphs,
+ HB_Bool is_rtl) {
+ FT_Face face = (FT_Face) font->userData;
+ if (len > *numGlyphs)
+ return 0;
+
+ size_t i = 0, j = 0;
+ while (i < len) {
+ const uint32_t cp = utf16_to_code_point(chars, len, &i);
+ glyphs[j++] = FT_Get_Char_Index(face, cp);
+ }
+
+ *numGlyphs = j;
+
+ return 1;
+}
+
+static void
+hb_freetype_advances_get(HB_Font font, const HB_Glyph *glyphs, hb_uint32 len,
+ HB_Fixed *advances, int flags) {
+ FT_Face face = (FT_Face) font->userData;
+
+ hb_uint32 i;
+ for (i = 0; i < len; ++i) {
+ const FT_Error error = FT_Load_Glyph(face, glyphs[i], FT_LOAD_DEFAULT);
+ if (error) {
+ advances[i] = 0;
+ continue;
+ }
+
+ advances[i] = face->glyph->advance.x;
+ }
+}
+
+static HB_Bool
+hb_freetype_can_render(HB_Font font, const HB_UChar16 *chars, hb_uint32 len) {
+ FT_Face face = (FT_Face)font->userData;
+
+ size_t i = 0;
+ while (i < len) {
+ const uint32_t cp = utf16_to_code_point(chars, len, &i);
+ if (FT_Get_Char_Index(face, cp) == 0)
+ return 0;
+ }
+
+ return 1;
+}
+
+static HB_Error
+hb_freetype_outline_point_get(HB_Font font, HB_Glyph glyph, int flags,
+ hb_uint32 point, HB_Fixed *xpos, HB_Fixed *ypos,
+ hb_uint32 *n_points) {
+ HB_Error error = HB_Err_Ok;
+ FT_Face face = (FT_Face) font->userData;
+
+ int load_flags = (flags & HB_ShaperFlag_UseDesignMetrics) ? FT_LOAD_NO_HINTING : FT_LOAD_DEFAULT;
+
+ if ((error = (HB_Error) FT_Load_Glyph(face, glyph, load_flags)))
+ return error;
+
+ if (face->glyph->format != ft_glyph_format_outline)
+ return (HB_Error)HB_Err_Invalid_SubTable;
+
+ *n_points = face->glyph->outline.n_points;
+ if (!(*n_points))
+ return HB_Err_Ok;
+
+ if (point > *n_points)
+ return (HB_Error)HB_Err_Invalid_SubTable;
+
+ *xpos = face->glyph->outline.points[point].x;
+ *ypos = face->glyph->outline.points[point].y;
+
+ return HB_Err_Ok;
+}
+
+static void
+hb_freetype_glyph_metrics_get(HB_Font font, HB_Glyph glyph,
+ HB_GlyphMetrics *metrics) {
+ FT_Face face = (FT_Face) font->userData;
+
+ const FT_Error error = FT_Load_Glyph(face, glyph, FT_LOAD_DEFAULT);
+ if (error) {
+ metrics->x = metrics->y = metrics->width = metrics->height = 0;
+ metrics->xOffset = metrics->yOffset = 0;
+ return;
+ }
+
+ const FT_Glyph_Metrics *ftmetrics = &face->glyph->metrics;
+ metrics->width = ftmetrics->width;
+ metrics->height = ftmetrics->height;
+ metrics->x = ftmetrics->horiAdvance;
+ metrics->y = 0; // unclear what this is
+ metrics->xOffset = ftmetrics->horiBearingX;
+ metrics->yOffset = ftmetrics->horiBearingY;
+}
+
+static HB_Fixed
+hb_freetype_font_metric_get(HB_Font font, HB_FontMetric metric) {
+ FT_Face face = (FT_Face) font->userData;
+
+ switch (metric) {
+ case HB_FontAscent:
+ // Note that we aren't scanning the VDMX table which we probably would in
+ // an ideal world.
+ return face->ascender;
+ default:
+ return 0;
+ }
+}
+
+const HB_FontClass hb_freetype_class = {
+ hb_freetype_string_to_glyphs,
+ hb_freetype_advances_get,
+ hb_freetype_can_render,
+ hb_freetype_outline_point_get,
+ hb_freetype_glyph_metrics_get,
+ hb_freetype_font_metric_get,
+};
+
+HB_Error
+hb_freetype_table_sfnt_get(void *voidface, const HB_Tag tag, HB_Byte *buffer, HB_UInt *len) {
+ FT_Face face = (FT_Face) voidface;
+ FT_ULong ftlen = *len;
+
+ if (!FT_IS_SFNT(face))
+ return HB_Err_Invalid_Argument;
+
+ const FT_Error error = FT_Load_Sfnt_Table(face, tag, 0, buffer, &ftlen);
+ *len = ftlen;
+ return (HB_Error) error;
+}
diff --git a/third_party/harfbuzz/contrib/harfbuzz-freetype.h b/third_party/harfbuzz/contrib/harfbuzz-freetype.h
new file mode 100644
index 0000000..628be16
--- /dev/null
+++ b/third_party/harfbuzz/contrib/harfbuzz-freetype.h
@@ -0,0 +1,9 @@
+#ifndef HB_FREETYPE_H_
+#define HB_FREETYPE_H_
+
+extern const HB_FontClass hb_freetype_class;
+
+HB_Error hb_freetype_table_sfnt_get(void *voidface, const HB_Tag tag,
+ HB_Byte *buffer, HB_UInt *len);
+
+#endif // HB_FREETYPE_H_
diff --git a/third_party/harfbuzz/contrib/harfbuzz-unicode-glib.c b/third_party/harfbuzz/contrib/harfbuzz-unicode-glib.c
new file mode 100644
index 0000000..6a13433
--- /dev/null
+++ b/third_party/harfbuzz/contrib/harfbuzz-unicode-glib.c
@@ -0,0 +1,169 @@
+#include "harfbuzz-external.h"
+
+#include <glib.h>
+
+static int
+hb_category_for_char(HB_UChar32 ch) {
+ switch (g_unichar_type(ch)) {
+ case G_UNICODE_CONTROL:
+ return HB_Other_Control;
+ case G_UNICODE_FORMAT:
+ return HB_Other_Format;
+ case G_UNICODE_UNASSIGNED:
+ return HB_Other_NotAssigned;
+ case G_UNICODE_PRIVATE_USE:
+ return HB_Other_PrivateUse;
+ case G_UNICODE_SURROGATE:
+ return HB_Other_Surrogate;
+ case G_UNICODE_LOWERCASE_LETTER:
+ return HB_Letter_Lowercase;
+ case G_UNICODE_MODIFIER_LETTER:
+ return HB_Letter_Modifier;
+ case G_UNICODE_OTHER_LETTER:
+ return HB_Letter_Other;
+ case G_UNICODE_TITLECASE_LETTER:
+ return HB_Letter_Titlecase;
+ case G_UNICODE_UPPERCASE_LETTER:
+ return HB_Letter_Uppercase;
+ case G_UNICODE_COMBINING_MARK:
+ return HB_Mark_SpacingCombining;
+ case G_UNICODE_ENCLOSING_MARK:
+ return HB_Mark_Enclosing;
+ case G_UNICODE_NON_SPACING_MARK:
+ return HB_Mark_NonSpacing;
+ case G_UNICODE_DECIMAL_NUMBER:
+ return HB_Number_DecimalDigit;
+ case G_UNICODE_LETTER_NUMBER:
+ return HB_Number_Letter;
+ case G_UNICODE_OTHER_NUMBER:
+ return HB_Number_Other;
+ case G_UNICODE_CONNECT_PUNCTUATION:
+ return HB_Punctuation_Connector;
+ case G_UNICODE_DASH_PUNCTUATION:
+ return HB_Punctuation_Dash;
+ case G_UNICODE_CLOSE_PUNCTUATION:
+ return HB_Punctuation_Close;
+ case G_UNICODE_FINAL_PUNCTUATION:
+ return HB_Punctuation_FinalQuote;
+ case G_UNICODE_INITIAL_PUNCTUATION:
+ return HB_Punctuation_InitialQuote;
+ case G_UNICODE_OTHER_PUNCTUATION:
+ return HB_Punctuation_Other;
+ case G_UNICODE_OPEN_PUNCTUATION:
+ return HB_Punctuation_Open;
+ case G_UNICODE_CURRENCY_SYMBOL:
+ return HB_Symbol_Currency;
+ case G_UNICODE_MODIFIER_SYMBOL:
+ return HB_Symbol_Modifier;
+ case G_UNICODE_MATH_SYMBOL:
+ return HB_Symbol_Math;
+ case G_UNICODE_OTHER_SYMBOL:
+ return HB_Symbol_Other;
+ case G_UNICODE_LINE_SEPARATOR:
+ return HB_Separator_Line;
+ case G_UNICODE_PARAGRAPH_SEPARATOR:
+ return HB_Separator_Paragraph;
+ case G_UNICODE_SPACE_SEPARATOR:
+ return HB_Separator_Space;
+ default:
+ return HB_Symbol_Other;
+ }
+}
+
+HB_LineBreakClass
+HB_GetLineBreakClass(HB_UChar32 ch) {
+ switch (g_unichar_break_type(ch)) {
+ case G_UNICODE_BREAK_MANDATORY:
+ return HB_LineBreak_BK;
+ case G_UNICODE_BREAK_CARRIAGE_RETURN:
+ return HB_LineBreak_CR;
+ case G_UNICODE_BREAK_LINE_FEED:
+ return HB_LineBreak_LF;
+ case G_UNICODE_BREAK_COMBINING_MARK:
+ return HB_LineBreak_CM;
+ case G_UNICODE_BREAK_SURROGATE:
+ return HB_LineBreak_SG;
+ case G_UNICODE_BREAK_ZERO_WIDTH_SPACE:
+ return HB_LineBreak_ZW;
+ case G_UNICODE_BREAK_INSEPARABLE:
+ return HB_LineBreak_IN;
+ case G_UNICODE_BREAK_NON_BREAKING_GLUE:
+ return HB_LineBreak_GL;
+ case G_UNICODE_BREAK_CONTINGENT:
+ return HB_LineBreak_AL;
+ case G_UNICODE_BREAK_SPACE:
+ return HB_LineBreak_SP;
+ case G_UNICODE_BREAK_AFTER:
+ return HB_LineBreak_BA;
+ case G_UNICODE_BREAK_BEFORE:
+ return HB_LineBreak_BB;
+ case G_UNICODE_BREAK_BEFORE_AND_AFTER:
+ return HB_LineBreak_B2;
+ case G_UNICODE_BREAK_HYPHEN:
+ return HB_LineBreak_HY;
+ case G_UNICODE_BREAK_NON_STARTER:
+ return HB_LineBreak_NS;
+ case G_UNICODE_BREAK_OPEN_PUNCTUATION:
+ return HB_LineBreak_OP;
+ case G_UNICODE_BREAK_CLOSE_PUNCTUATION:
+ return HB_LineBreak_CL;
+ case G_UNICODE_BREAK_QUOTATION:
+ return HB_LineBreak_QU;
+ case G_UNICODE_BREAK_EXCLAMATION:
+ return HB_LineBreak_EX;
+ case G_UNICODE_BREAK_IDEOGRAPHIC:
+ return HB_LineBreak_ID;
+ case G_UNICODE_BREAK_NUMERIC:
+ return HB_LineBreak_NU;
+ case G_UNICODE_BREAK_INFIX_SEPARATOR:
+ return HB_LineBreak_IS;
+ case G_UNICODE_BREAK_SYMBOL:
+ return HB_LineBreak_SY;
+ case G_UNICODE_BREAK_ALPHABETIC:
+ return HB_LineBreak_AL;
+ case G_UNICODE_BREAK_PREFIX:
+ return HB_LineBreak_PR;
+ case G_UNICODE_BREAK_POSTFIX:
+ return HB_LineBreak_PO;
+ case G_UNICODE_BREAK_COMPLEX_CONTEXT:
+ return HB_LineBreak_SA;
+ case G_UNICODE_BREAK_AMBIGUOUS:
+ return HB_LineBreak_AL;
+ case G_UNICODE_BREAK_UNKNOWN:
+ return HB_LineBreak_AL;
+ case G_UNICODE_BREAK_NEXT_LINE:
+ return HB_LineBreak_AL;
+ case G_UNICODE_BREAK_WORD_JOINER:
+ return HB_LineBreak_WJ;
+ case G_UNICODE_BREAK_HANGUL_L_JAMO:
+ return HB_LineBreak_JL;
+ case G_UNICODE_BREAK_HANGUL_V_JAMO:
+ return HB_LineBreak_JV;
+ case G_UNICODE_BREAK_HANGUL_T_JAMO:
+ return HB_LineBreak_JT;
+ case G_UNICODE_BREAK_HANGUL_LV_SYLLABLE:
+ return HB_LineBreak_H2;
+ case G_UNICODE_BREAK_HANGUL_LVT_SYLLABLE:
+ return HB_LineBreak_H3;
+ default:
+ return HB_LineBreak_AL;
+ }
+}
+
+int
+HB_GetUnicodeCharCombiningClass(HB_UChar32 ch) {
+ return g_unichar_combining_class(ch);
+}
+
+void
+HB_GetUnicodeCharProperties(HB_UChar32 ch,
+ HB_CharCategory *category,
+ int *combiningClass) {
+ *category = hb_category_for_char(ch);
+ *combiningClass = g_unichar_combining_class(ch);
+}
+
+HB_CharCategory
+HB_GetUnicodeCharCategory(HB_UChar32 ch) {
+ return hb_category_for_char(ch);
+}
diff --git a/third_party/harfbuzz/contrib/harfbuzz-unicode-tables.c b/third_party/harfbuzz/contrib/harfbuzz-unicode-tables.c
new file mode 100644
index 0000000..3c3fead6
--- /dev/null
+++ b/third_party/harfbuzz/contrib/harfbuzz-unicode-tables.c
@@ -0,0 +1,84 @@
+#include <stdlib.h>
+#include <stdint.h>
+
+#include <harfbuzz-external.h>
+
+#include "tables/category-properties.h"
+#include "tables/combining-properties.h"
+
+HB_LineBreakClass
+HB_GetLineBreakClass(HB_UChar32 ch) {
+ abort();
+ return 0;
+}
+
+static int
+combining_property_cmp(const void *vkey, const void *vcandidate) {
+ const uint32_t key = (uint32_t) (intptr_t) vkey;
+ const struct combining_property *candidate = vcandidate;
+
+ if (key < candidate->range_start) {
+ return -1;
+ } else if (key > candidate->range_end) {
+ return 1;
+ } else {
+ return 0;
+ }
+}
+
+static int
+code_point_to_combining_class(HB_UChar32 cp) {
+ const void *vprop = bsearch((void *) (intptr_t) cp, combining_properties,
+ combining_properties_count,
+ sizeof(struct combining_property),
+ combining_property_cmp);
+ if (!vprop)
+ return 0;
+
+ return ((const struct combining_property *) vprop)->klass;
+}
+
+int
+HB_GetUnicodeCharCombiningClass(HB_UChar32 ch) {
+ return code_point_to_combining_class(ch);
+ return 0;
+}
+
+static int
+category_property_cmp(const void *vkey, const void *vcandidate) {
+ const uint32_t key = (uint32_t) (intptr_t) vkey;
+ const struct category_property *candidate = vcandidate;
+
+ if (key < candidate->range_start) {
+ return -1;
+ } else if (key > candidate->range_end) {
+ return 1;
+ } else {
+ return 0;
+ }
+}
+
+static HB_CharCategory
+code_point_to_category(HB_UChar32 cp) {
+ const void *vprop = bsearch((void *) (intptr_t) cp, category_properties,
+ category_properties_count,
+ sizeof(struct category_property),
+ category_property_cmp);
+ if (!vprop)
+ return HB_NoCategory;
+
+ return ((const struct category_property *) vprop)->category;
+}
+
+void
+HB_GetUnicodeCharProperties(HB_UChar32 ch,
+ HB_CharCategory *category,
+ int *combiningClass) {
+ *category = code_point_to_category(ch);
+ *combiningClass = code_point_to_combining_class(ch);
+}
+
+HB_CharCategory
+HB_GetUnicodeCharCategory(HB_UChar32 ch) {
+ return code_point_to_category(ch);
+}
diff --git a/third_party/harfbuzz/contrib/harfbuzz-unicode.c b/third_party/harfbuzz/contrib/harfbuzz-unicode.c
new file mode 100644
index 0000000..9b3c43e
--- /dev/null
+++ b/third_party/harfbuzz/contrib/harfbuzz-unicode.c
@@ -0,0 +1,264 @@
+#include <stdint.h>
+#include <stdlib.h>
+
+#include <harfbuzz-external.h>
+#include <harfbuzz-impl.h>
+#include <harfbuzz-shaper.h>
+#include "harfbuzz-unicode.h"
+
+#include "tables/script-properties.h"
+#include "tables/grapheme-break-properties.h"
+
+uint32_t
+utf16_to_code_point(const uint16_t *chars, size_t len, ssize_t *iter) {
+ const uint16_t v = chars[(*iter)++];
+ if (HB_IsHighSurrogate(v)) {
+ // surrogate pair
+ if (*iter >= len) {
+ // the surrogate is incomplete.
+ return HB_InvalidCodePoint;
+ }
+ const uint16_t v2 = chars[(*iter)++];
+ if (!HB_IsLowSurrogate(v2)) {
+ // invalidate surrogate pair.
+ return HB_InvalidCodePoint;
+ }
+
+ return HB_SurrogateToUcs4(v, v2);
+ }
+
+ if (HB_IsLowSurrogate(v)) {
+ // this isn't a valid code point
+ return HB_InvalidCodePoint;
+ }
+
+ return v;
+}
+
+uint32_t
+utf16_to_code_point_prev(const uint16_t *chars, size_t len, ssize_t *iter) {
+ const uint16_t v = chars[(*iter)--];
+ if (HB_IsLowSurrogate(v)) {
+ // surrogate pair
+ if (*iter < 0) {
+ // the surrogate is incomplete.
+ return HB_InvalidCodePoint;
+ }
+ const uint16_t v2 = chars[(*iter)--];
+ if (!HB_IsHighSurrogate(v2)) {
+ // invalidate surrogate pair.
+ return HB_InvalidCodePoint;
+ }
+
+ return HB_SurrogateToUcs4(v2, v);
+ }
+
+ if (HB_IsHighSurrogate(v)) {
+ // this isn't a valid code point
+ return HB_InvalidCodePoint;
+ }
+
+ return v;
+}
+
+static int
+script_property_cmp(const void *vkey, const void *vcandidate) {
+ const uint32_t key = (uint32_t) (intptr_t) vkey;
+ const struct script_property *candidate = vcandidate;
+
+ if (key < candidate->range_start) {
+ return -1;
+ } else if (key > candidate->range_end) {
+ return 1;
+ } else {
+ return 0;
+ }
+}
+
+HB_Script
+code_point_to_script(uint32_t cp) {
+ const void *vprop = bsearch((void *) (intptr_t) cp, script_properties,
+ script_properties_count,
+ sizeof(struct script_property),
+ script_property_cmp);
+ if (!vprop)
+ return HB_Script_Common;
+
+ return ((const struct script_property *) vprop)->script;
+}
+
+char
+hb_utf16_script_run_next(unsigned *num_code_points, HB_ScriptItem *output,
+ const uint16_t *chars, size_t len, ssize_t *iter) {
+ if (*iter == len)
+ return 0;
+
+ output->pos = *iter;
+ const uint32_t init_cp = utf16_to_code_point(chars, len, iter);
+ unsigned cps = 1;
+ if (init_cp == HB_InvalidCodePoint)
+ return 0;
+ const HB_Script init_script = code_point_to_script(init_cp);
+ HB_Script current_script = init_script;
+ output->script = init_script;
+
+ for (;;) {
+ if (*iter == len)
+ break;
+ const ssize_t prev_iter = *iter;
+ const uint32_t cp = utf16_to_code_point(chars, len, iter);
+ if (cp == HB_InvalidCodePoint)
+ return 0;
+ cps++;
+ const HB_Script script = code_point_to_script(cp);
+
+ if (script != current_script) {
+ if (current_script == init_script == HB_Script_Inherited) {
+ // If we started off as inherited, we take whatever we can find.
+ output->script = script;
+ current_script = script;
+ continue;
+ } else if (script == HB_Script_Inherited) {
+ current_script = script;
+ continue;
+ } else {
+ *iter = prev_iter;
+ cps--;
+ break;
+ }
+ }
+ }
+
+ if (output->script == HB_Script_Inherited)
+ output->script = HB_Script_Common;
+
+ output->length = *iter - output->pos;
+ if (num_code_points)
+ *num_code_points = cps;
+ return 1;
+}
+
+char
+hb_utf16_script_run_prev(unsigned *num_code_points, HB_ScriptItem *output,
+ const uint16_t *chars, size_t len, ssize_t *iter) {
+ if (*iter == (size_t) -1)
+ return 0;
+
+ const size_t ending_index = *iter;
+ const uint32_t init_cp = utf16_to_code_point_prev(chars, len, iter);
+ unsigned cps = 1;
+ if (init_cp == HB_InvalidCodePoint)
+ return 0;
+ const HB_Script init_script = code_point_to_script(init_cp);
+ HB_Script current_script = init_script;
+ output->script = init_script;
+
+ for (;;) {
+ if (*iter < 0)
+ break;
+ const ssize_t prev_iter = *iter;
+ const uint32_t cp = utf16_to_code_point_prev(chars, len, iter);
+ if (cp == HB_InvalidCodePoint)
+ return 0;
+ cps++;
+ const HB_Script script = code_point_to_script(cp);
+
+ if (script != current_script) {
+ if (current_script == init_script == HB_Script_Inherited) {
+ // If we started off as inherited, we take whatever we can find.
+ output->script = script;
+ current_script = script;
+ continue;
+ } else if (script == HB_Script_Inherited) {
+ current_script = script;
+ continue;
+ } else {
+ *iter = prev_iter;
+ cps--;
+ break;
+ }
+ }
+ }
+
+ if (output->script == HB_Script_Inherited)
+ output->script = HB_Script_Common;
+
+ output->pos = *iter + 1;
+ output->length = ending_index - *iter;
+ if (num_code_points)
+ *num_code_points = cps;
+ return 1;
+}
+
+static int
+grapheme_break_property_cmp(const void *vkey, const void *vcandidate) {
+ const uint32_t key = (uint32_t) (intptr_t) vkey;
+ const struct grapheme_break_property *candidate = vcandidate;
+
+ if (key < candidate->range_start) {
+ return -1;
+ } else if (key > candidate->range_end) {
+ return 1;
+ } else {
+ return 0;
+ }
+}
+
+HB_GraphemeClass
+HB_GetGraphemeClass(HB_UChar32 ch) {
+ const void *vprop = bsearch((void *) (intptr_t) ch, grapheme_break_properties,
+ grapheme_break_properties_count,
+ sizeof(struct grapheme_break_property),
+ grapheme_break_property_cmp);
+ if (!vprop)
+ return HB_Grapheme_Other;
+
+ return ((const struct grapheme_break_property *) vprop)->klass;
+}
+
+HB_WordClass
+HB_GetWordClass(HB_UChar32 ch) {
+ abort();
+ return 0;
+}
+
+HB_SentenceClass
+HB_GetSentenceClass(HB_UChar32 ch) {
+ abort();
+ return 0;
+}
+
+void
+HB_GetGraphemeAndLineBreakClass(HB_UChar32 ch, HB_GraphemeClass *gclass, HB_LineBreakClass *breakclass) {
+ *gclass = HB_GetGraphemeClass(ch);
+ *breakclass = HB_GetLineBreakClass(ch);
+}
+
+HB_UChar16
+HB_GetMirroredChar(HB_UChar16 ch) {
+ abort();
+ return 0;
+}
+
+void *
+HB_Library_Resolve(const char *library, const char *symbol) {
+ abort();
+ return NULL;
+}
+
+void *
+HB_TextCodecForMib(int mib) {
+ abort();
+ return NULL;
+}
+
+char *
+HB_TextCodec_ConvertFromUnicode(void *codec, const HB_UChar16 *unicode, hb_uint32 length, hb_uint32 *outputLength) {
+ abort();
+ return NULL;
+}
+
+void
+HB_TextCodec_FreeResult(char *v) {
+ abort();
+}
diff --git a/third_party/harfbuzz/contrib/harfbuzz-unicode.h b/third_party/harfbuzz/contrib/harfbuzz-unicode.h
new file mode 100644
index 0000000..f28b3c3
--- /dev/null
+++ b/third_party/harfbuzz/contrib/harfbuzz-unicode.h
@@ -0,0 +1,54 @@
+#ifndef SCRIPT_IDENTIFY_H_
+#define SCRIPT_IDENTIFY_H_
+
+#include <stdint.h>
+
+#include <harfbuzz-shaper.h>
+
+static const uint32_t HB_InvalidCodePoint = 0xffffffffu;
+
+// -----------------------------------------------------------------------------
+// Return the next Unicode code point from a UTF-16 vector
+// chars: a pointer to @len words
+// iter: (input/output) an index into @chars. This is updated.
+// returns: HB_InvalidCodePoint on error and the code point otherwise.
+// -----------------------------------------------------------------------------
+uint32_t utf16_to_code_point(const uint16_t *chars, size_t len, ssize_t *iter);
+
+// -----------------------------------------------------------------------------
+// Like the above, except that the code points are traversed backwards. Thus,
+// on the first call, |iter| should be |len| - 1.
+// -----------------------------------------------------------------------------
+uint32_t utf16_to_code_point(const uint16_t *chars, size_t len, ssize_t *iter);
+
+// -----------------------------------------------------------------------------
+// Return the script of the given code point
+// -----------------------------------------------------------------------------
+HB_Script code_point_to_script(uint32_t cp);
+
+// -----------------------------------------------------------------------------
+// Find the next script run in a UTF-16 string.
+//
+// A script run is a subvector of codepoints, all of which are in the same
+// script. A run will never cut a surrogate pair in half at either end.
+//
+// num_code_points: (output, maybe NULL) the number of code points in the run
+// output: (output) the @pos, @length and @script fields are set on success
+// chars: the UTF-16 string
+// len: the length of @chars, in words
+// iter: (in/out) the current index into the string. This should be 0 for the
+// first call and is updated on exit.
+//
+// returns: non-zero if a script run was found and returned.
+// -----------------------------------------------------------------------------
+char hb_utf16_script_run_next(unsigned *num_code_points, HB_ScriptItem *output,
+ const uint16_t *chars, size_t len, ssize_t *iter);
+
+// -----------------------------------------------------------------------------
+// This is the same as above, except that the input is traversed backwards.
+// Thus, on the first call, |iter| should be |len| - 1.
+// -----------------------------------------------------------------------------
+char hb_utf16_script_run_prev(unsigned *num_code_points, HB_ScriptItem *output,
+ const uint16_t *chars, size_t len, ssize_t *iter);
+
+#endif
diff --git a/third_party/harfbuzz/contrib/tables/DerivedCombiningClass.txt b/third_party/harfbuzz/contrib/tables/DerivedCombiningClass.txt
new file mode 100644
index 0000000..f30fb0b
--- /dev/null
+++ b/third_party/harfbuzz/contrib/tables/DerivedCombiningClass.txt
@@ -0,0 +1,1881 @@
+# DerivedCombiningClass-5.1.0.txt
+# Date: 2008-03-20, 17:54:45 GMT [MD]
+#
+# Unicode Character Database
+# Copyright (c) 1991-2008 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+# For documentation, see UCD.html
+
+# ================================================
+
+# Combining Class (listing UnicodeData.txt, field 3: see UCD.html)
+
+# All code points not explicitly listed for Canonical_Combining_Class
+# have the value Not_Reordered (0).
+
+# @missing: 0000..10FFFF; Not_Reordered
+
+# ================================================
+
+# Canonical_Combining_Class=Not_Reordered
+
+0000..001F ; 0 # Cc [32] <control-0000>..<control-001F>
+0020 ; 0 # Zs SPACE
+0021..0023 ; 0 # Po [3] EXCLAMATION MARK..NUMBER SIGN
+0024 ; 0 # Sc DOLLAR SIGN
+0025..0027 ; 0 # Po [3] PERCENT SIGN..APOSTROPHE
+0028 ; 0 # Ps LEFT PARENTHESIS
+0029 ; 0 # Pe RIGHT PARENTHESIS
+002A ; 0 # Po ASTERISK
+002B ; 0 # Sm PLUS SIGN
+002C ; 0 # Po COMMA
+002D ; 0 # Pd HYPHEN-MINUS
+002E..002F ; 0 # Po [2] FULL STOP..SOLIDUS
+0030..0039 ; 0 # Nd [10] DIGIT ZERO..DIGIT NINE
+003A..003B ; 0 # Po [2] COLON..SEMICOLON
+003C..003E ; 0 # Sm [3] LESS-THAN SIGN..GREATER-THAN SIGN
+003F..0040 ; 0 # Po [2] QUESTION MARK..COMMERCIAL AT
+0041..005A ; 0 # L& [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z
+005B ; 0 # Ps LEFT SQUARE BRACKET
+005C ; 0 # Po REVERSE SOLIDUS
+005D ; 0 # Pe RIGHT SQUARE BRACKET
+005E ; 0 # Sk CIRCUMFLEX ACCENT
+005F ; 0 # Pc LOW LINE
+0060 ; 0 # Sk GRAVE ACCENT
+0061..007A ; 0 # L& [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z
+007B ; 0 # Ps LEFT CURLY BRACKET
+007C ; 0 # Sm VERTICAL LINE
+007D ; 0 # Pe RIGHT CURLY BRACKET
+007E ; 0 # Sm TILDE
+007F..009F ; 0 # Cc [33] <control-007F>..<control-009F>
+00A0 ; 0 # Zs NO-BREAK SPACE
+00A1 ; 0 # Po INVERTED EXCLAMATION MARK
+00A2..00A5 ; 0 # Sc [4] CENT SIGN..YEN SIGN
+00A6..00A7 ; 0 # So [2] BROKEN BAR..SECTION SIGN
+00A8 ; 0 # Sk DIAERESIS
+00A9 ; 0 # So COPYRIGHT SIGN
+00AA ; 0 # L& FEMININE ORDINAL INDICATOR
+00AB ; 0 # Pi LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+00AC ; 0 # Sm NOT SIGN
+00AD ; 0 # Cf SOFT HYPHEN
+00AE ; 0 # So REGISTERED SIGN
+00AF ; 0 # Sk MACRON
+00B0 ; 0 # So DEGREE SIGN
+00B1 ; 0 # Sm PLUS-MINUS SIGN
+00B2..00B3 ; 0 # No [2] SUPERSCRIPT TWO..SUPERSCRIPT THREE
+00B4 ; 0 # Sk ACUTE ACCENT
+00B5 ; 0 # L& MICRO SIGN
+00B6 ; 0 # So PILCROW SIGN
+00B7 ; 0 # Po MIDDLE DOT
+00B8 ; 0 # Sk CEDILLA
+00B9 ; 0 # No SUPERSCRIPT ONE
+00BA ; 0 # L& MASCULINE ORDINAL INDICATOR
+00BB ; 0 # Pf RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+00BC..00BE ; 0 # No [3] VULGAR FRACTION ONE QUARTER..VULGAR FRACTION THREE QUARTERS
+00BF ; 0 # Po INVERTED QUESTION MARK
+00C0..00D6 ; 0 # L& [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS
+00D7 ; 0 # Sm MULTIPLICATION SIGN
+00D8..00F6 ; 0 # L& [31] LATIN CAPITAL LETTER O WITH STROKE..LATIN SMALL LETTER O WITH DIAERESIS
+00F7 ; 0 # Sm DIVISION SIGN
+00F8..01BA ; 0 # L& [195] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER EZH WITH TAIL
+01BB ; 0 # Lo LATIN LETTER TWO WITH STROKE
+01BC..01BF ; 0 # L& [4] LATIN CAPITAL LETTER TONE FIVE..LATIN LETTER WYNN
+01C0..01C3 ; 0 # Lo [4] LATIN LETTER DENTAL CLICK..LATIN LETTER RETROFLEX CLICK
+01C4..0293 ; 0 # L& [208] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER EZH WITH CURL
+0294 ; 0 # Lo LATIN LETTER GLOTTAL STOP
+0295..02AF ; 0 # L& [27] LATIN LETTER PHARYNGEAL VOICED FRICATIVE..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL
+02B0..02C1 ; 0 # Lm [18] MODIFIER LETTER SMALL H..MODIFIER LETTER REVERSED GLOTTAL STOP
+02C2..02C5 ; 0 # Sk [4] MODIFIER LETTER LEFT ARROWHEAD..MODIFIER LETTER DOWN ARROWHEAD
+02C6..02D1 ; 0 # Lm [12] MODIFIER LETTER CIRCUMFLEX ACCENT..MODIFIER LETTER HALF TRIANGULAR COLON
+02D2..02DF ; 0 # Sk [14] MODIFIER LETTER CENTRED RIGHT HALF RING..MODIFIER LETTER CROSS ACCENT
+02E0..02E4 ; 0 # Lm [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+02E5..02EB ; 0 # Sk [7] MODIFIER LETTER EXTRA-HIGH TONE BAR..MODIFIER LETTER YANG DEPARTING TONE MARK
+02EC ; 0 # Lm MODIFIER LETTER VOICING
+02ED ; 0 # Sk MODIFIER LETTER UNASPIRATED
+02EE ; 0 # Lm MODIFIER LETTER DOUBLE APOSTROPHE
+02EF..02FF ; 0 # Sk [17] MODIFIER LETTER LOW DOWN ARROWHEAD..MODIFIER LETTER LOW LEFT ARROW
+034F ; 0 # Mn COMBINING GRAPHEME JOINER
+0370..0373 ; 0 # L& [4] GREEK CAPITAL LETTER HETA..GREEK SMALL LETTER ARCHAIC SAMPI
+0374 ; 0 # Lm GREEK NUMERAL SIGN
+0375 ; 0 # Sk GREEK LOWER NUMERAL SIGN
+0376..0377 ; 0 # L& [2] GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA..GREEK SMALL LETTER PAMPHYLIAN DIGAMMA
+037A ; 0 # Lm GREEK YPOGEGRAMMENI
+037B..037D ; 0 # L& [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL
+037E ; 0 # Po GREEK QUESTION MARK
+0384..0385 ; 0 # Sk [2] GREEK TONOS..GREEK DIALYTIKA TONOS
+0386 ; 0 # L& GREEK CAPITAL LETTER ALPHA WITH TONOS
+0387 ; 0 # Po GREEK ANO TELEIA
+0388..038A ; 0 # L& [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS
+038C ; 0 # L& GREEK CAPITAL LETTER OMICRON WITH TONOS
+038E..03A1 ; 0 # L& [20] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER RHO
+03A3..03F5 ; 0 # L& [83] GREEK CAPITAL LETTER SIGMA..GREEK LUNATE EPSILON SYMBOL
+03F6 ; 0 # Sm GREEK REVERSED LUNATE EPSILON SYMBOL
+03F7..0481 ; 0 # L& [139] GREEK CAPITAL LETTER SHO..CYRILLIC SMALL LETTER KOPPA
+0482 ; 0 # So CYRILLIC THOUSANDS SIGN
+0488..0489 ; 0 # Me [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN
+048A..0523 ; 0 # L& [154] CYRILLIC CAPITAL LETTER SHORT I WITH TAIL..CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK
+0531..0556 ; 0 # L& [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH
+0559 ; 0 # Lm ARMENIAN MODIFIER LETTER LEFT HALF RING
+055A..055F ; 0 # Po [6] ARMENIAN APOSTROPHE..ARMENIAN ABBREVIATION MARK
+0561..0587 ; 0 # L& [39] ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LIGATURE ECH YIWN
+0589 ; 0 # Po ARMENIAN FULL STOP
+058A ; 0 # Pd ARMENIAN HYPHEN
+05BE ; 0 # Pd HEBREW PUNCTUATION MAQAF
+05C0 ; 0 # Po HEBREW PUNCTUATION PASEQ
+05C3 ; 0 # Po HEBREW PUNCTUATION SOF PASUQ
+05C6 ; 0 # Po HEBREW PUNCTUATION NUN HAFUKHA
+05D0..05EA ; 0 # Lo [27] HEBREW LETTER ALEF..HEBREW LETTER TAV
+05F0..05F2 ; 0 # Lo [3] HEBREW LIGATURE YIDDISH DOUBLE VAV..HEBREW LIGATURE YIDDISH DOUBLE YOD
+05F3..05F4 ; 0 # Po [2] HEBREW PUNCTUATION GERESH..HEBREW PUNCTUATION GERSHAYIM
+0600..0603 ; 0 # Cf [4] ARABIC NUMBER SIGN..ARABIC SIGN SAFHA
+0606..0608 ; 0 # Sm [3] ARABIC-INDIC CUBE ROOT..ARABIC RAY
+0609..060A ; 0 # Po [2] ARABIC-INDIC PER MILLE SIGN..ARABIC-INDIC PER TEN THOUSAND SIGN
+060B ; 0 # Sc AFGHANI SIGN
+060C..060D ; 0 # Po [2] ARABIC COMMA..ARABIC DATE SEPARATOR
+060E..060F ; 0 # So [2] ARABIC POETIC VERSE SIGN..ARABIC SIGN MISRA
+061B ; 0 # Po ARABIC SEMICOLON
+061E..061F ; 0 # Po [2] ARABIC TRIPLE DOT PUNCTUATION MARK..ARABIC QUESTION MARK
+0621..063F ; 0 # Lo [31] ARABIC LETTER HAMZA..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE
+0640 ; 0 # Lm ARABIC TATWEEL
+0641..064A ; 0 # Lo [10] ARABIC LETTER FEH..ARABIC LETTER YEH
+0660..0669 ; 0 # Nd [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE
+066A..066D ; 0 # Po [4] ARABIC PERCENT SIGN..ARABIC FIVE POINTED STAR
+066E..066F ; 0 # Lo [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF
+0671..06D3 ; 0 # Lo [99] ARABIC LETTER ALEF WASLA..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+06D4 ; 0 # Po ARABIC FULL STOP
+06D5 ; 0 # Lo ARABIC LETTER AE
+06DD ; 0 # Cf ARABIC END OF AYAH
+06DE ; 0 # Me ARABIC START OF RUB EL HIZB
+06E5..06E6 ; 0 # Lm [2] ARABIC SMALL WAW..ARABIC SMALL YEH
+06E9 ; 0 # So ARABIC PLACE OF SAJDAH
+06EE..06EF ; 0 # Lo [2] ARABIC LETTER DAL WITH INVERTED V..ARABIC LETTER REH WITH INVERTED V
+06F0..06F9 ; 0 # Nd [10] EXTENDED ARABIC-INDIC DIGIT ZERO..EXTENDED ARABIC-INDIC DIGIT NINE
+06FA..06FC ; 0 # Lo [3] ARABIC LETTER SHEEN WITH DOT BELOW..ARABIC LETTER GHAIN WITH DOT BELOW
+06FD..06FE ; 0 # So [2] ARABIC SIGN SINDHI AMPERSAND..ARABIC SIGN SINDHI POSTPOSITION MEN
+06FF ; 0 # Lo ARABIC LETTER HEH WITH INVERTED V
+0700..070D ; 0 # Po [14] SYRIAC END OF PARAGRAPH..SYRIAC HARKLEAN ASTERISCUS
+070F ; 0 # Cf SYRIAC ABBREVIATION MARK
+0710 ; 0 # Lo SYRIAC LETTER ALAPH
+0712..072F ; 0 # Lo [30] SYRIAC LETTER BETH..SYRIAC LETTER PERSIAN DHALATH
+074D..07A5 ; 0 # Lo [89] SYRIAC LETTER SOGDIAN ZHAIN..THAANA LETTER WAAVU
+07A6..07B0 ; 0 # Mn [11] THAANA ABAFILI..THAANA SUKUN
+07B1 ; 0 # Lo THAANA LETTER NAA
+07C0..07C9 ; 0 # Nd [10] NKO DIGIT ZERO..NKO DIGIT NINE
+07CA..07EA ; 0 # Lo [33] NKO LETTER A..NKO LETTER JONA RA
+07F4..07F5 ; 0 # Lm [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE
+07F6 ; 0 # So NKO SYMBOL OO DENNEN
+07F7..07F9 ; 0 # Po [3] NKO SYMBOL GBAKURUNEN..NKO EXCLAMATION MARK
+07FA ; 0 # Lm NKO LAJANYALAN
+0901..0902 ; 0 # Mn [2] DEVANAGARI SIGN CANDRABINDU..DEVANAGARI SIGN ANUSVARA
+0903 ; 0 # Mc DEVANAGARI SIGN VISARGA
+0904..0939 ; 0 # Lo [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA
+093D ; 0 # Lo DEVANAGARI SIGN AVAGRAHA
+093E..0940 ; 0 # Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II
+0941..0948 ; 0 # Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI
+0949..094C ; 0 # Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU
+0950 ; 0 # Lo DEVANAGARI OM
+0958..0961 ; 0 # Lo [10] DEVANAGARI LETTER QA..DEVANAGARI LETTER VOCALIC LL
+0962..0963 ; 0 # Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL
+0964..0965 ; 0 # Po [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA
+0966..096F ; 0 # Nd [10] DEVANAGARI DIGIT ZERO..DEVANAGARI DIGIT NINE
+0970 ; 0 # Po DEVANAGARI ABBREVIATION SIGN
+0971 ; 0 # Lm DEVANAGARI SIGN HIGH SPACING DOT
+0972 ; 0 # Lo DEVANAGARI LETTER CANDRA A
+097B..097F ; 0 # Lo [5] DEVANAGARI LETTER GGA..DEVANAGARI LETTER BBA
+0981 ; 0 # Mn BENGALI SIGN CANDRABINDU
+0982..0983 ; 0 # Mc [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA
+0985..098C ; 0 # Lo [8] BENGALI LETTER A..BENGALI LETTER VOCALIC L
+098F..0990 ; 0 # Lo [2] BENGALI LETTER E..BENGALI LETTER AI
+0993..09A8 ; 0 # Lo [22] BENGALI LETTER O..BENGALI LETTER NA
+09AA..09B0 ; 0 # Lo [7] BENGALI LETTER PA..BENGALI LETTER RA
+09B2 ; 0 # Lo BENGALI LETTER LA
+09B6..09B9 ; 0 # Lo [4] BENGALI LETTER SHA..BENGALI LETTER HA
+09BD ; 0 # Lo BENGALI SIGN AVAGRAHA
+09BE..09C0 ; 0 # Mc [3] BENGALI VOWEL SIGN AA..BENGALI VOWEL SIGN II
+09C1..09C4 ; 0 # Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR
+09C7..09C8 ; 0 # Mc [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI
+09CB..09CC ; 0 # Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU
+09CE ; 0 # Lo BENGALI LETTER KHANDA TA
+09D7 ; 0 # Mc BENGALI AU LENGTH MARK
+09DC..09DD ; 0 # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+09DF..09E1 ; 0 # Lo [3] BENGALI LETTER YYA..BENGALI LETTER VOCALIC LL
+09E2..09E3 ; 0 # Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL
+09E6..09EF ; 0 # Nd [10] BENGALI DIGIT ZERO..BENGALI DIGIT NINE
+09F0..09F1 ; 0 # Lo [2] BENGALI LETTER RA WITH MIDDLE DIAGONAL..BENGALI LETTER RA WITH LOWER DIAGONAL
+09F2..09F3 ; 0 # Sc [2] BENGALI RUPEE MARK..BENGALI RUPEE SIGN
+09F4..09F9 ; 0 # No [6] BENGALI CURRENCY NUMERATOR ONE..BENGALI CURRENCY DENOMINATOR SIXTEEN
+09FA ; 0 # So BENGALI ISSHAR
+0A01..0A02 ; 0 # Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI
+0A03 ; 0 # Mc GURMUKHI SIGN VISARGA
+0A05..0A0A ; 0 # Lo [6] GURMUKHI LETTER A..GURMUKHI LETTER UU
+0A0F..0A10 ; 0 # Lo [2] GURMUKHI LETTER EE..GURMUKHI LETTER AI
+0A13..0A28 ; 0 # Lo [22] GURMUKHI LETTER OO..GURMUKHI LETTER NA
+0A2A..0A30 ; 0 # Lo [7] GURMUKHI LETTER PA..GURMUKHI LETTER RA
+0A32..0A33 ; 0 # Lo [2] GURMUKHI LETTER LA..GURMUKHI LETTER LLA
+0A35..0A36 ; 0 # Lo [2] GURMUKHI LETTER VA..GURMUKHI LETTER SHA
+0A38..0A39 ; 0 # Lo [2] GURMUKHI LETTER SA..GURMUKHI LETTER HA
+0A3E..0A40 ; 0 # Mc [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II
+0A41..0A42 ; 0 # Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU
+0A47..0A48 ; 0 # Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI
+0A4B..0A4C ; 0 # Mn [2] GURMUKHI VOWEL SIGN OO..GURMUKHI VOWEL SIGN AU
+0A51 ; 0 # Mn GURMUKHI SIGN UDAAT
+0A59..0A5C ; 0 # Lo [4] GURMUKHI LETTER KHHA..GURMUKHI LETTER RRA
+0A5E ; 0 # Lo GURMUKHI LETTER FA
+0A66..0A6F ; 0 # Nd [10] GURMUKHI DIGIT ZERO..GURMUKHI DIGIT NINE
+0A70..0A71 ; 0 # Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK
+0A72..0A74 ; 0 # Lo [3] GURMUKHI IRI..GURMUKHI EK ONKAR
+0A75 ; 0 # Mn GURMUKHI SIGN YAKASH
+0A81..0A82 ; 0 # Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA
+0A83 ; 0 # Mc GUJARATI SIGN VISARGA
+0A85..0A8D ; 0 # Lo [9] GUJARATI LETTER A..GUJARATI VOWEL CANDRA E
+0A8F..0A91 ; 0 # Lo [3] GUJARATI LETTER E..GUJARATI VOWEL CANDRA O
+0A93..0AA8 ; 0 # Lo [22] GUJARATI LETTER O..GUJARATI LETTER NA
+0AAA..0AB0 ; 0 # Lo [7] GUJARATI LETTER PA..GUJARATI LETTER RA
+0AB2..0AB3 ; 0 # Lo [2] GUJARATI LETTER LA..GUJARATI LETTER LLA
+0AB5..0AB9 ; 0 # Lo [5] GUJARATI LETTER VA..GUJARATI LETTER HA
+0ABD ; 0 # Lo GUJARATI SIGN AVAGRAHA
+0ABE..0AC0 ; 0 # Mc [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II
+0AC1..0AC5 ; 0 # Mn [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E
+0AC7..0AC8 ; 0 # Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI
+0AC9 ; 0 # Mc GUJARATI VOWEL SIGN CANDRA O
+0ACB..0ACC ; 0 # Mc [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU
+0AD0 ; 0 # Lo GUJARATI OM
+0AE0..0AE1 ; 0 # Lo [2] GUJARATI LETTER VOCALIC RR..GUJARATI LETTER VOCALIC LL
+0AE2..0AE3 ; 0 # Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL
+0AE6..0AEF ; 0 # Nd [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE
+0AF1 ; 0 # Sc GUJARATI RUPEE SIGN
+0B01 ; 0 # Mn ORIYA SIGN CANDRABINDU
+0B02..0B03 ; 0 # Mc [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA
+0B05..0B0C ; 0 # Lo [8] ORIYA LETTER A..ORIYA LETTER VOCALIC L
+0B0F..0B10 ; 0 # Lo [2] ORIYA LETTER E..ORIYA LETTER AI
+0B13..0B28 ; 0 # Lo [22] ORIYA LETTER O..ORIYA LETTER NA
+0B2A..0B30 ; 0 # Lo [7] ORIYA LETTER PA..ORIYA LETTER RA
+0B32..0B33 ; 0 # Lo [2] ORIYA LETTER LA..ORIYA LETTER LLA
+0B35..0B39 ; 0 # Lo [5] ORIYA LETTER VA..ORIYA LETTER HA
+0B3D ; 0 # Lo ORIYA SIGN AVAGRAHA
+0B3E ; 0 # Mc ORIYA VOWEL SIGN AA
+0B3F ; 0 # Mn ORIYA VOWEL SIGN I
+0B40 ; 0 # Mc ORIYA VOWEL SIGN II
+0B41..0B44 ; 0 # Mn [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR
+0B47..0B48 ; 0 # Mc [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI
+0B4B..0B4C ; 0 # Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU
+0B56 ; 0 # Mn ORIYA AI LENGTH MARK
+0B57 ; 0 # Mc ORIYA AU LENGTH MARK
+0B5C..0B5D ; 0 # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+0B5F..0B61 ; 0 # Lo [3] ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL
+0B62..0B63 ; 0 # Mn [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL
+0B66..0B6F ; 0 # Nd [10] ORIYA DIGIT ZERO..ORIYA DIGIT NINE
+0B70 ; 0 # So ORIYA ISSHAR
+0B71 ; 0 # Lo ORIYA LETTER WA
+0B82 ; 0 # Mn TAMIL SIGN ANUSVARA
+0B83 ; 0 # Lo TAMIL SIGN VISARGA
+0B85..0B8A ; 0 # Lo [6] TAMIL LETTER A..TAMIL LETTER UU
+0B8E..0B90 ; 0 # Lo [3] TAMIL LETTER E..TAMIL LETTER AI
+0B92..0B95 ; 0 # Lo [4] TAMIL LETTER O..TAMIL LETTER KA
+0B99..0B9A ; 0 # Lo [2] TAMIL LETTER NGA..TAMIL LETTER CA
+0B9C ; 0 # Lo TAMIL LETTER JA
+0B9E..0B9F ; 0 # Lo [2] TAMIL LETTER NYA..TAMIL LETTER TTA
+0BA3..0BA4 ; 0 # Lo [2] TAMIL LETTER NNA..TAMIL LETTER TA
+0BA8..0BAA ; 0 # Lo [3] TAMIL LETTER NA..TAMIL LETTER PA
+0BAE..0BB9 ; 0 # Lo [12] TAMIL LETTER MA..TAMIL LETTER HA
+0BBE..0BBF ; 0 # Mc [2] TAMIL VOWEL SIGN AA..TAMIL VOWEL SIGN I
+0BC0 ; 0 # Mn TAMIL VOWEL SIGN II
+0BC1..0BC2 ; 0 # Mc [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU
+0BC6..0BC8 ; 0 # Mc [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI
+0BCA..0BCC ; 0 # Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU
+0BD0 ; 0 # Lo TAMIL OM
+0BD7 ; 0 # Mc TAMIL AU LENGTH MARK
+0BE6..0BEF ; 0 # Nd [10] TAMIL DIGIT ZERO..TAMIL DIGIT NINE
+0BF0..0BF2 ; 0 # No [3] TAMIL NUMBER TEN..TAMIL NUMBER ONE THOUSAND
+0BF3..0BF8 ; 0 # So [6] TAMIL DAY SIGN..TAMIL AS ABOVE SIGN
+0BF9 ; 0 # Sc TAMIL RUPEE SIGN
+0BFA ; 0 # So TAMIL NUMBER SIGN
+0C01..0C03 ; 0 # Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA
+0C05..0C0C ; 0 # Lo [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L
+0C0E..0C10 ; 0 # Lo [3] TELUGU LETTER E..TELUGU LETTER AI
+0C12..0C28 ; 0 # Lo [23] TELUGU LETTER O..TELUGU LETTER NA
+0C2A..0C33 ; 0 # Lo [10] TELUGU LETTER PA..TELUGU LETTER LLA
+0C35..0C39 ; 0 # Lo [5] TELUGU LETTER VA..TELUGU LETTER HA
+0C3D ; 0 # Lo TELUGU SIGN AVAGRAHA
+0C3E..0C40 ; 0 # Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II
+0C41..0C44 ; 0 # Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR
+0C46..0C48 ; 0 # Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI
+0C4A..0C4C ; 0 # Mn [3] TELUGU VOWEL SIGN O..TELUGU VOWEL SIGN AU
+0C58..0C59 ; 0 # Lo [2] TELUGU LETTER TSA..TELUGU LETTER DZA
+0C60..0C61 ; 0 # Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL
+0C62..0C63 ; 0 # Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL
+0C66..0C6F ; 0 # Nd [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE
+0C78..0C7E ; 0 # No [7] TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR..TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR
+0C7F ; 0 # So TELUGU SIGN TUUMU
+0C82..0C83 ; 0 # Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA
+0C85..0C8C ; 0 # Lo [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L
+0C8E..0C90 ; 0 # Lo [3] KANNADA LETTER E..KANNADA LETTER AI
+0C92..0CA8 ; 0 # Lo [23] KANNADA LETTER O..KANNADA LETTER NA
+0CAA..0CB3 ; 0 # Lo [10] KANNADA LETTER PA..KANNADA LETTER LLA
+0CB5..0CB9 ; 0 # Lo [5] KANNADA LETTER VA..KANNADA LETTER HA
+0CBD ; 0 # Lo KANNADA SIGN AVAGRAHA
+0CBE ; 0 # Mc KANNADA VOWEL SIGN AA
+0CBF ; 0 # Mn KANNADA VOWEL SIGN I
+0CC0..0CC4 ; 0 # Mc [5] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN VOCALIC RR
+0CC6 ; 0 # Mn KANNADA VOWEL SIGN E
+0CC7..0CC8 ; 0 # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI
+0CCA..0CCB ; 0 # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
+0CCC ; 0 # Mn KANNADA VOWEL SIGN AU
+0CD5..0CD6 ; 0 # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK
+0CDE ; 0 # Lo KANNADA LETTER FA
+0CE0..0CE1 ; 0 # Lo [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL
+0CE2..0CE3 ; 0 # Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL
+0CE6..0CEF ; 0 # Nd [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE
+0CF1..0CF2 ; 0 # So [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA
+0D02..0D03 ; 0 # Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA
+0D05..0D0C ; 0 # Lo [8] MALAYALAM LETTER A..MALAYALAM LETTER VOCALIC L
+0D0E..0D10 ; 0 # Lo [3] MALAYALAM LETTER E..MALAYALAM LETTER AI
+0D12..0D28 ; 0 # Lo [23] MALAYALAM LETTER O..MALAYALAM LETTER NA
+0D2A..0D39 ; 0 # Lo [16] MALAYALAM LETTER PA..MALAYALAM LETTER HA
+0D3D ; 0 # Lo MALAYALAM SIGN AVAGRAHA
+0D3E..0D40 ; 0 # Mc [3] MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN II
+0D41..0D44 ; 0 # Mn [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR
+0D46..0D48 ; 0 # Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI
+0D4A..0D4C ; 0 # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
+0D57 ; 0 # Mc MALAYALAM AU LENGTH MARK
+0D60..0D61 ; 0 # Lo [2] MALAYALAM LETTER VOCALIC RR..MALAYALAM LETTER VOCALIC LL
+0D62..0D63 ; 0 # Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL
+0D66..0D6F ; 0 # Nd [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE
+0D70..0D75 ; 0 # No [6] MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE QUARTERS
+0D79 ; 0 # So MALAYALAM DATE MARK
+0D7A..0D7F ; 0 # Lo [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K
+0D82..0D83 ; 0 # Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA
+0D85..0D96 ; 0 # Lo [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA
+0D9A..0DB1 ; 0 # Lo [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA
+0DB3..0DBB ; 0 # Lo [9] SINHALA LETTER SANYAKA DAYANNA..SINHALA LETTER RAYANNA
+0DBD ; 0 # Lo SINHALA LETTER DANTAJA LAYANNA
+0DC0..0DC6 ; 0 # Lo [7] SINHALA LETTER VAYANNA..SINHALA LETTER FAYANNA
+0DCF..0DD1 ; 0 # Mc [3] SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA
+0DD2..0DD4 ; 0 # Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA
+0DD6 ; 0 # Mn SINHALA VOWEL SIGN DIGA PAA-PILLA
+0DD8..0DDF ; 0 # Mc [8] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN GAYANUKITTA
+0DF2..0DF3 ; 0 # Mc [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA
+0DF4 ; 0 # Po SINHALA PUNCTUATION KUNDDALIYA
+0E01..0E30 ; 0 # Lo [48] THAI CHARACTER KO KAI..THAI CHARACTER SARA A
+0E31 ; 0 # Mn THAI CHARACTER MAI HAN-AKAT
+0E32..0E33 ; 0 # Lo [2] THAI CHARACTER SARA AA..THAI CHARACTER SARA AM
+0E34..0E37 ; 0 # Mn [4] THAI CHARACTER SARA I..THAI CHARACTER SARA UEE
+0E3F ; 0 # Sc THAI CURRENCY SYMBOL BAHT
+0E40..0E45 ; 0 # Lo [6] THAI CHARACTER SARA E..THAI CHARACTER LAKKHANGYAO
+0E46 ; 0 # Lm THAI CHARACTER MAIYAMOK
+0E47 ; 0 # Mn THAI CHARACTER MAITAIKHU
+0E4C..0E4E ; 0 # Mn [3] THAI CHARACTER THANTHAKHAT..THAI CHARACTER YAMAKKAN
+0E4F ; 0 # Po THAI CHARACTER FONGMAN
+0E50..0E59 ; 0 # Nd [10] THAI DIGIT ZERO..THAI DIGIT NINE
+0E5A..0E5B ; 0 # Po [2] THAI CHARACTER ANGKHANKHU..THAI CHARACTER KHOMUT
+0E81..0E82 ; 0 # Lo [2] LAO LETTER KO..LAO LETTER KHO SUNG
+0E84 ; 0 # Lo LAO LETTER KHO TAM
+0E87..0E88 ; 0 # Lo [2] LAO LETTER NGO..LAO LETTER CO
+0E8A ; 0 # Lo LAO LETTER SO TAM
+0E8D ; 0 # Lo LAO LETTER NYO
+0E94..0E97 ; 0 # Lo [4] LAO LETTER DO..LAO LETTER THO TAM
+0E99..0E9F ; 0 # Lo [7] LAO LETTER NO..LAO LETTER FO SUNG
+0EA1..0EA3 ; 0 # Lo [3] LAO LETTER MO..LAO LETTER LO LING
+0EA5 ; 0 # Lo LAO LETTER LO LOOT
+0EA7 ; 0 # Lo LAO LETTER WO
+0EAA..0EAB ; 0 # Lo [2] LAO LETTER SO SUNG..LAO LETTER HO SUNG
+0EAD..0EB0 ; 0 # Lo [4] LAO LETTER O..LAO VOWEL SIGN A
+0EB1 ; 0 # Mn LAO VOWEL SIGN MAI KAN
+0EB2..0EB3 ; 0 # Lo [2] LAO VOWEL SIGN AA..LAO VOWEL SIGN AM
+0EB4..0EB7 ; 0 # Mn [4] LAO VOWEL SIGN I..LAO VOWEL SIGN YY
+0EBB..0EBC ; 0 # Mn [2] LAO VOWEL SIGN MAI KON..LAO SEMIVOWEL SIGN LO
+0EBD ; 0 # Lo LAO SEMIVOWEL SIGN NYO
+0EC0..0EC4 ; 0 # Lo [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI
+0EC6 ; 0 # Lm LAO KO LA
+0ECC..0ECD ; 0 # Mn [2] LAO CANCELLATION MARK..LAO NIGGAHITA
+0ED0..0ED9 ; 0 # Nd [10] LAO DIGIT ZERO..LAO DIGIT NINE
+0EDC..0EDD ; 0 # Lo [2] LAO HO NO..LAO HO MO
+0F00 ; 0 # Lo TIBETAN SYLLABLE OM
+0F01..0F03 ; 0 # So [3] TIBETAN MARK GTER YIG MGO TRUNCATED A..TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA
+0F04..0F12 ; 0 # Po [15] TIBETAN MARK INITIAL YIG MGO MDUN MA..TIBETAN MARK RGYA GRAM SHAD
+0F13..0F17 ; 0 # So [5] TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN..TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS
+0F1A..0F1F ; 0 # So [6] TIBETAN SIGN RDEL DKAR GCIG..TIBETAN SIGN RDEL DKAR RDEL NAG
+0F20..0F29 ; 0 # Nd [10] TIBETAN DIGIT ZERO..TIBETAN DIGIT NINE
+0F2A..0F33 ; 0 # No [10] TIBETAN DIGIT HALF ONE..TIBETAN DIGIT HALF ZERO
+0F34 ; 0 # So TIBETAN MARK BSDUS RTAGS
+0F36 ; 0 # So TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN
+0F38 ; 0 # So TIBETAN MARK CHE MGO
+0F3A ; 0 # Ps TIBETAN MARK GUG RTAGS GYON
+0F3B ; 0 # Pe TIBETAN MARK GUG RTAGS GYAS
+0F3C ; 0 # Ps TIBETAN MARK ANG KHANG GYON
+0F3D ; 0 # Pe TIBETAN MARK ANG KHANG GYAS
+0F3E..0F3F ; 0 # Mc [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES
+0F40..0F47 ; 0 # Lo [8] TIBETAN LETTER KA..TIBETAN LETTER JA
+0F49..0F6C ; 0 # Lo [36] TIBETAN LETTER NYA..TIBETAN LETTER RRA
+0F73 ; 0 # Mn TIBETAN VOWEL SIGN II
+0F75..0F79 ; 0 # Mn [5] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC LL
+0F7E ; 0 # Mn TIBETAN SIGN RJES SU NGA RO
+0F7F ; 0 # Mc TIBETAN SIGN RNAM BCAD
+0F81 ; 0 # Mn TIBETAN VOWEL SIGN REVERSED II
+0F85 ; 0 # Po TIBETAN MARK PALUTA
+0F88..0F8B ; 0 # Lo [4] TIBETAN SIGN LCE TSA CAN..TIBETAN SIGN GRU MED RGYINGS
+0F90..0F97 ; 0 # Mn [8] TIBETAN SUBJOINED LETTER KA..TIBETAN SUBJOINED LETTER JA
+0F99..0FBC ; 0 # Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA
+0FBE..0FC5 ; 0 # So [8] TIBETAN KU RU KHA..TIBETAN SYMBOL RDO RJE
+0FC7..0FCC ; 0 # So [6] TIBETAN SYMBOL RDO RJE RGYA GRAM..TIBETAN SYMBOL NOR BU BZHI -KHYIL
+0FCE..0FCF ; 0 # So [2] TIBETAN SIGN RDEL NAG RDEL DKAR..TIBETAN SIGN RDEL NAG GSUM
+0FD0..0FD4 ; 0 # Po [5] TIBETAN MARK BSKA- SHOG GI MGO RGYAN..TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA
+1000..102A ; 0 # Lo [43] MYANMAR LETTER KA..MYANMAR LETTER AU
+102B..102C ; 0 # Mc [2] MYANMAR VOWEL SIGN TALL AA..MYANMAR VOWEL SIGN AA
+102D..1030 ; 0 # Mn [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU
+1031 ; 0 # Mc MYANMAR VOWEL SIGN E
+1032..1036 ; 0 # Mn [5] MYANMAR VOWEL SIGN AI..MYANMAR SIGN ANUSVARA
+1038 ; 0 # Mc MYANMAR SIGN VISARGA
+103B..103C ; 0 # Mc [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA
+103D..103E ; 0 # Mn [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA
+103F ; 0 # Lo MYANMAR LETTER GREAT SA
+1040..1049 ; 0 # Nd [10] MYANMAR DIGIT ZERO..MYANMAR DIGIT NINE
+104A..104F ; 0 # Po [6] MYANMAR SIGN LITTLE SECTION..MYANMAR SYMBOL GENITIVE
+1050..1055 ; 0 # Lo [6] MYANMAR LETTER SHA..MYANMAR LETTER VOCALIC LL
+1056..1057 ; 0 # Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR
+1058..1059 ; 0 # Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL
+105A..105D ; 0 # Lo [4] MYANMAR LETTER MON NGA..MYANMAR LETTER MON BBE
+105E..1060 ; 0 # Mn [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA
+1061 ; 0 # Lo MYANMAR LETTER SGAW KAREN SHA
+1062..1064 ; 0 # Mc [3] MYANMAR VOWEL SIGN SGAW KAREN EU..MYANMAR TONE MARK SGAW KAREN KE PHO
+1065..1066 ; 0 # Lo [2] MYANMAR LETTER WESTERN PWO KAREN THA..MYANMAR LETTER WESTERN PWO KAREN PWA
+1067..106D ; 0 # Mc [7] MYANMAR VOWEL SIGN WESTERN PWO KAREN EU..MYANMAR SIGN WESTERN PWO KAREN TONE-5
+106E..1070 ; 0 # Lo [3] MYANMAR LETTER EASTERN PWO KAREN NNA..MYANMAR LETTER EASTERN PWO KAREN GHWA
+1071..1074 ; 0 # Mn [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE
+1075..1081 ; 0 # Lo [13] MYANMAR LETTER SHAN KA..MYANMAR LETTER SHAN HA
+1082 ; 0 # Mn MYANMAR CONSONANT SIGN SHAN MEDIAL WA
+1083..1084 ; 0 # Mc [2] MYANMAR VOWEL SIGN SHAN AA..MYANMAR VOWEL SIGN SHAN E
+1085..1086 ; 0 # Mn [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y
+1087..108C ; 0 # Mc [6] MYANMAR SIGN SHAN TONE-2..MYANMAR SIGN SHAN COUNCIL TONE-3
+108E ; 0 # Lo MYANMAR LETTER RUMAI PALAUNG FA
+108F ; 0 # Mc MYANMAR SIGN RUMAI PALAUNG TONE-5
+1090..1099 ; 0 # Nd [10] MYANMAR SHAN DIGIT ZERO..MYANMAR SHAN DIGIT NINE
+109E..109F ; 0 # So [2] MYANMAR SYMBOL SHAN ONE..MYANMAR SYMBOL SHAN EXCLAMATION
+10A0..10C5 ; 0 # L& [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE
+10D0..10FA ; 0 # Lo [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN
+10FB ; 0 # Po GEORGIAN PARAGRAPH SEPARATOR
+10FC ; 0 # Lm MODIFIER LETTER GEORGIAN NAR
+1100..1159 ; 0 # Lo [90] HANGUL CHOSEONG KIYEOK..HANGUL CHOSEONG YEORINHIEUH
+115F..11A2 ; 0 # Lo [68] HANGUL CHOSEONG FILLER..HANGUL JUNGSEONG SSANGARAEA
+11A8..11F9 ; 0 # Lo [82] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG YEORINHIEUH
+1200..1248 ; 0 # Lo [73] ETHIOPIC SYLLABLE HA..ETHIOPIC SYLLABLE QWA
+124A..124D ; 0 # Lo [4] ETHIOPIC SYLLABLE QWI..ETHIOPIC SYLLABLE QWE
+1250..1256 ; 0 # Lo [7] ETHIOPIC SYLLABLE QHA..ETHIOPIC SYLLABLE QHO
+1258 ; 0 # Lo ETHIOPIC SYLLABLE QHWA
+125A..125D ; 0 # Lo [4] ETHIOPIC SYLLABLE QHWI..ETHIOPIC SYLLABLE QHWE
+1260..1288 ; 0 # Lo [41] ETHIOPIC SYLLABLE BA..ETHIOPIC SYLLABLE XWA
+128A..128D ; 0 # Lo [4] ETHIOPIC SYLLABLE XWI..ETHIOPIC SYLLABLE XWE
+1290..12B0 ; 0 # Lo [33] ETHIOPIC SYLLABLE NA..ETHIOPIC SYLLABLE KWA
+12B2..12B5 ; 0 # Lo [4] ETHIOPIC SYLLABLE KWI..ETHIOPIC SYLLABLE KWE
+12B8..12BE ; 0 # Lo [7] ETHIOPIC SYLLABLE KXA..ETHIOPIC SYLLABLE KXO
+12C0 ; 0 # Lo ETHIOPIC SYLLABLE KXWA
+12C2..12C5 ; 0 # Lo [4] ETHIOPIC SYLLABLE KXWI..ETHIOPIC SYLLABLE KXWE
+12C8..12D6 ; 0 # Lo [15] ETHIOPIC SYLLABLE WA..ETHIOPIC SYLLABLE PHARYNGEAL O
+12D8..1310 ; 0 # Lo [57] ETHIOPIC SYLLABLE ZA..ETHIOPIC SYLLABLE GWA
+1312..1315 ; 0 # Lo [4] ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE
+1318..135A ; 0 # Lo [67] ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE FYA
+1360 ; 0 # So ETHIOPIC SECTION MARK
+1361..1368 ; 0 # Po [8] ETHIOPIC WORDSPACE..ETHIOPIC PARAGRAPH SEPARATOR
+1369..137C ; 0 # No [20] ETHIOPIC DIGIT ONE..ETHIOPIC NUMBER TEN THOUSAND
+1380..138F ; 0 # Lo [16] ETHIOPIC SYLLABLE SEBATBEIT MWA..ETHIOPIC SYLLABLE PWE
+1390..1399 ; 0 # So [10] ETHIOPIC TONAL MARK YIZET..ETHIOPIC TONAL MARK KURT
+13A0..13F4 ; 0 # Lo [85] CHEROKEE LETTER A..CHEROKEE LETTER YV
+1401..166C ; 0 # Lo [620] CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA
+166D..166E ; 0 # Po [2] CANADIAN SYLLABICS CHI SIGN..CANADIAN SYLLABICS FULL STOP
+166F..1676 ; 0 # Lo [8] CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS NNGAA
+1680 ; 0 # Zs OGHAM SPACE MARK
+1681..169A ; 0 # Lo [26] OGHAM LETTER BEITH..OGHAM LETTER PEITH
+169B ; 0 # Ps OGHAM FEATHER MARK
+169C ; 0 # Pe OGHAM REVERSED FEATHER MARK
+16A0..16EA ; 0 # Lo [75] RUNIC LETTER FEHU FEOH FE F..RUNIC LETTER X
+16EB..16ED ; 0 # Po [3] RUNIC SINGLE PUNCTUATION..RUNIC CROSS PUNCTUATION
+16EE..16F0 ; 0 # Nl [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL
+1700..170C ; 0 # Lo [13] TAGALOG LETTER A..TAGALOG LETTER YA
+170E..1711 ; 0 # Lo [4] TAGALOG LETTER LA..TAGALOG LETTER HA
+1712..1713 ; 0 # Mn [2] TAGALOG VOWEL SIGN I..TAGALOG VOWEL SIGN U
+1720..1731 ; 0 # Lo [18] HANUNOO LETTER A..HANUNOO LETTER HA
+1732..1733 ; 0 # Mn [2] HANUNOO VOWEL SIGN I..HANUNOO VOWEL SIGN U
+1735..1736 ; 0 # Po [2] PHILIPPINE SINGLE PUNCTUATION..PHILIPPINE DOUBLE PUNCTUATION
+1740..1751 ; 0 # Lo [18] BUHID LETTER A..BUHID LETTER HA
+1752..1753 ; 0 # Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U
+1760..176C ; 0 # Lo [13] TAGBANWA LETTER A..TAGBANWA LETTER YA
+176E..1770 ; 0 # Lo [3] TAGBANWA LETTER LA..TAGBANWA LETTER SA
+1772..1773 ; 0 # Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U
+1780..17B3 ; 0 # Lo [52] KHMER LETTER KA..KHMER INDEPENDENT VOWEL QAU
+17B4..17B5 ; 0 # Cf [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA
+17B6 ; 0 # Mc KHMER VOWEL SIGN AA
+17B7..17BD ; 0 # Mn [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA
+17BE..17C5 ; 0 # Mc [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU
+17C6 ; 0 # Mn KHMER SIGN NIKAHIT
+17C7..17C8 ; 0 # Mc [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU
+17C9..17D1 ; 0 # Mn [9] KHMER SIGN MUUSIKATOAN..KHMER SIGN VIRIAM
+17D3 ; 0 # Mn KHMER SIGN BATHAMASAT
+17D4..17D6 ; 0 # Po [3] KHMER SIGN KHAN..KHMER SIGN CAMNUC PII KUUH
+17D7 ; 0 # Lm KHMER SIGN LEK TOO
+17D8..17DA ; 0 # Po [3] KHMER SIGN BEYYAL..KHMER SIGN KOOMUUT
+17DB ; 0 # Sc KHMER CURRENCY SYMBOL RIEL
+17DC ; 0 # Lo KHMER SIGN AVAKRAHASANYA
+17E0..17E9 ; 0 # Nd [10] KHMER DIGIT ZERO..KHMER DIGIT NINE
+17F0..17F9 ; 0 # No [10] KHMER SYMBOL LEK ATTAK SON..KHMER SYMBOL LEK ATTAK PRAM-BUON
+1800..1805 ; 0 # Po [6] MONGOLIAN BIRGA..MONGOLIAN FOUR DOTS
+1806 ; 0 # Pd MONGOLIAN TODO SOFT HYPHEN
+1807..180A ; 0 # Po [4] MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER..MONGOLIAN NIRUGU
+180B..180D ; 0 # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
+180E ; 0 # Zs MONGOLIAN VOWEL SEPARATOR
+1810..1819 ; 0 # Nd [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE
+1820..1842 ; 0 # Lo [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI
+1843 ; 0 # Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN
+1844..1877 ; 0 # Lo [52] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER MANCHU ZHA
+1880..18A8 ; 0 # Lo [41] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER MANCHU ALI GALI BHA
+18AA ; 0 # Lo MONGOLIAN LETTER MANCHU ALI GALI LHA
+1900..191C ; 0 # Lo [29] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER HA
+1920..1922 ; 0 # Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U
+1923..1926 ; 0 # Mc [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU
+1927..1928 ; 0 # Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O
+1929..192B ; 0 # Mc [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA
+1930..1931 ; 0 # Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA
+1932 ; 0 # Mn LIMBU SMALL LETTER ANUSVARA
+1933..1938 ; 0 # Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA
+1940 ; 0 # So LIMBU SIGN LOO
+1944..1945 ; 0 # Po [2] LIMBU EXCLAMATION MARK..LIMBU QUESTION MARK
+1946..194F ; 0 # Nd [10] LIMBU DIGIT ZERO..LIMBU DIGIT NINE
+1950..196D ; 0 # Lo [30] TAI LE LETTER KA..TAI LE LETTER AI
+1970..1974 ; 0 # Lo [5] TAI LE LETTER TONE-2..TAI LE LETTER TONE-6
+1980..19A9 ; 0 # Lo [42] NEW TAI LUE LETTER HIGH QA..NEW TAI LUE LETTER LOW XVA
+19B0..19C0 ; 0 # Mc [17] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE VOWEL SIGN IY
+19C1..19C7 ; 0 # Lo [7] NEW TAI LUE LETTER FINAL V..NEW TAI LUE LETTER FINAL B
+19C8..19C9 ; 0 # Mc [2] NEW TAI LUE TONE MARK-1..NEW TAI LUE TONE MARK-2
+19D0..19D9 ; 0 # Nd [10] NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE
+19DE..19DF ; 0 # Po [2] NEW TAI LUE SIGN LAE..NEW TAI LUE SIGN LAEV
+19E0..19FF ; 0 # So [32] KHMER SYMBOL PATHAMASAT..KHMER SYMBOL DAP-PRAM ROC
+1A00..1A16 ; 0 # Lo [23] BUGINESE LETTER KA..BUGINESE LETTER HA
+1A19..1A1B ; 0 # Mc [3] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN AE
+1A1E..1A1F ; 0 # Po [2] BUGINESE PALLAWA..BUGINESE END OF SECTION
+1B00..1B03 ; 0 # Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG
+1B04 ; 0 # Mc BALINESE SIGN BISAH
+1B05..1B33 ; 0 # Lo [47] BALINESE LETTER AKARA..BALINESE LETTER HA
+1B35 ; 0 # Mc BALINESE VOWEL SIGN TEDUNG
+1B36..1B3A ; 0 # Mn [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA
+1B3B ; 0 # Mc BALINESE VOWEL SIGN RA REPA TEDUNG
+1B3C ; 0 # Mn BALINESE VOWEL SIGN LA LENGA
+1B3D..1B41 ; 0 # Mc [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG
+1B42 ; 0 # Mn BALINESE VOWEL SIGN PEPET
+1B43 ; 0 # Mc BALINESE VOWEL SIGN PEPET TEDUNG
+1B45..1B4B ; 0 # Lo [7] BALINESE LETTER KAF SASAK..BALINESE LETTER ASYURA SASAK
+1B50..1B59 ; 0 # Nd [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE
+1B5A..1B60 ; 0 # Po [7] BALINESE PANTI..BALINESE PAMENENG
+1B61..1B6A ; 0 # So [10] BALINESE MUSICAL SYMBOL DONG..BALINESE MUSICAL SYMBOL DANG GEDE
+1B74..1B7C ; 0 # So [9] BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG..BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING
+1B80..1B81 ; 0 # Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR
+1B82 ; 0 # Mc SUNDANESE SIGN PANGWISAD
+1B83..1BA0 ; 0 # Lo [30] SUNDANESE LETTER A..SUNDANESE LETTER HA
+1BA1 ; 0 # Mc SUNDANESE CONSONANT SIGN PAMINGKAL
+1BA2..1BA5 ; 0 # Mn [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU
+1BA6..1BA7 ; 0 # Mc [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG
+1BA8..1BA9 ; 0 # Mn [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG
+1BAE..1BAF ; 0 # Lo [2] SUNDANESE LETTER KHA..SUNDANESE LETTER SYA
+1BB0..1BB9 ; 0 # Nd [10] SUNDANESE DIGIT ZERO..SUNDANESE DIGIT NINE
+1C00..1C23 ; 0 # Lo [36] LEPCHA LETTER KA..LEPCHA LETTER A
+1C24..1C2B ; 0 # Mc [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU
+1C2C..1C33 ; 0 # Mn [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T
+1C34..1C35 ; 0 # Mc [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG
+1C36 ; 0 # Mn LEPCHA SIGN RAN
+1C3B..1C3F ; 0 # Po [5] LEPCHA PUNCTUATION TA-ROL..LEPCHA PUNCTUATION TSHOOK
+1C40..1C49 ; 0 # Nd [10] LEPCHA DIGIT ZERO..LEPCHA DIGIT NINE
+1C4D..1C4F ; 0 # Lo [3] LEPCHA LETTER TTA..LEPCHA LETTER DDA
+1C50..1C59 ; 0 # Nd [10] OL CHIKI DIGIT ZERO..OL CHIKI DIGIT NINE
+1C5A..1C77 ; 0 # Lo [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH
+1C78..1C7D ; 0 # Lm [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD
+1C7E..1C7F ; 0 # Po [2] OL CHIKI PUNCTUATION MUCAAD..OL CHIKI PUNCTUATION DOUBLE MUCAAD
+1D00..1D2B ; 0 # L& [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL
+1D2C..1D61 ; 0 # Lm [54] MODIFIER LETTER CAPITAL A..MODIFIER LETTER SMALL CHI
+1D62..1D77 ; 0 # L& [22] LATIN SUBSCRIPT SMALL LETTER I..LATIN SMALL LETTER TURNED G
+1D78 ; 0 # Lm MODIFIER LETTER CYRILLIC EN
+1D79..1D9A ; 0 # L& [34] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK
+1D9B..1DBF ; 0 # Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA
+1E00..1F15 ; 0 # L& [278] LATIN CAPITAL LETTER A WITH RING BELOW..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+1F18..1F1D ; 0 # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+1F20..1F45 ; 0 # L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+1F48..1F4D ; 0 # L& [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+1F50..1F57 ; 0 # L& [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1F59 ; 0 # L& GREEK CAPITAL LETTER UPSILON WITH DASIA
+1F5B ; 0 # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+1F5D ; 0 # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+1F5F..1F7D ; 0 # L& [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA
+1F80..1FB4 ; 0 # L& [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+1FB6..1FBC ; 0 # L& [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+1FBD ; 0 # Sk GREEK KORONIS
+1FBE ; 0 # L& GREEK PROSGEGRAMMENI
+1FBF..1FC1 ; 0 # Sk [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI
+1FC2..1FC4 ; 0 # L& [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+1FC6..1FCC ; 0 # L& [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+1FCD..1FCF ; 0 # Sk [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI
+1FD0..1FD3 ; 0 # L& [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FD6..1FDB ; 0 # L& [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA
+1FDD..1FDF ; 0 # Sk [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI
+1FE0..1FEC ; 0 # L& [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA
+1FED..1FEF ; 0 # Sk [3] GREEK DIALYTIKA AND VARIA..GREEK VARIA
+1FF2..1FF4 ; 0 # L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+1FF6..1FFC ; 0 # L& [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+1FFD..1FFE ; 0 # Sk [2] GREEK OXIA..GREEK DASIA
+2000..200A ; 0 # Zs [11] EN QUAD..HAIR SPACE
+200B..200F ; 0 # Cf [5] ZERO WIDTH SPACE..RIGHT-TO-LEFT MARK
+2010..2015 ; 0 # Pd [6] HYPHEN..HORIZONTAL BAR
+2016..2017 ; 0 # Po [2] DOUBLE VERTICAL LINE..DOUBLE LOW LINE
+2018 ; 0 # Pi LEFT SINGLE QUOTATION MARK
+2019 ; 0 # Pf RIGHT SINGLE QUOTATION MARK
+201A ; 0 # Ps SINGLE LOW-9 QUOTATION MARK
+201B..201C ; 0 # Pi [2] SINGLE HIGH-REVERSED-9 QUOTATION MARK..LEFT DOUBLE QUOTATION MARK
+201D ; 0 # Pf RIGHT DOUBLE QUOTATION MARK
+201E ; 0 # Ps DOUBLE LOW-9 QUOTATION MARK
+201F ; 0 # Pi DOUBLE HIGH-REVERSED-9 QUOTATION MARK
+2020..2027 ; 0 # Po [8] DAGGER..HYPHENATION POINT
+2028 ; 0 # Zl LINE SEPARATOR
+2029 ; 0 # Zp PARAGRAPH SEPARATOR
+202A..202E ; 0 # Cf [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE
+202F ; 0 # Zs NARROW NO-BREAK SPACE
+2030..2038 ; 0 # Po [9] PER MILLE SIGN..CARET
+2039 ; 0 # Pi SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+203A ; 0 # Pf SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+203B..203E ; 0 # Po [4] REFERENCE MARK..OVERLINE
+203F..2040 ; 0 # Pc [2] UNDERTIE..CHARACTER TIE
+2041..2043 ; 0 # Po [3] CARET INSERTION POINT..HYPHEN BULLET
+2044 ; 0 # Sm FRACTION SLASH
+2045 ; 0 # Ps LEFT SQUARE BRACKET WITH QUILL
+2046 ; 0 # Pe RIGHT SQUARE BRACKET WITH QUILL
+2047..2051 ; 0 # Po [11] DOUBLE QUESTION MARK..TWO ASTERISKS ALIGNED VERTICALLY
+2052 ; 0 # Sm COMMERCIAL MINUS SIGN
+2053 ; 0 # Po SWUNG DASH
+2054 ; 0 # Pc INVERTED UNDERTIE
+2055..205E ; 0 # Po [10] FLOWER PUNCTUATION MARK..VERTICAL FOUR DOTS
+205F ; 0 # Zs MEDIUM MATHEMATICAL SPACE
+2060..2064 ; 0 # Cf [5] WORD JOINER..INVISIBLE PLUS
+206A..206F ; 0 # Cf [6] INHIBIT SYMMETRIC SWAPPING..NOMINAL DIGIT SHAPES
+2070 ; 0 # No SUPERSCRIPT ZERO
+2071 ; 0 # L& SUPERSCRIPT LATIN SMALL LETTER I
+2074..2079 ; 0 # No [6] SUPERSCRIPT FOUR..SUPERSCRIPT NINE
+207A..207C ; 0 # Sm [3] SUPERSCRIPT PLUS SIGN..SUPERSCRIPT EQUALS SIGN
+207D ; 0 # Ps SUPERSCRIPT LEFT PARENTHESIS
+207E ; 0 # Pe SUPERSCRIPT RIGHT PARENTHESIS
+207F ; 0 # L& SUPERSCRIPT LATIN SMALL LETTER N
+2080..2089 ; 0 # No [10] SUBSCRIPT ZERO..SUBSCRIPT NINE
+208A..208C ; 0 # Sm [3] SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN
+208D ; 0 # Ps SUBSCRIPT LEFT PARENTHESIS
+208E ; 0 # Pe SUBSCRIPT RIGHT PARENTHESIS
+2090..2094 ; 0 # Lm [5] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER SCHWA
+20A0..20B5 ; 0 # Sc [22] EURO-CURRENCY SIGN..CEDI SIGN
+20DD..20E0 ; 0 # Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH
+20E2..20E4 ; 0 # Me [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE
+2100..2101 ; 0 # So [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT
+2102 ; 0 # L& DOUBLE-STRUCK CAPITAL C
+2103..2106 ; 0 # So [4] DEGREE CELSIUS..CADA UNA
+2107 ; 0 # L& EULER CONSTANT
+2108..2109 ; 0 # So [2] SCRUPLE..DEGREE FAHRENHEIT
+210A..2113 ; 0 # L& [10] SCRIPT SMALL G..SCRIPT SMALL L
+2114 ; 0 # So L B BAR SYMBOL
+2115 ; 0 # L& DOUBLE-STRUCK CAPITAL N
+2116..2118 ; 0 # So [3] NUMERO SIGN..SCRIPT CAPITAL P
+2119..211D ; 0 # L& [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R
+211E..2123 ; 0 # So [6] PRESCRIPTION TAKE..VERSICLE
+2124 ; 0 # L& DOUBLE-STRUCK CAPITAL Z
+2125 ; 0 # So OUNCE SIGN
+2126 ; 0 # L& OHM SIGN
+2127 ; 0 # So INVERTED OHM SIGN
+2128 ; 0 # L& BLACK-LETTER CAPITAL Z
+2129 ; 0 # So TURNED GREEK SMALL LETTER IOTA
+212A..212D ; 0 # L& [4] KELVIN SIGN..BLACK-LETTER CAPITAL C
+212E ; 0 # So ESTIMATED SYMBOL
+212F..2134 ; 0 # L& [6] SCRIPT SMALL E..SCRIPT SMALL O
+2135..2138 ; 0 # Lo [4] ALEF SYMBOL..DALET SYMBOL
+2139 ; 0 # L& INFORMATION SOURCE
+213A..213B ; 0 # So [2] ROTATED CAPITAL Q..FACSIMILE SIGN
+213C..213F ; 0 # L& [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI
+2140..2144 ; 0 # Sm [5] DOUBLE-STRUCK N-ARY SUMMATION..TURNED SANS-SERIF CAPITAL Y
+2145..2149 ; 0 # L& [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J
+214A ; 0 # So PROPERTY LINE
+214B ; 0 # Sm TURNED AMPERSAND
+214C..214D ; 0 # So [2] PER SIGN..AKTIESELSKAB
+214E ; 0 # L& TURNED SMALL F
+214F ; 0 # So SYMBOL FOR SAMARITAN SOURCE
+2153..215F ; 0 # No [13] VULGAR FRACTION ONE THIRD..FRACTION NUMERATOR ONE
+2160..2182 ; 0 # Nl [35] ROMAN NUMERAL ONE..ROMAN NUMERAL TEN THOUSAND
+2183..2184 ; 0 # L& [2] ROMAN NUMERAL REVERSED ONE HUNDRED..LATIN SMALL LETTER REVERSED C
+2185..2188 ; 0 # Nl [4] ROMAN NUMERAL SIX LATE FORM..ROMAN NUMERAL ONE HUNDRED THOUSAND
+2190..2194 ; 0 # Sm [5] LEFTWARDS ARROW..LEFT RIGHT ARROW
+2195..2199 ; 0 # So [5] UP DOWN ARROW..SOUTH WEST ARROW
+219A..219B ; 0 # Sm [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE
+219C..219F ; 0 # So [4] LEFTWARDS WAVE ARROW..UPWARDS TWO HEADED ARROW
+21A0 ; 0 # Sm RIGHTWARDS TWO HEADED ARROW
+21A1..21A2 ; 0 # So [2] DOWNWARDS TWO HEADED ARROW..LEFTWARDS ARROW WITH TAIL
+21A3 ; 0 # Sm RIGHTWARDS ARROW WITH TAIL
+21A4..21A5 ; 0 # So [2] LEFTWARDS ARROW FROM BAR..UPWARDS ARROW FROM BAR
+21A6 ; 0 # Sm RIGHTWARDS ARROW FROM BAR
+21A7..21AD ; 0 # So [7] DOWNWARDS ARROW FROM BAR..LEFT RIGHT WAVE ARROW
+21AE ; 0 # Sm LEFT RIGHT ARROW WITH STROKE
+21AF..21CD ; 0 # So [31] DOWNWARDS ZIGZAG ARROW..LEFTWARDS DOUBLE ARROW WITH STROKE
+21CE..21CF ; 0 # Sm [2] LEFT RIGHT DOUBLE ARROW WITH STROKE..RIGHTWARDS DOUBLE ARROW WITH STROKE
+21D0..21D1 ; 0 # So [2] LEFTWARDS DOUBLE ARROW..UPWARDS DOUBLE ARROW
+21D2 ; 0 # Sm RIGHTWARDS DOUBLE ARROW
+21D3 ; 0 # So DOWNWARDS DOUBLE ARROW
+21D4 ; 0 # Sm LEFT RIGHT DOUBLE ARROW
+21D5..21F3 ; 0 # So [31] UP DOWN DOUBLE ARROW..UP DOWN WHITE ARROW
+21F4..22FF ; 0 # Sm [268] RIGHT ARROW WITH SMALL CIRCLE..Z NOTATION BAG MEMBERSHIP
+2300..2307 ; 0 # So [8] DIAMETER SIGN..WAVY LINE
+2308..230B ; 0 # Sm [4] LEFT CEILING..RIGHT FLOOR
+230C..231F ; 0 # So [20] BOTTOM RIGHT CROP..BOTTOM RIGHT CORNER
+2320..2321 ; 0 # Sm [2] TOP HALF INTEGRAL..BOTTOM HALF INTEGRAL
+2322..2328 ; 0 # So [7] FROWN..KEYBOARD
+2329 ; 0 # Ps LEFT-POINTING ANGLE BRACKET
+232A ; 0 # Pe RIGHT-POINTING ANGLE BRACKET
+232B..237B ; 0 # So [81] ERASE TO THE LEFT..NOT CHECK MARK
+237C ; 0 # Sm RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW
+237D..239A ; 0 # So [30] SHOULDERED OPEN BOX..CLEAR SCREEN SYMBOL
+239B..23B3 ; 0 # Sm [25] LEFT PARENTHESIS UPPER HOOK..SUMMATION BOTTOM
+23B4..23DB ; 0 # So [40] TOP SQUARE BRACKET..FUSE
+23DC..23E1 ; 0 # Sm [6] TOP PARENTHESIS..BOTTOM TORTOISE SHELL BRACKET
+23E2..23E7 ; 0 # So [6] WHITE TRAPEZIUM..ELECTRICAL INTERSECTION
+2400..2426 ; 0 # So [39] SYMBOL FOR NULL..SYMBOL FOR SUBSTITUTE FORM TWO
+2440..244A ; 0 # So [11] OCR HOOK..OCR DOUBLE BACKSLASH
+2460..249B ; 0 # No [60] CIRCLED DIGIT ONE..NUMBER TWENTY FULL STOP
+249C..24E9 ; 0 # So [78] PARENTHESIZED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z
+24EA..24FF ; 0 # No [22] CIRCLED DIGIT ZERO..NEGATIVE CIRCLED DIGIT ZERO
+2500..25B6 ; 0 # So [183] BOX DRAWINGS LIGHT HORIZONTAL..BLACK RIGHT-POINTING TRIANGLE
+25B7 ; 0 # Sm WHITE RIGHT-POINTING TRIANGLE
+25B8..25C0 ; 0 # So [9] BLACK RIGHT-POINTING SMALL TRIANGLE..BLACK LEFT-POINTING TRIANGLE
+25C1 ; 0 # Sm WHITE LEFT-POINTING TRIANGLE
+25C2..25F7 ; 0 # So [54] BLACK LEFT-POINTING SMALL TRIANGLE..WHITE CIRCLE WITH UPPER RIGHT QUADRANT
+25F8..25FF ; 0 # Sm [8] UPPER LEFT TRIANGLE..LOWER RIGHT TRIANGLE
+2600..266E ; 0 # So [111] BLACK SUN WITH RAYS..MUSIC NATURAL SIGN
+266F ; 0 # Sm MUSIC SHARP SIGN
+2670..269D ; 0 # So [46] WEST SYRIAC CROSS..OUTLINED WHITE STAR
+26A0..26BC ; 0 # So [29] WARNING SIGN..SESQUIQUADRATE
+26C0..26C3 ; 0 # So [4] WHITE DRAUGHTS MAN..BLACK DRAUGHTS KING
+2701..2704 ; 0 # So [4] UPPER BLADE SCISSORS..WHITE SCISSORS
+2706..2709 ; 0 # So [4] TELEPHONE LOCATION SIGN..ENVELOPE
+270C..2727 ; 0 # So [28] VICTORY HAND..WHITE FOUR POINTED STAR
+2729..274B ; 0 # So [35] STRESS OUTLINED WHITE STAR..HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
+274D ; 0 # So SHADOWED WHITE CIRCLE
+274F..2752 ; 0 # So [4] LOWER RIGHT DROP-SHADOWED WHITE SQUARE..UPPER RIGHT SHADOWED WHITE SQUARE
+2756 ; 0 # So BLACK DIAMOND MINUS WHITE X
+2758..275E ; 0 # So [7] LIGHT VERTICAL BAR..HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT
+2761..2767 ; 0 # So [7] CURVED STEM PARAGRAPH SIGN ORNAMENT..ROTATED FLORAL HEART BULLET
+2768 ; 0 # Ps MEDIUM LEFT PARENTHESIS ORNAMENT
+2769 ; 0 # Pe MEDIUM RIGHT PARENTHESIS ORNAMENT
+276A ; 0 # Ps MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT
+276B ; 0 # Pe MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT
+276C ; 0 # Ps MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT
+276D ; 0 # Pe MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT
+276E ; 0 # Ps HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT
+276F ; 0 # Pe HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT
+2770 ; 0 # Ps HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT
+2771 ; 0 # Pe HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT
+2772 ; 0 # Ps LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT
+2773 ; 0 # Pe LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT
+2774 ; 0 # Ps MEDIUM LEFT CURLY BRACKET ORNAMENT
+2775 ; 0 # Pe MEDIUM RIGHT CURLY BRACKET ORNAMENT
+2776..2793 ; 0 # No [30] DINGBAT NEGATIVE CIRCLED DIGIT ONE..DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN
+2794 ; 0 # So HEAVY WIDE-HEADED RIGHTWARDS ARROW
+2798..27AF ; 0 # So [24] HEAVY SOUTH EAST ARROW..NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+27B1..27BE ; 0 # So [14] NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW..OPEN-OUTLINED RIGHTWARDS ARROW
+27C0..27C4 ; 0 # Sm [5] THREE DIMENSIONAL ANGLE..OPEN SUPERSET
+27C5 ; 0 # Ps LEFT S-SHAPED BAG DELIMITER
+27C6 ; 0 # Pe RIGHT S-SHAPED BAG DELIMITER
+27C7..27CA ; 0 # Sm [4] OR WITH DOT INSIDE..VERTICAL BAR WITH HORIZONTAL STROKE
+27CC ; 0 # Sm LONG DIVISION
+27D0..27E5 ; 0 # Sm [22] WHITE DIAMOND WITH CENTRED DOT..WHITE SQUARE WITH RIGHTWARDS TICK
+27E6 ; 0 # Ps MATHEMATICAL LEFT WHITE SQUARE BRACKET
+27E7 ; 0 # Pe MATHEMATICAL RIGHT WHITE SQUARE BRACKET
+27E8 ; 0 # Ps MATHEMATICAL LEFT ANGLE BRACKET
+27E9 ; 0 # Pe MATHEMATICAL RIGHT ANGLE BRACKET
+27EA ; 0 # Ps MATHEMATICAL LEFT DOUBLE ANGLE BRACKET
+27EB ; 0 # Pe MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET
+27EC ; 0 # Ps MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET
+27ED ; 0 # Pe MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET
+27EE ; 0 # Ps MATHEMATICAL LEFT FLATTENED PARENTHESIS
+27EF ; 0 # Pe MATHEMATICAL RIGHT FLATTENED PARENTHESIS
+27F0..27FF ; 0 # Sm [16] UPWARDS QUADRUPLE ARROW..LONG RIGHTWARDS SQUIGGLE ARROW
+2800..28FF ; 0 # So [256] BRAILLE PATTERN BLANK..BRAILLE PATTERN DOTS-12345678
+2900..2982 ; 0 # Sm [131] RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE..Z NOTATION TYPE COLON
+2983 ; 0 # Ps LEFT WHITE CURLY BRACKET
+2984 ; 0 # Pe RIGHT WHITE CURLY BRACKET
+2985 ; 0 # Ps LEFT WHITE PARENTHESIS
+2986 ; 0 # Pe RIGHT WHITE PARENTHESIS
+2987 ; 0 # Ps Z NOTATION LEFT IMAGE BRACKET
+2988 ; 0 # Pe Z NOTATION RIGHT IMAGE BRACKET
+2989 ; 0 # Ps Z NOTATION LEFT BINDING BRACKET
+298A ; 0 # Pe Z NOTATION RIGHT BINDING BRACKET
+298B ; 0 # Ps LEFT SQUARE BRACKET WITH UNDERBAR
+298C ; 0 # Pe RIGHT SQUARE BRACKET WITH UNDERBAR
+298D ; 0 # Ps LEFT SQUARE BRACKET WITH TICK IN TOP CORNER
+298E ; 0 # Pe RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
+298F ; 0 # Ps LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
+2990 ; 0 # Pe RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER
+2991 ; 0 # Ps LEFT ANGLE BRACKET WITH DOT
+2992 ; 0 # Pe RIGHT ANGLE BRACKET WITH DOT
+2993 ; 0 # Ps LEFT ARC LESS-THAN BRACKET
+2994 ; 0 # Pe RIGHT ARC GREATER-THAN BRACKET
+2995 ; 0 # Ps DOUBLE LEFT ARC GREATER-THAN BRACKET
+2996 ; 0 # Pe DOUBLE RIGHT ARC LESS-THAN BRACKET
+2997 ; 0 # Ps LEFT BLACK TORTOISE SHELL BRACKET
+2998 ; 0 # Pe RIGHT BLACK TORTOISE SHELL BRACKET
+2999..29D7 ; 0 # Sm [63] DOTTED FENCE..BLACK HOURGLASS
+29D8 ; 0 # Ps LEFT WIGGLY FENCE
+29D9 ; 0 # Pe RIGHT WIGGLY FENCE
+29DA ; 0 # Ps LEFT DOUBLE WIGGLY FENCE
+29DB ; 0 # Pe RIGHT DOUBLE WIGGLY FENCE
+29DC..29FB ; 0 # Sm [32] INCOMPLETE INFINITY..TRIPLE PLUS
+29FC ; 0 # Ps LEFT-POINTING CURVED ANGLE BRACKET
+29FD ; 0 # Pe RIGHT-POINTING CURVED ANGLE BRACKET
+29FE..2AFF ; 0 # Sm [258] TINY..N-ARY WHITE VERTICAL BAR
+2B00..2B2F ; 0 # So [48] NORTH EAST WHITE ARROW..WHITE VERTICAL ELLIPSE
+2B30..2B44 ; 0 # Sm [21] LEFT ARROW WITH SMALL CIRCLE..RIGHTWARDS ARROW THROUGH SUPERSET
+2B45..2B46 ; 0 # So [2] LEFTWARDS QUADRUPLE ARROW..RIGHTWARDS QUADRUPLE ARROW
+2B47..2B4C ; 0 # Sm [6] REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW..RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR
+2B50..2B54 ; 0 # So [5] WHITE MEDIUM STAR..WHITE RIGHT-POINTING PENTAGON
+2C00..2C2E ; 0 # L& [47] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE
+2C30..2C5E ; 0 # L& [47] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE
+2C60..2C6F ; 0 # L& [16] LATIN CAPITAL LETTER L WITH DOUBLE BAR..LATIN CAPITAL LETTER TURNED A
+2C71..2C7C ; 0 # L& [12] LATIN SMALL LETTER V WITH RIGHT HOOK..LATIN SUBSCRIPT SMALL LETTER J
+2C7D ; 0 # Lm MODIFIER LETTER CAPITAL V
+2C80..2CE4 ; 0 # L& [101] COPTIC CAPITAL LETTER ALFA..COPTIC SYMBOL KAI
+2CE5..2CEA ; 0 # So [6] COPTIC SYMBOL MI RO..COPTIC SYMBOL SHIMA SIMA
+2CF9..2CFC ; 0 # Po [4] COPTIC OLD NUBIAN FULL STOP..COPTIC OLD NUBIAN VERSE DIVIDER
+2CFD ; 0 # No COPTIC FRACTION ONE HALF
+2CFE..2CFF ; 0 # Po [2] COPTIC FULL STOP..COPTIC MORPHOLOGICAL DIVIDER
+2D00..2D25 ; 0 # L& [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE
+2D30..2D65 ; 0 # Lo [54] TIFINAGH LETTER YA..TIFINAGH LETTER YAZZ
+2D6F ; 0 # Lm TIFINAGH MODIFIER LETTER LABIALIZATION MARK
+2D80..2D96 ; 0 # Lo [23] ETHIOPIC SYLLABLE LOA..ETHIOPIC SYLLABLE GGWE
+2DA0..2DA6 ; 0 # Lo [7] ETHIOPIC SYLLABLE SSA..ETHIOPIC SYLLABLE SSO
+2DA8..2DAE ; 0 # Lo [7] ETHIOPIC SYLLABLE CCA..ETHIOPIC SYLLABLE CCO
+2DB0..2DB6 ; 0 # Lo [7] ETHIOPIC SYLLABLE ZZA..ETHIOPIC SYLLABLE ZZO
+2DB8..2DBE ; 0 # Lo [7] ETHIOPIC SYLLABLE CCHA..ETHIOPIC SYLLABLE CCHO
+2DC0..2DC6 ; 0 # Lo [7] ETHIOPIC SYLLABLE QYA..ETHIOPIC SYLLABLE QYO
+2DC8..2DCE ; 0 # Lo [7] ETHIOPIC SYLLABLE KYA..ETHIOPIC SYLLABLE KYO
+2DD0..2DD6 ; 0 # Lo [7] ETHIOPIC SYLLABLE XYA..ETHIOPIC SYLLABLE XYO
+2DD8..2DDE ; 0 # Lo [7] ETHIOPIC SYLLABLE GYA..ETHIOPIC SYLLABLE GYO
+2E00..2E01 ; 0 # Po [2] RIGHT ANGLE SUBSTITUTION MARKER..RIGHT ANGLE DOTTED SUBSTITUTION MARKER
+2E02 ; 0 # Pi LEFT SUBSTITUTION BRACKET
+2E03 ; 0 # Pf RIGHT SUBSTITUTION BRACKET
+2E04 ; 0 # Pi LEFT DOTTED SUBSTITUTION BRACKET
+2E05 ; 0 # Pf RIGHT DOTTED SUBSTITUTION BRACKET
+2E06..2E08 ; 0 # Po [3] RAISED INTERPOLATION MARKER..DOTTED TRANSPOSITION MARKER
+2E09 ; 0 # Pi LEFT TRANSPOSITION BRACKET
+2E0A ; 0 # Pf RIGHT TRANSPOSITION BRACKET
+2E0B ; 0 # Po RAISED SQUARE
+2E0C ; 0 # Pi LEFT RAISED OMISSION BRACKET
+2E0D ; 0 # Pf RIGHT RAISED OMISSION BRACKET
+2E0E..2E16 ; 0 # Po [9] EDITORIAL CORONIS..DOTTED RIGHT-POINTING ANGLE
+2E17 ; 0 # Pd DOUBLE OBLIQUE HYPHEN
+2E18..2E19 ; 0 # Po [2] INVERTED INTERROBANG..PALM BRANCH
+2E1A ; 0 # Pd HYPHEN WITH DIAERESIS
+2E1B ; 0 # Po TILDE WITH RING ABOVE
+2E1C ; 0 # Pi LEFT LOW PARAPHRASE BRACKET
+2E1D ; 0 # Pf RIGHT LOW PARAPHRASE BRACKET
+2E1E..2E1F ; 0 # Po [2] TILDE WITH DOT ABOVE..TILDE WITH DOT BELOW
+2E20 ; 0 # Pi LEFT VERTICAL BAR WITH QUILL
+2E21 ; 0 # Pf RIGHT VERTICAL BAR WITH QUILL
+2E22 ; 0 # Ps TOP LEFT HALF BRACKET
+2E23 ; 0 # Pe TOP RIGHT HALF BRACKET
+2E24 ; 0 # Ps BOTTOM LEFT HALF BRACKET
+2E25 ; 0 # Pe BOTTOM RIGHT HALF BRACKET
+2E26 ; 0 # Ps LEFT SIDEWAYS U BRACKET
+2E27 ; 0 # Pe RIGHT SIDEWAYS U BRACKET
+2E28 ; 0 # Ps LEFT DOUBLE PARENTHESIS
+2E29 ; 0 # Pe RIGHT DOUBLE PARENTHESIS
+2E2A..2E2E ; 0 # Po [5] TWO DOTS OVER ONE DOT PUNCTUATION..REVERSED QUESTION MARK
+2E2F ; 0 # Lm VERTICAL TILDE
+2E30 ; 0 # Po RING POINT
+2E80..2E99 ; 0 # So [26] CJK RADICAL REPEAT..CJK RADICAL RAP
+2E9B..2EF3 ; 0 # So [89] CJK RADICAL CHOKE..CJK RADICAL C-SIMPLIFIED TURTLE
+2F00..2FD5 ; 0 # So [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE
+2FF0..2FFB ; 0 # So [12] IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT..IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID
+3000 ; 0 # Zs IDEOGRAPHIC SPACE
+3001..3003 ; 0 # Po [3] IDEOGRAPHIC COMMA..DITTO MARK
+3004 ; 0 # So JAPANESE INDUSTRIAL STANDARD SYMBOL
+3005 ; 0 # Lm IDEOGRAPHIC ITERATION MARK
+3006 ; 0 # Lo IDEOGRAPHIC CLOSING MARK
+3007 ; 0 # Nl IDEOGRAPHIC NUMBER ZERO
+3008 ; 0 # Ps LEFT ANGLE BRACKET
+3009 ; 0 # Pe RIGHT ANGLE BRACKET
+300A ; 0 # Ps LEFT DOUBLE ANGLE BRACKET
+300B ; 0 # Pe RIGHT DOUBLE ANGLE BRACKET
+300C ; 0 # Ps LEFT CORNER BRACKET
+300D ; 0 # Pe RIGHT CORNER BRACKET
+300E ; 0 # Ps LEFT WHITE CORNER BRACKET
+300F ; 0 # Pe RIGHT WHITE CORNER BRACKET
+3010 ; 0 # Ps LEFT BLACK LENTICULAR BRACKET
+3011 ; 0 # Pe RIGHT BLACK LENTICULAR BRACKET
+3012..3013 ; 0 # So [2] POSTAL MARK..GETA MARK
+3014 ; 0 # Ps LEFT TORTOISE SHELL BRACKET
+3015 ; 0 # Pe RIGHT TORTOISE SHELL BRACKET
+3016 ; 0 # Ps LEFT WHITE LENTICULAR BRACKET
+3017 ; 0 # Pe RIGHT WHITE LENTICULAR BRACKET
+3018 ; 0 # Ps LEFT WHITE TORTOISE SHELL BRACKET
+3019 ; 0 # Pe RIGHT WHITE TORTOISE SHELL BRACKET
+301A ; 0 # Ps LEFT WHITE SQUARE BRACKET
+301B ; 0 # Pe RIGHT WHITE SQUARE BRACKET
+301C ; 0 # Pd WAVE DASH
+301D ; 0 # Ps REVERSED DOUBLE PRIME QUOTATION MARK
+301E..301F ; 0 # Pe [2] DOUBLE PRIME QUOTATION MARK..LOW DOUBLE PRIME QUOTATION MARK
+3020 ; 0 # So POSTAL MARK FACE
+3021..3029 ; 0 # Nl [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE
+3030 ; 0 # Pd WAVY DASH
+3031..3035 ; 0 # Lm [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF
+3036..3037 ; 0 # So [2] CIRCLED POSTAL MARK..IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL
+3038..303A ; 0 # Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY
+303B ; 0 # Lm VERTICAL IDEOGRAPHIC ITERATION MARK
+303C ; 0 # Lo MASU MARK
+303D ; 0 # Po PART ALTERNATION MARK
+303E..303F ; 0 # So [2] IDEOGRAPHIC VARIATION INDICATOR..IDEOGRAPHIC HALF FILL SPACE
+3041..3096 ; 0 # Lo [86] HIRAGANA LETTER SMALL A..HIRAGANA LETTER SMALL KE
+309B..309C ; 0 # Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+309D..309E ; 0 # Lm [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK
+309F ; 0 # Lo HIRAGANA DIGRAPH YORI
+30A0 ; 0 # Pd KATAKANA-HIRAGANA DOUBLE HYPHEN
+30A1..30FA ; 0 # Lo [90] KATAKANA LETTER SMALL A..KATAKANA LETTER VO
+30FB ; 0 # Po KATAKANA MIDDLE DOT
+30FC..30FE ; 0 # Lm [3] KATAKANA-HIRAGANA PROLONGED SOUND MARK..KATAKANA VOICED ITERATION MARK
+30FF ; 0 # Lo KATAKANA DIGRAPH KOTO
+3105..312D ; 0 # Lo [41] BOPOMOFO LETTER B..BOPOMOFO LETTER IH
+3131..318E ; 0 # Lo [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE
+3190..3191 ; 0 # So [2] IDEOGRAPHIC ANNOTATION LINKING MARK..IDEOGRAPHIC ANNOTATION REVERSE MARK
+3192..3195 ; 0 # No [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK
+3196..319F ; 0 # So [10] IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK
+31A0..31B7 ; 0 # Lo [24] BOPOMOFO LETTER BU..BOPOMOFO FINAL LETTER H
+31C0..31E3 ; 0 # So [36] CJK STROKE T..CJK STROKE Q
+31F0..31FF ; 0 # Lo [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO
+3200..321E ; 0 # So [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU
+3220..3229 ; 0 # No [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN
+322A..3243 ; 0 # So [26] PARENTHESIZED IDEOGRAPH MOON..PARENTHESIZED IDEOGRAPH REACH
+3250 ; 0 # So PARTNERSHIP SIGN
+3251..325F ; 0 # No [15] CIRCLED NUMBER TWENTY ONE..CIRCLED NUMBER THIRTY FIVE
+3260..327F ; 0 # So [32] CIRCLED HANGUL KIYEOK..KOREAN STANDARD SYMBOL
+3280..3289 ; 0 # No [10] CIRCLED IDEOGRAPH ONE..CIRCLED IDEOGRAPH TEN
+328A..32B0 ; 0 # So [39] CIRCLED IDEOGRAPH MOON..CIRCLED IDEOGRAPH NIGHT
+32B1..32BF ; 0 # No [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY
+32C0..32FE ; 0 # So [63] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..CIRCLED KATAKANA WO
+3300..33FF ; 0 # So [256] SQUARE APAATO..SQUARE GAL
+3400..4DB5 ; 0 # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5
+4DC0..4DFF ; 0 # So [64] HEXAGRAM FOR THE CREATIVE HEAVEN..HEXAGRAM FOR BEFORE COMPLETION
+4E00..9FC3 ; 0 # Lo [20932] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FC3
+A000..A014 ; 0 # Lo [21] YI SYLLABLE IT..YI SYLLABLE E
+A015 ; 0 # Lm YI SYLLABLE WU
+A016..A48C ; 0 # Lo [1143] YI SYLLABLE BIT..YI SYLLABLE YYR
+A490..A4C6 ; 0 # So [55] YI RADICAL QOT..YI RADICAL KE
+A500..A60B ; 0 # Lo [268] VAI SYLLABLE EE..VAI SYLLABLE NG
+A60C ; 0 # Lm VAI SYLLABLE LENGTHENER
+A60D..A60F ; 0 # Po [3] VAI COMMA..VAI QUESTION MARK
+A610..A61F ; 0 # Lo [16] VAI SYLLABLE NDOLE FA..VAI SYMBOL JONG
+A620..A629 ; 0 # Nd [10] VAI DIGIT ZERO..VAI DIGIT NINE
+A62A..A62B ; 0 # Lo [2] VAI SYLLABLE NDOLE MA..VAI SYLLABLE NDOLE DO
+A640..A65F ; 0 # L& [32] CYRILLIC CAPITAL LETTER ZEMLYA..CYRILLIC SMALL LETTER YN
+A662..A66D ; 0 # L& [12] CYRILLIC CAPITAL LETTER SOFT DE..CYRILLIC SMALL LETTER DOUBLE MONOCULAR O
+A66E ; 0 # Lo CYRILLIC LETTER MULTIOCULAR O
+A670..A672 ; 0 # Me [3] COMBINING CYRILLIC TEN MILLIONS SIGN..COMBINING CYRILLIC THOUSAND MILLIONS SIGN
+A673 ; 0 # Po SLAVONIC ASTERISK
+A67E ; 0 # Po CYRILLIC KAVYKA
+A67F ; 0 # Lm CYRILLIC PAYEROK
+A680..A697 ; 0 # L& [24] CYRILLIC CAPITAL LETTER DWE..CYRILLIC SMALL LETTER SHWE
+A700..A716 ; 0 # Sk [23] MODIFIER LETTER CHINESE TONE YIN PING..MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR
+A717..A71F ; 0 # Lm [9] MODIFIER LETTER DOT VERTICAL BAR..MODIFIER LETTER LOW INVERTED EXCLAMATION MARK
+A720..A721 ; 0 # Sk [2] MODIFIER LETTER STRESS AND HIGH TONE..MODIFIER LETTER STRESS AND LOW TONE
+A722..A76F ; 0 # L& [78] LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF..LATIN SMALL LETTER CON
+A770 ; 0 # Lm MODIFIER LETTER US
+A771..A787 ; 0 # L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR T
+A788 ; 0 # Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT
+A789..A78A ; 0 # Sk [2] MODIFIER LETTER COLON..MODIFIER LETTER SHORT EQUALS SIGN
+A78B..A78C ; 0 # L& [2] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER SALTILLO
+A7FB..A801 ; 0 # Lo [7] LATIN EPIGRAPHIC LETTER REVERSED F..SYLOTI NAGRI LETTER I
+A802 ; 0 # Mn SYLOTI NAGRI SIGN DVISVARA
+A803..A805 ; 0 # Lo [3] SYLOTI NAGRI LETTER U..SYLOTI NAGRI LETTER O
+A807..A80A ; 0 # Lo [4] SYLOTI NAGRI LETTER KO..SYLOTI NAGRI LETTER GHO
+A80B ; 0 # Mn SYLOTI NAGRI SIGN ANUSVARA
+A80C..A822 ; 0 # Lo [23] SYLOTI NAGRI LETTER CO..SYLOTI NAGRI LETTER HO
+A823..A824 ; 0 # Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I
+A825..A826 ; 0 # Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E
+A827 ; 0 # Mc SYLOTI NAGRI VOWEL SIGN OO
+A828..A82B ; 0 # So [4] SYLOTI NAGRI POETRY MARK-1..SYLOTI NAGRI POETRY MARK-4
+A840..A873 ; 0 # Lo [52] PHAGS-PA LETTER KA..PHAGS-PA LETTER CANDRABINDU
+A874..A877 ; 0 # Po [4] PHAGS-PA SINGLE HEAD MARK..PHAGS-PA MARK DOUBLE SHAD
+A880..A881 ; 0 # Mc [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA
+A882..A8B3 ; 0 # Lo [50] SAURASHTRA LETTER A..SAURASHTRA LETTER LLA
+A8B4..A8C3 ; 0 # Mc [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU
+A8CE..A8CF ; 0 # Po [2] SAURASHTRA DANDA..SAURASHTRA DOUBLE DANDA
+A8D0..A8D9 ; 0 # Nd [10] SAURASHTRA DIGIT ZERO..SAURASHTRA DIGIT NINE
+A900..A909 ; 0 # Nd [10] KAYAH LI DIGIT ZERO..KAYAH LI DIGIT NINE
+A90A..A925 ; 0 # Lo [28] KAYAH LI LETTER KA..KAYAH LI LETTER OO
+A926..A92A ; 0 # Mn [5] KAYAH LI VOWEL UE..KAYAH LI VOWEL O
+A92E..A92F ; 0 # Po [2] KAYAH LI SIGN CWI..KAYAH LI SIGN SHYA
+A930..A946 ; 0 # Lo [23] REJANG LETTER KA..REJANG LETTER A
+A947..A951 ; 0 # Mn [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R
+A952 ; 0 # Mc REJANG CONSONANT SIGN H
+A95F ; 0 # Po REJANG SECTION MARK
+AA00..AA28 ; 0 # Lo [41] CHAM LETTER A..CHAM LETTER HA
+AA29..AA2E ; 0 # Mn [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE
+AA2F..AA30 ; 0 # Mc [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI
+AA31..AA32 ; 0 # Mn [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE
+AA33..AA34 ; 0 # Mc [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA
+AA35..AA36 ; 0 # Mn [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA
+AA40..AA42 ; 0 # Lo [3] CHAM LETTER FINAL K..CHAM LETTER FINAL NG
+AA43 ; 0 # Mn CHAM CONSONANT SIGN FINAL NG
+AA44..AA4B ; 0 # Lo [8] CHAM LETTER FINAL CH..CHAM LETTER FINAL SS
+AA4C ; 0 # Mn CHAM CONSONANT SIGN FINAL M
+AA4D ; 0 # Mc CHAM CONSONANT SIGN FINAL H
+AA50..AA59 ; 0 # Nd [10] CHAM DIGIT ZERO..CHAM DIGIT NINE
+AA5C..AA5F ; 0 # Po [4] CHAM PUNCTUATION SPIRAL..CHAM PUNCTUATION TRIPLE DANDA
+AC00..D7A3 ; 0 # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH
+E000..F8FF ; 0 # Co [6400] <private-use-E000>..<private-use-F8FF>
+F900..FA2D ; 0 # Lo [302] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA2D
+FA30..FA6A ; 0 # Lo [59] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6A
+FA70..FAD9 ; 0 # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
+FB00..FB06 ; 0 # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
+FB13..FB17 ; 0 # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
+FB1D ; 0 # Lo HEBREW LETTER YOD WITH HIRIQ
+FB1F..FB28 ; 0 # Lo [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV
+FB29 ; 0 # Sm HEBREW LETTER ALTERNATIVE PLUS SIGN
+FB2A..FB36 ; 0 # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+FB38..FB3C ; 0 # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+FB3E ; 0 # Lo HEBREW LETTER MEM WITH DAGESH
+FB40..FB41 ; 0 # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+FB43..FB44 ; 0 # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+FB46..FBB1 ; 0 # Lo [108] HEBREW LETTER TSADI WITH DAGESH..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
+FBD3..FD3D ; 0 # Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
+FD3E ; 0 # Ps ORNATE LEFT PARENTHESIS
+FD3F ; 0 # Pe ORNATE RIGHT PARENTHESIS
+FD50..FD8F ; 0 # Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
+FD92..FDC7 ; 0 # Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+FDF0..FDFB ; 0 # Lo [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU
+FDFC ; 0 # Sc RIAL SIGN
+FDFD ; 0 # So ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM
+FE00..FE0F ; 0 # Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16
+FE10..FE16 ; 0 # Po [7] PRESENTATION FORM FOR VERTICAL COMMA..PRESENTATION FORM FOR VERTICAL QUESTION MARK
+FE17 ; 0 # Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET
+FE18 ; 0 # Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET
+FE19 ; 0 # Po PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS
+FE30 ; 0 # Po PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
+FE31..FE32 ; 0 # Pd [2] PRESENTATION FORM FOR VERTICAL EM DASH..PRESENTATION FORM FOR VERTICAL EN DASH
+FE33..FE34 ; 0 # Pc [2] PRESENTATION FORM FOR VERTICAL LOW LINE..PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
+FE35 ; 0 # Ps PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS
+FE36 ; 0 # Pe PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS
+FE37 ; 0 # Ps PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET
+FE38 ; 0 # Pe PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET
+FE39 ; 0 # Ps PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET
+FE3A ; 0 # Pe PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET
+FE3B ; 0 # Ps PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET
+FE3C ; 0 # Pe PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET
+FE3D ; 0 # Ps PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET
+FE3E ; 0 # Pe PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET
+FE3F ; 0 # Ps PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET
+FE40 ; 0 # Pe PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET
+FE41 ; 0 # Ps PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET
+FE42 ; 0 # Pe PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET
+FE43 ; 0 # Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET
+FE44 ; 0 # Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET
+FE45..FE46 ; 0 # Po [2] SESAME DOT..WHITE SESAME DOT
+FE47 ; 0 # Ps PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET
+FE48 ; 0 # Pe PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET
+FE49..FE4C ; 0 # Po [4] DASHED OVERLINE..DOUBLE WAVY OVERLINE
+FE4D..FE4F ; 0 # Pc [3] DASHED LOW LINE..WAVY LOW LINE
+FE50..FE52 ; 0 # Po [3] SMALL COMMA..SMALL FULL STOP
+FE54..FE57 ; 0 # Po [4] SMALL SEMICOLON..SMALL EXCLAMATION MARK
+FE58 ; 0 # Pd SMALL EM DASH
+FE59 ; 0 # Ps SMALL LEFT PARENTHESIS
+FE5A ; 0 # Pe SMALL RIGHT PARENTHESIS
+FE5B ; 0 # Ps SMALL LEFT CURLY BRACKET
+FE5C ; 0 # Pe SMALL RIGHT CURLY BRACKET
+FE5D ; 0 # Ps SMALL LEFT TORTOISE SHELL BRACKET
+FE5E ; 0 # Pe SMALL RIGHT TORTOISE SHELL BRACKET
+FE5F..FE61 ; 0 # Po [3] SMALL NUMBER SIGN..SMALL ASTERISK
+FE62 ; 0 # Sm SMALL PLUS SIGN
+FE63 ; 0 # Pd SMALL HYPHEN-MINUS
+FE64..FE66 ; 0 # Sm [3] SMALL LESS-THAN SIGN..SMALL EQUALS SIGN
+FE68 ; 0 # Po SMALL REVERSE SOLIDUS
+FE69 ; 0 # Sc SMALL DOLLAR SIGN
+FE6A..FE6B ; 0 # Po [2] SMALL PERCENT SIGN..SMALL COMMERCIAL AT
+FE70..FE74 ; 0 # Lo [5] ARABIC FATHATAN ISOLATED FORM..ARABIC KASRATAN ISOLATED FORM
+FE76..FEFC ; 0 # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+FEFF ; 0 # Cf ZERO WIDTH NO-BREAK SPACE
+FF01..FF03 ; 0 # Po [3] FULLWIDTH EXCLAMATION MARK..FULLWIDTH NUMBER SIGN
+FF04 ; 0 # Sc FULLWIDTH DOLLAR SIGN
+FF05..FF07 ; 0 # Po [3] FULLWIDTH PERCENT SIGN..FULLWIDTH APOSTROPHE
+FF08 ; 0 # Ps FULLWIDTH LEFT PARENTHESIS
+FF09 ; 0 # Pe FULLWIDTH RIGHT PARENTHESIS
+FF0A ; 0 # Po FULLWIDTH ASTERISK
+FF0B ; 0 # Sm FULLWIDTH PLUS SIGN
+FF0C ; 0 # Po FULLWIDTH COMMA
+FF0D ; 0 # Pd FULLWIDTH HYPHEN-MINUS
+FF0E..FF0F ; 0 # Po [2] FULLWIDTH FULL STOP..FULLWIDTH SOLIDUS
+FF10..FF19 ; 0 # Nd [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE
+FF1A..FF1B ; 0 # Po [2] FULLWIDTH COLON..FULLWIDTH SEMICOLON
+FF1C..FF1E ; 0 # Sm [3] FULLWIDTH LESS-THAN SIGN..FULLWIDTH GREATER-THAN SIGN
+FF1F..FF20 ; 0 # Po [2] FULLWIDTH QUESTION MARK..FULLWIDTH COMMERCIAL AT
+FF21..FF3A ; 0 # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
+FF3B ; 0 # Ps FULLWIDTH LEFT SQUARE BRACKET
+FF3C ; 0 # Po FULLWIDTH REVERSE SOLIDUS
+FF3D ; 0 # Pe FULLWIDTH RIGHT SQUARE BRACKET
+FF3E ; 0 # Sk FULLWIDTH CIRCUMFLEX ACCENT
+FF3F ; 0 # Pc FULLWIDTH LOW LINE
+FF40 ; 0 # Sk FULLWIDTH GRAVE ACCENT
+FF41..FF5A ; 0 # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
+FF5B ; 0 # Ps FULLWIDTH LEFT CURLY BRACKET
+FF5C ; 0 # Sm FULLWIDTH VERTICAL LINE
+FF5D ; 0 # Pe FULLWIDTH RIGHT CURLY BRACKET
+FF5E ; 0 # Sm FULLWIDTH TILDE
+FF5F ; 0 # Ps FULLWIDTH LEFT WHITE PARENTHESIS
+FF60 ; 0 # Pe FULLWIDTH RIGHT WHITE PARENTHESIS
+FF61 ; 0 # Po HALFWIDTH IDEOGRAPHIC FULL STOP
+FF62 ; 0 # Ps HALFWIDTH LEFT CORNER BRACKET
+FF63 ; 0 # Pe HALFWIDTH RIGHT CORNER BRACKET
+FF64..FF65 ; 0 # Po [2] HALFWIDTH IDEOGRAPHIC COMMA..HALFWIDTH KATAKANA MIDDLE DOT
+FF66..FF6F ; 0 # Lo [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU
+FF70 ; 0 # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+FF71..FF9D ; 0 # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N
+FF9E..FF9F ; 0 # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+FFA0..FFBE ; 0 # Lo [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH
+FFC2..FFC7 ; 0 # Lo [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E
+FFCA..FFCF ; 0 # Lo [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE
+FFD2..FFD7 ; 0 # Lo [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU
+FFDA..FFDC ; 0 # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I
+FFE0..FFE1 ; 0 # Sc [2] FULLWIDTH CENT SIGN..FULLWIDTH POUND SIGN
+FFE2 ; 0 # Sm FULLWIDTH NOT SIGN
+FFE3 ; 0 # Sk FULLWIDTH MACRON
+FFE4 ; 0 # So FULLWIDTH BROKEN BAR
+FFE5..FFE6 ; 0 # Sc [2] FULLWIDTH YEN SIGN..FULLWIDTH WON SIGN
+FFE8 ; 0 # So HALFWIDTH FORMS LIGHT VERTICAL
+FFE9..FFEC ; 0 # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS ARROW
+FFED..FFEE ; 0 # So [2] HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CIRCLE
+FFF9..FFFB ; 0 # Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR
+FFFC..FFFD ; 0 # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARACTER
+10000..1000B ; 0 # Lo [12] LINEAR B SYLLABLE B008 A..LINEAR B SYLLABLE B046 JE
+1000D..10026 ; 0 # Lo [26] LINEAR B SYLLABLE B036 JO..LINEAR B SYLLABLE B032 QO
+10028..1003A ; 0 # Lo [19] LINEAR B SYLLABLE B060 RA..LINEAR B SYLLABLE B042 WO
+1003C..1003D ; 0 # Lo [2] LINEAR B SYLLABLE B017 ZA..LINEAR B SYLLABLE B074 ZE
+1003F..1004D ; 0 # Lo [15] LINEAR B SYLLABLE B020 ZO..LINEAR B SYLLABLE B091 TWO
+10050..1005D ; 0 # Lo [14] LINEAR B SYMBOL B018..LINEAR B SYMBOL B089
+10080..100FA ; 0 # Lo [123] LINEAR B IDEOGRAM B100 MAN..LINEAR B IDEOGRAM VESSEL B305
+10100..10101 ; 0 # Po [2] AEGEAN WORD SEPARATOR LINE..AEGEAN WORD SEPARATOR DOT
+10102 ; 0 # So AEGEAN CHECK MARK
+10107..10133 ; 0 # No [45] AEGEAN NUMBER ONE..AEGEAN NUMBER NINETY THOUSAND
+10137..1013F ; 0 # So [9] AEGEAN WEIGHT BASE UNIT..AEGEAN MEASURE THIRD SUBUNIT
+10140..10174 ; 0 # Nl [53] GREEK ACROPHONIC ATTIC ONE QUARTER..GREEK ACROPHONIC STRATIAN FIFTY MNAS
+10175..10178 ; 0 # No [4] GREEK ONE HALF SIGN..GREEK THREE QUARTERS SIGN
+10179..10189 ; 0 # So [17] GREEK YEAR SIGN..GREEK TRYBLION BASE SIGN
+1018A ; 0 # No GREEK ZERO SIGN
+10190..1019B ; 0 # So [12] ROMAN SEXTANS SIGN..ROMAN CENTURIAL SIGN
+101D0..101FC ; 0 # So [45] PHAISTOS DISC SIGN PEDESTRIAN..PHAISTOS DISC SIGN WAVY BAND
+10280..1029C ; 0 # Lo [29] LYCIAN LETTER A..LYCIAN LETTER X
+102A0..102D0 ; 0 # Lo [49] CARIAN LETTER A..CARIAN LETTER UUU3
+10300..1031E ; 0 # Lo [31] OLD ITALIC LETTER A..OLD ITALIC LETTER UU
+10320..10323 ; 0 # No [4] OLD ITALIC NUMERAL ONE..OLD ITALIC NUMERAL FIFTY
+10330..10340 ; 0 # Lo [17] GOTHIC LETTER AHSA..GOTHIC LETTER PAIRTHRA
+10341 ; 0 # Nl GOTHIC LETTER NINETY
+10342..10349 ; 0 # Lo [8] GOTHIC LETTER RAIDA..GOTHIC LETTER OTHAL
+1034A ; 0 # Nl GOTHIC LETTER NINE HUNDRED
+10380..1039D ; 0 # Lo [30] UGARITIC LETTER ALPA..UGARITIC LETTER SSU
+1039F ; 0 # Po UGARITIC WORD DIVIDER
+103A0..103C3 ; 0 # Lo [36] OLD PERSIAN SIGN A..OLD PERSIAN SIGN HA
+103C8..103CF ; 0 # Lo [8] OLD PERSIAN SIGN AURAMAZDAA..OLD PERSIAN SIGN BUUMISH
+103D0 ; 0 # Po OLD PERSIAN WORD DIVIDER
+103D1..103D5 ; 0 # Nl [5] OLD PERSIAN NUMBER ONE..OLD PERSIAN NUMBER HUNDRED
+10400..1044F ; 0 # L& [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW
+10450..1049D ; 0 # Lo [78] SHAVIAN LETTER PEEP..OSMANYA LETTER OO
+104A0..104A9 ; 0 # Nd [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE
+10800..10805 ; 0 # Lo [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA
+10808 ; 0 # Lo CYPRIOT SYLLABLE JO
+1080A..10835 ; 0 # Lo [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO
+10837..10838 ; 0 # Lo [2] CYPRIOT SYLLABLE XA..CYPRIOT SYLLABLE XE
+1083C ; 0 # Lo CYPRIOT SYLLABLE ZA
+1083F ; 0 # Lo CYPRIOT SYLLABLE ZO
+10900..10915 ; 0 # Lo [22] PHOENICIAN LETTER ALF..PHOENICIAN LETTER TAU
+10916..10919 ; 0 # No [4] PHOENICIAN NUMBER ONE..PHOENICIAN NUMBER ONE HUNDRED
+1091F ; 0 # Po PHOENICIAN WORD SEPARATOR
+10920..10939 ; 0 # Lo [26] LYDIAN LETTER A..LYDIAN LETTER C
+1093F ; 0 # Po LYDIAN TRIANGULAR MARK
+10A00 ; 0 # Lo KHAROSHTHI LETTER A
+10A01..10A03 ; 0 # Mn [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R
+10A05..10A06 ; 0 # Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O
+10A0C ; 0 # Mn KHAROSHTHI VOWEL LENGTH MARK
+10A0E ; 0 # Mn KHAROSHTHI SIGN ANUSVARA
+10A10..10A13 ; 0 # Lo [4] KHAROSHTHI LETTER KA..KHAROSHTHI LETTER GHA
+10A15..10A17 ; 0 # Lo [3] KHAROSHTHI LETTER CA..KHAROSHTHI LETTER JA
+10A19..10A33 ; 0 # Lo [27] KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER TTTHA
+10A40..10A47 ; 0 # No [8] KHAROSHTHI DIGIT ONE..KHAROSHTHI NUMBER ONE THOUSAND
+10A50..10A58 ; 0 # Po [9] KHAROSHTHI PUNCTUATION DOT..KHAROSHTHI PUNCTUATION LINES
+12000..1236E ; 0 # Lo [879] CUNEIFORM SIGN A..CUNEIFORM SIGN ZUM
+12400..12462 ; 0 # Nl [99] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE QUARTER
+12470..12473 ; 0 # Po [4] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL TRICOLON
+1D000..1D0F5 ; 0 # So [246] BYZANTINE MUSICAL SYMBOL PSILI..BYZANTINE MUSICAL SYMBOL GORGON NEO KATO
+1D100..1D126 ; 0 # So [39] MUSICAL SYMBOL SINGLE BARLINE..MUSICAL SYMBOL DRUM CLEF-2
+1D129..1D164 ; 0 # So [60] MUSICAL SYMBOL MULTIPLE MEASURE REST..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D16A..1D16C ; 0 # So [3] MUSICAL SYMBOL FINGERED TREMOLO-1..MUSICAL SYMBOL FINGERED TREMOLO-3
+1D173..1D17A ; 0 # Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE
+1D183..1D184 ; 0 # So [2] MUSICAL SYMBOL ARPEGGIATO UP..MUSICAL SYMBOL ARPEGGIATO DOWN
+1D18C..1D1A9 ; 0 # So [30] MUSICAL SYMBOL RINFORZANDO..MUSICAL SYMBOL DEGREE SLASH
+1D1AE..1D1DD ; 0 # So [48] MUSICAL SYMBOL PEDAL MARK..MUSICAL SYMBOL PES SUBPUNCTIS
+1D200..1D241 ; 0 # So [66] GREEK VOCAL NOTATION SYMBOL-1..GREEK INSTRUMENTAL NOTATION SYMBOL-54
+1D245 ; 0 # So GREEK MUSICAL LEIMMA
+1D300..1D356 ; 0 # So [87] MONOGRAM FOR EARTH..TETRAGRAM FOR FOSTERING
+1D360..1D371 ; 0 # No [18] COUNTING ROD UNIT DIGIT ONE..COUNTING ROD TENS DIGIT NINE
+1D400..1D454 ; 0 # L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G
+1D456..1D49C ; 0 # L& [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A
+1D49E..1D49F ; 0 # L& [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D
+1D4A2 ; 0 # L& MATHEMATICAL SCRIPT CAPITAL G
+1D4A5..1D4A6 ; 0 # L& [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K
+1D4A9..1D4AC ; 0 # L& [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q
+1D4AE..1D4B9 ; 0 # L& [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D
+1D4BB ; 0 # L& MATHEMATICAL SCRIPT SMALL F
+1D4BD..1D4C3 ; 0 # L& [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N
+1D4C5..1D505 ; 0 # L& [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B
+1D507..1D50A ; 0 # L& [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G
+1D50D..1D514 ; 0 # L& [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q
+1D516..1D51C ; 0 # L& [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y
+1D51E..1D539 ; 0 # L& [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B
+1D53B..1D53E ; 0 # L& [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G
+1D540..1D544 ; 0 # L& [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M
+1D546 ; 0 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL O
+1D54A..1D550 ; 0 # L& [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
+1D552..1D6A5 ; 0 # L& [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J
+1D6A8..1D6C0 ; 0 # L& [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA
+1D6C1 ; 0 # Sm MATHEMATICAL BOLD NABLA
+1D6C2..1D6DA ; 0 # L& [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA
+1D6DB ; 0 # Sm MATHEMATICAL BOLD PARTIAL DIFFERENTIAL
+1D6DC..1D6FA ; 0 # L& [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA
+1D6FB ; 0 # Sm MATHEMATICAL ITALIC NABLA
+1D6FC..1D714 ; 0 # L& [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA
+1D715 ; 0 # Sm MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL
+1D716..1D734 ; 0 # L& [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
+1D735 ; 0 # Sm MATHEMATICAL BOLD ITALIC NABLA
+1D736..1D74E ; 0 # L& [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA
+1D74F ; 0 # Sm MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL
+1D750..1D76E ; 0 # L& [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
+1D76F ; 0 # Sm MATHEMATICAL SANS-SERIF BOLD NABLA
+1D770..1D788 ; 0 # L& [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
+1D789 ; 0 # Sm MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL
+1D78A..1D7A8 ; 0 # L& [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
+1D7A9 ; 0 # Sm MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA
+1D7AA..1D7C2 ; 0 # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
+1D7C3 ; 0 # Sm MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
+1D7C4..1D7CB ; 0 # L& [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA
+1D7CE..1D7FF ; 0 # Nd [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE
+1F000..1F02B ; 0 # So [44] MAHJONG TILE EAST WIND..MAHJONG TILE BACK
+1F030..1F093 ; 0 # So [100] DOMINO TILE HORIZONTAL BACK..DOMINO TILE VERTICAL-06-06
+20000..2A6D6 ; 0 # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6
+2F800..2FA1D ; 0 # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
+E0001 ; 0 # Cf LANGUAGE TAG
+E0020..E007F ; 0 # Cf [96] TAG SPACE..CANCEL TAG
+E0100..E01EF ; 0 # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
+F0000..FFFFD ; 0 # Co [65534] <private-use-F0000>..<private-use-FFFFD>
+100000..10FFFD; 0 # Co [65534] <private-use-100000>..<private-use-10FFFD>
+
+# The above property value applies to 875931 code points not listed here.
+# Total code points: 1113611
+
+# ================================================
+
+# Canonical_Combining_Class=Overlay
+
+0334..0338 ; 1 # Mn [5] COMBINING TILDE OVERLAY..COMBINING LONG SOLIDUS OVERLAY
+20D2..20D3 ; 1 # Mn [2] COMBINING LONG VERTICAL LINE OVERLAY..COMBINING SHORT VERTICAL LINE OVERLAY
+20D8..20DA ; 1 # Mn [3] COMBINING RING OVERLAY..COMBINING ANTICLOCKWISE RING OVERLAY
+20E5..20E6 ; 1 # Mn [2] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING DOUBLE VERTICAL STROKE OVERLAY
+20EA..20EB ; 1 # Mn [2] COMBINING LEFTWARDS ARROW OVERLAY..COMBINING LONG DOUBLE SOLIDUS OVERLAY
+10A39 ; 1 # Mn KHAROSHTHI SIGN CAUDA
+1D167..1D169 ; 1 # Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3
+
+# Total code points: 18
+
+# ================================================
+
+# Canonical_Combining_Class=Nukta
+
+093C ; 7 # Mn DEVANAGARI SIGN NUKTA
+09BC ; 7 # Mn BENGALI SIGN NUKTA
+0A3C ; 7 # Mn GURMUKHI SIGN NUKTA
+0ABC ; 7 # Mn GUJARATI SIGN NUKTA
+0B3C ; 7 # Mn ORIYA SIGN NUKTA
+0CBC ; 7 # Mn KANNADA SIGN NUKTA
+1037 ; 7 # Mn MYANMAR SIGN DOT BELOW
+1B34 ; 7 # Mn BALINESE SIGN REREKAN
+1C37 ; 7 # Mn LEPCHA SIGN NUKTA
+
+# Total code points: 9
+
+# ================================================
+
+# Canonical_Combining_Class=Kana_Voicing
+
+3099..309A ; 8 # Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+
+# Total code points: 2
+
+# ================================================
+
+# Canonical_Combining_Class=Virama
+
+094D ; 9 # Mn DEVANAGARI SIGN VIRAMA
+09CD ; 9 # Mn BENGALI SIGN VIRAMA
+0A4D ; 9 # Mn GURMUKHI SIGN VIRAMA
+0ACD ; 9 # Mn GUJARATI SIGN VIRAMA
+0B4D ; 9 # Mn ORIYA SIGN VIRAMA
+0BCD ; 9 # Mn TAMIL SIGN VIRAMA
+0C4D ; 9 # Mn TELUGU SIGN VIRAMA
+0CCD ; 9 # Mn KANNADA SIGN VIRAMA
+0D4D ; 9 # Mn MALAYALAM SIGN VIRAMA
+0DCA ; 9 # Mn SINHALA SIGN AL-LAKUNA
+0E3A ; 9 # Mn THAI CHARACTER PHINTHU
+0F84 ; 9 # Mn TIBETAN MARK HALANTA
+1039..103A ; 9 # Mn [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT
+1714 ; 9 # Mn TAGALOG SIGN VIRAMA
+1734 ; 9 # Mn HANUNOO SIGN PAMUDPOD
+17D2 ; 9 # Mn KHMER SIGN COENG
+1B44 ; 9 # Mc BALINESE ADEG ADEG
+1BAA ; 9 # Mc SUNDANESE SIGN PAMAAEH
+A806 ; 9 # Mn SYLOTI NAGRI SIGN HASANTA
+A8C4 ; 9 # Mn SAURASHTRA SIGN VIRAMA
+A953 ; 9 # Mc REJANG VIRAMA
+10A3F ; 9 # Mn KHAROSHTHI VIRAMA
+
+# Total code points: 23
+
+# ================================================
+
+# Canonical_Combining_Class=10
+
+05B0 ; 10 # Mn HEBREW POINT SHEVA
+
+# Total code points: 1
+
+# ================================================
+
+# Canonical_Combining_Class=11
+
+05B1 ; 11 # Mn HEBREW POINT HATAF SEGOL
+
+# Total code points: 1
+
+# ================================================
+
+# Canonical_Combining_Class=12
+
+05B2 ; 12 # Mn HEBREW POINT HATAF PATAH
+
+# Total code points: 1
+
+# ================================================
+
+# Canonical_Combining_Class=13
+
+05B3 ; 13 # Mn HEBREW POINT HATAF QAMATS
+
+# Total code points: 1
+
+# ================================================
+
+# Canonical_Combining_Class=14
+
+05B4 ; 14 # Mn HEBREW POINT HIRIQ
+
+# Total code points: 1
+
+# ================================================
+
+# Canonical_Combining_Class=15
+
+05B5 ; 15 # Mn HEBREW POINT TSERE
+
+# Total code points: 1
+
+# ================================================
+
+# Canonical_Combining_Class=16
+
+05B6 ; 16 # Mn HEBREW POINT SEGOL
+
+# Total code points: 1
+
+# ================================================
+
+# Canonical_Combining_Class=17
+
+05B7 ; 17 # Mn HEBREW POINT PATAH
+
+# Total code points: 1
+
+# ================================================
+
+# Canonical_Combining_Class=18
+
+05B8 ; 18 # Mn HEBREW POINT QAMATS
+05C7 ; 18 # Mn HEBREW POINT QAMATS QATAN
+
+# Total code points: 2
+
+# ================================================
+
+# Canonical_Combining_Class=19
+
+05B9..05BA ; 19 # Mn [2] HEBREW POINT HOLAM..HEBREW POINT HOLAM HASER FOR VAV
+
+# Total code points: 2
+
+# ================================================
+
+# Canonical_Combining_Class=20
+
+05BB ; 20 # Mn HEBREW POINT QUBUTS
+
+# Total code points: 1
+
+# ================================================
+
+# Canonical_Combining_Class=21
+
+05BC ; 21 # Mn HEBREW POINT DAGESH OR MAPIQ
+
+# Total code points: 1
+
+# ================================================
+
+# Canonical_Combining_Class=22
+
+05BD ; 22 # Mn HEBREW POINT METEG
+
+# Total code points: 1
+
+# ================================================
+
+# Canonical_Combining_Class=23
+
+05BF ; 23 # Mn HEBREW POINT RAFE
+
+# Total code points: 1
+
+# ================================================
+
+# Canonical_Combining_Class=24
+
+05C1 ; 24 # Mn HEBREW POINT SHIN DOT
+
+# Total code points: 1
+
+# ================================================
+
+# Canonical_Combining_Class=25
+
+05C2 ; 25 # Mn HEBREW POINT SIN DOT
+
+# Total code points: 1
+
+# ================================================
+
+# Canonical_Combining_Class=26
+
+FB1E ; 26 # Mn HEBREW POINT JUDEO-SPANISH VARIKA
+
+# Total code points: 1
+
+# ================================================
+
+# Canonical_Combining_Class=27
+
+064B ; 27 # Mn ARABIC FATHATAN
+
+# Total code points: 1
+
+# ================================================
+
+# Canonical_Combining_Class=28
+
+064C ; 28 # Mn ARABIC DAMMATAN
+
+# Total code points: 1
+
+# ================================================
+
+# Canonical_Combining_Class=29
+
+064D ; 29 # Mn ARABIC KASRATAN
+
+# Total code points: 1
+
+# ================================================
+
+# Canonical_Combining_Class=30
+
+0618 ; 30 # Mn ARABIC SMALL FATHA
+064E ; 30 # Mn ARABIC FATHA
+
+# Total code points: 2
+
+# ================================================
+
+# Canonical_Combining_Class=31
+
+0619 ; 31 # Mn ARABIC SMALL DAMMA
+064F ; 31 # Mn ARABIC DAMMA
+
+# Total code points: 2
+
+# ================================================
+
+# Canonical_Combining_Class=32
+
+061A ; 32 # Mn ARABIC SMALL KASRA
+0650 ; 32 # Mn ARABIC KASRA
+
+# Total code points: 2
+
+# ================================================
+
+# Canonical_Combining_Class=33
+
+0651 ; 33 # Mn ARABIC SHADDA
+
+# Total code points: 1
+
+# ================================================
+
+# Canonical_Combining_Class=34
+
+0652 ; 34 # Mn ARABIC SUKUN
+
+# Total code points: 1
+
+# ================================================
+
+# Canonical_Combining_Class=35
+
+0670 ; 35 # Mn ARABIC LETTER SUPERSCRIPT ALEF
+
+# Total code points: 1
+
+# ================================================
+
+# Canonical_Combining_Class=36
+
+0711 ; 36 # Mn SYRIAC LETTER SUPERSCRIPT ALAPH
+
+# Total code points: 1
+
+# ================================================
+
+# Canonical_Combining_Class=84
+
+0C55 ; 84 # Mn TELUGU LENGTH MARK
+
+# Total code points: 1
+
+# ================================================
+
+# Canonical_Combining_Class=91
+
+0C56 ; 91 # Mn TELUGU AI LENGTH MARK
+
+# Total code points: 1
+
+# ================================================
+
+# Canonical_Combining_Class=103
+
+0E38..0E39 ; 103 # Mn [2] THAI CHARACTER SARA U..THAI CHARACTER SARA UU
+
+# Total code points: 2
+
+# ================================================
+
+# Canonical_Combining_Class=107
+
+0E48..0E4B ; 107 # Mn [4] THAI CHARACTER MAI EK..THAI CHARACTER MAI CHATTAWA
+
+# Total code points: 4
+
+# ================================================
+
+# Canonical_Combining_Class=118
+
+0EB8..0EB9 ; 118 # Mn [2] LAO VOWEL SIGN U..LAO VOWEL SIGN UU
+
+# Total code points: 2
+
+# ================================================
+
+# Canonical_Combining_Class=122
+
+0EC8..0ECB ; 122 # Mn [4] LAO TONE MAI EK..LAO TONE MAI CATAWA
+
+# Total code points: 4
+
+# ================================================
+
+# Canonical_Combining_Class=129
+
+0F71 ; 129 # Mn TIBETAN VOWEL SIGN AA
+
+# Total code points: 1
+
+# ================================================
+
+# Canonical_Combining_Class=130
+
+0F72 ; 130 # Mn TIBETAN VOWEL SIGN I
+0F7A..0F7D ; 130 # Mn [4] TIBETAN VOWEL SIGN E..TIBETAN VOWEL SIGN OO
+0F80 ; 130 # Mn TIBETAN VOWEL SIGN REVERSED I
+
+# Total code points: 6
+
+# ================================================
+
+# Canonical_Combining_Class=132
+
+0F74 ; 132 # Mn TIBETAN VOWEL SIGN U
+
+# Total code points: 1
+
+# ================================================
+
+# Canonical_Combining_Class=Attached_Below
+
+0321..0322 ; 202 # Mn [2] COMBINING PALATALIZED HOOK BELOW..COMBINING RETROFLEX HOOK BELOW
+0327..0328 ; 202 # Mn [2] COMBINING CEDILLA..COMBINING OGONEK
+1DD0 ; 202 # Mn COMBINING IS BELOW
+
+# Total code points: 5
+
+# ================================================
+
+# Canonical_Combining_Class=214
+
+1DCE ; 214 # Mn COMBINING OGONEK ABOVE
+
+# Total code points: 1
+
+# ================================================
+
+# Canonical_Combining_Class=Attached_Above_Right
+
+031B ; 216 # Mn COMBINING HORN
+0F39 ; 216 # Mn TIBETAN MARK TSA -PHRU
+1D165..1D166 ; 216 # Mc [2] MUSICAL SYMBOL COMBINING STEM..MUSICAL SYMBOL COMBINING SPRECHGESANG STEM
+1D16E..1D172 ; 216 # Mc [5] MUSICAL SYMBOL COMBINING FLAG-1..MUSICAL SYMBOL COMBINING FLAG-5
+
+# Total code points: 9
+
+# ================================================
+
+# Canonical_Combining_Class=Below_Left
+
+302A ; 218 # Mn IDEOGRAPHIC LEVEL TONE MARK
+
+# Total code points: 1
+
+# ================================================
+
+# Canonical_Combining_Class=Below
+
+0316..0319 ; 220 # Mn [4] COMBINING GRAVE ACCENT BELOW..COMBINING RIGHT TACK BELOW
+031C..0320 ; 220 # Mn [5] COMBINING LEFT HALF RING BELOW..COMBINING MINUS SIGN BELOW
+0323..0326 ; 220 # Mn [4] COMBINING DOT BELOW..COMBINING COMMA BELOW
+0329..0333 ; 220 # Mn [11] COMBINING VERTICAL LINE BELOW..COMBINING DOUBLE LOW LINE
+0339..033C ; 220 # Mn [4] COMBINING RIGHT HALF RING BELOW..COMBINING SEAGULL BELOW
+0347..0349 ; 220 # Mn [3] COMBINING EQUALS SIGN BELOW..COMBINING LEFT ANGLE BELOW
+034D..034E ; 220 # Mn [2] COMBINING LEFT RIGHT ARROW BELOW..COMBINING UPWARDS ARROW BELOW
+0353..0356 ; 220 # Mn [4] COMBINING X BELOW..COMBINING RIGHT ARROWHEAD AND UP ARROWHEAD BELOW
+0359..035A ; 220 # Mn [2] COMBINING ASTERISK BELOW..COMBINING DOUBLE RING BELOW
+0591 ; 220 # Mn HEBREW ACCENT ETNAHTA
+0596 ; 220 # Mn HEBREW ACCENT TIPEHA
+059B ; 220 # Mn HEBREW ACCENT TEVIR
+05A2..05A7 ; 220 # Mn [6] HEBREW ACCENT ATNAH HAFUKH..HEBREW ACCENT DARGA
+05AA ; 220 # Mn HEBREW ACCENT YERAH BEN YOMO
+05C5 ; 220 # Mn HEBREW MARK LOWER DOT
+0655..0656 ; 220 # Mn [2] ARABIC HAMZA BELOW..ARABIC SUBSCRIPT ALEF
+065C ; 220 # Mn ARABIC VOWEL SIGN DOT BELOW
+06E3 ; 220 # Mn ARABIC SMALL LOW SEEN
+06EA ; 220 # Mn ARABIC EMPTY CENTRE LOW STOP
+06ED ; 220 # Mn ARABIC SMALL LOW MEEM
+0731 ; 220 # Mn SYRIAC PTHAHA BELOW
+0734 ; 220 # Mn SYRIAC ZQAPHA BELOW
+0737..0739 ; 220 # Mn [3] SYRIAC RBASA BELOW..SYRIAC DOTTED ZLAMA ANGULAR
+073B..073C ; 220 # Mn [2] SYRIAC HBASA BELOW..SYRIAC HBASA-ESASA DOTTED
+073E ; 220 # Mn SYRIAC ESASA BELOW
+0742 ; 220 # Mn SYRIAC RUKKAKHA
+0744 ; 220 # Mn SYRIAC TWO VERTICAL DOTS BELOW
+0746 ; 220 # Mn SYRIAC THREE DOTS BELOW
+0748 ; 220 # Mn SYRIAC OBLIQUE LINE BELOW
+07F2 ; 220 # Mn NKO COMBINING NASALIZATION MARK
+0952 ; 220 # Mn DEVANAGARI STRESS SIGN ANUDATTA
+0F18..0F19 ; 220 # Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS
+0F35 ; 220 # Mn TIBETAN MARK NGAS BZUNG NYI ZLA
+0F37 ; 220 # Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS
+0FC6 ; 220 # Mn TIBETAN SYMBOL PADMA GDAN
+108D ; 220 # Mn MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE
+193B ; 220 # Mn LIMBU SIGN SA-I
+1A18 ; 220 # Mn BUGINESE VOWEL SIGN U
+1B6C ; 220 # Mn BALINESE MUSICAL SYMBOL COMBINING ENDEP
+1DC2 ; 220 # Mn COMBINING SNAKE BELOW
+1DCA ; 220 # Mn COMBINING LATIN SMALL LETTER R BELOW
+1DCF ; 220 # Mn COMBINING ZIGZAG BELOW
+1DFF ; 220 # Mn COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
+20E8 ; 220 # Mn COMBINING TRIPLE UNDERDOT
+20EC..20EF ; 220 # Mn [4] COMBINING RIGHTWARDS HARPOON WITH BARB DOWNWARDS..COMBINING RIGHT ARROW BELOW
+A92B..A92D ; 220 # Mn [3] KAYAH LI TONE PLOPHU..KAYAH LI TONE CALYA PLOPHU
+101FD ; 220 # Mn PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE
+10A0D ; 220 # Mn KHAROSHTHI SIGN DOUBLE RING BELOW
+10A3A ; 220 # Mn KHAROSHTHI SIGN DOT BELOW
+1D17B..1D182 ; 220 # Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE
+1D18A..1D18B ; 220 # Mn [2] MUSICAL SYMBOL COMBINING DOUBLE TONGUE..MUSICAL SYMBOL COMBINING TRIPLE TONGUE
+
+# Total code points: 104
+
+# ================================================
+
+# Canonical_Combining_Class=Below_Right
+
+059A ; 222 # Mn HEBREW ACCENT YETIV
+05AD ; 222 # Mn HEBREW ACCENT DEHI
+1939 ; 222 # Mn LIMBU SIGN MUKPHRENG
+302D ; 222 # Mn IDEOGRAPHIC ENTERING TONE MARK
+
+# Total code points: 4
+
+# ================================================
+
+# Canonical_Combining_Class=Left
+
+302E..302F ; 224 # Mn [2] HANGUL SINGLE DOT TONE MARK..HANGUL DOUBLE DOT TONE MARK
+
+# Total code points: 2
+
+# ================================================
+
+# Canonical_Combining_Class=Right
+
+1D16D ; 226 # Mc MUSICAL SYMBOL COMBINING AUGMENTATION DOT
+
+# Total code points: 1
+
+# ================================================
+
+# Canonical_Combining_Class=Above_Left
+
+05AE ; 228 # Mn HEBREW ACCENT ZINOR
+18A9 ; 228 # Mn MONGOLIAN LETTER ALI GALI DAGALGA
+302B ; 228 # Mn IDEOGRAPHIC RISING TONE MARK
+
+# Total code points: 3
+
+# ================================================
+
+# Canonical_Combining_Class=Above
+
+0300..0314 ; 230 # Mn [21] COMBINING GRAVE ACCENT..COMBINING REVERSED COMMA ABOVE
+033D..0344 ; 230 # Mn [8] COMBINING X ABOVE..COMBINING GREEK DIALYTIKA TONOS
+0346 ; 230 # Mn COMBINING BRIDGE ABOVE
+034A..034C ; 230 # Mn [3] COMBINING NOT TILDE ABOVE..COMBINING ALMOST EQUAL TO ABOVE
+0350..0352 ; 230 # Mn [3] COMBINING RIGHT ARROWHEAD ABOVE..COMBINING FERMATA
+0357 ; 230 # Mn COMBINING RIGHT HALF RING ABOVE
+035B ; 230 # Mn COMBINING ZIGZAG ABOVE
+0363..036F ; 230 # Mn [13] COMBINING LATIN SMALL LETTER A..COMBINING LATIN SMALL LETTER X
+0483..0487 ; 230 # Mn [5] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC POKRYTIE
+0592..0595 ; 230 # Mn [4] HEBREW ACCENT SEGOL..HEBREW ACCENT ZAQEF GADOL
+0597..0599 ; 230 # Mn [3] HEBREW ACCENT REVIA..HEBREW ACCENT PASHTA
+059C..05A1 ; 230 # Mn [6] HEBREW ACCENT GERESH..HEBREW ACCENT PAZER
+05A8..05A9 ; 230 # Mn [2] HEBREW ACCENT QADMA..HEBREW ACCENT TELISHA QETANA
+05AB..05AC ; 230 # Mn [2] HEBREW ACCENT OLE..HEBREW ACCENT ILUY
+05AF ; 230 # Mn HEBREW MARK MASORA CIRCLE
+05C4 ; 230 # Mn HEBREW MARK UPPER DOT
+0610..0617 ; 230 # Mn [8] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL HIGH ZAIN
+0653..0654 ; 230 # Mn [2] ARABIC MADDAH ABOVE..ARABIC HAMZA ABOVE
+0657..065B ; 230 # Mn [5] ARABIC INVERTED DAMMA..ARABIC VOWEL SIGN INVERTED SMALL V ABOVE
+065D..065E ; 230 # Mn [2] ARABIC REVERSED DAMMA..ARABIC FATHA WITH TWO DOTS
+06D6..06DC ; 230 # Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN
+06DF..06E2 ; 230 # Mn [4] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MEEM ISOLATED FORM
+06E4 ; 230 # Mn ARABIC SMALL HIGH MADDA
+06E7..06E8 ; 230 # Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON
+06EB..06EC ; 230 # Mn [2] ARABIC EMPTY CENTRE HIGH STOP..ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE
+0730 ; 230 # Mn SYRIAC PTHAHA ABOVE
+0732..0733 ; 230 # Mn [2] SYRIAC PTHAHA DOTTED..SYRIAC ZQAPHA ABOVE
+0735..0736 ; 230 # Mn [2] SYRIAC ZQAPHA DOTTED..SYRIAC RBASA ABOVE
+073A ; 230 # Mn SYRIAC HBASA ABOVE
+073D ; 230 # Mn SYRIAC ESASA ABOVE
+073F..0741 ; 230 # Mn [3] SYRIAC RWAHA..SYRIAC QUSHSHAYA
+0743 ; 230 # Mn SYRIAC TWO VERTICAL DOTS ABOVE
+0745 ; 230 # Mn SYRIAC THREE DOTS ABOVE
+0747 ; 230 # Mn SYRIAC OBLIQUE LINE ABOVE
+0749..074A ; 230 # Mn [2] SYRIAC MUSIC..SYRIAC BARREKH
+07EB..07F1 ; 230 # Mn [7] NKO COMBINING SHORT HIGH TONE..NKO COMBINING LONG RISING TONE
+07F3 ; 230 # Mn NKO COMBINING DOUBLE DOT ABOVE
+0951 ; 230 # Mn DEVANAGARI STRESS SIGN UDATTA
+0953..0954 ; 230 # Mn [2] DEVANAGARI GRAVE ACCENT..DEVANAGARI ACUTE ACCENT
+0F82..0F83 ; 230 # Mn [2] TIBETAN SIGN NYI ZLA NAA DA..TIBETAN SIGN SNA LDAN
+0F86..0F87 ; 230 # Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS
+135F ; 230 # Mn ETHIOPIC COMBINING GEMINATION MARK
+17DD ; 230 # Mn KHMER SIGN ATTHACAN
+193A ; 230 # Mn LIMBU SIGN KEMPHRENG
+1A17 ; 230 # Mn BUGINESE VOWEL SIGN I
+1B6B ; 230 # Mn BALINESE MUSICAL SYMBOL COMBINING TEGEH
+1B6D..1B73 ; 230 # Mn [7] BALINESE MUSICAL SYMBOL COMBINING KEMPUL..BALINESE MUSICAL SYMBOL COMBINING GONG
+1DC0..1DC1 ; 230 # Mn [2] COMBINING DOTTED GRAVE ACCENT..COMBINING DOTTED ACUTE ACCENT
+1DC3..1DC9 ; 230 # Mn [7] COMBINING SUSPENSION MARK..COMBINING ACUTE-GRAVE-ACUTE
+1DCB..1DCC ; 230 # Mn [2] COMBINING BREVE-MACRON..COMBINING MACRON-BREVE
+1DD1..1DE6 ; 230 # Mn [22] COMBINING UR ABOVE..COMBINING LATIN SMALL LETTER Z
+1DFE ; 230 # Mn COMBINING LEFT ARROWHEAD ABOVE
+20D0..20D1 ; 230 # Mn [2] COMBINING LEFT HARPOON ABOVE..COMBINING RIGHT HARPOON ABOVE
+20D4..20D7 ; 230 # Mn [4] COMBINING ANTICLOCKWISE ARROW ABOVE..COMBINING RIGHT ARROW ABOVE
+20DB..20DC ; 230 # Mn [2] COMBINING THREE DOTS ABOVE..COMBINING FOUR DOTS ABOVE
+20E1 ; 230 # Mn COMBINING LEFT RIGHT ARROW ABOVE
+20E7 ; 230 # Mn COMBINING ANNUITY SYMBOL
+20E9 ; 230 # Mn COMBINING WIDE BRIDGE ABOVE
+20F0 ; 230 # Mn COMBINING ASTERISK ABOVE
+2DE0..2DFF ; 230 # Mn [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS
+A66F ; 230 # Mn COMBINING CYRILLIC VZMET
+A67C..A67D ; 230 # Mn [2] COMBINING CYRILLIC KAVYKA..COMBINING CYRILLIC PAYEROK
+FE20..FE26 ; 230 # Mn [7] COMBINING LIGATURE LEFT HALF..COMBINING CONJOINING MACRON
+10A0F ; 230 # Mn KHAROSHTHI SIGN VISARGA
+10A38 ; 230 # Mn KHAROSHTHI SIGN BAR ABOVE
+1D185..1D189 ; 230 # Mn [5] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING BEND
+1D1AA..1D1AD ; 230 # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO
+1D242..1D244 ; 230 # Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME
+
+# Total code points: 252
+
+# ================================================
+
+# Canonical_Combining_Class=Above_Right
+
+0315 ; 232 # Mn COMBINING COMMA ABOVE RIGHT
+031A ; 232 # Mn COMBINING LEFT ANGLE ABOVE
+0358 ; 232 # Mn COMBINING DOT ABOVE RIGHT
+302C ; 232 # Mn IDEOGRAPHIC DEPARTING TONE MARK
+
+# Total code points: 4
+
+# ================================================
+
+# Canonical_Combining_Class=Double_Below
+
+035C ; 233 # Mn COMBINING DOUBLE BREVE BELOW
+035F ; 233 # Mn COMBINING DOUBLE MACRON BELOW
+0362 ; 233 # Mn COMBINING DOUBLE RIGHTWARDS ARROW BELOW
+
+# Total code points: 3
+
+# ================================================
+
+# Canonical_Combining_Class=Double_Above
+
+035D..035E ; 234 # Mn [2] COMBINING DOUBLE BREVE..COMBINING DOUBLE MACRON
+0360..0361 ; 234 # Mn [2] COMBINING DOUBLE TILDE..COMBINING DOUBLE INVERTED BREVE
+1DCD ; 234 # Mn COMBINING DOUBLE CIRCUMFLEX ABOVE
+
+# Total code points: 5
+
+# ================================================
+
+# Canonical_Combining_Class=Iota_Subscript
+
+0345 ; 240 # Mn COMBINING GREEK YPOGEGRAMMENI
+
+# Total code points: 1
+
+# EOF
diff --git a/third_party/harfbuzz/contrib/tables/DerivedGeneralCategory.txt b/third_party/harfbuzz/contrib/tables/DerivedGeneralCategory.txt
new file mode 100644
index 0000000..8423c70
--- /dev/null
+++ b/third_party/harfbuzz/contrib/tables/DerivedGeneralCategory.txt
@@ -0,0 +1,3072 @@
+# DerivedGeneralCategory-5.1.0.txt
+# Date: 2008-03-20, 17:54:57 GMT [MD]
+#
+# Unicode Character Database
+# Copyright (c) 1991-2008 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+# For documentation, see UCD.html
+
+# ================================================
+
+# Property: General_Category
+
+# ================================================
+
+# General_Category=Unassigned
+
+0378..0379 ; Cn # [2] <reserved-0378>..<reserved-0379>
+037F..0383 ; Cn # [5] <reserved-037F>..<reserved-0383>
+038B ; Cn # <reserved-038B>
+038D ; Cn # <reserved-038D>
+03A2 ; Cn # <reserved-03A2>
+0524..0530 ; Cn # [13] <reserved-0524>..<reserved-0530>
+0557..0558 ; Cn # [2] <reserved-0557>..<reserved-0558>
+0560 ; Cn # <reserved-0560>
+0588 ; Cn # <reserved-0588>
+058B..0590 ; Cn # [6] <reserved-058B>..<reserved-0590>
+05C8..05CF ; Cn # [8] <reserved-05C8>..<reserved-05CF>
+05EB..05EF ; Cn # [5] <reserved-05EB>..<reserved-05EF>
+05F5..05FF ; Cn # [11] <reserved-05F5>..<reserved-05FF>
+0604..0605 ; Cn # [2] <reserved-0604>..<reserved-0605>
+061C..061D ; Cn # [2] <reserved-061C>..<reserved-061D>
+0620 ; Cn # <reserved-0620>
+065F ; Cn # <reserved-065F>
+070E ; Cn # <reserved-070E>
+074B..074C ; Cn # [2] <reserved-074B>..<reserved-074C>
+07B2..07BF ; Cn # [14] <reserved-07B2>..<reserved-07BF>
+07FB..0900 ; Cn # [262] <reserved-07FB>..<reserved-0900>
+093A..093B ; Cn # [2] <reserved-093A>..<reserved-093B>
+094E..094F ; Cn # [2] <reserved-094E>..<reserved-094F>
+0955..0957 ; Cn # [3] <reserved-0955>..<reserved-0957>
+0973..097A ; Cn # [8] <reserved-0973>..<reserved-097A>
+0980 ; Cn # <reserved-0980>
+0984 ; Cn # <reserved-0984>
+098D..098E ; Cn # [2] <reserved-098D>..<reserved-098E>
+0991..0992 ; Cn # [2] <reserved-0991>..<reserved-0992>
+09A9 ; Cn # <reserved-09A9>
+09B1 ; Cn # <reserved-09B1>
+09B3..09B5 ; Cn # [3] <reserved-09B3>..<reserved-09B5>
+09BA..09BB ; Cn # [2] <reserved-09BA>..<reserved-09BB>
+09C5..09C6 ; Cn # [2] <reserved-09C5>..<reserved-09C6>
+09C9..09CA ; Cn # [2] <reserved-09C9>..<reserved-09CA>
+09CF..09D6 ; Cn # [8] <reserved-09CF>..<reserved-09D6>
+09D8..09DB ; Cn # [4] <reserved-09D8>..<reserved-09DB>
+09DE ; Cn # <reserved-09DE>
+09E4..09E5 ; Cn # [2] <reserved-09E4>..<reserved-09E5>
+09FB..0A00 ; Cn # [6] <reserved-09FB>..<reserved-0A00>
+0A04 ; Cn # <reserved-0A04>
+0A0B..0A0E ; Cn # [4] <reserved-0A0B>..<reserved-0A0E>
+0A11..0A12 ; Cn # [2] <reserved-0A11>..<reserved-0A12>
+0A29 ; Cn # <reserved-0A29>
+0A31 ; Cn # <reserved-0A31>
+0A34 ; Cn # <reserved-0A34>
+0A37 ; Cn # <reserved-0A37>
+0A3A..0A3B ; Cn # [2] <reserved-0A3A>..<reserved-0A3B>
+0A3D ; Cn # <reserved-0A3D>
+0A43..0A46 ; Cn # [4] <reserved-0A43>..<reserved-0A46>
+0A49..0A4A ; Cn # [2] <reserved-0A49>..<reserved-0A4A>
+0A4E..0A50 ; Cn # [3] <reserved-0A4E>..<reserved-0A50>
+0A52..0A58 ; Cn # [7] <reserved-0A52>..<reserved-0A58>
+0A5D ; Cn # <reserved-0A5D>
+0A5F..0A65 ; Cn # [7] <reserved-0A5F>..<reserved-0A65>
+0A76..0A80 ; Cn # [11] <reserved-0A76>..<reserved-0A80>
+0A84 ; Cn # <reserved-0A84>
+0A8E ; Cn # <reserved-0A8E>
+0A92 ; Cn # <reserved-0A92>
+0AA9 ; Cn # <reserved-0AA9>
+0AB1 ; Cn # <reserved-0AB1>
+0AB4 ; Cn # <reserved-0AB4>
+0ABA..0ABB ; Cn # [2] <reserved-0ABA>..<reserved-0ABB>
+0AC6 ; Cn # <reserved-0AC6>
+0ACA ; Cn # <reserved-0ACA>
+0ACE..0ACF ; Cn # [2] <reserved-0ACE>..<reserved-0ACF>
+0AD1..0ADF ; Cn # [15] <reserved-0AD1>..<reserved-0ADF>
+0AE4..0AE5 ; Cn # [2] <reserved-0AE4>..<reserved-0AE5>
+0AF0 ; Cn # <reserved-0AF0>
+0AF2..0B00 ; Cn # [15] <reserved-0AF2>..<reserved-0B00>
+0B04 ; Cn # <reserved-0B04>
+0B0D..0B0E ; Cn # [2] <reserved-0B0D>..<reserved-0B0E>
+0B11..0B12 ; Cn # [2] <reserved-0B11>..<reserved-0B12>
+0B29 ; Cn # <reserved-0B29>
+0B31 ; Cn # <reserved-0B31>
+0B34 ; Cn # <reserved-0B34>
+0B3A..0B3B ; Cn # [2] <reserved-0B3A>..<reserved-0B3B>
+0B45..0B46 ; Cn # [2] <reserved-0B45>..<reserved-0B46>
+0B49..0B4A ; Cn # [2] <reserved-0B49>..<reserved-0B4A>
+0B4E..0B55 ; Cn # [8] <reserved-0B4E>..<reserved-0B55>
+0B58..0B5B ; Cn # [4] <reserved-0B58>..<reserved-0B5B>
+0B5E ; Cn # <reserved-0B5E>
+0B64..0B65 ; Cn # [2] <reserved-0B64>..<reserved-0B65>
+0B72..0B81 ; Cn # [16] <reserved-0B72>..<reserved-0B81>
+0B84 ; Cn # <reserved-0B84>
+0B8B..0B8D ; Cn # [3] <reserved-0B8B>..<reserved-0B8D>
+0B91 ; Cn # <reserved-0B91>
+0B96..0B98 ; Cn # [3] <reserved-0B96>..<reserved-0B98>
+0B9B ; Cn # <reserved-0B9B>
+0B9D ; Cn # <reserved-0B9D>
+0BA0..0BA2 ; Cn # [3] <reserved-0BA0>..<reserved-0BA2>
+0BA5..0BA7 ; Cn # [3] <reserved-0BA5>..<reserved-0BA7>
+0BAB..0BAD ; Cn # [3] <reserved-0BAB>..<reserved-0BAD>
+0BBA..0BBD ; Cn # [4] <reserved-0BBA>..<reserved-0BBD>
+0BC3..0BC5 ; Cn # [3] <reserved-0BC3>..<reserved-0BC5>
+0BC9 ; Cn # <reserved-0BC9>
+0BCE..0BCF ; Cn # [2] <reserved-0BCE>..<reserved-0BCF>
+0BD1..0BD6 ; Cn # [6] <reserved-0BD1>..<reserved-0BD6>
+0BD8..0BE5 ; Cn # [14] <reserved-0BD8>..<reserved-0BE5>
+0BFB..0C00 ; Cn # [6] <reserved-0BFB>..<reserved-0C00>
+0C04 ; Cn # <reserved-0C04>
+0C0D ; Cn # <reserved-0C0D>
+0C11 ; Cn # <reserved-0C11>
+0C29 ; Cn # <reserved-0C29>
+0C34 ; Cn # <reserved-0C34>
+0C3A..0C3C ; Cn # [3] <reserved-0C3A>..<reserved-0C3C>
+0C45 ; Cn # <reserved-0C45>
+0C49 ; Cn # <reserved-0C49>
+0C4E..0C54 ; Cn # [7] <reserved-0C4E>..<reserved-0C54>
+0C57 ; Cn # <reserved-0C57>
+0C5A..0C5F ; Cn # [6] <reserved-0C5A>..<reserved-0C5F>
+0C64..0C65 ; Cn # [2] <reserved-0C64>..<reserved-0C65>
+0C70..0C77 ; Cn # [8] <reserved-0C70>..<reserved-0C77>
+0C80..0C81 ; Cn # [2] <reserved-0C80>..<reserved-0C81>
+0C84 ; Cn # <reserved-0C84>
+0C8D ; Cn # <reserved-0C8D>
+0C91 ; Cn # <reserved-0C91>
+0CA9 ; Cn # <reserved-0CA9>
+0CB4 ; Cn # <reserved-0CB4>
+0CBA..0CBB ; Cn # [2] <reserved-0CBA>..<reserved-0CBB>
+0CC5 ; Cn # <reserved-0CC5>
+0CC9 ; Cn # <reserved-0CC9>
+0CCE..0CD4 ; Cn # [7] <reserved-0CCE>..<reserved-0CD4>
+0CD7..0CDD ; Cn # [7] <reserved-0CD7>..<reserved-0CDD>
+0CDF ; Cn # <reserved-0CDF>
+0CE4..0CE5 ; Cn # [2] <reserved-0CE4>..<reserved-0CE5>
+0CF0 ; Cn # <reserved-0CF0>
+0CF3..0D01 ; Cn # [15] <reserved-0CF3>..<reserved-0D01>
+0D04 ; Cn # <reserved-0D04>
+0D0D ; Cn # <reserved-0D0D>
+0D11 ; Cn # <reserved-0D11>
+0D29 ; Cn # <reserved-0D29>
+0D3A..0D3C ; Cn # [3] <reserved-0D3A>..<reserved-0D3C>
+0D45 ; Cn # <reserved-0D45>
+0D49 ; Cn # <reserved-0D49>
+0D4E..0D56 ; Cn # [9] <reserved-0D4E>..<reserved-0D56>
+0D58..0D5F ; Cn # [8] <reserved-0D58>..<reserved-0D5F>
+0D64..0D65 ; Cn # [2] <reserved-0D64>..<reserved-0D65>
+0D76..0D78 ; Cn # [3] <reserved-0D76>..<reserved-0D78>
+0D80..0D81 ; Cn # [2] <reserved-0D80>..<reserved-0D81>
+0D84 ; Cn # <reserved-0D84>
+0D97..0D99 ; Cn # [3] <reserved-0D97>..<reserved-0D99>
+0DB2 ; Cn # <reserved-0DB2>
+0DBC ; Cn # <reserved-0DBC>
+0DBE..0DBF ; Cn # [2] <reserved-0DBE>..<reserved-0DBF>
+0DC7..0DC9 ; Cn # [3] <reserved-0DC7>..<reserved-0DC9>
+0DCB..0DCE ; Cn # [4] <reserved-0DCB>..<reserved-0DCE>
+0DD5 ; Cn # <reserved-0DD5>
+0DD7 ; Cn # <reserved-0DD7>
+0DE0..0DF1 ; Cn # [18] <reserved-0DE0>..<reserved-0DF1>
+0DF5..0E00 ; Cn # [12] <reserved-0DF5>..<reserved-0E00>
+0E3B..0E3E ; Cn # [4] <reserved-0E3B>..<reserved-0E3E>
+0E5C..0E80 ; Cn # [37] <reserved-0E5C>..<reserved-0E80>
+0E83 ; Cn # <reserved-0E83>
+0E85..0E86 ; Cn # [2] <reserved-0E85>..<reserved-0E86>
+0E89 ; Cn # <reserved-0E89>
+0E8B..0E8C ; Cn # [2] <reserved-0E8B>..<reserved-0E8C>
+0E8E..0E93 ; Cn # [6] <reserved-0E8E>..<reserved-0E93>
+0E98 ; Cn # <reserved-0E98>
+0EA0 ; Cn # <reserved-0EA0>
+0EA4 ; Cn # <reserved-0EA4>
+0EA6 ; Cn # <reserved-0EA6>
+0EA8..0EA9 ; Cn # [2] <reserved-0EA8>..<reserved-0EA9>
+0EAC ; Cn # <reserved-0EAC>
+0EBA ; Cn # <reserved-0EBA>
+0EBE..0EBF ; Cn # [2] <reserved-0EBE>..<reserved-0EBF>
+0EC5 ; Cn # <reserved-0EC5>
+0EC7 ; Cn # <reserved-0EC7>
+0ECE..0ECF ; Cn # [2] <reserved-0ECE>..<reserved-0ECF>
+0EDA..0EDB ; Cn # [2] <reserved-0EDA>..<reserved-0EDB>
+0EDE..0EFF ; Cn # [34] <reserved-0EDE>..<reserved-0EFF>
+0F48 ; Cn # <reserved-0F48>
+0F6D..0F70 ; Cn # [4] <reserved-0F6D>..<reserved-0F70>
+0F8C..0F8F ; Cn # [4] <reserved-0F8C>..<reserved-0F8F>
+0F98 ; Cn # <reserved-0F98>
+0FBD ; Cn # <reserved-0FBD>
+0FCD ; Cn # <reserved-0FCD>
+0FD5..0FFF ; Cn # [43] <reserved-0FD5>..<reserved-0FFF>
+109A..109D ; Cn # [4] <reserved-109A>..<reserved-109D>
+10C6..10CF ; Cn # [10] <reserved-10C6>..<reserved-10CF>
+10FD..10FF ; Cn # [3] <reserved-10FD>..<reserved-10FF>
+115A..115E ; Cn # [5] <reserved-115A>..<reserved-115E>
+11A3..11A7 ; Cn # [5] <reserved-11A3>..<reserved-11A7>
+11FA..11FF ; Cn # [6] <reserved-11FA>..<reserved-11FF>
+1249 ; Cn # <reserved-1249>
+124E..124F ; Cn # [2] <reserved-124E>..<reserved-124F>
+1257 ; Cn # <reserved-1257>
+1259 ; Cn # <reserved-1259>
+125E..125F ; Cn # [2] <reserved-125E>..<reserved-125F>
+1289 ; Cn # <reserved-1289>
+128E..128F ; Cn # [2] <reserved-128E>..<reserved-128F>
+12B1 ; Cn # <reserved-12B1>
+12B6..12B7 ; Cn # [2] <reserved-12B6>..<reserved-12B7>
+12BF ; Cn # <reserved-12BF>
+12C1 ; Cn # <reserved-12C1>
+12C6..12C7 ; Cn # [2] <reserved-12C6>..<reserved-12C7>
+12D7 ; Cn # <reserved-12D7>
+1311 ; Cn # <reserved-1311>
+1316..1317 ; Cn # [2] <reserved-1316>..<reserved-1317>
+135B..135E ; Cn # [4] <reserved-135B>..<reserved-135E>
+137D..137F ; Cn # [3] <reserved-137D>..<reserved-137F>
+139A..139F ; Cn # [6] <reserved-139A>..<reserved-139F>
+13F5..1400 ; Cn # [12] <reserved-13F5>..<reserved-1400>
+1677..167F ; Cn # [9] <reserved-1677>..<reserved-167F>
+169D..169F ; Cn # [3] <reserved-169D>..<reserved-169F>
+16F1..16FF ; Cn # [15] <reserved-16F1>..<reserved-16FF>
+170D ; Cn # <reserved-170D>
+1715..171F ; Cn # [11] <reserved-1715>..<reserved-171F>
+1737..173F ; Cn # [9] <reserved-1737>..<reserved-173F>
+1754..175F ; Cn # [12] <reserved-1754>..<reserved-175F>
+176D ; Cn # <reserved-176D>
+1771 ; Cn # <reserved-1771>
+1774..177F ; Cn # [12] <reserved-1774>..<reserved-177F>
+17DE..17DF ; Cn # [2] <reserved-17DE>..<reserved-17DF>
+17EA..17EF ; Cn # [6] <reserved-17EA>..<reserved-17EF>
+17FA..17FF ; Cn # [6] <reserved-17FA>..<reserved-17FF>
+180F ; Cn # <reserved-180F>
+181A..181F ; Cn # [6] <reserved-181A>..<reserved-181F>
+1878..187F ; Cn # [8] <reserved-1878>..<reserved-187F>
+18AB..18FF ; Cn # [85] <reserved-18AB>..<reserved-18FF>
+191D..191F ; Cn # [3] <reserved-191D>..<reserved-191F>
+192C..192F ; Cn # [4] <reserved-192C>..<reserved-192F>
+193C..193F ; Cn # [4] <reserved-193C>..<reserved-193F>
+1941..1943 ; Cn # [3] <reserved-1941>..<reserved-1943>
+196E..196F ; Cn # [2] <reserved-196E>..<reserved-196F>
+1975..197F ; Cn # [11] <reserved-1975>..<reserved-197F>
+19AA..19AF ; Cn # [6] <reserved-19AA>..<reserved-19AF>
+19CA..19CF ; Cn # [6] <reserved-19CA>..<reserved-19CF>
+19DA..19DD ; Cn # [4] <reserved-19DA>..<reserved-19DD>
+1A1C..1A1D ; Cn # [2] <reserved-1A1C>..<reserved-1A1D>
+1A20..1AFF ; Cn # [224] <reserved-1A20>..<reserved-1AFF>
+1B4C..1B4F ; Cn # [4] <reserved-1B4C>..<reserved-1B4F>
+1B7D..1B7F ; Cn # [3] <reserved-1B7D>..<reserved-1B7F>
+1BAB..1BAD ; Cn # [3] <reserved-1BAB>..<reserved-1BAD>
+1BBA..1BFF ; Cn # [70] <reserved-1BBA>..<reserved-1BFF>
+1C38..1C3A ; Cn # [3] <reserved-1C38>..<reserved-1C3A>
+1C4A..1C4C ; Cn # [3] <reserved-1C4A>..<reserved-1C4C>
+1C80..1CFF ; Cn # [128] <reserved-1C80>..<reserved-1CFF>
+1DE7..1DFD ; Cn # [23] <reserved-1DE7>..<reserved-1DFD>
+1F16..1F17 ; Cn # [2] <reserved-1F16>..<reserved-1F17>
+1F1E..1F1F ; Cn # [2] <reserved-1F1E>..<reserved-1F1F>
+1F46..1F47 ; Cn # [2] <reserved-1F46>..<reserved-1F47>
+1F4E..1F4F ; Cn # [2] <reserved-1F4E>..<reserved-1F4F>
+1F58 ; Cn # <reserved-1F58>
+1F5A ; Cn # <reserved-1F5A>
+1F5C ; Cn # <reserved-1F5C>
+1F5E ; Cn # <reserved-1F5E>
+1F7E..1F7F ; Cn # [2] <reserved-1F7E>..<reserved-1F7F>
+1FB5 ; Cn # <reserved-1FB5>
+1FC5 ; Cn # <reserved-1FC5>
+1FD4..1FD5 ; Cn # [2] <reserved-1FD4>..<reserved-1FD5>
+1FDC ; Cn # <reserved-1FDC>
+1FF0..1FF1 ; Cn # [2] <reserved-1FF0>..<reserved-1FF1>
+1FF5 ; Cn # <reserved-1FF5>
+1FFF ; Cn # <reserved-1FFF>
+2065..2069 ; Cn # [5] <reserved-2065>..<reserved-2069>
+2072..2073 ; Cn # [2] <reserved-2072>..<reserved-2073>
+208F ; Cn # <reserved-208F>
+2095..209F ; Cn # [11] <reserved-2095>..<reserved-209F>
+20B6..20CF ; Cn # [26] <reserved-20B6>..<reserved-20CF>
+20F1..20FF ; Cn # [15] <reserved-20F1>..<reserved-20FF>
+2150..2152 ; Cn # [3] <reserved-2150>..<reserved-2152>
+2189..218F ; Cn # [7] <reserved-2189>..<reserved-218F>
+23E8..23FF ; Cn # [24] <reserved-23E8>..<reserved-23FF>
+2427..243F ; Cn # [25] <reserved-2427>..<reserved-243F>
+244B..245F ; Cn # [21] <reserved-244B>..<reserved-245F>
+269E..269F ; Cn # [2] <reserved-269E>..<reserved-269F>
+26BD..26BF ; Cn # [3] <reserved-26BD>..<reserved-26BF>
+26C4..2700 ; Cn # [61] <reserved-26C4>..<reserved-2700>
+2705 ; Cn # <reserved-2705>
+270A..270B ; Cn # [2] <reserved-270A>..<reserved-270B>
+2728 ; Cn # <reserved-2728>
+274C ; Cn # <reserved-274C>
+274E ; Cn # <reserved-274E>
+2753..2755 ; Cn # [3] <reserved-2753>..<reserved-2755>
+2757 ; Cn # <reserved-2757>
+275F..2760 ; Cn # [2] <reserved-275F>..<reserved-2760>
+2795..2797 ; Cn # [3] <reserved-2795>..<reserved-2797>
+27B0 ; Cn # <reserved-27B0>
+27BF ; Cn # <reserved-27BF>
+27CB ; Cn # <reserved-27CB>
+27CD..27CF ; Cn # [3] <reserved-27CD>..<reserved-27CF>
+2B4D..2B4F ; Cn # [3] <reserved-2B4D>..<reserved-2B4F>
+2B55..2BFF ; Cn # [171] <reserved-2B55>..<reserved-2BFF>
+2C2F ; Cn # <reserved-2C2F>
+2C5F ; Cn # <reserved-2C5F>
+2C70 ; Cn # <reserved-2C70>
+2C7E..2C7F ; Cn # [2] <reserved-2C7E>..<reserved-2C7F>
+2CEB..2CF8 ; Cn # [14] <reserved-2CEB>..<reserved-2CF8>
+2D26..2D2F ; Cn # [10] <reserved-2D26>..<reserved-2D2F>
+2D66..2D6E ; Cn # [9] <reserved-2D66>..<reserved-2D6E>
+2D70..2D7F ; Cn # [16] <reserved-2D70>..<reserved-2D7F>
+2D97..2D9F ; Cn # [9] <reserved-2D97>..<reserved-2D9F>
+2DA7 ; Cn # <reserved-2DA7>
+2DAF ; Cn # <reserved-2DAF>
+2DB7 ; Cn # <reserved-2DB7>
+2DBF ; Cn # <reserved-2DBF>
+2DC7 ; Cn # <reserved-2DC7>
+2DCF ; Cn # <reserved-2DCF>
+2DD7 ; Cn # <reserved-2DD7>
+2DDF ; Cn # <reserved-2DDF>
+2E31..2E7F ; Cn # [79] <reserved-2E31>..<reserved-2E7F>
+2E9A ; Cn # <reserved-2E9A>
+2EF4..2EFF ; Cn # [12] <reserved-2EF4>..<reserved-2EFF>
+2FD6..2FEF ; Cn # [26] <reserved-2FD6>..<reserved-2FEF>
+2FFC..2FFF ; Cn # [4] <reserved-2FFC>..<reserved-2FFF>
+3040 ; Cn # <reserved-3040>
+3097..3098 ; Cn # [2] <reserved-3097>..<reserved-3098>
+3100..3104 ; Cn # [5] <reserved-3100>..<reserved-3104>
+312E..3130 ; Cn # [3] <reserved-312E>..<reserved-3130>
+318F ; Cn # <reserved-318F>
+31B8..31BF ; Cn # [8] <reserved-31B8>..<reserved-31BF>
+31E4..31EF ; Cn # [12] <reserved-31E4>..<reserved-31EF>
+321F ; Cn # <reserved-321F>
+3244..324F ; Cn # [12] <reserved-3244>..<reserved-324F>
+32FF ; Cn # <reserved-32FF>
+4DB6..4DBF ; Cn # [10] <reserved-4DB6>..<reserved-4DBF>
+9FC4..9FFF ; Cn # [60] <reserved-9FC4>..<reserved-9FFF>
+A48D..A48F ; Cn # [3] <reserved-A48D>..<reserved-A48F>
+A4C7..A4FF ; Cn # [57] <reserved-A4C7>..<reserved-A4FF>
+A62C..A63F ; Cn # [20] <reserved-A62C>..<reserved-A63F>
+A660..A661 ; Cn # [2] <reserved-A660>..<reserved-A661>
+A674..A67B ; Cn # [8] <reserved-A674>..<reserved-A67B>
+A698..A6FF ; Cn # [104] <reserved-A698>..<reserved-A6FF>
+A78D..A7FA ; Cn # [110] <reserved-A78D>..<reserved-A7FA>
+A82C..A83F ; Cn # [20] <reserved-A82C>..<reserved-A83F>
+A878..A87F ; Cn # [8] <reserved-A878>..<reserved-A87F>
+A8C5..A8CD ; Cn # [9] <reserved-A8C5>..<reserved-A8CD>
+A8DA..A8FF ; Cn # [38] <reserved-A8DA>..<reserved-A8FF>
+A954..A95E ; Cn # [11] <reserved-A954>..<reserved-A95E>
+A960..A9FF ; Cn # [160] <reserved-A960>..<reserved-A9FF>
+AA37..AA3F ; Cn # [9] <reserved-AA37>..<reserved-AA3F>
+AA4E..AA4F ; Cn # [2] <reserved-AA4E>..<reserved-AA4F>
+AA5A..AA5B ; Cn # [2] <reserved-AA5A>..<reserved-AA5B>
+AA60..ABFF ; Cn # [416] <reserved-AA60>..<reserved-ABFF>
+D7A4..D7FF ; Cn # [92] <reserved-D7A4>..<reserved-D7FF>
+FA2E..FA2F ; Cn # [2] <reserved-FA2E>..<reserved-FA2F>
+FA6B..FA6F ; Cn # [5] <reserved-FA6B>..<reserved-FA6F>
+FADA..FAFF ; Cn # [38] <reserved-FADA>..<reserved-FAFF>
+FB07..FB12 ; Cn # [12] <reserved-FB07>..<reserved-FB12>
+FB18..FB1C ; Cn # [5] <reserved-FB18>..<reserved-FB1C>
+FB37 ; Cn # <reserved-FB37>
+FB3D ; Cn # <reserved-FB3D>
+FB3F ; Cn # <reserved-FB3F>
+FB42 ; Cn # <reserved-FB42>
+FB45 ; Cn # <reserved-FB45>
+FBB2..FBD2 ; Cn # [33] <reserved-FBB2>..<reserved-FBD2>
+FD40..FD4F ; Cn # [16] <reserved-FD40>..<reserved-FD4F>
+FD90..FD91 ; Cn # [2] <reserved-FD90>..<reserved-FD91>
+FDC8..FDEF ; Cn # [40] <reserved-FDC8>..<noncharacter-FDEF>
+FDFE..FDFF ; Cn # [2] <reserved-FDFE>..<reserved-FDFF>
+FE1A..FE1F ; Cn # [6] <reserved-FE1A>..<reserved-FE1F>
+FE27..FE2F ; Cn # [9] <reserved-FE27>..<reserved-FE2F>
+FE53 ; Cn # <reserved-FE53>
+FE67 ; Cn # <reserved-FE67>
+FE6C..FE6F ; Cn # [4] <reserved-FE6C>..<reserved-FE6F>
+FE75 ; Cn # <reserved-FE75>
+FEFD..FEFE ; Cn # [2] <reserved-FEFD>..<reserved-FEFE>
+FF00 ; Cn # <reserved-FF00>
+FFBF..FFC1 ; Cn # [3] <reserved-FFBF>..<reserved-FFC1>
+FFC8..FFC9 ; Cn # [2] <reserved-FFC8>..<reserved-FFC9>
+FFD0..FFD1 ; Cn # [2] <reserved-FFD0>..<reserved-FFD1>
+FFD8..FFD9 ; Cn # [2] <reserved-FFD8>..<reserved-FFD9>
+FFDD..FFDF ; Cn # [3] <reserved-FFDD>..<reserved-FFDF>
+FFE7 ; Cn # <reserved-FFE7>
+FFEF..FFF8 ; Cn # [10] <reserved-FFEF>..<reserved-FFF8>
+FFFE..FFFF ; Cn # [2] <noncharacter-FFFE>..<noncharacter-FFFF>
+1000C ; Cn # <reserved-1000C>
+10027 ; Cn # <reserved-10027>
+1003B ; Cn # <reserved-1003B>
+1003E ; Cn # <reserved-1003E>
+1004E..1004F ; Cn # [2] <reserved-1004E>..<reserved-1004F>
+1005E..1007F ; Cn # [34] <reserved-1005E>..<reserved-1007F>
+100FB..100FF ; Cn # [5] <reserved-100FB>..<reserved-100FF>
+10103..10106 ; Cn # [4] <reserved-10103>..<reserved-10106>
+10134..10136 ; Cn # [3] <reserved-10134>..<reserved-10136>
+1018B..1018F ; Cn # [5] <reserved-1018B>..<reserved-1018F>
+1019C..101CF ; Cn # [52] <reserved-1019C>..<reserved-101CF>
+101FE..1027F ; Cn # [130] <reserved-101FE>..<reserved-1027F>
+1029D..1029F ; Cn # [3] <reserved-1029D>..<reserved-1029F>
+102D1..102FF ; Cn # [47] <reserved-102D1>..<reserved-102FF>
+1031F ; Cn # <reserved-1031F>
+10324..1032F ; Cn # [12] <reserved-10324>..<reserved-1032F>
+1034B..1037F ; Cn # [53] <reserved-1034B>..<reserved-1037F>
+1039E ; Cn # <reserved-1039E>
+103C4..103C7 ; Cn # [4] <reserved-103C4>..<reserved-103C7>
+103D6..103FF ; Cn # [42] <reserved-103D6>..<reserved-103FF>
+1049E..1049F ; Cn # [2] <reserved-1049E>..<reserved-1049F>
+104AA..107FF ; Cn # [854] <reserved-104AA>..<reserved-107FF>
+10806..10807 ; Cn # [2] <reserved-10806>..<reserved-10807>
+10809 ; Cn # <reserved-10809>
+10836 ; Cn # <reserved-10836>
+10839..1083B ; Cn # [3] <reserved-10839>..<reserved-1083B>
+1083D..1083E ; Cn # [2] <reserved-1083D>..<reserved-1083E>
+10840..108FF ; Cn # [192] <reserved-10840>..<reserved-108FF>
+1091A..1091E ; Cn # [5] <reserved-1091A>..<reserved-1091E>
+1093A..1093E ; Cn # [5] <reserved-1093A>..<reserved-1093E>
+10940..109FF ; Cn # [192] <reserved-10940>..<reserved-109FF>
+10A04 ; Cn # <reserved-10A04>
+10A07..10A0B ; Cn # [5] <reserved-10A07>..<reserved-10A0B>
+10A14 ; Cn # <reserved-10A14>
+10A18 ; Cn # <reserved-10A18>
+10A34..10A37 ; Cn # [4] <reserved-10A34>..<reserved-10A37>
+10A3B..10A3E ; Cn # [4] <reserved-10A3B>..<reserved-10A3E>
+10A48..10A4F ; Cn # [8] <reserved-10A48>..<reserved-10A4F>
+10A59..11FFF ; Cn # [5543] <reserved-10A59>..<reserved-11FFF>
+1236F..123FF ; Cn # [145] <reserved-1236F>..<reserved-123FF>
+12463..1246F ; Cn # [13] <reserved-12463>..<reserved-1246F>
+12474..1CFFF ; Cn # [43916] <reserved-12474>..<reserved-1CFFF>
+1D0F6..1D0FF ; Cn # [10] <reserved-1D0F6>..<reserved-1D0FF>
+1D127..1D128 ; Cn # [2] <reserved-1D127>..<reserved-1D128>
+1D1DE..1D1FF ; Cn # [34] <reserved-1D1DE>..<reserved-1D1FF>
+1D246..1D2FF ; Cn # [186] <reserved-1D246>..<reserved-1D2FF>
+1D357..1D35F ; Cn # [9] <reserved-1D357>..<reserved-1D35F>
+1D372..1D3FF ; Cn # [142] <reserved-1D372>..<reserved-1D3FF>
+1D455 ; Cn # <reserved-1D455>
+1D49D ; Cn # <reserved-1D49D>
+1D4A0..1D4A1 ; Cn # [2] <reserved-1D4A0>..<reserved-1D4A1>
+1D4A3..1D4A4 ; Cn # [2] <reserved-1D4A3>..<reserved-1D4A4>
+1D4A7..1D4A8 ; Cn # [2] <reserved-1D4A7>..<reserved-1D4A8>
+1D4AD ; Cn # <reserved-1D4AD>
+1D4BA ; Cn # <reserved-1D4BA>
+1D4BC ; Cn # <reserved-1D4BC>
+1D4C4 ; Cn # <reserved-1D4C4>
+1D506 ; Cn # <reserved-1D506>
+1D50B..1D50C ; Cn # [2] <reserved-1D50B>..<reserved-1D50C>
+1D515 ; Cn # <reserved-1D515>
+1D51D ; Cn # <reserved-1D51D>
+1D53A ; Cn # <reserved-1D53A>
+1D53F ; Cn # <reserved-1D53F>
+1D545 ; Cn # <reserved-1D545>
+1D547..1D549 ; Cn # [3] <reserved-1D547>..<reserved-1D549>
+1D551 ; Cn # <reserved-1D551>
+1D6A6..1D6A7 ; Cn # [2] <reserved-1D6A6>..<reserved-1D6A7>
+1D7CC..1D7CD ; Cn # [2] <reserved-1D7CC>..<reserved-1D7CD>
+1D800..1EFFF ; Cn # [6144] <reserved-1D800>..<reserved-1EFFF>
+1F02C..1F02F ; Cn # [4] <reserved-1F02C>..<reserved-1F02F>
+1F094..1FFFF ; Cn # [3948] <reserved-1F094>..<noncharacter-1FFFF>
+2A6D7..2F7FF ; Cn # [20777] <reserved-2A6D7>..<reserved-2F7FF>
+2FA1E..E0000 ; Cn # [722403] <reserved-2FA1E>..<reserved-E0000>
+E0002..E001F ; Cn # [30] <reserved-E0002>..<reserved-E001F>
+E0080..E00FF ; Cn # [128] <reserved-E0080>..<reserved-E00FF>
+E01F0..EFFFF ; Cn # [65040] <reserved-E01F0>..<noncharacter-EFFFF>
+FFFFE..FFFFF ; Cn # [2] <noncharacter-FFFFE>..<noncharacter-FFFFF>
+10FFFE..10FFFF; Cn # [2] <noncharacter-10FFFE>..<noncharacter-10FFFF>
+
+# Total code points: 873883
+
+# ================================================
+
+# General_Category=Uppercase_Letter
+
+0041..005A ; Lu # [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z
+00C0..00D6 ; Lu # [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS
+00D8..00DE ; Lu # [7] LATIN CAPITAL LETTER O WITH STROKE..LATIN CAPITAL LETTER THORN
+0100 ; Lu # LATIN CAPITAL LETTER A WITH MACRON
+0102 ; Lu # LATIN CAPITAL LETTER A WITH BREVE
+0104 ; Lu # LATIN CAPITAL LETTER A WITH OGONEK
+0106 ; Lu # LATIN CAPITAL LETTER C WITH ACUTE
+0108 ; Lu # LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+010A ; Lu # LATIN CAPITAL LETTER C WITH DOT ABOVE
+010C ; Lu # LATIN CAPITAL LETTER C WITH CARON
+010E ; Lu # LATIN CAPITAL LETTER D WITH CARON
+0110 ; Lu # LATIN CAPITAL LETTER D WITH STROKE
+0112 ; Lu # LATIN CAPITAL LETTER E WITH MACRON
+0114 ; Lu # LATIN CAPITAL LETTER E WITH BREVE
+0116 ; Lu # LATIN CAPITAL LETTER E WITH DOT ABOVE
+0118 ; Lu # LATIN CAPITAL LETTER E WITH OGONEK
+011A ; Lu # LATIN CAPITAL LETTER E WITH CARON
+011C ; Lu # LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+011E ; Lu # LATIN CAPITAL LETTER G WITH BREVE
+0120 ; Lu # LATIN CAPITAL LETTER G WITH DOT ABOVE
+0122 ; Lu # LATIN CAPITAL LETTER G WITH CEDILLA
+0124 ; Lu # LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+0126 ; Lu # LATIN CAPITAL LETTER H WITH STROKE
+0128 ; Lu # LATIN CAPITAL LETTER I WITH TILDE
+012A ; Lu # LATIN CAPITAL LETTER I WITH MACRON
+012C ; Lu # LATIN CAPITAL LETTER I WITH BREVE
+012E ; Lu # LATIN CAPITAL LETTER I WITH OGONEK
+0130 ; Lu # LATIN CAPITAL LETTER I WITH DOT ABOVE
+0132 ; Lu # LATIN CAPITAL LIGATURE IJ
+0134 ; Lu # LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+0136 ; Lu # LATIN CAPITAL LETTER K WITH CEDILLA
+0139 ; Lu # LATIN CAPITAL LETTER L WITH ACUTE
+013B ; Lu # LATIN CAPITAL LETTER L WITH CEDILLA
+013D ; Lu # LATIN CAPITAL LETTER L WITH CARON
+013F ; Lu # LATIN CAPITAL LETTER L WITH MIDDLE DOT
+0141 ; Lu # LATIN CAPITAL LETTER L WITH STROKE
+0143 ; Lu # LATIN CAPITAL LETTER N WITH ACUTE
+0145 ; Lu # LATIN CAPITAL LETTER N WITH CEDILLA
+0147 ; Lu # LATIN CAPITAL LETTER N WITH CARON
+014A ; Lu # LATIN CAPITAL LETTER ENG
+014C ; Lu # LATIN CAPITAL LETTER O WITH MACRON
+014E ; Lu # LATIN CAPITAL LETTER O WITH BREVE
+0150 ; Lu # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+0152 ; Lu # LATIN CAPITAL LIGATURE OE
+0154 ; Lu # LATIN CAPITAL LETTER R WITH ACUTE
+0156 ; Lu # LATIN CAPITAL LETTER R WITH CEDILLA
+0158 ; Lu # LATIN CAPITAL LETTER R WITH CARON
+015A ; Lu # LATIN CAPITAL LETTER S WITH ACUTE
+015C ; Lu # LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+015E ; Lu # LATIN CAPITAL LETTER S WITH CEDILLA
+0160 ; Lu # LATIN CAPITAL LETTER S WITH CARON
+0162 ; Lu # LATIN CAPITAL LETTER T WITH CEDILLA
+0164 ; Lu # LATIN CAPITAL LETTER T WITH CARON
+0166 ; Lu # LATIN CAPITAL LETTER T WITH STROKE
+0168 ; Lu # LATIN CAPITAL LETTER U WITH TILDE
+016A ; Lu # LATIN CAPITAL LETTER U WITH MACRON
+016C ; Lu # LATIN CAPITAL LETTER U WITH BREVE
+016E ; Lu # LATIN CAPITAL LETTER U WITH RING ABOVE
+0170 ; Lu # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+0172 ; Lu # LATIN CAPITAL LETTER U WITH OGONEK
+0174 ; Lu # LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+0176 ; Lu # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+0178..0179 ; Lu # [2] LATIN CAPITAL LETTER Y WITH DIAERESIS..LATIN CAPITAL LETTER Z WITH ACUTE
+017B ; Lu # LATIN CAPITAL LETTER Z WITH DOT ABOVE
+017D ; Lu # LATIN CAPITAL LETTER Z WITH CARON
+0181..0182 ; Lu # [2] LATIN CAPITAL LETTER B WITH HOOK..LATIN CAPITAL LETTER B WITH TOPBAR
+0184 ; Lu # LATIN CAPITAL LETTER TONE SIX
+0186..0187 ; Lu # [2] LATIN CAPITAL LETTER OPEN O..LATIN CAPITAL LETTER C WITH HOOK
+0189..018B ; Lu # [3] LATIN CAPITAL LETTER AFRICAN D..LATIN CAPITAL LETTER D WITH TOPBAR
+018E..0191 ; Lu # [4] LATIN CAPITAL LETTER REVERSED E..LATIN CAPITAL LETTER F WITH HOOK
+0193..0194 ; Lu # [2] LATIN CAPITAL LETTER G WITH HOOK..LATIN CAPITAL LETTER GAMMA
+0196..0198 ; Lu # [3] LATIN CAPITAL LETTER IOTA..LATIN CAPITAL LETTER K WITH HOOK
+019C..019D ; Lu # [2] LATIN CAPITAL LETTER TURNED M..LATIN CAPITAL LETTER N WITH LEFT HOOK
+019F..01A0 ; Lu # [2] LATIN CAPITAL LETTER O WITH MIDDLE TILDE..LATIN CAPITAL LETTER O WITH HORN
+01A2 ; Lu # LATIN CAPITAL LETTER OI
+01A4 ; Lu # LATIN CAPITAL LETTER P WITH HOOK
+01A6..01A7 ; Lu # [2] LATIN LETTER YR..LATIN CAPITAL LETTER TONE TWO
+01A9 ; Lu # LATIN CAPITAL LETTER ESH
+01AC ; Lu # LATIN CAPITAL LETTER T WITH HOOK
+01AE..01AF ; Lu # [2] LATIN CAPITAL LETTER T WITH RETROFLEX HOOK..LATIN CAPITAL LETTER U WITH HORN
+01B1..01B3 ; Lu # [3] LATIN CAPITAL LETTER UPSILON..LATIN CAPITAL LETTER Y WITH HOOK
+01B5 ; Lu # LATIN CAPITAL LETTER Z WITH STROKE
+01B7..01B8 ; Lu # [2] LATIN CAPITAL LETTER EZH..LATIN CAPITAL LETTER EZH REVERSED
+01BC ; Lu # LATIN CAPITAL LETTER TONE FIVE
+01C4 ; Lu # LATIN CAPITAL LETTER DZ WITH CARON
+01C7 ; Lu # LATIN CAPITAL LETTER LJ
+01CA ; Lu # LATIN CAPITAL LETTER NJ
+01CD ; Lu # LATIN CAPITAL LETTER A WITH CARON
+01CF ; Lu # LATIN CAPITAL LETTER I WITH CARON
+01D1 ; Lu # LATIN CAPITAL LETTER O WITH CARON
+01D3 ; Lu # LATIN CAPITAL LETTER U WITH CARON
+01D5 ; Lu # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+01D7 ; Lu # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+01D9 ; Lu # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+01DB ; Lu # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+01DE ; Lu # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+01E0 ; Lu # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
+01E2 ; Lu # LATIN CAPITAL LETTER AE WITH MACRON
+01E4 ; Lu # LATIN CAPITAL LETTER G WITH STROKE
+01E6 ; Lu # LATIN CAPITAL LETTER G WITH CARON
+01E8 ; Lu # LATIN CAPITAL LETTER K WITH CARON
+01EA ; Lu # LATIN CAPITAL LETTER O WITH OGONEK
+01EC ; Lu # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
+01EE ; Lu # LATIN CAPITAL LETTER EZH WITH CARON
+01F1 ; Lu # LATIN CAPITAL LETTER DZ
+01F4 ; Lu # LATIN CAPITAL LETTER G WITH ACUTE
+01F6..01F8 ; Lu # [3] LATIN CAPITAL LETTER HWAIR..LATIN CAPITAL LETTER N WITH GRAVE
+01FA ; Lu # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+01FC ; Lu # LATIN CAPITAL LETTER AE WITH ACUTE
+01FE ; Lu # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+0200 ; Lu # LATIN CAPITAL LETTER A WITH DOUBLE GRAVE
+0202 ; Lu # LATIN CAPITAL LETTER A WITH INVERTED BREVE
+0204 ; Lu # LATIN CAPITAL LETTER E WITH DOUBLE GRAVE
+0206 ; Lu # LATIN CAPITAL LETTER E WITH INVERTED BREVE
+0208 ; Lu # LATIN CAPITAL LETTER I WITH DOUBLE GRAVE
+020A ; Lu # LATIN CAPITAL LETTER I WITH INVERTED BREVE
+020C ; Lu # LATIN CAPITAL LETTER O WITH DOUBLE GRAVE
+020E ; Lu # LATIN CAPITAL LETTER O WITH INVERTED BREVE
+0210 ; Lu # LATIN CAPITAL LETTER R WITH DOUBLE GRAVE
+0212 ; Lu # LATIN CAPITAL LETTER R WITH INVERTED BREVE
+0214 ; Lu # LATIN CAPITAL LETTER U WITH DOUBLE GRAVE
+0216 ; Lu # LATIN CAPITAL LETTER U WITH INVERTED BREVE
+0218 ; Lu # LATIN CAPITAL LETTER S WITH COMMA BELOW
+021A ; Lu # LATIN CAPITAL LETTER T WITH COMMA BELOW
+021C ; Lu # LATIN CAPITAL LETTER YOGH
+021E ; Lu # LATIN CAPITAL LETTER H WITH CARON
+0220 ; Lu # LATIN CAPITAL LETTER N WITH LONG RIGHT LEG
+0222 ; Lu # LATIN CAPITAL LETTER OU
+0224 ; Lu # LATIN CAPITAL LETTER Z WITH HOOK
+0226 ; Lu # LATIN CAPITAL LETTER A WITH DOT ABOVE
+0228 ; Lu # LATIN CAPITAL LETTER E WITH CEDILLA
+022A ; Lu # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+022C ; Lu # LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+022E ; Lu # LATIN CAPITAL LETTER O WITH DOT ABOVE
+0230 ; Lu # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
+0232 ; Lu # LATIN CAPITAL LETTER Y WITH MACRON
+023A..023B ; Lu # [2] LATIN CAPITAL LETTER A WITH STROKE..LATIN CAPITAL LETTER C WITH STROKE
+023D..023E ; Lu # [2] LATIN CAPITAL LETTER L WITH BAR..LATIN CAPITAL LETTER T WITH DIAGONAL STROKE
+0241 ; Lu # LATIN CAPITAL LETTER GLOTTAL STOP
+0243..0246 ; Lu # [4] LATIN CAPITAL LETTER B WITH STROKE..LATIN CAPITAL LETTER E WITH STROKE
+0248 ; Lu # LATIN CAPITAL LETTER J WITH STROKE
+024A ; Lu # LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL
+024C ; Lu # LATIN CAPITAL LETTER R WITH STROKE
+024E ; Lu # LATIN CAPITAL LETTER Y WITH STROKE
+0370 ; Lu # GREEK CAPITAL LETTER HETA
+0372 ; Lu # GREEK CAPITAL LETTER ARCHAIC SAMPI
+0376 ; Lu # GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA
+0386 ; Lu # GREEK CAPITAL LETTER ALPHA WITH TONOS
+0388..038A ; Lu # [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS
+038C ; Lu # GREEK CAPITAL LETTER OMICRON WITH TONOS
+038E..038F ; Lu # [2] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER OMEGA WITH TONOS
+0391..03A1 ; Lu # [17] GREEK CAPITAL LETTER ALPHA..GREEK CAPITAL LETTER RHO
+03A3..03AB ; Lu # [9] GREEK CAPITAL LETTER SIGMA..GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+03CF ; Lu # GREEK CAPITAL KAI SYMBOL
+03D2..03D4 ; Lu # [3] GREEK UPSILON WITH HOOK SYMBOL..GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
+03D8 ; Lu # GREEK LETTER ARCHAIC KOPPA
+03DA ; Lu # GREEK LETTER STIGMA
+03DC ; Lu # GREEK LETTER DIGAMMA
+03DE ; Lu # GREEK LETTER KOPPA
+03E0 ; Lu # GREEK LETTER SAMPI
+03E2 ; Lu # COPTIC CAPITAL LETTER SHEI
+03E4 ; Lu # COPTIC CAPITAL LETTER FEI
+03E6 ; Lu # COPTIC CAPITAL LETTER KHEI
+03E8 ; Lu # COPTIC CAPITAL LETTER HORI
+03EA ; Lu # COPTIC CAPITAL LETTER GANGIA
+03EC ; Lu # COPTIC CAPITAL LETTER SHIMA
+03EE ; Lu # COPTIC CAPITAL LETTER DEI
+03F4 ; Lu # GREEK CAPITAL THETA SYMBOL
+03F7 ; Lu # GREEK CAPITAL LETTER SHO
+03F9..03FA ; Lu # [2] GREEK CAPITAL LUNATE SIGMA SYMBOL..GREEK CAPITAL LETTER SAN
+03FD..042F ; Lu # [51] GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL..CYRILLIC CAPITAL LETTER YA
+0460 ; Lu # CYRILLIC CAPITAL LETTER OMEGA
+0462 ; Lu # CYRILLIC CAPITAL LETTER YAT
+0464 ; Lu # CYRILLIC CAPITAL LETTER IOTIFIED E
+0466 ; Lu # CYRILLIC CAPITAL LETTER LITTLE YUS
+0468 ; Lu # CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS
+046A ; Lu # CYRILLIC CAPITAL LETTER BIG YUS
+046C ; Lu # CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS
+046E ; Lu # CYRILLIC CAPITAL LETTER KSI
+0470 ; Lu # CYRILLIC CAPITAL LETTER PSI
+0472 ; Lu # CYRILLIC CAPITAL LETTER FITA
+0474 ; Lu # CYRILLIC CAPITAL LETTER IZHITSA
+0476 ; Lu # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+0478 ; Lu # CYRILLIC CAPITAL LETTER UK
+047A ; Lu # CYRILLIC CAPITAL LETTER ROUND OMEGA
+047C ; Lu # CYRILLIC CAPITAL LETTER OMEGA WITH TITLO
+047E ; Lu # CYRILLIC CAPITAL LETTER OT
+0480 ; Lu # CYRILLIC CAPITAL LETTER KOPPA
+048A ; Lu # CYRILLIC CAPITAL LETTER SHORT I WITH TAIL
+048C ; Lu # CYRILLIC CAPITAL LETTER SEMISOFT SIGN
+048E ; Lu # CYRILLIC CAPITAL LETTER ER WITH TICK
+0490 ; Lu # CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+0492 ; Lu # CYRILLIC CAPITAL LETTER GHE WITH STROKE
+0494 ; Lu # CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK
+0496 ; Lu # CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
+0498 ; Lu # CYRILLIC CAPITAL LETTER ZE WITH DESCENDER
+049A ; Lu # CYRILLIC CAPITAL LETTER KA WITH DESCENDER
+049C ; Lu # CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
+049E ; Lu # CYRILLIC CAPITAL LETTER KA WITH STROKE
+04A0 ; Lu # CYRILLIC CAPITAL LETTER BASHKIR KA
+04A2 ; Lu # CYRILLIC CAPITAL LETTER EN WITH DESCENDER
+04A4 ; Lu # CYRILLIC CAPITAL LIGATURE EN GHE
+04A6 ; Lu # CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK
+04A8 ; Lu # CYRILLIC CAPITAL LETTER ABKHASIAN HA
+04AA ; Lu # CYRILLIC CAPITAL LETTER ES WITH DESCENDER
+04AC ; Lu # CYRILLIC CAPITAL LETTER TE WITH DESCENDER
+04AE ; Lu # CYRILLIC CAPITAL LETTER STRAIGHT U
+04B0 ; Lu # CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
+04B2 ; Lu # CYRILLIC CAPITAL LETTER HA WITH DESCENDER
+04B4 ; Lu # CYRILLIC CAPITAL LIGATURE TE TSE
+04B6 ; Lu # CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
+04B8 ; Lu # CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
+04BA ; Lu # CYRILLIC CAPITAL LETTER SHHA
+04BC ; Lu # CYRILLIC CAPITAL LETTER ABKHASIAN CHE
+04BE ; Lu # CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER
+04C0..04C1 ; Lu # [2] CYRILLIC LETTER PALOCHKA..CYRILLIC CAPITAL LETTER ZHE WITH BREVE
+04C3 ; Lu # CYRILLIC CAPITAL LETTER KA WITH HOOK
+04C5 ; Lu # CYRILLIC CAPITAL LETTER EL WITH TAIL
+04C7 ; Lu # CYRILLIC CAPITAL LETTER EN WITH HOOK
+04C9 ; Lu # CYRILLIC CAPITAL LETTER EN WITH TAIL
+04CB ; Lu # CYRILLIC CAPITAL LETTER KHAKASSIAN CHE
+04CD ; Lu # CYRILLIC CAPITAL LETTER EM WITH TAIL
+04D0 ; Lu # CYRILLIC CAPITAL LETTER A WITH BREVE
+04D2 ; Lu # CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+04D4 ; Lu # CYRILLIC CAPITAL LIGATURE A IE
+04D6 ; Lu # CYRILLIC CAPITAL LETTER IE WITH BREVE
+04D8 ; Lu # CYRILLIC CAPITAL LETTER SCHWA
+04DA ; Lu # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+04DC ; Lu # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+04DE ; Lu # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+04E0 ; Lu # CYRILLIC CAPITAL LETTER ABKHASIAN DZE
+04E2 ; Lu # CYRILLIC CAPITAL LETTER I WITH MACRON
+04E4 ; Lu # CYRILLIC CAPITAL LETTER I WITH DIAERESIS
+04E6 ; Lu # CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+04E8 ; Lu # CYRILLIC CAPITAL LETTER BARRED O
+04EA ; Lu # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+04EC ; Lu # CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+04EE ; Lu # CYRILLIC CAPITAL LETTER U WITH MACRON
+04F0 ; Lu # CYRILLIC CAPITAL LETTER U WITH DIAERESIS
+04F2 ; Lu # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
+04F4 ; Lu # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+04F6 ; Lu # CYRILLIC CAPITAL LETTER GHE WITH DESCENDER
+04F8 ; Lu # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+04FA ; Lu # CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK
+04FC ; Lu # CYRILLIC CAPITAL LETTER HA WITH HOOK
+04FE ; Lu # CYRILLIC CAPITAL LETTER HA WITH STROKE
+0500 ; Lu # CYRILLIC CAPITAL LETTER KOMI DE
+0502 ; Lu # CYRILLIC CAPITAL LETTER KOMI DJE
+0504 ; Lu # CYRILLIC CAPITAL LETTER KOMI ZJE
+0506 ; Lu # CYRILLIC CAPITAL LETTER KOMI DZJE
+0508 ; Lu # CYRILLIC CAPITAL LETTER KOMI LJE
+050A ; Lu # CYRILLIC CAPITAL LETTER KOMI NJE
+050C ; Lu # CYRILLIC CAPITAL LETTER KOMI SJE
+050E ; Lu # CYRILLIC CAPITAL LETTER KOMI TJE
+0510 ; Lu # CYRILLIC CAPITAL LETTER REVERSED ZE
+0512 ; Lu # CYRILLIC CAPITAL LETTER EL WITH HOOK
+0514 ; Lu # CYRILLIC CAPITAL LETTER LHA
+0516 ; Lu # CYRILLIC CAPITAL LETTER RHA
+0518 ; Lu # CYRILLIC CAPITAL LETTER YAE
+051A ; Lu # CYRILLIC CAPITAL LETTER QA
+051C ; Lu # CYRILLIC CAPITAL LETTER WE
+051E ; Lu # CYRILLIC CAPITAL LETTER ALEUT KA
+0520 ; Lu # CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK
+0522 ; Lu # CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK
+0531..0556 ; Lu # [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH
+10A0..10C5 ; Lu # [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE
+1E00 ; Lu # LATIN CAPITAL LETTER A WITH RING BELOW
+1E02 ; Lu # LATIN CAPITAL LETTER B WITH DOT ABOVE
+1E04 ; Lu # LATIN CAPITAL LETTER B WITH DOT BELOW
+1E06 ; Lu # LATIN CAPITAL LETTER B WITH LINE BELOW
+1E08 ; Lu # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+1E0A ; Lu # LATIN CAPITAL LETTER D WITH DOT ABOVE
+1E0C ; Lu # LATIN CAPITAL LETTER D WITH DOT BELOW
+1E0E ; Lu # LATIN CAPITAL LETTER D WITH LINE BELOW
+1E10 ; Lu # LATIN CAPITAL LETTER D WITH CEDILLA
+1E12 ; Lu # LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW
+1E14 ; Lu # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+1E16 ; Lu # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+1E18 ; Lu # LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW
+1E1A ; Lu # LATIN CAPITAL LETTER E WITH TILDE BELOW
+1E1C ; Lu # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
+1E1E ; Lu # LATIN CAPITAL LETTER F WITH DOT ABOVE
+1E20 ; Lu # LATIN CAPITAL LETTER G WITH MACRON
+1E22 ; Lu # LATIN CAPITAL LETTER H WITH DOT ABOVE
+1E24 ; Lu # LATIN CAPITAL LETTER H WITH DOT BELOW
+1E26 ; Lu # LATIN CAPITAL LETTER H WITH DIAERESIS
+1E28 ; Lu # LATIN CAPITAL LETTER H WITH CEDILLA
+1E2A ; Lu # LATIN CAPITAL LETTER H WITH BREVE BELOW
+1E2C ; Lu # LATIN CAPITAL LETTER I WITH TILDE BELOW
+1E2E ; Lu # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+1E30 ; Lu # LATIN CAPITAL LETTER K WITH ACUTE
+1E32 ; Lu # LATIN CAPITAL LETTER K WITH DOT BELOW
+1E34 ; Lu # LATIN CAPITAL LETTER K WITH LINE BELOW
+1E36 ; Lu # LATIN CAPITAL LETTER L WITH DOT BELOW
+1E38 ; Lu # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+1E3A ; Lu # LATIN CAPITAL LETTER L WITH LINE BELOW
+1E3C ; Lu # LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW
+1E3E ; Lu # LATIN CAPITAL LETTER M WITH ACUTE
+1E40 ; Lu # LATIN CAPITAL LETTER M WITH DOT ABOVE
+1E42 ; Lu # LATIN CAPITAL LETTER M WITH DOT BELOW
+1E44 ; Lu # LATIN CAPITAL LETTER N WITH DOT ABOVE
+1E46 ; Lu # LATIN CAPITAL LETTER N WITH DOT BELOW
+1E48 ; Lu # LATIN CAPITAL LETTER N WITH LINE BELOW
+1E4A ; Lu # LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW
+1E4C ; Lu # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+1E4E ; Lu # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
+1E50 ; Lu # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+1E52 ; Lu # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+1E54 ; Lu # LATIN CAPITAL LETTER P WITH ACUTE
+1E56 ; Lu # LATIN CAPITAL LETTER P WITH DOT ABOVE
+1E58 ; Lu # LATIN CAPITAL LETTER R WITH DOT ABOVE
+1E5A ; Lu # LATIN CAPITAL LETTER R WITH DOT BELOW
+1E5C ; Lu # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+1E5E ; Lu # LATIN CAPITAL LETTER R WITH LINE BELOW
+1E60 ; Lu # LATIN CAPITAL LETTER S WITH DOT ABOVE
+1E62 ; Lu # LATIN CAPITAL LETTER S WITH DOT BELOW
+1E64 ; Lu # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
+1E66 ; Lu # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
+1E68 ; Lu # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
+1E6A ; Lu # LATIN CAPITAL LETTER T WITH DOT ABOVE
+1E6C ; Lu # LATIN CAPITAL LETTER T WITH DOT BELOW
+1E6E ; Lu # LATIN CAPITAL LETTER T WITH LINE BELOW
+1E70 ; Lu # LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW
+1E72 ; Lu # LATIN CAPITAL LETTER U WITH DIAERESIS BELOW
+1E74 ; Lu # LATIN CAPITAL LETTER U WITH TILDE BELOW
+1E76 ; Lu # LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW
+1E78 ; Lu # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+1E7A ; Lu # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
+1E7C ; Lu # LATIN CAPITAL LETTER V WITH TILDE
+1E7E ; Lu # LATIN CAPITAL LETTER V WITH DOT BELOW
+1E80 ; Lu # LATIN CAPITAL LETTER W WITH GRAVE
+1E82 ; Lu # LATIN CAPITAL LETTER W WITH ACUTE
+1E84 ; Lu # LATIN CAPITAL LETTER W WITH DIAERESIS
+1E86 ; Lu # LATIN CAPITAL LETTER W WITH DOT ABOVE
+1E88 ; Lu # LATIN CAPITAL LETTER W WITH DOT BELOW
+1E8A ; Lu # LATIN CAPITAL LETTER X WITH DOT ABOVE
+1E8C ; Lu # LATIN CAPITAL LETTER X WITH DIAERESIS
+1E8E ; Lu # LATIN CAPITAL LETTER Y WITH DOT ABOVE
+1E90 ; Lu # LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
+1E92 ; Lu # LATIN CAPITAL LETTER Z WITH DOT BELOW
+1E94 ; Lu # LATIN CAPITAL LETTER Z WITH LINE BELOW
+1E9E ; Lu # LATIN CAPITAL LETTER SHARP S
+1EA0 ; Lu # LATIN CAPITAL LETTER A WITH DOT BELOW
+1EA2 ; Lu # LATIN CAPITAL LETTER A WITH HOOK ABOVE
+1EA4 ; Lu # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+1EA6 ; Lu # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+1EA8 ; Lu # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+1EAA ; Lu # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+1EAC ; Lu # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+1EAE ; Lu # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+1EB0 ; Lu # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+1EB2 ; Lu # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+1EB4 ; Lu # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+1EB6 ; Lu # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+1EB8 ; Lu # LATIN CAPITAL LETTER E WITH DOT BELOW
+1EBA ; Lu # LATIN CAPITAL LETTER E WITH HOOK ABOVE
+1EBC ; Lu # LATIN CAPITAL LETTER E WITH TILDE
+1EBE ; Lu # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EC0 ; Lu # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EC2 ; Lu # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC4 ; Lu # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC6 ; Lu # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1EC8 ; Lu # LATIN CAPITAL LETTER I WITH HOOK ABOVE
+1ECA ; Lu # LATIN CAPITAL LETTER I WITH DOT BELOW
+1ECC ; Lu # LATIN CAPITAL LETTER O WITH DOT BELOW
+1ECE ; Lu # LATIN CAPITAL LETTER O WITH HOOK ABOVE
+1ED0 ; Lu # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED2 ; Lu # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED4 ; Lu # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED6 ; Lu # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED8 ; Lu # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1EDA ; Lu # LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+1EDC ; Lu # LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+1EDE ; Lu # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+1EE0 ; Lu # LATIN CAPITAL LETTER O WITH HORN AND TILDE
+1EE2 ; Lu # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+1EE4 ; Lu # LATIN CAPITAL LETTER U WITH DOT BELOW
+1EE6 ; Lu # LATIN CAPITAL LETTER U WITH HOOK ABOVE
+1EE8 ; Lu # LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+1EEA ; Lu # LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+1EEC ; Lu # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+1EEE ; Lu # LATIN CAPITAL LETTER U WITH HORN AND TILDE
+1EF0 ; Lu # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+1EF2 ; Lu # LATIN CAPITAL LETTER Y WITH GRAVE
+1EF4 ; Lu # LATIN CAPITAL LETTER Y WITH DOT BELOW
+1EF6 ; Lu # LATIN CAPITAL LETTER Y WITH HOOK ABOVE
+1EF8 ; Lu # LATIN CAPITAL LETTER Y WITH TILDE
+1EFA ; Lu # LATIN CAPITAL LETTER MIDDLE-WELSH LL
+1EFC ; Lu # LATIN CAPITAL LETTER MIDDLE-WELSH V
+1EFE ; Lu # LATIN CAPITAL LETTER Y WITH LOOP
+1F08..1F0F ; Lu # [8] GREEK CAPITAL LETTER ALPHA WITH PSILI..GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
+1F18..1F1D ; Lu # [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+1F28..1F2F ; Lu # [8] GREEK CAPITAL LETTER ETA WITH PSILI..GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
+1F38..1F3F ; Lu # [8] GREEK CAPITAL LETTER IOTA WITH PSILI..GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
+1F48..1F4D ; Lu # [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+1F59 ; Lu # GREEK CAPITAL LETTER UPSILON WITH DASIA
+1F5B ; Lu # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+1F5D ; Lu # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+1F5F ; Lu # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1F68..1F6F ; Lu # [8] GREEK CAPITAL LETTER OMEGA WITH PSILI..GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
+1FB8..1FBB ; Lu # [4] GREEK CAPITAL LETTER ALPHA WITH VRACHY..GREEK CAPITAL LETTER ALPHA WITH OXIA
+1FC8..1FCB ; Lu # [4] GREEK CAPITAL LETTER EPSILON WITH VARIA..GREEK CAPITAL LETTER ETA WITH OXIA
+1FD8..1FDB ; Lu # [4] GREEK CAPITAL LETTER IOTA WITH VRACHY..GREEK CAPITAL LETTER IOTA WITH OXIA
+1FE8..1FEC ; Lu # [5] GREEK CAPITAL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA
+1FF8..1FFB ; Lu # [4] GREEK CAPITAL LETTER OMICRON WITH VARIA..GREEK CAPITAL LETTER OMEGA WITH OXIA
+2102 ; Lu # DOUBLE-STRUCK CAPITAL C
+2107 ; Lu # EULER CONSTANT
+210B..210D ; Lu # [3] SCRIPT CAPITAL H..DOUBLE-STRUCK CAPITAL H
+2110..2112 ; Lu # [3] SCRIPT CAPITAL I..SCRIPT CAPITAL L
+2115 ; Lu # DOUBLE-STRUCK CAPITAL N
+2119..211D ; Lu # [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R
+2124 ; Lu # DOUBLE-STRUCK CAPITAL Z
+2126 ; Lu # OHM SIGN
+2128 ; Lu # BLACK-LETTER CAPITAL Z
+212A..212D ; Lu # [4] KELVIN SIGN..BLACK-LETTER CAPITAL C
+2130..2133 ; Lu # [4] SCRIPT CAPITAL E..SCRIPT CAPITAL M
+213E..213F ; Lu # [2] DOUBLE-STRUCK CAPITAL GAMMA..DOUBLE-STRUCK CAPITAL PI
+2145 ; Lu # DOUBLE-STRUCK ITALIC CAPITAL D
+2183 ; Lu # ROMAN NUMERAL REVERSED ONE HUNDRED
+2C00..2C2E ; Lu # [47] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE
+2C60 ; Lu # LATIN CAPITAL LETTER L WITH DOUBLE BAR
+2C62..2C64 ; Lu # [3] LATIN CAPITAL LETTER L WITH MIDDLE TILDE..LATIN CAPITAL LETTER R WITH TAIL
+2C67 ; Lu # LATIN CAPITAL LETTER H WITH DESCENDER
+2C69 ; Lu # LATIN CAPITAL LETTER K WITH DESCENDER
+2C6B ; Lu # LATIN CAPITAL LETTER Z WITH DESCENDER
+2C6D..2C6F ; Lu # [3] LATIN CAPITAL LETTER ALPHA..LATIN CAPITAL LETTER TURNED A
+2C72 ; Lu # LATIN CAPITAL LETTER W WITH HOOK
+2C75 ; Lu # LATIN CAPITAL LETTER HALF H
+2C80 ; Lu # COPTIC CAPITAL LETTER ALFA
+2C82 ; Lu # COPTIC CAPITAL LETTER VIDA
+2C84 ; Lu # COPTIC CAPITAL LETTER GAMMA
+2C86 ; Lu # COPTIC CAPITAL LETTER DALDA
+2C88 ; Lu # COPTIC CAPITAL LETTER EIE
+2C8A ; Lu # COPTIC CAPITAL LETTER SOU
+2C8C ; Lu # COPTIC CAPITAL LETTER ZATA
+2C8E ; Lu # COPTIC CAPITAL LETTER HATE
+2C90 ; Lu # COPTIC CAPITAL LETTER THETHE
+2C92 ; Lu # COPTIC CAPITAL LETTER IAUDA
+2C94 ; Lu # COPTIC CAPITAL LETTER KAPA
+2C96 ; Lu # COPTIC CAPITAL LETTER LAULA
+2C98 ; Lu # COPTIC CAPITAL LETTER MI
+2C9A ; Lu # COPTIC CAPITAL LETTER NI
+2C9C ; Lu # COPTIC CAPITAL LETTER KSI
+2C9E ; Lu # COPTIC CAPITAL LETTER O
+2CA0 ; Lu # COPTIC CAPITAL LETTER PI
+2CA2 ; Lu # COPTIC CAPITAL LETTER RO
+2CA4 ; Lu # COPTIC CAPITAL LETTER SIMA
+2CA6 ; Lu # COPTIC CAPITAL LETTER TAU
+2CA8 ; Lu # COPTIC CAPITAL LETTER UA
+2CAA ; Lu # COPTIC CAPITAL LETTER FI
+2CAC ; Lu # COPTIC CAPITAL LETTER KHI
+2CAE ; Lu # COPTIC CAPITAL LETTER PSI
+2CB0 ; Lu # COPTIC CAPITAL LETTER OOU
+2CB2 ; Lu # COPTIC CAPITAL LETTER DIALECT-P ALEF
+2CB4 ; Lu # COPTIC CAPITAL LETTER OLD COPTIC AIN
+2CB6 ; Lu # COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE
+2CB8 ; Lu # COPTIC CAPITAL LETTER DIALECT-P KAPA
+2CBA ; Lu # COPTIC CAPITAL LETTER DIALECT-P NI
+2CBC ; Lu # COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI
+2CBE ; Lu # COPTIC CAPITAL LETTER OLD COPTIC OOU
+2CC0 ; Lu # COPTIC CAPITAL LETTER SAMPI
+2CC2 ; Lu # COPTIC CAPITAL LETTER CROSSED SHEI
+2CC4 ; Lu # COPTIC CAPITAL LETTER OLD COPTIC SHEI
+2CC6 ; Lu # COPTIC CAPITAL LETTER OLD COPTIC ESH
+2CC8 ; Lu # COPTIC CAPITAL LETTER AKHMIMIC KHEI
+2CCA ; Lu # COPTIC CAPITAL LETTER DIALECT-P HORI
+2CCC ; Lu # COPTIC CAPITAL LETTER OLD COPTIC HORI
+2CCE ; Lu # COPTIC CAPITAL LETTER OLD COPTIC HA
+2CD0 ; Lu # COPTIC CAPITAL LETTER L-SHAPED HA
+2CD2 ; Lu # COPTIC CAPITAL LETTER OLD COPTIC HEI
+2CD4 ; Lu # COPTIC CAPITAL LETTER OLD COPTIC HAT
+2CD6 ; Lu # COPTIC CAPITAL LETTER OLD COPTIC GANGIA
+2CD8 ; Lu # COPTIC CAPITAL LETTER OLD COPTIC DJA
+2CDA ; Lu # COPTIC CAPITAL LETTER OLD COPTIC SHIMA
+2CDC ; Lu # COPTIC CAPITAL LETTER OLD NUBIAN SHIMA
+2CDE ; Lu # COPTIC CAPITAL LETTER OLD NUBIAN NGI
+2CE0 ; Lu # COPTIC CAPITAL LETTER OLD NUBIAN NYI
+2CE2 ; Lu # COPTIC CAPITAL LETTER OLD NUBIAN WAU
+A640 ; Lu # CYRILLIC CAPITAL LETTER ZEMLYA
+A642 ; Lu # CYRILLIC CAPITAL LETTER DZELO
+A644 ; Lu # CYRILLIC CAPITAL LETTER REVERSED DZE
+A646 ; Lu # CYRILLIC CAPITAL LETTER IOTA
+A648 ; Lu # CYRILLIC CAPITAL LETTER DJERV
+A64A ; Lu # CYRILLIC CAPITAL LETTER MONOGRAPH UK
+A64C ; Lu # CYRILLIC CAPITAL LETTER BROAD OMEGA
+A64E ; Lu # CYRILLIC CAPITAL LETTER NEUTRAL YER
+A650 ; Lu # CYRILLIC CAPITAL LETTER YERU WITH BACK YER
+A652 ; Lu # CYRILLIC CAPITAL LETTER IOTIFIED YAT
+A654 ; Lu # CYRILLIC CAPITAL LETTER REVERSED YU
+A656 ; Lu # CYRILLIC CAPITAL LETTER IOTIFIED A
+A658 ; Lu # CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS
+A65A ; Lu # CYRILLIC CAPITAL LETTER BLENDED YUS
+A65C ; Lu # CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS
+A65E ; Lu # CYRILLIC CAPITAL LETTER YN
+A662 ; Lu # CYRILLIC CAPITAL LETTER SOFT DE
+A664 ; Lu # CYRILLIC CAPITAL LETTER SOFT EL
+A666 ; Lu # CYRILLIC CAPITAL LETTER SOFT EM
+A668 ; Lu # CYRILLIC CAPITAL LETTER MONOCULAR O
+A66A ; Lu # CYRILLIC CAPITAL LETTER BINOCULAR O
+A66C ; Lu # CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O
+A680 ; Lu # CYRILLIC CAPITAL LETTER DWE
+A682 ; Lu # CYRILLIC CAPITAL LETTER DZWE
+A684 ; Lu # CYRILLIC CAPITAL LETTER ZHWE
+A686 ; Lu # CYRILLIC CAPITAL LETTER CCHE
+A688 ; Lu # CYRILLIC CAPITAL LETTER DZZE
+A68A ; Lu # CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK
+A68C ; Lu # CYRILLIC CAPITAL LETTER TWE
+A68E ; Lu # CYRILLIC CAPITAL LETTER TSWE
+A690 ; Lu # CYRILLIC CAPITAL LETTER TSSE
+A692 ; Lu # CYRILLIC CAPITAL LETTER TCHE
+A694 ; Lu # CYRILLIC CAPITAL LETTER HWE
+A696 ; Lu # CYRILLIC CAPITAL LETTER SHWE
+A722 ; Lu # LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF
+A724 ; Lu # LATIN CAPITAL LETTER EGYPTOLOGICAL AIN
+A726 ; Lu # LATIN CAPITAL LETTER HENG
+A728 ; Lu # LATIN CAPITAL LETTER TZ
+A72A ; Lu # LATIN CAPITAL LETTER TRESILLO
+A72C ; Lu # LATIN CAPITAL LETTER CUATRILLO
+A72E ; Lu # LATIN CAPITAL LETTER CUATRILLO WITH COMMA
+A732 ; Lu # LATIN CAPITAL LETTER AA
+A734 ; Lu # LATIN CAPITAL LETTER AO
+A736 ; Lu # LATIN CAPITAL LETTER AU
+A738 ; Lu # LATIN CAPITAL LETTER AV
+A73A ; Lu # LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR
+A73C ; Lu # LATIN CAPITAL LETTER AY
+A73E ; Lu # LATIN CAPITAL LETTER REVERSED C WITH DOT
+A740 ; Lu # LATIN CAPITAL LETTER K WITH STROKE
+A742 ; Lu # LATIN CAPITAL LETTER K WITH DIAGONAL STROKE
+A744 ; Lu # LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE
+A746 ; Lu # LATIN CAPITAL LETTER BROKEN L
+A748 ; Lu # LATIN CAPITAL LETTER L WITH HIGH STROKE
+A74A ; Lu # LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY
+A74C ; Lu # LATIN CAPITAL LETTER O WITH LOOP
+A74E ; Lu # LATIN CAPITAL LETTER OO
+A750 ; Lu # LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER
+A752 ; Lu # LATIN CAPITAL LETTER P WITH FLOURISH
+A754 ; Lu # LATIN CAPITAL LETTER P WITH SQUIRREL TAIL
+A756 ; Lu # LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER
+A758 ; Lu # LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE
+A75A ; Lu # LATIN CAPITAL LETTER R ROTUNDA
+A75C ; Lu # LATIN CAPITAL LETTER RUM ROTUNDA
+A75E ; Lu # LATIN CAPITAL LETTER V WITH DIAGONAL STROKE
+A760 ; Lu # LATIN CAPITAL LETTER VY
+A762 ; Lu # LATIN CAPITAL LETTER VISIGOTHIC Z
+A764 ; Lu # LATIN CAPITAL LETTER THORN WITH STROKE
+A766 ; Lu # LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER
+A768 ; Lu # LATIN CAPITAL LETTER VEND
+A76A ; Lu # LATIN CAPITAL LETTER ET
+A76C ; Lu # LATIN CAPITAL LETTER IS
+A76E ; Lu # LATIN CAPITAL LETTER CON
+A779 ; Lu # LATIN CAPITAL LETTER INSULAR D
+A77B ; Lu # LATIN CAPITAL LETTER INSULAR F
+A77D..A77E ; Lu # [2] LATIN CAPITAL LETTER INSULAR G..LATIN CAPITAL LETTER TURNED INSULAR G
+A780 ; Lu # LATIN CAPITAL LETTER TURNED L
+A782 ; Lu # LATIN CAPITAL LETTER INSULAR R
+A784 ; Lu # LATIN CAPITAL LETTER INSULAR S
+A786 ; Lu # LATIN CAPITAL LETTER INSULAR T
+A78B ; Lu # LATIN CAPITAL LETTER SALTILLO
+FF21..FF3A ; Lu # [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
+10400..10427 ; Lu # [40] DESERET CAPITAL LETTER LONG I..DESERET CAPITAL LETTER EW
+1D400..1D419 ; Lu # [26] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL BOLD CAPITAL Z
+1D434..1D44D ; Lu # [26] MATHEMATICAL ITALIC CAPITAL A..MATHEMATICAL ITALIC CAPITAL Z
+1D468..1D481 ; Lu # [26] MATHEMATICAL BOLD ITALIC CAPITAL A..MATHEMATICAL BOLD ITALIC CAPITAL Z
+1D49C ; Lu # MATHEMATICAL SCRIPT CAPITAL A
+1D49E..1D49F ; Lu # [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D
+1D4A2 ; Lu # MATHEMATICAL SCRIPT CAPITAL G
+1D4A5..1D4A6 ; Lu # [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K
+1D4A9..1D4AC ; Lu # [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q
+1D4AE..1D4B5 ; Lu # [8] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT CAPITAL Z
+1D4D0..1D4E9 ; Lu # [26] MATHEMATICAL BOLD SCRIPT CAPITAL A..MATHEMATICAL BOLD SCRIPT CAPITAL Z
+1D504..1D505 ; Lu # [2] MATHEMATICAL FRAKTUR CAPITAL A..MATHEMATICAL FRAKTUR CAPITAL B
+1D507..1D50A ; Lu # [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G
+1D50D..1D514 ; Lu # [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q
+1D516..1D51C ; Lu # [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y
+1D538..1D539 ; Lu # [2] MATHEMATICAL DOUBLE-STRUCK CAPITAL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B
+1D53B..1D53E ; Lu # [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G
+1D540..1D544 ; Lu # [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M
+1D546 ; Lu # MATHEMATICAL DOUBLE-STRUCK CAPITAL O
+1D54A..1D550 ; Lu # [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
+1D56C..1D585 ; Lu # [26] MATHEMATICAL BOLD FRAKTUR CAPITAL A..MATHEMATICAL BOLD FRAKTUR CAPITAL Z
+1D5A0..1D5B9 ; Lu # [26] MATHEMATICAL SANS-SERIF CAPITAL A..MATHEMATICAL SANS-SERIF CAPITAL Z
+1D5D4..1D5ED ; Lu # [26] MATHEMATICAL SANS-SERIF BOLD CAPITAL A..MATHEMATICAL SANS-SERIF BOLD CAPITAL Z
+1D608..1D621 ; Lu # [26] MATHEMATICAL SANS-SERIF ITALIC CAPITAL A..MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z
+1D63C..1D655 ; Lu # [26] MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z
+1D670..1D689 ; Lu # [26] MATHEMATICAL MONOSPACE CAPITAL A..MATHEMATICAL MONOSPACE CAPITAL Z
+1D6A8..1D6C0 ; Lu # [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA
+1D6E2..1D6FA ; Lu # [25] MATHEMATICAL ITALIC CAPITAL ALPHA..MATHEMATICAL ITALIC CAPITAL OMEGA
+1D71C..1D734 ; Lu # [25] MATHEMATICAL BOLD ITALIC CAPITAL ALPHA..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
+1D756..1D76E ; Lu # [25] MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
+1D790..1D7A8 ; Lu # [25] MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
+1D7CA ; Lu # MATHEMATICAL BOLD CAPITAL DIGAMMA
+
+# Total code points: 1421
+
+# ================================================
+
+# General_Category=Lowercase_Letter
+
+0061..007A ; Ll # [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z
+00AA ; Ll # FEMININE ORDINAL INDICATOR
+00B5 ; Ll # MICRO SIGN
+00BA ; Ll # MASCULINE ORDINAL INDICATOR
+00DF..00F6 ; Ll # [24] LATIN SMALL LETTER SHARP S..LATIN SMALL LETTER O WITH DIAERESIS
+00F8..00FF ; Ll # [8] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER Y WITH DIAERESIS
+0101 ; Ll # LATIN SMALL LETTER A WITH MACRON
+0103 ; Ll # LATIN SMALL LETTER A WITH BREVE
+0105 ; Ll # LATIN SMALL LETTER A WITH OGONEK
+0107 ; Ll # LATIN SMALL LETTER C WITH ACUTE
+0109 ; Ll # LATIN SMALL LETTER C WITH CIRCUMFLEX
+010B ; Ll # LATIN SMALL LETTER C WITH DOT ABOVE
+010D ; Ll # LATIN SMALL LETTER C WITH CARON
+010F ; Ll # LATIN SMALL LETTER D WITH CARON
+0111 ; Ll # LATIN SMALL LETTER D WITH STROKE
+0113 ; Ll # LATIN SMALL LETTER E WITH MACRON
+0115 ; Ll # LATIN SMALL LETTER E WITH BREVE
+0117 ; Ll # LATIN SMALL LETTER E WITH DOT ABOVE
+0119 ; Ll # LATIN SMALL LETTER E WITH OGONEK
+011B ; Ll # LATIN SMALL LETTER E WITH CARON
+011D ; Ll # LATIN SMALL LETTER G WITH CIRCUMFLEX
+011F ; Ll # LATIN SMALL LETTER G WITH BREVE
+0121 ; Ll # LATIN SMALL LETTER G WITH DOT ABOVE
+0123 ; Ll # LATIN SMALL LETTER G WITH CEDILLA
+0125 ; Ll # LATIN SMALL LETTER H WITH CIRCUMFLEX
+0127 ; Ll # LATIN SMALL LETTER H WITH STROKE
+0129 ; Ll # LATIN SMALL LETTER I WITH TILDE
+012B ; Ll # LATIN SMALL LETTER I WITH MACRON
+012D ; Ll # LATIN SMALL LETTER I WITH BREVE
+012F ; Ll # LATIN SMALL LETTER I WITH OGONEK
+0131 ; Ll # LATIN SMALL LETTER DOTLESS I
+0133 ; Ll # LATIN SMALL LIGATURE IJ
+0135 ; Ll # LATIN SMALL LETTER J WITH CIRCUMFLEX
+0137..0138 ; Ll # [2] LATIN SMALL LETTER K WITH CEDILLA..LATIN SMALL LETTER KRA
+013A ; Ll # LATIN SMALL LETTER L WITH ACUTE
+013C ; Ll # LATIN SMALL LETTER L WITH CEDILLA
+013E ; Ll # LATIN SMALL LETTER L WITH CARON
+0140 ; Ll # LATIN SMALL LETTER L WITH MIDDLE DOT
+0142 ; Ll # LATIN SMALL LETTER L WITH STROKE
+0144 ; Ll # LATIN SMALL LETTER N WITH ACUTE
+0146 ; Ll # LATIN SMALL LETTER N WITH CEDILLA
+0148..0149 ; Ll # [2] LATIN SMALL LETTER N WITH CARON..LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+014B ; Ll # LATIN SMALL LETTER ENG
+014D ; Ll # LATIN SMALL LETTER O WITH MACRON
+014F ; Ll # LATIN SMALL LETTER O WITH BREVE
+0151 ; Ll # LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0153 ; Ll # LATIN SMALL LIGATURE OE
+0155 ; Ll # LATIN SMALL LETTER R WITH ACUTE
+0157 ; Ll # LATIN SMALL LETTER R WITH CEDILLA
+0159 ; Ll # LATIN SMALL LETTER R WITH CARON
+015B ; Ll # LATIN SMALL LETTER S WITH ACUTE
+015D ; Ll # LATIN SMALL LETTER S WITH CIRCUMFLEX
+015F ; Ll # LATIN SMALL LETTER S WITH CEDILLA
+0161 ; Ll # LATIN SMALL LETTER S WITH CARON
+0163 ; Ll # LATIN SMALL LETTER T WITH CEDILLA
+0165 ; Ll # LATIN SMALL LETTER T WITH CARON
+0167 ; Ll # LATIN SMALL LETTER T WITH STROKE
+0169 ; Ll # LATIN SMALL LETTER U WITH TILDE
+016B ; Ll # LATIN SMALL LETTER U WITH MACRON
+016D ; Ll # LATIN SMALL LETTER U WITH BREVE
+016F ; Ll # LATIN SMALL LETTER U WITH RING ABOVE
+0171 ; Ll # LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0173 ; Ll # LATIN SMALL LETTER U WITH OGONEK
+0175 ; Ll # LATIN SMALL LETTER W WITH CIRCUMFLEX
+0177 ; Ll # LATIN SMALL LETTER Y WITH CIRCUMFLEX
+017A ; Ll # LATIN SMALL LETTER Z WITH ACUTE
+017C ; Ll # LATIN SMALL LETTER Z WITH DOT ABOVE
+017E..0180 ; Ll # [3] LATIN SMALL LETTER Z WITH CARON..LATIN SMALL LETTER B WITH STROKE
+0183 ; Ll # LATIN SMALL LETTER B WITH TOPBAR
+0185 ; Ll # LATIN SMALL LETTER TONE SIX
+0188 ; Ll # LATIN SMALL LETTER C WITH HOOK
+018C..018D ; Ll # [2] LATIN SMALL LETTER D WITH TOPBAR..LATIN SMALL LETTER TURNED DELTA
+0192 ; Ll # LATIN SMALL LETTER F WITH HOOK
+0195 ; Ll # LATIN SMALL LETTER HV
+0199..019B ; Ll # [3] LATIN SMALL LETTER K WITH HOOK..LATIN SMALL LETTER LAMBDA WITH STROKE
+019E ; Ll # LATIN SMALL LETTER N WITH LONG RIGHT LEG
+01A1 ; Ll # LATIN SMALL LETTER O WITH HORN
+01A3 ; Ll # LATIN SMALL LETTER OI
+01A5 ; Ll # LATIN SMALL LETTER P WITH HOOK
+01A8 ; Ll # LATIN SMALL LETTER TONE TWO
+01AA..01AB ; Ll # [2] LATIN LETTER REVERSED ESH LOOP..LATIN SMALL LETTER T WITH PALATAL HOOK
+01AD ; Ll # LATIN SMALL LETTER T WITH HOOK
+01B0 ; Ll # LATIN SMALL LETTER U WITH HORN
+01B4 ; Ll # LATIN SMALL LETTER Y WITH HOOK
+01B6 ; Ll # LATIN SMALL LETTER Z WITH STROKE
+01B9..01BA ; Ll # [2] LATIN SMALL LETTER EZH REVERSED..LATIN SMALL LETTER EZH WITH TAIL
+01BD..01BF ; Ll # [3] LATIN SMALL LETTER TONE FIVE..LATIN LETTER WYNN
+01C6 ; Ll # LATIN SMALL LETTER DZ WITH CARON
+01C9 ; Ll # LATIN SMALL LETTER LJ
+01CC ; Ll # LATIN SMALL LETTER NJ
+01CE ; Ll # LATIN SMALL LETTER A WITH CARON
+01D0 ; Ll # LATIN SMALL LETTER I WITH CARON
+01D2 ; Ll # LATIN SMALL LETTER O WITH CARON
+01D4 ; Ll # LATIN SMALL LETTER U WITH CARON
+01D6 ; Ll # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+01D8 ; Ll # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+01DA ; Ll # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+01DC..01DD ; Ll # [2] LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE..LATIN SMALL LETTER TURNED E
+01DF ; Ll # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+01E1 ; Ll # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
+01E3 ; Ll # LATIN SMALL LETTER AE WITH MACRON
+01E5 ; Ll # LATIN SMALL LETTER G WITH STROKE
+01E7 ; Ll # LATIN SMALL LETTER G WITH CARON
+01E9 ; Ll # LATIN SMALL LETTER K WITH CARON
+01EB ; Ll # LATIN SMALL LETTER O WITH OGONEK
+01ED ; Ll # LATIN SMALL LETTER O WITH OGONEK AND MACRON
+01EF..01F0 ; Ll # [2] LATIN SMALL LETTER EZH WITH CARON..LATIN SMALL LETTER J WITH CARON
+01F3 ; Ll # LATIN SMALL LETTER DZ
+01F5 ; Ll # LATIN SMALL LETTER G WITH ACUTE
+01F9 ; Ll # LATIN SMALL LETTER N WITH GRAVE
+01FB ; Ll # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+01FD ; Ll # LATIN SMALL LETTER AE WITH ACUTE
+01FF ; Ll # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+0201 ; Ll # LATIN SMALL LETTER A WITH DOUBLE GRAVE
+0203 ; Ll # LATIN SMALL LETTER A WITH INVERTED BREVE
+0205 ; Ll # LATIN SMALL LETTER E WITH DOUBLE GRAVE
+0207 ; Ll # LATIN SMALL LETTER E WITH INVERTED BREVE
+0209 ; Ll # LATIN SMALL LETTER I WITH DOUBLE GRAVE
+020B ; Ll # LATIN SMALL LETTER I WITH INVERTED BREVE
+020D ; Ll # LATIN SMALL LETTER O WITH DOUBLE GRAVE
+020F ; Ll # LATIN SMALL LETTER O WITH INVERTED BREVE
+0211 ; Ll # LATIN SMALL LETTER R WITH DOUBLE GRAVE
+0213 ; Ll # LATIN SMALL LETTER R WITH INVERTED BREVE
+0215 ; Ll # LATIN SMALL LETTER U WITH DOUBLE GRAVE
+0217 ; Ll # LATIN SMALL LETTER U WITH INVERTED BREVE
+0219 ; Ll # LATIN SMALL LETTER S WITH COMMA BELOW
+021B ; Ll # LATIN SMALL LETTER T WITH COMMA BELOW
+021D ; Ll # LATIN SMALL LETTER YOGH
+021F ; Ll # LATIN SMALL LETTER H WITH CARON
+0221 ; Ll # LATIN SMALL LETTER D WITH CURL
+0223 ; Ll # LATIN SMALL LETTER OU
+0225 ; Ll # LATIN SMALL LETTER Z WITH HOOK
+0227 ; Ll # LATIN SMALL LETTER A WITH DOT ABOVE
+0229 ; Ll # LATIN SMALL LETTER E WITH CEDILLA
+022B ; Ll # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+022D ; Ll # LATIN SMALL LETTER O WITH TILDE AND MACRON
+022F ; Ll # LATIN SMALL LETTER O WITH DOT ABOVE
+0231 ; Ll # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
+0233..0239 ; Ll # [7] LATIN SMALL LETTER Y WITH MACRON..LATIN SMALL LETTER QP DIGRAPH
+023C ; Ll # LATIN SMALL LETTER C WITH STROKE
+023F..0240 ; Ll # [2] LATIN SMALL LETTER S WITH SWASH TAIL..LATIN SMALL LETTER Z WITH SWASH TAIL
+0242 ; Ll # LATIN SMALL LETTER GLOTTAL STOP
+0247 ; Ll # LATIN SMALL LETTER E WITH STROKE
+0249 ; Ll # LATIN SMALL LETTER J WITH STROKE
+024B ; Ll # LATIN SMALL LETTER Q WITH HOOK TAIL
+024D ; Ll # LATIN SMALL LETTER R WITH STROKE
+024F..0293 ; Ll # [69] LATIN SMALL LETTER Y WITH STROKE..LATIN SMALL LETTER EZH WITH CURL
+0295..02AF ; Ll # [27] LATIN LETTER PHARYNGEAL VOICED FRICATIVE..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL
+0371 ; Ll # GREEK SMALL LETTER HETA
+0373 ; Ll # GREEK SMALL LETTER ARCHAIC SAMPI
+0377 ; Ll # GREEK SMALL LETTER PAMPHYLIAN DIGAMMA
+037B..037D ; Ll # [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL
+0390 ; Ll # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+03AC..03CE ; Ll # [35] GREEK SMALL LETTER ALPHA WITH TONOS..GREEK SMALL LETTER OMEGA WITH TONOS
+03D0..03D1 ; Ll # [2] GREEK BETA SYMBOL..GREEK THETA SYMBOL
+03D5..03D7 ; Ll # [3] GREEK PHI SYMBOL..GREEK KAI SYMBOL
+03D9 ; Ll # GREEK SMALL LETTER ARCHAIC KOPPA
+03DB ; Ll # GREEK SMALL LETTER STIGMA
+03DD ; Ll # GREEK SMALL LETTER DIGAMMA
+03DF ; Ll # GREEK SMALL LETTER KOPPA
+03E1 ; Ll # GREEK SMALL LETTER SAMPI
+03E3 ; Ll # COPTIC SMALL LETTER SHEI
+03E5 ; Ll # COPTIC SMALL LETTER FEI
+03E7 ; Ll # COPTIC SMALL LETTER KHEI
+03E9 ; Ll # COPTIC SMALL LETTER HORI
+03EB ; Ll # COPTIC SMALL LETTER GANGIA
+03ED ; Ll # COPTIC SMALL LETTER SHIMA
+03EF..03F3 ; Ll # [5] COPTIC SMALL LETTER DEI..GREEK LETTER YOT
+03F5 ; Ll # GREEK LUNATE EPSILON SYMBOL
+03F8 ; Ll # GREEK SMALL LETTER SHO
+03FB..03FC ; Ll # [2] GREEK SMALL LETTER SAN..GREEK RHO WITH STROKE SYMBOL
+0430..045F ; Ll # [48] CYRILLIC SMALL LETTER A..CYRILLIC SMALL LETTER DZHE
+0461 ; Ll # CYRILLIC SMALL LETTER OMEGA
+0463 ; Ll # CYRILLIC SMALL LETTER YAT
+0465 ; Ll # CYRILLIC SMALL LETTER IOTIFIED E
+0467 ; Ll # CYRILLIC SMALL LETTER LITTLE YUS
+0469 ; Ll # CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS
+046B ; Ll # CYRILLIC SMALL LETTER BIG YUS
+046D ; Ll # CYRILLIC SMALL LETTER IOTIFIED BIG YUS
+046F ; Ll # CYRILLIC SMALL LETTER KSI
+0471 ; Ll # CYRILLIC SMALL LETTER PSI
+0473 ; Ll # CYRILLIC SMALL LETTER FITA
+0475 ; Ll # CYRILLIC SMALL LETTER IZHITSA
+0477 ; Ll # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+0479 ; Ll # CYRILLIC SMALL LETTER UK
+047B ; Ll # CYRILLIC SMALL LETTER ROUND OMEGA
+047D ; Ll # CYRILLIC SMALL LETTER OMEGA WITH TITLO
+047F ; Ll # CYRILLIC SMALL LETTER OT
+0481 ; Ll # CYRILLIC SMALL LETTER KOPPA
+048B ; Ll # CYRILLIC SMALL LETTER SHORT I WITH TAIL
+048D ; Ll # CYRILLIC SMALL LETTER SEMISOFT SIGN
+048F ; Ll # CYRILLIC SMALL LETTER ER WITH TICK
+0491 ; Ll # CYRILLIC SMALL LETTER GHE WITH UPTURN
+0493 ; Ll # CYRILLIC SMALL LETTER GHE WITH STROKE
+0495 ; Ll # CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK
+0497 ; Ll # CYRILLIC SMALL LETTER ZHE WITH DESCENDER
+0499 ; Ll # CYRILLIC SMALL LETTER ZE WITH DESCENDER
+049B ; Ll # CYRILLIC SMALL LETTER KA WITH DESCENDER
+049D ; Ll # CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE
+049F ; Ll # CYRILLIC SMALL LETTER KA WITH STROKE
+04A1 ; Ll # CYRILLIC SMALL LETTER BASHKIR KA
+04A3 ; Ll # CYRILLIC SMALL LETTER EN WITH DESCENDER
+04A5 ; Ll # CYRILLIC SMALL LIGATURE EN GHE
+04A7 ; Ll # CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK
+04A9 ; Ll # CYRILLIC SMALL LETTER ABKHASIAN HA
+04AB ; Ll # CYRILLIC SMALL LETTER ES WITH DESCENDER
+04AD ; Ll # CYRILLIC SMALL LETTER TE WITH DESCENDER
+04AF ; Ll # CYRILLIC SMALL LETTER STRAIGHT U
+04B1 ; Ll # CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
+04B3 ; Ll # CYRILLIC SMALL LETTER HA WITH DESCENDER
+04B5 ; Ll # CYRILLIC SMALL LIGATURE TE TSE
+04B7 ; Ll # CYRILLIC SMALL LETTER CHE WITH DESCENDER
+04B9 ; Ll # CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE
+04BB ; Ll # CYRILLIC SMALL LETTER SHHA
+04BD ; Ll # CYRILLIC SMALL LETTER ABKHASIAN CHE
+04BF ; Ll # CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER
+04C2 ; Ll # CYRILLIC SMALL LETTER ZHE WITH BREVE
+04C4 ; Ll # CYRILLIC SMALL LETTER KA WITH HOOK
+04C6 ; Ll # CYRILLIC SMALL LETTER EL WITH TAIL
+04C8 ; Ll # CYRILLIC SMALL LETTER EN WITH HOOK
+04CA ; Ll # CYRILLIC SMALL LETTER EN WITH TAIL
+04CC ; Ll # CYRILLIC SMALL LETTER KHAKASSIAN CHE
+04CE..04CF ; Ll # [2] CYRILLIC SMALL LETTER EM WITH TAIL..CYRILLIC SMALL LETTER PALOCHKA
+04D1 ; Ll # CYRILLIC SMALL LETTER A WITH BREVE
+04D3 ; Ll # CYRILLIC SMALL LETTER A WITH DIAERESIS
+04D5 ; Ll # CYRILLIC SMALL LIGATURE A IE
+04D7 ; Ll # CYRILLIC SMALL LETTER IE WITH BREVE
+04D9 ; Ll # CYRILLIC SMALL LETTER SCHWA
+04DB ; Ll # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
+04DD ; Ll # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
+04DF ; Ll # CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+04E1 ; Ll # CYRILLIC SMALL LETTER ABKHASIAN DZE
+04E3 ; Ll # CYRILLIC SMALL LETTER I WITH MACRON
+04E5 ; Ll # CYRILLIC SMALL LETTER I WITH DIAERESIS
+04E7 ; Ll # CYRILLIC SMALL LETTER O WITH DIAERESIS
+04E9 ; Ll # CYRILLIC SMALL LETTER BARRED O
+04EB ; Ll # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
+04ED ; Ll # CYRILLIC SMALL LETTER E WITH DIAERESIS
+04EF ; Ll # CYRILLIC SMALL LETTER U WITH MACRON
+04F1 ; Ll # CYRILLIC SMALL LETTER U WITH DIAERESIS
+04F3 ; Ll # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
+04F5 ; Ll # CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+04F7 ; Ll # CYRILLIC SMALL LETTER GHE WITH DESCENDER
+04F9 ; Ll # CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+04FB ; Ll # CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK
+04FD ; Ll # CYRILLIC SMALL LETTER HA WITH HOOK
+04FF ; Ll # CYRILLIC SMALL LETTER HA WITH STROKE
+0501 ; Ll # CYRILLIC SMALL LETTER KOMI DE
+0503 ; Ll # CYRILLIC SMALL LETTER KOMI DJE
+0505 ; Ll # CYRILLIC SMALL LETTER KOMI ZJE
+0507 ; Ll # CYRILLIC SMALL LETTER KOMI DZJE
+0509 ; Ll # CYRILLIC SMALL LETTER KOMI LJE
+050B ; Ll # CYRILLIC SMALL LETTER KOMI NJE
+050D ; Ll # CYRILLIC SMALL LETTER KOMI SJE
+050F ; Ll # CYRILLIC SMALL LETTER KOMI TJE
+0511 ; Ll # CYRILLIC SMALL LETTER REVERSED ZE
+0513 ; Ll # CYRILLIC SMALL LETTER EL WITH HOOK
+0515 ; Ll # CYRILLIC SMALL LETTER LHA
+0517 ; Ll # CYRILLIC SMALL LETTER RHA
+0519 ; Ll # CYRILLIC SMALL LETTER YAE
+051B ; Ll # CYRILLIC SMALL LETTER QA
+051D ; Ll # CYRILLIC SMALL LETTER WE
+051F ; Ll # CYRILLIC SMALL LETTER ALEUT KA
+0521 ; Ll # CYRILLIC SMALL LETTER EL WITH MIDDLE HOOK
+0523 ; Ll # CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK
+0561..0587 ; Ll # [39] ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LIGATURE ECH YIWN
+1D00..1D2B ; Ll # [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL
+1D62..1D77 ; Ll # [22] LATIN SUBSCRIPT SMALL LETTER I..LATIN SMALL LETTER TURNED G
+1D79..1D9A ; Ll # [34] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK
+1E01 ; Ll # LATIN SMALL LETTER A WITH RING BELOW
+1E03 ; Ll # LATIN SMALL LETTER B WITH DOT ABOVE
+1E05 ; Ll # LATIN SMALL LETTER B WITH DOT BELOW
+1E07 ; Ll # LATIN SMALL LETTER B WITH LINE BELOW
+1E09 ; Ll # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
+1E0B ; Ll # LATIN SMALL LETTER D WITH DOT ABOVE
+1E0D ; Ll # LATIN SMALL LETTER D WITH DOT BELOW
+1E0F ; Ll # LATIN SMALL LETTER D WITH LINE BELOW
+1E11 ; Ll # LATIN SMALL LETTER D WITH CEDILLA
+1E13 ; Ll # LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW
+1E15 ; Ll # LATIN SMALL LETTER E WITH MACRON AND GRAVE
+1E17 ; Ll # LATIN SMALL LETTER E WITH MACRON AND ACUTE
+1E19 ; Ll # LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW
+1E1B ; Ll # LATIN SMALL LETTER E WITH TILDE BELOW
+1E1D ; Ll # LATIN SMALL LETTER E WITH CEDILLA AND BREVE
+1E1F ; Ll # LATIN SMALL LETTER F WITH DOT ABOVE
+1E21 ; Ll # LATIN SMALL LETTER G WITH MACRON
+1E23 ; Ll # LATIN SMALL LETTER H WITH DOT ABOVE
+1E25 ; Ll # LATIN SMALL LETTER H WITH DOT BELOW
+1E27 ; Ll # LATIN SMALL LETTER H WITH DIAERESIS
+1E29 ; Ll # LATIN SMALL LETTER H WITH CEDILLA
+1E2B ; Ll # LATIN SMALL LETTER H WITH BREVE BELOW
+1E2D ; Ll # LATIN SMALL LETTER I WITH TILDE BELOW
+1E2F ; Ll # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
+1E31 ; Ll # LATIN SMALL LETTER K WITH ACUTE
+1E33 ; Ll # LATIN SMALL LETTER K WITH DOT BELOW
+1E35 ; Ll # LATIN SMALL LETTER K WITH LINE BELOW
+1E37 ; Ll # LATIN SMALL LETTER L WITH DOT BELOW
+1E39 ; Ll # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
+1E3B ; Ll # LATIN SMALL LETTER L WITH LINE BELOW
+1E3D ; Ll # LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW
+1E3F ; Ll # LATIN SMALL LETTER M WITH ACUTE
+1E41 ; Ll # LATIN SMALL LETTER M WITH DOT ABOVE
+1E43 ; Ll # LATIN SMALL LETTER M WITH DOT BELOW
+1E45 ; Ll # LATIN SMALL LETTER N WITH DOT ABOVE
+1E47 ; Ll # LATIN SMALL LETTER N WITH DOT BELOW
+1E49 ; Ll # LATIN SMALL LETTER N WITH LINE BELOW
+1E4B ; Ll # LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW
+1E4D ; Ll # LATIN SMALL LETTER O WITH TILDE AND ACUTE
+1E4F ; Ll # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
+1E51 ; Ll # LATIN SMALL LETTER O WITH MACRON AND GRAVE
+1E53 ; Ll # LATIN SMALL LETTER O WITH MACRON AND ACUTE
+1E55 ; Ll # LATIN SMALL LETTER P WITH ACUTE
+1E57 ; Ll # LATIN SMALL LETTER P WITH DOT ABOVE
+1E59 ; Ll # LATIN SMALL LETTER R WITH DOT ABOVE
+1E5B ; Ll # LATIN SMALL LETTER R WITH DOT BELOW
+1E5D ; Ll # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
+1E5F ; Ll # LATIN SMALL LETTER R WITH LINE BELOW
+1E61 ; Ll # LATIN SMALL LETTER S WITH DOT ABOVE
+1E63 ; Ll # LATIN SMALL LETTER S WITH DOT BELOW
+1E65 ; Ll # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
+1E67 ; Ll # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE
+1E69 ; Ll # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
+1E6B ; Ll # LATIN SMALL LETTER T WITH DOT ABOVE
+1E6D ; Ll # LATIN SMALL LETTER T WITH DOT BELOW
+1E6F ; Ll # LATIN SMALL LETTER T WITH LINE BELOW
+1E71 ; Ll # LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW
+1E73 ; Ll # LATIN SMALL LETTER U WITH DIAERESIS BELOW
+1E75 ; Ll # LATIN SMALL LETTER U WITH TILDE BELOW
+1E77 ; Ll # LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW
+1E79 ; Ll # LATIN SMALL LETTER U WITH TILDE AND ACUTE
+1E7B ; Ll # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS
+1E7D ; Ll # LATIN SMALL LETTER V WITH TILDE
+1E7F ; Ll # LATIN SMALL LETTER V WITH DOT BELOW
+1E81 ; Ll # LATIN SMALL LETTER W WITH GRAVE
+1E83 ; Ll # LATIN SMALL LETTER W WITH ACUTE
+1E85 ; Ll # LATIN SMALL LETTER W WITH DIAERESIS
+1E87 ; Ll # LATIN SMALL LETTER W WITH DOT ABOVE
+1E89 ; Ll # LATIN SMALL LETTER W WITH DOT BELOW
+1E8B ; Ll # LATIN SMALL LETTER X WITH DOT ABOVE
+1E8D ; Ll # LATIN SMALL LETTER X WITH DIAERESIS
+1E8F ; Ll # LATIN SMALL LETTER Y WITH DOT ABOVE
+1E91 ; Ll # LATIN SMALL LETTER Z WITH CIRCUMFLEX
+1E93 ; Ll # LATIN SMALL LETTER Z WITH DOT BELOW
+1E95..1E9D ; Ll # [9] LATIN SMALL LETTER Z WITH LINE BELOW..LATIN SMALL LETTER LONG S WITH HIGH STROKE
+1E9F ; Ll # LATIN SMALL LETTER DELTA
+1EA1 ; Ll # LATIN SMALL LETTER A WITH DOT BELOW
+1EA3 ; Ll # LATIN SMALL LETTER A WITH HOOK ABOVE
+1EA5 ; Ll # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+1EA7 ; Ll # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+1EA9 ; Ll # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+1EAB ; Ll # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+1EAD ; Ll # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+1EAF ; Ll # LATIN SMALL LETTER A WITH BREVE AND ACUTE
+1EB1 ; Ll # LATIN SMALL LETTER A WITH BREVE AND GRAVE
+1EB3 ; Ll # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+1EB5 ; Ll # LATIN SMALL LETTER A WITH BREVE AND TILDE
+1EB7 ; Ll # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+1EB9 ; Ll # LATIN SMALL LETTER E WITH DOT BELOW
+1EBB ; Ll # LATIN SMALL LETTER E WITH HOOK ABOVE
+1EBD ; Ll # LATIN SMALL LETTER E WITH TILDE
+1EBF ; Ll # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EC1 ; Ll # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EC3 ; Ll # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC5 ; Ll # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC7 ; Ll # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1EC9 ; Ll # LATIN SMALL LETTER I WITH HOOK ABOVE
+1ECB ; Ll # LATIN SMALL LETTER I WITH DOT BELOW
+1ECD ; Ll # LATIN SMALL LETTER O WITH DOT BELOW
+1ECF ; Ll # LATIN SMALL LETTER O WITH HOOK ABOVE
+1ED1 ; Ll # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED3 ; Ll # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED5 ; Ll # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED7 ; Ll # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED9 ; Ll # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1EDB ; Ll # LATIN SMALL LETTER O WITH HORN AND ACUTE
+1EDD ; Ll # LATIN SMALL LETTER O WITH HORN AND GRAVE
+1EDF ; Ll # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
+1EE1 ; Ll # LATIN SMALL LETTER O WITH HORN AND TILDE
+1EE3 ; Ll # LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+1EE5 ; Ll # LATIN SMALL LETTER U WITH DOT BELOW
+1EE7 ; Ll # LATIN SMALL LETTER U WITH HOOK ABOVE
+1EE9 ; Ll # LATIN SMALL LETTER U WITH HORN AND ACUTE
+1EEB ; Ll # LATIN SMALL LETTER U WITH HORN AND GRAVE
+1EED ; Ll # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
+1EEF ; Ll # LATIN SMALL LETTER U WITH HORN AND TILDE
+1EF1 ; Ll # LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+1EF3 ; Ll # LATIN SMALL LETTER Y WITH GRAVE
+1EF5 ; Ll # LATIN SMALL LETTER Y WITH DOT BELOW
+1EF7 ; Ll # LATIN SMALL LETTER Y WITH HOOK ABOVE
+1EF9 ; Ll # LATIN SMALL LETTER Y WITH TILDE
+1EFB ; Ll # LATIN SMALL LETTER MIDDLE-WELSH LL
+1EFD ; Ll # LATIN SMALL LETTER MIDDLE-WELSH V
+1EFF..1F07 ; Ll # [9] LATIN SMALL LETTER Y WITH LOOP..GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
+1F10..1F15 ; Ll # [6] GREEK SMALL LETTER EPSILON WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+1F20..1F27 ; Ll # [8] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
+1F30..1F37 ; Ll # [8] GREEK SMALL LETTER IOTA WITH PSILI..GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
+1F40..1F45 ; Ll # [6] GREEK SMALL LETTER OMICRON WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+1F50..1F57 ; Ll # [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1F60..1F67 ; Ll # [8] GREEK SMALL LETTER OMEGA WITH PSILI..GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
+1F70..1F7D ; Ll # [14] GREEK SMALL LETTER ALPHA WITH VARIA..GREEK SMALL LETTER OMEGA WITH OXIA
+1F80..1F87 ; Ll # [8] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1F90..1F97 ; Ll # [8] GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1FA0..1FA7 ; Ll # [8] GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1FB0..1FB4 ; Ll # [5] GREEK SMALL LETTER ALPHA WITH VRACHY..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+1FB6..1FB7 ; Ll # [2] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FBE ; Ll # GREEK PROSGEGRAMMENI
+1FC2..1FC4 ; Ll # [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+1FC6..1FC7 ; Ll # [2] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FD0..1FD3 ; Ll # [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FD6..1FD7 ; Ll # [2] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+1FE0..1FE7 ; Ll # [8] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+1FF2..1FF4 ; Ll # [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+1FF6..1FF7 ; Ll # [2] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+2071 ; Ll # SUPERSCRIPT LATIN SMALL LETTER I
+207F ; Ll # SUPERSCRIPT LATIN SMALL LETTER N
+210A ; Ll # SCRIPT SMALL G
+210E..210F ; Ll # [2] PLANCK CONSTANT..PLANCK CONSTANT OVER TWO PI
+2113 ; Ll # SCRIPT SMALL L
+212F ; Ll # SCRIPT SMALL E
+2134 ; Ll # SCRIPT SMALL O
+2139 ; Ll # INFORMATION SOURCE
+213C..213D ; Ll # [2] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK SMALL GAMMA
+2146..2149 ; Ll # [4] DOUBLE-STRUCK ITALIC SMALL D..DOUBLE-STRUCK ITALIC SMALL J
+214E ; Ll # TURNED SMALL F
+2184 ; Ll # LATIN SMALL LETTER REVERSED C
+2C30..2C5E ; Ll # [47] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE
+2C61 ; Ll # LATIN SMALL LETTER L WITH DOUBLE BAR
+2C65..2C66 ; Ll # [2] LATIN SMALL LETTER A WITH STROKE..LATIN SMALL LETTER T WITH DIAGONAL STROKE
+2C68 ; Ll # LATIN SMALL LETTER H WITH DESCENDER
+2C6A ; Ll # LATIN SMALL LETTER K WITH DESCENDER
+2C6C ; Ll # LATIN SMALL LETTER Z WITH DESCENDER
+2C71 ; Ll # LATIN SMALL LETTER V WITH RIGHT HOOK
+2C73..2C74 ; Ll # [2] LATIN SMALL LETTER W WITH HOOK..LATIN SMALL LETTER V WITH CURL
+2C76..2C7C ; Ll # [7] LATIN SMALL LETTER HALF H..LATIN SUBSCRIPT SMALL LETTER J
+2C81 ; Ll # COPTIC SMALL LETTER ALFA
+2C83 ; Ll # COPTIC SMALL LETTER VIDA
+2C85 ; Ll # COPTIC SMALL LETTER GAMMA
+2C87 ; Ll # COPTIC SMALL LETTER DALDA
+2C89 ; Ll # COPTIC SMALL LETTER EIE
+2C8B ; Ll # COPTIC SMALL LETTER SOU
+2C8D ; Ll # COPTIC SMALL LETTER ZATA
+2C8F ; Ll # COPTIC SMALL LETTER HATE
+2C91 ; Ll # COPTIC SMALL LETTER THETHE
+2C93 ; Ll # COPTIC SMALL LETTER IAUDA
+2C95 ; Ll # COPTIC SMALL LETTER KAPA
+2C97 ; Ll # COPTIC SMALL LETTER LAULA
+2C99 ; Ll # COPTIC SMALL LETTER MI
+2C9B ; Ll # COPTIC SMALL LETTER NI
+2C9D ; Ll # COPTIC SMALL LETTER KSI
+2C9F ; Ll # COPTIC SMALL LETTER O
+2CA1 ; Ll # COPTIC SMALL LETTER PI
+2CA3 ; Ll # COPTIC SMALL LETTER RO
+2CA5 ; Ll # COPTIC SMALL LETTER SIMA
+2CA7 ; Ll # COPTIC SMALL LETTER TAU
+2CA9 ; Ll # COPTIC SMALL LETTER UA
+2CAB ; Ll # COPTIC SMALL LETTER FI
+2CAD ; Ll # COPTIC SMALL LETTER KHI
+2CAF ; Ll # COPTIC SMALL LETTER PSI
+2CB1 ; Ll # COPTIC SMALL LETTER OOU
+2CB3 ; Ll # COPTIC SMALL LETTER DIALECT-P ALEF
+2CB5 ; Ll # COPTIC SMALL LETTER OLD COPTIC AIN
+2CB7 ; Ll # COPTIC SMALL LETTER CRYPTOGRAMMIC EIE
+2CB9 ; Ll # COPTIC SMALL LETTER DIALECT-P KAPA
+2CBB ; Ll # COPTIC SMALL LETTER DIALECT-P NI
+2CBD ; Ll # COPTIC SMALL LETTER CRYPTOGRAMMIC NI
+2CBF ; Ll # COPTIC SMALL LETTER OLD COPTIC OOU
+2CC1 ; Ll # COPTIC SMALL LETTER SAMPI
+2CC3 ; Ll # COPTIC SMALL LETTER CROSSED SHEI
+2CC5 ; Ll # COPTIC SMALL LETTER OLD COPTIC SHEI
+2CC7 ; Ll # COPTIC SMALL LETTER OLD COPTIC ESH
+2CC9 ; Ll # COPTIC SMALL LETTER AKHMIMIC KHEI
+2CCB ; Ll # COPTIC SMALL LETTER DIALECT-P HORI
+2CCD ; Ll # COPTIC SMALL LETTER OLD COPTIC HORI
+2CCF ; Ll # COPTIC SMALL LETTER OLD COPTIC HA
+2CD1 ; Ll # COPTIC SMALL LETTER L-SHAPED HA
+2CD3 ; Ll # COPTIC SMALL LETTER OLD COPTIC HEI
+2CD5 ; Ll # COPTIC SMALL LETTER OLD COPTIC HAT
+2CD7 ; Ll # COPTIC SMALL LETTER OLD COPTIC GANGIA
+2CD9 ; Ll # COPTIC SMALL LETTER OLD COPTIC DJA
+2CDB ; Ll # COPTIC SMALL LETTER OLD COPTIC SHIMA
+2CDD ; Ll # COPTIC SMALL LETTER OLD NUBIAN SHIMA
+2CDF ; Ll # COPTIC SMALL LETTER OLD NUBIAN NGI
+2CE1 ; Ll # COPTIC SMALL LETTER OLD NUBIAN NYI
+2CE3..2CE4 ; Ll # [2] COPTIC SMALL LETTER OLD NUBIAN WAU..COPTIC SYMBOL KAI
+2D00..2D25 ; Ll # [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE
+A641 ; Ll # CYRILLIC SMALL LETTER ZEMLYA
+A643 ; Ll # CYRILLIC SMALL LETTER DZELO
+A645 ; Ll # CYRILLIC SMALL LETTER REVERSED DZE
+A647 ; Ll # CYRILLIC SMALL LETTER IOTA
+A649 ; Ll # CYRILLIC SMALL LETTER DJERV
+A64B ; Ll # CYRILLIC SMALL LETTER MONOGRAPH UK
+A64D ; Ll # CYRILLIC SMALL LETTER BROAD OMEGA
+A64F ; Ll # CYRILLIC SMALL LETTER NEUTRAL YER
+A651 ; Ll # CYRILLIC SMALL LETTER YERU WITH BACK YER
+A653 ; Ll # CYRILLIC SMALL LETTER IOTIFIED YAT
+A655 ; Ll # CYRILLIC SMALL LETTER REVERSED YU
+A657 ; Ll # CYRILLIC SMALL LETTER IOTIFIED A
+A659 ; Ll # CYRILLIC SMALL LETTER CLOSED LITTLE YUS
+A65B ; Ll # CYRILLIC SMALL LETTER BLENDED YUS
+A65D ; Ll # CYRILLIC SMALL LETTER IOTIFIED CLOSED LITTLE YUS
+A65F ; Ll # CYRILLIC SMALL LETTER YN
+A663 ; Ll # CYRILLIC SMALL LETTER SOFT DE
+A665 ; Ll # CYRILLIC SMALL LETTER SOFT EL
+A667 ; Ll # CYRILLIC SMALL LETTER SOFT EM
+A669 ; Ll # CYRILLIC SMALL LETTER MONOCULAR O
+A66B ; Ll # CYRILLIC SMALL LETTER BINOCULAR O
+A66D ; Ll # CYRILLIC SMALL LETTER DOUBLE MONOCULAR O
+A681 ; Ll # CYRILLIC SMALL LETTER DWE
+A683 ; Ll # CYRILLIC SMALL LETTER DZWE
+A685 ; Ll # CYRILLIC SMALL LETTER ZHWE
+A687 ; Ll # CYRILLIC SMALL LETTER CCHE
+A689 ; Ll # CYRILLIC SMALL LETTER DZZE
+A68B ; Ll # CYRILLIC SMALL LETTER TE WITH MIDDLE HOOK
+A68D ; Ll # CYRILLIC SMALL LETTER TWE
+A68F ; Ll # CYRILLIC SMALL LETTER TSWE
+A691 ; Ll # CYRILLIC SMALL LETTER TSSE
+A693 ; Ll # CYRILLIC SMALL LETTER TCHE
+A695 ; Ll # CYRILLIC SMALL LETTER HWE
+A697 ; Ll # CYRILLIC SMALL LETTER SHWE
+A723 ; Ll # LATIN SMALL LETTER EGYPTOLOGICAL ALEF
+A725 ; Ll # LATIN SMALL LETTER EGYPTOLOGICAL AIN
+A727 ; Ll # LATIN SMALL LETTER HENG
+A729 ; Ll # LATIN SMALL LETTER TZ
+A72B ; Ll # LATIN SMALL LETTER TRESILLO
+A72D ; Ll # LATIN SMALL LETTER CUATRILLO
+A72F..A731 ; Ll # [3] LATIN SMALL LETTER CUATRILLO WITH COMMA..LATIN LETTER SMALL CAPITAL S
+A733 ; Ll # LATIN SMALL LETTER AA
+A735 ; Ll # LATIN SMALL LETTER AO
+A737 ; Ll # LATIN SMALL LETTER AU
+A739 ; Ll # LATIN SMALL LETTER AV
+A73B ; Ll # LATIN SMALL LETTER AV WITH HORIZONTAL BAR
+A73D ; Ll # LATIN SMALL LETTER AY
+A73F ; Ll # LATIN SMALL LETTER REVERSED C WITH DOT
+A741 ; Ll # LATIN SMALL LETTER K WITH STROKE
+A743 ; Ll # LATIN SMALL LETTER K WITH DIAGONAL STROKE
+A745 ; Ll # LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE
+A747 ; Ll # LATIN SMALL LETTER BROKEN L
+A749 ; Ll # LATIN SMALL LETTER L WITH HIGH STROKE
+A74B ; Ll # LATIN SMALL LETTER O WITH LONG STROKE OVERLAY
+A74D ; Ll # LATIN SMALL LETTER O WITH LOOP
+A74F ; Ll # LATIN SMALL LETTER OO
+A751 ; Ll # LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER
+A753 ; Ll # LATIN SMALL LETTER P WITH FLOURISH
+A755 ; Ll # LATIN SMALL LETTER P WITH SQUIRREL TAIL
+A757 ; Ll # LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER
+A759 ; Ll # LATIN SMALL LETTER Q WITH DIAGONAL STROKE
+A75B ; Ll # LATIN SMALL LETTER R ROTUNDA
+A75D ; Ll # LATIN SMALL LETTER RUM ROTUNDA
+A75F ; Ll # LATIN SMALL LETTER V WITH DIAGONAL STROKE
+A761 ; Ll # LATIN SMALL LETTER VY
+A763 ; Ll # LATIN SMALL LETTER VISIGOTHIC Z
+A765 ; Ll # LATIN SMALL LETTER THORN WITH STROKE
+A767 ; Ll # LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER
+A769 ; Ll # LATIN SMALL LETTER VEND
+A76B ; Ll # LATIN SMALL LETTER ET
+A76D ; Ll # LATIN SMALL LETTER IS
+A76F ; Ll # LATIN SMALL LETTER CON
+A771..A778 ; Ll # [8] LATIN SMALL LETTER DUM..LATIN SMALL LETTER UM
+A77A ; Ll # LATIN SMALL LETTER INSULAR D
+A77C ; Ll # LATIN SMALL LETTER INSULAR F
+A77F ; Ll # LATIN SMALL LETTER TURNED INSULAR G
+A781 ; Ll # LATIN SMALL LETTER TURNED L
+A783 ; Ll # LATIN SMALL LETTER INSULAR R
+A785 ; Ll # LATIN SMALL LETTER INSULAR S
+A787 ; Ll # LATIN SMALL LETTER INSULAR T
+A78C ; Ll # LATIN SMALL LETTER SALTILLO
+FB00..FB06 ; Ll # [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
+FB13..FB17 ; Ll # [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
+FF41..FF5A ; Ll # [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
+10428..1044F ; Ll # [40] DESERET SMALL LETTER LONG I..DESERET SMALL LETTER EW
+1D41A..1D433 ; Ll # [26] MATHEMATICAL BOLD SMALL A..MATHEMATICAL BOLD SMALL Z
+1D44E..1D454 ; Ll # [7] MATHEMATICAL ITALIC SMALL A..MATHEMATICAL ITALIC SMALL G
+1D456..1D467 ; Ll # [18] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL ITALIC SMALL Z
+1D482..1D49B ; Ll # [26] MATHEMATICAL BOLD ITALIC SMALL A..MATHEMATICAL BOLD ITALIC SMALL Z
+1D4B6..1D4B9 ; Ll # [4] MATHEMATICAL SCRIPT SMALL A..MATHEMATICAL SCRIPT SMALL D
+1D4BB ; Ll # MATHEMATICAL SCRIPT SMALL F
+1D4BD..1D4C3 ; Ll # [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N
+1D4C5..1D4CF ; Ll # [11] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL SCRIPT SMALL Z
+1D4EA..1D503 ; Ll # [26] MATHEMATICAL BOLD SCRIPT SMALL A..MATHEMATICAL BOLD SCRIPT SMALL Z
+1D51E..1D537 ; Ll # [26] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL FRAKTUR SMALL Z
+1D552..1D56B ; Ll # [26] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL DOUBLE-STRUCK SMALL Z
+1D586..1D59F ; Ll # [26] MATHEMATICAL BOLD FRAKTUR SMALL A..MATHEMATICAL BOLD FRAKTUR SMALL Z
+1D5BA..1D5D3 ; Ll # [26] MATHEMATICAL SANS-SERIF SMALL A..MATHEMATICAL SANS-SERIF SMALL Z
+1D5EE..1D607 ; Ll # [26] MATHEMATICAL SANS-SERIF BOLD SMALL A..MATHEMATICAL SANS-SERIF BOLD SMALL Z
+1D622..1D63B ; Ll # [26] MATHEMATICAL SANS-SERIF ITALIC SMALL A..MATHEMATICAL SANS-SERIF ITALIC SMALL Z
+1D656..1D66F ; Ll # [26] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z
+1D68A..1D6A5 ; Ll # [28] MATHEMATICAL MONOSPACE SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J
+1D6C2..1D6DA ; Ll # [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA
+1D6DC..1D6E1 ; Ll # [6] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL BOLD PI SYMBOL
+1D6FC..1D714 ; Ll # [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA
+1D716..1D71B ; Ll # [6] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL ITALIC PI SYMBOL
+1D736..1D74E ; Ll # [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA
+1D750..1D755 ; Ll # [6] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC PI SYMBOL
+1D770..1D788 ; Ll # [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
+1D78A..1D78F ; Ll # [6] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD PI SYMBOL
+1D7AA..1D7C2 ; Ll # [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
+1D7C4..1D7C9 ; Ll # [6] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL
+1D7CB ; Ll # MATHEMATICAL BOLD SMALL DIGAMMA
+
+# Total code points: 1748
+
+# ================================================
+
+# General_Category=Titlecase_Letter
+
+01C5 ; Lt # LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
+01C8 ; Lt # LATIN CAPITAL LETTER L WITH SMALL LETTER J
+01CB ; Lt # LATIN CAPITAL LETTER N WITH SMALL LETTER J
+01F2 ; Lt # LATIN CAPITAL LETTER D WITH SMALL LETTER Z
+1F88..1F8F ; Lt # [8] GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI..GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1F98..1F9F ; Lt # [8] GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI..GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1FA8..1FAF ; Lt # [8] GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI..GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1FBC ; Lt # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+1FCC ; Lt # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+1FFC ; Lt # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+
+# Total code points: 31
+
+# ================================================
+
+# General_Category=Modifier_Letter
+
+02B0..02C1 ; Lm # [18] MODIFIER LETTER SMALL H..MODIFIER LETTER REVERSED GLOTTAL STOP
+02C6..02D1 ; Lm # [12] MODIFIER LETTER CIRCUMFLEX ACCENT..MODIFIER LETTER HALF TRIANGULAR COLON
+02E0..02E4 ; Lm # [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+02EC ; Lm # MODIFIER LETTER VOICING
+02EE ; Lm # MODIFIER LETTER DOUBLE APOSTROPHE
+0374 ; Lm # GREEK NUMERAL SIGN
+037A ; Lm # GREEK YPOGEGRAMMENI
+0559 ; Lm # ARMENIAN MODIFIER LETTER LEFT HALF RING
+0640 ; Lm # ARABIC TATWEEL
+06E5..06E6 ; Lm # [2] ARABIC SMALL WAW..ARABIC SMALL YEH
+07F4..07F5 ; Lm # [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE
+07FA ; Lm # NKO LAJANYALAN
+0971 ; Lm # DEVANAGARI SIGN HIGH SPACING DOT
+0E46 ; Lm # THAI CHARACTER MAIYAMOK
+0EC6 ; Lm # LAO KO LA
+10FC ; Lm # MODIFIER LETTER GEORGIAN NAR
+17D7 ; Lm # KHMER SIGN LEK TOO
+1843 ; Lm # MONGOLIAN LETTER TODO LONG VOWEL SIGN
+1C78..1C7D ; Lm # [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD
+1D2C..1D61 ; Lm # [54] MODIFIER LETTER CAPITAL A..MODIFIER LETTER SMALL CHI
+1D78 ; Lm # MODIFIER LETTER CYRILLIC EN
+1D9B..1DBF ; Lm # [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA
+2090..2094 ; Lm # [5] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER SCHWA
+2C7D ; Lm # MODIFIER LETTER CAPITAL V
+2D6F ; Lm # TIFINAGH MODIFIER LETTER LABIALIZATION MARK
+2E2F ; Lm # VERTICAL TILDE
+3005 ; Lm # IDEOGRAPHIC ITERATION MARK
+3031..3035 ; Lm # [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF
+303B ; Lm # VERTICAL IDEOGRAPHIC ITERATION MARK
+309D..309E ; Lm # [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK
+30FC..30FE ; Lm # [3] KATAKANA-HIRAGANA PROLONGED SOUND MARK..KATAKANA VOICED ITERATION MARK
+A015 ; Lm # YI SYLLABLE WU
+A60C ; Lm # VAI SYLLABLE LENGTHENER
+A67F ; Lm # CYRILLIC PAYEROK
+A717..A71F ; Lm # [9] MODIFIER LETTER DOT VERTICAL BAR..MODIFIER LETTER LOW INVERTED EXCLAMATION MARK
+A770 ; Lm # MODIFIER LETTER US
+A788 ; Lm # MODIFIER LETTER LOW CIRCUMFLEX ACCENT
+FF70 ; Lm # HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+FF9E..FF9F ; Lm # [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+
+# Total code points: 187
+
+# ================================================
+
+# General_Category=Other_Letter
+
+01BB ; Lo # LATIN LETTER TWO WITH STROKE
+01C0..01C3 ; Lo # [4] LATIN LETTER DENTAL CLICK..LATIN LETTER RETROFLEX CLICK
+0294 ; Lo # LATIN LETTER GLOTTAL STOP
+05D0..05EA ; Lo # [27] HEBREW LETTER ALEF..HEBREW LETTER TAV
+05F0..05F2 ; Lo # [3] HEBREW LIGATURE YIDDISH DOUBLE VAV..HEBREW LIGATURE YIDDISH DOUBLE YOD
+0621..063F ; Lo # [31] ARABIC LETTER HAMZA..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE
+0641..064A ; Lo # [10] ARABIC LETTER FEH..ARABIC LETTER YEH
+066E..066F ; Lo # [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF
+0671..06D3 ; Lo # [99] ARABIC LETTER ALEF WASLA..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+06D5 ; Lo # ARABIC LETTER AE
+06EE..06EF ; Lo # [2] ARABIC LETTER DAL WITH INVERTED V..ARABIC LETTER REH WITH INVERTED V
+06FA..06FC ; Lo # [3] ARABIC LETTER SHEEN WITH DOT BELOW..ARABIC LETTER GHAIN WITH DOT BELOW
+06FF ; Lo # ARABIC LETTER HEH WITH INVERTED V
+0710 ; Lo # SYRIAC LETTER ALAPH
+0712..072F ; Lo # [30] SYRIAC LETTER BETH..SYRIAC LETTER PERSIAN DHALATH
+074D..07A5 ; Lo # [89] SYRIAC LETTER SOGDIAN ZHAIN..THAANA LETTER WAAVU
+07B1 ; Lo # THAANA LETTER NAA
+07CA..07EA ; Lo # [33] NKO LETTER A..NKO LETTER JONA RA
+0904..0939 ; Lo # [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA
+093D ; Lo # DEVANAGARI SIGN AVAGRAHA
+0950 ; Lo # DEVANAGARI OM
+0958..0961 ; Lo # [10] DEVANAGARI LETTER QA..DEVANAGARI LETTER VOCALIC LL
+0972 ; Lo # DEVANAGARI LETTER CANDRA A
+097B..097F ; Lo # [5] DEVANAGARI LETTER GGA..DEVANAGARI LETTER BBA
+0985..098C ; Lo # [8] BENGALI LETTER A..BENGALI LETTER VOCALIC L
+098F..0990 ; Lo # [2] BENGALI LETTER E..BENGALI LETTER AI
+0993..09A8 ; Lo # [22] BENGALI LETTER O..BENGALI LETTER NA
+09AA..09B0 ; Lo # [7] BENGALI LETTER PA..BENGALI LETTER RA
+09B2 ; Lo # BENGALI LETTER LA
+09B6..09B9 ; Lo # [4] BENGALI LETTER SHA..BENGALI LETTER HA
+09BD ; Lo # BENGALI SIGN AVAGRAHA
+09CE ; Lo # BENGALI LETTER KHANDA TA
+09DC..09DD ; Lo # [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+09DF..09E1 ; Lo # [3] BENGALI LETTER YYA..BENGALI LETTER VOCALIC LL
+09F0..09F1 ; Lo # [2] BENGALI LETTER RA WITH MIDDLE DIAGONAL..BENGALI LETTER RA WITH LOWER DIAGONAL
+0A05..0A0A ; Lo # [6] GURMUKHI LETTER A..GURMUKHI LETTER UU
+0A0F..0A10 ; Lo # [2] GURMUKHI LETTER EE..GURMUKHI LETTER AI
+0A13..0A28 ; Lo # [22] GURMUKHI LETTER OO..GURMUKHI LETTER NA
+0A2A..0A30 ; Lo # [7] GURMUKHI LETTER PA..GURMUKHI LETTER RA
+0A32..0A33 ; Lo # [2] GURMUKHI LETTER LA..GURMUKHI LETTER LLA
+0A35..0A36 ; Lo # [2] GURMUKHI LETTER VA..GURMUKHI LETTER SHA
+0A38..0A39 ; Lo # [2] GURMUKHI LETTER SA..GURMUKHI LETTER HA
+0A59..0A5C ; Lo # [4] GURMUKHI LETTER KHHA..GURMUKHI LETTER RRA
+0A5E ; Lo # GURMUKHI LETTER FA
+0A72..0A74 ; Lo # [3] GURMUKHI IRI..GURMUKHI EK ONKAR
+0A85..0A8D ; Lo # [9] GUJARATI LETTER A..GUJARATI VOWEL CANDRA E
+0A8F..0A91 ; Lo # [3] GUJARATI LETTER E..GUJARATI VOWEL CANDRA O
+0A93..0AA8 ; Lo # [22] GUJARATI LETTER O..GUJARATI LETTER NA
+0AAA..0AB0 ; Lo # [7] GUJARATI LETTER PA..GUJARATI LETTER RA
+0AB2..0AB3 ; Lo # [2] GUJARATI LETTER LA..GUJARATI LETTER LLA
+0AB5..0AB9 ; Lo # [5] GUJARATI LETTER VA..GUJARATI LETTER HA
+0ABD ; Lo # GUJARATI SIGN AVAGRAHA
+0AD0 ; Lo # GUJARATI OM
+0AE0..0AE1 ; Lo # [2] GUJARATI LETTER VOCALIC RR..GUJARATI LETTER VOCALIC LL
+0B05..0B0C ; Lo # [8] ORIYA LETTER A..ORIYA LETTER VOCALIC L
+0B0F..0B10 ; Lo # [2] ORIYA LETTER E..ORIYA LETTER AI
+0B13..0B28 ; Lo # [22] ORIYA LETTER O..ORIYA LETTER NA
+0B2A..0B30 ; Lo # [7] ORIYA LETTER PA..ORIYA LETTER RA
+0B32..0B33 ; Lo # [2] ORIYA LETTER LA..ORIYA LETTER LLA
+0B35..0B39 ; Lo # [5] ORIYA LETTER VA..ORIYA LETTER HA
+0B3D ; Lo # ORIYA SIGN AVAGRAHA
+0B5C..0B5D ; Lo # [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+0B5F..0B61 ; Lo # [3] ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL
+0B71 ; Lo # ORIYA LETTER WA
+0B83 ; Lo # TAMIL SIGN VISARGA
+0B85..0B8A ; Lo # [6] TAMIL LETTER A..TAMIL LETTER UU
+0B8E..0B90 ; Lo # [3] TAMIL LETTER E..TAMIL LETTER AI
+0B92..0B95 ; Lo # [4] TAMIL LETTER O..TAMIL LETTER KA
+0B99..0B9A ; Lo # [2] TAMIL LETTER NGA..TAMIL LETTER CA
+0B9C ; Lo # TAMIL LETTER JA
+0B9E..0B9F ; Lo # [2] TAMIL LETTER NYA..TAMIL LETTER TTA
+0BA3..0BA4 ; Lo # [2] TAMIL LETTER NNA..TAMIL LETTER TA
+0BA8..0BAA ; Lo # [3] TAMIL LETTER NA..TAMIL LETTER PA
+0BAE..0BB9 ; Lo # [12] TAMIL LETTER MA..TAMIL LETTER HA
+0BD0 ; Lo # TAMIL OM
+0C05..0C0C ; Lo # [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L
+0C0E..0C10 ; Lo # [3] TELUGU LETTER E..TELUGU LETTER AI
+0C12..0C28 ; Lo # [23] TELUGU LETTER O..TELUGU LETTER NA
+0C2A..0C33 ; Lo # [10] TELUGU LETTER PA..TELUGU LETTER LLA
+0C35..0C39 ; Lo # [5] TELUGU LETTER VA..TELUGU LETTER HA
+0C3D ; Lo # TELUGU SIGN AVAGRAHA
+0C58..0C59 ; Lo # [2] TELUGU LETTER TSA..TELUGU LETTER DZA
+0C60..0C61 ; Lo # [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL
+0C85..0C8C ; Lo # [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L
+0C8E..0C90 ; Lo # [3] KANNADA LETTER E..KANNADA LETTER AI
+0C92..0CA8 ; Lo # [23] KANNADA LETTER O..KANNADA LETTER NA
+0CAA..0CB3 ; Lo # [10] KANNADA LETTER PA..KANNADA LETTER LLA
+0CB5..0CB9 ; Lo # [5] KANNADA LETTER VA..KANNADA LETTER HA
+0CBD ; Lo # KANNADA SIGN AVAGRAHA
+0CDE ; Lo # KANNADA LETTER FA
+0CE0..0CE1 ; Lo # [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL
+0D05..0D0C ; Lo # [8] MALAYALAM LETTER A..MALAYALAM LETTER VOCALIC L
+0D0E..0D10 ; Lo # [3] MALAYALAM LETTER E..MALAYALAM LETTER AI
+0D12..0D28 ; Lo # [23] MALAYALAM LETTER O..MALAYALAM LETTER NA
+0D2A..0D39 ; Lo # [16] MALAYALAM LETTER PA..MALAYALAM LETTER HA
+0D3D ; Lo # MALAYALAM SIGN AVAGRAHA
+0D60..0D61 ; Lo # [2] MALAYALAM LETTER VOCALIC RR..MALAYALAM LETTER VOCALIC LL
+0D7A..0D7F ; Lo # [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K
+0D85..0D96 ; Lo # [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA
+0D9A..0DB1 ; Lo # [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA
+0DB3..0DBB ; Lo # [9] SINHALA LETTER SANYAKA DAYANNA..SINHALA LETTER RAYANNA
+0DBD ; Lo # SINHALA LETTER DANTAJA LAYANNA
+0DC0..0DC6 ; Lo # [7] SINHALA LETTER VAYANNA..SINHALA LETTER FAYANNA
+0E01..0E30 ; Lo # [48] THAI CHARACTER KO KAI..THAI CHARACTER SARA A
+0E32..0E33 ; Lo # [2] THAI CHARACTER SARA AA..THAI CHARACTER SARA AM
+0E40..0E45 ; Lo # [6] THAI CHARACTER SARA E..THAI CHARACTER LAKKHANGYAO
+0E81..0E82 ; Lo # [2] LAO LETTER KO..LAO LETTER KHO SUNG
+0E84 ; Lo # LAO LETTER KHO TAM
+0E87..0E88 ; Lo # [2] LAO LETTER NGO..LAO LETTER CO
+0E8A ; Lo # LAO LETTER SO TAM
+0E8D ; Lo # LAO LETTER NYO
+0E94..0E97 ; Lo # [4] LAO LETTER DO..LAO LETTER THO TAM
+0E99..0E9F ; Lo # [7] LAO LETTER NO..LAO LETTER FO SUNG
+0EA1..0EA3 ; Lo # [3] LAO LETTER MO..LAO LETTER LO LING
+0EA5 ; Lo # LAO LETTER LO LOOT
+0EA7 ; Lo # LAO LETTER WO
+0EAA..0EAB ; Lo # [2] LAO LETTER SO SUNG..LAO LETTER HO SUNG
+0EAD..0EB0 ; Lo # [4] LAO LETTER O..LAO VOWEL SIGN A
+0EB2..0EB3 ; Lo # [2] LAO VOWEL SIGN AA..LAO VOWEL SIGN AM
+0EBD ; Lo # LAO SEMIVOWEL SIGN NYO
+0EC0..0EC4 ; Lo # [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI
+0EDC..0EDD ; Lo # [2] LAO HO NO..LAO HO MO
+0F00 ; Lo # TIBETAN SYLLABLE OM
+0F40..0F47 ; Lo # [8] TIBETAN LETTER KA..TIBETAN LETTER JA
+0F49..0F6C ; Lo # [36] TIBETAN LETTER NYA..TIBETAN LETTER RRA
+0F88..0F8B ; Lo # [4] TIBETAN SIGN LCE TSA CAN..TIBETAN SIGN GRU MED RGYINGS
+1000..102A ; Lo # [43] MYANMAR LETTER KA..MYANMAR LETTER AU
+103F ; Lo # MYANMAR LETTER GREAT SA
+1050..1055 ; Lo # [6] MYANMAR LETTER SHA..MYANMAR LETTER VOCALIC LL
+105A..105D ; Lo # [4] MYANMAR LETTER MON NGA..MYANMAR LETTER MON BBE
+1061 ; Lo # MYANMAR LETTER SGAW KAREN SHA
+1065..1066 ; Lo # [2] MYANMAR LETTER WESTERN PWO KAREN THA..MYANMAR LETTER WESTERN PWO KAREN PWA
+106E..1070 ; Lo # [3] MYANMAR LETTER EASTERN PWO KAREN NNA..MYANMAR LETTER EASTERN PWO KAREN GHWA
+1075..1081 ; Lo # [13] MYANMAR LETTER SHAN KA..MYANMAR LETTER SHAN HA
+108E ; Lo # MYANMAR LETTER RUMAI PALAUNG FA
+10D0..10FA ; Lo # [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN
+1100..1159 ; Lo # [90] HANGUL CHOSEONG KIYEOK..HANGUL CHOSEONG YEORINHIEUH
+115F..11A2 ; Lo # [68] HANGUL CHOSEONG FILLER..HANGUL JUNGSEONG SSANGARAEA
+11A8..11F9 ; Lo # [82] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG YEORINHIEUH
+1200..1248 ; Lo # [73] ETHIOPIC SYLLABLE HA..ETHIOPIC SYLLABLE QWA
+124A..124D ; Lo # [4] ETHIOPIC SYLLABLE QWI..ETHIOPIC SYLLABLE QWE
+1250..1256 ; Lo # [7] ETHIOPIC SYLLABLE QHA..ETHIOPIC SYLLABLE QHO
+1258 ; Lo # ETHIOPIC SYLLABLE QHWA
+125A..125D ; Lo # [4] ETHIOPIC SYLLABLE QHWI..ETHIOPIC SYLLABLE QHWE
+1260..1288 ; Lo # [41] ETHIOPIC SYLLABLE BA..ETHIOPIC SYLLABLE XWA
+128A..128D ; Lo # [4] ETHIOPIC SYLLABLE XWI..ETHIOPIC SYLLABLE XWE
+1290..12B0 ; Lo # [33] ETHIOPIC SYLLABLE NA..ETHIOPIC SYLLABLE KWA
+12B2..12B5 ; Lo # [4] ETHIOPIC SYLLABLE KWI..ETHIOPIC SYLLABLE KWE
+12B8..12BE ; Lo # [7] ETHIOPIC SYLLABLE KXA..ETHIOPIC SYLLABLE KXO
+12C0 ; Lo # ETHIOPIC SYLLABLE KXWA
+12C2..12C5 ; Lo # [4] ETHIOPIC SYLLABLE KXWI..ETHIOPIC SYLLABLE KXWE
+12C8..12D6 ; Lo # [15] ETHIOPIC SYLLABLE WA..ETHIOPIC SYLLABLE PHARYNGEAL O
+12D8..1310 ; Lo # [57] ETHIOPIC SYLLABLE ZA..ETHIOPIC SYLLABLE GWA
+1312..1315 ; Lo # [4] ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE
+1318..135A ; Lo # [67] ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE FYA
+1380..138F ; Lo # [16] ETHIOPIC SYLLABLE SEBATBEIT MWA..ETHIOPIC SYLLABLE PWE
+13A0..13F4 ; Lo # [85] CHEROKEE LETTER A..CHEROKEE LETTER YV
+1401..166C ; Lo # [620] CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA
+166F..1676 ; Lo # [8] CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS NNGAA
+1681..169A ; Lo # [26] OGHAM LETTER BEITH..OGHAM LETTER PEITH
+16A0..16EA ; Lo # [75] RUNIC LETTER FEHU FEOH FE F..RUNIC LETTER X
+1700..170C ; Lo # [13] TAGALOG LETTER A..TAGALOG LETTER YA
+170E..1711 ; Lo # [4] TAGALOG LETTER LA..TAGALOG LETTER HA
+1720..1731 ; Lo # [18] HANUNOO LETTER A..HANUNOO LETTER HA
+1740..1751 ; Lo # [18] BUHID LETTER A..BUHID LETTER HA
+1760..176C ; Lo # [13] TAGBANWA LETTER A..TAGBANWA LETTER YA
+176E..1770 ; Lo # [3] TAGBANWA LETTER LA..TAGBANWA LETTER SA
+1780..17B3 ; Lo # [52] KHMER LETTER KA..KHMER INDEPENDENT VOWEL QAU
+17DC ; Lo # KHMER SIGN AVAKRAHASANYA
+1820..1842 ; Lo # [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI
+1844..1877 ; Lo # [52] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER MANCHU ZHA
+1880..18A8 ; Lo # [41] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER MANCHU ALI GALI BHA
+18AA ; Lo # MONGOLIAN LETTER MANCHU ALI GALI LHA
+1900..191C ; Lo # [29] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER HA
+1950..196D ; Lo # [30] TAI LE LETTER KA..TAI LE LETTER AI
+1970..1974 ; Lo # [5] TAI LE LETTER TONE-2..TAI LE LETTER TONE-6
+1980..19A9 ; Lo # [42] NEW TAI LUE LETTER HIGH QA..NEW TAI LUE LETTER LOW XVA
+19C1..19C7 ; Lo # [7] NEW TAI LUE LETTER FINAL V..NEW TAI LUE LETTER FINAL B
+1A00..1A16 ; Lo # [23] BUGINESE LETTER KA..BUGINESE LETTER HA
+1B05..1B33 ; Lo # [47] BALINESE LETTER AKARA..BALINESE LETTER HA
+1B45..1B4B ; Lo # [7] BALINESE LETTER KAF SASAK..BALINESE LETTER ASYURA SASAK
+1B83..1BA0 ; Lo # [30] SUNDANESE LETTER A..SUNDANESE LETTER HA
+1BAE..1BAF ; Lo # [2] SUNDANESE LETTER KHA..SUNDANESE LETTER SYA
+1C00..1C23 ; Lo # [36] LEPCHA LETTER KA..LEPCHA LETTER A
+1C4D..1C4F ; Lo # [3] LEPCHA LETTER TTA..LEPCHA LETTER DDA
+1C5A..1C77 ; Lo # [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH
+2135..2138 ; Lo # [4] ALEF SYMBOL..DALET SYMBOL
+2D30..2D65 ; Lo # [54] TIFINAGH LETTER YA..TIFINAGH LETTER YAZZ
+2D80..2D96 ; Lo # [23] ETHIOPIC SYLLABLE LOA..ETHIOPIC SYLLABLE GGWE
+2DA0..2DA6 ; Lo # [7] ETHIOPIC SYLLABLE SSA..ETHIOPIC SYLLABLE SSO
+2DA8..2DAE ; Lo # [7] ETHIOPIC SYLLABLE CCA..ETHIOPIC SYLLABLE CCO
+2DB0..2DB6 ; Lo # [7] ETHIOPIC SYLLABLE ZZA..ETHIOPIC SYLLABLE ZZO
+2DB8..2DBE ; Lo # [7] ETHIOPIC SYLLABLE CCHA..ETHIOPIC SYLLABLE CCHO
+2DC0..2DC6 ; Lo # [7] ETHIOPIC SYLLABLE QYA..ETHIOPIC SYLLABLE QYO
+2DC8..2DCE ; Lo # [7] ETHIOPIC SYLLABLE KYA..ETHIOPIC SYLLABLE KYO
+2DD0..2DD6 ; Lo # [7] ETHIOPIC SYLLABLE XYA..ETHIOPIC SYLLABLE XYO
+2DD8..2DDE ; Lo # [7] ETHIOPIC SYLLABLE GYA..ETHIOPIC SYLLABLE GYO
+3006 ; Lo # IDEOGRAPHIC CLOSING MARK
+303C ; Lo # MASU MARK
+3041..3096 ; Lo # [86] HIRAGANA LETTER SMALL A..HIRAGANA LETTER SMALL KE
+309F ; Lo # HIRAGANA DIGRAPH YORI
+30A1..30FA ; Lo # [90] KATAKANA LETTER SMALL A..KATAKANA LETTER VO
+30FF ; Lo # KATAKANA DIGRAPH KOTO
+3105..312D ; Lo # [41] BOPOMOFO LETTER B..BOPOMOFO LETTER IH
+3131..318E ; Lo # [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE
+31A0..31B7 ; Lo # [24] BOPOMOFO LETTER BU..BOPOMOFO FINAL LETTER H
+31F0..31FF ; Lo # [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO
+3400..4DB5 ; Lo # [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5
+4E00..9FC3 ; Lo # [20932] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FC3
+A000..A014 ; Lo # [21] YI SYLLABLE IT..YI SYLLABLE E
+A016..A48C ; Lo # [1143] YI SYLLABLE BIT..YI SYLLABLE YYR
+A500..A60B ; Lo # [268] VAI SYLLABLE EE..VAI SYLLABLE NG
+A610..A61F ; Lo # [16] VAI SYLLABLE NDOLE FA..VAI SYMBOL JONG
+A62A..A62B ; Lo # [2] VAI SYLLABLE NDOLE MA..VAI SYLLABLE NDOLE DO
+A66E ; Lo # CYRILLIC LETTER MULTIOCULAR O
+A7FB..A801 ; Lo # [7] LATIN EPIGRAPHIC LETTER REVERSED F..SYLOTI NAGRI LETTER I
+A803..A805 ; Lo # [3] SYLOTI NAGRI LETTER U..SYLOTI NAGRI LETTER O
+A807..A80A ; Lo # [4] SYLOTI NAGRI LETTER KO..SYLOTI NAGRI LETTER GHO
+A80C..A822 ; Lo # [23] SYLOTI NAGRI LETTER CO..SYLOTI NAGRI LETTER HO
+A840..A873 ; Lo # [52] PHAGS-PA LETTER KA..PHAGS-PA LETTER CANDRABINDU
+A882..A8B3 ; Lo # [50] SAURASHTRA LETTER A..SAURASHTRA LETTER LLA
+A90A..A925 ; Lo # [28] KAYAH LI LETTER KA..KAYAH LI LETTER OO
+A930..A946 ; Lo # [23] REJANG LETTER KA..REJANG LETTER A
+AA00..AA28 ; Lo # [41] CHAM LETTER A..CHAM LETTER HA
+AA40..AA42 ; Lo # [3] CHAM LETTER FINAL K..CHAM LETTER FINAL NG
+AA44..AA4B ; Lo # [8] CHAM LETTER FINAL CH..CHAM LETTER FINAL SS
+AC00..D7A3 ; Lo # [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH
+F900..FA2D ; Lo # [302] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA2D
+FA30..FA6A ; Lo # [59] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6A
+FA70..FAD9 ; Lo # [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
+FB1D ; Lo # HEBREW LETTER YOD WITH HIRIQ
+FB1F..FB28 ; Lo # [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV
+FB2A..FB36 ; Lo # [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+FB38..FB3C ; Lo # [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+FB3E ; Lo # HEBREW LETTER MEM WITH DAGESH
+FB40..FB41 ; Lo # [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+FB43..FB44 ; Lo # [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+FB46..FBB1 ; Lo # [108] HEBREW LETTER TSADI WITH DAGESH..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
+FBD3..FD3D ; Lo # [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
+FD50..FD8F ; Lo # [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
+FD92..FDC7 ; Lo # [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+FDF0..FDFB ; Lo # [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU
+FE70..FE74 ; Lo # [5] ARABIC FATHATAN ISOLATED FORM..ARABIC KASRATAN ISOLATED FORM
+FE76..FEFC ; Lo # [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+FF66..FF6F ; Lo # [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU
+FF71..FF9D ; Lo # [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N
+FFA0..FFBE ; Lo # [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH
+FFC2..FFC7 ; Lo # [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E
+FFCA..FFCF ; Lo # [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE
+FFD2..FFD7 ; Lo # [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU
+FFDA..FFDC ; Lo # [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I
+10000..1000B ; Lo # [12] LINEAR B SYLLABLE B008 A..LINEAR B SYLLABLE B046 JE
+1000D..10026 ; Lo # [26] LINEAR B SYLLABLE B036 JO..LINEAR B SYLLABLE B032 QO
+10028..1003A ; Lo # [19] LINEAR B SYLLABLE B060 RA..LINEAR B SYLLABLE B042 WO
+1003C..1003D ; Lo # [2] LINEAR B SYLLABLE B017 ZA..LINEAR B SYLLABLE B074 ZE
+1003F..1004D ; Lo # [15] LINEAR B SYLLABLE B020 ZO..LINEAR B SYLLABLE B091 TWO
+10050..1005D ; Lo # [14] LINEAR B SYMBOL B018..LINEAR B SYMBOL B089
+10080..100FA ; Lo # [123] LINEAR B IDEOGRAM B100 MAN..LINEAR B IDEOGRAM VESSEL B305
+10280..1029C ; Lo # [29] LYCIAN LETTER A..LYCIAN LETTER X
+102A0..102D0 ; Lo # [49] CARIAN LETTER A..CARIAN LETTER UUU3
+10300..1031E ; Lo # [31] OLD ITALIC LETTER A..OLD ITALIC LETTER UU
+10330..10340 ; Lo # [17] GOTHIC LETTER AHSA..GOTHIC LETTER PAIRTHRA
+10342..10349 ; Lo # [8] GOTHIC LETTER RAIDA..GOTHIC LETTER OTHAL
+10380..1039D ; Lo # [30] UGARITIC LETTER ALPA..UGARITIC LETTER SSU
+103A0..103C3 ; Lo # [36] OLD PERSIAN SIGN A..OLD PERSIAN SIGN HA
+103C8..103CF ; Lo # [8] OLD PERSIAN SIGN AURAMAZDAA..OLD PERSIAN SIGN BUUMISH
+10450..1049D ; Lo # [78] SHAVIAN LETTER PEEP..OSMANYA LETTER OO
+10800..10805 ; Lo # [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA
+10808 ; Lo # CYPRIOT SYLLABLE JO
+1080A..10835 ; Lo # [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO
+10837..10838 ; Lo # [2] CYPRIOT SYLLABLE XA..CYPRIOT SYLLABLE XE
+1083C ; Lo # CYPRIOT SYLLABLE ZA
+1083F ; Lo # CYPRIOT SYLLABLE ZO
+10900..10915 ; Lo # [22] PHOENICIAN LETTER ALF..PHOENICIAN LETTER TAU
+10920..10939 ; Lo # [26] LYDIAN LETTER A..LYDIAN LETTER C
+10A00 ; Lo # KHAROSHTHI LETTER A
+10A10..10A13 ; Lo # [4] KHAROSHTHI LETTER KA..KHAROSHTHI LETTER GHA
+10A15..10A17 ; Lo # [3] KHAROSHTHI LETTER CA..KHAROSHTHI LETTER JA
+10A19..10A33 ; Lo # [27] KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER TTTHA
+12000..1236E ; Lo # [879] CUNEIFORM SIGN A..CUNEIFORM SIGN ZUM
+20000..2A6D6 ; Lo # [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6
+2F800..2FA1D ; Lo # [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
+
+# Total code points: 90068
+
+# ================================================
+
+# General_Category=Nonspacing_Mark
+
+0300..036F ; Mn # [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X
+0483..0487 ; Mn # [5] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC POKRYTIE
+0591..05BD ; Mn # [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG
+05BF ; Mn # HEBREW POINT RAFE
+05C1..05C2 ; Mn # [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT
+05C4..05C5 ; Mn # [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT
+05C7 ; Mn # HEBREW POINT QAMATS QATAN
+0610..061A ; Mn # [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA
+064B..065E ; Mn # [20] ARABIC FATHATAN..ARABIC FATHA WITH TWO DOTS
+0670 ; Mn # ARABIC LETTER SUPERSCRIPT ALEF
+06D6..06DC ; Mn # [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN
+06DF..06E4 ; Mn # [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA
+06E7..06E8 ; Mn # [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON
+06EA..06ED ; Mn # [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM
+0711 ; Mn # SYRIAC LETTER SUPERSCRIPT ALAPH
+0730..074A ; Mn # [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH
+07A6..07B0 ; Mn # [11] THAANA ABAFILI..THAANA SUKUN
+07EB..07F3 ; Mn # [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE
+0901..0902 ; Mn # [2] DEVANAGARI SIGN CANDRABINDU..DEVANAGARI SIGN ANUSVARA
+093C ; Mn # DEVANAGARI SIGN NUKTA
+0941..0948 ; Mn # [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI
+094D ; Mn # DEVANAGARI SIGN VIRAMA
+0951..0954 ; Mn # [4] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI ACUTE ACCENT
+0962..0963 ; Mn # [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL
+0981 ; Mn # BENGALI SIGN CANDRABINDU
+09BC ; Mn # BENGALI SIGN NUKTA
+09C1..09C4 ; Mn # [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR
+09CD ; Mn # BENGALI SIGN VIRAMA
+09E2..09E3 ; Mn # [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL
+0A01..0A02 ; Mn # [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI
+0A3C ; Mn # GURMUKHI SIGN NUKTA
+0A41..0A42 ; Mn # [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU
+0A47..0A48 ; Mn # [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI
+0A4B..0A4D ; Mn # [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA
+0A51 ; Mn # GURMUKHI SIGN UDAAT
+0A70..0A71 ; Mn # [2] GURMUKHI TIPPI..GURMUKHI ADDAK
+0A75 ; Mn # GURMUKHI SIGN YAKASH
+0A81..0A82 ; Mn # [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA
+0ABC ; Mn # GUJARATI SIGN NUKTA
+0AC1..0AC5 ; Mn # [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E
+0AC7..0AC8 ; Mn # [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI
+0ACD ; Mn # GUJARATI SIGN VIRAMA
+0AE2..0AE3 ; Mn # [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL
+0B01 ; Mn # ORIYA SIGN CANDRABINDU
+0B3C ; Mn # ORIYA SIGN NUKTA
+0B3F ; Mn # ORIYA VOWEL SIGN I
+0B41..0B44 ; Mn # [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR
+0B4D ; Mn # ORIYA SIGN VIRAMA
+0B56 ; Mn # ORIYA AI LENGTH MARK
+0B62..0B63 ; Mn # [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL
+0B82 ; Mn # TAMIL SIGN ANUSVARA
+0BC0 ; Mn # TAMIL VOWEL SIGN II
+0BCD ; Mn # TAMIL SIGN VIRAMA
+0C3E..0C40 ; Mn # [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II
+0C46..0C48 ; Mn # [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI
+0C4A..0C4D ; Mn # [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA
+0C55..0C56 ; Mn # [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK
+0C62..0C63 ; Mn # [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL
+0CBC ; Mn # KANNADA SIGN NUKTA
+0CBF ; Mn # KANNADA VOWEL SIGN I
+0CC6 ; Mn # KANNADA VOWEL SIGN E
+0CCC..0CCD ; Mn # [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA
+0CE2..0CE3 ; Mn # [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL
+0D41..0D44 ; Mn # [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR
+0D4D ; Mn # MALAYALAM SIGN VIRAMA
+0D62..0D63 ; Mn # [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL
+0DCA ; Mn # SINHALA SIGN AL-LAKUNA
+0DD2..0DD4 ; Mn # [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA
+0DD6 ; Mn # SINHALA VOWEL SIGN DIGA PAA-PILLA
+0E31 ; Mn # THAI CHARACTER MAI HAN-AKAT
+0E34..0E3A ; Mn # [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU
+0E47..0E4E ; Mn # [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN
+0EB1 ; Mn # LAO VOWEL SIGN MAI KAN
+0EB4..0EB9 ; Mn # [6] LAO VOWEL SIGN I..LAO VOWEL SIGN UU
+0EBB..0EBC ; Mn # [2] LAO VOWEL SIGN MAI KON..LAO SEMIVOWEL SIGN LO
+0EC8..0ECD ; Mn # [6] LAO TONE MAI EK..LAO NIGGAHITA
+0F18..0F19 ; Mn # [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS
+0F35 ; Mn # TIBETAN MARK NGAS BZUNG NYI ZLA
+0F37 ; Mn # TIBETAN MARK NGAS BZUNG SGOR RTAGS
+0F39 ; Mn # TIBETAN MARK TSA -PHRU
+0F71..0F7E ; Mn # [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO
+0F80..0F84 ; Mn # [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA
+0F86..0F87 ; Mn # [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS
+0F90..0F97 ; Mn # [8] TIBETAN SUBJOINED LETTER KA..TIBETAN SUBJOINED LETTER JA
+0F99..0FBC ; Mn # [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA
+0FC6 ; Mn # TIBETAN SYMBOL PADMA GDAN
+102D..1030 ; Mn # [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU
+1032..1037 ; Mn # [6] MYANMAR VOWEL SIGN AI..MYANMAR SIGN DOT BELOW
+1039..103A ; Mn # [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT
+103D..103E ; Mn # [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA
+1058..1059 ; Mn # [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL
+105E..1060 ; Mn # [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA
+1071..1074 ; Mn # [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE
+1082 ; Mn # MYANMAR CONSONANT SIGN SHAN MEDIAL WA
+1085..1086 ; Mn # [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y
+108D ; Mn # MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE
+135F ; Mn # ETHIOPIC COMBINING GEMINATION MARK
+1712..1714 ; Mn # [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA
+1732..1734 ; Mn # [3] HANUNOO VOWEL SIGN I..HANUNOO SIGN PAMUDPOD
+1752..1753 ; Mn # [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U
+1772..1773 ; Mn # [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U
+17B7..17BD ; Mn # [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA
+17C6 ; Mn # KHMER SIGN NIKAHIT
+17C9..17D3 ; Mn # [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT
+17DD ; Mn # KHMER SIGN ATTHACAN
+180B..180D ; Mn # [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
+18A9 ; Mn # MONGOLIAN LETTER ALI GALI DAGALGA
+1920..1922 ; Mn # [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U
+1927..1928 ; Mn # [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O
+1932 ; Mn # LIMBU SMALL LETTER ANUSVARA
+1939..193B ; Mn # [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I
+1A17..1A18 ; Mn # [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U
+1B00..1B03 ; Mn # [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG
+1B34 ; Mn # BALINESE SIGN REREKAN
+1B36..1B3A ; Mn # [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA
+1B3C ; Mn # BALINESE VOWEL SIGN LA LENGA
+1B42 ; Mn # BALINESE VOWEL SIGN PEPET
+1B6B..1B73 ; Mn # [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG
+1B80..1B81 ; Mn # [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR
+1BA2..1BA5 ; Mn # [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU
+1BA8..1BA9 ; Mn # [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG
+1C2C..1C33 ; Mn # [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T
+1C36..1C37 ; Mn # [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA
+1DC0..1DE6 ; Mn # [39] COMBINING DOTTED GRAVE ACCENT..COMBINING LATIN SMALL LETTER Z
+1DFE..1DFF ; Mn # [2] COMBINING LEFT ARROWHEAD ABOVE..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
+20D0..20DC ; Mn # [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE
+20E1 ; Mn # COMBINING LEFT RIGHT ARROW ABOVE
+20E5..20F0 ; Mn # [12] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING ASTERISK ABOVE
+2DE0..2DFF ; Mn # [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS
+302A..302F ; Mn # [6] IDEOGRAPHIC LEVEL TONE MARK..HANGUL DOUBLE DOT TONE MARK
+3099..309A ; Mn # [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+A66F ; Mn # COMBINING CYRILLIC VZMET
+A67C..A67D ; Mn # [2] COMBINING CYRILLIC KAVYKA..COMBINING CYRILLIC PAYEROK
+A802 ; Mn # SYLOTI NAGRI SIGN DVISVARA
+A806 ; Mn # SYLOTI NAGRI SIGN HASANTA
+A80B ; Mn # SYLOTI NAGRI SIGN ANUSVARA
+A825..A826 ; Mn # [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E
+A8C4 ; Mn # SAURASHTRA SIGN VIRAMA
+A926..A92D ; Mn # [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU
+A947..A951 ; Mn # [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R
+AA29..AA2E ; Mn # [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE
+AA31..AA32 ; Mn # [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE
+AA35..AA36 ; Mn # [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA
+AA43 ; Mn # CHAM CONSONANT SIGN FINAL NG
+AA4C ; Mn # CHAM CONSONANT SIGN FINAL M
+FB1E ; Mn # HEBREW POINT JUDEO-SPANISH VARIKA
+FE00..FE0F ; Mn # [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16
+FE20..FE26 ; Mn # [7] COMBINING LIGATURE LEFT HALF..COMBINING CONJOINING MACRON
+101FD ; Mn # PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE
+10A01..10A03 ; Mn # [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R
+10A05..10A06 ; Mn # [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O
+10A0C..10A0F ; Mn # [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA
+10A38..10A3A ; Mn # [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW
+10A3F ; Mn # KHAROSHTHI VIRAMA
+1D167..1D169 ; Mn # [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3
+1D17B..1D182 ; Mn # [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE
+1D185..1D18B ; Mn # [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE
+1D1AA..1D1AD ; Mn # [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO
+1D242..1D244 ; Mn # [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME
+E0100..E01EF ; Mn # [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
+
+# Total code points: 1032
+
+# ================================================
+
+# General_Category=Enclosing_Mark
+
+0488..0489 ; Me # [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN
+06DE ; Me # ARABIC START OF RUB EL HIZB
+20DD..20E0 ; Me # [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH
+20E2..20E4 ; Me # [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE
+A670..A672 ; Me # [3] COMBINING CYRILLIC TEN MILLIONS SIGN..COMBINING CYRILLIC THOUSAND MILLIONS SIGN
+
+# Total code points: 13
+
+# ================================================
+
+# General_Category=Spacing_Mark
+
+0903 ; Mc # DEVANAGARI SIGN VISARGA
+093E..0940 ; Mc # [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II
+0949..094C ; Mc # [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU
+0982..0983 ; Mc # [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA
+09BE..09C0 ; Mc # [3] BENGALI VOWEL SIGN AA..BENGALI VOWEL SIGN II
+09C7..09C8 ; Mc # [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI
+09CB..09CC ; Mc # [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU
+09D7 ; Mc # BENGALI AU LENGTH MARK
+0A03 ; Mc # GURMUKHI SIGN VISARGA
+0A3E..0A40 ; Mc # [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II
+0A83 ; Mc # GUJARATI SIGN VISARGA
+0ABE..0AC0 ; Mc # [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II
+0AC9 ; Mc # GUJARATI VOWEL SIGN CANDRA O
+0ACB..0ACC ; Mc # [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU
+0B02..0B03 ; Mc # [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA
+0B3E ; Mc # ORIYA VOWEL SIGN AA
+0B40 ; Mc # ORIYA VOWEL SIGN II
+0B47..0B48 ; Mc # [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI
+0B4B..0B4C ; Mc # [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU
+0B57 ; Mc # ORIYA AU LENGTH MARK
+0BBE..0BBF ; Mc # [2] TAMIL VOWEL SIGN AA..TAMIL VOWEL SIGN I
+0BC1..0BC2 ; Mc # [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU
+0BC6..0BC8 ; Mc # [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI
+0BCA..0BCC ; Mc # [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU
+0BD7 ; Mc # TAMIL AU LENGTH MARK
+0C01..0C03 ; Mc # [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA
+0C41..0C44 ; Mc # [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR
+0C82..0C83 ; Mc # [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA
+0CBE ; Mc # KANNADA VOWEL SIGN AA
+0CC0..0CC4 ; Mc # [5] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN VOCALIC RR
+0CC7..0CC8 ; Mc # [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI
+0CCA..0CCB ; Mc # [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
+0CD5..0CD6 ; Mc # [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK
+0D02..0D03 ; Mc # [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA
+0D3E..0D40 ; Mc # [3] MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN II
+0D46..0D48 ; Mc # [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI
+0D4A..0D4C ; Mc # [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
+0D57 ; Mc # MALAYALAM AU LENGTH MARK
+0D82..0D83 ; Mc # [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA
+0DCF..0DD1 ; Mc # [3] SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA
+0DD8..0DDF ; Mc # [8] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN GAYANUKITTA
+0DF2..0DF3 ; Mc # [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA
+0F3E..0F3F ; Mc # [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES
+0F7F ; Mc # TIBETAN SIGN RNAM BCAD
+102B..102C ; Mc # [2] MYANMAR VOWEL SIGN TALL AA..MYANMAR VOWEL SIGN AA
+1031 ; Mc # MYANMAR VOWEL SIGN E
+1038 ; Mc # MYANMAR SIGN VISARGA
+103B..103C ; Mc # [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA
+1056..1057 ; Mc # [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR
+1062..1064 ; Mc # [3] MYANMAR VOWEL SIGN SGAW KAREN EU..MYANMAR TONE MARK SGAW KAREN KE PHO
+1067..106D ; Mc # [7] MYANMAR VOWEL SIGN WESTERN PWO KAREN EU..MYANMAR SIGN WESTERN PWO KAREN TONE-5
+1083..1084 ; Mc # [2] MYANMAR VOWEL SIGN SHAN AA..MYANMAR VOWEL SIGN SHAN E
+1087..108C ; Mc # [6] MYANMAR SIGN SHAN TONE-2..MYANMAR SIGN SHAN COUNCIL TONE-3
+108F ; Mc # MYANMAR SIGN RUMAI PALAUNG TONE-5
+17B6 ; Mc # KHMER VOWEL SIGN AA
+17BE..17C5 ; Mc # [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU
+17C7..17C8 ; Mc # [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU
+1923..1926 ; Mc # [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU
+1929..192B ; Mc # [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA
+1930..1931 ; Mc # [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA
+1933..1938 ; Mc # [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA
+19B0..19C0 ; Mc # [17] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE VOWEL SIGN IY
+19C8..19C9 ; Mc # [2] NEW TAI LUE TONE MARK-1..NEW TAI LUE TONE MARK-2
+1A19..1A1B ; Mc # [3] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN AE
+1B04 ; Mc # BALINESE SIGN BISAH
+1B35 ; Mc # BALINESE VOWEL SIGN TEDUNG
+1B3B ; Mc # BALINESE VOWEL SIGN RA REPA TEDUNG
+1B3D..1B41 ; Mc # [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG
+1B43..1B44 ; Mc # [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG
+1B82 ; Mc # SUNDANESE SIGN PANGWISAD
+1BA1 ; Mc # SUNDANESE CONSONANT SIGN PAMINGKAL
+1BA6..1BA7 ; Mc # [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG
+1BAA ; Mc # SUNDANESE SIGN PAMAAEH
+1C24..1C2B ; Mc # [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU
+1C34..1C35 ; Mc # [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG
+A823..A824 ; Mc # [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I
+A827 ; Mc # SYLOTI NAGRI VOWEL SIGN OO
+A880..A881 ; Mc # [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA
+A8B4..A8C3 ; Mc # [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU
+A952..A953 ; Mc # [2] REJANG CONSONANT SIGN H..REJANG VIRAMA
+AA2F..AA30 ; Mc # [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI
+AA33..AA34 ; Mc # [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA
+AA4D ; Mc # CHAM CONSONANT SIGN FINAL H
+1D165..1D166 ; Mc # [2] MUSICAL SYMBOL COMBINING STEM..MUSICAL SYMBOL COMBINING SPRECHGESANG STEM
+1D16D..1D172 ; Mc # [6] MUSICAL SYMBOL COMBINING AUGMENTATION DOT..MUSICAL SYMBOL COMBINING FLAG-5
+
+# Total code points: 236
+
+# ================================================
+
+# General_Category=Decimal_Number
+
+0030..0039 ; Nd # [10] DIGIT ZERO..DIGIT NINE
+0660..0669 ; Nd # [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE
+06F0..06F9 ; Nd # [10] EXTENDED ARABIC-INDIC DIGIT ZERO..EXTENDED ARABIC-INDIC DIGIT NINE
+07C0..07C9 ; Nd # [10] NKO DIGIT ZERO..NKO DIGIT NINE
+0966..096F ; Nd # [10] DEVANAGARI DIGIT ZERO..DEVANAGARI DIGIT NINE
+09E6..09EF ; Nd # [10] BENGALI DIGIT ZERO..BENGALI DIGIT NINE
+0A66..0A6F ; Nd # [10] GURMUKHI DIGIT ZERO..GURMUKHI DIGIT NINE
+0AE6..0AEF ; Nd # [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE
+0B66..0B6F ; Nd # [10] ORIYA DIGIT ZERO..ORIYA DIGIT NINE
+0BE6..0BEF ; Nd # [10] TAMIL DIGIT ZERO..TAMIL DIGIT NINE
+0C66..0C6F ; Nd # [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE
+0CE6..0CEF ; Nd # [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE
+0D66..0D6F ; Nd # [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE
+0E50..0E59 ; Nd # [10] THAI DIGIT ZERO..THAI DIGIT NINE
+0ED0..0ED9 ; Nd # [10] LAO DIGIT ZERO..LAO DIGIT NINE
+0F20..0F29 ; Nd # [10] TIBETAN DIGIT ZERO..TIBETAN DIGIT NINE
+1040..1049 ; Nd # [10] MYANMAR DIGIT ZERO..MYANMAR DIGIT NINE
+1090..1099 ; Nd # [10] MYANMAR SHAN DIGIT ZERO..MYANMAR SHAN DIGIT NINE
+17E0..17E9 ; Nd # [10] KHMER DIGIT ZERO..KHMER DIGIT NINE
+1810..1819 ; Nd # [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE
+1946..194F ; Nd # [10] LIMBU DIGIT ZERO..LIMBU DIGIT NINE
+19D0..19D9 ; Nd # [10] NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE
+1B50..1B59 ; Nd # [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE
+1BB0..1BB9 ; Nd # [10] SUNDANESE DIGIT ZERO..SUNDANESE DIGIT NINE
+1C40..1C49 ; Nd # [10] LEPCHA DIGIT ZERO..LEPCHA DIGIT NINE
+1C50..1C59 ; Nd # [10] OL CHIKI DIGIT ZERO..OL CHIKI DIGIT NINE
+A620..A629 ; Nd # [10] VAI DIGIT ZERO..VAI DIGIT NINE
+A8D0..A8D9 ; Nd # [10] SAURASHTRA DIGIT ZERO..SAURASHTRA DIGIT NINE
+A900..A909 ; Nd # [10] KAYAH LI DIGIT ZERO..KAYAH LI DIGIT NINE
+AA50..AA59 ; Nd # [10] CHAM DIGIT ZERO..CHAM DIGIT NINE
+FF10..FF19 ; Nd # [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE
+104A0..104A9 ; Nd # [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE
+1D7CE..1D7FF ; Nd # [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE
+
+# Total code points: 370
+
+# ================================================
+
+# General_Category=Letter_Number
+
+16EE..16F0 ; Nl # [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL
+2160..2182 ; Nl # [35] ROMAN NUMERAL ONE..ROMAN NUMERAL TEN THOUSAND
+2185..2188 ; Nl # [4] ROMAN NUMERAL SIX LATE FORM..ROMAN NUMERAL ONE HUNDRED THOUSAND
+3007 ; Nl # IDEOGRAPHIC NUMBER ZERO
+3021..3029 ; Nl # [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE
+3038..303A ; Nl # [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY
+10140..10174 ; Nl # [53] GREEK ACROPHONIC ATTIC ONE QUARTER..GREEK ACROPHONIC STRATIAN FIFTY MNAS
+10341 ; Nl # GOTHIC LETTER NINETY
+1034A ; Nl # GOTHIC LETTER NINE HUNDRED
+103D1..103D5 ; Nl # [5] OLD PERSIAN NUMBER ONE..OLD PERSIAN NUMBER HUNDRED
+12400..12462 ; Nl # [99] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE QUARTER
+
+# Total code points: 214
+
+# ================================================
+
+# General_Category=Other_Number
+
+00B2..00B3 ; No # [2] SUPERSCRIPT TWO..SUPERSCRIPT THREE
+00B9 ; No # SUPERSCRIPT ONE
+00BC..00BE ; No # [3] VULGAR FRACTION ONE QUARTER..VULGAR FRACTION THREE QUARTERS
+09F4..09F9 ; No # [6] BENGALI CURRENCY NUMERATOR ONE..BENGALI CURRENCY DENOMINATOR SIXTEEN
+0BF0..0BF2 ; No # [3] TAMIL NUMBER TEN..TAMIL NUMBER ONE THOUSAND
+0C78..0C7E ; No # [7] TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR..TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR
+0D70..0D75 ; No # [6] MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE QUARTERS
+0F2A..0F33 ; No # [10] TIBETAN DIGIT HALF ONE..TIBETAN DIGIT HALF ZERO
+1369..137C ; No # [20] ETHIOPIC DIGIT ONE..ETHIOPIC NUMBER TEN THOUSAND
+17F0..17F9 ; No # [10] KHMER SYMBOL LEK ATTAK SON..KHMER SYMBOL LEK ATTAK PRAM-BUON
+2070 ; No # SUPERSCRIPT ZERO
+2074..2079 ; No # [6] SUPERSCRIPT FOUR..SUPERSCRIPT NINE
+2080..2089 ; No # [10] SUBSCRIPT ZERO..SUBSCRIPT NINE
+2153..215F ; No # [13] VULGAR FRACTION ONE THIRD..FRACTION NUMERATOR ONE
+2460..249B ; No # [60] CIRCLED DIGIT ONE..NUMBER TWENTY FULL STOP
+24EA..24FF ; No # [22] CIRCLED DIGIT ZERO..NEGATIVE CIRCLED DIGIT ZERO
+2776..2793 ; No # [30] DINGBAT NEGATIVE CIRCLED DIGIT ONE..DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN
+2CFD ; No # COPTIC FRACTION ONE HALF
+3192..3195 ; No # [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK
+3220..3229 ; No # [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN
+3251..325F ; No # [15] CIRCLED NUMBER TWENTY ONE..CIRCLED NUMBER THIRTY FIVE
+3280..3289 ; No # [10] CIRCLED IDEOGRAPH ONE..CIRCLED IDEOGRAPH TEN
+32B1..32BF ; No # [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY
+10107..10133 ; No # [45] AEGEAN NUMBER ONE..AEGEAN NUMBER NINETY THOUSAND
+10175..10178 ; No # [4] GREEK ONE HALF SIGN..GREEK THREE QUARTERS SIGN
+1018A ; No # GREEK ZERO SIGN
+10320..10323 ; No # [4] OLD ITALIC NUMERAL ONE..OLD ITALIC NUMERAL FIFTY
+10916..10919 ; No # [4] PHOENICIAN NUMBER ONE..PHOENICIAN NUMBER ONE HUNDRED
+10A40..10A47 ; No # [8] KHAROSHTHI DIGIT ONE..KHAROSHTHI NUMBER ONE THOUSAND
+1D360..1D371 ; No # [18] COUNTING ROD UNIT DIGIT ONE..COUNTING ROD TENS DIGIT NINE
+
+# Total code points: 349
+
+# ================================================
+
+# General_Category=Space_Separator
+
+0020 ; Zs # SPACE
+00A0 ; Zs # NO-BREAK SPACE
+1680 ; Zs # OGHAM SPACE MARK
+180E ; Zs # MONGOLIAN VOWEL SEPARATOR
+2000..200A ; Zs # [11] EN QUAD..HAIR SPACE
+202F ; Zs # NARROW NO-BREAK SPACE
+205F ; Zs # MEDIUM MATHEMATICAL SPACE
+3000 ; Zs # IDEOGRAPHIC SPACE
+
+# Total code points: 18
+
+# ================================================
+
+# General_Category=Line_Separator
+
+2028 ; Zl # LINE SEPARATOR
+
+# Total code points: 1
+
+# ================================================
+
+# General_Category=Paragraph_Separator
+
+2029 ; Zp # PARAGRAPH SEPARATOR
+
+# Total code points: 1
+
+# ================================================
+
+# General_Category=Control
+
+0000..001F ; Cc # [32] <control-0000>..<control-001F>
+007F..009F ; Cc # [33] <control-007F>..<control-009F>
+
+# Total code points: 65
+
+# ================================================
+
+# General_Category=Format
+
+00AD ; Cf # SOFT HYPHEN
+0600..0603 ; Cf # [4] ARABIC NUMBER SIGN..ARABIC SIGN SAFHA
+06DD ; Cf # ARABIC END OF AYAH
+070F ; Cf # SYRIAC ABBREVIATION MARK
+17B4..17B5 ; Cf # [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA
+200B..200F ; Cf # [5] ZERO WIDTH SPACE..RIGHT-TO-LEFT MARK
+202A..202E ; Cf # [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE
+2060..2064 ; Cf # [5] WORD JOINER..INVISIBLE PLUS
+206A..206F ; Cf # [6] INHIBIT SYMMETRIC SWAPPING..NOMINAL DIGIT SHAPES
+FEFF ; Cf # ZERO WIDTH NO-BREAK SPACE
+FFF9..FFFB ; Cf # [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR
+1D173..1D17A ; Cf # [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE
+E0001 ; Cf # LANGUAGE TAG
+E0020..E007F ; Cf # [96] TAG SPACE..CANCEL TAG
+
+# Total code points: 139
+
+# ================================================
+
+# General_Category=Private_Use
+
+E000..F8FF ; Co # [6400] <private-use-E000>..<private-use-F8FF>
+F0000..FFFFD ; Co # [65534] <private-use-F0000>..<private-use-FFFFD>
+100000..10FFFD; Co # [65534] <private-use-100000>..<private-use-10FFFD>
+
+# Total code points: 137468
+
+# ================================================
+
+# General_Category=Surrogate
+
+D800..DFFF ; Cs # [2048] <surrogate-D800>..<surrogate-DFFF>
+
+# Total code points: 2048
+
+# ================================================
+
+# General_Category=Dash_Punctuation
+
+002D ; Pd # HYPHEN-MINUS
+058A ; Pd # ARMENIAN HYPHEN
+05BE ; Pd # HEBREW PUNCTUATION MAQAF
+1806 ; Pd # MONGOLIAN TODO SOFT HYPHEN
+2010..2015 ; Pd # [6] HYPHEN..HORIZONTAL BAR
+2E17 ; Pd # DOUBLE OBLIQUE HYPHEN
+2E1A ; Pd # HYPHEN WITH DIAERESIS
+301C ; Pd # WAVE DASH
+3030 ; Pd # WAVY DASH
+30A0 ; Pd # KATAKANA-HIRAGANA DOUBLE HYPHEN
+FE31..FE32 ; Pd # [2] PRESENTATION FORM FOR VERTICAL EM DASH..PRESENTATION FORM FOR VERTICAL EN DASH
+FE58 ; Pd # SMALL EM DASH
+FE63 ; Pd # SMALL HYPHEN-MINUS
+FF0D ; Pd # FULLWIDTH HYPHEN-MINUS
+
+# Total code points: 20
+
+# ================================================
+
+# General_Category=Open_Punctuation
+
+0028 ; Ps # LEFT PARENTHESIS
+005B ; Ps # LEFT SQUARE BRACKET
+007B ; Ps # LEFT CURLY BRACKET
+0F3A ; Ps # TIBETAN MARK GUG RTAGS GYON
+0F3C ; Ps # TIBETAN MARK ANG KHANG GYON
+169B ; Ps # OGHAM FEATHER MARK
+201A ; Ps # SINGLE LOW-9 QUOTATION MARK
+201E ; Ps # DOUBLE LOW-9 QUOTATION MARK
+2045 ; Ps # LEFT SQUARE BRACKET WITH QUILL
+207D ; Ps # SUPERSCRIPT LEFT PARENTHESIS
+208D ; Ps # SUBSCRIPT LEFT PARENTHESIS
+2329 ; Ps # LEFT-POINTING ANGLE BRACKET
+2768 ; Ps # MEDIUM LEFT PARENTHESIS ORNAMENT
+276A ; Ps # MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT
+276C ; Ps # MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT
+276E ; Ps # HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT
+2770 ; Ps # HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT
+2772 ; Ps # LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT
+2774 ; Ps # MEDIUM LEFT CURLY BRACKET ORNAMENT
+27C5 ; Ps # LEFT S-SHAPED BAG DELIMITER
+27E6 ; Ps # MATHEMATICAL LEFT WHITE SQUARE BRACKET
+27E8 ; Ps # MATHEMATICAL LEFT ANGLE BRACKET
+27EA ; Ps # MATHEMATICAL LEFT DOUBLE ANGLE BRACKET
+27EC ; Ps # MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET
+27EE ; Ps # MATHEMATICAL LEFT FLATTENED PARENTHESIS
+2983 ; Ps # LEFT WHITE CURLY BRACKET
+2985 ; Ps # LEFT WHITE PARENTHESIS
+2987 ; Ps # Z NOTATION LEFT IMAGE BRACKET
+2989 ; Ps # Z NOTATION LEFT BINDING BRACKET
+298B ; Ps # LEFT SQUARE BRACKET WITH UNDERBAR
+298D ; Ps # LEFT SQUARE BRACKET WITH TICK IN TOP CORNER
+298F ; Ps # LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
+2991 ; Ps # LEFT ANGLE BRACKET WITH DOT
+2993 ; Ps # LEFT ARC LESS-THAN BRACKET
+2995 ; Ps # DOUBLE LEFT ARC GREATER-THAN BRACKET
+2997 ; Ps # LEFT BLACK TORTOISE SHELL BRACKET
+29D8 ; Ps # LEFT WIGGLY FENCE
+29DA ; Ps # LEFT DOUBLE WIGGLY FENCE
+29FC ; Ps # LEFT-POINTING CURVED ANGLE BRACKET
+2E22 ; Ps # TOP LEFT HALF BRACKET
+2E24 ; Ps # BOTTOM LEFT HALF BRACKET
+2E26 ; Ps # LEFT SIDEWAYS U BRACKET
+2E28 ; Ps # LEFT DOUBLE PARENTHESIS
+3008 ; Ps # LEFT ANGLE BRACKET
+300A ; Ps # LEFT DOUBLE ANGLE BRACKET
+300C ; Ps # LEFT CORNER BRACKET
+300E ; Ps # LEFT WHITE CORNER BRACKET
+3010 ; Ps # LEFT BLACK LENTICULAR BRACKET
+3014 ; Ps # LEFT TORTOISE SHELL BRACKET
+3016 ; Ps # LEFT WHITE LENTICULAR BRACKET
+3018 ; Ps # LEFT WHITE TORTOISE SHELL BRACKET
+301A ; Ps # LEFT WHITE SQUARE BRACKET
+301D ; Ps # REVERSED DOUBLE PRIME QUOTATION MARK
+FD3E ; Ps # ORNATE LEFT PARENTHESIS
+FE17 ; Ps # PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET
+FE35 ; Ps # PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS
+FE37 ; Ps # PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET
+FE39 ; Ps # PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET
+FE3B ; Ps # PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET
+FE3D ; Ps # PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET
+FE3F ; Ps # PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET
+FE41 ; Ps # PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET
+FE43 ; Ps # PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET
+FE47 ; Ps # PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET
+FE59 ; Ps # SMALL LEFT PARENTHESIS
+FE5B ; Ps # SMALL LEFT CURLY BRACKET
+FE5D ; Ps # SMALL LEFT TORTOISE SHELL BRACKET
+FF08 ; Ps # FULLWIDTH LEFT PARENTHESIS
+FF3B ; Ps # FULLWIDTH LEFT SQUARE BRACKET
+FF5B ; Ps # FULLWIDTH LEFT CURLY BRACKET
+FF5F ; Ps # FULLWIDTH LEFT WHITE PARENTHESIS
+FF62 ; Ps # HALFWIDTH LEFT CORNER BRACKET
+
+# Total code points: 72
+
+# ================================================
+
+# General_Category=Close_Punctuation
+
+0029 ; Pe # RIGHT PARENTHESIS
+005D ; Pe # RIGHT SQUARE BRACKET
+007D ; Pe # RIGHT CURLY BRACKET
+0F3B ; Pe # TIBETAN MARK GUG RTAGS GYAS
+0F3D ; Pe # TIBETAN MARK ANG KHANG GYAS
+169C ; Pe # OGHAM REVERSED FEATHER MARK
+2046 ; Pe # RIGHT SQUARE BRACKET WITH QUILL
+207E ; Pe # SUPERSCRIPT RIGHT PARENTHESIS
+208E ; Pe # SUBSCRIPT RIGHT PARENTHESIS
+232A ; Pe # RIGHT-POINTING ANGLE BRACKET
+2769 ; Pe # MEDIUM RIGHT PARENTHESIS ORNAMENT
+276B ; Pe # MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT
+276D ; Pe # MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT
+276F ; Pe # HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT
+2771 ; Pe # HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT
+2773 ; Pe # LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT
+2775 ; Pe # MEDIUM RIGHT CURLY BRACKET ORNAMENT
+27C6 ; Pe # RIGHT S-SHAPED BAG DELIMITER
+27E7 ; Pe # MATHEMATICAL RIGHT WHITE SQUARE BRACKET
+27E9 ; Pe # MATHEMATICAL RIGHT ANGLE BRACKET
+27EB ; Pe # MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET
+27ED ; Pe # MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET
+27EF ; Pe # MATHEMATICAL RIGHT FLATTENED PARENTHESIS
+2984 ; Pe # RIGHT WHITE CURLY BRACKET
+2986 ; Pe # RIGHT WHITE PARENTHESIS
+2988 ; Pe # Z NOTATION RIGHT IMAGE BRACKET
+298A ; Pe # Z NOTATION RIGHT BINDING BRACKET
+298C ; Pe # RIGHT SQUARE BRACKET WITH UNDERBAR
+298E ; Pe # RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
+2990 ; Pe # RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER
+2992 ; Pe # RIGHT ANGLE BRACKET WITH DOT
+2994 ; Pe # RIGHT ARC GREATER-THAN BRACKET
+2996 ; Pe # DOUBLE RIGHT ARC LESS-THAN BRACKET
+2998 ; Pe # RIGHT BLACK TORTOISE SHELL BRACKET
+29D9 ; Pe # RIGHT WIGGLY FENCE
+29DB ; Pe # RIGHT DOUBLE WIGGLY FENCE
+29FD ; Pe # RIGHT-POINTING CURVED ANGLE BRACKET
+2E23 ; Pe # TOP RIGHT HALF BRACKET
+2E25 ; Pe # BOTTOM RIGHT HALF BRACKET
+2E27 ; Pe # RIGHT SIDEWAYS U BRACKET
+2E29 ; Pe # RIGHT DOUBLE PARENTHESIS
+3009 ; Pe # RIGHT ANGLE BRACKET
+300B ; Pe # RIGHT DOUBLE ANGLE BRACKET
+300D ; Pe # RIGHT CORNER BRACKET
+300F ; Pe # RIGHT WHITE CORNER BRACKET
+3011 ; Pe # RIGHT BLACK LENTICULAR BRACKET
+3015 ; Pe # RIGHT TORTOISE SHELL BRACKET
+3017 ; Pe # RIGHT WHITE LENTICULAR BRACKET
+3019 ; Pe # RIGHT WHITE TORTOISE SHELL BRACKET
+301B ; Pe # RIGHT WHITE SQUARE BRACKET
+301E..301F ; Pe # [2] DOUBLE PRIME QUOTATION MARK..LOW DOUBLE PRIME QUOTATION MARK
+FD3F ; Pe # ORNATE RIGHT PARENTHESIS
+FE18 ; Pe # PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET
+FE36 ; Pe # PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS
+FE38 ; Pe # PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET
+FE3A ; Pe # PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET
+FE3C ; Pe # PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET
+FE3E ; Pe # PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET
+FE40 ; Pe # PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET
+FE42 ; Pe # PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET
+FE44 ; Pe # PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET
+FE48 ; Pe # PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET
+FE5A ; Pe # SMALL RIGHT PARENTHESIS
+FE5C ; Pe # SMALL RIGHT CURLY BRACKET
+FE5E ; Pe # SMALL RIGHT TORTOISE SHELL BRACKET
+FF09 ; Pe # FULLWIDTH RIGHT PARENTHESIS
+FF3D ; Pe # FULLWIDTH RIGHT SQUARE BRACKET
+FF5D ; Pe # FULLWIDTH RIGHT CURLY BRACKET
+FF60 ; Pe # FULLWIDTH RIGHT WHITE PARENTHESIS
+FF63 ; Pe # HALFWIDTH RIGHT CORNER BRACKET
+
+# Total code points: 71
+
+# ================================================
+
+# General_Category=Connector_Punctuation
+
+005F ; Pc # LOW LINE
+203F..2040 ; Pc # [2] UNDERTIE..CHARACTER TIE
+2054 ; Pc # INVERTED UNDERTIE
+FE33..FE34 ; Pc # [2] PRESENTATION FORM FOR VERTICAL LOW LINE..PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
+FE4D..FE4F ; Pc # [3] DASHED LOW LINE..WAVY LOW LINE
+FF3F ; Pc # FULLWIDTH LOW LINE
+
+# Total code points: 10
+
+# ================================================
+
+# General_Category=Other_Punctuation
+
+0021..0023 ; Po # [3] EXCLAMATION MARK..NUMBER SIGN
+0025..0027 ; Po # [3] PERCENT SIGN..APOSTROPHE
+002A ; Po # ASTERISK
+002C ; Po # COMMA
+002E..002F ; Po # [2] FULL STOP..SOLIDUS
+003A..003B ; Po # [2] COLON..SEMICOLON
+003F..0040 ; Po # [2] QUESTION MARK..COMMERCIAL AT
+005C ; Po # REVERSE SOLIDUS
+00A1 ; Po # INVERTED EXCLAMATION MARK
+00B7 ; Po # MIDDLE DOT
+00BF ; Po # INVERTED QUESTION MARK
+037E ; Po # GREEK QUESTION MARK
+0387 ; Po # GREEK ANO TELEIA
+055A..055F ; Po # [6] ARMENIAN APOSTROPHE..ARMENIAN ABBREVIATION MARK
+0589 ; Po # ARMENIAN FULL STOP
+05C0 ; Po # HEBREW PUNCTUATION PASEQ
+05C3 ; Po # HEBREW PUNCTUATION SOF PASUQ
+05C6 ; Po # HEBREW PUNCTUATION NUN HAFUKHA
+05F3..05F4 ; Po # [2] HEBREW PUNCTUATION GERESH..HEBREW PUNCTUATION GERSHAYIM
+0609..060A ; Po # [2] ARABIC-INDIC PER MILLE SIGN..ARABIC-INDIC PER TEN THOUSAND SIGN
+060C..060D ; Po # [2] ARABIC COMMA..ARABIC DATE SEPARATOR
+061B ; Po # ARABIC SEMICOLON
+061E..061F ; Po # [2] ARABIC TRIPLE DOT PUNCTUATION MARK..ARABIC QUESTION MARK
+066A..066D ; Po # [4] ARABIC PERCENT SIGN..ARABIC FIVE POINTED STAR
+06D4 ; Po # ARABIC FULL STOP
+0700..070D ; Po # [14] SYRIAC END OF PARAGRAPH..SYRIAC HARKLEAN ASTERISCUS
+07F7..07F9 ; Po # [3] NKO SYMBOL GBAKURUNEN..NKO EXCLAMATION MARK
+0964..0965 ; Po # [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA
+0970 ; Po # DEVANAGARI ABBREVIATION SIGN
+0DF4 ; Po # SINHALA PUNCTUATION KUNDDALIYA
+0E4F ; Po # THAI CHARACTER FONGMAN
+0E5A..0E5B ; Po # [2] THAI CHARACTER ANGKHANKHU..THAI CHARACTER KHOMUT
+0F04..0F12 ; Po # [15] TIBETAN MARK INITIAL YIG MGO MDUN MA..TIBETAN MARK RGYA GRAM SHAD
+0F85 ; Po # TIBETAN MARK PALUTA
+0FD0..0FD4 ; Po # [5] TIBETAN MARK BSKA- SHOG GI MGO RGYAN..TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA
+104A..104F ; Po # [6] MYANMAR SIGN LITTLE SECTION..MYANMAR SYMBOL GENITIVE
+10FB ; Po # GEORGIAN PARAGRAPH SEPARATOR
+1361..1368 ; Po # [8] ETHIOPIC WORDSPACE..ETHIOPIC PARAGRAPH SEPARATOR
+166D..166E ; Po # [2] CANADIAN SYLLABICS CHI SIGN..CANADIAN SYLLABICS FULL STOP
+16EB..16ED ; Po # [3] RUNIC SINGLE PUNCTUATION..RUNIC CROSS PUNCTUATION
+1735..1736 ; Po # [2] PHILIPPINE SINGLE PUNCTUATION..PHILIPPINE DOUBLE PUNCTUATION
+17D4..17D6 ; Po # [3] KHMER SIGN KHAN..KHMER SIGN CAMNUC PII KUUH
+17D8..17DA ; Po # [3] KHMER SIGN BEYYAL..KHMER SIGN KOOMUUT
+1800..1805 ; Po # [6] MONGOLIAN BIRGA..MONGOLIAN FOUR DOTS
+1807..180A ; Po # [4] MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER..MONGOLIAN NIRUGU
+1944..1945 ; Po # [2] LIMBU EXCLAMATION MARK..LIMBU QUESTION MARK
+19DE..19DF ; Po # [2] NEW TAI LUE SIGN LAE..NEW TAI LUE SIGN LAEV
+1A1E..1A1F ; Po # [2] BUGINESE PALLAWA..BUGINESE END OF SECTION
+1B5A..1B60 ; Po # [7] BALINESE PANTI..BALINESE PAMENENG
+1C3B..1C3F ; Po # [5] LEPCHA PUNCTUATION TA-ROL..LEPCHA PUNCTUATION TSHOOK
+1C7E..1C7F ; Po # [2] OL CHIKI PUNCTUATION MUCAAD..OL CHIKI PUNCTUATION DOUBLE MUCAAD
+2016..2017 ; Po # [2] DOUBLE VERTICAL LINE..DOUBLE LOW LINE
+2020..2027 ; Po # [8] DAGGER..HYPHENATION POINT
+2030..2038 ; Po # [9] PER MILLE SIGN..CARET
+203B..203E ; Po # [4] REFERENCE MARK..OVERLINE
+2041..2043 ; Po # [3] CARET INSERTION POINT..HYPHEN BULLET
+2047..2051 ; Po # [11] DOUBLE QUESTION MARK..TWO ASTERISKS ALIGNED VERTICALLY
+2053 ; Po # SWUNG DASH
+2055..205E ; Po # [10] FLOWER PUNCTUATION MARK..VERTICAL FOUR DOTS
+2CF9..2CFC ; Po # [4] COPTIC OLD NUBIAN FULL STOP..COPTIC OLD NUBIAN VERSE DIVIDER
+2CFE..2CFF ; Po # [2] COPTIC FULL STOP..COPTIC MORPHOLOGICAL DIVIDER
+2E00..2E01 ; Po # [2] RIGHT ANGLE SUBSTITUTION MARKER..RIGHT ANGLE DOTTED SUBSTITUTION MARKER
+2E06..2E08 ; Po # [3] RAISED INTERPOLATION MARKER..DOTTED TRANSPOSITION MARKER
+2E0B ; Po # RAISED SQUARE
+2E0E..2E16 ; Po # [9] EDITORIAL CORONIS..DOTTED RIGHT-POINTING ANGLE
+2E18..2E19 ; Po # [2] INVERTED INTERROBANG..PALM BRANCH
+2E1B ; Po # TILDE WITH RING ABOVE
+2E1E..2E1F ; Po # [2] TILDE WITH DOT ABOVE..TILDE WITH DOT BELOW
+2E2A..2E2E ; Po # [5] TWO DOTS OVER ONE DOT PUNCTUATION..REVERSED QUESTION MARK
+2E30 ; Po # RING POINT
+3001..3003 ; Po # [3] IDEOGRAPHIC COMMA..DITTO MARK
+303D ; Po # PART ALTERNATION MARK
+30FB ; Po # KATAKANA MIDDLE DOT
+A60D..A60F ; Po # [3] VAI COMMA..VAI QUESTION MARK
+A673 ; Po # SLAVONIC ASTERISK
+A67E ; Po # CYRILLIC KAVYKA
+A874..A877 ; Po # [4] PHAGS-PA SINGLE HEAD MARK..PHAGS-PA MARK DOUBLE SHAD
+A8CE..A8CF ; Po # [2] SAURASHTRA DANDA..SAURASHTRA DOUBLE DANDA
+A92E..A92F ; Po # [2] KAYAH LI SIGN CWI..KAYAH LI SIGN SHYA
+A95F ; Po # REJANG SECTION MARK
+AA5C..AA5F ; Po # [4] CHAM PUNCTUATION SPIRAL..CHAM PUNCTUATION TRIPLE DANDA
+FE10..FE16 ; Po # [7] PRESENTATION FORM FOR VERTICAL COMMA..PRESENTATION FORM FOR VERTICAL QUESTION MARK
+FE19 ; Po # PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS
+FE30 ; Po # PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
+FE45..FE46 ; Po # [2] SESAME DOT..WHITE SESAME DOT
+FE49..FE4C ; Po # [4] DASHED OVERLINE..DOUBLE WAVY OVERLINE
+FE50..FE52 ; Po # [3] SMALL COMMA..SMALL FULL STOP
+FE54..FE57 ; Po # [4] SMALL SEMICOLON..SMALL EXCLAMATION MARK
+FE5F..FE61 ; Po # [3] SMALL NUMBER SIGN..SMALL ASTERISK
+FE68 ; Po # SMALL REVERSE SOLIDUS
+FE6A..FE6B ; Po # [2] SMALL PERCENT SIGN..SMALL COMMERCIAL AT
+FF01..FF03 ; Po # [3] FULLWIDTH EXCLAMATION MARK..FULLWIDTH NUMBER SIGN
+FF05..FF07 ; Po # [3] FULLWIDTH PERCENT SIGN..FULLWIDTH APOSTROPHE
+FF0A ; Po # FULLWIDTH ASTERISK
+FF0C ; Po # FULLWIDTH COMMA
+FF0E..FF0F ; Po # [2] FULLWIDTH FULL STOP..FULLWIDTH SOLIDUS
+FF1A..FF1B ; Po # [2] FULLWIDTH COLON..FULLWIDTH SEMICOLON
+FF1F..FF20 ; Po # [2] FULLWIDTH QUESTION MARK..FULLWIDTH COMMERCIAL AT
+FF3C ; Po # FULLWIDTH REVERSE SOLIDUS
+FF61 ; Po # HALFWIDTH IDEOGRAPHIC FULL STOP
+FF64..FF65 ; Po # [2] HALFWIDTH IDEOGRAPHIC COMMA..HALFWIDTH KATAKANA MIDDLE DOT
+10100..10101 ; Po # [2] AEGEAN WORD SEPARATOR LINE..AEGEAN WORD SEPARATOR DOT
+1039F ; Po # UGARITIC WORD DIVIDER
+103D0 ; Po # OLD PERSIAN WORD DIVIDER
+1091F ; Po # PHOENICIAN WORD SEPARATOR
+1093F ; Po # LYDIAN TRIANGULAR MARK
+10A50..10A58 ; Po # [9] KHAROSHTHI PUNCTUATION DOT..KHAROSHTHI PUNCTUATION LINES
+12470..12473 ; Po # [4] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL TRICOLON
+
+# Total code points: 315
+
+# ================================================
+
+# General_Category=Math_Symbol
+
+002B ; Sm # PLUS SIGN
+003C..003E ; Sm # [3] LESS-THAN SIGN..GREATER-THAN SIGN
+007C ; Sm # VERTICAL LINE
+007E ; Sm # TILDE
+00AC ; Sm # NOT SIGN
+00B1 ; Sm # PLUS-MINUS SIGN
+00D7 ; Sm # MULTIPLICATION SIGN
+00F7 ; Sm # DIVISION SIGN
+03F6 ; Sm # GREEK REVERSED LUNATE EPSILON SYMBOL
+0606..0608 ; Sm # [3] ARABIC-INDIC CUBE ROOT..ARABIC RAY
+2044 ; Sm # FRACTION SLASH
+2052 ; Sm # COMMERCIAL MINUS SIGN
+207A..207C ; Sm # [3] SUPERSCRIPT PLUS SIGN..SUPERSCRIPT EQUALS SIGN
+208A..208C ; Sm # [3] SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN
+2140..2144 ; Sm # [5] DOUBLE-STRUCK N-ARY SUMMATION..TURNED SANS-SERIF CAPITAL Y
+214B ; Sm # TURNED AMPERSAND
+2190..2194 ; Sm # [5] LEFTWARDS ARROW..LEFT RIGHT ARROW
+219A..219B ; Sm # [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE
+21A0 ; Sm # RIGHTWARDS TWO HEADED ARROW
+21A3 ; Sm # RIGHTWARDS ARROW WITH TAIL
+21A6 ; Sm # RIGHTWARDS ARROW FROM BAR
+21AE ; Sm # LEFT RIGHT ARROW WITH STROKE
+21CE..21CF ; Sm # [2] LEFT RIGHT DOUBLE ARROW WITH STROKE..RIGHTWARDS DOUBLE ARROW WITH STROKE
+21D2 ; Sm # RIGHTWARDS DOUBLE ARROW
+21D4 ; Sm # LEFT RIGHT DOUBLE ARROW
+21F4..22FF ; Sm # [268] RIGHT ARROW WITH SMALL CIRCLE..Z NOTATION BAG MEMBERSHIP
+2308..230B ; Sm # [4] LEFT CEILING..RIGHT FLOOR
+2320..2321 ; Sm # [2] TOP HALF INTEGRAL..BOTTOM HALF INTEGRAL
+237C ; Sm # RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW
+239B..23B3 ; Sm # [25] LEFT PARENTHESIS UPPER HOOK..SUMMATION BOTTOM
+23DC..23E1 ; Sm # [6] TOP PARENTHESIS..BOTTOM TORTOISE SHELL BRACKET
+25B7 ; Sm # WHITE RIGHT-POINTING TRIANGLE
+25C1 ; Sm # WHITE LEFT-POINTING TRIANGLE
+25F8..25FF ; Sm # [8] UPPER LEFT TRIANGLE..LOWER RIGHT TRIANGLE
+266F ; Sm # MUSIC SHARP SIGN
+27C0..27C4 ; Sm # [5] THREE DIMENSIONAL ANGLE..OPEN SUPERSET
+27C7..27CA ; Sm # [4] OR WITH DOT INSIDE..VERTICAL BAR WITH HORIZONTAL STROKE
+27CC ; Sm # LONG DIVISION
+27D0..27E5 ; Sm # [22] WHITE DIAMOND WITH CENTRED DOT..WHITE SQUARE WITH RIGHTWARDS TICK
+27F0..27FF ; Sm # [16] UPWARDS QUADRUPLE ARROW..LONG RIGHTWARDS SQUIGGLE ARROW
+2900..2982 ; Sm # [131] RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE..Z NOTATION TYPE COLON
+2999..29D7 ; Sm # [63] DOTTED FENCE..BLACK HOURGLASS
+29DC..29FB ; Sm # [32] INCOMPLETE INFINITY..TRIPLE PLUS
+29FE..2AFF ; Sm # [258] TINY..N-ARY WHITE VERTICAL BAR
+2B30..2B44 ; Sm # [21] LEFT ARROW WITH SMALL CIRCLE..RIGHTWARDS ARROW THROUGH SUPERSET
+2B47..2B4C ; Sm # [6] REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW..RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR
+FB29 ; Sm # HEBREW LETTER ALTERNATIVE PLUS SIGN
+FE62 ; Sm # SMALL PLUS SIGN
+FE64..FE66 ; Sm # [3] SMALL LESS-THAN SIGN..SMALL EQUALS SIGN
+FF0B ; Sm # FULLWIDTH PLUS SIGN
+FF1C..FF1E ; Sm # [3] FULLWIDTH LESS-THAN SIGN..FULLWIDTH GREATER-THAN SIGN
+FF5C ; Sm # FULLWIDTH VERTICAL LINE
+FF5E ; Sm # FULLWIDTH TILDE
+FFE2 ; Sm # FULLWIDTH NOT SIGN
+FFE9..FFEC ; Sm # [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS ARROW
+1D6C1 ; Sm # MATHEMATICAL BOLD NABLA
+1D6DB ; Sm # MATHEMATICAL BOLD PARTIAL DIFFERENTIAL
+1D6FB ; Sm # MATHEMATICAL ITALIC NABLA
+1D715 ; Sm # MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL
+1D735 ; Sm # MATHEMATICAL BOLD ITALIC NABLA
+1D74F ; Sm # MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL
+1D76F ; Sm # MATHEMATICAL SANS-SERIF BOLD NABLA
+1D789 ; Sm # MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL
+1D7A9 ; Sm # MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA
+1D7C3 ; Sm # MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
+
+# Total code points: 945
+
+# ================================================
+
+# General_Category=Currency_Symbol
+
+0024 ; Sc # DOLLAR SIGN
+00A2..00A5 ; Sc # [4] CENT SIGN..YEN SIGN
+060B ; Sc # AFGHANI SIGN
+09F2..09F3 ; Sc # [2] BENGALI RUPEE MARK..BENGALI RUPEE SIGN
+0AF1 ; Sc # GUJARATI RUPEE SIGN
+0BF9 ; Sc # TAMIL RUPEE SIGN
+0E3F ; Sc # THAI CURRENCY SYMBOL BAHT
+17DB ; Sc # KHMER CURRENCY SYMBOL RIEL
+20A0..20B5 ; Sc # [22] EURO-CURRENCY SIGN..CEDI SIGN
+FDFC ; Sc # RIAL SIGN
+FE69 ; Sc # SMALL DOLLAR SIGN
+FF04 ; Sc # FULLWIDTH DOLLAR SIGN
+FFE0..FFE1 ; Sc # [2] FULLWIDTH CENT SIGN..FULLWIDTH POUND SIGN
+FFE5..FFE6 ; Sc # [2] FULLWIDTH YEN SIGN..FULLWIDTH WON SIGN
+
+# Total code points: 41
+
+# ================================================
+
+# General_Category=Modifier_Symbol
+
+005E ; Sk # CIRCUMFLEX ACCENT
+0060 ; Sk # GRAVE ACCENT
+00A8 ; Sk # DIAERESIS
+00AF ; Sk # MACRON
+00B4 ; Sk # ACUTE ACCENT
+00B8 ; Sk # CEDILLA
+02C2..02C5 ; Sk # [4] MODIFIER LETTER LEFT ARROWHEAD..MODIFIER LETTER DOWN ARROWHEAD
+02D2..02DF ; Sk # [14] MODIFIER LETTER CENTRED RIGHT HALF RING..MODIFIER LETTER CROSS ACCENT
+02E5..02EB ; Sk # [7] MODIFIER LETTER EXTRA-HIGH TONE BAR..MODIFIER LETTER YANG DEPARTING TONE MARK
+02ED ; Sk # MODIFIER LETTER UNASPIRATED
+02EF..02FF ; Sk # [17] MODIFIER LETTER LOW DOWN ARROWHEAD..MODIFIER LETTER LOW LEFT ARROW
+0375 ; Sk # GREEK LOWER NUMERAL SIGN
+0384..0385 ; Sk # [2] GREEK TONOS..GREEK DIALYTIKA TONOS
+1FBD ; Sk # GREEK KORONIS
+1FBF..1FC1 ; Sk # [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI
+1FCD..1FCF ; Sk # [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI
+1FDD..1FDF ; Sk # [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI
+1FED..1FEF ; Sk # [3] GREEK DIALYTIKA AND VARIA..GREEK VARIA
+1FFD..1FFE ; Sk # [2] GREEK OXIA..GREEK DASIA
+309B..309C ; Sk # [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+A700..A716 ; Sk # [23] MODIFIER LETTER CHINESE TONE YIN PING..MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR
+A720..A721 ; Sk # [2] MODIFIER LETTER STRESS AND HIGH TONE..MODIFIER LETTER STRESS AND LOW TONE
+A789..A78A ; Sk # [2] MODIFIER LETTER COLON..MODIFIER LETTER SHORT EQUALS SIGN
+FF3E ; Sk # FULLWIDTH CIRCUMFLEX ACCENT
+FF40 ; Sk # FULLWIDTH GRAVE ACCENT
+FFE3 ; Sk # FULLWIDTH MACRON
+
+# Total code points: 99
+
+# ================================================
+
+# General_Category=Other_Symbol
+
+00A6..00A7 ; So # [2] BROKEN BAR..SECTION SIGN
+00A9 ; So # COPYRIGHT SIGN
+00AE ; So # REGISTERED SIGN
+00B0 ; So # DEGREE SIGN
+00B6 ; So # PILCROW SIGN
+0482 ; So # CYRILLIC THOUSANDS SIGN
+060E..060F ; So # [2] ARABIC POETIC VERSE SIGN..ARABIC SIGN MISRA
+06E9 ; So # ARABIC PLACE OF SAJDAH
+06FD..06FE ; So # [2] ARABIC SIGN SINDHI AMPERSAND..ARABIC SIGN SINDHI POSTPOSITION MEN
+07F6 ; So # NKO SYMBOL OO DENNEN
+09FA ; So # BENGALI ISSHAR
+0B70 ; So # ORIYA ISSHAR
+0BF3..0BF8 ; So # [6] TAMIL DAY SIGN..TAMIL AS ABOVE SIGN
+0BFA ; So # TAMIL NUMBER SIGN
+0C7F ; So # TELUGU SIGN TUUMU
+0CF1..0CF2 ; So # [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA
+0D79 ; So # MALAYALAM DATE MARK
+0F01..0F03 ; So # [3] TIBETAN MARK GTER YIG MGO TRUNCATED A..TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA
+0F13..0F17 ; So # [5] TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN..TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS
+0F1A..0F1F ; So # [6] TIBETAN SIGN RDEL DKAR GCIG..TIBETAN SIGN RDEL DKAR RDEL NAG
+0F34 ; So # TIBETAN MARK BSDUS RTAGS
+0F36 ; So # TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN
+0F38 ; So # TIBETAN MARK CHE MGO
+0FBE..0FC5 ; So # [8] TIBETAN KU RU KHA..TIBETAN SYMBOL RDO RJE
+0FC7..0FCC ; So # [6] TIBETAN SYMBOL RDO RJE RGYA GRAM..TIBETAN SYMBOL NOR BU BZHI -KHYIL
+0FCE..0FCF ; So # [2] TIBETAN SIGN RDEL NAG RDEL DKAR..TIBETAN SIGN RDEL NAG GSUM
+109E..109F ; So # [2] MYANMAR SYMBOL SHAN ONE..MYANMAR SYMBOL SHAN EXCLAMATION
+1360 ; So # ETHIOPIC SECTION MARK
+1390..1399 ; So # [10] ETHIOPIC TONAL MARK YIZET..ETHIOPIC TONAL MARK KURT
+1940 ; So # LIMBU SIGN LOO
+19E0..19FF ; So # [32] KHMER SYMBOL PATHAMASAT..KHMER SYMBOL DAP-PRAM ROC
+1B61..1B6A ; So # [10] BALINESE MUSICAL SYMBOL DONG..BALINESE MUSICAL SYMBOL DANG GEDE
+1B74..1B7C ; So # [9] BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG..BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING
+2100..2101 ; So # [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT
+2103..2106 ; So # [4] DEGREE CELSIUS..CADA UNA
+2108..2109 ; So # [2] SCRUPLE..DEGREE FAHRENHEIT
+2114 ; So # L B BAR SYMBOL
+2116..2118 ; So # [3] NUMERO SIGN..SCRIPT CAPITAL P
+211E..2123 ; So # [6] PRESCRIPTION TAKE..VERSICLE
+2125 ; So # OUNCE SIGN
+2127 ; So # INVERTED OHM SIGN
+2129 ; So # TURNED GREEK SMALL LETTER IOTA
+212E ; So # ESTIMATED SYMBOL
+213A..213B ; So # [2] ROTATED CAPITAL Q..FACSIMILE SIGN
+214A ; So # PROPERTY LINE
+214C..214D ; So # [2] PER SIGN..AKTIESELSKAB
+214F ; So # SYMBOL FOR SAMARITAN SOURCE
+2195..2199 ; So # [5] UP DOWN ARROW..SOUTH WEST ARROW
+219C..219F ; So # [4] LEFTWARDS WAVE ARROW..UPWARDS TWO HEADED ARROW
+21A1..21A2 ; So # [2] DOWNWARDS TWO HEADED ARROW..LEFTWARDS ARROW WITH TAIL
+21A4..21A5 ; So # [2] LEFTWARDS ARROW FROM BAR..UPWARDS ARROW FROM BAR
+21A7..21AD ; So # [7] DOWNWARDS ARROW FROM BAR..LEFT RIGHT WAVE ARROW
+21AF..21CD ; So # [31] DOWNWARDS ZIGZAG ARROW..LEFTWARDS DOUBLE ARROW WITH STROKE
+21D0..21D1 ; So # [2] LEFTWARDS DOUBLE ARROW..UPWARDS DOUBLE ARROW
+21D3 ; So # DOWNWARDS DOUBLE ARROW
+21D5..21F3 ; So # [31] UP DOWN DOUBLE ARROW..UP DOWN WHITE ARROW
+2300..2307 ; So # [8] DIAMETER SIGN..WAVY LINE
+230C..231F ; So # [20] BOTTOM RIGHT CROP..BOTTOM RIGHT CORNER
+2322..2328 ; So # [7] FROWN..KEYBOARD
+232B..237B ; So # [81] ERASE TO THE LEFT..NOT CHECK MARK
+237D..239A ; So # [30] SHOULDERED OPEN BOX..CLEAR SCREEN SYMBOL
+23B4..23DB ; So # [40] TOP SQUARE BRACKET..FUSE
+23E2..23E7 ; So # [6] WHITE TRAPEZIUM..ELECTRICAL INTERSECTION
+2400..2426 ; So # [39] SYMBOL FOR NULL..SYMBOL FOR SUBSTITUTE FORM TWO
+2440..244A ; So # [11] OCR HOOK..OCR DOUBLE BACKSLASH
+249C..24E9 ; So # [78] PARENTHESIZED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z
+2500..25B6 ; So # [183] BOX DRAWINGS LIGHT HORIZONTAL..BLACK RIGHT-POINTING TRIANGLE
+25B8..25C0 ; So # [9] BLACK RIGHT-POINTING SMALL TRIANGLE..BLACK LEFT-POINTING TRIANGLE
+25C2..25F7 ; So # [54] BLACK LEFT-POINTING SMALL TRIANGLE..WHITE CIRCLE WITH UPPER RIGHT QUADRANT
+2600..266E ; So # [111] BLACK SUN WITH RAYS..MUSIC NATURAL SIGN
+2670..269D ; So # [46] WEST SYRIAC CROSS..OUTLINED WHITE STAR
+26A0..26BC ; So # [29] WARNING SIGN..SESQUIQUADRATE
+26C0..26C3 ; So # [4] WHITE DRAUGHTS MAN..BLACK DRAUGHTS KING
+2701..2704 ; So # [4] UPPER BLADE SCISSORS..WHITE SCISSORS
+2706..2709 ; So # [4] TELEPHONE LOCATION SIGN..ENVELOPE
+270C..2727 ; So # [28] VICTORY HAND..WHITE FOUR POINTED STAR
+2729..274B ; So # [35] STRESS OUTLINED WHITE STAR..HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
+274D ; So # SHADOWED WHITE CIRCLE
+274F..2752 ; So # [4] LOWER RIGHT DROP-SHADOWED WHITE SQUARE..UPPER RIGHT SHADOWED WHITE SQUARE
+2756 ; So # BLACK DIAMOND MINUS WHITE X
+2758..275E ; So # [7] LIGHT VERTICAL BAR..HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT
+2761..2767 ; So # [7] CURVED STEM PARAGRAPH SIGN ORNAMENT..ROTATED FLORAL HEART BULLET
+2794 ; So # HEAVY WIDE-HEADED RIGHTWARDS ARROW
+2798..27AF ; So # [24] HEAVY SOUTH EAST ARROW..NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+27B1..27BE ; So # [14] NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW..OPEN-OUTLINED RIGHTWARDS ARROW
+2800..28FF ; So # [256] BRAILLE PATTERN BLANK..BRAILLE PATTERN DOTS-12345678
+2B00..2B2F ; So # [48] NORTH EAST WHITE ARROW..WHITE VERTICAL ELLIPSE
+2B45..2B46 ; So # [2] LEFTWARDS QUADRUPLE ARROW..RIGHTWARDS QUADRUPLE ARROW
+2B50..2B54 ; So # [5] WHITE MEDIUM STAR..WHITE RIGHT-POINTING PENTAGON
+2CE5..2CEA ; So # [6] COPTIC SYMBOL MI RO..COPTIC SYMBOL SHIMA SIMA
+2E80..2E99 ; So # [26] CJK RADICAL REPEAT..CJK RADICAL RAP
+2E9B..2EF3 ; So # [89] CJK RADICAL CHOKE..CJK RADICAL C-SIMPLIFIED TURTLE
+2F00..2FD5 ; So # [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE
+2FF0..2FFB ; So # [12] IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT..IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID
+3004 ; So # JAPANESE INDUSTRIAL STANDARD SYMBOL
+3012..3013 ; So # [2] POSTAL MARK..GETA MARK
+3020 ; So # POSTAL MARK FACE
+3036..3037 ; So # [2] CIRCLED POSTAL MARK..IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL
+303E..303F ; So # [2] IDEOGRAPHIC VARIATION INDICATOR..IDEOGRAPHIC HALF FILL SPACE
+3190..3191 ; So # [2] IDEOGRAPHIC ANNOTATION LINKING MARK..IDEOGRAPHIC ANNOTATION REVERSE MARK
+3196..319F ; So # [10] IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK
+31C0..31E3 ; So # [36] CJK STROKE T..CJK STROKE Q
+3200..321E ; So # [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU
+322A..3243 ; So # [26] PARENTHESIZED IDEOGRAPH MOON..PARENTHESIZED IDEOGRAPH REACH
+3250 ; So # PARTNERSHIP SIGN
+3260..327F ; So # [32] CIRCLED HANGUL KIYEOK..KOREAN STANDARD SYMBOL
+328A..32B0 ; So # [39] CIRCLED IDEOGRAPH MOON..CIRCLED IDEOGRAPH NIGHT
+32C0..32FE ; So # [63] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..CIRCLED KATAKANA WO
+3300..33FF ; So # [256] SQUARE APAATO..SQUARE GAL
+4DC0..4DFF ; So # [64] HEXAGRAM FOR THE CREATIVE HEAVEN..HEXAGRAM FOR BEFORE COMPLETION
+A490..A4C6 ; So # [55] YI RADICAL QOT..YI RADICAL KE
+A828..A82B ; So # [4] SYLOTI NAGRI POETRY MARK-1..SYLOTI NAGRI POETRY MARK-4
+FDFD ; So # ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM
+FFE4 ; So # FULLWIDTH BROKEN BAR
+FFE8 ; So # HALFWIDTH FORMS LIGHT VERTICAL
+FFED..FFEE ; So # [2] HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CIRCLE
+FFFC..FFFD ; So # [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARACTER
+10102 ; So # AEGEAN CHECK MARK
+10137..1013F ; So # [9] AEGEAN WEIGHT BASE UNIT..AEGEAN MEASURE THIRD SUBUNIT
+10179..10189 ; So # [17] GREEK YEAR SIGN..GREEK TRYBLION BASE SIGN
+10190..1019B ; So # [12] ROMAN SEXTANS SIGN..ROMAN CENTURIAL SIGN
+101D0..101FC ; So # [45] PHAISTOS DISC SIGN PEDESTRIAN..PHAISTOS DISC SIGN WAVY BAND
+1D000..1D0F5 ; So # [246] BYZANTINE MUSICAL SYMBOL PSILI..BYZANTINE MUSICAL SYMBOL GORGON NEO KATO
+1D100..1D126 ; So # [39] MUSICAL SYMBOL SINGLE BARLINE..MUSICAL SYMBOL DRUM CLEF-2
+1D129..1D164 ; So # [60] MUSICAL SYMBOL MULTIPLE MEASURE REST..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D16A..1D16C ; So # [3] MUSICAL SYMBOL FINGERED TREMOLO-1..MUSICAL SYMBOL FINGERED TREMOLO-3
+1D183..1D184 ; So # [2] MUSICAL SYMBOL ARPEGGIATO UP..MUSICAL SYMBOL ARPEGGIATO DOWN
+1D18C..1D1A9 ; So # [30] MUSICAL SYMBOL RINFORZANDO..MUSICAL SYMBOL DEGREE SLASH
+1D1AE..1D1DD ; So # [48] MUSICAL SYMBOL PEDAL MARK..MUSICAL SYMBOL PES SUBPUNCTIS
+1D200..1D241 ; So # [66] GREEK VOCAL NOTATION SYMBOL-1..GREEK INSTRUMENTAL NOTATION SYMBOL-54
+1D245 ; So # GREEK MUSICAL LEIMMA
+1D300..1D356 ; So # [87] MONOGRAM FOR EARTH..TETRAGRAM FOR FOSTERING
+1F000..1F02B ; So # [44] MAHJONG TILE EAST WIND..MAHJONG TILE BACK
+1F030..1F093 ; So # [100] DOMINO TILE HORIZONTAL BACK..DOMINO TILE VERTICAL-06-06
+
+# Total code points: 3225
+
+# ================================================
+
+# General_Category=Initial_Punctuation
+
+00AB ; Pi # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+2018 ; Pi # LEFT SINGLE QUOTATION MARK
+201B..201C ; Pi # [2] SINGLE HIGH-REVERSED-9 QUOTATION MARK..LEFT DOUBLE QUOTATION MARK
+201F ; Pi # DOUBLE HIGH-REVERSED-9 QUOTATION MARK
+2039 ; Pi # SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+2E02 ; Pi # LEFT SUBSTITUTION BRACKET
+2E04 ; Pi # LEFT DOTTED SUBSTITUTION BRACKET
+2E09 ; Pi # LEFT TRANSPOSITION BRACKET
+2E0C ; Pi # LEFT RAISED OMISSION BRACKET
+2E1C ; Pi # LEFT LOW PARAPHRASE BRACKET
+2E20 ; Pi # LEFT VERTICAL BAR WITH QUILL
+
+# Total code points: 12
+
+# ================================================
+
+# General_Category=Final_Punctuation
+
+00BB ; Pf # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+2019 ; Pf # RIGHT SINGLE QUOTATION MARK
+201D ; Pf # RIGHT DOUBLE QUOTATION MARK
+203A ; Pf # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+2E03 ; Pf # RIGHT SUBSTITUTION BRACKET
+2E05 ; Pf # RIGHT DOTTED SUBSTITUTION BRACKET
+2E0A ; Pf # RIGHT TRANSPOSITION BRACKET
+2E0D ; Pf # RIGHT RAISED OMISSION BRACKET
+2E1D ; Pf # RIGHT LOW PARAPHRASE BRACKET
+2E21 ; Pf # RIGHT VERTICAL BAR WITH QUILL
+
+# Total code points: 10
+
+# EOF
diff --git a/third_party/harfbuzz/contrib/tables/GraphemeBreakProperty.txt b/third_party/harfbuzz/contrib/tables/GraphemeBreakProperty.txt
new file mode 100644
index 0000000..50477a1
--- /dev/null
+++ b/third_party/harfbuzz/contrib/tables/GraphemeBreakProperty.txt
@@ -0,0 +1,1166 @@
+# GraphemeBreakProperty-5.1.0.txt
+# Date: 2008-03-03, 21:57:47 GMT [MD]
+#
+# Unicode Character Database
+# Copyright (c) 1991-2008 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+# For documentation, see UCD.html
+
+# ================================================
+
+# Property: Grapheme_Cluster_Break
+
+# All code points not explicitly listed for Grapheme_Cluster_Break
+# have the value Other (XX).
+
+# @missing: 0000..10FFFF; Other
+
+# ================================================
+
+000D ; CR # Cc <control-000D>
+
+# Total code points: 1
+
+# ================================================
+
+000A ; LF # Cc <control-000A>
+
+# Total code points: 1
+
+# ================================================
+
+0000..0009 ; Control # Cc [10] <control-0000>..<control-0009>
+000B..000C ; Control # Cc [2] <control-000B>..<control-000C>
+000E..001F ; Control # Cc [18] <control-000E>..<control-001F>
+007F..009F ; Control # Cc [33] <control-007F>..<control-009F>
+00AD ; Control # Cf SOFT HYPHEN
+0600..0603 ; Control # Cf [4] ARABIC NUMBER SIGN..ARABIC SIGN SAFHA
+06DD ; Control # Cf ARABIC END OF AYAH
+070F ; Control # Cf SYRIAC ABBREVIATION MARK
+17B4..17B5 ; Control # Cf [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA
+200B ; Control # Cf ZERO WIDTH SPACE
+200E..200F ; Control # Cf [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK
+2028 ; Control # Zl LINE SEPARATOR
+2029 ; Control # Zp PARAGRAPH SEPARATOR
+202A..202E ; Control # Cf [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE
+2060..2064 ; Control # Cf [5] WORD JOINER..INVISIBLE PLUS
+206A..206F ; Control # Cf [6] INHIBIT SYMMETRIC SWAPPING..NOMINAL DIGIT SHAPES
+FEFF ; Control # Cf ZERO WIDTH NO-BREAK SPACE
+FFF9..FFFB ; Control # Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR
+1D173..1D17A ; Control # Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE
+E0001 ; Control # Cf LANGUAGE TAG
+E0020..E007F ; Control # Cf [96] TAG SPACE..CANCEL TAG
+
+# Total code points: 202
+
+# ================================================
+
+0300..036F ; Extend # Mn [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X
+0483..0487 ; Extend # Mn [5] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC POKRYTIE
+0488..0489 ; Extend # Me [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN
+0591..05BD ; Extend # Mn [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG
+05BF ; Extend # Mn HEBREW POINT RAFE
+05C1..05C2 ; Extend # Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT
+05C4..05C5 ; Extend # Mn [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT
+05C7 ; Extend # Mn HEBREW POINT QAMATS QATAN
+0610..061A ; Extend # Mn [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA
+064B..065E ; Extend # Mn [20] ARABIC FATHATAN..ARABIC FATHA WITH TWO DOTS
+0670 ; Extend # Mn ARABIC LETTER SUPERSCRIPT ALEF
+06D6..06DC ; Extend # Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN
+06DE ; Extend # Me ARABIC START OF RUB EL HIZB
+06DF..06E4 ; Extend # Mn [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA
+06E7..06E8 ; Extend # Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON
+06EA..06ED ; Extend # Mn [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM
+0711 ; Extend # Mn SYRIAC LETTER SUPERSCRIPT ALAPH
+0730..074A ; Extend # Mn [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH
+07A6..07B0 ; Extend # Mn [11] THAANA ABAFILI..THAANA SUKUN
+07EB..07F3 ; Extend # Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE
+0901..0902 ; Extend # Mn [2] DEVANAGARI SIGN CANDRABINDU..DEVANAGARI SIGN ANUSVARA
+093C ; Extend # Mn DEVANAGARI SIGN NUKTA
+0941..0948 ; Extend # Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI
+094D ; Extend # Mn DEVANAGARI SIGN VIRAMA
+0951..0954 ; Extend # Mn [4] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI ACUTE ACCENT
+0962..0963 ; Extend # Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL
+0981 ; Extend # Mn BENGALI SIGN CANDRABINDU
+09BC ; Extend # Mn BENGALI SIGN NUKTA
+09BE ; Extend # Mc BENGALI VOWEL SIGN AA
+09C1..09C4 ; Extend # Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR
+09CD ; Extend # Mn BENGALI SIGN VIRAMA
+09D7 ; Extend # Mc BENGALI AU LENGTH MARK
+09E2..09E3 ; Extend # Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL
+0A01..0A02 ; Extend # Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI
+0A3C ; Extend # Mn GURMUKHI SIGN NUKTA
+0A41..0A42 ; Extend # Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU
+0A47..0A48 ; Extend # Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI
+0A4B..0A4D ; Extend # Mn [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA
+0A51 ; Extend # Mn GURMUKHI SIGN UDAAT
+0A70..0A71 ; Extend # Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK
+0A75 ; Extend # Mn GURMUKHI SIGN YAKASH
+0A81..0A82 ; Extend # Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA
+0ABC ; Extend # Mn GUJARATI SIGN NUKTA
+0AC1..0AC5 ; Extend # Mn [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E
+0AC7..0AC8 ; Extend # Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI
+0ACD ; Extend # Mn GUJARATI SIGN VIRAMA
+0AE2..0AE3 ; Extend # Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL
+0B01 ; Extend # Mn ORIYA SIGN CANDRABINDU
+0B3C ; Extend # Mn ORIYA SIGN NUKTA
+0B3E ; Extend # Mc ORIYA VOWEL SIGN AA
+0B3F ; Extend # Mn ORIYA VOWEL SIGN I
+0B41..0B44 ; Extend # Mn [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR
+0B4D ; Extend # Mn ORIYA SIGN VIRAMA
+0B56 ; Extend # Mn ORIYA AI LENGTH MARK
+0B57 ; Extend # Mc ORIYA AU LENGTH MARK
+0B62..0B63 ; Extend # Mn [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL
+0B82 ; Extend # Mn TAMIL SIGN ANUSVARA
+0BBE ; Extend # Mc TAMIL VOWEL SIGN AA
+0BC0 ; Extend # Mn TAMIL VOWEL SIGN II
+0BCD ; Extend # Mn TAMIL SIGN VIRAMA
+0BD7 ; Extend # Mc TAMIL AU LENGTH MARK
+0C3E..0C40 ; Extend # Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II
+0C46..0C48 ; Extend # Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI
+0C4A..0C4D ; Extend # Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA
+0C55..0C56 ; Extend # Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK
+0C62..0C63 ; Extend # Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL
+0CBC ; Extend # Mn KANNADA SIGN NUKTA
+0CBF ; Extend # Mn KANNADA VOWEL SIGN I
+0CC2 ; Extend # Mc KANNADA VOWEL SIGN UU
+0CC6 ; Extend # Mn KANNADA VOWEL SIGN E
+0CCC..0CCD ; Extend # Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA
+0CD5..0CD6 ; Extend # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK
+0CE2..0CE3 ; Extend # Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL
+0D3E ; Extend # Mc MALAYALAM VOWEL SIGN AA
+0D41..0D44 ; Extend # Mn [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR
+0D4D ; Extend # Mn MALAYALAM SIGN VIRAMA
+0D57 ; Extend # Mc MALAYALAM AU LENGTH MARK
+0D62..0D63 ; Extend # Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL
+0DCA ; Extend # Mn SINHALA SIGN AL-LAKUNA
+0DCF ; Extend # Mc SINHALA VOWEL SIGN AELA-PILLA
+0DD2..0DD4 ; Extend # Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA
+0DD6 ; Extend # Mn SINHALA VOWEL SIGN DIGA PAA-PILLA
+0DDF ; Extend # Mc SINHALA VOWEL SIGN GAYANUKITTA
+0E30 ; Extend # Lo THAI CHARACTER SARA A
+0E31 ; Extend # Mn THAI CHARACTER MAI HAN-AKAT
+0E32..0E33 ; Extend # Lo [2] THAI CHARACTER SARA AA..THAI CHARACTER SARA AM
+0E34..0E3A ; Extend # Mn [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU
+0E45 ; Extend # Lo THAI CHARACTER LAKKHANGYAO
+0E47..0E4E ; Extend # Mn [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN
+0EB0 ; Extend # Lo LAO VOWEL SIGN A
+0EB1 ; Extend # Mn LAO VOWEL SIGN MAI KAN
+0EB2..0EB3 ; Extend # Lo [2] LAO VOWEL SIGN AA..LAO VOWEL SIGN AM
+0EB4..0EB9 ; Extend # Mn [6] LAO VOWEL SIGN I..LAO VOWEL SIGN UU
+0EBB..0EBC ; Extend # Mn [2] LAO VOWEL SIGN MAI KON..LAO SEMIVOWEL SIGN LO
+0EC8..0ECD ; Extend # Mn [6] LAO TONE MAI EK..LAO NIGGAHITA
+0F18..0F19 ; Extend # Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS
+0F35 ; Extend # Mn TIBETAN MARK NGAS BZUNG NYI ZLA
+0F37 ; Extend # Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS
+0F39 ; Extend # Mn TIBETAN MARK TSA -PHRU
+0F71..0F7E ; Extend # Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO
+0F80..0F84 ; Extend # Mn [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA
+0F86..0F87 ; Extend # Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS
+0F90..0F97 ; Extend # Mn [8] TIBETAN SUBJOINED LETTER KA..TIBETAN SUBJOINED LETTER JA
+0F99..0FBC ; Extend # Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA
+0FC6 ; Extend # Mn TIBETAN SYMBOL PADMA GDAN
+102D..1030 ; Extend # Mn [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU
+1032..1037 ; Extend # Mn [6] MYANMAR VOWEL SIGN AI..MYANMAR SIGN DOT BELOW
+1039..103A ; Extend # Mn [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT
+103D..103E ; Extend # Mn [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA
+1058..1059 ; Extend # Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL
+105E..1060 ; Extend # Mn [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA
+1071..1074 ; Extend # Mn [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE
+1082 ; Extend # Mn MYANMAR CONSONANT SIGN SHAN MEDIAL WA
+1085..1086 ; Extend # Mn [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y
+108D ; Extend # Mn MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE
+135F ; Extend # Mn ETHIOPIC COMBINING GEMINATION MARK
+1712..1714 ; Extend # Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA
+1732..1734 ; Extend # Mn [3] HANUNOO VOWEL SIGN I..HANUNOO SIGN PAMUDPOD
+1752..1753 ; Extend # Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U
+1772..1773 ; Extend # Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U
+17B7..17BD ; Extend # Mn [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA
+17C6 ; Extend # Mn KHMER SIGN NIKAHIT
+17C9..17D3 ; Extend # Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT
+17DD ; Extend # Mn KHMER SIGN ATTHACAN
+180B..180D ; Extend # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
+18A9 ; Extend # Mn MONGOLIAN LETTER ALI GALI DAGALGA
+1920..1922 ; Extend # Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U
+1927..1928 ; Extend # Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O
+1932 ; Extend # Mn LIMBU SMALL LETTER ANUSVARA
+1939..193B ; Extend # Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I
+1A17..1A18 ; Extend # Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U
+1B00..1B03 ; Extend # Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG
+1B34 ; Extend # Mn BALINESE SIGN REREKAN
+1B36..1B3A ; Extend # Mn [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA
+1B3C ; Extend # Mn BALINESE VOWEL SIGN LA LENGA
+1B42 ; Extend # Mn BALINESE VOWEL SIGN PEPET
+1B6B..1B73 ; Extend # Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG
+1B80..1B81 ; Extend # Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR
+1BA2..1BA5 ; Extend # Mn [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU
+1BA8..1BA9 ; Extend # Mn [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG
+1C2C..1C33 ; Extend # Mn [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T
+1C36..1C37 ; Extend # Mn [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA
+1DC0..1DE6 ; Extend # Mn [39] COMBINING DOTTED GRAVE ACCENT..COMBINING LATIN SMALL LETTER Z
+1DFE..1DFF ; Extend # Mn [2] COMBINING LEFT ARROWHEAD ABOVE..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
+200C..200D ; Extend # Cf [2] ZERO WIDTH NON-JOINER..ZERO WIDTH JOINER
+20D0..20DC ; Extend # Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE
+20DD..20E0 ; Extend # Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH
+20E1 ; Extend # Mn COMBINING LEFT RIGHT ARROW ABOVE
+20E2..20E4 ; Extend # Me [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE
+20E5..20F0 ; Extend # Mn [12] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING ASTERISK ABOVE
+2DE0..2DFF ; Extend # Mn [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS
+302A..302F ; Extend # Mn [6] IDEOGRAPHIC LEVEL TONE MARK..HANGUL DOUBLE DOT TONE MARK
+3099..309A ; Extend # Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+A66F ; Extend # Mn COMBINING CYRILLIC VZMET
+A670..A672 ; Extend # Me [3] COMBINING CYRILLIC TEN MILLIONS SIGN..COMBINING CYRILLIC THOUSAND MILLIONS SIGN
+A67C..A67D ; Extend # Mn [2] COMBINING CYRILLIC KAVYKA..COMBINING CYRILLIC PAYEROK
+A802 ; Extend # Mn SYLOTI NAGRI SIGN DVISVARA
+A806 ; Extend # Mn SYLOTI NAGRI SIGN HASANTA
+A80B ; Extend # Mn SYLOTI NAGRI SIGN ANUSVARA
+A825..A826 ; Extend # Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E
+A8C4 ; Extend # Mn SAURASHTRA SIGN VIRAMA
+A926..A92D ; Extend # Mn [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU
+A947..A951 ; Extend # Mn [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R
+AA29..AA2E ; Extend # Mn [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE
+AA31..AA32 ; Extend # Mn [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE
+AA35..AA36 ; Extend # Mn [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA
+AA43 ; Extend # Mn CHAM CONSONANT SIGN FINAL NG
+AA4C ; Extend # Mn CHAM CONSONANT SIGN FINAL M
+FB1E ; Extend # Mn HEBREW POINT JUDEO-SPANISH VARIKA
+FE00..FE0F ; Extend # Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16
+FE20..FE26 ; Extend # Mn [7] COMBINING LIGATURE LEFT HALF..COMBINING CONJOINING MACRON
+FF9E..FF9F ; Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+101FD ; Extend # Mn PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE
+10A01..10A03 ; Extend # Mn [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R
+10A05..10A06 ; Extend # Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O
+10A0C..10A0F ; Extend # Mn [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA
+10A38..10A3A ; Extend # Mn [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW
+10A3F ; Extend # Mn KHAROSHTHI VIRAMA
+1D165 ; Extend # Mc MUSICAL SYMBOL COMBINING STEM
+1D167..1D169 ; Extend # Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3
+1D16E..1D172 ; Extend # Mc [5] MUSICAL SYMBOL COMBINING FLAG-1..MUSICAL SYMBOL COMBINING FLAG-5
+1D17B..1D182 ; Extend # Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE
+1D185..1D18B ; Extend # Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE
+1D1AA..1D1AD ; Extend # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO
+1D242..1D244 ; Extend # Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME
+E0100..E01EF ; Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
+
+# Total code points: 1075
+
+# ================================================
+
+0E40..0E44 ; Prepend # Lo [5] THAI CHARACTER SARA E..THAI CHARACTER SARA AI MAIMALAI
+0EC0..0EC4 ; Prepend # Lo [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI
+
+# Total code points: 10
+
+# ================================================
+
+0903 ; SpacingMark # Mc DEVANAGARI SIGN VISARGA
+093E..0940 ; SpacingMark # Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II
+0949..094C ; SpacingMark # Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU
+0982..0983 ; SpacingMark # Mc [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA
+09BF..09C0 ; SpacingMark # Mc [2] BENGALI VOWEL SIGN I..BENGALI VOWEL SIGN II
+09C7..09C8 ; SpacingMark # Mc [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI
+09CB..09CC ; SpacingMark # Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU
+0A03 ; SpacingMark # Mc GURMUKHI SIGN VISARGA
+0A3E..0A40 ; SpacingMark # Mc [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II
+0A83 ; SpacingMark # Mc GUJARATI SIGN VISARGA
+0ABE..0AC0 ; SpacingMark # Mc [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II
+0AC9 ; SpacingMark # Mc GUJARATI VOWEL SIGN CANDRA O
+0ACB..0ACC ; SpacingMark # Mc [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU
+0B02..0B03 ; SpacingMark # Mc [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA
+0B40 ; SpacingMark # Mc ORIYA VOWEL SIGN II
+0B47..0B48 ; SpacingMark # Mc [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI
+0B4B..0B4C ; SpacingMark # Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU
+0BBF ; SpacingMark # Mc TAMIL VOWEL SIGN I
+0BC1..0BC2 ; SpacingMark # Mc [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU
+0BC6..0BC8 ; SpacingMark # Mc [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI
+0BCA..0BCC ; SpacingMark # Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU
+0C01..0C03 ; SpacingMark # Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA
+0C41..0C44 ; SpacingMark # Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR
+0C82..0C83 ; SpacingMark # Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA
+0CBE ; SpacingMark # Mc KANNADA VOWEL SIGN AA
+0CC0..0CC1 ; SpacingMark # Mc [2] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN U
+0CC3..0CC4 ; SpacingMark # Mc [2] KANNADA VOWEL SIGN VOCALIC R..KANNADA VOWEL SIGN VOCALIC RR
+0CC7..0CC8 ; SpacingMark # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI
+0CCA..0CCB ; SpacingMark # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
+0D02..0D03 ; SpacingMark # Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA
+0D3F..0D40 ; SpacingMark # Mc [2] MALAYALAM VOWEL SIGN I..MALAYALAM VOWEL SIGN II
+0D46..0D48 ; SpacingMark # Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI
+0D4A..0D4C ; SpacingMark # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
+0D82..0D83 ; SpacingMark # Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA
+0DD0..0DD1 ; SpacingMark # Mc [2] SINHALA VOWEL SIGN KETTI AEDA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA
+0DD8..0DDE ; SpacingMark # Mc [7] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
+0DF2..0DF3 ; SpacingMark # Mc [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA
+0F3E..0F3F ; SpacingMark # Mc [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES
+0F7F ; SpacingMark # Mc TIBETAN SIGN RNAM BCAD
+102B..102C ; SpacingMark # Mc [2] MYANMAR VOWEL SIGN TALL AA..MYANMAR VOWEL SIGN AA
+1031 ; SpacingMark # Mc MYANMAR VOWEL SIGN E
+1038 ; SpacingMark # Mc MYANMAR SIGN VISARGA
+103B..103C ; SpacingMark # Mc [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA
+1056..1057 ; SpacingMark # Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR
+1062..1064 ; SpacingMark # Mc [3] MYANMAR VOWEL SIGN SGAW KAREN EU..MYANMAR TONE MARK SGAW KAREN KE PHO
+1067..106D ; SpacingMark # Mc [7] MYANMAR VOWEL SIGN WESTERN PWO KAREN EU..MYANMAR SIGN WESTERN PWO KAREN TONE-5
+1083..1084 ; SpacingMark # Mc [2] MYANMAR VOWEL SIGN SHAN AA..MYANMAR VOWEL SIGN SHAN E
+1087..108C ; SpacingMark # Mc [6] MYANMAR SIGN SHAN TONE-2..MYANMAR SIGN SHAN COUNCIL TONE-3
+108F ; SpacingMark # Mc MYANMAR SIGN RUMAI PALAUNG TONE-5
+17B6 ; SpacingMark # Mc KHMER VOWEL SIGN AA
+17BE..17C5 ; SpacingMark # Mc [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU
+17C7..17C8 ; SpacingMark # Mc [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU
+1923..1926 ; SpacingMark # Mc [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU
+1929..192B ; SpacingMark # Mc [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA
+1930..1931 ; SpacingMark # Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA
+1933..1938 ; SpacingMark # Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA
+19B0..19C0 ; SpacingMark # Mc [17] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE VOWEL SIGN IY
+19C8..19C9 ; SpacingMark # Mc [2] NEW TAI LUE TONE MARK-1..NEW TAI LUE TONE MARK-2
+1A19..1A1B ; SpacingMark # Mc [3] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN AE
+1B04 ; SpacingMark # Mc BALINESE SIGN BISAH
+1B35 ; SpacingMark # Mc BALINESE VOWEL SIGN TEDUNG
+1B3B ; SpacingMark # Mc BALINESE VOWEL SIGN RA REPA TEDUNG
+1B3D..1B41 ; SpacingMark # Mc [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG
+1B43..1B44 ; SpacingMark # Mc [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG
+1B82 ; SpacingMark # Mc SUNDANESE SIGN PANGWISAD
+1BA1 ; SpacingMark # Mc SUNDANESE CONSONANT SIGN PAMINGKAL
+1BA6..1BA7 ; SpacingMark # Mc [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG
+1BAA ; SpacingMark # Mc SUNDANESE SIGN PAMAAEH
+1C24..1C2B ; SpacingMark # Mc [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU
+1C34..1C35 ; SpacingMark # Mc [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG
+A823..A824 ; SpacingMark # Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I
+A827 ; SpacingMark # Mc SYLOTI NAGRI VOWEL SIGN OO
+A880..A881 ; SpacingMark # Mc [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA
+A8B4..A8C3 ; SpacingMark # Mc [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU
+A952..A953 ; SpacingMark # Mc [2] REJANG CONSONANT SIGN H..REJANG VIRAMA
+AA2F..AA30 ; SpacingMark # Mc [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI
+AA33..AA34 ; SpacingMark # Mc [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA
+AA4D ; SpacingMark # Mc CHAM CONSONANT SIGN FINAL H
+1D166 ; SpacingMark # Mc MUSICAL SYMBOL COMBINING SPRECHGESANG STEM
+1D16D ; SpacingMark # Mc MUSICAL SYMBOL COMBINING AUGMENTATION DOT
+
+# Total code points: 217
+
+# ================================================
+
+1100..1159 ; L # Lo [90] HANGUL CHOSEONG KIYEOK..HANGUL CHOSEONG YEORINHIEUH
+115F ; L # Lo HANGUL CHOSEONG FILLER
+
+# Total code points: 91
+
+# ================================================
+
+1160..11A2 ; V # Lo [67] HANGUL JUNGSEONG FILLER..HANGUL JUNGSEONG SSANGARAEA
+
+# Total code points: 67
+
+# ================================================
+
+11A8..11F9 ; T # Lo [82] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG YEORINHIEUH
+
+# Total code points: 82
+
+# ================================================
+
+AC00 ; LV # Lo HANGUL SYLLABLE GA
+AC1C ; LV # Lo HANGUL SYLLABLE GAE
+AC38 ; LV # Lo HANGUL SYLLABLE GYA
+AC54 ; LV # Lo HANGUL SYLLABLE GYAE
+AC70 ; LV # Lo HANGUL SYLLABLE GEO
+AC8C ; LV # Lo HANGUL SYLLABLE GE
+ACA8 ; LV # Lo HANGUL SYLLABLE GYEO
+ACC4 ; LV # Lo HANGUL SYLLABLE GYE
+ACE0 ; LV # Lo HANGUL SYLLABLE GO
+ACFC ; LV # Lo HANGUL SYLLABLE GWA
+AD18 ; LV # Lo HANGUL SYLLABLE GWAE
+AD34 ; LV # Lo HANGUL SYLLABLE GOE
+AD50 ; LV # Lo HANGUL SYLLABLE GYO
+AD6C ; LV # Lo HANGUL SYLLABLE GU
+AD88 ; LV # Lo HANGUL SYLLABLE GWEO
+ADA4 ; LV # Lo HANGUL SYLLABLE GWE
+ADC0 ; LV # Lo HANGUL SYLLABLE GWI
+ADDC ; LV # Lo HANGUL SYLLABLE GYU
+ADF8 ; LV # Lo HANGUL SYLLABLE GEU
+AE14 ; LV # Lo HANGUL SYLLABLE GYI
+AE30 ; LV # Lo HANGUL SYLLABLE GI
+AE4C ; LV # Lo HANGUL SYLLABLE GGA
+AE68 ; LV # Lo HANGUL SYLLABLE GGAE
+AE84 ; LV # Lo HANGUL SYLLABLE GGYA
+AEA0 ; LV # Lo HANGUL SYLLABLE GGYAE
+AEBC ; LV # Lo HANGUL SYLLABLE GGEO
+AED8 ; LV # Lo HANGUL SYLLABLE GGE
+AEF4 ; LV # Lo HANGUL SYLLABLE GGYEO
+AF10 ; LV # Lo HANGUL SYLLABLE GGYE
+AF2C ; LV # Lo HANGUL SYLLABLE GGO
+AF48 ; LV # Lo HANGUL SYLLABLE GGWA
+AF64 ; LV # Lo HANGUL SYLLABLE GGWAE
+AF80 ; LV # Lo HANGUL SYLLABLE GGOE
+AF9C ; LV # Lo HANGUL SYLLABLE GGYO
+AFB8 ; LV # Lo HANGUL SYLLABLE GGU
+AFD4 ; LV # Lo HANGUL SYLLABLE GGWEO
+AFF0 ; LV # Lo HANGUL SYLLABLE GGWE
+B00C ; LV # Lo HANGUL SYLLABLE GGWI
+B028 ; LV # Lo HANGUL SYLLABLE GGYU
+B044 ; LV # Lo HANGUL SYLLABLE GGEU
+B060 ; LV # Lo HANGUL SYLLABLE GGYI
+B07C ; LV # Lo HANGUL SYLLABLE GGI
+B098 ; LV # Lo HANGUL SYLLABLE NA
+B0B4 ; LV # Lo HANGUL SYLLABLE NAE
+B0D0 ; LV # Lo HANGUL SYLLABLE NYA
+B0EC ; LV # Lo HANGUL SYLLABLE NYAE
+B108 ; LV # Lo HANGUL SYLLABLE NEO
+B124 ; LV # Lo HANGUL SYLLABLE NE
+B140 ; LV # Lo HANGUL SYLLABLE NYEO
+B15C ; LV # Lo HANGUL SYLLABLE NYE
+B178 ; LV # Lo HANGUL SYLLABLE NO
+B194 ; LV # Lo HANGUL SYLLABLE NWA
+B1B0 ; LV # Lo HANGUL SYLLABLE NWAE
+B1CC ; LV # Lo HANGUL SYLLABLE NOE
+B1E8 ; LV # Lo HANGUL SYLLABLE NYO
+B204 ; LV # Lo HANGUL SYLLABLE NU
+B220 ; LV # Lo HANGUL SYLLABLE NWEO
+B23C ; LV # Lo HANGUL SYLLABLE NWE
+B258 ; LV # Lo HANGUL SYLLABLE NWI
+B274 ; LV # Lo HANGUL SYLLABLE NYU
+B290 ; LV # Lo HANGUL SYLLABLE NEU
+B2AC ; LV # Lo HANGUL SYLLABLE NYI
+B2C8 ; LV # Lo HANGUL SYLLABLE NI
+B2E4 ; LV # Lo HANGUL SYLLABLE DA
+B300 ; LV # Lo HANGUL SYLLABLE DAE
+B31C ; LV # Lo HANGUL SYLLABLE DYA
+B338 ; LV # Lo HANGUL SYLLABLE DYAE
+B354 ; LV # Lo HANGUL SYLLABLE DEO
+B370 ; LV # Lo HANGUL SYLLABLE DE
+B38C ; LV # Lo HANGUL SYLLABLE DYEO
+B3A8 ; LV # Lo HANGUL SYLLABLE DYE
+B3C4 ; LV # Lo HANGUL SYLLABLE DO
+B3E0 ; LV # Lo HANGUL SYLLABLE DWA
+B3FC ; LV # Lo HANGUL SYLLABLE DWAE
+B418 ; LV # Lo HANGUL SYLLABLE DOE
+B434 ; LV # Lo HANGUL SYLLABLE DYO
+B450 ; LV # Lo HANGUL SYLLABLE DU
+B46C ; LV # Lo HANGUL SYLLABLE DWEO
+B488 ; LV # Lo HANGUL SYLLABLE DWE
+B4A4 ; LV # Lo HANGUL SYLLABLE DWI
+B4C0 ; LV # Lo HANGUL SYLLABLE DYU
+B4DC ; LV # Lo HANGUL SYLLABLE DEU
+B4F8 ; LV # Lo HANGUL SYLLABLE DYI
+B514 ; LV # Lo HANGUL SYLLABLE DI
+B530 ; LV # Lo HANGUL SYLLABLE DDA
+B54C ; LV # Lo HANGUL SYLLABLE DDAE
+B568 ; LV # Lo HANGUL SYLLABLE DDYA
+B584 ; LV # Lo HANGUL SYLLABLE DDYAE
+B5A0 ; LV # Lo HANGUL SYLLABLE DDEO
+B5BC ; LV # Lo HANGUL SYLLABLE DDE
+B5D8 ; LV # Lo HANGUL SYLLABLE DDYEO
+B5F4 ; LV # Lo HANGUL SYLLABLE DDYE
+B610 ; LV # Lo HANGUL SYLLABLE DDO
+B62C ; LV # Lo HANGUL SYLLABLE DDWA
+B648 ; LV # Lo HANGUL SYLLABLE DDWAE
+B664 ; LV # Lo HANGUL SYLLABLE DDOE
+B680 ; LV # Lo HANGUL SYLLABLE DDYO
+B69C ; LV # Lo HANGUL SYLLABLE DDU
+B6B8 ; LV # Lo HANGUL SYLLABLE DDWEO
+B6D4 ; LV # Lo HANGUL SYLLABLE DDWE
+B6F0 ; LV # Lo HANGUL SYLLABLE DDWI
+B70C ; LV # Lo HANGUL SYLLABLE DDYU
+B728 ; LV # Lo HANGUL SYLLABLE DDEU
+B744 ; LV # Lo HANGUL SYLLABLE DDYI
+B760 ; LV # Lo HANGUL SYLLABLE DDI
+B77C ; LV # Lo HANGUL SYLLABLE RA
+B798 ; LV # Lo HANGUL SYLLABLE RAE
+B7B4 ; LV # Lo HANGUL SYLLABLE RYA
+B7D0 ; LV # Lo HANGUL SYLLABLE RYAE
+B7EC ; LV # Lo HANGUL SYLLABLE REO
+B808 ; LV # Lo HANGUL SYLLABLE RE
+B824 ; LV # Lo HANGUL SYLLABLE RYEO
+B840 ; LV # Lo HANGUL SYLLABLE RYE
+B85C ; LV # Lo HANGUL SYLLABLE RO
+B878 ; LV # Lo HANGUL SYLLABLE RWA
+B894 ; LV # Lo HANGUL SYLLABLE RWAE
+B8B0 ; LV # Lo HANGUL SYLLABLE ROE
+B8CC ; LV # Lo HANGUL SYLLABLE RYO
+B8E8 ; LV # Lo HANGUL SYLLABLE RU
+B904 ; LV # Lo HANGUL SYLLABLE RWEO
+B920 ; LV # Lo HANGUL SYLLABLE RWE
+B93C ; LV # Lo HANGUL SYLLABLE RWI
+B958 ; LV # Lo HANGUL SYLLABLE RYU
+B974 ; LV # Lo HANGUL SYLLABLE REU
+B990 ; LV # Lo HANGUL SYLLABLE RYI
+B9AC ; LV # Lo HANGUL SYLLABLE RI
+B9C8 ; LV # Lo HANGUL SYLLABLE MA
+B9E4 ; LV # Lo HANGUL SYLLABLE MAE
+BA00 ; LV # Lo HANGUL SYLLABLE MYA
+BA1C ; LV # Lo HANGUL SYLLABLE MYAE
+BA38 ; LV # Lo HANGUL SYLLABLE MEO
+BA54 ; LV # Lo HANGUL SYLLABLE ME
+BA70 ; LV # Lo HANGUL SYLLABLE MYEO
+BA8C ; LV # Lo HANGUL SYLLABLE MYE
+BAA8 ; LV # Lo HANGUL SYLLABLE MO
+BAC4 ; LV # Lo HANGUL SYLLABLE MWA
+BAE0 ; LV # Lo HANGUL SYLLABLE MWAE
+BAFC ; LV # Lo HANGUL SYLLABLE MOE
+BB18 ; LV # Lo HANGUL SYLLABLE MYO
+BB34 ; LV # Lo HANGUL SYLLABLE MU
+BB50 ; LV # Lo HANGUL SYLLABLE MWEO
+BB6C ; LV # Lo HANGUL SYLLABLE MWE
+BB88 ; LV # Lo HANGUL SYLLABLE MWI
+BBA4 ; LV # Lo HANGUL SYLLABLE MYU
+BBC0 ; LV # Lo HANGUL SYLLABLE MEU
+BBDC ; LV # Lo HANGUL SYLLABLE MYI
+BBF8 ; LV # Lo HANGUL SYLLABLE MI
+BC14 ; LV # Lo HANGUL SYLLABLE BA
+BC30 ; LV # Lo HANGUL SYLLABLE BAE
+BC4C ; LV # Lo HANGUL SYLLABLE BYA
+BC68 ; LV # Lo HANGUL SYLLABLE BYAE
+BC84 ; LV # Lo HANGUL SYLLABLE BEO
+BCA0 ; LV # Lo HANGUL SYLLABLE BE
+BCBC ; LV # Lo HANGUL SYLLABLE BYEO
+BCD8 ; LV # Lo HANGUL SYLLABLE BYE
+BCF4 ; LV # Lo HANGUL SYLLABLE BO
+BD10 ; LV # Lo HANGUL SYLLABLE BWA
+BD2C ; LV # Lo HANGUL SYLLABLE BWAE
+BD48 ; LV # Lo HANGUL SYLLABLE BOE
+BD64 ; LV # Lo HANGUL SYLLABLE BYO
+BD80 ; LV # Lo HANGUL SYLLABLE BU
+BD9C ; LV # Lo HANGUL SYLLABLE BWEO
+BDB8 ; LV # Lo HANGUL SYLLABLE BWE
+BDD4 ; LV # Lo HANGUL SYLLABLE BWI
+BDF0 ; LV # Lo HANGUL SYLLABLE BYU
+BE0C ; LV # Lo HANGUL SYLLABLE BEU
+BE28 ; LV # Lo HANGUL SYLLABLE BYI
+BE44 ; LV # Lo HANGUL SYLLABLE BI
+BE60 ; LV # Lo HANGUL SYLLABLE BBA
+BE7C ; LV # Lo HANGUL SYLLABLE BBAE
+BE98 ; LV # Lo HANGUL SYLLABLE BBYA
+BEB4 ; LV # Lo HANGUL SYLLABLE BBYAE
+BED0 ; LV # Lo HANGUL SYLLABLE BBEO
+BEEC ; LV # Lo HANGUL SYLLABLE BBE
+BF08 ; LV # Lo HANGUL SYLLABLE BBYEO
+BF24 ; LV # Lo HANGUL SYLLABLE BBYE
+BF40 ; LV # Lo HANGUL SYLLABLE BBO
+BF5C ; LV # Lo HANGUL SYLLABLE BBWA
+BF78 ; LV # Lo HANGUL SYLLABLE BBWAE
+BF94 ; LV # Lo HANGUL SYLLABLE BBOE
+BFB0 ; LV # Lo HANGUL SYLLABLE BBYO
+BFCC ; LV # Lo HANGUL SYLLABLE BBU
+BFE8 ; LV # Lo HANGUL SYLLABLE BBWEO
+C004 ; LV # Lo HANGUL SYLLABLE BBWE
+C020 ; LV # Lo HANGUL SYLLABLE BBWI
+C03C ; LV # Lo HANGUL SYLLABLE BBYU
+C058 ; LV # Lo HANGUL SYLLABLE BBEU
+C074 ; LV # Lo HANGUL SYLLABLE BBYI
+C090 ; LV # Lo HANGUL SYLLABLE BBI
+C0AC ; LV # Lo HANGUL SYLLABLE SA
+C0C8 ; LV # Lo HANGUL SYLLABLE SAE
+C0E4 ; LV # Lo HANGUL SYLLABLE SYA
+C100 ; LV # Lo HANGUL SYLLABLE SYAE
+C11C ; LV # Lo HANGUL SYLLABLE SEO
+C138 ; LV # Lo HANGUL SYLLABLE SE
+C154 ; LV # Lo HANGUL SYLLABLE SYEO
+C170 ; LV # Lo HANGUL SYLLABLE SYE
+C18C ; LV # Lo HANGUL SYLLABLE SO
+C1A8 ; LV # Lo HANGUL SYLLABLE SWA
+C1C4 ; LV # Lo HANGUL SYLLABLE SWAE
+C1E0 ; LV # Lo HANGUL SYLLABLE SOE
+C1FC ; LV # Lo HANGUL SYLLABLE SYO
+C218 ; LV # Lo HANGUL SYLLABLE SU
+C234 ; LV # Lo HANGUL SYLLABLE SWEO
+C250 ; LV # Lo HANGUL SYLLABLE SWE
+C26C ; LV # Lo HANGUL SYLLABLE SWI
+C288 ; LV # Lo HANGUL SYLLABLE SYU
+C2A4 ; LV # Lo HANGUL SYLLABLE SEU
+C2C0 ; LV # Lo HANGUL SYLLABLE SYI
+C2DC ; LV # Lo HANGUL SYLLABLE SI
+C2F8 ; LV # Lo HANGUL SYLLABLE SSA
+C314 ; LV # Lo HANGUL SYLLABLE SSAE
+C330 ; LV # Lo HANGUL SYLLABLE SSYA
+C34C ; LV # Lo HANGUL SYLLABLE SSYAE
+C368 ; LV # Lo HANGUL SYLLABLE SSEO
+C384 ; LV # Lo HANGUL SYLLABLE SSE
+C3A0 ; LV # Lo HANGUL SYLLABLE SSYEO
+C3BC ; LV # Lo HANGUL SYLLABLE SSYE
+C3D8 ; LV # Lo HANGUL SYLLABLE SSO
+C3F4 ; LV # Lo HANGUL SYLLABLE SSWA
+C410 ; LV # Lo HANGUL SYLLABLE SSWAE
+C42C ; LV # Lo HANGUL SYLLABLE SSOE
+C448 ; LV # Lo HANGUL SYLLABLE SSYO
+C464 ; LV # Lo HANGUL SYLLABLE SSU
+C480 ; LV # Lo HANGUL SYLLABLE SSWEO
+C49C ; LV # Lo HANGUL SYLLABLE SSWE
+C4B8 ; LV # Lo HANGUL SYLLABLE SSWI
+C4D4 ; LV # Lo HANGUL SYLLABLE SSYU
+C4F0 ; LV # Lo HANGUL SYLLABLE SSEU
+C50C ; LV # Lo HANGUL SYLLABLE SSYI
+C528 ; LV # Lo HANGUL SYLLABLE SSI
+C544 ; LV # Lo HANGUL SYLLABLE A
+C560 ; LV # Lo HANGUL SYLLABLE AE
+C57C ; LV # Lo HANGUL SYLLABLE YA
+C598 ; LV # Lo HANGUL SYLLABLE YAE
+C5B4 ; LV # Lo HANGUL SYLLABLE EO
+C5D0 ; LV # Lo HANGUL SYLLABLE E
+C5EC ; LV # Lo HANGUL SYLLABLE YEO
+C608 ; LV # Lo HANGUL SYLLABLE YE
+C624 ; LV # Lo HANGUL SYLLABLE O
+C640 ; LV # Lo HANGUL SYLLABLE WA
+C65C ; LV # Lo HANGUL SYLLABLE WAE
+C678 ; LV # Lo HANGUL SYLLABLE OE
+C694 ; LV # Lo HANGUL SYLLABLE YO
+C6B0 ; LV # Lo HANGUL SYLLABLE U
+C6CC ; LV # Lo HANGUL SYLLABLE WEO
+C6E8 ; LV # Lo HANGUL SYLLABLE WE
+C704 ; LV # Lo HANGUL SYLLABLE WI
+C720 ; LV # Lo HANGUL SYLLABLE YU
+C73C ; LV # Lo HANGUL SYLLABLE EU
+C758 ; LV # Lo HANGUL SYLLABLE YI
+C774 ; LV # Lo HANGUL SYLLABLE I
+C790 ; LV # Lo HANGUL SYLLABLE JA
+C7AC ; LV # Lo HANGUL SYLLABLE JAE
+C7C8 ; LV # Lo HANGUL SYLLABLE JYA
+C7E4 ; LV # Lo HANGUL SYLLABLE JYAE
+C800 ; LV # Lo HANGUL SYLLABLE JEO
+C81C ; LV # Lo HANGUL SYLLABLE JE
+C838 ; LV # Lo HANGUL SYLLABLE JYEO
+C854 ; LV # Lo HANGUL SYLLABLE JYE
+C870 ; LV # Lo HANGUL SYLLABLE JO
+C88C ; LV # Lo HANGUL SYLLABLE JWA
+C8A8 ; LV # Lo HANGUL SYLLABLE JWAE
+C8C4 ; LV # Lo HANGUL SYLLABLE JOE
+C8E0 ; LV # Lo HANGUL SYLLABLE JYO
+C8FC ; LV # Lo HANGUL SYLLABLE JU
+C918 ; LV # Lo HANGUL SYLLABLE JWEO
+C934 ; LV # Lo HANGUL SYLLABLE JWE
+C950 ; LV # Lo HANGUL SYLLABLE JWI
+C96C ; LV # Lo HANGUL SYLLABLE JYU
+C988 ; LV # Lo HANGUL SYLLABLE JEU
+C9A4 ; LV # Lo HANGUL SYLLABLE JYI
+C9C0 ; LV # Lo HANGUL SYLLABLE JI
+C9DC ; LV # Lo HANGUL SYLLABLE JJA
+C9F8 ; LV # Lo HANGUL SYLLABLE JJAE
+CA14 ; LV # Lo HANGUL SYLLABLE JJYA
+CA30 ; LV # Lo HANGUL SYLLABLE JJYAE
+CA4C ; LV # Lo HANGUL SYLLABLE JJEO
+CA68 ; LV # Lo HANGUL SYLLABLE JJE
+CA84 ; LV # Lo HANGUL SYLLABLE JJYEO
+CAA0 ; LV # Lo HANGUL SYLLABLE JJYE
+CABC ; LV # Lo HANGUL SYLLABLE JJO
+CAD8 ; LV # Lo HANGUL SYLLABLE JJWA
+CAF4 ; LV # Lo HANGUL SYLLABLE JJWAE
+CB10 ; LV # Lo HANGUL SYLLABLE JJOE
+CB2C ; LV # Lo HANGUL SYLLABLE JJYO
+CB48 ; LV # Lo HANGUL SYLLABLE JJU
+CB64 ; LV # Lo HANGUL SYLLABLE JJWEO
+CB80 ; LV # Lo HANGUL SYLLABLE JJWE
+CB9C ; LV # Lo HANGUL SYLLABLE JJWI
+CBB8 ; LV # Lo HANGUL SYLLABLE JJYU
+CBD4 ; LV # Lo HANGUL SYLLABLE JJEU
+CBF0 ; LV # Lo HANGUL SYLLABLE JJYI
+CC0C ; LV # Lo HANGUL SYLLABLE JJI
+CC28 ; LV # Lo HANGUL SYLLABLE CA
+CC44 ; LV # Lo HANGUL SYLLABLE CAE
+CC60 ; LV # Lo HANGUL SYLLABLE CYA
+CC7C ; LV # Lo HANGUL SYLLABLE CYAE
+CC98 ; LV # Lo HANGUL SYLLABLE CEO
+CCB4 ; LV # Lo HANGUL SYLLABLE CE
+CCD0 ; LV # Lo HANGUL SYLLABLE CYEO
+CCEC ; LV # Lo HANGUL SYLLABLE CYE
+CD08 ; LV # Lo HANGUL SYLLABLE CO
+CD24 ; LV # Lo HANGUL SYLLABLE CWA
+CD40 ; LV # Lo HANGUL SYLLABLE CWAE
+CD5C ; LV # Lo HANGUL SYLLABLE COE
+CD78 ; LV # Lo HANGUL SYLLABLE CYO
+CD94 ; LV # Lo HANGUL SYLLABLE CU
+CDB0 ; LV # Lo HANGUL SYLLABLE CWEO
+CDCC ; LV # Lo HANGUL SYLLABLE CWE
+CDE8 ; LV # Lo HANGUL SYLLABLE CWI
+CE04 ; LV # Lo HANGUL SYLLABLE CYU
+CE20 ; LV # Lo HANGUL SYLLABLE CEU
+CE3C ; LV # Lo HANGUL SYLLABLE CYI
+CE58 ; LV # Lo HANGUL SYLLABLE CI
+CE74 ; LV # Lo HANGUL SYLLABLE KA
+CE90 ; LV # Lo HANGUL SYLLABLE KAE
+CEAC ; LV # Lo HANGUL SYLLABLE KYA
+CEC8 ; LV # Lo HANGUL SYLLABLE KYAE
+CEE4 ; LV # Lo HANGUL SYLLABLE KEO
+CF00 ; LV # Lo HANGUL SYLLABLE KE
+CF1C ; LV # Lo HANGUL SYLLABLE KYEO
+CF38 ; LV # Lo HANGUL SYLLABLE KYE
+CF54 ; LV # Lo HANGUL SYLLABLE KO
+CF70 ; LV # Lo HANGUL SYLLABLE KWA
+CF8C ; LV # Lo HANGUL SYLLABLE KWAE
+CFA8 ; LV # Lo HANGUL SYLLABLE KOE
+CFC4 ; LV # Lo HANGUL SYLLABLE KYO
+CFE0 ; LV # Lo HANGUL SYLLABLE KU
+CFFC ; LV # Lo HANGUL SYLLABLE KWEO
+D018 ; LV # Lo HANGUL SYLLABLE KWE
+D034 ; LV # Lo HANGUL SYLLABLE KWI
+D050 ; LV # Lo HANGUL SYLLABLE KYU
+D06C ; LV # Lo HANGUL SYLLABLE KEU
+D088 ; LV # Lo HANGUL SYLLABLE KYI
+D0A4 ; LV # Lo HANGUL SYLLABLE KI
+D0C0 ; LV # Lo HANGUL SYLLABLE TA
+D0DC ; LV # Lo HANGUL SYLLABLE TAE
+D0F8 ; LV # Lo HANGUL SYLLABLE TYA
+D114 ; LV # Lo HANGUL SYLLABLE TYAE
+D130 ; LV # Lo HANGUL SYLLABLE TEO
+D14C ; LV # Lo HANGUL SYLLABLE TE
+D168 ; LV # Lo HANGUL SYLLABLE TYEO
+D184 ; LV # Lo HANGUL SYLLABLE TYE
+D1A0 ; LV # Lo HANGUL SYLLABLE TO
+D1BC ; LV # Lo HANGUL SYLLABLE TWA
+D1D8 ; LV # Lo HANGUL SYLLABLE TWAE
+D1F4 ; LV # Lo HANGUL SYLLABLE TOE
+D210 ; LV # Lo HANGUL SYLLABLE TYO
+D22C ; LV # Lo HANGUL SYLLABLE TU
+D248 ; LV # Lo HANGUL SYLLABLE TWEO
+D264 ; LV # Lo HANGUL SYLLABLE TWE
+D280 ; LV # Lo HANGUL SYLLABLE TWI
+D29C ; LV # Lo HANGUL SYLLABLE TYU
+D2B8 ; LV # Lo HANGUL SYLLABLE TEU
+D2D4 ; LV # Lo HANGUL SYLLABLE TYI
+D2F0 ; LV # Lo HANGUL SYLLABLE TI
+D30C ; LV # Lo HANGUL SYLLABLE PA
+D328 ; LV # Lo HANGUL SYLLABLE PAE
+D344 ; LV # Lo HANGUL SYLLABLE PYA
+D360 ; LV # Lo HANGUL SYLLABLE PYAE
+D37C ; LV # Lo HANGUL SYLLABLE PEO
+D398 ; LV # Lo HANGUL SYLLABLE PE
+D3B4 ; LV # Lo HANGUL SYLLABLE PYEO
+D3D0 ; LV # Lo HANGUL SYLLABLE PYE
+D3EC ; LV # Lo HANGUL SYLLABLE PO
+D408 ; LV # Lo HANGUL SYLLABLE PWA
+D424 ; LV # Lo HANGUL SYLLABLE PWAE
+D440 ; LV # Lo HANGUL SYLLABLE POE
+D45C ; LV # Lo HANGUL SYLLABLE PYO
+D478 ; LV # Lo HANGUL SYLLABLE PU
+D494 ; LV # Lo HANGUL SYLLABLE PWEO
+D4B0 ; LV # Lo HANGUL SYLLABLE PWE
+D4CC ; LV # Lo HANGUL SYLLABLE PWI
+D4E8 ; LV # Lo HANGUL SYLLABLE PYU
+D504 ; LV # Lo HANGUL SYLLABLE PEU
+D520 ; LV # Lo HANGUL SYLLABLE PYI
+D53C ; LV # Lo HANGUL SYLLABLE PI
+D558 ; LV # Lo HANGUL SYLLABLE HA
+D574 ; LV # Lo HANGUL SYLLABLE HAE
+D590 ; LV # Lo HANGUL SYLLABLE HYA
+D5AC ; LV # Lo HANGUL SYLLABLE HYAE
+D5C8 ; LV # Lo HANGUL SYLLABLE HEO
+D5E4 ; LV # Lo HANGUL SYLLABLE HE
+D600 ; LV # Lo HANGUL SYLLABLE HYEO
+D61C ; LV # Lo HANGUL SYLLABLE HYE
+D638 ; LV # Lo HANGUL SYLLABLE HO
+D654 ; LV # Lo HANGUL SYLLABLE HWA
+D670 ; LV # Lo HANGUL SYLLABLE HWAE
+D68C ; LV # Lo HANGUL SYLLABLE HOE
+D6A8 ; LV # Lo HANGUL SYLLABLE HYO
+D6C4 ; LV # Lo HANGUL SYLLABLE HU
+D6E0 ; LV # Lo HANGUL SYLLABLE HWEO
+D6FC ; LV # Lo HANGUL SYLLABLE HWE
+D718 ; LV # Lo HANGUL SYLLABLE HWI
+D734 ; LV # Lo HANGUL SYLLABLE HYU
+D750 ; LV # Lo HANGUL SYLLABLE HEU
+D76C ; LV # Lo HANGUL SYLLABLE HYI
+D788 ; LV # Lo HANGUL SYLLABLE HI
+
+# Total code points: 399
+
+# ================================================
+
+AC01..AC1B ; LVT # Lo [27] HANGUL SYLLABLE GAG..HANGUL SYLLABLE GAH
+AC1D..AC37 ; LVT # Lo [27] HANGUL SYLLABLE GAEG..HANGUL SYLLABLE GAEH
+AC39..AC53 ; LVT # Lo [27] HANGUL SYLLABLE GYAG..HANGUL SYLLABLE GYAH
+AC55..AC6F ; LVT # Lo [27] HANGUL SYLLABLE GYAEG..HANGUL SYLLABLE GYAEH
+AC71..AC8B ; LVT # Lo [27] HANGUL SYLLABLE GEOG..HANGUL SYLLABLE GEOH
+AC8D..ACA7 ; LVT # Lo [27] HANGUL SYLLABLE GEG..HANGUL SYLLABLE GEH
+ACA9..ACC3 ; LVT # Lo [27] HANGUL SYLLABLE GYEOG..HANGUL SYLLABLE GYEOH
+ACC5..ACDF ; LVT # Lo [27] HANGUL SYLLABLE GYEG..HANGUL SYLLABLE GYEH
+ACE1..ACFB ; LVT # Lo [27] HANGUL SYLLABLE GOG..HANGUL SYLLABLE GOH
+ACFD..AD17 ; LVT # Lo [27] HANGUL SYLLABLE GWAG..HANGUL SYLLABLE GWAH
+AD19..AD33 ; LVT # Lo [27] HANGUL SYLLABLE GWAEG..HANGUL SYLLABLE GWAEH
+AD35..AD4F ; LVT # Lo [27] HANGUL SYLLABLE GOEG..HANGUL SYLLABLE GOEH
+AD51..AD6B ; LVT # Lo [27] HANGUL SYLLABLE GYOG..HANGUL SYLLABLE GYOH
+AD6D..AD87 ; LVT # Lo [27] HANGUL SYLLABLE GUG..HANGUL SYLLABLE GUH
+AD89..ADA3 ; LVT # Lo [27] HANGUL SYLLABLE GWEOG..HANGUL SYLLABLE GWEOH
+ADA5..ADBF ; LVT # Lo [27] HANGUL SYLLABLE GWEG..HANGUL SYLLABLE GWEH
+ADC1..ADDB ; LVT # Lo [27] HANGUL SYLLABLE GWIG..HANGUL SYLLABLE GWIH
+ADDD..ADF7 ; LVT # Lo [27] HANGUL SYLLABLE GYUG..HANGUL SYLLABLE GYUH
+ADF9..AE13 ; LVT # Lo [27] HANGUL SYLLABLE GEUG..HANGUL SYLLABLE GEUH
+AE15..AE2F ; LVT # Lo [27] HANGUL SYLLABLE GYIG..HANGUL SYLLABLE GYIH
+AE31..AE4B ; LVT # Lo [27] HANGUL SYLLABLE GIG..HANGUL SYLLABLE GIH
+AE4D..AE67 ; LVT # Lo [27] HANGUL SYLLABLE GGAG..HANGUL SYLLABLE GGAH
+AE69..AE83 ; LVT # Lo [27] HANGUL SYLLABLE GGAEG..HANGUL SYLLABLE GGAEH
+AE85..AE9F ; LVT # Lo [27] HANGUL SYLLABLE GGYAG..HANGUL SYLLABLE GGYAH
+AEA1..AEBB ; LVT # Lo [27] HANGUL SYLLABLE GGYAEG..HANGUL SYLLABLE GGYAEH
+AEBD..AED7 ; LVT # Lo [27] HANGUL SYLLABLE GGEOG..HANGUL SYLLABLE GGEOH
+AED9..AEF3 ; LVT # Lo [27] HANGUL SYLLABLE GGEG..HANGUL SYLLABLE GGEH
+AEF5..AF0F ; LVT # Lo [27] HANGUL SYLLABLE GGYEOG..HANGUL SYLLABLE GGYEOH
+AF11..AF2B ; LVT # Lo [27] HANGUL SYLLABLE GGYEG..HANGUL SYLLABLE GGYEH
+AF2D..AF47 ; LVT # Lo [27] HANGUL SYLLABLE GGOG..HANGUL SYLLABLE GGOH
+AF49..AF63 ; LVT # Lo [27] HANGUL SYLLABLE GGWAG..HANGUL SYLLABLE GGWAH
+AF65..AF7F ; LVT # Lo [27] HANGUL SYLLABLE GGWAEG..HANGUL SYLLABLE GGWAEH
+AF81..AF9B ; LVT # Lo [27] HANGUL SYLLABLE GGOEG..HANGUL SYLLABLE GGOEH
+AF9D..AFB7 ; LVT # Lo [27] HANGUL SYLLABLE GGYOG..HANGUL SYLLABLE GGYOH
+AFB9..AFD3 ; LVT # Lo [27] HANGUL SYLLABLE GGUG..HANGUL SYLLABLE GGUH
+AFD5..AFEF ; LVT # Lo [27] HANGUL SYLLABLE GGWEOG..HANGUL SYLLABLE GGWEOH
+AFF1..B00B ; LVT # Lo [27] HANGUL SYLLABLE GGWEG..HANGUL SYLLABLE GGWEH
+B00D..B027 ; LVT # Lo [27] HANGUL SYLLABLE GGWIG..HANGUL SYLLABLE GGWIH
+B029..B043 ; LVT # Lo [27] HANGUL SYLLABLE GGYUG..HANGUL SYLLABLE GGYUH
+B045..B05F ; LVT # Lo [27] HANGUL SYLLABLE GGEUG..HANGUL SYLLABLE GGEUH
+B061..B07B ; LVT # Lo [27] HANGUL SYLLABLE GGYIG..HANGUL SYLLABLE GGYIH
+B07D..B097 ; LVT # Lo [27] HANGUL SYLLABLE GGIG..HANGUL SYLLABLE GGIH
+B099..B0B3 ; LVT # Lo [27] HANGUL SYLLABLE NAG..HANGUL SYLLABLE NAH
+B0B5..B0CF ; LVT # Lo [27] HANGUL SYLLABLE NAEG..HANGUL SYLLABLE NAEH
+B0D1..B0EB ; LVT # Lo [27] HANGUL SYLLABLE NYAG..HANGUL SYLLABLE NYAH
+B0ED..B107 ; LVT # Lo [27] HANGUL SYLLABLE NYAEG..HANGUL SYLLABLE NYAEH
+B109..B123 ; LVT # Lo [27] HANGUL SYLLABLE NEOG..HANGUL SYLLABLE NEOH
+B125..B13F ; LVT # Lo [27] HANGUL SYLLABLE NEG..HANGUL SYLLABLE NEH
+B141..B15B ; LVT # Lo [27] HANGUL SYLLABLE NYEOG..HANGUL SYLLABLE NYEOH
+B15D..B177 ; LVT # Lo [27] HANGUL SYLLABLE NYEG..HANGUL SYLLABLE NYEH
+B179..B193 ; LVT # Lo [27] HANGUL SYLLABLE NOG..HANGUL SYLLABLE NOH
+B195..B1AF ; LVT # Lo [27] HANGUL SYLLABLE NWAG..HANGUL SYLLABLE NWAH
+B1B1..B1CB ; LVT # Lo [27] HANGUL SYLLABLE NWAEG..HANGUL SYLLABLE NWAEH
+B1CD..B1E7 ; LVT # Lo [27] HANGUL SYLLABLE NOEG..HANGUL SYLLABLE NOEH
+B1E9..B203 ; LVT # Lo [27] HANGUL SYLLABLE NYOG..HANGUL SYLLABLE NYOH
+B205..B21F ; LVT # Lo [27] HANGUL SYLLABLE NUG..HANGUL SYLLABLE NUH
+B221..B23B ; LVT # Lo [27] HANGUL SYLLABLE NWEOG..HANGUL SYLLABLE NWEOH
+B23D..B257 ; LVT # Lo [27] HANGUL SYLLABLE NWEG..HANGUL SYLLABLE NWEH
+B259..B273 ; LVT # Lo [27] HANGUL SYLLABLE NWIG..HANGUL SYLLABLE NWIH
+B275..B28F ; LVT # Lo [27] HANGUL SYLLABLE NYUG..HANGUL SYLLABLE NYUH
+B291..B2AB ; LVT # Lo [27] HANGUL SYLLABLE NEUG..HANGUL SYLLABLE NEUH
+B2AD..B2C7 ; LVT # Lo [27] HANGUL SYLLABLE NYIG..HANGUL SYLLABLE NYIH
+B2C9..B2E3 ; LVT # Lo [27] HANGUL SYLLABLE NIG..HANGUL SYLLABLE NIH
+B2E5..B2FF ; LVT # Lo [27] HANGUL SYLLABLE DAG..HANGUL SYLLABLE DAH
+B301..B31B ; LVT # Lo [27] HANGUL SYLLABLE DAEG..HANGUL SYLLABLE DAEH
+B31D..B337 ; LVT # Lo [27] HANGUL SYLLABLE DYAG..HANGUL SYLLABLE DYAH
+B339..B353 ; LVT # Lo [27] HANGUL SYLLABLE DYAEG..HANGUL SYLLABLE DYAEH
+B355..B36F ; LVT # Lo [27] HANGUL SYLLABLE DEOG..HANGUL SYLLABLE DEOH
+B371..B38B ; LVT # Lo [27] HANGUL SYLLABLE DEG..HANGUL SYLLABLE DEH
+B38D..B3A7 ; LVT # Lo [27] HANGUL SYLLABLE DYEOG..HANGUL SYLLABLE DYEOH
+B3A9..B3C3 ; LVT # Lo [27] HANGUL SYLLABLE DYEG..HANGUL SYLLABLE DYEH
+B3C5..B3DF ; LVT # Lo [27] HANGUL SYLLABLE DOG..HANGUL SYLLABLE DOH
+B3E1..B3FB ; LVT # Lo [27] HANGUL SYLLABLE DWAG..HANGUL SYLLABLE DWAH
+B3FD..B417 ; LVT # Lo [27] HANGUL SYLLABLE DWAEG..HANGUL SYLLABLE DWAEH
+B419..B433 ; LVT # Lo [27] HANGUL SYLLABLE DOEG..HANGUL SYLLABLE DOEH
+B435..B44F ; LVT # Lo [27] HANGUL SYLLABLE DYOG..HANGUL SYLLABLE DYOH
+B451..B46B ; LVT # Lo [27] HANGUL SYLLABLE DUG..HANGUL SYLLABLE DUH
+B46D..B487 ; LVT # Lo [27] HANGUL SYLLABLE DWEOG..HANGUL SYLLABLE DWEOH
+B489..B4A3 ; LVT # Lo [27] HANGUL SYLLABLE DWEG..HANGUL SYLLABLE DWEH
+B4A5..B4BF ; LVT # Lo [27] HANGUL SYLLABLE DWIG..HANGUL SYLLABLE DWIH
+B4C1..B4DB ; LVT # Lo [27] HANGUL SYLLABLE DYUG..HANGUL SYLLABLE DYUH
+B4DD..B4F7 ; LVT # Lo [27] HANGUL SYLLABLE DEUG..HANGUL SYLLABLE DEUH
+B4F9..B513 ; LVT # Lo [27] HANGUL SYLLABLE DYIG..HANGUL SYLLABLE DYIH
+B515..B52F ; LVT # Lo [27] HANGUL SYLLABLE DIG..HANGUL SYLLABLE DIH
+B531..B54B ; LVT # Lo [27] HANGUL SYLLABLE DDAG..HANGUL SYLLABLE DDAH
+B54D..B567 ; LVT # Lo [27] HANGUL SYLLABLE DDAEG..HANGUL SYLLABLE DDAEH
+B569..B583 ; LVT # Lo [27] HANGUL SYLLABLE DDYAG..HANGUL SYLLABLE DDYAH
+B585..B59F ; LVT # Lo [27] HANGUL SYLLABLE DDYAEG..HANGUL SYLLABLE DDYAEH
+B5A1..B5BB ; LVT # Lo [27] HANGUL SYLLABLE DDEOG..HANGUL SYLLABLE DDEOH
+B5BD..B5D7 ; LVT # Lo [27] HANGUL SYLLABLE DDEG..HANGUL SYLLABLE DDEH
+B5D9..B5F3 ; LVT # Lo [27] HANGUL SYLLABLE DDYEOG..HANGUL SYLLABLE DDYEOH
+B5F5..B60F ; LVT # Lo [27] HANGUL SYLLABLE DDYEG..HANGUL SYLLABLE DDYEH
+B611..B62B ; LVT # Lo [27] HANGUL SYLLABLE DDOG..HANGUL SYLLABLE DDOH
+B62D..B647 ; LVT # Lo [27] HANGUL SYLLABLE DDWAG..HANGUL SYLLABLE DDWAH
+B649..B663 ; LVT # Lo [27] HANGUL SYLLABLE DDWAEG..HANGUL SYLLABLE DDWAEH
+B665..B67F ; LVT # Lo [27] HANGUL SYLLABLE DDOEG..HANGUL SYLLABLE DDOEH
+B681..B69B ; LVT # Lo [27] HANGUL SYLLABLE DDYOG..HANGUL SYLLABLE DDYOH
+B69D..B6B7 ; LVT # Lo [27] HANGUL SYLLABLE DDUG..HANGUL SYLLABLE DDUH
+B6B9..B6D3 ; LVT # Lo [27] HANGUL SYLLABLE DDWEOG..HANGUL SYLLABLE DDWEOH
+B6D5..B6EF ; LVT # Lo [27] HANGUL SYLLABLE DDWEG..HANGUL SYLLABLE DDWEH
+B6F1..B70B ; LVT # Lo [27] HANGUL SYLLABLE DDWIG..HANGUL SYLLABLE DDWIH
+B70D..B727 ; LVT # Lo [27] HANGUL SYLLABLE DDYUG..HANGUL SYLLABLE DDYUH
+B729..B743 ; LVT # Lo [27] HANGUL SYLLABLE DDEUG..HANGUL SYLLABLE DDEUH
+B745..B75F ; LVT # Lo [27] HANGUL SYLLABLE DDYIG..HANGUL SYLLABLE DDYIH
+B761..B77B ; LVT # Lo [27] HANGUL SYLLABLE DDIG..HANGUL SYLLABLE DDIH
+B77D..B797 ; LVT # Lo [27] HANGUL SYLLABLE RAG..HANGUL SYLLABLE RAH
+B799..B7B3 ; LVT # Lo [27] HANGUL SYLLABLE RAEG..HANGUL SYLLABLE RAEH
+B7B5..B7CF ; LVT # Lo [27] HANGUL SYLLABLE RYAG..HANGUL SYLLABLE RYAH
+B7D1..B7EB ; LVT # Lo [27] HANGUL SYLLABLE RYAEG..HANGUL SYLLABLE RYAEH
+B7ED..B807 ; LVT # Lo [27] HANGUL SYLLABLE REOG..HANGUL SYLLABLE REOH
+B809..B823 ; LVT # Lo [27] HANGUL SYLLABLE REG..HANGUL SYLLABLE REH
+B825..B83F ; LVT # Lo [27] HANGUL SYLLABLE RYEOG..HANGUL SYLLABLE RYEOH
+B841..B85B ; LVT # Lo [27] HANGUL SYLLABLE RYEG..HANGUL SYLLABLE RYEH
+B85D..B877 ; LVT # Lo [27] HANGUL SYLLABLE ROG..HANGUL SYLLABLE ROH
+B879..B893 ; LVT # Lo [27] HANGUL SYLLABLE RWAG..HANGUL SYLLABLE RWAH
+B895..B8AF ; LVT # Lo [27] HANGUL SYLLABLE RWAEG..HANGUL SYLLABLE RWAEH
+B8B1..B8CB ; LVT # Lo [27] HANGUL SYLLABLE ROEG..HANGUL SYLLABLE ROEH
+B8CD..B8E7 ; LVT # Lo [27] HANGUL SYLLABLE RYOG..HANGUL SYLLABLE RYOH
+B8E9..B903 ; LVT # Lo [27] HANGUL SYLLABLE RUG..HANGUL SYLLABLE RUH
+B905..B91F ; LVT # Lo [27] HANGUL SYLLABLE RWEOG..HANGUL SYLLABLE RWEOH
+B921..B93B ; LVT # Lo [27] HANGUL SYLLABLE RWEG..HANGUL SYLLABLE RWEH
+B93D..B957 ; LVT # Lo [27] HANGUL SYLLABLE RWIG..HANGUL SYLLABLE RWIH
+B959..B973 ; LVT # Lo [27] HANGUL SYLLABLE RYUG..HANGUL SYLLABLE RYUH
+B975..B98F ; LVT # Lo [27] HANGUL SYLLABLE REUG..HANGUL SYLLABLE REUH
+B991..B9AB ; LVT # Lo [27] HANGUL SYLLABLE RYIG..HANGUL SYLLABLE RYIH
+B9AD..B9C7 ; LVT # Lo [27] HANGUL SYLLABLE RIG..HANGUL SYLLABLE RIH
+B9C9..B9E3 ; LVT # Lo [27] HANGUL SYLLABLE MAG..HANGUL SYLLABLE MAH
+B9E5..B9FF ; LVT # Lo [27] HANGUL SYLLABLE MAEG..HANGUL SYLLABLE MAEH
+BA01..BA1B ; LVT # Lo [27] HANGUL SYLLABLE MYAG..HANGUL SYLLABLE MYAH
+BA1D..BA37 ; LVT # Lo [27] HANGUL SYLLABLE MYAEG..HANGUL SYLLABLE MYAEH
+BA39..BA53 ; LVT # Lo [27] HANGUL SYLLABLE MEOG..HANGUL SYLLABLE MEOH
+BA55..BA6F ; LVT # Lo [27] HANGUL SYLLABLE MEG..HANGUL SYLLABLE MEH
+BA71..BA8B ; LVT # Lo [27] HANGUL SYLLABLE MYEOG..HANGUL SYLLABLE MYEOH
+BA8D..BAA7 ; LVT # Lo [27] HANGUL SYLLABLE MYEG..HANGUL SYLLABLE MYEH
+BAA9..BAC3 ; LVT # Lo [27] HANGUL SYLLABLE MOG..HANGUL SYLLABLE MOH
+BAC5..BADF ; LVT # Lo [27] HANGUL SYLLABLE MWAG..HANGUL SYLLABLE MWAH
+BAE1..BAFB ; LVT # Lo [27] HANGUL SYLLABLE MWAEG..HANGUL SYLLABLE MWAEH
+BAFD..BB17 ; LVT # Lo [27] HANGUL SYLLABLE MOEG..HANGUL SYLLABLE MOEH
+BB19..BB33 ; LVT # Lo [27] HANGUL SYLLABLE MYOG..HANGUL SYLLABLE MYOH
+BB35..BB4F ; LVT # Lo [27] HANGUL SYLLABLE MUG..HANGUL SYLLABLE MUH
+BB51..BB6B ; LVT # Lo [27] HANGUL SYLLABLE MWEOG..HANGUL SYLLABLE MWEOH
+BB6D..BB87 ; LVT # Lo [27] HANGUL SYLLABLE MWEG..HANGUL SYLLABLE MWEH
+BB89..BBA3 ; LVT # Lo [27] HANGUL SYLLABLE MWIG..HANGUL SYLLABLE MWIH
+BBA5..BBBF ; LVT # Lo [27] HANGUL SYLLABLE MYUG..HANGUL SYLLABLE MYUH
+BBC1..BBDB ; LVT # Lo [27] HANGUL SYLLABLE MEUG..HANGUL SYLLABLE MEUH
+BBDD..BBF7 ; LVT # Lo [27] HANGUL SYLLABLE MYIG..HANGUL SYLLABLE MYIH
+BBF9..BC13 ; LVT # Lo [27] HANGUL SYLLABLE MIG..HANGUL SYLLABLE MIH
+BC15..BC2F ; LVT # Lo [27] HANGUL SYLLABLE BAG..HANGUL SYLLABLE BAH
+BC31..BC4B ; LVT # Lo [27] HANGUL SYLLABLE BAEG..HANGUL SYLLABLE BAEH
+BC4D..BC67 ; LVT # Lo [27] HANGUL SYLLABLE BYAG..HANGUL SYLLABLE BYAH
+BC69..BC83 ; LVT # Lo [27] HANGUL SYLLABLE BYAEG..HANGUL SYLLABLE BYAEH
+BC85..BC9F ; LVT # Lo [27] HANGUL SYLLABLE BEOG..HANGUL SYLLABLE BEOH
+BCA1..BCBB ; LVT # Lo [27] HANGUL SYLLABLE BEG..HANGUL SYLLABLE BEH
+BCBD..BCD7 ; LVT # Lo [27] HANGUL SYLLABLE BYEOG..HANGUL SYLLABLE BYEOH
+BCD9..BCF3 ; LVT # Lo [27] HANGUL SYLLABLE BYEG..HANGUL SYLLABLE BYEH
+BCF5..BD0F ; LVT # Lo [27] HANGUL SYLLABLE BOG..HANGUL SYLLABLE BOH
+BD11..BD2B ; LVT # Lo [27] HANGUL SYLLABLE BWAG..HANGUL SYLLABLE BWAH
+BD2D..BD47 ; LVT # Lo [27] HANGUL SYLLABLE BWAEG..HANGUL SYLLABLE BWAEH
+BD49..BD63 ; LVT # Lo [27] HANGUL SYLLABLE BOEG..HANGUL SYLLABLE BOEH
+BD65..BD7F ; LVT # Lo [27] HANGUL SYLLABLE BYOG..HANGUL SYLLABLE BYOH
+BD81..BD9B ; LVT # Lo [27] HANGUL SYLLABLE BUG..HANGUL SYLLABLE BUH
+BD9D..BDB7 ; LVT # Lo [27] HANGUL SYLLABLE BWEOG..HANGUL SYLLABLE BWEOH
+BDB9..BDD3 ; LVT # Lo [27] HANGUL SYLLABLE BWEG..HANGUL SYLLABLE BWEH
+BDD5..BDEF ; LVT # Lo [27] HANGUL SYLLABLE BWIG..HANGUL SYLLABLE BWIH
+BDF1..BE0B ; LVT # Lo [27] HANGUL SYLLABLE BYUG..HANGUL SYLLABLE BYUH
+BE0D..BE27 ; LVT # Lo [27] HANGUL SYLLABLE BEUG..HANGUL SYLLABLE BEUH
+BE29..BE43 ; LVT # Lo [27] HANGUL SYLLABLE BYIG..HANGUL SYLLABLE BYIH
+BE45..BE5F ; LVT # Lo [27] HANGUL SYLLABLE BIG..HANGUL SYLLABLE BIH
+BE61..BE7B ; LVT # Lo [27] HANGUL SYLLABLE BBAG..HANGUL SYLLABLE BBAH
+BE7D..BE97 ; LVT # Lo [27] HANGUL SYLLABLE BBAEG..HANGUL SYLLABLE BBAEH
+BE99..BEB3 ; LVT # Lo [27] HANGUL SYLLABLE BBYAG..HANGUL SYLLABLE BBYAH
+BEB5..BECF ; LVT # Lo [27] HANGUL SYLLABLE BBYAEG..HANGUL SYLLABLE BBYAEH
+BED1..BEEB ; LVT # Lo [27] HANGUL SYLLABLE BBEOG..HANGUL SYLLABLE BBEOH
+BEED..BF07 ; LVT # Lo [27] HANGUL SYLLABLE BBEG..HANGUL SYLLABLE BBEH
+BF09..BF23 ; LVT # Lo [27] HANGUL SYLLABLE BBYEOG..HANGUL SYLLABLE BBYEOH
+BF25..BF3F ; LVT # Lo [27] HANGUL SYLLABLE BBYEG..HANGUL SYLLABLE BBYEH
+BF41..BF5B ; LVT # Lo [27] HANGUL SYLLABLE BBOG..HANGUL SYLLABLE BBOH
+BF5D..BF77 ; LVT # Lo [27] HANGUL SYLLABLE BBWAG..HANGUL SYLLABLE BBWAH
+BF79..BF93 ; LVT # Lo [27] HANGUL SYLLABLE BBWAEG..HANGUL SYLLABLE BBWAEH
+BF95..BFAF ; LVT # Lo [27] HANGUL SYLLABLE BBOEG..HANGUL SYLLABLE BBOEH
+BFB1..BFCB ; LVT # Lo [27] HANGUL SYLLABLE BBYOG..HANGUL SYLLABLE BBYOH
+BFCD..BFE7 ; LVT # Lo [27] HANGUL SYLLABLE BBUG..HANGUL SYLLABLE BBUH
+BFE9..C003 ; LVT # Lo [27] HANGUL SYLLABLE BBWEOG..HANGUL SYLLABLE BBWEOH
+C005..C01F ; LVT # Lo [27] HANGUL SYLLABLE BBWEG..HANGUL SYLLABLE BBWEH
+C021..C03B ; LVT # Lo [27] HANGUL SYLLABLE BBWIG..HANGUL SYLLABLE BBWIH
+C03D..C057 ; LVT # Lo [27] HANGUL SYLLABLE BBYUG..HANGUL SYLLABLE BBYUH
+C059..C073 ; LVT # Lo [27] HANGUL SYLLABLE BBEUG..HANGUL SYLLABLE BBEUH
+C075..C08F ; LVT # Lo [27] HANGUL SYLLABLE BBYIG..HANGUL SYLLABLE BBYIH
+C091..C0AB ; LVT # Lo [27] HANGUL SYLLABLE BBIG..HANGUL SYLLABLE BBIH
+C0AD..C0C7 ; LVT # Lo [27] HANGUL SYLLABLE SAG..HANGUL SYLLABLE SAH
+C0C9..C0E3 ; LVT # Lo [27] HANGUL SYLLABLE SAEG..HANGUL SYLLABLE SAEH
+C0E5..C0FF ; LVT # Lo [27] HANGUL SYLLABLE SYAG..HANGUL SYLLABLE SYAH
+C101..C11B ; LVT # Lo [27] HANGUL SYLLABLE SYAEG..HANGUL SYLLABLE SYAEH
+C11D..C137 ; LVT # Lo [27] HANGUL SYLLABLE SEOG..HANGUL SYLLABLE SEOH
+C139..C153 ; LVT # Lo [27] HANGUL SYLLABLE SEG..HANGUL SYLLABLE SEH
+C155..C16F ; LVT # Lo [27] HANGUL SYLLABLE SYEOG..HANGUL SYLLABLE SYEOH
+C171..C18B ; LVT # Lo [27] HANGUL SYLLABLE SYEG..HANGUL SYLLABLE SYEH
+C18D..C1A7 ; LVT # Lo [27] HANGUL SYLLABLE SOG..HANGUL SYLLABLE SOH
+C1A9..C1C3 ; LVT # Lo [27] HANGUL SYLLABLE SWAG..HANGUL SYLLABLE SWAH
+C1C5..C1DF ; LVT # Lo [27] HANGUL SYLLABLE SWAEG..HANGUL SYLLABLE SWAEH
+C1E1..C1FB ; LVT # Lo [27] HANGUL SYLLABLE SOEG..HANGUL SYLLABLE SOEH
+C1FD..C217 ; LVT # Lo [27] HANGUL SYLLABLE SYOG..HANGUL SYLLABLE SYOH
+C219..C233 ; LVT # Lo [27] HANGUL SYLLABLE SUG..HANGUL SYLLABLE SUH
+C235..C24F ; LVT # Lo [27] HANGUL SYLLABLE SWEOG..HANGUL SYLLABLE SWEOH
+C251..C26B ; LVT # Lo [27] HANGUL SYLLABLE SWEG..HANGUL SYLLABLE SWEH
+C26D..C287 ; LVT # Lo [27] HANGUL SYLLABLE SWIG..HANGUL SYLLABLE SWIH
+C289..C2A3 ; LVT # Lo [27] HANGUL SYLLABLE SYUG..HANGUL SYLLABLE SYUH
+C2A5..C2BF ; LVT # Lo [27] HANGUL SYLLABLE SEUG..HANGUL SYLLABLE SEUH
+C2C1..C2DB ; LVT # Lo [27] HANGUL SYLLABLE SYIG..HANGUL SYLLABLE SYIH
+C2DD..C2F7 ; LVT # Lo [27] HANGUL SYLLABLE SIG..HANGUL SYLLABLE SIH
+C2F9..C313 ; LVT # Lo [27] HANGUL SYLLABLE SSAG..HANGUL SYLLABLE SSAH
+C315..C32F ; LVT # Lo [27] HANGUL SYLLABLE SSAEG..HANGUL SYLLABLE SSAEH
+C331..C34B ; LVT # Lo [27] HANGUL SYLLABLE SSYAG..HANGUL SYLLABLE SSYAH
+C34D..C367 ; LVT # Lo [27] HANGUL SYLLABLE SSYAEG..HANGUL SYLLABLE SSYAEH
+C369..C383 ; LVT # Lo [27] HANGUL SYLLABLE SSEOG..HANGUL SYLLABLE SSEOH
+C385..C39F ; LVT # Lo [27] HANGUL SYLLABLE SSEG..HANGUL SYLLABLE SSEH
+C3A1..C3BB ; LVT # Lo [27] HANGUL SYLLABLE SSYEOG..HANGUL SYLLABLE SSYEOH
+C3BD..C3D7 ; LVT # Lo [27] HANGUL SYLLABLE SSYEG..HANGUL SYLLABLE SSYEH
+C3D9..C3F3 ; LVT # Lo [27] HANGUL SYLLABLE SSOG..HANGUL SYLLABLE SSOH
+C3F5..C40F ; LVT # Lo [27] HANGUL SYLLABLE SSWAG..HANGUL SYLLABLE SSWAH
+C411..C42B ; LVT # Lo [27] HANGUL SYLLABLE SSWAEG..HANGUL SYLLABLE SSWAEH
+C42D..C447 ; LVT # Lo [27] HANGUL SYLLABLE SSOEG..HANGUL SYLLABLE SSOEH
+C449..C463 ; LVT # Lo [27] HANGUL SYLLABLE SSYOG..HANGUL SYLLABLE SSYOH
+C465..C47F ; LVT # Lo [27] HANGUL SYLLABLE SSUG..HANGUL SYLLABLE SSUH
+C481..C49B ; LVT # Lo [27] HANGUL SYLLABLE SSWEOG..HANGUL SYLLABLE SSWEOH
+C49D..C4B7 ; LVT # Lo [27] HANGUL SYLLABLE SSWEG..HANGUL SYLLABLE SSWEH
+C4B9..C4D3 ; LVT # Lo [27] HANGUL SYLLABLE SSWIG..HANGUL SYLLABLE SSWIH
+C4D5..C4EF ; LVT # Lo [27] HANGUL SYLLABLE SSYUG..HANGUL SYLLABLE SSYUH
+C4F1..C50B ; LVT # Lo [27] HANGUL SYLLABLE SSEUG..HANGUL SYLLABLE SSEUH
+C50D..C527 ; LVT # Lo [27] HANGUL SYLLABLE SSYIG..HANGUL SYLLABLE SSYIH
+C529..C543 ; LVT # Lo [27] HANGUL SYLLABLE SSIG..HANGUL SYLLABLE SSIH
+C545..C55F ; LVT # Lo [27] HANGUL SYLLABLE AG..HANGUL SYLLABLE AH
+C561..C57B ; LVT # Lo [27] HANGUL SYLLABLE AEG..HANGUL SYLLABLE AEH
+C57D..C597 ; LVT # Lo [27] HANGUL SYLLABLE YAG..HANGUL SYLLABLE YAH
+C599..C5B3 ; LVT # Lo [27] HANGUL SYLLABLE YAEG..HANGUL SYLLABLE YAEH
+C5B5..C5CF ; LVT # Lo [27] HANGUL SYLLABLE EOG..HANGUL SYLLABLE EOH
+C5D1..C5EB ; LVT # Lo [27] HANGUL SYLLABLE EG..HANGUL SYLLABLE EH
+C5ED..C607 ; LVT # Lo [27] HANGUL SYLLABLE YEOG..HANGUL SYLLABLE YEOH
+C609..C623 ; LVT # Lo [27] HANGUL SYLLABLE YEG..HANGUL SYLLABLE YEH
+C625..C63F ; LVT # Lo [27] HANGUL SYLLABLE OG..HANGUL SYLLABLE OH
+C641..C65B ; LVT # Lo [27] HANGUL SYLLABLE WAG..HANGUL SYLLABLE WAH
+C65D..C677 ; LVT # Lo [27] HANGUL SYLLABLE WAEG..HANGUL SYLLABLE WAEH
+C679..C693 ; LVT # Lo [27] HANGUL SYLLABLE OEG..HANGUL SYLLABLE OEH
+C695..C6AF ; LVT # Lo [27] HANGUL SYLLABLE YOG..HANGUL SYLLABLE YOH
+C6B1..C6CB ; LVT # Lo [27] HANGUL SYLLABLE UG..HANGUL SYLLABLE UH
+C6CD..C6E7 ; LVT # Lo [27] HANGUL SYLLABLE WEOG..HANGUL SYLLABLE WEOH
+C6E9..C703 ; LVT # Lo [27] HANGUL SYLLABLE WEG..HANGUL SYLLABLE WEH
+C705..C71F ; LVT # Lo [27] HANGUL SYLLABLE WIG..HANGUL SYLLABLE WIH
+C721..C73B ; LVT # Lo [27] HANGUL SYLLABLE YUG..HANGUL SYLLABLE YUH
+C73D..C757 ; LVT # Lo [27] HANGUL SYLLABLE EUG..HANGUL SYLLABLE EUH
+C759..C773 ; LVT # Lo [27] HANGUL SYLLABLE YIG..HANGUL SYLLABLE YIH
+C775..C78F ; LVT # Lo [27] HANGUL SYLLABLE IG..HANGUL SYLLABLE IH
+C791..C7AB ; LVT # Lo [27] HANGUL SYLLABLE JAG..HANGUL SYLLABLE JAH
+C7AD..C7C7 ; LVT # Lo [27] HANGUL SYLLABLE JAEG..HANGUL SYLLABLE JAEH
+C7C9..C7E3 ; LVT # Lo [27] HANGUL SYLLABLE JYAG..HANGUL SYLLABLE JYAH
+C7E5..C7FF ; LVT # Lo [27] HANGUL SYLLABLE JYAEG..HANGUL SYLLABLE JYAEH
+C801..C81B ; LVT # Lo [27] HANGUL SYLLABLE JEOG..HANGUL SYLLABLE JEOH
+C81D..C837 ; LVT # Lo [27] HANGUL SYLLABLE JEG..HANGUL SYLLABLE JEH
+C839..C853 ; LVT # Lo [27] HANGUL SYLLABLE JYEOG..HANGUL SYLLABLE JYEOH
+C855..C86F ; LVT # Lo [27] HANGUL SYLLABLE JYEG..HANGUL SYLLABLE JYEH
+C871..C88B ; LVT # Lo [27] HANGUL SYLLABLE JOG..HANGUL SYLLABLE JOH
+C88D..C8A7 ; LVT # Lo [27] HANGUL SYLLABLE JWAG..HANGUL SYLLABLE JWAH
+C8A9..C8C3 ; LVT # Lo [27] HANGUL SYLLABLE JWAEG..HANGUL SYLLABLE JWAEH
+C8C5..C8DF ; LVT # Lo [27] HANGUL SYLLABLE JOEG..HANGUL SYLLABLE JOEH
+C8E1..C8FB ; LVT # Lo [27] HANGUL SYLLABLE JYOG..HANGUL SYLLABLE JYOH
+C8FD..C917 ; LVT # Lo [27] HANGUL SYLLABLE JUG..HANGUL SYLLABLE JUH
+C919..C933 ; LVT # Lo [27] HANGUL SYLLABLE JWEOG..HANGUL SYLLABLE JWEOH
+C935..C94F ; LVT # Lo [27] HANGUL SYLLABLE JWEG..HANGUL SYLLABLE JWEH
+C951..C96B ; LVT # Lo [27] HANGUL SYLLABLE JWIG..HANGUL SYLLABLE JWIH
+C96D..C987 ; LVT # Lo [27] HANGUL SYLLABLE JYUG..HANGUL SYLLABLE JYUH
+C989..C9A3 ; LVT # Lo [27] HANGUL SYLLABLE JEUG..HANGUL SYLLABLE JEUH
+C9A5..C9BF ; LVT # Lo [27] HANGUL SYLLABLE JYIG..HANGUL SYLLABLE JYIH
+C9C1..C9DB ; LVT # Lo [27] HANGUL SYLLABLE JIG..HANGUL SYLLABLE JIH
+C9DD..C9F7 ; LVT # Lo [27] HANGUL SYLLABLE JJAG..HANGUL SYLLABLE JJAH
+C9F9..CA13 ; LVT # Lo [27] HANGUL SYLLABLE JJAEG..HANGUL SYLLABLE JJAEH
+CA15..CA2F ; LVT # Lo [27] HANGUL SYLLABLE JJYAG..HANGUL SYLLABLE JJYAH
+CA31..CA4B ; LVT # Lo [27] HANGUL SYLLABLE JJYAEG..HANGUL SYLLABLE JJYAEH
+CA4D..CA67 ; LVT # Lo [27] HANGUL SYLLABLE JJEOG..HANGUL SYLLABLE JJEOH
+CA69..CA83 ; LVT # Lo [27] HANGUL SYLLABLE JJEG..HANGUL SYLLABLE JJEH
+CA85..CA9F ; LVT # Lo [27] HANGUL SYLLABLE JJYEOG..HANGUL SYLLABLE JJYEOH
+CAA1..CABB ; LVT # Lo [27] HANGUL SYLLABLE JJYEG..HANGUL SYLLABLE JJYEH
+CABD..CAD7 ; LVT # Lo [27] HANGUL SYLLABLE JJOG..HANGUL SYLLABLE JJOH
+CAD9..CAF3 ; LVT # Lo [27] HANGUL SYLLABLE JJWAG..HANGUL SYLLABLE JJWAH
+CAF5..CB0F ; LVT # Lo [27] HANGUL SYLLABLE JJWAEG..HANGUL SYLLABLE JJWAEH
+CB11..CB2B ; LVT # Lo [27] HANGUL SYLLABLE JJOEG..HANGUL SYLLABLE JJOEH
+CB2D..CB47 ; LVT # Lo [27] HANGUL SYLLABLE JJYOG..HANGUL SYLLABLE JJYOH
+CB49..CB63 ; LVT # Lo [27] HANGUL SYLLABLE JJUG..HANGUL SYLLABLE JJUH
+CB65..CB7F ; LVT # Lo [27] HANGUL SYLLABLE JJWEOG..HANGUL SYLLABLE JJWEOH
+CB81..CB9B ; LVT # Lo [27] HANGUL SYLLABLE JJWEG..HANGUL SYLLABLE JJWEH
+CB9D..CBB7 ; LVT # Lo [27] HANGUL SYLLABLE JJWIG..HANGUL SYLLABLE JJWIH
+CBB9..CBD3 ; LVT # Lo [27] HANGUL SYLLABLE JJYUG..HANGUL SYLLABLE JJYUH
+CBD5..CBEF ; LVT # Lo [27] HANGUL SYLLABLE JJEUG..HANGUL SYLLABLE JJEUH
+CBF1..CC0B ; LVT # Lo [27] HANGUL SYLLABLE JJYIG..HANGUL SYLLABLE JJYIH
+CC0D..CC27 ; LVT # Lo [27] HANGUL SYLLABLE JJIG..HANGUL SYLLABLE JJIH
+CC29..CC43 ; LVT # Lo [27] HANGUL SYLLABLE CAG..HANGUL SYLLABLE CAH
+CC45..CC5F ; LVT # Lo [27] HANGUL SYLLABLE CAEG..HANGUL SYLLABLE CAEH
+CC61..CC7B ; LVT # Lo [27] HANGUL SYLLABLE CYAG..HANGUL SYLLABLE CYAH
+CC7D..CC97 ; LVT # Lo [27] HANGUL SYLLABLE CYAEG..HANGUL SYLLABLE CYAEH
+CC99..CCB3 ; LVT # Lo [27] HANGUL SYLLABLE CEOG..HANGUL SYLLABLE CEOH
+CCB5..CCCF ; LVT # Lo [27] HANGUL SYLLABLE CEG..HANGUL SYLLABLE CEH
+CCD1..CCEB ; LVT # Lo [27] HANGUL SYLLABLE CYEOG..HANGUL SYLLABLE CYEOH
+CCED..CD07 ; LVT # Lo [27] HANGUL SYLLABLE CYEG..HANGUL SYLLABLE CYEH
+CD09..CD23 ; LVT # Lo [27] HANGUL SYLLABLE COG..HANGUL SYLLABLE COH
+CD25..CD3F ; LVT # Lo [27] HANGUL SYLLABLE CWAG..HANGUL SYLLABLE CWAH
+CD41..CD5B ; LVT # Lo [27] HANGUL SYLLABLE CWAEG..HANGUL SYLLABLE CWAEH
+CD5D..CD77 ; LVT # Lo [27] HANGUL SYLLABLE COEG..HANGUL SYLLABLE COEH
+CD79..CD93 ; LVT # Lo [27] HANGUL SYLLABLE CYOG..HANGUL SYLLABLE CYOH
+CD95..CDAF ; LVT # Lo [27] HANGUL SYLLABLE CUG..HANGUL SYLLABLE CUH
+CDB1..CDCB ; LVT # Lo [27] HANGUL SYLLABLE CWEOG..HANGUL SYLLABLE CWEOH
+CDCD..CDE7 ; LVT # Lo [27] HANGUL SYLLABLE CWEG..HANGUL SYLLABLE CWEH
+CDE9..CE03 ; LVT # Lo [27] HANGUL SYLLABLE CWIG..HANGUL SYLLABLE CWIH
+CE05..CE1F ; LVT # Lo [27] HANGUL SYLLABLE CYUG..HANGUL SYLLABLE CYUH
+CE21..CE3B ; LVT # Lo [27] HANGUL SYLLABLE CEUG..HANGUL SYLLABLE CEUH
+CE3D..CE57 ; LVT # Lo [27] HANGUL SYLLABLE CYIG..HANGUL SYLLABLE CYIH
+CE59..CE73 ; LVT # Lo [27] HANGUL SYLLABLE CIG..HANGUL SYLLABLE CIH
+CE75..CE8F ; LVT # Lo [27] HANGUL SYLLABLE KAG..HANGUL SYLLABLE KAH
+CE91..CEAB ; LVT # Lo [27] HANGUL SYLLABLE KAEG..HANGUL SYLLABLE KAEH
+CEAD..CEC7 ; LVT # Lo [27] HANGUL SYLLABLE KYAG..HANGUL SYLLABLE KYAH
+CEC9..CEE3 ; LVT # Lo [27] HANGUL SYLLABLE KYAEG..HANGUL SYLLABLE KYAEH
+CEE5..CEFF ; LVT # Lo [27] HANGUL SYLLABLE KEOG..HANGUL SYLLABLE KEOH
+CF01..CF1B ; LVT # Lo [27] HANGUL SYLLABLE KEG..HANGUL SYLLABLE KEH
+CF1D..CF37 ; LVT # Lo [27] HANGUL SYLLABLE KYEOG..HANGUL SYLLABLE KYEOH
+CF39..CF53 ; LVT # Lo [27] HANGUL SYLLABLE KYEG..HANGUL SYLLABLE KYEH
+CF55..CF6F ; LVT # Lo [27] HANGUL SYLLABLE KOG..HANGUL SYLLABLE KOH
+CF71..CF8B ; LVT # Lo [27] HANGUL SYLLABLE KWAG..HANGUL SYLLABLE KWAH
+CF8D..CFA7 ; LVT # Lo [27] HANGUL SYLLABLE KWAEG..HANGUL SYLLABLE KWAEH
+CFA9..CFC3 ; LVT # Lo [27] HANGUL SYLLABLE KOEG..HANGUL SYLLABLE KOEH
+CFC5..CFDF ; LVT # Lo [27] HANGUL SYLLABLE KYOG..HANGUL SYLLABLE KYOH
+CFE1..CFFB ; LVT # Lo [27] HANGUL SYLLABLE KUG..HANGUL SYLLABLE KUH
+CFFD..D017 ; LVT # Lo [27] HANGUL SYLLABLE KWEOG..HANGUL SYLLABLE KWEOH
+D019..D033 ; LVT # Lo [27] HANGUL SYLLABLE KWEG..HANGUL SYLLABLE KWEH
+D035..D04F ; LVT # Lo [27] HANGUL SYLLABLE KWIG..HANGUL SYLLABLE KWIH
+D051..D06B ; LVT # Lo [27] HANGUL SYLLABLE KYUG..HANGUL SYLLABLE KYUH
+D06D..D087 ; LVT # Lo [27] HANGUL SYLLABLE KEUG..HANGUL SYLLABLE KEUH
+D089..D0A3 ; LVT # Lo [27] HANGUL SYLLABLE KYIG..HANGUL SYLLABLE KYIH
+D0A5..D0BF ; LVT # Lo [27] HANGUL SYLLABLE KIG..HANGUL SYLLABLE KIH
+D0C1..D0DB ; LVT # Lo [27] HANGUL SYLLABLE TAG..HANGUL SYLLABLE TAH
+D0DD..D0F7 ; LVT # Lo [27] HANGUL SYLLABLE TAEG..HANGUL SYLLABLE TAEH
+D0F9..D113 ; LVT # Lo [27] HANGUL SYLLABLE TYAG..HANGUL SYLLABLE TYAH
+D115..D12F ; LVT # Lo [27] HANGUL SYLLABLE TYAEG..HANGUL SYLLABLE TYAEH
+D131..D14B ; LVT # Lo [27] HANGUL SYLLABLE TEOG..HANGUL SYLLABLE TEOH
+D14D..D167 ; LVT # Lo [27] HANGUL SYLLABLE TEG..HANGUL SYLLABLE TEH
+D169..D183 ; LVT # Lo [27] HANGUL SYLLABLE TYEOG..HANGUL SYLLABLE TYEOH
+D185..D19F ; LVT # Lo [27] HANGUL SYLLABLE TYEG..HANGUL SYLLABLE TYEH
+D1A1..D1BB ; LVT # Lo [27] HANGUL SYLLABLE TOG..HANGUL SYLLABLE TOH
+D1BD..D1D7 ; LVT # Lo [27] HANGUL SYLLABLE TWAG..HANGUL SYLLABLE TWAH
+D1D9..D1F3 ; LVT # Lo [27] HANGUL SYLLABLE TWAEG..HANGUL SYLLABLE TWAEH
+D1F5..D20F ; LVT # Lo [27] HANGUL SYLLABLE TOEG..HANGUL SYLLABLE TOEH
+D211..D22B ; LVT # Lo [27] HANGUL SYLLABLE TYOG..HANGUL SYLLABLE TYOH
+D22D..D247 ; LVT # Lo [27] HANGUL SYLLABLE TUG..HANGUL SYLLABLE TUH
+D249..D263 ; LVT # Lo [27] HANGUL SYLLABLE TWEOG..HANGUL SYLLABLE TWEOH
+D265..D27F ; LVT # Lo [27] HANGUL SYLLABLE TWEG..HANGUL SYLLABLE TWEH
+D281..D29B ; LVT # Lo [27] HANGUL SYLLABLE TWIG..HANGUL SYLLABLE TWIH
+D29D..D2B7 ; LVT # Lo [27] HANGUL SYLLABLE TYUG..HANGUL SYLLABLE TYUH
+D2B9..D2D3 ; LVT # Lo [27] HANGUL SYLLABLE TEUG..HANGUL SYLLABLE TEUH
+D2D5..D2EF ; LVT # Lo [27] HANGUL SYLLABLE TYIG..HANGUL SYLLABLE TYIH
+D2F1..D30B ; LVT # Lo [27] HANGUL SYLLABLE TIG..HANGUL SYLLABLE TIH
+D30D..D327 ; LVT # Lo [27] HANGUL SYLLABLE PAG..HANGUL SYLLABLE PAH
+D329..D343 ; LVT # Lo [27] HANGUL SYLLABLE PAEG..HANGUL SYLLABLE PAEH
+D345..D35F ; LVT # Lo [27] HANGUL SYLLABLE PYAG..HANGUL SYLLABLE PYAH
+D361..D37B ; LVT # Lo [27] HANGUL SYLLABLE PYAEG..HANGUL SYLLABLE PYAEH
+D37D..D397 ; LVT # Lo [27] HANGUL SYLLABLE PEOG..HANGUL SYLLABLE PEOH
+D399..D3B3 ; LVT # Lo [27] HANGUL SYLLABLE PEG..HANGUL SYLLABLE PEH
+D3B5..D3CF ; LVT # Lo [27] HANGUL SYLLABLE PYEOG..HANGUL SYLLABLE PYEOH
+D3D1..D3EB ; LVT # Lo [27] HANGUL SYLLABLE PYEG..HANGUL SYLLABLE PYEH
+D3ED..D407 ; LVT # Lo [27] HANGUL SYLLABLE POG..HANGUL SYLLABLE POH
+D409..D423 ; LVT # Lo [27] HANGUL SYLLABLE PWAG..HANGUL SYLLABLE PWAH
+D425..D43F ; LVT # Lo [27] HANGUL SYLLABLE PWAEG..HANGUL SYLLABLE PWAEH
+D441..D45B ; LVT # Lo [27] HANGUL SYLLABLE POEG..HANGUL SYLLABLE POEH
+D45D..D477 ; LVT # Lo [27] HANGUL SYLLABLE PYOG..HANGUL SYLLABLE PYOH
+D479..D493 ; LVT # Lo [27] HANGUL SYLLABLE PUG..HANGUL SYLLABLE PUH
+D495..D4AF ; LVT # Lo [27] HANGUL SYLLABLE PWEOG..HANGUL SYLLABLE PWEOH
+D4B1..D4CB ; LVT # Lo [27] HANGUL SYLLABLE PWEG..HANGUL SYLLABLE PWEH
+D4CD..D4E7 ; LVT # Lo [27] HANGUL SYLLABLE PWIG..HANGUL SYLLABLE PWIH
+D4E9..D503 ; LVT # Lo [27] HANGUL SYLLABLE PYUG..HANGUL SYLLABLE PYUH
+D505..D51F ; LVT # Lo [27] HANGUL SYLLABLE PEUG..HANGUL SYLLABLE PEUH
+D521..D53B ; LVT # Lo [27] HANGUL SYLLABLE PYIG..HANGUL SYLLABLE PYIH
+D53D..D557 ; LVT # Lo [27] HANGUL SYLLABLE PIG..HANGUL SYLLABLE PIH
+D559..D573 ; LVT # Lo [27] HANGUL SYLLABLE HAG..HANGUL SYLLABLE HAH
+D575..D58F ; LVT # Lo [27] HANGUL SYLLABLE HAEG..HANGUL SYLLABLE HAEH
+D591..D5AB ; LVT # Lo [27] HANGUL SYLLABLE HYAG..HANGUL SYLLABLE HYAH
+D5AD..D5C7 ; LVT # Lo [27] HANGUL SYLLABLE HYAEG..HANGUL SYLLABLE HYAEH
+D5C9..D5E3 ; LVT # Lo [27] HANGUL SYLLABLE HEOG..HANGUL SYLLABLE HEOH
+D5E5..D5FF ; LVT # Lo [27] HANGUL SYLLABLE HEG..HANGUL SYLLABLE HEH
+D601..D61B ; LVT # Lo [27] HANGUL SYLLABLE HYEOG..HANGUL SYLLABLE HYEOH
+D61D..D637 ; LVT # Lo [27] HANGUL SYLLABLE HYEG..HANGUL SYLLABLE HYEH
+D639..D653 ; LVT # Lo [27] HANGUL SYLLABLE HOG..HANGUL SYLLABLE HOH
+D655..D66F ; LVT # Lo [27] HANGUL SYLLABLE HWAG..HANGUL SYLLABLE HWAH
+D671..D68B ; LVT # Lo [27] HANGUL SYLLABLE HWAEG..HANGUL SYLLABLE HWAEH
+D68D..D6A7 ; LVT # Lo [27] HANGUL SYLLABLE HOEG..HANGUL SYLLABLE HOEH
+D6A9..D6C3 ; LVT # Lo [27] HANGUL SYLLABLE HYOG..HANGUL SYLLABLE HYOH
+D6C5..D6DF ; LVT # Lo [27] HANGUL SYLLABLE HUG..HANGUL SYLLABLE HUH
+D6E1..D6FB ; LVT # Lo [27] HANGUL SYLLABLE HWEOG..HANGUL SYLLABLE HWEOH
+D6FD..D717 ; LVT # Lo [27] HANGUL SYLLABLE HWEG..HANGUL SYLLABLE HWEH
+D719..D733 ; LVT # Lo [27] HANGUL SYLLABLE HWIG..HANGUL SYLLABLE HWIH
+D735..D74F ; LVT # Lo [27] HANGUL SYLLABLE HYUG..HANGUL SYLLABLE HYUH
+D751..D76B ; LVT # Lo [27] HANGUL SYLLABLE HEUG..HANGUL SYLLABLE HEUH
+D76D..D787 ; LVT # Lo [27] HANGUL SYLLABLE HYIG..HANGUL SYLLABLE HYIH
+D789..D7A3 ; LVT # Lo [27] HANGUL SYLLABLE HIG..HANGUL SYLLABLE HIH
+
+# Total code points: 10773
+
+# EOF
diff --git a/third_party/harfbuzz/contrib/tables/README b/third_party/harfbuzz/contrib/tables/README
new file mode 100644
index 0000000..605d1c0
--- /dev/null
+++ b/third_party/harfbuzz/contrib/tables/README
@@ -0,0 +1,17 @@
+This directory contains Python script to parse several of the Unicode tables
+that are downloadable from the web and generate C header files from them.
+
+These are the locations of the files which are parsed. You should download these
+files and put them in this directory.
+
+http://www.unicode.org/Public/5.1.0/ucd/extracted/DerivedGeneralCategory.txt
+http://www.unicode.org/Public/5.1.0/ucd/extracted/DerivedCombiningClass.txt
+http://www.unicode.org/Public/UNIDATA/auxiliary/GraphemeBreakProperty.txt
+http://www.unicode.org/Public/5.1.0/ucd/Scripts.txt
+
+Then you can run the following python scripts to generate the header files:
+
+python category-parse.py DerivedGeneralCategory.txt category-properties.h
+python combining-class-parse.py DerivedCombiningClass.txt combining-properties.h
+python grapheme-break-parse.py GraphemeBreakProperty.txt grapheme-break-properties.h
+python scripts-parse.py Scripts.txt script-properties.h
diff --git a/third_party/harfbuzz/contrib/tables/Scripts.txt b/third_party/harfbuzz/contrib/tables/Scripts.txt
new file mode 100644
index 0000000..7065486
--- /dev/null
+++ b/third_party/harfbuzz/contrib/tables/Scripts.txt
@@ -0,0 +1,1747 @@
+# Scripts-5.1.0.txt
+# Date: 2008-03-20, 17:55:33 GMT [MD]
+#
+# Unicode Character Database
+# Copyright (c) 1991-2008 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+# For documentation, see UCD.html
+
+# ================================================
+
+# Property: Script
+
+# All code points not explicitly listed for Script
+# have the value Unknown (Zzzz).
+
+# @missing: 0000..10FFFF; Unknown
+
+# ================================================
+
+0000..001F ; Common # Cc [32] <control-0000>..<control-001F>
+0020 ; Common # Zs SPACE
+0021..0023 ; Common # Po [3] EXCLAMATION MARK..NUMBER SIGN
+0024 ; Common # Sc DOLLAR SIGN
+0025..0027 ; Common # Po [3] PERCENT SIGN..APOSTROPHE
+0028 ; Common # Ps LEFT PARENTHESIS
+0029 ; Common # Pe RIGHT PARENTHESIS
+002A ; Common # Po ASTERISK
+002B ; Common # Sm PLUS SIGN
+002C ; Common # Po COMMA
+002D ; Common # Pd HYPHEN-MINUS
+002E..002F ; Common # Po [2] FULL STOP..SOLIDUS
+0030..0039 ; Common # Nd [10] DIGIT ZERO..DIGIT NINE
+003A..003B ; Common # Po [2] COLON..SEMICOLON
+003C..003E ; Common # Sm [3] LESS-THAN SIGN..GREATER-THAN SIGN
+003F..0040 ; Common # Po [2] QUESTION MARK..COMMERCIAL AT
+005B ; Common # Ps LEFT SQUARE BRACKET
+005C ; Common # Po REVERSE SOLIDUS
+005D ; Common # Pe RIGHT SQUARE BRACKET
+005E ; Common # Sk CIRCUMFLEX ACCENT
+005F ; Common # Pc LOW LINE
+0060 ; Common # Sk GRAVE ACCENT
+007B ; Common # Ps LEFT CURLY BRACKET
+007C ; Common # Sm VERTICAL LINE
+007D ; Common # Pe RIGHT CURLY BRACKET
+007E ; Common # Sm TILDE
+007F..009F ; Common # Cc [33] <control-007F>..<control-009F>
+00A0 ; Common # Zs NO-BREAK SPACE
+00A1 ; Common # Po INVERTED EXCLAMATION MARK
+00A2..00A5 ; Common # Sc [4] CENT SIGN..YEN SIGN
+00A6..00A7 ; Common # So [2] BROKEN BAR..SECTION SIGN
+00A8 ; Common # Sk DIAERESIS
+00A9 ; Common # So COPYRIGHT SIGN
+00AB ; Common # Pi LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+00AC ; Common # Sm NOT SIGN
+00AD ; Common # Cf SOFT HYPHEN
+00AE ; Common # So REGISTERED SIGN
+00AF ; Common # Sk MACRON
+00B0 ; Common # So DEGREE SIGN
+00B1 ; Common # Sm PLUS-MINUS SIGN
+00B2..00B3 ; Common # No [2] SUPERSCRIPT TWO..SUPERSCRIPT THREE
+00B4 ; Common # Sk ACUTE ACCENT
+00B5 ; Common # L& MICRO SIGN
+00B6 ; Common # So PILCROW SIGN
+00B7 ; Common # Po MIDDLE DOT
+00B8 ; Common # Sk CEDILLA
+00B9 ; Common # No SUPERSCRIPT ONE
+00BB ; Common # Pf RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+00BC..00BE ; Common # No [3] VULGAR FRACTION ONE QUARTER..VULGAR FRACTION THREE QUARTERS
+00BF ; Common # Po INVERTED QUESTION MARK
+00D7 ; Common # Sm MULTIPLICATION SIGN
+00F7 ; Common # Sm DIVISION SIGN
+02B9..02C1 ; Common # Lm [9] MODIFIER LETTER PRIME..MODIFIER LETTER REVERSED GLOTTAL STOP
+02C2..02C5 ; Common # Sk [4] MODIFIER LETTER LEFT ARROWHEAD..MODIFIER LETTER DOWN ARROWHEAD
+02C6..02D1 ; Common # Lm [12] MODIFIER LETTER CIRCUMFLEX ACCENT..MODIFIER LETTER HALF TRIANGULAR COLON
+02D2..02DF ; Common # Sk [14] MODIFIER LETTER CENTRED RIGHT HALF RING..MODIFIER LETTER CROSS ACCENT
+02E5..02EB ; Common # Sk [7] MODIFIER LETTER EXTRA-HIGH TONE BAR..MODIFIER LETTER YANG DEPARTING TONE MARK
+02EC ; Common # Lm MODIFIER LETTER VOICING
+02ED ; Common # Sk MODIFIER LETTER UNASPIRATED
+02EE ; Common # Lm MODIFIER LETTER DOUBLE APOSTROPHE
+02EF..02FF ; Common # Sk [17] MODIFIER LETTER LOW DOWN ARROWHEAD..MODIFIER LETTER LOW LEFT ARROW
+0374 ; Common # Lm GREEK NUMERAL SIGN
+037E ; Common # Po GREEK QUESTION MARK
+0385 ; Common # Sk GREEK DIALYTIKA TONOS
+0387 ; Common # Po GREEK ANO TELEIA
+0589 ; Common # Po ARMENIAN FULL STOP
+0600..0603 ; Common # Cf [4] ARABIC NUMBER SIGN..ARABIC SIGN SAFHA
+060C ; Common # Po ARABIC COMMA
+061B ; Common # Po ARABIC SEMICOLON
+061F ; Common # Po ARABIC QUESTION MARK
+0640 ; Common # Lm ARABIC TATWEEL
+0660..0669 ; Common # Nd [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE
+06DD ; Common # Cf ARABIC END OF AYAH
+0964..0965 ; Common # Po [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA
+0970 ; Common # Po DEVANAGARI ABBREVIATION SIGN
+0CF1..0CF2 ; Common # So [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA
+0E3F ; Common # Sc THAI CURRENCY SYMBOL BAHT
+10FB ; Common # Po GEORGIAN PARAGRAPH SEPARATOR
+16EB..16ED ; Common # Po [3] RUNIC SINGLE PUNCTUATION..RUNIC CROSS PUNCTUATION
+1735..1736 ; Common # Po [2] PHILIPPINE SINGLE PUNCTUATION..PHILIPPINE DOUBLE PUNCTUATION
+1802..1803 ; Common # Po [2] MONGOLIAN COMMA..MONGOLIAN FULL STOP
+1805 ; Common # Po MONGOLIAN FOUR DOTS
+2000..200A ; Common # Zs [11] EN QUAD..HAIR SPACE
+200B ; Common # Cf ZERO WIDTH SPACE
+200E..200F ; Common # Cf [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK
+2010..2015 ; Common # Pd [6] HYPHEN..HORIZONTAL BAR
+2016..2017 ; Common # Po [2] DOUBLE VERTICAL LINE..DOUBLE LOW LINE
+2018 ; Common # Pi LEFT SINGLE QUOTATION MARK
+2019 ; Common # Pf RIGHT SINGLE QUOTATION MARK
+201A ; Common # Ps SINGLE LOW-9 QUOTATION MARK
+201B..201C ; Common # Pi [2] SINGLE HIGH-REVERSED-9 QUOTATION MARK..LEFT DOUBLE QUOTATION MARK
+201D ; Common # Pf RIGHT DOUBLE QUOTATION MARK
+201E ; Common # Ps DOUBLE LOW-9 QUOTATION MARK
+201F ; Common # Pi DOUBLE HIGH-REVERSED-9 QUOTATION MARK
+2020..2027 ; Common # Po [8] DAGGER..HYPHENATION POINT
+2028 ; Common # Zl LINE SEPARATOR
+2029 ; Common # Zp PARAGRAPH SEPARATOR
+202A..202E ; Common # Cf [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE
+202F ; Common # Zs NARROW NO-BREAK SPACE
+2030..2038 ; Common # Po [9] PER MILLE SIGN..CARET
+2039 ; Common # Pi SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+203A ; Common # Pf SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+203B..203E ; Common # Po [4] REFERENCE MARK..OVERLINE
+203F..2040 ; Common # Pc [2] UNDERTIE..CHARACTER TIE
+2041..2043 ; Common # Po [3] CARET INSERTION POINT..HYPHEN BULLET
+2044 ; Common # Sm FRACTION SLASH
+2045 ; Common # Ps LEFT SQUARE BRACKET WITH QUILL
+2046 ; Common # Pe RIGHT SQUARE BRACKET WITH QUILL
+2047..2051 ; Common # Po [11] DOUBLE QUESTION MARK..TWO ASTERISKS ALIGNED VERTICALLY
+2052 ; Common # Sm COMMERCIAL MINUS SIGN
+2053 ; Common # Po SWUNG DASH
+2054 ; Common # Pc INVERTED UNDERTIE
+2055..205E ; Common # Po [10] FLOWER PUNCTUATION MARK..VERTICAL FOUR DOTS
+205F ; Common # Zs MEDIUM MATHEMATICAL SPACE
+2060..2064 ; Common # Cf [5] WORD JOINER..INVISIBLE PLUS
+206A..206F ; Common # Cf [6] INHIBIT SYMMETRIC SWAPPING..NOMINAL DIGIT SHAPES
+2070 ; Common # No SUPERSCRIPT ZERO
+2074..2079 ; Common # No [6] SUPERSCRIPT FOUR..SUPERSCRIPT NINE
+207A..207C ; Common # Sm [3] SUPERSCRIPT PLUS SIGN..SUPERSCRIPT EQUALS SIGN
+207D ; Common # Ps SUPERSCRIPT LEFT PARENTHESIS
+207E ; Common # Pe SUPERSCRIPT RIGHT PARENTHESIS
+2080..2089 ; Common # No [10] SUBSCRIPT ZERO..SUBSCRIPT NINE
+208A..208C ; Common # Sm [3] SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN
+208D ; Common # Ps SUBSCRIPT LEFT PARENTHESIS
+208E ; Common # Pe SUBSCRIPT RIGHT PARENTHESIS
+20A0..20B5 ; Common # Sc [22] EURO-CURRENCY SIGN..CEDI SIGN
+2100..2101 ; Common # So [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT
+2102 ; Common # L& DOUBLE-STRUCK CAPITAL C
+2103..2106 ; Common # So [4] DEGREE CELSIUS..CADA UNA
+2107 ; Common # L& EULER CONSTANT
+2108..2109 ; Common # So [2] SCRUPLE..DEGREE FAHRENHEIT
+210A..2113 ; Common # L& [10] SCRIPT SMALL G..SCRIPT SMALL L
+2114 ; Common # So L B BAR SYMBOL
+2115 ; Common # L& DOUBLE-STRUCK CAPITAL N
+2116..2118 ; Common # So [3] NUMERO SIGN..SCRIPT CAPITAL P
+2119..211D ; Common # L& [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R
+211E..2123 ; Common # So [6] PRESCRIPTION TAKE..VERSICLE
+2124 ; Common # L& DOUBLE-STRUCK CAPITAL Z
+2125 ; Common # So OUNCE SIGN
+2127 ; Common # So INVERTED OHM SIGN
+2128 ; Common # L& BLACK-LETTER CAPITAL Z
+2129 ; Common # So TURNED GREEK SMALL LETTER IOTA
+212C..212D ; Common # L& [2] SCRIPT CAPITAL B..BLACK-LETTER CAPITAL C
+212E ; Common # So ESTIMATED SYMBOL
+212F..2131 ; Common # L& [3] SCRIPT SMALL E..SCRIPT CAPITAL F
+2133..2134 ; Common # L& [2] SCRIPT CAPITAL M..SCRIPT SMALL O
+2135..2138 ; Common # Lo [4] ALEF SYMBOL..DALET SYMBOL
+2139 ; Common # L& INFORMATION SOURCE
+213A..213B ; Common # So [2] ROTATED CAPITAL Q..FACSIMILE SIGN
+213C..213F ; Common # L& [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI
+2140..2144 ; Common # Sm [5] DOUBLE-STRUCK N-ARY SUMMATION..TURNED SANS-SERIF CAPITAL Y
+2145..2149 ; Common # L& [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J
+214A ; Common # So PROPERTY LINE
+214B ; Common # Sm TURNED AMPERSAND
+214C..214D ; Common # So [2] PER SIGN..AKTIESELSKAB
+214F ; Common # So SYMBOL FOR SAMARITAN SOURCE
+2153..215F ; Common # No [13] VULGAR FRACTION ONE THIRD..FRACTION NUMERATOR ONE
+2190..2194 ; Common # Sm [5] LEFTWARDS ARROW..LEFT RIGHT ARROW
+2195..2199 ; Common # So [5] UP DOWN ARROW..SOUTH WEST ARROW
+219A..219B ; Common # Sm [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE
+219C..219F ; Common # So [4] LEFTWARDS WAVE ARROW..UPWARDS TWO HEADED ARROW
+21A0 ; Common # Sm RIGHTWARDS TWO HEADED ARROW
+21A1..21A2 ; Common # So [2] DOWNWARDS TWO HEADED ARROW..LEFTWARDS ARROW WITH TAIL
+21A3 ; Common # Sm RIGHTWARDS ARROW WITH TAIL
+21A4..21A5 ; Common # So [2] LEFTWARDS ARROW FROM BAR..UPWARDS ARROW FROM BAR
+21A6 ; Common # Sm RIGHTWARDS ARROW FROM BAR
+21A7..21AD ; Common # So [7] DOWNWARDS ARROW FROM BAR..LEFT RIGHT WAVE ARROW
+21AE ; Common # Sm LEFT RIGHT ARROW WITH STROKE
+21AF..21CD ; Common # So [31] DOWNWARDS ZIGZAG ARROW..LEFTWARDS DOUBLE ARROW WITH STROKE
+21CE..21CF ; Common # Sm [2] LEFT RIGHT DOUBLE ARROW WITH STROKE..RIGHTWARDS DOUBLE ARROW WITH STROKE
+21D0..21D1 ; Common # So [2] LEFTWARDS DOUBLE ARROW..UPWARDS DOUBLE ARROW
+21D2 ; Common # Sm RIGHTWARDS DOUBLE ARROW
+21D3 ; Common # So DOWNWARDS DOUBLE ARROW
+21D4 ; Common # Sm LEFT RIGHT DOUBLE ARROW
+21D5..21F3 ; Common # So [31] UP DOWN DOUBLE ARROW..UP DOWN WHITE ARROW
+21F4..22FF ; Common # Sm [268] RIGHT ARROW WITH SMALL CIRCLE..Z NOTATION BAG MEMBERSHIP
+2300..2307 ; Common # So [8] DIAMETER SIGN..WAVY LINE
+2308..230B ; Common # Sm [4] LEFT CEILING..RIGHT FLOOR
+230C..231F ; Common # So [20] BOTTOM RIGHT CROP..BOTTOM RIGHT CORNER
+2320..2321 ; Common # Sm [2] TOP HALF INTEGRAL..BOTTOM HALF INTEGRAL
+2322..2328 ; Common # So [7] FROWN..KEYBOARD
+2329 ; Common # Ps LEFT-POINTING ANGLE BRACKET
+232A ; Common # Pe RIGHT-POINTING ANGLE BRACKET
+232B..237B ; Common # So [81] ERASE TO THE LEFT..NOT CHECK MARK
+237C ; Common # Sm RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW
+237D..239A ; Common # So [30] SHOULDERED OPEN BOX..CLEAR SCREEN SYMBOL
+239B..23B3 ; Common # Sm [25] LEFT PARENTHESIS UPPER HOOK..SUMMATION BOTTOM
+23B4..23DB ; Common # So [40] TOP SQUARE BRACKET..FUSE
+23DC..23E1 ; Common # Sm [6] TOP PARENTHESIS..BOTTOM TORTOISE SHELL BRACKET
+23E2..23E7 ; Common # So [6] WHITE TRAPEZIUM..ELECTRICAL INTERSECTION
+2400..2426 ; Common # So [39] SYMBOL FOR NULL..SYMBOL FOR SUBSTITUTE FORM TWO
+2440..244A ; Common # So [11] OCR HOOK..OCR DOUBLE BACKSLASH
+2460..249B ; Common # No [60] CIRCLED DIGIT ONE..NUMBER TWENTY FULL STOP
+249C..24E9 ; Common # So [78] PARENTHESIZED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z
+24EA..24FF ; Common # No [22] CIRCLED DIGIT ZERO..NEGATIVE CIRCLED DIGIT ZERO
+2500..25B6 ; Common # So [183] BOX DRAWINGS LIGHT HORIZONTAL..BLACK RIGHT-POINTING TRIANGLE
+25B7 ; Common # Sm WHITE RIGHT-POINTING TRIANGLE
+25B8..25C0 ; Common # So [9] BLACK RIGHT-POINTING SMALL TRIANGLE..BLACK LEFT-POINTING TRIANGLE
+25C1 ; Common # Sm WHITE LEFT-POINTING TRIANGLE
+25C2..25F7 ; Common # So [54] BLACK LEFT-POINTING SMALL TRIANGLE..WHITE CIRCLE WITH UPPER RIGHT QUADRANT
+25F8..25FF ; Common # Sm [8] UPPER LEFT TRIANGLE..LOWER RIGHT TRIANGLE
+2600..266E ; Common # So [111] BLACK SUN WITH RAYS..MUSIC NATURAL SIGN
+266F ; Common # Sm MUSIC SHARP SIGN
+2670..269D ; Common # So [46] WEST SYRIAC CROSS..OUTLINED WHITE STAR
+26A0..26BC ; Common # So [29] WARNING SIGN..SESQUIQUADRATE
+26C0..26C3 ; Common # So [4] WHITE DRAUGHTS MAN..BLACK DRAUGHTS KING
+2701..2704 ; Common # So [4] UPPER BLADE SCISSORS..WHITE SCISSORS
+2706..2709 ; Common # So [4] TELEPHONE LOCATION SIGN..ENVELOPE
+270C..2727 ; Common # So [28] VICTORY HAND..WHITE FOUR POINTED STAR
+2729..274B ; Common # So [35] STRESS OUTLINED WHITE STAR..HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
+274D ; Common # So SHADOWED WHITE CIRCLE
+274F..2752 ; Common # So [4] LOWER RIGHT DROP-SHADOWED WHITE SQUARE..UPPER RIGHT SHADOWED WHITE SQUARE
+2756 ; Common # So BLACK DIAMOND MINUS WHITE X
+2758..275E ; Common # So [7] LIGHT VERTICAL BAR..HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT
+2761..2767 ; Common # So [7] CURVED STEM PARAGRAPH SIGN ORNAMENT..ROTATED FLORAL HEART BULLET
+2768 ; Common # Ps MEDIUM LEFT PARENTHESIS ORNAMENT
+2769 ; Common # Pe MEDIUM RIGHT PARENTHESIS ORNAMENT
+276A ; Common # Ps MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT
+276B ; Common # Pe MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT
+276C ; Common # Ps MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT
+276D ; Common # Pe MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT
+276E ; Common # Ps HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT
+276F ; Common # Pe HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT
+2770 ; Common # Ps HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT
+2771 ; Common # Pe HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT
+2772 ; Common # Ps LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT
+2773 ; Common # Pe LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT
+2774 ; Common # Ps MEDIUM LEFT CURLY BRACKET ORNAMENT
+2775 ; Common # Pe MEDIUM RIGHT CURLY BRACKET ORNAMENT
+2776..2793 ; Common # No [30] DINGBAT NEGATIVE CIRCLED DIGIT ONE..DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN
+2794 ; Common # So HEAVY WIDE-HEADED RIGHTWARDS ARROW
+2798..27AF ; Common # So [24] HEAVY SOUTH EAST ARROW..NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+27B1..27BE ; Common # So [14] NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW..OPEN-OUTLINED RIGHTWARDS ARROW
+27C0..27C4 ; Common # Sm [5] THREE DIMENSIONAL ANGLE..OPEN SUPERSET
+27C5 ; Common # Ps LEFT S-SHAPED BAG DELIMITER
+27C6 ; Common # Pe RIGHT S-SHAPED BAG DELIMITER
+27C7..27CA ; Common # Sm [4] OR WITH DOT INSIDE..VERTICAL BAR WITH HORIZONTAL STROKE
+27CC ; Common # Sm LONG DIVISION
+27D0..27E5 ; Common # Sm [22] WHITE DIAMOND WITH CENTRED DOT..WHITE SQUARE WITH RIGHTWARDS TICK
+27E6 ; Common # Ps MATHEMATICAL LEFT WHITE SQUARE BRACKET
+27E7 ; Common # Pe MATHEMATICAL RIGHT WHITE SQUARE BRACKET
+27E8 ; Common # Ps MATHEMATICAL LEFT ANGLE BRACKET
+27E9 ; Common # Pe MATHEMATICAL RIGHT ANGLE BRACKET
+27EA ; Common # Ps MATHEMATICAL LEFT DOUBLE ANGLE BRACKET
+27EB ; Common # Pe MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET
+27EC ; Common # Ps MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET
+27ED ; Common # Pe MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET
+27EE ; Common # Ps MATHEMATICAL LEFT FLATTENED PARENTHESIS
+27EF ; Common # Pe MATHEMATICAL RIGHT FLATTENED PARENTHESIS
+27F0..27FF ; Common # Sm [16] UPWARDS QUADRUPLE ARROW..LONG RIGHTWARDS SQUIGGLE ARROW
+2900..2982 ; Common # Sm [131] RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE..Z NOTATION TYPE COLON
+2983 ; Common # Ps LEFT WHITE CURLY BRACKET
+2984 ; Common # Pe RIGHT WHITE CURLY BRACKET
+2985 ; Common # Ps LEFT WHITE PARENTHESIS
+2986 ; Common # Pe RIGHT WHITE PARENTHESIS
+2987 ; Common # Ps Z NOTATION LEFT IMAGE BRACKET
+2988 ; Common # Pe Z NOTATION RIGHT IMAGE BRACKET
+2989 ; Common # Ps Z NOTATION LEFT BINDING BRACKET
+298A ; Common # Pe Z NOTATION RIGHT BINDING BRACKET
+298B ; Common # Ps LEFT SQUARE BRACKET WITH UNDERBAR
+298C ; Common # Pe RIGHT SQUARE BRACKET WITH UNDERBAR
+298D ; Common # Ps LEFT SQUARE BRACKET WITH TICK IN TOP CORNER
+298E ; Common # Pe RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
+298F ; Common # Ps LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
+2990 ; Common # Pe RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER
+2991 ; Common # Ps LEFT ANGLE BRACKET WITH DOT
+2992 ; Common # Pe RIGHT ANGLE BRACKET WITH DOT
+2993 ; Common # Ps LEFT ARC LESS-THAN BRACKET
+2994 ; Common # Pe RIGHT ARC GREATER-THAN BRACKET
+2995 ; Common # Ps DOUBLE LEFT ARC GREATER-THAN BRACKET
+2996 ; Common # Pe DOUBLE RIGHT ARC LESS-THAN BRACKET
+2997 ; Common # Ps LEFT BLACK TORTOISE SHELL BRACKET
+2998 ; Common # Pe RIGHT BLACK TORTOISE SHELL BRACKET
+2999..29D7 ; Common # Sm [63] DOTTED FENCE..BLACK HOURGLASS
+29D8 ; Common # Ps LEFT WIGGLY FENCE
+29D9 ; Common # Pe RIGHT WIGGLY FENCE
+29DA ; Common # Ps LEFT DOUBLE WIGGLY FENCE
+29DB ; Common # Pe RIGHT DOUBLE WIGGLY FENCE
+29DC..29FB ; Common # Sm [32] INCOMPLETE INFINITY..TRIPLE PLUS
+29FC ; Common # Ps LEFT-POINTING CURVED ANGLE BRACKET
+29FD ; Common # Pe RIGHT-POINTING CURVED ANGLE BRACKET
+29FE..2AFF ; Common # Sm [258] TINY..N-ARY WHITE VERTICAL BAR
+2B00..2B2F ; Common # So [48] NORTH EAST WHITE ARROW..WHITE VERTICAL ELLIPSE
+2B30..2B44 ; Common # Sm [21] LEFT ARROW WITH SMALL CIRCLE..RIGHTWARDS ARROW THROUGH SUPERSET
+2B45..2B46 ; Common # So [2] LEFTWARDS QUADRUPLE ARROW..RIGHTWARDS QUADRUPLE ARROW
+2B47..2B4C ; Common # Sm [6] REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW..RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR
+2B50..2B54 ; Common # So [5] WHITE MEDIUM STAR..WHITE RIGHT-POINTING PENTAGON
+2E00..2E01 ; Common # Po [2] RIGHT ANGLE SUBSTITUTION MARKER..RIGHT ANGLE DOTTED SUBSTITUTION MARKER
+2E02 ; Common # Pi LEFT SUBSTITUTION BRACKET
+2E03 ; Common # Pf RIGHT SUBSTITUTION BRACKET
+2E04 ; Common # Pi LEFT DOTTED SUBSTITUTION BRACKET
+2E05 ; Common # Pf RIGHT DOTTED SUBSTITUTION BRACKET
+2E06..2E08 ; Common # Po [3] RAISED INTERPOLATION MARKER..DOTTED TRANSPOSITION MARKER
+2E09 ; Common # Pi LEFT TRANSPOSITION BRACKET
+2E0A ; Common # Pf RIGHT TRANSPOSITION BRACKET
+2E0B ; Common # Po RAISED SQUARE
+2E0C ; Common # Pi LEFT RAISED OMISSION BRACKET
+2E0D ; Common # Pf RIGHT RAISED OMISSION BRACKET
+2E0E..2E16 ; Common # Po [9] EDITORIAL CORONIS..DOTTED RIGHT-POINTING ANGLE
+2E17 ; Common # Pd DOUBLE OBLIQUE HYPHEN
+2E18..2E19 ; Common # Po [2] INVERTED INTERROBANG..PALM BRANCH
+2E1A ; Common # Pd HYPHEN WITH DIAERESIS
+2E1B ; Common # Po TILDE WITH RING ABOVE
+2E1C ; Common # Pi LEFT LOW PARAPHRASE BRACKET
+2E1D ; Common # Pf RIGHT LOW PARAPHRASE BRACKET
+2E1E..2E1F ; Common # Po [2] TILDE WITH DOT ABOVE..TILDE WITH DOT BELOW
+2E20 ; Common # Pi LEFT VERTICAL BAR WITH QUILL
+2E21 ; Common # Pf RIGHT VERTICAL BAR WITH QUILL
+2E22 ; Common # Ps TOP LEFT HALF BRACKET
+2E23 ; Common # Pe TOP RIGHT HALF BRACKET
+2E24 ; Common # Ps BOTTOM LEFT HALF BRACKET
+2E25 ; Common # Pe BOTTOM RIGHT HALF BRACKET
+2E26 ; Common # Ps LEFT SIDEWAYS U BRACKET
+2E27 ; Common # Pe RIGHT SIDEWAYS U BRACKET
+2E28 ; Common # Ps LEFT DOUBLE PARENTHESIS
+2E29 ; Common # Pe RIGHT DOUBLE PARENTHESIS
+2E2A..2E2E ; Common # Po [5] TWO DOTS OVER ONE DOT PUNCTUATION..REVERSED QUESTION MARK
+2E2F ; Common # Lm VERTICAL TILDE
+2E30 ; Common # Po RING POINT
+2FF0..2FFB ; Common # So [12] IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT..IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID
+3000 ; Common # Zs IDEOGRAPHIC SPACE
+3001..3003 ; Common # Po [3] IDEOGRAPHIC COMMA..DITTO MARK
+3004 ; Common # So JAPANESE INDUSTRIAL STANDARD SYMBOL
+3006 ; Common # Lo IDEOGRAPHIC CLOSING MARK
+3008 ; Common # Ps LEFT ANGLE BRACKET
+3009 ; Common # Pe RIGHT ANGLE BRACKET
+300A ; Common # Ps LEFT DOUBLE ANGLE BRACKET
+300B ; Common # Pe RIGHT DOUBLE ANGLE BRACKET
+300C ; Common # Ps LEFT CORNER BRACKET
+300D ; Common # Pe RIGHT CORNER BRACKET
+300E ; Common # Ps LEFT WHITE CORNER BRACKET
+300F ; Common # Pe RIGHT WHITE CORNER BRACKET
+3010 ; Common # Ps LEFT BLACK LENTICULAR BRACKET
+3011 ; Common # Pe RIGHT BLACK LENTICULAR BRACKET
+3012..3013 ; Common # So [2] POSTAL MARK..GETA MARK
+3014 ; Common # Ps LEFT TORTOISE SHELL BRACKET
+3015 ; Common # Pe RIGHT TORTOISE SHELL BRACKET
+3016 ; Common # Ps LEFT WHITE LENTICULAR BRACKET
+3017 ; Common # Pe RIGHT WHITE LENTICULAR BRACKET
+3018 ; Common # Ps LEFT WHITE TORTOISE SHELL BRACKET
+3019 ; Common # Pe RIGHT WHITE TORTOISE SHELL BRACKET
+301A ; Common # Ps LEFT WHITE SQUARE BRACKET
+301B ; Common # Pe RIGHT WHITE SQUARE BRACKET
+301C ; Common # Pd WAVE DASH
+301D ; Common # Ps REVERSED DOUBLE PRIME QUOTATION MARK
+301E..301F ; Common # Pe [2] DOUBLE PRIME QUOTATION MARK..LOW DOUBLE PRIME QUOTATION MARK
+3020 ; Common # So POSTAL MARK FACE
+3030 ; Common # Pd WAVY DASH
+3031..3035 ; Common # Lm [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF
+3036..3037 ; Common # So [2] CIRCLED POSTAL MARK..IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL
+303C ; Common # Lo MASU MARK
+303D ; Common # Po PART ALTERNATION MARK
+303E..303F ; Common # So [2] IDEOGRAPHIC VARIATION INDICATOR..IDEOGRAPHIC HALF FILL SPACE
+309B..309C ; Common # Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+30A0 ; Common # Pd KATAKANA-HIRAGANA DOUBLE HYPHEN
+30FB ; Common # Po KATAKANA MIDDLE DOT
+30FC ; Common # Lm KATAKANA-HIRAGANA PROLONGED SOUND MARK
+3190..3191 ; Common # So [2] IDEOGRAPHIC ANNOTATION LINKING MARK..IDEOGRAPHIC ANNOTATION REVERSE MARK
+3192..3195 ; Common # No [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK
+3196..319F ; Common # So [10] IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK
+31C0..31E3 ; Common # So [36] CJK STROKE T..CJK STROKE Q
+3220..3229 ; Common # No [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN
+322A..3243 ; Common # So [26] PARENTHESIZED IDEOGRAPH MOON..PARENTHESIZED IDEOGRAPH REACH
+3250 ; Common # So PARTNERSHIP SIGN
+3251..325F ; Common # No [15] CIRCLED NUMBER TWENTY ONE..CIRCLED NUMBER THIRTY FIVE
+327F ; Common # So KOREAN STANDARD SYMBOL
+3280..3289 ; Common # No [10] CIRCLED IDEOGRAPH ONE..CIRCLED IDEOGRAPH TEN
+328A..32B0 ; Common # So [39] CIRCLED IDEOGRAPH MOON..CIRCLED IDEOGRAPH NIGHT
+32B1..32BF ; Common # No [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY
+32C0..32CF ; Common # So [16] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..LIMITED LIABILITY SIGN
+3358..33FF ; Common # So [168] IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO..SQUARE GAL
+4DC0..4DFF ; Common # So [64] HEXAGRAM FOR THE CREATIVE HEAVEN..HEXAGRAM FOR BEFORE COMPLETION
+A700..A716 ; Common # Sk [23] MODIFIER LETTER CHINESE TONE YIN PING..MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR
+A717..A71F ; Common # Lm [9] MODIFIER LETTER DOT VERTICAL BAR..MODIFIER LETTER LOW INVERTED EXCLAMATION MARK
+A720..A721 ; Common # Sk [2] MODIFIER LETTER STRESS AND HIGH TONE..MODIFIER LETTER STRESS AND LOW TONE
+A788 ; Common # Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT
+A789..A78A ; Common # Sk [2] MODIFIER LETTER COLON..MODIFIER LETTER SHORT EQUALS SIGN
+FD3E ; Common # Ps ORNATE LEFT PARENTHESIS
+FD3F ; Common # Pe ORNATE RIGHT PARENTHESIS
+FDFD ; Common # So ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM
+FE10..FE16 ; Common # Po [7] PRESENTATION FORM FOR VERTICAL COMMA..PRESENTATION FORM FOR VERTICAL QUESTION MARK
+FE17 ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET
+FE18 ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET
+FE19 ; Common # Po PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS
+FE30 ; Common # Po PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
+FE31..FE32 ; Common # Pd [2] PRESENTATION FORM FOR VERTICAL EM DASH..PRESENTATION FORM FOR VERTICAL EN DASH
+FE33..FE34 ; Common # Pc [2] PRESENTATION FORM FOR VERTICAL LOW LINE..PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
+FE35 ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS
+FE36 ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS
+FE37 ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET
+FE38 ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET
+FE39 ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET
+FE3A ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET
+FE3B ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET
+FE3C ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET
+FE3D ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET
+FE3E ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET
+FE3F ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET
+FE40 ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET
+FE41 ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET
+FE42 ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET
+FE43 ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET
+FE44 ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET
+FE45..FE46 ; Common # Po [2] SESAME DOT..WHITE SESAME DOT
+FE47 ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET
+FE48 ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET
+FE49..FE4C ; Common # Po [4] DASHED OVERLINE..DOUBLE WAVY OVERLINE
+FE4D..FE4F ; Common # Pc [3] DASHED LOW LINE..WAVY LOW LINE
+FE50..FE52 ; Common # Po [3] SMALL COMMA..SMALL FULL STOP
+FE54..FE57 ; Common # Po [4] SMALL SEMICOLON..SMALL EXCLAMATION MARK
+FE58 ; Common # Pd SMALL EM DASH
+FE59 ; Common # Ps SMALL LEFT PARENTHESIS
+FE5A ; Common # Pe SMALL RIGHT PARENTHESIS
+FE5B ; Common # Ps SMALL LEFT CURLY BRACKET
+FE5C ; Common # Pe SMALL RIGHT CURLY BRACKET
+FE5D ; Common # Ps SMALL LEFT TORTOISE SHELL BRACKET
+FE5E ; Common # Pe SMALL RIGHT TORTOISE SHELL BRACKET
+FE5F..FE61 ; Common # Po [3] SMALL NUMBER SIGN..SMALL ASTERISK
+FE62 ; Common # Sm SMALL PLUS SIGN
+FE63 ; Common # Pd SMALL HYPHEN-MINUS
+FE64..FE66 ; Common # Sm [3] SMALL LESS-THAN SIGN..SMALL EQUALS SIGN
+FE68 ; Common # Po SMALL REVERSE SOLIDUS
+FE69 ; Common # Sc SMALL DOLLAR SIGN
+FE6A..FE6B ; Common # Po [2] SMALL PERCENT SIGN..SMALL COMMERCIAL AT
+FEFF ; Common # Cf ZERO WIDTH NO-BREAK SPACE
+FF01..FF03 ; Common # Po [3] FULLWIDTH EXCLAMATION MARK..FULLWIDTH NUMBER SIGN
+FF04 ; Common # Sc FULLWIDTH DOLLAR SIGN
+FF05..FF07 ; Common # Po [3] FULLWIDTH PERCENT SIGN..FULLWIDTH APOSTROPHE
+FF08 ; Common # Ps FULLWIDTH LEFT PARENTHESIS
+FF09 ; Common # Pe FULLWIDTH RIGHT PARENTHESIS
+FF0A ; Common # Po FULLWIDTH ASTERISK
+FF0B ; Common # Sm FULLWIDTH PLUS SIGN
+FF0C ; Common # Po FULLWIDTH COMMA
+FF0D ; Common # Pd FULLWIDTH HYPHEN-MINUS
+FF0E..FF0F ; Common # Po [2] FULLWIDTH FULL STOP..FULLWIDTH SOLIDUS
+FF10..FF19 ; Common # Nd [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE
+FF1A..FF1B ; Common # Po [2] FULLWIDTH COLON..FULLWIDTH SEMICOLON
+FF1C..FF1E ; Common # Sm [3] FULLWIDTH LESS-THAN SIGN..FULLWIDTH GREATER-THAN SIGN
+FF1F..FF20 ; Common # Po [2] FULLWIDTH QUESTION MARK..FULLWIDTH COMMERCIAL AT
+FF3B ; Common # Ps FULLWIDTH LEFT SQUARE BRACKET
+FF3C ; Common # Po FULLWIDTH REVERSE SOLIDUS
+FF3D ; Common # Pe FULLWIDTH RIGHT SQUARE BRACKET
+FF3E ; Common # Sk FULLWIDTH CIRCUMFLEX ACCENT
+FF3F ; Common # Pc FULLWIDTH LOW LINE
+FF40 ; Common # Sk FULLWIDTH GRAVE ACCENT
+FF5B ; Common # Ps FULLWIDTH LEFT CURLY BRACKET
+FF5C ; Common # Sm FULLWIDTH VERTICAL LINE
+FF5D ; Common # Pe FULLWIDTH RIGHT CURLY BRACKET
+FF5E ; Common # Sm FULLWIDTH TILDE
+FF5F ; Common # Ps FULLWIDTH LEFT WHITE PARENTHESIS
+FF60 ; Common # Pe FULLWIDTH RIGHT WHITE PARENTHESIS
+FF61 ; Common # Po HALFWIDTH IDEOGRAPHIC FULL STOP
+FF62 ; Common # Ps HALFWIDTH LEFT CORNER BRACKET
+FF63 ; Common # Pe HALFWIDTH RIGHT CORNER BRACKET
+FF64..FF65 ; Common # Po [2] HALFWIDTH IDEOGRAPHIC COMMA..HALFWIDTH KATAKANA MIDDLE DOT
+FF70 ; Common # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+FF9E..FF9F ; Common # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+FFE0..FFE1 ; Common # Sc [2] FULLWIDTH CENT SIGN..FULLWIDTH POUND SIGN
+FFE2 ; Common # Sm FULLWIDTH NOT SIGN
+FFE3 ; Common # Sk FULLWIDTH MACRON
+FFE4 ; Common # So FULLWIDTH BROKEN BAR
+FFE5..FFE6 ; Common # Sc [2] FULLWIDTH YEN SIGN..FULLWIDTH WON SIGN
+FFE8 ; Common # So HALFWIDTH FORMS LIGHT VERTICAL
+FFE9..FFEC ; Common # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS ARROW
+FFED..FFEE ; Common # So [2] HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CIRCLE
+FFF9..FFFB ; Common # Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR
+FFFC..FFFD ; Common # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARACTER
+10100..10101 ; Common # Po [2] AEGEAN WORD SEPARATOR LINE..AEGEAN WORD SEPARATOR DOT
+10102 ; Common # So AEGEAN CHECK MARK
+10107..10133 ; Common # No [45] AEGEAN NUMBER ONE..AEGEAN NUMBER NINETY THOUSAND
+10137..1013F ; Common # So [9] AEGEAN WEIGHT BASE UNIT..AEGEAN MEASURE THIRD SUBUNIT
+10190..1019B ; Common # So [12] ROMAN SEXTANS SIGN..ROMAN CENTURIAL SIGN
+101D0..101FC ; Common # So [45] PHAISTOS DISC SIGN PEDESTRIAN..PHAISTOS DISC SIGN WAVY BAND
+1D000..1D0F5 ; Common # So [246] BYZANTINE MUSICAL SYMBOL PSILI..BYZANTINE MUSICAL SYMBOL GORGON NEO KATO
+1D100..1D126 ; Common # So [39] MUSICAL SYMBOL SINGLE BARLINE..MUSICAL SYMBOL DRUM CLEF-2
+1D129..1D164 ; Common # So [60] MUSICAL SYMBOL MULTIPLE MEASURE REST..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D165..1D166 ; Common # Mc [2] MUSICAL SYMBOL COMBINING STEM..MUSICAL SYMBOL COMBINING SPRECHGESANG STEM
+1D16A..1D16C ; Common # So [3] MUSICAL SYMBOL FINGERED TREMOLO-1..MUSICAL SYMBOL FINGERED TREMOLO-3
+1D16D..1D172 ; Common # Mc [6] MUSICAL SYMBOL COMBINING AUGMENTATION DOT..MUSICAL SYMBOL COMBINING FLAG-5
+1D173..1D17A ; Common # Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE
+1D183..1D184 ; Common # So [2] MUSICAL SYMBOL ARPEGGIATO UP..MUSICAL SYMBOL ARPEGGIATO DOWN
+1D18C..1D1A9 ; Common # So [30] MUSICAL SYMBOL RINFORZANDO..MUSICAL SYMBOL DEGREE SLASH
+1D1AE..1D1DD ; Common # So [48] MUSICAL SYMBOL PEDAL MARK..MUSICAL SYMBOL PES SUBPUNCTIS
+1D300..1D356 ; Common # So [87] MONOGRAM FOR EARTH..TETRAGRAM FOR FOSTERING
+1D360..1D371 ; Common # No [18] COUNTING ROD UNIT DIGIT ONE..COUNTING ROD TENS DIGIT NINE
+1D400..1D454 ; Common # L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G
+1D456..1D49C ; Common # L& [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A
+1D49E..1D49F ; Common # L& [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D
+1D4A2 ; Common # L& MATHEMATICAL SCRIPT CAPITAL G
+1D4A5..1D4A6 ; Common # L& [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K
+1D4A9..1D4AC ; Common # L& [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q
+1D4AE..1D4B9 ; Common # L& [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D
+1D4BB ; Common # L& MATHEMATICAL SCRIPT SMALL F
+1D4BD..1D4C3 ; Common # L& [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N
+1D4C5..1D505 ; Common # L& [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B
+1D507..1D50A ; Common # L& [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G
+1D50D..1D514 ; Common # L& [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q
+1D516..1D51C ; Common # L& [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y
+1D51E..1D539 ; Common # L& [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B
+1D53B..1D53E ; Common # L& [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G
+1D540..1D544 ; Common # L& [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M
+1D546 ; Common # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL O
+1D54A..1D550 ; Common # L& [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
+1D552..1D6A5 ; Common # L& [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J
+1D6A8..1D6C0 ; Common # L& [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA
+1D6C1 ; Common # Sm MATHEMATICAL BOLD NABLA
+1D6C2..1D6DA ; Common # L& [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA
+1D6DB ; Common # Sm MATHEMATICAL BOLD PARTIAL DIFFERENTIAL
+1D6DC..1D6FA ; Common # L& [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA
+1D6FB ; Common # Sm MATHEMATICAL ITALIC NABLA
+1D6FC..1D714 ; Common # L& [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA
+1D715 ; Common # Sm MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL
+1D716..1D734 ; Common # L& [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
+1D735 ; Common # Sm MATHEMATICAL BOLD ITALIC NABLA
+1D736..1D74E ; Common # L& [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA
+1D74F ; Common # Sm MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL
+1D750..1D76E ; Common # L& [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
+1D76F ; Common # Sm MATHEMATICAL SANS-SERIF BOLD NABLA
+1D770..1D788 ; Common # L& [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
+1D789 ; Common # Sm MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL
+1D78A..1D7A8 ; Common # L& [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
+1D7A9 ; Common # Sm MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA
+1D7AA..1D7C2 ; Common # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
+1D7C3 ; Common # Sm MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
+1D7C4..1D7CB ; Common # L& [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA
+1D7CE..1D7FF ; Common # Nd [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE
+1F000..1F02B ; Common # So [44] MAHJONG TILE EAST WIND..MAHJONG TILE BACK
+1F030..1F093 ; Common # So [100] DOMINO TILE HORIZONTAL BACK..DOMINO TILE VERTICAL-06-06
+E0001 ; Common # Cf LANGUAGE TAG
+E0020..E007F ; Common # Cf [96] TAG SPACE..CANCEL TAG
+
+# Total code points: 5178
+
+# ================================================
+
+0041..005A ; Latin # L& [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z
+0061..007A ; Latin # L& [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z
+00AA ; Latin # L& FEMININE ORDINAL INDICATOR
+00BA ; Latin # L& MASCULINE ORDINAL INDICATOR
+00C0..00D6 ; Latin # L& [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS
+00D8..00F6 ; Latin # L& [31] LATIN CAPITAL LETTER O WITH STROKE..LATIN SMALL LETTER O WITH DIAERESIS
+00F8..01BA ; Latin # L& [195] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER EZH WITH TAIL
+01BB ; Latin # Lo LATIN LETTER TWO WITH STROKE
+01BC..01BF ; Latin # L& [4] LATIN CAPITAL LETTER TONE FIVE..LATIN LETTER WYNN
+01C0..01C3 ; Latin # Lo [4] LATIN LETTER DENTAL CLICK..LATIN LETTER RETROFLEX CLICK
+01C4..0293 ; Latin # L& [208] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER EZH WITH CURL
+0294 ; Latin # Lo LATIN LETTER GLOTTAL STOP
+0295..02AF ; Latin # L& [27] LATIN LETTER PHARYNGEAL VOICED FRICATIVE..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL
+02B0..02B8 ; Latin # Lm [9] MODIFIER LETTER SMALL H..MODIFIER LETTER SMALL Y
+02E0..02E4 ; Latin # Lm [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+1D00..1D25 ; Latin # L& [38] LATIN LETTER SMALL CAPITAL A..LATIN LETTER AIN
+1D2C..1D5C ; Latin # Lm [49] MODIFIER LETTER CAPITAL A..MODIFIER LETTER SMALL AIN
+1D62..1D65 ; Latin # L& [4] LATIN SUBSCRIPT SMALL LETTER I..LATIN SUBSCRIPT SMALL LETTER V
+1D6B..1D77 ; Latin # L& [13] LATIN SMALL LETTER UE..LATIN SMALL LETTER TURNED G
+1D79..1D9A ; Latin # L& [34] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK
+1D9B..1DBE ; Latin # Lm [36] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL EZH
+1E00..1EFF ; Latin # L& [256] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER Y WITH LOOP
+2071 ; Latin # L& SUPERSCRIPT LATIN SMALL LETTER I
+207F ; Latin # L& SUPERSCRIPT LATIN SMALL LETTER N
+2090..2094 ; Latin # Lm [5] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER SCHWA
+212A..212B ; Latin # L& [2] KELVIN SIGN..ANGSTROM SIGN
+2132 ; Latin # L& TURNED CAPITAL F
+214E ; Latin # L& TURNED SMALL F
+2160..2182 ; Latin # Nl [35] ROMAN NUMERAL ONE..ROMAN NUMERAL TEN THOUSAND
+2183..2184 ; Latin # L& [2] ROMAN NUMERAL REVERSED ONE HUNDRED..LATIN SMALL LETTER REVERSED C
+2185..2188 ; Latin # Nl [4] ROMAN NUMERAL SIX LATE FORM..ROMAN NUMERAL ONE HUNDRED THOUSAND
+2C60..2C6F ; Latin # L& [16] LATIN CAPITAL LETTER L WITH DOUBLE BAR..LATIN CAPITAL LETTER TURNED A
+2C71..2C7C ; Latin # L& [12] LATIN SMALL LETTER V WITH RIGHT HOOK..LATIN SUBSCRIPT SMALL LETTER J
+2C7D ; Latin # Lm MODIFIER LETTER CAPITAL V
+A722..A76F ; Latin # L& [78] LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF..LATIN SMALL LETTER CON
+A770 ; Latin # Lm MODIFIER LETTER US
+A771..A787 ; Latin # L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR T
+A78B..A78C ; Latin # L& [2] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER SALTILLO
+A7FB..A7FF ; Latin # Lo [5] LATIN EPIGRAPHIC LETTER REVERSED F..LATIN EPIGRAPHIC LETTER ARCHAIC M
+FB00..FB06 ; Latin # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
+FF21..FF3A ; Latin # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
+FF41..FF5A ; Latin # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
+
+# Total code points: 1241
+
+# ================================================
+
+0370..0373 ; Greek # L& [4] GREEK CAPITAL LETTER HETA..GREEK SMALL LETTER ARCHAIC SAMPI
+0375 ; Greek # Sk GREEK LOWER NUMERAL SIGN
+0376..0377 ; Greek # L& [2] GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA..GREEK SMALL LETTER PAMPHYLIAN DIGAMMA
+037A ; Greek # Lm GREEK YPOGEGRAMMENI
+037B..037D ; Greek # L& [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL
+0384 ; Greek # Sk GREEK TONOS
+0386 ; Greek # L& GREEK CAPITAL LETTER ALPHA WITH TONOS
+0388..038A ; Greek # L& [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS
+038C ; Greek # L& GREEK CAPITAL LETTER OMICRON WITH TONOS
+038E..03A1 ; Greek # L& [20] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER RHO
+03A3..03E1 ; Greek # L& [63] GREEK CAPITAL LETTER SIGMA..GREEK SMALL LETTER SAMPI
+03F0..03F5 ; Greek # L& [6] GREEK KAPPA SYMBOL..GREEK LUNATE EPSILON SYMBOL
+03F6 ; Greek # Sm GREEK REVERSED LUNATE EPSILON SYMBOL
+03F7..03FF ; Greek # L& [9] GREEK CAPITAL LETTER SHO..GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL
+1D26..1D2A ; Greek # L& [5] GREEK LETTER SMALL CAPITAL GAMMA..GREEK LETTER SMALL CAPITAL PSI
+1D5D..1D61 ; Greek # Lm [5] MODIFIER LETTER SMALL BETA..MODIFIER LETTER SMALL CHI
+1D66..1D6A ; Greek # L& [5] GREEK SUBSCRIPT SMALL LETTER BETA..GREEK SUBSCRIPT SMALL LETTER CHI
+1DBF ; Greek # Lm MODIFIER LETTER SMALL THETA
+1F00..1F15 ; Greek # L& [22] GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+1F18..1F1D ; Greek # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+1F20..1F45 ; Greek # L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+1F48..1F4D ; Greek # L& [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+1F50..1F57 ; Greek # L& [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1F59 ; Greek # L& GREEK CAPITAL LETTER UPSILON WITH DASIA
+1F5B ; Greek # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+1F5D ; Greek # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+1F5F..1F7D ; Greek # L& [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA
+1F80..1FB4 ; Greek # L& [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+1FB6..1FBC ; Greek # L& [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+1FBD ; Greek # Sk GREEK KORONIS
+1FBE ; Greek # L& GREEK PROSGEGRAMMENI
+1FBF..1FC1 ; Greek # Sk [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI
+1FC2..1FC4 ; Greek # L& [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+1FC6..1FCC ; Greek # L& [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+1FCD..1FCF ; Greek # Sk [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI
+1FD0..1FD3 ; Greek # L& [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FD6..1FDB ; Greek # L& [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA
+1FDD..1FDF ; Greek # Sk [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI
+1FE0..1FEC ; Greek # L& [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA
+1FED..1FEF ; Greek # Sk [3] GREEK DIALYTIKA AND VARIA..GREEK VARIA
+1FF2..1FF4 ; Greek # L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+1FF6..1FFC ; Greek # L& [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+1FFD..1FFE ; Greek # Sk [2] GREEK OXIA..GREEK DASIA
+2126 ; Greek # L& OHM SIGN
+10140..10174 ; Greek # Nl [53] GREEK ACROPHONIC ATTIC ONE QUARTER..GREEK ACROPHONIC STRATIAN FIFTY MNAS
+10175..10178 ; Greek # No [4] GREEK ONE HALF SIGN..GREEK THREE QUARTERS SIGN
+10179..10189 ; Greek # So [17] GREEK YEAR SIGN..GREEK TRYBLION BASE SIGN
+1018A ; Greek # No GREEK ZERO SIGN
+1D200..1D241 ; Greek # So [66] GREEK VOCAL NOTATION SYMBOL-1..GREEK INSTRUMENTAL NOTATION SYMBOL-54
+1D242..1D244 ; Greek # Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME
+1D245 ; Greek # So GREEK MUSICAL LEIMMA
+
+# Total code points: 511
+
+# ================================================
+
+0400..0481 ; Cyrillic # L& [130] CYRILLIC CAPITAL LETTER IE WITH GRAVE..CYRILLIC SMALL LETTER KOPPA
+0482 ; Cyrillic # So CYRILLIC THOUSANDS SIGN
+0483..0487 ; Cyrillic # Mn [5] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC POKRYTIE
+0488..0489 ; Cyrillic # Me [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN
+048A..0523 ; Cyrillic # L& [154] CYRILLIC CAPITAL LETTER SHORT I WITH TAIL..CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK
+1D2B ; Cyrillic # L& CYRILLIC LETTER SMALL CAPITAL EL
+1D78 ; Cyrillic # Lm MODIFIER LETTER CYRILLIC EN
+2DE0..2DFF ; Cyrillic # Mn [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS
+A640..A65F ; Cyrillic # L& [32] CYRILLIC CAPITAL LETTER ZEMLYA..CYRILLIC SMALL LETTER YN
+A662..A66D ; Cyrillic # L& [12] CYRILLIC CAPITAL LETTER SOFT DE..CYRILLIC SMALL LETTER DOUBLE MONOCULAR O
+A66E ; Cyrillic # Lo CYRILLIC LETTER MULTIOCULAR O
+A66F ; Cyrillic # Mn COMBINING CYRILLIC VZMET
+A670..A672 ; Cyrillic # Me [3] COMBINING CYRILLIC TEN MILLIONS SIGN..COMBINING CYRILLIC THOUSAND MILLIONS SIGN
+A673 ; Cyrillic # Po SLAVONIC ASTERISK
+A67C..A67D ; Cyrillic # Mn [2] COMBINING CYRILLIC KAVYKA..COMBINING CYRILLIC PAYEROK
+A67E ; Cyrillic # Po CYRILLIC KAVYKA
+A67F ; Cyrillic # Lm CYRILLIC PAYEROK
+A680..A697 ; Cyrillic # L& [24] CYRILLIC CAPITAL LETTER DWE..CYRILLIC SMALL LETTER SHWE
+
+# Total code points: 404
+
+# ================================================
+
+0531..0556 ; Armenian # L& [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH
+0559 ; Armenian # Lm ARMENIAN MODIFIER LETTER LEFT HALF RING
+055A..055F ; Armenian # Po [6] ARMENIAN APOSTROPHE..ARMENIAN ABBREVIATION MARK
+0561..0587 ; Armenian # L& [39] ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LIGATURE ECH YIWN
+058A ; Armenian # Pd ARMENIAN HYPHEN
+FB13..FB17 ; Armenian # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
+
+# Total code points: 90
+
+# ================================================
+
+0591..05BD ; Hebrew # Mn [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG
+05BE ; Hebrew # Pd HEBREW PUNCTUATION MAQAF
+05BF ; Hebrew # Mn HEBREW POINT RAFE
+05C0 ; Hebrew # Po HEBREW PUNCTUATION PASEQ
+05C1..05C2 ; Hebrew # Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT
+05C3 ; Hebrew # Po HEBREW PUNCTUATION SOF PASUQ
+05C4..05C5 ; Hebrew # Mn [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT
+05C6 ; Hebrew # Po HEBREW PUNCTUATION NUN HAFUKHA
+05C7 ; Hebrew # Mn HEBREW POINT QAMATS QATAN
+05D0..05EA ; Hebrew # Lo [27] HEBREW LETTER ALEF..HEBREW LETTER TAV
+05F0..05F2 ; Hebrew # Lo [3] HEBREW LIGATURE YIDDISH DOUBLE VAV..HEBREW LIGATURE YIDDISH DOUBLE YOD
+05F3..05F4 ; Hebrew # Po [2] HEBREW PUNCTUATION GERESH..HEBREW PUNCTUATION GERSHAYIM
+FB1D ; Hebrew # Lo HEBREW LETTER YOD WITH HIRIQ
+FB1E ; Hebrew # Mn HEBREW POINT JUDEO-SPANISH VARIKA
+FB1F..FB28 ; Hebrew # Lo [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV
+FB29 ; Hebrew # Sm HEBREW LETTER ALTERNATIVE PLUS SIGN
+FB2A..FB36 ; Hebrew # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+FB38..FB3C ; Hebrew # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+FB3E ; Hebrew # Lo HEBREW LETTER MEM WITH DAGESH
+FB40..FB41 ; Hebrew # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+FB43..FB44 ; Hebrew # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+FB46..FB4F ; Hebrew # Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATURE ALEF LAMED
+
+# Total code points: 133
+
+# ================================================
+
+0606..0608 ; Arabic # Sm [3] ARABIC-INDIC CUBE ROOT..ARABIC RAY
+0609..060A ; Arabic # Po [2] ARABIC-INDIC PER MILLE SIGN..ARABIC-INDIC PER TEN THOUSAND SIGN
+060B ; Arabic # Sc AFGHANI SIGN
+060D ; Arabic # Po ARABIC DATE SEPARATOR
+060E..060F ; Arabic # So [2] ARABIC POETIC VERSE SIGN..ARABIC SIGN MISRA
+0610..061A ; Arabic # Mn [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA
+061E ; Arabic # Po ARABIC TRIPLE DOT PUNCTUATION MARK
+0621..063F ; Arabic # Lo [31] ARABIC LETTER HAMZA..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE
+0641..064A ; Arabic # Lo [10] ARABIC LETTER FEH..ARABIC LETTER YEH
+0656..065E ; Arabic # Mn [9] ARABIC SUBSCRIPT ALEF..ARABIC FATHA WITH TWO DOTS
+066A..066D ; Arabic # Po [4] ARABIC PERCENT SIGN..ARABIC FIVE POINTED STAR
+066E..066F ; Arabic # Lo [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF
+0671..06D3 ; Arabic # Lo [99] ARABIC LETTER ALEF WASLA..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+06D4 ; Arabic # Po ARABIC FULL STOP
+06D5 ; Arabic # Lo ARABIC LETTER AE
+06D6..06DC ; Arabic # Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN
+06DE ; Arabic # Me ARABIC START OF RUB EL HIZB
+06DF..06E4 ; Arabic # Mn [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA
+06E5..06E6 ; Arabic # Lm [2] ARABIC SMALL WAW..ARABIC SMALL YEH
+06E7..06E8 ; Arabic # Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON
+06E9 ; Arabic # So ARABIC PLACE OF SAJDAH
+06EA..06ED ; Arabic # Mn [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM
+06EE..06EF ; Arabic # Lo [2] ARABIC LETTER DAL WITH INVERTED V..ARABIC LETTER REH WITH INVERTED V
+06F0..06F9 ; Arabic # Nd [10] EXTENDED ARABIC-INDIC DIGIT ZERO..EXTENDED ARABIC-INDIC DIGIT NINE
+06FA..06FC ; Arabic # Lo [3] ARABIC LETTER SHEEN WITH DOT BELOW..ARABIC LETTER GHAIN WITH DOT BELOW
+06FD..06FE ; Arabic # So [2] ARABIC SIGN SINDHI AMPERSAND..ARABIC SIGN SINDHI POSTPOSITION MEN
+06FF ; Arabic # Lo ARABIC LETTER HEH WITH INVERTED V
+0750..077F ; Arabic # Lo [48] ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW..ARABIC LETTER KAF WITH TWO DOTS ABOVE
+FB50..FBB1 ; Arabic # Lo [98] ARABIC LETTER ALEF WASLA ISOLATED FORM..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
+FBD3..FD3D ; Arabic # Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
+FD50..FD8F ; Arabic # Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
+FD92..FDC7 ; Arabic # Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+FDF0..FDFB ; Arabic # Lo [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU
+FDFC ; Arabic # Sc RIAL SIGN
+FE70..FE74 ; Arabic # Lo [5] ARABIC FATHATAN ISOLATED FORM..ARABIC KASRATAN ISOLATED FORM
+FE76..FEFC ; Arabic # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+
+# Total code points: 999
+
+# ================================================
+
+0700..070D ; Syriac # Po [14] SYRIAC END OF PARAGRAPH..SYRIAC HARKLEAN ASTERISCUS
+070F ; Syriac # Cf SYRIAC ABBREVIATION MARK
+0710 ; Syriac # Lo SYRIAC LETTER ALAPH
+0711 ; Syriac # Mn SYRIAC LETTER SUPERSCRIPT ALAPH
+0712..072F ; Syriac # Lo [30] SYRIAC LETTER BETH..SYRIAC LETTER PERSIAN DHALATH
+0730..074A ; Syriac # Mn [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH
+074D..074F ; Syriac # Lo [3] SYRIAC LETTER SOGDIAN ZHAIN..SYRIAC LETTER SOGDIAN FE
+
+# Total code points: 77
+
+# ================================================
+
+0780..07A5 ; Thaana # Lo [38] THAANA LETTER HAA..THAANA LETTER WAAVU
+07A6..07B0 ; Thaana # Mn [11] THAANA ABAFILI..THAANA SUKUN
+07B1 ; Thaana # Lo THAANA LETTER NAA
+
+# Total code points: 50
+
+# ================================================
+
+0901..0902 ; Devanagari # Mn [2] DEVANAGARI SIGN CANDRABINDU..DEVANAGARI SIGN ANUSVARA
+0903 ; Devanagari # Mc DEVANAGARI SIGN VISARGA
+0904..0939 ; Devanagari # Lo [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA
+093C ; Devanagari # Mn DEVANAGARI SIGN NUKTA
+093D ; Devanagari # Lo DEVANAGARI SIGN AVAGRAHA
+093E..0940 ; Devanagari # Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II
+0941..0948 ; Devanagari # Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI
+0949..094C ; Devanagari # Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU
+094D ; Devanagari # Mn DEVANAGARI SIGN VIRAMA
+0950 ; Devanagari # Lo DEVANAGARI OM
+0953..0954 ; Devanagari # Mn [2] DEVANAGARI GRAVE ACCENT..DEVANAGARI ACUTE ACCENT
+0958..0961 ; Devanagari # Lo [10] DEVANAGARI LETTER QA..DEVANAGARI LETTER VOCALIC LL
+0962..0963 ; Devanagari # Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL
+0966..096F ; Devanagari # Nd [10] DEVANAGARI DIGIT ZERO..DEVANAGARI DIGIT NINE
+0971 ; Devanagari # Lm DEVANAGARI SIGN HIGH SPACING DOT
+0972 ; Devanagari # Lo DEVANAGARI LETTER CANDRA A
+097B..097F ; Devanagari # Lo [5] DEVANAGARI LETTER GGA..DEVANAGARI LETTER BBA
+
+# Total code points: 107
+
+# ================================================
+
+0981 ; Bengali # Mn BENGALI SIGN CANDRABINDU
+0982..0983 ; Bengali # Mc [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA
+0985..098C ; Bengali # Lo [8] BENGALI LETTER A..BENGALI LETTER VOCALIC L
+098F..0990 ; Bengali # Lo [2] BENGALI LETTER E..BENGALI LETTER AI
+0993..09A8 ; Bengali # Lo [22] BENGALI LETTER O..BENGALI LETTER NA
+09AA..09B0 ; Bengali # Lo [7] BENGALI LETTER PA..BENGALI LETTER RA
+09B2 ; Bengali # Lo BENGALI LETTER LA
+09B6..09B9 ; Bengali # Lo [4] BENGALI LETTER SHA..BENGALI LETTER HA
+09BC ; Bengali # Mn BENGALI SIGN NUKTA
+09BD ; Bengali # Lo BENGALI SIGN AVAGRAHA
+09BE..09C0 ; Bengali # Mc [3] BENGALI VOWEL SIGN AA..BENGALI VOWEL SIGN II
+09C1..09C4 ; Bengali # Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR
+09C7..09C8 ; Bengali # Mc [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI
+09CB..09CC ; Bengali # Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU
+09CD ; Bengali # Mn BENGALI SIGN VIRAMA
+09CE ; Bengali # Lo BENGALI LETTER KHANDA TA
+09D7 ; Bengali # Mc BENGALI AU LENGTH MARK
+09DC..09DD ; Bengali # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+09DF..09E1 ; Bengali # Lo [3] BENGALI LETTER YYA..BENGALI LETTER VOCALIC LL
+09E2..09E3 ; Bengali # Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL
+09E6..09EF ; Bengali # Nd [10] BENGALI DIGIT ZERO..BENGALI DIGIT NINE
+09F0..09F1 ; Bengali # Lo [2] BENGALI LETTER RA WITH MIDDLE DIAGONAL..BENGALI LETTER RA WITH LOWER DIAGONAL
+09F2..09F3 ; Bengali # Sc [2] BENGALI RUPEE MARK..BENGALI RUPEE SIGN
+09F4..09F9 ; Bengali # No [6] BENGALI CURRENCY NUMERATOR ONE..BENGALI CURRENCY DENOMINATOR SIXTEEN
+09FA ; Bengali # So BENGALI ISSHAR
+
+# Total code points: 91
+
+# ================================================
+
+0A01..0A02 ; Gurmukhi # Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI
+0A03 ; Gurmukhi # Mc GURMUKHI SIGN VISARGA
+0A05..0A0A ; Gurmukhi # Lo [6] GURMUKHI LETTER A..GURMUKHI LETTER UU
+0A0F..0A10 ; Gurmukhi # Lo [2] GURMUKHI LETTER EE..GURMUKHI LETTER AI
+0A13..0A28 ; Gurmukhi # Lo [22] GURMUKHI LETTER OO..GURMUKHI LETTER NA
+0A2A..0A30 ; Gurmukhi # Lo [7] GURMUKHI LETTER PA..GURMUKHI LETTER RA
+0A32..0A33 ; Gurmukhi # Lo [2] GURMUKHI LETTER LA..GURMUKHI LETTER LLA
+0A35..0A36 ; Gurmukhi # Lo [2] GURMUKHI LETTER VA..GURMUKHI LETTER SHA
+0A38..0A39 ; Gurmukhi # Lo [2] GURMUKHI LETTER SA..GURMUKHI LETTER HA
+0A3C ; Gurmukhi # Mn GURMUKHI SIGN NUKTA
+0A3E..0A40 ; Gurmukhi # Mc [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II
+0A41..0A42 ; Gurmukhi # Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU
+0A47..0A48 ; Gurmukhi # Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI
+0A4B..0A4D ; Gurmukhi # Mn [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA
+0A51 ; Gurmukhi # Mn GURMUKHI SIGN UDAAT
+0A59..0A5C ; Gurmukhi # Lo [4] GURMUKHI LETTER KHHA..GURMUKHI LETTER RRA
+0A5E ; Gurmukhi # Lo GURMUKHI LETTER FA
+0A66..0A6F ; Gurmukhi # Nd [10] GURMUKHI DIGIT ZERO..GURMUKHI DIGIT NINE
+0A70..0A71 ; Gurmukhi # Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK
+0A72..0A74 ; Gurmukhi # Lo [3] GURMUKHI IRI..GURMUKHI EK ONKAR
+0A75 ; Gurmukhi # Mn GURMUKHI SIGN YAKASH
+
+# Total code points: 79
+
+# ================================================
+
+0A81..0A82 ; Gujarati # Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA
+0A83 ; Gujarati # Mc GUJARATI SIGN VISARGA
+0A85..0A8D ; Gujarati # Lo [9] GUJARATI LETTER A..GUJARATI VOWEL CANDRA E
+0A8F..0A91 ; Gujarati # Lo [3] GUJARATI LETTER E..GUJARATI VOWEL CANDRA O
+0A93..0AA8 ; Gujarati # Lo [22] GUJARATI LETTER O..GUJARATI LETTER NA
+0AAA..0AB0 ; Gujarati # Lo [7] GUJARATI LETTER PA..GUJARATI LETTER RA
+0AB2..0AB3 ; Gujarati # Lo [2] GUJARATI LETTER LA..GUJARATI LETTER LLA
+0AB5..0AB9 ; Gujarati # Lo [5] GUJARATI LETTER VA..GUJARATI LETTER HA
+0ABC ; Gujarati # Mn GUJARATI SIGN NUKTA
+0ABD ; Gujarati # Lo GUJARATI SIGN AVAGRAHA
+0ABE..0AC0 ; Gujarati # Mc [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II
+0AC1..0AC5 ; Gujarati # Mn [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E
+0AC7..0AC8 ; Gujarati # Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI
+0AC9 ; Gujarati # Mc GUJARATI VOWEL SIGN CANDRA O
+0ACB..0ACC ; Gujarati # Mc [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU
+0ACD ; Gujarati # Mn GUJARATI SIGN VIRAMA
+0AD0 ; Gujarati # Lo GUJARATI OM
+0AE0..0AE1 ; Gujarati # Lo [2] GUJARATI LETTER VOCALIC RR..GUJARATI LETTER VOCALIC LL
+0AE2..0AE3 ; Gujarati # Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL
+0AE6..0AEF ; Gujarati # Nd [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE
+0AF1 ; Gujarati # Sc GUJARATI RUPEE SIGN
+
+# Total code points: 83
+
+# ================================================
+
+0B01 ; Oriya # Mn ORIYA SIGN CANDRABINDU
+0B02..0B03 ; Oriya # Mc [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA
+0B05..0B0C ; Oriya # Lo [8] ORIYA LETTER A..ORIYA LETTER VOCALIC L
+0B0F..0B10 ; Oriya # Lo [2] ORIYA LETTER E..ORIYA LETTER AI
+0B13..0B28 ; Oriya # Lo [22] ORIYA LETTER O..ORIYA LETTER NA
+0B2A..0B30 ; Oriya # Lo [7] ORIYA LETTER PA..ORIYA LETTER RA
+0B32..0B33 ; Oriya # Lo [2] ORIYA LETTER LA..ORIYA LETTER LLA
+0B35..0B39 ; Oriya # Lo [5] ORIYA LETTER VA..ORIYA LETTER HA
+0B3C ; Oriya # Mn ORIYA SIGN NUKTA
+0B3D ; Oriya # Lo ORIYA SIGN AVAGRAHA
+0B3E ; Oriya # Mc ORIYA VOWEL SIGN AA
+0B3F ; Oriya # Mn ORIYA VOWEL SIGN I
+0B40 ; Oriya # Mc ORIYA VOWEL SIGN II
+0B41..0B44 ; Oriya # Mn [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR
+0B47..0B48 ; Oriya # Mc [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI
+0B4B..0B4C ; Oriya # Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU
+0B4D ; Oriya # Mn ORIYA SIGN VIRAMA
+0B56 ; Oriya # Mn ORIYA AI LENGTH MARK
+0B57 ; Oriya # Mc ORIYA AU LENGTH MARK
+0B5C..0B5D ; Oriya # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+0B5F..0B61 ; Oriya # Lo [3] ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL
+0B62..0B63 ; Oriya # Mn [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL
+0B66..0B6F ; Oriya # Nd [10] ORIYA DIGIT ZERO..ORIYA DIGIT NINE
+0B70 ; Oriya # So ORIYA ISSHAR
+0B71 ; Oriya # Lo ORIYA LETTER WA
+
+# Total code points: 84
+
+# ================================================
+
+0B82 ; Tamil # Mn TAMIL SIGN ANUSVARA
+0B83 ; Tamil # Lo TAMIL SIGN VISARGA
+0B85..0B8A ; Tamil # Lo [6] TAMIL LETTER A..TAMIL LETTER UU
+0B8E..0B90 ; Tamil # Lo [3] TAMIL LETTER E..TAMIL LETTER AI
+0B92..0B95 ; Tamil # Lo [4] TAMIL LETTER O..TAMIL LETTER KA
+0B99..0B9A ; Tamil # Lo [2] TAMIL LETTER NGA..TAMIL LETTER CA
+0B9C ; Tamil # Lo TAMIL LETTER JA
+0B9E..0B9F ; Tamil # Lo [2] TAMIL LETTER NYA..TAMIL LETTER TTA
+0BA3..0BA4 ; Tamil # Lo [2] TAMIL LETTER NNA..TAMIL LETTER TA
+0BA8..0BAA ; Tamil # Lo [3] TAMIL LETTER NA..TAMIL LETTER PA
+0BAE..0BB9 ; Tamil # Lo [12] TAMIL LETTER MA..TAMIL LETTER HA
+0BBE..0BBF ; Tamil # Mc [2] TAMIL VOWEL SIGN AA..TAMIL VOWEL SIGN I
+0BC0 ; Tamil # Mn TAMIL VOWEL SIGN II
+0BC1..0BC2 ; Tamil # Mc [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU
+0BC6..0BC8 ; Tamil # Mc [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI
+0BCA..0BCC ; Tamil # Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU
+0BCD ; Tamil # Mn TAMIL SIGN VIRAMA
+0BD0 ; Tamil # Lo TAMIL OM
+0BD7 ; Tamil # Mc TAMIL AU LENGTH MARK
+0BE6..0BEF ; Tamil # Nd [10] TAMIL DIGIT ZERO..TAMIL DIGIT NINE
+0BF0..0BF2 ; Tamil # No [3] TAMIL NUMBER TEN..TAMIL NUMBER ONE THOUSAND
+0BF3..0BF8 ; Tamil # So [6] TAMIL DAY SIGN..TAMIL AS ABOVE SIGN
+0BF9 ; Tamil # Sc TAMIL RUPEE SIGN
+0BFA ; Tamil # So TAMIL NUMBER SIGN
+
+# Total code points: 72
+
+# ================================================
+
+0C01..0C03 ; Telugu # Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA
+0C05..0C0C ; Telugu # Lo [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L
+0C0E..0C10 ; Telugu # Lo [3] TELUGU LETTER E..TELUGU LETTER AI
+0C12..0C28 ; Telugu # Lo [23] TELUGU LETTER O..TELUGU LETTER NA
+0C2A..0C33 ; Telugu # Lo [10] TELUGU LETTER PA..TELUGU LETTER LLA
+0C35..0C39 ; Telugu # Lo [5] TELUGU LETTER VA..TELUGU LETTER HA
+0C3D ; Telugu # Lo TELUGU SIGN AVAGRAHA
+0C3E..0C40 ; Telugu # Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II
+0C41..0C44 ; Telugu # Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR
+0C46..0C48 ; Telugu # Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI
+0C4A..0C4D ; Telugu # Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA
+0C55..0C56 ; Telugu # Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK
+0C58..0C59 ; Telugu # Lo [2] TELUGU LETTER TSA..TELUGU LETTER DZA
+0C60..0C61 ; Telugu # Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL
+0C62..0C63 ; Telugu # Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL
+0C66..0C6F ; Telugu # Nd [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE
+0C78..0C7E ; Telugu # No [7] TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR..TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR
+0C7F ; Telugu # So TELUGU SIGN TUUMU
+
+# Total code points: 93
+
+# ================================================
+
+0C82..0C83 ; Kannada # Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA
+0C85..0C8C ; Kannada # Lo [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L
+0C8E..0C90 ; Kannada # Lo [3] KANNADA LETTER E..KANNADA LETTER AI
+0C92..0CA8 ; Kannada # Lo [23] KANNADA LETTER O..KANNADA LETTER NA
+0CAA..0CB3 ; Kannada # Lo [10] KANNADA LETTER PA..KANNADA LETTER LLA
+0CB5..0CB9 ; Kannada # Lo [5] KANNADA LETTER VA..KANNADA LETTER HA
+0CBC ; Kannada # Mn KANNADA SIGN NUKTA
+0CBD ; Kannada # Lo KANNADA SIGN AVAGRAHA
+0CBE ; Kannada # Mc KANNADA VOWEL SIGN AA
+0CBF ; Kannada # Mn KANNADA VOWEL SIGN I
+0CC0..0CC4 ; Kannada # Mc [5] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN VOCALIC RR
+0CC6 ; Kannada # Mn KANNADA VOWEL SIGN E
+0CC7..0CC8 ; Kannada # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI
+0CCA..0CCB ; Kannada # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
+0CCC..0CCD ; Kannada # Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA
+0CD5..0CD6 ; Kannada # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK
+0CDE ; Kannada # Lo KANNADA LETTER FA
+0CE0..0CE1 ; Kannada # Lo [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL
+0CE2..0CE3 ; Kannada # Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL
+0CE6..0CEF ; Kannada # Nd [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE
+
+# Total code points: 84
+
+# ================================================
+
+0D02..0D03 ; Malayalam # Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA
+0D05..0D0C ; Malayalam # Lo [8] MALAYALAM LETTER A..MALAYALAM LETTER VOCALIC L
+0D0E..0D10 ; Malayalam # Lo [3] MALAYALAM LETTER E..MALAYALAM LETTER AI
+0D12..0D28 ; Malayalam # Lo [23] MALAYALAM LETTER O..MALAYALAM LETTER NA
+0D2A..0D39 ; Malayalam # Lo [16] MALAYALAM LETTER PA..MALAYALAM LETTER HA
+0D3D ; Malayalam # Lo MALAYALAM SIGN AVAGRAHA
+0D3E..0D40 ; Malayalam # Mc [3] MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN II
+0D41..0D44 ; Malayalam # Mn [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR
+0D46..0D48 ; Malayalam # Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI
+0D4A..0D4C ; Malayalam # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
+0D4D ; Malayalam # Mn MALAYALAM SIGN VIRAMA
+0D57 ; Malayalam # Mc MALAYALAM AU LENGTH MARK
+0D60..0D61 ; Malayalam # Lo [2] MALAYALAM LETTER VOCALIC RR..MALAYALAM LETTER VOCALIC LL
+0D62..0D63 ; Malayalam # Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL
+0D66..0D6F ; Malayalam # Nd [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE
+0D70..0D75 ; Malayalam # No [6] MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE QUARTERS
+0D79 ; Malayalam # So MALAYALAM DATE MARK
+0D7A..0D7F ; Malayalam # Lo [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K
+
+# Total code points: 95
+
+# ================================================
+
+0D82..0D83 ; Sinhala # Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA
+0D85..0D96 ; Sinhala # Lo [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA
+0D9A..0DB1 ; Sinhala # Lo [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA
+0DB3..0DBB ; Sinhala # Lo [9] SINHALA LETTER SANYAKA DAYANNA..SINHALA LETTER RAYANNA
+0DBD ; Sinhala # Lo SINHALA LETTER DANTAJA LAYANNA
+0DC0..0DC6 ; Sinhala # Lo [7] SINHALA LETTER VAYANNA..SINHALA LETTER FAYANNA
+0DCA ; Sinhala # Mn SINHALA SIGN AL-LAKUNA
+0DCF..0DD1 ; Sinhala # Mc [3] SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA
+0DD2..0DD4 ; Sinhala # Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA
+0DD6 ; Sinhala # Mn SINHALA VOWEL SIGN DIGA PAA-PILLA
+0DD8..0DDF ; Sinhala # Mc [8] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN GAYANUKITTA
+0DF2..0DF3 ; Sinhala # Mc [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA
+0DF4 ; Sinhala # Po SINHALA PUNCTUATION KUNDDALIYA
+
+# Total code points: 80
+
+# ================================================
+
+0E01..0E30 ; Thai # Lo [48] THAI CHARACTER KO KAI..THAI CHARACTER SARA A
+0E31 ; Thai # Mn THAI CHARACTER MAI HAN-AKAT
+0E32..0E33 ; Thai # Lo [2] THAI CHARACTER SARA AA..THAI CHARACTER SARA AM
+0E34..0E3A ; Thai # Mn [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU
+0E40..0E45 ; Thai # Lo [6] THAI CHARACTER SARA E..THAI CHARACTER LAKKHANGYAO
+0E46 ; Thai # Lm THAI CHARACTER MAIYAMOK
+0E47..0E4E ; Thai # Mn [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN
+0E4F ; Thai # Po THAI CHARACTER FONGMAN
+0E50..0E59 ; Thai # Nd [10] THAI DIGIT ZERO..THAI DIGIT NINE
+0E5A..0E5B ; Thai # Po [2] THAI CHARACTER ANGKHANKHU..THAI CHARACTER KHOMUT
+
+# Total code points: 86
+
+# ================================================
+
+0E81..0E82 ; Lao # Lo [2] LAO LETTER KO..LAO LETTER KHO SUNG
+0E84 ; Lao # Lo LAO LETTER KHO TAM
+0E87..0E88 ; Lao # Lo [2] LAO LETTER NGO..LAO LETTER CO
+0E8A ; Lao # Lo LAO LETTER SO TAM
+0E8D ; Lao # Lo LAO LETTER NYO
+0E94..0E97 ; Lao # Lo [4] LAO LETTER DO..LAO LETTER THO TAM
+0E99..0E9F ; Lao # Lo [7] LAO LETTER NO..LAO LETTER FO SUNG
+0EA1..0EA3 ; Lao # Lo [3] LAO LETTER MO..LAO LETTER LO LING
+0EA5 ; Lao # Lo LAO LETTER LO LOOT
+0EA7 ; Lao # Lo LAO LETTER WO
+0EAA..0EAB ; Lao # Lo [2] LAO LETTER SO SUNG..LAO LETTER HO SUNG
+0EAD..0EB0 ; Lao # Lo [4] LAO LETTER O..LAO VOWEL SIGN A
+0EB1 ; Lao # Mn LAO VOWEL SIGN MAI KAN
+0EB2..0EB3 ; Lao # Lo [2] LAO VOWEL SIGN AA..LAO VOWEL SIGN AM
+0EB4..0EB9 ; Lao # Mn [6] LAO VOWEL SIGN I..LAO VOWEL SIGN UU
+0EBB..0EBC ; Lao # Mn [2] LAO VOWEL SIGN MAI KON..LAO SEMIVOWEL SIGN LO
+0EBD ; Lao # Lo LAO SEMIVOWEL SIGN NYO
+0EC0..0EC4 ; Lao # Lo [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI
+0EC6 ; Lao # Lm LAO KO LA
+0EC8..0ECD ; Lao # Mn [6] LAO TONE MAI EK..LAO NIGGAHITA
+0ED0..0ED9 ; Lao # Nd [10] LAO DIGIT ZERO..LAO DIGIT NINE
+0EDC..0EDD ; Lao # Lo [2] LAO HO NO..LAO HO MO
+
+# Total code points: 65
+
+# ================================================
+
+0F00 ; Tibetan # Lo TIBETAN SYLLABLE OM
+0F01..0F03 ; Tibetan # So [3] TIBETAN MARK GTER YIG MGO TRUNCATED A..TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA
+0F04..0F12 ; Tibetan # Po [15] TIBETAN MARK INITIAL YIG MGO MDUN MA..TIBETAN MARK RGYA GRAM SHAD
+0F13..0F17 ; Tibetan # So [5] TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN..TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS
+0F18..0F19 ; Tibetan # Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS
+0F1A..0F1F ; Tibetan # So [6] TIBETAN SIGN RDEL DKAR GCIG..TIBETAN SIGN RDEL DKAR RDEL NAG
+0F20..0F29 ; Tibetan # Nd [10] TIBETAN DIGIT ZERO..TIBETAN DIGIT NINE
+0F2A..0F33 ; Tibetan # No [10] TIBETAN DIGIT HALF ONE..TIBETAN DIGIT HALF ZERO
+0F34 ; Tibetan # So TIBETAN MARK BSDUS RTAGS
+0F35 ; Tibetan # Mn TIBETAN MARK NGAS BZUNG NYI ZLA
+0F36 ; Tibetan # So TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN
+0F37 ; Tibetan # Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS
+0F38 ; Tibetan # So TIBETAN MARK CHE MGO
+0F39 ; Tibetan # Mn TIBETAN MARK TSA -PHRU
+0F3A ; Tibetan # Ps TIBETAN MARK GUG RTAGS GYON
+0F3B ; Tibetan # Pe TIBETAN MARK GUG RTAGS GYAS
+0F3C ; Tibetan # Ps TIBETAN MARK ANG KHANG GYON
+0F3D ; Tibetan # Pe TIBETAN MARK ANG KHANG GYAS
+0F3E..0F3F ; Tibetan # Mc [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES
+0F40..0F47 ; Tibetan # Lo [8] TIBETAN LETTER KA..TIBETAN LETTER JA
+0F49..0F6C ; Tibetan # Lo [36] TIBETAN LETTER NYA..TIBETAN LETTER RRA
+0F71..0F7E ; Tibetan # Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO
+0F7F ; Tibetan # Mc TIBETAN SIGN RNAM BCAD
+0F80..0F84 ; Tibetan # Mn [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA
+0F85 ; Tibetan # Po TIBETAN MARK PALUTA
+0F86..0F87 ; Tibetan # Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS
+0F88..0F8B ; Tibetan # Lo [4] TIBETAN SIGN LCE TSA CAN..TIBETAN SIGN GRU MED RGYINGS
+0F90..0F97 ; Tibetan # Mn [8] TIBETAN SUBJOINED LETTER KA..TIBETAN SUBJOINED LETTER JA
+0F99..0FBC ; Tibetan # Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA
+0FBE..0FC5 ; Tibetan # So [8] TIBETAN KU RU KHA..TIBETAN SYMBOL RDO RJE
+0FC6 ; Tibetan # Mn TIBETAN SYMBOL PADMA GDAN
+0FC7..0FCC ; Tibetan # So [6] TIBETAN SYMBOL RDO RJE RGYA GRAM..TIBETAN SYMBOL NOR BU BZHI -KHYIL
+0FCE..0FCF ; Tibetan # So [2] TIBETAN SIGN RDEL NAG RDEL DKAR..TIBETAN SIGN RDEL NAG GSUM
+0FD0..0FD4 ; Tibetan # Po [5] TIBETAN MARK BSKA- SHOG GI MGO RGYAN..TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA
+
+# Total code points: 201
+
+# ================================================
+
+1000..102A ; Myanmar # Lo [43] MYANMAR LETTER KA..MYANMAR LETTER AU
+102B..102C ; Myanmar # Mc [2] MYANMAR VOWEL SIGN TALL AA..MYANMAR VOWEL SIGN AA
+102D..1030 ; Myanmar # Mn [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU
+1031 ; Myanmar # Mc MYANMAR VOWEL SIGN E
+1032..1037 ; Myanmar # Mn [6] MYANMAR VOWEL SIGN AI..MYANMAR SIGN DOT BELOW
+1038 ; Myanmar # Mc MYANMAR SIGN VISARGA
+1039..103A ; Myanmar # Mn [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT
+103B..103C ; Myanmar # Mc [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA
+103D..103E ; Myanmar # Mn [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA
+103F ; Myanmar # Lo MYANMAR LETTER GREAT SA
+1040..1049 ; Myanmar # Nd [10] MYANMAR DIGIT ZERO..MYANMAR DIGIT NINE
+104A..104F ; Myanmar # Po [6] MYANMAR SIGN LITTLE SECTION..MYANMAR SYMBOL GENITIVE
+1050..1055 ; Myanmar # Lo [6] MYANMAR LETTER SHA..MYANMAR LETTER VOCALIC LL
+1056..1057 ; Myanmar # Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR
+1058..1059 ; Myanmar # Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL
+105A..105D ; Myanmar # Lo [4] MYANMAR LETTER MON NGA..MYANMAR LETTER MON BBE
+105E..1060 ; Myanmar # Mn [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA
+1061 ; Myanmar # Lo MYANMAR LETTER SGAW KAREN SHA
+1062..1064 ; Myanmar # Mc [3] MYANMAR VOWEL SIGN SGAW KAREN EU..MYANMAR TONE MARK SGAW KAREN KE PHO
+1065..1066 ; Myanmar # Lo [2] MYANMAR LETTER WESTERN PWO KAREN THA..MYANMAR LETTER WESTERN PWO KAREN PWA
+1067..106D ; Myanmar # Mc [7] MYANMAR VOWEL SIGN WESTERN PWO KAREN EU..MYANMAR SIGN WESTERN PWO KAREN TONE-5
+106E..1070 ; Myanmar # Lo [3] MYANMAR LETTER EASTERN PWO KAREN NNA..MYANMAR LETTER EASTERN PWO KAREN GHWA
+1071..1074 ; Myanmar # Mn [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE
+1075..1081 ; Myanmar # Lo [13] MYANMAR LETTER SHAN KA..MYANMAR LETTER SHAN HA
+1082 ; Myanmar # Mn MYANMAR CONSONANT SIGN SHAN MEDIAL WA
+1083..1084 ; Myanmar # Mc [2] MYANMAR VOWEL SIGN SHAN AA..MYANMAR VOWEL SIGN SHAN E
+1085..1086 ; Myanmar # Mn [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y
+1087..108C ; Myanmar # Mc [6] MYANMAR SIGN SHAN TONE-2..MYANMAR SIGN SHAN COUNCIL TONE-3
+108D ; Myanmar # Mn MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE
+108E ; Myanmar # Lo MYANMAR LETTER RUMAI PALAUNG FA
+108F ; Myanmar # Mc MYANMAR SIGN RUMAI PALAUNG TONE-5
+1090..1099 ; Myanmar # Nd [10] MYANMAR SHAN DIGIT ZERO..MYANMAR SHAN DIGIT NINE
+109E..109F ; Myanmar # So [2] MYANMAR SYMBOL SHAN ONE..MYANMAR SYMBOL SHAN EXCLAMATION
+
+# Total code points: 156
+
+# ================================================
+
+10A0..10C5 ; Georgian # L& [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE
+10D0..10FA ; Georgian # Lo [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN
+10FC ; Georgian # Lm MODIFIER LETTER GEORGIAN NAR
+2D00..2D25 ; Georgian # L& [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE
+
+# Total code points: 120
+
+# ================================================
+
+1100..1159 ; Hangul # Lo [90] HANGUL CHOSEONG KIYEOK..HANGUL CHOSEONG YEORINHIEUH
+115F..11A2 ; Hangul # Lo [68] HANGUL CHOSEONG FILLER..HANGUL JUNGSEONG SSANGARAEA
+11A8..11F9 ; Hangul # Lo [82] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG YEORINHIEUH
+3131..318E ; Hangul # Lo [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE
+3200..321E ; Hangul # So [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU
+3260..327E ; Hangul # So [31] CIRCLED HANGUL KIYEOK..CIRCLED HANGUL IEUNG U
+AC00..D7A3 ; Hangul # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH
+FFA0..FFBE ; Hangul # Lo [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH
+FFC2..FFC7 ; Hangul # Lo [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E
+FFCA..FFCF ; Hangul # Lo [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE
+FFD2..FFD7 ; Hangul # Lo [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU
+FFDA..FFDC ; Hangul # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I
+
+# Total code points: 11620
+
+# ================================================
+
+1200..1248 ; Ethiopic # Lo [73] ETHIOPIC SYLLABLE HA..ETHIOPIC SYLLABLE QWA
+124A..124D ; Ethiopic # Lo [4] ETHIOPIC SYLLABLE QWI..ETHIOPIC SYLLABLE QWE
+1250..1256 ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE QHA..ETHIOPIC SYLLABLE QHO
+1258 ; Ethiopic # Lo ETHIOPIC SYLLABLE QHWA
+125A..125D ; Ethiopic # Lo [4] ETHIOPIC SYLLABLE QHWI..ETHIOPIC SYLLABLE QHWE
+1260..1288 ; Ethiopic # Lo [41] ETHIOPIC SYLLABLE BA..ETHIOPIC SYLLABLE XWA
+128A..128D ; Ethiopic # Lo [4] ETHIOPIC SYLLABLE XWI..ETHIOPIC SYLLABLE XWE
+1290..12B0 ; Ethiopic # Lo [33] ETHIOPIC SYLLABLE NA..ETHIOPIC SYLLABLE KWA
+12B2..12B5 ; Ethiopic # Lo [4] ETHIOPIC SYLLABLE KWI..ETHIOPIC SYLLABLE KWE
+12B8..12BE ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE KXA..ETHIOPIC SYLLABLE KXO
+12C0 ; Ethiopic # Lo ETHIOPIC SYLLABLE KXWA
+12C2..12C5 ; Ethiopic # Lo [4] ETHIOPIC SYLLABLE KXWI..ETHIOPIC SYLLABLE KXWE
+12C8..12D6 ; Ethiopic # Lo [15] ETHIOPIC SYLLABLE WA..ETHIOPIC SYLLABLE PHARYNGEAL O
+12D8..1310 ; Ethiopic # Lo [57] ETHIOPIC SYLLABLE ZA..ETHIOPIC SYLLABLE GWA
+1312..1315 ; Ethiopic # Lo [4] ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE
+1318..135A ; Ethiopic # Lo [67] ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE FYA
+135F ; Ethiopic # Mn ETHIOPIC COMBINING GEMINATION MARK
+1360 ; Ethiopic # So ETHIOPIC SECTION MARK
+1361..1368 ; Ethiopic # Po [8] ETHIOPIC WORDSPACE..ETHIOPIC PARAGRAPH SEPARATOR
+1369..137C ; Ethiopic # No [20] ETHIOPIC DIGIT ONE..ETHIOPIC NUMBER TEN THOUSAND
+1380..138F ; Ethiopic # Lo [16] ETHIOPIC SYLLABLE SEBATBEIT MWA..ETHIOPIC SYLLABLE PWE
+1390..1399 ; Ethiopic # So [10] ETHIOPIC TONAL MARK YIZET..ETHIOPIC TONAL MARK KURT
+2D80..2D96 ; Ethiopic # Lo [23] ETHIOPIC SYLLABLE LOA..ETHIOPIC SYLLABLE GGWE
+2DA0..2DA6 ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE SSA..ETHIOPIC SYLLABLE SSO
+2DA8..2DAE ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE CCA..ETHIOPIC SYLLABLE CCO
+2DB0..2DB6 ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE ZZA..ETHIOPIC SYLLABLE ZZO
+2DB8..2DBE ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE CCHA..ETHIOPIC SYLLABLE CCHO
+2DC0..2DC6 ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE QYA..ETHIOPIC SYLLABLE QYO
+2DC8..2DCE ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE KYA..ETHIOPIC SYLLABLE KYO
+2DD0..2DD6 ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE XYA..ETHIOPIC SYLLABLE XYO
+2DD8..2DDE ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE GYA..ETHIOPIC SYLLABLE GYO
+
+# Total code points: 461
+
+# ================================================
+
+13A0..13F4 ; Cherokee # Lo [85] CHEROKEE LETTER A..CHEROKEE LETTER YV
+
+# Total code points: 85
+
+# ================================================
+
+1401..166C ; Canadian_Aboriginal # Lo [620] CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA
+166D..166E ; Canadian_Aboriginal # Po [2] CANADIAN SYLLABICS CHI SIGN..CANADIAN SYLLABICS FULL STOP
+166F..1676 ; Canadian_Aboriginal # Lo [8] CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS NNGAA
+
+# Total code points: 630
+
+# ================================================
+
+1680 ; Ogham # Zs OGHAM SPACE MARK
+1681..169A ; Ogham # Lo [26] OGHAM LETTER BEITH..OGHAM LETTER PEITH
+169B ; Ogham # Ps OGHAM FEATHER MARK
+169C ; Ogham # Pe OGHAM REVERSED FEATHER MARK
+
+# Total code points: 29
+
+# ================================================
+
+16A0..16EA ; Runic # Lo [75] RUNIC LETTER FEHU FEOH FE F..RUNIC LETTER X
+16EE..16F0 ; Runic # Nl [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL
+
+# Total code points: 78
+
+# ================================================
+
+1780..17B3 ; Khmer # Lo [52] KHMER LETTER KA..KHMER INDEPENDENT VOWEL QAU
+17B4..17B5 ; Khmer # Cf [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA
+17B6 ; Khmer # Mc KHMER VOWEL SIGN AA
+17B7..17BD ; Khmer # Mn [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA
+17BE..17C5 ; Khmer # Mc [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU
+17C6 ; Khmer # Mn KHMER SIGN NIKAHIT
+17C7..17C8 ; Khmer # Mc [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU
+17C9..17D3 ; Khmer # Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT
+17D4..17D6 ; Khmer # Po [3] KHMER SIGN KHAN..KHMER SIGN CAMNUC PII KUUH
+17D7 ; Khmer # Lm KHMER SIGN LEK TOO
+17D8..17DA ; Khmer # Po [3] KHMER SIGN BEYYAL..KHMER SIGN KOOMUUT
+17DB ; Khmer # Sc KHMER CURRENCY SYMBOL RIEL
+17DC ; Khmer # Lo KHMER SIGN AVAKRAHASANYA
+17DD ; Khmer # Mn KHMER SIGN ATTHACAN
+17E0..17E9 ; Khmer # Nd [10] KHMER DIGIT ZERO..KHMER DIGIT NINE
+17F0..17F9 ; Khmer # No [10] KHMER SYMBOL LEK ATTAK SON..KHMER SYMBOL LEK ATTAK PRAM-BUON
+19E0..19FF ; Khmer # So [32] KHMER SYMBOL PATHAMASAT..KHMER SYMBOL DAP-PRAM ROC
+
+# Total code points: 146
+
+# ================================================
+
+1800..1801 ; Mongolian # Po [2] MONGOLIAN BIRGA..MONGOLIAN ELLIPSIS
+1804 ; Mongolian # Po MONGOLIAN COLON
+1806 ; Mongolian # Pd MONGOLIAN TODO SOFT HYPHEN
+1807..180A ; Mongolian # Po [4] MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER..MONGOLIAN NIRUGU
+180B..180D ; Mongolian # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
+180E ; Mongolian # Zs MONGOLIAN VOWEL SEPARATOR
+1810..1819 ; Mongolian # Nd [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE
+1820..1842 ; Mongolian # Lo [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI
+1843 ; Mongolian # Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN
+1844..1877 ; Mongolian # Lo [52] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER MANCHU ZHA
+1880..18A8 ; Mongolian # Lo [41] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER MANCHU ALI GALI BHA
+18A9 ; Mongolian # Mn MONGOLIAN LETTER ALI GALI DAGALGA
+18AA ; Mongolian # Lo MONGOLIAN LETTER MANCHU ALI GALI LHA
+
+# Total code points: 153
+
+# ================================================
+
+3041..3096 ; Hiragana # Lo [86] HIRAGANA LETTER SMALL A..HIRAGANA LETTER SMALL KE
+309D..309E ; Hiragana # Lm [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK
+309F ; Hiragana # Lo HIRAGANA DIGRAPH YORI
+
+# Total code points: 89
+
+# ================================================
+
+30A1..30FA ; Katakana # Lo [90] KATAKANA LETTER SMALL A..KATAKANA LETTER VO
+30FD..30FE ; Katakana # Lm [2] KATAKANA ITERATION MARK..KATAKANA VOICED ITERATION MARK
+30FF ; Katakana # Lo KATAKANA DIGRAPH KOTO
+31F0..31FF ; Katakana # Lo [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO
+32D0..32FE ; Katakana # So [47] CIRCLED KATAKANA A..CIRCLED KATAKANA WO
+3300..3357 ; Katakana # So [88] SQUARE APAATO..SQUARE WATTO
+FF66..FF6F ; Katakana # Lo [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU
+FF71..FF9D ; Katakana # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N
+
+# Total code points: 299
+
+# ================================================
+
+3105..312D ; Bopomofo # Lo [41] BOPOMOFO LETTER B..BOPOMOFO LETTER IH
+31A0..31B7 ; Bopomofo # Lo [24] BOPOMOFO LETTER BU..BOPOMOFO FINAL LETTER H
+
+# Total code points: 65
+
+# ================================================
+
+2E80..2E99 ; Han # So [26] CJK RADICAL REPEAT..CJK RADICAL RAP
+2E9B..2EF3 ; Han # So [89] CJK RADICAL CHOKE..CJK RADICAL C-SIMPLIFIED TURTLE
+2F00..2FD5 ; Han # So [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE
+3005 ; Han # Lm IDEOGRAPHIC ITERATION MARK
+3007 ; Han # Nl IDEOGRAPHIC NUMBER ZERO
+3021..3029 ; Han # Nl [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE
+3038..303A ; Han # Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY
+303B ; Han # Lm VERTICAL IDEOGRAPHIC ITERATION MARK
+3400..4DB5 ; Han # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5
+4E00..9FC3 ; Han # Lo [20932] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FC3
+F900..FA2D ; Han # Lo [302] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA2D
+FA30..FA6A ; Han # Lo [59] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6A
+FA70..FAD9 ; Han # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
+20000..2A6D6 ; Han # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6
+2F800..2FA1D ; Han # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
+
+# Total code points: 71578
+
+# ================================================
+
+A000..A014 ; Yi # Lo [21] YI SYLLABLE IT..YI SYLLABLE E
+A015 ; Yi # Lm YI SYLLABLE WU
+A016..A48C ; Yi # Lo [1143] YI SYLLABLE BIT..YI SYLLABLE YYR
+A490..A4C6 ; Yi # So [55] YI RADICAL QOT..YI RADICAL KE
+
+# Total code points: 1220
+
+# ================================================
+
+10300..1031E ; Old_Italic # Lo [31] OLD ITALIC LETTER A..OLD ITALIC LETTER UU
+10320..10323 ; Old_Italic # No [4] OLD ITALIC NUMERAL ONE..OLD ITALIC NUMERAL FIFTY
+
+# Total code points: 35
+
+# ================================================
+
+10330..10340 ; Gothic # Lo [17] GOTHIC LETTER AHSA..GOTHIC LETTER PAIRTHRA
+10341 ; Gothic # Nl GOTHIC LETTER NINETY
+10342..10349 ; Gothic # Lo [8] GOTHIC LETTER RAIDA..GOTHIC LETTER OTHAL
+1034A ; Gothic # Nl GOTHIC LETTER NINE HUNDRED
+
+# Total code points: 27
+
+# ================================================
+
+10400..1044F ; Deseret # L& [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW
+
+# Total code points: 80
+
+# ================================================
+
+0300..036F ; Inherited # Mn [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X
+064B..0655 ; Inherited # Mn [11] ARABIC FATHATAN..ARABIC HAMZA BELOW
+0670 ; Inherited # Mn ARABIC LETTER SUPERSCRIPT ALEF
+0951..0952 ; Inherited # Mn [2] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI STRESS SIGN ANUDATTA
+1DC0..1DE6 ; Inherited # Mn [39] COMBINING DOTTED GRAVE ACCENT..COMBINING LATIN SMALL LETTER Z
+1DFE..1DFF ; Inherited # Mn [2] COMBINING LEFT ARROWHEAD ABOVE..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
+200C..200D ; Inherited # Cf [2] ZERO WIDTH NON-JOINER..ZERO WIDTH JOINER
+20D0..20DC ; Inherited # Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE
+20DD..20E0 ; Inherited # Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH
+20E1 ; Inherited # Mn COMBINING LEFT RIGHT ARROW ABOVE
+20E2..20E4 ; Inherited # Me [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE
+20E5..20F0 ; Inherited # Mn [12] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING ASTERISK ABOVE
+302A..302F ; Inherited # Mn [6] IDEOGRAPHIC LEVEL TONE MARK..HANGUL DOUBLE DOT TONE MARK
+3099..309A ; Inherited # Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+FE00..FE0F ; Inherited # Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16
+FE20..FE26 ; Inherited # Mn [7] COMBINING LIGATURE LEFT HALF..COMBINING CONJOINING MACRON
+101FD ; Inherited # Mn PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE
+1D167..1D169 ; Inherited # Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3
+1D17B..1D182 ; Inherited # Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE
+1D185..1D18B ; Inherited # Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE
+1D1AA..1D1AD ; Inherited # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO
+E0100..E01EF ; Inherited # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
+
+# Total code points: 496
+
+# ================================================
+
+1700..170C ; Tagalog # Lo [13] TAGALOG LETTER A..TAGALOG LETTER YA
+170E..1711 ; Tagalog # Lo [4] TAGALOG LETTER LA..TAGALOG LETTER HA
+1712..1714 ; Tagalog # Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA
+
+# Total code points: 20
+
+# ================================================
+
+1720..1731 ; Hanunoo # Lo [18] HANUNOO LETTER A..HANUNOO LETTER HA
+1732..1734 ; Hanunoo # Mn [3] HANUNOO VOWEL SIGN I..HANUNOO SIGN PAMUDPOD
+
+# Total code points: 21
+
+# ================================================
+
+1740..1751 ; Buhid # Lo [18] BUHID LETTER A..BUHID LETTER HA
+1752..1753 ; Buhid # Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U
+
+# Total code points: 20
+
+# ================================================
+
+1760..176C ; Tagbanwa # Lo [13] TAGBANWA LETTER A..TAGBANWA LETTER YA
+176E..1770 ; Tagbanwa # Lo [3] TAGBANWA LETTER LA..TAGBANWA LETTER SA
+1772..1773 ; Tagbanwa # Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U
+
+# Total code points: 18
+
+# ================================================
+
+1900..191C ; Limbu # Lo [29] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER HA
+1920..1922 ; Limbu # Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U
+1923..1926 ; Limbu # Mc [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU
+1927..1928 ; Limbu # Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O
+1929..192B ; Limbu # Mc [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA
+1930..1931 ; Limbu # Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA
+1932 ; Limbu # Mn LIMBU SMALL LETTER ANUSVARA
+1933..1938 ; Limbu # Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA
+1939..193B ; Limbu # Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I
+1940 ; Limbu # So LIMBU SIGN LOO
+1944..1945 ; Limbu # Po [2] LIMBU EXCLAMATION MARK..LIMBU QUESTION MARK
+1946..194F ; Limbu # Nd [10] LIMBU DIGIT ZERO..LIMBU DIGIT NINE
+
+# Total code points: 66
+
+# ================================================
+
+1950..196D ; Tai_Le # Lo [30] TAI LE LETTER KA..TAI LE LETTER AI
+1970..1974 ; Tai_Le # Lo [5] TAI LE LETTER TONE-2..TAI LE LETTER TONE-6
+
+# Total code points: 35
+
+# ================================================
+
+10000..1000B ; Linear_B # Lo [12] LINEAR B SYLLABLE B008 A..LINEAR B SYLLABLE B046 JE
+1000D..10026 ; Linear_B # Lo [26] LINEAR B SYLLABLE B036 JO..LINEAR B SYLLABLE B032 QO
+10028..1003A ; Linear_B # Lo [19] LINEAR B SYLLABLE B060 RA..LINEAR B SYLLABLE B042 WO
+1003C..1003D ; Linear_B # Lo [2] LINEAR B SYLLABLE B017 ZA..LINEAR B SYLLABLE B074 ZE
+1003F..1004D ; Linear_B # Lo [15] LINEAR B SYLLABLE B020 ZO..LINEAR B SYLLABLE B091 TWO
+10050..1005D ; Linear_B # Lo [14] LINEAR B SYMBOL B018..LINEAR B SYMBOL B089
+10080..100FA ; Linear_B # Lo [123] LINEAR B IDEOGRAM B100 MAN..LINEAR B IDEOGRAM VESSEL B305
+
+# Total code points: 211
+
+# ================================================
+
+10380..1039D ; Ugaritic # Lo [30] UGARITIC LETTER ALPA..UGARITIC LETTER SSU
+1039F ; Ugaritic # Po UGARITIC WORD DIVIDER
+
+# Total code points: 31
+
+# ================================================
+
+10450..1047F ; Shavian # Lo [48] SHAVIAN LETTER PEEP..SHAVIAN LETTER YEW
+
+# Total code points: 48
+
+# ================================================
+
+10480..1049D ; Osmanya # Lo [30] OSMANYA LETTER ALEF..OSMANYA LETTER OO
+104A0..104A9 ; Osmanya # Nd [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE
+
+# Total code points: 40
+
+# ================================================
+
+10800..10805 ; Cypriot # Lo [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA
+10808 ; Cypriot # Lo CYPRIOT SYLLABLE JO
+1080A..10835 ; Cypriot # Lo [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO
+10837..10838 ; Cypriot # Lo [2] CYPRIOT SYLLABLE XA..CYPRIOT SYLLABLE XE
+1083C ; Cypriot # Lo CYPRIOT SYLLABLE ZA
+1083F ; Cypriot # Lo CYPRIOT SYLLABLE ZO
+
+# Total code points: 55
+
+# ================================================
+
+2800..28FF ; Braille # So [256] BRAILLE PATTERN BLANK..BRAILLE PATTERN DOTS-12345678
+
+# Total code points: 256
+
+# ================================================
+
+1A00..1A16 ; Buginese # Lo [23] BUGINESE LETTER KA..BUGINESE LETTER HA
+1A17..1A18 ; Buginese # Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U
+1A19..1A1B ; Buginese # Mc [3] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN AE
+1A1E..1A1F ; Buginese # Po [2] BUGINESE PALLAWA..BUGINESE END OF SECTION
+
+# Total code points: 30
+
+# ================================================
+
+03E2..03EF ; Coptic # L& [14] COPTIC CAPITAL LETTER SHEI..COPTIC SMALL LETTER DEI
+2C80..2CE4 ; Coptic # L& [101] COPTIC CAPITAL LETTER ALFA..COPTIC SYMBOL KAI
+2CE5..2CEA ; Coptic # So [6] COPTIC SYMBOL MI RO..COPTIC SYMBOL SHIMA SIMA
+2CF9..2CFC ; Coptic # Po [4] COPTIC OLD NUBIAN FULL STOP..COPTIC OLD NUBIAN VERSE DIVIDER
+2CFD ; Coptic # No COPTIC FRACTION ONE HALF
+2CFE..2CFF ; Coptic # Po [2] COPTIC FULL STOP..COPTIC MORPHOLOGICAL DIVIDER
+
+# Total code points: 128
+
+# ================================================
+
+1980..19A9 ; New_Tai_Lue # Lo [42] NEW TAI LUE LETTER HIGH QA..NEW TAI LUE LETTER LOW XVA
+19B0..19C0 ; New_Tai_Lue # Mc [17] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE VOWEL SIGN IY
+19C1..19C7 ; New_Tai_Lue # Lo [7] NEW TAI LUE LETTER FINAL V..NEW TAI LUE LETTER FINAL B
+19C8..19C9 ; New_Tai_Lue # Mc [2] NEW TAI LUE TONE MARK-1..NEW TAI LUE TONE MARK-2
+19D0..19D9 ; New_Tai_Lue # Nd [10] NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE
+19DE..19DF ; New_Tai_Lue # Po [2] NEW TAI LUE SIGN LAE..NEW TAI LUE SIGN LAEV
+
+# Total code points: 80
+
+# ================================================
+
+2C00..2C2E ; Glagolitic # L& [47] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE
+2C30..2C5E ; Glagolitic # L& [47] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE
+
+# Total code points: 94
+
+# ================================================
+
+2D30..2D65 ; Tifinagh # Lo [54] TIFINAGH LETTER YA..TIFINAGH LETTER YAZZ
+2D6F ; Tifinagh # Lm TIFINAGH MODIFIER LETTER LABIALIZATION MARK
+
+# Total code points: 55
+
+# ================================================
+
+A800..A801 ; Syloti_Nagri # Lo [2] SYLOTI NAGRI LETTER A..SYLOTI NAGRI LETTER I
+A802 ; Syloti_Nagri # Mn SYLOTI NAGRI SIGN DVISVARA
+A803..A805 ; Syloti_Nagri # Lo [3] SYLOTI NAGRI LETTER U..SYLOTI NAGRI LETTER O
+A806 ; Syloti_Nagri # Mn SYLOTI NAGRI SIGN HASANTA
+A807..A80A ; Syloti_Nagri # Lo [4] SYLOTI NAGRI LETTER KO..SYLOTI NAGRI LETTER GHO
+A80B ; Syloti_Nagri # Mn SYLOTI NAGRI SIGN ANUSVARA
+A80C..A822 ; Syloti_Nagri # Lo [23] SYLOTI NAGRI LETTER CO..SYLOTI NAGRI LETTER HO
+A823..A824 ; Syloti_Nagri # Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I
+A825..A826 ; Syloti_Nagri # Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E
+A827 ; Syloti_Nagri # Mc SYLOTI NAGRI VOWEL SIGN OO
+A828..A82B ; Syloti_Nagri # So [4] SYLOTI NAGRI POETRY MARK-1..SYLOTI NAGRI POETRY MARK-4
+
+# Total code points: 44
+
+# ================================================
+
+103A0..103C3 ; Old_Persian # Lo [36] OLD PERSIAN SIGN A..OLD PERSIAN SIGN HA
+103C8..103CF ; Old_Persian # Lo [8] OLD PERSIAN SIGN AURAMAZDAA..OLD PERSIAN SIGN BUUMISH
+103D0 ; Old_Persian # Po OLD PERSIAN WORD DIVIDER
+103D1..103D5 ; Old_Persian # Nl [5] OLD PERSIAN NUMBER ONE..OLD PERSIAN NUMBER HUNDRED
+
+# Total code points: 50
+
+# ================================================
+
+10A00 ; Kharoshthi # Lo KHAROSHTHI LETTER A
+10A01..10A03 ; Kharoshthi # Mn [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R
+10A05..10A06 ; Kharoshthi # Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O
+10A0C..10A0F ; Kharoshthi # Mn [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA
+10A10..10A13 ; Kharoshthi # Lo [4] KHAROSHTHI LETTER KA..KHAROSHTHI LETTER GHA
+10A15..10A17 ; Kharoshthi # Lo [3] KHAROSHTHI LETTER CA..KHAROSHTHI LETTER JA
+10A19..10A33 ; Kharoshthi # Lo [27] KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER TTTHA
+10A38..10A3A ; Kharoshthi # Mn [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW
+10A3F ; Kharoshthi # Mn KHAROSHTHI VIRAMA
+10A40..10A47 ; Kharoshthi # No [8] KHAROSHTHI DIGIT ONE..KHAROSHTHI NUMBER ONE THOUSAND
+10A50..10A58 ; Kharoshthi # Po [9] KHAROSHTHI PUNCTUATION DOT..KHAROSHTHI PUNCTUATION LINES
+
+# Total code points: 65
+
+# ================================================
+
+1B00..1B03 ; Balinese # Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG
+1B04 ; Balinese # Mc BALINESE SIGN BISAH
+1B05..1B33 ; Balinese # Lo [47] BALINESE LETTER AKARA..BALINESE LETTER HA
+1B34 ; Balinese # Mn BALINESE SIGN REREKAN
+1B35 ; Balinese # Mc BALINESE VOWEL SIGN TEDUNG
+1B36..1B3A ; Balinese # Mn [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA
+1B3B ; Balinese # Mc BALINESE VOWEL SIGN RA REPA TEDUNG
+1B3C ; Balinese # Mn BALINESE VOWEL SIGN LA LENGA
+1B3D..1B41 ; Balinese # Mc [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG
+1B42 ; Balinese # Mn BALINESE VOWEL SIGN PEPET
+1B43..1B44 ; Balinese # Mc [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG
+1B45..1B4B ; Balinese # Lo [7] BALINESE LETTER KAF SASAK..BALINESE LETTER ASYURA SASAK
+1B50..1B59 ; Balinese # Nd [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE
+1B5A..1B60 ; Balinese # Po [7] BALINESE PANTI..BALINESE PAMENENG
+1B61..1B6A ; Balinese # So [10] BALINESE MUSICAL SYMBOL DONG..BALINESE MUSICAL SYMBOL DANG GEDE
+1B6B..1B73 ; Balinese # Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG
+1B74..1B7C ; Balinese # So [9] BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG..BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING
+
+# Total code points: 121
+
+# ================================================
+
+12000..1236E ; Cuneiform # Lo [879] CUNEIFORM SIGN A..CUNEIFORM SIGN ZUM
+12400..12462 ; Cuneiform # Nl [99] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE QUARTER
+12470..12473 ; Cuneiform # Po [4] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL TRICOLON
+
+# Total code points: 982
+
+# ================================================
+
+10900..10915 ; Phoenician # Lo [22] PHOENICIAN LETTER ALF..PHOENICIAN LETTER TAU
+10916..10919 ; Phoenician # No [4] PHOENICIAN NUMBER ONE..PHOENICIAN NUMBER ONE HUNDRED
+1091F ; Phoenician # Po PHOENICIAN WORD SEPARATOR
+
+# Total code points: 27
+
+# ================================================
+
+A840..A873 ; Phags_Pa # Lo [52] PHAGS-PA LETTER KA..PHAGS-PA LETTER CANDRABINDU
+A874..A877 ; Phags_Pa # Po [4] PHAGS-PA SINGLE HEAD MARK..PHAGS-PA MARK DOUBLE SHAD
+
+# Total code points: 56
+
+# ================================================
+
+07C0..07C9 ; Nko # Nd [10] NKO DIGIT ZERO..NKO DIGIT NINE
+07CA..07EA ; Nko # Lo [33] NKO LETTER A..NKO LETTER JONA RA
+07EB..07F3 ; Nko # Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE
+07F4..07F5 ; Nko # Lm [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE
+07F6 ; Nko # So NKO SYMBOL OO DENNEN
+07F7..07F9 ; Nko # Po [3] NKO SYMBOL GBAKURUNEN..NKO EXCLAMATION MARK
+07FA ; Nko # Lm NKO LAJANYALAN
+
+# Total code points: 59
+
+# ================================================
+
+1B80..1B81 ; Sundanese # Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR
+1B82 ; Sundanese # Mc SUNDANESE SIGN PANGWISAD
+1B83..1BA0 ; Sundanese # Lo [30] SUNDANESE LETTER A..SUNDANESE LETTER HA
+1BA1 ; Sundanese # Mc SUNDANESE CONSONANT SIGN PAMINGKAL
+1BA2..1BA5 ; Sundanese # Mn [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU
+1BA6..1BA7 ; Sundanese # Mc [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG
+1BA8..1BA9 ; Sundanese # Mn [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG
+1BAA ; Sundanese # Mc SUNDANESE SIGN PAMAAEH
+1BAE..1BAF ; Sundanese # Lo [2] SUNDANESE LETTER KHA..SUNDANESE LETTER SYA
+1BB0..1BB9 ; Sundanese # Nd [10] SUNDANESE DIGIT ZERO..SUNDANESE DIGIT NINE
+
+# Total code points: 55
+
+# ================================================
+
+1C00..1C23 ; Lepcha # Lo [36] LEPCHA LETTER KA..LEPCHA LETTER A
+1C24..1C2B ; Lepcha # Mc [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU
+1C2C..1C33 ; Lepcha # Mn [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T
+1C34..1C35 ; Lepcha # Mc [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG
+1C36..1C37 ; Lepcha # Mn [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA
+1C3B..1C3F ; Lepcha # Po [5] LEPCHA PUNCTUATION TA-ROL..LEPCHA PUNCTUATION TSHOOK
+1C40..1C49 ; Lepcha # Nd [10] LEPCHA DIGIT ZERO..LEPCHA DIGIT NINE
+1C4D..1C4F ; Lepcha # Lo [3] LEPCHA LETTER TTA..LEPCHA LETTER DDA
+
+# Total code points: 74
+
+# ================================================
+
+1C50..1C59 ; Ol_Chiki # Nd [10] OL CHIKI DIGIT ZERO..OL CHIKI DIGIT NINE
+1C5A..1C77 ; Ol_Chiki # Lo [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH
+1C78..1C7D ; Ol_Chiki # Lm [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD
+1C7E..1C7F ; Ol_Chiki # Po [2] OL CHIKI PUNCTUATION MUCAAD..OL CHIKI PUNCTUATION DOUBLE MUCAAD
+
+# Total code points: 48
+
+# ================================================
+
+A500..A60B ; Vai # Lo [268] VAI SYLLABLE EE..VAI SYLLABLE NG
+A60C ; Vai # Lm VAI SYLLABLE LENGTHENER
+A60D..A60F ; Vai # Po [3] VAI COMMA..VAI QUESTION MARK
+A610..A61F ; Vai # Lo [16] VAI SYLLABLE NDOLE FA..VAI SYMBOL JONG
+A620..A629 ; Vai # Nd [10] VAI DIGIT ZERO..VAI DIGIT NINE
+A62A..A62B ; Vai # Lo [2] VAI SYLLABLE NDOLE MA..VAI SYLLABLE NDOLE DO
+
+# Total code points: 300
+
+# ================================================
+
+A880..A881 ; Saurashtra # Mc [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA
+A882..A8B3 ; Saurashtra # Lo [50] SAURASHTRA LETTER A..SAURASHTRA LETTER LLA
+A8B4..A8C3 ; Saurashtra # Mc [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU
+A8C4 ; Saurashtra # Mn SAURASHTRA SIGN VIRAMA
+A8CE..A8CF ; Saurashtra # Po [2] SAURASHTRA DANDA..SAURASHTRA DOUBLE DANDA
+A8D0..A8D9 ; Saurashtra # Nd [10] SAURASHTRA DIGIT ZERO..SAURASHTRA DIGIT NINE
+
+# Total code points: 81
+
+# ================================================
+
+A900..A909 ; Kayah_Li # Nd [10] KAYAH LI DIGIT ZERO..KAYAH LI DIGIT NINE
+A90A..A925 ; Kayah_Li # Lo [28] KAYAH LI LETTER KA..KAYAH LI LETTER OO
+A926..A92D ; Kayah_Li # Mn [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU
+A92E..A92F ; Kayah_Li # Po [2] KAYAH LI SIGN CWI..KAYAH LI SIGN SHYA
+
+# Total code points: 48
+
+# ================================================
+
+A930..A946 ; Rejang # Lo [23] REJANG LETTER KA..REJANG LETTER A
+A947..A951 ; Rejang # Mn [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R
+A952..A953 ; Rejang # Mc [2] REJANG CONSONANT SIGN H..REJANG VIRAMA
+A95F ; Rejang # Po REJANG SECTION MARK
+
+# Total code points: 37
+
+# ================================================
+
+10280..1029C ; Lycian # Lo [29] LYCIAN LETTER A..LYCIAN LETTER X
+
+# Total code points: 29
+
+# ================================================
+
+102A0..102D0 ; Carian # Lo [49] CARIAN LETTER A..CARIAN LETTER UUU3
+
+# Total code points: 49
+
+# ================================================
+
+10920..10939 ; Lydian # Lo [26] LYDIAN LETTER A..LYDIAN LETTER C
+1093F ; Lydian # Po LYDIAN TRIANGULAR MARK
+
+# Total code points: 27
+
+# ================================================
+
+AA00..AA28 ; Cham # Lo [41] CHAM LETTER A..CHAM LETTER HA
+AA29..AA2E ; Cham # Mn [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE
+AA2F..AA30 ; Cham # Mc [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI
+AA31..AA32 ; Cham # Mn [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE
+AA33..AA34 ; Cham # Mc [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA
+AA35..AA36 ; Cham # Mn [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA
+AA40..AA42 ; Cham # Lo [3] CHAM LETTER FINAL K..CHAM LETTER FINAL NG
+AA43 ; Cham # Mn CHAM CONSONANT SIGN FINAL NG
+AA44..AA4B ; Cham # Lo [8] CHAM LETTER FINAL CH..CHAM LETTER FINAL SS
+AA4C ; Cham # Mn CHAM CONSONANT SIGN FINAL M
+AA4D ; Cham # Mc CHAM CONSONANT SIGN FINAL H
+AA50..AA59 ; Cham # Nd [10] CHAM DIGIT ZERO..CHAM DIGIT NINE
+AA5C..AA5F ; Cham # Po [4] CHAM PUNCTUATION SPIRAL..CHAM PUNCTUATION TRIPLE DANDA
+
+# Total code points: 83
+
+# EOF
diff --git a/third_party/harfbuzz/contrib/tables/category-parse.py b/third_party/harfbuzz/contrib/tables/category-parse.py
new file mode 100644
index 0000000..6818c1d
--- /dev/null
+++ b/third_party/harfbuzz/contrib/tables/category-parse.py
@@ -0,0 +1,70 @@
+import sys
+from unicode_parse_common import *
+
+# http://www.unicode.org/Public/5.1.0/ucd/extracted/DerivedGeneralCategory.txt
+
+category_to_harfbuzz = {
+ 'Mn': 'HB_Mark_NonSpacing',
+ 'Mc': 'HB_Mark_SpacingCombining',
+ 'Me': 'HB_Mark_Enclosing',
+
+ 'Nd': 'HB_Number_DecimalDigit',
+ 'Nl': 'HB_Number_Letter',
+ 'No': 'HB_Number_Other',
+
+ 'Zs': 'HB_Separator_Space',
+ 'Zl': 'HB_Separator_Line',
+ 'Zp': 'HB_Separator_Paragraph',
+
+ 'Cc': 'HB_Other_Control',
+ 'Cf': 'HB_Other_Format',
+ 'Cs': 'HB_Other_Surrogate',
+ 'Co': 'HB_Other_PrivateUse',
+ 'Cn': 'HB_Other_NotAssigned',
+
+ 'Lu': 'HB_Letter_Uppercase',
+ 'Ll': 'HB_Letter_Lowercase',
+ 'Lt': 'HB_Letter_Titlecase',
+ 'Lm': 'HB_Letter_Modifier',
+ 'Lo': 'HB_Letter_Other',
+
+ 'Pc': 'HB_Punctuation_Connector',
+ 'Pd': 'HB_Punctuation_Dash',
+ 'Ps': 'HB_Punctuation_Open',
+ 'Pe': 'HB_Punctuation_Close',
+ 'Pi': 'HB_Punctuation_InitialQuote',
+ 'Pf': 'HB_Punctuation_FinalQuote',
+ 'Po': 'HB_Punctuation_Other',
+
+ 'Sm': 'HB_Symbol_Math',
+ 'Sc': 'HB_Symbol_Currency',
+ 'Sk': 'HB_Symbol_Modifier',
+ 'So': 'HB_Symbol_Other',
+}
+
+def main(infile, outfile):
+ ranges = unicode_file_parse(infile, category_to_harfbuzz)
+ ranges = sort_and_merge(ranges)
+
+ print >>outfile, '// Generated from Unicode script tables\n'
+ print >>outfile, '#ifndef CATEGORY_PROPERTIES_H_'
+ print >>outfile, '#define CATEGORY_PROPERTIES_H_\n'
+ print >>outfile, '#include <stdint.h>'
+ print >>outfile, '#include "harfbuzz-external.h"\n'
+ print >>outfile, 'struct category_property {'
+ print >>outfile, ' uint32_t range_start;'
+ print >>outfile, ' uint32_t range_end;'
+ print >>outfile, ' HB_CharCategory category;'
+ print >>outfile, '};\n'
+ print >>outfile, 'static const struct category_property category_properties[] = {'
+ for (start, end, value) in ranges:
+ print >>outfile, ' {0x%x, 0x%x, %s},' % (start, end, value)
+ print >>outfile, '};\n'
+ print >>outfile, 'static const unsigned category_properties_count = %d;\n' % len(ranges)
+ print >>outfile, '#endif // CATEGORY_PROPERTIES_H_'
+
+if __name__ == '__main__':
+ if len(sys.argv) != 3:
+ print 'Usage: %s <input .txt> <output .h>' % sys.argv[0]
+ else:
+ main(file(sys.argv[1], 'r'), file(sys.argv[2], 'w+'))
diff --git a/third_party/harfbuzz/contrib/tables/category-properties.h b/third_party/harfbuzz/contrib/tables/category-properties.h
new file mode 100644
index 0000000..3b7c7ca
--- /dev/null
+++ b/third_party/harfbuzz/contrib/tables/category-properties.h
@@ -0,0 +1,2869 @@
+// Generated from Unicode script tables
+
+#ifndef CATEGORY_PROPERTIES_H_
+#define CATEGORY_PROPERTIES_H_
+
+#include <stdint.h>
+#include "harfbuzz-external.h"
+
+struct category_property {
+ uint32_t range_start;
+ uint32_t range_end;
+ HB_CharCategory category;
+};
+
+static const struct category_property category_properties[] = {
+ {0x0, 0x1f, HB_Other_Control},
+ {0x20, 0x20, HB_Separator_Space},
+ {0x21, 0x23, HB_Punctuation_Other},
+ {0x24, 0x24, HB_Symbol_Currency},
+ {0x25, 0x27, HB_Punctuation_Other},
+ {0x28, 0x28, HB_Punctuation_Open},
+ {0x29, 0x29, HB_Punctuation_Close},
+ {0x2a, 0x2a, HB_Punctuation_Other},
+ {0x2b, 0x2b, HB_Symbol_Math},
+ {0x2c, 0x2c, HB_Punctuation_Other},
+ {0x2d, 0x2d, HB_Punctuation_Dash},
+ {0x2e, 0x2f, HB_Punctuation_Other},
+ {0x30, 0x39, HB_Number_DecimalDigit},
+ {0x3a, 0x3b, HB_Punctuation_Other},
+ {0x3c, 0x3e, HB_Symbol_Math},
+ {0x3f, 0x40, HB_Punctuation_Other},
+ {0x41, 0x5a, HB_Letter_Uppercase},
+ {0x5b, 0x5b, HB_Punctuation_Open},
+ {0x5c, 0x5c, HB_Punctuation_Other},
+ {0x5d, 0x5d, HB_Punctuation_Close},
+ {0x5e, 0x5e, HB_Symbol_Modifier},
+ {0x5f, 0x5f, HB_Punctuation_Connector},
+ {0x60, 0x60, HB_Symbol_Modifier},
+ {0x61, 0x7a, HB_Letter_Lowercase},
+ {0x7b, 0x7b, HB_Punctuation_Open},
+ {0x7c, 0x7c, HB_Symbol_Math},
+ {0x7d, 0x7d, HB_Punctuation_Close},
+ {0x7e, 0x7e, HB_Symbol_Math},
+ {0x7f, 0x9f, HB_Other_Control},
+ {0xa0, 0xa0, HB_Separator_Space},
+ {0xa1, 0xa1, HB_Punctuation_Other},
+ {0xa2, 0xa5, HB_Symbol_Currency},
+ {0xa6, 0xa7, HB_Symbol_Other},
+ {0xa8, 0xa8, HB_Symbol_Modifier},
+ {0xa9, 0xa9, HB_Symbol_Other},
+ {0xaa, 0xaa, HB_Letter_Lowercase},
+ {0xab, 0xab, HB_Punctuation_InitialQuote},
+ {0xac, 0xac, HB_Symbol_Math},
+ {0xad, 0xad, HB_Other_Format},
+ {0xae, 0xae, HB_Symbol_Other},
+ {0xaf, 0xaf, HB_Symbol_Modifier},
+ {0xb0, 0xb0, HB_Symbol_Other},
+ {0xb1, 0xb1, HB_Symbol_Math},
+ {0xb2, 0xb3, HB_Number_Other},
+ {0xb4, 0xb4, HB_Symbol_Modifier},
+ {0xb5, 0xb5, HB_Letter_Lowercase},
+ {0xb6, 0xb6, HB_Symbol_Other},
+ {0xb7, 0xb7, HB_Punctuation_Other},
+ {0xb8, 0xb8, HB_Symbol_Modifier},
+ {0xb9, 0xb9, HB_Number_Other},
+ {0xba, 0xba, HB_Letter_Lowercase},
+ {0xbb, 0xbb, HB_Punctuation_FinalQuote},
+ {0xbc, 0xbe, HB_Number_Other},
+ {0xbf, 0xbf, HB_Punctuation_Other},
+ {0xc0, 0xd6, HB_Letter_Uppercase},
+ {0xd7, 0xd7, HB_Symbol_Math},
+ {0xd8, 0xde, HB_Letter_Uppercase},
+ {0xdf, 0xf6, HB_Letter_Lowercase},
+ {0xf7, 0xf7, HB_Symbol_Math},
+ {0xf8, 0xff, HB_Letter_Lowercase},
+ {0x100, 0x100, HB_Letter_Uppercase},
+ {0x101, 0x101, HB_Letter_Lowercase},
+ {0x102, 0x102, HB_Letter_Uppercase},
+ {0x103, 0x103, HB_Letter_Lowercase},
+ {0x104, 0x104, HB_Letter_Uppercase},
+ {0x105, 0x105, HB_Letter_Lowercase},
+ {0x106, 0x106, HB_Letter_Uppercase},
+ {0x107, 0x107, HB_Letter_Lowercase},
+ {0x108, 0x108, HB_Letter_Uppercase},
+ {0x109, 0x109, HB_Letter_Lowercase},
+ {0x10a, 0x10a, HB_Letter_Uppercase},
+ {0x10b, 0x10b, HB_Letter_Lowercase},
+ {0x10c, 0x10c, HB_Letter_Uppercase},
+ {0x10d, 0x10d, HB_Letter_Lowercase},
+ {0x10e, 0x10e, HB_Letter_Uppercase},
+ {0x10f, 0x10f, HB_Letter_Lowercase},
+ {0x110, 0x110, HB_Letter_Uppercase},
+ {0x111, 0x111, HB_Letter_Lowercase},
+ {0x112, 0x112, HB_Letter_Uppercase},
+ {0x113, 0x113, HB_Letter_Lowercase},
+ {0x114, 0x114, HB_Letter_Uppercase},
+ {0x115, 0x115, HB_Letter_Lowercase},
+ {0x116, 0x116, HB_Letter_Uppercase},
+ {0x117, 0x117, HB_Letter_Lowercase},
+ {0x118, 0x118, HB_Letter_Uppercase},
+ {0x119, 0x119, HB_Letter_Lowercase},
+ {0x11a, 0x11a, HB_Letter_Uppercase},
+ {0x11b, 0x11b, HB_Letter_Lowercase},
+ {0x11c, 0x11c, HB_Letter_Uppercase},
+ {0x11d, 0x11d, HB_Letter_Lowercase},
+ {0x11e, 0x11e, HB_Letter_Uppercase},
+ {0x11f, 0x11f, HB_Letter_Lowercase},
+ {0x120, 0x120, HB_Letter_Uppercase},
+ {0x121, 0x121, HB_Letter_Lowercase},
+ {0x122, 0x122, HB_Letter_Uppercase},
+ {0x123, 0x123, HB_Letter_Lowercase},
+ {0x124, 0x124, HB_Letter_Uppercase},
+ {0x125, 0x125, HB_Letter_Lowercase},
+ {0x126, 0x126, HB_Letter_Uppercase},
+ {0x127, 0x127, HB_Letter_Lowercase},
+ {0x128, 0x128, HB_Letter_Uppercase},
+ {0x129, 0x129, HB_Letter_Lowercase},
+ {0x12a, 0x12a, HB_Letter_Uppercase},
+ {0x12b, 0x12b, HB_Letter_Lowercase},
+ {0x12c, 0x12c, HB_Letter_Uppercase},
+ {0x12d, 0x12d, HB_Letter_Lowercase},
+ {0x12e, 0x12e, HB_Letter_Uppercase},
+ {0x12f, 0x12f, HB_Letter_Lowercase},
+ {0x130, 0x130, HB_Letter_Uppercase},
+ {0x131, 0x131, HB_Letter_Lowercase},
+ {0x132, 0x132, HB_Letter_Uppercase},
+ {0x133, 0x133, HB_Letter_Lowercase},
+ {0x134, 0x134, HB_Letter_Uppercase},
+ {0x135, 0x135, HB_Letter_Lowercase},
+ {0x136, 0x136, HB_Letter_Uppercase},
+ {0x137, 0x138, HB_Letter_Lowercase},
+ {0x139, 0x139, HB_Letter_Uppercase},
+ {0x13a, 0x13a, HB_Letter_Lowercase},
+ {0x13b, 0x13b, HB_Letter_Uppercase},
+ {0x13c, 0x13c, HB_Letter_Lowercase},
+ {0x13d, 0x13d, HB_Letter_Uppercase},
+ {0x13e, 0x13e, HB_Letter_Lowercase},
+ {0x13f, 0x13f, HB_Letter_Uppercase},
+ {0x140, 0x140, HB_Letter_Lowercase},
+ {0x141, 0x141, HB_Letter_Uppercase},
+ {0x142, 0x142, HB_Letter_Lowercase},
+ {0x143, 0x143, HB_Letter_Uppercase},
+ {0x144, 0x144, HB_Letter_Lowercase},
+ {0x145, 0x145, HB_Letter_Uppercase},
+ {0x146, 0x146, HB_Letter_Lowercase},
+ {0x147, 0x147, HB_Letter_Uppercase},
+ {0x148, 0x149, HB_Letter_Lowercase},
+ {0x14a, 0x14a, HB_Letter_Uppercase},
+ {0x14b, 0x14b, HB_Letter_Lowercase},
+ {0x14c, 0x14c, HB_Letter_Uppercase},
+ {0x14d, 0x14d, HB_Letter_Lowercase},
+ {0x14e, 0x14e, HB_Letter_Uppercase},
+ {0x14f, 0x14f, HB_Letter_Lowercase},
+ {0x150, 0x150, HB_Letter_Uppercase},
+ {0x151, 0x151, HB_Letter_Lowercase},
+ {0x152, 0x152, HB_Letter_Uppercase},
+ {0x153, 0x153, HB_Letter_Lowercase},
+ {0x154, 0x154, HB_Letter_Uppercase},
+ {0x155, 0x155, HB_Letter_Lowercase},
+ {0x156, 0x156, HB_Letter_Uppercase},
+ {0x157, 0x157, HB_Letter_Lowercase},
+ {0x158, 0x158, HB_Letter_Uppercase},
+ {0x159, 0x159, HB_Letter_Lowercase},
+ {0x15a, 0x15a, HB_Letter_Uppercase},
+ {0x15b, 0x15b, HB_Letter_Lowercase},
+ {0x15c, 0x15c, HB_Letter_Uppercase},
+ {0x15d, 0x15d, HB_Letter_Lowercase},
+ {0x15e, 0x15e, HB_Letter_Uppercase},
+ {0x15f, 0x15f, HB_Letter_Lowercase},
+ {0x160, 0x160, HB_Letter_Uppercase},
+ {0x161, 0x161, HB_Letter_Lowercase},
+ {0x162, 0x162, HB_Letter_Uppercase},
+ {0x163, 0x163, HB_Letter_Lowercase},
+ {0x164, 0x164, HB_Letter_Uppercase},
+ {0x165, 0x165, HB_Letter_Lowercase},
+ {0x166, 0x166, HB_Letter_Uppercase},
+ {0x167, 0x167, HB_Letter_Lowercase},
+ {0x168, 0x168, HB_Letter_Uppercase},
+ {0x169, 0x169, HB_Letter_Lowercase},
+ {0x16a, 0x16a, HB_Letter_Uppercase},
+ {0x16b, 0x16b, HB_Letter_Lowercase},
+ {0x16c, 0x16c, HB_Letter_Uppercase},
+ {0x16d, 0x16d, HB_Letter_Lowercase},
+ {0x16e, 0x16e, HB_Letter_Uppercase},
+ {0x16f, 0x16f, HB_Letter_Lowercase},
+ {0x170, 0x170, HB_Letter_Uppercase},
+ {0x171, 0x171, HB_Letter_Lowercase},
+ {0x172, 0x172, HB_Letter_Uppercase},
+ {0x173, 0x173, HB_Letter_Lowercase},
+ {0x174, 0x174, HB_Letter_Uppercase},
+ {0x175, 0x175, HB_Letter_Lowercase},
+ {0x176, 0x176, HB_Letter_Uppercase},
+ {0x177, 0x177, HB_Letter_Lowercase},
+ {0x178, 0x179, HB_Letter_Uppercase},
+ {0x17a, 0x17a, HB_Letter_Lowercase},
+ {0x17b, 0x17b, HB_Letter_Uppercase},
+ {0x17c, 0x17c, HB_Letter_Lowercase},
+ {0x17d, 0x17d, HB_Letter_Uppercase},
+ {0x17e, 0x180, HB_Letter_Lowercase},
+ {0x181, 0x182, HB_Letter_Uppercase},
+ {0x183, 0x183, HB_Letter_Lowercase},
+ {0x184, 0x184, HB_Letter_Uppercase},
+ {0x185, 0x185, HB_Letter_Lowercase},
+ {0x186, 0x187, HB_Letter_Uppercase},
+ {0x188, 0x188, HB_Letter_Lowercase},
+ {0x189, 0x18b, HB_Letter_Uppercase},
+ {0x18c, 0x18d, HB_Letter_Lowercase},
+ {0x18e, 0x191, HB_Letter_Uppercase},
+ {0x192, 0x192, HB_Letter_Lowercase},
+ {0x193, 0x194, HB_Letter_Uppercase},
+ {0x195, 0x195, HB_Letter_Lowercase},
+ {0x196, 0x198, HB_Letter_Uppercase},
+ {0x199, 0x19b, HB_Letter_Lowercase},
+ {0x19c, 0x19d, HB_Letter_Uppercase},
+ {0x19e, 0x19e, HB_Letter_Lowercase},
+ {0x19f, 0x1a0, HB_Letter_Uppercase},
+ {0x1a1, 0x1a1, HB_Letter_Lowercase},
+ {0x1a2, 0x1a2, HB_Letter_Uppercase},
+ {0x1a3, 0x1a3, HB_Letter_Lowercase},
+ {0x1a4, 0x1a4, HB_Letter_Uppercase},
+ {0x1a5, 0x1a5, HB_Letter_Lowercase},
+ {0x1a6, 0x1a7, HB_Letter_Uppercase},
+ {0x1a8, 0x1a8, HB_Letter_Lowercase},
+ {0x1a9, 0x1a9, HB_Letter_Uppercase},
+ {0x1aa, 0x1ab, HB_Letter_Lowercase},
+ {0x1ac, 0x1ac, HB_Letter_Uppercase},
+ {0x1ad, 0x1ad, HB_Letter_Lowercase},
+ {0x1ae, 0x1af, HB_Letter_Uppercase},
+ {0x1b0, 0x1b0, HB_Letter_Lowercase},
+ {0x1b1, 0x1b3, HB_Letter_Uppercase},
+ {0x1b4, 0x1b4, HB_Letter_Lowercase},
+ {0x1b5, 0x1b5, HB_Letter_Uppercase},
+ {0x1b6, 0x1b6, HB_Letter_Lowercase},
+ {0x1b7, 0x1b8, HB_Letter_Uppercase},
+ {0x1b9, 0x1ba, HB_Letter_Lowercase},
+ {0x1bb, 0x1bb, HB_Letter_Other},
+ {0x1bc, 0x1bc, HB_Letter_Uppercase},
+ {0x1bd, 0x1bf, HB_Letter_Lowercase},
+ {0x1c0, 0x1c3, HB_Letter_Other},
+ {0x1c4, 0x1c4, HB_Letter_Uppercase},
+ {0x1c5, 0x1c5, HB_Letter_Titlecase},
+ {0x1c6, 0x1c6, HB_Letter_Lowercase},
+ {0x1c7, 0x1c7, HB_Letter_Uppercase},
+ {0x1c8, 0x1c8, HB_Letter_Titlecase},
+ {0x1c9, 0x1c9, HB_Letter_Lowercase},
+ {0x1ca, 0x1ca, HB_Letter_Uppercase},
+ {0x1cb, 0x1cb, HB_Letter_Titlecase},
+ {0x1cc, 0x1cc, HB_Letter_Lowercase},
+ {0x1cd, 0x1cd, HB_Letter_Uppercase},
+ {0x1ce, 0x1ce, HB_Letter_Lowercase},
+ {0x1cf, 0x1cf, HB_Letter_Uppercase},
+ {0x1d0, 0x1d0, HB_Letter_Lowercase},
+ {0x1d1, 0x1d1, HB_Letter_Uppercase},
+ {0x1d2, 0x1d2, HB_Letter_Lowercase},
+ {0x1d3, 0x1d3, HB_Letter_Uppercase},
+ {0x1d4, 0x1d4, HB_Letter_Lowercase},
+ {0x1d5, 0x1d5, HB_Letter_Uppercase},
+ {0x1d6, 0x1d6, HB_Letter_Lowercase},
+ {0x1d7, 0x1d7, HB_Letter_Uppercase},
+ {0x1d8, 0x1d8, HB_Letter_Lowercase},
+ {0x1d9, 0x1d9, HB_Letter_Uppercase},
+ {0x1da, 0x1da, HB_Letter_Lowercase},
+ {0x1db, 0x1db, HB_Letter_Uppercase},
+ {0x1dc, 0x1dd, HB_Letter_Lowercase},
+ {0x1de, 0x1de, HB_Letter_Uppercase},
+ {0x1df, 0x1df, HB_Letter_Lowercase},
+ {0x1e0, 0x1e0, HB_Letter_Uppercase},
+ {0x1e1, 0x1e1, HB_Letter_Lowercase},
+ {0x1e2, 0x1e2, HB_Letter_Uppercase},
+ {0x1e3, 0x1e3, HB_Letter_Lowercase},
+ {0x1e4, 0x1e4, HB_Letter_Uppercase},
+ {0x1e5, 0x1e5, HB_Letter_Lowercase},
+ {0x1e6, 0x1e6, HB_Letter_Uppercase},
+ {0x1e7, 0x1e7, HB_Letter_Lowercase},
+ {0x1e8, 0x1e8, HB_Letter_Uppercase},
+ {0x1e9, 0x1e9, HB_Letter_Lowercase},
+ {0x1ea, 0x1ea, HB_Letter_Uppercase},
+ {0x1eb, 0x1eb, HB_Letter_Lowercase},
+ {0x1ec, 0x1ec, HB_Letter_Uppercase},
+ {0x1ed, 0x1ed, HB_Letter_Lowercase},
+ {0x1ee, 0x1ee, HB_Letter_Uppercase},
+ {0x1ef, 0x1f0, HB_Letter_Lowercase},
+ {0x1f1, 0x1f1, HB_Letter_Uppercase},
+ {0x1f2, 0x1f2, HB_Letter_Titlecase},
+ {0x1f3, 0x1f3, HB_Letter_Lowercase},
+ {0x1f4, 0x1f4, HB_Letter_Uppercase},
+ {0x1f5, 0x1f5, HB_Letter_Lowercase},
+ {0x1f6, 0x1f8, HB_Letter_Uppercase},
+ {0x1f9, 0x1f9, HB_Letter_Lowercase},
+ {0x1fa, 0x1fa, HB_Letter_Uppercase},
+ {0x1fb, 0x1fb, HB_Letter_Lowercase},
+ {0x1fc, 0x1fc, HB_Letter_Uppercase},
+ {0x1fd, 0x1fd, HB_Letter_Lowercase},
+ {0x1fe, 0x1fe, HB_Letter_Uppercase},
+ {0x1ff, 0x1ff, HB_Letter_Lowercase},
+ {0x200, 0x200, HB_Letter_Uppercase},
+ {0x201, 0x201, HB_Letter_Lowercase},
+ {0x202, 0x202, HB_Letter_Uppercase},
+ {0x203, 0x203, HB_Letter_Lowercase},
+ {0x204, 0x204, HB_Letter_Uppercase},
+ {0x205, 0x205, HB_Letter_Lowercase},
+ {0x206, 0x206, HB_Letter_Uppercase},
+ {0x207, 0x207, HB_Letter_Lowercase},
+ {0x208, 0x208, HB_Letter_Uppercase},
+ {0x209, 0x209, HB_Letter_Lowercase},
+ {0x20a, 0x20a, HB_Letter_Uppercase},
+ {0x20b, 0x20b, HB_Letter_Lowercase},
+ {0x20c, 0x20c, HB_Letter_Uppercase},
+ {0x20d, 0x20d, HB_Letter_Lowercase},
+ {0x20e, 0x20e, HB_Letter_Uppercase},
+ {0x20f, 0x20f, HB_Letter_Lowercase},
+ {0x210, 0x210, HB_Letter_Uppercase},
+ {0x211, 0x211, HB_Letter_Lowercase},
+ {0x212, 0x212, HB_Letter_Uppercase},
+ {0x213, 0x213, HB_Letter_Lowercase},
+ {0x214, 0x214, HB_Letter_Uppercase},
+ {0x215, 0x215, HB_Letter_Lowercase},
+ {0x216, 0x216, HB_Letter_Uppercase},
+ {0x217, 0x217, HB_Letter_Lowercase},
+ {0x218, 0x218, HB_Letter_Uppercase},
+ {0x219, 0x219, HB_Letter_Lowercase},
+ {0x21a, 0x21a, HB_Letter_Uppercase},
+ {0x21b, 0x21b, HB_Letter_Lowercase},
+ {0x21c, 0x21c, HB_Letter_Uppercase},
+ {0x21d, 0x21d, HB_Letter_Lowercase},
+ {0x21e, 0x21e, HB_Letter_Uppercase},
+ {0x21f, 0x21f, HB_Letter_Lowercase},
+ {0x220, 0x220, HB_Letter_Uppercase},
+ {0x221, 0x221, HB_Letter_Lowercase},
+ {0x222, 0x222, HB_Letter_Uppercase},
+ {0x223, 0x223, HB_Letter_Lowercase},
+ {0x224, 0x224, HB_Letter_Uppercase},
+ {0x225, 0x225, HB_Letter_Lowercase},
+ {0x226, 0x226, HB_Letter_Uppercase},
+ {0x227, 0x227, HB_Letter_Lowercase},
+ {0x228, 0x228, HB_Letter_Uppercase},
+ {0x229, 0x229, HB_Letter_Lowercase},
+ {0x22a, 0x22a, HB_Letter_Uppercase},
+ {0x22b, 0x22b, HB_Letter_Lowercase},
+ {0x22c, 0x22c, HB_Letter_Uppercase},
+ {0x22d, 0x22d, HB_Letter_Lowercase},
+ {0x22e, 0x22e, HB_Letter_Uppercase},
+ {0x22f, 0x22f, HB_Letter_Lowercase},
+ {0x230, 0x230, HB_Letter_Uppercase},
+ {0x231, 0x231, HB_Letter_Lowercase},
+ {0x232, 0x232, HB_Letter_Uppercase},
+ {0x233, 0x239, HB_Letter_Lowercase},
+ {0x23a, 0x23b, HB_Letter_Uppercase},
+ {0x23c, 0x23c, HB_Letter_Lowercase},
+ {0x23d, 0x23e, HB_Letter_Uppercase},
+ {0x23f, 0x240, HB_Letter_Lowercase},
+ {0x241, 0x241, HB_Letter_Uppercase},
+ {0x242, 0x242, HB_Letter_Lowercase},
+ {0x243, 0x246, HB_Letter_Uppercase},
+ {0x247, 0x247, HB_Letter_Lowercase},
+ {0x248, 0x248, HB_Letter_Uppercase},
+ {0x249, 0x249, HB_Letter_Lowercase},
+ {0x24a, 0x24a, HB_Letter_Uppercase},
+ {0x24b, 0x24b, HB_Letter_Lowercase},
+ {0x24c, 0x24c, HB_Letter_Uppercase},
+ {0x24d, 0x24d, HB_Letter_Lowercase},
+ {0x24e, 0x24e, HB_Letter_Uppercase},
+ {0x24f, 0x293, HB_Letter_Lowercase},
+ {0x294, 0x294, HB_Letter_Other},
+ {0x295, 0x2af, HB_Letter_Lowercase},
+ {0x2b0, 0x2c1, HB_Letter_Modifier},
+ {0x2c2, 0x2c5, HB_Symbol_Modifier},
+ {0x2c6, 0x2d1, HB_Letter_Modifier},
+ {0x2d2, 0x2df, HB_Symbol_Modifier},
+ {0x2e0, 0x2e4, HB_Letter_Modifier},
+ {0x2e5, 0x2eb, HB_Symbol_Modifier},
+ {0x2ec, 0x2ec, HB_Letter_Modifier},
+ {0x2ed, 0x2ed, HB_Symbol_Modifier},
+ {0x2ee, 0x2ee, HB_Letter_Modifier},
+ {0x2ef, 0x2ff, HB_Symbol_Modifier},
+ {0x300, 0x36f, HB_Mark_NonSpacing},
+ {0x370, 0x370, HB_Letter_Uppercase},
+ {0x371, 0x371, HB_Letter_Lowercase},
+ {0x372, 0x372, HB_Letter_Uppercase},
+ {0x373, 0x373, HB_Letter_Lowercase},
+ {0x374, 0x374, HB_Letter_Modifier},
+ {0x375, 0x375, HB_Symbol_Modifier},
+ {0x376, 0x376, HB_Letter_Uppercase},
+ {0x377, 0x377, HB_Letter_Lowercase},
+ {0x378, 0x379, HB_Other_NotAssigned},
+ {0x37a, 0x37a, HB_Letter_Modifier},
+ {0x37b, 0x37d, HB_Letter_Lowercase},
+ {0x37e, 0x37e, HB_Punctuation_Other},
+ {0x37f, 0x383, HB_Other_NotAssigned},
+ {0x384, 0x385, HB_Symbol_Modifier},
+ {0x386, 0x386, HB_Letter_Uppercase},
+ {0x387, 0x387, HB_Punctuation_Other},
+ {0x388, 0x38a, HB_Letter_Uppercase},
+ {0x38b, 0x38b, HB_Other_NotAssigned},
+ {0x38c, 0x38c, HB_Letter_Uppercase},
+ {0x38d, 0x38d, HB_Other_NotAssigned},
+ {0x38e, 0x38f, HB_Letter_Uppercase},
+ {0x390, 0x390, HB_Letter_Lowercase},
+ {0x391, 0x3a1, HB_Letter_Uppercase},
+ {0x3a2, 0x3a2, HB_Other_NotAssigned},
+ {0x3a3, 0x3ab, HB_Letter_Uppercase},
+ {0x3ac, 0x3ce, HB_Letter_Lowercase},
+ {0x3cf, 0x3cf, HB_Letter_Uppercase},
+ {0x3d0, 0x3d1, HB_Letter_Lowercase},
+ {0x3d2, 0x3d4, HB_Letter_Uppercase},
+ {0x3d5, 0x3d7, HB_Letter_Lowercase},
+ {0x3d8, 0x3d8, HB_Letter_Uppercase},
+ {0x3d9, 0x3d9, HB_Letter_Lowercase},
+ {0x3da, 0x3da, HB_Letter_Uppercase},
+ {0x3db, 0x3db, HB_Letter_Lowercase},
+ {0x3dc, 0x3dc, HB_Letter_Uppercase},
+ {0x3dd, 0x3dd, HB_Letter_Lowercase},
+ {0x3de, 0x3de, HB_Letter_Uppercase},
+ {0x3df, 0x3df, HB_Letter_Lowercase},
+ {0x3e0, 0x3e0, HB_Letter_Uppercase},
+ {0x3e1, 0x3e1, HB_Letter_Lowercase},
+ {0x3e2, 0x3e2, HB_Letter_Uppercase},
+ {0x3e3, 0x3e3, HB_Letter_Lowercase},
+ {0x3e4, 0x3e4, HB_Letter_Uppercase},
+ {0x3e5, 0x3e5, HB_Letter_Lowercase},
+ {0x3e6, 0x3e6, HB_Letter_Uppercase},
+ {0x3e7, 0x3e7, HB_Letter_Lowercase},
+ {0x3e8, 0x3e8, HB_Letter_Uppercase},
+ {0x3e9, 0x3e9, HB_Letter_Lowercase},
+ {0x3ea, 0x3ea, HB_Letter_Uppercase},
+ {0x3eb, 0x3eb, HB_Letter_Lowercase},
+ {0x3ec, 0x3ec, HB_Letter_Uppercase},
+ {0x3ed, 0x3ed, HB_Letter_Lowercase},
+ {0x3ee, 0x3ee, HB_Letter_Uppercase},
+ {0x3ef, 0x3f3, HB_Letter_Lowercase},
+ {0x3f4, 0x3f4, HB_Letter_Uppercase},
+ {0x3f5, 0x3f5, HB_Letter_Lowercase},
+ {0x3f6, 0x3f6, HB_Symbol_Math},
+ {0x3f7, 0x3f7, HB_Letter_Uppercase},
+ {0x3f8, 0x3f8, HB_Letter_Lowercase},
+ {0x3f9, 0x3fa, HB_Letter_Uppercase},
+ {0x3fb, 0x3fc, HB_Letter_Lowercase},
+ {0x3fd, 0x42f, HB_Letter_Uppercase},
+ {0x430, 0x45f, HB_Letter_Lowercase},
+ {0x460, 0x460, HB_Letter_Uppercase},
+ {0x461, 0x461, HB_Letter_Lowercase},
+ {0x462, 0x462, HB_Letter_Uppercase},
+ {0x463, 0x463, HB_Letter_Lowercase},
+ {0x464, 0x464, HB_Letter_Uppercase},
+ {0x465, 0x465, HB_Letter_Lowercase},
+ {0x466, 0x466, HB_Letter_Uppercase},
+ {0x467, 0x467, HB_Letter_Lowercase},
+ {0x468, 0x468, HB_Letter_Uppercase},
+ {0x469, 0x469, HB_Letter_Lowercase},
+ {0x46a, 0x46a, HB_Letter_Uppercase},
+ {0x46b, 0x46b, HB_Letter_Lowercase},
+ {0x46c, 0x46c, HB_Letter_Uppercase},
+ {0x46d, 0x46d, HB_Letter_Lowercase},
+ {0x46e, 0x46e, HB_Letter_Uppercase},
+ {0x46f, 0x46f, HB_Letter_Lowercase},
+ {0x470, 0x470, HB_Letter_Uppercase},
+ {0x471, 0x471, HB_Letter_Lowercase},
+ {0x472, 0x472, HB_Letter_Uppercase},
+ {0x473, 0x473, HB_Letter_Lowercase},
+ {0x474, 0x474, HB_Letter_Uppercase},
+ {0x475, 0x475, HB_Letter_Lowercase},
+ {0x476, 0x476, HB_Letter_Uppercase},
+ {0x477, 0x477, HB_Letter_Lowercase},
+ {0x478, 0x478, HB_Letter_Uppercase},
+ {0x479, 0x479, HB_Letter_Lowercase},
+ {0x47a, 0x47a, HB_Letter_Uppercase},
+ {0x47b, 0x47b, HB_Letter_Lowercase},
+ {0x47c, 0x47c, HB_Letter_Uppercase},
+ {0x47d, 0x47d, HB_Letter_Lowercase},
+ {0x47e, 0x47e, HB_Letter_Uppercase},
+ {0x47f, 0x47f, HB_Letter_Lowercase},
+ {0x480, 0x480, HB_Letter_Uppercase},
+ {0x481, 0x481, HB_Letter_Lowercase},
+ {0x482, 0x482, HB_Symbol_Other},
+ {0x483, 0x487, HB_Mark_NonSpacing},
+ {0x488, 0x489, HB_Mark_Enclosing},
+ {0x48a, 0x48a, HB_Letter_Uppercase},
+ {0x48b, 0x48b, HB_Letter_Lowercase},
+ {0x48c, 0x48c, HB_Letter_Uppercase},
+ {0x48d, 0x48d, HB_Letter_Lowercase},
+ {0x48e, 0x48e, HB_Letter_Uppercase},
+ {0x48f, 0x48f, HB_Letter_Lowercase},
+ {0x490, 0x490, HB_Letter_Uppercase},
+ {0x491, 0x491, HB_Letter_Lowercase},
+ {0x492, 0x492, HB_Letter_Uppercase},
+ {0x493, 0x493, HB_Letter_Lowercase},
+ {0x494, 0x494, HB_Letter_Uppercase},
+ {0x495, 0x495, HB_Letter_Lowercase},
+ {0x496, 0x496, HB_Letter_Uppercase},
+ {0x497, 0x497, HB_Letter_Lowercase},
+ {0x498, 0x498, HB_Letter_Uppercase},
+ {0x499, 0x499, HB_Letter_Lowercase},
+ {0x49a, 0x49a, HB_Letter_Uppercase},
+ {0x49b, 0x49b, HB_Letter_Lowercase},
+ {0x49c, 0x49c, HB_Letter_Uppercase},
+ {0x49d, 0x49d, HB_Letter_Lowercase},
+ {0x49e, 0x49e, HB_Letter_Uppercase},
+ {0x49f, 0x49f, HB_Letter_Lowercase},
+ {0x4a0, 0x4a0, HB_Letter_Uppercase},
+ {0x4a1, 0x4a1, HB_Letter_Lowercase},
+ {0x4a2, 0x4a2, HB_Letter_Uppercase},
+ {0x4a3, 0x4a3, HB_Letter_Lowercase},
+ {0x4a4, 0x4a4, HB_Letter_Uppercase},
+ {0x4a5, 0x4a5, HB_Letter_Lowercase},
+ {0x4a6, 0x4a6, HB_Letter_Uppercase},
+ {0x4a7, 0x4a7, HB_Letter_Lowercase},
+ {0x4a8, 0x4a8, HB_Letter_Uppercase},
+ {0x4a9, 0x4a9, HB_Letter_Lowercase},
+ {0x4aa, 0x4aa, HB_Letter_Uppercase},
+ {0x4ab, 0x4ab, HB_Letter_Lowercase},
+ {0x4ac, 0x4ac, HB_Letter_Uppercase},
+ {0x4ad, 0x4ad, HB_Letter_Lowercase},
+ {0x4ae, 0x4ae, HB_Letter_Uppercase},
+ {0x4af, 0x4af, HB_Letter_Lowercase},
+ {0x4b0, 0x4b0, HB_Letter_Uppercase},
+ {0x4b1, 0x4b1, HB_Letter_Lowercase},
+ {0x4b2, 0x4b2, HB_Letter_Uppercase},
+ {0x4b3, 0x4b3, HB_Letter_Lowercase},
+ {0x4b4, 0x4b4, HB_Letter_Uppercase},
+ {0x4b5, 0x4b5, HB_Letter_Lowercase},
+ {0x4b6, 0x4b6, HB_Letter_Uppercase},
+ {0x4b7, 0x4b7, HB_Letter_Lowercase},
+ {0x4b8, 0x4b8, HB_Letter_Uppercase},
+ {0x4b9, 0x4b9, HB_Letter_Lowercase},
+ {0x4ba, 0x4ba, HB_Letter_Uppercase},
+ {0x4bb, 0x4bb, HB_Letter_Lowercase},
+ {0x4bc, 0x4bc, HB_Letter_Uppercase},
+ {0x4bd, 0x4bd, HB_Letter_Lowercase},
+ {0x4be, 0x4be, HB_Letter_Uppercase},
+ {0x4bf, 0x4bf, HB_Letter_Lowercase},
+ {0x4c0, 0x4c1, HB_Letter_Uppercase},
+ {0x4c2, 0x4c2, HB_Letter_Lowercase},
+ {0x4c3, 0x4c3, HB_Letter_Uppercase},
+ {0x4c4, 0x4c4, HB_Letter_Lowercase},
+ {0x4c5, 0x4c5, HB_Letter_Uppercase},
+ {0x4c6, 0x4c6, HB_Letter_Lowercase},
+ {0x4c7, 0x4c7, HB_Letter_Uppercase},
+ {0x4c8, 0x4c8, HB_Letter_Lowercase},
+ {0x4c9, 0x4c9, HB_Letter_Uppercase},
+ {0x4ca, 0x4ca, HB_Letter_Lowercase},
+ {0x4cb, 0x4cb, HB_Letter_Uppercase},
+ {0x4cc, 0x4cc, HB_Letter_Lowercase},
+ {0x4cd, 0x4cd, HB_Letter_Uppercase},
+ {0x4ce, 0x4cf, HB_Letter_Lowercase},
+ {0x4d0, 0x4d0, HB_Letter_Uppercase},
+ {0x4d1, 0x4d1, HB_Letter_Lowercase},
+ {0x4d2, 0x4d2, HB_Letter_Uppercase},
+ {0x4d3, 0x4d3, HB_Letter_Lowercase},
+ {0x4d4, 0x4d4, HB_Letter_Uppercase},
+ {0x4d5, 0x4d5, HB_Letter_Lowercase},
+ {0x4d6, 0x4d6, HB_Letter_Uppercase},
+ {0x4d7, 0x4d7, HB_Letter_Lowercase},
+ {0x4d8, 0x4d8, HB_Letter_Uppercase},
+ {0x4d9, 0x4d9, HB_Letter_Lowercase},
+ {0x4da, 0x4da, HB_Letter_Uppercase},
+ {0x4db, 0x4db, HB_Letter_Lowercase},
+ {0x4dc, 0x4dc, HB_Letter_Uppercase},
+ {0x4dd, 0x4dd, HB_Letter_Lowercase},
+ {0x4de, 0x4de, HB_Letter_Uppercase},
+ {0x4df, 0x4df, HB_Letter_Lowercase},
+ {0x4e0, 0x4e0, HB_Letter_Uppercase},
+ {0x4e1, 0x4e1, HB_Letter_Lowercase},
+ {0x4e2, 0x4e2, HB_Letter_Uppercase},
+ {0x4e3, 0x4e3, HB_Letter_Lowercase},
+ {0x4e4, 0x4e4, HB_Letter_Uppercase},
+ {0x4e5, 0x4e5, HB_Letter_Lowercase},
+ {0x4e6, 0x4e6, HB_Letter_Uppercase},
+ {0x4e7, 0x4e7, HB_Letter_Lowercase},
+ {0x4e8, 0x4e8, HB_Letter_Uppercase},
+ {0x4e9, 0x4e9, HB_Letter_Lowercase},
+ {0x4ea, 0x4ea, HB_Letter_Uppercase},
+ {0x4eb, 0x4eb, HB_Letter_Lowercase},
+ {0x4ec, 0x4ec, HB_Letter_Uppercase},
+ {0x4ed, 0x4ed, HB_Letter_Lowercase},
+ {0x4ee, 0x4ee, HB_Letter_Uppercase},
+ {0x4ef, 0x4ef, HB_Letter_Lowercase},
+ {0x4f0, 0x4f0, HB_Letter_Uppercase},
+ {0x4f1, 0x4f1, HB_Letter_Lowercase},
+ {0x4f2, 0x4f2, HB_Letter_Uppercase},
+ {0x4f3, 0x4f3, HB_Letter_Lowercase},
+ {0x4f4, 0x4f4, HB_Letter_Uppercase},
+ {0x4f5, 0x4f5, HB_Letter_Lowercase},
+ {0x4f6, 0x4f6, HB_Letter_Uppercase},
+ {0x4f7, 0x4f7, HB_Letter_Lowercase},
+ {0x4f8, 0x4f8, HB_Letter_Uppercase},
+ {0x4f9, 0x4f9, HB_Letter_Lowercase},
+ {0x4fa, 0x4fa, HB_Letter_Uppercase},
+ {0x4fb, 0x4fb, HB_Letter_Lowercase},
+ {0x4fc, 0x4fc, HB_Letter_Uppercase},
+ {0x4fd, 0x4fd, HB_Letter_Lowercase},
+ {0x4fe, 0x4fe, HB_Letter_Uppercase},
+ {0x4ff, 0x4ff, HB_Letter_Lowercase},
+ {0x500, 0x500, HB_Letter_Uppercase},
+ {0x501, 0x501, HB_Letter_Lowercase},
+ {0x502, 0x502, HB_Letter_Uppercase},
+ {0x503, 0x503, HB_Letter_Lowercase},
+ {0x504, 0x504, HB_Letter_Uppercase},
+ {0x505, 0x505, HB_Letter_Lowercase},
+ {0x506, 0x506, HB_Letter_Uppercase},
+ {0x507, 0x507, HB_Letter_Lowercase},
+ {0x508, 0x508, HB_Letter_Uppercase},
+ {0x509, 0x509, HB_Letter_Lowercase},
+ {0x50a, 0x50a, HB_Letter_Uppercase},
+ {0x50b, 0x50b, HB_Letter_Lowercase},
+ {0x50c, 0x50c, HB_Letter_Uppercase},
+ {0x50d, 0x50d, HB_Letter_Lowercase},
+ {0x50e, 0x50e, HB_Letter_Uppercase},
+ {0x50f, 0x50f, HB_Letter_Lowercase},
+ {0x510, 0x510, HB_Letter_Uppercase},
+ {0x511, 0x511, HB_Letter_Lowercase},
+ {0x512, 0x512, HB_Letter_Uppercase},
+ {0x513, 0x513, HB_Letter_Lowercase},
+ {0x514, 0x514, HB_Letter_Uppercase},
+ {0x515, 0x515, HB_Letter_Lowercase},
+ {0x516, 0x516, HB_Letter_Uppercase},
+ {0x517, 0x517, HB_Letter_Lowercase},
+ {0x518, 0x518, HB_Letter_Uppercase},
+ {0x519, 0x519, HB_Letter_Lowercase},
+ {0x51a, 0x51a, HB_Letter_Uppercase},
+ {0x51b, 0x51b, HB_Letter_Lowercase},
+ {0x51c, 0x51c, HB_Letter_Uppercase},
+ {0x51d, 0x51d, HB_Letter_Lowercase},
+ {0x51e, 0x51e, HB_Letter_Uppercase},
+ {0x51f, 0x51f, HB_Letter_Lowercase},
+ {0x520, 0x520, HB_Letter_Uppercase},
+ {0x521, 0x521, HB_Letter_Lowercase},
+ {0x522, 0x522, HB_Letter_Uppercase},
+ {0x523, 0x523, HB_Letter_Lowercase},
+ {0x524, 0x530, HB_Other_NotAssigned},
+ {0x531, 0x556, HB_Letter_Uppercase},
+ {0x557, 0x558, HB_Other_NotAssigned},
+ {0x559, 0x559, HB_Letter_Modifier},
+ {0x55a, 0x55f, HB_Punctuation_Other},
+ {0x560, 0x560, HB_Other_NotAssigned},
+ {0x561, 0x587, HB_Letter_Lowercase},
+ {0x588, 0x588, HB_Other_NotAssigned},
+ {0x589, 0x589, HB_Punctuation_Other},
+ {0x58a, 0x58a, HB_Punctuation_Dash},
+ {0x58b, 0x590, HB_Other_NotAssigned},
+ {0x591, 0x5bd, HB_Mark_NonSpacing},
+ {0x5be, 0x5be, HB_Punctuation_Dash},
+ {0x5bf, 0x5bf, HB_Mark_NonSpacing},
+ {0x5c0, 0x5c0, HB_Punctuation_Other},
+ {0x5c1, 0x5c2, HB_Mark_NonSpacing},
+ {0x5c3, 0x5c3, HB_Punctuation_Other},
+ {0x5c4, 0x5c5, HB_Mark_NonSpacing},
+ {0x5c6, 0x5c6, HB_Punctuation_Other},
+ {0x5c7, 0x5c7, HB_Mark_NonSpacing},
+ {0x5c8, 0x5cf, HB_Other_NotAssigned},
+ {0x5d0, 0x5ea, HB_Letter_Other},
+ {0x5eb, 0x5ef, HB_Other_NotAssigned},
+ {0x5f0, 0x5f2, HB_Letter_Other},
+ {0x5f3, 0x5f4, HB_Punctuation_Other},
+ {0x5f5, 0x5ff, HB_Other_NotAssigned},
+ {0x600, 0x603, HB_Other_Format},
+ {0x604, 0x605, HB_Other_NotAssigned},
+ {0x606, 0x608, HB_Symbol_Math},
+ {0x609, 0x60a, HB_Punctuation_Other},
+ {0x60b, 0x60b, HB_Symbol_Currency},
+ {0x60c, 0x60d, HB_Punctuation_Other},
+ {0x60e, 0x60f, HB_Symbol_Other},
+ {0x610, 0x61a, HB_Mark_NonSpacing},
+ {0x61b, 0x61b, HB_Punctuation_Other},
+ {0x61c, 0x61d, HB_Other_NotAssigned},
+ {0x61e, 0x61f, HB_Punctuation_Other},
+ {0x620, 0x620, HB_Other_NotAssigned},
+ {0x621, 0x63f, HB_Letter_Other},
+ {0x640, 0x640, HB_Letter_Modifier},
+ {0x641, 0x64a, HB_Letter_Other},
+ {0x64b, 0x65e, HB_Mark_NonSpacing},
+ {0x65f, 0x65f, HB_Other_NotAssigned},
+ {0x660, 0x669, HB_Number_DecimalDigit},
+ {0x66a, 0x66d, HB_Punctuation_Other},
+ {0x66e, 0x66f, HB_Letter_Other},
+ {0x670, 0x670, HB_Mark_NonSpacing},
+ {0x671, 0x6d3, HB_Letter_Other},
+ {0x6d4, 0x6d4, HB_Punctuation_Other},
+ {0x6d5, 0x6d5, HB_Letter_Other},
+ {0x6d6, 0x6dc, HB_Mark_NonSpacing},
+ {0x6dd, 0x6dd, HB_Other_Format},
+ {0x6de, 0x6de, HB_Mark_Enclosing},
+ {0x6df, 0x6e4, HB_Mark_NonSpacing},
+ {0x6e5, 0x6e6, HB_Letter_Modifier},
+ {0x6e7, 0x6e8, HB_Mark_NonSpacing},
+ {0x6e9, 0x6e9, HB_Symbol_Other},
+ {0x6ea, 0x6ed, HB_Mark_NonSpacing},
+ {0x6ee, 0x6ef, HB_Letter_Other},
+ {0x6f0, 0x6f9, HB_Number_DecimalDigit},
+ {0x6fa, 0x6fc, HB_Letter_Other},
+ {0x6fd, 0x6fe, HB_Symbol_Other},
+ {0x6ff, 0x6ff, HB_Letter_Other},
+ {0x700, 0x70d, HB_Punctuation_Other},
+ {0x70e, 0x70e, HB_Other_NotAssigned},
+ {0x70f, 0x70f, HB_Other_Format},
+ {0x710, 0x710, HB_Letter_Other},
+ {0x711, 0x711, HB_Mark_NonSpacing},
+ {0x712, 0x72f, HB_Letter_Other},
+ {0x730, 0x74a, HB_Mark_NonSpacing},
+ {0x74b, 0x74c, HB_Other_NotAssigned},
+ {0x74d, 0x7a5, HB_Letter_Other},
+ {0x7a6, 0x7b0, HB_Mark_NonSpacing},
+ {0x7b1, 0x7b1, HB_Letter_Other},
+ {0x7b2, 0x7bf, HB_Other_NotAssigned},
+ {0x7c0, 0x7c9, HB_Number_DecimalDigit},
+ {0x7ca, 0x7ea, HB_Letter_Other},
+ {0x7eb, 0x7f3, HB_Mark_NonSpacing},
+ {0x7f4, 0x7f5, HB_Letter_Modifier},
+ {0x7f6, 0x7f6, HB_Symbol_Other},
+ {0x7f7, 0x7f9, HB_Punctuation_Other},
+ {0x7fa, 0x7fa, HB_Letter_Modifier},
+ {0x7fb, 0x900, HB_Other_NotAssigned},
+ {0x901, 0x902, HB_Mark_NonSpacing},
+ {0x903, 0x903, HB_Mark_SpacingCombining},
+ {0x904, 0x939, HB_Letter_Other},
+ {0x93a, 0x93b, HB_Other_NotAssigned},
+ {0x93c, 0x93c, HB_Mark_NonSpacing},
+ {0x93d, 0x93d, HB_Letter_Other},
+ {0x93e, 0x940, HB_Mark_SpacingCombining},
+ {0x941, 0x948, HB_Mark_NonSpacing},
+ {0x949, 0x94c, HB_Mark_SpacingCombining},
+ {0x94d, 0x94d, HB_Mark_NonSpacing},
+ {0x94e, 0x94f, HB_Other_NotAssigned},
+ {0x950, 0x950, HB_Letter_Other},
+ {0x951, 0x954, HB_Mark_NonSpacing},
+ {0x955, 0x957, HB_Other_NotAssigned},
+ {0x958, 0x961, HB_Letter_Other},
+ {0x962, 0x963, HB_Mark_NonSpacing},
+ {0x964, 0x965, HB_Punctuation_Other},
+ {0x966, 0x96f, HB_Number_DecimalDigit},
+ {0x970, 0x970, HB_Punctuation_Other},
+ {0x971, 0x971, HB_Letter_Modifier},
+ {0x972, 0x972, HB_Letter_Other},
+ {0x973, 0x97a, HB_Other_NotAssigned},
+ {0x97b, 0x97f, HB_Letter_Other},
+ {0x980, 0x980, HB_Other_NotAssigned},
+ {0x981, 0x981, HB_Mark_NonSpacing},
+ {0x982, 0x983, HB_Mark_SpacingCombining},
+ {0x984, 0x984, HB_Other_NotAssigned},
+ {0x985, 0x98c, HB_Letter_Other},
+ {0x98d, 0x98e, HB_Other_NotAssigned},
+ {0x98f, 0x990, HB_Letter_Other},
+ {0x991, 0x992, HB_Other_NotAssigned},
+ {0x993, 0x9a8, HB_Letter_Other},
+ {0x9a9, 0x9a9, HB_Other_NotAssigned},
+ {0x9aa, 0x9b0, HB_Letter_Other},
+ {0x9b1, 0x9b1, HB_Other_NotAssigned},
+ {0x9b2, 0x9b2, HB_Letter_Other},
+ {0x9b3, 0x9b5, HB_Other_NotAssigned},
+ {0x9b6, 0x9b9, HB_Letter_Other},
+ {0x9ba, 0x9bb, HB_Other_NotAssigned},
+ {0x9bc, 0x9bc, HB_Mark_NonSpacing},
+ {0x9bd, 0x9bd, HB_Letter_Other},
+ {0x9be, 0x9c0, HB_Mark_SpacingCombining},
+ {0x9c1, 0x9c4, HB_Mark_NonSpacing},
+ {0x9c5, 0x9c6, HB_Other_NotAssigned},
+ {0x9c7, 0x9c8, HB_Mark_SpacingCombining},
+ {0x9c9, 0x9ca, HB_Other_NotAssigned},
+ {0x9cb, 0x9cc, HB_Mark_SpacingCombining},
+ {0x9cd, 0x9cd, HB_Mark_NonSpacing},
+ {0x9ce, 0x9ce, HB_Letter_Other},
+ {0x9cf, 0x9d6, HB_Other_NotAssigned},
+ {0x9d7, 0x9d7, HB_Mark_SpacingCombining},
+ {0x9d8, 0x9db, HB_Other_NotAssigned},
+ {0x9dc, 0x9dd, HB_Letter_Other},
+ {0x9de, 0x9de, HB_Other_NotAssigned},
+ {0x9df, 0x9e1, HB_Letter_Other},
+ {0x9e2, 0x9e3, HB_Mark_NonSpacing},
+ {0x9e4, 0x9e5, HB_Other_NotAssigned},
+ {0x9e6, 0x9ef, HB_Number_DecimalDigit},
+ {0x9f0, 0x9f1, HB_Letter_Other},
+ {0x9f2, 0x9f3, HB_Symbol_Currency},
+ {0x9f4, 0x9f9, HB_Number_Other},
+ {0x9fa, 0x9fa, HB_Symbol_Other},
+ {0x9fb, 0xa00, HB_Other_NotAssigned},
+ {0xa01, 0xa02, HB_Mark_NonSpacing},
+ {0xa03, 0xa03, HB_Mark_SpacingCombining},
+ {0xa04, 0xa04, HB_Other_NotAssigned},
+ {0xa05, 0xa0a, HB_Letter_Other},
+ {0xa0b, 0xa0e, HB_Other_NotAssigned},
+ {0xa0f, 0xa10, HB_Letter_Other},
+ {0xa11, 0xa12, HB_Other_NotAssigned},
+ {0xa13, 0xa28, HB_Letter_Other},
+ {0xa29, 0xa29, HB_Other_NotAssigned},
+ {0xa2a, 0xa30, HB_Letter_Other},
+ {0xa31, 0xa31, HB_Other_NotAssigned},
+ {0xa32, 0xa33, HB_Letter_Other},
+ {0xa34, 0xa34, HB_Other_NotAssigned},
+ {0xa35, 0xa36, HB_Letter_Other},
+ {0xa37, 0xa37, HB_Other_NotAssigned},
+ {0xa38, 0xa39, HB_Letter_Other},
+ {0xa3a, 0xa3b, HB_Other_NotAssigned},
+ {0xa3c, 0xa3c, HB_Mark_NonSpacing},
+ {0xa3d, 0xa3d, HB_Other_NotAssigned},
+ {0xa3e, 0xa40, HB_Mark_SpacingCombining},
+ {0xa41, 0xa42, HB_Mark_NonSpacing},
+ {0xa43, 0xa46, HB_Other_NotAssigned},
+ {0xa47, 0xa48, HB_Mark_NonSpacing},
+ {0xa49, 0xa4a, HB_Other_NotAssigned},
+ {0xa4b, 0xa4d, HB_Mark_NonSpacing},
+ {0xa4e, 0xa50, HB_Other_NotAssigned},
+ {0xa51, 0xa51, HB_Mark_NonSpacing},
+ {0xa52, 0xa58, HB_Other_NotAssigned},
+ {0xa59, 0xa5c, HB_Letter_Other},
+ {0xa5d, 0xa5d, HB_Other_NotAssigned},
+ {0xa5e, 0xa5e, HB_Letter_Other},
+ {0xa5f, 0xa65, HB_Other_NotAssigned},
+ {0xa66, 0xa6f, HB_Number_DecimalDigit},
+ {0xa70, 0xa71, HB_Mark_NonSpacing},
+ {0xa72, 0xa74, HB_Letter_Other},
+ {0xa75, 0xa75, HB_Mark_NonSpacing},
+ {0xa76, 0xa80, HB_Other_NotAssigned},
+ {0xa81, 0xa82, HB_Mark_NonSpacing},
+ {0xa83, 0xa83, HB_Mark_SpacingCombining},
+ {0xa84, 0xa84, HB_Other_NotAssigned},
+ {0xa85, 0xa8d, HB_Letter_Other},
+ {0xa8e, 0xa8e, HB_Other_NotAssigned},
+ {0xa8f, 0xa91, HB_Letter_Other},
+ {0xa92, 0xa92, HB_Other_NotAssigned},
+ {0xa93, 0xaa8, HB_Letter_Other},
+ {0xaa9, 0xaa9, HB_Other_NotAssigned},
+ {0xaaa, 0xab0, HB_Letter_Other},
+ {0xab1, 0xab1, HB_Other_NotAssigned},
+ {0xab2, 0xab3, HB_Letter_Other},
+ {0xab4, 0xab4, HB_Other_NotAssigned},
+ {0xab5, 0xab9, HB_Letter_Other},
+ {0xaba, 0xabb, HB_Other_NotAssigned},
+ {0xabc, 0xabc, HB_Mark_NonSpacing},
+ {0xabd, 0xabd, HB_Letter_Other},
+ {0xabe, 0xac0, HB_Mark_SpacingCombining},
+ {0xac1, 0xac5, HB_Mark_NonSpacing},
+ {0xac6, 0xac6, HB_Other_NotAssigned},
+ {0xac7, 0xac8, HB_Mark_NonSpacing},
+ {0xac9, 0xac9, HB_Mark_SpacingCombining},
+ {0xaca, 0xaca, HB_Other_NotAssigned},
+ {0xacb, 0xacc, HB_Mark_SpacingCombining},
+ {0xacd, 0xacd, HB_Mark_NonSpacing},
+ {0xace, 0xacf, HB_Other_NotAssigned},
+ {0xad0, 0xad0, HB_Letter_Other},
+ {0xad1, 0xadf, HB_Other_NotAssigned},
+ {0xae0, 0xae1, HB_Letter_Other},
+ {0xae2, 0xae3, HB_Mark_NonSpacing},
+ {0xae4, 0xae5, HB_Other_NotAssigned},
+ {0xae6, 0xaef, HB_Number_DecimalDigit},
+ {0xaf0, 0xaf0, HB_Other_NotAssigned},
+ {0xaf1, 0xaf1, HB_Symbol_Currency},
+ {0xaf2, 0xb00, HB_Other_NotAssigned},
+ {0xb01, 0xb01, HB_Mark_NonSpacing},
+ {0xb02, 0xb03, HB_Mark_SpacingCombining},
+ {0xb04, 0xb04, HB_Other_NotAssigned},
+ {0xb05, 0xb0c, HB_Letter_Other},
+ {0xb0d, 0xb0e, HB_Other_NotAssigned},
+ {0xb0f, 0xb10, HB_Letter_Other},
+ {0xb11, 0xb12, HB_Other_NotAssigned},
+ {0xb13, 0xb28, HB_Letter_Other},
+ {0xb29, 0xb29, HB_Other_NotAssigned},
+ {0xb2a, 0xb30, HB_Letter_Other},
+ {0xb31, 0xb31, HB_Other_NotAssigned},
+ {0xb32, 0xb33, HB_Letter_Other},
+ {0xb34, 0xb34, HB_Other_NotAssigned},
+ {0xb35, 0xb39, HB_Letter_Other},
+ {0xb3a, 0xb3b, HB_Other_NotAssigned},
+ {0xb3c, 0xb3c, HB_Mark_NonSpacing},
+ {0xb3d, 0xb3d, HB_Letter_Other},
+ {0xb3e, 0xb3e, HB_Mark_SpacingCombining},
+ {0xb3f, 0xb3f, HB_Mark_NonSpacing},
+ {0xb40, 0xb40, HB_Mark_SpacingCombining},
+ {0xb41, 0xb44, HB_Mark_NonSpacing},
+ {0xb45, 0xb46, HB_Other_NotAssigned},
+ {0xb47, 0xb48, HB_Mark_SpacingCombining},
+ {0xb49, 0xb4a, HB_Other_NotAssigned},
+ {0xb4b, 0xb4c, HB_Mark_SpacingCombining},
+ {0xb4d, 0xb4d, HB_Mark_NonSpacing},
+ {0xb4e, 0xb55, HB_Other_NotAssigned},
+ {0xb56, 0xb56, HB_Mark_NonSpacing},
+ {0xb57, 0xb57, HB_Mark_SpacingCombining},
+ {0xb58, 0xb5b, HB_Other_NotAssigned},
+ {0xb5c, 0xb5d, HB_Letter_Other},
+ {0xb5e, 0xb5e, HB_Other_NotAssigned},
+ {0xb5f, 0xb61, HB_Letter_Other},
+ {0xb62, 0xb63, HB_Mark_NonSpacing},
+ {0xb64, 0xb65, HB_Other_NotAssigned},
+ {0xb66, 0xb6f, HB_Number_DecimalDigit},
+ {0xb70, 0xb70, HB_Symbol_Other},
+ {0xb71, 0xb71, HB_Letter_Other},
+ {0xb72, 0xb81, HB_Other_NotAssigned},
+ {0xb82, 0xb82, HB_Mark_NonSpacing},
+ {0xb83, 0xb83, HB_Letter_Other},
+ {0xb84, 0xb84, HB_Other_NotAssigned},
+ {0xb85, 0xb8a, HB_Letter_Other},
+ {0xb8b, 0xb8d, HB_Other_NotAssigned},
+ {0xb8e, 0xb90, HB_Letter_Other},
+ {0xb91, 0xb91, HB_Other_NotAssigned},
+ {0xb92, 0xb95, HB_Letter_Other},
+ {0xb96, 0xb98, HB_Other_NotAssigned},
+ {0xb99, 0xb9a, HB_Letter_Other},
+ {0xb9b, 0xb9b, HB_Other_NotAssigned},
+ {0xb9c, 0xb9c, HB_Letter_Other},
+ {0xb9d, 0xb9d, HB_Other_NotAssigned},
+ {0xb9e, 0xb9f, HB_Letter_Other},
+ {0xba0, 0xba2, HB_Other_NotAssigned},
+ {0xba3, 0xba4, HB_Letter_Other},
+ {0xba5, 0xba7, HB_Other_NotAssigned},
+ {0xba8, 0xbaa, HB_Letter_Other},
+ {0xbab, 0xbad, HB_Other_NotAssigned},
+ {0xbae, 0xbb9, HB_Letter_Other},
+ {0xbba, 0xbbd, HB_Other_NotAssigned},
+ {0xbbe, 0xbbf, HB_Mark_SpacingCombining},
+ {0xbc0, 0xbc0, HB_Mark_NonSpacing},
+ {0xbc1, 0xbc2, HB_Mark_SpacingCombining},
+ {0xbc3, 0xbc5, HB_Other_NotAssigned},
+ {0xbc6, 0xbc8, HB_Mark_SpacingCombining},
+ {0xbc9, 0xbc9, HB_Other_NotAssigned},
+ {0xbca, 0xbcc, HB_Mark_SpacingCombining},
+ {0xbcd, 0xbcd, HB_Mark_NonSpacing},
+ {0xbce, 0xbcf, HB_Other_NotAssigned},
+ {0xbd0, 0xbd0, HB_Letter_Other},
+ {0xbd1, 0xbd6, HB_Other_NotAssigned},
+ {0xbd7, 0xbd7, HB_Mark_SpacingCombining},
+ {0xbd8, 0xbe5, HB_Other_NotAssigned},
+ {0xbe6, 0xbef, HB_Number_DecimalDigit},
+ {0xbf0, 0xbf2, HB_Number_Other},
+ {0xbf3, 0xbf8, HB_Symbol_Other},
+ {0xbf9, 0xbf9, HB_Symbol_Currency},
+ {0xbfa, 0xbfa, HB_Symbol_Other},
+ {0xbfb, 0xc00, HB_Other_NotAssigned},
+ {0xc01, 0xc03, HB_Mark_SpacingCombining},
+ {0xc04, 0xc04, HB_Other_NotAssigned},
+ {0xc05, 0xc0c, HB_Letter_Other},
+ {0xc0d, 0xc0d, HB_Other_NotAssigned},
+ {0xc0e, 0xc10, HB_Letter_Other},
+ {0xc11, 0xc11, HB_Other_NotAssigned},
+ {0xc12, 0xc28, HB_Letter_Other},
+ {0xc29, 0xc29, HB_Other_NotAssigned},
+ {0xc2a, 0xc33, HB_Letter_Other},
+ {0xc34, 0xc34, HB_Other_NotAssigned},
+ {0xc35, 0xc39, HB_Letter_Other},
+ {0xc3a, 0xc3c, HB_Other_NotAssigned},
+ {0xc3d, 0xc3d, HB_Letter_Other},
+ {0xc3e, 0xc40, HB_Mark_NonSpacing},
+ {0xc41, 0xc44, HB_Mark_SpacingCombining},
+ {0xc45, 0xc45, HB_Other_NotAssigned},
+ {0xc46, 0xc48, HB_Mark_NonSpacing},
+ {0xc49, 0xc49, HB_Other_NotAssigned},
+ {0xc4a, 0xc4d, HB_Mark_NonSpacing},
+ {0xc4e, 0xc54, HB_Other_NotAssigned},
+ {0xc55, 0xc56, HB_Mark_NonSpacing},
+ {0xc57, 0xc57, HB_Other_NotAssigned},
+ {0xc58, 0xc59, HB_Letter_Other},
+ {0xc5a, 0xc5f, HB_Other_NotAssigned},
+ {0xc60, 0xc61, HB_Letter_Other},
+ {0xc62, 0xc63, HB_Mark_NonSpacing},
+ {0xc64, 0xc65, HB_Other_NotAssigned},
+ {0xc66, 0xc6f, HB_Number_DecimalDigit},
+ {0xc70, 0xc77, HB_Other_NotAssigned},
+ {0xc78, 0xc7e, HB_Number_Other},
+ {0xc7f, 0xc7f, HB_Symbol_Other},
+ {0xc80, 0xc81, HB_Other_NotAssigned},
+ {0xc82, 0xc83, HB_Mark_SpacingCombining},
+ {0xc84, 0xc84, HB_Other_NotAssigned},
+ {0xc85, 0xc8c, HB_Letter_Other},
+ {0xc8d, 0xc8d, HB_Other_NotAssigned},
+ {0xc8e, 0xc90, HB_Letter_Other},
+ {0xc91, 0xc91, HB_Other_NotAssigned},
+ {0xc92, 0xca8, HB_Letter_Other},
+ {0xca9, 0xca9, HB_Other_NotAssigned},
+ {0xcaa, 0xcb3, HB_Letter_Other},
+ {0xcb4, 0xcb4, HB_Other_NotAssigned},
+ {0xcb5, 0xcb9, HB_Letter_Other},
+ {0xcba, 0xcbb, HB_Other_NotAssigned},
+ {0xcbc, 0xcbc, HB_Mark_NonSpacing},
+ {0xcbd, 0xcbd, HB_Letter_Other},
+ {0xcbe, 0xcbe, HB_Mark_SpacingCombining},
+ {0xcbf, 0xcbf, HB_Mark_NonSpacing},
+ {0xcc0, 0xcc4, HB_Mark_SpacingCombining},
+ {0xcc5, 0xcc5, HB_Other_NotAssigned},
+ {0xcc6, 0xcc6, HB_Mark_NonSpacing},
+ {0xcc7, 0xcc8, HB_Mark_SpacingCombining},
+ {0xcc9, 0xcc9, HB_Other_NotAssigned},
+ {0xcca, 0xccb, HB_Mark_SpacingCombining},
+ {0xccc, 0xccd, HB_Mark_NonSpacing},
+ {0xcce, 0xcd4, HB_Other_NotAssigned},
+ {0xcd5, 0xcd6, HB_Mark_SpacingCombining},
+ {0xcd7, 0xcdd, HB_Other_NotAssigned},
+ {0xcde, 0xcde, HB_Letter_Other},
+ {0xcdf, 0xcdf, HB_Other_NotAssigned},
+ {0xce0, 0xce1, HB_Letter_Other},
+ {0xce2, 0xce3, HB_Mark_NonSpacing},
+ {0xce4, 0xce5, HB_Other_NotAssigned},
+ {0xce6, 0xcef, HB_Number_DecimalDigit},
+ {0xcf0, 0xcf0, HB_Other_NotAssigned},
+ {0xcf1, 0xcf2, HB_Symbol_Other},
+ {0xcf3, 0xd01, HB_Other_NotAssigned},
+ {0xd02, 0xd03, HB_Mark_SpacingCombining},
+ {0xd04, 0xd04, HB_Other_NotAssigned},
+ {0xd05, 0xd0c, HB_Letter_Other},
+ {0xd0d, 0xd0d, HB_Other_NotAssigned},
+ {0xd0e, 0xd10, HB_Letter_Other},
+ {0xd11, 0xd11, HB_Other_NotAssigned},
+ {0xd12, 0xd28, HB_Letter_Other},
+ {0xd29, 0xd29, HB_Other_NotAssigned},
+ {0xd2a, 0xd39, HB_Letter_Other},
+ {0xd3a, 0xd3c, HB_Other_NotAssigned},
+ {0xd3d, 0xd3d, HB_Letter_Other},
+ {0xd3e, 0xd40, HB_Mark_SpacingCombining},
+ {0xd41, 0xd44, HB_Mark_NonSpacing},
+ {0xd45, 0xd45, HB_Other_NotAssigned},
+ {0xd46, 0xd48, HB_Mark_SpacingCombining},
+ {0xd49, 0xd49, HB_Other_NotAssigned},
+ {0xd4a, 0xd4c, HB_Mark_SpacingCombining},
+ {0xd4d, 0xd4d, HB_Mark_NonSpacing},
+ {0xd4e, 0xd56, HB_Other_NotAssigned},
+ {0xd57, 0xd57, HB_Mark_SpacingCombining},
+ {0xd58, 0xd5f, HB_Other_NotAssigned},
+ {0xd60, 0xd61, HB_Letter_Other},
+ {0xd62, 0xd63, HB_Mark_NonSpacing},
+ {0xd64, 0xd65, HB_Other_NotAssigned},
+ {0xd66, 0xd6f, HB_Number_DecimalDigit},
+ {0xd70, 0xd75, HB_Number_Other},
+ {0xd76, 0xd78, HB_Other_NotAssigned},
+ {0xd79, 0xd79, HB_Symbol_Other},
+ {0xd7a, 0xd7f, HB_Letter_Other},
+ {0xd80, 0xd81, HB_Other_NotAssigned},
+ {0xd82, 0xd83, HB_Mark_SpacingCombining},
+ {0xd84, 0xd84, HB_Other_NotAssigned},
+ {0xd85, 0xd96, HB_Letter_Other},
+ {0xd97, 0xd99, HB_Other_NotAssigned},
+ {0xd9a, 0xdb1, HB_Letter_Other},
+ {0xdb2, 0xdb2, HB_Other_NotAssigned},
+ {0xdb3, 0xdbb, HB_Letter_Other},
+ {0xdbc, 0xdbc, HB_Other_NotAssigned},
+ {0xdbd, 0xdbd, HB_Letter_Other},
+ {0xdbe, 0xdbf, HB_Other_NotAssigned},
+ {0xdc0, 0xdc6, HB_Letter_Other},
+ {0xdc7, 0xdc9, HB_Other_NotAssigned},
+ {0xdca, 0xdca, HB_Mark_NonSpacing},
+ {0xdcb, 0xdce, HB_Other_NotAssigned},
+ {0xdcf, 0xdd1, HB_Mark_SpacingCombining},
+ {0xdd2, 0xdd4, HB_Mark_NonSpacing},
+ {0xdd5, 0xdd5, HB_Other_NotAssigned},
+ {0xdd6, 0xdd6, HB_Mark_NonSpacing},
+ {0xdd7, 0xdd7, HB_Other_NotAssigned},
+ {0xdd8, 0xddf, HB_Mark_SpacingCombining},
+ {0xde0, 0xdf1, HB_Other_NotAssigned},
+ {0xdf2, 0xdf3, HB_Mark_SpacingCombining},
+ {0xdf4, 0xdf4, HB_Punctuation_Other},
+ {0xdf5, 0xe00, HB_Other_NotAssigned},
+ {0xe01, 0xe30, HB_Letter_Other},
+ {0xe31, 0xe31, HB_Mark_NonSpacing},
+ {0xe32, 0xe33, HB_Letter_Other},
+ {0xe34, 0xe3a, HB_Mark_NonSpacing},
+ {0xe3b, 0xe3e, HB_Other_NotAssigned},
+ {0xe3f, 0xe3f, HB_Symbol_Currency},
+ {0xe40, 0xe45, HB_Letter_Other},
+ {0xe46, 0xe46, HB_Letter_Modifier},
+ {0xe47, 0xe4e, HB_Mark_NonSpacing},
+ {0xe4f, 0xe4f, HB_Punctuation_Other},
+ {0xe50, 0xe59, HB_Number_DecimalDigit},
+ {0xe5a, 0xe5b, HB_Punctuation_Other},
+ {0xe5c, 0xe80, HB_Other_NotAssigned},
+ {0xe81, 0xe82, HB_Letter_Other},
+ {0xe83, 0xe83, HB_Other_NotAssigned},
+ {0xe84, 0xe84, HB_Letter_Other},
+ {0xe85, 0xe86, HB_Other_NotAssigned},
+ {0xe87, 0xe88, HB_Letter_Other},
+ {0xe89, 0xe89, HB_Other_NotAssigned},
+ {0xe8a, 0xe8a, HB_Letter_Other},
+ {0xe8b, 0xe8c, HB_Other_NotAssigned},
+ {0xe8d, 0xe8d, HB_Letter_Other},
+ {0xe8e, 0xe93, HB_Other_NotAssigned},
+ {0xe94, 0xe97, HB_Letter_Other},
+ {0xe98, 0xe98, HB_Other_NotAssigned},
+ {0xe99, 0xe9f, HB_Letter_Other},
+ {0xea0, 0xea0, HB_Other_NotAssigned},
+ {0xea1, 0xea3, HB_Letter_Other},
+ {0xea4, 0xea4, HB_Other_NotAssigned},
+ {0xea5, 0xea5, HB_Letter_Other},
+ {0xea6, 0xea6, HB_Other_NotAssigned},
+ {0xea7, 0xea7, HB_Letter_Other},
+ {0xea8, 0xea9, HB_Other_NotAssigned},
+ {0xeaa, 0xeab, HB_Letter_Other},
+ {0xeac, 0xeac, HB_Other_NotAssigned},
+ {0xead, 0xeb0, HB_Letter_Other},
+ {0xeb1, 0xeb1, HB_Mark_NonSpacing},
+ {0xeb2, 0xeb3, HB_Letter_Other},
+ {0xeb4, 0xeb9, HB_Mark_NonSpacing},
+ {0xeba, 0xeba, HB_Other_NotAssigned},
+ {0xebb, 0xebc, HB_Mark_NonSpacing},
+ {0xebd, 0xebd, HB_Letter_Other},
+ {0xebe, 0xebf, HB_Other_NotAssigned},
+ {0xec0, 0xec4, HB_Letter_Other},
+ {0xec5, 0xec5, HB_Other_NotAssigned},
+ {0xec6, 0xec6, HB_Letter_Modifier},
+ {0xec7, 0xec7, HB_Other_NotAssigned},
+ {0xec8, 0xecd, HB_Mark_NonSpacing},
+ {0xece, 0xecf, HB_Other_NotAssigned},
+ {0xed0, 0xed9, HB_Number_DecimalDigit},
+ {0xeda, 0xedb, HB_Other_NotAssigned},
+ {0xedc, 0xedd, HB_Letter_Other},
+ {0xede, 0xeff, HB_Other_NotAssigned},
+ {0xf00, 0xf00, HB_Letter_Other},
+ {0xf01, 0xf03, HB_Symbol_Other},
+ {0xf04, 0xf12, HB_Punctuation_Other},
+ {0xf13, 0xf17, HB_Symbol_Other},
+ {0xf18, 0xf19, HB_Mark_NonSpacing},
+ {0xf1a, 0xf1f, HB_Symbol_Other},
+ {0xf20, 0xf29, HB_Number_DecimalDigit},
+ {0xf2a, 0xf33, HB_Number_Other},
+ {0xf34, 0xf34, HB_Symbol_Other},
+ {0xf35, 0xf35, HB_Mark_NonSpacing},
+ {0xf36, 0xf36, HB_Symbol_Other},
+ {0xf37, 0xf37, HB_Mark_NonSpacing},
+ {0xf38, 0xf38, HB_Symbol_Other},
+ {0xf39, 0xf39, HB_Mark_NonSpacing},
+ {0xf3a, 0xf3a, HB_Punctuation_Open},
+ {0xf3b, 0xf3b, HB_Punctuation_Close},
+ {0xf3c, 0xf3c, HB_Punctuation_Open},
+ {0xf3d, 0xf3d, HB_Punctuation_Close},
+ {0xf3e, 0xf3f, HB_Mark_SpacingCombining},
+ {0xf40, 0xf47, HB_Letter_Other},
+ {0xf48, 0xf48, HB_Other_NotAssigned},
+ {0xf49, 0xf6c, HB_Letter_Other},
+ {0xf6d, 0xf70, HB_Other_NotAssigned},
+ {0xf71, 0xf7e, HB_Mark_NonSpacing},
+ {0xf7f, 0xf7f, HB_Mark_SpacingCombining},
+ {0xf80, 0xf84, HB_Mark_NonSpacing},
+ {0xf85, 0xf85, HB_Punctuation_Other},
+ {0xf86, 0xf87, HB_Mark_NonSpacing},
+ {0xf88, 0xf8b, HB_Letter_Other},
+ {0xf8c, 0xf8f, HB_Other_NotAssigned},
+ {0xf90, 0xf97, HB_Mark_NonSpacing},
+ {0xf98, 0xf98, HB_Other_NotAssigned},
+ {0xf99, 0xfbc, HB_Mark_NonSpacing},
+ {0xfbd, 0xfbd, HB_Other_NotAssigned},
+ {0xfbe, 0xfc5, HB_Symbol_Other},
+ {0xfc6, 0xfc6, HB_Mark_NonSpacing},
+ {0xfc7, 0xfcc, HB_Symbol_Other},
+ {0xfcd, 0xfcd, HB_Other_NotAssigned},
+ {0xfce, 0xfcf, HB_Symbol_Other},
+ {0xfd0, 0xfd4, HB_Punctuation_Other},
+ {0xfd5, 0xfff, HB_Other_NotAssigned},
+ {0x1000, 0x102a, HB_Letter_Other},
+ {0x102b, 0x102c, HB_Mark_SpacingCombining},
+ {0x102d, 0x1030, HB_Mark_NonSpacing},
+ {0x1031, 0x1031, HB_Mark_SpacingCombining},
+ {0x1032, 0x1037, HB_Mark_NonSpacing},
+ {0x1038, 0x1038, HB_Mark_SpacingCombining},
+ {0x1039, 0x103a, HB_Mark_NonSpacing},
+ {0x103b, 0x103c, HB_Mark_SpacingCombining},
+ {0x103d, 0x103e, HB_Mark_NonSpacing},
+ {0x103f, 0x103f, HB_Letter_Other},
+ {0x1040, 0x1049, HB_Number_DecimalDigit},
+ {0x104a, 0x104f, HB_Punctuation_Other},
+ {0x1050, 0x1055, HB_Letter_Other},
+ {0x1056, 0x1057, HB_Mark_SpacingCombining},
+ {0x1058, 0x1059, HB_Mark_NonSpacing},
+ {0x105a, 0x105d, HB_Letter_Other},
+ {0x105e, 0x1060, HB_Mark_NonSpacing},
+ {0x1061, 0x1061, HB_Letter_Other},
+ {0x1062, 0x1064, HB_Mark_SpacingCombining},
+ {0x1065, 0x1066, HB_Letter_Other},
+ {0x1067, 0x106d, HB_Mark_SpacingCombining},
+ {0x106e, 0x1070, HB_Letter_Other},
+ {0x1071, 0x1074, HB_Mark_NonSpacing},
+ {0x1075, 0x1081, HB_Letter_Other},
+ {0x1082, 0x1082, HB_Mark_NonSpacing},
+ {0x1083, 0x1084, HB_Mark_SpacingCombining},
+ {0x1085, 0x1086, HB_Mark_NonSpacing},
+ {0x1087, 0x108c, HB_Mark_SpacingCombining},
+ {0x108d, 0x108d, HB_Mark_NonSpacing},
+ {0x108e, 0x108e, HB_Letter_Other},
+ {0x108f, 0x108f, HB_Mark_SpacingCombining},
+ {0x1090, 0x1099, HB_Number_DecimalDigit},
+ {0x109a, 0x109d, HB_Other_NotAssigned},
+ {0x109e, 0x109f, HB_Symbol_Other},
+ {0x10a0, 0x10c5, HB_Letter_Uppercase},
+ {0x10c6, 0x10cf, HB_Other_NotAssigned},
+ {0x10d0, 0x10fa, HB_Letter_Other},
+ {0x10fb, 0x10fb, HB_Punctuation_Other},
+ {0x10fc, 0x10fc, HB_Letter_Modifier},
+ {0x10fd, 0x10ff, HB_Other_NotAssigned},
+ {0x1100, 0x1159, HB_Letter_Other},
+ {0x115a, 0x115e, HB_Other_NotAssigned},
+ {0x115f, 0x11a2, HB_Letter_Other},
+ {0x11a3, 0x11a7, HB_Other_NotAssigned},
+ {0x11a8, 0x11f9, HB_Letter_Other},
+ {0x11fa, 0x11ff, HB_Other_NotAssigned},
+ {0x1200, 0x1248, HB_Letter_Other},
+ {0x1249, 0x1249, HB_Other_NotAssigned},
+ {0x124a, 0x124d, HB_Letter_Other},
+ {0x124e, 0x124f, HB_Other_NotAssigned},
+ {0x1250, 0x1256, HB_Letter_Other},
+ {0x1257, 0x1257, HB_Other_NotAssigned},
+ {0x1258, 0x1258, HB_Letter_Other},
+ {0x1259, 0x1259, HB_Other_NotAssigned},
+ {0x125a, 0x125d, HB_Letter_Other},
+ {0x125e, 0x125f, HB_Other_NotAssigned},
+ {0x1260, 0x1288, HB_Letter_Other},
+ {0x1289, 0x1289, HB_Other_NotAssigned},
+ {0x128a, 0x128d, HB_Letter_Other},
+ {0x128e, 0x128f, HB_Other_NotAssigned},
+ {0x1290, 0x12b0, HB_Letter_Other},
+ {0x12b1, 0x12b1, HB_Other_NotAssigned},
+ {0x12b2, 0x12b5, HB_Letter_Other},
+ {0x12b6, 0x12b7, HB_Other_NotAssigned},
+ {0x12b8, 0x12be, HB_Letter_Other},
+ {0x12bf, 0x12bf, HB_Other_NotAssigned},
+ {0x12c0, 0x12c0, HB_Letter_Other},
+ {0x12c1, 0x12c1, HB_Other_NotAssigned},
+ {0x12c2, 0x12c5, HB_Letter_Other},
+ {0x12c6, 0x12c7, HB_Other_NotAssigned},
+ {0x12c8, 0x12d6, HB_Letter_Other},
+ {0x12d7, 0x12d7, HB_Other_NotAssigned},
+ {0x12d8, 0x1310, HB_Letter_Other},
+ {0x1311, 0x1311, HB_Other_NotAssigned},
+ {0x1312, 0x1315, HB_Letter_Other},
+ {0x1316, 0x1317, HB_Other_NotAssigned},
+ {0x1318, 0x135a, HB_Letter_Other},
+ {0x135b, 0x135e, HB_Other_NotAssigned},
+ {0x135f, 0x135f, HB_Mark_NonSpacing},
+ {0x1360, 0x1360, HB_Symbol_Other},
+ {0x1361, 0x1368, HB_Punctuation_Other},
+ {0x1369, 0x137c, HB_Number_Other},
+ {0x137d, 0x137f, HB_Other_NotAssigned},
+ {0x1380, 0x138f, HB_Letter_Other},
+ {0x1390, 0x1399, HB_Symbol_Other},
+ {0x139a, 0x139f, HB_Other_NotAssigned},
+ {0x13a0, 0x13f4, HB_Letter_Other},
+ {0x13f5, 0x1400, HB_Other_NotAssigned},
+ {0x1401, 0x166c, HB_Letter_Other},
+ {0x166d, 0x166e, HB_Punctuation_Other},
+ {0x166f, 0x1676, HB_Letter_Other},
+ {0x1677, 0x167f, HB_Other_NotAssigned},
+ {0x1680, 0x1680, HB_Separator_Space},
+ {0x1681, 0x169a, HB_Letter_Other},
+ {0x169b, 0x169b, HB_Punctuation_Open},
+ {0x169c, 0x169c, HB_Punctuation_Close},
+ {0x169d, 0x169f, HB_Other_NotAssigned},
+ {0x16a0, 0x16ea, HB_Letter_Other},
+ {0x16eb, 0x16ed, HB_Punctuation_Other},
+ {0x16ee, 0x16f0, HB_Number_Letter},
+ {0x16f1, 0x16ff, HB_Other_NotAssigned},
+ {0x1700, 0x170c, HB_Letter_Other},
+ {0x170d, 0x170d, HB_Other_NotAssigned},
+ {0x170e, 0x1711, HB_Letter_Other},
+ {0x1712, 0x1714, HB_Mark_NonSpacing},
+ {0x1715, 0x171f, HB_Other_NotAssigned},
+ {0x1720, 0x1731, HB_Letter_Other},
+ {0x1732, 0x1734, HB_Mark_NonSpacing},
+ {0x1735, 0x1736, HB_Punctuation_Other},
+ {0x1737, 0x173f, HB_Other_NotAssigned},
+ {0x1740, 0x1751, HB_Letter_Other},
+ {0x1752, 0x1753, HB_Mark_NonSpacing},
+ {0x1754, 0x175f, HB_Other_NotAssigned},
+ {0x1760, 0x176c, HB_Letter_Other},
+ {0x176d, 0x176d, HB_Other_NotAssigned},
+ {0x176e, 0x1770, HB_Letter_Other},
+ {0x1771, 0x1771, HB_Other_NotAssigned},
+ {0x1772, 0x1773, HB_Mark_NonSpacing},
+ {0x1774, 0x177f, HB_Other_NotAssigned},
+ {0x1780, 0x17b3, HB_Letter_Other},
+ {0x17b4, 0x17b5, HB_Other_Format},
+ {0x17b6, 0x17b6, HB_Mark_SpacingCombining},
+ {0x17b7, 0x17bd, HB_Mark_NonSpacing},
+ {0x17be, 0x17c5, HB_Mark_SpacingCombining},
+ {0x17c6, 0x17c6, HB_Mark_NonSpacing},
+ {0x17c7, 0x17c8, HB_Mark_SpacingCombining},
+ {0x17c9, 0x17d3, HB_Mark_NonSpacing},
+ {0x17d4, 0x17d6, HB_Punctuation_Other},
+ {0x17d7, 0x17d7, HB_Letter_Modifier},
+ {0x17d8, 0x17da, HB_Punctuation_Other},
+ {0x17db, 0x17db, HB_Symbol_Currency},
+ {0x17dc, 0x17dc, HB_Letter_Other},
+ {0x17dd, 0x17dd, HB_Mark_NonSpacing},
+ {0x17de, 0x17df, HB_Other_NotAssigned},
+ {0x17e0, 0x17e9, HB_Number_DecimalDigit},
+ {0x17ea, 0x17ef, HB_Other_NotAssigned},
+ {0x17f0, 0x17f9, HB_Number_Other},
+ {0x17fa, 0x17ff, HB_Other_NotAssigned},
+ {0x1800, 0x1805, HB_Punctuation_Other},
+ {0x1806, 0x1806, HB_Punctuation_Dash},
+ {0x1807, 0x180a, HB_Punctuation_Other},
+ {0x180b, 0x180d, HB_Mark_NonSpacing},
+ {0x180e, 0x180e, HB_Separator_Space},
+ {0x180f, 0x180f, HB_Other_NotAssigned},
+ {0x1810, 0x1819, HB_Number_DecimalDigit},
+ {0x181a, 0x181f, HB_Other_NotAssigned},
+ {0x1820, 0x1842, HB_Letter_Other},
+ {0x1843, 0x1843, HB_Letter_Modifier},
+ {0x1844, 0x1877, HB_Letter_Other},
+ {0x1878, 0x187f, HB_Other_NotAssigned},
+ {0x1880, 0x18a8, HB_Letter_Other},
+ {0x18a9, 0x18a9, HB_Mark_NonSpacing},
+ {0x18aa, 0x18aa, HB_Letter_Other},
+ {0x18ab, 0x18ff, HB_Other_NotAssigned},
+ {0x1900, 0x191c, HB_Letter_Other},
+ {0x191d, 0x191f, HB_Other_NotAssigned},
+ {0x1920, 0x1922, HB_Mark_NonSpacing},
+ {0x1923, 0x1926, HB_Mark_SpacingCombining},
+ {0x1927, 0x1928, HB_Mark_NonSpacing},
+ {0x1929, 0x192b, HB_Mark_SpacingCombining},
+ {0x192c, 0x192f, HB_Other_NotAssigned},
+ {0x1930, 0x1931, HB_Mark_SpacingCombining},
+ {0x1932, 0x1932, HB_Mark_NonSpacing},
+ {0x1933, 0x1938, HB_Mark_SpacingCombining},
+ {0x1939, 0x193b, HB_Mark_NonSpacing},
+ {0x193c, 0x193f, HB_Other_NotAssigned},
+ {0x1940, 0x1940, HB_Symbol_Other},
+ {0x1941, 0x1943, HB_Other_NotAssigned},
+ {0x1944, 0x1945, HB_Punctuation_Other},
+ {0x1946, 0x194f, HB_Number_DecimalDigit},
+ {0x1950, 0x196d, HB_Letter_Other},
+ {0x196e, 0x196f, HB_Other_NotAssigned},
+ {0x1970, 0x1974, HB_Letter_Other},
+ {0x1975, 0x197f, HB_Other_NotAssigned},
+ {0x1980, 0x19a9, HB_Letter_Other},
+ {0x19aa, 0x19af, HB_Other_NotAssigned},
+ {0x19b0, 0x19c0, HB_Mark_SpacingCombining},
+ {0x19c1, 0x19c7, HB_Letter_Other},
+ {0x19c8, 0x19c9, HB_Mark_SpacingCombining},
+ {0x19ca, 0x19cf, HB_Other_NotAssigned},
+ {0x19d0, 0x19d9, HB_Number_DecimalDigit},
+ {0x19da, 0x19dd, HB_Other_NotAssigned},
+ {0x19de, 0x19df, HB_Punctuation_Other},
+ {0x19e0, 0x19ff, HB_Symbol_Other},
+ {0x1a00, 0x1a16, HB_Letter_Other},
+ {0x1a17, 0x1a18, HB_Mark_NonSpacing},
+ {0x1a19, 0x1a1b, HB_Mark_SpacingCombining},
+ {0x1a1c, 0x1a1d, HB_Other_NotAssigned},
+ {0x1a1e, 0x1a1f, HB_Punctuation_Other},
+ {0x1a20, 0x1aff, HB_Other_NotAssigned},
+ {0x1b00, 0x1b03, HB_Mark_NonSpacing},
+ {0x1b04, 0x1b04, HB_Mark_SpacingCombining},
+ {0x1b05, 0x1b33, HB_Letter_Other},
+ {0x1b34, 0x1b34, HB_Mark_NonSpacing},
+ {0x1b35, 0x1b35, HB_Mark_SpacingCombining},
+ {0x1b36, 0x1b3a, HB_Mark_NonSpacing},
+ {0x1b3b, 0x1b3b, HB_Mark_SpacingCombining},
+ {0x1b3c, 0x1b3c, HB_Mark_NonSpacing},
+ {0x1b3d, 0x1b41, HB_Mark_SpacingCombining},
+ {0x1b42, 0x1b42, HB_Mark_NonSpacing},
+ {0x1b43, 0x1b44, HB_Mark_SpacingCombining},
+ {0x1b45, 0x1b4b, HB_Letter_Other},
+ {0x1b4c, 0x1b4f, HB_Other_NotAssigned},
+ {0x1b50, 0x1b59, HB_Number_DecimalDigit},
+ {0x1b5a, 0x1b60, HB_Punctuation_Other},
+ {0x1b61, 0x1b6a, HB_Symbol_Other},
+ {0x1b6b, 0x1b73, HB_Mark_NonSpacing},
+ {0x1b74, 0x1b7c, HB_Symbol_Other},
+ {0x1b7d, 0x1b7f, HB_Other_NotAssigned},
+ {0x1b80, 0x1b81, HB_Mark_NonSpacing},
+ {0x1b82, 0x1b82, HB_Mark_SpacingCombining},
+ {0x1b83, 0x1ba0, HB_Letter_Other},
+ {0x1ba1, 0x1ba1, HB_Mark_SpacingCombining},
+ {0x1ba2, 0x1ba5, HB_Mark_NonSpacing},
+ {0x1ba6, 0x1ba7, HB_Mark_SpacingCombining},
+ {0x1ba8, 0x1ba9, HB_Mark_NonSpacing},
+ {0x1baa, 0x1baa, HB_Mark_SpacingCombining},
+ {0x1bab, 0x1bad, HB_Other_NotAssigned},
+ {0x1bae, 0x1baf, HB_Letter_Other},
+ {0x1bb0, 0x1bb9, HB_Number_DecimalDigit},
+ {0x1bba, 0x1bff, HB_Other_NotAssigned},
+ {0x1c00, 0x1c23, HB_Letter_Other},
+ {0x1c24, 0x1c2b, HB_Mark_SpacingCombining},
+ {0x1c2c, 0x1c33, HB_Mark_NonSpacing},
+ {0x1c34, 0x1c35, HB_Mark_SpacingCombining},
+ {0x1c36, 0x1c37, HB_Mark_NonSpacing},
+ {0x1c38, 0x1c3a, HB_Other_NotAssigned},
+ {0x1c3b, 0x1c3f, HB_Punctuation_Other},
+ {0x1c40, 0x1c49, HB_Number_DecimalDigit},
+ {0x1c4a, 0x1c4c, HB_Other_NotAssigned},
+ {0x1c4d, 0x1c4f, HB_Letter_Other},
+ {0x1c50, 0x1c59, HB_Number_DecimalDigit},
+ {0x1c5a, 0x1c77, HB_Letter_Other},
+ {0x1c78, 0x1c7d, HB_Letter_Modifier},
+ {0x1c7e, 0x1c7f, HB_Punctuation_Other},
+ {0x1c80, 0x1cff, HB_Other_NotAssigned},
+ {0x1d00, 0x1d2b, HB_Letter_Lowercase},
+ {0x1d2c, 0x1d61, HB_Letter_Modifier},
+ {0x1d62, 0x1d77, HB_Letter_Lowercase},
+ {0x1d78, 0x1d78, HB_Letter_Modifier},
+ {0x1d79, 0x1d9a, HB_Letter_Lowercase},
+ {0x1d9b, 0x1dbf, HB_Letter_Modifier},
+ {0x1dc0, 0x1de6, HB_Mark_NonSpacing},
+ {0x1de7, 0x1dfd, HB_Other_NotAssigned},
+ {0x1dfe, 0x1dff, HB_Mark_NonSpacing},
+ {0x1e00, 0x1e00, HB_Letter_Uppercase},
+ {0x1e01, 0x1e01, HB_Letter_Lowercase},
+ {0x1e02, 0x1e02, HB_Letter_Uppercase},
+ {0x1e03, 0x1e03, HB_Letter_Lowercase},
+ {0x1e04, 0x1e04, HB_Letter_Uppercase},
+ {0x1e05, 0x1e05, HB_Letter_Lowercase},
+ {0x1e06, 0x1e06, HB_Letter_Uppercase},
+ {0x1e07, 0x1e07, HB_Letter_Lowercase},
+ {0x1e08, 0x1e08, HB_Letter_Uppercase},
+ {0x1e09, 0x1e09, HB_Letter_Lowercase},
+ {0x1e0a, 0x1e0a, HB_Letter_Uppercase},
+ {0x1e0b, 0x1e0b, HB_Letter_Lowercase},
+ {0x1e0c, 0x1e0c, HB_Letter_Uppercase},
+ {0x1e0d, 0x1e0d, HB_Letter_Lowercase},
+ {0x1e0e, 0x1e0e, HB_Letter_Uppercase},
+ {0x1e0f, 0x1e0f, HB_Letter_Lowercase},
+ {0x1e10, 0x1e10, HB_Letter_Uppercase},
+ {0x1e11, 0x1e11, HB_Letter_Lowercase},
+ {0x1e12, 0x1e12, HB_Letter_Uppercase},
+ {0x1e13, 0x1e13, HB_Letter_Lowercase},
+ {0x1e14, 0x1e14, HB_Letter_Uppercase},
+ {0x1e15, 0x1e15, HB_Letter_Lowercase},
+ {0x1e16, 0x1e16, HB_Letter_Uppercase},
+ {0x1e17, 0x1e17, HB_Letter_Lowercase},
+ {0x1e18, 0x1e18, HB_Letter_Uppercase},
+ {0x1e19, 0x1e19, HB_Letter_Lowercase},
+ {0x1e1a, 0x1e1a, HB_Letter_Uppercase},
+ {0x1e1b, 0x1e1b, HB_Letter_Lowercase},
+ {0x1e1c, 0x1e1c, HB_Letter_Uppercase},
+ {0x1e1d, 0x1e1d, HB_Letter_Lowercase},
+ {0x1e1e, 0x1e1e, HB_Letter_Uppercase},
+ {0x1e1f, 0x1e1f, HB_Letter_Lowercase},
+ {0x1e20, 0x1e20, HB_Letter_Uppercase},
+ {0x1e21, 0x1e21, HB_Letter_Lowercase},
+ {0x1e22, 0x1e22, HB_Letter_Uppercase},
+ {0x1e23, 0x1e23, HB_Letter_Lowercase},
+ {0x1e24, 0x1e24, HB_Letter_Uppercase},
+ {0x1e25, 0x1e25, HB_Letter_Lowercase},
+ {0x1e26, 0x1e26, HB_Letter_Uppercase},
+ {0x1e27, 0x1e27, HB_Letter_Lowercase},
+ {0x1e28, 0x1e28, HB_Letter_Uppercase},
+ {0x1e29, 0x1e29, HB_Letter_Lowercase},
+ {0x1e2a, 0x1e2a, HB_Letter_Uppercase},
+ {0x1e2b, 0x1e2b, HB_Letter_Lowercase},
+ {0x1e2c, 0x1e2c, HB_Letter_Uppercase},
+ {0x1e2d, 0x1e2d, HB_Letter_Lowercase},
+ {0x1e2e, 0x1e2e, HB_Letter_Uppercase},
+ {0x1e2f, 0x1e2f, HB_Letter_Lowercase},
+ {0x1e30, 0x1e30, HB_Letter_Uppercase},
+ {0x1e31, 0x1e31, HB_Letter_Lowercase},
+ {0x1e32, 0x1e32, HB_Letter_Uppercase},
+ {0x1e33, 0x1e33, HB_Letter_Lowercase},
+ {0x1e34, 0x1e34, HB_Letter_Uppercase},
+ {0x1e35, 0x1e35, HB_Letter_Lowercase},
+ {0x1e36, 0x1e36, HB_Letter_Uppercase},
+ {0x1e37, 0x1e37, HB_Letter_Lowercase},
+ {0x1e38, 0x1e38, HB_Letter_Uppercase},
+ {0x1e39, 0x1e39, HB_Letter_Lowercase},
+ {0x1e3a, 0x1e3a, HB_Letter_Uppercase},
+ {0x1e3b, 0x1e3b, HB_Letter_Lowercase},
+ {0x1e3c, 0x1e3c, HB_Letter_Uppercase},
+ {0x1e3d, 0x1e3d, HB_Letter_Lowercase},
+ {0x1e3e, 0x1e3e, HB_Letter_Uppercase},
+ {0x1e3f, 0x1e3f, HB_Letter_Lowercase},
+ {0x1e40, 0x1e40, HB_Letter_Uppercase},
+ {0x1e41, 0x1e41, HB_Letter_Lowercase},
+ {0x1e42, 0x1e42, HB_Letter_Uppercase},
+ {0x1e43, 0x1e43, HB_Letter_Lowercase},
+ {0x1e44, 0x1e44, HB_Letter_Uppercase},
+ {0x1e45, 0x1e45, HB_Letter_Lowercase},
+ {0x1e46, 0x1e46, HB_Letter_Uppercase},
+ {0x1e47, 0x1e47, HB_Letter_Lowercase},
+ {0x1e48, 0x1e48, HB_Letter_Uppercase},
+ {0x1e49, 0x1e49, HB_Letter_Lowercase},
+ {0x1e4a, 0x1e4a, HB_Letter_Uppercase},
+ {0x1e4b, 0x1e4b, HB_Letter_Lowercase},
+ {0x1e4c, 0x1e4c, HB_Letter_Uppercase},
+ {0x1e4d, 0x1e4d, HB_Letter_Lowercase},
+ {0x1e4e, 0x1e4e, HB_Letter_Uppercase},
+ {0x1e4f, 0x1e4f, HB_Letter_Lowercase},
+ {0x1e50, 0x1e50, HB_Letter_Uppercase},
+ {0x1e51, 0x1e51, HB_Letter_Lowercase},
+ {0x1e52, 0x1e52, HB_Letter_Uppercase},
+ {0x1e53, 0x1e53, HB_Letter_Lowercase},
+ {0x1e54, 0x1e54, HB_Letter_Uppercase},
+ {0x1e55, 0x1e55, HB_Letter_Lowercase},
+ {0x1e56, 0x1e56, HB_Letter_Uppercase},
+ {0x1e57, 0x1e57, HB_Letter_Lowercase},
+ {0x1e58, 0x1e58, HB_Letter_Uppercase},
+ {0x1e59, 0x1e59, HB_Letter_Lowercase},
+ {0x1e5a, 0x1e5a, HB_Letter_Uppercase},
+ {0x1e5b, 0x1e5b, HB_Letter_Lowercase},
+ {0x1e5c, 0x1e5c, HB_Letter_Uppercase},
+ {0x1e5d, 0x1e5d, HB_Letter_Lowercase},
+ {0x1e5e, 0x1e5e, HB_Letter_Uppercase},
+ {0x1e5f, 0x1e5f, HB_Letter_Lowercase},
+ {0x1e60, 0x1e60, HB_Letter_Uppercase},
+ {0x1e61, 0x1e61, HB_Letter_Lowercase},
+ {0x1e62, 0x1e62, HB_Letter_Uppercase},
+ {0x1e63, 0x1e63, HB_Letter_Lowercase},
+ {0x1e64, 0x1e64, HB_Letter_Uppercase},
+ {0x1e65, 0x1e65, HB_Letter_Lowercase},
+ {0x1e66, 0x1e66, HB_Letter_Uppercase},
+ {0x1e67, 0x1e67, HB_Letter_Lowercase},
+ {0x1e68, 0x1e68, HB_Letter_Uppercase},
+ {0x1e69, 0x1e69, HB_Letter_Lowercase},
+ {0x1e6a, 0x1e6a, HB_Letter_Uppercase},
+ {0x1e6b, 0x1e6b, HB_Letter_Lowercase},
+ {0x1e6c, 0x1e6c, HB_Letter_Uppercase},
+ {0x1e6d, 0x1e6d, HB_Letter_Lowercase},
+ {0x1e6e, 0x1e6e, HB_Letter_Uppercase},
+ {0x1e6f, 0x1e6f, HB_Letter_Lowercase},
+ {0x1e70, 0x1e70, HB_Letter_Uppercase},
+ {0x1e71, 0x1e71, HB_Letter_Lowercase},
+ {0x1e72, 0x1e72, HB_Letter_Uppercase},
+ {0x1e73, 0x1e73, HB_Letter_Lowercase},
+ {0x1e74, 0x1e74, HB_Letter_Uppercase},
+ {0x1e75, 0x1e75, HB_Letter_Lowercase},
+ {0x1e76, 0x1e76, HB_Letter_Uppercase},
+ {0x1e77, 0x1e77, HB_Letter_Lowercase},
+ {0x1e78, 0x1e78, HB_Letter_Uppercase},
+ {0x1e79, 0x1e79, HB_Letter_Lowercase},
+ {0x1e7a, 0x1e7a, HB_Letter_Uppercase},
+ {0x1e7b, 0x1e7b, HB_Letter_Lowercase},
+ {0x1e7c, 0x1e7c, HB_Letter_Uppercase},
+ {0x1e7d, 0x1e7d, HB_Letter_Lowercase},
+ {0x1e7e, 0x1e7e, HB_Letter_Uppercase},
+ {0x1e7f, 0x1e7f, HB_Letter_Lowercase},
+ {0x1e80, 0x1e80, HB_Letter_Uppercase},
+ {0x1e81, 0x1e81, HB_Letter_Lowercase},
+ {0x1e82, 0x1e82, HB_Letter_Uppercase},
+ {0x1e83, 0x1e83, HB_Letter_Lowercase},
+ {0x1e84, 0x1e84, HB_Letter_Uppercase},
+ {0x1e85, 0x1e85, HB_Letter_Lowercase},
+ {0x1e86, 0x1e86, HB_Letter_Uppercase},
+ {0x1e87, 0x1e87, HB_Letter_Lowercase},
+ {0x1e88, 0x1e88, HB_Letter_Uppercase},
+ {0x1e89, 0x1e89, HB_Letter_Lowercase},
+ {0x1e8a, 0x1e8a, HB_Letter_Uppercase},
+ {0x1e8b, 0x1e8b, HB_Letter_Lowercase},
+ {0x1e8c, 0x1e8c, HB_Letter_Uppercase},
+ {0x1e8d, 0x1e8d, HB_Letter_Lowercase},
+ {0x1e8e, 0x1e8e, HB_Letter_Uppercase},
+ {0x1e8f, 0x1e8f, HB_Letter_Lowercase},
+ {0x1e90, 0x1e90, HB_Letter_Uppercase},
+ {0x1e91, 0x1e91, HB_Letter_Lowercase},
+ {0x1e92, 0x1e92, HB_Letter_Uppercase},
+ {0x1e93, 0x1e93, HB_Letter_Lowercase},
+ {0x1e94, 0x1e94, HB_Letter_Uppercase},
+ {0x1e95, 0x1e9d, HB_Letter_Lowercase},
+ {0x1e9e, 0x1e9e, HB_Letter_Uppercase},
+ {0x1e9f, 0x1e9f, HB_Letter_Lowercase},
+ {0x1ea0, 0x1ea0, HB_Letter_Uppercase},
+ {0x1ea1, 0x1ea1, HB_Letter_Lowercase},
+ {0x1ea2, 0x1ea2, HB_Letter_Uppercase},
+ {0x1ea3, 0x1ea3, HB_Letter_Lowercase},
+ {0x1ea4, 0x1ea4, HB_Letter_Uppercase},
+ {0x1ea5, 0x1ea5, HB_Letter_Lowercase},
+ {0x1ea6, 0x1ea6, HB_Letter_Uppercase},
+ {0x1ea7, 0x1ea7, HB_Letter_Lowercase},
+ {0x1ea8, 0x1ea8, HB_Letter_Uppercase},
+ {0x1ea9, 0x1ea9, HB_Letter_Lowercase},
+ {0x1eaa, 0x1eaa, HB_Letter_Uppercase},
+ {0x1eab, 0x1eab, HB_Letter_Lowercase},
+ {0x1eac, 0x1eac, HB_Letter_Uppercase},
+ {0x1ead, 0x1ead, HB_Letter_Lowercase},
+ {0x1eae, 0x1eae, HB_Letter_Uppercase},
+ {0x1eaf, 0x1eaf, HB_Letter_Lowercase},
+ {0x1eb0, 0x1eb0, HB_Letter_Uppercase},
+ {0x1eb1, 0x1eb1, HB_Letter_Lowercase},
+ {0x1eb2, 0x1eb2, HB_Letter_Uppercase},
+ {0x1eb3, 0x1eb3, HB_Letter_Lowercase},
+ {0x1eb4, 0x1eb4, HB_Letter_Uppercase},
+ {0x1eb5, 0x1eb5, HB_Letter_Lowercase},
+ {0x1eb6, 0x1eb6, HB_Letter_Uppercase},
+ {0x1eb7, 0x1eb7, HB_Letter_Lowercase},
+ {0x1eb8, 0x1eb8, HB_Letter_Uppercase},
+ {0x1eb9, 0x1eb9, HB_Letter_Lowercase},
+ {0x1eba, 0x1eba, HB_Letter_Uppercase},
+ {0x1ebb, 0x1ebb, HB_Letter_Lowercase},
+ {0x1ebc, 0x1ebc, HB_Letter_Uppercase},
+ {0x1ebd, 0x1ebd, HB_Letter_Lowercase},
+ {0x1ebe, 0x1ebe, HB_Letter_Uppercase},
+ {0x1ebf, 0x1ebf, HB_Letter_Lowercase},
+ {0x1ec0, 0x1ec0, HB_Letter_Uppercase},
+ {0x1ec1, 0x1ec1, HB_Letter_Lowercase},
+ {0x1ec2, 0x1ec2, HB_Letter_Uppercase},
+ {0x1ec3, 0x1ec3, HB_Letter_Lowercase},
+ {0x1ec4, 0x1ec4, HB_Letter_Uppercase},
+ {0x1ec5, 0x1ec5, HB_Letter_Lowercase},
+ {0x1ec6, 0x1ec6, HB_Letter_Uppercase},
+ {0x1ec7, 0x1ec7, HB_Letter_Lowercase},
+ {0x1ec8, 0x1ec8, HB_Letter_Uppercase},
+ {0x1ec9, 0x1ec9, HB_Letter_Lowercase},
+ {0x1eca, 0x1eca, HB_Letter_Uppercase},
+ {0x1ecb, 0x1ecb, HB_Letter_Lowercase},
+ {0x1ecc, 0x1ecc, HB_Letter_Uppercase},
+ {0x1ecd, 0x1ecd, HB_Letter_Lowercase},
+ {0x1ece, 0x1ece, HB_Letter_Uppercase},
+ {0x1ecf, 0x1ecf, HB_Letter_Lowercase},
+ {0x1ed0, 0x1ed0, HB_Letter_Uppercase},
+ {0x1ed1, 0x1ed1, HB_Letter_Lowercase},
+ {0x1ed2, 0x1ed2, HB_Letter_Uppercase},
+ {0x1ed3, 0x1ed3, HB_Letter_Lowercase},
+ {0x1ed4, 0x1ed4, HB_Letter_Uppercase},
+ {0x1ed5, 0x1ed5, HB_Letter_Lowercase},
+ {0x1ed6, 0x1ed6, HB_Letter_Uppercase},
+ {0x1ed7, 0x1ed7, HB_Letter_Lowercase},
+ {0x1ed8, 0x1ed8, HB_Letter_Uppercase},
+ {0x1ed9, 0x1ed9, HB_Letter_Lowercase},
+ {0x1eda, 0x1eda, HB_Letter_Uppercase},
+ {0x1edb, 0x1edb, HB_Letter_Lowercase},
+ {0x1edc, 0x1edc, HB_Letter_Uppercase},
+ {0x1edd, 0x1edd, HB_Letter_Lowercase},
+ {0x1ede, 0x1ede, HB_Letter_Uppercase},
+ {0x1edf, 0x1edf, HB_Letter_Lowercase},
+ {0x1ee0, 0x1ee0, HB_Letter_Uppercase},
+ {0x1ee1, 0x1ee1, HB_Letter_Lowercase},
+ {0x1ee2, 0x1ee2, HB_Letter_Uppercase},
+ {0x1ee3, 0x1ee3, HB_Letter_Lowercase},
+ {0x1ee4, 0x1ee4, HB_Letter_Uppercase},
+ {0x1ee5, 0x1ee5, HB_Letter_Lowercase},
+ {0x1ee6, 0x1ee6, HB_Letter_Uppercase},
+ {0x1ee7, 0x1ee7, HB_Letter_Lowercase},
+ {0x1ee8, 0x1ee8, HB_Letter_Uppercase},
+ {0x1ee9, 0x1ee9, HB_Letter_Lowercase},
+ {0x1eea, 0x1eea, HB_Letter_Uppercase},
+ {0x1eeb, 0x1eeb, HB_Letter_Lowercase},
+ {0x1eec, 0x1eec, HB_Letter_Uppercase},
+ {0x1eed, 0x1eed, HB_Letter_Lowercase},
+ {0x1eee, 0x1eee, HB_Letter_Uppercase},
+ {0x1eef, 0x1eef, HB_Letter_Lowercase},
+ {0x1ef0, 0x1ef0, HB_Letter_Uppercase},
+ {0x1ef1, 0x1ef1, HB_Letter_Lowercase},
+ {0x1ef2, 0x1ef2, HB_Letter_Uppercase},
+ {0x1ef3, 0x1ef3, HB_Letter_Lowercase},
+ {0x1ef4, 0x1ef4, HB_Letter_Uppercase},
+ {0x1ef5, 0x1ef5, HB_Letter_Lowercase},
+ {0x1ef6, 0x1ef6, HB_Letter_Uppercase},
+ {0x1ef7, 0x1ef7, HB_Letter_Lowercase},
+ {0x1ef8, 0x1ef8, HB_Letter_Uppercase},
+ {0x1ef9, 0x1ef9, HB_Letter_Lowercase},
+ {0x1efa, 0x1efa, HB_Letter_Uppercase},
+ {0x1efb, 0x1efb, HB_Letter_Lowercase},
+ {0x1efc, 0x1efc, HB_Letter_Uppercase},
+ {0x1efd, 0x1efd, HB_Letter_Lowercase},
+ {0x1efe, 0x1efe, HB_Letter_Uppercase},
+ {0x1eff, 0x1f07, HB_Letter_Lowercase},
+ {0x1f08, 0x1f0f, HB_Letter_Uppercase},
+ {0x1f10, 0x1f15, HB_Letter_Lowercase},
+ {0x1f16, 0x1f17, HB_Other_NotAssigned},
+ {0x1f18, 0x1f1d, HB_Letter_Uppercase},
+ {0x1f1e, 0x1f1f, HB_Other_NotAssigned},
+ {0x1f20, 0x1f27, HB_Letter_Lowercase},
+ {0x1f28, 0x1f2f, HB_Letter_Uppercase},
+ {0x1f30, 0x1f37, HB_Letter_Lowercase},
+ {0x1f38, 0x1f3f, HB_Letter_Uppercase},
+ {0x1f40, 0x1f45, HB_Letter_Lowercase},
+ {0x1f46, 0x1f47, HB_Other_NotAssigned},
+ {0x1f48, 0x1f4d, HB_Letter_Uppercase},
+ {0x1f4e, 0x1f4f, HB_Other_NotAssigned},
+ {0x1f50, 0x1f57, HB_Letter_Lowercase},
+ {0x1f58, 0x1f58, HB_Other_NotAssigned},
+ {0x1f59, 0x1f59, HB_Letter_Uppercase},
+ {0x1f5a, 0x1f5a, HB_Other_NotAssigned},
+ {0x1f5b, 0x1f5b, HB_Letter_Uppercase},
+ {0x1f5c, 0x1f5c, HB_Other_NotAssigned},
+ {0x1f5d, 0x1f5d, HB_Letter_Uppercase},
+ {0x1f5e, 0x1f5e, HB_Other_NotAssigned},
+ {0x1f5f, 0x1f5f, HB_Letter_Uppercase},
+ {0x1f60, 0x1f67, HB_Letter_Lowercase},
+ {0x1f68, 0x1f6f, HB_Letter_Uppercase},
+ {0x1f70, 0x1f7d, HB_Letter_Lowercase},
+ {0x1f7e, 0x1f7f, HB_Other_NotAssigned},
+ {0x1f80, 0x1f87, HB_Letter_Lowercase},
+ {0x1f88, 0x1f8f, HB_Letter_Titlecase},
+ {0x1f90, 0x1f97, HB_Letter_Lowercase},
+ {0x1f98, 0x1f9f, HB_Letter_Titlecase},
+ {0x1fa0, 0x1fa7, HB_Letter_Lowercase},
+ {0x1fa8, 0x1faf, HB_Letter_Titlecase},
+ {0x1fb0, 0x1fb4, HB_Letter_Lowercase},
+ {0x1fb5, 0x1fb5, HB_Other_NotAssigned},
+ {0x1fb6, 0x1fb7, HB_Letter_Lowercase},
+ {0x1fb8, 0x1fbb, HB_Letter_Uppercase},
+ {0x1fbc, 0x1fbc, HB_Letter_Titlecase},
+ {0x1fbd, 0x1fbd, HB_Symbol_Modifier},
+ {0x1fbe, 0x1fbe, HB_Letter_Lowercase},
+ {0x1fbf, 0x1fc1, HB_Symbol_Modifier},
+ {0x1fc2, 0x1fc4, HB_Letter_Lowercase},
+ {0x1fc5, 0x1fc5, HB_Other_NotAssigned},
+ {0x1fc6, 0x1fc7, HB_Letter_Lowercase},
+ {0x1fc8, 0x1fcb, HB_Letter_Uppercase},
+ {0x1fcc, 0x1fcc, HB_Letter_Titlecase},
+ {0x1fcd, 0x1fcf, HB_Symbol_Modifier},
+ {0x1fd0, 0x1fd3, HB_Letter_Lowercase},
+ {0x1fd4, 0x1fd5, HB_Other_NotAssigned},
+ {0x1fd6, 0x1fd7, HB_Letter_Lowercase},
+ {0x1fd8, 0x1fdb, HB_Letter_Uppercase},
+ {0x1fdc, 0x1fdc, HB_Other_NotAssigned},
+ {0x1fdd, 0x1fdf, HB_Symbol_Modifier},
+ {0x1fe0, 0x1fe7, HB_Letter_Lowercase},
+ {0x1fe8, 0x1fec, HB_Letter_Uppercase},
+ {0x1fed, 0x1fef, HB_Symbol_Modifier},
+ {0x1ff0, 0x1ff1, HB_Other_NotAssigned},
+ {0x1ff2, 0x1ff4, HB_Letter_Lowercase},
+ {0x1ff5, 0x1ff5, HB_Other_NotAssigned},
+ {0x1ff6, 0x1ff7, HB_Letter_Lowercase},
+ {0x1ff8, 0x1ffb, HB_Letter_Uppercase},
+ {0x1ffc, 0x1ffc, HB_Letter_Titlecase},
+ {0x1ffd, 0x1ffe, HB_Symbol_Modifier},
+ {0x1fff, 0x1fff, HB_Other_NotAssigned},
+ {0x2000, 0x200a, HB_Separator_Space},
+ {0x200b, 0x200f, HB_Other_Format},
+ {0x2010, 0x2015, HB_Punctuation_Dash},
+ {0x2016, 0x2017, HB_Punctuation_Other},
+ {0x2018, 0x2018, HB_Punctuation_InitialQuote},
+ {0x2019, 0x2019, HB_Punctuation_FinalQuote},
+ {0x201a, 0x201a, HB_Punctuation_Open},
+ {0x201b, 0x201c, HB_Punctuation_InitialQuote},
+ {0x201d, 0x201d, HB_Punctuation_FinalQuote},
+ {0x201e, 0x201e, HB_Punctuation_Open},
+ {0x201f, 0x201f, HB_Punctuation_InitialQuote},
+ {0x2020, 0x2027, HB_Punctuation_Other},
+ {0x2028, 0x2028, HB_Separator_Line},
+ {0x2029, 0x2029, HB_Separator_Paragraph},
+ {0x202a, 0x202e, HB_Other_Format},
+ {0x202f, 0x202f, HB_Separator_Space},
+ {0x2030, 0x2038, HB_Punctuation_Other},
+ {0x2039, 0x2039, HB_Punctuation_InitialQuote},
+ {0x203a, 0x203a, HB_Punctuation_FinalQuote},
+ {0x203b, 0x203e, HB_Punctuation_Other},
+ {0x203f, 0x2040, HB_Punctuation_Connector},
+ {0x2041, 0x2043, HB_Punctuation_Other},
+ {0x2044, 0x2044, HB_Symbol_Math},
+ {0x2045, 0x2045, HB_Punctuation_Open},
+ {0x2046, 0x2046, HB_Punctuation_Close},
+ {0x2047, 0x2051, HB_Punctuation_Other},
+ {0x2052, 0x2052, HB_Symbol_Math},
+ {0x2053, 0x2053, HB_Punctuation_Other},
+ {0x2054, 0x2054, HB_Punctuation_Connector},
+ {0x2055, 0x205e, HB_Punctuation_Other},
+ {0x205f, 0x205f, HB_Separator_Space},
+ {0x2060, 0x2064, HB_Other_Format},
+ {0x2065, 0x2069, HB_Other_NotAssigned},
+ {0x206a, 0x206f, HB_Other_Format},
+ {0x2070, 0x2070, HB_Number_Other},
+ {0x2071, 0x2071, HB_Letter_Lowercase},
+ {0x2072, 0x2073, HB_Other_NotAssigned},
+ {0x2074, 0x2079, HB_Number_Other},
+ {0x207a, 0x207c, HB_Symbol_Math},
+ {0x207d, 0x207d, HB_Punctuation_Open},
+ {0x207e, 0x207e, HB_Punctuation_Close},
+ {0x207f, 0x207f, HB_Letter_Lowercase},
+ {0x2080, 0x2089, HB_Number_Other},
+ {0x208a, 0x208c, HB_Symbol_Math},
+ {0x208d, 0x208d, HB_Punctuation_Open},
+ {0x208e, 0x208e, HB_Punctuation_Close},
+ {0x208f, 0x208f, HB_Other_NotAssigned},
+ {0x2090, 0x2094, HB_Letter_Modifier},
+ {0x2095, 0x209f, HB_Other_NotAssigned},
+ {0x20a0, 0x20b5, HB_Symbol_Currency},
+ {0x20b6, 0x20cf, HB_Other_NotAssigned},
+ {0x20d0, 0x20dc, HB_Mark_NonSpacing},
+ {0x20dd, 0x20e0, HB_Mark_Enclosing},
+ {0x20e1, 0x20e1, HB_Mark_NonSpacing},
+ {0x20e2, 0x20e4, HB_Mark_Enclosing},
+ {0x20e5, 0x20f0, HB_Mark_NonSpacing},
+ {0x20f1, 0x20ff, HB_Other_NotAssigned},
+ {0x2100, 0x2101, HB_Symbol_Other},
+ {0x2102, 0x2102, HB_Letter_Uppercase},
+ {0x2103, 0x2106, HB_Symbol_Other},
+ {0x2107, 0x2107, HB_Letter_Uppercase},
+ {0x2108, 0x2109, HB_Symbol_Other},
+ {0x210a, 0x210a, HB_Letter_Lowercase},
+ {0x210b, 0x210d, HB_Letter_Uppercase},
+ {0x210e, 0x210f, HB_Letter_Lowercase},
+ {0x2110, 0x2112, HB_Letter_Uppercase},
+ {0x2113, 0x2113, HB_Letter_Lowercase},
+ {0x2114, 0x2114, HB_Symbol_Other},
+ {0x2115, 0x2115, HB_Letter_Uppercase},
+ {0x2116, 0x2118, HB_Symbol_Other},
+ {0x2119, 0x211d, HB_Letter_Uppercase},
+ {0x211e, 0x2123, HB_Symbol_Other},
+ {0x2124, 0x2124, HB_Letter_Uppercase},
+ {0x2125, 0x2125, HB_Symbol_Other},
+ {0x2126, 0x2126, HB_Letter_Uppercase},
+ {0x2127, 0x2127, HB_Symbol_Other},
+ {0x2128, 0x2128, HB_Letter_Uppercase},
+ {0x2129, 0x2129, HB_Symbol_Other},
+ {0x212a, 0x212d, HB_Letter_Uppercase},
+ {0x212e, 0x212e, HB_Symbol_Other},
+ {0x212f, 0x212f, HB_Letter_Lowercase},
+ {0x2130, 0x2133, HB_Letter_Uppercase},
+ {0x2134, 0x2134, HB_Letter_Lowercase},
+ {0x2135, 0x2138, HB_Letter_Other},
+ {0x2139, 0x2139, HB_Letter_Lowercase},
+ {0x213a, 0x213b, HB_Symbol_Other},
+ {0x213c, 0x213d, HB_Letter_Lowercase},
+ {0x213e, 0x213f, HB_Letter_Uppercase},
+ {0x2140, 0x2144, HB_Symbol_Math},
+ {0x2145, 0x2145, HB_Letter_Uppercase},
+ {0x2146, 0x2149, HB_Letter_Lowercase},
+ {0x214a, 0x214a, HB_Symbol_Other},
+ {0x214b, 0x214b, HB_Symbol_Math},
+ {0x214c, 0x214d, HB_Symbol_Other},
+ {0x214e, 0x214e, HB_Letter_Lowercase},
+ {0x214f, 0x214f, HB_Symbol_Other},
+ {0x2150, 0x2152, HB_Other_NotAssigned},
+ {0x2153, 0x215f, HB_Number_Other},
+ {0x2160, 0x2182, HB_Number_Letter},
+ {0x2183, 0x2183, HB_Letter_Uppercase},
+ {0x2184, 0x2184, HB_Letter_Lowercase},
+ {0x2185, 0x2188, HB_Number_Letter},
+ {0x2189, 0x218f, HB_Other_NotAssigned},
+ {0x2190, 0x2194, HB_Symbol_Math},
+ {0x2195, 0x2199, HB_Symbol_Other},
+ {0x219a, 0x219b, HB_Symbol_Math},
+ {0x219c, 0x219f, HB_Symbol_Other},
+ {0x21a0, 0x21a0, HB_Symbol_Math},
+ {0x21a1, 0x21a2, HB_Symbol_Other},
+ {0x21a3, 0x21a3, HB_Symbol_Math},
+ {0x21a4, 0x21a5, HB_Symbol_Other},
+ {0x21a6, 0x21a6, HB_Symbol_Math},
+ {0x21a7, 0x21ad, HB_Symbol_Other},
+ {0x21ae, 0x21ae, HB_Symbol_Math},
+ {0x21af, 0x21cd, HB_Symbol_Other},
+ {0x21ce, 0x21cf, HB_Symbol_Math},
+ {0x21d0, 0x21d1, HB_Symbol_Other},
+ {0x21d2, 0x21d2, HB_Symbol_Math},
+ {0x21d3, 0x21d3, HB_Symbol_Other},
+ {0x21d4, 0x21d4, HB_Symbol_Math},
+ {0x21d5, 0x21f3, HB_Symbol_Other},
+ {0x21f4, 0x22ff, HB_Symbol_Math},
+ {0x2300, 0x2307, HB_Symbol_Other},
+ {0x2308, 0x230b, HB_Symbol_Math},
+ {0x230c, 0x231f, HB_Symbol_Other},
+ {0x2320, 0x2321, HB_Symbol_Math},
+ {0x2322, 0x2328, HB_Symbol_Other},
+ {0x2329, 0x2329, HB_Punctuation_Open},
+ {0x232a, 0x232a, HB_Punctuation_Close},
+ {0x232b, 0x237b, HB_Symbol_Other},
+ {0x237c, 0x237c, HB_Symbol_Math},
+ {0x237d, 0x239a, HB_Symbol_Other},
+ {0x239b, 0x23b3, HB_Symbol_Math},
+ {0x23b4, 0x23db, HB_Symbol_Other},
+ {0x23dc, 0x23e1, HB_Symbol_Math},
+ {0x23e2, 0x23e7, HB_Symbol_Other},
+ {0x23e8, 0x23ff, HB_Other_NotAssigned},
+ {0x2400, 0x2426, HB_Symbol_Other},
+ {0x2427, 0x243f, HB_Other_NotAssigned},
+ {0x2440, 0x244a, HB_Symbol_Other},
+ {0x244b, 0x245f, HB_Other_NotAssigned},
+ {0x2460, 0x249b, HB_Number_Other},
+ {0x249c, 0x24e9, HB_Symbol_Other},
+ {0x24ea, 0x24ff, HB_Number_Other},
+ {0x2500, 0x25b6, HB_Symbol_Other},
+ {0x25b7, 0x25b7, HB_Symbol_Math},
+ {0x25b8, 0x25c0, HB_Symbol_Other},
+ {0x25c1, 0x25c1, HB_Symbol_Math},
+ {0x25c2, 0x25f7, HB_Symbol_Other},
+ {0x25f8, 0x25ff, HB_Symbol_Math},
+ {0x2600, 0x266e, HB_Symbol_Other},
+ {0x266f, 0x266f, HB_Symbol_Math},
+ {0x2670, 0x269d, HB_Symbol_Other},
+ {0x269e, 0x269f, HB_Other_NotAssigned},
+ {0x26a0, 0x26bc, HB_Symbol_Other},
+ {0x26bd, 0x26bf, HB_Other_NotAssigned},
+ {0x26c0, 0x26c3, HB_Symbol_Other},
+ {0x26c4, 0x2700, HB_Other_NotAssigned},
+ {0x2701, 0x2704, HB_Symbol_Other},
+ {0x2705, 0x2705, HB_Other_NotAssigned},
+ {0x2706, 0x2709, HB_Symbol_Other},
+ {0x270a, 0x270b, HB_Other_NotAssigned},
+ {0x270c, 0x2727, HB_Symbol_Other},
+ {0x2728, 0x2728, HB_Other_NotAssigned},
+ {0x2729, 0x274b, HB_Symbol_Other},
+ {0x274c, 0x274c, HB_Other_NotAssigned},
+ {0x274d, 0x274d, HB_Symbol_Other},
+ {0x274e, 0x274e, HB_Other_NotAssigned},
+ {0x274f, 0x2752, HB_Symbol_Other},
+ {0x2753, 0x2755, HB_Other_NotAssigned},
+ {0x2756, 0x2756, HB_Symbol_Other},
+ {0x2757, 0x2757, HB_Other_NotAssigned},
+ {0x2758, 0x275e, HB_Symbol_Other},
+ {0x275f, 0x2760, HB_Other_NotAssigned},
+ {0x2761, 0x2767, HB_Symbol_Other},
+ {0x2768, 0x2768, HB_Punctuation_Open},
+ {0x2769, 0x2769, HB_Punctuation_Close},
+ {0x276a, 0x276a, HB_Punctuation_Open},
+ {0x276b, 0x276b, HB_Punctuation_Close},
+ {0x276c, 0x276c, HB_Punctuation_Open},
+ {0x276d, 0x276d, HB_Punctuation_Close},
+ {0x276e, 0x276e, HB_Punctuation_Open},
+ {0x276f, 0x276f, HB_Punctuation_Close},
+ {0x2770, 0x2770, HB_Punctuation_Open},
+ {0x2771, 0x2771, HB_Punctuation_Close},
+ {0x2772, 0x2772, HB_Punctuation_Open},
+ {0x2773, 0x2773, HB_Punctuation_Close},
+ {0x2774, 0x2774, HB_Punctuation_Open},
+ {0x2775, 0x2775, HB_Punctuation_Close},
+ {0x2776, 0x2793, HB_Number_Other},
+ {0x2794, 0x2794, HB_Symbol_Other},
+ {0x2795, 0x2797, HB_Other_NotAssigned},
+ {0x2798, 0x27af, HB_Symbol_Other},
+ {0x27b0, 0x27b0, HB_Other_NotAssigned},
+ {0x27b1, 0x27be, HB_Symbol_Other},
+ {0x27bf, 0x27bf, HB_Other_NotAssigned},
+ {0x27c0, 0x27c4, HB_Symbol_Math},
+ {0x27c5, 0x27c5, HB_Punctuation_Open},
+ {0x27c6, 0x27c6, HB_Punctuation_Close},
+ {0x27c7, 0x27ca, HB_Symbol_Math},
+ {0x27cb, 0x27cb, HB_Other_NotAssigned},
+ {0x27cc, 0x27cc, HB_Symbol_Math},
+ {0x27cd, 0x27cf, HB_Other_NotAssigned},
+ {0x27d0, 0x27e5, HB_Symbol_Math},
+ {0x27e6, 0x27e6, HB_Punctuation_Open},
+ {0x27e7, 0x27e7, HB_Punctuation_Close},
+ {0x27e8, 0x27e8, HB_Punctuation_Open},
+ {0x27e9, 0x27e9, HB_Punctuation_Close},
+ {0x27ea, 0x27ea, HB_Punctuation_Open},
+ {0x27eb, 0x27eb, HB_Punctuation_Close},
+ {0x27ec, 0x27ec, HB_Punctuation_Open},
+ {0x27ed, 0x27ed, HB_Punctuation_Close},
+ {0x27ee, 0x27ee, HB_Punctuation_Open},
+ {0x27ef, 0x27ef, HB_Punctuation_Close},
+ {0x27f0, 0x27ff, HB_Symbol_Math},
+ {0x2800, 0x28ff, HB_Symbol_Other},
+ {0x2900, 0x2982, HB_Symbol_Math},
+ {0x2983, 0x2983, HB_Punctuation_Open},
+ {0x2984, 0x2984, HB_Punctuation_Close},
+ {0x2985, 0x2985, HB_Punctuation_Open},
+ {0x2986, 0x2986, HB_Punctuation_Close},
+ {0x2987, 0x2987, HB_Punctuation_Open},
+ {0x2988, 0x2988, HB_Punctuation_Close},
+ {0x2989, 0x2989, HB_Punctuation_Open},
+ {0x298a, 0x298a, HB_Punctuation_Close},
+ {0x298b, 0x298b, HB_Punctuation_Open},
+ {0x298c, 0x298c, HB_Punctuation_Close},
+ {0x298d, 0x298d, HB_Punctuation_Open},
+ {0x298e, 0x298e, HB_Punctuation_Close},
+ {0x298f, 0x298f, HB_Punctuation_Open},
+ {0x2990, 0x2990, HB_Punctuation_Close},
+ {0x2991, 0x2991, HB_Punctuation_Open},
+ {0x2992, 0x2992, HB_Punctuation_Close},
+ {0x2993, 0x2993, HB_Punctuation_Open},
+ {0x2994, 0x2994, HB_Punctuation_Close},
+ {0x2995, 0x2995, HB_Punctuation_Open},
+ {0x2996, 0x2996, HB_Punctuation_Close},
+ {0x2997, 0x2997, HB_Punctuation_Open},
+ {0x2998, 0x2998, HB_Punctuation_Close},
+ {0x2999, 0x29d7, HB_Symbol_Math},
+ {0x29d8, 0x29d8, HB_Punctuation_Open},
+ {0x29d9, 0x29d9, HB_Punctuation_Close},
+ {0x29da, 0x29da, HB_Punctuation_Open},
+ {0x29db, 0x29db, HB_Punctuation_Close},
+ {0x29dc, 0x29fb, HB_Symbol_Math},
+ {0x29fc, 0x29fc, HB_Punctuation_Open},
+ {0x29fd, 0x29fd, HB_Punctuation_Close},
+ {0x29fe, 0x2aff, HB_Symbol_Math},
+ {0x2b00, 0x2b2f, HB_Symbol_Other},
+ {0x2b30, 0x2b44, HB_Symbol_Math},
+ {0x2b45, 0x2b46, HB_Symbol_Other},
+ {0x2b47, 0x2b4c, HB_Symbol_Math},
+ {0x2b4d, 0x2b4f, HB_Other_NotAssigned},
+ {0x2b50, 0x2b54, HB_Symbol_Other},
+ {0x2b55, 0x2bff, HB_Other_NotAssigned},
+ {0x2c00, 0x2c2e, HB_Letter_Uppercase},
+ {0x2c2f, 0x2c2f, HB_Other_NotAssigned},
+ {0x2c30, 0x2c5e, HB_Letter_Lowercase},
+ {0x2c5f, 0x2c5f, HB_Other_NotAssigned},
+ {0x2c60, 0x2c60, HB_Letter_Uppercase},
+ {0x2c61, 0x2c61, HB_Letter_Lowercase},
+ {0x2c62, 0x2c64, HB_Letter_Uppercase},
+ {0x2c65, 0x2c66, HB_Letter_Lowercase},
+ {0x2c67, 0x2c67, HB_Letter_Uppercase},
+ {0x2c68, 0x2c68, HB_Letter_Lowercase},
+ {0x2c69, 0x2c69, HB_Letter_Uppercase},
+ {0x2c6a, 0x2c6a, HB_Letter_Lowercase},
+ {0x2c6b, 0x2c6b, HB_Letter_Uppercase},
+ {0x2c6c, 0x2c6c, HB_Letter_Lowercase},
+ {0x2c6d, 0x2c6f, HB_Letter_Uppercase},
+ {0x2c70, 0x2c70, HB_Other_NotAssigned},
+ {0x2c71, 0x2c71, HB_Letter_Lowercase},
+ {0x2c72, 0x2c72, HB_Letter_Uppercase},
+ {0x2c73, 0x2c74, HB_Letter_Lowercase},
+ {0x2c75, 0x2c75, HB_Letter_Uppercase},
+ {0x2c76, 0x2c7c, HB_Letter_Lowercase},
+ {0x2c7d, 0x2c7d, HB_Letter_Modifier},
+ {0x2c7e, 0x2c7f, HB_Other_NotAssigned},
+ {0x2c80, 0x2c80, HB_Letter_Uppercase},
+ {0x2c81, 0x2c81, HB_Letter_Lowercase},
+ {0x2c82, 0x2c82, HB_Letter_Uppercase},
+ {0x2c83, 0x2c83, HB_Letter_Lowercase},
+ {0x2c84, 0x2c84, HB_Letter_Uppercase},
+ {0x2c85, 0x2c85, HB_Letter_Lowercase},
+ {0x2c86, 0x2c86, HB_Letter_Uppercase},
+ {0x2c87, 0x2c87, HB_Letter_Lowercase},
+ {0x2c88, 0x2c88, HB_Letter_Uppercase},
+ {0x2c89, 0x2c89, HB_Letter_Lowercase},
+ {0x2c8a, 0x2c8a, HB_Letter_Uppercase},
+ {0x2c8b, 0x2c8b, HB_Letter_Lowercase},
+ {0x2c8c, 0x2c8c, HB_Letter_Uppercase},
+ {0x2c8d, 0x2c8d, HB_Letter_Lowercase},
+ {0x2c8e, 0x2c8e, HB_Letter_Uppercase},
+ {0x2c8f, 0x2c8f, HB_Letter_Lowercase},
+ {0x2c90, 0x2c90, HB_Letter_Uppercase},
+ {0x2c91, 0x2c91, HB_Letter_Lowercase},
+ {0x2c92, 0x2c92, HB_Letter_Uppercase},
+ {0x2c93, 0x2c93, HB_Letter_Lowercase},
+ {0x2c94, 0x2c94, HB_Letter_Uppercase},
+ {0x2c95, 0x2c95, HB_Letter_Lowercase},
+ {0x2c96, 0x2c96, HB_Letter_Uppercase},
+ {0x2c97, 0x2c97, HB_Letter_Lowercase},
+ {0x2c98, 0x2c98, HB_Letter_Uppercase},
+ {0x2c99, 0x2c99, HB_Letter_Lowercase},
+ {0x2c9a, 0x2c9a, HB_Letter_Uppercase},
+ {0x2c9b, 0x2c9b, HB_Letter_Lowercase},
+ {0x2c9c, 0x2c9c, HB_Letter_Uppercase},
+ {0x2c9d, 0x2c9d, HB_Letter_Lowercase},
+ {0x2c9e, 0x2c9e, HB_Letter_Uppercase},
+ {0x2c9f, 0x2c9f, HB_Letter_Lowercase},
+ {0x2ca0, 0x2ca0, HB_Letter_Uppercase},
+ {0x2ca1, 0x2ca1, HB_Letter_Lowercase},
+ {0x2ca2, 0x2ca2, HB_Letter_Uppercase},
+ {0x2ca3, 0x2ca3, HB_Letter_Lowercase},
+ {0x2ca4, 0x2ca4, HB_Letter_Uppercase},
+ {0x2ca5, 0x2ca5, HB_Letter_Lowercase},
+ {0x2ca6, 0x2ca6, HB_Letter_Uppercase},
+ {0x2ca7, 0x2ca7, HB_Letter_Lowercase},
+ {0x2ca8, 0x2ca8, HB_Letter_Uppercase},
+ {0x2ca9, 0x2ca9, HB_Letter_Lowercase},
+ {0x2caa, 0x2caa, HB_Letter_Uppercase},
+ {0x2cab, 0x2cab, HB_Letter_Lowercase},
+ {0x2cac, 0x2cac, HB_Letter_Uppercase},
+ {0x2cad, 0x2cad, HB_Letter_Lowercase},
+ {0x2cae, 0x2cae, HB_Letter_Uppercase},
+ {0x2caf, 0x2caf, HB_Letter_Lowercase},
+ {0x2cb0, 0x2cb0, HB_Letter_Uppercase},
+ {0x2cb1, 0x2cb1, HB_Letter_Lowercase},
+ {0x2cb2, 0x2cb2, HB_Letter_Uppercase},
+ {0x2cb3, 0x2cb3, HB_Letter_Lowercase},
+ {0x2cb4, 0x2cb4, HB_Letter_Uppercase},
+ {0x2cb5, 0x2cb5, HB_Letter_Lowercase},
+ {0x2cb6, 0x2cb6, HB_Letter_Uppercase},
+ {0x2cb7, 0x2cb7, HB_Letter_Lowercase},
+ {0x2cb8, 0x2cb8, HB_Letter_Uppercase},
+ {0x2cb9, 0x2cb9, HB_Letter_Lowercase},
+ {0x2cba, 0x2cba, HB_Letter_Uppercase},
+ {0x2cbb, 0x2cbb, HB_Letter_Lowercase},
+ {0x2cbc, 0x2cbc, HB_Letter_Uppercase},
+ {0x2cbd, 0x2cbd, HB_Letter_Lowercase},
+ {0x2cbe, 0x2cbe, HB_Letter_Uppercase},
+ {0x2cbf, 0x2cbf, HB_Letter_Lowercase},
+ {0x2cc0, 0x2cc0, HB_Letter_Uppercase},
+ {0x2cc1, 0x2cc1, HB_Letter_Lowercase},
+ {0x2cc2, 0x2cc2, HB_Letter_Uppercase},
+ {0x2cc3, 0x2cc3, HB_Letter_Lowercase},
+ {0x2cc4, 0x2cc4, HB_Letter_Uppercase},
+ {0x2cc5, 0x2cc5, HB_Letter_Lowercase},
+ {0x2cc6, 0x2cc6, HB_Letter_Uppercase},
+ {0x2cc7, 0x2cc7, HB_Letter_Lowercase},
+ {0x2cc8, 0x2cc8, HB_Letter_Uppercase},
+ {0x2cc9, 0x2cc9, HB_Letter_Lowercase},
+ {0x2cca, 0x2cca, HB_Letter_Uppercase},
+ {0x2ccb, 0x2ccb, HB_Letter_Lowercase},
+ {0x2ccc, 0x2ccc, HB_Letter_Uppercase},
+ {0x2ccd, 0x2ccd, HB_Letter_Lowercase},
+ {0x2cce, 0x2cce, HB_Letter_Uppercase},
+ {0x2ccf, 0x2ccf, HB_Letter_Lowercase},
+ {0x2cd0, 0x2cd0, HB_Letter_Uppercase},
+ {0x2cd1, 0x2cd1, HB_Letter_Lowercase},
+ {0x2cd2, 0x2cd2, HB_Letter_Uppercase},
+ {0x2cd3, 0x2cd3, HB_Letter_Lowercase},
+ {0x2cd4, 0x2cd4, HB_Letter_Uppercase},
+ {0x2cd5, 0x2cd5, HB_Letter_Lowercase},
+ {0x2cd6, 0x2cd6, HB_Letter_Uppercase},
+ {0x2cd7, 0x2cd7, HB_Letter_Lowercase},
+ {0x2cd8, 0x2cd8, HB_Letter_Uppercase},
+ {0x2cd9, 0x2cd9, HB_Letter_Lowercase},
+ {0x2cda, 0x2cda, HB_Letter_Uppercase},
+ {0x2cdb, 0x2cdb, HB_Letter_Lowercase},
+ {0x2cdc, 0x2cdc, HB_Letter_Uppercase},
+ {0x2cdd, 0x2cdd, HB_Letter_Lowercase},
+ {0x2cde, 0x2cde, HB_Letter_Uppercase},
+ {0x2cdf, 0x2cdf, HB_Letter_Lowercase},
+ {0x2ce0, 0x2ce0, HB_Letter_Uppercase},
+ {0x2ce1, 0x2ce1, HB_Letter_Lowercase},
+ {0x2ce2, 0x2ce2, HB_Letter_Uppercase},
+ {0x2ce3, 0x2ce4, HB_Letter_Lowercase},
+ {0x2ce5, 0x2cea, HB_Symbol_Other},
+ {0x2ceb, 0x2cf8, HB_Other_NotAssigned},
+ {0x2cf9, 0x2cfc, HB_Punctuation_Other},
+ {0x2cfd, 0x2cfd, HB_Number_Other},
+ {0x2cfe, 0x2cff, HB_Punctuation_Other},
+ {0x2d00, 0x2d25, HB_Letter_Lowercase},
+ {0x2d26, 0x2d2f, HB_Other_NotAssigned},
+ {0x2d30, 0x2d65, HB_Letter_Other},
+ {0x2d66, 0x2d6e, HB_Other_NotAssigned},
+ {0x2d6f, 0x2d6f, HB_Letter_Modifier},
+ {0x2d70, 0x2d7f, HB_Other_NotAssigned},
+ {0x2d80, 0x2d96, HB_Letter_Other},
+ {0x2d97, 0x2d9f, HB_Other_NotAssigned},
+ {0x2da0, 0x2da6, HB_Letter_Other},
+ {0x2da7, 0x2da7, HB_Other_NotAssigned},
+ {0x2da8, 0x2dae, HB_Letter_Other},
+ {0x2daf, 0x2daf, HB_Other_NotAssigned},
+ {0x2db0, 0x2db6, HB_Letter_Other},
+ {0x2db7, 0x2db7, HB_Other_NotAssigned},
+ {0x2db8, 0x2dbe, HB_Letter_Other},
+ {0x2dbf, 0x2dbf, HB_Other_NotAssigned},
+ {0x2dc0, 0x2dc6, HB_Letter_Other},
+ {0x2dc7, 0x2dc7, HB_Other_NotAssigned},
+ {0x2dc8, 0x2dce, HB_Letter_Other},
+ {0x2dcf, 0x2dcf, HB_Other_NotAssigned},
+ {0x2dd0, 0x2dd6, HB_Letter_Other},
+ {0x2dd7, 0x2dd7, HB_Other_NotAssigned},
+ {0x2dd8, 0x2dde, HB_Letter_Other},
+ {0x2ddf, 0x2ddf, HB_Other_NotAssigned},
+ {0x2de0, 0x2dff, HB_Mark_NonSpacing},
+ {0x2e00, 0x2e01, HB_Punctuation_Other},
+ {0x2e02, 0x2e02, HB_Punctuation_InitialQuote},
+ {0x2e03, 0x2e03, HB_Punctuation_FinalQuote},
+ {0x2e04, 0x2e04, HB_Punctuation_InitialQuote},
+ {0x2e05, 0x2e05, HB_Punctuation_FinalQuote},
+ {0x2e06, 0x2e08, HB_Punctuation_Other},
+ {0x2e09, 0x2e09, HB_Punctuation_InitialQuote},
+ {0x2e0a, 0x2e0a, HB_Punctuation_FinalQuote},
+ {0x2e0b, 0x2e0b, HB_Punctuation_Other},
+ {0x2e0c, 0x2e0c, HB_Punctuation_InitialQuote},
+ {0x2e0d, 0x2e0d, HB_Punctuation_FinalQuote},
+ {0x2e0e, 0x2e16, HB_Punctuation_Other},
+ {0x2e17, 0x2e17, HB_Punctuation_Dash},
+ {0x2e18, 0x2e19, HB_Punctuation_Other},
+ {0x2e1a, 0x2e1a, HB_Punctuation_Dash},
+ {0x2e1b, 0x2e1b, HB_Punctuation_Other},
+ {0x2e1c, 0x2e1c, HB_Punctuation_InitialQuote},
+ {0x2e1d, 0x2e1d, HB_Punctuation_FinalQuote},
+ {0x2e1e, 0x2e1f, HB_Punctuation_Other},
+ {0x2e20, 0x2e20, HB_Punctuation_InitialQuote},
+ {0x2e21, 0x2e21, HB_Punctuation_FinalQuote},
+ {0x2e22, 0x2e22, HB_Punctuation_Open},
+ {0x2e23, 0x2e23, HB_Punctuation_Close},
+ {0x2e24, 0x2e24, HB_Punctuation_Open},
+ {0x2e25, 0x2e25, HB_Punctuation_Close},
+ {0x2e26, 0x2e26, HB_Punctuation_Open},
+ {0x2e27, 0x2e27, HB_Punctuation_Close},
+ {0x2e28, 0x2e28, HB_Punctuation_Open},
+ {0x2e29, 0x2e29, HB_Punctuation_Close},
+ {0x2e2a, 0x2e2e, HB_Punctuation_Other},
+ {0x2e2f, 0x2e2f, HB_Letter_Modifier},
+ {0x2e30, 0x2e30, HB_Punctuation_Other},
+ {0x2e31, 0x2e7f, HB_Other_NotAssigned},
+ {0x2e80, 0x2e99, HB_Symbol_Other},
+ {0x2e9a, 0x2e9a, HB_Other_NotAssigned},
+ {0x2e9b, 0x2ef3, HB_Symbol_Other},
+ {0x2ef4, 0x2eff, HB_Other_NotAssigned},
+ {0x2f00, 0x2fd5, HB_Symbol_Other},
+ {0x2fd6, 0x2fef, HB_Other_NotAssigned},
+ {0x2ff0, 0x2ffb, HB_Symbol_Other},
+ {0x2ffc, 0x2fff, HB_Other_NotAssigned},
+ {0x3000, 0x3000, HB_Separator_Space},
+ {0x3001, 0x3003, HB_Punctuation_Other},
+ {0x3004, 0x3004, HB_Symbol_Other},
+ {0x3005, 0x3005, HB_Letter_Modifier},
+ {0x3006, 0x3006, HB_Letter_Other},
+ {0x3007, 0x3007, HB_Number_Letter},
+ {0x3008, 0x3008, HB_Punctuation_Open},
+ {0x3009, 0x3009, HB_Punctuation_Close},
+ {0x300a, 0x300a, HB_Punctuation_Open},
+ {0x300b, 0x300b, HB_Punctuation_Close},
+ {0x300c, 0x300c, HB_Punctuation_Open},
+ {0x300d, 0x300d, HB_Punctuation_Close},
+ {0x300e, 0x300e, HB_Punctuation_Open},
+ {0x300f, 0x300f, HB_Punctuation_Close},
+ {0x3010, 0x3010, HB_Punctuation_Open},
+ {0x3011, 0x3011, HB_Punctuation_Close},
+ {0x3012, 0x3013, HB_Symbol_Other},
+ {0x3014, 0x3014, HB_Punctuation_Open},
+ {0x3015, 0x3015, HB_Punctuation_Close},
+ {0x3016, 0x3016, HB_Punctuation_Open},
+ {0x3017, 0x3017, HB_Punctuation_Close},
+ {0x3018, 0x3018, HB_Punctuation_Open},
+ {0x3019, 0x3019, HB_Punctuation_Close},
+ {0x301a, 0x301a, HB_Punctuation_Open},
+ {0x301b, 0x301b, HB_Punctuation_Close},
+ {0x301c, 0x301c, HB_Punctuation_Dash},
+ {0x301d, 0x301d, HB_Punctuation_Open},
+ {0x301e, 0x301f, HB_Punctuation_Close},
+ {0x3020, 0x3020, HB_Symbol_Other},
+ {0x3021, 0x3029, HB_Number_Letter},
+ {0x302a, 0x302f, HB_Mark_NonSpacing},
+ {0x3030, 0x3030, HB_Punctuation_Dash},
+ {0x3031, 0x3035, HB_Letter_Modifier},
+ {0x3036, 0x3037, HB_Symbol_Other},
+ {0x3038, 0x303a, HB_Number_Letter},
+ {0x303b, 0x303b, HB_Letter_Modifier},
+ {0x303c, 0x303c, HB_Letter_Other},
+ {0x303d, 0x303d, HB_Punctuation_Other},
+ {0x303e, 0x303f, HB_Symbol_Other},
+ {0x3040, 0x3040, HB_Other_NotAssigned},
+ {0x3041, 0x3096, HB_Letter_Other},
+ {0x3097, 0x3098, HB_Other_NotAssigned},
+ {0x3099, 0x309a, HB_Mark_NonSpacing},
+ {0x309b, 0x309c, HB_Symbol_Modifier},
+ {0x309d, 0x309e, HB_Letter_Modifier},
+ {0x309f, 0x309f, HB_Letter_Other},
+ {0x30a0, 0x30a0, HB_Punctuation_Dash},
+ {0x30a1, 0x30fa, HB_Letter_Other},
+ {0x30fb, 0x30fb, HB_Punctuation_Other},
+ {0x30fc, 0x30fe, HB_Letter_Modifier},
+ {0x30ff, 0x30ff, HB_Letter_Other},
+ {0x3100, 0x3104, HB_Other_NotAssigned},
+ {0x3105, 0x312d, HB_Letter_Other},
+ {0x312e, 0x3130, HB_Other_NotAssigned},
+ {0x3131, 0x318e, HB_Letter_Other},
+ {0x318f, 0x318f, HB_Other_NotAssigned},
+ {0x3190, 0x3191, HB_Symbol_Other},
+ {0x3192, 0x3195, HB_Number_Other},
+ {0x3196, 0x319f, HB_Symbol_Other},
+ {0x31a0, 0x31b7, HB_Letter_Other},
+ {0x31b8, 0x31bf, HB_Other_NotAssigned},
+ {0x31c0, 0x31e3, HB_Symbol_Other},
+ {0x31e4, 0x31ef, HB_Other_NotAssigned},
+ {0x31f0, 0x31ff, HB_Letter_Other},
+ {0x3200, 0x321e, HB_Symbol_Other},
+ {0x321f, 0x321f, HB_Other_NotAssigned},
+ {0x3220, 0x3229, HB_Number_Other},
+ {0x322a, 0x3243, HB_Symbol_Other},
+ {0x3244, 0x324f, HB_Other_NotAssigned},
+ {0x3250, 0x3250, HB_Symbol_Other},
+ {0x3251, 0x325f, HB_Number_Other},
+ {0x3260, 0x327f, HB_Symbol_Other},
+ {0x3280, 0x3289, HB_Number_Other},
+ {0x328a, 0x32b0, HB_Symbol_Other},
+ {0x32b1, 0x32bf, HB_Number_Other},
+ {0x32c0, 0x32fe, HB_Symbol_Other},
+ {0x32ff, 0x32ff, HB_Other_NotAssigned},
+ {0x3300, 0x33ff, HB_Symbol_Other},
+ {0x3400, 0x4db5, HB_Letter_Other},
+ {0x4db6, 0x4dbf, HB_Other_NotAssigned},
+ {0x4dc0, 0x4dff, HB_Symbol_Other},
+ {0x4e00, 0x9fc3, HB_Letter_Other},
+ {0x9fc4, 0x9fff, HB_Other_NotAssigned},
+ {0xa000, 0xa014, HB_Letter_Other},
+ {0xa015, 0xa015, HB_Letter_Modifier},
+ {0xa016, 0xa48c, HB_Letter_Other},
+ {0xa48d, 0xa48f, HB_Other_NotAssigned},
+ {0xa490, 0xa4c6, HB_Symbol_Other},
+ {0xa4c7, 0xa4ff, HB_Other_NotAssigned},
+ {0xa500, 0xa60b, HB_Letter_Other},
+ {0xa60c, 0xa60c, HB_Letter_Modifier},
+ {0xa60d, 0xa60f, HB_Punctuation_Other},
+ {0xa610, 0xa61f, HB_Letter_Other},
+ {0xa620, 0xa629, HB_Number_DecimalDigit},
+ {0xa62a, 0xa62b, HB_Letter_Other},
+ {0xa62c, 0xa63f, HB_Other_NotAssigned},
+ {0xa640, 0xa640, HB_Letter_Uppercase},
+ {0xa641, 0xa641, HB_Letter_Lowercase},
+ {0xa642, 0xa642, HB_Letter_Uppercase},
+ {0xa643, 0xa643, HB_Letter_Lowercase},
+ {0xa644, 0xa644, HB_Letter_Uppercase},
+ {0xa645, 0xa645, HB_Letter_Lowercase},
+ {0xa646, 0xa646, HB_Letter_Uppercase},
+ {0xa647, 0xa647, HB_Letter_Lowercase},
+ {0xa648, 0xa648, HB_Letter_Uppercase},
+ {0xa649, 0xa649, HB_Letter_Lowercase},
+ {0xa64a, 0xa64a, HB_Letter_Uppercase},
+ {0xa64b, 0xa64b, HB_Letter_Lowercase},
+ {0xa64c, 0xa64c, HB_Letter_Uppercase},
+ {0xa64d, 0xa64d, HB_Letter_Lowercase},
+ {0xa64e, 0xa64e, HB_Letter_Uppercase},
+ {0xa64f, 0xa64f, HB_Letter_Lowercase},
+ {0xa650, 0xa650, HB_Letter_Uppercase},
+ {0xa651, 0xa651, HB_Letter_Lowercase},
+ {0xa652, 0xa652, HB_Letter_Uppercase},
+ {0xa653, 0xa653, HB_Letter_Lowercase},
+ {0xa654, 0xa654, HB_Letter_Uppercase},
+ {0xa655, 0xa655, HB_Letter_Lowercase},
+ {0xa656, 0xa656, HB_Letter_Uppercase},
+ {0xa657, 0xa657, HB_Letter_Lowercase},
+ {0xa658, 0xa658, HB_Letter_Uppercase},
+ {0xa659, 0xa659, HB_Letter_Lowercase},
+ {0xa65a, 0xa65a, HB_Letter_Uppercase},
+ {0xa65b, 0xa65b, HB_Letter_Lowercase},
+ {0xa65c, 0xa65c, HB_Letter_Uppercase},
+ {0xa65d, 0xa65d, HB_Letter_Lowercase},
+ {0xa65e, 0xa65e, HB_Letter_Uppercase},
+ {0xa65f, 0xa65f, HB_Letter_Lowercase},
+ {0xa660, 0xa661, HB_Other_NotAssigned},
+ {0xa662, 0xa662, HB_Letter_Uppercase},
+ {0xa663, 0xa663, HB_Letter_Lowercase},
+ {0xa664, 0xa664, HB_Letter_Uppercase},
+ {0xa665, 0xa665, HB_Letter_Lowercase},
+ {0xa666, 0xa666, HB_Letter_Uppercase},
+ {0xa667, 0xa667, HB_Letter_Lowercase},
+ {0xa668, 0xa668, HB_Letter_Uppercase},
+ {0xa669, 0xa669, HB_Letter_Lowercase},
+ {0xa66a, 0xa66a, HB_Letter_Uppercase},
+ {0xa66b, 0xa66b, HB_Letter_Lowercase},
+ {0xa66c, 0xa66c, HB_Letter_Uppercase},
+ {0xa66d, 0xa66d, HB_Letter_Lowercase},
+ {0xa66e, 0xa66e, HB_Letter_Other},
+ {0xa66f, 0xa66f, HB_Mark_NonSpacing},
+ {0xa670, 0xa672, HB_Mark_Enclosing},
+ {0xa673, 0xa673, HB_Punctuation_Other},
+ {0xa674, 0xa67b, HB_Other_NotAssigned},
+ {0xa67c, 0xa67d, HB_Mark_NonSpacing},
+ {0xa67e, 0xa67e, HB_Punctuation_Other},
+ {0xa67f, 0xa67f, HB_Letter_Modifier},
+ {0xa680, 0xa680, HB_Letter_Uppercase},
+ {0xa681, 0xa681, HB_Letter_Lowercase},
+ {0xa682, 0xa682, HB_Letter_Uppercase},
+ {0xa683, 0xa683, HB_Letter_Lowercase},
+ {0xa684, 0xa684, HB_Letter_Uppercase},
+ {0xa685, 0xa685, HB_Letter_Lowercase},
+ {0xa686, 0xa686, HB_Letter_Uppercase},
+ {0xa687, 0xa687, HB_Letter_Lowercase},
+ {0xa688, 0xa688, HB_Letter_Uppercase},
+ {0xa689, 0xa689, HB_Letter_Lowercase},
+ {0xa68a, 0xa68a, HB_Letter_Uppercase},
+ {0xa68b, 0xa68b, HB_Letter_Lowercase},
+ {0xa68c, 0xa68c, HB_Letter_Uppercase},
+ {0xa68d, 0xa68d, HB_Letter_Lowercase},
+ {0xa68e, 0xa68e, HB_Letter_Uppercase},
+ {0xa68f, 0xa68f, HB_Letter_Lowercase},
+ {0xa690, 0xa690, HB_Letter_Uppercase},
+ {0xa691, 0xa691, HB_Letter_Lowercase},
+ {0xa692, 0xa692, HB_Letter_Uppercase},
+ {0xa693, 0xa693, HB_Letter_Lowercase},
+ {0xa694, 0xa694, HB_Letter_Uppercase},
+ {0xa695, 0xa695, HB_Letter_Lowercase},
+ {0xa696, 0xa696, HB_Letter_Uppercase},
+ {0xa697, 0xa697, HB_Letter_Lowercase},
+ {0xa698, 0xa6ff, HB_Other_NotAssigned},
+ {0xa700, 0xa716, HB_Symbol_Modifier},
+ {0xa717, 0xa71f, HB_Letter_Modifier},
+ {0xa720, 0xa721, HB_Symbol_Modifier},
+ {0xa722, 0xa722, HB_Letter_Uppercase},
+ {0xa723, 0xa723, HB_Letter_Lowercase},
+ {0xa724, 0xa724, HB_Letter_Uppercase},
+ {0xa725, 0xa725, HB_Letter_Lowercase},
+ {0xa726, 0xa726, HB_Letter_Uppercase},
+ {0xa727, 0xa727, HB_Letter_Lowercase},
+ {0xa728, 0xa728, HB_Letter_Uppercase},
+ {0xa729, 0xa729, HB_Letter_Lowercase},
+ {0xa72a, 0xa72a, HB_Letter_Uppercase},
+ {0xa72b, 0xa72b, HB_Letter_Lowercase},
+ {0xa72c, 0xa72c, HB_Letter_Uppercase},
+ {0xa72d, 0xa72d, HB_Letter_Lowercase},
+ {0xa72e, 0xa72e, HB_Letter_Uppercase},
+ {0xa72f, 0xa731, HB_Letter_Lowercase},
+ {0xa732, 0xa732, HB_Letter_Uppercase},
+ {0xa733, 0xa733, HB_Letter_Lowercase},
+ {0xa734, 0xa734, HB_Letter_Uppercase},
+ {0xa735, 0xa735, HB_Letter_Lowercase},
+ {0xa736, 0xa736, HB_Letter_Uppercase},
+ {0xa737, 0xa737, HB_Letter_Lowercase},
+ {0xa738, 0xa738, HB_Letter_Uppercase},
+ {0xa739, 0xa739, HB_Letter_Lowercase},
+ {0xa73a, 0xa73a, HB_Letter_Uppercase},
+ {0xa73b, 0xa73b, HB_Letter_Lowercase},
+ {0xa73c, 0xa73c, HB_Letter_Uppercase},
+ {0xa73d, 0xa73d, HB_Letter_Lowercase},
+ {0xa73e, 0xa73e, HB_Letter_Uppercase},
+ {0xa73f, 0xa73f, HB_Letter_Lowercase},
+ {0xa740, 0xa740, HB_Letter_Uppercase},
+ {0xa741, 0xa741, HB_Letter_Lowercase},
+ {0xa742, 0xa742, HB_Letter_Uppercase},
+ {0xa743, 0xa743, HB_Letter_Lowercase},
+ {0xa744, 0xa744, HB_Letter_Uppercase},
+ {0xa745, 0xa745, HB_Letter_Lowercase},
+ {0xa746, 0xa746, HB_Letter_Uppercase},
+ {0xa747, 0xa747, HB_Letter_Lowercase},
+ {0xa748, 0xa748, HB_Letter_Uppercase},
+ {0xa749, 0xa749, HB_Letter_Lowercase},
+ {0xa74a, 0xa74a, HB_Letter_Uppercase},
+ {0xa74b, 0xa74b, HB_Letter_Lowercase},
+ {0xa74c, 0xa74c, HB_Letter_Uppercase},
+ {0xa74d, 0xa74d, HB_Letter_Lowercase},
+ {0xa74e, 0xa74e, HB_Letter_Uppercase},
+ {0xa74f, 0xa74f, HB_Letter_Lowercase},
+ {0xa750, 0xa750, HB_Letter_Uppercase},
+ {0xa751, 0xa751, HB_Letter_Lowercase},
+ {0xa752, 0xa752, HB_Letter_Uppercase},
+ {0xa753, 0xa753, HB_Letter_Lowercase},
+ {0xa754, 0xa754, HB_Letter_Uppercase},
+ {0xa755, 0xa755, HB_Letter_Lowercase},
+ {0xa756, 0xa756, HB_Letter_Uppercase},
+ {0xa757, 0xa757, HB_Letter_Lowercase},
+ {0xa758, 0xa758, HB_Letter_Uppercase},
+ {0xa759, 0xa759, HB_Letter_Lowercase},
+ {0xa75a, 0xa75a, HB_Letter_Uppercase},
+ {0xa75b, 0xa75b, HB_Letter_Lowercase},
+ {0xa75c, 0xa75c, HB_Letter_Uppercase},
+ {0xa75d, 0xa75d, HB_Letter_Lowercase},
+ {0xa75e, 0xa75e, HB_Letter_Uppercase},
+ {0xa75f, 0xa75f, HB_Letter_Lowercase},
+ {0xa760, 0xa760, HB_Letter_Uppercase},
+ {0xa761, 0xa761, HB_Letter_Lowercase},
+ {0xa762, 0xa762, HB_Letter_Uppercase},
+ {0xa763, 0xa763, HB_Letter_Lowercase},
+ {0xa764, 0xa764, HB_Letter_Uppercase},
+ {0xa765, 0xa765, HB_Letter_Lowercase},
+ {0xa766, 0xa766, HB_Letter_Uppercase},
+ {0xa767, 0xa767, HB_Letter_Lowercase},
+ {0xa768, 0xa768, HB_Letter_Uppercase},
+ {0xa769, 0xa769, HB_Letter_Lowercase},
+ {0xa76a, 0xa76a, HB_Letter_Uppercase},
+ {0xa76b, 0xa76b, HB_Letter_Lowercase},
+ {0xa76c, 0xa76c, HB_Letter_Uppercase},
+ {0xa76d, 0xa76d, HB_Letter_Lowercase},
+ {0xa76e, 0xa76e, HB_Letter_Uppercase},
+ {0xa76f, 0xa76f, HB_Letter_Lowercase},
+ {0xa770, 0xa770, HB_Letter_Modifier},
+ {0xa771, 0xa778, HB_Letter_Lowercase},
+ {0xa779, 0xa779, HB_Letter_Uppercase},
+ {0xa77a, 0xa77a, HB_Letter_Lowercase},
+ {0xa77b, 0xa77b, HB_Letter_Uppercase},
+ {0xa77c, 0xa77c, HB_Letter_Lowercase},
+ {0xa77d, 0xa77e, HB_Letter_Uppercase},
+ {0xa77f, 0xa77f, HB_Letter_Lowercase},
+ {0xa780, 0xa780, HB_Letter_Uppercase},
+ {0xa781, 0xa781, HB_Letter_Lowercase},
+ {0xa782, 0xa782, HB_Letter_Uppercase},
+ {0xa783, 0xa783, HB_Letter_Lowercase},
+ {0xa784, 0xa784, HB_Letter_Uppercase},
+ {0xa785, 0xa785, HB_Letter_Lowercase},
+ {0xa786, 0xa786, HB_Letter_Uppercase},
+ {0xa787, 0xa787, HB_Letter_Lowercase},
+ {0xa788, 0xa788, HB_Letter_Modifier},
+ {0xa789, 0xa78a, HB_Symbol_Modifier},
+ {0xa78b, 0xa78b, HB_Letter_Uppercase},
+ {0xa78c, 0xa78c, HB_Letter_Lowercase},
+ {0xa78d, 0xa7fa, HB_Other_NotAssigned},
+ {0xa7fb, 0xa801, HB_Letter_Other},
+ {0xa802, 0xa802, HB_Mark_NonSpacing},
+ {0xa803, 0xa805, HB_Letter_Other},
+ {0xa806, 0xa806, HB_Mark_NonSpacing},
+ {0xa807, 0xa80a, HB_Letter_Other},
+ {0xa80b, 0xa80b, HB_Mark_NonSpacing},
+ {0xa80c, 0xa822, HB_Letter_Other},
+ {0xa823, 0xa824, HB_Mark_SpacingCombining},
+ {0xa825, 0xa826, HB_Mark_NonSpacing},
+ {0xa827, 0xa827, HB_Mark_SpacingCombining},
+ {0xa828, 0xa82b, HB_Symbol_Other},
+ {0xa82c, 0xa83f, HB_Other_NotAssigned},
+ {0xa840, 0xa873, HB_Letter_Other},
+ {0xa874, 0xa877, HB_Punctuation_Other},
+ {0xa878, 0xa87f, HB_Other_NotAssigned},
+ {0xa880, 0xa881, HB_Mark_SpacingCombining},
+ {0xa882, 0xa8b3, HB_Letter_Other},
+ {0xa8b4, 0xa8c3, HB_Mark_SpacingCombining},
+ {0xa8c4, 0xa8c4, HB_Mark_NonSpacing},
+ {0xa8c5, 0xa8cd, HB_Other_NotAssigned},
+ {0xa8ce, 0xa8cf, HB_Punctuation_Other},
+ {0xa8d0, 0xa8d9, HB_Number_DecimalDigit},
+ {0xa8da, 0xa8ff, HB_Other_NotAssigned},
+ {0xa900, 0xa909, HB_Number_DecimalDigit},
+ {0xa90a, 0xa925, HB_Letter_Other},
+ {0xa926, 0xa92d, HB_Mark_NonSpacing},
+ {0xa92e, 0xa92f, HB_Punctuation_Other},
+ {0xa930, 0xa946, HB_Letter_Other},
+ {0xa947, 0xa951, HB_Mark_NonSpacing},
+ {0xa952, 0xa953, HB_Mark_SpacingCombining},
+ {0xa954, 0xa95e, HB_Other_NotAssigned},
+ {0xa95f, 0xa95f, HB_Punctuation_Other},
+ {0xa960, 0xa9ff, HB_Other_NotAssigned},
+ {0xaa00, 0xaa28, HB_Letter_Other},
+ {0xaa29, 0xaa2e, HB_Mark_NonSpacing},
+ {0xaa2f, 0xaa30, HB_Mark_SpacingCombining},
+ {0xaa31, 0xaa32, HB_Mark_NonSpacing},
+ {0xaa33, 0xaa34, HB_Mark_SpacingCombining},
+ {0xaa35, 0xaa36, HB_Mark_NonSpacing},
+ {0xaa37, 0xaa3f, HB_Other_NotAssigned},
+ {0xaa40, 0xaa42, HB_Letter_Other},
+ {0xaa43, 0xaa43, HB_Mark_NonSpacing},
+ {0xaa44, 0xaa4b, HB_Letter_Other},
+ {0xaa4c, 0xaa4c, HB_Mark_NonSpacing},
+ {0xaa4d, 0xaa4d, HB_Mark_SpacingCombining},
+ {0xaa4e, 0xaa4f, HB_Other_NotAssigned},
+ {0xaa50, 0xaa59, HB_Number_DecimalDigit},
+ {0xaa5a, 0xaa5b, HB_Other_NotAssigned},
+ {0xaa5c, 0xaa5f, HB_Punctuation_Other},
+ {0xaa60, 0xabff, HB_Other_NotAssigned},
+ {0xac00, 0xd7a3, HB_Letter_Other},
+ {0xd7a4, 0xd7ff, HB_Other_NotAssigned},
+ {0xd800, 0xdfff, HB_Other_Surrogate},
+ {0xe000, 0xf8ff, HB_Other_PrivateUse},
+ {0xf900, 0xfa2d, HB_Letter_Other},
+ {0xfa2e, 0xfa2f, HB_Other_NotAssigned},
+ {0xfa30, 0xfa6a, HB_Letter_Other},
+ {0xfa6b, 0xfa6f, HB_Other_NotAssigned},
+ {0xfa70, 0xfad9, HB_Letter_Other},
+ {0xfada, 0xfaff, HB_Other_NotAssigned},
+ {0xfb00, 0xfb06, HB_Letter_Lowercase},
+ {0xfb07, 0xfb12, HB_Other_NotAssigned},
+ {0xfb13, 0xfb17, HB_Letter_Lowercase},
+ {0xfb18, 0xfb1c, HB_Other_NotAssigned},
+ {0xfb1d, 0xfb1d, HB_Letter_Other},
+ {0xfb1e, 0xfb1e, HB_Mark_NonSpacing},
+ {0xfb1f, 0xfb28, HB_Letter_Other},
+ {0xfb29, 0xfb29, HB_Symbol_Math},
+ {0xfb2a, 0xfb36, HB_Letter_Other},
+ {0xfb37, 0xfb37, HB_Other_NotAssigned},
+ {0xfb38, 0xfb3c, HB_Letter_Other},
+ {0xfb3d, 0xfb3d, HB_Other_NotAssigned},
+ {0xfb3e, 0xfb3e, HB_Letter_Other},
+ {0xfb3f, 0xfb3f, HB_Other_NotAssigned},
+ {0xfb40, 0xfb41, HB_Letter_Other},
+ {0xfb42, 0xfb42, HB_Other_NotAssigned},
+ {0xfb43, 0xfb44, HB_Letter_Other},
+ {0xfb45, 0xfb45, HB_Other_NotAssigned},
+ {0xfb46, 0xfbb1, HB_Letter_Other},
+ {0xfbb2, 0xfbd2, HB_Other_NotAssigned},
+ {0xfbd3, 0xfd3d, HB_Letter_Other},
+ {0xfd3e, 0xfd3e, HB_Punctuation_Open},
+ {0xfd3f, 0xfd3f, HB_Punctuation_Close},
+ {0xfd40, 0xfd4f, HB_Other_NotAssigned},
+ {0xfd50, 0xfd8f, HB_Letter_Other},
+ {0xfd90, 0xfd91, HB_Other_NotAssigned},
+ {0xfd92, 0xfdc7, HB_Letter_Other},
+ {0xfdc8, 0xfdef, HB_Other_NotAssigned},
+ {0xfdf0, 0xfdfb, HB_Letter_Other},
+ {0xfdfc, 0xfdfc, HB_Symbol_Currency},
+ {0xfdfd, 0xfdfd, HB_Symbol_Other},
+ {0xfdfe, 0xfdff, HB_Other_NotAssigned},
+ {0xfe00, 0xfe0f, HB_Mark_NonSpacing},
+ {0xfe10, 0xfe16, HB_Punctuation_Other},
+ {0xfe17, 0xfe17, HB_Punctuation_Open},
+ {0xfe18, 0xfe18, HB_Punctuation_Close},
+ {0xfe19, 0xfe19, HB_Punctuation_Other},
+ {0xfe1a, 0xfe1f, HB_Other_NotAssigned},
+ {0xfe20, 0xfe26, HB_Mark_NonSpacing},
+ {0xfe27, 0xfe2f, HB_Other_NotAssigned},
+ {0xfe30, 0xfe30, HB_Punctuation_Other},
+ {0xfe31, 0xfe32, HB_Punctuation_Dash},
+ {0xfe33, 0xfe34, HB_Punctuation_Connector},
+ {0xfe35, 0xfe35, HB_Punctuation_Open},
+ {0xfe36, 0xfe36, HB_Punctuation_Close},
+ {0xfe37, 0xfe37, HB_Punctuation_Open},
+ {0xfe38, 0xfe38, HB_Punctuation_Close},
+ {0xfe39, 0xfe39, HB_Punctuation_Open},
+ {0xfe3a, 0xfe3a, HB_Punctuation_Close},
+ {0xfe3b, 0xfe3b, HB_Punctuation_Open},
+ {0xfe3c, 0xfe3c, HB_Punctuation_Close},
+ {0xfe3d, 0xfe3d, HB_Punctuation_Open},
+ {0xfe3e, 0xfe3e, HB_Punctuation_Close},
+ {0xfe3f, 0xfe3f, HB_Punctuation_Open},
+ {0xfe40, 0xfe40, HB_Punctuation_Close},
+ {0xfe41, 0xfe41, HB_Punctuation_Open},
+ {0xfe42, 0xfe42, HB_Punctuation_Close},
+ {0xfe43, 0xfe43, HB_Punctuation_Open},
+ {0xfe44, 0xfe44, HB_Punctuation_Close},
+ {0xfe45, 0xfe46, HB_Punctuation_Other},
+ {0xfe47, 0xfe47, HB_Punctuation_Open},
+ {0xfe48, 0xfe48, HB_Punctuation_Close},
+ {0xfe49, 0xfe4c, HB_Punctuation_Other},
+ {0xfe4d, 0xfe4f, HB_Punctuation_Connector},
+ {0xfe50, 0xfe52, HB_Punctuation_Other},
+ {0xfe53, 0xfe53, HB_Other_NotAssigned},
+ {0xfe54, 0xfe57, HB_Punctuation_Other},
+ {0xfe58, 0xfe58, HB_Punctuation_Dash},
+ {0xfe59, 0xfe59, HB_Punctuation_Open},
+ {0xfe5a, 0xfe5a, HB_Punctuation_Close},
+ {0xfe5b, 0xfe5b, HB_Punctuation_Open},
+ {0xfe5c, 0xfe5c, HB_Punctuation_Close},
+ {0xfe5d, 0xfe5d, HB_Punctuation_Open},
+ {0xfe5e, 0xfe5e, HB_Punctuation_Close},
+ {0xfe5f, 0xfe61, HB_Punctuation_Other},
+ {0xfe62, 0xfe62, HB_Symbol_Math},
+ {0xfe63, 0xfe63, HB_Punctuation_Dash},
+ {0xfe64, 0xfe66, HB_Symbol_Math},
+ {0xfe67, 0xfe67, HB_Other_NotAssigned},
+ {0xfe68, 0xfe68, HB_Punctuation_Other},
+ {0xfe69, 0xfe69, HB_Symbol_Currency},
+ {0xfe6a, 0xfe6b, HB_Punctuation_Other},
+ {0xfe6c, 0xfe6f, HB_Other_NotAssigned},
+ {0xfe70, 0xfe74, HB_Letter_Other},
+ {0xfe75, 0xfe75, HB_Other_NotAssigned},
+ {0xfe76, 0xfefc, HB_Letter_Other},
+ {0xfefd, 0xfefe, HB_Other_NotAssigned},
+ {0xfeff, 0xfeff, HB_Other_Format},
+ {0xff00, 0xff00, HB_Other_NotAssigned},
+ {0xff01, 0xff03, HB_Punctuation_Other},
+ {0xff04, 0xff04, HB_Symbol_Currency},
+ {0xff05, 0xff07, HB_Punctuation_Other},
+ {0xff08, 0xff08, HB_Punctuation_Open},
+ {0xff09, 0xff09, HB_Punctuation_Close},
+ {0xff0a, 0xff0a, HB_Punctuation_Other},
+ {0xff0b, 0xff0b, HB_Symbol_Math},
+ {0xff0c, 0xff0c, HB_Punctuation_Other},
+ {0xff0d, 0xff0d, HB_Punctuation_Dash},
+ {0xff0e, 0xff0f, HB_Punctuation_Other},
+ {0xff10, 0xff19, HB_Number_DecimalDigit},
+ {0xff1a, 0xff1b, HB_Punctuation_Other},
+ {0xff1c, 0xff1e, HB_Symbol_Math},
+ {0xff1f, 0xff20, HB_Punctuation_Other},
+ {0xff21, 0xff3a, HB_Letter_Uppercase},
+ {0xff3b, 0xff3b, HB_Punctuation_Open},
+ {0xff3c, 0xff3c, HB_Punctuation_Other},
+ {0xff3d, 0xff3d, HB_Punctuation_Close},
+ {0xff3e, 0xff3e, HB_Symbol_Modifier},
+ {0xff3f, 0xff3f, HB_Punctuation_Connector},
+ {0xff40, 0xff40, HB_Symbol_Modifier},
+ {0xff41, 0xff5a, HB_Letter_Lowercase},
+ {0xff5b, 0xff5b, HB_Punctuation_Open},
+ {0xff5c, 0xff5c, HB_Symbol_Math},
+ {0xff5d, 0xff5d, HB_Punctuation_Close},
+ {0xff5e, 0xff5e, HB_Symbol_Math},
+ {0xff5f, 0xff5f, HB_Punctuation_Open},
+ {0xff60, 0xff60, HB_Punctuation_Close},
+ {0xff61, 0xff61, HB_Punctuation_Other},
+ {0xff62, 0xff62, HB_Punctuation_Open},
+ {0xff63, 0xff63, HB_Punctuation_Close},
+ {0xff64, 0xff65, HB_Punctuation_Other},
+ {0xff66, 0xff6f, HB_Letter_Other},
+ {0xff70, 0xff70, HB_Letter_Modifier},
+ {0xff71, 0xff9d, HB_Letter_Other},
+ {0xff9e, 0xff9f, HB_Letter_Modifier},
+ {0xffa0, 0xffbe, HB_Letter_Other},
+ {0xffbf, 0xffc1, HB_Other_NotAssigned},
+ {0xffc2, 0xffc7, HB_Letter_Other},
+ {0xffc8, 0xffc9, HB_Other_NotAssigned},
+ {0xffca, 0xffcf, HB_Letter_Other},
+ {0xffd0, 0xffd1, HB_Other_NotAssigned},
+ {0xffd2, 0xffd7, HB_Letter_Other},
+ {0xffd8, 0xffd9, HB_Other_NotAssigned},
+ {0xffda, 0xffdc, HB_Letter_Other},
+ {0xffdd, 0xffdf, HB_Other_NotAssigned},
+ {0xffe0, 0xffe1, HB_Symbol_Currency},
+ {0xffe2, 0xffe2, HB_Symbol_Math},
+ {0xffe3, 0xffe3, HB_Symbol_Modifier},
+ {0xffe4, 0xffe4, HB_Symbol_Other},
+ {0xffe5, 0xffe6, HB_Symbol_Currency},
+ {0xffe7, 0xffe7, HB_Other_NotAssigned},
+ {0xffe8, 0xffe8, HB_Symbol_Other},
+ {0xffe9, 0xffec, HB_Symbol_Math},
+ {0xffed, 0xffee, HB_Symbol_Other},
+ {0xffef, 0xfff8, HB_Other_NotAssigned},
+ {0xfff9, 0xfffb, HB_Other_Format},
+ {0xfffc, 0xfffd, HB_Symbol_Other},
+ {0xfffe, 0xffff, HB_Other_NotAssigned},
+ {0x10000, 0x1000b, HB_Letter_Other},
+ {0x1000c, 0x1000c, HB_Other_NotAssigned},
+ {0x1000d, 0x10026, HB_Letter_Other},
+ {0x10027, 0x10027, HB_Other_NotAssigned},
+ {0x10028, 0x1003a, HB_Letter_Other},
+ {0x1003b, 0x1003b, HB_Other_NotAssigned},
+ {0x1003c, 0x1003d, HB_Letter_Other},
+ {0x1003e, 0x1003e, HB_Other_NotAssigned},
+ {0x1003f, 0x1004d, HB_Letter_Other},
+ {0x1004e, 0x1004f, HB_Other_NotAssigned},
+ {0x10050, 0x1005d, HB_Letter_Other},
+ {0x1005e, 0x1007f, HB_Other_NotAssigned},
+ {0x10080, 0x100fa, HB_Letter_Other},
+ {0x100fb, 0x100ff, HB_Other_NotAssigned},
+ {0x10100, 0x10101, HB_Punctuation_Other},
+ {0x10102, 0x10102, HB_Symbol_Other},
+ {0x10103, 0x10106, HB_Other_NotAssigned},
+ {0x10107, 0x10133, HB_Number_Other},
+ {0x10134, 0x10136, HB_Other_NotAssigned},
+ {0x10137, 0x1013f, HB_Symbol_Other},
+ {0x10140, 0x10174, HB_Number_Letter},
+ {0x10175, 0x10178, HB_Number_Other},
+ {0x10179, 0x10189, HB_Symbol_Other},
+ {0x1018a, 0x1018a, HB_Number_Other},
+ {0x1018b, 0x1018f, HB_Other_NotAssigned},
+ {0x10190, 0x1019b, HB_Symbol_Other},
+ {0x1019c, 0x101cf, HB_Other_NotAssigned},
+ {0x101d0, 0x101fc, HB_Symbol_Other},
+ {0x101fd, 0x101fd, HB_Mark_NonSpacing},
+ {0x101fe, 0x1027f, HB_Other_NotAssigned},
+ {0x10280, 0x1029c, HB_Letter_Other},
+ {0x1029d, 0x1029f, HB_Other_NotAssigned},
+ {0x102a0, 0x102d0, HB_Letter_Other},
+ {0x102d1, 0x102ff, HB_Other_NotAssigned},
+ {0x10300, 0x1031e, HB_Letter_Other},
+ {0x1031f, 0x1031f, HB_Other_NotAssigned},
+ {0x10320, 0x10323, HB_Number_Other},
+ {0x10324, 0x1032f, HB_Other_NotAssigned},
+ {0x10330, 0x10340, HB_Letter_Other},
+ {0x10341, 0x10341, HB_Number_Letter},
+ {0x10342, 0x10349, HB_Letter_Other},
+ {0x1034a, 0x1034a, HB_Number_Letter},
+ {0x1034b, 0x1037f, HB_Other_NotAssigned},
+ {0x10380, 0x1039d, HB_Letter_Other},
+ {0x1039e, 0x1039e, HB_Other_NotAssigned},
+ {0x1039f, 0x1039f, HB_Punctuation_Other},
+ {0x103a0, 0x103c3, HB_Letter_Other},
+ {0x103c4, 0x103c7, HB_Other_NotAssigned},
+ {0x103c8, 0x103cf, HB_Letter_Other},
+ {0x103d0, 0x103d0, HB_Punctuation_Other},
+ {0x103d1, 0x103d5, HB_Number_Letter},
+ {0x103d6, 0x103ff, HB_Other_NotAssigned},
+ {0x10400, 0x10427, HB_Letter_Uppercase},
+ {0x10428, 0x1044f, HB_Letter_Lowercase},
+ {0x10450, 0x1049d, HB_Letter_Other},
+ {0x1049e, 0x1049f, HB_Other_NotAssigned},
+ {0x104a0, 0x104a9, HB_Number_DecimalDigit},
+ {0x104aa, 0x107ff, HB_Other_NotAssigned},
+ {0x10800, 0x10805, HB_Letter_Other},
+ {0x10806, 0x10807, HB_Other_NotAssigned},
+ {0x10808, 0x10808, HB_Letter_Other},
+ {0x10809, 0x10809, HB_Other_NotAssigned},
+ {0x1080a, 0x10835, HB_Letter_Other},
+ {0x10836, 0x10836, HB_Other_NotAssigned},
+ {0x10837, 0x10838, HB_Letter_Other},
+ {0x10839, 0x1083b, HB_Other_NotAssigned},
+ {0x1083c, 0x1083c, HB_Letter_Other},
+ {0x1083d, 0x1083e, HB_Other_NotAssigned},
+ {0x1083f, 0x1083f, HB_Letter_Other},
+ {0x10840, 0x108ff, HB_Other_NotAssigned},
+ {0x10900, 0x10915, HB_Letter_Other},
+ {0x10916, 0x10919, HB_Number_Other},
+ {0x1091a, 0x1091e, HB_Other_NotAssigned},
+ {0x1091f, 0x1091f, HB_Punctuation_Other},
+ {0x10920, 0x10939, HB_Letter_Other},
+ {0x1093a, 0x1093e, HB_Other_NotAssigned},
+ {0x1093f, 0x1093f, HB_Punctuation_Other},
+ {0x10940, 0x109ff, HB_Other_NotAssigned},
+ {0x10a00, 0x10a00, HB_Letter_Other},
+ {0x10a01, 0x10a03, HB_Mark_NonSpacing},
+ {0x10a04, 0x10a04, HB_Other_NotAssigned},
+ {0x10a05, 0x10a06, HB_Mark_NonSpacing},
+ {0x10a07, 0x10a0b, HB_Other_NotAssigned},
+ {0x10a0c, 0x10a0f, HB_Mark_NonSpacing},
+ {0x10a10, 0x10a13, HB_Letter_Other},
+ {0x10a14, 0x10a14, HB_Other_NotAssigned},
+ {0x10a15, 0x10a17, HB_Letter_Other},
+ {0x10a18, 0x10a18, HB_Other_NotAssigned},
+ {0x10a19, 0x10a33, HB_Letter_Other},
+ {0x10a34, 0x10a37, HB_Other_NotAssigned},
+ {0x10a38, 0x10a3a, HB_Mark_NonSpacing},
+ {0x10a3b, 0x10a3e, HB_Other_NotAssigned},
+ {0x10a3f, 0x10a3f, HB_Mark_NonSpacing},
+ {0x10a40, 0x10a47, HB_Number_Other},
+ {0x10a48, 0x10a4f, HB_Other_NotAssigned},
+ {0x10a50, 0x10a58, HB_Punctuation_Other},
+ {0x10a59, 0x11fff, HB_Other_NotAssigned},
+ {0x12000, 0x1236e, HB_Letter_Other},
+ {0x1236f, 0x123ff, HB_Other_NotAssigned},
+ {0x12400, 0x12462, HB_Number_Letter},
+ {0x12463, 0x1246f, HB_Other_NotAssigned},
+ {0x12470, 0x12473, HB_Punctuation_Other},
+ {0x12474, 0x1cfff, HB_Other_NotAssigned},
+ {0x1d000, 0x1d0f5, HB_Symbol_Other},
+ {0x1d0f6, 0x1d0ff, HB_Other_NotAssigned},
+ {0x1d100, 0x1d126, HB_Symbol_Other},
+ {0x1d127, 0x1d128, HB_Other_NotAssigned},
+ {0x1d129, 0x1d164, HB_Symbol_Other},
+ {0x1d165, 0x1d166, HB_Mark_SpacingCombining},
+ {0x1d167, 0x1d169, HB_Mark_NonSpacing},
+ {0x1d16a, 0x1d16c, HB_Symbol_Other},
+ {0x1d16d, 0x1d172, HB_Mark_SpacingCombining},
+ {0x1d173, 0x1d17a, HB_Other_Format},
+ {0x1d17b, 0x1d182, HB_Mark_NonSpacing},
+ {0x1d183, 0x1d184, HB_Symbol_Other},
+ {0x1d185, 0x1d18b, HB_Mark_NonSpacing},
+ {0x1d18c, 0x1d1a9, HB_Symbol_Other},
+ {0x1d1aa, 0x1d1ad, HB_Mark_NonSpacing},
+ {0x1d1ae, 0x1d1dd, HB_Symbol_Other},
+ {0x1d1de, 0x1d1ff, HB_Other_NotAssigned},
+ {0x1d200, 0x1d241, HB_Symbol_Other},
+ {0x1d242, 0x1d244, HB_Mark_NonSpacing},
+ {0x1d245, 0x1d245, HB_Symbol_Other},
+ {0x1d246, 0x1d2ff, HB_Other_NotAssigned},
+ {0x1d300, 0x1d356, HB_Symbol_Other},
+ {0x1d357, 0x1d35f, HB_Other_NotAssigned},
+ {0x1d360, 0x1d371, HB_Number_Other},
+ {0x1d372, 0x1d3ff, HB_Other_NotAssigned},
+ {0x1d400, 0x1d419, HB_Letter_Uppercase},
+ {0x1d41a, 0x1d433, HB_Letter_Lowercase},
+ {0x1d434, 0x1d44d, HB_Letter_Uppercase},
+ {0x1d44e, 0x1d454, HB_Letter_Lowercase},
+ {0x1d455, 0x1d455, HB_Other_NotAssigned},
+ {0x1d456, 0x1d467, HB_Letter_Lowercase},
+ {0x1d468, 0x1d481, HB_Letter_Uppercase},
+ {0x1d482, 0x1d49b, HB_Letter_Lowercase},
+ {0x1d49c, 0x1d49c, HB_Letter_Uppercase},
+ {0x1d49d, 0x1d49d, HB_Other_NotAssigned},
+ {0x1d49e, 0x1d49f, HB_Letter_Uppercase},
+ {0x1d4a0, 0x1d4a1, HB_Other_NotAssigned},
+ {0x1d4a2, 0x1d4a2, HB_Letter_Uppercase},
+ {0x1d4a3, 0x1d4a4, HB_Other_NotAssigned},
+ {0x1d4a5, 0x1d4a6, HB_Letter_Uppercase},
+ {0x1d4a7, 0x1d4a8, HB_Other_NotAssigned},
+ {0x1d4a9, 0x1d4ac, HB_Letter_Uppercase},
+ {0x1d4ad, 0x1d4ad, HB_Other_NotAssigned},
+ {0x1d4ae, 0x1d4b5, HB_Letter_Uppercase},
+ {0x1d4b6, 0x1d4b9, HB_Letter_Lowercase},
+ {0x1d4ba, 0x1d4ba, HB_Other_NotAssigned},
+ {0x1d4bb, 0x1d4bb, HB_Letter_Lowercase},
+ {0x1d4bc, 0x1d4bc, HB_Other_NotAssigned},
+ {0x1d4bd, 0x1d4c3, HB_Letter_Lowercase},
+ {0x1d4c4, 0x1d4c4, HB_Other_NotAssigned},
+ {0x1d4c5, 0x1d4cf, HB_Letter_Lowercase},
+ {0x1d4d0, 0x1d4e9, HB_Letter_Uppercase},
+ {0x1d4ea, 0x1d503, HB_Letter_Lowercase},
+ {0x1d504, 0x1d505, HB_Letter_Uppercase},
+ {0x1d506, 0x1d506, HB_Other_NotAssigned},
+ {0x1d507, 0x1d50a, HB_Letter_Uppercase},
+ {0x1d50b, 0x1d50c, HB_Other_NotAssigned},
+ {0x1d50d, 0x1d514, HB_Letter_Uppercase},
+ {0x1d515, 0x1d515, HB_Other_NotAssigned},
+ {0x1d516, 0x1d51c, HB_Letter_Uppercase},
+ {0x1d51d, 0x1d51d, HB_Other_NotAssigned},
+ {0x1d51e, 0x1d537, HB_Letter_Lowercase},
+ {0x1d538, 0x1d539, HB_Letter_Uppercase},
+ {0x1d53a, 0x1d53a, HB_Other_NotAssigned},
+ {0x1d53b, 0x1d53e, HB_Letter_Uppercase},
+ {0x1d53f, 0x1d53f, HB_Other_NotAssigned},
+ {0x1d540, 0x1d544, HB_Letter_Uppercase},
+ {0x1d545, 0x1d545, HB_Other_NotAssigned},
+ {0x1d546, 0x1d546, HB_Letter_Uppercase},
+ {0x1d547, 0x1d549, HB_Other_NotAssigned},
+ {0x1d54a, 0x1d550, HB_Letter_Uppercase},
+ {0x1d551, 0x1d551, HB_Other_NotAssigned},
+ {0x1d552, 0x1d56b, HB_Letter_Lowercase},
+ {0x1d56c, 0x1d585, HB_Letter_Uppercase},
+ {0x1d586, 0x1d59f, HB_Letter_Lowercase},
+ {0x1d5a0, 0x1d5b9, HB_Letter_Uppercase},
+ {0x1d5ba, 0x1d5d3, HB_Letter_Lowercase},
+ {0x1d5d4, 0x1d5ed, HB_Letter_Uppercase},
+ {0x1d5ee, 0x1d607, HB_Letter_Lowercase},
+ {0x1d608, 0x1d621, HB_Letter_Uppercase},
+ {0x1d622, 0x1d63b, HB_Letter_Lowercase},
+ {0x1d63c, 0x1d655, HB_Letter_Uppercase},
+ {0x1d656, 0x1d66f, HB_Letter_Lowercase},
+ {0x1d670, 0x1d689, HB_Letter_Uppercase},
+ {0x1d68a, 0x1d6a5, HB_Letter_Lowercase},
+ {0x1d6a6, 0x1d6a7, HB_Other_NotAssigned},
+ {0x1d6a8, 0x1d6c0, HB_Letter_Uppercase},
+ {0x1d6c1, 0x1d6c1, HB_Symbol_Math},
+ {0x1d6c2, 0x1d6da, HB_Letter_Lowercase},
+ {0x1d6db, 0x1d6db, HB_Symbol_Math},
+ {0x1d6dc, 0x1d6e1, HB_Letter_Lowercase},
+ {0x1d6e2, 0x1d6fa, HB_Letter_Uppercase},
+ {0x1d6fb, 0x1d6fb, HB_Symbol_Math},
+ {0x1d6fc, 0x1d714, HB_Letter_Lowercase},
+ {0x1d715, 0x1d715, HB_Symbol_Math},
+ {0x1d716, 0x1d71b, HB_Letter_Lowercase},
+ {0x1d71c, 0x1d734, HB_Letter_Uppercase},
+ {0x1d735, 0x1d735, HB_Symbol_Math},
+ {0x1d736, 0x1d74e, HB_Letter_Lowercase},
+ {0x1d74f, 0x1d74f, HB_Symbol_Math},
+ {0x1d750, 0x1d755, HB_Letter_Lowercase},
+ {0x1d756, 0x1d76e, HB_Letter_Uppercase},
+ {0x1d76f, 0x1d76f, HB_Symbol_Math},
+ {0x1d770, 0x1d788, HB_Letter_Lowercase},
+ {0x1d789, 0x1d789, HB_Symbol_Math},
+ {0x1d78a, 0x1d78f, HB_Letter_Lowercase},
+ {0x1d790, 0x1d7a8, HB_Letter_Uppercase},
+ {0x1d7a9, 0x1d7a9, HB_Symbol_Math},
+ {0x1d7aa, 0x1d7c2, HB_Letter_Lowercase},
+ {0x1d7c3, 0x1d7c3, HB_Symbol_Math},
+ {0x1d7c4, 0x1d7c9, HB_Letter_Lowercase},
+ {0x1d7ca, 0x1d7ca, HB_Letter_Uppercase},
+ {0x1d7cb, 0x1d7cb, HB_Letter_Lowercase},
+ {0x1d7cc, 0x1d7cd, HB_Other_NotAssigned},
+ {0x1d7ce, 0x1d7ff, HB_Number_DecimalDigit},
+ {0x1d800, 0x1efff, HB_Other_NotAssigned},
+ {0x1f000, 0x1f02b, HB_Symbol_Other},
+ {0x1f02c, 0x1f02f, HB_Other_NotAssigned},
+ {0x1f030, 0x1f093, HB_Symbol_Other},
+ {0x1f094, 0x1ffff, HB_Other_NotAssigned},
+ {0x20000, 0x2a6d6, HB_Letter_Other},
+ {0x2a6d7, 0x2f7ff, HB_Other_NotAssigned},
+ {0x2f800, 0x2fa1d, HB_Letter_Other},
+ {0x2fa1e, 0xe0000, HB_Other_NotAssigned},
+ {0xe0001, 0xe0001, HB_Other_Format},
+ {0xe0002, 0xe001f, HB_Other_NotAssigned},
+ {0xe0020, 0xe007f, HB_Other_Format},
+ {0xe0080, 0xe00ff, HB_Other_NotAssigned},
+ {0xe0100, 0xe01ef, HB_Mark_NonSpacing},
+ {0xe01f0, 0xeffff, HB_Other_NotAssigned},
+ {0xf0000, 0xffffd, HB_Other_PrivateUse},
+ {0xffffe, 0xfffff, HB_Other_NotAssigned},
+ {0x100000, 0x10fffd, HB_Other_PrivateUse},
+ {0x10fffe, 0x10ffff, HB_Other_NotAssigned},
+};
+
+static const unsigned category_properties_count = 2849;
+
+#endif // CATEGORY_PROPERTIES_H_
diff --git a/third_party/harfbuzz/contrib/tables/combining-class-parse.py b/third_party/harfbuzz/contrib/tables/combining-class-parse.py
new file mode 100644
index 0000000..c591ddd
--- /dev/null
+++ b/third_party/harfbuzz/contrib/tables/combining-class-parse.py
@@ -0,0 +1,34 @@
+import sys
+from unicode_parse_common import *
+
+# http://www.unicode.org/Public/5.1.0/ucd/extracted/DerivedCombiningClass.txt
+
+class IdentityMap(object):
+ def __getitem__(_, key):
+ return key
+
+def main(infile, outfile):
+ ranges = unicode_file_parse(infile, IdentityMap(), '0')
+ ranges = sort_and_merge(ranges)
+
+ print >>outfile, '// Generated from Unicode tables\n'
+ print >>outfile, '#ifndef COMBINING_PROPERTIES_H_'
+ print >>outfile, '#define COMBINING_PROPERTIES_H_\n'
+ print >>outfile, '#include <stdint.h>'
+ print >>outfile, 'struct combining_property {'
+ print >>outfile, ' uint32_t range_start;'
+ print >>outfile, ' uint32_t range_end;'
+ print >>outfile, ' uint8_t klass;'
+ print >>outfile, '};\n'
+ print >>outfile, 'static const struct combining_property combining_properties[] = {'
+ for (start, end, value) in ranges:
+ print >>outfile, ' {0x%x, 0x%x, %s},' % (start, end, value)
+ print >>outfile, '};\n'
+ print >>outfile, 'static const unsigned combining_properties_count = %d;\n' % len(ranges)
+ print >>outfile, '#endif // COMBINING_PROPERTIES_H_'
+
+if __name__ == '__main__':
+ if len(sys.argv) != 3:
+ print 'Usage: %s <input .txt> <output .h>' % sys.argv[0]
+ else:
+ main(file(sys.argv[1], 'r'), file(sys.argv[2], 'w+'))
diff --git a/third_party/harfbuzz/contrib/tables/combining-properties.h b/third_party/harfbuzz/contrib/tables/combining-properties.h
new file mode 100644
index 0000000..552ed35
--- /dev/null
+++ b/third_party/harfbuzz/contrib/tables/combining-properties.h
@@ -0,0 +1,247 @@
+// Generated from Unicode tables
+
+#ifndef COMBINING_PROPERTIES_H_
+#define COMBINING_PROPERTIES_H_
+
+#include <stdint.h>
+struct combining_property {
+ uint32_t range_start;
+ uint32_t range_end;
+ uint8_t klass;
+};
+
+static const struct combining_property combining_properties[] = {
+ {0x300, 0x314, 230},
+ {0x315, 0x315, 232},
+ {0x316, 0x319, 220},
+ {0x31a, 0x31a, 232},
+ {0x31b, 0x31b, 216},
+ {0x31c, 0x320, 220},
+ {0x321, 0x322, 202},
+ {0x323, 0x326, 220},
+ {0x327, 0x328, 202},
+ {0x329, 0x333, 220},
+ {0x334, 0x338, 1},
+ {0x339, 0x33c, 220},
+ {0x33d, 0x344, 230},
+ {0x345, 0x345, 240},
+ {0x346, 0x346, 230},
+ {0x347, 0x349, 220},
+ {0x34a, 0x34c, 230},
+ {0x34d, 0x34e, 220},
+ {0x350, 0x352, 230},
+ {0x353, 0x356, 220},
+ {0x357, 0x357, 230},
+ {0x358, 0x358, 232},
+ {0x359, 0x35a, 220},
+ {0x35b, 0x35b, 230},
+ {0x35c, 0x35c, 233},
+ {0x35d, 0x35e, 234},
+ {0x35f, 0x35f, 233},
+ {0x360, 0x361, 234},
+ {0x362, 0x362, 233},
+ {0x363, 0x36f, 230},
+ {0x483, 0x487, 230},
+ {0x591, 0x591, 220},
+ {0x592, 0x595, 230},
+ {0x596, 0x596, 220},
+ {0x597, 0x599, 230},
+ {0x59a, 0x59a, 222},
+ {0x59b, 0x59b, 220},
+ {0x59c, 0x5a1, 230},
+ {0x5a2, 0x5a7, 220},
+ {0x5a8, 0x5a9, 230},
+ {0x5aa, 0x5aa, 220},
+ {0x5ab, 0x5ac, 230},
+ {0x5ad, 0x5ad, 222},
+ {0x5ae, 0x5ae, 228},
+ {0x5af, 0x5af, 230},
+ {0x5b0, 0x5b0, 10},
+ {0x5b1, 0x5b1, 11},
+ {0x5b2, 0x5b2, 12},
+ {0x5b3, 0x5b3, 13},
+ {0x5b4, 0x5b4, 14},
+ {0x5b5, 0x5b5, 15},
+ {0x5b6, 0x5b6, 16},
+ {0x5b7, 0x5b7, 17},
+ {0x5b8, 0x5b8, 18},
+ {0x5b9, 0x5ba, 19},
+ {0x5bb, 0x5bb, 20},
+ {0x5bc, 0x5bc, 21},
+ {0x5bd, 0x5bd, 22},
+ {0x5bf, 0x5bf, 23},
+ {0x5c1, 0x5c1, 24},
+ {0x5c2, 0x5c2, 25},
+ {0x5c4, 0x5c4, 230},
+ {0x5c5, 0x5c5, 220},
+ {0x5c7, 0x5c7, 18},
+ {0x610, 0x617, 230},
+ {0x618, 0x618, 30},
+ {0x619, 0x619, 31},
+ {0x61a, 0x61a, 32},
+ {0x64b, 0x64b, 27},
+ {0x64c, 0x64c, 28},
+ {0x64d, 0x64d, 29},
+ {0x64e, 0x64e, 30},
+ {0x64f, 0x64f, 31},
+ {0x650, 0x650, 32},
+ {0x651, 0x651, 33},
+ {0x652, 0x652, 34},
+ {0x653, 0x654, 230},
+ {0x655, 0x656, 220},
+ {0x657, 0x65b, 230},
+ {0x65c, 0x65c, 220},
+ {0x65d, 0x65e, 230},
+ {0x670, 0x670, 35},
+ {0x6d6, 0x6dc, 230},
+ {0x6df, 0x6e2, 230},
+ {0x6e3, 0x6e3, 220},
+ {0x6e4, 0x6e4, 230},
+ {0x6e7, 0x6e8, 230},
+ {0x6ea, 0x6ea, 220},
+ {0x6eb, 0x6ec, 230},
+ {0x6ed, 0x6ed, 220},
+ {0x711, 0x711, 36},
+ {0x730, 0x730, 230},
+ {0x731, 0x731, 220},
+ {0x732, 0x733, 230},
+ {0x734, 0x734, 220},
+ {0x735, 0x736, 230},
+ {0x737, 0x739, 220},
+ {0x73a, 0x73a, 230},
+ {0x73b, 0x73c, 220},
+ {0x73d, 0x73d, 230},
+ {0x73e, 0x73e, 220},
+ {0x73f, 0x741, 230},
+ {0x742, 0x742, 220},
+ {0x743, 0x743, 230},
+ {0x744, 0x744, 220},
+ {0x745, 0x745, 230},
+ {0x746, 0x746, 220},
+ {0x747, 0x747, 230},
+ {0x748, 0x748, 220},
+ {0x749, 0x74a, 230},
+ {0x7eb, 0x7f1, 230},
+ {0x7f2, 0x7f2, 220},
+ {0x7f3, 0x7f3, 230},
+ {0x93c, 0x93c, 7},
+ {0x94d, 0x94d, 9},
+ {0x951, 0x951, 230},
+ {0x952, 0x952, 220},
+ {0x953, 0x954, 230},
+ {0x9bc, 0x9bc, 7},
+ {0x9cd, 0x9cd, 9},
+ {0xa3c, 0xa3c, 7},
+ {0xa4d, 0xa4d, 9},
+ {0xabc, 0xabc, 7},
+ {0xacd, 0xacd, 9},
+ {0xb3c, 0xb3c, 7},
+ {0xb4d, 0xb4d, 9},
+ {0xbcd, 0xbcd, 9},
+ {0xc4d, 0xc4d, 9},
+ {0xc55, 0xc55, 84},
+ {0xc56, 0xc56, 91},
+ {0xcbc, 0xcbc, 7},
+ {0xccd, 0xccd, 9},
+ {0xd4d, 0xd4d, 9},
+ {0xdca, 0xdca, 9},
+ {0xe38, 0xe39, 103},
+ {0xe3a, 0xe3a, 9},
+ {0xe48, 0xe4b, 107},
+ {0xeb8, 0xeb9, 118},
+ {0xec8, 0xecb, 122},
+ {0xf18, 0xf19, 220},
+ {0xf35, 0xf35, 220},
+ {0xf37, 0xf37, 220},
+ {0xf39, 0xf39, 216},
+ {0xf71, 0xf71, 129},
+ {0xf72, 0xf72, 130},
+ {0xf74, 0xf74, 132},
+ {0xf7a, 0xf7d, 130},
+ {0xf80, 0xf80, 130},
+ {0xf82, 0xf83, 230},
+ {0xf84, 0xf84, 9},
+ {0xf86, 0xf87, 230},
+ {0xfc6, 0xfc6, 220},
+ {0x1037, 0x1037, 7},
+ {0x1039, 0x103a, 9},
+ {0x108d, 0x108d, 220},
+ {0x135f, 0x135f, 230},
+ {0x1714, 0x1714, 9},
+ {0x1734, 0x1734, 9},
+ {0x17d2, 0x17d2, 9},
+ {0x17dd, 0x17dd, 230},
+ {0x18a9, 0x18a9, 228},
+ {0x1939, 0x1939, 222},
+ {0x193a, 0x193a, 230},
+ {0x193b, 0x193b, 220},
+ {0x1a17, 0x1a17, 230},
+ {0x1a18, 0x1a18, 220},
+ {0x1b34, 0x1b34, 7},
+ {0x1b44, 0x1b44, 9},
+ {0x1b6b, 0x1b6b, 230},
+ {0x1b6c, 0x1b6c, 220},
+ {0x1b6d, 0x1b73, 230},
+ {0x1baa, 0x1baa, 9},
+ {0x1c37, 0x1c37, 7},
+ {0x1dc0, 0x1dc1, 230},
+ {0x1dc2, 0x1dc2, 220},
+ {0x1dc3, 0x1dc9, 230},
+ {0x1dca, 0x1dca, 220},
+ {0x1dcb, 0x1dcc, 230},
+ {0x1dcd, 0x1dcd, 234},
+ {0x1dce, 0x1dce, 214},
+ {0x1dcf, 0x1dcf, 220},
+ {0x1dd0, 0x1dd0, 202},
+ {0x1dd1, 0x1de6, 230},
+ {0x1dfe, 0x1dfe, 230},
+ {0x1dff, 0x1dff, 220},
+ {0x20d0, 0x20d1, 230},
+ {0x20d2, 0x20d3, 1},
+ {0x20d4, 0x20d7, 230},
+ {0x20d8, 0x20da, 1},
+ {0x20db, 0x20dc, 230},
+ {0x20e1, 0x20e1, 230},
+ {0x20e5, 0x20e6, 1},
+ {0x20e7, 0x20e7, 230},
+ {0x20e8, 0x20e8, 220},
+ {0x20e9, 0x20e9, 230},
+ {0x20ea, 0x20eb, 1},
+ {0x20ec, 0x20ef, 220},
+ {0x20f0, 0x20f0, 230},
+ {0x2de0, 0x2dff, 230},
+ {0x302a, 0x302a, 218},
+ {0x302b, 0x302b, 228},
+ {0x302c, 0x302c, 232},
+ {0x302d, 0x302d, 222},
+ {0x302e, 0x302f, 224},
+ {0x3099, 0x309a, 8},
+ {0xa66f, 0xa66f, 230},
+ {0xa67c, 0xa67d, 230},
+ {0xa806, 0xa806, 9},
+ {0xa8c4, 0xa8c4, 9},
+ {0xa92b, 0xa92d, 220},
+ {0xa953, 0xa953, 9},
+ {0xfb1e, 0xfb1e, 26},
+ {0xfe20, 0xfe26, 230},
+ {0x101fd, 0x101fd, 220},
+ {0x10a0d, 0x10a0d, 220},
+ {0x10a0f, 0x10a0f, 230},
+ {0x10a38, 0x10a38, 230},
+ {0x10a39, 0x10a39, 1},
+ {0x10a3a, 0x10a3a, 220},
+ {0x10a3f, 0x10a3f, 9},
+ {0x1d165, 0x1d166, 216},
+ {0x1d167, 0x1d169, 1},
+ {0x1d16d, 0x1d16d, 226},
+ {0x1d16e, 0x1d172, 216},
+ {0x1d17b, 0x1d182, 220},
+ {0x1d185, 0x1d189, 230},
+ {0x1d18a, 0x1d18b, 220},
+ {0x1d1aa, 0x1d1ad, 230},
+ {0x1d242, 0x1d244, 230},
+};
+
+static const unsigned combining_properties_count = 229;
+
+#endif // COMBINING_PROPERTIES_H_
diff --git a/third_party/harfbuzz/contrib/tables/grapheme-break-parse.py b/third_party/harfbuzz/contrib/tables/grapheme-break-parse.py
new file mode 100644
index 0000000..a4b3534
--- /dev/null
+++ b/third_party/harfbuzz/contrib/tables/grapheme-break-parse.py
@@ -0,0 +1,45 @@
+import sys
+from unicode_parse_common import *
+
+# http://www.unicode.org/Public/UNIDATA/auxiliary/GraphemeBreakProperty.txt
+
+property_to_harfbuzz = {
+ 'CR': 'HB_Grapheme_CR',
+ 'LF': 'HB_Grapheme_LF',
+ 'Control': 'HB_Grapheme_Control',
+ 'Extend': 'HB_Grapheme_Extend',
+ 'Prepend': 'HB_Grapheme_Other',
+ 'SpacingMark': 'HB_Grapheme_Other',
+ 'L': 'HB_Grapheme_L',
+ 'V': 'HB_Grapheme_V',
+ 'T': 'HB_Grapheme_T',
+ 'LV': 'HB_Grapheme_LV',
+ 'LVT': 'HB_Grapheme_LVT',
+}
+
+def main(infile, outfile):
+ ranges = unicode_file_parse(infile, property_to_harfbuzz)
+ ranges.sort()
+
+ print >>outfile, '// Generated from Unicode Grapheme break tables\n'
+ print >>outfile, '#ifndef GRAPHEME_BREAK_PROPERTY_H_'
+ print >>outfile, '#define GRAPHEME_BREAK_PROPERTY_H_\n'
+ print >>outfile, '#include <stdint.h>'
+ print >>outfile, '#include "harfbuzz-external.h"\n'
+ print >>outfile, 'struct grapheme_break_property {'
+ print >>outfile, ' uint32_t range_start;'
+ print >>outfile, ' uint32_t range_end;'
+ print >>outfile, ' HB_GraphemeClass klass;'
+ print >>outfile, '};\n'
+ print >>outfile, 'static const struct grapheme_break_property grapheme_break_properties[] = {'
+ for (start, end, value) in ranges:
+ print >>outfile, ' {0x%x, 0x%x, %s},' % (start, end, value)
+ print >>outfile, '};\n'
+ print >>outfile, 'static const unsigned grapheme_break_properties_count = %d;\n' % len(ranges)
+ print >>outfile, '#endif // GRAPHEME_BREAK_PROPERTY_H_'
+
+if __name__ == '__main__':
+ if len(sys.argv) != 3:
+ print 'Usage: %s <input .txt> <output .h>' % sys.argv[0]
+ else:
+ main(file(sys.argv[1], 'r'), file(sys.argv[2], 'w+'))
diff --git a/third_party/harfbuzz/contrib/tables/grapheme-break-properties.h b/third_party/harfbuzz/contrib/tables/grapheme-break-properties.h
new file mode 100644
index 0000000..73f47d4
--- /dev/null
+++ b/third_party/harfbuzz/contrib/tables/grapheme-break-properties.h
@@ -0,0 +1,1113 @@
+// Generated from Unicode Grapheme break tables
+
+#ifndef GRAPHEME_BREAK_PROPERTY_H_
+#define GRAPHEME_BREAK_PROPERTY_H_
+
+#include <stdint.h>
+#include "harfbuzz-external.h"
+
+struct grapheme_break_property {
+ uint32_t range_start;
+ uint32_t range_end;
+ HB_GraphemeClass klass;
+};
+
+static const struct grapheme_break_property grapheme_break_properties[] = {
+ {0x0, 0x9, HB_Grapheme_Control},
+ {0xa, 0xa, HB_Grapheme_LF},
+ {0xb, 0xc, HB_Grapheme_Control},
+ {0xd, 0xd, HB_Grapheme_CR},
+ {0xe, 0x1f, HB_Grapheme_Control},
+ {0x7f, 0x9f, HB_Grapheme_Control},
+ {0xad, 0xad, HB_Grapheme_Control},
+ {0x300, 0x36f, HB_Grapheme_Extend},
+ {0x483, 0x487, HB_Grapheme_Extend},
+ {0x488, 0x489, HB_Grapheme_Extend},
+ {0x591, 0x5bd, HB_Grapheme_Extend},
+ {0x5bf, 0x5bf, HB_Grapheme_Extend},
+ {0x5c1, 0x5c2, HB_Grapheme_Extend},
+ {0x5c4, 0x5c5, HB_Grapheme_Extend},
+ {0x5c7, 0x5c7, HB_Grapheme_Extend},
+ {0x600, 0x603, HB_Grapheme_Control},
+ {0x610, 0x61a, HB_Grapheme_Extend},
+ {0x64b, 0x65e, HB_Grapheme_Extend},
+ {0x670, 0x670, HB_Grapheme_Extend},
+ {0x6d6, 0x6dc, HB_Grapheme_Extend},
+ {0x6dd, 0x6dd, HB_Grapheme_Control},
+ {0x6de, 0x6de, HB_Grapheme_Extend},
+ {0x6df, 0x6e4, HB_Grapheme_Extend},
+ {0x6e7, 0x6e8, HB_Grapheme_Extend},
+ {0x6ea, 0x6ed, HB_Grapheme_Extend},
+ {0x70f, 0x70f, HB_Grapheme_Control},
+ {0x711, 0x711, HB_Grapheme_Extend},
+ {0x730, 0x74a, HB_Grapheme_Extend},
+ {0x7a6, 0x7b0, HB_Grapheme_Extend},
+ {0x7eb, 0x7f3, HB_Grapheme_Extend},
+ {0x901, 0x902, HB_Grapheme_Extend},
+ {0x903, 0x903, HB_Grapheme_Other},
+ {0x93c, 0x93c, HB_Grapheme_Extend},
+ {0x93e, 0x940, HB_Grapheme_Other},
+ {0x941, 0x948, HB_Grapheme_Extend},
+ {0x949, 0x94c, HB_Grapheme_Other},
+ {0x94d, 0x94d, HB_Grapheme_Extend},
+ {0x951, 0x954, HB_Grapheme_Extend},
+ {0x962, 0x963, HB_Grapheme_Extend},
+ {0x981, 0x981, HB_Grapheme_Extend},
+ {0x982, 0x983, HB_Grapheme_Other},
+ {0x9bc, 0x9bc, HB_Grapheme_Extend},
+ {0x9be, 0x9be, HB_Grapheme_Extend},
+ {0x9bf, 0x9c0, HB_Grapheme_Other},
+ {0x9c1, 0x9c4, HB_Grapheme_Extend},
+ {0x9c7, 0x9c8, HB_Grapheme_Other},
+ {0x9cb, 0x9cc, HB_Grapheme_Other},
+ {0x9cd, 0x9cd, HB_Grapheme_Extend},
+ {0x9d7, 0x9d7, HB_Grapheme_Extend},
+ {0x9e2, 0x9e3, HB_Grapheme_Extend},
+ {0xa01, 0xa02, HB_Grapheme_Extend},
+ {0xa03, 0xa03, HB_Grapheme_Other},
+ {0xa3c, 0xa3c, HB_Grapheme_Extend},
+ {0xa3e, 0xa40, HB_Grapheme_Other},
+ {0xa41, 0xa42, HB_Grapheme_Extend},
+ {0xa47, 0xa48, HB_Grapheme_Extend},
+ {0xa4b, 0xa4d, HB_Grapheme_Extend},
+ {0xa51, 0xa51, HB_Grapheme_Extend},
+ {0xa70, 0xa71, HB_Grapheme_Extend},
+ {0xa75, 0xa75, HB_Grapheme_Extend},
+ {0xa81, 0xa82, HB_Grapheme_Extend},
+ {0xa83, 0xa83, HB_Grapheme_Other},
+ {0xabc, 0xabc, HB_Grapheme_Extend},
+ {0xabe, 0xac0, HB_Grapheme_Other},
+ {0xac1, 0xac5, HB_Grapheme_Extend},
+ {0xac7, 0xac8, HB_Grapheme_Extend},
+ {0xac9, 0xac9, HB_Grapheme_Other},
+ {0xacb, 0xacc, HB_Grapheme_Other},
+ {0xacd, 0xacd, HB_Grapheme_Extend},
+ {0xae2, 0xae3, HB_Grapheme_Extend},
+ {0xb01, 0xb01, HB_Grapheme_Extend},
+ {0xb02, 0xb03, HB_Grapheme_Other},
+ {0xb3c, 0xb3c, HB_Grapheme_Extend},
+ {0xb3e, 0xb3e, HB_Grapheme_Extend},
+ {0xb3f, 0xb3f, HB_Grapheme_Extend},
+ {0xb40, 0xb40, HB_Grapheme_Other},
+ {0xb41, 0xb44, HB_Grapheme_Extend},
+ {0xb47, 0xb48, HB_Grapheme_Other},
+ {0xb4b, 0xb4c, HB_Grapheme_Other},
+ {0xb4d, 0xb4d, HB_Grapheme_Extend},
+ {0xb56, 0xb56, HB_Grapheme_Extend},
+ {0xb57, 0xb57, HB_Grapheme_Extend},
+ {0xb62, 0xb63, HB_Grapheme_Extend},
+ {0xb82, 0xb82, HB_Grapheme_Extend},
+ {0xbbe, 0xbbe, HB_Grapheme_Extend},
+ {0xbbf, 0xbbf, HB_Grapheme_Other},
+ {0xbc0, 0xbc0, HB_Grapheme_Extend},
+ {0xbc1, 0xbc2, HB_Grapheme_Other},
+ {0xbc6, 0xbc8, HB_Grapheme_Other},
+ {0xbca, 0xbcc, HB_Grapheme_Other},
+ {0xbcd, 0xbcd, HB_Grapheme_Extend},
+ {0xbd7, 0xbd7, HB_Grapheme_Extend},
+ {0xc01, 0xc03, HB_Grapheme_Other},
+ {0xc3e, 0xc40, HB_Grapheme_Extend},
+ {0xc41, 0xc44, HB_Grapheme_Other},
+ {0xc46, 0xc48, HB_Grapheme_Extend},
+ {0xc4a, 0xc4d, HB_Grapheme_Extend},
+ {0xc55, 0xc56, HB_Grapheme_Extend},
+ {0xc62, 0xc63, HB_Grapheme_Extend},
+ {0xc82, 0xc83, HB_Grapheme_Other},
+ {0xcbc, 0xcbc, HB_Grapheme_Extend},
+ {0xcbe, 0xcbe, HB_Grapheme_Other},
+ {0xcbf, 0xcbf, HB_Grapheme_Extend},
+ {0xcc0, 0xcc1, HB_Grapheme_Other},
+ {0xcc2, 0xcc2, HB_Grapheme_Extend},
+ {0xcc3, 0xcc4, HB_Grapheme_Other},
+ {0xcc6, 0xcc6, HB_Grapheme_Extend},
+ {0xcc7, 0xcc8, HB_Grapheme_Other},
+ {0xcca, 0xccb, HB_Grapheme_Other},
+ {0xccc, 0xccd, HB_Grapheme_Extend},
+ {0xcd5, 0xcd6, HB_Grapheme_Extend},
+ {0xce2, 0xce3, HB_Grapheme_Extend},
+ {0xd02, 0xd03, HB_Grapheme_Other},
+ {0xd3e, 0xd3e, HB_Grapheme_Extend},
+ {0xd3f, 0xd40, HB_Grapheme_Other},
+ {0xd41, 0xd44, HB_Grapheme_Extend},
+ {0xd46, 0xd48, HB_Grapheme_Other},
+ {0xd4a, 0xd4c, HB_Grapheme_Other},
+ {0xd4d, 0xd4d, HB_Grapheme_Extend},
+ {0xd57, 0xd57, HB_Grapheme_Extend},
+ {0xd62, 0xd63, HB_Grapheme_Extend},
+ {0xd82, 0xd83, HB_Grapheme_Other},
+ {0xdca, 0xdca, HB_Grapheme_Extend},
+ {0xdcf, 0xdcf, HB_Grapheme_Extend},
+ {0xdd0, 0xdd1, HB_Grapheme_Other},
+ {0xdd2, 0xdd4, HB_Grapheme_Extend},
+ {0xdd6, 0xdd6, HB_Grapheme_Extend},
+ {0xdd8, 0xdde, HB_Grapheme_Other},
+ {0xddf, 0xddf, HB_Grapheme_Extend},
+ {0xdf2, 0xdf3, HB_Grapheme_Other},
+ {0xe30, 0xe30, HB_Grapheme_Extend},
+ {0xe31, 0xe31, HB_Grapheme_Extend},
+ {0xe32, 0xe33, HB_Grapheme_Extend},
+ {0xe34, 0xe3a, HB_Grapheme_Extend},
+ {0xe40, 0xe44, HB_Grapheme_Other},
+ {0xe45, 0xe45, HB_Grapheme_Extend},
+ {0xe47, 0xe4e, HB_Grapheme_Extend},
+ {0xeb0, 0xeb0, HB_Grapheme_Extend},
+ {0xeb1, 0xeb1, HB_Grapheme_Extend},
+ {0xeb2, 0xeb3, HB_Grapheme_Extend},
+ {0xeb4, 0xeb9, HB_Grapheme_Extend},
+ {0xebb, 0xebc, HB_Grapheme_Extend},
+ {0xec0, 0xec4, HB_Grapheme_Other},
+ {0xec8, 0xecd, HB_Grapheme_Extend},
+ {0xf18, 0xf19, HB_Grapheme_Extend},
+ {0xf35, 0xf35, HB_Grapheme_Extend},
+ {0xf37, 0xf37, HB_Grapheme_Extend},
+ {0xf39, 0xf39, HB_Grapheme_Extend},
+ {0xf3e, 0xf3f, HB_Grapheme_Other},
+ {0xf71, 0xf7e, HB_Grapheme_Extend},
+ {0xf7f, 0xf7f, HB_Grapheme_Other},
+ {0xf80, 0xf84, HB_Grapheme_Extend},
+ {0xf86, 0xf87, HB_Grapheme_Extend},
+ {0xf90, 0xf97, HB_Grapheme_Extend},
+ {0xf99, 0xfbc, HB_Grapheme_Extend},
+ {0xfc6, 0xfc6, HB_Grapheme_Extend},
+ {0x102b, 0x102c, HB_Grapheme_Other},
+ {0x102d, 0x1030, HB_Grapheme_Extend},
+ {0x1031, 0x1031, HB_Grapheme_Other},
+ {0x1032, 0x1037, HB_Grapheme_Extend},
+ {0x1038, 0x1038, HB_Grapheme_Other},
+ {0x1039, 0x103a, HB_Grapheme_Extend},
+ {0x103b, 0x103c, HB_Grapheme_Other},
+ {0x103d, 0x103e, HB_Grapheme_Extend},
+ {0x1056, 0x1057, HB_Grapheme_Other},
+ {0x1058, 0x1059, HB_Grapheme_Extend},
+ {0x105e, 0x1060, HB_Grapheme_Extend},
+ {0x1062, 0x1064, HB_Grapheme_Other},
+ {0x1067, 0x106d, HB_Grapheme_Other},
+ {0x1071, 0x1074, HB_Grapheme_Extend},
+ {0x1082, 0x1082, HB_Grapheme_Extend},
+ {0x1083, 0x1084, HB_Grapheme_Other},
+ {0x1085, 0x1086, HB_Grapheme_Extend},
+ {0x1087, 0x108c, HB_Grapheme_Other},
+ {0x108d, 0x108d, HB_Grapheme_Extend},
+ {0x108f, 0x108f, HB_Grapheme_Other},
+ {0x1100, 0x1159, HB_Grapheme_L},
+ {0x115f, 0x115f, HB_Grapheme_L},
+ {0x1160, 0x11a2, HB_Grapheme_V},
+ {0x11a8, 0x11f9, HB_Grapheme_T},
+ {0x135f, 0x135f, HB_Grapheme_Extend},
+ {0x1712, 0x1714, HB_Grapheme_Extend},
+ {0x1732, 0x1734, HB_Grapheme_Extend},
+ {0x1752, 0x1753, HB_Grapheme_Extend},
+ {0x1772, 0x1773, HB_Grapheme_Extend},
+ {0x17b4, 0x17b5, HB_Grapheme_Control},
+ {0x17b6, 0x17b6, HB_Grapheme_Other},
+ {0x17b7, 0x17bd, HB_Grapheme_Extend},
+ {0x17be, 0x17c5, HB_Grapheme_Other},
+ {0x17c6, 0x17c6, HB_Grapheme_Extend},
+ {0x17c7, 0x17c8, HB_Grapheme_Other},
+ {0x17c9, 0x17d3, HB_Grapheme_Extend},
+ {0x17dd, 0x17dd, HB_Grapheme_Extend},
+ {0x180b, 0x180d, HB_Grapheme_Extend},
+ {0x18a9, 0x18a9, HB_Grapheme_Extend},
+ {0x1920, 0x1922, HB_Grapheme_Extend},
+ {0x1923, 0x1926, HB_Grapheme_Other},
+ {0x1927, 0x1928, HB_Grapheme_Extend},
+ {0x1929, 0x192b, HB_Grapheme_Other},
+ {0x1930, 0x1931, HB_Grapheme_Other},
+ {0x1932, 0x1932, HB_Grapheme_Extend},
+ {0x1933, 0x1938, HB_Grapheme_Other},
+ {0x1939, 0x193b, HB_Grapheme_Extend},
+ {0x19b0, 0x19c0, HB_Grapheme_Other},
+ {0x19c8, 0x19c9, HB_Grapheme_Other},
+ {0x1a17, 0x1a18, HB_Grapheme_Extend},
+ {0x1a19, 0x1a1b, HB_Grapheme_Other},
+ {0x1b00, 0x1b03, HB_Grapheme_Extend},
+ {0x1b04, 0x1b04, HB_Grapheme_Other},
+ {0x1b34, 0x1b34, HB_Grapheme_Extend},
+ {0x1b35, 0x1b35, HB_Grapheme_Other},
+ {0x1b36, 0x1b3a, HB_Grapheme_Extend},
+ {0x1b3b, 0x1b3b, HB_Grapheme_Other},
+ {0x1b3c, 0x1b3c, HB_Grapheme_Extend},
+ {0x1b3d, 0x1b41, HB_Grapheme_Other},
+ {0x1b42, 0x1b42, HB_Grapheme_Extend},
+ {0x1b43, 0x1b44, HB_Grapheme_Other},
+ {0x1b6b, 0x1b73, HB_Grapheme_Extend},
+ {0x1b80, 0x1b81, HB_Grapheme_Extend},
+ {0x1b82, 0x1b82, HB_Grapheme_Other},
+ {0x1ba1, 0x1ba1, HB_Grapheme_Other},
+ {0x1ba2, 0x1ba5, HB_Grapheme_Extend},
+ {0x1ba6, 0x1ba7, HB_Grapheme_Other},
+ {0x1ba8, 0x1ba9, HB_Grapheme_Extend},
+ {0x1baa, 0x1baa, HB_Grapheme_Other},
+ {0x1c24, 0x1c2b, HB_Grapheme_Other},
+ {0x1c2c, 0x1c33, HB_Grapheme_Extend},
+ {0x1c34, 0x1c35, HB_Grapheme_Other},
+ {0x1c36, 0x1c37, HB_Grapheme_Extend},
+ {0x1dc0, 0x1de6, HB_Grapheme_Extend},
+ {0x1dfe, 0x1dff, HB_Grapheme_Extend},
+ {0x200b, 0x200b, HB_Grapheme_Control},
+ {0x200c, 0x200d, HB_Grapheme_Extend},
+ {0x200e, 0x200f, HB_Grapheme_Control},
+ {0x2028, 0x2028, HB_Grapheme_Control},
+ {0x2029, 0x2029, HB_Grapheme_Control},
+ {0x202a, 0x202e, HB_Grapheme_Control},
+ {0x2060, 0x2064, HB_Grapheme_Control},
+ {0x206a, 0x206f, HB_Grapheme_Control},
+ {0x20d0, 0x20dc, HB_Grapheme_Extend},
+ {0x20dd, 0x20e0, HB_Grapheme_Extend},
+ {0x20e1, 0x20e1, HB_Grapheme_Extend},
+ {0x20e2, 0x20e4, HB_Grapheme_Extend},
+ {0x20e5, 0x20f0, HB_Grapheme_Extend},
+ {0x2de0, 0x2dff, HB_Grapheme_Extend},
+ {0x302a, 0x302f, HB_Grapheme_Extend},
+ {0x3099, 0x309a, HB_Grapheme_Extend},
+ {0xa66f, 0xa66f, HB_Grapheme_Extend},
+ {0xa670, 0xa672, HB_Grapheme_Extend},
+ {0xa67c, 0xa67d, HB_Grapheme_Extend},
+ {0xa802, 0xa802, HB_Grapheme_Extend},
+ {0xa806, 0xa806, HB_Grapheme_Extend},
+ {0xa80b, 0xa80b, HB_Grapheme_Extend},
+ {0xa823, 0xa824, HB_Grapheme_Other},
+ {0xa825, 0xa826, HB_Grapheme_Extend},
+ {0xa827, 0xa827, HB_Grapheme_Other},
+ {0xa880, 0xa881, HB_Grapheme_Other},
+ {0xa8b4, 0xa8c3, HB_Grapheme_Other},
+ {0xa8c4, 0xa8c4, HB_Grapheme_Extend},
+ {0xa926, 0xa92d, HB_Grapheme_Extend},
+ {0xa947, 0xa951, HB_Grapheme_Extend},
+ {0xa952, 0xa953, HB_Grapheme_Other},
+ {0xaa29, 0xaa2e, HB_Grapheme_Extend},
+ {0xaa2f, 0xaa30, HB_Grapheme_Other},
+ {0xaa31, 0xaa32, HB_Grapheme_Extend},
+ {0xaa33, 0xaa34, HB_Grapheme_Other},
+ {0xaa35, 0xaa36, HB_Grapheme_Extend},
+ {0xaa43, 0xaa43, HB_Grapheme_Extend},
+ {0xaa4c, 0xaa4c, HB_Grapheme_Extend},
+ {0xaa4d, 0xaa4d, HB_Grapheme_Other},
+ {0xac00, 0xac00, HB_Grapheme_LV},
+ {0xac01, 0xac1b, HB_Grapheme_LVT},
+ {0xac1c, 0xac1c, HB_Grapheme_LV},
+ {0xac1d, 0xac37, HB_Grapheme_LVT},
+ {0xac38, 0xac38, HB_Grapheme_LV},
+ {0xac39, 0xac53, HB_Grapheme_LVT},
+ {0xac54, 0xac54, HB_Grapheme_LV},
+ {0xac55, 0xac6f, HB_Grapheme_LVT},
+ {0xac70, 0xac70, HB_Grapheme_LV},
+ {0xac71, 0xac8b, HB_Grapheme_LVT},
+ {0xac8c, 0xac8c, HB_Grapheme_LV},
+ {0xac8d, 0xaca7, HB_Grapheme_LVT},
+ {0xaca8, 0xaca8, HB_Grapheme_LV},
+ {0xaca9, 0xacc3, HB_Grapheme_LVT},
+ {0xacc4, 0xacc4, HB_Grapheme_LV},
+ {0xacc5, 0xacdf, HB_Grapheme_LVT},
+ {0xace0, 0xace0, HB_Grapheme_LV},
+ {0xace1, 0xacfb, HB_Grapheme_LVT},
+ {0xacfc, 0xacfc, HB_Grapheme_LV},
+ {0xacfd, 0xad17, HB_Grapheme_LVT},
+ {0xad18, 0xad18, HB_Grapheme_LV},
+ {0xad19, 0xad33, HB_Grapheme_LVT},
+ {0xad34, 0xad34, HB_Grapheme_LV},
+ {0xad35, 0xad4f, HB_Grapheme_LVT},
+ {0xad50, 0xad50, HB_Grapheme_LV},
+ {0xad51, 0xad6b, HB_Grapheme_LVT},
+ {0xad6c, 0xad6c, HB_Grapheme_LV},
+ {0xad6d, 0xad87, HB_Grapheme_LVT},
+ {0xad88, 0xad88, HB_Grapheme_LV},
+ {0xad89, 0xada3, HB_Grapheme_LVT},
+ {0xada4, 0xada4, HB_Grapheme_LV},
+ {0xada5, 0xadbf, HB_Grapheme_LVT},
+ {0xadc0, 0xadc0, HB_Grapheme_LV},
+ {0xadc1, 0xaddb, HB_Grapheme_LVT},
+ {0xaddc, 0xaddc, HB_Grapheme_LV},
+ {0xaddd, 0xadf7, HB_Grapheme_LVT},
+ {0xadf8, 0xadf8, HB_Grapheme_LV},
+ {0xadf9, 0xae13, HB_Grapheme_LVT},
+ {0xae14, 0xae14, HB_Grapheme_LV},
+ {0xae15, 0xae2f, HB_Grapheme_LVT},
+ {0xae30, 0xae30, HB_Grapheme_LV},
+ {0xae31, 0xae4b, HB_Grapheme_LVT},
+ {0xae4c, 0xae4c, HB_Grapheme_LV},
+ {0xae4d, 0xae67, HB_Grapheme_LVT},
+ {0xae68, 0xae68, HB_Grapheme_LV},
+ {0xae69, 0xae83, HB_Grapheme_LVT},
+ {0xae84, 0xae84, HB_Grapheme_LV},
+ {0xae85, 0xae9f, HB_Grapheme_LVT},
+ {0xaea0, 0xaea0, HB_Grapheme_LV},
+ {0xaea1, 0xaebb, HB_Grapheme_LVT},
+ {0xaebc, 0xaebc, HB_Grapheme_LV},
+ {0xaebd, 0xaed7, HB_Grapheme_LVT},
+ {0xaed8, 0xaed8, HB_Grapheme_LV},
+ {0xaed9, 0xaef3, HB_Grapheme_LVT},
+ {0xaef4, 0xaef4, HB_Grapheme_LV},
+ {0xaef5, 0xaf0f, HB_Grapheme_LVT},
+ {0xaf10, 0xaf10, HB_Grapheme_LV},
+ {0xaf11, 0xaf2b, HB_Grapheme_LVT},
+ {0xaf2c, 0xaf2c, HB_Grapheme_LV},
+ {0xaf2d, 0xaf47, HB_Grapheme_LVT},
+ {0xaf48, 0xaf48, HB_Grapheme_LV},
+ {0xaf49, 0xaf63, HB_Grapheme_LVT},
+ {0xaf64, 0xaf64, HB_Grapheme_LV},
+ {0xaf65, 0xaf7f, HB_Grapheme_LVT},
+ {0xaf80, 0xaf80, HB_Grapheme_LV},
+ {0xaf81, 0xaf9b, HB_Grapheme_LVT},
+ {0xaf9c, 0xaf9c, HB_Grapheme_LV},
+ {0xaf9d, 0xafb7, HB_Grapheme_LVT},
+ {0xafb8, 0xafb8, HB_Grapheme_LV},
+ {0xafb9, 0xafd3, HB_Grapheme_LVT},
+ {0xafd4, 0xafd4, HB_Grapheme_LV},
+ {0xafd5, 0xafef, HB_Grapheme_LVT},
+ {0xaff0, 0xaff0, HB_Grapheme_LV},
+ {0xaff1, 0xb00b, HB_Grapheme_LVT},
+ {0xb00c, 0xb00c, HB_Grapheme_LV},
+ {0xb00d, 0xb027, HB_Grapheme_LVT},
+ {0xb028, 0xb028, HB_Grapheme_LV},
+ {0xb029, 0xb043, HB_Grapheme_LVT},
+ {0xb044, 0xb044, HB_Grapheme_LV},
+ {0xb045, 0xb05f, HB_Grapheme_LVT},
+ {0xb060, 0xb060, HB_Grapheme_LV},
+ {0xb061, 0xb07b, HB_Grapheme_LVT},
+ {0xb07c, 0xb07c, HB_Grapheme_LV},
+ {0xb07d, 0xb097, HB_Grapheme_LVT},
+ {0xb098, 0xb098, HB_Grapheme_LV},
+ {0xb099, 0xb0b3, HB_Grapheme_LVT},
+ {0xb0b4, 0xb0b4, HB_Grapheme_LV},
+ {0xb0b5, 0xb0cf, HB_Grapheme_LVT},
+ {0xb0d0, 0xb0d0, HB_Grapheme_LV},
+ {0xb0d1, 0xb0eb, HB_Grapheme_LVT},
+ {0xb0ec, 0xb0ec, HB_Grapheme_LV},
+ {0xb0ed, 0xb107, HB_Grapheme_LVT},
+ {0xb108, 0xb108, HB_Grapheme_LV},
+ {0xb109, 0xb123, HB_Grapheme_LVT},
+ {0xb124, 0xb124, HB_Grapheme_LV},
+ {0xb125, 0xb13f, HB_Grapheme_LVT},
+ {0xb140, 0xb140, HB_Grapheme_LV},
+ {0xb141, 0xb15b, HB_Grapheme_LVT},
+ {0xb15c, 0xb15c, HB_Grapheme_LV},
+ {0xb15d, 0xb177, HB_Grapheme_LVT},
+ {0xb178, 0xb178, HB_Grapheme_LV},
+ {0xb179, 0xb193, HB_Grapheme_LVT},
+ {0xb194, 0xb194, HB_Grapheme_LV},
+ {0xb195, 0xb1af, HB_Grapheme_LVT},
+ {0xb1b0, 0xb1b0, HB_Grapheme_LV},
+ {0xb1b1, 0xb1cb, HB_Grapheme_LVT},
+ {0xb1cc, 0xb1cc, HB_Grapheme_LV},
+ {0xb1cd, 0xb1e7, HB_Grapheme_LVT},
+ {0xb1e8, 0xb1e8, HB_Grapheme_LV},
+ {0xb1e9, 0xb203, HB_Grapheme_LVT},
+ {0xb204, 0xb204, HB_Grapheme_LV},
+ {0xb205, 0xb21f, HB_Grapheme_LVT},
+ {0xb220, 0xb220, HB_Grapheme_LV},
+ {0xb221, 0xb23b, HB_Grapheme_LVT},
+ {0xb23c, 0xb23c, HB_Grapheme_LV},
+ {0xb23d, 0xb257, HB_Grapheme_LVT},
+ {0xb258, 0xb258, HB_Grapheme_LV},
+ {0xb259, 0xb273, HB_Grapheme_LVT},
+ {0xb274, 0xb274, HB_Grapheme_LV},
+ {0xb275, 0xb28f, HB_Grapheme_LVT},
+ {0xb290, 0xb290, HB_Grapheme_LV},
+ {0xb291, 0xb2ab, HB_Grapheme_LVT},
+ {0xb2ac, 0xb2ac, HB_Grapheme_LV},
+ {0xb2ad, 0xb2c7, HB_Grapheme_LVT},
+ {0xb2c8, 0xb2c8, HB_Grapheme_LV},
+ {0xb2c9, 0xb2e3, HB_Grapheme_LVT},
+ {0xb2e4, 0xb2e4, HB_Grapheme_LV},
+ {0xb2e5, 0xb2ff, HB_Grapheme_LVT},
+ {0xb300, 0xb300, HB_Grapheme_LV},
+ {0xb301, 0xb31b, HB_Grapheme_LVT},
+ {0xb31c, 0xb31c, HB_Grapheme_LV},
+ {0xb31d, 0xb337, HB_Grapheme_LVT},
+ {0xb338, 0xb338, HB_Grapheme_LV},
+ {0xb339, 0xb353, HB_Grapheme_LVT},
+ {0xb354, 0xb354, HB_Grapheme_LV},
+ {0xb355, 0xb36f, HB_Grapheme_LVT},
+ {0xb370, 0xb370, HB_Grapheme_LV},
+ {0xb371, 0xb38b, HB_Grapheme_LVT},
+ {0xb38c, 0xb38c, HB_Grapheme_LV},
+ {0xb38d, 0xb3a7, HB_Grapheme_LVT},
+ {0xb3a8, 0xb3a8, HB_Grapheme_LV},
+ {0xb3a9, 0xb3c3, HB_Grapheme_LVT},
+ {0xb3c4, 0xb3c4, HB_Grapheme_LV},
+ {0xb3c5, 0xb3df, HB_Grapheme_LVT},
+ {0xb3e0, 0xb3e0, HB_Grapheme_LV},
+ {0xb3e1, 0xb3fb, HB_Grapheme_LVT},
+ {0xb3fc, 0xb3fc, HB_Grapheme_LV},
+ {0xb3fd, 0xb417, HB_Grapheme_LVT},
+ {0xb418, 0xb418, HB_Grapheme_LV},
+ {0xb419, 0xb433, HB_Grapheme_LVT},
+ {0xb434, 0xb434, HB_Grapheme_LV},
+ {0xb435, 0xb44f, HB_Grapheme_LVT},
+ {0xb450, 0xb450, HB_Grapheme_LV},
+ {0xb451, 0xb46b, HB_Grapheme_LVT},
+ {0xb46c, 0xb46c, HB_Grapheme_LV},
+ {0xb46d, 0xb487, HB_Grapheme_LVT},
+ {0xb488, 0xb488, HB_Grapheme_LV},
+ {0xb489, 0xb4a3, HB_Grapheme_LVT},
+ {0xb4a4, 0xb4a4, HB_Grapheme_LV},
+ {0xb4a5, 0xb4bf, HB_Grapheme_LVT},
+ {0xb4c0, 0xb4c0, HB_Grapheme_LV},
+ {0xb4c1, 0xb4db, HB_Grapheme_LVT},
+ {0xb4dc, 0xb4dc, HB_Grapheme_LV},
+ {0xb4dd, 0xb4f7, HB_Grapheme_LVT},
+ {0xb4f8, 0xb4f8, HB_Grapheme_LV},
+ {0xb4f9, 0xb513, HB_Grapheme_LVT},
+ {0xb514, 0xb514, HB_Grapheme_LV},
+ {0xb515, 0xb52f, HB_Grapheme_LVT},
+ {0xb530, 0xb530, HB_Grapheme_LV},
+ {0xb531, 0xb54b, HB_Grapheme_LVT},
+ {0xb54c, 0xb54c, HB_Grapheme_LV},
+ {0xb54d, 0xb567, HB_Grapheme_LVT},
+ {0xb568, 0xb568, HB_Grapheme_LV},
+ {0xb569, 0xb583, HB_Grapheme_LVT},
+ {0xb584, 0xb584, HB_Grapheme_LV},
+ {0xb585, 0xb59f, HB_Grapheme_LVT},
+ {0xb5a0, 0xb5a0, HB_Grapheme_LV},
+ {0xb5a1, 0xb5bb, HB_Grapheme_LVT},
+ {0xb5bc, 0xb5bc, HB_Grapheme_LV},
+ {0xb5bd, 0xb5d7, HB_Grapheme_LVT},
+ {0xb5d8, 0xb5d8, HB_Grapheme_LV},
+ {0xb5d9, 0xb5f3, HB_Grapheme_LVT},
+ {0xb5f4, 0xb5f4, HB_Grapheme_LV},
+ {0xb5f5, 0xb60f, HB_Grapheme_LVT},
+ {0xb610, 0xb610, HB_Grapheme_LV},
+ {0xb611, 0xb62b, HB_Grapheme_LVT},
+ {0xb62c, 0xb62c, HB_Grapheme_LV},
+ {0xb62d, 0xb647, HB_Grapheme_LVT},
+ {0xb648, 0xb648, HB_Grapheme_LV},
+ {0xb649, 0xb663, HB_Grapheme_LVT},
+ {0xb664, 0xb664, HB_Grapheme_LV},
+ {0xb665, 0xb67f, HB_Grapheme_LVT},
+ {0xb680, 0xb680, HB_Grapheme_LV},
+ {0xb681, 0xb69b, HB_Grapheme_LVT},
+ {0xb69c, 0xb69c, HB_Grapheme_LV},
+ {0xb69d, 0xb6b7, HB_Grapheme_LVT},
+ {0xb6b8, 0xb6b8, HB_Grapheme_LV},
+ {0xb6b9, 0xb6d3, HB_Grapheme_LVT},
+ {0xb6d4, 0xb6d4, HB_Grapheme_LV},
+ {0xb6d5, 0xb6ef, HB_Grapheme_LVT},
+ {0xb6f0, 0xb6f0, HB_Grapheme_LV},
+ {0xb6f1, 0xb70b, HB_Grapheme_LVT},
+ {0xb70c, 0xb70c, HB_Grapheme_LV},
+ {0xb70d, 0xb727, HB_Grapheme_LVT},
+ {0xb728, 0xb728, HB_Grapheme_LV},
+ {0xb729, 0xb743, HB_Grapheme_LVT},
+ {0xb744, 0xb744, HB_Grapheme_LV},
+ {0xb745, 0xb75f, HB_Grapheme_LVT},
+ {0xb760, 0xb760, HB_Grapheme_LV},
+ {0xb761, 0xb77b, HB_Grapheme_LVT},
+ {0xb77c, 0xb77c, HB_Grapheme_LV},
+ {0xb77d, 0xb797, HB_Grapheme_LVT},
+ {0xb798, 0xb798, HB_Grapheme_LV},
+ {0xb799, 0xb7b3, HB_Grapheme_LVT},
+ {0xb7b4, 0xb7b4, HB_Grapheme_LV},
+ {0xb7b5, 0xb7cf, HB_Grapheme_LVT},
+ {0xb7d0, 0xb7d0, HB_Grapheme_LV},
+ {0xb7d1, 0xb7eb, HB_Grapheme_LVT},
+ {0xb7ec, 0xb7ec, HB_Grapheme_LV},
+ {0xb7ed, 0xb807, HB_Grapheme_LVT},
+ {0xb808, 0xb808, HB_Grapheme_LV},
+ {0xb809, 0xb823, HB_Grapheme_LVT},
+ {0xb824, 0xb824, HB_Grapheme_LV},
+ {0xb825, 0xb83f, HB_Grapheme_LVT},
+ {0xb840, 0xb840, HB_Grapheme_LV},
+ {0xb841, 0xb85b, HB_Grapheme_LVT},
+ {0xb85c, 0xb85c, HB_Grapheme_LV},
+ {0xb85d, 0xb877, HB_Grapheme_LVT},
+ {0xb878, 0xb878, HB_Grapheme_LV},
+ {0xb879, 0xb893, HB_Grapheme_LVT},
+ {0xb894, 0xb894, HB_Grapheme_LV},
+ {0xb895, 0xb8af, HB_Grapheme_LVT},
+ {0xb8b0, 0xb8b0, HB_Grapheme_LV},
+ {0xb8b1, 0xb8cb, HB_Grapheme_LVT},
+ {0xb8cc, 0xb8cc, HB_Grapheme_LV},
+ {0xb8cd, 0xb8e7, HB_Grapheme_LVT},
+ {0xb8e8, 0xb8e8, HB_Grapheme_LV},
+ {0xb8e9, 0xb903, HB_Grapheme_LVT},
+ {0xb904, 0xb904, HB_Grapheme_LV},
+ {0xb905, 0xb91f, HB_Grapheme_LVT},
+ {0xb920, 0xb920, HB_Grapheme_LV},
+ {0xb921, 0xb93b, HB_Grapheme_LVT},
+ {0xb93c, 0xb93c, HB_Grapheme_LV},
+ {0xb93d, 0xb957, HB_Grapheme_LVT},
+ {0xb958, 0xb958, HB_Grapheme_LV},
+ {0xb959, 0xb973, HB_Grapheme_LVT},
+ {0xb974, 0xb974, HB_Grapheme_LV},
+ {0xb975, 0xb98f, HB_Grapheme_LVT},
+ {0xb990, 0xb990, HB_Grapheme_LV},
+ {0xb991, 0xb9ab, HB_Grapheme_LVT},
+ {0xb9ac, 0xb9ac, HB_Grapheme_LV},
+ {0xb9ad, 0xb9c7, HB_Grapheme_LVT},
+ {0xb9c8, 0xb9c8, HB_Grapheme_LV},
+ {0xb9c9, 0xb9e3, HB_Grapheme_LVT},
+ {0xb9e4, 0xb9e4, HB_Grapheme_LV},
+ {0xb9e5, 0xb9ff, HB_Grapheme_LVT},
+ {0xba00, 0xba00, HB_Grapheme_LV},
+ {0xba01, 0xba1b, HB_Grapheme_LVT},
+ {0xba1c, 0xba1c, HB_Grapheme_LV},
+ {0xba1d, 0xba37, HB_Grapheme_LVT},
+ {0xba38, 0xba38, HB_Grapheme_LV},
+ {0xba39, 0xba53, HB_Grapheme_LVT},
+ {0xba54, 0xba54, HB_Grapheme_LV},
+ {0xba55, 0xba6f, HB_Grapheme_LVT},
+ {0xba70, 0xba70, HB_Grapheme_LV},
+ {0xba71, 0xba8b, HB_Grapheme_LVT},
+ {0xba8c, 0xba8c, HB_Grapheme_LV},
+ {0xba8d, 0xbaa7, HB_Grapheme_LVT},
+ {0xbaa8, 0xbaa8, HB_Grapheme_LV},
+ {0xbaa9, 0xbac3, HB_Grapheme_LVT},
+ {0xbac4, 0xbac4, HB_Grapheme_LV},
+ {0xbac5, 0xbadf, HB_Grapheme_LVT},
+ {0xbae0, 0xbae0, HB_Grapheme_LV},
+ {0xbae1, 0xbafb, HB_Grapheme_LVT},
+ {0xbafc, 0xbafc, HB_Grapheme_LV},
+ {0xbafd, 0xbb17, HB_Grapheme_LVT},
+ {0xbb18, 0xbb18, HB_Grapheme_LV},
+ {0xbb19, 0xbb33, HB_Grapheme_LVT},
+ {0xbb34, 0xbb34, HB_Grapheme_LV},
+ {0xbb35, 0xbb4f, HB_Grapheme_LVT},
+ {0xbb50, 0xbb50, HB_Grapheme_LV},
+ {0xbb51, 0xbb6b, HB_Grapheme_LVT},
+ {0xbb6c, 0xbb6c, HB_Grapheme_LV},
+ {0xbb6d, 0xbb87, HB_Grapheme_LVT},
+ {0xbb88, 0xbb88, HB_Grapheme_LV},
+ {0xbb89, 0xbba3, HB_Grapheme_LVT},
+ {0xbba4, 0xbba4, HB_Grapheme_LV},
+ {0xbba5, 0xbbbf, HB_Grapheme_LVT},
+ {0xbbc0, 0xbbc0, HB_Grapheme_LV},
+ {0xbbc1, 0xbbdb, HB_Grapheme_LVT},
+ {0xbbdc, 0xbbdc, HB_Grapheme_LV},
+ {0xbbdd, 0xbbf7, HB_Grapheme_LVT},
+ {0xbbf8, 0xbbf8, HB_Grapheme_LV},
+ {0xbbf9, 0xbc13, HB_Grapheme_LVT},
+ {0xbc14, 0xbc14, HB_Grapheme_LV},
+ {0xbc15, 0xbc2f, HB_Grapheme_LVT},
+ {0xbc30, 0xbc30, HB_Grapheme_LV},
+ {0xbc31, 0xbc4b, HB_Grapheme_LVT},
+ {0xbc4c, 0xbc4c, HB_Grapheme_LV},
+ {0xbc4d, 0xbc67, HB_Grapheme_LVT},
+ {0xbc68, 0xbc68, HB_Grapheme_LV},
+ {0xbc69, 0xbc83, HB_Grapheme_LVT},
+ {0xbc84, 0xbc84, HB_Grapheme_LV},
+ {0xbc85, 0xbc9f, HB_Grapheme_LVT},
+ {0xbca0, 0xbca0, HB_Grapheme_LV},
+ {0xbca1, 0xbcbb, HB_Grapheme_LVT},
+ {0xbcbc, 0xbcbc, HB_Grapheme_LV},
+ {0xbcbd, 0xbcd7, HB_Grapheme_LVT},
+ {0xbcd8, 0xbcd8, HB_Grapheme_LV},
+ {0xbcd9, 0xbcf3, HB_Grapheme_LVT},
+ {0xbcf4, 0xbcf4, HB_Grapheme_LV},
+ {0xbcf5, 0xbd0f, HB_Grapheme_LVT},
+ {0xbd10, 0xbd10, HB_Grapheme_LV},
+ {0xbd11, 0xbd2b, HB_Grapheme_LVT},
+ {0xbd2c, 0xbd2c, HB_Grapheme_LV},
+ {0xbd2d, 0xbd47, HB_Grapheme_LVT},
+ {0xbd48, 0xbd48, HB_Grapheme_LV},
+ {0xbd49, 0xbd63, HB_Grapheme_LVT},
+ {0xbd64, 0xbd64, HB_Grapheme_LV},
+ {0xbd65, 0xbd7f, HB_Grapheme_LVT},
+ {0xbd80, 0xbd80, HB_Grapheme_LV},
+ {0xbd81, 0xbd9b, HB_Grapheme_LVT},
+ {0xbd9c, 0xbd9c, HB_Grapheme_LV},
+ {0xbd9d, 0xbdb7, HB_Grapheme_LVT},
+ {0xbdb8, 0xbdb8, HB_Grapheme_LV},
+ {0xbdb9, 0xbdd3, HB_Grapheme_LVT},
+ {0xbdd4, 0xbdd4, HB_Grapheme_LV},
+ {0xbdd5, 0xbdef, HB_Grapheme_LVT},
+ {0xbdf0, 0xbdf0, HB_Grapheme_LV},
+ {0xbdf1, 0xbe0b, HB_Grapheme_LVT},
+ {0xbe0c, 0xbe0c, HB_Grapheme_LV},
+ {0xbe0d, 0xbe27, HB_Grapheme_LVT},
+ {0xbe28, 0xbe28, HB_Grapheme_LV},
+ {0xbe29, 0xbe43, HB_Grapheme_LVT},
+ {0xbe44, 0xbe44, HB_Grapheme_LV},
+ {0xbe45, 0xbe5f, HB_Grapheme_LVT},
+ {0xbe60, 0xbe60, HB_Grapheme_LV},
+ {0xbe61, 0xbe7b, HB_Grapheme_LVT},
+ {0xbe7c, 0xbe7c, HB_Grapheme_LV},
+ {0xbe7d, 0xbe97, HB_Grapheme_LVT},
+ {0xbe98, 0xbe98, HB_Grapheme_LV},
+ {0xbe99, 0xbeb3, HB_Grapheme_LVT},
+ {0xbeb4, 0xbeb4, HB_Grapheme_LV},
+ {0xbeb5, 0xbecf, HB_Grapheme_LVT},
+ {0xbed0, 0xbed0, HB_Grapheme_LV},
+ {0xbed1, 0xbeeb, HB_Grapheme_LVT},
+ {0xbeec, 0xbeec, HB_Grapheme_LV},
+ {0xbeed, 0xbf07, HB_Grapheme_LVT},
+ {0xbf08, 0xbf08, HB_Grapheme_LV},
+ {0xbf09, 0xbf23, HB_Grapheme_LVT},
+ {0xbf24, 0xbf24, HB_Grapheme_LV},
+ {0xbf25, 0xbf3f, HB_Grapheme_LVT},
+ {0xbf40, 0xbf40, HB_Grapheme_LV},
+ {0xbf41, 0xbf5b, HB_Grapheme_LVT},
+ {0xbf5c, 0xbf5c, HB_Grapheme_LV},
+ {0xbf5d, 0xbf77, HB_Grapheme_LVT},
+ {0xbf78, 0xbf78, HB_Grapheme_LV},
+ {0xbf79, 0xbf93, HB_Grapheme_LVT},
+ {0xbf94, 0xbf94, HB_Grapheme_LV},
+ {0xbf95, 0xbfaf, HB_Grapheme_LVT},
+ {0xbfb0, 0xbfb0, HB_Grapheme_LV},
+ {0xbfb1, 0xbfcb, HB_Grapheme_LVT},
+ {0xbfcc, 0xbfcc, HB_Grapheme_LV},
+ {0xbfcd, 0xbfe7, HB_Grapheme_LVT},
+ {0xbfe8, 0xbfe8, HB_Grapheme_LV},
+ {0xbfe9, 0xc003, HB_Grapheme_LVT},
+ {0xc004, 0xc004, HB_Grapheme_LV},
+ {0xc005, 0xc01f, HB_Grapheme_LVT},
+ {0xc020, 0xc020, HB_Grapheme_LV},
+ {0xc021, 0xc03b, HB_Grapheme_LVT},
+ {0xc03c, 0xc03c, HB_Grapheme_LV},
+ {0xc03d, 0xc057, HB_Grapheme_LVT},
+ {0xc058, 0xc058, HB_Grapheme_LV},
+ {0xc059, 0xc073, HB_Grapheme_LVT},
+ {0xc074, 0xc074, HB_Grapheme_LV},
+ {0xc075, 0xc08f, HB_Grapheme_LVT},
+ {0xc090, 0xc090, HB_Grapheme_LV},
+ {0xc091, 0xc0ab, HB_Grapheme_LVT},
+ {0xc0ac, 0xc0ac, HB_Grapheme_LV},
+ {0xc0ad, 0xc0c7, HB_Grapheme_LVT},
+ {0xc0c8, 0xc0c8, HB_Grapheme_LV},
+ {0xc0c9, 0xc0e3, HB_Grapheme_LVT},
+ {0xc0e4, 0xc0e4, HB_Grapheme_LV},
+ {0xc0e5, 0xc0ff, HB_Grapheme_LVT},
+ {0xc100, 0xc100, HB_Grapheme_LV},
+ {0xc101, 0xc11b, HB_Grapheme_LVT},
+ {0xc11c, 0xc11c, HB_Grapheme_LV},
+ {0xc11d, 0xc137, HB_Grapheme_LVT},
+ {0xc138, 0xc138, HB_Grapheme_LV},
+ {0xc139, 0xc153, HB_Grapheme_LVT},
+ {0xc154, 0xc154, HB_Grapheme_LV},
+ {0xc155, 0xc16f, HB_Grapheme_LVT},
+ {0xc170, 0xc170, HB_Grapheme_LV},
+ {0xc171, 0xc18b, HB_Grapheme_LVT},
+ {0xc18c, 0xc18c, HB_Grapheme_LV},
+ {0xc18d, 0xc1a7, HB_Grapheme_LVT},
+ {0xc1a8, 0xc1a8, HB_Grapheme_LV},
+ {0xc1a9, 0xc1c3, HB_Grapheme_LVT},
+ {0xc1c4, 0xc1c4, HB_Grapheme_LV},
+ {0xc1c5, 0xc1df, HB_Grapheme_LVT},
+ {0xc1e0, 0xc1e0, HB_Grapheme_LV},
+ {0xc1e1, 0xc1fb, HB_Grapheme_LVT},
+ {0xc1fc, 0xc1fc, HB_Grapheme_LV},
+ {0xc1fd, 0xc217, HB_Grapheme_LVT},
+ {0xc218, 0xc218, HB_Grapheme_LV},
+ {0xc219, 0xc233, HB_Grapheme_LVT},
+ {0xc234, 0xc234, HB_Grapheme_LV},
+ {0xc235, 0xc24f, HB_Grapheme_LVT},
+ {0xc250, 0xc250, HB_Grapheme_LV},
+ {0xc251, 0xc26b, HB_Grapheme_LVT},
+ {0xc26c, 0xc26c, HB_Grapheme_LV},
+ {0xc26d, 0xc287, HB_Grapheme_LVT},
+ {0xc288, 0xc288, HB_Grapheme_LV},
+ {0xc289, 0xc2a3, HB_Grapheme_LVT},
+ {0xc2a4, 0xc2a4, HB_Grapheme_LV},
+ {0xc2a5, 0xc2bf, HB_Grapheme_LVT},
+ {0xc2c0, 0xc2c0, HB_Grapheme_LV},
+ {0xc2c1, 0xc2db, HB_Grapheme_LVT},
+ {0xc2dc, 0xc2dc, HB_Grapheme_LV},
+ {0xc2dd, 0xc2f7, HB_Grapheme_LVT},
+ {0xc2f8, 0xc2f8, HB_Grapheme_LV},
+ {0xc2f9, 0xc313, HB_Grapheme_LVT},
+ {0xc314, 0xc314, HB_Grapheme_LV},
+ {0xc315, 0xc32f, HB_Grapheme_LVT},
+ {0xc330, 0xc330, HB_Grapheme_LV},
+ {0xc331, 0xc34b, HB_Grapheme_LVT},
+ {0xc34c, 0xc34c, HB_Grapheme_LV},
+ {0xc34d, 0xc367, HB_Grapheme_LVT},
+ {0xc368, 0xc368, HB_Grapheme_LV},
+ {0xc369, 0xc383, HB_Grapheme_LVT},
+ {0xc384, 0xc384, HB_Grapheme_LV},
+ {0xc385, 0xc39f, HB_Grapheme_LVT},
+ {0xc3a0, 0xc3a0, HB_Grapheme_LV},
+ {0xc3a1, 0xc3bb, HB_Grapheme_LVT},
+ {0xc3bc, 0xc3bc, HB_Grapheme_LV},
+ {0xc3bd, 0xc3d7, HB_Grapheme_LVT},
+ {0xc3d8, 0xc3d8, HB_Grapheme_LV},
+ {0xc3d9, 0xc3f3, HB_Grapheme_LVT},
+ {0xc3f4, 0xc3f4, HB_Grapheme_LV},
+ {0xc3f5, 0xc40f, HB_Grapheme_LVT},
+ {0xc410, 0xc410, HB_Grapheme_LV},
+ {0xc411, 0xc42b, HB_Grapheme_LVT},
+ {0xc42c, 0xc42c, HB_Grapheme_LV},
+ {0xc42d, 0xc447, HB_Grapheme_LVT},
+ {0xc448, 0xc448, HB_Grapheme_LV},
+ {0xc449, 0xc463, HB_Grapheme_LVT},
+ {0xc464, 0xc464, HB_Grapheme_LV},
+ {0xc465, 0xc47f, HB_Grapheme_LVT},
+ {0xc480, 0xc480, HB_Grapheme_LV},
+ {0xc481, 0xc49b, HB_Grapheme_LVT},
+ {0xc49c, 0xc49c, HB_Grapheme_LV},
+ {0xc49d, 0xc4b7, HB_Grapheme_LVT},
+ {0xc4b8, 0xc4b8, HB_Grapheme_LV},
+ {0xc4b9, 0xc4d3, HB_Grapheme_LVT},
+ {0xc4d4, 0xc4d4, HB_Grapheme_LV},
+ {0xc4d5, 0xc4ef, HB_Grapheme_LVT},
+ {0xc4f0, 0xc4f0, HB_Grapheme_LV},
+ {0xc4f1, 0xc50b, HB_Grapheme_LVT},
+ {0xc50c, 0xc50c, HB_Grapheme_LV},
+ {0xc50d, 0xc527, HB_Grapheme_LVT},
+ {0xc528, 0xc528, HB_Grapheme_LV},
+ {0xc529, 0xc543, HB_Grapheme_LVT},
+ {0xc544, 0xc544, HB_Grapheme_LV},
+ {0xc545, 0xc55f, HB_Grapheme_LVT},
+ {0xc560, 0xc560, HB_Grapheme_LV},
+ {0xc561, 0xc57b, HB_Grapheme_LVT},
+ {0xc57c, 0xc57c, HB_Grapheme_LV},
+ {0xc57d, 0xc597, HB_Grapheme_LVT},
+ {0xc598, 0xc598, HB_Grapheme_LV},
+ {0xc599, 0xc5b3, HB_Grapheme_LVT},
+ {0xc5b4, 0xc5b4, HB_Grapheme_LV},
+ {0xc5b5, 0xc5cf, HB_Grapheme_LVT},
+ {0xc5d0, 0xc5d0, HB_Grapheme_LV},
+ {0xc5d1, 0xc5eb, HB_Grapheme_LVT},
+ {0xc5ec, 0xc5ec, HB_Grapheme_LV},
+ {0xc5ed, 0xc607, HB_Grapheme_LVT},
+ {0xc608, 0xc608, HB_Grapheme_LV},
+ {0xc609, 0xc623, HB_Grapheme_LVT},
+ {0xc624, 0xc624, HB_Grapheme_LV},
+ {0xc625, 0xc63f, HB_Grapheme_LVT},
+ {0xc640, 0xc640, HB_Grapheme_LV},
+ {0xc641, 0xc65b, HB_Grapheme_LVT},
+ {0xc65c, 0xc65c, HB_Grapheme_LV},
+ {0xc65d, 0xc677, HB_Grapheme_LVT},
+ {0xc678, 0xc678, HB_Grapheme_LV},
+ {0xc679, 0xc693, HB_Grapheme_LVT},
+ {0xc694, 0xc694, HB_Grapheme_LV},
+ {0xc695, 0xc6af, HB_Grapheme_LVT},
+ {0xc6b0, 0xc6b0, HB_Grapheme_LV},
+ {0xc6b1, 0xc6cb, HB_Grapheme_LVT},
+ {0xc6cc, 0xc6cc, HB_Grapheme_LV},
+ {0xc6cd, 0xc6e7, HB_Grapheme_LVT},
+ {0xc6e8, 0xc6e8, HB_Grapheme_LV},
+ {0xc6e9, 0xc703, HB_Grapheme_LVT},
+ {0xc704, 0xc704, HB_Grapheme_LV},
+ {0xc705, 0xc71f, HB_Grapheme_LVT},
+ {0xc720, 0xc720, HB_Grapheme_LV},
+ {0xc721, 0xc73b, HB_Grapheme_LVT},
+ {0xc73c, 0xc73c, HB_Grapheme_LV},
+ {0xc73d, 0xc757, HB_Grapheme_LVT},
+ {0xc758, 0xc758, HB_Grapheme_LV},
+ {0xc759, 0xc773, HB_Grapheme_LVT},
+ {0xc774, 0xc774, HB_Grapheme_LV},
+ {0xc775, 0xc78f, HB_Grapheme_LVT},
+ {0xc790, 0xc790, HB_Grapheme_LV},
+ {0xc791, 0xc7ab, HB_Grapheme_LVT},
+ {0xc7ac, 0xc7ac, HB_Grapheme_LV},
+ {0xc7ad, 0xc7c7, HB_Grapheme_LVT},
+ {0xc7c8, 0xc7c8, HB_Grapheme_LV},
+ {0xc7c9, 0xc7e3, HB_Grapheme_LVT},
+ {0xc7e4, 0xc7e4, HB_Grapheme_LV},
+ {0xc7e5, 0xc7ff, HB_Grapheme_LVT},
+ {0xc800, 0xc800, HB_Grapheme_LV},
+ {0xc801, 0xc81b, HB_Grapheme_LVT},
+ {0xc81c, 0xc81c, HB_Grapheme_LV},
+ {0xc81d, 0xc837, HB_Grapheme_LVT},
+ {0xc838, 0xc838, HB_Grapheme_LV},
+ {0xc839, 0xc853, HB_Grapheme_LVT},
+ {0xc854, 0xc854, HB_Grapheme_LV},
+ {0xc855, 0xc86f, HB_Grapheme_LVT},
+ {0xc870, 0xc870, HB_Grapheme_LV},
+ {0xc871, 0xc88b, HB_Grapheme_LVT},
+ {0xc88c, 0xc88c, HB_Grapheme_LV},
+ {0xc88d, 0xc8a7, HB_Grapheme_LVT},
+ {0xc8a8, 0xc8a8, HB_Grapheme_LV},
+ {0xc8a9, 0xc8c3, HB_Grapheme_LVT},
+ {0xc8c4, 0xc8c4, HB_Grapheme_LV},
+ {0xc8c5, 0xc8df, HB_Grapheme_LVT},
+ {0xc8e0, 0xc8e0, HB_Grapheme_LV},
+ {0xc8e1, 0xc8fb, HB_Grapheme_LVT},
+ {0xc8fc, 0xc8fc, HB_Grapheme_LV},
+ {0xc8fd, 0xc917, HB_Grapheme_LVT},
+ {0xc918, 0xc918, HB_Grapheme_LV},
+ {0xc919, 0xc933, HB_Grapheme_LVT},
+ {0xc934, 0xc934, HB_Grapheme_LV},
+ {0xc935, 0xc94f, HB_Grapheme_LVT},
+ {0xc950, 0xc950, HB_Grapheme_LV},
+ {0xc951, 0xc96b, HB_Grapheme_LVT},
+ {0xc96c, 0xc96c, HB_Grapheme_LV},
+ {0xc96d, 0xc987, HB_Grapheme_LVT},
+ {0xc988, 0xc988, HB_Grapheme_LV},
+ {0xc989, 0xc9a3, HB_Grapheme_LVT},
+ {0xc9a4, 0xc9a4, HB_Grapheme_LV},
+ {0xc9a5, 0xc9bf, HB_Grapheme_LVT},
+ {0xc9c0, 0xc9c0, HB_Grapheme_LV},
+ {0xc9c1, 0xc9db, HB_Grapheme_LVT},
+ {0xc9dc, 0xc9dc, HB_Grapheme_LV},
+ {0xc9dd, 0xc9f7, HB_Grapheme_LVT},
+ {0xc9f8, 0xc9f8, HB_Grapheme_LV},
+ {0xc9f9, 0xca13, HB_Grapheme_LVT},
+ {0xca14, 0xca14, HB_Grapheme_LV},
+ {0xca15, 0xca2f, HB_Grapheme_LVT},
+ {0xca30, 0xca30, HB_Grapheme_LV},
+ {0xca31, 0xca4b, HB_Grapheme_LVT},
+ {0xca4c, 0xca4c, HB_Grapheme_LV},
+ {0xca4d, 0xca67, HB_Grapheme_LVT},
+ {0xca68, 0xca68, HB_Grapheme_LV},
+ {0xca69, 0xca83, HB_Grapheme_LVT},
+ {0xca84, 0xca84, HB_Grapheme_LV},
+ {0xca85, 0xca9f, HB_Grapheme_LVT},
+ {0xcaa0, 0xcaa0, HB_Grapheme_LV},
+ {0xcaa1, 0xcabb, HB_Grapheme_LVT},
+ {0xcabc, 0xcabc, HB_Grapheme_LV},
+ {0xcabd, 0xcad7, HB_Grapheme_LVT},
+ {0xcad8, 0xcad8, HB_Grapheme_LV},
+ {0xcad9, 0xcaf3, HB_Grapheme_LVT},
+ {0xcaf4, 0xcaf4, HB_Grapheme_LV},
+ {0xcaf5, 0xcb0f, HB_Grapheme_LVT},
+ {0xcb10, 0xcb10, HB_Grapheme_LV},
+ {0xcb11, 0xcb2b, HB_Grapheme_LVT},
+ {0xcb2c, 0xcb2c, HB_Grapheme_LV},
+ {0xcb2d, 0xcb47, HB_Grapheme_LVT},
+ {0xcb48, 0xcb48, HB_Grapheme_LV},
+ {0xcb49, 0xcb63, HB_Grapheme_LVT},
+ {0xcb64, 0xcb64, HB_Grapheme_LV},
+ {0xcb65, 0xcb7f, HB_Grapheme_LVT},
+ {0xcb80, 0xcb80, HB_Grapheme_LV},
+ {0xcb81, 0xcb9b, HB_Grapheme_LVT},
+ {0xcb9c, 0xcb9c, HB_Grapheme_LV},
+ {0xcb9d, 0xcbb7, HB_Grapheme_LVT},
+ {0xcbb8, 0xcbb8, HB_Grapheme_LV},
+ {0xcbb9, 0xcbd3, HB_Grapheme_LVT},
+ {0xcbd4, 0xcbd4, HB_Grapheme_LV},
+ {0xcbd5, 0xcbef, HB_Grapheme_LVT},
+ {0xcbf0, 0xcbf0, HB_Grapheme_LV},
+ {0xcbf1, 0xcc0b, HB_Grapheme_LVT},
+ {0xcc0c, 0xcc0c, HB_Grapheme_LV},
+ {0xcc0d, 0xcc27, HB_Grapheme_LVT},
+ {0xcc28, 0xcc28, HB_Grapheme_LV},
+ {0xcc29, 0xcc43, HB_Grapheme_LVT},
+ {0xcc44, 0xcc44, HB_Grapheme_LV},
+ {0xcc45, 0xcc5f, HB_Grapheme_LVT},
+ {0xcc60, 0xcc60, HB_Grapheme_LV},
+ {0xcc61, 0xcc7b, HB_Grapheme_LVT},
+ {0xcc7c, 0xcc7c, HB_Grapheme_LV},
+ {0xcc7d, 0xcc97, HB_Grapheme_LVT},
+ {0xcc98, 0xcc98, HB_Grapheme_LV},
+ {0xcc99, 0xccb3, HB_Grapheme_LVT},
+ {0xccb4, 0xccb4, HB_Grapheme_LV},
+ {0xccb5, 0xcccf, HB_Grapheme_LVT},
+ {0xccd0, 0xccd0, HB_Grapheme_LV},
+ {0xccd1, 0xcceb, HB_Grapheme_LVT},
+ {0xccec, 0xccec, HB_Grapheme_LV},
+ {0xcced, 0xcd07, HB_Grapheme_LVT},
+ {0xcd08, 0xcd08, HB_Grapheme_LV},
+ {0xcd09, 0xcd23, HB_Grapheme_LVT},
+ {0xcd24, 0xcd24, HB_Grapheme_LV},
+ {0xcd25, 0xcd3f, HB_Grapheme_LVT},
+ {0xcd40, 0xcd40, HB_Grapheme_LV},
+ {0xcd41, 0xcd5b, HB_Grapheme_LVT},
+ {0xcd5c, 0xcd5c, HB_Grapheme_LV},
+ {0xcd5d, 0xcd77, HB_Grapheme_LVT},
+ {0xcd78, 0xcd78, HB_Grapheme_LV},
+ {0xcd79, 0xcd93, HB_Grapheme_LVT},
+ {0xcd94, 0xcd94, HB_Grapheme_LV},
+ {0xcd95, 0xcdaf, HB_Grapheme_LVT},
+ {0xcdb0, 0xcdb0, HB_Grapheme_LV},
+ {0xcdb1, 0xcdcb, HB_Grapheme_LVT},
+ {0xcdcc, 0xcdcc, HB_Grapheme_LV},
+ {0xcdcd, 0xcde7, HB_Grapheme_LVT},
+ {0xcde8, 0xcde8, HB_Grapheme_LV},
+ {0xcde9, 0xce03, HB_Grapheme_LVT},
+ {0xce04, 0xce04, HB_Grapheme_LV},
+ {0xce05, 0xce1f, HB_Grapheme_LVT},
+ {0xce20, 0xce20, HB_Grapheme_LV},
+ {0xce21, 0xce3b, HB_Grapheme_LVT},
+ {0xce3c, 0xce3c, HB_Grapheme_LV},
+ {0xce3d, 0xce57, HB_Grapheme_LVT},
+ {0xce58, 0xce58, HB_Grapheme_LV},
+ {0xce59, 0xce73, HB_Grapheme_LVT},
+ {0xce74, 0xce74, HB_Grapheme_LV},
+ {0xce75, 0xce8f, HB_Grapheme_LVT},
+ {0xce90, 0xce90, HB_Grapheme_LV},
+ {0xce91, 0xceab, HB_Grapheme_LVT},
+ {0xceac, 0xceac, HB_Grapheme_LV},
+ {0xcead, 0xcec7, HB_Grapheme_LVT},
+ {0xcec8, 0xcec8, HB_Grapheme_LV},
+ {0xcec9, 0xcee3, HB_Grapheme_LVT},
+ {0xcee4, 0xcee4, HB_Grapheme_LV},
+ {0xcee5, 0xceff, HB_Grapheme_LVT},
+ {0xcf00, 0xcf00, HB_Grapheme_LV},
+ {0xcf01, 0xcf1b, HB_Grapheme_LVT},
+ {0xcf1c, 0xcf1c, HB_Grapheme_LV},
+ {0xcf1d, 0xcf37, HB_Grapheme_LVT},
+ {0xcf38, 0xcf38, HB_Grapheme_LV},
+ {0xcf39, 0xcf53, HB_Grapheme_LVT},
+ {0xcf54, 0xcf54, HB_Grapheme_LV},
+ {0xcf55, 0xcf6f, HB_Grapheme_LVT},
+ {0xcf70, 0xcf70, HB_Grapheme_LV},
+ {0xcf71, 0xcf8b, HB_Grapheme_LVT},
+ {0xcf8c, 0xcf8c, HB_Grapheme_LV},
+ {0xcf8d, 0xcfa7, HB_Grapheme_LVT},
+ {0xcfa8, 0xcfa8, HB_Grapheme_LV},
+ {0xcfa9, 0xcfc3, HB_Grapheme_LVT},
+ {0xcfc4, 0xcfc4, HB_Grapheme_LV},
+ {0xcfc5, 0xcfdf, HB_Grapheme_LVT},
+ {0xcfe0, 0xcfe0, HB_Grapheme_LV},
+ {0xcfe1, 0xcffb, HB_Grapheme_LVT},
+ {0xcffc, 0xcffc, HB_Grapheme_LV},
+ {0xcffd, 0xd017, HB_Grapheme_LVT},
+ {0xd018, 0xd018, HB_Grapheme_LV},
+ {0xd019, 0xd033, HB_Grapheme_LVT},
+ {0xd034, 0xd034, HB_Grapheme_LV},
+ {0xd035, 0xd04f, HB_Grapheme_LVT},
+ {0xd050, 0xd050, HB_Grapheme_LV},
+ {0xd051, 0xd06b, HB_Grapheme_LVT},
+ {0xd06c, 0xd06c, HB_Grapheme_LV},
+ {0xd06d, 0xd087, HB_Grapheme_LVT},
+ {0xd088, 0xd088, HB_Grapheme_LV},
+ {0xd089, 0xd0a3, HB_Grapheme_LVT},
+ {0xd0a4, 0xd0a4, HB_Grapheme_LV},
+ {0xd0a5, 0xd0bf, HB_Grapheme_LVT},
+ {0xd0c0, 0xd0c0, HB_Grapheme_LV},
+ {0xd0c1, 0xd0db, HB_Grapheme_LVT},
+ {0xd0dc, 0xd0dc, HB_Grapheme_LV},
+ {0xd0dd, 0xd0f7, HB_Grapheme_LVT},
+ {0xd0f8, 0xd0f8, HB_Grapheme_LV},
+ {0xd0f9, 0xd113, HB_Grapheme_LVT},
+ {0xd114, 0xd114, HB_Grapheme_LV},
+ {0xd115, 0xd12f, HB_Grapheme_LVT},
+ {0xd130, 0xd130, HB_Grapheme_LV},
+ {0xd131, 0xd14b, HB_Grapheme_LVT},
+ {0xd14c, 0xd14c, HB_Grapheme_LV},
+ {0xd14d, 0xd167, HB_Grapheme_LVT},
+ {0xd168, 0xd168, HB_Grapheme_LV},
+ {0xd169, 0xd183, HB_Grapheme_LVT},
+ {0xd184, 0xd184, HB_Grapheme_LV},
+ {0xd185, 0xd19f, HB_Grapheme_LVT},
+ {0xd1a0, 0xd1a0, HB_Grapheme_LV},
+ {0xd1a1, 0xd1bb, HB_Grapheme_LVT},
+ {0xd1bc, 0xd1bc, HB_Grapheme_LV},
+ {0xd1bd, 0xd1d7, HB_Grapheme_LVT},
+ {0xd1d8, 0xd1d8, HB_Grapheme_LV},
+ {0xd1d9, 0xd1f3, HB_Grapheme_LVT},
+ {0xd1f4, 0xd1f4, HB_Grapheme_LV},
+ {0xd1f5, 0xd20f, HB_Grapheme_LVT},
+ {0xd210, 0xd210, HB_Grapheme_LV},
+ {0xd211, 0xd22b, HB_Grapheme_LVT},
+ {0xd22c, 0xd22c, HB_Grapheme_LV},
+ {0xd22d, 0xd247, HB_Grapheme_LVT},
+ {0xd248, 0xd248, HB_Grapheme_LV},
+ {0xd249, 0xd263, HB_Grapheme_LVT},
+ {0xd264, 0xd264, HB_Grapheme_LV},
+ {0xd265, 0xd27f, HB_Grapheme_LVT},
+ {0xd280, 0xd280, HB_Grapheme_LV},
+ {0xd281, 0xd29b, HB_Grapheme_LVT},
+ {0xd29c, 0xd29c, HB_Grapheme_LV},
+ {0xd29d, 0xd2b7, HB_Grapheme_LVT},
+ {0xd2b8, 0xd2b8, HB_Grapheme_LV},
+ {0xd2b9, 0xd2d3, HB_Grapheme_LVT},
+ {0xd2d4, 0xd2d4, HB_Grapheme_LV},
+ {0xd2d5, 0xd2ef, HB_Grapheme_LVT},
+ {0xd2f0, 0xd2f0, HB_Grapheme_LV},
+ {0xd2f1, 0xd30b, HB_Grapheme_LVT},
+ {0xd30c, 0xd30c, HB_Grapheme_LV},
+ {0xd30d, 0xd327, HB_Grapheme_LVT},
+ {0xd328, 0xd328, HB_Grapheme_LV},
+ {0xd329, 0xd343, HB_Grapheme_LVT},
+ {0xd344, 0xd344, HB_Grapheme_LV},
+ {0xd345, 0xd35f, HB_Grapheme_LVT},
+ {0xd360, 0xd360, HB_Grapheme_LV},
+ {0xd361, 0xd37b, HB_Grapheme_LVT},
+ {0xd37c, 0xd37c, HB_Grapheme_LV},
+ {0xd37d, 0xd397, HB_Grapheme_LVT},
+ {0xd398, 0xd398, HB_Grapheme_LV},
+ {0xd399, 0xd3b3, HB_Grapheme_LVT},
+ {0xd3b4, 0xd3b4, HB_Grapheme_LV},
+ {0xd3b5, 0xd3cf, HB_Grapheme_LVT},
+ {0xd3d0, 0xd3d0, HB_Grapheme_LV},
+ {0xd3d1, 0xd3eb, HB_Grapheme_LVT},
+ {0xd3ec, 0xd3ec, HB_Grapheme_LV},
+ {0xd3ed, 0xd407, HB_Grapheme_LVT},
+ {0xd408, 0xd408, HB_Grapheme_LV},
+ {0xd409, 0xd423, HB_Grapheme_LVT},
+ {0xd424, 0xd424, HB_Grapheme_LV},
+ {0xd425, 0xd43f, HB_Grapheme_LVT},
+ {0xd440, 0xd440, HB_Grapheme_LV},
+ {0xd441, 0xd45b, HB_Grapheme_LVT},
+ {0xd45c, 0xd45c, HB_Grapheme_LV},
+ {0xd45d, 0xd477, HB_Grapheme_LVT},
+ {0xd478, 0xd478, HB_Grapheme_LV},
+ {0xd479, 0xd493, HB_Grapheme_LVT},
+ {0xd494, 0xd494, HB_Grapheme_LV},
+ {0xd495, 0xd4af, HB_Grapheme_LVT},
+ {0xd4b0, 0xd4b0, HB_Grapheme_LV},
+ {0xd4b1, 0xd4cb, HB_Grapheme_LVT},
+ {0xd4cc, 0xd4cc, HB_Grapheme_LV},
+ {0xd4cd, 0xd4e7, HB_Grapheme_LVT},
+ {0xd4e8, 0xd4e8, HB_Grapheme_LV},
+ {0xd4e9, 0xd503, HB_Grapheme_LVT},
+ {0xd504, 0xd504, HB_Grapheme_LV},
+ {0xd505, 0xd51f, HB_Grapheme_LVT},
+ {0xd520, 0xd520, HB_Grapheme_LV},
+ {0xd521, 0xd53b, HB_Grapheme_LVT},
+ {0xd53c, 0xd53c, HB_Grapheme_LV},
+ {0xd53d, 0xd557, HB_Grapheme_LVT},
+ {0xd558, 0xd558, HB_Grapheme_LV},
+ {0xd559, 0xd573, HB_Grapheme_LVT},
+ {0xd574, 0xd574, HB_Grapheme_LV},
+ {0xd575, 0xd58f, HB_Grapheme_LVT},
+ {0xd590, 0xd590, HB_Grapheme_LV},
+ {0xd591, 0xd5ab, HB_Grapheme_LVT},
+ {0xd5ac, 0xd5ac, HB_Grapheme_LV},
+ {0xd5ad, 0xd5c7, HB_Grapheme_LVT},
+ {0xd5c8, 0xd5c8, HB_Grapheme_LV},
+ {0xd5c9, 0xd5e3, HB_Grapheme_LVT},
+ {0xd5e4, 0xd5e4, HB_Grapheme_LV},
+ {0xd5e5, 0xd5ff, HB_Grapheme_LVT},
+ {0xd600, 0xd600, HB_Grapheme_LV},
+ {0xd601, 0xd61b, HB_Grapheme_LVT},
+ {0xd61c, 0xd61c, HB_Grapheme_LV},
+ {0xd61d, 0xd637, HB_Grapheme_LVT},
+ {0xd638, 0xd638, HB_Grapheme_LV},
+ {0xd639, 0xd653, HB_Grapheme_LVT},
+ {0xd654, 0xd654, HB_Grapheme_LV},
+ {0xd655, 0xd66f, HB_Grapheme_LVT},
+ {0xd670, 0xd670, HB_Grapheme_LV},
+ {0xd671, 0xd68b, HB_Grapheme_LVT},
+ {0xd68c, 0xd68c, HB_Grapheme_LV},
+ {0xd68d, 0xd6a7, HB_Grapheme_LVT},
+ {0xd6a8, 0xd6a8, HB_Grapheme_LV},
+ {0xd6a9, 0xd6c3, HB_Grapheme_LVT},
+ {0xd6c4, 0xd6c4, HB_Grapheme_LV},
+ {0xd6c5, 0xd6df, HB_Grapheme_LVT},
+ {0xd6e0, 0xd6e0, HB_Grapheme_LV},
+ {0xd6e1, 0xd6fb, HB_Grapheme_LVT},
+ {0xd6fc, 0xd6fc, HB_Grapheme_LV},
+ {0xd6fd, 0xd717, HB_Grapheme_LVT},
+ {0xd718, 0xd718, HB_Grapheme_LV},
+ {0xd719, 0xd733, HB_Grapheme_LVT},
+ {0xd734, 0xd734, HB_Grapheme_LV},
+ {0xd735, 0xd74f, HB_Grapheme_LVT},
+ {0xd750, 0xd750, HB_Grapheme_LV},
+ {0xd751, 0xd76b, HB_Grapheme_LVT},
+ {0xd76c, 0xd76c, HB_Grapheme_LV},
+ {0xd76d, 0xd787, HB_Grapheme_LVT},
+ {0xd788, 0xd788, HB_Grapheme_LV},
+ {0xd789, 0xd7a3, HB_Grapheme_LVT},
+ {0xfb1e, 0xfb1e, HB_Grapheme_Extend},
+ {0xfe00, 0xfe0f, HB_Grapheme_Extend},
+ {0xfe20, 0xfe26, HB_Grapheme_Extend},
+ {0xfeff, 0xfeff, HB_Grapheme_Control},
+ {0xff9e, 0xff9f, HB_Grapheme_Extend},
+ {0xfff9, 0xfffb, HB_Grapheme_Control},
+ {0x101fd, 0x101fd, HB_Grapheme_Extend},
+ {0x10a01, 0x10a03, HB_Grapheme_Extend},
+ {0x10a05, 0x10a06, HB_Grapheme_Extend},
+ {0x10a0c, 0x10a0f, HB_Grapheme_Extend},
+ {0x10a38, 0x10a3a, HB_Grapheme_Extend},
+ {0x10a3f, 0x10a3f, HB_Grapheme_Extend},
+ {0x1d165, 0x1d165, HB_Grapheme_Extend},
+ {0x1d166, 0x1d166, HB_Grapheme_Other},
+ {0x1d167, 0x1d169, HB_Grapheme_Extend},
+ {0x1d16d, 0x1d16d, HB_Grapheme_Other},
+ {0x1d16e, 0x1d172, HB_Grapheme_Extend},
+ {0x1d173, 0x1d17a, HB_Grapheme_Control},
+ {0x1d17b, 0x1d182, HB_Grapheme_Extend},
+ {0x1d185, 0x1d18b, HB_Grapheme_Extend},
+ {0x1d1aa, 0x1d1ad, HB_Grapheme_Extend},
+ {0x1d242, 0x1d244, HB_Grapheme_Extend},
+ {0xe0001, 0xe0001, HB_Grapheme_Control},
+ {0xe0020, 0xe007f, HB_Grapheme_Control},
+ {0xe0100, 0xe01ef, HB_Grapheme_Extend},
+};
+
+static const unsigned grapheme_break_properties_count = 1093;
+
+#endif // GRAPHEME_BREAK_PROPERTY_H_
diff --git a/third_party/harfbuzz/contrib/tables/script-properties.h b/third_party/harfbuzz/contrib/tables/script-properties.h
new file mode 100644
index 0000000..a6ff50b
--- /dev/null
+++ b/third_party/harfbuzz/contrib/tables/script-properties.h
@@ -0,0 +1,297 @@
+// Generated from Unicode script tables
+
+#ifndef SCRIPT_PROPERTIES_H_
+#define SCRIPT_PROPERTIES_H_
+
+#include <stdint.h>
+#include "harfbuzz-shaper.h"
+
+struct script_property {
+ uint32_t range_start;
+ uint32_t range_end;
+ HB_Script script;
+};
+
+static const struct script_property script_properties[] = {
+ {0x300, 0x36f, HB_Script_Inherited},
+ {0x370, 0x373, HB_Script_Greek},
+ {0x375, 0x377, HB_Script_Greek},
+ {0x37a, 0x37d, HB_Script_Greek},
+ {0x384, 0x384, HB_Script_Greek},
+ {0x386, 0x386, HB_Script_Greek},
+ {0x388, 0x38a, HB_Script_Greek},
+ {0x38c, 0x38c, HB_Script_Greek},
+ {0x38e, 0x3a1, HB_Script_Greek},
+ {0x3a3, 0x3e1, HB_Script_Greek},
+ {0x3f0, 0x3ff, HB_Script_Greek},
+ {0x400, 0x523, HB_Script_Cyrillic},
+ {0x531, 0x556, HB_Script_Armenian},
+ {0x559, 0x55f, HB_Script_Armenian},
+ {0x561, 0x587, HB_Script_Armenian},
+ {0x58a, 0x58a, HB_Script_Armenian},
+ {0x591, 0x5c7, HB_Script_Hebrew},
+ {0x5d0, 0x5ea, HB_Script_Hebrew},
+ {0x5f0, 0x5f4, HB_Script_Hebrew},
+ {0x606, 0x60b, HB_Script_Arabic},
+ {0x60d, 0x61a, HB_Script_Arabic},
+ {0x61e, 0x61e, HB_Script_Arabic},
+ {0x621, 0x63f, HB_Script_Arabic},
+ {0x641, 0x64a, HB_Script_Arabic},
+ {0x64b, 0x655, HB_Script_Inherited},
+ {0x656, 0x65e, HB_Script_Arabic},
+ {0x66a, 0x66f, HB_Script_Arabic},
+ {0x670, 0x670, HB_Script_Inherited},
+ {0x671, 0x6dc, HB_Script_Arabic},
+ {0x6de, 0x6ff, HB_Script_Arabic},
+ {0x700, 0x70d, HB_Script_Syriac},
+ {0x70f, 0x74a, HB_Script_Syriac},
+ {0x74d, 0x74f, HB_Script_Syriac},
+ {0x750, 0x77f, HB_Script_Arabic},
+ {0x780, 0x7b1, HB_Script_Thaana},
+ {0x901, 0x939, HB_Script_Devanagari},
+ {0x93c, 0x94d, HB_Script_Devanagari},
+ {0x950, 0x950, HB_Script_Devanagari},
+ {0x951, 0x952, HB_Script_Inherited},
+ {0x953, 0x954, HB_Script_Devanagari},
+ {0x958, 0x963, HB_Script_Devanagari},
+ {0x966, 0x96f, HB_Script_Devanagari},
+ {0x971, 0x972, HB_Script_Devanagari},
+ {0x97b, 0x97f, HB_Script_Devanagari},
+ {0x981, 0x983, HB_Script_Bengali},
+ {0x985, 0x98c, HB_Script_Bengali},
+ {0x98f, 0x990, HB_Script_Bengali},
+ {0x993, 0x9a8, HB_Script_Bengali},
+ {0x9aa, 0x9b0, HB_Script_Bengali},
+ {0x9b2, 0x9b2, HB_Script_Bengali},
+ {0x9b6, 0x9b9, HB_Script_Bengali},
+ {0x9bc, 0x9c4, HB_Script_Bengali},
+ {0x9c7, 0x9c8, HB_Script_Bengali},
+ {0x9cb, 0x9ce, HB_Script_Bengali},
+ {0x9d7, 0x9d7, HB_Script_Bengali},
+ {0x9dc, 0x9dd, HB_Script_Bengali},
+ {0x9df, 0x9e3, HB_Script_Bengali},
+ {0x9e6, 0x9fa, HB_Script_Bengali},
+ {0xa01, 0xa03, HB_Script_Gurmukhi},
+ {0xa05, 0xa0a, HB_Script_Gurmukhi},
+ {0xa0f, 0xa10, HB_Script_Gurmukhi},
+ {0xa13, 0xa28, HB_Script_Gurmukhi},
+ {0xa2a, 0xa30, HB_Script_Gurmukhi},
+ {0xa32, 0xa33, HB_Script_Gurmukhi},
+ {0xa35, 0xa36, HB_Script_Gurmukhi},
+ {0xa38, 0xa39, HB_Script_Gurmukhi},
+ {0xa3c, 0xa3c, HB_Script_Gurmukhi},
+ {0xa3e, 0xa42, HB_Script_Gurmukhi},
+ {0xa47, 0xa48, HB_Script_Gurmukhi},
+ {0xa4b, 0xa4d, HB_Script_Gurmukhi},
+ {0xa51, 0xa51, HB_Script_Gurmukhi},
+ {0xa59, 0xa5c, HB_Script_Gurmukhi},
+ {0xa5e, 0xa5e, HB_Script_Gurmukhi},
+ {0xa66, 0xa75, HB_Script_Gurmukhi},
+ {0xa81, 0xa83, HB_Script_Gujarati},
+ {0xa85, 0xa8d, HB_Script_Gujarati},
+ {0xa8f, 0xa91, HB_Script_Gujarati},
+ {0xa93, 0xaa8, HB_Script_Gujarati},
+ {0xaaa, 0xab0, HB_Script_Gujarati},
+ {0xab2, 0xab3, HB_Script_Gujarati},
+ {0xab5, 0xab9, HB_Script_Gujarati},
+ {0xabc, 0xac5, HB_Script_Gujarati},
+ {0xac7, 0xac9, HB_Script_Gujarati},
+ {0xacb, 0xacd, HB_Script_Gujarati},
+ {0xad0, 0xad0, HB_Script_Gujarati},
+ {0xae0, 0xae3, HB_Script_Gujarati},
+ {0xae6, 0xaef, HB_Script_Gujarati},
+ {0xaf1, 0xaf1, HB_Script_Gujarati},
+ {0xb01, 0xb03, HB_Script_Oriya},
+ {0xb05, 0xb0c, HB_Script_Oriya},
+ {0xb0f, 0xb10, HB_Script_Oriya},
+ {0xb13, 0xb28, HB_Script_Oriya},
+ {0xb2a, 0xb30, HB_Script_Oriya},
+ {0xb32, 0xb33, HB_Script_Oriya},
+ {0xb35, 0xb39, HB_Script_Oriya},
+ {0xb3c, 0xb44, HB_Script_Oriya},
+ {0xb47, 0xb48, HB_Script_Oriya},
+ {0xb4b, 0xb4d, HB_Script_Oriya},
+ {0xb56, 0xb57, HB_Script_Oriya},
+ {0xb5c, 0xb5d, HB_Script_Oriya},
+ {0xb5f, 0xb63, HB_Script_Oriya},
+ {0xb66, 0xb71, HB_Script_Oriya},
+ {0xb82, 0xb83, HB_Script_Tamil},
+ {0xb85, 0xb8a, HB_Script_Tamil},
+ {0xb8e, 0xb90, HB_Script_Tamil},
+ {0xb92, 0xb95, HB_Script_Tamil},
+ {0xb99, 0xb9a, HB_Script_Tamil},
+ {0xb9c, 0xb9c, HB_Script_Tamil},
+ {0xb9e, 0xb9f, HB_Script_Tamil},
+ {0xba3, 0xba4, HB_Script_Tamil},
+ {0xba8, 0xbaa, HB_Script_Tamil},
+ {0xbae, 0xbb9, HB_Script_Tamil},
+ {0xbbe, 0xbc2, HB_Script_Tamil},
+ {0xbc6, 0xbc8, HB_Script_Tamil},
+ {0xbca, 0xbcd, HB_Script_Tamil},
+ {0xbd0, 0xbd0, HB_Script_Tamil},
+ {0xbd7, 0xbd7, HB_Script_Tamil},
+ {0xbe6, 0xbfa, HB_Script_Tamil},
+ {0xc01, 0xc03, HB_Script_Telugu},
+ {0xc05, 0xc0c, HB_Script_Telugu},
+ {0xc0e, 0xc10, HB_Script_Telugu},
+ {0xc12, 0xc28, HB_Script_Telugu},
+ {0xc2a, 0xc33, HB_Script_Telugu},
+ {0xc35, 0xc39, HB_Script_Telugu},
+ {0xc3d, 0xc44, HB_Script_Telugu},
+ {0xc46, 0xc48, HB_Script_Telugu},
+ {0xc4a, 0xc4d, HB_Script_Telugu},
+ {0xc55, 0xc56, HB_Script_Telugu},
+ {0xc58, 0xc59, HB_Script_Telugu},
+ {0xc60, 0xc63, HB_Script_Telugu},
+ {0xc66, 0xc6f, HB_Script_Telugu},
+ {0xc78, 0xc7f, HB_Script_Telugu},
+ {0xc82, 0xc83, HB_Script_Kannada},
+ {0xc85, 0xc8c, HB_Script_Kannada},
+ {0xc8e, 0xc90, HB_Script_Kannada},
+ {0xc92, 0xca8, HB_Script_Kannada},
+ {0xcaa, 0xcb3, HB_Script_Kannada},
+ {0xcb5, 0xcb9, HB_Script_Kannada},
+ {0xcbc, 0xcc4, HB_Script_Kannada},
+ {0xcc6, 0xcc8, HB_Script_Kannada},
+ {0xcca, 0xccd, HB_Script_Kannada},
+ {0xcd5, 0xcd6, HB_Script_Kannada},
+ {0xcde, 0xcde, HB_Script_Kannada},
+ {0xce0, 0xce3, HB_Script_Kannada},
+ {0xce6, 0xcef, HB_Script_Kannada},
+ {0xd02, 0xd03, HB_Script_Malayalam},
+ {0xd05, 0xd0c, HB_Script_Malayalam},
+ {0xd0e, 0xd10, HB_Script_Malayalam},
+ {0xd12, 0xd28, HB_Script_Malayalam},
+ {0xd2a, 0xd39, HB_Script_Malayalam},
+ {0xd3d, 0xd44, HB_Script_Malayalam},
+ {0xd46, 0xd48, HB_Script_Malayalam},
+ {0xd4a, 0xd4d, HB_Script_Malayalam},
+ {0xd57, 0xd57, HB_Script_Malayalam},
+ {0xd60, 0xd63, HB_Script_Malayalam},
+ {0xd66, 0xd75, HB_Script_Malayalam},
+ {0xd79, 0xd7f, HB_Script_Malayalam},
+ {0xd82, 0xd83, HB_Script_Sinhala},
+ {0xd85, 0xd96, HB_Script_Sinhala},
+ {0xd9a, 0xdb1, HB_Script_Sinhala},
+ {0xdb3, 0xdbb, HB_Script_Sinhala},
+ {0xdbd, 0xdbd, HB_Script_Sinhala},
+ {0xdc0, 0xdc6, HB_Script_Sinhala},
+ {0xdca, 0xdca, HB_Script_Sinhala},
+ {0xdcf, 0xdd4, HB_Script_Sinhala},
+ {0xdd6, 0xdd6, HB_Script_Sinhala},
+ {0xdd8, 0xddf, HB_Script_Sinhala},
+ {0xdf2, 0xdf4, HB_Script_Sinhala},
+ {0xe01, 0xe3a, HB_Script_Thai},
+ {0xe40, 0xe5b, HB_Script_Thai},
+ {0xe81, 0xe82, HB_Script_Lao},
+ {0xe84, 0xe84, HB_Script_Lao},
+ {0xe87, 0xe88, HB_Script_Lao},
+ {0xe8a, 0xe8a, HB_Script_Lao},
+ {0xe8d, 0xe8d, HB_Script_Lao},
+ {0xe94, 0xe97, HB_Script_Lao},
+ {0xe99, 0xe9f, HB_Script_Lao},
+ {0xea1, 0xea3, HB_Script_Lao},
+ {0xea5, 0xea5, HB_Script_Lao},
+ {0xea7, 0xea7, HB_Script_Lao},
+ {0xeaa, 0xeab, HB_Script_Lao},
+ {0xead, 0xeb9, HB_Script_Lao},
+ {0xebb, 0xebd, HB_Script_Lao},
+ {0xec0, 0xec4, HB_Script_Lao},
+ {0xec6, 0xec6, HB_Script_Lao},
+ {0xec8, 0xecd, HB_Script_Lao},
+ {0xed0, 0xed9, HB_Script_Lao},
+ {0xedc, 0xedd, HB_Script_Lao},
+ {0xf00, 0xf47, HB_Script_Tibetan},
+ {0xf49, 0xf6c, HB_Script_Tibetan},
+ {0xf71, 0xf8b, HB_Script_Tibetan},
+ {0xf90, 0xf97, HB_Script_Tibetan},
+ {0xf99, 0xfbc, HB_Script_Tibetan},
+ {0xfbe, 0xfcc, HB_Script_Tibetan},
+ {0xfce, 0xfd4, HB_Script_Tibetan},
+ {0x1000, 0x1099, HB_Script_Myanmar},
+ {0x109e, 0x109f, HB_Script_Myanmar},
+ {0x10a0, 0x10c5, HB_Script_Georgian},
+ {0x10d0, 0x10fa, HB_Script_Georgian},
+ {0x10fc, 0x10fc, HB_Script_Georgian},
+ {0x1100, 0x1159, HB_Script_Hangul},
+ {0x115f, 0x11a2, HB_Script_Hangul},
+ {0x11a8, 0x11f9, HB_Script_Hangul},
+ {0x1680, 0x169c, HB_Script_Ogham},
+ {0x16a0, 0x16ea, HB_Script_Runic},
+ {0x16ee, 0x16f0, HB_Script_Runic},
+ {0x1780, 0x17dd, HB_Script_Khmer},
+ {0x17e0, 0x17e9, HB_Script_Khmer},
+ {0x17f0, 0x17f9, HB_Script_Khmer},
+ {0x19e0, 0x19ff, HB_Script_Khmer},
+ {0x1d26, 0x1d2a, HB_Script_Greek},
+ {0x1d2b, 0x1d2b, HB_Script_Cyrillic},
+ {0x1d5d, 0x1d61, HB_Script_Greek},
+ {0x1d66, 0x1d6a, HB_Script_Greek},
+ {0x1d78, 0x1d78, HB_Script_Cyrillic},
+ {0x1dbf, 0x1dbf, HB_Script_Greek},
+ {0x1dc0, 0x1de6, HB_Script_Inherited},
+ {0x1dfe, 0x1dff, HB_Script_Inherited},
+ {0x1f00, 0x1f15, HB_Script_Greek},
+ {0x1f18, 0x1f1d, HB_Script_Greek},
+ {0x1f20, 0x1f45, HB_Script_Greek},
+ {0x1f48, 0x1f4d, HB_Script_Greek},
+ {0x1f50, 0x1f57, HB_Script_Greek},
+ {0x1f59, 0x1f59, HB_Script_Greek},
+ {0x1f5b, 0x1f5b, HB_Script_Greek},
+ {0x1f5d, 0x1f5d, HB_Script_Greek},
+ {0x1f5f, 0x1f7d, HB_Script_Greek},
+ {0x1f80, 0x1fb4, HB_Script_Greek},
+ {0x1fb6, 0x1fc4, HB_Script_Greek},
+ {0x1fc6, 0x1fd3, HB_Script_Greek},
+ {0x1fd6, 0x1fdb, HB_Script_Greek},
+ {0x1fdd, 0x1fef, HB_Script_Greek},
+ {0x1ff2, 0x1ff4, HB_Script_Greek},
+ {0x1ff6, 0x1ffe, HB_Script_Greek},
+ {0x200c, 0x200d, HB_Script_Inherited},
+ {0x20d0, 0x20f0, HB_Script_Inherited},
+ {0x2126, 0x2126, HB_Script_Greek},
+ {0x2d00, 0x2d25, HB_Script_Georgian},
+ {0x2de0, 0x2dff, HB_Script_Cyrillic},
+ {0x302a, 0x302f, HB_Script_Inherited},
+ {0x3099, 0x309a, HB_Script_Inherited},
+ {0x3131, 0x318e, HB_Script_Hangul},
+ {0x3200, 0x321e, HB_Script_Hangul},
+ {0x3260, 0x327e, HB_Script_Hangul},
+ {0xa640, 0xa65f, HB_Script_Cyrillic},
+ {0xa662, 0xa673, HB_Script_Cyrillic},
+ {0xa67c, 0xa697, HB_Script_Cyrillic},
+ {0xac00, 0xd7a3, HB_Script_Hangul},
+ {0xfb13, 0xfb17, HB_Script_Armenian},
+ {0xfb1d, 0xfb36, HB_Script_Hebrew},
+ {0xfb38, 0xfb3c, HB_Script_Hebrew},
+ {0xfb3e, 0xfb3e, HB_Script_Hebrew},
+ {0xfb40, 0xfb41, HB_Script_Hebrew},
+ {0xfb43, 0xfb44, HB_Script_Hebrew},
+ {0xfb46, 0xfb4f, HB_Script_Hebrew},
+ {0xfb50, 0xfbb1, HB_Script_Arabic},
+ {0xfbd3, 0xfd3d, HB_Script_Arabic},
+ {0xfd50, 0xfd8f, HB_Script_Arabic},
+ {0xfd92, 0xfdc7, HB_Script_Arabic},
+ {0xfdf0, 0xfdfc, HB_Script_Arabic},
+ {0xfe00, 0xfe0f, HB_Script_Inherited},
+ {0xfe20, 0xfe26, HB_Script_Inherited},
+ {0xfe70, 0xfe74, HB_Script_Arabic},
+ {0xfe76, 0xfefc, HB_Script_Arabic},
+ {0xffa0, 0xffbe, HB_Script_Hangul},
+ {0xffc2, 0xffc7, HB_Script_Hangul},
+ {0xffca, 0xffcf, HB_Script_Hangul},
+ {0xffd2, 0xffd7, HB_Script_Hangul},
+ {0xffda, 0xffdc, HB_Script_Hangul},
+ {0x10140, 0x1018a, HB_Script_Greek},
+ {0x101fd, 0x101fd, HB_Script_Inherited},
+ {0x1d167, 0x1d169, HB_Script_Inherited},
+ {0x1d17b, 0x1d182, HB_Script_Inherited},
+ {0x1d185, 0x1d18b, HB_Script_Inherited},
+ {0x1d1aa, 0x1d1ad, HB_Script_Inherited},
+ {0x1d200, 0x1d245, HB_Script_Greek},
+ {0xe0100, 0xe01ef, HB_Script_Inherited},
+};
+
+static const unsigned script_properties_count = 277;
+
+#endif // SCRIPT_PROPERTIES_H_
diff --git a/third_party/harfbuzz/contrib/tables/scripts-parse.py b/third_party/harfbuzz/contrib/tables/scripts-parse.py
new file mode 100644
index 0000000..23bac10
--- /dev/null
+++ b/third_party/harfbuzz/contrib/tables/scripts-parse.py
@@ -0,0 +1,75 @@
+import sys
+from unicode_parse_common import *
+
+# http://www.unicode.org/Public/5.1.0/ucd/Scripts.txt
+
+script_to_harfbuzz = {
+ # This is the list of HB_Script_* at the time of writing
+ 'Common': 'HB_Script_Common',
+ 'Greek': 'HB_Script_Greek',
+ 'Cyrillic': 'HB_Script_Cyrillic',
+ 'Armenian': 'HB_Script_Armenian',
+ 'Hebrew': 'HB_Script_Hebrew',
+ 'Arabic': 'HB_Script_Arabic',
+ 'Syriac': 'HB_Script_Syriac',
+ 'Thaana': 'HB_Script_Thaana',
+ 'Devanagari': 'HB_Script_Devanagari',
+ 'Bengali': 'HB_Script_Bengali',
+ 'Gurmukhi': 'HB_Script_Gurmukhi',
+ 'Gujarati': 'HB_Script_Gujarati',
+ 'Oriya': 'HB_Script_Oriya',
+ 'Tamil': 'HB_Script_Tamil',
+ 'Telugu': 'HB_Script_Telugu',
+ 'Kannada': 'HB_Script_Kannada',
+ 'Malayalam': 'HB_Script_Malayalam',
+ 'Sinhala': 'HB_Script_Sinhala',
+ 'Thai': 'HB_Script_Thai',
+ 'Lao': 'HB_Script_Lao',
+ 'Tibetan': 'HB_Script_Tibetan',
+ 'Myanmar': 'HB_Script_Myanmar',
+ 'Georgian': 'HB_Script_Georgian',
+ 'Hangul': 'HB_Script_Hangul',
+ 'Ogham': 'HB_Script_Ogham',
+ 'Runic': 'HB_Script_Runic',
+ 'Khmer': 'HB_Script_Khmer',
+ 'Inherited': 'HB_Script_Inherited',
+}
+
+class ScriptDict(object):
+ def __init__(self, base):
+ self.base = base
+
+ def __getitem__(self, key):
+ r = self.base.get(key, None)
+ if r is None:
+ return 'HB_Script_Common'
+ return r
+
+def main(infile, outfile):
+ ranges = unicode_file_parse(infile,
+ ScriptDict(script_to_harfbuzz),
+ 'HB_Script_Common')
+ ranges = sort_and_merge(ranges)
+
+ print >>outfile, '// Generated from Unicode script tables\n'
+ print >>outfile, '#ifndef SCRIPT_PROPERTIES_H_'
+ print >>outfile, '#define SCRIPT_PROPERTIES_H_\n'
+ print >>outfile, '#include <stdint.h>'
+ print >>outfile, '#include "harfbuzz-shaper.h"\n'
+ print >>outfile, 'struct script_property {'
+ print >>outfile, ' uint32_t range_start;'
+ print >>outfile, ' uint32_t range_end;'
+ print >>outfile, ' HB_Script script;'
+ print >>outfile, '};\n'
+ print >>outfile, 'static const struct script_property script_properties[] = {'
+ for (start, end, value) in ranges:
+ print >>outfile, ' {0x%x, 0x%x, %s},' % (start, end, value)
+ print >>outfile, '};\n'
+ print >>outfile, 'static const unsigned script_properties_count = %d;\n' % len(ranges)
+ print >>outfile, '#endif // SCRIPT_PROPERTIES_H_'
+
+if __name__ == '__main__':
+ if len(sys.argv) != 3:
+ print 'Usage: %s <input .txt> <output .h>' % sys.argv[0]
+ else:
+ main(file(sys.argv[1], 'r'), file(sys.argv[2], 'w+'))
diff --git a/third_party/harfbuzz/contrib/tables/unicode_parse_common.py b/third_party/harfbuzz/contrib/tables/unicode_parse_common.py
new file mode 100644
index 0000000..ac26eca
--- /dev/null
+++ b/third_party/harfbuzz/contrib/tables/unicode_parse_common.py
@@ -0,0 +1,70 @@
+def lines_get(f):
+ '''Parse a file like object, removing comments and returning a list of
+ lines.'''
+ def cut_comment(line):
+ first_hash = line.find('#')
+ if first_hash == -1:
+ return line
+ return line[:first_hash]
+
+ return [x for x in [cut_comment(x[:-1]) for x in f.readlines()] if len(x)]
+
+def line_split(line):
+ '''Split a line based on a semicolon separator.'''
+ def normalise(word):
+ return word.lstrip().rstrip()
+ return [normalise(x) for x in line.split(';')]
+
+def codepoints_parse(token):
+ '''Parse a Unicode style code-point range. Return either a single value or a
+ tuple of (start, end) for a range of code-points.'''
+ def fromHex(token):
+ return int(token, 16)
+ parts = token.split('..')
+ if len(parts) == 2:
+ return (fromHex(parts[0]), fromHex(parts[1]))
+ elif len(parts) == 1:
+ return fromHex(parts[0])
+ else:
+ raise ValueError(token)
+
+def unicode_file_parse(input, map, default_value = None):
+ '''Parse a file like object, @input where the first column is a code-point
+ range and the second column is mapped via the given dict, @map.'''
+ ranges = []
+ tokens = [line_split(x) for x in lines_get(input)]
+ for line in tokens:
+ if len(line) == 2:
+ codepoints = codepoints_parse(line[0])
+ value = map[line[1]]
+ if value == default_value:
+ continue
+
+ if type(codepoints) == int:
+ codepoints = (codepoints, codepoints)
+
+ ranges.append((codepoints[0], codepoints[1], value))
+ else:
+ raise ValueError(line)
+
+ return ranges
+
+def sort_and_merge(ranges):
+ '''Given a list of (start, end, value), merge elements where the ranges are
+ continuous and the values are the same.'''
+ output = []
+ ranges.sort()
+ current = None
+ for v in ranges:
+ if current is None:
+ current = v
+ continue
+ if current[1] + 1 == v[0] and current[2] == v[2]:
+ current = (current[0], v[1], v[2])
+ else:
+ output.append(current)
+ current = v
+ if current is not None:
+ output.append(current)
+
+ return output