1
/***************************************************************************/
5
/* PostScript hinter global hinting management. */
7
/* Copyright 2001, 2002, 2003 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
/***************************************************************************/
23
#include FT_FREETYPE_H
24
#include FT_INTERNAL_POSTSCRIPT_HINTS_H
30
/*************************************************************************/
31
/*************************************************************************/
33
/***** GLOBAL HINTS INTERNALS *****/
35
/*************************************************************************/
36
/*************************************************************************/
39
/*************************************************************************/
42
/* PS_GLOBALS_MAX_BLUE_ZONES */
45
/* The maximum number of blue zones in a font global hints structure. */
46
/* See @PS_Globals_BluesRec. */
48
#define PS_GLOBALS_MAX_BLUE_ZONES 16
51
/*************************************************************************/
54
/* PS_GLOBALS_MAX_STD_WIDTHS */
57
/* The maximum number of standard and snap widths in either the */
58
/* horizontal or vertical direction. See @PS_Globals_WidthsRec. */
60
#define PS_GLOBALS_MAX_STD_WIDTHS 16
63
/* standard and snap width */
64
typedef struct PSH_WidthRec_
70
} PSH_WidthRec, *PSH_Width;
73
/* standard and snap widths table */
74
typedef struct PSH_WidthsRec_
77
PSH_WidthRec widths[PS_GLOBALS_MAX_STD_WIDTHS];
79
} PSH_WidthsRec, *PSH_Widths;
82
typedef struct PSH_DimensionRec_
88
} PSH_DimensionRec, *PSH_Dimension;
91
/* blue zone descriptor */
92
typedef struct PSH_Blue_ZoneRec_
104
} PSH_Blue_ZoneRec, *PSH_Blue_Zone;
107
typedef struct PSH_Blue_TableRec_
110
PSH_Blue_ZoneRec zones[PS_GLOBALS_MAX_BLUE_ZONES];
112
} PSH_Blue_TableRec, *PSH_Blue_Table;
115
/* blue zones table */
116
typedef struct PSH_BluesRec_
118
PSH_Blue_TableRec normal_top;
119
PSH_Blue_TableRec normal_bottom;
120
PSH_Blue_TableRec family_top;
121
PSH_Blue_TableRec family_bottom;
125
FT_Int blue_threshold;
127
FT_Bool no_overshoots;
129
} PSH_BluesRec, *PSH_Blues;
133
/* dimension 0 => X coordinates + vertical hints/stems */
134
/* dimension 1 => Y coordinates + horizontal hints/stems */
135
typedef struct PSH_GlobalsRec_
138
PSH_DimensionRec dimension[2];
144
#define PSH_BLUE_ALIGN_NONE 0
145
#define PSH_BLUE_ALIGN_TOP 1
146
#define PSH_BLUE_ALIGN_BOT 2
149
typedef struct PSH_AlignmentRec_
155
} PSH_AlignmentRec, *PSH_Alignment;
159
psh_globals_funcs_init( PSH_Globals_FuncsRec* funcs );
163
/* snap a stem width to fitter coordinates. `org_width' is in font */
164
/* units. The result is in device pixels (26.6 format). */
166
psh_dimension_snap_width( PSH_Dimension dimension,
171
psh_globals_set_scale( PSH_Globals globals,
177
/* snap a stem to one or two blue zones */
179
psh_blues_snap_stem( PSH_Blues blues,
182
PSH_Alignment alignment );
186
extern PSH_Globals ps_debug_globals;
193
#endif /* __PSHGLOB_H__ */