shithub: freetype+ttf2subf

Download patch

ref: e4b32a5dc5517285dbecf9e058185a9d36712fbe
parent: dd33561ecb0cb0cf7459e49d11d53a55199f3891
author: Werner Lemberg <[email protected]>
date: Tue Oct 31 15:42:18 EST 2000

Removing trailing whitespace.

git/fs: mount .git/fs: mount/attach disallowed
--- a/CHANGES
+++ b/CHANGES
@@ -28,7 +28,7 @@
 
   - fixed two memory leaks:
        - the memory manager (16 bytes) isn't released in FT_Done_FreeType !!
-       
+
        - using custom input streams, the copy of the original stream
          was never released
 
@@ -42,7 +42,7 @@
 BETA-8 (RELEASE CANDIDATE) CHANGES
 
   - deactivated the trueType bytecode interpreter by default
-  
+
   - deactivated the "src/type1" font driver. Now "src/type1z" is
     used by default..
 
@@ -49,7 +49,7 @@
   - updates to the build system. We now compile the library correctly
     under Unix system through "configure" which is automatically called
     on the first "make" invocation.
-    
+
   - added the auto-hinting module !!. Fixing some bugs here and there..
 
   - found some bugs in the composite loader (seac) of the Type1-based
@@ -59,7 +59,7 @@
     updated all relevant files..
 
   - found a memory leak in the "type1" driver
-  
+
   - incorporated Tom's patches to support flex operators correctly
     in OpenType/CFF fonts.. Now all I need is to support pure CFF
     and CEF fonts to be done with this driver.. :-)
@@ -67,24 +67,24 @@
   - added the Windows FNT/FON driver in "src/winfonts". For now,
     it always "simulates" a Unicode charmap, so it shouldn't be
     considered completed right now..
-    
+
     It's there to be more a proof of concept than anything else
     anyway. The driver is a single C source file, that compiles
     to 3 Kb of code..
-    
+
     I'm still working on the PCF/BDF drivers.. but I'm too lazy
     to finish them now..
 
 
   - CHANGES TO THE HIGH-LEVEL API
-  
+
     o FT_Get_Kerning has a new parameter that allows you to select
       the coordinates of the kerning vector ( font units, scaled,
       scaled + grid-fitted ).
-      
+
     o the outline functions are now in <freetype/ftoutln.h> and not
       part of <freetype/freetype.h> anymore
-      
+
     o <freetype/ftmodule.h> now contains declarations for
        FT_New_Library, FT_Done_Library, FT_Add_Default_Modules
 
@@ -96,9 +96,9 @@
       (i.e. corresponds to render_mode == 0 == ft_render_mode_normal).
       To generate a monochrome bitmap, use ft_render_mode_mono, or the
       FT_LOAD_MONOCHROME flag in FT_Load_Glyph/FT_Load_Char.
-      
+
       FT_LOAD_ANTI_ALIAS is still defined, but values to 0.
-      
+
     o <freetype/freetype.h> now include <freetype/config/ftconfig.h>,
       solving a few headaches :-)
 
@@ -107,7 +107,7 @@
 
 
   - CHANGES TO THE "ftglyph.h" API
-  
+
     This API has been severely modified in order to make it simpler,
     clearer, and more efficient. It certainly now looks like a real
     "glyph factory" object, and allows client applications to manage
@@ -121,9 +121,9 @@
   - cleaned up source code in order to avoid two functions with the
     same name. Also changed the names of the files in "type1z" from
     "t1XXXX" to "z1XXXX" in order to avoid any conflicts.
-    
+
     "make multi" now works well :-)
-    
+
     Also removed the use of "cidafm" for now, even if the source files
     are still there. This functionality will certainly go into a specific
     module..
@@ -130,50 +130,50 @@
 
 
 
-  - ADDED SUPPORT FOR THE AUTO-HINTER    
-  
+  - ADDED SUPPORT FOR THE AUTO-HINTER
+
     It works :-) I have a demo program which simply is a copy of "ftview"
     that does a FT_Add_Module( library, &autohinter_module_class ) after
     library initialisation, and Type 1 & OpenType/CFF fonts are now hinted.
-    
+
     CID fonts are not hinted, as they include no charmap and the auto-hinter
     doesn't include "generic" global metrics computations yet..
-    
+
     Now, I need to release this thing to the FreeType 2 source..
 
 
-  
-    
 
+
+
   - CHANGES TO THE RENDERER MODULES
-  
+
     the monochrome and smooth renderers are now in two distinct directories,
     namely "src/raster1" and "src/smooth". Note that the old "src/renderer"
     is now gone..
-    
+
     I ditched the 5-gray-levels renderers. Basically, it involved a simple
     #define toggle in 'src/raster1/ftraster.c'
-    
+
     FT_Render_Glyph, FT_Outline_Render & FT_Outline_Get_Bitmap now select
     the best renderer available, depending on render mode. If the current
     renderer for a given glyph image format isn't capable of supporting
     the render mode, another one will be found in the library's list.
-    
+
     This means that client applications do not need to switch or set the
     renderers themselves (as in the latest change), they'll get what they
     want automatically... At last..
-    
+
     Changed the demo programs accordingly..
-    
-    
 
+
+
   - MAJOR INTERNAL REDESIGN:
-  
+
     A lot of internal modifications have been performed lately on the
     source in order to provide the following enhancements:
-    
+
       - more generic module support:
-      
+
         The FT_Module type is now defined to represent a handle to a given
         module. The file <freetype/ftmodule.h> contains the FT_Module_Class
         definition, as well as the module-loading public API
@@ -187,10 +187,10 @@
 
         The FT_Renderer type is a pointer to a module used to perform various
         operations on glyph image.
-        
+
         Each renderer is capable of handling images in a single format
         (e.g. ft_glyph_format_outline). Its functions are used to:
-        
+
            - transform an glyph image
            - render a glyph image into a bitmap
            - return the control box (dimensions) of a given glyph image
@@ -199,16 +199,16 @@
         The scan converters "ftraster.c" and "ftgrays.c" have been moved
         to the new directory "src/renderer", and are used to provide two
         default renderer modules.
-        
+
         One corresponds to the "standard" scan-converter, the other to the
         "smooth" one.
-        
+
         The current renderer can be set through the new function
         FT_Set_Renderer.
-        
+
         The old raster-related function FT_Set_Raster, FT_Get_Raster and
         FT_Set_Raster_Mode have now disappeared, in favor of the new:
-        
+
            FT_Get_Renderer
            FT_Set_Renderer
 
@@ -223,7 +223,7 @@
         A new internal object, called a 'glyph loader' has been introduced
         in the base layer. It is used by all scalable format font drivers
         to load glyphs and composites.
-        
+
         This object has been created to reduce the code size of each driver,
         as each one of them basically re-implemented its functionality.
 
@@ -236,20 +236,20 @@
 
         In order to support extended features (see below), the FT_GlyphSlot
         structure has a few new fields:
-        
+
            linearHoriAdvance:  this field gives the linearly scaled (i.e.
                                scaled but unhinted) advance width for the glyph,
                                expressed as a 16.16 fixed pixel value. This
                                is useful to perform WYSIWYG text.
-                               
+
            linearVertAdvance:  this field gives the linearly scaled advance
                                height for the glyph (relevant in vertical glyph
                                layouts only). This is useful to perform
-                               WYSIWYG text.                               
+                               WYSIWYG text.
 
         Note that the two above field replace the removed "metrics2" field
         in the glyph slot.
-        
+
            advance:   this field is a vector that gives the transformed
                       advance for the glyph. By default, it corresponds
                       to the advance width, unless FT_LOAD_VERTICAL_LAYOUT
@@ -261,7 +261,7 @@
                         when the "format" field is set to
                         "ft_glyph_format_bitmap", for example, after calling
                         the new function FT_Render_Glyph.
-                        
+
            bitmap_top:  this field gives the distance in integer pixels from
                         the current pen position (located on the baseline) to
                         the top-most pixel of the glyph image WHEN IT IS A
@@ -275,7 +275,7 @@
 
         Most of the functionality found in <freetype/ftglyph.h> has been
         moved to the core library. Hence, the following:
-        
+
           - a transform can be specified for a face through FT_Set_Transform.
             this transform is applied by FT_Load_Glyph to scalable glyph images
             (i.e. NOT TO BITMAPS) before the function returns, unless the
@@ -307,7 +307,7 @@
 
   - bug-fixed the OpenType/CFF parser. It now loads and displays my two
     fonts nicely, but I'm pretty certain that more testing is needed :-)
-    
+
   - fixed the crummy Type 1 hinter, it now handles accented characters
     correctly (well, the accent is not always well placed, but that's
     another problem..)
@@ -338,7 +338,7 @@
   - added support for Multiple Master fonts in "type1z". There is also
     a new file named <freetype/ftmm.h> which defines functions to
     manage them from client applications.
-    
+
     The new file "src/base/ftmm.c" is also optional to the engine..
 
   - various formatting changes (e.g. EXPORT_DEF -> FT_EXPORT_DEF) +
--- a/INSTALL
+++ b/INSTALL
@@ -11,7 +11,7 @@
 
 
   Unix (+GNU Make):
