Commit 6f8c6229969d552d1e16f936027b1816785da222

David Turner 2006-09-26T15:42:44

* src/autofit/aftypes.h, src/autofit/afhints.h, src/autofit/afmodule.c: adding support for disabling horizontal and vertical hinting for the purpose of debugging the auto-fitter

diff --git a/ChangeLog b/ChangeLog
index 0651c50..0bbf93a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2006-09-26  David Turner  <david@freetype.org>
+
+        * src/autofit/aftypes.h, src/autofit/afhints.h,
+        src/autofit/afmodule.c: adding support for disabling
+        horizontal and vertical hinting for the purpose of debugging
+        the auto-fitter
+
 2006-09-18  Garrick Meeker  <garrick@digitalanarchy.com>
 
 	* src/base/ftmac.c (FT_New_Face_From_FOND): Fall back to SFNT if
diff --git a/src/autofit/afhints.h b/src/autofit/afhints.h
index cb27b8f..45cf513 100644
--- a/src/autofit/afhints.h
+++ b/src/autofit/afhints.h
@@ -213,6 +213,17 @@ FT_BEGIN_HEADER
 #define AF_HINTS_TEST_SCALER( h, f )  ( (h)->scaler_flags & (f) )
 #define AF_HINTS_TEST_OTHER( h, f )   ( (h)->other_flags  & (f) )
 
+#ifdef AF_DEBUG
+#define AF_HINTS_DO_HORIZONTAL( h )                                \
+          ( !_af_debug_disable_horz_hints && !AF_HINTS_TEST_SCALER( h, AF_SCALER_FLAG_NO_HORIZONTAL ) )
+
+#define AF_HINTS_DO_VERTICAL( h )                                \
+          ( !_af_debug_disable_vert_hints && !AF_HINTS_TEST_SCALER( h, AF_SCALER_FLAG_NO_VERTICAL ) )
+
+#define AF_HINTS_DO_ADVANCE( h )                                \
+          !AF_HINTS_TEST_SCALER( h, AF_SCALER_FLAG_NO_ADVANCE )
+
+#else /* !AF_DEBUG */
 #define AF_HINTS_DO_HORIZONTAL( h )                                \
           !AF_HINTS_TEST_SCALER( h, AF_SCALER_FLAG_NO_HORIZONTAL )
 
@@ -222,6 +233,7 @@ FT_BEGIN_HEADER
 #define AF_HINTS_DO_ADVANCE( h )                                \
           !AF_HINTS_TEST_SCALER( h, AF_SCALER_FLAG_NO_ADVANCE )
 
+#endif /* !AF_DEBUG */
 
   FT_LOCAL( AF_Direction )
   af_direction_compute( FT_Pos  dx,
diff --git a/src/autofit/afmodule.c b/src/autofit/afmodule.c
index ee6bc1a..c94ee87 100644
--- a/src/autofit/afmodule.c
+++ b/src/autofit/afmodule.c
@@ -19,6 +19,11 @@
 #include "afmodule.h"
 #include "afloader.h"
 
+#ifdef AF_DEBUG
+  int  _af_debug_disable_horz_hints;
+  int  _af_debug_disable_vert_hints;
+#endif
+
 #include FT_INTERNAL_OBJECTS_H
 
 
diff --git a/src/autofit/aftypes.h b/src/autofit/aftypes.h
index 078bc82..5ab78d3 100644
--- a/src/autofit/aftypes.h
+++ b/src/autofit/aftypes.h
@@ -54,19 +54,21 @@ FT_BEGIN_HEADER
   /*************************************************************************/
 
 #define xxAF_USE_WARPER  /* only define to use warp hinting */
-#define xxAF_DEBUG
+#define AF_DEBUG
 
 #ifdef AF_DEBUG
 
-#include <stdio.h>
+#  include <stdio.h>
+#  define AF_LOG( x )  printf x
 
-#define AF_LOG( x )  printf x
+extern int  _af_debug_disable_horz_hints;
+extern int  _af_debug_disable_vert_hints;
 
-#else
+#else /* !AF_DEBUG */
 
-#define AF_LOG( x )  do ; while ( 0 )        /* nothing */
+#  define AF_LOG( x )  do ; while ( 0 )        /* nothing */
 
-#endif /* AF_DEBUG */
+#endif /* !AF_DEBUG */
 
 
   /*************************************************************************/
@@ -149,7 +151,7 @@ FT_BEGIN_HEADER
                      FT_Pos  y_out );
 
   /*
-   *  Return -1, 0, or +1, depending on the orientation of a given corner. 
+   *  Return -1, 0, or +1, depending on the orientation of a given corner.
    *  We use the Cartesian coordinate system, with positive vertical values
    *  going upwards.  The function returns +1 when the corner turns to the
    *  left, -1 to the right, and 0 for undecided.