cffobjs.h revision 727dee178a392d20eb050d0c446f2fcc29058fa1
1/***************************************************************************/
2/*                                                                         */
3/*  cffobjs.h                                                              */
4/*                                                                         */
5/*    OpenType objects manager (specification).                            */
6/*                                                                         */
7/*  Copyright 1996-2004, 2006-2008, 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#ifndef __CFFOBJS_H__
20#define __CFFOBJS_H__
21
22
23#include <ft2build.h>
24#include FT_INTERNAL_OBJECTS_H
25#include "cfftypes.h"
26#include FT_INTERNAL_TRUETYPE_TYPES_H
27#include FT_SERVICE_POSTSCRIPT_CMAPS_H
28#include FT_INTERNAL_POSTSCRIPT_HINTS_H
29
30
31FT_BEGIN_HEADER
32
33
34  /*************************************************************************/
35  /*                                                                       */
36  /* <Type>                                                                */
37  /*    CFF_Driver                                                         */
38  /*                                                                       */
39  /* <Description>                                                         */
40  /*    A handle to an OpenType driver object.                             */
41  /*                                                                       */
42  typedef struct CFF_DriverRec_*  CFF_Driver;
43
44  typedef TT_Face  CFF_Face;
45
46
47  /*************************************************************************/
48  /*                                                                       */
49  /* <Type>                                                                */
50  /*    CFF_Size                                                           */
51  /*                                                                       */
52  /* <Description>                                                         */
53  /*    A handle to an OpenType size object.                               */
54  /*                                                                       */
55  typedef struct  CFF_SizeRec_
56  {
57    FT_SizeRec  root;
58    FT_ULong    strike_index;    /* 0xFFFFFFFF to indicate invalid */
59
60  } CFF_SizeRec, *CFF_Size;
61
62
63  /*************************************************************************/
64  /*                                                                       */
65  /* <Type>                                                                */
66  /*    CFF_GlyphSlot                                                      */
67  /*                                                                       */
68  /* <Description>                                                         */
69  /*    A handle to an OpenType glyph slot object.                         */
70  /*                                                                       */
71  typedef struct  CFF_GlyphSlotRec_
72  {
73    FT_GlyphSlotRec  root;
74
75    FT_Bool          hint;
76    FT_Bool          scaled;
77
78    FT_Fixed         x_scale;
79    FT_Fixed         y_scale;
80
81  } CFF_GlyphSlotRec, *CFF_GlyphSlot;
82
83
84  /*************************************************************************/
85  /*                                                                       */
86  /* <Type>                                                                */
87  /*    CFF_Internal                                                       */
88  /*                                                                       */
89  /* <Description>                                                         */
90  /*    The interface to the `internal' field of `FT_Size'.                */
91  /*                                                                       */
92  typedef struct  CFF_InternalRec_
93  {
94    PSH_Globals  topfont;
95    PSH_Globals  subfonts[CFF_MAX_CID_FONTS];
96
97  } CFF_InternalRec, *CFF_Internal;
98
99
100  /*************************************************************************/
101  /*                                                                       */
102  /* Subglyph transformation record.                                       */
103  /*                                                                       */
104  typedef struct  CFF_Transform_
105  {
106    FT_Fixed    xx, xy;     /* transformation matrix coefficients */
107    FT_Fixed    yx, yy;
108    FT_F26Dot6  ox, oy;     /* offsets        */
109
110  } CFF_Transform;
111
112
113  /***********************************************************************/
114  /*                                                                     */
115  /* CFF driver class.                                                   */
116  /*                                                                     */
117  typedef struct  CFF_DriverRec_
118  {
119    FT_DriverRec  root;
120
121    FT_UInt  hinting_engine;
122    FT_Bool  no_stem_darkening;
123
124  } CFF_DriverRec;
125
126
127  FT_LOCAL( FT_Error )
128  cff_size_init( FT_Size  size );           /* CFF_Size */
129
130  FT_LOCAL( void )
131  cff_size_done( FT_Size  size );           /* CFF_Size */
132
133  FT_LOCAL( FT_Error )
134  cff_size_request( FT_Size          size,
135                    FT_Size_Request  req );
136
137#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
138
139  FT_LOCAL( FT_Error )
140  cff_size_select( FT_Size   size,
141                   FT_ULong  strike_index );
142
143#endif
144
145  FT_LOCAL( void )
146  cff_slot_done( FT_GlyphSlot  slot );
147
148  FT_LOCAL( FT_Error )
149  cff_slot_init( FT_GlyphSlot  slot );
150
151
152  /*************************************************************************/
153  /*                                                                       */
154  /* Face functions                                                        */
155  /*                                                                       */
156  FT_LOCAL( FT_Error )
157  cff_face_init( FT_Stream      stream,
158                 FT_Face        face,           /* CFF_Face */
159                 FT_Int         face_index,
160                 FT_Int         num_params,
161                 FT_Parameter*  params );
162
163  FT_LOCAL( void )
164  cff_face_done( FT_Face  face );               /* CFF_Face */
165
166
167  /*************************************************************************/
168  /*                                                                       */
169  /* Driver functions                                                      */
170  /*                                                                       */
171  FT_LOCAL( FT_Error )
172  cff_driver_init( FT_Module  module );         /* CFF_Driver */
173
174  FT_LOCAL( void )
175  cff_driver_done( FT_Module  module );         /* CFF_Driver */
176
177
178FT_END_HEADER
179
180#endif /* __CFFOBJS_H__ */
181
182
183/* END */
184