shithub: freetype+ttf2subf

Download patch

ref: 6bbbbc1523a3a4f81aac30d7a538875546ca4b9c
parent: ce27fd56fab737dadc1780bbfb0c6b192cfa6d8b
author: Werner Lemberg <[email protected]>
date: Sun Jul 4 03:37:56 EDT 2010

TrueType hinting is no longer patented.

* include/freetype/config/ftoption.h, devel/ftoption.h
(TT_CONFIG_OPTION_BYTECODE_INTERPRETER): Define.
(TT_CONFIG_OPTION_UNPATENTED_HINTING): Undefine.

* docs/CHANGES, docs/INSTALL, include/freetype/freetype.h: Updated.
* docs/TRUETYPE, docs/PATENTS: Removed.

git/fs: mount .git/fs: mount/attach disallowed
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2010-07-04  Werner Lemberg  <[email protected]>
+
+	TrueType hinting is no longer patented.
+
+	* include/freetype/config/ftoption.h, devel/ftoption.h
+	(TT_CONFIG_OPTION_BYTECODE_INTERPRETER): Define.
+	(TT_CONFIG_OPTION_UNPATENTED_HINTING): Undefine.
+
+	* docs/CHANGES, docs/INSTALL, include/freetype/freetype.h: Updated.
+	* docs/TRUETYPE, docs/PATENTS: Removed.
+
 2010-07-04  suzuki toshiya  <[email protected]>
 
 	Check error value by `FT_CMap_New'.
--- a/devel/ftoption.h
+++ b/devel/ftoption.h
@@ -488,8 +488,7 @@
   /*************************************************************************/
   /*                                                                       */
   /* Define TT_CONFIG_OPTION_BYTECODE_INTERPRETER if you want to compile   */
-  /* a bytecode interpreter in the TrueType driver.  Note that there are   */
-  /* important patent issues related to the use of the interpreter.        */
+  /* a bytecode interpreter in the TrueType driver.                        */
   /*                                                                       */
   /* By undefining this, you will only compile the code necessary to load  */
   /* TrueType glyphs without hinting.                                      */
@@ -504,10 +503,13 @@
   /*                                                                       */
   /* If you define TT_CONFIG_OPTION_UNPATENTED_HINTING, a special version  */
   /* of the TrueType bytecode interpreter is used that doesn't implement   */
-  /* any of the patented opcodes and algorithms.  Note that the            */
-  /* TT_CONFIG_OPTION_UNPATENTED_HINTING macro is *ignored* if you define  */
-  /* TT_CONFIG_OPTION_BYTECODE_INTERPRETER; in other words, either define  */
-  /* TT_CONFIG_OPTION_BYTECODE_INTERPRETER or                              */
+  /* any of the patented opcodes and algorithms.  The patents related to   */
+  /* TrueType hinting have expired worldwide since May 2010; this option   */
+  /* is now deprecated.                                                    */
+  /*                                                                       */
+  /* Note that the TT_CONFIG_OPTION_UNPATENTED_HINTING macro is *ignored*  */
+  /* if you define TT_CONFIG_OPTION_BYTECODE_INTERPRETER; in other words,  */
+  /* either define TT_CONFIG_OPTION_BYTECODE_INTERPRETER or                */
   /* TT_CONFIG_OPTION_UNPATENTED_HINTING but not both at the same time.    */
   /*                                                                       */
   /* This macro is only useful for a small number of font files (mostly    */
--- a/docs/CHANGES
+++ b/docs/CHANGES
@@ -1,11 +1,21 @@
-CHANGES BETWEEN 2.3.12 and 2.3.13
+CHANGES BETWEEN 2.3.12 and 2.4.0
 
   I. IMPORTANT CHANGES
 
+    - Since May 2010, all patents regarding the TrueType bytecode
+      interpreter have expired worldwide.  Consequently, we now define
+      TT_CONFIG_OPTION_BYTECODE_INTERPRETER by default (and undefine
+      TT_CONFIG_OPTION_UNPATENTED_HINTING).
+
     - A new function `FT_Library_SetLcdFilterWeights' is available  to
       adjust the filter weights set by `FT_Library_SetLcdFilter'.
 
+  II. MISCELLANEOUS
 
+    - Thanks to many reports from Robert Święcki, FreeType's stability
+      in handling broken or damaged fonts could be much improved.
+
+
 ======================================================================
 
 CHANGES BETWEEN 2.3.11 and 2.3.12
@@ -15,6 +25,7 @@
     - For  `FT_Open_Face',  new  parameters  are  available  to ignore
       preferred family names: FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY and
       FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY.
+
 
   II. MISCELLANEOUS
 
--- a/docs/INSTALL
+++ b/docs/INSTALL
@@ -7,14 +7,8 @@
 I. Normal installation and upgrades
 ===================================
 
