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