-     
+
      - make  (don't worry, this will invoke a configure script)
      - make
 
@@ -22,8 +22,8 @@
      - make
 
 
-  Windows + gcc + GNU Make:     
-     
+  Windows + gcc + GNU Make:
+
      - make
      - make
 
@@ -30,13 +30,12 @@
   Windows + Visual C++ + GNU Make:
 
      - make setup visualc
-     - make     
-   
+     - make
+
   Windows + Win32-LCC + GNU Make:
-  
+
      - make setup lcc
      - make
-  
+
   etc...
-  
 
--- a/builds/compiler/unix-lcc.mk
+++ b/builds/compiler/unix-lcc.mk
@@ -70,7 +70,7 @@
 #
 #  LCC is pure ANSI anyway!
 #
-#  the "-A" flag simply increments verbosity about non ANSI code 
+#  the "-A" flag simply increments verbosity about non ANSI code
 #
 ANSIFLAGS := -A
 
@@ -82,5 +82,5 @@
                   $(NO_OUTPUT)
 endif
 LINK_LIBRARY = $(AR) -r $@ $(OBJECTS_LIST)
-                    
+
 # EOF
--- a/builds/compiler/win-lcc.mk
+++ b/builds/compiler/win-lcc.mk
@@ -75,7 +75,7 @@
 
 # library linking
 #
-#CLEAN_LIBRARY := 
+#CLEAN_LIBRARY :=
 LINK_LIBRARY = lcclib /out:$(subst $(SEP),\\,$@) $(subst $(SEP),\\,$(OBJECTS_LIST))
-                    
+
 # EOF
--- a/builds/cygwin/configure.in
+++ b/builds/cygwin/configure.in
@@ -79,7 +79,7 @@
 
 AM_PROG_LIBTOOL
 
-dnl create the CygWin-specific sub-Makefile `builds/cygwin/cygwin-def.mk' 
+dnl create the CygWin-specific sub-Makefile `builds/cygwin/cygwin-def.mk'
 dnl and 'builds/cygwin/cygwin-cc.mk' that will be used by the build system
 dnl
 AC_OUTPUT(cygwin-cc.mk:cygwin-cc.in cygwin-def.mk:cygwin-def.in)
--- a/builds/cygwin/cygwin.mk
+++ b/builds/cygwin/cygwin.mk
@@ -30,13 +30,13 @@
   distclean_project: distclean_project_cygwin
 
 
-  # This final rule is used to link all object files into a single library. 
+  # This final rule is used to link all object files into a single library.
   # this is compiler-specific
   #
   $(PROJECT_LIBRARY): $(OBJECTS_LIST)
-  ifdef CLEAN_LIBRARY  
+  ifdef CLEAN_LIBRARY
 	  -$(CLEAN_LIBRARY) $(NO_OUTPUT)
-  endif          
+  endif
 	  $(LINK_LIBRARY)
 
 endif
--- a/builds/cygwin/detect.mk
+++ b/builds/cygwin/detect.mk
@@ -20,7 +20,7 @@
   # work...
   #
   ifeq ($(OS),Windows_NT)
-    
+
     # Check if we are running on a CygWin system by checking the OSTYPE
     # variable.
     ifeq ($(OSTYPE),cygwin)
--- a/builds/cygwin/ftsystem.c
+++ b/builds/cygwin/ftsystem.c
@@ -194,7 +194,7 @@
   void  ft_close_stream( FT_Stream  stream )
   {
     munmap( (MUNMAP_ARG_CAST)stream->descriptor.pointer, stream->size );
-        
+
     stream->descriptor.pointer = NULL;
     stream->size               = 0;
     stream->base               = 0;
@@ -243,7 +243,7 @@
       FT_ERROR(( " could not `fstat' file `%s'\n", filepathname ));
       goto Fail_Map;
     }
-      
+
     stream->size = stat_buf.st_size;
     stream->pos  = 0;
     stream->base = (unsigned char *)mmap( NULL,
@@ -264,16 +264,16 @@
 
     stream->descriptor.pointer = stream->base;
     stream->pathname.pointer   = (char*)filepathname;
-    
+
     stream->close = ft_close_stream;
     stream->read  = 0;
-    
+
     FT_TRACE1(( "FT_New_Stream:" ));
     FT_TRACE1(( " opened `%s' (%d bytes) successfully\n",
                 filepathname, stream->size ));
 
     return FT_Err_Ok;
-    
+
   Fail_Map:
     close( file );
 
@@ -280,7 +280,7 @@
     stream->base = NULL;
     stream->size = 0;
     stream->pos  = 0;
-    
+
     return FT_Err_Cannot_Open_Stream;
   }
 
@@ -299,7 +299,7 @@
   FT_EXPORT_FUNC( FT_Memory )  FT_New_Memory( void )
   {
     FT_Memory  memory;
-    
+
 
     memory = (FT_Memory)malloc( sizeof ( *memory ) );
     if ( memory )
--- a/builds/dos/detect.mk
+++ b/builds/dos/detect.mk
@@ -27,7 +27,7 @@
     #
     ifneq ($(OSTYPE),cygwin)
       is_dos := $(findstring Dos,$(shell ver))
-  
+
       # We try to recognize a Dos session under OS/2.  The `ver' command
       # returns `Operating System/2 ...' there, so `is_dos' should be empty.
       #
--- a/builds/dos/dos-def.mk
+++ b/builds/dos/dos-def.mk
@@ -52,7 +52,7 @@
 
 
 # The NO_OUTPUT macro is used to ignore the output of commands.
-# 
+#
 NO_OUTPUT = &> nul
 
 
@@ -68,11 +68,11 @@
   clean_project: clean_project_dos
   distclean_project: distclean_project_dos
 
-  # This final rule is used to link all object files into a single library. 
+  # This final rule is used to link all object files into a single library.
   # It is part of the system-specific sub-Makefile because not all
   # librarians accept a simple syntax like
   #
-  #   librarian library_file {list of object files} 
+  #   librarian library_file {list of object files}
   #
   $(PROJECT_LIBRARY): $(OBJECTS_LIST)
 	  -$(CLEAN_LIBRARY) $(NO_OUTPUT)
--- a/builds/link_dos.mk
+++ b/builds/link_dos.mk
@@ -25,13 +25,13 @@
   clean_project: clean_project_dos
   distclean_project: distclean_project_dos
 
-  # This final rule is used to link all object files into a single library. 
+  # This final rule is used to link all object files into a single library.
   # this is compiler-specific
   #
   $(PROJECT_LIBRARY): $(OBJECTS_LIST)
-ifdef CLEAN_LIBRARY  
+ifdef CLEAN_LIBRARY
 	-$(CLEAN_LIBRARY) $(NO_OUTPUT)
-endif          
+endif
 	$(LINK_LIBRARY)
 
 endif
--- a/builds/link_std.mk
+++ b/builds/link_std.mk
@@ -25,13 +25,13 @@
   clean_project: clean_project_std
   distclean_project: distclean_project_std
 
-  # This final rule is used to link all object files into a single library. 
+  # This final rule is used to link all object files into a single library.
   # this is compiler-specific
   #
   $(PROJECT_LIBRARY): $(OBJECTS_LIST)
-ifdef CLEAN_LIBRARY  
+ifdef CLEAN_LIBRARY
 	  -$(CLEAN_LIBRARY) $(NO_OUTPUT)
-endif          
+endif
 	  $(LINK_LIBRARY)
 
 endif
--- a/builds/os2/os2-def.mk
+++ b/builds/os2/os2-def.mk
@@ -52,7 +52,7 @@
 
 
 # The NO_OUTPUT macro is used to ignore the output of commands.
-# 
+#
 NO_OUTPUT = 2> nul
 
 
@@ -68,11 +68,11 @@
   clean_project: clean_project_dos
   distclean_project: distclean_project_dos
 
-  # This final rule is used to link all object files into a single library. 
+  # This final rule is used to link all object files into a single library.
   # It is part of the system-specific sub-Makefile because not all
   # librarians accept a simple syntax like
   #
-  #   librarian library_file {list of object files} 
+  #   librarian library_file {list of object files}
   #
   $(PROJECT_LIBRARY): $(OBJECTS_LIST)
 	  -$(CLEAN_LIBRARY) $(NO_OUTPUT)
--- a/builds/os2/os2-dev.mk
+++ b/builds/os2/os2-dev.mk
@@ -124,11 +124,11 @@
   FT_LIBRARIAN := $(AR) -r
 
 
-  # This final rule is used to link all object files into a single library. 
+  # This final rule is used to link all object files into a single library.
   # It is part of the system-specific sub-Makefile because not all
   # librarians accept a simple syntax like
   #
-  #   librarian library_file {list of object files} 
+  #   librarian library_file {list of object files}
   #
   $(FT_LIBRARY): $(OBJECTS_LIST)
 	  -$(DELETE) $(subst $(SEP),$(HOSTSEP),$(FT_LIBRARY)) 2> nul
--- a/builds/os2/os2-gcc.mk
+++ b/builds/os2/os2-gcc.mk
@@ -123,11 +123,11 @@
   FT_LIBRARIAN := $(AR) -r
 
 
-  # This final rule is used to link all object files into a single library. 
+  # This final rule is used to link all object files into a single library.
   # It is part of the system-specific sub-Makefile because not all
   # librarians accept a simple syntax like
   #
-  #   librarian library_file {list of object files} 
+  #   librarian library_file {list of object files}
   #
   $(FT_LIBRARY): $(OBJECTS_LIST)
 	  -$(DELETE) $(subst $(SEP),$(HOSTSEP),$(FT_LIBRARY)) 2> nul
--- a/builds/toplevel.mk
+++ b/builds/toplevel.mk
@@ -66,7 +66,7 @@
 
   all: setup
 
-  ifdef USE_MODULES  
+  ifdef USE_MODULES
     # If the module list $(MODULE_LIST) file is not present, generate it.
     #
     #modules: make_module_list setup
@@ -74,7 +74,7 @@
 
   include $(TOP)/builds/detect.mk
 
-  ifdef USE_MODULES  
+  ifdef USE_MODULES
     include $(TOP)/builds/modules.mk
 
     ifeq ($(wildcard $(MODULE_LIST)),)
--- a/builds/unix/configure.in
+++ b/builds/unix/configure.in
@@ -79,7 +79,7 @@
 
 AM_PROG_LIBTOOL
 
-dnl create the Unix-specific sub-Makefiles `builds/unix/unix-def.mk' 
+dnl create the Unix-specific sub-Makefiles `builds/unix/unix-def.mk'
 dnl and 'builds/unix/unix-cc.mk' that will be used by the build system
 dnl
 AC_OUTPUT(unix-cc.mk:unix-cc.in unix-def.mk:unix-def.in)
--- a/builds/unix/ftsystem.c
+++ b/builds/unix/ftsystem.c
@@ -194,7 +194,7 @@
   void  ft_close_stream( FT_Stream  stream )
   {
     munmap( (MUNMAP_ARG_CAST)stream->descriptor.pointer, stream->size );
-        
+
     stream->descriptor.pointer = NULL;
     stream->size               = 0;
     stream->base               = 0;
@@ -243,7 +243,7 @@
       FT_ERROR(( " could not `fstat' file `%s'\n", filepathname ));
       goto Fail_Map;
     }
-      
+
     stream->size = stat_buf.st_size;
     stream->pos  = 0;
     stream->base = (unsigned char *)mmap( NULL,
@@ -264,16 +264,16 @@
 
     stream->descriptor.pointer = stream->base;
     stream->pathname.pointer   = (char*)filepathname;
-    
+
     stream->close = ft_close_stream;
     stream->read  = 0;
-    
+
     FT_TRACE1(( "FT_New_Stream:" ));
     FT_TRACE1(( " opened `%s' (%d bytes) successfully\n",
                 filepathname, stream->size ));
 
     return FT_Err_Ok;
-    
+
   Fail_Map:
     close( file );
 
@@ -280,7 +280,7 @@
     stream->base = NULL;
     stream->size = 0;
     stream->pos  = 0;
-    
+
     return FT_Err_Cannot_Open_Stream;
   }
 
@@ -299,7 +299,7 @@
   FT_EXPORT_FUNC( FT_Memory )  FT_New_Memory( void )
   {
     FT_Memory  memory;
-    
+
 
     memory = (FT_Memory)malloc( sizeof ( *memory ) );
     if ( memory )
--- a/builds/unix/unix.mk
+++ b/builds/unix/unix.mk
@@ -30,16 +30,16 @@
   distclean_project: distclean_project_unix
 
 
-  # This final rule is used to link all object files into a single library. 
+  # This final rule is used to link all object files into a single library.
   # It is part of the system-specific sub-Makefile because not all
   # librarians accept a simple syntax like
   #
-  #   librarian library_file {list of object files} 
+  #   librarian library_file {list of object files}
   #
   $(PROJECT_LIBRARY): $(OBJECTS_LIST)
-ifdef CLEAN_LIBRARY  
+ifdef CLEAN_LIBRARY
 	  -$(CLEAN_LIBRARY) $(NO_OUTPUT)
-endif          
+endif
 	  $(LINK_LIBRARY)
 
 endif
--- a/builds/win32/detect.mk
+++ b/builds/win32/detect.mk
@@ -20,7 +20,7 @@
   # work...
   #
   ifeq ($(OS),Windows_NT)
-    
+
     # Check if we are running on a CygWin system by checking the OSTYPE
     # variable.
     ifneq ($(OSTYPE),cygwin)
--- a/builds/win32/win32-def.mk
+++ b/builds/win32/win32-def.mk
@@ -55,7 +55,7 @@
 
 
 # The NO_OUTPUT macro is used to ignore the output of commands.
-# 
+#
 NO_OUTPUT = 2> nul
 
 # EOF
--- a/docs/BUILD
+++ b/docs/BUILD
@@ -32,7 +32,7 @@
   Note that on Unix, the  first `make' invocation will run a configure
   script (which is located  in `freetype2/builds/unix/'.  You can also
   pass parameters to this script with the CFG variable, as in:
-  
+
       make CFG="--prefix=/usr/local"
       make
 
@@ -61,11 +61,11 @@
 
     Make sure that you are invoking GNU Make from the command line, by
     typing something like:
-     
+
         make -v
-        
+
     to display its version number.
-     
+
   b. Invoke `make'
 
     Go to  the root  directory of FreeType  2, then simply  invoke GNU
@@ -248,9 +248,9 @@
   Note  that you  still need  to  only compile  the `wrapper'  sources
   described   above.   Define   the   `FT_FLAT_COMPILE'   macro   when
   compiling.  Here an example:
-  
+
     1. Copy all files in current directory:
-   
+
         cp freetype2/src/base/*.[hc] .
         cp freetype2/src/raster1/*.[hc] .
         cp freetype2/src/smooth/*.[hc] .
@@ -257,7 +257,7 @@
         etc.
 
     2. Compile sources:
-        
+
         cc -c -DFT_FLAT_COMPILE -Ifreetype2/include ftsystem.c
         cc -c -DFT_FLAT_COMPILE -Ifreetype2/include ftinit.c
         cc -c -DFT_FLAT_COMPILE -Ifreetype2/include ftdebug.c
--- a/docs/convntns.txt
+++ b/docs/convntns.txt
@@ -102,7 +102,7 @@
       `numberOfPoints' or `number_Of_Points'
 
       `IncredibleFunction' or `Incredible_Function'
-       
+
     And finally,  always put a  capital letter after  an underscore,
     except in variable labels that are all lowercase:
 
@@ -191,7 +191,7 @@
       PProfile    next;   /* next profile in same contour, used     */
                           /* during drop-out control                */
     };
- 
+
   instead of
 
     struct  TProfile_
@@ -207,7 +207,7 @@
       PProfile next; /* next profile in same contour, used     */
                      /* during drop-out control                */
     };
- 
+
   This comes from the fact that you are more interested in the field
   and its function than in its type.
 
@@ -272,7 +272,7 @@
   same column.  It makes it easier to separate a block from the rest
   of the source,  and it helps your _brain_  associate the accolades
   easily (ask any Lisp programmer on the topic!).
-  
+
   Use two spaces for the next indentation level.
 
   Never  use tabs in  FreeType 2  code; their  widths may  vary with
@@ -427,11 +427,11 @@
   have thus decided to stick to the following restrictions:
 
   - The C version is written  entirely in ANSI C.
-  
+
   - The library,  if compiled with gcc, doesn't  produce any warning
     with the  `-ansi -pedantic' flags.  Other  compilers with better
     checks  may produce  ANSI warnings -- please report.
-     
+
     (NOTE: It can of course  be compiled by an `average' C compiler,
            and even by a C++ one.)
 
@@ -510,7 +510,7 @@
       goto Fail;
 
   with
-      
+
     #define PERFORM_Action_1( parms_1 ) \
               ( error = Perform_Action_1( parms_1 ) )
     #define PERFORM_Action_2( parms_1 ) \
@@ -525,7 +525,7 @@
   actual error  handling performed.   Another advantage is  that the
   structure  of source files  remain very  similar, even  though the
   error handling may be different.
-    
+
   This  convention  is  very  close  to the  use  of  exceptions  in
   languages  like  C++,  Pascal,  Java, etc.   where  the  developer
   focuses on the  actions to perform, and not  on every little error
@@ -546,7 +546,7 @@
     and  independence of  a complete  C library,  it is  possible to
     re-implement the component for  a specific system or OS, letting
     it use system calls.
-    
+
   b. Frames
 
     TrueType is  tied to the  big-endian format, which  implies that
@@ -686,4 +686,4 @@
   access to it yourself with a simple mutex.
 
 
---- end of convntns.txt --- 
+--- end of convntns.txt ---
--- a/docs/design/design-1.html
+++ b/docs/design/design-1.html
@@ -76,7 +76,7 @@
     </li>
     <li>
       <p><em>Customization</b>.  It should be easy to build a version of the
-      library that only contains the features needed by a specific project. 
+      library that only contains the features needed by a specific project.
       This really is important when you need to integrate it in a font
       server for embedded graphics libraries.</p>
     </li>
--- a/docs/design/design-2.html
+++ b/docs/design/design-2.html
@@ -71,7 +71,7 @@
   <ul>
     <li>
       <p>Some parts of the base layer can be replaced for specific builds of
-      the library, and can thus be considered as components themselves. 
+      the library, and can thus be considered as components themselves.
       This is the case for the <tt>ftsystem</tt> component, which is in
       charge of implementing memory management & input stream access, as
       well as <tt>ftinit</tt>, which is in charge of library initialization
@@ -119,7 +119,7 @@
       <p>A replacable component can provide a function of the high-level
       API.  For example, <tt>ftinit</tt> provides
       <tt>FT_Init_FreeType()</tt> to client applications.</p>
