Add function `ft_property_string_set'.
This is a preparation for handling an `FREETYPE_PROPERTIES' environment variable to control (some) driver properties. No change in functionality. * src/base/ftobjs.c (ft_property_do): Add `value_is_string' parameter. (ft_property_string_set): New function. (FT_Property_Set, FT_Property_Get): Updated. * include/freetype/internal/ftobjs.h: Updated. * include/freetype/internal/services/svprop.h (FT_Properties_SetFunc): Add `value_is_string' parameter. * src/autofit/afmodule.c (af_property_set), src/cff/cffdrivr.c (cff_property_set), src/truetype/ttdriver.c (tt_property_set): Updated, emitting an error currently if `value_is_string' is set.
This commit is contained in:
parent
83c877f11c
commit
c3beb30a21
23
ChangeLog
23
ChangeLog
|
@ -1,3 +1,26 @@
|
||||||
|
2016-07-09 Werner Lemberg <wl@gnu.org>
|
||||||
|
|
||||||
|
Add function `ft_property_string_set'.
|
||||||
|
|
||||||
|
This is a preparation for handling an `FREETYPE_PROPERTIES'
|
||||||
|
environment variable to control (some) driver properties.
|
||||||
|
|
||||||
|
No change in functionality.
|
||||||
|
|
||||||
|
* src/base/ftobjs.c (ft_property_do): Add `value_is_string'
|
||||||
|
parameter.
|
||||||
|
(ft_property_string_set): New function.
|
||||||
|
(FT_Property_Set, FT_Property_Get): Updated.
|
||||||
|
|
||||||
|
* include/freetype/internal/ftobjs.h: Updated.
|
||||||
|
|
||||||
|
* include/freetype/internal/services/svprop.h
|
||||||
|
(FT_Properties_SetFunc): Add `value_is_string' parameter.
|
||||||
|
|
||||||
|
* src/autofit/afmodule.c (af_property_set), src/cff/cffdrivr.c
|
||||||
|
(cff_property_set), src/truetype/ttdriver.c (tt_property_set):
|
||||||
|
Updated, emitting an error currently if `value_is_string' is set.
|
||||||
|
|
||||||
2016-07-09 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
|
2016-07-09 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
|
||||||
|
|
||||||
[mac] Fix ftexport.sym target in Jamfile.
|
[mac] Fix ftexport.sym target in Jamfile.
|
||||||
|
|
|
@ -532,6 +532,12 @@ FT_BEGIN_HEADER
|
||||||
ft_module_get_service( FT_Module module,
|
ft_module_get_service( FT_Module module,
|
||||||
const char* service_id );
|
const char* service_id );
|
||||||
|
|
||||||
|
FT_BASE( FT_Error )
|
||||||
|
ft_property_string_set( FT_Library library,
|
||||||
|
const FT_String* module_name,
|
||||||
|
const FT_String* property_name,
|
||||||
|
FT_String* value );
|
||||||
|
|
||||||
/* */
|
/* */
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,8 @@ FT_BEGIN_HEADER
|
||||||
typedef FT_Error
|
typedef FT_Error
|
||||||
(*FT_Properties_SetFunc)( FT_Module module,
|
(*FT_Properties_SetFunc)( FT_Module module,
|
||||||
const char* property_name,
|
const char* property_name,
|
||||||
const void* value );
|
const void* value,
|
||||||
|
FT_Bool value_is_string );
|
||||||
|
|
||||||
typedef FT_Error
|
typedef FT_Error
|
||||||
(*FT_Properties_GetFunc)( FT_Module module,
|
(*FT_Properties_GetFunc)( FT_Module module,
|
||||||
|
|
|
@ -107,7 +107,8 @@
|
||||||
static FT_Error
|
static FT_Error
|
||||||
af_property_set( FT_Module ft_module,
|
af_property_set( FT_Module ft_module,
|
||||||
const char* property_name,
|
const char* property_name,
|
||||||
const void* value )
|
const void* value,
|
||||||
|
FT_Bool value_is_string )
|
||||||
{
|
{
|
||||||
FT_Error error = FT_Err_Ok;
|
FT_Error error = FT_Err_Ok;
|
||||||
AF_Module module = (AF_Module)ft_module;
|
AF_Module module = (AF_Module)ft_module;
|
||||||
|
@ -115,10 +116,14 @@
|
||||||
|
|
||||||
if ( !ft_strcmp( property_name, "fallback-script" ) )
|
if ( !ft_strcmp( property_name, "fallback-script" ) )
|
||||||
{
|
{
|
||||||
FT_UInt* fallback_script = (FT_UInt*)value;
|
FT_UInt* fallback_script;
|
||||||
|
FT_UInt ss;
|
||||||
|
|
||||||
FT_UInt ss;
|
|
||||||
|
|
||||||
|
if ( value_is_string )
|
||||||
|
return FT_THROW( Invalid_Argument );
|
||||||
|
|
||||||
|
fallback_script = (FT_UInt*)value;
|
||||||
|
|
||||||
/* We translate the fallback script to a fallback style that uses */
|
/* We translate the fallback script to a fallback style that uses */
|
||||||
/* `fallback-script' as its script and `AF_COVERAGE_NONE' as its */
|
/* `fallback-script' as its script and `AF_COVERAGE_NONE' as its */
|
||||||
|
@ -147,19 +152,29 @@
|
||||||
}
|
}
|
||||||
else if ( !ft_strcmp( property_name, "default-script" ) )
|
else if ( !ft_strcmp( property_name, "default-script" ) )
|
||||||
{
|
{
|
||||||
FT_UInt* default_script = (FT_UInt*)value;
|
FT_UInt* default_script;
|
||||||
|
|
||||||
|
|
||||||
|
if ( value_is_string )
|
||||||
|
return FT_THROW( Invalid_Argument );
|
||||||
|
|
||||||
|
default_script = (FT_UInt*)value;
|
||||||
|
|
||||||
module->default_script = *default_script;
|
module->default_script = *default_script;
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
else if ( !ft_strcmp( property_name, "increase-x-height" ) )
|
else if ( !ft_strcmp( property_name, "increase-x-height" ) )
|
||||||
{
|
{
|
||||||
FT_Prop_IncreaseXHeight* prop = (FT_Prop_IncreaseXHeight*)value;
|
FT_Prop_IncreaseXHeight* prop;
|
||||||
AF_FaceGlobals globals;
|
AF_FaceGlobals globals;
|
||||||
|
|
||||||
|
|
||||||
|
if ( value_is_string )
|
||||||
|
return FT_THROW( Invalid_Argument );
|
||||||
|
|
||||||
|
prop = (FT_Prop_IncreaseXHeight*)value;
|
||||||
|
|
||||||
error = af_property_get_face_globals( prop->face, &globals, module );
|
error = af_property_get_face_globals( prop->face, &globals, module );
|
||||||
if ( !error )
|
if ( !error )
|
||||||
globals->increase_x_height = prop->limit;
|
globals->increase_x_height = prop->limit;
|
||||||
|
@ -169,9 +184,14 @@
|
||||||
#ifdef AF_CONFIG_OPTION_USE_WARPER
|
#ifdef AF_CONFIG_OPTION_USE_WARPER
|
||||||
else if ( !ft_strcmp( property_name, "warping" ) )
|
else if ( !ft_strcmp( property_name, "warping" ) )
|
||||||
{
|
{
|
||||||
FT_Bool* warping = (FT_Bool*)value;
|
FT_Bool* warping;
|
||||||
|
|
||||||
|
|
||||||
|
if ( value_is_string )
|
||||||
|
return FT_THROW( Invalid_Argument );
|
||||||
|
|
||||||
|
warping = (FT_Bool*)value;
|
||||||
|
|
||||||
module->warping = *warping;
|
module->warping = *warping;
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
|
@ -179,17 +199,23 @@
|
||||||
#endif /* AF_CONFIG_OPTION_USE_WARPER */
|
#endif /* AF_CONFIG_OPTION_USE_WARPER */
|
||||||
else if ( !ft_strcmp( property_name, "darkening-parameters" ) )
|
else if ( !ft_strcmp( property_name, "darkening-parameters" ) )
|
||||||
{
|
{
|
||||||
FT_Int* darken_params = (FT_Int*)value;
|
FT_Int* darken_params;
|
||||||
|
FT_Int x1, y1, x2, y2, x3, y3, x4, y4;
|
||||||
|
|
||||||
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 ( value_is_string )
|
||||||
|
return FT_THROW( Invalid_Argument );
|
||||||
|
|
||||||
|
darken_params = (FT_Int*)value;
|
||||||
|
|
||||||
|
x1 = darken_params[0];
|
||||||
|
y1 = darken_params[1];
|
||||||
|
x2 = darken_params[2];
|
||||||
|
y2 = darken_params[3];
|
||||||
|
x3 = darken_params[4];
|
||||||
|
y3 = darken_params[5];
|
||||||
|
x4 = darken_params[6];
|
||||||
|
y4 = darken_params[7];
|
||||||
|
|
||||||
if ( x1 < 0 || x2 < 0 || x3 < 0 || x4 < 0 ||
|
if ( x1 < 0 || x2 < 0 || x3 < 0 || x4 < 0 ||
|
||||||
y1 < 0 || y2 < 0 || y3 < 0 || y4 < 0 ||
|
y1 < 0 || y2 < 0 || y3 < 0 || y4 < 0 ||
|
||||||
|
@ -210,9 +236,14 @@
|
||||||
}
|
}
|
||||||
else if ( !ft_strcmp( property_name, "no-stem-darkening" ) )
|
else if ( !ft_strcmp( property_name, "no-stem-darkening" ) )
|
||||||
{
|
{
|
||||||
FT_Bool* no_stem_darkening = (FT_Bool*)value;
|
FT_Bool* no_stem_darkening;
|
||||||
|
|
||||||
|
|
||||||
|
if ( value_is_string )
|
||||||
|
return FT_THROW( Invalid_Argument );
|
||||||
|
|
||||||
|
no_stem_darkening = (FT_Bool*)value;
|
||||||
|
|
||||||
module->no_stem_darkening = *no_stem_darkening;
|
module->no_stem_darkening = *no_stem_darkening;
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
|
|
|
@ -4564,7 +4564,8 @@
|
||||||
const FT_String* module_name,
|
const FT_String* module_name,
|
||||||
const FT_String* property_name,
|
const FT_String* property_name,
|
||||||
void* value,
|
void* value,
|
||||||
FT_Bool set )
|
FT_Bool set,
|
||||||
|
FT_Bool value_is_string )
|
||||||
{
|
{
|
||||||
FT_Module* cur;
|
FT_Module* cur;
|
||||||
FT_Module* limit;
|
FT_Module* limit;
|
||||||
|
@ -4634,8 +4635,13 @@
|
||||||
return FT_THROW( Unimplemented_Feature );
|
return FT_THROW( Unimplemented_Feature );
|
||||||
}
|
}
|
||||||
|
|
||||||
return set ? service->set_property( cur[0], property_name, value )
|
return set ? service->set_property( cur[0],
|
||||||
: service->get_property( cur[0], property_name, value );
|
property_name,
|
||||||
|
value,
|
||||||
|
value_is_string )
|
||||||
|
: service->get_property( cur[0],
|
||||||
|
property_name,
|
||||||
|
value );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -4651,7 +4657,8 @@
|
||||||
module_name,
|
module_name,
|
||||||
property_name,
|
property_name,
|
||||||
(void*)value,
|
(void*)value,
|
||||||
TRUE );
|
TRUE,
|
||||||
|
FALSE );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -4667,10 +4674,29 @@
|
||||||
module_name,
|
module_name,
|
||||||
property_name,
|
property_name,
|
||||||
value,
|
value,
|
||||||
|
FALSE,
|
||||||
FALSE );
|
FALSE );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* this variant is used for handling the FREETYPE_PROPERTIES */
|
||||||
|
/* environment variable */
|
||||||
|
|
||||||
|
FT_BASE_DEF( FT_Error )
|
||||||
|
ft_property_string_set( FT_Library library,
|
||||||
|
const FT_String* module_name,
|
||||||
|
const FT_String* property_name,
|
||||||
|
FT_String* value )
|
||||||
|
{
|
||||||
|
return ft_property_do( library,
|
||||||
|
module_name,
|
||||||
|
property_name,
|
||||||
|
(void*)value,
|
||||||
|
TRUE,
|
||||||
|
TRUE );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
|
|
|
@ -659,7 +659,8 @@
|
||||||
static FT_Error
|
static FT_Error
|
||||||
cff_property_set( FT_Module module, /* CFF_Driver */
|
cff_property_set( FT_Module module, /* CFF_Driver */
|
||||||
const char* property_name,
|
const char* property_name,
|
||||||
const void* value )
|
const void* value,
|
||||||
|
FT_Bool value_is_string )
|
||||||
{
|
{
|
||||||
FT_Error error = FT_Err_Ok;
|
FT_Error error = FT_Err_Ok;
|
||||||
CFF_Driver driver = (CFF_Driver)module;
|
CFF_Driver driver = (CFF_Driver)module;
|
||||||
|
@ -667,17 +668,23 @@
|
||||||
|
|
||||||
if ( !ft_strcmp( property_name, "darkening-parameters" ) )
|
if ( !ft_strcmp( property_name, "darkening-parameters" ) )
|
||||||
{
|
{
|
||||||
FT_Int* darken_params = (FT_Int*)value;
|
FT_Int* darken_params;
|
||||||
|
FT_Int x1, y1, x2, y2, x3, y3, x4, y4;
|
||||||
|
|
||||||
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 ( value_is_string )
|
||||||
|
return FT_THROW( Invalid_Argument );
|
||||||
|
|
||||||
|
darken_params = (FT_Int*)value;
|
||||||
|
|
||||||
|
x1 = darken_params[0];
|
||||||
|
y1 = darken_params[1];
|
||||||
|
x2 = darken_params[2];
|
||||||
|
y2 = darken_params[3];
|
||||||
|
x3 = darken_params[4];
|
||||||
|
y3 = darken_params[5];
|
||||||
|
x4 = darken_params[6];
|
||||||
|
y4 = darken_params[7];
|
||||||
|
|
||||||
if ( x1 < 0 || x2 < 0 || x3 < 0 || x4 < 0 ||
|
if ( x1 < 0 || x2 < 0 || x3 < 0 || x4 < 0 ||
|
||||||
y1 < 0 || y2 < 0 || y3 < 0 || y4 < 0 ||
|
y1 < 0 || y2 < 0 || y3 < 0 || y4 < 0 ||
|
||||||
|
@ -698,9 +705,14 @@
|
||||||
}
|
}
|
||||||
else if ( !ft_strcmp( property_name, "hinting-engine" ) )
|
else if ( !ft_strcmp( property_name, "hinting-engine" ) )
|
||||||
{
|
{
|
||||||
FT_UInt* hinting_engine = (FT_UInt*)value;
|
FT_UInt* hinting_engine;
|
||||||
|
|
||||||
|
|
||||||
|
if ( value_is_string )
|
||||||
|
return FT_THROW( Invalid_Argument );
|
||||||
|
|
||||||
|
hinting_engine = (FT_UInt*)value;
|
||||||
|
|
||||||
if ( *hinting_engine == FT_CFF_HINTING_ADOBE
|
if ( *hinting_engine == FT_CFF_HINTING_ADOBE
|
||||||
#ifdef CFF_CONFIG_OPTION_OLD_ENGINE
|
#ifdef CFF_CONFIG_OPTION_OLD_ENGINE
|
||||||
|| *hinting_engine == FT_CFF_HINTING_FREETYPE
|
|| *hinting_engine == FT_CFF_HINTING_FREETYPE
|
||||||
|
@ -714,9 +726,14 @@
|
||||||
}
|
}
|
||||||
else if ( !ft_strcmp( property_name, "no-stem-darkening" ) )
|
else if ( !ft_strcmp( property_name, "no-stem-darkening" ) )
|
||||||
{
|
{
|
||||||
FT_Bool* no_stem_darkening = (FT_Bool*)value;
|
FT_Bool* no_stem_darkening;
|
||||||
|
|
||||||
|
|
||||||
|
if ( value_is_string )
|
||||||
|
return FT_THROW( Invalid_Argument );
|
||||||
|
|
||||||
|
no_stem_darkening = (FT_Bool*)value;
|
||||||
|
|
||||||
driver->no_stem_darkening = *no_stem_darkening;
|
driver->no_stem_darkening = *no_stem_darkening;
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
|
|
|
@ -61,7 +61,8 @@
|
||||||
static FT_Error
|
static FT_Error
|
||||||
tt_property_set( FT_Module module, /* TT_Driver */
|
tt_property_set( FT_Module module, /* TT_Driver */
|
||||||
const char* property_name,
|
const char* property_name,
|
||||||
const void* value )
|
const void* value,
|
||||||
|
FT_Bool value_is_string )
|
||||||
{
|
{
|
||||||
FT_Error error = FT_Err_Ok;
|
FT_Error error = FT_Err_Ok;
|
||||||
TT_Driver driver = (TT_Driver)module;
|
TT_Driver driver = (TT_Driver)module;
|
||||||
|
@ -69,9 +70,14 @@
|
||||||
|
|
||||||
if ( !ft_strcmp( property_name, "interpreter-version" ) )
|
if ( !ft_strcmp( property_name, "interpreter-version" ) )
|
||||||
{
|
{
|
||||||
FT_UInt* interpreter_version = (FT_UInt*)value;
|
FT_UInt* interpreter_version;
|
||||||
|
|
||||||
|
|
||||||
|
if ( value_is_string )
|
||||||
|
return FT_THROW( Invalid_Argument );
|
||||||
|
|
||||||
|
interpreter_version = (FT_UInt*)value;
|
||||||
|
|
||||||
if ( *interpreter_version == TT_INTERPRETER_VERSION_35
|
if ( *interpreter_version == TT_INTERPRETER_VERSION_35
|
||||||
#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
|
#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
|
||||||
|| *interpreter_version == TT_INTERPRETER_VERSION_38
|
|| *interpreter_version == TT_INTERPRETER_VERSION_38
|
||||||
|
|
Loading…
Reference in New Issue