1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
--- a/src/truetype/ttdriver.c 2017-04-29 04:38:17 UTC
+++ b/src/truetype/ttdriver.c
@@ -357,6 +357,8 @@
if ( FT_IS_SCALABLE( size->face ) )
{
error = tt_size_reset( ttsize, 0 );
+ if ( !error )
+ ttsize->root.metrics = *ttsize->metrics;
#ifdef TT_USE_BYTECODE_INTERPRETER
/* for the `MPS' bytecode instruction we need the point size */
--- a/src/truetype/ttobjs.c 2017-05-07 11:05:56 UTC
+++ b/src/truetype/ttobjs.c
@@ -1262,6 +1262,13 @@
/* */
if ( face->header.Flags & 8 )
{
+ if ( !only_height )
+ {
+ size_metrics->x_scale = FT_DivFix( size_metrics->x_ppem << 6,
+ face->root.units_per_EM );
+ size_metrics->y_scale = FT_DivFix( size_metrics->y_ppem << 6,
+ face->root.units_per_EM );
+ }
/* the TT spec always asks for ROUND, not FLOOR or CEIL */
size_metrics->ascender = FT_PIX_ROUND(
FT_MulFix( face->root.ascender,
@@ -1283,11 +1290,12 @@
{
/* base scaling values on integer ppem values, */
/* as mandated by the TrueType specification */
+/*
size_metrics->x_scale = FT_DivFix( size_metrics->x_ppem << 6,
face->root.units_per_EM );
size_metrics->y_scale = FT_DivFix( size_metrics->y_ppem << 6,
face->root.units_per_EM );
-
+*/
size_metrics->max_advance = FT_PIX_ROUND(
FT_MulFix( face->root.max_advance_width,
size_metrics->x_scale ) );
|