| Index: third_party/freetype/src/cff/cffdrivr.c
|
| diff --git a/core/src/fxge/fx_freetype/fxft2.5.01/src/cff/cffdrivr.c b/third_party/freetype/src/cff/cffdrivr.c
|
| similarity index 91%
|
| rename from core/src/fxge/fx_freetype/fxft2.5.01/src/cff/cffdrivr.c
|
| rename to third_party/freetype/src/cff/cffdrivr.c
|
| index 84f305c90adaaf4d5fd7c6ef30884c5fcfd9a380..dde7d4488011d525e61f1c605d5fb302fb784206 100644
|
| --- a/core/src/fxge/fx_freetype/fxft2.5.01/src/cff/cffdrivr.c
|
| +++ b/third_party/freetype/src/cff/cffdrivr.c
|
| @@ -16,15 +16,15 @@
|
| /***************************************************************************/
|
|
|
|
|
| -#include "../../include/ft2build.h"
|
| -#include "../../include/freetype/freetype.h"
|
| -#include "../../include/freetype/internal/ftdebug.h"
|
| -#include "../../include/freetype/internal/ftstream.h"
|
| -#include "../../include/freetype/internal/sfnt.h"
|
| -#include "../../include/freetype/internal/services/svcid.h"
|
| -#include "../../include/freetype/internal/services/svpsinfo.h"
|
| -#include "../../include/freetype/internal/services/svpostnm.h"
|
| -#include "../../include/freetype/internal/services/svttcmap.h"
|
| +#include <ft2build.h>
|
| +#include FT_FREETYPE_H
|
| +#include FT_INTERNAL_DEBUG_H
|
| +#include FT_INTERNAL_STREAM_H
|
| +#include FT_INTERNAL_SFNT_H
|
| +#include FT_SERVICE_CID_H
|
| +#include FT_SERVICE_POSTSCRIPT_INFO_H
|
| +#include FT_SERVICE_POSTSCRIPT_NAME_H
|
| +#include FT_SERVICE_TT_CMAP_H
|
|
|
| #include "cffdrivr.h"
|
| #include "cffgload.h"
|
| @@ -35,11 +35,10 @@
|
| #include "cfferrs.h"
|
| #include "cffpic.h"
|
|
|
| -#include "../../include/freetype/internal/services/svxf86nm.h"
|
| -#include "../../include/freetype/internal/services/svgldict.h"
|
| -#include "../../include/freetype/internal/services/svprop.h"
|
| -#include "../../include/freetype/ftcffdrv.h"
|
| -
|
| +#include FT_SERVICE_XFREE86_NAME_H
|
| +#include FT_SERVICE_GLYPH_DICT_H
|
| +#include FT_SERVICE_PROPERTIES_H
|
| +#include FT_CFF_DRIVER_H
|
|
|
|
|
| /*************************************************************************/
|
| @@ -165,6 +164,8 @@
|
| if ( !slot )
|
| return FT_THROW( Invalid_Slot_Handle );
|
|
|
| + FT_TRACE1(( "cff_glyph_load: glyph index %d\n", glyph_index ));
|
| +
|
| /* check whether we want a scaled outline or bitmap */
|
| if ( !size )
|
| load_flags |= FT_LOAD_NO_SCALE | FT_LOAD_NO_HINTING;
|
| @@ -587,7 +588,38 @@
|
| CFF_Driver driver = (CFF_Driver)module;
|
|
|
|
|
| - if ( !ft_strcmp( property_name, "hinting-engine" ) )
|
| + if ( !ft_strcmp( property_name, "darkening-parameters" ) )
|
| + {
|
| + FT_Int* darken_params = (FT_Int*)value;
|
| +
|
| + FT_Int x1 = darken_params[0];
|
| + FT_Int y1 = darken_params[1];
|
| + FT_Int x2 = darken_params[2];
|
| + FT_Int y2 = darken_params[3];
|
| + FT_Int x3 = darken_params[4];
|
| + FT_Int y3 = darken_params[5];
|
| + FT_Int x4 = darken_params[6];
|
| + FT_Int y4 = darken_params[7];
|
| +
|
| +
|
| + if ( x1 < 0 || x2 < 0 || x3 < 0 || x4 < 0 ||
|
| + y1 < 0 || y2 < 0 || y3 < 0 || y4 < 0 ||
|
| + x1 > x2 || x2 > x3 || x3 > x4 ||
|
| + y1 > 500 || y2 > 500 || y3 > 500 || y4 > 500 )
|
| + return FT_THROW( Invalid_Argument );
|
| +
|
| + driver->darken_params[0] = x1;
|
| + driver->darken_params[1] = y1;
|
| + driver->darken_params[2] = x2;
|
| + driver->darken_params[3] = y2;
|
| + driver->darken_params[4] = x3;
|
| + driver->darken_params[5] = y3;
|
| + driver->darken_params[6] = x4;
|
| + driver->darken_params[7] = y4;
|
| +
|
| + return error;
|
| + }
|
| + else if ( !ft_strcmp( property_name, "hinting-engine" ) )
|
| {
|
| FT_UInt* hinting_engine = (FT_UInt*)value;
|
|
|
| @@ -625,13 +657,28 @@
|
| FT_Error error = FT_Err_Ok;
|
| CFF_Driver driver = (CFF_Driver)module;
|
|
|
| - FT_UInt hinting_engine = driver->hinting_engine;
|
| - FT_Bool no_stem_darkening = driver->no_stem_darkening;
|
|
|
| + if ( !ft_strcmp( property_name, "darkening-parameters" ) )
|
| + {
|
| + FT_Int* darken_params = driver->darken_params;
|
| + FT_Int* val = (FT_Int*)value;
|
| +
|
| +
|
| + val[0] = darken_params[0];
|
| + val[1] = darken_params[1];
|
| + val[2] = darken_params[2];
|
| + val[3] = darken_params[3];
|
| + val[4] = darken_params[4];
|
| + val[5] = darken_params[5];
|
| + val[6] = darken_params[6];
|
| + val[7] = darken_params[7];
|
|
|
| - if ( !ft_strcmp( property_name, "hinting-engine" ) )
|
| + return error;
|
| + }
|
| + else if ( !ft_strcmp( property_name, "hinting-engine" ) )
|
| {
|
| - FT_UInt* val = (FT_UInt*)value;
|
| + FT_UInt hinting_engine = driver->hinting_engine;
|
| + FT_UInt* val = (FT_UInt*)value;
|
|
|
|
|
| *val = hinting_engine;
|
| @@ -640,7 +687,8 @@
|
| }
|
| else if ( !ft_strcmp( property_name, "no-stem-darkening" ) )
|
| {
|
| - FT_Bool* val = (FT_Bool*)value;
|
| + FT_Bool no_stem_darkening = driver->no_stem_darkening;
|
| + FT_Bool* val = (FT_Bool*)value;
|
|
|
|
|
| *val = no_stem_darkening;
|
|
|