[cff] Add `CFF_CONFIG_OPTION_DARKENING_PARAMETERS' config macro.

* devel/ftoption.h, include/config/ftoption.h
(CFF_CONFIG_OPTION_DARKENING_PARAMETERS): New macro.

* src/cff/cffobjs.c (SET_DARKENING_PARAMETERS,
SET_DARKENING_PARAMETERS_0): New macros.
(cff_driver_init): Use new macros.
This commit is contained in:
Werner Lemberg 2014-10-16 22:54:01 +02:00
parent df3d67e0d7
commit 1a1750fb8a
5 changed files with 85 additions and 15 deletions

View File

@ -1,3 +1,15 @@
2014-10-16 Behdad Esfahbod <behdad@behdad.org>
Werner Lemberg <wl@gnu.org>
[cff] Add `CFF_CONFIG_OPTION_DARKENING_PARAMETERS' config macro.
* devel/ftoption.h, include/config/ftoption.h
(CFF_CONFIG_OPTION_DARKENING_PARAMETERS): New macro.
* src/cff/cffobjs.c (SET_DARKENING_PARAMETERS,
SET_DARKENING_PARAMETERS_0): New macros.
(cff_driver_init): Use new macros.
2014-10-14 Alexei Podtelezhnikov <apodtele@gmail.com>
[truetype] Limit delta shift range.

View File

@ -4,7 +4,7 @@
/* */
/* User-selectable configuration macros (specification only). */
/* */
/* Copyright 1996-2013 by */
/* Copyright 1996-2014 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@ -771,6 +771,23 @@ FT_BEGIN_HEADER
/*************************************************************************/
/*************************************************************************/
/* */
/* Using CFF_CONFIG_OPTION_DARKENING_PARAMETERS it is possible to set up */
/* the default values of the four control points that define the stem */
/* darkening behaviour of the (new) CFF engine. For more details please */
/* read the documentation of the `darkening-parameters' property of the */
/* cff driver module (file `ftcffdrv.h'), which allows the control at */
/* run-time. */
/* */
/* Do *not* undefine this macro! */
/* */
#define CFF_CONFIG_OPTION_DARKENING_PARAMETERS 500, 400, \
1000, 275, \
1667, 275, \
2333, 0
/*************************************************************************/
/* */
/* CFF_CONFIG_OPTION_OLD_ENGINE controls whether the pre-Adobe CFF */

View File

@ -4,7 +4,7 @@
/* */
/* User-selectable configuration macros (specification only). */
/* */
/* Copyright 1996-2013 by */
/* Copyright 1996-2014 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@ -771,6 +771,23 @@ FT_BEGIN_HEADER
/*************************************************************************/
/*************************************************************************/
/* */
/* Using CFF_CONFIG_OPTION_DARKENING_PARAMETERS it is possible to set up */
/* the default values of the four control points that define the stem */
/* darkening behaviour of the (new) CFF engine. For more details please */
/* read the documentation of the `darkening-parameters' property of the */
/* cff driver module (file `ftcffdrv.h'), which allows the control at */
/* run-time. */
/* */
/* Do *not* undefine this macro! */
/* */
#define CFF_CONFIG_OPTION_DARKENING_PARAMETERS 500, 400, \
1000, 275, \
1667, 275, \
2333, 0
/*************************************************************************/
/* */
/* CFF_CONFIG_OPTION_OLD_ENGINE controls whether the pre-Adobe CFF */

View File

@ -4,7 +4,7 @@
/* */
/* FreeType API for controlling the CFF driver (specification only). */
/* */
/* Copyright 2013 by */
/* Copyright 2013, 2014 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@ -212,9 +212,11 @@ FT_BEGIN_HEADER
* stem width >= 2.333px: darkening amount = 0px
* }
*
* and piecewise linear in-between. Using the `darkening-parameters'
* property, these four control points can be changed, as the following
* example demonstrates.
* and piecewise linear in-between. At configuration time, these four
* control points can be set with the macro
* `CFF_CONFIG_OPTION_DARKENING_PARAMETERS'. At runtime, the control
* points can be changed using the `darkening-parameters' property, as
* the following example demonstrates.
*
* {
* FT_Library library;

View File

@ -1049,13 +1049,41 @@
}
#define SET_DARKENING_PARAMETERS_0( driver, \
x1, y1, \
x2, y2, \
x3, y3, \
x4, y4 ) \
FT_BEGIN_STMNT \
/* checks copied from `cff_property_set' in `cffdrivr.c' */ \
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; \
FT_END_STMNT
#define SET_DARKENING_PARAMETERS( driver, params ) \
SET_DARKENING_PARAMETERS_0( driver, params )
FT_LOCAL_DEF( FT_Error )
cff_driver_init( FT_Module module ) /* CFF_Driver */
{
CFF_Driver driver = (CFF_Driver)module;
/* set default property values, cf `ftcffdrv.h' */
/* set default property values, cf. `ftcffdrv.h' */
#ifdef CFF_CONFIG_OPTION_OLD_ENGINE
driver->hinting_engine = FT_CFF_HINTING_FREETYPE;
#else
@ -1063,14 +1091,8 @@
#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;
SET_DARKENING_PARAMETERS( driver,
CFF_CONFIG_OPTION_DARKENING_PARAMETERS );
return FT_Err_Ok;
}