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