shithub: freetype+ttf2subf

Download patch

ref: 33d023680fe7e09d334ade3d5b7fe64bca9ef794
parent: 940d30640f72e9c2bd0ee6b8ec15de78cd59eb47
author: Werner Lemberg <[email protected]>
date: Wed Dec 6 11:31:30 EST 2000

* builds/module.mk: Replaced `xxx #' with `xxx$(space).
* builds/os2/detekt.mk, builds/win32/detekt.mk: Moved comment to
avoid trailing spaces in variable.
* builds/freetype.mk: Use $(D) instead of $D to make statement more
readable.

* docs/docmaker.py: Formatting.

* src/psaux/psauxmod.c: Fixed a broken inclusion of component
header files (an FT_FLAT_COMPILE test was missing).
* src/cache/ftcmanag.c (FTC_Manager_Done): Fixed a bug that caused
an occasional crash when the function was called (due to a dangling
pointer).
* src/base/ftsystem.c (FT_Done_Memory): Fixed an obvious bug:
The ANSI "free()" function was called instead of "memory->free()".
* docs/docmaker.py: Added section filtering, multi-page generation
(index page generation is still missing though).
* builds/unix/install.mk, builds/unix/ft2unix.h: The file "ft2unix.h"
is now installed as <ft2build.h> for Unix systems.  Note that we
still use the "freetype2/freetype" installation path for now.

* many files: Now using <ft2build.h> as the default build and setup
configuration file in all public headers.  Internal source files
still need some changes though.
* builds/devel/ft2build.h, builds/devel/ftoption.h: Created a new
Win32 developer builds.
builds/win32/w32-dev.mk: Changed the developer build targets to
"devel-gcc" and "devel-bcc" in order to be able to develop with the
Borland C++ compiler.

git/fs: mount .git/fs: mount/attach disallowed
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,36 +1,46 @@
+2000-12-06  Werner Lemberg  <[email protected]>
+
+	* builds/module.mk: Replaced `xxx #' with `xxx$(space).
+	* builds/os2/detekt.mk, builds/win32/detekt.mk: Moved comment to
+	avoid trailing spaces in variable.
+	* builds/freetype.mk: Use $(D) instead of $D to make statement more
+	readable.
+
+	* docs/docmaker.py: Formatting.
+
 2000-12-05  David Turner  <[email protected]>
 
-	* src/psaux/psauxmod.c: fixed a broken inclusion of component
-	header files (a FT_FLAT_COMPILE test was missing)
+	* src/psaux/psauxmod.c: Fixed a broken inclusion of component
+	header files (an FT_FLAT_COMPILE test was missing).
 
-	* src/cache/ftcmanag.c (FTC_Manager_Done): fixed a bug that caused
-        an occasional crash when the function was called (due to a dangling
-        pointer)
+	* src/cache/ftcmanag.c (FTC_Manager_Done): Fixed a bug that caused
+	an occasional crash when the function was called (due to a dangling
+	pointer).
 
-	* src/base/ftsystem.c (FT_Done_Memory): fixed an obvious bug,
-	the ANSI "free" function was called, instead of "memory->free()"
+	* src/base/ftsystem.c (FT_Done_Memory): Fixed an obvious bug:
+	The ANSI "free()" function was called instead of "memory->free()".
 
-	* docs/docmaker.py: added section filtering, multi-page generation
-	(index page generation is still missing though)
+	* docs/docmaker.py: Added section filtering, multi-page generation
+	(index page generation is still missing though).
 
 2000-12-04  David Turner  <[email protected]>
 
-	* builds/unix/install.mk, builds/unix/ft2unix.h: the file "ft2unix.h"
-	is now installed as <ft2build.h> for Unix systems. Note that we still
-	use the "freetype2/freetype" installation path for now..
+	* builds/unix/install.mk, builds/unix/ft2unix.h: The file "ft2unix.h"
+	is now installed as <ft2build.h> for Unix systems.  Note that we
+	still use the "freetype2/freetype" installation path for now.
 
