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; |