shithub: freetype+ttf2subf

Download patch

ref: 2c002e13a74ab89b2ad0305088ed18660d5952ab
parent: 9b15ea341c28fe5ac8dcb77861122b28913d545d
author: Werner Lemberg <[email protected]>
date: Fri Sep 29 17:31:53 EDT 2006

formatting, improving documentation

git/fs: mount .git/fs: mount/attach disallowed
--- a/ChangeLog
+++ b/ChangeLog
@@ -5,37 +5,48 @@
 
 2006-09-28  David Turner  <[email protected]>
 
-        * include/freetype/internal/ftobjs.h, src/truetype/ttobjs.c,
-        src/base/ftobjs.c: fixed a bug in the automatic unpatented
-        hinting support which prevented normal bytecode hinting to
-        work properly
+	Fix a bug in the automatic unpatented hinting support which prevents
+	normal bytecode hinting to work properly.
 
-        * src/autofit/aftypes.h: undefining AF_DEBUG to get rid of
-        traces
+	* include/freetype/internal/ftobjs.h (FT_Face_InternalRec):
+	s/force_autohint/unpatented_hinting/.  Update all callers.
 
+	* src/base/ftobjs.c (FT_Load_Glyph): Updated code.
+
+	* src/autofit/aftypes.h (AF_DEBUG): Undefine to get rid of traces.
+
 2006-09-27  David Turner  <[email protected]>
 
-        * include/freetype/freetype.h: bumping FT_FREETYPE_PATCH to 2
-        for an upcoming 2.2.2 release
+	* include/freetype/freetype.h (FT_FREETYPE_PATCH): Set to 2.
 
-        * include/freetype/ftlcdfil.h, src/freetype/ftlcdfil.c:
-        added a new API to support color filtering of subpixel glyph
-        bitmaps. In default build, the function FT_Library_SetLcdFilter
-        returns FT_Err_Unimplemented_Feature; you need to #define
-        FT_CONFIG_OPTION_SUBPIXEL_RENDERING in ftoption.h to compile
-        the real implementation
 
-        * src/smooth/ftsmooth.c: adding support for sub-pixel color
-        filtering; simplifying a few function calls
+	Add a new API to support color filtering of subpixel glyph bitmaps. 
+	In a default build, the function `FT_Library_SetLcdFilter' returns
+	`FT_Err_Unimplemented_Feature'; you need to #define
+	FT_CONFIG_OPTION_SUBPIXEL_RENDERING in ftoption.h to compile the
+	real implementation.
 
-        * include/freetype/config/ftheader.h: adding FT_LCD_FILTER_H
-        macro that points to <freetype/ftlcdfil.h>
+	* include/freetype/ftlcdfil.h, src/base/ftlcdfil.c: New files.
 
-        * src/base/Jamfile, src/base/rules.mk, vms_make.com: adding
-        'ftlcdfil.c' to the list of compiled source files
+	* include/freetype/internal/ftobjs.h (FT_Bitmap_LcdFilterFunc): New
+	typedef.
+	(FT_LibraryRec) [FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: New members
+	`lcd_filter_weights' and `lcd_filter'.
 
-        * modules.cfg: adding ftlcdfil.c to the list of default base
-        extensions
+	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Remove arguments
+	`hmul' and `vmul'.
+	Handle subpixel rendering.
+	Simplify function.
+	(ft_smooth_render_lcd): Use `FT_RENDER_MODE_LCD'.
+	(ft_smooth_render_lcd_v): Use `FT_RENDER_MODE_LCD_V'.
+
+	* include/freetype/config/ftheader.h (FT_LCD_FILTER_H): New macro,
+	pointing to <freetype/ftlcdfil.h>.
+
+	* src/base/Jamfile (_sources), src/base/rules.mk (BASE_SRC),
+	vms_make.com: Add `ftlcdfil.c' to the list of compiled source files.
+
+	* modules.cfg (BASE_EXTENSIONS): Add ftlcdfil.c.
 
 2006-09-26  David Bustin
 
--- a/include/freetype/config/ftheader.h
+++ b/include/freetype/config/ftheader.h
@@ -88,7 +88,7 @@
   /*    limited to the infamous 8.3 naming rule required by DOS (and       */
   /*    `FT_MULTIPLE_MASTERS_H' is a lot more meaningful than `ftmm.h').   */
   /*                                                                       */