-    </li>    
+    </li>
   </ul>
 
 </td></tr>
--- a/docs/design/design-3.html
+++ b/docs/design/design-3.html
@@ -37,7 +37,7 @@
     </h2>
 
     <p>Though written in ANSI&nbsp;C, the library employs a few techniques,
-    inherited from object-oriented programming, to make it easy to extend. 
+    inherited from object-oriented programming, to make it easy to extend.
     Hence, the following conventions apply in the FreeType&nbsp;2 source
     code:</p>
 
@@ -152,7 +152,7 @@
     specific typeface with a specific style.  For example, "Arial" and
     "Arial Italic" correspond to two distinct faces.</p>
 
-    <p>A face object is normally created through <tt>FT_New_Face()</tt>. 
+    <p>A face object is normally created through <tt>FT_New_Face()</tt>.
     This function takes the following parameters: an <tt>FT_Library</tt>
     handle, a C file pathname used to indicate which font file to open, an
     index used to decide which face to load from the file (a single file may
@@ -171,7 +171,7 @@
     value.</p>
 
     <p>Note that the face object contains several fields used to describe
-    global font data that can be accessed directly by client applications. 
+    global font data that can be accessed directly by client applications.
     For example, the total number of glyphs in the face, the face's family
     name, style name, the EM size for scalable formats, etc.  For more
     details, look at the <tt>FT_FaceRec</tt> definition in the
--- a/docs/design/design-4.html
+++ b/docs/design/design-4.html
@@ -92,19 +92,19 @@
     <p>The function <tt>FT_New_Face()</tt> will always automatically create
     a new stream object from the C&nbsp;pathname given as its second
     argument.  This is achieved by calling the function
-    <tt>FT_New_Stream()</tt> provided by the <tt>ftsystem</tt> component. 
+    <tt>FT_New_Stream()</tt> provided by the <tt>ftsystem</tt> component.
     As the latter is replaceable, the implementation of streams may vary
     greatly between platforms.</p>
 
     <p>As an example, the default implementation of streams is located in
     the file <tt>src/base/ftsystem.c</tt> and uses the ANSI
-    <tt>fopen()</tt>, <tt>fseek()</tt>, and <tt>fread()</tt> calls. 
+    <tt>fopen()</tt>, <tt>fseek()</tt>, and <tt>fread()</tt> calls.
     However, the Unix build of FreeType&nbsp;2 provides an alternative
     implementation that uses memory-mapped files, when available on the host
     platform, resulting in a significant access speed-up.</p>
 
-    <p>FreeType distinguishes between memory-based and disk-based streams. 
-    In the first case, all data is directly accessed in memory (e.g. 
+    <p>FreeType distinguishes between memory-based and disk-based streams.
+    In the first case, all data is directly accessed in memory (e.g.
     ROM-based, write-only static data and memory-mapped files), while in the
     second, portions of the font files are read in chunks called
     <em>frames</em>, and temporarily buffered similarly through typical
@@ -222,7 +222,7 @@
     </ul>
 
     <p>Note that every <tt>FT_Face</tt> object is <em>owned</em> by the
-    corresponding font driver, depending on the original font file's format. 
+    corresponding font driver, depending on the original font file's format.
     This means that all face objects are destroyed when a module is
     removed/unregistered from a library instance (typically by calling the
     <tt>FT_Remove_Module()</tt> function).</p>
--- a/docs/design/design-5.html
+++ b/docs/design/design-5.html
@@ -35,13 +35,13 @@
 
   <ul>
     <li>
-      <p><em>Renderer</em> modules are used to manage scalable glyph images. 
+      <p><em>Renderer</em> modules are used to manage scalable glyph images.
       This means <em>transforming</em> them, computing their <em>bounding
       box</em>, and <em>converting</em> them to either <em>monochrome</em>
       or <em>anti-aliased</em> bitmaps</em>.</p>
 
       <p>Note that FreeType&nbsp;2 is capable of dealing with <em>any</em>
-      kind of glyph images, as long as a renderer module is provided for it. 
+      kind of glyph images, as long as a renderer module is provided for it.
       The library comes by default with two renderers:</p>
 
       <p><table cellpadding=8>
--- a/docs/design/modules.html
+++ b/docs/design/modules.html
@@ -210,7 +210,7 @@
   well as other variants (like TrueType fonts that only
   contain embedded bitmaps).
   </td></tr><tr valign=top><td>
-  
+
   <b><tt>psnames</tt></b>
   </td><td>
   used to provide various useful function related to glyph
--- a/docs/docmaker.py
+++ b/docs/docmaker.py
@@ -157,8 +157,8 @@
 
     def __init__( self, margin = 0 ):
         self.lines  = []
-        self.margin = margin 
-        
+        self.margin = margin
+
     def add( self, line ):
         # remove margin whitespace
         if string.strip( line[: self.margin] ) == "":
@@ -176,7 +176,7 @@
         return "UNKNOWN_CODE_IDENTIFIER!!"
 
     def dump_html( self ):
-    
+
         # clean the last empty lines
         l = len( self.lines ) - 1
         while l > 0 and string.strip( self.lines[l - 1] ) == "":
@@ -199,7 +199,7 @@
 
     def __init__( self ):
         self.words = []
-        
+
     def add( self, line ):
         # get rid of unwanted spaces in the paragraph
         #
@@ -220,24 +220,24 @@
 
         # should never happen
         return "UNKNOWN_PARA_IDENTIFIER!!"
-          
-    
+
+
     def dump( self ):
 
         max_width = 50
         cursor    = 0
         line      = ""
-        
+
         for word in self.words:
-    
+
             if cursor + len( word ) + 1 > max_width:
                 print line
                 cursor = 0
                 line = ""
-    
+
             line   = line + word + " "
             cursor = cursor + len( word ) + 1
-            
+
         if cursor > 0:
             print line
 
@@ -245,7 +245,7 @@
 
 
     def dump_html( self ):
-    
+
         print para_header
         self.dump()
         print para_footer
@@ -277,7 +277,7 @@
 #     [ ( None, [ DocParagraph, DocParagraph] ),
 #       ( "x",  [ DocParagraph ] ),
 #       ( "y",  [ DocParagraph, DocCode ] ) ]
-# 
+#
 # in self.items
 #
 # the DocContent object is entirely built at creation time, you must
@@ -293,14 +293,14 @@
         text        = []
         paragraph   = None   # represents the current DocParagraph
         code        = None   # represents the current DocCode
-        
+
         elements    = []     # the list of elements for the current field,
                              # contains DocParagraph or DocCode objects
-                             
+
         field       = None   # the current field
 
         for aline in lines_list:
-        
+
             if code_mode == 0:
                 line   = string.lstrip( aline )
                 l      = len( line )
@@ -309,26 +309,26 @@
                 # if the line is empty, this is the end of the current
                 # paragraph
                 if l == 0 or line == '{':
-                
+
                     if paragraph:
                         elements.append( paragraph )
                         paragraph = None
-                    
+
                     if line == "":
                         continue
-                        
+
                     code_mode   = 1
                     code_margin = margin
                     code        = None
                     continue
-            
+
                 words = string.split( line )
-                
+
                 # test for a field delimiter on the start of the line, i.e.
                 # the token `::'
                 #
                 if len( words ) >= 2 and words[1] == "::":
-                    
+
                     # start a new field - complete current paragraph if any
                     if paragraph:
                         elements.append( paragraph )
@@ -336,12 +336,12 @@
 
                     # append previous "field" to self.items
                     self.items.append( ( field, elements ) )
-                
+
                     # start new field and elements list
                     field    = words[0]
                     elements = []
                     words    = words[2 :]
-                    
+
                 # append remaining words to current paragraph
                 if len( words ) > 0:
                     line = string.join( words )
@@ -348,35 +348,35 @@
                     if not paragraph:
                         paragraph = DocParagraph()
                     paragraph.add( line )
-            
+
             else:
                 # we're in code mode..
                 line = aline
-                
+
                 # the code block ends with a line that has a single '}' on it
                 # that is located at the same column that the opening
                 # accolade..
                 if line == " " * code_margin + '}':
-                
+
                     if code:
                         elements.append( code )
                         code = None
-                        
+
                     code_mode   = 0
                     code_margin = 0
-                
+
                 # otherwise, add the line to the current paragraph
                 else:
                     if not code:
                         code = DocCode()
                     code.add( line )
-        
+
         if paragraph:
             elements.append( paragraph )
 
         if code:
             elements.append( code )
-            
+
         self.items.append( ( field, elements ) )
 
 
@@ -388,8 +388,8 @@
 
         # should never happen
         return "UNKNOWN_CONTENT_IDENTIFIER!!"
-         
 
+
     def dump( self ):
         for item in self.items:
             field = item[0]
@@ -398,25 +398,25 @@
 
             for element in item[1]:
                 element.dump()
-            
+
             if field:
                 print "</field>        "
 
     def dump_html( self ):
-        
+
         n        = len( self.items )
         in_table = 0
-        
+
         for i in range( n ):
             item  = self.items[i]
             field = item[0]
-            
+
             if not field:
-            
+
                 if in_table:
                     print "</td></tr></table>"
                     in_table = 0
-                  
+
                 for element in item[1]:
                     element.dump_html()
             else:
@@ -425,9 +425,9 @@
                     in_table = 1
                 else:
                     print "</td></tr><tr valign=top><td>"
-                
+
                 print "<b>" + field + "</b></td><td>"
-                
+
                 for element in item[1]:
                     element.dump_html()
 
@@ -459,12 +459,12 @@
         marker      = None               # current marker
         content     = []                 # current content lines list
         alphanum    = string.letters + string.digits + "_"
-    
+
         for line in block_line_list:
             line2  = string.lstrip( line )
             l      = len( line2 )
             margin = len( line ) - l
-            
+
             if l > 3:
                 ender = None
                 if line2[0] == '<':
@@ -471,7 +471,7 @@
                     ender = '>'
                 elif line2[0] == '@':
                     ender = ':'
-                    
+
                 if ender:
                     i = 1
                     while i < l and line2[i] in alphanum:
@@ -484,12 +484,12 @@
                         line2   = string.lstrip( line2[i + 1 :] )
                         l       = len( line2 )
                         line    = " " * margin + line2
-        
+
             content.append( line )
-        
+
         if marker and content:
             self.add( marker, content )
-        
+
         self.source = []
         if self.items:
             self.source = source_line_list
@@ -512,7 +512,7 @@
                 i = i + 1
             lines = lines[i : l]
             l     = len( lines )
-            
+
         # add a new marker only if its marker and its content list aren't empty
         if l > 0 and marker:
             content = DocContent(lines)
@@ -519,9 +519,9 @@
             self.items.append( ( string.lower(marker), content ) )
             if not self.identifier:
                 self.identifier = content.get_identifier()
-            
 
 
+
     def dump( self ):
         for i in range( len( self.items ) ):
             print "[" + self.items[i][0] + "]"
@@ -529,22 +529,22 @@
             content.dump()
 
     def dump_html( self ):
-        
+
 	types = [ 'type', 'struct', 'functype', 'function', 'constant',
                   'enum', 'macro' ]
 
         if not self.items:
               return
-              
+
         # start of a block
         print block_header
-        
+
         print "<h2>" + self.identifier + "</h2>"
 
         # print source code
         if not self.source:
             return
-            
+
         lines = self.source
         l     = len( lines ) - 1
         while l >= 0 and string.strip( lines[l] ) == "":
@@ -556,7 +556,7 @@
 
         # dump each (marker,content) element
         for element in self.items:
-            
+
             marker  = element[0]
             content = element[1]
 
@@ -564,13 +564,13 @@
                 print "<ul>"
                 content.dump_html()
                 print "</ul>"
-                  
+
             elif not (marker in types):
                 print "<h4>" + marker + "</h4>"
                 print "<ul>"
                 content.dump_html()
                 print "</ul>"
-                    
+
             print ""
 
         print block_footer
@@ -581,7 +581,7 @@
 # "type" (i.e. first marker) is in the "types" parameter
 #
 def filter_blocks( block_list, types ):
-    
+
     new_list = []
     for block in block_list:
         if block.items:
@@ -601,7 +601,7 @@
         return -1
     if not b2.identifier:
         return 1
-        
+
     id1 = string.lower(b1.identifier)
     id2 = string.lower(b2.identifier)
     if id1 < id2:
@@ -610,8 +610,8 @@
         return 0
     else:
         return 1
-    
 
+
 def block_make_list( source_block_list ):
     list = []
 
@@ -627,10 +627,10 @@
 def dump_html_1( block_list ):
 
     print html_header
-    
+
     for block in block_list:
         block.dump_html()
-    
+
     print html_footer
 
 
@@ -642,7 +642,7 @@
     list   = []
     block  = []
     format = 0
- 
+
     # we use "format" to store the state of our parser:
     #
     #  0 - wait for beginning of comment
@@ -652,7 +652,7 @@
     #  4 - wait for beginning of source (or comment ??)
     #  5 - process source
     #
-    
+
     comment     = []
     source      = []
     state       = 0
@@ -666,7 +666,7 @@
         # stripped version of the line
         line2 = string.strip( line )
         l     = len( line2 )
-        
+
         # if this line begins with a comment and we are processing some
         # source, exit to state 0
         #
@@ -718,7 +718,7 @@
             if l == 0 or line2[0] != '*':
                 block  = []
                 format = 0
-                
+
             # otherwise, we test for an end of block, which is an
             # arbitrary number of '*', followed by '/'
             else:
@@ -765,7 +765,7 @@
                 else:
                     # otherwise, add the line to the current block
                     block.append( line2 )
-                    
+
                 continue
 
 
@@ -774,7 +774,7 @@
 
             if l > 0:
                 format = 5
-                
+
             if format == 5:
                 source.append( line )
 
@@ -781,11 +781,11 @@
 
     if format >= 4:
         list.append( [block, source] )
-        
+
     return list
 
 
-    
+
 # This function is only used for debugging
 #
 def dump_block_list( list ):
@@ -806,11 +806,11 @@
     sys.stderr.write( "extracting comment blocks from sources...\n" )
     list = make_block_list()
     list = block_make_list(list)
-    
+
     list2 = filter_blocks( list, ['type','macro','enum','constant', 'functype'] )
     #list2 = list
     list2.sort( block_lexicographical_compare )
-                               
+
     dump_html_1( list2 )
     #dump_doc_blocks( list )
     #dump_block_lists( list )
--- a/docs/freetype2.html
+++ b/docs/freetype2.html
@@ -17,7 +17,7 @@
       alink="#FF0000">
 
 
-<font size=1>http://www.freetype.org</font><p> 
+<font size=1>http://www.freetype.org</font><p>
 
 <center>
   <a href="freetype.html">
@@ -61,7 +61,7 @@
 	 returns and manages outline font data (images & metrics).</p>
    </ul>
    </p></li>
- 
+
   <li><p>
     <b>Support for several font formats through loadable modules:</b><br>
     <ul>
@@ -71,8 +71,8 @@
 	 the font.</p>
     </ul>
   </p></li>
-  
-  
+
+
   <li><p>
     <b>High-quality anti-aliasing:</b><br>
     <ul>
@@ -95,9 +95,9 @@
 	  memory, compressed file, network, etc..).
        </p>
      </ul>
-     	    
+     	
   </ul>
-  
+
   <p>Note that <em>the beta of FreeType 2 is available <b>now</b></em>. For more
   info, check our <a href="download.html">Download page</a> or see the source
   and its diffs through our <a href="cgi-bin/cvsweb.cgi">CVS Web interface</a>.
@@ -144,7 +144,7 @@
    Apple. We're currently in contact with Apple to discuss the importance
    of such patents and their use in open source projects like FreeType.
    </p>
-   
+
 <p>In the meantime, we have developped our own alternative technology that
    is capable of automatically hinting scalable glyph images. It is
    now part of the FreeType 2 source tree as the "autohint" module,
@@ -166,12 +166,12 @@
    only compile the features you need. As each module is between
    10 and 20 Kb in size, it's possible to build a bare-bones
    font engine that supports anti-aliasing in about 30 Kb !!</p>
-   
+
 <p>Configuration is performed by  modifications of only two header
    files (one to select global features, another one to select modules)
    and don't need tweaking of source code. Note that it is however
    possible to provide your own implementation of certain components.</p>
-   
+
 <p>For example, when building on Unix, the engine will automatically
    use memory-mapped files when available on the target platform,
    thus significantly increasing font file i/o.</p>
@@ -188,7 +188,7 @@
    glyph images from font files. These images can be bitmaps, scalable
    bezier outlines or even anything else. (e.g. bi-color or metafont
    glyphs, as long as they're supported by a module).</p>
-   
+
 <p>Each scalable glyph image can be transformed, measured and
    rendered into a monochrome or anti-aliased bitmaps easily
    through a uniform interface.
@@ -205,10 +205,10 @@
 
 <p>The FreeType 2 API is useful to retrieve advanced information from
    various fonts:</p>
-   
+
 <ul>
   <li>vertical metrics are available whenever found in the font file</li>
-  
+
   <li>kerning distances are available when found in the font file. It
       is also possible to "attach" a given additional file to a given
       font face. This is useful to load kerning distances from an
@@ -216,7 +216,7 @@
 
   <li>provides ASCII glyph names whenever available in the font
       (TrueType, OpenType, Type1, etc..)</li>
-      
+
   <li>provides access to important tables for SFNT-based font formats
       (i.e. TrueType, OpenType, CEF, etc..), like the name table,
       font header, maximum profile, etc...</li>
@@ -225,15 +225,15 @@
       those fonts or formats that do not provide one. This is
       extremely useful with Type 1 fonts which are normally
       limited to a stupid 256-characters encoding.</li>
-</ul>      
+</ul>
 
-  
+
 <h3>Simple & clean API</h3>
 
 <p>The FreeType 2 high-level API is simple and straightforward, as it
    has been specifically designed to make the most commmon font operations
    easy</p>
-   
+
 <p>As a comparison, the number of function calls needed to perform a
    the tasks of font face creation/opening and glyph loading/rendering
    has been reduced by a factor of 4 !!</p>
@@ -242,8 +242,8 @@
    it provides standard extensions to access format-specific tables and
    information. More extensions can also be easily added through new
    modules</p>
-   
 
+
 <h3>Robust & Portable code</h3>
 
 <p>Because it is written in industry-standard ANSI C, FreeType 2 compiles
@@ -257,7 +257,7 @@
    a disk file, memory, or through a client-provided input stream. This
    allows to support compressed font files, remote fonts, fonts embedded
    in other streams (e.g. Type42 fonts), etc..</p>
-   
+
 <p>An advanced i/o sub-system is used to optimise file access, as well
    as reduce memory usage of the library when the file is memory-based
    ( ROM, RAM, memory-mapped ).</p>
@@ -268,13 +268,13 @@
 <p>Finally, FreeType 2 is released under its own BSD-like open source
    license, one of the less restricting licenses available, and this
    means that:</p>
-   
+
 <ul>
   <li><p>
     It can be included in all kinds of products, be they proprietary
     or not.
   </p></li>
-  
+
   <li><p>
     As any module can be added or replaced anytime, any third party
     vendor  has the ability to provide its own set of modules (under
@@ -327,7 +327,7 @@
    is covered by the Apple patents. However, this piece of code is never
    compiled by default in this release (unlike in previous betas) making
    a default build of the library <em>entirely patent-free !!</em></p>
-   
+
 <p>Note that in order to compile the interpreter, one needs to define
    the configuration macro <tt><b>TT_CONFIG_OPTION_BYTECODE_INTERPRETER</b></tt> configuration
    macro in the file "<tt>ftoption.h</tt>". More details are available in
--- a/docs/ft2faq.html
+++ b/docs/ft2faq.html
@@ -161,7 +161,7 @@
     FreeType&nbsp;2</p>
 
     <p>Finally, it would have been hard to distribute such a library without
-    an alternative technology to replace the patented bytecode interpreter. 
+    an alternative technology to replace the patented bytecode interpreter.
     This involved significant research work that could only be performed
     correctly full-time, and we had to found a company to fund such a
     development and still make it available under a BSD-like license.  Huge
@@ -199,7 +199,7 @@
     connection to the XFree people, but we have been asked so frequently
     about it that it deserves a prominent place in this FAQ&nbsp;:-)</p>
 
-    <p>FreeType has been capable of anti-aliasing since version&nbsp;1.0. 
+    <p>FreeType has been capable of anti-aliasing since version&nbsp;1.0.
     The reason why XFree doesn't support it is directly related to the
     limitations of the design and specification of X11.  More
     specifically:</p>
@@ -283,7 +283,7 @@
     </h3>
 
     <p>The library can be compiled in various ways, and a detailed
-    documentation is available in the file <tt>freetype2/docs/BUILD</tt>. 
+    documentation is available in the file <tt>freetype2/docs/BUILD</tt>.
     However, we will summarize the process to a few cases:</p>
 
       <h4>
@@ -296,7 +296,7 @@
       <em>not</em> work with other Make tools).</p>
 
       <p>Basically, you will need to invoke <tt>make</tt> a first time in
-      the top-level FreeType&nbsp;2 directory in order to set up the build. 
+      the top-level FreeType&nbsp;2 directory in order to set up the build.
       This will detect your current platform and choose a configuration
       sub-makefile to drive the build.  A specific compiler can be selected
       on some platforms by providing an additional target.  For example, on
@@ -358,7 +358,7 @@
       </h4>
 
       <p>Well, the process is vastly similar to the one described in b.,
-      except that you need to set the include paths, source code paths, etc. 
+      except that you need to set the include paths, source code paths, etc.
       in dialog boxes before running the compilation.</p>
 
     <a name="builds-config">
@@ -403,7 +403,7 @@
     is in the file <tt>src/base/ftinit.c</tt>.</p>
 
     <p>The list of default modules used by <tt>ftinit.c</tt> is located in
-    the configuration file <tt>include/freetype/config/ftmodule.h</tt>. 
+    the configuration file <tt>include/freetype/config/ftmodule.h</tt>.
     Normally, it is automatically generated by the build system by invoking
     the "<tt><b>make modules</b></tt>" command in the top level
     FreeType&nbsp;2 directory (Note: this only works with GNU Make; you can
@@ -572,11 +572,11 @@
 
     <p>Well, the engine already reads OpenType/CFF files perfectly.  What it
     doesn't do is handle "OpenType Layout" tables yet.</p>
-     
+
     <p>FreeType&nbsp;1 comes with a set of extensions that are used to load
     and manage OpenType Layout tables.  It even has a demonstration program
     named "<tt>ftstrtto</tt>" to show its capabilities.</p>
-     
+
     <p>For FreeType&nbsp;2, we have decided that the layout operations
     provided through these tables are better placed in a specific
     text-layout library, (many people having asked for such a thing).  This
--- a/docs/glnames.py
+++ b/docs/glnames.py
@@ -86,11 +86,11 @@
   # 120
   "ntilde", "oacute", "ograve", "ocircumflex", "odieresis",
   "otilde", "uacute", "ugrave", "ucircumflex", "udieresis",
- 
+
   # 130
   "dagger", "degree", "cent", "sterling", "section",
   "bullet", "paragraph", "germandbls", "registered", "copyright",
- 
+
   # 140
   "trademark", "acute", "dieresis", "notequal", "AE",
   "Oslash", "infinity", "plusminus", "lessequal", "greaterequal",
@@ -1502,7 +1502,7 @@
       filtered_index = filter.index( name )
     except:
       extras.append( name )
-            
+
   return extras
 
 
@@ -1521,7 +1521,7 @@
     except:
       write( "    " + repr( count ) + ",\n" )
       count = count + 1
-      
+
   write( "    0\n" )
   write( "  };\n" )
   write( "\n" )
@@ -1555,7 +1555,7 @@
   write( "  };\n" )
   write( "\n" )
   write( "\n" )
-  
+
   return name_list
 
 
@@ -1570,7 +1570,7 @@
   write( "  static const unsigned short  names_to_unicode[" + \
           repr( len( base_list ) + len( adobe_list ) + 1 ) + "] =\n" )
   write( "  {\n" )
-             
+
   for name in base_list:
     try:
       index = adobe_glyphs.index( name )
@@ -1626,13 +1626,13 @@
   write = file.write
 
   count_sid = len( t1_standard_strings )
-    
+
   # build mac index table & supplemental glyph names
   mac_list   = count_extra_glyphs( mac_standard_names, t1_standard_strings )
-  count_mac  = len( mac_list )  
+  count_mac  = len( mac_list )
   t1_bias    = count_mac
   base_list  = mac_list + t1_standard_strings
-    
+
   # build adobe unicode index table & supplemental glyph names
   adobe_list  = the_adobe_glyph_list()
   adobe_list  = count_extra_glyphs( adobe_list, base_list )
@@ -1664,7 +1664,7 @@
 
   # dump glyph list
   name_list = dump_glyph_list( file, base_list, adobe_list )
-    
+
   # dump t1_standard_list
   write( "  static const char**  t1_standard_glyphs = " \
           + "standard_glyph_names + " + repr( t1_bias ) + ";\n" )
@@ -1684,17 +1684,17 @@
   write( "\n" )
 
   # dump mac indices table
-  dump_mac_indices( file )    
+  dump_mac_indices( file )
 
   # discard mac names from base list
   base_list = base_list[t1_bias:]
-  
+
   # dump unicode values table
   dump_unicode_values( file, base_list, adobe_list )
 
   dump_encoding( file, "t1_standard_encoding", t1_standard_encoding )
   dump_encoding( file, "t1_expert_encoding", t1_expert_encoding )
-    
+
   write( "/* END */\n" )
 
 
--- a/docs/tutorial/step1.html
+++ b/docs/tutorial/step1.html
@@ -234,7 +234,7 @@
       </font>
 
       <p>As you can see, <tt>FT_New_Memory_Face()</tt> takes a pointer to
-      the font file buffer and its size in bytes instead of a file pathname. 
+      the font file buffer and its size in bytes instead of a file pathname.
       Other than that, it has exactly the same semantics as
       <tt>FT_New_Face()</tt>.</p>
 
--- a/docs/tutorial/step2.html
+++ b/docs/tutorial/step2.html
@@ -1431,7 +1431,7 @@
     in an abstract grid called the <em>design space</em>, with coordinates
     expressed in nominal <em>font units</em>.  When a glyph image is loaded,
     the font driver usually scales the outline to device space according to
-    the current character pixel size found in a <tt>FT_Size</tt> object. 
+    the current character pixel size found in a <tt>FT_Size</tt> object.
     The driver may also modify the scaled outline in order to significantly
     improve its appearance on a pixel-based surface (a process known as
     <em>hinting</em> or <em>grid-fitting</em>).</p>
--- a/include/freetype/cache/ftcchunk.h
+++ b/include/freetype/cache/ftcchunk.h
@@ -69,7 +69,7 @@
     FT_UShort         cset_index;
     FT_UShort         num_elements;
     FT_Byte*          elements;
-  
+
   } FTC_ChunkNodeRec;
 
 
@@ -153,7 +153,7 @@
     FTC_CacheRec  root;
     FT_Lru        csets_lru;        /* static chunk set lru list */
     FTC_ChunkSet  last_cset;        /* small cache :-)           */
-    
+
   } FTC_Chunk_CacheRec;
 
 
