Commit 5158fbc03d99ef6fd699b453206cdda3205b7d34

David Turner 2003-03-27T21:35:44

* README: udpated * README.UNX: removed (now replaced by docs/INSTALL.UNX) * src/pshinter/pshalgo3.c: the hinter now performs as in 2.1.3 and will ignore stem quantization only when FT_LOAD_TARGET_SMOOTH is used * src/base/ftobjs.c: changed the default computations to include rounding in all cases, this is required to provide accurate kerning data when native TrueType hinting is enabled. * src/type1/t1load.c: the Type 1 loader now accepts more general names according to the Postscript spec (the previous one was too restrictive)

diff --git a/ChangeLog b/ChangeLog
index 04a45d8..2917038 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+2003-03-27  David Turner  <david@freetype.org>
+
+   * README: udpated
+
+   * README.UNX: removed (now replaced by docs/INSTALL.UNX)
+
+   * src/pshinter/pshalgo3.c: the hinter now performs as in 2.1.3 and
+   will ignore stem quantization only when FT_LOAD_TARGET_SMOOTH is used
+
+   * src/base/ftobjs.c: changed the default computations to include rounding
+   in all cases, this is required to provide accurate kerning data when
+   native TrueType hinting is enabled.
+
+   * src/type1/t1load.c: the Type 1 loader now accepts more general names
+   according to the Postscript spec (the previous one was too restrictive)
+
 2003-03-20  David Turner  <david@freetype.org>
 
     * docs/*: serious rewriting of the documentation
diff --git a/README b/README
index 8090c62..13445c7 100644
--- a/README
+++ b/README
@@ -2,9 +2,9 @@
   Special notes to Unix users
   ===========================
 
-  Please   read  the  file   "README.UNX",  it   contains  important
-  information  regarding  the   installation  of  FreeType  on  Unix
-  systems, especially GNU based operating systems like GNU/Linux.
+  Please   read  the  file   "docs/UPGRADE.UNX",  it   contains  important
+  information  regarding  the  installation  of  FreeType on Unix systems,
+  especially GNU based operating systems like GNU/Linux.
 
   FreeType 2's library is called `libfreetype', FreeType 1's library
   is called `libttf'.  They are *not* compatible!
@@ -16,8 +16,7 @@
   Please   read  the  docs/CHANGES   file,  it   contains  IMPORTANT
   INFORMATION.
 
-  Read  the  files "docs/INSTALL"  or  "docs/BUILD" for installation
-  instructions.
+  Read  the  files "docs/INSTALL"  for installation instructions.
 
   Note  that the  FreeType 2  documentation  is now  available as  a
   separate package from our sites.  See:
diff --git a/README.UNX b/README.UNX
deleted file mode 100644
index 6ed8edd..0000000
--- a/README.UNX
+++ /dev/null
@@ -1,141 +0,0 @@
-
-SPECIAL NOTE FOR UNIX USERS
-===========================
-
-  If  you are installing  this release  of FreeType  on a  system that
-  already uses release  2.0.5 (or even an older  version), you have to
-  perform a few special steps to ensure that everything goes well.
-
-
-
-  I. Enable the TrueType bytecode hinter if you need it
-  -----------------------------------------------------
-
-    The  TrueType  bytecode  interpreter  is disabled  in  all  public
-    releases  of  the  FreeType  packages  for  patents  reasons  (see
-    http://www.freetype.org/patents.html for more details).
-
-    However, many Linux distributions do enable the interpreter in the
-    FreeType packages (DEB/RPM/etc.) they produce for their platforms.
-    If you are using TrueType  fonts on your system, you most probably
-    want to enable it manually by doing the following:
-
-      - open the file "include/freetype/config/ftoption.h"
-
-      - locate a line that says:
-
-          #undef TT_CONFIG_OPTION_BYTECODE_INTERPRETER
-
-      - change it to:
-
-          #define TT_CONFIG_OPTION_BYTECODE_INTERPRETER
-
-    of course, this must be done _before_ compiling the library
-
-
-
-  II. Determine the correct installation path
-  --------------------------------------------
-
-    By  default,  the  source  package  will install  the  library  in
-    "/usr/local".   However, many Unix  distributions now  install the
-    library in  "/usr", since FreeType  is becoming a  critical system
-    component.
-
-    If FreeType is already installed on your system, type
-
-      freetype-config --prefix
-
-    on the command line.  This  should return the installation path to
-    use below  (e.g. "/usr"  or "/usr/local").  Otherwise,  simply use
-    "/usr" (or what you think is adequate for your installation).
-
-
-
-  III. Ensure that you are using GNU Make
-  ---------------------------------------
-
-    The FreeType build system  _exclusively_ works with GNU Make.  You
-    will  not be  able to  compile the  library with  the instructions
-    below using any other alternative (including BSD Make).
-
-    Trying  to compile  the library  with a  different Make  tool will
-    print a message like:
-
-      Sorry, GNU make is required to build FreeType2.
-
-    and the build  process will be aborted.  If  this happens, install
-    GNU Make on your system,  and use the GNUMAKE environment variable
-    to name it.
-
-
-
-  IV. Build and install the library
-  ---------------------------------
-
-    The following  should work  on all Unix  systems where  the `make'
-    command invokes GNU Make:
-
-      ./configure --prefix=<yourprefix>
-      make
-      make install           (as root)
-
-    where "<yourprefix>"  must be replaced  by the prefix  returned by
-    the "freetype-config" command.
-
-    When using a different command to invoke GNU Make, use the GNUMAKE
-    variable.  For example,  if `gmake' is the command  to use on your
-    system, do something like:
-
-       GNUMAKE=gmake ./configure --prefix=<yourprefix>
-       gmake
-       gmake install            (as root)
-
-    If  this  still  doesn't   work,  read  the  detailed  compilation
-    procedure available in the file "docs/BUILD" for troubleshooting.
-
-
-  V. Take care of XFree86 version 4
-  ---------------------------------
-
-    Certain recent Linux distributions will install _several_ versions
-    of FreeType on your system.   For example, on a fresh Mandrake 8.1
-    system, you can find the following files:
-
-      /usr/lib/libfreetype.so             which links to
-      /usr/lib/libfreetype.6.1.0.so
-
-    and
-
-      /usr/X11R6/lib/libfreetype.so       which links to
-      /usr/X11R6/lib/libfreetype.6.0.so
-
-    Note that these  files correspond to two distinct  versions of the
-    library!   It seems  that  this  surprising issue  is  due to  the
-    install  scripts  of recent  XFree86  servers  (from 4.1.0)  which
-    irremediably install  their own (dated) version of  the library in
-    "/usr/X11R6/lib".
-
-    In certain _rare_  cases you may experience minor  problems if you
-    install this release  of the library in "/usr"  only, namely, that
-    certain  applications will  not  benefit from  the  bug fixes  and
-    rendering improvements you'd expect.
-
-    There are two good ways to deal with this situation:
-
-      - Install  the library  _twice_, in  "/usr" and  in "/usr/X11R6"
-        (you  have to do  that each  time you  install a  new FreeType
-        release though).
-
-      - Change the link in /usr/X11R6/lib/libfreetype.so to point to
-
-          /usr/lib/libfreetype.so,
-
-        and get rid of
-
-          /usr/X11R6/lib/libfreetype.6.0.so
-
-    The FreeType Team  is not responsible for this  problem, so please
-    contact  either  the  XFree86   development  team  or  your  Linux
-    distributor to help clear this issue in case the information given
-    here doesn't help.
diff --git a/src/base/ftobjs.c b/src/base/ftobjs.c
index 32ae99b..40fd286 100644
--- a/src/base/ftobjs.c
+++ b/src/base/ftobjs.c
@@ -1425,20 +1425,13 @@
     if ( char_height < 1 * 64 )
       char_height = 1 * 64;
 
-    /* Compute pixel sizes in 26.6 units */
-#ifdef FT_CONFIG_CHESTER_BLUE_SCALE
-    dim_x = ( char_width  * horz_resolution ) / 72;
-    dim_y = ( char_height * vert_resolution ) / 72;
-
-    metrics->x_ppem = (FT_UShort)( (dim_x+32) >> 6 );
-    metrics->y_ppem = (FT_UShort)( (dim_y+32) >> 6 );
-#else
-    dim_x = ( ( ( char_width  * horz_resolution ) / 72 ) + 32 ) & -64;
-    dim_y = ( ( ( char_height * vert_resolution ) / 72 ) + 32 ) & -64;
+   /* Compute pixel sizes in 26.6 units. we use rounding
+    */
+    dim_x = ( ( char_width  * horz_resolution + (36+32*72) ) / 72 ) & -64;
+    dim_y = ( ( char_height * vert_resolution + (36+32*72) ) / 72 ) & -64;
 
     metrics->x_ppem  = (FT_UShort)( dim_x >> 6 );
     metrics->y_ppem  = (FT_UShort)( dim_y >> 6 );
-#endif
 
     metrics->x_scale = 0x10000L;
     metrics->y_scale = 0x10000L;
diff --git a/src/pshinter/pshalgo3.c b/src/pshinter/pshalgo3.c
index 9480841..77f39bd 100644
--- a/src/pshinter/pshalgo3.c
+++ b/src/pshinter/pshalgo3.c
@@ -332,7 +332,7 @@
   /*************************************************************************/
   /*************************************************************************/
 
-#if 0
+#if 1
   static FT_Pos
   psh3_dimension_quantize_len( PSH_Dimension  dim,
                                FT_Pos         len,
@@ -520,7 +520,6 @@
           hint->cur_pos = pos;
           hint->cur_len = fit_len;
 
-#if 0
          /* stem adjustment tries to snap stem widths to standard
           * ones. this is important to prevent unpleasant rounding
           * artefacts...
@@ -545,7 +544,6 @@
               len = psh3_dimension_quantize_len( dim, len, 0 );
             }
           }
-#endif /* 0 */
 
           /* now that we have a good hinted stem width, try to position */
           /* the stem along a pixel grid integer coordinate             */
@@ -602,6 +600,8 @@
   }
 
 
+#if 0  /* not used for now, experimental */
+
  /*
   *  A variant to perform "light" hinting (i.e. FT_RENDER_MODE_LIGHT)
   *  of stems
@@ -780,6 +780,8 @@
     }
   }
 
+#endif /* 0 */
+
 
   static void
   psh3_hint_table_align_hints( PSH3_Hint_Table  table,
diff --git a/src/type1/t1load.c b/src/type1/t1load.c
index 02220db..5873ae0 100644
--- a/src/type1/t1load.c
+++ b/src/type1/t1load.c
@@ -779,17 +779,25 @@
 
 
   static int
-  is_alpha( FT_Byte  c )
+  is_name_char( FT_Byte  c )
   {
-    /* Note: we must accept "+" as a valid character, as it is used in */
-    /*       embedded type1 fonts in PDF documents.                    */
-    /*                                                                 */
-    return ( ft_isalnum( c ) ||
-             c == '.'        ||
-             c == '_'        ||
-             c == '-'        ||
-             c == '+'        );
-  }
+    /* Note: PostScript allows any non-delimiting, non-whitespace      */
+    /*       in a name (PS Ref Manual, 3rd Ed, p31)                    */
+    /*       PostScript delimiters include (,),<,>,[,],{,},/ and %     */
+
+    return ( c != '(' &&
+             c != ')' &&
+             c != '<' &&
+             c != '>' &&
+             c != '[' &&
+             c != ']' &&
+             c != '{' &&
+             c != '}' &&
+             c != '/' &&
+             c != '%' &&
+             ! is_space( c ) 
+             );
+ }
 
 
   static int
@@ -861,7 +869,7 @@
 
     cur++;
     cur2 = cur;
-    while ( cur2 < limit && is_alpha( *cur2 ) )
+    while ( cur2 < limit && is_name_char( *cur2 ) )
       cur2++;
 
     len = cur2 - cur;
@@ -1070,7 +1078,7 @@
             FT_PtrDist  len;
 
 
-            while ( cur2 < limit && is_alpha( *cur2 ) )
+            while ( cur2 < limit && is_name_char( *cur2 ) )
               cur2++;
 
             len = cur2 - cur - 1;
@@ -1312,7 +1320,7 @@
         FT_PtrDist  len;
 
 
-        while ( cur2 < limit && is_alpha( *cur2 ) )
+        while ( cur2 < limit && is_name_char( *cur2 ) )
           cur2++;
         len = cur2 - cur - 1;
 
@@ -1572,7 +1580,7 @@
 
           cur++;
           cur2 = cur;
-          while ( cur2 < limit && is_alpha( *cur2 ) )
+          while ( cur2 < limit && is_name_char( *cur2 ) )
             cur2++;
 
           len = cur2 - cur;