xref: /inferno-os/libfreetype/cidriver.c (revision 37da2899f40661e3e9631e497da8dc59b971cbd0)
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