396 {
399#ifdef __REACTOS__
401 if (!decoder_allocated)
403
404#define decoder (*decoder_allocated)
405 {
406#else
408#endif
416
421#ifdef FT_CONFIG_OPTION_INCREMENTAL
423#endif
424
425
426#ifdef FT_CONFIG_OPTION_INCREMENTAL
427 if ( glyph_index >= (
FT_UInt)
face->root.num_glyphs &&
428 !
face->root.internal->incremental_interface )
429#else
430 if ( glyph_index >= (
FT_UInt)
face->root.num_glyphs )
431#endif
432 {
435 }
436
437 FT_TRACE1((
"T1_Load_Glyph: glyph index %d\n", glyph_index ));
438
440
443
444 if ( t1size )
445 {
446 glyph->
x_scale = t1size->metrics.x_scale;
447 glyph->
y_scale = t1size->metrics.y_scale;
448 }
449 else
450 {
453 }
454
455 t1glyph->outline.n_points = 0;
456 t1glyph->outline.n_contours = 0;
457
461
462 glyph->
hint = hinting;
464 t1glyph->format = FT_GLYPH_FORMAT_OUTLINE;
465
467 t1glyph->face,
468 t1size,
469 t1glyph,
472 hinting,
477
478 must_finish_decoder =
TRUE;
479
481
482 decoder.num_subrs = type1->num_subrs;
484 decoder.subrs_len = type1->subrs_len;
485 decoder.subrs_hash = type1->subrs_hash;
486
489
490
492 &glyph_data,
493 &force_scaling );
496#ifdef FT_CONFIG_OPTION_INCREMENTAL
497 glyph_data_loaded = 1;
498#endif
499
500 hinting = glyph->
hint;
501 font_matrix =
decoder.font_matrix;
502 font_offset =
decoder.font_offset;
503
504
506
507 must_finish_decoder =
FALSE;
508
509
510
511
513 {
516
517
518
520 {
522
523
524 t1glyph->metrics.horiBearingX =
526 t1glyph->metrics.horiAdvance =
528
529 internal->glyph_matrix = font_matrix;
530 internal->glyph_delta = font_offset;
532 }
533 else
534 {
537
538
539
542 t1glyph->linearHoriAdvance =
544 t1glyph->internal->glyph_transformed = 0;
545
547 {
548
549 metrics->vertAdvance = (
face->type1.font_bbox.yMax -
550 face->type1.font_bbox.yMin ) >> 16;
551 t1glyph->linearVertAdvance =
metrics->vertAdvance;
552 }
553 else
554 {
557 t1glyph->linearVertAdvance =
559 }
560
561 t1glyph->format = FT_GLYPH_FORMAT_OUTLINE;
562
563 if ( t1size && t1size->metrics.y_ppem < 24 )
565
566#if 1
567
568 if ( font_matrix.
xx != 0x10000L || font_matrix.
yy != 0x10000L ||
569 font_matrix.
xy != 0 || font_matrix.
yx != 0 )
570 {
572
577 }
578
579 if ( font_offset.
x || font_offset.
y )
580 {
584
585 metrics->horiAdvance += font_offset.
x;
586 metrics->vertAdvance += font_offset.
y;
587 }
588#endif
589
591 {
592
598
599
600
601 if ( !hinting || !
decoder.builder.hints_funcs )
602 for (
n =
cur->n_points;
n > 0;
n--,
vec++ )
603 {
606 }
607
608
611 }
612
613
615
618
621
623 {
624
627 }
628 }
629
630
631
633 t1glyph->control_len = glyph_data.
length;
634 }
635
636
638
639#ifdef FT_CONFIG_OPTION_INCREMENTAL
640 if ( glyph_data_loaded &&
face->root.internal->incremental_interface )
641 {
642 face->root.internal->incremental_interface->funcs->free_glyph_data(
643 face->root.internal->incremental_interface->object,
644 &glyph_data );
645
646
647
648 t1glyph->control_data =
NULL;
649 t1glyph->control_len = 0;
650 }
651#endif
652
653 if ( must_finish_decoder )
655
656#ifdef __REACTOS__
657 free(decoder_allocated);
658#undef decoder
659 }
660#endif
662 }
ios_base &_STLP_CALL internal(ios_base &__s)
#define FT_LOAD_TARGET_MODE(x)
FT_BEGIN_HEADER struct FT_Glyph_Metrics_ FT_Glyph_Metrics
#define FT_LOAD_NO_RECURSE
#define FT_LOAD_NO_HINTING
FT_MulFix(FT_Long a, FT_Long b)
#define FT_TRACE1(varformat)
#define FT_OUTLINE_HIGH_PRECISION
#define FT_OUTLINE_REVERSE_FILL
ft_synthesize_vertical_metrics(FT_Glyph_Metrics *metrics, FT_Pos advance)
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)
FT_BEGIN_HEADER typedef unsigned char FT_Bool
GLsizei GLenum const GLvoid GLuint GLsizei GLfloat * metrics
static FT_Error T1_Parse_Glyph_And_Get_Char_String(T1_Decoder decoder, FT_UInt glyph_index, FT_Data *char_string, FT_Bool *force_scaling)
struct T1_GlyphSlotRec_ * T1_GlyphSlot