diff options
-rw-r--r-- | ChangeLog | 243 | ||||
-rw-r--r-- | NEWS | 22 | ||||
-rw-r--r-- | configure.in | 111 | ||||
-rw-r--r-- | fribidi.c | 199 | ||||
-rw-r--r-- | fribidi_create_mirroring.c | 71 | ||||
-rw-r--r-- | fribidi_env.c | 294 | ||||
-rw-r--r-- | fribidi_env.h | 272 | ||||
-rw-r--r-- | fribidi_main.c | 24 | ||||
-rw-r--r-- | fribidi_tab_char_type_2.i | 286 | ||||
-rw-r--r-- | fribidi_tab_char_type_9.i | 1859 | ||||
-rw-r--r-- | fribidi_tab_mirroring.i | 11 | ||||
-rw-r--r-- | fribidi_unicode.h | 28 | ||||
-rw-r--r-- | fribidi_wcwidth.c | 101 | ||||
-rw-r--r-- | packtab.c | 40 |
14 files changed, 2188 insertions, 1373 deletions
@@ -1,3 +1,95 @@ +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. + +2002-03-25 Behdad Esfahbod <behdad@bamdad.org> + * fribidi.c: Fixed a bug introduced in adding L3 rule. + +2002-03-15 Behdad Esfahbod <behdad@bamdad.org> + * 0.10.2 released. + * configure.in: Changed version to 0.10.2. + +2002-03-15 Behdad Esfahbod <behdad@bamdad.org> + * packtab.c: Updated the output generating routine, to generate much + fewer symbols, to reduce the relocation time (suggested by Owen + Taylor). + +2002-03-15 Behdad Esfahbod <behdad@bamdad.org> + * fribidi.c, fribidi.h: Applied the patch from + Dominique Unruh <dominique@unruh.de> to reorder the NSM character + to follow their base character (rule L3), fribidi_reorder_nsm_status(), + fribidi_set_reorder_nsm() added. + * fribidi_main.c: Option --reordernsm added, also --test sets + --reordernsm. + * TODO: Done task for rule L3 removed. + * AUTHORS: Dominique Unruh <dominique@unruh.de> added. + * tests/test_UTF-8_nsmreorder.input, + tests/test_UTF-8_nsmreorder.reference: Added. + * NEWS: Updated, will be used to reflect each release News. + +2002-03-12 Behdad Esfahbod <behdad@bamdad.org> + * fribidi.spec.in: Small cleanup. + +2002-03-08 Behdad Esfahbod <behdad@bamdad.org> + * Makefile.am: Small cleanup. + * bootstrap: automake options removed, added in Makefile.am. + +2002-01-25 Behdad Esfahbod <behdad@bamdad.org> + * Makefile.am: Added fribidi.spec to distribution, to be able to make + RPMs from released distribution with 'rpm -tb'. + * fribidi.c: Added 'do { ... } while (0)' stuff around #defined codes. + +2002-01-23 Behdad Esfahbod <behdad@bamdad.org> + * fribidi_create_char_types.c, fribidi_create_mirroring.c: Changed + to use sprintf() instead of snprintf(). + +2002-01-04 Roozbeh Pournader <roozbeh@sharif.edu> + * FriBidi 0.10.1 released. + * configure.in: Changed the version to 0.10.1. + +2002-01-18 Behdad Esfahbod <behdad@bamdad.org> + * configure.in, fribidi.spec.in: Clean up, different version components + defined, rpm names changed from fribidi to fribidi{majorversion}. + +2002-01-14 Behdad Esfahbod <behdad@bamdad.org> + * fribidi.c: Rewrote run_length_encode_types() main loop. + +2002-01-12 Behdad Esfahbod <behdad@bamdad.org> + * fribidi.spec.in: Define RPM serial version as interface version. + * TODO: New tasks added. + +2002-01-11 Behdad Esfahbod <behdad@bamdad.org> + * packtab.c: Fixed the bug Owen Taylor <otaylor@redhat.com>, defines + internal arrays as "static const" in output. + * fribidi_create_char_types.c, fribidi_create_mirroring.c: Fixed to + add "#ifndef ... #define ..." stuff around output. + +2002-01-10 Behdad Esfahbod <behdad@bamdad.org> + * configure.in: Changed the version to 0.10.1pre. + * TODO: Done tasks removed. + * *.h: "extern C" stuff added. + * fribidi-config.in: Include path changed from @includedir@/fribidi + to @includedir@. + * fribidi.c: Set FRIBIDI_CHUNK_SIZE according to MEM_OPTIMIZED flag + to 16 or 128. + * fribidi.c, fribidi_unicode.h, conformance/test: Do not set + MAX_LEVEL to 15 if flag DEBUG defined, renamed to + UNI_MAX_BIDI_LEVEL and moved to fribidi_unicode.h, should not check + fribidi with debug-enabled reference code anymore. Updated + conformance/test to reflect this change. + * README: Sample input and output removed, refered to tests directory + * fribidi_config.h.in: Added, configure creates fribidi_config.h from + this. + * fribidi.spec.in: Added, configure creates fribidi.spec from this. + It can be used to create RPM packages. + +2002-01-04 Roozbeh Pournader <roozbeh@sharif.edu> + * FriBidi 0.10.0 released. + * configure.in: Changed the version to 0.10.0. + 2002-01-02 Behdad Esfahbod <behdad@bamdad.org> * bootstrap: automake option -a added * fribidi_types.h: FriBidiStrIndex type changed from uint16 to int. @@ -16,8 +108,13 @@ * AUTHORS: Abel Cheung <maddog@linux.org.hk> added, has implemented pkgconfig support. * fribidi_char_sets.h, fribidi_char_sets.c: Check for macro - FRIBIDI_0_9_INTERFACE to define fribidi_*_to_unicode functions with - 0.9.x interface. + FRIBIDI_INTERFACE_1 to define fribidi_*_to_unicode functions with + interface version 1. + * Makefile.am: A small dependency problem fixed. + * unidata/README: Added, Unicode disclaimer. + * Makefile.am: unidata/README, unidata/UnicodeData.txt, + BidiMirroring.txt: Added to distribution files. + * Removed wget mechanism for autogetting the Unicode data files. 2001-12-31 Behdad Esfahbod <behdad@bamdad.org> * configure.in: Check for sed added. @@ -102,7 +199,7 @@ replaced with char, gint replaced by int, ... 2001-12-11 Roozbeh Pournader <roozbeh@sharif.edu> - * FriBidi 0.9.1 released. + * FriBidi 0.9.1 released. * configure.in: changed the version to 0.9.1. 2001-12-10 Roozbeh Pournader <roozbeh@sharif.edu> @@ -146,15 +243,12 @@ 2001-04-12 Behdad Esfahbod <behdad@bamdad.org> * configure.in, Makefile.am: Changed to use getopt.* if no glibc. - * getopt.c, getopt.h, getopt1.c: Added to be used if no glibc. 2001-04-11 Behdad Esfahbod <behdad@bamdad.org> * acinclude.m4: Added macro definitions of libtool. - * configure.in, Makefile.am: Changed to use fribidi_mini_glib whenever glib library not found. - * TODO: Removed done tasks. 2001-04-11 Behdad Esfahbod <behdad@bamdad.org> @@ -163,7 +257,6 @@ 2001-04-10 Behdad Esfahbod <behdad@bamdad.org> * *.c/*.h: Changed all "guchar"s to "gchar" and neede casts done. - * Makefile.am: Added MAINTAINERCLEANFILES to remove files "configure", "config.h.in", "Makefile.in", "aclocal.m4" by maintainer-clean target. @@ -174,42 +267,32 @@ 2001-04-03 Behdad Esfahbod <behdad@sharif.edu> * fribidi_mini_glib.h, fribidi_mini_glib.c: Added functions for working with MemChunks, some more definitions of glib added. - * fribidi.c: No more dependency on FRIBIDI_USE_MINI_GLIB flag. 2001-04-01 Behdad Esfahbod <behdad@bamdad.org> * Makefile.noglib: fribidi_types.c added to sources. - * fribidi.c: Fixed a bug in free_rl_list() when USE_SIMPLE_MALLOC was set, that caused core dumps. - * fribidi_main.c: Option --nomirror added. - * fribidi_mini_glib.h: Fixed a bug that caused core dumps, the bug was in macro definition #define g_new(T, n) malloc(n * sizeof(T)), that caused g_new(X, n + 1) allocate (n + (1 * sizeof(X))) instead of ((n + 1) * sizeof(X))!, that should be #define g_new(T, n) malloc((n) * sizeof(T)). - * fribidi_mini_glib.h: Does not set USE_SIMPLE_ALLOC anymore. - * fribidi.c: Use g_malloc when FRIBIDI_USE_MINI_GLIB is set, but still use the free_type_link_list, for efficiency. 2001-03-31 Behdad Esfahbod <behdad@bamdad.org> - * fribidi_benchmark.c: #included <stdarg.h>, to compile under cygwin. - + * fribidi_benchmark.c: #included <stdarg.h>, to compile under cygwin. * fribidi.c, fribidi.h: Changed fribidi_log2vis_get_embedding_levels() to return TRUE if successful and FALSE otherwise. - * fribidi.c: Function bidi_string_strlen() removed, because we have not assumed that a fribidi string is ended with char 0. Fixed all the bugs that roozbeh found and some more. Some more debug information added. All internal functions defined as static. - * fribidi_main.c: Set to do not allocate visual array, if --novisual options set. - * .indent.par: Added, it helps program "indent" to change the appearance of sources to GNU style, each typedef should be added to this file too. @@ -217,33 +300,25 @@ 2001-03-31 Roozbeh Pournader <roozbeh@sharif.edu> * fribidi.c, fribidi_benchmark.c, fribidi_char_set_cap_rtl.c: removed some unused variables. - * fribidi_char_sets*.c, fribidi_main.c: #included <string.h>. - * fribidi.c, fribidi_char_sets_cap_rtl.c: added some comment lines to places that bugs probably exist. find with searching for "--RP". - * COPYING.LIB: renamed to COPYING (based on a recent suggestion on GNU web site). - * bootstrap: removed lines that suppressed warnings about missing COPYING. 2001-03-30 Roozbeh Pournader <roozbeh@sharif.edu> * Makefile.noglib: replaced by a new version from Dan Kenigsberg <danken@cs.technion.ac.il>. - * AUTHORS: added Dan Kenigsberg. - * '*.c', '*.h': changed all "//" comments to "/* */" pairs. 2001-03-30 Behdad Esfahbod <behdad@bamdad.org> * fribidi.c, fribidi.h: Changed fribidi_log2vis() to return TRUE if successful and FALSE otherwise. - * fribidi_main.c, fribidi_benchmark.c: Changed to use getopt library, to handle command line parameters better. - * fribidi_main.c: Changed to if COLUMNS enviroment variable is defined, use its value for text width. @@ -253,9 +328,7 @@ tests/test-hebrew, tests/test-hebrew.reference: Fixed a bug in --clean that didn't remove RLM and LRM, and updated tests to reflect this change. - * fribidi_main.c: Options --wltr and --wrtl added. - * TODO: A recently done task removed. 2001-03-29 Roozbeh Pournader <roozbeh@sharif.edu> @@ -264,13 +337,9 @@ 2001-03-28 Roozbeh Pournader <roozbeh@sharif.edu> * bootstrap: swapped 'aclocal' and 'autoheader'. do not warn for missing COPYING. - * COPYING: removed. - * COPYING.LIB: added. - * README, *.h, *.c, unidata/CreateGetType.pl: changes to reflect LGPL. - * Makefile.am: added 'bootstrap' to distribution. 2001-03-28 Behdad Esfahbod <behdad@bamdad.org> @@ -278,23 +347,18 @@ "unidata/BidiMirroring.txt" and "unidata/PropList.txt" if not available, and call "unidata/CreateGetType.pl" if needed to update "fribidi_tables.i". - * fribidi_types.h, fribidi_types.c, fribidi_get_type.c, unidata/CreateGetType.pl: Define symbol MEM_OPTIMIZED added to make Dov happy :-), if MEM_OPTIMIZED defined, fribidi_tables.i entries will be guint8 instead of gint to free 27KB extra memory that was used to make fribidi use bitmasks, the overhead will be three array lookups instead of two, in fribidi_get_type(). - * fribidi_main.c: Options --verbose and --basedir added. Options --test and --caprtl updated. - * conformance/test_gen.c: File name changed to conformance/test_gen_explicit.c - * run.tests: Make to work with "make test" and "make check" when making from other directories. - * fribidi.c: Rule L1 ("Reset the embedding levels") moved from fribidi_log2vis() to fribidi_analyse_string(), to affect fribidi_log2vis_get_embedding_levels() too. New functions @@ -302,15 +366,12 @@ turn on or off mirroring (Rule L3). Changed to warn about too long strings only if at least one of position_L_to_V_list or position_V_to_L_list is asked. - * fribidi.h: Updated to reflect new functions in fribidi.c, #include "config.h" removed, and added to each .c file that use it, because config.h should not be included by other apps/libs. - * fribidi.c, fribidi_main.c, fribidi_benchmark.c: #included "config.h", Now, --version options shows the options that library is compiled with (DEBUG, MEM_OPTIMIZED, USE_SIMPLE_MALLOC, FRIBIDI_USE_MINI_GLIB). - * fribidi_types.h, fribidi.c, fribidi.h, fribidi_utils.c: TypeDefined FriBidiStrIndex as guint16 and used for the type of position_L_to_V_list and postition_V_to_L_list arrays. @@ -318,7 +379,6 @@ 2001-03-27 Roozbeh Pournader <roozbeh@sharif.edu> * fribidi.h: Removed definition of PACKAGE and VERSION. #included "config.h" - * Makefile.am: Make "make dist" work. 2001-03-27 Behdad Esfahbod <behdad@bamdad.org> @@ -326,16 +386,12 @@ changes removed, "Resolving weak types" rewritten, no known conformance bugs. Defined macros for external use, changed their name to have a prefix of FRIBIDI_. - * fribidi.c, fribidi.h: Function fribidi_remove_explicits() added to remove the explicit marks from a fribidi string. - * fribidi.c: Fixed a bug that caused position_l_to_v and position_v_to_l not to calculated correctly. - * fribidi.h: Defined symbols PACKAGE and VERSION manually, autoconf should set them, but I don't know how to. - * fribidi_char_sets.c, fribidi_char_sets.h, fribidi_char_sets_*: Each charset moved to a pair of .c/.h file. CapRTL defined as a character set for testing with the reference implementation, with @@ -344,7 +400,6 @@ that contains all character types in ascii characters. Some functions defined to make charset conversion easy. An interface designed for adding new charsets. - * fribidi_main.c: API revised, many new options added, Default charset changed to UTF-8 Option --caprtl simulates the old style (same as --charset CapRTL) @@ -355,131 +410,95 @@ Options --version, --showinput, --ltov, --vtol, --levels, --changes, --novisual, --charsetdesc added. Now use the charset conventions, lots of code removed. - * test_fribidi.c: Got removed! `fribidi --test' should be used instead. - * fribidi_benchmark: Explicit support added, now benchmarks with two strings, one without explicit marks and one with them. - * run.tests, tests/test-CapRTL, tests/test-CapRTL.reference, tests/test-explicit, tests/test-explicit.reference, tests/test-hebrew, tests/test-hebrew.reference: New test datas added, for better testing of weak types and explicit support. Test outputs updated for the new CapRTL character set. Test output for test-hebrew added. - * Makefile.in, Makefile.am: Updated to use fribidi instead of test_fribidi for test targets. New files added. - * TODO: Some done tasks removed, some new tasks added! 2001-03-09 Dov Grobgeld <dov@orbotech.orbotech.co.il> - * fribidi_mini_glib.c, fribidi_mini_glib.h: Applied patch received from Dan Kenigsberg <danken@cs.technion.ac.il> that allows compiling fribidi without glib if the flag FRIBIDI_USE_MINI_GLIB is turned on. This option is currently turned on when compiling through Makefile.noglib . - * TODO: Added the task of making autoconf automatically turn on FRIBIDI_USE_MINI_GLIB if glib isn't found. 2001-03-07 Behdad Esfahbod <behdad@bamdad.org> - * fribidi.c: Removed dead codes, many parts rewritten more efficient, including Resolving Neutrals, Resolving Implicit Levels and .... - * fribidi_types.h: Almost redefined, to use bitfields for char types, and many macros defined for efficient querying about char types. Some unused char types removed, also char types L, R, N converted to LTR, RTL and ON everywhere. - * CreateGetType.pl: Changed to define tables as arrays of FriBidiCharType instead of guchar. - * conformance/: Updated some scripts for automatic testing with reference implementation. 2001-02-19 Behdad Esfahbod <behdad@bamdad.org> - * fribidi.c: Added support for all explicit marks (embeddings and overrides), it means rules X1 .. X10 of specification. - * fribidi.c: Added support for L1 rule of specification, it's resetting the char type of some characters, just before reordering. - * fribidi.c: Added 'AL' to types that change the paragraph embedding level, it previously only checked for 'R'. - * fribidi.c: Define symbol NO_STDIO changed to DEBUG, to turn on or off all debug codes compile time, also a function fribidi_set_debug, turns on and off the debug output generations in run time. - * fribidi.c: Added some more debug information, all debug informations revised and go to stderr now. - * fribidi.c: Fixed a bug in rule W5, that is when some european terminators are between some arabic letters and some european numbers. - * fribidi_main.c: Added support for inputting explicit marks, in CapRTL charset mode. - * fribidi_main.c: Added command line option for debug mode. - * fribidi_main.c: Fixed a small bug that would annoy when the size of original string may be different to the derived one. - * fribidi_main.c: Fixed a small bug in padding when the size of the out string was more than the page width. - * fribidi_types.h: Added some types needed for debug info. 2001-02-19 Roozbeh Pournader <roozbeh@sharif.edu> - * CreateGetType.pl: changed to use BidiMirroring.txt instead of UnicodeData.txt. 2000-11-12 Dov Grobgeld <dov@imagic.weizmann.ac.il> - * Released fribidi-0.1.15. - * fribidi.c: [OZ] Applied Owen Taylor's patch from 2000-07-19 to fribidi.c. The patch affects pp->prev rules for the last element in cases W3 and W7. - * fribidi.c: [OZ] fribidi_log2vis() and fribidi_log2vis_get_embedding_levels() now check for len==0 and if so, they return immediately (instead of getting stuck). - * fribidi.c: [OZ] new_type_link() is now declared as new_type_link(void) to prevent a compiler error message. - * fribidi.c: [OZ] The positions of the is_v2l_map and len arguments in fribidi_map_range() prototype were switched around, to conform to actual use in the source code file. - * fribidi.c: [OZ] The first argument to fribidi_is_char_rtl() was changed from gint8 to guint8, to conform to data type returned by fribidi_log2vis(). - * fribidi.c: [OZ] bidi_string_strlen() now uses gint rather than int. - * fribidi.c: [OZ] bidi_string_reverse() now uses gint rather than int. - * fribidi.c: [OZ] int16_array_reverse() is now guint16_array_reverse(). - * fribidi.c: Added define symbols NO_STDIO, FRIBIDI_MAX_STRING_LENGTH, USE_SIMPLE_MALLOC that may be used to effect what code is being generated. - * fribidi_char_sets.h, fribidi_char_sets.c: Added Omer Zaks more general ut8 to unicode and unicode to ut8 functions. - * fribidi.c: [OZ] Replaced int to gint to better support embedded libraries. - * Applied lots of code contributed by Omer Zak <omerz@actcom.co.il> detailed above. @@ -496,33 +515,25 @@ * fribidi_char_sets.c: Cleaned up the mess and made it compile! 2000-10-09 Dov Grobgeld <dov@imagic.weizmann.ac.il> - * Released fribidi-0.1.13 . - * acinclude.m4: Added file including a m4 macro for glib-2.0 as suggested by Owen Taylor. - * Makefile.am: Added acinclude.m4 to extra sources. - * configure.in: Changed it to use new macro. 2000-05-19 Dov Grobgeld <dov@imagic.weizmann.ac.il> - * fribidi_char_sets.c: Added support for the LRM and RLM characters for the iso-8859-8 converts at unused positions 0xFE and 0xFF . - * CreateGetType.pl, fribidi.c, fribidi_tables.i, fribidi_types.h: Updated the algorithms to be consistance with the latest Unicode Technical Report #9 release. Still no explicit overrides, but hopefully the implicit algorithm now works according to the specification. - * CreateGetType.pl, fribidi_tables.i: Overwrote the character bidi-assignment of all non-assigned characters within blocks with the property of the previous character in order to create a few more reused secondary lookup character tables. - * CreateGetType.pl, fribidi.c, fribidi_tables.i: Added Owen Taylor's speed patch that speeds up fribidi by a factor of 4! Owen's patch consists of two parts. The first part is a double @@ -532,158 +543,112 @@ mallocs. 2000-05-02 Dov Grobgeld <dov@imagic.weizmann.ac.il> - * Released fribidi-0.1.11 . - * Fixed one remaining bug in Makefile.am. 2000-04-27 Dov Grobgeld <dov@imagic.weizmann.ac.il> - * Released fribidi-0.1.10 . - * Added libtool configuration added by Manish Singh. - * Added sevaral arabic charset converts contributed by Pablo Saratxaga. 2000-03-20 Dov Grobgeld <dov@imagic.weizmann.ac.il> - * Released fribidi-0.1.9 . 2000-02-22 Dov Grobgeld <dov@imagic.weizmann.ac.il> - * fribidi_types.h: Changed basic type FriBidiChar to guint32 which corresponds to UCS4, which is more reasonable to use. 2000-02-21 Dov Grobgeld <dov@imagic.weizmann.ac.il> - * tests/test-capital-rtl: Added new tests to check percentage signs and updated tests.reference to reflect this. - * fribidi.c(fribidi_analyse_string): Added the rule EN,ET=>EN,EN which takes care of the problem of percentage signs were put in the wrong place. 2000-02-20 Dov Grobgeld <dov@imagic.weizmann.ac.il> - * fribidi.c: Fixed several memory leaks found by Owen Taylor. 2000-01-01 Dov Grobgeld <dov@imagic.weizmann.ac.il> - * Added documentation of the utility functions to fribidi.h . 1999-12-24 Dov Grobgeld <dov@imagic.weizmann.ac.il> - * Added new function fribidi_is_char_rtl() that uses the embedding levels or the base dir to determine the resolved direction of a character. - * Added new function fribidi_xpos_resolve() to fribidi_utils that is needed in an gui interaction to resolve a mouse event to the proper logical and visual positions. 1999-12-21 Dov Grobgeld <dov@imagic.weizmann.ac.il> - * Added patches for UTF8 support contributed by raphael@cs.uky.edu. 1999-12-05 Dov Grobgeld <dov@imagic.weizmann.ac.il> - * Added two new types FRIBIDI_TYPE_WL and FRIBIDI_TYPE_WR that indicate weak directions. These directions are used if no strong direction is found in the string. - * Changed analyse_string() to return base_type FRIBIDI_TYPE_N if the base direction cannot be determined. It is then up to a higher level protocol to determine the base direction. 1999-11-22 Dov Grobgeld <dov@imagic.weizmann.ac.il> - * Released version 0.1.7. - * Added arabic support contributed by Pablo Saratxaga. 1999-06-20 Dov Grobgeld <dov@imagic.weizmann.ac.il> - * Created file fribidi_utils.c which will be used for common patterns that are common in Bidi supported programs. 1999-04-28 Dov Grobgeld <dov@imagic.weizmann.ac.il> - * Fixed bug in fribidi_log2vis which occured if only the v2l array was requested and not the l2v array. - * Fixed bug in test_fribidi when using option test_vtol . - * Changed types in call to fribidi_log2vis to be more memory conservative. - * Added single character translation functions to fribidi_char_sets. 1999-04-10 Dov Grobgeld <dov@imagic.weizmann.ac.il> - * Changed building to use glib-config as glib-1.2 is now released. - * Added some short cut optimizations. - * Cleaned up the TYPE_RULE_C macro and used in in lots of places. 1999-02-09 Dov Grobgeld <dov@imagic.weizmann.ac.il> - * Added ./ to the execution of test_fribidi in run.tests. 1999-02-08 Dov Grobgeld <dov@imagic.weizmann.ac.il> - * Released 0.1.3 to match the perl module FriBidi. - * Added length paramater to fribidi_unicode_to_iso8859_8(). - * Fixed bug in fribidi.c related to zero length strings. - * Released 0.1.2. - * Added options -ltr and -rtl to fribidi to force LTR and RTL directions. - * Added function fribidi_log2vis_get_embedding_levels() which just returns an array of embedding levels. - * Added benchmark program. - * Added new check in test_fribidi that checks the changes calculation. - * Changed interface to fribidi_log2vis() to include length of string on input and the embedding level of output. - * Added function fribidi_find_string_changes() which finds the bounding box of the changes between two FriBidiStrings. 1999-01-19 Dov Grobgeld <dov@imagic.weizmann.ac.il> - * Added the option -bol to fribidi_main.c to print out stuff in the beginning of a line. 1999-01-14 Dov Grobgeld <dov@imagic.weizmann.ac.il> - * Released version 0.1.1 * Added program fribidi as a command line interface to the library. 1999-01-13 Dov Grobgeld <dov@imagic.weizmann.ac.il> - * Added flag -nopad to test_fribidi to make it not insert spaces. - * Make P1 rules (ES and CS) work only if the span of the ES or the CS is 1. This is the same as in Hebrew Windoze. - * Replaced all the ET rules with the simpler ET,EN=>EN,EN - - * Added `gtk-config --cflags` and `gtk-config -ldflags` to Makefile.am. - - * Made test_fribidi read from stdin if no file given. - - * Added options -outputonly to test_fribidi. + * Added `gtk-config --cflags` and `gtk-config -ldflags` to Makefile.am. + * Made test_fribidi read from stdin if no file given. + * Added options -outputonly to test_fribidi. 1999-01-11 Dov Grobgeld <dov@imagic.weizmann.ac.il> - * First Release! @@ -1,8 +1,22 @@ -See ChangeLog. +New in 0.10.3: -Fribidi tested on sourceforge.net's compile farm`. +* Unicode 3.2 data files used. -Currently tested and has no problem with: +New in 0.10.2: + +* Rule L3 of UAX#9 implemented. Now fribidi implements the whole Unicode + BiDi Algorithm. + +* The autogenerated table files now contain much fewer symbols, which reduces + the relocation time of the library. + +New in 0.10.1: + +* fribidi.spec has been added to distribution, please use this file if you + are going to create an RPM package from fribidi. + +* Fribidi tested on sourceforge.net's compile farm. + Currently tested and has no problem with: [x86] Linux 2.4 (RedHat 7.1) [x86] Linux 2.2 (Debian 2.2) @@ -12,3 +26,5 @@ Currently tested and has no problem with: [Sparc - Ultra60] Linux 2.2 (Debian 2.2) [Sparc - R220] Sun Solaris (8) [x86] Windows 2000 (Cygwin) + +See ChangeLog for more descriptive list of changes. diff --git a/configure.in b/configure.in index 1e64ba1..a945a76 100644 --- a/configure.in +++ b/configure.in @@ -1,8 +1,45 @@ +# Init autoconf (and check for presence of fribidi.c) AC_INIT(fribidi.c) -PACKAGE=FriBidi -VERSION=0.10.0pre -INTERFACE_VERSION=2 +# Define different version variables. +# +# Making releases: +# FRIBIDI_MICRO_VERSION++; +# FRIBIDI_INTERFACE_AGE++; +# FRIBIDI_BINARY_AGE++; +# FRIBIDI_RPM_RELEASE = 0; +# +# If any major functions have been added: +# FRIBIDI_INTERFACE_AGE = 0; +# FRIBIDI_INTERFACE_VERSION++; +# +# If backwards compatibility has been broken: +# FRIBIDI_BINARY_AGE = FRIBIDI_INTERFACE_AGE = 0; +# +# Building RPMs: +# FRIBIDI_RPM_RELEASE++; +# +FRIBIDI_MAJOR_VERSION=0 +FRIBIDI_MINOR_VERSION=10 +FRIBIDI_MICRO_VERSION=3 +FRIBIDI_INTERFACE_VERSION=2 +FRIBIDI_INTERFACE_AGE=3 +FRIBIDI_BINARY_AGE=3 +FRIBIDI_RPM_RELEASE=0 +FRIBIDI_VERSION=$FRIBIDI_MAJOR_VERSION.$FRIBIDI_MINOR_VERSION.$FRIBIDI_MICRO_VERSION + +AC_SUBST(FRIBIDI_MAJOR_VERSION) +AC_SUBST(FRIBIDI_MINOR_VERSION) +AC_SUBST(FRIBIDI_MICRO_VERSION) +AC_SUBST(FRIBIDI_VERSION) +AC_SUBST(FRIBIDI_INTERFACE_VERSION) +AC_SUBST(FRIBIDI_INTERFACE_AGE) +AC_SUBST(FRIBIDI_BINARY_AGE) +AC_SUBST(FRIBIDI_RPM_RELEASE) + +PACKAGE=fribidi +VERSION=$FRIBIDI_VERSION + AM_CONFIG_HEADER(config.h) AM_INIT_AUTOMAKE($PACKAGE, $VERSION) @@ -15,7 +52,6 @@ AC_PROG_LN_S AC_PROG_MAKE_SET AC_PROG_RANLIB AC_PATH_PROG(SED, sed, $PATH) -AC_PATH_PROG(DOWNLOAD, wget, $PATH) dnl Checks for libraries @@ -54,64 +90,16 @@ fi dnl check for fribidi_tab_char_type_*.i files -if test -f "${srcdir}/fribidi_tab_char_type_2.i" || - test -f "./fribidi_tab_char_type_2.i"; then - AC_DEFINE(HAS_FRIBIDI_TAB_CHAR_TYPE_2_I) -fi - -if test -f "${srcdir}/fribidi_tab_char_type_3.i" || - test -f "./fribidi_tab_char_type_3.i"; then - AC_DEFINE(HAS_FRIBIDI_TAB_CHAR_TYPE_3_I) -fi - -if test -f "${srcdir}/fribidi_tab_char_type_4.i" || - test -f "./fribidi_tab_char_type_4.i"; then - AC_DEFINE(HAS_FRIBIDI_TAB_CHAR_TYPE_4_I) -fi - -if test -f "${srcdir}/fribidi_tab_char_type_5.i" || - test -f "./fribidi_tab_char_type_5.i"; then - AC_DEFINE(HAS_FRIBIDI_TAB_CHAR_TYPE_5_I) -fi - -if test -f "${srcdir}/fribidi_tab_char_type_6.i" || - test -f "./fribidi_tab_char_type_6.i"; then - AC_DEFINE(HAS_FRIBIDI_TAB_CHAR_TYPE_6_I) -fi - -if test -f "${srcdir}/fribidi_tab_char_type_7.i" || - test -f "./fribidi_tab_char_type_7.i"; then - AC_DEFINE(HAS_FRIBIDI_TAB_CHAR_TYPE_7_I) -fi - -if test -f "${srcdir}/fribidi_tab_char_type_8.i" || - test -f "./fribidi_tab_char_type_8.i"; then - AC_DEFINE(HAS_FRIBIDI_TAB_CHAR_TYPE_8_I) -fi - -if test -f "${srcdir}/fribidi_tab_char_type_9.i" || - test -f "./fribidi_tab_char_type_9.i"; then - AC_DEFINE(HAS_FRIBIDI_TAB_CHAR_TYPE_9_I) -fi +for n in 2 3 4 5 6 7 8 9; do + if test -f "${srcdir}/fribidi_tab_char_type_$n.i" || + test -f "./fribidi_tab_char_type_$n.i"; then + AC_DEFINE_UNQUOTED(HAS_FRIBIDI_TAB_CHAR_TYPE_${n}_I) + fi +done echo "creating fribidi_tab_char_type_stamp" echo "time-stamp" > fribidi_tab_char_type_stamp -echo "creating fribidi_config.h" -PACKAGE=$PACKAGE -VERSION=$VERSION -cat > fribidi_config.h <<EOF -/* fribidi_config.h. Generated automatically by configure. */ - -#define FRIBIDI_PACKAGE "$PACKAGE" - -#define FRIBIDI_VERSION "$VERSION" - -#define FRIBIDI_INTERFACE_VERSION $INTERFACE_VERSION -#define FRIBIDI_INTERFACE_VERSION_STR "$INTERFACE_VERSION" - - -EOF dnl Check for configure options @@ -162,13 +150,18 @@ AC_ARG_WITH(charsets, dnl esac],[charsets=true]) if test x"$charsets" = xfalse; then AC_DEFINE(FRIBIDI_NO_CHARSETS) - echo "#define FRIBIDI_NO_CHARSETS 1" >> fribidi_config.h + FRIBIDI_NO_CHARSETS=1 +else + FRIBIDI_NO_CHARSETS=0 fi +AC_SUBST(FRIBIDI_NO_CHARSETS) AC_OUTPUT([ Makefile +fribidi_config.h fribidi-config fribidi.pc +fribidi.spec ],[case "$CONFIG_FILES" in *fribidi-config*)chmod +x fribidi-config;; esac]) @@ -1,6 +1,6 @@ /* FriBidi - Library of BiDi algorithm * Copyright (C) 1999,2000 Dov Grobgeld, and - * Copyright (C) 2001 Behdad Esfahbod. + * Copyright (C) 2001,2002 Behdad Esfahbod. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -31,27 +31,24 @@ #include <stdio.h> #endif +/* Redefine FRIBIDI_CHUNK_SIZE in config.h to override this. */ #ifndef FRIBIDI_CHUNK_SIZE +#ifdef MEM_OPTIMIZED +#define FRIBIDI_CHUNK_SIZE 16 +#else #define FRIBIDI_CHUNK_SIZE 128 #endif +#endif #ifdef DEBUG -#define DBG(s) if (fribidi_debug) { fprintf(stderr, s); } -#define DBG2(s, t) if (fribidi_debug) { fprintf(stderr, s, t); } +#define DBG(s) do { if (fribidi_debug) { fprintf(stderr, s); } } while (0) +#define DBG2(s, t) do { if (fribidi_debug) { fprintf(stderr, s, t); } } while (0) #else #define DBG(s) #define DBG2(s, t) #endif #ifdef DEBUG -/* for easier test with the reference code only */ -#define MAX_LEVEL 15 -#else -/* default value */ -#define MAX_LEVEL 61 -#endif - -#ifdef DEBUG char fribidi_char_from_type (FriBidiCharType c); #endif @@ -170,11 +167,18 @@ free_type_link (TypeLink *link) #endif } +#define FRIBIDI_ADD_TYPE_LINK(p,q) \ + do { \ + (p)->len = (q)->pos - (p)->pos; \ + (p)->next = (q); \ + (q)->prev = (p); \ + (p) = (q); \ + } while (0) + static TypeLink * run_length_encode_types (FriBidiCharType *char_type, FriBidiStrIndex type_len) { TypeLink *list, *last, *link; - TypeLink current; FriBidiStrIndex i; @@ -182,45 +186,24 @@ run_length_encode_types (FriBidiCharType *char_type, FriBidiStrIndex type_len) list = new_type_link (); list->type = FRIBIDI_TYPE_SOT; list->level = FRIBIDI_LEVEL_START; - list->len = 0; - list->pos = 0; last = list; /* Sweep over the string_type s */ - current.type = FRIBIDI_LEVEL_START; - current.len = 0; - current.pos = -1; - for (i = 0; i <= type_len; i++) - { - if (i == type_len || char_type[i] != current.type) - { - if (current.pos >= 0) - { - link = new_type_link (); - link->type = current.type; - link->pos = current.pos; - link->len = current.len; - last->next = link; - link->prev = last; - last = last->next; - } - if (i == type_len) - break; - current.len = 0; - current.pos = i; - } - current.type = char_type[i]; - current.len++; - } + for (i = 0; i < type_len; i++) + if (char_type[i] != last->type) + { + link = new_type_link (); + link->type = char_type[i]; + link->pos = i; + FRIBIDI_ADD_TYPE_LINK (last, link); + } /* Add the ending link */ link = new_type_link (); link->type = FRIBIDI_TYPE_EOT; link->level = FRIBIDI_LEVEL_END; - link->len = 0; link->pos = type_len; - last->next = link; - link->prev = last; + FRIBIDI_ADD_TYPE_LINK (last, link); return list; } @@ -382,10 +365,10 @@ override_list (TypeLink *base, TypeLink *over) } /* Some convenience macros */ -#define RL_TYPE(list) (list)->type -#define RL_LEN(list) (list)->len -#define RL_POS(list) (list)->pos -#define RL_LEVEL(list) (list)->level +#define RL_TYPE(list) ((list)->type) +#define RL_LEN(list) ((list)->len) +#define RL_POS(list) ((list)->pos) +#define RL_LEVEL(list) ((list)->level) static TypeLink * merge_with_prev (TypeLink *second) @@ -431,20 +414,20 @@ compact_neutrals (TypeLink *list) *-------------------------------------------------------------------------*/ /* There's some little points in pushing and poping into the status stack: - 1. when the embedding level is not valid (more than MAX_LEVEL=61), + 1. when the embedding level is not valid (more than UNI_MAX_BIDI_LEVEL=61), you must reject it, and not to push into the stack, but when you see a PDF, you must find the matching code, and if it was pushed in the stack, pop it, it means you must pop if and only if you have pushed the matching code, the over_pushed var counts the number of rejected codes yet. 2. there's a more confusing point too, when the embedding level is exactly - MAX_LEVEL-1=60, an LRO or LRE must be rejected because the new level would - be MAX_LEVEL+1=62, that is invalid, but an RLO or RLE must be accepted - because the new level is MAX_LEVEL=61, that is valid, so the rejected - codes may be not continuous in the logical order, in fact there is at - most two continuous intervals of codes, with a RLO or RLE between them. - to support the case, the first_interval var counts the number of rejected - codes in the first interval, when it is 0, means that there is only one - interval yet. + UNI_MAX_BIDI_LEVEL-1=60, an LRO or LRE must be rejected because the new + level would be UNI_MAX_BIDI_LEVEL+1=62, that is invalid, but an RLO or RLE + must be accepted because the new level is UNI_MAX_BIDI_LEVEL=61, that is + valid, so the rejected codes may be not continuous in the logical order, + in fact there is at most two continuous intervals of codes, with a RLO or + RLE between them. To support this case, the first_interval var counts the + number of rejected codes in the first interval, when it is 0, means that + there is only one interval yet. */ /* a. If this new level would be valid, then this embedding code is valid. @@ -455,10 +438,10 @@ compact_neutrals (TypeLink *list) change the current level or override status. */ #define PUSH_STATUS \ - { \ - if (new_level <= MAX_LEVEL) \ + do { \ + if (new_level <= UNI_MAX_BIDI_LEVEL) \ { \ - if (level == MAX_LEVEL - 1) \ + if (level == UNI_MAX_BIDI_LEVEL - 1) \ first_interval = over_pushed; \ status_stack[stack_size].level = level; \ status_stack[stack_size].override = override; \ @@ -467,13 +450,13 @@ compact_neutrals (TypeLink *list) override = new_override; \ } else \ over_pushed++; \ - } + } while (0) /* If there was a valid matching code, restore (pop) the last remembered (pushed) embedding level and directional override. */ #define POP_STATUS \ - { \ + do { \ if (over_pushed || stack_size) \ { \ if (over_pushed > first_interval) \ @@ -487,7 +470,7 @@ compact_neutrals (TypeLink *list) override = status_stack[stack_size].override; \ } \ } \ - } + } while (0) /*========================================================================== * There was no support for sor and eor in the absence of Explicit Embedding @@ -497,7 +480,8 @@ compact_neutrals (TypeLink *list) /* Return the type of previous char or the sor, if already at the start of a run level. */ #define PREV_TYPE_OR_SOR(pp) \ - (RL_LEVEL(pp->prev) == RL_LEVEL(pp) ? \ + ( \ + RL_LEVEL(pp->prev) == RL_LEVEL(pp) ? \ RL_TYPE(pp->prev) : \ FRIBIDI_LEVEL_TO_DIR(MAX(RL_LEVEL(pp->prev), RL_LEVEL(pp))) \ ) @@ -505,7 +489,8 @@ compact_neutrals (TypeLink *list) /* Return the type of next char or the eor, if already at the end of a run level. */ #define NEXT_TYPE_OR_EOR(pp) \ - (!pp->next ? \ + ( \ + !pp->next ? \ FRIBIDI_LEVEL_TO_DIR(RL_LEVEL(pp)) : \ (RL_LEVEL(pp->next) == RL_LEVEL(pp) ? \ RL_TYPE(pp->next) : \ @@ -678,7 +663,7 @@ fribidi_analyse_string ( /* input */ over_pushed = 0; first_interval = 0; status_stack = - (LevelInfo *) malloc (sizeof (LevelInfo) * (MAX_LEVEL + 2)); + (LevelInfo *) malloc (sizeof (LevelInfo) * (UNI_MAX_BIDI_LEVEL + 2)); for (pp = type_rl_list->next; pp->next; pp = pp->next) { @@ -1098,6 +1083,20 @@ fribidi_set_mirroring (boolean mirror) mirroring = mirror; } +static boolean reorder_nsm = FALSE; + +boolean +fribidi_reorder_nsm_status (void) +{ + return reorder_nsm; +} + +void +fribidi_set_reorder_nsm (boolean reorder) +{ + reorder_nsm = reorder; +} + /*====================================================================== * Here starts the exposed front end functions. *----------------------------------------------------------------------*/ @@ -1184,7 +1183,7 @@ fribidi_log2vis ( /* input */ return TRUE; } - /* If l2v is to be calculated we must have l2v as well. If it is not + /* If l2v is to be calculated we must have v2l as well. If it is not given by the caller, we have to make a private instance of it. */ if (position_L_to_V_list && !position_V_to_L_list) { @@ -1197,7 +1196,7 @@ fribidi_log2vis ( /* input */ { #ifdef DEBUG fprintf (stderr, "%s: cannot handle strings > %ld characters\n", - FRIBIDI_PACKAGE, FRIBIDI_MAX_STRING_LENGTH); + FRIBIDI_PACKAGE, (long) FRIBIDI_MAX_STRING_LENGTH); #endif return FALSE; } @@ -1211,8 +1210,6 @@ fribidi_log2vis ( /* input */ FriBidiLevel level_idx; FriBidiStrIndex i; - /* TBD: L3 */ - /* Set up the ordering array to sorted order */ if (position_V_to_L_list) { @@ -1273,6 +1270,55 @@ fribidi_log2vis ( /* input */ DBG (" Mirroring, Done\n"); } + if (reorder_nsm) + { + /* L3. Reorder NSMs. */ + DBG (" Reordering NSM sequences\n"); + /* We apply this rule before L2, so go backward in odd levels. */ + for (pp = type_rl_list->next; pp->next; pp = pp->next) + { + if (pp->level & 1) + { + FriBidiStrIndex i; + boolean is_nsm_seq, seq_end; + + is_nsm_seq = 0; + for (i = RL_POS (pp) + RL_LEN (pp) - 1; i >= RL_POS (pp); + i--) + { + FriBidiCharType this_type; + + this_type = fribidi_get_type (str[i]); + if (is_nsm_seq && this_type != FRIBIDI_TYPE_NSM) + { + if (visual_str) + { + bidi_string_reverse (visual_str + i, + seq_end - i + 1); + } + if (position_V_to_L_list) + { + index_array_reverse (position_V_to_L_list + i, + seq_end - i + 1); + } + is_nsm_seq = 0; + } + else if (!is_nsm_seq && this_type == FRIBIDI_TYPE_NSM) + { + seq_end = i; + is_nsm_seq = 1; + } + } + if (is_nsm_seq) + { + DBG + ("Warning: NSMs at the beggining of run level.\n"); + } + } + } + DBG (" Reordering NSM sequences, Done\n"); + } + /* L2. Reorder. */ DBG (" Reordering\n"); for (level_idx = max_level; level_idx > 0; level_idx--) @@ -1364,15 +1410,12 @@ fribidi_log2vis_get_embedding_levels ( /* input */ - - - - - -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" @@ -1381,7 +1424,7 @@ char *fribidi_version_info = #ifdef DEBUG "--enable-debug\n" #endif -#if (defined(MEM_OPTIMIZED)) +#ifdef MEM_OPTIMIZED "--enable-memopt\n" #endif #ifdef USE_SIMPLE_MALLOC diff --git a/fribidi_create_mirroring.c b/fribidi_create_mirroring.c index e1562d5..398802d 100644 --- a/fribidi_create_mirroring.c +++ b/fribidi_create_mirroring.c @@ -1,5 +1,5 @@ /* FriBidi - Library of BiDi algorithm - * Copyright (C) 2001 Behdad Esfahbod. + * Copyright (C) 2001,2002 Behdad Esfahbod. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -12,7 +12,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License - * along with this library, in a file named COPYING.LIB; if not, write to the + * along with this library, in a file named COPYING; if not, write to the * Free Software Foundation, Inc., 59 Temple Place, Suite 330, * Boston, MA 02111-1307, USA * @@ -22,15 +22,12 @@ #include <stdlib.h> #include <stdio.h> #include <string.h> +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif +#include "fribidi_unicode.h" -void -err (char *msg) -{ - fprintf (stderr, "fribidi_create_mirroring: error: %s\n", msg); - exit (1); -} - -void +static void err2 (char *fmt, char *p) { fprintf (stderr, "fribidi_create_mirroring: error: "); @@ -39,17 +36,16 @@ err2 (char *fmt, char *p) exit (1); } -int table[0x110000]; -char *bidi_mirroring_version; -char bidi_mirroring_file[200]; +static int table[0x110000]; +static char *bidi_mirroring_file; -int mirroring_count; +static int mirroring_count; -void +static void read_bidi_mirroring () { char s[500]; - int i, j; + unsigned int i, j; FILE *f; for (i = 0; i < 0x110000; i++) @@ -58,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') @@ -72,33 +68,52 @@ read_bidi_mirroring () fclose (f); } -void +static char * +headermacro (char *file) +{ + char *t = strdup (file); + char *p = t; + while (*p) + { + if (*p >= 'a' && *p <= 'z') + *p += 'A' - 'a'; + else if ((*p < 'A' || *p > 'Z') && (*p < '0' || *p > '9')) + *p = '_'; + p++; + } + return t; +} + +static void write_mirror (char *file) { int i; FILE *f; + char *FILENAME = headermacro (file); printf ("Writing `%s'\n", file); if (!(f = fopen (file, "wt"))) 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); - fprintf (f, "#include \"fribidi.h\"\n\n"); + " 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" " Mirrored characters include all the characters in the Unicode list\n" " that have been declared as being mirrored and that have a mirrored\n" " equivalent.\n" "\n" " There are lots of characters that are designed as being mirrored\n" - " but do not have any mirrored glyph, e.g. the sign for there exist.\n" + " but do not have any mirrored glyph, e.g. the sign for there exist.\n"); + fprintf (f, " Are these used in Arabic? That is are all the mathematical signs\n" " that are assigned to be mirrorable actually mirrored in Arabic?\n" " If that is the case, we'll change the below code to include also\n" " characters that mirror to themself. It will then be the responsibility\n" " of the display engine to actually mirror these.\n" "*/\n\n"); fprintf (f, "/* *INDENT-OFF" "* */\n\n"); - fprintf (f, "struct\n" + fprintf (f, "static const struct\n" "{\n" " FriBidiChar ch, mirrored_ch;\n" "}\n" "FriBidiMirroredChars[] =\n" "{\n"); @@ -107,15 +122,19 @@ write_mirror (char *file) fprintf (f, " {0x%04X, 0x%04X},\n", i, table[i]); fprintf (f, "} ;\n\n"); fprintf (f, "/* *INDE" "NT-ON* */\n\n"); - fprintf (f, "int nFriBidiMirroredChars = %d;\n\n", mirroring_count); + fprintf (f, "const int nFriBidiMirroredChars = %d;\n\n", mirroring_count); + fprintf (f, "\n#endif /* %s */\n", FILENAME); fclose (f); } int main (int argc, char **argv) { - snprintf (bidi_mirroring_file, sizeof bidi_mirroring_file, - "%s/BidiMirroring.txt", (argc >= 2) ? argv[1] : "unidata"); + char *p; + + p = (argc >= 2) ? argv[1] : "unidata"; + bidi_mirroring_file = malloc (50 + strlen (p)); + sprintf (bidi_mirroring_file, "%s/BidiMirroring.txt", p); read_bidi_mirroring (); write_mirror ("fribidi_tab_mirroring.i"); return 0; diff --git a/fribidi_env.c b/fribidi_env.c new file mode 100644 index 0000000..fd12e81 --- /dev/null +++ b/fribidi_env.c @@ -0,0 +1,294 @@ +/* fribidi_env.c - FriBidi environment management + * Copyright (C) 2002 Omer Zak + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library, in a file named COPYING; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place, Suite 330, + * Boston, MA 02111-1307, USA + * + * For licensing issues, contact <omerz@actcom.co.il> + */ + + +/*====================================================================== + * The FriBidiEnv structure encapsulates data about the environment + * in which a particular instance of FriBidi runs. + * + * The structure was introduced to meet the following objectives: + * 1. Mechanism for freeing all memory allocated by FriBidi procedures + * if a procedure stopped executing in middle due to any reason, + * such as memory allocation failure. + * This mechanism is necessary for using FriBidi in small-memory + * devices, such as devices which run the GEOS and Symbian EPOC 6 + * operating systems. + * 2. Avoidance of modifiable static memory variables, which are + * not allowed in Symbian EPOC 6 applications, and which prevent + * the FriBidi library from being reentrant in certain operating + * systems. The structure also allows FriBidi to be used in + * multithreaded environments. + * 3. Allow an application to run FriBidi under independent environments, + * using different settings in each environment. + * + * Every FriBidi function requires a pointer to FriBidiEnv as its first + * argument. + *----------------------------------------------------------------------*/ + +/* For standard malloc() and free(). */ +#include <stdlib.h> + +#include <assert.h> + +#include "fribidi_env.h" + +/*====================================================================== + * Initialize a FriBidiEnv structure. Must be called before any + * other use of the structure. + * + * It initializes the doubly-linked list of memory chunks and the flags. + *----------------------------------------------------------------------*/ + +void +init_fribidienv (FriBidiEnv * fribidienv, FriBidiFlags aFlags) +{ + VALIDATE_FRIBIDIENV (fribidienv); + fribidienv->iAllocatedMemoryChunks = NULL; + fribidienv->iFlags = aFlags; + /* fribidienv->iReserved3 = NULL; */ +} + +/*====================================================================== + * Free all memory linked to this FriBidiEnv instance. + * After calling this procedure, the instance is legally initialized, + * so there is no need for a separate init_fribidienv() call (but it + * does not harm). + *----------------------------------------------------------------------*/ +void +destroy_fribidienv (FriBidiEnv * fribidienv) +{ + FriBidiMemChunkPrefix *lChunkPtr; + FriBidiMemChunkPrefix *lChunkNext; + + VALIDATE_FRIBIDIENV (fribidienv); + + lChunkPtr = fribidienv->iAllocatedMemoryChunks; + while (NULL != lChunkPtr) + { + lChunkNext = (FriBidiMemChunkPrefix *) (lChunkPtr->iNext); + free (lChunkPtr); + lChunkPtr = lChunkNext; + } + fribidienv->iAllocatedMemoryChunks = NULL; +} + + +/*====================================================================== + * Allocate memory and link it to this FriBidiEnv instance. + * This function may throw an Out-Of-Memory exception in + * environments, which support exceptions. + *----------------------------------------------------------------------*/ +void * +fribidi_malloc (FriBidiEnv * fribidienv, size_t size) +{ + FriBidiMemChunkPrefix *lChunk_ptr; + FriBidiMemChunkPrefix *lNextChunk_ptr; + + VALIDATE_FRIBIDIENV (fribidienv); + + lChunk_ptr = + (FriBidiMemChunkPrefix *) malloc (sizeof (FriBidiMemChunkPrefix) + size); + if (NULL == lChunk_ptr) + { + FRIBIDI_OOM_ACTION; + } + + /* Before: + * fribidienv->iAllocatedMemoryChunks points at lNextChunk_ptr. + * if (NULL != lNextChunk_Ptr): + * lNextChunk_ptr->iNext points at something. + * lNextChunk_ptr->iPrev points back at fribidienv. + * + * After: + * fribidienv->iAllocatedMemoryChunks points at lChunk_ptr. + * if (NULL != lNextChunk_Ptr): + * lNextChunk_ptr->iNext unchanged. + * lNextChunk_ptr->iPrev points at lChunk_ptr. + * lChunk_ptr->iNext points at lNextChunk_ptr. + * lChunk_ptr->iPrev points back at fribidienv. + */ + + lNextChunk_ptr = fribidienv->iAllocatedMemoryChunks; + fribidienv->iAllocatedMemoryChunks = lChunk_ptr; + if (NULL != lNextChunk_ptr) + { + lNextChunk_ptr->iPrev = lChunk_ptr; + } + lChunk_ptr->iNext = lNextChunk_ptr; + lChunk_ptr->iPrev = (FriBidiMemChunkPrefix *) fribidienv; + + return ((void *) (&lChunk_ptr[1])); +} + +/*====================================================================== + * Unlink the memory chunk pointed at by ptr from this + * FriBidiEnv instance and free it. + * If the memory chunk is not properly linked, then panic. + *----------------------------------------------------------------------*/ +void +fribidi_free (FriBidiEnv * fribidienv, void *ptr) +{ + FriBidiMemChunkPrefix *lChunk_ptr; + FriBidiMemChunkPrefix *lNextChunk_ptr; + FriBidiMemChunkPrefix *lPrevChunk_ptr; + + /* VALIDATE_FRIBIDIENV(fribidienv); */ + /* At normal operation (i.e. not when debugging the memory management + * subsystem), fribidienv is not used in this implementation of + * fribidi_free(). + */ + + if (NULL == ptr) + return; + + lChunk_ptr = (FriBidiMemChunkPrefix *) + (((char *) ptr) - sizeof (FriBidiMemChunkPrefix)); + + lNextChunk_ptr = (FriBidiMemChunkPrefix *) (lChunk_ptr->iNext); + lPrevChunk_ptr = (FriBidiMemChunkPrefix *) (lChunk_ptr->iPrev); + + 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; + } + + free (lChunk_ptr); +} + + + + +/*====================================================================== + * fribidi_mirroring_status() returns whether mirroring is on or off, + * default is on. + *----------------------------------------------------------------------*/ +boolean +fribidi_mirroring_status (FriBidiEnv * fbenv) +{ + VALIDATE_FRIBIDIENV (fbenv); + + 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) +{ + 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) +{ + VALIDATE_FRIBIDIENV (fbenv); + + 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) +{ + 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) +{ +#ifdef DEBUG + VALIDATE_FRIBIDIENV (fbenv); + + return (0 != (fbenv->iFlags & FRIBIDIENV_DEBUG_MODE) ? TRUE : FALSE); +#else /* DEBUG */ + return FALSE; +#endif /* DEBUG */ +} + +/*====================================================================== + * 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) +{ +#ifdef DEBUG + VALIDATE_FRIBIDIENV (fbenv); + + if (FALSE != debug) + { + fbenv->iFlags |= FRIBIDIENV_DEBUG_MODE; + } + else + { + fbenv->iFlags &= (~FRIBIDIENV_DEBUG_MODE); + } + return debug; +#else /* DEBUG */ + return FALSE; +#endif /* DEBUG */ +} + + +/*====================================================================== + * For environments with global FriBidiEnv instance. + *----------------------------------------------------------------------*/ +#ifdef GLOBAL_FRIBIDIENV +FriBidiEnv fribidi_global_env = { NULL, FRIBIDIENV_DEFAULT_SETTINGS }; +/* fribidi_global_env needs no explicit initialization. */ +#endif /* GLOBAL_FRIBIDIENV */ + + +/* End of fribidi_env.c */ diff --git a/fribidi_env.h b/fribidi_env.h new file mode 100644 index 0000000..d78e7e8 --- /dev/null +++ b/fribidi_env.h @@ -0,0 +1,272 @@ +/* fribidi_env.h - FriBidi environment management + * Copyright (C) 2002 Omer Zak + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library, in a file named COPYING; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place, Suite 330, + * Boston, MA 02111-1307, USA + * + * For licensing issues, contact <omerz@actcom.co.il> + */ + +/*********************************************************************** + * The FriBidiEnv structure encapsulates data about the environment + * in which a particular instance of FriBidi runs. + * + * The structure was introduced to meet the following objectives: + * 1. Mechanism for freeing all memory allocated by FriBidi procedures + * if a procedure stopped executing in middle due to any reason, + * such as memory allocation failure. + * This mechanism is necessary for using FriBidi in small-memory + * devices, such as devices which run the GEOS and Symbian EPOC 6 + * operating systems. + * 2. Avoidance of modifiable static memory variables, which are + * not allowed in Symbian EPOC 6 applications, and which prevent + * the FriBidi library from being reentrant in certain operating + * systems. The structure also allows FriBidi to be used in + * multithreaded environments. + * 3. Allow an application to run FriBidi under independent environments, + * using different settings in each environment. + * + * Every FriBidi function requires a pointer to FriBidiEnv as its first + * argument. + **********************************************************************/ + +#ifndef FRIBIDI_ENV_H +#define FRIBIDI_ENV_H + +#include "fribidi_mem.h" + +/* One of the following must be #defined. */ +#define GLOBAL_FRIBIDIENV +/* #define VERIFY_NO_GLOBAL_FRIBIDIENV */ +/* #define NO_FRIBIDIENV_VALIDATION */ + + +/* Define to be the appropriate action for your environment. */ +#define FRIBIDI_OOM_ACTION return(NULL) + + +#ifdef __cplusplus +extern "C" +{ +#endif + +/*====================================================================== + * Memory Management Structure + *----------------------------------------------------------------------*/ + +/*********************************************************************** + * The following structure is needed unless fribidi_malloc() and + * fribidi_free() are #define'd to be the same as the operating system + * provided malloc() and free() procedures. + * + * Each dynamically-allocated memory chunk is prefixed with two + * pointers. + * The chunk is added to a doubly-linked list. + * When its time to be deleted comes, it is deleted from whatever + * position it is in the doubly-linked list. + * + * The head of the list is in a FriBidiEnv structure instance, and it + * is mapped in such a way that fribidi_free() does not have to distinguish + * 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. + */ + }; + + +/*====================================================================== + * FriBidiEnv Structure Declaration + *----------------------------------------------------------------------*/ + +/* The truth is that uint16 is enough for the number of flags + * currently defined. + * But we want to keep all FriBidiEnv fields word-aligned. + */ + 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. */ + }; + +/*====================================================================== + * Initialize a FriBidiEnv structure. Must be called before any + * other use of the structure. + * + * It initializes the doubly-linked list of memory chunks and the flags. + *----------------------------------------------------------------------*/ + void init_fribidienv (FriBidiEnv * fribidienv, FriBidiFlags aFlags); + + +/*====================================================================== + * Free all memory linked to this FriBidiEnv instance. + * After calling this procedure, the instance is legally initialized, + * so there is no need for a separate init_fribidienv() call (but it + * does not harm). + *----------------------------------------------------------------------*/ + void destroy_fribidienv (FriBidiEnv * fribidienv); + + +/*====================================================================== + * Allocate memory and link it to this FriBidiEnv instance. + * This function may throw an Out-Of-Memory exception in + * environments, which support exceptions. + *----------------------------------------------------------------------*/ + void *fribidi_malloc (FriBidiEnv * fribidienv, size_t size); + + +/*====================================================================== + * Unlink the memory chunk pointed at by ptr from this + * FriBidiEnv instance and free it. + * If the memory chunk is not properly linked, then panic. + *----------------------------------------------------------------------*/ + void fribidi_free (FriBidiEnv * fribidienv, void *ptr); + + +/*====================================================================*/ + +/* Flag definitions. + * + * When initializing a FriBidiEnv instance, OR together the constants + * corresponding to the flags which you want to set. + */ +#define FRIBIDIENV_DEBUG_MODE 0x0001 +#define FRIBIDIENV_MIRRORING_MODE 0x0002 +#define FRIBIDIENV_REORDER_NSM_MODE 0x0004 +#define FRIBIDIENV_REMOVE_MARKS_MODE 0x0008 +#define FRIBIDIENV_ARABIC_JOINING_MODE 0x0010 +#define FRIBIDIENV_LIGATURING_MODE 0x0020 + + +/* Use FRIBIDIENV_DEFAULT_SETTINGS as a shorthand to frequently-used + * defaults for the flags. + */ +#define FRIBIDIENV_DEFAULT_SETTINGS (FRIBIDIENV_MIRRORING_MODE | 0) + + +/*====================================================================== + * fribidi_mirroring_status() returns whether mirroring is on or off, + * default is on. + *----------------------------------------------------------------------*/ + boolean fribidi_mirroring_status (FriBidiEnv * fbenv); + +/*====================================================================== + * fribidi_set_mirroring() sets mirroring on or off. + *----------------------------------------------------------------------*/ + 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); + +/*====================================================================== + * fribidi_set_reorder_nsm() sets reordering of nsm sequences on or off. + *----------------------------------------------------------------------*/ + 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); + +/*====================================================================== + * 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); + +/*====================================================================== + * Management of various styles of defining and using FriBidiEnv. + *----------------------------------------------------------------------*/ + +/*====================================================================== + * For environments with global FriBidiEnv instance. + *----------------------------------------------------------------------*/ +#ifdef GLOBAL_FRIBIDIENV +#define VALIDATE_FRIBIDIENV(env) if ((env) == NULL) (env) = &(fribidi_global_env) + + extern FriBidiEnv fribidi_global_env; +#endif /* GLOBAL_FRIBIDIENV */ + + +/*====================================================================== + * For environments with disallow global variables. + *----------------------------------------------------------------------*/ +#ifdef VERIFY_NO_GLOBAL_FRIBIDIENV +#define VALIDATE_FRIBIDIENV(env) if ((env) == NULL) Panic() +#endif /* VERIFY_NO_GLOBAL_FRIBIDIENV */ + + +/*====================================================================== + * For environments which need speed/code size optimization. + *----------------------------------------------------------------------*/ +#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 */ + +#ifdef __cplusplus +} +#endif + +#endif /* FRIBIDI_ENV_H */ + +/* End of fribidi_env.h */ diff --git a/fribidi_main.c b/fribidi_main.c index 140246a..26ef02a 100644 --- a/fribidi_main.c +++ b/fribidi_main.c @@ -1,6 +1,6 @@ /* FriBidi - Library of BiDi algorithm * Copyright (C) 1999,2000 Dov Grobgeld, and - * Copyright (C) 2001 Behdad Esfahbod. + * Copyright (C) 2001,2002 Behdad Esfahbod. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -62,7 +62,8 @@ die (char *fmt, ...) exit (-1); } -boolean do_break, do_pad, do_mirror, do_clean, show_input, show_changes; +boolean do_break, do_pad, do_mirror, do_reorder_nsm, do_clean, show_input, + show_changes; boolean show_visual, show_basedir, show_ltov, show_vtol, show_levels; int text_width; char *char_set; @@ -87,8 +88,8 @@ help (void) " -v, --verbose Verbose mode, same as --basedir --ltov --vtol \\\n" " --levels --changes\n" " -d, --debug Output debug information\n" - " -t, --test Test %s, same as --clean --nobreak --showinput\n", - FRIBIDI_PACKAGE); + " -t, --test Test %s, same as --clean --nobreak --showinput \\\n" + " --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", @@ -116,12 +117,13 @@ help (void) (" --wltr Set base direction to LTR if no strong character found \\\n" " (default)\n" " --nomirror Turn mirroring off, to do it later\n" + " --reordernsm Reorder NSM sequences to follow their base character\n" " --clean Remove explicit format codes in visual string \\\n" " output, currently does not affect other outputs\n" - " --basedir Output Base Direction\n" - " --ltov Output Logical to Visual position map\n" - " --vtol Output Visual to Logical position map\n"); - printf (" --levels Output Embedding Levels\n" + " --basedir Output Base Direction\n"); + printf (" --ltov Output Logical to Visual position map\n" + " --vtol Output Visual to Logical position map\n" + " --levels Output Embedding Levels\n" " --changes Output information about changes between \\\n" " logical and visual string (start, length)\n" " --novisual Do not output the visual string, to be used with \\\n" @@ -152,7 +154,7 @@ help (void) static void version (void) { - printf (fribidi_version_info); + printf ("%s", fribidi_version_info); exit (0); } @@ -169,6 +171,7 @@ main (int argc, char *argv[]) do_pad = TRUE; do_mirror = TRUE; do_clean = FALSE; + do_reorder_nsm = FALSE; show_input = FALSE; show_visual = TRUE; show_basedir = FALSE; @@ -217,6 +220,7 @@ main (int argc, char *argv[]) {"bol", 1, 0, 'B'}, {"eol", 1, 0, 'E'}, {"nomirror", 0, &do_mirror, FALSE}, + {"reordernsm", 0, &do_reorder_nsm, TRUE}, {"clean", 0, &do_clean, TRUE}, {"ltr", 0, (int *) &input_base_direction, FRIBIDI_TYPE_L}, {"rtl", 0, (int *) &input_base_direction, FRIBIDI_TYPE_R}, @@ -275,6 +279,7 @@ main (int argc, char *argv[]) do_clean = TRUE; show_input = TRUE; do_break = FALSE; + do_reorder_nsm = TRUE; break; case 'c': char_set = strdup (optarg); @@ -322,6 +327,7 @@ main (int argc, char *argv[]) die ("unrecognized character set `%s'\n", char_set); fribidi_set_mirroring (do_mirror); + fribidi_set_reorder_nsm (do_reorder_nsm); exit_val = 0; file_found = FALSE; while (optind < argc || !file_found) diff --git a/fribidi_tab_char_type_2.i b/fribidi_tab_char_type_2.i index bce421e..de0548e 100644 --- a/fribidi_tab_char_type_2.i +++ b/fribidi_tab_char_type_2.i @@ -1,8 +1,11 @@ /* - 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 */ +#ifndef FRIBIDI_TAB_CHAR_TYPE_2_I +#define FRIBIDI_TAB_CHAR_TYPE_2_I + #include "fribidi.h" #define LTR FRIBIDI_PROP_TYPE_LTR @@ -32,15 +35,18 @@ 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* */ -FriBidiPropCharType FriBidiPropertyBlockLevel1_0000[512] = { +static const FriBidiPropCharType FriBidiPropertyBlockLevel1[512*29] = { + +#define FriBidiPropertyBlockLevel1_0000 (FriBidiPropertyBlockLevel1 + 0x0) + BN, BN, BN, BN, BN, BN, BN, BN, BN, SS, BS, SS, WS, BS, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BS, BS, BS, SS, WS, ON, ON, ET, ET, ET, ON, ON, ON, ON, ON, ET, CS, ET, CS, ES, @@ -73,9 +79,9 @@ FriBidiPropCharType FriBidiPropertyBlockLevel1_0000[512] = { LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel1_0200[512] = { +#define FriBidiPropertyBlockLevel1_0200 (FriBidiPropertyBlockLevel1 + 0x200) + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, @@ -96,9 +102,9 @@ FriBidiPropCharType FriBidiPropertyBlockLevel1_0200[512] = { 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, @@ -107,10 +113,10 @@ FriBidiPropCharType FriBidiPropertyBlockLevel1_0200[512] = { LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,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) -FriBidiPropCharType FriBidiPropertyBlockLevel1_0400[512] = { LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, @@ -143,9 +149,9 @@ FriBidiPropCharType FriBidiPropertyBlockLevel1_0400[512] = { RTL,RTL,RTL,RTL,RTL,RTL,RTL,RTL,RTL,RTL,RTL,RTL,RTL,RTL,RTL,RTL, RTL,RTL,RTL,RTL,RTL,RTL,RTL,RTL,RTL,RTL,RTL,RTL,RTL,RTL,RTL,RTL, RTL,RTL,RTL,RTL,RTL,RTL,RTL,RTL,RTL,RTL,RTL,RTL,RTL,RTL,RTL,RTL, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel1_0600[512] = { +#define FriBidiPropertyBlockLevel1_0600 (FriBidiPropertyBlockLevel1 + 0x600) + AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, CS, 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, @@ -159,7 +165,7 @@ FriBidiPropCharType FriBidiPropertyBlockLevel1_0600[512] = { 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, @@ -178,9 +184,9 @@ FriBidiPropCharType FriBidiPropertyBlockLevel1_0600[512] = { LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel1_0800[512] = { +#define FriBidiPropertyBlockLevel1_0800 (FriBidiPropertyBlockLevel1 + 0x800) + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, @@ -213,9 +219,9 @@ FriBidiPropCharType FriBidiPropertyBlockLevel1_0800[512] = { 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, ET, ET,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel1_0A00[512] = { +#define FriBidiPropertyBlockLevel1_0A00 (FriBidiPropertyBlockLevel1 + 0xA00) + LTR,LTR,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, @@ -248,9 +254,9 @@ FriBidiPropCharType FriBidiPropertyBlockLevel1_0A00[512] = { LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel1_0C00[512] = { +#define FriBidiPropertyBlockLevel1_0C00 (FriBidiPropertyBlockLevel1 + 0xC00) + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, @@ -283,9 +289,9 @@ FriBidiPropCharType FriBidiPropertyBlockLevel1_0C00[512] = { LTR,LTR,NSM,NSM,NSM,LTR,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, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel1_0E00[512] = { +#define FriBidiPropertyBlockLevel1_0E00 (FriBidiPropertyBlockLevel1 + 0xE00) + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, @@ -318,9 +324,9 @@ FriBidiPropCharType FriBidiPropertyBlockLevel1_0E00[512] = { LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel1_1000[512] = { +#define FriBidiPropertyBlockLevel1_1000 (FriBidiPropertyBlockLevel1 + 0x1000) + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,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, @@ -353,9 +359,9 @@ FriBidiPropCharType FriBidiPropertyBlockLevel1_1000[512] = { LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel1_1200[512] = { +#define FriBidiPropertyBlockLevel1_1200 (FriBidiPropertyBlockLevel1 + 0x1200) + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, @@ -388,9 +394,9 @@ FriBidiPropCharType FriBidiPropertyBlockLevel1_1200[512] = { LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel1_1600[512] = { +#define FriBidiPropertyBlockLevel1_1600 (FriBidiPropertyBlockLevel1 + 0x1400) + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, @@ -408,13 +414,13 @@ FriBidiPropCharType FriBidiPropertyBlockLevel1_1600[512] = { LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,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, @@ -423,10 +429,10 @@ FriBidiPropCharType FriBidiPropertyBlockLevel1_1600[512] = { NSM,NSM,NSM,NSM,LTR,LTR,LTR,LTR,LTR,LTR,LTR, 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,LTR,LTR,LTR,LTR,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel1_1800[512] = { - ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, BN, BN, BN, BN,LTR, +#define FriBidiPropertyBlockLevel1_1800 (FriBidiPropertyBlockLevel1 + 0x1600) + + 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, @@ -458,9 +464,9 @@ FriBidiPropCharType FriBidiPropertyBlockLevel1_1800[512] = { LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel1_1E00[512] = { +#define FriBidiPropertyBlockLevel1_1E00 (FriBidiPropertyBlockLevel1 + 0x1800) + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, @@ -493,30 +499,30 @@ FriBidiPropCharType FriBidiPropertyBlockLevel1_1E00[512] = { LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, ON, ON, ON, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, ON, ON, ON, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, ON, ON,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel1_2000[512] = { +#define FriBidiPropertyBlockLevel1_2000 (FriBidiPropertyBlockLevel1 + 0x1A00) + WS, WS, WS, WS, WS, WS, WS, WS, WS, WS, WS, BN, BN, BN,LTR,RTL, 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, @@ -527,10 +533,10 @@ FriBidiPropCharType FriBidiPropertyBlockLevel1_2000[512] = { ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, 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) -FriBidiPropCharType FriBidiPropertyBlockLevel1_2200[512] = { ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ET, ET, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, @@ -546,7 +552,7 @@ FriBidiPropCharType FriBidiPropertyBlockLevel1_2200[512] = { ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, 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, @@ -554,18 +560,18 @@ FriBidiPropCharType FriBidiPropertyBlockLevel1_2200[512] = { LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,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, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel1_2400[512] = { +#define FriBidiPropertyBlockLevel1_2400 (FriBidiPropertyBlockLevel1 + 0x1E00) + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, 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, @@ -580,8 +586,10 @@ FriBidiPropCharType FriBidiPropertyBlockLevel1_2400[512] = { LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,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, @@ -591,25 +599,23 @@ FriBidiPropCharType FriBidiPropertyBlockLevel1_2400[512] = { ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, 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, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel1_2600[512] = { +#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, @@ -623,19 +629,54 @@ FriBidiPropCharType FriBidiPropertyBlockLevel1_2600[512] = { ON, ON, ON, ON, 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) + + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, 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) -FriBidiPropCharType FriBidiPropertyBlockLevel1_2800[512] = { ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, @@ -668,9 +709,9 @@ FriBidiPropCharType FriBidiPropertyBlockLevel1_2800[512] = { LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel1_2E00[512] = { +#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, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, @@ -703,20 +744,20 @@ FriBidiPropCharType FriBidiPropertyBlockLevel1_2E00[512] = { 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, ON, ON, ON, ON, ON, ON, ON, ON,LTR,LTR,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel1_3000[512] = { +#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, @@ -738,9 +779,24 @@ FriBidiPropCharType FriBidiPropertyBlockLevel1_3000[512] = { LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel1_A400[512] = { +#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, @@ -750,10 +806,30 @@ FriBidiPropCharType FriBidiPropertyBlockLevel1_A400[512] = { LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,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, 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,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, @@ -773,9 +849,9 @@ FriBidiPropCharType FriBidiPropertyBlockLevel1_A400[512] = { LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel1_FA00[512] = { +#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, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, @@ -808,9 +884,9 @@ FriBidiPropCharType FriBidiPropertyBlockLevel1_FA00[512] = { 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, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel1_FC00[512] = { +#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, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, @@ -843,14 +919,14 @@ FriBidiPropCharType FriBidiPropertyBlockLevel1_FC00[512] = { 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, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel1_FE00[512] = { - LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, +#define FriBidiPropertyBlockLevel1_FE00 (FriBidiPropertyBlockLevel1 + 0x3200) + + 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, @@ -867,8 +943,8 @@ FriBidiPropCharType FriBidiPropertyBlockLevel1_FE00[512] = { 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, @@ -878,9 +954,9 @@ FriBidiPropCharType FriBidiPropertyBlockLevel1_FE00[512] = { LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, 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, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel1_1D000[512] = { +#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, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, @@ -913,9 +989,9 @@ FriBidiPropCharType FriBidiPropertyBlockLevel1_1D000[512] = { LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel1_1D600[512] = { +#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, LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, @@ -948,9 +1024,9 @@ FriBidiPropCharType FriBidiPropertyBlockLevel1_1D600[512] = { 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, EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel1_E0000[512] = { +#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, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, @@ -985,7 +1061,10 @@ FriBidiPropCharType FriBidiPropertyBlockLevel1_E0000[512] = { LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, }; -FriBidiPropCharType *FriBidiPropertyBlock[2176] = { +static const FriBidiPropCharType *FriBidiPropertyBlockLevel0[2176*1] = { + +#define FriBidiPropertyBlock (FriBidiPropertyBlockLevel0 + 0x0) + FriBidiPropertyBlockLevel1_0000, /* 0000..01FF */ FriBidiPropertyBlockLevel1_0200, /* 0200..03FF */ FriBidiPropertyBlockLevel1_0400, /* 0400..05FF */ @@ -1007,11 +1086,11 @@ FriBidiPropCharType *FriBidiPropertyBlock[2176] = { 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 */ @@ -3188,7 +3267,6 @@ FriBidiPropCharType *FriBidiPropertyBlock[2176] = { #undef AL #undef RTL #undef LTR - /*====================================================================== * fribidi_get_type() returns the bidi type of a character. *----------------------------------------------------------------------*/ @@ -3202,3 +3280,5 @@ fribidi_get_type (FriBidiChar uch) /* Non-Unicode chars */ } + +#endif /* FRIBIDI_TAB_CHAR_TYPE_2_I */ diff --git a/fribidi_tab_char_type_9.i b/fribidi_tab_char_type_9.i index bb75e25..edc15d2 100644 --- a/fribidi_tab_char_type_9.i +++ b/fribidi_tab_char_type_9.i @@ -1,8 +1,11 @@ /* - 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 */ +#ifndef FRIBIDI_TAB_CHAR_TYPE_9_I +#define FRIBIDI_TAB_CHAR_TYPE_9_I + #include "fribidi.h" #define LTR FRIBIDI_PROP_TYPE_LTR @@ -32,2297 +35,2388 @@ 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* */ -FriBidiPropCharType FriBidiPropertyBlockLevel8_0000[8] = { +static const FriBidiPropCharType FriBidiPropertyBlockLevel8[8*145] = { + +#define FriBidiPropertyBlockLevel8_0000 (FriBidiPropertyBlockLevel8 + 0x0) + BN, BN, BN, BN, BN, BN, BN, BN, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0008[8] = { +#define FriBidiPropertyBlockLevel8_0008 (FriBidiPropertyBlockLevel8 + 0x8) + BN, SS, BS, SS, WS, BS, BN, BN, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0018[8] = { +#define FriBidiPropertyBlockLevel8_0018 (FriBidiPropertyBlockLevel8 + 0x10) + BN, BN, BN, BN, BS, BS, BS, SS, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0020[8] = { +#define FriBidiPropertyBlockLevel8_0020 (FriBidiPropertyBlockLevel8 + 0x18) + WS, ON, ON, ET, ET, ET, ON, ON, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0028[8] = { +#define FriBidiPropertyBlockLevel8_0028 (FriBidiPropertyBlockLevel8 + 0x20) + ON, ON, ON, ET, CS, ET, CS, ES, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0030[8] = { +#define FriBidiPropertyBlockLevel8_0030 (FriBidiPropertyBlockLevel8 + 0x28) + EN, EN, EN, EN, EN, EN, EN, EN, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0038[8] = { +#define FriBidiPropertyBlockLevel8_0038 (FriBidiPropertyBlockLevel8 + 0x30) + EN, EN, CS, ON, ON, ON, ON, ON, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0040[8] = { +#define FriBidiPropertyBlockLevel8_0040 (FriBidiPropertyBlockLevel8 + 0x38) + ON,LTR,LTR,LTR,LTR,LTR,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0048[8] = { +#define FriBidiPropertyBlockLevel8_0048 (FriBidiPropertyBlockLevel8 + 0x40) + LTR,LTR,LTR,LTR,LTR,LTR,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0058[8] = { +#define FriBidiPropertyBlockLevel8_0058 (FriBidiPropertyBlockLevel8 + 0x48) + LTR,LTR,LTR, ON, ON, ON, ON, ON, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0078[8] = { +#define FriBidiPropertyBlockLevel8_0078 (FriBidiPropertyBlockLevel8 + 0x50) + LTR,LTR,LTR, ON, ON, ON, ON, BN, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0080[8] = { +#define FriBidiPropertyBlockLevel8_0080 (FriBidiPropertyBlockLevel8 + 0x58) + BN, BN, BN, BN, BN, BS, BN, BN, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_00A0[8] = { +#define FriBidiPropertyBlockLevel8_00A0 (FriBidiPropertyBlockLevel8 + 0x60) + CS, ON, ET, ET, ET, ET, ON, ON, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_00A8[8] = { +#define FriBidiPropertyBlockLevel8_00A8 (FriBidiPropertyBlockLevel8 + 0x68) + ON, ON,LTR, ON, ON, ON, ON, ON, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_00B0[8] = { +#define FriBidiPropertyBlockLevel8_00B0 (FriBidiPropertyBlockLevel8 + 0x70) + ET, ET, EN, EN, ON,LTR, ON, ON, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_00B8[8] = { +#define FriBidiPropertyBlockLevel8_00B8 (FriBidiPropertyBlockLevel8 + 0x78) + ON, EN,LTR, ON, ON, ON, ON, ON, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_00D0[8] = { +#define FriBidiPropertyBlockLevel8_00D0 (FriBidiPropertyBlockLevel8 + 0x80) + LTR,LTR,LTR,LTR,LTR,LTR,LTR, ON, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_02B8[8] = { +#define FriBidiPropertyBlockLevel8_02B8 (FriBidiPropertyBlockLevel8 + 0x88) + LTR, ON, ON,LTR,LTR,LTR,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_02C0[8] = { +#define FriBidiPropertyBlockLevel8_02C0 (FriBidiPropertyBlockLevel8 + 0x90) + LTR,LTR, ON, ON, ON, ON, ON, ON, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_02C8[8] = { +#define FriBidiPropertyBlockLevel8_02C8 (FriBidiPropertyBlockLevel8 + 0x98) + ON, ON, ON, ON, ON, ON, ON, ON, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_02E0[8] = { +#define FriBidiPropertyBlockLevel8_02E0 (FriBidiPropertyBlockLevel8 + 0xA0) + LTR,LTR,LTR,LTR,LTR, ON, ON, ON, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_02E8[8] = { +#define FriBidiPropertyBlockLevel8_02E8 (FriBidiPropertyBlockLevel8 + 0xA8) + ON, ON, ON, ON, ON, ON,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0300[8] = { +#define FriBidiPropertyBlockLevel8_0300 (FriBidiPropertyBlockLevel8 + 0xB0) + NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0348[8] = { - NSM,NSM,NSM,NSM,NSM,NSM,NSM,LTR, -}; +#define FriBidiPropertyBlockLevel8_0370 (FriBidiPropertyBlockLevel8 + 0xB8) -FriBidiPropCharType FriBidiPropertyBlockLevel8_0360[8] = { - NSM,NSM,NSM,LTR,LTR,LTR,LTR,LTR, -}; - -FriBidiPropCharType FriBidiPropertyBlockLevel8_0370[8] = { LTR,LTR,LTR,LTR, ON, ON,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0378[8] = { +#define FriBidiPropertyBlockLevel8_0378 (FriBidiPropertyBlockLevel8 + 0xC0) + LTR,LTR,LTR,LTR,LTR,LTR, ON,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0380[8] = { +#define FriBidiPropertyBlockLevel8_0380 (FriBidiPropertyBlockLevel8 + 0xC8) + LTR,LTR,LTR,LTR, ON, ON,LTR, ON, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0480[8] = { +#define FriBidiPropertyBlockLevel8_0480 (FriBidiPropertyBlockLevel8 + 0xD0) + LTR,LTR,LTR,NSM,NSM,NSM,NSM,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0488[8] = { +#define FriBidiPropertyBlockLevel8_0488 (FriBidiPropertyBlockLevel8 + 0xD8) + NSM,NSM,LTR,LTR,LTR,LTR,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0588[8] = { +#define FriBidiPropertyBlockLevel8_0588 (FriBidiPropertyBlockLevel8 + 0xE0) + LTR,LTR, ON,LTR,LTR,LTR,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0590[8] = { +#define FriBidiPropertyBlockLevel8_0590 (FriBidiPropertyBlockLevel8 + 0xE8) + RTL,NSM,NSM,NSM,NSM,NSM,NSM,NSM, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_05A0[8] = { +#define FriBidiPropertyBlockLevel8_05A0 (FriBidiPropertyBlockLevel8 + 0xF0) + NSM,NSM,RTL,NSM,NSM,NSM,NSM,NSM, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_05B8[8] = { +#define FriBidiPropertyBlockLevel8_05B8 (FriBidiPropertyBlockLevel8 + 0xF8) + NSM,NSM,RTL,NSM,NSM,NSM,RTL,NSM, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_05C0[8] = { +#define FriBidiPropertyBlockLevel8_05C0 (FriBidiPropertyBlockLevel8 + 0x100) + RTL,NSM,NSM,RTL,NSM,RTL,RTL,RTL, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_05C8[8] = { +#define FriBidiPropertyBlockLevel8_05C8 (FriBidiPropertyBlockLevel8 + 0x108) + RTL,RTL,RTL,RTL,RTL,RTL,RTL,RTL, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0600[8] = { +#define FriBidiPropertyBlockLevel8_0600 (FriBidiPropertyBlockLevel8 + 0x110) + AL, AL, AL, AL, AL, AL, AL, AL, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0608[8] = { +#define FriBidiPropertyBlockLevel8_0608 (FriBidiPropertyBlockLevel8 + 0x118) + AL, AL, AL, AL, CS, AL, AL, AL, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0648[8] = { +#define FriBidiPropertyBlockLevel8_0648 (FriBidiPropertyBlockLevel8 + 0x120) + AL, AL, AL,NSM,NSM,NSM,NSM,NSM, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0650[8] = { +#define FriBidiPropertyBlockLevel8_0650 (FriBidiPropertyBlockLevel8 + 0x128) + NSM,NSM,NSM,NSM,NSM,NSM, AL, AL, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0660[8] = { +#define FriBidiPropertyBlockLevel8_0660 (FriBidiPropertyBlockLevel8 + 0x130) + AN, AN, AN, AN, AN, AN, AN, AN, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0668[8] = { +#define FriBidiPropertyBlockLevel8_0668 (FriBidiPropertyBlockLevel8 + 0x138) + AN, AN, ET, AN, AN, AL, AL, AL, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0670[8] = { +#define FriBidiPropertyBlockLevel8_0670 (FriBidiPropertyBlockLevel8 + 0x140) + NSM, AL, AL, AL, AL, AL, AL, AL, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_06D0[8] = { +#define FriBidiPropertyBlockLevel8_06D0 (FriBidiPropertyBlockLevel8 + 0x148) + AL, AL, AL, AL, AL, AL,NSM,NSM, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_06E0[8] = { +#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, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_06E8[8] = { +#define FriBidiPropertyBlockLevel8_06E8 (FriBidiPropertyBlockLevel8 + 0x160) + NSM, ON,NSM,NSM,NSM,NSM, AL, AL, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_06F8[8] = { +#define FriBidiPropertyBlockLevel8_06F8 (FriBidiPropertyBlockLevel8 + 0x168) + EN, EN, AL, AL, AL, AL, AL, AL, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0708[8] = { +#define FriBidiPropertyBlockLevel8_0708 (FriBidiPropertyBlockLevel8 + 0x170) + AL, AL, AL, AL, AL, AL, AL, BN, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0710[8] = { +#define FriBidiPropertyBlockLevel8_0710 (FriBidiPropertyBlockLevel8 + 0x178) + AL,NSM, AL, AL, AL, AL, AL, AL, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0748[8] = { +#define FriBidiPropertyBlockLevel8_0748 (FriBidiPropertyBlockLevel8 + 0x180) + NSM,NSM,NSM, AL, AL, AL, AL, AL, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0900[8] = { +#define FriBidiPropertyBlockLevel8_0900 (FriBidiPropertyBlockLevel8 + 0x188) + LTR,NSM,NSM,LTR,LTR,LTR,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0938[8] = { +#define FriBidiPropertyBlockLevel8_0938 (FriBidiPropertyBlockLevel8 + 0x190) + LTR,LTR,LTR,LTR,NSM,LTR,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0940[8] = { +#define FriBidiPropertyBlockLevel8_0940 (FriBidiPropertyBlockLevel8 + 0x198) + LTR,NSM,NSM,NSM,NSM,NSM,NSM,NSM, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0948[8] = { +#define FriBidiPropertyBlockLevel8_0948 (FriBidiPropertyBlockLevel8 + 0x1A0) + NSM,LTR,LTR,LTR,LTR,NSM,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0950[8] = { +#define FriBidiPropertyBlockLevel8_0950 (FriBidiPropertyBlockLevel8 + 0x1A8) + LTR,NSM,NSM,NSM,NSM,LTR,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0960[8] = { +#define FriBidiPropertyBlockLevel8_0960 (FriBidiPropertyBlockLevel8 + 0x1B0) + LTR,LTR,NSM,NSM,LTR,LTR,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0980[8] = { +#define FriBidiPropertyBlockLevel8_0980 (FriBidiPropertyBlockLevel8 + 0x1B8) + LTR,NSM,LTR,LTR,LTR,LTR,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_09C8[8] = { +#define FriBidiPropertyBlockLevel8_09C8 (FriBidiPropertyBlockLevel8 + 0x1C0) + LTR,LTR,LTR,LTR,LTR,NSM,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_09F0[8] = { +#define FriBidiPropertyBlockLevel8_09F0 (FriBidiPropertyBlockLevel8 + 0x1C8) + LTR,LTR, ET, ET,LTR,LTR,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0A00[8] = { +#define FriBidiPropertyBlockLevel8_0A00 (FriBidiPropertyBlockLevel8 + 0x1D0) + LTR,LTR,NSM,LTR,LTR,LTR,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0A40[8] = { +#define FriBidiPropertyBlockLevel8_0A40 (FriBidiPropertyBlockLevel8 + 0x1D8) + LTR,NSM,NSM,LTR,LTR,LTR,LTR,NSM, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0A48[8] = { +#define FriBidiPropertyBlockLevel8_0A48 (FriBidiPropertyBlockLevel8 + 0x1E0) + NSM,LTR,LTR,NSM,NSM,NSM,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0AC0[8] = { +#define FriBidiPropertyBlockLevel8_0AC0 (FriBidiPropertyBlockLevel8 + 0x1E8) + LTR,NSM,NSM,NSM,NSM,NSM,LTR,NSM, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0B38[8] = { +#define FriBidiPropertyBlockLevel8_0B38 (FriBidiPropertyBlockLevel8 + 0x1F0) + LTR,LTR,LTR,LTR,NSM,LTR,LTR,NSM, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0B40[8] = { +#define FriBidiPropertyBlockLevel8_0B40 (FriBidiPropertyBlockLevel8 + 0x1F8) + LTR,NSM,NSM,NSM,LTR,LTR,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0B50[8] = { +#define FriBidiPropertyBlockLevel8_0B50 (FriBidiPropertyBlockLevel8 + 0x200) + LTR,LTR,LTR,LTR,LTR,LTR,NSM,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0BC0[8] = { +#define FriBidiPropertyBlockLevel8_0BC0 (FriBidiPropertyBlockLevel8 + 0x208) + NSM,LTR,LTR,LTR,LTR,LTR,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0C38[8] = { +#define FriBidiPropertyBlockLevel8_0C38 (FriBidiPropertyBlockLevel8 + 0x210) + LTR,LTR,LTR,LTR,LTR,LTR,NSM,NSM, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0C40[8] = { +#define FriBidiPropertyBlockLevel8_0C40 (FriBidiPropertyBlockLevel8 + 0x218) + NSM,LTR,LTR,LTR,LTR,LTR,NSM,NSM, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0C48[8] = { +#define FriBidiPropertyBlockLevel8_0C48 (FriBidiPropertyBlockLevel8 + 0x220) + NSM,LTR,NSM,NSM,NSM,NSM,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0C50[8] = { +#define FriBidiPropertyBlockLevel8_0C50 (FriBidiPropertyBlockLevel8 + 0x228) + LTR,LTR,LTR,LTR,LTR,NSM,NSM,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0CB8[8] = { +#define FriBidiPropertyBlockLevel8_0CB8 (FriBidiPropertyBlockLevel8 + 0x230) + LTR,LTR,LTR,LTR,LTR,LTR,LTR,NSM, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0CC8[8] = { +#define FriBidiPropertyBlockLevel8_0CC8 (FriBidiPropertyBlockLevel8 + 0x238) + LTR,LTR,LTR,LTR,NSM,NSM,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0DD0[8] = { +#define FriBidiPropertyBlockLevel8_0DD0 (FriBidiPropertyBlockLevel8 + 0x240) + LTR,LTR,NSM,NSM,NSM,LTR,NSM,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0E30[8] = { +#define FriBidiPropertyBlockLevel8_0E30 (FriBidiPropertyBlockLevel8 + 0x248) + LTR,NSM,LTR,LTR,NSM,NSM,NSM,NSM, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0E38[8] = { +#define FriBidiPropertyBlockLevel8_0E38 (FriBidiPropertyBlockLevel8 + 0x250) + NSM,NSM,NSM,LTR,LTR,LTR,LTR, ET, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0EB8[8] = { +#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, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0EC8[8] = { +#define FriBidiPropertyBlockLevel8_0EC8 (FriBidiPropertyBlockLevel8 + 0x268) + NSM,NSM,NSM,NSM,NSM,NSM,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0F30[8] = { +#define FriBidiPropertyBlockLevel8_0F30 (FriBidiPropertyBlockLevel8 + 0x270) + LTR,LTR,LTR,LTR,LTR,NSM,LTR,NSM, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0F38[8] = { +#define FriBidiPropertyBlockLevel8_0F38 (FriBidiPropertyBlockLevel8 + 0x278) + LTR,NSM, ON, ON, ON, ON,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0F80[8] = { +#define FriBidiPropertyBlockLevel8_0F80 (FriBidiPropertyBlockLevel8 + 0x280) + NSM,NSM,NSM,NSM,NSM,LTR,NSM,NSM, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_0FB8[8] = { +#define FriBidiPropertyBlockLevel8_0FB8 (FriBidiPropertyBlockLevel8 + 0x288) + NSM,NSM,NSM,NSM,NSM,LTR,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_1028[8] = { +#define FriBidiPropertyBlockLevel8_1028 (FriBidiPropertyBlockLevel8 + 0x290) + LTR,LTR,LTR,LTR,LTR,NSM,NSM,NSM, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_1030[8] = { +#define FriBidiPropertyBlockLevel8_1030 (FriBidiPropertyBlockLevel8 + 0x298) + NSM,LTR,NSM,LTR,LTR,LTR,NSM,NSM, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_1680[8] = { +#define FriBidiPropertyBlockLevel8_1680 (FriBidiPropertyBlockLevel8 + 0x2A0) + WS,LTR,LTR,LTR,LTR,LTR,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_1698[8] = { +#define FriBidiPropertyBlockLevel8_1698 (FriBidiPropertyBlockLevel8 + 0x2A8) + LTR,LTR,LTR, ON, ON,LTR,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_17D0[8] = { +#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, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_17D8[8] = { +#define FriBidiPropertyBlockLevel8_17D8 (FriBidiPropertyBlockLevel8 + 0x2C0) + LTR,LTR,LTR, ET,LTR,LTR,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_1808[8] = { - ON, ON, ON, BN, BN, BN, BN,LTR, -}; +#define FriBidiPropertyBlockLevel8_1808 (FriBidiPropertyBlockLevel8 + 0x2C8) + + ON, ON, ON,NSM,NSM,NSM, BN,LTR, + +#define FriBidiPropertyBlockLevel8_1FB8 (FriBidiPropertyBlockLevel8 + 0x2D0) -FriBidiPropCharType FriBidiPropertyBlockLevel8_1FB8[8] = { LTR,LTR,LTR,LTR,LTR, ON,LTR, ON, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_1FC0[8] = { +#define FriBidiPropertyBlockLevel8_1FC0 (FriBidiPropertyBlockLevel8 + 0x2D8) + ON, ON,LTR,LTR,LTR,LTR,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_1FF8[8] = { +#define FriBidiPropertyBlockLevel8_1FF8 (FriBidiPropertyBlockLevel8 + 0x2E0) + LTR,LTR,LTR,LTR,LTR, ON, ON,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_2000[8] = { +#define FriBidiPropertyBlockLevel8_2000 (FriBidiPropertyBlockLevel8 + 0x2E8) + WS, WS, WS, WS, WS, WS, WS, WS, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_2008[8] = { +#define FriBidiPropertyBlockLevel8_2008 (FriBidiPropertyBlockLevel8 + 0x2F0) + WS, WS, WS, BN, BN, BN,LTR,RTL, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_2028[8] = { +#define FriBidiPropertyBlockLevel8_2028 (FriBidiPropertyBlockLevel8 + 0x2F8) + WS, BS,LRE,RLE,PDF,LRO,RLO, WS, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_2030[8] = { +#define FriBidiPropertyBlockLevel8_2030 (FriBidiPropertyBlockLevel8 + 0x300) + ET, ET, ET, ET, ET, ON, ON, ON, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_2040[8] = { - ON, ON, ON, ON, ON, ON, ON,LTR, -}; +#define FriBidiPropertyBlockLevel8_2050 (FriBidiPropertyBlockLevel8 + 0x308) + + 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) + + BN, BN, BN, BN,LTR,LTR,LTR,LTR, + +#define FriBidiPropertyBlockLevel8_2068 (FriBidiPropertyBlockLevel8 + 0x320) -FriBidiPropCharType FriBidiPropertyBlockLevel8_2068[8] = { LTR,LTR, BN, BN, BN, BN, BN, BN, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_2070[8] = { +#define FriBidiPropertyBlockLevel8_2070 (FriBidiPropertyBlockLevel8 + 0x328) + EN,LTR,LTR,LTR, EN, EN, EN, EN, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_2078[8] = { +#define FriBidiPropertyBlockLevel8_2078 (FriBidiPropertyBlockLevel8 + 0x330) + EN, EN, ET, ET, ON, ON, ON,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_20A0[8] = { +#define FriBidiPropertyBlockLevel8_20A0 (FriBidiPropertyBlockLevel8 + 0x338) + ET, ET, ET, ET, ET, ET, ET, ET, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_2100[8] = { +#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, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_2110[8] = { +#define FriBidiPropertyBlockLevel8_2110 (FriBidiPropertyBlockLevel8 + 0x358) + LTR,LTR,LTR,LTR, ON,LTR, ON, ON, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_2118[8] = { +#define FriBidiPropertyBlockLevel8_2118 (FriBidiPropertyBlockLevel8 + 0x360) + ON,LTR,LTR,LTR,LTR,LTR, ON, ON, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_2120[8] = { +#define FriBidiPropertyBlockLevel8_2120 (FriBidiPropertyBlockLevel8 + 0x368) + ON, ON, ON, ON,LTR, ON,LTR, ON, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_2128[8] = { +#define FriBidiPropertyBlockLevel8_2128 (FriBidiPropertyBlockLevel8 + 0x370) + LTR, ON,LTR,LTR,LTR,LTR, ET,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_21F0[8] = { - ON, ON, ON, ON,LTR,LTR,LTR,LTR, -}; +#define FriBidiPropertyBlockLevel8_2140 (FriBidiPropertyBlockLevel8 + 0x378) + + ON, ON, ON, ON, ON,LTR,LTR,LTR, + +#define FriBidiPropertyBlockLevel8_2148 (FriBidiPropertyBlockLevel8 + 0x380) + + LTR,LTR, ON, ON,LTR,LTR,LTR,LTR, + +#define FriBidiPropertyBlockLevel8_2210 (FriBidiPropertyBlockLevel8 + 0x388) -FriBidiPropCharType FriBidiPropertyBlockLevel8_2210[8] = { ON, ON, ET, ET, ON, ON, ON, ON, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_2378[8] = { - LTR,LTR,LTR, ON,LTR, ON, ON, ON, -}; +#define FriBidiPropertyBlockLevel8_2390 (FriBidiPropertyBlockLevel8 + 0x390) -FriBidiPropCharType FriBidiPropertyBlockLevel8_2390[8] = { ON, ON, ON, ON, ON,LTR, ON, ON, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_2398[8] = { +#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, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_2498[8] = { +#define FriBidiPropertyBlockLevel8_2498 (FriBidiPropertyBlockLevel8 + 0x3A8) + EN, EN, EN, EN,LTR,LTR,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_24E8[8] = { - LTR,LTR, EN,LTR,LTR,LTR,LTR,LTR, -}; +#define FriBidiPropertyBlockLevel8_24E8 (FriBidiPropertyBlockLevel8 + 0x3B0) + + LTR,LTR, EN, ON, ON, ON, ON, ON, + +#define FriBidiPropertyBlockLevel8_2610 (FriBidiPropertyBlockLevel8 + 0x3B8) + + ON, ON, ON, ON,LTR,LTR, ON, ON, + +#define FriBidiPropertyBlockLevel8_2618 (FriBidiPropertyBlockLevel8 + 0x3C0) -FriBidiPropCharType FriBidiPropertyBlockLevel8_2618[8] = { LTR, ON, ON, ON, ON, ON, ON, ON, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_2700[8] = { +#define FriBidiPropertyBlockLevel8_2700 (FriBidiPropertyBlockLevel8 + 0x3C8) + LTR, ON, ON, ON, ON,LTR, ON, ON, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_2708[8] = { +#define FriBidiPropertyBlockLevel8_2708 (FriBidiPropertyBlockLevel8 + 0x3D0) + ON, ON,LTR,LTR, ON, ON, ON, ON, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_2750[8] = { +#define FriBidiPropertyBlockLevel8_2750 (FriBidiPropertyBlockLevel8 + 0x3D8) + ON, ON, ON,LTR,LTR,LTR, ON,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_2770[8] = { - LTR,LTR,LTR,LTR,LTR,LTR, ON, ON, -}; +#define FriBidiPropertyBlockLevel8_27E8 (FriBidiPropertyBlockLevel8 + 0x3E0) -FriBidiPropCharType FriBidiPropertyBlockLevel8_2790[8] = { - ON, ON, ON, ON, ON,LTR,LTR,LTR, -}; + ON, ON, ON, ON,LTR,LTR,LTR,LTR, + +#define FriBidiPropertyBlockLevel8_3000 (FriBidiPropertyBlockLevel8 + 0x3E8) -FriBidiPropCharType FriBidiPropertyBlockLevel8_3000[8] = { WS, ON, ON, ON, ON,LTR,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_3028[8] = { +#define FriBidiPropertyBlockLevel8_3028 (FriBidiPropertyBlockLevel8 + 0x3F0) + LTR,LTR,NSM,NSM,NSM,NSM,NSM,NSM, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_3098[8] = { +#define FriBidiPropertyBlockLevel8_3098 (FriBidiPropertyBlockLevel8 + 0x3F8) + LTR,NSM,NSM, ON, ON,LTR,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_30F8[8] = { - LTR,LTR,LTR, ON,LTR,LTR,LTR,LTR, -}; +#define FriBidiPropertyBlockLevel8_30F8 (FriBidiPropertyBlockLevel8 + 0x400) -FriBidiPropCharType FriBidiPropertyBlockLevel8_A4B0[8] = { - ON, ON, ON, ON,LTR, ON, ON, ON, -}; + LTR,LTR,LTR, ON,LTR,LTR,LTR,LTR, -FriBidiPropCharType FriBidiPropertyBlockLevel8_A4C0[8] = { - ON,LTR, ON, ON, ON,LTR, ON,LTR, -}; +#define FriBidiPropertyBlockLevel8_FB18 (FriBidiPropertyBlockLevel8 + 0x408) -FriBidiPropCharType FriBidiPropertyBlockLevel8_FB18[8] = { LTR,LTR,LTR,LTR,LTR,RTL,NSM,RTL, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_FB28[8] = { +#define FriBidiPropertyBlockLevel8_FB28 (FriBidiPropertyBlockLevel8 + 0x410) + RTL, ET,RTL,RTL,RTL,RTL,RTL,RTL, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_FD38[8] = { +#define FriBidiPropertyBlockLevel8_FD38 (FriBidiPropertyBlockLevel8 + 0x418) + AL, AL, AL, AL, AL, AL, ON, ON, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_FE50[8] = { +#define FriBidiPropertyBlockLevel8_FE50 (FriBidiPropertyBlockLevel8 + 0x420) + CS, ON, CS,LTR, ON, CS, ON, ON, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_FE58[8] = { +#define FriBidiPropertyBlockLevel8_FE58 (FriBidiPropertyBlockLevel8 + 0x428) + ON, ON, ON, ON, ON, ON, ON, ET, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_FE60[8] = { +#define FriBidiPropertyBlockLevel8_FE60 (FriBidiPropertyBlockLevel8 + 0x430) + ON, ON, ET, ET, ON, ON, ON,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_FE68[8] = { +#define FriBidiPropertyBlockLevel8_FE68 (FriBidiPropertyBlockLevel8 + 0x438) + ON, ET, ET, ON,LTR,LTR,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_FF00[8] = { - LTR, ON, ON, ET, ET, ET, ON, ON, -}; +#define FriBidiPropertyBlockLevel8_FF00 (FriBidiPropertyBlockLevel8 + 0x440) -FriBidiPropCharType FriBidiPropertyBlockLevel8_FF58[8] = { - LTR,LTR,LTR, ON, ON, ON, ON,LTR, -}; + LTR, ON, ON, ET, ET, ET, ON, ON, -FriBidiPropCharType FriBidiPropertyBlockLevel8_FF60[8] = { - LTR, ON, ON, ON, ON, ON,LTR,LTR, -}; +#define FriBidiPropertyBlockLevel8_FFE0 (FriBidiPropertyBlockLevel8 + 0x448) -FriBidiPropCharType FriBidiPropertyBlockLevel8_FFE0[8] = { ET, ET, ON, ON, ON, ET, ET,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_FFF8[8] = { +#define FriBidiPropertyBlockLevel8_FFF8 (FriBidiPropertyBlockLevel8 + 0x450) + LTR, BN, BN, BN, ON, ON,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_1D170[8] = { +#define FriBidiPropertyBlockLevel8_1D170 (FriBidiPropertyBlockLevel8 + 0x458) + LTR,LTR,LTR, BN, BN, BN, BN, BN, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_1D178[8] = { +#define FriBidiPropertyBlockLevel8_1D178 (FriBidiPropertyBlockLevel8 + 0x460) + BN, BN, BN,NSM,NSM,NSM,NSM,NSM, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_1D180[8] = { +#define FriBidiPropertyBlockLevel8_1D180 (FriBidiPropertyBlockLevel8 + 0x468) + NSM,NSM,NSM,LTR,LTR,NSM,NSM,NSM, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_1D1A8[8] = { +#define FriBidiPropertyBlockLevel8_1D1A8 (FriBidiPropertyBlockLevel8 + 0x470) + LTR,LTR,NSM,NSM,NSM,NSM,LTR,LTR, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_1D7C8[8] = { +#define FriBidiPropertyBlockLevel8_1D7C8 (FriBidiPropertyBlockLevel8 + 0x478) + LTR,LTR,LTR,LTR,LTR,LTR, EN, EN, -}; -FriBidiPropCharType FriBidiPropertyBlockLevel8_E0000[8] = { +#define FriBidiPropertyBlockLevel8_E0000 (FriBidiPropertyBlockLevel8 + 0x480) + LTR, BN,LTR,LTR,LTR,LTR,LTR,LTR, }; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0000[4] = { +static const FriBidiPropCharType *FriBidiPropertyBlockLevel7[4*131] = { + +#define FriBidiPropertyBlockLevel7_0000 (FriBidiPropertyBlockLevel7 + 0x0) + FriBidiPropertyBlockLevel8_0000, /* 0000..0007 */ FriBidiPropertyBlockLevel8_0008, /* 0008..000F */ FriBidiPropertyBlockLevel8_0000, /* 0010..0017 */ FriBidiPropertyBlockLevel8_0018, /* 0018..001F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0020[4] = { +#define FriBidiPropertyBlockLevel7_0020 (FriBidiPropertyBlockLevel7 + 0x4) + FriBidiPropertyBlockLevel8_0020, /* 0020..0027 */ FriBidiPropertyBlockLevel8_0028, /* 0028..002F */ FriBidiPropertyBlockLevel8_0030, /* 0030..0037 */ FriBidiPropertyBlockLevel8_0038, /* 0038..003F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0040[4] = { +#define FriBidiPropertyBlockLevel7_0040 (FriBidiPropertyBlockLevel7 + 0x8) + FriBidiPropertyBlockLevel8_0040, /* 0040..0047 */ FriBidiPropertyBlockLevel8_0048, /* 0048..004F */ FriBidiPropertyBlockLevel8_0048, /* 0050..0057 */ FriBidiPropertyBlockLevel8_0058, /* 0058..005F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0060[4] = { +#define FriBidiPropertyBlockLevel7_0060 (FriBidiPropertyBlockLevel7 + 0xC) + FriBidiPropertyBlockLevel8_0040, /* 0060..0067 */ FriBidiPropertyBlockLevel8_0048, /* 0068..006F */ FriBidiPropertyBlockLevel8_0048, /* 0070..0077 */ FriBidiPropertyBlockLevel8_0078, /* 0078..007F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0080[4] = { +#define FriBidiPropertyBlockLevel7_0080 (FriBidiPropertyBlockLevel7 + 0x10) + FriBidiPropertyBlockLevel8_0080, /* 0080..0087 */ FriBidiPropertyBlockLevel8_0000, /* 0088..008F */ FriBidiPropertyBlockLevel8_0000, /* 0090..0097 */ FriBidiPropertyBlockLevel8_0000, /* 0098..009F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_00A0[4] = { +#define FriBidiPropertyBlockLevel7_00A0 (FriBidiPropertyBlockLevel7 + 0x14) + FriBidiPropertyBlockLevel8_00A0, /* 00A0..00A7 */ FriBidiPropertyBlockLevel8_00A8, /* 00A8..00AF */ FriBidiPropertyBlockLevel8_00B0, /* 00B0..00B7 */ FriBidiPropertyBlockLevel8_00B8, /* 00B8..00BF */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_00C0[4] = { +#define FriBidiPropertyBlockLevel7_00C0 (FriBidiPropertyBlockLevel7 + 0x18) + FriBidiPropertyBlockLevel8_0048, /* 00C0..00C7 */ FriBidiPropertyBlockLevel8_0048, /* 00C8..00CF */ FriBidiPropertyBlockLevel8_00D0, /* 00D0..00D7 */ FriBidiPropertyBlockLevel8_0048, /* 00D8..00DF */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0100[4] = { +#define FriBidiPropertyBlockLevel7_0100 (FriBidiPropertyBlockLevel7 + 0x1C) + FriBidiPropertyBlockLevel8_0048, /* 0100..0107 */ FriBidiPropertyBlockLevel8_0048, /* 0108..010F */ FriBidiPropertyBlockLevel8_0048, /* 0110..0117 */ FriBidiPropertyBlockLevel8_0048, /* 0118..011F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_02A0[4] = { +#define FriBidiPropertyBlockLevel7_02A0 (FriBidiPropertyBlockLevel7 + 0x20) + FriBidiPropertyBlockLevel8_0048, /* 02A0..02A7 */ FriBidiPropertyBlockLevel8_0048, /* 02A8..02AF */ FriBidiPropertyBlockLevel8_0048, /* 02B0..02B7 */ FriBidiPropertyBlockLevel8_02B8, /* 02B8..02BF */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_02C0[4] = { +#define FriBidiPropertyBlockLevel7_02C0 (FriBidiPropertyBlockLevel7 + 0x24) + FriBidiPropertyBlockLevel8_02C0, /* 02C0..02C7 */ FriBidiPropertyBlockLevel8_02C8, /* 02C8..02CF */ FriBidiPropertyBlockLevel8_02C0, /* 02D0..02D7 */ FriBidiPropertyBlockLevel8_02C8, /* 02D8..02DF */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_02E0[4] = { +#define FriBidiPropertyBlockLevel7_02E0 (FriBidiPropertyBlockLevel7 + 0x28) + FriBidiPropertyBlockLevel8_02E0, /* 02E0..02E7 */ FriBidiPropertyBlockLevel8_02E8, /* 02E8..02EF */ FriBidiPropertyBlockLevel8_0048, /* 02F0..02F7 */ FriBidiPropertyBlockLevel8_0048, /* 02F8..02FF */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0300[4] = { +#define FriBidiPropertyBlockLevel7_0300 (FriBidiPropertyBlockLevel7 + 0x2C) + FriBidiPropertyBlockLevel8_0300, /* 0300..0307 */ FriBidiPropertyBlockLevel8_0300, /* 0308..030F */ FriBidiPropertyBlockLevel8_0300, /* 0310..0317 */ FriBidiPropertyBlockLevel8_0300, /* 0318..031F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0340[4] = { +#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 */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0360[4] = { - FriBidiPropertyBlockLevel8_0360, /* 0360..0367 */ - FriBidiPropertyBlockLevel8_0048, /* 0368..036F */ +#define FriBidiPropertyBlockLevel7_0360 (FriBidiPropertyBlockLevel7 + 0x34) + + FriBidiPropertyBlockLevel8_0300, /* 0360..0367 */ + FriBidiPropertyBlockLevel8_0300, /* 0368..036F */ FriBidiPropertyBlockLevel8_0370, /* 0370..0377 */ FriBidiPropertyBlockLevel8_0378, /* 0378..037F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0380[4] = { +#define FriBidiPropertyBlockLevel7_0380 (FriBidiPropertyBlockLevel7 + 0x38) + FriBidiPropertyBlockLevel8_0380, /* 0380..0387 */ FriBidiPropertyBlockLevel8_0048, /* 0388..038F */ FriBidiPropertyBlockLevel8_0048, /* 0390..0397 */ FriBidiPropertyBlockLevel8_0048, /* 0398..039F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0480[4] = { +#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 */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0580[4] = { +#define FriBidiPropertyBlockLevel7_0580 (FriBidiPropertyBlockLevel7 + 0x44) + FriBidiPropertyBlockLevel8_0048, /* 0580..0587 */ FriBidiPropertyBlockLevel8_0588, /* 0588..058F */ FriBidiPropertyBlockLevel8_0590, /* 0590..0597 */ FriBidiPropertyBlockLevel8_0300, /* 0598..059F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_05A0[4] = { +#define FriBidiPropertyBlockLevel7_05A0 (FriBidiPropertyBlockLevel7 + 0x48) + FriBidiPropertyBlockLevel8_05A0, /* 05A0..05A7 */ FriBidiPropertyBlockLevel8_0300, /* 05A8..05AF */ FriBidiPropertyBlockLevel8_0300, /* 05B0..05B7 */ FriBidiPropertyBlockLevel8_05B8, /* 05B8..05BF */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_05C0[4] = { +#define FriBidiPropertyBlockLevel7_05C0 (FriBidiPropertyBlockLevel7 + 0x4C) + FriBidiPropertyBlockLevel8_05C0, /* 05C0..05C7 */ FriBidiPropertyBlockLevel8_05C8, /* 05C8..05CF */ FriBidiPropertyBlockLevel8_05C8, /* 05D0..05D7 */ FriBidiPropertyBlockLevel8_05C8, /* 05D8..05DF */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_05E0[4] = { +#define FriBidiPropertyBlockLevel7_05E0 (FriBidiPropertyBlockLevel7 + 0x50) + FriBidiPropertyBlockLevel8_05C8, /* 05E0..05E7 */ FriBidiPropertyBlockLevel8_05C8, /* 05E8..05EF */ FriBidiPropertyBlockLevel8_05C8, /* 05F0..05F7 */ FriBidiPropertyBlockLevel8_05C8, /* 05F8..05FF */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0600[4] = { +#define FriBidiPropertyBlockLevel7_0600 (FriBidiPropertyBlockLevel7 + 0x54) + FriBidiPropertyBlockLevel8_0600, /* 0600..0607 */ FriBidiPropertyBlockLevel8_0608, /* 0608..060F */ FriBidiPropertyBlockLevel8_0600, /* 0610..0617 */ FriBidiPropertyBlockLevel8_0600, /* 0618..061F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0620[4] = { +#define FriBidiPropertyBlockLevel7_0620 (FriBidiPropertyBlockLevel7 + 0x58) + FriBidiPropertyBlockLevel8_0600, /* 0620..0627 */ FriBidiPropertyBlockLevel8_0600, /* 0628..062F */ FriBidiPropertyBlockLevel8_0600, /* 0630..0637 */ FriBidiPropertyBlockLevel8_0600, /* 0638..063F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0640[4] = { +#define FriBidiPropertyBlockLevel7_0640 (FriBidiPropertyBlockLevel7 + 0x5C) + FriBidiPropertyBlockLevel8_0600, /* 0640..0647 */ FriBidiPropertyBlockLevel8_0648, /* 0648..064F */ FriBidiPropertyBlockLevel8_0650, /* 0650..0657 */ FriBidiPropertyBlockLevel8_0600, /* 0658..065F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0660[4] = { +#define FriBidiPropertyBlockLevel7_0660 (FriBidiPropertyBlockLevel7 + 0x60) + FriBidiPropertyBlockLevel8_0660, /* 0660..0667 */ FriBidiPropertyBlockLevel8_0668, /* 0668..066F */ FriBidiPropertyBlockLevel8_0670, /* 0670..0677 */ FriBidiPropertyBlockLevel8_0600, /* 0678..067F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_06C0[4] = { +#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 + 0x68) -FriBidiPropCharType *FriBidiPropertyBlockLevel7_06E0[4] = { FriBidiPropertyBlockLevel8_06E0, /* 06E0..06E7 */ FriBidiPropertyBlockLevel8_06E8, /* 06E8..06EF */ FriBidiPropertyBlockLevel8_0030, /* 06F0..06F7 */ FriBidiPropertyBlockLevel8_06F8, /* 06F8..06FF */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0700[4] = { +#define FriBidiPropertyBlockLevel7_0700 (FriBidiPropertyBlockLevel7 + 0x6C) + FriBidiPropertyBlockLevel8_0600, /* 0700..0707 */ FriBidiPropertyBlockLevel8_0708, /* 0708..070F */ FriBidiPropertyBlockLevel8_0710, /* 0710..0717 */ FriBidiPropertyBlockLevel8_0600, /* 0718..071F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0720[4] = { +#define FriBidiPropertyBlockLevel7_0720 (FriBidiPropertyBlockLevel7 + 0x70) + FriBidiPropertyBlockLevel8_0600, /* 0720..0727 */ FriBidiPropertyBlockLevel8_0600, /* 0728..072F */ FriBidiPropertyBlockLevel8_0300, /* 0730..0737 */ FriBidiPropertyBlockLevel8_0300, /* 0738..073F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0740[4] = { +#define FriBidiPropertyBlockLevel7_0740 (FriBidiPropertyBlockLevel7 + 0x74) + FriBidiPropertyBlockLevel8_0300, /* 0740..0747 */ FriBidiPropertyBlockLevel8_0748, /* 0748..074F */ FriBidiPropertyBlockLevel8_0600, /* 0750..0757 */ FriBidiPropertyBlockLevel8_0600, /* 0758..075F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_07A0[4] = { +#define FriBidiPropertyBlockLevel7_07A0 (FriBidiPropertyBlockLevel7 + 0x78) + FriBidiPropertyBlockLevel8_06D0, /* 07A0..07A7 */ FriBidiPropertyBlockLevel8_0300, /* 07A8..07AF */ FriBidiPropertyBlockLevel8_0670, /* 07B0..07B7 */ FriBidiPropertyBlockLevel8_0600, /* 07B8..07BF */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0900[4] = { +#define FriBidiPropertyBlockLevel7_0900 (FriBidiPropertyBlockLevel7 + 0x7C) + FriBidiPropertyBlockLevel8_0900, /* 0900..0907 */ FriBidiPropertyBlockLevel8_0048, /* 0908..090F */ FriBidiPropertyBlockLevel8_0048, /* 0910..0917 */ FriBidiPropertyBlockLevel8_0048, /* 0918..091F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0920[4] = { +#define FriBidiPropertyBlockLevel7_0920 (FriBidiPropertyBlockLevel7 + 0x80) + FriBidiPropertyBlockLevel8_0048, /* 0920..0927 */ FriBidiPropertyBlockLevel8_0048, /* 0928..092F */ FriBidiPropertyBlockLevel8_0048, /* 0930..0937 */ FriBidiPropertyBlockLevel8_0938, /* 0938..093F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0940[4] = { +#define FriBidiPropertyBlockLevel7_0940 (FriBidiPropertyBlockLevel7 + 0x84) + FriBidiPropertyBlockLevel8_0940, /* 0940..0947 */ FriBidiPropertyBlockLevel8_0948, /* 0948..094F */ FriBidiPropertyBlockLevel8_0950, /* 0950..0957 */ FriBidiPropertyBlockLevel8_0048, /* 0958..095F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0960[4] = { +#define FriBidiPropertyBlockLevel7_0960 (FriBidiPropertyBlockLevel7 + 0x88) + FriBidiPropertyBlockLevel8_0960, /* 0960..0967 */ FriBidiPropertyBlockLevel8_0048, /* 0968..096F */ FriBidiPropertyBlockLevel8_0048, /* 0970..0977 */ FriBidiPropertyBlockLevel8_0048, /* 0978..097F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0980[4] = { +#define FriBidiPropertyBlockLevel7_0980 (FriBidiPropertyBlockLevel7 + 0x8C) + FriBidiPropertyBlockLevel8_0980, /* 0980..0987 */ FriBidiPropertyBlockLevel8_0048, /* 0988..098F */ FriBidiPropertyBlockLevel8_0048, /* 0990..0997 */ FriBidiPropertyBlockLevel8_0048, /* 0998..099F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_09C0[4] = { +#define FriBidiPropertyBlockLevel7_09C0 (FriBidiPropertyBlockLevel7 + 0x90) + FriBidiPropertyBlockLevel8_0950, /* 09C0..09C7 */ FriBidiPropertyBlockLevel8_09C8, /* 09C8..09CF */ FriBidiPropertyBlockLevel8_0048, /* 09D0..09D7 */ FriBidiPropertyBlockLevel8_0048, /* 09D8..09DF */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_09E0[4] = { +#define FriBidiPropertyBlockLevel7_09E0 (FriBidiPropertyBlockLevel7 + 0x94) + FriBidiPropertyBlockLevel8_0960, /* 09E0..09E7 */ FriBidiPropertyBlockLevel8_0048, /* 09E8..09EF */ FriBidiPropertyBlockLevel8_09F0, /* 09F0..09F7 */ FriBidiPropertyBlockLevel8_0048, /* 09F8..09FF */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0A00[4] = { +#define FriBidiPropertyBlockLevel7_0A00 (FriBidiPropertyBlockLevel7 + 0x98) + FriBidiPropertyBlockLevel8_0A00, /* 0A00..0A07 */ FriBidiPropertyBlockLevel8_0048, /* 0A08..0A0F */ FriBidiPropertyBlockLevel8_0048, /* 0A10..0A17 */ FriBidiPropertyBlockLevel8_0048, /* 0A18..0A1F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0A40[4] = { +#define FriBidiPropertyBlockLevel7_0A40 (FriBidiPropertyBlockLevel7 + 0x9C) + FriBidiPropertyBlockLevel8_0A40, /* 0A40..0A47 */ FriBidiPropertyBlockLevel8_0A48, /* 0A48..0A4F */ FriBidiPropertyBlockLevel8_0048, /* 0A50..0A57 */ FriBidiPropertyBlockLevel8_0048, /* 0A58..0A5F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0A60[4] = { +#define FriBidiPropertyBlockLevel7_0A60 (FriBidiPropertyBlockLevel7 + 0xA0) + FriBidiPropertyBlockLevel8_0048, /* 0A60..0A67 */ FriBidiPropertyBlockLevel8_0048, /* 0A68..0A6F */ FriBidiPropertyBlockLevel8_0488, /* 0A70..0A77 */ FriBidiPropertyBlockLevel8_0048, /* 0A78..0A7F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0AC0[4] = { +#define FriBidiPropertyBlockLevel7_0AC0 (FriBidiPropertyBlockLevel7 + 0xA4) + FriBidiPropertyBlockLevel8_0AC0, /* 0AC0..0AC7 */ FriBidiPropertyBlockLevel8_0948, /* 0AC8..0ACF */ FriBidiPropertyBlockLevel8_0048, /* 0AD0..0AD7 */ FriBidiPropertyBlockLevel8_0048, /* 0AD8..0ADF */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0B20[4] = { +#define FriBidiPropertyBlockLevel7_0B20 (FriBidiPropertyBlockLevel7 + 0xA8) + FriBidiPropertyBlockLevel8_0048, /* 0B20..0B27 */ FriBidiPropertyBlockLevel8_0048, /* 0B28..0B2F */ FriBidiPropertyBlockLevel8_0048, /* 0B30..0B37 */ FriBidiPropertyBlockLevel8_0B38, /* 0B38..0B3F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0B40[4] = { +#define FriBidiPropertyBlockLevel7_0B40 (FriBidiPropertyBlockLevel7 + 0xAC) + FriBidiPropertyBlockLevel8_0B40, /* 0B40..0B47 */ FriBidiPropertyBlockLevel8_09C8, /* 0B48..0B4F */ FriBidiPropertyBlockLevel8_0B50, /* 0B50..0B57 */ FriBidiPropertyBlockLevel8_0048, /* 0B58..0B5F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0BC0[4] = { +#define FriBidiPropertyBlockLevel7_0BC0 (FriBidiPropertyBlockLevel7 + 0xB0) + FriBidiPropertyBlockLevel8_0BC0, /* 0BC0..0BC7 */ FriBidiPropertyBlockLevel8_09C8, /* 0BC8..0BCF */ FriBidiPropertyBlockLevel8_0048, /* 0BD0..0BD7 */ FriBidiPropertyBlockLevel8_0048, /* 0BD8..0BDF */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0C20[4] = { +#define FriBidiPropertyBlockLevel7_0C20 (FriBidiPropertyBlockLevel7 + 0xB4) + FriBidiPropertyBlockLevel8_0048, /* 0C20..0C27 */ FriBidiPropertyBlockLevel8_0048, /* 0C28..0C2F */ FriBidiPropertyBlockLevel8_0048, /* 0C30..0C37 */ FriBidiPropertyBlockLevel8_0C38, /* 0C38..0C3F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0C40[4] = { +#define FriBidiPropertyBlockLevel7_0C40 (FriBidiPropertyBlockLevel7 + 0xB8) + FriBidiPropertyBlockLevel8_0C40, /* 0C40..0C47 */ FriBidiPropertyBlockLevel8_0C48, /* 0C48..0C4F */ FriBidiPropertyBlockLevel8_0C50, /* 0C50..0C57 */ FriBidiPropertyBlockLevel8_0048, /* 0C58..0C5F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0CA0[4] = { +#define FriBidiPropertyBlockLevel7_0CA0 (FriBidiPropertyBlockLevel7 + 0xBC) + FriBidiPropertyBlockLevel8_0048, /* 0CA0..0CA7 */ FriBidiPropertyBlockLevel8_0048, /* 0CA8..0CAF */ FriBidiPropertyBlockLevel8_0048, /* 0CB0..0CB7 */ FriBidiPropertyBlockLevel8_0CB8, /* 0CB8..0CBF */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0CC0[4] = { +#define FriBidiPropertyBlockLevel7_0CC0 (FriBidiPropertyBlockLevel7 + 0xC0) + FriBidiPropertyBlockLevel8_0B50, /* 0CC0..0CC7 */ FriBidiPropertyBlockLevel8_0CC8, /* 0CC8..0CCF */ FriBidiPropertyBlockLevel8_0048, /* 0CD0..0CD7 */ FriBidiPropertyBlockLevel8_0048, /* 0CD8..0CDF */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0D40[4] = { +#define FriBidiPropertyBlockLevel7_0D40 (FriBidiPropertyBlockLevel7 + 0xC4) + FriBidiPropertyBlockLevel8_0B40, /* 0D40..0D47 */ FriBidiPropertyBlockLevel8_09C8, /* 0D48..0D4F */ FriBidiPropertyBlockLevel8_0048, /* 0D50..0D57 */ FriBidiPropertyBlockLevel8_0048, /* 0D58..0D5F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0DC0[4] = { +#define FriBidiPropertyBlockLevel7_0DC0 (FriBidiPropertyBlockLevel7 + 0xC8) + FriBidiPropertyBlockLevel8_0048, /* 0DC0..0DC7 */ FriBidiPropertyBlockLevel8_0A00, /* 0DC8..0DCF */ FriBidiPropertyBlockLevel8_0DD0, /* 0DD0..0DD7 */ FriBidiPropertyBlockLevel8_0048, /* 0DD8..0DDF */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0E20[4] = { +#define FriBidiPropertyBlockLevel7_0E20 (FriBidiPropertyBlockLevel7 + 0xCC) + FriBidiPropertyBlockLevel8_0048, /* 0E20..0E27 */ FriBidiPropertyBlockLevel8_0048, /* 0E28..0E2F */ FriBidiPropertyBlockLevel8_0E30, /* 0E30..0E37 */ FriBidiPropertyBlockLevel8_0E38, /* 0E38..0E3F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0E40[4] = { +#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 */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0EA0[4] = { +#define FriBidiPropertyBlockLevel7_0EA0 (FriBidiPropertyBlockLevel7 + 0xD4) + FriBidiPropertyBlockLevel8_0048, /* 0EA0..0EA7 */ FriBidiPropertyBlockLevel8_0048, /* 0EA8..0EAF */ FriBidiPropertyBlockLevel8_0E30, /* 0EB0..0EB7 */ FriBidiPropertyBlockLevel8_0EB8, /* 0EB8..0EBF */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0EC0[4] = { +#define FriBidiPropertyBlockLevel7_0EC0 (FriBidiPropertyBlockLevel7 + 0xD8) + FriBidiPropertyBlockLevel8_0048, /* 0EC0..0EC7 */ FriBidiPropertyBlockLevel8_0EC8, /* 0EC8..0ECF */ FriBidiPropertyBlockLevel8_0048, /* 0ED0..0ED7 */ FriBidiPropertyBlockLevel8_0048, /* 0ED8..0EDF */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0F00[4] = { +#define FriBidiPropertyBlockLevel7_0F00 (FriBidiPropertyBlockLevel7 + 0xDC) + FriBidiPropertyBlockLevel8_0048, /* 0F00..0F07 */ FriBidiPropertyBlockLevel8_0048, /* 0F08..0F0F */ FriBidiPropertyBlockLevel8_0048, /* 0F10..0F17 */ FriBidiPropertyBlockLevel8_0488, /* 0F18..0F1F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0F20[4] = { +#define FriBidiPropertyBlockLevel7_0F20 (FriBidiPropertyBlockLevel7 + 0xE0) + FriBidiPropertyBlockLevel8_0048, /* 0F20..0F27 */ FriBidiPropertyBlockLevel8_0048, /* 0F28..0F2F */ FriBidiPropertyBlockLevel8_0F30, /* 0F30..0F37 */ FriBidiPropertyBlockLevel8_0F38, /* 0F38..0F3F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0F60[4] = { +#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 + 0xE8) -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0F80[4] = { FriBidiPropertyBlockLevel8_0F80, /* 0F80..0F87 */ FriBidiPropertyBlockLevel8_0048, /* 0F88..0F8F */ FriBidiPropertyBlockLevel8_0300, /* 0F90..0F97 */ FriBidiPropertyBlockLevel8_0940, /* 0F98..0F9F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0FA0[4] = { +#define FriBidiPropertyBlockLevel7_0FA0 (FriBidiPropertyBlockLevel7 + 0xEC) + FriBidiPropertyBlockLevel8_0300, /* 0FA0..0FA7 */ FriBidiPropertyBlockLevel8_0300, /* 0FA8..0FAF */ FriBidiPropertyBlockLevel8_0300, /* 0FB0..0FB7 */ FriBidiPropertyBlockLevel8_0FB8, /* 0FB8..0FBF */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_0FC0[4] = { +#define FriBidiPropertyBlockLevel7_0FC0 (FriBidiPropertyBlockLevel7 + 0xF0) + FriBidiPropertyBlockLevel8_0B50, /* 0FC0..0FC7 */ FriBidiPropertyBlockLevel8_0048, /* 0FC8..0FCF */ FriBidiPropertyBlockLevel8_0048, /* 0FD0..0FD7 */ FriBidiPropertyBlockLevel8_0048, /* 0FD8..0FDF */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_1020[4] = { +#define FriBidiPropertyBlockLevel7_1020 (FriBidiPropertyBlockLevel7 + 0xF4) + FriBidiPropertyBlockLevel8_0048, /* 1020..1027 */ FriBidiPropertyBlockLevel8_1028, /* 1028..102F */ FriBidiPropertyBlockLevel8_1030, /* 1030..1037 */ FriBidiPropertyBlockLevel8_0980, /* 1038..103F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_1680[4] = { +#define FriBidiPropertyBlockLevel7_1680 (FriBidiPropertyBlockLevel7 + 0xF8) + FriBidiPropertyBlockLevel8_1680, /* 1680..1687 */ FriBidiPropertyBlockLevel8_0048, /* 1688..168F */ FriBidiPropertyBlockLevel8_0048, /* 1690..1697 */ FriBidiPropertyBlockLevel8_1698, /* 1698..169F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_17A0[4] = { +#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 */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_17C0[4] = { +#define FriBidiPropertyBlockLevel7_17C0 (FriBidiPropertyBlockLevel7 + 0x108) + FriBidiPropertyBlockLevel8_0B50, /* 17C0..17C7 */ FriBidiPropertyBlockLevel8_0940, /* 17C8..17CF */ FriBidiPropertyBlockLevel8_17D0, /* 17D0..17D7 */ FriBidiPropertyBlockLevel8_17D8, /* 17D8..17DF */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_1800[4] = { +#define FriBidiPropertyBlockLevel7_1800 (FriBidiPropertyBlockLevel7 + 0x10C) + FriBidiPropertyBlockLevel8_02C8, /* 1800..1807 */ FriBidiPropertyBlockLevel8_1808, /* 1808..180F */ FriBidiPropertyBlockLevel8_0048, /* 1810..1817 */ FriBidiPropertyBlockLevel8_0048, /* 1818..181F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_18A0[4] = { +#define FriBidiPropertyBlockLevel7_18A0 (FriBidiPropertyBlockLevel7 + 0x110) + FriBidiPropertyBlockLevel8_0048, /* 18A0..18A7 */ FriBidiPropertyBlockLevel8_0980, /* 18A8..18AF */ FriBidiPropertyBlockLevel8_0048, /* 18B0..18B7 */ FriBidiPropertyBlockLevel8_0048, /* 18B8..18BF */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_1FA0[4] = { +#define FriBidiPropertyBlockLevel7_1FA0 (FriBidiPropertyBlockLevel7 + 0x114) + FriBidiPropertyBlockLevel8_0048, /* 1FA0..1FA7 */ FriBidiPropertyBlockLevel8_0048, /* 1FA8..1FAF */ FriBidiPropertyBlockLevel8_0048, /* 1FB0..1FB7 */ FriBidiPropertyBlockLevel8_1FB8, /* 1FB8..1FBF */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_1FC0[4] = { +#define FriBidiPropertyBlockLevel7_1FC0 (FriBidiPropertyBlockLevel7 + 0x118) + FriBidiPropertyBlockLevel8_1FC0, /* 1FC0..1FC7 */ FriBidiPropertyBlockLevel8_02E0, /* 1FC8..1FCF */ FriBidiPropertyBlockLevel8_0048, /* 1FD0..1FD7 */ FriBidiPropertyBlockLevel8_02E0, /* 1FD8..1FDF */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_1FE0[4] = { +#define FriBidiPropertyBlockLevel7_1FE0 (FriBidiPropertyBlockLevel7 + 0x11C) + FriBidiPropertyBlockLevel8_0048, /* 1FE0..1FE7 */ FriBidiPropertyBlockLevel8_02E0, /* 1FE8..1FEF */ FriBidiPropertyBlockLevel8_0048, /* 1FF0..1FF7 */ FriBidiPropertyBlockLevel8_1FF8, /* 1FF8..1FFF */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_2000[4] = { +#define FriBidiPropertyBlockLevel7_2000 (FriBidiPropertyBlockLevel7 + 0x120) + FriBidiPropertyBlockLevel8_2000, /* 2000..2007 */ FriBidiPropertyBlockLevel8_2008, /* 2008..200F */ FriBidiPropertyBlockLevel8_02C8, /* 2010..2017 */ FriBidiPropertyBlockLevel8_02C8, /* 2018..201F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_2020[4] = { +#define FriBidiPropertyBlockLevel7_2020 (FriBidiPropertyBlockLevel7 + 0x124) + FriBidiPropertyBlockLevel8_02C8, /* 2020..2027 */ FriBidiPropertyBlockLevel8_2028, /* 2028..202F */ FriBidiPropertyBlockLevel8_2030, /* 2030..2037 */ FriBidiPropertyBlockLevel8_02C8, /* 2038..203F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_2040[4] = { - FriBidiPropertyBlockLevel8_2040, /* 2040..2047 */ - FriBidiPropertyBlockLevel8_02E8, /* 2048..204F */ - FriBidiPropertyBlockLevel8_0048, /* 2050..2057 */ - FriBidiPropertyBlockLevel8_0048, /* 2058..205F */ -}; +#define FriBidiPropertyBlockLevel7_2040 (FriBidiPropertyBlockLevel7 + 0x128) -FriBidiPropCharType *FriBidiPropertyBlockLevel7_2060[4] = { - FriBidiPropertyBlockLevel8_0048, /* 2060..2067 */ + FriBidiPropertyBlockLevel8_02C8, /* 2040..2047 */ + FriBidiPropertyBlockLevel8_02C8, /* 2048..204F */ + FriBidiPropertyBlockLevel8_2050, /* 2050..2057 */ + FriBidiPropertyBlockLevel8_2058, /* 2058..205F */ + +#define FriBidiPropertyBlockLevel7_2060 (FriBidiPropertyBlockLevel7 + 0x12C) + + FriBidiPropertyBlockLevel8_2060, /* 2060..2067 */ FriBidiPropertyBlockLevel8_2068, /* 2068..206F */ FriBidiPropertyBlockLevel8_2070, /* 2070..2077 */ FriBidiPropertyBlockLevel8_2078, /* 2078..207F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_2080[4] = { +#define FriBidiPropertyBlockLevel7_2080 (FriBidiPropertyBlockLevel7 + 0x130) + FriBidiPropertyBlockLevel8_0030, /* 2080..2087 */ FriBidiPropertyBlockLevel8_2078, /* 2088..208F */ FriBidiPropertyBlockLevel8_0048, /* 2090..2097 */ FriBidiPropertyBlockLevel8_0048, /* 2098..209F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_20A0[4] = { +#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 */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_20C0[4] = { +#define FriBidiPropertyBlockLevel7_20C0 (FriBidiPropertyBlockLevel7 + 0x138) + FriBidiPropertyBlockLevel8_0048, /* 20C0..20C7 */ FriBidiPropertyBlockLevel8_0048, /* 20C8..20CF */ FriBidiPropertyBlockLevel8_0300, /* 20D0..20D7 */ FriBidiPropertyBlockLevel8_0300, /* 20D8..20DF */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_20E0[4] = { - FriBidiPropertyBlockLevel8_17D0, /* 20E0..20E7 */ - FriBidiPropertyBlockLevel8_0048, /* 20E8..20EF */ +#define FriBidiPropertyBlockLevel7_20E0 (FriBidiPropertyBlockLevel7 + 0x13C) + + FriBidiPropertyBlockLevel8_0300, /* 20E0..20E7 */ + FriBidiPropertyBlockLevel8_20E8, /* 20E8..20EF */ FriBidiPropertyBlockLevel8_0048, /* 20F0..20F7 */ FriBidiPropertyBlockLevel8_0048, /* 20F8..20FF */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_2100[4] = { +#define FriBidiPropertyBlockLevel7_2100 (FriBidiPropertyBlockLevel7 + 0x140) + FriBidiPropertyBlockLevel8_2100, /* 2100..2107 */ FriBidiPropertyBlockLevel8_1FC0, /* 2108..210F */ FriBidiPropertyBlockLevel8_2110, /* 2110..2117 */ FriBidiPropertyBlockLevel8_2118, /* 2118..211F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_2120[4] = { +#define FriBidiPropertyBlockLevel7_2120 (FriBidiPropertyBlockLevel7 + 0x144) + FriBidiPropertyBlockLevel8_2120, /* 2120..2127 */ FriBidiPropertyBlockLevel8_2128, /* 2128..212F */ FriBidiPropertyBlockLevel8_0588, /* 2130..2137 */ FriBidiPropertyBlockLevel8_0588, /* 2138..213F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_2140[4] = { - FriBidiPropertyBlockLevel8_0048, /* 2140..2147 */ - FriBidiPropertyBlockLevel8_0048, /* 2148..214F */ +#define FriBidiPropertyBlockLevel7_2140 (FriBidiPropertyBlockLevel7 + 0x148) + + FriBidiPropertyBlockLevel8_2140, /* 2140..2147 */ + FriBidiPropertyBlockLevel8_2148, /* 2148..214F */ FriBidiPropertyBlockLevel8_0058, /* 2150..2157 */ FriBidiPropertyBlockLevel8_02C8, /* 2158..215F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_2180[4] = { +#define FriBidiPropertyBlockLevel7_2180 (FriBidiPropertyBlockLevel7 + 0x14C) + FriBidiPropertyBlockLevel8_0048, /* 2180..2187 */ FriBidiPropertyBlockLevel8_0048, /* 2188..218F */ FriBidiPropertyBlockLevel8_02C8, /* 2190..2197 */ FriBidiPropertyBlockLevel8_02C8, /* 2198..219F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_21A0[4] = { +#define FriBidiPropertyBlockLevel7_21A0 (FriBidiPropertyBlockLevel7 + 0x150) + FriBidiPropertyBlockLevel8_02C8, /* 21A0..21A7 */ FriBidiPropertyBlockLevel8_02C8, /* 21A8..21AF */ FriBidiPropertyBlockLevel8_02C8, /* 21B0..21B7 */ FriBidiPropertyBlockLevel8_02C8, /* 21B8..21BF */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_21E0[4] = { - FriBidiPropertyBlockLevel8_02C8, /* 21E0..21E7 */ - FriBidiPropertyBlockLevel8_02C8, /* 21E8..21EF */ - FriBidiPropertyBlockLevel8_21F0, /* 21F0..21F7 */ - FriBidiPropertyBlockLevel8_0048, /* 21F8..21FF */ -}; +#define FriBidiPropertyBlockLevel7_2200 (FriBidiPropertyBlockLevel7 + 0x154) -FriBidiPropCharType *FriBidiPropertyBlockLevel7_2200[4] = { FriBidiPropertyBlockLevel8_02C8, /* 2200..2207 */ FriBidiPropertyBlockLevel8_02C8, /* 2208..220F */ FriBidiPropertyBlockLevel8_2210, /* 2210..2217 */ FriBidiPropertyBlockLevel8_02C8, /* 2218..221F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_22E0[4] = { - FriBidiPropertyBlockLevel8_02C8, /* 22E0..22E7 */ - FriBidiPropertyBlockLevel8_02C8, /* 22E8..22EF */ - FriBidiPropertyBlockLevel8_1FC0, /* 22F0..22F7 */ - FriBidiPropertyBlockLevel8_0048, /* 22F8..22FF */ -}; +#define FriBidiPropertyBlockLevel7_2320 (FriBidiPropertyBlockLevel7 + 0x158) -FriBidiPropCharType *FriBidiPropertyBlockLevel7_2320[4] = { FriBidiPropertyBlockLevel8_02C8, /* 2320..2327 */ FriBidiPropertyBlockLevel8_02C8, /* 2328..232F */ FriBidiPropertyBlockLevel8_02E8, /* 2330..2337 */ FriBidiPropertyBlockLevel8_0048, /* 2338..233F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_2360[4] = { +#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 + 0x160) -FriBidiPropCharType *FriBidiPropertyBlockLevel7_2380[4] = { 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) + + FriBidiPropertyBlockLevel8_02C8, /* 23C0..23C7 */ + FriBidiPropertyBlockLevel8_23C8, /* 23C8..23CF */ + FriBidiPropertyBlockLevel8_0048, /* 23D0..23D7 */ + FriBidiPropertyBlockLevel8_0048, /* 23D8..23DF */ + +#define FriBidiPropertyBlockLevel7_2420 (FriBidiPropertyBlockLevel7 + 0x168) -FriBidiPropCharType *FriBidiPropertyBlockLevel7_2420[4] = { - FriBidiPropertyBlockLevel8_2040, /* 2420..2427 */ + FriBidiPropertyBlockLevel8_23C8, /* 2420..2427 */ FriBidiPropertyBlockLevel8_0048, /* 2428..242F */ FriBidiPropertyBlockLevel8_0048, /* 2430..2437 */ FriBidiPropertyBlockLevel8_0048, /* 2438..243F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_2440[4] = { +#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 */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_2460[4] = { +#define FriBidiPropertyBlockLevel7_2460 (FriBidiPropertyBlockLevel7 + 0x170) + FriBidiPropertyBlockLevel8_0030, /* 2460..2467 */ FriBidiPropertyBlockLevel8_0030, /* 2468..246F */ FriBidiPropertyBlockLevel8_0030, /* 2470..2477 */ FriBidiPropertyBlockLevel8_0030, /* 2478..247F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_2480[4] = { +#define FriBidiPropertyBlockLevel7_2480 (FriBidiPropertyBlockLevel7 + 0x174) + FriBidiPropertyBlockLevel8_0030, /* 2480..2487 */ FriBidiPropertyBlockLevel8_0030, /* 2488..248F */ FriBidiPropertyBlockLevel8_0030, /* 2490..2497 */ FriBidiPropertyBlockLevel8_2498, /* 2498..249F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_24E0[4] = { +#define FriBidiPropertyBlockLevel7_24E0 (FriBidiPropertyBlockLevel7 + 0x178) + FriBidiPropertyBlockLevel8_0048, /* 24E0..24E7 */ FriBidiPropertyBlockLevel8_24E8, /* 24E8..24EF */ - FriBidiPropertyBlockLevel8_0048, /* 24F0..24F7 */ - FriBidiPropertyBlockLevel8_0048, /* 24F8..24FF */ -}; + FriBidiPropertyBlockLevel8_02C8, /* 24F0..24F7 */ + FriBidiPropertyBlockLevel8_23C8, /* 24F8..24FF */ -FriBidiPropCharType *FriBidiPropertyBlockLevel7_25E0[4] = { - FriBidiPropertyBlockLevel8_02C8, /* 25E0..25E7 */ - FriBidiPropertyBlockLevel8_02C8, /* 25E8..25EF */ - FriBidiPropertyBlockLevel8_02C8, /* 25F0..25F7 */ - FriBidiPropertyBlockLevel8_0048, /* 25F8..25FF */ -}; +#define FriBidiPropertyBlockLevel7_2600 (FriBidiPropertyBlockLevel7 + 0x17C) -FriBidiPropCharType *FriBidiPropertyBlockLevel7_2600[4] = { FriBidiPropertyBlockLevel8_02C8, /* 2600..2607 */ FriBidiPropertyBlockLevel8_02C8, /* 2608..260F */ - FriBidiPropertyBlockLevel8_21F0, /* 2610..2617 */ + FriBidiPropertyBlockLevel8_2610, /* 2610..2617 */ FriBidiPropertyBlockLevel8_2618, /* 2618..261F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_2700[4] = { +#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 */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_2720[4] = { +#define FriBidiPropertyBlockLevel7_2720 (FriBidiPropertyBlockLevel7 + 0x18C) + FriBidiPropertyBlockLevel8_02C8, /* 2720..2727 */ FriBidiPropertyBlockLevel8_2618, /* 2728..272F */ FriBidiPropertyBlockLevel8_02C8, /* 2730..2737 */ FriBidiPropertyBlockLevel8_02C8, /* 2738..273F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_2740[4] = { +#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 + 0x194) -FriBidiPropCharType *FriBidiPropertyBlockLevel7_2760[4] = { FriBidiPropertyBlockLevel8_2618, /* 2760..2767 */ - FriBidiPropertyBlockLevel8_0048, /* 2768..276F */ - FriBidiPropertyBlockLevel8_2770, /* 2770..2777 */ + FriBidiPropertyBlockLevel8_02C8, /* 2768..276F */ + FriBidiPropertyBlockLevel8_02C8, /* 2770..2777 */ FriBidiPropertyBlockLevel8_02C8, /* 2778..277F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_2780[4] = { +#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 */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_27A0[4] = { +#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 + 0x1A4) -FriBidiPropCharType *FriBidiPropertyBlockLevel7_2E80[4] = { FriBidiPropertyBlockLevel8_02C8, /* 2E80..2E87 */ FriBidiPropertyBlockLevel8_02C8, /* 2E88..2E8F */ FriBidiPropertyBlockLevel8_02C8, /* 2E90..2E97 */ FriBidiPropertyBlockLevel8_00A8, /* 2E98..2E9F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_2FE0[4] = { +#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 + 0x1B0) -FriBidiPropCharType *FriBidiPropertyBlockLevel7_3000[4] = { FriBidiPropertyBlockLevel8_3000, /* 3000..3007 */ FriBidiPropertyBlockLevel8_02C8, /* 3008..300F */ FriBidiPropertyBlockLevel8_02C8, /* 3010..3017 */ FriBidiPropertyBlockLevel8_02C8, /* 3018..301F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_3020[4] = { +#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 + 0x1B8) -FriBidiPropCharType *FriBidiPropertyBlockLevel7_3080[4] = { FriBidiPropertyBlockLevel8_0048, /* 3080..3087 */ FriBidiPropertyBlockLevel8_0048, /* 3088..308F */ FriBidiPropertyBlockLevel8_0048, /* 3090..3097 */ FriBidiPropertyBlockLevel8_3098, /* 3098..309F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_30E0[4] = { +#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 */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_A4A0[4] = { - FriBidiPropertyBlockLevel8_2708, /* A4A0..A4A7 */ - FriBidiPropertyBlockLevel8_02C8, /* A4A8..A4AF */ - FriBidiPropertyBlockLevel8_A4B0, /* A4B0..A4B7 */ - FriBidiPropertyBlockLevel8_02C8, /* A4B8..A4BF */ -}; +#define FriBidiPropertyBlockLevel7_3240 (FriBidiPropertyBlockLevel7 + 0x1C4) -FriBidiPropCharType *FriBidiPropertyBlockLevel7_A4C0[4] = { - FriBidiPropertyBlockLevel8_A4C0, /* A4C0..A4C7 */ - FriBidiPropertyBlockLevel8_0048, /* A4C8..A4CF */ - FriBidiPropertyBlockLevel8_0048, /* A4D0..A4D7 */ - FriBidiPropertyBlockLevel8_0048, /* A4D8..A4DF */ -}; + FriBidiPropertyBlockLevel8_0048, /* 3240..3247 */ + FriBidiPropertyBlockLevel8_0048, /* 3248..324F */ + FriBidiPropertyBlockLevel8_2618, /* 3250..3257 */ + FriBidiPropertyBlockLevel8_02C8, /* 3258..325F */ + +#define FriBidiPropertyBlockLevel7_FB00 (FriBidiPropertyBlockLevel7 + 0x1C8) -FriBidiPropCharType *FriBidiPropertyBlockLevel7_FB00[4] = { FriBidiPropertyBlockLevel8_0048, /* FB00..FB07 */ FriBidiPropertyBlockLevel8_0048, /* FB08..FB0F */ FriBidiPropertyBlockLevel8_0048, /* FB10..FB17 */ FriBidiPropertyBlockLevel8_FB18, /* FB18..FB1F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_FB20[4] = { +#define FriBidiPropertyBlockLevel7_FB20 (FriBidiPropertyBlockLevel7 + 0x1CC) + FriBidiPropertyBlockLevel8_05C8, /* FB20..FB27 */ FriBidiPropertyBlockLevel8_FB28, /* FB28..FB2F */ FriBidiPropertyBlockLevel8_05C8, /* FB30..FB37 */ FriBidiPropertyBlockLevel8_05C8, /* FB38..FB3F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_FB40[4] = { +#define FriBidiPropertyBlockLevel7_FB40 (FriBidiPropertyBlockLevel7 + 0x1D0) + FriBidiPropertyBlockLevel8_05C8, /* FB40..FB47 */ FriBidiPropertyBlockLevel8_05C8, /* FB48..FB4F */ FriBidiPropertyBlockLevel8_0600, /* FB50..FB57 */ FriBidiPropertyBlockLevel8_0600, /* FB58..FB5F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_FD20[4] = { +#define FriBidiPropertyBlockLevel7_FD20 (FriBidiPropertyBlockLevel7 + 0x1D4) + FriBidiPropertyBlockLevel8_0600, /* FD20..FD27 */ FriBidiPropertyBlockLevel8_0600, /* FD28..FD2F */ FriBidiPropertyBlockLevel8_0600, /* FD30..FD37 */ FriBidiPropertyBlockLevel8_FD38, /* FD38..FD3F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_FE20[4] = { +#define FriBidiPropertyBlockLevel7_FE20 (FriBidiPropertyBlockLevel7 + 0x1D8) + FriBidiPropertyBlockLevel8_17D0, /* FE20..FE27 */ FriBidiPropertyBlockLevel8_0048, /* FE28..FE2F */ FriBidiPropertyBlockLevel8_02C8, /* FE30..FE37 */ FriBidiPropertyBlockLevel8_02C8, /* FE38..FE3F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_FE40[4] = { - FriBidiPropertyBlockLevel8_2790, /* FE40..FE47 */ +#define FriBidiPropertyBlockLevel7_FE40 (FriBidiPropertyBlockLevel7 + 0x1DC) + + FriBidiPropertyBlockLevel8_23C8, /* FE40..FE47 */ FriBidiPropertyBlockLevel8_2618, /* FE48..FE4F */ FriBidiPropertyBlockLevel8_FE50, /* FE50..FE57 */ FriBidiPropertyBlockLevel8_FE58, /* FE58..FE5F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_FE60[4] = { +#define FriBidiPropertyBlockLevel7_FE60 (FriBidiPropertyBlockLevel7 + 0x1E0) + FriBidiPropertyBlockLevel8_FE60, /* FE60..FE67 */ FriBidiPropertyBlockLevel8_FE68, /* FE68..FE6F */ FriBidiPropertyBlockLevel8_0600, /* FE70..FE77 */ FriBidiPropertyBlockLevel8_0600, /* FE78..FE7F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_FEE0[4] = { +#define FriBidiPropertyBlockLevel7_FEE0 (FriBidiPropertyBlockLevel7 + 0x1E4) + FriBidiPropertyBlockLevel8_0600, /* FEE0..FEE7 */ FriBidiPropertyBlockLevel8_0600, /* FEE8..FEEF */ FriBidiPropertyBlockLevel8_0600, /* FEF0..FEF7 */ FriBidiPropertyBlockLevel8_0708, /* FEF8..FEFF */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_FF00[4] = { +#define FriBidiPropertyBlockLevel7_FF00 (FriBidiPropertyBlockLevel7 + 0x1E8) + FriBidiPropertyBlockLevel8_FF00, /* FF00..FF07 */ FriBidiPropertyBlockLevel8_0028, /* FF08..FF0F */ FriBidiPropertyBlockLevel8_0030, /* FF10..FF17 */ FriBidiPropertyBlockLevel8_0038, /* FF18..FF1F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_FF40[4] = { - FriBidiPropertyBlockLevel8_0040, /* FF40..FF47 */ - FriBidiPropertyBlockLevel8_0048, /* FF48..FF4F */ - FriBidiPropertyBlockLevel8_0048, /* FF50..FF57 */ - FriBidiPropertyBlockLevel8_FF58, /* FF58..FF5F */ -}; +#define FriBidiPropertyBlockLevel7_FF60 (FriBidiPropertyBlockLevel7 + 0x1EC) -FriBidiPropCharType *FriBidiPropertyBlockLevel7_FF60[4] = { - FriBidiPropertyBlockLevel8_FF60, /* FF60..FF67 */ + FriBidiPropertyBlockLevel8_02E8, /* FF60..FF67 */ FriBidiPropertyBlockLevel8_0048, /* FF68..FF6F */ FriBidiPropertyBlockLevel8_0048, /* FF70..FF77 */ FriBidiPropertyBlockLevel8_0048, /* FF78..FF7F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_FFE0[4] = { +#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 */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_1D160[4] = { +#define FriBidiPropertyBlockLevel7_1D160 (FriBidiPropertyBlockLevel7 + 0x1F4) + FriBidiPropertyBlockLevel8_0CB8, /* 1D160..1D167 */ FriBidiPropertyBlockLevel8_0488, /* 1D168..1D16F */ FriBidiPropertyBlockLevel8_1D170, /* 1D170..1D177 */ FriBidiPropertyBlockLevel8_1D178, /* 1D178..1D17F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_1D180[4] = { +#define FriBidiPropertyBlockLevel7_1D180 (FriBidiPropertyBlockLevel7 + 0x1F8) + FriBidiPropertyBlockLevel8_1D180, /* 1D180..1D187 */ FriBidiPropertyBlockLevel8_17D0, /* 1D188..1D18F */ FriBidiPropertyBlockLevel8_0048, /* 1D190..1D197 */ FriBidiPropertyBlockLevel8_0048, /* 1D198..1D19F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_1D1A0[4] = { +#define FriBidiPropertyBlockLevel7_1D1A0 (FriBidiPropertyBlockLevel7 + 0x1FC) + FriBidiPropertyBlockLevel8_0048, /* 1D1A0..1D1A7 */ FriBidiPropertyBlockLevel8_1D1A8, /* 1D1A8..1D1AF */ FriBidiPropertyBlockLevel8_0048, /* 1D1B0..1D1B7 */ FriBidiPropertyBlockLevel8_0048, /* 1D1B8..1D1BF */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_1D7C0[4] = { +#define FriBidiPropertyBlockLevel7_1D7C0 (FriBidiPropertyBlockLevel7 + 0x200) + FriBidiPropertyBlockLevel8_0048, /* 1D7C0..1D7C7 */ FriBidiPropertyBlockLevel8_1D7C8, /* 1D7C8..1D7CF */ FriBidiPropertyBlockLevel8_0030, /* 1D7D0..1D7D7 */ FriBidiPropertyBlockLevel8_0030, /* 1D7D8..1D7DF */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_E0000[4] = { +#define FriBidiPropertyBlockLevel7_E0000 (FriBidiPropertyBlockLevel7 + 0x204) + FriBidiPropertyBlockLevel8_E0000, /* E0000..E0007 */ FriBidiPropertyBlockLevel8_0048, /* E0008..E000F */ FriBidiPropertyBlockLevel8_0048, /* E0010..E0017 */ FriBidiPropertyBlockLevel8_0048, /* E0018..E001F */ -}; -FriBidiPropCharType *FriBidiPropertyBlockLevel7_E0020[4] = { +#define FriBidiPropertyBlockLevel7_E0020 (FriBidiPropertyBlockLevel7 + 0x208) + FriBidiPropertyBlockLevel8_0000, /* E0020..E0027 */ FriBidiPropertyBlockLevel8_0000, /* E0028..E002F */ FriBidiPropertyBlockLevel8_0000, /* E0030..E0037 */ FriBidiPropertyBlockLevel8_0000, /* E0038..E003F */ }; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_0000[4] = { +static const FriBidiPropCharType **FriBidiPropertyBlockLevel6[4*65] = { + +#define FriBidiPropertyBlockLevel6_0000 (FriBidiPropertyBlockLevel6 + 0x0) + FriBidiPropertyBlockLevel7_0000, /* 0000..001F */ FriBidiPropertyBlockLevel7_0020, /* 0020..003F */ FriBidiPropertyBlockLevel7_0040, /* 0040..005F */ FriBidiPropertyBlockLevel7_0060, /* 0060..007F */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_0080[4] = { +#define FriBidiPropertyBlockLevel6_0080 (FriBidiPropertyBlockLevel6 + 0x4) + FriBidiPropertyBlockLevel7_0080, /* 0080..009F */ FriBidiPropertyBlockLevel7_00A0, /* 00A0..00BF */ FriBidiPropertyBlockLevel7_00C0, /* 00C0..00DF */ FriBidiPropertyBlockLevel7_00C0, /* 00E0..00FF */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_0100[4] = { +#define FriBidiPropertyBlockLevel6_0100 (FriBidiPropertyBlockLevel6 + 0x8) + FriBidiPropertyBlockLevel7_0100, /* 0100..011F */ FriBidiPropertyBlockLevel7_0100, /* 0120..013F */ FriBidiPropertyBlockLevel7_0100, /* 0140..015F */ FriBidiPropertyBlockLevel7_0100, /* 0160..017F */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_0280[4] = { +#define FriBidiPropertyBlockLevel6_0280 (FriBidiPropertyBlockLevel6 + 0xC) + FriBidiPropertyBlockLevel7_0100, /* 0280..029F */ FriBidiPropertyBlockLevel7_02A0, /* 02A0..02BF */ FriBidiPropertyBlockLevel7_02C0, /* 02C0..02DF */ FriBidiPropertyBlockLevel7_02E0, /* 02E0..02FF */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_0300[4] = { +#define FriBidiPropertyBlockLevel6_0300 (FriBidiPropertyBlockLevel6 + 0x10) + FriBidiPropertyBlockLevel7_0300, /* 0300..031F */ FriBidiPropertyBlockLevel7_0300, /* 0320..033F */ FriBidiPropertyBlockLevel7_0340, /* 0340..035F */ FriBidiPropertyBlockLevel7_0360, /* 0360..037F */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_0380[4] = { +#define FriBidiPropertyBlockLevel6_0380 (FriBidiPropertyBlockLevel6 + 0x14) + 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) -FriBidiPropCharType **FriBidiPropertyBlockLevel6_0480[4] = { FriBidiPropertyBlockLevel7_0480, /* 0480..049F */ FriBidiPropertyBlockLevel7_0100, /* 04A0..04BF */ FriBidiPropertyBlockLevel7_0100, /* 04C0..04DF */ FriBidiPropertyBlockLevel7_0100, /* 04E0..04FF */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_0580[4] = { +#define FriBidiPropertyBlockLevel6_0580 (FriBidiPropertyBlockLevel6 + 0x1C) + FriBidiPropertyBlockLevel7_0580, /* 0580..059F */ FriBidiPropertyBlockLevel7_05A0, /* 05A0..05BF */ FriBidiPropertyBlockLevel7_05C0, /* 05C0..05DF */ FriBidiPropertyBlockLevel7_05E0, /* 05E0..05FF */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_0600[4] = { +#define FriBidiPropertyBlockLevel6_0600 (FriBidiPropertyBlockLevel6 + 0x20) + FriBidiPropertyBlockLevel7_0600, /* 0600..061F */ FriBidiPropertyBlockLevel7_0620, /* 0620..063F */ FriBidiPropertyBlockLevel7_0640, /* 0640..065F */ FriBidiPropertyBlockLevel7_0660, /* 0660..067F */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_0680[4] = { +#define FriBidiPropertyBlockLevel6_0680 (FriBidiPropertyBlockLevel6 + 0x24) + FriBidiPropertyBlockLevel7_0620, /* 0680..069F */ FriBidiPropertyBlockLevel7_0620, /* 06A0..06BF */ FriBidiPropertyBlockLevel7_06C0, /* 06C0..06DF */ FriBidiPropertyBlockLevel7_06E0, /* 06E0..06FF */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_0700[4] = { +#define FriBidiPropertyBlockLevel6_0700 (FriBidiPropertyBlockLevel6 + 0x28) + FriBidiPropertyBlockLevel7_0700, /* 0700..071F */ FriBidiPropertyBlockLevel7_0720, /* 0720..073F */ FriBidiPropertyBlockLevel7_0740, /* 0740..075F */ FriBidiPropertyBlockLevel7_0620, /* 0760..077F */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_0780[4] = { +#define FriBidiPropertyBlockLevel6_0780 (FriBidiPropertyBlockLevel6 + 0x2C) + FriBidiPropertyBlockLevel7_0620, /* 0780..079F */ FriBidiPropertyBlockLevel7_07A0, /* 07A0..07BF */ FriBidiPropertyBlockLevel7_0100, /* 07C0..07DF */ FriBidiPropertyBlockLevel7_0100, /* 07E0..07FF */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_0900[4] = { +#define FriBidiPropertyBlockLevel6_0900 (FriBidiPropertyBlockLevel6 + 0x30) + FriBidiPropertyBlockLevel7_0900, /* 0900..091F */ FriBidiPropertyBlockLevel7_0920, /* 0920..093F */ FriBidiPropertyBlockLevel7_0940, /* 0940..095F */ FriBidiPropertyBlockLevel7_0960, /* 0960..097F */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_0980[4] = { +#define FriBidiPropertyBlockLevel6_0980 (FriBidiPropertyBlockLevel6 + 0x34) + FriBidiPropertyBlockLevel7_0980, /* 0980..099F */ FriBidiPropertyBlockLevel7_0920, /* 09A0..09BF */ FriBidiPropertyBlockLevel7_09C0, /* 09C0..09DF */ FriBidiPropertyBlockLevel7_09E0, /* 09E0..09FF */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_0A00[4] = { +#define FriBidiPropertyBlockLevel6_0A00 (FriBidiPropertyBlockLevel6 + 0x38) + FriBidiPropertyBlockLevel7_0A00, /* 0A00..0A1F */ FriBidiPropertyBlockLevel7_0920, /* 0A20..0A3F */ FriBidiPropertyBlockLevel7_0A40, /* 0A40..0A5F */ FriBidiPropertyBlockLevel7_0A60, /* 0A60..0A7F */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_0A80[4] = { +#define FriBidiPropertyBlockLevel6_0A80 (FriBidiPropertyBlockLevel6 + 0x3C) + FriBidiPropertyBlockLevel7_0900, /* 0A80..0A9F */ FriBidiPropertyBlockLevel7_0920, /* 0AA0..0ABF */ FriBidiPropertyBlockLevel7_0AC0, /* 0AC0..0ADF */ FriBidiPropertyBlockLevel7_0100, /* 0AE0..0AFF */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_0B00[4] = { +#define FriBidiPropertyBlockLevel6_0B00 (FriBidiPropertyBlockLevel6 + 0x40) + FriBidiPropertyBlockLevel7_0980, /* 0B00..0B1F */ FriBidiPropertyBlockLevel7_0B20, /* 0B20..0B3F */ FriBidiPropertyBlockLevel7_0B40, /* 0B40..0B5F */ FriBidiPropertyBlockLevel7_0100, /* 0B60..0B7F */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_0B80[4] = { +#define FriBidiPropertyBlockLevel6_0B80 (FriBidiPropertyBlockLevel6 + 0x44) + FriBidiPropertyBlockLevel7_0A00, /* 0B80..0B9F */ FriBidiPropertyBlockLevel7_0100, /* 0BA0..0BBF */ FriBidiPropertyBlockLevel7_0BC0, /* 0BC0..0BDF */ FriBidiPropertyBlockLevel7_0100, /* 0BE0..0BFF */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_0C00[4] = { +#define FriBidiPropertyBlockLevel6_0C00 (FriBidiPropertyBlockLevel6 + 0x48) + FriBidiPropertyBlockLevel7_0100, /* 0C00..0C1F */ FriBidiPropertyBlockLevel7_0C20, /* 0C20..0C3F */ FriBidiPropertyBlockLevel7_0C40, /* 0C40..0C5F */ FriBidiPropertyBlockLevel7_0100, /* 0C60..0C7F */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_0C80[4] = { +#define FriBidiPropertyBlockLevel6_0C80 (FriBidiPropertyBlockLevel6 + 0x4C) + FriBidiPropertyBlockLevel7_0100, /* 0C80..0C9F */ FriBidiPropertyBlockLevel7_0CA0, /* 0CA0..0CBF */ FriBidiPropertyBlockLevel7_0CC0, /* 0CC0..0CDF */ FriBidiPropertyBlockLevel7_0100, /* 0CE0..0CFF */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_0D00[4] = { +#define FriBidiPropertyBlockLevel6_0D00 (FriBidiPropertyBlockLevel6 + 0x50) + FriBidiPropertyBlockLevel7_0100, /* 0D00..0D1F */ FriBidiPropertyBlockLevel7_0100, /* 0D20..0D3F */ FriBidiPropertyBlockLevel7_0D40, /* 0D40..0D5F */ FriBidiPropertyBlockLevel7_0100, /* 0D60..0D7F */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_0D80[4] = { +#define FriBidiPropertyBlockLevel6_0D80 (FriBidiPropertyBlockLevel6 + 0x54) + FriBidiPropertyBlockLevel7_0100, /* 0D80..0D9F */ FriBidiPropertyBlockLevel7_0100, /* 0DA0..0DBF */ FriBidiPropertyBlockLevel7_0DC0, /* 0DC0..0DDF */ FriBidiPropertyBlockLevel7_0100, /* 0DE0..0DFF */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_0E00[4] = { +#define FriBidiPropertyBlockLevel6_0E00 (FriBidiPropertyBlockLevel6 + 0x58) + FriBidiPropertyBlockLevel7_0100, /* 0E00..0E1F */ FriBidiPropertyBlockLevel7_0E20, /* 0E20..0E3F */ FriBidiPropertyBlockLevel7_0E40, /* 0E40..0E5F */ FriBidiPropertyBlockLevel7_0100, /* 0E60..0E7F */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_0E80[4] = { +#define FriBidiPropertyBlockLevel6_0E80 (FriBidiPropertyBlockLevel6 + 0x5C) + FriBidiPropertyBlockLevel7_0100, /* 0E80..0E9F */ FriBidiPropertyBlockLevel7_0EA0, /* 0EA0..0EBF */ FriBidiPropertyBlockLevel7_0EC0, /* 0EC0..0EDF */ FriBidiPropertyBlockLevel7_0100, /* 0EE0..0EFF */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_0F00[4] = { +#define FriBidiPropertyBlockLevel6_0F00 (FriBidiPropertyBlockLevel6 + 0x60) + FriBidiPropertyBlockLevel7_0F00, /* 0F00..0F1F */ FriBidiPropertyBlockLevel7_0F20, /* 0F20..0F3F */ FriBidiPropertyBlockLevel7_0100, /* 0F40..0F5F */ FriBidiPropertyBlockLevel7_0F60, /* 0F60..0F7F */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_0F80[4] = { +#define FriBidiPropertyBlockLevel6_0F80 (FriBidiPropertyBlockLevel6 + 0x64) + FriBidiPropertyBlockLevel7_0F80, /* 0F80..0F9F */ FriBidiPropertyBlockLevel7_0FA0, /* 0FA0..0FBF */ FriBidiPropertyBlockLevel7_0FC0, /* 0FC0..0FDF */ FriBidiPropertyBlockLevel7_0100, /* 0FE0..0FFF */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_1000[4] = { +#define FriBidiPropertyBlockLevel6_1000 (FriBidiPropertyBlockLevel6 + 0x68) + FriBidiPropertyBlockLevel7_0100, /* 1000..101F */ FriBidiPropertyBlockLevel7_1020, /* 1020..103F */ FriBidiPropertyBlockLevel7_0F00, /* 1040..105F */ FriBidiPropertyBlockLevel7_0100, /* 1060..107F */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_1680[4] = { +#define FriBidiPropertyBlockLevel6_1680 (FriBidiPropertyBlockLevel6 + 0x6C) + FriBidiPropertyBlockLevel7_1680, /* 1680..169F */ FriBidiPropertyBlockLevel7_0100, /* 16A0..16BF */ FriBidiPropertyBlockLevel7_0100, /* 16C0..16DF */ FriBidiPropertyBlockLevel7_0100, /* 16E0..16FF */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_1780[4] = { +#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 */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_1800[4] = { +#define FriBidiPropertyBlockLevel6_1800 (FriBidiPropertyBlockLevel6 + 0x78) + FriBidiPropertyBlockLevel7_1800, /* 1800..181F */ FriBidiPropertyBlockLevel7_0100, /* 1820..183F */ FriBidiPropertyBlockLevel7_0100, /* 1840..185F */ FriBidiPropertyBlockLevel7_0100, /* 1860..187F */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_1880[4] = { +#define FriBidiPropertyBlockLevel6_1880 (FriBidiPropertyBlockLevel6 + 0x7C) + FriBidiPropertyBlockLevel7_0100, /* 1880..189F */ FriBidiPropertyBlockLevel7_18A0, /* 18A0..18BF */ FriBidiPropertyBlockLevel7_0100, /* 18C0..18DF */ FriBidiPropertyBlockLevel7_0100, /* 18E0..18FF */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_1F80[4] = { +#define FriBidiPropertyBlockLevel6_1F80 (FriBidiPropertyBlockLevel6 + 0x80) + FriBidiPropertyBlockLevel7_0100, /* 1F80..1F9F */ FriBidiPropertyBlockLevel7_1FA0, /* 1FA0..1FBF */ FriBidiPropertyBlockLevel7_1FC0, /* 1FC0..1FDF */ FriBidiPropertyBlockLevel7_1FE0, /* 1FE0..1FFF */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_2000[4] = { +#define FriBidiPropertyBlockLevel6_2000 (FriBidiPropertyBlockLevel6 + 0x84) + FriBidiPropertyBlockLevel7_2000, /* 2000..201F */ FriBidiPropertyBlockLevel7_2020, /* 2020..203F */ FriBidiPropertyBlockLevel7_2040, /* 2040..205F */ FriBidiPropertyBlockLevel7_2060, /* 2060..207F */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_2080[4] = { +#define FriBidiPropertyBlockLevel6_2080 (FriBidiPropertyBlockLevel6 + 0x88) + FriBidiPropertyBlockLevel7_2080, /* 2080..209F */ FriBidiPropertyBlockLevel7_20A0, /* 20A0..20BF */ FriBidiPropertyBlockLevel7_20C0, /* 20C0..20DF */ FriBidiPropertyBlockLevel7_20E0, /* 20E0..20FF */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_2100[4] = { +#define FriBidiPropertyBlockLevel6_2100 (FriBidiPropertyBlockLevel6 + 0x8C) + FriBidiPropertyBlockLevel7_2100, /* 2100..211F */ FriBidiPropertyBlockLevel7_2120, /* 2120..213F */ FriBidiPropertyBlockLevel7_2140, /* 2140..215F */ FriBidiPropertyBlockLevel7_0100, /* 2160..217F */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_2180[4] = { +#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 + 0x94) -FriBidiPropCharType **FriBidiPropertyBlockLevel6_2200[4] = { FriBidiPropertyBlockLevel7_2200, /* 2200..221F */ FriBidiPropertyBlockLevel7_21A0, /* 2220..223F */ FriBidiPropertyBlockLevel7_21A0, /* 2240..225F */ FriBidiPropertyBlockLevel7_21A0, /* 2260..227F */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_2280[4] = { +#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 + 0x9C) -FriBidiPropCharType **FriBidiPropertyBlockLevel6_2300[4] = { FriBidiPropertyBlockLevel7_21A0, /* 2300..231F */ FriBidiPropertyBlockLevel7_2320, /* 2320..233F */ FriBidiPropertyBlockLevel7_0100, /* 2340..235F */ FriBidiPropertyBlockLevel7_2360, /* 2360..237F */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_2380[4] = { +#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 */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_2400[4] = { +#define FriBidiPropertyBlockLevel6_2400 (FriBidiPropertyBlockLevel6 + 0xA4) + FriBidiPropertyBlockLevel7_21A0, /* 2400..241F */ FriBidiPropertyBlockLevel7_2420, /* 2420..243F */ FriBidiPropertyBlockLevel7_2440, /* 2440..245F */ FriBidiPropertyBlockLevel7_2460, /* 2460..247F */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_2480[4] = { +#define FriBidiPropertyBlockLevel6_2480 (FriBidiPropertyBlockLevel6 + 0xA8) + FriBidiPropertyBlockLevel7_2480, /* 2480..249F */ FriBidiPropertyBlockLevel7_0100, /* 24A0..24BF */ FriBidiPropertyBlockLevel7_0100, /* 24C0..24DF */ FriBidiPropertyBlockLevel7_24E0, /* 24E0..24FF */ -}; - -FriBidiPropCharType **FriBidiPropertyBlockLevel6_2500[4] = { - FriBidiPropertyBlockLevel7_21A0, /* 2500..251F */ - FriBidiPropertyBlockLevel7_21A0, /* 2520..253F */ - FriBidiPropertyBlockLevel7_21A0, /* 2540..255F */ - FriBidiPropertyBlockLevel7_21A0, /* 2560..257F */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_2580[4] = { - FriBidiPropertyBlockLevel7_2320, /* 2580..259F */ - FriBidiPropertyBlockLevel7_21A0, /* 25A0..25BF */ - FriBidiPropertyBlockLevel7_21A0, /* 25C0..25DF */ - FriBidiPropertyBlockLevel7_25E0, /* 25E0..25FF */ -}; +#define FriBidiPropertyBlockLevel6_2600 (FriBidiPropertyBlockLevel6 + 0xAC) -FriBidiPropCharType **FriBidiPropertyBlockLevel6_2600[4] = { 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) -FriBidiPropCharType **FriBidiPropertyBlockLevel6_2700[4] = { FriBidiPropertyBlockLevel7_2700, /* 2700..271F */ FriBidiPropertyBlockLevel7_2720, /* 2720..273F */ FriBidiPropertyBlockLevel7_2740, /* 2740..275F */ FriBidiPropertyBlockLevel7_2760, /* 2760..277F */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_2780[4] = { +#define FriBidiPropertyBlockLevel6_2780 (FriBidiPropertyBlockLevel6 + 0xB8) + 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) -FriBidiPropCharType **FriBidiPropertyBlockLevel6_2E80[4] = { 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) -FriBidiPropCharType **FriBidiPropertyBlockLevel6_2F80[4] = { FriBidiPropertyBlockLevel7_21A0, /* 2F80..2F9F */ FriBidiPropertyBlockLevel7_21A0, /* 2FA0..2FBF */ FriBidiPropertyBlockLevel7_2320, /* 2FC0..2FDF */ FriBidiPropertyBlockLevel7_2FE0, /* 2FE0..2FFF */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_3000[4] = { +#define FriBidiPropertyBlockLevel6_3000 (FriBidiPropertyBlockLevel6 + 0xC4) + FriBidiPropertyBlockLevel7_3000, /* 3000..301F */ FriBidiPropertyBlockLevel7_3020, /* 3020..303F */ FriBidiPropertyBlockLevel7_0100, /* 3040..305F */ FriBidiPropertyBlockLevel7_0100, /* 3060..307F */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_3080[4] = { +#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 */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_A480[4] = { +#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 */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_FB00[4] = { +#define FriBidiPropertyBlockLevel6_FB00 (FriBidiPropertyBlockLevel6 + 0xD8) + FriBidiPropertyBlockLevel7_FB00, /* FB00..FB1F */ FriBidiPropertyBlockLevel7_FB20, /* FB20..FB3F */ FriBidiPropertyBlockLevel7_FB40, /* FB40..FB5F */ FriBidiPropertyBlockLevel7_0620, /* FB60..FB7F */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_FB80[4] = { +#define FriBidiPropertyBlockLevel6_FB80 (FriBidiPropertyBlockLevel6 + 0xDC) + FriBidiPropertyBlockLevel7_0620, /* FB80..FB9F */ FriBidiPropertyBlockLevel7_0620, /* FBA0..FBBF */ FriBidiPropertyBlockLevel7_0620, /* FBC0..FBDF */ FriBidiPropertyBlockLevel7_0620, /* FBE0..FBFF */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_FD00[4] = { +#define FriBidiPropertyBlockLevel6_FD00 (FriBidiPropertyBlockLevel6 + 0xE0) + FriBidiPropertyBlockLevel7_0620, /* FD00..FD1F */ FriBidiPropertyBlockLevel7_FD20, /* FD20..FD3F */ FriBidiPropertyBlockLevel7_0620, /* FD40..FD5F */ FriBidiPropertyBlockLevel7_0620, /* FD60..FD7F */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_FE00[4] = { - FriBidiPropertyBlockLevel7_0100, /* FE00..FE1F */ +#define FriBidiPropertyBlockLevel6_FE00 (FriBidiPropertyBlockLevel6 + 0xE4) + + FriBidiPropertyBlockLevel7_0340, /* FE00..FE1F */ FriBidiPropertyBlockLevel7_FE20, /* FE20..FE3F */ FriBidiPropertyBlockLevel7_FE40, /* FE40..FE5F */ FriBidiPropertyBlockLevel7_FE60, /* FE60..FE7F */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_FE80[4] = { +#define FriBidiPropertyBlockLevel6_FE80 (FriBidiPropertyBlockLevel6 + 0xE8) + FriBidiPropertyBlockLevel7_0620, /* FE80..FE9F */ FriBidiPropertyBlockLevel7_0620, /* FEA0..FEBF */ FriBidiPropertyBlockLevel7_0620, /* FEC0..FEDF */ FriBidiPropertyBlockLevel7_FEE0, /* FEE0..FEFF */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_FF00[4] = { +#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 */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_FF80[4] = { +#define FriBidiPropertyBlockLevel6_FF80 (FriBidiPropertyBlockLevel6 + 0xF0) + FriBidiPropertyBlockLevel7_0100, /* FF80..FF9F */ FriBidiPropertyBlockLevel7_0100, /* FFA0..FFBF */ FriBidiPropertyBlockLevel7_0100, /* FFC0..FFDF */ FriBidiPropertyBlockLevel7_FFE0, /* FFE0..FFFF */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_1D100[4] = { +#define FriBidiPropertyBlockLevel6_1D100 (FriBidiPropertyBlockLevel6 + 0xF4) + FriBidiPropertyBlockLevel7_0100, /* 1D100..1D11F */ FriBidiPropertyBlockLevel7_0100, /* 1D120..1D13F */ FriBidiPropertyBlockLevel7_0100, /* 1D140..1D15F */ FriBidiPropertyBlockLevel7_1D160, /* 1D160..1D17F */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_1D180[4] = { +#define FriBidiPropertyBlockLevel6_1D180 (FriBidiPropertyBlockLevel6 + 0xF8) + FriBidiPropertyBlockLevel7_1D180, /* 1D180..1D19F */ FriBidiPropertyBlockLevel7_1D1A0, /* 1D1A0..1D1BF */ FriBidiPropertyBlockLevel7_0100, /* 1D1C0..1D1DF */ FriBidiPropertyBlockLevel7_0100, /* 1D1E0..1D1FF */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_1D780[4] = { +#define FriBidiPropertyBlockLevel6_1D780 (FriBidiPropertyBlockLevel6 + 0xFC) + FriBidiPropertyBlockLevel7_0100, /* 1D780..1D79F */ FriBidiPropertyBlockLevel7_0100, /* 1D7A0..1D7BF */ FriBidiPropertyBlockLevel7_1D7C0, /* 1D7C0..1D7DF */ FriBidiPropertyBlockLevel7_2460, /* 1D7E0..1D7FF */ -}; -FriBidiPropCharType **FriBidiPropertyBlockLevel6_E0000[4] = { +#define FriBidiPropertyBlockLevel6_E0000 (FriBidiPropertyBlockLevel6 + 0x100) + FriBidiPropertyBlockLevel7_E0000, /* E0000..E001F */ FriBidiPropertyBlockLevel7_E0020, /* E0020..E003F */ FriBidiPropertyBlockLevel7_E0020, /* E0040..E005F */ FriBidiPropertyBlockLevel7_E0020, /* E0060..E007F */ }; -FriBidiPropCharType ***FriBidiPropertyBlockLevel5_0000[4] = { +static const FriBidiPropCharType ***FriBidiPropertyBlockLevel5[4*29] = { + +#define FriBidiPropertyBlockLevel5_0000 (FriBidiPropertyBlockLevel5 + 0x0) + FriBidiPropertyBlockLevel6_0000, /* 0000..007F */ FriBidiPropertyBlockLevel6_0080, /* 0080..00FF */ FriBidiPropertyBlockLevel6_0100, /* 0100..017F */ FriBidiPropertyBlockLevel6_0100, /* 0180..01FF */ -}; -FriBidiPropCharType ***FriBidiPropertyBlockLevel5_0200[4] = { +#define FriBidiPropertyBlockLevel5_0200 (FriBidiPropertyBlockLevel5 + 0x4) + FriBidiPropertyBlockLevel6_0100, /* 0200..027F */ FriBidiPropertyBlockLevel6_0280, /* 0280..02FF */ FriBidiPropertyBlockLevel6_0300, /* 0300..037F */ FriBidiPropertyBlockLevel6_0380, /* 0380..03FF */ -}; -FriBidiPropCharType ***FriBidiPropertyBlockLevel5_0400[4] = { +#define FriBidiPropertyBlockLevel5_0400 (FriBidiPropertyBlockLevel5 + 0x8) + FriBidiPropertyBlockLevel6_0100, /* 0400..047F */ FriBidiPropertyBlockLevel6_0480, /* 0480..04FF */ FriBidiPropertyBlockLevel6_0100, /* 0500..057F */ FriBidiPropertyBlockLevel6_0580, /* 0580..05FF */ -}; -FriBidiPropCharType ***FriBidiPropertyBlockLevel5_0600[4] = { +#define FriBidiPropertyBlockLevel5_0600 (FriBidiPropertyBlockLevel5 + 0xC) + FriBidiPropertyBlockLevel6_0600, /* 0600..067F */ FriBidiPropertyBlockLevel6_0680, /* 0680..06FF */ FriBidiPropertyBlockLevel6_0700, /* 0700..077F */ FriBidiPropertyBlockLevel6_0780, /* 0780..07FF */ -}; -FriBidiPropCharType ***FriBidiPropertyBlockLevel5_0800[4] = { +#define FriBidiPropertyBlockLevel5_0800 (FriBidiPropertyBlockLevel5 + 0x10) + FriBidiPropertyBlockLevel6_0100, /* 0800..087F */ FriBidiPropertyBlockLevel6_0100, /* 0880..08FF */ FriBidiPropertyBlockLevel6_0900, /* 0900..097F */ FriBidiPropertyBlockLevel6_0980, /* 0980..09FF */ -}; -FriBidiPropCharType ***FriBidiPropertyBlockLevel5_0A00[4] = { +#define FriBidiPropertyBlockLevel5_0A00 (FriBidiPropertyBlockLevel5 + 0x14) + FriBidiPropertyBlockLevel6_0A00, /* 0A00..0A7F */ FriBidiPropertyBlockLevel6_0A80, /* 0A80..0AFF */ FriBidiPropertyBlockLevel6_0B00, /* 0B00..0B7F */ FriBidiPropertyBlockLevel6_0B80, /* 0B80..0BFF */ -}; -FriBidiPropCharType ***FriBidiPropertyBlockLevel5_0C00[4] = { +#define FriBidiPropertyBlockLevel5_0C00 (FriBidiPropertyBlockLevel5 + 0x18) + FriBidiPropertyBlockLevel6_0C00, /* 0C00..0C7F */ FriBidiPropertyBlockLevel6_0C80, /* 0C80..0CFF */ FriBidiPropertyBlockLevel6_0D00, /* 0D00..0D7F */ FriBidiPropertyBlockLevel6_0D80, /* 0D80..0DFF */ -}; -FriBidiPropCharType ***FriBidiPropertyBlockLevel5_0E00[4] = { +#define FriBidiPropertyBlockLevel5_0E00 (FriBidiPropertyBlockLevel5 + 0x1C) + FriBidiPropertyBlockLevel6_0E00, /* 0E00..0E7F */ FriBidiPropertyBlockLevel6_0E80, /* 0E80..0EFF */ FriBidiPropertyBlockLevel6_0F00, /* 0F00..0F7F */ FriBidiPropertyBlockLevel6_0F80, /* 0F80..0FFF */ -}; -FriBidiPropCharType ***FriBidiPropertyBlockLevel5_1000[4] = { +#define FriBidiPropertyBlockLevel5_1000 (FriBidiPropertyBlockLevel5 + 0x20) + FriBidiPropertyBlockLevel6_1000, /* 1000..107F */ FriBidiPropertyBlockLevel6_0100, /* 1080..10FF */ FriBidiPropertyBlockLevel6_0100, /* 1100..117F */ FriBidiPropertyBlockLevel6_0100, /* 1180..11FF */ -}; -FriBidiPropCharType ***FriBidiPropertyBlockLevel5_1200[4] = { +#define FriBidiPropertyBlockLevel5_1200 (FriBidiPropertyBlockLevel5 + 0x24) + FriBidiPropertyBlockLevel6_0100, /* 1200..127F */ FriBidiPropertyBlockLevel6_0100, /* 1280..12FF */ FriBidiPropertyBlockLevel6_0100, /* 1300..137F */ FriBidiPropertyBlockLevel6_0100, /* 1380..13FF */ -}; -FriBidiPropCharType ***FriBidiPropertyBlockLevel5_1600[4] = { +#define FriBidiPropertyBlockLevel5_1600 (FriBidiPropertyBlockLevel5 + 0x28) + FriBidiPropertyBlockLevel6_0100, /* 1600..167F */ FriBidiPropertyBlockLevel6_1680, /* 1680..16FF */ - FriBidiPropertyBlockLevel6_0100, /* 1700..177F */ + FriBidiPropertyBlockLevel6_1700, /* 1700..177F */ FriBidiPropertyBlockLevel6_1780, /* 1780..17FF */ -}; -FriBidiPropCharType ***FriBidiPropertyBlockLevel5_1800[4] = { +#define FriBidiPropertyBlockLevel5_1800 (FriBidiPropertyBlockLevel5 + 0x2C) + FriBidiPropertyBlockLevel6_1800, /* 1800..187F */ FriBidiPropertyBlockLevel6_1880, /* 1880..18FF */ FriBidiPropertyBlockLevel6_0100, /* 1900..197F */ FriBidiPropertyBlockLevel6_0100, /* 1980..19FF */ -}; -FriBidiPropCharType ***FriBidiPropertyBlockLevel5_1E00[4] = { +#define FriBidiPropertyBlockLevel5_1E00 (FriBidiPropertyBlockLevel5 + 0x30) + FriBidiPropertyBlockLevel6_0100, /* 1E00..1E7F */ FriBidiPropertyBlockLevel6_0100, /* 1E80..1EFF */ FriBidiPropertyBlockLevel6_0100, /* 1F00..1F7F */ FriBidiPropertyBlockLevel6_1F80, /* 1F80..1FFF */ -}; -FriBidiPropCharType ***FriBidiPropertyBlockLevel5_2000[4] = { +#define FriBidiPropertyBlockLevel5_2000 (FriBidiPropertyBlockLevel5 + 0x34) + FriBidiPropertyBlockLevel6_2000, /* 2000..207F */ FriBidiPropertyBlockLevel6_2080, /* 2080..20FF */ FriBidiPropertyBlockLevel6_2100, /* 2100..217F */ FriBidiPropertyBlockLevel6_2180, /* 2180..21FF */ -}; -FriBidiPropCharType ***FriBidiPropertyBlockLevel5_2200[4] = { +#define FriBidiPropertyBlockLevel5_2200 (FriBidiPropertyBlockLevel5 + 0x38) + FriBidiPropertyBlockLevel6_2200, /* 2200..227F */ FriBidiPropertyBlockLevel6_2280, /* 2280..22FF */ FriBidiPropertyBlockLevel6_2300, /* 2300..237F */ FriBidiPropertyBlockLevel6_2380, /* 2380..23FF */ -}; -FriBidiPropCharType ***FriBidiPropertyBlockLevel5_2400[4] = { +#define FriBidiPropertyBlockLevel5_2400 (FriBidiPropertyBlockLevel5 + 0x3C) + 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) -FriBidiPropCharType ***FriBidiPropertyBlockLevel5_2600[4] = { FriBidiPropertyBlockLevel6_2600, /* 2600..267F */ - FriBidiPropertyBlockLevel6_0100, /* 2680..26FF */ + FriBidiPropertyBlockLevel6_2680, /* 2680..26FF */ FriBidiPropertyBlockLevel6_2700, /* 2700..277F */ FriBidiPropertyBlockLevel6_2780, /* 2780..27FF */ -}; -FriBidiPropCharType ***FriBidiPropertyBlockLevel5_2800[4] = { - FriBidiPropertyBlockLevel6_2500, /* 2800..287F */ - FriBidiPropertyBlockLevel6_2500, /* 2880..28FF */ - FriBidiPropertyBlockLevel6_0100, /* 2900..297F */ - FriBidiPropertyBlockLevel6_0100, /* 2980..29FF */ -}; +#define FriBidiPropertyBlockLevel5_2800 (FriBidiPropertyBlockLevel5 + 0x44) + + 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 + 0x4C) -FriBidiPropCharType ***FriBidiPropertyBlockLevel5_2E00[4] = { FriBidiPropertyBlockLevel6_0100, /* 2E00..2E7F */ FriBidiPropertyBlockLevel6_2E80, /* 2E80..2EFF */ - FriBidiPropertyBlockLevel6_2500, /* 2F00..2F7F */ + FriBidiPropertyBlockLevel6_2280, /* 2F00..2F7F */ FriBidiPropertyBlockLevel6_2F80, /* 2F80..2FFF */ -}; -FriBidiPropCharType ***FriBidiPropertyBlockLevel5_3000[4] = { +#define FriBidiPropertyBlockLevel5_3000 (FriBidiPropertyBlockLevel5 + 0x50) + FriBidiPropertyBlockLevel6_3000, /* 3000..307F */ FriBidiPropertyBlockLevel6_3080, /* 3080..30FF */ FriBidiPropertyBlockLevel6_0100, /* 3100..317F */ FriBidiPropertyBlockLevel6_0100, /* 3180..31FF */ -}; -FriBidiPropCharType ***FriBidiPropertyBlockLevel5_A400[4] = { +#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 */ -}; -FriBidiPropCharType ***FriBidiPropertyBlockLevel5_FA00[4] = { +#define FriBidiPropertyBlockLevel5_FA00 (FriBidiPropertyBlockLevel5 + 0x5C) + FriBidiPropertyBlockLevel6_0100, /* FA00..FA7F */ FriBidiPropertyBlockLevel6_0100, /* FA80..FAFF */ FriBidiPropertyBlockLevel6_FB00, /* FB00..FB7F */ FriBidiPropertyBlockLevel6_FB80, /* FB80..FBFF */ -}; -FriBidiPropCharType ***FriBidiPropertyBlockLevel5_FC00[4] = { +#define FriBidiPropertyBlockLevel5_FC00 (FriBidiPropertyBlockLevel5 + 0x60) + FriBidiPropertyBlockLevel6_FB80, /* FC00..FC7F */ FriBidiPropertyBlockLevel6_FB80, /* FC80..FCFF */ FriBidiPropertyBlockLevel6_FD00, /* FD00..FD7F */ FriBidiPropertyBlockLevel6_FB80, /* FD80..FDFF */ -}; -FriBidiPropCharType ***FriBidiPropertyBlockLevel5_FE00[4] = { +#define FriBidiPropertyBlockLevel5_FE00 (FriBidiPropertyBlockLevel5 + 0x64) + FriBidiPropertyBlockLevel6_FE00, /* FE00..FE7F */ FriBidiPropertyBlockLevel6_FE80, /* FE80..FEFF */ FriBidiPropertyBlockLevel6_FF00, /* FF00..FF7F */ FriBidiPropertyBlockLevel6_FF80, /* FF80..FFFF */ -}; -FriBidiPropCharType ***FriBidiPropertyBlockLevel5_1D000[4] = { +#define FriBidiPropertyBlockLevel5_1D000 (FriBidiPropertyBlockLevel5 + 0x68) + FriBidiPropertyBlockLevel6_0100, /* 1D000..1D07F */ FriBidiPropertyBlockLevel6_0100, /* 1D080..1D0FF */ FriBidiPropertyBlockLevel6_1D100, /* 1D100..1D17F */ FriBidiPropertyBlockLevel6_1D180, /* 1D180..1D1FF */ -}; -FriBidiPropCharType ***FriBidiPropertyBlockLevel5_1D600[4] = { +#define FriBidiPropertyBlockLevel5_1D600 (FriBidiPropertyBlockLevel5 + 0x6C) + FriBidiPropertyBlockLevel6_0100, /* 1D600..1D67F */ FriBidiPropertyBlockLevel6_0100, /* 1D680..1D6FF */ FriBidiPropertyBlockLevel6_0100, /* 1D700..1D77F */ FriBidiPropertyBlockLevel6_1D780, /* 1D780..1D7FF */ -}; -FriBidiPropCharType ***FriBidiPropertyBlockLevel5_E0000[4] = { +#define FriBidiPropertyBlockLevel5_E0000 (FriBidiPropertyBlockLevel5 + 0x70) + FriBidiPropertyBlockLevel6_E0000, /* E0000..E007F */ FriBidiPropertyBlockLevel6_0100, /* E0080..E00FF */ FriBidiPropertyBlockLevel6_0100, /* E0100..E017F */ FriBidiPropertyBlockLevel6_0100, /* E0180..E01FF */ }; -FriBidiPropCharType ****FriBidiPropertyBlockLevel4_0000[4] = { +static const FriBidiPropCharType ****FriBidiPropertyBlockLevel4[4*12] = { + +#define FriBidiPropertyBlockLevel4_0000 (FriBidiPropertyBlockLevel4 + 0x0) + FriBidiPropertyBlockLevel5_0000, /* 0000..01FF */ FriBidiPropertyBlockLevel5_0200, /* 0200..03FF */ FriBidiPropertyBlockLevel5_0400, /* 0400..05FF */ FriBidiPropertyBlockLevel5_0600, /* 0600..07FF */ -}; -FriBidiPropCharType ****FriBidiPropertyBlockLevel4_0800[4] = { +#define FriBidiPropertyBlockLevel4_0800 (FriBidiPropertyBlockLevel4 + 0x4) + FriBidiPropertyBlockLevel5_0800, /* 0800..09FF */ FriBidiPropertyBlockLevel5_0A00, /* 0A00..0BFF */ FriBidiPropertyBlockLevel5_0C00, /* 0C00..0DFF */ FriBidiPropertyBlockLevel5_0E00, /* 0E00..0FFF */ -}; -FriBidiPropCharType ****FriBidiPropertyBlockLevel4_1000[4] = { +#define FriBidiPropertyBlockLevel4_1000 (FriBidiPropertyBlockLevel4 + 0x8) + FriBidiPropertyBlockLevel5_1000, /* 1000..11FF */ FriBidiPropertyBlockLevel5_1200, /* 1200..13FF */ FriBidiPropertyBlockLevel5_1200, /* 1400..15FF */ FriBidiPropertyBlockLevel5_1600, /* 1600..17FF */ -}; -FriBidiPropCharType ****FriBidiPropertyBlockLevel4_1800[4] = { +#define FriBidiPropertyBlockLevel4_1800 (FriBidiPropertyBlockLevel4 + 0xC) + FriBidiPropertyBlockLevel5_1800, /* 1800..19FF */ FriBidiPropertyBlockLevel5_1200, /* 1A00..1BFF */ FriBidiPropertyBlockLevel5_1200, /* 1C00..1DFF */ FriBidiPropertyBlockLevel5_1E00, /* 1E00..1FFF */ -}; -FriBidiPropCharType ****FriBidiPropertyBlockLevel4_2000[4] = { +#define FriBidiPropertyBlockLevel4_2000 (FriBidiPropertyBlockLevel4 + 0x10) + FriBidiPropertyBlockLevel5_2000, /* 2000..21FF */ FriBidiPropertyBlockLevel5_2200, /* 2200..23FF */ FriBidiPropertyBlockLevel5_2400, /* 2400..25FF */ FriBidiPropertyBlockLevel5_2600, /* 2600..27FF */ -}; -FriBidiPropCharType ****FriBidiPropertyBlockLevel4_2800[4] = { +#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 */ -}; -FriBidiPropCharType ****FriBidiPropertyBlockLevel4_3000[4] = { +#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 */ -}; -FriBidiPropCharType ****FriBidiPropertyBlockLevel4_3800[4] = { +#define FriBidiPropertyBlockLevel4_3800 (FriBidiPropertyBlockLevel4 + 0x1C) + FriBidiPropertyBlockLevel5_1200, /* 3800..39FF */ FriBidiPropertyBlockLevel5_1200, /* 3A00..3BFF */ FriBidiPropertyBlockLevel5_1200, /* 3C00..3DFF */ FriBidiPropertyBlockLevel5_1200, /* 3E00..3FFF */ -}; -FriBidiPropCharType ****FriBidiPropertyBlockLevel4_A000[4] = { +#define FriBidiPropertyBlockLevel4_A000 (FriBidiPropertyBlockLevel4 + 0x20) + FriBidiPropertyBlockLevel5_1200, /* A000..A1FF */ FriBidiPropertyBlockLevel5_1200, /* A200..A3FF */ FriBidiPropertyBlockLevel5_A400, /* A400..A5FF */ FriBidiPropertyBlockLevel5_1200, /* A600..A7FF */ -}; -FriBidiPropCharType ****FriBidiPropertyBlockLevel4_F800[4] = { +#define FriBidiPropertyBlockLevel4_F800 (FriBidiPropertyBlockLevel4 + 0x24) + FriBidiPropertyBlockLevel5_1200, /* F800..F9FF */ FriBidiPropertyBlockLevel5_FA00, /* FA00..FBFF */ FriBidiPropertyBlockLevel5_FC00, /* FC00..FDFF */ FriBidiPropertyBlockLevel5_FE00, /* FE00..FFFF */ -}; -FriBidiPropCharType ****FriBidiPropertyBlockLevel4_1D000[4] = { +#define FriBidiPropertyBlockLevel4_1D000 (FriBidiPropertyBlockLevel4 + 0x28) + FriBidiPropertyBlockLevel5_1D000, /* 1D000..1D1FF */ FriBidiPropertyBlockLevel5_1200, /* 1D200..1D3FF */ FriBidiPropertyBlockLevel5_1200, /* 1D400..1D5FF */ FriBidiPropertyBlockLevel5_1D600, /* 1D600..1D7FF */ -}; -FriBidiPropCharType ****FriBidiPropertyBlockLevel4_E0000[4] = { +#define FriBidiPropertyBlockLevel4_E0000 (FriBidiPropertyBlockLevel4 + 0x2C) + FriBidiPropertyBlockLevel5_E0000, /* E0000..E01FF */ FriBidiPropertyBlockLevel5_1200, /* E0200..E03FF */ FriBidiPropertyBlockLevel5_1200, /* E0400..E05FF */ FriBidiPropertyBlockLevel5_1200, /* E0600..E07FF */ }; -FriBidiPropCharType *****FriBidiPropertyBlockLevel3_0000[4] = { +static const FriBidiPropCharType *****FriBidiPropertyBlockLevel3[4*7] = { + +#define FriBidiPropertyBlockLevel3_0000 (FriBidiPropertyBlockLevel3 + 0x0) + FriBidiPropertyBlockLevel4_0000, /* 0000..07FF */ FriBidiPropertyBlockLevel4_0800, /* 0800..0FFF */ FriBidiPropertyBlockLevel4_1000, /* 1000..17FF */ FriBidiPropertyBlockLevel4_1800, /* 1800..1FFF */ -}; -FriBidiPropCharType *****FriBidiPropertyBlockLevel3_2000[4] = { +#define FriBidiPropertyBlockLevel3_2000 (FriBidiPropertyBlockLevel3 + 0x4) + FriBidiPropertyBlockLevel4_2000, /* 2000..27FF */ FriBidiPropertyBlockLevel4_2800, /* 2800..2FFF */ FriBidiPropertyBlockLevel4_3000, /* 3000..37FF */ FriBidiPropertyBlockLevel4_3800, /* 3800..3FFF */ -}; -FriBidiPropCharType *****FriBidiPropertyBlockLevel3_4000[4] = { +#define FriBidiPropertyBlockLevel3_4000 (FriBidiPropertyBlockLevel3 + 0x8) + FriBidiPropertyBlockLevel4_3800, /* 4000..47FF */ FriBidiPropertyBlockLevel4_3800, /* 4800..4FFF */ FriBidiPropertyBlockLevel4_3800, /* 5000..57FF */ FriBidiPropertyBlockLevel4_3800, /* 5800..5FFF */ -}; -FriBidiPropCharType *****FriBidiPropertyBlockLevel3_A000[4] = { +#define FriBidiPropertyBlockLevel3_A000 (FriBidiPropertyBlockLevel3 + 0xC) + FriBidiPropertyBlockLevel4_A000, /* A000..A7FF */ FriBidiPropertyBlockLevel4_3800, /* A800..AFFF */ FriBidiPropertyBlockLevel4_3800, /* B000..B7FF */ FriBidiPropertyBlockLevel4_3800, /* B800..BFFF */ -}; -FriBidiPropCharType *****FriBidiPropertyBlockLevel3_E000[4] = { +#define FriBidiPropertyBlockLevel3_E000 (FriBidiPropertyBlockLevel3 + 0x10) + FriBidiPropertyBlockLevel4_3800, /* E000..E7FF */ FriBidiPropertyBlockLevel4_3800, /* E800..EFFF */ FriBidiPropertyBlockLevel4_3800, /* F000..F7FF */ FriBidiPropertyBlockLevel4_F800, /* F800..FFFF */ -}; -FriBidiPropCharType *****FriBidiPropertyBlockLevel3_1C000[4] = { +#define FriBidiPropertyBlockLevel3_1C000 (FriBidiPropertyBlockLevel3 + 0x14) + FriBidiPropertyBlockLevel4_3800, /* 1C000..1C7FF */ FriBidiPropertyBlockLevel4_3800, /* 1C800..1CFFF */ FriBidiPropertyBlockLevel4_1D000, /* 1D000..1D7FF */ FriBidiPropertyBlockLevel4_3800, /* 1D800..1DFFF */ -}; -FriBidiPropCharType *****FriBidiPropertyBlockLevel3_E0000[4] = { +#define FriBidiPropertyBlockLevel3_E0000 (FriBidiPropertyBlockLevel3 + 0x18) + FriBidiPropertyBlockLevel4_E0000, /* E0000..E07FF */ FriBidiPropertyBlockLevel4_3800, /* E0800..E0FFF */ FriBidiPropertyBlockLevel4_3800, /* E1000..E17FF */ FriBidiPropertyBlockLevel4_3800, /* E1800..E1FFF */ }; -FriBidiPropCharType ******FriBidiPropertyBlockLevel2_0000[2] = { +static const FriBidiPropCharType ******FriBidiPropertyBlockLevel2[2*6] = { + +#define FriBidiPropertyBlockLevel2_0000 (FriBidiPropertyBlockLevel2 + 0x0) + FriBidiPropertyBlockLevel3_0000, /* 0000..1FFF */ FriBidiPropertyBlockLevel3_2000, /* 2000..3FFF */ -}; -FriBidiPropCharType ******FriBidiPropertyBlockLevel2_4000[2] = { +#define FriBidiPropertyBlockLevel2_4000 (FriBidiPropertyBlockLevel2 + 0x2) + FriBidiPropertyBlockLevel3_4000, /* 4000..5FFF */ FriBidiPropertyBlockLevel3_4000, /* 6000..7FFF */ -}; -FriBidiPropCharType ******FriBidiPropertyBlockLevel2_8000[2] = { +#define FriBidiPropertyBlockLevel2_8000 (FriBidiPropertyBlockLevel2 + 0x4) + FriBidiPropertyBlockLevel3_4000, /* 8000..9FFF */ FriBidiPropertyBlockLevel3_A000, /* A000..BFFF */ -}; -FriBidiPropCharType ******FriBidiPropertyBlockLevel2_C000[2] = { +#define FriBidiPropertyBlockLevel2_C000 (FriBidiPropertyBlockLevel2 + 0x6) + FriBidiPropertyBlockLevel3_4000, /* C000..DFFF */ FriBidiPropertyBlockLevel3_E000, /* E000..FFFF */ -}; -FriBidiPropCharType ******FriBidiPropertyBlockLevel2_1C000[2] = { +#define FriBidiPropertyBlockLevel2_1C000 (FriBidiPropertyBlockLevel2 + 0x8) + FriBidiPropertyBlockLevel3_1C000, /* 1C000..1DFFF */ FriBidiPropertyBlockLevel3_4000, /* 1E000..1FFFF */ -}; -FriBidiPropCharType ******FriBidiPropertyBlockLevel2_E0000[2] = { +#define FriBidiPropertyBlockLevel2_E0000 (FriBidiPropertyBlockLevel2 + 0xA) + FriBidiPropertyBlockLevel3_E0000, /* E0000..E1FFF */ FriBidiPropertyBlockLevel3_4000, /* E2000..E3FFF */ }; -FriBidiPropCharType *******FriBidiPropertyBlockLevel1_0000[4] = { +static const FriBidiPropCharType *******FriBidiPropertyBlockLevel1[4*4] = { + +#define FriBidiPropertyBlockLevel1_0000 (FriBidiPropertyBlockLevel1 + 0x0) + FriBidiPropertyBlockLevel2_0000, /* 0000..3FFF */ FriBidiPropertyBlockLevel2_4000, /* 4000..7FFF */ FriBidiPropertyBlockLevel2_8000, /* 8000..BFFF */ FriBidiPropertyBlockLevel2_C000, /* C000..FFFF */ -}; -FriBidiPropCharType *******FriBidiPropertyBlockLevel1_10000[4] = { +#define FriBidiPropertyBlockLevel1_10000 (FriBidiPropertyBlockLevel1 + 0x4) + FriBidiPropertyBlockLevel2_4000, /* 10000..13FFF */ FriBidiPropertyBlockLevel2_4000, /* 14000..17FFF */ FriBidiPropertyBlockLevel2_4000, /* 18000..1BFFF */ FriBidiPropertyBlockLevel2_1C000, /* 1C000..1FFFF */ -}; -FriBidiPropCharType *******FriBidiPropertyBlockLevel1_20000[4] = { +#define FriBidiPropertyBlockLevel1_20000 (FriBidiPropertyBlockLevel1 + 0x8) + FriBidiPropertyBlockLevel2_4000, /* 20000..23FFF */ FriBidiPropertyBlockLevel2_4000, /* 24000..27FFF */ FriBidiPropertyBlockLevel2_4000, /* 28000..2BFFF */ FriBidiPropertyBlockLevel2_4000, /* 2C000..2FFFF */ -}; -FriBidiPropCharType *******FriBidiPropertyBlockLevel1_E0000[4] = { +#define FriBidiPropertyBlockLevel1_E0000 (FriBidiPropertyBlockLevel1 + 0xC) + FriBidiPropertyBlockLevel2_E0000, /* E0000..E3FFF */ FriBidiPropertyBlockLevel2_4000, /* E4000..E7FFF */ FriBidiPropertyBlockLevel2_4000, /* E8000..EBFFF */ FriBidiPropertyBlockLevel2_4000, /* EC000..EFFFF */ }; -FriBidiPropCharType ********FriBidiPropertyBlock[17] = { +static const FriBidiPropCharType ********FriBidiPropertyBlockLevel0[17*1] = { + +#define FriBidiPropertyBlock (FriBidiPropertyBlockLevel0 + 0x0) + FriBidiPropertyBlockLevel1_0000, /* 0000..FFFF */ FriBidiPropertyBlockLevel1_10000, /* 10000..1FFFF */ FriBidiPropertyBlockLevel1_20000, /* 20000..2FFFF */ @@ -2366,7 +2460,6 @@ FriBidiPropCharType ********FriBidiPropertyBlock[17] = { #undef AL #undef RTL #undef LTR - /*====================================================================== * fribidi_get_type() returns the bidi type of a character. *----------------------------------------------------------------------*/ @@ -2380,3 +2473,5 @@ fribidi_get_type (FriBidiChar uch) /* Non-Unicode chars */ } + +#endif /* FRIBIDI_TAB_CHAR_TYPE_9_I */ diff --git a/fribidi_tab_mirroring.i b/fribidi_tab_mirroring.i index 58ae6dd..9c17de1 100644 --- a/fribidi_tab_mirroring.i +++ b/fribidi_tab_mirroring.i @@ -1,8 +1,11 @@ /* - 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 */ +#ifndef FRIBIDI_TAB_MIRRORING_I +#define FRIBIDI_TAB_MIRRORING_I + #include "fribidi.h" /* @@ -21,7 +24,7 @@ /* *INDENT-OFF* */ -struct +static const struct { FriBidiChar ch, mirrored_ch; } @@ -171,5 +174,7 @@ FriBidiMirroredChars[] = /* *INDENT-ON* */ -int nFriBidiMirroredChars = 140; +const int nFriBidiMirroredChars = 140; + +#endif /* FRIBIDI_TAB_MIRRORING_I */ diff --git a/fribidi_unicode.h b/fribidi_unicode.h index aba927d..c928497 100644 --- a/fribidi_unicode.h +++ b/fribidi_unicode.h @@ -1,5 +1,5 @@ /* FriBidi - Library of BiDi algorithm - * Copyright (C) 2001 Behdad Esfahbod. + * Copyright (C) 2001,2002 Behdad Esfahbod. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -19,14 +19,22 @@ * For licensing issues, contact <fwpg@sharif.edu>. */ -#include "fribidi_types.h" - #ifndef FRIBIDI_UNICODE_H #define FRIBIDI_UNICODE_H +#include "fribidi_types.h" + +#ifdef __cplusplus +extern "C" +{ +#endif + /* 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 /* BiDirectional marks */ #define UNI_LRM 0x200E @@ -52,8 +60,12 @@ #define UNI_FARSI_ZERO 0x06F0 /* wcwidth functions */ -int fribidi_wcwidth (FriBidiChar ch); -int fribidi_wcswidth (const FriBidiChar *str, FriBidiStrIndex len); -int fribidi_wcswidth_cjk (const FriBidiChar *str, FriBidiStrIndex len); + int fribidi_wcwidth (FriBidiChar ch); + int fribidi_wcswidth (const FriBidiChar *str, FriBidiStrIndex len); + int fribidi_wcswidth_cjk (const FriBidiChar *str, FriBidiStrIndex len); + +#ifdef __cplusplus +} +#endif -#endif /* FRIBIDI_UNICODE_H */ +#endif /* FRIBIDI_UNICODE_H */ 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; @@ -82,7 +82,7 @@ found () best_cluster[i] = clusters[i]; } } -}; +} static void bt (int node_size) @@ -162,19 +162,11 @@ solve () } static void -write_in () -{ -} - -static void write_array () { - int i, j, k, y, ii; + int i, j, k, y, ii, ofs; if (best_t[lev] == 1) - { - write_in (f); - return; - } + return; nn -= (i = best_p[lev]); cluster = best_cluster[lev]; @@ -213,17 +205,26 @@ write_array () for (ii = 1; ii < k; ii++) if (x[ii] < x[i]) i = ii; + + fprintf (f, "static const %s ", key_type_name); + for (j = 0; j < lev; j++) + fprintf (f, "*"); + fprintf (f, "%s", table_name); + /* if (best_t[lev + 1] != 1) */ + fprintf (f, "Level%d", best_lev - lev - 1); + fprintf (f, "[%d*%d] = {", cluster, k); + ofs = 0; for (ii = 0; ii < k; ii++) { int kk, jj; - fprintf (f, "%s ", key_type_name); - for (j = 0; j < lev; j++) - fprintf (f, "*"); - fprintf (f, "%s", table_name); + 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, "[%d] = {", cluster); + { + 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) @@ -248,13 +249,14 @@ write_array () x[i] * pow[n - nn] + j * pow[n - nn - best_p[lev]], digits, x[i] * pow[n - nn] + (j + 1) * pow[n - nn - best_p[lev]] - 1); - fprintf (f, "\n};\n\n"); + ofs += cluster; jj = i; for (j = 0; j < k; j++) if (x[j] > x[i] && (x[j] < x[jj] || jj == i)) jj = j; i = jj; } + fprintf (f, "\n};\n\n"); lev++; write_array (f); lev--; |