20#include FT_INTERNAL_DEBUG_H
21#include FT_CONFIG_CONFIG_H
22#include FT_INTERNAL_CALC_H
23#include FT_INTERNAL_STREAM_H
24#include FT_INTERNAL_SFNT_H
25#include FT_TRUETYPE_TAGS_H
33#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
48#define FT_COMPONENT ttgload
55#define ON_CURVE_POINT 0x01
56#define X_SHORT_VECTOR 0x02
57#define Y_SHORT_VECTOR 0x04
58#define REPEAT_FLAG 0x08
59#define X_POSITIVE 0x10
61#define Y_POSITIVE 0x20
63#define OVERLAP_SIMPLE 0x40
70#define ARGS_ARE_WORDS 0x0001
71#define ARGS_ARE_XY_VALUES 0x0002
72#define ROUND_XY_TO_GRID 0x0004
73#define WE_HAVE_A_SCALE 0x0008
75#define MORE_COMPONENTS 0x0020
76#define WE_HAVE_AN_XY_SCALE 0x0040
77#define WE_HAVE_A_2X2 0x0080
78#define WE_HAVE_INSTR 0x0100
79#define USE_MY_METRICS 0x0200
80#define OVERLAP_COMPOUND 0x0400
81#define SCALED_COMPONENT_OFFSET 0x0800
82#define UNSCALED_COMPONENT_OFFSET 0x1000
97 FT_TRACE5((
" advance width (font units): %d\n", *aw ));
98 FT_TRACE5((
" left side bearing (font units): %d\n", *lsb ));
114 if (
face->vertical_info )
117 else if (
face->os2.version != 0xFFFFU )
121 face->os2.sTypoDescender );
128 face->horizontal.Descender );
131 FT_TRACE5((
" advance height (font units): %d\n", *ah ));
132 FT_TRACE5((
" top side bearing (font units): %d\n", *tsb ));
141#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
148 FT_Short left_bearing = 0, top_bearing = 0;
149 FT_UShort advance_width = 0, advance_height = 0;
168 loader->
advance = advance_width;
172#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
176 loader->
exec->sph_tweak_flags = 0;
182 sph_set_tweaks( loader, glyph_index );
189 loader->
linear = advance_width;
196#ifdef FT_CONFIG_OPTION_INCREMENTAL
199 tt_get_metrics_incr_overrides(
TT_Loader loader,
204 FT_Short left_bearing = 0, top_bearing = 0;
205 FT_UShort advance_width = 0, advance_height = 0;
210 if (
face->root.internal->incremental_interface &&
211 face->root.internal->incremental_interface->funcs->get_glyph_metrics )
222 error =
face->root.internal->incremental_interface->funcs->get_glyph_metrics(
223 face->root.internal->incremental_interface->object,
224 glyph_index,
FALSE, &incr_metrics );
238 error =
face->root.internal->incremental_interface->funcs->get_glyph_metrics(
239 face->root.internal->incremental_interface->object,
240 glyph_index,
TRUE, &incr_metrics );
250 loader->
advance = advance_width;
257 loader->
linear = advance_width;
292 loader->cursor =
stream->cursor;
293 loader->limit =
stream->limit;
326 FT_TRACE5((
" # of contours: %d\n", loader->n_contours ));
327 FT_TRACE5((
" xMin: %4d xMax: %4d\n", loader->bbox.xMin,
328 loader->bbox.xMax ));
329 FT_TRACE5((
" yMin: %4d yMax: %4d\n", loader->bbox.yMin,
330 loader->bbox.yMax ));
353 FT_Short *cont, *cont_limit, prev_cont;
364 cont_limit = cont + n_contours;
367 if ( n_contours >= 0xFFF ||
p + ( n_contours + 1 ) * 2 >
limit )
368 goto Invalid_Outline;
372 if ( n_contours > 0 )
376 goto Invalid_Outline;
378 for ( cont++; cont < cont_limit; cont++ )
381 if ( cont[0] <= prev_cont )
384 goto Invalid_Outline;
390 if ( n_contours > 0 )
392 n_points = cont[-1] + 1;
394 goto Invalid_Outline;
397 FT_TRACE5((
" # of points: %d\n", n_points ));
405 load->glyph->control_len = 0;
409 goto Invalid_Outline;
413 FT_TRACE5((
" Instructions size: %u\n", n_ins ));
415#ifdef TT_USE_BYTECODE_INTERPRETER
423 if ( (
limit -
p ) < n_ins )
425 FT_TRACE1((
"TT_Load_Simple_Glyph: instruction count mismatch\n" ));
433 tmp =
load->exec->glyphSize;
437 (
void*)&
load->exec->glyphIns,
444 load->glyph->control_len = n_ins;
445 load->glyph->control_data =
load->exec->glyphIns;
459 flag_limit =
flag + n_points;
463 while (
flag < flag_limit )
466 goto Invalid_Outline;
472 goto Invalid_Outline;
476 goto Invalid_Outline;
486 vec_limit =
vec + n_points;
491 goto Invalid_Outline;
502 goto Invalid_Outline;
511 goto Invalid_Outline;
523 vec_limit =
vec + n_points;
536 goto Invalid_Outline;
545 goto Invalid_Outline;
578 FT_Long num_glyphs = loader->face->root.num_glyphs;
598 goto Invalid_Composite;
602 subglyph->
arg1 = subglyph->
arg2 = 0;
609 if ( subglyph->
index >= num_glyphs )
610 goto Invalid_Composite;
624 goto Invalid_Composite;
688 num_subglyphs > 1 ?
"s" :
"" ));
690#ifdef FT_DEBUG_LEVEL_TRACE
697 for (
i = 0;
i < num_subglyphs;
i++ )
699 if ( num_subglyphs > 1 )
709 FT_TRACE7((
" matching points: base=%d, component=%d\n",
733#ifdef TT_USE_BYTECODE_INTERPRETER
779 zone->n_contours =
load->outline.n_contours -
781 zone->org =
load->extra_points + start_point;
782 zone->cur =
load->outline.points + start_point;
783 zone->orus =
load->extra_points2 + start_point;
803#if defined TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY || \
804 defined TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
811#ifdef TT_USE_BYTECODE_INTERPRETER
818#ifdef TT_USE_BYTECODE_INTERPRETER
854#ifdef TT_USE_BYTECODE_INTERPRETER
875 current_outline.
tags[0] |=
881#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
886 loader->
exec->backward_compatibility ) )
893#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
897#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
900 if ( loader->
exec->sph_tweak_flags & SPH_TWEAK_DEEMBOLDEN )
903 else if ( loader->
exec->sph_tweak_flags & SPH_TWEAK_EMBOLDEN )
942 outline->tags[n_points + 1] = 0;
943 outline->tags[n_points + 2] = 0;
944 outline->tags[n_points + 3] = 0;
948#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
954 error = TT_Vary_Apply_Glyph_Deltas( loader->
face,
963 outline->points[n_points - 4].x;
966 outline->points[n_points - 2].x;
983#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
1002#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
1008 x_scale_factor = sph_test_tweak_x_scaling(
face,
1015 x_scale_factor != 1000 )
1018 (
FT_Long)x_scale_factor, 1000 );
1023 if ( x_scale_factor != 1000 && ppem > 11 )
1026 1000 - x_scale_factor ),
1055#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
1065#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
1111 (
short)num_base_points;
1136 l += num_base_points;
1137 if (
k >= num_base_points ||
1139 return FT_THROW( Invalid_Composite );
1160#ifdef TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED
1181 int m =
a >
b ?
a :
b;
1182 int n =
c >
d ?
c :
d;
1185 if (
a - b <= 33 && a - b >= -33 )
1187 if (
c - d <= 33 && c - d >= -33 )
1294#ifdef TT_USE_BYTECODE_INTERPRETER
1308 FT_TRACE5((
" Instructions size = %d\n", n_ins ));
1312 if ( n_ins > max_ins )
1318 FT_TRACE1((
"TT_Process_Composite_Glyph:"
1319 " too many instructions (%d) for glyph with length %d\n",
1335 else if ( n_ins == 0 )
1348 start_point, start_contour );
1452#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING
1457#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
1460 subpixel_hinting = loader->
exec ? loader->
exec->subpixel_hinting
1466#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
1469 subpixel_hinting = loader->
exec ? loader->
exec->subpixel_hinting_lean
1471 grayscale = loader->
exec ? loader->
exec->grayscale_cleartype
1476 use_aw_2 =
FT_BOOL( subpixel_hinting && grayscale );
1483 loader->
pp3.
x = use_aw_2 ? loader->
advance / 2 : 0;
1485 loader->
pp4.
x = use_aw_2 ? loader->
advance / 2 : 0;
1536#ifdef FT_CONFIG_OPTION_INCREMENTAL
1539 FT_Bool glyph_data_loaded = 0;
1543#ifdef FT_DEBUG_LEVEL_TRACE
1544 if ( recurse_count )
1545 FT_TRACE5((
" nesting level: %d\n", recurse_count ));
1549 if ( recurse_count >
face->max_profile.maxComponentDepth )
1551 FT_TRACE1((
"load_truetype_glyph: maxComponentDepth set to %d\n",
1553 face->max_profile.maxComponentDepth = (
FT_UShort)recurse_count;
1556#ifndef FT_CONFIG_OPTION_INCREMENTAL
1558 if ( glyph_index >= (
FT_UInt)
face->root.num_glyphs )
1582#ifdef FT_CONFIG_OPTION_INCREMENTAL
1587 if (
face->root.internal->incremental_interface )
1589 error =
face->root.internal->incremental_interface->funcs->get_glyph_data(
1590 face->root.internal->incremental_interface->object,
1591 glyph_index, &glyph_data );
1595 glyph_data_loaded = 1;
1604 loader->
stream = &inc_stream;
1615#ifdef FT_CONFIG_OPTION_INCREMENTAL
1617 if ( !
face->glyf_offset &&
1618 !
face->root.internal->incremental_interface )
1620 if ( !
face->glyf_offset )
1623 FT_TRACE2((
"no `glyf' table but non-zero `loca' entry\n" ));
1628 error =
face->access_glyph_frame( loader, glyph_index,
1635 error =
face->read_glyph_header( loader );
1637 face->forget_glyph_frame( loader );
1668#ifdef FT_CONFIG_OPTION_INCREMENTAL
1669 tt_get_metrics_incr_overrides( loader, glyph_index );
1672#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
1680 char tags[4] = { 1, 1, 1, 1 };
1681 short contours[4] = { 0, 1, 2, 3 };
1702 error = TT_Vary_Apply_Glyph_Deltas( loader->
face,
1751#ifdef FT_CONFIG_OPTION_INCREMENTAL
1752 tt_get_metrics_incr_overrides( loader, glyph_index );
1761 error =
face->access_glyph_frame( loader, glyph_index,
1773 error =
face->read_simple_glyph( loader );
1778 face->forget_glyph_frame( loader );
1816 for ( node2 =
node; node2; node2 = node2->
next )
1824 " infinite recursion detected\n" ));
1844 error =
face->read_composite_glyph( loader );
1852 face->forget_glyph_frame( loader );
1855#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
1866 short* contours =
NULL;
1887 for (
i = 0;
i <
limit;
i++, subglyph++ )
1936 for (
i = 0;
i <
limit;
i++, subglyph++ )
1993 loader->
glyph->
format = FT_GLYPH_FORMAT_COMPOSITE;
2006 FT_UInt num_points = start_point;
2017 for (
n = 0;
n < num_subglyphs;
n++ )
2031 pp[0] = loader->
pp1;
2032 pp[1] = loader->
pp2;
2033 pp[2] = loader->
pp3;
2034 pp[3] = loader->
pp4;
2036 linear_hadvance = loader->
linear;
2037 linear_vadvance = loader->
vadvance;
2054 loader->
pp1 = pp[0];
2055 loader->
pp2 = pp[1];
2056 loader->
pp3 = pp[2];
2057 loader->
pp4 = pp[3];
2059 loader->
linear = linear_hadvance;
2060 loader->
vadvance = linear_vadvance;
2065 if ( num_points == num_base_points )
2084 loader->
stream = old_stream;
2093 num_points > start_point )
2111 face->forget_glyph_frame( loader );
2113#ifdef FT_CONFIG_OPTION_INCREMENTAL
2115 if ( glyph_data_loaded )
2116 face->root.internal->incremental_interface->funcs->free_glyph_data(
2117 face->root.internal->incremental_interface->object,
2131#if defined TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY || \
2132 defined TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
2146 if ( glyph->
format != FT_GLYPH_FORMAT_COMPOSITE )
2166 ( loader->
exec && loader->
exec->backward_compatibility ) ) &&
2168 !
face->postscript.isFixedPitch &&
2176 size->metrics->x_ppem,
2179#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
2190 ( ( ignore_x_mode && loader->
exec->compatible_widths ) ||
2192 SPH_OPTION_BITMAP_WIDTHS ) )
2193 glyph->
metrics.horiAdvance = *widthp * 64;
2201 glyph->
metrics.horiAdvance = *widthp * 64;
2218 if (
face->vertical_info &&
2219 face->vertical.number_Of_VMetrics > 0 )
2224 if ( loader->
pp3.
y <= loader->
pp4.
y )
2246 if (
face->os2.version != 0xFFFFU )
2248 face->os2.sTypoDescender );
2251 face->horizontal.Descender );
2256#ifdef FT_CONFIG_OPTION_INCREMENTAL
2263 incr =
face->root.internal->incremental_interface;
2302 glyph->
metrics.horiAdvance / 2 );
2311#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
2317 FT_Int32 load_flags )
2353 glyph->
format = FT_GLYPH_FORMAT_BITMAP;
2377 FT_Int32 load_flags,
2383#ifdef TT_USE_BYTECODE_INTERPRETER
2386#if defined TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY || \
2387 defined TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
2398#ifdef TT_USE_BYTECODE_INTERPRETER
2401 if (
IS_HINTED( load_flags ) && !glyf_table_only )
2405#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
2406 FT_Bool subpixel_hinting_lean;
2410#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
2416 FT_Bool symmetrical_smoothing;
2427 if (
size->bytecode_ready < 0 ||
size->cvt_ready < 0 )
2433 else if (
size->bytecode_ready )
2434 return size->bytecode_ready;
2435 else if (
size->cvt_ready )
2436 return size->cvt_ready;
2439 exec =
size->context;
2441 return FT_THROW( Could_Not_Find_Context );
2443#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
2446 subpixel_hinting_lean =
2449 grayscale_cleartype =
2450 FT_BOOL( subpixel_hinting_lean &&
2455 exec->vertical_lcd_lean =
2456 FT_BOOL( subpixel_hinting_lean &&
2462 subpixel_hinting_lean =
FALSE;
2463 grayscale_cleartype =
FALSE;
2464 exec->vertical_lcd_lean =
FALSE;
2468#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
2474 SPH_OPTION_SET_SUBPIXEL );
2476 if ( subpixel_hinting )
2478 else if ( SPH_OPTION_SET_GRAYSCALE )
2481 subpixel_hinting =
FALSE;
2487 subpixel_hinting =
FALSE;
2489 exec->ignore_x_mode = subpixel_hinting || grayscale;
2490 exec->rasterizer_version = SPH_OPTION_SET_RASTERIZER_VERSION;
2491 if ( exec->sph_tweak_flags & SPH_TWEAK_RASTERIZER_35 )
2495 exec->compatible_widths = SPH_OPTION_SET_COMPATIBLE_WIDTHS;
2496 exec->symmetrical_smoothing =
TRUE;
2498 exec->vertical_lcd =
FALSE;
2499 exec->subpixel_positioned =
TRUE;
2500 exec->gray_cleartype =
FALSE;
2502 exec->compatible_widths =
2504 TT_LOAD_COMPATIBLE_WIDTHS );
2505 exec->symmetrical_smoothing =
2507 TT_LOAD_SYMMETRICAL_SMOOTHING );
2511 exec->vertical_lcd =
2513 TT_LOAD_VERTICAL_LCD );
2514 exec->subpixel_positioned =
2516 TT_LOAD_SUBPIXEL_POSITIONED );
2517 exec->gray_cleartype =
2519 TT_LOAD_GRAY_CLEARTYPE );
2527#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
2529 grayscale =
FT_BOOL( !subpixel_hinting_lean &&
2541#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
2547 if ( subpixel_hinting != exec->subpixel_hinting )
2549 FT_TRACE4((
"tt_loader_init: subpixel hinting change,"
2550 " re-executing `prep' table\n" ));
2552 exec->subpixel_hinting = subpixel_hinting;
2560 FT_TRACE4((
"tt_loader_init: grayscale hinting change,"
2561 " re-executing `prep' table\n" ));
2573#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
2578 if ( subpixel_hinting_lean != exec->subpixel_hinting_lean )
2580 FT_TRACE4((
"tt_loader_init: subpixel hinting change,"
2581 " re-executing `prep' table\n" ));
2583 exec->subpixel_hinting_lean = subpixel_hinting_lean;
2589 if ( grayscale_cleartype != exec->grayscale_cleartype )
2591 FT_TRACE4((
"tt_loader_init: grayscale subpixel hinting change,"
2592 " re-executing `prep' table\n" ));
2594 exec->grayscale_cleartype = grayscale_cleartype;
2604 FT_TRACE4((
"tt_loader_init: grayscale hinting change,"
2605 " re-executing `prep' table\n" ));
2617 for (
i = 0;
i <
size->cvt_size;
i++ )
2632#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
2637 exec->ignore_x_mode = 0;
2641 loader->
exec = exec;
2648 if ( !glyf_table_only )
2716 FT_Int32 load_flags )
2721#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
2722#define IS_DEFAULT_INSTANCE ( !( FT_IS_NAMED_INSTANCE( glyph->face ) || \
2723 FT_IS_VARIATION( glyph->face ) ) )
2725#define IS_DEFAULT_INSTANCE 1
2729 FT_TRACE1((
"TT_Load_Glyph: glyph index %d\n", glyph_index ));
2731#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
2734 if (
size->strike_index != 0xFFFFFFFFUL &&
2742 error = load_sbit_image(
size, glyph, glyph_index, load_flags );
2763 if ( !
face->horz_metrics_size )
2775 glyph->outline.n_points = 0;
2776 glyph->outline.n_contours = 0;
2778 glyph->metrics.width = 0;
2779 glyph->metrics.height = 0;
2781 glyph->metrics.horiBearingX =
FT_MulFix( left_bearing, x_scale );
2782 glyph->metrics.horiBearingY = 0;
2783 glyph->metrics.horiAdvance =
FT_MulFix( advance_width, x_scale );
2785 glyph->metrics.vertBearingX = 0;
2786 glyph->metrics.vertBearingY =
FT_MulFix( top_bearing, y_scale );
2787 glyph->metrics.vertAdvance =
FT_MulFix( advance_height, y_scale );
2789 glyph->format = FT_GLYPH_FORMAT_BITMAP;
2792 glyph->bitmap_left = 0;
2793 glyph->bitmap_top = 0;
2812 glyph->linearHoriAdvance = loader.
linear;
2813 glyph->linearVertAdvance = loader.
vadvance;
2817 if ( !glyph->metrics.horiAdvance && glyph->linearHoriAdvance )
2818 glyph->metrics.horiAdvance =
FT_MulFix( glyph->linearHoriAdvance,
2820 if ( !glyph->metrics.vertAdvance && glyph->linearVertAdvance )
2821 glyph->metrics.vertAdvance =
FT_MulFix( glyph->linearVertAdvance,
2849 glyph->num_subglyphs = 0;
2850 glyph->outline.flags = 0;
2856 if ( glyph->format == FT_GLYPH_FORMAT_COMPOSITE )
2864 glyph->outline.
flags &= ~FT_OUTLINE_SINGLE_PASS;
2874#ifdef TT_USE_BYTECODE_INTERPRETER
2918 size->metrics->y_ppem < 24 )
2922#ifdef FT_DEBUG_LEVEL_TRACE
2924 FT_TRACE1((
" failed (error code 0x%x)\n",
_STLP_MOVE_TO_STD_NAMESPACE void _STLP_CALL advance(_InputIterator &__i, _Distance __n)
unsigned short(__cdecl typeof(TIFFCurrentDirectory))(struct tiff *)
#define FT_LOAD_VERTICAL_LAYOUT
#define FT_LOAD_TARGET_LCD_V
#define FT_LOAD_TARGET_MODE(x)
#define FT_LOAD_SBITS_ONLY
#define FT_LOAD_NO_BITMAP
#define FT_LOAD_NO_RECURSE
#define FT_LOAD_NO_HINTING
FT_DivFix(FT_Long a, FT_Long b)
#define FT_IS_SCALABLE(face)
struct FT_GlyphSlotRec_ * FT_GlyphSlot
#define FT_IS_VARIATION(face)
#define FT_LOAD_COMPUTE_METRICS
#define FT_IS_NAMED_INSTANCE(face)
#define FT_LOAD_TARGET_LCD
#define FT_IS_TRICKY(face)
FT_MulDiv(FT_Long a, FT_Long b, FT_Long c)
FT_MulFix(FT_Long a, FT_Long b)
FT_Hypot(FT_Fixed x, FT_Fixed y)
#define FT_CALLBACK_DEF(x)
#define FT_UINT_TO_POINTER(x)
#define FT_ASSERT(condition)
#define FT_TRACE5(varformat)
#define FT_TRACE7(varformat)
#define FT_TRACE2(varformat)
#define FT_TRACE1(varformat)
#define FT_TRACE4(varformat)
#define TT_INTERPRETER_VERSION_38
#define TT_INTERPRETER_VERSION_40
#define TT_INTERPRETER_VERSION_35
FT_GlyphLoader_Add(FT_GlyphLoader loader)
FT_GlyphLoader_Rewind(FT_GlyphLoader loader)
#define FT_GLYPHLOADER_CHECK_POINTS(_loader, _points, _contours)
FT_GlyphLoader_CheckSubGlyphs(FT_GlyphLoader loader, FT_UInt n_subs)
#define FT_CURVE_TAG_TOUCH_BOTH
#define FT_OUTLINE_SMART_DROPOUTS
#define FT_CURVE_TAG_HAS_SCANMODE
#define FT_OUTLINE_IGNORE_DROPOUTS
#define FT_OUTLINE_INCLUDE_STUBS
#define FT_OUTLINE_HIGH_PRECISION
FT_BEGIN_HEADER typedef signed long FT_Pos
FT_List_Finalize(FT_List list, FT_List_Destructor destroy, FT_Memory memory, void *user)
FT_BEGIN_HEADER FT_List_Find(FT_List list, void *data)
FT_List_Add(FT_List list, FT_ListNode node)
#define FT_NEW_ARRAY(ptr, count)
#define FT_SET_ERROR(expression)
#define FT_ARRAY_COPY(dest, source, count)
#define FT_MEM_COPY(dest, source, count)
#define FT_FACE_DRIVER(x)
#define TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
#define TT_USE_BYTECODE_INTERPRETER
FT_Outline_EmboldenXY(FT_Outline *outline, FT_Pos xstrength, FT_Pos ystrength)
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
#define FT_FRAME_ENTER(size)
#define FT_READ_USHORT(var)
#define FT_STREAM_SEEK(position)
#define FT_NEXT_USHORT(buffer)
#define FT_NEXT_CHAR(buffer)
#define FT_STREAM_READ(buffer, count)
FT_Stream_OpenMemory(FT_Stream stream, const FT_Byte *base, FT_ULong size)
#define FT_NEXT_SHORT(buffer)
#define FT_NEXT_BYTE(buffer)
typedefFT_BEGIN_HEADER struct FT_MemoryRec_ * FT_Memory
FT_BEGIN_HEADER typedef unsigned char FT_Bool
GLint GLint GLint GLint GLint x
GLuint GLuint GLsizei count
GLint GLint GLint GLint GLint GLint y
GLint GLint GLsizei GLsizei height
GLdouble GLdouble GLdouble GLdouble top
GLenum GLuint GLint GLenum face
GLboolean GLboolean GLboolean b
GLboolean GLboolean GLboolean GLboolean a
GLsizei const GLfloat * points
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 flag
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 i
struct task_struct * current
static char memory[1024 *256]
struct @1709::@1710 driver
SFNT_Interface * SFNT_Service
FT_Slot_Internal internal
FT_Fixed linearHoriAdvance
FT_Fixed linearVertAdvance
FT_Incremental_GetGlyphMetricsFunc get_glyph_metrics
const FT_Incremental_FuncsRec * funcs
TT_Load_SBit_Image_Func load_sbit_image
TT_MaxProfile max_profile
FT_UShort maxSizeOfInstructions
FT_Size_Metrics * metrics
static FT_Error TT_Process_Composite_Glyph(TT_Loader loader, FT_UInt start_point, FT_UInt start_contour)
TT_Access_Glyph_Frame(TT_Loader loader, FT_UInt glyph_index, FT_ULong offset, FT_UInt byte_count)
static void tt_loader_done(TT_Loader loader)
TT_Load_Glyph(TT_Size size, TT_GlyphSlot glyph, FT_UInt glyph_index, FT_Int32 load_flags)
static void tt_prepare_zone(TT_GlyphZone zone, FT_GlyphLoad load, FT_UInt start_point, FT_UInt start_contour)
static FT_Error load_truetype_glyph(TT_Loader loader, FT_UInt glyph_index, FT_UInt recurse_count, FT_Bool header_only)
static FT_Error tt_get_metrics(TT_Loader loader, FT_UInt glyph_index)
TT_Load_Simple_Glyph(TT_Loader load)
TT_Init_Glyph_Loading(TT_Face face)
static void tt_loader_set_pp(TT_Loader loader)
static FT_Error TT_Process_Simple_Glyph(TT_Loader loader)
TT_Load_Glyph_Header(TT_Loader loader)
static FT_Error tt_loader_init(TT_Loader loader, TT_Size size, TT_GlyphSlot glyph, FT_Int32 load_flags, FT_Bool glyf_table_only)
#define UNSCALED_COMPONENT_OFFSET
static FT_Error TT_Process_Composite_Component(TT_Loader loader, FT_SubGlyph subglyph, FT_UInt start_point, FT_UInt num_base_points)
#define IS_DEFAULT_INSTANCE
static FT_ListNode ft_list_get_node_at(FT_List list, FT_UInt idx)
TT_Get_HMetrics(TT_Face face, FT_UInt idx, FT_Short *lsb, FT_UShort *aw)
#define ARGS_ARE_XY_VALUES
static FT_Error compute_glyph_metrics(TT_Loader loader, FT_UInt glyph_index)
#define WE_HAVE_AN_XY_SCALE
TT_Forget_Glyph_Frame(TT_Loader loader)
TT_Get_VMetrics(TT_Face face, FT_UInt idx, FT_Pos yMax, FT_Short *tsb, FT_UShort *ah)
static FT_Error TT_Hint_Glyph(TT_Loader loader, FT_Bool is_composite)
#define SCALED_COMPONENT_OFFSET
TT_Load_Composite_Glyph(TT_Loader loader)
const TT_GraphicsState tt_default_graphics_state
typedefFT_BEGIN_HEADER struct TT_DriverRec_ * TT_Driver
tt_face_get_device_metrics(TT_Face face, FT_UInt ppem, FT_UInt gindex)
tt_face_get_location(TT_Face face, FT_UInt gindex, FT_UInt *asize)
#define TT_FACE_FLAG_VAR_HADVANCE
struct TT_FaceRec_ * TT_Face
#define TT_FACE_FLAG_VAR_VADVANCE
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList