1 /***************************************************************************/
2 /* */
3 /* t1objs.h */
4 /* */
5 /* Type 1 objects manager (specification). */
6 /* */
7 /* Copyright 1996-2001 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 /***************************************************************************/
19 #ifndef __T1OBJS_H__
20 #define __T1OBJS_H__
23 #include <ft2build.h>
24 #include FT_INTERNAL_OBJECTS_H
25 #include FT_CONFIG_CONFIG_H
26 #include FT_INTERNAL_TYPE1_TYPES_H
29 FT_BEGIN_HEADER
32 /* The following structures must be defined by the hinter */
33 typedef struct T1_Size_Hints_ T1_Size_Hints;
34 typedef struct T1_Glyph_Hints_ T1_Glyph_Hints;
37 /*************************************************************************/
38 /* */
39 /* <Type> */
40 /* T1_Driver */
41 /* */
42 /* <Description> */
43 /* A handle to a Type 1 driver object. */
44 /* */
45 typedef struct T1_DriverRec_ *T1_Driver;
48 /*************************************************************************/
49 /* */
50 /* <Type> */
51 /* T1_Size */
52 /* */
53 /* <Description> */
54 /* A handle to a Type 1 size object. */
55 /* */
56 typedef struct T1_SizeRec_* T1_Size;
59 /*************************************************************************/
60 /* */
61 /* <Type> */
62 /* T1_GlyphSlot */
63 /* */
64 /* <Description> */
65 /* A handle to a Type 1 glyph slot object. */
66 /* */
67 typedef struct T1_GlyphSlotRec_* T1_GlyphSlot;
70 /*************************************************************************/
71 /* */
72 /* <Type> */
73 /* T1_CharMap */
74 /* */
75 /* <Description> */
76 /* A handle to a Type 1 character mapping object. */
77 /* */
78 /* <Note> */
79 /* The Type 1 format doesn't use a charmap but an encoding table. */
80 /* The driver is responsible for making up charmap objects */
81 /* corresponding to these tables. */
82 /* */
83 typedef struct T1_CharMapRec_* T1_CharMap;
86 /*************************************************************************/
87 /* */
88 /* HERE BEGINS THE TYPE1 SPECIFIC STUFF */
89 /* */
90 /*************************************************************************/
93 /*************************************************************************/
94 /* */
95 /* <Type> */
96 /* T1_SizeRec */
97 /* */
98 /* <Description> */
99 /* Type 1 size record. */
100 /* */
101 typedef struct T1_SizeRec_
102 {
103 FT_SizeRec root;
104 FT_Bool valid;
105 T1_Size_Hints* hints; /* defined in the hinter. This allows */
106 /* us to experiment with different */
107 /* hinting schemes without having to */
108 /* change `t1objs' each time. */
109 } T1_SizeRec;
112 /*************************************************************************/
113 /* */
114 /* <Type> */
115 /* T1_GlyphSlotRec */
116 /* */
117 /* <Description> */
118 /* Type 1 glyph slot record. */
119 /* */
120 typedef struct T1_GlyphSlotRec_
121 {
122 FT_GlyphSlotRec root;
124 FT_Bool hint;
125 FT_Bool scaled;
127 FT_Int max_points;
128 FT_Int max_contours;
130 FT_Fixed x_scale;
131 FT_Fixed y_scale;
133 T1_Glyph_Hints* hints; /* defined in the hinter */
135 } T1_GlyphSlotRec;
138 FT_LOCAL FT_Error
139 T1_Init_Face( FT_Stream stream,
140 T1_Face face,
141 FT_Int face_index,
142 FT_Int num_params,
143 FT_Parameter* params );
145 FT_LOCAL void
146 T1_Done_Face( T1_Face face );
148 FT_LOCAL FT_Error
149 T1_Init_Driver( T1_Driver driver );
151 FT_LOCAL void
152 T1_Done_Driver( T1_Driver driver );
155 FT_END_HEADER
157 #endif /* __T1OBJS_H__ */
160 /* END */