diff --git a/src/cff/cffobjs.c b/src/cff/cffobjs.c index cac4ac2..be75149 100644 --- a/src/cff/cffobjs.c +++ b/src/cff/cffobjs.c @@ -1063,14 +1063,32 @@ #endif driver->no_stem_darkening = FALSE; - driver->darken_params[0] = 500; - driver->darken_params[1] = 400; - driver->darken_params[2] = 1000; - driver->darken_params[3] = 275; - driver->darken_params[4] = 1667; - driver->darken_params[5] = 275; - driver->darken_params[6] = 2333; - driver->darken_params[7] = 0; +#ifndef CFF_CONFIG_OPTION_DARKENING_PARAMETERS +#define CFF_CONFIG_OPTION_DARKENING_PARAMETERS 500,400, 1000,275, 1667,275, 2333,0 +#endif + +#define SET_DARKENING_PARAMETERS0(x1,y1,x2,y2,x3,y3,x4,y4) \ + do { \ + /* Checks copied from cffdrivr:cff_property_set(). */ \ + typedef int static_assert_darkening_parameters[ \ + ( 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 ) ? -1 : +1]; \ + 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; \ + } while (0); +#define SET_DARKENING_PARAMETERS(params) SET_DARKENING_PARAMETERS0(params) + + SET_DARKENING_PARAMETERS(CFF_CONFIG_OPTION_DARKENING_PARAMETERS); + +#undef SET_DARKENING_PARAMETERS return FT_Err_Ok; }