shithub: freetype+ttf2subf

Download patch

ref: 6b9034f0fdfcd84e62e7c0d29bfd458325f4ccd7
parent: ab02d9e8e76030eec774ce058f005864e14b34ea
author: Werner Lemberg <[email protected]>
date: Mon Jan 28 08:56:23 EST 2013

Formatting, comment improvements.

git/fs: mount .git/fs: mount/attach disallowed
--- a/ChangeLog
+++ b/ChangeLog
@@ -18,7 +18,7 @@
 
 	* src/truetype/ttsubpix.c: Updated.
 	(ALWAYS_SKIP_DELTAP_Rules): Remove rule for Trebuchet MS.
-	(sph_set_tweaks): Fix rasterizer_version logic.
+	(sph_set_tweaks): Fix `rasterizer_version' logic.
 
 2013-01-26  Infinality  <[email protected]>
 
@@ -25,34 +25,36 @@
 	[truetype] Align more to ClearType whitepaper for sph.
 
 	* include/freetype/internal/tttypes.h (TT_FaceRec): Add flags
-	for detected fdefs and compatibility mode.
+	for detected opcode patterns and compatibility mode.
 
 	* src/truetype/ttgload.c (tt_loader_init): Complete conditional.
 
-	* src/truetype/ttinterp.c: Updated. Remove SPH_DEBUG and replace 
-	with FT_TRACE7.
+	* src/truetype/ttinterp.c: Updated.
+	Remove SPH_DEBUG and replace with FT_TRACE7.
 	(DO_RS): More conditions.
-	(Ins_FDEF): Add more opcode detection patterns. More specific 
-	conditions when flagging a fdef. Make compatibility mode only turn 
-	on when delta fdefs are found.
-	(Ins_CALL, Ins_LOOPCALL): Set flags for currently executing fdef.
-	(Ins_SHPIX): Remove logic to handle ttfautohinted fonts.  Simplify
-	conditionals where possible. Use & instead of % operator for dumb
-	compilers.
-	(Ins_MIAP): Adjust twilight zone conditional. Ensure ingore_x_mode
-	is on when testing sph conditionals.
-	(Ins_MIRP): Ensure ingore_x_mode is on when testing sph conditionals.
-	Do cvt cutin always when in ignore_x_mode.  Remove test for 
-	ttfautohinted fonts.
-	(Ins_DELTAP): Ensure ingore_x_mode is on when testing sph conditionals.
-	Do cvt cutin always when in ignore_x_mode.  Remove test for 
-	ttfautohinted fonts. Use & instead of % operator for dumb
-	compilers.
+	(Ins_FDEF): Add more opcode detection patterns.
+	More specific conditions when flagging an fdef.
+	Make compatibility mode only turn on when delta fdefs are found.
+	(Ins_CALL, Ins_LOOPCALL): Set flags for currently executed fdef.
+	(Ins_SHPIX): Remove logic to handle ttfautohinted fonts.
+	Simplify conditionals where possible.
+	Use `&' instead of `%' operator for dumb compilers.
+	(Ins_MIAP): Adjust twilight zone conditional.
+	Ensure `ignore_x_mode' is on when testing sph conditionals.
+	(Ins_MIRP): Ensure `ignore_x_mode' is on when testing sph
+	conditionals.
+	Do cvt cutin always when `ignore_x_mode' is active.
+	Remove test for ttfautohinted fonts.
+	(Ins_DELTAP): Ensure `ignore_x_mode' is on when testing sph
+	conditionals.
+	Do cvt cutin always when `ignore_x_mode' is active.
+	Remove test for ttfautohinted fonts.
+	Use `&' instead of `%' operator for dumb compilers.
 	(Ins_GETINFO): Remove SPH_DEBUG and replace with FT_TRACE7.
 
 	* src/truetype/ttinterp.h: Updated.
-	(TT_ExecContextRec): Remove compatibility_mode variable.  Add variable
-	to indicate when executing in special fdefs for sph.
+	(TT_ExecContextRec): Remove compatibility_mode variable.
+	Add variable to indicate when executing in special fdefs for sph.
 
 	* src/truetype/ttobjs.h: Updated.
 	(TT_DefRecord): Add flags to identify special fdefs for sph.