-	* many files: now using <ft2build.h> as the default build and setup
-	configuration file in all public headers. Internal source files still
-	need some changes though..
+	* many files: Now using <ft2build.h> as the default build and setup
+	configuration file in all public headers.  Internal source files
+	still need some changes though.
 
-	* builds/devel/ft2build.h, builds/devel/ftoption.h: created a new
+	* builds/devel/ft2build.h, builds/devel/ftoption.h: Created a new
 	directory to hold all development options for both the Unix and
-	Win32 developer builds..
+	Win32 developer builds.
 
 	* builds/win32/detect.mk, builds/win32/w32-bccd.mk,
-	builds/win32/w32-dev.mk: changed the developer build targets to
-	"devel-gcc" and "devel-bcc" in order to be able to develop with
-	the Borland C++ compiler.
+	builds/win32/w32-dev.mk: Changed the developer build targets to
+	"devel-gcc" and "devel-bcc" in order to be able to develop with the
+	Borland C++ compiler.
 
 2000-12-01  David Turner  <[email protected]>
 
--- a/builds/freetype.mk
+++ b/builds/freetype.mk
@@ -92,13 +92,13 @@
 BASE_DIR := $(SRC)$(SEP)base
 
 # The build header file used to define all public header file names
-# as macro
+# as macro.
 #
 ifndef FT_BUILD_H
-FT_BUILD_H  := $(TOP)$(SEP)include$(SEP)ft2build.h
-FTBUILD_CMD :=
+  FT_BUILD_H  := $(TOP)$(SEP)include$(SEP)ft2build.h
+  FTBUILD_CMD :=
 else
-FTBUILD_CMD = $DFT_BUILD_H=$(FT_BUILD_H)
+  FTBUILD_CMD = $(D)FT_BUILD_H=$(FT_BUILD_H)
 endif
 
 # A few short-cuts in order to avoid typing $(SEP) all the time for the
--- a/builds/modules.mk
+++ b/builds/modules.mk
@@ -51,7 +51,7 @@
 # removing.
 #
 ifneq ($(findstring $(PLATFORM),dos win32 win16 os2),)
-  OPEN_MODULE  := @echo #
+  OPEN_MODULE  := @echo$(space)
   CLOSE_MODULE :=  >> $(subst $(SEP),$(HOSTSEP),$(MODULE_LIST))
 else
   OPEN_MODULE  := @echo "
@@ -64,7 +64,7 @@
 OPEN_DRIVER  := $(OPEN_MODULE)FT_USE_MODULE(
 CLOSE_DRIVER := )$(CLOSE_MODULE)
 
-ECHO_DRIVER      := @echo "* module: #
+ECHO_DRIVER      := @echo "* module:$(space)
 ECHO_DRIVER_DESC := (
 ECHO_DRIVER_DONE := )"
 
--- a/builds/os2/detect.mk
+++ b/builds/os2/detect.mk
@@ -21,7 +21,8 @@
     COPY     := copy
     DELETE   := del
 
-    CONFIG_FILE := os2-gcc.mk   # gcc-emx by default
+    # gcc-emx by default
+    CONFIG_FILE := os2-gcc.mk
     SEP         := /
 
     # additionally, we provide hooks for various other compilers
--- a/builds/win32/detect.mk
+++ b/builds/win32/detect.mk
@@ -46,7 +46,8 @@
     DELETE   := del
     COPY     := copy
 
-    CONFIG_FILE := w32-gcc.mk  # gcc Makefile by default
+    # gcc Makefile by default
+    CONFIG_FILE := w32-gcc.mk
     SEP         := /
     ifeq ($(firstword $(CC)),cc)
       CC        := gcc
--- a/docs/docmaker.py
+++ b/docs/docmaker.py
@@ -97,7 +97,7 @@
 #  /*                        */
 #  /**************************/
 #
-# Each block contains a list of markers, each one can be followed by
+# Each block contains a list of markers; each one can be followed by
 # some arbitrary text or a list of fields. Here's an example:
 #
 #    <Struct>
@@ -111,18 +111,18 @@
 #       y :: vertical coordinate
 #
 #
