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 trace_ttgload 55 #define ARGS_ARE_WORDS 0x0001 56 #define ARGS_ARE_XY_VALUES 0x0002 57 #define ROUND_XY_TO_GRID 0x0004 58 #define WE_HAVE_A_SCALE 0x0008 60 #define MORE_COMPONENTS 0x0020 61 #define WE_HAVE_AN_XY_SCALE 0x0040 62 #define WE_HAVE_A_2X2 0x0080 63 #define WE_HAVE_INSTR 0x0100 64 #define USE_MY_METRICS 0x0200 65 #define OVERLAP_COMPOUND 0x0400 66 #define SCALED_COMPONENT_OFFSET 0x0800 67 #define UNSCALED_COMPONENT_OFFSET 0x1000 82 FT_TRACE5((
" advance width (font units): %d\n", *aw ));
83 FT_TRACE5((
" left side bearing (font units): %d\n", *lsb ));
99 if (
face->vertical_info )
102 else if (
face->os2.version != 0xFFFFU )
106 face->os2.sTypoDescender );
113 face->horizontal.Descender );
116 FT_TRACE5((
" advance height (font units): %d\n", *ah ));
117 FT_TRACE5((
" top side bearing (font units): %d\n", *tsb ));
126 #ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY 133 FT_Short left_bearing = 0, top_bearing = 0;
134 FT_UShort advance_width = 0, advance_height = 0;
153 loader->
advance = advance_width;
157 #ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY 161 loader->
exec->sph_tweak_flags = 0;
167 sph_set_tweaks( loader, glyph_index );
174 loader->
linear = advance_width;
181 #ifdef FT_CONFIG_OPTION_INCREMENTAL 184 tt_get_metrics_incr_overrides(
TT_Loader loader,
189 FT_Short left_bearing = 0, top_bearing = 0;
190 FT_UShort advance_width = 0, advance_height = 0;
195 if (
face->root.internal->incremental_interface &&
196 face->root.internal->incremental_interface->funcs->get_glyph_metrics )
207 error =
face->root.internal->incremental_interface->funcs->get_glyph_metrics(
208 face->root.internal->incremental_interface->object,
209 glyph_index,
FALSE, &incr_metrics );
223 error =
face->root.internal->incremental_interface->funcs->get_glyph_metrics(
224 face->root.internal->incremental_interface->object,
225 glyph_index,
TRUE, &incr_metrics );
235 loader->
advance = advance_width;
242 loader->
linear = advance_width;
274 FT_TRACE4((
"Glyph %ld\n", glyph_index ));
280 loader->cursor =
stream->cursor;
281 loader->limit =
stream->limit;
314 FT_TRACE5((
" # of contours: %d\n", loader->n_contours ));
315 FT_TRACE5((
" xMin: %4d xMax: %4d\n", loader->bbox.xMin,
316 loader->bbox.xMax ));
317 FT_TRACE5((
" yMin: %4d yMax: %4d\n", loader->bbox.yMin,
318 loader->bbox.yMax ));
341 FT_Short *cont, *cont_limit, prev_cont;
352 cont_limit = cont + n_contours;
355 if ( n_contours >= 0xFFF ||
p + ( n_contours + 1 ) * 2 >
limit )
356 goto Invalid_Outline;
360 if ( n_contours > 0 )
364 goto Invalid_Outline;
366 for ( cont++; cont < cont_limit; cont++ )
369 if ( cont[0] <= prev_cont )
372 goto Invalid_Outline;
378 if ( n_contours > 0 )
380 n_points = cont[-1] + 1;
382 goto Invalid_Outline;
391 load->glyph->control_len = 0;
395 goto Invalid_Outline;
399 FT_TRACE5((
" Instructions size: %u\n", n_ins ));
401 #ifdef TT_USE_BYTECODE_INTERPRETER 409 if ( (
limit -
p ) < n_ins )
411 FT_TRACE1((
"TT_Load_Simple_Glyph: instruction count mismatch\n" ));
419 tmp =
load->exec->glyphSize;
423 (
void*)&
load->exec->glyphIns,
430 load->glyph->control_len = n_ins;
431 load->glyph->control_data =
load->exec->glyphIns;
445 flag_limit =
flag + n_points;
449 while (
flag < flag_limit )
452 goto Invalid_Outline;
458 goto Invalid_Outline;
462 goto Invalid_Outline;
472 vec_limit =
vec + n_points;
477 goto Invalid_Outline;
488 goto Invalid_Outline;
491 if ( (
f & 16 ) == 0 )
494 else if ( (
f & 16 ) == 0 )
497 goto Invalid_Outline;
511 vec_limit =
vec + n_points;
524 goto Invalid_Outline;
527 if ( (
f & 32 ) == 0 )
530 else if ( (
f & 32 ) == 0 )
533 goto Invalid_Outline;
584 goto Invalid_Composite;
588 subglyph->
arg1 = subglyph->
arg2 = 0;
605 goto Invalid_Composite;
669 num_subglyphs > 1 ?
"s" :
"" ));
671 #ifdef FT_DEBUG_LEVEL_TRACE 678 for (
i = 0;
i < num_subglyphs;
i++ )
680 if ( num_subglyphs > 1 )
690 FT_TRACE7((
" matching points: base=%d, component=%d\n",
714 #ifdef TT_USE_BYTECODE_INTERPRETER 760 zone->n_contours =
load->outline.n_contours -
762 zone->org =
load->extra_points + start_point;
763 zone->cur =
load->outline.points + start_point;
764 zone->orus =
load->extra_points2 + start_point;
784 #if defined TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY || \ 785 defined TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL 792 #ifdef TT_USE_BYTECODE_INTERPRETER 799 #ifdef TT_USE_BYTECODE_INTERPRETER 802 FT_TRACE1((
"TT_Hint_Glyph: too long instructions" ));
803 FT_TRACE1((
" (0x%lx byte) is truncated\n",
841 #ifdef TT_USE_BYTECODE_INTERPRETER 862 current_outline.
tags[0] |=
868 #ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL 873 loader->
exec->backward_compatibility ) )
880 #ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL 884 #ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY 887 if ( loader->
exec->sph_tweak_flags & SPH_TWEAK_DEEMBOLDEN )
890 else if ( loader->
exec->sph_tweak_flags & SPH_TWEAK_EMBOLDEN )
929 outline->tags[n_points + 1] = 0;
930 outline->tags[n_points + 2] = 0;
931 outline->tags[n_points + 3] = 0;
935 #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT 941 error = TT_Vary_Apply_Glyph_Deltas( loader->
face,
950 outline->points[n_points - 4].x;
953 outline->points[n_points - 2].x;
970 #ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY 989 #ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY 995 x_scale_factor = sph_test_tweak_x_scaling(
face,
1002 x_scale_factor != 1000 )
1005 (
FT_Long)x_scale_factor, 1000 );
1010 if ( x_scale_factor != 1000 && ppem > 11 )
1013 1000 - x_scale_factor ),
1042 #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT 1052 #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT 1098 (
short)num_base_points;
1123 l += num_base_points;
1124 if (
k >= num_base_points ||
1126 return FT_THROW( Invalid_Composite );
1147 #ifdef TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED
1168 int m =
a >
b ?
a :
b;
1169 int n =
c >
d ?
c :
d;
1174 if (
c - d <= 33 && c - d >= -33 )
1281 #ifdef TT_USE_BYTECODE_INTERPRETER 1295 FT_TRACE5((
" Instructions size = %d\n", n_ins ));
1299 if ( n_ins > max_ins )
1305 FT_TRACE1((
"TT_Process_Composite_Glyph:" 1306 " too many instructions (%d) for glyph with length %d\n",
1322 else if ( n_ins == 0 )
1335 start_point, start_contour );
1439 #ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING 1444 #ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY 1447 subpixel_hinting = loader->
exec ? loader->
exec->subpixel_hinting
1453 #ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL 1456 subpixel_hinting = loader->
exec ? loader->
exec->subpixel_hinting_lean
1458 grayscale = loader->
exec ? loader->
exec->grayscale_cleartype
1463 use_aw_2 = (
FT_Bool)( subpixel_hinting && grayscale );
1470 loader->
pp3.
x = use_aw_2 ? loader->
advance / 2 : 0;
1472 loader->
pp4.
x = use_aw_2 ? loader->
advance / 2 : 0;
1522 #ifdef FT_CONFIG_OPTION_INCREMENTAL 1525 FT_Bool glyph_data_loaded = 0;
1529 #ifdef FT_DEBUG_LEVEL_TRACE 1530 if ( recurse_count )
1531 FT_TRACE5((
" nesting level: %d\n", recurse_count ));
1535 if ( recurse_count >
face->max_profile.maxComponentDepth )
1537 FT_TRACE1((
"load_truetype_glyph: maxComponentDepth set to %d\n",
1539 face->max_profile.maxComponentDepth = (
FT_UShort)recurse_count;
1542 #ifndef FT_CONFIG_OPTION_INCREMENTAL 1544 if ( glyph_index >= (
FT_UInt)
face->root.num_glyphs )
1568 #ifdef FT_CONFIG_OPTION_INCREMENTAL 1573 if (
face->root.internal->incremental_interface )
1575 error =
face->root.internal->incremental_interface->funcs->get_glyph_data(
1576 face->root.internal->incremental_interface->object,
1577 glyph_index, &glyph_data );
1581 glyph_data_loaded = 1;
1590 loader->
stream = &inc_stream;
1601 #ifdef FT_CONFIG_OPTION_INCREMENTAL 1603 if ( !
face->glyf_offset &&
1604 !
face->root.internal->incremental_interface )
1606 if ( !
face->glyf_offset )
1609 FT_TRACE2((
"no `glyf' table but non-zero `loca' entry\n" ));
1614 error =
face->access_glyph_frame( loader, glyph_index,
1623 error =
face->read_glyph_header( loader );
1656 #ifdef FT_CONFIG_OPTION_INCREMENTAL 1657 tt_get_metrics_incr_overrides( loader, glyph_index );
1660 #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT 1668 char tags[4] = { 1, 1, 1, 1 };
1669 short contours[4] = { 0, 1, 2, 3 };
1690 error = TT_Vary_Apply_Glyph_Deltas( loader->
face,
1740 #ifdef FT_CONFIG_OPTION_INCREMENTAL 1741 tt_get_metrics_incr_overrides( loader, glyph_index );
1752 error =
face->read_simple_glyph( loader );
1757 face->forget_glyph_frame( loader );
1796 for ( node2 =
node; node2; node2 = node2->
next )
1804 " infinite recursion detected\n" ));
1824 error =
face->read_composite_glyph( loader );
1832 face->forget_glyph_frame( loader );
1835 #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT 1846 short* contours =
NULL;
1867 for (
i = 0;
i <
limit;
i++, subglyph++ )
1916 for (
i = 0;
i <
limit;
i++, subglyph++ )
1973 loader->
glyph->
format = FT_GLYPH_FORMAT_COMPOSITE;
1986 FT_UInt num_points = start_point;
1997 for (
n = 0;
n < num_subglyphs;
n++ )
2011 pp[0] = loader->
pp1;
2012 pp[1] = loader->
pp2;
2013 pp[2] = loader->
pp3;
2014 pp[3] = loader->
pp4;
2016 linear_hadvance = loader->
linear;
2017 linear_vadvance = loader->
vadvance;
2034 loader->
pp1 = pp[0];
2035 loader->
pp2 = pp[1];
2036 loader->
pp3 = pp[2];
2037 loader->
pp4 = pp[3];
2039 loader->
linear = linear_hadvance;
2040 loader->
vadvance = linear_vadvance;
2045 if ( num_points == num_base_points )
2062 loader->
stream = old_stream;
2071 num_points > start_point )
2089 face->forget_glyph_frame( loader );
2091 #ifdef FT_CONFIG_OPTION_INCREMENTAL 2093 if ( glyph_data_loaded )
2094 face->root.internal->incremental_interface->funcs->free_glyph_data(
2095 face->root.internal->incremental_interface->object,
2109 #if defined TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY || \ 2110 defined TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL 2122 y_scale =
size->metrics->y_scale;
2124 if ( glyph->
format != FT_GLYPH_FORMAT_COMPOSITE )
2144 ( loader->
exec && loader->
exec->backward_compatibility ) ) &&
2146 !
face->postscript.isFixedPitch &&
2154 size->metrics->x_ppem,
2157 #ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY 2168 ( ( ignore_x_mode && loader->
exec->compatible_widths ) ||
2170 SPH_OPTION_BITMAP_WIDTHS ) )
2171 glyph->
metrics.horiAdvance = *widthp * 64;
2179 glyph->
metrics.horiAdvance = *widthp * 64;
2196 if (
face->vertical_info &&
2197 face->vertical.number_Of_VMetrics > 0 )
2202 if ( loader->
pp3.
y <= loader->
pp4.
y )
2224 if (
face->os2.version != 0xFFFFU )
2226 face->os2.sTypoDescender );
2229 face->horizontal.Descender );
2234 #ifdef FT_CONFIG_OPTION_INCREMENTAL 2241 incr =
face->root.internal->incremental_interface;
2280 glyph->
metrics.horiAdvance / 2;
2289 #ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS 2295 FT_Int32 load_flags )
2331 glyph->
format = FT_GLYPH_FORMAT_BITMAP;
2355 FT_Int32 load_flags,
2361 #ifdef TT_USE_BYTECODE_INTERPRETER 2364 #if defined TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY || \ 2365 defined TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL 2376 #ifdef TT_USE_BYTECODE_INTERPRETER 2379 if (
IS_HINTED( load_flags ) && !glyf_table_only )
2383 #ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL 2384 FT_Bool subpixel_hinting_lean;
2388 #ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY 2394 FT_Bool symmetrical_smoothing;
2405 if (
size->bytecode_ready < 0 ||
size->cvt_ready < 0 )
2411 else if (
size->bytecode_ready )
2412 return size->bytecode_ready;
2413 else if (
size->cvt_ready )
2414 return size->cvt_ready;
2417 exec =
size->context;
2419 return FT_THROW( Could_Not_Find_Context );
2421 #ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL 2424 subpixel_hinting_lean =
2427 grayscale_cleartype =
2428 FT_BOOL( subpixel_hinting_lean &&
2433 exec->vertical_lcd_lean =
2434 FT_BOOL( subpixel_hinting_lean &&
2440 subpixel_hinting_lean =
FALSE;
2441 grayscale_cleartype =
FALSE;
2442 exec->vertical_lcd_lean =
FALSE;
2446 #ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY 2452 SPH_OPTION_SET_SUBPIXEL );
2454 if ( subpixel_hinting )
2456 else if ( SPH_OPTION_SET_GRAYSCALE )
2459 subpixel_hinting =
FALSE;
2465 subpixel_hinting =
FALSE;
2467 exec->ignore_x_mode = subpixel_hinting || grayscale;
2468 exec->rasterizer_version = SPH_OPTION_SET_RASTERIZER_VERSION;
2469 if ( exec->sph_tweak_flags & SPH_TWEAK_RASTERIZER_35 )
2473 exec->compatible_widths = SPH_OPTION_SET_COMPATIBLE_WIDTHS;
2474 exec->symmetrical_smoothing =
TRUE;
2476 exec->vertical_lcd =
FALSE;
2477 exec->subpixel_positioned =
TRUE;
2478 exec->gray_cleartype =
FALSE;
2480 exec->compatible_widths =
2482 TT_LOAD_COMPATIBLE_WIDTHS );
2483 exec->symmetrical_smoothing =
2485 TT_LOAD_SYMMETRICAL_SMOOTHING );
2489 exec->vertical_lcd =
2491 TT_LOAD_VERTICAL_LCD );
2492 exec->subpixel_positioned =
2494 TT_LOAD_SUBPIXEL_POSITIONED );
2495 exec->gray_cleartype =
2497 TT_LOAD_GRAY_CLEARTYPE );
2505 #ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL 2507 grayscale =
FT_BOOL( !subpixel_hinting_lean &&
2519 #ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY 2525 if ( subpixel_hinting != exec->subpixel_hinting )
2527 FT_TRACE4((
"tt_loader_init: subpixel hinting change," 2528 " re-executing `prep' table\n" ));
2530 exec->subpixel_hinting = subpixel_hinting;
2538 FT_TRACE4((
"tt_loader_init: grayscale hinting change," 2539 " re-executing `prep' table\n" ));
2551 #ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL 2556 if ( subpixel_hinting_lean != exec->subpixel_hinting_lean )
2558 FT_TRACE4((
"tt_loader_init: subpixel hinting change," 2559 " re-executing `prep' table\n" ));
2561 exec->subpixel_hinting_lean = subpixel_hinting_lean;
2567 if ( grayscale_cleartype != exec->grayscale_cleartype )
2569 FT_TRACE4((
"tt_loader_init: grayscale subpixel hinting change," 2570 " re-executing `prep' table\n" ));
2572 exec->grayscale_cleartype = grayscale_cleartype;
2582 FT_TRACE4((
"tt_loader_init: grayscale hinting change," 2583 " re-executing `prep' table\n" ));
2595 for (
i = 0;
i <
size->cvt_size;
i++ )
2610 #ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY 2615 exec->ignore_x_mode = 0;
2619 loader->
exec = exec;
2626 if ( !glyf_table_only )
2690 FT_Int32 load_flags )
2695 #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT 2696 #define IS_DEFAULT_INSTANCE ( !( FT_IS_NAMED_INSTANCE( glyph->face ) || \ 2697 FT_IS_VARIATION( glyph->face ) ) ) 2699 #define IS_DEFAULT_INSTANCE 1 2703 FT_TRACE1((
"TT_Load_Glyph: glyph index %d\n", glyph_index ));
2705 #ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS 2708 if (
size->strike_index != 0xFFFFFFFFUL &&
2712 error = load_sbit_image(
size, glyph, glyph_index, load_flags );
2720 FT_Short left_bearing = 0, top_bearing = 0;
2721 FT_UShort advance_width = 0, advance_height = 0;
2729 if ( !
face->horz_metrics_size )
2741 glyph->outline.n_points = 0;
2742 glyph->outline.n_contours = 0;
2744 glyph->metrics.width = 0;
2745 glyph->metrics.height = 0;
2747 glyph->metrics.horiBearingX = left_bearing;
2748 glyph->metrics.horiBearingY = 0;
2749 glyph->metrics.horiAdvance = advance_width;
2751 glyph->metrics.vertBearingX = 0;
2752 glyph->metrics.vertBearingY = top_bearing;
2753 glyph->metrics.vertAdvance = advance_height;
2755 glyph->format = FT_GLYPH_FORMAT_BITMAP;
2758 glyph->bitmap_left = 0;
2759 glyph->bitmap_top = 0;
2778 glyph->linearHoriAdvance = loader.
linear;
2779 glyph->linearVertAdvance = loader.
vadvance;
2783 if ( !glyph->metrics.horiAdvance && glyph->linearHoriAdvance )
2784 glyph->metrics.horiAdvance =
2786 size->metrics->x_scale );
2787 if ( !glyph->metrics.vertAdvance && glyph->linearVertAdvance )
2788 glyph->metrics.vertAdvance =
2790 size->metrics->y_scale );
2817 glyph->num_subglyphs = 0;
2818 glyph->outline.flags = 0;
2824 if ( glyph->format == FT_GLYPH_FORMAT_COMPOSITE )
2842 #ifdef TT_USE_BYTECODE_INTERPRETER 2886 size->metrics->y_ppem < 24 )
2890 #ifdef FT_DEBUG_LEVEL_TRACE 2892 FT_TRACE1((
" failed (error code 0x%x)\n",
#define UNSCALED_COMPONENT_OFFSET
const TT_GraphicsState tt_default_graphics_state
TT_Load_Glyph_Header(TT_Loader loader)
static FT_Error tt_get_metrics(TT_Loader loader, FT_UInt glyph_index)
#define FT_OUTLINE_SINGLE_PASS
#define FT_LOAD_VERTICAL_LAYOUT
FT_DivFix(FT_Long a, FT_Long b)
#define TT_FACE_FLAG_VAR_HADVANCE
SFNT_Interface * SFNT_Service
#define FT_LOAD_SBITS_ONLY
FT_BEGIN_HEADER typedef signed long FT_Pos
struct png_info_def **typedef void(__cdecl typeof(png_destroy_read_struct))(struct png_struct_def **
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList
#define IS_DEFAULT_INSTANCE
#define FT_OUTLINE_IGNORE_DROPOUTS
#define FT_ARRAY_COPY(dest, source, count)
GLuint GLuint GLsizei count
#define SCALED_COMPONENT_OFFSET
#define FT_CURVE_TAG_TOUCH_BOTH
FT_Fixed linearHoriAdvance
#define FT_LOAD_NO_HINTING
FT_List_Finalize(FT_List list, FT_List_Destructor destroy, FT_Memory memory, void *user)
#define FT_NEXT_BYTE(buffer)
GLint GLint GLint GLint GLint x
#define FT_LOAD_NO_RECURSE
TT_Init_Glyph_Loading(TT_Face face)
FT_Fixed linearVertAdvance
static void tt_loader_done(TT_Loader loader)
#define TT_INTERPRETER_VERSION_38
typedefFT_BEGIN_HEADER struct TT_DriverRec_ * TT_Driver
static char memory[1024 *256]
#define FT_READ_USHORT(var)
tt_face_get_device_metrics(TT_Face face, FT_UInt ppem, FT_UInt gindex)
#define ARGS_ARE_XY_VALUES
#define FT_FACE_DRIVER(x)
FT_BEGIN_HEADER typedef unsigned char FT_Bool
unsigned short(__cdecl typeof(TIFFCurrentDirectory))(struct tiff *)
#define FT_TRACE1(varformat)
#define FT_CURVE_TAG_HAS_SCANMODE
TT_MaxProfile max_profile
#define FT_LOAD_TARGET_LCD
#define FT_ASSERT(condition)
#define TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
#define TT_INTERPRETER_VERSION_35
TT_Get_VMetrics(TT_Face face, FT_UInt idx, FT_Pos yMax, FT_Short *tsb, FT_UShort *ah)
#define FT_LOAD_COMPUTE_METRICS
#define FT_TRACE4(varformat)
TT_Forget_Glyph_Frame(TT_Loader loader)
#define TT_FACE_FLAG_VAR_VADVANCE
#define FT_UINT_TO_POINTER(x)
FT_Outline_Get_CBox(const FT_Outline *outline, FT_BBox *acbox)
FT_GlyphLoader_Add(FT_GlyphLoader loader)
TT_Load_Composite_Glyph(TT_Loader loader)
FT_Outline_Transform(const FT_Outline *outline, const FT_Matrix *matrix)
static FT_Error TT_Process_Composite_Glyph(TT_Loader loader, FT_UInt start_point, FT_UInt start_contour)
static void tt_loader_set_pp(TT_Loader loader)
struct TT_FaceRec_ * TT_Face
#define WE_HAVE_AN_XY_SCALE
FT_GlyphLoader_CheckSubGlyphs(FT_GlyphLoader loader, FT_UInt n_subs)
FT_MulDiv(FT_Long a, FT_Long b, FT_Long c)
#define FT_IS_NAMED_INSTANCE(face)
GLboolean GLboolean GLboolean b
TT_Get_HMetrics(TT_Face face, FT_UInt idx, FT_Short *lsb, FT_UShort *aw)
#define FT_OUTLINE_HIGH_PRECISION
FT_BEGIN_HEADER FT_List_Find(FT_List list, void *data)
TT_Load_Simple_Glyph(TT_Loader load)
smooth FT_Module_Constructor FT_Module_Destructor FT_Module_Requester FT_GLYPH_FORMAT_OUTLINE
#define FT_IS_TRICKY(face)
#define FT_IS_VARIATION(face)
#define FT_TRACE2(varformat)
static FT_Error TT_Process_Composite_Component(TT_Loader loader, FT_SubGlyph subglyph, FT_UInt start_point, FT_UInt num_base_points)
#define FT_TRACE7(varformat)
FT_Size_Metrics * metrics
static void tt_prepare_zone(TT_GlyphZone zone, FT_GlyphLoad load, FT_UInt start_point, FT_UInt start_contour)
struct task_struct * current
FT_Incremental_GetGlyphMetricsFunc get_glyph_metrics
#define FT_CALLBACK_DEF(x)
GLsizei const GLfloat * points
FT_Outline_EmboldenXY(FT_Outline *outline, FT_Pos xstrength, FT_Pos ystrength)
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
#define FT_LOAD_TARGET_LCD_V
typedefFT_BEGIN_HEADER struct FT_MemoryRec_ * FT_Memory
FT_List_Add(FT_List list, FT_ListNode node)
static FT_Error compute_glyph_metrics(TT_Loader loader, FT_UInt glyph_index)
_STLP_MOVE_TO_STD_NAMESPACE void _STLP_CALL advance(_InputIterator &__i, _Distance __n)
#define FT_OUTLINE_INCLUDE_STUBS
#define FT_NEW_ARRAY(ptr, count)
#define FT_STREAM_SEEK(position)
FT_MulFix(FT_Long a, FT_Long b)
#define FT_NEXT_USHORT(buffer)
struct @1632::@1633 driver
GLint GLint GLsizei GLsizei height
FT_UShort maxSizeOfInstructions
#define FT_SET_ERROR(expression)
static FT_Error TT_Process_Simple_Glyph(TT_Loader loader)
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 FT_GlyphSlotRec_ * FT_GlyphSlot
static FT_Error load_truetype_glyph(TT_Loader loader, FT_UInt glyph_index, FT_UInt recurse_count, FT_Bool header_only)
FT_GlyphLoader_Rewind(FT_GlyphLoader loader)
#define FT_TRACE5(varformat)
#define TT_INTERPRETER_VERSION_40
#define FT_OUTLINE_SMART_DROPOUTS
GLint GLint GLint GLint GLint GLint y
TT_Load_SBit_Image_Func load_sbit_image
#define TT_USE_BYTECODE_INTERPRETER
FT_Outline_Translate(const FT_Outline *outline, FT_Pos xOffset, FT_Pos yOffset)
FT_Stream_OpenMemory(FT_Stream stream, const FT_Byte *base, FT_ULong size)
FT_Slot_Internal internal
#define FT_FRAME_ENTER(size)
#define FT_MEM_COPY(dest, source, count)
#define FT_NEXT_SHORT(buffer)
#define FT_LOAD_NO_BITMAP
TT_Access_Glyph_Frame(TT_Loader loader, FT_UInt glyph_index, FT_ULong offset, FT_UInt byte_count)
GLdouble GLdouble GLdouble GLdouble top
GLboolean GLboolean GLboolean GLboolean a
static FT_ListNode ft_list_get_node_at(FT_List list, FT_UInt idx)
TT_Load_Glyph(TT_Size size, TT_GlyphSlot glyph, FT_UInt glyph_index, FT_Int32 load_flags)
#define FT_GLYPHLOADER_CHECK_POINTS(_loader, _points, _contours)
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 FT_IS_SCALABLE(face)
FT_Hypot(FT_Fixed x, FT_Fixed y)
#define FT_STREAM_READ(buffer, count)
#define FT_NEXT_CHAR(buffer)
const FT_Incremental_FuncsRec * funcs
GLenum GLuint GLint GLenum face
tt_face_get_location(TT_Face face, FT_UInt gindex, FT_UInt *asize)
static FT_Error TT_Hint_Glyph(TT_Loader loader, FT_Bool is_composite)
#define FT_LOAD_TARGET_MODE(x)