--- a/include/freetype/cache/ftcsbits.h
+++ b/include/freetype/cache/ftcsbits.h
@@ -20,7 +20,7 @@
 #define FTCSBITS_H
 
 
-#include <freetype/cache/ftcchunk.h> 
+#include <freetype/cache/ftcchunk.h>
 
 
 #ifdef __cplusplus
@@ -34,7 +34,7 @@
   /* handle to small bitmap cache */
   typedef struct FTC_SBit_CacheRec_*  FTC_SBit_Cache;
 
-  /* a compact structure used to hold a single small bitmap */  
+  /* a compact structure used to hold a single small bitmap */
   typedef struct  FTC_SBitRec_
   {
     FT_Byte   width;
@@ -48,7 +48,7 @@
     FT_Char   yadvance;
 
     FT_Byte*  buffer;
-  
+
   } FTC_SBitRec;
 
 
--- a/include/freetype/cache/ftlru.h
+++ b/include/freetype/cache/ftlru.h
@@ -77,7 +77,7 @@
   {
     FT_ListNodeRec  root;
     FT_LruKey       key;
-  
+
   } FT_LruNodeRec, *FT_LruNode;
 
 
@@ -90,26 +90,26 @@
   typedef struct  FT_Lru_Class_
   {
     FT_UInt  lru_size;      /* object size in bytes */
-    
+
     /* this method is used to initialize a new list element node */
     FT_Error  (*init_element)( FT_Lru      lru,
                                FT_LruNode  node );
-                               
+
     /* this method is used to finalize a given list element node */
     void      (*done_element)( FT_Lru      lru,
                                FT_LruNode  node );
-    
+
     /* If defined, this method is called when the list if full        */
     /* during the lookup process -- it is used to change the contents */
     /* of a list element node, instead of calling `done_element()',   */
-    /* then `init_element'.  Set it to 0 for default behaviour.       */ 
+    /* then `init_element'.  Set it to 0 for default behaviour.       */
     FT_Error  (*flush_element)( FT_Lru      lru,
                                 FT_LruNode  node,
-                                FT_LruKey   new_key );  
+                                FT_LruKey   new_key );
 
     /* If defined, this method is used to compare a list element node */
     /* with a given key during a lookup.  If set to 0, the `key'      */