-# This example defines three markers: 'Struct', 'Description' & 'Fields'
+# This example defines three markers: 'Struct', 'Description' & 'Fields'.
 # The first two markers contain arbitrary text, while the last one contains
-# a list of field
+# a list of fields.
 #
-# each field is simple of the format:  WORD :: TEXT....
+# Each field is simple of the format:  WORD :: TEXT...
 #
-# Note that typically, each comment block is followed by some source
-# code declaration that may need to be kept in the reference..
+# Note that typically each comment block is followed by some source
+# code declaration that may need to be kept in the reference.
 #
 # Note that markers can alternatively be written as "@MARKER:"
-# instead of "<MAKRER>". All marker identifiers are converted to
-# lower case during parsing, in order to simply sorting..
+# instead of "<MARKER>". All marker identifiers are converted to
+# lower case during parsing in order to simply sorting.
 #
 # We associate with each block the following source lines that do not
 # begin with a comment. For example, the following:
@@ -142,7 +142,7 @@
 #
 #
 #  will only keep the first two lines of sources with
-#  the "blabla" block
+#  the "blabla" block.
 #
 #  However, the comment will be kept, with following source lines
 #  if it contains a starting '#' or '@' as in:
@@ -155,16 +155,16 @@
 
 
 
-##############################################################################
+#############################################################################
 #
 # The DocCode class is used to store source code lines
 #
-#   self.lines contains a set of source code lines that will
+#   'self.lines' contains a set of source code lines that will
 #   be dumped as HTML in a <PRE> tag.
 #
-#   the object is filled line by line by the parser, it strips the
+#   The object is filled line by line by the parser; it strips the
 #   leading "margin" space from each input line before storing it
-#   in self.lines
+#   in 'self.lines'.
 #
 class DocCode:
 
@@ -172,8 +172,10 @@
         self.lines  = []
         self.margin = margin
 
+
     def add( self, line ):
         # remove margin whitespace
+        #
         if string.strip( line[: self.margin] ) == "":
             line = line[self.margin :]
         self.lines.append( line )
@@ -184,13 +186,16 @@
             print "--" + line
         print ""
 
+
     def get_identifier( self ):
         # this function should never be called
-        return "UNKNOWN_CODE_IDENTIFIER!!"
+        #
+        return "UNKNOWN_CODE_IDENTIFIER!"
 
-    def dump_html( self ):
 
+    def dump_html( self ):
         # clean the last empty lines
+        #
         l = len( self.lines ) - 1
         while l > 0 and string.strip( self.lines[l - 1] ) == "":
             l = l - 1
@@ -201,12 +206,12 @@
         print code_footer
 
 
-##############################################################################
+#############################################################################
 #
-# The DocParagraph is used to store text paragraphs
-# self.words is simply a list of words for the paragraph
+# The DocParagraph is used to store text paragraphs.
+# 'self.words' is simply a list of words for the paragraph.
 #
-# the paragraph is filled line by line by the parser..
+# The paragraph is filled line by line by the parser.
 #
 class DocParagraph:
 
@@ -213,36 +218,38 @@
     def __init__( self ):
         self.words = []
 
+
     def add( self, line ):
-        # get rid of unwanted spaces in the paragraph
+        # Get rid of unwanted spaces in the paragraph.
         #
-        # the following line is the same as
+        # The following line is the same as
         #
         #   self.words.extend( string.split( line ) )
         #
-        # but older Python versions don't have the `extend' attribute
+        # but older Python versions don't have the `extend' attribute.
         #
         last = len(self.words)
         self.words[last:last] = string.split( line )
 
-    # this function is used to retrieve the first word of a given
-    # paragraph..
+
+    # This function is used to retrieve the first word of a given
+    # paragraph.
+    #
     def get_identifier( self ):
         if self.words:
             return self.words[0]
 
         # should never happen
-        return "UNKNOWN_PARA_IDENTIFIER!!"
+        #
+        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
@@ -254,7 +261,7 @@
         if cursor > 0:
             print line
 
-        #print "�" #for debugging only
+        # print "�" # for debugging only
 
 
     def dump_string( self ):
