68 {
69
71
75
76 size_t numBlueValues;
77 size_t numOtherBlues;
78 size_t numFamilyBlues;
79 size_t numFamilyOtherBlues;
80
85
88
89#if 0
91
92
93 if ( unitsPerEm == 0 )
94 unitsPerEm = 1000;
95#endif
96
99
104
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123#if 0
124 FCM_getHorizontalLineMetrics( &
e,
126 &ascender,
127 &descender,
128 &linegap );
129 if ( ascender - descender == unitsPerEm )
130 {
133 }
134 else
135#endif
136 {
139 }
140
142 ( numBlueValues == 0 ||
143 ( numBlueValues == 4 &&
148 {
149
150
151
152
153
154
155
156
157
158
159
170
182
184
185 return;
186 }
187
188
189
190 for (
i = 0;
i < numBlueValues;
i += 2 )
191 {
196
199
200 if ( zoneHeight < 0 )
201 {
202 FT_TRACE4((
"cf2_blues_init: ignoring negative zone height\n" ));
203 continue;
204 }
205
206 if ( zoneHeight > maxZoneHeight )
207 {
208
209
210 maxZoneHeight = zoneHeight;
211 }
212
213
215 {
218 }
219
220
222 {
227 }
228 else
229 {
234 }
235
237 }
238
239 for (
i = 0;
i < numOtherBlues;
i += 2 )
240 {
245
248
249 if ( zoneHeight < 0 )
250 {
251 FT_TRACE4((
"cf2_blues_init: ignoring negative zone height\n" ));
252 continue;
253 }
254
255 if ( zoneHeight > maxZoneHeight )
256 {
257
258
259 maxZoneHeight = zoneHeight;
260 }
261
262
263
264
269
271 }
272
273
274
275
276
277
278
280
281
282 for (
i = 0;
i < blues->
count;
i++ )
283 {
287
289
290
292 {
293
294
295
296
298
299 for (
j = 0;
j < numFamilyOtherBlues;
j += 2 )
300 {
301
303
305
306 if ( diff < minDiff && diff < csUnitsPerPixel )
307 {
309 minDiff = diff;
310
311 if ( diff == 0 )
312 break;
313 }
314 }
315
316
317 if ( numFamilyBlues >= 2 )
318 {
319
321
323
324 if ( diff < minDiff && diff < csUnitsPerPixel )
326 }
327 }
328 else
329 {
330
331
332
333
334
336
337 for (
j = 2;
j < numFamilyBlues;
j += 2 )
338 {
339
341
342
343 flatFamilyEdge += 2 *
font->darkenY;
344
346
347 if ( diff < minDiff && diff < csUnitsPerPixel )
348 {
350 minDiff = diff;
351
352 if ( diff == 0 )
353 break;
354 }
355 }
356 }
357 }
358
359
360
361
362
363
364 if ( maxZoneHeight > 0 )
365 {
367 maxZoneHeight ) )
368 {
369
371 maxZoneHeight );
372 }
373
374
375
376
377
378
379
380
381
382
383
384#if 0
385 if ( blueScale < .4 / maxZoneHeight )
386 {
387 tetraphilia_assert( 0 );
388
389 blueScale = .4 / maxZoneHeight;
390 }
391#endif
392
393 }
394
395
396
397
398
399
400
401
402
404 {
406
407
408
409
410
415 if ( blues->
boost > 0x7FFF )
416 {
417
418 blues->
boost = 0x7FFF;
419 }
420 }
421
422
423 if (
font->stemDarkened )
425
426
427
428
429 for (
i = 0;
i < blues->
count;
i++ )
430 {
437 else
443 }
444 }
FT_DivFix(FT_Long a, FT_Long b)
FT_MulDiv(FT_Long a, FT_Long b, FT_Long c)
FT_MulFix(FT_Long a, FT_Long b)
#define FT_TRACE4(varformat)
FT_BEGIN_HEADER typedef signed long FT_Pos
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
#define cf2_blueToFixed(x)
#define CF2_FIXED_EPSILON
#define cf2_doubleToFixed(f)
cf2_getBlueValues(PS_Decoder *decoder, size_t *count, FT_Pos **data)
cf2_getLanguageGroup(PS_Decoder *decoder)
cf2_getFamilyOtherBlues(PS_Decoder *decoder, size_t *count, FT_Pos **data)
cf2_getFamilyBlues(PS_Decoder *decoder, size_t *count, FT_Pos **data)
cf2_getOtherBlues(PS_Decoder *decoder, size_t *count, FT_Pos **data)
cf2_getBlueMetrics(PS_Decoder *decoder, CF2_Fixed *blueScale, CF2_Fixed *blueShift, CF2_Fixed *blueFuzz)
CF2_HintRec emBoxBottomEdge