From 710ac3dda012872a9e7ced8c69cc9c6f2d291bb8 Mon Sep 17 00:00:00 2001 From: Werner Lemberg Date: Fri, 5 Feb 2016 12:47:29 +0100 Subject: [PATCH] [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 38a3eb042..6a0bf3bf8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2016-02-05 Werner Lemberg + + [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 [cff] Fix handling of face_index == -1 for pure CFF. diff --git a/src/base/ftadvanc.c b/src/base/ftadvanc.c index 4581ca526..2bfbe8a23 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 )