-  /*    The second reason is that is allows for more flexibility in the    */
+  /*    The second reason is that it allows for more flexibility in the    */
   /*    way FreeType 2 is installed on a given system.                     */
   /*                                                                       */
   /*************************************************************************/
@@ -222,7 +222,7 @@
    *   FT_IMAGE_H
    *
    * @description:
-   *   A macro used in #include statements to name the file containing types
+   *   A macro used in #include statements to name the file containing type
    *   definitions related to glyph images (i.e., bitmaps, outlines,
    *   scan-converter parameters).
    *
@@ -282,7 +282,7 @@
    *
    * @description:
    *   A macro used in #include statements to name the file containing the
-   *   API used to manage multiple @FT_Size objects per face.
+   *   API which manages multiple @FT_Size objects per face.
    *
    */
 #define FT_SIZES_H  <freetype/ftsizes.h>
@@ -334,10 +334,9 @@
    *
    * @description:
    *   A macro used in #include statements to name the file containing the
-   *   enumeration values used to identify name strings, languages,
-   *   encodings, etc.  This file really contains a _large_ set of constant
-   *   macro definitions, taken from the TrueType and OpenType
-   *   specifications.
+   *   enumeration values which identify name strings, languages, encodings,
+   *   etc.  This file really contains a _large_ set of constant macro
+   *   definitions, taken from the TrueType and OpenType specifications.
    *
    */
 #define FT_TRUETYPE_IDS_H  <freetype/ttnameid.h>
@@ -363,7 +362,7 @@
    *
    * @description:
    *   A macro used in #include statements to name the file containing the
-   *   definitions of TrueType four-byte `tags' used to identify blocks in
+   *   definitions of TrueType four-byte `tags' which identify blocks in
    *   SFNT-based font formats (i.e., TrueType and OpenType).
    *
    */
@@ -377,7 +376,8 @@
    *
    * @description:
    *   A macro used in #include statements to name the file containing the
-   *   definitions of an API to access BDF-specific strings from a face.
+   *   definitions of an API which accesses BDF-specific strings from a
+   *   face.
    *
    */
 #define FT_BDF_H  <freetype/ftbdf.h>
@@ -390,7 +390,7 @@
    *
    * @description:
    *   A macro used in #include statements to name the file containing the
-   *   definitions of an API to support for gzip-compressed files.
+   *   definitions of an API which supports gzip-compressed files.
    *
    */
 #define FT_GZIP_H  <freetype/ftgzip.h>
@@ -403,7 +403,7 @@
    *
    * @description:
    *   A macro used in #include statements to name the file containing the
-   *   definitions of an API to support for LZW-compressed files.
+   *   definitions of an API which supports LZW-compressed files.
    *
    */
 #define FT_LZW_H  <freetype/ftlzw.h>
@@ -416,7 +416,7 @@
    *
    * @description:
    *   A macro used in #include statements to name the file containing the
-   *   definitions of an API to support Windows FNT files.
+   *   definitions of an API which supports Windows FNT files.
    *
    */
 #define FT_WINFONTS_H   <freetype/ftwinfnt.h>
