#include <freetype/freetype.h>
#include <freetype/internal/ftdebug.h>
#include <freetype/internal/ftstream.h>
#include <freetype/internal/sfnt.h>
#include <freetype/internal/psaux.h>
#include <freetype/internal/ftpsprop.h>
#include <freetype/internal/services/svcid.h>
#include <freetype/internal/services/svpsinfo.h>
#include <freetype/internal/services/svpostnm.h>
#include <freetype/internal/services/svttcmap.h>
#include <freetype/internal/services/svcfftl.h>
#include "cffdrivr.h"
#include "cffgload.h"
#include "cffload.h"
#include "cffcmap.h"
#include "cffparse.h"
#include "cffobjs.h"
#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
#include <freetype/internal/services/svmm.h>
#include <freetype/internal/services/svmetric.h>
#endif
#include "cfferrs.h"
#include <freetype/internal/services/svfntfmt.h>
#include <freetype/internal/services/svgldict.h>
#include <freetype/internal/services/svprop.h>
#include <freetype/ftdriver.h>
#undef FT_COMPONENT
#define FT_COMPONENT …
FT_CALLBACK_DEF( FT_Error )
cff_get_kerning( FT_Face face,
FT_UInt left_glyph,
FT_UInt right_glyph,
FT_Vector* kerning )
{ … }
FT_CALLBACK_DEF( FT_Error )
cff_glyph_load( FT_GlyphSlot slot,
FT_Size size,
FT_UInt glyph_index,
FT_Int32 load_flags )
{ … }
FT_CALLBACK_DEF( FT_Error )
cff_get_advances( FT_Face face,
FT_UInt start,
FT_UInt count,
FT_Int32 flags,
FT_Fixed* advances )
{ … }
FT_CALLBACK_DEF( FT_Error )
cff_get_glyph_name( FT_Face face,
FT_UInt glyph_index,
FT_Pointer buffer,
FT_UInt buffer_max )
{ … }
FT_CALLBACK_DEF( FT_UInt )
cff_get_name_index( FT_Face face,
const FT_String* glyph_name )
{ … }
FT_DEFINE_SERVICE_GLYPHDICTREC(
cff_service_glyph_dict,
cff_get_glyph_name,
cff_get_name_index
)
FT_CALLBACK_DEF( FT_Int )
cff_ps_has_glyph_names( FT_Face face )
{ … }
FT_CALLBACK_DEF( FT_Error )
cff_ps_get_font_info( FT_Face face,
PS_FontInfoRec* afont_info )
{ … }
FT_CALLBACK_DEF( FT_Error )
cff_ps_get_font_extra( FT_Face face,
PS_FontExtraRec* afont_extra )
{ … }
FT_DEFINE_SERVICE_PSINFOREC(
cff_service_ps_info,
cff_ps_get_font_info,
cff_ps_get_font_extra,
cff_ps_has_glyph_names,
NULL,
NULL
)
FT_CALLBACK_DEF( const char* )
cff_get_ps_name( FT_Face face )
{ … }
FT_DEFINE_SERVICE_PSFONTNAMEREC(
cff_service_ps_name,
cff_get_ps_name
)
FT_CALLBACK_DEF( FT_Error )
cff_get_cmap_info( FT_CharMap charmap,
TT_CMapInfo *cmap_info )
{ … }
FT_DEFINE_SERVICE_TTCMAPSREC(
cff_service_get_cmap_info,
cff_get_cmap_info
)
FT_CALLBACK_DEF( FT_Error )
cff_get_ros( FT_Face face,
const char* *registry,
const char* *ordering,
FT_Int *supplement )
{ … }
FT_CALLBACK_DEF( FT_Error )
cff_get_is_cid( FT_Face face,
FT_Bool *is_cid )
{ … }
FT_CALLBACK_DEF( FT_Error )
cff_get_cid_from_glyph_index( FT_Face face,
FT_UInt glyph_index,
FT_UInt *cid )
{ … }
FT_DEFINE_SERVICE_CIDREC(
cff_service_cid_info,
cff_get_ros,
cff_get_is_cid,
cff_get_cid_from_glyph_index
)
FT_DEFINE_SERVICE_PROPERTIESREC(
cff_service_properties,
ps_property_set,
ps_property_get
)
#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
FT_CALLBACK_DEF( FT_Error )
cff_set_mm_blend( FT_Face face,
FT_UInt num_coords,
FT_Fixed* coords )
{ … }
FT_CALLBACK_DEF( FT_Error )
cff_get_mm_blend( FT_Face face,
FT_UInt num_coords,
FT_Fixed* coords )
{ … }
FT_CALLBACK_DEF( FT_Error )
cff_set_mm_weightvector( FT_Face face,
FT_UInt len,
FT_Fixed* weightvector )
{ … }
FT_CALLBACK_DEF( FT_Error )
cff_get_mm_weightvector( FT_Face face,
FT_UInt* len,
FT_Fixed* weightvector )
{ … }
FT_CALLBACK_DEF( void )
cff_construct_ps_name( FT_Face face )
{ … }
FT_CALLBACK_DEF( FT_Error )
cff_get_mm_var( FT_Face face,
FT_MM_Var* *master )
{ … }
FT_CALLBACK_DEF( FT_Error )
cff_set_var_design( FT_Face face,
FT_UInt num_coords,
FT_Fixed* coords )
{ … }
FT_CALLBACK_DEF( FT_Error )
cff_get_var_design( FT_Face face,
FT_UInt num_coords,
FT_Fixed* coords )
{ … }
FT_CALLBACK_DEF( FT_Error )
cff_set_named_instance( FT_Face face,
FT_UInt instance_index )
{ … }
FT_CALLBACK_DEF( FT_Error )
cff_get_default_named_instance( FT_Face face,
FT_UInt *instance_index )
{ … }
FT_CALLBACK_DEF( FT_Error )
cff_load_item_variation_store( FT_Face face,
FT_ULong offset,
GX_ItemVarStore itemStore )
{ … }
FT_CALLBACK_DEF( FT_Error )
cff_load_delta_set_index_mapping( FT_Face face,
FT_ULong offset,
GX_DeltaSetIdxMap map,
GX_ItemVarStore itemStore,
FT_ULong table_len )
{ … }
FT_CALLBACK_DEF( FT_Int )
cff_get_item_delta( FT_Face face,
GX_ItemVarStore itemStore,
FT_UInt outerIndex,
FT_UInt innerIndex )
{ … }
FT_CALLBACK_DEF( void )
cff_done_item_variation_store( FT_Face face,
GX_ItemVarStore itemStore )
{ … }
FT_CALLBACK_DEF( void )
cff_done_delta_set_index_map( FT_Face face,
GX_DeltaSetIdxMap deltaSetIdxMap )
{ … }
FT_DEFINE_SERVICE_MULTIMASTERSREC(
cff_service_multi_masters,
NULL,
NULL,
cff_set_mm_blend,
cff_get_mm_blend,
cff_get_mm_var,
cff_set_var_design,
cff_get_var_design,
cff_set_named_instance,
cff_get_default_named_instance,
cff_set_mm_weightvector,
cff_get_mm_weightvector,
cff_construct_ps_name,
cff_load_delta_set_index_mapping,
cff_load_item_variation_store,
cff_get_item_delta,
cff_done_item_variation_store,
cff_done_delta_set_index_map,
cff_get_var_blend,
cff_done_blend
)
FT_CALLBACK_DEF( FT_Error )
cff_hadvance_adjust( FT_Face face,
FT_UInt gindex,
FT_Int *avalue )
{ … }
FT_CALLBACK_DEF( void )
cff_metrics_adjust( FT_Face face )
{ … }
FT_DEFINE_SERVICE_METRICSVARIATIONSREC(
cff_service_metrics_variations,
cff_hadvance_adjust,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
cff_metrics_adjust,
NULL
)
#endif
FT_DEFINE_SERVICE_CFFLOADREC(
cff_service_cff_load,
cff_get_standard_encoding,
cff_load_private_dict,
cff_fd_select_get,
cff_blend_check_vector,
cff_blend_build_vector
)
#if defined TT_CONFIG_OPTION_GX_VAR_SUPPORT
FT_DEFINE_SERVICEDESCREC10(
cff_services,
FT_SERVICE_ID_FONT_FORMAT, FT_FONT_FORMAT_CFF,
FT_SERVICE_ID_MULTI_MASTERS, &cff_service_multi_masters,
FT_SERVICE_ID_METRICS_VARIATIONS, &cff_service_metrics_variations,
FT_SERVICE_ID_POSTSCRIPT_INFO, &cff_service_ps_info,
FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &cff_service_ps_name,
FT_SERVICE_ID_GLYPH_DICT, &cff_service_glyph_dict,
FT_SERVICE_ID_TT_CMAP, &cff_service_get_cmap_info,
FT_SERVICE_ID_CID, &cff_service_cid_info,
FT_SERVICE_ID_PROPERTIES, &cff_service_properties,
FT_SERVICE_ID_CFF_LOAD, &cff_service_cff_load
)
#else
FT_DEFINE_SERVICEDESCREC8(
cff_services,
FT_SERVICE_ID_FONT_FORMAT, FT_FONT_FORMAT_CFF,
FT_SERVICE_ID_POSTSCRIPT_INFO, &cff_service_ps_info,
FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &cff_service_ps_name,
FT_SERVICE_ID_GLYPH_DICT, &cff_service_glyph_dict,
FT_SERVICE_ID_TT_CMAP, &cff_service_get_cmap_info,
FT_SERVICE_ID_CID, &cff_service_cid_info,
FT_SERVICE_ID_PROPERTIES, &cff_service_properties,
FT_SERVICE_ID_CFF_LOAD, &cff_service_cff_load
)
#endif
FT_CALLBACK_DEF( FT_Module_Interface )
cff_get_interface( FT_Module driver,
const char* module_interface )
{ … }
#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
#define CFF_SIZE_SELECT …
#else
#define CFF_SIZE_SELECT …
#endif
FT_DEFINE_DRIVER(
cff_driver_class,
FT_MODULE_FONT_DRIVER |
FT_MODULE_DRIVER_SCALABLE |
FT_MODULE_DRIVER_HAS_HINTER |
FT_MODULE_DRIVER_HINTS_LIGHTLY,
sizeof ( PS_DriverRec ),
"cff",
0x10000L,
0x20000L,
NULL,
cff_driver_init,
cff_driver_done,
cff_get_interface,
sizeof ( TT_FaceRec ),
sizeof ( CFF_SizeRec ),
sizeof ( CFF_GlyphSlotRec ),
cff_face_init,
cff_face_done,
cff_size_init,
cff_size_done,
cff_slot_init,
cff_slot_done,
cff_glyph_load,
cff_get_kerning,
NULL,
cff_get_advances,
cff_size_request,
CFF_SIZE_SELECT
)