@@ -59,17 +61,18 @@
 	(TT_SizeRec): Remove unnecessary ttfautohinted variable.
 
 	* src/truetype/ttsubpix.c: Updated.
-	(COMPATIBILITY_MODE_Rules): Remove all. Auto-detected now.
-	(PIXEL_HINTING_Rules): Remove all. Unnecessary after fixes.
+	(COMPATIBILITY_MODE_Rules): Remove all.  Auto-detected now.
+	(PIXEL_HINTING_Rules): Remove all.  Unnecessary after fixes.
 	(SKIP_NONPIXEL_Y_MOVES_Rules): Remove Ubuntu.
 	(SKIP_NONPIXEL_Y_MOVES_Rules_Exceptions): Add Arial Bold `N'.
-	(SKIP_OFFPIXEL_Y_MOVES_Rules): Remove all. Happens automatically now.
+	(SKIP_OFFPIXEL_Y_MOVES_Rules): Remove all.  Happens automatically
+	now.
 	(ROUND_NONPIXEL_Y_MOVES_Rules): Remove Ubuntu.
 	(ROUND_NONPIXEL_Y_MOVES_Rules_Exceptions): Remove all.
 	(NORMAL_ROUND_Rules): Remove Verdana.
 	(NO_DELTAP_AFTER_IUP_Rules): Remove all.
-	(sph_set_tweaks): Performance fix. Don't run prep always. Adjust
-	conditional for sph_compatibility_mode.
+	(sph_set_tweaks): Performance fix.  Don't run prep always.
+	Adjust conditional for sph_compatibility_mode.
 
 	* src/truetype/ttsubpix.h: Add new fdef flags for sph.
 
--- a/include/freetype/internal/tttypes.h
+++ b/include/freetype/internal/tttypes.h
@@ -5,7 +5,7 @@
 /*    Basic SFNT/TrueType type definitions and interface (specification    */
 /*    only).                                                               */
 /*                                                                         */
-/*  Copyright 1996-2002, 2004-2008, 2012 by                                */
+/*  Copyright 1996-2002, 2004-2008, 2012-2013 by                           */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */
@@ -1429,8 +1429,9 @@
     FT_ULong              vert_metrics_offset;
 
 #ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING
-    FT_ULong              sph_found_func_flags; /* special funcs identified */
-                                                /* for this face            */
+    /* since 2.4.12 */
+    FT_ULong              sph_found_func_flags; /* special functions found */
+                                                /* for this face           */
     FT_Bool               sph_compatibility_mode;
 #endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */
 
--- a/src/truetype/ttgload.c
+++ b/src/truetype/ttgload.c
@@ -1943,7 +1943,6 @@
 
       if ( subpixel_hinting )
         grayscale = grayscale_hinting = FALSE;
-
       else if ( SPH_OPTION_SET_GRAYSCALE )
       {
         grayscale = grayscale_hinting = TRUE;
--- a/src/truetype/ttinterp.c
+++ b/src/truetype/ttinterp.c
@@ -3182,6 +3182,7 @@
          args[0] = CUR.storage[I];                        \
      }                                                    \
    }
+
 #else /* !TT_CONFIG_OPTION_SUBPIXEL_HINTING */
 
 #define DO_RS                           \
@@ -4581,11 +4582,11 @@
       return;
     }
 
-    rec->range        = CUR.curRange;
-    rec->opc          = (FT_UInt16)n;
-    rec->start        = CUR.IP + 1;
-    rec->active       = TRUE;
-    rec->inline_delta = FALSE;
+    rec->range          = CUR.curRange;
+    rec->opc            = (FT_UInt16)n;
+    rec->start          = CUR.IP + 1;
+    rec->active         = TRUE;
+    rec->inline_delta   = FALSE;
     rec->sph_fdef_flags = 0x0000;
 
     if ( n > CUR.maxFunc )
@@ -4614,8 +4615,8 @@
 
           if ( opcode_pointer[i] == opcode_size[i] )
           {
-
-            FT_TRACE7(( "sph: Function %d, opcode ptrn: %d, %s %s\n", i, n,
+            FT_TRACE7(( "sph: Function %d, opcode ptrn: %d, %s %s\n",
+                        i, n,
                         CUR.face->root.family_name,
                         CUR.face->root.style_name ));
 
@@ -4683,7 +4684,6 @@
                 CUR.face->sph_found_func_flags |= SPH_FDEF_SPACING_2;
               }
               break;
-
             }
             opcode_pointer[i] = 0;
           }
@@ -4694,10 +4694,9 @@
       }
 
       /* Set sph_compatibility_mode only when deltas are detected */
-      CUR.face->sph_compatibility_mode = ( ( CUR.face->sph_found_func_flags &
-                                             SPH_FDEF_INLINE_DELTA_1 )        |
-                                           ( CUR.face->sph_found_func_flags &
-                                             SPH_FDEF_INLINE_DELTA_2 ) );
+      CUR.face->sph_compatibility_mode =
+        ( ( CUR.face->sph_found_func_flags & SPH_FDEF_INLINE_DELTA_1 ) |
+          ( CUR.face->sph_found_func_flags & SPH_FDEF_INLINE_DELTA_2 ) );
 
 #endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */
 
@@ -6035,7 +6034,8 @@
                ( CUR.sph_tweak_flags & SPH_TWEAK_SKIP_INLINE_DELTAS ) )
             goto Skip;
 
-          if ( !CUR.face->sph_compatibility_mode && CUR.GS.freeVector.y != 0 )
+          if ( !CUR.face->sph_compatibility_mode &&
+               CUR.GS.freeVector.y != 0          )
             MOVE_Zp2_Point( point, dx, dy, TRUE );
 
           else if ( CUR.face->sph_compatibility_mode )
@@ -6069,7 +6069,7 @@
                  CUR.GS.freeVector.y != 0                                  &&
                  ( B1 & 63 ) == 0                                          &&
                  ( B2 & 63 ) != 0                                          &&
-                 B1 != B2                                                ) )
+                 B1 != B2                                                  ) )
             MOVE_Zp2_Point( point, -dx, -dy, TRUE );
       }
         else
@@ -6260,8 +6260,8 @@
     if ( CUR.GS.gep0 == 0 )   /* If in twilight zone */
     {
 #ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING
-      /* Only adjust when not in sph_compatibility_mode or ignore_x_mode */
-      /* Determined via experimentation and may be incorrect             */
+      /* Only adjust if not in sph_compatibility_mode or ignore_x_mode. */
+      /* Determined via experimentation and may be incorrect...         */
       if ( !CUR.ignore_x_mode || !CUR.face->sph_compatibility_mode )
 #endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */
         CUR.zp0.org[point].x = TT_MulFix14( (FT_UInt32)distance,
@@ -6643,7 +6643,7 @@
            ( B1 & 63 ) != 0                                          )
         reverse_move = TRUE;
 
-      if ( ( CUR.sph_tweak_flags &
+      if ( ( CUR.sph_tweak_flags                      &
              SPH_TWEAK_DELTAP_SKIP_EXAGGERATED_VALUES ) &&
            !reverse_move                                &&
            FT_ABS( B1 - B2 ) >= 64                      )
@@ -7371,15 +7371,15 @@
             else
               B1 = CUR.zp0.cur[A].x;
 #if 0
-            /* Standard Subpixel Hinting:  Allow y move    */
-            /* This messes up dejavu and may not be needed */
+            /* Standard Subpixel Hinting: Allow y move.       */
+            /* This messes up dejavu and may not be needed... */
             if ( !CUR.face->sph_compatibility_mode &&
                  CUR.GS.freeVector.y != 0           )
               CUR_Func_move( &CUR.zp0, A, B );
             else
 #endif
-            /* Compatibility Mode: Allow x or y move if point touched in
-                Y direction */
+            /* Compatibility Mode: Allow x or y move if point touched in */
+            /* Y direction.                                              */
             if ( CUR.face->sph_compatibility_mode                      &&
                  !( CUR.sph_tweak_flags & SPH_TWEAK_ALWAYS_SKIP_DELTAP ) )
             {
@@ -7389,10 +7389,8 @@
               if ( ( CUR.sph_tweak_flags & SPH_TWEAK_ROUND_NONPIXEL_Y_MOVES ) )
                 B = FT_PIX_ROUND( B1 + B ) - B1;
 
-              /*
-              *  Allow delta move if using sph_compatibility_mode, IUP has not
-              *  been called, and point is touched on Y.
-              */
+              /* Allow delta move if using sph_compatibility_mode,   */
+              /* IUP has not been called, and point is touched on Y. */
               if ( !CUR.iup_called                            &&
                    ( CUR.zp0.tags[A] & FT_CURVE_TAG_TOUCH_Y ) )
                 CUR_Func_move( &CUR.zp0, A, B );
@@ -7401,14 +7399,14 @@
             B2 = CUR.zp0.cur[A].y;
 
             /* Reverse this move if it results in a disallowed move */
-            if ( CUR.GS.freeVector.y != 0                     &&
-                 ( ( CUR.face->sph_compatibility_mode     &&
-                        ( B1 & 63 ) == 0                  &&
-                        ( B2 & 63 ) != 0                  ) ||
-                   ( ( CUR.sph_tweak_flags &
-                        SPH_TWEAK_SKIP_NONPIXEL_Y_MOVES ) &&
-                        ( B1 & 63 ) != 0                  &&
-                        ( B2 & 63 ) != 0                  ) ) )
+            if ( CUR.GS.freeVector.y != 0                    &&
+                 ( ( CUR.face->sph_compatibility_mode    &&
+                     ( B1 & 63 ) == 0                    &&
+                     ( B2 & 63 ) != 0                    ) ||
+                   ( ( CUR.sph_tweak_flags             &
+                       SPH_TWEAK_SKIP_NONPIXEL_Y_MOVES ) &&
+                     ( B1 & 63 ) != 0                    &&
+                     ( B2 & 63 ) != 0                    ) ) )
               CUR_Func_move( &CUR.zp0, A, -B );
           }
 #else
@@ -7552,7 +7550,8 @@
     if ( ( args[0] & 1 ) != 0 && CUR.ignore_x_mode )
     {
       K = CUR.rasterizer_version;
-      FT_TRACE7(( "Setting rasterizer version %d\n", CUR.rasterizer_version ));
+      FT_TRACE7(( "Setting rasterizer version %d\n",
+                  CUR.rasterizer_version ));
     }
     else
 #endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */
@@ -8024,7 +8023,7 @@
 #endif
 
 #ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING
-    CUR.iup_called        = FALSE;
+    CUR.iup_called = FALSE;
 #endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */
 
     /* set CVT functions */
--- a/src/truetype/ttinterp.h
+++ b/src/truetype/ttinterp.h
@@ -278,15 +278,15 @@
     FT_Bool            subpixel_positioned;   /* subpixel positioned       */
                                               /* (DirectWrite ClearType)?  */
 
-    FT_Int             rasterizer_version;    /* MS rasterizer version */
+    FT_Int             rasterizer_version;    /* MS rasterizer version     */
 
-    FT_Bool            iup_called;            /* IUP called for glyph?  */
+    FT_Bool            iup_called;            /* IUP called for glyph?     */
 
-    FT_ULong           sph_tweak_flags;       /* flags to control  */
-                                              /* hint tweaks       */
+    FT_ULong           sph_tweak_flags;       /* flags to control          */
+                                              /* hint tweaks               */
 
-    FT_ULong           sph_in_func_flags;     /* flags to indicate if in */
-                                              /* special functions       */
+    FT_ULong           sph_in_func_flags;     /* flags to indicate if in   */
+                                              /* special functions         */
 
 #endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */
 
--- a/src/truetype/ttobjs.h
+++ b/src/truetype/ttobjs.h
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    Objects manager (specification).                                     */
 /*                                                                         */
-/*  Copyright 1996-2009, 2011-2012 by                                      */
+/*  Copyright 1996-2009, 2011-2013 by                                      */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */
@@ -173,13 +173,13 @@
   /*                                                                       */
   typedef struct  TT_DefRecord_
   {
-    FT_Int   range;        /* in which code range is it located?     */
-    FT_Long  start;        /* where does it start?                   */
-    FT_Long  end;          /* where does it end?                     */
-    FT_UInt  opc;          /* function #, or instruction code        */
-    FT_Bool  active;       /* is it active?                          */
-    FT_Bool  inline_delta; /* is function that defines inline delta? */
-    FT_ULong sph_fdef_flags; /* flags to identify special functions  */
+    FT_Int    range;          /* in which code range is it located?     */
+    FT_Long   start;          /* where does it start?                   */
+    FT_Long   end;            /* where does it end?                     */
+    FT_UInt   opc;            /* function #, or instruction code        */
+    FT_Bool   active;         /* is it active?                          */
+    FT_Bool   inline_delta;   /* is function that defines inline delta? */
+    FT_ULong  sph_fdef_flags; /* flags to identify special functions    */
 
   } TT_DefRecord, *TT_DefArray;
 
--- a/src/truetype/ttsubpix.c
+++ b/src/truetype/ttsubpix.c
@@ -275,7 +275,7 @@
   };
 
 
-  /* Force special legacy fixes for fonts;                                 */
+  /* Force special legacy fixes for fonts.                                 */
 #define COMPATIBILITY_MODE_RULES_SIZE  1
 
   const SPH_TweakRule  COMPATIBILITY_MODE_Rules
@@ -1030,22 +1030,29 @@
       if ( loader->exec->rasterizer_version != 35 )
       {
         loader->exec->rasterizer_version = 35;
-        loader->exec->size->cvt_ready = FALSE;
-        tt_size_ready_bytecode( loader->exec->size,
-                            FT_BOOL( loader->load_flags & FT_LOAD_PEDANTIC ) );
+        loader->exec->size->cvt_ready    = FALSE;
+
+        tt_size_ready_bytecode(
+          loader->exec->size,
+          FT_BOOL( loader->load_flags & FT_LOAD_PEDANTIC ) );
       }
-      else loader->exec->rasterizer_version = 35;
+      else
+        loader->exec->rasterizer_version = 35;
     }
     else
     {
-      if ( loader->exec->rasterizer_version != SPH_OPTION_SET_RASTERIZER_VERSION )
+      if ( loader->exec->rasterizer_version  !=
+           SPH_OPTION_SET_RASTERIZER_VERSION )
       {
         loader->exec->rasterizer_version = SPH_OPTION_SET_RASTERIZER_VERSION;
-        loader->exec->size->cvt_ready = FALSE;
-        tt_size_ready_bytecode( loader->exec->size,
-                            FT_BOOL( loader->load_flags & FT_LOAD_PEDANTIC ) );
+        loader->exec->size->cvt_ready    = FALSE;
+
+        tt_size_ready_bytecode(
+          loader->exec->size,
+          FT_BOOL( loader->load_flags & FT_LOAD_PEDANTIC ) );
       }
-      else loader->exec->rasterizer_version = SPH_OPTION_SET_RASTERIZER_VERSION;
+      else
+        loader->exec->rasterizer_version = SPH_OPTION_SET_RASTERIZER_VERSION;
     }
 
     if ( IS_HINTED( loader->load_flags ) )
--- a/src/truetype/ttsubpix.h
+++ b/src/truetype/ttsubpix.h
@@ -34,14 +34,14 @@
   /* ID flags to identify special functions at FDEF and runtime.           */
   /*                                                                       */
   /*                                                                       */
-#define SPH_FDEF_INLINE_DELTA_1                   0x0000001
-#define SPH_FDEF_INLINE_DELTA_2                   0x0000002
-#define SPH_FDEF_DIAGONAL_STROKE                  0x0000004
-#define SPH_FDEF_VACUFORM_ROUND_1                 0x0000008
-#define SPH_FDEF_TTFAUTOHINT_1                    0x0000010
-#define SPH_FDEF_SPACING_1                        0x0000020
-#define SPH_FDEF_SPACING_2                        0x0000040
-#define SPH_FDEF_TYPEMAN_STROKES                  0x0000080
+#define SPH_FDEF_INLINE_DELTA_1    0x0000001
+#define SPH_FDEF_INLINE_DELTA_2    0x0000002
+#define SPH_FDEF_DIAGONAL_STROKE   0x0000004
+#define SPH_FDEF_VACUFORM_ROUND_1  0x0000008
+#define SPH_FDEF_TTFAUTOHINT_1     0x0000010
+#define SPH_FDEF_SPACING_1         0x0000020
+#define SPH_FDEF_SPACING_2         0x0000040
+#define SPH_FDEF_TYPEMAN_STROKES   0x0000080
 
 
   /*************************************************************************/