shithub: freetype+ttf2subf

Download patch

ref: 169a6d8a044c9c775c433c48a663151b20193e7f
parent: 55b0908ef5779f16d08ad4a60eee10a3d36bc2e6
author: Werner Lemberg <[email protected]>
date: Thu Aug 25 02:00:55 EDT 2005

* docs/CHANGES: Mention gxvalid module.

Formatting and other minor changes.

git/fs: mount .git/fs: mount/attach disallowed
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2005-08-24  Werner Lemberg  <[email protected]>
+
+	* docs/CHANGES: Mention gxvalid module.
+
 2005-08-23  Werner Lemberg  <[email protected]>
 
 	* src/autofit/aflatin.c (af_latin_metrics_scale): Initialize
@@ -14,19 +18,19 @@
 	* src/base/rule.mk: Register ftgxval.c.
 	* docs/INSTALL.ANY: Register gxvalid/gxvalid.c.
 
-	* include/freetype/config/ftheader.h: Add macro to include gxvalid
-	header file, FT_GX_VALIDATE_H.
+	* include/freetype/config/ftheader.h (FT_GX_VALIDATE_H): New macro
+	to include gxvalid header file.
 	* include/freetype/config/ftmodule.h: Register gxv_module_class.
 
 	* include/freetype/ftchapters.h: Add comment about gx_validation.
 	* include/freetype/ftotval.h: Change keyword FT_VALIDATE_XXX
-	to FT_VALIDATE_OTXXX to co-exist gxvalid.
-	* include/freetype/tttags.h: Add tag for TrueType GX/AAT tables.
+	to FT_VALIDATE_OTXXX to co-exist with gxvalid.
+	* include/freetype/tttags.h: Add tags for TrueType GX/AAT tables.
 
-	* include/freetype/internal/ftserv.h: Add macro to use gxvalid
-	service, FT_SERVICE_GX_VALIDATE_H
-	* include/freetype/internal/fttrace.h: Add trace facilities
-	for gxvalid.
+	* include/freetype/internal/ftserv.h (FT_SERVICE_GX_VALIDATE_H): New
+	macro for gxvalid service.
+	* include/freetype/internal/fttrace.h: Add trace facilities for
+	gxvalid.
 
 	New files on existing directories:
 
--- a/Jamfile
+++ b/Jamfile
@@ -1,6 +1,6 @@
 # FreeType 2 top Jamfile.
 #
-# Copyright 2001, 2002, 2003, 2004 by
+# Copyright 2001, 2002, 2003, 2004, 2005 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
--- a/docs/CHANGES
+++ b/docs/CHANGES
@@ -6,6 +6,13 @@
 
   II. IMPORTANT CHANGES
 
+    - A  new API  `FT_TrueTypeGX_Validate'  (in FT_GX_VALIDATE_H)  has
+      been added to validate TrueType GX/ATT tables (feat, mort, morx,
+      bsln, just, kern, opbd, trak,  prop).  After validation it is no
+      longer  necessary to  check  for errors  in  those tables  while
+      accessing  them.  This  code  has been  contributed by  Masatake
+      Yamato and Toshiya Suzuki.
+
     - The following callback function types have  changed slightly (by
       adding the `const' keyword where appropriate):
 
--- a/include/freetype/config/ftheader.h
+++ b/include/freetype/config/ftheader.h
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    Build macros of the FreeType 2 library.                              */
 /*                                                                         */
-/*  Copyright 1996-2001, 2002, 2003, 2004 by                               */
+/*  Copyright 1996-2001, 2002, 2003, 2004, 2005 by                         */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */
@@ -556,6 +556,7 @@
   /*    (BASE, GDEF, GPOS, GSUB, JSTF).                                    */
   /*                                                                       */
 #define FT_OPENTYPE_VALIDATE_H  <freetype/ftotval.h>
+
 
   /*************************************************************************/
   /*                                                                       */
--- a/include/freetype/ftgxval.h
+++ b/include/freetype/ftgxval.h
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    FreeType API for validating TrueTypeGX/AAT tables (specification).   */
 /*                                                                         */
-/*  Copyright 2004 by                                                      */
+/*  Copyright 2004, 2005 by                                                */
 /*  Masatake YAMATO, Redhat K.K,                                           */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 /*                                                                         */
@@ -17,9 +17,11 @@
 /***************************************************************************/
 
 /***************************************************************************/
