shithub: freetype+ttf2subf

Download patch

ref: 41dbcbf6285901c9e1fcc7605cf996341af2ac3e
parent: 291afa0992560fc4c119eae5b24a3aa98ad96296
author: David Turner <[email protected]>
date: Thu Mar 9 06:46:25 EST 2000

reformatting, changing the FT_Outline structure:

  - "flags" have been renamed to "tags"
  - "outline_flags" have been renamed to "flags"

Look for more re-formatting today..

git/fs: mount .git/fs: mount/attach disallowed
--- a/demos/src/ftgrays.c
+++ b/demos/src/ftgrays.c
@@ -79,7 +79,7 @@
 
 #endif
 
-#define  PIXEL_BITS  6
+#define  PIXEL_BITS  7
 #define  ONE_PIXEL   (1L << PIXEL_BITS)
 #define  PIXEL_MASK  (-1L << PIXEL_BITS)
 #define  TRUNC(x)    ((x) >> PIXEL_BITS)
@@ -88,6 +88,8 @@
 #define  CEILING(x)  (((x)+ONE_PIXEL-1) & -ONE_PIXEL)
 #define  ROUND(x)    (((x)+ONE_PIXEL/2) & -ONE_PIXEL)
 
+#define  UPSCALE(x)  (PIXEL_BITS >= 6 ? (x) << (PIXEL_BITS-6) : (x) >> (6-PIXEL_BITS))
+
 /****************************************************************************/
 /*                                                                          */
 /*   INITIALIZE THE CELLS TABLE                                             */
@@ -137,10 +139,10 @@
   }
 
   /* truncate the bounding box to integer pixels */  
-  ras.min_ex = TRUNC( ras.min_ex );
-  ras.min_ey = TRUNC( ras.min_ey );
-  ras.max_ex = TRUNC( CEILING( ras.max_ex ) );
-  ras.max_ey = TRUNC( CEILING( ras.max_ey ) );
+  ras.min_ex = ras.min_ex >> 6;
+  ras.min_ey = ras.min_ey >> 6;
+  ras.max_ex = ( ras.max_ex+63 ) >> 6;
+  ras.max_ey = ( ras.max_ey+63 ) >> 6;
 }
 
 
@@ -484,7 +486,7 @@
   }
 
   if (level <= 1)
-    return render_line( RAS_VAR_ to->x, to->y );
+    return render_line( RAS_VAR_ UPSCALE(to->x), UPSCALE(to->y) );
 
   arc      = ras.bez_stack;
   arc[0]   = *to;
@@ -492,6 +494,11 @@
   arc[2].x = ras.x;
   arc[2].y = ras.y;
 
+  arc[0].x = UPSCALE(arc[0].x);
+  arc[0].y = UPSCALE(arc[0].y);
+  arc[1].x = UPSCALE(arc[1].x);
+  arc[1].y = UPSCALE(arc[1].y);
+
   levels    = ras.lev_stack;
   top       = 0;
   levels[0] = level;
@@ -573,7 +580,7 @@
   }
 
   if (level <= 1)
-    return render_line( RAS_VAR_ to->x, to->y );
+    return render_line( RAS_VAR_ UPSCALE(to->x), UPSCALE(to->y) );
 
   arc      = ras.bez_stack;
   arc[0]   = *to;
@@ -582,6 +589,13 @@
   arc[3].x = ras.x;
   arc[3].y = ras.y;
 
+  arc[0].x = UPSCALE(arc[0].x);
+  arc[0].y = UPSCALE(arc[0].y);
+  arc[1].x = UPSCALE(arc[1].x);
+  arc[1].y = UPSCALE(arc[1].y);
+  arc[2].x = UPSCALE(arc[2].x);
+  arc[2].y = UPSCALE(arc[2].y);
+
   levels    = ras.lev_stack;
   top       = 0;
   levels[0] = level;
@@ -801,7 +815,7 @@
       v_start = v_control = v_first;
 
       point = outline->points + first;
-      tags  = outline->flags  + first;
+      tags  = outline->tags  + first;
       tag   = FT_CURVE_TAG( tags[0] );
 
       /* A contour cannot start with a cubic control point! */
