Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
4349 | Serge | 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 FT_FREETYPE_H |
||
24 | #include FT_INTERNAL_POSTSCRIPT_HINTS_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 */ |