@@ -268,43 +275,43 @@
 
 
     def dump_html( self ):
-
         print para_header
         self.dump()
         print para_footer
 
 
-###########################################################################
+#############################################################################
 #
 # DocContent is used to store the content of a given marker.
 #
-# the "self.items" list contains (field,elements) record, where
+# The "self.items" list contains (field,elements) records, where
 # "field" corresponds to a given structure fields or function
 # parameter (indicated by a "::"), or NULL for a normal section
-# of text/code
+# of text/code.
 #
-# hence, the following example:
+# Hence, the following example:
 #
 #   <MyMarker>
-#      this is an example of what can be put in a content section,
+#      This is an example of what can be put in a content section,
 #
-#      a second line of example text
+#      A second line of example text.
 #
-#      x :: a simple test field, with some content
-#      y :: even before, this field has some code content
+#      x :: A simple test field, with some contents.
+#      y :: Even before, this field has some code contents.
 #           {
 #             y = x+2;
 #           }
 #
 # should be stored as
+#
 #     [ ( None, [ DocParagraph, DocParagraph] ),
 #       ( "x",  [ DocParagraph ] ),
 #       ( "y",  [ DocParagraph, DocCode ] ) ]
 #
-# in self.items
+# in 'self.items'.
 #
-# the DocContent object is entirely built at creation time, you must
-# pass a list of input text lines lin the "lines_list" parameter..
+# The DocContent object is entirely built at creation time; you must
+# pass a list of input text lines in the "lines_list" parameter.
 #
 #
 class DocContent:
@@ -323,7 +330,6 @@
         field       = None   # the current field
 
         for aline in lines_list:
-
             if code_mode == 0:
                 line   = string.lstrip( aline )
                 l      = len( line )
@@ -331,8 +337,8 @@
 
                 # 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
@@ -351,21 +357,24 @@
                 # the token `::'
                 #
                 if len( words ) >= 2 and words[1] == "::":
-
                     # start a new field - complete current paragraph if any
+                    #
                     if paragraph:
                         elements.append( paragraph )
                         paragraph = None
 
                     # 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 )
                     if not paragraph:
@@ -373,14 +382,15 @@
                     paragraph.add( line )
 
             else:
-                # we're in code mode..
+                # 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..
+                # 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
@@ -389,6 +399,7 @@
                     code_margin = 0
 
                 # otherwise, add the line to the current paragraph
+                #
                 else:
                     if not code:
                         code = DocCode()
@@ -410,7 +421,8 @@
                 return element.get_identifier()
 
         # should never happen
-        return "UNKNOWN_CONTENT_IDENTIFIER!!"
+        #
+        return "UNKNOWN_CONTENT_IDENTIFIER!"
 
 
     def get_title( self ):
@@ -420,7 +432,8 @@
                 return element.dump_string()
 
         # should never happen
-        return "UNKNOWN_CONTENT_TITLE"
+        #
+        return "UNKNOWN_CONTENT_TITLE!"
 
 
     def dump( self ):
@@ -435,8 +448,8 @@
             if field:
                 print "</field>        "
 
-    def dump_html( self ):
 
+    def dump_html( self ):
         n        = len( self.items )
         in_table = 0
 
@@ -445,7 +458,6 @@
             field = item[0]
 
             if not field:
-
                 if in_table:
                     print "</td></tr></table>"
                     in_table = 0
@@ -452,6 +464,7 @@
 
                 for element in item[1]:
                     element.dump_html()
+
             else:
                 if not in_table:
                     print "<table cellpadding=4><tr valign=top><td>"
@@ -474,15 +487,15 @@
 # The DocBlock class is used to store a given comment block. It contains
 # a list of markers, as well as a list of contents for each marker.
 #
-#   "self.items" is a list of ( marker, contents ) elements, where
+#   "self.items" is a list of (marker, contents) elements, where
 #   'marker' is a lowercase marker string, and 'contents' is a DocContent
-#   object
+#   object.
 #
 #   "self.source" is simply a list of text lines taken from the