@@ -812,7 +826,7 @@
       if ( tag == FT_Curve_Tag_Conic )
       {
         /* first point is conic control.  Yes, this happens. */
-        if ( FT_CURVE_TAG( outline->flags[last] ) == FT_Curve_Tag_On )
+        if ( FT_CURVE_TAG( outline->tags[last] ) == FT_Curve_Tag_On )
         {
           /* start at last point if it is on the curve */
           v_start = v_last;
@@ -947,7 +961,7 @@
     FT_Vector  v_start;
 
     FT_Vector* point;
-    char*      flags;
+    char*      tags;
 
     int    n;         /* index of contour in outline     */
     int    first;     /* index of first point in contour */
@@ -973,7 +987,7 @@
 
       v_start = v_control = v_first;
 
-      tag   = FT_CURVE_TAG( outline->flags[first] );
+      tag   = FT_CURVE_TAG( outline->tags[first] );
       index = first;
 
       /* A contour cannot start with a cubic control point! */
@@ -987,7 +1001,7 @@
       if ( tag == FT_Curve_Tag_Conic )
       {
         /* first point is conic control.  Yes, this happens. */
-        if ( FT_CURVE_TAG( outline->flags[last] ) == FT_Curve_Tag_On )
+        if ( FT_CURVE_TAG( outline->tags[last] ) == FT_Curve_Tag_On )
         {
           /* start at last point if it is on the curve */
           v_start = v_last;
@@ -1015,7 +1029,7 @@
         return error;
 
       point = outline->points + first;
-      flags = outline->flags  + first;
+      tags = outline->tags  + first;
 
       /* now process each contour point individually */
 
@@ -1023,9 +1037,9 @@
       {
         index++;
         point++;
-        flags++;
+        tags++;
 
-        tag = FT_CURVE_TAG( flags[0] );
+        tag = FT_CURVE_TAG( tags[0] );
 
         switch ( phase )
         {
@@ -1113,7 +1127,7 @@
       /* end of contour, close curve cleanly */
       error = 0;
 
-      tag = FT_CURVE_TAG( outline->flags[first] );
+      tag = FT_CURVE_TAG( outline->tags[first] );
 
       switch ( phase )
       {
@@ -1154,13 +1168,17 @@
   int  Move_To( FT_Vector*  to,
                 FT_Raster   raster )
   {
+    TPos  x, y;
+    
     /* record current cell, if any */
     record_cell( (PRaster)raster );
     
     /* start to a new position */
-    start_cell( (PRaster)raster, TRUNC(to->x), TRUNC(to->y) );
-    ((PRaster)raster)->x = to->x;
-    ((PRaster)raster)->y = to->y;
+    x = UPSCALE(to->x);
+    y = UPSCALE(to->y);
+    start_cell( (PRaster)raster, TRUNC(x), TRUNC(y) );
+    ((PRaster)raster)->x = x;
+    ((PRaster)raster)->y = y;
     return 0;
   }
   
@@ -1169,7 +1187,7 @@
   int  Line_To( FT_Vector*  to,
                 FT_Raster   raster )
   {
-    return render_line( (PRaster)raster, to->x, to->y );
+    return render_line( (PRaster)raster, UPSCALE(to->x), UPSCALE(to->y) );
   }
 
 
@@ -1262,7 +1280,7 @@
     /*                                                           */
     
     coverage = area >> (PIXEL_BITS*2+1-8);  /* use range 0..256 */
-    if ( ras.outline.outline_flags & ft_outline_even_odd_fill )
+    if ( ras.outline.flags & ft_outline_even_odd_fill )
     {
       if (coverage < 0)
         coverage = -coverage;
@@ -1285,7 +1303,7 @@
         coverage = 255;
     }
     
-    if (area)
+    if (coverage)
     {
       /* see if we can add this span to the current list */
       count = ras.num_gray_spans;
--- a/demos/src/fttimer.c
+++ b/demos/src/fttimer.c
@@ -158,11 +158,11 @@
     if ( error )
       return error;
 
-    glyph->outline.outline_flags |= ft_outline_single_pass |
+    glyph->outline.flags |= ft_outline_single_pass |
                                     ft_outline_ignore_dropouts;
 
     if (force_low)
-      glyph->outline.outline_flags &= ~ft_outline_high_precision;
+      glyph->outline.flags &= ~ft_outline_high_precision;
 
     /* debugging */
 #if 0
@@ -183,9 +183,9 @@
                     &outlines[cur_glyph] );
 
     /* copy the glyph outline into it */
-    glyph->outline.outline_flags |= ft_outline_single_pass;
+    glyph->outline.flags |= ft_outline_single_pass;
     if (force_low)
-      glyph->outline.outline_flags &= ~ft_outline_high_precision;
+      glyph->outline.flags &= ~ft_outline_high_precision;
 
     FT_Copy_Outline( &glyph->outline, &outlines[cur_glyph] );
 
@@ -218,7 +218,7 @@
 
   FT_Error  ConvertRaster( int  index )
   {
-    outlines[index].outline_flags |= ~ft_outline_single_pass;
+    outlines[index].flags |= ~ft_outline_single_pass;
     if (use_grays)
       return grays_raster_render( &raster, &outlines[index], &Bit );
     else
--- a/demos/src/ftview.c
+++ b/demos/src/ftview.c
@@ -189,7 +189,7 @@
       memset( bit_buffer, 0, size );
 
       if (low_prec)
-        glyph->outline.outline_flags &= ~ft_outline_high_precision;
+        glyph->outline.flags &= ~ft_outline_high_precision;
       
       if (use_grays & gray_render)
         error = grays_raster_render( &raster, &glyph->outline, &bit2 );
--- a/include/ftimage.h
+++ b/include/ftimage.h
@@ -224,36 +224,36 @@
   /*    in FreeType 1.x.                                                   */
   /*                                                                       */
   /* <Fields>                                                              */
-  /*    n_contours     :: The number of contours in the outline.           */
+  /*    n_contours :: The number of contours in the outline.               */
   /*                                                                       */
-  /*    n_points       :: The number of points in the outline.             */
+  /*    n_points   :: The number of points in the outline.                 */
   /*                                                                       */
-  /*    points         :: A pointer to an array of `n_points' FT_Vector    */
-  /*                      elements, giving the outline's point             */
-  /*                      coordinates.                                     */
+  /*    points     :: A pointer to an array of `n_points' FT_Vector        */
+  /*                  elements, giving the outline's point                 */
+  /*                  coordinates.                                         */
   /*                                                                       */
-  /*    flags          :: A pointer to an array of `n_points' chars,       */
-  /*                      giving each outline point's type.  If bit 0 is   */
-  /*                      set, the point is `off' the curve, i.e., a       */
-  /*                      Bezier control point, while it is `on' when      */
-  /*                      unset.                                           */
+  /*    tags       :: A pointer to an array of `n_points' chars,           */
+  /*                  giving each outline point's type.  If bit 0 is       */
+  /*                  unset, the point is 'off' the curve, i.e. a          */
+  /*                  Bezier control point, while it is `on' when          */
+  /*                  unset.                                               */
   /*                                                                       */
-  /*                      Bit 1 is meaningful for `off' points only.  If   */
-  /*                      set, it indicates a third-order Bezier arc       */
-  /*                      control point; and a second-order control point  */
-  /*                      if unset.                                        */
+  /*                  Bit 1 is meaningful for `off' points only.  If       */
+  /*                  set, it indicates a third-order Bezier arc           */
+  /*                  control point; and a second-order control point      */
+  /*                  if unset.                                            */
   /*                                                                       */
-  /*    contours       :: An array of `n_contours' shorts, giving the end  */
-  /*                      point of each contour within the outline.  For   */
-  /*                      example, the first contour is defined by the     */
-  /*                      points `0' to `contours[0]', the second one is   */
-  /*                      defined by the points `contours[0]+1' to         */
-  /*                      `contours[1]', etc.                              */
+  /*    contours   :: An array of `n_contours' shorts, giving the end      */
+  /*                  point of each contour within the outline.  For       */
+  /*                  example, the first contour is defined by the         */
+  /*                  points `0' to `contours[0]', the second one is       */
+  /*                  defined by the points `contours[0]+1' to             */
+  /*                  `contours[1]', etc.                                  */
   /*                                                                       */
-  /*    outline_flags  :: a set of bit flags used to characterize the      */
-  /*                      outline and give hints to the scan-converter     */
-  /*                      and hinter on how to convert/grid-fit it..       */
-  /*                      see FT_Outline_Flags..                           */
+  /*    flags      :: a set of bit flags used to characterize the          */
+  /*                  outline and give hints to the scan-converter         */
+  /*                  and hinter on how to convert/grid-fit it..           */
+  /*                  see FT_Outline_Flags..                               */
   /*                                                                       */
   typedef struct  FT_Outline_
   {
@@ -261,10 +261,10 @@
     short       n_points;        /* number of points in the glyph      */
 
     FT_Vector*  points;          /* the outline's points               */
-    char*       flags;           /* the points flags                   */
+    char*       tags;            /* the points flags                   */
     short*      contours;        /* the contour end points             */
 
-    int         outline_flags;   /* outline masks                      */
+    int         flags;           /* outline masks                      */
     
   } FT_Outline;
 
--- a/src/base/ftbbox.c
+++ b/src/base/ftbbox.c
@@ -398,7 +398,7 @@
       if ( y < cbox.yMin ) cbox.yMin = y;
       if ( y > cbox.yMax ) cbox.yMax = y;
 
-      if ( FT_CURVE_TAG( outline->flags[n] ) == FT_Curve_Tag_On )
+      if ( FT_CURVE_TAG( outline->tags[n] ) == FT_Curve_Tag_On )
       {
         /* update bbox for `on' points only */
         if ( x < bbox.xMin ) bbox.xMin = x;
--- a/src/base/ftobjs.c
+++ b/src/base/ftobjs.c
@@ -2053,7 +2053,7 @@
     FT_Vector  v_start;
 
     FT_Vector* point;
-    char*      flags;
+    char*      tags;
 
     int    n;         /* index of contour in outline     */
     int    first;     /* index of first point in contour */
@@ -2079,7 +2079,7 @@
 
       v_start = v_control = v_first;
 
-      tag   = FT_CURVE_TAG( outline->flags[first] );
+      tag   = FT_CURVE_TAG( outline->tags[first] );
       index = first;
 
       /* A contour cannot start with a cubic control point! */
@@ -2093,7 +2093,7 @@
       if ( tag == FT_Curve_Tag_Conic )
       {
         /* first point is conic control.  Yes, this happens. */
-        if ( FT_CURVE_TAG( outline->flags[last] ) == FT_Curve_Tag_On )
+        if ( FT_CURVE_TAG( outline->tags[last] ) == FT_Curve_Tag_On )
         {
           /* start at last point if it is on the curve */
           v_start = v_last;
@@ -2121,7 +2121,7 @@
         return error;
 
       point = outline->points + first;
-      flags = outline->flags  + first;
+      tags  = outline->tags  + first;
 
       /* now process each contour point individually */
 
@@ -2129,9 +2129,9 @@
       {
         index++;
         point++;
-        flags++;
+        tags++;
 
-        tag = FT_CURVE_TAG( flags[0] );
+        tag = FT_CURVE_TAG( tags[0] );
 
         switch ( phase )
         {
@@ -2219,7 +2219,7 @@
       /* end of contour, close curve cleanly */
       error = 0;
 
-      tag = FT_CURVE_TAG( outline->flags[first] );
+      tag = FT_CURVE_TAG( outline->tags[first] );
 
       switch ( phase )
       {
@@ -2310,18 +2310,18 @@
     memory   = library->memory;
 
     if ( ALLOC_ARRAY( outline->points,   numPoints * 2L, FT_Pos    ) ||
-         ALLOC_ARRAY( outline->flags,    numPoints,      FT_Byte   ) ||
+         ALLOC_ARRAY( outline->tags,    numPoints,      FT_Byte   ) ||
          ALLOC_ARRAY( outline->contours, numContours,    FT_UShort ) )
       goto Fail;
 
     outline->n_points       = (FT_UShort)numPoints;
     outline->n_contours     = (FT_Short)numContours;
-    outline->outline_flags |= ft_outline_owner;
+    outline->flags |= ft_outline_owner;
 
     return FT_Err_Ok;
 
   Fail:
-    outline->outline_flags |= ft_outline_owner;
+    outline->flags |= ft_outline_owner;
     FT_Done_Outline( library, outline );
 
     return error;
@@ -2366,10 +2366,10 @@
 
     if ( outline )
     {
-      if ( outline->outline_flags & ft_outline_owner )
+      if ( outline->flags & ft_outline_owner )
       {
         FREE( outline->points   );
-        FREE( outline->flags    );
+        FREE( outline->tags    );
         FREE( outline->contours );
       }
       *outline = null_outline;
@@ -2509,7 +2509,7 @@
     FT_Memory  memory = zone->memory;
     
     FREE( zone->contours );
-    FREE( zone->flags );
+    FREE( zone->tags );
     FREE( zone->cur );
     FREE( zone->org );
 
@@ -2554,7 +2554,7 @@
     
     if ( ALLOC_ARRAY( zone->org,      maxPoints*2, FT_F26Dot6 ) ||
          ALLOC_ARRAY( zone->cur,      maxPoints*2, FT_F26Dot6 ) ||
-         ALLOC_ARRAY( zone->flags,    maxPoints,   FT_Byte    ) ||
+         ALLOC_ARRAY( zone->tags,    maxPoints,   FT_Byte    ) ||
          ALLOC_ARRAY( zone->contours, maxContours, FT_UShort  ) )
     {
       FT_Done_GlyphZone(zone);
@@ -2599,7 +2599,7 @@
       /* reallocate the points arrays */
       if ( REALLOC_ARRAY( zone->org,   zone->max_points*2, newPoints*2, FT_F26Dot6 ) ||
            REALLOC_ARRAY( zone->cur,   zone->max_points*2, newPoints*2, FT_F26Dot6 ) ||
-           REALLOC_ARRAY( zone->flags, zone->max_points*2, newPoints,   FT_Byte    ) )
+           REALLOC_ARRAY( zone->tags, zone->max_points*2, newPoints,   FT_Byte    ) )
         goto Exit;
         
       zone->max_points = newPoints;
--- a/src/base/ftobjs.h
+++ b/src/base/ftobjs.h
@@ -336,7 +336,7 @@
   *     n_contours   :: current number of contours in zone
   *     org          :: original glyph coordinates (font units/scaled)
   *     cur          :: current glyph coordinates  (scaled/hinted)
-  *     flags        :: point control flags
+  *     tags         :: point control tags 
   *     contours     :: contour end points
   *
   ***********************************************************************/
@@ -352,7 +352,7 @@
     FT_Vector*  org;        /* original point coordinates  */
     FT_Vector*  cur;        /* current point coordinates   */
 
-    FT_Byte*    flags;      /* current touch flags         */
+    FT_Byte*    tags;       /* current touch flags         */
     FT_UShort*  contours;   /* contour end points          */
 
   } FT_GlyphZone;
--- a/src/base/ftoutln.c
+++ b/src/base/ftoutln.c
@@ -60,7 +60,7 @@
     MEM_Copy( target->points, source->points,
               source->n_points * 2 * sizeof ( FT_Pos ) );
 
-    MEM_Copy( target->flags, source->flags,
+    MEM_Copy( target->tags, source->tags,
               source->n_points * sizeof ( FT_Byte ) );
 
     MEM_Copy( target->contours, source->contours,
@@ -67,11 +67,11 @@
               source->n_contours * sizeof ( FT_Short ) );
 
     /* copy all flags, except the "ft_outline_owner" one */
-    is_owner = target->outline_flags & ft_outline_owner;
-    target->outline_flags = source->outline_flags;
+    is_owner = target->flags & ft_outline_owner;
+    target->flags = source->flags;
     
-    target->outline_flags &= ~ft_outline_owner;
-    target->outline_flags |= is_owner;
+    target->flags &= ~ft_outline_owner;
+    target->flags |= is_owner;
     return FT_Err_Ok;
   }
 
--- a/src/base/ftraster.c
+++ b/src/base/ftraster.c
@@ -4130,8 +4130,8 @@
 #else
     ras.dropout_mode = 2;
 #endif
-    ras.second_pass  = (outline->outline_flags & ft_outline_single_pass) == 0;
-    SET_High_Precision( outline->outline_flags & ft_outline_high_precision );
+    ras.second_pass  = (outline->flags & ft_outline_single_pass) == 0;
+    SET_High_Precision( outline->flags & ft_outline_high_precision );
 
     switch ( target_map->pixel_mode )
     {
--- a/src/truetype/ttgload.c
+++ b/src/truetype/ttgload.c
@@ -164,7 +164,7 @@
 
     target->org   = source->org + np;
     target->cur   = source->cur + np;
-    target->flags = source->flags + np;
+    target->tags = source->tags + np;
 
     target->contours = source->contours + nc;
 
@@ -271,10 +271,10 @@
     stream->cursor += n_ins;
     
     /*********************************************************************/
-    /* reading the point flags                                           */
+    /* reading the point tags                                           */
 
     {    
-      TT_Byte*  flag  = load->zone.flags;
+      TT_Byte*  flag  = load->zone.tags;
       TT_Byte*  limit = flag + n_points;
       TT_Byte   c, count;
       
@@ -295,7 +295,7 @@
     {
       TT_Vector*  vec   = zone->org;
       TT_Vector*  limit = vec + n_points;
-      TT_Byte*    flag  = zone->flags;
+      TT_Byte*    flag  = zone->tags;
       TT_Pos      x     = 0;
       
       for ( ; vec < limit; vec++, flag++ )
@@ -321,7 +321,7 @@
     {
       TT_Vector*  vec   = zone->org;
       TT_Vector*  limit = vec + n_points;
-      TT_Byte*    flag  = zone->flags;
+      TT_Byte*    flag  = zone->tags;
       TT_Pos      x     = 0;
       
       for ( ; vec < limit; vec++, flag++ )
@@ -363,12 +363,12 @@
       pp2->x = pp1->x + load->advance;
       pp2->y = 0;
         
-      /* clear the touch flags */
+      /* clear the touch tags */
       for ( n = 0; n < n_points; n++ )
-        zone->flags[n] &= FT_Curve_Tag_On;
+        zone->tags[n] &= FT_Curve_Tag_On;
 
-      zone->flags[n_points    ] = 0;
-      zone->flags[n_points + 1] = 0;
+      zone->tags[n_points    ] = 0;
+      zone->tags[n_points + 1] = 0;
     }
     /* Note that we return two more points that are not */
     /* part of the glyph outline.                       */
@@ -870,8 +870,8 @@
           pp1[0] = loader->pp1;
           pp1[1] = loader->pp2;
       
-          pts->flags[num_points + 1] = 0;
-          pts->flags[num_points + 2] = 0;
+          pts->tags[num_points + 1] = 0;
+          pts->tags[num_points + 2] = 0;
       
           /* if hinting, round the phantom points */
           if ( IS_HINTED(loader->load_flags) )
@@ -883,7 +883,7 @@
           {
             TT_UInt  k;
             for ( k = 0; k < n_points; k++ )
-              pts->flags[k] &= FT_Curve_Tag_On;
+              pts->tags[k] &= FT_Curve_Tag_On;
           }
       
           cur_to_org( n_points, pts );
@@ -959,7 +959,7 @@
       for ( u = 0; u < num_points + 2; u++ )
       {
         glyph->outline.points[u] = loader->base.cur[u];
-        glyph->outline.flags [u] = loader->base.flags[u];
+        glyph->outline.tags [u] = loader->base.tags[u];
       }
 
       for ( u = 0; u < num_contours; u++ )
@@ -970,7 +970,7 @@
     glyph->outline.n_contours  = num_contours;
     
     /* glyph->outline.second_pass = TRUE; */
-    glyph->outline.outline_flags &= ~ft_outline_single_pass;
+    glyph->outline.flags &= ~ft_outline_single_pass;
 
     /* translate array so that (0,0) is the glyph's origin */
     translate_array( (TT_UShort)(num_points + 2),
@@ -1263,10 +1263,10 @@
 #endif /* TT_CONFIG_OPTION_BYTECODE_INTERPRETER */
 
     /* clear all outline flags, except the "owner" one */
-    glyph->outline.outline_flags &= ft_outline_owner;
+    glyph->outline.flags &= ft_outline_owner;
     
     if (size && size->root.metrics.y_ppem < 24 )
-      glyph->outline.outline_flags |= ft_outline_high_precision;
+      glyph->outline.flags |= ft_outline_high_precision;
 
     /************************************************************************/
     /* let's initialise the rest of our loader now                          */
--- a/src/truetype/ttinterp.c
+++ b/src/truetype/ttinterp.c
@@ -1383,7 +1383,7 @@
                                        v * 0x10000L,
                                        CUR.F_dot_P );
 #endif
-      zone->flags[point] |= FT_Curve_Tag_Touch_X;
+      zone->tags[point] |= FT_Curve_Tag_Touch_X;
     }
 
     v = CUR.GS.freeVector.y;
@@ -1398,7 +1398,7 @@
                                        v * 0x10000L,
                                        CUR.F_dot_P );
 #endif
-      zone->flags[point] |= FT_Curve_Tag_Touch_Y;
+      zone->tags[point] |= FT_Curve_Tag_Touch_Y;
     }
   }
 
@@ -1420,7 +1420,7 @@
     UNUSED_EXEC;
 
     zone->cur[point].x += distance;
-    zone->flags[point] |= FT_Curve_Tag_Touch_X;
+    zone->tags[point] |= FT_Curve_Tag_Touch_X;
   }
 
 
@@ -1432,7 +1432,7 @@
     UNUSED_EXEC;
 
     zone->cur[point].y += distance;
-    zone->flags[point] |= FT_Curve_Tag_Touch_Y;
+    zone->tags[point] |= FT_Curve_Tag_Touch_Y;
   }
 
 
@@ -4791,7 +4791,7 @@
         }
       }
       else
-        CUR.pts.flags[point] ^= FT_Curve_Tag_On;
+        CUR.pts.tags[point] ^= FT_Curve_Tag_On;
 
       CUR.GS.loop--;
     }
@@ -4825,7 +4825,7 @@
     }
 
     for ( I = L; I <= K; I++ )
-      CUR.pts.flags[I] |= FT_Curve_Tag_On;
+      CUR.pts.tags[I] |= FT_Curve_Tag_On;
   }
 
 
@@ -4853,7 +4853,7 @@
     }
 
     for ( I = L; I <= K; I++ )
-      CUR.pts.flags[I] &= ~FT_Curve_Tag_On;
+      CUR.pts.tags[I] &= ~FT_Curve_Tag_On;
   }
 
 
@@ -4916,7 +4916,7 @@
     {
       CUR.zp2.cur[point].x += dx;
       if ( touch )
-        CUR.zp2.flags[point] |= FT_Curve_Tag_Touch_X;
+        CUR.zp2.tags[point] |= FT_Curve_Tag_Touch_X;
     }
 
     if ( CUR.GS.freeVector.y != 0 )
@@ -4923,7 +4923,7 @@
     {
       CUR.zp2.cur[point].y += dy;
       if ( touch )
-        CUR.zp2.flags[point] |= FT_Curve_Tag_Touch_Y;
+        CUR.zp2.tags[point] |= FT_Curve_Tag_Touch_Y;
     }
   }
 
@@ -5597,7 +5597,7 @@
     dx = CUR.zp0.cur[b0].x - CUR.zp1.cur[a0].x;
     dy = CUR.zp0.cur[b0].y - CUR.zp1.cur[a0].y;
 
-    CUR.zp2.flags[point] |= FT_Curve_Tag_Touch_Both;
+    CUR.zp2.tags[point] |= FT_Curve_Tag_Touch_Both;
 
     discriminant = TT_MULDIV( dax, -dby, 0x40 ) +
                    TT_MULDIV( day, dbx, 0x40 );
@@ -5780,7 +5780,7 @@
     if ( CUR.GS.freeVector.y != 0 )
       mask &= ~FT_Curve_Tag_Touch_Y;
 
-    CUR.zp0.flags[point] &= mask;
+    CUR.zp0.tags[point] &= mask;
   }
 
 
@@ -5933,7 +5933,7 @@
       end_point   = CUR.pts.contours[contour];
       first_point = point;
 
-      while ( point <= end_point && (CUR.pts.flags[point] & mask) == 0 )
+      while ( point <= end_point && (CUR.pts.tags[point] & mask) == 0 )
         point++;
 
       if ( point <= end_point )
@@ -5945,7 +5945,7 @@
 
         while ( point <= end_point )
         {
-          if ( (CUR.pts.flags[point] & mask) != 0 )
+          if ( (CUR.pts.tags[point] & mask) != 0 )
           {
             if ( point > 0 )
               Interp( cur_touched + 1,
@@ -7632,7 +7632,7 @@
 
     MEM_Alloc( save.org, sizeof ( TT_Vector ) * save.n_points );
     MEM_Alloc( save.cur, sizeof ( TT_Vector ) * save.n_points );
-    MEM_Alloc( save.flags, sizeof ( TT_Byte ) * save.n_points );
+    MEM_Alloc( save.tags, sizeof ( TT_Byte ) * save.n_points );
 
     exc->instruction_trap = 1;
 
@@ -7795,7 +7795,7 @@
 
       MEM_Copy( save.org,   pts.org, pts.n_points * sizeof ( TT_Vector ) );
       MEM_Copy( save.cur,   pts.cur, pts.n_points * sizeof ( TT_Vector ) );
-      MEM_Copy( save.flags, pts.flags, pts.n_points );
+      MEM_Copy( save.tags, pts.tags, pts.n_points );
 
       /* a return indicate the last command */
       if (ch == '\r')
@@ -7849,7 +7849,7 @@
         if ( save.org[A].y != pts.org[A].y ) diff |= 2;
         if ( save.cur[A].x != pts.cur[A].x ) diff |= 4;
         if ( save.cur[A].y != pts.cur[A].y ) diff |= 8;
-        if ( save.flags[A] != pts.flags[A] ) diff |= 16;
+        if ( save.tags[A] != pts.tags[A] ) diff |= 16;
 
         if ( diff )
         {
@@ -7856,7 +7856,7 @@
           FT_TRACE0(( "%02hx  ", A ));
 
           if ( diff & 16 ) temp = "(%01hx)"; else temp = " %01hx ";
-          FT_TRACE0(( temp, save.flags[A] & 7 ));
+          FT_TRACE0(( temp, save.tags[A] & 7 ));
 
           if ( diff & 1 ) temp = "(%08lx)"; else temp = " %08lx ";
           FT_TRACE0(( temp, save.org[A].x ));
@@ -7875,7 +7875,7 @@
           FT_TRACE0(( "%02hx  ", A ));
 
           if ( diff & 16 ) temp = "[%01hx]"; else temp = " %01hx ";
-          FT_TRACE0(( temp, pts.flags[A] & 7 ));
+          FT_TRACE0(( temp, pts.tags[A] & 7 ));
 
           if ( diff & 1 ) temp = "[%08lx]"; else temp = " %08lx ";
           FT_TRACE0(( temp, pts.org[A].x ));
--- a/src/type1/t1gload.c
+++ b/src/type1/t1gload.c
@@ -255,7 +255,7 @@
     cur->n_points   = 0;
     cur->n_contours = 0;
     cur->points     = base->points   + base->n_points;
-    cur->flags      = base->flags    + base->n_points;
+    cur->tags      = base->tags    + base->n_points;
     cur->contours   = base->contours + base->n_contours;
 
     error = T1_Parse_CharStrings( decoder,
@@ -282,7 +282,7 @@
     cur->n_points   = 0;
     cur->n_contours = 0;
     cur->points     = base->points   + base->n_points;
-    cur->flags      = base->flags    + base->n_points;
+    cur->tags      = base->tags    + base->n_points;
     cur->contours   = base->contours + base->n_contours;
 
     error = T1_Parse_CharStrings( decoder,
@@ -920,12 +920,12 @@
       if ( REALLOC_ARRAY( builder->base.points,
                           current, builder->max_points, T1_Vector )  ||
   
-           REALLOC_ARRAY( builder->base.flags,
+           REALLOC_ARRAY( builder->base.tags,
                           current, builder->max_points, T1_Byte )    )
         return error;
     
       builder->current.points = builder->base.points + increment;
-      builder->current.flags  = builder->base.flags  + increment;
+      builder->current.tags  = builder->base.tags  + increment;
     }
 
     return T1_Err_Ok;
@@ -1137,18 +1137,18 @@
     if ( num_points > 0 )
     {
       T1_Vector*  source_point;
-      char*       source_flags;
+      char*       source_tags;
       T1_Vector*  point;
-      char*       flags;
+      char*       tags;
               
       error = T1_Add_Points( builder, num_points );
       if (error) return error;
 
       point = cur->points + cur->n_points;
-      flags = cur->flags  + cur->n_points;
+      tags = cur->tags  + cur->n_points;
         
       source_point   = point - 2;
-      source_flags   = flags - 2;
+      source_tags   = tags - 2;
 
       cur->n_points += num_points;
 
@@ -1156,7 +1156,7 @@
         do
         {
           *point++ = *source_point--;
-          *flags++ = *source_flags--;
+          *tags++ = *source_tags--;
           num_points--;
         }
         while (num_points > 0);
@@ -1252,7 +1252,7 @@
       vec.y = builder->last.y + dy;
 
       cur->points[cur->n_points] = vec;
-      cur->flags [cur->n_points] = FT_Curve_Tag_On;
+      cur->tags [cur->n_points] = FT_Curve_Tag_On;
 
       builder->last = vec;
     }
@@ -1301,7 +1301,7 @@
       vec.x = builder->last.x + dx;
       vec.y = builder->last.y + dy;
       cur->points[cur->n_points] = vec;
-      cur->flags [cur->n_points] = FT_Curve_Tag_On;
+      cur->tags [cur->n_points] = FT_Curve_Tag_On;
 
       builder->last = vec;
     }
@@ -1326,7 +1326,7 @@
     FT_Outline*  cur = &builder->current;
     T1_Vector    vec;
     T1_Vector*   points;
-    char*        flags;
+    char*        tags;
 
     /* grow buffer if necessary */
     error = T1_Add_Points  ( builder, 3 );
@@ -1336,19 +1336,19 @@
     {
       /* save point */
       points = cur->points + cur->n_points;
-      flags  = cur->flags  + cur->n_points;
+      tags  = cur->tags  + cur->n_points;
 
       vec.x = builder->last.x + dx1;
       vec.y = builder->last.y + dy1;
-      points[0] = vec;  flags[0] = FT_Curve_Tag_Cubic;
+      points[0] = vec;  tags[0] = FT_Curve_Tag_Cubic;
 
       vec.x += dx2;
       vec.y += dy2;
-      points[1] = vec;  flags[1] = FT_Curve_Tag_Cubic;
+      points[1] = vec;  tags[1] = FT_Curve_Tag_Cubic;
 
       vec.x += dx3;
       vec.y += dy3;
-      points[2] = vec;  flags[2] = FT_Curve_Tag_On;
+      points[2] = vec;  tags[2] = FT_Curve_Tag_On;
 
       builder->last = vec;
     }
@@ -1537,10 +1537,10 @@
 
       glyph->root.format = ft_glyph_format_outline;
 
-      glyph->root.outline.outline_flags &= ft_outline_owner;
+      glyph->root.outline.flags &= ft_outline_owner;
       
       if ( size->root.metrics.y_ppem < 24 )
-        glyph->root.outline.outline_flags |= ft_outline_high_precision;
+        glyph->root.outline.flags |= ft_outline_high_precision;
       
       /*
       glyph->root.outline.second_pass    = TRUE;
--- a/src/type1z/t1gload.c
+++ b/src/type1z/t1gload.c
@@ -238,7 +238,7 @@
       if ( REALLOC_ARRAY( base->points, current,
                           builder->max_points, T1_Vector )  ||
   
-           REALLOC_ARRAY( base->flags, current,
+           REALLOC_ARRAY( base->tags, current,
                           builder->max_points, T1_Byte )    )
       {
         builder->error = error;
@@ -246,7 +246,7 @@
       }
     
       outline->points = base->points + increment;
-      outline->flags  = base->flags  + increment;
+      outline->tags  = base->tags  + increment;
     }
     return T1_Err_Ok;
   }
@@ -264,7 +264,7 @@
     if (builder->load_points)
     {
       FT_Vector*  point   = outline->points + outline->n_points;
-      FT_Byte*    control = (FT_Byte*)outline->flags + outline->n_points;
+      FT_Byte*    control = (FT_Byte*)outline->tags + outline->n_points;
       
       point->x = x;
       point->y = y;
@@ -462,7 +462,7 @@
     cur->n_points   = 0;
     cur->n_contours = 0;
     cur->points     = base->points   + base->n_points;
-    cur->flags      = base->flags    + base->n_points;
+    cur->tags      = base->tags    + base->n_points;
     cur->contours   = base->contours + base->n_contours;
 
     error = T1_Parse_CharStrings( decoder,
@@ -489,7 +489,7 @@
     cur->n_points   = 0;
     cur->n_contours = 0;
     cur->points     = base->points   + base->n_points;
-    cur->flags      = base->flags    + base->n_points;
+    cur->tags      = base->tags    + base->n_points;
     cur->contours   = base->contours + base->n_contours;
 
     error = T1_Parse_CharStrings( decoder,
@@ -1275,9 +1275,9 @@
 
       glyph->root.format = ft_glyph_format_outline;
 
-      glyph->root.outline.outline_flags &= ft_outline_owner;
+      glyph->root.outline.flags &= ft_outline_owner;
       if ( size->root.metrics.y_ppem < 24 )
-        glyph->root.outline.outline_flags |= ft_outline_high_precision;
+        glyph->root.outline.flags |= ft_outline_high_precision;
       /*
       glyph->root.outline.second_pass    = TRUE;
       glyph->root.outline.high_precision = ( size->root.metrics.y_ppem < 24 );