mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
bug 210501 - implement case-folding support (ToUpper/Lower/Titlecase) for non-BMP characters (Unicode plane 1 and above). r=smontagu
--HG-- rename : intl/unicharutil/src/nsUnicodeProperties.cpp => intl/unicharutil/util/nsUnicodeProperties.cpp rename : intl/unicharutil/public/nsUnicodeProperties.h => intl/unicharutil/util/nsUnicodeProperties.h rename : intl/unicharutil/src/nsUnicodePropertyData.cpp => intl/unicharutil/util/nsUnicodePropertyData.cpp rename : intl/unicharutil/public/nsUnicodeScriptCodes.h => intl/unicharutil/util/nsUnicodeScriptCodes.h
This commit is contained in:
parent
8639633f44
commit
6309f03010
@ -49,8 +49,6 @@ EXPORTS = \
|
||||
nsIUGenCategory.h \
|
||||
nsUnicharUtilCIID.h \
|
||||
nsUnicodeNormalizer.h \
|
||||
nsUnicodeProperties.h \
|
||||
nsUnicodeScriptCodes.h \
|
||||
$(NULL)
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
@ -47,15 +47,12 @@ LIBRARY_NAME = ucharucomp_s
|
||||
FORCE_STATIC_LIB = 1
|
||||
LIBXUL_LIBRARY = 1
|
||||
|
||||
DEFINES += -DHB_DONT_DEFINE_STDINT
|
||||
|
||||
CPPSRCS = \
|
||||
nsCaseConversionImp2.cpp \
|
||||
nsCategoryImp.cpp \
|
||||
nsEntityConverter.cpp \
|
||||
nsSaveAsCharset.cpp \
|
||||
nsUnicodeNormalizer.cpp \
|
||||
nsUnicodeProperties.cpp \
|
||||
$(NULL)
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
@ -1,388 +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
|
||||
* Netscape Communications Corporation.
|
||||
* Portions created by the Initial Developer are Copyright (C) 1999
|
||||
* 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/intl/unicharutil/tools/gencasetable.pl
|
||||
*/
|
||||
#include "nscore.h"
|
||||
|
||||
static const PRUnichar gUpperToTitle[] = {
|
||||
0x01F1, 0x01F2,
|
||||
0x01C7, 0x01C8,
|
||||
0x01CA, 0x01CB,
|
||||
0x01C4, 0x01C5,
|
||||
};
|
||||
|
||||
static const PRUint32 gUpperToTitleItems = 4;
|
||||
|
||||
static const PRUint16 gToUpper[] =
|
||||
{ /* From To Every Diff */
|
||||
0x0061, ((0x19 << 8) | 0x01), 0xffe0 ,
|
||||
0x00b5, ((0x00 << 8) | 0x00), 0x02e7 ,
|
||||
0x00e0, ((0x16 << 8) | 0x01), 0xffe0 ,
|
||||
0x00f8, ((0x06 << 8) | 0x01), 0xffe0 ,
|
||||
0x00ff, ((0x00 << 8) | 0x00), 0x0079 ,
|
||||
0x0101, ((0x2e << 8) | 0x02), 0xffff ,
|
||||
0x0131, ((0x00 << 8) | 0x00), 0xff18 ,
|
||||
0x0133, ((0x04 << 8) | 0x02), 0xffff ,
|
||||
0x013a, ((0x0e << 8) | 0x02), 0xffff ,
|
||||
0x014b, ((0x2c << 8) | 0x02), 0xffff ,
|
||||
0x017a, ((0x04 << 8) | 0x02), 0xffff ,
|
||||
0x017f, ((0x00 << 8) | 0x00), 0xfed4 ,
|
||||
0x0180, ((0x00 << 8) | 0x00), 0x00c3 ,
|
||||
0x0183, ((0x02 << 8) | 0x02), 0xffff ,
|
||||
0x0188, ((0x04 << 8) | 0x04), 0xffff ,
|
||||
0x0192, ((0x00 << 8) | 0x00), 0xffff ,
|
||||
0x0195, ((0x00 << 8) | 0x00), 0x0061 ,
|
||||
0x0199, ((0x00 << 8) | 0x00), 0xffff ,
|
||||
0x019a, ((0x00 << 8) | 0x00), 0x00a3 ,
|
||||
0x019e, ((0x00 << 8) | 0x00), 0x0082 ,
|
||||
0x01a1, ((0x04 << 8) | 0x02), 0xffff ,
|
||||
0x01a8, ((0x05 << 8) | 0x05), 0xffff ,
|
||||
0x01b0, ((0x04 << 8) | 0x04), 0xffff ,
|
||||
0x01b6, ((0x03 << 8) | 0x03), 0xffff ,
|
||||
0x01bd, ((0x00 << 8) | 0x00), 0xffff ,
|
||||
0x01bf, ((0x00 << 8) | 0x00), 0x0038 ,
|
||||
0x01c5, ((0x00 << 8) | 0x00), 0xffff ,
|
||||
0x01c6, ((0x00 << 8) | 0x00), 0xfffe ,
|
||||
0x01c8, ((0x00 << 8) | 0x00), 0xffff ,
|
||||
0x01c9, ((0x00 << 8) | 0x00), 0xfffe ,
|
||||
0x01cb, ((0x00 << 8) | 0x00), 0xffff ,
|
||||
0x01cc, ((0x00 << 8) | 0x00), 0xfffe ,
|
||||
0x01ce, ((0x0e << 8) | 0x02), 0xffff ,
|
||||
0x01dd, ((0x00 << 8) | 0x00), 0xffb1 ,
|
||||
0x01df, ((0x10 << 8) | 0x02), 0xffff ,
|
||||
0x01f2, ((0x00 << 8) | 0x00), 0xffff ,
|
||||
0x01f3, ((0x00 << 8) | 0x00), 0xfffe ,
|
||||
0x01f5, ((0x04 << 8) | 0x04), 0xffff ,
|
||||
0x01fb, ((0x24 << 8) | 0x02), 0xffff ,
|
||||
0x0223, ((0x10 << 8) | 0x02), 0xffff ,
|
||||
0x023c, ((0x00 << 8) | 0x00), 0xffff ,
|
||||
0x023f, ((0x01 << 8) | 0x01), 0x2a3f ,
|
||||
0x0242, ((0x05 << 8) | 0x05), 0xffff ,
|
||||
0x0249, ((0x06 << 8) | 0x02), 0xffff ,
|
||||
0x0250, ((0x00 << 8) | 0x00), 0x2a1f ,
|
||||
0x0251, ((0x00 << 8) | 0x00), 0x2a1c ,
|
||||
0x0252, ((0x00 << 8) | 0x00), 0x2a1e ,
|
||||
0x0253, ((0x00 << 8) | 0x00), 0xff2e ,
|
||||
0x0254, ((0x00 << 8) | 0x00), 0xff32 ,
|
||||
0x0256, ((0x01 << 8) | 0x01), 0xff33 ,
|
||||
0x0259, ((0x00 << 8) | 0x00), 0xff36 ,
|
||||
0x025b, ((0x00 << 8) | 0x00), 0xff35 ,
|
||||
0x0260, ((0x00 << 8) | 0x00), 0xff33 ,
|
||||
0x0263, ((0x00 << 8) | 0x00), 0xff31 ,
|
||||
0x0265, ((0x00 << 8) | 0x00), 0xa528 ,
|
||||
0x0266, ((0x00 << 8) | 0x00), 0xa544 ,
|
||||
0x0268, ((0x00 << 8) | 0x00), 0xff2f ,
|
||||
0x0269, ((0x00 << 8) | 0x00), 0xff2d ,
|
||||
0x026b, ((0x00 << 8) | 0x00), 0x29f7 ,
|
||||
0x026f, ((0x00 << 8) | 0x00), 0xff2d ,
|
||||
0x0271, ((0x00 << 8) | 0x00), 0x29fd ,
|
||||
0x0272, ((0x00 << 8) | 0x00), 0xff2b ,
|
||||
0x0275, ((0x00 << 8) | 0x00), 0xff2a ,
|
||||
0x027d, ((0x00 << 8) | 0x00), 0x29e7 ,
|
||||
0x0280, ((0x03 << 8) | 0x03), 0xff26 ,
|
||||
0x0288, ((0x00 << 8) | 0x00), 0xff26 ,
|
||||
0x0289, ((0x00 << 8) | 0x00), 0xffbb ,
|
||||
0x028a, ((0x01 << 8) | 0x01), 0xff27 ,
|
||||
0x028c, ((0x00 << 8) | 0x00), 0xffb9 ,
|
||||
0x0292, ((0x00 << 8) | 0x00), 0xff25 ,
|
||||
0x0345, ((0x00 << 8) | 0x00), 0x0054 ,
|
||||
0x0371, ((0x02 << 8) | 0x02), 0xffff ,
|
||||
0x0377, ((0x00 << 8) | 0x00), 0xffff ,
|
||||
0x037b, ((0x02 << 8) | 0x01), 0x0082 ,
|
||||
0x03ac, ((0x00 << 8) | 0x00), 0xffda ,
|
||||
0x03ad, ((0x02 << 8) | 0x01), 0xffdb ,
|
||||
0x03b1, ((0x10 << 8) | 0x01), 0xffe0 ,
|
||||
0x03c2, ((0x00 << 8) | 0x00), 0xffe1 ,
|
||||
0x03c3, ((0x08 << 8) | 0x01), 0xffe0 ,
|
||||
0x03cc, ((0x00 << 8) | 0x00), 0xffc0 ,
|
||||
0x03cd, ((0x01 << 8) | 0x01), 0xffc1 ,
|
||||
0x03d0, ((0x00 << 8) | 0x00), 0xffc2 ,
|
||||
0x03d1, ((0x00 << 8) | 0x00), 0xffc7 ,
|
||||
0x03d5, ((0x00 << 8) | 0x00), 0xffd1 ,
|
||||
0x03d6, ((0x00 << 8) | 0x00), 0xffca ,
|
||||
0x03d7, ((0x00 << 8) | 0x00), 0xfff8 ,
|
||||
0x03d9, ((0x16 << 8) | 0x02), 0xffff ,
|
||||
0x03f0, ((0x00 << 8) | 0x00), 0xffaa ,
|
||||
0x03f1, ((0x00 << 8) | 0x00), 0xffb0 ,
|
||||
0x03f2, ((0x00 << 8) | 0x00), 0x0007 ,
|
||||
0x03f5, ((0x00 << 8) | 0x00), 0xffa0 ,
|
||||
0x03f8, ((0x03 << 8) | 0x03), 0xffff ,
|
||||
0x0430, ((0x1f << 8) | 0x01), 0xffe0 ,
|
||||
0x0450, ((0x0f << 8) | 0x01), 0xffb0 ,
|
||||
0x0461, ((0x20 << 8) | 0x02), 0xffff ,
|
||||
0x048b, ((0x34 << 8) | 0x02), 0xffff ,
|
||||
0x04c2, ((0x0c << 8) | 0x02), 0xffff ,
|
||||
0x04cf, ((0x00 << 8) | 0x00), 0xfff1 ,
|
||||
0x04d1, ((0x56 << 8) | 0x02), 0xffff ,
|
||||
0x0561, ((0x25 << 8) | 0x01), 0xffd0 ,
|
||||
0x1d79, ((0x00 << 8) | 0x00), 0x8a04 ,
|
||||
0x1d7d, ((0x00 << 8) | 0x00), 0x0ee6 ,
|
||||
0x1e01, ((0x94 << 8) | 0x02), 0xffff ,
|
||||
0x1e9b, ((0x00 << 8) | 0x00), 0xffc5 ,
|
||||
0x1ea1, ((0x5e << 8) | 0x02), 0xffff ,
|
||||
0x1f00, ((0x07 << 8) | 0x01), 0x0008 ,
|
||||
0x1f10, ((0x05 << 8) | 0x01), 0x0008 ,
|
||||
0x1f20, ((0x07 << 8) | 0x01), 0x0008 ,
|
||||
0x1f30, ((0x07 << 8) | 0x01), 0x0008 ,
|
||||
0x1f40, ((0x05 << 8) | 0x01), 0x0008 ,
|
||||
0x1f51, ((0x06 << 8) | 0x02), 0x0008 ,
|
||||
0x1f60, ((0x07 << 8) | 0x01), 0x0008 ,
|
||||
0x1f70, ((0x01 << 8) | 0x01), 0x004a ,
|
||||
0x1f72, ((0x03 << 8) | 0x01), 0x0056 ,
|
||||
0x1f76, ((0x01 << 8) | 0x01), 0x0064 ,
|
||||
0x1f78, ((0x01 << 8) | 0x01), 0x0080 ,
|
||||
0x1f7a, ((0x01 << 8) | 0x01), 0x0070 ,
|
||||
0x1f7c, ((0x01 << 8) | 0x01), 0x007e ,
|
||||
0x1f80, ((0x07 << 8) | 0x01), 0x0008 ,
|
||||
0x1f90, ((0x07 << 8) | 0x01), 0x0008 ,
|
||||
0x1fa0, ((0x07 << 8) | 0x01), 0x0008 ,
|
||||
0x1fb0, ((0x01 << 8) | 0x01), 0x0008 ,
|
||||
0x1fb3, ((0x00 << 8) | 0x00), 0x0009 ,
|
||||
0x1fbe, ((0x00 << 8) | 0x00), 0xe3db ,
|
||||
0x1fc3, ((0x00 << 8) | 0x00), 0x0009 ,
|
||||
0x1fd0, ((0x01 << 8) | 0x01), 0x0008 ,
|
||||
0x1fe0, ((0x01 << 8) | 0x01), 0x0008 ,
|
||||
0x1fe5, ((0x00 << 8) | 0x00), 0x0007 ,
|
||||
0x1ff3, ((0x00 << 8) | 0x00), 0x0009 ,
|
||||
0x214e, ((0x00 << 8) | 0x00), 0xffe4 ,
|
||||
0x2170, ((0x0f << 8) | 0x01), 0xfff0 ,
|
||||
0x2184, ((0x00 << 8) | 0x00), 0xffff ,
|
||||
0x24d0, ((0x19 << 8) | 0x01), 0xffe6 ,
|
||||
0x2c30, ((0x2e << 8) | 0x01), 0xffd0 ,
|
||||
0x2c61, ((0x00 << 8) | 0x00), 0xffff ,
|
||||
0x2c65, ((0x00 << 8) | 0x00), 0xd5d5 ,
|
||||
0x2c66, ((0x00 << 8) | 0x00), 0xd5d8 ,
|
||||
0x2c68, ((0x04 << 8) | 0x02), 0xffff ,
|
||||
0x2c73, ((0x03 << 8) | 0x03), 0xffff ,
|
||||
0x2c81, ((0x62 << 8) | 0x02), 0xffff ,
|
||||
0x2cec, ((0x02 << 8) | 0x02), 0xffff ,
|
||||
0x2cf3, ((0x00 << 8) | 0x00), 0xffff ,
|
||||
0x2d00, ((0x25 << 8) | 0x01), 0xe3a0 ,
|
||||
0x2d27, ((0x06 << 8) | 0x06), 0xe3a0 ,
|
||||
0xa641, ((0x2c << 8) | 0x02), 0xffff ,
|
||||
0xa681, ((0x16 << 8) | 0x02), 0xffff ,
|
||||
0xa723, ((0x0c << 8) | 0x02), 0xffff ,
|
||||
0xa733, ((0x3c << 8) | 0x02), 0xffff ,
|
||||
0xa77a, ((0x02 << 8) | 0x02), 0xffff ,
|
||||
0xa77f, ((0x08 << 8) | 0x02), 0xffff ,
|
||||
0xa78c, ((0x05 << 8) | 0x05), 0xffff ,
|
||||
0xa793, ((0x0e << 8) | 0x0e), 0xffff ,
|
||||
0xa7a3, ((0x06 << 8) | 0x02), 0xffff ,
|
||||
0xff41, ((0x19 << 8) | 0x01), 0xffe0
|
||||
};
|
||||
|
||||
static const PRUint32 gToUpperItems = 154;
|
||||
|
||||
static const PRUint16 gToLower[] =
|
||||
{ /* From To Every Diff */
|
||||
0x0041, ((0x19 << 8) | 0x01), 0x0020 ,
|
||||
0x00c0, ((0x16 << 8) | 0x01), 0x0020 ,
|
||||
0x00d8, ((0x06 << 8) | 0x01), 0x0020 ,
|
||||
0x0100, ((0x2e << 8) | 0x02), 0x0001 ,
|
||||
0x0130, ((0x00 << 8) | 0x00), 0xff39 ,
|
||||
0x0132, ((0x04 << 8) | 0x02), 0x0001 ,
|
||||
0x0139, ((0x0e << 8) | 0x02), 0x0001 ,
|
||||
0x014a, ((0x2c << 8) | 0x02), 0x0001 ,
|
||||
0x0178, ((0x00 << 8) | 0x00), 0xff87 ,
|
||||
0x0179, ((0x04 << 8) | 0x02), 0x0001 ,
|
||||
0x0181, ((0x00 << 8) | 0x00), 0x00d2 ,
|
||||
0x0182, ((0x02 << 8) | 0x02), 0x0001 ,
|
||||
0x0186, ((0x00 << 8) | 0x00), 0x00ce ,
|
||||
0x0187, ((0x00 << 8) | 0x00), 0x0001 ,
|
||||
0x0189, ((0x01 << 8) | 0x01), 0x00cd ,
|
||||
0x018b, ((0x00 << 8) | 0x00), 0x0001 ,
|
||||
0x018e, ((0x00 << 8) | 0x00), 0x004f ,
|
||||
0x018f, ((0x00 << 8) | 0x00), 0x00ca ,
|
||||
0x0190, ((0x00 << 8) | 0x00), 0x00cb ,
|
||||
0x0191, ((0x00 << 8) | 0x00), 0x0001 ,
|
||||
0x0193, ((0x00 << 8) | 0x00), 0x00cd ,
|
||||
0x0194, ((0x00 << 8) | 0x00), 0x00cf ,
|
||||
0x0196, ((0x00 << 8) | 0x00), 0x00d3 ,
|
||||
0x0197, ((0x00 << 8) | 0x00), 0x00d1 ,
|
||||
0x0198, ((0x00 << 8) | 0x00), 0x0001 ,
|
||||
0x019c, ((0x00 << 8) | 0x00), 0x00d3 ,
|
||||
0x019d, ((0x00 << 8) | 0x00), 0x00d5 ,
|
||||
0x019f, ((0x00 << 8) | 0x00), 0x00d6 ,
|
||||
0x01a0, ((0x04 << 8) | 0x02), 0x0001 ,
|
||||
0x01a6, ((0x00 << 8) | 0x00), 0x00da ,
|
||||
0x01a7, ((0x00 << 8) | 0x00), 0x0001 ,
|
||||
0x01a9, ((0x00 << 8) | 0x00), 0x00da ,
|
||||
0x01ac, ((0x00 << 8) | 0x00), 0x0001 ,
|
||||
0x01ae, ((0x00 << 8) | 0x00), 0x00da ,
|
||||
0x01af, ((0x00 << 8) | 0x00), 0x0001 ,
|
||||
0x01b1, ((0x01 << 8) | 0x01), 0x00d9 ,
|
||||
0x01b3, ((0x02 << 8) | 0x02), 0x0001 ,
|
||||
0x01b7, ((0x00 << 8) | 0x00), 0x00db ,
|
||||
0x01b8, ((0x04 << 8) | 0x04), 0x0001 ,
|
||||
0x01c4, ((0x00 << 8) | 0x00), 0x0002 ,
|
||||
0x01c5, ((0x00 << 8) | 0x00), 0x0001 ,
|
||||
0x01c7, ((0x00 << 8) | 0x00), 0x0002 ,
|
||||
0x01c8, ((0x00 << 8) | 0x00), 0x0001 ,
|
||||
0x01ca, ((0x00 << 8) | 0x00), 0x0002 ,
|
||||
0x01cb, ((0x10 << 8) | 0x02), 0x0001 ,
|
||||
0x01de, ((0x10 << 8) | 0x02), 0x0001 ,
|
||||
0x01f1, ((0x00 << 8) | 0x00), 0x0002 ,
|
||||
0x01f2, ((0x02 << 8) | 0x02), 0x0001 ,
|
||||
0x01f6, ((0x00 << 8) | 0x00), 0xff9f ,
|
||||
0x01f7, ((0x00 << 8) | 0x00), 0xffc8 ,
|
||||
0x01f8, ((0x26 << 8) | 0x02), 0x0001 ,
|
||||
0x0220, ((0x00 << 8) | 0x00), 0xff7e ,
|
||||
0x0222, ((0x10 << 8) | 0x02), 0x0001 ,
|
||||
0x023a, ((0x00 << 8) | 0x00), 0x2a2b ,
|
||||
0x023b, ((0x00 << 8) | 0x00), 0x0001 ,
|
||||
0x023d, ((0x00 << 8) | 0x00), 0xff5d ,
|
||||
0x023e, ((0x00 << 8) | 0x00), 0x2a28 ,
|
||||
0x0241, ((0x00 << 8) | 0x00), 0x0001 ,
|
||||
0x0243, ((0x00 << 8) | 0x00), 0xff3d ,
|
||||
0x0244, ((0x00 << 8) | 0x00), 0x0045 ,
|
||||
0x0245, ((0x00 << 8) | 0x00), 0x0047 ,
|
||||
0x0246, ((0x08 << 8) | 0x02), 0x0001 ,
|
||||
0x0370, ((0x02 << 8) | 0x02), 0x0001 ,
|
||||
0x0376, ((0x00 << 8) | 0x00), 0x0001 ,
|
||||
0x0386, ((0x00 << 8) | 0x00), 0x0026 ,
|
||||
0x0388, ((0x02 << 8) | 0x01), 0x0025 ,
|
||||
0x038c, ((0x00 << 8) | 0x00), 0x0040 ,
|
||||
0x038e, ((0x01 << 8) | 0x01), 0x003f ,
|
||||
0x0391, ((0x10 << 8) | 0x01), 0x0020 ,
|
||||
0x03a3, ((0x08 << 8) | 0x01), 0x0020 ,
|
||||
0x03cf, ((0x00 << 8) | 0x00), 0x0008 ,
|
||||
0x03d8, ((0x16 << 8) | 0x02), 0x0001 ,
|
||||
0x03f4, ((0x00 << 8) | 0x00), 0xffc4 ,
|
||||
0x03f7, ((0x00 << 8) | 0x00), 0x0001 ,
|
||||
0x03f9, ((0x00 << 8) | 0x00), 0xfff9 ,
|
||||
0x03fa, ((0x00 << 8) | 0x00), 0x0001 ,
|
||||
0x03fd, ((0x02 << 8) | 0x01), 0xff7e ,
|
||||
0x0400, ((0x0f << 8) | 0x01), 0x0050 ,
|
||||
0x0410, ((0x1f << 8) | 0x01), 0x0020 ,
|
||||
0x0460, ((0x20 << 8) | 0x02), 0x0001 ,
|
||||
0x048a, ((0x34 << 8) | 0x02), 0x0001 ,
|
||||
0x04c0, ((0x00 << 8) | 0x00), 0x000f ,
|
||||
0x04c1, ((0x0c << 8) | 0x02), 0x0001 ,
|
||||
0x04d0, ((0x56 << 8) | 0x02), 0x0001 ,
|
||||
0x0531, ((0x25 << 8) | 0x01), 0x0030 ,
|
||||
0x10a0, ((0x25 << 8) | 0x01), 0x1c60 ,
|
||||
0x10c7, ((0x06 << 8) | 0x06), 0x1c60 ,
|
||||
0x1e00, ((0x94 << 8) | 0x02), 0x0001 ,
|
||||
0x1e9e, ((0x00 << 8) | 0x00), 0xe241 ,
|
||||
0x1ea0, ((0x5e << 8) | 0x02), 0x0001 ,
|
||||
0x1f08, ((0x07 << 8) | 0x01), 0xfff8 ,
|
||||
0x1f18, ((0x05 << 8) | 0x01), 0xfff8 ,
|
||||
0x1f28, ((0x07 << 8) | 0x01), 0xfff8 ,
|
||||
0x1f38, ((0x07 << 8) | 0x01), 0xfff8 ,
|
||||
0x1f48, ((0x05 << 8) | 0x01), 0xfff8 ,
|
||||
0x1f59, ((0x06 << 8) | 0x02), 0xfff8 ,
|
||||
0x1f68, ((0x07 << 8) | 0x01), 0xfff8 ,
|
||||
0x1f88, ((0x07 << 8) | 0x01), 0xfff8 ,
|
||||
0x1f98, ((0x07 << 8) | 0x01), 0xfff8 ,
|
||||
0x1fa8, ((0x07 << 8) | 0x01), 0xfff8 ,
|
||||
0x1fb8, ((0x01 << 8) | 0x01), 0xfff8 ,
|
||||
0x1fba, ((0x01 << 8) | 0x01), 0xffb6 ,
|
||||
0x1fbc, ((0x00 << 8) | 0x00), 0xfff7 ,
|
||||
0x1fc8, ((0x03 << 8) | 0x01), 0xffaa ,
|
||||
0x1fcc, ((0x00 << 8) | 0x00), 0xfff7 ,
|
||||
0x1fd8, ((0x01 << 8) | 0x01), 0xfff8 ,
|
||||
0x1fda, ((0x01 << 8) | 0x01), 0xff9c ,
|
||||
0x1fe8, ((0x01 << 8) | 0x01), 0xfff8 ,
|
||||
0x1fea, ((0x01 << 8) | 0x01), 0xff90 ,
|
||||
0x1fec, ((0x00 << 8) | 0x00), 0xfff9 ,
|
||||
0x1ff8, ((0x01 << 8) | 0x01), 0xff80 ,
|
||||
0x1ffa, ((0x01 << 8) | 0x01), 0xff82 ,
|
||||
0x1ffc, ((0x00 << 8) | 0x00), 0xfff7 ,
|
||||
0x2126, ((0x00 << 8) | 0x00), 0xe2a3 ,
|
||||
0x212a, ((0x00 << 8) | 0x00), 0xdf41 ,
|
||||
0x212b, ((0x00 << 8) | 0x00), 0xdfba ,
|
||||
0x2132, ((0x00 << 8) | 0x00), 0x001c ,
|
||||
0x2160, ((0x0f << 8) | 0x01), 0x0010 ,
|
||||
0x2183, ((0x00 << 8) | 0x00), 0x0001 ,
|
||||
0x24b6, ((0x19 << 8) | 0x01), 0x001a ,
|
||||
0x2c00, ((0x2e << 8) | 0x01), 0x0030 ,
|
||||
0x2c60, ((0x00 << 8) | 0x00), 0x0001 ,
|
||||
0x2c62, ((0x00 << 8) | 0x00), 0xd609 ,
|
||||
0x2c63, ((0x00 << 8) | 0x00), 0xf11a ,
|
||||
0x2c64, ((0x00 << 8) | 0x00), 0xd619 ,
|
||||
0x2c67, ((0x04 << 8) | 0x02), 0x0001 ,
|
||||
0x2c6d, ((0x00 << 8) | 0x00), 0xd5e4 ,
|
||||
0x2c6e, ((0x00 << 8) | 0x00), 0xd603 ,
|
||||
0x2c6f, ((0x00 << 8) | 0x00), 0xd5e1 ,
|
||||
0x2c70, ((0x00 << 8) | 0x00), 0xd5e2 ,
|
||||
0x2c72, ((0x03 << 8) | 0x03), 0x0001 ,
|
||||
0x2c7e, ((0x01 << 8) | 0x01), 0xd5c1 ,
|
||||
0x2c80, ((0x62 << 8) | 0x02), 0x0001 ,
|
||||
0x2ceb, ((0x02 << 8) | 0x02), 0x0001 ,
|
||||
0x2cf2, ((0x00 << 8) | 0x00), 0x0001 ,
|
||||
0xa640, ((0x2c << 8) | 0x02), 0x0001 ,
|
||||
0xa680, ((0x16 << 8) | 0x02), 0x0001 ,
|
||||
0xa722, ((0x0c << 8) | 0x02), 0x0001 ,
|
||||
0xa732, ((0x3c << 8) | 0x02), 0x0001 ,
|
||||
0xa779, ((0x02 << 8) | 0x02), 0x0001 ,
|
||||
0xa77d, ((0x00 << 8) | 0x00), 0x75fc ,
|
||||
0xa77e, ((0x08 << 8) | 0x02), 0x0001 ,
|
||||
0xa78b, ((0x00 << 8) | 0x00), 0x0001 ,
|
||||
0xa78d, ((0x00 << 8) | 0x00), 0x5ad8 ,
|
||||
0xa790, ((0x02 << 8) | 0x02), 0x0001 ,
|
||||
0xa7a0, ((0x08 << 8) | 0x02), 0x0001 ,
|
||||
0xa7aa, ((0x00 << 8) | 0x00), 0x5abc ,
|
||||
0xff21, ((0x19 << 8) | 0x01), 0x0020
|
||||
};
|
||||
|
||||
static const PRUint32 gToLowerItems = 148;
|
||||
|
||||
static const PRUint32 gCaseBlocks [8] = {
|
||||
0xE001003F,
|
||||
0x00003012,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x000000C0,
|
||||
0x00000000,
|
||||
0x80000000
|
||||
};
|
||||
|
||||
// We map x -> x, except for upper-case letters,
|
||||
// which we map to their lower-case equivalents.
|
||||
static const PRUint8 gASCIIToLower [128] = {
|
||||
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
|
||||
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
|
||||
0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
|
||||
0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
|
||||
0x40, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
|
||||
0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
|
||||
0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
|
||||
0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
|
||||
};
|
@ -133,10 +133,12 @@ my @combining;
|
||||
my @eaw;
|
||||
my @mirror;
|
||||
my @hangul;
|
||||
my @casemap;
|
||||
for (my $i = 0; $i < 0x110000; ++$i) {
|
||||
$script[$i] = $scriptCode{"UNKNOWN"};
|
||||
$category[$i] = $catCode{"UNASSIGNED"};
|
||||
$combining[$i] = 0;
|
||||
$casemap[$i] = 0;
|
||||
}
|
||||
|
||||
my %ucd2hb = (
|
||||
@ -181,9 +183,16 @@ while (<FH>) {
|
||||
}
|
||||
close FH;
|
||||
|
||||
my $kTitleToUpper = 0x80000000;
|
||||
my $kUpperToLower = 0x40000000;
|
||||
my $kLowerToTitle = 0x20000000;
|
||||
my $kLowerToUpper = 0x10000000;
|
||||
my $kCaseMapCharMask = 0x001fffff;
|
||||
|
||||
# read UnicodeData.txt
|
||||
open FH, "< $ARGV[1]/UnicodeData.txt" or die "can't open UCD file UnicodeData.txt\n";
|
||||
while (<FH>) {
|
||||
chomp;
|
||||
my @fields = split /;/;
|
||||
if ($fields[1] =~ /First/) {
|
||||
my $first = hex "0x$fields[0]";
|
||||
@ -203,6 +212,27 @@ while (<FH>) {
|
||||
my $usv = hex "0x$fields[0]";
|
||||
$category[$usv] = $catCode{$ucd2hb{$fields[2]}};
|
||||
$combining[$usv] = $fields[3];
|
||||
my $upper = hex $fields[12];
|
||||
my $lower = hex $fields[13];
|
||||
my $title = hex $fields[14];
|
||||
# we only store one mapping for each character,
|
||||
# but also record what kind of mapping it is
|
||||
if ($upper && $lower) {
|
||||
$casemap[$usv] |= $kTitleToUpper;
|
||||
$casemap[$usv] |= ($usv ^ $upper);
|
||||
}
|
||||
elsif ($lower) {
|
||||
$casemap[$usv] |= $kUpperToLower;
|
||||
$casemap[$usv] |= ($usv ^ $lower);
|
||||
}
|
||||
elsif ($title && ($title != $upper)) {
|
||||
$casemap[$usv] |= $kLowerToTitle;
|
||||
$casemap[$usv] |= ($usv ^ $title);
|
||||
}
|
||||
elsif ($upper) {
|
||||
$casemap[$usv] |= $kLowerToUpper;
|
||||
$casemap[$usv] |= ($usv ^ $upper);
|
||||
}
|
||||
}
|
||||
}
|
||||
close FH;
|
||||
@ -393,7 +423,7 @@ sub sprintScript
|
||||
my $usv = shift;
|
||||
return sprintf("%d,", $script[$usv]);
|
||||
}
|
||||
&genTables("Script", "PRUint8", 10, 6, \&sprintScript, 1);
|
||||
&genTables("Script", "PRUint8", 10, 6, \&sprintScript, 16);
|
||||
|
||||
sub sprintCC
|
||||
{
|
||||
@ -423,7 +453,7 @@ sub sprintCatEAW
|
||||
return sprintf("{%d,%d},", $eaw[$usv], $category[$usv]);
|
||||
}
|
||||
&genTables("CatEAW", "struct {\n unsigned char mEAW:3;\n unsigned char mCategory:5;\n}",
|
||||
9, 7, \&sprintCatEAW, 1);
|
||||
9, 7, \&sprintCatEAW, 16);
|
||||
|
||||
sub sprintHangulType
|
||||
{
|
||||
@ -432,10 +462,24 @@ sub sprintHangulType
|
||||
}
|
||||
&genTables("Hangul", "PRUint8", 10, 6, \&sprintHangulType, 0);
|
||||
|
||||
sub sprintCasemap
|
||||
{
|
||||
my $usv = shift;
|
||||
return sprintf("0x%08x,", $casemap[$usv]);
|
||||
}
|
||||
&genTables("CaseMap", "PRUint32", 11, 5, \&sprintCasemap, 1);
|
||||
|
||||
printf DATA_TABLES "const PRUint32 kTitleToUpper = 0x%08x;\n", $kTitleToUpper;
|
||||
printf DATA_TABLES "const PRUint32 kUpperToLower = 0x%08x;\n", $kUpperToLower;
|
||||
printf DATA_TABLES "const PRUint32 kLowerToTitle = 0x%08x;\n", $kLowerToTitle;
|
||||
printf DATA_TABLES "const PRUint32 kLowerToUpper = 0x%08x;\n", $kLowerToUpper;
|
||||
printf DATA_TABLES "const PRUint32 kCaseMapCharMask = 0x%08x;\n\n", $kCaseMapCharMask;
|
||||
|
||||
sub genTables
|
||||
{
|
||||
my ($prefix, $type, $indexBits, $charBits, $func, $smp) = @_;
|
||||
my ($prefix, $type, $indexBits, $charBits, $func, $maxPlane) = @_;
|
||||
|
||||
print DATA_TABLES "#define k${prefix}MaxPlane $maxPlane\n";
|
||||
print DATA_TABLES "#define k${prefix}IndexBits $indexBits\n";
|
||||
print DATA_TABLES "#define k${prefix}CharBits $charBits\n";
|
||||
|
||||
@ -446,8 +490,8 @@ sub genTables
|
||||
my @pageMap = ();
|
||||
my @char = ();
|
||||
|
||||
my $planeMap = "\x00" x 16;
|
||||
foreach my $plane (0 .. ($smp ? 16 : 0)) {
|
||||
my $planeMap = "\x00" x $maxPlane;
|
||||
foreach my $plane (0 .. $maxPlane) {
|
||||
my $pageMap = "\x00" x $indexLen * 2;
|
||||
foreach my $page (0 .. $indexLen - 1) {
|
||||
my $charValues = "";
|
||||
@ -473,8 +517,8 @@ sub genTables
|
||||
}
|
||||
}
|
||||
|
||||
if ($smp) {
|
||||
print DATA_TABLES "static const PRUint8 s${prefix}Planes[16] = {";
|
||||
if ($maxPlane) {
|
||||
print DATA_TABLES "static const PRUint8 s${prefix}Planes[$maxPlane] = {";
|
||||
print DATA_TABLES join(',', map { sprintf("%d", $_) } unpack('C*', $planeMap));
|
||||
print DATA_TABLES "};\n\n";
|
||||
}
|
||||
@ -498,7 +542,9 @@ sub genTables
|
||||
}
|
||||
print DATA_TABLES "};\n\n";
|
||||
|
||||
print STDERR "Data for $prefix = ", $pmCount*$indexLen*$pmBits/8 + $chCount*$dataLen + 16, "\n";
|
||||
print STDERR "Data for $prefix = ", $pmCount*$indexLen*$pmBits/8 +
|
||||
$chCount*$dataLen*(($type =~ /32/) ? 4 : 1) +
|
||||
$maxPlane, "\n";
|
||||
}
|
||||
|
||||
print DATA_TABLES <<__END;
|
||||
|
@ -1,430 +0,0 @@
|
||||
#!/usr/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
|
||||
# Netscape Communications Corporation.
|
||||
# Portions created by the Initial Developer are Copyright (C) 1999
|
||||
# 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 *****
|
||||
|
||||
# If you run this script because the Unicode standard has been updated,
|
||||
# check xpcom/string/public/nsCharTraits.h to see whether
|
||||
# nsCharTraits<PRUnichar>::ASCIIToLower needs to be updated. It only
|
||||
# needs to be update if the Unicode consortium adds (or removes)
|
||||
# a Unicode character whose lowercase form is an ASCII character.
|
||||
# Currently there are only two such characters: KELVIN SIGN and
|
||||
# LATIN CAPITAL LETTER I WITH DOT ABOVE.
|
||||
|
||||
######################################################################
|
||||
#
|
||||
# Initial global variable
|
||||
#
|
||||
######################################################################
|
||||
%utot = ();
|
||||
$ui=0;
|
||||
$li=0;
|
||||
|
||||
######################################################################
|
||||
#
|
||||
# Open the unicode database file
|
||||
#
|
||||
######################################################################
|
||||
open ( UNICODATA , "< UnicodeData-Latest.txt")
|
||||
|| die "cannot find UnicodeData-Latest.txt";
|
||||
|
||||
######################################################################
|
||||
#
|
||||
# Open the output file
|
||||
#
|
||||
######################################################################
|
||||
open ( OUT , "> ../src/casetable.h")
|
||||
|| die "cannot open output ../src/casetable.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
|
||||
* Netscape Communications Corporation.
|
||||
* Portions created by the Initial Developer are Copyright (C) 1999
|
||||
* 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/intl/unicharutil/tools/gencasetable.pl
|
||||
*/
|
||||
END_OF_NPL
|
||||
print OUT $npl;
|
||||
|
||||
print OUT "#include \"nscore.h\" \n\n";
|
||||
|
||||
######################################################################
|
||||
#
|
||||
# Process the file line by line
|
||||
#
|
||||
######################################################################
|
||||
while(<UNICODATA>) {
|
||||
chop;
|
||||
######################################################################
|
||||
#
|
||||
# Get value from fields
|
||||
#
|
||||
######################################################################
|
||||
@f = split(/;/ , $_);
|
||||
$c = $f[0]; # The unicode value
|
||||
$u = $f[12]; # The upper case
|
||||
$l = $f[13]; # The lower case
|
||||
$t = $f[14]; # The title case
|
||||
|
||||
#
|
||||
# print $c . " | " . $u . " | " . $l . " | " . $t . "\n";
|
||||
#
|
||||
|
||||
######################################################################
|
||||
#
|
||||
# Process title case for this entry
|
||||
#
|
||||
######################################################################
|
||||
#
|
||||
# if upper case is not equal to title case , store into
|
||||
# %utot hash
|
||||
#
|
||||
|
||||
if(($t ne "") && ($u ne "") && ( $u ne $t )) {
|
||||
#
|
||||
# print $c . " | " . $u . " | " . $l . " | " . $t . "\n";
|
||||
#
|
||||
$utot{$u} = $t;
|
||||
}
|
||||
|
||||
$cv = hex($c); # convert the Unicode value into integer
|
||||
|
||||
######################################################################
|
||||
#
|
||||
# Process upper case for this entry
|
||||
#
|
||||
######################################################################
|
||||
if( $u ne "") { # if upper case exist
|
||||
$uvalue = hex($u); # convert the upper case value into integer
|
||||
|
||||
######################################################################
|
||||
# store related information into arrays
|
||||
# @ucv - unicode value
|
||||
# @uv - upper case value (debug only)
|
||||
# @ud - difference between unicode and upper case
|
||||
# @ulastd - difference between unicode and last unicode in the entry
|
||||
######################################################################
|
||||
|
||||
$ucv[$ui] = $cv;
|
||||
$uv[$ui] = $uvalue;
|
||||
$ud[$ui] = 0x0000FFFF & ($uvalue - $cv);
|
||||
|
||||
if( $ui ne 0) {
|
||||
$ulastd[$ui] = $cv - $ucv[$ui-1];
|
||||
}
|
||||
$ui++;
|
||||
}
|
||||
|
||||
######################################################################
|
||||
#
|
||||
# Process lower case for this entry
|
||||
#
|
||||
######################################################################
|
||||
if( $l ne "") { # if lower case exist
|
||||
$lvalue = hex($l); # convert the lower case value into integer
|
||||
|
||||
######################################################################
|
||||
# store related information into arrays
|
||||
# @lcv - unicode value
|
||||
# @lv - lower case value (debug only)
|
||||
# @ld - difference between unicode and lower case
|
||||
# @llastd - difference between unicode and last unicode in the entry
|
||||
######################################################################
|
||||
|
||||
$lcv[$li] = $cv;
|
||||
$lv[$li] = $lvalue;
|
||||
$ld[$li] = 0x0000FFFF & ($lvalue - $cv);
|
||||
|
||||
if( $li ne 0) {
|
||||
$llastd[$li] = $cv - $lcv[$li-1];
|
||||
}
|
||||
$li++;
|
||||
}
|
||||
if(( $l ne "") || ($u ne "")) { # if lower or upper case exist
|
||||
$idx = $cv >> 13;
|
||||
$bits = 1 << (($cv >> 8) & 0x1F) ;
|
||||
$blk[$idx] |= $bits;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
######################################################################
|
||||
#
|
||||
# Print out all the tables
|
||||
#
|
||||
######################################################################
|
||||
|
||||
######################################################################
|
||||
#
|
||||
# Print out upper to title case mapping
|
||||
#
|
||||
######################################################################
|
||||
|
||||
$ttotal = 0;
|
||||
print OUT "static const PRUnichar gUpperToTitle[] = { \n";
|
||||
while(($upper, $title) = each(%utot)) {
|
||||
print OUT " 0x" . $upper . ", 0x" . $utot{$upper} . ", \n";
|
||||
$ttotal++;
|
||||
}
|
||||
print OUT "};\n\n";
|
||||
print OUT "static const PRUint32 gUpperToTitleItems = $ttotal;\n\n";
|
||||
|
||||
######################################################################
|
||||
#
|
||||
# Print out gToUpper table
|
||||
#
|
||||
######################################################################
|
||||
print OUT "static const PRUint16 gToUpper[] = \n";
|
||||
print OUT "{ /* From To Every Diff */ \n";
|
||||
$utotal=0;
|
||||
$ufrom = 0; # remember the start of the output item
|
||||
for ($i = 0; $i <= $#ucv; $i++)
|
||||
{
|
||||
if(0 eq $i) {
|
||||
######################################################################
|
||||
#
|
||||
# Print the first item in the array
|
||||
#
|
||||
######################################################################
|
||||
$ufrom = $ucv[0];
|
||||
printf OUT " 0x%04x, " , $ucv[0];
|
||||
} else {
|
||||
######################################################################
|
||||
#
|
||||
# Print all the item except the first and last one
|
||||
# only print if the upper case difference is different from the
|
||||
# and the difference between last entry changed
|
||||
#
|
||||
######################################################################
|
||||
if(($ud[$i] ne $ud[$i-1]) ||
|
||||
(($ucv[$i] - $ucv[$i-1]) > 255) ||
|
||||
(($ufrom ne $ucv[$i-1]) && ($ulastd[$i] ne $ulastd[$i-1]))) {
|
||||
|
||||
$every = 0;
|
||||
if($ufrom ne $ucv[$i-1])
|
||||
{
|
||||
$every = $ulastd[$i-1];
|
||||
}
|
||||
|
||||
printf OUT "((0x%02x << 8) | 0x%02x), 0x%04x ,\n",
|
||||
($ucv[$i-1] - $ufrom), $every, $ud[$i-1];
|
||||
|
||||
if((($ucv[$i-1] - $ufrom) > 255) || ($every > 255)) {
|
||||
print "WARNING!!! cannot handle block > 255 chars (Upper)\n\n";
|
||||
printf "0x%04X, 0x%04x, 0x%04x), 0x%04x \n",
|
||||
$ufrom, $ucv[$i-1], $every, $ud[$i-1];
|
||||
}
|
||||
|
||||
$ufrom = $ucv[$i]; # update the start of the item
|
||||
printf OUT " 0x%04x, " , $ufrom;
|
||||
$utotal++;
|
||||
}
|
||||
}
|
||||
if( $i eq $#ucv) {
|
||||
######################################################################
|
||||
#
|
||||
# Print the last item in the array
|
||||
#
|
||||
######################################################################
|
||||
printf OUT "((0x%02x << 8) | 0x%02x), 0x%04x \n};\n\n",
|
||||
($ucv[$i] - $ufrom), $ulastd[$i], $ud[$i];
|
||||
$utotal++;
|
||||
print OUT "static const PRUint32 gToUpperItems = $utotal;\n\n";
|
||||
}
|
||||
#
|
||||
# printf "%4x - %4x - %4x - %4x\n", $ucv[$i], $uv[$i], $ud[$i], $ulastd[$i];
|
||||
#
|
||||
}
|
||||
|
||||
######################################################################
|
||||
#
|
||||
# Print out gToLower table
|
||||
#
|
||||
######################################################################
|
||||
print OUT "static const PRUint16 gToLower[] = \n";
|
||||
print OUT "{ /* From To Every Diff */ \n";
|
||||
$ltotal=0;
|
||||
$lfrom = 0; # remember the start of the output item
|
||||
for ($i = 0; $i <= $#lcv; $i++)
|
||||
{
|
||||
if(0 eq $i) {
|
||||
######################################################################
|
||||
#
|
||||
# Print the first item in the array
|
||||
#
|
||||
######################################################################
|
||||
$lfrom = $lcv[0];
|
||||
printf OUT " 0x%04x, " , $lcv[0];
|
||||
} else {
|
||||
######################################################################
|
||||
#
|
||||
# Print all the item except the first and last one
|
||||
# only print if the lower case difference is different from the
|
||||
# and the difference between last entry changed
|
||||
#
|
||||
######################################################################
|
||||
if(($ld[$i] ne $ld[$i-1]) ||
|
||||
(($lcv[$i] - $lcv[$i-1]) > 255) ||
|
||||
(($lfrom ne $lcv[$i-1]) && ($llastd[$i] ne $llastd[$i-1]))) {
|
||||
|
||||
$every = 0;
|
||||
if($lfrom ne $lcv[$i-1])
|
||||
{
|
||||
$every = $llastd[$i-1];
|
||||
}
|
||||
|
||||
printf OUT "((0x%02x << 8) | 0x%02x), 0x%04x ,\n",
|
||||
($lcv[$i-1] - $lfrom) , $every, $ld[$i-1];
|
||||
|
||||
if((($lcv[$i-1] - $lfrom) > 255) || ($every > 255)) {
|
||||
print "WARNING!!! cannot handle block > 255 chars (Lower)\n\n";
|
||||
printf "0x%04X, 0x%04x, 0x%04x, 0x%04x \n",
|
||||
$lfrom, $lcv[$i-1], $every, $ld[$i-1];
|
||||
}
|
||||
$lfrom = $lcv[$i]; # update the start of the item
|
||||
printf OUT " 0x%04x, " , $lfrom;
|
||||
$ltotal++;
|
||||
}
|
||||
}
|
||||
if( $i eq $#lcv) {
|
||||
######################################################################
|
||||
#
|
||||
# Print the last item in the array
|
||||
#
|
||||
######################################################################
|
||||
printf OUT "((0x%02x << 8) | 0x%02x), 0x%04x \n};\n\n",
|
||||
($lcv[$i] - $lfrom), $llastd[$i], $ld[$i];
|
||||
$ltotal++;
|
||||
print OUT "static const PRUint32 gToLowerItems = $ltotal;\n\n";
|
||||
}
|
||||
#
|
||||
# printf "%4x - %4x - %4x - %4x\n", $lcv[$i], $lv[$i], $ld[$i], $llastd[$i];
|
||||
#
|
||||
}
|
||||
|
||||
print OUT "static const PRUint32 gCaseBlocks [8] = {\n";
|
||||
for($idx=0;$idx<8;$idx++)
|
||||
{
|
||||
printf OUT "0x%08X", $blk[$idx];
|
||||
if($idx != 7) {
|
||||
printf OUT ",\n";
|
||||
} else {
|
||||
printf OUT "\n";
|
||||
}
|
||||
}
|
||||
print OUT "};\n\n";
|
||||
|
||||
######################################################################
|
||||
#
|
||||
# Print out gASCIIToLower table
|
||||
#
|
||||
######################################################################
|
||||
print OUT "// We map x -> x, except for upper-case letters,\n";
|
||||
print OUT "// which we map to their lower-case equivalents.\n";
|
||||
print OUT "static const PRUint8 gASCIIToLower [128] = {\n";
|
||||
|
||||
# Map x -> x, except for upper-case letters, which we map to lower-case
|
||||
# letters.
|
||||
for($idx=0; $idx < 128; $idx++)
|
||||
{
|
||||
if ($idx % 16 == 0) {
|
||||
print OUT " "
|
||||
}
|
||||
|
||||
if (65 <= $idx && $idx <= 90) {
|
||||
printf OUT "0x%02x", ($idx + 0x20);
|
||||
} else {
|
||||
printf OUT "0x%02x", $idx;
|
||||
}
|
||||
|
||||
if (($idx+1) % 16 != 0) {
|
||||
print OUT ", ";
|
||||
}
|
||||
else {
|
||||
print OUT ",\n";
|
||||
}
|
||||
}
|
||||
print OUT "};\n";
|
||||
|
||||
|
||||
######################################################################
|
||||
#
|
||||
# Close files
|
||||
#
|
||||
######################################################################
|
||||
close(UNIDATA);
|
||||
close(OUT);
|
||||
|
@ -63,11 +63,14 @@ SDK_HEADERS = \
|
||||
EXPORTS = \
|
||||
nsCompressedCharMap.h \
|
||||
nsBidiUtils.h \
|
||||
nsUnicodeProperties.h \
|
||||
nsUnicodeScriptCodes.h \
|
||||
$(NULL)
|
||||
|
||||
CPPSRCS = \
|
||||
nsUnicharUtils.cpp \
|
||||
nsBidiUtils.cpp \
|
||||
nsUnicodeProperties.cpp \
|
||||
$(NULL)
|
||||
|
||||
FORCE_STATIC_LIB = 1
|
||||
|
@ -45,170 +45,49 @@
|
||||
#include "nsICaseConversion.h"
|
||||
#include "nsServiceManagerUtils.h"
|
||||
#include "nsXPCOMStrings.h"
|
||||
#include "casetable.h"
|
||||
#include "nsUTF8Utils.h"
|
||||
#include "nsUnicodeProperties.h"
|
||||
#include "nsHashKeys.h"
|
||||
|
||||
#include <ctype.h>
|
||||
|
||||
// For gUpperToTitle
|
||||
enum {
|
||||
kUpperIdx =0,
|
||||
kTitleIdx
|
||||
};
|
||||
|
||||
// For gUpperToTitle
|
||||
enum {
|
||||
kLowIdx =0,
|
||||
kSizeEveryIdx,
|
||||
kDiffIdx
|
||||
// We map x -> x, except for upper-case letters,
|
||||
// which we map to their lower-case equivalents.
|
||||
static const PRUint8 gASCIIToLower [128] = {
|
||||
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
|
||||
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
|
||||
0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
|
||||
0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
|
||||
0x40, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
|
||||
0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
|
||||
0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
|
||||
0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
|
||||
};
|
||||
|
||||
#define IS_ASCII(u) ((u) < 0x80)
|
||||
#define IS_ASCII_UPPER(u) (('A' <= (u)) && ( (u) <= 'Z' ))
|
||||
#define IS_ASCII_LOWER(u) (('a' <= (u)) && ( (u) <= 'z'))
|
||||
#define IS_ASCII_UPPER(u) (('A' <= (u)) && ((u) <= 'Z'))
|
||||
#define IS_ASCII_LOWER(u) (('a' <= (u)) && ((u) <= 'z'))
|
||||
#define IS_ASCII_ALPHA(u) (IS_ASCII_UPPER(u) || IS_ASCII_LOWER(u))
|
||||
#define IS_ASCII_SPACE(u) ( ' ' == (u) )
|
||||
#define IS_ASCII_SPACE(u) (' ' == (u))
|
||||
|
||||
#define IS_NOCASE_CHAR(u) (0==(1&(gCaseBlocks[(u)>>13]>>(0x001F&((u)>>8)))))
|
||||
|
||||
// Size of Tables
|
||||
|
||||
// Changing these numbers may break UTF-8 caching. Be careful!
|
||||
#define CASE_MAP_CACHE_SIZE 0x100
|
||||
#define CASE_MAP_CACHE_MASK 0xFF
|
||||
|
||||
struct nsCompressedMap {
|
||||
const PRUnichar *mTable;
|
||||
PRUint32 mSize;
|
||||
PRUint32 mCache[CASE_MAP_CACHE_SIZE];
|
||||
PRUint32 mLastBase;
|
||||
|
||||
PRUnichar Map(PRUnichar aChar)
|
||||
{
|
||||
// We don't need explicit locking here since the cached values are int32s,
|
||||
// which are read and written atomically. The following code is threadsafe
|
||||
// because we never access bits from mCache directly -- we always first
|
||||
// read the entire entry into a local variable and then mask off the bits
|
||||
// we're interested in.
|
||||
|
||||
// Check the 256-byte cache first and bail with our answer if we can.
|
||||
PRUint32 cachedData = mCache[aChar & CASE_MAP_CACHE_MASK];
|
||||
if (aChar == ((cachedData >> 16) & 0x0000FFFF))
|
||||
return cachedData & 0x0000FFFF;
|
||||
|
||||
// Now try the last index we looked up, storing it into a local variable
|
||||
// for thread-safety.
|
||||
PRUint32 base = mLastBase;
|
||||
PRUnichar res = 0;
|
||||
|
||||
// Does this character fit in the slot?
|
||||
if ((aChar <= ((mTable[base+kSizeEveryIdx] >> 8) +
|
||||
mTable[base+kLowIdx])) &&
|
||||
(mTable[base+kLowIdx] <= aChar)) {
|
||||
|
||||
// This character uses the same base as our last lookup, so the
|
||||
// conversion is easy.
|
||||
if (((mTable[base+kSizeEveryIdx] & 0x00FF) > 0) &&
|
||||
(0 != ((aChar - mTable[base+kLowIdx]) %
|
||||
(mTable[base+kSizeEveryIdx] & 0x00FF))))
|
||||
{
|
||||
res = aChar;
|
||||
} else {
|
||||
res = aChar + mTable[base+kDiffIdx];
|
||||
}
|
||||
|
||||
} else {
|
||||
// Do the full lookup.
|
||||
res = this->Lookup(0, mSize/2, mSize-1, aChar);
|
||||
}
|
||||
|
||||
// Cache the result and return.
|
||||
mCache[aChar & CASE_MAP_CACHE_MASK] =
|
||||
((aChar << 16) & 0xFFFF0000) | (0x0000FFFF & res);
|
||||
return res;
|
||||
}
|
||||
|
||||
// Takes as arguments the left bound, middle, right bound, and character to
|
||||
// search for. Executes a binary search.
|
||||
PRUnichar Lookup(PRUint32 l,
|
||||
PRUint32 m,
|
||||
PRUint32 r,
|
||||
PRUnichar aChar)
|
||||
{
|
||||
PRUint32 base = m*3; // Every line in the table is 3 units wide.
|
||||
|
||||
// Is aChar past the top of the current table entry? (The upper byte of
|
||||
// the 'every' entry contains the offset to the end of this entry.)
|
||||
if (aChar > ((mTable[base+kSizeEveryIdx] >> 8) +
|
||||
mTable[base+kLowIdx]))
|
||||
{
|
||||
if (l > m || l == r)
|
||||
return aChar;
|
||||
// Advance one round.
|
||||
PRUint32 newm = (m+r+1)/2;
|
||||
if (newm == m)
|
||||
newm++;
|
||||
return this->Lookup(m+1, newm, r, aChar);
|
||||
|
||||
// Is aChar below the bottom of the current table entry?
|
||||
} else if (mTable[base+kLowIdx] > aChar) {
|
||||
if (r < m || l == r)
|
||||
return aChar;
|
||||
// Advance one round
|
||||
PRUint32 newm = (l+m-1)/2;
|
||||
if(newm == m)
|
||||
newm++;
|
||||
return this->Lookup(l, newm, m-1, aChar);
|
||||
|
||||
// We've found the entry aChar should live in.
|
||||
} else {
|
||||
// Determine if aChar falls in a gap. (The lower byte of the 'every'
|
||||
// entry contains n for which every nth character from the base is a
|
||||
// character of interest.)
|
||||
if (((mTable[base+kSizeEveryIdx] & 0x00FF) > 0) &&
|
||||
(0 != ((aChar - mTable[base+kLowIdx]) %
|
||||
(mTable[base+kSizeEveryIdx] & 0x00FF))))
|
||||
{
|
||||
return aChar;
|
||||
}
|
||||
// If aChar doesn't fall in the gap, cache and convert.
|
||||
mLastBase = base;
|
||||
return aChar + mTable[base+kDiffIdx];
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
static nsCompressedMap gUpperMap = {
|
||||
reinterpret_cast<const PRUnichar*>(&gToUpper[0]),
|
||||
gToUpperItems
|
||||
};
|
||||
|
||||
static nsCompressedMap gLowerMap = {
|
||||
reinterpret_cast<const PRUnichar*>(&gToLower[0]),
|
||||
gToLowerItems
|
||||
};
|
||||
|
||||
// We want ToLowerCase(PRUnichar) and ToLowerCaseASCII(PRUnichar) to be fast
|
||||
// We want ToLowerCase(PRUint32) and ToLowerCaseASCII(PRUint32) to be fast
|
||||
// when they're called from within the case-insensitive comparators, so we
|
||||
// define inlined versions.
|
||||
static NS_ALWAYS_INLINE PRUnichar
|
||||
ToLowerCase_inline(PRUnichar aChar)
|
||||
static NS_ALWAYS_INLINE PRUint32
|
||||
ToLowerCase_inline(PRUint32 aChar)
|
||||
{
|
||||
if (IS_ASCII(aChar)) {
|
||||
return gASCIIToLower[aChar];
|
||||
} else if (IS_NOCASE_CHAR(aChar)) {
|
||||
return aChar;
|
||||
}
|
||||
|
||||
return gLowerMap.Map(aChar);
|
||||
return mozilla::unicode::GetLowercase(aChar);
|
||||
}
|
||||
|
||||
static NS_ALWAYS_INLINE PRUnichar
|
||||
ToLowerCaseASCII_inline(const PRUnichar aChar)
|
||||
static NS_ALWAYS_INLINE PRUint32
|
||||
ToLowerCaseASCII_inline(const PRUint32 aChar)
|
||||
{
|
||||
if (IS_ASCII(aChar))
|
||||
if (IS_ASCII(aChar)) {
|
||||
return gASCIIToLower[aChar];
|
||||
}
|
||||
|
||||
return aChar;
|
||||
}
|
||||
|
||||
@ -231,8 +110,8 @@ ToLowerCase(const nsAString& aSource,
|
||||
ToLowerCase(in, out, len);
|
||||
}
|
||||
|
||||
PRUnichar
|
||||
ToLowerCaseASCII(const PRUnichar aChar)
|
||||
PRUint32
|
||||
ToLowerCaseASCII(const PRUint32 aChar)
|
||||
{
|
||||
return ToLowerCaseASCII_inline(aChar);
|
||||
}
|
||||
@ -290,6 +169,8 @@ nsASCIICaseInsensitiveStringComparator::operator()(const PRUnichar* lhs,
|
||||
}
|
||||
|
||||
while (rLength) {
|
||||
// we don't care about surrogates here, because we're only
|
||||
// lowercasing the ASCII range
|
||||
PRUnichar l = *lhs++;
|
||||
PRUnichar r = *rhs++;
|
||||
if (l != r) {
|
||||
@ -309,8 +190,8 @@ nsASCIICaseInsensitiveStringComparator::operator()(const PRUnichar* lhs,
|
||||
|
||||
#endif // MOZILLA_INTERNAL_API
|
||||
|
||||
PRUnichar
|
||||
ToLowerCase(PRUnichar aChar)
|
||||
PRUint32
|
||||
ToLowerCase(PRUint32 aChar)
|
||||
{
|
||||
return ToLowerCase_inline(aChar);
|
||||
}
|
||||
@ -319,63 +200,57 @@ void
|
||||
ToLowerCase(const PRUnichar *aIn, PRUnichar *aOut, PRUint32 aLen)
|
||||
{
|
||||
for (PRUint32 i = 0; i < aLen; i++) {
|
||||
aOut[i] = ToLowerCase(aIn[i]);
|
||||
PRUint32 ch = aIn[i];
|
||||
if (NS_IS_HIGH_SURROGATE(ch) && i < aLen - 1 &&
|
||||
NS_IS_LOW_SURROGATE(aIn[i + 1])) {
|
||||
ch = mozilla::unicode::GetLowercase(SURROGATE_TO_UCS4(ch, aIn[i + 1]));
|
||||
NS_ASSERTION(!IS_IN_BMP(ch), "case mapping crossed BMP/SMP boundary!");
|
||||
aOut[i++] = H_SURROGATE(ch);
|
||||
aOut[i] = L_SURROGATE(ch);
|
||||
continue;
|
||||
}
|
||||
aOut[i] = ToLowerCase(ch);
|
||||
}
|
||||
}
|
||||
|
||||
PRUnichar
|
||||
ToUpperCase(PRUnichar aChar)
|
||||
PRUint32
|
||||
ToUpperCase(PRUint32 aChar)
|
||||
{
|
||||
if (IS_ASCII(aChar)) {
|
||||
if (IS_ASCII_LOWER(aChar))
|
||||
if (IS_ASCII_LOWER(aChar)) {
|
||||
return aChar - 0x20;
|
||||
else
|
||||
return aChar;
|
||||
} else if (IS_NOCASE_CHAR(aChar)) {
|
||||
}
|
||||
return aChar;
|
||||
}
|
||||
|
||||
return gUpperMap.Map(aChar);
|
||||
return mozilla::unicode::GetUppercase(aChar);
|
||||
}
|
||||
|
||||
void
|
||||
ToUpperCase(const PRUnichar *aIn, PRUnichar *aOut, PRUint32 aLen)
|
||||
{
|
||||
for (PRUint32 i = 0; i < aLen; i++) {
|
||||
aOut[i] = ToUpperCase(aIn[i]);
|
||||
PRUint32 ch = aIn[i];
|
||||
if (NS_IS_HIGH_SURROGATE(ch) && i < aLen - 1 &&
|
||||
NS_IS_LOW_SURROGATE(aIn[i + 1])) {
|
||||
ch = mozilla::unicode::GetUppercase(SURROGATE_TO_UCS4(ch, aIn[i + 1]));
|
||||
NS_ASSERTION(!IS_IN_BMP(ch), "case mapping crossed BMP/SMP boundary!");
|
||||
aOut[i++] = H_SURROGATE(ch);
|
||||
aOut[i] = L_SURROGATE(ch);
|
||||
continue;
|
||||
}
|
||||
aOut[i] = ToUpperCase(ch);
|
||||
}
|
||||
}
|
||||
|
||||
PRUnichar
|
||||
ToTitleCase(PRUnichar aChar)
|
||||
PRUint32
|
||||
ToTitleCase(PRUint32 aChar)
|
||||
{
|
||||
if (IS_ASCII(aChar)) {
|
||||
return ToUpperCase(aChar);
|
||||
} else if (IS_NOCASE_CHAR(aChar)) {
|
||||
return aChar;
|
||||
}
|
||||
|
||||
// First check for uppercase characters whose titlecase mapping is
|
||||
// different, like U+01F1 DZ: they must remain unchanged.
|
||||
if (0x01C0 == (aChar & 0xFFC0)) {
|
||||
for (PRUint32 i = 0; i < gUpperToTitleItems; i++) {
|
||||
if (aChar == gUpperToTitle[(i*2)+kUpperIdx]) {
|
||||
return aChar;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PRUnichar upper = gUpperMap.Map(aChar);
|
||||
|
||||
if (0x01C0 == ( upper & 0xFFC0)) {
|
||||
for (PRUint32 i = 0 ; i < gUpperToTitleItems; i++) {
|
||||
if (upper == gUpperToTitle[(i*2)+kUpperIdx]) {
|
||||
return gUpperToTitle[(i*2)+kTitleIdx];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return upper;
|
||||
return mozilla::unicode::GetTitlecaseForLower(aChar);
|
||||
}
|
||||
|
||||
PRInt32
|
||||
@ -387,8 +262,27 @@ CaseInsensitiveCompare(const PRUnichar *a,
|
||||
|
||||
if (len) {
|
||||
do {
|
||||
PRUnichar c1 = *a++;
|
||||
PRUnichar c2 = *b++;
|
||||
PRUint32 c1 = *a++;
|
||||
PRUint32 c2 = *b++;
|
||||
|
||||
// Unfortunately, we need to check for surrogates BEFORE we check
|
||||
// for equality, because we could have identical high surrogates
|
||||
// but non-identical characters, so we can't just skip them
|
||||
|
||||
// If c1 isn't a surrogate, we don't bother to check c2;
|
||||
// in the case where it _is_ a surrogate, we're definitely going to get
|
||||
// a mismatch, and don't need to interpret and lowercase it
|
||||
|
||||
if (NS_IS_HIGH_SURROGATE(c1) && len > 1 && NS_IS_LOW_SURROGATE(*a)) {
|
||||
c1 = SURROGATE_TO_UCS4(c1, *a++);
|
||||
if (NS_IS_HIGH_SURROGATE(c2) && NS_IS_LOW_SURROGATE(*b)) {
|
||||
c2 = SURROGATE_TO_UCS4(c1, *b++);
|
||||
}
|
||||
// If c2 wasn't a surrogate, decrementing len means we'd stop
|
||||
// short of the end of string b, but that doesn't actually matter
|
||||
// because we're going to find a mismatch and return early
|
||||
--len;
|
||||
}
|
||||
|
||||
if (c1 != c2) {
|
||||
c1 = ToLowerCase_inline(c1);
|
||||
@ -434,8 +328,9 @@ GetLowerUTF8Codepoint(const char* aStr, const char* aEnd, const char **aNext)
|
||||
c = (str[0] & 0x1F) << 6;
|
||||
c += (str[1] & 0x3F);
|
||||
|
||||
if (!IS_NOCASE_CHAR(c))
|
||||
c = gLowerMap.Map(c);
|
||||
// we don't go through ToLowerCase here, because we know this isn't
|
||||
// an ASCII character so the ASCII fast-path there is useless
|
||||
c = mozilla::unicode::GetLowercase(c);
|
||||
|
||||
*aNext = aStr + 2;
|
||||
return c;
|
||||
@ -450,8 +345,7 @@ GetLowerUTF8Codepoint(const char* aStr, const char* aEnd, const char **aNext)
|
||||
c += (str[1] & 0x3F) << 6;
|
||||
c += (str[2] & 0x3F);
|
||||
|
||||
if (!IS_NOCASE_CHAR(c))
|
||||
c = gLowerMap.Map(c);
|
||||
c = mozilla::unicode::GetLowercase(c);
|
||||
|
||||
*aNext = aStr + 3;
|
||||
return c;
|
||||
@ -459,8 +353,6 @@ GetLowerUTF8Codepoint(const char* aStr, const char* aEnd, const char **aNext)
|
||||
if (UTF8traits::is4byte(str[0]) && NS_LIKELY(aStr + 3 < aEnd)) {
|
||||
// It's a four-byte sequence, so it looks like
|
||||
// 11110XXX 10XXXXXX 10XXXXXX 10XXXXXX.
|
||||
// Unless this is an overlong sequence, the codepoint it encodes definitely
|
||||
// isn't in the BMP, so we don't bother trying to convert it to lower-case.
|
||||
|
||||
PRUint32 c;
|
||||
c = (str[0] & 0x07) << 18;
|
||||
@ -468,6 +360,8 @@ GetLowerUTF8Codepoint(const char* aStr, const char* aEnd, const char **aNext)
|
||||
c += (str[2] & 0x3F) << 6;
|
||||
c += (str[3] & 0x3F);
|
||||
|
||||
c = mozilla::unicode::GetLowercase(c);
|
||||
|
||||
*aNext = aStr + 4;
|
||||
return c;
|
||||
}
|
||||
|
@ -56,18 +56,18 @@ void ToUpperCase(nsAString&);
|
||||
void ToLowerCase(const nsAString& aSource, nsAString& aDest);
|
||||
void ToUpperCase(const nsAString& aSource, nsAString& aDest);
|
||||
|
||||
PRUnichar ToLowerCase(PRUnichar);
|
||||
PRUnichar ToUpperCase(PRUnichar);
|
||||
PRUnichar ToTitleCase(PRUnichar);
|
||||
PRUint32 ToLowerCase(PRUint32);
|
||||
PRUint32 ToUpperCase(PRUint32);
|
||||
PRUint32 ToTitleCase(PRUint32);
|
||||
|
||||
void ToLowerCase(const PRUnichar*, PRUnichar*, PRUint32);
|
||||
void ToUpperCase(const PRUnichar*, PRUnichar*, PRUint32);
|
||||
|
||||
inline bool IsUpperCase(PRUnichar c) {
|
||||
inline bool IsUpperCase(PRUint32 c) {
|
||||
return ToLowerCase(c) != c;
|
||||
}
|
||||
|
||||
inline bool IsLowerCase(PRUnichar c) {
|
||||
inline bool IsLowerCase(PRUint32 c) {
|
||||
return ToUpperCase(c) != c;
|
||||
}
|
||||
|
||||
|
@ -35,6 +35,8 @@
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#define HB_DONT_DEFINE_STDINT 1
|
||||
|
||||
#include "nsUnicodeProperties.h"
|
||||
#include "nsUnicodeScriptCodes.h"
|
||||
#include "nsUnicodePropertyData.cpp"
|
||||
@ -43,8 +45,6 @@
|
||||
#include "nsMemory.h"
|
||||
#include "nsCharTraits.h"
|
||||
|
||||
#include "harfbuzz/hb-unicode.h"
|
||||
|
||||
#define UNICODE_BMP_LIMIT 0x10000
|
||||
#define UNICODE_LIMIT 0x110000
|
||||
|
||||
@ -137,12 +137,11 @@ GetCombiningClass(PRUint32 aCh)
|
||||
return sCClassValues[sCClassPages[0][aCh >> kCClassCharBits]]
|
||||
[aCh & ((1 << kCClassCharBits) - 1)];
|
||||
}
|
||||
if (aCh < UNICODE_LIMIT) {
|
||||
if (aCh < (kCClassMaxPlane + 1) * 0x10000) {
|
||||
return sCClassValues[sCClassPages[sCClassPlanes[(aCh >> 16) - 1]]
|
||||
[(aCh & 0xffff) >> kCClassCharBits]]
|
||||
[aCh & ((1 << kCClassCharBits) - 1)];
|
||||
}
|
||||
NS_NOTREACHED("invalid Unicode character!");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -153,12 +152,11 @@ GetGeneralCategory(PRUint32 aCh)
|
||||
return sCatEAWValues[sCatEAWPages[0][aCh >> kCatEAWCharBits]]
|
||||
[aCh & ((1 << kCatEAWCharBits) - 1)].mCategory;
|
||||
}
|
||||
if (aCh < UNICODE_LIMIT) {
|
||||
if (aCh < (kCatEAWMaxPlane + 1) * 0x10000) {
|
||||
return sCatEAWValues[sCatEAWPages[sCatEAWPlanes[(aCh >> 16) - 1]]
|
||||
[(aCh & 0xffff) >> kCatEAWCharBits]]
|
||||
[aCh & ((1 << kCatEAWCharBits) - 1)].mCategory;
|
||||
}
|
||||
NS_NOTREACHED("invalid Unicode character!");
|
||||
return PRUint8(HB_UNICODE_GENERAL_CATEGORY_UNASSIGNED);
|
||||
}
|
||||
|
||||
@ -169,12 +167,11 @@ GetEastAsianWidth(PRUint32 aCh)
|
||||
return sCatEAWValues[sCatEAWPages[0][aCh >> kCatEAWCharBits]]
|
||||
[aCh & ((1 << kCatEAWCharBits) - 1)].mEAW;
|
||||
}
|
||||
if (aCh < UNICODE_LIMIT) {
|
||||
if (aCh < (kCatEAWMaxPlane + 1) * 0x10000) {
|
||||
return sCatEAWValues[sCatEAWPages[sCatEAWPlanes[(aCh >> 16) - 1]]
|
||||
[(aCh & 0xffff) >> kCatEAWCharBits]]
|
||||
[aCh & ((1 << kCatEAWCharBits) - 1)].mEAW;
|
||||
}
|
||||
NS_NOTREACHED("invalid Unicode character!");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -185,12 +182,11 @@ GetScriptCode(PRUint32 aCh)
|
||||
return sScriptValues[sScriptPages[0][aCh >> kScriptCharBits]]
|
||||
[aCh & ((1 << kScriptCharBits) - 1)];
|
||||
}
|
||||
if (aCh < UNICODE_LIMIT) {
|
||||
if (aCh < (kScriptMaxPlane + 1) * 0x10000) {
|
||||
return sScriptValues[sScriptPages[sScriptPlanes[(aCh >> 16) - 1]]
|
||||
[(aCh & 0xffff) >> kScriptCharBits]]
|
||||
[aCh & ((1 << kScriptCharBits) - 1)];
|
||||
}
|
||||
NS_NOTREACHED("invalid Unicode character!");
|
||||
return MOZ_SCRIPT_UNKNOWN;
|
||||
}
|
||||
|
||||
@ -215,6 +211,70 @@ GetHangulSyllableType(PRUint32 aCh)
|
||||
return HST_NONE;
|
||||
}
|
||||
|
||||
static inline PRUint32
|
||||
GetCaseMapValue(PRUint32 aCh)
|
||||
{
|
||||
if (aCh < UNICODE_BMP_LIMIT) {
|
||||
return sCaseMapValues[sCaseMapPages[0][aCh >> kCaseMapCharBits]]
|
||||
[aCh & ((1 << kCaseMapCharBits) - 1)];
|
||||
}
|
||||
if (aCh < (kCaseMapMaxPlane + 1) * 0x10000) {
|
||||
return sCaseMapValues[sCaseMapPages[sCaseMapPlanes[(aCh >> 16) - 1]]
|
||||
[(aCh & 0xffff) >> kCaseMapCharBits]]
|
||||
[aCh & ((1 << kCaseMapCharBits) - 1)];
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
PRUint32
|
||||
GetUppercase(PRUint32 aCh)
|
||||
{
|
||||
PRUint32 mapValue = GetCaseMapValue(aCh);
|
||||
if (mapValue & (kLowerToUpper | kTitleToUpper)) {
|
||||
return aCh ^ (mapValue & kCaseMapCharMask);
|
||||
}
|
||||
if (mapValue & kLowerToTitle) {
|
||||
return GetUppercase(aCh ^ (mapValue & kCaseMapCharMask));
|
||||
}
|
||||
return aCh;
|
||||
}
|
||||
|
||||
PRUint32
|
||||
GetLowercase(PRUint32 aCh)
|
||||
{
|
||||
PRUint32 mapValue = GetCaseMapValue(aCh);
|
||||
if (mapValue & kUpperToLower) {
|
||||
return aCh ^ (mapValue & kCaseMapCharMask);
|
||||
}
|
||||
if (mapValue & kTitleToUpper) {
|
||||
return GetLowercase(aCh ^ (mapValue & kCaseMapCharMask));
|
||||
}
|
||||
return aCh;
|
||||
}
|
||||
|
||||
PRUint32
|
||||
GetTitlecaseForLower(PRUint32 aCh)
|
||||
{
|
||||
PRUint32 mapValue = GetCaseMapValue(aCh);
|
||||
if (mapValue & (kLowerToTitle | kLowerToUpper)) {
|
||||
return aCh ^ (mapValue & kCaseMapCharMask);
|
||||
}
|
||||
return aCh;
|
||||
}
|
||||
|
||||
PRUint32
|
||||
GetTitlecaseForAll(PRUint32 aCh)
|
||||
{
|
||||
PRUint32 mapValue = GetCaseMapValue(aCh);
|
||||
if (mapValue & (kLowerToTitle | kLowerToUpper)) {
|
||||
return aCh ^ (mapValue & kCaseMapCharMask);
|
||||
}
|
||||
if (mapValue & kUpperToLower) {
|
||||
return GetTitlecaseForLower(aCh ^ (mapValue & kCaseMapCharMask));
|
||||
}
|
||||
return aCh;
|
||||
}
|
||||
|
||||
bool
|
||||
IsClusterExtender(PRUint32 aCh, PRUint8 aCategory)
|
||||
{
|
@ -82,6 +82,14 @@ enum HSType {
|
||||
|
||||
HSType GetHangulSyllableType(PRUint32 aCh);
|
||||
|
||||
// Case mappings for the full Unicode range;
|
||||
// note that it may be worth testing for ASCII chars and taking
|
||||
// a separate fast-path before calling these, in perf-critical places
|
||||
PRUint32 GetUppercase(PRUint32 aCh);
|
||||
PRUint32 GetLowercase(PRUint32 aCh);
|
||||
PRUint32 GetTitlecaseForLower(PRUint32 aCh); // maps LC to titlecase, UC unchanged
|
||||
PRUint32 GetTitlecaseForAll(PRUint32 aCh); // maps both UC and LC to titlecase
|
||||
|
||||
enum ShapingType {
|
||||
SHAPING_DEFAULT = 0x0001,
|
||||
SHAPING_ARABIC = 0x0002,
|
@ -41,7 +41,7 @@
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
/*
|
||||
* Created on Thu Feb 23 13:15:51 2012 from UCD data files with version info:
|
||||
* Created on Mon Mar 5 08:11:49 2012 from UCD data files with version info:
|
||||
*
|
||||
|
||||
# Date: 2012-01-26, 22:03:00 GMT [KW]
|
||||
@ -183,6 +183,7 @@ static const PRUint32 sScriptCodeToTag[] = {
|
||||
HB_TAG('T','a','k','r')
|
||||
};
|
||||
|
||||
#define kScriptMaxPlane 16
|
||||
#define kScriptIndexBits 10
|
||||
#define kScriptCharBits 6
|
||||
static const PRUint8 sScriptPlanes[16] = {1,2,3,3,3,3,3,3,3,3,3,3,3,4,3,3};
|
||||
@ -475,14 +476,14 @@ static const PRUint8 sScriptValues[277][64] = {
|
||||
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61}
|
||||
};
|
||||
|
||||
#define kCClassMaxPlane 1
|
||||
#define kCClassIndexBits 10
|
||||
#define kCClassCharBits 6
|
||||
static const PRUint8 sCClassPlanes[16] = {1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2};
|
||||
static const PRUint8 sCClassPlanes[1] = {1};
|
||||
|
||||
static const PRUint8 sCClassPages[3][1024] = {
|
||||
static const PRUint8 sCClassPages[2][1024] = {
|
||||
{0,0,0,0,0,0,0,0,0,0,0,0,1,2,0,0,0,0,3,0,0,0,4,5,6,7,0,8,9,10,0,11,12,13,0,14,15,16,15,17,15,17,15,17,15,17,0,17,0,18,15,17,0,17,0,19,20,21,22,23,24,25,26,27,28,0,29,0,0,0,0,0,0,0,0,0,0,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,32,0,0,33,0,34,0,0,0,35,36,0,0,37,38,39,40,41,0,0,42,0,0,0,43,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,0,46,0,47,0,0,0,0,0,0,0,0,48,0,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,51,52,0,0,0,0,53,0,0,54,55,56,57,58,0,0,59,60,0,0,0,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0},
|
||||
{0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,66,0,67,0,0,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,70,0,0,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
|
||||
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
|
||||
{0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,66,0,67,0,0,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,70,0,0,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
|
||||
};
|
||||
|
||||
static const PRUint8 sCClassValues[72][64] = {
|
||||
@ -578,6 +579,7 @@ static const PRUint16 sDistantMirrors[] = {
|
||||
0x22AB
|
||||
};
|
||||
|
||||
#define kMirrorMaxPlane 0
|
||||
#define kMirrorIndexBits 9
|
||||
#define kMirrorCharBits 7
|
||||
static const PRUint8 sMirrorPages[1][512] = {
|
||||
@ -606,6 +608,7 @@ static const PRInt8 sMirrorValues[19][128] = {
|
||||
{0,0,0,0,0,0,0,0,1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,-2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,-2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,-2,0,1,-1,0,1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
|
||||
};
|
||||
|
||||
#define kCatEAWMaxPlane 16
|
||||
#define kCatEAWIndexBits 9
|
||||
#define kCatEAWCharBits 7
|
||||
static const PRUint8 sCatEAWPlanes[16] = {1,2,3,4,4,4,4,4,4,4,4,4,4,5,6,6};
|
||||
@ -819,6 +822,7 @@ static const struct {
|
||||
{{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,3},{0,2},{0,2}}
|
||||
};
|
||||
|
||||
#define kHangulMaxPlane 0
|
||||
#define kHangulIndexBits 10
|
||||
#define kHangulCharBits 6
|
||||
static const PRUint8 sHangulPages[1][1024] = {
|
||||
@ -843,6 +847,94 @@ static const PRUint8 sHangulValues[15][64] = {
|
||||
{2,2,2,2,2,2,2,0,0,0,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,0,0,0}
|
||||
};
|
||||
|
||||
#define kCaseMapMaxPlane 1
|
||||
#define kCaseMapIndexBits 11
|
||||
#define kCaseMapCharBits 5
|
||||
static const PRUint8 sCaseMapPlanes[1] = {1};
|
||||
|
||||
static const PRUint8 sCaseMapPages[2][2048] = {
|
||||
{0,0,1,2,0,3,4,5,6,7,8,9,10,11,12,13,6,14,15,16,17,0,0,0,0,0,18,19,20,21,22,23,24,25,26,6,27,6,28,6,6,29,30,31,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,0,0,0,0,6,6,6,6,36,6,6,6,37,38,39,40,38,41,42,43,0,0,0,0,0,0,0,0,0,44,45,46,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,49,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,52,53,54,6,6,6,55,56,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,58,59,0,0,0,0,60,6,61,62,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,65,0,0,0,0,0},
|
||||
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,67,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
|
||||
};
|
||||
|
||||
static const PRUint32 sCaseMapValues[69][32] = {
|
||||
{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
|
||||
{0x00000000,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
|
||||
{0x00000000,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
|
||||
{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x10000329,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
|
||||
{0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x00000000,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x00000000},
|
||||
{0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x00000000,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000187},
|
||||
{0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001},
|
||||
{0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000159,0x10000178,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x00000000,0x40000003,0x10000003,0x40000007,0x10000007,0x40000003,0x10000003,0x4000007f},
|
||||
{0x1000007f,0x40000003,0x10000003,0x40000007,0x10000007,0x40000003,0x10000003,0x4000000f,0x1000000f,0x00000000,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001},
|
||||
{0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000187,0x40000003,0x10000003,0x40000007,0x10000007,0x40000003,0x10000003,0x1000012c},
|
||||
{0x100003c3,0x400003d2,0x40000001,0x10000001,0x40000001,0x10000001,0x400003d2,0x4000000f,0x1000000f,0x400003df,0x400003dd,0x40000007,0x10000007,0x00000000,0x40000053,0x400003d6,0x400003cb,0x40000003,0x10000003,0x400003f3,0x400003f7,0x10000063,0x400003ff,0x400003ff,0x40000001,0x10000001,0x100003a7,0x00000000,0x400003f3,0x400003ef,0x100003be,0x400003ea},
|
||||
{0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000326,0x4000000f,0x1000000f,0x4000032a,0x00000000,0x00000000,0x40000001,0x10000001,0x40000326,0x4000001f,0x1000001f,0x4000033b,0x40000339,0x40000007,0x10000007,0x40000003,0x10000003,0x40000325,0x40000001,0x10000001,0x00000000,0x00000000,0x40000001,0x10000001,0x00000000,0x10000048},
|
||||
{0x00000000,0x00000000,0x00000000,0x00000000,0x40000002,0x80000001,0x20000003,0x4000000e,0x8000000f,0x20000001,0x40000006,0x80000001,0x20000007,0x40000003,0x10000003,0x4000001f,0x1000001f,0x40000003,0x10000003,0x40000007,0x10000007,0x40000003,0x10000003,0x4000000f,0x1000000f,0x40000003,0x10000003,0x40000007,0x10000007,0x10000053,0x40000001,0x10000001},
|
||||
{0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x00000000,0x40000002,0x80000003,0x20000001,0x40000001,0x10000001,0x40000063,0x40000048,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001},
|
||||
{0x400003be,0x00000000,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x40002e5f,0x40000007,0x10000007,0x400003a7,0x40002e58,0x10002e41},
|
||||
{0x10002e3f,0x40000003,0x10000003,0x400003c3,0x400000cd,0x400000c9,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x10002e3f,0x10002e3c,0x10002e22,0x100003d2,0x100003d2,0x00000000,0x100003df,0x100003dd,0x00000000,0x100003d6,0x00000000,0x100003cb,0x00000000,0x00000000,0x00000000,0x00000000},
|
||||
{0x100003f3,0x00000000,0x00000000,0x100003f7,0x00000000,0x1000a5e8,0x1000a5cc,0x00000000,0x100003ff,0x100003ff,0x00000000,0x10002e09,0x00000000,0x00000000,0x00000000,0x100003f3,0x00000000,0x10002e1f,0x100003ef,0x00000000,0x00000000,0x100003ea,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x10002e19,0x00000000,0x00000000},
|
||||
{0x10000326,0x00000000,0x00000000,0x1000032a,0x00000000,0x00000000,0x00000000,0x00000000,0x10000326,0x100000cd,0x1000033b,0x10000339,0x100000c9,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x10000325,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
|
||||
{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x100000dc,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
|
||||
{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x40000001,0x10000001,0x40000001,0x10000001,0x00000000,0x00000000,0x40000001,0x10000001,0x00000000,0x00000000,0x00000000,0x10000086,0x10000082,0x10000082,0x00000000,0x00000000},
|
||||
{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x4000002a,0x00000000,0x40000025,0x40000027,0x40000025,0x00000000,0x40000040,0x00000000,0x40000043,0x40000041,0x00000000,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020},
|
||||
{0x40000060,0x40000060,0x00000000,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x1000002a,0x10000025,0x10000027,0x10000025,0x00000000,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020},
|
||||
{0x10000060,0x10000060,0x10000061,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000040,0x10000043,0x10000041,0x40000018,0x10000042,0x10000049,0x00000000,0x00000000,0x00000000,0x10000073,0x10000076,0x10000018,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001},
|
||||
{0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x1000006a,0x10000050,0x1000000b,0x00000000,0x4000004c,0x10000060,0x00000000,0x4000000f,0x1000000f,0x4000000b,0x40000001,0x10000001,0x00000000,0x40000086,0x40000082,0x40000082},
|
||||
{0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020,0x40000020},
|
||||
{0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020,0x10000020},
|
||||
{0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050},
|
||||
{0x40000001,0x10000001,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001},
|
||||
{0x4000000f,0x40000003,0x10000003,0x40000007,0x10000007,0x40000003,0x10000003,0x4000000f,0x1000000f,0x40000003,0x10000003,0x40000007,0x10000007,0x40000003,0x10000003,0x1000000f,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001},
|
||||
{0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050},
|
||||
{0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x400000d0,0x400000d0,0x400000d0,0x400000d0,0x400000d0,0x400000d0,0x400000d0,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
|
||||
{0x00000000,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030},
|
||||
{0x100000d0,0x100000d0,0x100000d0,0x100000d0,0x100000d0,0x100000d0,0x100000d0,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
|
||||
{0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0,0x40003da0},
|
||||
{0x40003de0,0x40003de0,0x40003de0,0x40003de0,0x40003de0,0x40003de0,0x00000000,0x40003de0,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x40003de0,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
|
||||
{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x1000ba04,0x00000000,0x00000000,0x00000000,0x1000311e,0x00000000,0x00000000},
|
||||
{0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x100000fb,0x00000000,0x00000000,0x40001e41,0x00000000},
|
||||
{0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x00000000,0x00000000,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x00000000,0x00000000},
|
||||
{0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008},
|
||||
{0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x00000000,0x00000000,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x00000000,0x00000000,0x00000000,0x10000008,0x00000000,0x10000008,0x00000000,0x10000008,0x00000000,0x10000008,0x00000000,0x40000008,0x00000000,0x40000008,0x00000000,0x40000008,0x00000000,0x40000008},
|
||||
{0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x100000ca,0x100000ca,0x100000ba,0x100000ba,0x100000be,0x100000be,0x100000ac,0x100000ac,0x10000080,0x10000080,0x10000090,0x10000090,0x10000086,0x10000086,0x00000000,0x00000000},
|
||||
{0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x10000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x40000008,0x10000008,0x10000008,0x00000000,0x1000000f,0x00000000,0x00000000,0x00000000,0x00000000,0x40000008,0x40000008,0x400000ca,0x400000ca,0x4000000f,0x00000000,0x10001c27,0x00000000},
|
||||
{0x00000000,0x00000000,0x00000000,0x1000000f,0x00000000,0x00000000,0x00000000,0x00000000,0x400000ba,0x400000ba,0x400000be,0x400000be,0x4000000f,0x00000000,0x00000000,0x00000000,0x10000008,0x10000008,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x40000008,0x40000008,0x400000ac,0x400000ac,0x00000000,0x00000000,0x00000000,0x00000000},
|
||||
{0x10000008,0x10000008,0x00000000,0x00000000,0x00000000,0x10000009,0x00000000,0x00000000,0x40000008,0x40000008,0x40000090,0x40000090,0x40000009,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x1000000f,0x00000000,0x00000000,0x00000000,0x00000000,0x40000080,0x40000080,0x40000086,0x40000086,0x4000000f,0x00000000,0x00000000,0x00000000},
|
||||
{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x400022ef,0x00000000,0x00000000,0x00000000,0x40002141,0x400021ce,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x4000007c,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
|
||||
{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x1000007c,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
|
||||
{0x40000010,0x40000010,0x40000010,0x40000010,0x40000010,0x40000010,0x40000010,0x40000010,0x40000010,0x40000010,0x40000010,0x40000010,0x40000010,0x40000010,0x40000010,0x40000010,0x10000010,0x10000010,0x10000010,0x10000010,0x10000010,0x10000010,0x10000010,0x10000010,0x10000010,0x10000010,0x10000010,0x10000010,0x10000010,0x10000010,0x10000010,0x10000010},
|
||||
{0x00000000,0x00000000,0x00000000,0x40000007,0x10000007,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
|
||||
{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x40000066,0x40000066,0x4000006a,0x4000006a,0x4000006e,0x4000006e,0x4000006a,0x4000006a,0x40000066,0x40000066},
|
||||
{0x4000001a,0x4000001a,0x4000001e,0x4000001e,0x4000001a,0x4000001a,0x40000026,0x40000026,0x4000002a,0x4000002a,0x4000002e,0x4000002e,0x4000002a,0x4000002a,0x40000026,0x40000026,0x10000066,0x10000066,0x1000006a,0x1000006a,0x1000006e,0x1000006e,0x1000006a,0x1000006a,0x10000066,0x10000066,0x1000001a,0x1000001a,0x1000001e,0x1000001e,0x1000001a,0x1000001a},
|
||||
{0x10000026,0x10000026,0x1000002a,0x1000002a,0x1000002e,0x1000002e,0x1000002a,0x1000002a,0x10000026,0x10000026,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
|
||||
{0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000030,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050,0x40000050},
|
||||
{0x40000070,0x40000070,0x40000070,0x40000070,0x40000070,0x40000070,0x40000070,0x40000070,0x40000070,0x40000070,0x40000070,0x40000070,0x40000070,0x40000070,0x40000070,0x00000000,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030,0x10000030},
|
||||
{0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000050,0x10000070,0x10000070,0x10000070,0x10000070,0x10000070,0x10000070,0x10000070,0x10000070,0x10000070,0x10000070,0x10000070,0x10000070,0x10000070,0x10000070,0x10000070,0x00000000},
|
||||
{0x40000001,0x10000001,0x40002e09,0x4000311e,0x40002e19,0x10002e5f,0x10002e58,0x4000000f,0x1000000f,0x40000003,0x10000003,0x40000007,0x10000007,0x40002e3c,0x40002e1f,0x40002e3f,0x40002e22,0x00000000,0x40000001,0x10000001,0x00000000,0x40000003,0x10000003,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x40002e41,0x40002e3f},
|
||||
{0x40000001,0x10000001,0x40000001,0x10000001,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x40000007,0x10000007,0x40000003,0x10000003,0x00000000,0x00000000,0x00000000,0x40000001,0x10000001,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
|
||||
{0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0,0x10003da0},
|
||||
{0x10003de0,0x10003de0,0x10003de0,0x10003de0,0x10003de0,0x10003de0,0x00000000,0x10003de0,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x10003de0,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
|
||||
{0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
|
||||
{0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
|
||||
{0x00000000,0x00000000,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x00000000,0x00000000,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001},
|
||||
{0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x40000003,0x10000003,0x40000007,0x10000007,0x4000ba04,0x40000001,0x10000001},
|
||||
{0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x00000000,0x00000000,0x00000000,0x40000007,0x10000007,0x4000a5e8,0x00000000,0x00000000,0x40000001,0x10000001,0x40000001,0x10000001,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
|
||||
{0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x40000001,0x10000001,0x4000a5cc,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
|
||||
{0x00000000,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x40000060,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
|
||||
{0x00000000,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x10000060,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
|
||||
{0x40000028,0x40000028,0x40000028,0x40000028,0x40000028,0x40000028,0x40000028,0x40000028,0x40000038,0x40000038,0x40000038,0x40000038,0x40000038,0x40000038,0x40000038,0x40000038,0x40000028,0x40000028,0x40000028,0x40000028,0x40000028,0x40000028,0x40000028,0x40000028,0x40000058,0x40000058,0x40000058,0x40000058,0x40000058,0x40000058,0x40000058,0x40000058},
|
||||
{0x40000068,0x40000068,0x40000068,0x40000068,0x40000068,0x40000068,0x40000068,0x40000068,0x10000028,0x10000028,0x10000028,0x10000028,0x10000028,0x10000028,0x10000028,0x10000028,0x10000038,0x10000038,0x10000038,0x10000038,0x10000038,0x10000038,0x10000038,0x10000038,0x10000028,0x10000028,0x10000028,0x10000028,0x10000028,0x10000028,0x10000028,0x10000028},
|
||||
{0x10000058,0x10000058,0x10000058,0x10000058,0x10000058,0x10000058,0x10000058,0x10000058,0x10000068,0x10000068,0x10000068,0x10000068,0x10000068,0x10000068,0x10000068,0x10000068,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000}
|
||||
};
|
||||
|
||||
const PRUint32 kTitleToUpper = 0x80000000;
|
||||
const PRUint32 kUpperToLower = 0x40000000;
|
||||
const PRUint32 kLowerToTitle = 0x20000000;
|
||||
const PRUint32 kLowerToUpper = 0x10000000;
|
||||
const PRUint32 kCaseMapCharMask = 0x001fffff;
|
||||
|
||||
/*
|
||||
* * * * * This file contains MACHINE-GENERATED DATA, do not edit! * * * * *
|
||||
*/
|
@ -41,7 +41,7 @@
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
/*
|
||||
* Created on Thu Feb 23 13:15:51 2012 from UCD data files with version info:
|
||||
* Created on Mon Mar 5 08:11:49 2012 from UCD data files with version info:
|
||||
*
|
||||
|
||||
# Date: 2012-01-26, 22:03:00 GMT [KW]
|
@ -37,6 +37,7 @@
|
||||
INTL_UNICHARUTIL_UTIL_LCPPSRCS = \
|
||||
nsUnicharUtils.cpp \
|
||||
nsBidiUtils.cpp \
|
||||
nsUnicodeProperties.cpp \
|
||||
$(NULL)
|
||||
|
||||
INTL_UNICHARUTIL_UTIL_CPPSRCS = $(addprefix $(topsrcdir)/intl/unicharutil/util/, $(INTL_UNICHARUTIL_UTIL_LCPPSRCS))
|
||||
|
Loading…
Reference in New Issue
Block a user