@@ -484,7 +484,7 @@
    *   `glyph image' API of the FreeType 2 cache sub-system.
    *
    *   It is used to define a cache for @FT_Glyph elements.  You can also
-   *   see the API defined in @FT_CACHE_SMALL_BITMAPS_H if you only need to
+   *   use the API defined in @FT_CACHE_SMALL_BITMAPS_H if you only need to
    *   store small glyph bitmaps, as it will use less memory.
    *
    *   This macro is deprecated.  Simply include @FT_CACHE_H to have all
@@ -568,7 +568,7 @@
    *
    * @description:
    *   A macro used in #include statements to name the file containing the
-   *   optional FreeType 2 API used to access embedded `name' strings in
+   *   optional FreeType 2 API which accesses embedded `name' strings in
    *   SFNT-based font formats (i.e., TrueType and OpenType).
    *
    */
@@ -582,7 +582,7 @@
    *
    * @description:
    *   A macro used in #include statements to name the file containing the
-   *   optional FreeType 2 API used to validate OpenType tables (BASE, GDEF,
+   *   optional FreeType 2 API which validates OpenType tables (BASE, GDEF,
    *   GPOS, GSUB, JSTF).
    *
    */
@@ -596,7 +596,7 @@
    *
    * @description:
    *   A macro used in #include statements to name the file containing the
-   *   optional FreeType 2 API used to validate TrueTypeGX/AAT tables (feat,
+   *   optional FreeType 2 API which validates TrueTypeGX/AAT tables (feat,
    *   mort, morx, bsln, just, kern, opbd, trak, prop).
    *
    */
@@ -610,7 +610,7 @@
    *
    * @description:
    *   A macro used in #include statements to name the file containing the
-   *   FreeType 2 API used to access PFR-specific data.
+   *   FreeType 2 API which accesses PFR-specific data.
    *
    */
 #define FT_PFR_H  <freetype/ftpfr.h>
@@ -623,7 +623,7 @@
    *
    * @description:
    *   A macro used in #include statements to name the file containing the
-   *   FreeType 2 API used to stroke outline path.
+   *   FreeType 2 API which provides functions to stroke outline paths.
    */
 #define FT_STROKER_H  <freetype/ftstroke.h>
 
@@ -635,7 +635,7 @@
    *
    * @description:
    *   A macro used in #include statements to name the file containing the
-   *   FreeType 2 API used to perform artificial obliquing and emboldening.
+   *   FreeType 2 API which performs artificial obliquing and emboldening.
    */
 #define FT_SYNTHESIS_H  <freetype/ftsynth.h>
 
@@ -647,7 +647,7 @@
    *
    * @description:
    *   A macro used in #include statements to name the file containing the
-   *   FreeType 2 API used to provide functions specific to the XFree86 and
+   *   FreeType 2 API which provides functions specific to the XFree86 and
    *   X.Org X11 servers.
    */
 #define FT_XFREE86_H  <freetype/ftxf86.h>
@@ -660,11 +660,12 @@
    *
    * @description:
    *   A macro used in #include statements to name the file containing the
-   *   FreeType 2 API used to perform trigonometric computations (e.g.,
+   *   FreeType 2 API which performs trigonometric computations (e.g.,
    *   cosines and arc tangents).
    */
 #define FT_TRIGONOMETRY_H  <freetype/fttrigon.h>
 
+
   /*************************************************************************
    *
    * @macro:
@@ -672,7 +673,7 @@
    *
    * @description:
    *   A macro used in #include statements to name the file containing the
-   *   FreeType 2 API used to perform color filtering for subpixel rendering
+   *   FreeType 2 API which performs color filtering for subpixel rendering.
    */
 #define FT_LCD_FILTER_H    <freetype/ftlcdfil.h>
 
--- a/include/freetype/ftlcdfil.h
+++ b/include/freetype/ftlcdfil.h
@@ -1,3 +1,22 @@
+/***************************************************************************/
+/*                                                                         */
+/*  ftlcdfil.h                                                             */
+/*                                                                         */
+/*    FreeType API for color filtering of subpixel bitmap glyphs           */
+/*    (specification).                                                     */
+/*                                                                         */
+/*  Copyright 2006 by                                                      */
+/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
+/*                                                                         */
+/*  This file is part of the FreeType project, and may only be used,       */
+/*  modified, and distributed under the terms of the FreeType project      */
+/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
+/*  this file you indicate that you have read the license and              */
+/*  understand and accept it fully.                                        */
+/*                                                                         */
+/***************************************************************************/
+
+
 #ifndef __FT_LCD_FILTER_H__
 #define __FT_LCD_FILTER_H__
 
@@ -4,86 +23,103 @@
 #include <ft2build.h>
 #include FT_FREETYPE_H
 
+
 FT_BEGIN_HEADER
 
- /**
-  * @func: FT_Library_SetLcdFilter
-  *
-  * @description:
-  *   this function is used to apply color filtering to LCD decimated
-  *   bitmaps, like the ones used when calling @FT_Render_Glyph with
-  *   @FT_RENDER_MODE_LCD or @FT_RENDER_MODE_LCD_V.
-  *
-  * @input:
-  *   library  :: handle to target library instance
-  *
-  *   filter_weights :: a pointer to an array of 5 bytes corresponding
-  *                     to the weights of a 5-tap FIR filter. Each
-  *                     weight must be positive, and their sum should
-  *                     be at least 256 to avoid loss of darkness
-  *                     in the rendered glyphs. The sum can be greater
-  *                     than 256 to darken the glyphs (el-cheapo gamma)
-  *
-  *                     you can use @FT_LCD_FILTER_NONE here to disable
-  *                     this feature, or @FT_LCD_FILTER_DEFAULT to use
-  *                     a default filter that should work well on most
-  *                     LCD screens.
-  *
-  * @return:
-  *   error code. 0 means success
-  *
-  * @note:
-  *   this feature is always disabled by default. Clients must make an
-  *   explicit call to this function with a 'filter_weights' value other
-  *   than @FT_LCD_FILTER_NONE in order to enable it.
-  *
-  *   due to *PATENTS* covering subpixel rendering, this function will
-  *   not do anything except return @FT_Err_Unimplemented_Feature if the
-  *   configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING is not
-  *   defined in your build of the library, which should correspond
-  *   to all default builds of the library
-  *
-  *   the filter affects glyph bitmaps rendered through
-  *   @FT_Render_Glyph, @FT_Glyph_Get_Bitmap, @FT_Load_Glyph and
-  *   @FT_Load_Char.
-  *
-  *   It does *not* affect the output of @FT_Outline_Render
-  *   and @FT_Outline_Get_Bitmap.
-  *
-  *   if this feature is activated, the dimensions of LCD glyph bitmaps
-  *   will be either larger or taller than the dimensions of the corresponding
-  *   outline with regards to the pixel grid. For example, for @FT_RENDER_MODE_LCD,
-  *   the filter adds up to 3 pixels to the left, and up to 3 pixels to the right.
-  *
-  *   the bitmap offset values are adjusted correctly, so clients shouldn't need
-  *   to modify thei layout / glyph positioning code when enabling the filter.
-  */
+
+
+  /**************************************************************************
+   *
+   * @func:
+   *   FT_Library_SetLcdFilter
+   *
+   * @description:
+   *   This function is used to apply color filtering to LCD decimated
+   *   bitmaps, like the ones used when calling @FT_Render_Glyph with
+   *   @FT_RENDER_MODE_LCD or @FT_RENDER_MODE_LCD_V.
+   *
+   * @input:
+   *   library ::
+   *     A handle to the target library instance.
+   *
+   *   filter_weights ::
+   *     A pointer to an array of 5 bytes corresponding to the weights of a
+   *     5-tap FIR filter.  Each weight must be positive, and their sum
+   *     should be at least 256 to avoid loss of darkness in the rendered
+   *     glyphs.  The sum can be greater than 256 to darken the glyphs
+   *     (`el-cheapo gamma').
+   *
+   *     You can use @FT_LCD_FILTER_NONE here to disable this feature, or
+   *     @FT_LCD_FILTER_DEFAULT to use a default filter that should work
+   *     well on most LCD screens.
+   *
+   * @return:
+   *   FreeType error code.  0 means success.
+   *
+   * @note:
+   *   This feature is always disabled by default.  Clients must make an
+   *   explicit call to this function with a `filter_weights' value other
+   *   than @FT_LCD_FILTER_NONE in order to enable it.
+   *
+   *   Due to *PATENTS* covering subpixel rendering, this function doesn't
+   *   do anything except returning @FT_Err_Unimplemented_Feature if the
+   *   configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING is not
+   *   defined in your build of the library, which should correspond to all
+   *   default builds of the library.
+   *
+   *   The filter affects glyph bitmaps rendered through FT_Render_Glyph,
+   *   @@FT_Glyph_Get_Bitmap, @FT_Load_Glyph, and FT_Load_Char.
+   *
+   *   It does _not_ affect the output of @FT_Outline_Render and
+   *   @FT_Outline_Get_Bitmap.
+   *
+   *   If this feature is activated, the dimensions of LCD glyph bitmaps are
+   *   either larger or taller than the dimensions of the corresponding
+   *   outline with regards to the pixel grid.  For example, for
+   *   @FT_RENDER_MODE_LCD, the filter adds up to 3 pixels to the left, and
+   *   up to 3 pixels to the right.
+   *
+   *   The bitmap offset values are adjusted correctly, so clients shouldn't
+   *   need to modify their layout and glyph positioning code when enabling
+   *   the filter.
+   *
+   */
   FT_EXPORT( FT_Error )
-  FT_Library_SetLcdFilter( FT_Library       library,
-                           const FT_Byte*   filter_weights );
+  FT_Library_SetLcdFilter( FT_Library      library,
+                           const FT_Byte*  filter_weights );
 
 
- /**
-  * @enum: FT_LCD_FILTER_XXX
-  *
-  * @desc: a list of constants correspond to useful lcd filter settings to
-  *        be used when calling @FT_Library_SetLcdFilter
-  *
-  * @values:
-  *    FT_LCD_FILTER_NONE :: the value NULL is reserved to indicate that
-  *                          LCD color filtering should be disabled.
-  *
-  *    FT_LCD_FILTER_DEFAULT ::
-  *       this value is reserved to indicate a default FIR filter that
-  *       should work well on most LCD screen. For the really curious,
-  *       it corresponds to the array 0x10, 0x40, 0x70, 0x40, 0x10
-  */
-#define  FT_LCD_FILTER_NONE        ((const FT_Byte*)NULL )
 
-#define  FT_LCD_FILTER_DEFAULT     ((const FT_Byte*)(void*)(ft_ptrdiff_t)1)
+  /**************************************************************************
+   *
+   * @enum:
+   *   FT_LCD_FILTER_XXX
+   *
+   * @description:
+   *   A list of constants which correspond to useful lcd filter settings
+   *   for the @FT_Library_SetLcdFilter function.
+   *
+   * @values:
+   *   FT_LCD_FILTER_NONE ::
+   *     The value NULL is reserved to indicate that LCD color filtering
+   *     should be disabled.
+   *
+   *   FT_LCD_FILTER_DEFAULT ::
+   *     This value is reserved to indicate a default FIR filter that should
+   *     work well on most LCD screen.  It corresponds to the array 0x10,
+   *     0x40, 0x70, 0x40, 0x10.
+   *
+   */
+#define FT_LCD_FILTER_NONE     ( (const FT_Byte*)NULL )
+ 
+#define FT_LCD_FILTER_DEFAULT  ( (const FT_Byte*)(void*)(ft_ptrdiff_t)1 )
 
-/* */
+  /* */
 
+
 FT_END_HEADER
 
 #endif /* __FT_LCD_FILTER_H__ */
+
+
+/* END */
--- a/include/freetype/internal/ftobjs.h
+++ b/include/freetype/internal/ftobjs.h
@@ -214,8 +214,8 @@
   /*    unpatented_hinting ::                                              */
   /*      This boolean flag instructs the glyph loader that this font      */
   /*      can only be loaded through the unpatented bytecode interpreter.  */
-  /*      in this case, the auto-hinter will never be called for it.       */
-  /*      except if you use FT_LOAD_FORCE_AUTOHINT                         */
+  /*      In that case, the auto-hinter is never called for it, except if  */
+  /*      you use FT_LOAD_FORCE_AUTOHINT.                                  */
   /*                                                                       */
   typedef struct  FT_Face_InternalRec_
   {
@@ -638,6 +638,7 @@
   typedef void  (*FT_Bitmap_LcdFilterFunc)( FT_Bitmap*      bitmap,
                                             FT_Render_Mode  render_mode,
                                             FT_Byte*        weights );
+
 
   /*************************************************************************/
   /*                                                                       */
--- a/src/base/Jamfile
+++ b/src/base/Jamfile
@@ -1,6 +1,6 @@
 # FreeType 2 src/base Jamfile
 #
-# Copyright 2001, 2002, 2003, 2004, 2005 by
+# Copyright 2001, 2002, 2003, 2004, 2005, 2006 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
--- a/src/base/ftlcdfil.c
+++ b/src/base/ftlcdfil.c
@@ -1,80 +1,103 @@
+/***************************************************************************/
+/*                                                                         */
+/*  ftlcdfil.c                                                             */
+/*                                                                         */
+/*    FreeType API for color filtering of subpixel bitmap glyphs (body).   */
+/*                                                                         */
+/*  Copyright 2006 by                                                      */
+/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
+/*                                                                         */
+/*  This file is part of the FreeType project, and may only be used,       */
+/*  modified, and distributed under the terms of the FreeType project      */
+/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
+/*  this file you indicate that you have read the license and              */
+/*  understand and accept it fully.                                        */
+/*                                                                         */
+/***************************************************************************/
+
+
 #include <ft2build.h>
 #include FT_LCD_FILTER_H
 #include FT_IMAGE_H
 #include FT_INTERNAL_OBJECTS_H
 
+
 #ifdef FT_CONFIG_OPTION_SUBPIXEL_RENDERING
 
- /* this function will be invoked from within the smooth
-  * rasterizer
-  */
+  /* The smooth rasterizer invokes this function. */
   static void
   _ft_lcd_filter( FT_Bitmap*      bitmap,
                   FT_Render_Mode  mode,
                   FT_Byte*        weights )
   {
-    FT_UInt   width  = (FT_UInt) bitmap->width;
-    FT_UInt   height = (FT_UInt) bitmap->rows;
+    FT_UInt  width  = (FT_UInt)bitmap->width;
+    FT_UInt  height = (FT_UInt)bitmap->rows;
 
+
     /* horizontal in-place FIR filter */
     if ( mode == FT_RENDER_MODE_LCD && width >= 4 )
     {
-      FT_Byte*   line = bitmap->buffer;
+      FT_Byte*  line = bitmap->buffer;
 
+
       for ( ; height > 0; height--, line += bitmap->pitch )
       {
-        FT_UInt   fir[5];
-        FT_UInt   val1, xx;
+        FT_UInt  fir[5];
+        FT_UInt  val1, xx;
 
+
         val1   = line[0];
-        fir[0] = weights[2]*val1;
-        fir[1] = weights[3]*val1;
-        fir[2] = weights[4]*val1;
+        fir[0] = weights[2] * val1;
+        fir[1] = weights[3] * val1;
+        fir[2] = weights[4] * val1;
         fir[3] = 0;
         fir[4] = 0;
 
-
         val1    = line[1];
-        fir[0] += weights[1]*val1;
-        fir[1] += weights[2]*val1;
-        fir[2] += weights[3]*val1;
-        fir[3] += weights[4]*val1;
+        fir[0] += weights[1] * val1;
+        fir[1] += weights[2] * val1;
+        fir[2] += weights[3] * val1;
+        fir[3] += weights[4] * val1;
 
         for ( xx = 2; xx < width; xx++ )
         {
           FT_UInt  val, pix;
 
+
           val    = line[xx];
-          pix    = fir[0] + weights[0]*val;
-          fir[0] = fir[1] + weights[1]*val;
-          fir[1] = fir[2] + weights[2]*val;
-          fir[2] = fir[3] + weights[3]*val;
-          fir[3] =          weights[4]*val;
+          pix    = fir[0] + weights[0] * val;
+          fir[0] = fir[1] + weights[1] * val;
+          fir[1] = fir[2] + weights[2] * val;
+          fir[2] = fir[3] + weights[3] * val;
+          fir[3] =          weights[4] * val;
 
-          pix      >>= 8;
-          pix       |= -(pix >> 8);
-          line[xx-2] = (FT_Byte)pix;
+          pix        >>= 8;
+          pix         |= -( pix >> 8 );
+          line[xx - 2] = (FT_Byte)pix;
         }
 
         {
           FT_UInt  pix;
 
-          pix        = fir[0] >> 8;
-          pix       |= -(pix >> 8);
-          line[xx-2] = (FT_Byte)pix;
 
-          pix        = fir[1] >> 8;
-          pix       |= -(pix >> 8);
-          line[xx-1] = (FT_Byte)pix;
+          pix          = fir[0] >> 8;
+          pix         |= -( pix >> 8 );
+          line[xx - 2] = (FT_Byte)pix;
+
+          pix          = fir[1] >> 8;
+          pix         |= -( pix >> 8 );
+          line[xx - 1] = (FT_Byte)pix;
         }
       }
     }
+
     /* vertical in-place FIR filter */
     else if ( mode == FT_RENDER_MODE_LCD_V && height >= 4 )
     {
-      FT_Byte*   column = bitmap->buffer;
-      FT_Int     pitch  = bitmap->pitch;
+      FT_Byte*  column = bitmap->buffer;
+      FT_Int    pitch  = bitmap->pitch;
 
+
       for ( ; width > 0; width--, column++ )
       {
         FT_Byte*  col = column;
@@ -81,19 +104,20 @@
         FT_UInt   fir[5];
         FT_UInt   val1, yy;
 
+
         val1   = col[0];
-        fir[0] = weights[2]*val1;
-        fir[1] = weights[3]*val1;
-        fir[2] = weights[4]*val1;
+        fir[0] = weights[2] * val1;
+        fir[1] = weights[3] * val1;
+        fir[2] = weights[4] * val1;
         fir[3] = 0;
         fir[4] = 0;
         col   += pitch;
 
         val1    = col[0];
-        fir[0] += weights[1]*val1;
-        fir[1] += weights[2]*val1;
-        fir[2] += weights[3]*val1;
-        fir[3] += weights[4]*val1;
+        fir[0] += weights[1] * val1;
+        fir[1] += weights[2] * val1;
+        fir[2] += weights[3] * val1;
+        fir[3] += weights[4] * val1;
         col    += pitch;
 
         for ( yy = 2; yy < height; yy++ )
@@ -100,28 +124,30 @@
         {
           FT_UInt  val, pix;
 
+
           val    = col[0];
-          pix    = fir[0] + weights[0]*val;
-          fir[0] = fir[1] + weights[1]*val;
-          fir[1] = fir[2] + weights[2]*val;
-          fir[2] = fir[3] + weights[3]*val;
-          fir[3] =          weights[4]*val;
+          pix    = fir[0] + weights[0] * val;
+          fir[0] = fir[1] + weights[1] * val;
+          fir[1] = fir[2] + weights[2] * val;
+          fir[2] = fir[3] + weights[3] * val;
+          fir[3] =          weights[4] * val;
 
-          pix         >>= 8;
-          pix          |= -(pix >> 8);
-          col[-2*pitch] = (FT_Byte)pix;
-          col          += pitch;
+          pix           >>= 8;
+          pix            |= -( pix >> 8 );
+          col[-2 * pitch] = (FT_Byte)pix;
+          col            += pitch;
         }
 
         {
           FT_UInt  pix;
 
-          pix           = fir[0] >> 8;
-          pix          |= -(pix >> 8);
-          col[-2*pitch] = (FT_Byte)pix;
 
+          pix             = fir[0] >> 8;
+          pix            |= -( pix >> 8 );
+          col[-2 * pitch] = (FT_Byte)pix;
+
           pix         = fir[1] >> 8;
-          pix        |= -(pix >> 8);
+          pix        |= -( pix >> 8 );
           col[-pitch] = (FT_Byte)pix;
         }
       }
@@ -130,11 +156,12 @@
 
 
   FT_EXPORT( FT_Error )
-  FT_Library_SetLcdFilter( FT_Library       library,
-                           const FT_Byte*   filter_weights )
+  FT_Library_SetLcdFilter( FT_Library      library,
+                           const FT_Byte*  filter_weights )
   {
     static const FT_Byte  default_filter[5] = { 0x10, 0x40, 0x70, 0x40, 0x10 };
 
+
     if ( library == NULL )
       return FT_Err_Invalid_Argument;
 
@@ -153,17 +180,19 @@
     return 0;
   }
 
-#else
+#else /* !FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
 
   FT_EXPORT( FT_Error )
-  FT_Library_SetLcdFilter( FT_Library       library,
-                           const FT_Byte*   filter_weights )
+  FT_Library_SetLcdFilter( FT_Library      library,
+                           const FT_Byte*  filter_weights )
   {
-    FT_UNUSED(library);
-    FT_UNUSED(filter_weights);
+    FT_UNUSED( library );
+    FT_UNUSED( filter_weights );
 
     return FT_Err_Unimplemented_Feature;
   }
 
+#endif /* !FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
 
-#endif
+
+/* END */
--- a/src/smooth/ftsmooth.c
+++ b/src/smooth/ftsmooth.c
@@ -106,8 +106,8 @@
     FT_UInt      width, height, height_org, width_org, pitch;
     FT_Bitmap*   bitmap;
     FT_Memory    memory;
-    FT_Int       hmul = (mode == FT_RENDER_MODE_LCD);
-    FT_Int       vmul = (mode == FT_RENDER_MODE_LCD_V);
+    FT_Int       hmul = mode == FT_RENDER_MODE_LCD;
+    FT_Int       vmul = mode == FT_RENDER_MODE_LCD_V;
     FT_Pos       x_shift, y_shift, x_left, y_top;
 
     FT_Raster_Params  params;
@@ -170,6 +170,7 @@
     y_top   = (FT_Int)( cbox.yMax >> 6 );
 
 #ifdef FT_CONFIG_OPTION_SUBPIXEL_RENDERING
+
     if ( slot->library->lcd_filter )
     {
       if ( hmul )
@@ -186,6 +187,7 @@
         y_top   += 1;
       }
     }
+
 #endif
 
     bitmap->pixel_mode = FT_PIXEL_MODE_GRAY;
--- a/vms_make.com
+++ b/vms_make.com
@@ -1,6 +1,6 @@
 $! make Freetype2 under OpenVMS
 $!
-$! Copyright 2003, 2004 by
+$! Copyright 2003, 2004, 2006 by
 $! David Turner, Robert Wilhelm, and Werner Lemberg.
 $!
 $! This file is part of the FreeType project, and may only be used, modified,