Visualization Library 2.0.0-b5

A lightweight C++ OpenGL middleware for 2D/3D graphics

VL     Star     Watch     Fork     Issue

[Download] [Tutorials] [All Classes] [Grouped Classes]
cidriver.c
Go to the documentation of this file.
1 /***************************************************************************/
2 /* */
3 /* cidriver.c */
4 /* */
5 /* CID driver interface (body). */
6 /* */
7 /* Copyright 1996-2004, 2006, 2008, 2009, 2011, 2013 by */
8 /* David Turner, Robert Wilhelm, and Werner Lemberg. */
9 /* */
10 /* This file is part of the FreeType project, and may only be used, */
11 /* modified, and distributed under the terms of the FreeType project */
12 /* license, LICENSE.TXT. By continuing to use, modify, or distribute */
13 /* this file you indicate that you have read the license and */
14 /* understand and accept it fully. */
15 /* */
16 /***************************************************************************/
17 
18 
19 #include <ft2build.h>
20 #include "cidriver.h"
21 #include "cidgload.h"
22 #include FT_INTERNAL_DEBUG_H
23 
24 #include "ciderrs.h"
25 
26 #include FT_SERVICE_POSTSCRIPT_NAME_H
27 #include FT_SERVICE_XFREE86_NAME_H
28 #include FT_SERVICE_POSTSCRIPT_INFO_H
29 #include FT_SERVICE_CID_H
30 
31 
32  /*************************************************************************/
33  /* */
34  /* The macro FT_COMPONENT is used in trace mode. It is an implicit */
35  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */
36  /* messages during execution. */
37  /* */
38 #undef FT_COMPONENT
39 #define FT_COMPONENT trace_ciddriver
40 
41 
42  /*
43  * POSTSCRIPT NAME SERVICE
44  *
45  */
46 
47  static const char*
48  cid_get_postscript_name( CID_Face face )
49  {
50  const char* result = face->cid.cid_font_name;
51 
52 
53  if ( result && result[0] == '/' )
54  result++;
55 
56  return result;
57  }
58 
59 
60  static const FT_Service_PsFontNameRec cid_service_ps_name =
61  {
62  (FT_PsName_GetFunc) cid_get_postscript_name
63  };
64 
65 
66  /*
67  * POSTSCRIPT INFO SERVICE
68  *
69  */
70 
71  static FT_Error
72  cid_ps_get_font_info( FT_Face face,
73  PS_FontInfoRec* afont_info )
74  {
75  *afont_info = ((CID_Face)face)->cid.font_info;
76 
77  return FT_Err_Ok;
78  }
79 
80  static FT_Error
81  cid_ps_get_font_extra( FT_Face face,
82  PS_FontExtraRec* afont_extra )
83  {
84  *afont_extra = ((CID_Face)face)->font_extra;
85 
86  return FT_Err_Ok;
87  }
88 
89  static const FT_Service_PsInfoRec cid_service_ps_info =
90  {
91  (PS_GetFontInfoFunc) cid_ps_get_font_info,
92  (PS_GetFontExtraFunc) cid_ps_get_font_extra,
93  (PS_HasGlyphNamesFunc) NULL, /* unsupported with CID fonts */
94  (PS_GetFontPrivateFunc)NULL, /* unsupported */
95  (PS_GetFontValueFunc) NULL /* not implemented */
96  };
97 
98 
99  /*
100  * CID INFO SERVICE
101  *
102  */
103  static FT_Error
104  cid_get_ros( CID_Face face,
105  const char* *registry,
106  const char* *ordering,
107  FT_Int *supplement )
108  {
109  CID_FaceInfo cid = &face->cid;
110 
111 
112  if ( registry )
113  *registry = cid->registry;
114 
115  if ( ordering )
116  *ordering = cid->ordering;
117 
118  if ( supplement )
119  *supplement = cid->supplement;
120 
121  return FT_Err_Ok;
122  }
123 
124 
125  static FT_Error
126  cid_get_is_cid( CID_Face face,
127  FT_Bool *is_cid )
128  {
130  FT_UNUSED( face );
131 
132 
133  if ( is_cid )
134  *is_cid = 1; /* cid driver is only used for CID keyed fonts */
135 
136  return error;
137  }
138 
139 
140  static FT_Error
141  cid_get_cid_from_glyph_index( CID_Face face,
142  FT_UInt glyph_index,
143  FT_UInt *cid )
144  {
146  FT_UNUSED( face );
147 
148 
149  if ( cid )
150  *cid = glyph_index; /* identity mapping */
151 
152  return error;
153  }
154 
155 
156  static const FT_Service_CIDRec cid_service_cid_info =
157  {
159  (FT_CID_GetIsInternallyCIDKeyedFunc) cid_get_is_cid,
160  (FT_CID_GetCIDFromGlyphIndexFunc) cid_get_cid_from_glyph_index
161  };
162 
163 
164  /*
165  * SERVICE LIST
166  *
167  */
168 
169  static const FT_ServiceDescRec cid_services[] =
170  {
172  { FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &cid_service_ps_name },
173  { FT_SERVICE_ID_POSTSCRIPT_INFO, &cid_service_ps_info },
174  { FT_SERVICE_ID_CID, &cid_service_cid_info },
175  { NULL, NULL }
176  };
177 
178 
181  const char* cid_interface )
182  {
183  FT_UNUSED( module );
184 
185  return ft_service_list_lookup( cid_services, cid_interface );
186  }
187 
188 
189 
192  {
193  /* first of all, the FT_Module_Class fields */
194  {
198 
199  sizeof ( FT_DriverRec ),
200  "t1cid", /* module name */
201  0x10000L, /* version 1.0 of driver */
202  0x20000L, /* requires FreeType 2.0 */
203 
204  0,
205 
209  },
210 
211  /* then the other font drivers fields */
212  sizeof ( CID_FaceRec ),
213  sizeof ( CID_SizeRec ),
214  sizeof ( CID_GlyphSlotRec ),
215 
218 
223 
224 #ifdef FT_CONFIG_OPTION_OLD_INTERNALS
225  ft_stub_set_char_sizes,
226  ft_stub_set_pixel_sizes,
227 #endif
228 
230 
231  0, /* FT_Face_GetKerningFunc */
232  0, /* FT_Face_AttachFunc */
233 
234  0, /* FT_Face_GetAdvancesFunc */
235 
237  0 /* FT_Size_SelectFunc */
238  };
239 
240 
241 /* END */
ft_service_list_lookup(FT_ServiceDesc service_descriptors, const char *service_id)
Definition: ftobjs.c:58
int FT_Error
Definition: fttypes.h:296
FT_String * registry
Definition: t1tables.h:357
struct CID_FaceRec_ * CID_Face
Definition: t1types.h:195
FT_Error(* FT_CID_GetIsInternallyCIDKeyedFunc)(FT_Face face, FT_Bool *is_cid)
Definition: svcid.h:35
FT_SERVICE_ID_POSTSCRIPT_INFO
Definition: cffdrivr.c:671
#define NULL
Definition: ftobjs.h:61
signed int FT_Int
Definition: fttypes.h:216
#define FT_UNUSED(arg)
Definition: ftconfig.h:76
cid_driver_init(FT_Module driver)
Definition: cidobjs.c:465
cid_size_done(FT_Size cidsize)
Definition: cidobjs.c:111
#define FT_MODULE_DRIVER_SCALABLE
Definition: ftmodapi.h:87
return FT_Err_Ok
Definition: ftbbox.c:645
FT_BEGIN_HEADER typedef unsigned char FT_Bool
Definition: fttypes.h:104
GLenum GLuint GLint GLenum face
#define FT_XF86_FORMAT_CID
Definition: svxf86nm.h:41
#define const
Definition: zconf.h:91
cid_driver_done(FT_Module driver)
Definition: cidobjs.c:485
FT_String * cid_font_name
Definition: t1tables.h:353
#define FT_MODULE_DRIVER_HAS_HINTER
Definition: ftmodapi.h:91
const char ** registry
Definition: cffdrivr.c:449
cid_slot_load_glyph(FT_GlyphSlot cidglyph, FT_Size cidsize, FT_UInt glyph_index, FT_Int32 load_flags)
Definition: cidgload.c:269
cid_face_done(FT_Face cidface)
Definition: cidobjs.c:194
FT_Long(* PS_GetFontValueFunc)(FT_Face face, PS_Dict_Keys key, FT_UInt idx, void *value, FT_Long value_len)
Definition: svpsinfo.h:48
FT_Error(* FT_CID_GetRegistryOrderingSupplementFunc)(FT_Face face, const char **registry, const char **ordering, FT_Int *supplement)
Definition: svcid.h:30
FT_Error error
Definition: cffdrivr.c:411
#define FT_SERVICE_ID_XF86_NAME
Definition: svxf86nm.h:34
FT_Pointer FT_Module_Interface
Definition: ftmodapi.h:106
cid_face_init(FT_Stream stream, FT_Face cidface, FT_Int face_index, FT_Int num_params, FT_Parameter *params)
Definition: cidobjs.c:278
#define FT_CALLBACK_DEF(x)
Definition: ftconfig.h:323
FT_String * ordering
Definition: t1tables.h:358
#define FT_MODULE_FONT_DRIVER
Definition: ftmodapi.h:82
FT_SERVICE_ID_POSTSCRIPT_FONT_NAME
Definition: cffdrivr.c:671
FT_SERVICE_ID_CID
Definition: cffdrivr.c:671
FT_Error(* PS_GetFontExtraFunc)(FT_Face face, PS_FontExtraRec *afont_extra)
Definition: svpsinfo.h:37
CID_FaceInfoRec cid
Definition: t1types.h:237
cid_get_interface(FT_Module module, const char *cid_interface)
Definition: cidriver.c:180
const char *(* FT_PsName_GetFunc)(FT_Face face)
Definition: svpostnm.h:41
#define FT_CALLBACK_TABLE_DEF
Definition: ftconfig.h:333
GLuint64EXT * result
unsigned int FT_UInt
Definition: fttypes.h:227
cid_slot_done(FT_GlyphSlot slot)
Definition: cidobjs.c:50
cid_size_request(FT_Size size, FT_Size_Request req)
Definition: cidobjs.c:156
struct CID_SizeRec_ CID_SizeRec
FT_Int supplement
Definition: t1tables.h:359
cid_size_init(FT_Size cidsize)
Definition: cidobjs.c:131
FT_BEGIN_HEADER struct PS_FontInfoRec_ PS_FontInfoRec
cid_slot_init(FT_GlyphSlot slot)
Definition: cidobjs.c:57
FT_Int(* PS_HasGlyphNamesFunc)(FT_Face face)
Definition: svpsinfo.h:41
struct FT_DriverRec_ FT_DriverRec
FT_Error(* PS_GetFontPrivateFunc)(FT_Face face, PS_PrivateRec *afont_private)
Definition: svpsinfo.h:44
const char const char FT_Int * supplement
Definition: cffdrivr.c:452
FT_Error(* PS_GetFontInfoFunc)(FT_Face face, PS_FontInfoRec *afont_info)
Definition: svpsinfo.h:33
FT_CALLBACK_TABLE_DEF const FT_Driver_ClassRec t1cid_driver_class
Definition: cidriver.c:191
FT_Error(* FT_CID_GetCIDFromGlyphIndexFunc)(FT_Face face, FT_UInt glyph_index, FT_UInt *cid)
Definition: svcid.h:38
const char const char ** ordering
Definition: cffdrivr.c:449