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__ */