Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
55e0a9cb
Commit
55e0a9cb
authored
Mar 28, 2002
by
bar@gw.udmsearch.izhnet.ru
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
New UTF8 charset
parent
1b54e7c1
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
2088 additions
and
54 deletions
+2088
-54
configure.in
configure.in
+1
-1
include/m_ctype.h
include/m_ctype.h
+67
-24
libmysql/Makefile.shared
libmysql/Makefile.shared
+1
-1
sql/init.cc
sql/init.cc
+4
-1
sql/share/charsets/Index
sql/share/charsets/Index
+1
-0
strings/Makefile.am
strings/Makefile.am
+4
-4
strings/ctype-big5.c
strings/ctype-big5.c
+3
-3
strings/ctype-euc_kr.c
strings/ctype-euc_kr.c
+3
-3
strings/ctype-gb2312.c
strings/ctype-gb2312.c
+3
-3
strings/ctype-gbk.c
strings/ctype-gbk.c
+3
-3
strings/ctype-sjis.c
strings/ctype-sjis.c
+8
-8
strings/ctype-ujis.c
strings/ctype-ujis.c
+3
-3
strings/ctype-utf8.c
strings/ctype-utf8.c
+1960
-0
strings/ctype.c
strings/ctype.c
+27
-0
No files found.
configure.in
View file @
55e0a9cb
...
...
@@ -1872,7 +1872,7 @@ CHARSETS_AVAILABLE="armscii8 big5 cp1251 cp1257
latin1 latin1_de latin2 latin5 sjis swe7 tis620 ujis
usa7 utf8 win1250 win1251ukr"
CHARSETS_DEPRECATED
=
"win1251"
CHARSETS_COMPLEX
=
"big5 czech euc_kr gb2312 gbk latin1_de sjis tis620 ujis"
CHARSETS_COMPLEX
=
"big5 czech euc_kr gb2312 gbk latin1_de sjis tis620 ujis
utf8
"
DEFAULT_CHARSET
=
latin1
AC_DIVERT_POP
...
...
include/m_ctype.h
View file @
55e0a9cb
...
...
@@ -29,6 +29,22 @@ extern "C" {
#define CHARSET_DIR "charsets/"
#define my_wc_t ulong
typedef
struct
unicase_info_st
{
uint16
toupper
;
uint16
tolower
;
uint16
sort
;
}
MY_UNICASE_INFO
;
#define MY_CS_ILSEQ 0
#define MY_CS_ILUNI 0
#define MY_CS_TOOSMALL -1
#define MY_CS_TOOFEW(n) (-1-(n))
typedef
struct
charset_info_st
{
uint
number
;
...
...
@@ -48,9 +64,9 @@ typedef struct charset_info_st
char
*
,
char
*
,
uint
*
,
uint
*
);
uint
mbmaxlen
;
int
(
*
ismbchar
)(
const
char
*
,
const
char
*
);
my_bool
(
*
ismbhead
)(
uint
);
int
(
*
mbcharlen
)(
uint
);
int
(
*
ismbchar
)(
struct
charset_info_st
*
,
const
char
*
,
const
char
*
);
my_bool
(
*
ismbhead
)(
struct
charset_info_st
*
,
uint
);
int
(
*
mbcharlen
)(
struct
charset_info_st
*
,
uint
);
/* Functions for case convertion */
void
(
*
caseup_str
)(
struct
charset_info_st
*
,
char
*
);
...
...
@@ -107,9 +123,9 @@ extern int my_strnncoll_big5(CHARSET_INFO *,const uchar *, uint, const uchar
extern
int
my_strnxfrm_big5
(
CHARSET_INFO
*
,
uchar
*
,
uint
,
const
uchar
*
,
uint
);
extern
my_bool
my_like_range_big5
(
CHARSET_INFO
*
,
const
char
*
,
uint
,
pchar
,
uint
,
char
*
,
char
*
,
uint
*
,
uint
*
);
extern
int
ismbchar_big5
(
const
char
*
,
const
char
*
);
extern
my_bool
ismbhead_big5
(
uint
);
extern
int
mbcharlen_big5
(
uint
);
extern
int
ismbchar_big5
(
CHARSET_INFO
*
,
const
char
*
,
const
char
*
);
extern
my_bool
ismbhead_big5
(
CHARSET_INFO
*
,
uint
);
extern
int
mbcharlen_big5
(
CHARSET_INFO
*
,
uint
);
#endif
#ifdef HAVE_CHARSET_czech
...
...
@@ -125,17 +141,17 @@ extern my_bool my_like_range_czech(CHARSET_INFO *,
#ifdef HAVE_CHARSET_euc_kr
/* declarations for the euc_kr character set */
extern
uchar
ctype_euc_kr
[],
to_lower_euc_kr
[],
to_upper_euc_kr
[],
sort_order_euc_kr
[];
extern
int
ismbchar_euc_kr
(
const
char
*
,
const
char
*
);
extern
my_bool
ismbhead_euc_kr
(
uint
);
extern
int
mbcharlen_euc_kr
(
uint
);
extern
int
ismbchar_euc_kr
(
CHARSET_INFO
*
,
const
char
*
,
const
char
*
);
extern
my_bool
ismbhead_euc_kr
(
CHARSET_INFO
*
,
uint
);
extern
int
mbcharlen_euc_kr
(
CHARSET_INFO
*
,
uint
);
#endif
#ifdef HAVE_CHARSET_gb2312
/* declarations for the gb2312 character set */
extern
uchar
ctype_gb2312
[],
to_lower_gb2312
[],
to_upper_gb2312
[],
sort_order_gb2312
[];
extern
int
ismbchar_gb2312
(
const
char
*
,
const
char
*
);
extern
my_bool
ismbhead_gb2312
(
uint
);
extern
int
mbcharlen_gb2312
(
uint
);
extern
int
ismbchar_gb2312
(
CHARSET_INFO
*
,
const
char
*
,
const
char
*
);
extern
my_bool
ismbhead_gb2312
(
CHARSET_INFO
*
,
uint
);
extern
int
mbcharlen_gb2312
(
CHARSET_INFO
*
,
uint
);
#endif
#ifdef HAVE_CHARSET_gbk
...
...
@@ -145,9 +161,9 @@ extern int my_strnncoll_gbk(CHARSET_INFO *, const uchar *, uint, const uchar
extern
int
my_strnxfrm_gbk
(
CHARSET_INFO
*
,
uchar
*
,
uint
,
const
uchar
*
,
uint
);
extern
my_bool
my_like_range_gbk
(
CHARSET_INFO
*
,
const
char
*
,
uint
,
pchar
,
uint
,
char
*
,
char
*
,
uint
*
,
uint
*
);
extern
int
ismbchar_gbk
(
const
char
*
,
const
char
*
);
extern
my_bool
ismbhead_gbk
(
uint
);
extern
int
mbcharlen_gbk
(
uint
);
extern
int
ismbchar_gbk
(
CHARSET_INFO
*
,
const
char
*
,
const
char
*
);
extern
my_bool
ismbhead_gbk
(
CHARSET_INFO
*
,
uint
);
extern
int
mbcharlen_gbk
(
CHARSET_INFO
*
,
uint
);
#endif
#ifdef HAVE_CHARSET_latin1_de
...
...
@@ -166,9 +182,9 @@ extern int my_strnncoll_sjis(CHARSET_INFO *, const uchar *, uint, const ucha
extern
int
my_strnxfrm_sjis
(
CHARSET_INFO
*
,
uchar
*
,
uint
,
const
uchar
*
,
uint
);
extern
my_bool
my_like_range_sjis
(
CHARSET_INFO
*
,
const
char
*
,
uint
,
pchar
,
uint
,
char
*
,
char
*
,
uint
*
,
uint
*
);
extern
int
ismbchar_sjis
(
const
char
*
,
const
char
*
);
extern
my_bool
ismbhead_sjis
(
uint
);
extern
int
mbcharlen_sjis
(
uint
);
extern
int
ismbchar_sjis
(
CHARSET_INFO
*
,
const
char
*
,
const
char
*
);
extern
my_bool
ismbhead_sjis
(
CHARSET_INFO
*
,
uint
);
extern
int
mbcharlen_sjis
(
CHARSET_INFO
*
,
uint
);
#endif
#ifdef HAVE_CHARSET_tis620
...
...
@@ -183,11 +199,38 @@ extern my_bool my_like_range_tis620(CHARSET_INFO *, const char *, uint, pchar, u
#ifdef HAVE_CHARSET_ujis
/* declarations for the ujis character set */
extern
uchar
ctype_ujis
[],
to_lower_ujis
[],
to_upper_ujis
[],
sort_order_ujis
[];
extern
int
ismbchar_ujis
(
const
char
*
,
const
char
*
);
extern
my_bool
ismbhead_ujis
(
uint
);
extern
int
mbcharlen_ujis
(
uint
);
extern
int
ismbchar_ujis
(
CHARSET_INFO
*
,
const
char
*
,
const
char
*
);
extern
my_bool
ismbhead_ujis
(
CHARSET_INFO
*
,
uint
);
extern
int
mbcharlen_ujis
(
CHARSET_INFO
*
,
uint
);
#endif
#ifdef HAVE_CHARSET_utf8
extern
uchar
ctype_utf8
[];
extern
uchar
to_lower_utf8
[];
extern
uchar
to_upper_utf8
[];
int
my_strnncoll_utf8
(
CHARSET_INFO
*
cs
,
const
uchar
*
s
,
uint
s_len
,
const
uchar
*
t
,
uint
t_len
);
int
my_strnxfrm_utf8
(
CHARSET_INFO
*
cs
,
uchar
*
dest
,
uint
destlen
,
const
uchar
*
src
,
uint
srclen
);
int
my_ismbchar_utf8
(
CHARSET_INFO
*
cs
,
const
char
*
b
,
const
char
*
e
);
my_bool
my_ismbhead_utf8
(
CHARSET_INFO
*
cs
,
uint
ch
);
int
my_mbcharlen_utf8
(
CHARSET_INFO
*
cs
,
uint
c
);
void
my_caseup_str_utf8
(
CHARSET_INFO
*
cs
,
char
*
s
);
void
my_casedn_str_utf8
(
CHARSET_INFO
*
cs
,
char
*
s
);
void
my_caseup_utf8
(
CHARSET_INFO
*
cs
,
char
*
s
,
uint
len
);
void
my_casedn_utf8
(
CHARSET_INFO
*
cs
,
char
*
s
,
uint
len
);
int
my_strcasecmp_utf8
(
CHARSET_INFO
*
cs
,
const
char
*
s
,
const
char
*
t
);
int
my_strncasecmp_utf8
(
CHARSET_INFO
*
cs
,
const
char
*
s
,
const
char
*
t
,
uint
l
);
int
my_utf8_uni
(
CHARSET_INFO
*
cs
,
my_wc_t
*
p
,
const
uchar
*
s
,
const
uchar
*
e
);
int
my_uni_utf8
(
CHARSET_INFO
*
cs
,
my_wc_t
pwc
,
uchar
*
b
,
uchar
*
e
);
#endif
#define _U 01
/* Upper case */
#define _L 02
/* Lower case */
...
...
@@ -229,9 +272,9 @@ extern int mbcharlen_ujis(uint);
((s)->like_range((s), (a), (b), (c), (d), (e), (f), (g), (h)))
#define use_mb(s) ((s)->ismbchar != NULL)
#define my_ismbchar(s, a, b) ((s)->ismbchar((a), (b)))
#define my_ismbhead(s, a) ((s)->ismbhead((a)))
#define my_mbcharlen(s, a) ((s)->mbcharlen((a)))
#define my_ismbchar(s, a, b) ((s)->ismbchar((
s), (
a), (b)))
#define my_ismbhead(s, a) ((s)->ismbhead((
s), (
a)))
#define my_mbcharlen(s, a) ((s)->mbcharlen((
s),(
a)))
#define my_caseup(s, a, l) ((s)->caseup((s), (a), (l)))
#define my_casedn(s, a, l) ((s)->casedn((s), (a), (l)))
...
...
libmysql/Makefile.shared
View file @
55e0a9cb
...
...
@@ -41,7 +41,7 @@ mystringsobjects = strmov.lo strxmov.lo strxnmov.lo strnmov.lo \
ctype.lo ctype-simple.lo ctype-mb.lo
\
ctype-big5.lo ctype-czech.lo ctype-euc_kr.lo
\
ctype-gb2312.lo ctype-gbk.lo ctype-latin1_de.lo
\
ctype-sjis.lo ctype-tis620.lo ctype-ujis.lo
ctype-sjis.lo ctype-tis620.lo ctype-ujis.lo
ctype-utf8.lo
mystringsextra
=
strto.c
dbugobjects
=
dbug.lo
# IT IS IN SAFEMALLOC.C sanity.lo
...
...
sql/init.cc
View file @
55e0a9cb
...
...
@@ -57,7 +57,10 @@ void unireg_init(ulong options)
for
(
cs
=
compiled_charsets
;
cs
->
number
;
cs
++
)
{
uchar
max_char
=
cs
->
sort_order
[(
uchar
)
cs
->
max_sort_char
];
uchar
max_char
;
if
(
!
cs
->
sort_order
)
continue
;
cs
->
sort_order
[(
uchar
)
cs
->
max_sort_char
];
for
(
i
=
0
;
i
<
256
;
i
++
)
{
if
((
uchar
)
cs
->
sort_order
[
i
]
>
max_char
)
...
...
sql/share/charsets/Index
View file @
55e0a9cb
...
...
@@ -37,3 +37,4 @@ cp1257 29
latin5 30
latin1_de 31
armscii8 32
utf8 33
strings/Makefile.am
View file @
55e0a9cb
...
...
@@ -22,19 +22,19 @@ pkglib_LIBRARIES = libmystrings.a
# Exact one of ASSEMBLER_X
if
ASSEMBLER_x86
ASRCS
=
strings-x86.s longlong2str-x86.s
CSRCS
=
bfill.c bmove.c bmove512.c bchange.c strxnmov.c int2str.c str2int.c r_strinstr.c atof.c bcmp.c strtol.c strtoul.c strtoll.c strtoull.c llstr.c strnlen.c ctype.c ctype-simple.c ctype-mb.c ctype-big5.c ctype-czech.c ctype-euc_kr.c ctype-gb2312.c ctype-gbk.c ctype-latin1_de.c ctype-sjis.c ctype-tis620.c ctype-ujis.c
CSRCS
=
bfill.c bmove.c bmove512.c bchange.c strxnmov.c int2str.c str2int.c r_strinstr.c atof.c bcmp.c strtol.c strtoul.c strtoll.c strtoull.c llstr.c strnlen.c ctype.c ctype-simple.c ctype-mb.c ctype-big5.c ctype-czech.c ctype-euc_kr.c ctype-gb2312.c ctype-gbk.c ctype-latin1_de.c ctype-sjis.c ctype-tis620.c ctype-ujis.c
ctype-utf8.c
else
if
ASSEMBLER_sparc
# These file MUST all be on the same line!! Otherwise automake
# generats a very broken makefile
ASRCS
=
bmove_upp-sparc.s strappend-sparc.s strend-sparc.s strinstr-sparc.s strmake-sparc.s strmov-sparc.s strnmov-sparc.s strstr-sparc.s strxmov-sparc.s
CSRCS
=
strcont.c strfill.c strcend.c is_prefix.c longlong2str.c bfill.c bmove.c bmove512.c bchange.c strxnmov.c int2str.c str2int.c r_strinstr.c atof.c bcmp.c strtol.c strtoul.c strtoll.c strtoull.c llstr.c strnlen.c ctype.c ctype-simple.c ctype-mb.c ctype-big5.c ctype-czech.c ctype-euc_kr.c ctype-gb2312.c ctype-gbk.c ctype-latin1_de.c ctype-sjis.c ctype-tis620.c ctype-ujis.c
CSRCS
=
strcont.c strfill.c strcend.c is_prefix.c longlong2str.c bfill.c bmove.c bmove512.c bchange.c strxnmov.c int2str.c str2int.c r_strinstr.c atof.c bcmp.c strtol.c strtoul.c strtoll.c strtoull.c llstr.c strnlen.c ctype.c ctype-simple.c ctype-mb.c ctype-big5.c ctype-czech.c ctype-euc_kr.c ctype-gb2312.c ctype-gbk.c ctype-latin1_de.c ctype-sjis.c ctype-tis620.c ctype-ujis.c
ctype-utf8.c
else
#no assembler
ASRCS
=
# These file MUST all be on the same line!! Otherwise automake
# generats a very broken makefile
CSRCS
=
strxmov.c bmove_upp.c strappend.c strcont.c strend.c strfill.c strcend.c is_prefix.c strstr.c strinstr.c strmake.c strnmov.c strmov.c longlong2str.c bfill.c bmove.c bmove512.c bchange.c strxnmov.c int2str.c str2int.c r_strinstr.c atof.c bcmp.c strtol.c strtoul.c strtoll.c strtoull.c llstr.c strnlen.c ctype.c ctype-simple.c ctype-mb.c ctype-big5.c ctype-czech.c ctype-euc_kr.c ctype-gb2312.c ctype-gbk.c ctype-latin1_de.c ctype-sjis.c ctype-tis620.c ctype-ujis.c
CSRCS
=
strxmov.c bmove_upp.c strappend.c strcont.c strend.c strfill.c strcend.c is_prefix.c strstr.c strinstr.c strmake.c strnmov.c strmov.c longlong2str.c bfill.c bmove.c bmove512.c bchange.c strxnmov.c int2str.c str2int.c r_strinstr.c atof.c bcmp.c strtol.c strtoul.c strtoll.c strtoull.c llstr.c strnlen.c ctype.c ctype-simple.c ctype-mb.c ctype-big5.c ctype-czech.c ctype-euc_kr.c ctype-gb2312.c ctype-gbk.c ctype-latin1_de.c ctype-sjis.c ctype-tis620.c ctype-ujis.c
ctype-utf8.c
endif
endif
...
...
@@ -42,7 +42,7 @@ libmystrings_a_SOURCES = $(ASRCS) $(CSRCS)
noinst_PROGRAMS
=
conf_to_src
# Default charset definitions
EXTRA_DIST
=
ctype-big5.c ctype-czech.c ctype-euc_kr.c
\
ctype-gb2312.c ctype-gbk.c ctype-sjis.c
\
ctype-gb2312.c ctype-gbk.c ctype-sjis.c
ctype-utf8.c
\
ctype-tis620.c ctype-ujis.c ctype-latin1_de.c
\
strto.c strings-x86.s longlong2str-x86.s
\
strxmov.c bmove_upp.c strappend.c strcont.c strend.c
\
...
...
strings/ctype-big5.c
View file @
55e0a9cb
...
...
@@ -378,17 +378,17 @@ my_bool my_like_range_big5(CHARSET_INFO *cs,
return
0
;
}
int
ismbchar_big5
(
const
char
*
p
,
const
char
*
e
)
int
ismbchar_big5
(
CHARSET_INFO
*
cs
,
const
char
*
p
,
const
char
*
e
)
{
return
(
isbig5head
(
*
(
p
))
&&
(
e
)
-
(
p
)
>
1
&&
isbig5tail
(
*
((
p
)
+
1
))
?
2
:
0
);
}
my_bool
ismbhead_big5
(
uint
c
)
my_bool
ismbhead_big5
(
CHARSET_INFO
*
cs
,
uint
c
)
{
return
isbig5head
(
c
);
}
int
mbcharlen_big5
(
uint
c
)
int
mbcharlen_big5
(
CHARSET_INFO
*
cs
,
uint
c
)
{
return
(
isbig5head
(
c
)
?
2
:
0
);
}
...
...
strings/ctype-euc_kr.c
View file @
55e0a9cb
...
...
@@ -183,19 +183,19 @@ uchar NEAR sort_order_euc_kr[]=
#define iseuc_kr(c) ((0xa1<=(uchar)(c) && (uchar)(c)<=0xfe))
int
ismbchar_euc_kr
(
const
char
*
p
,
const
char
*
e
)
int
ismbchar_euc_kr
(
CHARSET_INFO
*
cs
,
const
char
*
p
,
const
char
*
e
)
{
return
((
*
(
uchar
*
)(
p
)
<
0x80
)
?
0
:
\
iseuc_kr
(
*
(
p
))
&&
(
e
)
-
(
p
)
>
1
&&
iseuc_kr
(
*
((
p
)
+
1
))
?
2
:
\
0
);
}
my_bool
ismbhead_euc_kr
(
uint
c
)
my_bool
ismbhead_euc_kr
(
CHARSET_INFO
*
cs
,
uint
c
)
{
return
(
iseuc_kr
(
c
));
}
int
mbcharlen_euc_kr
(
uint
c
)
int
mbcharlen_euc_kr
(
CHARSET_INFO
*
cs
,
uint
c
)
{
return
(
iseuc_kr
(
c
)
?
2
:
0
);
}
...
...
strings/ctype-gb2312.c
View file @
55e0a9cb
...
...
@@ -166,17 +166,17 @@ uchar NEAR sort_order_gb2312[]=
#define isgb2312tail(c) (0xa1<=(uchar)(c) && (uchar)(c)<=0xfe)
int
ismbchar_gb2312
(
const
char
*
p
,
const
char
*
e
)
int
ismbchar_gb2312
(
CHARSET_INFO
*
cs
,
const
char
*
p
,
const
char
*
e
)
{
return
(
isgb2312head
(
*
(
p
))
&&
(
e
)
-
(
p
)
>
1
&&
isgb2312tail
(
*
((
p
)
+
1
))
?
2
:
0
);
}
my_bool
ismbhead_gb2312
(
uint
c
)
my_bool
ismbhead_gb2312
(
CHARSET_INFO
*
cs
,
uint
c
)
{
return
isgb2312head
(
c
);
}
int
mbcharlen_gb2312
(
uint
c
)
int
mbcharlen_gb2312
(
CHARSET_INFO
*
cs
,
uint
c
)
{
return
(
isgb2312head
(
c
)
?
2
:
0
);
}
...
...
strings/ctype-gbk.c
View file @
55e0a9cb
...
...
@@ -2704,17 +2704,17 @@ extern my_bool my_like_range_gbk(CHARSET_INFO *cs,
}
int
ismbchar_gbk
(
const
char
*
p
,
const
char
*
e
)
int
ismbchar_gbk
(
CHARSET_INFO
*
cs
,
const
char
*
p
,
const
char
*
e
)
{
return
(
isgbkhead
(
*
(
p
))
&&
(
e
)
-
(
p
)
>
1
&&
isgbktail
(
*
((
p
)
+
1
))
?
2
:
0
);
}
my_bool
ismbhead_gbk
(
uint
c
)
my_bool
ismbhead_gbk
(
CHARSET_INFO
*
cs
,
uint
c
)
{
return
isgbkhead
(
c
);
}
int
mbcharlen_gbk
(
uint
c
)
int
mbcharlen_gbk
(
CHARSET_INFO
*
cs
,
uint
c
)
{
return
(
isgbkhead
(
c
)
?
2
:
0
);
}
...
...
strings/ctype-sjis.c
View file @
55e0a9cb
...
...
@@ -183,17 +183,17 @@ uchar NEAR sort_order_sjis[]=
(0x80<=(c) && (c)<=0xfc))
int
ismbchar_sjis
(
const
char
*
p
,
const
char
*
e
)
int
ismbchar_sjis
(
CHARSET_INFO
*
cs
,
const
char
*
p
,
const
char
*
e
)
{
return
(
issjishead
((
uchar
)
*
p
)
&&
(
e
-
p
)
>
1
&&
issjistail
((
uchar
)
p
[
1
])
?
2
:
0
);
}
my_bool
ismbhead_sjis
(
uint
c
)
my_bool
ismbhead_sjis
(
CHARSET_INFO
*
cs
,
uint
c
)
{
return
issjishead
((
uchar
)
c
);
}
int
mbcharlen_sjis
(
uint
c
)
int
mbcharlen_sjis
(
CHARSET_INFO
*
cs
,
uint
c
)
{
return
(
issjishead
((
uchar
)
c
)
?
2
:
0
);
}
...
...
@@ -208,8 +208,8 @@ int my_strnncoll_sjis(CHARSET_INFO *cs,
const
uchar
*
e1
=
s1
+
len1
;
const
uchar
*
e2
=
s2
+
len2
;
while
(
s1
<
e1
&&
s2
<
e2
)
{
if
(
ismbchar_sjis
((
char
*
)
s1
,
(
char
*
)
e1
)
&&
ismbchar_sjis
((
char
*
)
s2
,
(
char
*
)
e2
))
{
if
(
ismbchar_sjis
(
cs
,
(
char
*
)
s1
,
(
char
*
)
e1
)
&&
ismbchar_sjis
(
cs
,
(
char
*
)
s2
,
(
char
*
)
e2
))
{
uint
c1
=
sjiscode
(
*
s1
,
*
(
s1
+
1
));
uint
c2
=
sjiscode
(
*
s2
,
*
(
s2
+
1
));
if
(
c1
!=
c2
)
...
...
@@ -233,7 +233,7 @@ int my_strnxfrm_sjis(CHARSET_INFO *cs,
uchar
*
d_end
=
dest
+
len
;
uchar
*
s_end
=
(
uchar
*
)
src
+
srclen
;
while
(
dest
<
d_end
&&
src
<
s_end
)
{
if
(
ismbchar_sjis
((
char
*
)
src
,
(
char
*
)
s_end
))
{
if
(
ismbchar_sjis
(
cs
,
(
char
*
)
src
,
(
char
*
)
s_end
))
{
*
dest
++
=
*
src
++
;
if
(
dest
<
d_end
&&
src
<
s_end
)
*
dest
++
=
*
src
++
;
...
...
@@ -275,7 +275,7 @@ my_bool my_like_range_sjis(CHARSET_INFO *cs,
char
*
min_end
=
min_str
+
res_length
;
while
(
ptr
<
end
&&
min_str
<
min_end
)
{
if
(
ismbchar_sjis
(
ptr
,
end
))
{
if
(
ismbchar_sjis
(
cs
,
ptr
,
end
))
{
*
min_str
++
=
*
max_str
++
=
*
ptr
++
;
if
(
min_str
<
min_end
)
*
min_str
++
=
*
max_str
++
=
*
ptr
++
;
...
...
@@ -283,7 +283,7 @@ my_bool my_like_range_sjis(CHARSET_INFO *cs,
}
if
(
*
ptr
==
escape
&&
ptr
+
1
<
end
)
{
ptr
++
;
/* Skip escape */
if
(
ismbchar_sjis
(
ptr
,
end
))
if
(
ismbchar_sjis
(
cs
,
ptr
,
end
))
*
min_str
++
=
*
max_str
++
=
*
ptr
++
;
if
(
min_str
<
min_end
)
*
min_str
++
=
*
max_str
++
=
*
ptr
++
;
...
...
strings/ctype-ujis.c
View file @
55e0a9cb
...
...
@@ -183,7 +183,7 @@ uchar NEAR sort_order_ujis[]=
#define isujis_ss3(c) (((c)&0xff) == 0x8f)
int
ismbchar_ujis
(
const
char
*
p
,
const
char
*
e
)
int
ismbchar_ujis
(
CHARSET_INFO
*
cs
,
const
char
*
p
,
const
char
*
e
)
{
return
((
*
(
uchar
*
)(
p
)
<
0x80
)
?
0
:
\
isujis
(
*
(
p
))
&&
(
e
)
-
(
p
)
>
1
&&
isujis
(
*
((
p
)
+
1
))
?
2
:
\
...
...
@@ -192,12 +192,12 @@ int ismbchar_ujis(const char* p, const char *e)
0
);
}
my_bool
ismbhead_ujis
(
uint
c
)
my_bool
ismbhead_ujis
(
CHARSET_INFO
*
cs
,
uint
c
)
{
return
(
isujis
(
c
)
||
isujis_ss2
(
c
)
||
isujis_ss3
(
c
));
}
int
mbcharlen_ujis
(
uint
c
)
int
mbcharlen_ujis
(
CHARSET_INFO
*
cs
,
uint
c
)
{
return
(
isujis
(
c
)
?
2
:
isujis_ss2
(
c
)
?
2
:
isujis_ss3
(
c
)
?
3
:
0
);
}
...
...
strings/ctype-utf8.c
0 → 100644
View file @
55e0a9cb
/* Copyright (C) 2000 MySQL AB
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA */
/* UTF8 according RFC 2279 */
/* Written by Alexander Barkov <bar@udm.net> */
#include <my_global.h>
#include <m_ctype.h>
#ifdef HAVE_CHARSET_utf8
#define HAVE_UNIDATA
#endif
#ifdef HAVE_UNIDATA
static
MY_UNICASE_INFO
plane00
[]
=
{
{
0x0000
,
0x0000
,
0x0000
},
{
0x0001
,
0x0001
,
0x0001
},
{
0x0002
,
0x0002
,
0x0002
},
{
0x0003
,
0x0003
,
0x0003
},
{
0x0004
,
0x0004
,
0x0004
},
{
0x0005
,
0x0005
,
0x0005
},
{
0x0006
,
0x0006
,
0x0006
},
{
0x0007
,
0x0007
,
0x0007
},
{
0x0008
,
0x0008
,
0x0008
},
{
0x0009
,
0x0009
,
0x0009
},
{
0x000A
,
0x000A
,
0x000A
},
{
0x000B
,
0x000B
,
0x000B
},
{
0x000C
,
0x000C
,
0x000C
},
{
0x000D
,
0x000D
,
0x000D
},
{
0x000E
,
0x000E
,
0x000E
},
{
0x000F
,
0x000F
,
0x000F
},
{
0x0010
,
0x0010
,
0x0010
},
{
0x0011
,
0x0011
,
0x0011
},
{
0x0012
,
0x0012
,
0x0012
},
{
0x0013
,
0x0013
,
0x0013
},
{
0x0014
,
0x0014
,
0x0014
},
{
0x0015
,
0x0015
,
0x0015
},
{
0x0016
,
0x0016
,
0x0016
},
{
0x0017
,
0x0017
,
0x0017
},
{
0x0018
,
0x0018
,
0x0018
},
{
0x0019
,
0x0019
,
0x0019
},
{
0x001A
,
0x001A
,
0x001A
},
{
0x001B
,
0x001B
,
0x001B
},
{
0x001C
,
0x001C
,
0x001C
},
{
0x001D
,
0x001D
,
0x001D
},
{
0x001E
,
0x001E
,
0x001E
},
{
0x001F
,
0x001F
,
0x001F
},
{
0x0020
,
0x0020
,
0x0020
},
{
0x0021
,
0x0021
,
0x0021
},
{
0x0022
,
0x0022
,
0x0022
},
{
0x0023
,
0x0023
,
0x0023
},
{
0x0024
,
0x0024
,
0x0024
},
{
0x0025
,
0x0025
,
0x0025
},
{
0x0026
,
0x0026
,
0x0026
},
{
0x0027
,
0x0027
,
0x0027
},
{
0x0028
,
0x0028
,
0x0028
},
{
0x0029
,
0x0029
,
0x0029
},
{
0x002A
,
0x002A
,
0x002A
},
{
0x002B
,
0x002B
,
0x002B
},
{
0x002C
,
0x002C
,
0x002C
},
{
0x002D
,
0x002D
,
0x002D
},
{
0x002E
,
0x002E
,
0x002E
},
{
0x002F
,
0x002F
,
0x002F
},
{
0x0030
,
0x0030
,
0x0030
},
{
0x0031
,
0x0031
,
0x0031
},
{
0x0032
,
0x0032
,
0x0032
},
{
0x0033
,
0x0033
,
0x0033
},
{
0x0034
,
0x0034
,
0x0034
},
{
0x0035
,
0x0035
,
0x0035
},
{
0x0036
,
0x0036
,
0x0036
},
{
0x0037
,
0x0037
,
0x0037
},
{
0x0038
,
0x0038
,
0x0038
},
{
0x0039
,
0x0039
,
0x0039
},
{
0x003A
,
0x003A
,
0x003A
},
{
0x003B
,
0x003B
,
0x003B
},
{
0x003C
,
0x003C
,
0x003C
},
{
0x003D
,
0x003D
,
0x003D
},
{
0x003E
,
0x003E
,
0x003E
},
{
0x003F
,
0x003F
,
0x003F
},
{
0x0040
,
0x0040
,
0x0040
},
{
0x0041
,
0x0061
,
0x0041
},
{
0x0042
,
0x0062
,
0x0042
},
{
0x0043
,
0x0063
,
0x0043
},
{
0x0044
,
0x0064
,
0x0044
},
{
0x0045
,
0x0065
,
0x0045
},
{
0x0046
,
0x0066
,
0x0046
},
{
0x0047
,
0x0067
,
0x0047
},
{
0x0048
,
0x0068
,
0x0048
},
{
0x0049
,
0x0069
,
0x0049
},
{
0x004A
,
0x006A
,
0x004A
},
{
0x004B
,
0x006B
,
0x004B
},
{
0x004C
,
0x006C
,
0x004C
},
{
0x004D
,
0x006D
,
0x004D
},
{
0x004E
,
0x006E
,
0x004E
},
{
0x004F
,
0x006F
,
0x004F
},
{
0x0050
,
0x0070
,
0x0050
},
{
0x0051
,
0x0071
,
0x0051
},
{
0x0052
,
0x0072
,
0x0052
},
{
0x0053
,
0x0073
,
0x0053
},
{
0x0054
,
0x0074
,
0x0054
},
{
0x0055
,
0x0075
,
0x0055
},
{
0x0056
,
0x0076
,
0x0056
},
{
0x0057
,
0x0077
,
0x0057
},
{
0x0058
,
0x0078
,
0x0058
},
{
0x0059
,
0x0079
,
0x0059
},
{
0x005A
,
0x007A
,
0x005A
},
{
0x005B
,
0x005B
,
0x005B
},
{
0x005C
,
0x005C
,
0x005C
},
{
0x005D
,
0x005D
,
0x005D
},
{
0x005E
,
0x005E
,
0x005E
},
{
0x005F
,
0x005F
,
0x005F
},
{
0x0060
,
0x0060
,
0x0060
},
{
0x0041
,
0x0061
,
0x0041
},
{
0x0042
,
0x0062
,
0x0042
},
{
0x0043
,
0x0063
,
0x0043
},
{
0x0044
,
0x0064
,
0x0044
},
{
0x0045
,
0x0065
,
0x0045
},
{
0x0046
,
0x0066
,
0x0046
},
{
0x0047
,
0x0067
,
0x0047
},
{
0x0048
,
0x0068
,
0x0048
},
{
0x0049
,
0x0069
,
0x0049
},
{
0x004A
,
0x006A
,
0x004A
},
{
0x004B
,
0x006B
,
0x004B
},
{
0x004C
,
0x006C
,
0x004C
},
{
0x004D
,
0x006D
,
0x004D
},
{
0x004E
,
0x006E
,
0x004E
},
{
0x004F
,
0x006F
,
0x004F
},
{
0x0050
,
0x0070
,
0x0050
},
{
0x0051
,
0x0071
,
0x0051
},
{
0x0052
,
0x0072
,
0x0052
},
{
0x0053
,
0x0073
,
0x0053
},
{
0x0054
,
0x0074
,
0x0054
},
{
0x0055
,
0x0075
,
0x0055
},
{
0x0056
,
0x0076
,
0x0056
},
{
0x0057
,
0x0077
,
0x0057
},
{
0x0058
,
0x0078
,
0x0058
},
{
0x0059
,
0x0079
,
0x0059
},
{
0x005A
,
0x007A
,
0x005A
},
{
0x007B
,
0x007B
,
0x007B
},
{
0x007C
,
0x007C
,
0x007C
},
{
0x007D
,
0x007D
,
0x007D
},
{
0x007E
,
0x007E
,
0x007E
},
{
0x007F
,
0x007F
,
0x007F
},
{
0x0080
,
0x0080
,
0x0080
},
{
0x0081
,
0x0081
,
0x0081
},
{
0x0082
,
0x0082
,
0x0082
},
{
0x0083
,
0x0083
,
0x0083
},
{
0x0084
,
0x0084
,
0x0084
},
{
0x0085
,
0x0085
,
0x0085
},
{
0x0086
,
0x0086
,
0x0086
},
{
0x0087
,
0x0087
,
0x0087
},
{
0x0088
,
0x0088
,
0x0088
},
{
0x0089
,
0x0089
,
0x0089
},
{
0x008A
,
0x008A
,
0x008A
},
{
0x008B
,
0x008B
,
0x008B
},
{
0x008C
,
0x008C
,
0x008C
},
{
0x008D
,
0x008D
,
0x008D
},
{
0x008E
,
0x008E
,
0x008E
},
{
0x008F
,
0x008F
,
0x008F
},
{
0x0090
,
0x0090
,
0x0090
},
{
0x0091
,
0x0091
,
0x0091
},
{
0x0092
,
0x0092
,
0x0092
},
{
0x0093
,
0x0093
,
0x0093
},
{
0x0094
,
0x0094
,
0x0094
},
{
0x0095
,
0x0095
,
0x0095
},
{
0x0096
,
0x0096
,
0x0096
},
{
0x0097
,
0x0097
,
0x0097
},
{
0x0098
,
0x0098
,
0x0098
},
{
0x0099
,
0x0099
,
0x0099
},
{
0x009A
,
0x009A
,
0x009A
},
{
0x009B
,
0x009B
,
0x009B
},
{
0x009C
,
0x009C
,
0x009C
},
{
0x009D
,
0x009D
,
0x009D
},
{
0x009E
,
0x009E
,
0x009E
},
{
0x009F
,
0x009F
,
0x009F
},
{
0x00A0
,
0x00A0
,
0x00A0
},
{
0x00A1
,
0x00A1
,
0x00A1
},
{
0x00A2
,
0x00A2
,
0x00A2
},
{
0x00A3
,
0x00A3
,
0x00A3
},
{
0x00A4
,
0x00A4
,
0x00A4
},
{
0x00A5
,
0x00A5
,
0x00A5
},
{
0x00A6
,
0x00A6
,
0x00A6
},
{
0x00A7
,
0x00A7
,
0x00A7
},
{
0x00A8
,
0x00A8
,
0x00A8
},
{
0x00A9
,
0x00A9
,
0x00A9
},
{
0x00AA
,
0x00AA
,
0x00AA
},
{
0x00AB
,
0x00AB
,
0x00AB
},
{
0x00AC
,
0x00AC
,
0x00AC
},
{
0x00AD
,
0x00AD
,
0x00AD
},
{
0x00AE
,
0x00AE
,
0x00AE
},
{
0x00AF
,
0x00AF
,
0x00AF
},
{
0x00B0
,
0x00B0
,
0x00B0
},
{
0x00B1
,
0x00B1
,
0x00B1
},
{
0x00B2
,
0x00B2
,
0x00B2
},
{
0x00B3
,
0x00B3
,
0x00B3
},
{
0x00B4
,
0x00B4
,
0x00B4
},
{
0x039C
,
0x00B5
,
0x039C
},
{
0x00B6
,
0x00B6
,
0x00B6
},
{
0x00B7
,
0x00B7
,
0x00B7
},
{
0x00B8
,
0x00B8
,
0x00B8
},
{
0x00B9
,
0x00B9
,
0x00B9
},
{
0x00BA
,
0x00BA
,
0x00BA
},
{
0x00BB
,
0x00BB
,
0x00BB
},
{
0x00BC
,
0x00BC
,
0x00BC
},
{
0x00BD
,
0x00BD
,
0x00BD
},
{
0x00BE
,
0x00BE
,
0x00BE
},
{
0x00BF
,
0x00BF
,
0x00BF
},
{
0x00C0
,
0x00E0
,
0x0041
},
{
0x00C1
,
0x00E1
,
0x0041
},
{
0x00C2
,
0x00E2
,
0x0041
},
{
0x00C3
,
0x00E3
,
0x0041
},
{
0x00C4
,
0x00E4
,
0x0041
},
{
0x00C5
,
0x00E5
,
0x0041
},
{
0x00C6
,
0x00E6
,
0x00C6
},
{
0x00C7
,
0x00E7
,
0x0043
},
{
0x00C8
,
0x00E8
,
0x0045
},
{
0x00C9
,
0x00E9
,
0x0045
},
{
0x00CA
,
0x00EA
,
0x0045
},
{
0x00CB
,
0x00EB
,
0x0045
},
{
0x00CC
,
0x00EC
,
0x0049
},
{
0x00CD
,
0x00ED
,
0x0049
},
{
0x00CE
,
0x00EE
,
0x0049
},
{
0x00CF
,
0x00EF
,
0x0049
},
{
0x00D0
,
0x00F0
,
0x00D0
},
{
0x00D1
,
0x00F1
,
0x004E
},
{
0x00D2
,
0x00F2
,
0x004F
},
{
0x00D3
,
0x00F3
,
0x004F
},
{
0x00D4
,
0x00F4
,
0x004F
},
{
0x00D5
,
0x00F5
,
0x004F
},
{
0x00D6
,
0x00F6
,
0x004F
},
{
0x00D7
,
0x00D7
,
0x00D7
},
{
0x00D8
,
0x00F8
,
0x00D8
},
{
0x00D9
,
0x00F9
,
0x0055
},
{
0x00DA
,
0x00FA
,
0x0055
},
{
0x00DB
,
0x00FB
,
0x0055
},
{
0x00DC
,
0x00FC
,
0x0055
},
{
0x00DD
,
0x00FD
,
0x0059
},
{
0x00DE
,
0x00FE
,
0x00DE
},
{
0x00DF
,
0x00DF
,
0x00DF
},
{
0x00C0
,
0x00E0
,
0x0041
},
{
0x00C1
,
0x00E1
,
0x0041
},
{
0x00C2
,
0x00E2
,
0x0041
},
{
0x00C3
,
0x00E3
,
0x0041
},
{
0x00C4
,
0x00E4
,
0x0041
},
{
0x00C5
,
0x00E5
,
0x0041
},
{
0x00C6
,
0x00E6
,
0x00C6
},
{
0x00C7
,
0x00E7
,
0x0043
},
{
0x00C8
,
0x00E8
,
0x0045
},
{
0x00C9
,
0x00E9
,
0x0045
},
{
0x00CA
,
0x00EA
,
0x0045
},
{
0x00CB
,
0x00EB
,
0x0045
},
{
0x00CC
,
0x00EC
,
0x0049
},
{
0x00CD
,
0x00ED
,
0x0049
},
{
0x00CE
,
0x00EE
,
0x0049
},
{
0x00CF
,
0x00EF
,
0x0049
},
{
0x00D0
,
0x00F0
,
0x00D0
},
{
0x00D1
,
0x00F1
,
0x004E
},
{
0x00D2
,
0x00F2
,
0x004F
},
{
0x00D3
,
0x00F3
,
0x004F
},
{
0x00D4
,
0x00F4
,
0x004F
},
{
0x00D5
,
0x00F5
,
0x004F
},
{
0x00D6
,
0x00F6
,
0x004F
},
{
0x00F7
,
0x00F7
,
0x00F7
},
{
0x00D8
,
0x00F8
,
0x00D8
},
{
0x00D9
,
0x00F9
,
0x0055
},
{
0x00DA
,
0x00FA
,
0x0055
},
{
0x00DB
,
0x00FB
,
0x0055
},
{
0x00DC
,
0x00FC
,
0x0055
},
{
0x00DD
,
0x00FD
,
0x0059
},
{
0x00DE
,
0x00FE
,
0x00DE
},
{
0x0178
,
0x00FF
,
0x0059
}
};
static
MY_UNICASE_INFO
plane01
[]
=
{
{
0x0100
,
0x0101
,
0x0041
},
{
0x0100
,
0x0101
,
0x0041
},
{
0x0102
,
0x0103
,
0x0041
},
{
0x0102
,
0x0103
,
0x0041
},
{
0x0104
,
0x0105
,
0x0041
},
{
0x0104
,
0x0105
,
0x0041
},
{
0x0106
,
0x0107
,
0x0043
},
{
0x0106
,
0x0107
,
0x0043
},
{
0x0108
,
0x0109
,
0x0043
},
{
0x0108
,
0x0109
,
0x0043
},
{
0x010A
,
0x010B
,
0x0043
},
{
0x010A
,
0x010B
,
0x0043
},
{
0x010C
,
0x010D
,
0x0043
},
{
0x010C
,
0x010D
,
0x0043
},
{
0x010E
,
0x010F
,
0x0044
},
{
0x010E
,
0x010F
,
0x0044
},
{
0x0110
,
0x0111
,
0x0110
},
{
0x0110
,
0x0111
,
0x0110
},
{
0x0112
,
0x0113
,
0x0045
},
{
0x0112
,
0x0113
,
0x0045
},
{
0x0114
,
0x0115
,
0x0045
},
{
0x0114
,
0x0115
,
0x0045
},
{
0x0116
,
0x0117
,
0x0045
},
{
0x0116
,
0x0117
,
0x0045
},
{
0x0118
,
0x0119
,
0x0045
},
{
0x0118
,
0x0119
,
0x0045
},
{
0x011A
,
0x011B
,
0x0045
},
{
0x011A
,
0x011B
,
0x0045
},
{
0x011C
,
0x011D
,
0x0047
},
{
0x011C
,
0x011D
,
0x0047
},
{
0x011E
,
0x011F
,
0x0047
},
{
0x011E
,
0x011F
,
0x0047
},
{
0x0120
,
0x0121
,
0x0047
},
{
0x0120
,
0x0121
,
0x0047
},
{
0x0122
,
0x0123
,
0x0047
},
{
0x0122
,
0x0123
,
0x0047
},
{
0x0124
,
0x0125
,
0x0048
},
{
0x0124
,
0x0125
,
0x0048
},
{
0x0126
,
0x0127
,
0x0126
},
{
0x0126
,
0x0127
,
0x0126
},
{
0x0128
,
0x0129
,
0x0049
},
{
0x0128
,
0x0129
,
0x0049
},
{
0x012A
,
0x012B
,
0x0049
},
{
0x012A
,
0x012B
,
0x0049
},
{
0x012C
,
0x012D
,
0x0049
},
{
0x012C
,
0x012D
,
0x0049
},
{
0x012E
,
0x012F
,
0x0049
},
{
0x012E
,
0x012F
,
0x0049
},
{
0x0130
,
0x0069
,
0x0049
},
{
0x0049
,
0x0131
,
0x0049
},
{
0x0132
,
0x0133
,
0x0132
},
{
0x0132
,
0x0133
,
0x0132
},
{
0x0134
,
0x0135
,
0x004A
},
{
0x0134
,
0x0135
,
0x004A
},
{
0x0136
,
0x0137
,
0x004B
},
{
0x0136
,
0x0137
,
0x004B
},
{
0x0138
,
0x0138
,
0x0138
},
{
0x0139
,
0x013A
,
0x004C
},
{
0x0139
,
0x013A
,
0x004C
},
{
0x013B
,
0x013C
,
0x004C
},
{
0x013B
,
0x013C
,
0x004C
},
{
0x013D
,
0x013E
,
0x004C
},
{
0x013D
,
0x013E
,
0x004C
},
{
0x013F
,
0x0140
,
0x013F
},
{
0x013F
,
0x0140
,
0x013F
},
{
0x0141
,
0x0142
,
0x0141
},
{
0x0141
,
0x0142
,
0x0141
},
{
0x0143
,
0x0144
,
0x004E
},
{
0x0143
,
0x0144
,
0x004E
},
{
0x0145
,
0x0146
,
0x004E
},
{
0x0145
,
0x0146
,
0x004E
},
{
0x0147
,
0x0148
,
0x004E
},
{
0x0147
,
0x0148
,
0x004E
},
{
0x0149
,
0x0149
,
0x0149
},
{
0x014A
,
0x014B
,
0x014A
},
{
0x014A
,
0x014B
,
0x014A
},
{
0x014C
,
0x014D
,
0x004F
},
{
0x014C
,
0x014D
,
0x004F
},
{
0x014E
,
0x014F
,
0x004F
},
{
0x014E
,
0x014F
,
0x004F
},
{
0x0150
,
0x0151
,
0x004F
},
{
0x0150
,
0x0151
,
0x004F
},
{
0x0152
,
0x0153
,
0x0152
},
{
0x0152
,
0x0153
,
0x0152
},
{
0x0154
,
0x0155
,
0x0052
},
{
0x0154
,
0x0155
,
0x0052
},
{
0x0156
,
0x0157
,
0x0052
},
{
0x0156
,
0x0157
,
0x0052
},
{
0x0158
,
0x0159
,
0x0052
},
{
0x0158
,
0x0159
,
0x0052
},
{
0x015A
,
0x015B
,
0x0053
},
{
0x015A
,
0x015B
,
0x0053
},
{
0x015C
,
0x015D
,
0x0053
},
{
0x015C
,
0x015D
,
0x0053
},
{
0x015E
,
0x015F
,
0x0053
},
{
0x015E
,
0x015F
,
0x0053
},
{
0x0160
,
0x0161
,
0x0053
},
{
0x0160
,
0x0161
,
0x0053
},
{
0x0162
,
0x0163
,
0x0054
},
{
0x0162
,
0x0163
,
0x0054
},
{
0x0164
,
0x0165
,
0x0054
},
{
0x0164
,
0x0165
,
0x0054
},
{
0x0166
,
0x0167
,
0x0166
},
{
0x0166
,
0x0167
,
0x0166
},
{
0x0168
,
0x0169
,
0x0055
},
{
0x0168
,
0x0169
,
0x0055
},
{
0x016A
,
0x016B
,
0x0055
},
{
0x016A
,
0x016B
,
0x0055
},
{
0x016C
,
0x016D
,
0x0055
},
{
0x016C
,
0x016D
,
0x0055
},
{
0x016E
,
0x016F
,
0x0055
},
{
0x016E
,
0x016F
,
0x0055
},
{
0x0170
,
0x0171
,
0x0055
},
{
0x0170
,
0x0171
,
0x0055
},
{
0x0172
,
0x0173
,
0x0055
},
{
0x0172
,
0x0173
,
0x0055
},
{
0x0174
,
0x0175
,
0x0057
},
{
0x0174
,
0x0175
,
0x0057
},
{
0x0176
,
0x0177
,
0x0059
},
{
0x0176
,
0x0177
,
0x0059
},
{
0x0178
,
0x00FF
,
0x0059
},
{
0x0179
,
0x017A
,
0x005A
},
{
0x0179
,
0x017A
,
0x005A
},
{
0x017B
,
0x017C
,
0x005A
},
{
0x017B
,
0x017C
,
0x005A
},
{
0x017D
,
0x017E
,
0x005A
},
{
0x017D
,
0x017E
,
0x005A
},
{
0x0053
,
0x017F
,
0x0053
},
{
0x0180
,
0x0180
,
0x0180
},
{
0x0181
,
0x0253
,
0x0181
},
{
0x0182
,
0x0183
,
0x0182
},
{
0x0182
,
0x0183
,
0x0182
},
{
0x0184
,
0x0185
,
0x0184
},
{
0x0184
,
0x0185
,
0x0184
},
{
0x0186
,
0x0254
,
0x0186
},
{
0x0187
,
0x0188
,
0x0187
},
{
0x0187
,
0x0188
,
0x0187
},
{
0x0189
,
0x0256
,
0x0189
},
{
0x018A
,
0x0257
,
0x018A
},
{
0x018B
,
0x018C
,
0x018B
},
{
0x018B
,
0x018C
,
0x018B
},
{
0x018D
,
0x018D
,
0x018D
},
{
0x018E
,
0x01DD
,
0x018E
},
{
0x018F
,
0x0259
,
0x018F
},
{
0x0190
,
0x025B
,
0x0190
},
{
0x0191
,
0x0192
,
0x0191
},
{
0x0191
,
0x0192
,
0x0191
},
{
0x0193
,
0x0260
,
0x0193
},
{
0x0194
,
0x0263
,
0x0194
},
{
0x01F6
,
0x0195
,
0x01F6
},
{
0x0196
,
0x0269
,
0x0196
},
{
0x0197
,
0x0268
,
0x0197
},
{
0x0198
,
0x0199
,
0x0198
},
{
0x0198
,
0x0199
,
0x0198
},
{
0x019A
,
0x019A
,
0x019A
},
{
0x019B
,
0x019B
,
0x019B
},
{
0x019C
,
0x026F
,
0x019C
},
{
0x019D
,
0x0272
,
0x019D
},
{
0x019E
,
0x019E
,
0x019E
},
{
0x019F
,
0x0275
,
0x019F
},
{
0x01A0
,
0x01A1
,
0x004F
},
{
0x01A0
,
0x01A1
,
0x004F
},
{
0x01A2
,
0x01A3
,
0x01A2
},
{
0x01A2
,
0x01A3
,
0x01A2
},
{
0x01A4
,
0x01A5
,
0x01A4
},
{
0x01A4
,
0x01A5
,
0x01A4
},
{
0x01A6
,
0x0280
,
0x01A6
},
{
0x01A7
,
0x01A8
,
0x01A7
},
{
0x01A7
,
0x01A8
,
0x01A7
},
{
0x01A9
,
0x0283
,
0x01A9
},
{
0x01AA
,
0x01AA
,
0x01AA
},
{
0x01AB
,
0x01AB
,
0x01AB
},
{
0x01AC
,
0x01AD
,
0x01AC
},
{
0x01AC
,
0x01AD
,
0x01AC
},
{
0x01AE
,
0x0288
,
0x01AE
},
{
0x01AF
,
0x01B0
,
0x0055
},
{
0x01AF
,
0x01B0
,
0x0055
},
{
0x01B1
,
0x028A
,
0x01B1
},
{
0x01B2
,
0x028B
,
0x01B2
},
{
0x01B3
,
0x01B4
,
0x01B3
},
{
0x01B3
,
0x01B4
,
0x01B3
},
{
0x01B5
,
0x01B6
,
0x01B5
},
{
0x01B5
,
0x01B6
,
0x01B5
},
{
0x01B7
,
0x0292
,
0x01B7
},
{
0x01B8
,
0x01B9
,
0x01B8
},
{
0x01B8
,
0x01B9
,
0x01B8
},
{
0x01BA
,
0x01BA
,
0x01BA
},
{
0x01BB
,
0x01BB
,
0x01BB
},
{
0x01BC
,
0x01BD
,
0x01BC
},
{
0x01BC
,
0x01BD
,
0x01BC
},
{
0x01BE
,
0x01BE
,
0x01BE
},
{
0x01F7
,
0x01BF
,
0x01F7
},
{
0x01C0
,
0x01C0
,
0x01C0
},
{
0x01C1
,
0x01C1
,
0x01C1
},
{
0x01C2
,
0x01C2
,
0x01C2
},
{
0x01C3
,
0x01C3
,
0x01C3
},
{
0x01C4
,
0x01C6
,
0x01C4
},
{
0x01C4
,
0x01C6
,
0x01C4
},
{
0x01C4
,
0x01C6
,
0x01C4
},
{
0x01C7
,
0x01C9
,
0x01C7
},
{
0x01C7
,
0x01C9
,
0x01C7
},
{
0x01C7
,
0x01C9
,
0x01C7
},
{
0x01CA
,
0x01CC
,
0x01CA
},
{
0x01CA
,
0x01CC
,
0x01CA
},
{
0x01CA
,
0x01CC
,
0x01CA
},
{
0x01CD
,
0x01CE
,
0x0041
},
{
0x01CD
,
0x01CE
,
0x0041
},
{
0x01CF
,
0x01D0
,
0x0049
},
{
0x01CF
,
0x01D0
,
0x0049
},
{
0x01D1
,
0x01D2
,
0x004F
},
{
0x01D1
,
0x01D2
,
0x004F
},
{
0x01D3
,
0x01D4
,
0x0055
},
{
0x01D3
,
0x01D4
,
0x0055
},
{
0x01D5
,
0x01D6
,
0x0055
},
{
0x01D5
,
0x01D6
,
0x0055
},
{
0x01D7
,
0x01D8
,
0x0055
},
{
0x01D7
,
0x01D8
,
0x0055
},
{
0x01D9
,
0x01DA
,
0x0055
},
{
0x01D9
,
0x01DA
,
0x0055
},
{
0x01DB
,
0x01DC
,
0x0055
},
{
0x01DB
,
0x01DC
,
0x0055
},
{
0x018E
,
0x01DD
,
0x018E
},
{
0x01DE
,
0x01DF
,
0x0041
},
{
0x01DE
,
0x01DF
,
0x0041
},
{
0x01E0
,
0x01E1
,
0x0041
},
{
0x01E0
,
0x01E1
,
0x0041
},
{
0x01E2
,
0x01E3
,
0x00C6
},
{
0x01E2
,
0x01E3
,
0x00C6
},
{
0x01E4
,
0x01E5
,
0x01E4
},
{
0x01E4
,
0x01E5
,
0x01E4
},
{
0x01E6
,
0x01E7
,
0x0047
},
{
0x01E6
,
0x01E7
,
0x0047
},
{
0x01E8
,
0x01E9
,
0x004B
},
{
0x01E8
,
0x01E9
,
0x004B
},
{
0x01EA
,
0x01EB
,
0x004F
},
{
0x01EA
,
0x01EB
,
0x004F
},
{
0x01EC
,
0x01ED
,
0x004F
},
{
0x01EC
,
0x01ED
,
0x004F
},
{
0x01EE
,
0x01EF
,
0x01B7
},
{
0x01EE
,
0x01EF
,
0x01B7
},
{
0x01F0
,
0x01F0
,
0x004A
},
{
0x01F1
,
0x01F3
,
0x01F1
},
{
0x01F1
,
0x01F3
,
0x01F1
},
{
0x01F1
,
0x01F3
,
0x01F1
},
{
0x01F4
,
0x01F5
,
0x0047
},
{
0x01F4
,
0x01F5
,
0x0047
},
{
0x01F6
,
0x0195
,
0x01F6
},
{
0x01F7
,
0x01BF
,
0x01F7
},
{
0x01F8
,
0x01F9
,
0x004E
},
{
0x01F8
,
0x01F9
,
0x004E
},
{
0x01FA
,
0x01FB
,
0x0041
},
{
0x01FA
,
0x01FB
,
0x0041
},
{
0x01FC
,
0x01FD
,
0x00C6
},
{
0x01FC
,
0x01FD
,
0x00C6
},
{
0x01FE
,
0x01FF
,
0x00D8
},
{
0x01FE
,
0x01FF
,
0x00D8
}
};
static
MY_UNICASE_INFO
plane02
[]
=
{
{
0x0200
,
0x0201
,
0x0041
},
{
0x0200
,
0x0201
,
0x0041
},
{
0x0202
,
0x0203
,
0x0041
},
{
0x0202
,
0x0203
,
0x0041
},
{
0x0204
,
0x0205
,
0x0045
},
{
0x0204
,
0x0205
,
0x0045
},
{
0x0206
,
0x0207
,
0x0045
},
{
0x0206
,
0x0207
,
0x0045
},
{
0x0208
,
0x0209
,
0x0049
},
{
0x0208
,
0x0209
,
0x0049
},
{
0x020A
,
0x020B
,
0x0049
},
{
0x020A
,
0x020B
,
0x0049
},
{
0x020C
,
0x020D
,
0x004F
},
{
0x020C
,
0x020D
,
0x004F
},
{
0x020E
,
0x020F
,
0x004F
},
{
0x020E
,
0x020F
,
0x004F
},
{
0x0210
,
0x0211
,
0x0052
},
{
0x0210
,
0x0211
,
0x0052
},
{
0x0212
,
0x0213
,
0x0052
},
{
0x0212
,
0x0213
,
0x0052
},
{
0x0214
,
0x0215
,
0x0055
},
{
0x0214
,
0x0215
,
0x0055
},
{
0x0216
,
0x0217
,
0x0055
},
{
0x0216
,
0x0217
,
0x0055
},
{
0x0218
,
0x0219
,
0x0053
},
{
0x0218
,
0x0219
,
0x0053
},
{
0x021A
,
0x021B
,
0x0054
},
{
0x021A
,
0x021B
,
0x0054
},
{
0x021C
,
0x021D
,
0x021C
},
{
0x021C
,
0x021D
,
0x021C
},
{
0x021E
,
0x021F
,
0x0048
},
{
0x021E
,
0x021F
,
0x0048
},
{
0x0220
,
0x0220
,
0x0220
},
{
0x0221
,
0x0221
,
0x0221
},
{
0x0222
,
0x0223
,
0x0222
},
{
0x0222
,
0x0223
,
0x0222
},
{
0x0224
,
0x0225
,
0x0224
},
{
0x0224
,
0x0225
,
0x0224
},
{
0x0226
,
0x0227
,
0x0041
},
{
0x0226
,
0x0227
,
0x0041
},
{
0x0228
,
0x0229
,
0x0045
},
{
0x0228
,
0x0229
,
0x0045
},
{
0x022A
,
0x022B
,
0x004F
},
{
0x022A
,
0x022B
,
0x004F
},
{
0x022C
,
0x022D
,
0x004F
},
{
0x022C
,
0x022D
,
0x004F
},
{
0x022E
,
0x022F
,
0x004F
},
{
0x022E
,
0x022F
,
0x004F
},
{
0x0230
,
0x0231
,
0x004F
},
{
0x0230
,
0x0231
,
0x004F
},
{
0x0232
,
0x0233
,
0x0059
},
{
0x0232
,
0x0233
,
0x0059
},
{
0x0234
,
0x0234
,
0x0234
},
{
0x0235
,
0x0235
,
0x0235
},
{
0x0236
,
0x0236
,
0x0236
},
{
0x0237
,
0x0237
,
0x0237
},
{
0x0238
,
0x0238
,
0x0238
},
{
0x0239
,
0x0239
,
0x0239
},
{
0x023A
,
0x023A
,
0x023A
},
{
0x023B
,
0x023B
,
0x023B
},
{
0x023C
,
0x023C
,
0x023C
},
{
0x023D
,
0x023D
,
0x023D
},
{
0x023E
,
0x023E
,
0x023E
},
{
0x023F
,
0x023F
,
0x023F
},
{
0x0240
,
0x0240
,
0x0240
},
{
0x0241
,
0x0241
,
0x0241
},
{
0x0242
,
0x0242
,
0x0242
},
{
0x0243
,
0x0243
,
0x0243
},
{
0x0244
,
0x0244
,
0x0244
},
{
0x0245
,
0x0245
,
0x0245
},
{
0x0246
,
0x0246
,
0x0246
},
{
0x0247
,
0x0247
,
0x0247
},
{
0x0248
,
0x0248
,
0x0248
},
{
0x0249
,
0x0249
,
0x0249
},
{
0x024A
,
0x024A
,
0x024A
},
{
0x024B
,
0x024B
,
0x024B
},
{
0x024C
,
0x024C
,
0x024C
},
{
0x024D
,
0x024D
,
0x024D
},
{
0x024E
,
0x024E
,
0x024E
},
{
0x024F
,
0x024F
,
0x024F
},
{
0x0250
,
0x0250
,
0x0250
},
{
0x0251
,
0x0251
,
0x0251
},
{
0x0252
,
0x0252
,
0x0252
},
{
0x0181
,
0x0253
,
0x0181
},
{
0x0186
,
0x0254
,
0x0186
},
{
0x0255
,
0x0255
,
0x0255
},
{
0x0189
,
0x0256
,
0x0189
},
{
0x018A
,
0x0257
,
0x018A
},
{
0x0258
,
0x0258
,
0x0258
},
{
0x018F
,
0x0259
,
0x018F
},
{
0x025A
,
0x025A
,
0x025A
},
{
0x0190
,
0x025B
,
0x0190
},
{
0x025C
,
0x025C
,
0x025C
},
{
0x025D
,
0x025D
,
0x025D
},
{
0x025E
,
0x025E
,
0x025E
},
{
0x025F
,
0x025F
,
0x025F
},
{
0x0193
,
0x0260
,
0x0193
},
{
0x0261
,
0x0261
,
0x0261
},
{
0x0262
,
0x0262
,
0x0262
},
{
0x0194
,
0x0263
,
0x0194
},
{
0x0264
,
0x0264
,
0x0264
},
{
0x0265
,
0x0265
,
0x0265
},
{
0x0266
,
0x0266
,
0x0266
},
{
0x0267
,
0x0267
,
0x0267
},
{
0x0197
,
0x0268
,
0x0197
},
{
0x0196
,
0x0269
,
0x0196
},
{
0x026A
,
0x026A
,
0x026A
},
{
0x026B
,
0x026B
,
0x026B
},
{
0x026C
,
0x026C
,
0x026C
},
{
0x026D
,
0x026D
,
0x026D
},
{
0x026E
,
0x026E
,
0x026E
},
{
0x019C
,
0x026F
,
0x019C
},
{
0x0270
,
0x0270
,
0x0270
},
{
0x0271
,
0x0271
,
0x0271
},
{
0x019D
,
0x0272
,
0x019D
},
{
0x0273
,
0x0273
,
0x0273
},
{
0x0274
,
0x0274
,
0x0274
},
{
0x019F
,
0x0275
,
0x019F
},
{
0x0276
,
0x0276
,
0x0276
},
{
0x0277
,
0x0277
,
0x0277
},
{
0x0278
,
0x0278
,
0x0278
},
{
0x0279
,
0x0279
,
0x0279
},
{
0x027A
,
0x027A
,
0x027A
},
{
0x027B
,
0x027B
,
0x027B
},
{
0x027C
,
0x027C
,
0x027C
},
{
0x027D
,
0x027D
,
0x027D
},
{
0x027E
,
0x027E
,
0x027E
},
{
0x027F
,
0x027F
,
0x027F
},
{
0x01A6
,
0x0280
,
0x01A6
},
{
0x0281
,
0x0281
,
0x0281
},
{
0x0282
,
0x0282
,
0x0282
},
{
0x01A9
,
0x0283
,
0x01A9
},
{
0x0284
,
0x0284
,
0x0284
},
{
0x0285
,
0x0285
,
0x0285
},
{
0x0286
,
0x0286
,
0x0286
},
{
0x0287
,
0x0287
,
0x0287
},
{
0x01AE
,
0x0288
,
0x01AE
},
{
0x0289
,
0x0289
,
0x0289
},
{
0x01B1
,
0x028A
,
0x01B1
},
{
0x01B2
,
0x028B
,
0x01B2
},
{
0x028C
,
0x028C
,
0x028C
},
{
0x028D
,
0x028D
,
0x028D
},
{
0x028E
,
0x028E
,
0x028E
},
{
0x028F
,
0x028F
,
0x028F
},
{
0x0290
,
0x0290
,
0x0290
},
{
0x0291
,
0x0291
,
0x0291
},
{
0x01B7
,
0x0292
,
0x01B7
},
{
0x0293
,
0x0293
,
0x0293
},
{
0x0294
,
0x0294
,
0x0294
},
{
0x0295
,
0x0295
,
0x0295
},
{
0x0296
,
0x0296
,
0x0296
},
{
0x0297
,
0x0297
,
0x0297
},
{
0x0298
,
0x0298
,
0x0298
},
{
0x0299
,
0x0299
,
0x0299
},
{
0x029A
,
0x029A
,
0x029A
},
{
0x029B
,
0x029B
,
0x029B
},
{
0x029C
,
0x029C
,
0x029C
},
{
0x029D
,
0x029D
,
0x029D
},
{
0x029E
,
0x029E
,
0x029E
},
{
0x029F
,
0x029F
,
0x029F
},
{
0x02A0
,
0x02A0
,
0x02A0
},
{
0x02A1
,
0x02A1
,
0x02A1
},
{
0x02A2
,
0x02A2
,
0x02A2
},
{
0x02A3
,
0x02A3
,
0x02A3
},
{
0x02A4
,
0x02A4
,
0x02A4
},
{
0x02A5
,
0x02A5
,
0x02A5
},
{
0x02A6
,
0x02A6
,
0x02A6
},
{
0x02A7
,
0x02A7
,
0x02A7
},
{
0x02A8
,
0x02A8
,
0x02A8
},
{
0x02A9
,
0x02A9
,
0x02A9
},
{
0x02AA
,
0x02AA
,
0x02AA
},
{
0x02AB
,
0x02AB
,
0x02AB
},
{
0x02AC
,
0x02AC
,
0x02AC
},
{
0x02AD
,
0x02AD
,
0x02AD
},
{
0x02AE
,
0x02AE
,
0x02AE
},
{
0x02AF
,
0x02AF
,
0x02AF
},
{
0x02B0
,
0x02B0
,
0x02B0
},
{
0x02B1
,
0x02B1
,
0x02B1
},
{
0x02B2
,
0x02B2
,
0x02B2
},
{
0x02B3
,
0x02B3
,
0x02B3
},
{
0x02B4
,
0x02B4
,
0x02B4
},
{
0x02B5
,
0x02B5
,
0x02B5
},
{
0x02B6
,
0x02B6
,
0x02B6
},
{
0x02B7
,
0x02B7
,
0x02B7
},
{
0x02B8
,
0x02B8
,
0x02B8
},
{
0x02B9
,
0x02B9
,
0x02B9
},
{
0x02BA
,
0x02BA
,
0x02BA
},
{
0x02BB
,
0x02BB
,
0x02BB
},
{
0x02BC
,
0x02BC
,
0x02BC
},
{
0x02BD
,
0x02BD
,
0x02BD
},
{
0x02BE
,
0x02BE
,
0x02BE
},
{
0x02BF
,
0x02BF
,
0x02BF
},
{
0x02C0
,
0x02C0
,
0x02C0
},
{
0x02C1
,
0x02C1
,
0x02C1
},
{
0x02C2
,
0x02C2
,
0x02C2
},
{
0x02C3
,
0x02C3
,
0x02C3
},
{
0x02C4
,
0x02C4
,
0x02C4
},
{
0x02C5
,
0x02C5
,
0x02C5
},
{
0x02C6
,
0x02C6
,
0x02C6
},
{
0x02C7
,
0x02C7
,
0x02C7
},
{
0x02C8
,
0x02C8
,
0x02C8
},
{
0x02C9
,
0x02C9
,
0x02C9
},
{
0x02CA
,
0x02CA
,
0x02CA
},
{
0x02CB
,
0x02CB
,
0x02CB
},
{
0x02CC
,
0x02CC
,
0x02CC
},
{
0x02CD
,
0x02CD
,
0x02CD
},
{
0x02CE
,
0x02CE
,
0x02CE
},
{
0x02CF
,
0x02CF
,
0x02CF
},
{
0x02D0
,
0x02D0
,
0x02D0
},
{
0x02D1
,
0x02D1
,
0x02D1
},
{
0x02D2
,
0x02D2
,
0x02D2
},
{
0x02D3
,
0x02D3
,
0x02D3
},
{
0x02D4
,
0x02D4
,
0x02D4
},
{
0x02D5
,
0x02D5
,
0x02D5
},
{
0x02D6
,
0x02D6
,
0x02D6
},
{
0x02D7
,
0x02D7
,
0x02D7
},
{
0x02D8
,
0x02D8
,
0x02D8
},
{
0x02D9
,
0x02D9
,
0x02D9
},
{
0x02DA
,
0x02DA
,
0x02DA
},
{
0x02DB
,
0x02DB
,
0x02DB
},
{
0x02DC
,
0x02DC
,
0x02DC
},
{
0x02DD
,
0x02DD
,
0x02DD
},
{
0x02DE
,
0x02DE
,
0x02DE
},
{
0x02DF
,
0x02DF
,
0x02DF
},
{
0x02E0
,
0x02E0
,
0x02E0
},
{
0x02E1
,
0x02E1
,
0x02E1
},
{
0x02E2
,
0x02E2
,
0x02E2
},
{
0x02E3
,
0x02E3
,
0x02E3
},
{
0x02E4
,
0x02E4
,
0x02E4
},
{
0x02E5
,
0x02E5
,
0x02E5
},
{
0x02E6
,
0x02E6
,
0x02E6
},
{
0x02E7
,
0x02E7
,
0x02E7
},
{
0x02E8
,
0x02E8
,
0x02E8
},
{
0x02E9
,
0x02E9
,
0x02E9
},
{
0x02EA
,
0x02EA
,
0x02EA
},
{
0x02EB
,
0x02EB
,
0x02EB
},
{
0x02EC
,
0x02EC
,
0x02EC
},
{
0x02ED
,
0x02ED
,
0x02ED
},
{
0x02EE
,
0x02EE
,
0x02EE
},
{
0x02EF
,
0x02EF
,
0x02EF
},
{
0x02F0
,
0x02F0
,
0x02F0
},
{
0x02F1
,
0x02F1
,
0x02F1
},
{
0x02F2
,
0x02F2
,
0x02F2
},
{
0x02F3
,
0x02F3
,
0x02F3
},
{
0x02F4
,
0x02F4
,
0x02F4
},
{
0x02F5
,
0x02F5
,
0x02F5
},
{
0x02F6
,
0x02F6
,
0x02F6
},
{
0x02F7
,
0x02F7
,
0x02F7
},
{
0x02F8
,
0x02F8
,
0x02F8
},
{
0x02F9
,
0x02F9
,
0x02F9
},
{
0x02FA
,
0x02FA
,
0x02FA
},
{
0x02FB
,
0x02FB
,
0x02FB
},
{
0x02FC
,
0x02FC
,
0x02FC
},
{
0x02FD
,
0x02FD
,
0x02FD
},
{
0x02FE
,
0x02FE
,
0x02FE
},
{
0x02FF
,
0x02FF
,
0x02FF
}
};
static
MY_UNICASE_INFO
plane03
[]
=
{
{
0x0300
,
0x0300
,
0x0300
},
{
0x0301
,
0x0301
,
0x0301
},
{
0x0302
,
0x0302
,
0x0302
},
{
0x0303
,
0x0303
,
0x0303
},
{
0x0304
,
0x0304
,
0x0304
},
{
0x0305
,
0x0305
,
0x0305
},
{
0x0306
,
0x0306
,
0x0306
},
{
0x0307
,
0x0307
,
0x0307
},
{
0x0308
,
0x0308
,
0x0308
},
{
0x0309
,
0x0309
,
0x0309
},
{
0x030A
,
0x030A
,
0x030A
},
{
0x030B
,
0x030B
,
0x030B
},
{
0x030C
,
0x030C
,
0x030C
},
{
0x030D
,
0x030D
,
0x030D
},
{
0x030E
,
0x030E
,
0x030E
},
{
0x030F
,
0x030F
,
0x030F
},
{
0x0310
,
0x0310
,
0x0310
},
{
0x0311
,
0x0311
,
0x0311
},
{
0x0312
,
0x0312
,
0x0312
},
{
0x0313
,
0x0313
,
0x0313
},
{
0x0314
,
0x0314
,
0x0314
},
{
0x0315
,
0x0315
,
0x0315
},
{
0x0316
,
0x0316
,
0x0316
},
{
0x0317
,
0x0317
,
0x0317
},
{
0x0318
,
0x0318
,
0x0318
},
{
0x0319
,
0x0319
,
0x0319
},
{
0x031A
,
0x031A
,
0x031A
},
{
0x031B
,
0x031B
,
0x031B
},
{
0x031C
,
0x031C
,
0x031C
},
{
0x031D
,
0x031D
,
0x031D
},
{
0x031E
,
0x031E
,
0x031E
},
{
0x031F
,
0x031F
,
0x031F
},
{
0x0320
,
0x0320
,
0x0320
},
{
0x0321
,
0x0321
,
0x0321
},
{
0x0322
,
0x0322
,
0x0322
},
{
0x0323
,
0x0323
,
0x0323
},
{
0x0324
,
0x0324
,
0x0324
},
{
0x0325
,
0x0325
,
0x0325
},
{
0x0326
,
0x0326
,
0x0326
},
{
0x0327
,
0x0327
,
0x0327
},
{
0x0328
,
0x0328
,
0x0328
},
{
0x0329
,
0x0329
,
0x0329
},
{
0x032A
,
0x032A
,
0x032A
},
{
0x032B
,
0x032B
,
0x032B
},
{
0x032C
,
0x032C
,
0x032C
},
{
0x032D
,
0x032D
,
0x032D
},
{
0x032E
,
0x032E
,
0x032E
},
{
0x032F
,
0x032F
,
0x032F
},
{
0x0330
,
0x0330
,
0x0330
},
{
0x0331
,
0x0331
,
0x0331
},
{
0x0332
,
0x0332
,
0x0332
},
{
0x0333
,
0x0333
,
0x0333
},
{
0x0334
,
0x0334
,
0x0334
},
{
0x0335
,
0x0335
,
0x0335
},
{
0x0336
,
0x0336
,
0x0336
},
{
0x0337
,
0x0337
,
0x0337
},
{
0x0338
,
0x0338
,
0x0338
},
{
0x0339
,
0x0339
,
0x0339
},
{
0x033A
,
0x033A
,
0x033A
},
{
0x033B
,
0x033B
,
0x033B
},
{
0x033C
,
0x033C
,
0x033C
},
{
0x033D
,
0x033D
,
0x033D
},
{
0x033E
,
0x033E
,
0x033E
},
{
0x033F
,
0x033F
,
0x033F
},
{
0x0340
,
0x0340
,
0x0340
},
{
0x0341
,
0x0341
,
0x0341
},
{
0x0342
,
0x0342
,
0x0342
},
{
0x0343
,
0x0343
,
0x0343
},
{
0x0344
,
0x0344
,
0x0344
},
{
0x0399
,
0x0345
,
0x0399
},
{
0x0346
,
0x0346
,
0x0346
},
{
0x0347
,
0x0347
,
0x0347
},
{
0x0348
,
0x0348
,
0x0348
},
{
0x0349
,
0x0349
,
0x0349
},
{
0x034A
,
0x034A
,
0x034A
},
{
0x034B
,
0x034B
,
0x034B
},
{
0x034C
,
0x034C
,
0x034C
},
{
0x034D
,
0x034D
,
0x034D
},
{
0x034E
,
0x034E
,
0x034E
},
{
0x034F
,
0x034F
,
0x034F
},
{
0x0350
,
0x0350
,
0x0350
},
{
0x0351
,
0x0351
,
0x0351
},
{
0x0352
,
0x0352
,
0x0352
},
{
0x0353
,
0x0353
,
0x0353
},
{
0x0354
,
0x0354
,
0x0354
},
{
0x0355
,
0x0355
,
0x0355
},
{
0x0356
,
0x0356
,
0x0356
},
{
0x0357
,
0x0357
,
0x0357
},
{
0x0358
,
0x0358
,
0x0358
},
{
0x0359
,
0x0359
,
0x0359
},
{
0x035A
,
0x035A
,
0x035A
},
{
0x035B
,
0x035B
,
0x035B
},
{
0x035C
,
0x035C
,
0x035C
},
{
0x035D
,
0x035D
,
0x035D
},
{
0x035E
,
0x035E
,
0x035E
},
{
0x035F
,
0x035F
,
0x035F
},
{
0x0360
,
0x0360
,
0x0360
},
{
0x0361
,
0x0361
,
0x0361
},
{
0x0362
,
0x0362
,
0x0362
},
{
0x0363
,
0x0363
,
0x0363
},
{
0x0364
,
0x0364
,
0x0364
},
{
0x0365
,
0x0365
,
0x0365
},
{
0x0366
,
0x0366
,
0x0366
},
{
0x0367
,
0x0367
,
0x0367
},
{
0x0368
,
0x0368
,
0x0368
},
{
0x0369
,
0x0369
,
0x0369
},
{
0x036A
,
0x036A
,
0x036A
},
{
0x036B
,
0x036B
,
0x036B
},
{
0x036C
,
0x036C
,
0x036C
},
{
0x036D
,
0x036D
,
0x036D
},
{
0x036E
,
0x036E
,
0x036E
},
{
0x036F
,
0x036F
,
0x036F
},
{
0x0370
,
0x0370
,
0x0370
},
{
0x0371
,
0x0371
,
0x0371
},
{
0x0372
,
0x0372
,
0x0372
},
{
0x0373
,
0x0373
,
0x0373
},
{
0x0374
,
0x0374
,
0x0374
},
{
0x0375
,
0x0375
,
0x0375
},
{
0x0376
,
0x0376
,
0x0376
},
{
0x0377
,
0x0377
,
0x0377
},
{
0x0378
,
0x0378
,
0x0378
},
{
0x0379
,
0x0379
,
0x0379
},
{
0x037A
,
0x037A
,
0x037A
},
{
0x037B
,
0x037B
,
0x037B
},
{
0x037C
,
0x037C
,
0x037C
},
{
0x037D
,
0x037D
,
0x037D
},
{
0x037E
,
0x037E
,
0x037E
},
{
0x037F
,
0x037F
,
0x037F
},
{
0x0380
,
0x0380
,
0x0380
},
{
0x0381
,
0x0381
,
0x0381
},
{
0x0382
,
0x0382
,
0x0382
},
{
0x0383
,
0x0383
,
0x0383
},
{
0x0384
,
0x0384
,
0x0384
},
{
0x0385
,
0x0385
,
0x0385
},
{
0x0386
,
0x03AC
,
0x0391
},
{
0x0387
,
0x0387
,
0x0387
},
{
0x0388
,
0x03AD
,
0x0395
},
{
0x0389
,
0x03AE
,
0x0397
},
{
0x038A
,
0x03AF
,
0x0399
},
{
0x038B
,
0x038B
,
0x038B
},
{
0x038C
,
0x03CC
,
0x039F
},
{
0x038D
,
0x038D
,
0x038D
},
{
0x038E
,
0x03CD
,
0x03A5
},
{
0x038F
,
0x03CE
,
0x03A9
},
{
0x0390
,
0x0390
,
0x0399
},
{
0x0391
,
0x03B1
,
0x0391
},
{
0x0392
,
0x03B2
,
0x0392
},
{
0x0393
,
0x03B3
,
0x0393
},
{
0x0394
,
0x03B4
,
0x0394
},
{
0x0395
,
0x03B5
,
0x0395
},
{
0x0396
,
0x03B6
,
0x0396
},
{
0x0397
,
0x03B7
,
0x0397
},
{
0x0398
,
0x03B8
,
0x0398
},
{
0x0399
,
0x03B9
,
0x0399
},
{
0x039A
,
0x03BA
,
0x039A
},
{
0x039B
,
0x03BB
,
0x039B
},
{
0x039C
,
0x03BC
,
0x039C
},
{
0x039D
,
0x03BD
,
0x039D
},
{
0x039E
,
0x03BE
,
0x039E
},
{
0x039F
,
0x03BF
,
0x039F
},
{
0x03A0
,
0x03C0
,
0x03A0
},
{
0x03A1
,
0x03C1
,
0x03A1
},
{
0x03A2
,
0x03A2
,
0x03A2
},
{
0x03A3
,
0x03C3
,
0x03A3
},
{
0x03A4
,
0x03C4
,
0x03A4
},
{
0x03A5
,
0x03C5
,
0x03A5
},
{
0x03A6
,
0x03C6
,
0x03A6
},
{
0x03A7
,
0x03C7
,
0x03A7
},
{
0x03A8
,
0x03C8
,
0x03A8
},
{
0x03A9
,
0x03C9
,
0x03A9
},
{
0x03AA
,
0x03CA
,
0x0399
},
{
0x03AB
,
0x03CB
,
0x03A5
},
{
0x0386
,
0x03AC
,
0x0391
},
{
0x0388
,
0x03AD
,
0x0395
},
{
0x0389
,
0x03AE
,
0x0397
},
{
0x038A
,
0x03AF
,
0x0399
},
{
0x03B0
,
0x03B0
,
0x03A5
},
{
0x0391
,
0x03B1
,
0x0391
},
{
0x0392
,
0x03B2
,
0x0392
},
{
0x0393
,
0x03B3
,
0x0393
},
{
0x0394
,
0x03B4
,
0x0394
},
{
0x0395
,
0x03B5
,
0x0395
},
{
0x0396
,
0x03B6
,
0x0396
},
{
0x0397
,
0x03B7
,
0x0397
},
{
0x0398
,
0x03B8
,
0x0398
},
{
0x0399
,
0x03B9
,
0x0399
},
{
0x039A
,
0x03BA
,
0x039A
},
{
0x039B
,
0x03BB
,
0x039B
},
{
0x039C
,
0x03BC
,
0x039C
},
{
0x039D
,
0x03BD
,
0x039D
},
{
0x039E
,
0x03BE
,
0x039E
},
{
0x039F
,
0x03BF
,
0x039F
},
{
0x03A0
,
0x03C0
,
0x03A0
},
{
0x03A1
,
0x03C1
,
0x03A1
},
{
0x03A3
,
0x03C2
,
0x03A3
},
{
0x03A3
,
0x03C3
,
0x03A3
},
{
0x03A4
,
0x03C4
,
0x03A4
},
{
0x03A5
,
0x03C5
,
0x03A5
},
{
0x03A6
,
0x03C6
,
0x03A6
},
{
0x03A7
,
0x03C7
,
0x03A7
},
{
0x03A8
,
0x03C8
,
0x03A8
},
{
0x03A9
,
0x03C9
,
0x03A9
},
{
0x03AA
,
0x03CA
,
0x0399
},
{
0x03AB
,
0x03CB
,
0x03A5
},
{
0x038C
,
0x03CC
,
0x039F
},
{
0x038E
,
0x03CD
,
0x03A5
},
{
0x038F
,
0x03CE
,
0x03A9
},
{
0x03CF
,
0x03CF
,
0x03CF
},
{
0x0392
,
0x03D0
,
0x0392
},
{
0x0398
,
0x03D1
,
0x0398
},
{
0x03D2
,
0x03D2
,
0x03D2
},
{
0x03D3
,
0x03D3
,
0x03D2
},
{
0x03D4
,
0x03D4
,
0x03D2
},
{
0x03A6
,
0x03D5
,
0x03A6
},
{
0x03A0
,
0x03D6
,
0x03A0
},
{
0x03D7
,
0x03D7
,
0x03D7
},
{
0x03D8
,
0x03D8
,
0x03D8
},
{
0x03D9
,
0x03D9
,
0x03D9
},
{
0x03DA
,
0x03DB
,
0x03DA
},
{
0x03DA
,
0x03DB
,
0x03DA
},
{
0x03DC
,
0x03DD
,
0x03DC
},
{
0x03DC
,
0x03DD
,
0x03DC
},
{
0x03DE
,
0x03DF
,
0x03DE
},
{
0x03DE
,
0x03DF
,
0x03DE
},
{
0x03E0
,
0x03E1
,
0x03E0
},
{
0x03E0
,
0x03E1
,
0x03E0
},
{
0x03E2
,
0x03E3
,
0x03E2
},
{
0x03E2
,
0x03E3
,
0x03E2
},
{
0x03E4
,
0x03E5
,
0x03E4
},
{
0x03E4
,
0x03E5
,
0x03E4
},
{
0x03E6
,
0x03E7
,
0x03E6
},
{
0x03E6
,
0x03E7
,
0x03E6
},
{
0x03E8
,
0x03E9
,
0x03E8
},
{
0x03E8
,
0x03E9
,
0x03E8
},
{
0x03EA
,
0x03EB
,
0x03EA
},
{
0x03EA
,
0x03EB
,
0x03EA
},
{
0x03EC
,
0x03ED
,
0x03EC
},
{
0x03EC
,
0x03ED
,
0x03EC
},
{
0x03EE
,
0x03EF
,
0x03EE
},
{
0x03EE
,
0x03EF
,
0x03EE
},
{
0x039A
,
0x03F0
,
0x039A
},
{
0x03A1
,
0x03F1
,
0x03A1
},
{
0x03A3
,
0x03F2
,
0x03A3
},
{
0x03F3
,
0x03F3
,
0x03F3
},
{
0x03F4
,
0x03F4
,
0x03F4
},
{
0x03F5
,
0x03F5
,
0x03F5
},
{
0x03F6
,
0x03F6
,
0x03F6
},
{
0x03F7
,
0x03F7
,
0x03F7
},
{
0x03F8
,
0x03F8
,
0x03F8
},
{
0x03F9
,
0x03F9
,
0x03F9
},
{
0x03FA
,
0x03FA
,
0x03FA
},
{
0x03FB
,
0x03FB
,
0x03FB
},
{
0x03FC
,
0x03FC
,
0x03FC
},
{
0x03FD
,
0x03FD
,
0x03FD
},
{
0x03FE
,
0x03FE
,
0x03FE
},
{
0x03FF
,
0x03FF
,
0x03FF
}
};
static
MY_UNICASE_INFO
plane04
[]
=
{
{
0x0400
,
0x0450
,
0x0415
},
{
0x0401
,
0x0451
,
0x0415
},
{
0x0402
,
0x0452
,
0x0402
},
{
0x0403
,
0x0453
,
0x0413
},
{
0x0404
,
0x0454
,
0x0404
},
{
0x0405
,
0x0455
,
0x0405
},
{
0x0406
,
0x0456
,
0x0406
},
{
0x0407
,
0x0457
,
0x0406
},
{
0x0408
,
0x0458
,
0x0408
},
{
0x0409
,
0x0459
,
0x0409
},
{
0x040A
,
0x045A
,
0x040A
},
{
0x040B
,
0x045B
,
0x040B
},
{
0x040C
,
0x045C
,
0x041A
},
{
0x040D
,
0x045D
,
0x0418
},
{
0x040E
,
0x045E
,
0x0423
},
{
0x040F
,
0x045F
,
0x040F
},
{
0x0410
,
0x0430
,
0x0410
},
{
0x0411
,
0x0431
,
0x0411
},
{
0x0412
,
0x0432
,
0x0412
},
{
0x0413
,
0x0433
,
0x0413
},
{
0x0414
,
0x0434
,
0x0414
},
{
0x0415
,
0x0435
,
0x0415
},
{
0x0416
,
0x0436
,
0x0416
},
{
0x0417
,
0x0437
,
0x0417
},
{
0x0418
,
0x0438
,
0x0418
},
{
0x0419
,
0x0439
,
0x0418
},
{
0x041A
,
0x043A
,
0x041A
},
{
0x041B
,
0x043B
,
0x041B
},
{
0x041C
,
0x043C
,
0x041C
},
{
0x041D
,
0x043D
,
0x041D
},
{
0x041E
,
0x043E
,
0x041E
},
{
0x041F
,
0x043F
,
0x041F
},
{
0x0420
,
0x0440
,
0x0420
},
{
0x0421
,
0x0441
,
0x0421
},
{
0x0422
,
0x0442
,
0x0422
},
{
0x0423
,
0x0443
,
0x0423
},
{
0x0424
,
0x0444
,
0x0424
},
{
0x0425
,
0x0445
,
0x0425
},
{
0x0426
,
0x0446
,
0x0426
},
{
0x0427
,
0x0447
,
0x0427
},
{
0x0428
,
0x0448
,
0x0428
},
{
0x0429
,
0x0449
,
0x0429
},
{
0x042A
,
0x044A
,
0x042A
},
{
0x042B
,
0x044B
,
0x042B
},
{
0x042C
,
0x044C
,
0x042C
},
{
0x042D
,
0x044D
,
0x042D
},
{
0x042E
,
0x044E
,
0x042E
},
{
0x042F
,
0x044F
,
0x042F
},
{
0x0410
,
0x0430
,
0x0410
},
{
0x0411
,
0x0431
,
0x0411
},
{
0x0412
,
0x0432
,
0x0412
},
{
0x0413
,
0x0433
,
0x0413
},
{
0x0414
,
0x0434
,
0x0414
},
{
0x0415
,
0x0435
,
0x0415
},
{
0x0416
,
0x0436
,
0x0416
},
{
0x0417
,
0x0437
,
0x0417
},
{
0x0418
,
0x0438
,
0x0418
},
{
0x0419
,
0x0439
,
0x0418
},
{
0x041A
,
0x043A
,
0x041A
},
{
0x041B
,
0x043B
,
0x041B
},
{
0x041C
,
0x043C
,
0x041C
},
{
0x041D
,
0x043D
,
0x041D
},
{
0x041E
,
0x043E
,
0x041E
},
{
0x041F
,
0x043F
,
0x041F
},
{
0x0420
,
0x0440
,
0x0420
},
{
0x0421
,
0x0441
,
0x0421
},
{
0x0422
,
0x0442
,
0x0422
},
{
0x0423
,
0x0443
,
0x0423
},
{
0x0424
,
0x0444
,
0x0424
},
{
0x0425
,
0x0445
,
0x0425
},
{
0x0426
,
0x0446
,
0x0426
},
{
0x0427
,
0x0447
,
0x0427
},
{
0x0428
,
0x0448
,
0x0428
},
{
0x0429
,
0x0449
,
0x0429
},
{
0x042A
,
0x044A
,
0x042A
},
{
0x042B
,
0x044B
,
0x042B
},
{
0x042C
,
0x044C
,
0x042C
},
{
0x042D
,
0x044D
,
0x042D
},
{
0x042E
,
0x044E
,
0x042E
},
{
0x042F
,
0x044F
,
0x042F
},
{
0x0400
,
0x0450
,
0x0415
},
{
0x0401
,
0x0451
,
0x0415
},
{
0x0402
,
0x0452
,
0x0402
},
{
0x0403
,
0x0453
,
0x0413
},
{
0x0404
,
0x0454
,
0x0404
},
{
0x0405
,
0x0455
,
0x0405
},
{
0x0406
,
0x0456
,
0x0406
},
{
0x0407
,
0x0457
,
0x0406
},
{
0x0408
,
0x0458
,
0x0408
},
{
0x0409
,
0x0459
,
0x0409
},
{
0x040A
,
0x045A
,
0x040A
},
{
0x040B
,
0x045B
,
0x040B
},
{
0x040C
,
0x045C
,
0x041A
},
{
0x040D
,
0x045D
,
0x0418
},
{
0x040E
,
0x045E
,
0x0423
},
{
0x040F
,
0x045F
,
0x040F
},
{
0x0460
,
0x0461
,
0x0460
},
{
0x0460
,
0x0461
,
0x0460
},
{
0x0462
,
0x0463
,
0x0462
},
{
0x0462
,
0x0463
,
0x0462
},
{
0x0464
,
0x0465
,
0x0464
},
{
0x0464
,
0x0465
,
0x0464
},
{
0x0466
,
0x0467
,
0x0466
},
{
0x0466
,
0x0467
,
0x0466
},
{
0x0468
,
0x0469
,
0x0468
},
{
0x0468
,
0x0469
,
0x0468
},
{
0x046A
,
0x046B
,
0x046A
},
{
0x046A
,
0x046B
,
0x046A
},
{
0x046C
,
0x046D
,
0x046C
},
{
0x046C
,
0x046D
,
0x046C
},
{
0x046E
,
0x046F
,
0x046E
},
{
0x046E
,
0x046F
,
0x046E
},
{
0x0470
,
0x0471
,
0x0470
},
{
0x0470
,
0x0471
,
0x0470
},
{
0x0472
,
0x0473
,
0x0472
},
{
0x0472
,
0x0473
,
0x0472
},
{
0x0474
,
0x0475
,
0x0474
},
{
0x0474
,
0x0475
,
0x0474
},
{
0x0476
,
0x0477
,
0x0474
},
{
0x0476
,
0x0477
,
0x0474
},
{
0x0478
,
0x0479
,
0x0478
},
{
0x0478
,
0x0479
,
0x0478
},
{
0x047A
,
0x047B
,
0x047A
},
{
0x047A
,
0x047B
,
0x047A
},
{
0x047C
,
0x047D
,
0x047C
},
{
0x047C
,
0x047D
,
0x047C
},
{
0x047E
,
0x047F
,
0x047E
},
{
0x047E
,
0x047F
,
0x047E
},
{
0x0480
,
0x0481
,
0x0480
},
{
0x0480
,
0x0481
,
0x0480
},
{
0x0482
,
0x0482
,
0x0482
},
{
0x0483
,
0x0483
,
0x0483
},
{
0x0484
,
0x0484
,
0x0484
},
{
0x0485
,
0x0485
,
0x0485
},
{
0x0486
,
0x0486
,
0x0486
},
{
0x0487
,
0x0487
,
0x0487
},
{
0x0488
,
0x0488
,
0x0488
},
{
0x0489
,
0x0489
,
0x0489
},
{
0x048A
,
0x048A
,
0x048A
},
{
0x048B
,
0x048B
,
0x048B
},
{
0x048C
,
0x048D
,
0x048C
},
{
0x048C
,
0x048D
,
0x048C
},
{
0x048E
,
0x048F
,
0x048E
},
{
0x048E
,
0x048F
,
0x048E
},
{
0x0490
,
0x0491
,
0x0490
},
{
0x0490
,
0x0491
,
0x0490
},
{
0x0492
,
0x0493
,
0x0492
},
{
0x0492
,
0x0493
,
0x0492
},
{
0x0494
,
0x0495
,
0x0494
},
{
0x0494
,
0x0495
,
0x0494
},
{
0x0496
,
0x0497
,
0x0496
},
{
0x0496
,
0x0497
,
0x0496
},
{
0x0498
,
0x0499
,
0x0498
},
{
0x0498
,
0x0499
,
0x0498
},
{
0x049A
,
0x049B
,
0x049A
},
{
0x049A
,
0x049B
,
0x049A
},
{
0x049C
,
0x049D
,
0x049C
},
{
0x049C
,
0x049D
,
0x049C
},
{
0x049E
,
0x049F
,
0x049E
},
{
0x049E
,
0x049F
,
0x049E
},
{
0x04A0
,
0x04A1
,
0x04A0
},
{
0x04A0
,
0x04A1
,
0x04A0
},
{
0x04A2
,
0x04A3
,
0x04A2
},
{
0x04A2
,
0x04A3
,
0x04A2
},
{
0x04A4
,
0x04A5
,
0x04A4
},
{
0x04A4
,
0x04A5
,
0x04A4
},
{
0x04A6
,
0x04A7
,
0x04A6
},
{
0x04A6
,
0x04A7
,
0x04A6
},
{
0x04A8
,
0x04A9
,
0x04A8
},
{
0x04A8
,
0x04A9
,
0x04A8
},
{
0x04AA
,
0x04AB
,
0x04AA
},
{
0x04AA
,
0x04AB
,
0x04AA
},
{
0x04AC
,
0x04AD
,
0x04AC
},
{
0x04AC
,
0x04AD
,
0x04AC
},
{
0x04AE
,
0x04AF
,
0x04AE
},
{
0x04AE
,
0x04AF
,
0x04AE
},
{
0x04B0
,
0x04B1
,
0x04B0
},
{
0x04B0
,
0x04B1
,
0x04B0
},
{
0x04B2
,
0x04B3
,
0x04B2
},
{
0x04B2
,
0x04B3
,
0x04B2
},
{
0x04B4
,
0x04B5
,
0x04B4
},
{
0x04B4
,
0x04B5
,
0x04B4
},
{
0x04B6
,
0x04B7
,
0x04B6
},
{
0x04B6
,
0x04B7
,
0x04B6
},
{
0x04B8
,
0x04B9
,
0x04B8
},
{
0x04B8
,
0x04B9
,
0x04B8
},
{
0x04BA
,
0x04BB
,
0x04BA
},
{
0x04BA
,
0x04BB
,
0x04BA
},
{
0x04BC
,
0x04BD
,
0x04BC
},
{
0x04BC
,
0x04BD
,
0x04BC
},
{
0x04BE
,
0x04BF
,
0x04BE
},
{
0x04BE
,
0x04BF
,
0x04BE
},
{
0x04C0
,
0x04C0
,
0x04C0
},
{
0x04C1
,
0x04C2
,
0x0416
},
{
0x04C1
,
0x04C2
,
0x0416
},
{
0x04C3
,
0x04C4
,
0x04C3
},
{
0x04C3
,
0x04C4
,
0x04C3
},
{
0x04C5
,
0x04C5
,
0x04C5
},
{
0x04C6
,
0x04C6
,
0x04C6
},
{
0x04C7
,
0x04C8
,
0x04C7
},
{
0x04C7
,
0x04C8
,
0x04C7
},
{
0x04C9
,
0x04C9
,
0x04C9
},
{
0x04CA
,
0x04CA
,
0x04CA
},
{
0x04CB
,
0x04CC
,
0x04CB
},
{
0x04CB
,
0x04CC
,
0x04CB
},
{
0x04CD
,
0x04CD
,
0x04CD
},
{
0x04CE
,
0x04CE
,
0x04CE
},
{
0x04CF
,
0x04CF
,
0x04CF
},
{
0x04D0
,
0x04D1
,
0x0410
},
{
0x04D0
,
0x04D1
,
0x0410
},
{
0x04D2
,
0x04D3
,
0x0410
},
{
0x04D2
,
0x04D3
,
0x0410
},
{
0x04D4
,
0x04D5
,
0x04D4
},
{
0x04D4
,
0x04D5
,
0x04D4
},
{
0x04D6
,
0x04D7
,
0x0415
},
{
0x04D6
,
0x04D7
,
0x0415
},
{
0x04D8
,
0x04D9
,
0x04D8
},
{
0x04D8
,
0x04D9
,
0x04D8
},
{
0x04DA
,
0x04DB
,
0x04D8
},
{
0x04DA
,
0x04DB
,
0x04D8
},
{
0x04DC
,
0x04DD
,
0x0416
},
{
0x04DC
,
0x04DD
,
0x0416
},
{
0x04DE
,
0x04DF
,
0x0417
},
{
0x04DE
,
0x04DF
,
0x0417
},
{
0x04E0
,
0x04E1
,
0x04E0
},
{
0x04E0
,
0x04E1
,
0x04E0
},
{
0x04E2
,
0x04E3
,
0x0418
},
{
0x04E2
,
0x04E3
,
0x0418
},
{
0x04E4
,
0x04E5
,
0x0418
},
{
0x04E4
,
0x04E5
,
0x0418
},
{
0x04E6
,
0x04E7
,
0x041E
},
{
0x04E6
,
0x04E7
,
0x041E
},
{
0x04E8
,
0x04E9
,
0x04E8
},
{
0x04E8
,
0x04E9
,
0x04E8
},
{
0x04EA
,
0x04EB
,
0x04E8
},
{
0x04EA
,
0x04EB
,
0x04E8
},
{
0x04EC
,
0x04ED
,
0x042D
},
{
0x04EC
,
0x04ED
,
0x042D
},
{
0x04EE
,
0x04EF
,
0x0423
},
{
0x04EE
,
0x04EF
,
0x0423
},
{
0x04F0
,
0x04F1
,
0x0423
},
{
0x04F0
,
0x04F1
,
0x0423
},
{
0x04F2
,
0x04F3
,
0x0423
},
{
0x04F2
,
0x04F3
,
0x0423
},
{
0x04F4
,
0x04F5
,
0x0427
},
{
0x04F4
,
0x04F5
,
0x0427
},
{
0x04F6
,
0x04F6
,
0x04F6
},
{
0x04F7
,
0x04F7
,
0x04F7
},
{
0x04F8
,
0x04F9
,
0x042B
},
{
0x04F8
,
0x04F9
,
0x042B
},
{
0x04FA
,
0x04FA
,
0x04FA
},
{
0x04FB
,
0x04FB
,
0x04FB
},
{
0x04FC
,
0x04FC
,
0x04FC
},
{
0x04FD
,
0x04FD
,
0x04FD
},
{
0x04FE
,
0x04FE
,
0x04FE
},
{
0x04FF
,
0x04FF
,
0x04FF
}
};
static
MY_UNICASE_INFO
plane05
[]
=
{
{
0x0500
,
0x0500
,
0x0500
},
{
0x0501
,
0x0501
,
0x0501
},
{
0x0502
,
0x0502
,
0x0502
},
{
0x0503
,
0x0503
,
0x0503
},
{
0x0504
,
0x0504
,
0x0504
},
{
0x0505
,
0x0505
,
0x0505
},
{
0x0506
,
0x0506
,
0x0506
},
{
0x0507
,
0x0507
,
0x0507
},
{
0x0508
,
0x0508
,
0x0508
},
{
0x0509
,
0x0509
,
0x0509
},
{
0x050A
,
0x050A
,
0x050A
},
{
0x050B
,
0x050B
,
0x050B
},
{
0x050C
,
0x050C
,
0x050C
},
{
0x050D
,
0x050D
,
0x050D
},
{
0x050E
,
0x050E
,
0x050E
},
{
0x050F
,
0x050F
,
0x050F
},
{
0x0510
,
0x0510
,
0x0510
},
{
0x0511
,
0x0511
,
0x0511
},
{
0x0512
,
0x0512
,
0x0512
},
{
0x0513
,
0x0513
,
0x0513
},
{
0x0514
,
0x0514
,
0x0514
},
{
0x0515
,
0x0515
,
0x0515
},
{
0x0516
,
0x0516
,
0x0516
},
{
0x0517
,
0x0517
,
0x0517
},
{
0x0518
,
0x0518
,
0x0518
},
{
0x0519
,
0x0519
,
0x0519
},
{
0x051A
,
0x051A
,
0x051A
},
{
0x051B
,
0x051B
,
0x051B
},
{
0x051C
,
0x051C
,
0x051C
},
{
0x051D
,
0x051D
,
0x051D
},
{
0x051E
,
0x051E
,
0x051E
},
{
0x051F
,
0x051F
,
0x051F
},
{
0x0520
,
0x0520
,
0x0520
},
{
0x0521
,
0x0521
,
0x0521
},
{
0x0522
,
0x0522
,
0x0522
},
{
0x0523
,
0x0523
,
0x0523
},
{
0x0524
,
0x0524
,
0x0524
},
{
0x0525
,
0x0525
,
0x0525
},
{
0x0526
,
0x0526
,
0x0526
},
{
0x0527
,
0x0527
,
0x0527
},
{
0x0528
,
0x0528
,
0x0528
},
{
0x0529
,
0x0529
,
0x0529
},
{
0x052A
,
0x052A
,
0x052A
},
{
0x052B
,
0x052B
,
0x052B
},
{
0x052C
,
0x052C
,
0x052C
},
{
0x052D
,
0x052D
,
0x052D
},
{
0x052E
,
0x052E
,
0x052E
},
{
0x052F
,
0x052F
,
0x052F
},
{
0x0530
,
0x0530
,
0x0530
},
{
0x0531
,
0x0561
,
0x0531
},
{
0x0532
,
0x0562
,
0x0532
},
{
0x0533
,
0x0563
,
0x0533
},
{
0x0534
,
0x0564
,
0x0534
},
{
0x0535
,
0x0565
,
0x0535
},
{
0x0536
,
0x0566
,
0x0536
},
{
0x0537
,
0x0567
,
0x0537
},
{
0x0538
,
0x0568
,
0x0538
},
{
0x0539
,
0x0569
,
0x0539
},
{
0x053A
,
0x056A
,
0x053A
},
{
0x053B
,
0x056B
,
0x053B
},
{
0x053C
,
0x056C
,
0x053C
},
{
0x053D
,
0x056D
,
0x053D
},
{
0x053E
,
0x056E
,
0x053E
},
{
0x053F
,
0x056F
,
0x053F
},
{
0x0540
,
0x0570
,
0x0540
},
{
0x0541
,
0x0571
,
0x0541
},
{
0x0542
,
0x0572
,
0x0542
},
{
0x0543
,
0x0573
,
0x0543
},
{
0x0544
,
0x0574
,
0x0544
},
{
0x0545
,
0x0575
,
0x0545
},
{
0x0546
,
0x0576
,
0x0546
},
{
0x0547
,
0x0577
,
0x0547
},
{
0x0548
,
0x0578
,
0x0548
},
{
0x0549
,
0x0579
,
0x0549
},
{
0x054A
,
0x057A
,
0x054A
},
{
0x054B
,
0x057B
,
0x054B
},
{
0x054C
,
0x057C
,
0x054C
},
{
0x054D
,
0x057D
,
0x054D
},
{
0x054E
,
0x057E
,
0x054E
},
{
0x054F
,
0x057F
,
0x054F
},
{
0x0550
,
0x0580
,
0x0550
},
{
0x0551
,
0x0581
,
0x0551
},
{
0x0552
,
0x0582
,
0x0552
},
{
0x0553
,
0x0583
,
0x0553
},
{
0x0554
,
0x0584
,
0x0554
},
{
0x0555
,
0x0585
,
0x0555
},
{
0x0556
,
0x0586
,
0x0556
},
{
0x0557
,
0x0557
,
0x0557
},
{
0x0558
,
0x0558
,
0x0558
},
{
0x0559
,
0x0559
,
0x0559
},
{
0x055A
,
0x055A
,
0x055A
},
{
0x055B
,
0x055B
,
0x055B
},
{
0x055C
,
0x055C
,
0x055C
},
{
0x055D
,
0x055D
,
0x055D
},
{
0x055E
,
0x055E
,
0x055E
},
{
0x055F
,
0x055F
,
0x055F
},
{
0x0560
,
0x0560
,
0x0560
},
{
0x0531
,
0x0561
,
0x0531
},
{
0x0532
,
0x0562
,
0x0532
},
{
0x0533
,
0x0563
,
0x0533
},
{
0x0534
,
0x0564
,
0x0534
},
{
0x0535
,
0x0565
,
0x0535
},
{
0x0536
,
0x0566
,
0x0536
},
{
0x0537
,
0x0567
,
0x0537
},
{
0x0538
,
0x0568
,
0x0538
},
{
0x0539
,
0x0569
,
0x0539
},
{
0x053A
,
0x056A
,
0x053A
},
{
0x053B
,
0x056B
,
0x053B
},
{
0x053C
,
0x056C
,
0x053C
},
{
0x053D
,
0x056D
,
0x053D
},
{
0x053E
,
0x056E
,
0x053E
},
{
0x053F
,
0x056F
,
0x053F
},
{
0x0540
,
0x0570
,
0x0540
},
{
0x0541
,
0x0571
,
0x0541
},
{
0x0542
,
0x0572
,
0x0542
},
{
0x0543
,
0x0573
,
0x0543
},
{
0x0544
,
0x0574
,
0x0544
},
{
0x0545
,
0x0575
,
0x0545
},
{
0x0546
,
0x0576
,
0x0546
},
{
0x0547
,
0x0577
,
0x0547
},
{
0x0548
,
0x0578
,
0x0548
},
{
0x0549
,
0x0579
,
0x0549
},
{
0x054A
,
0x057A
,
0x054A
},
{
0x054B
,
0x057B
,
0x054B
},
{
0x054C
,
0x057C
,
0x054C
},
{
0x054D
,
0x057D
,
0x054D
},
{
0x054E
,
0x057E
,
0x054E
},
{
0x054F
,
0x057F
,
0x054F
},
{
0x0550
,
0x0580
,
0x0550
},
{
0x0551
,
0x0581
,
0x0551
},
{
0x0552
,
0x0582
,
0x0552
},
{
0x0553
,
0x0583
,
0x0553
},
{
0x0554
,
0x0584
,
0x0554
},
{
0x0555
,
0x0585
,
0x0555
},
{
0x0556
,
0x0586
,
0x0556
},
{
0x0587
,
0x0587
,
0x0587
},
{
0x0588
,
0x0588
,
0x0588
},
{
0x0589
,
0x0589
,
0x0589
},
{
0x058A
,
0x058A
,
0x058A
},
{
0x058B
,
0x058B
,
0x058B
},
{
0x058C
,
0x058C
,
0x058C
},
{
0x058D
,
0x058D
,
0x058D
},
{
0x058E
,
0x058E
,
0x058E
},
{
0x058F
,
0x058F
,
0x058F
},
{
0x0590
,
0x0590
,
0x0590
},
{
0x0591
,
0x0591
,
0x0591
},
{
0x0592
,
0x0592
,
0x0592
},
{
0x0593
,
0x0593
,
0x0593
},
{
0x0594
,
0x0594
,
0x0594
},
{
0x0595
,
0x0595
,
0x0595
},
{
0x0596
,
0x0596
,
0x0596
},
{
0x0597
,
0x0597
,
0x0597
},
{
0x0598
,
0x0598
,
0x0598
},
{
0x0599
,
0x0599
,
0x0599
},
{
0x059A
,
0x059A
,
0x059A
},
{
0x059B
,
0x059B
,
0x059B
},
{
0x059C
,
0x059C
,
0x059C
},
{
0x059D
,
0x059D
,
0x059D
},
{
0x059E
,
0x059E
,
0x059E
},
{
0x059F
,
0x059F
,
0x059F
},
{
0x05A0
,
0x05A0
,
0x05A0
},
{
0x05A1
,
0x05A1
,
0x05A1
},
{
0x05A2
,
0x05A2
,
0x05A2
},
{
0x05A3
,
0x05A3
,
0x05A3
},
{
0x05A4
,
0x05A4
,
0x05A4
},
{
0x05A5
,
0x05A5
,
0x05A5
},
{
0x05A6
,
0x05A6
,
0x05A6
},
{
0x05A7
,
0x05A7
,
0x05A7
},
{
0x05A8
,
0x05A8
,
0x05A8
},
{
0x05A9
,
0x05A9
,
0x05A9
},
{
0x05AA
,
0x05AA
,
0x05AA
},
{
0x05AB
,
0x05AB
,
0x05AB
},
{
0x05AC
,
0x05AC
,
0x05AC
},
{
0x05AD
,
0x05AD
,
0x05AD
},
{
0x05AE
,
0x05AE
,
0x05AE
},
{
0x05AF
,
0x05AF
,
0x05AF
},
{
0x05B0
,
0x05B0
,
0x05B0
},
{
0x05B1
,
0x05B1
,
0x05B1
},
{
0x05B2
,
0x05B2
,
0x05B2
},
{
0x05B3
,
0x05B3
,
0x05B3
},
{
0x05B4
,
0x05B4
,
0x05B4
},
{
0x05B5
,
0x05B5
,
0x05B5
},
{
0x05B6
,
0x05B6
,
0x05B6
},
{
0x05B7
,
0x05B7
,
0x05B7
},
{
0x05B8
,
0x05B8
,
0x05B8
},
{
0x05B9
,
0x05B9
,
0x05B9
},
{
0x05BA
,
0x05BA
,
0x05BA
},
{
0x05BB
,
0x05BB
,
0x05BB
},
{
0x05BC
,
0x05BC
,
0x05BC
},
{
0x05BD
,
0x05BD
,
0x05BD
},
{
0x05BE
,
0x05BE
,
0x05BE
},
{
0x05BF
,
0x05BF
,
0x05BF
},
{
0x05C0
,
0x05C0
,
0x05C0
},
{
0x05C1
,
0x05C1
,
0x05C1
},
{
0x05C2
,
0x05C2
,
0x05C2
},
{
0x05C3
,
0x05C3
,
0x05C3
},
{
0x05C4
,
0x05C4
,
0x05C4
},
{
0x05C5
,
0x05C5
,
0x05C5
},
{
0x05C6
,
0x05C6
,
0x05C6
},
{
0x05C7
,
0x05C7
,
0x05C7
},
{
0x05C8
,
0x05C8
,
0x05C8
},
{
0x05C9
,
0x05C9
,
0x05C9
},
{
0x05CA
,
0x05CA
,
0x05CA
},
{
0x05CB
,
0x05CB
,
0x05CB
},
{
0x05CC
,
0x05CC
,
0x05CC
},
{
0x05CD
,
0x05CD
,
0x05CD
},
{
0x05CE
,
0x05CE
,
0x05CE
},
{
0x05CF
,
0x05CF
,
0x05CF
},
{
0x05D0
,
0x05D0
,
0x05D0
},
{
0x05D1
,
0x05D1
,
0x05D1
},
{
0x05D2
,
0x05D2
,
0x05D2
},
{
0x05D3
,
0x05D3
,
0x05D3
},
{
0x05D4
,
0x05D4
,
0x05D4
},
{
0x05D5
,
0x05D5
,
0x05D5
},
{
0x05D6
,
0x05D6
,
0x05D6
},
{
0x05D7
,
0x05D7
,
0x05D7
},
{
0x05D8
,
0x05D8
,
0x05D8
},
{
0x05D9
,
0x05D9
,
0x05D9
},
{
0x05DA
,
0x05DA
,
0x05DA
},
{
0x05DB
,
0x05DB
,
0x05DB
},
{
0x05DC
,
0x05DC
,
0x05DC
},
{
0x05DD
,
0x05DD
,
0x05DD
},
{
0x05DE
,
0x05DE
,
0x05DE
},
{
0x05DF
,
0x05DF
,
0x05DF
},
{
0x05E0
,
0x05E0
,
0x05E0
},
{
0x05E1
,
0x05E1
,
0x05E1
},
{
0x05E2
,
0x05E2
,
0x05E2
},
{
0x05E3
,
0x05E3
,
0x05E3
},
{
0x05E4
,
0x05E4
,
0x05E4
},
{
0x05E5
,
0x05E5
,
0x05E5
},
{
0x05E6
,
0x05E6
,
0x05E6
},
{
0x05E7
,
0x05E7
,
0x05E7
},
{
0x05E8
,
0x05E8
,
0x05E8
},
{
0x05E9
,
0x05E9
,
0x05E9
},
{
0x05EA
,
0x05EA
,
0x05EA
},
{
0x05EB
,
0x05EB
,
0x05EB
},
{
0x05EC
,
0x05EC
,
0x05EC
},
{
0x05ED
,
0x05ED
,
0x05ED
},
{
0x05EE
,
0x05EE
,
0x05EE
},
{
0x05EF
,
0x05EF
,
0x05EF
},
{
0x05F0
,
0x05F0
,
0x05F0
},
{
0x05F1
,
0x05F1
,
0x05F1
},
{
0x05F2
,
0x05F2
,
0x05F2
},
{
0x05F3
,
0x05F3
,
0x05F3
},
{
0x05F4
,
0x05F4
,
0x05F4
},
{
0x05F5
,
0x05F5
,
0x05F5
},
{
0x05F6
,
0x05F6
,
0x05F6
},
{
0x05F7
,
0x05F7
,
0x05F7
},
{
0x05F8
,
0x05F8
,
0x05F8
},
{
0x05F9
,
0x05F9
,
0x05F9
},
{
0x05FA
,
0x05FA
,
0x05FA
},
{
0x05FB
,
0x05FB
,
0x05FB
},
{
0x05FC
,
0x05FC
,
0x05FC
},
{
0x05FD
,
0x05FD
,
0x05FD
},
{
0x05FE
,
0x05FE
,
0x05FE
},
{
0x05FF
,
0x05FF
,
0x05FF
}
};
static
MY_UNICASE_INFO
plane1E
[]
=
{
{
0x1E00
,
0x1E01
,
0x0041
},
{
0x1E00
,
0x1E01
,
0x0041
},
{
0x1E02
,
0x1E03
,
0x0042
},
{
0x1E02
,
0x1E03
,
0x0042
},
{
0x1E04
,
0x1E05
,
0x0042
},
{
0x1E04
,
0x1E05
,
0x0042
},
{
0x1E06
,
0x1E07
,
0x0042
},
{
0x1E06
,
0x1E07
,
0x0042
},
{
0x1E08
,
0x1E09
,
0x0043
},
{
0x1E08
,
0x1E09
,
0x0043
},
{
0x1E0A
,
0x1E0B
,
0x0044
},
{
0x1E0A
,
0x1E0B
,
0x0044
},
{
0x1E0C
,
0x1E0D
,
0x0044
},
{
0x1E0C
,
0x1E0D
,
0x0044
},
{
0x1E0E
,
0x1E0F
,
0x0044
},
{
0x1E0E
,
0x1E0F
,
0x0044
},
{
0x1E10
,
0x1E11
,
0x0044
},
{
0x1E10
,
0x1E11
,
0x0044
},
{
0x1E12
,
0x1E13
,
0x0044
},
{
0x1E12
,
0x1E13
,
0x0044
},
{
0x1E14
,
0x1E15
,
0x0045
},
{
0x1E14
,
0x1E15
,
0x0045
},
{
0x1E16
,
0x1E17
,
0x0045
},
{
0x1E16
,
0x1E17
,
0x0045
},
{
0x1E18
,
0x1E19
,
0x0045
},
{
0x1E18
,
0x1E19
,
0x0045
},
{
0x1E1A
,
0x1E1B
,
0x0045
},
{
0x1E1A
,
0x1E1B
,
0x0045
},
{
0x1E1C
,
0x1E1D
,
0x0045
},
{
0x1E1C
,
0x1E1D
,
0x0045
},
{
0x1E1E
,
0x1E1F
,
0x0046
},
{
0x1E1E
,
0x1E1F
,
0x0046
},
{
0x1E20
,
0x1E21
,
0x0047
},
{
0x1E20
,
0x1E21
,
0x0047
},
{
0x1E22
,
0x1E23
,
0x0048
},
{
0x1E22
,
0x1E23
,
0x0048
},
{
0x1E24
,
0x1E25
,
0x0048
},
{
0x1E24
,
0x1E25
,
0x0048
},
{
0x1E26
,
0x1E27
,
0x0048
},
{
0x1E26
,
0x1E27
,
0x0048
},
{
0x1E28
,
0x1E29
,
0x0048
},
{
0x1E28
,
0x1E29
,
0x0048
},
{
0x1E2A
,
0x1E2B
,
0x0048
},
{
0x1E2A
,
0x1E2B
,
0x0048
},
{
0x1E2C
,
0x1E2D
,
0x0049
},
{
0x1E2C
,
0x1E2D
,
0x0049
},
{
0x1E2E
,
0x1E2F
,
0x0049
},
{
0x1E2E
,
0x1E2F
,
0x0049
},
{
0x1E30
,
0x1E31
,
0x004B
},
{
0x1E30
,
0x1E31
,
0x004B
},
{
0x1E32
,
0x1E33
,
0x004B
},
{
0x1E32
,
0x1E33
,
0x004B
},
{
0x1E34
,
0x1E35
,
0x004B
},
{
0x1E34
,
0x1E35
,
0x004B
},
{
0x1E36
,
0x1E37
,
0x004C
},
{
0x1E36
,
0x1E37
,
0x004C
},
{
0x1E38
,
0x1E39
,
0x004C
},
{
0x1E38
,
0x1E39
,
0x004C
},
{
0x1E3A
,
0x1E3B
,
0x004C
},
{
0x1E3A
,
0x1E3B
,
0x004C
},
{
0x1E3C
,
0x1E3D
,
0x004C
},
{
0x1E3C
,
0x1E3D
,
0x004C
},
{
0x1E3E
,
0x1E3F
,
0x004D
},
{
0x1E3E
,
0x1E3F
,
0x004D
},
{
0x1E40
,
0x1E41
,
0x004D
},
{
0x1E40
,
0x1E41
,
0x004D
},
{
0x1E42
,
0x1E43
,
0x004D
},
{
0x1E42
,
0x1E43
,
0x004D
},
{
0x1E44
,
0x1E45
,
0x004E
},
{
0x1E44
,
0x1E45
,
0x004E
},
{
0x1E46
,
0x1E47
,
0x004E
},
{
0x1E46
,
0x1E47
,
0x004E
},
{
0x1E48
,
0x1E49
,
0x004E
},
{
0x1E48
,
0x1E49
,
0x004E
},
{
0x1E4A
,
0x1E4B
,
0x004E
},
{
0x1E4A
,
0x1E4B
,
0x004E
},
{
0x1E4C
,
0x1E4D
,
0x004F
},
{
0x1E4C
,
0x1E4D
,
0x004F
},
{
0x1E4E
,
0x1E4F
,
0x004F
},
{
0x1E4E
,
0x1E4F
,
0x004F
},
{
0x1E50
,
0x1E51
,
0x004F
},
{
0x1E50
,
0x1E51
,
0x004F
},
{
0x1E52
,
0x1E53
,
0x004F
},
{
0x1E52
,
0x1E53
,
0x004F
},
{
0x1E54
,
0x1E55
,
0x0050
},
{
0x1E54
,
0x1E55
,
0x0050
},
{
0x1E56
,
0x1E57
,
0x0050
},
{
0x1E56
,
0x1E57
,
0x0050
},
{
0x1E58
,
0x1E59
,
0x0052
},
{
0x1E58
,
0x1E59
,
0x0052
},
{
0x1E5A
,
0x1E5B
,
0x0052
},
{
0x1E5A
,
0x1E5B
,
0x0052
},
{
0x1E5C
,
0x1E5D
,
0x0052
},
{
0x1E5C
,
0x1E5D
,
0x0052
},
{
0x1E5E
,
0x1E5F
,
0x0052
},
{
0x1E5E
,
0x1E5F
,
0x0052
},
{
0x1E60
,
0x1E61
,
0x0053
},
{
0x1E60
,
0x1E61
,
0x0053
},
{
0x1E62
,
0x1E63
,
0x0053
},
{
0x1E62
,
0x1E63
,
0x0053
},
{
0x1E64
,
0x1E65
,
0x0053
},
{
0x1E64
,
0x1E65
,
0x0053
},
{
0x1E66
,
0x1E67
,
0x0053
},
{
0x1E66
,
0x1E67
,
0x0053
},
{
0x1E68
,
0x1E69
,
0x0053
},
{
0x1E68
,
0x1E69
,
0x0053
},
{
0x1E6A
,
0x1E6B
,
0x0054
},
{
0x1E6A
,
0x1E6B
,
0x0054
},
{
0x1E6C
,
0x1E6D
,
0x0054
},
{
0x1E6C
,
0x1E6D
,
0x0054
},
{
0x1E6E
,
0x1E6F
,
0x0054
},
{
0x1E6E
,
0x1E6F
,
0x0054
},
{
0x1E70
,
0x1E71
,
0x0054
},
{
0x1E70
,
0x1E71
,
0x0054
},
{
0x1E72
,
0x1E73
,
0x0055
},
{
0x1E72
,
0x1E73
,
0x0055
},
{
0x1E74
,
0x1E75
,
0x0055
},
{
0x1E74
,
0x1E75
,
0x0055
},
{
0x1E76
,
0x1E77
,
0x0055
},
{
0x1E76
,
0x1E77
,
0x0055
},
{
0x1E78
,
0x1E79
,
0x0055
},
{
0x1E78
,
0x1E79
,
0x0055
},
{
0x1E7A
,
0x1E7B
,
0x0055
},
{
0x1E7A
,
0x1E7B
,
0x0055
},
{
0x1E7C
,
0x1E7D
,
0x0056
},
{
0x1E7C
,
0x1E7D
,
0x0056
},
{
0x1E7E
,
0x1E7F
,
0x0056
},
{
0x1E7E
,
0x1E7F
,
0x0056
},
{
0x1E80
,
0x1E81
,
0x0057
},
{
0x1E80
,
0x1E81
,
0x0057
},
{
0x1E82
,
0x1E83
,
0x0057
},
{
0x1E82
,
0x1E83
,
0x0057
},
{
0x1E84
,
0x1E85
,
0x0057
},
{
0x1E84
,
0x1E85
,
0x0057
},
{
0x1E86
,
0x1E87
,
0x0057
},
{
0x1E86
,
0x1E87
,
0x0057
},
{
0x1E88
,
0x1E89
,
0x0057
},
{
0x1E88
,
0x1E89
,
0x0057
},
{
0x1E8A
,
0x1E8B
,
0x0058
},
{
0x1E8A
,
0x1E8B
,
0x0058
},
{
0x1E8C
,
0x1E8D
,
0x0058
},
{
0x1E8C
,
0x1E8D
,
0x0058
},
{
0x1E8E
,
0x1E8F
,
0x0059
},
{
0x1E8E
,
0x1E8F
,
0x0059
},
{
0x1E90
,
0x1E91
,
0x005A
},
{
0x1E90
,
0x1E91
,
0x005A
},
{
0x1E92
,
0x1E93
,
0x005A
},
{
0x1E92
,
0x1E93
,
0x005A
},
{
0x1E94
,
0x1E95
,
0x005A
},
{
0x1E94
,
0x1E95
,
0x005A
},
{
0x1E96
,
0x1E96
,
0x0048
},
{
0x1E97
,
0x1E97
,
0x0054
},
{
0x1E98
,
0x1E98
,
0x0057
},
{
0x1E99
,
0x1E99
,
0x0059
},
{
0x1E9A
,
0x1E9A
,
0x1E9A
},
{
0x1E60
,
0x1E9B
,
0x0053
},
{
0x1E9C
,
0x1E9C
,
0x1E9C
},
{
0x1E9D
,
0x1E9D
,
0x1E9D
},
{
0x1E9E
,
0x1E9E
,
0x1E9E
},
{
0x1E9F
,
0x1E9F
,
0x1E9F
},
{
0x1EA0
,
0x1EA1
,
0x0041
},
{
0x1EA0
,
0x1EA1
,
0x0041
},
{
0x1EA2
,
0x1EA3
,
0x0041
},
{
0x1EA2
,
0x1EA3
,
0x0041
},
{
0x1EA4
,
0x1EA5
,
0x0041
},
{
0x1EA4
,
0x1EA5
,
0x0041
},
{
0x1EA6
,
0x1EA7
,
0x0041
},
{
0x1EA6
,
0x1EA7
,
0x0041
},
{
0x1EA8
,
0x1EA9
,
0x0041
},
{
0x1EA8
,
0x1EA9
,
0x0041
},
{
0x1EAA
,
0x1EAB
,
0x0041
},
{
0x1EAA
,
0x1EAB
,
0x0041
},
{
0x1EAC
,
0x1EAD
,
0x0041
},
{
0x1EAC
,
0x1EAD
,
0x0041
},
{
0x1EAE
,
0x1EAF
,
0x0041
},
{
0x1EAE
,
0x1EAF
,
0x0041
},
{
0x1EB0
,
0x1EB1
,
0x0041
},
{
0x1EB0
,
0x1EB1
,
0x0041
},
{
0x1EB2
,
0x1EB3
,
0x0041
},
{
0x1EB2
,
0x1EB3
,
0x0041
},
{
0x1EB4
,
0x1EB5
,
0x0041
},
{
0x1EB4
,
0x1EB5
,
0x0041
},
{
0x1EB6
,
0x1EB7
,
0x0041
},
{
0x1EB6
,
0x1EB7
,
0x0041
},
{
0x1EB8
,
0x1EB9
,
0x0045
},
{
0x1EB8
,
0x1EB9
,
0x0045
},
{
0x1EBA
,
0x1EBB
,
0x0045
},
{
0x1EBA
,
0x1EBB
,
0x0045
},
{
0x1EBC
,
0x1EBD
,
0x0045
},
{
0x1EBC
,
0x1EBD
,
0x0045
},
{
0x1EBE
,
0x1EBF
,
0x0045
},
{
0x1EBE
,
0x1EBF
,
0x0045
},
{
0x1EC0
,
0x1EC1
,
0x0045
},
{
0x1EC0
,
0x1EC1
,
0x0045
},
{
0x1EC2
,
0x1EC3
,
0x0045
},
{
0x1EC2
,
0x1EC3
,
0x0045
},
{
0x1EC4
,
0x1EC5
,
0x0045
},
{
0x1EC4
,
0x1EC5
,
0x0045
},
{
0x1EC6
,
0x1EC7
,
0x0045
},
{
0x1EC6
,
0x1EC7
,
0x0045
},
{
0x1EC8
,
0x1EC9
,
0x0049
},
{
0x1EC8
,
0x1EC9
,
0x0049
},
{
0x1ECA
,
0x1ECB
,
0x0049
},
{
0x1ECA
,
0x1ECB
,
0x0049
},
{
0x1ECC
,
0x1ECD
,
0x004F
},
{
0x1ECC
,
0x1ECD
,
0x004F
},
{
0x1ECE
,
0x1ECF
,
0x004F
},
{
0x1ECE
,
0x1ECF
,
0x004F
},
{
0x1ED0
,
0x1ED1
,
0x004F
},
{
0x1ED0
,
0x1ED1
,
0x004F
},
{
0x1ED2
,
0x1ED3
,
0x004F
},
{
0x1ED2
,
0x1ED3
,
0x004F
},
{
0x1ED4
,
0x1ED5
,
0x004F
},
{
0x1ED4
,
0x1ED5
,
0x004F
},
{
0x1ED6
,
0x1ED7
,
0x004F
},
{
0x1ED6
,
0x1ED7
,
0x004F
},
{
0x1ED8
,
0x1ED9
,
0x004F
},
{
0x1ED8
,
0x1ED9
,
0x004F
},
{
0x1EDA
,
0x1EDB
,
0x004F
},
{
0x1EDA
,
0x1EDB
,
0x004F
},
{
0x1EDC
,
0x1EDD
,
0x004F
},
{
0x1EDC
,
0x1EDD
,
0x004F
},
{
0x1EDE
,
0x1EDF
,
0x004F
},
{
0x1EDE
,
0x1EDF
,
0x004F
},
{
0x1EE0
,
0x1EE1
,
0x004F
},
{
0x1EE0
,
0x1EE1
,
0x004F
},
{
0x1EE2
,
0x1EE3
,
0x004F
},
{
0x1EE2
,
0x1EE3
,
0x004F
},
{
0x1EE4
,
0x1EE5
,
0x0055
},
{
0x1EE4
,
0x1EE5
,
0x0055
},
{
0x1EE6
,
0x1EE7
,
0x0055
},
{
0x1EE6
,
0x1EE7
,
0x0055
},
{
0x1EE8
,
0x1EE9
,
0x0055
},
{
0x1EE8
,
0x1EE9
,
0x0055
},
{
0x1EEA
,
0x1EEB
,
0x0055
},
{
0x1EEA
,
0x1EEB
,
0x0055
},
{
0x1EEC
,
0x1EED
,
0x0055
},
{
0x1EEC
,
0x1EED
,
0x0055
},
{
0x1EEE
,
0x1EEF
,
0x0055
},
{
0x1EEE
,
0x1EEF
,
0x0055
},
{
0x1EF0
,
0x1EF1
,
0x0055
},
{
0x1EF0
,
0x1EF1
,
0x0055
},
{
0x1EF2
,
0x1EF3
,
0x0059
},
{
0x1EF2
,
0x1EF3
,
0x0059
},
{
0x1EF4
,
0x1EF5
,
0x0059
},
{
0x1EF4
,
0x1EF5
,
0x0059
},
{
0x1EF6
,
0x1EF7
,
0x0059
},
{
0x1EF6
,
0x1EF7
,
0x0059
},
{
0x1EF8
,
0x1EF9
,
0x0059
},
{
0x1EF8
,
0x1EF9
,
0x0059
},
{
0x1EFA
,
0x1EFA
,
0x1EFA
},
{
0x1EFB
,
0x1EFB
,
0x1EFB
},
{
0x1EFC
,
0x1EFC
,
0x1EFC
},
{
0x1EFD
,
0x1EFD
,
0x1EFD
},
{
0x1EFE
,
0x1EFE
,
0x1EFE
},
{
0x1EFF
,
0x1EFF
,
0x1EFF
}
};
static
MY_UNICASE_INFO
plane1F
[]
=
{
{
0x1F08
,
0x1F00
,
0x0391
},
{
0x1F09
,
0x1F01
,
0x0391
},
{
0x1F0A
,
0x1F02
,
0x0391
},
{
0x1F0B
,
0x1F03
,
0x0391
},
{
0x1F0C
,
0x1F04
,
0x0391
},
{
0x1F0D
,
0x1F05
,
0x0391
},
{
0x1F0E
,
0x1F06
,
0x0391
},
{
0x1F0F
,
0x1F07
,
0x0391
},
{
0x1F08
,
0x1F00
,
0x0391
},
{
0x1F09
,
0x1F01
,
0x0391
},
{
0x1F0A
,
0x1F02
,
0x0391
},
{
0x1F0B
,
0x1F03
,
0x0391
},
{
0x1F0C
,
0x1F04
,
0x0391
},
{
0x1F0D
,
0x1F05
,
0x0391
},
{
0x1F0E
,
0x1F06
,
0x0391
},
{
0x1F0F
,
0x1F07
,
0x0391
},
{
0x1F18
,
0x1F10
,
0x0395
},
{
0x1F19
,
0x1F11
,
0x0395
},
{
0x1F1A
,
0x1F12
,
0x0395
},
{
0x1F1B
,
0x1F13
,
0x0395
},
{
0x1F1C
,
0x1F14
,
0x0395
},
{
0x1F1D
,
0x1F15
,
0x0395
},
{
0x1F16
,
0x1F16
,
0x1F16
},
{
0x1F17
,
0x1F17
,
0x1F17
},
{
0x1F18
,
0x1F10
,
0x0395
},
{
0x1F19
,
0x1F11
,
0x0395
},
{
0x1F1A
,
0x1F12
,
0x0395
},
{
0x1F1B
,
0x1F13
,
0x0395
},
{
0x1F1C
,
0x1F14
,
0x0395
},
{
0x1F1D
,
0x1F15
,
0x0395
},
{
0x1F1E
,
0x1F1E
,
0x1F1E
},
{
0x1F1F
,
0x1F1F
,
0x1F1F
},
{
0x1F28
,
0x1F20
,
0x0397
},
{
0x1F29
,
0x1F21
,
0x0397
},
{
0x1F2A
,
0x1F22
,
0x0397
},
{
0x1F2B
,
0x1F23
,
0x0397
},
{
0x1F2C
,
0x1F24
,
0x0397
},
{
0x1F2D
,
0x1F25
,
0x0397
},
{
0x1F2E
,
0x1F26
,
0x0397
},
{
0x1F2F
,
0x1F27
,
0x0397
},
{
0x1F28
,
0x1F20
,
0x0397
},
{
0x1F29
,
0x1F21
,
0x0397
},
{
0x1F2A
,
0x1F22
,
0x0397
},
{
0x1F2B
,
0x1F23
,
0x0397
},
{
0x1F2C
,
0x1F24
,
0x0397
},
{
0x1F2D
,
0x1F25
,
0x0397
},
{
0x1F2E
,
0x1F26
,
0x0397
},
{
0x1F2F
,
0x1F27
,
0x0397
},
{
0x1F38
,
0x1F30
,
0x0399
},
{
0x1F39
,
0x1F31
,
0x0399
},
{
0x1F3A
,
0x1F32
,
0x0399
},
{
0x1F3B
,
0x1F33
,
0x0399
},
{
0x1F3C
,
0x1F34
,
0x0399
},
{
0x1F3D
,
0x1F35
,
0x0399
},
{
0x1F3E
,
0x1F36
,
0x0399
},
{
0x1F3F
,
0x1F37
,
0x0399
},
{
0x1F38
,
0x1F30
,
0x0399
},
{
0x1F39
,
0x1F31
,
0x0399
},
{
0x1F3A
,
0x1F32
,
0x0399
},
{
0x1F3B
,
0x1F33
,
0x0399
},
{
0x1F3C
,
0x1F34
,
0x0399
},
{
0x1F3D
,
0x1F35
,
0x0399
},
{
0x1F3E
,
0x1F36
,
0x0399
},
{
0x1F3F
,
0x1F37
,
0x0399
},
{
0x1F48
,
0x1F40
,
0x039F
},
{
0x1F49
,
0x1F41
,
0x039F
},
{
0x1F4A
,
0x1F42
,
0x039F
},
{
0x1F4B
,
0x1F43
,
0x039F
},
{
0x1F4C
,
0x1F44
,
0x039F
},
{
0x1F4D
,
0x1F45
,
0x039F
},
{
0x1F46
,
0x1F46
,
0x1F46
},
{
0x1F47
,
0x1F47
,
0x1F47
},
{
0x1F48
,
0x1F40
,
0x039F
},
{
0x1F49
,
0x1F41
,
0x039F
},
{
0x1F4A
,
0x1F42
,
0x039F
},
{
0x1F4B
,
0x1F43
,
0x039F
},
{
0x1F4C
,
0x1F44
,
0x039F
},
{
0x1F4D
,
0x1F45
,
0x039F
},
{
0x1F4E
,
0x1F4E
,
0x1F4E
},
{
0x1F4F
,
0x1F4F
,
0x1F4F
},
{
0x1F50
,
0x1F50
,
0x03A5
},
{
0x1F59
,
0x1F51
,
0x03A5
},
{
0x1F52
,
0x1F52
,
0x03A5
},
{
0x1F5B
,
0x1F53
,
0x03A5
},
{
0x1F54
,
0x1F54
,
0x03A5
},
{
0x1F5D
,
0x1F55
,
0x03A5
},
{
0x1F56
,
0x1F56
,
0x03A5
},
{
0x1F5F
,
0x1F57
,
0x03A5
},
{
0x1F58
,
0x1F58
,
0x1F58
},
{
0x1F59
,
0x1F51
,
0x03A5
},
{
0x1F5A
,
0x1F5A
,
0x1F5A
},
{
0x1F5B
,
0x1F53
,
0x03A5
},
{
0x1F5C
,
0x1F5C
,
0x1F5C
},
{
0x1F5D
,
0x1F55
,
0x03A5
},
{
0x1F5E
,
0x1F5E
,
0x1F5E
},
{
0x1F5F
,
0x1F57
,
0x03A5
},
{
0x1F68
,
0x1F60
,
0x03A9
},
{
0x1F69
,
0x1F61
,
0x03A9
},
{
0x1F6A
,
0x1F62
,
0x03A9
},
{
0x1F6B
,
0x1F63
,
0x03A9
},
{
0x1F6C
,
0x1F64
,
0x03A9
},
{
0x1F6D
,
0x1F65
,
0x03A9
},
{
0x1F6E
,
0x1F66
,
0x03A9
},
{
0x1F6F
,
0x1F67
,
0x03A9
},
{
0x1F68
,
0x1F60
,
0x03A9
},
{
0x1F69
,
0x1F61
,
0x03A9
},
{
0x1F6A
,
0x1F62
,
0x03A9
},
{
0x1F6B
,
0x1F63
,
0x03A9
},
{
0x1F6C
,
0x1F64
,
0x03A9
},
{
0x1F6D
,
0x1F65
,
0x03A9
},
{
0x1F6E
,
0x1F66
,
0x03A9
},
{
0x1F6F
,
0x1F67
,
0x03A9
},
{
0x1FBA
,
0x1F70
,
0x0391
},
{
0x1FBB
,
0x1F71
,
0x1FBB
},
{
0x1FC8
,
0x1F72
,
0x0395
},
{
0x1FC9
,
0x1F73
,
0x1FC9
},
{
0x1FCA
,
0x1F74
,
0x0397
},
{
0x1FCB
,
0x1F75
,
0x1FCB
},
{
0x1FDA
,
0x1F76
,
0x0399
},
{
0x1FDB
,
0x1F77
,
0x1FDB
},
{
0x1FF8
,
0x1F78
,
0x039F
},
{
0x1FF9
,
0x1F79
,
0x1FF9
},
{
0x1FEA
,
0x1F7A
,
0x03A5
},
{
0x1FEB
,
0x1F7B
,
0x1FEB
},
{
0x1FFA
,
0x1F7C
,
0x03A9
},
{
0x1FFB
,
0x1F7D
,
0x1FFB
},
{
0x1F7E
,
0x1F7E
,
0x1F7E
},
{
0x1F7F
,
0x1F7F
,
0x1F7F
},
{
0x1F88
,
0x1F80
,
0x0391
},
{
0x1F89
,
0x1F81
,
0x0391
},
{
0x1F8A
,
0x1F82
,
0x0391
},
{
0x1F8B
,
0x1F83
,
0x0391
},
{
0x1F8C
,
0x1F84
,
0x0391
},
{
0x1F8D
,
0x1F85
,
0x0391
},
{
0x1F8E
,
0x1F86
,
0x0391
},
{
0x1F8F
,
0x1F87
,
0x0391
},
{
0x1F88
,
0x1F80
,
0x0391
},
{
0x1F89
,
0x1F81
,
0x0391
},
{
0x1F8A
,
0x1F82
,
0x0391
},
{
0x1F8B
,
0x1F83
,
0x0391
},
{
0x1F8C
,
0x1F84
,
0x0391
},
{
0x1F8D
,
0x1F85
,
0x0391
},
{
0x1F8E
,
0x1F86
,
0x0391
},
{
0x1F8F
,
0x1F87
,
0x0391
},
{
0x1F98
,
0x1F90
,
0x0397
},
{
0x1F99
,
0x1F91
,
0x0397
},
{
0x1F9A
,
0x1F92
,
0x0397
},
{
0x1F9B
,
0x1F93
,
0x0397
},
{
0x1F9C
,
0x1F94
,
0x0397
},
{
0x1F9D
,
0x1F95
,
0x0397
},
{
0x1F9E
,
0x1F96
,
0x0397
},
{
0x1F9F
,
0x1F97
,
0x0397
},
{
0x1F98
,
0x1F90
,
0x0397
},
{
0x1F99
,
0x1F91
,
0x0397
},
{
0x1F9A
,
0x1F92
,
0x0397
},
{
0x1F9B
,
0x1F93
,
0x0397
},
{
0x1F9C
,
0x1F94
,
0x0397
},
{
0x1F9D
,
0x1F95
,
0x0397
},
{
0x1F9E
,
0x1F96
,
0x0397
},
{
0x1F9F
,
0x1F97
,
0x0397
},
{
0x1FA8
,
0x1FA0
,
0x03A9
},
{
0x1FA9
,
0x1FA1
,
0x03A9
},
{
0x1FAA
,
0x1FA2
,
0x03A9
},
{
0x1FAB
,
0x1FA3
,
0x03A9
},
{
0x1FAC
,
0x1FA4
,
0x03A9
},
{
0x1FAD
,
0x1FA5
,
0x03A9
},
{
0x1FAE
,
0x1FA6
,
0x03A9
},
{
0x1FAF
,
0x1FA7
,
0x03A9
},
{
0x1FA8
,
0x1FA0
,
0x03A9
},
{
0x1FA9
,
0x1FA1
,
0x03A9
},
{
0x1FAA
,
0x1FA2
,
0x03A9
},
{
0x1FAB
,
0x1FA3
,
0x03A9
},
{
0x1FAC
,
0x1FA4
,
0x03A9
},
{
0x1FAD
,
0x1FA5
,
0x03A9
},
{
0x1FAE
,
0x1FA6
,
0x03A9
},
{
0x1FAF
,
0x1FA7
,
0x03A9
},
{
0x1FB8
,
0x1FB0
,
0x0391
},
{
0x1FB9
,
0x1FB1
,
0x0391
},
{
0x1FB2
,
0x1FB2
,
0x0391
},
{
0x1FBC
,
0x1FB3
,
0x0391
},
{
0x1FB4
,
0x1FB4
,
0x0391
},
{
0x1FB5
,
0x1FB5
,
0x1FB5
},
{
0x1FB6
,
0x1FB6
,
0x0391
},
{
0x1FB7
,
0x1FB7
,
0x0391
},
{
0x1FB8
,
0x1FB0
,
0x0391
},
{
0x1FB9
,
0x1FB1
,
0x0391
},
{
0x1FBA
,
0x1F70
,
0x0391
},
{
0x1FBB
,
0x1F71
,
0x1FBB
},
{
0x1FBC
,
0x1FB3
,
0x0391
},
{
0x1FBD
,
0x1FBD
,
0x1FBD
},
{
0x0399
,
0x1FBE
,
0x0399
},
{
0x1FBF
,
0x1FBF
,
0x1FBF
},
{
0x1FC0
,
0x1FC0
,
0x1FC0
},
{
0x1FC1
,
0x1FC1
,
0x1FC1
},
{
0x1FC2
,
0x1FC2
,
0x0397
},
{
0x1FCC
,
0x1FC3
,
0x0397
},
{
0x1FC4
,
0x1FC4
,
0x0397
},
{
0x1FC5
,
0x1FC5
,
0x1FC5
},
{
0x1FC6
,
0x1FC6
,
0x0397
},
{
0x1FC7
,
0x1FC7
,
0x0397
},
{
0x1FC8
,
0x1F72
,
0x0395
},
{
0x1FC9
,
0x1F73
,
0x1FC9
},
{
0x1FCA
,
0x1F74
,
0x0397
},
{
0x1FCB
,
0x1F75
,
0x1FCB
},
{
0x1FCC
,
0x1FC3
,
0x0397
},
{
0x1FCD
,
0x1FCD
,
0x1FCD
},
{
0x1FCE
,
0x1FCE
,
0x1FCE
},
{
0x1FCF
,
0x1FCF
,
0x1FCF
},
{
0x1FD8
,
0x1FD0
,
0x0399
},
{
0x1FD9
,
0x1FD1
,
0x0399
},
{
0x1FD2
,
0x1FD2
,
0x0399
},
{
0x1FD3
,
0x1FD3
,
0x1FD3
},
{
0x1FD4
,
0x1FD4
,
0x1FD4
},
{
0x1FD5
,
0x1FD5
,
0x1FD5
},
{
0x1FD6
,
0x1FD6
,
0x0399
},
{
0x1FD7
,
0x1FD7
,
0x0399
},
{
0x1FD8
,
0x1FD0
,
0x0399
},
{
0x1FD9
,
0x1FD1
,
0x0399
},
{
0x1FDA
,
0x1F76
,
0x0399
},
{
0x1FDB
,
0x1F77
,
0x1FDB
},
{
0x1FDC
,
0x1FDC
,
0x1FDC
},
{
0x1FDD
,
0x1FDD
,
0x1FDD
},
{
0x1FDE
,
0x1FDE
,
0x1FDE
},
{
0x1FDF
,
0x1FDF
,
0x1FDF
},
{
0x1FE8
,
0x1FE0
,
0x03A5
},
{
0x1FE9
,
0x1FE1
,
0x03A5
},
{
0x1FE2
,
0x1FE2
,
0x03A5
},
{
0x1FE3
,
0x1FE3
,
0x1FE3
},
{
0x1FE4
,
0x1FE4
,
0x03A1
},
{
0x1FEC
,
0x1FE5
,
0x03A1
},
{
0x1FE6
,
0x1FE6
,
0x03A5
},
{
0x1FE7
,
0x1FE7
,
0x03A5
},
{
0x1FE8
,
0x1FE0
,
0x03A5
},
{
0x1FE9
,
0x1FE1
,
0x03A5
},
{
0x1FEA
,
0x1F7A
,
0x03A5
},
{
0x1FEB
,
0x1F7B
,
0x1FEB
},
{
0x1FEC
,
0x1FE5
,
0x03A1
},
{
0x1FED
,
0x1FED
,
0x1FED
},
{
0x1FEE
,
0x1FEE
,
0x1FEE
},
{
0x1FEF
,
0x1FEF
,
0x1FEF
},
{
0x1FF0
,
0x1FF0
,
0x1FF0
},
{
0x1FF1
,
0x1FF1
,
0x1FF1
},
{
0x1FF2
,
0x1FF2
,
0x03A9
},
{
0x1FFC
,
0x1FF3
,
0x03A9
},
{
0x1FF4
,
0x1FF4
,
0x03A9
},
{
0x1FF5
,
0x1FF5
,
0x1FF5
},
{
0x1FF6
,
0x1FF6
,
0x03A9
},
{
0x1FF7
,
0x1FF7
,
0x03A9
},
{
0x1FF8
,
0x1F78
,
0x039F
},
{
0x1FF9
,
0x1F79
,
0x1FF9
},
{
0x1FFA
,
0x1F7C
,
0x03A9
},
{
0x1FFB
,
0x1F7D
,
0x1FFB
},
{
0x1FFC
,
0x1FF3
,
0x03A9
},
{
0x1FFD
,
0x1FFD
,
0x1FFD
},
{
0x1FFE
,
0x1FFE
,
0x1FFE
},
{
0x1FFF
,
0x1FFF
,
0x1FFF
}
};
static
MY_UNICASE_INFO
plane21
[]
=
{
{
0x2100
,
0x2100
,
0x2100
},
{
0x2101
,
0x2101
,
0x2101
},
{
0x2102
,
0x2102
,
0x2102
},
{
0x2103
,
0x2103
,
0x2103
},
{
0x2104
,
0x2104
,
0x2104
},
{
0x2105
,
0x2105
,
0x2105
},
{
0x2106
,
0x2106
,
0x2106
},
{
0x2107
,
0x2107
,
0x2107
},
{
0x2108
,
0x2108
,
0x2108
},
{
0x2109
,
0x2109
,
0x2109
},
{
0x210A
,
0x210A
,
0x210A
},
{
0x210B
,
0x210B
,
0x210B
},
{
0x210C
,
0x210C
,
0x210C
},
{
0x210D
,
0x210D
,
0x210D
},
{
0x210E
,
0x210E
,
0x210E
},
{
0x210F
,
0x210F
,
0x210F
},
{
0x2110
,
0x2110
,
0x2110
},
{
0x2111
,
0x2111
,
0x2111
},
{
0x2112
,
0x2112
,
0x2112
},
{
0x2113
,
0x2113
,
0x2113
},
{
0x2114
,
0x2114
,
0x2114
},
{
0x2115
,
0x2115
,
0x2115
},
{
0x2116
,
0x2116
,
0x2116
},
{
0x2117
,
0x2117
,
0x2117
},
{
0x2118
,
0x2118
,
0x2118
},
{
0x2119
,
0x2119
,
0x2119
},
{
0x211A
,
0x211A
,
0x211A
},
{
0x211B
,
0x211B
,
0x211B
},
{
0x211C
,
0x211C
,
0x211C
},
{
0x211D
,
0x211D
,
0x211D
},
{
0x211E
,
0x211E
,
0x211E
},
{
0x211F
,
0x211F
,
0x211F
},
{
0x2120
,
0x2120
,
0x2120
},
{
0x2121
,
0x2121
,
0x2121
},
{
0x2122
,
0x2122
,
0x2122
},
{
0x2123
,
0x2123
,
0x2123
},
{
0x2124
,
0x2124
,
0x2124
},
{
0x2125
,
0x2125
,
0x2125
},
{
0x2126
,
0x03C9
,
0x2126
},
{
0x2127
,
0x2127
,
0x2127
},
{
0x2128
,
0x2128
,
0x2128
},
{
0x2129
,
0x2129
,
0x2129
},
{
0x212A
,
0x006B
,
0x212A
},
{
0x212B
,
0x00E5
,
0x212B
},
{
0x212C
,
0x212C
,
0x212C
},
{
0x212D
,
0x212D
,
0x212D
},
{
0x212E
,
0x212E
,
0x212E
},
{
0x212F
,
0x212F
,
0x212F
},
{
0x2130
,
0x2130
,
0x2130
},
{
0x2131
,
0x2131
,
0x2131
},
{
0x2132
,
0x2132
,
0x2132
},
{
0x2133
,
0x2133
,
0x2133
},
{
0x2134
,
0x2134
,
0x2134
},
{
0x2135
,
0x2135
,
0x2135
},
{
0x2136
,
0x2136
,
0x2136
},
{
0x2137
,
0x2137
,
0x2137
},
{
0x2138
,
0x2138
,
0x2138
},
{
0x2139
,
0x2139
,
0x2139
},
{
0x213A
,
0x213A
,
0x213A
},
{
0x213B
,
0x213B
,
0x213B
},
{
0x213C
,
0x213C
,
0x213C
},
{
0x213D
,
0x213D
,
0x213D
},
{
0x213E
,
0x213E
,
0x213E
},
{
0x213F
,
0x213F
,
0x213F
},
{
0x2140
,
0x2140
,
0x2140
},
{
0x2141
,
0x2141
,
0x2141
},
{
0x2142
,
0x2142
,
0x2142
},
{
0x2143
,
0x2143
,
0x2143
},
{
0x2144
,
0x2144
,
0x2144
},
{
0x2145
,
0x2145
,
0x2145
},
{
0x2146
,
0x2146
,
0x2146
},
{
0x2147
,
0x2147
,
0x2147
},
{
0x2148
,
0x2148
,
0x2148
},
{
0x2149
,
0x2149
,
0x2149
},
{
0x214A
,
0x214A
,
0x214A
},
{
0x214B
,
0x214B
,
0x214B
},
{
0x214C
,
0x214C
,
0x214C
},
{
0x214D
,
0x214D
,
0x214D
},
{
0x214E
,
0x214E
,
0x214E
},
{
0x214F
,
0x214F
,
0x214F
},
{
0x2150
,
0x2150
,
0x2150
},
{
0x2151
,
0x2151
,
0x2151
},
{
0x2152
,
0x2152
,
0x2152
},
{
0x2153
,
0x2153
,
0x2153
},
{
0x2154
,
0x2154
,
0x2154
},
{
0x2155
,
0x2155
,
0x2155
},
{
0x2156
,
0x2156
,
0x2156
},
{
0x2157
,
0x2157
,
0x2157
},
{
0x2158
,
0x2158
,
0x2158
},
{
0x2159
,
0x2159
,
0x2159
},
{
0x215A
,
0x215A
,
0x215A
},
{
0x215B
,
0x215B
,
0x215B
},
{
0x215C
,
0x215C
,
0x215C
},
{
0x215D
,
0x215D
,
0x215D
},
{
0x215E
,
0x215E
,
0x215E
},
{
0x215F
,
0x215F
,
0x215F
},
{
0x2160
,
0x2170
,
0x2160
},
{
0x2161
,
0x2171
,
0x2161
},
{
0x2162
,
0x2172
,
0x2162
},
{
0x2163
,
0x2173
,
0x2163
},
{
0x2164
,
0x2174
,
0x2164
},
{
0x2165
,
0x2175
,
0x2165
},
{
0x2166
,
0x2176
,
0x2166
},
{
0x2167
,
0x2177
,
0x2167
},
{
0x2168
,
0x2178
,
0x2168
},
{
0x2169
,
0x2179
,
0x2169
},
{
0x216A
,
0x217A
,
0x216A
},
{
0x216B
,
0x217B
,
0x216B
},
{
0x216C
,
0x217C
,
0x216C
},
{
0x216D
,
0x217D
,
0x216D
},
{
0x216E
,
0x217E
,
0x216E
},
{
0x216F
,
0x217F
,
0x216F
},
{
0x2160
,
0x2170
,
0x2160
},
{
0x2161
,
0x2171
,
0x2161
},
{
0x2162
,
0x2172
,
0x2162
},
{
0x2163
,
0x2173
,
0x2163
},
{
0x2164
,
0x2174
,
0x2164
},
{
0x2165
,
0x2175
,
0x2165
},
{
0x2166
,
0x2176
,
0x2166
},
{
0x2167
,
0x2177
,
0x2167
},
{
0x2168
,
0x2178
,
0x2168
},
{
0x2169
,
0x2179
,
0x2169
},
{
0x216A
,
0x217A
,
0x216A
},
{
0x216B
,
0x217B
,
0x216B
},
{
0x216C
,
0x217C
,
0x216C
},
{
0x216D
,
0x217D
,
0x216D
},
{
0x216E
,
0x217E
,
0x216E
},
{
0x216F
,
0x217F
,
0x216F
},
{
0x2180
,
0x2180
,
0x2180
},
{
0x2181
,
0x2181
,
0x2181
},
{
0x2182
,
0x2182
,
0x2182
},
{
0x2183
,
0x2183
,
0x2183
},
{
0x2184
,
0x2184
,
0x2184
},
{
0x2185
,
0x2185
,
0x2185
},
{
0x2186
,
0x2186
,
0x2186
},
{
0x2187
,
0x2187
,
0x2187
},
{
0x2188
,
0x2188
,
0x2188
},
{
0x2189
,
0x2189
,
0x2189
},
{
0x218A
,
0x218A
,
0x218A
},
{
0x218B
,
0x218B
,
0x218B
},
{
0x218C
,
0x218C
,
0x218C
},
{
0x218D
,
0x218D
,
0x218D
},
{
0x218E
,
0x218E
,
0x218E
},
{
0x218F
,
0x218F
,
0x218F
},
{
0x2190
,
0x2190
,
0x2190
},
{
0x2191
,
0x2191
,
0x2191
},
{
0x2192
,
0x2192
,
0x2192
},
{
0x2193
,
0x2193
,
0x2193
},
{
0x2194
,
0x2194
,
0x2194
},
{
0x2195
,
0x2195
,
0x2195
},
{
0x2196
,
0x2196
,
0x2196
},
{
0x2197
,
0x2197
,
0x2197
},
{
0x2198
,
0x2198
,
0x2198
},
{
0x2199
,
0x2199
,
0x2199
},
{
0x219A
,
0x219A
,
0x219A
},
{
0x219B
,
0x219B
,
0x219B
},
{
0x219C
,
0x219C
,
0x219C
},
{
0x219D
,
0x219D
,
0x219D
},
{
0x219E
,
0x219E
,
0x219E
},
{
0x219F
,
0x219F
,
0x219F
},
{
0x21A0
,
0x21A0
,
0x21A0
},
{
0x21A1
,
0x21A1
,
0x21A1
},
{
0x21A2
,
0x21A2
,
0x21A2
},
{
0x21A3
,
0x21A3
,
0x21A3
},
{
0x21A4
,
0x21A4
,
0x21A4
},
{
0x21A5
,
0x21A5
,
0x21A5
},
{
0x21A6
,
0x21A6
,
0x21A6
},
{
0x21A7
,
0x21A7
,
0x21A7
},
{
0x21A8
,
0x21A8
,
0x21A8
},
{
0x21A9
,
0x21A9
,
0x21A9
},
{
0x21AA
,
0x21AA
,
0x21AA
},
{
0x21AB
,
0x21AB
,
0x21AB
},
{
0x21AC
,
0x21AC
,
0x21AC
},
{
0x21AD
,
0x21AD
,
0x21AD
},
{
0x21AE
,
0x21AE
,
0x21AE
},
{
0x21AF
,
0x21AF
,
0x21AF
},
{
0x21B0
,
0x21B0
,
0x21B0
},
{
0x21B1
,
0x21B1
,
0x21B1
},
{
0x21B2
,
0x21B2
,
0x21B2
},
{
0x21B3
,
0x21B3
,
0x21B3
},
{
0x21B4
,
0x21B4
,
0x21B4
},
{
0x21B5
,
0x21B5
,
0x21B5
},
{
0x21B6
,
0x21B6
,
0x21B6
},
{
0x21B7
,
0x21B7
,
0x21B7
},
{
0x21B8
,
0x21B8
,
0x21B8
},
{
0x21B9
,
0x21B9
,
0x21B9
},
{
0x21BA
,
0x21BA
,
0x21BA
},
{
0x21BB
,
0x21BB
,
0x21BB
},
{
0x21BC
,
0x21BC
,
0x21BC
},
{
0x21BD
,
0x21BD
,
0x21BD
},
{
0x21BE
,
0x21BE
,
0x21BE
},
{
0x21BF
,
0x21BF
,
0x21BF
},
{
0x21C0
,
0x21C0
,
0x21C0
},
{
0x21C1
,
0x21C1
,
0x21C1
},
{
0x21C2
,
0x21C2
,
0x21C2
},
{
0x21C3
,
0x21C3
,
0x21C3
},
{
0x21C4
,
0x21C4
,
0x21C4
},
{
0x21C5
,
0x21C5
,
0x21C5
},
{
0x21C6
,
0x21C6
,
0x21C6
},
{
0x21C7
,
0x21C7
,
0x21C7
},
{
0x21C8
,
0x21C8
,
0x21C8
},
{
0x21C9
,
0x21C9
,
0x21C9
},
{
0x21CA
,
0x21CA
,
0x21CA
},
{
0x21CB
,
0x21CB
,
0x21CB
},
{
0x21CC
,
0x21CC
,
0x21CC
},
{
0x21CD
,
0x21CD
,
0x21CD
},
{
0x21CE
,
0x21CE
,
0x21CE
},
{
0x21CF
,
0x21CF
,
0x21CF
},
{
0x21D0
,
0x21D0
,
0x21D0
},
{
0x21D1
,
0x21D1
,
0x21D1
},
{
0x21D2
,
0x21D2
,
0x21D2
},
{
0x21D3
,
0x21D3
,
0x21D3
},
{
0x21D4
,
0x21D4
,
0x21D4
},
{
0x21D5
,
0x21D5
,
0x21D5
},
{
0x21D6
,
0x21D6
,
0x21D6
},
{
0x21D7
,
0x21D7
,
0x21D7
},
{
0x21D8
,
0x21D8
,
0x21D8
},
{
0x21D9
,
0x21D9
,
0x21D9
},
{
0x21DA
,
0x21DA
,
0x21DA
},
{
0x21DB
,
0x21DB
,
0x21DB
},
{
0x21DC
,
0x21DC
,
0x21DC
},
{
0x21DD
,
0x21DD
,
0x21DD
},
{
0x21DE
,
0x21DE
,
0x21DE
},
{
0x21DF
,
0x21DF
,
0x21DF
},
{
0x21E0
,
0x21E0
,
0x21E0
},
{
0x21E1
,
0x21E1
,
0x21E1
},
{
0x21E2
,
0x21E2
,
0x21E2
},
{
0x21E3
,
0x21E3
,
0x21E3
},
{
0x21E4
,
0x21E4
,
0x21E4
},
{
0x21E5
,
0x21E5
,
0x21E5
},
{
0x21E6
,
0x21E6
,
0x21E6
},
{
0x21E7
,
0x21E7
,
0x21E7
},
{
0x21E8
,
0x21E8
,
0x21E8
},
{
0x21E9
,
0x21E9
,
0x21E9
},
{
0x21EA
,
0x21EA
,
0x21EA
},
{
0x21EB
,
0x21EB
,
0x21EB
},
{
0x21EC
,
0x21EC
,
0x21EC
},
{
0x21ED
,
0x21ED
,
0x21ED
},
{
0x21EE
,
0x21EE
,
0x21EE
},
{
0x21EF
,
0x21EF
,
0x21EF
},
{
0x21F0
,
0x21F0
,
0x21F0
},
{
0x21F1
,
0x21F1
,
0x21F1
},
{
0x21F2
,
0x21F2
,
0x21F2
},
{
0x21F3
,
0x21F3
,
0x21F3
},
{
0x21F4
,
0x21F4
,
0x21F4
},
{
0x21F5
,
0x21F5
,
0x21F5
},
{
0x21F6
,
0x21F6
,
0x21F6
},
{
0x21F7
,
0x21F7
,
0x21F7
},
{
0x21F8
,
0x21F8
,
0x21F8
},
{
0x21F9
,
0x21F9
,
0x21F9
},
{
0x21FA
,
0x21FA
,
0x21FA
},
{
0x21FB
,
0x21FB
,
0x21FB
},
{
0x21FC
,
0x21FC
,
0x21FC
},
{
0x21FD
,
0x21FD
,
0x21FD
},
{
0x21FE
,
0x21FE
,
0x21FE
},
{
0x21FF
,
0x21FF
,
0x21FF
}
};
static
MY_UNICASE_INFO
plane24
[]
=
{
{
0x2400
,
0x2400
,
0x2400
},
{
0x2401
,
0x2401
,
0x2401
},
{
0x2402
,
0x2402
,
0x2402
},
{
0x2403
,
0x2403
,
0x2403
},
{
0x2404
,
0x2404
,
0x2404
},
{
0x2405
,
0x2405
,
0x2405
},
{
0x2406
,
0x2406
,
0x2406
},
{
0x2407
,
0x2407
,
0x2407
},
{
0x2408
,
0x2408
,
0x2408
},
{
0x2409
,
0x2409
,
0x2409
},
{
0x240A
,
0x240A
,
0x240A
},
{
0x240B
,
0x240B
,
0x240B
},
{
0x240C
,
0x240C
,
0x240C
},
{
0x240D
,
0x240D
,
0x240D
},
{
0x240E
,
0x240E
,
0x240E
},
{
0x240F
,
0x240F
,
0x240F
},
{
0x2410
,
0x2410
,
0x2410
},
{
0x2411
,
0x2411
,
0x2411
},
{
0x2412
,
0x2412
,
0x2412
},
{
0x2413
,
0x2413
,
0x2413
},
{
0x2414
,
0x2414
,
0x2414
},
{
0x2415
,
0x2415
,
0x2415
},
{
0x2416
,
0x2416
,
0x2416
},
{
0x2417
,
0x2417
,
0x2417
},
{
0x2418
,
0x2418
,
0x2418
},
{
0x2419
,
0x2419
,
0x2419
},
{
0x241A
,
0x241A
,
0x241A
},
{
0x241B
,
0x241B
,
0x241B
},
{
0x241C
,
0x241C
,
0x241C
},
{
0x241D
,
0x241D
,
0x241D
},
{
0x241E
,
0x241E
,
0x241E
},
{
0x241F
,
0x241F
,
0x241F
},
{
0x2420
,
0x2420
,
0x2420
},
{
0x2421
,
0x2421
,
0x2421
},
{
0x2422
,
0x2422
,
0x2422
},
{
0x2423
,
0x2423
,
0x2423
},
{
0x2424
,
0x2424
,
0x2424
},
{
0x2425
,
0x2425
,
0x2425
},
{
0x2426
,
0x2426
,
0x2426
},
{
0x2427
,
0x2427
,
0x2427
},
{
0x2428
,
0x2428
,
0x2428
},
{
0x2429
,
0x2429
,
0x2429
},
{
0x242A
,
0x242A
,
0x242A
},
{
0x242B
,
0x242B
,
0x242B
},
{
0x242C
,
0x242C
,
0x242C
},
{
0x242D
,
0x242D
,
0x242D
},
{
0x242E
,
0x242E
,
0x242E
},
{
0x242F
,
0x242F
,
0x242F
},
{
0x2430
,
0x2430
,
0x2430
},
{
0x2431
,
0x2431
,
0x2431
},
{
0x2432
,
0x2432
,
0x2432
},
{
0x2433
,
0x2433
,
0x2433
},
{
0x2434
,
0x2434
,
0x2434
},
{
0x2435
,
0x2435
,
0x2435
},
{
0x2436
,
0x2436
,
0x2436
},
{
0x2437
,
0x2437
,
0x2437
},
{
0x2438
,
0x2438
,
0x2438
},
{
0x2439
,
0x2439
,
0x2439
},
{
0x243A
,
0x243A
,
0x243A
},
{
0x243B
,
0x243B
,
0x243B
},
{
0x243C
,
0x243C
,
0x243C
},
{
0x243D
,
0x243D
,
0x243D
},
{
0x243E
,
0x243E
,
0x243E
},
{
0x243F
,
0x243F
,
0x243F
},
{
0x2440
,
0x2440
,
0x2440
},
{
0x2441
,
0x2441
,
0x2441
},
{
0x2442
,
0x2442
,
0x2442
},
{
0x2443
,
0x2443
,
0x2443
},
{
0x2444
,
0x2444
,
0x2444
},
{
0x2445
,
0x2445
,
0x2445
},
{
0x2446
,
0x2446
,
0x2446
},
{
0x2447
,
0x2447
,
0x2447
},
{
0x2448
,
0x2448
,
0x2448
},
{
0x2449
,
0x2449
,
0x2449
},
{
0x244A
,
0x244A
,
0x244A
},
{
0x244B
,
0x244B
,
0x244B
},
{
0x244C
,
0x244C
,
0x244C
},
{
0x244D
,
0x244D
,
0x244D
},
{
0x244E
,
0x244E
,
0x244E
},
{
0x244F
,
0x244F
,
0x244F
},
{
0x2450
,
0x2450
,
0x2450
},
{
0x2451
,
0x2451
,
0x2451
},
{
0x2452
,
0x2452
,
0x2452
},
{
0x2453
,
0x2453
,
0x2453
},
{
0x2454
,
0x2454
,
0x2454
},
{
0x2455
,
0x2455
,
0x2455
},
{
0x2456
,
0x2456
,
0x2456
},
{
0x2457
,
0x2457
,
0x2457
},
{
0x2458
,
0x2458
,
0x2458
},
{
0x2459
,
0x2459
,
0x2459
},
{
0x245A
,
0x245A
,
0x245A
},
{
0x245B
,
0x245B
,
0x245B
},
{
0x245C
,
0x245C
,
0x245C
},
{
0x245D
,
0x245D
,
0x245D
},
{
0x245E
,
0x245E
,
0x245E
},
{
0x245F
,
0x245F
,
0x245F
},
{
0x2460
,
0x2460
,
0x2460
},
{
0x2461
,
0x2461
,
0x2461
},
{
0x2462
,
0x2462
,
0x2462
},
{
0x2463
,
0x2463
,
0x2463
},
{
0x2464
,
0x2464
,
0x2464
},
{
0x2465
,
0x2465
,
0x2465
},
{
0x2466
,
0x2466
,
0x2466
},
{
0x2467
,
0x2467
,
0x2467
},
{
0x2468
,
0x2468
,
0x2468
},
{
0x2469
,
0x2469
,
0x2469
},
{
0x246A
,
0x246A
,
0x246A
},
{
0x246B
,
0x246B
,
0x246B
},
{
0x246C
,
0x246C
,
0x246C
},
{
0x246D
,
0x246D
,
0x246D
},
{
0x246E
,
0x246E
,
0x246E
},
{
0x246F
,
0x246F
,
0x246F
},
{
0x2470
,
0x2470
,
0x2470
},
{
0x2471
,
0x2471
,
0x2471
},
{
0x2472
,
0x2472
,
0x2472
},
{
0x2473
,
0x2473
,
0x2473
},
{
0x2474
,
0x2474
,
0x2474
},
{
0x2475
,
0x2475
,
0x2475
},
{
0x2476
,
0x2476
,
0x2476
},
{
0x2477
,
0x2477
,
0x2477
},
{
0x2478
,
0x2478
,
0x2478
},
{
0x2479
,
0x2479
,
0x2479
},
{
0x247A
,
0x247A
,
0x247A
},
{
0x247B
,
0x247B
,
0x247B
},
{
0x247C
,
0x247C
,
0x247C
},
{
0x247D
,
0x247D
,
0x247D
},
{
0x247E
,
0x247E
,
0x247E
},
{
0x247F
,
0x247F
,
0x247F
},
{
0x2480
,
0x2480
,
0x2480
},
{
0x2481
,
0x2481
,
0x2481
},
{
0x2482
,
0x2482
,
0x2482
},
{
0x2483
,
0x2483
,
0x2483
},
{
0x2484
,
0x2484
,
0x2484
},
{
0x2485
,
0x2485
,
0x2485
},
{
0x2486
,
0x2486
,
0x2486
},
{
0x2487
,
0x2487
,
0x2487
},
{
0x2488
,
0x2488
,
0x2488
},
{
0x2489
,
0x2489
,
0x2489
},
{
0x248A
,
0x248A
,
0x248A
},
{
0x248B
,
0x248B
,
0x248B
},
{
0x248C
,
0x248C
,
0x248C
},
{
0x248D
,
0x248D
,
0x248D
},
{
0x248E
,
0x248E
,
0x248E
},
{
0x248F
,
0x248F
,
0x248F
},
{
0x2490
,
0x2490
,
0x2490
},
{
0x2491
,
0x2491
,
0x2491
},
{
0x2492
,
0x2492
,
0x2492
},
{
0x2493
,
0x2493
,
0x2493
},
{
0x2494
,
0x2494
,
0x2494
},
{
0x2495
,
0x2495
,
0x2495
},
{
0x2496
,
0x2496
,
0x2496
},
{
0x2497
,
0x2497
,
0x2497
},
{
0x2498
,
0x2498
,
0x2498
},
{
0x2499
,
0x2499
,
0x2499
},
{
0x249A
,
0x249A
,
0x249A
},
{
0x249B
,
0x249B
,
0x249B
},
{
0x249C
,
0x249C
,
0x249C
},
{
0x249D
,
0x249D
,
0x249D
},
{
0x249E
,
0x249E
,
0x249E
},
{
0x249F
,
0x249F
,
0x249F
},
{
0x24A0
,
0x24A0
,
0x24A0
},
{
0x24A1
,
0x24A1
,
0x24A1
},
{
0x24A2
,
0x24A2
,
0x24A2
},
{
0x24A3
,
0x24A3
,
0x24A3
},
{
0x24A4
,
0x24A4
,
0x24A4
},
{
0x24A5
,
0x24A5
,
0x24A5
},
{
0x24A6
,
0x24A6
,
0x24A6
},
{
0x24A7
,
0x24A7
,
0x24A7
},
{
0x24A8
,
0x24A8
,
0x24A8
},
{
0x24A9
,
0x24A9
,
0x24A9
},
{
0x24AA
,
0x24AA
,
0x24AA
},
{
0x24AB
,
0x24AB
,
0x24AB
},
{
0x24AC
,
0x24AC
,
0x24AC
},
{
0x24AD
,
0x24AD
,
0x24AD
},
{
0x24AE
,
0x24AE
,
0x24AE
},
{
0x24AF
,
0x24AF
,
0x24AF
},
{
0x24B0
,
0x24B0
,
0x24B0
},
{
0x24B1
,
0x24B1
,
0x24B1
},
{
0x24B2
,
0x24B2
,
0x24B2
},
{
0x24B3
,
0x24B3
,
0x24B3
},
{
0x24B4
,
0x24B4
,
0x24B4
},
{
0x24B5
,
0x24B5
,
0x24B5
},
{
0x24B6
,
0x24D0
,
0x24B6
},
{
0x24B7
,
0x24D1
,
0x24B7
},
{
0x24B8
,
0x24D2
,
0x24B8
},
{
0x24B9
,
0x24D3
,
0x24B9
},
{
0x24BA
,
0x24D4
,
0x24BA
},
{
0x24BB
,
0x24D5
,
0x24BB
},
{
0x24BC
,
0x24D6
,
0x24BC
},
{
0x24BD
,
0x24D7
,
0x24BD
},
{
0x24BE
,
0x24D8
,
0x24BE
},
{
0x24BF
,
0x24D9
,
0x24BF
},
{
0x24C0
,
0x24DA
,
0x24C0
},
{
0x24C1
,
0x24DB
,
0x24C1
},
{
0x24C2
,
0x24DC
,
0x24C2
},
{
0x24C3
,
0x24DD
,
0x24C3
},
{
0x24C4
,
0x24DE
,
0x24C4
},
{
0x24C5
,
0x24DF
,
0x24C5
},
{
0x24C6
,
0x24E0
,
0x24C6
},
{
0x24C7
,
0x24E1
,
0x24C7
},
{
0x24C8
,
0x24E2
,
0x24C8
},
{
0x24C9
,
0x24E3
,
0x24C9
},
{
0x24CA
,
0x24E4
,
0x24CA
},
{
0x24CB
,
0x24E5
,
0x24CB
},
{
0x24CC
,
0x24E6
,
0x24CC
},
{
0x24CD
,
0x24E7
,
0x24CD
},
{
0x24CE
,
0x24E8
,
0x24CE
},
{
0x24CF
,
0x24E9
,
0x24CF
},
{
0x24B6
,
0x24D0
,
0x24B6
},
{
0x24B7
,
0x24D1
,
0x24B7
},
{
0x24B8
,
0x24D2
,
0x24B8
},
{
0x24B9
,
0x24D3
,
0x24B9
},
{
0x24BA
,
0x24D4
,
0x24BA
},
{
0x24BB
,
0x24D5
,
0x24BB
},
{
0x24BC
,
0x24D6
,
0x24BC
},
{
0x24BD
,
0x24D7
,
0x24BD
},
{
0x24BE
,
0x24D8
,
0x24BE
},
{
0x24BF
,
0x24D9
,
0x24BF
},
{
0x24C0
,
0x24DA
,
0x24C0
},
{
0x24C1
,
0x24DB
,
0x24C1
},
{
0x24C2
,
0x24DC
,
0x24C2
},
{
0x24C3
,
0x24DD
,
0x24C3
},
{
0x24C4
,
0x24DE
,
0x24C4
},
{
0x24C5
,
0x24DF
,
0x24C5
},
{
0x24C6
,
0x24E0
,
0x24C6
},
{
0x24C7
,
0x24E1
,
0x24C7
},
{
0x24C8
,
0x24E2
,
0x24C8
},
{
0x24C9
,
0x24E3
,
0x24C9
},
{
0x24CA
,
0x24E4
,
0x24CA
},
{
0x24CB
,
0x24E5
,
0x24CB
},
{
0x24CC
,
0x24E6
,
0x24CC
},
{
0x24CD
,
0x24E7
,
0x24CD
},
{
0x24CE
,
0x24E8
,
0x24CE
},
{
0x24CF
,
0x24E9
,
0x24CF
},
{
0x24EA
,
0x24EA
,
0x24EA
},
{
0x24EB
,
0x24EB
,
0x24EB
},
{
0x24EC
,
0x24EC
,
0x24EC
},
{
0x24ED
,
0x24ED
,
0x24ED
},
{
0x24EE
,
0x24EE
,
0x24EE
},
{
0x24EF
,
0x24EF
,
0x24EF
},
{
0x24F0
,
0x24F0
,
0x24F0
},
{
0x24F1
,
0x24F1
,
0x24F1
},
{
0x24F2
,
0x24F2
,
0x24F2
},
{
0x24F3
,
0x24F3
,
0x24F3
},
{
0x24F4
,
0x24F4
,
0x24F4
},
{
0x24F5
,
0x24F5
,
0x24F5
},
{
0x24F6
,
0x24F6
,
0x24F6
},
{
0x24F7
,
0x24F7
,
0x24F7
},
{
0x24F8
,
0x24F8
,
0x24F8
},
{
0x24F9
,
0x24F9
,
0x24F9
},
{
0x24FA
,
0x24FA
,
0x24FA
},
{
0x24FB
,
0x24FB
,
0x24FB
},
{
0x24FC
,
0x24FC
,
0x24FC
},
{
0x24FD
,
0x24FD
,
0x24FD
},
{
0x24FE
,
0x24FE
,
0x24FE
},
{
0x24FF
,
0x24FF
,
0x24FF
}
};
static
MY_UNICASE_INFO
planeFF
[]
=
{
{
0xFF00
,
0xFF00
,
0xFF00
},
{
0xFF01
,
0xFF01
,
0xFF01
},
{
0xFF02
,
0xFF02
,
0xFF02
},
{
0xFF03
,
0xFF03
,
0xFF03
},
{
0xFF04
,
0xFF04
,
0xFF04
},
{
0xFF05
,
0xFF05
,
0xFF05
},
{
0xFF06
,
0xFF06
,
0xFF06
},
{
0xFF07
,
0xFF07
,
0xFF07
},
{
0xFF08
,
0xFF08
,
0xFF08
},
{
0xFF09
,
0xFF09
,
0xFF09
},
{
0xFF0A
,
0xFF0A
,
0xFF0A
},
{
0xFF0B
,
0xFF0B
,
0xFF0B
},
{
0xFF0C
,
0xFF0C
,
0xFF0C
},
{
0xFF0D
,
0xFF0D
,
0xFF0D
},
{
0xFF0E
,
0xFF0E
,
0xFF0E
},
{
0xFF0F
,
0xFF0F
,
0xFF0F
},
{
0xFF10
,
0xFF10
,
0xFF10
},
{
0xFF11
,
0xFF11
,
0xFF11
},
{
0xFF12
,
0xFF12
,
0xFF12
},
{
0xFF13
,
0xFF13
,
0xFF13
},
{
0xFF14
,
0xFF14
,
0xFF14
},
{
0xFF15
,
0xFF15
,
0xFF15
},
{
0xFF16
,
0xFF16
,
0xFF16
},
{
0xFF17
,
0xFF17
,
0xFF17
},
{
0xFF18
,
0xFF18
,
0xFF18
},
{
0xFF19
,
0xFF19
,
0xFF19
},
{
0xFF1A
,
0xFF1A
,
0xFF1A
},
{
0xFF1B
,
0xFF1B
,
0xFF1B
},
{
0xFF1C
,
0xFF1C
,
0xFF1C
},
{
0xFF1D
,
0xFF1D
,
0xFF1D
},
{
0xFF1E
,
0xFF1E
,
0xFF1E
},
{
0xFF1F
,
0xFF1F
,
0xFF1F
},
{
0xFF20
,
0xFF20
,
0xFF20
},
{
0xFF21
,
0xFF41
,
0xFF21
},
{
0xFF22
,
0xFF42
,
0xFF22
},
{
0xFF23
,
0xFF43
,
0xFF23
},
{
0xFF24
,
0xFF44
,
0xFF24
},
{
0xFF25
,
0xFF45
,
0xFF25
},
{
0xFF26
,
0xFF46
,
0xFF26
},
{
0xFF27
,
0xFF47
,
0xFF27
},
{
0xFF28
,
0xFF48
,
0xFF28
},
{
0xFF29
,
0xFF49
,
0xFF29
},
{
0xFF2A
,
0xFF4A
,
0xFF2A
},
{
0xFF2B
,
0xFF4B
,
0xFF2B
},
{
0xFF2C
,
0xFF4C
,
0xFF2C
},
{
0xFF2D
,
0xFF4D
,
0xFF2D
},
{
0xFF2E
,
0xFF4E
,
0xFF2E
},
{
0xFF2F
,
0xFF4F
,
0xFF2F
},
{
0xFF30
,
0xFF50
,
0xFF30
},
{
0xFF31
,
0xFF51
,
0xFF31
},
{
0xFF32
,
0xFF52
,
0xFF32
},
{
0xFF33
,
0xFF53
,
0xFF33
},
{
0xFF34
,
0xFF54
,
0xFF34
},
{
0xFF35
,
0xFF55
,
0xFF35
},
{
0xFF36
,
0xFF56
,
0xFF36
},
{
0xFF37
,
0xFF57
,
0xFF37
},
{
0xFF38
,
0xFF58
,
0xFF38
},
{
0xFF39
,
0xFF59
,
0xFF39
},
{
0xFF3A
,
0xFF5A
,
0xFF3A
},
{
0xFF3B
,
0xFF3B
,
0xFF3B
},
{
0xFF3C
,
0xFF3C
,
0xFF3C
},
{
0xFF3D
,
0xFF3D
,
0xFF3D
},
{
0xFF3E
,
0xFF3E
,
0xFF3E
},
{
0xFF3F
,
0xFF3F
,
0xFF3F
},
{
0xFF40
,
0xFF40
,
0xFF40
},
{
0xFF21
,
0xFF41
,
0xFF21
},
{
0xFF22
,
0xFF42
,
0xFF22
},
{
0xFF23
,
0xFF43
,
0xFF23
},
{
0xFF24
,
0xFF44
,
0xFF24
},
{
0xFF25
,
0xFF45
,
0xFF25
},
{
0xFF26
,
0xFF46
,
0xFF26
},
{
0xFF27
,
0xFF47
,
0xFF27
},
{
0xFF28
,
0xFF48
,
0xFF28
},
{
0xFF29
,
0xFF49
,
0xFF29
},
{
0xFF2A
,
0xFF4A
,
0xFF2A
},
{
0xFF2B
,
0xFF4B
,
0xFF2B
},
{
0xFF2C
,
0xFF4C
,
0xFF2C
},
{
0xFF2D
,
0xFF4D
,
0xFF2D
},
{
0xFF2E
,
0xFF4E
,
0xFF2E
},
{
0xFF2F
,
0xFF4F
,
0xFF2F
},
{
0xFF30
,
0xFF50
,
0xFF30
},
{
0xFF31
,
0xFF51
,
0xFF31
},
{
0xFF32
,
0xFF52
,
0xFF32
},
{
0xFF33
,
0xFF53
,
0xFF33
},
{
0xFF34
,
0xFF54
,
0xFF34
},
{
0xFF35
,
0xFF55
,
0xFF35
},
{
0xFF36
,
0xFF56
,
0xFF36
},
{
0xFF37
,
0xFF57
,
0xFF37
},
{
0xFF38
,
0xFF58
,
0xFF38
},
{
0xFF39
,
0xFF59
,
0xFF39
},
{
0xFF3A
,
0xFF5A
,
0xFF3A
},
{
0xFF5B
,
0xFF5B
,
0xFF5B
},
{
0xFF5C
,
0xFF5C
,
0xFF5C
},
{
0xFF5D
,
0xFF5D
,
0xFF5D
},
{
0xFF5E
,
0xFF5E
,
0xFF5E
},
{
0xFF5F
,
0xFF5F
,
0xFF5F
},
{
0xFF60
,
0xFF60
,
0xFF60
},
{
0xFF61
,
0xFF61
,
0xFF61
},
{
0xFF62
,
0xFF62
,
0xFF62
},
{
0xFF63
,
0xFF63
,
0xFF63
},
{
0xFF64
,
0xFF64
,
0xFF64
},
{
0xFF65
,
0xFF65
,
0xFF65
},
{
0xFF66
,
0xFF66
,
0xFF66
},
{
0xFF67
,
0xFF67
,
0xFF67
},
{
0xFF68
,
0xFF68
,
0xFF68
},
{
0xFF69
,
0xFF69
,
0xFF69
},
{
0xFF6A
,
0xFF6A
,
0xFF6A
},
{
0xFF6B
,
0xFF6B
,
0xFF6B
},
{
0xFF6C
,
0xFF6C
,
0xFF6C
},
{
0xFF6D
,
0xFF6D
,
0xFF6D
},
{
0xFF6E
,
0xFF6E
,
0xFF6E
},
{
0xFF6F
,
0xFF6F
,
0xFF6F
},
{
0xFF70
,
0xFF70
,
0xFF70
},
{
0xFF71
,
0xFF71
,
0xFF71
},
{
0xFF72
,
0xFF72
,
0xFF72
},
{
0xFF73
,
0xFF73
,
0xFF73
},
{
0xFF74
,
0xFF74
,
0xFF74
},
{
0xFF75
,
0xFF75
,
0xFF75
},
{
0xFF76
,
0xFF76
,
0xFF76
},
{
0xFF77
,
0xFF77
,
0xFF77
},
{
0xFF78
,
0xFF78
,
0xFF78
},
{
0xFF79
,
0xFF79
,
0xFF79
},
{
0xFF7A
,
0xFF7A
,
0xFF7A
},
{
0xFF7B
,
0xFF7B
,
0xFF7B
},
{
0xFF7C
,
0xFF7C
,
0xFF7C
},
{
0xFF7D
,
0xFF7D
,
0xFF7D
},
{
0xFF7E
,
0xFF7E
,
0xFF7E
},
{
0xFF7F
,
0xFF7F
,
0xFF7F
},
{
0xFF80
,
0xFF80
,
0xFF80
},
{
0xFF81
,
0xFF81
,
0xFF81
},
{
0xFF82
,
0xFF82
,
0xFF82
},
{
0xFF83
,
0xFF83
,
0xFF83
},
{
0xFF84
,
0xFF84
,
0xFF84
},
{
0xFF85
,
0xFF85
,
0xFF85
},
{
0xFF86
,
0xFF86
,
0xFF86
},
{
0xFF87
,
0xFF87
,
0xFF87
},
{
0xFF88
,
0xFF88
,
0xFF88
},
{
0xFF89
,
0xFF89
,
0xFF89
},
{
0xFF8A
,
0xFF8A
,
0xFF8A
},
{
0xFF8B
,
0xFF8B
,
0xFF8B
},
{
0xFF8C
,
0xFF8C
,
0xFF8C
},
{
0xFF8D
,
0xFF8D
,
0xFF8D
},
{
0xFF8E
,
0xFF8E
,
0xFF8E
},
{
0xFF8F
,
0xFF8F
,
0xFF8F
},
{
0xFF90
,
0xFF90
,
0xFF90
},
{
0xFF91
,
0xFF91
,
0xFF91
},
{
0xFF92
,
0xFF92
,
0xFF92
},
{
0xFF93
,
0xFF93
,
0xFF93
},
{
0xFF94
,
0xFF94
,
0xFF94
},
{
0xFF95
,
0xFF95
,
0xFF95
},
{
0xFF96
,
0xFF96
,
0xFF96
},
{
0xFF97
,
0xFF97
,
0xFF97
},
{
0xFF98
,
0xFF98
,
0xFF98
},
{
0xFF99
,
0xFF99
,
0xFF99
},
{
0xFF9A
,
0xFF9A
,
0xFF9A
},
{
0xFF9B
,
0xFF9B
,
0xFF9B
},
{
0xFF9C
,
0xFF9C
,
0xFF9C
},
{
0xFF9D
,
0xFF9D
,
0xFF9D
},
{
0xFF9E
,
0xFF9E
,
0xFF9E
},
{
0xFF9F
,
0xFF9F
,
0xFF9F
},
{
0xFFA0
,
0xFFA0
,
0xFFA0
},
{
0xFFA1
,
0xFFA1
,
0xFFA1
},
{
0xFFA2
,
0xFFA2
,
0xFFA2
},
{
0xFFA3
,
0xFFA3
,
0xFFA3
},
{
0xFFA4
,
0xFFA4
,
0xFFA4
},
{
0xFFA5
,
0xFFA5
,
0xFFA5
},
{
0xFFA6
,
0xFFA6
,
0xFFA6
},
{
0xFFA7
,
0xFFA7
,
0xFFA7
},
{
0xFFA8
,
0xFFA8
,
0xFFA8
},
{
0xFFA9
,
0xFFA9
,
0xFFA9
},
{
0xFFAA
,
0xFFAA
,
0xFFAA
},
{
0xFFAB
,
0xFFAB
,
0xFFAB
},
{
0xFFAC
,
0xFFAC
,
0xFFAC
},
{
0xFFAD
,
0xFFAD
,
0xFFAD
},
{
0xFFAE
,
0xFFAE
,
0xFFAE
},
{
0xFFAF
,
0xFFAF
,
0xFFAF
},
{
0xFFB0
,
0xFFB0
,
0xFFB0
},
{
0xFFB1
,
0xFFB1
,
0xFFB1
},
{
0xFFB2
,
0xFFB2
,
0xFFB2
},
{
0xFFB3
,
0xFFB3
,
0xFFB3
},
{
0xFFB4
,
0xFFB4
,
0xFFB4
},
{
0xFFB5
,
0xFFB5
,
0xFFB5
},
{
0xFFB6
,
0xFFB6
,
0xFFB6
},
{
0xFFB7
,
0xFFB7
,
0xFFB7
},
{
0xFFB8
,
0xFFB8
,
0xFFB8
},
{
0xFFB9
,
0xFFB9
,
0xFFB9
},
{
0xFFBA
,
0xFFBA
,
0xFFBA
},
{
0xFFBB
,
0xFFBB
,
0xFFBB
},
{
0xFFBC
,
0xFFBC
,
0xFFBC
},
{
0xFFBD
,
0xFFBD
,
0xFFBD
},
{
0xFFBE
,
0xFFBE
,
0xFFBE
},
{
0xFFBF
,
0xFFBF
,
0xFFBF
},
{
0xFFC0
,
0xFFC0
,
0xFFC0
},
{
0xFFC1
,
0xFFC1
,
0xFFC1
},
{
0xFFC2
,
0xFFC2
,
0xFFC2
},
{
0xFFC3
,
0xFFC3
,
0xFFC3
},
{
0xFFC4
,
0xFFC4
,
0xFFC4
},
{
0xFFC5
,
0xFFC5
,
0xFFC5
},
{
0xFFC6
,
0xFFC6
,
0xFFC6
},
{
0xFFC7
,
0xFFC7
,
0xFFC7
},
{
0xFFC8
,
0xFFC8
,
0xFFC8
},
{
0xFFC9
,
0xFFC9
,
0xFFC9
},
{
0xFFCA
,
0xFFCA
,
0xFFCA
},
{
0xFFCB
,
0xFFCB
,
0xFFCB
},
{
0xFFCC
,
0xFFCC
,
0xFFCC
},
{
0xFFCD
,
0xFFCD
,
0xFFCD
},
{
0xFFCE
,
0xFFCE
,
0xFFCE
},
{
0xFFCF
,
0xFFCF
,
0xFFCF
},
{
0xFFD0
,
0xFFD0
,
0xFFD0
},
{
0xFFD1
,
0xFFD1
,
0xFFD1
},
{
0xFFD2
,
0xFFD2
,
0xFFD2
},
{
0xFFD3
,
0xFFD3
,
0xFFD3
},
{
0xFFD4
,
0xFFD4
,
0xFFD4
},
{
0xFFD5
,
0xFFD5
,
0xFFD5
},
{
0xFFD6
,
0xFFD6
,
0xFFD6
},
{
0xFFD7
,
0xFFD7
,
0xFFD7
},
{
0xFFD8
,
0xFFD8
,
0xFFD8
},
{
0xFFD9
,
0xFFD9
,
0xFFD9
},
{
0xFFDA
,
0xFFDA
,
0xFFDA
},
{
0xFFDB
,
0xFFDB
,
0xFFDB
},
{
0xFFDC
,
0xFFDC
,
0xFFDC
},
{
0xFFDD
,
0xFFDD
,
0xFFDD
},
{
0xFFDE
,
0xFFDE
,
0xFFDE
},
{
0xFFDF
,
0xFFDF
,
0xFFDF
},
{
0xFFE0
,
0xFFE0
,
0xFFE0
},
{
0xFFE1
,
0xFFE1
,
0xFFE1
},
{
0xFFE2
,
0xFFE2
,
0xFFE2
},
{
0xFFE3
,
0xFFE3
,
0xFFE3
},
{
0xFFE4
,
0xFFE4
,
0xFFE4
},
{
0xFFE5
,
0xFFE5
,
0xFFE5
},
{
0xFFE6
,
0xFFE6
,
0xFFE6
},
{
0xFFE7
,
0xFFE7
,
0xFFE7
},
{
0xFFE8
,
0xFFE8
,
0xFFE8
},
{
0xFFE9
,
0xFFE9
,
0xFFE9
},
{
0xFFEA
,
0xFFEA
,
0xFFEA
},
{
0xFFEB
,
0xFFEB
,
0xFFEB
},
{
0xFFEC
,
0xFFEC
,
0xFFEC
},
{
0xFFED
,
0xFFED
,
0xFFED
},
{
0xFFEE
,
0xFFEE
,
0xFFEE
},
{
0xFFEF
,
0xFFEF
,
0xFFEF
},
{
0xFFF0
,
0xFFF0
,
0xFFF0
},
{
0xFFF1
,
0xFFF1
,
0xFFF1
},
{
0xFFF2
,
0xFFF2
,
0xFFF2
},
{
0xFFF3
,
0xFFF3
,
0xFFF3
},
{
0xFFF4
,
0xFFF4
,
0xFFF4
},
{
0xFFF5
,
0xFFF5
,
0xFFF5
},
{
0xFFF6
,
0xFFF6
,
0xFFF6
},
{
0xFFF7
,
0xFFF7
,
0xFFF7
},
{
0xFFF8
,
0xFFF8
,
0xFFF8
},
{
0xFFF9
,
0xFFF9
,
0xFFF9
},
{
0xFFFA
,
0xFFFA
,
0xFFFA
},
{
0xFFFB
,
0xFFFB
,
0xFFFB
},
{
0xFFFC
,
0xFFFC
,
0xFFFC
},
{
0xFFFD
,
0xFFFD
,
0xFFFD
},
{
0xFFFE
,
0xFFFE
,
0xFFFE
},
{
0xFFFF
,
0xFFFF
,
0xFFFF
}
};
static
MY_UNICASE_INFO
*
uni_plane
[
256
]
=
{
plane00
,
plane01
,
plane02
,
plane03
,
plane04
,
plane05
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
plane1E
,
plane1F
,
NULL
,
plane21
,
NULL
,
NULL
,
plane24
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
planeFF
};
#endif
#ifdef HAVE_CHARSET_utf8
/* These arrays are taken from usa7 implementation */
uchar
ctype_utf8
[]
=
{
0
,
32
,
32
,
32
,
32
,
32
,
32
,
32
,
32
,
32
,
40
,
40
,
40
,
40
,
40
,
32
,
32
,
32
,
32
,
32
,
32
,
32
,
32
,
32
,
32
,
32
,
32
,
32
,
32
,
32
,
32
,
32
,
32
,
72
,
16
,
16
,
16
,
16
,
16
,
16
,
16
,
16
,
16
,
16
,
16
,
16
,
16
,
16
,
16
,
132
,
132
,
132
,
132
,
132
,
132
,
132
,
132
,
132
,
132
,
16
,
16
,
16
,
16
,
16
,
16
,
16
,
129
,
129
,
129
,
129
,
129
,
129
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
16
,
16
,
16
,
16
,
16
,
16
,
130
,
130
,
130
,
130
,
130
,
130
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
16
,
16
,
16
,
16
,
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
uchar
to_lower_utf8
[]
=
{
0
,
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
10
,
11
,
12
,
13
,
14
,
15
,
16
,
17
,
18
,
19
,
20
,
21
,
22
,
23
,
24
,
25
,
26
,
27
,
28
,
29
,
30
,
31
,
32
,
33
,
34
,
35
,
36
,
37
,
38
,
39
,
40
,
41
,
42
,
43
,
44
,
45
,
46
,
47
,
48
,
49
,
50
,
51
,
52
,
53
,
54
,
55
,
56
,
57
,
58
,
59
,
60
,
61
,
62
,
63
,
64
,
97
,
98
,
99
,
100
,
101
,
102
,
103
,
104
,
105
,
106
,
107
,
108
,
109
,
110
,
111
,
112
,
113
,
114
,
115
,
116
,
117
,
118
,
119
,
120
,
121
,
122
,
91
,
92
,
93
,
94
,
95
,
96
,
97
,
98
,
99
,
100
,
101
,
102
,
103
,
104
,
105
,
106
,
107
,
108
,
109
,
110
,
111
,
112
,
113
,
114
,
115
,
116
,
117
,
118
,
119
,
120
,
121
,
122
,
123
,
124
,
125
,
126
,
127
,
128
,
129
,
130
,
131
,
132
,
133
,
134
,
135
,
136
,
137
,
138
,
139
,
140
,
141
,
142
,
143
,
144
,
145
,
146
,
147
,
148
,
149
,
150
,
151
,
152
,
153
,
154
,
155
,
156
,
157
,
158
,
159
,
160
,
161
,
162
,
163
,
164
,
165
,
166
,
167
,
168
,
169
,
170
,
171
,
172
,
173
,
174
,
175
,
176
,
177
,
178
,
179
,
180
,
181
,
182
,
183
,
184
,
185
,
186
,
187
,
188
,
189
,
190
,
191
,
192
,
193
,
194
,
195
,
196
,
197
,
198
,
199
,
200
,
201
,
202
,
203
,
204
,
205
,
206
,
207
,
208
,
209
,
210
,
211
,
212
,
213
,
214
,
215
,
216
,
217
,
218
,
219
,
220
,
221
,
222
,
223
,
224
,
225
,
226
,
227
,
228
,
229
,
230
,
231
,
232
,
233
,
234
,
235
,
236
,
237
,
238
,
239
,
240
,
241
,
242
,
243
,
244
,
245
,
246
,
247
,
248
,
249
,
250
,
251
,
252
,
253
,
254
,
255
};
uchar
to_upper_utf8
[]
=
{
0
,
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
10
,
11
,
12
,
13
,
14
,
15
,
16
,
17
,
18
,
19
,
20
,
21
,
22
,
23
,
24
,
25
,
26
,
27
,
28
,
29
,
30
,
31
,
32
,
33
,
34
,
35
,
36
,
37
,
38
,
39
,
40
,
41
,
42
,
43
,
44
,
45
,
46
,
47
,
48
,
49
,
50
,
51
,
52
,
53
,
54
,
55
,
56
,
57
,
58
,
59
,
60
,
61
,
62
,
63
,
64
,
65
,
66
,
67
,
68
,
69
,
70
,
71
,
72
,
73
,
74
,
75
,
76
,
77
,
78
,
79
,
80
,
81
,
82
,
83
,
84
,
85
,
86
,
87
,
88
,
89
,
90
,
91
,
92
,
93
,
94
,
95
,
96
,
65
,
66
,
67
,
68
,
69
,
70
,
71
,
72
,
73
,
74
,
75
,
76
,
77
,
78
,
79
,
80
,
81
,
82
,
83
,
84
,
85
,
86
,
87
,
88
,
89
,
90
,
123
,
124
,
125
,
126
,
127
,
128
,
129
,
130
,
131
,
132
,
133
,
134
,
135
,
136
,
137
,
138
,
139
,
140
,
141
,
142
,
143
,
144
,
145
,
146
,
147
,
148
,
149
,
150
,
151
,
152
,
153
,
154
,
155
,
156
,
157
,
158
,
159
,
160
,
161
,
162
,
163
,
164
,
165
,
166
,
167
,
168
,
169
,
170
,
171
,
172
,
173
,
174
,
175
,
176
,
177
,
178
,
179
,
180
,
181
,
182
,
183
,
184
,
185
,
186
,
187
,
188
,
189
,
190
,
191
,
192
,
193
,
194
,
195
,
196
,
197
,
198
,
199
,
200
,
201
,
202
,
203
,
204
,
205
,
206
,
207
,
208
,
209
,
210
,
211
,
212
,
213
,
214
,
215
,
216
,
217
,
218
,
219
,
220
,
221
,
222
,
223
,
224
,
225
,
226
,
227
,
228
,
229
,
230
,
231
,
232
,
233
,
234
,
235
,
236
,
237
,
238
,
239
,
240
,
241
,
242
,
243
,
244
,
245
,
246
,
247
,
248
,
249
,
250
,
251
,
252
,
253
,
254
,
255
};
int
my_utf8_uni
(
__attribute__
((
unused
))
CHARSET_INFO
*
cs
,
my_wc_t
*
pwc
,
const
uchar
*
s
,
const
uchar
*
e
)
{
unsigned
char
c
=
s
[
0
];
if
(
c
<
0x80
)
{
*
pwc
=
c
;
return
1
;
}
else
if
(
c
<
0xc2
)
return
MY_CS_ILSEQ
;
else
if
(
c
<
0xe0
)
{
if
(
s
+
2
>
e
)
/* We need 2 characters */
return
MY_CS_TOOFEW
(
0
);
if
(
!
((
s
[
1
]
^
0x80
)
<
0x40
))
return
MY_CS_ILSEQ
;
*
pwc
=
((
my_wc_t
)
(
c
&
0x1f
)
<<
6
)
|
(
my_wc_t
)
(
s
[
1
]
^
0x80
);
return
2
;
}
else
if
(
c
<
0xf0
)
{
if
(
s
+
3
>
e
)
/* We need 3 characters */
return
MY_CS_TOOFEW
(
0
);
if
(
!
((
s
[
1
]
^
0x80
)
<
0x40
&&
(
s
[
2
]
^
0x80
)
<
0x40
&&
(
c
>=
0xe1
||
s
[
1
]
>=
0xa0
)))
return
MY_CS_ILSEQ
;
*
pwc
=
((
my_wc_t
)
(
c
&
0x0f
)
<<
12
)
|
((
my_wc_t
)
(
s
[
1
]
^
0x80
)
<<
6
)
|
(
my_wc_t
)
(
s
[
2
]
^
0x80
);
return
3
;
#ifdef UNICODE_32BIT
}
else
if
(
c
<
0xf8
&&
sizeof
(
my_wc_t
)
*
8
>=
32
)
{
if
(
s
+
4
>
e
)
/* We need 4 characters */
return
MY_CS_TOOFEW
(
0
);
if
(
!
((
s
[
1
]
^
0x80
)
<
0x40
&&
(
s
[
2
]
^
0x80
)
<
0x40
&&
(
s
[
3
]
^
0x80
)
<
0x40
&&
(
c
>=
0xf1
||
s
[
1
]
>=
0x90
)))
return
MY_CS_ILSEQ
;
*
pwc
=
((
my_wc_t
)
(
c
&
0x07
)
<<
18
)
|
((
my_wc_t
)
(
s
[
1
]
^
0x80
)
<<
12
)
|
((
my_wc_t
)
(
s
[
2
]
^
0x80
)
<<
6
)
|
(
my_wc_t
)
(
s
[
3
]
^
0x80
);
return
4
;
}
else
if
(
c
<
0xfc
&&
sizeof
(
my_wc_t
)
*
8
>=
32
)
{
if
(
s
+
5
>
e
)
/* We need 5 characters */
return
MY_CS_TOOFEW
(
0
);
if
(
!
((
s
[
1
]
^
0x80
)
<
0x40
&&
(
s
[
2
]
^
0x80
)
<
0x40
&&
(
s
[
3
]
^
0x80
)
<
0x40
&&
(
s
[
4
]
^
0x80
)
<
0x40
&&
(
c
>=
0xf9
||
s
[
1
]
>=
0x88
)))
return
MY_CS_ILSEQ
;
*
pwc
=
((
my_wc_t
)
(
c
&
0x03
)
<<
24
)
|
((
my_wc_t
)
(
s
[
1
]
^
0x80
)
<<
18
)
|
((
my_wc_t
)
(
s
[
2
]
^
0x80
)
<<
12
)
|
((
my_wc_t
)
(
s
[
3
]
^
0x80
)
<<
6
)
|
(
my_wc_t
)
(
s
[
4
]
^
0x80
);
return
5
;
}
else
if
(
c
<
0xfe
&&
sizeof
(
my_wc_t
)
*
8
>=
32
)
{
if
(
s
+
6
>
e
)
/* We need 6 characters */
return
MY_CS_TOOFEW
(
0
);
if
(
!
((
s
[
1
]
^
0x80
)
<
0x40
&&
(
s
[
2
]
^
0x80
)
<
0x40
&&
(
s
[
3
]
^
0x80
)
<
0x40
&&
(
s
[
4
]
^
0x80
)
<
0x40
&&
(
s
[
5
]
^
0x80
)
<
0x40
&&
(
c
>=
0xfd
||
s
[
1
]
>=
0x84
)))
return
MY_CS_ILSEQ
;
*
pwc
=
((
my_wc_t
)
(
c
&
0x01
)
<<
30
)
|
((
my_wc_t
)
(
s
[
1
]
^
0x80
)
<<
24
)
|
((
my_wc_t
)
(
s
[
2
]
^
0x80
)
<<
18
)
|
((
my_wc_t
)
(
s
[
3
]
^
0x80
)
<<
12
)
|
((
my_wc_t
)
(
s
[
4
]
^
0x80
)
<<
6
)
|
(
my_wc_t
)
(
s
[
5
]
^
0x80
);
return
6
;
#endif
}
else
return
MY_CS_ILSEQ
;
}
int
my_uni_utf8
(
__attribute__
((
unused
))
CHARSET_INFO
*
cs
,
my_wc_t
wc
,
uchar
*
r
,
uchar
*
e
)
{
int
count
;
if
(
wc
<
0x80
)
count
=
1
;
else
if
(
wc
<
0x800
)
count
=
2
;
else
if
(
wc
<
0x10000
)
count
=
3
;
#ifdef UNICODE_32BIT
else
if
(
wc
<
0x200000
)
count
=
4
;
else
if
(
wc
<
0x4000000
)
count
=
5
;
else
if
(
wc
<=
0x7fffffff
)
count
=
6
;
#endif
else
return
MY_CS_ILUNI
;
/*
e is a character after the string r, not the last character of it.
Because of it (r+count > e), not (r+count-1 >e )
*/
if
(
r
+
count
>
e
)
return
MY_CS_TOOSMALL
;
switch
(
count
)
{
/* Fall through all cases!!! */
#ifdef UNICODE_32BIT
case
6
:
r
[
5
]
=
0x80
|
(
wc
&
0x3f
);
wc
=
wc
>>
6
;
wc
|=
0x4000000
;
case
5
:
r
[
4
]
=
0x80
|
(
wc
&
0x3f
);
wc
=
wc
>>
6
;
wc
|=
0x200000
;
case
4
:
r
[
3
]
=
0x80
|
(
wc
&
0x3f
);
wc
=
wc
>>
6
;
wc
|=
0x10000
;
#endif
case
3
:
r
[
2
]
=
0x80
|
(
wc
&
0x3f
);
wc
=
wc
>>
6
;
wc
|=
0x800
;
case
2
:
r
[
1
]
=
0x80
|
(
wc
&
0x3f
);
wc
=
wc
>>
6
;
wc
|=
0xc0
;
case
1
:
r
[
0
]
=
wc
;
}
return
count
;
}
void
my_caseup_utf8
(
CHARSET_INFO
*
cs
,
char
*
s
,
uint
slen
)
{
my_wc_t
wc
;
int
res
;
char
*
e
=
s
+
slen
;
while
((
s
<
e
)
&&
(
res
=
my_utf8_uni
(
cs
,
&
wc
,
(
uchar
*
)
s
,
(
uchar
*
)
e
))
>
0
)
{
int
plane
=
(
wc
>>
8
)
&
0xFF
;
wc
=
uni_plane
[
plane
]
?
uni_plane
[
plane
][
wc
&
0xFF
].
toupper
:
wc
;
if
(
res
!=
my_uni_utf8
(
cs
,
wc
,(
uchar
*
)
s
,(
uchar
*
)
e
))
break
;
s
+=
res
;
}
}
void
my_caseup_str_utf8
(
CHARSET_INFO
*
cs
,
char
*
s
)
{
my_caseup_utf8
(
cs
,
s
,
strlen
(
s
));
}
void
my_casedn_utf8
(
CHARSET_INFO
*
cs
,
char
*
s
,
uint
slen
)
{
my_wc_t
wc
;
int
res
;
char
*
e
=
s
+
slen
;
while
((
s
<
e
)
&&
(
res
=
my_utf8_uni
(
cs
,
&
wc
,
(
uchar
*
)
s
,
(
uchar
*
)
e
))
>
0
)
{
int
plane
=
(
wc
>>
8
)
&
0xFF
;
wc
=
uni_plane
[
plane
]
?
uni_plane
[
plane
][
wc
&
0xFF
].
tolower
:
wc
;
if
(
res
!=
my_uni_utf8
(
cs
,
wc
,
(
uchar
*
)
s
,
(
uchar
*
)
e
))
{
break
;
}
s
+=
res
;
}
}
void
my_casedn_str_utf8
(
CHARSET_INFO
*
cs
,
char
*
s
)
{
my_casedn_utf8
(
cs
,
s
,
strlen
(
s
));
}
int
my_strnncoll_utf8
(
CHARSET_INFO
*
cs
,
const
uchar
*
s
,
uint
slen
,
const
uchar
*
t
,
uint
tlen
)
{
int
s_res
,
t_res
;
my_wc_t
s_wc
,
t_wc
;
const
uchar
*
se
=
s
+
slen
;
const
uchar
*
te
=
t
+
tlen
;
while
(
s
<
se
&&
t
<
te
)
{
int
plane
;
s_res
=
my_utf8_uni
(
cs
,
&
s_wc
,
s
,
se
);
t_res
=
my_utf8_uni
(
cs
,
&
t_wc
,
t
,
te
);
if
(
s_res
<=
0
||
t_res
<=
0
)
{
/* Incorrect string, compare by char value */
return
((
int
)
s
[
0
]
-
(
int
)
t
[
0
]);
}
plane
=
(
s_wc
>>
8
)
&
0xFF
;
s_wc
=
uni_plane
[
plane
]
?
uni_plane
[
plane
][
s_wc
&
0xFF
].
sort
:
s_wc
;
plane
=
(
t_wc
>>
8
)
&
0xFF
;
t_wc
=
uni_plane
[
plane
]
?
uni_plane
[
plane
][
t_wc
&
0xFF
].
sort
:
t_wc
;
if
(
s_wc
!=
t_wc
)
{
return
((
int
)
s_wc
)
-
((
int
)
t_wc
);
}
s
+=
s_res
;
t
+=
t_res
;
}
return
(
(
se
-
s
)
-
(
te
-
t
)
);
}
int
my_strncasecmp_utf8
(
CHARSET_INFO
*
cs
,
const
char
*
s
,
const
char
*
t
,
uint
len
)
{
int
s_res
,
t_res
;
my_wc_t
s_wc
,
t_wc
;
const
char
*
se
=
s
+
len
;
const
char
*
te
=
t
+
len
;
while
(
s
<
se
&&
t
<
te
)
{
int
plane
;
s_res
=
my_utf8_uni
(
cs
,
&
s_wc
,
(
const
uchar
*
)
s
,
(
const
uchar
*
)
se
);
t_res
=
my_utf8_uni
(
cs
,
&
t_wc
,
(
const
uchar
*
)
t
,
(
const
uchar
*
)
te
);
if
(
s_res
<=
0
||
t_res
<=
0
)
{
/* Incorrect string, compare by char value */
return
((
int
)
s
[
0
]
-
(
int
)
t
[
0
]);
}
plane
=
(
s_wc
>>
8
)
&
0xFF
;
s_wc
=
uni_plane
[
plane
]
?
uni_plane
[
plane
][
s_wc
&
0xFF
].
tolower
:
s_wc
;
plane
=
(
t_wc
>>
8
)
&
0xFF
;
t_wc
=
uni_plane
[
plane
]
?
uni_plane
[
plane
][
t_wc
&
0xFF
].
tolower
:
t_wc
;
if
(
s_wc
!=
t_wc
)
return
((
int
)
s_wc
)
-
((
int
)
t_wc
);
s
+=
s_res
;
t
+=
t_res
;
}
return
(
(
se
-
s
)
-
(
te
-
t
)
);
}
int
my_strcasecmp_utf8
(
CHARSET_INFO
*
cs
,
const
char
*
s
,
const
char
*
t
)
{
uint
s_len
=
strlen
(
s
);
uint
t_len
=
strlen
(
t
);
uint
len
=
(
s_len
>
t_len
)
?
s_len
:
t_len
;
return
my_strncasecmp_utf8
(
cs
,
s
,
t
,
len
);
}
int
my_strnxfrm_utf8
(
CHARSET_INFO
*
cs
,
uchar
*
dst
,
uint
dstlen
,
const
uchar
*
src
,
uint
srclen
)
{
my_wc_t
wc
;
int
res
;
int
plane
;
uchar
*
de
=
dst
+
dstlen
;
const
uchar
*
se
=
src
+
srclen
;
const
uchar
*
dst_orig
=
dst
;
while
(
src
<
se
&&
dst
<
de
)
{
if
((
res
=
my_utf8_uni
(
cs
,
&
wc
,
src
,
se
))
<
0
)
{
break
;
}
src
+=
res
;
srclen
-=
res
;
plane
=
(
wc
>>
8
)
&
0xFF
;
wc
=
uni_plane
[
plane
]
?
uni_plane
[
plane
][
wc
&
0xFF
].
sort
:
wc
;
if
((
res
=
my_uni_utf8
(
cs
,
wc
,
dst
,
de
))
<
0
)
{
break
;
}
dst
+=
res
;
}
return
dst
-
dst_orig
;
}
int
my_ismbchar_utf8
(
CHARSET_INFO
*
cs
,
const
char
*
b
,
const
char
*
e
)
{
my_wc_t
wc
;
int
res
=
my_utf8_uni
(
cs
,
&
wc
,
(
const
uchar
*
)
b
,
(
const
uchar
*
)
e
);
return
(
res
>
1
)
?
res
:
0
;
}
my_bool
my_ismbhead_utf8
(
__attribute__
((
unused
))
CHARSET_INFO
*
cs
,
uint
ch
)
{
return
(
ch
>=
0xc2
);
}
int
my_mbcharlen_utf8
(
__attribute__
((
unused
))
CHARSET_INFO
*
cs
,
uint
c
)
{
if
(
c
<
0x80
)
return
1
;
else
if
(
c
<
0xc2
)
return
0
;
/* Illegal mb head */
else
if
(
c
<
0xe0
)
return
2
;
else
if
(
c
<
0xf0
)
return
3
;
#ifdef UNICODE_32BIT
else
if
(
c
<
0xf8
)
return
4
;
else
if
(
c
<
0xfc
)
return
5
;
else
if
(
c
<
0xfe
)
return
6
;
#endif
return
0
;
/* Illegal mb head */
;
}
#ifdef MY_TEST_UTF8
#include <stdio.h>
static
void
test_mb
(
CHARSET_INFO
*
cs
,
uchar
*
s
)
{
while
(
*
s
)
{
if
(
my_ismbhead_utf8
(
cs
,
*
s
))
{
int
len
=
my_mbcharlen_utf8
(
cs
,
*
s
);
while
(
len
--
)
{
printf
(
"%c"
,
*
s
);
s
++
;
}
printf
(
"
\n
"
);
}
else
{
printf
(
"%c
\n
"
,
*
s
);
s
++
;
}
}
}
int
main
()
{
char
str
[
1024
]
=
" utf8 test проба ПЕРА по-РУССКИ"
;
CHARSET_INFO
*
cs
;
test_mb
(
cs
,(
uchar
*
)
str
);
printf
(
"orig :'%s'
\n
"
,
str
);
my_caseup_utf8
(
cs
,
str
,
15
);
printf
(
"caseup :'%s'
\n
"
,
str
);
my_caseup_str_utf8
(
cs
,
str
);
printf
(
"caseup_str:'%s'
\n
"
,
str
);
my_casedn_utf8
(
cs
,
str
,
15
);
printf
(
"casedn :'%s'
\n
"
,
str
);
my_casedn_str_utf8
(
cs
,
str
);
printf
(
"casedn_str:'%s'
\n
"
,
str
);
return
0
;
}
#endif
#endif
strings/ctype.c
View file @
55e0a9cb
...
...
@@ -2660,6 +2660,32 @@ CHARSET_INFO compiled_charsets[] = {
},
#endif
#ifdef HAVE_CHARSET_utf8
{
33
,
/* number */
"utf8"
,
/* name */
ctype_utf8
,
/* ctype */
to_lower_utf8
,
/* to_lower */
to_upper_utf8
,
/* to_upper */
to_upper_utf8
,
/* sort_order */
1
,
/* strxfrm_multiply */
my_strnncoll_utf8
,
/* strnncoll */
my_strnxfrm_utf8
,
/* strnxfrm */
NULL
,
/* like_range */
6
,
/* mbmaxlen */
my_ismbchar_utf8
,
/* ismbchar */
my_ismbhead_utf8
,
/* ismbhead */
my_mbcharlen_utf8
,
/* mbcharlen */
my_caseup_str_utf8
,
my_casedn_str_utf8
,
my_caseup_utf8
,
my_casedn_utf8
,
my_strcasecmp_utf8
,
my_strncasecmp_utf8
,
0
},
#endif
#ifdef HAVE_CHARSET_usa7
{
11
,
/* number */
...
...
@@ -2790,6 +2816,7 @@ CHARSET_INFO compiled_charsets[] = {
},
#endif
{
0
,
/* end-of-list marker */
NullS
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment