freetype-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[freetype2] apodtele-master-patch-56869 839905475: [truetype] Round phan


From: Werner Lemberg
Subject: [freetype2] apodtele-master-patch-56869 839905475: [truetype] Round phantom points after instructions.
Date: Tue, 7 Mar 2023 12:35:26 -0500 (EST)

branch: apodtele-master-patch-56869
commit 839905475e4ed1730a43fe767783f8d61d039ea3
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Commit: Alexei Podtelezhnikov <apodtele@gmail.com>

    [truetype] Round phantom points after instructions.
    
    According to specifications, phantom points might be instructed to
    fit them to grid. Then rounding them before instructions might
    interfere. Other points are not touched before instructions
    either.
    
    * src/truetype/ttgload.c (TT_Hint_Glyph): Delay phantom point
    rounding until after instructions are applied.
---
 src/truetype/ttgload.c | 24 ++++++++++--------------
 1 file changed, 10 insertions(+), 14 deletions(-)

diff --git a/src/truetype/ttgload.c b/src/truetype/ttgload.c
index 3998172cf..fb81be0f9 100644
--- a/src/truetype/ttgload.c
+++ b/src/truetype/ttgload.c
@@ -864,19 +864,6 @@
       loader->exec->metrics.x_scale = loader->size->metrics->x_scale;
       loader->exec->metrics.y_scale = loader->size->metrics->y_scale;
     }
-#endif
-
-    /* round phantom points */
-    zone->cur[zone->n_points - 4].x =
-      FT_PIX_ROUND( zone->cur[zone->n_points - 4].x );
-    zone->cur[zone->n_points - 3].x =
-      FT_PIX_ROUND( zone->cur[zone->n_points - 3].x );
-    zone->cur[zone->n_points - 2].y =
-      FT_PIX_ROUND( zone->cur[zone->n_points - 2].y );
-    zone->cur[zone->n_points - 1].y =
-      FT_PIX_ROUND( zone->cur[zone->n_points - 1].y );
-
-#ifdef TT_USE_BYTECODE_INTERPRETER
 
     if ( n_ins > 0 )
     {
@@ -900,8 +887,17 @@
       current_outline.tags[0] |=
         ( loader->exec->GS.scan_type << 5 ) | FT_CURVE_TAG_HAS_SCANMODE;
     }
+#endif /* TT_USE_BYTECODE_INTERPRETER */
 
-#endif
+    /* round phantom points */
+    zone->cur[zone->n_points - 4].x =
+      FT_PIX_ROUND( zone->cur[zone->n_points - 4].x );
+    zone->cur[zone->n_points - 3].x =
+      FT_PIX_ROUND( zone->cur[zone->n_points - 3].x );
+    zone->cur[zone->n_points - 2].y =
+      FT_PIX_ROUND( zone->cur[zone->n_points - 2].y );
+    zone->cur[zone->n_points - 1].y =
+      FT_PIX_ROUND( zone->cur[zone->n_points - 1].y );
 
 #ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
     /* Save possibly modified glyph phantom points unless in v40 backward  */



reply via email to

[Prev in Thread] Current Thread [Next in Thread]