Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
2b9d720e
Commit
2b9d720e
authored
Feb 17, 2020
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
unicode: Take into account explicit composition exclusions.
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
30f298f5
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
59 additions
and
152 deletions
+59
-152
compose.c
dlls/kernelbase/compose.c
+20
-76
compose.c
dlls/ntdll/compose.c
+20
-76
make_unicode
tools/make_unicode
+19
-0
No files found.
dlls/kernelbase/compose.c
View file @
2b9d720e
...
...
@@ -4,30 +4,25 @@
#include "windef.h"
static
const
unsigned
int
table
[
2
208
]
=
static
const
unsigned
int
table
[
2
006
]
=
{
/* second chars + offsets */
0x00300
,
0x00053
,
0x00301
,
0x000a7
,
0x00302
,
0x0011c
,
0x00303
,
0x0013c
,
0x00304
,
0x00158
,
0x00306
,
0x00184
,
0x00307
,
0x001a4
,
0x00308
,
0x001d2
,
0x00309
,
0x00208
,
0x0030a
,
0x00220
,
0x0030b
,
0x00226
,
0x0030c
,
0x0022c
,
0x0030f
,
0x00251
,
0x00311
,
0x0025f
,
0x00313
,
0x0026b
,
0x00314
,
0x00279
,
0x0031b
,
0x00289
,
0x00323
,
0x0028d
,
0x00324
,
0x002b7
,
0x00325
,
0x002b9
,
0x00326
,
0x002bb
,
0x00327
,
0x002bf
,
0x00328
,
0x002d5
,
0x0032d
,
0x002df
,
0x0032e
,
0x002eb
,
0x00330
,
0x002ed
,
0x00331
,
0x002f3
,
0x00338
,
0x00304
,
0x00342
,
0x00331
,
0x00345
,
0x0034e
,
0x005b4
,
0x0038d
,
0x005b7
,
0x0038e
,
0x005b8
,
0x00390
,
0x005b9
,
0x00391
,
0x005bc
,
0x00392
,
0x005bf
,
0x003a8
,
0x005c1
,
0x003ab
,
0x005c2
,
0x003ad
,
0x00653
,
0x003af
,
0x00654
,
0x003b0
,
0x00655
,
0x003b6
,
0x0093c
,
0x003b7
,
0x009bc
,
0x003c2
,
0x009be
,
0x003c5
,
0x009d7
,
0x003c6
,
0x00a3c
,
0x003c7
,
0x00b3c
,
0x003cd
,
0x00b3e
,
0x003cf
,
0x00b56
,
0x003d0
,
0x00b57
,
0x003d1
,
0x00bbe
,
0x003d2
,
0x00bd7
,
0x003d4
,
0x00c56
,
0x003d6
,
0x00cc2
,
0x003d7
,
0x00cd5
,
0x003d8
,
0x00cd6
,
0x003db
,
0x00d3e
,
0x003dc
,
0x00d57
,
0x003de
,
0x00dca
,
0x003df
,
0x00dcf
,
0x003e1
,
0x00ddf
,
0x003e2
,
0x00f80
,
0x003e3
,
0x00fb5
,
0x003e5
,
0x00fb7
,
0x003e7
,
0x0102e
,
0x003f1
,
0x01b35
,
0x003f2
,
0x03099
,
0x003fd
,
0x0309a
,
0x0042d
,
0x110ba
,
0x00437
,
0x11127
,
0x0043a
,
0x1133e
,
0x0043c
,
0x11357
,
0x0043d
,
0x114b0
,
0x0043e
,
0x114ba
,
0x0043f
,
0x114bd
,
0x00440
,
0x115af
,
0x00441
,
0x1d165
,
0x00443
,
0x1d16e
,
0x00447
,
0x1d16f
,
0x0044a
,
0x1d170
,
0x0044d
,
0x1d171
,
0x0044e
,
0x1d172
,
0x0044f
,
0x00000
,
0x00450
,
0x00300
,
0x0003f
,
0x00301
,
0x00093
,
0x00302
,
0x00108
,
0x00303
,
0x00128
,
0x00304
,
0x00144
,
0x00306
,
0x00170
,
0x00307
,
0x00190
,
0x00308
,
0x001be
,
0x00309
,
0x001f4
,
0x0030a
,
0x0020c
,
0x0030b
,
0x00212
,
0x0030c
,
0x00218
,
0x0030f
,
0x0023d
,
0x00311
,
0x0024b
,
0x00313
,
0x00257
,
0x00314
,
0x00265
,
0x0031b
,
0x00275
,
0x00323
,
0x00279
,
0x00324
,
0x002a3
,
0x00325
,
0x002a5
,
0x00326
,
0x002a7
,
0x00327
,
0x002ab
,
0x00328
,
0x002c1
,
0x0032d
,
0x002cb
,
0x0032e
,
0x002d7
,
0x00330
,
0x002d9
,
0x00331
,
0x002df
,
0x00338
,
0x002f0
,
0x00342
,
0x0031c
,
0x00345
,
0x00339
,
0x00653
,
0x00378
,
0x00654
,
0x00379
,
0x00655
,
0x0037f
,
0x0093c
,
0x00380
,
0x009be
,
0x00383
,
0x009d7
,
0x00384
,
0x00b3e
,
0x00385
,
0x00b56
,
0x00386
,
0x00b57
,
0x00387
,
0x00bbe
,
0x00388
,
0x00bd7
,
0x0038a
,
0x00c56
,
0x0038c
,
0x00cc2
,
0x0038d
,
0x00cd5
,
0x0038e
,
0x00cd6
,
0x00391
,
0x00d3e
,
0x00392
,
0x00d57
,
0x00394
,
0x00dca
,
0x00395
,
0x00dcf
,
0x00397
,
0x00ddf
,
0x00398
,
0x0102e
,
0x00399
,
0x01b35
,
0x0039a
,
0x03099
,
0x003a5
,
0x0309a
,
0x003d5
,
0x110ba
,
0x003df
,
0x11127
,
0x003e2
,
0x1133e
,
0x003e4
,
0x11357
,
0x003e5
,
0x114b0
,
0x003e6
,
0x114ba
,
0x003e7
,
0x114bd
,
0x003e8
,
0x115af
,
0x003e9
,
0x00000
,
0x003eb
,
/* 0x0300 */
0x00041
,
0x000c0
,
0x00045
,
0x000c8
,
0x00049
,
0x000cc
,
0x0004e
,
0x001f8
,
0x0004f
,
0x000d2
,
0x00055
,
0x000d9
,
0x00057
,
0x01e80
,
0x00059
,
0x01ef2
,
...
...
@@ -248,7 +243,6 @@ static const unsigned int table[2208] =
0x02286
,
0x02288
,
0x02287
,
0x02289
,
0x02291
,
0x022e2
,
0x02292
,
0x022e3
,
0x022a2
,
0x022ac
,
0x022a8
,
0x022ad
,
0x022a9
,
0x022ae
,
0x022ab
,
0x022af
,
0x022b2
,
0x022ea
,
0x022b3
,
0x022eb
,
0x022b4
,
0x022ec
,
0x022b5
,
0x022ed
,
0x02add
,
0x02adc
,
/* 0x0342 */
0x000a8
,
0x01fc1
,
0x003b1
,
0x01fb6
,
0x003b7
,
0x01fc6
,
0x003b9
,
0x01fd6
,
0x003c5
,
0x01fe6
,
0x003c9
,
0x01ff6
,
0x003ca
,
0x01fd7
,
0x003cb
,
0x01fe7
,
...
...
@@ -275,27 +269,6 @@ static const unsigned int table[2208] =
0x01f6b
,
0x01fab
,
0x01f6c
,
0x01fac
,
0x01f6d
,
0x01fad
,
0x01f6e
,
0x01fae
,
0x01f6f
,
0x01faf
,
0x01f70
,
0x01fb2
,
0x01f74
,
0x01fc2
,
0x01f7c
,
0x01ff2
,
0x01fb6
,
0x01fb7
,
0x01fc6
,
0x01fc7
,
0x01ff6
,
0x01ff7
,
/* 0x05b4 */
0x005d9
,
0x0fb1d
,
/* 0x05b7 */
0x005d0
,
0x0fb2e
,
0x005f2
,
0x0fb1f
,
/* 0x05b8 */
0x005d0
,
0x0fb2f
,
/* 0x05b9 */
0x005d5
,
0x0fb4b
,
/* 0x05bc */
0x005d0
,
0x0fb30
,
0x005d1
,
0x0fb31
,
0x005d2
,
0x0fb32
,
0x005d3
,
0x0fb33
,
0x005d4
,
0x0fb34
,
0x005d5
,
0x0fb35
,
0x005d6
,
0x0fb36
,
0x005d8
,
0x0fb38
,
0x005d9
,
0x0fb39
,
0x005da
,
0x0fb3a
,
0x005db
,
0x0fb3b
,
0x005dc
,
0x0fb3c
,
0x005de
,
0x0fb3e
,
0x005e0
,
0x0fb40
,
0x005e1
,
0x0fb41
,
0x005e3
,
0x0fb43
,
0x005e4
,
0x0fb44
,
0x005e6
,
0x0fb46
,
0x005e7
,
0x0fb47
,
0x005e8
,
0x0fb48
,
0x005e9
,
0x0fb49
,
0x005ea
,
0x0fb4a
,
/* 0x05bf */
0x005d1
,
0x0fb4c
,
0x005db
,
0x0fb4d
,
0x005e4
,
0x0fb4e
,
/* 0x05c1 */
0x005e9
,
0x0fb2a
,
0x0fb49
,
0x0fb2c
,
/* 0x05c2 */
0x005e9
,
0x0fb2b
,
0x0fb49
,
0x0fb2d
,
/* 0x0653 */
0x00627
,
0x00622
,
/* 0x0654 */
...
...
@@ -304,20 +277,11 @@ static const unsigned int table[2208] =
/* 0x0655 */
0x00627
,
0x00625
,
/* 0x093c */
0x00915
,
0x00958
,
0x00916
,
0x00959
,
0x00917
,
0x0095a
,
0x0091c
,
0x0095b
,
0x00921
,
0x0095c
,
0x00922
,
0x0095d
,
0x00928
,
0x00929
,
0x0092b
,
0x0095e
,
0x0092f
,
0x0095f
,
0x00930
,
0x00931
,
0x00933
,
0x00934
,
/* 0x09bc */
0x009a1
,
0x009dc
,
0x009a2
,
0x009dd
,
0x009af
,
0x009df
,
0x00928
,
0x00929
,
0x00930
,
0x00931
,
0x00933
,
0x00934
,
/* 0x09be */
0x009c7
,
0x009cb
,
/* 0x09d7 */
0x009c7
,
0x009cc
,
/* 0x0a3c */
0x00a16
,
0x00a59
,
0x00a17
,
0x00a5a
,
0x00a1c
,
0x00a5b
,
0x00a2b
,
0x00a5e
,
0x00a32
,
0x00a33
,
0x00a38
,
0x00a36
,
/* 0x0b3c */
0x00b21
,
0x00b5c
,
0x00b22
,
0x00b5d
,
/* 0x0b3e */
0x00b47
,
0x00b4b
,
/* 0x0b56 */
...
...
@@ -346,14 +310,6 @@ static const unsigned int table[2208] =
0x00dd9
,
0x00ddc
,
/* 0x0ddf */
0x00dd9
,
0x00dde
,
/* 0x0f80 */
0x00fb2
,
0x00f76
,
0x00fb3
,
0x00f78
,
/* 0x0fb5 */
0x00f40
,
0x00f69
,
0x00f90
,
0x00fb9
,
/* 0x0fb7 */
0x00f42
,
0x00f43
,
0x00f4c
,
0x00f4d
,
0x00f51
,
0x00f52
,
0x00f56
,
0x00f57
,
0x00f5b
,
0x00f5c
,
0x00f92
,
0x00f93
,
0x00f9c
,
0x00f9d
,
0x00fa1
,
0x00fa2
,
0x00fa6
,
0x00fa7
,
0x00fab
,
0x00fac
,
/* 0x102e */
0x01025
,
0x01026
,
/* 0x1b35 */
...
...
@@ -392,19 +348,7 @@ static const unsigned int table[2208] =
/* 0x114bd */
0x114b9
,
0x114be
,
/* 0x115af */
0x115b8
,
0x115ba
,
0x115b9
,
0x115bb
,
/* 0x1d165 */
0x1d157
,
0x1d15e
,
0x1d158
,
0x1d15f
,
0x1d1b9
,
0x1d1bb
,
0x1d1ba
,
0x1d1bc
,
/* 0x1d16e */
0x1d15f
,
0x1d160
,
0x1d1bb
,
0x1d1bd
,
0x1d1bc
,
0x1d1be
,
/* 0x1d16f */
0x1d15f
,
0x1d161
,
0x1d1bb
,
0x1d1bf
,
0x1d1bc
,
0x1d1c0
,
/* 0x1d170 */
0x1d15f
,
0x1d162
,
/* 0x1d171 */
0x1d15f
,
0x1d163
,
/* 0x1d172 */
0x1d15f
,
0x1d164
0x115b8
,
0x115ba
,
0x115b9
,
0x115bb
};
static
inline
int
binary_search
(
unsigned
int
ch
,
int
low
,
int
high
)
...
...
@@ -423,7 +367,7 @@ unsigned int DECLSPEC_HIDDEN wine_compose( unsigned int ch1, unsigned int ch2 )
{
int
pos
;
if
((
pos
=
binary_search
(
ch2
,
0
,
8
2
-
1
))
==
-
1
)
return
0
;
if
((
pos
=
binary_search
(
ch2
,
0
,
6
2
-
1
))
==
-
1
)
return
0
;
if
((
pos
=
binary_search
(
ch1
,
table
[
2
*
pos
+
1
],
table
[
2
*
pos
+
3
]
-
1
))
==
-
1
)
return
0
;
return
table
[
2
*
pos
+
1
];
}
dlls/ntdll/compose.c
View file @
2b9d720e
...
...
@@ -4,30 +4,25 @@
#include "windef.h"
static
const
unsigned
int
table
[
2
208
]
=
static
const
unsigned
int
table
[
2
006
]
=
{
/* second chars + offsets */
0x00300
,
0x00053
,
0x00301
,
0x000a7
,
0x00302
,
0x0011c
,
0x00303
,
0x0013c
,
0x00304
,
0x00158
,
0x00306
,
0x00184
,
0x00307
,
0x001a4
,
0x00308
,
0x001d2
,
0x00309
,
0x00208
,
0x0030a
,
0x00220
,
0x0030b
,
0x00226
,
0x0030c
,
0x0022c
,
0x0030f
,
0x00251
,
0x00311
,
0x0025f
,
0x00313
,
0x0026b
,
0x00314
,
0x00279
,
0x0031b
,
0x00289
,
0x00323
,
0x0028d
,
0x00324
,
0x002b7
,
0x00325
,
0x002b9
,
0x00326
,
0x002bb
,
0x00327
,
0x002bf
,
0x00328
,
0x002d5
,
0x0032d
,
0x002df
,
0x0032e
,
0x002eb
,
0x00330
,
0x002ed
,
0x00331
,
0x002f3
,
0x00338
,
0x00304
,
0x00342
,
0x00331
,
0x00345
,
0x0034e
,
0x005b4
,
0x0038d
,
0x005b7
,
0x0038e
,
0x005b8
,
0x00390
,
0x005b9
,
0x00391
,
0x005bc
,
0x00392
,
0x005bf
,
0x003a8
,
0x005c1
,
0x003ab
,
0x005c2
,
0x003ad
,
0x00653
,
0x003af
,
0x00654
,
0x003b0
,
0x00655
,
0x003b6
,
0x0093c
,
0x003b7
,
0x009bc
,
0x003c2
,
0x009be
,
0x003c5
,
0x009d7
,
0x003c6
,
0x00a3c
,
0x003c7
,
0x00b3c
,
0x003cd
,
0x00b3e
,
0x003cf
,
0x00b56
,
0x003d0
,
0x00b57
,
0x003d1
,
0x00bbe
,
0x003d2
,
0x00bd7
,
0x003d4
,
0x00c56
,
0x003d6
,
0x00cc2
,
0x003d7
,
0x00cd5
,
0x003d8
,
0x00cd6
,
0x003db
,
0x00d3e
,
0x003dc
,
0x00d57
,
0x003de
,
0x00dca
,
0x003df
,
0x00dcf
,
0x003e1
,
0x00ddf
,
0x003e2
,
0x00f80
,
0x003e3
,
0x00fb5
,
0x003e5
,
0x00fb7
,
0x003e7
,
0x0102e
,
0x003f1
,
0x01b35
,
0x003f2
,
0x03099
,
0x003fd
,
0x0309a
,
0x0042d
,
0x110ba
,
0x00437
,
0x11127
,
0x0043a
,
0x1133e
,
0x0043c
,
0x11357
,
0x0043d
,
0x114b0
,
0x0043e
,
0x114ba
,
0x0043f
,
0x114bd
,
0x00440
,
0x115af
,
0x00441
,
0x1d165
,
0x00443
,
0x1d16e
,
0x00447
,
0x1d16f
,
0x0044a
,
0x1d170
,
0x0044d
,
0x1d171
,
0x0044e
,
0x1d172
,
0x0044f
,
0x00000
,
0x00450
,
0x00300
,
0x0003f
,
0x00301
,
0x00093
,
0x00302
,
0x00108
,
0x00303
,
0x00128
,
0x00304
,
0x00144
,
0x00306
,
0x00170
,
0x00307
,
0x00190
,
0x00308
,
0x001be
,
0x00309
,
0x001f4
,
0x0030a
,
0x0020c
,
0x0030b
,
0x00212
,
0x0030c
,
0x00218
,
0x0030f
,
0x0023d
,
0x00311
,
0x0024b
,
0x00313
,
0x00257
,
0x00314
,
0x00265
,
0x0031b
,
0x00275
,
0x00323
,
0x00279
,
0x00324
,
0x002a3
,
0x00325
,
0x002a5
,
0x00326
,
0x002a7
,
0x00327
,
0x002ab
,
0x00328
,
0x002c1
,
0x0032d
,
0x002cb
,
0x0032e
,
0x002d7
,
0x00330
,
0x002d9
,
0x00331
,
0x002df
,
0x00338
,
0x002f0
,
0x00342
,
0x0031c
,
0x00345
,
0x00339
,
0x00653
,
0x00378
,
0x00654
,
0x00379
,
0x00655
,
0x0037f
,
0x0093c
,
0x00380
,
0x009be
,
0x00383
,
0x009d7
,
0x00384
,
0x00b3e
,
0x00385
,
0x00b56
,
0x00386
,
0x00b57
,
0x00387
,
0x00bbe
,
0x00388
,
0x00bd7
,
0x0038a
,
0x00c56
,
0x0038c
,
0x00cc2
,
0x0038d
,
0x00cd5
,
0x0038e
,
0x00cd6
,
0x00391
,
0x00d3e
,
0x00392
,
0x00d57
,
0x00394
,
0x00dca
,
0x00395
,
0x00dcf
,
0x00397
,
0x00ddf
,
0x00398
,
0x0102e
,
0x00399
,
0x01b35
,
0x0039a
,
0x03099
,
0x003a5
,
0x0309a
,
0x003d5
,
0x110ba
,
0x003df
,
0x11127
,
0x003e2
,
0x1133e
,
0x003e4
,
0x11357
,
0x003e5
,
0x114b0
,
0x003e6
,
0x114ba
,
0x003e7
,
0x114bd
,
0x003e8
,
0x115af
,
0x003e9
,
0x00000
,
0x003eb
,
/* 0x0300 */
0x00041
,
0x000c0
,
0x00045
,
0x000c8
,
0x00049
,
0x000cc
,
0x0004e
,
0x001f8
,
0x0004f
,
0x000d2
,
0x00055
,
0x000d9
,
0x00057
,
0x01e80
,
0x00059
,
0x01ef2
,
...
...
@@ -248,7 +243,6 @@ static const unsigned int table[2208] =
0x02286
,
0x02288
,
0x02287
,
0x02289
,
0x02291
,
0x022e2
,
0x02292
,
0x022e3
,
0x022a2
,
0x022ac
,
0x022a8
,
0x022ad
,
0x022a9
,
0x022ae
,
0x022ab
,
0x022af
,
0x022b2
,
0x022ea
,
0x022b3
,
0x022eb
,
0x022b4
,
0x022ec
,
0x022b5
,
0x022ed
,
0x02add
,
0x02adc
,
/* 0x0342 */
0x000a8
,
0x01fc1
,
0x003b1
,
0x01fb6
,
0x003b7
,
0x01fc6
,
0x003b9
,
0x01fd6
,
0x003c5
,
0x01fe6
,
0x003c9
,
0x01ff6
,
0x003ca
,
0x01fd7
,
0x003cb
,
0x01fe7
,
...
...
@@ -275,27 +269,6 @@ static const unsigned int table[2208] =
0x01f6b
,
0x01fab
,
0x01f6c
,
0x01fac
,
0x01f6d
,
0x01fad
,
0x01f6e
,
0x01fae
,
0x01f6f
,
0x01faf
,
0x01f70
,
0x01fb2
,
0x01f74
,
0x01fc2
,
0x01f7c
,
0x01ff2
,
0x01fb6
,
0x01fb7
,
0x01fc6
,
0x01fc7
,
0x01ff6
,
0x01ff7
,
/* 0x05b4 */
0x005d9
,
0x0fb1d
,
/* 0x05b7 */
0x005d0
,
0x0fb2e
,
0x005f2
,
0x0fb1f
,
/* 0x05b8 */
0x005d0
,
0x0fb2f
,
/* 0x05b9 */
0x005d5
,
0x0fb4b
,
/* 0x05bc */
0x005d0
,
0x0fb30
,
0x005d1
,
0x0fb31
,
0x005d2
,
0x0fb32
,
0x005d3
,
0x0fb33
,
0x005d4
,
0x0fb34
,
0x005d5
,
0x0fb35
,
0x005d6
,
0x0fb36
,
0x005d8
,
0x0fb38
,
0x005d9
,
0x0fb39
,
0x005da
,
0x0fb3a
,
0x005db
,
0x0fb3b
,
0x005dc
,
0x0fb3c
,
0x005de
,
0x0fb3e
,
0x005e0
,
0x0fb40
,
0x005e1
,
0x0fb41
,
0x005e3
,
0x0fb43
,
0x005e4
,
0x0fb44
,
0x005e6
,
0x0fb46
,
0x005e7
,
0x0fb47
,
0x005e8
,
0x0fb48
,
0x005e9
,
0x0fb49
,
0x005ea
,
0x0fb4a
,
/* 0x05bf */
0x005d1
,
0x0fb4c
,
0x005db
,
0x0fb4d
,
0x005e4
,
0x0fb4e
,
/* 0x05c1 */
0x005e9
,
0x0fb2a
,
0x0fb49
,
0x0fb2c
,
/* 0x05c2 */
0x005e9
,
0x0fb2b
,
0x0fb49
,
0x0fb2d
,
/* 0x0653 */
0x00627
,
0x00622
,
/* 0x0654 */
...
...
@@ -304,20 +277,11 @@ static const unsigned int table[2208] =
/* 0x0655 */
0x00627
,
0x00625
,
/* 0x093c */
0x00915
,
0x00958
,
0x00916
,
0x00959
,
0x00917
,
0x0095a
,
0x0091c
,
0x0095b
,
0x00921
,
0x0095c
,
0x00922
,
0x0095d
,
0x00928
,
0x00929
,
0x0092b
,
0x0095e
,
0x0092f
,
0x0095f
,
0x00930
,
0x00931
,
0x00933
,
0x00934
,
/* 0x09bc */
0x009a1
,
0x009dc
,
0x009a2
,
0x009dd
,
0x009af
,
0x009df
,
0x00928
,
0x00929
,
0x00930
,
0x00931
,
0x00933
,
0x00934
,
/* 0x09be */
0x009c7
,
0x009cb
,
/* 0x09d7 */
0x009c7
,
0x009cc
,
/* 0x0a3c */
0x00a16
,
0x00a59
,
0x00a17
,
0x00a5a
,
0x00a1c
,
0x00a5b
,
0x00a2b
,
0x00a5e
,
0x00a32
,
0x00a33
,
0x00a38
,
0x00a36
,
/* 0x0b3c */
0x00b21
,
0x00b5c
,
0x00b22
,
0x00b5d
,
/* 0x0b3e */
0x00b47
,
0x00b4b
,
/* 0x0b56 */
...
...
@@ -346,14 +310,6 @@ static const unsigned int table[2208] =
0x00dd9
,
0x00ddc
,
/* 0x0ddf */
0x00dd9
,
0x00dde
,
/* 0x0f80 */
0x00fb2
,
0x00f76
,
0x00fb3
,
0x00f78
,
/* 0x0fb5 */
0x00f40
,
0x00f69
,
0x00f90
,
0x00fb9
,
/* 0x0fb7 */
0x00f42
,
0x00f43
,
0x00f4c
,
0x00f4d
,
0x00f51
,
0x00f52
,
0x00f56
,
0x00f57
,
0x00f5b
,
0x00f5c
,
0x00f92
,
0x00f93
,
0x00f9c
,
0x00f9d
,
0x00fa1
,
0x00fa2
,
0x00fa6
,
0x00fa7
,
0x00fab
,
0x00fac
,
/* 0x102e */
0x01025
,
0x01026
,
/* 0x1b35 */
...
...
@@ -392,19 +348,7 @@ static const unsigned int table[2208] =
/* 0x114bd */
0x114b9
,
0x114be
,
/* 0x115af */
0x115b8
,
0x115ba
,
0x115b9
,
0x115bb
,
/* 0x1d165 */
0x1d157
,
0x1d15e
,
0x1d158
,
0x1d15f
,
0x1d1b9
,
0x1d1bb
,
0x1d1ba
,
0x1d1bc
,
/* 0x1d16e */
0x1d15f
,
0x1d160
,
0x1d1bb
,
0x1d1bd
,
0x1d1bc
,
0x1d1be
,
/* 0x1d16f */
0x1d15f
,
0x1d161
,
0x1d1bb
,
0x1d1bf
,
0x1d1bc
,
0x1d1c0
,
/* 0x1d170 */
0x1d15f
,
0x1d162
,
/* 0x1d171 */
0x1d15f
,
0x1d163
,
/* 0x1d172 */
0x1d15f
,
0x1d164
0x115b8
,
0x115ba
,
0x115b9
,
0x115bb
};
static
inline
int
binary_search
(
unsigned
int
ch
,
int
low
,
int
high
)
...
...
@@ -423,7 +367,7 @@ unsigned int DECLSPEC_HIDDEN wine_compose( unsigned int ch1, unsigned int ch2 )
{
int
pos
;
if
((
pos
=
binary_search
(
ch2
,
0
,
8
2
-
1
))
==
-
1
)
return
0
;
if
((
pos
=
binary_search
(
ch2
,
0
,
6
2
-
1
))
==
-
1
)
return
0
;
if
((
pos
=
binary_search
(
ch1
,
table
[
2
*
pos
+
1
],
table
[
2
*
pos
+
3
]
-
1
))
==
-
1
)
return
0
;
return
table
[
2
*
pos
+
1
];
}
tools/make_unicode
View file @
2b9d720e
...
...
@@ -407,6 +407,7 @@ my @direction_table = ();
my
@decomp_table
=
();
my
@combining_class_table
=
();
my
@decomp_compat_table
=
();
my
@comp_exclusions
=
();
my
$default_char
;
my
$default_wchar
;
...
...
@@ -490,6 +491,7 @@ sub get_composition($$)
return
()
unless
defined
$decomp_table
[
$ch
];
# no decomposition
my
@ret
=
@
{
$decomp_table
[
$ch
]};
return
()
if
@ret
<
2
;
# singleton decomposition
return
()
if
$comp_exclusions
[
$ch
];
# composition exclusion
return
()
if
$combining_class_table
[
$ch
];
# non-starter
return
()
if
$combining_class_table
[
$ret
[
0
]];
# first char is non-starter
return
()
if
$compat
&&
!
defined
$decomp_table
[
$ret
[
0
]]
&&
...
...
@@ -648,6 +650,23 @@ sub load_data()
my
$ch
=
$tolower_table
[
$i
];
$tolower_table
[
$i
]
=
undef
unless
defined
$toupper_table
[
$ch
]
&&
$toupper_table
[
$ch
]
==
$i
;
}
# load the composition exclusions
my
$EXCL
=
open_data_file
(
$UNIDATA
,
"CompositionExclusions.txt"
);
while
(
<
$EXCL
>
)
{
s/\#.*//
;
# remove comments
if
(
/^([0-9a-fA-F]+)\.\.([0-9a-fA-F]+)\s*$/
)
{
foreach
my
$i
(
hex
$1
..
hex
$2
)
{
$comp_exclusions
[
$i
]
=
1
;
}
}
elsif
(
/^([0-9a-fA-F]+)\s*$/
)
{
$comp_exclusions
[
hex
$1
]
=
1
;
}
}
close
$EXCL
;
}
...
...
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