freetype-commit
[Top][All Lists]
Advanced

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

[freetype2] master 7d3dfcd 1/3: Fix incorrect advance width scaling (#52


From: Werner LEMBERG
Subject: [freetype2] master 7d3dfcd 1/3: Fix incorrect advance width scaling (#52683).
Date: Mon, 18 Dec 2017 01:32:09 -0500 (EST)

branch: master
commit 7d3dfcd4a5255a7b00bcf0dbabb85b245bedb581
Author: Jonathan Kew <address@hidden>
Commit: Werner Lemberg <address@hidden>

    Fix incorrect advance width scaling (#52683).
    
    * src/base/ftadvance.c (FT_Get_Advances): Always respect the
    FT_LOAD_NO_SCALE flag if present.
---
 ChangeLog           |  7 +++++++
 src/base/ftadvanc.c | 14 +++++++++-----
 2 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 78be02a..82830ad 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2017-12-17  Jonathan Kew  <address@hidden>
+
+       Fix incorrect advance width scaling (#52683).
+
+       * src/base/ftadvance.c (FT_Get_Advances): Always respect the
+       FT_LOAD_NO_SCALE flag if present.
+
 2017-12-16  Alexei Podtelezhnikov  <address@hidden>
 
        * builds/windows/vc2010/freetype.vcxproj: AfterBuild copy.
diff --git a/src/base/ftadvanc.c b/src/base/ftadvanc.c
index 1557607..d066142 100644
--- a/src/base/ftadvanc.c
+++ b/src/base/ftadvanc.c
@@ -116,9 +116,12 @@
                    FT_Int32   flags,
                    FT_Fixed  *padvances )
   {
+    FT_Error  error = FT_Err_Ok;
+
     FT_Face_GetAdvancesFunc  func;
-    FT_UInt                  num, end, nn;
-    FT_Error                 error = FT_Err_Ok;
+
+    FT_UInt  num, end, nn;
+    FT_Int   factor;
 
 
     if ( !face )
@@ -152,16 +155,17 @@
       return FT_THROW( Unimplemented_Feature );
 
     flags |= (FT_UInt32)FT_LOAD_ADVANCE_ONLY;
+    factor = ( flags & FT_LOAD_NO_SCALE ) ? 1 : 1024;
     for ( nn = 0; nn < count; nn++ )
     {
       error = FT_Load_Glyph( face, start + nn, flags );
       if ( error )
         break;
 
-      /* scale from 26.6 to 16.16 */
+      /* scale from 26.6 to 16.16, unless NO_SCALE was requested */
       padvances[nn] = ( flags & FT_LOAD_VERTICAL_LAYOUT )
-                      ? face->glyph->advance.y * 1024
-                      : face->glyph->advance.x * 1024;
+                      ? face->glyph->advance.y * factor
+                      : face->glyph->advance.x * factor;
     }
 
     return error;



reply via email to

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