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
9afd5507
Commit
9afd5507
authored
Nov 27, 2014
by
Nikolay Sivov
Committed by
Alexandre Julliard
Nov 27, 2014
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
dwrite: Estimate x-height and cap height metrics if they're missing.
parent
298f08d6
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
19 additions
and
9 deletions
+19
-9
opentype.c
dlls/dwrite/opentype.c
+19
-9
No files found.
dlls/dwrite/opentype.c
View file @
9afd5507
...
...
@@ -866,12 +866,18 @@ void opentype_get_font_metrics(const void *os2, const void *head, const void *po
memset
(
metrics
,
0
,
sizeof
(
*
metrics
));
if
(
tt_head
)
{
metrics
->
designUnitsPerEm
=
GET_BE_WORD
(
tt_head
->
unitsPerEm
);
metrics
->
glyphBoxLeft
=
GET_BE_WORD
(
tt_head
->
xMin
);
metrics
->
glyphBoxTop
=
GET_BE_WORD
(
tt_head
->
yMax
);
metrics
->
glyphBoxRight
=
GET_BE_WORD
(
tt_head
->
xMax
);
metrics
->
glyphBoxBottom
=
GET_BE_WORD
(
tt_head
->
yMin
);
}
if
(
tt_os2
)
{
metrics
->
ascent
=
GET_BE_WORD
(
tt_os2
->
usWinAscent
);
metrics
->
descent
=
GET_BE_WORD
(
tt_os2
->
usWinDescent
);
metrics
->
lineGap
=
GET_BE_WORD
(
tt_os2
->
sTypoLineGap
);
metrics
->
capHeight
=
GET_BE_WORD
(
tt_os2
->
sCapHeight
);
metrics
->
xHeight
=
GET_BE_WORD
(
tt_os2
->
sxHeight
);
metrics
->
strikethroughPosition
=
GET_BE_WORD
(
tt_os2
->
yStrikeoutPosition
);
metrics
->
strikethroughThickness
=
GET_BE_WORD
(
tt_os2
->
yStrikeoutSize
);
metrics
->
subscriptPositionX
=
GET_BE_WORD
(
tt_os2
->
ySubscriptXOffset
);
...
...
@@ -883,20 +889,24 @@ void opentype_get_font_metrics(const void *os2, const void *head, const void *po
metrics
->
superscriptPositionY
=
GET_BE_WORD
(
tt_os2
->
ySuperscriptYOffset
);
metrics
->
superscriptSizeX
=
GET_BE_WORD
(
tt_os2
->
ySuperscriptXSize
);
metrics
->
superscriptSizeY
=
GET_BE_WORD
(
tt_os2
->
ySuperscriptYSize
);
}
if
(
tt_head
)
{
metrics
->
designUnitsPerEm
=
GET_BE_WORD
(
tt_head
->
unitsPerEm
);
metrics
->
glyphBoxLeft
=
GET_BE_WORD
(
tt_head
->
xMin
);
metrics
->
glyphBoxTop
=
GET_BE_WORD
(
tt_head
->
yMax
);
metrics
->
glyphBoxRight
=
GET_BE_WORD
(
tt_head
->
xMax
);
metrics
->
glyphBoxBottom
=
GET_BE_WORD
(
tt_head
->
yMin
);
/* version 2 fields */
if
(
tt_os2
->
version
>=
2
)
{
metrics
->
capHeight
=
GET_BE_WORD
(
tt_os2
->
sCapHeight
);
metrics
->
xHeight
=
GET_BE_WORD
(
tt_os2
->
sxHeight
);
}
}
if
(
tt_post
)
{
metrics
->
underlinePosition
=
GET_BE_WORD
(
tt_post
->
underlinePosition
);
metrics
->
underlineThickness
=
GET_BE_WORD
(
tt_post
->
underlineThickness
);
}
/* estimate missing metrics */
if
(
metrics
->
xHeight
==
0
)
metrics
->
xHeight
=
metrics
->
designUnitsPerEm
/
2
;
if
(
metrics
->
capHeight
==
0
)
metrics
->
capHeight
=
metrics
->
designUnitsPerEm
*
7
/
10
;
}
void
opentype_get_font_properties
(
const
void
*
os2
,
const
void
*
head
,
DWRITE_FONT_STRETCH
*
stretch
,
DWRITE_FONT_WEIGHT
*
weight
,
DWRITE_FONT_STYLE
*
style
)
...
...
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