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.
--- 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;