[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.
This commit is contained in:
Werner Lemberg 2016-02-05 12:47:29 +01:00
parent 9cc2d46785
commit 710ac3dda0
2 changed files with 15 additions and 5 deletions

View File

@ -1,3 +1,11 @@
2016-02-05 Werner Lemberg <wl@gnu.org>
[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 <wl@gnu.org>
[cff] Fix handling of face_index == -1 for pure CFF.

View File

@ -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 )