-#   uncommented source itself..
+#   uncommented source itself.
 #
-#   finally, "self.identifier" is  a simple identifier used to
-#   uniquely identify the block
+#   Finally, "self.identifier" is a simple identifier used to
+#   uniquely identify the block.
 #
 class DocBlock:
 
@@ -529,19 +542,20 @@
             self.source = source_line_list
 
         # now retrieve block name when possible
+        #
         if self.items:
             first     = self.items[0]
             self.name = first[1].get_identifier()
 
 
-    # this function is used to add a new element to self.items
-    #  'marker' is a marker string, or None
-    #  'lines' is a list of text lines used to compute a list of
-    #          DocContent objects
+    # This function adds a new element to 'self.items'.
+    #   'marker' is a marker string, or None.
+    #   'lines'  is a list of text lines used to compute a list of
+    #            DocContent objects.
     #
     def add( self, marker, lines ):
-
         # remove the first and last empty lines from the content list
+        #
         l = len( lines )
         if l > 0:
             i = 0
@@ -552,10 +566,12 @@
             lines = lines[i : l]
             l     = len( lines )
 
-        # add a new marker only if its marker and its content list aren't empty
+        # add a new marker only if its marker and its content list
+        # aren't empty
+        #
         if l > 0 and marker:
-            content = DocContent(lines)
-            self.items.append( ( string.lower(marker), content ) )
+            content = DocContent( lines )
+            self.items.append( ( string.lower( marker ), content ) )
             if not self.identifier:
                 self.identifier = content.get_identifier()
 
@@ -567,7 +583,6 @@
         return None
 
 
-
     def dump( self ):
         for i in range( len( self.items ) ):
             print "[" + self.items[i][0] + "]"
@@ -574,20 +589,22 @@
             content = self.items[i][1]
             content.dump()
 
-    def dump_html( self ):
 