-    /* fields will be directly compared instead.                      */                                   
+    /* fields will be directly compared instead.                      */
     FT_Bool  (*compare_element)( FT_LruNode  node,
                                  FT_LruKey   key );
 
@@ -133,11 +133,11 @@
     FT_ListRec     elements;
     FT_Memory      memory;
     FT_Pointer     user_data;
-    
+
     /* the following fields are only meaningful for static lru containers */
     FT_ListRec     free_nodes;
     FT_LruNode     nodes;
-    
+
   } FT_LruRec;
 
 
@@ -148,9 +148,9 @@
                                          FT_Bool              pre_alloc,
                                          FT_Lru*              alru );
 
-  FT_EXPORT_DEF( void )      FT_Lru_Reset( FT_Lru  lru ); 
+  FT_EXPORT_DEF( void )      FT_Lru_Reset( FT_Lru  lru );
 
-  FT_EXPORT_DEF( void )      FT_Lru_Done ( FT_Lru  lru ); 
+  FT_EXPORT_DEF( void )      FT_Lru_Done ( FT_Lru  lru );
 
 
   FT_EXPORT_DEF( FT_Error )  FT_Lru_Lookup_Node( FT_Lru        lru,
@@ -163,7 +163,7 @@
 
 
   FT_EXPORT_DEF( void )  FT_Lru_Remove_Node( FT_Lru      lru,
-                                             FT_LruNode  node );  
+                                             FT_LruNode  node );
 
   FT_EXPORT_DEF( void )  FT_Lru_Remove_Selection( FT_Lru           lru,
                                                   FT_Lru_Selector  selector,
--- a/include/freetype/ftcache.h
+++ b/include/freetype/ftcache.h
@@ -312,7 +312,7 @@
                                                       FTC_Font     font,
                                                       FT_Face*     aface,
                                                       FT_Size*     asize );
-  
+
 
   /* a cache class is used to describe a unique cache type to the manager */
   typedef struct FTC_Cache_Class_  FTC_Cache_Class;
--- a/include/freetype/internal/autohint.h
+++ b/include/freetype/internal/autohint.h
@@ -64,7 +64,7 @@
   /* I initially thought that it would be a good idea to cache the glyph   */
   /* hints too.  However, my general idea now is that if you really need   */
   /* to cache these too, you are simply in need of a new font format,      */
-  /* where all this information could be stored within the font file and   */ 
+  /* where all this information could be stored within the font file and   */
   /* decoded on the fly.                                                   */
   /*                                                                       */
   /*************************************************************************/
--- a/include/freetype/internal/ftobjs.h
+++ b/include/freetype/internal/ftobjs.h
@@ -112,7 +112,7 @@
     FT_Library        library;
     FT_Memory         memory;
     FT_Generic        generic;
-    
+
   } FT_ModuleRec;
 
 
@@ -186,7 +186,7 @@
 #define FT_FACE( x )          ((FT_Face)(x))
 #define FT_SIZE( x )          ((FT_Size)(x))
 #define FT_SLOT( x )          ((FT_GlyphSlot)(x))
-  
+
 #define FT_FACE_DRIVER( x )   FT_FACE( x )->driver
 #define FT_FACE_LIBRARY( x )  FT_FACE_DRIVER( x )->root.library
 #define FT_FACE_MEMORY( x )   FT_FACE( x )->memory
@@ -258,7 +258,7 @@
     FT_UInt       num_subglyphs; /* number of subglyphs */
     FT_SubGlyph*  subglyphs;     /* subglyphs           */
     FT_Vector*    extra_points;  /* extra points table  */
-  
+
   } FT_GlyphLoad;
 
 
@@ -274,27 +274,27 @@
     FT_GlyphLoad  current;
 
     void*         other;            /* for possible future extension? */
-    
+
   };
 
 
   BASE_DEF( FT_Error )  FT_GlyphLoader_New( FT_Memory         memory,
                                             FT_GlyphLoader**  aloader );
-                                          
+
   BASE_DEF( FT_Error )  FT_GlyphLoader_Create_Extra(
-                          FT_GlyphLoader*  loader );                                        
-  
+                          FT_GlyphLoader*  loader );
+
   BASE_DEF( void )      FT_GlyphLoader_Done( FT_GlyphLoader*  loader );
-  
+
   BASE_DEF( void )      FT_GlyphLoader_Reset( FT_GlyphLoader*  loader );
-  
+
   BASE_DEF( void )      FT_GlyphLoader_Rewind( FT_GlyphLoader*  loader );
-  
+
   BASE_DEF( FT_Error )  FT_GlyphLoader_Check_Points(
                           FT_GlyphLoader*  loader,
                           FT_UInt          n_points,
                           FT_UInt          n_contours );
-                               
+
   BASE_DEF( FT_Error )  FT_GlyphLoader_Check_Subglyphs(
                           FT_GlyphLoader*  loader,
                           FT_UInt          n_subs );
@@ -336,7 +336,7 @@
     FT_Raster              raster;
     FT_Raster_Render_Func  raster_render;
     FTRenderer_render      render;
-  
+
   } FT_RendererRec;
 
 
@@ -391,10 +391,10 @@
   {
     FT_ModuleRec      root;
     FT_Driver_Class*  clazz;
-    
+
     FT_ListRec        faces_list;
     void*             extensions;
-    
+
     FT_GlyphLoader*   glyph_loader;
 
   } FT_DriverRec;
--- a/include/freetype/internal/ftstream.h
+++ b/include/freetype/internal/ftstream.h
@@ -72,7 +72,7 @@
     ft_frame_uoff3_le  = FT_MAKE_FRAME_OP( FT_FRAME_OP_OFF3, 0, 1 ),
     ft_frame_off3_be   = FT_MAKE_FRAME_OP( FT_FRAME_OP_OFF3, 1, 0 ),
     ft_frame_off3_le   = FT_MAKE_FRAME_OP( FT_FRAME_OP_OFF3, 1, 1 ),
-  
+
     ft_frame_bytes     = FT_MAKE_FRAME_OP( FT_FRAME_OP_BYTES, 0, 0 ),
     ft_frame_skip      = FT_MAKE_FRAME_OP( FT_FRAME_OP_BYTES, 0, 1 )
 
@@ -133,9 +133,9 @@
             FT_FIELD_OFFSET( field )   \
           }
 #define FT_FRAME_SKIP_BYTES( count )  { ft_frame_skip, count, 0 }
-            
 
 
+
   /*************************************************************************/
   /*                                                                       */
   /* integer extraction macros -- the `buffer' parameter must ALWAYS be of */
@@ -330,7 +330,7 @@
 #define EXTRACT_Frame( size, bytes )                              \
           FT_SET_ERROR( FT_Extract_Frame( stream, size,           \
                                           (FT_Byte**)&(bytes) ) )
-          
+
 #define RELEASE_Frame( bytes )                            \
           FT_Release_Frame( stream, (FT_Byte**)&(bytes) )
 
--- a/include/freetype/internal/psaux.h
+++ b/include/freetype/internal/psaux.h
@@ -63,16 +63,16 @@
     FT_Error  (*init)   ( PS_Table*  table,
                           FT_Int     count,
                           FT_Memory  memory );
-  
-    void      (*done)   ( PS_Table*  table );                              
-  
+
+    void      (*done)   ( PS_Table*  table );
+
     FT_Error  (*add)    ( PS_Table*  table,
                           FT_Int     index,
                           void*      object,
                           FT_Int     length );
 
-    void      (*release)( PS_Table*  table );                              
-  
+    void      (*release)( PS_Table*  table );
+
   } PS_Table_Funcs;
 
 
@@ -186,7 +186,7 @@
 
     /* do not remove */
     t1_field_location_max
-  
+
   } T1_Field_Location;
 
 
@@ -297,10 +297,10 @@
                                  FT_Memory   memory );
 
     void      (*done)          ( T1_Parser*  parser );
-    
+
     void      (*skip_spaces)   ( T1_Parser*  parser );
     void      (*skip_alpha)    ( T1_Parser*  parser );
-  
+
     FT_Long   (*to_int)        ( T1_Parser*  parser );
     FT_Fixed  (*to_fixed)      ( T1_Parser*  parser,
                                  FT_Int      power_ten );
@@ -310,8 +310,8 @@
     FT_Int    (*to_fixed_array)( T1_Parser*  parser,
                                  FT_Int      max_values,
                                  FT_Fixed*   values,
-                                 FT_Int      power_ten );    
-  
+                                 FT_Int      power_ten );
+
     void      (*to_token)      ( T1_Parser*  parser,
                                  T1_Token*   token );
     void      (*to_token_array)( T1_Parser*  parser,
@@ -318,13 +318,13 @@
                                  T1_Token*   tokens,
                                  FT_UInt     max_tokens,
                                  FT_Int*     pnum_tokens );
-                                 
+
     FT_Error  (*load_field)    ( T1_Parser*       parser,
                                  const T1_Field*  field,
                                  void**           objects,
                                  FT_UInt          max_objects,
                                  FT_ULong*        pflags );
-    
+
     FT_Error  (*load_field_table)( T1_Parser*       parser,
                                    const T1_Field*  field,
                                    void**           objects,
@@ -333,7 +333,7 @@
 
   } T1_Parser_Funcs;
 
-  
+
   /*************************************************************************/
   /*                                                                       */
   /* <Struct>                                                              */
@@ -362,7 +362,7 @@
     FT_Byte*         limit;
     FT_Error         error;
     FT_Memory        memory;
-    
+
     T1_Parser_Funcs  funcs;
   };
 
@@ -382,16 +382,16 @@
 
   typedef FT_Error  (*T1_Builder_Check_Points_Func) ( T1_Builder*  builder,
                                                      FT_Int       count );
-                                                      
+
   typedef void      (*T1_Builder_Add_Point_Func)    ( T1_Builder*  builder,
                                                       FT_Pos       x,
                                                       FT_Pos       y,
-                                                      FT_Byte      flag );    
-  
+                                                      FT_Byte      flag );
+
   typedef FT_Error  (*T1_Builder_Add_Point1_Func)   ( T1_Builder*  builder,
                                                       FT_Pos       x,
                                                       FT_Pos       y );
-                                                    
+
   typedef FT_Error  (*T1_Builder_Add_Contour_Func)  ( T1_Builder*  builder );
 
   typedef FT_Error  (*T1_Builder_Start_Point_Func)  ( T1_Builder*  builder,
@@ -407,9 +407,9 @@
                        FT_Face       face,
                        FT_Size       size,
                        FT_GlyphSlot  slot );
-  
+
     void      (*done)( T1_Builder*   builder );
-    
+
     T1_Builder_Check_Points_Func   check_points;
     T1_Builder_Add_Point_Func      add_point;
     T1_Builder_Add_Point1_Func     add_point1;
@@ -416,7 +416,7 @@
     T1_Builder_Add_Contour_Func    add_contour;
     T1_Builder_Start_Point_Func    start_point;
     T1_Builder_Close_Contour_Func  close_contour;
-  
+
   } T1_Builder_Funcs;
 
 
@@ -543,7 +543,7 @@
     FT_Byte*  cursor;
     FT_Byte*  base;
     FT_Byte*  limit;
-    
+
   } T1_Decoder_Zone;
 
 
@@ -564,9 +564,9 @@
                         FT_Byte**            glyph_names,
                         T1_Blend*            blend,
                         T1_Decoder_Callback  callback );
-    
+
     void      (*done) ( T1_Decoder*  decoder );
-    
+
     FT_Error  (*parse_charstrings)( T1_Decoder*  decoder,
                                     FT_Byte*     base,
                                     FT_UInt      len );
@@ -600,7 +600,7 @@
     FT_Vector            flex_vectors[7];
 
     T1_Blend*            blend;       /* for multiple master support */
-    
+
     T1_Decoder_Callback  parse_callback;
     T1_Decoder_Funcs     funcs;
   };
--- a/include/freetype/internal/psnames.h
+++ b/include/freetype/internal/psnames.h
@@ -105,7 +105,7 @@
   /*                                                                       */
   /* <Note>                                                                */
   /*    This function will not be compiled if the configuration macro      */
