Move SymmSwap and other character-related Bidi utility methods from layout to intl/unicharutil. Bug 385539, r+sr=roc
authorsmontagu@smontagu.org
Sat, 30 Jun 2007 22:56:10 -0700
changeset 2997 6437244db1939a5ec48780651595e315d7baf37f
parent 2996 cb39edcf3266d3ec6e3ad2342d407ba64c173c1f
child 2998 c4561b783f25078caeaf46f6c160b63f28003489
push idunknown
push userunknown
push dateunknown
bugs385539
milestone1.9a6pre
Move SymmSwap and other character-related Bidi utility methods from layout to intl/unicharutil. Bug 385539, r+sr=roc
intl/unicharutil/util/Makefile.in
intl/unicharutil/util/bidicattable.h
intl/unicharutil/util/genbidicattable.pl
intl/unicharutil/util/gensymmtable.pl
intl/unicharutil/util/internal/Makefile.in
intl/unicharutil/util/nsBidiUtils.cpp
intl/unicharutil/util/nsBidiUtils.h
intl/unicharutil/util/objs.mk
intl/unicharutil/util/symmtable.h
layout/base/Makefile.in
layout/base/bidicattable.h
layout/base/nsBidi.cpp
layout/base/nsBidi.h
layout/base/nsBidiPresUtils.cpp
layout/base/nsBidiUtils.cpp
layout/base/nsBidiUtils.h
layout/base/symmtable.h
layout/tools/genbidicattable.pl
layout/tools/gensymmtable.pl
layout/xul/base/src/tree/src/Makefile.in
toolkit/library/Makefile.in
--- a/intl/unicharutil/util/Makefile.in
+++ b/intl/unicharutil/util/Makefile.in
@@ -57,20 +57,22 @@ DIST_INSTALL = 1
 REQUIRES=xpcom \
 		string \
 		uconv \
 		$(NULL)
 
 EXPORTS = \
 	nsUnicharUtils.h \
 	nsCompressedCharMap.h \
+	nsBidiUtils.h \
 	$(NULL)
 
 CPPSRCS	= \
 	nsUnicharUtils.cpp \
+	nsBidiUtils.cpp \
 	$(NULL)
 
 FORCE_STATIC_LIB = 1
 FORCE_USE_PIC = 1
 USE_STATIC_LIBS = 1
 
 include $(topsrcdir)/config/rules.mk
 
--- a/intl/unicharutil/util/bidicattable.h
+++ b/intl/unicharutil/util/bidicattable.h
@@ -32,17 +32,17 @@
  * decision by deleting the provisions above and replace them with the notice
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 /* 
     DO NOT EDIT THIS DOCUMENT !!! THIS DOCUMENT IS GENERATED BY
-    mozilla/layout/tools/genbidicattable.pl
+    mozilla/intl/unicharutil/util/genbidicattable.pl
  */
 
 
 #include "nscore.h" 
 
 static PRUint8 gBidiCatIdx1[256] = {
      11,  /* U+0000 - U+0007 : 0xBBBBBBBB */
      16,  /* U+0008 - U+000F : 0xBBCEDCDB */
--- a/intl/unicharutil/util/genbidicattable.pl
+++ b/intl/unicharutil/util/genbidicattable.pl
@@ -77,18 +77,18 @@
 open ( UNICODATA , "< UnicodeData-Latest.txt") 
    || die "cannot find UnicodeData-Latest.txt";
 
 ######################################################################
 #
 # Open the output file
 #
 ######################################################################
-open ( OUT , "> ../base/bidicattable.h") 
-  || die "cannot open output ../base/src/bidicattable.h file";
+open ( OUT , "> bidicattable.h") 
+  || die "cannot open output bidicattable.h file";
 
 ######################################################################
 #
 # Generate license and header
 #
 ######################################################################
 $npl = <<END_OF_NPL;
 /* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
@@ -125,17 +125,17 @@ open ( OUT , "> ../base/bidicattable.h")
  * decision by deleting the provisions above and replace them with the notice
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 /* 
     DO NOT EDIT THIS DOCUMENT !!! THIS DOCUMENT IS GENERATED BY
-    mozilla/layout/tools/genbidicattable.pl
+    mozilla/intl/unicharutil/util/genbidicattable.pl
  */
 END_OF_NPL
 print OUT $npl;
 print OUT "\n\n#include \"nscore.h\" \n\n";
 
 
 %bidicategory = ();
 %sh = ();
--- a/intl/unicharutil/util/gensymmtable.pl
+++ b/intl/unicharutil/util/gensymmtable.pl
@@ -63,18 +63,18 @@ while (<UNICODATA>) {
     }
     @table[hex($1)]=hex($2);           # Enter the symmetric pair in the table
     @isblock[hex(substr($1, 0, 2))]=1; # Remember this block
   }
 }
 close(UNICODATA);
 
 # Generate license and header
-open ( OUT , "> ../base/symmtable.h") 
-  || die "cannot open output ../base/src/symmtable.h file";
+open ( OUT , "> symmtable.h") 
+  || die "cannot open output symmtable.h file";
 $npl = <<END_OF_NPL;
 /* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
  *
  * ***** BEGIN LICENSE BLOCK *****
  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
  *
  * The contents of this file are subject to the Mozilla Public License Version
  * 1.1 (the "License"); you may not use this file except in compliance with
@@ -106,17 +106,17 @@ open ( OUT , "> ../base/symmtable.h")
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
  
 /* 
     DO NOT EDIT THIS DOCUMENT !!! THIS DOCUMENT IS GENERATED BY
-    mozilla/layout/tools/gensymmtable.pl
+    mozilla/intl/unicharutil/util/gensymmtable.pl
  */
 END_OF_NPL
 print OUT $npl;
 
 # Generate data tables
 $indexed_blocks = 0;
 printf OUT "\n/* Indexes to symmtable by Unicode block */\n";
 printf OUT "const static PRUint8 symmtable_index[256] = {\n";
--- a/intl/unicharutil/util/internal/Makefile.in
+++ b/intl/unicharutil/util/internal/Makefile.in
@@ -52,16 +52,18 @@ LIBRARY_NAME=unicharutil_s
 DIST_INSTALL = 1
 EXPORT_LIBRARY = 1
 MOZILLA_INTERNAL_API = 1
 
 include $(srcdir)/../objs.mk
 
 EXTRA_DEPS += $(srcdir)/../objs.mk
 
+LOCAL_INCLUDES	+= -I$(srcdir)/.. \
+
 REQUIRES=xpcom \
 		string \
 		uconv \
 		$(NULL)
 
 CPPSRCS	= $(INTL_UNICHARUTIL_UTIL_LCPPSRCS)
 
 FORCE_STATIC_LIB = 1
--- a/intl/unicharutil/util/nsBidiUtils.cpp
+++ b/intl/unicharutil/util/nsBidiUtils.cpp
@@ -35,16 +35,18 @@
  * use your version of this file under the terms of the MPL, indicate your
  * decision by deleting the provisions above and replace them with the notice
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 #include "nsBidiUtils.h"
+#include "symmtable.h"
+#include "bidicattable.h"
 
 #define FE_TO_06_OFFSET 0xfe70
 
 static const PRUnichar FE_TO_06 [][2] = {
     {0x064b,0x0000},{0x064b,0x0640},{0x064c,0x0000},
     {0x0000,0x0000},{0x064d,0x0000},{0x0000,0x0000},
     {0x064e,0x0000},{0x064e,0x0640},{0x064f,0x0000},
     {0x064f,0x0640},{0x0650,0x0000},{0x0650,0x0640},
@@ -244,16 +246,42 @@ 0x82E0, // 0xFE82 0xFEE0 -> 0xFEF6
 0x84DF, // 0xFE84 0xFEDF -> 0xFEF7
 0x84E0, // 0xFE84 0xFEE0 -> 0xFEF8
 0x88DF, // 0xFE88 0xFEDF -> 0xFEF9
 0x88E0, // 0xFE88 0xFEE0 -> 0xFEFA
 0x8EDF, // 0xFE8E 0xFEDF -> 0xFEFB
 0x8EE0  // 0xFE8E 0xFEE0 -> 0xFEFC
 };
 
+static nsCharType ebc2ucd[15] = {
+  eCharType_OtherNeutral, /* Placeholder -- there will never be a 0 index value */
+  eCharType_LeftToRight,
+  eCharType_RightToLeft,
+  eCharType_RightToLeftArabic,
+  eCharType_ArabicNumber,
+  eCharType_EuropeanNumber,
+  eCharType_EuropeanNumberSeparator,
+  eCharType_EuropeanNumberTerminator,
+  eCharType_CommonNumberSeparator,
+  eCharType_OtherNeutral,
+  eCharType_DirNonSpacingMark,
+  eCharType_BoundaryNeutral,
+  eCharType_BlockSeparator,
+  eCharType_SegmentSeparator,
+  eCharType_WhiteSpaceNeutral
+};
+
+static nsCharType cc2ucd[5] = {
+  eCharType_LeftToRightEmbedding,
+  eCharType_RightToLeftEmbedding,
+  eCharType_PopDirectionalFormat,
+  eCharType_LeftToRightOverride,
+  eCharType_RightToLeftOverride
+};
+
 #define ARABIC_TO_HINDI_DIGIT_INCREMENT (START_HINDI_DIGITS - START_ARABIC_DIGITS)
 #define NUM_TO_ARABIC(c) \
   ((((c)>=START_HINDI_DIGITS) && ((c)<=END_HINDI_DIGITS)) ? \
    ((c) - (PRUint16)ARABIC_TO_HINDI_DIGIT_INCREMENT) : \
    (c))
 #define NUM_TO_HINDI(c) \
   ((((c)>=START_ARABIC_DIGITS) && ((c)<=END_ARABIC_DIGITS)) ? \
    ((c) + (PRUint16)ARABIC_TO_HINDI_DIGIT_INCREMENT): \
@@ -553,8 +581,54 @@ nsresult HandleNumbers(PRUnichar* aBuffe
 }
 
 nsresult HandleNumbers(const nsString& aSrc, nsString& aDst)
 {
   aDst = aSrc;
   return HandleNumbers((PRUnichar *)aDst.get(),aDst.Length(), IBMBIDI_NUMERAL_REGULAR);
 }
 
+PRUint32 SymmSwap(PRUint32 aChar)
+{
+  return Mirrored(aChar);
+}
+
+eBidiCategory GetBidiCategory(PRUint32 aChar)
+{
+  eBidiCategory oResult = GetBidiCat(aChar);
+  if (eBidiCat_CC == oResult)
+    oResult = (eBidiCategory)(aChar & 0xFF); /* Control codes have special treatment to keep the tables smaller */
+  return oResult;
+}
+
+PRBool IsBidiCategory(PRUint32 aChar, eBidiCategory aBidiCategory)
+{
+  return (GetBidiCategory(aChar) == aBidiCategory);
+}
+
+#define LRM_CHAR 0x200e
+PRBool IsBidiControl(PRUint32 aChar)
+{
+  // This method is used when stripping Bidi control characters for
+  // display, so it will return TRUE for LRM and RLM as
+  // well as the characters with category eBidiCat_CC
+  return (eBidiCat_CC == GetBidiCat(aChar) || ((aChar)&0xfffffe)==LRM_CHAR);
+}
+
+nsCharType GetCharType(PRUint32 aChar)
+{
+  nsCharType oResult;
+  eBidiCategory bCat = GetBidiCat(aChar);
+  if (eBidiCat_CC != bCat) {
+    NS_ASSERTION(bCat < (sizeof(ebc2ucd)/sizeof(nsCharType)), "size mismatch");
+    if(bCat < (sizeof(ebc2ucd)/sizeof(nsCharType)))
+      oResult = ebc2ucd[bCat];
+    else 
+      oResult = ebc2ucd[0]; // something is very wrong, but we need to return a value
+  } else {
+    NS_ASSERTION((aChar-0x202a) < (sizeof(cc2ucd)/sizeof(nsCharType)), "size mismatch");
+    if((aChar-0x202a) < (sizeof(cc2ucd)/sizeof(nsCharType)))
+      oResult = cc2ucd[aChar - 0x202a];
+    else 
+      oResult = ebc2ucd[0]; // something is very wrong, but we need to return a value
+  }
+  return oResult;
+}
--- a/intl/unicharutil/util/nsBidiUtils.h
+++ b/intl/unicharutil/util/nsBidiUtils.h
@@ -37,17 +37,89 @@
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
 #ifndef nsBidiUtils_h__
 #define nsBidiUtils_h__
 
 #include "nsCOMPtr.h"
-#include "nsString.h"
+#include "nsStringGlue.h"
+
+   /**
+    *  Read ftp://ftp.unicode.org/Public/UNIDATA/ReadMe-Latest.txt
+    *  section BIDIRECTIONAL PROPERTIES
+    *  for the detailed definition of the following categories
+    *
+    *  The values here must match the equivalents in %map in
+    * mozilla/intl/unicharutil/tools/genbidicattable.pl
+    */
+
+typedef enum {
+  eBidiCat_Undefined,
+  eBidiCat_L,          /* Left-to-Right               */
+  eBidiCat_R,          /* Right-to-Left               */
+  eBidiCat_AL,         /* Right-to-Left Arabic        */
+  eBidiCat_AN,         /* Arabic Number               */
+  eBidiCat_EN,         /* European Number             */
+  eBidiCat_ES,         /* European Number Separator   */
+  eBidiCat_ET,         /* European Number Terminator  */
+  eBidiCat_CS,         /* Common Number Separator     */
+  eBidiCat_ON,         /* Other Neutrals              */
+  eBidiCat_NSM,        /* Non-Spacing Mark            */
+  eBidiCat_BN,         /* Boundary Neutral            */
+  eBidiCat_B,          /* Paragraph Separator         */
+  eBidiCat_S,          /* Segment Separator           */
+  eBidiCat_WS,         /* Whitespace                  */
+  eBidiCat_CC = 0xf,   /* Control Code                */
+                       /* (internal use only - will never be outputed) */
+  eBidiCat_LRE = 0x2a, /* Left-to-Right Embedding     */
+  eBidiCat_RLE = 0x2b, /* Right-to-Left Embedding     */
+  eBidiCat_PDF = 0x2c, /* Pop Directional Formatting  */
+  eBidiCat_LRO = 0x2d, /* Left-to-Right Override      */
+  eBidiCat_RLO = 0x2e  /* Right-to-Left Override      */
+} eBidiCategory;
+
+enum nsCharType   { 
+  eCharType_LeftToRight              = 0, 
+  eCharType_RightToLeft              = 1, 
+  eCharType_EuropeanNumber           = 2,
+  eCharType_EuropeanNumberSeparator  = 3,
+  eCharType_EuropeanNumberTerminator = 4,
+  eCharType_ArabicNumber             = 5,
+  eCharType_CommonNumberSeparator    = 6,
+  eCharType_BlockSeparator           = 7,
+  eCharType_SegmentSeparator         = 8,
+  eCharType_WhiteSpaceNeutral        = 9, 
+  eCharType_OtherNeutral             = 10, 
+  eCharType_LeftToRightEmbedding     = 11,
+  eCharType_LeftToRightOverride      = 12,
+  eCharType_RightToLeftArabic        = 13,
+  eCharType_RightToLeftEmbedding     = 14,
+  eCharType_RightToLeftOverride      = 15,
+  eCharType_PopDirectionalFormat     = 16,
+  eCharType_DirNonSpacingMark        = 17,
+  eCharType_BoundaryNeutral          = 18,
+  eCharType_CharTypeCount
+};
+
+/**
+ * This specifies the language directional property of a character set.
+ */
+typedef enum nsCharType nsCharType;
+
+/**
+ * definitions of bidirection character types by category
+ */
+
+#define CHARTYPE_IS_RTL(val) ( ( (val) == eCharType_RightToLeft) || ( (val) == eCharType_RightToLeftArabic) )
+
+#define CHARTYPE_IS_WEAK(val) ( ( (val) == eCharType_EuropeanNumberSeparator)    \
+                           || ( (val) == eCharType_EuropeanNumberTerminator) \
+                           || ( ( (val) > eCharType_ArabicNumber) && ( (val) != eCharType_RightToLeftArabic) ) )
 
   /**
    * Perform Arabic shaping on a Unichar string
    * @param aString is the input string
    * @param aLen is the length of aStrong
    * @param aBuf receives the shaped output
    * @param aBuflen receives the length of aBuf
    * @param aInputLogical indicates that the input is in logical order
@@ -98,16 +170,45 @@
 
   /**
    * Scan an nsString, converting numerals to Arabic or Hindi forms
    * @param aSrc is the input string
    * @param aDst is the output string
    */
   nsresult HandleNumbers(const nsString& aSrc, nsString& aDst);
 
+  /**
+   * Give a Unicode character, return the symmetric equivalent
+   */
+  PRUint32 SymmSwap(PRUint32 aChar);
+
+  /**
+   * Give a UTF-32 codepoint, return an eBidiCategory
+   */
+  eBidiCategory GetBidiCategory(PRUint32 aChar);
+
+  /**
+   * Give a UTF-32 codepoint and an eBidiCategory, 
+   * return PR_TRUE if the codepoint is in that category, 
+   * return PR_FALSE, otherwise
+   */
+  PRBool IsBidiCategory(PRUint32 aChar, eBidiCategory aBidiCategory);
+
+  /**
+   * Give a UTF-32 codepoint, return a nsCharType (compatible with ICU)
+   */
+  nsCharType GetCharType(PRUint32 aChar);
+
+  /**
+   * Give a UTF-32 codepoint
+   * return PR_TRUE if the codepoint is a Bidi control character (LRE, RLE, PDF, LRO, RLO, LRM, RLM)
+   * return PR_FALSE, otherwise
+   */
+  PRBool IsBidiControl(PRUint32 aChar);
+
 // --------------------------------------------------
 // IBMBIDI 
 // --------------------------------------------------
 //
 // These values are shared with Preferences dialog
 //  ------------------
 //  If Pref values are to be changed
 //  in the XUL file of Prefs. the values
--- a/intl/unicharutil/util/objs.mk
+++ b/intl/unicharutil/util/objs.mk
@@ -32,11 +32,12 @@
 # the provisions above, a recipient may use your version of this file under
 # the terms of any one of the MPL, the GPL or the LGPL.
 #
 # ***** END LICENSE BLOCK *****
 
 INTL_UNICHARUTIL_UTIL_LCPPSRCS = \
 	nsUnicharUtils.cpp \
 	nsCompressedCharMap.cpp \
+	nsBidiUtils.cpp \
 	$(NULL)
 
 INTL_UNICHARUTIL_UTIL_CPPSRCS = $(addprefix $(topsrcdir)/intl/unicharutil/util/, $(INTL_UNICHARUTIL_UTIL_LCPPSRCS))
--- a/intl/unicharutil/util/symmtable.h
+++ b/intl/unicharutil/util/symmtable.h
@@ -33,17 +33,17 @@
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
  
 /* 
     DO NOT EDIT THIS DOCUMENT !!! THIS DOCUMENT IS GENERATED BY
-    mozilla/layout/tools/gensymmtable.pl
+    mozilla/intl/unicharutil/util/gensymmtable.pl
  */
 
 /* Indexes to symmtable by Unicode block */
 const static PRUint8 symmtable_index[256] = {
 /*       _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F */
 /* 0_ */  1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
 /* 1_ */  0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 /* 2_ */  4, 0, 5, 6, 0, 0, 0, 7, 0, 8, 9, 0, 0, 0, 10, 0,
--- a/layout/base/Makefile.in
+++ b/layout/base/Makefile.in
@@ -88,17 +88,16 @@ ifndef MOZ_ENABLE_CAIRO_GFX
 XPIDLSRCS	+= \
 		nsISelectionImageService.idl	\
 		$(NULL)
 endif
 
 EXPORTS		= \
 		nsBidi.h \
 		nsBidiPresUtils.h \
-		nsBidiUtils.h \
 		nsCSSFrameConstructor.h \
 		nsChangeHint.h \
 		nsCompatibility.h \
 		nsDisplayList.h \
 		nsFrameManager.h \
 		nsFrameManagerBase.h \
 		nsFrameTraversal.h \
 		nsICaret.h \
@@ -114,17 +113,16 @@ EXPORTS		= \
 		nsLayoutUtils.h \
 		nsPresContext.h \
 		nsPresState.h \
 		nsStyleChangeList.h \
 		nsStyleConsts.h \
 		$(NULL)
 
 CPPSRCS		= \
-		nsBidiUtils.cpp \
 		nsCSSColorUtils.cpp \
 		nsCSSFrameConstructor.cpp \
 		nsCSSRendering.cpp \
 		nsCaret.cpp \
 		nsChildIterator.cpp \
 		nsCounterManager.cpp \
                 nsDisplayList.cpp \
 		nsDocumentViewer.cpp \
deleted file mode 100644
--- a/layout/base/bidicattable.h
+++ /dev/null
@@ -1,3131 +0,0 @@
-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
- *
- * ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is mozilla.org Code.
- *
- * The Initial Developer of the Original Code is
- * IBM Corporation.
- * Portions created by the Initial Developer are Copyright (C) 2000
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either of the GNU General Public License Version 2 or later (the "GPL"),
- * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-/* 
-    DO NOT EDIT THIS DOCUMENT !!! THIS DOCUMENT IS GENERATED BY
-    mozilla/layout/tools/genbidicattable.pl
- */
-
-
-#include "nscore.h" 
-
-static PRUint8 gBidiCatIdx1[256] = {
-     11,  /* U+0000 - U+0007 : 0xBBBBBBBB */
-     16,  /* U+0008 - U+000F : 0xBBCEDCDB */
-     11,  /* U+0010 - U+0017 : 0xBBBBBBBB */
-     17,  /* U+0018 - U+001F : 0xDCCCBBBB */
-     18,  /* U+0020 - U+0027 : 0x9977799E */
-     19,  /* U+0028 - U+002F : 0x88686999 */
-      5,  /* U+0030 - U+0037 : 0x55555555 */
-     20,  /* U+0038 - U+003F : 0x99999855 */
-     21,  /* U+0040 - U+0047 : 0x11111119 */
-      1,  /* U+0048 - U+004F : 0x11111111 */
-      1,  /* U+0050 - U+0057 : 0x11111111 */
-     22,  /* U+0058 - U+005F : 0x99999111 */
-     21,  /* U+0060 - U+0067 : 0x11111119 */
-      1,  /* U+0068 - U+006F : 0x11111111 */
-      1,  /* U+0070 - U+0077 : 0x11111111 */
-     23,  /* U+0078 - U+007F : 0xB9999111 */
-     24,  /* U+0080 - U+0087 : 0xBBCBBBBB */
-     11,  /* U+0088 - U+008F : 0xBBBBBBBB */
-     11,  /* U+0090 - U+0097 : 0xBBBBBBBB */
-     11,  /* U+0098 - U+009F : 0xBBBBBBBB */
-     25,  /* U+00A0 - U+00A7 : 0x99777798 */
-     26,  /* U+00A8 - U+00AF : 0x99B99199 */
-     27,  /* U+00B0 - U+00B7 : 0x99195577 */
-     28,  /* U+00B8 - U+00BF : 0x99999159 */
-      1,  /* U+00C0 - U+00C7 : 0x11111111 */
-      1,  /* U+00C8 - U+00CF : 0x11111111 */
-     29,  /* U+00D0 - U+00D7 : 0x91111111 */
-      1,  /* U+00D8 - U+00DF : 0x11111111 */
-      1,  /* U+00E0 - U+00E7 : 0x11111111 */
-      1,  /* U+00E8 - U+00EF : 0x11111111 */
-     29,  /* U+00F0 - U+00F7 : 0x91111111 */
-      1,  /* U+00F8 - U+00FF : 0x11111111 */
-      1,  /* U+0100 - U+0107 : 0x11111111 */
-      1,  /* U+0108 - U+010F : 0x11111111 */
-      1,  /* U+0110 - U+0117 : 0x11111111 */
-      1,  /* U+0118 - U+011F : 0x11111111 */
-      1,  /* U+0120 - U+0127 : 0x11111111 */
-      1,  /* U+0128 - U+012F : 0x11111111 */
-      1,  /* U+0130 - U+0137 : 0x11111111 */
-      1,  /* U+0138 - U+013F : 0x11111111 */
-      1,  /* U+0140 - U+0147 : 0x11111111 */
-      1,  /* U+0148 - U+014F : 0x11111111 */
-      1,  /* U+0150 - U+0157 : 0x11111111 */
-      1,  /* U+0158 - U+015F : 0x11111111 */
-      1,  /* U+0160 - U+0167 : 0x11111111 */
-      1,  /* U+0168 - U+016F : 0x11111111 */
-      1,  /* U+0170 - U+0177 : 0x11111111 */
-      1,  /* U+0178 - U+017F : 0x11111111 */
-      1,  /* U+0180 - U+0187 : 0x11111111 */
-      1,  /* U+0188 - U+018F : 0x11111111 */
-      1,  /* U+0190 - U+0197 : 0x11111111 */
-      1,  /* U+0198 - U+019F : 0x11111111 */
-      1,  /* U+01A0 - U+01A7 : 0x11111111 */
-      1,  /* U+01A8 - U+01AF : 0x11111111 */
-      1,  /* U+01B0 - U+01B7 : 0x11111111 */
-      1,  /* U+01B8 - U+01BF : 0x11111111 */
-      1,  /* U+01C0 - U+01C7 : 0x11111111 */
-      1,  /* U+01C8 - U+01CF : 0x11111111 */
-      1,  /* U+01D0 - U+01D7 : 0x11111111 */
-      1,  /* U+01D8 - U+01DF : 0x11111111 */
-      1,  /* U+01E0 - U+01E7 : 0x11111111 */
-      1,  /* U+01E8 - U+01EF : 0x11111111 */
-      1,  /* U+01F0 - U+01F7 : 0x11111111 */
-      1,  /* U+01F8 - U+01FF : 0x11111111 */
-      1,  /* U+0200 - U+0207 : 0x11111111 */
-      1,  /* U+0208 - U+020F : 0x11111111 */
-      1,  /* U+0210 - U+0217 : 0x11111111 */
-      1,  /* U+0218 - U+021F : 0x11111111 */
-      1,  /* U+0220 - U+0227 : 0x11111111 */
-      1,  /* U+0228 - U+022F : 0x11111111 */
-      1,  /* U+0230 - U+0237 : 0x11111111 */
-      1,  /* U+0238 - U+023F : 0x11111111 */
-      1,  /* U+0240 - U+0247 : 0x11111111 */
-      1,  /* U+0248 - U+024F : 0x11111111 */
-      1,  /* U+0250 - U+0257 : 0x11111111 */
-      1,  /* U+0258 - U+025F : 0x11111111 */
-      1,  /* U+0260 - U+0267 : 0x11111111 */
-      1,  /* U+0268 - U+026F : 0x11111111 */
-      1,  /* U+0270 - U+0277 : 0x11111111 */
-      1,  /* U+0278 - U+027F : 0x11111111 */
-      1,  /* U+0280 - U+0287 : 0x11111111 */
-      1,  /* U+0288 - U+028F : 0x11111111 */
-      1,  /* U+0290 - U+0297 : 0x11111111 */
-      1,  /* U+0298 - U+029F : 0x11111111 */
-      1,  /* U+02A0 - U+02A7 : 0x11111111 */
-      1,  /* U+02A8 - U+02AF : 0x11111111 */
-      1,  /* U+02B0 - U+02B7 : 0x11111111 */
-     30,  /* U+02B8 - U+02BF : 0x11111991 */
-     31,  /* U+02C0 - U+02C7 : 0x99999911 */
-      9,  /* U+02C8 - U+02CF : 0x99999999 */
-     31,  /* U+02D0 - U+02D7 : 0x99999911 */
-      9,  /* U+02D8 - U+02DF : 0x99999999 */
-     32,  /* U+02E0 - U+02E7 : 0x99911111 */
-     33,  /* U+02E8 - U+02EF : 0x91999999 */
-      9,  /* U+02F0 - U+02F7 : 0x99999999 */
-      9,  /* U+02F8 - U+02FF : 0x99999999 */
-     10,  /* U+0300 - U+0307 : 0xAAAAAAAA */
-     10,  /* U+0308 - U+030F : 0xAAAAAAAA */
-     10,  /* U+0310 - U+0317 : 0xAAAAAAAA */
-     10,  /* U+0318 - U+031F : 0xAAAAAAAA */
-     10,  /* U+0320 - U+0327 : 0xAAAAAAAA */
-     10,  /* U+0328 - U+032F : 0xAAAAAAAA */
-     10,  /* U+0330 - U+0337 : 0xAAAAAAAA */
-     10,  /* U+0338 - U+033F : 0xAAAAAAAA */
-     10,  /* U+0340 - U+0347 : 0xAAAAAAAA */
-     10,  /* U+0348 - U+034F : 0xAAAAAAAA */
-     10,  /* U+0350 - U+0357 : 0xAAAAAAAA */
-     10,  /* U+0358 - U+035F : 0xAAAAAAAA */
-     10,  /* U+0360 - U+0367 : 0xAAAAAAAA */
-     10,  /* U+0368 - U+036F : 0xAAAAAAAA */
-     34,  /* U+0370 - U+0377 : 0x11991111 */
-     35,  /* U+0378 - U+037F : 0x19111111 */
-     36,  /* U+0380 - U+0387 : 0x91991111 */
-      1,  /* U+0388 - U+038F : 0x11111111 */
-      1,  /* U+0390 - U+0397 : 0x11111111 */
-      1,  /* U+0398 - U+039F : 0x11111111 */
-      1,  /* U+03A0 - U+03A7 : 0x11111111 */
-      1,  /* U+03A8 - U+03AF : 0x11111111 */
-      1,  /* U+03B0 - U+03B7 : 0x11111111 */
-      1,  /* U+03B8 - U+03BF : 0x11111111 */
-      1,  /* U+03C0 - U+03C7 : 0x11111111 */
-      1,  /* U+03C8 - U+03CF : 0x11111111 */
-      1,  /* U+03D0 - U+03D7 : 0x11111111 */
-      1,  /* U+03D8 - U+03DF : 0x11111111 */
-      1,  /* U+03E0 - U+03E7 : 0x11111111 */
-      1,  /* U+03E8 - U+03EF : 0x11111111 */
-     35,  /* U+03F0 - U+03F7 : 0x19111111 */
-      1,  /* U+03F8 - U+03FF : 0x11111111 */
-      1,  /* U+0400 - U+0407 : 0x11111111 */
-      1,  /* U+0408 - U+040F : 0x11111111 */
-      1,  /* U+0410 - U+0417 : 0x11111111 */
-      1,  /* U+0418 - U+041F : 0x11111111 */
-      1,  /* U+0420 - U+0427 : 0x11111111 */
-      1,  /* U+0428 - U+042F : 0x11111111 */
-      1,  /* U+0430 - U+0437 : 0x11111111 */
-      1,  /* U+0438 - U+043F : 0x11111111 */
-      1,  /* U+0440 - U+0447 : 0x11111111 */
-      1,  /* U+0448 - U+044F : 0x11111111 */
-      1,  /* U+0450 - U+0457 : 0x11111111 */
-      1,  /* U+0458 - U+045F : 0x11111111 */
-      1,  /* U+0460 - U+0467 : 0x11111111 */
-      1,  /* U+0468 - U+046F : 0x11111111 */
-      1,  /* U+0470 - U+0477 : 0x11111111 */
-      1,  /* U+0478 - U+047F : 0x11111111 */
-     37,  /* U+0480 - U+0487 : 0x1AAAA111 */
-     38,  /* U+0488 - U+048F : 0x111111AA */
-      1,  /* U+0490 - U+0497 : 0x11111111 */
-      1,  /* U+0498 - U+049F : 0x11111111 */
-      1,  /* U+04A0 - U+04A7 : 0x11111111 */
-      1,  /* U+04A8 - U+04AF : 0x11111111 */
-      1,  /* U+04B0 - U+04B7 : 0x11111111 */
-      1,  /* U+04B8 - U+04BF : 0x11111111 */
-      1,  /* U+04C0 - U+04C7 : 0x11111111 */
-      1,  /* U+04C8 - U+04CF : 0x11111111 */
-      1,  /* U+04D0 - U+04D7 : 0x11111111 */
-      1,  /* U+04D8 - U+04DF : 0x11111111 */
-      1,  /* U+04E0 - U+04E7 : 0x11111111 */
-      1,  /* U+04E8 - U+04EF : 0x11111111 */
-      1,  /* U+04F0 - U+04F7 : 0x11111111 */
-      1,  /* U+04F8 - U+04FF : 0x11111111 */
-      1,  /* U+0500 - U+0507 : 0x11111111 */
-      1,  /* U+0508 - U+050F : 0x11111111 */
-      1,  /* U+0510 - U+0517 : 0x11111111 */
-      1,  /* U+0518 - U+051F : 0x11111111 */
-      1,  /* U+0520 - U+0527 : 0x11111111 */
-      1,  /* U+0528 - U+052F : 0x11111111 */
-      1,  /* U+0530 - U+0537 : 0x11111111 */
-      1,  /* U+0538 - U+053F : 0x11111111 */
-      1,  /* U+0540 - U+0547 : 0x11111111 */
-      1,  /* U+0548 - U+054F : 0x11111111 */
-      1,  /* U+0550 - U+0557 : 0x11111111 */
-      1,  /* U+0558 - U+055F : 0x11111111 */
-      1,  /* U+0560 - U+0567 : 0x11111111 */
-      1,  /* U+0568 - U+056F : 0x11111111 */
-      1,  /* U+0570 - U+0577 : 0x11111111 */
-      1,  /* U+0578 - U+057F : 0x11111111 */
-      1,  /* U+0580 - U+0587 : 0x11111111 */
-     39,  /* U+0588 - U+058F : 0x11111911 */
-     40,  /* U+0590 - U+0597 : 0xAAAAAAA2 */
-     10,  /* U+0598 - U+059F : 0xAAAAAAAA */
-     10,  /* U+05A0 - U+05A7 : 0xAAAAAAAA */
-     10,  /* U+05A8 - U+05AF : 0xAAAAAAAA */
-     10,  /* U+05B0 - U+05B7 : 0xAAAAAAAA */
-     41,  /* U+05B8 - U+05BF : 0xA2AAAAAA */
-     42,  /* U+05C0 - U+05C7 : 0xA2AA2AA2 */
-      2,  /* U+05C8 - U+05CF : 0x22222222 */
-      2,  /* U+05D0 - U+05D7 : 0x22222222 */
-      2,  /* U+05D8 - U+05DF : 0x22222222 */
-      2,  /* U+05E0 - U+05E7 : 0x22222222 */
-      2,  /* U+05E8 - U+05EF : 0x22222222 */
-      2,  /* U+05F0 - U+05F7 : 0x22222222 */
-      2,  /* U+05F8 - U+05FF : 0x22222222 */
-      3,  /* U+0600 - U+0607 : 0x33333333 */
-     43,  /* U+0608 - U+060F : 0x99383333 */
-     44,  /* U+0610 - U+0617 : 0x33AAAAAA */
-      3,  /* U+0618 - U+061F : 0x33333333 */
-      3,  /* U+0620 - U+0627 : 0x33333333 */
-      3,  /* U+0628 - U+062F : 0x33333333 */
-      3,  /* U+0630 - U+0637 : 0x33333333 */
-      3,  /* U+0638 - U+063F : 0x33333333 */
-      3,  /* U+0640 - U+0647 : 0x33333333 */
-     45,  /* U+0648 - U+064F : 0xAAAAA333 */
-     10,  /* U+0650 - U+0657 : 0xAAAAAAAA */
-     46,  /* U+0658 - U+065F : 0x3AAAAAAA */
-      4,  /* U+0660 - U+0667 : 0x44444444 */
-     47,  /* U+0668 - U+066F : 0x33344744 */
-     48,  /* U+0670 - U+0677 : 0x3333333A */
-      3,  /* U+0678 - U+067F : 0x33333333 */
-      3,  /* U+0680 - U+0687 : 0x33333333 */
-      3,  /* U+0688 - U+068F : 0x33333333 */
-      3,  /* U+0690 - U+0697 : 0x33333333 */
-      3,  /* U+0698 - U+069F : 0x33333333 */
-      3,  /* U+06A0 - U+06A7 : 0x33333333 */
-      3,  /* U+06A8 - U+06AF : 0x33333333 */
-      3,  /* U+06B0 - U+06B7 : 0x33333333 */
-      3,  /* U+06B8 - U+06BF : 0x33333333 */
-      3,  /* U+06C0 - U+06C7 : 0x33333333 */
-      3,  /* U+06C8 - U+06CF : 0x33333333 */
-     49,  /* U+06D0 - U+06D7 : 0xAA333333 */
-     50,  /* U+06D8 - U+06DF : 0xAA3AAAAA */
-     51,  /* U+06E0 - U+06E7 : 0xA33AAAAA */
-     52,  /* U+06E8 - U+06EF : 0x33AAAA9A */
-      5,  /* U+06F0 - U+06F7 : 0x55555555 */
-     53,  /* U+06F8 - U+06FF : 0x33333355 */
-      3,  /* U+0700 - U+0707 : 0x33333333 */
-     54,  /* U+0708 - U+070F : 0xB3333333 */
-     55,  /* U+0710 - U+0717 : 0x333333A3 */
-      3,  /* U+0718 - U+071F : 0x33333333 */
-      3,  /* U+0720 - U+0727 : 0x33333333 */
-      3,  /* U+0728 - U+072F : 0x33333333 */
-     10,  /* U+0730 - U+0737 : 0xAAAAAAAA */
-     10,  /* U+0738 - U+073F : 0xAAAAAAAA */
-     10,  /* U+0740 - U+0747 : 0xAAAAAAAA */
-     56,  /* U+0748 - U+074F : 0x33333AAA */
-      3,  /* U+0750 - U+0757 : 0x33333333 */
-      3,  /* U+0758 - U+075F : 0x33333333 */
-      3,  /* U+0760 - U+0767 : 0x33333333 */
-      3,  /* U+0768 - U+076F : 0x33333333 */
-      3,  /* U+0770 - U+0777 : 0x33333333 */
-      3,  /* U+0778 - U+077F : 0x33333333 */
-      3,  /* U+0780 - U+0787 : 0x33333333 */
-      3,  /* U+0788 - U+078F : 0x33333333 */
-      3,  /* U+0790 - U+0797 : 0x33333333 */
-      3,  /* U+0798 - U+079F : 0x33333333 */
-     49,  /* U+07A0 - U+07A7 : 0xAA333333 */
-     10,  /* U+07A8 - U+07AF : 0xAAAAAAAA */
-     48,  /* U+07B0 - U+07B7 : 0x3333333A */
-      3,  /* U+07B8 - U+07BF : 0x33333333 */
-      2,  /* U+07C0 - U+07C7 : 0x22222222 */
-      2,  /* U+07C8 - U+07CF : 0x22222222 */
-      2,  /* U+07D0 - U+07D7 : 0x22222222 */
-      2,  /* U+07D8 - U+07DF : 0x22222222 */
-      2,  /* U+07E0 - U+07E7 : 0x22222222 */
-     57,  /* U+07E8 - U+07EF : 0xAAAAA222 */
-     58,  /* U+07F0 - U+07F7 : 0x9922AAAA */
-     59,  /* U+07F8 - U+07FF : 0x22222299 */
-};
-
-static PRUint8 gBidiCatIdx2[592] = {
-     60,  /* U+0900 - U+0907 : 0x11111AA1 */
-      1,  /* U+0908 - U+090F : 0x11111111 */
-      1,  /* U+0910 - U+0917 : 0x11111111 */
-      1,  /* U+0918 - U+091F : 0x11111111 */
-      1,  /* U+0920 - U+0927 : 0x11111111 */
-      1,  /* U+0928 - U+092F : 0x11111111 */
-      1,  /* U+0930 - U+0937 : 0x11111111 */
-     61,  /* U+0938 - U+093F : 0x111A1111 */
-     62,  /* U+0940 - U+0947 : 0xAAAAAAA1 */
-     63,  /* U+0948 - U+094F : 0x11A1111A */
-     64,  /* U+0950 - U+0957 : 0x111AAAA1 */
-      1,  /* U+0958 - U+095F : 0x11111111 */
-     65,  /* U+0960 - U+0967 : 0x1111AA11 */
-      1,  /* U+0968 - U+096F : 0x11111111 */
-      1,  /* U+0970 - U+0977 : 0x11111111 */
-      1,  /* U+0978 - U+097F : 0x11111111 */
-     66,  /* U+0980 - U+0987 : 0x111111A1 */
-      1,  /* U+0988 - U+098F : 0x11111111 */
-      1,  /* U+0990 - U+0997 : 0x11111111 */
-      1,  /* U+0998 - U+099F : 0x11111111 */
-      1,  /* U+09A0 - U+09A7 : 0x11111111 */
-      1,  /* U+09A8 - U+09AF : 0x11111111 */
-      1,  /* U+09B0 - U+09B7 : 0x11111111 */
-     61,  /* U+09B8 - U+09BF : 0x111A1111 */
-     64,  /* U+09C0 - U+09C7 : 0x111AAAA1 */
-     67,  /* U+09C8 - U+09CF : 0x11A11111 */
-      1,  /* U+09D0 - U+09D7 : 0x11111111 */
-      1,  /* U+09D8 - U+09DF : 0x11111111 */
-     65,  /* U+09E0 - U+09E7 : 0x1111AA11 */
-      1,  /* U+09E8 - U+09EF : 0x11111111 */
-     68,  /* U+09F0 - U+09F7 : 0x11117711 */
-      1,  /* U+09F8 - U+09FF : 0x11111111 */
-     60,  /* U+0A00 - U+0A07 : 0x11111AA1 */
-      1,  /* U+0A08 - U+0A0F : 0x11111111 */
-      1,  /* U+0A10 - U+0A17 : 0x11111111 */
-      1,  /* U+0A18 - U+0A1F : 0x11111111 */
-      1,  /* U+0A20 - U+0A27 : 0x11111111 */
-      1,  /* U+0A28 - U+0A2F : 0x11111111 */
-      1,  /* U+0A30 - U+0A37 : 0x11111111 */
-     61,  /* U+0A38 - U+0A3F : 0x111A1111 */
-     69,  /* U+0A40 - U+0A47 : 0xA1111AA1 */
-     70,  /* U+0A48 - U+0A4F : 0x11AAA11A */
-      1,  /* U+0A50 - U+0A57 : 0x11111111 */
-      1,  /* U+0A58 - U+0A5F : 0x11111111 */
-      1,  /* U+0A60 - U+0A67 : 0x11111111 */
-      1,  /* U+0A68 - U+0A6F : 0x11111111 */
-     38,  /* U+0A70 - U+0A77 : 0x111111AA */
-      1,  /* U+0A78 - U+0A7F : 0x11111111 */
-     60,  /* U+0A80 - U+0A87 : 0x11111AA1 */
-      1,  /* U+0A88 - U+0A8F : 0x11111111 */
-      1,  /* U+0A90 - U+0A97 : 0x11111111 */
-      1,  /* U+0A98 - U+0A9F : 0x11111111 */
-      1,  /* U+0AA0 - U+0AA7 : 0x11111111 */
-      1,  /* U+0AA8 - U+0AAF : 0x11111111 */
-      1,  /* U+0AB0 - U+0AB7 : 0x11111111 */
-     61,  /* U+0AB8 - U+0ABF : 0x111A1111 */
-     71,  /* U+0AC0 - U+0AC7 : 0xA1AAAAA1 */
-     63,  /* U+0AC8 - U+0ACF : 0x11A1111A */
-      1,  /* U+0AD0 - U+0AD7 : 0x11111111 */
-      1,  /* U+0AD8 - U+0ADF : 0x11111111 */
-     65,  /* U+0AE0 - U+0AE7 : 0x1111AA11 */
-      1,  /* U+0AE8 - U+0AEF : 0x11111111 */
-     72,  /* U+0AF0 - U+0AF7 : 0x11111171 */
-      1,  /* U+0AF8 - U+0AFF : 0x11111111 */
-     66,  /* U+0B00 - U+0B07 : 0x111111A1 */
-      1,  /* U+0B08 - U+0B0F : 0x11111111 */
-      1,  /* U+0B10 - U+0B17 : 0x11111111 */
-      1,  /* U+0B18 - U+0B1F : 0x11111111 */
-      1,  /* U+0B20 - U+0B27 : 0x11111111 */
-      1,  /* U+0B28 - U+0B2F : 0x11111111 */
-      1,  /* U+0B30 - U+0B37 : 0x11111111 */
-     73,  /* U+0B38 - U+0B3F : 0xA11A1111 */
-     74,  /* U+0B40 - U+0B47 : 0x1111AAA1 */
-     67,  /* U+0B48 - U+0B4F : 0x11A11111 */
-     75,  /* U+0B50 - U+0B57 : 0x1A111111 */
-      1,  /* U+0B58 - U+0B5F : 0x11111111 */
-      1,  /* U+0B60 - U+0B67 : 0x11111111 */
-      1,  /* U+0B68 - U+0B6F : 0x11111111 */
-      1,  /* U+0B70 - U+0B77 : 0x11111111 */
-      1,  /* U+0B78 - U+0B7F : 0x11111111 */
-     76,  /* U+0B80 - U+0B87 : 0x11111A11 */
-      1,  /* U+0B88 - U+0B8F : 0x11111111 */
-      1,  /* U+0B90 - U+0B97 : 0x11111111 */
-      1,  /* U+0B98 - U+0B9F : 0x11111111 */
-      1,  /* U+0BA0 - U+0BA7 : 0x11111111 */
-      1,  /* U+0BA8 - U+0BAF : 0x11111111 */
-      1,  /* U+0BB0 - U+0BB7 : 0x11111111 */
-      1,  /* U+0BB8 - U+0BBF : 0x11111111 */
-     77,  /* U+0BC0 - U+0BC7 : 0x1111111A */
-     67,  /* U+0BC8 - U+0BCF : 0x11A11111 */
-      1,  /* U+0BD0 - U+0BD7 : 0x11111111 */
-      1,  /* U+0BD8 - U+0BDF : 0x11111111 */
-      1,  /* U+0BE0 - U+0BE7 : 0x11111111 */
-      1,  /* U+0BE8 - U+0BEF : 0x11111111 */
-     22,  /* U+0BF0 - U+0BF7 : 0x99999111 */
-     78,  /* U+0BF8 - U+0BFF : 0x11111979 */
-      1,  /* U+0C00 - U+0C07 : 0x11111111 */
-      1,  /* U+0C08 - U+0C0F : 0x11111111 */
-      1,  /* U+0C10 - U+0C17 : 0x11111111 */
-      1,  /* U+0C18 - U+0C1F : 0x11111111 */
-      1,  /* U+0C20 - U+0C27 : 0x11111111 */
-      1,  /* U+0C28 - U+0C2F : 0x11111111 */
-      1,  /* U+0C30 - U+0C37 : 0x11111111 */
-     79,  /* U+0C38 - U+0C3F : 0xAA111111 */
-     80,  /* U+0C40 - U+0C47 : 0xAA11111A */
-     81,  /* U+0C48 - U+0C4F : 0x11AAAA1A */
-     82,  /* U+0C50 - U+0C57 : 0x1AA11111 */
-      1,  /* U+0C58 - U+0C5F : 0x11111111 */
-      1,  /* U+0C60 - U+0C67 : 0x11111111 */
-      1,  /* U+0C68 - U+0C6F : 0x11111111 */
-      1,  /* U+0C70 - U+0C77 : 0x11111111 */
-      1,  /* U+0C78 - U+0C7F : 0x11111111 */
-      1,  /* U+0C80 - U+0C87 : 0x11111111 */
-      1,  /* U+0C88 - U+0C8F : 0x11111111 */
-      1,  /* U+0C90 - U+0C97 : 0x11111111 */
-      1,  /* U+0C98 - U+0C9F : 0x11111111 */
-      1,  /* U+0CA0 - U+0CA7 : 0x11111111 */
-      1,  /* U+0CA8 - U+0CAF : 0x11111111 */
-      1,  /* U+0CB0 - U+0CB7 : 0x11111111 */
-     61,  /* U+0CB8 - U+0CBF : 0x111A1111 */
-      1,  /* U+0CC0 - U+0CC7 : 0x11111111 */
-     83,  /* U+0CC8 - U+0CCF : 0x11AA1111 */
-      1,  /* U+0CD0 - U+0CD7 : 0x11111111 */
-      1,  /* U+0CD8 - U+0CDF : 0x11111111 */
-     65,  /* U+0CE0 - U+0CE7 : 0x1111AA11 */
-      1,  /* U+0CE8 - U+0CEF : 0x11111111 */
-     30,  /* U+0CF0 - U+0CF7 : 0x11111991 */
-      1,  /* U+0CF8 - U+0CFF : 0x11111111 */
-      1,  /* U+0D00 - U+0D07 : 0x11111111 */
-      1,  /* U+0D08 - U+0D0F : 0x11111111 */
-      1,  /* U+0D10 - U+0D17 : 0x11111111 */
-      1,  /* U+0D18 - U+0D1F : 0x11111111 */
-      1,  /* U+0D20 - U+0D27 : 0x11111111 */
-      1,  /* U+0D28 - U+0D2F : 0x11111111 */
-      1,  /* U+0D30 - U+0D37 : 0x11111111 */
-      1,  /* U+0D38 - U+0D3F : 0x11111111 */
-     74,  /* U+0D40 - U+0D47 : 0x1111AAA1 */
-     67,  /* U+0D48 - U+0D4F : 0x11A11111 */
-      1,  /* U+0D50 - U+0D57 : 0x11111111 */
-      1,  /* U+0D58 - U+0D5F : 0x11111111 */
-      1,  /* U+0D60 - U+0D67 : 0x11111111 */
-      1,  /* U+0D68 - U+0D6F : 0x11111111 */
-      1,  /* U+0D70 - U+0D77 : 0x11111111 */
-      1,  /* U+0D78 - U+0D7F : 0x11111111 */
-      1,  /* U+0D80 - U+0D87 : 0x11111111 */
-      1,  /* U+0D88 - U+0D8F : 0x11111111 */
-      1,  /* U+0D90 - U+0D97 : 0x11111111 */
-      1,  /* U+0D98 - U+0D9F : 0x11111111 */
-      1,  /* U+0DA0 - U+0DA7 : 0x11111111 */
-      1,  /* U+0DA8 - U+0DAF : 0x11111111 */
-      1,  /* U+0DB0 - U+0DB7 : 0x11111111 */
-      1,  /* U+0DB8 - U+0DBF : 0x11111111 */
-      1,  /* U+0DC0 - U+0DC7 : 0x11111111 */
-     76,  /* U+0DC8 - U+0DCF : 0x11111A11 */
-     84,  /* U+0DD0 - U+0DD7 : 0x1A1AAA11 */
-      1,  /* U+0DD8 - U+0DDF : 0x11111111 */
-      1,  /* U+0DE0 - U+0DE7 : 0x11111111 */
-      1,  /* U+0DE8 - U+0DEF : 0x11111111 */
-      1,  /* U+0DF0 - U+0DF7 : 0x11111111 */
-      1,  /* U+0DF8 - U+0DFF : 0x11111111 */
-      1,  /* U+0E00 - U+0E07 : 0x11111111 */
-      1,  /* U+0E08 - U+0E0F : 0x11111111 */
-      1,  /* U+0E10 - U+0E17 : 0x11111111 */
-      1,  /* U+0E18 - U+0E1F : 0x11111111 */
-      1,  /* U+0E20 - U+0E27 : 0x11111111 */
-      1,  /* U+0E28 - U+0E2F : 0x11111111 */
-     85,  /* U+0E30 - U+0E37 : 0xAAAA11A1 */
-     86,  /* U+0E38 - U+0E3F : 0x71111AAA */
-     87,  /* U+0E40 - U+0E47 : 0xA1111111 */
-     88,  /* U+0E48 - U+0E4F : 0x1AAAAAAA */
-      1,  /* U+0E50 - U+0E57 : 0x11111111 */
-      1,  /* U+0E58 - U+0E5F : 0x11111111 */
-      1,  /* U+0E60 - U+0E67 : 0x11111111 */
-      1,  /* U+0E68 - U+0E6F : 0x11111111 */
-      1,  /* U+0E70 - U+0E77 : 0x11111111 */
-      1,  /* U+0E78 - U+0E7F : 0x11111111 */
-      1,  /* U+0E80 - U+0E87 : 0x11111111 */
-      1,  /* U+0E88 - U+0E8F : 0x11111111 */
-      1,  /* U+0E90 - U+0E97 : 0x11111111 */
-      1,  /* U+0E98 - U+0E9F : 0x11111111 */
-      1,  /* U+0EA0 - U+0EA7 : 0x11111111 */
-      1,  /* U+0EA8 - U+0EAF : 0x11111111 */
-     85,  /* U+0EB0 - U+0EB7 : 0xAAAA11A1 */
-     89,  /* U+0EB8 - U+0EBF : 0x111AA1AA */
-      1,  /* U+0EC0 - U+0EC7 : 0x11111111 */
-     90,  /* U+0EC8 - U+0ECF : 0x11AAAAAA */
-      1,  /* U+0ED0 - U+0ED7 : 0x11111111 */
-      1,  /* U+0ED8 - U+0EDF : 0x11111111 */
-      1,  /* U+0EE0 - U+0EE7 : 0x11111111 */
-      1,  /* U+0EE8 - U+0EEF : 0x11111111 */
-      1,  /* U+0EF0 - U+0EF7 : 0x11111111 */
-      1,  /* U+0EF8 - U+0EFF : 0x11111111 */
-      1,  /* U+0F00 - U+0F07 : 0x11111111 */
-      1,  /* U+0F08 - U+0F0F : 0x11111111 */
-      1,  /* U+0F10 - U+0F17 : 0x11111111 */
-     38,  /* U+0F18 - U+0F1F : 0x111111AA */
-      1,  /* U+0F20 - U+0F27 : 0x11111111 */
-      1,  /* U+0F28 - U+0F2F : 0x11111111 */
-     91,  /* U+0F30 - U+0F37 : 0xA1A11111 */
-     92,  /* U+0F38 - U+0F3F : 0x119999A1 */
-      1,  /* U+0F40 - U+0F47 : 0x11111111 */
-      1,  /* U+0F48 - U+0F4F : 0x11111111 */
-      1,  /* U+0F50 - U+0F57 : 0x11111111 */
-      1,  /* U+0F58 - U+0F5F : 0x11111111 */
-      1,  /* U+0F60 - U+0F67 : 0x11111111 */
-      1,  /* U+0F68 - U+0F6F : 0x11111111 */
-     62,  /* U+0F70 - U+0F77 : 0xAAAAAAA1 */
-     88,  /* U+0F78 - U+0F7F : 0x1AAAAAAA */
-     93,  /* U+0F80 - U+0F87 : 0xAA1AAAAA */
-      1,  /* U+0F88 - U+0F8F : 0x11111111 */
-     10,  /* U+0F90 - U+0F97 : 0xAAAAAAAA */
-     62,  /* U+0F98 - U+0F9F : 0xAAAAAAA1 */
-     10,  /* U+0FA0 - U+0FA7 : 0xAAAAAAAA */
-     10,  /* U+0FA8 - U+0FAF : 0xAAAAAAAA */
-     10,  /* U+0FB0 - U+0FB7 : 0xAAAAAAAA */
-     94,  /* U+0FB8 - U+0FBF : 0x111AAAAA */
-     75,  /* U+0FC0 - U+0FC7 : 0x1A111111 */
-      1,  /* U+0FC8 - U+0FCF : 0x11111111 */
-      1,  /* U+0FD0 - U+0FD7 : 0x11111111 */
-      1,  /* U+0FD8 - U+0FDF : 0x11111111 */
-      1,  /* U+0FE0 - U+0FE7 : 0x11111111 */
-      1,  /* U+0FE8 - U+0FEF : 0x11111111 */
-      1,  /* U+0FF0 - U+0FF7 : 0x11111111 */
-      1,  /* U+0FF8 - U+0FFF : 0x11111111 */
-      1,  /* U+1000 - U+1007 : 0x11111111 */
-      1,  /* U+1008 - U+100F : 0x11111111 */
-      1,  /* U+1010 - U+1017 : 0x11111111 */
-      1,  /* U+1018 - U+101F : 0x11111111 */
-      1,  /* U+1020 - U+1027 : 0x11111111 */
-     95,  /* U+1028 - U+102F : 0xAAA11111 */
-     96,  /* U+1030 - U+1037 : 0xAA111A1A */
-     66,  /* U+1038 - U+103F : 0x111111A1 */
-      1,  /* U+1040 - U+1047 : 0x11111111 */
-      1,  /* U+1048 - U+104F : 0x11111111 */
-      1,  /* U+1050 - U+1057 : 0x11111111 */
-     38,  /* U+1058 - U+105F : 0x111111AA */
-      1,  /* U+1060 - U+1067 : 0x11111111 */
-      1,  /* U+1068 - U+106F : 0x11111111 */
-      1,  /* U+1070 - U+1077 : 0x11111111 */
-      1,  /* U+1078 - U+107F : 0x11111111 */
-      1,  /* U+1080 - U+1087 : 0x11111111 */
-      1,  /* U+1088 - U+108F : 0x11111111 */
-      1,  /* U+1090 - U+1097 : 0x11111111 */
-      1,  /* U+1098 - U+109F : 0x11111111 */
-      1,  /* U+10A0 - U+10A7 : 0x11111111 */
-      1,  /* U+10A8 - U+10AF : 0x11111111 */
-      1,  /* U+10B0 - U+10B7 : 0x11111111 */
-      1,  /* U+10B8 - U+10BF : 0x11111111 */
-      1,  /* U+10C0 - U+10C7 : 0x11111111 */
-      1,  /* U+10C8 - U+10CF : 0x11111111 */
-      1,  /* U+10D0 - U+10D7 : 0x11111111 */
-      1,  /* U+10D8 - U+10DF : 0x11111111 */
-      1,  /* U+10E0 - U+10E7 : 0x11111111 */
-      1,  /* U+10E8 - U+10EF : 0x11111111 */
-      1,  /* U+10F0 - U+10F7 : 0x11111111 */
-      1,  /* U+10F8 - U+10FF : 0x11111111 */
-      1,  /* U+1100 - U+1107 : 0x11111111 */
-      1,  /* U+1108 - U+110F : 0x11111111 */
-      1,  /* U+1110 - U+1117 : 0x11111111 */
-      1,  /* U+1118 - U+111F : 0x11111111 */
-      1,  /* U+1120 - U+1127 : 0x11111111 */
-      1,  /* U+1128 - U+112F : 0x11111111 */
-      1,  /* U+1130 - U+1137 : 0x11111111 */
-      1,  /* U+1138 - U+113F : 0x11111111 */
-      1,  /* U+1140 - U+1147 : 0x11111111 */
-      1,  /* U+1148 - U+114F : 0x11111111 */
-      1,  /* U+1150 - U+1157 : 0x11111111 */
-      1,  /* U+1158 - U+115F : 0x11111111 */
-      1,  /* U+1160 - U+1167 : 0x11111111 */
-      1,  /* U+1168 - U+116F : 0x11111111 */
-      1,  /* U+1170 - U+1177 : 0x11111111 */
-      1,  /* U+1178 - U+117F : 0x11111111 */
-      1,  /* U+1180 - U+1187 : 0x11111111 */
-      1,  /* U+1188 - U+118F : 0x11111111 */
-      1,  /* U+1190 - U+1197 : 0x11111111 */
-      1,  /* U+1198 - U+119F : 0x11111111 */
-      1,  /* U+11A0 - U+11A7 : 0x11111111 */
-      1,  /* U+11A8 - U+11AF : 0x11111111 */
-      1,  /* U+11B0 - U+11B7 : 0x11111111 */
-      1,  /* U+11B8 - U+11BF : 0x11111111 */
-      1,  /* U+11C0 - U+11C7 : 0x11111111 */
-      1,  /* U+11C8 - U+11CF : 0x11111111 */
-      1,  /* U+11D0 - U+11D7 : 0x11111111 */
-      1,  /* U+11D8 - U+11DF : 0x11111111 */
-      1,  /* U+11E0 - U+11E7 : 0x11111111 */
-      1,  /* U+11E8 - U+11EF : 0x11111111 */
-      1,  /* U+11F0 - U+11F7 : 0x11111111 */
-      1,  /* U+11F8 - U+11FF : 0x11111111 */
-      1,  /* U+1200 - U+1207 : 0x11111111 */
-      1,  /* U+1208 - U+120F : 0x11111111 */
-      1,  /* U+1210 - U+1217 : 0x11111111 */
-      1,  /* U+1218 - U+121F : 0x11111111 */
-      1,  /* U+1220 - U+1227 : 0x11111111 */
-      1,  /* U+1228 - U+122F : 0x11111111 */
-      1,  /* U+1230 - U+1237 : 0x11111111 */
-      1,  /* U+1238 - U+123F : 0x11111111 */
-      1,  /* U+1240 - U+1247 : 0x11111111 */
-      1,  /* U+1248 - U+124F : 0x11111111 */
-      1,  /* U+1250 - U+1257 : 0x11111111 */
-      1,  /* U+1258 - U+125F : 0x11111111 */
-      1,  /* U+1260 - U+1267 : 0x11111111 */
-      1,  /* U+1268 - U+126F : 0x11111111 */
-      1,  /* U+1270 - U+1277 : 0x11111111 */
-      1,  /* U+1278 - U+127F : 0x11111111 */
-      1,  /* U+1280 - U+1287 : 0x11111111 */
-      1,  /* U+1288 - U+128F : 0x11111111 */
-      1,  /* U+1290 - U+1297 : 0x11111111 */
-      1,  /* U+1298 - U+129F : 0x11111111 */
-      1,  /* U+12A0 - U+12A7 : 0x11111111 */
-      1,  /* U+12A8 - U+12AF : 0x11111111 */
-      1,  /* U+12B0 - U+12B7 : 0x11111111 */
-      1,  /* U+12B8 - U+12BF : 0x11111111 */
-      1,  /* U+12C0 - U+12C7 : 0x11111111 */
-      1,  /* U+12C8 - U+12CF : 0x11111111 */
-      1,  /* U+12D0 - U+12D7 : 0x11111111 */
-      1,  /* U+12D8 - U+12DF : 0x11111111 */
-      1,  /* U+12E0 - U+12E7 : 0x11111111 */
-      1,  /* U+12E8 - U+12EF : 0x11111111 */
-      1,  /* U+12F0 - U+12F7 : 0x11111111 */
-      1,  /* U+12F8 - U+12FF : 0x11111111 */
-      1,  /* U+1300 - U+1307 : 0x11111111 */
-      1,  /* U+1308 - U+130F : 0x11111111 */
-      1,  /* U+1310 - U+1317 : 0x11111111 */
-      1,  /* U+1318 - U+131F : 0x11111111 */
-      1,  /* U+1320 - U+1327 : 0x11111111 */
-      1,  /* U+1328 - U+132F : 0x11111111 */
-      1,  /* U+1330 - U+1337 : 0x11111111 */
-      1,  /* U+1338 - U+133F : 0x11111111 */
-      1,  /* U+1340 - U+1347 : 0x11111111 */
-      1,  /* U+1348 - U+134F : 0x11111111 */
-      1,  /* U+1350 - U+1357 : 0x11111111 */
-     87,  /* U+1358 - U+135F : 0xA1111111 */
-      1,  /* U+1360 - U+1367 : 0x11111111 */
-      1,  /* U+1368 - U+136F : 0x11111111 */
-      1,  /* U+1370 - U+1377 : 0x11111111 */
-      1,  /* U+1378 - U+137F : 0x11111111 */
-      1,  /* U+1380 - U+1387 : 0x11111111 */
-      1,  /* U+1388 - U+138F : 0x11111111 */
-      9,  /* U+1390 - U+1397 : 0x99999999 */
-     97,  /* U+1398 - U+139F : 0x11111199 */
-      1,  /* U+13A0 - U+13A7 : 0x11111111 */
-      1,  /* U+13A8 - U+13AF : 0x11111111 */
-      1,  /* U+13B0 - U+13B7 : 0x11111111 */
-      1,  /* U+13B8 - U+13BF : 0x11111111 */
-      1,  /* U+13C0 - U+13C7 : 0x11111111 */
-      1,  /* U+13C8 - U+13CF : 0x11111111 */
-      1,  /* U+13D0 - U+13D7 : 0x11111111 */
-      1,  /* U+13D8 - U+13DF : 0x11111111 */
-      1,  /* U+13E0 - U+13E7 : 0x11111111 */
-      1,  /* U+13E8 - U+13EF : 0x11111111 */
-      1,  /* U+13F0 - U+13F7 : 0x11111111 */
-      1,  /* U+13F8 - U+13FF : 0x11111111 */
-      1,  /* U+1400 - U+1407 : 0x11111111 */
-      1,  /* U+1408 - U+140F : 0x11111111 */
-      1,  /* U+1410 - U+1417 : 0x11111111 */
-      1,  /* U+1418 - U+141F : 0x11111111 */
-      1,  /* U+1420 - U+1427 : 0x11111111 */
-      1,  /* U+1428 - U+142F : 0x11111111 */
-      1,  /* U+1430 - U+1437 : 0x11111111 */
-      1,  /* U+1438 - U+143F : 0x11111111 */
-      1,  /* U+1440 - U+1447 : 0x11111111 */
-      1,  /* U+1448 - U+144F : 0x11111111 */
-      1,  /* U+1450 - U+1457 : 0x11111111 */
-      1,  /* U+1458 - U+145F : 0x11111111 */
-      1,  /* U+1460 - U+1467 : 0x11111111 */
-      1,  /* U+1468 - U+146F : 0x11111111 */
-      1,  /* U+1470 - U+1477 : 0x11111111 */
-      1,  /* U+1478 - U+147F : 0x11111111 */
-      1,  /* U+1480 - U+1487 : 0x11111111 */
-      1,  /* U+1488 - U+148F : 0x11111111 */
-      1,  /* U+1490 - U+1497 : 0x11111111 */
-      1,  /* U+1498 - U+149F : 0x11111111 */
-      1,  /* U+14A0 - U+14A7 : 0x11111111 */
-      1,  /* U+14A8 - U+14AF : 0x11111111 */
-      1,  /* U+14B0 - U+14B7 : 0x11111111 */
-      1,  /* U+14B8 - U+14BF : 0x11111111 */
-      1,  /* U+14C0 - U+14C7 : 0x11111111 */
-      1,  /* U+14C8 - U+14CF : 0x11111111 */
-      1,  /* U+14D0 - U+14D7 : 0x11111111 */
-      1,  /* U+14D8 - U+14DF : 0x11111111 */
-      1,  /* U+14E0 - U+14E7 : 0x11111111 */
-      1,  /* U+14E8 - U+14EF : 0x11111111 */
-      1,  /* U+14F0 - U+14F7 : 0x11111111 */
-      1,  /* U+14F8 - U+14FF : 0x11111111 */
-      1,  /* U+1500 - U+1507 : 0x11111111 */
-      1,  /* U+1508 - U+150F : 0x11111111 */
-      1,  /* U+1510 - U+1517 : 0x11111111 */
-      1,  /* U+1518 - U+151F : 0x11111111 */
-      1,  /* U+1520 - U+1527 : 0x11111111 */
-      1,  /* U+1528 - U+152F : 0x11111111 */
-      1,  /* U+1530 - U+1537 : 0x11111111 */
-      1,  /* U+1538 - U+153F : 0x11111111 */
-      1,  /* U+1540 - U+1547 : 0x11111111 */
-      1,  /* U+1548 - U+154F : 0x11111111 */
-      1,  /* U+1550 - U+1557 : 0x11111111 */
-      1,  /* U+1558 - U+155F : 0x11111111 */
-      1,  /* U+1560 - U+1567 : 0x11111111 */
-      1,  /* U+1568 - U+156F : 0x11111111 */
-      1,  /* U+1570 - U+1577 : 0x11111111 */
-      1,  /* U+1578 - U+157F : 0x11111111 */
-      1,  /* U+1580 - U+1587 : 0x11111111 */
-      1,  /* U+1588 - U+158F : 0x11111111 */
-      1,  /* U+1590 - U+1597 : 0x11111111 */
-      1,  /* U+1598 - U+159F : 0x11111111 */
-      1,  /* U+15A0 - U+15A7 : 0x11111111 */
-      1,  /* U+15A8 - U+15AF : 0x11111111 */
-      1,  /* U+15B0 - U+15B7 : 0x11111111 */
-      1,  /* U+15B8 - U+15BF : 0x11111111 */
-      1,  /* U+15C0 - U+15C7 : 0x11111111 */
-      1,  /* U+15C8 - U+15CF : 0x11111111 */
-      1,  /* U+15D0 - U+15D7 : 0x11111111 */
-      1,  /* U+15D8 - U+15DF : 0x11111111 */
-      1,  /* U+15E0 - U+15E7 : 0x11111111 */
-      1,  /* U+15E8 - U+15EF : 0x11111111 */
-      1,  /* U+15F0 - U+15F7 : 0x11111111 */
-      1,  /* U+15F8 - U+15FF : 0x11111111 */
-      1,  /* U+1600 - U+1607 : 0x11111111 */
-      1,  /* U+1608 - U+160F : 0x11111111 */
-      1,  /* U+1610 - U+1617 : 0x11111111 */
-      1,  /* U+1618 - U+161F : 0x11111111 */
-      1,  /* U+1620 - U+1627 : 0x11111111 */
-      1,  /* U+1628 - U+162F : 0x11111111 */
-      1,  /* U+1630 - U+1637 : 0x11111111 */
-      1,  /* U+1638 - U+163F : 0x11111111 */
-      1,  /* U+1640 - U+1647 : 0x11111111 */
-      1,  /* U+1648 - U+164F : 0x11111111 */
-      1,  /* U+1650 - U+1657 : 0x11111111 */
-      1,  /* U+1658 - U+165F : 0x11111111 */
-      1,  /* U+1660 - U+1667 : 0x11111111 */
-      1,  /* U+1668 - U+166F : 0x11111111 */
-      1,  /* U+1670 - U+1677 : 0x11111111 */
-      1,  /* U+1678 - U+167F : 0x11111111 */
-     98,  /* U+1680 - U+1687 : 0x1111111E */
-      1,  /* U+1688 - U+168F : 0x11111111 */
-      1,  /* U+1690 - U+1697 : 0x11111111 */
-     99,  /* U+1698 - U+169F : 0x11199111 */
-      1,  /* U+16A0 - U+16A7 : 0x11111111 */
-      1,  /* U+16A8 - U+16AF : 0x11111111 */
-      1,  /* U+16B0 - U+16B7 : 0x11111111 */
-      1,  /* U+16B8 - U+16BF : 0x11111111 */
-      1,  /* U+16C0 - U+16C7 : 0x11111111 */
-      1,  /* U+16C8 - U+16CF : 0x11111111 */
-      1,  /* U+16D0 - U+16D7 : 0x11111111 */
-      1,  /* U+16D8 - U+16DF : 0x11111111 */
-      1,  /* U+16E0 - U+16E7 : 0x11111111 */
-      1,  /* U+16E8 - U+16EF : 0x11111111 */
-      1,  /* U+16F0 - U+16F7 : 0x11111111 */
-      1,  /* U+16F8 - U+16FF : 0x11111111 */
-      1,  /* U+1700 - U+1707 : 0x11111111 */
-      1,  /* U+1708 - U+170F : 0x11111111 */
-    100,  /* U+1710 - U+1717 : 0x111AAA11 */
-      1,  /* U+1718 - U+171F : 0x11111111 */
-      1,  /* U+1720 - U+1727 : 0x11111111 */
-      1,  /* U+1728 - U+172F : 0x11111111 */
-    100,  /* U+1730 - U+1737 : 0x111AAA11 */
-      1,  /* U+1738 - U+173F : 0x11111111 */
-      1,  /* U+1740 - U+1747 : 0x11111111 */
-      1,  /* U+1748 - U+174F : 0x11111111 */
-     65,  /* U+1750 - U+1757 : 0x1111AA11 */
-      1,  /* U+1758 - U+175F : 0x11111111 */
-      1,  /* U+1760 - U+1767 : 0x11111111 */
-      1,  /* U+1768 - U+176F : 0x11111111 */
-     65,  /* U+1770 - U+1777 : 0x1111AA11 */
-      1,  /* U+1778 - U+177F : 0x11111111 */
-      1,  /* U+1780 - U+1787 : 0x11111111 */
-      1,  /* U+1788 - U+178F : 0x11111111 */
-      1,  /* U+1790 - U+1797 : 0x11111111 */
-      1,  /* U+1798 - U+179F : 0x11111111 */
-      1,  /* U+17A0 - U+17A7 : 0x11111111 */
-      1,  /* U+17A8 - U+17AF : 0x11111111 */
-     87,  /* U+17B0 - U+17B7 : 0xA1111111 */
-     90,  /* U+17B8 - U+17BF : 0x11AAAAAA */
-     75,  /* U+17C0 - U+17C7 : 0x1A111111 */
-     62,  /* U+17C8 - U+17CF : 0xAAAAAAA1 */
-    101,  /* U+17D0 - U+17D7 : 0x1111AAAA */
-    102,  /* U+17D8 - U+17DF : 0x11A17111 */
-      1,  /* U+17E0 - U+17E7 : 0x11111111 */
-      1,  /* U+17E8 - U+17EF : 0x11111111 */
-      9,  /* U+17F0 - U+17F7 : 0x99999999 */
-     97,  /* U+17F8 - U+17FF : 0x11111199 */
-      9,  /* U+1800 - U+1807 : 0x99999999 */
-    103,  /* U+1808 - U+180F : 0x1EAAA999 */
-      1,  /* U+1810 - U+1817 : 0x11111111 */
-      1,  /* U+1818 - U+181F : 0x11111111 */
-      1,  /* U+1820 - U+1827 : 0x11111111 */
-      1,  /* U+1828 - U+182F : 0x11111111 */
-      1,  /* U+1830 - U+1837 : 0x11111111 */
-      1,  /* U+1838 - U+183F : 0x11111111 */
-      1,  /* U+1840 - U+1847 : 0x11111111 */
-      1,  /* U+1848 - U+184F : 0x11111111 */
-      1,  /* U+1850 - U+1857 : 0x11111111 */
-      1,  /* U+1858 - U+185F : 0x11111111 */
-      1,  /* U+1860 - U+1867 : 0x11111111 */
-      1,  /* U+1868 - U+186F : 0x11111111 */
-      1,  /* U+1870 - U+1877 : 0x11111111 */
-      1,  /* U+1878 - U+187F : 0x11111111 */
-      1,  /* U+1880 - U+1887 : 0x11111111 */
-      1,  /* U+1888 - U+188F : 0x11111111 */
-      1,  /* U+1890 - U+1897 : 0x11111111 */
-      1,  /* U+1898 - U+189F : 0x11111111 */
-      1,  /* U+18A0 - U+18A7 : 0x11111111 */
-     66,  /* U+18A8 - U+18AF : 0x111111A1 */
-      1,  /* U+18B0 - U+18B7 : 0x11111111 */
-      1,  /* U+18B8 - U+18BF : 0x11111111 */
-      1,  /* U+18C0 - U+18C7 : 0x11111111 */
-      1,  /* U+18C8 - U+18CF : 0x11111111 */
-      1,  /* U+18D0 - U+18D7 : 0x11111111 */
-      1,  /* U+18D8 - U+18DF : 0x11111111 */
-      1,  /* U+18E0 - U+18E7 : 0x11111111 */
-      1,  /* U+18E8 - U+18EF : 0x11111111 */
-      1,  /* U+18F0 - U+18F7 : 0x11111111 */
-      1,  /* U+18F8 - U+18FF : 0x11111111 */
-      1,  /* U+1900 - U+1907 : 0x11111111 */
-      1,  /* U+1908 - U+190F : 0x11111111 */
-      1,  /* U+1910 - U+1917 : 0x11111111 */
-      1,  /* U+1918 - U+191F : 0x11111111 */
-    104,  /* U+1920 - U+1927 : 0xA1111AAA */
-    101,  /* U+1928 - U+192F : 0x1111AAAA */
-     76,  /* U+1930 - U+1937 : 0x11111A11 */
-     74,  /* U+1938 - U+193F : 0x1111AAA1 */
-    105,  /* U+1940 - U+1947 : 0x11991119 */
-      1,  /* U+1948 - U+194F : 0x11111111 */
-      1,  /* U+1950 - U+1957 : 0x11111111 */
-      1,  /* U+1958 - U+195F : 0x11111111 */
-      1,  /* U+1960 - U+1967 : 0x11111111 */
-      1,  /* U+1968 - U+196F : 0x11111111 */
-      1,  /* U+1970 - U+1977 : 0x11111111 */
-      1,  /* U+1978 - U+197F : 0x11111111 */
-      1,  /* U+1980 - U+1987 : 0x11111111 */
-      1,  /* U+1988 - U+198F : 0x11111111 */
-      1,  /* U+1990 - U+1997 : 0x11111111 */
-      1,  /* U+1998 - U+199F : 0x11111111 */
-      1,  /* U+19A0 - U+19A7 : 0x11111111 */
-      1,  /* U+19A8 - U+19AF : 0x11111111 */
-      1,  /* U+19B0 - U+19B7 : 0x11111111 */
-      1,  /* U+19B8 - U+19BF : 0x11111111 */
-      1,  /* U+19C0 - U+19C7 : 0x11111111 */
-      1,  /* U+19C8 - U+19CF : 0x11111111 */
-      1,  /* U+19D0 - U+19D7 : 0x11111111 */
-    106,  /* U+19D8 - U+19DF : 0x99111111 */
-      9,  /* U+19E0 - U+19E7 : 0x99999999 */
-      9,  /* U+19E8 - U+19EF : 0x99999999 */
-      9,  /* U+19F0 - U+19F7 : 0x99999999 */
-      9,  /* U+19F8 - U+19FF : 0x99999999 */
-      1,  /* U+1A00 - U+1A07 : 0x11111111 */
-      1,  /* U+1A08 - U+1A0F : 0x11111111 */
-     87,  /* U+1A10 - U+1A17 : 0xA1111111 */
-     77,  /* U+1A18 - U+1A1F : 0x1111111A */
-      1,  /* U+1A20 - U+1A27 : 0x11111111 */
-      1,  /* U+1A28 - U+1A2F : 0x11111111 */
-      1,  /* U+1A30 - U+1A37 : 0x11111111 */
-      1,  /* U+1A38 - U+1A3F : 0x11111111 */
-      1,  /* U+1A40 - U+1A47 : 0x11111111 */
-      1,  /* U+1A48 - U+1A4F : 0x11111111 */
-      1,  /* U+1A50 - U+1A57 : 0x11111111 */
-      1,  /* U+1A58 - U+1A5F : 0x11111111 */
-      1,  /* U+1A60 - U+1A67 : 0x11111111 */
-      1,  /* U+1A68 - U+1A6F : 0x11111111 */
-      1,  /* U+1A70 - U+1A77 : 0x11111111 */
-      1,  /* U+1A78 - U+1A7F : 0x11111111 */
-      1,  /* U+1A80 - U+1A87 : 0x11111111 */
-      1,  /* U+1A88 - U+1A8F : 0x11111111 */
-      1,  /* U+1A90 - U+1A97 : 0x11111111 */
-      1,  /* U+1A98 - U+1A9F : 0x11111111 */
-      1,  /* U+1AA0 - U+1AA7 : 0x11111111 */
-      1,  /* U+1AA8 - U+1AAF : 0x11111111 */
-      1,  /* U+1AB0 - U+1AB7 : 0x11111111 */
-      1,  /* U+1AB8 - U+1ABF : 0x11111111 */
-      1,  /* U+1AC0 - U+1AC7 : 0x11111111 */
-      1,  /* U+1AC8 - U+1ACF : 0x11111111 */
-      1,  /* U+1AD0 - U+1AD7 : 0x11111111 */
-      1,  /* U+1AD8 - U+1ADF : 0x11111111 */
-      1,  /* U+1AE0 - U+1AE7 : 0x11111111 */
-      1,  /* U+1AE8 - U+1AEF : 0x11111111 */
-      1,  /* U+1AF0 - U+1AF7 : 0x11111111 */
-      1,  /* U+1AF8 - U+1AFF : 0x11111111 */
-    101,  /* U+1B00 - U+1B07 : 0x1111AAAA */
-      1,  /* U+1B08 - U+1B0F : 0x11111111 */
-      1,  /* U+1B10 - U+1B17 : 0x11111111 */
-      1,  /* U+1B18 - U+1B1F : 0x11111111 */
-      1,  /* U+1B20 - U+1B27 : 0x11111111 */
-      1,  /* U+1B28 - U+1B2F : 0x11111111 */
-    107,  /* U+1B30 - U+1B37 : 0xAA1A1111 */
-    108,  /* U+1B38 - U+1B3F : 0x111A1AAA */
-     76,  /* U+1B40 - U+1B47 : 0x11111A11 */
-      1,  /* U+1B48 - U+1B4F : 0x11111111 */
-      1,  /* U+1B50 - U+1B57 : 0x11111111 */
-      1,  /* U+1B58 - U+1B5F : 0x11111111 */
-      1,  /* U+1B60 - U+1B67 : 0x11111111 */
-    109,  /* U+1B68 - U+1B6F : 0xAAAAA111 */
-    101,  /* U+1B70 - U+1B77 : 0x1111AAAA */
-      1,  /* U+1B78 - U+1B7F : 0x11111111 */
-};
-
-static PRUint8 gBidiCatIdx3[540] = {
-      1,  /* U+1D00 - U+1D07 : 0x11111111 */
-      1,  /* U+1D08 - U+1D0F : 0x11111111 */
-      1,  /* U+1D10 - U+1D17 : 0x11111111 */
-      1,  /* U+1D18 - U+1D1F : 0x11111111 */
-      1,  /* U+1D20 - U+1D27 : 0x11111111 */
-      1,  /* U+1D28 - U+1D2F : 0x11111111 */
-      1,  /* U+1D30 - U+1D37 : 0x11111111 */
-      1,  /* U+1D38 - U+1D3F : 0x11111111 */
-      1,  /* U+1D40 - U+1D47 : 0x11111111 */
-      1,  /* U+1D48 - U+1D4F : 0x11111111 */
-      1,  /* U+1D50 - U+1D57 : 0x11111111 */
-      1,  /* U+1D58 - U+1D5F : 0x11111111 */
-      1,  /* U+1D60 - U+1D67 : 0x11111111 */
-      1,  /* U+1D68 - U+1D6F : 0x11111111 */
-      1,  /* U+1D70 - U+1D77 : 0x11111111 */
-      1,  /* U+1D78 - U+1D7F : 0x11111111 */
-      1,  /* U+1D80 - U+1D87 : 0x11111111 */
-      1,  /* U+1D88 - U+1D8F : 0x11111111 */
-      1,  /* U+1D90 - U+1D97 : 0x11111111 */
-      1,  /* U+1D98 - U+1D9F : 0x11111111 */
-      1,  /* U+1DA0 - U+1DA7 : 0x11111111 */
-      1,  /* U+1DA8 - U+1DAF : 0x11111111 */
-      1,  /* U+1DB0 - U+1DB7 : 0x11111111 */
-      1,  /* U+1DB8 - U+1DBF : 0x11111111 */
-     10,  /* U+1DC0 - U+1DC7 : 0xAAAAAAAA */
-    110,  /* U+1DC8 - U+1DCF : 0x11111AAA */
-      1,  /* U+1DD0 - U+1DD7 : 0x11111111 */
-      1,  /* U+1DD8 - U+1DDF : 0x11111111 */
-      1,  /* U+1DE0 - U+1DE7 : 0x11111111 */
-      1,  /* U+1DE8 - U+1DEF : 0x11111111 */
-      1,  /* U+1DF0 - U+1DF7 : 0x11111111 */
-     79,  /* U+1DF8 - U+1DFF : 0xAA111111 */
-      1,  /* U+1E00 - U+1E07 : 0x11111111 */
-      1,  /* U+1E08 - U+1E0F : 0x11111111 */
-      1,  /* U+1E10 - U+1E17 : 0x11111111 */
-      1,  /* U+1E18 - U+1E1F : 0x11111111 */
-      1,  /* U+1E20 - U+1E27 : 0x11111111 */
-      1,  /* U+1E28 - U+1E2F : 0x11111111 */
-      1,  /* U+1E30 - U+1E37 : 0x11111111 */
-      1,  /* U+1E38 - U+1E3F : 0x11111111 */
-      1,  /* U+1E40 - U+1E47 : 0x11111111 */
-      1,  /* U+1E48 - U+1E4F : 0x11111111 */
-      1,  /* U+1E50 - U+1E57 : 0x11111111 */
-      1,  /* U+1E58 - U+1E5F : 0x11111111 */
-      1,  /* U+1E60 - U+1E67 : 0x11111111 */
-      1,  /* U+1E68 - U+1E6F : 0x11111111 */
-      1,  /* U+1E70 - U+1E77 : 0x11111111 */
-      1,  /* U+1E78 - U+1E7F : 0x11111111 */
-      1,  /* U+1E80 - U+1E87 : 0x11111111 */
-      1,  /* U+1E88 - U+1E8F : 0x11111111 */
-      1,  /* U+1E90 - U+1E97 : 0x11111111 */
-      1,  /* U+1E98 - U+1E9F : 0x11111111 */
-      1,  /* U+1EA0 - U+1EA7 : 0x11111111 */
-      1,  /* U+1EA8 - U+1EAF : 0x11111111 */
-      1,  /* U+1EB0 - U+1EB7 : 0x11111111 */
-      1,  /* U+1EB8 - U+1EBF : 0x11111111 */
-      1,  /* U+1EC0 - U+1EC7 : 0x11111111 */
-      1,  /* U+1EC8 - U+1ECF : 0x11111111 */
-      1,  /* U+1ED0 - U+1ED7 : 0x11111111 */
-      1,  /* U+1ED8 - U+1EDF : 0x11111111 */
-      1,  /* U+1EE0 - U+1EE7 : 0x11111111 */
-      1,  /* U+1EE8 - U+1EEF : 0x11111111 */
-      1,  /* U+1EF0 - U+1EF7 : 0x11111111 */
-      1,  /* U+1EF8 - U+1EFF : 0x11111111 */
-      1,  /* U+1F00 - U+1F07 : 0x11111111 */
-      1,  /* U+1F08 - U+1F0F : 0x11111111 */
-      1,  /* U+1F10 - U+1F17 : 0x11111111 */
-      1,  /* U+1F18 - U+1F1F : 0x11111111 */
-      1,  /* U+1F20 - U+1F27 : 0x11111111 */
-      1,  /* U+1F28 - U+1F2F : 0x11111111 */
-      1,  /* U+1F30 - U+1F37 : 0x11111111 */
-      1,  /* U+1F38 - U+1F3F : 0x11111111 */
-      1,  /* U+1F40 - U+1F47 : 0x11111111 */
-      1,  /* U+1F48 - U+1F4F : 0x11111111 */
-      1,  /* U+1F50 - U+1F57 : 0x11111111 */
-      1,  /* U+1F58 - U+1F5F : 0x11111111 */
-      1,  /* U+1F60 - U+1F67 : 0x11111111 */
-      1,  /* U+1F68 - U+1F6F : 0x11111111 */
-      1,  /* U+1F70 - U+1F77 : 0x11111111 */
-      1,  /* U+1F78 - U+1F7F : 0x11111111 */
-      1,  /* U+1F80 - U+1F87 : 0x11111111 */
-      1,  /* U+1F88 - U+1F8F : 0x11111111 */
-      1,  /* U+1F90 - U+1F97 : 0x11111111 */
-      1,  /* U+1F98 - U+1F9F : 0x11111111 */
-      1,  /* U+1FA0 - U+1FA7 : 0x11111111 */
-      1,  /* U+1FA8 - U+1FAF : 0x11111111 */
-      1,  /* U+1FB0 - U+1FB7 : 0x11111111 */
-    111,  /* U+1FB8 - U+1FBF : 0x91911111 */
-     97,  /* U+1FC0 - U+1FC7 : 0x11111199 */
-     32,  /* U+1FC8 - U+1FCF : 0x99911111 */
-      1,  /* U+1FD0 - U+1FD7 : 0x11111111 */
-     32,  /* U+1FD8 - U+1FDF : 0x99911111 */
-      1,  /* U+1FE0 - U+1FE7 : 0x11111111 */
-     32,  /* U+1FE8 - U+1FEF : 0x99911111 */
-      1,  /* U+1FF0 - U+1FF7 : 0x11111111 */
-    112,  /* U+1FF8 - U+1FFF : 0x19911111 */
-     14,  /* U+2000 - U+2007 : 0xEEEEEEEE */
-    113,  /* U+2008 - U+200F : 0x21BBBEEE */
-      9,  /* U+2010 - U+2017 : 0x99999999 */
-      9,  /* U+2018 - U+201F : 0x99999999 */
-      9,  /* U+2020 - U+2027 : 0x99999999 */
-    114,  /* U+2028 - U+202F : 0x8FFFFFCE */
-    115,  /* U+2030 - U+2037 : 0x99977777 */
-      9,  /* U+2038 - U+203F : 0x99999999 */
-    116,  /* U+2040 - U+2047 : 0x99989999 */
-      9,  /* U+2048 - U+204F : 0x99999999 */
-      9,  /* U+2050 - U+2057 : 0x99999999 */
-    117,  /* U+2058 - U+205F : 0xE9999999 */
-    118,  /* U+2060 - U+2067 : 0x1111BBBB */
-    119,  /* U+2068 - U+206F : 0xBBBBBB11 */
-    120,  /* U+2070 - U+2077 : 0x55551115 */
-    121,  /* U+2078 - U+207F : 0x19996655 */
-      5,  /* U+2080 - U+2087 : 0x55555555 */
-    121,  /* U+2088 - U+208F : 0x19996655 */
-      1,  /* U+2090 - U+2097 : 0x11111111 */
-      1,  /* U+2098 - U+209F : 0x11111111 */
-      7,  /* U+20A0 - U+20A7 : 0x77777777 */
-      7,  /* U+20A8 - U+20AF : 0x77777777 */
-    122,  /* U+20B0 - U+20B7 : 0x11777777 */
-      1,  /* U+20B8 - U+20BF : 0x11111111 */
-      1,  /* U+20C0 - U+20C7 : 0x11111111 */
-      1,  /* U+20C8 - U+20CF : 0x11111111 */
-     10,  /* U+20D0 - U+20D7 : 0xAAAAAAAA */
-     10,  /* U+20D8 - U+20DF : 0xAAAAAAAA */
-     10,  /* U+20E0 - U+20E7 : 0xAAAAAAAA */
-     10,  /* U+20E8 - U+20EF : 0xAAAAAAAA */
-      1,  /* U+20F0 - U+20F7 : 0x11111111 */
-      1,  /* U+20F8 - U+20FF : 0x11111111 */
-    123,  /* U+2100 - U+2107 : 0x19999199 */
-     97,  /* U+2108 - U+210F : 0x11111199 */
-    124,  /* U+2110 - U+2117 : 0x99191111 */
-    125,  /* U+2118 - U+211F : 0x99111119 */
-    126,  /* U+2120 - U+2127 : 0x91919999 */
-    127,  /* U+2128 - U+212F : 0x17111191 */
-      1,  /* U+2130 - U+2137 : 0x11111111 */
-    128,  /* U+2138 - U+213F : 0x11119911 */
-    129,  /* U+2140 - U+2147 : 0x11199999 */
-    130,  /* U+2148 - U+214F : 0x11999911 */
-     22,  /* U+2150 - U+2157 : 0x99999111 */
-      9,  /* U+2158 - U+215F : 0x99999999 */
-      1,  /* U+2160 - U+2167 : 0x11111111 */
-      1,  /* U+2168 - U+216F : 0x11111111 */
-      1,  /* U+2170 - U+2177 : 0x11111111 */
-      1,  /* U+2178 - U+217F : 0x11111111 */
-      1,  /* U+2180 - U+2187 : 0x11111111 */
-      1,  /* U+2188 - U+218F : 0x11111111 */
-      9,  /* U+2190 - U+2197 : 0x99999999 */
-      9,  /* U+2198 - U+219F : 0x99999999 */
-      9,  /* U+21A0 - U+21A7 : 0x99999999 */
-      9,  /* U+21A8 - U+21AF : 0x99999999 */
-      9,  /* U+21B0 - U+21B7 : 0x99999999 */
-      9,  /* U+21B8 - U+21BF : 0x99999999 */
-      9,  /* U+21C0 - U+21C7 : 0x99999999 */
-      9,  /* U+21C8 - U+21CF : 0x99999999 */
-      9,  /* U+21D0 - U+21D7 : 0x99999999 */
-      9,  /* U+21D8 - U+21DF : 0x99999999 */
-      9,  /* U+21E0 - U+21E7 : 0x99999999 */
-      9,  /* U+21E8 - U+21EF : 0x99999999 */
-      9,  /* U+21F0 - U+21F7 : 0x99999999 */
-      9,  /* U+21F8 - U+21FF : 0x99999999 */
-      9,  /* U+2200 - U+2207 : 0x99999999 */
-      9,  /* U+2208 - U+220F : 0x99999999 */
-    131,  /* U+2210 - U+2217 : 0x99997699 */
-      9,  /* U+2218 - U+221F : 0x99999999 */
-      9,  /* U+2220 - U+2227 : 0x99999999 */
-      9,  /* U+2228 - U+222F : 0x99999999 */
-      9,  /* U+2230 - U+2237 : 0x99999999 */
-      9,  /* U+2238 - U+223F : 0x99999999 */
-      9,  /* U+2240 - U+2247 : 0x99999999 */
-      9,  /* U+2248 - U+224F : 0x99999999 */
-      9,  /* U+2250 - U+2257 : 0x99999999 */
-      9,  /* U+2258 - U+225F : 0x99999999 */
-      9,  /* U+2260 - U+2267 : 0x99999999 */
-      9,  /* U+2268 - U+226F : 0x99999999 */
-      9,  /* U+2270 - U+2277 : 0x99999999 */
-      9,  /* U+2278 - U+227F : 0x99999999 */
-      9,  /* U+2280 - U+2287 : 0x99999999 */
-      9,  /* U+2288 - U+228F : 0x99999999 */
-      9,  /* U+2290 - U+2297 : 0x99999999 */
-      9,  /* U+2298 - U+229F : 0x99999999 */
-      9,  /* U+22A0 - U+22A7 : 0x99999999 */
-      9,  /* U+22A8 - U+22AF : 0x99999999 */
-      9,  /* U+22B0 - U+22B7 : 0x99999999 */
-      9,  /* U+22B8 - U+22BF : 0x99999999 */
-      9,  /* U+22C0 - U+22C7 : 0x99999999 */
-      9,  /* U+22C8 - U+22CF : 0x99999999 */
-      9,  /* U+22D0 - U+22D7 : 0x99999999 */
-      9,  /* U+22D8 - U+22DF : 0x99999999 */
-      9,  /* U+22E0 - U+22E7 : 0x99999999 */
-      9,  /* U+22E8 - U+22EF : 0x99999999 */
-      9,  /* U+22F0 - U+22F7 : 0x99999999 */
-      9,  /* U+22F8 - U+22FF : 0x99999999 */
-      9,  /* U+2300 - U+2307 : 0x99999999 */
-      9,  /* U+2308 - U+230F : 0x99999999 */
-      9,  /* U+2310 - U+2317 : 0x99999999 */
-      9,  /* U+2318 - U+231F : 0x99999999 */
-      9,  /* U+2320 - U+2327 : 0x99999999 */
-      9,  /* U+2328 - U+232F : 0x99999999 */
-    132,  /* U+2330 - U+2337 : 0x11999999 */
-      1,  /* U+2338 - U+233F : 0x11111111 */
-      1,  /* U+2340 - U+2347 : 0x11111111 */
-      1,  /* U+2348 - U+234F : 0x11111111 */
-      1,  /* U+2350 - U+2357 : 0x11111111 */
-      1,  /* U+2358 - U+235F : 0x11111111 */
-      1,  /* U+2360 - U+2367 : 0x11111111 */
-      1,  /* U+2368 - U+236F : 0x11111111 */
-      1,  /* U+2370 - U+2377 : 0x11111111 */
-     22,  /* U+2378 - U+237F : 0x99999111 */
-      9,  /* U+2380 - U+2387 : 0x99999999 */
-      9,  /* U+2388 - U+238F : 0x99999999 */
-    133,  /* U+2390 - U+2397 : 0x99199999 */
-      9,  /* U+2398 - U+239F : 0x99999999 */
-      9,  /* U+23A0 - U+23A7 : 0x99999999 */
-      9,  /* U+23A8 - U+23AF : 0x99999999 */
-      9,  /* U+23B0 - U+23B7 : 0x99999999 */
-      9,  /* U+23B8 - U+23BF : 0x99999999 */
-      9,  /* U+23C0 - U+23C7 : 0x99999999 */
-      9,  /* U+23C8 - U+23CF : 0x99999999 */
-      9,  /* U+23D0 - U+23D7 : 0x99999999 */
-      9,  /* U+23D8 - U+23DF : 0x99999999 */
-      9,  /* U+23E0 - U+23E7 : 0x99999999 */
-      1,  /* U+23E8 - U+23EF : 0x11111111 */
-      1,  /* U+23F0 - U+23F7 : 0x11111111 */
-      1,  /* U+23F8 - U+23FF : 0x11111111 */
-      9,  /* U+2400 - U+2407 : 0x99999999 */
-      9,  /* U+2408 - U+240F : 0x99999999 */
-      9,  /* U+2410 - U+2417 : 0x99999999 */
-      9,  /* U+2418 - U+241F : 0x99999999 */
-    134,  /* U+2420 - U+2427 : 0x19999999 */
-      1,  /* U+2428 - U+242F : 0x11111111 */
-      1,  /* U+2430 - U+2437 : 0x11111111 */
-      1,  /* U+2438 - U+243F : 0x11111111 */
-      9,  /* U+2440 - U+2447 : 0x99999999 */
-    135,  /* U+2448 - U+244F : 0x11111999 */
-      1,  /* U+2450 - U+2457 : 0x11111111 */
-      1,  /* U+2458 - U+245F : 0x11111111 */
-      9,  /* U+2460 - U+2467 : 0x99999999 */
-      9,  /* U+2468 - U+246F : 0x99999999 */
-      9,  /* U+2470 - U+2477 : 0x99999999 */
-      9,  /* U+2478 - U+247F : 0x99999999 */
-      9,  /* U+2480 - U+2487 : 0x99999999 */
-      5,  /* U+2488 - U+248F : 0x55555555 */
-      5,  /* U+2490 - U+2497 : 0x55555555 */
-    136,  /* U+2498 - U+249F : 0x11115555 */
-      1,  /* U+24A0 - U+24A7 : 0x11111111 */
-      1,  /* U+24A8 - U+24AF : 0x11111111 */
-      1,  /* U+24B0 - U+24B7 : 0x11111111 */
-      1,  /* U+24B8 - U+24BF : 0x11111111 */
-      1,  /* U+24C0 - U+24C7 : 0x11111111 */
-      1,  /* U+24C8 - U+24CF : 0x11111111 */
-      1,  /* U+24D0 - U+24D7 : 0x11111111 */
-      1,  /* U+24D8 - U+24DF : 0x11111111 */
-      1,  /* U+24E0 - U+24E7 : 0x11111111 */
-     31,  /* U+24E8 - U+24EF : 0x99999911 */
-      9,  /* U+24F0 - U+24F7 : 0x99999999 */
-      9,  /* U+24F8 - U+24FF : 0x99999999 */
-      9,  /* U+2500 - U+2507 : 0x99999999 */
-      9,  /* U+2508 - U+250F : 0x99999999 */
-      9,  /* U+2510 - U+2517 : 0x99999999 */
-      9,  /* U+2518 - U+251F : 0x99999999 */
-      9,  /* U+2520 - U+2527 : 0x99999999 */
-      9,  /* U+2528 - U+252F : 0x99999999 */
-      9,  /* U+2530 - U+2537 : 0x99999999 */
-      9,  /* U+2538 - U+253F : 0x99999999 */
-      9,  /* U+2540 - U+2547 : 0x99999999 */
-      9,  /* U+2548 - U+254F : 0x99999999 */
-      9,  /* U+2550 - U+2557 : 0x99999999 */
-      9,  /* U+2558 - U+255F : 0x99999999 */
-      9,  /* U+2560 - U+2567 : 0x99999999 */
-      9,  /* U+2568 - U+256F : 0x99999999 */
-      9,  /* U+2570 - U+2577 : 0x99999999 */
-      9,  /* U+2578 - U+257F : 0x99999999 */
-      9,  /* U+2580 - U+2587 : 0x99999999 */
-      9,  /* U+2588 - U+258F : 0x99999999 */
-      9,  /* U+2590 - U+2597 : 0x99999999 */
-      9,  /* U+2598 - U+259F : 0x99999999 */
-      9,  /* U+25A0 - U+25A7 : 0x99999999 */
-      9,  /* U+25A8 - U+25AF : 0x99999999 */
-      9,  /* U+25B0 - U+25B7 : 0x99999999 */
-      9,  /* U+25B8 - U+25BF : 0x99999999 */
-      9,  /* U+25C0 - U+25C7 : 0x99999999 */
-      9,  /* U+25C8 - U+25CF : 0x99999999 */
-      9,  /* U+25D0 - U+25D7 : 0x99999999 */
-      9,  /* U+25D8 - U+25DF : 0x99999999 */
-      9,  /* U+25E0 - U+25E7 : 0x99999999 */
-      9,  /* U+25E8 - U+25EF : 0x99999999 */
-      9,  /* U+25F0 - U+25F7 : 0x99999999 */
-      9,  /* U+25F8 - U+25FF : 0x99999999 */
-      9,  /* U+2600 - U+2607 : 0x99999999 */
-      9,  /* U+2608 - U+260F : 0x99999999 */
-      9,  /* U+2610 - U+2617 : 0x99999999 */
-      9,  /* U+2618 - U+261F : 0x99999999 */
-      9,  /* U+2620 - U+2627 : 0x99999999 */
-      9,  /* U+2628 - U+262F : 0x99999999 */
-      9,  /* U+2630 - U+2637 : 0x99999999 */
-      9,  /* U+2638 - U+263F : 0x99999999 */
-      9,  /* U+2640 - U+2647 : 0x99999999 */
-      9,  /* U+2648 - U+264F : 0x99999999 */
-      9,  /* U+2650 - U+2657 : 0x99999999 */
-      9,  /* U+2658 - U+265F : 0x99999999 */
-      9,  /* U+2660 - U+2667 : 0x99999999 */
-      9,  /* U+2668 - U+266F : 0x99999999 */
-      9,  /* U+2670 - U+2677 : 0x99999999 */
-      9,  /* U+2678 - U+267F : 0x99999999 */
-      9,  /* U+2680 - U+2687 : 0x99999999 */
-      9,  /* U+2688 - U+268F : 0x99999999 */
-      9,  /* U+2690 - U+2697 : 0x99999999 */
-    129,  /* U+2698 - U+269F : 0x11199999 */
-      9,  /* U+26A0 - U+26A7 : 0x99999999 */
-    137,  /* U+26A8 - U+26AF : 0x99919999 */
-    135,  /* U+26B0 - U+26B7 : 0x11111999 */
-      1,  /* U+26B8 - U+26BF : 0x11111111 */
-      1,  /* U+26C0 - U+26C7 : 0x11111111 */
-      1,  /* U+26C8 - U+26CF : 0x11111111 */
-      1,  /* U+26D0 - U+26D7 : 0x11111111 */
-      1,  /* U+26D8 - U+26DF : 0x11111111 */
-      1,  /* U+26E0 - U+26E7 : 0x11111111 */
-      1,  /* U+26E8 - U+26EF : 0x11111111 */
-      1,  /* U+26F0 - U+26F7 : 0x11111111 */
-      1,  /* U+26F8 - U+26FF : 0x11111111 */
-    138,  /* U+2700 - U+2707 : 0x99199991 */
-    139,  /* U+2708 - U+270F : 0x99991199 */
-      9,  /* U+2710 - U+2717 : 0x99999999 */
-      9,  /* U+2718 - U+271F : 0x99999999 */
-      9,  /* U+2720 - U+2727 : 0x99999999 */
-    140,  /* U+2728 - U+272F : 0x99999991 */
-      9,  /* U+2730 - U+2737 : 0x99999999 */
-      9,  /* U+2738 - U+273F : 0x99999999 */
-      9,  /* U+2740 - U+2747 : 0x99999999 */
-    126,  /* U+2748 - U+274F : 0x91919999 */
-    141,  /* U+2750 - U+2757 : 0x19111999 */
-    134,  /* U+2758 - U+275F : 0x19999999 */
-    140,  /* U+2760 - U+2767 : 0x99999991 */
-      9,  /* U+2768 - U+276F : 0x99999999 */
-      9,  /* U+2770 - U+2777 : 0x99999999 */
-      9,  /* U+2778 - U+277F : 0x99999999 */
-      9,  /* U+2780 - U+2787 : 0x99999999 */
-      9,  /* U+2788 - U+278F : 0x99999999 */
-    129,  /* U+2790 - U+2797 : 0x11199999 */
-      9,  /* U+2798 - U+279F : 0x99999999 */
-      9,  /* U+27A0 - U+27A7 : 0x99999999 */
-      9,  /* U+27A8 - U+27AF : 0x99999999 */
-    140,  /* U+27B0 - U+27B7 : 0x99999991 */
-    134,  /* U+27B8 - U+27BF : 0x19999999 */
-      9,  /* U+27C0 - U+27C7 : 0x99999999 */
-    135,  /* U+27C8 - U+27CF : 0x11111999 */
-      9,  /* U+27D0 - U+27D7 : 0x99999999 */
-      9,  /* U+27D8 - U+27DF : 0x99999999 */
-      9,  /* U+27E0 - U+27E7 : 0x99999999 */
-    142,  /* U+27E8 - U+27EF : 0x11119999 */
-      9,  /* U+27F0 - U+27F7 : 0x99999999 */
-      9,  /* U+27F8 - U+27FF : 0x99999999 */
-      1,  /* U+2800 - U+2807 : 0x11111111 */
-      1,  /* U+2808 - U+280F : 0x11111111 */
-      1,  /* U+2810 - U+2817 : 0x11111111 */
-      1,  /* U+2818 - U+281F : 0x11111111 */
-      1,  /* U+2820 - U+2827 : 0x11111111 */
-      1,  /* U+2828 - U+282F : 0x11111111 */
-      1,  /* U+2830 - U+2837 : 0x11111111 */
-      1,  /* U+2838 - U+283F : 0x11111111 */
-      1,  /* U+2840 - U+2847 : 0x11111111 */
-      1,  /* U+2848 - U+284F : 0x11111111 */
-      1,  /* U+2850 - U+2857 : 0x11111111 */
-      1,  /* U+2858 - U+285F : 0x11111111 */
-      1,  /* U+2860 - U+2867 : 0x11111111 */
-      1,  /* U+2868 - U+286F : 0x11111111 */
-      1,  /* U+2870 - U+2877 : 0x11111111 */
-      1,  /* U+2878 - U+287F : 0x11111111 */
-      1,  /* U+2880 - U+2887 : 0x11111111 */
-      1,  /* U+2888 - U+288F : 0x11111111 */
-      1,  /* U+2890 - U+2897 : 0x11111111 */
-      1,  /* U+2898 - U+289F : 0x11111111 */
-      1,  /* U+28A0 - U+28A7 : 0x11111111 */
-      1,  /* U+28A8 - U+28AF : 0x11111111 */
-      1,  /* U+28B0 - U+28B7 : 0x11111111 */
-      1,  /* U+28B8 - U+28BF : 0x11111111 */
-      1,  /* U+28C0 - U+28C7 : 0x11111111 */
-      1,  /* U+28C8 - U+28CF : 0x11111111 */
-      1,  /* U+28D0 - U+28D7 : 0x11111111 */
-      1,  /* U+28D8 - U+28DF : 0x11111111 */
-      1,  /* U+28E0 - U+28E7 : 0x11111111 */
-      1,  /* U+28E8 - U+28EF : 0x11111111 */
-      1,  /* U+28F0 - U+28F7 : 0x11111111 */
-      1,  /* U+28F8 - U+28FF : 0x11111111 */
-      9,  /* U+2900 - U+2907 : 0x99999999 */
-      9,  /* U+2908 - U+290F : 0x99999999 */
-      9,  /* U+2910 - U+2917 : 0x99999999 */
-      9,  /* U+2918 - U+291F : 0x99999999 */
-      9,  /* U+2920 - U+2927 : 0x99999999 */
-      9,  /* U+2928 - U+292F : 0x99999999 */
-      9,  /* U+2930 - U+2937 : 0x99999999 */
-      9,  /* U+2938 - U+293F : 0x99999999 */
-      9,  /* U+2940 - U+2947 : 0x99999999 */
-      9,  /* U+2948 - U+294F : 0x99999999 */
-      9,  /* U+2950 - U+2957 : 0x99999999 */
-      9,  /* U+2958 - U+295F : 0x99999999 */
-      9,  /* U+2960 - U+2967 : 0x99999999 */
-      9,  /* U+2968 - U+296F : 0x99999999 */
-      9,  /* U+2970 - U+2977 : 0x99999999 */
-      9,  /* U+2978 - U+297F : 0x99999999 */
-      9,  /* U+2980 - U+2987 : 0x99999999 */
-      9,  /* U+2988 - U+298F : 0x99999999 */
-      9,  /* U+2990 - U+2997 : 0x99999999 */
-      9,  /* U+2998 - U+299F : 0x99999999 */
-      9,  /* U+29A0 - U+29A7 : 0x99999999 */
-      9,  /* U+29A8 - U+29AF : 0x99999999 */
-      9,  /* U+29B0 - U+29B7 : 0x99999999 */
-      9,  /* U+29B8 - U+29BF : 0x99999999 */
-      9,  /* U+29C0 - U+29C7 : 0x99999999 */
-      9,  /* U+29C8 - U+29CF : 0x99999999 */
-      9,  /* U+29D0 - U+29D7 : 0x99999999 */
-      9,  /* U+29D8 - U+29DF : 0x99999999 */
-      9,  /* U+29E0 - U+29E7 : 0x99999999 */
-      9,  /* U+29E8 - U+29EF : 0x99999999 */
-      9,  /* U+29F0 - U+29F7 : 0x99999999 */
-      9,  /* U+29F8 - U+29FF : 0x99999999 */
-      9,  /* U+2A00 - U+2A07 : 0x99999999 */
-      9,  /* U+2A08 - U+2A0F : 0x99999999 */
-      9,  /* U+2A10 - U+2A17 : 0x99999999 */
-      9,  /* U+2A18 - U+2A1F : 0x99999999 */
-      9,  /* U+2A20 - U+2A27 : 0x99999999 */
-      9,  /* U+2A28 - U+2A2F : 0x99999999 */
-      9,  /* U+2A30 - U+2A37 : 0x99999999 */
-      9,  /* U+2A38 - U+2A3F : 0x99999999 */
-      9,  /* U+2A40 - U+2A47 : 0x99999999 */
-      9,  /* U+2A48 - U+2A4F : 0x99999999 */
-      9,  /* U+2A50 - U+2A57 : 0x99999999 */
-      9,  /* U+2A58 - U+2A5F : 0x99999999 */
-      9,  /* U+2A60 - U+2A67 : 0x99999999 */
-      9,  /* U+2A68 - U+2A6F : 0x99999999 */
-      9,  /* U+2A70 - U+2A77 : 0x99999999 */
-      9,  /* U+2A78 - U+2A7F : 0x99999999 */
-      9,  /* U+2A80 - U+2A87 : 0x99999999 */
-      9,  /* U+2A88 - U+2A8F : 0x99999999 */
-      9,  /* U+2A90 - U+2A97 : 0x99999999 */
-      9,  /* U+2A98 - U+2A9F : 0x99999999 */
-      9,  /* U+2AA0 - U+2AA7 : 0x99999999 */
-      9,  /* U+2AA8 - U+2AAF : 0x99999999 */
-      9,  /* U+2AB0 - U+2AB7 : 0x99999999 */
-      9,  /* U+2AB8 - U+2ABF : 0x99999999 */
-      9,  /* U+2AC0 - U+2AC7 : 0x99999999 */
-      9,  /* U+2AC8 - U+2ACF : 0x99999999 */
-      9,  /* U+2AD0 - U+2AD7 : 0x99999999 */
-      9,  /* U+2AD8 - U+2ADF : 0x99999999 */
-      9,  /* U+2AE0 - U+2AE7 : 0x99999999 */
-      9,  /* U+2AE8 - U+2AEF : 0x99999999 */
-      9,  /* U+2AF0 - U+2AF7 : 0x99999999 */
-      9,  /* U+2AF8 - U+2AFF : 0x99999999 */
-      9,  /* U+2B00 - U+2B07 : 0x99999999 */
-      9,  /* U+2B08 - U+2B0F : 0x99999999 */
-      9,  /* U+2B10 - U+2B17 : 0x99999999 */
-    135,  /* U+2B18 - U+2B1F : 0x11111999 */
-    142,  /* U+2B20 - U+2B27 : 0x11119999 */
-      1,  /* U+2B28 - U+2B2F : 0x11111111 */
-      1,  /* U+2B30 - U+2B37 : 0x11111111 */
-      1,  /* U+2B38 - U+2B3F : 0x11111111 */
-      1,  /* U+2B40 - U+2B47 : 0x11111111 */
-      1,  /* U+2B48 - U+2B4F : 0x11111111 */
-      1,  /* U+2B50 - U+2B57 : 0x11111111 */
-      1,  /* U+2B58 - U+2B5F : 0x11111111 */
-      1,  /* U+2B60 - U+2B67 : 0x11111111 */
-      1,  /* U+2B68 - U+2B6F : 0x11111111 */
-      1,  /* U+2B70 - U+2B77 : 0x11111111 */
-      1,  /* U+2B78 - U+2B7F : 0x11111111 */
-      1,  /* U+2B80 - U+2B87 : 0x11111111 */
-      1,  /* U+2B88 - U+2B8F : 0x11111111 */
-      1,  /* U+2B90 - U+2B97 : 0x11111111 */
-      1,  /* U+2B98 - U+2B9F : 0x11111111 */
-      1,  /* U+2BA0 - U+2BA7 : 0x11111111 */
-      1,  /* U+2BA8 - U+2BAF : 0x11111111 */
-      1,  /* U+2BB0 - U+2BB7 : 0x11111111 */
-      1,  /* U+2BB8 - U+2BBF : 0x11111111 */
-      1,  /* U+2BC0 - U+2BC7 : 0x11111111 */
-      1,  /* U+2BC8 - U+2BCF : 0x11111111 */
-      1,  /* U+2BD0 - U+2BD7 : 0x11111111 */
-      1,  /* U+2BD8 - U+2BDF : 0x11111111 */
-      1,  /* U+2BE0 - U+2BE7 : 0x11111111 */
-      1,  /* U+2BE8 - U+2BEF : 0x11111111 */
-      1,  /* U+2BF0 - U+2BF7 : 0x11111111 */
-      1,  /* U+2BF8 - U+2BFF : 0x11111111 */
-      1,  /* U+2C00 - U+2C07 : 0x11111111 */
-      1,  /* U+2C08 - U+2C0F : 0x11111111 */
-      1,  /* U+2C10 - U+2C17 : 0x11111111 */
-      1,  /* U+2C18 - U+2C1F : 0x11111111 */
-      1,  /* U+2C20 - U+2C27 : 0x11111111 */
-      1,  /* U+2C28 - U+2C2F : 0x11111111 */
-      1,  /* U+2C30 - U+2C37 : 0x11111111 */
-      1,  /* U+2C38 - U+2C3F : 0x11111111 */
-      1,  /* U+2C40 - U+2C47 : 0x11111111 */
-      1,  /* U+2C48 - U+2C4F : 0x11111111 */
-      1,  /* U+2C50 - U+2C57 : 0x11111111 */
-      1,  /* U+2C58 - U+2C5F : 0x11111111 */
-      1,  /* U+2C60 - U+2C67 : 0x11111111 */
-      1,  /* U+2C68 - U+2C6F : 0x11111111 */
-      1,  /* U+2C70 - U+2C77 : 0x11111111 */
-      1,  /* U+2C78 - U+2C7F : 0x11111111 */
-      1,  /* U+2C80 - U+2C87 : 0x11111111 */
-      1,  /* U+2C88 - U+2C8F : 0x11111111 */
-      1,  /* U+2C90 - U+2C97 : 0x11111111 */
-      1,  /* U+2C98 - U+2C9F : 0x11111111 */
-      1,  /* U+2CA0 - U+2CA7 : 0x11111111 */
-      1,  /* U+2CA8 - U+2CAF : 0x11111111 */
-      1,  /* U+2CB0 - U+2CB7 : 0x11111111 */
-      1,  /* U+2CB8 - U+2CBF : 0x11111111 */
-      1,  /* U+2CC0 - U+2CC7 : 0x11111111 */
-      1,  /* U+2CC8 - U+2CCF : 0x11111111 */
-      1,  /* U+2CD0 - U+2CD7 : 0x11111111 */
-      1,  /* U+2CD8 - U+2CDF : 0x11111111 */
-     32,  /* U+2CE0 - U+2CE7 : 0x99911111 */
-    135,  /* U+2CE8 - U+2CEF : 0x11111999 */
-      1,  /* U+2CF0 - U+2CF7 : 0x11111111 */
-    140,  /* U+2CF8 - U+2CFF : 0x99999991 */
-      1,  /* U+2D00 - U+2D07 : 0x11111111 */
-      1,  /* U+2D08 - U+2D0F : 0x11111111 */
-      1,  /* U+2D10 - U+2D17 : 0x11111111 */
-      1,  /* U+2D18 - U+2D1F : 0x11111111 */
-      1,  /* U+2D20 - U+2D27 : 0x11111111 */
-      1,  /* U+2D28 - U+2D2F : 0x11111111 */
-      1,  /* U+2D30 - U+2D37 : 0x11111111 */
-      1,  /* U+2D38 - U+2D3F : 0x11111111 */
-      1,  /* U+2D40 - U+2D47 : 0x11111111 */
-      1,  /* U+2D48 - U+2D4F : 0x11111111 */
-      1,  /* U+2D50 - U+2D57 : 0x11111111 */
-      1,  /* U+2D58 - U+2D5F : 0x11111111 */
-      1,  /* U+2D60 - U+2D67 : 0x11111111 */
-      1,  /* U+2D68 - U+2D6F : 0x11111111 */
-      1,  /* U+2D70 - U+2D77 : 0x11111111 */
-      1,  /* U+2D78 - U+2D7F : 0x11111111 */
-      1,  /* U+2D80 - U+2D87 : 0x11111111 */
-      1,  /* U+2D88 - U+2D8F : 0x11111111 */
-      1,  /* U+2D90 - U+2D97 : 0x11111111 */
-      1,  /* U+2D98 - U+2D9F : 0x11111111 */
-      1,  /* U+2DA0 - U+2DA7 : 0x11111111 */
-      1,  /* U+2DA8 - U+2DAF : 0x11111111 */
-      1,  /* U+2DB0 - U+2DB7 : 0x11111111 */
-      1,  /* U+2DB8 - U+2DBF : 0x11111111 */
-      1,  /* U+2DC0 - U+2DC7 : 0x11111111 */
-      1,  /* U+2DC8 - U+2DCF : 0x11111111 */
-      1,  /* U+2DD0 - U+2DD7 : 0x11111111 */
-      1,  /* U+2DD8 - U+2DDF : 0x11111111 */
-};
-
-static PRUint8 gBidiCatIdx4[192] = {
-      9,  /* U+2E00 - U+2E07 : 0x99999999 */
-      9,  /* U+2E08 - U+2E0F : 0x99999999 */
-      9,  /* U+2E10 - U+2E17 : 0x99999999 */
-     34,  /* U+2E18 - U+2E1F : 0x11991111 */
-      1,  /* U+2E20 - U+2E27 : 0x11111111 */
-      1,  /* U+2E28 - U+2E2F : 0x11111111 */
-      1,  /* U+2E30 - U+2E37 : 0x11111111 */
-      1,  /* U+2E38 - U+2E3F : 0x11111111 */
-      1,  /* U+2E40 - U+2E47 : 0x11111111 */
-      1,  /* U+2E48 - U+2E4F : 0x11111111 */
-      1,  /* U+2E50 - U+2E57 : 0x11111111 */
-      1,  /* U+2E58 - U+2E5F : 0x11111111 */
-      1,  /* U+2E60 - U+2E67 : 0x11111111 */
-      1,  /* U+2E68 - U+2E6F : 0x11111111 */
-      1,  /* U+2E70 - U+2E77 : 0x11111111 */
-      1,  /* U+2E78 - U+2E7F : 0x11111111 */
-      9,  /* U+2E80 - U+2E87 : 0x99999999 */
-      9,  /* U+2E88 - U+2E8F : 0x99999999 */
-      9,  /* U+2E90 - U+2E97 : 0x99999999 */
-    143,  /* U+2E98 - U+2E9F : 0x99999199 */
-      9,  /* U+2EA0 - U+2EA7 : 0x99999999 */
-      9,  /* U+2EA8 - U+2EAF : 0x99999999 */
-      9,  /* U+2EB0 - U+2EB7 : 0x99999999 */
-      9,  /* U+2EB8 - U+2EBF : 0x99999999 */
-      9,  /* U+2EC0 - U+2EC7 : 0x99999999 */
-      9,  /* U+2EC8 - U+2ECF : 0x99999999 */
-      9,  /* U+2ED0 - U+2ED7 : 0x99999999 */
-      9,  /* U+2ED8 - U+2EDF : 0x99999999 */
-      9,  /* U+2EE0 - U+2EE7 : 0x99999999 */
-      9,  /* U+2EE8 - U+2EEF : 0x99999999 */
-    142,  /* U+2EF0 - U+2EF7 : 0x11119999 */
-      1,  /* U+2EF8 - U+2EFF : 0x11111111 */
-      9,  /* U+2F00 - U+2F07 : 0x99999999 */
-      9,  /* U+2F08 - U+2F0F : 0x99999999 */
-      9,  /* U+2F10 - U+2F17 : 0x99999999 */
-      9,  /* U+2F18 - U+2F1F : 0x99999999 */
-      9,  /* U+2F20 - U+2F27 : 0x99999999 */
-      9,  /* U+2F28 - U+2F2F : 0x99999999 */
-      9,  /* U+2F30 - U+2F37 : 0x99999999 */
-      9,  /* U+2F38 - U+2F3F : 0x99999999 */
-      9,  /* U+2F40 - U+2F47 : 0x99999999 */
-      9,  /* U+2F48 - U+2F4F : 0x99999999 */
-      9,  /* U+2F50 - U+2F57 : 0x99999999 */
-      9,  /* U+2F58 - U+2F5F : 0x99999999 */
-      9,  /* U+2F60 - U+2F67 : 0x99999999 */
-      9,  /* U+2F68 - U+2F6F : 0x99999999 */
-      9,  /* U+2F70 - U+2F77 : 0x99999999 */
-      9,  /* U+2F78 - U+2F7F : 0x99999999 */
-      9,  /* U+2F80 - U+2F87 : 0x99999999 */
-      9,  /* U+2F88 - U+2F8F : 0x99999999 */
-      9,  /* U+2F90 - U+2F97 : 0x99999999 */
-      9,  /* U+2F98 - U+2F9F : 0x99999999 */
-      9,  /* U+2FA0 - U+2FA7 : 0x99999999 */
-      9,  /* U+2FA8 - U+2FAF : 0x99999999 */
-      9,  /* U+2FB0 - U+2FB7 : 0x99999999 */
-      9,  /* U+2FB8 - U+2FBF : 0x99999999 */
-      9,  /* U+2FC0 - U+2FC7 : 0x99999999 */
-      9,  /* U+2FC8 - U+2FCF : 0x99999999 */
-    132,  /* U+2FD0 - U+2FD7 : 0x11999999 */
-      1,  /* U+2FD8 - U+2FDF : 0x11111111 */
-      1,  /* U+2FE0 - U+2FE7 : 0x11111111 */
-      1,  /* U+2FE8 - U+2FEF : 0x11111111 */
-      9,  /* U+2FF0 - U+2FF7 : 0x99999999 */
-    142,  /* U+2FF8 - U+2FFF : 0x11119999 */
-    144,  /* U+3000 - U+3007 : 0x1119999E */
-      9,  /* U+3008 - U+300F : 0x99999999 */
-      9,  /* U+3010 - U+3017 : 0x99999999 */
-      9,  /* U+3018 - U+301F : 0x99999999 */
-     21,  /* U+3020 - U+3027 : 0x11111119 */
-    145,  /* U+3028 - U+302F : 0xAAAAAA11 */
-    125,  /* U+3030 - U+3037 : 0x99111119 */
-     32,  /* U+3038 - U+303F : 0x99911111 */
-      1,  /* U+3040 - U+3047 : 0x11111111 */
-      1,  /* U+3048 - U+304F : 0x11111111 */
-      1,  /* U+3050 - U+3057 : 0x11111111 */
-      1,  /* U+3058 - U+305F : 0x11111111 */
-      1,  /* U+3060 - U+3067 : 0x11111111 */
-      1,  /* U+3068 - U+306F : 0x11111111 */
-      1,  /* U+3070 - U+3077 : 0x11111111 */
-      1,  /* U+3078 - U+307F : 0x11111111 */
-      1,  /* U+3080 - U+3087 : 0x11111111 */
-      1,  /* U+3088 - U+308F : 0x11111111 */
-      1,  /* U+3090 - U+3097 : 0x11111111 */
-    146,  /* U+3098 - U+309F : 0x11199AA1 */
-     21,  /* U+30A0 - U+30A7 : 0x11111119 */
-      1,  /* U+30A8 - U+30AF : 0x11111111 */
-      1,  /* U+30B0 - U+30B7 : 0x11111111 */
-      1,  /* U+30B8 - U+30BF : 0x11111111 */
-      1,  /* U+30C0 - U+30C7 : 0x11111111 */
-      1,  /* U+30C8 - U+30CF : 0x11111111 */
-      1,  /* U+30D0 - U+30D7 : 0x11111111 */
-      1,  /* U+30D8 - U+30DF : 0x11111111 */
-      1,  /* U+30E0 - U+30E7 : 0x11111111 */
-      1,  /* U+30E8 - U+30EF : 0x11111111 */
-      1,  /* U+30F0 - U+30F7 : 0x11111111 */
-    147,  /* U+30F8 - U+30FF : 0x11119111 */
-      1,  /* U+3100 - U+3107 : 0x11111111 */
-      1,  /* U+3108 - U+310F : 0x11111111 */
-      1,  /* U+3110 - U+3117 : 0x11111111 */
-      1,  /* U+3118 - U+311F : 0x11111111 */
-      1,  /* U+3120 - U+3127 : 0x11111111 */
-      1,  /* U+3128 - U+312F : 0x11111111 */
-      1,  /* U+3130 - U+3137 : 0x11111111 */
-      1,  /* U+3138 - U+313F : 0x11111111 */
-      1,  /* U+3140 - U+3147 : 0x11111111 */
-      1,  /* U+3148 - U+314F : 0x11111111 */
-      1,  /* U+3150 - U+3157 : 0x11111111 */
-      1,  /* U+3158 - U+315F : 0x11111111 */
-      1,  /* U+3160 - U+3167 : 0x11111111 */
-      1,  /* U+3168 - U+316F : 0x11111111 */
-      1,  /* U+3170 - U+3177 : 0x11111111 */
-      1,  /* U+3178 - U+317F : 0x11111111 */
-      1,  /* U+3180 - U+3187 : 0x11111111 */
-      1,  /* U+3188 - U+318F : 0x11111111 */
-      1,  /* U+3190 - U+3197 : 0x11111111 */
-      1,  /* U+3198 - U+319F : 0x11111111 */
-      1,  /* U+31A0 - U+31A7 : 0x11111111 */
-      1,  /* U+31A8 - U+31AF : 0x11111111 */
-      1,  /* U+31B0 - U+31B7 : 0x11111111 */
-      1,  /* U+31B8 - U+31BF : 0x11111111 */
-      9,  /* U+31C0 - U+31C7 : 0x99999999 */
-      9,  /* U+31C8 - U+31CF : 0x99999999 */
-      1,  /* U+31D0 - U+31D7 : 0x11111111 */
-      1,  /* U+31D8 - U+31DF : 0x11111111 */
-      1,  /* U+31E0 - U+31E7 : 0x11111111 */
-      1,  /* U+31E8 - U+31EF : 0x11111111 */
-      1,  /* U+31F0 - U+31F7 : 0x11111111 */
-      1,  /* U+31F8 - U+31FF : 0x11111111 */
-      1,  /* U+3200 - U+3207 : 0x11111111 */
-      1,  /* U+3208 - U+320F : 0x11111111 */
-      1,  /* U+3210 - U+3217 : 0x11111111 */
-    112,  /* U+3218 - U+321F : 0x19911111 */
-      1,  /* U+3220 - U+3227 : 0x11111111 */
-      1,  /* U+3228 - U+322F : 0x11111111 */
-      1,  /* U+3230 - U+3237 : 0x11111111 */
-      1,  /* U+3238 - U+323F : 0x11111111 */
-      1,  /* U+3240 - U+3247 : 0x11111111 */
-      1,  /* U+3248 - U+324F : 0x11111111 */
-      9,  /* U+3250 - U+3257 : 0x99999999 */
-      9,  /* U+3258 - U+325F : 0x99999999 */
-      1,  /* U+3260 - U+3267 : 0x11111111 */
-      1,  /* U+3268 - U+326F : 0x11111111 */
-      1,  /* U+3270 - U+3277 : 0x11111111 */
-    148,  /* U+3278 - U+327F : 0x19991111 */
-      1,  /* U+3280 - U+3287 : 0x11111111 */
-      1,  /* U+3288 - U+328F : 0x11111111 */
-      1,  /* U+3290 - U+3297 : 0x11111111 */
-      1,  /* U+3298 - U+329F : 0x11111111 */
-      1,  /* U+32A0 - U+32A7 : 0x11111111 */
-      1,  /* U+32A8 - U+32AF : 0x11111111 */
-    140,  /* U+32B0 - U+32B7 : 0x99999991 */
-      9,  /* U+32B8 - U+32BF : 0x99999999 */
-      1,  /* U+32C0 - U+32C7 : 0x11111111 */
-    149,  /* U+32C8 - U+32CF : 0x99991111 */
-      1,  /* U+32D0 - U+32D7 : 0x11111111 */
-      1,  /* U+32D8 - U+32DF : 0x11111111 */
-      1,  /* U+32E0 - U+32E7 : 0x11111111 */
-      1,  /* U+32E8 - U+32EF : 0x11111111 */
-      1,  /* U+32F0 - U+32F7 : 0x11111111 */
-      1,  /* U+32F8 - U+32FF : 0x11111111 */
-      1,  /* U+3300 - U+3307 : 0x11111111 */
-      1,  /* U+3308 - U+330F : 0x11111111 */
-      1,  /* U+3310 - U+3317 : 0x11111111 */
-      1,  /* U+3318 - U+331F : 0x11111111 */
-      1,  /* U+3320 - U+3327 : 0x11111111 */
-      1,  /* U+3328 - U+332F : 0x11111111 */
-      1,  /* U+3330 - U+3337 : 0x11111111 */
-      1,  /* U+3338 - U+333F : 0x11111111 */
-      1,  /* U+3340 - U+3347 : 0x11111111 */
-      1,  /* U+3348 - U+334F : 0x11111111 */
-      1,  /* U+3350 - U+3357 : 0x11111111 */
-      1,  /* U+3358 - U+335F : 0x11111111 */
-      1,  /* U+3360 - U+3367 : 0x11111111 */
-      1,  /* U+3368 - U+336F : 0x11111111 */
-     29,  /* U+3370 - U+3377 : 0x91111111 */
-    135,  /* U+3378 - U+337F : 0x11111999 */
-      1,  /* U+3380 - U+3387 : 0x11111111 */
-      1,  /* U+3388 - U+338F : 0x11111111 */
-      1,  /* U+3390 - U+3397 : 0x11111111 */
-      1,  /* U+3398 - U+339F : 0x11111111 */
-      1,  /* U+33A0 - U+33A7 : 0x11111111 */
-      1,  /* U+33A8 - U+33AF : 0x11111111 */
-      1,  /* U+33B0 - U+33B7 : 0x11111111 */
-      1,  /* U+33B8 - U+33BF : 0x11111111 */
-      1,  /* U+33C0 - U+33C7 : 0x11111111 */
-      1,  /* U+33C8 - U+33CF : 0x11111111 */
-      1,  /* U+33D0 - U+33D7 : 0x11111111 */
-    106,  /* U+33D8 - U+33DF : 0x99111111 */
-      1,  /* U+33E0 - U+33E7 : 0x11111111 */
-      1,  /* U+33E8 - U+33EF : 0x11111111 */
-      1,  /* U+33F0 - U+33F7 : 0x11111111 */
-     29,  /* U+33F8 - U+33FF : 0x91111111 */
-};
-
-static PRUint8 gBidiCatIdx5[8] = {
-      9,  /* U+4DC0 - U+4DC7 : 0x99999999 */
-      9,  /* U+4DC8 - U+4DCF : 0x99999999 */
-      9,  /* U+4DD0 - U+4DD7 : 0x99999999 */
-      9,  /* U+4DD8 - U+4DDF : 0x99999999 */
-      9,  /* U+4DE0 - U+4DE7 : 0x99999999 */
-      9,  /* U+4DE8 - U+4DEF : 0x99999999 */
-      9,  /* U+4DF0 - U+4DF7 : 0x99999999 */
-      9,  /* U+4DF8 - U+4DFF : 0x99999999 */
-};
-
-static PRUint8 gBidiCatIdx6[272] = {
-      1,  /* U+A000 - U+A007 : 0x11111111 */
-      1,  /* U+A008 - U+A00F : 0x11111111 */
-      1,  /* U+A010 - U+A017 : 0x11111111 */
-      1,  /* U+A018 - U+A01F : 0x11111111 */
-      1,  /* U+A020 - U+A027 : 0x11111111 */
-      1,  /* U+A028 - U+A02F : 0x11111111 */
-      1,  /* U+A030 - U+A037 : 0x11111111 */
-      1,  /* U+A038 - U+A03F : 0x11111111 */
-      1,  /* U+A040 - U+A047 : 0x11111111 */
-      1,  /* U+A048 - U+A04F : 0x11111111 */
-      1,  /* U+A050 - U+A057 : 0x11111111 */
-      1,  /* U+A058 - U+A05F : 0x11111111 */
-      1,  /* U+A060 - U+A067 : 0x11111111 */
-      1,  /* U+A068 - U+A06F : 0x11111111 */
-      1,  /* U+A070 - U+A077 : 0x11111111 */
-      1,  /* U+A078 - U+A07F : 0x11111111 */
-      1,  /* U+A080 - U+A087 : 0x11111111 */
-      1,  /* U+A088 - U+A08F : 0x11111111 */
-      1,  /* U+A090 - U+A097 : 0x11111111 */
-      1,  /* U+A098 - U+A09F : 0x11111111 */
-      1,  /* U+A0A0 - U+A0A7 : 0x11111111 */
-      1,  /* U+A0A8 - U+A0AF : 0x11111111 */
-      1,  /* U+A0B0 - U+A0B7 : 0x11111111 */
-      1,  /* U+A0B8 - U+A0BF : 0x11111111 */
-      1,  /* U+A0C0 - U+A0C7 : 0x11111111 */
-      1,  /* U+A0C8 - U+A0CF : 0x11111111 */
-      1,  /* U+A0D0 - U+A0D7 : 0x11111111 */
-      1,  /* U+A0D8 - U+A0DF : 0x11111111 */
-      1,  /* U+A0E0 - U+A0E7 : 0x11111111 */
-      1,  /* U+A0E8 - U+A0EF : 0x11111111 */
-      1,  /* U+A0F0 - U+A0F7 : 0x11111111 */
-      1,  /* U+A0F8 - U+A0FF : 0x11111111 */
-      1,  /* U+A100 - U+A107 : 0x11111111 */
-      1,  /* U+A108 - U+A10F : 0x11111111 */
-      1,  /* U+A110 - U+A117 : 0x11111111 */
-      1,  /* U+A118 - U+A11F : 0x11111111 */
-      1,  /* U+A120 - U+A127 : 0x11111111 */
-      1,  /* U+A128 - U+A12F : 0x11111111 */
-      1,  /* U+A130 - U+A137 : 0x11111111 */
-      1,  /* U+A138 - U+A13F : 0x11111111 */
-      1,  /* U+A140 - U+A147 : 0x11111111 */
-      1,  /* U+A148 - U+A14F : 0x11111111 */
-      1,  /* U+A150 - U+A157 : 0x11111111 */
-      1,  /* U+A158 - U+A15F : 0x11111111 */
-      1,  /* U+A160 - U+A167 : 0x11111111 */
-      1,  /* U+A168 - U+A16F : 0x11111111 */
-      1,  /* U+A170 - U+A177 : 0x11111111 */
-      1,  /* U+A178 - U+A17F : 0x11111111 */
-      1,  /* U+A180 - U+A187 : 0x11111111 */
-      1,  /* U+A188 - U+A18F : 0x11111111 */
-      1,  /* U+A190 - U+A197 : 0x11111111 */
-      1,  /* U+A198 - U+A19F : 0x11111111 */
-      1,  /* U+A1A0 - U+A1A7 : 0x11111111 */
-      1,  /* U+A1A8 - U+A1AF : 0x11111111 */
-      1,  /* U+A1B0 - U+A1B7 : 0x11111111 */
-      1,  /* U+A1B8 - U+A1BF : 0x11111111 */
-      1,  /* U+A1C0 - U+A1C7 : 0x11111111 */
-      1,  /* U+A1C8 - U+A1CF : 0x11111111 */
-      1,  /* U+A1D0 - U+A1D7 : 0x11111111 */
-      1,  /* U+A1D8 - U+A1DF : 0x11111111 */
-      1,  /* U+A1E0 - U+A1E7 : 0x11111111 */
-      1,  /* U+A1E8 - U+A1EF : 0x11111111 */
-      1,  /* U+A1F0 - U+A1F7 : 0x11111111 */
-      1,  /* U+A1F8 - U+A1FF : 0x11111111 */
-      1,  /* U+A200 - U+A207 : 0x11111111 */
-      1,  /* U+A208 - U+A20F : 0x11111111 */
-      1,  /* U+A210 - U+A217 : 0x11111111 */
-      1,  /* U+A218 - U+A21F : 0x11111111 */
-      1,  /* U+A220 - U+A227 : 0x11111111 */
-      1,  /* U+A228 - U+A22F : 0x11111111 */
-      1,  /* U+A230 - U+A237 : 0x11111111 */
-      1,  /* U+A238 - U+A23F : 0x11111111 */
-      1,  /* U+A240 - U+A247 : 0x11111111 */
-      1,  /* U+A248 - U+A24F : 0x11111111 */
-      1,  /* U+A250 - U+A257 : 0x11111111 */
-      1,  /* U+A258 - U+A25F : 0x11111111 */
-      1,  /* U+A260 - U+A267 : 0x11111111 */
-      1,  /* U+A268 - U+A26F : 0x11111111 */
-      1,  /* U+A270 - U+A277 : 0x11111111 */
-      1,  /* U+A278 - U+A27F : 0x11111111 */
-      1,  /* U+A280 - U+A287 : 0x11111111 */
-      1,  /* U+A288 - U+A28F : 0x11111111 */
-      1,  /* U+A290 - U+A297 : 0x11111111 */
-      1,  /* U+A298 - U+A29F : 0x11111111 */
-      1,  /* U+A2A0 - U+A2A7 : 0x11111111 */
-      1,  /* U+A2A8 - U+A2AF : 0x11111111 */
-      1,  /* U+A2B0 - U+A2B7 : 0x11111111 */
-      1,  /* U+A2B8 - U+A2BF : 0x11111111 */
-      1,  /* U+A2C0 - U+A2C7 : 0x11111111 */
-      1,  /* U+A2C8 - U+A2CF : 0x11111111 */
-      1,  /* U+A2D0 - U+A2D7 : 0x11111111 */
-      1,  /* U+A2D8 - U+A2DF : 0x11111111 */
-      1,  /* U+A2E0 - U+A2E7 : 0x11111111 */
-      1,  /* U+A2E8 - U+A2EF : 0x11111111 */
-      1,  /* U+A2F0 - U+A2F7 : 0x11111111 */
-      1,  /* U+A2F8 - U+A2FF : 0x11111111 */
-      1,  /* U+A300 - U+A307 : 0x11111111 */
-      1,  /* U+A308 - U+A30F : 0x11111111 */
-      1,  /* U+A310 - U+A317 : 0x11111111 */
-      1,  /* U+A318 - U+A31F : 0x11111111 */
-      1,  /* U+A320 - U+A327 : 0x11111111 */
-      1,  /* U+A328 - U+A32F : 0x11111111 */
-      1,  /* U+A330 - U+A337 : 0x11111111 */
-      1,  /* U+A338 - U+A33F : 0x11111111 */
-      1,  /* U+A340 - U+A347 : 0x11111111 */
-      1,  /* U+A348 - U+A34F : 0x11111111 */
-      1,  /* U+A350 - U+A357 : 0x11111111 */
-      1,  /* U+A358 - U+A35F : 0x11111111 */
-      1,  /* U+A360 - U+A367 : 0x11111111 */
-      1,  /* U+A368 - U+A36F : 0x11111111 */
-      1,  /* U+A370 - U+A377 : 0x11111111 */
-      1,  /* U+A378 - U+A37F : 0x11111111 */
-      1,  /* U+A380 - U+A387 : 0x11111111 */
-      1,  /* U+A388 - U+A38F : 0x11111111 */
-      1,  /* U+A390 - U+A397 : 0x11111111 */
-      1,  /* U+A398 - U+A39F : 0x11111111 */
-      1,  /* U+A3A0 - U+A3A7 : 0x11111111 */
-      1,  /* U+A3A8 - U+A3AF : 0x11111111 */
-      1,  /* U+A3B0 - U+A3B7 : 0x11111111 */
-      1,  /* U+A3B8 - U+A3BF : 0x11111111 */
-      1,  /* U+A3C0 - U+A3C7 : 0x11111111 */
-      1,  /* U+A3C8 - U+A3CF : 0x11111111 */
-      1,  /* U+A3D0 - U+A3D7 : 0x11111111 */
-      1,  /* U+A3D8 - U+A3DF : 0x11111111 */
-      1,  /* U+A3E0 - U+A3E7 : 0x11111111 */
-      1,  /* U+A3E8 - U+A3EF : 0x11111111 */
-      1,  /* U+A3F0 - U+A3F7 : 0x11111111 */
-      1,  /* U+A3F8 - U+A3FF : 0x11111111 */
-      1,  /* U+A400 - U+A407 : 0x11111111 */
-      1,  /* U+A408 - U+A40F : 0x11111111 */
-      1,  /* U+A410 - U+A417 : 0x11111111 */
-      1,  /* U+A418 - U+A41F : 0x11111111 */
-      1,  /* U+A420 - U+A427 : 0x11111111 */
-      1,  /* U+A428 - U+A42F : 0x11111111 */
-      1,  /* U+A430 - U+A437 : 0x11111111 */
-      1,  /* U+A438 - U+A43F : 0x11111111 */
-      1,  /* U+A440 - U+A447 : 0x11111111 */
-      1,  /* U+A448 - U+A44F : 0x11111111 */
-      1,  /* U+A450 - U+A457 : 0x11111111 */
-      1,  /* U+A458 - U+A45F : 0x11111111 */
-      1,  /* U+A460 - U+A467 : 0x11111111 */
-      1,  /* U+A468 - U+A46F : 0x11111111 */
-      1,  /* U+A470 - U+A477 : 0x11111111 */
-      1,  /* U+A478 - U+A47F : 0x11111111 */
-      1,  /* U+A480 - U+A487 : 0x11111111 */
-      1,  /* U+A488 - U+A48F : 0x11111111 */
-      9,  /* U+A490 - U+A497 : 0x99999999 */
-      9,  /* U+A498 - U+A49F : 0x99999999 */
-      9,  /* U+A4A0 - U+A4A7 : 0x99999999 */
-      9,  /* U+A4A8 - U+A4AF : 0x99999999 */
-      9,  /* U+A4B0 - U+A4B7 : 0x99999999 */
-      9,  /* U+A4B8 - U+A4BF : 0x99999999 */
-    134,  /* U+A4C0 - U+A4C7 : 0x19999999 */
-      1,  /* U+A4C8 - U+A4CF : 0x11111111 */
-      1,  /* U+A4D0 - U+A4D7 : 0x11111111 */
-      1,  /* U+A4D8 - U+A4DF : 0x11111111 */
-      1,  /* U+A4E0 - U+A4E7 : 0x11111111 */
-      1,  /* U+A4E8 - U+A4EF : 0x11111111 */
-      1,  /* U+A4F0 - U+A4F7 : 0x11111111 */
-      1,  /* U+A4F8 - U+A4FF : 0x11111111 */
-      1,  /* U+A500 - U+A507 : 0x11111111 */
-      1,  /* U+A508 - U+A50F : 0x11111111 */
-      1,  /* U+A510 - U+A517 : 0x11111111 */
-      1,  /* U+A518 - U+A51F : 0x11111111 */
-      1,  /* U+A520 - U+A527 : 0x11111111 */
-      1,  /* U+A528 - U+A52F : 0x11111111 */
-      1,  /* U+A530 - U+A537 : 0x11111111 */
-      1,  /* U+A538 - U+A53F : 0x11111111 */
-      1,  /* U+A540 - U+A547 : 0x11111111 */
-      1,  /* U+A548 - U+A54F : 0x11111111 */
-      1,  /* U+A550 - U+A557 : 0x11111111 */
-      1,  /* U+A558 - U+A55F : 0x11111111 */
-      1,  /* U+A560 - U+A567 : 0x11111111 */
-      1,  /* U+A568 - U+A56F : 0x11111111 */
-      1,  /* U+A570 - U+A577 : 0x11111111 */
-      1,  /* U+A578 - U+A57F : 0x11111111 */
-      1,  /* U+A580 - U+A587 : 0x11111111 */
-      1,  /* U+A588 - U+A58F : 0x11111111 */
-      1,  /* U+A590 - U+A597 : 0x11111111 */
-      1,  /* U+A598 - U+A59F : 0x11111111 */
-      1,  /* U+A5A0 - U+A5A7 : 0x11111111 */
-      1,  /* U+A5A8 - U+A5AF : 0x11111111 */
-      1,  /* U+A5B0 - U+A5B7 : 0x11111111 */
-      1,  /* U+A5B8 - U+A5BF : 0x11111111 */
-      1,  /* U+A5C0 - U+A5C7 : 0x11111111 */
-      1,  /* U+A5C8 - U+A5CF : 0x11111111 */
-      1,  /* U+A5D0 - U+A5D7 : 0x11111111 */
-      1,  /* U+A5D8 - U+A5DF : 0x11111111 */
-      1,  /* U+A5E0 - U+A5E7 : 0x11111111 */
-      1,  /* U+A5E8 - U+A5EF : 0x11111111 */
-      1,  /* U+A5F0 - U+A5F7 : 0x11111111 */
-      1,  /* U+A5F8 - U+A5FF : 0x11111111 */
-      1,  /* U+A600 - U+A607 : 0x11111111 */
-      1,  /* U+A608 - U+A60F : 0x11111111 */
-      1,  /* U+A610 - U+A617 : 0x11111111 */
-      1,  /* U+A618 - U+A61F : 0x11111111 */
-      1,  /* U+A620 - U+A627 : 0x11111111 */
-      1,  /* U+A628 - U+A62F : 0x11111111 */
-      1,  /* U+A630 - U+A637 : 0x11111111 */
-      1,  /* U+A638 - U+A63F : 0x11111111 */
-      1,  /* U+A640 - U+A647 : 0x11111111 */
-      1,  /* U+A648 - U+A64F : 0x11111111 */
-      1,  /* U+A650 - U+A657 : 0x11111111 */
-      1,  /* U+A658 - U+A65F : 0x11111111 */
-      1,  /* U+A660 - U+A667 : 0x11111111 */
-      1,  /* U+A668 - U+A66F : 0x11111111 */
-      1,  /* U+A670 - U+A677 : 0x11111111 */
-      1,  /* U+A678 - U+A67F : 0x11111111 */
-      1,  /* U+A680 - U+A687 : 0x11111111 */
-      1,  /* U+A688 - U+A68F : 0x11111111 */
-      1,  /* U+A690 - U+A697 : 0x11111111 */
-      1,  /* U+A698 - U+A69F : 0x11111111 */
-      1,  /* U+A6A0 - U+A6A7 : 0x11111111 */
-      1,  /* U+A6A8 - U+A6AF : 0x11111111 */
-      1,  /* U+A6B0 - U+A6B7 : 0x11111111 */
-      1,  /* U+A6B8 - U+A6BF : 0x11111111 */
-      1,  /* U+A6C0 - U+A6C7 : 0x11111111 */
-      1,  /* U+A6C8 - U+A6CF : 0x11111111 */
-      1,  /* U+A6D0 - U+A6D7 : 0x11111111 */
-      1,  /* U+A6D8 - U+A6DF : 0x11111111 */
-      1,  /* U+A6E0 - U+A6E7 : 0x11111111 */
-      1,  /* U+A6E8 - U+A6EF : 0x11111111 */
-      1,  /* U+A6F0 - U+A6F7 : 0x11111111 */
-      1,  /* U+A6F8 - U+A6FF : 0x11111111 */
-      9,  /* U+A700 - U+A707 : 0x99999999 */
-      9,  /* U+A708 - U+A70F : 0x99999999 */
-      9,  /* U+A710 - U+A717 : 0x99999999 */
-    135,  /* U+A718 - U+A71F : 0x11111999 */
-     97,  /* U+A720 - U+A727 : 0x11111199 */
-      1,  /* U+A728 - U+A72F : 0x11111111 */
-      1,  /* U+A730 - U+A737 : 0x11111111 */
-      1,  /* U+A738 - U+A73F : 0x11111111 */
-      1,  /* U+A740 - U+A747 : 0x11111111 */
-      1,  /* U+A748 - U+A74F : 0x11111111 */
-      1,  /* U+A750 - U+A757 : 0x11111111 */
-      1,  /* U+A758 - U+A75F : 0x11111111 */
-      1,  /* U+A760 - U+A767 : 0x11111111 */
-      1,  /* U+A768 - U+A76F : 0x11111111 */
-      1,  /* U+A770 - U+A777 : 0x11111111 */
-      1,  /* U+A778 - U+A77F : 0x11111111 */
-      1,  /* U+A780 - U+A787 : 0x11111111 */
-      1,  /* U+A788 - U+A78F : 0x11111111 */
-      1,  /* U+A790 - U+A797 : 0x11111111 */
-      1,  /* U+A798 - U+A79F : 0x11111111 */
-      1,  /* U+A7A0 - U+A7A7 : 0x11111111 */
-      1,  /* U+A7A8 - U+A7AF : 0x11111111 */
-      1,  /* U+A7B0 - U+A7B7 : 0x11111111 */
-      1,  /* U+A7B8 - U+A7BF : 0x11111111 */
-      1,  /* U+A7C0 - U+A7C7 : 0x11111111 */
-      1,  /* U+A7C8 - U+A7CF : 0x11111111 */
-      1,  /* U+A7D0 - U+A7D7 : 0x11111111 */
-      1,  /* U+A7D8 - U+A7DF : 0x11111111 */
-      1,  /* U+A7E0 - U+A7E7 : 0x11111111 */
-      1,  /* U+A7E8 - U+A7EF : 0x11111111 */
-      1,  /* U+A7F0 - U+A7F7 : 0x11111111 */
-      1,  /* U+A7F8 - U+A7FF : 0x11111111 */
-    150,  /* U+A800 - U+A807 : 0x1A111A11 */
-    151,  /* U+A808 - U+A80F : 0x1111A111 */
-      1,  /* U+A810 - U+A817 : 0x11111111 */
-      1,  /* U+A818 - U+A81F : 0x11111111 */
-     82,  /* U+A820 - U+A827 : 0x1AA11111 */
-    142,  /* U+A828 - U+A82F : 0x11119999 */
-      1,  /* U+A830 - U+A837 : 0x11111111 */
-      1,  /* U+A838 - U+A83F : 0x11111111 */
-      1,  /* U+A840 - U+A847 : 0x11111111 */
-      1,  /* U+A848 - U+A84F : 0x11111111 */
-      1,  /* U+A850 - U+A857 : 0x11111111 */
-      1,  /* U+A858 - U+A85F : 0x11111111 */
-      1,  /* U+A860 - U+A867 : 0x11111111 */
-      1,  /* U+A868 - U+A86F : 0x11111111 */
-    149,  /* U+A870 - U+A877 : 0x99991111 */
-      1,  /* U+A878 - U+A87F : 0x11111111 */
-};
-
-static PRUint8 gBidiCatIdx7[274] = {
-      1,  /* U+F900 - U+F907 : 0x11111111 */
-      1,  /* U+F908 - U+F90F : 0x11111111 */
-      1,  /* U+F910 - U+F917 : 0x11111111 */
-      1,  /* U+F918 - U+F91F : 0x11111111 */
-      1,  /* U+F920 - U+F927 : 0x11111111 */
-      1,  /* U+F928 - U+F92F : 0x11111111 */
-      1,  /* U+F930 - U+F937 : 0x11111111 */
-      1,  /* U+F938 - U+F93F : 0x11111111 */
-      1,  /* U+F940 - U+F947 : 0x11111111 */
-      1,  /* U+F948 - U+F94F : 0x11111111 */
-      1,  /* U+F950 - U+F957 : 0x11111111 */
-      1,  /* U+F958 - U+F95F : 0x11111111 */
-      1,  /* U+F960 - U+F967 : 0x11111111 */
-      1,  /* U+F968 - U+F96F : 0x11111111 */
-      1,  /* U+F970 - U+F977 : 0x11111111 */
-      1,  /* U+F978 - U+F97F : 0x11111111 */
-      1,  /* U+F980 - U+F987 : 0x11111111 */
-      1,  /* U+F988 - U+F98F : 0x11111111 */
-      1,  /* U+F990 - U+F997 : 0x11111111 */
-      1,  /* U+F998 - U+F99F : 0x11111111 */
-      1,  /* U+F9A0 - U+F9A7 : 0x11111111 */
-      1,  /* U+F9A8 - U+F9AF : 0x11111111 */
-      1,  /* U+F9B0 - U+F9B7 : 0x11111111 */
-      1,  /* U+F9B8 - U+F9BF : 0x11111111 */
-      1,  /* U+F9C0 - U+F9C7 : 0x11111111 */
-      1,  /* U+F9C8 - U+F9CF : 0x11111111 */
-      1,  /* U+F9D0 - U+F9D7 : 0x11111111 */
-      1,  /* U+F9D8 - U+F9DF : 0x11111111 */
-      1,  /* U+F9E0 - U+F9E7 : 0x11111111 */
-      1,  /* U+F9E8 - U+F9EF : 0x11111111 */
-      1,  /* U+F9F0 - U+F9F7 : 0x11111111 */
-      1,  /* U+F9F8 - U+F9FF : 0x11111111 */
-      1,  /* U+FA00 - U+FA07 : 0x11111111 */
-      1,  /* U+FA08 - U+FA0F : 0x11111111 */
-      1,  /* U+FA10 - U+FA17 : 0x11111111 */
-      1,  /* U+FA18 - U+FA1F : 0x11111111 */
-      1,  /* U+FA20 - U+FA27 : 0x11111111 */
-      1,  /* U+FA28 - U+FA2F : 0x11111111 */
-      1,  /* U+FA30 - U+FA37 : 0x11111111 */
-      1,  /* U+FA38 - U+FA3F : 0x11111111 */
-      1,  /* U+FA40 - U+FA47 : 0x11111111 */
-      1,  /* U+FA48 - U+FA4F : 0x11111111 */
-      1,  /* U+FA50 - U+FA57 : 0x11111111 */
-      1,  /* U+FA58 - U+FA5F : 0x11111111 */
-      1,  /* U+FA60 - U+FA67 : 0x11111111 */
-      1,  /* U+FA68 - U+FA6F : 0x11111111 */
-      1,  /* U+FA70 - U+FA77 : 0x11111111 */
-      1,  /* U+FA78 - U+FA7F : 0x11111111 */
-      1,  /* U+FA80 - U+FA87 : 0x11111111 */
-      1,  /* U+FA88 - U+FA8F : 0x11111111 */
-      1,  /* U+FA90 - U+FA97 : 0x11111111 */
-      1,  /* U+FA98 - U+FA9F : 0x11111111 */
-      1,  /* U+FAA0 - U+FAA7 : 0x11111111 */
-      1,  /* U+FAA8 - U+FAAF : 0x11111111 */
-      1,  /* U+FAB0 - U+FAB7 : 0x11111111 */
-      1,  /* U+FAB8 - U+FABF : 0x11111111 */
-      1,  /* U+FAC0 - U+FAC7 : 0x11111111 */
-      1,  /* U+FAC8 - U+FACF : 0x11111111 */
-      1,  /* U+FAD0 - U+FAD7 : 0x11111111 */
-      1,  /* U+FAD8 - U+FADF : 0x11111111 */
-      1,  /* U+FAE0 - U+FAE7 : 0x11111111 */
-      1,  /* U+FAE8 - U+FAEF : 0x11111111 */
-      1,  /* U+FAF0 - U+FAF7 : 0x11111111 */
-      1,  /* U+FAF8 - U+FAFF : 0x11111111 */
-      1,  /* U+FB00 - U+FB07 : 0x11111111 */
-      1,  /* U+FB08 - U+FB0F : 0x11111111 */
-      1,  /* U+FB10 - U+FB17 : 0x11111111 */
-    152,  /* U+FB18 - U+FB1F : 0x2A211111 */
-      2,  /* U+FB20 - U+FB27 : 0x22222222 */
-    153,  /* U+FB28 - U+FB2F : 0x22222262 */
-      2,  /* U+FB30 - U+FB37 : 0x22222222 */
-      2,  /* U+FB38 - U+FB3F : 0x22222222 */
-      2,  /* U+FB40 - U+FB47 : 0x22222222 */
-      2,  /* U+FB48 - U+FB4F : 0x22222222 */
-      3,  /* U+FB50 - U+FB57 : 0x33333333 */
-      3,  /* U+FB58 - U+FB5F : 0x33333333 */
-      3,  /* U+FB60 - U+FB67 : 0x33333333 */
-      3,  /* U+FB68 - U+FB6F : 0x33333333 */
-      3,  /* U+FB70 - U+FB77 : 0x33333333 */
-      3,  /* U+FB78 - U+FB7F : 0x33333333 */
-      3,  /* U+FB80 - U+FB87 : 0x33333333 */
-      3,  /* U+FB88 - U+FB8F : 0x33333333 */
-      3,  /* U+FB90 - U+FB97 : 0x33333333 */
-      3,  /* U+FB98 - U+FB9F : 0x33333333 */
-      3,  /* U+FBA0 - U+FBA7 : 0x33333333 */
-      3,  /* U+FBA8 - U+FBAF : 0x33333333 */
-      3,  /* U+FBB0 - U+FBB7 : 0x33333333 */
-      3,  /* U+FBB8 - U+FBBF : 0x33333333 */
-      3,  /* U+FBC0 - U+FBC7 : 0x33333333 */
-      3,  /* U+FBC8 - U+FBCF : 0x33333333 */
-      3,  /* U+FBD0 - U+FBD7 : 0x33333333 */
-      3,  /* U+FBD8 - U+FBDF : 0x33333333 */
-      3,  /* U+FBE0 - U+FBE7 : 0x33333333 */
-      3,  /* U+FBE8 - U+FBEF : 0x33333333 */
-      3,  /* U+FBF0 - U+FBF7 : 0x33333333 */
-      3,  /* U+FBF8 - U+FBFF : 0x33333333 */
-      3,  /* U+FC00 - U+FC07 : 0x33333333 */
-      3,  /* U+FC08 - U+FC0F : 0x33333333 */
-      3,  /* U+FC10 - U+FC17 : 0x33333333 */
-      3,  /* U+FC18 - U+FC1F : 0x33333333 */
-      3,  /* U+FC20 - U+FC27 : 0x33333333 */
-      3,  /* U+FC28 - U+FC2F : 0x33333333 */
-      3,  /* U+FC30 - U+FC37 : 0x33333333 */
-      3,  /* U+FC38 - U+FC3F : 0x33333333 */
-      3,  /* U+FC40 - U+FC47 : 0x33333333 */
-      3,  /* U+FC48 - U+FC4F : 0x33333333 */
-      3,  /* U+FC50 - U+FC57 : 0x33333333 */
-      3,  /* U+FC58 - U+FC5F : 0x33333333 */
-      3,  /* U+FC60 - U+FC67 : 0x33333333 */
-      3,  /* U+FC68 - U+FC6F : 0x33333333 */
-      3,  /* U+FC70 - U+FC77 : 0x33333333 */
-      3,  /* U+FC78 - U+FC7F : 0x33333333 */
-      3,  /* U+FC80 - U+FC87 : 0x33333333 */
-      3,  /* U+FC88 - U+FC8F : 0x33333333 */
-      3,  /* U+FC90 - U+FC97 : 0x33333333 */
-      3,  /* U+FC98 - U+FC9F : 0x33333333 */
-      3,  /* U+FCA0 - U+FCA7 : 0x33333333 */
-      3,  /* U+FCA8 - U+FCAF : 0x33333333 */
-      3,  /* U+FCB0 - U+FCB7 : 0x33333333 */
-      3,  /* U+FCB8 - U+FCBF : 0x33333333 */
-      3,  /* U+FCC0 - U+FCC7 : 0x33333333 */
-      3,  /* U+FCC8 - U+FCCF : 0x33333333 */
-      3,  /* U+FCD0 - U+FCD7 : 0x33333333 */
-      3,  /* U+FCD8 - U+FCDF : 0x33333333 */
-      3,  /* U+FCE0 - U+FCE7 : 0x33333333 */
-      3,  /* U+FCE8 - U+FCEF : 0x33333333 */
-      3,  /* U+FCF0 - U+FCF7 : 0x33333333 */
-      3,  /* U+FCF8 - U+FCFF : 0x33333333 */
-      3,  /* U+FD00 - U+FD07 : 0x33333333 */
-      3,  /* U+FD08 - U+FD0F : 0x33333333 */
-      3,  /* U+FD10 - U+FD17 : 0x33333333 */
-      3,  /* U+FD18 - U+FD1F : 0x33333333 */
-      3,  /* U+FD20 - U+FD27 : 0x33333333 */
-      3,  /* U+FD28 - U+FD2F : 0x33333333 */
-      3,  /* U+FD30 - U+FD37 : 0x33333333 */
-    154,  /* U+FD38 - U+FD3F : 0x99333333 */
-      3,  /* U+FD40 - U+FD47 : 0x33333333 */
-      3,  /* U+FD48 - U+FD4F : 0x33333333 */
-      3,  /* U+FD50 - U+FD57 : 0x33333333 */
-      3,  /* U+FD58 - U+FD5F : 0x33333333 */
-      3,  /* U+FD60 - U+FD67 : 0x33333333 */
-      3,  /* U+FD68 - U+FD6F : 0x33333333 */
-      3,  /* U+FD70 - U+FD77 : 0x33333333 */
-      3,  /* U+FD78 - U+FD7F : 0x33333333 */
-      3,  /* U+FD80 - U+FD87 : 0x33333333 */
-      3,  /* U+FD88 - U+FD8F : 0x33333333 */
-      3,  /* U+FD90 - U+FD97 : 0x33333333 */
-      3,  /* U+FD98 - U+FD9F : 0x33333333 */
-      3,  /* U+FDA0 - U+FDA7 : 0x33333333 */
-      3,  /* U+FDA8 - U+FDAF : 0x33333333 */
-      3,  /* U+FDB0 - U+FDB7 : 0x33333333 */
-      3,  /* U+FDB8 - U+FDBF : 0x33333333 */
-      3,  /* U+FDC0 - U+FDC7 : 0x33333333 */
-      3,  /* U+FDC8 - U+FDCF : 0x33333333 */
-      3,  /* U+FDD0 - U+FDD7 : 0x33333333 */
-      3,  /* U+FDD8 - U+FDDF : 0x33333333 */
-      3,  /* U+FDE0 - U+FDE7 : 0x33333333 */
-      3,  /* U+FDE8 - U+FDEF : 0x33333333 */
-      3,  /* U+FDF0 - U+FDF7 : 0x33333333 */
-    155,  /* U+FDF8 - U+FDFF : 0x33933333 */
-     10,  /* U+FE00 - U+FE07 : 0xAAAAAAAA */
-     10,  /* U+FE08 - U+FE0F : 0xAAAAAAAA */
-      9,  /* U+FE10 - U+FE17 : 0x99999999 */
-     97,  /* U+FE18 - U+FE1F : 0x11111199 */
-    101,  /* U+FE20 - U+FE27 : 0x1111AAAA */
-      1,  /* U+FE28 - U+FE2F : 0x11111111 */
-      9,  /* U+FE30 - U+FE37 : 0x99999999 */
-      9,  /* U+FE38 - U+FE3F : 0x99999999 */
-      9,  /* U+FE40 - U+FE47 : 0x99999999 */
-      9,  /* U+FE48 - U+FE4F : 0x99999999 */
-    156,  /* U+FE50 - U+FE57 : 0x99891898 */
-    157,  /* U+FE58 - U+FE5F : 0x79999999 */
-    158,  /* U+FE60 - U+FE67 : 0x19996699 */
-    159,  /* U+FE68 - U+FE6F : 0x11119779 */
-      3,  /* U+FE70 - U+FE77 : 0x33333333 */
-      3,  /* U+FE78 - U+FE7F : 0x33333333 */
-      3,  /* U+FE80 - U+FE87 : 0x33333333 */
-      3,  /* U+FE88 - U+FE8F : 0x33333333 */
-      3,  /* U+FE90 - U+FE97 : 0x33333333 */
-      3,  /* U+FE98 - U+FE9F : 0x33333333 */
-      3,  /* U+FEA0 - U+FEA7 : 0x33333333 */
-      3,  /* U+FEA8 - U+FEAF : 0x33333333 */
-      3,  /* U+FEB0 - U+FEB7 : 0x33333333 */
-      3,  /* U+FEB8 - U+FEBF : 0x33333333 */
-      3,  /* U+FEC0 - U+FEC7 : 0x33333333 */
-      3,  /* U+FEC8 - U+FECF : 0x33333333 */
-      3,  /* U+FED0 - U+FED7 : 0x33333333 */
-      3,  /* U+FED8 - U+FEDF : 0x33333333 */
-      3,  /* U+FEE0 - U+FEE7 : 0x33333333 */
-      3,  /* U+FEE8 - U+FEEF : 0x33333333 */
-      3,  /* U+FEF0 - U+FEF7 : 0x33333333 */
-     54,  /* U+FEF8 - U+FEFF : 0xB3333333 */
-    160,  /* U+FF00 - U+FF07 : 0x99777991 */
-     19,  /* U+FF08 - U+FF0F : 0x88686999 */
-      5,  /* U+FF10 - U+FF17 : 0x55555555 */
-     20,  /* U+FF18 - U+FF1F : 0x99999855 */
-     21,  /* U+FF20 - U+FF27 : 0x11111119 */
-      1,  /* U+FF28 - U+FF2F : 0x11111111 */
-      1,  /* U+FF30 - U+FF37 : 0x11111111 */
-     22,  /* U+FF38 - U+FF3F : 0x99999111 */
-     21,  /* U+FF40 - U+FF47 : 0x11111119 */
-      1,  /* U+FF48 - U+FF4F : 0x11111111 */
-      1,  /* U+FF50 - U+FF57 : 0x11111111 */
-     22,  /* U+FF58 - U+FF5F : 0x99999111 */
-    132,  /* U+FF60 - U+FF67 : 0x11999999 */
-      1,  /* U+FF68 - U+FF6F : 0x11111111 */
-      1,  /* U+FF70 - U+FF77 : 0x11111111 */
-      1,  /* U+FF78 - U+FF7F : 0x11111111 */
-      1,  /* U+FF80 - U+FF87 : 0x11111111 */
-      1,  /* U+FF88 - U+FF8F : 0x11111111 */
-      1,  /* U+FF90 - U+FF97 : 0x11111111 */
-      1,  /* U+FF98 - U+FF9F : 0x11111111 */
-      1,  /* U+FFA0 - U+FFA7 : 0x11111111 */
-      1,  /* U+FFA8 - U+FFAF : 0x11111111 */
-      1,  /* U+FFB0 - U+FFB7 : 0x11111111 */
-      1,  /* U+FFB8 - U+FFBF : 0x11111111 */
-      1,  /* U+FFC0 - U+FFC7 : 0x11111111 */
-      1,  /* U+FFC8 - U+FFCF : 0x11111111 */
-      1,  /* U+FFD0 - U+FFD7 : 0x11111111 */
-      1,  /* U+FFD8 - U+FFDF : 0x11111111 */
-    161,  /* U+FFE0 - U+FFE7 : 0x17799977 */
-    134,  /* U+FFE8 - U+FFEF : 0x19999999 */
-      1,  /* U+FFF0 - U+FFF7 : 0x11111111 */
-    162,  /* U+FFF8 - U+FFFF : 0x11999991 */
-      1,  /* U+10000 - U+10007 : 0x11111111 */
-      1,  /* U+10008 - U+1000F : 0x11111111 */
-      1,  /* U+10010 - U+10017 : 0x11111111 */
-      1,  /* U+10018 - U+1001F : 0x11111111 */
-      1,  /* U+10020 - U+10027 : 0x11111111 */
-      1,  /* U+10028 - U+1002F : 0x11111111 */
-      1,  /* U+10030 - U+10037 : 0x11111111 */
-      1,  /* U+10038 - U+1003F : 0x11111111 */
-      1,  /* U+10040 - U+10047 : 0x11111111 */
-      1,  /* U+10048 - U+1004F : 0x11111111 */
-      1,  /* U+10050 - U+10057 : 0x11111111 */
-      1,  /* U+10058 - U+1005F : 0x11111111 */
-      1,  /* U+10060 - U+10067 : 0x11111111 */
-      1,  /* U+10068 - U+1006F : 0x11111111 */
-      1,  /* U+10070 - U+10077 : 0x11111111 */
-      1,  /* U+10078 - U+1007F : 0x11111111 */
-      1,  /* U+10080 - U+10087 : 0x11111111 */
-      1,  /* U+10088 - U+1008F : 0x11111111 */
-      1,  /* U+10090 - U+10097 : 0x11111111 */
-      1,  /* U+10098 - U+1009F : 0x11111111 */
-      1,  /* U+100A0 - U+100A7 : 0x11111111 */
-      1,  /* U+100A8 - U+100AF : 0x11111111 */
-      1,  /* U+100B0 - U+100B7 : 0x11111111 */
-      1,  /* U+100B8 - U+100BF : 0x11111111 */
-      1,  /* U+100C0 - U+100C7 : 0x11111111 */
-      1,  /* U+100C8 - U+100CF : 0x11111111 */
-      1,  /* U+100D0 - U+100D7 : 0x11111111 */
-      1,  /* U+100D8 - U+100DF : 0x11111111 */
-      1,  /* U+100E0 - U+100E7 : 0x11111111 */
-      1,  /* U+100E8 - U+100EF : 0x11111111 */
-      1,  /* U+100F0 - U+100F7 : 0x11111111 */
-      1,  /* U+100F8 - U+100FF : 0x11111111 */
-    163,  /* U+10100 - U+10107 : 0x11111191 */
-      1,  /* U+10108 - U+1010F : 0x11111111 */
-      1,  /* U+10110 - U+10117 : 0x11111111 */
-      1,  /* U+10118 - U+1011F : 0x11111111 */
-      1,  /* U+10120 - U+10127 : 0x11111111 */
-      1,  /* U+10128 - U+1012F : 0x11111111 */
-      1,  /* U+10130 - U+10137 : 0x11111111 */
-      1,  /* U+10138 - U+1013F : 0x11111111 */
-      9,  /* U+10140 - U+10147 : 0x99999999 */
-      9,  /* U+10148 - U+1014F : 0x99999999 */
-      9,  /* U+10150 - U+10157 : 0x99999999 */
-      9,  /* U+10158 - U+1015F : 0x99999999 */
-      9,  /* U+10160 - U+10167 : 0x99999999 */
-      9,  /* U+10168 - U+1016F : 0x99999999 */
-      9,  /* U+10170 - U+10177 : 0x99999999 */
-      9,  /* U+10178 - U+1017F : 0x99999999 */
-      9,  /* U+10180 - U+10187 : 0x99999999 */
-    135,  /* U+10188 - U+1018F : 0x11111999 */
-};
-
-static PRUint8 gBidiCatIdx8[64] = {
-      1,  /* U+10300 - U+10307 : 0x11111111 */
-      1,  /* U+10308 - U+1030F : 0x11111111 */
-      1,  /* U+10310 - U+10317 : 0x11111111 */
-      1,  /* U+10318 - U+1031F : 0x11111111 */
-      1,  /* U+10320 - U+10327 : 0x11111111 */
-      1,  /* U+10328 - U+1032F : 0x11111111 */
-      1,  /* U+10330 - U+10337 : 0x11111111 */
-      1,  /* U+10338 - U+1033F : 0x11111111 */
-      1,  /* U+10340 - U+10347 : 0x11111111 */
-      1,  /* U+10348 - U+1034F : 0x11111111 */
-      1,  /* U+10350 - U+10357 : 0x11111111 */
-      1,  /* U+10358 - U+1035F : 0x11111111 */
-      1,  /* U+10360 - U+10367 : 0x11111111 */
-      1,  /* U+10368 - U+1036F : 0x11111111 */
-      1,  /* U+10370 - U+10377 : 0x11111111 */
-      1,  /* U+10378 - U+1037F : 0x11111111 */
-      1,  /* U+10380 - U+10387 : 0x11111111 */
-      1,  /* U+10388 - U+1038F : 0x11111111 */
-      1,  /* U+10390 - U+10397 : 0x11111111 */
-      1,  /* U+10398 - U+1039F : 0x11111111 */
-      1,  /* U+103A0 - U+103A7 : 0x11111111 */
-      1,  /* U+103A8 - U+103AF : 0x11111111 */
-      1,  /* U+103B0 - U+103B7 : 0x11111111 */
-      1,  /* U+103B8 - U+103BF : 0x11111111 */
-      1,  /* U+103C0 - U+103C7 : 0x11111111 */
-      1,  /* U+103C8 - U+103CF : 0x11111111 */
-      1,  /* U+103D0 - U+103D7 : 0x11111111 */
-      1,  /* U+103D8 - U+103DF : 0x11111111 */
-      1,  /* U+103E0 - U+103E7 : 0x11111111 */
-      1,  /* U+103E8 - U+103EF : 0x11111111 */
-      1,  /* U+103F0 - U+103F7 : 0x11111111 */
-      1,  /* U+103F8 - U+103FF : 0x11111111 */
-      1,  /* U+10400 - U+10407 : 0x11111111 */
-      1,  /* U+10408 - U+1040F : 0x11111111 */
-      1,  /* U+10410 - U+10417 : 0x11111111 */
-      1,  /* U+10418 - U+1041F : 0x11111111 */
-      1,  /* U+10420 - U+10427 : 0x11111111 */
-      1,  /* U+10428 - U+1042F : 0x11111111 */
-      1,  /* U+10430 - U+10437 : 0x11111111 */
-      1,  /* U+10438 - U+1043F : 0x11111111 */
-      1,  /* U+10440 - U+10447 : 0x11111111 */
-      1,  /* U+10448 - U+1044F : 0x11111111 */
-      1,  /* U+10450 - U+10457 : 0x11111111 */
-      1,  /* U+10458 - U+1045F : 0x11111111 */
-      1,  /* U+10460 - U+10467 : 0x11111111 */
-      1,  /* U+10468 - U+1046F : 0x11111111 */
-      1,  /* U+10470 - U+10477 : 0x11111111 */
-      1,  /* U+10478 - U+1047F : 0x11111111 */
-      1,  /* U+10480 - U+10487 : 0x11111111 */
-      1,  /* U+10488 - U+1048F : 0x11111111 */
-      1,  /* U+10490 - U+10497 : 0x11111111 */
-      1,  /* U+10498 - U+1049F : 0x11111111 */
-      1,  /* U+104A0 - U+104A7 : 0x11111111 */
-      1,  /* U+104A8 - U+104AF : 0x11111111 */
-      1,  /* U+104B0 - U+104B7 : 0x11111111 */
-      1,  /* U+104B8 - U+104BF : 0x11111111 */
-      1,  /* U+104C0 - U+104C7 : 0x11111111 */
-      1,  /* U+104C8 - U+104CF : 0x11111111 */
-      1,  /* U+104D0 - U+104D7 : 0x11111111 */
-      1,  /* U+104D8 - U+104DF : 0x11111111 */
-      1,  /* U+104E0 - U+104E7 : 0x11111111 */
-      1,  /* U+104E8 - U+104EF : 0x11111111 */
-      1,  /* U+104F0 - U+104F7 : 0x11111111 */
-      1,  /* U+104F8 - U+104FF : 0x11111111 */
-};
-
-static PRUint8 gBidiCatIdx9[8] = {
-      2,  /* U+10800 - U+10807 : 0x22222222 */
-      2,  /* U+10808 - U+1080F : 0x22222222 */
-      2,  /* U+10810 - U+10817 : 0x22222222 */
-      2,  /* U+10818 - U+1081F : 0x22222222 */
-      2,  /* U+10820 - U+10827 : 0x22222222 */
-      2,  /* U+10828 - U+1082F : 0x22222222 */
-      2,  /* U+10830 - U+10837 : 0x22222222 */
-      2,  /* U+10838 - U+1083F : 0x22222222 */
-};
-
-static PRUint8 gBidiCatIdx10[4] = {
-      2,  /* U+10900 - U+10907 : 0x22222222 */
-      2,  /* U+10908 - U+1090F : 0x22222222 */
-      2,  /* U+10910 - U+10917 : 0x22222222 */
-    164,  /* U+10918 - U+1091F : 0x92222222 */
-};
-
-static PRUint8 gBidiCatIdx11[12] = {
-    165,  /* U+10A00 - U+10A07 : 0x2AA2AAA2 */
-    166,  /* U+10A08 - U+10A0F : 0xAAAA2222 */
-      2,  /* U+10A10 - U+10A17 : 0x22222222 */
-      2,  /* U+10A18 - U+10A1F : 0x22222222 */
-      2,  /* U+10A20 - U+10A27 : 0x22222222 */
-      2,  /* U+10A28 - U+10A2F : 0x22222222 */
-      2,  /* U+10A30 - U+10A37 : 0x22222222 */
-    167,  /* U+10A38 - U+10A3F : 0xA2222AAA */
-      2,  /* U+10A40 - U+10A47 : 0x22222222 */
-      2,  /* U+10A48 - U+10A4F : 0x22222222 */
-      2,  /* U+10A50 - U+10A57 : 0x22222222 */
-      2,  /* U+10A58 - U+10A5F : 0x22222222 */
-};
-
-static PRUint8 gBidiCatIdx12[144] = {
-      1,  /* U+12000 - U+12007 : 0x11111111 */
-      1,  /* U+12008 - U+1200F : 0x11111111 */
-      1,  /* U+12010 - U+12017 : 0x11111111 */
-      1,  /* U+12018 - U+1201F : 0x11111111 */
-      1,  /* U+12020 - U+12027 : 0x11111111 */
-      1,  /* U+12028 - U+1202F : 0x11111111 */
-      1,  /* U+12030 - U+12037 : 0x11111111 */
-      1,  /* U+12038 - U+1203F : 0x11111111 */
-      1,  /* U+12040 - U+12047 : 0x11111111 */
-      1,  /* U+12048 - U+1204F : 0x11111111 */
-      1,  /* U+12050 - U+12057 : 0x11111111 */
-      1,  /* U+12058 - U+1205F : 0x11111111 */
-      1,  /* U+12060 - U+12067 : 0x11111111 */
-      1,  /* U+12068 - U+1206F : 0x11111111 */
-      1,  /* U+12070 - U+12077 : 0x11111111 */
-      1,  /* U+12078 - U+1207F : 0x11111111 */
-      1,  /* U+12080 - U+12087 : 0x11111111 */
-      1,  /* U+12088 - U+1208F : 0x11111111 */
-      1,  /* U+12090 - U+12097 : 0x11111111 */
-      1,  /* U+12098 - U+1209F : 0x11111111 */
-      1,  /* U+120A0 - U+120A7 : 0x11111111 */
-      1,  /* U+120A8 - U+120AF : 0x11111111 */
-      1,  /* U+120B0 - U+120B7 : 0x11111111 */
-      1,  /* U+120B8 - U+120BF : 0x11111111 */
-      1,  /* U+120C0 - U+120C7 : 0x11111111 */
-      1,  /* U+120C8 - U+120CF : 0x11111111 */
-      1,  /* U+120D0 - U+120D7 : 0x11111111 */
-      1,  /* U+120D8 - U+120DF : 0x11111111 */
-      1,  /* U+120E0 - U+120E7 : 0x11111111 */
-      1,  /* U+120E8 - U+120EF : 0x11111111 */
-      1,  /* U+120F0 - U+120F7 : 0x11111111 */
-      1,  /* U+120F8 - U+120FF : 0x11111111 */
-      1,  /* U+12100 - U+12107 : 0x11111111 */
-      1,  /* U+12108 - U+1210F : 0x11111111 */
-      1,  /* U+12110 - U+12117 : 0x11111111 */
-      1,  /* U+12118 - U+1211F : 0x11111111 */
-      1,  /* U+12120 - U+12127 : 0x11111111 */
-      1,  /* U+12128 - U+1212F : 0x11111111 */
-      1,  /* U+12130 - U+12137 : 0x11111111 */
-      1,  /* U+12138 - U+1213F : 0x11111111 */
-      1,  /* U+12140 - U+12147 : 0x11111111 */
-      1,  /* U+12148 - U+1214F : 0x11111111 */
-      1,  /* U+12150 - U+12157 : 0x11111111 */
-      1,  /* U+12158 - U+1215F : 0x11111111 */
-      1,  /* U+12160 - U+12167 : 0x11111111 */
-      1,  /* U+12168 - U+1216F : 0x11111111 */
-      1,  /* U+12170 - U+12177 : 0x11111111 */
-      1,  /* U+12178 - U+1217F : 0x11111111 */
-      1,  /* U+12180 - U+12187 : 0x11111111 */
-      1,  /* U+12188 - U+1218F : 0x11111111 */
-      1,  /* U+12190 - U+12197 : 0x11111111 */
-      1,  /* U+12198 - U+1219F : 0x11111111 */
-      1,  /* U+121A0 - U+121A7 : 0x11111111 */
-      1,  /* U+121A8 - U+121AF : 0x11111111 */
-      1,  /* U+121B0 - U+121B7 : 0x11111111 */
-      1,  /* U+121B8 - U+121BF : 0x11111111 */
-      1,  /* U+121C0 - U+121C7 : 0x11111111 */
-      1,  /* U+121C8 - U+121CF : 0x11111111 */
-      1,  /* U+121D0 - U+121D7 : 0x11111111 */
-      1,  /* U+121D8 - U+121DF : 0x11111111 */
-      1,  /* U+121E0 - U+121E7 : 0x11111111 */
-      1,  /* U+121E8 - U+121EF : 0x11111111 */
-      1,  /* U+121F0 - U+121F7 : 0x11111111 */
-      1,  /* U+121F8 - U+121FF : 0x11111111 */
-      1,  /* U+12200 - U+12207 : 0x11111111 */
-      1,  /* U+12208 - U+1220F : 0x11111111 */
-      1,  /* U+12210 - U+12217 : 0x11111111 */
-      1,  /* U+12218 - U+1221F : 0x11111111 */
-      1,  /* U+12220 - U+12227 : 0x11111111 */
-      1,  /* U+12228 - U+1222F : 0x11111111 */
-      1,  /* U+12230 - U+12237 : 0x11111111 */
-      1,  /* U+12238 - U+1223F : 0x11111111 */
-      1,  /* U+12240 - U+12247 : 0x11111111 */
-      1,  /* U+12248 - U+1224F : 0x11111111 */
-      1,  /* U+12250 - U+12257 : 0x11111111 */
-      1,  /* U+12258 - U+1225F : 0x11111111 */
-      1,  /* U+12260 - U+12267 : 0x11111111 */
-      1,  /* U+12268 - U+1226F : 0x11111111 */
-      1,  /* U+12270 - U+12277 : 0x11111111 */
-      1,  /* U+12278 - U+1227F : 0x11111111 */
-      1,  /* U+12280 - U+12287 : 0x11111111 */
-      1,  /* U+12288 - U+1228F : 0x11111111 */
-      1,  /* U+12290 - U+12297 : 0x11111111 */
-      1,  /* U+12298 - U+1229F : 0x11111111 */
-      1,  /* U+122A0 - U+122A7 : 0x11111111 */
-      1,  /* U+122A8 - U+122AF : 0x11111111 */
-      1,  /* U+122B0 - U+122B7 : 0x11111111 */
-      1,  /* U+122B8 - U+122BF : 0x11111111 */
-      1,  /* U+122C0 - U+122C7 : 0x11111111 */
-      1,  /* U+122C8 - U+122CF : 0x11111111 */
-      1,  /* U+122D0 - U+122D7 : 0x11111111 */
-      1,  /* U+122D8 - U+122DF : 0x11111111 */
-      1,  /* U+122E0 - U+122E7 : 0x11111111 */
-      1,  /* U+122E8 - U+122EF : 0x11111111 */
-      1,  /* U+122F0 - U+122F7 : 0x11111111 */
-      1,  /* U+122F8 - U+122FF : 0x11111111 */
-      1,  /* U+12300 - U+12307 : 0x11111111 */
-      1,  /* U+12308 - U+1230F : 0x11111111 */
-      1,  /* U+12310 - U+12317 : 0x11111111 */
-      1,  /* U+12318 - U+1231F : 0x11111111 */
-      1,  /* U+12320 - U+12327 : 0x11111111 */
-      1,  /* U+12328 - U+1232F : 0x11111111 */
-      1,  /* U+12330 - U+12337 : 0x11111111 */
-      1,  /* U+12338 - U+1233F : 0x11111111 */
-      1,  /* U+12340 - U+12347 : 0x11111111 */
-      1,  /* U+12348 - U+1234F : 0x11111111 */
-      1,  /* U+12350 - U+12357 : 0x11111111 */
-      1,  /* U+12358 - U+1235F : 0x11111111 */
-      1,  /* U+12360 - U+12367 : 0x11111111 */
-      1,  /* U+12368 - U+1236F : 0x11111111 */
-      1,  /* U+12370 - U+12377 : 0x11111111 */
-      1,  /* U+12378 - U+1237F : 0x11111111 */
-      1,  /* U+12380 - U+12387 : 0x11111111 */
-      1,  /* U+12388 - U+1238F : 0x11111111 */
-      1,  /* U+12390 - U+12397 : 0x11111111 */
-      1,  /* U+12398 - U+1239F : 0x11111111 */
-      1,  /* U+123A0 - U+123A7 : 0x11111111 */
-      1,  /* U+123A8 - U+123AF : 0x11111111 */
-      1,  /* U+123B0 - U+123B7 : 0x11111111 */
-      1,  /* U+123B8 - U+123BF : 0x11111111 */
-      1,  /* U+123C0 - U+123C7 : 0x11111111 */
-      1,  /* U+123C8 - U+123CF : 0x11111111 */
-      1,  /* U+123D0 - U+123D7 : 0x11111111 */
-      1,  /* U+123D8 - U+123DF : 0x11111111 */
-      1,  /* U+123E0 - U+123E7 : 0x11111111 */
-      1,  /* U+123E8 - U+123EF : 0x11111111 */
-      1,  /* U+123F0 - U+123F7 : 0x11111111 */
-      1,  /* U+123F8 - U+123FF : 0x11111111 */
-      1,  /* U+12400 - U+12407 : 0x11111111 */
-      1,  /* U+12408 - U+1240F : 0x11111111 */
-      1,  /* U+12410 - U+12417 : 0x11111111 */
-      1,  /* U+12418 - U+1241F : 0x11111111 */
-      1,  /* U+12420 - U+12427 : 0x11111111 */
-      1,  /* U+12428 - U+1242F : 0x11111111 */
-      1,  /* U+12430 - U+12437 : 0x11111111 */
-      1,  /* U+12438 - U+1243F : 0x11111111 */
-      1,  /* U+12440 - U+12447 : 0x11111111 */
-      1,  /* U+12448 - U+1244F : 0x11111111 */
-      1,  /* U+12450 - U+12457 : 0x11111111 */
-      1,  /* U+12458 - U+1245F : 0x11111111 */
-      1,  /* U+12460 - U+12467 : 0x11111111 */
-      1,  /* U+12468 - U+1246F : 0x11111111 */
-      1,  /* U+12470 - U+12477 : 0x11111111 */
-      1,  /* U+12478 - U+1247F : 0x11111111 */
-};
-
-static PRUint8 gBidiCatIdx13[256] = {
-      1,  /* U+1D000 - U+1D007 : 0x11111111 */
-      1,  /* U+1D008 - U+1D00F : 0x11111111 */
-      1,  /* U+1D010 - U+1D017 : 0x11111111 */
-      1,  /* U+1D018 - U+1D01F : 0x11111111 */
-      1,  /* U+1D020 - U+1D027 : 0x11111111 */
-      1,  /* U+1D028 - U+1D02F : 0x11111111 */
-      1,  /* U+1D030 - U+1D037 : 0x11111111 */
-      1,  /* U+1D038 - U+1D03F : 0x11111111 */
-      1,  /* U+1D040 - U+1D047 : 0x11111111 */
-      1,  /* U+1D048 - U+1D04F : 0x11111111 */
-      1,  /* U+1D050 - U+1D057 : 0x11111111 */
-      1,  /* U+1D058 - U+1D05F : 0x11111111 */
-      1,  /* U+1D060 - U+1D067 : 0x11111111 */
-      1,  /* U+1D068 - U+1D06F : 0x11111111 */
-      1,  /* U+1D070 - U+1D077 : 0x11111111 */
-      1,  /* U+1D078 - U+1D07F : 0x11111111 */
-      1,  /* U+1D080 - U+1D087 : 0x11111111 */
-      1,  /* U+1D088 - U+1D08F : 0x11111111 */
-      1,  /* U+1D090 - U+1D097 : 0x11111111 */
-      1,  /* U+1D098 - U+1D09F : 0x11111111 */
-      1,  /* U+1D0A0 - U+1D0A7 : 0x11111111 */
-      1,  /* U+1D0A8 - U+1D0AF : 0x11111111 */
-      1,  /* U+1D0B0 - U+1D0B7 : 0x11111111 */
-      1,  /* U+1D0B8 - U+1D0BF : 0x11111111 */
-      1,  /* U+1D0C0 - U+1D0C7 : 0x11111111 */
-      1,  /* U+1D0C8 - U+1D0CF : 0x11111111 */
-      1,  /* U+1D0D0 - U+1D0D7 : 0x11111111 */
-      1,  /* U+1D0D8 - U+1D0DF : 0x11111111 */
-      1,  /* U+1D0E0 - U+1D0E7 : 0x11111111 */
-      1,  /* U+1D0E8 - U+1D0EF : 0x11111111 */
-      1,  /* U+1D0F0 - U+1D0F7 : 0x11111111 */
-      1,  /* U+1D0F8 - U+1D0FF : 0x11111111 */
-      1,  /* U+1D100 - U+1D107 : 0x11111111 */
-      1,  /* U+1D108 - U+1D10F : 0x11111111 */
-      1,  /* U+1D110 - U+1D117 : 0x11111111 */
-      1,  /* U+1D118 - U+1D11F : 0x11111111 */
-      1,  /* U+1D120 - U+1D127 : 0x11111111 */
-      1,  /* U+1D128 - U+1D12F : 0x11111111 */
-      1,  /* U+1D130 - U+1D137 : 0x11111111 */
-      1,  /* U+1D138 - U+1D13F : 0x11111111 */
-      1,  /* U+1D140 - U+1D147 : 0x11111111 */
-      1,  /* U+1D148 - U+1D14F : 0x11111111 */
-      1,  /* U+1D150 - U+1D157 : 0x11111111 */
-      1,  /* U+1D158 - U+1D15F : 0x11111111 */
-     87,  /* U+1D160 - U+1D167 : 0xA1111111 */
-     38,  /* U+1D168 - U+1D16F : 0x111111AA */
-    168,  /* U+1D170 - U+1D177 : 0xBBBBB111 */
-    169,  /* U+1D178 - U+1D17F : 0xAAAAABBB */
-    170,  /* U+1D180 - U+1D187 : 0xAAA11AAA */
-    101,  /* U+1D188 - U+1D18F : 0x1111AAAA */
-      1,  /* U+1D190 - U+1D197 : 0x11111111 */
-      1,  /* U+1D198 - U+1D19F : 0x11111111 */
-      1,  /* U+1D1A0 - U+1D1A7 : 0x11111111 */
-    171,  /* U+1D1A8 - U+1D1AF : 0x11AAAA11 */
-      1,  /* U+1D1B0 - U+1D1B7 : 0x11111111 */
-      1,  /* U+1D1B8 - U+1D1BF : 0x11111111 */
-      1,  /* U+1D1C0 - U+1D1C7 : 0x11111111 */
-      1,  /* U+1D1C8 - U+1D1CF : 0x11111111 */
-      1,  /* U+1D1D0 - U+1D1D7 : 0x11111111 */
-      1,  /* U+1D1D8 - U+1D1DF : 0x11111111 */
-      1,  /* U+1D1E0 - U+1D1E7 : 0x11111111 */
-      1,  /* U+1D1E8 - U+1D1EF : 0x11111111 */
-      1,  /* U+1D1F0 - U+1D1F7 : 0x11111111 */
-      1,  /* U+1D1F8 - U+1D1FF : 0x11111111 */
-      9,  /* U+1D200 - U+1D207 : 0x99999999 */
-      9,  /* U+1D208 - U+1D20F : 0x99999999 */
-      9,  /* U+1D210 - U+1D217 : 0x99999999 */
-      9,  /* U+1D218 - U+1D21F : 0x99999999 */
-      9,  /* U+1D220 - U+1D227 : 0x99999999 */
-      9,  /* U+1D228 - U+1D22F : 0x99999999 */
-      9,  /* U+1D230 - U+1D237 : 0x99999999 */
-      9,  /* U+1D238 - U+1D23F : 0x99999999 */
-    172,  /* U+1D240 - U+1D247 : 0x119AAA99 */
-      1,  /* U+1D248 - U+1D24F : 0x11111111 */
-      1,  /* U+1D250 - U+1D257 : 0x11111111 */
-      1,  /* U+1D258 - U+1D25F : 0x11111111 */
-      1,  /* U+1D260 - U+1D267 : 0x11111111 */
-      1,  /* U+1D268 - U+1D26F : 0x11111111 */
-      1,  /* U+1D270 - U+1D277 : 0x11111111 */
-      1,  /* U+1D278 - U+1D27F : 0x11111111 */
-      1,  /* U+1D280 - U+1D287 : 0x11111111 */
-      1,  /* U+1D288 - U+1D28F : 0x11111111 */
-      1,  /* U+1D290 - U+1D297 : 0x11111111 */
-      1,  /* U+1D298 - U+1D29F : 0x11111111 */
-      1,  /* U+1D2A0 - U+1D2A7 : 0x11111111 */
-      1,  /* U+1D2A8 - U+1D2AF : 0x11111111 */
-      1,  /* U+1D2B0 - U+1D2B7 : 0x11111111 */
-      1,  /* U+1D2B8 - U+1D2BF : 0x11111111 */
-      1,  /* U+1D2C0 - U+1D2C7 : 0x11111111 */
-      1,  /* U+1D2C8 - U+1D2CF : 0x11111111 */
-      1,  /* U+1D2D0 - U+1D2D7 : 0x11111111 */
-      1,  /* U+1D2D8 - U+1D2DF : 0x11111111 */
-      1,  /* U+1D2E0 - U+1D2E7 : 0x11111111 */
-      1,  /* U+1D2E8 - U+1D2EF : 0x11111111 */
-      1,  /* U+1D2F0 - U+1D2F7 : 0x11111111 */
-      1,  /* U+1D2F8 - U+1D2FF : 0x11111111 */
-      9,  /* U+1D300 - U+1D307 : 0x99999999 */
-      9,  /* U+1D308 - U+1D30F : 0x99999999 */
-      9,  /* U+1D310 - U+1D317 : 0x99999999 */
-      9,  /* U+1D318 - U+1D31F : 0x99999999 */
-      9,  /* U+1D320 - U+1D327 : 0x99999999 */
-      9,  /* U+1D328 - U+1D32F : 0x99999999 */
-      9,  /* U+1D330 - U+1D337 : 0x99999999 */
-      9,  /* U+1D338 - U+1D33F : 0x99999999 */
-      9,  /* U+1D340 - U+1D347 : 0x99999999 */
-      9,  /* U+1D348 - U+1D34F : 0x99999999 */
-    134,  /* U+1D350 - U+1D357 : 0x19999999 */
-      1,  /* U+1D358 - U+1D35F : 0x11111111 */
-      1,  /* U+1D360 - U+1D367 : 0x11111111 */
-      1,  /* U+1D368 - U+1D36F : 0x11111111 */
-      1,  /* U+1D370 - U+1D377 : 0x11111111 */
-      1,  /* U+1D378 - U+1D37F : 0x11111111 */
-      1,  /* U+1D380 - U+1D387 : 0x11111111 */
-      1,  /* U+1D388 - U+1D38F : 0x11111111 */
-      1,  /* U+1D390 - U+1D397 : 0x11111111 */
-      1,  /* U+1D398 - U+1D39F : 0x11111111 */
-      1,  /* U+1D3A0 - U+1D3A7 : 0x11111111 */
-      1,  /* U+1D3A8 - U+1D3AF : 0x11111111 */
-      1,  /* U+1D3B0 - U+1D3B7 : 0x11111111 */
-      1,  /* U+1D3B8 - U+1D3BF : 0x11111111 */
-      1,  /* U+1D3C0 - U+1D3C7 : 0x11111111 */
-      1,  /* U+1D3C8 - U+1D3CF : 0x11111111 */
-      1,  /* U+1D3D0 - U+1D3D7 : 0x11111111 */
-      1,  /* U+1D3D8 - U+1D3DF : 0x11111111 */
-      1,  /* U+1D3E0 - U+1D3E7 : 0x11111111 */
-      1,  /* U+1D3E8 - U+1D3EF : 0x11111111 */
-      1,  /* U+1D3F0 - U+1D3F7 : 0x11111111 */
-      1,  /* U+1D3F8 - U+1D3FF : 0x11111111 */
-      1,  /* U+1D400 - U+1D407 : 0x11111111 */
-      1,  /* U+1D408 - U+1D40F : 0x11111111 */
-      1,  /* U+1D410 - U+1D417 : 0x11111111 */
-      1,  /* U+1D418 - U+1D41F : 0x11111111 */
-      1,  /* U+1D420 - U+1D427 : 0x11111111 */
-      1,  /* U+1D428 - U+1D42F : 0x11111111 */
-      1,  /* U+1D430 - U+1D437 : 0x11111111 */
-      1,  /* U+1D438 - U+1D43F : 0x11111111 */
-      1,  /* U+1D440 - U+1D447 : 0x11111111 */
-      1,  /* U+1D448 - U+1D44F : 0x11111111 */
-      1,  /* U+1D450 - U+1D457 : 0x11111111 */
-      1,  /* U+1D458 - U+1D45F : 0x11111111 */
-      1,  /* U+1D460 - U+1D467 : 0x11111111 */
-      1,  /* U+1D468 - U+1D46F : 0x11111111 */
-      1,  /* U+1D470 - U+1D477 : 0x11111111 */
-      1,  /* U+1D478 - U+1D47F : 0x11111111 */
-      1,  /* U+1D480 - U+1D487 : 0x11111111 */
-      1,  /* U+1D488 - U+1D48F : 0x11111111 */
-      1,  /* U+1D490 - U+1D497 : 0x11111111 */
-      1,  /* U+1D498 - U+1D49F : 0x11111111 */
-      1,  /* U+1D4A0 - U+1D4A7 : 0x11111111 */
-      1,  /* U+1D4A8 - U+1D4AF : 0x11111111 */
-      1,  /* U+1D4B0 - U+1D4B7 : 0x11111111 */
-      1,  /* U+1D4B8 - U+1D4BF : 0x11111111 */
-      1,  /* U+1D4C0 - U+1D4C7 : 0x11111111 */
-      1,  /* U+1D4C8 - U+1D4CF : 0x11111111 */
-      1,  /* U+1D4D0 - U+1D4D7 : 0x11111111 */
-      1,  /* U+1D4D8 - U+1D4DF : 0x11111111 */
-      1,  /* U+1D4E0 - U+1D4E7 : 0x11111111 */
-      1,  /* U+1D4E8 - U+1D4EF : 0x11111111 */
-      1,  /* U+1D4F0 - U+1D4F7 : 0x11111111 */
-      1,  /* U+1D4F8 - U+1D4FF : 0x11111111 */
-      1,  /* U+1D500 - U+1D507 : 0x11111111 */
-      1,  /* U+1D508 - U+1D50F : 0x11111111 */
-      1,  /* U+1D510 - U+1D517 : 0x11111111 */
-      1,  /* U+1D518 - U+1D51F : 0x11111111 */
-      1,  /* U+1D520 - U+1D527 : 0x11111111 */
-      1,  /* U+1D528 - U+1D52F : 0x11111111 */
-      1,  /* U+1D530 - U+1D537 : 0x11111111 */
-      1,  /* U+1D538 - U+1D53F : 0x11111111 */
-      1,  /* U+1D540 - U+1D547 : 0x11111111 */
-      1,  /* U+1D548 - U+1D54F : 0x11111111 */
-      1,  /* U+1D550 - U+1D557 : 0x11111111 */
-      1,  /* U+1D558 - U+1D55F : 0x11111111 */
-      1,  /* U+1D560 - U+1D567 : 0x11111111 */
-      1,  /* U+1D568 - U+1D56F : 0x11111111 */
-      1,  /* U+1D570 - U+1D577 : 0x11111111 */
-      1,  /* U+1D578 - U+1D57F : 0x11111111 */
-      1,  /* U+1D580 - U+1D587 : 0x11111111 */
-      1,  /* U+1D588 - U+1D58F : 0x11111111 */
-      1,  /* U+1D590 - U+1D597 : 0x11111111 */
-      1,  /* U+1D598 - U+1D59F : 0x11111111 */
-      1,  /* U+1D5A0 - U+1D5A7 : 0x11111111 */
-      1,  /* U+1D5A8 - U+1D5AF : 0x11111111 */
-      1,  /* U+1D5B0 - U+1D5B7 : 0x11111111 */
-      1,  /* U+1D5B8 - U+1D5BF : 0x11111111 */
-      1,  /* U+1D5C0 - U+1D5C7 : 0x11111111 */
-      1,  /* U+1D5C8 - U+1D5CF : 0x11111111 */
-      1,  /* U+1D5D0 - U+1D5D7 : 0x11111111 */
-      1,  /* U+1D5D8 - U+1D5DF : 0x11111111 */
-      1,  /* U+1D5E0 - U+1D5E7 : 0x11111111 */
-      1,  /* U+1D5E8 - U+1D5EF : 0x11111111 */
-      1,  /* U+1D5F0 - U+1D5F7 : 0x11111111 */
-      1,  /* U+1D5F8 - U+1D5FF : 0x11111111 */
-      1,  /* U+1D600 - U+1D607 : 0x11111111 */
-      1,  /* U+1D608 - U+1D60F : 0x11111111 */
-      1,  /* U+1D610 - U+1D617 : 0x11111111 */
-      1,  /* U+1D618 - U+1D61F : 0x11111111 */
-      1,  /* U+1D620 - U+1D627 : 0x11111111 */
-      1,  /* U+1D628 - U+1D62F : 0x11111111 */
-      1,  /* U+1D630 - U+1D637 : 0x11111111 */
-      1,  /* U+1D638 - U+1D63F : 0x11111111 */
-      1,  /* U+1D640 - U+1D647 : 0x11111111 */
-      1,  /* U+1D648 - U+1D64F : 0x11111111 */
-      1,  /* U+1D650 - U+1D657 : 0x11111111 */
-      1,  /* U+1D658 - U+1D65F : 0x11111111 */
-      1,  /* U+1D660 - U+1D667 : 0x11111111 */
-      1,  /* U+1D668 - U+1D66F : 0x11111111 */
-      1,  /* U+1D670 - U+1D677 : 0x11111111 */
-      1,  /* U+1D678 - U+1D67F : 0x11111111 */
-      1,  /* U+1D680 - U+1D687 : 0x11111111 */
-      1,  /* U+1D688 - U+1D68F : 0x11111111 */
-      1,  /* U+1D690 - U+1D697 : 0x11111111 */
-      1,  /* U+1D698 - U+1D69F : 0x11111111 */
-      1,  /* U+1D6A0 - U+1D6A7 : 0x11111111 */
-      1,  /* U+1D6A8 - U+1D6AF : 0x11111111 */
-      1,  /* U+1D6B0 - U+1D6B7 : 0x11111111 */
-      1,  /* U+1D6B8 - U+1D6BF : 0x11111111 */
-      1,  /* U+1D6C0 - U+1D6C7 : 0x11111111 */
-      1,  /* U+1D6C8 - U+1D6CF : 0x11111111 */
-      1,  /* U+1D6D0 - U+1D6D7 : 0x11111111 */
-      1,  /* U+1D6D8 - U+1D6DF : 0x11111111 */
-      1,  /* U+1D6E0 - U+1D6E7 : 0x11111111 */
-      1,  /* U+1D6E8 - U+1D6EF : 0x11111111 */
-      1,  /* U+1D6F0 - U+1D6F7 : 0x11111111 */
-      1,  /* U+1D6F8 - U+1D6FF : 0x11111111 */
-      1,  /* U+1D700 - U+1D707 : 0x11111111 */
-      1,  /* U+1D708 - U+1D70F : 0x11111111 */
-      1,  /* U+1D710 - U+1D717 : 0x11111111 */
-      1,  /* U+1D718 - U+1D71F : 0x11111111 */
-      1,  /* U+1D720 - U+1D727 : 0x11111111 */
-      1,  /* U+1D728 - U+1D72F : 0x11111111 */
-      1,  /* U+1D730 - U+1D737 : 0x11111111 */
-      1,  /* U+1D738 - U+1D73F : 0x11111111 */
-      1,  /* U+1D740 - U+1D747 : 0x11111111 */
-      1,  /* U+1D748 - U+1D74F : 0x11111111 */
-      1,  /* U+1D750 - U+1D757 : 0x11111111 */
-      1,  /* U+1D758 - U+1D75F : 0x11111111 */
-      1,  /* U+1D760 - U+1D767 : 0x11111111 */
-      1,  /* U+1D768 - U+1D76F : 0x11111111 */
-      1,  /* U+1D770 - U+1D777 : 0x11111111 */
-      1,  /* U+1D778 - U+1D77F : 0x11111111 */
-      1,  /* U+1D780 - U+1D787 : 0x11111111 */
-      1,  /* U+1D788 - U+1D78F : 0x11111111 */
-      1,  /* U+1D790 - U+1D797 : 0x11111111 */
-      1,  /* U+1D798 - U+1D79F : 0x11111111 */
-      1,  /* U+1D7A0 - U+1D7A7 : 0x11111111 */
-      1,  /* U+1D7A8 - U+1D7AF : 0x11111111 */
-      1,  /* U+1D7B0 - U+1D7B7 : 0x11111111 */
-      1,  /* U+1D7B8 - U+1D7BF : 0x11111111 */
-      1,  /* U+1D7C0 - U+1D7C7 : 0x11111111 */
-    173,  /* U+1D7C8 - U+1D7CF : 0x55111111 */
-      5,  /* U+1D7D0 - U+1D7D7 : 0x55555555 */
-      5,  /* U+1D7D8 - U+1D7DF : 0x55555555 */
-      5,  /* U+1D7E0 - U+1D7E7 : 0x55555555 */
-      5,  /* U+1D7E8 - U+1D7EF : 0x55555555 */
-      5,  /* U+1D7F0 - U+1D7F7 : 0x55555555 */
-      5,  /* U+1D7F8 - U+1D7FF : 0x55555555 */
-};
-
-static PRUint8 gBidiCatIdx14[68] = {
-      1,  /* U+2F800 - U+2F807 : 0x11111111 */
-      1,  /* U+2F808 - U+2F80F : 0x11111111 */
-      1,  /* U+2F810 - U+2F817 : 0x11111111 */
-      1,  /* U+2F818 - U+2F81F : 0x11111111 */
-      1,  /* U+2F820 - U+2F827 : 0x11111111 */
-      1,  /* U+2F828 - U+2F82F : 0x11111111 */
-      1,  /* U+2F830 - U+2F837 : 0x11111111 */
-      1,  /* U+2F838 - U+2F83F : 0x11111111 */
-      1,  /* U+2F840 - U+2F847 : 0x11111111 */
-      1,  /* U+2F848 - U+2F84F : 0x11111111 */
-      1,  /* U+2F850 - U+2F857 : 0x11111111 */
-      1,  /* U+2F858 - U+2F85F : 0x11111111 */
-      1,  /* U+2F860 - U+2F867 : 0x11111111 */
-      1,  /* U+2F868 - U+2F86F : 0x11111111 */
-      1,  /* U+2F870 - U+2F877 : 0x11111111 */
-      1,  /* U+2F878 - U+2F87F : 0x11111111 */
-      1,  /* U+2F880 - U+2F887 : 0x11111111 */
-      1,  /* U+2F888 - U+2F88F : 0x11111111 */
-      1,  /* U+2F890 - U+2F897 : 0x11111111 */
-      1,  /* U+2F898 - U+2F89F : 0x11111111 */
-      1,  /* U+2F8A0 - U+2F8A7 : 0x11111111 */
-      1,  /* U+2F8A8 - U+2F8AF : 0x11111111 */
-      1,  /* U+2F8B0 - U+2F8B7 : 0x11111111 */
-      1,  /* U+2F8B8 - U+2F8BF : 0x11111111 */
-      1,  /* U+2F8C0 - U+2F8C7 : 0x11111111 */
-      1,  /* U+2F8C8 - U+2F8CF : 0x11111111 */
-      1,  /* U+2F8D0 - U+2F8D7 : 0x11111111 */
-      1,  /* U+2F8D8 - U+2F8DF : 0x11111111 */
-      1,  /* U+2F8E0 - U+2F8E7 : 0x11111111 */
-      1,  /* U+2F8E8 - U+2F8EF : 0x11111111 */
-      1,  /* U+2F8F0 - U+2F8F7 : 0x11111111 */
-      1,  /* U+2F8F8 - U+2F8FF : 0x11111111 */
-      1,  /* U+2F900 - U+2F907 : 0x11111111 */
-      1,  /* U+2F908 - U+2F90F : 0x11111111 */
-      1,  /* U+2F910 - U+2F917 : 0x11111111 */
-      1,  /* U+2F918 - U+2F91F : 0x11111111 */
-      1,  /* U+2F920 - U+2F927 : 0x11111111 */
-      1,  /* U+2F928 - U+2F92F : 0x11111111 */
-      1,  /* U+2F930 - U+2F937 : 0x11111111 */
-      1,  /* U+2F938 - U+2F93F : 0x11111111 */
-      1,  /* U+2F940 - U+2F947 : 0x11111111 */
-      1,  /* U+2F948 - U+2F94F : 0x11111111 */
-      1,  /* U+2F950 - U+2F957 : 0x11111111 */
-      1,  /* U+2F958 - U+2F95F : 0x11111111 */
-      1,  /* U+2F960 - U+2F967 : 0x11111111 */
-      1,  /* U+2F968 - U+2F96F : 0x11111111 */
-      1,  /* U+2F970 - U+2F977 : 0x11111111 */
-      1,  /* U+2F978 - U+2F97F : 0x11111111 */
-      1,  /* U+2F980 - U+2F987 : 0x11111111 */
-      1,  /* U+2F988 - U+2F98F : 0x11111111 */
-      1,  /* U+2F990 - U+2F997 : 0x11111111 */
-      1,  /* U+2F998 - U+2F99F : 0x11111111 */
-      1,  /* U+2F9A0 - U+2F9A7 : 0x11111111 */
-      1,  /* U+2F9A8 - U+2F9AF : 0x11111111 */
-      1,  /* U+2F9B0 - U+2F9B7 : 0x11111111 */
-      1,  /* U+2F9B8 - U+2F9BF : 0x11111111 */
-      1,  /* U+2F9C0 - U+2F9C7 : 0x11111111 */
-      1,  /* U+2F9C8 - U+2F9CF : 0x11111111 */
-      1,  /* U+2F9D0 - U+2F9D7 : 0x11111111 */
-      1,  /* U+2F9D8 - U+2F9DF : 0x11111111 */
-      1,  /* U+2F9E0 - U+2F9E7 : 0x11111111 */
-      1,  /* U+2F9E8 - U+2F9EF : 0x11111111 */
-      1,  /* U+2F9F0 - U+2F9F7 : 0x11111111 */
-      1,  /* U+2F9F8 - U+2F9FF : 0x11111111 */
-      1,  /* U+2FA00 - U+2FA07 : 0x11111111 */
-      1,  /* U+2FA08 - U+2FA0F : 0x11111111 */
-      1,  /* U+2FA10 - U+2FA17 : 0x11111111 */
-      1,  /* U+2FA18 - U+2FA1F : 0x11111111 */
-};
-
-static PRUint8 gBidiCatIdx15[64] = {
-    174,  /* U+E0000 - U+E0007 : 0x111111B1 */
-      1,  /* U+E0008 - U+E000F : 0x11111111 */
-      1,  /* U+E0010 - U+E0017 : 0x11111111 */
-      1,  /* U+E0018 - U+E001F : 0x11111111 */
-     11,  /* U+E0020 - U+E0027 : 0xBBBBBBBB */
-     11,  /* U+E0028 - U+E002F : 0xBBBBBBBB */
-     11,  /* U+E0030 - U+E0037 : 0xBBBBBBBB */
-     11,  /* U+E0038 - U+E003F : 0xBBBBBBBB */
-     11,  /* U+E0040 - U+E0047 : 0xBBBBBBBB */
-     11,  /* U+E0048 - U+E004F : 0xBBBBBBBB */
-     11,  /* U+E0050 - U+E0057 : 0xBBBBBBBB */
-     11,  /* U+E0058 - U+E005F : 0xBBBBBBBB */
-     11,  /* U+E0060 - U+E0067 : 0xBBBBBBBB */
-     11,  /* U+E0068 - U+E006F : 0xBBBBBBBB */
-     11,  /* U+E0070 - U+E0077 : 0xBBBBBBBB */
-     11,  /* U+E0078 - U+E007F : 0xBBBBBBBB */
-      1,  /* U+E0080 - U+E0087 : 0x11111111 */
-      1,  /* U+E0088 - U+E008F : 0x11111111 */
-      1,  /* U+E0090 - U+E0097 : 0x11111111 */
-      1,  /* U+E0098 - U+E009F : 0x11111111 */
-      1,  /* U+E00A0 - U+E00A7 : 0x11111111 */
-      1,  /* U+E00A8 - U+E00AF : 0x11111111 */
-      1,  /* U+E00B0 - U+E00B7 : 0x11111111 */
-      1,  /* U+E00B8 - U+E00BF : 0x11111111 */
-      1,  /* U+E00C0 - U+E00C7 : 0x11111111 */
-      1,  /* U+E00C8 - U+E00CF : 0x11111111 */
-      1,  /* U+E00D0 - U+E00D7 : 0x11111111 */
-      1,  /* U+E00D8 - U+E00DF : 0x11111111 */
-      1,  /* U+E00E0 - U+E00E7 : 0x11111111 */
-      1,  /* U+E00E8 - U+E00EF : 0x11111111 */
-      1,  /* U+E00F0 - U+E00F7 : 0x11111111 */
-      1,  /* U+E00F8 - U+E00FF : 0x11111111 */
-     10,  /* U+E0100 - U+E0107 : 0xAAAAAAAA */
-     10,  /* U+E0108 - U+E010F : 0xAAAAAAAA */
-     10,  /* U+E0110 - U+E0117 : 0xAAAAAAAA */
-     10,  /* U+E0118 - U+E011F : 0xAAAAAAAA */
-     10,  /* U+E0120 - U+E0127 : 0xAAAAAAAA */
-     10,  /* U+E0128 - U+E012F : 0xAAAAAAAA */
-     10,  /* U+E0130 - U+E0137 : 0xAAAAAAAA */
-     10,  /* U+E0138 - U+E013F : 0xAAAAAAAA */
-     10,  /* U+E0140 - U+E0147 : 0xAAAAAAAA */
-     10,  /* U+E0148 - U+E014F : 0xAAAAAAAA */
-     10,  /* U+E0150 - U+E0157 : 0xAAAAAAAA */
-     10,  /* U+E0158 - U+E015F : 0xAAAAAAAA */
-     10,  /* U+E0160 - U+E0167 : 0xAAAAAAAA */
-     10,  /* U+E0168 - U+E016F : 0xAAAAAAAA */
-     10,  /* U+E0170 - U+E0177 : 0xAAAAAAAA */
-     10,  /* U+E0178 - U+E017F : 0xAAAAAAAA */
-     10,  /* U+E0180 - U+E0187 : 0xAAAAAAAA */
-     10,  /* U+E0188 - U+E018F : 0xAAAAAAAA */
-     10,  /* U+E0190 - U+E0197 : 0xAAAAAAAA */
-     10,  /* U+E0198 - U+E019F : 0xAAAAAAAA */
-     10,  /* U+E01A0 - U+E01A7 : 0xAAAAAAAA */
-     10,  /* U+E01A8 - U+E01AF : 0xAAAAAAAA */
-     10,  /* U+E01B0 - U+E01B7 : 0xAAAAAAAA */
-     10,  /* U+E01B8 - U+E01BF : 0xAAAAAAAA */
-     10,  /* U+E01C0 - U+E01C7 : 0xAAAAAAAA */
-     10,  /* U+E01C8 - U+E01CF : 0xAAAAAAAA */
-     10,  /* U+E01D0 - U+E01D7 : 0xAAAAAAAA */
-     10,  /* U+E01D8 - U+E01DF : 0xAAAAAAAA */
-     10,  /* U+E01E0 - U+E01E7 : 0xAAAAAAAA */
-     10,  /* U+E01E8 - U+E01EF : 0xAAAAAAAA */
-      1,  /* U+E01F0 - U+E01F7 : 0x11111111 */
-      1,  /* U+E01F8 - U+E01FF : 0x11111111 */
-};
-
-static PRUint32 gBidiCatPat[175] = {
-    0x00000000,  /* 0 */
-    0x11111111,  /* 1 */
-    0x22222222,  /* 2 */
-    0x33333333,  /* 3 */
-    0x44444444,  /* 4 */
-    0x55555555,  /* 5 */
-    0x66666666,  /* 6 */
-    0x77777777,  /* 7 */
-    0x88888888,  /* 8 */
-    0x99999999,  /* 9 */
-    0xAAAAAAAA,  /* 10 */
-    0xBBBBBBBB,  /* 11 */
-    0xCCCCCCCC,  /* 12 */
-    0xDDDDDDDD,  /* 13 */
-    0xEEEEEEEE,  /* 14 */
-    0xFFFFFFFF,  /* 15 */
-    0xBBCEDCDB,  /* 16 */
-    0xDCCCBBBB,  /* 17 */
-    0x9977799E,  /* 18 */
-    0x88686999,  /* 19 */
-    0x99999855,  /* 20 */
-    0x11111119,  /* 21 */
-    0x99999111,  /* 22 */
-    0xB9999111,  /* 23 */
-    0xBBCBBBBB,  /* 24 */
-    0x99777798,  /* 25 */
-    0x99B99199,  /* 26 */
-    0x99195577,  /* 27 */
-    0x99999159,  /* 28 */
-    0x91111111,  /* 29 */
-    0x11111991,  /* 30 */
-    0x99999911,  /* 31 */
-    0x99911111,  /* 32 */
-    0x91999999,  /* 33 */
-    0x11991111,  /* 34 */
-    0x19111111,  /* 35 */
-    0x91991111,  /* 36 */
-    0x1AAAA111,  /* 37 */
-    0x111111AA,  /* 38 */
-    0x11111911,  /* 39 */
-    0xAAAAAAA2,  /* 40 */
-    0xA2AAAAAA,  /* 41 */
-    0xA2AA2AA2,  /* 42 */
-    0x99383333,  /* 43 */
-    0x33AAAAAA,  /* 44 */
-    0xAAAAA333,  /* 45 */
-    0x3AAAAAAA,  /* 46 */
-    0x33344744,  /* 47 */
-    0x3333333A,  /* 48 */
-    0xAA333333,  /* 49 */
-    0xAA3AAAAA,  /* 50 */
-    0xA33AAAAA,  /* 51 */
-    0x33AAAA9A,  /* 52 */
-    0x33333355,  /* 53 */
-    0xB3333333,  /* 54 */
-    0x333333A3,  /* 55 */
-    0x33333AAA,  /* 56 */
-    0xAAAAA222,  /* 57 */
-    0x9922AAAA,  /* 58 */
-    0x22222299,  /* 59 */
-    0x11111AA1,  /* 60 */
-    0x111A1111,  /* 61 */
-    0xAAAAAAA1,  /* 62 */
-    0x11A1111A,  /* 63 */
-    0x111AAAA1,  /* 64 */
-    0x1111AA11,  /* 65 */
-    0x111111A1,  /* 66 */
-    0x11A11111,  /* 67 */
-    0x11117711,  /* 68 */
-    0xA1111AA1,  /* 69 */
-    0x11AAA11A,  /* 70 */
-    0xA1AAAAA1,  /* 71 */
-    0x11111171,  /* 72 */
-    0xA11A1111,  /* 73 */
-    0x1111AAA1,  /* 74 */
-    0x1A111111,  /* 75 */
-    0x11111A11,  /* 76 */
-    0x1111111A,  /* 77 */
-    0x11111979,  /* 78 */
-    0xAA111111,  /* 79 */
-    0xAA11111A,  /* 80 */
-    0x11AAAA1A,  /* 81 */
-    0x1AA11111,  /* 82 */
-    0x11AA1111,  /* 83 */
-    0x1A1AAA11,  /* 84 */
-    0xAAAA11A1,  /* 85 */
-    0x71111AAA,  /* 86 */
-    0xA1111111,  /* 87 */
-    0x1AAAAAAA,  /* 88 */
-    0x111AA1AA,  /* 89 */
-    0x11AAAAAA,  /* 90 */
-    0xA1A11111,  /* 91 */
-    0x119999A1,  /* 92 */
-    0xAA1AAAAA,  /* 93 */
-    0x111AAAAA,  /* 94 */
-    0xAAA11111,  /* 95 */
-    0xAA111A1A,  /* 96 */
-    0x11111199,  /* 97 */
-    0x1111111E,  /* 98 */
-    0x11199111,  /* 99 */
-    0x111AAA11,  /* 100 */
-    0x1111AAAA,  /* 101 */
-    0x11A17111,  /* 102 */
-    0x1EAAA999,  /* 103 */
-    0xA1111AAA,  /* 104 */
-    0x11991119,  /* 105 */
-    0x99111111,  /* 106 */
-    0xAA1A1111,  /* 107 */
-    0x111A1AAA,  /* 108 */
-    0xAAAAA111,  /* 109 */
-    0x11111AAA,  /* 110 */
-    0x91911111,  /* 111 */
-    0x19911111,  /* 112 */
-    0x21BBBEEE,  /* 113 */
-    0x8FFFFFCE,  /* 114 */
-    0x99977777,  /* 115 */
-    0x99989999,  /* 116 */
-    0xE9999999,  /* 117 */
-    0x1111BBBB,  /* 118 */
-    0xBBBBBB11,  /* 119 */
-    0x55551115,  /* 120 */
-    0x19996655,  /* 121 */
-    0x11777777,  /* 122 */
-    0x19999199,  /* 123 */
-    0x99191111,  /* 124 */
-    0x99111119,  /* 125 */
-    0x91919999,  /* 126 */
-    0x17111191,  /* 127 */
-    0x11119911,  /* 128 */
-    0x11199999,  /* 129 */
-    0x11999911,  /* 130 */
-    0x99997699,  /* 131 */
-    0x11999999,  /* 132 */
-    0x99199999,  /* 133 */
-    0x19999999,  /* 134 */
-    0x11111999,  /* 135 */
-    0x11115555,  /* 136 */
-    0x99919999,  /* 137 */
-    0x99199991,  /* 138 */
-    0x99991199,  /* 139 */
-    0x99999991,  /* 140 */
-    0x19111999,  /* 141 */
-    0x11119999,  /* 142 */
-    0x99999199,  /* 143 */
-    0x1119999E,  /* 144 */
-    0xAAAAAA11,  /* 145 */
-    0x11199AA1,  /* 146 */
-    0x11119111,  /* 147 */
-    0x19991111,  /* 148 */
-    0x99991111,  /* 149 */
-    0x1A111A11,  /* 150 */
-    0x1111A111,  /* 151 */
-    0x2A211111,  /* 152 */
-    0x22222262,  /* 153 */
-    0x99333333,  /* 154 */
-    0x33933333,  /* 155 */
-    0x99891898,  /* 156 */
-    0x79999999,  /* 157 */
-    0x19996699,  /* 158 */
-    0x11119779,  /* 159 */
-    0x99777991,  /* 160 */
-    0x17799977,  /* 161 */
-    0x11999991,  /* 162 */
-    0x11111191,  /* 163 */
-    0x92222222,  /* 164 */
-    0x2AA2AAA2,  /* 165 */
-    0xAAAA2222,  /* 166 */
-    0xA2222AAA,  /* 167 */
-    0xBBBBB111,  /* 168 */
-    0xAAAAABBB,  /* 169 */
-    0xAAA11AAA,  /* 170 */
-    0x11AAAA11,  /* 171 */
-    0x119AAA99,  /* 172 */
-    0x55111111,  /* 173 */
-    0x111111B1,  /* 174 */
-};
-
-static eBidiCategory GetBidiCat(PRUint32 u)
-{
-    PRUint32 pat;
-    PRUint16 patidx;
-
-    /*  Handle blocks which use index table mapping */   
-
-    /* Handle U+0000 to U+07FF */
-    if (u<=((PRUint32)0x07FF)) {
-        patidx = gBidiCatIdx1 [( u  >> 3 )];
-    }
-
-    /* Handle U+0900 to U+1B7F */
-    else if ((((PRUint32)0x0900)<=u)&&(u<=((PRUint32)0x1B7F))) {
-        patidx = gBidiCatIdx2 [( (u -(PRUint32) 0x0900) >> 3 )];
-    }
-
-    /* Handle U+1D00 to U+2DDF */
-    else if ((((PRUint32)0x1D00)<=u)&&(u<=((PRUint32)0x2DDF))) {
-        patidx = gBidiCatIdx3 [( (u -(PRUint32) 0x1D00) >> 3 )];
-    }
-
-    /* Handle U+2E00 to U+33FF */
-    else if ((((PRUint32)0x2E00)<=u)&&(u<=((PRUint32)0x33FF))) {
-        patidx = gBidiCatIdx4 [( (u -(PRUint32) 0x2E00) >> 3 )];
-    }
-
-    /* Handle U+4DC0 to U+4DFF */
-    else if ((((PRUint32)0x4DC0)<=u)&&(u<=((PRUint32)0x4DFF))) {
-        patidx = gBidiCatIdx5 [( (u -(PRUint32) 0x4DC0) >> 3 )];
-    }
-
-    /* Handle U+A000 to U+A87F */
-    else if ((((PRUint32)0xA000)<=u)&&(u<=((PRUint32)0xA87F))) {
-        patidx = gBidiCatIdx6 [( (u -(PRUint32) 0xA000) >> 3 )];
-    }
-
-    /* Handle U+F900 to U+1018F */
-    else if ((((PRUint32)0xF900)<=u)&&(u<=((PRUint32)0x1018F))) {
-        patidx = gBidiCatIdx7 [( (u -(PRUint32) 0xF900) >> 3 )];
-    }
-
-    /* Handle U+10300 to U+104FF */
-    else if ((((PRUint32)0x10300)<=u)&&(u<=((PRUint32)0x104FF))) {
-        patidx = gBidiCatIdx8 [( (u -(PRUint32) 0x10300) >> 3 )];
-    }
-
-    /* Handle U+10800 to U+1083F */
-    else if ((((PRUint32)0x10800)<=u)&&(u<=((PRUint32)0x1083F))) {
-        patidx = gBidiCatIdx9 [( (u -(PRUint32) 0x10800) >> 3 )];
-    }
-
-    /* Handle U+10900 to U+1091F */
-    else if ((((PRUint32)0x10900)<=u)&&(u<=((PRUint32)0x1091F))) {
-        patidx = gBidiCatIdx10 [( (u -(PRUint32) 0x10900) >> 3 )];
-    }
-
-    /* Handle U+10A00 to U+10A5F */
-    else if ((((PRUint32)0x10A00)<=u)&&(u<=((PRUint32)0x10A5F))) {
-        patidx = gBidiCatIdx11 [( (u -(PRUint32) 0x10A00) >> 3 )];
-    }
-
-    /* Handle U+12000 to U+1247F */
-    else if ((((PRUint32)0x12000)<=u)&&(u<=((PRUint32)0x1247F))) {
-        patidx = gBidiCatIdx12 [( (u -(PRUint32) 0x12000) >> 3 )];
-    }
-
-    /* Handle U+1D000 to U+1D7FF */
-    else if ((((PRUint32)0x1D000)<=u)&&(u<=((PRUint32)0x1D7FF))) {
-        patidx = gBidiCatIdx13 [( (u -(PRUint32) 0x1D000) >> 3 )];
-    }
-
-    /* Handle U+2F800 to U+2FA1F */
-    else if ((((PRUint32)0x2F800)<=u)&&(u<=((PRUint32)0x2FA1F))) {
-        patidx = gBidiCatIdx14 [( (u -(PRUint32) 0x2F800) >> 3 )];
-    }
-
-    /* Handle U+E0000 to U+E01FF */
-    else if ((((PRUint32)0xE0000)<=u)&&(u<=((PRUint32)0xE01FF))) {
-        patidx = gBidiCatIdx15 [( (u -(PRUint32) 0xE0000) >> 3 )];
-    }
-
-    else {
-      /* defaults for unassigned characters
-       * see http://www.unicode.org/Public/UNIDATA/extracted/DerivedBidiClass.txt
-       * and http://www.unicode.org/Public/UNIDATA/Blocks.txt
-       */
-      if (((u >= 0x0590) && (u <= 0x05FF)) ||
-          ((u >= 0x07C0) && (u <= 0x08FF)) ||
-          ((u >= 0xFB1D) && (u <= 0xFB4F)) ||
-          ((u >= 0x10800) && (u <=0x10FFF)))
-         return eBidiCat_R;
-      else if (((u >= 0x0600) && (u <= 0x07BF)) ||
-               ((u >= 0xFB50) && (u <= 0xFDFF)) ||
-               ((u >= 0xFE70) && (u <= 0xFEFE)))
-         return eBidiCat_AL;
-      else
-        return eBidiCat_L;
-    }
-
-    if (patidx < 0x10)
-        return (eBidiCategory)patidx;
-    else {
-        pat = gBidiCatPat[patidx];
-        return (eBidiCategory)((pat  >> ((u % 8) * 4)) & 0x0F);
-    }
-}
-
-/* total data size = 3454 */
--- a/layout/base/nsBidi.cpp
+++ b/layout/base/nsBidi.cpp
@@ -36,46 +36,18 @@
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 #ifdef IBMBIDI
 
 #include "prmem.h"
 #include "nsBidi.h"
 #include "nsBidiUtils.h"
-#include "bidicattable.h"
-#include "symmtable.h"
 #include "nsCRT.h"
 
-static nsCharType ebc2ucd[15] = {
-  eCharType_OtherNeutral, /* Placeholder -- there will never be a 0 index value */
-  eCharType_LeftToRight,
-  eCharType_RightToLeft,
-  eCharType_RightToLeftArabic,
-  eCharType_ArabicNumber,
-  eCharType_EuropeanNumber,
-  eCharType_EuropeanNumberSeparator,
-  eCharType_EuropeanNumberTerminator,
-  eCharType_CommonNumberSeparator,
-  eCharType_OtherNeutral,
-  eCharType_DirNonSpacingMark,
-  eCharType_BoundaryNeutral,
-  eCharType_BlockSeparator,
-  eCharType_SegmentSeparator,
-  eCharType_WhiteSpaceNeutral
-};
-
-static nsCharType cc2ucd[5] = {
-  eCharType_LeftToRightEmbedding,
-  eCharType_RightToLeftEmbedding,
-  eCharType_PopDirectionalFormat,
-  eCharType_LeftToRightOverride,
-  eCharType_RightToLeftOverride
-};
-
 // These are #defined in <sys/regset.h> under Solaris 10 x86
 #undef CS
 #undef ES
 
 /*  Comparing the description of the Bidi algorithm with this implementation
     is easier with the same names for the Bidi types in the code as there.
 */
 enum { 
@@ -2302,57 +2274,9 @@ nsresult nsBidi::WriteReverse(const PRUn
     return NS_ERROR_INVALID_ARG;
   }
 
   if(aSrcLength>0) {
     *aDestSize = doWriteReverse(aSrc, aSrcLength, aDest, aOptions);
   }
   return NS_OK;
 }
-
-eBidiCategory nsBidi::GetBidiCategory(PRUint32 aChar)
-{
-  eBidiCategory oResult = GetBidiCat(aChar);
-  if (eBidiCat_CC == oResult)
-    oResult = (eBidiCategory)(aChar & 0xFF); /* Control codes have special treatment to keep the tables smaller */
-  return oResult;
-}
-
-PRBool nsBidi::IsBidiCategory(PRUint32 aChar, eBidiCategory aBidiCategory)
-{
-  return (GetBidiCategory(aChar) == aBidiCategory);
-}
-
-#define LRM_CHAR 0x200e
-PRBool nsBidi::IsBidiControl(PRUint32 aChar)
-{
-  // This method is used when stripping Bidi control characters for
-  // display, so it will return TRUE for LRM and RLM as
-  // well as the characters with category eBidiCat_CC
-  return (eBidiCat_CC == GetBidiCat(aChar) || ((aChar)&0xfffffe)==LRM_CHAR);
-}
-
-nsCharType nsBidi::GetCharType(PRUint32 aChar)
-{
-  nsCharType oResult;
-  eBidiCategory bCat = GetBidiCat(aChar);
-  if (eBidiCat_CC != bCat) {
-    NS_ASSERTION(bCat < (sizeof(ebc2ucd)/sizeof(nsCharType)), "size mismatch");
-    if(bCat < (sizeof(ebc2ucd)/sizeof(nsCharType)))
-      oResult = ebc2ucd[bCat];
-    else 
-      oResult = ebc2ucd[0]; // something is very wrong, but we need to return a value
-  } else {
-    NS_ASSERTION((aChar-0x202a) < (sizeof(cc2ucd)/sizeof(nsCharType)), "size mismatch");
-    if((aChar-0x202a) < (sizeof(cc2ucd)/sizeof(nsCharType)))
-      oResult = cc2ucd[aChar - 0x202a];
-    else 
-      oResult = ebc2ucd[0]; // something is very wrong, but we need to return a value
-  }
-  return oResult;
-}
-
-PRUint32 nsBidi::SymmSwap(PRUint32 aChar)
-{
-  return Mirrored(aChar);
-}
-
 #endif // IBMBIDI
--- a/layout/base/nsBidi.h
+++ b/layout/base/nsBidi.h
@@ -37,16 +37,17 @@
  *
  * ***** END LICENSE BLOCK ***** */
 
 #ifndef nsBidi_h__
 #define nsBidi_h__
 
 #include "nsCOMPtr.h"
 #include "nsString.h"
+#include "nsBidiUtils.h"
 
 // Bidi reordering engine from ICU
 /*
  * javadoc-style comments are intended to be transformed into HTML
  * using DOC++ - see
  * http://www.zib.de/Visual/software/doc++/index.html .
  *
  * The HTML documentation is created with
@@ -149,89 +150,16 @@ enum nsBidiDirection {
   NSBIDI_RTL,
   /** Mixed-directional text. */
   NSBIDI_MIXED
 };
 
 typedef enum nsBidiDirection nsBidiDirection;
 
 /* miscellaneous definitions ------------------------------------------------ */
-
-   /**
-    *  Read ftp://ftp.unicode.org/Public/UNIDATA/ReadMe-Latest.txt
-    *  section BIDIRECTIONAL PROPERTIES
-    *  for the detailed definition of the following categories
-    *
-    *  The values here must match the equivalents in %map in
-    * mozilla/intl/unicharutil/tools/genbidicattable.pl
-    */
-
-typedef enum {
-  eBidiCat_Undefined,
-  eBidiCat_L,          /* Left-to-Right               */
-  eBidiCat_R,          /* Right-to-Left               */
-  eBidiCat_AL,         /* Right-to-Left Arabic        */
-  eBidiCat_AN,         /* Arabic Number               */
-  eBidiCat_EN,         /* European Number             */
-  eBidiCat_ES,         /* European Number Separator   */
-  eBidiCat_ET,         /* European Number Terminator  */
-  eBidiCat_CS,         /* Common Number Separator     */
-  eBidiCat_ON,         /* Other Neutrals              */
-  eBidiCat_NSM,        /* Non-Spacing Mark            */
-  eBidiCat_BN,         /* Boundary Neutral            */
-  eBidiCat_B,          /* Paragraph Separator         */
-  eBidiCat_S,          /* Segment Separator           */
-  eBidiCat_WS,         /* Whitespace                  */
-  eBidiCat_CC = 0xf,   /* Control Code                */
-                       /* (internal use only - will never be outputed) */
-  eBidiCat_LRE = 0x2a, /* Left-to-Right Embedding     */
-  eBidiCat_RLE = 0x2b, /* Right-to-Left Embedding     */
-  eBidiCat_PDF = 0x2c, /* Pop Directional Formatting  */
-  eBidiCat_LRO = 0x2d, /* Left-to-Right Override      */
-  eBidiCat_RLO = 0x2e  /* Right-to-Left Override      */
-} eBidiCategory;
-
-enum nsCharType   { 
-  eCharType_LeftToRight              = 0, 
-  eCharType_RightToLeft              = 1, 
-  eCharType_EuropeanNumber           = 2,
-  eCharType_EuropeanNumberSeparator  = 3,
-  eCharType_EuropeanNumberTerminator = 4,
-  eCharType_ArabicNumber             = 5,
-  eCharType_CommonNumberSeparator    = 6,
-  eCharType_BlockSeparator           = 7,
-  eCharType_SegmentSeparator         = 8,
-  eCharType_WhiteSpaceNeutral        = 9, 
-  eCharType_OtherNeutral             = 10, 
-  eCharType_LeftToRightEmbedding     = 11,
-  eCharType_LeftToRightOverride      = 12,
-  eCharType_RightToLeftArabic        = 13,
-  eCharType_RightToLeftEmbedding     = 14,
-  eCharType_RightToLeftOverride      = 15,
-  eCharType_PopDirectionalFormat     = 16,
-  eCharType_DirNonSpacingMark        = 17,
-  eCharType_BoundaryNeutral          = 18,
-  eCharType_CharTypeCount
-};
-
-/**
- * This specifies the language directional property of a character set.
- */
-typedef enum nsCharType nsCharType;
-
-/**
- * definitions of bidirection character types by category
- */
-
-#define CHARTYPE_IS_RTL(val) ( ( (val) == eCharType_RightToLeft) || ( (val) == eCharType_RightToLeftArabic) )
-
-#define CHARTYPE_IS_WEAK(val) ( ( (val) == eCharType_EuropeanNumberSeparator)    \
-                           || ( (val) == eCharType_EuropeanNumberTerminator) \
-                           || ( ( (val) > eCharType_ArabicNumber) && ( (val) != eCharType_RightToLeftArabic) ) )
-
 /** option flags for WriteReverse() */
 /**
  * option bit for WriteReverse():
  * keep combining characters after their base characters in RTL runs
  *
  * @see WriteReverse
  */
 #define NSBIDI_KEEP_BASE_COMBINING       1
@@ -951,23 +879,16 @@ public:
    *
    * @param aOptions A bit set of options for the reordering that control
    *                how the reordered text is written.
    *
    * @param aDestSize will receive the number of characters that were written to <code>aDest</code>.
    */
   nsresult WriteReverse(const PRUnichar *aSrc, PRInt32 aSrcLength, PRUnichar *aDest, PRUint16 aOptions, PRInt32 *aDestSize);
 
-  /**
-   * Give a UTF-32 codepoint
-   * return PR_TRUE if the codepoint is a Bidi control character (LRE, RLE, PDF, LRO, RLO, LRM, RLM)
-   * return PR_FALSE, otherwise
-   */
-  PRBool IsBidiControl(PRUint32 aChar);
-
 protected:
   /** length of the current text */
   PRInt32 mLength;
 
   /** memory sizes in bytes */
   PRSize mDirPropsSize, mLevelsSize, mRunsSize;
 
   /** allocated memory */
@@ -1025,36 +946,15 @@ private:
 
   PRBool GetRuns();
 
   void GetSingleRun(nsBidiLevel aLevel);
 
   void ReorderLine(nsBidiLevel aMinLevel, nsBidiLevel aMaxLevel);
 
   PRBool PrepareReorder(const nsBidiLevel *aLevels, PRInt32 aLength, PRInt32 *aIndexMap, nsBidiLevel *aMinLevel, nsBidiLevel *aMaxLevel);
-  /**
-   * Give a UTF-32 codepoint, return an eBidiCategory
-   */
-  eBidiCategory GetBidiCategory(PRUint32 aChar);
-
-  /**
-   * Give a UTF-32 codepoint and an eBidiCategory, 
-   * return PR_TRUE if the codepoint is in that category, 
-   * return PR_FALSE, otherwise
-   */
-  PRBool IsBidiCategory(PRUint32 aChar, eBidiCategory aBidiCategory);
-
-  /**
-   * Give a UTF-32 codepoint, return a nsCharType (compatible with ICU)
-   */
-  nsCharType GetCharType(PRUint32 aChar);
-
-  /**
-   * Give a Unicode character, return the symmetric equivalent
-   */
-  PRUint32 SymmSwap(PRUint32 aChar);
 
   PRInt32 doWriteReverse(const PRUnichar *src, PRInt32 srcLength,
                          PRUnichar *dest, PRUint16 options);
 
 };
 
 #endif // _nsBidi_h_
--- a/layout/base/nsBidiPresUtils.cpp
+++ b/layout/base/nsBidiPresUtils.cpp
@@ -1220,17 +1220,17 @@ nsBidiPresUtils::StripBidiControlCharact
     return;
   }
 
   PRInt32 stripLen = 0;
 
   for (PRInt32 i = 0; i < aTextLength; i++) {
     // XXX: This silently ignores surrogate characters.
     //      As of Unicode 4.0, all Bidi control characters are within the BMP.
-    if (mBidiEngine->IsBidiControl((PRUint32)aText[i])) {
+    if (IsBidiControl((PRUint32)aText[i])) {
       ++stripLen;
     }
     else {
       aText[i - stripLen] = aText[i];
     }
   }
   aTextLength -= stripLen;
 }
deleted file mode 100644
--- a/layout/base/nsBidiUtils.cpp
+++ /dev/null
@@ -1,560 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
- *
- * ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is mozilla.org code.
- *
- * The Initial Developer of the Original Code is
- * IBM Corporation.
- * Portions created by the Initial Developer are Copyright (C) 2000
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *   Maha Abou El Rous <mahar@eg.ibm.com>
- *   Lina Kemmel <lkemmel@il.ibm.com>
- *   Simon Montagu <smontagu@netscape.com>
- *   Roozbeh Pournader <roozbeh@sharif.edu>
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either of the GNU General Public License Version 2 or later (the "GPL"),
- * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-#include "nsBidiUtils.h"
-
-#define FE_TO_06_OFFSET 0xfe70
-
-static const PRUnichar FE_TO_06 [][2] = {
-    {0x064b,0x0000},{0x064b,0x0640},{0x064c,0x0000},
-    {0x0000,0x0000},{0x064d,0x0000},{0x0000,0x0000},
-    {0x064e,0x0000},{0x064e,0x0640},{0x064f,0x0000},
-    {0x064f,0x0640},{0x0650,0x0000},{0x0650,0x0640},
-    {0x0651,0x0000},{0x0651,0x0640},{0x0652,0x0000},
-    {0x0652,0x0640},{0x0621,0x0000},{0x0622,0x0000},
-    {0x0622,0x0000},{0x0623,0x0000},{0x0623,0x0000},
-    {0x0624,0x0000},{0x0624,0x0000},{0x0625,0x0000},
-    {0x0625,0x0000},{0x0626,0x0000},{0x0626,0x0000},
-    {0x0626,0x0000},{0x0626,0x0000},{0x0627,0x0000},
-    {0x0627,0x0000},{0x0628,0x0000},{0x0628,0x0000},
-    {0x0628,0x0000},{0x0628,0x0000},{0x0629,0x0000},
-    {0x0629,0x0000},{0x062a,0x0000},{0x062a,0x0000},
-    {0x062a,0x0000},{0x062a,0x0000},{0x062b,0x0000},
-    {0x062b,0x0000},{0x062b,0x0000},{0x062b,0x0000},
-    {0x062c,0x0000},{0x062c,0x0000},{0x062c,0x0000},
-    {0x062c,0x0000},{0x062d,0x0000},{0x062d,0x0000},
-    {0x062d,0x0000},{0x062d,0x0000},{0x062e,0x0000},
-    {0x062e,0x0000},{0x062e,0x0000},{0x062e,0x0000},
-    {0x062f,0x0000},{0x062f,0x0000},{0x0630,0x0000},
-    {0x0630,0x0000},{0x0631,0x0000},{0x0631,0x0000},
-    {0x0632,0x0000},{0x0632,0x0000},{0x0633,0x0000},
-    {0x0633,0x0000},{0x0633,0x0000},{0x0633,0x0000},
-    {0x0634,0x0000},{0x0634,0x0000},{0x0634,0x0000},
-    {0x0634,0x0000},{0x0635,0x0000},{0x0635,0x0000},
-    {0x0635,0x0000},{0x0635,0x0000},{0x0636,0x0000},
-    {0x0636,0x0000},{0x0636,0x0000},{0x0636,0x0000},
-    {0x0637,0x0000},{0x0637,0x0000},{0x0637,0x0000},
-    {0x0637,0x0000},{0x0638,0x0000},{0x0638,0x0000},
-    {0x0638,0x0000},{0x0638,0x0000},{0x0639,0x0000},
-    {0x0639,0x0000},{0x0639,0x0000},{0x0639,0x0000},
-    {0x063a,0x0000},{0x063a,0x0000},{0x063a,0x0000},
-    {0x063a,0x0000},{0x0641,0x0000},{0x0641,0x0000},
-    {0x0641,0x0000},{0x0641,0x0000},{0x0642,0x0000},
-    {0x0642,0x0000},{0x0642,0x0000},{0x0642,0x0000},
-    {0x0643,0x0000},{0x0643,0x0000},{0x0643,0x0000},
-    {0x0643,0x0000},{0x0644,0x0000},{0x0644,0x0000},
-    {0x0644,0x0000},{0x0644,0x0000},{0x0645,0x0000},
-    {0x0645,0x0000},{0x0645,0x0000},{0x0645,0x0000},
-    {0x0646,0x0000},{0x0646,0x0000},{0x0646,0x0000},
-    {0x0646,0x0000},{0x0647,0x0000},{0x0647,0x0000},
-    {0x0647,0x0000},{0x0647,0x0000},{0x0648,0x0000},
-    {0x0648,0x0000},{0x0649,0x0000},{0x0649,0x0000},
-    {0x064a,0x0000},{0x064a,0x0000},{0x064a,0x0000},
-    {0x064a,0x0000},{0x0644,0x0622},{0x0644,0x0622},
-    {0x0644,0x0623},{0x0644,0x0623},{0x0644,0x0625},
-    {0x0644,0x0625},{0x0644,0x0627},{0x0644,0x0627}
-};
-
-static const PRUnichar FB_TO_06 [] = {
-    0x0671,0x0671,0x067B,0x067B,0x067B,0x067B,0x067E,0x067E, //FB50-FB57
-    0x067E,0x067E,0x0680,0x0680,0x0680,0x0680,0x067A,0x067A, //FB58-FB5F
-    0x067A,0x067A,0x067F,0x067F,0x067F,0x067F,0x0679,0x0679, //FB60-FB67
-    0x0679,0x0679,0x06A4,0x06A4,0x06A4,0x06A4,0x06A6,0x06A6, //FB68-FB6F
-    0x06A6,0x06A6,0x0684,0x0684,0x0684,0x0684,0x0683,0x0683, //FB70-FB77
-    0x0683,0x0683,0x0686,0x0686,0x0686,0x0686,0x0687,0x0687, //FB78-FB7F
-    0x0687,0x0687,0x068D,0x068D,0x068C,0x068C,0x068E,0x068E, //FB80-FB87
-    0x0688,0x0688,0x0698,0x0698,0x0691,0x0691,0x06A9,0x06A9, //FB88-FB8F
-    0x06A9,0x06A9,0x06AF,0x06AF,0x06AF,0x06AF,0x06B3,0x06B3, //FB90-FB97
-    0x06B3,0x06B3,0x06B1,0x06B1,0x06B1,0x06B1,0x06BA,0x06BA, //FB98-FB9F
-    0x06BB,0x06BB,0x06BB,0x06BB,0x06C0,0x06C0,0x06C1,0x06C1, //FBA0-FBA7
-    0x06C1,0x06C1,0x06BE,0x06BE,0x06BE,0x06BE,0x06D2,0x06D2, //FBA8-FBAF
-    0x06D3,0x06D3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, //FBB0-FBB7
-    0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, //FBB8-FBBF
-    0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, //FBC0-FBC7
-    0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, //FBC8-FBCF
-    0x0000,0x0000,0x0000,0x06AD,0x06AD,0x06AD,0x06AD,0x06C7, //FBD0-FBD7
-    0x06C7,0x06C6,0x06C6,0x06C8,0x06C8,0x0677,0x06CB,0x06CB, //FBD8-FBDF
-    0x06C5,0x06C5,0x06C9,0x06C9,0x06D0,0x06D0,0x06D0,0x06D0, //FBE0-FBE7
-    0x0649,0x0649,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, //FBE8-FBEF
-    0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, //FBF0-FBF7
-    0x0000,0x0000,0x0000,0x0000,0x06CC,0x06CC,0x06CC,0x06CC  //FBF8-FBFF
-};
-
-#define PresentationToOriginal(c, order)                  \
-    (((0xFE70 <= (c) && (c) <= 0xFEFC)) ?                 \
-         FE_TO_06[(c)- FE_TO_06_OFFSET][order] :                    \
-     (((0xFB50 <= (c) && (c) <= 0xFBFF) && (order) == 0) ? \
-         FB_TO_06[(c)-0xFB50] : (PRUnichar) 0x0000))
-
-//============ Begin Arabic Basic to Presentation Form B Code ============
-// Note: the following code are moved from gfx/src/windows/nsRenderingContextWin.cpp
-static const PRUint8 gArabicMap1[] = {
-            0x81, 0x83, 0x85, 0x87, 0x89, 0x8D, // 0622-0627
-0x8F, 0x93, 0x95, 0x99, 0x9D, 0xA1, 0xA5, 0xA9, // 0628-062F
-0xAB, 0xAD, 0xAF, 0xB1, 0xB5, 0xB9, 0xBD, 0xC1, // 0630-0637
-0xC5, 0xC9, 0xCD                                // 0638-063A
-};
-
-static const PRUint8 gArabicMap2[] = {
-      0xD1, 0xD5, 0xD9, 0xDD, 0xE1, 0xE5, 0xE9, // 0641-0647
-0xED, 0xEF, 0xF1                                // 0648-064A
-};
-
-static const PRUint8 gArabicMapEx[] = {
-      0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0671-0677
-0x00, 0x66, 0x5E, 0x52, 0x00, 0x00, 0x56, 0x62, // 0678-067F
-0x5A, 0x00, 0x00, 0x76, 0x72, 0x00, 0x7A, 0x7E, // 0680-0687
-0x88, 0x00, 0x00, 0x00, 0x84, 0x82, 0x86, 0x00, // 0688-068F
-0x00, 0x8C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0690-0697
-0x8A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0698-069F
-0x00, 0x00, 0x00, 0x00, 0x6A, 0x00, 0x6E, 0x00, // 06A0-06A7
-0x00, 0x8E, 0x00, 0x00, 0x00, 0xD3, 0x00, 0x92, // 06A8-06AF
-0x00, 0x9A, 0x00, 0x96, 0x00, 0x00, 0x00, 0x00, // 06B0-06B7
-0x00, 0x00, 0x9E, 0xA0, 0x00, 0x00, 0xAA, 0x00, // 06B8-06BF
-0xA4, 0xA6, 0x00, 0x00, 0x00, 0xE0, 0xD9, 0xD7, // 06C0-06C7
-0xDB, 0xE2, 0x00, 0xDE, 0xFC, 0x00, 0x00, 0x00, // 06C8-06CF
-0xE4, 0x00, 0xAE, 0xB0                          // 06D0-06D3
-};
-
-#define PresentationFormB(c, form)                                       \
-    (((0x0622<=(c)) && ((c)<=0x063A)) ?                                  \
-      (0xFE00|(gArabicMap1[(c)-0x0622] + (form))) :                      \
-       (((0x0641<=(c)) && ((c)<=0x064A)) ?                               \
-        (0xFE00|(gArabicMap2[(c)-0x0641] + (form))) :                    \
-         (((0x0671<=(c)) && ((c))<=0x06D3) && gArabicMapEx[(c)-0x0671]) ? \
-          (0xFB00|(gArabicMapEx[(c)-0x0671] + (form))) : (c)))
-
-typedef enum {
-   eIsolated,  // or Char N
-   eFinal,     // or Char R
-   eInitial,   // or Char L
-   eMedial     // or Char M
-} eArabicForm;
-
-typedef enum {
-   eTr = 0, // Transparent
-   eRJ = 1, // Right-Joining
-   eLJ = 2, // Left-Joining
-   eDJ = 3, // Dual-Joining
-   eNJ = 4, // Non-Joining
-   eJC = 7, // Joining Causing
-   eRightJCMask = 2, // bit of Right-Join Causing 
-   eLeftJCMask = 1   // bit of Left-Join Causing 
-} eArabicJoiningClass;
-
-#define RightJCClass(j) (eRightJCMask&(j))
-#define LeftJCClass(j)  (eLeftJCMask&(j))
-
-#define DecideForm(jl,j,jr)                                 \
-  (((eRJ == (j)) && RightJCClass(jr)) ? eFinal              \
-                                      :                     \
-   ((eDJ == (j)) ?                                          \
-    ((RightJCClass(jr)) ?                                   \
-     (((LeftJCClass(jl)) ? eMedial                          \
-                         : eFinal))                         \
-                        :                                   \
-     (((LeftJCClass(jl)) ? eInitial                         \
-                         : eIsolated))                      \
-    )                     : eIsolated))                     \
-
-// All letters without an equivalen in the FB50 block are 'eNJ' here. This
-// should be fixed after finding some better mechanism for handling Arabic.
-static const PRInt8 gJoiningClass[] = {
-eNJ, eNJ, eNJ, eNJ, eNJ, eNJ, eNJ, eNJ, // 0600-0607
-eNJ, eNJ, eNJ, eNJ, eNJ, eNJ, eNJ, eNJ, // 0608-060F
-eTr, eTr, eTr, eTr, eTr, eTr, eNJ, eNJ, // 0610-0617
-eNJ, eNJ, eNJ, eNJ, eNJ, eNJ, eNJ, eNJ, // 0618-061F
-eNJ, eNJ, eRJ, eRJ, eRJ, eRJ, eDJ, eRJ, // 0620-0627
-eDJ, eRJ, eDJ, eDJ, eDJ, eDJ, eDJ, eRJ, // 0628-062F
-eRJ, eRJ, eRJ, eDJ, eDJ, eDJ, eDJ, eDJ, // 0630-0637
-eDJ, eDJ, eDJ, eNJ, eNJ, eNJ, eNJ, eNJ, // 0638-063F
-eJC, eDJ, eDJ, eDJ, eDJ, eDJ, eDJ, eDJ, // 0640-0647
-eRJ, eDJ, eDJ, eTr, eTr, eTr, eTr, eTr, // 0648-064F
-eTr, eTr, eTr, eTr, eTr, eTr, eTr, eTr, // 0650-0657
-eTr, eNJ, eNJ, eNJ, eNJ, eNJ, eNJ, eNJ, // 0658-065F
-eNJ, eNJ, eNJ, eNJ, eNJ, eNJ, eNJ, eNJ, // 0660-0667
-eNJ, eNJ, eNJ, eNJ, eNJ, eNJ, eNJ, eNJ, // 0668-066F
-eTr, eRJ, eNJ, eNJ, eNJ, eNJ, eNJ, eNJ, // 0670-0677
-eNJ, eDJ, eDJ, eDJ, eNJ, eNJ, eDJ, eDJ, // 0678-067F
-eDJ, eNJ, eNJ, eDJ, eDJ, eNJ, eDJ, eDJ, // 0680-0687
-eRJ, eNJ, eNJ, eNJ, eRJ, eRJ, eRJ, eNJ, // 0688-068F
-eNJ, eRJ, eNJ, eNJ, eNJ, eNJ, eNJ, eNJ, // 0690-0697
-eRJ, eNJ, eNJ, eNJ, eNJ, eNJ, eNJ, eNJ, // 0698-069F
-eNJ, eNJ, eNJ, eNJ, eDJ, eNJ, eDJ, eNJ, // 06A0-06A7
-eNJ, eDJ, eNJ, eNJ, eNJ, eDJ, eNJ, eDJ, // 06A8-06AF
-eNJ, eDJ, eNJ, eDJ, eNJ, eNJ, eNJ, eNJ, // 06B0-06B7
-eNJ, eNJ, eDJ, eDJ, eNJ, eNJ, eDJ, eNJ, // 06B8-06BF
-eRJ, eDJ, eNJ, eNJ, eNJ, eRJ, eRJ, eRJ, // 06C0-06C7
-eRJ, eRJ, eNJ, eRJ, eDJ, eNJ, eNJ, eNJ, // 06C8-06CF
-eDJ, eNJ, eRJ, eRJ, eNJ, eNJ, eTr, eTr, // 06D0-06D7
-eTr, eTr, eTr, eTr, eTr, eNJ, eNJ, eTr, // 06D8-06DF
-eTr, eTr, eTr, eTr, eTr, eNJ, eNJ, eTr, // 06E0-06E7
-eTr, eNJ, eTr, eTr, eTr, eTr, eNJ, eNJ, // 06E8-06EF
-eNJ, eNJ, eNJ, eNJ, eNJ, eNJ, eNJ, eNJ, // 06F0-06F7
-eNJ, eNJ, eNJ, eNJ, eNJ, eNJ, eNJ, eNJ  // 06F8-06FF
-};
-
-#define GetJoiningClass(c)                   \
-  ((IS_ARABIC_CHAR(c)) ?                     \
-      (gJoiningClass[(c) - 0x0600]) :        \
-      ((0x200D == (c)) ? eJC : eTr))
-
-static const PRUint16 gArabicLigatureMap[] = 
-{
-0x82DF, // 0xFE82 0xFEDF -> 0xFEF5
-0x82E0, // 0xFE82 0xFEE0 -> 0xFEF6
-0x84DF, // 0xFE84 0xFEDF -> 0xFEF7
-0x84E0, // 0xFE84 0xFEE0 -> 0xFEF8
-0x88DF, // 0xFE88 0xFEDF -> 0xFEF9
-0x88E0, // 0xFE88 0xFEE0 -> 0xFEFA
-0x8EDF, // 0xFE8E 0xFEDF -> 0xFEFB
-0x8EE0  // 0xFE8E 0xFEE0 -> 0xFEFC
-};
-
-#define ARABIC_TO_HINDI_DIGIT_INCREMENT (START_HINDI_DIGITS - START_ARABIC_DIGITS)
-#define NUM_TO_ARABIC(c) \
-  ((((c)>=START_HINDI_DIGITS) && ((c)<=END_HINDI_DIGITS)) ? \
-   ((c) - (PRUint16)ARABIC_TO_HINDI_DIGIT_INCREMENT) : \
-   (c))
-#define NUM_TO_HINDI(c) \
-  ((((c)>=START_ARABIC_DIGITS) && ((c)<=END_ARABIC_DIGITS)) ? \
-   ((c) + (PRUint16)ARABIC_TO_HINDI_DIGIT_INCREMENT): \
-   (c))
-
-// helper function to reverse a PRUnichar buffer
-static void ReverseString(PRUnichar* aBuffer, PRUint32 aLen)
-{
-  PRUnichar *start, *end;
-  PRUnichar swapChar;
-
-  for (start = aBuffer, end = aBuffer + aLen - 1; start < end; ++start, --end) {
-    swapChar = *start;
-    *start = *end;
-    *end = swapChar;
-  }
-}
-
-nsresult ArabicShaping(const PRUnichar* aString, PRUint32 aLen,
-                       PRUnichar* aBuf, PRUint32 *aBufLen, 
-                       PRBool aInputLogical, PRBool aOutputLogical)
-{
-  nsAutoString tempString(aString, aLen);
-  if (tempString.Length() != aLen)
-    return NS_ERROR_OUT_OF_MEMORY;
-  PRUnichar *tempBuf = tempString.BeginWriting();
-  if (aInputLogical) {
-    ReverseString(tempBuf, aLen);
-  }
-  const PRUnichar* src = tempBuf;
-  const PRUnichar* p;
-  PRUnichar* dest = aBuf;
-  PRUnichar formB;
-  PRInt8 leftJ, thisJ, rightJ;
-  PRInt8 leftNoTrJ, rightNoTrJ;
-  thisJ = leftNoTrJ = eNJ;
-  rightJ = GetJoiningClass(*(src));
-  while(src<tempBuf+aLen-1) {
-    leftJ = thisJ;
-
-    if ((eTr != leftJ) || ((leftJ == eTr) && 
-        ( ( (src-1) >= tempBuf) && !IS_ARABIC_CHAR(*(src-1)))))
-      leftNoTrJ = thisJ;
-
-    if(src-2 >= (tempBuf)){
-      for(p=src-2; (p >= (tempBuf))&& (eTr == leftNoTrJ) && (IS_ARABIC_CHAR(*(p+1))) ; p--)  
-        leftNoTrJ = GetJoiningClass(*(p)) ;
-    }
-
-    thisJ = rightJ;
-    rightJ = rightNoTrJ = GetJoiningClass(*(src+1)) ;
-
-    if(src+2 <= (tempBuf+aLen-1)){
-      for(p=src+2; (p <= (tempBuf+aLen-1))&&(eTr == rightNoTrJ) && (IS_ARABIC_CHAR(*(src+1))); p++)
-        rightNoTrJ = GetJoiningClass(*(p)) ;
-    }
-
-    formB = PresentationFormB(*src, DecideForm(leftNoTrJ, thisJ, rightNoTrJ));
-    *dest++ = formB;
-    src++;
-
-  }
-  if((eTr != thisJ) || 
-     ((thisJ == eTr) && (((src-1)>=tempBuf) && (!IS_ARABIC_CHAR(*(src-1))))))
-    leftNoTrJ = thisJ;
-
-  if(src-2 >= (tempBuf)){
-    for(p=src-2; (src-2 >= (tempBuf)) && (eTr == leftNoTrJ) && (IS_ARABIC_CHAR(*(p+1))); p--)
-      leftNoTrJ = GetJoiningClass(*(p)) ;
-  }
-
-  formB = PresentationFormB(*src, DecideForm(leftNoTrJ, rightJ, eNJ));
-  *dest++ = formB;
-  src++;
-
-  PRUnichar *lSrc = aBuf;
-  PRUnichar *lDest = aBuf;
-  while(lSrc < (dest-1)) {
-    PRUnichar next = *(lSrc+1);
-    if(((0xFEDF == next) || (0xFEE0 == next)) && 
-       (0xFE80 == (0xFFF1 & *lSrc))) {
-      PRBool done = PR_FALSE;
-      PRUint16 key = ((*lSrc) << 8) | ( 0x00FF & next);
-      PRUint16 i;
-      for(i=0;i<8;i++) {
-        if(key == gArabicLigatureMap[i]) {
-          done = PR_TRUE;
-          // lam and alef in the source are mapped to a lam-alef ligature in the
-          // destination, so lSrc is incremented by 2 here
-          *lDest++ = 0xFEF5 + i;
-          lSrc+=2;
-          break;
-        }
-      }
-      if(! done)
-        *lDest++ = *lSrc++; 
-    } else if (0x200C == *lSrc || 0x200D == *lSrc)
-      // Strip zero-width joining controls ZWJ and ZWNJ from the shaped text
-      lSrc++;
-    else 
-      *lDest++ = *lSrc++; 
-
-  }
-  if(lSrc < dest)
-    *lDest++ = *lSrc++; 
-
-  *aBufLen = lDest - aBuf;
-  NS_ASSERTION(*aBufLen <= aLen, "ArabicShaping() likely did a buffer overflow!");
-
-  if (aOutputLogical) {
-    ReverseString(aBuf, *aBufLen);
-  }
-  return NS_OK;
-}
-
-nsresult Conv_FE_06(const nsString& aSrc, nsString& aDst)
-{
-  PRUnichar *aSrcUnichars = (PRUnichar *)aSrc.get();
-  PRUint32 i, size = aSrc.Length();
-  aDst.Truncate();
-  for (i=0;i<size;i++) { // i : Source
-    if (aSrcUnichars[i] == 0x0000) 
-      break; // no need to convert char after the NULL
-    if (IS_FE_CHAR(aSrcUnichars[i])) {
-      //ahmed for lamalf
-      PRUnichar ch = (PresentationToOriginal(aSrcUnichars[i], 1));
-      if(ch)
-        aDst += ch;
-      ch=(PresentationToOriginal(aSrcUnichars[i], 0));
-      if(ch)
-        aDst += ch;
-      else //if it is 00, just output what we have in FExx
-        aDst += aSrcUnichars[i];
-    } else {
-      aDst += aSrcUnichars[i]; // copy it even if it is not in FE range
-    }
-  }// for : loop the buffer
-  return NS_OK;
-}
-
-nsresult Conv_FE_06_WithReverse(const nsString& aSrc, nsString& aDst)
-{
-  PRUnichar *aSrcUnichars = (PRUnichar *)aSrc.get();
-  PRBool foundArabic = PR_FALSE;
-  PRUint32 i, endArabic, beginArabic, size;
-  beginArabic = 0;
-  size = aSrc.Length();
-  aDst.Truncate();
-  for (endArabic=0;endArabic<size;endArabic++) {
-    if (aSrcUnichars[endArabic] == 0x0000) 
-      break; // no need to convert char after the NULL
-
-    while( (IS_FE_CHAR(aSrcUnichars[endArabic]))||
-           (IS_ARABIC_CHAR(aSrcUnichars[endArabic]))||
-           (IS_ARABIC_DIGIT(aSrcUnichars[endArabic]))||
-           (aSrcUnichars[endArabic]==0x0020)) 
-    {
-      if(! foundArabic ) {
-        beginArabic=endArabic;
-        foundArabic= PR_TRUE;
-      }
-      endArabic++;
-    }
-    if(foundArabic) {
-      endArabic--;
-      for (i=endArabic; i>=beginArabic; i--) {
-        if(IS_FE_CHAR(aSrcUnichars[i])) {
-          //ahmed for the bug of lamalf
-          aDst += PresentationToOriginal(aSrcUnichars[i], 0);
-          if (PresentationToOriginal(aSrcUnichars[i], 1)) {
-            // Two characters, we have to resize the buffer :(
-             aDst += PresentationToOriginal(aSrcUnichars[i], 1);
-          } // if expands to 2 char
-        } else {
-          // do we need to check the following if ?
-          if((IS_ARABIC_CHAR(aSrcUnichars[i]))||
-             (IS_ARABIC_DIGIT(aSrcUnichars[i]))||
-             (aSrcUnichars[i]==0x0020))
-            aDst += aSrcUnichars[i];
-        }     
-      }
-    } else {
-      aDst += aSrcUnichars[endArabic]; 
-    }
-    foundArabic=PR_FALSE;
-  }// for : loop the buffer
-  return NS_OK;
-}
-
-nsresult Conv_06_FE_WithReverse(const nsString& aSrc,
-                                nsString& aDst,
-                                PRUint32 aDir)
-{
-  PRUnichar *aSrcUnichars = (PRUnichar *)aSrc.get();
-  PRUint32 i, beginArabic, endArabic, size;
-  beginArabic = 0;
-  size = aSrc.Length();
-  aDst.Truncate();
-  PRBool foundArabic = PR_FALSE;
-  for (endArabic=0;endArabic<size;endArabic++) {
-    if (aSrcUnichars[endArabic] == 0x0000) 
-      break; // no need to convert char after the NULL
-
-    while( (IS_06_CHAR(aSrcUnichars[endArabic])) || 
-           (IS_ARABIC_CHAR(aSrcUnichars[endArabic])) || 
-           (aSrcUnichars[endArabic]==0x0020) || 
-           (IS_ARABIC_DIGIT(aSrcUnichars[endArabic]))  ) 
-    {
-      if(! foundArabic) {
-        beginArabic=endArabic;
-        foundArabic=PR_TRUE;
-      }
-      endArabic++;
-    }
-    if(foundArabic) {
-      endArabic--;
-      PRUnichar buf[8192];
-      PRUint32 len=8192;
-
-      ArabicShaping(&aSrcUnichars[beginArabic], endArabic-beginArabic+1,
-                    buf, &len, 
-                    PR_TRUE, PR_FALSE);
-      // to reverse the numerals
-      PRUint32 endNumeral, beginNumeral = 0;
-      for (endNumeral=0;endNumeral<=len-1;endNumeral++){
-        PRBool foundNumeral = PR_FALSE;
-        while((endNumeral < len) && (IS_ARABIC_DIGIT(buf[endNumeral]))  ) {
-          if(!foundNumeral)
-          {
-            foundNumeral=PR_TRUE;
-            beginNumeral=endNumeral;
-          }
-          endNumeral++;
-        }
-        if(foundNumeral){
-          endNumeral--;
-          PRUnichar numbuf[20];
-          for(i=beginNumeral; i<=endNumeral; i++){
-            numbuf[i-beginNumeral]=buf[endNumeral-i+beginNumeral];
-          }
-          for(i=0;i<=endNumeral-beginNumeral;i++){
-            buf[i+beginNumeral]=numbuf[i];
-          }
-        }
-      }
-      if(aDir==1){//ltr
-        for (i=0;i<=len-1;i++){
-          aDst+= buf[i];
-        } 
-      }
-      else if(aDir==2){//rtl
-        for (i=0;i<=len-1;i++){
-          aDst+= buf[len-1-i];
-        } 
-      }
-    } else {
-      aDst += aSrcUnichars[endArabic];
-    }
-    foundArabic=PR_FALSE;
-  }// for : loop the buffer
-  return NS_OK;
-}
-
-nsresult HandleNumbers(PRUnichar* aBuffer, PRUint32 aSize, PRUint32 aNumFlag)
-{
-  PRUint32 i;
-  // IBMBIDI_NUMERAL_NOMINAL *
-  // IBMBIDI_NUMERAL_REGULAR
-  // IBMBIDI_NUMERAL_HINDICONTEXT
-  // IBMBIDI_NUMERAL_ARABIC
-  // IBMBIDI_NUMERAL_HINDI
-
-  switch (aNumFlag) {
-    case IBMBIDI_NUMERAL_HINDI:
-      for (i=0;i<aSize;i++)
-        aBuffer[i] = NUM_TO_HINDI(aBuffer[i]);
-      break;
-    case IBMBIDI_NUMERAL_ARABIC:
-      for (i=0;i<aSize;i++)
-        aBuffer[i] = NUM_TO_ARABIC(aBuffer[i]);
-      break;
-    case IBMBIDI_NUMERAL_REGULAR:
-    case IBMBIDI_NUMERAL_HINDICONTEXT:
-        // for clipboard handling
-        //XXX do we really want to convert numerals when copying text?
-      for (i=1;i<aSize;i++) {
-        if (IS_ARABIC_CHAR(aBuffer[i-1])) 
-          aBuffer[i] = NUM_TO_HINDI(aBuffer[i]);
-        else 
-          aBuffer[i] = NUM_TO_ARABIC(aBuffer[i]);
-      }
-    case IBMBIDI_NUMERAL_NOMINAL:
-    default:
-      break;
-  }
-  return NS_OK;
-}
-
-nsresult HandleNumbers(const nsString& aSrc, nsString& aDst)
-{
-  aDst = aSrc;
-  return HandleNumbers((PRUnichar *)aDst.get(),aDst.Length(), IBMBIDI_NUMERAL_REGULAR);
-}
-
deleted file mode 100644
--- a/layout/base/nsBidiUtils.h
+++ /dev/null
@@ -1,245 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is mozilla.org code.
- *
- * The Initial Developer of the Original Code is
- * IBM Corporation.
- * Portions created by the Initial Developer are Copyright (C) 2000
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *   Maha Abou El Rous <mahar@eg.ibm.com>
- *   Lina Kemmel <lkemmel@il.ibm.com>
- *   Simon Montagu <smontagu@netscape.com>
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either of the GNU General Public License Version 2 or later (the "GPL"),
- * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-
-#ifndef nsBidiUtils_h__
-#define nsBidiUtils_h__
-
-#include "nsCOMPtr.h"
-#include "nsString.h"
-
-  /**
-   * Perform Arabic shaping on a Unichar string
-   * @param aString is the input string
-   * @param aLen is the length of aStrong
-   * @param aBuf receives the shaped output
-   * @param aBuflen receives the length of aBuf
-   * @param aInputLogical indicates that the input is in logical order
-   * @param aOutputLogical indicates that the output should be in logical order
-   */
-  nsresult ArabicShaping(const PRUnichar* aString, PRUint32 aLen,
-                         PRUnichar* aBuf, PRUint32* aBufLen,
-                         PRBool aInputLogical, PRBool aOutputLogical);
-
-  /**
-   * Scan an nsString, converting characters in the FExx range (Arabic presentation forms) to the equivalent characters in the 06xx
-   * range
-   * @param aSrc is the input string
-   * @param aDst is the output string
-   */
-  nsresult Conv_FE_06(const nsString& aSrc, nsString& aDst);
-
-  /**
-   * Scan an nsString, converting characters in the FExx range (Arabic presentation forms) to the equivalent characters in the 06xx
-   * range, and also reverse the string
-   * @param aSrc is the input string
-   * @param aDst is the output string
-   */
-  nsresult Conv_FE_06_WithReverse(const nsString& aSrc, nsString& aDst);
-
-  /**
-   * Scan an nsString, converting characters in the 06xx range to the equivalent characters in the 0Fxx range (Arabic presentation
-   * forms), with the option to reverse the string
-   * @param aSrc is the input string
-   * @param aDst is the output string
-   * @param aDir indicates whether the string should be reversed
-   *        IBMBIDI_TEXTDIRECTION_LTR: do not reverse the string
-   *        IBMBIDI_TEXTDIRECTION_RTL: reverse the string
-   */
-  nsresult Conv_06_FE_WithReverse(const nsString& aSrc, nsString& aDst, PRUint32 aDir);
-
-  /**
-   * Scan a Unichar string, converting numbers to Arabic or Hindi forms in place
-   * @param aBuffer is the string
-   * @param aSize is the size of aBuffer
-   * @param aNumFlag specifies the conversion to perform:
-   *        IBMBIDI_NUMERAL_NOMINAL:      don't do any conversion
-   *        IBMBIDI_NUMERAL_HINDI:        convert to Hindi forms (Unicode 0660-0669)
-   *        IBMBIDI_NUMERAL_ARABIC:       convert to Arabic forms (Unicode 0030-0039)
-   *        IBMBIDI_NUMERAL_HINDICONTEXT: convert numbers in Arabic text to Hindi, otherwise to Arabic
-   */
-  nsresult HandleNumbers(PRUnichar* aBuffer, PRUint32 aSize, PRUint32  aNumFlag);
-
-  /**
-   * Scan an nsString, converting numerals to Arabic or Hindi forms
-   * @param aSrc is the input string
-   * @param aDst is the output string
-   */
-  nsresult HandleNumbers(const nsString& aSrc, nsString& aDst);
-
-// --------------------------------------------------
-// IBMBIDI 
-// --------------------------------------------------
-//
-// These values are shared with Preferences dialog
-//  ------------------
-//  If Pref values are to be changed
-//  in the XUL file of Prefs. the values
-//  Must be changed here too..
-//  ------------------
-//
-#define IBMBIDI_TEXTDIRECTION_STR       "bidi.direction"
-#define IBMBIDI_TEXTTYPE_STR            "bidi.texttype"
-#define IBMBIDI_CONTROLSTEXTMODE_STR    "bidi.controlstextmode"
-#define IBMBIDI_NUMERAL_STR             "bidi.numeral"
-#define IBMBIDI_SUPPORTMODE_STR         "bidi.support"
-#define IBMBIDI_CHARSET_STR             "bidi.characterset"
-
-#define IBMBIDI_TEXTDIRECTION       1
-#define IBMBIDI_TEXTTYPE            2
-#define IBMBIDI_CONTROLSTEXTMODE    3
-#define IBMBIDI_NUMERAL             4
-#define IBMBIDI_SUPPORTMODE         5
-#define IBMBIDI_CHARSET             6
-
-//  ------------------
-//  Text Direction
-//  ------------------
-//  bidi.direction
-#define IBMBIDI_TEXTDIRECTION_LTR     1 //  1 = directionLTRBidi *
-#define IBMBIDI_TEXTDIRECTION_RTL     2 //  2 = directionRTLBidi
-//  ------------------
-//  Text Type
-//  ------------------
-//  bidi.texttype
-#define IBMBIDI_TEXTTYPE_CHARSET      1 //  1 = charsettexttypeBidi *
-#define IBMBIDI_TEXTTYPE_LOGICAL      2 //  2 = logicaltexttypeBidi
-#define IBMBIDI_TEXTTYPE_VISUAL       3 //  3 = visualtexttypeBidi
-//  ------------------
-//  Controls Text Mode
-//  ------------------
-//  bidi.controlstextmode
-#define IBMBIDI_CONTROLSTEXTMODE_LOGICAL   1 //  1 = logicalcontrolstextmodeBidiCmd *
-#define IBMBIDI_CONTROLSTEXTMODE_VISUAL    2 //  2 = visualcontrolstextmodeBidi
-#define IBMBIDI_CONTROLSTEXTMODE_CONTAINER 3 //  3 = containercontrolstextmodeBidi
-//  ------------------
-//  Numeral Style
-//  ------------------
-//  bidi.numeral
-#define IBMBIDI_NUMERAL_NOMINAL       0 //  0 = nominalnumeralBidi *
-#define IBMBIDI_NUMERAL_REGULAR       1 //  1 = regularcontextnumeralBidi
-#define IBMBIDI_NUMERAL_HINDICONTEXT  2 //  2 = hindicontextnumeralBidi
-#define IBMBIDI_NUMERAL_ARABIC        3 //  3 = arabicnumeralBidi
-#define IBMBIDI_NUMERAL_HINDI         4 //  4 = hindinumeralBidi
-//  ------------------
-//  Support Mode
-//  ------------------
-//  bidi.support
-#define IBMBIDI_SUPPORTMODE_MOZILLA     1 //  1 = mozillaBidisupport *
-#define IBMBIDI_SUPPORTMODE_OSBIDI      2 //  2 = OsBidisupport
-#define IBMBIDI_SUPPORTMODE_DISABLE     3 //  3 = disableBidisupport
-//  ------------------
-//  Charset Mode
-//  ------------------
-//  bidi.characterset
-#define IBMBIDI_CHARSET_BIDI        1 //  1 = doccharactersetBidi *
-#define IBMBIDI_CHARSET_DEFAULT     2 //  2 = defaultcharactersetBidi
-
-#define IBMBIDI_DEFAULT_BIDI_OPTIONS              \
-        ((IBMBIDI_TEXTDIRECTION_LTR<<0)         | \
-         (IBMBIDI_TEXTTYPE_CHARSET<<4)          | \
-         (IBMBIDI_CONTROLSTEXTMODE_LOGICAL<<8)  | \
-         (IBMBIDI_NUMERAL_NOMINAL<<12)          | \
-         (IBMBIDI_SUPPORTMODE_MOZILLA<<16)      | \
-         (IBMBIDI_CHARSET_BIDI<<20))
-
-
-#define GET_BIDI_OPTION_DIRECTION(bo) (((bo)>>0) & 0x0000000F) /* 4 bits for DIRECTION */
-#define GET_BIDI_OPTION_TEXTTYPE(bo) (((bo)>>4) & 0x0000000F) /* 4 bits for TEXTTYPE */
-#define GET_BIDI_OPTION_CONTROLSTEXTMODE(bo) (((bo)>>8) & 0x0000000F) /* 4 bits for CONTROLTEXTMODE */
-#define GET_BIDI_OPTION_NUMERAL(bo) (((bo)>>12) & 0x0000000F) /* 4 bits for NUMERAL */
-#define GET_BIDI_OPTION_SUPPORT(bo) (((bo)>>16) & 0x0000000F) /* 4 bits for SUPPORT */
-#define GET_BIDI_OPTION_CHARACTERSET(bo) (((bo)>>20) & 0x0000000F) /* 4 bits for CHARACTERSET */
-
-#define SET_BIDI_OPTION_DIRECTION(bo, dir) {(bo)=((bo) & 0xFFFFFFF0)|(((dir)& 0x0000000F)<<0);}
-#define SET_BIDI_OPTION_TEXTTYPE(bo, tt) {(bo)=((bo) & 0xFFFFFF0F)|(((tt)& 0x0000000F)<<4);}
-#define SET_BIDI_OPTION_CONTROLSTEXTMODE(bo, cotm) {(bo)=((bo) & 0xFFFFF0FF)|(((cotm)& 0x0000000F)<<8);}
-#define SET_BIDI_OPTION_NUMERAL(bo, num) {(bo)=((bo) & 0xFFFF0FFF)|(((num)& 0x0000000F)<<12);}
-#define SET_BIDI_OPTION_SUPPORT(bo, sup) {(bo)=((bo) & 0xFFF0FFFF)|(((sup)& 0x0000000F)<<16);}
-#define SET_BIDI_OPTION_CHARACTERSET(bo, cs) {(bo)=((bo) & 0xFF0FFFFF)|(((cs)& 0x0000000F)<<20);}
-
-/* Constants related to the position of numerics in the codepage */
-#define START_HINDI_DIGITS              0x0660
-#define END_HINDI_DIGITS                0x0669
-#define START_ARABIC_DIGITS             0x0030
-#define END_ARABIC_DIGITS               0x0039
-#define START_FARSI_DIGITS              0x06f0
-#define END_FARSI_DIGITS                0x06f9
-#define IS_HINDI_DIGIT(u)   ( ( (u) >= START_HINDI_DIGITS )  && ( (u) <= END_HINDI_DIGITS ) )
-#define IS_ARABIC_DIGIT(u)  ( ( (u) >= START_ARABIC_DIGITS ) && ( (u) <= END_ARABIC_DIGITS ) )
-#define IS_FARSI_DIGIT(u)  ( ( (u) >= START_FARSI_DIGITS ) && ( (u) <= END_FARSI_DIGITS ) )
-#define IS_ARABIC_SEPARATOR(u) ( ( (u) == 0x066A ) || ( (u) == 0x066B ) || ( (u) == 0x066C ) )
-
-#define IS_BIDI_DIACRITIC(u) ( \
-  ( (u) >= 0x0591 && (u) <= 0x05A1) || ( (u) >= 0x05A3 && (u) <= 0x05B9) \
-    || ( (u) >= 0x05BB && (u) <= 0x05BD) || ( (u) == 0x05BF) || ( (u) == 0x05C1) \
-    || ( (u) == 0x05C2) || ( (u) == 0x05C4) \
-    || ( (u) >= 0x064B && (u) <= 0x0652) || ( (u) == 0x0670) \
-    || ( (u) >= 0x06D7 && (u) <= 0x06E4) || ( (u) == 0x06E7) || ( (u) == 0x06E8) \
-    || ( (u) >= 0x06EA && (u) <= 0x06ED) )
-
-#define IS_HEBREW_CHAR(c) (((0x0590 <= (c)) && ((c)<= 0x05FF)) || (((c) >= 0xfb1d) && ((c) <= 0xfb4f)))
-#define IS_06_CHAR(c) ((0x0600 <= (c)) && ((c)<= 0x06FF))
-#define IS_FE_CHAR(c) (((0xfb50 <= (c)) && ((c)<= 0xfbFF)) \
-                       || ((0xfe70 <= (c)) && ((c)<= 0xfeFC)))
-#define IS_ARABIC_CHAR(c) ((0x0600 <= (c)) && ((c)<= 0x06FF))
-#define IS_ARABIC_ALPHABETIC(c) (IS_ARABIC_CHAR(c) && \
-                                !(IS_HINDI_DIGIT(c) || IS_FARSI_DIGIT(c) || IS_ARABIC_SEPARATOR(c)))
-#define IS_BIDI_CONTROL_CHAR(c) ((0x202a <= (c)) && ((c)<= 0x202e) \
-                                || ((c) == 0x200e) || ((c) == 0x200f))
-
-/**
- * The codepoint ranges in the following macros are based on the blocks
- *  allocated, or planned to be allocated, to right-to-left characters in the
- *  BMP (Basic Multilingual Plane) and SMP (Supplementary Multilingual Plane)
- *  according to
- *  http://unicode.org/Public/UNIDATA/extracted/DerivedBidiClass.txt and
- *  http://www.unicode.org/roadmaps/
- */
-
-#define IS_IN_BMP_RTL_BLOCK(c) ((0x590 <= (c)) && ((c) <= 0x8ff))
-#define IS_RTL_PRESENTATION_FORM(c) (((0xfb1d <= (c)) && ((c) <= 0xfdff)) || \
-                                     ((0xfe70 <= (c)) && ((c) <= 0xfefc)))
-#define IS_IN_SMP_RTL_BLOCK(c) ((0x10800 <= (c)) && ((c) <= 0x10fff))
-#define UCS2_CHAR_IS_BIDI(c) ((IS_IN_BMP_RTL_BLOCK(c)) || \
-                              (IS_RTL_PRESENTATION_FORM(c)))
-#define UTF32_CHAR_IS_BIDI(c)  ((IS_IN_BMP_RTL_BLOCK(c)) || \
-                               (IS_RTL_PRESENTATION_FORM(c)) || \
-                               (IS_IN_SMP_RTL_BLOCK(c)))
-#endif  /* nsBidiUtils_h__ */
deleted file mode 100644
--- a/layout/base/symmtable.h
+++ /dev/null
@@ -1,336 +0,0 @@
-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
- *
- * ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is IBM code.
- *
- * The Initial Developer of the Original Code is
- * International Business Machines Corporation.
- * Portions created by the Initial Developer are Copyright (C) 2000
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either the GNU General Public License Version 2 or later (the "GPL"), or
- * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
- 
-/* 
-    DO NOT EDIT THIS DOCUMENT !!! THIS DOCUMENT IS GENERATED BY
-    mozilla/layout/tools/gensymmtable.pl
- */
-
-/* Indexes to symmtable by Unicode block */
-const static PRUint8 symmtable_index[256] = {
-/*       _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F */
-/* 0_ */  1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
-/* 1_ */  0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-/* 2_ */  4, 0, 5, 6, 0, 0, 0, 7, 0, 8, 9, 0, 0, 0, 10, 0,
-/* 3_ */  11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-/* 4_ */  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-/* 5_ */  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-/* 6_ */  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-/* 7_ */  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-/* 8_ */  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-/* 9_ */  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-/* A_ */  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-/* B_ */  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-/* C_ */  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-/* D_ */  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-/* E_ */  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-/* F_ */  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13,
-};
-const static PRUint16 symmtable[13] [256] = {
- {
-/* Block U00__ */
-/*           _0      _1      _2      _3      _4      _5      _6      _7      _8      _9      _A      _B      _C      _D      _E      _F */
-/* 0_ */      0,    0x1,    0x2,    0x3,    0x4,    0x5,    0x6,    0x7,    0x8,    0x9,    0xa,    0xb,    0xc,    0xd,    0xe,    0xf, 
-/* 1_ */   0x10,   0x11,   0x12,   0x13,   0x14,   0x15,   0x16,   0x17,   0x18,   0x19,   0x1a,   0x1b,   0x1c,   0x1d,   0x1e,   0x1f, 
-/* 2_ */   0x20,   0x21,   0x22,   0x23,   0x24,   0x25,   0x26,   0x27,   0x29,   0x28,   0x2a,   0x2b,   0x2c,   0x2d,   0x2e,   0x2f, 
-/* 3_ */   0x30,   0x31,   0x32,   0x33,   0x34,   0x35,   0x36,   0x37,   0x38,   0x39,   0x3a,   0x3b,   0x3e,   0x3d,   0x3c,   0x3f, 
-/* 4_ */   0x40,   0x41,   0x42,   0x43,   0x44,   0x45,   0x46,   0x47,   0x48,   0x49,   0x4a,   0x4b,   0x4c,   0x4d,   0x4e,   0x4f, 
-/* 5_ */   0x50,   0x51,   0x52,   0x53,   0x54,   0x55,   0x56,   0x57,   0x58,   0x59,   0x5a,   0x5d,   0x5c,   0x5b,   0x5e,   0x5f, 
-/* 6_ */   0x60,   0x61,   0x62,   0x63,   0x64,   0x65,   0x66,   0x67,   0x68,   0x69,   0x6a,   0x6b,   0x6c,   0x6d,   0x6e,   0x6f, 
-/* 7_ */   0x70,   0x71,   0x72,   0x73,   0x74,   0x75,   0x76,   0x77,   0x78,   0x79,   0x7a,   0x7d,   0x7c,   0x7b,   0x7e,   0x7f, 
-/* 8_ */   0x80,   0x81,   0x82,   0x83,   0x84,   0x85,   0x86,   0x87,   0x88,   0x89,   0x8a,   0x8b,   0x8c,   0x8d,   0x8e,   0x8f, 
-/* 9_ */   0x90,   0x91,   0x92,   0x93,   0x94,   0x95,   0x96,   0x97,   0x98,   0x99,   0x9a,   0x9b,   0x9c,   0x9d,   0x9e,   0x9f, 
-/* A_ */   0xa0,   0xa1,   0xa2,   0xa3,   0xa4,   0xa5,   0xa6,   0xa7,   0xa8,   0xa9,   0xaa,   0xbb,   0xac,   0xad,   0xae,   0xaf, 
-/* B_ */   0xb0,   0xb1,   0xb2,   0xb3,   0xb4,   0xb5,   0xb6,   0xb7,   0xb8,   0xb9,   0xba,   0xab,   0xbc,   0xbd,   0xbe,   0xbf, 
-/* C_ */   0xc0,   0xc1,   0xc2,   0xc3,   0xc4,   0xc5,   0xc6,   0xc7,   0xc8,   0xc9,   0xca,   0xcb,   0xcc,   0xcd,   0xce,   0xcf, 
-/* D_ */   0xd0,   0xd1,   0xd2,   0xd3,   0xd4,   0xd5,   0xd6,   0xd7,   0xd8,   0xd9,   0xda,   0xdb,   0xdc,   0xdd,   0xde,   0xdf, 
-/* E_ */   0xe0,   0xe1,   0xe2,   0xe3,   0xe4,   0xe5,   0xe6,   0xe7,   0xe8,   0xe9,   0xea,   0xeb,   0xec,   0xed,   0xee,   0xef, 
-/* F_ */   0xf0,   0xf1,   0xf2,   0xf3,   0xf4,   0xf5,   0xf6,   0xf7,   0xf8,   0xf9,   0xfa,   0xfb,   0xfc,   0xfd,   0xfe,   0xff
- },
- {
-/* Block U0F__ */
-/*           _0      _1      _2      _3      _4      _5      _6      _7      _8      _9      _A      _B      _C      _D      _E      _F */
-/* 0_ */  0xf00,  0xf01,  0xf02,  0xf03,  0xf04,  0xf05,  0xf06,  0xf07,  0xf08,  0xf09,  0xf0a,  0xf0b,  0xf0c,  0xf0d,  0xf0e,  0xf0f, 
-/* 1_ */  0xf10,  0xf11,  0xf12,  0xf13,  0xf14,  0xf15,  0xf16,  0xf17,  0xf18,  0xf19,  0xf1a,  0xf1b,  0xf1c,  0xf1d,  0xf1e,  0xf1f, 
-/* 2_ */  0xf20,  0xf21,  0xf22,  0xf23,  0xf24,  0xf25,  0xf26,  0xf27,  0xf28,  0xf29,  0xf2a,  0xf2b,  0xf2c,  0xf2d,  0xf2e,  0xf2f, 
-/* 3_ */  0xf30,  0xf31,  0xf32,  0xf33,  0xf34,  0xf35,  0xf36,  0xf37,  0xf38,  0xf39,  0xf3b,  0xf3a,  0xf3d,  0xf3c,  0xf3e,  0xf3f, 
-/* 4_ */  0xf40,  0xf41,  0xf42,  0xf43,  0xf44,  0xf45,  0xf46,  0xf47,  0xf48,  0xf49,  0xf4a,  0xf4b,  0xf4c,  0xf4d,  0xf4e,  0xf4f, 
-/* 5_ */  0xf50,  0xf51,  0xf52,  0xf53,  0xf54,  0xf55,  0xf56,  0xf57,  0xf58,  0xf59,  0xf5a,  0xf5b,  0xf5c,  0xf5d,  0xf5e,  0xf5f, 
-/* 6_ */  0xf60,  0xf61,  0xf62,  0xf63,  0xf64,  0xf65,  0xf66,  0xf67,  0xf68,  0xf69,  0xf6a,  0xf6b,  0xf6c,  0xf6d,  0xf6e,  0xf6f, 
-/* 7_ */  0xf70,  0xf71,  0xf72,  0xf73,  0xf74,  0xf75,  0xf76,  0xf77,  0xf78,  0xf79,  0xf7a,  0xf7b,  0xf7c,  0xf7d,  0xf7e,  0xf7f, 
-/* 8_ */  0xf80,  0xf81,  0xf82,  0xf83,  0xf84,  0xf85,  0xf86,  0xf87,  0xf88,  0xf89,  0xf8a,  0xf8b,  0xf8c,  0xf8d,  0xf8e,  0xf8f, 
-/* 9_ */  0xf90,  0xf91,  0xf92,  0xf93,  0xf94,  0xf95,  0xf96,  0xf97,  0xf98,  0xf99,  0xf9a,  0xf9b,  0xf9c,  0xf9d,  0xf9e,  0xf9f, 
-/* A_ */  0xfa0,  0xfa1,  0xfa2,  0xfa3,  0xfa4,  0xfa5,  0xfa6,  0xfa7,  0xfa8,  0xfa9,  0xfaa,  0xfab,  0xfac,  0xfad,  0xfae,  0xfaf, 
-/* B_ */  0xfb0,  0xfb1,  0xfb2,  0xfb3,  0xfb4,  0xfb5,  0xfb6,  0xfb7,  0xfb8,  0xfb9,  0xfba,  0xfbb,  0xfbc,  0xfbd,  0xfbe,  0xfbf, 
-/* C_ */  0xfc0,  0xfc1,  0xfc2,  0xfc3,  0xfc4,  0xfc5,  0xfc6,  0xfc7,  0xfc8,  0xfc9,  0xfca,  0xfcb,  0xfcc,  0xfcd,  0xfce,  0xfcf, 
-/* D_ */  0xfd0,  0xfd1,  0xfd2,  0xfd3,  0xfd4,  0xfd5,  0xfd6,  0xfd7,  0xfd8,  0xfd9,  0xfda,  0xfdb,  0xfdc,  0xfdd,  0xfde,  0xfdf, 
-/* E_ */  0xfe0,  0xfe1,  0xfe2,  0xfe3,  0xfe4,  0xfe5,  0xfe6,  0xfe7,  0xfe8,  0xfe9,  0xfea,  0xfeb,  0xfec,  0xfed,  0xfee,  0xfef, 
-/* F_ */  0xff0,  0xff1,  0xff2,  0xff3,  0xff4,  0xff5,  0xff6,  0xff7,  0xff8,  0xff9,  0xffa,  0xffb,  0xffc,  0xffd,  0xffe,  0xfff
- },
- {
-/* Block U16__ */
-/*           _0      _1      _2      _3      _4      _5      _6      _7      _8      _9      _A      _B      _C      _D      _E      _F */
-/* 0_ */ 0x1600, 0x1601, 0x1602, 0x1603, 0x1604, 0x1605, 0x1606, 0x1607, 0x1608, 0x1609, 0x160a, 0x160b, 0x160c, 0x160d, 0x160e, 0x160f, 
-/* 1_ */ 0x1610, 0x1611, 0x1612, 0x1613, 0x1614, 0x1615, 0x1616, 0x1617, 0x1618, 0x1619, 0x161a, 0x161b, 0x161c, 0x161d, 0x161e, 0x161f, 
-/* 2_ */ 0x1620, 0x1621, 0x1622, 0x1623, 0x1624, 0x1625, 0x1626, 0x1627, 0x1628, 0x1629, 0x162a, 0x162b, 0x162c, 0x162d, 0x162e, 0x162f, 
-/* 3_ */ 0x1630, 0x1631, 0x1632, 0x1633, 0x1634, 0x1635, 0x1636, 0x1637, 0x1638, 0x1639, 0x163a, 0x163b, 0x163c, 0x163d, 0x163e, 0x163f, 
-/* 4_ */ 0x1640, 0x1641, 0x1642, 0x1643, 0x1644, 0x1645, 0x1646, 0x1647, 0x1648, 0x1649, 0x164a, 0x164b, 0x164c, 0x164d, 0x164e, 0x164f, 
-/* 5_ */ 0x1650, 0x1651, 0x1652, 0x1653, 0x1654, 0x1655, 0x1656, 0x1657, 0x1658, 0x1659, 0x165a, 0x165b, 0x165c, 0x165d, 0x165e, 0x165f, 
-/* 6_ */ 0x1660, 0x1661, 0x1662, 0x1663, 0x1664, 0x1665, 0x1666, 0x1667, 0x1668, 0x1669, 0x166a, 0x166b, 0x166c, 0x166d, 0x166e, 0x166f, 
-/* 7_ */ 0x1670, 0x1671, 0x1672, 0x1673, 0x1674, 0x1675, 0x1676, 0x1677, 0x1678, 0x1679, 0x167a, 0x167b, 0x167c, 0x167d, 0x167e, 0x167f, 
-/* 8_ */ 0x1680, 0x1681, 0x1682, 0x1683, 0x1684, 0x1685, 0x1686, 0x1687, 0x1688, 0x1689, 0x168a, 0x168b, 0x168c, 0x168d, 0x168e, 0x168f, 
-/* 9_ */ 0x1690, 0x1691, 0x1692, 0x1693, 0x1694, 0x1695, 0x1696, 0x1697, 0x1698, 0x1699, 0x169a, 0x169c, 0x169b, 0x169d, 0x169e, 0x169f, 
-/* A_ */ 0x16a0, 0x16a1, 0x16a2, 0x16a3, 0x16a4, 0x16a5, 0x16a6, 0x16a7, 0x16a8, 0x16a9, 0x16aa, 0x16ab, 0x16ac, 0x16ad, 0x16ae, 0x16af, 
-/* B_ */ 0x16b0, 0x16b1, 0x16b2, 0x16b3, 0x16b4, 0x16b5, 0x16b6, 0x16b7, 0x16b8, 0x16b9, 0x16ba, 0x16bb, 0x16bc, 0x16bd, 0x16be, 0x16bf, 
-/* C_ */ 0x16c0, 0x16c1, 0x16c2, 0x16c3, 0x16c4, 0x16c5, 0x16c6, 0x16c7, 0x16c8, 0x16c9, 0x16ca, 0x16cb, 0x16cc, 0x16cd, 0x16ce, 0x16cf, 
-/* D_ */ 0x16d0, 0x16d1, 0x16d2, 0x16d3, 0x16d4, 0x16d5, 0x16d6, 0x16d7, 0x16d8, 0x16d9, 0x16da, 0x16db, 0x16dc, 0x16dd, 0x16de, 0x16df, 
-/* E_ */ 0x16e0, 0x16e1, 0x16e2, 0x16e3, 0x16e4, 0x16e5, 0x16e6, 0x16e7, 0x16e8, 0x16e9, 0x16ea, 0x16eb, 0x16ec, 0x16ed, 0x16ee, 0x16ef, 
-/* F_ */ 0x16f0, 0x16f1, 0x16f2, 0x16f3, 0x16f4, 0x16f5, 0x16f6, 0x16f7, 0x16f8, 0x16f9, 0x16fa, 0x16fb, 0x16fc, 0x16fd, 0x16fe, 0x16ff
- },
- {
-/* Block U20__ */
-/*           _0      _1      _2      _3      _4      _5      _6      _7      _8      _9      _A      _B      _C      _D      _E      _F */
-/* 0_ */ 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200a, 0x200b, 0x200c, 0x200d, 0x200e, 0x200f, 
-/* 1_ */ 0x2010, 0x2011, 0x2012, 0x2013, 0x2014, 0x2015, 0x2016, 0x2017, 0x2019, 0x2018, 0x201a, 0x201b, 0x201d, 0x201c, 0x201e, 0x201f, 
-/* 2_ */ 0x2020, 0x2021, 0x2022, 0x2023, 0x2024, 0x2025, 0x2026, 0x2027, 0x2028, 0x2029, 0x202a, 0x202b, 0x202c, 0x202d, 0x202e, 0x202f, 
-/* 3_ */ 0x2030, 0x2031, 0x2032, 0x2033, 0x2034, 0x2035, 0x2036, 0x2037, 0x2038, 0x203a, 0x2039, 0x203b, 0x203c, 0x203d, 0x203e, 0x203f, 
-/* 4_ */ 0x2040, 0x2041, 0x2042, 0x2043, 0x2044, 0x2046, 0x2045, 0x2047, 0x2048, 0x2049, 0x204a, 0x204b, 0x204c, 0x204d, 0x204e, 0x204f, 
-/* 5_ */ 0x2050, 0x2051, 0x2052, 0x2053, 0x2054, 0x2055, 0x2056, 0x2057, 0x2058, 0x2059, 0x205a, 0x205b, 0x205c, 0x205d, 0x205e, 0x205f, 
-/* 6_ */ 0x2060, 0x2061, 0x2062, 0x2063, 0x2064, 0x2065, 0x2066, 0x2067, 0x2068, 0x2069, 0x206a, 0x206b, 0x206c, 0x206d, 0x206e, 0x206f, 
-/* 7_ */ 0x2070, 0x2071, 0x2072, 0x2073, 0x2074, 0x2075, 0x2076, 0x2077, 0x2078, 0x2079, 0x207a, 0x207b, 0x207c, 0x207e, 0x207d, 0x207f, 
-/* 8_ */ 0x2080, 0x2081, 0x2082, 0x2083, 0x2084, 0x2085, 0x2086, 0x2087, 0x2088, 0x2089, 0x208a, 0x208b, 0x208c, 0x208e, 0x208d, 0x208f, 
-/* 9_ */ 0x2090, 0x2091, 0x2092, 0x2093, 0x2094, 0x2095, 0x2096, 0x2097, 0x2098, 0x2099, 0x209a, 0x209b, 0x209c, 0x209d, 0x209e, 0x209f, 
-/* A_ */ 0x20a0, 0x20a1, 0x20a2, 0x20a3, 0x20a4, 0x20a5, 0x20a6, 0x20a7, 0x20a8, 0x20a9, 0x20aa, 0x20ab, 0x20ac, 0x20ad, 0x20ae, 0x20af, 
-/* B_ */ 0x20b0, 0x20b1, 0x20b2, 0x20b3, 0x20b4, 0x20b5, 0x20b6, 0x20b7, 0x20b8, 0x20b9, 0x20ba, 0x20bb, 0x20bc, 0x20bd, 0x20be, 0x20bf, 
-/* C_ */ 0x20c0, 0x20c1, 0x20c2, 0x20c3, 0x20c4, 0x20c5, 0x20c6, 0x20c7, 0x20c8, 0x20c9, 0x20ca, 0x20cb, 0x20cc, 0x20cd, 0x20ce, 0x20cf, 
-/* D_ */ 0x20d0, 0x20d1, 0x20d2, 0x20d3, 0x20d4, 0x20d5, 0x20d6, 0x20d7, 0x20d8, 0x20d9, 0x20da, 0x20db, 0x20dc, 0x20dd, 0x20de, 0x20df, 
-/* E_ */ 0x20e0, 0x20e1, 0x20e2, 0x20e3, 0x20e4, 0x20e5, 0x20e6, 0x20e7, 0x20e8, 0x20e9, 0x20ea, 0x20eb, 0x20ec, 0x20ed, 0x20ee, 0x20ef, 
-/* F_ */ 0x20f0, 0x20f1, 0x20f2, 0x20f3, 0x20f4, 0x20f5, 0x20f6, 0x20f7, 0x20f8, 0x20f9, 0x20fa, 0x20fb, 0x20fc, 0x20fd, 0x20fe, 0x20ff
- },
- {
-/* Block U22__ */
-/*           _0      _1      _2      _3      _4      _5      _6      _7      _8      _9      _A      _B      _C      _D      _E      _F */
-/* 0_ */ 0x2200, 0x2201, 0x2202, 0x2203, 0x2204, 0x2205, 0x2206, 0x2207, 0x220b, 0x220c, 0x220d, 0x2208, 0x2209, 0x220a, 0x220e, 0x220f, 
-/* 1_ */ 0x2210, 0x2211, 0x2212, 0x2213, 0x2214, 0x29f5, 0x2216, 0x2217, 0x2218, 0x2219, 0x221a, 0x221b, 0x221c, 0x221d, 0x221e, 0x221f, 
-/* 2_ */ 0x2220, 0x2221, 0x2222, 0x2223, 0x2224, 0x2225, 0x2226, 0x2227, 0x2228, 0x2229, 0x222a, 0x222b, 0x222c, 0x222d, 0x222e, 0x222f, 
-/* 3_ */ 0x2230, 0x2231, 0x2232, 0x2233, 0x2234, 0x2235, 0x2236, 0x2237, 0x2238, 0x2239, 0x223a, 0x223b, 0x223d, 0x223c, 0x223e, 0x223f, 
-/* 4_ */ 0x2240, 0x2241, 0x2242, 0x22cd, 0x2244, 0x2245, 0x2246, 0x2247, 0x2248, 0x2249, 0x224a, 0x224b, 0x224c, 0x224d, 0x224e, 0x224f, 
-/* 5_ */ 0x2250, 0x2251, 0x2253, 0x2252, 0x2255, 0x2254, 0x2256, 0x2257, 0x2258, 0x2259, 0x225a, 0x225b, 0x225c, 0x225d, 0x225e, 0x225f, 
-/* 6_ */ 0x2260, 0x2261, 0x2262, 0x2263, 0x2265, 0x2264, 0x2267, 0x2266, 0x2269, 0x2268, 0x226b, 0x226a, 0x226c, 0x226d, 0x226f, 0x226e, 
-/* 7_ */ 0x2271, 0x2270, 0x2273, 0x2272, 0x2275, 0x2274, 0x2277, 0x2276, 0x2279, 0x2278, 0x227b, 0x227a, 0x227d, 0x227c, 0x227f, 0x227e, 
-/* 8_ */ 0x2281, 0x2280, 0x2283, 0x2282, 0x2285, 0x2284, 0x2287, 0x2286, 0x2289, 0x2288, 0x228b, 0x228a, 0x228c, 0x228d, 0x228e, 0x2290, 
-/* 9_ */ 0x228f, 0x2292, 0x2291, 0x2293, 0x2294, 0x2295, 0x2296, 0x2297, 0x29b8, 0x2299, 0x229a, 0x229b, 0x229c, 0x229d, 0x229e, 0x229f, 
-/* A_ */ 0x22a0, 0x22a1, 0x22a3, 0x22a2, 0x22a4, 0x22a5, 0x2ade, 0x22a7, 0x2ae4, 0x2ae3, 0x22aa, 0x2ae5, 0x22ac, 0x22ad, 0x22ae, 0x22af, 
-/* B_ */ 0x22b1, 0x22b0, 0x22b3, 0x22b2, 0x22b5, 0x22b4, 0x22b7, 0x22b6, 0x22b8, 0x22b9, 0x22ba, 0x22bb, 0x22bc, 0x22bd, 0x22be, 0x22bf, 
-/* C_ */ 0x22c0, 0x22c1, 0x22c2, 0x22c3, 0x22c4, 0x22c5, 0x22c6, 0x22c7, 0x22c8, 0x22ca, 0x22c9, 0x22cc, 0x22cb, 0x2243, 0x22ce, 0x22cf, 
-/* D_ */ 0x22d1, 0x22d0, 0x22d2, 0x22d3, 0x22d4, 0x22d5, 0x22d7, 0x22d6, 0x22d9, 0x22d8, 0x22db, 0x22da, 0x22dd, 0x22dc, 0x22df, 0x22de, 
-/* E_ */ 0x22e1, 0x22e0, 0x22e3, 0x22e2, 0x22e5, 0x22e4, 0x22e7, 0x22e6, 0x22e9, 0x22e8, 0x22eb, 0x22ea, 0x22ed, 0x22ec, 0x22ee, 0x22ef, 
-/* F_ */ 0x22f1, 0x22f0, 0x22fa, 0x22fb, 0x22fc, 0x22f5, 0x22fd, 0x22fe, 0x22f8, 0x22f9, 0x22f2, 0x22f3, 0x22f4, 0x22f6, 0x22f7, 0x22ff
- },
- {
-/* Block U23__ */
-/*           _0      _1      _2      _3      _4      _5      _6      _7      _8      _9      _A      _B      _C      _D      _E      _F */
-/* 0_ */ 0x2300, 0x2301, 0x2302, 0x2303, 0x2304, 0x2305, 0x2306, 0x2307, 0x2309, 0x2308, 0x230b, 0x230a, 0x230c, 0x230d, 0x230e, 0x230f, 
-/* 1_ */ 0x2310, 0x2311, 0x2312, 0x2313, 0x2314, 0x2315, 0x2316, 0x2317, 0x2318, 0x2319, 0x231a, 0x231b, 0x231c, 0x231d, 0x231e, 0x231f, 
-/* 2_ */ 0x2320, 0x2321, 0x2322, 0x2323, 0x2324, 0x2325, 0x2326, 0x2327, 0x2328, 0x232a, 0x2329, 0x232b, 0x232c, 0x232d, 0x232e, 0x232f, 
-/* 3_ */ 0x2330, 0x2331, 0x2332, 0x2333, 0x2334, 0x2335, 0x2336, 0x2337, 0x2338, 0x2339, 0x233a, 0x233b, 0x233c, 0x233d, 0x233e, 0x233f, 
-/* 4_ */ 0x2340, 0x2341, 0x2342, 0x2343, 0x2344, 0x2345, 0x2346, 0x2347, 0x2348, 0x2349, 0x234a, 0x234b, 0x234c, 0x234d, 0x234e, 0x234f, 
-/* 5_ */ 0x2350, 0x2351, 0x2352, 0x2353, 0x2354, 0x2355, 0x2356, 0x2357, 0x2358, 0x2359, 0x235a, 0x235b, 0x235c, 0x235d, 0x235e, 0x235f, 
-/* 6_ */ 0x2360, 0x2361, 0x2362, 0x2363, 0x2364, 0x2365, 0x2366, 0x2367, 0x2368, 0x2369, 0x236a, 0x236b, 0x236c, 0x236d, 0x236e, 0x236f, 
-/* 7_ */ 0x2370, 0x2371, 0x2372, 0x2373, 0x2374, 0x2375, 0x2376, 0x2377, 0x2378, 0x2379, 0x237a, 0x237b, 0x237c, 0x237d, 0x237e, 0x237f, 
-/* 8_ */ 0x2380, 0x2381, 0x2382, 0x2383, 0x2384, 0x2385, 0x2386, 0x2387, 0x2388, 0x2389, 0x238a, 0x238b, 0x238c, 0x238d, 0x238e, 0x238f, 
-/* 9_ */ 0x2390, 0x2391, 0x2392, 0x2393, 0x2394, 0x2395, 0x2396, 0x2397, 0x2398, 0x2399, 0x239a, 0x239b, 0x239c, 0x239d, 0x239e, 0x239f, 
-/* A_ */ 0x23a0, 0x23a1, 0x23a2, 0x23a3, 0x23a4, 0x23a5, 0x23a6, 0x23a7, 0x23a8, 0x23a9, 0x23aa, 0x23ab, 0x23ac, 0x23ad, 0x23ae, 0x23af, 
-/* B_ */ 0x23b0, 0x23b1, 0x23b2, 0x23b3, 0x23b4, 0x23b5, 0x23b6, 0x23b7, 0x23b8, 0x23b9, 0x23ba, 0x23bb, 0x23bc, 0x23bd, 0x23be, 0x23bf, 
-/* C_ */ 0x23c0, 0x23c1, 0x23c2, 0x23c3, 0x23c4, 0x23c5, 0x23c6, 0x23c7, 0x23c8, 0x23c9, 0x23ca, 0x23cb, 0x23cc, 0x23cd, 0x23ce, 0x23cf, 
-/* D_ */ 0x23d0, 0x23d1, 0x23d2, 0x23d3, 0x23d4, 0x23d5, 0x23d6, 0x23d7, 0x23d8, 0x23d9, 0x23da, 0x23db, 0x23dc, 0x23dd, 0x23de, 0x23df, 
-/* E_ */ 0x23e0, 0x23e1, 0x23e2, 0x23e3, 0x23e4, 0x23e5, 0x23e6, 0x23e7, 0x23e8, 0x23e9, 0x23ea, 0x23eb, 0x23ec, 0x23ed, 0x23ee, 0x23ef, 
-/* F_ */ 0x23f0, 0x23f1, 0x23f2, 0x23f3, 0x23f4, 0x23f5, 0x23f6, 0x23f7, 0x23f8, 0x23f9, 0x23fa, 0x23fb, 0x23fc, 0x23fd, 0x23fe, 0x23ff
- },
- {
-/* Block U27__ */
-/*           _0      _1      _2      _3      _4      _5      _6      _7      _8      _9      _A      _B      _C      _D      _E      _F */
-/* 0_ */ 0x2700, 0x2701, 0x2702, 0x2703, 0x2704, 0x2705, 0x2706, 0x2707, 0x2708, 0x2709, 0x270a, 0x270b, 0x270c, 0x270d, 0x270e, 0x270f, 
-/* 1_ */ 0x2710, 0x2711, 0x2712, 0x2713, 0x2714, 0x2715, 0x2716, 0x2717, 0x2718, 0x2719, 0x271a, 0x271b, 0x271c, 0x271d, 0x271e, 0x271f, 
-/* 2_ */ 0x2720, 0x2721, 0x2722, 0x2723, 0x2724, 0x2725, 0x2726, 0x2727, 0x2728, 0x2729, 0x272a, 0x272b, 0x272c, 0x272d, 0x272e, 0x272f, 
-/* 3_ */ 0x2730, 0x2731, 0x2732, 0x2733, 0x2734, 0x2735, 0x2736, 0x2737, 0x2738, 0x2739, 0x273a, 0x273b, 0x273c, 0x273d, 0x273e, 0x273f, 
-/* 4_ */ 0x2740, 0x2741, 0x2742, 0x2743, 0x2744, 0x2745, 0x2746, 0x2747, 0x2748, 0x2749, 0x274a, 0x274b, 0x274c, 0x274d, 0x274e, 0x274f, 
-/* 5_ */ 0x2750, 0x2751, 0x2752, 0x2753, 0x2754, 0x2755, 0x2756, 0x2757, 0x2758, 0x2759, 0x275a, 0x275b, 0x275c, 0x275d, 0x275e, 0x275f, 
-/* 6_ */ 0x2760, 0x2761, 0x2762, 0x2763, 0x2764, 0x2765, 0x2766, 0x2767, 0x2769, 0x2768, 0x276b, 0x276a, 0x276d, 0x276c, 0x276f, 0x276e, 
-/* 7_ */ 0x2771, 0x2770, 0x2773, 0x2772, 0x2775, 0x2774, 0x2776, 0x2777, 0x2778, 0x2779, 0x277a, 0x277b, 0x277c, 0x277d, 0x277e, 0x277f, 
-/* 8_ */ 0x2780, 0x2781, 0x2782, 0x2783, 0x2784, 0x2785, 0x2786, 0x2787, 0x2788, 0x2789, 0x278a, 0x278b, 0x278c, 0x278d, 0x278e, 0x278f, 
-/* 9_ */ 0x2790, 0x2791, 0x2792, 0x2793, 0x2794, 0x2795, 0x2796, 0x2797, 0x2798, 0x2799, 0x279a, 0x279b, 0x279c, 0x279d, 0x279e, 0x279f, 
-/* A_ */ 0x27a0, 0x27a1, 0x27a2, 0x27a3, 0x27a4, 0x27a5, 0x27a6, 0x27a7, 0x27a8, 0x27a9, 0x27aa, 0x27ab, 0x27ac, 0x27ad, 0x27ae, 0x27af, 
-/* B_ */ 0x27b0, 0x27b1, 0x27b2, 0x27b3, 0x27b4, 0x27b5, 0x27b6, 0x27b7, 0x27b8, 0x27b9, 0x27ba, 0x27bb, 0x27bc, 0x27bd, 0x27be, 0x27bf, 
-/* C_ */ 0x27c0, 0x27c1, 0x27c2, 0x27c4, 0x27c3, 0x27c6, 0x27c5, 0x27c7, 0x27c8, 0x27c9, 0x27ca, 0x27cb, 0x27cc, 0x27cd, 0x27ce, 0x27cf, 
-/* D_ */ 0x27d0, 0x27d1, 0x27d2, 0x27d3, 0x27d4, 0x27d6, 0x27d5, 0x27d7, 0x27d8, 0x27d9, 0x27da, 0x27db, 0x27dc, 0x27de, 0x27dd, 0x27df, 
-/* E_ */ 0x27e0, 0x27e1, 0x27e3, 0x27e2, 0x27e5, 0x27e4, 0x27e7, 0x27e6, 0x27e9, 0x27e8, 0x27eb, 0x27ea, 0x27ec, 0x27ed, 0x27ee, 0x27ef, 
-/* F_ */ 0x27f0, 0x27f1, 0x27f2, 0x27f3, 0x27f4, 0x27f5, 0x27f6, 0x27f7, 0x27f8, 0x27f9, 0x27fa, 0x27fb, 0x27fc, 0x27fd, 0x27fe, 0x27ff
- },
- {
-/* Block U29__ */
-/*           _0      _1      _2      _3      _4      _5      _6      _7      _8      _9      _A      _B      _C      _D      _E      _F */
-/* 0_ */ 0x2900, 0x2901, 0x2902, 0x2903, 0x2904, 0x2905, 0x2906, 0x2907, 0x2908, 0x2909, 0x290a, 0x290b, 0x290c, 0x290d, 0x290e, 0x290f, 
-/* 1_ */ 0x2910, 0x2911, 0x2912, 0x2913, 0x2914, 0x2915, 0x2916, 0x2917, 0x2918, 0x2919, 0x291a, 0x291b, 0x291c, 0x291d, 0x291e, 0x291f, 
-/* 2_ */ 0x2920, 0x2921, 0x2922, 0x2923, 0x2924, 0x2925, 0x2926, 0x2927, 0x2928, 0x2929, 0x292a, 0x292b, 0x292c, 0x292d, 0x292e, 0x292f, 
-/* 3_ */ 0x2930, 0x2931, 0x2932, 0x2933, 0x2934, 0x2935, 0x2936, 0x2937, 0x2938, 0x2939, 0x293a, 0x293b, 0x293c, 0x293d, 0x293e, 0x293f, 
-/* 4_ */ 0x2940, 0x2941, 0x2942, 0x2943, 0x2944, 0x2945, 0x2946, 0x2947, 0x2948, 0x2949, 0x294a, 0x294b, 0x294c, 0x294d, 0x294e, 0x294f, 
-/* 5_ */ 0x2950, 0x2951, 0x2952, 0x2953, 0x2954, 0x2955, 0x2956, 0x2957, 0x2958, 0x2959, 0x295a, 0x295b, 0x295c, 0x295d, 0x295e, 0x295f, 
-/* 6_ */ 0x2960, 0x2961, 0x2962, 0x2963, 0x2964, 0x2965, 0x2966, 0x2967, 0x2968, 0x2969, 0x296a, 0x296b, 0x296c, 0x296d, 0x296e, 0x296f, 
-/* 7_ */ 0x2970, 0x2971, 0x2972, 0x2973, 0x2974, 0x2975, 0x2976, 0x2977, 0x2978, 0x2979, 0x297a, 0x297b, 0x297c, 0x297d, 0x297e, 0x297f, 
-/* 8_ */ 0x2980, 0x2981, 0x2982, 0x2984, 0x2983, 0x2986, 0x2985, 0x2988, 0x2987, 0x298a, 0x2989, 0x298c, 0x298b, 0x2990, 0x298f, 0x298e, 
-/* 9_ */ 0x298d, 0x2992, 0x2991, 0x2994, 0x2993, 0x2996, 0x2995, 0x2998, 0x2997, 0x2999, 0x299a, 0x299b, 0x299c, 0x299d, 0x299e, 0x299f, 
-/* A_ */ 0x29a0, 0x29a1, 0x29a2, 0x29a3, 0x29a4, 0x29a5, 0x29a6, 0x29a7, 0x29a8, 0x29a9, 0x29aa, 0x29ab, 0x29ac, 0x29ad, 0x29ae, 0x29af, 
-/* B_ */ 0x29b0, 0x29b1, 0x29b2, 0x29b3, 0x29b4, 0x29b5, 0x29b6, 0x29b7, 0x2298, 0x29b9, 0x29ba, 0x29bb, 0x29bc, 0x29bd, 0x29be, 0x29bf, 
-/* C_ */ 0x29c1, 0x29c0, 0x29c2, 0x29c3, 0x29c5, 0x29c4, 0x29c6, 0x29c7, 0x29c8, 0x29c9, 0x29ca, 0x29cb, 0x29cc, 0x29cd, 0x29ce, 0x29d0, 
-/* D_ */ 0x29cf, 0x29d2, 0x29d1, 0x29d3, 0x29d5, 0x29d4, 0x29d6, 0x29d7, 0x29d9, 0x29d8, 0x29db, 0x29da, 0x29dc, 0x29dd, 0x29de, 0x29df, 
-/* E_ */ 0x29e0, 0x29e1, 0x29e2, 0x29e3, 0x29e4, 0x29e5, 0x29e6, 0x29e7, 0x29e8, 0x29e9, 0x29ea, 0x29eb, 0x29ec, 0x29ed, 0x29ee, 0x29ef, 
-/* F_ */ 0x29f0, 0x29f1, 0x29f2, 0x29f3, 0x29f4, 0x2215, 0x29f6, 0x29f7, 0x29f9, 0x29f8, 0x29fa, 0x29fb, 0x29fd, 0x29fc, 0x29fe, 0x29ff
- },
- {
-/* Block U2A__ */
-/*           _0      _1      _2      _3      _4      _5      _6      _7      _8      _9      _A      _B      _C      _D      _E      _F */
-/* 0_ */ 0x2a00, 0x2a01, 0x2a02, 0x2a03, 0x2a04, 0x2a05, 0x2a06, 0x2a07, 0x2a08, 0x2a09, 0x2a0a, 0x2a0b, 0x2a0c, 0x2a0d, 0x2a0e, 0x2a0f, 
-/* 1_ */ 0x2a10, 0x2a11, 0x2a12, 0x2a13, 0x2a14, 0x2a15, 0x2a16, 0x2a17, 0x2a18, 0x2a19, 0x2a1a, 0x2a1b, 0x2a1c, 0x2a1d, 0x2a1e, 0x2a1f, 
-/* 2_ */ 0x2a20, 0x2a21, 0x2a22, 0x2a23, 0x2a24, 0x2a25, 0x2a26, 0x2a27, 0x2a28, 0x2a29, 0x2a2a, 0x2a2c, 0x2a2b, 0x2a2e, 0x2a2d, 0x2a2f, 
-/* 3_ */ 0x2a30, 0x2a31, 0x2a32, 0x2a33, 0x2a35, 0x2a34, 0x2a36, 0x2a37, 0x2a38, 0x2a39, 0x2a3a, 0x2a3b, 0x2a3d, 0x2a3c, 0x2a3e, 0x2a3f, 
-/* 4_ */ 0x2a40, 0x2a41, 0x2a42, 0x2a43, 0x2a44, 0x2a45, 0x2a46, 0x2a47, 0x2a48, 0x2a49, 0x2a4a, 0x2a4b, 0x2a4c, 0x2a4d, 0x2a4e, 0x2a4f, 
-/* 5_ */ 0x2a50, 0x2a51, 0x2a52, 0x2a53, 0x2a54, 0x2a55, 0x2a56, 0x2a57, 0x2a58, 0x2a59, 0x2a5a, 0x2a5b, 0x2a5c, 0x2a5d, 0x2a5e, 0x2a5f, 
-/* 6_ */ 0x2a60, 0x2a61, 0x2a62, 0x2a63, 0x2a65, 0x2a64, 0x2a66, 0x2a67, 0x2a68, 0x2a69, 0x2a6a, 0x2a6b, 0x2a6c, 0x2a6d, 0x2a6e, 0x2a6f, 
-/* 7_ */ 0x2a70, 0x2a71, 0x2a72, 0x2a73, 0x2a74, 0x2a75, 0x2a76, 0x2a77, 0x2a78, 0x2a7a, 0x2a79, 0x2a7b, 0x2a7c, 0x2a7e, 0x2a7d, 0x2a80, 
-/* 8_ */ 0x2a7f, 0x2a82, 0x2a81, 0x2a84, 0x2a83, 0x2a85, 0x2a86, 0x2a87, 0x2a88, 0x2a89, 0x2a8a, 0x2a8c, 0x2a8b, 0x2a8d, 0x2a8e, 0x2a8f, 
-/* 9_ */ 0x2a90, 0x2a92, 0x2a91, 0x2a94, 0x2a93, 0x2a96, 0x2a95, 0x2a98, 0x2a97, 0x2a9a, 0x2a99, 0x2a9c, 0x2a9b, 0x2a9d, 0x2a9e, 0x2a9f, 
-/* A_ */ 0x2aa0, 0x2aa2, 0x2aa1, 0x2aa3, 0x2aa4, 0x2aa5, 0x2aa7, 0x2aa6, 0x2aa9, 0x2aa8, 0x2aab, 0x2aaa, 0x2aad, 0x2aac, 0x2aae, 0x2ab0, 
-/* B_ */ 0x2aaf, 0x2ab1, 0x2ab2, 0x2ab4, 0x2ab3, 0x2ab5, 0x2ab6, 0x2ab7, 0x2ab8, 0x2ab9, 0x2aba, 0x2abc, 0x2abb, 0x2abe, 0x2abd, 0x2ac0, 
-/* C_ */ 0x2abf, 0x2ac2, 0x2ac1, 0x2ac4, 0x2ac3, 0x2ac6, 0x2ac5, 0x2ac7, 0x2ac8, 0x2ac9, 0x2aca, 0x2acb, 0x2acc, 0x2ace, 0x2acd, 0x2ad0, 
-/* D_ */ 0x2acf, 0x2ad2, 0x2ad1, 0x2ad4, 0x2ad3, 0x2ad6, 0x2ad5, 0x2ad7, 0x2ad8, 0x2ad9, 0x2ada, 0x2adb, 0x2adc, 0x2add, 0x22a6, 0x2adf, 
-/* E_ */ 0x2ae0, 0x2ae1, 0x2ae2, 0x22a9, 0x22a8, 0x22ab, 0x2ae6, 0x2ae7, 0x2ae8, 0x2ae9, 0x2aea, 0x2aeb, 0x2aed, 0x2aec, 0x2aee, 0x2aef, 
-/* F_ */ 0x2af0, 0x2af1, 0x2af2, 0x2af3, 0x2af4, 0x2af5, 0x2af6, 0x2af8, 0x2af7, 0x2afa, 0x2af9, 0x2afb, 0x2afc, 0x2afd, 0x2afe, 0x2aff
- },
- {
-/* Block U2E__ */
-/*           _0      _1      _2      _3      _4      _5      _6      _7      _8      _9      _A      _B      _C      _D      _E      _F */
-/* 0_ */ 0x2e00, 0x2e01, 0x2e03, 0x2e02, 0x2e05, 0x2e04, 0x2e06, 0x2e07, 0x2e08, 0x2e0a, 0x2e09, 0x2e0b, 0x2e0d, 0x2e0c, 0x2e0e, 0x2e0f, 
-/* 1_ */ 0x2e10, 0x2e11, 0x2e12, 0x2e13, 0x2e14, 0x2e15, 0x2e16, 0x2e17, 0x2e18, 0x2e19, 0x2e1a, 0x2e1b, 0x2e1d, 0x2e1c, 0x2e1e, 0x2e1f, 
-/* 2_ */ 0x2e20, 0x2e21, 0x2e22, 0x2e23, 0x2e24, 0x2e25, 0x2e26, 0x2e27, 0x2e28, 0x2e29, 0x2e2a, 0x2e2b, 0x2e2c, 0x2e2d, 0x2e2e, 0x2e2f, 
-/* 3_ */ 0x2e30, 0x2e31, 0x2e32, 0x2e33, 0x2e34, 0x2e35, 0x2e36, 0x2e37, 0x2e38, 0x2e39, 0x2e3a, 0x2e3b, 0x2e3c, 0x2e3d, 0x2e3e, 0x2e3f, 
-/* 4_ */ 0x2e40, 0x2e41, 0x2e42, 0x2e43, 0x2e44, 0x2e45, 0x2e46, 0x2e47, 0x2e48, 0x2e49, 0x2e4a, 0x2e4b, 0x2e4c, 0x2e4d, 0x2e4e, 0x2e4f, 
-/* 5_ */ 0x2e50, 0x2e51, 0x2e52, 0x2e53, 0x2e54, 0x2e55, 0x2e56, 0x2e57, 0x2e58, 0x2e59, 0x2e5a, 0x2e5b, 0x2e5c, 0x2e5d, 0x2e5e, 0x2e5f, 
-/* 6_ */ 0x2e60, 0x2e61, 0x2e62, 0x2e63, 0x2e64, 0x2e65, 0x2e66, 0x2e67, 0x2e68, 0x2e69, 0x2e6a, 0x2e6b, 0x2e6c, 0x2e6d, 0x2e6e, 0x2e6f, 
-/* 7_ */ 0x2e70, 0x2e71, 0x2e72, 0x2e73, 0x2e74, 0x2e75, 0x2e76, 0x2e77, 0x2e78, 0x2e79, 0x2e7a, 0x2e7b, 0x2e7c, 0x2e7d, 0x2e7e, 0x2e7f, 
-/* 8_ */ 0x2e80, 0x2e81, 0x2e82, 0x2e83, 0x2e84, 0x2e85, 0x2e86, 0x2e87, 0x2e88, 0x2e89, 0x2e8a, 0x2e8b, 0x2e8c, 0x2e8d, 0x2e8e, 0x2e8f, 
-/* 9_ */ 0x2e90, 0x2e91, 0x2e92, 0x2e93, 0x2e94, 0x2e95, 0x2e96, 0x2e97, 0x2e98, 0x2e99, 0x2e9a, 0x2e9b, 0x2e9c, 0x2e9d, 0x2e9e, 0x2e9f, 
-/* A_ */ 0x2ea0, 0x2ea1, 0x2ea2, 0x2ea3, 0x2ea4, 0x2ea5, 0x2ea6, 0x2ea7, 0x2ea8, 0x2ea9, 0x2eaa, 0x2eab, 0x2eac, 0x2ead, 0x2eae, 0x2eaf, 
-/* B_ */ 0x2eb0, 0x2eb1, 0x2eb2, 0x2eb3, 0x2eb4, 0x2eb5, 0x2eb6, 0x2eb7, 0x2eb8, 0x2eb9, 0x2eba, 0x2ebb, 0x2ebc, 0x2ebd, 0x2ebe, 0x2ebf, 
-/* C_ */ 0x2ec0, 0x2ec1, 0x2ec2, 0x2ec3, 0x2ec4, 0x2ec5, 0x2ec6, 0x2ec7, 0x2ec8, 0x2ec9, 0x2eca, 0x2ecb, 0x2ecc, 0x2ecd, 0x2ece, 0x2ecf, 
-/* D_ */ 0x2ed0, 0x2ed1, 0x2ed2, 0x2ed3, 0x2ed4, 0x2ed5, 0x2ed6, 0x2ed7, 0x2ed8, 0x2ed9, 0x2eda, 0x2edb, 0x2edc, 0x2edd, 0x2ede, 0x2edf, 
-/* E_ */ 0x2ee0, 0x2ee1, 0x2ee2, 0x2ee3, 0x2ee4, 0x2ee5, 0x2ee6, 0x2ee7, 0x2ee8, 0x2ee9, 0x2eea, 0x2eeb, 0x2eec, 0x2eed, 0x2eee, 0x2eef, 
-/* F_ */ 0x2ef0, 0x2ef1, 0x2ef2, 0x2ef3, 0x2ef4, 0x2ef5, 0x2ef6, 0x2ef7, 0x2ef8, 0x2ef9, 0x2efa, 0x2efb, 0x2efc, 0x2efd, 0x2efe, 0x2eff
- },
- {
-/* Block U30__ */
-/*           _0      _1      _2      _3      _4      _5      _6      _7      _8      _9      _A      _B      _C      _D      _E      _F */
-/* 0_ */ 0x3000, 0x3001, 0x3002, 0x3003, 0x3004, 0x3005, 0x3006, 0x3007, 0x3009, 0x3008, 0x300b, 0x300a, 0x300d, 0x300c, 0x300f, 0x300e, 
-/* 1_ */ 0x3011, 0x3010, 0x3012, 0x3013, 0x3015, 0x3014, 0x3017, 0x3016, 0x3019, 0x3018, 0x301b, 0x301a, 0x301c, 0x301e, 0x301d, 0x301f, 
-/* 2_ */ 0x3020, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027, 0x3028, 0x3029, 0x302a, 0x302b, 0x302c, 0x302d, 0x302e, 0x302f, 
-/* 3_ */ 0x3030, 0x3031, 0x3032, 0x3033, 0x3034, 0x3035, 0x3036, 0x3037, 0x3038, 0x3039, 0x303a, 0x303b, 0x303c, 0x303d, 0x303e, 0x303f, 
-/* 4_ */ 0x3040, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e, 0x304f, 
-/* 5_ */ 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058, 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x305f, 
-/* 6_ */ 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068, 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f, 
-/* 7_ */ 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078, 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x307f, 
-/* 8_ */ 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088, 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, 0x308f, 
-/* 9_ */ 0x3090, 0x3091, 0x3092, 0x3093, 0x3094, 0x3095, 0x3096, 0x3097, 0x3098, 0x3099, 0x309a, 0x309b, 0x309c, 0x309d, 0x309e, 0x309f, 
-/* A_ */ 0x30a0, 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7, 0x30a8, 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af, 
-/* B_ */ 0x30b0, 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7, 0x30b8, 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf, 
-/* C_ */ 0x30c0, 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7, 0x30c8, 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf, 
-/* D_ */ 0x30d0, 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7, 0x30d8, 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df, 
-/* E_ */ 0x30e0, 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7, 0x30e8, 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef, 
-/* F_ */ 0x30f0, 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0x30f7, 0x30f8, 0x30f9, 0x30fa, 0x30fb, 0x30fc, 0x30fd, 0x30fe, 0x30ff
- },
- {
-/* Block UFE__ */
-/*           _0      _1      _2      _3      _4      _5      _6      _7      _8      _9      _A      _B      _C      _D      _E      _F */
-/* 0_ */ 0xfe00, 0xfe01, 0xfe02, 0xfe03, 0xfe04, 0xfe05, 0xfe06, 0xfe07, 0xfe08, 0xfe09, 0xfe0a, 0xfe0b, 0xfe0c, 0xfe0d, 0xfe0e, 0xfe0f, 
-/* 1_ */ 0xfe10, 0xfe11, 0xfe12, 0xfe13, 0xfe14, 0xfe15, 0xfe16, 0xfe17, 0xfe18, 0xfe19, 0xfe1a, 0xfe1b, 0xfe1c, 0xfe1d, 0xfe1e, 0xfe1f, 
-/* 2_ */ 0xfe20, 0xfe21, 0xfe22, 0xfe23, 0xfe24, 0xfe25, 0xfe26, 0xfe27, 0xfe28, 0xfe29, 0xfe2a, 0xfe2b, 0xfe2c, 0xfe2d, 0xfe2e, 0xfe2f, 
-/* 3_ */ 0xfe30, 0xfe31, 0xfe32, 0xfe33, 0xfe34, 0xfe35, 0xfe36, 0xfe37, 0xfe38, 0xfe39, 0xfe3a, 0xfe3b, 0xfe3c, 0xfe3d, 0xfe3e, 0xfe3f, 
-/* 4_ */ 0xfe40, 0xfe41, 0xfe42, 0xfe43, 0xfe44, 0xfe45, 0xfe46, 0xfe47, 0xfe48, 0xfe49, 0xfe4a, 0xfe4b, 0xfe4c, 0xfe4d, 0xfe4e, 0xfe4f, 
-/* 5_ */ 0xfe50, 0xfe51, 0xfe52, 0xfe53, 0xfe54, 0xfe55, 0xfe56, 0xfe57, 0xfe58, 0xfe5a, 0xfe59, 0xfe5c, 0xfe5b, 0xfe5e, 0xfe5d, 0xfe5f, 
-/* 6_ */ 0xfe60, 0xfe61, 0xfe62, 0xfe63, 0xfe65, 0xfe64, 0xfe66, 0xfe67, 0xfe68, 0xfe69, 0xfe6a, 0xfe6b, 0xfe6c, 0xfe6d, 0xfe6e, 0xfe6f, 
-/* 7_ */ 0xfe70, 0xfe71, 0xfe72, 0xfe73, 0xfe74, 0xfe75, 0xfe76, 0xfe77, 0xfe78, 0xfe79, 0xfe7a, 0xfe7b, 0xfe7c, 0xfe7d, 0xfe7e, 0xfe7f, 
-/* 8_ */ 0xfe80, 0xfe81, 0xfe82, 0xfe83, 0xfe84, 0xfe85, 0xfe86, 0xfe87, 0xfe88, 0xfe89, 0xfe8a, 0xfe8b, 0xfe8c, 0xfe8d, 0xfe8e, 0xfe8f, 
-/* 9_ */ 0xfe90, 0xfe91, 0xfe92, 0xfe93, 0xfe94, 0xfe95, 0xfe96, 0xfe97, 0xfe98, 0xfe99, 0xfe9a, 0xfe9b, 0xfe9c, 0xfe9d, 0xfe9e, 0xfe9f, 
-/* A_ */ 0xfea0, 0xfea1, 0xfea2, 0xfea3, 0xfea4, 0xfea5, 0xfea6, 0xfea7, 0xfea8, 0xfea9, 0xfeaa, 0xfeab, 0xfeac, 0xfead, 0xfeae, 0xfeaf, 
-/* B_ */ 0xfeb0, 0xfeb1, 0xfeb2, 0xfeb3, 0xfeb4, 0xfeb5, 0xfeb6, 0xfeb7, 0xfeb8, 0xfeb9, 0xfeba, 0xfebb, 0xfebc, 0xfebd, 0xfebe, 0xfebf, 
-/* C_ */ 0xfec0, 0xfec1, 0xfec2, 0xfec3, 0xfec4, 0xfec5, 0xfec6, 0xfec7, 0xfec8, 0xfec9, 0xfeca, 0xfecb, 0xfecc, 0xfecd, 0xfece, 0xfecf, 
-/* D_ */ 0xfed0, 0xfed1, 0xfed2, 0xfed3, 0xfed4, 0xfed5, 0xfed6, 0xfed7, 0xfed8, 0xfed9, 0xfeda, 0xfedb, 0xfedc, 0xfedd, 0xfede, 0xfedf, 
-/* E_ */ 0xfee0, 0xfee1, 0xfee2, 0xfee3, 0xfee4, 0xfee5, 0xfee6, 0xfee7, 0xfee8, 0xfee9, 0xfeea, 0xfeeb, 0xfeec, 0xfeed, 0xfeee, 0xfeef, 
-/* F_ */ 0xfef0, 0xfef1, 0xfef2, 0xfef3, 0xfef4, 0xfef5, 0xfef6, 0xfef7, 0xfef8, 0xfef9, 0xfefa, 0xfefb, 0xfefc, 0xfefd, 0xfefe, 0xfeff
- },
- {
-/* Block UFF__ */
-/*           _0      _1      _2      _3      _4      _5      _6      _7      _8      _9      _A      _B      _C      _D      _E      _F */
-/* 0_ */ 0xff00, 0xff01, 0xff02, 0xff03, 0xff04, 0xff05, 0xff06, 0xff07, 0xff09, 0xff08, 0xff0a, 0xff0b, 0xff0c, 0xff0d, 0xff0e, 0xff0f, 
-/* 1_ */ 0xff10, 0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18, 0xff19, 0xff1a, 0xff1b, 0xff1e, 0xff1d, 0xff1c, 0xff1f, 
-/* 2_ */ 0xff20, 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27, 0xff28, 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f, 
-/* 3_ */ 0xff30, 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37, 0xff38, 0xff39, 0xff3a, 0xff3d, 0xff3c, 0xff3b, 0xff3e, 0xff3f, 
-/* 4_ */ 0xff40, 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47, 0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f, 
-/* 5_ */ 0xff50, 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0xff57, 0xff58, 0xff59, 0xff5a, 0xff5d, 0xff5c, 0xff5b, 0xff5e, 0xff60, 
-/* 6_ */ 0xff5f, 0xff61, 0xff63, 0xff62, 0xff64, 0xff65, 0xff66, 0xff67, 0xff68, 0xff69, 0xff6a, 0xff6b, 0xff6c, 0xff6d, 0xff6e, 0xff6f, 
-/* 7_ */ 0xff70, 0xff71, 0xff72, 0xff73, 0xff74, 0xff75, 0xff76, 0xff77, 0xff78, 0xff79, 0xff7a, 0xff7b, 0xff7c, 0xff7d, 0xff7e, 0xff7f, 
-/* 8_ */ 0xff80, 0xff81, 0xff82, 0xff83, 0xff84, 0xff85, 0xff86, 0xff87, 0xff88, 0xff89, 0xff8a, 0xff8b, 0xff8c, 0xff8d, 0xff8e, 0xff8f, 
-/* 9_ */ 0xff90, 0xff91, 0xff92, 0xff93, 0xff94, 0xff95, 0xff96, 0xff97, 0xff98, 0xff99, 0xff9a, 0xff9b, 0xff9c, 0xff9d, 0xff9e, 0xff9f, 
-/* A_ */ 0xffa0, 0xffa1, 0xffa2, 0xffa3, 0xffa4, 0xffa5, 0xffa6, 0xffa7, 0xffa8, 0xffa9, 0xffaa, 0xffab, 0xffac, 0xffad, 0xffae, 0xffaf, 
-/* B_ */ 0xffb0, 0xffb1, 0xffb2, 0xffb3, 0xffb4, 0xffb5, 0xffb6, 0xffb7, 0xffb8, 0xffb9, 0xffba, 0xffbb, 0xffbc, 0xffbd, 0xffbe, 0xffbf, 
-/* C_ */ 0xffc0, 0xffc1, 0xffc2, 0xffc3, 0xffc4, 0xffc5, 0xffc6, 0xffc7, 0xffc8, 0xffc9, 0xffca, 0xffcb, 0xffcc, 0xffcd, 0xffce, 0xffcf, 
-/* D_ */ 0xffd0, 0xffd1, 0xffd2, 0xffd3, 0xffd4, 0xffd5, 0xffd6, 0xffd7, 0xffd8, 0xffd9, 0xffda, 0xffdb, 0xffdc, 0xffdd, 0xffde, 0xffdf, 
-/* E_ */ 0xffe0, 0xffe1, 0xffe2, 0xffe3, 0xffe4, 0xffe5, 0xffe6, 0xffe7, 0xffe8, 0xffe9, 0xffea, 0xffeb, 0xffec, 0xffed, 0xffee, 0xffef, 
-/* F_ */ 0xfff0, 0xfff1, 0xfff2, 0xfff3, 0xfff4, 0xfff5, 0xfff6, 0xfff7, 0xfff8, 0xfff9, 0xfffa, 0xfffb, 0xfffc, 0xfffd, 0xfffe, 0xffff
- }
-};
-
-static PRUint32 Mirrored(PRUint32 u)
-{
-  if (u < 0x10000) {
-    PRUint8 index = symmtable_index[(u & 0xFFFFFF00) >> 8];
-    if (index) {
-      return symmtable[index - 1] [u & 0xFF];
-    }
-  }
-  return u;
-}
deleted file mode 100644
--- a/layout/tools/genbidicattable.pl
+++ /dev/null
@@ -1,403 +0,0 @@
-#!/usr/local/bin/perl
-#
-# ***** BEGIN LICENSE BLOCK *****
-# Version: MPL 1.1/GPL 2.0/LGPL 2.1
-#
-# The contents of this file are subject to the Mozilla Public License Version
-# 1.1 (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-# http://www.mozilla.org/MPL/
-#
-# Software distributed under the License is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
-# for the specific language governing rights and limitations under the
-# License.
-#
-# The Original Code is mozilla.org code.
-#
-# The Initial Developer of the Original Code is
-# IBM Corporation.
-# Portions created by the Initial Developer are Copyright (C) 2000
-# the Initial Developer. All Rights Reserved.
-#
-# Contributor(s):
-#
-# Alternatively, the contents of this file may be used under the terms of
-# either of the GNU General Public License Version 2 or later (the "GPL"),
-# or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
-# in which case the provisions of the GPL or the LGPL are applicable instead
-# of those above. If you wish to allow use of your version of this file only
-# under the terms of either the GPL or the LGPL, and not to allow others to
-# use your version of this file under the terms of the MPL, indicate your
-# decision by deleting the provisions above and replace them with the notice
-# and other provisions required by the GPL or the LGPL. If you do not delete
-# the provisions above, a recipient may use your version of this file under
-# the terms of any one of the MPL, the GPL or the LGPL.
-#
-# ***** END LICENSE BLOCK *****
-
-######################################################################
-#
-# Initial global variable
-#
-######################################################################
-
-%gcount = ();
-%pat = ();
-
-%map = (
-  "L"   =>  "1", # Left-to-Right			  	
-  "R"   =>  "2", # Right-to-Left			  
-  "AL"  =>  "3", # Right-to-Left Arabic		  
-  "AN"  =>  "4", # Arabic Number			  
-  "EN"  =>  "5", # European Number			  	
-  "ES"  =>  "6", # European Number Separator  
-  "ET"  =>  "7", # European Number Terminator 	
-  "CS"  =>  "8", # Common Number Separator	  
-  "ON"  =>  "9", # Other Neutrals             
-  "NSM" => "10", # Non-Spacing Mark			  
-  "BN"  => "11", # Boundary Neutral			  
-  "B"   => "12", # Paragraph Separator		  
-  "S"   => "13", # Segment Separator		  
-  "WS"  => "14", # Whitespace				  
-  "LRE" => "15", # Left-to-Right Embedding	  
-  "RLE" => "15", # Right-to-Left Embedding	  
-  "PDF" => "15", # Pop Directional Format	  
-  "LRO" => "15", # Left-to-Right Override	  	
-  "RLO" => "15"  # Right-to-Left Override	  	
-);
-
-%special = ();
-
-######################################################################
-#
-# Open the unicode database file
-#
-######################################################################
-open ( UNICODATA , "< UnicodeData-Latest.txt") 
-   || die "cannot find UnicodeData-Latest.txt";
-
-######################################################################
-#
-# Open the output file
-#
-######################################################################
-open ( OUT , "> ../base/bidicattable.h") 
-  || die "cannot open output ../base/src/bidicattable.h file";
-
-######################################################################
-#
-# Generate license and header
-#
-######################################################################
-$npl = <<END_OF_NPL;
-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
- *
- * ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is mozilla.org Code.
- *
- * The Initial Developer of the Original Code is
- * IBM Corporation.
- * Portions created by the Initial Developer are Copyright (C) 2000
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either of the GNU General Public License Version 2 or later (the "GPL"),
- * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-/* 
-    DO NOT EDIT THIS DOCUMENT !!! THIS DOCUMENT IS GENERATED BY
-    mozilla/layout/tools/genbidicattable.pl
- */
-END_OF_NPL
-print OUT $npl;
-print OUT "\n\n#include \"nscore.h\" \n\n";
-
-
-%bidicategory = ();
-%sh = ();
-%sl = ();
-%sc = ();
-
-######################################################################
-#
-# Process the file line by line
-#
-######################################################################
-while(<UNICODATA>) {
-   chop;
-   ######################################################################
-   #
-   # Get value from fields
-   #
-   ######################################################################
-   @f = split(/;/ , $_); 
-   $c = $f[0];   # The unicode value
-   $n = $f[1];   # The unicode name
-   $g = $f[2];   # The General Category 
-   $b = $f[4];   # The Bidi Category 
-
-   if(( substr($n, 0, 1) ne "<")  || ($n eq "<control>"))
-   {
-      #
-      # print $g;
-      # 
-     
-      $gcount{$b}++;
-      $bidicategory{$c} = $b;
-   } else {
-
-      # Handle special block
-      @pair=split(/, /,  $n );
-      $catnum = $map{$b};
-
-      # printf "[%s][%s] => %d\n", $pair[0], $pair[1], $catnum;
-      if( $pair[1] eq "First>") {
-         $sl{$pair[0]} = $c;
-         $sc{$pair[0]} = $catnum;
-      } elsif ( $pair[1] eq "Last>") {
-         $sh{$pair[0]} = $c;
-         if($sc{$pair[0]} ne $catnum)
-         {
-            print "WARNING !!!! error in handling special block\n\n";
-         }
-      } else {
-         print "WARNING !!!! error in handling special block\n\n";
-      }
-   }
-}
-
-# XXX - How can this be made more flexible as new blocks are added to the UCDB?
-
-@range = (
-  0x0000,   0x07ff, 
-  0x0900,   0x1b7f,
-  0x1d00,   0x2ddf,
-  0x2e00,   0x33ff,
-  0x4dc0,   0x4dff,
-  0xa000,   0xa87f,
-  0xf900,  0x1018f,
-  0x10300, 0x104ff,
-  0x10800, 0x1083f,
-  0x10900, 0x1091f,
-  0x10a00, 0x10a5f,
-  0x12000, 0x1247f,
-  0x1d000, 0x1d7ff,
-  0x2f800, 0x2fa1f,
-  0xe0000, 0xe01ff  
-);
-
-
-$totaldata = 0;
-
-$tt=($#range+1) / 2;
-@patarray = ();
-
-
-# This should improve performance: put all the patterns like 0x11111111, 0x22222222 etc at the beginning of the table.
-#  Since there are a lot of blocks with the same category, we should be able to save a lot of time extracting the digits
-for (0..15) {
-	$pattern = "0x".(sprintf("%X", $_) x 8);
-	$patarray[$_] = $pattern;
-	$pat{$pattern} = $_;
-}
-
-$newidx = 0x10;
-
-for($t = 1; $t <= $tt; $t++)
-{
-	$tl = $range[($t-1) * 2];
-	$th = $range[($t-1) * 2 + 1];
-	$ts = ( $th - $tl ) >> 3;
-	$totaldata += $ts + 1;
-	printf OUT "static PRUint8 gBidiCatIdx%d[%d] = {\n", $t, $ts + 1;
-	for($i = ($tl >> 3); $i <= ($th >> 3) ; $i ++ )
-	{
-      $data = 0;
-		      
-		for($j = 0; $j < 8 ; $j++)
-		{
-			#defaults for unassigned characters
-		        #see http://www.unicode.org/Public/UNIDATA/extracted/DerivedBidiClass.txt
-		        #and http://www.unicode.org/Public/UNIDATA/Blocks.txt
-			$test = ($i << 3) + $j;
-			if ((($test >= 0x0590) && ($test <= 0x5FF)) ||
-			    (($test >= 0x07C0) && ($test <= 0x8FF)) ||
-			    (($test >= 0xFB1D) && ($test <= 0xFB4F)) ||
-			    (($test >= 0x10800) && ($test <=0x10FFF)))
-			{
-				$default = $map{"R"};
-			} elsif ((($test >= 0x0600) && ($test <= 0x7BF)) ||
-				 (($test >= 0xFB50) && ($test <= 0xFDFF)) ||
-				 (($test >= 0xFE70) && ($test <= 0xFEFE)))
-			{
-				$default = $map{"AL"};
-			} else
-			{
-				$default = $map{"L"};
-			}
-			$k =  sprintf("%04X", (($i << 3) + $j));
-			
-			$cat =  $bidicategory{$k};
-			if( $cat eq "")
-			{
-				$data = $data +  ($default << (4*$j));
-			} else {
-				$data = $data +  ($map{$cat} << (4*$j));
-			}
-			
-		}
-		$pattern = sprintf("0x%08X", $data);
-   
-		$idx = $pat{$pattern};
-		unless( exists($pat{$pattern})){
-			$idx = $newidx++;
-			$patarray[$idx] = $pattern;
-			$pat{$pattern} = $idx;
-		}
-
-      printf OUT "    %3d,  /* U+%04X - U+%04X : %s */\n" , 
-                 $idx, ($i << 3),((($i +1)<< 3)-1), $pattern ;
-
-   
-   }
-   printf OUT "};\n\n";
-
-   if($t ne $tt)
-   {
-       $tl = $range[($t-1) * 2 + 1] + 1;
-       $th = $range[$t * 2] - 1;
-       for($i = ($tl >> 3); $i <= ($th >> 3) ; $i ++ )
-       {
-          $data = 0;
-          for($j = 0; $j < 8 ; $j++)
-          {
-             $k =  sprintf("%04X", (($i << 3) + $j));
-      
-             $cat =  $bidicategory{$k};
-             if( $cat ne "")
-             {
-                 $data = $data +  ($map{$cat} << (4*$j));
-             }
-          }
-          $pattern = sprintf("0x%08X", $data);
-          if($data ne 0)
-          {
-             print "WARNING, Unicode Database now contain characters" .
-                   "which we have not consider, change this program !!!\n\n";
-             printf "Problem- U+%04X - U+%04X range\n", ($i << 3),((($i +1)<< 3)-1);
-          }
-       }
-   }
-}
-
-
-if($newidx > 255)
-{
-  die "We have more than 255 patterns !!! - $newidx\n\n" .
-      "This program is now broken!!!\n\n\n";      
-
-}
-printf OUT "static PRUint32 gBidiCatPat[$newidx] = {\n";
-for($i = 0 ; $i < $newidx; $i++)
-{
-   printf OUT "    %s,  /* $i */\n", $patarray[$i] ;
-}
-printf OUT "};\n\n";
-$totaldata += $newidx * 4;
-
-printf OUT "static eBidiCategory GetBidiCat(PRUint32 u)\n{\n";
-printf OUT "    PRUint32 pat;\n";
-printf OUT "    PRUint16 patidx;\n\n";
-
-@special = keys(%sh);
-$sp = 0;
-foreach $s ( sort(@special) ) {
-	# don't bother to define the special blocks unless they have a different
-    #  value from the default they would be given if they were undefined
-	unless ($sc{$s} == $map{"L"}) {
-		unless ($sp++) {
-			%by_value = reverse %map;
-			printf OUT "    /*  Handle blocks which share the same category */\n\n";
-		}
-		printf OUT "    /* Handle %s block */\n", substr($s, 1);
-		printf OUT "    if((((PRUint32)0x%s)<=u)&&(u<=((PRUint32)0x%s))) \n", $sl{$s}, $sh{$s};
-		printf OUT "        return eBidiCat_$by_value{$sc{$s}}; \n\n";
-	}
-}
-
-printf OUT "    /*  Handle blocks which use index table mapping */   \n\n";
-for($t = 1; $t <= $tt; $t++)
-{
-   $tl = $range[($t-1) * 2];
-   $th = $range[($t-1) * 2 + 1];
-   if ($tl == 0) {
-	   printf OUT "    /* Handle U+%04X to U+%04X */\n", $tl, $th;
-	   printf OUT "    if (u<=((PRUint32)0x%04X)) {\n", $th;
-	   printf OUT "        patidx = gBidiCatIdx%d [( u  >> 3 )];\n", $t;
-   } else {
-	   printf OUT "    /* Handle U+%04X to U+%04X */\n", $tl, $th;
-	   printf OUT "    else if ((((PRUint32)0x%04X)<=u)&&(u<=((PRUint32)0x%04X))) {\n", $tl, $th;
-	   printf OUT "        patidx = gBidiCatIdx%d [( (u -(PRUint32) 0x%04X) >> 3 )];\n", $t, $tl;
-   }
-   printf OUT "    }\n\n";
-}
-printf OUT "    else {\n";
-printf OUT "      /* defaults for unassigned characters\n";
-printf OUT "       * see http://www.unicode.org/Public/UNIDATA/extracted/DerivedBidiClass.txt\n";
-printf OUT "       * and http://www.unicode.org/Public/UNIDATA/Blocks.txt\n";
-printf OUT "       */\n";
-printf OUT "      if (((u >= 0x0590) && (u <= 0x05FF)) ||\n";
-printf OUT "          ((u >= 0x07C0) && (u <= 0x08FF)) ||\n";
-printf OUT "          ((u >= 0xFB1D) && (u <= 0xFB4F)) ||\n";
-printf OUT "          ((u >= 0x10800) && (u <=0x10FFF)))\n";
-printf OUT "         return eBidiCat_R;\n";
-printf OUT "      else if (((u >= 0x0600) && (u <= 0x07BF)) ||\n";
-printf OUT "               ((u >= 0xFB50) && (u <= 0xFDFF)) ||\n";
-printf OUT "               ((u >= 0xFE70) && (u <= 0xFEFE)))\n";
-printf OUT "         return eBidiCat_AL;\n";
-printf OUT "      else\n";
-printf OUT "        return eBidiCat_L;\n";
-printf OUT "    }\n\n";
-
-printf OUT "    if (patidx < 0x10)\n";
-printf OUT "        return (eBidiCategory)patidx;\n";
-printf OUT "    else {\n";
-printf OUT "        pat = gBidiCatPat[patidx];\n";
-printf OUT "        return (eBidiCategory)((pat  >> ((u % 8) * 4)) & 0x0F);\n";
-printf OUT "    }\n}\n\n";
-
-printf OUT "/* total data size = $totaldata */\n";
-print "total = $totaldata\n";
-
-######################################################################
-#
-# Close files
-#
-######################################################################
-close(UNIDATA);
-close(OUT);
-
deleted file mode 100644
--- a/layout/tools/gensymmtable.pl
+++ /dev/null
@@ -1,177 +0,0 @@
-#!/usr/local/bin/perl
-#
-# ***** BEGIN LICENSE BLOCK *****
-# Version: MPL 1.1/GPL 2.0/LGPL 2.1
-#
-# The contents of this file are subject to the Mozilla Public License Version
-# 1.1 (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-# http://www.mozilla.org/MPL/
-#
-# Software distributed under the License is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
-# for the specific language governing rights and limitations under the
-# License.
-#
-# The Original Code is IBM code.
-#
-# The Initial Developer of the Original Code is
-# IBM. Portions created by IBM are Copyright (C) International Business Machines Corporation, 2000.  All Rights Reserved.
-# Portions created by the Initial Developer are Copyright (C) 2001
-# the Initial Developer. All Rights Reserved.
-#
-# Contributor(s):
-#   Simon Montagu
-#
-# Alternatively, the contents of this file may be used under the terms of
-# either of the GNU General Public License Version 2 or later (the "GPL"),
-# or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
-# in which case the provisions of the GPL or the LGPL are applicable instead
-# of those above. If you wish to allow use of your version of this file only
-# under the terms of either the GPL or the LGPL, and not to allow others to
-# use your version of this file under the terms of the MPL, indicate your
-# decision by deleting the provisions above and replace them with the notice
-# and other provisions required by the GPL or the LGPL. If you do not delete
-# the provisions above, a recipient may use your version of this file under
-# the terms of any one of the MPL, the GPL or the LGPL.
-#
-# ***** END LICENSE BLOCK *****
-
-# This program generates the header file symmtable.h from the Unicode
-# informative data file BidiMirroring.txt.
-# See the comments in that file for details of its structure and contents.
-#
-# At the moment we only handle cases where there is another Unicode
-# character whose glyph can serve as at least an adequate version of
-# the mirror image of the original character's glyph. This leaves open
-# the problem of how to provide mirrored glyphs for characters where
-# this is not the case.
-
-# Process the input file
-$ucp = "[0-9a-fA-F]{4}";               # Unicode code point (4 successive hex digits) as a pattern to match
-open ( UNICODATA , "< BidiMirroring.txt") 
-   || die "Cannot find BidiMirroring.txt.\
-The file should be avaiable here:\
-http://www.unicode.org/Public/UNIDATA/BidiMirroring.txt\n";
-
-while (<UNICODATA>) {
-	chop;
-  if (/^($ucp); ($ucp) # (.+)/) {      # If the line looks like this pattern
-                                       # (example: 0028; 0029 # LEFT PARENTHESIS)
-    if (hex($1) > 0xFFFF) {
-      printf "ALERT! %X There are now symmetric characters outside the BMP\n", $1;
-    }
-    @table[hex($1)]=hex($2);           # Enter the symmetric pair in the table
-    @isblock[hex(substr($1, 0, 2))]=1; # Remember this block
-  }
-}
-close(UNICODATA);
-
-# Generate license and header
-open ( OUT , "> ../base/symmtable.h") 
-  || die "cannot open output ../base/src/symmtable.h file";
-$npl = <<END_OF_NPL;
-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
- *
- * ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is IBM code.
- *
- * The Initial Developer of the Original Code is
- * International Business Machines Corporation.
- * Portions created by the Initial Developer are Copyright (C) 2000
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either the GNU General Public License Version 2 or later (the "GPL"), or
- * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
- 
-/* 
-    DO NOT EDIT THIS DOCUMENT !!! THIS DOCUMENT IS GENERATED BY
-    mozilla/layout/tools/gensymmtable.pl
- */
-END_OF_NPL
-print OUT $npl;
-
-# Generate data tables
-$indexed_blocks = 0;
-printf OUT "\n/* Indexes to symmtable by Unicode block */\n";
-printf OUT "const static PRUint8 symmtable_index[256] = {\n";
-print  OUT "/*       ";
-foreach $byte (0 .. 0xf) {
-  printf OUT "_%X ", $byte;
-}
-print OUT "*/\n";
-foreach $row (0 .. 0xf) {
-  printf OUT "/* %X_ */ ", $row;
-  foreach $byte (0 .. 0xf) {
-    if (@isblock[($row << 4) | ($byte)]) {
-      printf OUT " %d,", ++$indexed_blocks;
-    } else {
-      printf OUT " 0,";
-    }
-  }
-  print OUT "\n";
-}
-print OUT "};\n";
-
-printf OUT "const static PRUint16 symmtable[%d] [256] = {\n", ($indexed_blocks);
-foreach $block (0 .. 0xff) {
-  if (@isblock[$block]) {
-    if ($block != 0) {
-      printf OUT ",\n"
-    }
-    printf OUT " {\n/* Block U%02X__ */\n", $block;
-    print OUT "/*      ";
-    foreach $byte (0 .. 0xf) {
-      printf OUT "     _%X ", $byte;
-    }
-    print OUT "*/\n";
-    foreach $row (0 .. 0xf) {
-      printf OUT "/* %X_ */ ", $row;
-      foreach $byte (0 .. 0xf) {
-         $ix = ($block << 8) | ($row << 4) | ($byte);
-         printf OUT ("%#6x", (@table[$ix]) ? @table[$ix] : $ix);
-	 if ((($row << 4) | $byte) < 0xff) {
-	   print OUT ", ";
-	 }
-      }
-      print OUT "\n";
-    }
-    print OUT " }";
-  }
-}
-print OUT "\n};\n";
-
-# Generate conversion method
-print OUT "\nstatic PRUint32 Mirrored(PRUint32 u)\n{\n";
-print OUT "  if (u < 0x10000) {\n";
-print OUT "    PRUint8 index = symmtable_index[(u & 0xFFFFFF00) >> 8];\n";
-print OUT "    if (index) {\n";
-print OUT "      return symmtable[index - 1] [u & 0xFF];\n";
-print OUT "    }\n";
-print OUT "  }\n  return u;\n}\n";
-close(OUT);
--- a/layout/xul/base/src/tree/src/Makefile.in
+++ b/layout/xul/base/src/tree/src/Makefile.in
@@ -57,16 +57,17 @@ REQUIRES	= xpcom \
 		  xultmpl \
 		  rdf \
 		  necko \
 		  imglib2 \
 		  xpconnect \
 		  js \
 		  webshell \
 		  pref \
+		  unicharutil \
 		  $(NULL)
 
 CPPSRCS		= \
 		nsTreeBodyFrame.cpp \
 		nsTreeBoxObject.cpp \
 		nsTreeColFrame.cpp \
 		nsTreeColumns.cpp \
 		nsTreeContentView.cpp \
--- a/toolkit/library/Makefile.in
+++ b/toolkit/library/Makefile.in
@@ -137,16 +137,18 @@ CPPSRCS += \
 	$(NULL)
 
 GARBAGE	+= \
 	$(INTL_UNICHARUTIL_UTIL_LCPPSRCS) \
 	$(wildcard *.$(OBJ_SUFFIX)) \
 	dlldeps-javaxpcom.cpp \
 	$(NULL)
 
+LOCAL_INCLUDES += -I$(topsrcdir)/intl/unicharutil/util
+
 ifdef MOZ_RDF
 EXTRA_DEPS += \
 	$(topsrcdir)/rdf/util/src/objs.mk \
 	$(NULL)
 
 REQUIRES += \
 	rdf \
 	rdfutil \