-  1. Native TrueType Hinting
+  1. Unix Systems (including Mac OS X, Cygwin, and MSys on Windows)
 
-    Native TrueType hinting is  disabled by default[1].  If you really
-    need it, read the file `TRUETYPE' for information.
-
-
-  2. Unix Systems (including Mac OS X, Cygwin, and MSys on Windows)
-
     Please read *both* `UPGRADE.UNIX' and `INSTALL.UNIX' to install or
     upgrade FreeType  2 on  a Unix system.   Note that you  *need* GNU
     Make for automatic compilation,  since other make tools won't work
@@ -23,15 +17,15 @@
     GNU Make VERSION 3.80 OR NEWER IS NEEDED!
 
 
-  3. On VMS with the `mms' build tool
+  2. On VMS with the `mms' build tool
 
     See `INSTALL.VMS' for installation instructions on this platform.
 
 
-  4. Other systems using GNU Make
+  3. Other systems using GNU Make
 
     On non-Unix platforms,  it is possible to build  the library using
-    GNU Make  utility.  Note that  *NO OTHER MAKE TOOL  WILL WORK*[2]!
+    GNU Make  utility.  Note that  *NO OTHER MAKE TOOL  WILL WORK*[1]!
     This  methods supports  several  compilers on  Windows, OS/2,  and
     BeOS, including MinGW, Visual C++, Borland C++, and more.
 
@@ -38,7 +32,7 @@
     Instructions are provided in the file `INSTALL.GNU'.
 
 
-  5. With an IDE Project File (e.g., for Visual Studio or CodeWarrior)
+  4. With an IDE Project File (e.g., for Visual Studio or CodeWarrior)
 
     We provide a  small number of `project files'  for various IDEs to
     automatically build  the library as  well.  Note that  these files
@@ -49,7 +43,7 @@
     directory, where <system> stands for your OS or environment.
 
 
-  6. From you own IDE, or own Makefiles
+  5. From you own IDE, or own Makefiles
 
     If  you  want  to  create   your  own  project  file,  follow  the
     instructions   given  in  the   `INSTALL.ANY'  document   of  this
@@ -66,9 +60,7 @@
 
 ----------------------------------------------------------------------
 
-[1] More details on:  http://www.freetype.org/patents.html
-
-[2] make++, a make tool written in Perl, has sufficient support of GNU
+[1] make++, a make tool written in Perl, has sufficient support of GNU
     make extensions to build FreeType.  See
 
       http://makepp.sourceforge.net
@@ -78,8 +70,8 @@
 
 ----------------------------------------------------------------------
 
-Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by
-David Turner, Robert Wilhelm, and Werner Lemberg.
+Copyright   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010
+by David Turner, Robert Wilhelm, and Werner Lemberg.
 
 This  file is  part of  the FreeType  project, and  may only  be used,
 modified,  and distributed  under the  terms of  the  FreeType project
