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
29d2c5a2
Commit
29d2c5a2
authored
Sep 09, 2010
by
Aric Stewart
Committed by
Alexandre Julliard
Sep 13, 2010
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
usp10: Improve handling of spaces during Itemization.
parent
2c4b0817
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
52 additions
and
3 deletions
+52
-3
usp10.c
dlls/usp10/tests/usp10.c
+32
-0
usp10.c
dlls/usp10/usp10.c
+20
-3
No files found.
dlls/usp10/tests/usp10.c
View file @
29d2c5a2
...
...
@@ -78,6 +78,8 @@ static inline void _test_items_ok(LPCWSTR string, DWORD cchString,
todo_wine
winetest_ok
(
outpItems
[
x
].
a
.
s
.
uBidiLevel
==
items
[
x
].
uBidiLevel
,
"%i:Wrong BidiLevel
\n
"
,
x
);
else
winetest_ok
(
outpItems
[
x
].
a
.
s
.
uBidiLevel
==
items
[
x
].
uBidiLevel
,
"%i:Wrong BidiLevel(%i)
\n
"
,
x
,
outpItems
[
x
].
a
.
s
.
uBidiLevel
);
if
(
x
!=
outnItems
)
winetest_ok
(
outpItems
[
x
].
a
.
eScript
!=
SCRIPT_UNDEFINED
,
"%i: Undefined script
\n
"
,
x
);
}
}
...
...
@@ -90,6 +92,10 @@ static void test_ScriptItemize( void )
static
const
itemTest
t11
[
2
]
=
{{{
0
,
0
,
0
,
0
},
0
,
0
,
0
,
0
},{{
0
,
0
,
0
,
0
},
4
,
0
,
0
,
0
}};
static
const
itemTest
t12
[
2
]
=
{{{
0
,
0
,
0
,
0
},
0
,
0
,
0
,
2
},{{
0
,
0
,
0
,
0
},
4
,
0
,
0
,
0
}};
static
const
WCHAR
test1b
[]
=
{
' '
,
' '
,
' '
,
' '
,
0
};
static
const
itemTest
t1b1
[
2
]
=
{{{
0
,
0
,
0
,
0
},
0
,
0
,
0
,
0
},{{
0
,
0
,
0
,
0
},
4
,
0
,
0
,
0
}};
static
const
itemTest
t1b2
[
2
]
=
{{{
0
,
0
,
0
,
0
},
0
,
1
,
1
,
1
},{{
0
,
0
,
0
,
0
},
4
,
0
,
0
,
0
}};
/* Arabic, English*/
static
const
WCHAR
test2
[]
=
{
'1'
,
'2'
,
'3'
,
'-'
,
'5'
,
'2'
,
0x064a
,
0x064f
,
0x0633
,
0x0627
,
0x0648
,
0x0650
,
0x064a
,
'7'
,
'1'
,
'.'
,
0
};
static
const
itemTest
t21
[
7
]
=
{{{
0
,
0
,
0
,
0
},
0
,
0
,
0
,
0
},{{
0
,
0
,
0
,
0
},
3
,
0
,
0
,
0
},{{
0
,
0
,
0
,
0
},
4
,
0
,
0
,
0
},{{
0
,
0
,
0
,
0
},
6
,
1
,
1
,
1
},{{
0
,
0
,
0
,
0
},
13
,
0
,
0
,
0
},{{
0
,
0
,
0
,
0
},
15
,
0
,
0
,
0
},{{
0
,
0
,
0
,
0
},
16
,
0
,
0
,
0
}};
...
...
@@ -101,6 +107,20 @@ static void test_ScriptItemize( void )
static
const
itemTest
t2b2
[
5
]
=
{{{
0
,
0
,
0
,
0
},
0
,
0
,
0
,
2
},{{
0
,
0
,
0
,
0
},
3
,
0
,
0
,
2
},{{
0
,
0
,
0
,
0
},
4
,
0
,
0
,
2
},{{
0
,
0
,
0
,
0
},
7
,
1
,
1
,
1
},{{
0
,
0
,
0
,
0
},
11
,
0
,
0
,
0
}};
static
const
itemTest
t2b3
[
3
]
=
{{{
0
,
0
,
0
,
0
},
0
,
0
,
0
,
2
},{{
0
,
0
,
0
,
0
},
7
,
1
,
1
,
1
},{{
0
,
0
,
0
,
0
},
11
,
0
,
0
,
0
}};
/* leading space */
static
const
WCHAR
test2c
[]
=
{
' '
,
0x0621
,
0x0623
,
0x0624
,
'A'
,
'B'
,
'C'
,
'-'
,
'D'
,
'E'
,
'F'
,
0
};
static
const
itemTest
t2c1
[
5
]
=
{{{
0
,
0
,
0
,
0
},
0
,
1
,
1
,
1
},{{
0
,
0
,
0
,
0
},
4
,
0
,
0
,
0
},{{
0
,
0
,
0
,
0
},
7
,
0
,
0
,
0
},{{
0
,
0
,
0
,
0
},
8
,
0
,
0
,
0
},{{
0
,
0
,
0
,
0
},
11
,
0
,
0
,
0
}};
static
const
itemTest
t2c2
[
6
]
=
{{{
0
,
0
,
0
,
0
},
0
,
0
,
0
,
0
},{{
0
,
0
,
0
,
0
},
1
,
1
,
1
,
1
},{{
0
,
0
,
0
,
0
},
4
,
0
,
0
,
0
},{{
0
,
0
,
0
,
0
},
7
,
0
,
0
,
0
},{{
0
,
0
,
0
,
0
},
8
,
0
,
0
,
0
},{{
0
,
0
,
0
,
0
},
11
,
0
,
0
,
0
}};
static
const
itemTest
t2c3
[
5
]
=
{{{
0
,
0
,
0
,
0
},
0
,
1
,
1
,
1
},{{
0
,
0
,
0
,
0
},
4
,
0
,
0
,
2
},{{
0
,
0
,
0
,
0
},
7
,
0
,
0
,
2
},{{
0
,
0
,
0
,
0
},
8
,
0
,
0
,
2
},{{
0
,
0
,
0
,
0
},
11
,
0
,
0
,
0
}};
static
const
itemTest
t2c4
[
3
]
=
{{{
0
,
0
,
0
,
0
},
0
,
1
,
1
,
1
},{{
0
,
0
,
0
,
0
},
4
,
0
,
0
,
2
},{{
0
,
0
,
0
,
0
},
11
,
0
,
0
,
0
}};
/* trailing space */
static
const
WCHAR
test2d
[]
=
{
'A'
,
'B'
,
'C'
,
'-'
,
'D'
,
'E'
,
'F'
,
0x0621
,
0x0623
,
0x0624
,
' '
,
0
};
static
const
itemTest
t2d1
[
5
]
=
{{{
0
,
0
,
0
,
0
},
0
,
0
,
0
,
0
},{{
0
,
0
,
0
,
0
},
3
,
0
,
0
,
0
},{{
0
,
0
,
0
,
0
},
4
,
0
,
0
,
0
},{{
0
,
0
,
0
,
0
},
7
,
1
,
1
,
1
},{{
0
,
0
,
0
,
0
},
11
,
0
,
0
,
0
}};
static
const
itemTest
t2d2
[
6
]
=
{{{
0
,
0
,
0
,
0
},
0
,
0
,
0
,
0
},{{
0
,
0
,
0
,
0
},
3
,
0
,
0
,
0
},{{
0
,
0
,
0
,
0
},
4
,
0
,
0
,
0
},{{
0
,
0
,
0
,
0
},
7
,
1
,
1
,
1
},{{
0
,
0
,
0
,
0
},
10
,
0
,
0
,
0
},{{
0
,
0
,
0
,
0
},
11
,
0
,
0
,
0
}};
static
const
itemTest
t2d3
[
5
]
=
{{{
0
,
0
,
0
,
0
},
0
,
0
,
0
,
2
},{{
0
,
0
,
0
,
0
},
3
,
0
,
0
,
2
},{{
0
,
0
,
0
,
0
},
4
,
0
,
0
,
2
},{{
0
,
0
,
0
,
0
},
7
,
1
,
1
,
1
},{{
0
,
0
,
0
,
0
},
11
,
0
,
0
,
0
}};
static
const
itemTest
t2d4
[
3
]
=
{{{
0
,
0
,
0
,
0
},
0
,
0
,
0
,
2
},{{
0
,
0
,
0
,
0
},
7
,
1
,
1
,
1
},{{
0
,
0
,
0
,
0
},
11
,
0
,
0
,
0
}};
/* Thai */
static
const
WCHAR
test3
[]
=
{
0x0e04
,
0x0e27
,
0x0e32
,
0x0e21
,
0x0e1e
,
0x0e22
,
0x0e32
,
0x0e22
,
0x0e32
,
0x0e21
...
...
@@ -168,8 +188,11 @@ static void test_ScriptItemize( void )
ok
(
hr
==
E_INVALIDARG
,
"ScriptItemize should return E_INVALIDARG if cInChars is 0
\n
"
);
test_items_ok
(
test1
,
4
,
NULL
,
NULL
,
1
,
t11
,
FALSE
,
0
);
test_items_ok
(
test1b
,
4
,
NULL
,
NULL
,
1
,
t1b1
,
FALSE
,
0
);
test_items_ok
(
test2
,
16
,
NULL
,
NULL
,
6
,
t21
,
FALSE
,
0
);
test_items_ok
(
test2b
,
11
,
NULL
,
NULL
,
4
,
t2b1
,
FALSE
,
0
);
test_items_ok
(
test2c
,
11
,
NULL
,
NULL
,
4
,
t2c1
,
FALSE
,
0
);
test_items_ok
(
test2d
,
11
,
NULL
,
NULL
,
4
,
t2d1
,
FALSE
,
0
);
test_items_ok
(
test3
,
41
,
NULL
,
NULL
,
1
,
t31
,
FALSE
,
0
);
test_items_ok
(
test4
,
12
,
NULL
,
NULL
,
5
,
t41
,
FALSE
,
0
);
test_items_ok
(
test5
,
38
,
NULL
,
NULL
,
1
,
t51
,
FALSE
,
0
);
...
...
@@ -181,8 +204,11 @@ static void test_ScriptItemize( void )
State
.
uBidiLevel
=
0
;
test_items_ok
(
test1
,
4
,
&
Control
,
&
State
,
1
,
t11
,
FALSE
,
0
);
test_items_ok
(
test1b
,
4
,
&
Control
,
&
State
,
1
,
t1b1
,
FALSE
,
0
);
test_items_ok
(
test2
,
16
,
&
Control
,
&
State
,
4
,
t22
,
FALSE
,
0
);
test_items_ok
(
test2b
,
11
,
&
Control
,
&
State
,
4
,
t2b1
,
FALSE
,
0
);
test_items_ok
(
test2c
,
11
,
&
Control
,
&
State
,
5
,
t2c2
,
FALSE
,
0
);
test_items_ok
(
test2d
,
11
,
&
Control
,
&
State
,
5
,
t2d2
,
FALSE
,
0
);
test_items_ok
(
test3
,
41
,
&
Control
,
&
State
,
1
,
t31
,
FALSE
,
0
);
test_items_ok
(
test4
,
12
,
&
Control
,
&
State
,
5
,
t41
,
FALSE
,
0
);
test_items_ok
(
test5
,
38
,
&
Control
,
&
State
,
1
,
t51
,
FALSE
,
0
);
...
...
@@ -194,8 +220,11 @@ static void test_ScriptItemize( void )
State
.
uBidiLevel
=
1
;
test_items_ok
(
test1
,
4
,
&
Control
,
&
State
,
1
,
t12
,
FALSE
,
0
);
test_items_ok
(
test1b
,
4
,
&
Control
,
&
State
,
1
,
t1b2
,
FALSE
,
0
);
test_items_ok
(
test2
,
16
,
&
Control
,
&
State
,
4
,
t23
,
FALSE
,
0
);
test_items_ok
(
test2b
,
11
,
&
Control
,
&
State
,
4
,
t2b2
,
FALSE
,
0
);
test_items_ok
(
test2c
,
11
,
&
Control
,
&
State
,
4
,
t2c3
,
FALSE
,
0
);
test_items_ok
(
test2d
,
11
,
&
Control
,
&
State
,
4
,
t2d3
,
FALSE
,
0
);
test_items_ok
(
test3
,
41
,
&
Control
,
&
State
,
1
,
t32
,
FALSE
,
0
);
test_items_ok
(
test4
,
12
,
&
Control
,
&
State
,
4
,
t42
,
FALSE
,
0
);
test_items_ok
(
test5
,
38
,
&
Control
,
&
State
,
1
,
t51
,
FALSE
,
0
);
...
...
@@ -208,8 +237,11 @@ static void test_ScriptItemize( void )
State
.
uBidiLevel
=
1
;
Control
.
fMergeNeutralItems
=
TRUE
;
test_items_ok
(
test1
,
4
,
&
Control
,
&
State
,
1
,
t12
,
FALSE
,
0
);
test_items_ok
(
test1b
,
4
,
&
Control
,
&
State
,
1
,
t1b2
,
FALSE
,
0
);
test_items_ok
(
test2
,
16
,
&
Control
,
&
State
,
4
,
t23
,
FALSE
,
0
);
test_items_ok
(
test2b
,
11
,
&
Control
,
&
State
,
2
,
t2b3
,
FALSE
,
4
);
test_items_ok
(
test2c
,
11
,
&
Control
,
&
State
,
2
,
t2c4
,
FALSE
,
4
);
test_items_ok
(
test2d
,
11
,
&
Control
,
&
State
,
2
,
t2d4
,
FALSE
,
4
);
test_items_ok
(
test3
,
41
,
&
Control
,
&
State
,
1
,
t32
,
FALSE
,
0
);
test_items_ok
(
test4
,
12
,
&
Control
,
&
State
,
3
,
t43
,
FALSE
,
4
);
test_items_ok
(
test5
,
38
,
&
Control
,
&
State
,
1
,
t51
,
FALSE
,
0
);
...
...
dlls/usp10/usp10.c
View file @
29d2c5a2
...
...
@@ -638,9 +638,22 @@ HRESULT WINAPI ScriptItemize(const WCHAR *pwcInChars, int cInChars, int cMaxItem
}
}
while
(
pwcInChars
[
cnt
]
==
Numeric_space
&&
cnt
<
cInChars
)
cnt
++
;
if
(
cnt
==
cInChars
)
/* All Spaces */
{
cnt
=
0
;
New_Script
=
get_char_script
(
pwcInChars
[
cnt
]);
}
pItems
[
index
].
iCharPos
=
0
;
pItems
[
index
].
a
=
scriptInformation
[
get_char_script
(
pwcInChars
[
cnt
])].
a
;
if
(
strength
)
str
=
strength
[
cnt
];
cnt
=
0
;
if
(
levels
)
{
pItems
[
index
].
a
.
fRTL
=
odd
(
levels
[
cnt
]);
...
...
@@ -654,9 +667,6 @@ HRESULT WINAPI ScriptItemize(const WCHAR *pwcInChars, int cInChars, int cMaxItem
pItems
[
index
].
a
.
fRTL
=
odd
(
baselevel
);
}
if
(
strength
)
str
=
strength
[
0
];
TRACE
(
"New_Level=%i New_Strength=%i New_Script=%d, eScript=%d index=%d cnt=%d iCharPos=%d
\n
"
,
levels
?
levels
[
cnt
]
:-
1
,
str
,
New_Script
,
pItems
[
index
].
a
.
eScript
,
index
,
cnt
,
pItems
[
index
].
iCharPos
);
...
...
@@ -668,6 +678,13 @@ HRESULT WINAPI ScriptItemize(const WCHAR *pwcInChars, int cInChars, int cMaxItem
if
(
pwcInChars
[
cnt
]
!=
Numeric_space
)
New_Script
=
get_char_script
(
pwcInChars
[
cnt
]);
else
if
(
levels
)
{
int
j
=
1
;
while
(
cnt
+
j
<
cInChars
-
1
&&
pwcInChars
[
cnt
+
j
]
==
Numeric_space
)
j
++
;
New_Script
=
get_char_script
(
pwcInChars
[
cnt
+
j
]);
}
if
((
levels
&&
(
levels
[
cnt
]
!=
pItems
[
index
].
a
.
s
.
uBidiLevel
||
(
strength
&&
(
strength
[
cnt
]
!=
str
))))
||
New_Script
!=
pItems
[
index
].
a
.
eScript
||
New_Script
==
Script_Control
)
{
...
...
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