33#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
38#ifdef TT_USE_BYTECODE_INTERPRETER
48#define FT_COMPONENT ttinterp
51#define NO_SUBPIXEL_HINTING \
52 ( ((TT_Driver)FT_FACE_DRIVER( exc->face ))->interpreter_version == \
53 TT_INTERPRETER_VERSION_35 )
55#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
56#define SUBPIXEL_HINTING_INFINALITY \
57 ( ((TT_Driver)FT_FACE_DRIVER( exc->face ))->interpreter_version == \
58 TT_INTERPRETER_VERSION_38 )
61#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
62#define SUBPIXEL_HINTING_MINIMAL \
63 ( ((TT_Driver)FT_FACE_DRIVER( exc->face ))->interpreter_version == \
64 TT_INTERPRETER_VERSION_40 )
67#define PROJECT( v1, v2 ) \
68 exc->func_project( exc, \
69 SUB_LONG( (v1)->x, (v2)->x ), \
70 SUB_LONG( (v1)->y, (v2)->y ) )
72#define DUALPROJ( v1, v2 ) \
73 exc->func_dualproj( exc, \
74 SUB_LONG( (v1)->x, (v2)->x ), \
75 SUB_LONG( (v1)->y, (v2)->y ) )
77#define FAST_PROJECT( v ) \
78 exc->func_project( exc, (v)->x, (v)->y )
80#define FAST_DUALPROJ( v ) \
81 exc->func_dualproj( exc, (v)->x, (v)->y )
88#define BOUNDS( x, n ) ( (FT_UInt)(x) >= (FT_UInt)(n) )
89#define BOUNDSL( x, n ) ( (FT_ULong)(x) >= (FT_ULong)(n) )
296 FT_TRACE1((
"Init_Context: new object at %p\n", (
void *)exec ));
321 FT_ERROR((
"Init_Context: not enough memory for %p\n", (
void *)exec ));
322 TT_Done_Context( exec );
365 void** pbuff = (
void**)_pbuff;
368 if ( *
size < new_max )
370 if (
FT_REALLOC( *pbuff, *
size * multiplier, new_max * multiplier ) )
416 maxp = &
face->max_profile;
591 TRUE, 68, 0, 0, 9, 3,
647#define PACK( x, y ) ( ( x << 4 ) | y )
651 const FT_Byte Pop_Push_Count[256] =
946#ifdef FT_DEBUG_LEVEL_TRACE
953 const char*
const opcode_name[256] =
1119#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
1253 const FT_Char opcode_length[256] =
1255 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1256 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1257 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1258 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1260 -1,-2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1261 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1262 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1263 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1265 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1266 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1267 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1268 2, 3, 4, 5, 6, 7, 8, 9, 3, 5, 7, 9, 11,13,15,17,
1270 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1271 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1272 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1273 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
1279#ifndef FT_CONFIG_OPTION_NO_ASSEMBLER
1281#if defined( __arm__ ) && \
1282 ( defined( __thumb2__ ) || !defined( __thumb__ ) )
1284#define TT_MulFix14 TT_MulFix14_arm
1287 TT_MulFix14_arm( FT_Int32
a,
1293#if defined( __CC_ARM ) || defined( __ARMCC__ )
1303 orr
a,
a,
t, lsl #18
1306#elif defined( __GNUC__ )
1309 "smull %1, %2, %4, %3\n\t"
1310 "mov %0, %2, asr #31\n\t"
1311#
if defined( __clang__ ) && defined( __thumb2__ )
1312 "add.w %0, %0, #0x2000\n\t"
1314 "add %0, %0, #0x2000\n\t"
1316 "adds %1, %1, %0\n\t"
1317 "adc %2, %2, #0\n\t"
1318 "mov %0, %1, lsr #14\n\t"
1319 "orr %0, %0, %2, lsl #18\n\t"
1320 :
"=r"(
a),
"=&r"(t2),
"=&r"(
t)
1334#if defined( __GNUC__ ) && \
1335 ( defined( __i386__ ) || defined( __x86_64__ ) )
1337#define TT_MulFix14 TT_MulFix14_long_long
1340#if ( __GNUC__ * 100 + __GNUC_MINOR__ ) >= 406
1341#pragma GCC diagnostic push
1343#pragma GCC diagnostic ignored "-Wlong-long"
1350 TT_MulFix14_long_long( FT_Int32
a,
1359 long long tmp =
ret >> 63;
1362 ret += 0x2000 + tmp;
1364 return (FT_Int32)(
ret >> 14 );
1367#if ( __GNUC__ * 100 + __GNUC_MINOR__ ) >= 406
1368#pragma GCC diagnostic pop
1380 TT_MulFix14( FT_Int32
a,
1384 FT_UInt32 ah, al, mid, lo, hi;
1394 ah = (FT_UInt32)( (
a >> 16 ) & 0xFFFFU );
1395 al = (FT_UInt32)(
a & 0xFFFFU );
1400 mid = ( mid << 16 ) + ( 1 << 13 );
1405 mid = ( lo >> 14 ) | ( hi << 18 );
1407 return sign >= 0 ? (FT_Int32)mid : -(FT_Int32)mid;
1413#if defined( __GNUC__ ) && \
1414 ( defined( __i386__ ) || \
1415 defined( __x86_64__ ) || \
1416 defined( __arm__ ) )
1418#define TT_DotFix14 TT_DotFix14_long_long
1420#if ( __GNUC__ * 100 + __GNUC_MINOR__ ) >= 406
1421#pragma GCC diagnostic push
1423#pragma GCC diagnostic ignored "-Wlong-long"
1426 TT_DotFix14_long_long( FT_Int32
ax,
1434 long long temp1 = (
long long)
ax * bx;
1435 long long temp2 = (
long long)ay *
by;
1439 temp2 = temp1 >> 63;
1440 temp1 += 0x2000 + temp2;
1442 return (FT_Int32)( temp1 >> 14 );
1446#if ( __GNUC__ * 100 + __GNUC_MINOR__ ) >= 406
1447#pragma GCC diagnostic pop
1457 TT_DotFix14( FT_Int32
ax,
1462 FT_Int32
m,
s, hi1, hi2, hi;
1463 FT_UInt32
l, lo1, lo2, lo;
1467 l = (FT_UInt32)( (
ax & 0xFFFFU ) * bx );
1468 m = (
ax >> 16 ) * bx;
1470 lo1 =
l + ( (FT_UInt32)
m << 16 );
1471 hi1 = (
m >> 16 ) + ( (FT_Int32)
l >> 31 ) + ( lo1 <
l );
1474 l = (FT_UInt32)( ( ay & 0xFFFFU ) *
by );
1475 m = ( ay >> 16 ) *
by;
1477 lo2 =
l + ( (FT_UInt32)
m << 16 );
1478 hi2 = (
m >> 16 ) + ( (FT_Int32)
l >> 31 ) + ( lo2 <
l );
1482 hi = hi1 + hi2 + ( lo < lo1 );
1486 l = lo + (FT_UInt32)
s;
1487 hi +=
s + (
l < lo );
1493 return (FT_Int32)( ( (FT_UInt32)hi << 18 ) | (
l >> 14 ) );
1633 exc->
code[exc->
IP - 1] );
1663 if ( aRange < 1 || aRange > 3 )
1681 if ( aIP >
range->size )
1759#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
1760 if ( SUBPIXEL_HINTING_INFINALITY &&
1761 ( !exc->ignore_x_mode ||
1762 ( exc->sph_tweak_flags & SPH_TWEAK_ALLOW_X_DMOVE ) ) )
1770#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
1774 if ( SUBPIXEL_HINTING_MINIMAL && !exc->backward_compatibility )
1782 if ( NO_SUBPIXEL_HINTING )
1795#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
1796 if ( !( SUBPIXEL_HINTING_MINIMAL &&
1797 exc->backward_compatibility &&
1799 exc->iupy_called ) )
1875#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
1876 if ( SUBPIXEL_HINTING_INFINALITY && !exc->ignore_x_mode )
1881#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
1882 if ( SUBPIXEL_HINTING_MINIMAL && !exc->backward_compatibility )
1887 if ( NO_SUBPIXEL_HINTING )
1902#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
1903 if ( !( SUBPIXEL_HINTING_MINIMAL &&
1904 exc->backward_compatibility &&
1905 exc->iupx_called && exc->iupy_called ) )
2341 switch ( round_mode )
2398 switch ( (
FT_Int)( selector & 0xC0 ) )
2401 exc->
period = GridPeriod / 2;
2405 exc->
period = GridPeriod;
2409 exc->
period = GridPeriod * 2;
2414 exc->
period = GridPeriod;
2418 switch ( (
FT_Int)( selector & 0x30 ) )
2437 if ( ( selector & 0x0F ) == 0 )
2472 return TT_DotFix14(
dx,
dy,
2501 return TT_DotFix14(
dx,
dy,
2605 if ( exc->
F_dot_P == 0x4000L )
2663 if ( Vx == 0 && Vy == 0 )
2689#define ARRAY_BOUND_ERROR \
2692 exc->error = FT_THROW( Invalid_Reference ); \
2721 if ( NO_SUBPIXEL_HINTING )
3085#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
3088 if ( SUBPIXEL_HINTING_INFINALITY &&
3089 exc->ignore_x_mode &&
3091 ( exc->
face->sph_found_func_flags &
3092 ( SPH_FDEF_SPACING_1 |
3093 SPH_FDEF_SPACING_2 ) ) ) ||
3095 ( exc->sph_in_func_flags &
3096 SPH_FDEF_TYPEMAN_STROKES ) ) ||
3098 ( exc->
face->sph_found_func_flags &
3099 SPH_FDEF_VACUFORM_ROUND_1 ) &&
3100 exc->iup_called ) ) )
3302 if ( L <= 0 || L > exc->
args )
3335 if ( L <= 0 || L > exc->
args )
3444 if ( SkipCode( exc ) ==
FAILURE )
3462 }
while (
Out == 0 );
3482 if ( SkipCode( exc ) ==
FAILURE )
3495 }
while ( nIfs != 0 );
3522 if (
args[0] == 0 && exc->
args == 0 )
3558 Ins_JMPR( exc,
args );
3573 Ins_JMPR( exc,
args );
3598#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
3600 FT_Byte opcode_pattern[9][12] = {
3693 FT_UShort opcode_pointer[9] = { 0, 0, 0, 0, 0, 0, 0, 0, 0 };
3694 FT_UShort opcode_size[9] = { 12, 8, 8, 6, 7, 4, 5, 4, 2 };
3713 for ( ; rec <
limit; rec++ )
3715 if ( rec->
opc ==
n )
3748#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
3751 if (
n >= 64 &&
n <= 66 )
3758 while ( SkipCode( exc ) ==
SUCCESS )
3761#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
3763 if ( SUBPIXEL_HINTING_INFINALITY )
3765 for (
i = 0;
i < opcode_patterns;
i++ )
3767 if ( opcode_pointer[
i] < opcode_size[
i] &&
3768 exc->
opcode == opcode_pattern[
i][opcode_pointer[
i]] )
3770 opcode_pointer[
i] += 1;
3772 if ( opcode_pointer[
i] == opcode_size[
i] )
3774 FT_TRACE6((
"sph: Function %d, opcode ptrn: %d, %s %s\n",
3783 exc->
face->sph_found_func_flags |= SPH_FDEF_INLINE_DELTA_1;
3788 exc->
face->sph_found_func_flags |= SPH_FDEF_INLINE_DELTA_2;
3797 exc->
face->sph_found_func_flags |= SPH_FDEF_DIAGONAL_STROKE;
3806 exc->
face->sph_found_func_flags |= SPH_FDEF_VACUFORM_ROUND_1;
3813 exc->
face->sph_found_func_flags |= SPH_FDEF_TTFAUTOHINT_1;
3826 exc->
face->sph_found_func_flags |= SPH_FDEF_SPACING_1;
3840 exc->
face->sph_found_func_flags |= SPH_FDEF_SPACING_2;
3846 exc->
face->sph_found_func_flags |= SPH_FDEF_TYPEMAN_DIAGENDCTRL;
3852 exc->
face->sph_found_func_flags |= SPH_FDEF_TYPEMAN_DIAGENDCTRL;
3856 opcode_pointer[
i] = 0;
3861 opcode_pointer[
i] = 0;
3865 exc->
face->sph_compatibility_mode =
3866 ( ( exc->
face->sph_found_func_flags & SPH_FDEF_INLINE_DELTA_1 ) |
3867 ( exc->
face->sph_found_func_flags & SPH_FDEF_INLINE_DELTA_2 ) );
3899#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
3900 exc->sph_in_func_flags = 0x0000;
3954 if ( BOUNDSL(
F, exc->
maxFunc + 1 ) )
3979 while ( def < limit && def->opc !=
F )
3990#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
3991 if ( SUBPIXEL_HINTING_INFINALITY &&
3992 exc->ignore_x_mode &&
3993 ( ( exc->iup_called &&
3994 ( exc->sph_tweak_flags & SPH_TWEAK_NO_CALL_AFTER_IUP ) ) ||
4017 Ins_Goto_CodeRange( exc, def->
range, def->
start );
4045 if ( BOUNDSL(
F, exc->
maxFunc + 1 ) )
4067 while ( def < limit && def->opc !=
F )
4078#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
4079 if ( SUBPIXEL_HINTING_INFINALITY &&
4080 exc->ignore_x_mode &&
4105 Ins_Goto_CodeRange( exc, def->
range, def->
start );
4147 for ( ; def <
limit; def++ )
4163 if ( 0 >
args[0] ||
args[0] > 0x00FF )
4180 while ( SkipCode( exc ) ==
SUCCESS )
4224 for ( K = 1; K <=
L; K++ )
4254 for ( K = 0; K <
L; K++ )
4255 args[K] = GetShortIns( exc );
4283 for ( K = 1; K <=
L; K++ )
4311 for ( K = 0; K <
L; K++ )
4312 args[K] = GetShortIns( exc );
4346 p1 = exc->
zp1.
cur + aIdx2;
4347 p2 = exc->
zp2.
cur + aIdx1;
4357 if (
A == 0 &&
B == 0 )
4363 if ( ( opcode & 1 ) != 0 )
4410 if ( ( opcode & 2 ) == 0 )
4416 Compute_Funcs( exc );
4430 if ( Ins_SxVTL( exc,
4436 Compute_Funcs( exc );
4451 if ( Ins_SxVTL( exc,
4456 Compute_Funcs( exc );
4471 Compute_Funcs( exc );
4498 Compute_Funcs( exc );
4523 Compute_Funcs( exc );
4818 SetSuperRound( exc, 0x4000,
args[0] );
4835 SetSuperRound( exc, 0x2D41,
args[0] );
4870 R = FAST_DUALPROJ( &exc->
zp2.
org[
L] );
4872 R = FAST_PROJECT( &exc->
zp2.
cur[
L] );
4906 K = FAST_PROJECT( &exc->
zp2.
cur[
L] );
4964 D = DUALPROJ( vec1, vec2 );
4975 D = DUALPROJ( vec1, vec2 );
4986 D = FAST_DUALPROJ( &
vec );
4992#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
4994 if ( SUBPIXEL_HINTING_INFINALITY &&
4995 exc->ignore_x_mode &&
5044 if (
A == 0 &&
B == 0 )
5051 if ( ( opcode & 1 ) != 0 )
5068 if (
A == 0 &&
B == 0 )
5075 if ( ( opcode & 1 ) != 0 )
5083 Compute_Funcs( exc );
5230 if ( K < 1 || K > 3 )
5238 Kf = 1 << ( K - 1 );
5256#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
5259 if ( SUBPIXEL_HINTING_INFINALITY )
5260 exc->ignore_x_mode =
FT_BOOL(
L == 4 );
5263#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
5267 if ( SUBPIXEL_HINTING_MINIMAL )
5268 exc->backward_compatibility = !
FT_BOOL(
L == 4 );
5355#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
5357 if ( SUBPIXEL_HINTING_MINIMAL &&
5358 exc->backward_compatibility &&
5371 while ( exc->
GS.
loop > 0 )
5410#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
5412 if ( SUBPIXEL_HINTING_MINIMAL &&
5413 exc->backward_compatibility &&
5430 for (
I =
L;
I <= K;
I++ )
5448#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
5450 if ( SUBPIXEL_HINTING_MINIMAL &&
5451 exc->backward_compatibility &&
5468 for (
I =
L;
I <= K;
I++ )
5526#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
5527 if ( !( SUBPIXEL_HINTING_MINIMAL &&
5528 exc->backward_compatibility ) )
5538#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
5539 if ( !( SUBPIXEL_HINTING_MINIMAL &&
5540 exc->backward_compatibility &&
5542 exc->iupy_called ) )
5575 if ( Compute_Point_Displacement( exc, &
dx, &
dy, &zp, &refp ) )
5578 while ( exc->
GS.
loop > 0 )
5592#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
5594 if ( SUBPIXEL_HINTING_INFINALITY && exc->ignore_x_mode )
5641 if ( Compute_Point_Displacement( exc, &
dx, &
dy, &zp, &refp ) )
5690 if ( Compute_Point_Displacement( exc, &
dx, &
dy, &zp, &refp ) )
5725#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
5743 while ( exc->
GS.
loop > 0 )
5758#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
5759 if ( SUBPIXEL_HINTING_INFINALITY &&
5760 exc->ignore_x_mode )
5776 if ( exc->
face->sph_compatibility_mode )
5778 if ( exc->sph_tweak_flags & SPH_TWEAK_ROUND_NONPIXEL_Y_MOVES )
5782 if ( exc->iup_called &&
5783 ( ( exc->sph_in_func_flags & SPH_FDEF_INLINE_DELTA_1 ) ||
5784 ( exc->sph_in_func_flags & SPH_FDEF_INLINE_DELTA_2 ) ) )
5787 if ( !( exc->sph_tweak_flags & SPH_TWEAK_ALWAYS_SKIP_DELTAP ) &&
5790 ( exc->sph_tweak_flags & SPH_TWEAK_DO_SHPIX ) ) )
5799 if ( ( B1 & 63 ) == 0 &&
5813 if ( ( exc->sph_tweak_flags & SPH_TWEAK_SKIP_NONPIXEL_Y_MOVES ) &&
5817 Move_Zp2_Point( exc,
5823 else if ( exc->sph_in_func_flags & SPH_FDEF_TYPEMAN_DIAGENDCTRL )
5828#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
5829 if ( SUBPIXEL_HINTING_MINIMAL &&
5830 exc->backward_compatibility )
5838 ( !( exc->iupx_called && exc->iupy_called ) &&
5847#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
5894#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
5896 if ( SUBPIXEL_HINTING_INFINALITY &&
5897 exc->ignore_x_mode &&
5904 if ( !( exc->sph_tweak_flags & SPH_TWEAK_NORMAL_ROUND ) )
5905 control_value_cutin = 0;
5911 if ( delta >= control_value_cutin )
5924 if ( ( exc->
opcode & 1 ) != 0 )
5953 if ( ( exc->
opcode & 1 ) != 0 )
5956#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
5957 if ( SUBPIXEL_HINTING_INFINALITY &&
5958 exc->ignore_x_mode &&
5995 BOUNDSL( cvtEntry, exc->
cvtSize ) )
6026#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
6029 if ( !( SUBPIXEL_HINTING_INFINALITY &&
6030 ( exc->ignore_x_mode &&
6031 exc->
face->sph_compatibility_mode ) ) )
6039#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
6040 if ( SUBPIXEL_HINTING_INFINALITY &&
6041 exc->ignore_x_mode &&
6042 ( exc->sph_tweak_flags & SPH_TWEAK_MIAP_HACK ) &&
6050 if ( ( exc->
opcode & 1 ) != 0 )
6056#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
6057 if ( SUBPIXEL_HINTING_INFINALITY &&
6058 exc->ignore_x_mode &&
6061 !( exc->sph_tweak_flags & SPH_TWEAK_NORMAL_ROUND ) )
6062 control_value_cutin = 0;
6069 if ( delta > control_value_cutin )
6072#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
6073 if ( SUBPIXEL_HINTING_INFINALITY &&
6074 exc->ignore_x_mode &&
6125 org_dist = DUALPROJ( vec1, vec2 );
6136 org_dist = DUALPROJ( vec1, vec2 );
6149 org_dist = FAST_DUALPROJ( &
vec );
6157 org_dist < exc->
GS.single_width_value +
6162 if ( org_dist >= 0 )
6170 if ( ( exc->
opcode & 4 ) != 0 )
6172#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
6173 if ( SUBPIXEL_HINTING_INFINALITY &&
6174 exc->ignore_x_mode &&
6186 if ( ( exc->
opcode & 8 ) != 0 )
6191#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
6192 if ( SUBPIXEL_HINTING_INFINALITY &&
6193 exc->ignore_x_mode &&
6195 !( exc->sph_tweak_flags & SPH_TWEAK_NORMAL_ROUND ) )
6196 minimum_distance = 0;
6199 if ( org_dist >= 0 )
6221 if ( ( exc->
opcode & 16 ) != 0 )
6253 BOUNDSL( cvtEntry, exc->
cvtSize + 1 ) ||
6272 if ( delta < exc->
GS.single_width_cutin )
6274 if ( cvt_dist >= 0 )
6286 TT_MulFix14( cvt_dist,
6290 TT_MulFix14( cvt_dist,
6302 if ( ( org_dist ^ cvt_dist ) < 0 )
6308 if ( ( exc->
opcode & 4 ) != 0 )
6330 delta =
SUB_LONG( cvt_dist, org_dist );
6334 if ( delta > control_value_cutin )
6335 cvt_dist = org_dist;
6343#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
6345 if ( SUBPIXEL_HINTING_INFINALITY &&
6346 exc->ignore_x_mode &&
6353 !( exc->sph_tweak_flags & SPH_TWEAK_NORMAL_ROUND ) )
6354 control_value_cutin = 0;
6357 ( exc->sph_tweak_flags & SPH_TWEAK_TIMES_NEW_ROMAN_HACK ) )
6359 if ( cur_dist < -64 )
6361 else if ( cur_dist > 64 && cur_dist < 84 )
6365 delta =
SUB_LONG( cvt_dist, org_dist );
6369 if ( delta > control_value_cutin )
6370 cvt_dist = org_dist;
6379 if ( ( exc->
opcode & 8 ) != 0 )
6384#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
6385 if ( SUBPIXEL_HINTING_INFINALITY &&
6386 exc->ignore_x_mode &&
6388 !( exc->sph_tweak_flags & SPH_TWEAK_NORMAL_ROUND ) )
6389 minimum_distance = 0;
6392 if ( org_dist >= 0 )
6404#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
6405 if ( SUBPIXEL_HINTING_INFINALITY &&
6406 exc->ignore_x_mode &&
6415 if ( exc->sph_tweak_flags & SPH_TWEAK_ROUND_NONPIXEL_Y_MOVES )
6418 if ( ( exc->
opcode & 16 ) == 0 &&
6419 ( exc->
opcode & 8 ) == 0 &&
6420 ( exc->sph_tweak_flags & SPH_TWEAK_COURIER_NEW_2_HACK ) )
6431 if ( ( exc->
face->sph_compatibility_mode &&
6433 ( B2 & 63 ) != 0 ) ||
6434 ( ( exc->sph_tweak_flags & SPH_TWEAK_SKIP_NONPIXEL_Y_MOVES ) &&
6436 ( B2 & 63 ) != 0 ) )
6453 if ( ( exc->
opcode & 16 ) != 0 )
6473#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
6474 if ( SUBPIXEL_HINTING_INFINALITY &&
6475 exc->ignore_x_mode &&
6477 ( exc->sph_tweak_flags & SPH_TWEAK_NO_ALIGNRP_AFTER_IUP ) )
6492 while ( exc->
GS.
loop > 0 )
6681 twilight = ( exc->
GS.
gep0 == 0 ||
6712 old_range = DUALPROJ( &exc->
zp1.
org[exc->
GS.
rp2], orus_base );
6714 old_range = DUALPROJ( &exc->
zp1.
orus[exc->
GS.
rp2], orus_base );
6727 old_range = FAST_DUALPROJ( &
vec );
6730 cur_range = PROJECT( &exc->
zp1.
cur[exc->
GS.
rp2], cur_base );
6751 org_dist = DUALPROJ( &exc->
zp2.
org[
point], orus_base );
6753 org_dist = DUALPROJ( &exc->
zp2.
orus[
point], orus_base );
6766 org_dist = FAST_DUALPROJ( &
vec );
6769 cur_dist = PROJECT( &exc->
zp2.
cur[
point], cur_base );
6774 new_dist =
FT_MulDiv( org_dist, cur_range, old_range );
6793 new_dist = org_dist;
6837 mask &= ~FT_CURVE_TAG_TOUCH_X;
6840 mask &= ~FT_CURVE_TAG_TOUCH_Y;
6847 typedef struct IUP_WorkerRec_
6854 } IUP_WorkerRec, *IUP_Worker;
6858 _iup_worker_shift( IUP_Worker worker,
6870 for (
i = p1;
i <
p;
i++ )
6873 for (
i =
p + 1;
i <= p2;
i++ )
6880 _iup_worker_interpolate( IUP_Worker worker,
6887 FT_F26Dot6 orus1, orus2, org1, org2, cur1, cur2, delta1, delta2;
6893 if (
BOUNDS( ref1, worker->max_points ) ||
6894 BOUNDS( ref2, worker->max_points ) )
6897 orus1 = worker->orus[ref1].x;
6898 orus2 = worker->orus[ref2].x;
6900 if ( orus1 > orus2 )
6915 org1 = worker->orgs[ref1].x;
6916 org2 = worker->orgs[ref2].x;
6917 cur1 = worker->curs[ref1].x;
6918 cur2 = worker->curs[ref2].x;
6922 if ( cur1 == cur2 || orus1 == orus2 )
6926 for (
i = p1;
i <= p2;
i++ )
6934 else if (
x >= org2 )
6940 worker->curs[
i].x =
x;
6950 for (
i = p1;
i <= p2;
i++ )
6958 else if (
x >= org2 )
6974 worker->curs[
i].x =
x;
7002#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
7006 if ( SUBPIXEL_HINTING_MINIMAL &&
7007 exc->backward_compatibility )
7009 if ( exc->iupx_called && exc->iupy_called )
7013 exc->iupx_called =
TRUE;
7015 exc->iupy_called =
TRUE;
7042#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
7043 if ( SUBPIXEL_HINTING_INFINALITY &&
7044 exc->ignore_x_mode )
7046 exc->iup_called =
TRUE;
7047 if ( exc->sph_tweak_flags & SPH_TWEAK_SKIP_IUP )
7055 first_point =
point;
7063 if (
point <= end_point )
7065 first_touched =
point;
7066 cur_touched =
point;
7070 while (
point <= end_point )
7074 _iup_worker_interpolate( &
V,
7079 cur_touched =
point;
7085 if ( cur_touched == first_touched )
7086 _iup_worker_shift( &
V, first_point, end_point, cur_touched );
7089 _iup_worker_interpolate( &
V,
7095 if ( first_touched > 0 )
7096 _iup_worker_interpolate( &
V,
7104 }
while ( contour < exc->pts.n_contours );
7124#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
7125 if ( SUBPIXEL_HINTING_INFINALITY &&
7126 exc->ignore_x_mode &&
7128 ( exc->sph_tweak_flags & SPH_TWEAK_NO_DELTAP_AFTER_IUP ) )
7136 for (
k = 1;
k <= nump;
k++ )
7138 if ( exc->
args < 2 )
7184#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
7186 if ( SUBPIXEL_HINTING_INFINALITY )
7196 if ( !exc->ignore_x_mode ||
7197 ( exc->sph_tweak_flags & SPH_TWEAK_ALWAYS_DO_DELTAP ) ||
7213 if ( !exc->
face->sph_compatibility_mode &&
7218 else if ( exc->
face->sph_compatibility_mode &&
7219 !( exc->sph_tweak_flags & SPH_TWEAK_ALWAYS_SKIP_DELTAP ) )
7221 if ( exc->sph_tweak_flags & SPH_TWEAK_ROUND_NONPIXEL_Y_MOVES )
7226 if ( !exc->iup_called &&
7235 ( ( exc->
face->sph_compatibility_mode &&
7237 ( B2 & 63 ) != 0 ) ||
7238 ( ( exc->sph_tweak_flags &
7239 SPH_TWEAK_SKIP_NONPIXEL_Y_MOVES_DELTAP ) &&
7241 ( B2 & 63 ) != 0 ) ) )
7250#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
7253 if ( SUBPIXEL_HINTING_MINIMAL &&
7254 exc->backward_compatibility )
7256 if ( !( exc->iupx_called && exc->iupy_called ) &&
7295 for (
k = 1;
k <= nump;
k++ )
7297 if ( exc->
args < 2 )
7386#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
7392 if ( SUBPIXEL_HINTING_INFINALITY &&
7393 (
args[0] & 1 ) != 0 &&
7394 exc->subpixel_hinting )
7396 if ( exc->ignore_x_mode )
7400 K = exc->rasterizer_version;
7401 FT_TRACE6((
"Setting rasterizer version %d\n",
7402 exc->rasterizer_version ));
7409 if ( (
args[0] & 1 ) != 0 )
7410 K =
driver->interpreter_version;
7428#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
7436 if ( (
args[0] & 8 ) != 0 && exc->
face->blend )
7449#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
7454 if ( SUBPIXEL_HINTING_MINIMAL && exc->subpixel_hinting_lean )
7463 if ( (
args[0] & 64 ) != 0 )
7471 if ( (
args[0] & 256 ) != 0 && exc->vertical_lcd_lean )
7481 if ( (
args[0] & 1024 ) != 0 )
7492 if ( (
args[0] & 2048 ) != 0 && exc->subpixel_hinting_lean )
7504 if ( (
args[0] & 4096 ) != 0 && exc->grayscale_cleartype )
7509#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
7511 if ( SUBPIXEL_HINTING_INFINALITY &&
7515 if ( exc->rasterizer_version >= 37 )
7522 if ( (
args[0] & 64 ) != 0 && exc->subpixel_hinting )
7532 if ( (
args[0] & 128 ) != 0 && exc->compatible_widths )
7542 if ( (
args[0] & 256 ) != 0 && exc->vertical_lcd )
7552 if ( (
args[0] & 512 ) != 0 && exc->bgr )
7555 if ( exc->rasterizer_version >= 38 )
7564 if ( (
args[0] & 1024 ) != 0 && exc->subpixel_positioned )
7574 if ( (
args[0] & 2048 ) != 0 && exc->symmetrical_smoothing )
7584 if ( (
args[0] & 4096 ) != 0 && exc->gray_cleartype )
7596#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
7626 for (
i = 0;
i < num_axes;
i++ )
7631 for (
i = 0;
i < num_axes;
i++ )
7662 for ( ; def <
limit; def++ )
7682 Ins_Goto_CodeRange( exc, def->
range, def->
start );
7732#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
7733 FT_Byte opcode_pattern[1][2] = {
7746#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
7747 exc->iup_called =
FALSE;
7750#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
7764 if ( SUBPIXEL_HINTING_MINIMAL &&
7765 exc->subpixel_hinting_lean &&
7769 exc->backward_compatibility =
FALSE;
7771 exc->iupx_called =
FALSE;
7772 exc->iupy_called =
FALSE;
7777 num_twilight_points =
FT_MAX( 30,
7781 if ( num_twilight_points > 0xFFFFU )
7782 num_twilight_points = 0xFFFFU;
7784 FT_TRACE5((
"TT_RunIns: Resetting number of twilight points\n"
7785 " from %d to the more reasonable value %ld\n",
7787 num_twilight_points ));
7819 FT_TRACE5((
"TT_RunIns: Limiting total number of loops in LOOPCALL"
7823 FT_TRACE5((
"TT_RunIns: Limiting total number of backward jumps"
7845 Compute_Funcs( exc );
7852#ifdef FT_DEBUG_LEVEL_TRACE
7865 : 12 - ( *opcode_name[exc->
opcode] -
'0' ),
7867 for (
n = 1;
n <=
cnt;
n++ )
7873 if ( ( exc->
length = opcode_length[exc->
opcode] ) < 0 )
7876 goto LErrorCodeOverflow_;
7882 goto LErrorCodeOverflow_;
7885 exc->
args = exc->
top - ( Pop_Push_Count[exc->
opcode] >> 4 );
7889 if ( exc->
args < 0 )
7898 for (
i = 0;
i < Pop_Push_Count[exc->
opcode] >> 4;
i++ )
7903#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
7904 if ( exc->
opcode == 0x91 )
7912 if ( exc->
face->blend )
7931#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
7933 if ( SUBPIXEL_HINTING_INFINALITY )
7935 for (
i = 0;
i < opcode_patterns;
i++ )
7937 if ( opcode_pointer[
i] < opcode_size[
i] &&
7938 exc->
opcode == opcode_pattern[
i][opcode_pointer[
i]] )
7940 opcode_pointer[
i] += 1;
7942 if ( opcode_pointer[
i] == opcode_size[
i] )
7944 FT_TRACE6((
"sph: opcode ptrn: %d, %s %s\n",
7954 opcode_pointer[
i] = 0;
7958 opcode_pointer[
i] = 0;
7982 Ins_SPVTL( exc,
args );
7987 Ins_SFVTL( exc,
args );
7991 Ins_SPVFS( exc,
args );
7995 Ins_SFVFS( exc,
args );
7999 Ins_GPV( exc,
args );
8003 Ins_GFV( exc,
args );
8011 Ins_ISECT( exc,
args );
8015 Ins_SRP0( exc,
args );
8019 Ins_SRP1( exc,
args );
8023 Ins_SRP2( exc,
args );
8027 Ins_SZP0( exc,
args );
8031 Ins_SZP1( exc,
args );
8035 Ins_SZP2( exc,
args );
8039 Ins_SZPS( exc,
args );
8043 Ins_SLOOP( exc,
args );
8055 Ins_SMD( exc,
args );
8063 Ins_JMPR( exc,
args );
8067 Ins_SCVTCI( exc,
args );
8071 Ins_SSWCI( exc,
args );
8075 Ins_SSW( exc,
args );
8095 Ins_DEPTH( exc,
args );
8099 Ins_CINDEX( exc,
args );
8103 Ins_MINDEX( exc,
args );
8107 Ins_ALIGNPTS( exc,
args );
8115 Ins_UTP( exc,
args );
8119 Ins_LOOPCALL( exc,
args );
8123 Ins_CALL( exc,
args );
8127 Ins_FDEF( exc,
args );
8136 Ins_MDAP( exc,
args );
8151 Ins_SHC( exc,
args );
8156 Ins_SHZ( exc,
args );
8160 Ins_SHPIX( exc,
args );
8169 Ins_MSIRP( exc,
args );
8182 Ins_MIAP( exc,
args );
8186 Ins_NPUSHB( exc,
args );
8190 Ins_NPUSHW( exc,
args );
8194 Ins_WS( exc,
args );
8198 Ins_RS( exc,
args );
8202 Ins_WCVTP( exc,
args );
8206 Ins_RCVT( exc,
args );
8211 Ins_GC( exc,
args );
8215 Ins_SCFS( exc,
args );
8220 Ins_MD( exc,
args );
8224 Ins_MPPEM( exc,
args );
8228 Ins_MPS( exc,
args );
8268 Ins_ODD( exc,
args );
8272 Ins_EVEN( exc,
args );
8276 Ins_IF( exc,
args );
8296 Ins_DELTAP( exc,
args );
8300 Ins_SDB( exc,
args );
8304 Ins_SDS( exc,
args );
8316 Ins_DIV( exc,
args );
8336 Ins_CEILING(
args );
8343 Ins_ROUND( exc,
args );
8350 Ins_NROUND( exc,
args );
8354 Ins_WCVTF( exc,
args );
8359 Ins_DELTAP( exc,
args );
8365 Ins_DELTAC( exc,
args );
8369 Ins_SROUND( exc,
args );
8373 Ins_S45ROUND( exc,
args );
8377 Ins_JROT( exc,
args );
8381 Ins_JROF( exc,
args );
8413 Ins_FLIPRGON( exc,
args );
8417 Ins_FLIPRGOFF( exc,
args );
8426 Ins_SCANCTRL( exc,
args );
8431 Ins_SDPVTL( exc,
args );
8435 Ins_GETINFO( exc,
args );
8439 Ins_IDEF( exc,
args );
8455 Ins_SCANTYPE( exc,
args );
8459 Ins_INSTCTRL( exc,
args );
8467#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
8472 if ( exc->
face->blend )
8473 Ins_GETVARIATION( exc,
args );
8482 if ( exc->
face->blend )
8483 Ins_GETDATA(
args );
8490 if ( opcode >= 0xE0 )
8491 Ins_MIRP( exc,
args );
8492 else if ( opcode >= 0xC0 )
8493 Ins_MDRP( exc,
args );
8494 else if ( opcode >= 0xB8 )
8495 Ins_PUSHW( exc,
args );
8496 else if ( opcode >= 0xB0 )
8497 Ins_PUSHB( exc,
args );
8505 switch ( exc->
error )
8508 case FT_ERR( Invalid_Opcode ):
8514 for ( ; def <
limit; def++ )
8534 if ( Ins_Goto_CodeRange( exc,
8570 return FT_THROW( Execution_Too_Long );
8586 FT_TRACE4((
" %ld instruction%s executed\n",
8588 ins_counter == 1 ?
"" :
"s" ));
8591 LErrorCodeOverflow_:
8596 FT_TRACE1((
" The interpreter returned error 0x%x\n", exc->
error ));
while(CdLookupNextInitialFileDirent(IrpContext, Fcb, FileContext))
#define FT_CALLBACK_DEF(x)
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_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_OFFSET(base, 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)
#define TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES
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 @1789::@1790 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
#define TT_Round_Super_45
#define TT_Round_To_Double_Grid
FT_F26Dot6(* TT_Round_Func)(TT_ExecContext exc, FT_F26Dot6 distance, FT_Int color)
#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