* docs/CHANGES: Mention gxvalid module.

Formatting and other minor changes.
This commit is contained in:
Werner Lemberg 2005-08-25 06:00:55 +00:00
parent 75840c7b1d
commit 52950741e5
9 changed files with 133 additions and 113 deletions

View File

@ -1,3 +1,7 @@
2005-08-24 Werner Lemberg <wl@gnu.org>
* docs/CHANGES: Mention gxvalid module.
2005-08-23 Werner Lemberg <wl@gnu.org> 2005-08-23 Werner Lemberg <wl@gnu.org>
* src/autofit/aflatin.c (af_latin_metrics_scale): Initialize * src/autofit/aflatin.c (af_latin_metrics_scale): Initialize
@ -14,19 +18,19 @@
* src/base/rule.mk: Register ftgxval.c. * src/base/rule.mk: Register ftgxval.c.
* docs/INSTALL.ANY: Register gxvalid/gxvalid.c. * docs/INSTALL.ANY: Register gxvalid/gxvalid.c.
* include/freetype/config/ftheader.h: Add macro to include gxvalid * include/freetype/config/ftheader.h (FT_GX_VALIDATE_H): New macro
header file, FT_GX_VALIDATE_H. to include gxvalid header file.
* include/freetype/config/ftmodule.h: Register gxv_module_class. * include/freetype/config/ftmodule.h: Register gxv_module_class.
* include/freetype/ftchapters.h: Add comment about gx_validation. * include/freetype/ftchapters.h: Add comment about gx_validation.
* include/freetype/ftotval.h: Change keyword FT_VALIDATE_XXX * include/freetype/ftotval.h: Change keyword FT_VALIDATE_XXX
to FT_VALIDATE_OTXXX to co-exist gxvalid. to FT_VALIDATE_OTXXX to co-exist with gxvalid.
* include/freetype/tttags.h: Add tag for TrueType GX/AAT tables. * include/freetype/tttags.h: Add tags for TrueType GX/AAT tables.
* include/freetype/internal/ftserv.h: Add macro to use gxvalid * include/freetype/internal/ftserv.h (FT_SERVICE_GX_VALIDATE_H): New
service, FT_SERVICE_GX_VALIDATE_H macro for gxvalid service.
* include/freetype/internal/fttrace.h: Add trace facilities * include/freetype/internal/fttrace.h: Add trace facilities for
for gxvalid. gxvalid.
New files on existing directories: New files on existing directories:

View File

@ -1,6 +1,6 @@
# FreeType 2 top Jamfile. # FreeType 2 top Jamfile.
# #
# Copyright 2001, 2002, 2003, 2004 by # Copyright 2001, 2002, 2003, 2004, 2005 by
# David Turner, Robert Wilhelm, and Werner Lemberg. # David Turner, Robert Wilhelm, and Werner Lemberg.
# #
# This file is part of the FreeType project, and may only be used, modified, # This file is part of the FreeType project, and may only be used, modified,

View File

