Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
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-cw
Commits
a99e4665
Commit
a99e4665
authored
May 25, 2020
by
Nikolay Sivov
Committed by
Alexandre Julliard
May 25, 2020
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
dwrite: Set glyph class for all initial glyphs.
Signed-off-by:
Nikolay Sivov
<
nsivov@codeweavers.com
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
4490f8a2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
39 additions
and
0 deletions
+39
-0
dwrite_private.h
dlls/dwrite/dwrite_private.h
+1
-0
opentype.c
dlls/dwrite/opentype.c
+38
-0
No files found.
dlls/dwrite/dwrite_private.h
View file @
a99e4665
...
...
@@ -465,6 +465,7 @@ struct scriptshaping_cache
struct
shaping_glyph_info
{
unsigned
int
mask
;
unsigned
int
props
;
};
struct
scriptshaping_context
...
...
dlls/dwrite/opentype.c
View file @
a99e4665
...
...
@@ -494,6 +494,13 @@ enum gsub_gpos_lookup_flags
LOOKUP_FLAG_IGNORE_MASK
=
0xe
,
};
enum
glyph_prop_flags
{
GLYPH_PROP_BASE
=
LOOKUP_FLAG_IGNORE_BASE
,
GLYPH_PROP_LIGATURE
=
LOOKUP_FLAG_IGNORE_LIGATURES
,
GLYPH_PROP_MARK
=
LOOKUP_FLAG_IGNORE_MARKS
,
};
enum
gpos_lookup_type
{
GPOS_LOOKUP_SINGLE_ADJUSTMENT
=
1
,
...
...
@@ -4684,6 +4691,36 @@ static unsigned int unicode_get_mirrored_char(unsigned int codepoint)
return
mirror
?
mirror
:
codepoint
;
}
static
void
opentype_subst_set_glyph_props
(
struct
scriptshaping_context
*
context
,
unsigned
int
g
)
{
struct
scriptshaping_cache
*
cache
=
context
->
cache
;
unsigned
int
glyph_class
=
0
,
props
;
if
(
cache
->
gdef
.
classdef
)
{
glyph_class
=
opentype_layout_get_glyph_class
(
&
cache
->
gdef
.
table
,
cache
->
gdef
.
classdef
,
context
->
u
.
subst
.
glyphs
[
g
]);
}
switch
(
glyph_class
)
{
case
GDEF_CLASS_BASE
:
props
=
GLYPH_PROP_BASE
;
break
;
case
GDEF_CLASS_LIGATURE
:
props
=
GLYPH_PROP_LIGATURE
;
break
;
case
GDEF_CLASS_MARK
:
props
=
GLYPH_PROP_MARK
;
context
->
u
.
subst
.
glyph_props
[
g
].
isDiacritic
=
1
;
context
->
u
.
subst
.
glyph_props
[
g
].
isZeroWidthSpace
=
1
;
break
;
default:
props
=
0
;
}
context
->
glyph_infos
[
g
].
props
=
props
;
}
static
void
opentype_get_nominal_glyphs
(
struct
scriptshaping_context
*
context
,
const
struct
shaping_features
*
features
)
{
unsigned
int
rtlm_mask
=
shaping_features_get_mask
(
features
,
DWRITE_MAKE_OPENTYPE_TAG
(
'r'
,
't'
,
'l'
,
'm'
),
NULL
);
...
...
@@ -4724,6 +4761,7 @@ static void opentype_get_nominal_glyphs(struct scriptshaping_context *context, c
context
->
u
.
subst
.
glyphs
[
g
]
=
font
->
get_glyph
(
context
->
cache
->
context
,
codepoint
);
context
->
u
.
subst
.
glyph_props
[
g
].
justification
=
SCRIPT_JUSTIFY_CHARACTER
;
context
->
u
.
subst
.
glyph_props
[
g
].
isClusterStart
=
1
;
opentype_subst_set_glyph_props
(
context
,
g
);
context
->
glyph_count
++
;
clustermap
[
i
]
=
i
;
...
...
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