Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
go
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
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
go
Commits
51b15d68
Commit
51b15d68
authored
Nov 01, 2010
by
Anthony Martin
Committed by
Russ Cox
Nov 01, 2010
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
libutf: update to Unicode 5.2.0 to match pkg/unicode
R=rsc, r, PeterGo, r2 CC=golang-dev
https://golang.org/cl/2753045
parent
884dceca
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
1561 additions
and
7 deletions
+1561
-7
src/lib9/utf/runetype.c
src/lib9/utf/runetype.c
+20
-7
src/lib9/utf/runetypebody-5.2.0.c
src/lib9/utf/runetypebody-5.2.0.c
+1541
-0
No files found.
src/lib9/utf/runetype.c
View file @
51b15d68
...
...
@@ -46,14 +46,27 @@ rbsearch(Rune c, Rune *t, int n, int ne)
* chars as ideographic as well: 20000..2a6d6, and 2f800..2Fa1d.
*/
static
Rune
__isideographicr
[]
=
{
0x3006
,
0x3007
,
/* 3006 not in Unicode 2, in 2.1
*/
0x3006
,
0x3007
,
/* 0x3006 added in 2.0.14
*/
0x3021
,
0x3029
,
0x3038
,
0x303a
,
/* not in Unicode 2 or 2.1 */
0x3400
,
0x4db5
,
/* not in Unicode 2 or 2.1 */
0x4e00
,
0x9fbb
,
/* 0x9FA6..0x9FBB added for 4.1.0? */
0x3038
,
0x303a
,
/* added in 3.0.0 */
0x3400
,
0x4db5
,
/* added in 3.0.0 */
/* consecutive */
0x4e00
,
0x9fa5
,
0x9fa6
,
0x9fbb
,
/* added in 4.1.0 */
0x9fbc
,
0x9fc3
,
/* added in 5.1.0 */
0x9fc4
,
0x9fcb
,
/* added in 5.2.0 */
0xf900
,
0xfa2d
,
0x20000
,
0x2A6D6
,
0x2F800
,
0x2FA1D
,
/* consecutive */
0xfa30
,
0xfa6a
,
/* added in 5.1.0 */
0xfa6b
,
0xfa6d
,
/* added in 5.2.0 */
0xfa70
,
0xfad9
,
/* added in 4.1.0 */
0x20000
,
0x2a6d6
,
/* added in 3.1.0 */
0x2a700
,
0x2b734
,
/* added in 5.2.0 */
0x2f800
,
0x2fa1d
,
/* added in 3.1.0 */
};
int
...
...
@@ -67,4 +80,4 @@ isideographicrune(Rune c)
return
0
;
}
#include "runetypebody-5.
0
.0.c"
#include "runetypebody-5.
2
.0.c"
src/lib9/utf/runetypebody-5.2.0.c
0 → 100644
View file @
51b15d68
/* generated automatically by mkrunetype.c from UnicodeData-5.2.0.txt */
static
Rune
__isspacer
[]
=
{
0x0009
,
0x000d
,
0x0020
,
0x0020
,
0x0085
,
0x0085
,
0x00a0
,
0x00a0
,
0x1680
,
0x1680
,
0x180e
,
0x180e
,
0x2000
,
0x200a
,
0x2028
,
0x2029
,
0x202f
,
0x202f
,
0x205f
,
0x205f
,
0x3000
,
0x3000
,
0xfeff
,
0xfeff
,
};
int
isspacerune
(
Rune
c
)
{
Rune
*
p
;
p
=
rbsearch
(
c
,
__isspacer
,
nelem
(
__isspacer
)
/
2
,
2
);
if
(
p
&&
c
>=
p
[
0
]
&&
c
<=
p
[
1
])
return
1
;
return
0
;
}
static
Rune
__isdigitr
[]
=
{
0x0030
,
0x0039
,
0x0660
,
0x0669
,
0x06f0
,
0x06f9
,
0x07c0
,
0x07c9
,
0x0966
,
0x096f
,
0x09e6
,
0x09ef
,
0x0a66
,
0x0a6f
,
0x0ae6
,
0x0aef
,
0x0b66
,
0x0b6f
,
0x0be6
,
0x0bef
,
0x0c66
,
0x0c6f
,
0x0ce6
,
0x0cef
,
0x0d66
,
0x0d6f
,
0x0e50
,
0x0e59
,
0x0ed0
,
0x0ed9
,
0x0f20
,
0x0f29
,
0x1040
,
0x1049
,
0x1090
,
0x1099
,
0x17e0
,
0x17e9
,
0x1810
,
0x1819
,
0x1946
,
0x194f
,
0x19d0
,
0x19da
,
0x1a80
,
0x1a89
,
0x1a90
,
0x1a99
,
0x1b50
,
0x1b59
,
0x1bb0
,
0x1bb9
,
0x1c40
,
0x1c49
,
0x1c50
,
0x1c59
,
0xa620
,
0xa629
,
0xa8d0
,
0xa8d9
,
0xa900
,
0xa909
,
0xa9d0
,
0xa9d9
,
0xaa50
,
0xaa59
,
0xabf0
,
0xabf9
,
0xff10
,
0xff19
,
0x104a0
,
0x104a9
,
0x1d7ce
,
0x1d7ff
,
};
int
isdigitrune
(
Rune
c
)
{
Rune
*
p
;
p
=
rbsearch
(
c
,
__isdigitr
,
nelem
(
__isdigitr
)
/
2
,
2
);
if
(
p
&&
c
>=
p
[
0
]
&&
c
<=
p
[
1
])
return
1
;
return
0
;
}
static
Rune
__isalphar
[]
=
{
0x0041
,
0x005a
,
0x0061
,
0x007a
,
0x00c0
,
0x00d6
,
0x00d8
,
0x00f6
,
0x00f8
,
0x02c1
,
0x02c6
,
0x02d1
,
0x02e0
,
0x02e4
,
0x0370
,
0x0374
,
0x0376
,
0x0377
,
0x037a
,
0x037d
,
0x0388
,
0x038a
,
0x038e
,
0x03a1
,
0x03a3
,
0x03f5
,
0x03f7
,
0x0481
,
0x048a
,
0x0525
,
0x0531
,
0x0556
,
0x0561
,
0x0587
,
0x05d0
,
0x05ea
,
0x05f0
,
0x05f2
,
0x0621
,
0x064a
,
0x066e
,
0x066f
,
0x0671
,
0x06d3
,
0x06e5
,
0x06e6
,
0x06ee
,
0x06ef
,
0x06fa
,
0x06fc
,
0x0712
,
0x072f
,
0x074d
,
0x07a5
,
0x07ca
,
0x07ea
,
0x07f4
,
0x07f5
,
0x0800
,
0x0815
,
0x0904
,
0x0939
,
0x0958
,
0x0961
,
0x0971
,
0x0972
,
0x0979
,
0x097f
,
0x0985
,
0x098c
,
0x098f
,
0x0990
,
0x0993
,
0x09a8
,
0x09aa
,
0x09b0
,
0x09b6
,
0x09b9
,
0x09dc
,
0x09dd
,
0x09df
,
0x09e1
,
0x09f0
,
0x09f1
,
0x0a05
,
0x0a0a
,
0x0a0f
,
0x0a10
,
0x0a13
,
0x0a28
,
0x0a2a
,
0x0a30
,
0x0a32
,
0x0a33
,
0x0a35
,
0x0a36
,
0x0a38
,
0x0a39
,
0x0a59
,
0x0a5c
,
0x0a72
,
0x0a74
,
0x0a85
,
0x0a8d
,
0x0a8f
,
0x0a91
,
0x0a93
,
0x0aa8
,
0x0aaa
,
0x0ab0
,
0x0ab2
,
0x0ab3
,
0x0ab5
,
0x0ab9
,
0x0ae0
,
0x0ae1
,
0x0b05
,
0x0b0c
,
0x0b0f
,
0x0b10
,
0x0b13
,
0x0b28
,
0x0b2a
,
0x0b30
,
0x0b32
,
0x0b33
,
0x0b35
,
0x0b39
,
0x0b5c
,
0x0b5d
,
0x0b5f
,
0x0b61
,
0x0b85
,
0x0b8a
,
0x0b8e
,
0x0b90
,
0x0b92
,
0x0b95
,
0x0b99
,
0x0b9a
,
0x0b9e
,
0x0b9f
,
0x0ba3
,
0x0ba4
,
0x0ba8
,
0x0baa
,
0x0bae
,
0x0bb9
,
0x0c05
,
0x0c0c
,
0x0c0e
,
0x0c10
,
0x0c12
,
0x0c28
,
0x0c2a
,
0x0c33
,
0x0c35
,
0x0c39
,
0x0c58
,
0x0c59
,
0x0c60
,
0x0c61
,
0x0c85
,
0x0c8c
,
0x0c8e
,
0x0c90
,
0x0c92
,
0x0ca8
,
0x0caa
,
0x0cb3
,
0x0cb5
,
0x0cb9
,
0x0ce0
,
0x0ce1
,
0x0d05
,
0x0d0c
,
0x0d0e
,
0x0d10
,
0x0d12
,
0x0d28
,
0x0d2a
,
0x0d39
,
0x0d60
,
0x0d61
,
0x0d7a
,
0x0d7f
,
0x0d85
,
0x0d96
,
0x0d9a
,
0x0db1
,
0x0db3
,
0x0dbb
,
0x0dc0
,
0x0dc6
,
0x0e01
,
0x0e30
,
0x0e32
,
0x0e33
,
0x0e40
,
0x0e46
,
0x0e81
,
0x0e82
,
0x0e87
,
0x0e88
,
0x0e94
,
0x0e97
,
0x0e99
,
0x0e9f
,
0x0ea1
,
0x0ea3
,
0x0eaa
,
0x0eab
,
0x0ead
,
0x0eb0
,
0x0eb2
,
0x0eb3
,
0x0ec0
,
0x0ec4
,
0x0edc
,
0x0edd
,
0x0f40
,
0x0f47
,
0x0f49
,
0x0f6c
,
0x0f88
,
0x0f8b
,
0x1000
,
0x102a
,
0x1050
,
0x1055
,
0x105a
,
0x105d
,
0x1065
,
0x1066
,
0x106e
,
0x1070
,
0x1075
,
0x1081
,
0x10a0
,
0x10c5
,
0x10d0
,
0x10fa
,
0x1100
,
0x1248
,
0x124a
,
0x124d
,
0x1250
,
0x1256
,
0x125a
,
0x125d
,
0x1260
,
0x1288
,
0x128a
,
0x128d
,
0x1290
,
0x12b0
,
0x12b2
,
0x12b5
,
0x12b8
,
0x12be
,
0x12c2
,
0x12c5
,
0x12c8
,
0x12d6
,
0x12d8
,
0x1310
,
0x1312
,
0x1315
,
0x1318
,
0x135a
,
0x1380
,
0x138f
,
0x13a0
,
0x13f4
,
0x1401
,
0x166c
,
0x166f
,
0x167f
,
0x1681
,
0x169a
,
0x16a0
,
0x16ea
,
0x1700
,
0x170c
,
0x170e
,
0x1711
,
0x1720
,
0x1731
,
0x1740
,
0x1751
,
0x1760
,
0x176c
,
0x176e
,
0x1770
,
0x1780
,
0x17b3
,
0x1820
,
0x1877
,
0x1880
,
0x18a8
,
0x18b0
,
0x18f5
,
0x1900
,
0x191c
,
0x1950
,
0x196d
,
0x1970
,
0x1974
,
0x1980
,
0x19ab
,
0x19c1
,
0x19c7
,
0x1a00
,
0x1a16
,
0x1a20
,
0x1a54
,
0x1b05
,
0x1b33
,
0x1b45
,
0x1b4b
,
0x1b83
,
0x1ba0
,
0x1bae
,
0x1baf
,
0x1c00
,
0x1c23
,
0x1c4d
,
0x1c4f
,
0x1c5a
,
0x1c7d
,
0x1ce9
,
0x1cec
,
0x1cee
,
0x1cf1
,
0x1d00
,
0x1dbf
,
0x1e00
,
0x1f15
,
0x1f18
,
0x1f1d
,
0x1f20
,
0x1f45
,
0x1f48
,
0x1f4d
,
0x1f50
,
0x1f57
,
0x1f5f
,
0x1f7d
,
0x1f80
,
0x1fb4
,
0x1fb6
,
0x1fbc
,
0x1fc2
,
0x1fc4
,
0x1fc6
,
0x1fcc
,
0x1fd0
,
0x1fd3
,
0x1fd6
,
0x1fdb
,
0x1fe0
,
0x1fec
,
0x1ff2
,
0x1ff4
,
0x1ff6
,
0x1ffc
,
0x2090
,
0x2094
,
0x210a
,
0x2113
,
0x2119
,
0x211d
,
0x212a
,
0x212d
,
0x212f
,
0x2139
,
0x213c
,
0x213f
,
0x2145
,
0x2149
,
0x2183
,
0x2184
,
0x2c00
,
0x2c2e
,
0x2c30
,
0x2c5e
,
0x2c60
,
0x2ce4
,
0x2ceb
,
0x2cee
,
0x2d00
,
0x2d25
,
0x2d30
,
0x2d65
,
0x2d80
,
0x2d96
,
0x2da0
,
0x2da6
,
0x2da8
,
0x2dae
,
0x2db0
,
0x2db6
,
0x2db8
,
0x2dbe
,
0x2dc0
,
0x2dc6
,
0x2dc8
,
0x2dce
,
0x2dd0
,
0x2dd6
,
0x2dd8
,
0x2dde
,
0x3005
,
0x3006
,
0x3031
,
0x3035
,
0x303b
,
0x303c
,
0x3041
,
0x3096
,
0x309d
,
0x309f
,
0x30a1
,
0x30fa
,
0x30fc
,
0x30ff
,
0x3105
,
0x312d
,
0x3131
,
0x318e
,
0x31a0
,
0x31b7
,
0x31f0
,
0x31ff
,
0x3400
,
0x4db5
,
0x4e00
,
0x9fcb
,
0xa000
,
0xa48c
,
0xa4d0
,
0xa4fd
,
0xa500
,
0xa60c
,
0xa610
,
0xa61f
,
0xa62a
,
0xa62b
,
0xa640
,
0xa65f
,
0xa662
,
0xa66e
,
0xa67f
,
0xa697
,
0xa6a0
,
0xa6e5
,
0xa717
,
0xa71f
,
0xa722
,
0xa788
,
0xa78b
,
0xa78c
,
0xa7fb
,
0xa801
,
0xa803
,
0xa805
,
0xa807
,
0xa80a
,
0xa80c
,
0xa822
,
0xa840
,
0xa873
,
0xa882
,
0xa8b3
,
0xa8f2
,
0xa8f7
,
0xa90a
,
0xa925
,
0xa930
,
0xa946
,
0xa960
,
0xa97c
,
0xa984
,
0xa9b2
,
0xaa00
,
0xaa28
,
0xaa40
,
0xaa42
,
0xaa44
,
0xaa4b
,
0xaa60
,
0xaa76
,
0xaa80
,
0xaaaf
,
0xaab5
,
0xaab6
,
0xaab9
,
0xaabd
,
0xaadb
,
0xaadd
,
0xabc0
,
0xabe2
,
0xac00
,
0xd7a3
,
0xd7b0
,
0xd7c6
,
0xd7cb
,
0xd7fb
,
0xf900
,
0xfa2d
,
0xfa30
,
0xfa6d
,
0xfa70
,
0xfad9
,
0xfb00
,
0xfb06
,
0xfb13
,
0xfb17
,
0xfb1f
,
0xfb28
,
0xfb2a
,
0xfb36
,
0xfb38
,
0xfb3c
,
0xfb40
,
0xfb41
,
0xfb43
,
0xfb44
,
0xfb46
,
0xfbb1
,
0xfbd3
,
0xfd3d
,
0xfd50
,
0xfd8f
,
0xfd92
,
0xfdc7
,
0xfdf0
,
0xfdfb
,
0xfe70
,
0xfe74
,
0xfe76
,
0xfefc
,
0xff21
,
0xff3a
,
0xff41
,
0xff5a
,
0xff66
,
0xffbe
,
0xffc2
,
0xffc7
,
0xffca
,
0xffcf
,
0xffd2
,
0xffd7
,
0xffda
,
0xffdc
,
0x10000
,
0x1000b
,
0x1000d
,
0x10026
,
0x10028
,
0x1003a
,
0x1003c
,
0x1003d
,
0x1003f
,
0x1004d
,
0x10050
,
0x1005d
,
0x10080
,
0x100fa
,
0x10280
,
0x1029c
,
0x102a0
,
0x102d0
,
0x10300
,
0x1031e
,
0x10330
,
0x10340
,
0x10342
,
0x10349
,
0x10380
,
0x1039d
,
0x103a0
,
0x103c3
,
0x103c8
,
0x103cf
,
0x10400
,
0x1049d
,
0x10800
,
0x10805
,
0x1080a
,
0x10835
,
0x10837
,
0x10838
,
0x1083f
,
0x10855
,
0x10900
,
0x10915
,
0x10920
,
0x10939
,
0x10a10
,
0x10a13
,
0x10a15
,
0x10a17
,
0x10a19
,
0x10a33
,
0x10a60
,
0x10a7c
,
0x10b00
,
0x10b35
,
0x10b40
,
0x10b55
,
0x10b60
,
0x10b72
,
0x10c00
,
0x10c48
,
0x11083
,
0x110af
,
0x12000
,
0x1236e
,
0x13000
,
0x1342e
,
0x1d400
,
0x1d454
,
0x1d456
,
0x1d49c
,
0x1d49e
,
0x1d49f
,
0x1d4a5
,
0x1d4a6
,
0x1d4a9
,
0x1d4ac
,
0x1d4ae
,
0x1d4b9
,
0x1d4bd
,
0x1d4c3
,
0x1d4c5
,
0x1d505
,
0x1d507
,
0x1d50a
,
0x1d50d
,
0x1d514
,
0x1d516
,
0x1d51c
,
0x1d51e
,
0x1d539
,
0x1d53b
,
0x1d53e
,
0x1d540
,
0x1d544
,
0x1d54a
,
0x1d550
,
0x1d552
,
0x1d6a5
,
0x1d6a8
,
0x1d6c0
,
0x1d6c2
,
0x1d6da
,
0x1d6dc
,
0x1d6fa
,
0x1d6fc
,
0x1d714
,
0x1d716
,
0x1d734
,
0x1d736
,
0x1d74e
,
0x1d750
,
0x1d76e
,
0x1d770
,
0x1d788
,
0x1d78a
,
0x1d7a8
,
0x1d7aa
,
0x1d7c2
,
0x1d7c4
,
0x1d7cb
,
0x20000
,
0x2a6d6
,
0x2a700
,
0x2b734
,
0x2f800
,
0x2fa1d
,
};
static
Rune
__isalphas
[]
=
{
0x00aa
,
0x00b5
,
0x00ba
,
0x02ec
,
0x02ee
,
0x0386
,
0x038c
,
0x0559
,
0x06d5
,
0x06ff
,
0x0710
,
0x07b1
,
0x07fa
,
0x081a
,
0x0824
,
0x0828
,
0x093d
,
0x0950
,
0x09b2
,
0x09bd
,
0x09ce
,
0x0a5e
,
0x0abd
,
0x0ad0
,
0x0b3d
,
0x0b71
,
0x0b83
,
0x0b9c
,
0x0bd0
,
0x0c3d
,
0x0cbd
,
0x0cde
,
0x0d3d
,
0x0dbd
,
0x0e84
,
0x0e8a
,
0x0e8d
,
0x0ea5
,
0x0ea7
,
0x0ebd
,
0x0ec6
,
0x0f00
,
0x103f
,
0x1061
,
0x108e
,
0x10fc
,
0x1258
,
0x12c0
,
0x17d7
,
0x17dc
,
0x18aa
,
0x1aa7
,
0x1f59
,
0x1f5b
,
0x1f5d
,
0x1fbe
,
0x2071
,
0x207f
,
0x2102
,
0x2107
,
0x2115
,
0x2124
,
0x2126
,
0x2128
,
0x214e
,
0x2d6f
,
0x2e2f
,
0xa8fb
,
0xa9cf
,
0xaa7a
,
0xaab1
,
0xaac0
,
0xaac2
,
0xfb1d
,
0xfb3e
,
0x10808
,
0x1083c
,
0x10a00
,
0x1d4a2
,
0x1d4bb
,
0x1d546
,
};
int
isalpharune
(
Rune
c
)
{
Rune
*
p
;
p
=
rbsearch
(
c
,
__isalphar
,
nelem
(
__isalphar
)
/
2
,
2
);
if
(
p
&&
c
>=
p
[
0
]
&&
c
<=
p
[
1
])
return
1
;
p
=
rbsearch
(
c
,
__isalphas
,
nelem
(
__isalphas
),
1
);
if
(
p
&&
c
==
p
[
0
])
return
1
;
return
0
;
}
static
Rune
__isupperr
[]
=
{
0x0041
,
0x005a
,
0x00c0
,
0x00d6
,
0x00d8
,
0x00de
,
0x0178
,
0x0179
,
0x0181
,
0x0182
,
0x0186
,
0x0187
,
0x0189
,
0x018b
,
0x018e
,
0x0191
,
0x0193
,
0x0194
,
0x0196
,
0x0198
,
0x019c
,
0x019d
,
0x019f
,
0x01a0
,
0x01a6
,
0x01a7
,
0x01ae
,
0x01af
,
0x01b1
,
0x01b3
,
0x01b7
,
0x01b8
,
0x01f6
,
0x01f8
,
0x023a
,
0x023b
,
0x023d
,
0x023e
,
0x0243
,
0x0246
,
0x0388
,
0x038a
,
0x038e
,
0x038f
,
0x0391
,
0x03a1
,
0x03a3
,
0x03ab
,
0x03d2
,
0x03d4
,
0x03f9
,
0x03fa
,
0x03fd
,
0x042f
,
0x04c0
,
0x04c1
,
0x0531
,
0x0556
,
0x10a0
,
0x10c5
,
0x1f08
,
0x1f0f
,
0x1f18
,
0x1f1d
,
0x1f28
,
0x1f2f
,
0x1f38
,
0x1f3f
,
0x1f48
,
0x1f4d
,
0x1f68
,
0x1f6f
,
0x1f88
,
0x1f8f
,
0x1f98
,
0x1f9f
,
0x1fa8
,
0x1faf
,
0x1fb8
,
0x1fbc
,
0x1fc8
,
0x1fcc
,
0x1fd8
,
0x1fdb
,
0x1fe8
,
0x1fec
,
0x1ff8
,
0x1ffc
,
0x210b
,
0x210d
,
0x2110
,
0x2112
,
0x2119
,
0x211d
,
0x212a
,
0x212d
,
0x2130
,
0x2133
,
0x213e
,
0x213f
,
0x2160
,
0x216f
,
0x24b6
,
0x24cf
,
0x2c00
,
0x2c2e
,
0x2c62
,
0x2c64
,
0x2c6d
,
0x2c70
,
0x2c7e
,
0x2c80
,
0xa77d
,
0xa77e
,
0xff21
,
0xff3a
,
0x10400
,
0x10427
,
0x1d400
,
0x1d419
,
0x1d434
,
0x1d44d
,
0x1d468
,
0x1d481
,
0x1d49e
,
0x1d49f
,
0x1d4a5
,
0x1d4a6
,
0x1d4a9
,
0x1d4ac
,
0x1d4ae
,
0x1d4b5
,
0x1d4d0
,
0x1d4e9
,
0x1d504
,
0x1d505
,
0x1d507
,
0x1d50a
,
0x1d50d
,
0x1d514
,
0x1d516
,
0x1d51c
,
0x1d538
,
0x1d539
,
0x1d53b
,
0x1d53e
,
0x1d540
,
0x1d544
,
0x1d54a
,
0x1d550
,
0x1d56c
,
0x1d585
,
0x1d5a0
,
0x1d5b9
,
0x1d5d4
,
0x1d5ed
,
0x1d608
,
0x1d621
,
0x1d63c
,
0x1d655
,
0x1d670
,
0x1d689
,
0x1d6a8
,
0x1d6c0
,
0x1d6e2
,
0x1d6fa
,
0x1d71c
,
0x1d734
,
0x1d756
,
0x1d76e
,
0x1d790
,
0x1d7a8
,
};
static
Rune
__isupperp
[]
=
{
0x0100
,
0x0136
,
0x0139
,
0x0147
,
0x014a
,
0x0176
,
0x017b
,
0x017d
,
0x01a2
,
0x01a4
,
0x01cd
,
0x01db
,
0x01de
,
0x01ee
,
0x01fa
,
0x0232
,
0x0248
,
0x024e
,
0x0370
,
0x0372
,
0x03d8
,
0x03ee
,
0x0460
,
0x0480
,
0x048a
,
0x04be
,
0x04c3
,
0x04cd
,
0x04d0
,
0x0524
,
0x1e00
,
0x1e94
,
0x1e9e
,
0x1efe
,
0x1f59
,
0x1f5f
,
0x2124
,
0x2128
,
0x2c67
,
0x2c6b
,
0x2c82
,
0x2ce2
,
0x2ceb
,
0x2ced
,
0xa640
,
0xa65e
,
0xa662
,
0xa66c
,
0xa680
,
0xa696
,
0xa722
,
0xa72e
,
0xa732
,
0xa76e
,
0xa779
,
0xa77b
,
0xa780
,
0xa786
,
};
static
Rune
__isuppers
[]
=
{
0x0184
,
0x01a9
,
0x01ac
,
0x01b5
,
0x01bc
,
0x01c4
,
0x01c7
,
0x01ca
,
0x01f1
,
0x01f4
,
0x0241
,
0x0376
,
0x0386
,
0x038c
,
0x03cf
,
0x03f4
,
0x03f7
,
0x2102
,
0x2107
,
0x2115
,
0x2145
,
0x2183
,
0x2c60
,
0x2c72
,
0x2c75
,
0xa78b
,
0x1d49c
,
0x1d4a2
,
0x1d546
,
0x1d7ca
,
};
int
isupperrune
(
Rune
c
)
{
Rune
*
p
;
p
=
rbsearch
(
c
,
__isupperr
,
nelem
(
__isupperr
)
/
2
,
2
);
if
(
p
&&
c
>=
p
[
0
]
&&
c
<=
p
[
1
])
return
1
;
p
=
rbsearch
(
c
,
__isupperp
,
nelem
(
__isupperp
)
/
2
,
2
);
if
(
p
&&
c
>=
p
[
0
]
&&
c
<=
p
[
1
]
&&
!
((
c
-
p
[
0
])
&
1
))
return
1
;
p
=
rbsearch
(
c
,
__isuppers
,
nelem
(
__isuppers
),
1
);
if
(
p
&&
c
==
p
[
0
])
return
1
;
return
0
;
}
static
Rune
__islowerr
[]
=
{
0x0061
,
0x007a
,
0x00df
,
0x00f6
,
0x00f8
,
0x00ff
,
0x0137
,
0x0138
,
0x0148
,
0x0149
,
0x017e
,
0x0180
,
0x018c
,
0x018d
,
0x0199
,
0x019b
,
0x01aa
,
0x01ab
,
0x01b9
,
0x01ba
,
0x01bd
,
0x01bf
,
0x01dc
,
0x01dd
,
0x01ef
,
0x01f0
,
0x0233
,
0x0239
,
0x023f
,
0x0240
,
0x024f
,
0x0293
,
0x0295
,
0x02af
,
0x037b
,
0x037d
,
0x03ac
,
0x03ce
,
0x03d0
,
0x03d1
,
0x03d5
,
0x03d7
,
0x03ef
,
0x03f3
,
0x03fb
,
0x03fc
,
0x0430
,
0x045f
,
0x04ce
,
0x04cf
,
0x0561
,
0x0587
,
0x1d00
,
0x1d2b
,
0x1d62
,
0x1d77
,
0x1d79
,
0x1d9a
,
0x1e95
,
0x1e9d
,
0x1eff
,
0x1f07
,
0x1f10
,
0x1f15
,
0x1f20
,
0x1f27
,
0x1f30
,
0x1f37
,
0x1f40
,
0x1f45
,
0x1f50
,
0x1f57
,
0x1f60
,
0x1f67
,
0x1f70
,
0x1f7d
,
0x1f80
,
0x1f87
,
0x1f90
,
0x1f97
,
0x1fa0
,
0x1fa7
,
0x1fb0
,
0x1fb4
,
0x1fb6
,
0x1fb7
,
0x1fc2
,
0x1fc4
,
0x1fc6
,
0x1fc7
,
0x1fd0
,
0x1fd3
,
0x1fd6
,
0x1fd7
,
0x1fe0
,
0x1fe7
,
0x1ff2
,
0x1ff4
,
0x1ff6
,
0x1ff7
,
0x210e
,
0x210f
,
0x213c
,
0x213d
,
0x2146
,
0x2149
,
0x2170
,
0x217f
,
0x24d0
,
0x24e9
,
0x2c30
,
0x2c5e
,
0x2c65
,
0x2c66
,
0x2c73
,
0x2c74
,
0x2c76
,
0x2c7c
,
0x2ce3
,
0x2ce4
,
0x2d00
,
0x2d25
,
0xa72f
,
0xa731
,
0xa771
,
0xa778
,
0xfb00
,
0xfb06
,
0xfb13
,
0xfb17
,
0xff41
,
0xff5a
,
0x10428
,
0x1044f
,
0x1d41a
,
0x1d433
,
0x1d44e
,
0x1d454
,
0x1d456
,
0x1d467
,
0x1d482
,
0x1d49b
,
0x1d4b6
,
0x1d4b9
,
0x1d4bd
,
0x1d4c3
,
0x1d4c5
,
0x1d4cf
,
0x1d4ea
,
0x1d503
,
0x1d51e
,
0x1d537
,
0x1d552
,
0x1d56b
,
0x1d586
,
0x1d59f
,
0x1d5ba
,
0x1d5d3
,
0x1d5ee
,
0x1d607
,
0x1d622
,
0x1d63b
,
0x1d656
,
0x1d66f
,
0x1d68a
,
0x1d6a5
,
0x1d6c2
,
0x1d6da
,
0x1d6dc
,
0x1d6e1
,
0x1d6fc
,
0x1d714
,
0x1d716
,
0x1d71b
,
0x1d736
,
0x1d74e
,
0x1d750
,
0x1d755
,
0x1d770
,
0x1d788
,
0x1d78a
,
0x1d78f
,
0x1d7aa
,
0x1d7c2
,
0x1d7c4
,
0x1d7c9
,
};
static
Rune
__islowerp
[]
=
{
0x0101
,
0x0135
,
0x013a
,
0x0146
,
0x014b
,
0x0177
,
0x017a
,
0x017c
,
0x0183
,
0x0185
,
0x01a1
,
0x01a5
,
0x01b4
,
0x01b6
,
0x01cc
,
0x01da
,
0x01df
,
0x01ed
,
0x01f3
,
0x01f5
,
0x01f9
,
0x0231
,
0x0247
,
0x024d
,
0x0371
,
0x0373
,
0x03d9
,
0x03ed
,
0x0461
,
0x0481
,
0x048b
,
0x04bf
,
0x04c2
,
0x04cc
,
0x04d1
,
0x0525
,
0x1e01
,
0x1e93
,
0x1e9f
,
0x1efd
,
0x2c68
,
0x2c6c
,
0x2c81
,
0x2ce1
,
0x2cec
,
0x2cee
,
0xa641
,
0xa65f
,
0xa663
,
0xa66d
,
0xa681
,
0xa697
,
0xa723
,
0xa72d
,
0xa733
,
0xa76f
,
0xa77a
,
0xa77c
,
0xa77f
,
0xa787
,
};
static
Rune
__islowers
[]
=
{
0x00aa
,
0x00b5
,
0x00ba
,
0x0188
,
0x0192
,
0x0195
,
0x019e
,
0x01a8
,
0x01ad
,
0x01b0
,
0x01c6
,
0x01c9
,
0x023c
,
0x0242
,
0x0377
,
0x0390
,
0x03f5
,
0x03f8
,
0x1fbe
,
0x210a
,
0x2113
,
0x212f
,
0x2134
,
0x2139
,
0x214e
,
0x2184
,
0x2c61
,
0x2c71
,
0xa78c
,
0x1d4bb
,
0x1d7cb
,
};
int
islowerrune
(
Rune
c
)
{
Rune
*
p
;
p
=
rbsearch
(
c
,
__islowerr
,
nelem
(
__islowerr
)
/
2
,
2
);
if
(
p
&&
c
>=
p
[
0
]
&&
c
<=
p
[
1
])
return
1
;
p
=
rbsearch
(
c
,
__islowerp
,
nelem
(
__islowerp
)
/
2
,
2
);
if
(
p
&&
c
>=
p
[
0
]
&&
c
<=
p
[
1
]
&&
!
((
c
-
p
[
0
])
&
1
))
return
1
;
p
=
rbsearch
(
c
,
__islowers
,
nelem
(
__islowers
),
1
);
if
(
p
&&
c
==
p
[
0
])
return
1
;
return
0
;
}
static
Rune
__istitler
[]
=
{
0x0041
,
0x005a
,
0x00c0
,
0x00d6
,
0x00d8
,
0x00de
,
0x0178
,
0x0179
,
0x0181
,
0x0182
,
0x0186
,
0x0187
,
0x0189
,
0x018b
,
0x018e
,
0x0191
,
0x0193
,
0x0194
,
0x0196
,
0x0198
,
0x019c
,
0x019d
,
0x019f
,
0x01a0
,
0x01a6
,
0x01a7
,
0x01ae
,
0x01af
,
0x01b1
,
0x01b3
,
0x01b7
,
0x01b8
,
0x01f6
,
0x01f8
,
0x023a
,
0x023b
,
0x023d
,
0x023e
,
0x0243
,
0x0246
,
0x0388
,
0x038a
,
0x038e
,
0x038f
,
0x0391
,
0x03a1
,
0x03a3
,
0x03ab
,
0x03f9
,
0x03fa
,
0x03fd
,
0x042f
,
0x04c0
,
0x04c1
,
0x0531
,
0x0556
,
0x10a0
,
0x10c5
,
0x1f08
,
0x1f0f
,
0x1f18
,
0x1f1d
,
0x1f28
,
0x1f2f
,
0x1f38
,
0x1f3f
,
0x1f48
,
0x1f4d
,
0x1f68
,
0x1f6f
,
0x1f88
,
0x1f8f
,
0x1f98
,
0x1f9f
,
0x1fa8
,
0x1faf
,
0x1fb8
,
0x1fbc
,
0x1fc8
,
0x1fcc
,
0x1fd8
,
0x1fdb
,
0x1fe8
,
0x1fec
,
0x1ff8
,
0x1ffc
,
0x2160
,
0x216f
,
0x24b6
,
0x24cf
,
0x2c00
,
0x2c2e
,
0x2c62
,
0x2c64
,
0x2c6d
,
0x2c70
,
0x2c7e
,
0x2c80
,
0xa77d
,
0xa77e
,
0xff21
,
0xff3a
,
0x10400
,
0x10427
,
};
static
Rune
__istitlep
[]
=
{
0x0100
,
0x012e
,
0x0132
,
0x0136
,
0x0139
,
0x0147
,
0x014a
,
0x0176
,
0x017b
,
0x017d
,
0x01a2
,
0x01a4
,
0x01cb
,
0x01db
,
0x01de
,
0x01ee
,
0x01f2
,
0x01f4
,
0x01fa
,
0x0232
,
0x0248
,
0x024e
,
0x0370
,
0x0372
,
0x03d8
,
0x03ee
,
0x0460
,
0x0480
,
0x048a
,
0x04be
,
0x04c3
,
0x04cd
,
0x04d0
,
0x0524
,
0x1e00
,
0x1e94
,
0x1ea0
,
0x1efe
,
0x1f59
,
0x1f5f
,
0x2c67
,
0x2c6b
,
0x2c82
,
0x2ce2
,
0x2ceb
,
0x2ced
,
0xa640
,
0xa65e
,
0xa662
,
0xa66c
,
0xa680
,
0xa696
,
0xa722
,
0xa72e
,
0xa732
,
0xa76e
,
0xa779
,
0xa77b
,
0xa780
,
0xa786
,
};
static
Rune
__istitles
[]
=
{
0x0184
,
0x01a9
,
0x01ac
,
0x01b5
,
0x01bc
,
0x01c5
,
0x01c8
,
0x0241
,
0x0376
,
0x0386
,
0x038c
,
0x03cf
,
0x03f7
,
0x2132
,
0x2183
,
0x2c60
,
0x2c72
,
0x2c75
,
0xa78b
,
};
int
istitlerune
(
Rune
c
)
{
Rune
*
p
;
p
=
rbsearch
(
c
,
__istitler
,
nelem
(
__istitler
)
/
2
,
2
);
if
(
p
&&
c
>=
p
[
0
]
&&
c
<=
p
[
1
])
return
1
;
p
=
rbsearch
(
c
,
__istitlep
,
nelem
(
__istitlep
)
/
2
,
2
);
if
(
p
&&
c
>=
p
[
0
]
&&
c
<=
p
[
1
]
&&
!
((
c
-
p
[
0
])
&
1
))
return
1
;
p
=
rbsearch
(
c
,
__istitles
,
nelem
(
__istitles
),
1
);
if
(
p
&&
c
==
p
[
0
])
return
1
;
return
0
;
}
static
Rune
__toupperr
[]
=
{
0x0061
,
0x007a
,
1048544
,
0x00e0
,
0x00f6
,
1048544
,
0x00f8
,
0x00fe
,
1048544
,
0x023f
,
0x0240
,
1059391
,
0x0256
,
0x0257
,
1048371
,
0x028a
,
0x028b
,
1048359
,
0x037b
,
0x037d
,
1048706
,
0x03ad
,
0x03af
,
1048539
,
0x03b1
,
0x03c1
,
1048544
,
0x03c3
,
0x03cb
,
1048544
,
0x03cd
,
0x03ce
,
1048513
,
0x0430
,
0x044f
,
1048544
,
0x0450
,
0x045f
,
1048496
,
0x0561
,
0x0586
,
1048528
,
0x1f00
,
0x1f07
,
1048584
,
0x1f10
,
0x1f15
,
1048584
,
0x1f20
,
0x1f27
,
1048584
,
0x1f30
,
0x1f37
,
1048584
,
0x1f40
,
0x1f45
,
1048584
,
0x1f60
,
0x1f67
,
1048584
,
0x1f70
,
0x1f71
,
1048650
,
0x1f72
,
0x1f75
,
1048662
,
0x1f76
,
0x1f77
,
1048676
,
0x1f78
,
0x1f79
,
1048704
,
0x1f7a
,
0x1f7b
,
1048688
,
0x1f7c
,
0x1f7d
,
1048702
,
0x1f80
,
0x1f87
,
1048584
,
0x1f90
,
0x1f97
,
1048584
,
0x1fa0
,
0x1fa7
,
1048584
,
0x1fb0
,
0x1fb1
,
1048584
,
0x1fd0
,
0x1fd1
,
1048584
,
0x1fe0
,
0x1fe1
,
1048584
,
0x2170
,
0x217f
,
1048560
,
0x24d0
,
0x24e9
,
1048550
,
0x2c30
,
0x2c5e
,
1048528
,
0x2d00
,
0x2d25
,
1041312
,
0xff41
,
0xff5a
,
1048544
,
0x10428
,
0x1044f
,
1048536
,
};
static
Rune
__toupperp
[]
=
{
0x0101
,
0x012f
,
1048575
,
0x0133
,
0x0137
,
1048575
,
0x013a
,
0x0148
,
1048575
,
0x014b
,
0x0177
,
1048575
,
0x017a
,
0x017e
,
1048575
,
0x0183
,
0x0185
,
1048575
,
0x01a1
,
0x01a5
,
1048575
,
0x01b4
,
0x01b6
,
1048575
,
0x01ce
,
0x01dc
,
1048575
,
0x01df
,
0x01ef
,
1048575
,
0x01f9
,
0x021f
,
1048575
,
0x0223
,
0x0233
,
1048575
,
0x0247
,
0x024f
,
1048575
,
0x0371
,
0x0373
,
1048575
,
0x03d9
,
0x03ef
,
1048575
,
0x0461
,
0x0481
,
1048575
,
0x048b
,
0x04bf
,
1048575
,
0x04c2
,
0x04ce
,
1048575
,
0x04d1
,
0x0525
,
1048575
,
0x1e01
,
0x1e95
,
1048575
,
0x1ea1
,
0x1eff
,
1048575
,
0x1f51
,
0x1f57
,
1048584
,
0x2c68
,
0x2c6c
,
1048575
,
0x2c81
,
0x2ce3
,
1048575
,
0x2cec
,
0x2cee
,
1048575
,
0xa641
,
0xa65f
,
1048575
,
0xa663
,
0xa66d
,
1048575
,
0xa681
,
0xa697
,
1048575
,
0xa723
,
0xa72f
,
1048575
,
0xa733
,
0xa76f
,
1048575
,
0xa77a
,
0xa77c
,
1048575
,
0xa77f
,
0xa787
,
1048575
,
};
static
Rune
__touppers
[]
=
{
0x00b5
,
1049319
,
0x00ff
,
1048697
,
0x0131
,
1048344
,
0x017f
,
1048276
,
0x0180
,
1048771
,
0x0188
,
1048575
,
0x018c
,
1048575
,
0x0192
,
1048575
,
0x0195
,
1048673
,
0x0199
,
1048575
,
0x019a
,
1048739
,
0x019e
,
1048706
,
0x01a8
,
1048575
,
0x01ad
,
1048575
,
0x01b0
,
1048575
,
0x01b9
,
1048575
,
0x01bd
,
1048575
,
0x01bf
,
1048632
,
0x01c5
,
1048575
,
0x01c6
,
1048574
,
0x01c8
,
1048575
,
0x01c9
,
1048574
,
0x01cb
,
1048575
,
0x01cc
,
1048574
,
0x01dd
,
1048497
,
0x01f2
,
1048575
,
0x01f3
,
1048574
,
0x01f5
,
1048575
,
0x023c
,
1048575
,
0x0242
,
1048575
,
0x0250
,
1059359
,
0x0251
,
1059356
,
0x0252
,
1059358
,
0x0253
,
1048366
,
0x0254
,
1048370
,
0x0259
,
1048374
,
0x025b
,
1048373
,
0x0260
,
1048371
,
0x0263
,
1048369
,
0x0268
,
1048367
,
0x0269
,
1048365
,
0x026b
,
1059319
,
0x026f
,
1048365
,
0x0271
,
1059325
,
0x0272
,
1048363
,
0x0275
,
1048362
,
0x027d
,
1059303
,
0x0280
,
1048358
,
0x0283
,
1048358
,
0x0288
,
1048358
,
0x0289
,
1048507
,
0x028c
,
1048505
,
0x0292
,
1048357
,
0x0345
,
1048660
,
0x0377
,
1048575
,
0x03ac
,
1048538
,
0x03c2
,
1048545
,
0x03cc
,
1048512
,
0x03d0
,
1048514
,
0x03d1
,
1048519
,
0x03d5
,
1048529
,
0x03d6
,
1048522
,
0x03d7
,
1048568
,
0x03f0
,
1048490
,
0x03f1
,
1048496
,
0x03f2
,
1048583
,
0x03f5
,
1048480
,
0x03f8
,
1048575
,
0x03fb
,
1048575
,
0x04cf
,
1048561
,
0x1d79
,
1083908
,
0x1d7d
,
1052390
,
0x1e9b
,
1048517
,
0x1fb3
,
1048585
,
0x1fbe
,
1041371
,
0x1fc3
,
1048585
,
0x1fe5
,
1048583
,
0x1ff3
,
1048585
,
0x214e
,
1048548
,
0x2184
,
1048575
,
0x2c61
,
1048575
,
0x2c65
,
1037781
,
0x2c66
,
1037784
,
0x2c73
,
1048575
,
0x2c76
,
1048575
,
0xa78c
,
1048575
,
};
Rune
toupperrune
(
Rune
c
)
{
Rune
*
p
;
p
=
rbsearch
(
c
,
__toupperr
,
nelem
(
__toupperr
)
/
3
,
3
);
if
(
p
&&
c
>=
p
[
0
]
&&
c
<=
p
[
1
])
return
c
+
p
[
2
]
-
1048576
;
p
=
rbsearch
(
c
,
__toupperp
,
nelem
(
__toupperp
)
/
3
,
3
);
if
(
p
&&
c
>=
p
[
0
]
&&
c
<=
p
[
1
]
&&
!
((
c
-
p
[
0
])
&
1
))
return
c
+
p
[
2
]
-
1048576
;
p
=
rbsearch
(
c
,
__touppers
,
nelem
(
__touppers
)
/
2
,
2
);
if
(
p
&&
c
==
p
[
0
])
return
c
+
p
[
1
]
-
1048576
;
return
c
;
}
static
Rune
__tolowerr
[]
=
{
0x0041
,
0x005a
,
1048608
,
0x00c0
,
0x00d6
,
1048608
,
0x00d8
,
0x00de
,
1048608
,
0x0189
,
0x018a
,
1048781
,
0x01b1
,
0x01b2
,
1048793
,
0x0388
,
0x038a
,
1048613
,
0x038e
,
0x038f
,
1048639
,
0x0391
,
0x03a1
,
1048608
,
0x03a3
,
0x03ab
,
1048608
,
0x03fd
,
0x03ff
,
1048446
,
0x0400
,
0x040f
,
1048656
,
0x0410
,
0x042f
,
1048608
,
0x0531
,
0x0556
,
1048624
,
0x10a0
,
0x10c5
,
1055840
,
0x1f08
,
0x1f0f
,
1048568
,
0x1f18
,
0x1f1d
,
1048568
,
0x1f28
,
0x1f2f
,
1048568
,
0x1f38
,
0x1f3f
,
1048568
,
0x1f48
,
0x1f4d
,
1048568
,
0x1f68
,
0x1f6f
,
1048568
,
0x1f88
,
0x1f8f
,
1048568
,
0x1f98
,
0x1f9f
,
1048568
,
0x1fa8
,
0x1faf
,
1048568
,
0x1fb8
,
0x1fb9
,
1048568
,
0x1fba
,
0x1fbb
,
1048502
,
0x1fc8
,
0x1fcb
,
1048490
,
0x1fd8
,
0x1fd9
,
1048568
,
0x1fda
,
0x1fdb
,
1048476
,
0x1fe8
,
0x1fe9
,
1048568
,
0x1fea
,
0x1feb
,
1048464
,
0x1ff8
,
0x1ff9
,
1048448
,
0x1ffa
,
0x1ffb
,
1048450
,
0x2160
,
0x216f
,
1048592
,
0x24b6
,
0x24cf
,
1048602
,
0x2c00
,
0x2c2e
,
1048624
,
0x2c7e
,
0x2c7f
,
1037761
,
0xff21
,
0xff3a
,
1048608
,
0x10400
,
0x10427
,
1048616
,
};
static
Rune
__tolowerp
[]
=
{
0x0100
,
0x012e
,
1048577
,
0x0132
,
0x0136
,
1048577
,
0x0139
,
0x0147
,
1048577
,
0x014a
,
0x0176
,
1048577
,
0x017b
,
0x017d
,
1048577
,
0x01a2
,
0x01a4
,
1048577
,
0x01b3
,
0x01b5
,
1048577
,
0x01cd
,
0x01db
,
1048577
,
0x01de
,
0x01ee
,
1048577
,
0x01f8
,
0x021e
,
1048577
,
0x0222
,
0x0232
,
1048577
,
0x0248
,
0x024e
,
1048577
,
0x0370
,
0x0372
,
1048577
,
0x03d8
,
0x03ee
,
1048577
,
0x0460
,
0x0480
,
1048577
,
0x048a
,
0x04be
,
1048577
,
0x04c3
,
0x04cd
,
1048577
,
0x04d0
,
0x0524
,
1048577
,
0x1e00
,
0x1e94
,
1048577
,
0x1ea0
,
0x1efe
,
1048577
,
0x1f59
,
0x1f5f
,
1048568
,
0x2c67
,
0x2c6b
,
1048577
,
0x2c80
,
0x2ce2
,
1048577
,
0x2ceb
,
0x2ced
,
1048577
,
0xa640
,
0xa65e
,
1048577
,
0xa662
,
0xa66c
,
1048577
,
0xa680
,
0xa696
,
1048577
,
0xa722
,
0xa72e
,
1048577
,
0xa732
,
0xa76e
,
1048577
,
0xa779
,
0xa77b
,
1048577
,
0xa780
,
0xa786
,
1048577
,
};
static
Rune
__tolowers
[]
=
{
0x0130
,
1048377
,
0x0178
,
1048455
,
0x0179
,
1048577
,
0x0181
,
1048786
,
0x0182
,
1048577
,
0x0184
,
1048577
,
0x0186
,
1048782
,
0x0187
,
1048577
,
0x018b
,
1048577
,
0x018e
,
1048655
,
0x018f
,
1048778
,
0x0190
,
1048779
,
0x0191
,
1048577
,
0x0193
,
1048781
,
0x0194
,
1048783
,
0x0196
,
1048787
,
0x0197
,
1048785
,
0x0198
,
1048577
,
0x019c
,
1048787
,
0x019d
,
1048789
,
0x019f
,
1048790
,
0x01a0
,
1048577
,
0x01a6
,
1048794
,
0x01a7
,
1048577
,
0x01a9
,
1048794
,
0x01ac
,
1048577
,
0x01ae
,
1048794
,
0x01af
,
1048577
,
0x01b7
,
1048795
,
0x01b8
,
1048577
,
0x01bc
,
1048577
,
0x01c4
,
1048578
,
0x01c5
,
1048577
,
0x01c7
,
1048578
,
0x01c8
,
1048577
,
0x01ca
,
1048578
,
0x01cb
,
1048577
,
0x01f1
,
1048578
,
0x01f2
,
1048577
,
0x01f4
,
1048577
,
0x01f6
,
1048479
,
0x01f7
,
1048520
,
0x0220
,
1048446
,
0x023a
,
1059371
,
0x023b
,
1048577
,
0x023d
,
1048413
,
0x023e
,
1059368
,
0x0241
,
1048577
,
0x0243
,
1048381
,
0x0244
,
1048645
,
0x0245
,
1048647
,
0x0246
,
1048577
,
0x0376
,
1048577
,
0x0386
,
1048614
,
0x038c
,
1048640
,
0x03cf
,
1048584
,
0x03f4
,
1048516
,
0x03f7
,
1048577
,
0x03f9
,
1048569
,
0x03fa
,
1048577
,
0x04c0
,
1048591
,
0x04c1
,
1048577
,
0x1e9e
,
1040961
,
0x1fbc
,
1048567
,
0x1fcc
,
1048567
,
0x1fec
,
1048569
,
0x1ffc
,
1048567
,
0x2126
,
1041059
,
0x212a
,
1040193
,
0x212b
,
1040314
,
0x2132
,
1048604
,
0x2183
,
1048577
,
0x2c60
,
1048577
,
0x2c62
,
1037833
,
0x2c63
,
1044762
,
0x2c64
,
1037849
,
0x2c6d
,
1037796
,
0x2c6e
,
1037827
,
0x2c6f
,
1037793
,
0x2c70
,
1037794
,
0x2c72
,
1048577
,
0x2c75
,
1048577
,
0xa77d
,
1013244
,
0xa77e
,
1048577
,
0xa78b
,
1048577
,
};
Rune
tolowerrune
(
Rune
c
)
{
Rune
*
p
;
p
=
rbsearch
(
c
,
__tolowerr
,
nelem
(
__tolowerr
)
/
3
,
3
);
if
(
p
&&
c
>=
p
[
0
]
&&
c
<=
p
[
1
])
return
c
+
p
[
2
]
-
1048576
;
p
=
rbsearch
(
c
,
__tolowerp
,
nelem
(
__tolowerp
)
/
3
,
3
);
if
(
p
&&
c
>=
p
[
0
]
&&
c
<=
p
[
1
]
&&
!
((
c
-
p
[
0
])
&
1
))
return
c
+
p
[
2
]
-
1048576
;
p
=
rbsearch
(
c
,
__tolowers
,
nelem
(
__tolowers
)
/
2
,
2
);
if
(
p
&&
c
==
p
[
0
])
return
c
+
p
[
1
]
-
1048576
;
return
c
;
}
static
Rune
__totitler
[]
=
{
0x0061
,
0x007a
,
1048544
,
0x00e0
,
0x00f6
,
1048544
,
0x00f8
,
0x00fe
,
1048544
,
0x023f
,
0x0240
,
1059391
,
0x0256
,
0x0257
,
1048371
,
0x028a
,
0x028b
,
1048359
,
0x037b
,
0x037d
,
1048706
,
0x03ad
,
0x03af
,
1048539
,
0x03b1
,
0x03c1
,
1048544
,
0x03c3
,
0x03cb
,
1048544
,
0x03cd
,
0x03ce
,
1048513
,
0x0430
,
0x044f
,
1048544
,
0x0450
,
0x045f
,
1048496
,
0x0561
,
0x0586
,
1048528
,
0x1f00
,
0x1f07
,
1048584
,
0x1f10
,
0x1f15
,
1048584
,
0x1f20
,
0x1f27
,
1048584
,
0x1f30
,
0x1f37
,
1048584
,
0x1f40
,
0x1f45
,
1048584
,
0x1f60
,
0x1f67
,
1048584
,
0x1f70
,
0x1f71
,
1048650
,
0x1f72
,
0x1f75
,
1048662
,
0x1f76
,
0x1f77
,
1048676
,
0x1f78
,
0x1f79
,
1048704
,
0x1f7a
,
0x1f7b
,
1048688
,
0x1f7c
,
0x1f7d
,
1048702
,
0x1f80
,
0x1f87
,
1048584
,
0x1f90
,
0x1f97
,
1048584
,
0x1fa0
,
0x1fa7
,
1048584
,
0x1fb0
,
0x1fb1
,
1048584
,
0x1fd0
,
0x1fd1
,
1048584
,
0x1fe0
,
0x1fe1
,
1048584
,
0x2170
,
0x217f
,
1048560
,
0x24d0
,
0x24e9
,
1048550
,
0x2c30
,
0x2c5e
,
1048528
,
0x2d00
,
0x2d25
,
1041312
,
0xff41
,
0xff5a
,
1048544
,
0x10428
,
0x1044f
,
1048536
,
};
static
Rune
__totitlep
[]
=
{
0x0101
,
0x012f
,
1048575
,
0x0133
,
0x0137
,
1048575
,
0x013a
,
0x0148
,
1048575
,
0x014b
,
0x0177
,
1048575
,
0x017a
,
0x017e
,
1048575
,
0x0183
,
0x0185
,
1048575
,
0x01a1
,
0x01a5
,
1048575
,
0x01b4
,
0x01b6
,
1048575
,
0x01cc
,
0x01dc
,
1048575
,
0x01df
,
0x01ef
,
1048575
,
0x01f3
,
0x01f5
,
1048575
,
0x01f9
,
0x021f
,
1048575
,
0x0223
,
0x0233
,
1048575
,
0x0247
,
0x024f
,
1048575
,
0x0371
,
0x0373
,
1048575
,
0x03d9
,
0x03ef
,
1048575
,
0x0461
,
0x0481
,
1048575
,
0x048b
,
0x04bf
,
1048575
,
0x04c2
,
0x04ce
,
1048575
,
0x04d1
,
0x0525
,
1048575
,
0x1e01
,
0x1e95
,
1048575
,
0x1ea1
,
0x1eff
,
1048575
,
0x1f51
,
0x1f57
,
1048584
,
0x2c68
,
0x2c6c
,
1048575
,
0x2c81
,
0x2ce3
,
1048575
,
0x2cec
,
0x2cee
,
1048575
,
0xa641
,
0xa65f
,
1048575
,
0xa663
,
0xa66d
,
1048575
,
0xa681
,
0xa697
,
1048575
,
0xa723
,
0xa72f
,
1048575
,
0xa733
,
0xa76f
,
1048575
,
0xa77a
,
0xa77c
,
1048575
,
0xa77f
,
0xa787
,
1048575
,
};
static
Rune
__totitles
[]
=
{
0x00b5
,
1049319
,
0x00ff
,
1048697
,
0x0131
,
1048344
,
0x017f
,
1048276
,
0x0180
,
1048771
,
0x0188
,
1048575
,
0x018c
,
1048575
,
0x0192
,
1048575
,
0x0195
,
1048673
,
0x0199
,
1048575
,
0x019a
,
1048739
,
0x019e
,
1048706
,
0x01a8
,
1048575
,
0x01ad
,
1048575
,
0x01b0
,
1048575
,
0x01b9
,
1048575
,
0x01bd
,
1048575
,
0x01bf
,
1048632
,
0x01c4
,
1048577
,
0x01c6
,
1048575
,
0x01c7
,
1048577
,
0x01c9
,
1048575
,
0x01ca
,
1048577
,
0x01dd
,
1048497
,
0x01f1
,
1048577
,
0x023c
,
1048575
,
0x0242
,
1048575
,
0x0250
,
1059359
,
0x0251
,
1059356
,
0x0252
,
1059358
,
0x0253
,
1048366
,
0x0254
,
1048370
,
0x0259
,
1048374
,
0x025b
,
1048373
,
0x0260
,
1048371
,
0x0263
,
1048369
,
0x0268
,
1048367
,
0x0269
,
1048365
,
0x026b
,
1059319
,
0x026f
,
1048365
,
0x0271
,
1059325
,
0x0272
,
1048363
,
0x0275
,
1048362
,
0x027d
,
1059303
,
0x0280
,
1048358
,
0x0283
,
1048358
,
0x0288
,
1048358
,
0x0289
,
1048507
,
0x028c
,
1048505
,
0x0292
,
1048357
,
0x0345
,
1048660
,
0x0377
,
1048575
,
0x03ac
,
1048538
,
0x03c2
,
1048545
,
0x03cc
,
1048512
,
0x03d0
,
1048514
,
0x03d1
,
1048519
,
0x03d5
,
1048529
,
0x03d6
,
1048522
,
0x03d7
,
1048568
,
0x03f0
,
1048490
,
0x03f1
,
1048496
,
0x03f2
,
1048583
,
0x03f5
,
1048480
,
0x03f8
,
1048575
,
0x03fb
,
1048575
,
0x04cf
,
1048561
,
0x1d79
,
1083908
,
0x1d7d
,
1052390
,
0x1e9b
,
1048517
,
0x1fb3
,
1048585
,
0x1fbe
,
1041371
,
0x1fc3
,
1048585
,
0x1fe5
,
1048583
,
0x1ff3
,
1048585
,
0x214e
,
1048548
,
0x2184
,
1048575
,
0x2c61
,
1048575
,
0x2c65
,
1037781
,
0x2c66
,
1037784
,
0x2c73
,
1048575
,
0x2c76
,
1048575
,
0xa78c
,
1048575
,
};
Rune
totitlerune
(
Rune
c
)
{
Rune
*
p
;
p
=
rbsearch
(
c
,
__totitler
,
nelem
(
__totitler
)
/
3
,
3
);
if
(
p
&&
c
>=
p
[
0
]
&&
c
<=
p
[
1
])
return
c
+
p
[
2
]
-
1048576
;
p
=
rbsearch
(
c
,
__totitlep
,
nelem
(
__totitlep
)
/
3
,
3
);
if
(
p
&&
c
>=
p
[
0
]
&&
c
<=
p
[
1
]
&&
!
((
c
-
p
[
0
])
&
1
))
return
c
+
p
[
2
]
-
1048576
;
p
=
rbsearch
(
c
,
__totitles
,
nelem
(
__totitles
)
/
2
,
2
);
if
(
p
&&
c
==
p
[
0
])
return
c
+
p
[
1
]
-
1048576
;
return
c
;
}
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