@ -6,6 +6,13 @@ LATEST CHANGES BETWEEN 2.2.0 and 2.1.10
II. IMPORTANT CHANGES 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 - The following callback function types have changed slightly (by
adding the `const' keyword where appropriate): adding the `const' keyword where appropriate):

View File

@ -4,7 +4,7 @@
/* */ /* */
/* Build macros of the FreeType 2 library. */ /* 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. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -557,6 +557,7 @@
/* */ /* */
#define FT_OPENTYPE_VALIDATE_H <freetype/ftotval.h> #define FT_OPENTYPE_VALIDATE_H <freetype/ftotval.h>
/*************************************************************************/ /*************************************************************************/
/* */ /* */
/* @macro: */ /* @macro: */

View File

@ -4,7 +4,7 @@
/* */ /* */
/* FreeType API for validating TrueTypeGX/AAT tables (specification). */ /* FreeType API for validating TrueTypeGX/AAT tables (specification). */
/* */ /* */
/* Copyright 2004 by */ /* Copyright 2004, 2005 by */
/* Masatake YAMATO, Redhat K.K, */ /* Masatake YAMATO, Redhat K.K, */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
@ -17,9 +17,11 @@
/***************************************************************************/ /***************************************************************************/
/***************************************************************************/ /***************************************************************************/
/* */
/* gxvalid is derived from both gxlayout module and otvalid module. */ /* gxvalid is derived from both gxlayout module and otvalid module. */
/* Development of gxlayout is support of Information-technology Promotion */ /* Development of gxlayout is supported by the Information-technology */
/* Agency(IPA), Japan. */ /* Promotion Agency(IPA), Japan. */
/* */
/***************************************************************************/ /***************************************************************************/
@ -57,14 +59,16 @@ FT_BEGIN_HEADER
/* */ /* */
/*************************************************************************/ /*************************************************************************/
/***************************************************************************/
/* */ /*************************************************************************/
/* */ /* */
/* 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_feat_INDEX 0
#define FT_VALIDATE_mort_INDEX 1 #define FT_VALIDATE_mort_INDEX 1
#define FT_VALIDATE_morx_INDEX 2 #define FT_VALIDATE_morx_INDEX 2
@ -78,11 +82,11 @@ FT_BEGIN_HEADER
#define FT_VALIDATE_GX_LAST_INDEX FT_VALIDATE_lcar_INDEX #define FT_VALIDATE_GX_LAST_INDEX FT_VALIDATE_lcar_INDEX
#define FT_VALIDATE_GX_LENGTH (FT_VALIDATE_GX_LAST_INDEX + 1) #define FT_VALIDATE_GX_LENGTH (FT_VALIDATE_GX_LAST_INDEX + 1)
/* Up to 0x1000 is used by otvalid. /* Up to 0x1000 is used by otvalid.
Ox2000 is reserved for feature ot extension. */ Ox2xxx is reserved for feature OT extension. */
#define FT_VALIDATE_GX_START 0x4000 #define FT_VALIDATE_GX_START 0x4000
#define FT_VALIDATE_GX_BITFIELD(tag) \ #define FT_VALIDATE_GX_BITFIELD( tag ) \
(FT_VALIDATE_GX_START << FT_VALIDATE_##tag##_INDEX) ( FT_VALIDATE_GX_START << FT_VALIDATE_##tag##_INDEX )
/********************************************************************** /**********************************************************************
@ -96,43 +100,43 @@ FT_BEGIN_HEADER
* *
* @values: * @values:
* FT_VALIDATE_feat :: * FT_VALIDATE_feat ::
* Validate feat table. * Validate `feat' table.
* *
* @values: * @values:
* FT_VALIDATE_mort :: * FT_VALIDATE_mort ::
* Validate mort table. * Validate `mort' table.
* *
* @values: * @values:
* FT_VALIDATE_morx :: * FT_VALIDATE_morx ::
* Validate morx table. * Validate `morx' table.
* *
* @values: * @values:
* FT_VALIDATE_bsln :: * FT_VALIDATE_bsln ::
* Validate bsln table. * Validate `bsln' table.
* *
* @values: * @values:
* FT_VALIDATE_just :: * FT_VALIDATE_just ::
* Validate just table. * Validate `just' table.
* *
* @values: * @values:
* FT_VALIDATE_kern :: * FT_VALIDATE_kern ::
* Validate kern table. * Validate `kern' table.
* *
* @values: * @values:
* FT_VALIDATE_opbd :: * FT_VALIDATE_opbd ::
* Validate opbd table. * Validate `opbd' table.
* *
* @values: * @values:
* FT_VALIDATE_trak :: * FT_VALIDATE_trak ::
* Validate trak table. * Validate `trak' table.
* *
* @values: * @values:
* FT_VALIDATE_prop :: * FT_VALIDATE_prop ::
* Validate prop table. * Validate `prop' table.
* *
* @values: * @values:
* FT_VALIDATE_lcar :: * FT_VALIDATE_lcar ::
* Validate lcar table. * Validate `lcar' table.
* *
* @values: * @values:
* FT_VALIDATE_GX :: * FT_VALIDATE_GX ::
@ -141,26 +145,26 @@ FT_BEGIN_HEADER
* *
*/ */
#define FT_VALIDATE_feat FT_VALIDATE_GX_BITFIELD(feat) #define FT_VALIDATE_feat FT_VALIDATE_GX_BITFIELD( feat )
#define FT_VALIDATE_mort FT_VALIDATE_GX_BITFIELD(mort) #define FT_VALIDATE_mort FT_VALIDATE_GX_BITFIELD( mort )
#define FT_VALIDATE_morx FT_VALIDATE_GX_BITFIELD(morx) #define FT_VALIDATE_morx FT_VALIDATE_GX_BITFIELD( morx )
#define FT_VALIDATE_bsln FT_VALIDATE_GX_BITFIELD(bsln) #define FT_VALIDATE_bsln FT_VALIDATE_GX_BITFIELD( bsln )
#define FT_VALIDATE_just FT_VALIDATE_GX_BITFIELD(just) #define FT_VALIDATE_just FT_VALIDATE_GX_BITFIELD( just )
#define FT_VALIDATE_kern FT_VALIDATE_GX_BITFIELD(kern) #define FT_VALIDATE_kern FT_VALIDATE_GX_BITFIELD( kern )
#define FT_VALIDATE_opbd FT_VALIDATE_GX_BITFIELD(opbd) #define FT_VALIDATE_opbd FT_VALIDATE_GX_BITFIELD( opbd )
#define FT_VALIDATE_trak FT_VALIDATE_GX_BITFIELD(trak) #define FT_VALIDATE_trak FT_VALIDATE_GX_BITFIELD( trak )
#define FT_VALIDATE_prop FT_VALIDATE_GX_BITFIELD(prop) #define FT_VALIDATE_prop FT_VALIDATE_GX_BITFIELD( prop )
#define FT_VALIDATE_lcar FT_VALIDATE_GX_BITFIELD(lcar) #define FT_VALIDATE_lcar FT_VALIDATE_GX_BITFIELD( lcar )
#define FT_VALIDATE_GX ( FT_VALIDATE_feat | \ #define FT_VALIDATE_GX ( FT_VALIDATE_feat | \
FT_VALIDATE_mort | \ FT_VALIDATE_mort | \
FT_VALIDATE_morx | \ FT_VALIDATE_morx | \
FT_VALIDATE_bsln | \ FT_VALIDATE_bsln | \
FT_VALIDATE_just | \ FT_VALIDATE_just | \
FT_VALIDATE_kern | \ FT_VALIDATE_kern | \
FT_VALIDATE_opbd | \ FT_VALIDATE_opbd | \
FT_VALIDATE_trak | \ FT_VALIDATE_trak | \
FT_VALIDATE_prop | \ FT_VALIDATE_prop | \
FT_VALIDATE_lcar ) FT_VALIDATE_lcar )
@ -186,12 +190,12 @@ FT_BEGIN_HEADER
* @FT_VALIDATE_GXXXX for possible values. * @FT_VALIDATE_GXXXX for possible values.
* *
* table_length :: * table_length ::
* The length of tables. Generally FT_VALIDATE_GX_LENGTH should * The size of the `tables' array. Normally, `FT_VALIDATE_GX_LENGTH'
* be passed. * should be passed.
* *
* @output * @output
* tables :: * 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. * The array itself must be allocated by a client.
* *
* @return: * @return:
@ -201,17 +205,17 @@ FT_BEGIN_HEADER
* This function only works with TrueTypeGX fonts, returning an error * This function only works with TrueTypeGX fonts, returning an error
* otherwise. * otherwise.
* *
* After use, the application should deallocate the buffers pointed by each * After use, the application should deallocate the buffers pointed to by
* tables' element. A NULL value indicates that the table either * 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 * doesn't exist in the font, the application hasn't asked for
* the validator doesn't have ability to validate the sfnt table. * validation, or the validator doesn't have the ability to validate the
* sfnt table.
*/ */
FT_EXPORT( FT_Error ) FT_EXPORT( FT_Error )
FT_TrueTypeGX_Validate( FT_Face face, FT_TrueTypeGX_Validate( FT_Face face,
FT_UInt validation_flags, FT_UInt validation_flags,
FT_Bytes tables[FT_VALIDATE_GX_LENGTH], FT_Bytes tables[FT_VALIDATE_GX_LENGTH],
FT_UInt table_length ); FT_UInt table_length );
/* */ /* */
@ -223,27 +227,24 @@ FT_BEGIN_HEADER
* *
* @description: * @description:
* A list of bit-field constants used with @FT_ClassicKern_Validate * 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: * @values:
* FT_VALIDATE_MS :: * FT_VALIDATE_MS ::
* Validate the kern table as it has classic Microsoft kern dialect. * Handle the `kern' table as a classic Microsoft kern table.
* If @FT_ClassicKern_Validate detects the table has the other
* dialect, it regards the table invalid.
* *
* @values: * @values:
* FT_VALIDATE_APPLE :: * FT_VALIDATE_APPLE ::
* Validate the kern table as it has classic Apple kern dialect. * Handle the `kern' table as a classic Apple kern table.
* If @FT_ClassicKern_Validate detects the table has the other
* dialect, it regards the table invalid.
* *
* @values: * @values:
* FT_VALIDATE_CKERN :: * FT_VALIDATE_CKERN ::
* Validate the kern table as it has classic Apple kern dialect or * Handle the `kern' as either classic Apple or Microsoft kern table.
* Microsoft kern dialect.
*/ */
#define FT_VALIDATE_MS (FT_VALIDATE_GX_START << 0) #define FT_VALIDATE_MS ( FT_VALIDATE_GX_START << 0 )
#define FT_VALIDATE_APPLE (FT_VALIDATE_GX_START << 1) #define FT_VALIDATE_APPLE ( FT_VALIDATE_GX_START << 1 )
#define FT_VALIDATE_CKERN ( FT_VALIDATE_MS | FT_VALIDATE_APPLE ) #define FT_VALIDATE_CKERN ( FT_VALIDATE_MS | FT_VALIDATE_APPLE )
@ -256,14 +257,14 @@ FT_BEGIN_HEADER
* FT_ClassicKern_Validate * FT_ClassicKern_Validate
* *
* @description: * @description:
* Validate classic(16bit format) kern table to assure that the offsets * Validate classic (16bit format) kern table to assure that the offsets
* and indices are valid. The idea is that a higher-level library * and indices are valid. The idea is that a higher-level library which
* which actually does the text layout can access those tables without * actually does the text layout can access those tables without error
* error checking (which can be quite time consuming). * checking (which can be quite time consuming).
* *
* Kern table validator in @FT_TrueTypeGX_Validate deals both * The `kern' table validator in @FT_TrueTypeGX_Validate deals with both
* new 32 bit format and classic 16 bit format. In other hand * the new 32bit format and the classic 16bit format, while
* this function supports only the classic 16 bit format. * FT_ClassicKern_Validate only supports the classic 16bit format.
* *
* @input: * @input:
* face :: * face ::
@ -281,14 +282,14 @@ FT_BEGIN_HEADER
* FreeType error code. 0 means success. * FreeType error code. 0 means success.
* *
* @note: * @note:
* After use, the application should deallocate the buffers pointed by * After use, the application should deallocate the buffers pointed to by
* ckern_table. A NULL value indicates that the table either * ckern_table. A NULL value indicates that the table doesn't exist in
* doesn't exist in the font. * the font.
*/ */
FT_EXPORT( FT_Error ) FT_EXPORT( FT_Error )
FT_ClassicKern_Validate( FT_Face face, FT_ClassicKern_Validate( FT_Face face,
FT_UInt validation_flags, FT_UInt validation_flags,
FT_Bytes *ckern_table ); FT_Bytes *ckern_table );
/* */ /* */