-  /*    FT_CONFIG_OPTION_POSTSCRIPT_NAMES is undefined.                    */ 
+  /*    FT_CONFIG_OPTION_POSTSCRIPT_NAMES is undefined.                    */
   /*                                                                       */
   typedef const char*  (*PS_Macintosh_Name_Func)( FT_UInt  name_index );
 
--- a/include/freetype/internal/sfnt.h
+++ b/include/freetype/internal/sfnt.h
@@ -450,7 +450,7 @@
     TT_Load_Face_Func         load_face;
     TT_Done_Face_Func         done_face;
     SFNT_Get_Interface_Func   get_interface;
-    
+
     TT_Load_Any_Func          load_any;
     TT_Load_SFNT_Header_Func  load_sfnt_header;
     TT_Load_Directory_Func    load_directory;
--- a/include/freetype/internal/t1types.h
+++ b/include/freetype/internal/t1types.h
@@ -128,7 +128,7 @@
   {
     FT_UInt    num_subrs;
     FT_Byte**  code;
-    
+
   } CID_Subrs;
 
 
@@ -185,7 +185,7 @@
     CID_Info    cid;
     void*       afm_data;
     CID_Subrs*  subrs;
-  
+
   } CID_FaceRec;
 
 
--- a/include/freetype/internal/t2types.h
+++ b/include/freetype/internal/t2types.h
@@ -89,7 +89,7 @@
     FT_ULong   private_size;
     FT_Long    synthetic_base;
     FT_UInt    embedded_postscript;
-    FT_UInt    base_font_name;       
+    FT_UInt    base_font_name;
     FT_UInt    postscript;
 
     /* these should only be used for the top-level font dictionary */
@@ -107,8 +107,8 @@
     FT_UInt    cid_font_name;
 
   } CFF_Font_Dict;
-  
-  
+
+
   typedef struct  CFF_Private_
   {
     FT_Byte   num_blue_values;
@@ -115,18 +115,18 @@
     FT_Byte   num_other_blues;
     FT_Byte   num_family_blues;
     FT_Byte   num_family_other_blues;
-    
+
     FT_Pos    blue_values[14];
     FT_Pos    other_blues[10];
     FT_Pos    family_blues[14];
     FT_Pos    family_other_blues[10];
-    
+
     FT_Fixed  blue_scale;
     FT_Pos    blue_shift;
     FT_Pos    blue_fuzz;
     FT_Pos    standard_width;
     FT_Pos    standard_height;
-    
+
     FT_Byte   num_snap_widths;
     FT_Byte   num_snap_heights;
     FT_Pos    snap_widths[13];
@@ -140,7 +140,7 @@
     FT_ULong  local_subrs_offset;
     FT_Pos    default_width;
     FT_Pos    nominal_width;
-  
+
   } CFF_Private;
 
 
@@ -157,7 +157,7 @@
     FT_UInt   cache_first;
     FT_UInt   cache_count;
     FT_Byte   cache_fd;
-    
+
   } CFF_FD_Select;
 
 
@@ -167,7 +167,7 @@
   {
     CFF_Font_Dict  font_dict;
     CFF_Private    private_dict;
-    
+
     CFF_Index      local_subrs_index;
     FT_UInt        num_local_subrs;
     FT_Byte**      local_subrs;
@@ -177,8 +177,8 @@
 
   /* maximum number of sub-fonts in a CID-keyed file */
 #define CFF_MAX_CID_FONTS  16
-  
 
+
   typedef struct  CFF_Font_
   {
     FT_Stream      stream;
@@ -185,20 +185,20 @@
     FT_Memory      memory;
     FT_UInt        num_faces;
     FT_UInt        num_glyphs;
-    
+
     FT_Byte        version_major;
     FT_Byte        version_minor;
     FT_Byte        header_size;
     FT_Byte        absolute_offsize;
 
-  
+
     CFF_Index      name_index;
     CFF_Index      top_dict_index;
     CFF_Index      string_index;
     CFF_Index      global_subrs_index;
-  
+
     /* we don't load the Encoding and CharSet tables */
-  
+
     CFF_Index      charstrings_index;
     CFF_Index      font_dict_index;
     CFF_Index      private_index;
--- a/include/freetype/internal/tttypes.h
+++ b/include/freetype/internal/tttypes.h
@@ -99,7 +99,7 @@
     FT_UShort  search_range;
     FT_UShort  entry_selector;
     FT_UShort  range_shift;
-  
+
   } SFNT_Header;
 
 
@@ -965,7 +965,7 @@
     TT_CMap4Segment*  segments;
     FT_UShort*        glyphIdArray;
     FT_UShort         numGlyphId;   /* control value */
-    
+
     TT_CMap4Segment*  last_segment;  /* last used segment; this is a small  */
                                      /* cache to potentially increase speed */
   } TT_CMap4;
@@ -1162,7 +1162,7 @@
                                            FT_ULong    offset,
                                            FT_UInt     byte_count );
 
-  
+
   /*************************************************************************/
   /*                                                                       */
   /* <FuncType>                                                            */
@@ -1180,8 +1180,8 @@
   /*                                                                       */
   typedef
   FT_Error  (*TT_Load_Glyph_Element_Func)( TT_Loader*  loader );
-  
 
+
   /*************************************************************************/
   /*                                                                       */
   /* <FuncType>                                                            */
@@ -1574,7 +1574,7 @@
     TT_ExecContext   exec;
     FT_Byte*         instructions;
     FT_ULong         ins_pos;
-    
+
     /* for possible extensibility in other formats */
     void*            other;
 
--- a/src/autohint/CatharonLicense.txt
+++ b/src/autohint/CatharonLicense.txt
@@ -4,7 +4,7 @@
                             2000-Jul-04
 
           Copyright (C) 2000 by Catharon Productions, Inc.
- 
+
 
 
 Introduction
--- a/src/autohint/ahglyph.c
+++ b/src/autohint/ahglyph.c
@@ -180,21 +180,21 @@
     n = ah_test_extrema( outline, indices.xMin );
     if ( n )
       goto Exit;
-    
+
     n = ah_test_extrema( outline, indices.yMin );
     if ( n )
       goto Exit;
-    
+
     n = ah_test_extrema( outline, indices.xMax );
     if ( n )
       goto Exit;
-    
+
     n = ah_test_extrema( outline, indices.yMax );
     if ( !n )
       n = 1;
 
   Exit:
-    return n;    
+    return n;
   }
 
 
@@ -367,7 +367,7 @@
     {
       outline->vert_major_dir = ah_dir_down;
       outline->horz_major_dir = ah_dir_right;
-    }    
+    }
 
 #else
 
--- a/src/autohint/ahhint.c
+++ b/src/autohint/ahhint.c
@@ -1115,7 +1115,7 @@
                       ( new_width + new_lsb - old_width - old_lsb );
 
         hinter->pp1.x = ( ( new_lsb - old_lsb ) + 32 ) & -64;
-        hinter->pp2.x = ( ( edge2->pos + 
+        hinter->pp2.x = ( ( edge2->pos +
                             ( old_advance - edge2->opos ) ) + 32 ) & -64;
       }
 
--- a/src/autohint/ahoptim.c
+++ b/src/autohint/ahoptim.c
@@ -143,7 +143,7 @@
       LOG(( " [%d-%d:%.1f:%1.f:%.1f]",
             spring->stem1 - stems, spring->stem2 - stems,
             FLOAT( spring->owidth ),
-            FLOAT( spring->stem2->pos - 
+            FLOAT( spring->stem2->pos -
                    ( spring->stem1->pos + spring->stem1->width ) ),
             FLOAT( spring->tension ) ));
     }
--- a/src/autohint/mather.py
+++ b/src/autohint/mather.py
@@ -22,18 +22,18 @@
 
 def print_arctan( atan_bits ):
     atan_base = 1 << atan_bits
-    
+
     print "  static AH_Angle  ag_arctan[1L << AG_ATAN_BITS] ="
     print "  {"
-    
+
     count = 0
     line  = "   "
-    
+
     for n in range( atan_base ):
         comma = ","
         if ( n == atan_base - 1 ):
             comma = ""
-            
+
         angle = math.atan( n * 1.0 / atan_base ) / math.pi * ag_pi
         line  = line + " " + repr( int( angle + 0.5 ) ) + comma
         count = count + 1;
@@ -41,7 +41,7 @@
             count = 0
             print line
             line = "   "
-            
+
     if ( count > 0 ):
         print line
     print "  };"
@@ -55,7 +55,7 @@
 
     count = 0
     line  = "   "
-    
+
     for n in range( ag_pi / 2 ):
         sinus = math.sin( n * math.pi / ag_pi )
         line  = line + " " + repr( int( 65536.0 * sinus ) ) + ","
@@ -64,7 +64,7 @@
             count = 0
             print line
             line = "   "
-        
+
     if ( count > 0 ):
         print line
     print "   65536"
--- a/src/autohint/module.mk
+++ b/src/autohint/module.mk
@@ -1,5 +1,5 @@
 #
-# FreeType 2 auto-hinter module definition 
+# FreeType 2 auto-hinter module definition
 #
 
 
--- a/src/base/ftcalc.c
+++ b/src/base/ftcalc.c
@@ -300,7 +300,7 @@
   {
 
     FT_Int64  z;
-    
+
     z = (FT_Int64)(x) << 16;
     return FT_Sqrt64( z );
   }
@@ -773,7 +773,7 @@
   {
     FT_Int64  z;
 
-    
+
     z.hi = (FT_UInt32)((FT_Int32)(x) >> 16);
     z.lo = (FT_UInt32)( x << 16 );
     return FT_Sqrt64( &z );
--- a/src/base/ftglyph.c
+++ b/src/base/ftglyph.c
@@ -831,7 +831,7 @@
 
       /* copy advance - thanks Karsten ;-) */
       bitmap->root.advance = glyph->advance;
-      
+
       *the_glyph = FT_GLYPH( bitmap );
     }
 
--- a/src/base/ftinit.c
+++ b/src/base/ftinit.c
@@ -174,7 +174,7 @@
 
       /* Discard the library object */
       FT_Done_Library( library );
-      
+
       /* discard memory manager */
       FT_Done_Memory( memory );
     }
--- a/src/base/ftnames.c
+++ b/src/base/ftnames.c
@@ -44,8 +44,8 @@
   {
     return face && ( FT_IS_SFNT( face ) ? ((TT_Face)face)->num_names : 0 );
   }
-  
-  
+
+
   /*************************************************************************/
   /*                                                                       */
   /* <Function>                                                            */
@@ -78,18 +78,18 @@
                                                FT_SfntName*  aname )
   {
     FT_Error  error = FT_Err_Invalid_Argument;
-    
 
+
     if ( aname && face && FT_IS_SFNT( face ) )
     {
       TT_Face  ttface = (TT_Face)face;
-      
 
+
       if ( index < ttface->num_names )
       {
         TT_NameRec*  name = ttface->name_table.names + index;
-        
 
+
         aname->platform_id = name->platformID;
         aname->encoding_id = name->encodingID;
         aname->language_id = name->languageID;
@@ -96,13 +96,13 @@
         aname->name_id     = name->nameID;
         aname->string      = (FT_Byte*)name->string;
         aname->string_len  = name->stringLength;
-        
+
         error = FT_Err_Ok;
       }
     }
-    
+
     return error;
-  }                                             
+  }
 
 
 #endif /* TT_CONFIG_OPTION_SFNT_NAMES */
--- a/src/base/ftsynth.c
+++ b/src/base/ftsynth.c
@@ -37,24 +37,24 @@
                                                  FT_Pos*       advance )
   {
     FT_Matrix  transform;
-    
+
     FT_UNUSED( original );
     /* we don't touch the advance width */
     FT_UNUSED( advance );
 
-    
 
+
     /* For italic, simply apply a shear transform, with an angle */
     /* of about 12 degrees.                                      */
-    
+
     transform.xx = 0x10000L;
     transform.yx = 0x00000L;
-    
+
     transform.xy = 0x06000L;
     transform.yy = 0x10000L;
-    
+
     FT_Outline_Transform( outline, &transform );
-    
+
     return 0;
   }
 
@@ -272,15 +272,15 @@
     n = ft_test_extrema( outline, indices.xMin );
     if ( n )
       goto Exit;
-    
+
     n = ft_test_extrema( outline, indices.yMin );
     if ( n )
       goto Exit;
-    
+
     n = ft_test_extrema( outline, indices.xMax );
     if ( n )
       goto Exit;
-    
+
     n = ft_test_extrema( outline, indices.yMax );
     if ( !n )
       n = 1;
--- a/src/cache/ftcchunk.c
+++ b/src/cache/ftcchunk.c
@@ -56,7 +56,7 @@
       /* allocate elements array */
       FT_Memory   memory;
 
-      
+
       memory = cache->root.memory;
       error  = MEM_Alloc( node->elements, cset->element_size *
                                           cset->element_count );
@@ -71,7 +71,7 @@
 
     /* remove from parent set table */
     cset->chunks[ node->cset_index ] = 0;
-        
+
     /* destroy the node */
     cset->clazz->destroy_node( node );
   }
@@ -135,7 +135,7 @@
       goto Exit;
 
     /* compute maximum number of nodes */
