diff options
author | behdad <behdad> | 2002-04-07 09:36:09 +0000 |
---|---|---|
committer | behdad <behdad> | 2002-04-07 09:36:09 +0000 |
commit | ce0a326ef93aa7ac6953dbad27bed57ba657d200 (patch) | |
tree | b6cea3fae76ba60f22c654bbc3ca0a216db95f54 | |
parent | 8059d3854e2f0544d345fd6fc838fdcdecf36d94 (diff) |
Updated to Unicode 3.2
-rw-r--r-- | .indent.pro | 1 | ||||
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | NEWS | 4 | ||||
-rw-r--r-- | configure.in | 10 | ||||
-rw-r--r-- | fribidi.c | 130 | ||||
-rw-r--r-- | fribidi.h | 98 | ||||
-rw-r--r-- | fribidi_char_sets_cap_rtl.c | 4 | ||||
-rw-r--r-- | fribidi_char_type.c | 10 | ||||
-rw-r--r-- | fribidi_create_mirroring.c | 11 | ||||
-rw-r--r-- | fribidi_env.c | 172 | ||||
-rw-r--r-- | fribidi_env.h | 114 | ||||
-rw-r--r-- | fribidi_main.c | 21 | ||||
-rw-r--r-- | fribidi_mem.c | 19 | ||||
-rw-r--r-- | fribidi_mem.h | 12 | ||||
-rw-r--r-- | fribidi_mirroring.c | 10 | ||||
-rw-r--r-- | fribidi_tab_char_type_2.i | 186 | ||||
-rw-r--r-- | fribidi_tab_char_type_9.i | 862 | ||||
-rw-r--r-- | fribidi_tab_mirroring.i | 182 | ||||
-rw-r--r-- | fribidi_unicode.h | 2 | ||||
-rw-r--r-- | fribidi_utils.c | 52 | ||||
-rw-r--r-- | fribidi_wcwidth.c | 101 | ||||
-rw-r--r-- | packtab.c | 12 | ||||
-rw-r--r-- | unidata/BidiMirroring.txt | 315 | ||||
-rw-r--r-- | unidata/UnicodeData.txt | 1082 |
24 files changed, 2551 insertions, 867 deletions
diff --git a/.indent.pro b/.indent.pro index c94e224..12533a7 100644 --- a/.indent.pro +++ b/.indent.pro @@ -11,6 +11,7 @@ -T FriBidiRunType -T FriBidiList -T FriBidiMemChunk +-T FriBidiEnv -T int8 -T uint8 -T int16 @@ -1,3 +1,11 @@ +2002-04-07 Behdad Esfahbod <behdad@bamdad.org> + * unidata/*, fribidi_unicode.h, fribidi_wcwidth.c: Update to + Unicode 3.2. + * configure.in: Version information updated. + * fribidi.c: Version information changed to contain Unicode version too. + * 0.10.3 released. + * .indent.pro: FriBidiEnv added as a type. + 2002-03-25 Behdad Esfahbod <behdad@bamdad.org> * fribidi.c: Fixed a bug introduced in adding L3 rule. @@ -4,6 +4,10 @@ New in CVS: changed. So please do not use the new api in any public code, before the next version is released (the api is heavily subject to changes). +New in 0.10.3: + +* Unicode 3.2 data files used. + New in 0.10.2: * Rule L3 of UAX#9 implemented. Now fribidi implements the whole Unicode diff --git a/configure.in b/configure.in index 031e83d..a20499f 100644 --- a/configure.in +++ b/configure.in @@ -20,11 +20,11 @@ AC_INIT(fribidi.c) # FRIBIDI_RPM_RELEASE++; # FRIBIDI_MAJOR_VERSION=0 -FRIBIDI_MINOR_VERSION=10 -FRIBIDI_MICRO_VERSION=2post -FRIBIDI_INTERFACE_VERSION=2 -FRIBIDI_INTERFACE_AGE=2 -FRIBIDI_BINARY_AGE=2 +FRIBIDI_MINOR_VERSION=11 +FRIBIDI_MICRO_VERSION=0pre +FRIBIDI_INTERFACE_VERSION=3 +FRIBIDI_INTERFACE_AGE=0 +FRIBIDI_BINARY_AGE=0 FRIBIDI_RPM_RELEASE=0 FRIBIDI_VERSION=$FRIBIDI_MAJOR_VERSION.$FRIBIDI_MINOR_VERSION.$FRIBIDI_MICRO_VERSION @@ -110,12 +110,12 @@ static TypeLink *free_type_links = NULL; #endif static TypeLink * -new_type_link (FriBidiEnv* fribidienv) +new_type_link (FriBidiEnv *fribidienv) { TypeLink *link; #ifdef USE_SIMPLE_MALLOC - link = (TypeLink*) fribidi_malloc (fribidienv, sizeof (TypeLink)); + link = (TypeLink *) fribidi_malloc (fribidienv, sizeof (TypeLink)); #else /* !USE_SIMPLE_MALLOC */ if (free_type_links) { @@ -145,10 +145,10 @@ new_type_link (FriBidiEnv* fribidienv) } static void -free_type_link (FriBidiEnv* fribidienv, TypeLink *link) +free_type_link (FriBidiEnv *fribidienv, TypeLink *link) { #ifdef USE_SIMPLE_MALLOC - fribidi_free (fribidienv,link); + fribidi_free (fribidienv, link); #else link->next = free_type_links; free_type_links = link; @@ -164,7 +164,7 @@ free_type_link (FriBidiEnv* fribidienv, TypeLink *link) } while (0) static TypeLink * -run_length_encode_types (FriBidiEnv* fribidienv, +run_length_encode_types (FriBidiEnv *fribidienv, FriBidiCharType *char_type, FriBidiStrIndex type_len) { TypeLink *list, *last, *link; @@ -202,8 +202,7 @@ run_length_encode_types (FriBidiEnv* fribidienv, the override_list. */ static void -init_list (FriBidiEnv* fribidienv, - TypeLink **start, TypeLink **end) +init_list (FriBidiEnv *fribidienv, TypeLink **start, TypeLink **end) { TypeLink *list; TypeLink *link; @@ -262,7 +261,7 @@ move_element_before (TypeLink *p, TypeLink *list) TBD: use some explanatory names instead of p, q, ... */ static void -override_list (FriBidiEnv* fribidienv, TypeLink *base, TypeLink *over) +override_list (FriBidiEnv *fribidienv, TypeLink *base, TypeLink *over) { TypeLink *p = base, *q, *r, *s, *t; FriBidiStrIndex pos = 0, pos2; @@ -361,7 +360,7 @@ override_list (FriBidiEnv* fribidienv, TypeLink *base, TypeLink *over) #define RL_LEVEL(list) ((list)->level) static TypeLink * -merge_with_prev (FriBidiEnv* fribidienv, TypeLink *second) +merge_with_prev (FriBidiEnv *fribidienv, TypeLink *second) { TypeLink *first = second->prev; first->next = second->next; @@ -372,7 +371,7 @@ merge_with_prev (FriBidiEnv* fribidienv, TypeLink *second) } static void -compact_list (FriBidiEnv* fribidienv, TypeLink *list) +compact_list (FriBidiEnv *fribidienv, TypeLink *list) { if (list->next) for (list = list->next; list; list = list->next) @@ -382,7 +381,7 @@ compact_list (FriBidiEnv* fribidienv, TypeLink *list) } static void -compact_neutrals (FriBidiEnv* fribidienv, TypeLink *list) +compact_neutrals (FriBidiEnv *fribidienv, TypeLink *list) { if (list->next) { @@ -562,7 +561,7 @@ print_bidi_string (FriBidiChar *str) fprintf (stderr, " Org. types : "); for (i = 0; str[i]; i++) fprintf (stderr, "%c", - fribidi_char_from_type (fribidi_get_type (fribidienv,str[i]))); + fribidi_char_from_type (fribidi_get_type (fribidienv, str[i]))); fprintf (stderr, "\n"); } #endif @@ -571,12 +570,12 @@ print_bidi_string (FriBidiChar *str) * This function should follow the Unicode specification closely! *----------------------------------------------------------------------*/ static void -fribidi_analyse_string ( FriBidiEnv* fribidienv, - /* input */ - const FriBidiChar *str, FriBidiStrIndex len, - FriBidiCharType *pbase_dir, - /* output */ - TypeLink **ptype_rl_list, FriBidiLevel *pmax_level) +fribidi_analyse_string (FriBidiEnv *fribidienv, + /* input */ + const FriBidiChar *str, FriBidiStrIndex len, + FriBidiCharType *pbase_dir, + /* output */ + TypeLink **ptype_rl_list, FriBidiLevel *pmax_level) { FriBidiLevel base_level, max_level; FriBidiCharType base_dir; @@ -589,13 +588,14 @@ fribidi_analyse_string ( FriBidiEnv* fribidienv, DBG (" Determine character types\n"); { FriBidiCharType *char_type = - (FriBidiCharType *) fribidi_malloc (fribidienv, len * sizeof (FriBidiCharType)); + (FriBidiCharType *) fribidi_malloc (fribidienv, + len * sizeof (FriBidiCharType)); for (i = 0; i < len; i++) - char_type[i] = fribidi_get_type (fribidienv,str[i]); + char_type[i] = fribidi_get_type (fribidienv, str[i]); /* Run length encode the character types */ type_rl_list = run_length_encode_types (fribidienv, char_type, len); - fribidi_free (fribidienv,char_type); + fribidi_free (fribidienv, char_type); } DBG (" Determine character types, Done\n"); @@ -627,7 +627,7 @@ fribidi_analyse_string ( FriBidiEnv* fribidienv, DBG (" Finding the base level, Done\n"); #ifdef DEBUG - if (fribidi_debug_status(fribidienv)) + if (fribidi_debug_status (fribidienv)) { print_types_re (type_rl_list); } @@ -654,7 +654,9 @@ fribidi_analyse_string ( FriBidiEnv* fribidienv, over_pushed = 0; first_interval = 0; status_stack = - (LevelInfo *) fribidi_malloc (fribidienv, sizeof (LevelInfo) * (UNI_MAX_BIDI_LEVEL + 2)); + (LevelInfo *) fribidi_malloc (fribidienv, + sizeof (LevelInfo) * (UNI_MAX_BIDI_LEVEL + + 2)); for (pp = type_rl_list->next; pp->next; pp = pp->next) { @@ -718,7 +720,7 @@ fribidi_analyse_string ( FriBidiEnv* fribidienv, stack_size = 0; over_pushed = 0; - fribidi_free (fribidienv,status_stack); + fribidi_free (fribidienv, status_stack); } /* X10. The remaining rules are applied to each run of characters at the same level. For each run, determine the start-of-level-run (sor) and @@ -733,7 +735,7 @@ fribidi_analyse_string ( FriBidiEnv* fribidienv, compact_list (fribidienv, type_rl_list); #ifdef DEBUG - if (fribidi_debug_status(fribidienv)) + if (fribidi_debug_status (fribidienv)) { print_types_re (type_rl_list); print_bidi_string (str); @@ -865,7 +867,7 @@ fribidi_analyse_string ( FriBidiEnv* fribidienv, compact_neutrals (fribidienv, type_rl_list); #ifdef DEBUG - if (fribidi_debug_status(fribidienv)) + if (fribidi_debug_status (fribidienv)) { print_resolved_levels (type_rl_list); print_resolved_types (type_rl_list); @@ -897,7 +899,7 @@ fribidi_analyse_string ( FriBidiEnv* fribidienv, compact_list (fribidienv, type_rl_list); #ifdef DEBUG - if (fribidi_debug_status(fribidienv)) + if (fribidi_debug_status (fribidienv)) { print_resolved_levels (type_rl_list); print_resolved_types (type_rl_list); @@ -933,7 +935,7 @@ fribidi_analyse_string ( FriBidiEnv* fribidienv, compact_list (fribidienv, type_rl_list); #ifdef DEBUG - if (fribidi_debug_status(fribidienv)) + if (fribidi_debug_status (fribidienv)) { print_bidi_string (str); print_resolved_levels (type_rl_list); @@ -957,7 +959,7 @@ fribidi_analyse_string ( FriBidiEnv* fribidienv, } #ifdef DEBUG - if (fribidi_debug_status(fribidienv)) + if (fribidi_debug_status (fribidienv)) { print_types_re (type_rl_list); print_resolved_levels (type_rl_list); @@ -979,7 +981,7 @@ fribidi_analyse_string ( FriBidiEnv* fribidienv, { /* if state is on at the very first of string, do this too. */ if (j >= 0) - k = fribidi_get_type (fribidienv,str[j]); + k = fribidi_get_type (fribidienv, str[j]); else k = FRIBIDI_TYPE_ON; if (!state && FRIBIDI_IS_SEPARATOR (k)) @@ -991,7 +993,7 @@ fribidi_analyse_string ( FriBidiEnv* fribidienv, { state = 0; p = new_type_link (fribidienv); - p->prev = p->next = (TypeLink*) NULL; + p->prev = p->next = (TypeLink *) NULL; p->pos = j + 1; p->len = pos - j; p->type = base_dir; @@ -1004,7 +1006,7 @@ fribidi_analyse_string ( FriBidiEnv* fribidienv, } #ifdef DEBUG - if (fribidi_debug_status(fribidienv)) + if (fribidi_debug_status (fribidienv)) { print_types_re (type_rl_list); print_resolved_levels (type_rl_list); @@ -1025,7 +1027,7 @@ fribidi_analyse_string ( FriBidiEnv* fribidienv, * fribidi_analyse_string(), after the list is not needed anymore. *----------------------------------------------------------------------*/ static void -free_rl_list (FriBidiEnv* fribidienv, TypeLink *type_rl_list) +free_rl_list (FriBidiEnv *fribidienv, TypeLink *type_rl_list) { TypeLink *pp; @@ -1070,7 +1072,7 @@ free_rl_list (FriBidiEnv* fribidienv, TypeLink *type_rl_list) * the new length, updates each of other inputs if not NULL. *----------------------------------------------------------------------*/ FriBidiStrIndex -fribidi_remove_bidi_marks (FriBidiEnv* fribidienv, +fribidi_remove_bidi_marks (FriBidiEnv *fribidienv, FriBidiChar *str, FriBidiStrIndex length, FriBidiStrIndex *position_to_this_list, FriBidiStrIndex *position_from_this_list, @@ -1087,12 +1089,14 @@ fribidi_remove_bidi_marks (FriBidiEnv* fribidienv, { private_from_this = TRUE; position_from_this_list = - (FriBidiStrIndex *) fribidi_malloc (fribidienv, sizeof (FriBidiStrIndex) * length); + (FriBidiStrIndex *) fribidi_malloc (fribidienv, + sizeof (FriBidiStrIndex) * + length); } j = 0; for (i = 0; i < length; i++) - if (!FRIBIDI_IS_EXPLICIT (fribidi_get_type (fribidienv,str[i])) + if (!FRIBIDI_IS_EXPLICIT (fribidi_get_type (fribidienv, str[i])) && str[i] != UNI_LRM && str[i] != UNI_RLM) { str[j] = str[i]; @@ -1127,17 +1131,17 @@ fribidi_remove_bidi_marks (FriBidiEnv* fribidienv, * does reordering and fills in the output strings. *----------------------------------------------------------------------*/ boolean -fribidi_log2vis ( FriBidiEnv* fribidienv, - /* input */ - const FriBidiChar *str, FriBidiStrIndex len, - FriBidiCharType *pbase_dir, - /* output */ - FriBidiChar *visual_str, - FriBidiStrIndex *position_L_to_V_list, - FriBidiStrIndex *position_V_to_L_list, - FriBidiLevel *embedding_level_list) +fribidi_log2vis (FriBidiEnv *fribidienv, + /* input */ + const FriBidiChar *str, FriBidiStrIndex len, + FriBidiCharType *pbase_dir, + /* output */ + FriBidiChar *visual_str, + FriBidiStrIndex *position_L_to_V_list, + FriBidiStrIndex *position_V_to_L_list, + FriBidiLevel *embedding_level_list) { - TypeLink *type_rl_list, *pp = (TypeLink*) NULL; + TypeLink *type_rl_list, *pp = (TypeLink *) NULL; FriBidiLevel max_level; boolean private_V_to_L = FALSE; @@ -1155,7 +1159,8 @@ fribidi_log2vis ( FriBidiEnv* fribidienv, { private_V_to_L = TRUE; position_V_to_L_list = - (FriBidiStrIndex *) fribidi_malloc (fribidienv, sizeof (FriBidiStrIndex) * len); + (FriBidiStrIndex *) fribidi_malloc (fribidienv, + sizeof (FriBidiStrIndex) * len); } if (len > FRIBIDI_MAX_STRING_LENGTH && position_V_to_L_list) @@ -1215,7 +1220,7 @@ fribidi_log2vis ( FriBidiEnv* fribidienv, /* Reorder both the outstring and the order array */ if (visual_str || position_V_to_L_list) { - if (fribidi_mirroring_status(fribidienv) && visual_str) + if (fribidi_mirroring_status (fribidienv) && visual_str) { /* L4. Mirror all characters that are in odd levels and have mirrors. */ DBG (" Mirroring\n"); @@ -1236,7 +1241,7 @@ fribidi_log2vis ( FriBidiEnv* fribidienv, DBG (" Mirroring, Done\n"); } - if (fribidi_reorder_nsm_status(fribidienv)) + if (fribidi_reorder_nsm_status (fribidienv)) { /* L3. Reorder NSMs. */ DBG (" Reordering NSM sequences\n"); @@ -1249,7 +1254,8 @@ fribidi_log2vis ( FriBidiEnv* fribidienv, boolean is_nsm_seq, seq_end; is_nsm_seq = 0; - for (i = RL_POS (pp) + RL_LEN (pp) - 1; i >= RL_POS (pp); i--) + for (i = RL_POS (pp) + RL_LEN (pp) - 1; i >= RL_POS (pp); + i--) { FriBidiCharType this_type; @@ -1337,13 +1343,13 @@ fribidi_log2vis ( FriBidiEnv* fribidienv, * the embedding levels. *----------------------------------------------------------------------*/ boolean -fribidi_log2vis_get_embedding_levels ( FriBidiEnv* fribidienv, - /* input */ - const FriBidiChar *str, - FriBidiStrIndex len, - FriBidiCharType *pbase_dir, - /* output */ - FriBidiLevel *embedding_level_list) +fribidi_log2vis_get_embedding_levels (FriBidiEnv *fribidienv, + /* input */ + const FriBidiChar *str, + FriBidiStrIndex len, + FriBidiCharType *pbase_dir, + /* output */ + FriBidiLevel *embedding_level_list) { TypeLink *type_rl_list, *pp; FriBidiLevel max_level; @@ -1376,10 +1382,12 @@ fribidi_log2vis_get_embedding_levels ( FriBidiEnv* fribidienv, -const char fribidi_version_info[] = - FRIBIDI_PACKAGE " " FRIBIDI_VERSION " (interface version " - FRIBIDI_INTERFACE_VERSION_STR ")\n" - "Copyright (C) 2001 FriBidi Project (http://fribidi.sf.net/).\n" "\n" +const char *fribidi_version_info = + FRIBIDI_PACKAGE " " FRIBIDI_VERSION "\n" + "interface version " FRIBIDI_INTERFACE_VERSION_STR "\n" + "Unicode version " FRIBIDI_UNICODE_VERSION "\n" + "\n" + "Copyright (C) 2002 FriBidi Project (http://fribidi.sf.net/).\n" FRIBIDI_PACKAGE " comes with NO WARRANTY, to the extent permitted by law.\n" "You may redistribute copies of " FRIBIDI_PACKAGE " under the terms of\n" "the GNU Lesser General Public License.\n" @@ -39,31 +39,30 @@ extern "C" { #endif - boolean fribidi_log2vis ( FriBidiEnv* fribidienv, - /* input */ - const FriBidiChar *str, - FriBidiStrIndex len, - FriBidiCharType *pbase_dirs, - /* output */ - FriBidiChar *visual_str, - FriBidiStrIndex *position_L_to_V_list, - FriBidiStrIndex *position_V_to_L_list, - FriBidiLevel *embedding_level_list); + boolean fribidi_log2vis (FriBidiEnv *fribidienv, + /* input */ + const FriBidiChar *str, + FriBidiStrIndex len, FriBidiCharType *pbase_dirs, + /* output */ + FriBidiChar *visual_str, + FriBidiStrIndex *position_L_to_V_list, + FriBidiStrIndex *position_V_to_L_list, + FriBidiLevel *embedding_level_list); - boolean fribidi_log2vis_get_embedding_levels ( FriBidiEnv* fribidienv, - /* input */ - const FriBidiChar *str, - FriBidiStrIndex len, - FriBidiCharType *pbase_dir, - /* output */ - FriBidiLevel - *embedding_level_list); + boolean fribidi_log2vis_get_embedding_levels (FriBidiEnv *fribidienv, + /* input */ + const FriBidiChar *str, + FriBidiStrIndex len, + FriBidiCharType *pbase_dir, + /* output */ + FriBidiLevel + *embedding_level_list); /*====================================================================== * fribidi_remove_bidi_marks() removes bidirectional marks, and returns * the new length, also updates each of other inputs if not NULL. *----------------------------------------------------------------------*/ - FriBidiStrIndex fribidi_remove_bidi_marks (FriBidiEnv* fribidienv, + FriBidiStrIndex fribidi_remove_bidi_marks (FriBidiEnv *fribidienv, FriBidiChar *str, FriBidiStrIndex length, FriBidiStrIndex @@ -86,23 +85,22 @@ extern "C" /*====================================================================== * fribidi_get_types() returns bidi type of a string. *----------------------------------------------------------------------*/ - void fribidi_get_types ( FriBidiEnv* fribidienv, - /* input */ - const FriBidiChar *str, - FriBidiStrIndex len, - /* output */ - FriBidiCharType *type); + void fribidi_get_types (FriBidiEnv *fribidienv, + /* input */ + const FriBidiChar *str, FriBidiStrIndex len, + /* output */ + FriBidiCharType *type); /*====================================================================== * fribidi_get_mirror_char() returns the mirrored character, if input * character has a mirror, or the input itself. * if mirrored_ch is NULL, just returns if character has a mirror or not. *----------------------------------------------------------------------*/ - boolean fribidi_get_mirror_char ( FriBidiEnv* fribidienv, - /* Input */ - FriBidiChar ch, - /* Output */ - FriBidiChar *mirrored_ch); + boolean fribidi_get_mirror_char (FriBidiEnv *fribidienv, + /* Input */ + FriBidiChar ch, + /* Output */ + FriBidiChar *mirrored_ch); /*====================================================================== * The following functions were moved to fribidi_env: * - fribidi_mirroring_status() @@ -119,15 +117,15 @@ extern "C" * of characters that need redrawing. It returns the start and the * length of the section in the new string that needs redrawing. *----------------------------------------------------------------------*/ - void fribidi_find_string_changes ( FriBidiEnv* fribidienv, - /* input */ - const FriBidiChar *old_str, - FriBidiStrIndex old_len, - const FriBidiChar *new_str, - FriBidiStrIndex new_len, - /* output */ - FriBidiStrIndex *change_start, - FriBidiStrIndex *change_len); + void fribidi_find_string_changes (FriBidiEnv *fribidienv, + /* input */ + const FriBidiChar *old_str, + FriBidiStrIndex old_len, + const FriBidiChar *new_str, + FriBidiStrIndex new_len, + /* output */ + FriBidiStrIndex *change_start, + FriBidiStrIndex *change_len); /*====================================================================== @@ -159,7 +157,7 @@ extern "C" * // output * &num_vis_ranges, *vis_ranges); **----------------------------------------------------------------------*/ - void fribidi_map_range (FriBidiEnv* fribidienv, + void fribidi_map_range (FriBidiEnv *fribidienv, /* input */ FriBidiStrIndex span[2], FriBidiStrIndex len, @@ -174,7 +172,7 @@ extern "C" * was resolved in the rtl direction. This simply involves asking * if the embedding level for the character is odd. *----------------------------------------------------------------------*/ - boolean fribidi_is_char_rtl (FriBidiEnv* fribidienv, + boolean fribidi_is_char_rtl (FriBidiEnv *fribidienv, const FriBidiLevel *embedding_level_list, FriBidiCharType base_dir, FriBidiStrIndex idx); @@ -226,7 +224,7 @@ extern "C" * beyond the end of the line, res_attach_before is true. * *----------------------------------------------------------------------*/ - void fribidi_xpos_resolve (FriBidiEnv* fribidienv, + void fribidi_xpos_resolve (FriBidiEnv *fribidienv, /* input */ int x_pos, int x_offset, FriBidiStrIndex len, @@ -246,14 +244,14 @@ extern "C" * a list of visual runs. A run is defined as a sequence that has * the same attributes. *----------------------------------------------------------------------*/ - void fribidi_runs_log2vis ( FriBidiEnv* fribidienv, - /* input */ - const FriBidiList *logical_runs, /* List of FriBidiRunType */ - FriBidiStrIndex len, - const FriBidiStrIndex *log2vis, - FriBidiCharType base_dir, - /* output */ - FriBidiList **visual_runs); + void fribidi_runs_log2vis (FriBidiEnv *fribidienv, + /* input */ + const FriBidiList *logical_runs, /* List of FriBidiRunType */ + FriBidiStrIndex len, + const FriBidiStrIndex *log2vis, + FriBidiCharType base_dir, + /* output */ + FriBidiList **visual_runs); #ifdef __cplusplus diff --git a/fribidi_char_sets_cap_rtl.c b/fribidi_char_sets_cap_rtl.c index a0cee9b..070284f 100644 --- a/fribidi_char_sets_cap_rtl.c +++ b/fribidi_char_sets_cap_rtl.c @@ -262,7 +262,9 @@ fribidi_char_set_enter_cap_rtl (void) int i, count; caprtl_to_unicode = - (FriBidiChar *) fribidi_malloc (NULL, CAPRTL_CHARS * sizeof caprtl_to_unicode[0]); + (FriBidiChar *) fribidi_malloc (NULL, + CAPRTL_CHARS * + sizeof caprtl_to_unicode[0]); for (i = 0; i < FRIBIDI_TYPES_COUNT; i++) request[i] = 0; for (i = 0; i < CAPRTL_CHARS; i++) diff --git a/fribidi_char_type.c b/fribidi_char_type.c index a16f904..9ce4df6 100644 --- a/fribidi_char_type.c +++ b/fribidi_char_type.c @@ -30,11 +30,11 @@ FriBidiCharType fribidi_get_type_internal (FriBidiChar uch); void -fribidi_get_types ( FriBidiEnv* fribidienv, - /* input */ - const FriBidiChar *str, FriBidiStrIndex len, - /* output */ - FriBidiCharType *type) +fribidi_get_types (FriBidiEnv *fribidienv, + /* input */ + const FriBidiChar *str, FriBidiStrIndex len, + /* output */ + FriBidiCharType *type) { FriBidiStrIndex i; diff --git a/fribidi_create_mirroring.c b/fribidi_create_mirroring.c index 0b3fc0d..398802d 100644 --- a/fribidi_create_mirroring.c +++ b/fribidi_create_mirroring.c @@ -22,6 +22,10 @@ #include <stdlib.h> #include <stdio.h> #include <string.h> +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif +#include "fribidi_unicode.h" static void err2 (char *fmt, char *p) @@ -33,7 +37,6 @@ err2 (char *fmt, char *p) } static int table[0x110000]; -static char *bidi_mirroring_version; static char *bidi_mirroring_file; static int mirroring_count; @@ -51,8 +54,8 @@ read_bidi_mirroring () printf ("Reading `BidiMirroring.txt'\n"); if (!(f = fopen (bidi_mirroring_file, "rt"))) err2 ("cannot open `%s' for reading", bidi_mirroring_file); - fgets (s, sizeof s, f); - sscanf (s, "# BidiMirroring-%[^.]", bidi_mirroring_version = malloc (20)); +/* fgets (s, sizeof s, f); + sscanf (s, "# BidiMirroring-%s.txt", bidi_mirroring_version = malloc (20));*/ while (fgets (s, sizeof s, f)) { if (s[0] == '#' || s[0] == '\0' || s[0] == '\n') @@ -93,7 +96,7 @@ write_mirror (char *file) err2 ("cannot open `%s' for writing", file); fprintf (f, "/*\n" " This file was automatically created from BidiMirroring.txt, version %s\n" - " by fribidi_create_mirroring\n*/\n\n", bidi_mirroring_version); + " by fribidi_create_mirroring\n*/\n\n", FRIBIDI_UNICODE_VERSION); fprintf (f, "#ifndef %s\n#define %s\n\n#include \"fribidi.h\"\n\n", FILENAME, FILENAME); fprintf (f, "/*\n" diff --git a/fribidi_env.c b/fribidi_env.c index 19c8b38..507bc2e 100644 --- a/fribidi_env.c +++ b/fribidi_env.c @@ -57,9 +57,10 @@ * It initializes the doubly-linked list of memory chunks and the flags. *----------------------------------------------------------------------*/ -void init_fribidienv(FriBidiEnv* fribidienv, FriBidiFlags aFlags) +void +init_fribidienv (FriBidiEnv *fribidienv, FriBidiFlags aFlags) { - VALIDATE_FRIBIDIENV(fribidienv); + VALIDATE_FRIBIDIENV (fribidienv); fribidienv->iAllocatedMemoryChunks = NULL; fribidienv->iFlags = aFlags; /* fribidienv->iReserved3 = NULL; */ @@ -71,19 +72,21 @@ void init_fribidienv(FriBidiEnv* fribidienv, FriBidiFlags aFlags) * so there is no need for a separate init_fribidienv() call (but it * does not harm). *----------------------------------------------------------------------*/ -void destroy_fribidienv(FriBidiEnv* fribidienv) +void +destroy_fribidienv (FriBidiEnv *fribidienv) { - FriBidiMemChunkPrefix* lChunkPtr; - FriBidiMemChunkPrefix* lChunkNext; + FriBidiMemChunkPrefix *lChunkPtr; + FriBidiMemChunkPrefix *lChunkNext; - VALIDATE_FRIBIDIENV(fribidienv); + VALIDATE_FRIBIDIENV (fribidienv); lChunkPtr = fribidienv->iAllocatedMemoryChunks; - while (NULL != lChunkPtr) { - lChunkNext = (FriBidiMemChunkPrefix*) (lChunkPtr->iNext); - free(lChunkPtr); - lChunkPtr = lChunkNext; - } + while (NULL != lChunkPtr) + { + lChunkNext = (FriBidiMemChunkPrefix *) (lChunkPtr->iNext); + free (lChunkPtr); + lChunkPtr = lChunkNext; + } fribidienv->iAllocatedMemoryChunks = NULL; } @@ -93,17 +96,20 @@ void destroy_fribidienv(FriBidiEnv* fribidienv) * This function may throw an Out-Of-Memory exception in * environments, which support exceptions. *----------------------------------------------------------------------*/ -void* fribidi_malloc(FriBidiEnv* fribidienv, size_t size) +void * +fribidi_malloc (FriBidiEnv *fribidienv, size_t size) { - FriBidiMemChunkPrefix* lChunk_ptr; - FriBidiMemChunkPrefix* lNextChunk_ptr; + FriBidiMemChunkPrefix *lChunk_ptr; + FriBidiMemChunkPrefix *lNextChunk_ptr; - VALIDATE_FRIBIDIENV(fribidienv); + VALIDATE_FRIBIDIENV (fribidienv); - lChunk_ptr = (FriBidiMemChunkPrefix*) malloc(sizeof(FriBidiMemChunkPrefix) + size); - if (NULL == lChunk_ptr) { - FRIBIDI_OOM_ACTION; - } + lChunk_ptr = + (FriBidiMemChunkPrefix *) malloc (sizeof (FriBidiMemChunkPrefix) + size); + if (NULL == lChunk_ptr) + { + FRIBIDI_OOM_ACTION; + } /* Before: * fribidienv->iAllocatedMemoryChunks points at lNextChunk_ptr. @@ -122,13 +128,14 @@ void* fribidi_malloc(FriBidiEnv* fribidienv, size_t size) lNextChunk_ptr = fribidienv->iAllocatedMemoryChunks; fribidienv->iAllocatedMemoryChunks = lChunk_ptr; - if (NULL != lNextChunk_ptr) { - lNextChunk_ptr->iPrev = lChunk_ptr; - } + if (NULL != lNextChunk_ptr) + { + lNextChunk_ptr->iPrev = lChunk_ptr; + } lChunk_ptr->iNext = lNextChunk_ptr; - lChunk_ptr->iPrev = (FriBidiMemChunkPrefix*)fribidienv; + lChunk_ptr->iPrev = (FriBidiMemChunkPrefix *) fribidienv; - return((void*) (&lChunk_ptr[1])); + return ((void *) (&lChunk_ptr[1])); } /*====================================================================== @@ -136,11 +143,12 @@ void* fribidi_malloc(FriBidiEnv* fribidienv, size_t size) * FriBidiEnv instance and free it. * If the memory chunk is not properly linked, then panic. *----------------------------------------------------------------------*/ -void fribidi_free(FriBidiEnv* fribidienv, void* ptr) +void +fribidi_free (FriBidiEnv *fribidienv, void *ptr) { - FriBidiMemChunkPrefix* lChunk_ptr; - FriBidiMemChunkPrefix* lNextChunk_ptr; - FriBidiMemChunkPrefix* lPrevChunk_ptr; + FriBidiMemChunkPrefix *lChunk_ptr; + FriBidiMemChunkPrefix *lNextChunk_ptr; + FriBidiMemChunkPrefix *lPrevChunk_ptr; /* VALIDATE_FRIBIDIENV(fribidienv); */ /* At normal operation (i.e. not when debugging the memory management @@ -148,23 +156,25 @@ void fribidi_free(FriBidiEnv* fribidienv, void* ptr) * fribidi_free(). */ - if (NULL == ptr) return; + if (NULL == ptr) + return; - lChunk_ptr = (FriBidiMemChunkPrefix*) - (((char *)ptr) - sizeof(FriBidiMemChunkPrefix)); + lChunk_ptr = (FriBidiMemChunkPrefix *) + (((char *) ptr) - sizeof (FriBidiMemChunkPrefix)); - lNextChunk_ptr = (FriBidiMemChunkPrefix*) (lChunk_ptr->iNext); - lPrevChunk_ptr = (FriBidiMemChunkPrefix*) (lChunk_ptr->iPrev); + lNextChunk_ptr = (FriBidiMemChunkPrefix *) (lChunk_ptr->iNext); + lPrevChunk_ptr = (FriBidiMemChunkPrefix *) (lChunk_ptr->iPrev); - assert(NULL != lPrevChunk_ptr); + assert (NULL != lPrevChunk_ptr); /* Remove the current memory chunk from the doubly-linked list. */ lPrevChunk_ptr->iNext = lNextChunk_ptr; - if (NULL != lNextChunk_ptr) { - lNextChunk_ptr->iPrev = lPrevChunk_ptr; - } + if (NULL != lNextChunk_ptr) + { + lNextChunk_ptr->iPrev = lPrevChunk_ptr; + } - free(lChunk_ptr); + free (lChunk_ptr); } @@ -174,64 +184,73 @@ void fribidi_free(FriBidiEnv* fribidienv, void* ptr) * fribidi_mirroring_status() returns whether mirroring is on or off, * default is on. *----------------------------------------------------------------------*/ -boolean fribidi_mirroring_status (FriBidiEnv* fbenv) +boolean +fribidi_mirroring_status (FriBidiEnv *fbenv) { - VALIDATE_FRIBIDIENV(fbenv); + VALIDATE_FRIBIDIENV (fbenv); - return(0 != (fbenv->iFlags & FRIBIDIENV_MIRRORING_MODE) ? TRUE : FALSE); + return (0 != (fbenv->iFlags & FRIBIDIENV_MIRRORING_MODE) ? TRUE : FALSE); } /*====================================================================== * fribidi_set_mirroring() sets mirroring on or off. *----------------------------------------------------------------------*/ -void fribidi_set_mirroring (FriBidiEnv* fbenv, boolean mirror) +void +fribidi_set_mirroring (FriBidiEnv *fbenv, boolean mirror) { - VALIDATE_FRIBIDIENV(fbenv); - - if (FALSE != mirror) { - fbenv->iFlags |= FRIBIDIENV_MIRRORING_MODE; - } - else { - fbenv->iFlags &= (~FRIBIDIENV_MIRRORING_MODE); - } + VALIDATE_FRIBIDIENV (fbenv); + + if (FALSE != mirror) + { + fbenv->iFlags |= FRIBIDIENV_MIRRORING_MODE; + } + else + { + fbenv->iFlags &= (~FRIBIDIENV_MIRRORING_MODE); + } } /*====================================================================== * fribidi_reorder_nsm_status() returns whether reordering of nsm * sequences is on or off, default is off. *----------------------------------------------------------------------*/ -boolean fribidi_reorder_nsm_status (FriBidiEnv* fbenv) +boolean +fribidi_reorder_nsm_status (FriBidiEnv *fbenv) { - VALIDATE_FRIBIDIENV(fbenv); + VALIDATE_FRIBIDIENV (fbenv); - return(0 != (fbenv->iFlags & FRIBIDIENV_REORDER_NSM_MODE) ? TRUE : FALSE); + return (0 != (fbenv->iFlags & FRIBIDIENV_REORDER_NSM_MODE) ? TRUE : FALSE); } /*====================================================================== * fribidi_set_reorder_nsm() sets reordering of nsm sequences on or off. *----------------------------------------------------------------------*/ -void fribidi_set_reorder_nsm (FriBidiEnv* fbenv, boolean reorder) +void +fribidi_set_reorder_nsm (FriBidiEnv *fbenv, boolean reorder) { - VALIDATE_FRIBIDIENV(fbenv); - - if (FALSE != reorder) { - fbenv->iFlags |= FRIBIDIENV_REORDER_NSM_MODE; - } - else { - fbenv->iFlags &= (~FRIBIDIENV_REORDER_NSM_MODE); - } + VALIDATE_FRIBIDIENV (fbenv); + + if (FALSE != reorder) + { + fbenv->iFlags |= FRIBIDIENV_REORDER_NSM_MODE; + } + else + { + fbenv->iFlags &= (~FRIBIDIENV_REORDER_NSM_MODE); + } } /*====================================================================== * fribidi_debug_status() returns whether debugging is on or off, * default is off. *----------------------------------------------------------------------*/ -boolean fribidi_debug_status (FriBidiEnv* fbenv) +boolean +fribidi_debug_status (FriBidiEnv *fbenv) { #ifdef DEBUG - VALIDATE_FRIBIDIENV(fbenv); + VALIDATE_FRIBIDIENV (fbenv); - return(0 != (fbenv->iFlags & FRIBIDIENV_DEBUG_MODE) ? TRUE : FALSE); + return (0 != (fbenv->iFlags & FRIBIDIENV_DEBUG_MODE) ? TRUE : FALSE); #else /* DEBUG */ return FALSE; #endif /* DEBUG */ @@ -242,17 +261,20 @@ boolean fribidi_debug_status (FriBidiEnv* fbenv) * if the library was compiled without DEBUG option, this function * returns FALSE. *----------------------------------------------------------------------*/ -boolean fribidi_set_debug (FriBidiEnv* fbenv, boolean debug) +boolean +fribidi_set_debug (FriBidiEnv *fbenv, boolean debug) { #ifdef DEBUG - VALIDATE_FRIBIDIENV(fbenv); - - if (FALSE != debug) { - fbenv->iFlags |= FRIBIDIENV_DEBUG_MODE; - } - else { - fbenv->iFlags &= (~FRIBIDIENV_DEBUG_MODE); - } + VALIDATE_FRIBIDIENV (fbenv); + + if (FALSE != debug) + { + fbenv->iFlags |= FRIBIDIENV_DEBUG_MODE; + } + else + { + fbenv->iFlags &= (~FRIBIDIENV_DEBUG_MODE); + } return debug; #else /* DEBUG */ return FALSE; @@ -264,7 +286,7 @@ boolean fribidi_set_debug (FriBidiEnv* fbenv, boolean debug) * For environments with global FriBidiEnv instance. *----------------------------------------------------------------------*/ #ifdef GLOBAL_FRIBIDIENV -FriBidiEnv fribidi_global_env = {NULL, FRIBIDIENV_DEFAULT_SETTINGS}; +FriBidiEnv fribidi_global_env = { NULL, FRIBIDIENV_DEFAULT_SETTINGS }; /* fribidi_global_env needs no explicit initialization. */ #endif /* GLOBAL_FRIBIDIENV */ diff --git a/fribidi_env.h b/fribidi_env.h index 9815afb..d146f81 100644 --- a/fribidi_env.h +++ b/fribidi_env.h @@ -82,19 +82,20 @@ extern "C" * between it and a memory chunk in middle of the doubly-linked list. **********************************************************************/ -typedef struct _FriBidiMemChunkPrefix FriBidiMemChunkPrefix; - -struct _FriBidiMemChunkPrefix { - FriBidiMemChunkPrefix* iNext; - /* must be first item in the chunk prefix, so that the - * fribidi_free() can handle the list head without checking - * for special cases. - */ - FriBidiMemChunkPrefix* iPrev; - /* Points at either FriBidiMemChunkPrefix or at - * FriBidiEnv. - */ -}; + typedef struct _FriBidiMemChunkPrefix FriBidiMemChunkPrefix; + + struct _FriBidiMemChunkPrefix + { + FriBidiMemChunkPrefix *iNext; + /* must be first item in the chunk prefix, so that the + * fribidi_free() can handle the list head without checking + * for special cases. + */ + FriBidiMemChunkPrefix *iPrev; + /* Points at either FriBidiMemChunkPrefix or at + * FriBidiEnv. + */ + }; /*====================================================================== @@ -105,38 +106,39 @@ struct _FriBidiMemChunkPrefix { * currently defined. * But we want to keep all FriBidiEnv fields word-aligned. */ -typedef uint32 FriBidiFlags; + typedef uint32 FriBidiFlags; /* The following is defined in fribidi_mem.h, must be defined * there due to forward references. */ /* typedef struct _FriBidiEnv FriBidiEnv; */ -struct _FriBidiEnv { - FriBidiMemChunkPrefix* iAllocatedMemoryChunks; - /* Pointer to doubly-linked list of allocated memory chunks. - * Must be the first item in the structure, so that the - * fribidi_free() can handle list head without checking for - * special cases. - */ - FriBidiFlags iFlags; - /* The flags will define: - * - Debug mode - * - Mirroring - * - L3 rule on/off - * - remove BiDi marks on/off - * - Arabic joining on/off - * - Ligaturing on/off - * They will be set and cleared by inlined access procedures. - */ - - /* The following are reserved for future expansion without breaking - * binary compatibility of existing software. - */ - uint32 iReserved1; - uint32 iReserved2; - void* iReserved3; /* If necessary, will point at extension to FriBidiEnv. */ -}; + struct _FriBidiEnv + { + FriBidiMemChunkPrefix *iAllocatedMemoryChunks; + /* Pointer to doubly-linked list of allocated memory chunks. + * Must be the first item in the structure, so that the + * fribidi_free() can handle list head without checking for + * special cases. + */ + FriBidiFlags iFlags; + /* The flags will define: + * - Debug mode + * - Mirroring + * - L3 rule on/off + * - remove BiDi marks on/off + * - Arabic joining on/off + * - Ligaturing on/off + * They will be set and cleared by inlined access procedures. + */ + + /* The following are reserved for future expansion without breaking + * binary compatibility of existing software. + */ + uint32 iReserved1; + uint32 iReserved2; + void *iReserved3; /* If necessary, will point at extension to FriBidiEnv. */ + }; /*====================================================================== * Initialize a FriBidiEnv structure. Must be called before any @@ -144,7 +146,7 @@ struct _FriBidiEnv { * * It initializes the doubly-linked list of memory chunks and the flags. *----------------------------------------------------------------------*/ -void init_fribidienv(FriBidiEnv* fribidienv, FriBidiFlags aFlags); + void init_fribidienv (FriBidiEnv *fribidienv, FriBidiFlags aFlags); /*====================================================================== @@ -153,7 +155,7 @@ void init_fribidienv(FriBidiEnv* fribidienv, FriBidiFlags aFlags); * so there is no need for a separate init_fribidienv() call (but it * does not harm). *----------------------------------------------------------------------*/ -void destroy_fribidienv(FriBidiEnv* fribidienv); + void destroy_fribidienv (FriBidiEnv *fribidienv); /*====================================================================== @@ -161,7 +163,7 @@ void destroy_fribidienv(FriBidiEnv* fribidienv); * This function may throw an Out-Of-Memory exception in * environments, which support exceptions. *----------------------------------------------------------------------*/ -void* fribidi_malloc(FriBidiEnv* fribidienv, size_t size); + void *fribidi_malloc (FriBidiEnv *fribidienv, size_t size); /*====================================================================== @@ -169,7 +171,7 @@ void* fribidi_malloc(FriBidiEnv* fribidienv, size_t size); * FriBidiEnv instance and free it. * If the memory chunk is not properly linked, then panic. *----------------------------------------------------------------------*/ -void fribidi_free(FriBidiEnv* fribidienv, void* ptr); + void fribidi_free (FriBidiEnv *fribidienv, void *ptr); /*====================================================================*/ @@ -197,37 +199,37 @@ void fribidi_free(FriBidiEnv* fribidienv, void* ptr); * fribidi_mirroring_status() returns whether mirroring is on or off, * default is on. *----------------------------------------------------------------------*/ -boolean fribidi_mirroring_status (FriBidiEnv* fbenv); + boolean fribidi_mirroring_status (FriBidiEnv *fbenv); /*====================================================================== * fribidi_set_mirroring() sets mirroring on or off. *----------------------------------------------------------------------*/ -void fribidi_set_mirroring (FriBidiEnv* fbenv, boolean mirror); + void fribidi_set_mirroring (FriBidiEnv *fbenv, boolean mirror); /*====================================================================== * fribidi_reorder_nsm_status() returns whether reordering of nsm * sequences is on or off, default is off. *----------------------------------------------------------------------*/ -boolean fribidi_reorder_nsm_status (FriBidiEnv* fbenv); + boolean fribidi_reorder_nsm_status (FriBidiEnv *fbenv); /*====================================================================== * fribidi_set_reorder_nsm() sets reordering of nsm sequences on or off. *----------------------------------------------------------------------*/ -void fribidi_set_reorder_nsm (FriBidiEnv* fbenv, boolean reorder); + void fribidi_set_reorder_nsm (FriBidiEnv *fbenv, boolean reorder); /*====================================================================== * fribidi_debug_status() returns whether debugging is on or off, * default is off. Returns false if fribidi is not compiled with debug * enabled. *----------------------------------------------------------------------*/ -boolean fribidi_debug_status (FriBidiEnv* fbenv); + boolean fribidi_debug_status (FriBidiEnv *fbenv); /*====================================================================== * fribidi_set_debug() turn on or off debugging, default is off. * if the library was compiled without DEBUG option, this function * returns FALSE. *----------------------------------------------------------------------*/ -boolean fribidi_set_debug (FriBidiEnv* fbenv, boolean debug); + boolean fribidi_set_debug (FriBidiEnv *fbenv, boolean debug); /*====================================================================== * Management of various styles of defining and using FriBidiEnv. @@ -239,8 +241,8 @@ boolean fribidi_set_debug (FriBidiEnv* fbenv, boolean debug); #ifdef GLOBAL_FRIBIDIENV #define VALIDATE_FRIBIDIENV(env) if ((env) == NULL) (env) = &(fribidi_global_env) -extern FriBidiEnv fribidi_global_env; -#endif /* GLOBAL_FRIBIDIENV */ + extern FriBidiEnv fribidi_global_env; +#endif /* GLOBAL_FRIBIDIENV */ /*====================================================================== @@ -248,7 +250,7 @@ extern FriBidiEnv fribidi_global_env; *----------------------------------------------------------------------*/ #ifdef VERIFY_NO_GLOBAL_FRIBIDIENV #define VALIDATE_FRIBIDIENV(env) if ((env) == NULL) Panic() -#endif /* VERIFY_NO_GLOBAL_FRIBIDIENV */ +#endif /* VERIFY_NO_GLOBAL_FRIBIDIENV */ /*====================================================================== @@ -257,14 +259,14 @@ extern FriBidiEnv fribidi_global_env; #ifdef NO_FRIBIDIENV_VALIDATION #define VALIDATE_FRIBIDIENV(env) while (0) {} /* Null definition, for environments, which guarantee valid - ** environments, and need the efficiency. - */ -#endif /* NO_FRIBIDIENV_VALIDATION */ + ** environments, and need the efficiency. + */ +#endif /* NO_FRIBIDIENV_VALIDATION */ #ifdef __cplusplus } #endif -#endif /* FRIBIDI_ENV_H */ +#endif /* FRIBIDI_ENV_H */ /* End of fribidi_env.h */ diff --git a/fribidi_main.c b/fribidi_main.c index a2857e0..06be6f7 100644 --- a/fribidi_main.c +++ b/fribidi_main.c @@ -89,8 +89,7 @@ help (void) " --levels --changes\n" " -d, --debug Output debug information\n" " -t, --test Test %s, same as --clean --nobreak --showinput \\\n" - " --reordernsm\n", - FRIBIDI_PACKAGE); + " --reordernsm\n", FRIBIDI_PACKAGE); #ifdef FRIBIDI_NO_CHARSETS printf (" -c, --charset CS Specify character set, default is %s \\\n" " CS should be a valid iconv character set name\n", @@ -155,7 +154,7 @@ help (void) static void version (void) { - printf (fribidi_version_info); + printf ("%s", fribidi_version_info); exit (0); } @@ -403,10 +402,14 @@ main (int argc, char *argv[]) FriBidiStrIndex new_len; boolean log2vis; - visual = show_visual ? ALLOCATE (NULL, FriBidiChar, len + 1) : NULL; - ltov = show_ltov ? ALLOCATE (NULL, FriBidiStrIndex, len + 1) : NULL; - vtol = show_vtol ? ALLOCATE (NULL, FriBidiStrIndex, len + 1) : NULL; - levels = show_levels ? ALLOCATE (NULL, FriBidiLevel, len + 1) : NULL; + visual = + show_visual ? ALLOCATE (NULL, FriBidiChar, len + 1) : NULL; + ltov = + show_ltov ? ALLOCATE (NULL, FriBidiStrIndex, len + 1) : NULL; + vtol = + show_vtol ? ALLOCATE (NULL, FriBidiStrIndex, len + 1) : NULL; + levels = + show_levels ? ALLOCATE (NULL, FriBidiLevel, len + 1) : NULL; /* Create a bidi string. */ base = input_base_direction; @@ -424,8 +427,8 @@ main (int argc, char *argv[]) /* Remove explicit marks, if asked for. */ if (do_clean) len = - fribidi_remove_bidi_marks (NULL, visual, len, ltov, vtol, - levels); + fribidi_remove_bidi_marks (NULL, visual, len, ltov, + vtol, levels); if (show_visual) { diff --git a/fribidi_mem.c b/fribidi_mem.c index 26ce370..eca78e7 100644 --- a/fribidi_mem.c +++ b/fribidi_mem.c @@ -36,7 +36,7 @@ struct _FriBidiMemChunk }; FriBidiList * -fribidi_list_append (FriBidiEnv* fribidienv, FriBidiList *list, void *data) +fribidi_list_append (FriBidiEnv *fribidienv, FriBidiList *list, void *data) { FriBidiList *node, *last; @@ -55,11 +55,12 @@ fribidi_list_append (FriBidiEnv* fribidienv, FriBidiList *list, void *data) } FriBidiMemChunk * -fribidi_mem_chunk_new (FriBidiEnv* fribidienv, +fribidi_mem_chunk_new (FriBidiEnv *fribidienv, char *name, int atom_size, unsigned long area_size, int type) { - FriBidiMemChunk *m = (FriBidiMemChunk *) fribidi_malloc (fribidienv, sizeof (FriBidiMemChunk)); + FriBidiMemChunk *m = + (FriBidiMemChunk *) fribidi_malloc (fribidienv, sizeof (FriBidiMemChunk)); m->name = name; m->atom_size = atom_size; @@ -73,15 +74,14 @@ fribidi_mem_chunk_new (FriBidiEnv* fribidienv, } void -fribidi_mem_chunk_destroy (FriBidiEnv* fribidienv, - FriBidiMemChunk *mem_chunk) +fribidi_mem_chunk_destroy (FriBidiEnv *fribidienv, FriBidiMemChunk *mem_chunk) { - fribidi_free (fribidienv,mem_chunk); + fribidi_free (fribidienv, mem_chunk); return; } void * -fribidi_mem_chunk_alloc (FriBidiEnv* fribidienv, FriBidiMemChunk *mem_chunk) +fribidi_mem_chunk_alloc (FriBidiEnv *fribidienv, FriBidiMemChunk *mem_chunk) { void *m; @@ -89,7 +89,8 @@ fribidi_mem_chunk_alloc (FriBidiEnv* fribidienv, FriBidiMemChunk *mem_chunk) { if (mem_chunk->empty_size < mem_chunk->atom_size) { - mem_chunk->chunk = fribidi_malloc (fribidienv, mem_chunk->area_size); + mem_chunk->chunk = + fribidi_malloc (fribidienv, mem_chunk->area_size); mem_chunk->empty_size = mem_chunk->area_size; } m = mem_chunk->chunk; @@ -103,7 +104,7 @@ fribidi_mem_chunk_alloc (FriBidiEnv* fribidienv, FriBidiMemChunk *mem_chunk) } void -fribidi_mem_chunk_free (FriBidiEnv* fribidienv, +fribidi_mem_chunk_free (FriBidiEnv *fribidienv, FriBidiMemChunk *mem_chunk, void *mem) { if (mem_chunk->type == FRIBIDI_ALLOC_AND_FREE) diff --git a/fribidi_mem.h b/fribidi_mem.h index dd90511..bc558b6 100644 --- a/fribidi_mem.h +++ b/fribidi_mem.h @@ -58,7 +58,7 @@ extern "C" typedef struct _FriBidiEnv FriBidiEnv; - FriBidiList *fribidi_list_append (FriBidiEnv* fribidienv, + FriBidiList *fribidi_list_append (FriBidiEnv *fribidienv, FriBidiList *list, void *data); typedef struct _FriBidiMemChunk FriBidiMemChunk; @@ -66,17 +66,17 @@ extern "C" #define FRIBIDI_ALLOC_ONLY 1 #define FRIBIDI_ALLOC_AND_FREE 2 - FriBidiMemChunk *fribidi_mem_chunk_new (FriBidiEnv* fribidienv, + FriBidiMemChunk *fribidi_mem_chunk_new (FriBidiEnv *fribidienv, char *name, int atom_size, unsigned long area_size, int type); - void fribidi_mem_chunk_destroy (FriBidiEnv* fribidienv, + void fribidi_mem_chunk_destroy (FriBidiEnv *fribidienv, FriBidiMemChunk *mem_chunk); - void *fribidi_mem_chunk_alloc (FriBidiEnv* fribidienv, + void *fribidi_mem_chunk_alloc (FriBidiEnv *fribidienv, FriBidiMemChunk *mem_chunk); - void *fribidi_mem_chunk_alloc0 (FriBidiEnv* fribidienv, + void *fribidi_mem_chunk_alloc0 (FriBidiEnv *fribidienv, FriBidiMemChunk *mem_chunk); - void fribidi_mem_chunk_free (FriBidiEnv* fribidienv, + void fribidi_mem_chunk_free (FriBidiEnv *fribidienv, FriBidiMemChunk *mem_chunk, void *mem); #define fribidi_mem_chunk_create(fbenv, type, pre_alloc, alloc_type) ( \ diff --git a/fribidi_mirroring.c b/fribidi_mirroring.c index 27b7b7c..8857f2a 100644 --- a/fribidi_mirroring.c +++ b/fribidi_mirroring.c @@ -30,11 +30,11 @@ #include "fribidi_tab_mirroring.i" boolean -fribidi_get_mirror_char ( FriBidiEnv* fribidienv, - /* Input */ - FriBidiChar ch, - /* Output */ - FriBidiChar *mirrored_ch) +fribidi_get_mirror_char (FriBidiEnv *fribidienv, + /* Input */ + FriBidiChar ch, + /* Output */ + FriBidiChar *mirrored_ch) { int pos, step; boolean found; diff --git a/fribidi_tab_char_type_2.i b/fribidi_tab_char_type_2.i index eda58c4..9fb2298 100644 --- a/fribidi_tab_char_type_2.i +++ b/fribidi_tab_char_type_2.i @@ -1,5 +1,5 @@ /* - This file was automatically created from UnicodeData.txt version 3.1.1 + This file was automatically created from UnicodeData.txt version 3.2.0 by fribidi_create_char_types */ @@ -35,15 +35,15 @@ assumed sizeof(pointer) == 4 assumed sizeof(FriBidiPropCharType) == 1 - required memory: 22528 + required memory: 23552 lookups: 2 partition shape: FriBidiPropertyBlock[2176][512] - different table entries: 1 27 + different table entries: 1 29 */ /* *INDENT-OFF* */ -static const FriBidiPropCharType FriBidiPropertyBlockLevel1[512*27] = { +static const FriBidiPropCharType FriBidiPropertyBlockLevel1[512*29] = { #define FriBidiPropertyBlockLevel1_0000 (FriBidiPropertyBlockLevel1 + 0x0) @@ -102,9 +102,9 @@ static const FriBidiPropCharType FriBidiPropertyBlockLevel1[512*27] = { NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM, NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM, NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM, - NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,LTR, + NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, - NSM,NSM,NSM,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM, LTR,LTR,LTR,LTR, ON, ON,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, ON,LTR, LTR,LTR,LTR,LTR, ON, ON,LTR, ON,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, @@ -113,7 +113,7 @@ static const FriBidiPropCharType FriBidiPropertyBlockLevel1[512*27] = { LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, - LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + LTR,LTR,LTR,LTR,LTR,LTR, ON,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, #define FriBidiPropertyBlockLevel1_0400 (FriBidiPropertyBlockLevel1 + 0x400) @@ -165,7 +165,7 @@ static const FriBidiPropCharType FriBidiPropertyBlockLevel1[512*27] = { AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, - AL, AL, AL, AL, AL, AL,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM, + AL, AL, AL, AL, AL, AL,NSM,NSM,NSM,NSM,NSM,NSM,NSM, AL,NSM,NSM, NSM,NSM,NSM,NSM,NSM, AL, AL,NSM,NSM, ON,NSM,NSM,NSM,NSM, AL, AL, EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, BN, @@ -414,13 +414,13 @@ static const FriBidiPropCharType FriBidiPropertyBlockLevel1[512*27] = { LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + LTR,LTR,NSM,NSM,NSM,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + LTR,LTR,NSM,NSM,NSM,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + LTR,LTR,NSM,NSM,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, - LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, - LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, - LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, - LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + LTR,LTR,NSM,NSM,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, @@ -432,7 +432,7 @@ static const FriBidiPropCharType FriBidiPropertyBlockLevel1[512*27] = { #define FriBidiPropertyBlockLevel1_1800 (FriBidiPropertyBlockLevel1 + 0x1600) - ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, BN, BN, BN, BN,LTR, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,NSM,NSM,NSM, BN,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, @@ -506,23 +506,23 @@ static const FriBidiPropCharType FriBidiPropertyBlockLevel1[512*27] = { ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, WS, BS,LRE,RLE,PDF,LRO,RLO, WS, ET, ET, ET, ET, ET, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, - ON, ON, ON, ON, ON, ON, ON,LTR, ON, ON, ON, ON, ON, ON,LTR,LTR, - LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, - LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, BN, BN, BN, BN, BN, BN, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON,LTR,LTR,LTR,LTR, ON,LTR,LTR,LTR,LTR,LTR,LTR,LTR, WS, + BN, BN, BN, BN,LTR,LTR,LTR,LTR,LTR,LTR, BN, BN, BN, BN, BN, BN, EN,LTR,LTR,LTR, EN, EN, EN, EN, EN, EN, ET, ET, ON, ON, ON,LTR, EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, ET, ET, ON, ON, ON,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, ET, ET, ET, ET, ET, ET, ET, ET, ET, ET, ET, ET, ET, ET, ET, ET, - LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + ET, ET,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM, - NSM,NSM,NSM,NSM,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, ON, ON,LTR, ON, ON, ON, ON,LTR, ON, ON,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR, ON,LTR, ON, ON, ON,LTR,LTR,LTR,LTR,LTR, ON, ON, ON, ON, ON, ON,LTR, ON,LTR, ON,LTR, ON,LTR,LTR,LTR,LTR, ET,LTR, LTR,LTR, ON,LTR,LTR,LTR,LTR,LTR,LTR,LTR, ON,LTR,LTR,LTR,LTR,LTR, - LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + ON, ON, ON, ON, ON,LTR,LTR,LTR,LTR,LTR, ON, ON,LTR,LTR,LTR,LTR, LTR,LTR,LTR, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, @@ -533,7 +533,7 @@ static const FriBidiPropCharType FriBidiPropertyBlockLevel1[512*27] = { ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, - ON, ON, ON, ON,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, #define FriBidiPropertyBlockLevel1_2200 (FriBidiPropertyBlockLevel1 + 0x1C00) @@ -552,7 +552,7 @@ static const FriBidiPropCharType FriBidiPropertyBlockLevel1[512*27] = { ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, - ON, ON,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, @@ -560,12 +560,12 @@ static const FriBidiPropCharType FriBidiPropertyBlockLevel1[512*27] = { LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, - LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, ON,LTR, ON, ON, ON, + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, - ON, ON, ON, ON, ON,LTR, ON, ON, ON, ON, ON,LTR,LTR,LTR,LTR,LTR, - LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, - LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, - LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + ON, ON, ON, ON, ON,LTR, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, @@ -586,8 +586,10 @@ static const FriBidiPropCharType FriBidiPropertyBlockLevel1[512*27] = { LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, - LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, EN,LTR,LTR,LTR,LTR,LTR, - LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, EN, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,LTR, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, @@ -597,25 +599,23 @@ static const FriBidiPropCharType FriBidiPropertyBlockLevel1[512*27] = { ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, - ON, ON, ON, ON, ON, ON,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, - ON, ON, ON, ON, ON, ON, ON, ON,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, #define FriBidiPropertyBlockLevel1_2600 (FriBidiPropertyBlockLevel1 + 0x2000) ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, - ON, ON, ON, ON,LTR,LTR,LTR,LTR,LTR, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON,LTR,LTR, ON, ON,LTR, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, - ON, ON,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, - LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,LTR,LTR, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, @@ -629,16 +629,16 @@ static const FriBidiPropCharType FriBidiPropertyBlockLevel1[512*27] = { ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,LTR, ON,LTR, ON, ON, ON, ON,LTR,LTR,LTR, ON,LTR, ON, ON, ON, ON, ON, ON, ON,LTR, - LTR, ON, ON, ON, ON, ON, ON, ON,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, - LTR,LTR,LTR,LTR,LTR,LTR, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + LTR, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,LTR,LTR,LTR, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, LTR, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, - LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, - LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, - LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,LTR,LTR,LTR,LTR, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, #define FriBidiPropertyBlockLevel1_2800 (FriBidiPropertyBlockLevel1 + 0x2200) @@ -658,6 +658,41 @@ static const FriBidiPropCharType FriBidiPropertyBlockLevel1[512*27] = { ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + +#define FriBidiPropertyBlockLevel1_2A00 (FriBidiPropertyBlockLevel1 + 0x2400) + + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, @@ -675,7 +710,7 @@ static const FriBidiPropCharType FriBidiPropertyBlockLevel1[512*27] = { LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, -#define FriBidiPropertyBlockLevel1_2E00 (FriBidiPropertyBlockLevel1 + 0x2400) +#define FriBidiPropertyBlockLevel1_2E00 (FriBidiPropertyBlockLevel1 + 0x2600) LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, @@ -710,19 +745,19 @@ static const FriBidiPropCharType FriBidiPropertyBlockLevel1[512*27] = { LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,LTR,LTR,LTR,LTR, -#define FriBidiPropertyBlockLevel1_3000 (FriBidiPropertyBlockLevel1 + 0x2600) +#define FriBidiPropertyBlockLevel1_3000 (FriBidiPropertyBlockLevel1 + 0x2800) WS, ON, ON, ON, ON,LTR,LTR,LTR, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,NSM,NSM,NSM,NSM,NSM,NSM, - ON,LTR,LTR,LTR,LTR,LTR, ON, ON,LTR,LTR,LTR,LTR,LTR,LTR, ON, ON, + ON,LTR,LTR,LTR,LTR,LTR, ON, ON,LTR,LTR,LTR,LTR,LTR, ON, ON, ON, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,NSM,NSM, ON, ON,LTR,LTR,LTR, - LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + ON,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, @@ -745,21 +780,56 @@ static const FriBidiPropCharType FriBidiPropertyBlockLevel1[512*27] = { LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, -#define FriBidiPropertyBlockLevel1_A400 (FriBidiPropertyBlockLevel1 + 0x2800) +#define FriBidiPropertyBlockLevel1_3200 (FriBidiPropertyBlockLevel1 + 0x2A00) LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + LTR, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + LTR, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + +#define FriBidiPropertyBlockLevel1_A400 (FriBidiPropertyBlockLevel1 + 0x2C00) + + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, - ON, ON,LTR,LTR, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, - ON, ON, ON, ON,LTR, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, - ON,LTR, ON, ON, ON,LTR, ON,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, @@ -780,7 +850,7 @@ static const FriBidiPropCharType FriBidiPropertyBlockLevel1[512*27] = { LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, -#define FriBidiPropertyBlockLevel1_FA00 (FriBidiPropertyBlockLevel1 + 0x2A00) +#define FriBidiPropertyBlockLevel1_FA00 (FriBidiPropertyBlockLevel1 + 0x2E00) LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, @@ -815,7 +885,7 @@ static const FriBidiPropCharType FriBidiPropertyBlockLevel1[512*27] = { AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, -#define FriBidiPropertyBlockLevel1_FC00 (FriBidiPropertyBlockLevel1 + 0x2C00) +#define FriBidiPropertyBlockLevel1_FC00 (FriBidiPropertyBlockLevel1 + 0x3000) AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, @@ -850,13 +920,13 @@ static const FriBidiPropCharType FriBidiPropertyBlockLevel1[512*27] = { AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, -#define FriBidiPropertyBlockLevel1_FE00 (FriBidiPropertyBlockLevel1 + 0x2E00) +#define FriBidiPropertyBlockLevel1_FE00 (FriBidiPropertyBlockLevel1 + 0x3200) - LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, NSM,NSM,NSM,NSM,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, - ON, ON, ON, ON, ON,LTR,LTR,LTR,LTR, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON,LTR,LTR, ON, ON, ON, ON, ON, ON, ON, CS, ON, CS,LTR, ON, CS, ON, ON, ON, ON, ON, ON, ON, ON, ON, ET, ON, ON, ET, ET, ON, ON, ON,LTR, ON, ET, ET, ON,LTR,LTR,LTR,LTR, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, @@ -873,8 +943,8 @@ static const FriBidiPropCharType FriBidiPropertyBlockLevel1[512*27] = { ON,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, ON, ON, ON, ON, ON, ON,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, - LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, ON, ON, ON, ON,LTR, - LTR, ON, ON, ON, ON, ON,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, @@ -885,7 +955,7 @@ static const FriBidiPropCharType FriBidiPropertyBlockLevel1[512*27] = { ET, ET, ON, ON, ON, ET, ET,LTR, ON, ON, ON, ON, ON, ON, ON,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, BN, BN, BN, ON, ON,LTR,LTR, -#define FriBidiPropertyBlockLevel1_1D000 (FriBidiPropertyBlockLevel1 + 0x3000) +#define FriBidiPropertyBlockLevel1_1D000 (FriBidiPropertyBlockLevel1 + 0x3400) LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, @@ -920,7 +990,7 @@ static const FriBidiPropCharType FriBidiPropertyBlockLevel1[512*27] = { LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, -#define FriBidiPropertyBlockLevel1_1D600 (FriBidiPropertyBlockLevel1 + 0x3200) +#define FriBidiPropertyBlockLevel1_1D600 (FriBidiPropertyBlockLevel1 + 0x3600) LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, @@ -955,7 +1025,7 @@ static const FriBidiPropCharType FriBidiPropertyBlockLevel1[512*27] = { EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, -#define FriBidiPropertyBlockLevel1_E0000 (FriBidiPropertyBlockLevel1 + 0x3400) +#define FriBidiPropertyBlockLevel1_E0000 (FriBidiPropertyBlockLevel1 + 0x3800) LTR, BN,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, @@ -1016,11 +1086,11 @@ static const FriBidiPropCharType *FriBidiPropertyBlockLevel0[2176*1] = { FriBidiPropertyBlockLevel1_2400, /* 2400..25FF */ FriBidiPropertyBlockLevel1_2600, /* 2600..27FF */ FriBidiPropertyBlockLevel1_2800, /* 2800..29FF */ - FriBidiPropertyBlockLevel1_1200, /* 2A00..2BFF */ + FriBidiPropertyBlockLevel1_2A00, /* 2A00..2BFF */ FriBidiPropertyBlockLevel1_1200, /* 2C00..2DFF */ FriBidiPropertyBlockLevel1_2E00, /* 2E00..2FFF */ FriBidiPropertyBlockLevel1_3000, /* 3000..31FF */ - FriBidiPropertyBlockLevel1_1200, /* 3200..33FF */ + FriBidiPropertyBlockLevel1_3200, /* 3200..33FF */ FriBidiPropertyBlockLevel1_1200, /* 3400..35FF */ FriBidiPropertyBlockLevel1_1200, /* 3600..37FF */ FriBidiPropertyBlockLevel1_1200, /* 3800..39FF */ diff --git a/fribidi_tab_char_type_9.i b/fribidi_tab_char_type_9.i index 0e24c8c..92a2569 100644 --- a/fribidi_tab_char_type_9.i +++ b/fribidi_tab_char_type_9.i @@ -1,5 +1,5 @@ /* - This file was automatically created from UnicodeData.txt version 3.1.1 + This file was automatically created from UnicodeData.txt version 3.2.0 by fribidi_create_char_types */ @@ -35,15 +35,15 @@ assumed sizeof(pointer) == 4 assumed sizeof(FriBidiPropCharType) == 1 - required memory: 5100 + required memory: 5244 lookups: 9 partition shape: FriBidiPropertyBlock[17][4][2][4][4][4][4][4][8] - different table entries: 1 4 6 7 12 27 63 127 143 + different table entries: 1 4 6 7 12 29 65 131 145 */ /* *INDENT-OFF* */ -static const FriBidiPropCharType FriBidiPropertyBlockLevel8[8*143] = { +static const FriBidiPropCharType FriBidiPropertyBlockLevel8[8*145] = { #define FriBidiPropertyBlockLevel8_0000 (FriBidiPropertyBlockLevel8 + 0x0) @@ -137,218 +137,218 @@ static const FriBidiPropCharType FriBidiPropertyBlockLevel8[8*143] = { NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM, -#define FriBidiPropertyBlockLevel8_0348 (FriBidiPropertyBlockLevel8 + 0xB8) - - NSM,NSM,NSM,NSM,NSM,NSM,NSM,LTR, - -#define FriBidiPropertyBlockLevel8_0360 (FriBidiPropertyBlockLevel8 + 0xC0) - - NSM,NSM,NSM,LTR,LTR,LTR,LTR,LTR, - -#define FriBidiPropertyBlockLevel8_0370 (FriBidiPropertyBlockLevel8 + 0xC8) +#define FriBidiPropertyBlockLevel8_0370 (FriBidiPropertyBlockLevel8 + 0xB8) LTR,LTR,LTR,LTR, ON, ON,LTR,LTR, -#define FriBidiPropertyBlockLevel8_0378 (FriBidiPropertyBlockLevel8 + 0xD0) +#define FriBidiPropertyBlockLevel8_0378 (FriBidiPropertyBlockLevel8 + 0xC0) LTR,LTR,LTR,LTR,LTR,LTR, ON,LTR, -#define FriBidiPropertyBlockLevel8_0380 (FriBidiPropertyBlockLevel8 + 0xD8) +#define FriBidiPropertyBlockLevel8_0380 (FriBidiPropertyBlockLevel8 + 0xC8) LTR,LTR,LTR,LTR, ON, ON,LTR, ON, -#define FriBidiPropertyBlockLevel8_0480 (FriBidiPropertyBlockLevel8 + 0xE0) +#define FriBidiPropertyBlockLevel8_0480 (FriBidiPropertyBlockLevel8 + 0xD0) LTR,LTR,LTR,NSM,NSM,NSM,NSM,LTR, -#define FriBidiPropertyBlockLevel8_0488 (FriBidiPropertyBlockLevel8 + 0xE8) +#define FriBidiPropertyBlockLevel8_0488 (FriBidiPropertyBlockLevel8 + 0xD8) NSM,NSM,LTR,LTR,LTR,LTR,LTR,LTR, -#define FriBidiPropertyBlockLevel8_0588 (FriBidiPropertyBlockLevel8 + 0xF0) +#define FriBidiPropertyBlockLevel8_0588 (FriBidiPropertyBlockLevel8 + 0xE0) LTR,LTR, ON,LTR,LTR,LTR,LTR,LTR, -#define FriBidiPropertyBlockLevel8_0590 (FriBidiPropertyBlockLevel8 + 0xF8) +#define FriBidiPropertyBlockLevel8_0590 (FriBidiPropertyBlockLevel8 + 0xE8) RTL,NSM,NSM,NSM,NSM,NSM,NSM,NSM, -#define FriBidiPropertyBlockLevel8_05A0 (FriBidiPropertyBlockLevel8 + 0x100) +#define FriBidiPropertyBlockLevel8_05A0 (FriBidiPropertyBlockLevel8 + 0xF0) NSM,NSM,RTL,NSM,NSM,NSM,NSM,NSM, -#define FriBidiPropertyBlockLevel8_05B8 (FriBidiPropertyBlockLevel8 + 0x108) +#define FriBidiPropertyBlockLevel8_05B8 (FriBidiPropertyBlockLevel8 + 0xF8) NSM,NSM,RTL,NSM,NSM,NSM,RTL,NSM, -#define FriBidiPropertyBlockLevel8_05C0 (FriBidiPropertyBlockLevel8 + 0x110) +#define FriBidiPropertyBlockLevel8_05C0 (FriBidiPropertyBlockLevel8 + 0x100) RTL,NSM,NSM,RTL,NSM,RTL,RTL,RTL, -#define FriBidiPropertyBlockLevel8_05C8 (FriBidiPropertyBlockLevel8 + 0x118) +#define FriBidiPropertyBlockLevel8_05C8 (FriBidiPropertyBlockLevel8 + 0x108) RTL,RTL,RTL,RTL,RTL,RTL,RTL,RTL, -#define FriBidiPropertyBlockLevel8_0600 (FriBidiPropertyBlockLevel8 + 0x120) +#define FriBidiPropertyBlockLevel8_0600 (FriBidiPropertyBlockLevel8 + 0x110) AL, AL, AL, AL, AL, AL, AL, AL, -#define FriBidiPropertyBlockLevel8_0608 (FriBidiPropertyBlockLevel8 + 0x128) +#define FriBidiPropertyBlockLevel8_0608 (FriBidiPropertyBlockLevel8 + 0x118) AL, AL, AL, AL, CS, AL, AL, AL, -#define FriBidiPropertyBlockLevel8_0648 (FriBidiPropertyBlockLevel8 + 0x130) +#define FriBidiPropertyBlockLevel8_0648 (FriBidiPropertyBlockLevel8 + 0x120) AL, AL, AL,NSM,NSM,NSM,NSM,NSM, -#define FriBidiPropertyBlockLevel8_0650 (FriBidiPropertyBlockLevel8 + 0x138) +#define FriBidiPropertyBlockLevel8_0650 (FriBidiPropertyBlockLevel8 + 0x128) NSM,NSM,NSM,NSM,NSM,NSM, AL, AL, -#define FriBidiPropertyBlockLevel8_0660 (FriBidiPropertyBlockLevel8 + 0x140) +#define FriBidiPropertyBlockLevel8_0660 (FriBidiPropertyBlockLevel8 + 0x130) AN, AN, AN, AN, AN, AN, AN, AN, -#define FriBidiPropertyBlockLevel8_0668 (FriBidiPropertyBlockLevel8 + 0x148) +#define FriBidiPropertyBlockLevel8_0668 (FriBidiPropertyBlockLevel8 + 0x138) AN, AN, ET, AN, AN, AL, AL, AL, -#define FriBidiPropertyBlockLevel8_0670 (FriBidiPropertyBlockLevel8 + 0x150) +#define FriBidiPropertyBlockLevel8_0670 (FriBidiPropertyBlockLevel8 + 0x140) NSM, AL, AL, AL, AL, AL, AL, AL, -#define FriBidiPropertyBlockLevel8_06D0 (FriBidiPropertyBlockLevel8 + 0x158) +#define FriBidiPropertyBlockLevel8_06D0 (FriBidiPropertyBlockLevel8 + 0x148) AL, AL, AL, AL, AL, AL,NSM,NSM, -#define FriBidiPropertyBlockLevel8_06E0 (FriBidiPropertyBlockLevel8 + 0x160) +#define FriBidiPropertyBlockLevel8_06D8 (FriBidiPropertyBlockLevel8 + 0x150) + + NSM,NSM,NSM,NSM,NSM, AL,NSM,NSM, + +#define FriBidiPropertyBlockLevel8_06E0 (FriBidiPropertyBlockLevel8 + 0x158) NSM,NSM,NSM,NSM,NSM, AL, AL,NSM, -#define FriBidiPropertyBlockLevel8_06E8 (FriBidiPropertyBlockLevel8 + 0x168) +#define FriBidiPropertyBlockLevel8_06E8 (FriBidiPropertyBlockLevel8 + 0x160) NSM, ON,NSM,NSM,NSM,NSM, AL, AL, -#define FriBidiPropertyBlockLevel8_06F8 (FriBidiPropertyBlockLevel8 + 0x170) +#define FriBidiPropertyBlockLevel8_06F8 (FriBidiPropertyBlockLevel8 + 0x168) EN, EN, AL, AL, AL, AL, AL, AL, -#define FriBidiPropertyBlockLevel8_0708 (FriBidiPropertyBlockLevel8 + 0x178) +#define FriBidiPropertyBlockLevel8_0708 (FriBidiPropertyBlockLevel8 + 0x170) AL, AL, AL, AL, AL, AL, AL, BN, -#define FriBidiPropertyBlockLevel8_0710 (FriBidiPropertyBlockLevel8 + 0x180) +#define FriBidiPropertyBlockLevel8_0710 (FriBidiPropertyBlockLevel8 + 0x178) AL,NSM, AL, AL, AL, AL, AL, AL, -#define FriBidiPropertyBlockLevel8_0748 (FriBidiPropertyBlockLevel8 + 0x188) +#define FriBidiPropertyBlockLevel8_0748 (FriBidiPropertyBlockLevel8 + 0x180) NSM,NSM,NSM, AL, AL, AL, AL, AL, -#define FriBidiPropertyBlockLevel8_0900 (FriBidiPropertyBlockLevel8 + 0x190) +#define FriBidiPropertyBlockLevel8_0900 (FriBidiPropertyBlockLevel8 + 0x188) LTR,NSM,NSM,LTR,LTR,LTR,LTR,LTR, -#define FriBidiPropertyBlockLevel8_0938 (FriBidiPropertyBlockLevel8 + 0x198) +#define FriBidiPropertyBlockLevel8_0938 (FriBidiPropertyBlockLevel8 + 0x190) LTR,LTR,LTR,LTR,NSM,LTR,LTR,LTR, -#define FriBidiPropertyBlockLevel8_0940 (FriBidiPropertyBlockLevel8 + 0x1A0) +#define FriBidiPropertyBlockLevel8_0940 (FriBidiPropertyBlockLevel8 + 0x198) LTR,NSM,NSM,NSM,NSM,NSM,NSM,NSM, -#define FriBidiPropertyBlockLevel8_0948 (FriBidiPropertyBlockLevel8 + 0x1A8) +#define FriBidiPropertyBlockLevel8_0948 (FriBidiPropertyBlockLevel8 + 0x1A0) NSM,LTR,LTR,LTR,LTR,NSM,LTR,LTR, -#define FriBidiPropertyBlockLevel8_0950 (FriBidiPropertyBlockLevel8 + 0x1B0) +#define FriBidiPropertyBlockLevel8_0950 (FriBidiPropertyBlockLevel8 + 0x1A8) LTR,NSM,NSM,NSM,NSM,LTR,LTR,LTR, -#define FriBidiPropertyBlockLevel8_0960 (FriBidiPropertyBlockLevel8 + 0x1B8) +#define FriBidiPropertyBlockLevel8_0960 (FriBidiPropertyBlockLevel8 + 0x1B0) LTR,LTR,NSM,NSM,LTR,LTR,LTR,LTR, -#define FriBidiPropertyBlockLevel8_0980 (FriBidiPropertyBlockLevel8 + 0x1C0) +#define FriBidiPropertyBlockLevel8_0980 (FriBidiPropertyBlockLevel8 + 0x1B8) LTR,NSM,LTR,LTR,LTR,LTR,LTR,LTR, -#define FriBidiPropertyBlockLevel8_09C8 (FriBidiPropertyBlockLevel8 + 0x1C8) +#define FriBidiPropertyBlockLevel8_09C8 (FriBidiPropertyBlockLevel8 + 0x1C0) LTR,LTR,LTR,LTR,LTR,NSM,LTR,LTR, -#define FriBidiPropertyBlockLevel8_09F0 (FriBidiPropertyBlockLevel8 + 0x1D0) +#define FriBidiPropertyBlockLevel8_09F0 (FriBidiPropertyBlockLevel8 + 0x1C8) LTR,LTR, ET, ET,LTR,LTR,LTR,LTR, -#define FriBidiPropertyBlockLevel8_0A00 (FriBidiPropertyBlockLevel8 + 0x1D8) +#define FriBidiPropertyBlockLevel8_0A00 (FriBidiPropertyBlockLevel8 + 0x1D0) LTR,LTR,NSM,LTR,LTR,LTR,LTR,LTR, -#define FriBidiPropertyBlockLevel8_0A40 (FriBidiPropertyBlockLevel8 + 0x1E0) +#define FriBidiPropertyBlockLevel8_0A40 (FriBidiPropertyBlockLevel8 + 0x1D8) LTR,NSM,NSM,LTR,LTR,LTR,LTR,NSM, -#define FriBidiPropertyBlockLevel8_0A48 (FriBidiPropertyBlockLevel8 + 0x1E8) +#define FriBidiPropertyBlockLevel8_0A48 (FriBidiPropertyBlockLevel8 + 0x1E0) NSM,LTR,LTR,NSM,NSM,NSM,LTR,LTR, -#define FriBidiPropertyBlockLevel8_0AC0 (FriBidiPropertyBlockLevel8 + 0x1F0) +#define FriBidiPropertyBlockLevel8_0AC0 (FriBidiPropertyBlockLevel8 + 0x1E8) LTR,NSM,NSM,NSM,NSM,NSM,LTR,NSM, -#define FriBidiPropertyBlockLevel8_0B38 (FriBidiPropertyBlockLevel8 + 0x1F8) +#define FriBidiPropertyBlockLevel8_0B38 (FriBidiPropertyBlockLevel8 + 0x1F0) LTR,LTR,LTR,LTR,NSM,LTR,LTR,NSM, -#define FriBidiPropertyBlockLevel8_0B40 (FriBidiPropertyBlockLevel8 + 0x200) +#define FriBidiPropertyBlockLevel8_0B40 (FriBidiPropertyBlockLevel8 + 0x1F8) LTR,NSM,NSM,NSM,LTR,LTR,LTR,LTR, -#define FriBidiPropertyBlockLevel8_0B50 (FriBidiPropertyBlockLevel8 + 0x208) +#define FriBidiPropertyBlockLevel8_0B50 (FriBidiPropertyBlockLevel8 + 0x200) LTR,LTR,LTR,LTR,LTR,LTR,NSM,LTR, -#define FriBidiPropertyBlockLevel8_0BC0 (FriBidiPropertyBlockLevel8 + 0x210) +#define FriBidiPropertyBlockLevel8_0BC0 (FriBidiPropertyBlockLevel8 + 0x208) NSM,LTR,LTR,LTR,LTR,LTR,LTR,LTR, -#define FriBidiPropertyBlockLevel8_0C38 (FriBidiPropertyBlockLevel8 + 0x218) +#define FriBidiPropertyBlockLevel8_0C38 (FriBidiPropertyBlockLevel8 + 0x210) LTR,LTR,LTR,LTR,LTR,LTR,NSM,NSM, -#define FriBidiPropertyBlockLevel8_0C40 (FriBidiPropertyBlockLevel8 + 0x220) +#define FriBidiPropertyBlockLevel8_0C40 (FriBidiPropertyBlockLevel8 + 0x218) NSM,LTR,LTR,LTR,LTR,LTR,NSM,NSM, -#define FriBidiPropertyBlockLevel8_0C48 (FriBidiPropertyBlockLevel8 + 0x228) +#define FriBidiPropertyBlockLevel8_0C48 (FriBidiPropertyBlockLevel8 + 0x220) NSM,LTR,NSM,NSM,NSM,NSM,LTR,LTR, -#define FriBidiPropertyBlockLevel8_0C50 (FriBidiPropertyBlockLevel8 + 0x230) +#define FriBidiPropertyBlockLevel8_0C50 (FriBidiPropertyBlockLevel8 + 0x228) LTR,LTR,LTR,LTR,LTR,NSM,NSM,LTR, -#define FriBidiPropertyBlockLevel8_0CB8 (FriBidiPropertyBlockLevel8 + 0x238) +#define FriBidiPropertyBlockLevel8_0CB8 (FriBidiPropertyBlockLevel8 + 0x230) LTR,LTR,LTR,LTR,LTR,LTR,LTR,NSM, -#define FriBidiPropertyBlockLevel8_0CC8 (FriBidiPropertyBlockLevel8 + 0x240) +#define FriBidiPropertyBlockLevel8_0CC8 (FriBidiPropertyBlockLevel8 + 0x238) LTR,LTR,LTR,LTR,NSM,NSM,LTR,LTR, -#define FriBidiPropertyBlockLevel8_0DD0 (FriBidiPropertyBlockLevel8 + 0x248) +#define FriBidiPropertyBlockLevel8_0DD0 (FriBidiPropertyBlockLevel8 + 0x240) LTR,LTR,NSM,NSM,NSM,LTR,NSM,LTR, -#define FriBidiPropertyBlockLevel8_0E30 (FriBidiPropertyBlockLevel8 + 0x250) +#define FriBidiPropertyBlockLevel8_0E30 (FriBidiPropertyBlockLevel8 + 0x248) LTR,NSM,LTR,LTR,NSM,NSM,NSM,NSM, -#define FriBidiPropertyBlockLevel8_0E38 (FriBidiPropertyBlockLevel8 + 0x258) +#define FriBidiPropertyBlockLevel8_0E38 (FriBidiPropertyBlockLevel8 + 0x250) NSM,NSM,NSM,LTR,LTR,LTR,LTR, ET, +#define FriBidiPropertyBlockLevel8_0E48 (FriBidiPropertyBlockLevel8 + 0x258) + + NSM,NSM,NSM,NSM,NSM,NSM,NSM,LTR, + #define FriBidiPropertyBlockLevel8_0EB8 (FriBidiPropertyBlockLevel8 + 0x260) NSM,NSM,LTR,NSM,NSM,LTR,LTR,LTR, @@ -389,236 +389,244 @@ static const FriBidiPropCharType FriBidiPropertyBlockLevel8[8*143] = { LTR,LTR,LTR, ON, ON,LTR,LTR,LTR, -#define FriBidiPropertyBlockLevel8_17D0 (FriBidiPropertyBlockLevel8 + 0x2B0) +#define FriBidiPropertyBlockLevel8_1710 (FriBidiPropertyBlockLevel8 + 0x2B0) + + LTR,LTR,NSM,NSM,NSM,LTR,LTR,LTR, + +#define FriBidiPropertyBlockLevel8_17D0 (FriBidiPropertyBlockLevel8 + 0x2B8) NSM,NSM,NSM,NSM,LTR,LTR,LTR,LTR, -#define FriBidiPropertyBlockLevel8_17D8 (FriBidiPropertyBlockLevel8 + 0x2B8) +#define FriBidiPropertyBlockLevel8_17D8 (FriBidiPropertyBlockLevel8 + 0x2C0) LTR,LTR,LTR, ET,LTR,LTR,LTR,LTR, -#define FriBidiPropertyBlockLevel8_1808 (FriBidiPropertyBlockLevel8 + 0x2C0) +#define FriBidiPropertyBlockLevel8_1808 (FriBidiPropertyBlockLevel8 + 0x2C8) - ON, ON, ON, BN, BN, BN, BN,LTR, + ON, ON, ON,NSM,NSM,NSM, BN,LTR, -#define FriBidiPropertyBlockLevel8_1FB8 (FriBidiPropertyBlockLevel8 + 0x2C8) +#define FriBidiPropertyBlockLevel8_1FB8 (FriBidiPropertyBlockLevel8 + 0x2D0) LTR,LTR,LTR,LTR,LTR, ON,LTR, ON, -#define FriBidiPropertyBlockLevel8_1FC0 (FriBidiPropertyBlockLevel8 + 0x2D0) +#define FriBidiPropertyBlockLevel8_1FC0 (FriBidiPropertyBlockLevel8 + 0x2D8) ON, ON,LTR,LTR,LTR,LTR,LTR,LTR, -#define FriBidiPropertyBlockLevel8_1FF8 (FriBidiPropertyBlockLevel8 + 0x2D8) +#define FriBidiPropertyBlockLevel8_1FF8 (FriBidiPropertyBlockLevel8 + 0x2E0) LTR,LTR,LTR,LTR,LTR, ON, ON,LTR, -#define FriBidiPropertyBlockLevel8_2000 (FriBidiPropertyBlockLevel8 + 0x2E0) +#define FriBidiPropertyBlockLevel8_2000 (FriBidiPropertyBlockLevel8 + 0x2E8) WS, WS, WS, WS, WS, WS, WS, WS, -#define FriBidiPropertyBlockLevel8_2008 (FriBidiPropertyBlockLevel8 + 0x2E8) +#define FriBidiPropertyBlockLevel8_2008 (FriBidiPropertyBlockLevel8 + 0x2F0) WS, WS, WS, BN, BN, BN,LTR,RTL, -#define FriBidiPropertyBlockLevel8_2028 (FriBidiPropertyBlockLevel8 + 0x2F0) +#define FriBidiPropertyBlockLevel8_2028 (FriBidiPropertyBlockLevel8 + 0x2F8) WS, BS,LRE,RLE,PDF,LRO,RLO, WS, -#define FriBidiPropertyBlockLevel8_2030 (FriBidiPropertyBlockLevel8 + 0x2F8) +#define FriBidiPropertyBlockLevel8_2030 (FriBidiPropertyBlockLevel8 + 0x300) ET, ET, ET, ET, ET, ON, ON, ON, -#define FriBidiPropertyBlockLevel8_2040 (FriBidiPropertyBlockLevel8 + 0x300) +#define FriBidiPropertyBlockLevel8_2050 (FriBidiPropertyBlockLevel8 + 0x308) - ON, ON, ON, ON, ON, ON, ON,LTR, + ON, ON, ON,LTR,LTR,LTR,LTR, ON, + +#define FriBidiPropertyBlockLevel8_2058 (FriBidiPropertyBlockLevel8 + 0x310) + + LTR,LTR,LTR,LTR,LTR,LTR,LTR, WS, + +#define FriBidiPropertyBlockLevel8_2060 (FriBidiPropertyBlockLevel8 + 0x318) -#define FriBidiPropertyBlockLevel8_2068 (FriBidiPropertyBlockLevel8 + 0x308) + BN, BN, BN, BN,LTR,LTR,LTR,LTR, + +#define FriBidiPropertyBlockLevel8_2068 (FriBidiPropertyBlockLevel8 + 0x320) LTR,LTR, BN, BN, BN, BN, BN, BN, -#define FriBidiPropertyBlockLevel8_2070 (FriBidiPropertyBlockLevel8 + 0x310) +#define FriBidiPropertyBlockLevel8_2070 (FriBidiPropertyBlockLevel8 + 0x328) EN,LTR,LTR,LTR, EN, EN, EN, EN, -#define FriBidiPropertyBlockLevel8_2078 (FriBidiPropertyBlockLevel8 + 0x318) +#define FriBidiPropertyBlockLevel8_2078 (FriBidiPropertyBlockLevel8 + 0x330) EN, EN, ET, ET, ON, ON, ON,LTR, -#define FriBidiPropertyBlockLevel8_20A0 (FriBidiPropertyBlockLevel8 + 0x320) +#define FriBidiPropertyBlockLevel8_20A0 (FriBidiPropertyBlockLevel8 + 0x338) ET, ET, ET, ET, ET, ET, ET, ET, -#define FriBidiPropertyBlockLevel8_2100 (FriBidiPropertyBlockLevel8 + 0x328) +#define FriBidiPropertyBlockLevel8_20B0 (FriBidiPropertyBlockLevel8 + 0x340) + + ET, ET,LTR,LTR,LTR,LTR,LTR,LTR, + +#define FriBidiPropertyBlockLevel8_20E8 (FriBidiPropertyBlockLevel8 + 0x348) + + NSM,NSM,NSM,LTR,LTR,LTR,LTR,LTR, + +#define FriBidiPropertyBlockLevel8_2100 (FriBidiPropertyBlockLevel8 + 0x350) ON, ON,LTR, ON, ON, ON, ON,LTR, -#define FriBidiPropertyBlockLevel8_2110 (FriBidiPropertyBlockLevel8 + 0x330) +#define FriBidiPropertyBlockLevel8_2110 (FriBidiPropertyBlockLevel8 + 0x358) LTR,LTR,LTR,LTR, ON,LTR, ON, ON, -#define FriBidiPropertyBlockLevel8_2118 (FriBidiPropertyBlockLevel8 + 0x338) +#define FriBidiPropertyBlockLevel8_2118 (FriBidiPropertyBlockLevel8 + 0x360) ON,LTR,LTR,LTR,LTR,LTR, ON, ON, -#define FriBidiPropertyBlockLevel8_2120 (FriBidiPropertyBlockLevel8 + 0x340) +#define FriBidiPropertyBlockLevel8_2120 (FriBidiPropertyBlockLevel8 + 0x368) ON, ON, ON, ON,LTR, ON,LTR, ON, -#define FriBidiPropertyBlockLevel8_2128 (FriBidiPropertyBlockLevel8 + 0x348) +#define FriBidiPropertyBlockLevel8_2128 (FriBidiPropertyBlockLevel8 + 0x370) LTR, ON,LTR,LTR,LTR,LTR, ET,LTR, -#define FriBidiPropertyBlockLevel8_21F0 (FriBidiPropertyBlockLevel8 + 0x350) +#define FriBidiPropertyBlockLevel8_2140 (FriBidiPropertyBlockLevel8 + 0x378) - ON, ON, ON, ON,LTR,LTR,LTR,LTR, + ON, ON, ON, ON, ON,LTR,LTR,LTR, -#define FriBidiPropertyBlockLevel8_2210 (FriBidiPropertyBlockLevel8 + 0x358) +#define FriBidiPropertyBlockLevel8_2148 (FriBidiPropertyBlockLevel8 + 0x380) - ON, ON, ET, ET, ON, ON, ON, ON, + LTR,LTR, ON, ON,LTR,LTR,LTR,LTR, -#define FriBidiPropertyBlockLevel8_2378 (FriBidiPropertyBlockLevel8 + 0x360) +#define FriBidiPropertyBlockLevel8_2210 (FriBidiPropertyBlockLevel8 + 0x388) - LTR,LTR,LTR, ON,LTR, ON, ON, ON, + ON, ON, ET, ET, ON, ON, ON, ON, -#define FriBidiPropertyBlockLevel8_2390 (FriBidiPropertyBlockLevel8 + 0x368) +#define FriBidiPropertyBlockLevel8_2390 (FriBidiPropertyBlockLevel8 + 0x390) ON, ON, ON, ON, ON,LTR, ON, ON, -#define FriBidiPropertyBlockLevel8_2398 (FriBidiPropertyBlockLevel8 + 0x370) +#define FriBidiPropertyBlockLevel8_23C8 (FriBidiPropertyBlockLevel8 + 0x398) + + ON, ON, ON, ON, ON, ON, ON,LTR, + +#define FriBidiPropertyBlockLevel8_2448 (FriBidiPropertyBlockLevel8 + 0x3A0) ON, ON, ON,LTR,LTR,LTR,LTR,LTR, -#define FriBidiPropertyBlockLevel8_2498 (FriBidiPropertyBlockLevel8 + 0x378) +#define FriBidiPropertyBlockLevel8_2498 (FriBidiPropertyBlockLevel8 + 0x3A8) EN, EN, EN, EN,LTR,LTR,LTR,LTR, -#define FriBidiPropertyBlockLevel8_24E8 (FriBidiPropertyBlockLevel8 + 0x380) +#define FriBidiPropertyBlockLevel8_24E8 (FriBidiPropertyBlockLevel8 + 0x3B0) + + LTR,LTR, EN, ON, ON, ON, ON, ON, - LTR,LTR, EN,LTR,LTR,LTR,LTR,LTR, +#define FriBidiPropertyBlockLevel8_2610 (FriBidiPropertyBlockLevel8 + 0x3B8) -#define FriBidiPropertyBlockLevel8_2618 (FriBidiPropertyBlockLevel8 + 0x388) + ON, ON, ON, ON,LTR,LTR, ON, ON, + +#define FriBidiPropertyBlockLevel8_2618 (FriBidiPropertyBlockLevel8 + 0x3C0) LTR, ON, ON, ON, ON, ON, ON, ON, -#define FriBidiPropertyBlockLevel8_2700 (FriBidiPropertyBlockLevel8 + 0x390) +#define FriBidiPropertyBlockLevel8_2700 (FriBidiPropertyBlockLevel8 + 0x3C8) LTR, ON, ON, ON, ON,LTR, ON, ON, -#define FriBidiPropertyBlockLevel8_2708 (FriBidiPropertyBlockLevel8 + 0x398) +#define FriBidiPropertyBlockLevel8_2708 (FriBidiPropertyBlockLevel8 + 0x3D0) ON, ON,LTR,LTR, ON, ON, ON, ON, -#define FriBidiPropertyBlockLevel8_2750 (FriBidiPropertyBlockLevel8 + 0x3A0) +#define FriBidiPropertyBlockLevel8_2750 (FriBidiPropertyBlockLevel8 + 0x3D8) ON, ON, ON,LTR,LTR,LTR, ON,LTR, -#define FriBidiPropertyBlockLevel8_2770 (FriBidiPropertyBlockLevel8 + 0x3A8) - - LTR,LTR,LTR,LTR,LTR,LTR, ON, ON, +#define FriBidiPropertyBlockLevel8_27E8 (FriBidiPropertyBlockLevel8 + 0x3E0) -#define FriBidiPropertyBlockLevel8_2790 (FriBidiPropertyBlockLevel8 + 0x3B0) - - ON, ON, ON, ON, ON,LTR,LTR,LTR, + ON, ON, ON, ON,LTR,LTR,LTR,LTR, -#define FriBidiPropertyBlockLevel8_3000 (FriBidiPropertyBlockLevel8 + 0x3B8) +#define FriBidiPropertyBlockLevel8_3000 (FriBidiPropertyBlockLevel8 + 0x3E8) WS, ON, ON, ON, ON,LTR,LTR,LTR, -#define FriBidiPropertyBlockLevel8_3028 (FriBidiPropertyBlockLevel8 + 0x3C0) +#define FriBidiPropertyBlockLevel8_3028 (FriBidiPropertyBlockLevel8 + 0x3F0) LTR,LTR,NSM,NSM,NSM,NSM,NSM,NSM, -#define FriBidiPropertyBlockLevel8_3098 (FriBidiPropertyBlockLevel8 + 0x3C8) +#define FriBidiPropertyBlockLevel8_3098 (FriBidiPropertyBlockLevel8 + 0x3F8) LTR,NSM,NSM, ON, ON,LTR,LTR,LTR, -#define FriBidiPropertyBlockLevel8_30F8 (FriBidiPropertyBlockLevel8 + 0x3D0) +#define FriBidiPropertyBlockLevel8_30F8 (FriBidiPropertyBlockLevel8 + 0x400) LTR,LTR,LTR, ON,LTR,LTR,LTR,LTR, -#define FriBidiPropertyBlockLevel8_A4B0 (FriBidiPropertyBlockLevel8 + 0x3D8) - - ON, ON, ON, ON,LTR, ON, ON, ON, - -#define FriBidiPropertyBlockLevel8_A4C0 (FriBidiPropertyBlockLevel8 + 0x3E0) - - ON,LTR, ON, ON, ON,LTR, ON,LTR, - -#define FriBidiPropertyBlockLevel8_FB18 (FriBidiPropertyBlockLevel8 + 0x3E8) +#define FriBidiPropertyBlockLevel8_FB18 (FriBidiPropertyBlockLevel8 + 0x408) LTR,LTR,LTR,LTR,LTR,RTL,NSM,RTL, -#define FriBidiPropertyBlockLevel8_FB28 (FriBidiPropertyBlockLevel8 + 0x3F0) +#define FriBidiPropertyBlockLevel8_FB28 (FriBidiPropertyBlockLevel8 + 0x410) RTL, ET,RTL,RTL,RTL,RTL,RTL,RTL, -#define FriBidiPropertyBlockLevel8_FD38 (FriBidiPropertyBlockLevel8 + 0x3F8) +#define FriBidiPropertyBlockLevel8_FD38 (FriBidiPropertyBlockLevel8 + 0x418) AL, AL, AL, AL, AL, AL, ON, ON, -#define FriBidiPropertyBlockLevel8_FE50 (FriBidiPropertyBlockLevel8 + 0x400) +#define FriBidiPropertyBlockLevel8_FE50 (FriBidiPropertyBlockLevel8 + 0x420) CS, ON, CS,LTR, ON, CS, ON, ON, -#define FriBidiPropertyBlockLevel8_FE58 (FriBidiPropertyBlockLevel8 + 0x408) +#define FriBidiPropertyBlockLevel8_FE58 (FriBidiPropertyBlockLevel8 + 0x428) ON, ON, ON, ON, ON, ON, ON, ET, -#define FriBidiPropertyBlockLevel8_FE60 (FriBidiPropertyBlockLevel8 + 0x410) +#define FriBidiPropertyBlockLevel8_FE60 (FriBidiPropertyBlockLevel8 + 0x430) ON, ON, ET, ET, ON, ON, ON,LTR, -#define FriBidiPropertyBlockLevel8_FE68 (FriBidiPropertyBlockLevel8 + 0x418) +#define FriBidiPropertyBlockLevel8_FE68 (FriBidiPropertyBlockLevel8 + 0x438) ON, ET, ET, ON,LTR,LTR,LTR,LTR, -#define FriBidiPropertyBlockLevel8_FF00 (FriBidiPropertyBlockLevel8 + 0x420) +#define FriBidiPropertyBlockLevel8_FF00 (FriBidiPropertyBlockLevel8 + 0x440) LTR, ON, ON, ET, ET, ET, ON, ON, -#define FriBidiPropertyBlockLevel8_FF58 (FriBidiPropertyBlockLevel8 + 0x428) - - LTR,LTR,LTR, ON, ON, ON, ON,LTR, - -#define FriBidiPropertyBlockLevel8_FF60 (FriBidiPropertyBlockLevel8 + 0x430) - - LTR, ON, ON, ON, ON, ON,LTR,LTR, - -#define FriBidiPropertyBlockLevel8_FFE0 (FriBidiPropertyBlockLevel8 + 0x438) +#define FriBidiPropertyBlockLevel8_FFE0 (FriBidiPropertyBlockLevel8 + 0x448) ET, ET, ON, ON, ON, ET, ET,LTR, -#define FriBidiPropertyBlockLevel8_FFF8 (FriBidiPropertyBlockLevel8 + 0x440) +#define FriBidiPropertyBlockLevel8_FFF8 (FriBidiPropertyBlockLevel8 + 0x450) LTR, BN, BN, BN, ON, ON,LTR,LTR, -#define FriBidiPropertyBlockLevel8_1D170 (FriBidiPropertyBlockLevel8 + 0x448) +#define FriBidiPropertyBlockLevel8_1D170 (FriBidiPropertyBlockLevel8 + 0x458) LTR,LTR,LTR, BN, BN, BN, BN, BN, -#define FriBidiPropertyBlockLevel8_1D178 (FriBidiPropertyBlockLevel8 + 0x450) +#define FriBidiPropertyBlockLevel8_1D178 (FriBidiPropertyBlockLevel8 + 0x460) BN, BN, BN,NSM,NSM,NSM,NSM,NSM, -#define FriBidiPropertyBlockLevel8_1D180 (FriBidiPropertyBlockLevel8 + 0x458) +#define FriBidiPropertyBlockLevel8_1D180 (FriBidiPropertyBlockLevel8 + 0x468) NSM,NSM,NSM,LTR,LTR,NSM,NSM,NSM, -#define FriBidiPropertyBlockLevel8_1D1A8 (FriBidiPropertyBlockLevel8 + 0x460) +#define FriBidiPropertyBlockLevel8_1D1A8 (FriBidiPropertyBlockLevel8 + 0x470) LTR,LTR,NSM,NSM,NSM,NSM,LTR,LTR, -#define FriBidiPropertyBlockLevel8_1D7C8 (FriBidiPropertyBlockLevel8 + 0x468) +#define FriBidiPropertyBlockLevel8_1D7C8 (FriBidiPropertyBlockLevel8 + 0x478) LTR,LTR,LTR,LTR,LTR,LTR, EN, EN, -#define FriBidiPropertyBlockLevel8_E0000 (FriBidiPropertyBlockLevel8 + 0x470) +#define FriBidiPropertyBlockLevel8_E0000 (FriBidiPropertyBlockLevel8 + 0x480) LTR, BN,LTR,LTR,LTR,LTR,LTR,LTR, }; -static const FriBidiPropCharType *FriBidiPropertyBlockLevel7[4*127] = { +static const FriBidiPropCharType *FriBidiPropertyBlockLevel7[4*131] = { #define FriBidiPropertyBlockLevel7_0000 (FriBidiPropertyBlockLevel7 + 0x0) @@ -707,14 +715,14 @@ static const FriBidiPropCharType *FriBidiPropertyBlockLevel7[4*127] = { #define FriBidiPropertyBlockLevel7_0340 (FriBidiPropertyBlockLevel7 + 0x30) FriBidiPropertyBlockLevel8_0300, /* 0340..0347 */ - FriBidiPropertyBlockLevel8_0348, /* 0348..034F */ + FriBidiPropertyBlockLevel8_0300, /* 0348..034F */ FriBidiPropertyBlockLevel8_0048, /* 0350..0357 */ FriBidiPropertyBlockLevel8_0048, /* 0358..035F */ #define FriBidiPropertyBlockLevel7_0360 (FriBidiPropertyBlockLevel7 + 0x34) - FriBidiPropertyBlockLevel8_0360, /* 0360..0367 */ - FriBidiPropertyBlockLevel8_0048, /* 0368..036F */ + FriBidiPropertyBlockLevel8_0300, /* 0360..0367 */ + FriBidiPropertyBlockLevel8_0300, /* 0368..036F */ FriBidiPropertyBlockLevel8_0370, /* 0370..0377 */ FriBidiPropertyBlockLevel8_0378, /* 0378..037F */ @@ -725,784 +733,812 @@ static const FriBidiPropCharType *FriBidiPropertyBlockLevel7[4*127] = { FriBidiPropertyBlockLevel8_0048, /* 0390..0397 */ FriBidiPropertyBlockLevel8_0048, /* 0398..039F */ -#define FriBidiPropertyBlockLevel7_0480 (FriBidiPropertyBlockLevel7 + 0x3C) +#define FriBidiPropertyBlockLevel7_03E0 (FriBidiPropertyBlockLevel7 + 0x3C) + + FriBidiPropertyBlockLevel8_0048, /* 03E0..03E7 */ + FriBidiPropertyBlockLevel8_0048, /* 03E8..03EF */ + FriBidiPropertyBlockLevel8_0378, /* 03F0..03F7 */ + FriBidiPropertyBlockLevel8_0048, /* 03F8..03FF */ + +#define FriBidiPropertyBlockLevel7_0480 (FriBidiPropertyBlockLevel7 + 0x40) FriBidiPropertyBlockLevel8_0480, /* 0480..0487 */ FriBidiPropertyBlockLevel8_0488, /* 0488..048F */ FriBidiPropertyBlockLevel8_0048, /* 0490..0497 */ FriBidiPropertyBlockLevel8_0048, /* 0498..049F */ -#define FriBidiPropertyBlockLevel7_0580 (FriBidiPropertyBlockLevel7 + 0x40) +#define FriBidiPropertyBlockLevel7_0580 (FriBidiPropertyBlockLevel7 + 0x44) FriBidiPropertyBlockLevel8_0048, /* 0580..0587 */ FriBidiPropertyBlockLevel8_0588, /* 0588..058F */ FriBidiPropertyBlockLevel8_0590, /* 0590..0597 */ FriBidiPropertyBlockLevel8_0300, /* 0598..059F */ -#define FriBidiPropertyBlockLevel7_05A0 (FriBidiPropertyBlockLevel7 + 0x44) +#define FriBidiPropertyBlockLevel7_05A0 (FriBidiPropertyBlockLevel7 + 0x48) FriBidiPropertyBlockLevel8_05A0, /* 05A0..05A7 */ FriBidiPropertyBlockLevel8_0300, /* 05A8..05AF */ FriBidiPropertyBlockLevel8_0300, /* 05B0..05B7 */ FriBidiPropertyBlockLevel8_05B8, /* 05B8..05BF */ -#define FriBidiPropertyBlockLevel7_05C0 (FriBidiPropertyBlockLevel7 + 0x48) +#define FriBidiPropertyBlockLevel7_05C0 (FriBidiPropertyBlockLevel7 + 0x4C) FriBidiPropertyBlockLevel8_05C0, /* 05C0..05C7 */ FriBidiPropertyBlockLevel8_05C8, /* 05C8..05CF */ FriBidiPropertyBlockLevel8_05C8, /* 05D0..05D7 */ FriBidiPropertyBlockLevel8_05C8, /* 05D8..05DF */ -#define FriBidiPropertyBlockLevel7_05E0 (FriBidiPropertyBlockLevel7 + 0x4C) +#define FriBidiPropertyBlockLevel7_05E0 (FriBidiPropertyBlockLevel7 + 0x50) FriBidiPropertyBlockLevel8_05C8, /* 05E0..05E7 */ FriBidiPropertyBlockLevel8_05C8, /* 05E8..05EF */ FriBidiPropertyBlockLevel8_05C8, /* 05F0..05F7 */ FriBidiPropertyBlockLevel8_05C8, /* 05F8..05FF */ -#define FriBidiPropertyBlockLevel7_0600 (FriBidiPropertyBlockLevel7 + 0x50) +#define FriBidiPropertyBlockLevel7_0600 (FriBidiPropertyBlockLevel7 + 0x54) FriBidiPropertyBlockLevel8_0600, /* 0600..0607 */ FriBidiPropertyBlockLevel8_0608, /* 0608..060F */ FriBidiPropertyBlockLevel8_0600, /* 0610..0617 */ FriBidiPropertyBlockLevel8_0600, /* 0618..061F */ -#define FriBidiPropertyBlockLevel7_0620 (FriBidiPropertyBlockLevel7 + 0x54) +#define FriBidiPropertyBlockLevel7_0620 (FriBidiPropertyBlockLevel7 + 0x58) FriBidiPropertyBlockLevel8_0600, /* 0620..0627 */ FriBidiPropertyBlockLevel8_0600, /* 0628..062F */ FriBidiPropertyBlockLevel8_0600, /* 0630..0637 */ FriBidiPropertyBlockLevel8_0600, /* 0638..063F */ -#define FriBidiPropertyBlockLevel7_0640 (FriBidiPropertyBlockLevel7 + 0x58) +#define FriBidiPropertyBlockLevel7_0640 (FriBidiPropertyBlockLevel7 + 0x5C) FriBidiPropertyBlockLevel8_0600, /* 0640..0647 */ FriBidiPropertyBlockLevel8_0648, /* 0648..064F */ FriBidiPropertyBlockLevel8_0650, /* 0650..0657 */ FriBidiPropertyBlockLevel8_0600, /* 0658..065F */ -#define FriBidiPropertyBlockLevel7_0660 (FriBidiPropertyBlockLevel7 + 0x5C) +#define FriBidiPropertyBlockLevel7_0660 (FriBidiPropertyBlockLevel7 + 0x60) FriBidiPropertyBlockLevel8_0660, /* 0660..0667 */ FriBidiPropertyBlockLevel8_0668, /* 0668..066F */ FriBidiPropertyBlockLevel8_0670, /* 0670..0677 */ FriBidiPropertyBlockLevel8_0600, /* 0678..067F */ -#define FriBidiPropertyBlockLevel7_06C0 (FriBidiPropertyBlockLevel7 + 0x60) +#define FriBidiPropertyBlockLevel7_06C0 (FriBidiPropertyBlockLevel7 + 0x64) FriBidiPropertyBlockLevel8_0600, /* 06C0..06C7 */ FriBidiPropertyBlockLevel8_0600, /* 06C8..06CF */ FriBidiPropertyBlockLevel8_06D0, /* 06D0..06D7 */ - FriBidiPropertyBlockLevel8_0300, /* 06D8..06DF */ + FriBidiPropertyBlockLevel8_06D8, /* 06D8..06DF */ -#define FriBidiPropertyBlockLevel7_06E0 (FriBidiPropertyBlockLevel7 + 0x64) +#define FriBidiPropertyBlockLevel7_06E0 (FriBidiPropertyBlockLevel7 + 0x68) FriBidiPropertyBlockLevel8_06E0, /* 06E0..06E7 */ FriBidiPropertyBlockLevel8_06E8, /* 06E8..06EF */ FriBidiPropertyBlockLevel8_0030, /* 06F0..06F7 */ FriBidiPropertyBlockLevel8_06F8, /* 06F8..06FF */ -#define FriBidiPropertyBlockLevel7_0700 (FriBidiPropertyBlockLevel7 + 0x68) +#define FriBidiPropertyBlockLevel7_0700 (FriBidiPropertyBlockLevel7 + 0x6C) FriBidiPropertyBlockLevel8_0600, /* 0700..0707 */ FriBidiPropertyBlockLevel8_0708, /* 0708..070F */ FriBidiPropertyBlockLevel8_0710, /* 0710..0717 */ FriBidiPropertyBlockLevel8_0600, /* 0718..071F */ -#define FriBidiPropertyBlockLevel7_0720 (FriBidiPropertyBlockLevel7 + 0x6C) +#define FriBidiPropertyBlockLevel7_0720 (FriBidiPropertyBlockLevel7 + 0x70) FriBidiPropertyBlockLevel8_0600, /* 0720..0727 */ FriBidiPropertyBlockLevel8_0600, /* 0728..072F */ FriBidiPropertyBlockLevel8_0300, /* 0730..0737 */ FriBidiPropertyBlockLevel8_0300, /* 0738..073F */ -#define FriBidiPropertyBlockLevel7_0740 (FriBidiPropertyBlockLevel7 + 0x70) +#define FriBidiPropertyBlockLevel7_0740 (FriBidiPropertyBlockLevel7 + 0x74) FriBidiPropertyBlockLevel8_0300, /* 0740..0747 */ FriBidiPropertyBlockLevel8_0748, /* 0748..074F */ FriBidiPropertyBlockLevel8_0600, /* 0750..0757 */ FriBidiPropertyBlockLevel8_0600, /* 0758..075F */ -#define FriBidiPropertyBlockLevel7_07A0 (FriBidiPropertyBlockLevel7 + 0x74) +#define FriBidiPropertyBlockLevel7_07A0 (FriBidiPropertyBlockLevel7 + 0x78) FriBidiPropertyBlockLevel8_06D0, /* 07A0..07A7 */ FriBidiPropertyBlockLevel8_0300, /* 07A8..07AF */ FriBidiPropertyBlockLevel8_0670, /* 07B0..07B7 */ FriBidiPropertyBlockLevel8_0600, /* 07B8..07BF */ -#define FriBidiPropertyBlockLevel7_0900 (FriBidiPropertyBlockLevel7 + 0x78) +#define FriBidiPropertyBlockLevel7_0900 (FriBidiPropertyBlockLevel7 + 0x7C) FriBidiPropertyBlockLevel8_0900, /* 0900..0907 */ FriBidiPropertyBlockLevel8_0048, /* 0908..090F */ FriBidiPropertyBlockLevel8_0048, /* 0910..0917 */ FriBidiPropertyBlockLevel8_0048, /* 0918..091F */ -#define FriBidiPropertyBlockLevel7_0920 (FriBidiPropertyBlockLevel7 + 0x7C) +#define FriBidiPropertyBlockLevel7_0920 (FriBidiPropertyBlockLevel7 + 0x80) FriBidiPropertyBlockLevel8_0048, /* 0920..0927 */ FriBidiPropertyBlockLevel8_0048, /* 0928..092F */ FriBidiPropertyBlockLevel8_0048, /* 0930..0937 */ FriBidiPropertyBlockLevel8_0938, /* 0938..093F */ -#define FriBidiPropertyBlockLevel7_0940 (FriBidiPropertyBlockLevel7 + 0x80) +#define FriBidiPropertyBlockLevel7_0940 (FriBidiPropertyBlockLevel7 + 0x84) FriBidiPropertyBlockLevel8_0940, /* 0940..0947 */ FriBidiPropertyBlockLevel8_0948, /* 0948..094F */ FriBidiPropertyBlockLevel8_0950, /* 0950..0957 */ FriBidiPropertyBlockLevel8_0048, /* 0958..095F */ -#define FriBidiPropertyBlockLevel7_0960 (FriBidiPropertyBlockLevel7 + 0x84) +#define FriBidiPropertyBlockLevel7_0960 (FriBidiPropertyBlockLevel7 + 0x88) FriBidiPropertyBlockLevel8_0960, /* 0960..0967 */ FriBidiPropertyBlockLevel8_0048, /* 0968..096F */ FriBidiPropertyBlockLevel8_0048, /* 0970..0977 */ FriBidiPropertyBlockLevel8_0048, /* 0978..097F */ -#define FriBidiPropertyBlockLevel7_0980 (FriBidiPropertyBlockLevel7 + 0x88) +#define FriBidiPropertyBlockLevel7_0980 (FriBidiPropertyBlockLevel7 + 0x8C) FriBidiPropertyBlockLevel8_0980, /* 0980..0987 */ FriBidiPropertyBlockLevel8_0048, /* 0988..098F */ FriBidiPropertyBlockLevel8_0048, /* 0990..0997 */ FriBidiPropertyBlockLevel8_0048, /* 0998..099F */ -#define FriBidiPropertyBlockLevel7_09C0 (FriBidiPropertyBlockLevel7 + 0x8C) +#define FriBidiPropertyBlockLevel7_09C0 (FriBidiPropertyBlockLevel7 + 0x90) FriBidiPropertyBlockLevel8_0950, /* 09C0..09C7 */ FriBidiPropertyBlockLevel8_09C8, /* 09C8..09CF */ FriBidiPropertyBlockLevel8_0048, /* 09D0..09D7 */ FriBidiPropertyBlockLevel8_0048, /* 09D8..09DF */ -#define FriBidiPropertyBlockLevel7_09E0 (FriBidiPropertyBlockLevel7 + 0x90) +#define FriBidiPropertyBlockLevel7_09E0 (FriBidiPropertyBlockLevel7 + 0x94) FriBidiPropertyBlockLevel8_0960, /* 09E0..09E7 */ FriBidiPropertyBlockLevel8_0048, /* 09E8..09EF */ FriBidiPropertyBlockLevel8_09F0, /* 09F0..09F7 */ FriBidiPropertyBlockLevel8_0048, /* 09F8..09FF */ -#define FriBidiPropertyBlockLevel7_0A00 (FriBidiPropertyBlockLevel7 + 0x94) +#define FriBidiPropertyBlockLevel7_0A00 (FriBidiPropertyBlockLevel7 + 0x98) FriBidiPropertyBlockLevel8_0A00, /* 0A00..0A07 */ FriBidiPropertyBlockLevel8_0048, /* 0A08..0A0F */ FriBidiPropertyBlockLevel8_0048, /* 0A10..0A17 */ FriBidiPropertyBlockLevel8_0048, /* 0A18..0A1F */ -#define FriBidiPropertyBlockLevel7_0A40 (FriBidiPropertyBlockLevel7 + 0x98) +#define FriBidiPropertyBlockLevel7_0A40 (FriBidiPropertyBlockLevel7 + 0x9C) FriBidiPropertyBlockLevel8_0A40, /* 0A40..0A47 */ FriBidiPropertyBlockLevel8_0A48, /* 0A48..0A4F */ FriBidiPropertyBlockLevel8_0048, /* 0A50..0A57 */ FriBidiPropertyBlockLevel8_0048, /* 0A58..0A5F */ -#define FriBidiPropertyBlockLevel7_0A60 (FriBidiPropertyBlockLevel7 + 0x9C) +#define FriBidiPropertyBlockLevel7_0A60 (FriBidiPropertyBlockLevel7 + 0xA0) FriBidiPropertyBlockLevel8_0048, /* 0A60..0A67 */ FriBidiPropertyBlockLevel8_0048, /* 0A68..0A6F */ FriBidiPropertyBlockLevel8_0488, /* 0A70..0A77 */ FriBidiPropertyBlockLevel8_0048, /* 0A78..0A7F */ -#define FriBidiPropertyBlockLevel7_0AC0 (FriBidiPropertyBlockLevel7 + 0xA0) +#define FriBidiPropertyBlockLevel7_0AC0 (FriBidiPropertyBlockLevel7 + 0xA4) FriBidiPropertyBlockLevel8_0AC0, /* 0AC0..0AC7 */ FriBidiPropertyBlockLevel8_0948, /* 0AC8..0ACF */ FriBidiPropertyBlockLevel8_0048, /* 0AD0..0AD7 */ FriBidiPropertyBlockLevel8_0048, /* 0AD8..0ADF */ -#define FriBidiPropertyBlockLevel7_0B20 (FriBidiPropertyBlockLevel7 + 0xA4) +#define FriBidiPropertyBlockLevel7_0B20 (FriBidiPropertyBlockLevel7 + 0xA8) FriBidiPropertyBlockLevel8_0048, /* 0B20..0B27 */ FriBidiPropertyBlockLevel8_0048, /* 0B28..0B2F */ FriBidiPropertyBlockLevel8_0048, /* 0B30..0B37 */ FriBidiPropertyBlockLevel8_0B38, /* 0B38..0B3F */ -#define FriBidiPropertyBlockLevel7_0B40 (FriBidiPropertyBlockLevel7 + 0xA8) +#define FriBidiPropertyBlockLevel7_0B40 (FriBidiPropertyBlockLevel7 + 0xAC) FriBidiPropertyBlockLevel8_0B40, /* 0B40..0B47 */ FriBidiPropertyBlockLevel8_09C8, /* 0B48..0B4F */ FriBidiPropertyBlockLevel8_0B50, /* 0B50..0B57 */ FriBidiPropertyBlockLevel8_0048, /* 0B58..0B5F */ -#define FriBidiPropertyBlockLevel7_0BC0 (FriBidiPropertyBlockLevel7 + 0xAC) +#define FriBidiPropertyBlockLevel7_0BC0 (FriBidiPropertyBlockLevel7 + 0xB0) FriBidiPropertyBlockLevel8_0BC0, /* 0BC0..0BC7 */ FriBidiPropertyBlockLevel8_09C8, /* 0BC8..0BCF */ FriBidiPropertyBlockLevel8_0048, /* 0BD0..0BD7 */ FriBidiPropertyBlockLevel8_0048, /* 0BD8..0BDF */ -#define FriBidiPropertyBlockLevel7_0C20 (FriBidiPropertyBlockLevel7 + 0xB0) +#define FriBidiPropertyBlockLevel7_0C20 (FriBidiPropertyBlockLevel7 + 0xB4) FriBidiPropertyBlockLevel8_0048, /* 0C20..0C27 */ FriBidiPropertyBlockLevel8_0048, /* 0C28..0C2F */ FriBidiPropertyBlockLevel8_0048, /* 0C30..0C37 */ FriBidiPropertyBlockLevel8_0C38, /* 0C38..0C3F */ -#define FriBidiPropertyBlockLevel7_0C40 (FriBidiPropertyBlockLevel7 + 0xB4) +#define FriBidiPropertyBlockLevel7_0C40 (FriBidiPropertyBlockLevel7 + 0xB8) FriBidiPropertyBlockLevel8_0C40, /* 0C40..0C47 */ FriBidiPropertyBlockLevel8_0C48, /* 0C48..0C4F */ FriBidiPropertyBlockLevel8_0C50, /* 0C50..0C57 */ FriBidiPropertyBlockLevel8_0048, /* 0C58..0C5F */ -#define FriBidiPropertyBlockLevel7_0CA0 (FriBidiPropertyBlockLevel7 + 0xB8) +#define FriBidiPropertyBlockLevel7_0CA0 (FriBidiPropertyBlockLevel7 + 0xBC) FriBidiPropertyBlockLevel8_0048, /* 0CA0..0CA7 */ FriBidiPropertyBlockLevel8_0048, /* 0CA8..0CAF */ FriBidiPropertyBlockLevel8_0048, /* 0CB0..0CB7 */ FriBidiPropertyBlockLevel8_0CB8, /* 0CB8..0CBF */ -#define FriBidiPropertyBlockLevel7_0CC0 (FriBidiPropertyBlockLevel7 + 0xBC) +#define FriBidiPropertyBlockLevel7_0CC0 (FriBidiPropertyBlockLevel7 + 0xC0) FriBidiPropertyBlockLevel8_0B50, /* 0CC0..0CC7 */ FriBidiPropertyBlockLevel8_0CC8, /* 0CC8..0CCF */ FriBidiPropertyBlockLevel8_0048, /* 0CD0..0CD7 */ FriBidiPropertyBlockLevel8_0048, /* 0CD8..0CDF */ -#define FriBidiPropertyBlockLevel7_0D40 (FriBidiPropertyBlockLevel7 + 0xC0) +#define FriBidiPropertyBlockLevel7_0D40 (FriBidiPropertyBlockLevel7 + 0xC4) FriBidiPropertyBlockLevel8_0B40, /* 0D40..0D47 */ FriBidiPropertyBlockLevel8_09C8, /* 0D48..0D4F */ FriBidiPropertyBlockLevel8_0048, /* 0D50..0D57 */ FriBidiPropertyBlockLevel8_0048, /* 0D58..0D5F */ -#define FriBidiPropertyBlockLevel7_0DC0 (FriBidiPropertyBlockLevel7 + 0xC4) +#define FriBidiPropertyBlockLevel7_0DC0 (FriBidiPropertyBlockLevel7 + 0xC8) FriBidiPropertyBlockLevel8_0048, /* 0DC0..0DC7 */ FriBidiPropertyBlockLevel8_0A00, /* 0DC8..0DCF */ FriBidiPropertyBlockLevel8_0DD0, /* 0DD0..0DD7 */ FriBidiPropertyBlockLevel8_0048, /* 0DD8..0DDF */ -#define FriBidiPropertyBlockLevel7_0E20 (FriBidiPropertyBlockLevel7 + 0xC8) +#define FriBidiPropertyBlockLevel7_0E20 (FriBidiPropertyBlockLevel7 + 0xCC) FriBidiPropertyBlockLevel8_0048, /* 0E20..0E27 */ FriBidiPropertyBlockLevel8_0048, /* 0E28..0E2F */ FriBidiPropertyBlockLevel8_0E30, /* 0E30..0E37 */ FriBidiPropertyBlockLevel8_0E38, /* 0E38..0E3F */ -#define FriBidiPropertyBlockLevel7_0E40 (FriBidiPropertyBlockLevel7 + 0xCC) +#define FriBidiPropertyBlockLevel7_0E40 (FriBidiPropertyBlockLevel7 + 0xD0) FriBidiPropertyBlockLevel8_0CB8, /* 0E40..0E47 */ - FriBidiPropertyBlockLevel8_0348, /* 0E48..0E4F */ + FriBidiPropertyBlockLevel8_0E48, /* 0E48..0E4F */ FriBidiPropertyBlockLevel8_0048, /* 0E50..0E57 */ FriBidiPropertyBlockLevel8_0048, /* 0E58..0E5F */ -#define FriBidiPropertyBlockLevel7_0EA0 (FriBidiPropertyBlockLevel7 + 0xD0) +#define FriBidiPropertyBlockLevel7_0EA0 (FriBidiPropertyBlockLevel7 + 0xD4) FriBidiPropertyBlockLevel8_0048, /* 0EA0..0EA7 */ FriBidiPropertyBlockLevel8_0048, /* 0EA8..0EAF */ FriBidiPropertyBlockLevel8_0E30, /* 0EB0..0EB7 */ FriBidiPropertyBlockLevel8_0EB8, /* 0EB8..0EBF */ -#define FriBidiPropertyBlockLevel7_0EC0 (FriBidiPropertyBlockLevel7 + 0xD4) +#define FriBidiPropertyBlockLevel7_0EC0 (FriBidiPropertyBlockLevel7 + 0xD8) FriBidiPropertyBlockLevel8_0048, /* 0EC0..0EC7 */ FriBidiPropertyBlockLevel8_0EC8, /* 0EC8..0ECF */ FriBidiPropertyBlockLevel8_0048, /* 0ED0..0ED7 */ FriBidiPropertyBlockLevel8_0048, /* 0ED8..0EDF */ -#define FriBidiPropertyBlockLevel7_0F00 (FriBidiPropertyBlockLevel7 + 0xD8) +#define FriBidiPropertyBlockLevel7_0F00 (FriBidiPropertyBlockLevel7 + 0xDC) FriBidiPropertyBlockLevel8_0048, /* 0F00..0F07 */ FriBidiPropertyBlockLevel8_0048, /* 0F08..0F0F */ FriBidiPropertyBlockLevel8_0048, /* 0F10..0F17 */ FriBidiPropertyBlockLevel8_0488, /* 0F18..0F1F */ -#define FriBidiPropertyBlockLevel7_0F20 (FriBidiPropertyBlockLevel7 + 0xDC) +#define FriBidiPropertyBlockLevel7_0F20 (FriBidiPropertyBlockLevel7 + 0xE0) FriBidiPropertyBlockLevel8_0048, /* 0F20..0F27 */ FriBidiPropertyBlockLevel8_0048, /* 0F28..0F2F */ FriBidiPropertyBlockLevel8_0F30, /* 0F30..0F37 */ FriBidiPropertyBlockLevel8_0F38, /* 0F38..0F3F */ -#define FriBidiPropertyBlockLevel7_0F60 (FriBidiPropertyBlockLevel7 + 0xE0) +#define FriBidiPropertyBlockLevel7_0F60 (FriBidiPropertyBlockLevel7 + 0xE4) FriBidiPropertyBlockLevel8_0048, /* 0F60..0F67 */ FriBidiPropertyBlockLevel8_0048, /* 0F68..0F6F */ FriBidiPropertyBlockLevel8_0940, /* 0F70..0F77 */ - FriBidiPropertyBlockLevel8_0348, /* 0F78..0F7F */ + FriBidiPropertyBlockLevel8_0E48, /* 0F78..0F7F */ -#define FriBidiPropertyBlockLevel7_0F80 (FriBidiPropertyBlockLevel7 + 0xE4) +#define FriBidiPropertyBlockLevel7_0F80 (FriBidiPropertyBlockLevel7 + 0xE8) FriBidiPropertyBlockLevel8_0F80, /* 0F80..0F87 */ FriBidiPropertyBlockLevel8_0048, /* 0F88..0F8F */ FriBidiPropertyBlockLevel8_0300, /* 0F90..0F97 */ FriBidiPropertyBlockLevel8_0940, /* 0F98..0F9F */ -#define FriBidiPropertyBlockLevel7_0FA0 (FriBidiPropertyBlockLevel7 + 0xE8) +#define FriBidiPropertyBlockLevel7_0FA0 (FriBidiPropertyBlockLevel7 + 0xEC) FriBidiPropertyBlockLevel8_0300, /* 0FA0..0FA7 */ FriBidiPropertyBlockLevel8_0300, /* 0FA8..0FAF */ FriBidiPropertyBlockLevel8_0300, /* 0FB0..0FB7 */ FriBidiPropertyBlockLevel8_0FB8, /* 0FB8..0FBF */ -#define FriBidiPropertyBlockLevel7_0FC0 (FriBidiPropertyBlockLevel7 + 0xEC) +#define FriBidiPropertyBlockLevel7_0FC0 (FriBidiPropertyBlockLevel7 + 0xF0) FriBidiPropertyBlockLevel8_0B50, /* 0FC0..0FC7 */ FriBidiPropertyBlockLevel8_0048, /* 0FC8..0FCF */ FriBidiPropertyBlockLevel8_0048, /* 0FD0..0FD7 */ FriBidiPropertyBlockLevel8_0048, /* 0FD8..0FDF */ -#define FriBidiPropertyBlockLevel7_1020 (FriBidiPropertyBlockLevel7 + 0xF0) +#define FriBidiPropertyBlockLevel7_1020 (FriBidiPropertyBlockLevel7 + 0xF4) FriBidiPropertyBlockLevel8_0048, /* 1020..1027 */ FriBidiPropertyBlockLevel8_1028, /* 1028..102F */ FriBidiPropertyBlockLevel8_1030, /* 1030..1037 */ FriBidiPropertyBlockLevel8_0980, /* 1038..103F */ -#define FriBidiPropertyBlockLevel7_1680 (FriBidiPropertyBlockLevel7 + 0xF4) +#define FriBidiPropertyBlockLevel7_1680 (FriBidiPropertyBlockLevel7 + 0xF8) FriBidiPropertyBlockLevel8_1680, /* 1680..1687 */ FriBidiPropertyBlockLevel8_0048, /* 1688..168F */ FriBidiPropertyBlockLevel8_0048, /* 1690..1697 */ FriBidiPropertyBlockLevel8_1698, /* 1698..169F */ -#define FriBidiPropertyBlockLevel7_17A0 (FriBidiPropertyBlockLevel7 + 0xF8) +#define FriBidiPropertyBlockLevel7_1700 (FriBidiPropertyBlockLevel7 + 0xFC) + + FriBidiPropertyBlockLevel8_0048, /* 1700..1707 */ + FriBidiPropertyBlockLevel8_0048, /* 1708..170F */ + FriBidiPropertyBlockLevel8_1710, /* 1710..1717 */ + FriBidiPropertyBlockLevel8_0048, /* 1718..171F */ + +#define FriBidiPropertyBlockLevel7_1740 (FriBidiPropertyBlockLevel7 + 0x100) + + FriBidiPropertyBlockLevel8_0048, /* 1740..1747 */ + FriBidiPropertyBlockLevel8_0048, /* 1748..174F */ + FriBidiPropertyBlockLevel8_0960, /* 1750..1757 */ + FriBidiPropertyBlockLevel8_0048, /* 1758..175F */ + +#define FriBidiPropertyBlockLevel7_17A0 (FriBidiPropertyBlockLevel7 + 0x104) FriBidiPropertyBlockLevel8_0048, /* 17A0..17A7 */ FriBidiPropertyBlockLevel8_0048, /* 17A8..17AF */ FriBidiPropertyBlockLevel8_0CB8, /* 17B0..17B7 */ FriBidiPropertyBlockLevel8_0EC8, /* 17B8..17BF */ -#define FriBidiPropertyBlockLevel7_17C0 (FriBidiPropertyBlockLevel7 + 0xFC) +#define FriBidiPropertyBlockLevel7_17C0 (FriBidiPropertyBlockLevel7 + 0x108) FriBidiPropertyBlockLevel8_0B50, /* 17C0..17C7 */ FriBidiPropertyBlockLevel8_0940, /* 17C8..17CF */ FriBidiPropertyBlockLevel8_17D0, /* 17D0..17D7 */ FriBidiPropertyBlockLevel8_17D8, /* 17D8..17DF */ -#define FriBidiPropertyBlockLevel7_1800 (FriBidiPropertyBlockLevel7 + 0x100) +#define FriBidiPropertyBlockLevel7_1800 (FriBidiPropertyBlockLevel7 + 0x10C) FriBidiPropertyBlockLevel8_02C8, /* 1800..1807 */ FriBidiPropertyBlockLevel8_1808, /* 1808..180F */ FriBidiPropertyBlockLevel8_0048, /* 1810..1817 */ FriBidiPropertyBlockLevel8_0048, /* 1818..181F */ -#define FriBidiPropertyBlockLevel7_18A0 (FriBidiPropertyBlockLevel7 + 0x104) +#define FriBidiPropertyBlockLevel7_18A0 (FriBidiPropertyBlockLevel7 + 0x110) FriBidiPropertyBlockLevel8_0048, /* 18A0..18A7 */ FriBidiPropertyBlockLevel8_0980, /* 18A8..18AF */ FriBidiPropertyBlockLevel8_0048, /* 18B0..18B7 */ FriBidiPropertyBlockLevel8_0048, /* 18B8..18BF */ -#define FriBidiPropertyBlockLevel7_1FA0 (FriBidiPropertyBlockLevel7 + 0x108) +#define FriBidiPropertyBlockLevel7_1FA0 (FriBidiPropertyBlockLevel7 + 0x114) FriBidiPropertyBlockLevel8_0048, /* 1FA0..1FA7 */ FriBidiPropertyBlockLevel8_0048, /* 1FA8..1FAF */ FriBidiPropertyBlockLevel8_0048, /* 1FB0..1FB7 */ FriBidiPropertyBlockLevel8_1FB8, /* 1FB8..1FBF */ -#define FriBidiPropertyBlockLevel7_1FC0 (FriBidiPropertyBlockLevel7 + 0x10C) +#define FriBidiPropertyBlockLevel7_1FC0 (FriBidiPropertyBlockLevel7 + 0x118) FriBidiPropertyBlockLevel8_1FC0, /* 1FC0..1FC7 */ FriBidiPropertyBlockLevel8_02E0, /* 1FC8..1FCF */ FriBidiPropertyBlockLevel8_0048, /* 1FD0..1FD7 */ FriBidiPropertyBlockLevel8_02E0, /* 1FD8..1FDF */ -#define FriBidiPropertyBlockLevel7_1FE0 (FriBidiPropertyBlockLevel7 + 0x110) +#define FriBidiPropertyBlockLevel7_1FE0 (FriBidiPropertyBlockLevel7 + 0x11C) FriBidiPropertyBlockLevel8_0048, /* 1FE0..1FE7 */ FriBidiPropertyBlockLevel8_02E0, /* 1FE8..1FEF */ FriBidiPropertyBlockLevel8_0048, /* 1FF0..1FF7 */ FriBidiPropertyBlockLevel8_1FF8, /* 1FF8..1FFF */ -#define FriBidiPropertyBlockLevel7_2000 (FriBidiPropertyBlockLevel7 + 0x114) +#define FriBidiPropertyBlockLevel7_2000 (FriBidiPropertyBlockLevel7 + 0x120) FriBidiPropertyBlockLevel8_2000, /* 2000..2007 */ FriBidiPropertyBlockLevel8_2008, /* 2008..200F */ FriBidiPropertyBlockLevel8_02C8, /* 2010..2017 */ FriBidiPropertyBlockLevel8_02C8, /* 2018..201F */ -#define FriBidiPropertyBlockLevel7_2020 (FriBidiPropertyBlockLevel7 + 0x118) +#define FriBidiPropertyBlockLevel7_2020 (FriBidiPropertyBlockLevel7 + 0x124) FriBidiPropertyBlockLevel8_02C8, /* 2020..2027 */ FriBidiPropertyBlockLevel8_2028, /* 2028..202F */ FriBidiPropertyBlockLevel8_2030, /* 2030..2037 */ FriBidiPropertyBlockLevel8_02C8, /* 2038..203F */ -#define FriBidiPropertyBlockLevel7_2040 (FriBidiPropertyBlockLevel7 + 0x11C) +#define FriBidiPropertyBlockLevel7_2040 (FriBidiPropertyBlockLevel7 + 0x128) - FriBidiPropertyBlockLevel8_2040, /* 2040..2047 */ - FriBidiPropertyBlockLevel8_02E8, /* 2048..204F */ - FriBidiPropertyBlockLevel8_0048, /* 2050..2057 */ - FriBidiPropertyBlockLevel8_0048, /* 2058..205F */ + FriBidiPropertyBlockLevel8_02C8, /* 2040..2047 */ + FriBidiPropertyBlockLevel8_02C8, /* 2048..204F */ + FriBidiPropertyBlockLevel8_2050, /* 2050..2057 */ + FriBidiPropertyBlockLevel8_2058, /* 2058..205F */ -#define FriBidiPropertyBlockLevel7_2060 (FriBidiPropertyBlockLevel7 + 0x120) +#define FriBidiPropertyBlockLevel7_2060 (FriBidiPropertyBlockLevel7 + 0x12C) - FriBidiPropertyBlockLevel8_0048, /* 2060..2067 */ + FriBidiPropertyBlockLevel8_2060, /* 2060..2067 */ FriBidiPropertyBlockLevel8_2068, /* 2068..206F */ FriBidiPropertyBlockLevel8_2070, /* 2070..2077 */ FriBidiPropertyBlockLevel8_2078, /* 2078..207F */ -#define FriBidiPropertyBlockLevel7_2080 (FriBidiPropertyBlockLevel7 + 0x124) +#define FriBidiPropertyBlockLevel7_2080 (FriBidiPropertyBlockLevel7 + 0x130) FriBidiPropertyBlockLevel8_0030, /* 2080..2087 */ FriBidiPropertyBlockLevel8_2078, /* 2088..208F */ FriBidiPropertyBlockLevel8_0048, /* 2090..2097 */ FriBidiPropertyBlockLevel8_0048, /* 2098..209F */ -#define FriBidiPropertyBlockLevel7_20A0 (FriBidiPropertyBlockLevel7 + 0x128) +#define FriBidiPropertyBlockLevel7_20A0 (FriBidiPropertyBlockLevel7 + 0x134) FriBidiPropertyBlockLevel8_20A0, /* 20A0..20A7 */ FriBidiPropertyBlockLevel8_20A0, /* 20A8..20AF */ - FriBidiPropertyBlockLevel8_0048, /* 20B0..20B7 */ + FriBidiPropertyBlockLevel8_20B0, /* 20B0..20B7 */ FriBidiPropertyBlockLevel8_0048, /* 20B8..20BF */ -#define FriBidiPropertyBlockLevel7_20C0 (FriBidiPropertyBlockLevel7 + 0x12C) +#define FriBidiPropertyBlockLevel7_20C0 (FriBidiPropertyBlockLevel7 + 0x138) FriBidiPropertyBlockLevel8_0048, /* 20C0..20C7 */ FriBidiPropertyBlockLevel8_0048, /* 20C8..20CF */ FriBidiPropertyBlockLevel8_0300, /* 20D0..20D7 */ FriBidiPropertyBlockLevel8_0300, /* 20D8..20DF */ -#define FriBidiPropertyBlockLevel7_20E0 (FriBidiPropertyBlockLevel7 + 0x130) +#define FriBidiPropertyBlockLevel7_20E0 (FriBidiPropertyBlockLevel7 + 0x13C) - FriBidiPropertyBlockLevel8_17D0, /* 20E0..20E7 */ - FriBidiPropertyBlockLevel8_0048, /* 20E8..20EF */ + FriBidiPropertyBlockLevel8_0300, /* 20E0..20E7 */ + FriBidiPropertyBlockLevel8_20E8, /* 20E8..20EF */ FriBidiPropertyBlockLevel8_0048, /* 20F0..20F7 */ FriBidiPropertyBlockLevel8_0048, /* 20F8..20FF */ -#define FriBidiPropertyBlockLevel7_2100 (FriBidiPropertyBlockLevel7 + 0x134) +#define FriBidiPropertyBlockLevel7_2100 (FriBidiPropertyBlockLevel7 + 0x140) FriBidiPropertyBlockLevel8_2100, /* 2100..2107 */ FriBidiPropertyBlockLevel8_1FC0, /* 2108..210F */ FriBidiPropertyBlockLevel8_2110, /* 2110..2117 */ FriBidiPropertyBlockLevel8_2118, /* 2118..211F */ -#define FriBidiPropertyBlockLevel7_2120 (FriBidiPropertyBlockLevel7 + 0x138) +#define FriBidiPropertyBlockLevel7_2120 (FriBidiPropertyBlockLevel7 + 0x144) FriBidiPropertyBlockLevel8_2120, /* 2120..2127 */ FriBidiPropertyBlockLevel8_2128, /* 2128..212F */ FriBidiPropertyBlockLevel8_0588, /* 2130..2137 */ FriBidiPropertyBlockLevel8_0588, /* 2138..213F */ -#define FriBidiPropertyBlockLevel7_2140 (FriBidiPropertyBlockLevel7 + 0x13C) +#define FriBidiPropertyBlockLevel7_2140 (FriBidiPropertyBlockLevel7 + 0x148) - FriBidiPropertyBlockLevel8_0048, /* 2140..2147 */ - FriBidiPropertyBlockLevel8_0048, /* 2148..214F */ + FriBidiPropertyBlockLevel8_2140, /* 2140..2147 */ + FriBidiPropertyBlockLevel8_2148, /* 2148..214F */ FriBidiPropertyBlockLevel8_0058, /* 2150..2157 */ FriBidiPropertyBlockLevel8_02C8, /* 2158..215F */ -#define FriBidiPropertyBlockLevel7_2180 (FriBidiPropertyBlockLevel7 + 0x140) +#define FriBidiPropertyBlockLevel7_2180 (FriBidiPropertyBlockLevel7 + 0x14C) FriBidiPropertyBlockLevel8_0048, /* 2180..2187 */ FriBidiPropertyBlockLevel8_0048, /* 2188..218F */ FriBidiPropertyBlockLevel8_02C8, /* 2190..2197 */ FriBidiPropertyBlockLevel8_02C8, /* 2198..219F */ -#define FriBidiPropertyBlockLevel7_21A0 (FriBidiPropertyBlockLevel7 + 0x144) +#define FriBidiPropertyBlockLevel7_21A0 (FriBidiPropertyBlockLevel7 + 0x150) FriBidiPropertyBlockLevel8_02C8, /* 21A0..21A7 */ FriBidiPropertyBlockLevel8_02C8, /* 21A8..21AF */ FriBidiPropertyBlockLevel8_02C8, /* 21B0..21B7 */ FriBidiPropertyBlockLevel8_02C8, /* 21B8..21BF */ -#define FriBidiPropertyBlockLevel7_21E0 (FriBidiPropertyBlockLevel7 + 0x148) - - FriBidiPropertyBlockLevel8_02C8, /* 21E0..21E7 */ - FriBidiPropertyBlockLevel8_02C8, /* 21E8..21EF */ - FriBidiPropertyBlockLevel8_21F0, /* 21F0..21F7 */ - FriBidiPropertyBlockLevel8_0048, /* 21F8..21FF */ - -#define FriBidiPropertyBlockLevel7_2200 (FriBidiPropertyBlockLevel7 + 0x14C) +#define FriBidiPropertyBlockLevel7_2200 (FriBidiPropertyBlockLevel7 + 0x154) FriBidiPropertyBlockLevel8_02C8, /* 2200..2207 */ FriBidiPropertyBlockLevel8_02C8, /* 2208..220F */ FriBidiPropertyBlockLevel8_2210, /* 2210..2217 */ FriBidiPropertyBlockLevel8_02C8, /* 2218..221F */ -#define FriBidiPropertyBlockLevel7_22E0 (FriBidiPropertyBlockLevel7 + 0x150) - - FriBidiPropertyBlockLevel8_02C8, /* 22E0..22E7 */ - FriBidiPropertyBlockLevel8_02C8, /* 22E8..22EF */ - FriBidiPropertyBlockLevel8_1FC0, /* 22F0..22F7 */ - FriBidiPropertyBlockLevel8_0048, /* 22F8..22FF */ - -#define FriBidiPropertyBlockLevel7_2320 (FriBidiPropertyBlockLevel7 + 0x154) +#define FriBidiPropertyBlockLevel7_2320 (FriBidiPropertyBlockLevel7 + 0x158) FriBidiPropertyBlockLevel8_02C8, /* 2320..2327 */ FriBidiPropertyBlockLevel8_02C8, /* 2328..232F */ FriBidiPropertyBlockLevel8_02E8, /* 2330..2337 */ FriBidiPropertyBlockLevel8_0048, /* 2338..233F */ -#define FriBidiPropertyBlockLevel7_2360 (FriBidiPropertyBlockLevel7 + 0x158) +#define FriBidiPropertyBlockLevel7_2360 (FriBidiPropertyBlockLevel7 + 0x15C) FriBidiPropertyBlockLevel8_0048, /* 2360..2367 */ FriBidiPropertyBlockLevel8_0048, /* 2368..236F */ FriBidiPropertyBlockLevel8_0048, /* 2370..2377 */ - FriBidiPropertyBlockLevel8_2378, /* 2378..237F */ + FriBidiPropertyBlockLevel8_0058, /* 2378..237F */ -#define FriBidiPropertyBlockLevel7_2380 (FriBidiPropertyBlockLevel7 + 0x15C) +#define FriBidiPropertyBlockLevel7_2380 (FriBidiPropertyBlockLevel7 + 0x160) FriBidiPropertyBlockLevel8_02C8, /* 2380..2387 */ FriBidiPropertyBlockLevel8_02C8, /* 2388..238F */ FriBidiPropertyBlockLevel8_2390, /* 2390..2397 */ - FriBidiPropertyBlockLevel8_2398, /* 2398..239F */ + FriBidiPropertyBlockLevel8_02C8, /* 2398..239F */ + +#define FriBidiPropertyBlockLevel7_23C0 (FriBidiPropertyBlockLevel7 + 0x164) -#define FriBidiPropertyBlockLevel7_2420 (FriBidiPropertyBlockLevel7 + 0x160) + FriBidiPropertyBlockLevel8_02C8, /* 23C0..23C7 */ + FriBidiPropertyBlockLevel8_23C8, /* 23C8..23CF */ + FriBidiPropertyBlockLevel8_0048, /* 23D0..23D7 */ + FriBidiPropertyBlockLevel8_0048, /* 23D8..23DF */ - FriBidiPropertyBlockLevel8_2040, /* 2420..2427 */ +#define FriBidiPropertyBlockLevel7_2420 (FriBidiPropertyBlockLevel7 + 0x168) + + FriBidiPropertyBlockLevel8_23C8, /* 2420..2427 */ FriBidiPropertyBlockLevel8_0048, /* 2428..242F */ FriBidiPropertyBlockLevel8_0048, /* 2430..2437 */ FriBidiPropertyBlockLevel8_0048, /* 2438..243F */ -#define FriBidiPropertyBlockLevel7_2440 (FriBidiPropertyBlockLevel7 + 0x164) +#define FriBidiPropertyBlockLevel7_2440 (FriBidiPropertyBlockLevel7 + 0x16C) FriBidiPropertyBlockLevel8_02C8, /* 2440..2447 */ - FriBidiPropertyBlockLevel8_2398, /* 2448..244F */ + FriBidiPropertyBlockLevel8_2448, /* 2448..244F */ FriBidiPropertyBlockLevel8_0048, /* 2450..2457 */ FriBidiPropertyBlockLevel8_0048, /* 2458..245F */ -#define FriBidiPropertyBlockLevel7_2460 (FriBidiPropertyBlockLevel7 + 0x168) +#define FriBidiPropertyBlockLevel7_2460 (FriBidiPropertyBlockLevel7 + 0x170) FriBidiPropertyBlockLevel8_0030, /* 2460..2467 */ FriBidiPropertyBlockLevel8_0030, /* 2468..246F */ FriBidiPropertyBlockLevel8_0030, /* 2470..2477 */ FriBidiPropertyBlockLevel8_0030, /* 2478..247F */ -#define FriBidiPropertyBlockLevel7_2480 (FriBidiPropertyBlockLevel7 + 0x16C) +#define FriBidiPropertyBlockLevel7_2480 (FriBidiPropertyBlockLevel7 + 0x174) FriBidiPropertyBlockLevel8_0030, /* 2480..2487 */ FriBidiPropertyBlockLevel8_0030, /* 2488..248F */ FriBidiPropertyBlockLevel8_0030, /* 2490..2497 */ FriBidiPropertyBlockLevel8_2498, /* 2498..249F */ -#define FriBidiPropertyBlockLevel7_24E0 (FriBidiPropertyBlockLevel7 + 0x170) +#define FriBidiPropertyBlockLevel7_24E0 (FriBidiPropertyBlockLevel7 + 0x178) FriBidiPropertyBlockLevel8_0048, /* 24E0..24E7 */ FriBidiPropertyBlockLevel8_24E8, /* 24E8..24EF */ - FriBidiPropertyBlockLevel8_0048, /* 24F0..24F7 */ - FriBidiPropertyBlockLevel8_0048, /* 24F8..24FF */ - -#define FriBidiPropertyBlockLevel7_25E0 (FriBidiPropertyBlockLevel7 + 0x174) - - FriBidiPropertyBlockLevel8_02C8, /* 25E0..25E7 */ - FriBidiPropertyBlockLevel8_02C8, /* 25E8..25EF */ - FriBidiPropertyBlockLevel8_02C8, /* 25F0..25F7 */ - FriBidiPropertyBlockLevel8_0048, /* 25F8..25FF */ + FriBidiPropertyBlockLevel8_02C8, /* 24F0..24F7 */ + FriBidiPropertyBlockLevel8_23C8, /* 24F8..24FF */ -#define FriBidiPropertyBlockLevel7_2600 (FriBidiPropertyBlockLevel7 + 0x178) +#define FriBidiPropertyBlockLevel7_2600 (FriBidiPropertyBlockLevel7 + 0x17C) FriBidiPropertyBlockLevel8_02C8, /* 2600..2607 */ FriBidiPropertyBlockLevel8_02C8, /* 2608..260F */ - FriBidiPropertyBlockLevel8_21F0, /* 2610..2617 */ + FriBidiPropertyBlockLevel8_2610, /* 2610..2617 */ FriBidiPropertyBlockLevel8_2618, /* 2618..261F */ -#define FriBidiPropertyBlockLevel7_2700 (FriBidiPropertyBlockLevel7 + 0x17C) +#define FriBidiPropertyBlockLevel7_2660 (FriBidiPropertyBlockLevel7 + 0x180) + + FriBidiPropertyBlockLevel8_02C8, /* 2660..2667 */ + FriBidiPropertyBlockLevel8_02C8, /* 2668..266F */ + FriBidiPropertyBlockLevel8_02C8, /* 2670..2677 */ + FriBidiPropertyBlockLevel8_02E8, /* 2678..267F */ + +#define FriBidiPropertyBlockLevel7_2680 (FriBidiPropertyBlockLevel7 + 0x184) + + FriBidiPropertyBlockLevel8_02C8, /* 2680..2687 */ + FriBidiPropertyBlockLevel8_1FC0, /* 2688..268F */ + FriBidiPropertyBlockLevel8_0048, /* 2690..2697 */ + FriBidiPropertyBlockLevel8_0048, /* 2698..269F */ + +#define FriBidiPropertyBlockLevel7_2700 (FriBidiPropertyBlockLevel7 + 0x188) FriBidiPropertyBlockLevel8_2700, /* 2700..2707 */ FriBidiPropertyBlockLevel8_2708, /* 2708..270F */ FriBidiPropertyBlockLevel8_02C8, /* 2710..2717 */ FriBidiPropertyBlockLevel8_02C8, /* 2718..271F */ -#define FriBidiPropertyBlockLevel7_2720 (FriBidiPropertyBlockLevel7 + 0x180) +#define FriBidiPropertyBlockLevel7_2720 (FriBidiPropertyBlockLevel7 + 0x18C) FriBidiPropertyBlockLevel8_02C8, /* 2720..2727 */ FriBidiPropertyBlockLevel8_2618, /* 2728..272F */ FriBidiPropertyBlockLevel8_02C8, /* 2730..2737 */ FriBidiPropertyBlockLevel8_02C8, /* 2738..273F */ -#define FriBidiPropertyBlockLevel7_2740 (FriBidiPropertyBlockLevel7 + 0x184) +#define FriBidiPropertyBlockLevel7_2740 (FriBidiPropertyBlockLevel7 + 0x190) FriBidiPropertyBlockLevel8_02C8, /* 2740..2747 */ FriBidiPropertyBlockLevel8_2120, /* 2748..274F */ FriBidiPropertyBlockLevel8_2750, /* 2750..2757 */ - FriBidiPropertyBlockLevel8_2040, /* 2758..275F */ + FriBidiPropertyBlockLevel8_23C8, /* 2758..275F */ -#define FriBidiPropertyBlockLevel7_2760 (FriBidiPropertyBlockLevel7 + 0x188) +#define FriBidiPropertyBlockLevel7_2760 (FriBidiPropertyBlockLevel7 + 0x194) FriBidiPropertyBlockLevel8_2618, /* 2760..2767 */ - FriBidiPropertyBlockLevel8_0048, /* 2768..276F */ - FriBidiPropertyBlockLevel8_2770, /* 2770..2777 */ + FriBidiPropertyBlockLevel8_02C8, /* 2768..276F */ + FriBidiPropertyBlockLevel8_02C8, /* 2770..2777 */ FriBidiPropertyBlockLevel8_02C8, /* 2778..277F */ -#define FriBidiPropertyBlockLevel7_2780 (FriBidiPropertyBlockLevel7 + 0x18C) +#define FriBidiPropertyBlockLevel7_2780 (FriBidiPropertyBlockLevel7 + 0x198) FriBidiPropertyBlockLevel8_02C8, /* 2780..2787 */ FriBidiPropertyBlockLevel8_02C8, /* 2788..278F */ - FriBidiPropertyBlockLevel8_2790, /* 2790..2797 */ + FriBidiPropertyBlockLevel8_2140, /* 2790..2797 */ FriBidiPropertyBlockLevel8_02C8, /* 2798..279F */ -#define FriBidiPropertyBlockLevel7_27A0 (FriBidiPropertyBlockLevel7 + 0x190) +#define FriBidiPropertyBlockLevel7_27A0 (FriBidiPropertyBlockLevel7 + 0x19C) FriBidiPropertyBlockLevel8_02C8, /* 27A0..27A7 */ FriBidiPropertyBlockLevel8_02C8, /* 27A8..27AF */ FriBidiPropertyBlockLevel8_2618, /* 27B0..27B7 */ - FriBidiPropertyBlockLevel8_2040, /* 27B8..27BF */ + FriBidiPropertyBlockLevel8_23C8, /* 27B8..27BF */ + +#define FriBidiPropertyBlockLevel7_27E0 (FriBidiPropertyBlockLevel7 + 0x1A0) + + FriBidiPropertyBlockLevel8_02C8, /* 27E0..27E7 */ + FriBidiPropertyBlockLevel8_27E8, /* 27E8..27EF */ + FriBidiPropertyBlockLevel8_02C8, /* 27F0..27F7 */ + FriBidiPropertyBlockLevel8_02C8, /* 27F8..27FF */ -#define FriBidiPropertyBlockLevel7_2E80 (FriBidiPropertyBlockLevel7 + 0x194) +#define FriBidiPropertyBlockLevel7_2E80 (FriBidiPropertyBlockLevel7 + 0x1A4) FriBidiPropertyBlockLevel8_02C8, /* 2E80..2E87 */ FriBidiPropertyBlockLevel8_02C8, /* 2E88..2E8F */ FriBidiPropertyBlockLevel8_02C8, /* 2E90..2E97 */ FriBidiPropertyBlockLevel8_00A8, /* 2E98..2E9F */ -#define FriBidiPropertyBlockLevel7_2FE0 (FriBidiPropertyBlockLevel7 + 0x198) +#define FriBidiPropertyBlockLevel7_2EE0 (FriBidiPropertyBlockLevel7 + 0x1A8) + + FriBidiPropertyBlockLevel8_02C8, /* 2EE0..2EE7 */ + FriBidiPropertyBlockLevel8_02C8, /* 2EE8..2EEF */ + FriBidiPropertyBlockLevel8_27E8, /* 2EF0..2EF7 */ + FriBidiPropertyBlockLevel8_0048, /* 2EF8..2EFF */ + +#define FriBidiPropertyBlockLevel7_2FE0 (FriBidiPropertyBlockLevel7 + 0x1AC) FriBidiPropertyBlockLevel8_0048, /* 2FE0..2FE7 */ FriBidiPropertyBlockLevel8_0048, /* 2FE8..2FEF */ FriBidiPropertyBlockLevel8_02C8, /* 2FF0..2FF7 */ - FriBidiPropertyBlockLevel8_21F0, /* 2FF8..2FFF */ + FriBidiPropertyBlockLevel8_27E8, /* 2FF8..2FFF */ -#define FriBidiPropertyBlockLevel7_3000 (FriBidiPropertyBlockLevel7 + 0x19C) +#define FriBidiPropertyBlockLevel7_3000 (FriBidiPropertyBlockLevel7 + 0x1B0) FriBidiPropertyBlockLevel8_3000, /* 3000..3007 */ FriBidiPropertyBlockLevel8_02C8, /* 3008..300F */ FriBidiPropertyBlockLevel8_02C8, /* 3010..3017 */ FriBidiPropertyBlockLevel8_02C8, /* 3018..301F */ -#define FriBidiPropertyBlockLevel7_3020 (FriBidiPropertyBlockLevel7 + 0x1A0) +#define FriBidiPropertyBlockLevel7_3020 (FriBidiPropertyBlockLevel7 + 0x1B4) FriBidiPropertyBlockLevel8_0040, /* 3020..3027 */ FriBidiPropertyBlockLevel8_3028, /* 3028..302F */ FriBidiPropertyBlockLevel8_2118, /* 3030..3037 */ - FriBidiPropertyBlockLevel8_2770, /* 3038..303F */ + FriBidiPropertyBlockLevel8_02E0, /* 3038..303F */ -#define FriBidiPropertyBlockLevel7_3080 (FriBidiPropertyBlockLevel7 + 0x1A4) +#define FriBidiPropertyBlockLevel7_3080 (FriBidiPropertyBlockLevel7 + 0x1B8) FriBidiPropertyBlockLevel8_0048, /* 3080..3087 */ FriBidiPropertyBlockLevel8_0048, /* 3088..308F */ FriBidiPropertyBlockLevel8_0048, /* 3090..3097 */ FriBidiPropertyBlockLevel8_3098, /* 3098..309F */ -#define FriBidiPropertyBlockLevel7_30E0 (FriBidiPropertyBlockLevel7 + 0x1A8) +#define FriBidiPropertyBlockLevel7_30A0 (FriBidiPropertyBlockLevel7 + 0x1BC) + + FriBidiPropertyBlockLevel8_0040, /* 30A0..30A7 */ + FriBidiPropertyBlockLevel8_0048, /* 30A8..30AF */ + FriBidiPropertyBlockLevel8_0048, /* 30B0..30B7 */ + FriBidiPropertyBlockLevel8_0048, /* 30B8..30BF */ + +#define FriBidiPropertyBlockLevel7_30E0 (FriBidiPropertyBlockLevel7 + 0x1C0) FriBidiPropertyBlockLevel8_0048, /* 30E0..30E7 */ FriBidiPropertyBlockLevel8_0048, /* 30E8..30EF */ FriBidiPropertyBlockLevel8_0048, /* 30F0..30F7 */ FriBidiPropertyBlockLevel8_30F8, /* 30F8..30FF */ -#define FriBidiPropertyBlockLevel7_A4A0 (FriBidiPropertyBlockLevel7 + 0x1AC) - - FriBidiPropertyBlockLevel8_2708, /* A4A0..A4A7 */ - FriBidiPropertyBlockLevel8_02C8, /* A4A8..A4AF */ - FriBidiPropertyBlockLevel8_A4B0, /* A4B0..A4B7 */ - FriBidiPropertyBlockLevel8_02C8, /* A4B8..A4BF */ +#define FriBidiPropertyBlockLevel7_3240 (FriBidiPropertyBlockLevel7 + 0x1C4) -#define FriBidiPropertyBlockLevel7_A4C0 (FriBidiPropertyBlockLevel7 + 0x1B0) + FriBidiPropertyBlockLevel8_0048, /* 3240..3247 */ + FriBidiPropertyBlockLevel8_0048, /* 3248..324F */ + FriBidiPropertyBlockLevel8_2618, /* 3250..3257 */ + FriBidiPropertyBlockLevel8_02C8, /* 3258..325F */ - FriBidiPropertyBlockLevel8_A4C0, /* A4C0..A4C7 */ - FriBidiPropertyBlockLevel8_0048, /* A4C8..A4CF */ - FriBidiPropertyBlockLevel8_0048, /* A4D0..A4D7 */ - FriBidiPropertyBlockLevel8_0048, /* A4D8..A4DF */ - -#define FriBidiPropertyBlockLevel7_FB00 (FriBidiPropertyBlockLevel7 + 0x1B4) +#define FriBidiPropertyBlockLevel7_FB00 (FriBidiPropertyBlockLevel7 + 0x1C8) FriBidiPropertyBlockLevel8_0048, /* FB00..FB07 */ FriBidiPropertyBlockLevel8_0048, /* FB08..FB0F */ FriBidiPropertyBlockLevel8_0048, /* FB10..FB17 */ FriBidiPropertyBlockLevel8_FB18, /* FB18..FB1F */ -#define FriBidiPropertyBlockLevel7_FB20 (FriBidiPropertyBlockLevel7 + 0x1B8) +#define FriBidiPropertyBlockLevel7_FB20 (FriBidiPropertyBlockLevel7 + 0x1CC) FriBidiPropertyBlockLevel8_05C8, /* FB20..FB27 */ FriBidiPropertyBlockLevel8_FB28, /* FB28..FB2F */ FriBidiPropertyBlockLevel8_05C8, /* FB30..FB37 */ FriBidiPropertyBlockLevel8_05C8, /* FB38..FB3F */ -#define FriBidiPropertyBlockLevel7_FB40 (FriBidiPropertyBlockLevel7 + 0x1BC) +#define FriBidiPropertyBlockLevel7_FB40 (FriBidiPropertyBlockLevel7 + 0x1D0) FriBidiPropertyBlockLevel8_05C8, /* FB40..FB47 */ FriBidiPropertyBlockLevel8_05C8, /* FB48..FB4F */ FriBidiPropertyBlockLevel8_0600, /* FB50..FB57 */ FriBidiPropertyBlockLevel8_0600, /* FB58..FB5F */ -#define FriBidiPropertyBlockLevel7_FD20 (FriBidiPropertyBlockLevel7 + 0x1C0) +#define FriBidiPropertyBlockLevel7_FD20 (FriBidiPropertyBlockLevel7 + 0x1D4) FriBidiPropertyBlockLevel8_0600, /* FD20..FD27 */ FriBidiPropertyBlockLevel8_0600, /* FD28..FD2F */ FriBidiPropertyBlockLevel8_0600, /* FD30..FD37 */ FriBidiPropertyBlockLevel8_FD38, /* FD38..FD3F */ -#define FriBidiPropertyBlockLevel7_FE20 (FriBidiPropertyBlockLevel7 + 0x1C4) +#define FriBidiPropertyBlockLevel7_FE20 (FriBidiPropertyBlockLevel7 + 0x1D8) FriBidiPropertyBlockLevel8_17D0, /* FE20..FE27 */ FriBidiPropertyBlockLevel8_0048, /* FE28..FE2F */ FriBidiPropertyBlockLevel8_02C8, /* FE30..FE37 */ FriBidiPropertyBlockLevel8_02C8, /* FE38..FE3F */ -#define FriBidiPropertyBlockLevel7_FE40 (FriBidiPropertyBlockLevel7 + 0x1C8) +#define FriBidiPropertyBlockLevel7_FE40 (FriBidiPropertyBlockLevel7 + 0x1DC) - FriBidiPropertyBlockLevel8_2790, /* FE40..FE47 */ + FriBidiPropertyBlockLevel8_23C8, /* FE40..FE47 */ FriBidiPropertyBlockLevel8_2618, /* FE48..FE4F */ FriBidiPropertyBlockLevel8_FE50, /* FE50..FE57 */ FriBidiPropertyBlockLevel8_FE58, /* FE58..FE5F */ -#define FriBidiPropertyBlockLevel7_FE60 (FriBidiPropertyBlockLevel7 + 0x1CC) +#define FriBidiPropertyBlockLevel7_FE60 (FriBidiPropertyBlockLevel7 + 0x1E0) FriBidiPropertyBlockLevel8_FE60, /* FE60..FE67 */ FriBidiPropertyBlockLevel8_FE68, /* FE68..FE6F */ FriBidiPropertyBlockLevel8_0600, /* FE70..FE77 */ FriBidiPropertyBlockLevel8_0600, /* FE78..FE7F */ -#define FriBidiPropertyBlockLevel7_FEE0 (FriBidiPropertyBlockLevel7 + 0x1D0) +#define FriBidiPropertyBlockLevel7_FEE0 (FriBidiPropertyBlockLevel7 + 0x1E4) FriBidiPropertyBlockLevel8_0600, /* FEE0..FEE7 */ FriBidiPropertyBlockLevel8_0600, /* FEE8..FEEF */ FriBidiPropertyBlockLevel8_0600, /* FEF0..FEF7 */ FriBidiPropertyBlockLevel8_0708, /* FEF8..FEFF */ -#define FriBidiPropertyBlockLevel7_FF00 (FriBidiPropertyBlockLevel7 + 0x1D4) +#define FriBidiPropertyBlockLevel7_FF00 (FriBidiPropertyBlockLevel7 + 0x1E8) FriBidiPropertyBlockLevel8_FF00, /* FF00..FF07 */ FriBidiPropertyBlockLevel8_0028, /* FF08..FF0F */ FriBidiPropertyBlockLevel8_0030, /* FF10..FF17 */ FriBidiPropertyBlockLevel8_0038, /* FF18..FF1F */ -#define FriBidiPropertyBlockLevel7_FF40 (FriBidiPropertyBlockLevel7 + 0x1D8) - - FriBidiPropertyBlockLevel8_0040, /* FF40..FF47 */ - FriBidiPropertyBlockLevel8_0048, /* FF48..FF4F */ - FriBidiPropertyBlockLevel8_0048, /* FF50..FF57 */ - FriBidiPropertyBlockLevel8_FF58, /* FF58..FF5F */ - -#define FriBidiPropertyBlockLevel7_FF60 (FriBidiPropertyBlockLevel7 + 0x1DC) +#define FriBidiPropertyBlockLevel7_FF60 (FriBidiPropertyBlockLevel7 + 0x1EC) - FriBidiPropertyBlockLevel8_FF60, /* FF60..FF67 */ + FriBidiPropertyBlockLevel8_02E8, /* FF60..FF67 */ FriBidiPropertyBlockLevel8_0048, /* FF68..FF6F */ FriBidiPropertyBlockLevel8_0048, /* FF70..FF77 */ FriBidiPropertyBlockLevel8_0048, /* FF78..FF7F */ -#define FriBidiPropertyBlockLevel7_FFE0 (FriBidiPropertyBlockLevel7 + 0x1E0) +#define FriBidiPropertyBlockLevel7_FFE0 (FriBidiPropertyBlockLevel7 + 0x1F0) FriBidiPropertyBlockLevel8_FFE0, /* FFE0..FFE7 */ - FriBidiPropertyBlockLevel8_2040, /* FFE8..FFEF */ + FriBidiPropertyBlockLevel8_23C8, /* FFE8..FFEF */ FriBidiPropertyBlockLevel8_0048, /* FFF0..FFF7 */ FriBidiPropertyBlockLevel8_FFF8, /* FFF8..FFFF */ -#define FriBidiPropertyBlockLevel7_1D160 (FriBidiPropertyBlockLevel7 + 0x1E4) +#define FriBidiPropertyBlockLevel7_1D160 (FriBidiPropertyBlockLevel7 + 0x1F4) FriBidiPropertyBlockLevel8_0CB8, /* 1D160..1D167 */ FriBidiPropertyBlockLevel8_0488, /* 1D168..1D16F */ FriBidiPropertyBlockLevel8_1D170, /* 1D170..1D177 */ FriBidiPropertyBlockLevel8_1D178, /* 1D178..1D17F */ -#define FriBidiPropertyBlockLevel7_1D180 (FriBidiPropertyBlockLevel7 + 0x1E8) +#define FriBidiPropertyBlockLevel7_1D180 (FriBidiPropertyBlockLevel7 + 0x1F8) FriBidiPropertyBlockLevel8_1D180, /* 1D180..1D187 */ FriBidiPropertyBlockLevel8_17D0, /* 1D188..1D18F */ FriBidiPropertyBlockLevel8_0048, /* 1D190..1D197 */ FriBidiPropertyBlockLevel8_0048, /* 1D198..1D19F */ -#define FriBidiPropertyBlockLevel7_1D1A0 (FriBidiPropertyBlockLevel7 + 0x1EC) +#define FriBidiPropertyBlockLevel7_1D1A0 (FriBidiPropertyBlockLevel7 + 0x1FC) FriBidiPropertyBlockLevel8_0048, /* 1D1A0..1D1A7 */ FriBidiPropertyBlockLevel8_1D1A8, /* 1D1A8..1D1AF */ FriBidiPropertyBlockLevel8_0048, /* 1D1B0..1D1B7 */ FriBidiPropertyBlockLevel8_0048, /* 1D1B8..1D1BF */ -#define FriBidiPropertyBlockLevel7_1D7C0 (FriBidiPropertyBlockLevel7 + 0x1F0) +#define FriBidiPropertyBlockLevel7_1D7C0 (FriBidiPropertyBlockLevel7 + 0x200) FriBidiPropertyBlockLevel8_0048, /* 1D7C0..1D7C7 */ FriBidiPropertyBlockLevel8_1D7C8, /* 1D7C8..1D7CF */ FriBidiPropertyBlockLevel8_0030, /* 1D7D0..1D7D7 */ FriBidiPropertyBlockLevel8_0030, /* 1D7D8..1D7DF */ -#define FriBidiPropertyBlockLevel7_E0000 (FriBidiPropertyBlockLevel7 + 0x1F4) +#define FriBidiPropertyBlockLevel7_E0000 (FriBidiPropertyBlockLevel7 + 0x204) FriBidiPropertyBlockLevel8_E0000, /* E0000..E0007 */ FriBidiPropertyBlockLevel8_0048, /* E0008..E000F */ FriBidiPropertyBlockLevel8_0048, /* E0010..E0017 */ FriBidiPropertyBlockLevel8_0048, /* E0018..E001F */ -#define FriBidiPropertyBlockLevel7_E0020 (FriBidiPropertyBlockLevel7 + 0x1F8) +#define FriBidiPropertyBlockLevel7_E0020 (FriBidiPropertyBlockLevel7 + 0x208) FriBidiPropertyBlockLevel8_0000, /* E0020..E0027 */ FriBidiPropertyBlockLevel8_0000, /* E0028..E002F */ @@ -1510,7 +1546,7 @@ static const FriBidiPropCharType *FriBidiPropertyBlockLevel7[4*127] = { FriBidiPropertyBlockLevel8_0000, /* E0038..E003F */ }; -static const FriBidiPropCharType **FriBidiPropertyBlockLevel6[4*63] = { +static const FriBidiPropCharType **FriBidiPropertyBlockLevel6[4*65] = { #define FriBidiPropertyBlockLevel6_0000 (FriBidiPropertyBlockLevel6 + 0x0) @@ -1552,7 +1588,7 @@ static const FriBidiPropCharType **FriBidiPropertyBlockLevel6[4*63] = { FriBidiPropertyBlockLevel7_0380, /* 0380..039F */ FriBidiPropertyBlockLevel7_0100, /* 03A0..03BF */ FriBidiPropertyBlockLevel7_0100, /* 03C0..03DF */ - FriBidiPropertyBlockLevel7_0100, /* 03E0..03FF */ + FriBidiPropertyBlockLevel7_03E0, /* 03E0..03FF */ #define FriBidiPropertyBlockLevel6_0480 (FriBidiPropertyBlockLevel6 + 0x18) @@ -1708,124 +1744,124 @@ static const FriBidiPropCharType **FriBidiPropertyBlockLevel6[4*63] = { FriBidiPropertyBlockLevel7_0100, /* 16C0..16DF */ FriBidiPropertyBlockLevel7_0100, /* 16E0..16FF */ -#define FriBidiPropertyBlockLevel6_1780 (FriBidiPropertyBlockLevel6 + 0x70) +#define FriBidiPropertyBlockLevel6_1700 (FriBidiPropertyBlockLevel6 + 0x70) + + FriBidiPropertyBlockLevel7_1700, /* 1700..171F */ + FriBidiPropertyBlockLevel7_1700, /* 1720..173F */ + FriBidiPropertyBlockLevel7_1740, /* 1740..175F */ + FriBidiPropertyBlockLevel7_1740, /* 1760..177F */ + +#define FriBidiPropertyBlockLevel6_1780 (FriBidiPropertyBlockLevel6 + 0x74) FriBidiPropertyBlockLevel7_0100, /* 1780..179F */ FriBidiPropertyBlockLevel7_17A0, /* 17A0..17BF */ FriBidiPropertyBlockLevel7_17C0, /* 17C0..17DF */ FriBidiPropertyBlockLevel7_0100, /* 17E0..17FF */ -#define FriBidiPropertyBlockLevel6_1800 (FriBidiPropertyBlockLevel6 + 0x74) +#define FriBidiPropertyBlockLevel6_1800 (FriBidiPropertyBlockLevel6 + 0x78) FriBidiPropertyBlockLevel7_1800, /* 1800..181F */ FriBidiPropertyBlockLevel7_0100, /* 1820..183F */ FriBidiPropertyBlockLevel7_0100, /* 1840..185F */ FriBidiPropertyBlockLevel7_0100, /* 1860..187F */ -#define FriBidiPropertyBlockLevel6_1880 (FriBidiPropertyBlockLevel6 + 0x78) +#define FriBidiPropertyBlockLevel6_1880 (FriBidiPropertyBlockLevel6 + 0x7C) FriBidiPropertyBlockLevel7_0100, /* 1880..189F */ FriBidiPropertyBlockLevel7_18A0, /* 18A0..18BF */ FriBidiPropertyBlockLevel7_0100, /* 18C0..18DF */ FriBidiPropertyBlockLevel7_0100, /* 18E0..18FF */ -#define FriBidiPropertyBlockLevel6_1F80 (FriBidiPropertyBlockLevel6 + 0x7C) +#define FriBidiPropertyBlockLevel6_1F80 (FriBidiPropertyBlockLevel6 + 0x80) FriBidiPropertyBlockLevel7_0100, /* 1F80..1F9F */ FriBidiPropertyBlockLevel7_1FA0, /* 1FA0..1FBF */ FriBidiPropertyBlockLevel7_1FC0, /* 1FC0..1FDF */ FriBidiPropertyBlockLevel7_1FE0, /* 1FE0..1FFF */ -#define FriBidiPropertyBlockLevel6_2000 (FriBidiPropertyBlockLevel6 + 0x80) +#define FriBidiPropertyBlockLevel6_2000 (FriBidiPropertyBlockLevel6 + 0x84) FriBidiPropertyBlockLevel7_2000, /* 2000..201F */ FriBidiPropertyBlockLevel7_2020, /* 2020..203F */ FriBidiPropertyBlockLevel7_2040, /* 2040..205F */ FriBidiPropertyBlockLevel7_2060, /* 2060..207F */ -#define FriBidiPropertyBlockLevel6_2080 (FriBidiPropertyBlockLevel6 + 0x84) +#define FriBidiPropertyBlockLevel6_2080 (FriBidiPropertyBlockLevel6 + 0x88) FriBidiPropertyBlockLevel7_2080, /* 2080..209F */ FriBidiPropertyBlockLevel7_20A0, /* 20A0..20BF */ FriBidiPropertyBlockLevel7_20C0, /* 20C0..20DF */ FriBidiPropertyBlockLevel7_20E0, /* 20E0..20FF */ -#define FriBidiPropertyBlockLevel6_2100 (FriBidiPropertyBlockLevel6 + 0x88) +#define FriBidiPropertyBlockLevel6_2100 (FriBidiPropertyBlockLevel6 + 0x8C) FriBidiPropertyBlockLevel7_2100, /* 2100..211F */ FriBidiPropertyBlockLevel7_2120, /* 2120..213F */ FriBidiPropertyBlockLevel7_2140, /* 2140..215F */ FriBidiPropertyBlockLevel7_0100, /* 2160..217F */ -#define FriBidiPropertyBlockLevel6_2180 (FriBidiPropertyBlockLevel6 + 0x8C) +#define FriBidiPropertyBlockLevel6_2180 (FriBidiPropertyBlockLevel6 + 0x90) FriBidiPropertyBlockLevel7_2180, /* 2180..219F */ FriBidiPropertyBlockLevel7_21A0, /* 21A0..21BF */ FriBidiPropertyBlockLevel7_21A0, /* 21C0..21DF */ - FriBidiPropertyBlockLevel7_21E0, /* 21E0..21FF */ + FriBidiPropertyBlockLevel7_21A0, /* 21E0..21FF */ -#define FriBidiPropertyBlockLevel6_2200 (FriBidiPropertyBlockLevel6 + 0x90) +#define FriBidiPropertyBlockLevel6_2200 (FriBidiPropertyBlockLevel6 + 0x94) FriBidiPropertyBlockLevel7_2200, /* 2200..221F */ FriBidiPropertyBlockLevel7_21A0, /* 2220..223F */ FriBidiPropertyBlockLevel7_21A0, /* 2240..225F */ FriBidiPropertyBlockLevel7_21A0, /* 2260..227F */ -#define FriBidiPropertyBlockLevel6_2280 (FriBidiPropertyBlockLevel6 + 0x94) +#define FriBidiPropertyBlockLevel6_2280 (FriBidiPropertyBlockLevel6 + 0x98) FriBidiPropertyBlockLevel7_21A0, /* 2280..229F */ FriBidiPropertyBlockLevel7_21A0, /* 22A0..22BF */ FriBidiPropertyBlockLevel7_21A0, /* 22C0..22DF */ - FriBidiPropertyBlockLevel7_22E0, /* 22E0..22FF */ + FriBidiPropertyBlockLevel7_21A0, /* 22E0..22FF */ -#define FriBidiPropertyBlockLevel6_2300 (FriBidiPropertyBlockLevel6 + 0x98) +#define FriBidiPropertyBlockLevel6_2300 (FriBidiPropertyBlockLevel6 + 0x9C) FriBidiPropertyBlockLevel7_21A0, /* 2300..231F */ FriBidiPropertyBlockLevel7_2320, /* 2320..233F */ FriBidiPropertyBlockLevel7_0100, /* 2340..235F */ FriBidiPropertyBlockLevel7_2360, /* 2360..237F */ -#define FriBidiPropertyBlockLevel6_2380 (FriBidiPropertyBlockLevel6 + 0x9C) +#define FriBidiPropertyBlockLevel6_2380 (FriBidiPropertyBlockLevel6 + 0xA0) FriBidiPropertyBlockLevel7_2380, /* 2380..239F */ - FriBidiPropertyBlockLevel7_0100, /* 23A0..23BF */ - FriBidiPropertyBlockLevel7_0100, /* 23C0..23DF */ + FriBidiPropertyBlockLevel7_21A0, /* 23A0..23BF */ + FriBidiPropertyBlockLevel7_23C0, /* 23C0..23DF */ FriBidiPropertyBlockLevel7_0100, /* 23E0..23FF */ -#define FriBidiPropertyBlockLevel6_2400 (FriBidiPropertyBlockLevel6 + 0xA0) +#define FriBidiPropertyBlockLevel6_2400 (FriBidiPropertyBlockLevel6 + 0xA4) FriBidiPropertyBlockLevel7_21A0, /* 2400..241F */ FriBidiPropertyBlockLevel7_2420, /* 2420..243F */ FriBidiPropertyBlockLevel7_2440, /* 2440..245F */ FriBidiPropertyBlockLevel7_2460, /* 2460..247F */ -#define FriBidiPropertyBlockLevel6_2480 (FriBidiPropertyBlockLevel6 + 0xA4) +#define FriBidiPropertyBlockLevel6_2480 (FriBidiPropertyBlockLevel6 + 0xA8) FriBidiPropertyBlockLevel7_2480, /* 2480..249F */ FriBidiPropertyBlockLevel7_0100, /* 24A0..24BF */ FriBidiPropertyBlockLevel7_0100, /* 24C0..24DF */ FriBidiPropertyBlockLevel7_24E0, /* 24E0..24FF */ -#define FriBidiPropertyBlockLevel6_2500 (FriBidiPropertyBlockLevel6 + 0xA8) - - FriBidiPropertyBlockLevel7_21A0, /* 2500..251F */ - FriBidiPropertyBlockLevel7_21A0, /* 2520..253F */ - FriBidiPropertyBlockLevel7_21A0, /* 2540..255F */ - FriBidiPropertyBlockLevel7_21A0, /* 2560..257F */ - -#define FriBidiPropertyBlockLevel6_2580 (FriBidiPropertyBlockLevel6 + 0xAC) - - FriBidiPropertyBlockLevel7_2320, /* 2580..259F */ - FriBidiPropertyBlockLevel7_21A0, /* 25A0..25BF */ - FriBidiPropertyBlockLevel7_21A0, /* 25C0..25DF */ - FriBidiPropertyBlockLevel7_25E0, /* 25E0..25FF */ - -#define FriBidiPropertyBlockLevel6_2600 (FriBidiPropertyBlockLevel6 + 0xB0) +#define FriBidiPropertyBlockLevel6_2600 (FriBidiPropertyBlockLevel6 + 0xAC) FriBidiPropertyBlockLevel7_2600, /* 2600..261F */ FriBidiPropertyBlockLevel7_21A0, /* 2620..263F */ FriBidiPropertyBlockLevel7_21A0, /* 2640..265F */ - FriBidiPropertyBlockLevel7_22E0, /* 2660..267F */ + FriBidiPropertyBlockLevel7_2660, /* 2660..267F */ + +#define FriBidiPropertyBlockLevel6_2680 (FriBidiPropertyBlockLevel6 + 0xB0) + + FriBidiPropertyBlockLevel7_2680, /* 2680..269F */ + FriBidiPropertyBlockLevel7_0100, /* 26A0..26BF */ + FriBidiPropertyBlockLevel7_0100, /* 26C0..26DF */ + FriBidiPropertyBlockLevel7_0100, /* 26E0..26FF */ #define FriBidiPropertyBlockLevel6_2700 (FriBidiPropertyBlockLevel6 + 0xB4) @@ -1838,15 +1874,15 @@ static const FriBidiPropCharType **FriBidiPropertyBlockLevel6[4*63] = { FriBidiPropertyBlockLevel7_2780, /* 2780..279F */ FriBidiPropertyBlockLevel7_27A0, /* 27A0..27BF */ - FriBidiPropertyBlockLevel7_0100, /* 27C0..27DF */ - FriBidiPropertyBlockLevel7_0100, /* 27E0..27FF */ + FriBidiPropertyBlockLevel7_2180, /* 27C0..27DF */ + FriBidiPropertyBlockLevel7_27E0, /* 27E0..27FF */ #define FriBidiPropertyBlockLevel6_2E80 (FriBidiPropertyBlockLevel6 + 0xBC) FriBidiPropertyBlockLevel7_2E80, /* 2E80..2E9F */ FriBidiPropertyBlockLevel7_21A0, /* 2EA0..2EBF */ FriBidiPropertyBlockLevel7_21A0, /* 2EC0..2EDF */ - FriBidiPropertyBlockLevel7_21E0, /* 2EE0..2EFF */ + FriBidiPropertyBlockLevel7_2EE0, /* 2EE0..2EFF */ #define FriBidiPropertyBlockLevel6_2F80 (FriBidiPropertyBlockLevel6 + 0xC0) @@ -1865,88 +1901,102 @@ static const FriBidiPropCharType **FriBidiPropertyBlockLevel6[4*63] = { #define FriBidiPropertyBlockLevel6_3080 (FriBidiPropertyBlockLevel6 + 0xC8) FriBidiPropertyBlockLevel7_3080, /* 3080..309F */ - FriBidiPropertyBlockLevel7_0100, /* 30A0..30BF */ + FriBidiPropertyBlockLevel7_30A0, /* 30A0..30BF */ FriBidiPropertyBlockLevel7_0100, /* 30C0..30DF */ FriBidiPropertyBlockLevel7_30E0, /* 30E0..30FF */ -#define FriBidiPropertyBlockLevel6_A480 (FriBidiPropertyBlockLevel6 + 0xCC) +#define FriBidiPropertyBlockLevel6_3200 (FriBidiPropertyBlockLevel6 + 0xCC) + + FriBidiPropertyBlockLevel7_0100, /* 3200..321F */ + FriBidiPropertyBlockLevel7_0100, /* 3220..323F */ + FriBidiPropertyBlockLevel7_3240, /* 3240..325F */ + FriBidiPropertyBlockLevel7_0100, /* 3260..327F */ + +#define FriBidiPropertyBlockLevel6_3280 (FriBidiPropertyBlockLevel6 + 0xD0) + + FriBidiPropertyBlockLevel7_0100, /* 3280..329F */ + FriBidiPropertyBlockLevel7_3240, /* 32A0..32BF */ + FriBidiPropertyBlockLevel7_0100, /* 32C0..32DF */ + FriBidiPropertyBlockLevel7_0100, /* 32E0..32FF */ + +#define FriBidiPropertyBlockLevel6_A480 (FriBidiPropertyBlockLevel6 + 0xD4) FriBidiPropertyBlockLevel7_2180, /* A480..A49F */ - FriBidiPropertyBlockLevel7_A4A0, /* A4A0..A4BF */ - FriBidiPropertyBlockLevel7_A4C0, /* A4C0..A4DF */ + FriBidiPropertyBlockLevel7_21A0, /* A4A0..A4BF */ + FriBidiPropertyBlockLevel7_2420, /* A4C0..A4DF */ FriBidiPropertyBlockLevel7_0100, /* A4E0..A4FF */ -#define FriBidiPropertyBlockLevel6_FB00 (FriBidiPropertyBlockLevel6 + 0xD0) +#define FriBidiPropertyBlockLevel6_FB00 (FriBidiPropertyBlockLevel6 + 0xD8) FriBidiPropertyBlockLevel7_FB00, /* FB00..FB1F */ FriBidiPropertyBlockLevel7_FB20, /* FB20..FB3F */ FriBidiPropertyBlockLevel7_FB40, /* FB40..FB5F */ FriBidiPropertyBlockLevel7_0620, /* FB60..FB7F */ -#define FriBidiPropertyBlockLevel6_FB80 (FriBidiPropertyBlockLevel6 + 0xD4) +#define FriBidiPropertyBlockLevel6_FB80 (FriBidiPropertyBlockLevel6 + 0xDC) FriBidiPropertyBlockLevel7_0620, /* FB80..FB9F */ FriBidiPropertyBlockLevel7_0620, /* FBA0..FBBF */ FriBidiPropertyBlockLevel7_0620, /* FBC0..FBDF */ FriBidiPropertyBlockLevel7_0620, /* FBE0..FBFF */ -#define FriBidiPropertyBlockLevel6_FD00 (FriBidiPropertyBlockLevel6 + 0xD8) +#define FriBidiPropertyBlockLevel6_FD00 (FriBidiPropertyBlockLevel6 + 0xE0) FriBidiPropertyBlockLevel7_0620, /* FD00..FD1F */ FriBidiPropertyBlockLevel7_FD20, /* FD20..FD3F */ FriBidiPropertyBlockLevel7_0620, /* FD40..FD5F */ FriBidiPropertyBlockLevel7_0620, /* FD60..FD7F */ -#define FriBidiPropertyBlockLevel6_FE00 (FriBidiPropertyBlockLevel6 + 0xDC) +#define FriBidiPropertyBlockLevel6_FE00 (FriBidiPropertyBlockLevel6 + 0xE4) - FriBidiPropertyBlockLevel7_0100, /* FE00..FE1F */ + FriBidiPropertyBlockLevel7_0340, /* FE00..FE1F */ FriBidiPropertyBlockLevel7_FE20, /* FE20..FE3F */ FriBidiPropertyBlockLevel7_FE40, /* FE40..FE5F */ FriBidiPropertyBlockLevel7_FE60, /* FE60..FE7F */ -#define FriBidiPropertyBlockLevel6_FE80 (FriBidiPropertyBlockLevel6 + 0xE0) +#define FriBidiPropertyBlockLevel6_FE80 (FriBidiPropertyBlockLevel6 + 0xE8) FriBidiPropertyBlockLevel7_0620, /* FE80..FE9F */ FriBidiPropertyBlockLevel7_0620, /* FEA0..FEBF */ FriBidiPropertyBlockLevel7_0620, /* FEC0..FEDF */ FriBidiPropertyBlockLevel7_FEE0, /* FEE0..FEFF */ -#define FriBidiPropertyBlockLevel6_FF00 (FriBidiPropertyBlockLevel6 + 0xE4) +#define FriBidiPropertyBlockLevel6_FF00 (FriBidiPropertyBlockLevel6 + 0xEC) FriBidiPropertyBlockLevel7_FF00, /* FF00..FF1F */ FriBidiPropertyBlockLevel7_0040, /* FF20..FF3F */ - FriBidiPropertyBlockLevel7_FF40, /* FF40..FF5F */ + FriBidiPropertyBlockLevel7_0040, /* FF40..FF5F */ FriBidiPropertyBlockLevel7_FF60, /* FF60..FF7F */ -#define FriBidiPropertyBlockLevel6_FF80 (FriBidiPropertyBlockLevel6 + 0xE8) +#define FriBidiPropertyBlockLevel6_FF80 (FriBidiPropertyBlockLevel6 + 0xF0) FriBidiPropertyBlockLevel7_0100, /* FF80..FF9F */ FriBidiPropertyBlockLevel7_0100, /* FFA0..FFBF */ FriBidiPropertyBlockLevel7_0100, /* FFC0..FFDF */ FriBidiPropertyBlockLevel7_FFE0, /* FFE0..FFFF */ -#define FriBidiPropertyBlockLevel6_1D100 (FriBidiPropertyBlockLevel6 + 0xEC) +#define FriBidiPropertyBlockLevel6_1D100 (FriBidiPropertyBlockLevel6 + 0xF4) FriBidiPropertyBlockLevel7_0100, /* 1D100..1D11F */ FriBidiPropertyBlockLevel7_0100, /* 1D120..1D13F */ FriBidiPropertyBlockLevel7_0100, /* 1D140..1D15F */ FriBidiPropertyBlockLevel7_1D160, /* 1D160..1D17F */ -#define FriBidiPropertyBlockLevel6_1D180 (FriBidiPropertyBlockLevel6 + 0xF0) +#define FriBidiPropertyBlockLevel6_1D180 (FriBidiPropertyBlockLevel6 + 0xF8) FriBidiPropertyBlockLevel7_1D180, /* 1D180..1D19F */ FriBidiPropertyBlockLevel7_1D1A0, /* 1D1A0..1D1BF */ FriBidiPropertyBlockLevel7_0100, /* 1D1C0..1D1DF */ FriBidiPropertyBlockLevel7_0100, /* 1D1E0..1D1FF */ -#define FriBidiPropertyBlockLevel6_1D780 (FriBidiPropertyBlockLevel6 + 0xF4) +#define FriBidiPropertyBlockLevel6_1D780 (FriBidiPropertyBlockLevel6 + 0xFC) FriBidiPropertyBlockLevel7_0100, /* 1D780..1D79F */ FriBidiPropertyBlockLevel7_0100, /* 1D7A0..1D7BF */ FriBidiPropertyBlockLevel7_1D7C0, /* 1D7C0..1D7DF */ FriBidiPropertyBlockLevel7_2460, /* 1D7E0..1D7FF */ -#define FriBidiPropertyBlockLevel6_E0000 (FriBidiPropertyBlockLevel6 + 0xF8) +#define FriBidiPropertyBlockLevel6_E0000 (FriBidiPropertyBlockLevel6 + 0x100) FriBidiPropertyBlockLevel7_E0000, /* E0000..E001F */ FriBidiPropertyBlockLevel7_E0020, /* E0020..E003F */ @@ -1954,7 +2004,7 @@ static const FriBidiPropCharType **FriBidiPropertyBlockLevel6[4*63] = { FriBidiPropertyBlockLevel7_E0020, /* E0060..E007F */ }; -static const FriBidiPropCharType ***FriBidiPropertyBlockLevel5[4*27] = { +static const FriBidiPropCharType ***FriBidiPropertyBlockLevel5[4*29] = { #define FriBidiPropertyBlockLevel5_0000 (FriBidiPropertyBlockLevel5 + 0x0) @@ -2030,7 +2080,7 @@ static const FriBidiPropCharType ***FriBidiPropertyBlockLevel5[4*27] = { FriBidiPropertyBlockLevel6_0100, /* 1600..167F */ FriBidiPropertyBlockLevel6_1680, /* 1680..16FF */ - FriBidiPropertyBlockLevel6_0100, /* 1700..177F */ + FriBidiPropertyBlockLevel6_1700, /* 1700..177F */ FriBidiPropertyBlockLevel6_1780, /* 1780..17FF */ #define FriBidiPropertyBlockLevel5_1800 (FriBidiPropertyBlockLevel5 + 0x2C) @@ -2065,80 +2115,94 @@ static const FriBidiPropCharType ***FriBidiPropertyBlockLevel5[4*27] = { FriBidiPropertyBlockLevel6_2400, /* 2400..247F */ FriBidiPropertyBlockLevel6_2480, /* 2480..24FF */ - FriBidiPropertyBlockLevel6_2500, /* 2500..257F */ - FriBidiPropertyBlockLevel6_2580, /* 2580..25FF */ + FriBidiPropertyBlockLevel6_2280, /* 2500..257F */ + FriBidiPropertyBlockLevel6_2280, /* 2580..25FF */ #define FriBidiPropertyBlockLevel5_2600 (FriBidiPropertyBlockLevel5 + 0x40) FriBidiPropertyBlockLevel6_2600, /* 2600..267F */ - FriBidiPropertyBlockLevel6_0100, /* 2680..26FF */ + FriBidiPropertyBlockLevel6_2680, /* 2680..26FF */ FriBidiPropertyBlockLevel6_2700, /* 2700..277F */ FriBidiPropertyBlockLevel6_2780, /* 2780..27FF */ #define FriBidiPropertyBlockLevel5_2800 (FriBidiPropertyBlockLevel5 + 0x44) - FriBidiPropertyBlockLevel6_2500, /* 2800..287F */ - FriBidiPropertyBlockLevel6_2500, /* 2880..28FF */ - FriBidiPropertyBlockLevel6_0100, /* 2900..297F */ - FriBidiPropertyBlockLevel6_0100, /* 2980..29FF */ + FriBidiPropertyBlockLevel6_2280, /* 2800..287F */ + FriBidiPropertyBlockLevel6_2280, /* 2880..28FF */ + FriBidiPropertyBlockLevel6_2280, /* 2900..297F */ + FriBidiPropertyBlockLevel6_2280, /* 2980..29FF */ + +#define FriBidiPropertyBlockLevel5_2A00 (FriBidiPropertyBlockLevel5 + 0x48) + + FriBidiPropertyBlockLevel6_2280, /* 2A00..2A7F */ + FriBidiPropertyBlockLevel6_2280, /* 2A80..2AFF */ + FriBidiPropertyBlockLevel6_0100, /* 2B00..2B7F */ + FriBidiPropertyBlockLevel6_0100, /* 2B80..2BFF */ -#define FriBidiPropertyBlockLevel5_2E00 (FriBidiPropertyBlockLevel5 + 0x48) +#define FriBidiPropertyBlockLevel5_2E00 (FriBidiPropertyBlockLevel5 + 0x4C) FriBidiPropertyBlockLevel6_0100, /* 2E00..2E7F */ FriBidiPropertyBlockLevel6_2E80, /* 2E80..2EFF */ - FriBidiPropertyBlockLevel6_2500, /* 2F00..2F7F */ + FriBidiPropertyBlockLevel6_2280, /* 2F00..2F7F */ FriBidiPropertyBlockLevel6_2F80, /* 2F80..2FFF */ -#define FriBidiPropertyBlockLevel5_3000 (FriBidiPropertyBlockLevel5 + 0x4C) +#define FriBidiPropertyBlockLevel5_3000 (FriBidiPropertyBlockLevel5 + 0x50) FriBidiPropertyBlockLevel6_3000, /* 3000..307F */ FriBidiPropertyBlockLevel6_3080, /* 3080..30FF */ FriBidiPropertyBlockLevel6_0100, /* 3100..317F */ FriBidiPropertyBlockLevel6_0100, /* 3180..31FF */ -#define FriBidiPropertyBlockLevel5_A400 (FriBidiPropertyBlockLevel5 + 0x50) +#define FriBidiPropertyBlockLevel5_3200 (FriBidiPropertyBlockLevel5 + 0x54) + + FriBidiPropertyBlockLevel6_3200, /* 3200..327F */ + FriBidiPropertyBlockLevel6_3280, /* 3280..32FF */ + FriBidiPropertyBlockLevel6_0100, /* 3300..337F */ + FriBidiPropertyBlockLevel6_0100, /* 3380..33FF */ + +#define FriBidiPropertyBlockLevel5_A400 (FriBidiPropertyBlockLevel5 + 0x58) FriBidiPropertyBlockLevel6_0100, /* A400..A47F */ FriBidiPropertyBlockLevel6_A480, /* A480..A4FF */ FriBidiPropertyBlockLevel6_0100, /* A500..A57F */ FriBidiPropertyBlockLevel6_0100, /* A580..A5FF */ -#define FriBidiPropertyBlockLevel5_FA00 (FriBidiPropertyBlockLevel5 + 0x54) +#define FriBidiPropertyBlockLevel5_FA00 (FriBidiPropertyBlockLevel5 + 0x5C) FriBidiPropertyBlockLevel6_0100, /* FA00..FA7F */ FriBidiPropertyBlockLevel6_0100, /* FA80..FAFF */ FriBidiPropertyBlockLevel6_FB00, /* FB00..FB7F */ FriBidiPropertyBlockLevel6_FB80, /* FB80..FBFF */ -#define FriBidiPropertyBlockLevel5_FC00 (FriBidiPropertyBlockLevel5 + 0x58) +#define FriBidiPropertyBlockLevel5_FC00 (FriBidiPropertyBlockLevel5 + 0x60) FriBidiPropertyBlockLevel6_FB80, /* FC00..FC7F */ FriBidiPropertyBlockLevel6_FB80, /* FC80..FCFF */ FriBidiPropertyBlockLevel6_FD00, /* FD00..FD7F */ FriBidiPropertyBlockLevel6_FB80, /* FD80..FDFF */ -#define FriBidiPropertyBlockLevel5_FE00 (FriBidiPropertyBlockLevel5 + 0x5C) +#define FriBidiPropertyBlockLevel5_FE00 (FriBidiPropertyBlockLevel5 + 0x64) FriBidiPropertyBlockLevel6_FE00, /* FE00..FE7F */ FriBidiPropertyBlockLevel6_FE80, /* FE80..FEFF */ FriBidiPropertyBlockLevel6_FF00, /* FF00..FF7F */ FriBidiPropertyBlockLevel6_FF80, /* FF80..FFFF */ -#define FriBidiPropertyBlockLevel5_1D000 (FriBidiPropertyBlockLevel5 + 0x60) +#define FriBidiPropertyBlockLevel5_1D000 (FriBidiPropertyBlockLevel5 + 0x68) FriBidiPropertyBlockLevel6_0100, /* 1D000..1D07F */ FriBidiPropertyBlockLevel6_0100, /* 1D080..1D0FF */ FriBidiPropertyBlockLevel6_1D100, /* 1D100..1D17F */ FriBidiPropertyBlockLevel6_1D180, /* 1D180..1D1FF */ -#define FriBidiPropertyBlockLevel5_1D600 (FriBidiPropertyBlockLevel5 + 0x64) +#define FriBidiPropertyBlockLevel5_1D600 (FriBidiPropertyBlockLevel5 + 0x6C) FriBidiPropertyBlockLevel6_0100, /* 1D600..1D67F */ FriBidiPropertyBlockLevel6_0100, /* 1D680..1D6FF */ FriBidiPropertyBlockLevel6_0100, /* 1D700..1D77F */ FriBidiPropertyBlockLevel6_1D780, /* 1D780..1D7FF */ -#define FriBidiPropertyBlockLevel5_E0000 (FriBidiPropertyBlockLevel5 + 0x68) +#define FriBidiPropertyBlockLevel5_E0000 (FriBidiPropertyBlockLevel5 + 0x70) FriBidiPropertyBlockLevel6_E0000, /* E0000..E007F */ FriBidiPropertyBlockLevel6_0100, /* E0080..E00FF */ @@ -2186,14 +2250,14 @@ static const FriBidiPropCharType ****FriBidiPropertyBlockLevel4[4*12] = { #define FriBidiPropertyBlockLevel4_2800 (FriBidiPropertyBlockLevel4 + 0x14) FriBidiPropertyBlockLevel5_2800, /* 2800..29FF */ - FriBidiPropertyBlockLevel5_1200, /* 2A00..2BFF */ + FriBidiPropertyBlockLevel5_2A00, /* 2A00..2BFF */ FriBidiPropertyBlockLevel5_1200, /* 2C00..2DFF */ FriBidiPropertyBlockLevel5_2E00, /* 2E00..2FFF */ #define FriBidiPropertyBlockLevel4_3000 (FriBidiPropertyBlockLevel4 + 0x18) FriBidiPropertyBlockLevel5_3000, /* 3000..31FF */ - FriBidiPropertyBlockLevel5_1200, /* 3200..33FF */ + FriBidiPropertyBlockLevel5_3200, /* 3200..33FF */ FriBidiPropertyBlockLevel5_1200, /* 3400..35FF */ FriBidiPropertyBlockLevel5_1200, /* 3600..37FF */ diff --git a/fribidi_tab_mirroring.i b/fribidi_tab_mirroring.i index 465b47e..ef7382d 100644 --- a/fribidi_tab_mirroring.i +++ b/fribidi_tab_mirroring.i @@ -1,5 +1,5 @@ /* - This file was automatically created from BidiMirroring.txt, version 1 + This file was automatically created from BidiMirroring.txt, version 3.2.0 by fribidi_create_mirroring */ @@ -54,6 +54,7 @@ FriBidiMirroredChars[] = {0x220B, 0x2208}, {0x220C, 0x2209}, {0x220D, 0x220A}, + {0x2215, 0x29F5}, {0x223C, 0x223D}, {0x223D, 0x223C}, {0x2243, 0x22CD}, @@ -103,8 +104,13 @@ FriBidiMirroredChars[] = {0x2290, 0x228F}, {0x2291, 0x2292}, {0x2292, 0x2291}, + {0x2298, 0x29B8}, {0x22A2, 0x22A3}, {0x22A3, 0x22A2}, + {0x22A6, 0x2ADE}, + {0x22A8, 0x2AE4}, + {0x22A9, 0x2AE3}, + {0x22AB, 0x2AE5}, {0x22B0, 0x22B1}, {0x22B1, 0x22B0}, {0x22B2, 0x22B3}, @@ -146,12 +152,172 @@ FriBidiMirroredChars[] = {0x22ED, 0x22EC}, {0x22F0, 0x22F1}, {0x22F1, 0x22F0}, + {0x22F2, 0x22FA}, + {0x22F3, 0x22FB}, + {0x22F4, 0x22FC}, + {0x22F6, 0x22FD}, + {0x22F7, 0x22FE}, + {0x22FA, 0x22F2}, + {0x22FB, 0x22F3}, + {0x22FC, 0x22F4}, + {0x22FD, 0x22F6}, + {0x22FE, 0x22F7}, {0x2308, 0x2309}, {0x2309, 0x2308}, {0x230A, 0x230B}, {0x230B, 0x230A}, {0x2329, 0x232A}, {0x232A, 0x2329}, + {0x2768, 0x2769}, + {0x2769, 0x2768}, + {0x276A, 0x276B}, + {0x276B, 0x276A}, + {0x276C, 0x276D}, + {0x276D, 0x276C}, + {0x276E, 0x276F}, + {0x276F, 0x276E}, + {0x2770, 0x2771}, + {0x2771, 0x2770}, + {0x2772, 0x2773}, + {0x2773, 0x2772}, + {0x2774, 0x2775}, + {0x2775, 0x2774}, + {0x27D5, 0x27D6}, + {0x27D6, 0x27D5}, + {0x27DD, 0x27DE}, + {0x27DE, 0x27DD}, + {0x27E2, 0x27E3}, + {0x27E3, 0x27E2}, + {0x27E4, 0x27E5}, + {0x27E5, 0x27E4}, + {0x27E6, 0x27E7}, + {0x27E7, 0x27E6}, + {0x27E8, 0x27E9}, + {0x27E9, 0x27E8}, + {0x27EA, 0x27EB}, + {0x27EB, 0x27EA}, + {0x2983, 0x2984}, + {0x2984, 0x2983}, + {0x2985, 0x2986}, + {0x2986, 0x2985}, + {0x2987, 0x2988}, + {0x2988, 0x2987}, + {0x2989, 0x298A}, + {0x298A, 0x2989}, + {0x298B, 0x298C}, + {0x298C, 0x298B}, + {0x298D, 0x2990}, + {0x298E, 0x298F}, + {0x298F, 0x298E}, + {0x2990, 0x298D}, + {0x2991, 0x2992}, + {0x2992, 0x2991}, + {0x2993, 0x2994}, + {0x2994, 0x2993}, + {0x2995, 0x2996}, + {0x2996, 0x2995}, + {0x2997, 0x2998}, + {0x2998, 0x2997}, + {0x29B8, 0x2298}, + {0x29C0, 0x29C1}, + {0x29C1, 0x29C0}, + {0x29C4, 0x29C5}, + {0x29C5, 0x29C4}, + {0x29CF, 0x29D0}, + {0x29D0, 0x29CF}, + {0x29D1, 0x29D2}, + {0x29D2, 0x29D1}, + {0x29D4, 0x29D5}, + {0x29D5, 0x29D4}, + {0x29D8, 0x29D9}, + {0x29D9, 0x29D8}, + {0x29DA, 0x29DB}, + {0x29DB, 0x29DA}, + {0x29F5, 0x2215}, + {0x29F8, 0x29F9}, + {0x29F9, 0x29F8}, + {0x29FC, 0x29FD}, + {0x29FD, 0x29FC}, + {0x2A2B, 0x2A2C}, + {0x2A2C, 0x2A2D}, + {0x2A2D, 0x2A2E}, + {0x2A2E, 0x2A2D}, + {0x2A34, 0x2A35}, + {0x2A35, 0x2A34}, + {0x2A3C, 0x2A3D}, + {0x2A3D, 0x2A3C}, + {0x2A64, 0x2A65}, + {0x2A65, 0x2A64}, + {0x2A79, 0x2A7A}, + {0x2A7A, 0x2A79}, + {0x2A7D, 0x2A7E}, + {0x2A7E, 0x2A7D}, + {0x2A7F, 0x2A80}, + {0x2A80, 0x2A7F}, + {0x2A81, 0x2A82}, + {0x2A82, 0x2A81}, + {0x2A83, 0x2A84}, + {0x2A84, 0x2A83}, + {0x2A8B, 0x2A8C}, + {0x2A8C, 0x2A8B}, + {0x2A91, 0x2A92}, + {0x2A92, 0x2A91}, + {0x2A93, 0x2A94}, + {0x2A94, 0x2A93}, + {0x2A95, 0x2A96}, + {0x2A96, 0x2A95}, + {0x2A97, 0x2A98}, + {0x2A98, 0x2A97}, + {0x2A99, 0x2A9A}, + {0x2A9A, 0x2A99}, + {0x2A9B, 0x2A9C}, + {0x2A9C, 0x2A9B}, + {0x2AA1, 0x2AA2}, + {0x2AA2, 0x2AA1}, + {0x2AA6, 0x2AA7}, + {0x2AA7, 0x2AA6}, + {0x2AA8, 0x2AA9}, + {0x2AA9, 0x2AA8}, + {0x2AAA, 0x2AAB}, + {0x2AAB, 0x2AAA}, + {0x2AAC, 0x2AAD}, + {0x2AAD, 0x2AAC}, + {0x2AAF, 0x2AB0}, + {0x2AB0, 0x2AAF}, + {0x2AB3, 0x2AB4}, + {0x2AB4, 0x2AB3}, + {0x2ABB, 0x2ABC}, + {0x2ABC, 0x2ABB}, + {0x2ABD, 0x2ABE}, + {0x2ABE, 0x2ABD}, + {0x2ABF, 0x2AC0}, + {0x2AC0, 0x2ABF}, + {0x2AC1, 0x2AC2}, + {0x2AC2, 0x2AC1}, + {0x2AC3, 0x2AC4}, + {0x2AC4, 0x2AC3}, + {0x2AC5, 0x2AC6}, + {0x2AC6, 0x2AC5}, + {0x2ACD, 0x2ACE}, + {0x2ACE, 0x2ACD}, + {0x2ACF, 0x2AD0}, + {0x2AD0, 0x2ACF}, + {0x2AD1, 0x2AD2}, + {0x2AD2, 0x2AD1}, + {0x2AD3, 0x2AD4}, + {0x2AD4, 0x2AD3}, + {0x2AD5, 0x2AD6}, + {0x2AD6, 0x2AD5}, + {0x2ADE, 0x22A6}, + {0x2AE3, 0x22A9}, + {0x2AE4, 0x22A8}, + {0x2AE5, 0x22AB}, + {0x2AEC, 0x2AED}, + {0x2AED, 0x2AEC}, + {0x2AF7, 0x2AF8}, + {0x2AF8, 0x2AF7}, + {0x2AF9, 0x2AFA}, + {0x2AFA, 0x2AF9}, {0x3008, 0x3009}, {0x3009, 0x3008}, {0x300A, 0x300B}, @@ -170,11 +336,23 @@ FriBidiMirroredChars[] = {0x3019, 0x3018}, {0x301A, 0x301B}, {0x301B, 0x301A}, + {0xFF08, 0xFF09}, + {0xFF09, 0xFF08}, + {0xFF1C, 0xFF1E}, + {0xFF1E, 0xFF1C}, + {0xFF3B, 0xFF3D}, + {0xFF3D, 0xFF3B}, + {0xFF5B, 0xFF5D}, + {0xFF5D, 0xFF5B}, + {0xFF5F, 0xFF60}, + {0xFF60, 0xFF5F}, + {0xFF62, 0xFF63}, + {0xFF63, 0xFF62}, } ; /* *INDENT-ON* */ -const int nFriBidiMirroredChars = 140; +const int nFriBidiMirroredChars = 318; #endif /* FRIBIDI_TAB_MIRRORING_I */ diff --git a/fribidi_unicode.h b/fribidi_unicode.h index 5447d8d..c928497 100644 --- a/fribidi_unicode.h +++ b/fribidi_unicode.h @@ -31,7 +31,7 @@ extern "C" /* Unicode version */ #define FRIBIDI_UNICODE_CHARS 0x110000 -#define FRIBIDI_UNICODE_VERSION "3.1.1" +#define FRIBIDI_UNICODE_VERSION "3.2.0" /* UAX#9 Unicode BiDirectional Algorithm */ #define UNI_MAX_BIDI_LEVEL 61 diff --git a/fribidi_utils.c b/fribidi_utils.c index d2d0f54..e632324 100644 --- a/fribidi_utils.c +++ b/fribidi_utils.c @@ -61,7 +61,7 @@ * &num_vis_ranges, *vis_ranges); **----------------------------------------------------------------------*/ void -fribidi_map_range (FriBidiEnv* fribidienv, +fribidi_map_range (FriBidiEnv *fribidienv, /* input */ FriBidiStrIndex in_span[2], /* Start and end span */ FriBidiStrIndex len, boolean is_v2l_map, /* Needed for embedding_level */ @@ -113,15 +113,15 @@ fribidi_map_range (FriBidiEnv* fribidienv, * length of the section in the new string that needs redrawing. *----------------------------------------------------------------------*/ void -fribidi_find_string_changes ( FriBidiEnv* fribidienv, - /* input */ - const FriBidiChar *old_str, - FriBidiStrIndex old_len, - const FriBidiChar *new_str, - FriBidiStrIndex new_len, - /* output */ - FriBidiStrIndex *change_start, - FriBidiStrIndex *change_len) +fribidi_find_string_changes (FriBidiEnv *fribidienv, + /* input */ + const FriBidiChar *old_str, + FriBidiStrIndex old_len, + const FriBidiChar *new_str, + FriBidiStrIndex new_len, + /* output */ + FriBidiStrIndex *change_start, + FriBidiStrIndex *change_len) { FriBidiStrIndex i, num_bol, num_eol; @@ -193,13 +193,12 @@ fribidi_find_string_changes ( FriBidiEnv* fribidienv, * *----------------------------------------------------------------------*/ void -fribidi_xpos_resolve (FriBidiEnv* fribidienv, +fribidi_xpos_resolve (FriBidiEnv *fribidienv, /* input */ int x_pos, int x_offset, FriBidiStrIndex len, const FriBidiLevel *embedding_level_list, FriBidiCharType base_dir, - const FriBidiStrIndex *vis2log, - const int *char_widths, + const FriBidiStrIndex *vis2log, const int *char_widths, /* output */ FriBidiStrIndex *res_log_pos, FriBidiStrIndex *res_vis_pos, @@ -303,7 +302,7 @@ fribidi_xpos_resolve (FriBidiEnv* fribidienv, * if the embedding level for the character is odd. *----------------------------------------------------------------------*/ boolean -fribidi_is_char_rtl (FriBidiEnv* fribidienv, +fribidi_is_char_rtl (FriBidiEnv *fribidienv, const FriBidiLevel *embedding_level_list, FriBidiCharType base_dir, FriBidiStrIndex idx) { @@ -320,16 +319,15 @@ fribidi_is_char_rtl (FriBidiEnv* fribidienv, * the same attributes. *----------------------------------------------------------------------*/ void -fribidi_runs_log2vis ( FriBidiEnv* fribidienv, - /* input */ - const FriBidiList *logical_runs, /* List of FriBidiRunType */ - FriBidiStrIndex len, - const FriBidiStrIndex *log2vis, - FriBidiCharType base_dir, /* TBD: remove it, not needed */ - /* output */ - FriBidiList **visual_runs) +fribidi_runs_log2vis (FriBidiEnv *fribidienv, + /* input */ + const FriBidiList *logical_runs, /* List of FriBidiRunType */ + FriBidiStrIndex len, const FriBidiStrIndex *log2vis, FriBidiCharType base_dir, /* TBD: remove it, not needed */ + /* output */ + FriBidiList **visual_runs) { - void **visual_attribs = (void **) fribidi_malloc (fribidienv, sizeof (void *) * len); + void **visual_attribs = + (void **) fribidi_malloc (fribidienv, sizeof (void *) * len); void *current_attrib; FriBidiStrIndex pos, i; const FriBidiList *list; @@ -361,16 +359,16 @@ fribidi_runs_log2vis ( FriBidiEnv* fribidienv, { if (i == len || current_attrib != visual_attribs[i]) { - FriBidiRunType *run = - (FriBidiRunType *) fribidi_malloc (fribidienv, sizeof (FriBidiRunType)); + FriBidiRunType *run = (FriBidiRunType *) fribidi_malloc (fribidienv, + sizeof + (FriBidiRunType)); run->length = i - current_idx; run->attribute = current_attrib; /* Keeping track of the last node is crucial for efficiency for long lists... */ if (last == NULL) - last = *visual_runs = fribidi_list_append (fribidienv, - NULL, run); + last = *visual_runs = fribidi_list_append (fribidienv, NULL, run); else { fribidi_list_append (fribidienv, last, run); diff --git a/fribidi_wcwidth.c b/fribidi_wcwidth.c index b03f767..1c8f7b5 100644 --- a/fribidi_wcwidth.c +++ b/fribidi_wcwidth.c @@ -1,9 +1,18 @@ /* * This is an implementation of wcwidth() and wcswidth() as defined in - * "The Single UNIX Specification, Version 2, The Open Group, 1997" - * <http://www.UNIX-systems.org/online.html> + * IEEE Std 1002.1-2001. * - * Markus Kuhn -- 2001-09-08 -- public domain + * http://www.opengroup.org/onlinepubs/007904975/functions/wcwidth.html + * http://www.opengroup.org/onlinepubs/007904975/functions/wcswidth.html + * + * Markus Kuhn -- 2002-03-28 (Unicode 3.2) + * Permission to use, copy, modify, and distribute this software + * for any purpose and without fee is hereby granted. The author + * disclaims all warranties with regard to this software. + * + * Latest version: + * + * http://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c */ /* Modified by Behdad Esfahbod <behdad@bamdad.org> to use fribidi types*/ @@ -12,8 +21,8 @@ struct interval { - unsigned short first; - unsigned short last; + int first; + int last; }; /* auxiliary function for binary search in interval table */ @@ -66,14 +75,17 @@ bisearch (FriBidiChar ucs, const struct interval *table, int max) * ISO 8859-1 and WGL4 characters, Unicode control characters, * etc.) have a column width of 1. * + * This implementation assumes that FriBidiChar characters are encoded + * in ISO 10646. */ int fribidi_wcwidth (FriBidiChar ucs) { /* sorted list of non-overlapping intervals of non-spacing characters */ + /* generated with "uniset +cat=Me +cat=Mn +cat=Cf +200B c" */ static const struct interval combining[] = { - {0x0300, 0x034E}, {0x0360, 0x0362}, {0x0483, 0x0486}, + {0x0300, 0x034F}, {0x0360, 0x036F}, {0x0483, 0x0486}, {0x0488, 0x0489}, {0x0591, 0x05A1}, {0x05A3, 0x05B9}, {0x05BB, 0x05BD}, {0x05BF, 0x05BF}, {0x05C1, 0x05C2}, {0x05C4, 0x05C4}, {0x064B, 0x0655}, {0x0670, 0x0670}, @@ -101,12 +113,15 @@ fribidi_wcwidth (FriBidiChar ucs) {0x0F86, 0x0F87}, {0x0F90, 0x0F97}, {0x0F99, 0x0FBC}, {0x0FC6, 0x0FC6}, {0x102D, 0x1030}, {0x1032, 0x1032}, {0x1036, 0x1037}, {0x1039, 0x1039}, {0x1058, 0x1059}, - {0x1160, 0x11FF}, {0x17B7, 0x17BD}, {0x17C6, 0x17C6}, + {0x1712, 0x1714}, {0x1732, 0x1734}, {0x1752, 0x1753}, + {0x1772, 0x1773}, {0x17B7, 0x17BD}, {0x17C6, 0x17C6}, {0x17C9, 0x17D3}, {0x180B, 0x180E}, {0x18A9, 0x18A9}, - {0x200B, 0x200F}, {0x202A, 0x202E}, {0x206A, 0x206F}, - {0x20D0, 0x20E3}, {0x302A, 0x302F}, {0x3099, 0x309A}, - {0xFB1E, 0xFB1E}, {0xFE20, 0xFE23}, {0xFEFF, 0xFEFF}, - {0xFFF9, 0xFFFB} + {0x200B, 0x200F}, {0x202A, 0x202E}, {0x2060, 0x2063}, + {0x206A, 0x206F}, {0x20D0, 0x20EA}, {0x302A, 0x302F}, + {0x3099, 0x309A}, {0xFB1E, 0xFB1E}, {0xFE00, 0xFE0F}, + {0xFE20, 0xFE23}, {0xFEFF, 0xFEFF}, {0xFFF9, 0xFFFB}, + {0x1D167, 0x1D169}, {0x1D173, 0x1D182}, {0x1D185, 0x1D18B}, + {0x1D1AA, 0x1D1AD}, {0xE0001, 0xE0001}, {0xE0020, 0xE007F} }; /* test for 8-bit control characters */ @@ -123,11 +138,11 @@ fribidi_wcwidth (FriBidiChar ucs) /* if we arrive here, ucs is not a combining or C0/C1 control character */ return 1 + (ucs >= 0x1100 && (ucs <= 0x115f || /* Hangul Jamo init. consonants */ - (ucs >= 0x2e80 && ucs <= 0xa4cf && (ucs & ~0x0011) != 0x300a && ucs != 0x303f) || /* CJK ... Yi */ + ucs == 0x2329 || ucs == 0x232a || (ucs >= 0x2e80 && ucs <= 0xa4cf && ucs != 0x303f) || /* CJK ... Yi */ (ucs >= 0xac00 && ucs <= 0xd7a3) || /* Hangul Syllables */ (ucs >= 0xf900 && ucs <= 0xfaff) || /* CJK Compatibility Ideographs */ (ucs >= 0xfe30 && ucs <= 0xfe6f) || /* CJK Compatibility Forms */ - (ucs >= 0xff00 && ucs <= 0xff5f) || /* Fullwidth Forms */ + (ucs >= 0xff00 && ucs <= 0xff60) || /* Fullwidth Forms */ (ucs >= 0xffe0 && ucs <= 0xffe6) || (ucs >= 0x20000 && ucs <= 0x2ffff))); } @@ -157,10 +172,10 @@ fribidi_wcswidth (const FriBidiChar *pwcs, FriBidiStrIndex n) * recommended for general use. */ static int -wcwidth_cjk (FriBidiChar ucs) +fribidi_wcwidth_cjk (FriBidiChar ucs) { /* sorted list of non-overlapping intervals of East Asian Ambiguous - * characters */ + * characters, generated with "uniset +WIDTH-A -cat=Me -cat=Mn -cat=Cf c" */ static const struct interval ambiguous[] = { {0x00A1, 0x00A1}, {0x00A4, 0x00A4}, {0x00A7, 0x00A8}, {0x00AA, 0x00AA}, {0x00AD, 0x00AE}, {0x00B0, 0x00B4}, @@ -179,32 +194,31 @@ wcwidth_cjk (FriBidiChar ucs) {0x01DC, 0x01DC}, {0x0251, 0x0251}, {0x0261, 0x0261}, {0x02C4, 0x02C4}, {0x02C7, 0x02C7}, {0x02C9, 0x02CB}, {0x02CD, 0x02CD}, {0x02D0, 0x02D0}, {0x02D8, 0x02DB}, - {0x02DD, 0x02DD}, {0x02DF, 0x02DF}, {0x0300, 0x034E}, - {0x0360, 0x0362}, {0x0391, 0x03A1}, {0x03A3, 0x03A9}, - {0x03B1, 0x03C1}, {0x03C3, 0x03C9}, {0x0401, 0x0401}, - {0x0410, 0x044F}, {0x0451, 0x0451}, {0x2010, 0x2010}, - {0x2013, 0x2016}, {0x2018, 0x2019}, {0x201C, 0x201D}, - {0x2020, 0x2022}, {0x2024, 0x2027}, {0x2030, 0x2030}, - {0x2032, 0x2033}, {0x2035, 0x2035}, {0x203B, 0x203B}, - {0x203E, 0x203E}, {0x2074, 0x2074}, {0x207F, 0x207F}, - {0x2081, 0x2084}, {0x20AC, 0x20AC}, {0x2103, 0x2103}, - {0x2105, 0x2105}, {0x2109, 0x2109}, {0x2113, 0x2113}, - {0x2116, 0x2116}, {0x2121, 0x2122}, {0x2126, 0x2126}, - {0x212B, 0x212B}, {0x2153, 0x2155}, {0x215B, 0x215E}, - {0x2160, 0x216B}, {0x2170, 0x2179}, {0x2190, 0x2199}, - {0x21B8, 0x21B9}, {0x21D2, 0x21D2}, {0x21D4, 0x21D4}, - {0x21E7, 0x21E7}, {0x2200, 0x2200}, {0x2202, 0x2203}, - {0x2207, 0x2208}, {0x220B, 0x220B}, {0x220F, 0x220F}, - {0x2211, 0x2211}, {0x2215, 0x2215}, {0x221A, 0x221A}, - {0x221D, 0x2220}, {0x2223, 0x2223}, {0x2225, 0x2225}, - {0x2227, 0x222C}, {0x222E, 0x222E}, {0x2234, 0x2237}, - {0x223C, 0x223D}, {0x2248, 0x2248}, {0x224C, 0x224C}, - {0x2252, 0x2252}, {0x2260, 0x2261}, {0x2264, 0x2267}, - {0x226A, 0x226B}, {0x226E, 0x226F}, {0x2282, 0x2283}, - {0x2286, 0x2287}, {0x2295, 0x2295}, {0x2299, 0x2299}, - {0x22A5, 0x22A5}, {0x22BF, 0x22BF}, {0x2312, 0x2312}, - {0x2329, 0x232A}, {0x2460, 0x24BF}, {0x24D0, 0x24E9}, - {0x2500, 0x254B}, {0x2550, 0x2574}, {0x2580, 0x258F}, + {0x02DD, 0x02DD}, {0x02DF, 0x02DF}, {0x0391, 0x03A1}, + {0x03A3, 0x03A9}, {0x03B1, 0x03C1}, {0x03C3, 0x03C9}, + {0x0401, 0x0401}, {0x0410, 0x044F}, {0x0451, 0x0451}, + {0x2010, 0x2010}, {0x2013, 0x2016}, {0x2018, 0x2019}, + {0x201C, 0x201D}, {0x2020, 0x2022}, {0x2024, 0x2027}, + {0x2030, 0x2030}, {0x2032, 0x2033}, {0x2035, 0x2035}, + {0x203B, 0x203B}, {0x203E, 0x203E}, {0x2074, 0x2074}, + {0x207F, 0x207F}, {0x2081, 0x2084}, {0x20AC, 0x20AC}, + {0x2103, 0x2103}, {0x2105, 0x2105}, {0x2109, 0x2109}, + {0x2113, 0x2113}, {0x2116, 0x2116}, {0x2121, 0x2122}, + {0x2126, 0x2126}, {0x212B, 0x212B}, {0x2153, 0x2154}, + {0x215B, 0x215E}, {0x2160, 0x216B}, {0x2170, 0x2179}, + {0x2190, 0x2199}, {0x21B8, 0x21B9}, {0x21D2, 0x21D2}, + {0x21D4, 0x21D4}, {0x21E7, 0x21E7}, {0x2200, 0x2200}, + {0x2202, 0x2203}, {0x2207, 0x2208}, {0x220B, 0x220B}, + {0x220F, 0x220F}, {0x2211, 0x2211}, {0x2215, 0x2215}, + {0x221A, 0x221A}, {0x221D, 0x2220}, {0x2223, 0x2223}, + {0x2225, 0x2225}, {0x2227, 0x222C}, {0x222E, 0x222E}, + {0x2234, 0x2237}, {0x223C, 0x223D}, {0x2248, 0x2248}, + {0x224C, 0x224C}, {0x2252, 0x2252}, {0x2260, 0x2261}, + {0x2264, 0x2267}, {0x226A, 0x226B}, {0x226E, 0x226F}, + {0x2282, 0x2283}, {0x2286, 0x2287}, {0x2295, 0x2295}, + {0x2299, 0x2299}, {0x22A5, 0x22A5}, {0x22BF, 0x22BF}, + {0x2312, 0x2312}, {0x2460, 0x24E9}, {0x24EB, 0x24FE}, + {0x2500, 0x254B}, {0x2550, 0x2573}, {0x2580, 0x258F}, {0x2592, 0x2595}, {0x25A0, 0x25A1}, {0x25A3, 0x25A9}, {0x25B2, 0x25B3}, {0x25B6, 0x25B7}, {0x25BC, 0x25BD}, {0x25C0, 0x25C1}, {0x25C6, 0x25C8}, {0x25CB, 0x25CB}, @@ -213,8 +227,7 @@ wcwidth_cjk (FriBidiChar ucs) {0x261C, 0x261C}, {0x261E, 0x261E}, {0x2640, 0x2640}, {0x2642, 0x2642}, {0x2660, 0x2661}, {0x2663, 0x2665}, {0x2667, 0x266A}, {0x266C, 0x266D}, {0x266F, 0x266F}, - {0x273D, 0x273D}, {0x3008, 0x300B}, {0x3014, 0x3015}, - {0x3018, 0x301B}, {0xFFFD, 0xFFFD} + {0x273D, 0x273D}, {0x2776, 0x277F}, {0xFFFD, 0xFFFD} }; /* binary search in table of non-spacing characters */ @@ -232,7 +245,7 @@ fribidi_wcswidth_cjk (const FriBidiChar *pwcs, FriBidiStrIndex n) int w, width = 0; for (; *pwcs && n-- > 0; pwcs++) - if ((w = wcwidth_cjk (*pwcs)) < 0) + if ((w = fribidi_wcwidth_cjk (*pwcs)) < 0) return -1; else width += w; @@ -218,11 +218,13 @@ write_array () { int kk, jj; fprintf (f, "\n\n#define %s", table_name); - if (best_t[lev + 1] != 1) { - fprintf (f, "Level%d_%0*X", best_lev - lev - 1, digits, - x[i] * pow[n - nn]); - } - fprintf (f, " (%sLevel%d + 0x%0X)\n", table_name, best_lev - lev - 1, ofs); + if (best_t[lev + 1] != 1) + { + fprintf (f, "Level%d_%0*X", best_lev - lev - 1, digits, + x[i] * pow[n - nn]); + } + fprintf (f, " (%sLevel%d + 0x%0X)\n", table_name, best_lev - lev - 1, + ofs); kk = x[i] * cluster; if (!lev) if (name) diff --git a/unidata/BidiMirroring.txt b/unidata/BidiMirroring.txt index 8ac5be9..fa62021 100644 --- a/unidata/BidiMirroring.txt +++ b/unidata/BidiMirroring.txt @@ -1,10 +1,10 @@ -# BidiMirroring-1.txt +# BidiMirroring-3.2.0.txt # # This file is an informative supplement to the UnicodeData file. It # lists characters that have the mirrored property # where there is another Unicode character that typically has a glyph # that is the mirror image of the original character's glyph. -# The repertoire covered by the file is Unicode 3.0.1. +# The repertoire covered by the file is Unicode 3.2.0. # # The file contains a list of lines with mappings from one code point # to another one for character-based mirroring. @@ -20,14 +20,15 @@ # Code points with the "mirrored" property but no appropriate mirrors are # listed as comments at the end of the file. # -# For information on bidi mirroring, see UTR #21: Bidirectional Algorithm, +# For information on bidi mirroring, see UAX #9: Bidirectional Algorithm, # at http://www.unicode.org/unicode/reports/tr9/ # # Please address any comments to <errata@unicode.org>. # Note that this is an archival address: messages will be checked, # but do not expect an immediate response. # -# This file was originally created by Markus Scherer +# This file was originally created by Markus Scherer. +# Extended for Unicode 3.2 by Ken Whistler. # # ############################################################ @@ -55,6 +56,7 @@ 220B; 2208 # CONTAINS AS MEMBER 220C; 2209 # DOES NOT CONTAIN AS MEMBER 220D; 220A # SMALL CONTAINS AS MEMBER +2215; 29F5 # DIVISION SLASH 223C; 223D # TILDE OPERATOR 223D; 223C # REVERSED TILDE 2243; 22CD # ASYMPTOTICALLY EQUAL TO @@ -104,8 +106,13 @@ 2290; 228F # SQUARE ORIGINAL OF 2291; 2292 # SQUARE IMAGE OF OR EQUAL TO 2292; 2291 # SQUARE ORIGINAL OF OR EQUAL TO +2298; 29B8 # CIRCLED DIVISION SLASH 22A2; 22A3 # RIGHT TACK 22A3; 22A2 # LEFT TACK +22A6; 2ADE # ASSERTION +22A8; 2AE4 # TRUE +22A9; 2AE3 # FORCES +22AB; 2AE5 # DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE 22B0; 22B1 # PRECEDES UNDER RELATION 22B1; 22B0 # SUCCEEDS UNDER RELATION 22B2; 22B3 # NORMAL SUBGROUP OF @@ -147,12 +154,172 @@ 22ED; 22EC # [BEST FIT] DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL 22F0; 22F1 # UP RIGHT DIAGONAL ELLIPSIS 22F1; 22F0 # DOWN RIGHT DIAGONAL ELLIPSIS +22F2; 22FA # ELEMENT OF WITH LONG HORIZONTAL STROKE +22F3; 22FB # ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE +22F4; 22FC # SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE +22F6; 22FD # ELEMENT OF WITH OVERBAR +22F7; 22FE # SMALL ELEMENT OF WITH OVERBAR +22FA; 22F2 # CONTAINS WITH LONG HORIZONTAL STROKE +22FB; 22F3 # CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE +22FC; 22F4 # SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE +22FD; 22F6 # CONTAINS WITH OVERBAR +22FE; 22F7 # SMALL CONTAINS WITH OVERBAR 2308; 2309 # LEFT CEILING 2309; 2308 # RIGHT CEILING 230A; 230B # LEFT FLOOR 230B; 230A # RIGHT FLOOR 2329; 232A # LEFT-POINTING ANGLE BRACKET 232A; 2329 # RIGHT-POINTING ANGLE BRACKET +2768; 2769 # MEDIUM LEFT PARENTHESIS ORNAMENT +2769; 2768 # MEDIUM RIGHT PARENTHESIS ORNAMENT +276A; 276B # MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT +276B; 276A # MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT +276C; 276D # MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT +276D; 276C # MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT +276E; 276F # HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT +276F; 276E # HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT +2770; 2771 # HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT +2771; 2770 # HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT +2772; 2773 # LIGHT LEFT TORTOISE SHELL BRACKET +2773; 2772 # LIGHT RIGHT TORTOISE SHELL BRACKET +2774; 2775 # MEDIUM LEFT CURLY BRACKET ORNAMENT +2775; 2774 # MEDIUM RIGHT CURLY BRACKET ORNAMENT +27D5; 27D6 # LEFT OUTER JOIN +27D6; 27D5 # RIGHT OUTER JOIN +27DD; 27DE # LONG RIGHT TACK +27DE; 27DD # LONG LEFT TACK +27E2; 27E3 # WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK +27E3; 27E2 # WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK +27E4; 27E5 # WHITE SQUARE WITH LEFTWARDS TICK +27E5; 27E4 # WHITE SQUARE WITH RIGHTWARDS TICK +27E6; 27E7 # MATHEMATICAL LEFT WHITE SQUARE BRACKET +27E7; 27E6 # MATHEMATICAL RIGHT WHITE SQUARE BRACKET +27E8; 27E9 # MATHEMATICAL LEFT ANGLE BRACKET +27E9; 27E8 # MATHEMATICAL RIGHT ANGLE BRACKET +27EA; 27EB # MATHEMATICAL LEFT DOUBLE ANGLE BRACKET +27EB; 27EA # MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET +2983; 2984 # LEFT WHITE CURLY BRACKET +2984; 2983 # RIGHT WHITE CURLY BRACKET +2985; 2986 # LEFT WHITE PARENTHESIS +2986; 2985 # RIGHT WHITE PARENTHESIS +2987; 2988 # Z NOTATION LEFT IMAGE BRACKET +2988; 2987 # Z NOTATION RIGHT IMAGE BRACKET +2989; 298A # Z NOTATION LEFT BINDING BRACKET +298A; 2989 # Z NOTATION RIGHT BINDING BRACKET +298B; 298C # LEFT SQUARE BRACKET WITH UNDERBAR +298C; 298B # RIGHT SQUARE BRACKET WITH UNDERBAR +298D; 2990 # LEFT SQUARE BRACKET WITH TICK IN TOP CORNER +298E; 298F # RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER +298F; 298E # LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER +2990; 298D # RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER +2991; 2992 # LEFT ANGLE BRACKET WITH DOT +2992; 2991 # RIGHT ANGLE BRACKET WITH DOT +2993; 2994 # LEFT ARC LESS-THAN BRACKET +2994; 2993 # RIGHT ARC GREATER-THAN BRACKET +2995; 2996 # DOUBLE LEFT ARC GREATER-THAN BRACKET +2996; 2995 # DOUBLE RIGHT ARC LESS-THAN BRACKET +2997; 2998 # LEFT BLACK TORTOISE SHELL BRACKET +2998; 2997 # RIGHT BLACK TORTOISE SHELL BRACKET +29B8; 2298 # CIRCLED REVERSE SOLIDUS +29C0; 29C1 # CIRCLED LESS-THAN +29C1; 29C0 # CIRCLED GREATER-THAN +29C4; 29C5 # SQUARED RISING DIAGONAL SLASH +29C5; 29C4 # SQUARED FALLING DIAGONAL SLASH +29CF; 29D0 # LEFT TRIANGLE BESIDE VERTICAL BAR +29D0; 29CF # VERTICAL BAR BESIDE RIGHT TRIANGLE +29D1; 29D2 # BOWTIE WITH LEFT HALF BLACK +29D2; 29D1 # BOWTIE WITH RIGHT HALF BLACK +29D4; 29D5 # TIMES WITH LEFT HALF BLACK +29D5; 29D4 # TIMES WITH RIGHT HALF BLACK +29D8; 29D9 # LEFT WIGGLY FENCE +29D9; 29D8 # RIGHT WIGGLY FENCE +29DA; 29DB # LEFT DOUBLE WIGGLY FENCE +29DB; 29DA # RIGHT DOUBLE WIGGLY FENCE +29F5; 2215 # REVERSE SOLIDUS OPERATOR +29F8; 29F9 # BIG SOLIDUS +29F9; 29F8 # BIG REVERSE SOLIDUS +29FC; 29FD # LEFT-POINTING CURVED ANGLE BRACKET +29FD; 29FC # RIGHT-POINTING CURVED ANGLE BRACKET +2A2B; 2A2C # MINUS SIGN WITH FALLING DOTS +2A2C; 2A2B # MINUS SIGN WITH RISING DOTS +2A2D; 2A2C # PLUS SIGN IN LEFT HALF CIRCLE +2A2E; 2A2D # PLUS SIGN IN RIGHT HALF CIRCLE +2A34; 2A35 # MULTIPLICATION SIGN IN LEFT HALF CIRCLE +2A35; 2A34 # MULTIPLICATION SIGN IN RIGHT HALF CIRCLE +2A3C; 2A3D # INTERIOR PRODUCT +2A3D; 2A3C # RIGHTHAND INTERIOR PRODUCT +2A64; 2A65 # Z NOTATION DOMAIN ANTIRESTRICTION +2A65; 2A64 # Z NOTATION RANGE ANTIRESTRICTION +2A79; 2A7A # LESS-THAN WITH CIRCLE INSIDE +2A7A; 2A79 # GREATER-THAN WITH CIRCLE INSIDE +2A7D; 2A7E # LESS-THAN OR SLANTED EQUAL TO +2A7E; 2A7D # GREATER-THAN OR SLANTED EQUAL TO +2A7F; 2A80 # LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE +2A80; 2A7F # GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE +2A81; 2A82 # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE +2A82; 2A81 # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE +2A83; 2A84 # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT +2A84; 2A83 # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT +2A8B; 2A8C # LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN +2A8C; 2A8B # GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN +2A91; 2A92 # LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL +2A92; 2A91 # GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL +2A93; 2A94 # LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL +2A94; 2A93 # GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL +2A95; 2A96 # SLANTED EQUAL TO OR LESS-THAN +2A96; 2A95 # SLANTED EQUAL TO OR GREATER-THAN +2A97; 2A98 # SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE +2A98; 2A97 # SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE +2A99; 2A9A # DOUBLE-LINE EQUAL TO OR LESS-THAN +2A9A; 2A99 # DOUBLE-LINE EQUAL TO OR GREATER-THAN +2A9B; 2A9C # DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN +2A9C; 2A9B # DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN +2AA1; 2AA2 # DOUBLE NESTED LESS-THAN +2AA2; 2AA1 # DOUBLE NESTED GREATER-THAN +2AA6; 2AA7 # LESS-THAN CLOSED BY CURVE +2AA7; 2AA6 # GREATER-THAN CLOSED BY CURVE +2AA8; 2AA9 # LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL +2AA9; 2AA8 # GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL +2AAA; 2AAB # SMALLER THAN +2AAB; 2AAA # LARGER THAN +2AAC; 2AAD # SMALLER THAN OR EQUAL TO +2AAD; 2AAC # LARGER THAN OR EQUAL TO +2AAF; 2AB0 # PRECEDES ABOVE SINGLE-LINE EQUALS SIGN +2AB0; 2AAF # SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN +2AB3; 2AB4 # PRECEDES ABOVE EQUALS SIGN +2AB4; 2AB3 # SUCCEEDS ABOVE EQUALS SIGN +2ABB; 2ABC # DOUBLE PRECEDES +2ABC; 2ABB # DOUBLE SUCCEEDS +2ABD; 2ABE # SUBSET WITH DOT +2ABE; 2ABD # SUPERSET WITH DOT +2ABF; 2AC0 # SUBSET WITH PLUS SIGN BELOW +2AC0; 2ABF # SUPERSET WITH PLUS SIGN BELOW +2AC1; 2AC2 # SUBSET WITH MULTIPLICATION SIGN BELOW +2AC2; 2AC1 # SUPERSET WITH MULTIPLICATION SIGN BELOW +2AC3; 2AC4 # SUBSET OF OR EQUAL TO WITH DOT ABOVE +2AC4; 2AC3 # SUPERSET OF OR EQUAL TO WITH DOT ABOVE +2AC5; 2AC6 # SUBSET OF ABOVE EQUALS SIGN +2AC6; 2AC5 # SUPERSET OF ABOVE EQUALS SIGN +2ACD; 2ACE # SQUARE LEFT OPEN BOX OPERATOR +2ACE; 2ACD # SQUARE RIGHT OPEN BOX OPERATOR +2ACF; 2AD0 # CLOSED SUBSET +2AD0; 2ACF # CLOSED SUPERSET +2AD1; 2AD2 # CLOSED SUBSET OR EQUAL TO +2AD2; 2AD1 # CLOSED SUPERSET OR EQUAL TO +2AD3; 2AD4 # SUBSET ABOVE SUPERSET +2AD4; 2AD3 # SUPERSET ABOVE SUBSET +2AD5; 2AD6 # SUBSET ABOVE SUBSET +2AD6; 2AD5 # SUPERSET ABOVE SUPERSET +2ADE; 22A6 # SHORT LEFT TACK +2AE3; 22A9 # DOUBLE VERTICAL BAR LEFT TURNSTILE +2AE4; 22A8 # VERTICAL BAR DOUBLE LEFT TURNSTILE +2AE5; 22AB # DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE +2AEC; 2AED # DOUBLE STROKE NOT SIGN +2AED; 2AEC # REVERSED DOUBLE STROKE NOT SIGN +2AF7; 2AF8 # TRIPLE NESTED LESS-THAN +2AF8; 2AF7 # TRIPLE NESTED GREATER-THAN +2AF9; 2AFA # DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO +2AFA; 2AF9 # DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO 3008; 3009 # LEFT ANGLE BRACKET 3009; 3008 # RIGHT ANGLE BRACKET 300A; 300B # LEFT DOUBLE ANGLE BRACKET @@ -163,23 +330,35 @@ 300F; 300E # [BEST FIT] RIGHT WHITE CORNER BRACKET 3010; 3011 # LEFT BLACK LENTICULAR BRACKET 3011; 3010 # RIGHT BLACK LENTICULAR BRACKET -3014; 3015 # [BEST FIT] LEFT TORTOISE SHELL BRACKET -3015; 3014 # [BEST FIT] RIGHT TORTOISE SHELL BRACKET +3014; 3015 # LEFT TORTOISE SHELL BRACKET +3015; 3014 # RIGHT TORTOISE SHELL BRACKET 3016; 3017 # LEFT WHITE LENTICULAR BRACKET 3017; 3016 # RIGHT WHITE LENTICULAR BRACKET 3018; 3019 # LEFT WHITE TORTOISE SHELL BRACKET 3019; 3018 # RIGHT WHITE TORTOISE SHELL BRACKET 301A; 301B # LEFT WHITE SQUARE BRACKET 301B; 301A # RIGHT WHITE SQUARE BRACKET +FF08; FF09 # FULLWIDTH LEFT PARENTHESIS +FF09; FF08 # FULLWIDTH RIGHT PARENTHESIS +FF1C; FF1E # FULLWIDTH LESS-THAN SIGN +FF1E; FF1C # FULLWIDTH GREATER-THAN SIGN +FF3B; FF3D # FULLWIDTH LEFT SQUARE BRACKET +FF3D; FF3B # FULLWIDTH RIGHT SQUARE BRACKET +FF5B; FF5D # FULLWIDTH LEFT CURLY BRACKET +FF5D; FF5B # FULLWIDTH RIGHT CURLY BRACKET +FF5F; FF60 # FULLWIDTH LEFT WHITE PARENTHESIS +FF60; FF5F # FULLWIDTH RIGHT WHITE PARENTHESIS +FF62; FF63 # [BEST FIT] HALFWIDTH LEFT CORNER BRACKET +FF63; FF62 # [BEST FIT] HALFWIDTH RIGHT CORNER BRACKET # The following characters have no appropriate mirroring character +# 2140; DOUBLE-STRUCK N-ARY SUMMATION # 2201; COMPLEMENT # 2202; PARTIAL DIFFERENTIAL # 2203; THERE EXISTS # 2204; THERE DOES NOT EXIST # 2211; N-ARY SUMMATION -# 2215; DIVISION SLASH # 2216; SET MINUS # 221A; SQUARE ROOT # 221B; CUBE ROOT @@ -220,13 +399,8 @@ # 2260; NOT EQUAL TO # 2262; NOT IDENTICAL TO # 228C; MULTISET -# 2298; CIRCLED DIVISION SLASH -# 22A6; ASSERTION # 22A7; MODELS -# 22A8; TRUE -# 22A9; FORCES # 22AA; TRIPLE VERTICAL BAR RIGHT TURNSTILE -# 22AB; DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE # 22AC; DOES NOT PROVE # 22AD; NOT TRUE # 22AE; DOES NOT FORCE @@ -234,5 +408,122 @@ # 22B8; MULTIMAP # 22BE; RIGHT ANGLE WITH ARC # 22BF; RIGHT TRIANGLE +# 22F5; ELEMENT OF WITH DOT ABOVE +# 22F8; ELEMENT OF WITH UNDERBAR +# 22F9; ELEMENT OF WITH TWO HORIZONTAL STROKES +# 22FF; Z NOTATION BAG MEMBERSHIP # 2320; TOP HALF INTEGRAL # 2321; BOTTOM HALF INTEGRAL +# 27D3; LOWER RIGHT CORNER WITH DOT +# 27D4; UPPER LEFT CORNER WITH DOT +# 27DC; LEFT MULTIMAP +# 299B; MEASURED ANGLE OPENING LEFT +# 299C; RIGHT ANGLE VARIANT WITH SQUARE +# 299D; MEASURED RIGHT ANGLE WITH DOT +# 299E; ANGLE WITH S INSIDE +# 299F; ACUTE ANGLE +# 29A0; SPHERICAL ANGLE OPENING LEFT +# 29A1; SPHERICAL ANGLE OPENING UP +# 29A2; TURNED ANGLE +# 29A3; REVERSED ANGLE +# 29A4; ANGLE WITH UNDERBAR +# 29A5; REVERSED ANGLE WITH UNDERBAR +# 29A6; OBLIQUE ANGLE OPENING UP +# 29A7; OBLIQUE ANGLE OPENING DOWN +# 29A8; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT +# 29A9; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT +# 29AA; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT +# 29AB; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT +# 29AC; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP +# 29AD; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP +# 29AE; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN +# 29AF; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN +# 29C2; CIRCLE WITH SMALL CIRCLE TO THE RIGHT +# 29C3; CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT +# 29C9; TWO JOINED SQUARES +# 29CE; RIGHT TRIANGLE ABOVE LEFT TRIANGLE +# 29DC; INCOMPLETE INFINITY +# 29E1; INCREASES AS +# 29E3; EQUALS SIGN AND SLANTED PARALLEL +# 29E4; EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE +# 29E5; IDENTICAL TO AND SLANTED PARALLEL +# 29E8; DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK +# 29E9; DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK +# 29F4; RULE-DELAYED +# 29F6; SOLIDUS WITH OVERBAR +# 29F7; REVERSE SOLIDUS WITH HORIZONTAL STROKE +# 2A0A; MODULO TWO SUM +# 2A0B; SUMMATION WITH INTEGRAL +# 2A0C; QUADRUPLE INTEGRAL OPERATOR +# 2A0D; FINITE PART INTEGRAL +# 2A0E; INTEGRAL WITH DOUBLE STROKE +# 2A0F; INTEGRAL AVERAGE WITH SLASH +# 2A10; CIRCULATION FUNCTION +# 2A11; ANTICLOCKWISE INTEGRATION +# 2A12; LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE +# 2A13; LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE +# 2A14; LINE INTEGRATION NOT INCLUDING THE POLE +# 2A15; INTEGRAL AROUND A POINT OPERATOR +# 2A16; QUATERNION INTEGRAL OPERATOR +# 2A17; INTEGRAL WITH LEFTWARDS ARROW WITH HOOK +# 2A18; INTEGRAL WITH TIMES SIGN +# 2A19; INTEGRAL WITH INTERSECTION +# 2A1A; INTEGRAL WITH UNION +# 2A1B; INTEGRAL WITH OVERBAR +# 2A1C; INTEGRAL WITH UNDERBAR +# 2A1E; LARGE LEFT TRIANGLE OPERATOR +# 2A1F; Z NOTATION SCHEMA COMPOSITION +# 2A20; Z NOTATION SCHEMA PIPING +# 2A21; Z NOTATION SCHEMA PROJECTION +# 2A24; PLUS SIGN WITH TILDE ABOVE +# 2A26; PLUS SIGN WITH TILDE BELOW +# 2A29; MINUS SIGN WITH COMMA ABOVE +# 2A3E; Z NOTATION RELATIONAL COMPOSITION +# 2A57; SLOPING LARGE OR +# 2A58; SLOPING LARGE AND +# 2A6A; TILDE OPERATOR WITH DOT ABOVE +# 2A6B; TILDE OPERATOR WITH RISING DOTS +# 2A6C; SIMILAR MINUS SIMILAR +# 2A6D; CONGRUENT WITH DOT ABOVE +# 2A6F; ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT +# 2A70; APPROXIMATELY EQUAL OR EQUAL TO +# 2A73; EQUALS SIGN ABOVE TILDE OPERATOR +# 2A74; DOUBLE COLON EQUAL +# 2A7B; LESS-THAN WITH QUESTION MARK ABOVE +# 2A7C; GREATER-THAN WITH QUESTION MARK ABOVE +# 2A85; LESS-THAN OR APPROXIMATE +# 2A86; GREATER-THAN OR APPROXIMATE +# 2A87; LESS-THAN AND SINGLE-LINE NOT EQUAL TO +# 2A88; GREATER-THAN AND SINGLE-LINE NOT EQUAL TO +# 2A89; LESS-THAN AND NOT APPROXIMATE +# 2A8A; GREATER-THAN AND NOT APPROXIMATE +# 2A8D; LESS-THAN ABOVE SIMILAR OR EQUAL +# 2A8E; GREATER-THAN ABOVE SIMILAR OR EQUAL +# 2A8F; LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN +# 2A90; GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN +# 2A9D; SIMILAR OR LESS-THAN +# 2A9E; SIMILAR OR GREATER-THAN +# 2A9F; SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN +# 2AA0; SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN +# 2AA3; DOUBLE NESTED LESS-THAN WITH UNDERBAR +# 2AB1; PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO +# 2AB2; SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO +# 2AB5; PRECEDES ABOVE NOT EQUAL TO +# 2AB6; SUCCEEDS ABOVE NOT EQUAL TO +# 2AB7; PRECEDES ABOVE ALMOST EQUAL TO +# 2AB8; SUCCEEDS ABOVE ALMOST EQUAL TO +# 2AB9; PRECEDES ABOVE NOT ALMOST EQUAL TO +# 2ABA; SUCCEEDS ABOVE NOT ALMOST EQUAL TO +# 2AC7; SUBSET OF ABOVE TILDE OPERATOR +# 2AC8; SUPERSET OF ABOVE TILDE OPERATOR +# 2AC9; SUBSET OF ABOVE ALMOST EQUAL TO +# 2ACA; SUPERSET OF ABOVE ALMOST EQUAL TO +# 2ACB; SUBSET OF ABOVE NOT EQUAL TO +# 2ACC; SUPERSET OF ABOVE NOT EQUAL TO +# 2ADC; FORKING +# 2AE2; VERTICAL BAR TRIPLE RIGHT TURNSTILE +# 2AE6; LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL +# 2AEE; DOES NOT DIVIDE WITH REVERSED NEGATION SLASH +# 2AF3; PARALLEL WITH TILDE OPERATOR +# 2AFB; TRIPLE SOLIDUS BINARY RELATION +# 2AFD; DOUBLE SOLIDUS OPERATOR diff --git a/unidata/UnicodeData.txt b/unidata/UnicodeData.txt index 90f047a..125a692 100644 --- a/unidata/UnicodeData.txt +++ b/unidata/UnicodeData.txt @@ -7,11 +7,11 @@ 0006;<control>;Cc;0;BN;;;;;N;ACKNOWLEDGE;;;; 0007;<control>;Cc;0;BN;;;;;N;BELL;;;; 0008;<control>;Cc;0;BN;;;;;N;BACKSPACE;;;; -0009;<control>;Cc;0;S;;;;;N;HORIZONTAL TABULATION;;;; -000A;<control>;Cc;0;B;;;;;N;LINE FEED;;;; -000B;<control>;Cc;0;S;;;;;N;VERTICAL TABULATION;;;; -000C;<control>;Cc;0;WS;;;;;N;FORM FEED;;;; -000D;<control>;Cc;0;B;;;;;N;CARRIAGE RETURN;;;; +0009;<control>;Cc;0;S;;;;;N;CHARACTER TABULATION;;;; +000A;<control>;Cc;0;B;;;;;N;LINE FEED (LF);;;; +000B;<control>;Cc;0;S;;;;;N;LINE TABULATION;;;; +000C;<control>;Cc;0;WS;;;;;N;FORM FEED (FF);;;; +000D;<control>;Cc;0;B;;;;;N;CARRIAGE RETURN (CR);;;; 000E;<control>;Cc;0;BN;;;;;N;SHIFT OUT;;;; 000F;<control>;Cc;0;BN;;;;;N;SHIFT IN;;;; 0010;<control>;Cc;0;BN;;;;;N;DATA LINK ESCAPE;;;; @@ -26,10 +26,10 @@ 0019;<control>;Cc;0;BN;;;;;N;END OF MEDIUM;;;; 001A;<control>;Cc;0;BN;;;;;N;SUBSTITUTE;;;; 001B;<control>;Cc;0;BN;;;;;N;ESCAPE;;;; -001C;<control>;Cc;0;B;;;;;N;FILE SEPARATOR;;;; -001D;<control>;Cc;0;B;;;;;N;GROUP SEPARATOR;;;; -001E;<control>;Cc;0;B;;;;;N;RECORD SEPARATOR;;;; -001F;<control>;Cc;0;S;;;;;N;UNIT SEPARATOR;;;; +001C;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR FOUR;;;; +001D;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR THREE;;;; +001E;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR TWO;;;; +001F;<control>;Cc;0;S;;;;;N;INFORMATION SEPARATOR ONE;;;; 0020;SPACE;Zs;0;WS;;;;;N;;;;; 0021;EXCLAMATION MARK;Po;0;ON;;;;;N;;;;; 0022;QUOTATION MARK;Po;0;ON;;;;;N;;;;; @@ -131,14 +131,14 @@ 0082;<control>;Cc;0;BN;;;;;N;BREAK PERMITTED HERE;;;; 0083;<control>;Cc;0;BN;;;;;N;NO BREAK HERE;;;; 0084;<control>;Cc;0;BN;;;;;N;;;;; -0085;<control>;Cc;0;B;;;;;N;NEXT LINE;;;; +0085;<control>;Cc;0;B;;;;;N;NEXT LINE (NEL);;;; 0086;<control>;Cc;0;BN;;;;;N;START OF SELECTED AREA;;;; 0087;<control>;Cc;0;BN;;;;;N;END OF SELECTED AREA;;;; 0088;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION SET;;;; 0089;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION WITH JUSTIFICATION;;;; 008A;<control>;Cc;0;BN;;;;;N;LINE TABULATION SET;;;; -008B;<control>;Cc;0;BN;;;;;N;PARTIAL LINE DOWN;;;; -008C;<control>;Cc;0;BN;;;;;N;PARTIAL LINE UP;;;; +008B;<control>;Cc;0;BN;;;;;N;PARTIAL LINE FORWARD;;;; +008C;<control>;Cc;0;BN;;;;;N;PARTIAL LINE BACKWARD;;;; 008D;<control>;Cc;0;BN;;;;;N;REVERSE LINE FEED;;;; 008E;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT TWO;;;; 008F;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT THREE;;;; @@ -412,7 +412,7 @@ 019B;LATIN SMALL LETTER LAMBDA WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED LAMBDA;;;; 019C;LATIN CAPITAL LETTER TURNED M;Lu;0;L;;;;;N;;;;026F; 019D;LATIN CAPITAL LETTER N WITH LEFT HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER N HOOK;;;0272; -019E;LATIN SMALL LETTER N WITH LONG RIGHT LEG;Ll;0;L;;;;;N;;;;; +019E;LATIN SMALL LETTER N WITH LONG RIGHT LEG;Ll;0;L;;;;;N;;;0220;;0220 019F;LATIN CAPITAL LETTER O WITH MIDDLE TILDE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED O;*;;0275; 01A0;LATIN CAPITAL LETTER O WITH HORN;Lu;0;L;004F 031B;;;;N;LATIN CAPITAL LETTER O HORN;;;01A1; 01A1;LATIN SMALL LETTER O WITH HORN;Ll;0;L;006F 031B;;;;N;LATIN SMALL LETTER O HORN;;01A0;;01A0 @@ -542,6 +542,7 @@ 021D;LATIN SMALL LETTER YOGH;Ll;0;L;;;;;N;;;021C;;021C 021E;LATIN CAPITAL LETTER H WITH CARON;Lu;0;L;0048 030C;;;;N;;;;021F; 021F;LATIN SMALL LETTER H WITH CARON;Ll;0;L;0068 030C;;;;N;;;021E;;021E +0220;LATIN CAPITAL LETTER N WITH LONG RIGHT LEG;Lu;0;L;;;;;N;;;;019E; 0222;LATIN CAPITAL LETTER OU;Lu;0;L;;;;;N;;;;0223; 0223;LATIN SMALL LETTER OU;Ll;0;L;;;;;N;;;0222;;0222 0224;LATIN CAPITAL LETTER Z WITH HOOK;Lu;0;L;;;;;N;;;;0225; @@ -718,7 +719,7 @@ 02ED;MODIFIER LETTER UNASPIRATED;Sk;0;ON;;;;;N;;;;; 02EE;MODIFIER LETTER DOUBLE APOSTROPHE;Lm;0;L;;;;;N;;;;; 0300;COMBINING GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING GRAVE;Varia;;; -0301;COMBINING ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING ACUTE;Oxia;;; +0301;COMBINING ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING ACUTE;Oxia, Tonos;;; 0302;COMBINING CIRCUMFLEX ACCENT;Mn;230;NSM;;;;;N;NON-SPACING CIRCUMFLEX;;;; 0303;COMBINING TILDE;Mn;230;NSM;;;;;N;NON-SPACING TILDE;;;; 0304;COMBINING MACRON;Mn;230;NSM;;;;;N;NON-SPACING MACRON;;;; @@ -730,7 +731,7 @@ 030A;COMBINING RING ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RING ABOVE;;;; 030B;COMBINING DOUBLE ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE ACUTE;;;; 030C;COMBINING CARON;Mn;230;NSM;;;;;N;NON-SPACING HACEK;;;; -030D;COMBINING VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL LINE ABOVE;Tonos;;; +030D;COMBINING VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL LINE ABOVE;;;; 030E;COMBINING DOUBLE VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE VERTICAL LINE ABOVE;;;; 030F;COMBINING DOUBLE GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE GRAVE;;;; 0310;COMBINING CANDRABINDU;Mn;230;NSM;;;;;N;NON-SPACING CANDRABINDU;;;; @@ -796,9 +797,23 @@ 034C;COMBINING ALMOST EQUAL TO ABOVE;Mn;230;NSM;;;;;N;;;;; 034D;COMBINING LEFT RIGHT ARROW BELOW;Mn;220;NSM;;;;;N;;;;; 034E;COMBINING UPWARDS ARROW BELOW;Mn;220;NSM;;;;;N;;;;; +034F;COMBINING GRAPHEME JOINER;Mn;0;NSM;;;;;N;;;;; 0360;COMBINING DOUBLE TILDE;Mn;234;NSM;;;;;N;;;;; 0361;COMBINING DOUBLE INVERTED BREVE;Mn;234;NSM;;;;;N;;;;; 0362;COMBINING DOUBLE RIGHTWARDS ARROW BELOW;Mn;233;NSM;;;;;N;;;;; +0363;COMBINING LATIN SMALL LETTER A;Mn;230;NSM;;;;;N;;;;; +0364;COMBINING LATIN SMALL LETTER E;Mn;230;NSM;;;;;N;;;;; +0365;COMBINING LATIN SMALL LETTER I;Mn;230;NSM;;;;;N;;;;; +0366;COMBINING LATIN SMALL LETTER O;Mn;230;NSM;;;;;N;;;;; +0367;COMBINING LATIN SMALL LETTER U;Mn;230;NSM;;;;;N;;;;; +0368;COMBINING LATIN SMALL LETTER C;Mn;230;NSM;;;;;N;;;;; +0369;COMBINING LATIN SMALL LETTER D;Mn;230;NSM;;;;;N;;;;; +036A;COMBINING LATIN SMALL LETTER H;Mn;230;NSM;;;;;N;;;;; +036B;COMBINING LATIN SMALL LETTER M;Mn;230;NSM;;;;;N;;;;; +036C;COMBINING LATIN SMALL LETTER R;Mn;230;NSM;;;;;N;;;;; +036D;COMBINING LATIN SMALL LETTER T;Mn;230;NSM;;;;;N;;;;; +036E;COMBINING LATIN SMALL LETTER V;Mn;230;NSM;;;;;N;;;;; +036F;COMBINING LATIN SMALL LETTER X;Mn;230;NSM;;;;;N;;;;; 0374;GREEK NUMERAL SIGN;Sk;0;ON;02B9;;;;N;GREEK UPPER NUMERAL SIGN;Dexia keraia;;; 0375;GREEK LOWER NUMERAL SIGN;Sk;0;ON;;;;;N;;Aristeri keraia;;; 037A;GREEK YPOGEGRAMMENI;Lm;0;L;<compat> 0020 0345;;;;N;GREEK SPACING IOTA BELOW;;;; @@ -883,6 +898,8 @@ 03D5;GREEK PHI SYMBOL;Ll;0;L;<compat> 03C6;;;;N;GREEK SMALL LETTER SCRIPT PHI;;03A6;;03A6 03D6;GREEK PI SYMBOL;Ll;0;L;<compat> 03C0;;;;N;GREEK SMALL LETTER OMEGA PI;;03A0;;03A0 03D7;GREEK KAI SYMBOL;Ll;0;L;;;;;N;;;;; +03D8;GREEK LETTER ARCHAIC KOPPA;Lu;0;L;;;;;N;;*;;03D9; +03D9;GREEK SMALL LETTER ARCHAIC KOPPA;Ll;0;L;;;;;N;;*;03D8;;03D8 03DA;GREEK LETTER STIGMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER STIGMA;;;03DB; 03DB;GREEK SMALL LETTER STIGMA;Ll;0;L;;;;;N;;;03DA;;03DA 03DC;GREEK LETTER DIGAMMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DIGAMMA;;;03DD; @@ -911,6 +928,7 @@ 03F3;GREEK LETTER YOT;Ll;0;L;;;;;N;;;;; 03F4;GREEK CAPITAL THETA SYMBOL;Lu;0;L;<compat> 0398;;;;N;;;;03B8; 03F5;GREEK LUNATE EPSILON SYMBOL;Ll;0;L;<compat> 03B5;;;;N;;;0395;;0395 +03F6;GREEK REVERSED LUNATE EPSILON SYMBOL;Sm;0;ON;;;;;N;;;;; 0400;CYRILLIC CAPITAL LETTER IE WITH GRAVE;Lu;0;L;0415 0300;;;;N;;;;0450; 0401;CYRILLIC CAPITAL LETTER IO;Lu;0;L;0415 0308;;;;N;;;;0451; 0402;CYRILLIC CAPITAL LETTER DJE;Lu;0;L;;;;;N;;Serbocroatian;;0452; @@ -1048,6 +1066,8 @@ 0486;COMBINING CYRILLIC PSILI PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PSILI PNEUMATA;;;; 0488;COMBINING CYRILLIC HUNDRED THOUSANDS SIGN;Me;0;NSM;;;;;N;;;;; 0489;COMBINING CYRILLIC MILLIONS SIGN;Me;0;NSM;;;;;N;;;;; +048A;CYRILLIC CAPITAL LETTER SHORT I WITH TAIL;Lu;0;L;;;;;N;;;;048B; +048B;CYRILLIC SMALL LETTER SHORT I WITH TAIL;Ll;0;L;;;;;N;;;048A;;048A 048C;CYRILLIC CAPITAL LETTER SEMISOFT SIGN;Lu;0;L;;;;;N;;;;048D; 048D;CYRILLIC SMALL LETTER SEMISOFT SIGN;Ll;0;L;;;;;N;;;048C;;048C 048E;CYRILLIC CAPITAL LETTER ER WITH TICK;Lu;0;L;;;;;N;;;;048F; @@ -1105,10 +1125,16 @@ 04C2;CYRILLIC SMALL LETTER ZHE WITH BREVE;Ll;0;L;0436 0306;;;;N;CYRILLIC SMALL LETTER SHORT ZHE;;04C1;;04C1 04C3;CYRILLIC CAPITAL LETTER KA WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA HOOK;;;04C4; 04C4;CYRILLIC SMALL LETTER KA WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA HOOK;;04C3;;04C3 +04C5;CYRILLIC CAPITAL LETTER EL WITH TAIL;Lu;0;L;;;;;N;;;;04C6; +04C6;CYRILLIC SMALL LETTER EL WITH TAIL;Ll;0;L;;;;;N;;;04C5;;04C5 04C7;CYRILLIC CAPITAL LETTER EN WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN HOOK;;;04C8; 04C8;CYRILLIC SMALL LETTER EN WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN HOOK;;04C7;;04C7 +04C9;CYRILLIC CAPITAL LETTER EN WITH TAIL;Lu;0;L;;;;;N;;;;04CA; +04CA;CYRILLIC SMALL LETTER EN WITH TAIL;Ll;0;L;;;;;N;;;04C9;;04C9 04CB;CYRILLIC CAPITAL LETTER KHAKASSIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH LEFT DESCENDER;;;04CC; 04CC;CYRILLIC SMALL LETTER KHAKASSIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH LEFT DESCENDER;;04CB;;04CB +04CD;CYRILLIC CAPITAL LETTER EM WITH TAIL;Lu;0;L;;;;;N;;;;04CE; +04CE;CYRILLIC SMALL LETTER EM WITH TAIL;Ll;0;L;;;;;N;;;04CD;;04CD 04D0;CYRILLIC CAPITAL LETTER A WITH BREVE;Lu;0;L;0410 0306;;;;N;;;;04D1; 04D1;CYRILLIC SMALL LETTER A WITH BREVE;Ll;0;L;0430 0306;;;;N;;;04D0;;04D0 04D2;CYRILLIC CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0410 0308;;;;N;;;;04D3; @@ -1149,6 +1175,22 @@ 04F5;CYRILLIC SMALL LETTER CHE WITH DIAERESIS;Ll;0;L;0447 0308;;;;N;;;04F4;;04F4 04F8;CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS;Lu;0;L;042B 0308;;;;N;;;;04F9; 04F9;CYRILLIC SMALL LETTER YERU WITH DIAERESIS;Ll;0;L;044B 0308;;;;N;;;04F8;;04F8 +0500;CYRILLIC CAPITAL LETTER KOMI DE;Lu;0;L;;;;;N;;;;0501; +0501;CYRILLIC SMALL LETTER KOMI DE;Ll;0;L;;;;;N;;;0500;;0500 +0502;CYRILLIC CAPITAL LETTER KOMI DJE;Lu;0;L;;;;;N;;;;0503; +0503;CYRILLIC SMALL LETTER KOMI DJE;Ll;0;L;;;;;N;;;0502;;0502 +0504;CYRILLIC CAPITAL LETTER KOMI ZJE;Lu;0;L;;;;;N;;;;0505; +0505;CYRILLIC SMALL LETTER KOMI ZJE;Ll;0;L;;;;;N;;;0504;;0504 +0506;CYRILLIC CAPITAL LETTER KOMI DZJE;Lu;0;L;;;;;N;;;;0507; +0507;CYRILLIC SMALL LETTER KOMI DZJE;Ll;0;L;;;;;N;;;0506;;0506 +0508;CYRILLIC CAPITAL LETTER KOMI LJE;Lu;0;L;;;;;N;;;;0509; +0509;CYRILLIC SMALL LETTER KOMI LJE;Ll;0;L;;;;;N;;;0508;;0508 +050A;CYRILLIC CAPITAL LETTER KOMI NJE;Lu;0;L;;;;;N;;;;050B; +050B;CYRILLIC SMALL LETTER KOMI NJE;Ll;0;L;;;;;N;;;050A;;050A +050C;CYRILLIC CAPITAL LETTER KOMI SJE;Lu;0;L;;;;;N;;;;050D; +050D;CYRILLIC SMALL LETTER KOMI SJE;Ll;0;L;;;;;N;;;050C;;050C +050E;CYRILLIC CAPITAL LETTER KOMI TJE;Lu;0;L;;;;;N;;;;050F; +050F;CYRILLIC SMALL LETTER KOMI TJE;Ll;0;L;;;;;N;;;050E;;050E 0531;ARMENIAN CAPITAL LETTER AYB;Lu;0;L;;;;;N;;;;0561; 0532;ARMENIAN CAPITAL LETTER BEN;Lu;0;L;;;;;N;;;;0562; 0533;ARMENIAN CAPITAL LETTER GIM;Lu;0;L;;;;;N;;;;0563; @@ -1382,6 +1424,8 @@ 066B;ARABIC DECIMAL SEPARATOR;Po;0;AN;;;;;N;;;;; 066C;ARABIC THOUSANDS SEPARATOR;Po;0;AN;;;;;N;;;;; 066D;ARABIC FIVE POINTED STAR;Po;0;AL;;;;;N;;;;; +066E;ARABIC LETTER DOTLESS BEH;Lo;0;AL;;;;;N;;;;; +066F;ARABIC LETTER DOTLESS QAF;Lo;0;AL;;;;;N;;;;; 0670;ARABIC LETTER SUPERSCRIPT ALEF;Mn;35;NSM;;;;;N;ARABIC ALEF ABOVE;;;; 0671;ARABIC LETTER ALEF WASLA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAT WASL ON ALEF;;;; 0672;ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH ON ALEF;;;; @@ -1491,7 +1535,7 @@ 06DA;ARABIC SMALL HIGH JEEM;Mn;230;NSM;;;;;N;;;;; 06DB;ARABIC SMALL HIGH THREE DOTS;Mn;230;NSM;;;;;N;;;;; 06DC;ARABIC SMALL HIGH SEEN;Mn;230;NSM;;;;;N;;;;; -06DD;ARABIC END OF AYAH;Me;0;NSM;;;;;N;;;;; +06DD;ARABIC END OF AYAH;Cf;0;AL;;;;;N;;;;; 06DE;ARABIC START OF RUB EL HIZB;Me;0;NSM;;;;;N;;;;; 06DF;ARABIC SMALL HIGH ROUNDED ZERO;Mn;230;NSM;;;;;N;;;;; 06E0;ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO;Mn;230;NSM;;;;;N;;;;; @@ -1643,6 +1687,7 @@ 07AE;THAANA OBOFILI;Mn;0;NSM;;;;;N;;;;; 07AF;THAANA OABOAFILI;Mn;0;NSM;;;;;N;;;;; 07B0;THAANA SUKUN;Mn;0;NSM;;;;;N;;;;; +07B1;THAANA LETTER NAA;Lo;0;AL;;;;;N;;;;; 0901;DEVANAGARI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; 0902;DEVANAGARI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; 0903;DEVANAGARI SIGN VISARGA;Mc;0;L;;;;;N;;;;; @@ -2069,7 +2114,7 @@ 0B6F;ORIYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; 0B70;ORIYA ISSHAR;So;0;L;;;;;N;;;;; 0B82;TAMIL SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; -0B83;TAMIL SIGN VISARGA;Mc;0;L;;;;;N;;;;; +0B83;TAMIL SIGN VISARGA;Lo;0;L;;;;;N;;;;; 0B85;TAMIL LETTER A;Lo;0;L;;;;;N;;;;; 0B86;TAMIL LETTER AA;Lo;0;L;;;;;N;;;;; 0B87;TAMIL LETTER I;Lo;0;L;;;;;N;;;;; @@ -2947,6 +2992,8 @@ 10F4;GEORGIAN LETTER HAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAR;;;; 10F5;GEORGIAN LETTER HOE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HOE;;;; 10F6;GEORGIAN LETTER FI;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER FI;;;; +10F7;GEORGIAN LETTER YN;Lo;0;L;;;;;N;;;;; +10F8;GEORGIAN LETTER ELIFI;Lo;0;L;;;;;N;;;;; 10FB;GEORGIAN PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;; 1100;HANGUL CHOSEONG KIYEOK;Lo;0;L;;;;;N;;g *;;; 1101;HANGUL CHOSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;gg *;;; @@ -4358,6 +4405,87 @@ 16EE;RUNIC ARLAUG SYMBOL;Nl;0;L;;;;17;N;;golden number 17;;; 16EF;RUNIC TVIMADUR SYMBOL;Nl;0;L;;;;18;N;;golden number 18;;; 16F0;RUNIC BELGTHOR SYMBOL;Nl;0;L;;;;19;N;;golden number 19;;; +1700;TAGALOG LETTER A;Lo;0;L;;;;;N;;;;; +1701;TAGALOG LETTER I;Lo;0;L;;;;;N;;;;; +1702;TAGALOG LETTER U;Lo;0;L;;;;;N;;;;; +1703;TAGALOG LETTER KA;Lo;0;L;;;;;N;;;;; +1704;TAGALOG LETTER GA;Lo;0;L;;;;;N;;;;; +1705;TAGALOG LETTER NGA;Lo;0;L;;;;;N;;;;; +1706;TAGALOG LETTER TA;Lo;0;L;;;;;N;;;;; +1707;TAGALOG LETTER DA;Lo;0;L;;;;;N;;;;; +1708;TAGALOG LETTER NA;Lo;0;L;;;;;N;;;;; +1709;TAGALOG LETTER PA;Lo;0;L;;;;;N;;;;; +170A;TAGALOG LETTER BA;Lo;0;L;;;;;N;;;;; +170B;TAGALOG LETTER MA;Lo;0;L;;;;;N;;;;; +170C;TAGALOG LETTER YA;Lo;0;L;;;;;N;;;;; +170E;TAGALOG LETTER LA;Lo;0;L;;;;;N;;;;; +170F;TAGALOG LETTER WA;Lo;0;L;;;;;N;;;;; +1710;TAGALOG LETTER SA;Lo;0;L;;;;;N;;;;; +1711;TAGALOG LETTER HA;Lo;0;L;;;;;N;;;;; +1712;TAGALOG VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +1713;TAGALOG VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +1714;TAGALOG SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +1720;HANUNOO LETTER A;Lo;0;L;;;;;N;;;;; +1721;HANUNOO LETTER I;Lo;0;L;;;;;N;;;;; +1722;HANUNOO LETTER U;Lo;0;L;;;;;N;;;;; +1723;HANUNOO LETTER KA;Lo;0;L;;;;;N;;;;; +1724;HANUNOO LETTER GA;Lo;0;L;;;;;N;;;;; +1725;HANUNOO LETTER NGA;Lo;0;L;;;;;N;;;;; +1726;HANUNOO LETTER TA;Lo;0;L;;;;;N;;;;; +1727;HANUNOO LETTER DA;Lo;0;L;;;;;N;;;;; +1728;HANUNOO LETTER NA;Lo;0;L;;;;;N;;;;; +1729;HANUNOO LETTER PA;Lo;0;L;;;;;N;;;;; +172A;HANUNOO LETTER BA;Lo;0;L;;;;;N;;;;; +172B;HANUNOO LETTER MA;Lo;0;L;;;;;N;;;;; +172C;HANUNOO LETTER YA;Lo;0;L;;;;;N;;;;; +172D;HANUNOO LETTER RA;Lo;0;L;;;;;N;;;;; +172E;HANUNOO LETTER LA;Lo;0;L;;;;;N;;;;; +172F;HANUNOO LETTER WA;Lo;0;L;;;;;N;;;;; +1730;HANUNOO LETTER SA;Lo;0;L;;;;;N;;;;; +1731;HANUNOO LETTER HA;Lo;0;L;;;;;N;;;;; +1732;HANUNOO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +1733;HANUNOO VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +1734;HANUNOO SIGN PAMUDPOD;Mn;9;NSM;;;;;N;;;;; +1735;PHILIPPINE SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;; +1736;PHILIPPINE DOUBLE PUNCTUATION;Po;0;L;;;;;N;;;;; +1740;BUHID LETTER A;Lo;0;L;;;;;N;;;;; +1741;BUHID LETTER I;Lo;0;L;;;;;N;;;;; +1742;BUHID LETTER U;Lo;0;L;;;;;N;;;;; +1743;BUHID LETTER KA;Lo;0;L;;;;;N;;;;; +1744;BUHID LETTER GA;Lo;0;L;;;;;N;;;;; +1745;BUHID LETTER NGA;Lo;0;L;;;;;N;;;;; +1746;BUHID LETTER TA;Lo;0;L;;;;;N;;;;; +1747;BUHID LETTER DA;Lo;0;L;;;;;N;;;;; +1748;BUHID LETTER NA;Lo;0;L;;;;;N;;;;; +1749;BUHID LETTER PA;Lo;0;L;;;;;N;;;;; +174A;BUHID LETTER BA;Lo;0;L;;;;;N;;;;; +174B;BUHID LETTER MA;Lo;0;L;;;;;N;;;;; +174C;BUHID LETTER YA;Lo;0;L;;;;;N;;;;; +174D;BUHID LETTER RA;Lo;0;L;;;;;N;;;;; +174E;BUHID LETTER LA;Lo;0;L;;;;;N;;;;; +174F;BUHID LETTER WA;Lo;0;L;;;;;N;;;;; +1750;BUHID LETTER SA;Lo;0;L;;;;;N;;;;; +1751;BUHID LETTER HA;Lo;0;L;;;;;N;;;;; +1752;BUHID VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +1753;BUHID VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +1760;TAGBANWA LETTER A;Lo;0;L;;;;;N;;;;; +1761;TAGBANWA LETTER I;Lo;0;L;;;;;N;;;;; +1762;TAGBANWA LETTER U;Lo;0;L;;;;;N;;;;; +1763;TAGBANWA LETTER KA;Lo;0;L;;;;;N;;;;; +1764;TAGBANWA LETTER GA;Lo;0;L;;;;;N;;;;; +1765;TAGBANWA LETTER NGA;Lo;0;L;;;;;N;;;;; +1766;TAGBANWA LETTER TA;Lo;0;L;;;;;N;;;;; +1767;TAGBANWA LETTER DA;Lo;0;L;;;;;N;;;;; +1768;TAGBANWA LETTER NA;Lo;0;L;;;;;N;;;;; +1769;TAGBANWA LETTER PA;Lo;0;L;;;;;N;;;;; +176A;TAGBANWA LETTER BA;Lo;0;L;;;;;N;;;;; +176B;TAGBANWA LETTER MA;Lo;0;L;;;;;N;;;;; +176C;TAGBANWA LETTER YA;Lo;0;L;;;;;N;;;;; +176E;TAGBANWA LETTER LA;Lo;0;L;;;;;N;;;;; +176F;TAGBANWA LETTER WA;Lo;0;L;;;;;N;;;;; +1770;TAGBANWA LETTER SA;Lo;0;L;;;;;N;;;;; +1772;TAGBANWA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +1773;TAGBANWA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; 1780;KHMER LETTER KA;Lo;0;L;;;;;N;;;;; 1781;KHMER LETTER KHA;Lo;0;L;;;;;N;;;;; 1782;KHMER LETTER KO;Lo;0;L;;;;;N;;;;; @@ -4445,12 +4573,12 @@ 17D4;KHMER SIGN KHAN;Po;0;L;;;;;N;;;;; 17D5;KHMER SIGN BARIYOOSAN;Po;0;L;;;;;N;;;;; 17D6;KHMER SIGN CAMNUC PII KUUH;Po;0;L;;;;;N;;;;; -17D7;KHMER SIGN LEK TOO;Po;0;L;;;;;N;;;;; +17D7;KHMER SIGN LEK TOO;Lm;0;L;;;;;N;;;;; 17D8;KHMER SIGN BEYYAL;Po;0;L;;;;;N;;;;; 17D9;KHMER SIGN PHNAEK MUAN;Po;0;L;;;;;N;;;;; 17DA;KHMER SIGN KOOMUUT;Po;0;L;;;;;N;;;;; 17DB;KHMER CURRENCY SYMBOL RIEL;Sc;0;ET;;;;;N;;;;; -17DC;KHMER SIGN AVAKRAHASANYA;Po;0;L;;;;;N;;;;; +17DC;KHMER SIGN AVAKRAHASANYA;Lo;0;L;;;;;N;;;;; 17E0;KHMER DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; 17E1;KHMER DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; 17E2;KHMER DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; @@ -4472,9 +4600,9 @@ 1808;MONGOLIAN MANCHU COMMA;Po;0;ON;;;;;N;;;;; 1809;MONGOLIAN MANCHU FULL STOP;Po;0;ON;;;;;N;;;;; 180A;MONGOLIAN NIRUGU;Po;0;ON;;;;;N;;;;; -180B;MONGOLIAN FREE VARIATION SELECTOR ONE;Cf;0;BN;;;;;N;;;;; -180C;MONGOLIAN FREE VARIATION SELECTOR TWO;Cf;0;BN;;;;;N;;;;; -180D;MONGOLIAN FREE VARIATION SELECTOR THREE;Cf;0;BN;;;;;N;;;;; +180B;MONGOLIAN FREE VARIATION SELECTOR ONE;Mn;0;NSM;;;;;N;;;;; +180C;MONGOLIAN FREE VARIATION SELECTOR TWO;Mn;0;NSM;;;;;N;;;;; +180D;MONGOLIAN FREE VARIATION SELECTOR THREE;Mn;0;NSM;;;;;N;;;;; 180E;MONGOLIAN VOWEL SEPARATOR;Cf;0;BN;;;;;N;;;;; 1810;MONGOLIAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; 1811;MONGOLIAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; @@ -5166,12 +5294,24 @@ 2044;FRACTION SLASH;Sm;0;ON;;;;;N;;;;; 2045;LEFT SQUARE BRACKET WITH QUILL;Ps;0;ON;;;;;Y;;;;; 2046;RIGHT SQUARE BRACKET WITH QUILL;Pe;0;ON;;;;;Y;;;;; +2047;DOUBLE QUESTION MARK;Po;0;ON;<compat> 003F 003F;;;;N;;;;; 2048;QUESTION EXCLAMATION MARK;Po;0;ON;<compat> 003F 0021;;;;N;;;;; 2049;EXCLAMATION QUESTION MARK;Po;0;ON;<compat> 0021 003F;;;;N;;;;; 204A;TIRONIAN SIGN ET;Po;0;ON;;;;;N;;;;; 204B;REVERSED PILCROW SIGN;Po;0;ON;;;;;N;;;;; 204C;BLACK LEFTWARDS BULLET;Po;0;ON;;;;;N;;;;; 204D;BLACK RIGHTWARDS BULLET;Po;0;ON;;;;;N;;;;; +204E;LOW ASTERISK;Po;0;ON;;;;;N;;;;; +204F;REVERSED SEMICOLON;Po;0;ON;;;;;N;;;;; +2050;CLOSE UP;Po;0;ON;;;;;N;;;;; +2051;TWO ASTERISKS ALIGNED VERTICALLY;Po;0;ON;;;;;N;;;;; +2052;COMMERCIAL MINUS SIGN;Sm;0;ON;;;;;N;;;;; +2057;QUADRUPLE PRIME;Po;0;ON;<compat> 2032 2032 2032 2032;;;;N;;;;; +205F;MEDIUM MATHEMATICAL SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;; +2060;WORD JOINER;Cf;0;BN;;;;;N;;;;; +2061;FUNCTION APPLICATION;Cf;0;BN;;;;;N;;;;; +2062;INVISIBLE TIMES;Cf;0;BN;;;;;N;;;;; +2063;INVISIBLE SEPARATOR;Cf;0;BN;;;;;N;;;;; 206A;INHIBIT SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;; 206B;ACTIVATE SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;; 206C;INHIBIT ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;; @@ -5179,6 +5319,7 @@ 206E;NATIONAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;; 206F;NOMINAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;; 2070;SUPERSCRIPT ZERO;No;0;EN;<super> 0030;0;0;0;N;SUPERSCRIPT DIGIT ZERO;;;; +2071;SUPERSCRIPT LATIN SMALL LETTER I;Ll;0;L;<super> 0069;;;;N;;;;; 2074;SUPERSCRIPT FOUR;No;0;EN;<super> 0034;4;4;4;N;SUPERSCRIPT DIGIT FOUR;;;; 2075;SUPERSCRIPT FIVE;No;0;EN;<super> 0035;5;5;5;N;SUPERSCRIPT DIGIT FIVE;;;; 2076;SUPERSCRIPT SIX;No;0;EN;<super> 0036;6;6;6;N;SUPERSCRIPT DIGIT SIX;;;; @@ -5222,6 +5363,8 @@ 20AD;KIP SIGN;Sc;0;ET;;;;;N;;;;; 20AE;TUGRIK SIGN;Sc;0;ET;;;;;N;;;;; 20AF;DRACHMA SIGN;Sc;0;ET;;;;;N;;;;; +20B0;GERMAN PENNY SIGN;Sc;0;ET;;;;;N;;;;; +20B1;PESO SIGN;Sc;0;ET;;;;;N;;;;; 20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;; 20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;; 20D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;; @@ -5242,6 +5385,13 @@ 20E1;COMBINING LEFT RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT RIGHT ARROW ABOVE;;;; 20E2;COMBINING ENCLOSING SCREEN;Me;0;NSM;;;;;N;;;;; 20E3;COMBINING ENCLOSING KEYCAP;Me;0;NSM;;;;;N;;;;; +20E4;COMBINING ENCLOSING UPWARD POINTING TRIANGLE;Me;0;NSM;;;;;N;;;;; +20E5;COMBINING REVERSE SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;;;;; +20E6;COMBINING DOUBLE VERTICAL STROKE OVERLAY;Mn;1;NSM;;;;;N;;;;; +20E7;COMBINING ANNUITY SYMBOL;Mn;230;NSM;;;;;N;;;;; +20E8;COMBINING TRIPLE UNDERDOT;Mn;220;NSM;;;;;N;;;;; +20E9;COMBINING WIDE BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;; +20EA;COMBINING LEFTWARDS ARROW OVERLAY;Mn;1;NSM;;;;;N;;;;; 2100;ACCOUNT OF;So;0;ON;<compat> 0061 002F 0063;;;;N;;;;; 2101;ADDRESSED TO THE SUBJECT;So;0;ON;<compat> 0061 002F 0073;;;;N;;;;; 2102;DOUBLE-STRUCK CAPITAL C;Lu;0;L;<font> 0043;;;;N;DOUBLE-STRUCK C;;;; @@ -5301,6 +5451,21 @@ 2138;DALET SYMBOL;Lo;0;L;<compat> 05D3;;;;N;FOURTH TRANSFINITE CARDINAL;;;; 2139;INFORMATION SOURCE;Ll;0;L;<font> 0069;;;;N;;;;; 213A;ROTATED CAPITAL Q;So;0;ON;;;;;N;;;;; +213D;DOUBLE-STRUCK SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;; +213E;DOUBLE-STRUCK CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;; +213F;DOUBLE-STRUCK CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;; +2140;DOUBLE-STRUCK N-ARY SUMMATION;Sm;0;ON;<font> 2211;;;;Y;;;;; +2141;TURNED SANS-SERIF CAPITAL G;Sm;0;ON;;;;;N;;;;; +2142;TURNED SANS-SERIF CAPITAL L;Sm;0;ON;;;;;N;;;;; +2143;REVERSED SANS-SERIF CAPITAL L;Sm;0;ON;;;;;N;;;;; +2144;TURNED SANS-SERIF CAPITAL Y;Sm;0;ON;;;;;N;;;;; +2145;DOUBLE-STRUCK ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; +2146;DOUBLE-STRUCK ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; +2147;DOUBLE-STRUCK ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; +2148;DOUBLE-STRUCK ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; +2149;DOUBLE-STRUCK ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; +214A;PROPERTY LINE;So;0;ON;;;;;N;;;;; +214B;TURNED AMPERSAND;Sm;0;ON;;;;;N;;;;; 2153;VULGAR FRACTION ONE THIRD;No;0;ON;<fraction> 0031 2044 0033;;;1/3;N;FRACTION ONE THIRD;;;; 2154;VULGAR FRACTION TWO THIRDS;No;0;ON;<fraction> 0032 2044 0033;;;2/3;N;FRACTION TWO THIRDS;;;; 2155;VULGAR FRACTION ONE FIFTH;No;0;ON;<fraction> 0031 2044 0035;;;1/5;N;FRACTION ONE FIFTH;;;; @@ -5450,6 +5615,18 @@ 21F1;NORTH WEST ARROW TO CORNER;So;0;ON;;;;;N;;;;; 21F2;SOUTH EAST ARROW TO CORNER;So;0;ON;;;;;N;;;;; 21F3;UP DOWN WHITE ARROW;So;0;ON;;;;;N;;;;; +21F4;RIGHT ARROW WITH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; +21F5;DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW;Sm;0;ON;;;;;N;;;;; +21F6;THREE RIGHTWARDS ARROWS;Sm;0;ON;;;;;N;;;;; +21F7;LEFTWARDS ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +21F8;RIGHTWARDS ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +21F9;LEFT RIGHT ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +21FA;LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +21FB;RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +21FC;LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +21FD;LEFTWARDS OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;; +21FE;RIGHTWARDS OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;; +21FF;LEFT RIGHT OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;; 2200;FOR ALL;Sm;0;ON;;;;;N;;;;; 2201;COMPLEMENT;Sm;0;ON;;;;;Y;;;;; 2202;PARTIAL DIFFERENTIAL;Sm;0;ON;;;;;Y;;;;; @@ -5692,6 +5869,20 @@ 22EF;MIDLINE HORIZONTAL ELLIPSIS;Sm;0;ON;;;;;N;;;;; 22F0;UP RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;; 22F1;DOWN RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;; +22F2;ELEMENT OF WITH LONG HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; +22F3;ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; +22F4;SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; +22F5;ELEMENT OF WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; +22F6;ELEMENT OF WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; +22F7;SMALL ELEMENT OF WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; +22F8;ELEMENT OF WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; +22F9;ELEMENT OF WITH TWO HORIZONTAL STROKES;Sm;0;ON;;;;;Y;;;;; +22FA;CONTAINS WITH LONG HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; +22FB;CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; +22FC;SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; +22FD;CONTAINS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; +22FE;SMALL CONTAINS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; +22FF;Z NOTATION BAG MEMBERSHIP;Sm;0;ON;;;;;Y;;;;; 2300;DIAMETER SIGN;So;0;ON;;;;;N;;;;; 2301;ELECTRIC ARROW;So;0;ON;;;;;N;;;;; 2302;HOUSE;So;0;ON;;;;;N;;;;; @@ -5816,6 +6007,7 @@ 2379;APL FUNCTIONAL SYMBOL OMEGA UNDERBAR;So;0;L;;;;;N;;;;; 237A;APL FUNCTIONAL SYMBOL ALPHA;So;0;L;;;;;N;;;;; 237B;NOT CHECK MARK;So;0;ON;;;;;N;;;;; +237C;RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW;Sm;0;ON;;;;;N;;;;; 237D;SHOULDERED OPEN BOX;So;0;ON;;;;;N;;;;; 237E;BELL SYMBOL;So;0;ON;;;;;N;;;;; 237F;VERTICAL LINE WITH MIDDLE DOT;So;0;ON;;;;;N;;;;; @@ -5846,6 +6038,58 @@ 2398;NEXT PAGE;So;0;ON;;;;;N;;;;; 2399;PRINT SCREEN SYMBOL;So;0;ON;;;;;N;;;;; 239A;CLEAR SCREEN SYMBOL;So;0;ON;;;;;N;;;;; +239B;LEFT PARENTHESIS UPPER HOOK;Sm;0;ON;;;;;N;;;;; +239C;LEFT PARENTHESIS EXTENSION;Sm;0;ON;;;;;N;;;;; +239D;LEFT PARENTHESIS LOWER HOOK;Sm;0;ON;;;;;N;;;;; +239E;RIGHT PARENTHESIS UPPER HOOK;Sm;0;ON;;;;;N;;;;; +239F;RIGHT PARENTHESIS EXTENSION;Sm;0;ON;;;;;N;;;;; +23A0;RIGHT PARENTHESIS LOWER HOOK;Sm;0;ON;;;;;N;;;;; +23A1;LEFT SQUARE BRACKET UPPER CORNER;Sm;0;ON;;;;;N;;;;; +23A2;LEFT SQUARE BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;; +23A3;LEFT SQUARE BRACKET LOWER CORNER;Sm;0;ON;;;;;N;;;;; +23A4;RIGHT SQUARE BRACKET UPPER CORNER;Sm;0;ON;;;;;N;;;;; +23A5;RIGHT SQUARE BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;; +23A6;RIGHT SQUARE BRACKET LOWER CORNER;Sm;0;ON;;;;;N;;;;; +23A7;LEFT CURLY BRACKET UPPER HOOK;Sm;0;ON;;;;;N;;;;; +23A8;LEFT CURLY BRACKET MIDDLE PIECE;Sm;0;ON;;;;;N;;;;; +23A9;LEFT CURLY BRACKET LOWER HOOK;Sm;0;ON;;;;;N;;;;; +23AA;CURLY BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;; +23AB;RIGHT CURLY BRACKET UPPER HOOK;Sm;0;ON;;;;;N;;;;; +23AC;RIGHT CURLY BRACKET MIDDLE PIECE;Sm;0;ON;;;;;N;;;;; +23AD;RIGHT CURLY BRACKET LOWER HOOK;Sm;0;ON;;;;;N;;;;; +23AE;INTEGRAL EXTENSION;Sm;0;ON;;;;;N;;;;; +23AF;HORIZONTAL LINE EXTENSION;Sm;0;ON;;;;;N;;;;; +23B0;UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION;Sm;0;ON;;;;;N;;;;; +23B1;UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION;Sm;0;ON;;;;;N;;;;; +23B2;SUMMATION TOP;Sm;0;ON;;;;;N;;;;; +23B3;SUMMATION BOTTOM;Sm;0;ON;;;;;N;;;;; +23B4;TOP SQUARE BRACKET;Ps;0;ON;;;;;N;;;;; +23B5;BOTTOM SQUARE BRACKET;Pe;0;ON;;;;;N;;;;; +23B6;BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET;Po;0;ON;;;;;N;;;;; +23B7;RADICAL SYMBOL BOTTOM;So;0;ON;;;;;N;;;;; +23B8;LEFT VERTICAL BOX LINE;So;0;ON;;;;;N;;;;; +23B9;RIGHT VERTICAL BOX LINE;So;0;ON;;;;;N;;;;; +23BA;HORIZONTAL SCAN LINE-1;So;0;ON;;;;;N;;;;; +23BB;HORIZONTAL SCAN LINE-3;So;0;ON;;;;;N;;;;; +23BC;HORIZONTAL SCAN LINE-7;So;0;ON;;;;;N;;;;; +23BD;HORIZONTAL SCAN LINE-9;So;0;ON;;;;;N;;;;; +23BE;DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT;So;0;ON;;;;;N;;;;; +23BF;DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT;So;0;ON;;;;;N;;;;; +23C0;DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE;So;0;ON;;;;;N;;;;; +23C1;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE;So;0;ON;;;;;N;;;;; +23C2;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE;So;0;ON;;;;;N;;;;; +23C3;DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE;So;0;ON;;;;;N;;;;; +23C4;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE;So;0;ON;;;;;N;;;;; +23C5;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE;So;0;ON;;;;;N;;;;; +23C6;DENTISTRY SYMBOL LIGHT VERTICAL AND WAVE;So;0;ON;;;;;N;;;;; +23C7;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE;So;0;ON;;;;;N;;;;; +23C8;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE;So;0;ON;;;;;N;;;;; +23C9;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;;;;; +23CA;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;;;;; +23CB;DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT;So;0;ON;;;;;N;;;;; +23CC;DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT;So;0;ON;;;;;N;;;;; +23CD;SQUARE FOOT;So;0;ON;;;;;N;;;;; +23CE;RETURN SYMBOL;So;0;ON;;;;;N;;;;; 2400;SYMBOL FOR NULL;So;0;ON;;;;;N;GRAPHIC FOR NULL;;;; 2401;SYMBOL FOR START OF HEADING;So;0;ON;;;;;N;GRAPHIC FOR START OF HEADING;;;; 2402;SYMBOL FOR START OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR START OF TEXT;;;; @@ -6035,6 +6279,26 @@ 24E8;CIRCLED LATIN SMALL LETTER Y;So;0;L;<circle> 0079;;;;N;;;24CE;;24CE 24E9;CIRCLED LATIN SMALL LETTER Z;So;0;L;<circle> 007A;;;;N;;;24CF;;24CF 24EA;CIRCLED DIGIT ZERO;No;0;EN;<circle> 0030;;0;0;N;;;;; +24EB;NEGATIVE CIRCLED NUMBER ELEVEN;No;0;ON;;;;11;N;;;;; +24EC;NEGATIVE CIRCLED NUMBER TWELVE;No;0;ON;;;;12;N;;;;; +24ED;NEGATIVE CIRCLED NUMBER THIRTEEN;No;0;ON;;;;13;N;;;;; +24EE;NEGATIVE CIRCLED NUMBER FOURTEEN;No;0;ON;;;;14;N;;;;; +24EF;NEGATIVE CIRCLED NUMBER FIFTEEN;No;0;ON;;;;15;N;;;;; +24F0;NEGATIVE CIRCLED NUMBER SIXTEEN;No;0;ON;;;;16;N;;;;; +24F1;NEGATIVE CIRCLED NUMBER SEVENTEEN;No;0;ON;;;;17;N;;;;; +24F2;NEGATIVE CIRCLED NUMBER EIGHTEEN;No;0;ON;;;;18;N;;;;; +24F3;NEGATIVE CIRCLED NUMBER NINETEEN;No;0;ON;;;;19;N;;;;; +24F4;NEGATIVE CIRCLED NUMBER TWENTY;No;0;ON;;;;20;N;;;;; +24F5;DOUBLE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;;;;; +24F6;DOUBLE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;;;;; +24F7;DOUBLE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;;;;; +24F8;DOUBLE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;;;;; +24F9;DOUBLE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;;;;; +24FA;DOUBLE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;;;;; +24FB;DOUBLE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;;;;; +24FC;DOUBLE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;;;;; +24FD;DOUBLE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;;;;; +24FE;DOUBLE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;;;;; 2500;BOX DRAWINGS LIGHT HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT HORIZONTAL;;;; 2501;BOX DRAWINGS HEAVY HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY HORIZONTAL;;;; 2502;BOX DRAWINGS LIGHT VERTICAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL;;;; @@ -6185,6 +6449,16 @@ 2593;DARK SHADE;So;0;ON;;;;;N;;;;; 2594;UPPER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; 2595;RIGHT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; +2596;QUADRANT LOWER LEFT;So;0;ON;;;;;N;;;;; +2597;QUADRANT LOWER RIGHT;So;0;ON;;;;;N;;;;; +2598;QUADRANT UPPER LEFT;So;0;ON;;;;;N;;;;; +2599;QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; +259A;QUADRANT UPPER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; +259B;QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT;So;0;ON;;;;;N;;;;; +259C;QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; +259D;QUADRANT UPPER RIGHT;So;0;ON;;;;;N;;;;; +259E;QUADRANT UPPER RIGHT AND LOWER LEFT;So;0;ON;;;;;N;;;;; +259F;QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; 25A0;BLACK SQUARE;So;0;ON;;;;;N;;;;; 25A1;WHITE SQUARE;So;0;ON;;;;;N;;;;; 25A2;WHITE SQUARE WITH ROUNDED CORNERS;So;0;ON;;;;;N;;;;; @@ -6273,6 +6547,14 @@ 25F5;WHITE CIRCLE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;; 25F6;WHITE CIRCLE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;; 25F7;WHITE CIRCLE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;; +25F8;UPPER LEFT TRIANGLE;Sm;0;ON;;;;;N;;;;; +25F9;UPPER RIGHT TRIANGLE;Sm;0;ON;;;;;N;;;;; +25FA;LOWER LEFT TRIANGLE;Sm;0;ON;;;;;N;;;;; +25FB;WHITE MEDIUM SQUARE;Sm;0;ON;;;;;N;;;;; +25FC;BLACK MEDIUM SQUARE;Sm;0;ON;;;;;N;;;;; +25FD;WHITE MEDIUM SMALL SQUARE;Sm;0;ON;;;;;N;;;;; +25FE;BLACK MEDIUM SMALL SQUARE;Sm;0;ON;;;;;N;;;;; +25FF;LOWER RIGHT TRIANGLE;Sm;0;ON;;;;;N;;;;; 2600;BLACK SUN WITH RAYS;So;0;ON;;;;;N;;;;; 2601;CLOUD;So;0;ON;;;;;N;;;;; 2602;UMBRELLA;So;0;ON;;;;;N;;;;; @@ -6293,6 +6575,8 @@ 2611;BALLOT BOX WITH CHECK;So;0;ON;;;;;N;;;;; 2612;BALLOT BOX WITH X;So;0;ON;;;;;N;;;;; 2613;SALTIRE;So;0;ON;;;;;N;;;;; +2616;WHITE SHOGI PIECE;So;0;ON;;;;;N;;;;; +2617;BLACK SHOGI PIECE;So;0;ON;;;;;N;;;;; 2619;REVERSED ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;; 261A;BLACK LEFT POINTING INDEX;So;0;ON;;;;;N;;;;; 261B;BLACK RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;; @@ -6382,6 +6666,28 @@ 266F;MUSIC SHARP SIGN;Sm;0;ON;;;;;N;SHARP;;;; 2670;WEST SYRIAC CROSS;So;0;ON;;;;;N;;;;; 2671;EAST SYRIAC CROSS;So;0;ON;;;;;N;;;;; +2672;UNIVERSAL RECYCLING SYMBOL;So;0;ON;;;;;N;;;;; +2673;RECYCLING SYMBOL FOR TYPE-1 PLASTICS;So;0;ON;;;;;N;;pete;;; +2674;RECYCLING SYMBOL FOR TYPE-2 PLASTICS;So;0;ON;;;;;N;;hdpe;;; +2675;RECYCLING SYMBOL FOR TYPE-3 PLASTICS;So;0;ON;;;;;N;;pvc;;; +2676;RECYCLING SYMBOL FOR TYPE-4 PLASTICS;So;0;ON;;;;;N;;ldpe;;; +2677;RECYCLING SYMBOL FOR TYPE-5 PLASTICS;So;0;ON;;;;;N;;pp;;; +2678;RECYCLING SYMBOL FOR TYPE-6 PLASTICS;So;0;ON;;;;;N;;ps;;; +2679;RECYCLING SYMBOL FOR TYPE-7 PLASTICS;So;0;ON;;;;;N;;other;;; +267A;RECYCLING SYMBOL FOR GENERIC MATERIALS;So;0;ON;;;;;N;;;;; +267B;BLACK UNIVERSAL RECYCLING SYMBOL;So;0;ON;;;;;N;;;;; +267C;RECYCLED PAPER SYMBOL;So;0;ON;;;;;N;;;;; +267D;PARTIALLY-RECYCLED PAPER SYMBOL;So;0;ON;;;;;N;;;;; +2680;DIE FACE-1;So;0;ON;;;;;N;;;;; +2681;DIE FACE-2;So;0;ON;;;;;N;;;;; +2682;DIE FACE-3;So;0;ON;;;;;N;;;;; +2683;DIE FACE-4;So;0;ON;;;;;N;;;;; +2684;DIE FACE-5;So;0;ON;;;;;N;;;;; +2685;DIE FACE-6;So;0;ON;;;;;N;;;;; +2686;WHITE CIRCLE WITH DOT RIGHT;So;0;ON;;;;;N;;;;; +2687;WHITE CIRCLE WITH TWO DOTS;So;0;ON;;;;;N;;;;; +2688;BLACK CIRCLE WITH WHITE DOT RIGHT;So;0;ON;;;;;N;;;;; +2689;BLACK CIRCLE WITH TWO WHITE DOTS;So;0;ON;;;;;N;;;;; 2701;UPPER BLADE SCISSORS;So;0;ON;;;;;N;;;;; 2702;BLACK SCISSORS;So;0;ON;;;;;N;;;;; 2703;LOWER BLADE SCISSORS;So;0;ON;;;;;N;;;;; @@ -6473,6 +6779,20 @@ 2765;ROTATED HEAVY BLACK HEART BULLET;So;0;ON;;;;;N;;;;; 2766;FLORAL HEART;So;0;ON;;;;;N;;;;; 2767;ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;; +2768;MEDIUM LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;; +2769;MEDIUM RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;; +276A;MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;; +276B;MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;; +276C;MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;; +276D;MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;; +276E;HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT;Ps;0;ON;;;;;Y;;;;; +276F;HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT;Pe;0;ON;;;;;Y;;;;; +2770;HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;; +2771;HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;; +2772;LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;; +2773;LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;; +2774;MEDIUM LEFT CURLY BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;; +2775;MEDIUM RIGHT CURLY BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;; 2776;DINGBAT NEGATIVE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED DIGIT ONE;;;; 2777;DINGBAT NEGATIVE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED DIGIT TWO;;;; 2778;DINGBAT NEGATIVE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED DIGIT THREE;;;; @@ -6542,6 +6862,50 @@ 27BC;WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;WEDGE-TAILED RIGHT ARROW;;;; 27BD;HEAVY WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WEDGE-TAILED RIGHT ARROW;;;; 27BE;OPEN-OUTLINED RIGHTWARDS ARROW;So;0;ON;;;;;N;OPEN-OUTLINED RIGHT ARROW;;;; +27D0;WHITE DIAMOND WITH CENTRED DOT;Sm;0;ON;;;;;N;;;;; +27D1;AND WITH DOT;Sm;0;ON;;;;;N;;;;; +27D2;ELEMENT OF OPENING UPWARDS;Sm;0;ON;;;;;N;;;;; +27D3;LOWER RIGHT CORNER WITH DOT;Sm;0;ON;;;;;Y;;;;; +27D4;UPPER LEFT CORNER WITH DOT;Sm;0;ON;;;;;Y;;;;; +27D5;LEFT OUTER JOIN;Sm;0;ON;;;;;Y;;;;; +27D6;RIGHT OUTER JOIN;Sm;0;ON;;;;;Y;;;;; +27D7;FULL OUTER JOIN;Sm;0;ON;;;;;N;;;;; +27D8;LARGE UP TACK;Sm;0;ON;;;;;N;;;;; +27D9;LARGE DOWN TACK;Sm;0;ON;;;;;N;;;;; +27DA;LEFT AND RIGHT DOUBLE TURNSTILE;Sm;0;ON;;;;;N;;;;; +27DB;LEFT AND RIGHT TACK;Sm;0;ON;;;;;N;;;;; +27DC;LEFT MULTIMAP;Sm;0;ON;;;;;Y;;;;; +27DD;LONG RIGHT TACK;Sm;0;ON;;;;;Y;;;;; +27DE;LONG LEFT TACK;Sm;0;ON;;;;;Y;;;;; +27DF;UP TACK WITH CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;; +27E0;LOZENGE DIVIDED BY HORIZONTAL RULE;Sm;0;ON;;;;;N;;;;; +27E1;WHITE CONCAVE-SIDED DIAMOND;Sm;0;ON;;;;;N;;;;; +27E2;WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK;Sm;0;ON;;;;;Y;;;;; +27E3;WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK;Sm;0;ON;;;;;Y;;;;; +27E4;WHITE SQUARE WITH LEFTWARDS TICK;Sm;0;ON;;;;;Y;;;;; +27E5;WHITE SQUARE WITH RIGHTWARDS TICK;Sm;0;ON;;;;;Y;;;;; +27E6;MATHEMATICAL LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;;;;; +27E7;MATHEMATICAL RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;;;;; +27E8;MATHEMATICAL LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;; +27E9;MATHEMATICAL RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;; +27EA;MATHEMATICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;; +27EB;MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;; +27F0;UPWARDS QUADRUPLE ARROW;Sm;0;ON;;;;;N;;;;; +27F1;DOWNWARDS QUADRUPLE ARROW;Sm;0;ON;;;;;N;;;;; +27F2;ANTICLOCKWISE GAPPED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;; +27F3;CLOCKWISE GAPPED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;; +27F4;RIGHT ARROW WITH CIRCLED PLUS;Sm;0;ON;;;;;N;;;;; +27F5;LONG LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +27F6;LONG RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +27F7;LONG LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;; +27F8;LONG LEFTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;;;;; +27F9;LONG RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;;;;; +27FA;LONG LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;; +27FB;LONG LEFTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; +27FC;LONG RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; +27FD;LONG LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; +27FE;LONG RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; +27FF;LONG RIGHTWARDS SQUIGGLE ARROW;Sm;0;ON;;;;;N;;;;; 2800;BRAILLE PATTERN BLANK;So;0;ON;;;;;N;;;;; 2801;BRAILLE PATTERN DOTS-1;So;0;ON;;;;;N;;;;; 2802;BRAILLE PATTERN DOTS-2;So;0;ON;;;;;N;;;;; @@ -6798,6 +7162,518 @@ 28FD;BRAILLE PATTERN DOTS-1345678;So;0;ON;;;;;N;;;;; 28FE;BRAILLE PATTERN DOTS-2345678;So;0;ON;;;;;N;;;;; 28FF;BRAILLE PATTERN DOTS-12345678;So;0;ON;;;;;N;;;;; +2900;RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2901;RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2902;LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2903;RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2904;LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2905;RIGHTWARDS TWO-HEADED ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; +2906;LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; +2907;RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; +2908;DOWNWARDS ARROW WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; +2909;UPWARDS ARROW WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; +290A;UPWARDS TRIPLE ARROW;Sm;0;ON;;;;;N;;;;; +290B;DOWNWARDS TRIPLE ARROW;Sm;0;ON;;;;;N;;;;; +290C;LEFTWARDS DOUBLE DASH ARROW;Sm;0;ON;;;;;N;;;;; +290D;RIGHTWARDS DOUBLE DASH ARROW;Sm;0;ON;;;;;N;;;;; +290E;LEFTWARDS TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;; +290F;RIGHTWARDS TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;; +2910;RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;; +2911;RIGHTWARDS ARROW WITH DOTTED STEM;Sm;0;ON;;;;;N;;;;; +2912;UPWARDS ARROW TO BAR;Sm;0;ON;;;;;N;;;;; +2913;DOWNWARDS ARROW TO BAR;Sm;0;ON;;;;;N;;;;; +2914;RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2915;RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2916;RIGHTWARDS TWO-HEADED ARROW WITH TAIL;Sm;0;ON;;;;;N;;;;; +2917;RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2918;RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2919;LEFTWARDS ARROW-TAIL;Sm;0;ON;;;;;N;;;;; +291A;RIGHTWARDS ARROW-TAIL;Sm;0;ON;;;;;N;;;;; +291B;LEFTWARDS DOUBLE ARROW-TAIL;Sm;0;ON;;;;;N;;;;; +291C;RIGHTWARDS DOUBLE ARROW-TAIL;Sm;0;ON;;;;;N;;;;; +291D;LEFTWARDS ARROW TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; +291E;RIGHTWARDS ARROW TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; +291F;LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; +2920;RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; +2921;NORTH WEST AND SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;; +2922;NORTH EAST AND SOUTH WEST ARROW;Sm;0;ON;;;;;N;;;;; +2923;NORTH WEST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;; +2924;NORTH EAST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;; +2925;SOUTH EAST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;; +2926;SOUTH WEST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;; +2927;NORTH WEST ARROW AND NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;; +2928;NORTH EAST ARROW AND SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;; +2929;SOUTH EAST ARROW AND SOUTH WEST ARROW;Sm;0;ON;;;;;N;;;;; +292A;SOUTH WEST ARROW AND NORTH WEST ARROW;Sm;0;ON;;;;;N;;;;; +292B;RISING DIAGONAL CROSSING FALLING DIAGONAL;Sm;0;ON;;;;;N;;;;; +292C;FALLING DIAGONAL CROSSING RISING DIAGONAL;Sm;0;ON;;;;;N;;;;; +292D;SOUTH EAST ARROW CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;; +292E;NORTH EAST ARROW CROSSING SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;; +292F;FALLING DIAGONAL CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;; +2930;RISING DIAGONAL CROSSING SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;; +2931;NORTH EAST ARROW CROSSING NORTH WEST ARROW;Sm;0;ON;;;;;N;;;;; +2932;NORTH WEST ARROW CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;; +2933;WAVE ARROW POINTING DIRECTLY RIGHT;Sm;0;ON;;;;;N;;;;; +2934;ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS;Sm;0;ON;;;;;N;;;;; +2935;ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS;Sm;0;ON;;;;;N;;;;; +2936;ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS;Sm;0;ON;;;;;N;;;;; +2937;ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS;Sm;0;ON;;;;;N;;;;; +2938;RIGHT-SIDE ARC CLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; +2939;LEFT-SIDE ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; +293A;TOP ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; +293B;BOTTOM ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; +293C;TOP ARC CLOCKWISE ARROW WITH MINUS;Sm;0;ON;;;;;N;;;;; +293D;TOP ARC ANTICLOCKWISE ARROW WITH PLUS;Sm;0;ON;;;;;N;;;;; +293E;LOWER RIGHT SEMICIRCULAR CLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; +293F;LOWER LEFT SEMICIRCULAR ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; +2940;ANTICLOCKWISE CLOSED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;; +2941;CLOCKWISE CLOSED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;; +2942;RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +2943;LEFTWARDS ARROW ABOVE SHORT RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +2944;SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +2945;RIGHTWARDS ARROW WITH PLUS BELOW;Sm;0;ON;;;;;N;;;;; +2946;LEFTWARDS ARROW WITH PLUS BELOW;Sm;0;ON;;;;;N;;;;; +2947;RIGHTWARDS ARROW THROUGH X;Sm;0;ON;;;;;N;;;;; +2948;LEFT RIGHT ARROW THROUGH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; +2949;UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; +294A;LEFT BARB UP RIGHT BARB DOWN HARPOON;Sm;0;ON;;;;;N;;;;; +294B;LEFT BARB DOWN RIGHT BARB UP HARPOON;Sm;0;ON;;;;;N;;;;; +294C;UP BARB RIGHT DOWN BARB LEFT HARPOON;Sm;0;ON;;;;;N;;;;; +294D;UP BARB LEFT DOWN BARB RIGHT HARPOON;Sm;0;ON;;;;;N;;;;; +294E;LEFT BARB UP RIGHT BARB UP HARPOON;Sm;0;ON;;;;;N;;;;; +294F;UP BARB RIGHT DOWN BARB RIGHT HARPOON;Sm;0;ON;;;;;N;;;;; +2950;LEFT BARB DOWN RIGHT BARB DOWN HARPOON;Sm;0;ON;;;;;N;;;;; +2951;UP BARB LEFT DOWN BARB LEFT HARPOON;Sm;0;ON;;;;;N;;;;; +2952;LEFTWARDS HARPOON WITH BARB UP TO BAR;Sm;0;ON;;;;;N;;;;; +2953;RIGHTWARDS HARPOON WITH BARB UP TO BAR;Sm;0;ON;;;;;N;;;;; +2954;UPWARDS HARPOON WITH BARB RIGHT TO BAR;Sm;0;ON;;;;;N;;;;; +2955;DOWNWARDS HARPOON WITH BARB RIGHT TO BAR;Sm;0;ON;;;;;N;;;;; +2956;LEFTWARDS HARPOON WITH BARB DOWN TO BAR;Sm;0;ON;;;;;N;;;;; +2957;RIGHTWARDS HARPOON WITH BARB DOWN TO BAR;Sm;0;ON;;;;;N;;;;; +2958;UPWARDS HARPOON WITH BARB LEFT TO BAR;Sm;0;ON;;;;;N;;;;; +2959;DOWNWARDS HARPOON WITH BARB LEFT TO BAR;Sm;0;ON;;;;;N;;;;; +295A;LEFTWARDS HARPOON WITH BARB UP FROM BAR;Sm;0;ON;;;;;N;;;;; +295B;RIGHTWARDS HARPOON WITH BARB UP FROM BAR;Sm;0;ON;;;;;N;;;;; +295C;UPWARDS HARPOON WITH BARB RIGHT FROM BAR;Sm;0;ON;;;;;N;;;;; +295D;DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR;Sm;0;ON;;;;;N;;;;; +295E;LEFTWARDS HARPOON WITH BARB DOWN FROM BAR;Sm;0;ON;;;;;N;;;;; +295F;RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR;Sm;0;ON;;;;;N;;;;; +2960;UPWARDS HARPOON WITH BARB LEFT FROM BAR;Sm;0;ON;;;;;N;;;;; +2961;DOWNWARDS HARPOON WITH BARB LEFT FROM BAR;Sm;0;ON;;;;;N;;;;; +2962;LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;; +2963;UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;; +2964;RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;; +2965;DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;; +2966;LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP;Sm;0;ON;;;;;N;;;;; +2967;LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;; +2968;RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP;Sm;0;ON;;;;;N;;;;; +2969;RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;; +296A;LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;Sm;0;ON;;;;;N;;;;; +296B;LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH;Sm;0;ON;;;;;N;;;;; +296C;RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;Sm;0;ON;;;;;N;;;;; +296D;RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH;Sm;0;ON;;;;;N;;;;; +296E;UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;; +296F;DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;; +2970;RIGHT DOUBLE ARROW WITH ROUNDED HEAD;Sm;0;ON;;;;;N;;;;; +2971;EQUALS SIGN ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +2972;TILDE OPERATOR ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +2973;LEFTWARDS ARROW ABOVE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;; +2974;RIGHTWARDS ARROW ABOVE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;; +2975;RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;; +2976;LESS-THAN ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +2977;LEFTWARDS ARROW THROUGH LESS-THAN;Sm;0;ON;;;;;N;;;;; +2978;GREATER-THAN ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +2979;SUBSET ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +297A;LEFTWARDS ARROW THROUGH SUBSET;Sm;0;ON;;;;;N;;;;; +297B;SUPERSET ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +297C;LEFT FISH TAIL;Sm;0;ON;;;;;N;;;;; +297D;RIGHT FISH TAIL;Sm;0;ON;;;;;N;;;;; +297E;UP FISH TAIL;Sm;0;ON;;;;;N;;;;; +297F;DOWN FISH TAIL;Sm;0;ON;;;;;N;;;;; +2980;TRIPLE VERTICAL BAR DELIMITER;Sm;0;ON;;;;;N;;;;; +2981;Z NOTATION SPOT;Sm;0;ON;;;;;N;;;;; +2982;Z NOTATION TYPE COLON;Sm;0;ON;;;;;N;;;;; +2983;LEFT WHITE CURLY BRACKET;Ps;0;ON;;;;;Y;;;;; +2984;RIGHT WHITE CURLY BRACKET;Pe;0;ON;;;;;Y;;;;; +2985;LEFT WHITE PARENTHESIS;Ps;0;ON;;;;;Y;;;;; +2986;RIGHT WHITE PARENTHESIS;Pe;0;ON;;;;;Y;;;;; +2987;Z NOTATION LEFT IMAGE BRACKET;Ps;0;ON;;;;;Y;;;;; +2988;Z NOTATION RIGHT IMAGE BRACKET;Pe;0;ON;;;;;Y;;;;; +2989;Z NOTATION LEFT BINDING BRACKET;Ps;0;ON;;;;;Y;;;;; +298A;Z NOTATION RIGHT BINDING BRACKET;Pe;0;ON;;;;;Y;;;;; +298B;LEFT SQUARE BRACKET WITH UNDERBAR;Ps;0;ON;;;;;Y;;;;; +298C;RIGHT SQUARE BRACKET WITH UNDERBAR;Pe;0;ON;;;;;Y;;;;; +298D;LEFT SQUARE BRACKET WITH TICK IN TOP CORNER;Ps;0;ON;;;;;Y;;;;; +298E;RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER;Pe;0;ON;;;;;Y;;;;; +298F;LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER;Ps;0;ON;;;;;Y;;;;; +2990;RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER;Pe;0;ON;;;;;Y;;;;; +2991;LEFT ANGLE BRACKET WITH DOT;Ps;0;ON;;;;;Y;;;;; +2992;RIGHT ANGLE BRACKET WITH DOT;Pe;0;ON;;;;;Y;;;;; +2993;LEFT ARC LESS-THAN BRACKET;Ps;0;ON;;;;;Y;;;;; +2994;RIGHT ARC GREATER-THAN BRACKET;Pe;0;ON;;;;;Y;;;;; +2995;DOUBLE LEFT ARC GREATER-THAN BRACKET;Ps;0;ON;;;;;Y;;;;; +2996;DOUBLE RIGHT ARC LESS-THAN BRACKET;Pe;0;ON;;;;;Y;;;;; +2997;LEFT BLACK TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;;;;; +2998;RIGHT BLACK TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;;;;; +2999;DOTTED FENCE;Sm;0;ON;;;;;N;;;;; +299A;VERTICAL ZIGZAG LINE;Sm;0;ON;;;;;N;;;;; +299B;MEASURED ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;; +299C;RIGHT ANGLE VARIANT WITH SQUARE;Sm;0;ON;;;;;Y;;;;; +299D;MEASURED RIGHT ANGLE WITH DOT;Sm;0;ON;;;;;Y;;;;; +299E;ANGLE WITH S INSIDE;Sm;0;ON;;;;;Y;;;;; +299F;ACUTE ANGLE;Sm;0;ON;;;;;Y;;;;; +29A0;SPHERICAL ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;; +29A1;SPHERICAL ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;; +29A2;TURNED ANGLE;Sm;0;ON;;;;;Y;;;;; +29A3;REVERSED ANGLE;Sm;0;ON;;;;;Y;;;;; +29A4;ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; +29A5;REVERSED ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; +29A6;OBLIQUE ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;; +29A7;OBLIQUE ANGLE OPENING DOWN;Sm;0;ON;;;;;Y;;;;; +29A8;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT;Sm;0;ON;;;;;Y;;;;; +29A9;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT;Sm;0;ON;;;;;Y;;;;; +29AA;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT;Sm;0;ON;;;;;Y;;;;; +29AB;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT;Sm;0;ON;;;;;Y;;;;; +29AC;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP;Sm;0;ON;;;;;Y;;;;; +29AD;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP;Sm;0;ON;;;;;Y;;;;; +29AE;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN;Sm;0;ON;;;;;Y;;;;; +29AF;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN;Sm;0;ON;;;;;Y;;;;; +29B0;REVERSED EMPTY SET;Sm;0;ON;;;;;N;;;;; +29B1;EMPTY SET WITH OVERBAR;Sm;0;ON;;;;;N;;;;; +29B2;EMPTY SET WITH SMALL CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;; +29B3;EMPTY SET WITH RIGHT ARROW ABOVE;Sm;0;ON;;;;;N;;;;; +29B4;EMPTY SET WITH LEFT ARROW ABOVE;Sm;0;ON;;;;;N;;;;; +29B5;CIRCLE WITH HORIZONTAL BAR;Sm;0;ON;;;;;N;;;;; +29B6;CIRCLED VERTICAL BAR;Sm;0;ON;;;;;N;;;;; +29B7;CIRCLED PARALLEL;Sm;0;ON;;;;;N;;;;; +29B8;CIRCLED REVERSE SOLIDUS;Sm;0;ON;;;;;Y;;;;; +29B9;CIRCLED PERPENDICULAR;Sm;0;ON;;;;;N;;;;; +29BA;CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR;Sm;0;ON;;;;;N;;;;; +29BB;CIRCLE WITH SUPERIMPOSED X;Sm;0;ON;;;;;N;;;;; +29BC;CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN;Sm;0;ON;;;;;N;;;;; +29BD;UP ARROW THROUGH CIRCLE;Sm;0;ON;;;;;N;;;;; +29BE;CIRCLED WHITE BULLET;Sm;0;ON;;;;;N;;;;; +29BF;CIRCLED BULLET;Sm;0;ON;;;;;N;;;;; +29C0;CIRCLED LESS-THAN;Sm;0;ON;;;;;Y;;;;; +29C1;CIRCLED GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +29C2;CIRCLE WITH SMALL CIRCLE TO THE RIGHT;Sm;0;ON;;;;;Y;;;;; +29C3;CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT;Sm;0;ON;;;;;Y;;;;; +29C4;SQUARED RISING DIAGONAL SLASH;Sm;0;ON;;;;;Y;;;;; +29C5;SQUARED FALLING DIAGONAL SLASH;Sm;0;ON;;;;;Y;;;;; +29C6;SQUARED ASTERISK;Sm;0;ON;;;;;N;;;;; +29C7;SQUARED SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; +29C8;SQUARED SQUARE;Sm;0;ON;;;;;N;;;;; +29C9;TWO JOINED SQUARES;Sm;0;ON;;;;;Y;;;;; +29CA;TRIANGLE WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; +29CB;TRIANGLE WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; +29CC;S IN TRIANGLE;Sm;0;ON;;;;;N;;;;; +29CD;TRIANGLE WITH SERIFS AT BOTTOM;Sm;0;ON;;;;;N;;;;; +29CE;RIGHT TRIANGLE ABOVE LEFT TRIANGLE;Sm;0;ON;;;;;Y;;;;; +29CF;LEFT TRIANGLE BESIDE VERTICAL BAR;Sm;0;ON;;;;;Y;;;;; +29D0;VERTICAL BAR BESIDE RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;; +29D1;BOWTIE WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;; +29D2;BOWTIE WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;; +29D3;BLACK BOWTIE;Sm;0;ON;;;;;N;;;;; +29D4;TIMES WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;; +29D5;TIMES WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;; +29D6;WHITE HOURGLASS;Sm;0;ON;;;;;N;;;;; +29D7;BLACK HOURGLASS;Sm;0;ON;;;;;N;;;;; +29D8;LEFT WIGGLY FENCE;Ps;0;ON;;;;;Y;;;;; +29D9;RIGHT WIGGLY FENCE;Pe;0;ON;;;;;Y;;;;; +29DA;LEFT DOUBLE WIGGLY FENCE;Ps;0;ON;;;;;Y;;;;; +29DB;RIGHT DOUBLE WIGGLY FENCE;Pe;0;ON;;;;;Y;;;;; +29DC;INCOMPLETE INFINITY;Sm;0;ON;;;;;Y;;;;; +29DD;TIE OVER INFINITY;Sm;0;ON;;;;;N;;;;; +29DE;INFINITY NEGATED WITH VERTICAL BAR;Sm;0;ON;;;;;N;;;;; +29DF;DOUBLE-ENDED MULTIMAP;Sm;0;ON;;;;;N;;;;; +29E0;SQUARE WITH CONTOURED OUTLINE;Sm;0;ON;;;;;N;;;;; +29E1;INCREASES AS;Sm;0;ON;;;;;Y;;;;; +29E2;SHUFFLE PRODUCT;Sm;0;ON;;;;;N;;;;; +29E3;EQUALS SIGN AND SLANTED PARALLEL;Sm;0;ON;;;;;Y;;;;; +29E4;EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE;Sm;0;ON;;;;;Y;;;;; +29E5;IDENTICAL TO AND SLANTED PARALLEL;Sm;0;ON;;;;;Y;;;;; +29E6;GLEICH STARK;Sm;0;ON;;;;;N;;;;; +29E7;THERMODYNAMIC;Sm;0;ON;;;;;N;;;;; +29E8;DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;; +29E9;DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;; +29EA;BLACK DIAMOND WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;; +29EB;BLACK LOZENGE;Sm;0;ON;;;;;N;;;;; +29EC;WHITE CIRCLE WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;; +29ED;BLACK CIRCLE WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;; +29EE;ERROR-BARRED WHITE SQUARE;Sm;0;ON;;;;;N;;;;; +29EF;ERROR-BARRED BLACK SQUARE;Sm;0;ON;;;;;N;;;;; +29F0;ERROR-BARRED WHITE DIAMOND;Sm;0;ON;;;;;N;;;;; +29F1;ERROR-BARRED BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; +29F2;ERROR-BARRED WHITE CIRCLE;Sm;0;ON;;;;;N;;;;; +29F3;ERROR-BARRED BLACK CIRCLE;Sm;0;ON;;;;;N;;;;; +29F4;RULE-DELAYED;Sm;0;ON;;;;;Y;;;;; +29F5;REVERSE SOLIDUS OPERATOR;Sm;0;ON;;;;;Y;;;;; +29F6;SOLIDUS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; +29F7;REVERSE SOLIDUS WITH HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; +29F8;BIG SOLIDUS;Sm;0;ON;;;;;Y;;;;; +29F9;BIG REVERSE SOLIDUS;Sm;0;ON;;;;;Y;;;;; +29FA;DOUBLE PLUS;Sm;0;ON;;;;;N;;;;; +29FB;TRIPLE PLUS;Sm;0;ON;;;;;N;;;;; +29FC;LEFT-POINTING CURVED ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;; +29FD;RIGHT-POINTING CURVED ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;; +29FE;TINY;Sm;0;ON;;;;;N;;;;; +29FF;MINY;Sm;0;ON;;;;;N;;;;; +2A00;N-ARY CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;; +2A01;N-ARY CIRCLED PLUS OPERATOR;Sm;0;ON;;;;;N;;;;; +2A02;N-ARY CIRCLED TIMES OPERATOR;Sm;0;ON;;;;;N;;;;; +2A03;N-ARY UNION OPERATOR WITH DOT;Sm;0;ON;;;;;N;;;;; +2A04;N-ARY UNION OPERATOR WITH PLUS;Sm;0;ON;;;;;N;;;;; +2A05;N-ARY SQUARE INTERSECTION OPERATOR;Sm;0;ON;;;;;N;;;;; +2A06;N-ARY SQUARE UNION OPERATOR;Sm;0;ON;;;;;N;;;;; +2A07;TWO LOGICAL AND OPERATOR;Sm;0;ON;;;;;N;;;;; +2A08;TWO LOGICAL OR OPERATOR;Sm;0;ON;;;;;N;;;;; +2A09;N-ARY TIMES OPERATOR;Sm;0;ON;;;;;N;;;;; +2A0A;MODULO TWO SUM;Sm;0;ON;;;;;Y;;;;; +2A0B;SUMMATION WITH INTEGRAL;Sm;0;ON;;;;;Y;;;;; +2A0C;QUADRUPLE INTEGRAL OPERATOR;Sm;0;ON;<compat> 222B 222B 222B 222B;;;;Y;;;;; +2A0D;FINITE PART INTEGRAL;Sm;0;ON;;;;;Y;;;;; +2A0E;INTEGRAL WITH DOUBLE STROKE;Sm;0;ON;;;;;Y;;;;; +2A0F;INTEGRAL AVERAGE WITH SLASH;Sm;0;ON;;;;;Y;;;;; +2A10;CIRCULATION FUNCTION;Sm;0;ON;;;;;Y;;;;; +2A11;ANTICLOCKWISE INTEGRATION;Sm;0;ON;;;;;Y;;;;; +2A12;LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE;Sm;0;ON;;;;;Y;;;;; +2A13;LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE;Sm;0;ON;;;;;Y;;;;; +2A14;LINE INTEGRATION NOT INCLUDING THE POLE;Sm;0;ON;;;;;Y;;;;; +2A15;INTEGRAL AROUND A POINT OPERATOR;Sm;0;ON;;;;;Y;;;;; +2A16;QUATERNION INTEGRAL OPERATOR;Sm;0;ON;;;;;Y;;;;; +2A17;INTEGRAL WITH LEFTWARDS ARROW WITH HOOK;Sm;0;ON;;;;;Y;;;;; +2A18;INTEGRAL WITH TIMES SIGN;Sm;0;ON;;;;;Y;;;;; +2A19;INTEGRAL WITH INTERSECTION;Sm;0;ON;;;;;Y;;;;; +2A1A;INTEGRAL WITH UNION;Sm;0;ON;;;;;Y;;;;; +2A1B;INTEGRAL WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; +2A1C;INTEGRAL WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; +2A1D;JOIN;Sm;0;ON;;;;;N;;;;; +2A1E;LARGE LEFT TRIANGLE OPERATOR;Sm;0;ON;;;;;Y;;;;; +2A1F;Z NOTATION SCHEMA COMPOSITION;Sm;0;ON;;;;;Y;;;;; +2A20;Z NOTATION SCHEMA PIPING;Sm;0;ON;;;;;Y;;;;; +2A21;Z NOTATION SCHEMA PROJECTION;Sm;0;ON;;;;;Y;;;;; +2A22;PLUS SIGN WITH SMALL CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;; +2A23;PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE;Sm;0;ON;;;;;N;;;;; +2A24;PLUS SIGN WITH TILDE ABOVE;Sm;0;ON;;;;;Y;;;;; +2A25;PLUS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;; +2A26;PLUS SIGN WITH TILDE BELOW;Sm;0;ON;;;;;Y;;;;; +2A27;PLUS SIGN WITH SUBSCRIPT TWO;Sm;0;ON;;;;;N;;;;; +2A28;PLUS SIGN WITH BLACK TRIANGLE;Sm;0;ON;;;;;N;;;;; +2A29;MINUS SIGN WITH COMMA ABOVE;Sm;0;ON;;;;;Y;;;;; +2A2A;MINUS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;; +2A2B;MINUS SIGN WITH FALLING DOTS;Sm;0;ON;;;;;Y;;;;; +2A2C;MINUS SIGN WITH RISING DOTS;Sm;0;ON;;;;;Y;;;;; +2A2D;PLUS SIGN IN LEFT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;; +2A2E;PLUS SIGN IN RIGHT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;; +2A2F;VECTOR OR CROSS PRODUCT;Sm;0;ON;;;;;N;;;;; +2A30;MULTIPLICATION SIGN WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; +2A31;MULTIPLICATION SIGN WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; +2A32;SEMIDIRECT PRODUCT WITH BOTTOM CLOSED;Sm;0;ON;;;;;N;;;;; +2A33;SMASH PRODUCT;Sm;0;ON;;;;;N;;;;; +2A34;MULTIPLICATION SIGN IN LEFT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;; +2A35;MULTIPLICATION SIGN IN RIGHT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;; +2A36;CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT;Sm;0;ON;;;;;N;;;;; +2A37;MULTIPLICATION SIGN IN DOUBLE CIRCLE;Sm;0;ON;;;;;N;;;;; +2A38;CIRCLED DIVISION SIGN;Sm;0;ON;;;;;N;;;;; +2A39;PLUS SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;; +2A3A;MINUS SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;; +2A3B;MULTIPLICATION SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;; +2A3C;INTERIOR PRODUCT;Sm;0;ON;;;;;Y;;;;; +2A3D;RIGHTHAND INTERIOR PRODUCT;Sm;0;ON;;;;;Y;;;;; +2A3E;Z NOTATION RELATIONAL COMPOSITION;Sm;0;ON;;;;;Y;;;;; +2A3F;AMALGAMATION OR COPRODUCT;Sm;0;ON;;;;;N;;;;; +2A40;INTERSECTION WITH DOT;Sm;0;ON;;;;;N;;;;; +2A41;UNION WITH MINUS SIGN;Sm;0;ON;;;;;N;;;;; +2A42;UNION WITH OVERBAR;Sm;0;ON;;;;;N;;;;; +2A43;INTERSECTION WITH OVERBAR;Sm;0;ON;;;;;N;;;;; +2A44;INTERSECTION WITH LOGICAL AND;Sm;0;ON;;;;;N;;;;; +2A45;UNION WITH LOGICAL OR;Sm;0;ON;;;;;N;;;;; +2A46;UNION ABOVE INTERSECTION;Sm;0;ON;;;;;N;;;;; +2A47;INTERSECTION ABOVE UNION;Sm;0;ON;;;;;N;;;;; +2A48;UNION ABOVE BAR ABOVE INTERSECTION;Sm;0;ON;;;;;N;;;;; +2A49;INTERSECTION ABOVE BAR ABOVE UNION;Sm;0;ON;;;;;N;;;;; +2A4A;UNION BESIDE AND JOINED WITH UNION;Sm;0;ON;;;;;N;;;;; +2A4B;INTERSECTION BESIDE AND JOINED WITH INTERSECTION;Sm;0;ON;;;;;N;;;;; +2A4C;CLOSED UNION WITH SERIFS;Sm;0;ON;;;;;N;;;;; +2A4D;CLOSED INTERSECTION WITH SERIFS;Sm;0;ON;;;;;N;;;;; +2A4E;DOUBLE SQUARE INTERSECTION;Sm;0;ON;;;;;N;;;;; +2A4F;DOUBLE SQUARE UNION;Sm;0;ON;;;;;N;;;;; +2A50;CLOSED UNION WITH SERIFS AND SMASH PRODUCT;Sm;0;ON;;;;;N;;;;; +2A51;LOGICAL AND WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; +2A52;LOGICAL OR WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; +2A53;DOUBLE LOGICAL AND;Sm;0;ON;;;;;N;;;;; +2A54;DOUBLE LOGICAL OR;Sm;0;ON;;;;;N;;;;; +2A55;TWO INTERSECTING LOGICAL AND;Sm;0;ON;;;;;N;;;;; +2A56;TWO INTERSECTING LOGICAL OR;Sm;0;ON;;;;;N;;;;; +2A57;SLOPING LARGE OR;Sm;0;ON;;;;;Y;;;;; +2A58;SLOPING LARGE AND;Sm;0;ON;;;;;Y;;;;; +2A59;LOGICAL OR OVERLAPPING LOGICAL AND;Sm;0;ON;;;;;N;;;;; +2A5A;LOGICAL AND WITH MIDDLE STEM;Sm;0;ON;;;;;N;;;;; +2A5B;LOGICAL OR WITH MIDDLE STEM;Sm;0;ON;;;;;N;;;;; +2A5C;LOGICAL AND WITH HORIZONTAL DASH;Sm;0;ON;;;;;N;;;;; +2A5D;LOGICAL OR WITH HORIZONTAL DASH;Sm;0;ON;;;;;N;;;;; +2A5E;LOGICAL AND WITH DOUBLE OVERBAR;Sm;0;ON;;;;;N;;;;; +2A5F;LOGICAL AND WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; +2A60;LOGICAL AND WITH DOUBLE UNDERBAR;Sm;0;ON;;;;;N;;;;; +2A61;SMALL VEE WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; +2A62;LOGICAL OR WITH DOUBLE OVERBAR;Sm;0;ON;;;;;N;;;;; +2A63;LOGICAL OR WITH DOUBLE UNDERBAR;Sm;0;ON;;;;;N;;;;; +2A64;Z NOTATION DOMAIN ANTIRESTRICTION;Sm;0;ON;;;;;Y;;;;; +2A65;Z NOTATION RANGE ANTIRESTRICTION;Sm;0;ON;;;;;Y;;;;; +2A66;EQUALS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;; +2A67;IDENTICAL WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; +2A68;TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2A69;TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2A6A;TILDE OPERATOR WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; +2A6B;TILDE OPERATOR WITH RISING DOTS;Sm;0;ON;;;;;Y;;;;; +2A6C;SIMILAR MINUS SIMILAR;Sm;0;ON;;;;;Y;;;;; +2A6D;CONGRUENT WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; +2A6E;EQUALS WITH ASTERISK;Sm;0;ON;;;;;N;;;;; +2A6F;ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT;Sm;0;ON;;;;;Y;;;;; +2A70;APPROXIMATELY EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2A71;EQUALS SIGN ABOVE PLUS SIGN;Sm;0;ON;;;;;N;;;;; +2A72;PLUS SIGN ABOVE EQUALS SIGN;Sm;0;ON;;;;;N;;;;; +2A73;EQUALS SIGN ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; +2A74;DOUBLE COLON EQUAL;Sm;0;ON;<compat> 003A 003A 003D;;;;Y;;;;; +2A75;TWO CONSECUTIVE EQUALS SIGNS;Sm;0;ON;<compat> 003D 003D;;;;N;;;;; +2A76;THREE CONSECUTIVE EQUALS SIGNS;Sm;0;ON;<compat> 003D 003D 003D;;;;N;;;;; +2A77;EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW;Sm;0;ON;;;;;N;;;;; +2A78;EQUIVALENT WITH FOUR DOTS ABOVE;Sm;0;ON;;;;;N;;;;; +2A79;LESS-THAN WITH CIRCLE INSIDE;Sm;0;ON;;;;;Y;;;;; +2A7A;GREATER-THAN WITH CIRCLE INSIDE;Sm;0;ON;;;;;Y;;;;; +2A7B;LESS-THAN WITH QUESTION MARK ABOVE;Sm;0;ON;;;;;Y;;;;; +2A7C;GREATER-THAN WITH QUESTION MARK ABOVE;Sm;0;ON;;;;;Y;;;;; +2A7D;LESS-THAN OR SLANTED EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2A7E;GREATER-THAN OR SLANTED EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2A7F;LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;; +2A80;GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;; +2A81;LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; +2A82;GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; +2A83;LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT;Sm;0;ON;;;;;Y;;;;; +2A84;GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT;Sm;0;ON;;;;;Y;;;;; +2A85;LESS-THAN OR APPROXIMATE;Sm;0;ON;;;;;Y;;;;; +2A86;GREATER-THAN OR APPROXIMATE;Sm;0;ON;;;;;Y;;;;; +2A87;LESS-THAN AND SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2A88;GREATER-THAN AND SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2A89;LESS-THAN AND NOT APPROXIMATE;Sm;0;ON;;;;;Y;;;;; +2A8A;GREATER-THAN AND NOT APPROXIMATE;Sm;0;ON;;;;;Y;;;;; +2A8B;LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +2A8C;GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN;Sm;0;ON;;;;;Y;;;;; +2A8D;LESS-THAN ABOVE SIMILAR OR EQUAL;Sm;0;ON;;;;;Y;;;;; +2A8E;GREATER-THAN ABOVE SIMILAR OR EQUAL;Sm;0;ON;;;;;Y;;;;; +2A8F;LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +2A90;GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN;Sm;0;ON;;;;;Y;;;;; +2A91;LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL;Sm;0;ON;;;;;Y;;;;; +2A92;GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL;Sm;0;ON;;;;;Y;;;;; +2A93;LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;; +2A94;GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;; +2A95;SLANTED EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;; +2A96;SLANTED EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +2A97;SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;; +2A98;SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;; +2A99;DOUBLE-LINE EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;; +2A9A;DOUBLE-LINE EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +2A9B;DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;; +2A9C;DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +2A9D;SIMILAR OR LESS-THAN;Sm;0;ON;;;;;Y;;;;; +2A9E;SIMILAR OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +2A9F;SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; +2AA0;SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; +2AA1;DOUBLE NESTED LESS-THAN;Sm;0;ON;;;;;Y;;;;; +2AA2;DOUBLE NESTED GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +2AA3;DOUBLE NESTED LESS-THAN WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; +2AA4;GREATER-THAN OVERLAPPING LESS-THAN;Sm;0;ON;;;;;N;;;;; +2AA5;GREATER-THAN BESIDE LESS-THAN;Sm;0;ON;;;;;N;;;;; +2AA6;LESS-THAN CLOSED BY CURVE;Sm;0;ON;;;;;Y;;;;; +2AA7;GREATER-THAN CLOSED BY CURVE;Sm;0;ON;;;;;Y;;;;; +2AA8;LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;; +2AA9;GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;; +2AAA;SMALLER THAN;Sm;0;ON;;;;;Y;;;;; +2AAB;LARGER THAN;Sm;0;ON;;;;;Y;;;;; +2AAC;SMALLER THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AAD;LARGER THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AAE;EQUALS SIGN WITH BUMPY ABOVE;Sm;0;ON;;;;;N;;;;; +2AAF;PRECEDES ABOVE SINGLE-LINE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; +2AB0;SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; +2AB1;PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AB2;SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AB3;PRECEDES ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; +2AB4;SUCCEEDS ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; +2AB5;PRECEDES ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AB6;SUCCEEDS ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AB7;PRECEDES ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AB8;SUCCEEDS ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AB9;PRECEDES ABOVE NOT ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2ABA;SUCCEEDS ABOVE NOT ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2ABB;DOUBLE PRECEDES;Sm;0;ON;;;;;Y;;;;; +2ABC;DOUBLE SUCCEEDS;Sm;0;ON;;;;;Y;;;;; +2ABD;SUBSET WITH DOT;Sm;0;ON;;;;;Y;;;;; +2ABE;SUPERSET WITH DOT;Sm;0;ON;;;;;Y;;;;; +2ABF;SUBSET WITH PLUS SIGN BELOW;Sm;0;ON;;;;;Y;;;;; +2AC0;SUPERSET WITH PLUS SIGN BELOW;Sm;0;ON;;;;;Y;;;;; +2AC1;SUBSET WITH MULTIPLICATION SIGN BELOW;Sm;0;ON;;;;;Y;;;;; +2AC2;SUPERSET WITH MULTIPLICATION SIGN BELOW;Sm;0;ON;;;;;Y;;;;; +2AC3;SUBSET OF OR EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; +2AC4;SUPERSET OF OR EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; +2AC5;SUBSET OF ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; +2AC6;SUPERSET OF ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; +2AC7;SUBSET OF ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; +2AC8;SUPERSET OF ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; +2AC9;SUBSET OF ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2ACA;SUPERSET OF ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2ACB;SUBSET OF ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2ACC;SUPERSET OF ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2ACD;SQUARE LEFT OPEN BOX OPERATOR;Sm;0;ON;;;;;Y;;;;; +2ACE;SQUARE RIGHT OPEN BOX OPERATOR;Sm;0;ON;;;;;Y;;;;; +2ACF;CLOSED SUBSET;Sm;0;ON;;;;;Y;;;;; +2AD0;CLOSED SUPERSET;Sm;0;ON;;;;;Y;;;;; +2AD1;CLOSED SUBSET OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AD2;CLOSED SUPERSET OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AD3;SUBSET ABOVE SUPERSET;Sm;0;ON;;;;;Y;;;;; +2AD4;SUPERSET ABOVE SUBSET;Sm;0;ON;;;;;Y;;;;; +2AD5;SUBSET ABOVE SUBSET;Sm;0;ON;;;;;Y;;;;; +2AD6;SUPERSET ABOVE SUPERSET;Sm;0;ON;;;;;Y;;;;; +2AD7;SUPERSET BESIDE SUBSET;Sm;0;ON;;;;;N;;;;; +2AD8;SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET;Sm;0;ON;;;;;N;;;;; +2AD9;ELEMENT OF OPENING DOWNWARDS;Sm;0;ON;;;;;N;;;;; +2ADA;PITCHFORK WITH TEE TOP;Sm;0;ON;;;;;N;;;;; +2ADB;TRANSVERSAL INTERSECTION;Sm;0;ON;;;;;N;;;;; +2ADC;FORKING;Sm;0;ON;2ADD 0338;;;;Y;;not independent;;; +2ADD;NONFORKING;Sm;0;ON;;;;;N;;independent;;; +2ADE;SHORT LEFT TACK;Sm;0;ON;;;;;Y;;;;; +2ADF;SHORT DOWN TACK;Sm;0;ON;;;;;N;;;;; +2AE0;SHORT UP TACK;Sm;0;ON;;;;;N;;;;; +2AE1;PERPENDICULAR WITH S;Sm;0;ON;;;;;N;;;;; +2AE2;VERTICAL BAR TRIPLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;; +2AE3;DOUBLE VERTICAL BAR LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;; +2AE4;VERTICAL BAR DOUBLE LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;; +2AE5;DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;; +2AE6;LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL;Sm;0;ON;;;;;Y;;;;; +2AE7;SHORT DOWN TACK WITH OVERBAR;Sm;0;ON;;;;;N;;;;; +2AE8;SHORT UP TACK WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; +2AE9;SHORT UP TACK ABOVE SHORT DOWN TACK;Sm;0;ON;;;;;N;;;;; +2AEA;DOUBLE DOWN TACK;Sm;0;ON;;;;;N;;;;; +2AEB;DOUBLE UP TACK;Sm;0;ON;;;;;N;;;;; +2AEC;DOUBLE STROKE NOT SIGN;Sm;0;ON;;;;;Y;;;;; +2AED;REVERSED DOUBLE STROKE NOT SIGN;Sm;0;ON;;;;;Y;;;;; +2AEE;DOES NOT DIVIDE WITH REVERSED NEGATION SLASH;Sm;0;ON;;;;;Y;;;;; +2AEF;VERTICAL LINE WITH CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;; +2AF0;VERTICAL LINE WITH CIRCLE BELOW;Sm;0;ON;;;;;N;;;;; +2AF1;DOWN TACK WITH CIRCLE BELOW;Sm;0;ON;;;;;N;;;;; +2AF2;PARALLEL WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; +2AF3;PARALLEL WITH TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; +2AF4;TRIPLE VERTICAL BAR BINARY RELATION;Sm;0;ON;;;;;N;;;;; +2AF5;TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; +2AF6;TRIPLE COLON OPERATOR;Sm;0;ON;;;;;N;;;;; +2AF7;TRIPLE NESTED LESS-THAN;Sm;0;ON;;;;;Y;;;;; +2AF8;TRIPLE NESTED GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +2AF9;DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AFA;DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AFB;TRIPLE SOLIDUS BINARY RELATION;Sm;0;ON;;;;;Y;;;;; +2AFC;LARGE TRIPLE VERTICAL BAR OPERATOR;Sm;0;ON;;;;;N;;;;; +2AFD;DOUBLE SOLIDUS OPERATOR;Sm;0;ON;;;;;Y;;;;; +2AFE;WHITE VERTICAL BAR;Sm;0;ON;;;;;N;;;;; +2AFF;N-ARY WHITE VERTICAL BAR;Sm;0;ON;;;;;N;;;;; 2E80;CJK RADICAL REPEAT;So;0;ON;;;;;N;;;;; 2E81;CJK RADICAL CLIFF;So;0;ON;;;;;N;;;;; 2E82;CJK RADICAL SECOND ONE;So;0;ON;;;;;N;;;;; @@ -7198,6 +8074,9 @@ 3038;HANGZHOU NUMERAL TEN;Nl;0;L;<compat> 5341;;;10;N;;;;; 3039;HANGZHOU NUMERAL TWENTY;Nl;0;L;<compat> 5344;;;20;N;;;;; 303A;HANGZHOU NUMERAL THIRTY;Nl;0;L;<compat> 5345;;;30;N;;;;; +303B;VERTICAL IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;; +303C;MASU MARK;Lo;0;L;;;;;N;;;;; +303D;PART ALTERNATION MARK;Po;0;ON;;;;;N;;;;; 303E;IDEOGRAPHIC VARIATION INDICATOR;So;0;ON;;;;;N;;;;; 303F;IDEOGRAPHIC HALF FILL SPACE;So;0;ON;;;;;N;;;;; 3041;HIRAGANA LETTER SMALL A;Lo;0;L;;;;;N;;;;; @@ -7284,12 +8163,16 @@ 3092;HIRAGANA LETTER WO;Lo;0;L;;;;;N;;;;; 3093;HIRAGANA LETTER N;Lo;0;L;;;;;N;;;;; 3094;HIRAGANA LETTER VU;Lo;0;L;3046 3099;;;;N;;;;; +3095;HIRAGANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;; +3096;HIRAGANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;; 3099;COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA VOICED SOUND MARK;;;; 309A;COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;;;; 309B;KATAKANA-HIRAGANA VOICED SOUND MARK;Sk;0;ON;<compat> 0020 3099;;;;N;;;;; 309C;KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Sk;0;ON;<compat> 0020 309A;;;;N;;;;; 309D;HIRAGANA ITERATION MARK;Lm;0;L;;;;;N;;;;; 309E;HIRAGANA VOICED ITERATION MARK;Lm;0;L;309D 3099;;;;N;;;;; +309F;HIRAGANA DIGRAPH YORI;Lo;0;L;<vertical> 3088 308A;;;;N;;;;; +30A0;KATAKANA-HIRAGANA DOUBLE HYPHEN;Pd;0;ON;;;;;N;;;;; 30A1;KATAKANA LETTER SMALL A;Lo;0;L;;;;;N;;;;; 30A2;KATAKANA LETTER A;Lo;0;L;;;;;N;;;;; 30A3;KATAKANA LETTER SMALL I;Lo;0;L;;;;;N;;;;; @@ -7384,6 +8267,7 @@ 30FC;KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;;;;;N;;;;; 30FD;KATAKANA ITERATION MARK;Lm;0;L;;;;;N;;;;; 30FE;KATAKANA VOICED ITERATION MARK;Lm;0;L;30FD 3099;;;;N;;;;; +30FF;KATAKANA DIGRAPH KOTO;Lo;0;L;<vertical> 30B3 30C8;;;;N;;;;; 3105;BOPOMOFO LETTER B;Lo;0;L;;;;;N;;;;; 3106;BOPOMOFO LETTER P;Lo;0;L;;;;;N;;;;; 3107;BOPOMOFO LETTER M;Lo;0;L;;;;;N;;;;; @@ -7558,6 +8442,22 @@ 31B5;BOPOMOFO FINAL LETTER T;Lo;0;L;;;;;N;;;;; 31B6;BOPOMOFO FINAL LETTER K;Lo;0;L;;;;;N;;;;; 31B7;BOPOMOFO FINAL LETTER H;Lo;0;L;;;;;N;;;;; +31F0;KATAKANA LETTER SMALL KU;Lo;0;L;;;;;N;;;;; +31F1;KATAKANA LETTER SMALL SI;Lo;0;L;;;;;N;;;;; +31F2;KATAKANA LETTER SMALL SU;Lo;0;L;;;;;N;;;;; +31F3;KATAKANA LETTER SMALL TO;Lo;0;L;;;;;N;;;;; +31F4;KATAKANA LETTER SMALL NU;Lo;0;L;;;;;N;;;;; +31F5;KATAKANA LETTER SMALL HA;Lo;0;L;;;;;N;;;;; +31F6;KATAKANA LETTER SMALL HI;Lo;0;L;;;;;N;;;;; +31F7;KATAKANA LETTER SMALL HU;Lo;0;L;;;;;N;;;;; +31F8;KATAKANA LETTER SMALL HE;Lo;0;L;;;;;N;;;;; +31F9;KATAKANA LETTER SMALL HO;Lo;0;L;;;;;N;;;;; +31FA;KATAKANA LETTER SMALL MU;Lo;0;L;;;;;N;;;;; +31FB;KATAKANA LETTER SMALL RA;Lo;0;L;;;;;N;;;;; +31FC;KATAKANA LETTER SMALL RI;Lo;0;L;;;;;N;;;;; +31FD;KATAKANA LETTER SMALL RU;Lo;0;L;;;;;N;;;;; +31FE;KATAKANA LETTER SMALL RE;Lo;0;L;;;;;N;;;;; +31FF;KATAKANA LETTER SMALL RO;Lo;0;L;;;;;N;;;;; 3200;PARENTHESIZED HANGUL KIYEOK;So;0;L;<compat> 0028 1100 0029;;;;N;PARENTHESIZED HANGUL GIYEOG;;;; 3201;PARENTHESIZED HANGUL NIEUN;So;0;L;<compat> 0028 1102 0029;;;;N;;;;; 3202;PARENTHESIZED HANGUL TIKEUT;So;0;L;<compat> 0028 1103 0029;;;;N;PARENTHESIZED HANGUL DIGEUD;;;; @@ -7623,6 +8523,21 @@ 3241;PARENTHESIZED IDEOGRAPH REST;So;0;L;<compat> 0028 4F11 0029;;;;N;;;;; 3242;PARENTHESIZED IDEOGRAPH SELF;So;0;L;<compat> 0028 81EA 0029;;;;N;;;;; 3243;PARENTHESIZED IDEOGRAPH REACH;So;0;L;<compat> 0028 81F3 0029;;;;N;;;;; +3251;CIRCLED NUMBER TWENTY ONE;No;0;ON;<circle> 0032 0031;;;21;N;;;;; +3252;CIRCLED NUMBER TWENTY TWO;No;0;ON;<circle> 0032 0032;;;22;N;;;;; +3253;CIRCLED NUMBER TWENTY THREE;No;0;ON;<circle> 0032 0033;;;23;N;;;;; +3254;CIRCLED NUMBER TWENTY FOUR;No;0;ON;<circle> 0032 0034;;;24;N;;;;; +3255;CIRCLED NUMBER TWENTY FIVE;No;0;ON;<circle> 0032 0035;;;25;N;;;;; +3256;CIRCLED NUMBER TWENTY SIX;No;0;ON;<circle> 0032 0036;;;26;N;;;;; +3257;CIRCLED NUMBER TWENTY SEVEN;No;0;ON;<circle> 0032 0037;;;27;N;;;;; +3258;CIRCLED NUMBER TWENTY EIGHT;No;0;ON;<circle> 0032 0038;;;28;N;;;;; +3259;CIRCLED NUMBER TWENTY NINE;No;0;ON;<circle> 0032 0039;;;29;N;;;;; +325A;CIRCLED NUMBER THIRTY;No;0;ON;<circle> 0033 0030;;;30;N;;;;; +325B;CIRCLED NUMBER THIRTY ONE;No;0;ON;<circle> 0033 0031;;;31;N;;;;; +325C;CIRCLED NUMBER THIRTY TWO;No;0;ON;<circle> 0033 0032;;;32;N;;;;; +325D;CIRCLED NUMBER THIRTY THREE;No;0;ON;<circle> 0033 0033;;;33;N;;;;; +325E;CIRCLED NUMBER THIRTY FOUR;No;0;ON;<circle> 0033 0034;;;34;N;;;;; +325F;CIRCLED NUMBER THIRTY FIVE;No;0;ON;<circle> 0033 0035;;;35;N;;;;; 3260;CIRCLED HANGUL KIYEOK;So;0;L;<circle> 1100;;;;N;CIRCLED HANGUL GIYEOG;;;; 3261;CIRCLED HANGUL NIEUN;So;0;L;<circle> 1102;;;;N;;;;; 3262;CIRCLED HANGUL TIKEUT;So;0;L;<circle> 1103;;;;N;CIRCLED HANGUL DIGEUD;;;; @@ -7701,6 +8616,21 @@ 32AE;CIRCLED IDEOGRAPH RESOURCE;So;0;L;<circle> 8CC7;;;;N;;;;; 32AF;CIRCLED IDEOGRAPH ALLIANCE;So;0;L;<circle> 5354;;;;N;;;;; 32B0;CIRCLED IDEOGRAPH NIGHT;So;0;L;<circle> 591C;;;;N;;;;; +32B1;CIRCLED NUMBER THIRTY SIX;No;0;ON;<circle> 0033 0036;;;36;N;;;;; +32B2;CIRCLED NUMBER THIRTY SEVEN;No;0;ON;<circle> 0033 0037;;;37;N;;;;; +32B3;CIRCLED NUMBER THIRTY EIGHT;No;0;ON;<circle> 0033 0038;;;38;N;;;;; +32B4;CIRCLED NUMBER THIRTY NINE;No;0;ON;<circle> 0033 0039;;;39;N;;;;; +32B5;CIRCLED NUMBER FORTY;No;0;ON;<circle> 0034 0030;;;40;N;;;;; +32B6;CIRCLED NUMBER FORTY ONE;No;0;ON;<circle> 0034 0031;;;41;N;;;;; +32B7;CIRCLED NUMBER FORTY TWO;No;0;ON;<circle> 0034 0032;;;42;N;;;;; +32B8;CIRCLED NUMBER FORTY THREE;No;0;ON;<circle> 0034 0033;;;43;N;;;;; +32B9;CIRCLED NUMBER FORTY FOUR;No;0;ON;<circle> 0034 0034;;;44;N;;;;; +32BA;CIRCLED NUMBER FORTY FIVE;No;0;ON;<circle> 0034 0035;;;45;N;;;;; +32BB;CIRCLED NUMBER FORTY SIX;No;0;ON;<circle> 0034 0036;;;46;N;;;;; +32BC;CIRCLED NUMBER FORTY SEVEN;No;0;ON;<circle> 0034 0037;;;47;N;;;;; +32BD;CIRCLED NUMBER FORTY EIGHT;No;0;ON;<circle> 0034 0038;;;48;N;;;;; +32BE;CIRCLED NUMBER FORTY NINE;No;0;ON;<circle> 0034 0039;;;49;N;;;;; +32BF;CIRCLED NUMBER FIFTY;No;0;ON;<circle> 0035 0030;;;50;N;;;;; 32C0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY;So;0;L;<compat> 0031 6708;;;;N;;;;; 32C1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY;So;0;L;<compat> 0032 6708;;;;N;;;;; 32C2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH;So;0;L;<compat> 0033 6708;;;;N;;;;; @@ -9196,6 +10126,8 @@ A49E;YI RADICAL PUT;So;0;ON;;;;;N;;;;; A49F;YI RADICAL HXUO;So;0;ON;;;;;N;;;;; A4A0;YI RADICAL TAT;So;0;ON;;;;;N;;;;; A4A1;YI RADICAL GA;So;0;ON;;;;;N;;;;; +A4A2;YI RADICAL ZUP;So;0;ON;;;;;N;;;;; +A4A3;YI RADICAL CYT;So;0;ON;;;;;N;;;;; A4A4;YI RADICAL DDUR;So;0;ON;;;;;N;;;;; A4A5;YI RADICAL BUR;So;0;ON;;;;;N;;;;; A4A6;YI RADICAL GGUO;So;0;ON;;;;;N;;;;; @@ -9212,6 +10144,7 @@ A4B0;YI RADICAL SHY;So;0;ON;;;;;N;;;;; A4B1;YI RADICAL VEP;So;0;ON;;;;;N;;;;; A4B2;YI RADICAL ZA;So;0;ON;;;;;N;;;;; A4B3;YI RADICAL JO;So;0;ON;;;;;N;;;;; +A4B4;YI RADICAL NZUP;So;0;ON;;;;;N;;;;; A4B5;YI RADICAL JJY;So;0;ON;;;;;N;;;;; A4B6;YI RADICAL GOT;So;0;ON;;;;;N;;;;; A4B7;YI RADICAL JJIE;So;0;ON;;;;;N;;;;; @@ -9224,9 +10157,11 @@ A4BD;YI RADICAL CUOP;So;0;ON;;;;;N;;;;; A4BE;YI RADICAL CIP;So;0;ON;;;;;N;;;;; A4BF;YI RADICAL HXOP;So;0;ON;;;;;N;;;;; A4C0;YI RADICAL SHAT;So;0;ON;;;;;N;;;;; +A4C1;YI RADICAL ZUR;So;0;ON;;;;;N;;;;; A4C2;YI RADICAL SHOP;So;0;ON;;;;;N;;;;; A4C3;YI RADICAL CHE;So;0;ON;;;;;N;;;;; A4C4;YI RADICAL ZZIET;So;0;ON;;;;;N;;;;; +A4C5;YI RADICAL NBIE;So;0;ON;;;;;N;;;;; A4C6;YI RADICAL KE;So;0;ON;;;;;N;;;;; AC00;<Hangul Syllable, First>;Lo;0;L;;;;;N;;;;; D7A3;<Hangul Syllable, Last>;Lo;0;L;;;;;N;;;;; @@ -9319,7 +10254,7 @@ F94D;CJK COMPATIBILITY IDEOGRAPH-F94D;Lo;0;L;6DDA;;;;N;;;;; F94E;CJK COMPATIBILITY IDEOGRAPH-F94E;Lo;0;L;6F0F;;;;N;;;;; F94F;CJK COMPATIBILITY IDEOGRAPH-F94F;Lo;0;L;7D2F;;;;N;;;;; F950;CJK COMPATIBILITY IDEOGRAPH-F950;Lo;0;L;7E37;;;;N;;;;; -F951;CJK COMPATIBILITY IDEOGRAPH-F951;Lo;0;L;96FB;;;;N;;;;; +F951;CJK COMPATIBILITY IDEOGRAPH-F951;Lo;0;L;964B;;;;N;;;;; F952;CJK COMPATIBILITY IDEOGRAPH-F952;Lo;0;L;52D2;;;;N;;;;; F953;CJK COMPATIBILITY IDEOGRAPH-F953;Lo;0;L;808B;;;;N;;;;; F954;CJK COMPATIBILITY IDEOGRAPH-F954;Lo;0;L;51DC;;;;N;;;;; @@ -9540,6 +10475,65 @@ FA2A;CJK COMPATIBILITY IDEOGRAPH-FA2A;Lo;0;L;98EF;;;;N;;;;; FA2B;CJK COMPATIBILITY IDEOGRAPH-FA2B;Lo;0;L;98FC;;;;N;;;;; FA2C;CJK COMPATIBILITY IDEOGRAPH-FA2C;Lo;0;L;9928;;;;N;;;;; FA2D;CJK COMPATIBILITY IDEOGRAPH-FA2D;Lo;0;L;9DB4;;;;N;;;;; +FA30;CJK COMPATIBILITY IDEOGRAPH-FA30;Lo;0;L;4FAE;;;;N;;;;; +FA31;CJK COMPATIBILITY IDEOGRAPH-FA31;Lo;0;L;50E7;;;;N;;;;; +FA32;CJK COMPATIBILITY IDEOGRAPH-FA32;Lo;0;L;514D;;;;N;;;;; +FA33;CJK COMPATIBILITY IDEOGRAPH-FA33;Lo;0;L;52C9;;;;N;;;;; +FA34;CJK COMPATIBILITY IDEOGRAPH-FA34;Lo;0;L;52E4;;;;N;;;;; +FA35;CJK COMPATIBILITY IDEOGRAPH-FA35;Lo;0;L;5351;;;;N;;;;; +FA36;CJK COMPATIBILITY IDEOGRAPH-FA36;Lo;0;L;559D;;;;N;;;;; +FA37;CJK COMPATIBILITY IDEOGRAPH-FA37;Lo;0;L;5606;;;;N;;;;; +FA38;CJK COMPATIBILITY IDEOGRAPH-FA38;Lo;0;L;5668;;;;N;;;;; +FA39;CJK COMPATIBILITY IDEOGRAPH-FA39;Lo;0;L;5840;;;;N;;;;; +FA3A;CJK COMPATIBILITY IDEOGRAPH-FA3A;Lo;0;L;58A8;;;;N;;;;; +FA3B;CJK COMPATIBILITY IDEOGRAPH-FA3B;Lo;0;L;5C64;;;;N;;;;; +FA3C;CJK COMPATIBILITY IDEOGRAPH-FA3C;Lo;0;L;5C6E;;;;N;;;;; +FA3D;CJK COMPATIBILITY IDEOGRAPH-FA3D;Lo;0;L;6094;;;;N;;;;; +FA3E;CJK COMPATIBILITY IDEOGRAPH-FA3E;Lo;0;L;6168;;;;N;;;;; +FA3F;CJK COMPATIBILITY IDEOGRAPH-FA3F;Lo;0;L;618E;;;;N;;;;; +FA40;CJK COMPATIBILITY IDEOGRAPH-FA40;Lo;0;L;61F2;;;;N;;;;; +FA41;CJK COMPATIBILITY IDEOGRAPH-FA41;Lo;0;L;654F;;;;N;;;;; +FA42;CJK COMPATIBILITY IDEOGRAPH-FA42;Lo;0;L;65E2;;;;N;;;;; +FA43;CJK COMPATIBILITY IDEOGRAPH-FA43;Lo;0;L;6691;;;;N;;;;; +FA44;CJK COMPATIBILITY IDEOGRAPH-FA44;Lo;0;L;6885;;;;N;;;;; +FA45;CJK COMPATIBILITY IDEOGRAPH-FA45;Lo;0;L;6D77;;;;N;;;;; +FA46;CJK COMPATIBILITY IDEOGRAPH-FA46;Lo;0;L;6E1A;;;;N;;;;; +FA47;CJK COMPATIBILITY IDEOGRAPH-FA47;Lo;0;L;6F22;;;;N;;;;; +FA48;CJK COMPATIBILITY IDEOGRAPH-FA48;Lo;0;L;716E;;;;N;;;;; +FA49;CJK COMPATIBILITY IDEOGRAPH-FA49;Lo;0;L;722B;;;;N;;;;; +FA4A;CJK COMPATIBILITY IDEOGRAPH-FA4A;Lo;0;L;7422;;;;N;;;;; +FA4B;CJK COMPATIBILITY IDEOGRAPH-FA4B;Lo;0;L;7891;;;;N;;;;; +FA4C;CJK COMPATIBILITY IDEOGRAPH-FA4C;Lo;0;L;793E;;;;N;;;;; +FA4D;CJK COMPATIBILITY IDEOGRAPH-FA4D;Lo;0;L;7949;;;;N;;;;; +FA4E;CJK COMPATIBILITY IDEOGRAPH-FA4E;Lo;0;L;7948;;;;N;;;;; +FA4F;CJK COMPATIBILITY IDEOGRAPH-FA4F;Lo;0;L;7950;;;;N;;;;; +FA50;CJK COMPATIBILITY IDEOGRAPH-FA50;Lo;0;L;7956;;;;N;;;;; +FA51;CJK COMPATIBILITY IDEOGRAPH-FA51;Lo;0;L;795D;;;;N;;;;; +FA52;CJK COMPATIBILITY IDEOGRAPH-FA52;Lo;0;L;798D;;;;N;;;;; +FA53;CJK COMPATIBILITY IDEOGRAPH-FA53;Lo;0;L;798E;;;;N;;;;; +FA54;CJK COMPATIBILITY IDEOGRAPH-FA54;Lo;0;L;7A40;;;;N;;;;; +FA55;CJK COMPATIBILITY IDEOGRAPH-FA55;Lo;0;L;7A81;;;;N;;;;; +FA56;CJK COMPATIBILITY IDEOGRAPH-FA56;Lo;0;L;7BC0;;;;N;;;;; +FA57;CJK COMPATIBILITY IDEOGRAPH-FA57;Lo;0;L;7DF4;;;;N;;;;; +FA58;CJK COMPATIBILITY IDEOGRAPH-FA58;Lo;0;L;7E09;;;;N;;;;; +FA59;CJK COMPATIBILITY IDEOGRAPH-FA59;Lo;0;L;7E41;;;;N;;;;; +FA5A;CJK COMPATIBILITY IDEOGRAPH-FA5A;Lo;0;L;7F72;;;;N;;;;; +FA5B;CJK COMPATIBILITY IDEOGRAPH-FA5B;Lo;0;L;8005;;;;N;;;;; +FA5C;CJK COMPATIBILITY IDEOGRAPH-FA5C;Lo;0;L;81ED;;;;N;;;;; +FA5D;CJK COMPATIBILITY IDEOGRAPH-FA5D;Lo;0;L;8279;;;;N;;;;; +FA5E;CJK COMPATIBILITY IDEOGRAPH-FA5E;Lo;0;L;8279;;;;N;;;;; +FA5F;CJK COMPATIBILITY IDEOGRAPH-FA5F;Lo;0;L;8457;;;;N;;;;; +FA60;CJK COMPATIBILITY IDEOGRAPH-FA60;Lo;0;L;8910;;;;N;;;;; +FA61;CJK COMPATIBILITY IDEOGRAPH-FA61;Lo;0;L;8996;;;;N;;;;; +FA62;CJK COMPATIBILITY IDEOGRAPH-FA62;Lo;0;L;8B01;;;;N;;;;; +FA63;CJK COMPATIBILITY IDEOGRAPH-FA63;Lo;0;L;8B39;;;;N;;;;; +FA64;CJK COMPATIBILITY IDEOGRAPH-FA64;Lo;0;L;8CD3;;;;N;;;;; +FA65;CJK COMPATIBILITY IDEOGRAPH-FA65;Lo;0;L;8D08;;;;N;;;;; +FA66;CJK COMPATIBILITY IDEOGRAPH-FA66;Lo;0;L;8FB6;;;;N;;;;; +FA67;CJK COMPATIBILITY IDEOGRAPH-FA67;Lo;0;L;9038;;;;N;;;;; +FA68;CJK COMPATIBILITY IDEOGRAPH-FA68;Lo;0;L;96E3;;;;N;;;;; +FA69;CJK COMPATIBILITY IDEOGRAPH-FA69;Lo;0;L;97FF;;;;N;;;;; +FA6A;CJK COMPATIBILITY IDEOGRAPH-FA6A;Lo;0;L;983B;;;;N;;;;; FB00;LATIN SMALL LIGATURE FF;Ll;0;L;<compat> 0066 0066;;;;N;;;;; FB01;LATIN SMALL LIGATURE FI;Ll;0;L;<compat> 0066 0069;;;;N;;;;; FB02;LATIN SMALL LIGATURE FL;Ll;0;L;<compat> 0066 006C;;;;N;;;;; @@ -10191,6 +11185,23 @@ FDF8;ARABIC LIGATURE WASALLAM ISOLATED FORM;Lo;0;AL;<isolated> 0648 0633 0644 06 FDF9;ARABIC LIGATURE SALLA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0649;;;;N;;;;; FDFA;ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM;Lo;0;AL;<isolated> 0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;;;;N;ARABIC LETTER SALLALLAHOU ALAYHE WASALLAM;;;; FDFB;ARABIC LIGATURE JALLAJALALOUHOU;Lo;0;AL;<isolated> 062C 0644 0020 062C 0644 0627 0644 0647;;;;N;ARABIC LETTER JALLAJALALOUHOU;;;; +FDFC;RIAL SIGN;Sc;0;AL;<isolated> 0631 06CC 0627 0644;;;;N;;;;; +FE00;VARIATION SELECTOR-1;Mn;0;NSM;;;;;N;;;;; +FE01;VARIATION SELECTOR-2;Mn;0;NSM;;;;;N;;;;; +FE02;VARIATION SELECTOR-3;Mn;0;NSM;;;;;N;;;;; +FE03;VARIATION SELECTOR-4;Mn;0;NSM;;;;;N;;;;; +FE04;VARIATION SELECTOR-5;Mn;0;NSM;;;;;N;;;;; +FE05;VARIATION SELECTOR-6;Mn;0;NSM;;;;;N;;;;; +FE06;VARIATION SELECTOR-7;Mn;0;NSM;;;;;N;;;;; +FE07;VARIATION SELECTOR-8;Mn;0;NSM;;;;;N;;;;; +FE08;VARIATION SELECTOR-9;Mn;0;NSM;;;;;N;;;;; +FE09;VARIATION SELECTOR-10;Mn;0;NSM;;;;;N;;;;; +FE0A;VARIATION SELECTOR-11;Mn;0;NSM;;;;;N;;;;; +FE0B;VARIATION SELECTOR-12;Mn;0;NSM;;;;;N;;;;; +FE0C;VARIATION SELECTOR-13;Mn;0;NSM;;;;;N;;;;; +FE0D;VARIATION SELECTOR-14;Mn;0;NSM;;;;;N;;;;; +FE0E;VARIATION SELECTOR-15;Mn;0;NSM;;;;;N;;;;; +FE0F;VARIATION SELECTOR-16;Mn;0;NSM;;;;;N;;;;; FE20;COMBINING LIGATURE LEFT HALF;Mn;230;NSM;;;;;N;;;;; FE21;COMBINING LIGATURE RIGHT HALF;Mn;230;NSM;;;;;N;;;;; FE22;COMBINING DOUBLE TILDE LEFT HALF;Mn;230;NSM;;;;;N;;;;; @@ -10216,6 +11227,8 @@ FE41;PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET;Ps;0;ON;<vertical> 300C; FE42;PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET;Pe;0;ON;<vertical> 300D;;;;N;GLYPH FOR VERTICAL CLOSING CORNER BRACKET;;;; FE43;PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET;Ps;0;ON;<vertical> 300E;;;;N;GLYPH FOR VERTICAL OPENING WHITE CORNER BRACKET;;;; FE44;PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET;Pe;0;ON;<vertical> 300F;;;;N;GLYPH FOR VERTICAL CLOSING WHITE CORNER BRACKET;;;; +FE45;SESAME DOT;Po;0;ON;;;;;N;;;;; +FE46;WHITE SESAME DOT;Po;0;ON;;;;;N;;;;; FE49;DASHED OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DASHED OVERSCORE;;;; FE4A;CENTRELINE OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING CENTERLINE OVERSCORE;;;; FE4B;WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING WAVY OVERSCORE;;;; @@ -10252,6 +11265,7 @@ FE6B;SMALL COMMERCIAL AT;Po;0;ON;<small> 0040;;;;N;;;;; FE70;ARABIC FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064B;;;;N;ARABIC SPACING FATHATAN;;;; FE71;ARABIC TATWEEL WITH FATHATAN ABOVE;Lo;0;AL;<medial> 0640 064B;;;;N;ARABIC FATHATAN ON TATWEEL;;;; FE72;ARABIC DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C;;;;N;ARABIC SPACING DAMMATAN;;;; +FE73;ARABIC TAIL FRAGMENT;Lo;0;AL;;;;;N;;;;; FE74;ARABIC KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D;;;;N;ARABIC SPACING KASRATAN;;;; FE76;ARABIC FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E;;;;N;ARABIC SPACING FATHAH;;;; FE77;ARABIC FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E;;;;N;ARABIC FATHAH ON TATWEEL;;;; @@ -10396,8 +11410,8 @@ FF04;FULLWIDTH DOLLAR SIGN;Sc;0;ET;<wide> 0024;;;;N;;;;; FF05;FULLWIDTH PERCENT SIGN;Po;0;ET;<wide> 0025;;;;N;;;;; FF06;FULLWIDTH AMPERSAND;Po;0;ON;<wide> 0026;;;;N;;;;; FF07;FULLWIDTH APOSTROPHE;Po;0;ON;<wide> 0027;;;;N;;;;; -FF08;FULLWIDTH LEFT PARENTHESIS;Ps;0;ON;<wide> 0028;;;;N;FULLWIDTH OPENING PARENTHESIS;;;; -FF09;FULLWIDTH RIGHT PARENTHESIS;Pe;0;ON;<wide> 0029;;;;N;FULLWIDTH CLOSING PARENTHESIS;;;; +FF08;FULLWIDTH LEFT PARENTHESIS;Ps;0;ON;<wide> 0028;;;;Y;FULLWIDTH OPENING PARENTHESIS;;;; +FF09;FULLWIDTH RIGHT PARENTHESIS;Pe;0;ON;<wide> 0029;;;;Y;FULLWIDTH CLOSING PARENTHESIS;;;; FF0A;FULLWIDTH ASTERISK;Po;0;ON;<wide> 002A;;;;N;;;;; FF0B;FULLWIDTH PLUS SIGN;Sm;0;ET;<wide> 002B;;;;N;;;;; FF0C;FULLWIDTH COMMA;Po;0;CS;<wide> 002C;;;;N;;;;; @@ -10416,9 +11430,9 @@ FF18;FULLWIDTH DIGIT EIGHT;Nd;0;EN;<wide> 0038;8;8;8;N;;;;; FF19;FULLWIDTH DIGIT NINE;Nd;0;EN;<wide> 0039;9;9;9;N;;;;; FF1A;FULLWIDTH COLON;Po;0;CS;<wide> 003A;;;;N;;;;; FF1B;FULLWIDTH SEMICOLON;Po;0;ON;<wide> 003B;;;;N;;;;; -FF1C;FULLWIDTH LESS-THAN SIGN;Sm;0;ON;<wide> 003C;;;;N;;;;; +FF1C;FULLWIDTH LESS-THAN SIGN;Sm;0;ON;<wide> 003C;;;;Y;;;;; FF1D;FULLWIDTH EQUALS SIGN;Sm;0;ON;<wide> 003D;;;;N;;;;; -FF1E;FULLWIDTH GREATER-THAN SIGN;Sm;0;ON;<wide> 003E;;;;N;;;;; +FF1E;FULLWIDTH GREATER-THAN SIGN;Sm;0;ON;<wide> 003E;;;;Y;;;;; FF1F;FULLWIDTH QUESTION MARK;Po;0;ON;<wide> 003F;;;;N;;;;; FF20;FULLWIDTH COMMERCIAL AT;Po;0;ON;<wide> 0040;;;;N;;;;; FF21;FULLWIDTH LATIN CAPITAL LETTER A;Lu;0;L;<wide> 0041;;;;N;;;;FF41; @@ -10447,9 +11461,9 @@ FF37;FULLWIDTH LATIN CAPITAL LETTER W;Lu;0;L;<wide> 0057;;;;N;;;;FF57; FF38;FULLWIDTH LATIN CAPITAL LETTER X;Lu;0;L;<wide> 0058;;;;N;;;;FF58; FF39;FULLWIDTH LATIN CAPITAL LETTER Y;Lu;0;L;<wide> 0059;;;;N;;;;FF59; FF3A;FULLWIDTH LATIN CAPITAL LETTER Z;Lu;0;L;<wide> 005A;;;;N;;;;FF5A; -FF3B;FULLWIDTH LEFT SQUARE BRACKET;Ps;0;ON;<wide> 005B;;;;N;FULLWIDTH OPENING SQUARE BRACKET;;;; +FF3B;FULLWIDTH LEFT SQUARE BRACKET;Ps;0;ON;<wide> 005B;;;;Y;FULLWIDTH OPENING SQUARE BRACKET;;;; FF3C;FULLWIDTH REVERSE SOLIDUS;Po;0;ON;<wide> 005C;;;;N;FULLWIDTH BACKSLASH;;;; -FF3D;FULLWIDTH RIGHT SQUARE BRACKET;Pe;0;ON;<wide> 005D;;;;N;FULLWIDTH CLOSING SQUARE BRACKET;;;; +FF3D;FULLWIDTH RIGHT SQUARE BRACKET;Pe;0;ON;<wide> 005D;;;;Y;FULLWIDTH CLOSING SQUARE BRACKET;;;; FF3E;FULLWIDTH CIRCUMFLEX ACCENT;Sk;0;ON;<wide> 005E;;;;N;FULLWIDTH SPACING CIRCUMFLEX;;;; FF3F;FULLWIDTH LOW LINE;Pc;0;ON;<wide> 005F;;;;N;FULLWIDTH SPACING UNDERSCORE;;;; FF40;FULLWIDTH GRAVE ACCENT;Sk;0;ON;<wide> 0060;;;;N;FULLWIDTH SPACING GRAVE;;;; @@ -10479,13 +11493,15 @@ FF57;FULLWIDTH LATIN SMALL LETTER W;Ll;0;L;<wide> 0077;;;;N;;;FF37;;FF37 FF58;FULLWIDTH LATIN SMALL LETTER X;Ll;0;L;<wide> 0078;;;;N;;;FF38;;FF38 FF59;FULLWIDTH LATIN SMALL LETTER Y;Ll;0;L;<wide> 0079;;;;N;;;FF39;;FF39 FF5A;FULLWIDTH LATIN SMALL LETTER Z;Ll;0;L;<wide> 007A;;;;N;;;FF3A;;FF3A -FF5B;FULLWIDTH LEFT CURLY BRACKET;Ps;0;ON;<wide> 007B;;;;N;FULLWIDTH OPENING CURLY BRACKET;;;; +FF5B;FULLWIDTH LEFT CURLY BRACKET;Ps;0;ON;<wide> 007B;;;;Y;FULLWIDTH OPENING CURLY BRACKET;;;; FF5C;FULLWIDTH VERTICAL LINE;Sm;0;ON;<wide> 007C;;;;N;FULLWIDTH VERTICAL BAR;;;; -FF5D;FULLWIDTH RIGHT CURLY BRACKET;Pe;0;ON;<wide> 007D;;;;N;FULLWIDTH CLOSING CURLY BRACKET;;;; +FF5D;FULLWIDTH RIGHT CURLY BRACKET;Pe;0;ON;<wide> 007D;;;;Y;FULLWIDTH CLOSING CURLY BRACKET;;;; FF5E;FULLWIDTH TILDE;Sm;0;ON;<wide> 007E;;;;N;FULLWIDTH SPACING TILDE;;;; +FF5F;FULLWIDTH LEFT WHITE PARENTHESIS;Ps;0;ON;<wide> 2985;;;;Y;;*;;; +FF60;FULLWIDTH RIGHT WHITE PARENTHESIS;Pe;0;ON;<wide> 2986;;;;Y;;*;;; FF61;HALFWIDTH IDEOGRAPHIC FULL STOP;Po;0;ON;<narrow> 3002;;;;N;HALFWIDTH IDEOGRAPHIC PERIOD;;;; -FF62;HALFWIDTH LEFT CORNER BRACKET;Ps;0;ON;<narrow> 300C;;;;N;HALFWIDTH OPENING CORNER BRACKET;;;; -FF63;HALFWIDTH RIGHT CORNER BRACKET;Pe;0;ON;<narrow> 300D;;;;N;HALFWIDTH CLOSING CORNER BRACKET;;;; +FF62;HALFWIDTH LEFT CORNER BRACKET;Ps;0;ON;<narrow> 300C;;;;Y;HALFWIDTH OPENING CORNER BRACKET;;;; +FF63;HALFWIDTH RIGHT CORNER BRACKET;Pe;0;ON;<narrow> 300D;;;;Y;HALFWIDTH CLOSING CORNER BRACKET;;;; FF64;HALFWIDTH IDEOGRAPHIC COMMA;Po;0;ON;<narrow> 3001;;;;N;;;;; FF65;HALFWIDTH KATAKANA MIDDLE DOT;Pc;0;ON;<narrow> 30FB;;;;N;;;;; FF66;HALFWIDTH KATAKANA LETTER WO;Lo;0;L;<narrow> 30F2;;;;N;;;;; |