1 /***************************************************************************/
5 /* Postscript (Type1/Type2) hints recorder (specification). */
7 /* Copyright 2001, 2002 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;
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 /* magic value used within PS_HintsRec */
129 #define PS_HINTS_MAGIC 0x68696e74 /* "hint" */
132 /* glyph hints descriptor */
133 /* dimension 0 => X coordinates + vertical hints/stems */
134 /* dimension 1 => Y coordinates + horizontal hints/stems */
135 typedef struct PS_HintsRec_
140 PS_Hint_Type hint_type;
141 PS_DimensionRec dimension[2];
143 } PS_HintsRec, *PS_Hints;
147 /* initialize hints recorder */
149 ps_hints_init( PS_Hints hints,
152 /* finalize hints recorder */
154 ps_hints_done( PS_Hints hints );
156 /* initialize Type1 hints recorder interface */
158 t1_hints_funcs_init( T1_Hints_FuncsRec* funcs );
160 /* initialize Type2 hints recorder interface */
162 t2_hints_funcs_init( T2_Hints_FuncsRec* funcs );
166 extern PS_Hints ps_debug_hints;
167 extern int ps_debug_no_horz_hints;
168 extern int ps_debug_no_vert_hints;
177 #endif /* __PS_HINTER_RECORD_H__ */