freetype-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[freetype2] master b052270 2/2: [truetype] Actually scale varied CVT val


From: Werner LEMBERG
Subject: [freetype2] master b052270 2/2: [truetype] Actually scale varied CVT values.
Date: Thu, 16 May 2019 06:56:12 -0400 (EDT)

branch: master
commit b0522701f890372ff9f3d921cf212bccd1f64400
Author: Werner Lemberg <address@hidden>
Commit: Werner Lemberg <address@hidden>

    [truetype] Actually scale varied CVT values.
    
    Up to now, only the unscaled CVT values were varied; in other words,
    the `CVAR' data was never used for bytecode hinting.
    
    * src/truetype/ttgxvar.c (tt_cvt_ready_iterator): New auxiliary
    function.
    (tt_face_vary_cvt): Use it to trigger rescaling of CVT values.
---
 ChangeLog              | 11 +++++++++++
 docs/CHANGES           |  6 ++++++
 src/truetype/ttgxvar.c | 23 +++++++++++++++++++++++
 3 files changed, 40 insertions(+)

diff --git a/ChangeLog b/ChangeLog
index 52ceba8..8797510 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,16 @@
 2019-05-16  Werner Lemberg  <address@hidden>
 
+       [truetype] Actually scale varied CVT values.
+
+       Up to now, only the unscaled CVT values were varied; in other words,
+       the `CVAR' data was never used for bytecode hinting.
+
+       * src/truetype/ttgxvar.c (tt_cvt_ready_iterator): New auxiliary
+       function.
+       (tt_face_vary_cvt): Use it to trigger rescaling of CVT values.
+
+2019-05-16  Werner Lemberg  <address@hidden>
+
        [truetype] Use 26.6 format for storing unscaled CVT values.
 
        If `CVAR' data is applied to variation fonts, fractional values are
diff --git a/docs/CHANGES b/docs/CHANGES
index 9f001a9..7d91448 100644
--- a/docs/CHANGES
+++ b/docs/CHANGES
@@ -3,6 +3,9 @@ CHANGES BETWEEN 2.10.0 and 2.10.1
 
   I. IMPORTANT BUG FIXES
 
+  - The bytecode hinting of OpenType variation fonts was flawed, since
+    the data in the `CVAR' table wasn't correctly applied.
+
 
   II. MISCELLANEOUS
 
@@ -19,6 +22,9 @@ CHANGES BETWEEN 2.10.0 and 2.10.1
     twice in a row, the function  returned an incorrect error code the
     second time.
 
+  - Increased  precision  while  computing  OpenType  font   variation
+    instances.
+
 
 ======================================================================
 
diff --git a/src/truetype/ttgxvar.c b/src/truetype/ttgxvar.c
index 00b91f6..1c24bc2 100644
--- a/src/truetype/ttgxvar.c
+++ b/src/truetype/ttgxvar.c
@@ -3113,6 +3113,21 @@
   /*************************************************************************/
 
 
+  static FT_Error
+  tt_cvt_ready_iterator( FT_ListNode  node,
+                         void*        user )
+  {
+    TT_Size  size = (TT_Size)node->data;
+
+    FT_UNUSED( user );
+
+
+    size->cvt_ready = -1;
+
+    return FT_Err_Ok;
+  }
+
+
   /**************************************************************************
    *
    * @Function:
@@ -3143,6 +3158,8 @@
     FT_Error   error;
     FT_Memory  memory = stream->memory;
 
+    FT_Face  root = &face->root;
+
     FT_ULong  table_start;
     FT_ULong  table_len;
 
@@ -3451,6 +3468,12 @@
     FT_FREE( im_end_coords );
     FT_FREE( cvt_deltas );
 
+    /* iterate over all FT_Size objects and set `cvt_ready' to -1 */
+    /* to trigger rescaling of all CVT values                     */
+    FT_List_Iterate( &root->sizes_list,
+                     tt_cvt_ready_iterator,
+                     NULL );
+
     return error;
   }
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]