[WIN32SS][NTGDI] Don't use FLOAT in IntEscapeMatrix (#1572)
authorKatayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
Thu, 23 May 2019 10:40:54 +0000 (19:40 +0900)
committerGitHub <noreply@github.com>
Thu, 23 May 2019 10:40:54 +0000 (19:40 +0900)
Appendum to 1a40284. Use a 16.16 fixed point value instead of FLOAT. CORE-15838

win32ss/gdi/ntgdi/freetype.c

index 126040c..3dc10bc 100644 (file)
@@ -719,8 +719,8 @@ VOID FASTCALL IntWidthMatrix(FT_Face face, FT_Matrix *pmat, LONG lfWidth)
 VOID FASTCALL IntEscapeMatrix(FT_Matrix *pmat, LONG lfEscapement)
 {
     FT_Vector vecAngle;
-    /* Convert from angle in tenths of degrees to 'FT_Angle' degrees */
-    FT_Angle angle = FT_FixedFromFloat((FLOAT)lfEscapement / 10);
+    /* Convert the angle in tenths of degrees into degrees as a 16.16 fixed-point value */
+    FT_Angle angle = INT_TO_FIXED(lfEscapement) / 10;
     FT_Vector_Unit(&vecAngle, angle);
     pmat->xx = vecAngle.x;
     pmat->xy = -vecAngle.y;