--- a/docs/PATENTS
+++ /dev/null
@@ -1,27 +1,0 @@
-
-                    FreeType Patents Disclaimer
-                            August 1999
-
-
-
-WE HAVE  DISCOVERED THAT APPLE  OWNS SEVERAL PATENTS RELATED  TO THE
-RENDERING OF TRUETYPE  FONTS.  THIS COULD MEAN THAT  THE FREE USE OF
-FREETYPE  MIGHT BE  ILLEGAL IN  THE USA,  JAPAN, AND  POSSIBLY OTHER
-COUNTRIES, BE IT IN PROPRIETARY OR FREE SOFTWARE PRODUCTS.
-
-FOR  MORE DETAILS,  WE STRONGLY  ADVISE YOU  TO GO  TO  THE FREETYPE
-PATENTS PAGE AT THE FOLLOWING WEB ADDRESS:
-
-                http://www.freetype.org/patents.html
-
-WE WILL NOT PLACE INFORMATION IN THIS FILE AS THE SITUATION IS STILL
-UNDETERMINED FOR NOW.  AT THE  TIME THESE LINES ARE WRITTEN, WE HAVE
-CONTACTED APPLE'S  LEGAL DEPARTMENT AND ARE STILL  WAITING FOR THEIR
-ANSWER ON THE SUBJECT.
-
-PLEASE READ  THE `INSTALL' FILE TO  SEE HOW TO  DISABLE THE ENGINE'S
-BYTECODE INTERPRETER IN ORDER TO  BUILD A PATENT-FREE ENGINE, AT THE
-COST OF RENDERING QUALITY.
-
-
---- end of PATENTS ---
--- a/docs/TRUETYPE
+++ /dev/null
@@ -1,40 +1,0 @@
-How to enable the TrueType native 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:
-
-        /* #define TT_CONFIG_OPTION_BYTECODE_INTERPRETER */
-
-    - change it to:
-
-        #define TT_CONFIG_OPTION_BYTECODE_INTERPRETER
-
-  These steps must be done _before_ compiling the library.
-
-------------------------------------------------------------------------
-
-Copyright 2003, 2005, 2006 by
-David Turner, Robert Wilhelm, and Werner Lemberg.
-
-This  file is  part  of the  FreeType  project, and  may  only be  used,
-modified,  and  distributed under  the  terms  of  the FreeType  project
-license, LICENSE.TXT.  By continuing  to use, modify, or distribute this
-file  you indicate that  you have  read the  license and  understand and
-accept it fully.
-
-
---- end of TRUETYPE ---
--- a/include/freetype/config/ftoption.h
+++ b/include/freetype/config/ftoption.h
@@ -488,8 +488,7 @@
   /*************************************************************************/
   /*                                                                       */
   /* Define TT_CONFIG_OPTION_BYTECODE_INTERPRETER if you want to compile   */
-  /* a bytecode interpreter in the TrueType driver.  Note that there are   */
-  /* important patent issues related to the use of the interpreter.        */
+  /* a bytecode interpreter in the TrueType driver.                        */
   /*                                                                       */
   /* By undefining this, you will only compile the code necessary to load  */
   /* TrueType glyphs without hinting.                                      */
@@ -497,7 +496,7 @@
   /*   Do not #undef this macro here, since the build system might         */
   /*   define it for certain configurations only.                          */
   /*                                                                       */
-/* #define TT_CONFIG_OPTION_BYTECODE_INTERPRETER */
+#define TT_CONFIG_OPTION_BYTECODE_INTERPRETER
 
 
   /*************************************************************************/
@@ -504,10 +503,13 @@
   /*                                                                       */
   /* If you define TT_CONFIG_OPTION_UNPATENTED_HINTING, a special version  */
   /* of the TrueType bytecode interpreter is used that doesn't implement   */
-  /* any of the patented opcodes and algorithms.  Note that the            */
-  /* TT_CONFIG_OPTION_UNPATENTED_HINTING macro is *ignored* if you define  */
-  /* TT_CONFIG_OPTION_BYTECODE_INTERPRETER; in other words, either define  */
-  /* TT_CONFIG_OPTION_BYTECODE_INTERPRETER or                              */
+  /* any of the patented opcodes and algorithms.  The patents related to   */
+  /* TrueType hinting have expired worldwide since May 2010; this option   */
+  /* is now deprecated.                                                    */
+  /*                                                                       */
+  /* Note that the TT_CONFIG_OPTION_UNPATENTED_HINTING macro is *ignored*  */
+  /* if you define TT_CONFIG_OPTION_BYTECODE_INTERPRETER; in other words,  */
+  /* either define TT_CONFIG_OPTION_BYTECODE_INTERPRETER or                */
   /* TT_CONFIG_OPTION_UNPATENTED_HINTING but not both at the same time.    */
   /*                                                                       */
   /* This macro is only useful for a small number of font files (mostly    */
@@ -544,7 +546,7 @@
   /*     ...                                                               */
   /*   }                                                                   */
   /*                                                                       */
-#define TT_CONFIG_OPTION_UNPATENTED_HINTING
+/* #define TT_CONFIG_OPTION_UNPATENTED_HINTING */
 
 
   /*************************************************************************/
--- a/include/freetype/freetype.h
+++ b/include/freetype/freetype.h
@@ -3834,6 +3834,9 @@
   /*    1~if this is a TrueType font that uses one of the patented         */
   /*    opcodes, 0~otherwise.                                              */
   /*                                                                       */
+  /* <Note>                                                                */
+  /*    Since May 2010, TrueType hinting is no longer patented.            */
+  /*                                                                       */
   /* <Since>                                                               */
   /*    2.3.5                                                              */
   /*                                                                       */
@@ -3860,6 +3863,9 @@
   /*    The old setting value.  This will always be false if this is not   */
   /*    an SFNT font, or if the unpatented hinter is not compiled in this  */
   /*    instance of the library.                                           */
+  /*                                                                       */
+  /* <Note>                                                                */
+  /*    Since May 2010, TrueType hinting is no longer patented.            */
   /*                                                                       */
   /* <Since>                                                               */
   /*    2.3.5                                                              */
--- a/include/freetype/ftmodapi.h
+++ b/include/freetype/ftmodapi.h
@@ -397,8 +397,8 @@
    *
    *    FT_TRUETYPE_ENGINE_TYPE_PATENTED ::
    *       The library implements a bytecode interpreter that covers
-   *       the full instruction set of the TrueType virtual machine.
-   *       See the file `docs/PATENTS' for legal aspects.
+   *       the full instruction set of the TrueType virtual machine (this
+   *       was governed by patents until May 2010, hence the name).
    *
    *  @since:
    *       2.2