Add framework for CFF properties.
* include/freetype/internal/ftserv.h (FT_DEFINE_SERVICEDESCREC7): New macro. * src/cff/cffdrivr.c: Include FT_SERVICE_PROPERTIES_H. (cff_property_set, cff_property_get): New function, still empty. Define `cff_service_properties' service. Update `cff_services'. * src/cff/cffpic.h: Include FT_SERVICE_PROPERTIES_H. (CFF_SERVICE_PROPERTIES_GET): New macro. CffModulePIC: Add `cff_service_properties'.
This commit is contained in:
parent
04e547bd2c
commit
fc185ef41a
16
ChangeLog
16
ChangeLog
|
@ -1,3 +1,19 @@
|
||||||
|
2013-04-12 Werner Lemberg <wl@gnu.org>
|
||||||
|
|
||||||
|
Add framework for CFF properties.
|
||||||
|
|
||||||
|
* include/freetype/internal/ftserv.h (FT_DEFINE_SERVICEDESCREC7):
|
||||||
|
New macro.
|
||||||
|
|
||||||
|
* src/cff/cffdrivr.c: Include FT_SERVICE_PROPERTIES_H.
|
||||||
|
(cff_property_set, cff_property_get): New function, still empty.
|
||||||
|
Define `cff_service_properties' service.
|
||||||
|
Update `cff_services'.
|
||||||
|
|
||||||
|
* src/cff/cffpic.h: Include FT_SERVICE_PROPERTIES_H.
|
||||||
|
(CFF_SERVICE_PROPERTIES_GET): New macro.
|
||||||
|
CffModulePIC: Add `cff_service_properties'.
|
||||||
|
|
||||||
2013-04-03 Werner Lemberg <wl@gnu.org>
|
2013-04-03 Werner Lemberg <wl@gnu.org>
|
||||||
|
|
||||||
Fix Savannah bug #38589.
|
Fix Savannah bug #38589.
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
/* */
|
/* */
|
||||||
/* The FreeType services (specification only). */
|
/* The FreeType services (specification only). */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 2003-2007, 2009, 2012 by */
|
/* Copyright 2003-2007, 2009, 2012, 2013 by */
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||||
/* */
|
/* */
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
/* This file is part of the FreeType project, and may only be used, */
|
||||||
|
@ -174,6 +174,7 @@ FT_BEGIN_HEADER
|
||||||
/* FT_DEFINE_SERVICEDESCREC4 */
|
/* FT_DEFINE_SERVICEDESCREC4 */
|
||||||
/* FT_DEFINE_SERVICEDESCREC5 */
|
/* FT_DEFINE_SERVICEDESCREC5 */
|
||||||
/* FT_DEFINE_SERVICEDESCREC6 */
|
/* FT_DEFINE_SERVICEDESCREC6 */
|
||||||
|
/* FT_DEFINE_SERVICEDESCREC7 */
|
||||||
/* */
|
/* */
|
||||||
/* <Description> */
|
/* <Description> */
|
||||||
/* Used to initialize an array of FT_ServiceDescRec structures. */
|
/* Used to initialize an array of FT_ServiceDescRec structures. */
|
||||||
|
@ -270,6 +271,26 @@ FT_BEGIN_HEADER
|
||||||
{ NULL, NULL } \
|
{ NULL, NULL } \
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define FT_DEFINE_SERVICEDESCREC7( class_, \
|
||||||
|
serv_id_1, serv_data_1, \
|
||||||
|
serv_id_2, serv_data_2, \
|
||||||
|
serv_id_3, serv_data_3, \
|
||||||
|
serv_id_4, serv_data_4, \
|
||||||
|
serv_id_5, serv_data_5, \
|
||||||
|
serv_id_6, serv_data_6, \
|
||||||
|
serv_id_7, serv_data_7 ) \
|
||||||
|
static const FT_ServiceDescRec class_[] = \
|
||||||
|
{ \
|
||||||
|
{ serv_id_1, serv_data_1 }, \
|
||||||
|
{ serv_id_2, serv_data_2 }, \
|
||||||
|
{ serv_id_3, serv_data_3 }, \
|
||||||
|
{ serv_id_4, serv_data_4 }, \
|
||||||
|
{ serv_id_5, serv_data_5 }, \
|
||||||
|
{ serv_id_6, serv_data_6 }, \
|
||||||
|
{ serv_id_7, serv_data_7 }, \
|
||||||
|
{ NULL, NULL } \
|
||||||
|
};
|
||||||
|
|
||||||
#else /* FT_CONFIG_OPTION_PIC */
|
#else /* FT_CONFIG_OPTION_PIC */
|
||||||
|
|
||||||
#define FT_DEFINE_SERVICEDESCREC1( class_, \
|
#define FT_DEFINE_SERVICEDESCREC1( class_, \
|
||||||
|
@ -527,6 +548,59 @@ FT_BEGIN_HEADER
|
||||||
return FT_Err_Ok; \
|
return FT_Err_Ok; \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define FT_DEFINE_SERVICEDESCREC7( class_, \
|
||||||
|
serv_id_1, serv_data_1, \
|
||||||
|
serv_id_2, serv_data_2, \
|
||||||
|
serv_id_3, serv_data_3, \
|
||||||
|
serv_id_4, serv_data_4, \
|
||||||
|
serv_id_5, serv_data_5, \
|
||||||
|
serv_id_6, serv_data_6, \
|
||||||
|
serv_id_7, serv_data_7 ) \
|
||||||
|
void \
|
||||||
|
FT_Destroy_Class_ ## class_( FT_Library library, \
|
||||||
|
FT_ServiceDescRec* clazz ) \
|
||||||
|
{ \
|
||||||
|
FT_Memory memory = library->memory; \
|
||||||
|
\
|
||||||
|
\
|
||||||
|
if ( clazz ) \
|
||||||
|
FT_FREE( clazz ); \
|
||||||
|
} \
|
||||||
|
\
|
||||||
|
FT_Error \
|
||||||
|
FT_Create_Class_ ## class_( FT_Library library, \
|
||||||
|
FT_ServiceDescRec** output_class) \
|
||||||
|
{ \
|
||||||
|
FT_ServiceDescRec* clazz = NULL; \
|
||||||
|
FT_Error error; \
|
||||||
|
FT_Memory memory = library->memory; \
|
||||||
|
\
|
||||||
|
\
|
||||||
|
if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 8 ) ) \
|
||||||
|
return error; \
|
||||||
|
\
|
||||||
|
clazz[0].serv_id = serv_id_1; \
|
||||||
|
clazz[0].serv_data = serv_data_1; \
|
||||||
|
clazz[1].serv_id = serv_id_2; \
|
||||||
|
clazz[1].serv_data = serv_data_2; \
|
||||||
|
clazz[2].serv_id = serv_id_3; \
|
||||||
|
clazz[2].serv_data = serv_data_3; \
|
||||||
|
clazz[3].serv_id = serv_id_4; \
|
||||||
|
clazz[3].serv_data = serv_data_4; \
|
||||||
|
clazz[4].serv_id = serv_id_5; \
|
||||||
|
clazz[4].serv_data = serv_data_5; \
|
||||||
|
clazz[5].serv_id = serv_id_6; \
|
||||||
|
clazz[5].serv_data = serv_data_6; \
|
||||||
|
clazz[6].serv_id = serv_id_7; \
|
||||||
|
clazz[6].serv_data = serv_data_7; \
|
||||||
|
clazz[7].serv_id = NULL; \
|
||||||
|
clazz[7].serv_data = NULL; \
|
||||||
|
\
|
||||||
|
*output_class = clazz; \
|
||||||
|
\
|
||||||
|
return FT_Err_Ok; \
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* FT_CONFIG_OPTION_PIC */
|
#endif /* FT_CONFIG_OPTION_PIC */
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -37,6 +37,7 @@
|
||||||
|
|
||||||
#include FT_SERVICE_XFREE86_NAME_H
|
#include FT_SERVICE_XFREE86_NAME_H
|
||||||
#include FT_SERVICE_GLYPH_DICT_H
|
#include FT_SERVICE_GLYPH_DICT_H
|
||||||
|
#include FT_SERVICE_PROPERTIES_H
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
|
@ -298,7 +299,8 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
FT_DEFINE_SERVICE_GLYPHDICTREC(cff_service_glyph_dict,
|
FT_DEFINE_SERVICE_GLYPHDICTREC(
|
||||||
|
cff_service_glyph_dict,
|
||||||
(FT_GlyphDict_GetNameFunc) cff_get_glyph_name,
|
(FT_GlyphDict_GetNameFunc) cff_get_glyph_name,
|
||||||
(FT_GlyphDict_NameIndexFunc)cff_get_name_index
|
(FT_GlyphDict_NameIndexFunc)cff_get_name_index
|
||||||
)
|
)
|
||||||
|
@ -360,7 +362,8 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
FT_DEFINE_SERVICE_PSINFOREC(cff_service_ps_info,
|
FT_DEFINE_SERVICE_PSINFOREC(
|
||||||
|
cff_service_ps_info,
|
||||||
(PS_GetFontInfoFunc) cff_ps_get_font_info,
|
(PS_GetFontInfoFunc) cff_ps_get_font_info,
|
||||||
(PS_GetFontExtraFunc) NULL,
|
(PS_GetFontExtraFunc) NULL,
|
||||||
(PS_HasGlyphNamesFunc) cff_ps_has_glyph_names,
|
(PS_HasGlyphNamesFunc) cff_ps_has_glyph_names,
|
||||||
|
@ -384,7 +387,8 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
FT_DEFINE_SERVICE_PSFONTNAMEREC(cff_service_ps_name,
|
FT_DEFINE_SERVICE_PSFONTNAMEREC(
|
||||||
|
cff_service_ps_name,
|
||||||
(FT_PsName_GetFunc)cff_get_ps_name
|
(FT_PsName_GetFunc)cff_get_ps_name
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -430,7 +434,8 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
FT_DEFINE_SERVICE_TTCMAPSREC(cff_service_get_cmap_info,
|
FT_DEFINE_SERVICE_TTCMAPSREC(
|
||||||
|
cff_service_get_cmap_info,
|
||||||
(TT_CMap_Info_GetFunc)cff_get_cmap_info
|
(TT_CMap_Info_GetFunc)cff_get_cmap_info
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -559,13 +564,42 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
FT_DEFINE_SERVICE_CIDREC(cff_service_cid_info,
|
FT_DEFINE_SERVICE_CIDREC(
|
||||||
|
cff_service_cid_info,
|
||||||
(FT_CID_GetRegistryOrderingSupplementFunc)cff_get_ros,
|
(FT_CID_GetRegistryOrderingSupplementFunc)cff_get_ros,
|
||||||
(FT_CID_GetIsInternallyCIDKeyedFunc) cff_get_is_cid,
|
(FT_CID_GetIsInternallyCIDKeyedFunc) cff_get_is_cid,
|
||||||
(FT_CID_GetCIDFromGlyphIndexFunc) cff_get_cid_from_glyph_index
|
(FT_CID_GetCIDFromGlyphIndexFunc) cff_get_cid_from_glyph_index
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* PROPERTY SERVICE
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
static FT_Error
|
||||||
|
cff_property_set( FT_Module ft_module,
|
||||||
|
const char* property_name,
|
||||||
|
const void* value )
|
||||||
|
{
|
||||||
|
return FT_Err_Ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static FT_Error
|
||||||
|
cff_property_get( FT_Module ft_module,
|
||||||
|
const char* property_name,
|
||||||
|
const void* value )
|
||||||
|
{
|
||||||
|
return FT_Err_Ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
FT_DEFINE_SERVICE_PROPERTIESREC(
|
||||||
|
cff_service_properties,
|
||||||
|
(FT_Properties_SetFunc)cff_property_set,
|
||||||
|
(FT_Properties_GetFunc)cff_property_get )
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
|
@ -577,25 +611,31 @@
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
|
|
||||||
#ifndef FT_CONFIG_OPTION_NO_GLYPH_NAMES
|
#ifndef FT_CONFIG_OPTION_NO_GLYPH_NAMES
|
||||||
FT_DEFINE_SERVICEDESCREC6(cff_services,
|
FT_DEFINE_SERVICEDESCREC7(
|
||||||
|
cff_services,
|
||||||
FT_SERVICE_ID_XF86_NAME, FT_XF86_FORMAT_CFF,
|
FT_SERVICE_ID_XF86_NAME, FT_XF86_FORMAT_CFF,
|
||||||
FT_SERVICE_ID_POSTSCRIPT_INFO, &CFF_SERVICE_PS_INFO_GET,
|
FT_SERVICE_ID_POSTSCRIPT_INFO, &CFF_SERVICE_PS_INFO_GET,
|
||||||
FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &CFF_SERVICE_PS_NAME_GET,
|
FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &CFF_SERVICE_PS_NAME_GET,
|
||||||
FT_SERVICE_ID_GLYPH_DICT, &CFF_SERVICE_GLYPH_DICT_GET,
|
FT_SERVICE_ID_GLYPH_DICT, &CFF_SERVICE_GLYPH_DICT_GET,
|
||||||
FT_SERVICE_ID_TT_CMAP, &CFF_SERVICE_GET_CMAP_INFO_GET,
|
FT_SERVICE_ID_TT_CMAP, &CFF_SERVICE_GET_CMAP_INFO_GET,
|
||||||
FT_SERVICE_ID_CID, &CFF_SERVICE_CID_INFO_GET
|
FT_SERVICE_ID_CID, &CFF_SERVICE_CID_INFO_GET,
|
||||||
|
FT_SERVICE_ID_PROPERTIES, &CFF_SERVICE_PROPERTIES_GET
|
||||||
)
|
)
|
||||||
#else
|
#else
|
||||||
FT_DEFINE_SERVICEDESCREC5(cff_services,
|
FT_DEFINE_SERVICEDESCREC6(
|
||||||
|
cff_services,
|
||||||
FT_SERVICE_ID_XF86_NAME, FT_XF86_FORMAT_CFF,
|
FT_SERVICE_ID_XF86_NAME, FT_XF86_FORMAT_CFF,
|
||||||
FT_SERVICE_ID_POSTSCRIPT_INFO, &CFF_SERVICE_PS_INFO_GET,
|
FT_SERVICE_ID_POSTSCRIPT_INFO, &CFF_SERVICE_PS_INFO_GET,
|
||||||
FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &CFF_SERVICE_PS_NAME_GET,
|
FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &CFF_SERVICE_PS_NAME_GET,
|
||||||
FT_SERVICE_ID_TT_CMAP, &CFF_SERVICE_GET_CMAP_INFO_GET,
|
FT_SERVICE_ID_TT_CMAP, &CFF_SERVICE_GET_CMAP_INFO_GET,
|
||||||
FT_SERVICE_ID_CID, &CFF_SERVICE_CID_INFO_GET
|
FT_SERVICE_ID_CID, &CFF_SERVICE_CID_INFO_GET,
|
||||||
|
FT_SERVICE_ID_PROPERTIES, &CFF_SERVICE_PROPERTIES_GET
|
||||||
)
|
)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
FT_CALLBACK_DEF( FT_Module_Interface )
|
FT_CALLBACK_DEF( FT_Module_Interface )
|
||||||
cff_get_interface( FT_Module driver, /* CFF_Driver */
|
cff_get_interface( FT_Module driver, /* CFF_Driver */
|
||||||
const char* module_interface )
|
const char* module_interface )
|
||||||
|
@ -642,7 +682,8 @@
|
||||||
#define CFF_SIZE_SELECT 0
|
#define CFF_SIZE_SELECT 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
FT_DEFINE_DRIVER( cff_driver_class,
|
FT_DEFINE_DRIVER(
|
||||||
|
cff_driver_class,
|
||||||
|
|
||||||
FT_MODULE_FONT_DRIVER |
|
FT_MODULE_FONT_DRIVER |
|
||||||
FT_MODULE_DRIVER_SCALABLE |
|
FT_MODULE_DRIVER_SCALABLE |
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
/* */
|
/* */
|
||||||
/* The FreeType position independent code services for cff module. */
|
/* The FreeType position independent code services for cff module. */
|
||||||
/* */
|
/* */
|
||||||
/* Copyright 2009, 2012 by */
|
/* Copyright 2009, 2012, 2013 by */
|
||||||
/* Oran Agra and Mickey Gabel. */
|
/* Oran Agra and Mickey Gabel. */
|
||||||
/* */
|
/* */
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
/* This file is part of the FreeType project, and may only be used, */
|
||||||
|
@ -32,6 +32,7 @@ FT_BEGIN_HEADER
|
||||||
#define CFF_SERVICE_PS_NAME_GET cff_service_ps_name
|
#define CFF_SERVICE_PS_NAME_GET cff_service_ps_name
|
||||||
#define CFF_SERVICE_GET_CMAP_INFO_GET cff_service_get_cmap_info
|
#define CFF_SERVICE_GET_CMAP_INFO_GET cff_service_get_cmap_info
|
||||||
#define CFF_SERVICE_CID_INFO_GET cff_service_cid_info
|
#define CFF_SERVICE_CID_INFO_GET cff_service_cid_info
|
||||||
|
#define CFF_SERVICE_PROPERTIES_GET cff_service_properties
|
||||||
#define CFF_SERVICES_GET cff_services
|
#define CFF_SERVICES_GET cff_services
|
||||||
#define CFF_CMAP_ENCODING_CLASS_REC_GET cff_cmap_encoding_class_rec
|
#define CFF_CMAP_ENCODING_CLASS_REC_GET cff_cmap_encoding_class_rec
|
||||||
#define CFF_CMAP_UNICODE_CLASS_REC_GET cff_cmap_unicode_class_rec
|
#define CFF_CMAP_UNICODE_CLASS_REC_GET cff_cmap_unicode_class_rec
|
||||||
|
@ -45,6 +46,7 @@ FT_BEGIN_HEADER
|
||||||
#include FT_SERVICE_POSTSCRIPT_NAME_H
|
#include FT_SERVICE_POSTSCRIPT_NAME_H
|
||||||
#include FT_SERVICE_TT_CMAP_H
|
#include FT_SERVICE_TT_CMAP_H
|
||||||
#include FT_SERVICE_CID_H
|
#include FT_SERVICE_CID_H
|
||||||
|
#include FT_SERVICE_PROPERTIES_H
|
||||||
|
|
||||||
|
|
||||||
typedef struct CffModulePIC_
|
typedef struct CffModulePIC_
|
||||||
|
@ -56,6 +58,7 @@ FT_BEGIN_HEADER
|
||||||
FT_Service_PsFontNameRec cff_service_ps_name;
|
FT_Service_PsFontNameRec cff_service_ps_name;
|
||||||
FT_Service_TTCMapsRec cff_service_get_cmap_info;
|
FT_Service_TTCMapsRec cff_service_get_cmap_info;
|
||||||
FT_Service_CIDRec cff_service_cid_info;
|
FT_Service_CIDRec cff_service_cid_info;
|
||||||
|
FT_Service_PropertiesRec cff_service_properties;
|
||||||
FT_CMap_ClassRec cff_cmap_encoding_class_rec;
|
FT_CMap_ClassRec cff_cmap_encoding_class_rec;
|
||||||
FT_CMap_ClassRec cff_cmap_unicode_class_rec;
|
FT_CMap_ClassRec cff_cmap_unicode_class_rec;
|
||||||
|
|
||||||
|
@ -75,6 +78,8 @@ FT_BEGIN_HEADER
|
||||||
( GET_PIC( library )->cff_service_get_cmap_info )
|
( GET_PIC( library )->cff_service_get_cmap_info )
|
||||||
#define CFF_SERVICE_CID_INFO_GET \
|
#define CFF_SERVICE_CID_INFO_GET \
|
||||||
( GET_PIC( library )->cff_service_cid_info )
|
( GET_PIC( library )->cff_service_cid_info )
|
||||||
|
#define CFF_SERVICE_PROPERTIES_GET \
|
||||||
|
( GET_PIC( library )->cff_service_properties )
|
||||||
#define CFF_SERVICES_GET \
|
#define CFF_SERVICES_GET \
|
||||||
( GET_PIC( library )->cff_services )
|
( GET_PIC( library )->cff_services )
|
||||||
#define CFF_CMAP_ENCODING_CLASS_REC_GET \
|
#define CFF_CMAP_ENCODING_CLASS_REC_GET \
|
||||||
|
|
Loading…
Reference in New Issue