sdk-world
v2026.11.05
PS2 SDK - world tier (copyleft-allowed, non-essential packages)
Toggle main menu visibility
Loading...
Searching...
No Matches
psblues.h
Go to the documentation of this file.
1
/****************************************************************************
2
*
3
* psblues.h
4
*
5
* Adobe's code for handling Blue Zones (specification).
6
*
7
* Copyright 2009-2013 Adobe Systems Incorporated.
8
*
9
* This software, and all works of authorship, whether in source or
10
* object code form as indicated by the copyright notice(s) included
11
* herein (collectively, the "Work") is made available, and may only be
12
* used, modified, and distributed under the FreeType Project License,
13
* LICENSE.TXT. Additionally, subject to the terms and conditions of the
14
* FreeType Project License, each contributor to the Work hereby grants
15
* to any individual or legal entity exercising permissions granted by
16
* the FreeType Project License and this section (hereafter, "You" or
17
* "Your") a perpetual, worldwide, non-exclusive, no-charge,
18
* royalty-free, irrevocable (except as stated in this section) patent
19
* license to make, have made, use, offer to sell, sell, import, and
20
* otherwise transfer the Work, where such license applies only to those
21
* patent claims licensable by such contributor that are necessarily
22
* infringed by their contribution(s) alone or by combination of their
23
* contribution(s) with the Work to which such contribution(s) was
24
* submitted. If You institute patent litigation against any entity
25
* (including a cross-claim or counterclaim in a lawsuit) alleging that
26
* the Work or a contribution incorporated within the Work constitutes
27
* direct or contributory patent infringement, then any patent licenses
28
* granted to You under this License for that Work shall terminate as of
29
* the date such litigation is filed.
30
*
31
* By using, modifying, or distributing the Work you indicate that you
32
* have read and understood the terms and conditions of the
33
* FreeType Project License as well as those provided in this section,
34
* and you accept them fully.
35
*
36
*/
37
38
39
/*
40
* A `CF2_Blues' object stores the blue zones (horizontal alignment
41
* zones) of a font. These are specified in the CFF private dictionary
42
* by `BlueValues', `OtherBlues', `FamilyBlues', and `FamilyOtherBlues'.
43
* Each zone is defined by a top and bottom edge in character space.
44
* Further, each zone is either a top zone or a bottom zone, as recorded
45
* by `bottomZone'.
46
*
47
* The maximum number of `BlueValues' and `FamilyBlues' is 7 each.
48
* However, these are combined to produce a total of 7 zones.
49
* Similarly, the maximum number of `OtherBlues' and `FamilyOtherBlues'
50
* is 5 and these are combined to produce an additional 5 zones.
51
*
52
* Blue zones are used to `capture' hints and force them to a common
53
* alignment point. This alignment is recorded in device space in
54
* `dsFlatEdge'. Except for this value, a `CF2_Blues' object could be
55
* constructed independently of scaling. Construction may occur once
56
* the matrix is known. Other features implemented in the Capture
57
* method are overshoot suppression, overshoot enforcement, and Blue
58
* Boost.
59
*
60
* Capture is determined by `BlueValues' and `OtherBlues', but the
61
* alignment point may be adjusted to the scaled flat edge of
62
* `FamilyBlues' or `FamilyOtherBlues'. No alignment is done to the
63
* curved edge of a zone.
64
*
65
*/
66
67
72
#ifndef PSBLUES_H_
73
#define PSBLUES_H_
74
75
76
#include "
psglue.h
"
77
78
79
FT_BEGIN_HEADER
80
81
82
/*
83
* `CF2_Hint' is shared by `cf2hints.h' and
84
* `cf2blues.h', but `cf2blues.h' depends on
85
* `cf2hints.h', so define it here. Note: The typedef is in
86
* `cf2glue.h'.
87
*
88
*/
89
enum
90
{
91
CF2_GhostBottom = 0x1,
/* a single bottom edge */
92
CF2_GhostTop = 0x2,
/* a single top edge */
93
CF2_PairBottom = 0x4,
/* the bottom edge of a stem hint */
94
CF2_PairTop = 0x8,
/* the top edge of a stem hint */
95
CF2_Locked = 0x10,
/* this edge has been aligned */
96
/* by a blue zone */
97
CF2_Synthetic = 0x20
/* this edge was synthesized */
98
};
99
100
101
/*
102
* Default value for OS/2 typoAscender/Descender when their difference
103
* is not equal to `unitsPerEm'. The default is based on -250 and 1100
104
* in `CF2_Blues', assuming 1000 units per em here.
105
*
106
*/
107
enum
108
{
109
CF2_ICF_Top = cf2_intToFixed( 880 ),
110
CF2_ICF_Bottom = cf2_intToFixed( -120 )
111
};
112
113
114
/*
115
* Constant used for hint adjustment and for synthetic em box hint
116
* placement.
117
*/
118
#define CF2_MIN_COUNTER cf2_doubleToFixed( 0.5 )
119
120
121
/* shared typedef is in cf2glue.h */
122
struct
CF2_HintRec_
123
{
124
CF2_UInt flags;
/* attributes of the edge */
125
size_t
index;
/* index in original stem hint array */
126
/* (if not synthetic) */
127
CF2_Fixed csCoord;
128
CF2_Fixed dsCoord;
129
CF2_Fixed scale;
130
};
131
132
133
typedef
struct
CF2_BlueRec_
134
{
135
CF2_Fixed csBottomEdge;
136
CF2_Fixed csTopEdge;
137
CF2_Fixed csFlatEdge;
/* may be from either local or Family zones */
138
CF2_Fixed dsFlatEdge;
/* top edge of bottom zone or bottom edge */
139
/* of top zone (rounded) */
140
FT_Bool bottomZone;
141
142
} CF2_BlueRec;
143
144
145
/* max total blue zones is 12 */
146
enum
147
{
148
CF2_MAX_BLUES = 7,
149
CF2_MAX_OTHERBLUES = 5
150
};
151
152
153
typedef
struct
CF2_BluesRec_
154
{
155
CF2_Fixed scale;
156
CF2_UInt count;
157
FT_Bool suppressOvershoot;
158
FT_Bool doEmBoxHints;
159
160
CF2_Fixed blueScale;
161
CF2_Fixed blueShift;
162
CF2_Fixed blueFuzz;
163
164
CF2_Fixed boost;
165
166
CF2_HintRec emBoxTopEdge;
167
CF2_HintRec emBoxBottomEdge;
168
169
CF2_BlueRec zone[CF2_MAX_BLUES + CF2_MAX_OTHERBLUES];
170
171
} CF2_BluesRec, *CF2_Blues;
172
173
174
FT_LOCAL(
void
)
175
cf2_blues_init( CF2_Blues blues,
176
CF2_Font font );
177
FT_LOCAL( FT_Bool )
178
cf2_blues_capture(
const
CF2_Blues blues,
179
CF2_Hint bottomHintEdge,
180
CF2_Hint topHintEdge );
181
182
183
FT_END_HEADER
184
185
186
#endif
/* PSBLUES_H_ */
187
188
189
/* END */
psglue.h
CF2_BlueRec_
Definition
psblues.h:134
CF2_BluesRec_
Definition
psblues.h:154
CF2_HintRec_
Definition
psblues.h:123
freetype
src
psaux
psblues.h
Generated by
1.18.0