-    cset->num_chunks = (cset->element_max   + 
+    cset->num_chunks = (cset->element_max   +
                         cset->element_count - 1) / cset->element_count;
 
     /* allocate chunk pointers table */
@@ -223,7 +223,7 @@
       FT_UInt         chunk_index = glyph_index/chunk_size;
       FTC_ChunkNode*  pnode       = cset->chunks + chunk_index;
       FTC_ChunkNode   node        = *pnode;
-      
+
       if (!node)
       {
         /* we didn't found the glyph image, we will now create a new one */
--- a/src/cache/ftcglyph.c
+++ b/src/cache/ftcglyph.c
@@ -61,12 +61,12 @@
     FT_LruNode    gset_lru = cache->gsets_lru->nodes + node->gset_index;
     FTC_GlyphSet  gset     = (FTC_GlyphSet)gset_lru->root.data;
     FT_UInt       hash     = node->glyph_index % gset->hash_size;
-    
+
     /* remove the node from its gset's bucket list */
     {
       FTC_GlyphNode*  pnode = gset->buckets + hash;
       FTC_GlyphNode   cur;
-      
+
       for (;;)
       {
         cur = *pnode;
@@ -77,7 +77,7 @@
                      " trying to delete an unlisted node !!!!" ));
           return;
         }
-          
+
         if (cur == node)
         {
           *pnode = cur->gset_next;
@@ -239,13 +239,13 @@
 
 
     *anode = 0;
-    
+
     for ( ;; )
     {
       node = *pnode;
       if (!node)
         break;
-        
+
       if ( node->glyph_index == glyph_index )
       {
         /* we found it! -- move glyph to start of the lists */
@@ -252,7 +252,7 @@
         *pnode          = node->gset_next;
         node->gset_next = bucket[0];
         bucket[0]       = node;
-        
+
         FT_List_Up( &manager->global_lru, FTC_GLYPHNODE_TO_LRUNODE( node ) );
         *anode = node;
         return 0;
--- a/src/cache/ftcimage.c
+++ b/src/cache/ftcimage.c
@@ -36,7 +36,7 @@
   {
     FTC_GlyphSetRec  root;
     FTC_Image_Desc   description;
-  
+
   } FTC_ImageSetRec, *FTC_ImageSet;
 
 
@@ -43,7 +43,7 @@
   typedef struct  FTC_Image_CacheRec_
   {
     FTC_Glyph_CacheRec  root;
-    
+
   } FTC_Image_CacheRec;
 
 
--- a/src/cache/ftcmanag.c
+++ b/src/cache/ftcmanag.c
@@ -411,7 +411,7 @@
           /* this should never happen! */
           FT_ERROR(( "FTC_Manager_Compress: Cache Manager is corrupted!\n" ));
         }
-        
+
         /* check, just in case of general corruption :-) */
         if (manager->num_nodes <= 0)
         {
@@ -464,7 +464,7 @@
         cache->manager = manager;
         cache->memory  = memory;
         cache->clazz   = clazz;
-        
+
         /* THIS IS VERY IMPORTANT, THIS WILL WRECH THE MANAGER */
         /* IF IT IS NOT SET CORRECTLY..                        */
         cache->cache_index = index;
--- a/src/cache/ftcsbits.c
+++ b/src/cache/ftcsbits.c
@@ -15,7 +15,7 @@
   typedef struct FTC_SBit_CacheRec_
   {
     FTC_Chunk_CacheRec    root;
-    
+
   } FTC_SBit_CacheRec;
 
 
@@ -36,7 +36,7 @@
     FT_Memory      memory = cset->memory;
     FT_UInt        count  = node->num_elements;
     FTC_SBit       sbit   = (FTC_SBit)node->elements;
-    
+
     for ( ; count > 0; sbit++, count-- )
       FREE( sbit->buffer );
 
@@ -124,7 +124,7 @@
 
         /* always render glyphs to bitmaps */
         load_flags |= FT_LOAD_RENDER;
-        
+
         if ( image_type & ftc_image_flag_unhinted )
           load_flags |= FT_LOAD_NO_HINTING;
 
@@ -138,7 +138,7 @@
       {
         /* by default, indicates a "missing" glyph */
         sbit->buffer = 0;
-        
+
         error = FT_Load_Glyph( face, glyph_index, load_flags );
         if (!error)
         {
@@ -150,7 +150,7 @@
           /* check that our values fit in 8-bit containers !!       */
           /* if this is not the case, our bitmap is too large       */
           /* and we will leave it as "missing" with sbit.buffer = 0 */
- 
+
 #define  CHECK_CHAR(d)   ( temp = (FT_Char)d, temp == d )
 #define  CHECK_BYTE(d)   ( temp = (FT_Byte)d, temp == d )
 
@@ -159,7 +159,7 @@
           /* horizontal advance in pixels              */
           xadvance = (slot->metrics.horiAdvance+32) >> 6;
           yadvance = (slot->metrics.vertAdvance+32) >> 6;
-          
+
           if ( CHECK_BYTE ( bitmap->rows  )     &&
                CHECK_BYTE ( bitmap->width )     &&
                CHECK_CHAR ( bitmap->pitch )     &&
@@ -231,7 +231,7 @@
         pitch = sbit->pitch;
         if (pitch < 0)
           pitch = -pitch;
-          
+
         /* add the size of a given glyph image */
         size += pitch * sbit->height;
       }
@@ -256,19 +256,19 @@
   {
     FT_Error  error;
     FT_Face   face;
-    
+
     cset->element_count = FTC_SBITSET_ELEMENT_COUNT;
     cset->element_size  = sizeof(FTC_SBitRec);
-    
+
     /* lookup the FT_Face to obtain the number of glyphs */
     error = FTC_Manager_Lookup_Face( cset->manager,
                                      desc->font.face_id, &face );
     if (!error)
       cset->element_max = face->num_glyphs;
-      
+
     return error;
   }
-  
+
 
 
   LOCAL_FUNC_X
--- a/src/cache/ftlru.c
+++ b/src/cache/ftlru.c
@@ -28,8 +28,8 @@
   {
     FT_LruNode  node  = nodes;
     FT_LruNode  limit = node + count;
-    
 
+
     free_list->head = free_list->tail = 0;
     for ( ; node < limit; node++ )
       FT_List_Add( free_list, (FT_ListNode)node );
@@ -45,8 +45,8 @@
   {
     FT_Error  error;
     FT_Lru    lru;
-    
 
+
     if ( !alru )
       return FT_Err_Invalid_Argument;
 
@@ -61,11 +61,11 @@
           FREE( lru );
           goto Exit;
         }
-        
+
         /* build the `free_nodes' list from the array */
         lru_build_free_list( lru->nodes, max_elements, &lru->free_nodes );
       }
-      
+
       /* initialize common fields */
       lru->clazz        = (FT_Lru_Class*)clazz;
       lru->max_elements = max_elements;
@@ -80,14 +80,14 @@
   }
 
 
-                                         
+
   FT_EXPORT_DEF( void )  FT_Lru_Reset( FT_Lru  lru )
   {
     FT_ListNode    node;
     FT_Lru_Class*  clazz;
     FT_Memory      memory;
-    
 
+
     if ( !lru )
       return;
 
@@ -98,15 +98,15 @@
     while ( node )
     {
       FT_ListNode  next = node->next;
-      
 
+
       clazz->done_element( lru, (FT_LruNode)node );
       if ( !lru->nodes )
         FREE( node );
-      
+
       node = next;
     }
-    
+
     /* rebuild free list if necessary */
     if ( lru->nodes )
       lru_build_free_list( lru->nodes, lru->max_elements, &lru->free_nodes );
@@ -119,8 +119,8 @@
   FT_EXPORT_DEF( void )  FT_Lru_Done( FT_Lru  lru )
   {
     FT_Memory  memory;
-    
 
+
     if ( !lru )
       return;
 
@@ -138,10 +138,10 @@
     FT_Error       error = 0;
     FT_ListNode    node;
     FT_Lru_Class*  clazz;
-    FT_LruNode     found = 0; 
+    FT_LruNode     found = 0;
     FT_Memory      memory;
-    
 
+
     if ( !lru || !key || !anode )
       return FT_Err_Invalid_Argument;
 
@@ -167,7 +167,7 @@
           break;
         }
     }
-   
+
     if ( !found )
     {
       /* we haven't found the relevant element.  We will now try */
@@ -177,12 +177,12 @@
         /* this lru list is full; we will now flush */
         /* the oldest node                          */
         FT_LruNode  lru_node;
-        
-        
+
+
         node     = lru->elements.tail;
         lru_node = (FT_LruNode)node;
         found    = lru_node;
-        
+
         if ( clazz->flush_element )
           error = clazz->flush_element( lru, lru_node, key );
         else
@@ -203,20 +203,20 @@
           /* in case of error, the node must be discarded */
           FT_List_Remove( &lru->elements, node );
           lru->num_elements--;
-        
+
           if ( lru->nodes )
             FT_List_Insert( &lru->free_nodes, node );
           else
             FREE( lru_node );
-            
+
           found = 0;
         }
       }
       else
-      { 
+      {
         FT_LruNode  lru_node;
-        
 
+
         /* create a new lru list node, then the element for it */
         if ( lru->nodes )
         {
@@ -223,11 +223,11 @@
           node     = lru->free_nodes.head;
           lru_node = (FT_LruNode)node;
           lru_node->key = key;
-          
+
           error = clazz->init_element( lru, lru_node );
           if ( error )
             goto Exit;
-            
+
           FT_List_Remove( &lru->free_nodes, node );
         }
         else
@@ -234,7 +234,7 @@
         {
           if ( ALLOC( lru_node, sizeof ( *lru_node ) ) )
             goto Exit;
-            
+
           lru_node->key = key;
           error = clazz->init_element( lru, lru_node );
           if ( error )
@@ -243,17 +243,17 @@
             goto Exit;
           }
         }
-       
-        found = lru_node; 
+
+        found = lru_node;
         node  = (FT_ListNode)lru_node;
         FT_List_Insert( &lru->elements, node );
         lru->num_elements++;
       }
     }
-    
-  Exit: 
+
+  Exit:
     *anode = found;
-    return error; 
+    return error;
   }
 
 
@@ -263,8 +263,8 @@
   {
     FT_Error    error;
     FT_LruNode  node;
-    
 
+
     /* check for valid `lru' and `key' delayed to FT_Lru_Lookup_Node() */
 
     if ( !aobject )
@@ -274,7 +274,7 @@
     error = FT_Lru_Lookup_Node( lru, key, &node );
     if ( !error )
       *aobject = node->root.data;
-    
+
     return error;
   }
 
@@ -289,7 +289,7 @@
     {
       FT_List_Remove( &lru->elements, (FT_ListNode)node );
       lru->clazz->done_element( lru, node );
-      
+
       if ( lru->nodes )
         FT_List_Insert( &lru->free_nodes, (FT_ListNode)node );
       else
@@ -317,7 +317,7 @@
       FT_ListNode  node = lru->elements.head;
       FT_ListNode  next;
 
-      
+
       while ( node )
       {
         next = node->next;
--- a/src/cff/module.mk
+++ b/src/cff/module.mk
@@ -1,5 +1,5 @@
 #
-# FreeType 2 CFF module definition 
+# FreeType 2 CFF module definition
 #
 
 
--- a/src/cid/cidgload.c
+++ b/src/cid/cidgload.c
@@ -145,7 +145,7 @@
     FT_Error    error;
     T1_Decoder  decoder;
     FT_Int      glyph_index;
-    
+
     PSAux_Interface*  psaux = (PSAux_Interface*)face->psaux;
 
 
@@ -161,7 +161,7 @@
                                            cid_load_glyph );
     if ( error )
       return error;
-    
+
     decoder.builder.metrics_only = 1;
     decoder.builder.load_points  = 0;
 
@@ -259,7 +259,7 @@
     {
       glyph->root.outline.flags &= ft_outline_owner;
       glyph->root.outline.flags |= ft_outline_reverse_fill;
-      
+
       /* for composite glyphs, return only left side bearing and */
       /* advance width                                           */
       if ( load_flags & FT_LOAD_NO_RECURSE )
--- a/src/cid/cidload.c
+++ b/src/cid/cidload.c
@@ -154,7 +154,7 @@
     }
 
     dummy_object = object;
-    
+
     /* now, load the keyword data in the object's field(s) */
     if ( keyword->type == t1_field_integer_array ||
          keyword->type == t1_field_fixed_array   )
@@ -219,7 +219,7 @@
       matrix->yx = temp[1];
       matrix->xy = temp[2];
       matrix->yy = temp[3];
-      
+
       /* note that the font offsets are expressed in integer font units */
       offset->x  = temp[4] >> 16;
       offset->y  = temp[5] >> 16;
--- a/src/cid/cidobjs.c
+++ b/src/cid/cidobjs.c
@@ -157,7 +157,7 @@
     {
       psaux = (PSAux_Interface*)FT_Get_Module_Interface(
                   FT_FACE_LIBRARY( face ), "psaux" );
-                  
+
       face->psaux = psaux;
     }
 
--- a/src/cid/cidparse.c
+++ b/src/cid/cidparse.c
@@ -72,7 +72,7 @@
 
     MEM_Set( parser, 0, sizeof ( *parser ) );
     psaux->t1_parser_funcs->init( &parser->root, 0, 0, memory );
-    
+
     parser->stream = stream;
 
     base_offset = FILE_Pos();
--- a/src/psaux/psauxmod.c
+++ b/src/psaux/psauxmod.c
@@ -75,7 +75,7 @@
     &t1_parser_funcs,
     &t1_builder_funcs,
     &t1_decoder_funcs,
-    
+
     T1_Decrypt
   };
 
@@ -87,9 +87,9 @@
     "psaux",
     0x10000L,
     0x20000L,
-    
+
     &psaux_interface,  /* module-specific interface */
-    
+
     (FT_Module_Constructor)0,
     (FT_Module_Destructor) 0,
     (FT_Module_Requester)  0
--- a/src/psaux/psobjs.c
+++ b/src/psaux/psobjs.c
@@ -879,7 +879,7 @@
     if ( pflags )
       *pflags |= 1L << field->flag_bit;
 #else
-    FT_UNUSED( pflags );      
+    FT_UNUSED( pflags );
 #endif
 
     error = FT_Err_Ok;
@@ -944,7 +944,7 @@
     if ( pflags )
       *pflags |= 1L << field->flag_bit;
 #else
-    FT_UNUSED( pflags );      
+    FT_UNUSED( pflags );
 #endif
 
     parser->cursor = old_cursor;
@@ -1025,7 +1025,7 @@
     parser->cursor = base;
     parser->memory = memory;
     parser->funcs  = t1_parser_funcs;
-  }                            
+  }
 
 
   LOCAL_FUNC
