1*37da2899SCharles.Forsyth /***************************************************************************/ 2*37da2899SCharles.Forsyth /* */ 3*37da2899SCharles.Forsyth /* cidriver.c */ 4*37da2899SCharles.Forsyth /* */ 5*37da2899SCharles.Forsyth /* CID driver interface (body). */ 6*37da2899SCharles.Forsyth /* */ 7*37da2899SCharles.Forsyth /* Copyright 1996-2001, 2002 by */ 8*37da2899SCharles.Forsyth /* David Turner, Robert Wilhelm, and Werner Lemberg. */ 9*37da2899SCharles.Forsyth /* */ 10*37da2899SCharles.Forsyth /* This file is part of the FreeType project, and may only be used, */ 11*37da2899SCharles.Forsyth /* modified, and distributed under the terms of the FreeType project */ 12*37da2899SCharles.Forsyth /* license, LICENSE.TXT. By continuing to use, modify, or distribute */ 13*37da2899SCharles.Forsyth /* this file you indicate that you have read the license and */ 14*37da2899SCharles.Forsyth /* understand and accept it fully. */ 15*37da2899SCharles.Forsyth /* */ 16*37da2899SCharles.Forsyth /***************************************************************************/ 17*37da2899SCharles.Forsyth 18*37da2899SCharles.Forsyth 19*37da2899SCharles.Forsyth #include <ft2build.h> 20*37da2899SCharles.Forsyth #include "cidriver.h" 21*37da2899SCharles.Forsyth #include "cidgload.h" 22*37da2899SCharles.Forsyth #include FT_INTERNAL_DEBUG_H 23*37da2899SCharles.Forsyth #include FT_INTERNAL_STREAM_H 24*37da2899SCharles.Forsyth #include FT_INTERNAL_POSTSCRIPT_NAMES_H 25*37da2899SCharles.Forsyth 26*37da2899SCharles.Forsyth #include "ciderrs.h" 27*37da2899SCharles.Forsyth 28*37da2899SCharles.Forsyth 29*37da2899SCharles.Forsyth /*************************************************************************/ 30*37da2899SCharles.Forsyth /* */ 31*37da2899SCharles.Forsyth /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ 32*37da2899SCharles.Forsyth /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ 33*37da2899SCharles.Forsyth /* messages during execution. */ 34*37da2899SCharles.Forsyth /* */ 35*37da2899SCharles.Forsyth #undef FT_COMPONENT 36*37da2899SCharles.Forsyth #define FT_COMPONENT trace_ciddriver 37*37da2899SCharles.Forsyth 38*37da2899SCharles.Forsyth 39*37da2899SCharles.Forsyth static const char* cid_get_postscript_name(CID_Face face)40*37da2899SCharles.Forsyth cid_get_postscript_name( CID_Face face ) 41*37da2899SCharles.Forsyth { 42*37da2899SCharles.Forsyth const char* result = face->cid.cid_font_name; 43*37da2899SCharles.Forsyth 44*37da2899SCharles.Forsyth 45*37da2899SCharles.Forsyth if ( result && result[0] == '/' ) 46*37da2899SCharles.Forsyth result++; 47*37da2899SCharles.Forsyth 48*37da2899SCharles.Forsyth return result; 49*37da2899SCharles.Forsyth } 50*37da2899SCharles.Forsyth 51*37da2899SCharles.Forsyth 52*37da2899SCharles.Forsyth static FT_Module_Interface cid_get_interface(FT_Driver driver,const FT_String * cid_interface)53*37da2899SCharles.Forsyth cid_get_interface( FT_Driver driver, 54*37da2899SCharles.Forsyth const FT_String* cid_interface ) 55*37da2899SCharles.Forsyth { 56*37da2899SCharles.Forsyth FT_UNUSED( driver ); 57*37da2899SCharles.Forsyth FT_UNUSED( cid_interface ); 58*37da2899SCharles.Forsyth 59*37da2899SCharles.Forsyth if ( ft_strcmp( (const char*)cid_interface, "postscript_name" ) == 0 ) 60*37da2899SCharles.Forsyth return (FT_Module_Interface)cid_get_postscript_name; 61*37da2899SCharles.Forsyth 62*37da2899SCharles.Forsyth return 0; 63*37da2899SCharles.Forsyth } 64*37da2899SCharles.Forsyth 65*37da2899SCharles.Forsyth 66*37da2899SCharles.Forsyth 67*37da2899SCharles.Forsyth FT_CALLBACK_TABLE_DEF 68*37da2899SCharles.Forsyth const FT_Driver_ClassRec t1cid_driver_class = 69*37da2899SCharles.Forsyth { 70*37da2899SCharles.Forsyth /* first of all, the FT_Module_Class fields */ 71*37da2899SCharles.Forsyth { 72*37da2899SCharles.Forsyth ft_module_font_driver | 73*37da2899SCharles.Forsyth ft_module_driver_scalable | 74*37da2899SCharles.Forsyth ft_module_driver_has_hinter , 75*37da2899SCharles.Forsyth 76*37da2899SCharles.Forsyth sizeof( FT_DriverRec ), 77*37da2899SCharles.Forsyth "t1cid", /* module name */ 78*37da2899SCharles.Forsyth 0x10000L, /* version 1.0 of driver */ 79*37da2899SCharles.Forsyth 0x20000L, /* requires FreeType 2.0 */ 80*37da2899SCharles.Forsyth 81*37da2899SCharles.Forsyth 0, 82*37da2899SCharles.Forsyth 83*37da2899SCharles.Forsyth (FT_Module_Constructor)cid_driver_init, 84*37da2899SCharles.Forsyth (FT_Module_Destructor) cid_driver_done, 85*37da2899SCharles.Forsyth (FT_Module_Requester) cid_get_interface 86*37da2899SCharles.Forsyth }, 87*37da2899SCharles.Forsyth 88*37da2899SCharles.Forsyth /* then the other font drivers fields */ 89*37da2899SCharles.Forsyth sizeof( CID_FaceRec ), 90*37da2899SCharles.Forsyth sizeof( CID_SizeRec ), 91*37da2899SCharles.Forsyth sizeof( CID_GlyphSlotRec ), 92*37da2899SCharles.Forsyth 93*37da2899SCharles.Forsyth (FT_Face_InitFunc) cid_face_init, 94*37da2899SCharles.Forsyth (FT_Face_DoneFunc) cid_face_done, 95*37da2899SCharles.Forsyth 96*37da2899SCharles.Forsyth (FT_Size_InitFunc) cid_size_init, 97*37da2899SCharles.Forsyth (FT_Size_DoneFunc) cid_size_done, 98*37da2899SCharles.Forsyth (FT_Slot_InitFunc) cid_slot_init, 99*37da2899SCharles.Forsyth (FT_Slot_DoneFunc) cid_slot_done, 100*37da2899SCharles.Forsyth 101*37da2899SCharles.Forsyth (FT_Size_ResetPointsFunc)cid_size_reset, 102*37da2899SCharles.Forsyth (FT_Size_ResetPixelsFunc)cid_size_reset, 103*37da2899SCharles.Forsyth 104*37da2899SCharles.Forsyth (FT_Slot_LoadFunc) cid_slot_load_glyph, 105*37da2899SCharles.Forsyth 106*37da2899SCharles.Forsyth (FT_Face_GetKerningFunc) 0, 107*37da2899SCharles.Forsyth (FT_Face_AttachFunc) 0, 108*37da2899SCharles.Forsyth 109*37da2899SCharles.Forsyth (FT_Face_GetAdvancesFunc)0, 110*37da2899SCharles.Forsyth }; 111*37da2899SCharles.Forsyth 112*37da2899SCharles.Forsyth 113*37da2899SCharles.Forsyth /* END */ 114