199 {
204 FT_Bool hinting, scaled, force_scaling;
206
209
212
213
214 force_scaling =
FALSE;
215
216
217
218
221 {
222
223 if ( glyph_index != 0 )
224 {
226 glyph_index );
227 if ( glyph_index == 0 )
228 return FT_THROW( Invalid_Argument );
229 }
230 }
232 return FT_THROW( Invalid_Argument );
233
236
240 {
243 }
244
245#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
246
247
248
249
250
252 {
256
257
258 if (
size->strike_index != 0xFFFFFFFFUL &&
261 {
263
264
267 glyph_index,
272
274 {
278
279
282
285
289
293
295
297 {
300 }
301 else
302 {
305 }
306
307
308
310 glyph_index,
314
316 face->vertical_info &&
317 face->vertical.number_Of_VMetrics > 0 );
318
319
320 if ( has_vertical_info )
321 {
323 glyph_index,
327 }
328 else
329 {
330
331 if (
face->os2.version != 0xFFFFU )
333 (
face->os2.sTypoAscender -
face->os2.sTypoDescender );
334 else
336 (
face->horizontal.Ascender -
face->horizontal.Descender );
337 }
338
340 }
341 }
342 }
343
344#endif
345
346
348 return FT_THROW( Invalid_Argument );
349
350
351
352
353
355 {
358 glyph_index );
359
360
363
366
367
370
371 if ( top_upm != sub_upm )
372 {
375
376 force_scaling =
TRUE;
377 }
378 }
379 else
380 {
383 }
384
387
388
389
392
393 glyph->
hint = hinting;
396
397 {
398#ifdef CFF_CONFIG_OPTION_OLD_ENGINE
400#endif
401
402
405
406
407 decoder_funcs->init( &decoder,
face,
size, glyph, hinting,
411
412
415
418
419
421 &charstring, &charstring_len );
423 goto Glyph_Build_Finished;
424
425 error = decoder_funcs->prepare( &decoder,
size, glyph_index );
427 goto Glyph_Build_Finished;
428
429#ifdef CFF_CONFIG_OPTION_OLD_ENGINE
430
432 error = decoder_funcs->parse_charstrings_old( &decoder,
433 charstring,
434 charstring_len,
435 0 );
436 else
437#endif
438 {
440
441 error = decoder_funcs->parse_charstrings( &psdecoder,
442 charstring,
443 charstring_len );
444
445
446
448 {
449
450
451
453 force_scaling =
TRUE;
454 glyph->
hint = hinting;
455
456 error = decoder_funcs->parse_charstrings( &psdecoder,
457 charstring,
458 charstring_len );
459 }
460 }
461
463
465 goto Glyph_Build_Finished;
466
467#ifdef FT_CONFIG_OPTION_INCREMENTAL
468
469
470 if (
face->root.internal->incremental_interface )
471 {
474 }
475 else
476#endif
477
478
479
480
481 {
483
484
485 if ( csindex->offsets )
486 {
488 csindex->offsets[glyph_index] - 1;
490 }
491 }
492
493 Glyph_Build_Finished:
494
497
498 }
499
500#ifdef FT_CONFIG_OPTION_INCREMENTAL
501
502
504 face->root.internal->incremental_interface &&
505 face->root.internal->incremental_interface->funcs->get_glyph_metrics )
506 {
508
509
514
515 error =
face->root.internal->incremental_interface->funcs->get_glyph_metrics(
516 face->root.internal->incremental_interface->object,
518
522 }
523
524#endif
525
527 {
528
529
530
531
532
533
535 {
537
538
541 internal->glyph_matrix = font_matrix;
542 internal->glyph_delta = font_offset;
544 }
545 else
546 {
550
551
552 if (
face->horizontal.number_Of_HMetrics )
553 {
556
557
559 glyph_index,
560 &horiBearingX,
561 &horiAdvance );
562 metrics->horiAdvance = horiAdvance;
563 metrics->horiBearingX = horiBearingX;
565 }
566 else
567 {
568
571 }
572
574
575 has_vertical_info =
FT_BOOL(
face->vertical_info &&
576 face->vertical.number_Of_VMetrics > 0 );
577
578
579 if ( has_vertical_info )
580 {
583
584
586 glyph_index,
587 &vertBearingY,
588 &vertAdvance );
589 metrics->vertBearingY = vertBearingY;
590 metrics->vertAdvance = vertAdvance;
591 }
592 else
593 {
594
595 if (
face->os2.version != 0xFFFFU )
597 face->os2.sTypoDescender );
598 else
600 face->horizontal.Descender );
601 }
602
604
606
608 if (
size &&
size->root.metrics.y_ppem < 24 )
610
612
613
614 if ( font_matrix.xx != 0x10000L || font_matrix.yy != 0x10000L ||
615 font_matrix.xy != 0 || font_matrix.yx != 0 )
616 {
618
620 font_matrix.xx );
622 font_matrix.yy );
623 }
624
625 if ( font_offset.x || font_offset.y )
626 {
628 font_offset.x,
629 font_offset.y );
630
631 metrics->horiAdvance += font_offset.x;
632 metrics->vertAdvance += font_offset.y;
633 }
634
636 {
637
643
644
645
647 for (
n =
cur->n_points;
n > 0;
n--,
vec++ )
648 {
651 }
652
653
656 }
657
658
660
663
666
667 if ( has_vertical_info )
670 else
671 {
675 }
676 }
677 }
678
680 }
ios_base &_STLP_CALL internal(ios_base &__s)
_STLP_MOVE_TO_STD_NAMESPACE void _STLP_CALL advance(_InputIterator &__i, _Distance __n)
cff_get_glyph_data(TT_Face face, FT_UInt glyph_index, FT_Byte **pointer, FT_ULong *length)
cff_free_glyph_data(TT_Face face, FT_Byte **pointer, FT_ULong length)
cff_charset_cid_to_gindex(CFF_Charset charset, FT_UInt cid)
cff_fd_select_get(CFF_FDSelect fdselect, FT_UInt glyph_index)
FT_BEGIN_HEADER typedef TT_Face CFF_Face
FT_BEGIN_HEADER struct CFF_IndexRec_ * CFF_Index
#define FT_LOAD_VERTICAL_LAYOUT
#define FT_LOAD_TARGET_MODE(x)
FT_BEGIN_HEADER struct FT_Glyph_Metrics_ FT_Glyph_Metrics
#define FT_LOAD_SBITS_ONLY
#define FT_LOAD_NO_BITMAP
#define FT_LOAD_NO_RECURSE
#define FT_LOAD_ADVANCE_ONLY
#define FT_LOAD_NO_HINTING
FT_MulDiv(FT_Long a, FT_Long b, FT_Long c)
FT_MulFix(FT_Long a, FT_Long b)
#define FT_HINTING_FREETYPE
#define FT_OUTLINE_HIGH_PRECISION
#define FT_OUTLINE_REVERSE_FILL
FT_BEGIN_HEADER typedef signed long FT_Pos
ft_synthesize_vertical_metrics(FT_Glyph_Metrics *metrics, FT_Pos advance)
#define FT_FACE_DRIVER(x)
FT_Outline_Translate(const FT_Outline *outline, FT_Pos xOffset, FT_Pos yOffset)
FT_Outline_Transform(const FT_Outline *outline, const FT_Matrix *matrix)
FT_Outline_Get_CBox(const FT_Outline *outline, FT_BBox *acbox)
smooth FT_Module_Constructor FT_Module_Destructor FT_Module_Requester FT_GLYPH_FORMAT_OUTLINE
FT_BEGIN_HEADER typedef unsigned char FT_Bool
GLsizei GLenum const GLvoid GLuint GLsizei GLfloat * metrics
struct @1677::@1678 driver
FT_BEGIN_HEADER struct PS_DriverRec_ * PS_Driver
struct PSAux_ServiceRec_ * PSAux_Service
SFNT_Interface * SFNT_Service
void(* done)(CFF_Builder *builder)
CFF_Builder_FuncsRec funcs
CFF_SubFont subfonts[CFF_MAX_CID_FONTS]
CFF_FDSelectRec fd_select
CFF_FontRecDictRec font_dict
FT_Slot_Internal internal
FT_Fixed linearHoriAdvance
FT_Fixed linearVertAdvance
FT_Bool glyph_transformed
void(* ps_decoder_init)(PS_Decoder *ps_decoder, void *decoder, FT_Bool is_t1)
const CFF_Decoder_FuncsRec * cff_decoder_funcs
TT_Load_Table_Func load_eblc
TT_Load_SBit_Image_Func load_sbit_image
struct TT_FaceRec_ * TT_Face