View File

@ -4,7 +4,7 @@
/* */ /* */
/* FreeType API for validating TrueTypeGX/AAT tables (specification). */ /* FreeType API for validating TrueTypeGX/AAT tables (specification). */
/* */ /* */
/* Copyright 2004 by */ /* Copyright 2004, 2005 by */
/* Masatake YAMATO, Red Hat K.K., */ /* Masatake YAMATO, Red Hat K.K., */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
@ -17,11 +17,14 @@
/***************************************************************************/ /***************************************************************************/
/***************************************************************************/ /***************************************************************************/
/* */
/* gxvalid is derived from both gxlayout module and otvalid module. */ /* gxvalid is derived from both gxlayout module and otvalid module. */
/* Development of gxlayout was support of Information-technology Promotion */ /* Development of gxlayout is supported by the Information-technology */
/* Agency(IPA), Japan. */ /* Promotion Agency(IPA), Japan. */
/* */
/***************************************************************************/ /***************************************************************************/
#ifndef __SVGXVAL_H__ #ifndef __SVGXVAL_H__
#define __SVGXVAL_H__ #define __SVGXVAL_H__
@ -35,16 +38,16 @@ FT_BEGIN_HEADER
#define FT_SERVICE_ID_CLASSICKERN_VALIDATE "classickern-validate" #define FT_SERVICE_ID_CLASSICKERN_VALIDATE "classickern-validate"
typedef FT_Error typedef FT_Error
(*gxv_validate_func)( FT_Face face, (*gxv_validate_func)( FT_Face face,
FT_UInt gx_flags, FT_UInt gx_flags,
FT_Bytes tables[FT_VALIDATE_GX_LENGTH], FT_Bytes tables[FT_VALIDATE_GX_LENGTH],
FT_UInt table_length ); FT_UInt table_length );
typedef FT_Error typedef FT_Error
(*ckern_validate_func) ( FT_Face face, (*ckern_validate_func)( FT_Face face,
FT_UInt ckern_flags, FT_UInt ckern_flags,
FT_Bytes *ckern_table ); FT_Bytes *ckern_table );
FT_DEFINE_SERVICE( GXvalidate ) FT_DEFINE_SERVICE( GXvalidate )

