summarylogtreecommitdiffstats
path: root/fix_metrics_on_size_request.patch
blob: 6999f88ec1015a6b4e399292dc9cbb2f2774078e (plain)
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 ) );