+/*                                                                         */
 /* gxvalid is derived from both gxlayout module and otvalid module.        */
-/* Development of gxlayout is support of Information-technology Promotion  */
-/* Agency(IPA), Japan.                                                     */
+/* Development of gxlayout is supported by the Information-technology      */
+/* Promotion Agency(IPA), Japan.                                           */
+/*                                                                         */
 /***************************************************************************/
 
 
@@ -57,14 +59,16 @@
   /*                                                                       */
   /*************************************************************************/
 
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/* Warnings: Use FT_VALIDATE_XXX to validate a table.                      */
-/*           Following definitions are for gxvalid developers.             */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
+
+  /*************************************************************************/
+  /*                                                                       */
+  /*                                                                       */
+  /* Warning: Use FT_VALIDATE_XXX to validate a table.                     */
+  /*          Following definitions are for gxvalid developers.            */
+  /*                                                                       */
+  /*                                                                       */
+  /*************************************************************************/
+
 #define FT_VALIDATE_feat_INDEX     0
 #define FT_VALIDATE_mort_INDEX     1
 #define FT_VALIDATE_morx_INDEX     2
@@ -78,11 +82,11 @@
 #define FT_VALIDATE_GX_LAST_INDEX  FT_VALIDATE_lcar_INDEX
 #define FT_VALIDATE_GX_LENGTH     (FT_VALIDATE_GX_LAST_INDEX + 1)
 
- /* Up to 0x1000 is used by otvalid.
-    Ox2000 is reserved for feature ot extension. */
+  /* Up to 0x1000 is used by otvalid.
+     Ox2xxx is reserved for feature OT extension. */
 #define FT_VALIDATE_GX_START 0x4000
