|
|
|
@ -5155,25 +5155,38 @@ |
|
|
|
|
D = CUR_Func_project( CUR.zp0.cur + L, CUR.zp1.cur + K ); |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
FT_Vector* vec1 = CUR.zp0.orus + L; |
|
|
|
|
FT_Vector* vec2 = CUR.zp1.orus + K; |
|
|
|
|
/* XXX: UNDOCUMENTED: twilight zone special case */ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ( CUR.metrics.x_scale == CUR.metrics.y_scale ) |
|
|
|
|
if ( CUR.GS.gep0 == 0 || CUR.GS.gep1 == 0 ) |
|
|
|
|
{ |
|
|
|
|
/* this should be faster */ |
|
|
|
|
FT_Vector* vec1 = CUR.zp0.org + L; |
|
|
|
|
FT_Vector* vec2 = CUR.zp1.org + K; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
D = CUR_Func_dualproj( vec1, vec2 ); |
|
|
|
|
D = TT_MULFIX( D, CUR.metrics.x_scale ); |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
FT_Vector vec; |
|
|
|
|
FT_Vector* vec1 = CUR.zp0.orus + L; |
|
|
|
|
FT_Vector* vec2 = CUR.zp1.orus + K; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ( CUR.metrics.x_scale == CUR.metrics.y_scale ) |
|
|
|
|
{ |
|
|
|
|
/* this should be faster */ |
|
|
|
|
D = CUR_Func_dualproj( vec1, vec2 ); |
|
|
|
|
D = TT_MULFIX( D, CUR.metrics.x_scale ); |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
FT_Vector vec; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vec.x = TT_MULFIX( vec1->x - vec2->x, CUR.metrics.x_scale ); |
|
|
|
|
vec.y = TT_MULFIX( vec1->y - vec2->y, CUR.metrics.y_scale ); |
|
|
|
|
vec.x = TT_MULFIX( vec1->x - vec2->x, CUR.metrics.x_scale ); |
|
|
|
|
vec.y = TT_MULFIX( vec1->y - vec2->y, CUR.metrics.y_scale ); |
|
|
|
|
|
|
|
|
|
D = CUR_fast_dualproj( &vec ); |
|
|
|
|
D = CUR_fast_dualproj( &vec ); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|