@@ -1098,7 +1098,7 @@
     builder->left_bearing.y = 0;
     builder->advance.x      = 0;
     builder->advance.y      = 0;
-    
+
     builder->funcs = t1_builder_funcs;
   }
 
--- a/src/psaux/psobjs.h
+++ b/src/psaux/psobjs.h
@@ -45,12 +45,12 @@
   LOCAL_VAR
   const T1_Builder_Funcs  t1_builder_funcs;
 
-  
+
   LOCAL_DEF
   FT_Error  PS_Table_New( PS_Table*  table,
                           FT_Int     count,
                           FT_Memory  memory );
- 
+
   LOCAL_DEF
   FT_Error  PS_Table_Add( PS_Table*  table,
                           FT_Int     index,
@@ -89,7 +89,7 @@
                          T1_Token*   tokens,
                          FT_UInt     max_tokens,
                          FT_Int*     pnum_tokens );
- 
+
   LOCAL_DEF
   FT_Error  T1_Load_Field( T1_Parser*       parser,
                            const T1_Field*  field,
@@ -96,7 +96,7 @@
                            void**           objects,
                            FT_UInt          max_objects,
                            FT_ULong*        pflags );
- 
+
   LOCAL_DEF
   FT_Error  T1_Load_Field_Table( T1_Parser*       parser,
                                  const T1_Field*  field,
@@ -103,7 +103,7 @@
                                  void**           objects,
                                  FT_UInt          max_objects,
                                  FT_ULong*        pflags );
- 
+
   LOCAL_DEF
   FT_Long  T1_ToInt( T1_Parser*  parser );
 
@@ -151,11 +151,11 @@
 
   LOCAL_DEF
   void  T1_Builder_Done( T1_Builder*  builder );
-  
+
   LOCAL_DEF
   FT_Error  T1_Builder_Check_Points( T1_Builder*  builder,
                                      FT_Int       count );
-  
+
   LOCAL_DEF
   void  T1_Builder_Add_Point( T1_Builder*  builder,
                               FT_Pos       x,
@@ -166,10 +166,10 @@
   FT_Error  T1_Builder_Add_Point1( T1_Builder*  builder,
                                    FT_Pos       x,
                                    FT_Pos       y );
-                                   
+
   LOCAL_DEF
   FT_Error  T1_Builder_Add_Contour( T1_Builder*  builder );
-  
+
 
   LOCAL_DEF
   FT_Error  T1_Builder_Start_Point( T1_Builder*  builder,
--- a/src/psaux/t1decode.c
+++ b/src/psaux/t1decode.c
@@ -206,7 +206,7 @@
       FT_ERROR(( " glyph names table not available in this font!\n" ));
       return T1_Err_Syntax_Error;
     }
-    
+
     bchar_index = t1_lookup_glyph_by_stdcharcode( decoder, bchar );
     achar_index = t1_lookup_glyph_by_stdcharcode( decoder, achar );
 
@@ -919,12 +919,12 @@
 
             zone++;
             zone->base   = decoder->subrs[index] + decoder->lenIV;
-            
+
             if (decoder->subrs_len)
               zone->limit  = zone->base + decoder->subrs_len[index];
             else
               zone->limit  = decoder->subrs[index+1];
-              
+
             zone->cursor = zone->base;
 
             if ( !zone->base )
@@ -1036,12 +1036,12 @@
                              T1_Decoder_Callback  parse_callback )
   {
     MEM_Set( decoder, 0, sizeof ( *decoder ) );
-    
+
     /* retrieve PSNames interface from list of current modules */
     {
       PSNames_Interface*  psnames = 0;
-      
 
+
       psnames = (PSNames_Interface*)FT_Get_Module_Interface(
                    FT_FACE_LIBRARY(face), "psnames" );
       if ( !psnames )
@@ -1050,16 +1050,16 @@
         FT_ERROR(( "the `psnames' module is not available\n" ));
         return FT_Err_Unimplemented_Feature;
       }
-      
+
       decoder->psnames = psnames;
     }
     T1_Builder_Init( &decoder->builder, face, size, slot );
-    
+
     decoder->num_glyphs     = face->num_glyphs;
     decoder->glyph_names    = glyph_names;
     decoder->blend          = blend;
     decoder->parse_callback = parse_callback;
-    
+
     decoder->funcs       = t1_decoder_funcs;
 
     return 0;
--- a/src/sfnt/sfdriver.c
+++ b/src/sfnt/sfdriver.c
@@ -100,23 +100,23 @@
   {
     FT_String*  gname;
     FT_Error    error;
-    
 
+
     error = TT_Get_PS_Name( face, glyph_index, &gname );
     if ( !error && buffer_max > 0 )
     {
       FT_UInt  len = strlen( gname );
-      
 
+
       if ( len >= buffer_max )
         len = buffer_max - 1;
-        
+
       MEM_Copy( buffer, gname, len );
       ((FT_Byte*)buffer)[len] = 0;
     }
-    
+
     return error;
-  }                                  
+  }
 
 
 #endif /* TT_CONFIG_OPTION_POSTSCRIPT_NAMES */
--- a/src/sfnt/sfobjs.c
+++ b/src/sfnt/sfobjs.c
@@ -516,15 +516,15 @@
 
         root->ascender  = face->horizontal.Ascender;
         root->descender = face->horizontal.Descender;
-        
+
         root->height    = root->ascender - root->descender +
                           face->horizontal.Line_Gap;
-                          
+
         /* if the line_gap is 0, we add an extra 15% to the text height --  */
         /* this computation is based on various versions of Times New Roman */
         if ( face->horizontal.Line_Gap == 0 )
           root->height = ( root->height * 115 + 50 ) / 100;
-          
+
 #if 0
 
         /* some fonts have the OS/2 "sTypoAscender", "sTypoDescender" & */
@@ -532,11 +532,11 @@
         if ( face->os2.version != 0xFFFF && root->ascender )
         {
           FT_Int  height;
-          
 
+
           root->ascender  =  face->os2.sTypoAscender;
           root->descender = -face->os2.sTypoDescender;
-          
+
           height = root->ascender + root->descender + face->os2.sTypoLineGap;
           if ( height > root->height )
             root->height = height;
--- a/src/truetype/ttdriver.c
+++ b/src/truetype/ttdriver.c
@@ -439,7 +439,7 @@
       ft_module_driver_has_hinter,
 #else
       0,
-#endif            
+#endif
 
       sizeof ( TT_DriverRec ),
 
--- a/src/truetype/ttgload.c
+++ b/src/truetype/ttgload.c
@@ -545,7 +545,7 @@
 
     FT_UNUSED( debug );  /* used by truetype interpreter only */
 
-    
+
     n_ins = load->glyph->control_len;
 
     /* add shadow points */
@@ -648,7 +648,7 @@
 
 #ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER
   Exit:
-#endif  
+#endif
     return error;
   }
 
--- a/src/type1/t1driver.c
+++ b/src/type1/t1driver.c
@@ -57,24 +57,24 @@
                                FT_UInt     buffer_max )
   {
     FT_String*  gname;
-    
 
+
     gname = face->type1.glyph_names[glyph_index];
 
     if ( buffer_max > 0 )
     {
       FT_UInt  len = strlen( gname );
-      
 
+
       if (len >= buffer_max)
         len = buffer_max - 1;
-        
+
       MEM_Copy( buffer, gname, len );
       ((FT_Byte*)buffer)[len] = 0;
     }
 
     return T1_Err_Ok;
-  }                                  
+  }
 
 
   /*************************************************************************/
--- a/src/type1/t1gload.c
+++ b/src/type1/t1gload.c
@@ -104,7 +104,7 @@
                                            T1_Parse_Glyph );
     if ( error )
       return error;
-      
+
     decoder.builder.metrics_only = 1;
     decoder.builder.load_points  = 0;
 
@@ -168,7 +168,7 @@
 
     glyph->root.outline.n_points   = 0;
     glyph->root.outline.n_contours = 0;
-    
+
     hinting = ( load_flags & FT_LOAD_NO_SCALE   ) == 0 &&
               ( load_flags & FT_LOAD_NO_HINTING ) == 0;
 
@@ -183,14 +183,14 @@
                                  T1_Parse_Glyph );
     if ( error )
       goto Exit;
-                      
+
     decoder.builder.no_recurse = ( ( load_flags & FT_LOAD_NO_RECURSE ) != 0 );
 
     decoder.num_subrs = type1->num_subrs;
     decoder.subrs     = type1->subrs;
     decoder.subrs_len = type1->subrs_len;
-   
 
+
     /* now load the unscaled outline */
     error = T1_Parse_Glyph( &decoder, glyph_index );
     if ( error )
@@ -209,7 +209,7 @@
     {
       glyph->root.outline.flags &= ft_outline_owner;
       glyph->root.outline.flags |= ft_outline_reverse_fill;
-      
+
       /* for composite glyphs, return only left side bearing and */
       /* advance width                                           */
       if ( load_flags & FT_LOAD_NO_RECURSE )
--- a/src/type1/t1load.c
+++ b/src/type1/t1load.c
@@ -130,8 +130,8 @@
       if ( blend->num_designs == 0 )
       {
         FT_UInt  nn;
-        
 
+
         /* allocate the blend `private' and `font_info' dictionaries */
         if ( ALLOC_ARRAY( blend->font_infos[1], num_designs, T1_FontInfo )  ||
              ALLOC_ARRAY( blend->privates[1], num_designs, T1_Private )     ||
@@ -142,13 +142,13 @@
 
         blend->font_infos[0] = &face->type1.font_info;
         blend->privates  [0] = &face->type1.private_dict;
-        
+
         for ( nn = 2; nn <= num_designs; nn++ )
         {
           blend->privates[nn]   = blend->privates  [nn - 1] + 1;
           blend->font_infos[nn] = blend->font_infos[nn - 1] + 1;
         }
-        
+
         blend->num_designs   = num_designs;
       }
       else if ( blend->num_designs != num_designs )
@@ -912,7 +912,7 @@
     matrix->yx = temp[1];
     matrix->xy = temp[2];
     matrix->yy = temp[3];
-    
+
     /* note that the offsets must be expressed in integer font units */
     offset->x  = temp[4] >> 16;
     offset->y  = temp[5] >> 16;
@@ -926,7 +926,7 @@
     T1_ParserRec*  parser = &loader->parser;
     FT_Byte*       cur    = parser->root.cursor;
     FT_Byte*       limit  = parser->root.limit;
-    
+
     PSAux_Interface*  psaux = (PSAux_Interface*)face->psaux;
 
 
@@ -972,7 +972,7 @@
       /* We need to `zero' out encoding_table.elements          */
       for ( n = 0; n < count; n++ )
       {
-        char*  notdef = ".notdef";       
+        char*  notdef = ".notdef";
 
 
         T1_Add_Table( char_table, n, notdef, 8 );
@@ -1091,7 +1091,7 @@
 
     PSAux_Interface*  psaux = (PSAux_Interface*)face->psaux;
 
-    
+
     loader->num_subrs = T1_ToInt( parser );
     if ( parser->root.error )
       return;
@@ -1123,7 +1123,7 @@
         break;
 
       index = T1_ToInt( parser );
-      
+
       if ( !read_binary_data( parser, &size, &base ) )
         return;
 
@@ -1296,7 +1296,7 @@
       /* index 0.  Then take end of table name/code and place it into index */
       /* notdef_index.                                                      */
 
-      error = T1_Add_Table( name_table, n, 
+      error = T1_Add_Table( name_table, n,
                             name_table->elements[0],
                             name_table->lengths [0] );
       if ( error )
@@ -1339,7 +1339,7 @@
       /* charstrings dictionary. Worry about /.notdef undefined. */
       /* we take index 0 and add it to the end of the table(s)   */
       /* and add our own /.notdef glyph to index 0.              */
-      
+
       /* 0 333 hsbw endchar                                      */
       FT_Byte  notdef_glyph[] = {0x8B, 0xF7, 0xE1, 0x0D, 0x0E};
       char*    notdef_name    = ".notdef";
@@ -1578,7 +1578,7 @@
     T1_ParserRec*  parser;
     T1_Font*       type1 = &face->type1;
     FT_Error       error;
-    
+
     PSAux_Interface*  psaux = (PSAux_Interface*)face->psaux;
 
 
--- a/src/type1/t1objs.c
+++ b/src/type1/t1objs.c
@@ -183,7 +183,7 @@
     {
       psaux = (PSAux_Interface*)
               FT_Get_Module_Interface( FT_FACE_LIBRARY( face ), "psaux" );
-              
+
       face->psaux = psaux;
     }
 
--- a/src/type1/t1parse.c
+++ b/src/type1/t1parse.c
@@ -85,7 +85,7 @@
   {
     FT_UShort  tag;
     FT_Long    size;
-    
+
   } PFB_Tag;
 
 
@@ -247,7 +247,7 @@
     /* free the base dictionary only when we have a disk stream */
     if ( !parser->in_memory )
       FREE( parser->base_dict );
-      
+
     parser->root.funcs.done( &parser->root );
   }
 
--- a/src/winfonts/winfnt.c
+++ b/src/winfonts/winfnt.c
@@ -462,7 +462,7 @@
       if ( cur->header.pixel_height == size->root.metrics.y_ppem )
       {
         size->font = cur;
-        
+
         size->root.metrics.ascender  = cur->header.ascent * 64;
         size->root.metrics.descender = ( cur->header.pixel_height -
                                            cur->header.ascent ) * 64;
@@ -528,7 +528,7 @@
       glyph_index--;
     else
       glyph_index = font->header.default_char - font->header.first_char;
-      
+
     new_format = font->header.version == 0x300;
     len        = new_format ? 6 : 4;