-#define FT_VALIDATE_GX_BITFIELD(tag)  \
-  (FT_VALIDATE_GX_START << FT_VALIDATE_##tag##_INDEX)
+#define FT_VALIDATE_GX_BITFIELD( tag )                  \
+  ( FT_VALIDATE_GX_START << FT_VALIDATE_##tag##_INDEX )
 
 
  /**********************************************************************
@@ -96,43 +100,43 @@
   *
   * @values:
   *    FT_VALIDATE_feat ::
-  *      Validate feat table.
+  *      Validate `feat' table.
   *
   * @values:
   *    FT_VALIDATE_mort ::
-  *      Validate mort table.
+  *      Validate `mort' table.
   *
   * @values:
   *    FT_VALIDATE_morx ::
-  *      Validate morx table.
+  *      Validate `morx' table.
   *
   * @values:
   *    FT_VALIDATE_bsln ::
-  *      Validate bsln table.
+  *      Validate `bsln' table.
   *
   * @values:
   *    FT_VALIDATE_just ::
-  *      Validate just table.
+  *      Validate `just' table.
   *
   * @values:
   *    FT_VALIDATE_kern ::
-  *      Validate kern table.
+  *      Validate `kern' table.
   *
   * @values:
   *    FT_VALIDATE_opbd ::
-  *      Validate opbd table.
+  *      Validate `opbd' table.
   *
   * @values:
   *    FT_VALIDATE_trak ::
-  *      Validate trak table.
+  *      Validate `trak' table.
   *
   * @values:
   *    FT_VALIDATE_prop ::
-  *      Validate prop table.
+  *      Validate `prop' table.
   *
   * @values:
   *    FT_VALIDATE_lcar ::
-  *      Validate lcar table.
+  *      Validate `lcar' table.
   *
   * @values:
   *    FT_VALIDATE_GX ::
@@ -141,26 +145,26 @@
   *
   */
 
-#define FT_VALIDATE_feat  FT_VALIDATE_GX_BITFIELD(feat)
-#define FT_VALIDATE_mort  FT_VALIDATE_GX_BITFIELD(mort)
-#define FT_VALIDATE_morx  FT_VALIDATE_GX_BITFIELD(morx)
-#define FT_VALIDATE_bsln  FT_VALIDATE_GX_BITFIELD(bsln)
-#define FT_VALIDATE_just  FT_VALIDATE_GX_BITFIELD(just)
-#define FT_VALIDATE_kern  FT_VALIDATE_GX_BITFIELD(kern)
-#define FT_VALIDATE_opbd  FT_VALIDATE_GX_BITFIELD(opbd)
-#define FT_VALIDATE_trak  FT_VALIDATE_GX_BITFIELD(trak)
-#define FT_VALIDATE_prop  FT_VALIDATE_GX_BITFIELD(prop)
-#define FT_VALIDATE_lcar  FT_VALIDATE_GX_BITFIELD(lcar)
+#define FT_VALIDATE_feat  FT_VALIDATE_GX_BITFIELD( feat )
+#define FT_VALIDATE_mort  FT_VALIDATE_GX_BITFIELD( mort )
+#define FT_VALIDATE_morx  FT_VALIDATE_GX_BITFIELD( morx )
+#define FT_VALIDATE_bsln  FT_VALIDATE_GX_BITFIELD( bsln )
+#define FT_VALIDATE_just  FT_VALIDATE_GX_BITFIELD( just )
+#define FT_VALIDATE_kern  FT_VALIDATE_GX_BITFIELD( kern )
+#define FT_VALIDATE_opbd  FT_VALIDATE_GX_BITFIELD( opbd )
+#define FT_VALIDATE_trak  FT_VALIDATE_GX_BITFIELD( trak )
+#define FT_VALIDATE_prop  FT_VALIDATE_GX_BITFIELD( prop )
+#define FT_VALIDATE_lcar  FT_VALIDATE_GX_BITFIELD( lcar )
 
-#define FT_VALIDATE_GX  ( FT_VALIDATE_feat |     \
-                          FT_VALIDATE_mort |     \
-                          FT_VALIDATE_morx |     \
-                          FT_VALIDATE_bsln |     \
-                          FT_VALIDATE_just |     \
-                          FT_VALIDATE_kern |     \
-                          FT_VALIDATE_opbd |     \
-                          FT_VALIDATE_trak |     \
-                          FT_VALIDATE_prop |     \
+#define FT_VALIDATE_GX  ( FT_VALIDATE_feat | \
+                          FT_VALIDATE_mort | \
+                          FT_VALIDATE_morx | \
+                          FT_VALIDATE_bsln | \
+                          FT_VALIDATE_just | \
+                          FT_VALIDATE_kern | \
+                          FT_VALIDATE_opbd | \
+                          FT_VALIDATE_trak | \
+                          FT_VALIDATE_prop | \
                           FT_VALIDATE_lcar )
 
 
@@ -186,12 +190,12 @@
   *       @FT_VALIDATE_GXXXX for possible values.
   *
   *    table_length ::
-  *       The length of tables. Generally FT_VALIDATE_GX_LENGTH should
-  *       be passed.
+  *       The size of the `tables' array.  Normally, `FT_VALIDATE_GX_LENGTH'
+  *       should be passed.
   *
   * @output
   *    tables ::
-  *       The array where each validated sfnt tables are stored to.
+  *       The array where all validated sfnt tables are stored.
   *       The array itself must be allocated by a client.
   *
   * @return:
@@ -201,19 +205,19 @@
   *   This function only works with TrueTypeGX fonts, returning an error
   *   otherwise.
   *
-  *   After use, the application should deallocate the buffers pointed by each
-  *   tables' element.  A NULL value indicates that the table either
-  *   doesn't exist in the font, the application hasn't asked for validation, or
-  *   the validator doesn't have ability to validate the sfnt table.
+  *   After use, the application should deallocate the buffers pointed to by
+  *   each tables' element.  A NULL value indicates that the table either
+  *   doesn't exist in the font, the application hasn't asked for
+  *   validation, or the validator doesn't have the ability to validate the
+  *   sfnt table.
   */
   FT_EXPORT( FT_Error )
-  FT_TrueTypeGX_Validate( FT_Face    face,
-                          FT_UInt    validation_flags,
-                          FT_Bytes   tables[FT_VALIDATE_GX_LENGTH],
-                          FT_UInt    table_length );
+  FT_TrueTypeGX_Validate( FT_Face   face,
+                          FT_UInt   validation_flags,
+                          FT_Bytes  tables[FT_VALIDATE_GX_LENGTH],
+                          FT_UInt   table_length );
 
 
-
   /* */
 
  /**********************************************************************
@@ -223,27 +227,24 @@
   *
   * @description:
   *    A list of bit-field constants used with @FT_ClassicKern_Validate
-  *    to indicate (a) classic kern dialect(s).
+  *    to indicate the classic kern dialect or dialects.  If the selected
+  *    type doesn't fit, @FT_ClassicKern_Validate regards the table as
+  *    invalid.
   *
   * @values:
   *    FT_VALIDATE_MS ::
-  *      Validate the kern table as it has classic Microsoft kern dialect.
-  *      If @FT_ClassicKern_Validate detects the table has the other
-  *      dialect, it regards the table invalid.
+  *      Handle the `kern' table as a classic Microsoft kern table.
   *
   * @values:
   *    FT_VALIDATE_APPLE ::
-  *      Validate the kern table as it has classic Apple kern dialect.
-  *      If @FT_ClassicKern_Validate detects the table has the other
-  *      dialect, it regards the table invalid.
+  *      Handle the `kern' table as a classic Apple kern table.
   *
   * @values:
   *    FT_VALIDATE_CKERN ::
-  *      Validate the kern table as it has classic Apple kern dialect or
-  *      Microsoft kern dialect.
+  *      Handle the `kern' as either classic Apple or Microsoft kern table.
   */
-#define FT_VALIDATE_MS     (FT_VALIDATE_GX_START << 0)
-#define FT_VALIDATE_APPLE  (FT_VALIDATE_GX_START << 1)
+#define FT_VALIDATE_MS     ( FT_VALIDATE_GX_START << 0 )
+#define FT_VALIDATE_APPLE  ( FT_VALIDATE_GX_START << 1 )
 
 #define FT_VALIDATE_CKERN  ( FT_VALIDATE_MS | FT_VALIDATE_APPLE )
 
@@ -256,14 +257,14 @@
   *    FT_ClassicKern_Validate
   *
   * @description:
-  *    Validate classic(16bit format) kern table to assure that the offsets
-  *    and indices are valid.  The idea is that a higher-level library
-  *    which actually does the text layout can access those tables without
-  *    error checking (which can be quite time consuming).
+  *    Validate classic (16bit format) kern table to assure that the offsets
+  *    and indices are valid.  The idea is that a higher-level library which
+  *    actually does the text layout can access those tables without error
+  *    checking (which can be quite time consuming).
   *
-  *    Kern table validator in @FT_TrueTypeGX_Validate deals both
-  *    new 32 bit format and classic 16 bit format. In other hand
-  *    this function supports only the classic 16 bit format.
+  *    The `kern' table validator in @FT_TrueTypeGX_Validate deals with both
+  *    the new 32bit format and the classic 16bit format, while
+  *    FT_ClassicKern_Validate only supports the classic 16bit format.
   *
   * @input:
   *    face ::
@@ -281,14 +282,14 @@
   *   FreeType error code.  0 means success.
   *
   * @note:
-  *   After use, the application should deallocate the buffers pointed by
-  *   ckern_table.  A NULL value indicates that the table either
-  *   doesn't exist in the font.
+  *   After use, the application should deallocate the buffers pointed to by
+  *   ckern_table.  A NULL value indicates that the table doesn't exist in
+  *   the font.
   */
   FT_EXPORT( FT_Error )
-  FT_ClassicKern_Validate( FT_Face   face,
-                           FT_UInt   validation_flags,
-                           FT_Bytes *ckern_table );
+  FT_ClassicKern_Validate( FT_Face    face,
+                           FT_UInt    validation_flags,
+                           FT_Bytes  *ckern_table );
 
 
  /* */
--- a/include/freetype/internal/services/svgxval.h
+++ b/include/freetype/internal/services/svgxval.h
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    FreeType API for validating TrueTypeGX/AAT tables (specification).   */
 /*                                                                         */
-/*  Copyright 2004 by                                                      */
+/*  Copyright 2004, 2005 by                                                */
 /*  Masatake YAMATO, Red Hat K.K.,                                         */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 /*                                                                         */
@@ -17,11 +17,14 @@
 /***************************************************************************/
 
 /***************************************************************************/
+/*                                                                         */
 /* gxvalid is derived from both gxlayout module and otvalid module.        */
-/* Development of gxlayout was support of Information-technology Promotion */
-/* Agency(IPA), Japan.                                                     */
+/* Development of gxlayout is supported by the Information-technology      */
+/* Promotion Agency(IPA), Japan.                                           */
+/*                                                                         */
 /***************************************************************************/
 
+
 #ifndef __SVGXVAL_H__
 #define __SVGXVAL_H__
 
@@ -35,16 +38,16 @@
 #define FT_SERVICE_ID_CLASSICKERN_VALIDATE  "classickern-validate"
 
   typedef FT_Error
-  (*gxv_validate_func)( FT_Face    face,
-                        FT_UInt    gx_flags,
-                        FT_Bytes   tables[FT_VALIDATE_GX_LENGTH],
-                        FT_UInt    table_length );
+  (*gxv_validate_func)( FT_Face   face,
+                        FT_UInt   gx_flags,
+                        FT_Bytes  tables[FT_VALIDATE_GX_LENGTH],
+                        FT_UInt   table_length );
 
 
   typedef FT_Error
-  (*ckern_validate_func) ( FT_Face   face,
-                           FT_UInt   ckern_flags,
-                           FT_Bytes  *ckern_table );
+  (*ckern_validate_func)( FT_Face   face,
+                          FT_UInt   ckern_flags,
+                          FT_Bytes  *ckern_table );
 
 
   FT_DEFINE_SERVICE( GXvalidate )
--- a/include/freetype/tttags.h
+++ b/include/freetype/tttags.h
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    Tags for TrueType and OpenType tables (specification only).          */
 /*                                                                         */
-/*  Copyright 1996-2001, 2004 by                                           */
+/*  Copyright 1996-2001, 2004, 2005 by                                     */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */
@@ -79,8 +79,8 @@
 #define TTAG_post  FT_MAKE_TAG( 'p', 'o', 's', 't' )
 #define TTAG_prep  FT_MAKE_TAG( 'p', 'r', 'e', 'p' )
 #define TTAG_prop  FT_MAKE_TAG( 'p', 'r', 'o', 'p' )
-#define TTAG_true  FT_MAKE_TAG( 't', 'r', 'u', 'e' )
 #define TTAG_trak  FT_MAKE_TAG( 't', 'r', 'a', 'k' )
+#define TTAG_true  FT_MAKE_TAG( 't', 'r', 'u', 'e' )
 #define TTAG_ttc   FT_MAKE_TAG( 't', 't', 'c', ' ' )
 #define TTAG_ttcf  FT_MAKE_TAG( 't', 't', 'c', 'f' )
 #define TTAG_VDMX  FT_MAKE_TAG( 'V', 'D', 'M', 'X' )
--- a/src/base/Jamfile
+++ b/src/base/Jamfile
@@ -1,6 +1,6 @@
 # FreeType 2 src/base Jamfile
 #
-# Copyright 2001, 2002, 2003, 2004 by
+# Copyright 2001, 2002, 2003, 2004, 2005 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
--- a/src/base/ftgxval.c
+++ b/src/base/ftgxval.c
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    FreeType API for validating TrueTyepGX/AAT tables (body).            */
 /*                                                                         */
-/*  Copyright 2004 by                                                      */
+/*  Copyright 2004, 2005 by                                                */
 /*  Masatake YAMATO, Redhat K.K,                                           */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 /*                                                                         */
@@ -17,22 +17,26 @@
 /***************************************************************************/
 
 /***************************************************************************/
+/*                                                                         */
 /* gxvalid is derived from both gxlayout module and otvalid module.        */
-/* Development of gxlayout was support of Information-technology Promotion */
-/* Agency(IPA), Japan.                                                     */
+/* Development of gxlayout is supported by the Information-technology      */
+/* Promotion Agency(IPA), Japan.                                           */
+/*                                                                         */
 /***************************************************************************/
 
+
 #include <ft2build.h>
 #include FT_INTERNAL_OBJECTS_H
 #include FT_SERVICE_GX_VALIDATE_H
 
+
   /* documentation is in ftgxval.h */
 
   FT_EXPORT_DEF( FT_Error )
-  FT_TrueTypeGX_Validate( FT_Face    face,
-                          FT_UInt    validation_flags,
-                          FT_Bytes   tables[FT_VALIDATE_GX_LENGTH],
-                          FT_UInt    table_length )
+  FT_TrueTypeGX_Validate( FT_Face   face,
+                          FT_UInt   validation_flags,
+                          FT_Bytes  tables[FT_VALIDATE_GX_LENGTH],
+                          FT_UInt   table_length )
   {
     FT_Service_GXvalidate  service;
     FT_Error               error;
@@ -66,9 +70,9 @@
 
 
   FT_EXPORT_DEF( FT_Error )
-  FT_ClassicKern_Validate( FT_Face   face,
-                           FT_UInt   validation_flags,
-                           FT_Bytes *ckern_table )
+  FT_ClassicKern_Validate( FT_Face    face,
+                           FT_UInt    validation_flags,
+                           FT_Bytes  *ckern_table )
   {
     FT_Service_CKERNvalidate  service;
     FT_Error                  error;