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
2a4b5762
Commit
2a4b5762
authored
Feb 19, 2022
by
Nikolay Sivov
Committed by
Alexandre Julliard
Feb 21, 2022
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
usp10/tests: Remove workarounds for missing functions.
Signed-off-by:
Nikolay Sivov
<
nsivov@codeweavers.com
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
258f83de
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
53 additions
and
84 deletions
+53
-84
usp10.c
dlls/usp10/tests/usp10.c
+38
-84
usp10.h
include/usp10.h
+15
-0
No files found.
dlls/usp10/tests/usp10.c
View file @
2a4b5762
...
...
@@ -58,15 +58,6 @@ typedef struct _font_fingerprint {
WORD
result
[
10
];
}
font_fingerprint
;
/* Uniscribe 1.6 calls */
static
HRESULT
(
WINAPI
*
pScriptItemizeOpenType
)(
const
WCHAR
*
pwcInChars
,
int
cInChars
,
int
cMaxItems
,
const
SCRIPT_CONTROL
*
psControl
,
const
SCRIPT_STATE
*
psState
,
SCRIPT_ITEM
*
pItems
,
ULONG
*
pScriptTags
,
int
*
pcItems
);
static
HRESULT
(
WINAPI
*
pScriptShapeOpenType
)(
HDC
hdc
,
SCRIPT_CACHE
*
psc
,
SCRIPT_ANALYSIS
*
psa
,
OPENTYPE_TAG
tagScript
,
OPENTYPE_TAG
tagLangSys
,
int
*
rcRangeChars
,
TEXTRANGE_PROPERTIES
**
rpRangeProperties
,
int
cRanges
,
const
WCHAR
*
pwcChars
,
int
cChars
,
int
cMaxGlyphs
,
WORD
*
pwLogClust
,
SCRIPT_CHARPROP
*
pCharProps
,
WORD
*
pwOutGlyphs
,
SCRIPT_GLYPHPROP
*
pOutGlyphProps
,
int
*
pcGlyphs
);
static
HRESULT
(
WINAPI
*
pScriptGetFontScriptTags
)(
HDC
hdc
,
SCRIPT_CACHE
*
psc
,
SCRIPT_ANALYSIS
*
psa
,
int
cMaxTags
,
OPENTYPE_TAG
*
pScriptTags
,
int
*
pcTags
);
static
HRESULT
(
WINAPI
*
pScriptGetFontLanguageTags
)(
HDC
hdc
,
SCRIPT_CACHE
*
psc
,
SCRIPT_ANALYSIS
*
psa
,
OPENTYPE_TAG
tagScript
,
int
cMaxTags
,
OPENTYPE_TAG
*
pLangSysTags
,
int
*
pcTags
);
static
HRESULT
(
WINAPI
*
pScriptGetFontFeatureTags
)(
HDC
hdc
,
SCRIPT_CACHE
*
psc
,
SCRIPT_ANALYSIS
*
psa
,
OPENTYPE_TAG
tagScript
,
OPENTYPE_TAG
tagLangSys
,
int
cMaxTags
,
OPENTYPE_TAG
*
pFeatureTags
,
int
*
pcTags
);
static
inline
void
_test_items_ok
(
LPCWSTR
string
,
DWORD
cchString
,
SCRIPT_CONTROL
*
Control
,
SCRIPT_STATE
*
State
,
DWORD
nItems
,
const
itemTest
*
items
,
BOOL
nItemsToDo
,
...
...
@@ -77,11 +68,7 @@ static inline void _test_items_ok(LPCWSTR string, DWORD cchString,
SCRIPT_ITEM
outpItems
[
15
];
ULONG
tags
[
15
]
=
{
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
};
if
(
pScriptItemizeOpenType
)
hr
=
pScriptItemizeOpenType
(
string
,
cchString
,
15
,
Control
,
State
,
outpItems
,
tags
,
&
outnItems
);
else
hr
=
ScriptItemize
(
string
,
cchString
,
15
,
Control
,
State
,
outpItems
,
&
outnItems
);
hr
=
ScriptItemizeOpenType
(
string
,
cchString
,
15
,
Control
,
State
,
outpItems
,
tags
,
&
outnItems
);
winetest_ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
if
(
nItemsBroken
&&
(
broken
(
nItemsBroken
[
0
]
==
outnItems
)
||
broken
(
nItemsBroken
[
1
]
==
outnItems
)))
{
...
...
@@ -120,14 +107,10 @@ static inline void _test_items_ok(LPCWSTR string, DWORD cchString,
if
(
x
!=
outnItems
)
winetest_ok
(
outpItems
[
x
].
a
.
eScript
!=
SCRIPT_UNDEFINED
,
"%i: Undefined script
\n
"
,
x
);
if
(
pScriptItemizeOpenType
)
{
if
(
items
[
x
].
isBroken
&&
broken
(
tags
[
x
]
==
items
[
x
].
broken_value
[
5
]))
winetest_win_skip
(
"This test broken on this platform: item %d Script Tag %lx
\n
"
,
x
,
tags
[
x
]);
else
todo_wine_if
(
items
[
x
].
todo_flag
[
5
])
if
(
items
[
x
].
isBroken
&&
broken
(
tags
[
x
]
==
items
[
x
].
broken_value
[
5
]))
winetest_win_skip
(
"This test broken on this platform: item %d Script Tag %lx
\n
"
,
x
,
tags
[
x
]);
else
todo_wine_if
(
items
[
x
].
todo_flag
[
5
])
winetest_ok
(
tags
[
x
]
==
items
[
x
].
scriptTag
,
"%i:Incorrect Script Tag %lx != %lx
\n
"
,
x
,
tags
[
x
],
items
[
x
].
scriptTag
);
}
}
}
...
...
@@ -987,7 +970,7 @@ static inline void _test_shape_ok(int valid, HDC hdc, LPCWSTR string,
hr
=
ScriptGetProperties
(
&
script_properties
,
&
script_count
);
winetest_ok
(
SUCCEEDED
(
hr
),
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
p
ScriptItemizeOpenType
(
string
,
cchString
,
15
,
Control
,
State
,
outpItems
,
tags
,
&
outnItems
);
hr
=
ScriptItemizeOpenType
(
string
,
cchString
,
15
,
Control
,
State
,
outpItems
,
tags
,
&
outnItems
);
if
(
valid
>
0
)
winetest_ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
else
if
(
hr
!=
S_OK
)
...
...
@@ -1023,7 +1006,7 @@ static inline void _test_shape_ok(int valid, HDC hdc, LPCWSTR string,
winetest_ok
(
!
outpItems
[
item
].
a
.
fLogicalOrder
,
"Got unexpected fLogicalOrder %#x.
\n
"
,
outpItems
[
item
].
a
.
fLogicalOrder
);
hr
=
p
ScriptShapeOpenType
(
hdc
,
&
sc
,
&
outpItems
[
item
].
a
,
tags
[
item
],
0x00000000
,
NULL
,
NULL
,
0
,
string
,
cchString
,
maxGlyphs
,
logclust
,
charProp
,
glyphs
,
glyphProp
,
&
outnGlyphs
);
hr
=
ScriptShapeOpenType
(
hdc
,
&
sc
,
&
outpItems
[
item
].
a
,
tags
[
item
],
0x00000000
,
NULL
,
NULL
,
0
,
string
,
cchString
,
maxGlyphs
,
logclust
,
charProp
,
glyphs
,
glyphProp
,
&
outnGlyphs
);
if
(
valid
>
0
)
winetest_ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
else
if
(
hr
!=
S_OK
)
...
...
@@ -1095,7 +1078,7 @@ static inline void _test_shape_ok(int valid, HDC hdc, LPCWSTR string,
}
outpItems
[
item
].
a
.
fLogicalOrder
=
1
;
hr
=
p
ScriptShapeOpenType
(
hdc
,
&
sc
,
&
outpItems
[
item
].
a
,
tags
[
item
],
0x00000000
,
NULL
,
NULL
,
0
,
hr
=
ScriptShapeOpenType
(
hdc
,
&
sc
,
&
outpItems
[
item
].
a
,
tags
[
item
],
0x00000000
,
NULL
,
NULL
,
0
,
string
,
cchString
,
maxGlyphs
,
logclust2
,
charProp2
,
glyphs2
,
glyphProp2
,
&
outnGlyphs2
);
winetest_ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
/* Cluster maps are hard. */
...
...
@@ -1148,7 +1131,7 @@ static inline void _test_shape_ok(int valid, HDC hdc, LPCWSTR string,
}
outpItems
[
item
].
a
.
fLogicalOrder
=
0
;
outpItems
[
item
].
a
.
fRTL
=
!
outpItems
[
item
].
a
.
fRTL
;
hr
=
p
ScriptShapeOpenType
(
hdc
,
&
sc
,
&
outpItems
[
item
].
a
,
tags
[
item
],
0x00000000
,
NULL
,
NULL
,
0
,
hr
=
ScriptShapeOpenType
(
hdc
,
&
sc
,
&
outpItems
[
item
].
a
,
tags
[
item
],
0x00000000
,
NULL
,
NULL
,
0
,
string2
,
cchString
,
maxGlyphs
,
logclust2
,
charProp2
,
glyphs2
,
glyphProp2
,
&
outnGlyphs2
);
winetest_ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
for
(
x
=
0
;
x
<
cchString
;
++
x
)
...
...
@@ -1180,7 +1163,7 @@ static inline void _test_shape_ok(int valid, HDC hdc, LPCWSTR string,
x
,
glyphProp2
[
x
].
sva
.
fZeroWidth
,
glyphProp
[
x
].
sva
.
fZeroWidth
);
}
outpItems
[
item
].
a
.
fLogicalOrder
=
1
;
hr
=
p
ScriptShapeOpenType
(
hdc
,
&
sc
,
&
outpItems
[
item
].
a
,
tags
[
item
],
0x00000000
,
NULL
,
NULL
,
0
,
hr
=
ScriptShapeOpenType
(
hdc
,
&
sc
,
&
outpItems
[
item
].
a
,
tags
[
item
],
0x00000000
,
NULL
,
NULL
,
0
,
string2
,
cchString
,
maxGlyphs
,
logclust2
,
charProp2
,
glyphs2
,
glyphProp2
,
&
outnGlyphs2
);
winetest_ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
for
(
x
=
0
;
x
<
cchString
;
++
x
)
...
...
@@ -1638,32 +1621,25 @@ static void test_ScriptShapeOpenType(HDC hdc)
{
'A'
,
'a'
,
'B'
,
'b'
,
'C'
,
'c'
,
'D'
,
'd'
,
0
,
0
},
{
284
,
310
,
285
,
311
,
286
,
312
,
287
,
313
,
0
,
0
}};
if
(
!
pScriptItemizeOpenType
||
!
pScriptShapeOpenType
)
{
win_skip
(
"ScriptShapeOpenType not available on this platform
\n
"
);
return
;
}
memset
(
&
Control
,
0
,
sizeof
(
Control
));
memset
(
&
State
,
0
,
sizeof
(
State
));
hr
=
p
ScriptItemizeOpenType
(
test1
,
4
,
2
,
&
Control
,
&
State
,
items
,
tags
,
&
outnItems
);
hr
=
ScriptItemizeOpenType
(
test1
,
4
,
2
,
&
Control
,
&
State
,
items
,
tags
,
&
outnItems
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
ok
(
items
[
0
].
a
.
fNoGlyphIndex
==
FALSE
,
"fNoGlyphIndex TRUE
\n
"
);
hr
=
p
ScriptShapeOpenType
(
hdc
,
&
sc
,
&
items
[
0
].
a
,
tags
[
0
],
0x00000000
,
NULL
,
NULL
,
0
,
test1
,
4
,
4
,
NULL
,
NULL
,
glyphs
,
NULL
,
&
nb
);
hr
=
ScriptShapeOpenType
(
hdc
,
&
sc
,
&
items
[
0
].
a
,
tags
[
0
],
0x00000000
,
NULL
,
NULL
,
0
,
test1
,
4
,
4
,
NULL
,
NULL
,
glyphs
,
NULL
,
&
nb
);
ok
(
hr
==
E_INVALIDARG
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
p
ScriptShapeOpenType
(
hdc
,
&
sc
,
&
items
[
0
].
a
,
tags
[
0
],
0x00000000
,
NULL
,
NULL
,
0
,
test1
,
4
,
4
,
NULL
,
NULL
,
glyphs
,
glyphProp
,
NULL
);
hr
=
ScriptShapeOpenType
(
hdc
,
&
sc
,
&
items
[
0
].
a
,
tags
[
0
],
0x00000000
,
NULL
,
NULL
,
0
,
test1
,
4
,
4
,
NULL
,
NULL
,
glyphs
,
glyphProp
,
NULL
);
ok
(
hr
==
E_INVALIDARG
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
p
ScriptShapeOpenType
(
NULL
,
&
sc
,
&
items
[
0
].
a
,
tags
[
0
],
0x00000000
,
NULL
,
NULL
,
0
,
test1
,
4
,
4
,
NULL
,
NULL
,
glyphs
,
glyphProp
,
&
nb
);
hr
=
ScriptShapeOpenType
(
NULL
,
&
sc
,
&
items
[
0
].
a
,
tags
[
0
],
0x00000000
,
NULL
,
NULL
,
0
,
test1
,
4
,
4
,
NULL
,
NULL
,
glyphs
,
glyphProp
,
&
nb
);
ok
(
hr
==
E_INVALIDARG
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
p
ScriptShapeOpenType
(
hdc
,
&
sc
,
&
items
[
0
].
a
,
tags
[
0
],
0x00000000
,
NULL
,
NULL
,
0
,
test1
,
4
,
4
,
NULL
,
NULL
,
glyphs
,
glyphProp
,
&
nb
);
hr
=
ScriptShapeOpenType
(
hdc
,
&
sc
,
&
items
[
0
].
a
,
tags
[
0
],
0x00000000
,
NULL
,
NULL
,
0
,
test1
,
4
,
4
,
NULL
,
NULL
,
glyphs
,
glyphProp
,
&
nb
);
ok
(
hr
==
E_INVALIDARG
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
p
ScriptShapeOpenType
(
hdc
,
&
sc
,
&
items
[
0
].
a
,
tags
[
0
],
0x00000000
,
NULL
,
NULL
,
0
,
test1
,
4
,
4
,
logclust
,
NULL
,
glyphs
,
glyphProp
,
&
nb
);
hr
=
ScriptShapeOpenType
(
hdc
,
&
sc
,
&
items
[
0
].
a
,
tags
[
0
],
0x00000000
,
NULL
,
NULL
,
0
,
test1
,
4
,
4
,
logclust
,
NULL
,
glyphs
,
glyphProp
,
&
nb
);
ok
(
hr
==
E_INVALIDARG
,
"Unexpected hr %#lx.
\n
"
,
hr
);
ScriptFreeCache
(
&
sc
);
...
...
@@ -3814,29 +3790,22 @@ static void test_ScriptGetFontFunctions(HDC hdc)
int
count
=
0
;
HRESULT
hr
;
if
(
!
pScriptGetFontScriptTags
||
!
pScriptGetFontLanguageTags
||
!
pScriptGetFontFeatureTags
)
{
win_skip
(
"ScriptGetFontScriptTags, ScriptGetFontLanguageTags or "
"ScriptGetFontFeatureTags not available on this platform.
\n
"
);
return
;
}
hr
=
pScriptGetFontScriptTags
(
hdc
,
&
sc
,
NULL
,
0
,
NULL
,
NULL
);
hr
=
ScriptGetFontScriptTags
(
hdc
,
&
sc
,
NULL
,
0
,
NULL
,
NULL
);
ok
(
hr
==
E_INVALIDARG
,
"Unexpected hr %#lx.
\n
"
,
hr
);
ok
(
!
sc
,
"Got unexpected script cache %p.
\n
"
,
sc
);
hr
=
p
ScriptGetFontScriptTags
(
hdc
,
&
sc
,
NULL
,
0
,
NULL
,
&
count
);
hr
=
ScriptGetFontScriptTags
(
hdc
,
&
sc
,
NULL
,
0
,
NULL
,
&
count
);
ok
(
hr
==
E_INVALIDARG
,
"Unexpected hr %#lx.
\n
"
,
hr
);
ok
(
!
sc
,
"Got unexpected script cache %p.
\n
"
,
sc
);
hr
=
p
ScriptGetFontScriptTags
(
hdc
,
&
sc
,
NULL
,
ARRAY_SIZE
(
tags
),
tags
,
NULL
);
hr
=
ScriptGetFontScriptTags
(
hdc
,
&
sc
,
NULL
,
ARRAY_SIZE
(
tags
),
tags
,
NULL
);
ok
(
hr
==
E_INVALIDARG
,
"Unexpected hr %#lx.
\n
"
,
hr
);
ok
(
!
sc
,
"Got unexpected script cache %p.
\n
"
,
sc
);
hr
=
p
ScriptGetFontScriptTags
(
hdc
,
&
sc
,
NULL
,
0
,
tags
,
&
count
);
hr
=
ScriptGetFontScriptTags
(
hdc
,
&
sc
,
NULL
,
0
,
tags
,
&
count
);
ok
(
hr
==
E_INVALIDARG
,
"Unexpected hr %#lx.
\n
"
,
hr
);
ok
(
!
sc
,
"Got unexpected script cache %p.
\n
"
,
sc
);
hr
=
p
ScriptGetFontScriptTags
(
NULL
,
&
sc
,
NULL
,
ARRAY_SIZE
(
tags
),
tags
,
&
count
);
hr
=
ScriptGetFontScriptTags
(
NULL
,
&
sc
,
NULL
,
ARRAY_SIZE
(
tags
),
tags
,
&
count
);
ok
(
hr
==
E_PENDING
,
"Unexpected hr %#lx.
\n
"
,
hr
);
ok
(
!
sc
,
"Got unexpected script cache %p.
\n
"
,
sc
);
hr
=
p
ScriptGetFontScriptTags
(
hdc
,
&
sc
,
NULL
,
ARRAY_SIZE
(
tags
),
tags
,
&
count
);
hr
=
ScriptGetFontScriptTags
(
hdc
,
&
sc
,
NULL
,
ARRAY_SIZE
(
tags
),
tags
,
&
count
);
ok
(
hr
==
S_OK
||
hr
==
E_OUTOFMEMORY
,
"Unexpected hr %#lx.
\n
"
,
hr
);
if
(
hr
==
S_OK
)
ok
(
count
<=
5
,
"Got unexpected count %d.
\n
"
,
count
);
...
...
@@ -3847,22 +3816,22 @@ static void test_ScriptGetFontFunctions(HDC hdc)
ScriptFreeCache
(
&
sc
);
sc
=
NULL
;
hr
=
p
ScriptGetFontLanguageTags
(
hdc
,
&
sc
,
NULL
,
latn_tag
,
0
,
NULL
,
NULL
);
hr
=
ScriptGetFontLanguageTags
(
hdc
,
&
sc
,
NULL
,
latn_tag
,
0
,
NULL
,
NULL
);
ok
(
hr
==
E_INVALIDARG
,
"Unexpected hr %#lx.
\n
"
,
hr
);
ok
(
!
sc
,
"Got unexpected script cache %p.
\n
"
,
sc
);
hr
=
p
ScriptGetFontLanguageTags
(
hdc
,
&
sc
,
NULL
,
latn_tag
,
0
,
NULL
,
&
count
);
hr
=
ScriptGetFontLanguageTags
(
hdc
,
&
sc
,
NULL
,
latn_tag
,
0
,
NULL
,
&
count
);
ok
(
hr
==
E_INVALIDARG
,
"Unexpected hr %#lx.
\n
"
,
hr
);
ok
(
!
sc
,
"Got unexpected script cache %p.
\n
"
,
sc
);
hr
=
p
ScriptGetFontLanguageTags
(
hdc
,
&
sc
,
NULL
,
latn_tag
,
ARRAY_SIZE
(
tags
),
tags
,
NULL
);
hr
=
ScriptGetFontLanguageTags
(
hdc
,
&
sc
,
NULL
,
latn_tag
,
ARRAY_SIZE
(
tags
),
tags
,
NULL
);
ok
(
hr
==
E_INVALIDARG
,
"Unexpected hr %#lx.
\n
"
,
hr
);
ok
(
!
sc
,
"Got unexpected script cache %p.
\n
"
,
sc
);
hr
=
p
ScriptGetFontLanguageTags
(
hdc
,
&
sc
,
NULL
,
latn_tag
,
0
,
tags
,
&
count
);
hr
=
ScriptGetFontLanguageTags
(
hdc
,
&
sc
,
NULL
,
latn_tag
,
0
,
tags
,
&
count
);
ok
(
hr
==
E_INVALIDARG
,
"Unexpected hr %#lx.
\n
"
,
hr
);
ok
(
!
sc
,
"Got unexpected script cache %p.
\n
"
,
sc
);
hr
=
p
ScriptGetFontLanguageTags
(
NULL
,
&
sc
,
NULL
,
latn_tag
,
ARRAY_SIZE
(
tags
),
tags
,
&
count
);
hr
=
ScriptGetFontLanguageTags
(
NULL
,
&
sc
,
NULL
,
latn_tag
,
ARRAY_SIZE
(
tags
),
tags
,
&
count
);
ok
(
hr
==
E_PENDING
,
"Unexpected hr %#lx.
\n
"
,
hr
);
ok
(
!
sc
,
"Got unexpected script cache %p.
\n
"
,
sc
);
hr
=
p
ScriptGetFontLanguageTags
(
hdc
,
&
sc
,
NULL
,
latn_tag
,
ARRAY_SIZE
(
tags
),
tags
,
&
count
);
hr
=
ScriptGetFontLanguageTags
(
hdc
,
&
sc
,
NULL
,
latn_tag
,
ARRAY_SIZE
(
tags
),
tags
,
&
count
);
ok
(
hr
==
S_OK
||
hr
==
E_OUTOFMEMORY
,
"Unexpected hr %#lx.
\n
"
,
hr
);
if
(
hr
==
S_OK
)
ok
(
count
<=
5
,
"Got unexpected count %d.
\n
"
,
count
);
...
...
@@ -3872,22 +3841,22 @@ static void test_ScriptGetFontFunctions(HDC hdc)
ScriptFreeCache
(
&
sc
);
sc
=
NULL
;
hr
=
p
ScriptGetFontFeatureTags
(
hdc
,
&
sc
,
NULL
,
latn_tag
,
0x0
,
0
,
NULL
,
NULL
);
hr
=
ScriptGetFontFeatureTags
(
hdc
,
&
sc
,
NULL
,
latn_tag
,
0x0
,
0
,
NULL
,
NULL
);
ok
(
hr
==
E_INVALIDARG
,
"Unexpected hr %#lx.
\n
"
,
hr
);
ok
(
!
sc
,
"Got unexpected script cache %p.
\n
"
,
sc
);
hr
=
p
ScriptGetFontFeatureTags
(
hdc
,
&
sc
,
NULL
,
latn_tag
,
0x0
,
0
,
NULL
,
&
count
);
hr
=
ScriptGetFontFeatureTags
(
hdc
,
&
sc
,
NULL
,
latn_tag
,
0x0
,
0
,
NULL
,
&
count
);
ok
(
hr
==
E_INVALIDARG
,
"Unexpected hr %#lx.
\n
"
,
hr
);
ok
(
!
sc
,
"Got unexpected script cache %p.
\n
"
,
sc
);
hr
=
p
ScriptGetFontFeatureTags
(
hdc
,
&
sc
,
NULL
,
latn_tag
,
0x0
,
ARRAY_SIZE
(
tags
),
tags
,
NULL
);
hr
=
ScriptGetFontFeatureTags
(
hdc
,
&
sc
,
NULL
,
latn_tag
,
0x0
,
ARRAY_SIZE
(
tags
),
tags
,
NULL
);
ok
(
hr
==
E_INVALIDARG
,
"Unexpected hr %#lx.
\n
"
,
hr
);
ok
(
!
sc
,
"Got unexpected script cache %p.
\n
"
,
sc
);
hr
=
p
ScriptGetFontFeatureTags
(
hdc
,
&
sc
,
NULL
,
latn_tag
,
0x0
,
0
,
tags
,
&
count
);
hr
=
ScriptGetFontFeatureTags
(
hdc
,
&
sc
,
NULL
,
latn_tag
,
0x0
,
0
,
tags
,
&
count
);
ok
(
hr
==
E_INVALIDARG
,
"Unexpected hr %#lx.
\n
"
,
hr
);
ok
(
!
sc
,
"Got unexpected script cache %p.
\n
"
,
sc
);
hr
=
p
ScriptGetFontFeatureTags
(
NULL
,
&
sc
,
NULL
,
latn_tag
,
0x0
,
ARRAY_SIZE
(
tags
),
tags
,
&
count
);
hr
=
ScriptGetFontFeatureTags
(
NULL
,
&
sc
,
NULL
,
latn_tag
,
0x0
,
ARRAY_SIZE
(
tags
),
tags
,
&
count
);
ok
(
hr
==
E_PENDING
,
"Unexpected hr %#lx.
\n
"
,
hr
);
ok
(
!
sc
,
"Got unexpected script cache %p.
\n
"
,
sc
);
hr
=
p
ScriptGetFontFeatureTags
(
hdc
,
&
sc
,
NULL
,
latn_tag
,
0x0
,
ARRAY_SIZE
(
tags
),
tags
,
&
count
);
hr
=
ScriptGetFontFeatureTags
(
hdc
,
&
sc
,
NULL
,
latn_tag
,
0x0
,
ARRAY_SIZE
(
tags
),
tags
,
&
count
);
ok
(
hr
==
S_OK
||
hr
==
E_OUTOFMEMORY
,
"Unexpected hr %#lx.
\n
"
,
hr
);
if
(
hr
==
S_OK
)
ok
(
count
<=
5
,
"Got unexpected count %d.
\n
"
,
count
);
...
...
@@ -3901,17 +3870,17 @@ static void test_ScriptGetFontFunctions(HDC hdc)
&
control
,
&
state
,
items
,
&
count
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
memset
(
tags
,
0
,
sizeof
(
tags
));
hr
=
p
ScriptGetFontScriptTags
(
hdc
,
&
sc
,
&
items
[
0
].
a
,
ARRAY_SIZE
(
tags
),
tags
,
&
count
);
hr
=
ScriptGetFontScriptTags
(
hdc
,
&
sc
,
&
items
[
0
].
a
,
ARRAY_SIZE
(
tags
),
tags
,
&
count
);
ok
(
hr
==
USP_E_SCRIPT_NOT_IN_FONT
||
broken
(
hr
==
S_OK
),
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
p
ScriptGetFontLanguageTags
(
hdc
,
&
sc
,
NULL
,
dsrt_tag
,
ARRAY_SIZE
(
tags
),
tags
,
&
count
);
hr
=
ScriptGetFontLanguageTags
(
hdc
,
&
sc
,
NULL
,
dsrt_tag
,
ARRAY_SIZE
(
tags
),
tags
,
&
count
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
p
ScriptGetFontLanguageTags
(
hdc
,
&
sc
,
&
items
[
0
].
a
,
dsrt_tag
,
ARRAY_SIZE
(
tags
),
tags
,
&
count
);
hr
=
ScriptGetFontLanguageTags
(
hdc
,
&
sc
,
&
items
[
0
].
a
,
dsrt_tag
,
ARRAY_SIZE
(
tags
),
tags
,
&
count
);
ok
(
hr
==
E_INVALIDARG
||
broken
(
hr
==
S_OK
),
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
p
ScriptGetFontFeatureTags
(
hdc
,
&
sc
,
NULL
,
dsrt_tag
,
0x0
,
ARRAY_SIZE
(
tags
),
tags
,
&
count
);
hr
=
ScriptGetFontFeatureTags
(
hdc
,
&
sc
,
NULL
,
dsrt_tag
,
0x0
,
ARRAY_SIZE
(
tags
),
tags
,
&
count
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
p
ScriptGetFontFeatureTags
(
hdc
,
&
sc
,
&
items
[
0
].
a
,
dsrt_tag
,
0x0
,
ARRAY_SIZE
(
tags
),
tags
,
&
count
);
hr
=
ScriptGetFontFeatureTags
(
hdc
,
&
sc
,
&
items
[
0
].
a
,
dsrt_tag
,
0x0
,
ARRAY_SIZE
(
tags
),
tags
,
&
count
);
ok
(
hr
==
E_INVALIDARG
||
broken
(
hr
==
S_OK
),
"Unexpected hr %#lx.
\n
"
,
hr
);
ScriptFreeCache
(
&
sc
);
...
...
@@ -4167,19 +4136,6 @@ static void test_script_cache_reuse(void)
DestroyWindow
(
hwnd2
);
}
static
void
init_tests
(
void
)
{
HMODULE
module
=
GetModuleHandleA
(
"usp10.dll"
);
ok
(
module
!=
0
,
"Expected usp10.dll to be loaded.
\n
"
);
pScriptItemizeOpenType
=
(
void
*
)
GetProcAddress
(
module
,
"ScriptItemizeOpenType"
);
pScriptShapeOpenType
=
(
void
*
)
GetProcAddress
(
module
,
"ScriptShapeOpenType"
);
pScriptGetFontScriptTags
=
(
void
*
)
GetProcAddress
(
module
,
"ScriptGetFontScriptTags"
);
pScriptGetFontLanguageTags
=
(
void
*
)
GetProcAddress
(
module
,
"ScriptGetFontLanguageTags"
);
pScriptGetFontFeatureTags
=
(
void
*
)
GetProcAddress
(
module
,
"ScriptGetFontFeatureTags"
);
}
START_TEST
(
usp10
)
{
HWND
hwnd
;
...
...
@@ -4209,8 +4165,6 @@ START_TEST(usp10)
hfont
=
SelectObject
(
hdc
,
CreateFontIndirectA
(
&
lf
));
ok
(
hfont
!=
NULL
,
"SelectObject failed: %p
\n
"
,
hfont
);
init_tests
();
test_ScriptItemize
();
test_ScriptItemize_surrogates
();
test_ScriptItemIzeShapePlace
(
hdc
,
pwOutGlyphs
);
...
...
include/usp10.h
View file @
2a4b5762
...
...
@@ -238,9 +238,19 @@ HRESULT WINAPI ScriptRecordDigitSubstitution(LCID Locale, SCRIPT_DIGITSUBSTITUTE
HRESULT
WINAPI
ScriptItemize
(
const
WCHAR
*
pwcInChars
,
int
cInChars
,
int
cMaxItems
,
const
SCRIPT_CONTROL
*
psControl
,
const
SCRIPT_STATE
*
psState
,
SCRIPT_ITEM
*
pItems
,
int
*
pcItems
);
HRESULT
WINAPI
ScriptItemizeOpenType
(
const
WCHAR
*
pwcInChars
,
int
cInChars
,
int
cMaxItems
,
const
SCRIPT_CONTROL
*
psControl
,
const
SCRIPT_STATE
*
psState
,
SCRIPT_ITEM
*
pItems
,
OPENTYPE_TAG
*
pScriptTags
,
int
*
pcItems
);
HRESULT
WINAPI
ScriptGetCMap
(
HDC
hdc
,
SCRIPT_CACHE
*
psc
,
const
WCHAR
*
pwcInChars
,
int
cChars
,
DWORD
dwFlags
,
WORD
*
pwOutGlyphs
);
HRESULT
WINAPI
ScriptGetFontFeatureTags
(
HDC
hdc
,
SCRIPT_CACHE
*
psc
,
SCRIPT_ANALYSIS
*
psa
,
OPENTYPE_TAG
tagScript
,
OPENTYPE_TAG
tagLangSys
,
int
cMaxTags
,
OPENTYPE_TAG
*
pFeatureTags
,
int
*
pcTags
);
HRESULT
WINAPI
ScriptGetFontLanguageTags
(
HDC
hdc
,
SCRIPT_CACHE
*
psc
,
SCRIPT_ANALYSIS
*
psa
,
OPENTYPE_TAG
tagScript
,
int
cMaxTags
,
OPENTYPE_TAG
*
pLangsysTags
,
int
*
pcTags
);
HRESULT
WINAPI
ScriptGetFontProperties
(
HDC
hdc
,
SCRIPT_CACHE
*
psc
,
SCRIPT_FONTPROPERTIES
*
sfp
);
HRESULT
WINAPI
ScriptGetFontScriptTags
(
HDC
hdc
,
SCRIPT_CACHE
*
psc
,
SCRIPT_ANALYSIS
*
psa
,
int
cMaxTags
,
OPENTYPE_TAG
*
pScriptTags
,
int
*
pcTags
);
HRESULT
WINAPI
ScriptGetGlyphABCWidth
(
HDC
hdc
,
SCRIPT_CACHE
*
psc
,
WORD
wGlyph
,
ABC
*
pABC
);
HRESULT
WINAPI
ScriptGetLogicalWidths
(
const
SCRIPT_ANALYSIS
*
psa
,
int
cChars
,
int
cGlyphs
,
const
int
*
piGlyphWidth
,
const
WORD
*
pwLogClust
,
...
...
@@ -268,6 +278,11 @@ HRESULT WINAPI ScriptJustify(const SCRIPT_VISATTR *psva, const int *piAdvance, i
HRESULT
WINAPI
ScriptLayout
(
int
cRuns
,
const
BYTE
*
pbLevel
,
int
*
piVisualToLogical
,
int
*
piLogicalToVisual
);
HRESULT
WINAPI
ScriptShape
(
HDC
hdc
,
SCRIPT_CACHE
*
psc
,
const
WCHAR
*
pwcChars
,
int
cChars
,
int
cMaxGlyphs
,
SCRIPT_ANALYSIS
*
psa
,
WORD
*
pwOutGlyphs
,
WORD
*
pwLogClust
,
SCRIPT_VISATTR
*
psva
,
int
*
pcGlyphs
);
HRESULT
WINAPI
ScriptShapeOpenType
(
HDC
hdc
,
SCRIPT_CACHE
*
psc
,
SCRIPT_ANALYSIS
*
psa
,
OPENTYPE_TAG
tagScript
,
OPENTYPE_TAG
tagLangSys
,
int
*
rcRangeChars
,
TEXTRANGE_PROPERTIES
**
rpRangeProperties
,
int
cRanges
,
const
WCHAR
*
pwcChars
,
int
cChars
,
int
cMaxGlyphs
,
WORD
*
pwLogClust
,
SCRIPT_CHARPROP
*
pCharProps
,
WORD
*
pwOutGlyphs
,
SCRIPT_GLYPHPROP
*
pOutGlyphProps
,
int
*
pcGlyphs
);
HRESULT
WINAPI
ScriptPlace
(
HDC
hdc
,
SCRIPT_CACHE
*
psc
,
const
WORD
*
pwGlyphs
,
int
cGlyphs
,
const
SCRIPT_VISATTR
*
psva
,
SCRIPT_ANALYSIS
*
psa
,
int
*
piAdvance
,
GOFFSET
*
pGoffset
,
ABC
*
pABC
);
HRESULT
WINAPI
ScriptBreak
(
const
WCHAR
*
pwcChars
,
int
cChars
,
const
SCRIPT_ANALYSIS
*
psa
,
SCRIPT_LOGATTR
*
psla
);
...
...
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