-	types = [ 'type', 'struct', 'functype', 'function', 'constant',
+    def dump_html( self ):
+        types = [ 'type', 'struct', 'functype', 'function', 'constant',
                   'enum', 'macro' ]
 
         if not self.items:
-              return
+            return
 
         # start of a block
+        #
         print block_header
 
         print "<h2>" + self.identifier + "</h2>"
 
         # print source code
+        #
         if not self.source:
             return
 
@@ -601,8 +618,8 @@
         print source_footer
 
         # dump each (marker,content) element
+        #
         for element in self.items:
-
             marker  = element[0]
             content = element[1]
 
@@ -611,7 +628,7 @@
                 content.dump_html()
                 print "</ul>"
 
-            elif not (marker in types):
+            elif not ( marker in types ):
                 print "<h4>" + marker + "</h4>"
                 print "<ul>"
                 content.dump_html()
@@ -624,11 +641,10 @@
 
 ######################################################################################
 #
+# The DocSection class is used to store a given documentation section.
 #
-# The DocSection class is used to store a given documentation section
+# Each section is made of an identifier, an abstract and a description.
 #
-# Each section is made of an identifier, an abstract and a description
-#
 # For example, look at:
 #
 #   <Section> Basic_Data_Types
@@ -638,29 +654,31 @@
 #
 #   <Description>
 #      FreeType defines several basic data types for all its
-#      operations....
+#      operations...
 #
 class DocSection:
 
     def __init__( self, block ):
         self.block       = block
-        self.name        = string.lower(block.name)
-        self.abstract    = block.find_content("abstract")
-        self.description = block.find_content("description")
-        title_content    = block.find_content("title")
+        self.name        = string.lower( block.name )
+        self.abstract    = block.find_content( "abstract" )
+        self.description = block.find_content( "description" )
+        title_content    = block.find_content( "title" )
         if title_content:
-            self.title = title_content.get_title()
+            self.title   = title_content.get_title()
         else:
-            self.title = "UNKNOWN SECTION TITLE !!"
+            self.titles  = "UNKNOWN_SECTION_TITLE!"
         self.elements    = {}
         self.list        = []
         self.filename    = self.name + ".html"
 
-        #sys.stderr.write( "new section '"+self.name+"'" )
+        # sys.stderr.write( "new section '" + self.name + "'" )
 
+
     def add_element( self, block ):
         # check that we don't have a duplicate element in this
-        # section..
+        # section
+        #
         if self.elements.has_key( block.name ):
             sys.stderr.write( "ERROR - duplicate element definition for " + 
                               "'" + block.name + "' in section '" +
@@ -675,19 +693,23 @@
         """make an HTML page from a given DocSection"""
 
         # print HTML header
+        #
         print html_header
 
         # print title
+        #
         print section_title_header
         print self.title
         print section_title_footer
 
         # print description
+        #
         print block_header
         self.description.dump_html()
         print block_footer
 
         # print elements
+        #
         for element in self.list:
             element.dump_html()
 
@@ -694,41 +716,42 @@
         print html_footer
 
 
-
-
-
 class DocSectionList:
 
-    def  __init__( self ):
+    def __init__( self ):
         self.sections        = {}
         self.list            = []
         self.current_section = None
 
 
-    def  append_section( self, block ):
-        name       = block.name
-        abstract   = block.find_content( "abstract" )
+    def append_section( self, block ):
+        name     = block.name
+        abstract = block.find_content( "abstract" )
 
-        if self.sections.has_key(name):
-            # there is already a section with this name in our
+        if self.sections.has_key( name ):
+            # There is already a section with this name in our
             # list. We'll try to complete it.
-
+            #
             section = self.sections[name]
             if section.abstract:
-                # this section already has an abstract defined,
+                # This section already has an abstract defined;
                 # simply check that the new section doesn't
                 # provide a new one.
+                #
                 if abstract:
                     stderr.write( "ERROR - duplicate section definition" +
                                   " for '" + name + "'" )
                     sys.quit()
             else:
-                # the old section didn't contain an abstract, we're
-                # now going to replace it
+                # The old section didn't contain an abstract; we're
+                # now going to replace it.
+                #
                 section.abstract    = abstract
                 section.description = block.find_content( "description" )
+
         else:
             # a new section
+            #
             section = DocSection( block )
             self.sections[name] = section
             self.list.append( section )
@@ -743,12 +766,13 @@
                 self.append_section( block )
 
             elif self.current_section:
-                #sys.stderr.write( "  new block" )
+                # sys.stderr.write( "  new block" )
                 self.current_section.add_element( block )
 
 
     def dump_html_toc( self ):
         # dump an html table of contents
+        #
         print html_header
 
         print "<center><h1>Table of Contents</h1></center>"
@@ -756,7 +780,7 @@
         print "<center><table cellpadding=5>"
         for section in self.list:
             print "<tr valign=top><td>"
-            print '<a href="'+section.filename+'">'
+            print '<a href="' + section.filename + '">'
             print section.title
             print "</a></td><td>"
             section.abstract.dump_html()
@@ -779,12 +803,11 @@
 
 
 
-# filter a given list of DocBlocks. Returns a new list
+# Filter a given list of DocBlocks. Returns a new list
 # of DocBlock objects that only contains element whose
-# "type" (i.e. first marker) is in the "types" parameter
+# "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:
@@ -796,8 +819,8 @@
     return new_list
 
 
-# perform a lexicographical comparison of two DocBlock
-# objects. Returns -1, 0 or 1
+# Perform a lexicographical comparison of two DocBlock
+# objects. Returns -1, 0 or 1.
 #
 def block_lexicographical_compare( b1, b2 ):
     if not b1.identifier:
@@ -805,8 +828,9 @@
     if not b2.identifier:
         return 1
 
-    id1 = string.lower(b1.identifier)
-    id2 = string.lower(b2.identifier)
+    id1 = string.lower( b1.identifier )
+    id2 = string.lower( b2.identifier )
+
     if id1 < id2:
         return -1
     elif id1 == id2:
@@ -828,7 +852,6 @@
 # dump a list block as a single HTML page
 #
 def dump_html_1( block_list ):
-
     print html_header
 
     for block in block_list:
@@ -846,7 +869,7 @@
     block  = []
     format = 0
 
-    # we use "format" to store the state of our parser:
+    # We use "format" to store the state of our parser:
     #
     #  0 - wait for beginning of comment
     #  1 - parse comment format 1
@@ -855,18 +878,17 @@
     #  4 - wait for beginning of source (or comment ??)
     #  5 - process source
     #
-
     comment     = []
     source      = []
     state       = 0
 
     for line in fileinput.input():
-
         l = len( line )
         if l > 0 and line[l - 1] == '\012':
             line = line[0 : l - 1]
 
         # stripped version of the line
+        #
         line2 = string.strip( line )
         l     = len( line2 )
 
@@ -888,7 +910,6 @@
                 format = 0
 
         if format == 0:  #### wait for beginning of comment ####
-
             if l > 3 and line2[0 : 3] == '/**':
                 i = 3
                 while i < l and line2[i] == '*':
@@ -916,14 +937,16 @@
         #
         elif format == 1:
 
-            # if the line doesn't begin with a "*", something went
-            # wrong, and we must exit, and forget the current block..
+            # If the line doesn't begin with a "*", something went
+            # wrong, and we must exit, and forget the current block.
+            #
             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 '/'
+            # Otherwise, we test for an end of block, which is an
+            # arbitrary number of '*', followed by '/'.
+            #
             else:
                 i = 1
                 while i < l and line2[i] == '*':
@@ -930,6 +953,7 @@
                     i = i + 1
 
                 # test for the end of the block
+                #
                 if i < l and line2[i] == '/':
                     if block != []:
                         format = 4
@@ -937,6 +961,7 @@
                         format = 0
                 else:
                     # otherwise simply append line to current block
+                    #
                     block.append( line2[i:] )
 
                 continue
@@ -947,8 +972,9 @@
         #
         elif format == 2:
 
-            # if the line doesn't begin with '/*' and end with '*/',
-            # this is the end of the format 2 format
+            # If the line doesn't begin with '/*' and end with '*/',
+            # this is the end of the format 2 format.
+            #
             if l < 4 or line2[: 2] != '/*' or line2[-2 :] != '*/':
                 if block != []:
                     format = 4
@@ -957,9 +983,11 @@
             else:
                 # remove the start and end comment delimiters, then
                 # right-strip the line
+                #
                 line2 = string.rstrip( line2[2 : -2] )
 
                 # check for end of a format2 block, i.e. a run of '*'
+                #
                 if string.count( line2, '*' ) == l - 4:
                     if block != []:
                         format = 4
@@ -967,14 +995,12 @@
                         format = 0
                 else:
                     # otherwise, add the line to the current block
+                    #
                     block.append( line2 )
 
                 continue
 
-
-
         if format >= 4:  #### source processing ####
-
             if l > 0:
                 format = 5
 
@@ -981,7 +1007,6 @@
             if format == 5:
                 source.append( line )
 
-
     if format >= 4:
         list.append( [block, source] )
 
@@ -988,7 +1013,6 @@
     return list
 
 
-
 # This function is only used for debugging
 #
 def dump_block_list( list ):
@@ -1003,7 +1027,6 @@
     print "---------the end-----------------------"
 
 
-
 def main( argv ):
     """main program loop"""
     sys.stderr.write( "extracting comment blocks from sources...\n" )
@@ -1017,14 +1040,14 @@
     section_list.dump_html_toc()
     section_list.dump_html_sections()
 
-    #list2 = filter_blocks( list, ['type','macro','enum','constant', 'functype'] )
-    #list2 = list
-    #list2.sort( block_lexicographical_compare )
+    # 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 )
-    #dump_html_1( list )
+    # dump_html_1( list2 )
+    # dump_doc_blocks( list )
+    # dump_block_lists( list )
+    # dump_html_1( list )
 
 
 # If called from the command line
--- a/include/freetype/config/ft2build.h
+++ b/include/freetype/config/ft2build.h
@@ -162,19 +162,19 @@
   /*                                                                       */
   /*************************************************************************/
 
-  /* don't add spaces around arguments to FT_CONFIG_FILE! */
+  /* don't add spaces around arguments to FT2_CONFIG_FILE! */
 
   /* configuration files */
-#ifndef   FT_CONFIG_CONFIG_H
-#  define FT_CONFIG_CONFIG_H     FT2_CONFIG_FILE(ftconfig.h)
+#ifndef FT_CONFIG_CONFIG_H
+#define FT_CONFIG_CONFIG_H     FT2_CONFIG_FILE(ftconfig.h)
 #endif
 
-#ifndef   FT_CONFIG_OPTIONS_H
-#  define FT_CONFIG_OPTIONS_H    FT2_CONFIG_FILE(ftoption.h)
+#ifndef FT_CONFIG_OPTIONS_H
+#define FT_CONFIG_OPTIONS_H    FT2_CONFIG_FILE(ftoption.h)
 #endif
 
-#ifndef   FT_CONFIG_MODULES_H
-#  define FT_CONFIG_MODULES_H    FT2_CONFIG_FILE(ftmodule.h)
+#ifndef FT_CONFIG_MODULES_H
+#define FT_CONFIG_MODULES_H    FT2_CONFIG_FILE(ftmodule.h)
 #endif
 
   /* public headers */
--- a/include/ft2build.h
+++ b/include/ft2build.h
@@ -16,7 +16,7 @@
 /*                                                                         */
 /*                                                                         */
 /*  This file corresponds to the default "ft2build.h" file for             */
-/*  FreeType 2. It uses the "freetype" include root.                       */
+/*  FreeType 2.  It uses the "freetype" include root.                      */
 /*                                                                         */
 /*  Note that specific platforms might use a different configurations.     */
 /*  For example, on Unix, the "freetype2" include root is used, with       */
@@ -23,7 +23,6 @@
 /*  a specific "ft2build.h" used to take care of this. The latter          */
 /*  looks like the following:                                              */
 /*                                                                         */
-/*                                                                         */
 /*     #ifndef __FT_BUILD_UNIX_H__                                         */
 /*     #define __FT_BUILD_UNIX_H__                                         */
 /*                                                                         */
@@ -31,7 +30,6 @@
 /*     #include <FT_ROOT/config/ft2build.h>                                */
 /*                                                                         */
 /*     #endif // __FT_BUILD_UNIX_H__                                       */
-/*                                                                         */
 /*                                                                         */
 /***************************************************************************/
 
--- a/src/psaux/psauxmod.c
+++ b/src/psaux/psauxmod.c
@@ -17,13 +17,17 @@
 
 
 #ifdef FT_FLAT_COMPILE
-#  include "psauxmod.h"
-#  include "psobjs.h"
-#  include "t1decode.h"
+
+#include "psauxmod.h"
+#include "psobjs.h"
+#include "t1decode.h"
+
 #else
-#  include <psaux/psauxmod.h>
-#  include <psaux/psobjs.h>
-#  include <psaux/t1decode.h>
+
+#include <psaux/psauxmod.h>
+#include <psaux/psobjs.h>
+#include <psaux/t1decode.h>
+
 #endif
 
 
--- a/src/psaux/psobjs.c
+++ b/src/psaux/psobjs.c
@@ -21,9 +21,13 @@
 #include <freetype/internal/ftdebug.h>
 
 #ifdef FT_FLAT_COMPILE
-#  include "psobjs.h"
+
+#include "psobjs.h"
+
 #else
-#  include <psaux/psobjs.h>
+
+#include <psaux/psobjs.h>
+
 #endif
 
 
--- a/src/psaux/t1decode.c
+++ b/src/psaux/t1decode.c
@@ -23,11 +23,15 @@
 
 
 #ifdef FT_FLAT_COMPILE
-#  include "t1decode.h"
-#  include "psobjs.h"
+
+#include "t1decode.h"
+#include "psobjs.h"
+
 #else
-#  include <psaux/t1decode.h>
-#  include <psaux/psobjs.h>
+
+#include <psaux/t1decode.h>
+#include <psaux/psobjs.h>
+
 #endif