OLD | NEW |
| (Empty) |
1 /***************************************************************************/ | |
2 /* */ | |
3 /* pshglob.h */ | |
4 /* */ | |
5 /* PostScript hinter global hinting management. */ | |
6 /* */ | |
7 /* Copyright 2001, 2002, 2003 by */ | |
8 /* David Turner, Robert Wilhelm, and Werner Lemberg. */ | |
9 /* */ | |
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. */ | |
15 /* */ | |
16 /***************************************************************************/ | |
17 | |
18 | |
19 #ifndef __PSHGLOB_H__ | |
20 #define __PSHGLOB_H__ | |
21 | |
22 | |
23 #include "../../include/freetype/freetype.h" | |
24 #include "../../include/freetype/internal/pshints.h" | |
25 | |
26 | |
27 FT_BEGIN_HEADER | |
28 | |
29 | |
30 /*************************************************************************/ | |
31 /*************************************************************************/ | |
32 /***** *****/ | |
33 /***** GLOBAL HINTS INTERNALS *****/ | |
34 /***** *****/ | |
35 /*************************************************************************/ | |
36 /*************************************************************************/ | |
37 | |
38 | |
39 /*************************************************************************/ | |
40 /* */ | |
41 /* @constant: */ | |
42 /* PS_GLOBALS_MAX_BLUE_ZONES */ | |
43 /* */ | |
44 /* @description: */ | |
45 /* The maximum number of blue zones in a font global hints structure. */ | |
46 /* See @PS_Globals_BluesRec. */ | |
47 /* */ | |
48 #define PS_GLOBALS_MAX_BLUE_ZONES 16 | |
49 | |
50 | |
51 /*************************************************************************/ | |
52 /* */ | |
53 /* @constant: */ | |
54 /* PS_GLOBALS_MAX_STD_WIDTHS */ | |
55 /* */ | |
56 /* @description: */ | |
57 /* The maximum number of standard and snap widths in either the */ | |
58 /* horizontal or vertical direction. See @PS_Globals_WidthsRec. */ | |
59 /* */ | |
60 #define PS_GLOBALS_MAX_STD_WIDTHS 16 | |
61 | |
62 | |
63 /* standard and snap width */ | |
64 typedef struct PSH_WidthRec_ | |
65 { | |
66 FT_Int org; | |
67 FT_Pos cur; | |
68 FT_Pos fit; | |
69 | |
70 } PSH_WidthRec, *PSH_Width; | |
71 | |
72 | |
73 /* standard and snap widths table */ | |
74 typedef struct PSH_WidthsRec_ | |
75 { | |
76 FT_UInt count; | |
77 PSH_WidthRec widths[PS_GLOBALS_MAX_STD_WIDTHS]; | |
78 | |
79 } PSH_WidthsRec, *PSH_Widths; | |
80 | |
81 | |
82 typedef struct PSH_DimensionRec_ | |
83 { | |
84 PSH_WidthsRec stdw; | |
85 FT_Fixed scale_mult; | |
86 FT_Fixed scale_delta; | |
87 | |
88 } PSH_DimensionRec, *PSH_Dimension; | |
89 | |
90 | |
91 /* blue zone descriptor */ | |
92 typedef struct PSH_Blue_ZoneRec_ | |
93 { | |
94 FT_Int org_ref; | |
95 FT_Int org_delta; | |
96 FT_Int org_top; | |
97 FT_Int org_bottom; | |
98 | |
99 FT_Pos cur_ref; | |
100 FT_Pos cur_delta; | |
101 FT_Pos cur_bottom; | |
102 FT_Pos cur_top; | |
103 | |
104 } PSH_Blue_ZoneRec, *PSH_Blue_Zone; | |
105 | |
106 | |
107 typedef struct PSH_Blue_TableRec_ | |
108 { | |
109 FT_UInt count; | |
110 PSH_Blue_ZoneRec zones[PS_GLOBALS_MAX_BLUE_ZONES]; | |
111 | |
112 } PSH_Blue_TableRec, *PSH_Blue_Table; | |
113 | |
114 | |
115 /* blue zones table */ | |
116 typedef struct PSH_BluesRec_ | |
117 { | |
118 PSH_Blue_TableRec normal_top; | |
119 PSH_Blue_TableRec normal_bottom; | |
120 PSH_Blue_TableRec family_top; | |
121 PSH_Blue_TableRec family_bottom; | |
122 | |
123 FT_Fixed blue_scale; | |
124 FT_Int blue_shift; | |
125 FT_Int blue_threshold; | |
126 FT_Int blue_fuzz; | |
127 FT_Bool no_overshoots; | |
128 | |
129 } PSH_BluesRec, *PSH_Blues; | |
130 | |
131 | |
132 /* font globals. */ | |
133 /* dimension 0 => X coordinates + vertical hints/stems */ | |
134 /* dimension 1 => Y coordinates + horizontal hints/stems */ | |
135 typedef struct PSH_GlobalsRec_ | |
136 { | |
137 FT_Memory memory; | |
138 PSH_DimensionRec dimension[2]; | |
139 PSH_BluesRec blues; | |
140 | |
141 } PSH_GlobalsRec; | |
142 | |
143 | |
144 #define PSH_BLUE_ALIGN_NONE 0 | |
145 #define PSH_BLUE_ALIGN_TOP 1 | |
146 #define PSH_BLUE_ALIGN_BOT 2 | |
147 | |
148 | |
149 typedef struct PSH_AlignmentRec_ | |
150 { | |
151 int align; | |
152 FT_Pos align_top; | |
153 FT_Pos align_bot; | |
154 | |
155 } PSH_AlignmentRec, *PSH_Alignment; | |
156 | |
157 | |
158 FT_LOCAL( void ) | |
159 psh_globals_funcs_init( PSH_Globals_FuncsRec* funcs ); | |
160 | |
161 | |
162 #if 0 | |
163 /* snap a stem width to fitter coordinates. `org_width' is in font */ | |
164 /* units. The result is in device pixels (26.6 format). */ | |
165 FT_LOCAL( FT_Pos ) | |
166 psh_dimension_snap_width( PSH_Dimension dimension, | |
167 FT_Int org_width ); | |
168 #endif | |
169 | |
170 FT_LOCAL( FT_Error ) | |
171 psh_globals_set_scale( PSH_Globals globals, | |
172 FT_Fixed x_scale, | |
173 FT_Fixed y_scale, | |
174 FT_Fixed x_delta, | |
175 FT_Fixed y_delta ); | |
176 | |
177 /* snap a stem to one or two blue zones */ | |
178 FT_LOCAL( void ) | |
179 psh_blues_snap_stem( PSH_Blues blues, | |
180 FT_Int stem_top, | |
181 FT_Int stem_bot, | |
182 PSH_Alignment alignment ); | |
183 /* */ | |
184 | |
185 #ifdef DEBUG_HINTER | |
186 extern PSH_Globals ps_debug_globals; | |
187 #endif | |
188 | |
189 | |
190 FT_END_HEADER | |
191 | |
192 | |
193 #endif /* __PSHGLOB_H__ */ | |
194 | |
195 | |
196 /* END */ | |
OLD | NEW |