freetype-commit
[Top][All Lists]
Advanced

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

[freetype2] master 01de37e 3/3: [truetype] Make TT_LOADER_SET_PP support


From: Werner LEMBERG
Subject: [freetype2] master 01de37e 3/3: [truetype] Make TT_LOADER_SET_PP support subpixel hinting [3/3].
Date: Wed, 18 May 2016 05:12:00 +0000 (UTC)

branch: master
commit 01de37e54ff1ab33a29ef4824bb0f644a48fe316
Author: Nikolaus Waxweiler <address@hidden>
Commit: Werner Lemberg <address@hidden>

    [truetype] Make TT_LOADER_SET_PP support subpixel hinting [3/3].
    
    * src/truetype/ttgload.c (TT_LOADER_SET_PP): Replace macro with...
    (tt_loader_set_pp): ... this new function.
    Update all callers.
---
 ChangeLog              |    8 +++++
 src/truetype/ttgload.c |   86 +++++++++++++++++++++++-------------------------
 2 files changed, 50 insertions(+), 44 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index f1a0658..fb6ee88 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
 2016-05-17  Nikolaus Waxweiler  <address@hidden>
 
+       [truetype] Make TT_LOADER_SET_PP support subpixel hinting [3/3].
+
+       * src/truetype/ttgload.c (TT_LOADER_SET_PP): Replace macro with...
+       (tt_loader_set_pp): ... this new function.
+       Update all callers.
+
+2016-05-17  Nikolaus Waxweiler  <address@hidden>
+
        [truetype] New implementation of v38 bytecode interpreter [2/3].
 
        This patch actually modifies the bytecode interpreter.
diff --git a/src/truetype/ttgload.c b/src/truetype/ttgload.c
index b02bd10..5a48882 100644
--- a/src/truetype/ttgload.c
+++ b/src/truetype/ttgload.c
@@ -1335,50 +1335,48 @@
    * (3) for everything else.
    *
    */
-   /* XXX merge infinality + lean datafields? */
+  static void
+  tt_loader_set_pp( TT_Loader  loader )
+  {
+    FT_Bool  subpixel_hinting = 0;
+    FT_Bool  grayscale        = 0;
+    FT_Bool  use_aw_2         = 0;
+
+#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING
+    TT_Driver driver = (TT_Driver)FT_FACE_DRIVER( loader->face );
+#endif
+
 #ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
+    if ( driver->interpreter_version == TT_INTERPRETER_VERSION_38 )
+    {
+      subpixel_hinting = loader->exec ? loader->exec->subpixel_hinting
+                                      : 0;
+      grayscale        = loader->exec ? loader->exec->grayscale
+                                      : 0;
+    }
+#endif
+#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
+    if ( driver->interpreter_version == TT_INTERPRETER_VERSION_40 )
+    {
+      subpixel_hinting = loader->exec ? loader->exec->subpixel_hinting_lean
+                                      : 0;
+      grayscale        = loader->exec ? loader->exec->grayscale_cleartype
+                                      : 0;
+    }
+#endif
+
+    use_aw_2 = (FT_Bool)( subpixel_hinting && grayscale );
 
-#define TT_LOADER_SET_PP( loader )                                          \
-          do                                                                \
-          {                                                                 \
-            FT_Bool  subpixel_hinting_ = loader->exec                       \
-                                           ? loader->exec->subpixel_hinting \
-                                           : 0;                             \
-            FT_Bool  grayscale_        = loader->exec                       \
-                                           ? loader->exec->grayscale        \
-                                           : 0;                             \
-            FT_Bool  use_aw_2_         = (FT_Bool)( subpixel_hinting_ &&    \
-                                                    grayscale_        );    \
-                                                                            \
-                                                                            \
-            (loader)->pp1.x = (loader)->bbox.xMin - (loader)->left_bearing; \
-            (loader)->pp1.y = 0;                                            \
-            (loader)->pp2.x = (loader)->pp1.x + (loader)->advance;          \
-            (loader)->pp2.y = 0;                                            \
-                                                                            \
-            (loader)->pp3.x = use_aw_2_ ? (loader)->advance / 2 : 0;        \
-            (loader)->pp3.y = (loader)->bbox.yMax + (loader)->top_bearing;  \
-            (loader)->pp4.x = use_aw_2_ ? (loader)->advance / 2 : 0;        \
-            (loader)->pp4.y = (loader)->pp3.y - (loader)->vadvance;         \
-          } while ( 0 )
-
-#else /* !TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */
-
-#define TT_LOADER_SET_PP( loader )                                          \
-          do                                                                \
-          {                                                                 \
-            (loader)->pp1.x = (loader)->bbox.xMin - (loader)->left_bearing; \
-            (loader)->pp1.y = 0;                                            \
-            (loader)->pp2.x = (loader)->pp1.x + (loader)->advance;          \
-            (loader)->pp2.y = 0;                                            \
-                                                                            \
-            (loader)->pp3.x = 0;                                            \
-            (loader)->pp3.y = (loader)->bbox.yMax + (loader)->top_bearing;  \
-            (loader)->pp4.x = 0;                                            \
-            (loader)->pp4.y = (loader)->pp3.y - (loader)->vadvance;         \
-          } while ( 0 )
-
-#endif /* !TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */
+    loader->pp1.x = loader->bbox.xMin - loader->left_bearing;
+    loader->pp1.y = 0;
+    loader->pp2.x = loader->pp1.x + loader->advance;
+    loader->pp2.y = 0;
+
+    loader->pp3.x = use_aw_2 ? loader->advance / 2 : 0;
+    loader->pp3.y = loader->bbox.yMax + loader->top_bearing;
+    loader->pp4.x = use_aw_2 ? loader->advance / 2 : 0;
+    loader->pp4.y = loader->pp3.y - loader->vadvance;
+  }
 
 
   /* a utility function to retrieve i-th node from given FT_List */
@@ -1559,7 +1557,7 @@
 
       /* must initialize points before (possibly) overriding */
       /* glyph metrics from the incremental interface        */
-      TT_LOADER_SET_PP( loader );
+      tt_loader_set_pp( loader );
 
 #ifdef FT_CONFIG_OPTION_INCREMENTAL
       tt_get_metrics_incr_overrides( loader, glyph_index );
@@ -1634,7 +1632,7 @@
 
     /* must initialize phantom points before (possibly) overriding */
     /* glyph metrics from the incremental interface                */
-    TT_LOADER_SET_PP( loader );
+    tt_loader_set_pp( loader );
 
 #ifdef FT_CONFIG_OPTION_INCREMENTAL
     tt_get_metrics_incr_overrides( loader, glyph_index );



reply via email to

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