View File

@ -4,7 +4,7 @@
/* */ /* */
/* Tags for TrueType and OpenType tables (specification only). */ /* 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. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -79,8 +79,8 @@ FT_BEGIN_HEADER
#define TTAG_post FT_MAKE_TAG( 'p', 'o', 's', 't' ) #define TTAG_post FT_MAKE_TAG( 'p', 'o', 's', 't' )
#define TTAG_prep FT_MAKE_TAG( 'p', 'r', 'e', 'p' ) #define TTAG_prep FT_MAKE_TAG( 'p', 'r', 'e', 'p' )
#define TTAG_prop FT_MAKE_TAG( 'p', 'r', 'o', '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_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_ttc FT_MAKE_TAG( 't', 't', 'c', ' ' )
#define TTAG_ttcf FT_MAKE_TAG( 't', 't', 'c', 'f' ) #define TTAG_ttcf FT_MAKE_TAG( 't', 't', 'c', 'f' )
#define TTAG_VDMX FT_MAKE_TAG( 'V', 'D', 'M', 'X' ) #define TTAG_VDMX FT_MAKE_TAG( 'V', 'D', 'M', 'X' )

View File

@ -1,6 +1,6 @@
# FreeType 2 src/base Jamfile # 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. # David Turner, Robert Wilhelm, and Werner Lemberg.
# #
# This file is part of the FreeType project, and may only be used, modified, # This file is part of the FreeType project, and may only be used, modified,

View File

@ -4,7 +4,7 @@
/* */ /* */
/* FreeType API for validating TrueTyepGX/AAT tables (body). */ /* FreeType API for validating TrueTyepGX/AAT tables (body). */
/* */ /* */
/* Copyright 2004 by */ /* Copyright 2004, 2005 by */
/* Masatake YAMATO, Redhat K.K, */ /* Masatake YAMATO, Redhat K.K, */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
@ -17,22 +17,26 @@
/***************************************************************************/ /***************************************************************************/
/***************************************************************************/ /***************************************************************************/
/* */
/* gxvalid is derived from both gxlayout module and otvalid module. */ /* gxvalid is derived from both gxlayout module and otvalid module. */
/* Development of gxlayout was support of Information-technology Promotion */ /* Development of gxlayout is supported by the Information-technology */
/* Agency(IPA), Japan. */ /* Promotion Agency(IPA), Japan. */
/* */
/***************************************************************************/ /***************************************************************************/
#include <ft2build.h> #include <ft2build.h>
#include FT_INTERNAL_OBJECTS_H #include FT_INTERNAL_OBJECTS_H
#include FT_SERVICE_GX_VALIDATE_H #include FT_SERVICE_GX_VALIDATE_H
/* documentation is in ftgxval.h */ /* documentation is in ftgxval.h */
FT_EXPORT_DEF( FT_Error ) FT_EXPORT_DEF( FT_Error )
FT_TrueTypeGX_Validate( FT_Face face, FT_TrueTypeGX_Validate( FT_Face face,
FT_UInt validation_flags, FT_UInt validation_flags,
FT_Bytes tables[FT_VALIDATE_GX_LENGTH], FT_Bytes tables[FT_VALIDATE_GX_LENGTH],
FT_UInt table_length ) FT_UInt table_length )
{ {
FT_Service_GXvalidate service; FT_Service_GXvalidate service;
FT_Error error; FT_Error error;
@ -66,9 +70,9 @@
FT_EXPORT_DEF( FT_Error ) FT_EXPORT_DEF( FT_Error )
FT_ClassicKern_Validate( FT_Face face, FT_ClassicKern_Validate( FT_Face face,
FT_UInt validation_flags, FT_UInt validation_flags,
FT_Bytes *ckern_table ) FT_Bytes *ckern_table )
{ {
FT_Service_CKERNvalidate service; FT_Service_CKERNvalidate service;
FT_Error error; FT_Error error;