24#include FT_INTERNAL_DEBUG_H
25#include FT_INTERNAL_CALC_H
26#include FT_TRIGONOMETRY_H
29#include FT_MULTIPLE_MASTERS_H
34#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
39#ifdef TT_USE_BYTECODE_INTERPRETER
49#define FT_COMPONENT trace_ttinterp
52#define NO_SUBPIXEL_HINTING \
53 ( ((TT_Driver)FT_FACE_DRIVER( exc->face ))->interpreter_version == \
54 TT_INTERPRETER_VERSION_35 )
56#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
57#define SUBPIXEL_HINTING_INFINALITY \
58 ( ((TT_Driver)FT_FACE_DRIVER( exc->face ))->interpreter_version == \
59 TT_INTERPRETER_VERSION_38 )
62#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
63#define SUBPIXEL_HINTING_MINIMAL \
64 ( ((TT_Driver)FT_FACE_DRIVER( exc->face ))->interpreter_version == \
65 TT_INTERPRETER_VERSION_40 )
68#define PROJECT( v1, v2 ) \
69 exc->func_project( exc, \
70 SUB_LONG( (v1)->x, (v2)->x ), \
71 SUB_LONG( (v1)->y, (v2)->y ) )
73#define DUALPROJ( v1, v2 ) \
74 exc->func_dualproj( exc, \
75 SUB_LONG( (v1)->x, (v2)->x ), \
76 SUB_LONG( (v1)->y, (v2)->y ) )
78#define FAST_PROJECT( v ) \
79 exc->func_project( exc, (v)->x, (v)->y )
81#define FAST_DUALPROJ( v ) \
82 exc->func_dualproj( exc, (v)->x, (v)->y )
89#define BOUNDS( x, n ) ( (FT_UInt)(x) >= (FT_UInt)(n) )
90#define BOUNDSL( x, n ) ( (FT_ULong)(x) >= (FT_ULong)(n) )
284 FT_TRACE1((
"Init_Context: new object at 0x%08p\n", exec ));
309 FT_ERROR((
"Init_Context: not enough memory for %p\n", exec ));
310 TT_Done_Context( exec );
348 void** pbuff = (
void**)_pbuff;
351 if ( *
size < new_max )
353 if (
FT_REALLOC( *pbuff, *
size * multiplier, new_max * multiplier ) )
396 maxp = &
face->max_profile;
575 TRUE, 68, 0, 0, 9, 3,
631#define PACK( x, y ) ( ( x << 4 ) | y )
635 const FT_Byte Pop_Push_Count[256] =
914#ifdef FT_DEBUG_LEVEL_TRACE
921 const char*
const opcode_name[256] =
1077#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
1205 const FT_Char opcode_length[256] =
1207 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1208 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1209 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1210 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1212 -1,-2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1213 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1214 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1215 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1217 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1218 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1219 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1220 2, 3, 4, 5, 6, 7, 8, 9, 3, 5, 7, 9, 11,13,15,17,
1222 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1223 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1224 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1225 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
1231#ifndef FT_CONFIG_OPTION_NO_ASSEMBLER
1233#if defined( __arm__ ) && \
1234 ( defined( __thumb2__ ) || !defined( __thumb__ ) )
1236#define TT_MulFix14 TT_MulFix14_arm
1239 TT_MulFix14_arm( FT_Int32
a,
1245#if defined( __CC_ARM ) || defined( __ARMCC__ )
1255 orr
a,
a,
t, lsl #18
1258#elif defined( __GNUC__ )
1261 "smull %1, %2, %4, %3\n\t"
1262 "mov %0, %2, asr #31\n\t"
1263#
if defined( __clang__ ) && defined( __thumb2__ )
1264 "add.w %0, %0, #0x2000\n\t"
1266 "add %0, %0, #0x2000\n\t"
1268 "adds %1, %1, %0\n\t"
1269 "adc %2, %2, #0\n\t"
1270 "mov %0, %1, lsr #14\n\t"
1271 "orr %0, %0, %2, lsl #18\n\t"
1272 :
"=r"(
a),
"=&r"(t2),
"=&r"(
t)
1286#if defined( __GNUC__ ) && \
1287 ( defined( __i386__ ) || defined( __x86_64__ ) )
1289#define TT_MulFix14 TT_MulFix14_long_long
1292#if ( __GNUC__ * 100 + __GNUC_MINOR__ ) >= 406
1293#pragma GCC diagnostic push
1295#pragma GCC diagnostic ignored "-Wlong-long"
1302 TT_MulFix14_long_long( FT_Int32
a,
1311 long long tmp =
ret >> 63;
1314 ret += 0x2000 + tmp;
1316 return (FT_Int32)(
ret >> 14 );
1319#if ( __GNUC__ * 100 + __GNUC_MINOR__ ) >= 406
1320#pragma GCC diagnostic pop
1332 TT_MulFix14( FT_Int32
a,
1336 FT_UInt32 ah, al, mid, lo, hi;
1346 ah = (FT_UInt32)( (
a >> 16 ) & 0xFFFFU );
1347 al = (FT_UInt32)(
a & 0xFFFFU );
1352 mid = ( mid << 16 ) + ( 1 << 13 );
1357 mid = ( lo >> 14 ) | ( hi << 18 );
1359 return sign >= 0 ? (FT_Int32)mid : -(FT_Int32)mid;
1365#if defined( __GNUC__ ) && \
1366 ( defined( __i386__ ) || \
1367 defined( __x86_64__ ) || \
1368 defined( __arm__ ) )
1370#define TT_DotFix14 TT_DotFix14_long_long
1372#if ( __GNUC__ * 100 + __GNUC_MINOR__ ) >= 406
1373#pragma GCC diagnostic push
1375#pragma GCC diagnostic ignored "-Wlong-long"
1378 TT_DotFix14_long_long( FT_Int32
ax,
1386 long long temp1 = (
long long)
ax * bx;
1387 long long temp2 = (
long long)ay *
by;
1391 temp2 = temp1 >> 63;
1392 temp1 += 0x2000 + temp2;
1394 return (FT_Int32)( temp1 >> 14 );
1398#if ( __GNUC__ * 100 + __GNUC_MINOR__ ) >= 406
1399#pragma GCC diagnostic pop
1409 TT_DotFix14( FT_Int32
ax,
1414 FT_Int32
m,
s, hi1, hi2, hi;
1415 FT_UInt32
l, lo1, lo2, lo;
1419 l = (FT_UInt32)( (
ax & 0xFFFFU ) * bx );
1420 m = (
ax >> 16 ) * bx;
1422 lo1 =
l + ( (FT_UInt32)
m << 16 );
1423 hi1 = (
m >> 16 ) + ( (FT_Int32)
l >> 31 ) + ( lo1 <
l );
1426 l = (FT_UInt32)( ( ay & 0xFFFFU ) *
by );
1427 m = ( ay >> 16 ) *
by;
1429 lo2 =
l + ( (FT_UInt32)
m << 16 );
1430 hi2 = (
m >> 16 ) + ( (FT_Int32)
l >> 31 ) + ( lo2 <
l );
1434 hi = hi1 + hi2 + ( lo < lo1 );
1438 l = lo + (FT_UInt32)
s;
1439 hi +=
s + (
l < lo );
1445 return (FT_Int32)( ( (FT_UInt32)hi << 18 ) | (
l >> 14 ) );
1584 exc->
code[exc->
IP - 1] );
1612 if ( aRange < 1 || aRange > 3 )
1630 if ( aIP >
range->size )
1679#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
1680 if ( SUBPIXEL_HINTING_INFINALITY &&
1681 ( !exc->ignore_x_mode ||
1682 ( exc->sph_tweak_flags & SPH_TWEAK_ALLOW_X_DMOVE ) ) )
1690#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
1694 if ( SUBPIXEL_HINTING_MINIMAL && !exc->backward_compatibility )
1702 if ( NO_SUBPIXEL_HINTING )
1715#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
1716 if ( !( SUBPIXEL_HINTING_MINIMAL &&
1717 exc->backward_compatibility &&
1719 exc->iupy_called ) )
1792#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
1793 if ( SUBPIXEL_HINTING_INFINALITY && !exc->ignore_x_mode )
1798#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
1799 if ( SUBPIXEL_HINTING_MINIMAL && !exc->backward_compatibility )
1804 if ( NO_SUBPIXEL_HINTING )
1819#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
1820 if ( !( SUBPIXEL_HINTING_MINIMAL &&
1821 exc->backward_compatibility &&
1822 exc->iupx_called && exc->iupy_called ) )
2252 switch ( round_mode )
2307 switch ( (
FT_Int)( selector & 0xC0 ) )
2310 exc->
period = GridPeriod / 2;
2314 exc->
period = GridPeriod;
2318 exc->
period = GridPeriod * 2;
2323 exc->
period = GridPeriod;
2327 switch ( (
FT_Int)( selector & 0x30 ) )
2346 if ( ( selector & 0x0F ) == 0 )
2379 return TT_DotFix14(
dx,
dy,
2406 return TT_DotFix14(
dx,
dy,
2506 if ( exc->
F_dot_P == 0x4000L )
2561 if ( Vx == 0 && Vy == 0 )
2587#define ARRAY_BOUND_ERROR \
2590 exc->error = FT_THROW( Invalid_Reference ); \
2619 if ( NO_SUBPIXEL_HINTING )
2983#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
2986 if ( SUBPIXEL_HINTING_INFINALITY &&
2987 exc->ignore_x_mode &&
2989 ( exc->
face->sph_found_func_flags &
2990 ( SPH_FDEF_SPACING_1 |
2991 SPH_FDEF_SPACING_2 ) ) ) ||
2993 ( exc->sph_in_func_flags &
2994 SPH_FDEF_TYPEMAN_STROKES ) ) ||
2996 ( exc->
face->sph_found_func_flags &
2997 SPH_FDEF_VACUFORM_ROUND_1 ) &&
2998 exc->iup_called ) ) )
3156 args[0] = Round_None(
3206 if ( L <= 0 || L > exc->
args )
3239 if ( L <= 0 || L > exc->
args )
3345 if ( SkipCode( exc ) ==
FAILURE )
3363 }
while (
Out == 0 );
3383 if ( SkipCode( exc ) ==
FAILURE )
3396 }
while ( nIfs != 0 );
3423 if (
args[0] == 0 && exc->
args == 0 )
3459 Ins_JMPR( exc,
args );
3474 Ins_JMPR( exc,
args );
3499#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
3501 FT_Byte opcode_pattern[9][12] = {
3594 FT_UShort opcode_pointer[9] = { 0, 0, 0, 0, 0, 0, 0, 0, 0 };
3595 FT_UShort opcode_size[9] = { 12, 8, 8, 6, 7, 4, 5, 4, 2 };
3614 for ( ; rec <
limit; rec++ )
3616 if ( rec->
opc ==
n )
3649#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
3652 if (
n >= 64 &&
n <= 66 )
3659 while ( SkipCode( exc ) ==
SUCCESS )
3662#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
3664 if ( SUBPIXEL_HINTING_INFINALITY )
3666 for (
i = 0;
i < opcode_patterns;
i++ )
3668 if ( opcode_pointer[
i] < opcode_size[
i] &&
3669 exc->
opcode == opcode_pattern[
i][opcode_pointer[
i]] )
3671 opcode_pointer[
i] += 1;
3673 if ( opcode_pointer[
i] == opcode_size[
i] )
3675 FT_TRACE6((
"sph: Function %d, opcode ptrn: %d, %s %s\n",
3684 exc->
face->sph_found_func_flags |= SPH_FDEF_INLINE_DELTA_1;
3689 exc->
face->sph_found_func_flags |= SPH_FDEF_INLINE_DELTA_2;
3698 exc->
face->sph_found_func_flags |= SPH_FDEF_DIAGONAL_STROKE;
3707 exc->
face->sph_found_func_flags |= SPH_FDEF_VACUFORM_ROUND_1;
3714 exc->
face->sph_found_func_flags |= SPH_FDEF_TTFAUTOHINT_1;
3727 exc->
face->sph_found_func_flags |= SPH_FDEF_SPACING_1;
3741 exc->
face->sph_found_func_flags |= SPH_FDEF_SPACING_2;
3747 exc->
face->sph_found_func_flags |= SPH_FDEF_TYPEMAN_DIAGENDCTRL;
3753 exc->
face->sph_found_func_flags |= SPH_FDEF_TYPEMAN_DIAGENDCTRL;
3757 opcode_pointer[
i] = 0;
3762 opcode_pointer[
i] = 0;
3766 exc->
face->sph_compatibility_mode =
3767 ( ( exc->
face->sph_found_func_flags & SPH_FDEF_INLINE_DELTA_1 ) |
3768 ( exc->
face->sph_found_func_flags & SPH_FDEF_INLINE_DELTA_2 ) );
3800#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
3801 exc->sph_in_func_flags = 0x0000;
3855 if ( BOUNDSL(
F, exc->
maxFunc + 1 ) )
3877 while ( def < limit && def->opc !=
F )
3888#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
3889 if ( SUBPIXEL_HINTING_INFINALITY &&
3890 exc->ignore_x_mode &&
3891 ( ( exc->iup_called &&
3892 ( exc->sph_tweak_flags & SPH_TWEAK_NO_CALL_AFTER_IUP ) ) ||
3915 Ins_Goto_CodeRange( exc, def->
range, def->
start );
3943 if ( BOUNDSL(
F, exc->
maxFunc + 1 ) )
3965 while ( def < limit && def->opc !=
F )
3976#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
3977 if ( SUBPIXEL_HINTING_INFINALITY &&
3978 exc->ignore_x_mode &&
4003 Ins_Goto_CodeRange( exc, def->
range, def->
start );
4045 for ( ; def <
limit; def++ )
4061 if ( 0 >
args[0] ||
args[0] > 0x00FF )
4078 while ( SkipCode( exc ) ==
SUCCESS )
4122 for ( K = 1; K <=
L; K++ )
4152 for ( K = 0; K <
L; K++ )
4153 args[K] = GetShortIns( exc );
4181 for ( K = 1; K <=
L; K++ )
4209 for ( K = 0; K <
L; K++ )
4210 args[K] = GetShortIns( exc );
4244 p1 = exc->
zp1.
cur + aIdx2;
4245 p2 = exc->
zp2.
cur + aIdx1;
4255 if (
A == 0 &&
B == 0 )
4261 if ( ( opcode & 1 ) != 0 )
4308 if ( ( opcode & 2 ) == 0 )
4314 Compute_Funcs( exc );
4328 if ( Ins_SxVTL( exc,
4334 Compute_Funcs( exc );
4349 if ( Ins_SxVTL( exc,
4354 Compute_Funcs( exc );
4369 Compute_Funcs( exc );
4396 Compute_Funcs( exc );
4421 Compute_Funcs( exc );
4716 SetSuperRound( exc, 0x4000,
args[0] );
4733 SetSuperRound( exc, 0x2D41,
args[0] );
4768 R = FAST_DUALPROJ( &exc->
zp2.
org[
L] );
4770 R = FAST_PROJECT( &exc->
zp2.
cur[
L] );
4804 K = FAST_PROJECT( &exc->
zp2.
cur[
L] );
4862 D = DUALPROJ( vec1, vec2 );
4873 D = DUALPROJ( vec1, vec2 );
4884 D = FAST_DUALPROJ( &
vec );
4890#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
4892 if ( SUBPIXEL_HINTING_INFINALITY &&
4893 exc->ignore_x_mode &&
4942 if (
A == 0 &&
B == 0 )
4949 if ( ( opcode & 1 ) != 0 )
4966 if (
A == 0 &&
B == 0 )
4973 if ( ( opcode & 1 ) != 0 )
4981 Compute_Funcs( exc );
5128 if ( K < 1 || K > 3 )
5136 Kf = 1 << ( K - 1 );
5154#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
5157 if ( SUBPIXEL_HINTING_INFINALITY )
5158 exc->ignore_x_mode =
FT_BOOL(
L == 4 );
5161#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
5165 if ( SUBPIXEL_HINTING_MINIMAL )
5166 exc->backward_compatibility = !
FT_BOOL(
L == 4 );
5253#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
5255 if ( SUBPIXEL_HINTING_MINIMAL &&
5256 exc->backward_compatibility &&
5269 while ( exc->
GS.
loop > 0 )
5308#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
5310 if ( SUBPIXEL_HINTING_MINIMAL &&
5311 exc->backward_compatibility &&
5328 for (
I =
L;
I <= K;
I++ )
5346#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
5348 if ( SUBPIXEL_HINTING_MINIMAL &&
5349 exc->backward_compatibility &&
5366 for (
I =
L;
I <= K;
I++ )
5424#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
5425 if ( !( SUBPIXEL_HINTING_MINIMAL &&
5426 exc->backward_compatibility ) )
5436#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
5437 if ( !( SUBPIXEL_HINTING_MINIMAL &&
5438 exc->backward_compatibility &&
5440 exc->iupy_called ) )
5473 if ( Compute_Point_Displacement( exc, &
dx, &
dy, &zp, &refp ) )
5476 while ( exc->
GS.
loop > 0 )
5490#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
5492 if ( SUBPIXEL_HINTING_INFINALITY && exc->ignore_x_mode )
5539 if ( Compute_Point_Displacement( exc, &
dx, &
dy, &zp, &refp ) )
5588 if ( Compute_Point_Displacement( exc, &
dx, &
dy, &zp, &refp ) )
5623#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
5626#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
5644 while ( exc->
GS.
loop > 0 )
5659#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
5660 if ( SUBPIXEL_HINTING_INFINALITY )
5670 if ( exc->ignore_x_mode )
5678 if ( !exc->
face->sph_compatibility_mode &&
5689 if ( ( exc->sph_tweak_flags & SPH_TWEAK_SKIP_NONPIXEL_Y_MOVES ) &&
5693 Move_Zp2_Point( exc,
5700 else if ( exc->
face->sph_compatibility_mode )
5702 if ( exc->sph_tweak_flags & SPH_TWEAK_ROUND_NONPIXEL_Y_MOVES )
5709 if ( exc->iup_called &&
5710 ( ( exc->sph_in_func_flags & SPH_FDEF_INLINE_DELTA_1 ) ||
5711 ( exc->sph_in_func_flags & SPH_FDEF_INLINE_DELTA_2 ) ) )
5714 if ( !( exc->sph_tweak_flags & SPH_TWEAK_ALWAYS_SKIP_DELTAP ) &&
5717 ( exc->sph_tweak_flags & SPH_TWEAK_DO_SHPIX ) ) )
5726 if ( ( B1 & 63 ) == 0 &&
5732 else if ( exc->sph_in_func_flags & SPH_FDEF_TYPEMAN_DIAGENDCTRL )
5740#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
5741 if ( SUBPIXEL_HINTING_MINIMAL &&
5742 exc->backward_compatibility )
5750 ( !( exc->iupx_called && exc->iupy_called ) &&
5759#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
5783#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
5787 if ( SUBPIXEL_HINTING_INFINALITY )
5791 if ( exc->ignore_x_mode &&
5793 !( exc->sph_tweak_flags & SPH_TWEAK_NORMAL_ROUND ) )
5794 control_value_cutin = 0;
5819#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
5821 if ( SUBPIXEL_HINTING_INFINALITY &&
5822 exc->ignore_x_mode &&
5836 if ( ( exc->
opcode & 1 ) != 0 )
5865 if ( ( exc->
opcode & 1 ) != 0 )
5868#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
5869 if ( SUBPIXEL_HINTING_INFINALITY &&
5870 exc->ignore_x_mode &&
5914#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
5915 if ( SUBPIXEL_HINTING_INFINALITY &&
5916 exc->ignore_x_mode &&
5919 !( exc->sph_tweak_flags & SPH_TWEAK_NORMAL_ROUND ) )
5920 control_value_cutin = 0;
5924 BOUNDSL( cvtEntry, exc->
cvtSize ) )
5955#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
5958 if ( !( SUBPIXEL_HINTING_INFINALITY &&
5959 ( exc->ignore_x_mode &&
5960 exc->
face->sph_compatibility_mode ) ) )
5968#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
5969 if ( SUBPIXEL_HINTING_INFINALITY &&
5970 exc->ignore_x_mode &&
5971 ( exc->sph_tweak_flags & SPH_TWEAK_MIAP_HACK ) &&
5979 if ( ( exc->
opcode & 1 ) != 0 )
5984#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
5985 if ( SUBPIXEL_HINTING_INFINALITY &&
5986 exc->ignore_x_mode &&
6022#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
6023 if ( SUBPIXEL_HINTING_INFINALITY &&
6024 exc->ignore_x_mode &&
6026 !( exc->sph_tweak_flags & SPH_TWEAK_NORMAL_ROUND ) )
6027 minimum_distance = 0;
6051 org_dist = DUALPROJ( vec1, vec2 );
6062 org_dist = DUALPROJ( vec1, vec2 );
6075 org_dist = FAST_DUALPROJ( &
vec );
6083 org_dist < exc->
GS.single_width_value +
6088 if ( org_dist >= 0 )
6096 if ( ( exc->
opcode & 4 ) != 0 )
6098#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
6099 if ( SUBPIXEL_HINTING_INFINALITY &&
6100 exc->ignore_x_mode &&
6121 if ( ( exc->
opcode & 8 ) != 0 )
6123 if ( org_dist >= 0 )
6145 if ( ( exc->
opcode & 16 ) != 0 )
6167 control_value_cutin,
6169#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
6181#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
6182 if ( SUBPIXEL_HINTING_INFINALITY &&
6183 exc->ignore_x_mode &&
6185 !( exc->sph_tweak_flags & SPH_TWEAK_NORMAL_ROUND ) )
6186 control_value_cutin = minimum_distance = 0;
6192 BOUNDSL( cvtEntry, exc->
cvtSize + 1 ) ||
6210 if ( cvt_dist >= 0 )
6221 TT_MulFix14( cvt_dist,
6224 TT_MulFix14( cvt_dist,
6236 if ( ( org_dist ^ cvt_dist ) < 0 )
6237 cvt_dist = -cvt_dist;
6240#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
6241 if ( SUBPIXEL_HINTING_INFINALITY &&
6242 exc->ignore_x_mode &&
6244 ( exc->sph_tweak_flags & SPH_TWEAK_TIMES_NEW_ROMAN_HACK ) )
6246 if ( cur_dist < -64 )
6248 else if ( cur_dist > 64 && cur_dist < 84 )
6255 if ( ( exc->
opcode & 4 ) != 0 )
6274 if (
FT_ABS( cvt_dist - org_dist ) > control_value_cutin )
6275 cvt_dist = org_dist;
6286#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
6288 if ( SUBPIXEL_HINTING_INFINALITY &&
6289 exc->ignore_x_mode &&
6292 if (
FT_ABS( cvt_dist - org_dist ) > control_value_cutin )
6293 cvt_dist = org_dist;
6305 if ( ( exc->
opcode & 8 ) != 0 )
6307 if ( org_dist >= 0 )
6319#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
6320 if ( SUBPIXEL_HINTING_INFINALITY )
6325 if ( exc->ignore_x_mode &&
6327 ( exc->sph_tweak_flags & SPH_TWEAK_ROUND_NONPIXEL_Y_MOVES ) )
6330 if ( exc->ignore_x_mode &&
6332 ( exc->
opcode & 16 ) == 0 &&
6333 ( exc->
opcode & 8 ) == 0 &&
6334 ( exc->sph_tweak_flags & SPH_TWEAK_COURIER_NEW_2_HACK ) )
6344#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
6345 if ( SUBPIXEL_HINTING_INFINALITY )
6350 if ( exc->ignore_x_mode )
6352 if ( exc->
face->sph_compatibility_mode &&
6356 reverse_move =
TRUE;
6358 if ( ( exc->sph_tweak_flags & SPH_TWEAK_SKIP_NONPIXEL_Y_MOVES ) &&
6362 reverse_move =
TRUE;
6377 if ( ( exc->
opcode & 16 ) != 0 )
6397#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
6398 if ( SUBPIXEL_HINTING_INFINALITY &&
6399 exc->ignore_x_mode &&
6401 ( exc->sph_tweak_flags & SPH_TWEAK_NO_ALIGNRP_AFTER_IUP ) )
6416 while ( exc->
GS.
loop > 0 )
6605 twilight = ( exc->
GS.
gep0 == 0 ||
6636 old_range = DUALPROJ( &exc->
zp1.
org[exc->
GS.
rp2], orus_base );
6638 old_range = DUALPROJ( &exc->
zp1.
orus[exc->
GS.
rp2], orus_base );
6651 old_range = FAST_DUALPROJ( &
vec );
6654 cur_range = PROJECT( &exc->
zp1.
cur[exc->
GS.
rp2], cur_base );
6675 org_dist = DUALPROJ( &exc->
zp2.
org[
point], orus_base );
6677 org_dist = DUALPROJ( &exc->
zp2.
orus[
point], orus_base );
6690 org_dist = FAST_DUALPROJ( &
vec );
6693 cur_dist = PROJECT( &exc->
zp2.
cur[
point], cur_base );
6698 new_dist =
FT_MulDiv( org_dist, cur_range, old_range );
6717 new_dist = org_dist;
6761 mask &= ~FT_CURVE_TAG_TOUCH_X;
6764 mask &= ~FT_CURVE_TAG_TOUCH_Y;
6771 typedef struct IUP_WorkerRec_
6778 } IUP_WorkerRec, *IUP_Worker;
6782 _iup_worker_shift( IUP_Worker worker,
6794 for (
i = p1;
i <
p;
i++ )
6797 for (
i =
p + 1;
i <= p2;
i++ )
6804 _iup_worker_interpolate( IUP_Worker worker,
6811 FT_F26Dot6 orus1, orus2, org1, org2, cur1, cur2, delta1, delta2;
6817 if (
BOUNDS( ref1, worker->max_points ) ||
6818 BOUNDS( ref2, worker->max_points ) )
6821 orus1 = worker->orus[ref1].x;
6822 orus2 = worker->orus[ref2].x;
6824 if ( orus1 > orus2 )
6839 org1 = worker->orgs[ref1].x;
6840 org2 = worker->orgs[ref2].x;
6841 cur1 = worker->curs[ref1].x;
6842 cur2 = worker->curs[ref2].x;
6846 if ( cur1 == cur2 || orus1 == orus2 )
6850 for (
i = p1;
i <= p2;
i++ )
6858 else if (
x >= org2 )
6864 worker->curs[
i].x =
x;
6874 for (
i = p1;
i <= p2;
i++ )
6882 else if (
x >= org2 )
6898 worker->curs[
i].x =
x;
6926#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
6930 if ( SUBPIXEL_HINTING_MINIMAL &&
6931 exc->backward_compatibility )
6933 if ( exc->iupx_called && exc->iupy_called )
6937 exc->iupx_called =
TRUE;
6939 exc->iupy_called =
TRUE;
6966#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
6967 if ( SUBPIXEL_HINTING_INFINALITY &&
6968 exc->ignore_x_mode )
6970 exc->iup_called =
TRUE;
6971 if ( exc->sph_tweak_flags & SPH_TWEAK_SKIP_IUP )
6979 first_point =
point;
6987 if (
point <= end_point )
6989 first_touched =
point;
6990 cur_touched =
point;
6994 while (
point <= end_point )
6998 _iup_worker_interpolate( &
V,
7003 cur_touched =
point;
7009 if ( cur_touched == first_touched )
7010 _iup_worker_shift( &
V, first_point, end_point, cur_touched );
7013 _iup_worker_interpolate( &
V,
7019 if ( first_touched > 0 )
7020 _iup_worker_interpolate( &
V,
7028 }
while ( contour < exc->pts.n_contours );
7046#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
7050 if ( SUBPIXEL_HINTING_INFINALITY &&
7051 exc->ignore_x_mode &&
7053 ( exc->sph_tweak_flags & SPH_TWEAK_NO_DELTAP_AFTER_IUP ) )
7061 for (
k = 1;
k <= nump;
k++ )
7063 if ( exc->
args < 2 )
7109#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
7111 if ( SUBPIXEL_HINTING_INFINALITY )
7121 if ( !exc->ignore_x_mode ||
7122 ( exc->sph_tweak_flags & SPH_TWEAK_ALWAYS_DO_DELTAP ) ||
7135 if ( !exc->
face->sph_compatibility_mode &&
7140 else if ( exc->
face->sph_compatibility_mode &&
7141 !( exc->sph_tweak_flags & SPH_TWEAK_ALWAYS_SKIP_DELTAP ) )
7143 if ( exc->sph_tweak_flags & SPH_TWEAK_ROUND_NONPIXEL_Y_MOVES )
7148 if ( !exc->iup_called &&
7157 ( ( exc->
face->sph_compatibility_mode &&
7159 ( B2 & 63 ) != 0 ) ||
7160 ( ( exc->sph_tweak_flags &
7161 SPH_TWEAK_SKIP_NONPIXEL_Y_MOVES_DELTAP ) &&
7163 ( B2 & 63 ) != 0 ) ) )
7172#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
7175 if ( SUBPIXEL_HINTING_MINIMAL &&
7176 exc->backward_compatibility )
7178 if ( !( exc->iupx_called && exc->iupy_called ) &&
7217 for (
k = 1;
k <= nump;
k++ )
7219 if ( exc->
args < 2 )
7308#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
7314 if ( SUBPIXEL_HINTING_INFINALITY &&
7315 (
args[0] & 1 ) != 0 &&
7316 exc->subpixel_hinting )
7318 if ( exc->ignore_x_mode )
7322 K = exc->rasterizer_version;
7323 FT_TRACE6((
"Setting rasterizer version %d\n",
7324 exc->rasterizer_version ));
7331 if ( (
args[0] & 1 ) != 0 )
7332 K =
driver->interpreter_version;
7350#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
7357 if ( (
args[0] & 8 ) != 0 && exc->
face->blend )
7370#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
7375 if ( SUBPIXEL_HINTING_MINIMAL && exc->subpixel_hinting_lean )
7383 if ( (
args[0] & 64 ) != 0 )
7391 if ( (
args[0] & 256 ) != 0 && exc->vertical_lcd_lean )
7400 if ( (
args[0] & 1024 ) != 0 )
7410 if ( (
args[0] & 2048 ) != 0 && exc->subpixel_hinting_lean )
7421 if ( (
args[0] & 4096 ) != 0 && exc->grayscale_cleartype )
7426#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
7428 if ( SUBPIXEL_HINTING_INFINALITY &&
7432 if ( exc->rasterizer_version >= 37 )
7439 if ( (
args[0] & 64 ) != 0 && exc->subpixel_hinting )
7448 if ( (
args[0] & 128 ) != 0 && exc->compatible_widths )
7457 if ( (
args[0] & 256 ) != 0 && exc->vertical_lcd )
7466 if ( (
args[0] & 512 ) != 0 && exc->bgr )
7469 if ( exc->rasterizer_version >= 38 )
7477 if ( (
args[0] & 1024 ) != 0 && exc->subpixel_positioned )
7486 if ( (
args[0] & 2048 ) != 0 && exc->symmetrical_smoothing )
7495 if ( (
args[0] & 4096 ) != 0 && exc->gray_cleartype )
7507#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
7535 for (
i = 0;
i < num_axes;
i++ )
7565 for ( ; def <
limit; def++ )
7585 Ins_Goto_CodeRange( exc, def->
range, def->
start );
7635#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
7636 FT_Byte opcode_pattern[1][2] = {
7649#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
7650 exc->iup_called =
FALSE;
7653#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
7667 if ( SUBPIXEL_HINTING_MINIMAL &&
7668 exc->subpixel_hinting_lean &&
7672 exc->backward_compatibility =
FALSE;
7674 exc->iupx_called =
FALSE;
7675 exc->iupy_called =
FALSE;
7680 num_twilight_points =
FT_MAX( 30,
7684 if ( num_twilight_points > 0xFFFFU )
7685 num_twilight_points = 0xFFFFU;
7687 FT_TRACE5((
"TT_RunIns: Resetting number of twilight points\n"
7688 " from %d to the more reasonable value %d\n",
7690 num_twilight_points ));
7722 FT_TRACE5((
"TT_RunIns: Limiting total number of loops in LOOPCALL"
7726 FT_TRACE5((
"TT_RunIns: Limiting total number of backward jumps"
7748 Compute_Funcs( exc );
7755#ifdef FT_DEBUG_LEVEL_TRACE
7768 : 12 - ( *opcode_name[exc->
opcode] -
'0' ),
7770 for (
n = 1;
n <=
cnt;
n++ )
7776 if ( ( exc->
length = opcode_length[exc->
opcode] ) < 0 )
7779 goto LErrorCodeOverflow_;
7785 goto LErrorCodeOverflow_;
7788 exc->
args = exc->
top - ( Pop_Push_Count[exc->
opcode] >> 4 );
7792 if ( exc->
args < 0 )
7801 for (
i = 0;
i < Pop_Push_Count[exc->
opcode] >> 4;
i++ )
7806#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
7807 if ( exc->
opcode == 0x91 )
7815 if ( exc->
face->blend )
7834#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
7836 if ( SUBPIXEL_HINTING_INFINALITY )
7838 for (
i = 0;
i < opcode_patterns;
i++ )
7840 if ( opcode_pointer[
i] < opcode_size[
i] &&
7841 exc->
opcode == opcode_pattern[
i][opcode_pointer[
i]] )
7843 opcode_pointer[
i] += 1;
7845 if ( opcode_pointer[
i] == opcode_size[
i] )
7847 FT_TRACE6((
"sph: opcode ptrn: %d, %s %s\n",
7857 opcode_pointer[
i] = 0;
7861 opcode_pointer[
i] = 0;
7885 Ins_SPVTL( exc,
args );
7890 Ins_SFVTL( exc,
args );
7894 Ins_SPVFS( exc,
args );
7898 Ins_SFVFS( exc,
args );
7902 Ins_GPV( exc,
args );
7906 Ins_GFV( exc,
args );
7914 Ins_ISECT( exc,
args );
7918 Ins_SRP0( exc,
args );
7922 Ins_SRP1( exc,
args );
7926 Ins_SRP2( exc,
args );
7930 Ins_SZP0( exc,
args );
7934 Ins_SZP1( exc,
args );
7938 Ins_SZP2( exc,
args );
7942 Ins_SZPS( exc,
args );
7946 Ins_SLOOP( exc,
args );
7958 Ins_SMD( exc,
args );
7966 Ins_JMPR( exc,
args );
7970 Ins_SCVTCI( exc,
args );
7974 Ins_SSWCI( exc,
args );
7978 Ins_SSW( exc,
args );
7998 Ins_DEPTH( exc,
args );
8002 Ins_CINDEX( exc,
args );
8006 Ins_MINDEX( exc,
args );
8010 Ins_ALIGNPTS( exc,
args );
8018 Ins_UTP( exc,
args );
8022 Ins_LOOPCALL( exc,
args );
8026 Ins_CALL( exc,
args );
8030 Ins_FDEF( exc,
args );
8039 Ins_MDAP( exc,
args );
8054 Ins_SHC( exc,
args );
8059 Ins_SHZ( exc,
args );
8063 Ins_SHPIX( exc,
args );
8072 Ins_MSIRP( exc,
args );
8085 Ins_MIAP( exc,
args );
8089 Ins_NPUSHB( exc,
args );
8093 Ins_NPUSHW( exc,
args );
8097 Ins_WS( exc,
args );
8101 Ins_RS( exc,
args );
8105 Ins_WCVTP( exc,
args );
8109 Ins_RCVT( exc,
args );
8114 Ins_GC( exc,
args );
8118 Ins_SCFS( exc,
args );
8123 Ins_MD( exc,
args );
8127 Ins_MPPEM( exc,
args );
8131 Ins_MPS( exc,
args );
8171 Ins_ODD( exc,
args );
8175 Ins_EVEN( exc,
args );
8179 Ins_IF( exc,
args );
8199 Ins_DELTAP( exc,
args );
8203 Ins_SDB( exc,
args );
8207 Ins_SDS( exc,
args );
8219 Ins_DIV( exc,
args );
8239 Ins_CEILING(
args );
8246 Ins_ROUND( exc,
args );
8253 Ins_NROUND( exc,
args );
8257 Ins_WCVTF( exc,
args );
8262 Ins_DELTAP( exc,
args );
8268 Ins_DELTAC( exc,
args );
8272 Ins_SROUND( exc,
args );
8276 Ins_S45ROUND( exc,
args );
8280 Ins_JROT( exc,
args );
8284 Ins_JROF( exc,
args );
8316 Ins_FLIPRGON( exc,
args );
8320 Ins_FLIPRGOFF( exc,
args );
8329 Ins_SCANCTRL( exc,
args );
8334 Ins_SDPVTL( exc,
args );
8338 Ins_GETINFO( exc,
args );
8342 Ins_IDEF( exc,
args );
8358 Ins_SCANTYPE( exc,
args );
8362 Ins_INSTCTRL( exc,
args );
8370#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
8375 if ( exc->
face->blend )
8376 Ins_GETVARIATION( exc,
args );
8385 if ( exc->
face->blend )
8386 Ins_GETDATA(
args );
8393 if ( opcode >= 0xE0 )
8394 Ins_MIRP( exc,
args );
8395 else if ( opcode >= 0xC0 )
8396 Ins_MDRP( exc,
args );
8397 else if ( opcode >= 0xB8 )
8398 Ins_PUSHW( exc,
args );
8399 else if ( opcode >= 0xB0 )
8400 Ins_PUSHB( exc,
args );
8408 switch ( exc->
error )
8411 case FT_ERR( Invalid_Opcode ):
8417 for ( ; def <
limit; def++ )
8437 if ( Ins_Goto_CodeRange( exc,
8473 return FT_THROW( Execution_Too_Long );
8489 FT_TRACE4((
" %d instruction%s executed\n",
8490 ins_counter == 1 ?
"" :
"s",
8494 LErrorCodeOverflow_:
8499 FT_TRACE1((
" The interpreter returned error 0x%x\n", exc->
error ));
while(CdLookupNextInitialFileDirent(IrpContext, Fcb, FileContext))
#define TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES
static DOUBLE day(DOUBLE time)
static BOOL Normalize(PFILE_TYPE_ENTRY Entry)
FT_DivFix(FT_Long a, FT_Long b)
#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_BEGIN_HEADER FT_MulDiv_No_Round(FT_Long a, FT_Long b, FT_Long c)
FT_Vector_NormLen(FT_Vector *vector)
FT_Hypot(FT_Fixed x, FT_Fixed y)
#define FT_CALLBACK_DEF(x)
#define FT_ASSERT(condition)
#define FT_ERROR(varformat)
#define FT_TRACE5(varformat)
#define FT_TRACE7(varformat)
#define FT_TRACE6(varformat)
#define FT_TRACE1(varformat)
#define FT_TRACE4(varformat)
#define TT_INTERPRETER_VERSION_38
#define TT_INTERPRETER_VERSION_35
#define FT_CURVE_TAG_TOUCH_X
#define FT_CURVE_TAG_TOUCH_BOTH
#define FT_CURVE_TAG_TOUCH_Y
FT_BEGIN_HEADER typedef signed long FT_Pos
#define FT_REALLOC(ptr, cursz, newsz)
#define FT_NEW_ARRAY(ptr, count)
#define FT_ARRAY_MOVE(dest, source, count)
#define FT_PAD_ROUND_LONG(x, n)
#define FT_FACE_DRIVER(x)
#define FT_PIX_ROUND_LONG(x)
#define FT_PIX_CEIL_LONG(x)
typedefFT_BEGIN_HEADER struct FT_MemoryRec_ * FT_Memory
FT_BEGIN_HEADER typedef unsigned char FT_Bool
GLint GLint GLint GLint GLint x
GLint GLint GLint GLint GLint GLint y
GLenum GLenum GLenum GLenum GLenum scale
GLenum GLuint GLint GLenum face
GLboolean GLboolean GLboolean b
GLsizei GLsizei GLfloat distance
GLuint GLsizei GLsizei * length
GLboolean GLboolean GLboolean GLboolean a
GLfloat GLfloat GLfloat v2
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
#define AA(_h, _w, _x, _y, _z)
static const struct update_accum a1
static CRYPT_DATA_BLOB b1[]
static char memory[1024 *256]
struct @1705::@1706 driver
__forceinline bool __cdecl add(big_integer &x, uint32_t const value)
__asm__(".p2align 4, 0x90\n" ".seh_proc __seh2_global_filter_func\n" "__seh2_global_filter_func:\n" "\tsub %rbp, %rax\n" "\tpush %rbp\n" "\t.seh_pushreg %rbp\n" "\tsub $32, %rsp\n" "\t.seh_stackalloc 32\n" "\t.seh_endprologue\n" "\tsub %rax, %rdx\n" "\tmov %rdx, %rbp\n" "\tjmp *%r8\n" "__seh2_global_filter_func_exit:\n" "\t.p2align 4\n" "\tadd $32, %rsp\n" "\tpop %rbp\n" "\tret\n" "\t.seh_endproc")
STDMETHOD() Skip(THIS_ ULONG celt) PURE
TT_Get_CVT_Func func_read_cvt
FT_ULong loopcall_counter
TT_Project_Func func_dualproj
FT_ULong neg_jump_counter_max
TT_Size_Metrics tt_metrics
TT_Move_Func func_move_orig
TT_Project_Func func_project
TT_Set_CVT_Func func_move_cvt
TT_Cur_Ppem_Func func_cur_ppem
FT_ULong loopcall_counter_max
FT_ULong neg_jump_counter
TT_CodeRangeTable codeRangeTable
TT_Set_CVT_Func func_write_cvt
TT_Interpreter interpreter
FT_F26Dot6 single_width_value
FT_F26Dot6 control_value_cutin
FT_F26Dot6 minimum_distance
FT_F26Dot6 single_width_cutin
FT_UShort maxStackElements
FT_UShort maxSizeOfInstructions
FT_F26Dot6 compensations[4]
ecx edi movl ebx edx edi decl ecx esi eax jecxz decl eax andl eax esi movl edx movl TEMP incl eax andl eax ecx incl ebx testl eax jnz xchgl ecx incl TEMP esp ecx subl ebx pushl ecx ecx edx ecx shrl ecx mm0 mm4 mm0 mm4 mm1 mm5 mm1 mm5 mm2 mm6 mm2 mm6 mm3 mm7 mm3 mm7 paddd mm0 paddd mm4 paddd mm0 paddd mm4 paddd mm0 paddd mm4 movq mm1 movq mm5 psrlq mm1 psrlq mm5 paddd mm0 paddd mm4 psrad mm0 psrad mm4 packssdw mm0 packssdw mm4 mm1 punpckldq mm0 pand mm1 pand mm0 por mm1 movq edi esi edx edi decl ecx jnz popl ecx andl ecx jecxz mm0 mm0 mm1 mm1 mm2 mm2 mm3 mm3 paddd mm0 paddd mm0 paddd mm0 movq mm1 psrlq mm1 paddd mm0 psrad mm0 packssdw mm0 movd eax movw ax
FT_F26Dot6(* TT_Round_Func)(TT_ExecContext exc, FT_F26Dot6 distance, FT_F26Dot6 compensation)
#define TT_Round_Super_45
#define TT_Round_To_Double_Grid
#define TT_Round_Up_To_Grid
TT_RunIns(TT_ExecContext exec)
#define TT_Round_To_Half_Grid
const TT_GraphicsState tt_default_graphics_state
void(* TT_Move_Func)(TT_ExecContext exc, TT_GlyphZone zone, FT_UShort point, FT_F26Dot6 distance)
FT_F26Dot6(* TT_Project_Func)(TT_ExecContext exc, FT_Pos dx, FT_Pos dy)
TT_New_Context(TT_Driver driver)
#define TT_Round_Down_To_Grid
typedefFT_BEGIN_HEADER struct TT_DriverRec_ * TT_Driver
#define TT_MAX_CODE_RANGES
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList