1 /***************************************************************************/
5 /* Postscript (Type1/Type2) hints recorder (specification). */
7 /* Copyright 2001, 2002, 2003, 2006, 2008 by */
8 /* David Turner, Robert Wilhelm, and Werner Lemberg. */
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. */
16 /***************************************************************************/
19 /**************************************************************************/
21 /* The functions defined here are called from the Type 1, CID and CFF */
22 /* font drivers to record the hints of a given character/glyph. */
24 /* The hints are recorded in a unified format, and are later processed */
25 /* by the `optimizer' and `fitter' to adjust the outlines to the pixel */
28 /**************************************************************************/
36 #include FT_INTERNAL_POSTSCRIPT_HINTS_H
43 /*************************************************************************/
44 /*************************************************************************/
46 /***** GLYPH HINTS RECORDER INTERNALS *****/
48 /*************************************************************************/
49 /*************************************************************************/
51 /* handle to hint record */
52 typedef struct PS_HintRec_
* PS_Hint
;
55 typedef enum PS_Hint_Type_
64 typedef enum PS_Hint_Flags_
66 PS_HINT_FLAG_GHOST
= 1,
67 PS_HINT_FLAG_BOTTOM
= 2
73 typedef struct PS_HintRec_
82 #define ps_hint_is_active( x ) ( (x)->flags & PS_HINT_FLAG_ACTIVE )
83 #define ps_hint_is_ghost( x ) ( (x)->flags & PS_HINT_FLAG_GHOST )
84 #define ps_hint_is_bottom( x ) ( (x)->flags & PS_HINT_FLAG_BOTTOM )
87 /* hints table descriptor */
88 typedef struct PS_Hint_TableRec_
94 } PS_Hint_TableRec
, *PS_Hint_Table
;
97 /* hint and counter mask descriptor */
98 typedef struct PS_MaskRec_
105 } PS_MaskRec
, *PS_Mask
;
108 /* masks and counters table descriptor */
109 typedef struct PS_Mask_TableRec_
115 } PS_Mask_TableRec
, *PS_Mask_Table
;
118 /* dimension-specific hints descriptor */
119 typedef struct PS_DimensionRec_
121 PS_Hint_TableRec hints
;
122 PS_Mask_TableRec masks
;
123 PS_Mask_TableRec counters
;
125 } PS_DimensionRec
, *PS_Dimension
;
128 /* glyph hints descriptor */
129 /* dimension 0 => X coordinates + vertical hints/stems */
130 /* dimension 1 => Y coordinates + horizontal hints/stems */
131 typedef struct PS_HintsRec_
136 PS_Hint_Type hint_type
;
137 PS_DimensionRec dimension
[2];
139 } PS_HintsRec
, *PS_Hints
;
143 /* initialize hints recorder */
145 ps_hints_init( PS_Hints hints
,
148 /* finalize hints recorder */
150 ps_hints_done( PS_Hints hints
);
152 /* initialize Type1 hints recorder interface */
154 t1_hints_funcs_init( T1_Hints_FuncsRec
* funcs
);
156 /* initialize Type2 hints recorder interface */
158 t2_hints_funcs_init( T2_Hints_FuncsRec
* funcs
);
162 extern PS_Hints ps_debug_hints
;
163 extern int ps_debug_no_horz_hints
;
164 extern int ps_debug_no_vert_hints
;
173 #endif /* __PS_HINTER_RECORD_H__ */