freetype-commit
[Top][All Lists]
Advanced

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

[freetype2] master 710ac3d 2/2: [base] Fix advance width loading for MM


From: Werner LEMBERG
Subject: [freetype2] master 710ac3d 2/2: [base] Fix advance width loading for MM and GX fonts (#47064).
Date: Fri, 05 Feb 2016 11:52:13 +0000

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

    [base] Fix advance width loading for MM and GX fonts (#47064).
    
    * src/base/ftadvanc.c (LOAD_ADVANCE_FAST_CHECK): Return false for
    MM and GX fonts.
    Update callers.
---
 ChangeLog           |    8 ++++++++
 src/base/ftadvanc.c |   12 +++++++-----
 2 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 38a3eb0..6a0bf3b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2016-02-05  Werner Lemberg  <address@hidden>
+
+       [base] Fix advance width loading for MM and GX fonts (#47064).
+
+       * src/base/ftadvanc.c (LOAD_ADVANCE_FAST_CHECK): Return false for
+       MM and GX fonts.
+       Update callers.
+
 2016-02-03  Werner Lemberg  <address@hidden>
 
        [cff] Fix handling of face_index == -1 for pure CFF.
diff --git a/src/base/ftadvanc.c b/src/base/ftadvanc.c
index 4581ca5..2bfbe8a 100644
--- a/src/base/ftadvanc.c
+++ b/src/base/ftadvanc.c
@@ -60,10 +60,12 @@
    /*  - unscaled load                                             */
    /*  - unhinted load                                             */
    /*  - light-hinted load                                         */
+   /*  - neither a MM nor a GX font                                */
 
-#define LOAD_ADVANCE_FAST_CHECK( flags )                            \
-          ( flags & ( FT_LOAD_NO_SCALE | FT_LOAD_NO_HINTING )    || \
-            FT_LOAD_TARGET_MODE( flags ) == FT_RENDER_MODE_LIGHT )
+#define LOAD_ADVANCE_FAST_CHECK( face, flags )                          \
+          ( ( flags & ( FT_LOAD_NO_SCALE | FT_LOAD_NO_HINTING )    ||   \
+              FT_LOAD_TARGET_MODE( flags ) == FT_RENDER_MODE_LIGHT ) && \
+            !FT_HAS_MULTIPLE_MASTERS( face )                         )
 
 
   /* documentation is in ftadvanc.h */
@@ -87,7 +89,7 @@
       return FT_THROW( Invalid_Glyph_Index );
 
     func = face->driver->clazz->get_advances;
-    if ( func && LOAD_ADVANCE_FAST_CHECK( flags ) )
+    if ( func && LOAD_ADVANCE_FAST_CHECK( face, flags ) )
     {
       FT_Error  error;
 
@@ -133,7 +135,7 @@
       return FT_Err_Ok;
 
     func = face->driver->clazz->get_advances;
-    if ( func && LOAD_ADVANCE_FAST_CHECK( flags ) )
+    if ( func && LOAD_ADVANCE_FAST_CHECK( face, flags ) )
     {
       error = func( face, start, count, flags, padvances );
       if ( !error )



reply via email to

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