1/****************************************************************************
2 *
3 * t1objs.h
4 *
5 * Type 1 objects manager (specification).
6 *
7 * Copyright (C) 1996-2023 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 T1OBJS_H_
20#define T1OBJS_H_
21
22
23#include <ft2build.h>
24#include <freetype/internal/ftobjs.h>
25#include FT_CONFIG_CONFIG_H
26#include <freetype/internal/t1types.h>
27
28
29FT_BEGIN_HEADER
30
31
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;
35
36
37 /**************************************************************************
38 *
39 * @Type:
40 * T1_Size
41 *
42 * @Description:
43 * A handle to a Type 1 size object.
44 */
45 typedef struct T1_SizeRec_* T1_Size;
46
47
48 /**************************************************************************
49 *
50 * @Type:
51 * T1_GlyphSlot
52 *
53 * @Description:
54 * A handle to a Type 1 glyph slot object.
55 */
56 typedef struct T1_GlyphSlotRec_* T1_GlyphSlot;
57
58
59 /**************************************************************************
60 *
61 * @Type:
62 * T1_CharMap
63 *
64 * @Description:
65 * A handle to a Type 1 character mapping object.
66 *
67 * @Note:
68 * The Type 1 format doesn't use a charmap but an encoding table.
69 * The driver is responsible for making up charmap objects
70 * corresponding to these tables.
71 */
72 typedef struct T1_CharMapRec_* T1_CharMap;
73
74
75 /**************************************************************************
76 *
77 * HERE BEGINS THE TYPE1 SPECIFIC STUFF
78 *
79 */
80
81
82 /**************************************************************************
83 *
84 * @Type:
85 * T1_SizeRec
86 *
87 * @Description:
88 * Type 1 size record.
89 */
90 typedef struct T1_SizeRec_
91 {
92 FT_SizeRec root;
93
94 } T1_SizeRec;
95
96
97 FT_LOCAL( void )
98 T1_Size_Done( FT_Size size );
99
100 FT_LOCAL( FT_Error )
101 T1_Size_Request( FT_Size size,
102 FT_Size_Request req );
103
104 FT_LOCAL( FT_Error )
105 T1_Size_Init( FT_Size size );
106
107
108 /**************************************************************************
109 *
110 * @Type:
111 * T1_GlyphSlotRec
112 *
113 * @Description:
114 * Type 1 glyph slot record.
115 */
116 typedef struct T1_GlyphSlotRec_
117 {
118 FT_GlyphSlotRec root;
119
120 FT_Bool hint;
121 FT_Bool scaled;
122
123 FT_Fixed x_scale;
124 FT_Fixed y_scale;
125
126 FT_Int max_points;
127 FT_Int max_contours;
128
129 } T1_GlyphSlotRec;
130
131
132 FT_LOCAL( FT_Error )
133 T1_Face_Init( FT_Stream stream,
134 FT_Face face,
135 FT_Int face_index,
136 FT_Int num_params,
137 FT_Parameter* params );
138
139 FT_LOCAL( void )
140 T1_Face_Done( FT_Face face );
141
142 FT_LOCAL( FT_Error )
143 T1_GlyphSlot_Init( FT_GlyphSlot slot );
144
145 FT_LOCAL( void )
146 T1_GlyphSlot_Done( FT_GlyphSlot slot );
147
148 FT_LOCAL( FT_Error )
149 T1_Driver_Init( FT_Module driver );
150
151 FT_LOCAL( void )
152 T1_Driver_Done( FT_Module driver );
153
154
155FT_END_HEADER
156
157#endif /* T1OBJS_H_ */
158
159
160/* END */
161