* include/freetype/ftsysmem.h, include/freetype/ftsysio.h: Removed.
Obsolete.
Cleaning up comments to avoid a mix-up of old and new style.
diff --git a/ChangeLog b/ChangeLog
index 4c492f2..3c226c2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2005-10-27 Werner Lemberg <wl@gnu.org>
+
+ * include/freetype/ftsysmem.h, include/freetype/ftsysio.h: Removed.
+ Obsolete.
+
2005-10-25 Werner Lemberg <wl@gnu.org>
* src/sfnt/sfdriver.c (sfnt_interface): Move out
diff --git a/include/freetype/cache/ftccmap.h b/include/freetype/cache/ftccmap.h
index a41989b..7dbbc50 100644
--- a/include/freetype/cache/ftccmap.h
+++ b/include/freetype/cache/ftccmap.h
@@ -4,7 +4,7 @@
/* */
/* FreeType charmap cache (specification). */
/* */
-/* Copyright 2000-2001, 2003 by */
+/* Copyright 2000-2001, 2003, 2005 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -29,57 +29,60 @@
/*************************************************************************/
/* */
/* <Section> */
- /* cache_subsystem */
+ /* cache_subsystem */
/* */
/*************************************************************************/
- /*************************************************************************/
- /* */
- /* @type: */
- /* FTC_CMapCache */
- /* */
- /* @description: */
- /* An opaque handle used to manager a charmap cache. This cache is */
- /* to hold character codes -> glyph indices mappings. */
- /* */
+ /*************************************************************************
+ *
+ * @type:
+ * FTC_CMapCache
+ *
+ * @description:
+ * An opaque handle used to manager a charmap cache. This cache is to
+ * hold character codes -> glyph indices mappings.
+ *
+ */
typedef struct FTC_CMapCacheRec_* FTC_CMapCache;
- /*************************************************************************/
- /* */
- /* @type: */
- /* FTC_CMapDesc */
- /* */
- /* @description: */
- /* A handle to an @FTC_CMapDescRec structure used to describe a given */
- /* charmap in a charmap cache. */
- /* */
- /* Each @FTC_CMapDesc describes which charmap (of which @FTC_FaceID) */
- /* we want to use in @FTC_CMapCache_Lookup. */
- /* */
+ /*************************************************************************
+ *
+ * @type:
+ * FTC_CMapDesc
+ *
+ * @description:
+ * A handle to an @FTC_CMapDescRec structure used to describe a given
+ * charmap in a charmap cache.
+ *
+ * Each @FTC_CMapDesc describes which charmap (of which @FTC_FaceID) we
+ * want to use in @FTC_CMapCache_Lookup.
+ *
+ */
typedef struct FTC_CMapDescRec_* FTC_CMapDesc;
- /*************************************************************************/
- /* */
- /* @enum: */
- /* FTC_CMapType */
- /* */
- /* @description: */
- /* The list of valid @FTC_CMapDesc types. They indicate how we want */
- /* to address a charmap within an @FTC_FaceID. */
- /* */
- /* @values: */
- /* FTC_CMAP_BY_INDEX :: */
- /* Address a charmap by its index in the corresponding @FT_Face. */
- /* */
- /* FTC_CMAP_BY_ENCODING :: */
- /* Use a @FT_Face charmap that corresponds to a given encoding. */
- /* */
- /* FTC_CMAP_BY_ID :: */
- /* Use an @FT_Face charmap that corresponds to a given */
- /* (platform,encoding) ID. See @FTC_CMapIdRec. */
- /* */
+ /*************************************************************************
+ *
+ * @enum:
+ * FTC_CMapType
+ *
+ * @description:
+ * The list of valid @FTC_CMapDesc types. They indicate how we want to
+ * address a charmap within an @FTC_FaceID.
+ *
+ * @values:
+ * FTC_CMAP_BY_INDEX ::
+ * Address a charmap by its index in the corresponding @FT_Face.
+ *
+ * FTC_CMAP_BY_ENCODING ::
+ * Use a @FT_Face charmap that corresponds to a given encoding.
+ *
+ * FTC_CMAP_BY_ID ::
+ * Use an @FT_Face charmap that corresponds to a given
+ * (platform,encoding) ID. See @FTC_CMapIdRec.
+ *
+ */
typedef enum FTC_CMapType_
{
FTC_CMAP_BY_INDEX = 0,
@@ -89,20 +92,23 @@
} FTC_CMapType;
- /*************************************************************************/
- /* */
- /* @struct: */
- /* FTC_CMapIdRec */
- /* */
- /* @description: */
- /* A short structure to identify a charmap by a (platform,encoding) */
- /* pair of values. */
- /* */
- /* @fields: */
- /* platform :: The platform ID. */
- /* */
- /* encoding :: The encoding ID. */
- /* */
+ /*************************************************************************
+ *
+ * @struct:
+ * FTC_CMapIdRec
+ *
+ * @description:
+ * A short structure to identify a charmap by a (platform,encoding) pair
+ * of values.
+ *
+ * @fields:
+ * platform ::
+ * The platform ID.
+ *
+ * encoding ::
+ * The encoding ID.
+ *
+ */
typedef struct FTC_CMapIdRec_
{
FT_UInt platform;
@@ -111,29 +117,34 @@
} FTC_CMapIdRec;
- /*************************************************************************/
- /* */
- /* @struct: */
- /* FTC_CMapDescRec */
- /* */
- /* @description: */
- /* A structure to describe a given charmap to @FTC_CMapCache. */
- /* */
- /* @fields: */
- /* face_id :: @FTC_FaceID of the face this charmap belongs to. */
- /* */
- /* type :: The type of charmap, see @FTC_CMapType. */
- /* */
- /* u.index :: For @FTC_CMAP_BY_INDEX types, this is the charmap */
- /* index (within a @FT_Face) we want to use. */
- /* */
- /* u.encoding :: For @FTC_CMAP_BY_ENCODING types, this is the charmap */
- /* encoding we want to use. see @FT_Encoding. */
- /* */
- /* u.id :: For @FTC_CMAP_BY_ID types, this is the */
- /* (platform,encoding) pair we want to use. see */
- /* @FTC_CMapIdRec and @FT_CharMapRec. */
- /* */
+ /*************************************************************************
+ *
+ * @struct:
+ * FTC_CMapDescRec
+ *
+ * @description:
+ * A structure to describe a given charmap to @FTC_CMapCache.
+ *
+ * @fields:
+ * face_id ::
+ * @FTC_FaceID of the face this charmap belongs to.
+ *
+ * type ::
+ * The type of charmap, see @FTC_CMapType.
+ *
+ * u.index ::
+ * For @FTC_CMAP_BY_INDEX types, this is the charmap index (within a
+ * @FT_Face) we want to use.
+ *
+ * u.encoding ::
+ * For @FTC_CMAP_BY_ENCODING types, this is the charmap encoding we
+ * want to use. see @FT_Encoding.
+ *
+ * u.id ::
+ * For @FTC_CMAP_BY_ID types, this is the (platform,encoding) pair we
+ * want to use. see @FTC_CMapIdRec and @FT_CharMapRec.
+ *
+ */
typedef struct FTC_CMapDescRec_
{
FTC_FaceID face_id;
@@ -150,55 +161,62 @@
} FTC_CMapDescRec;
- /*************************************************************************/
- /* */
- /* @function: */
- /* FTC_CMapCache_New */
- /* */
- /* @description: */
- /* Creates a new charmap cache. */
- /* */
- /* @input: */
- /* manager :: A handle to the cache manager. */
- /* */
- /* @output: */
- /* acache :: A new cache handle. NULL in case of error. */
- /* */
- /* @return: */
- /* FreeType error code. 0 means success. */
- /* */
- /* @note: */
- /* Like all other caches, this one will be destroyed with the cache */
- /* manager. */
- /* */
+ /*************************************************************************
+ *
+ * @function:
+ * FTC_CMapCache_New
+ *
+ * @description:
+ * Creates a new charmap cache.
+ *
+ * @input:
+ * manager ::
+ * A handle to the cache manager.
+ *
+ * @output:
+ * acache ::
+ * A new cache handle. NULL in case of error.
+ *
+ * @return:
+ * FreeType error code. 0 means success.
+ *
+ * @note:
+ * Like all other caches, this one will be destroyed with the cache
+ * manager.
+ *
+ */
FT_EXPORT( FT_Error )
FTC_CMapCache_New( FTC_Manager manager,
FTC_CMapCache *acache );
- /*************************************************************************/
- /* */
- /* @function: */
- /* FTC_CMapCache_Lookup */
- /* */
- /* @description: */
- /* Translates a character code into a glyph index, using the charmap */
- /* cache. */
- /* */
- /* @input: */
- /* cache :: A charmap cache handle. */
- /* */
- /* cmap_desc :: A charmap descriptor handle. */
- /* */
- /* char_code :: The character code (in the corresponding charmap). */
- /* */
- /* @return: */
- /* Glyph index. 0 means "no glyph". */
- /* */
- /* @note: */
- /* This function doesn't return @FTC_Node handles, since there is no */
- /* real use for them with typical uses of charmaps. */
- /* */
+ /*************************************************************************
+ *
+ * @function:
+ * FTC_CMapCache_Lookup
+ *
+ * @description:
+ * Translates a character code into a glyph index, using the charmap
+ * cache.
+ *
+ * @input:
+ * cache ::
+ * A charmap cache handle.
+ *
+ * cmap_desc ::
+ * A charmap descriptor handle.
+ *
+ * char_code ::
+ * The character code (in the corresponding charmap).
+ *
+ * @return:
+ * Glyph index. 0 means `no glyph'.
+ *
+ * @note:
+ * This function doesn't return @FTC_Node handles, since there is no
+ * real use for them with typical uses of charmaps.
+ *
+ */
FT_EXPORT( FT_UInt )
FTC_CMapCache_Lookup( FTC_CMapCache cache,
FTC_CMapDesc cmap_desc,
diff --git a/include/freetype/config/ftheader.h b/include/freetype/config/ftheader.h
index 9b55f47..102c59b 100644
--- a/include/freetype/config/ftheader.h
+++ b/include/freetype/config/ftheader.h
@@ -96,58 +96,62 @@
/* configuration files */
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_CONFIG_CONFIG_H */
- /* */
- /* @description: */
- /* A macro used in #include statements to name the file containing */
- /* FreeType 2 configuration data. */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_CONFIG_CONFIG_H
+ *
+ * @description:
+ * A macro used in #include statements to name the file containing
+ * FreeType 2 configuration data.
+ *
+ */
#ifndef FT_CONFIG_CONFIG_H
#define FT_CONFIG_CONFIG_H <freetype/config/ftconfig.h>
#endif
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_CONFIG_STANDARD_LIBRARY_H */
- /* */
- /* @description: */
- /* A macro used in #include statements to name the file containing */
- /* FreeType 2 configuration data. */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_CONFIG_STANDARD_LIBRARY_H
+ *
+ * @description:
+ * A macro used in #include statements to name the file containing
+ * FreeType 2 interface to the standard C library functions.
+ *
+ */
#ifndef FT_CONFIG_STANDARD_LIBRARY_H
#define FT_CONFIG_STANDARD_LIBRARY_H <freetype/config/ftstdlib.h>
#endif
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_CONFIG_OPTIONS_H */
- /* */
- /* @description: */
- /* A macro used in #include statements to name the file containing */
- /* FreeType 2 project-specific configuration options. */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_CONFIG_OPTIONS_H
+ *
+ * @description:
+ * A macro used in #include statements to name the file containing
+ * FreeType 2 project-specific configuration options.
+ *
+ */
#ifndef FT_CONFIG_OPTIONS_H
#define FT_CONFIG_OPTIONS_H <freetype/config/ftoption.h>
#endif
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_CONFIG_MODULES_H */
- /* */
- /* @description: */
- /* A macro used in #include statements to name the file containing */
- /* the list of FreeType 2 modules that are statically linked to new */
- /* library instances in @FT_Init_FreeType. */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_CONFIG_MODULES_H
+ *
+ * @description:
+ * A macro used in #include statements to name the file containing the
+ * list of FreeType 2 modules that are statically linked to new library
+ * instances in @FT_Init_FreeType.
+ *
+ */
#ifndef FT_CONFIG_MODULES_H
#define FT_CONFIG_MODULES_H <freetype/config/ftmodule.h>
#endif
@@ -155,419 +159,447 @@
/* public headers */
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_FREETYPE_H */
- /* */
- /* @description: */
- /* A macro used in #include statements to name the file containing */
- /* the base FreeType 2 API. */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_FREETYPE_H
+ *
+ * @description:
+ * A macro used in #include statements to name the file containing the
+ * base FreeType 2 API.
+ *
+ */
#define FT_FREETYPE_H <freetype/freetype.h>
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_ERRORS_H */
- /* */
- /* @description: */
- /* A macro used in #include statements to name the file containing */
- /* the list of FreeType 2 error codes (and messages). */
- /* */
- /* It is included by @FT_FREETYPE_H. */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_ERRORS_H
+ *
+ * @description:
+ * A macro used in #include statements to name the file containing the
+ * list of FreeType 2 error codes (and messages).
+ *
+ * It is included by @FT_FREETYPE_H.
+ *
+ */
#define FT_ERRORS_H <freetype/fterrors.h>
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_MODULE_ERRORS_H */
- /* */
- /* @description: */
- /* A macro used in #include statements to name the file containing */
- /* the list of FreeType 2 module error offsets (and messages). */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_MODULE_ERRORS_H
+ *
+ * @description:
+ * A macro used in #include statements to name the file containing the
+ * list of FreeType 2 module error offsets (and messages).
+ *
+ */
#define FT_MODULE_ERRORS_H <freetype/ftmoderr.h>
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_SYSTEM_H */
- /* */
- /* @description: */
- /* A macro used in #include statements to name the file containing */
- /* the FreeType 2 interface to low-level operations (i.e. memory */
- /* management and stream i/o). */
- /* */
- /* It is included by @FT_FREETYPE_H. */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_SYSTEM_H
+ *
+ * @description:
+ * A macro used in #include statements to name the file containing the
+ * FreeType 2 interface to low-level operations (i.e., memory management
+ * and stream i/o).
+ *
+ * It is included by @FT_FREETYPE_H.
+ *
+ */
#define FT_SYSTEM_H <freetype/ftsystem.h>
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_IMAGE_H */
- /* */
- /* @description: */
- /* A macro used in #include statements to name the file containing */
- /* types definitions related to glyph images (i.e. bitmaps, outlines, */
- /* scan-converter parameters). */
- /* */
- /* It is included by @FT_FREETYPE_H. */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_IMAGE_H
+ *
+ * @description:
+ * A macro used in #include statements to name the file containing types
+ * definitions related to glyph images (i.e., bitmaps, outlines,
+ * scan-converter parameters).
+ *
+ * It is included by @FT_FREETYPE_H.
+ *
+ */
#define FT_IMAGE_H <freetype/ftimage.h>
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_TYPES_H */
- /* */
- /* @description: */
- /* A macro used in #include statements to name the file containing */
- /* the basic data types defined by FreeType 2. */
- /* */
- /* It is included by @FT_FREETYPE_H. */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_TYPES_H
+ *
+ * @description:
+ * A macro used in #include statements to name the file containing the
+ * basic data types defined by FreeType 2.
+ *
+ * It is included by @FT_FREETYPE_H.
+ *
+ */
#define FT_TYPES_H <freetype/fttypes.h>
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_LIST_H */
- /* */
- /* @description: */
- /* A macro used in #include statements to name the file containing */
- /* the list management API of FreeType 2. */
- /* */
- /* (Most applications will never need to include this file.) */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_LIST_H
+ *
+ * @description:
+ * A macro used in #include statements to name the file containing the
+ * list management API of FreeType 2.
+ *
+ * (Most applications will never need to include this file.)
+ *
+ */
#define FT_LIST_H <freetype/ftlist.h>
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_OUTLINE_H */
- /* */
- /* @description: */
- /* A macro used in #include statements to name the file containing */
- /* the scalable outline management API of FreeType 2. */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_OUTLINE_H
+ *
+ * @description:
+ * A macro used in #include statements to name the file containing the
+ * scalable outline management API of FreeType 2.
+ *
+ */
#define FT_OUTLINE_H <freetype/ftoutln.h>
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_SIZES_H */
- /* */
- /* @description: */
- /* A macro used in #include statements to name the file containing */
- /* the API used to manage multiple @FT_Size objects per face. */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_SIZES_H
+ *
+ * @description:
+ * A macro used in #include statements to name the file containing the
+ * API used to manage multiple @FT_Size objects per face.
+ *
+ */
#define FT_SIZES_H <freetype/ftsizes.h>
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_MODULE_H */
- /* */
- /* @description: */
- /* A macro used in #include statements to name the file containing */
- /* the module management API of FreeType 2. */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_MODULE_H
+ *
+ * @description:
+ * A macro used in #include statements to name the file containing the
+ * module management API of FreeType 2.
+ *
+ */
#define FT_MODULE_H <freetype/ftmodapi.h>
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_RENDER_H */
- /* */
- /* @description: */
- /* A macro used in #include statements to name the file containing */
- /* the renderer module management API of FreeType 2. */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_RENDER_H
+ *
+ * @description:
+ * A macro used in #include statements to name the file containing the
+ * renderer module management API of FreeType 2.
+ *
+ */
#define FT_RENDER_H <freetype/ftrender.h>
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_TYPE1_TABLES_H */
- /* */
- /* @description: */
- /* A macro used in #include statements to name the file containing */
- /* the types and API specific to the Type 1 format. */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_TYPE1_TABLES_H
+ *
+ * @description:
+ * A macro used in #include statements to name the file containing the
+ * types and API specific to the Type 1 format.
+ *
+ */
#define FT_TYPE1_TABLES_H <freetype/t1tables.h>
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_TRUETYPE_IDS_H */
- /* */
- /* @description: */
- /* A macro used in #include statements to name the file containing */
- /* the enumeration values used to identify name strings, languages, */
- /* encodings, etc. This file really contains a _large_ set of */
- /* constant macro definitions, taken from the TrueType and OpenType */
- /* specifications. */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_TRUETYPE_IDS_H
+ *
+ * @description:
+ * A macro used in #include statements to name the file containing the
+ * enumeration values used to identify name strings, languages,
+ * encodings, etc. This file really contains a _large_ set of constant
+ * macro definitions, taken from the TrueType and OpenType
+ * specifications.
+ *
+ */
#define FT_TRUETYPE_IDS_H <freetype/ttnameid.h>
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_TRUETYPE_TABLES_H */
- /* */
- /* @description: */
- /* A macro used in #include statements to name the file containing */
- /* the types and API specific to the TrueType (as well as OpenType) */
- /* format. */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_TRUETYPE_TABLES_H
+ *
+ * @description:
+ * A macro used in #include statements to name the file containing the
+ * types and API specific to the TrueType (as well as OpenType) format.
+ *
+ */
#define FT_TRUETYPE_TABLES_H <freetype/tttables.h>
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_TRUETYPE_TAGS_H */
- /* */
- /* @description: */
- /* A macro used in #include statements to name the file containing */
- /* the definitions of TrueType 4-byte `tags' used to identify blocks */
- /* in SFNT-based font formats (i.e. TrueType and OpenType). */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_TRUETYPE_TAGS_H
+ *
+ * @description:
+ * A macro used in #include statements to name the file containing the
+ * definitions of TrueType 4-byte `tags' used to identify blocks in
+ * SFNT-based font formats (i.e., TrueType and OpenType).
+ *
+ */
#define FT_TRUETYPE_TAGS_H <freetype/tttags.h>
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_BDF_H */
- /* */
- /* @description: */
- /* A macro used in #include statements to name the file containing */
- /* the definitions of an API to access BDF-specific strings from a */
- /* face. */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_BDF_H
+ *
+ * @description:
+ * A macro used in #include statements to name the file containing the
+ * definitions of an API to access BDF-specific strings from a face.
+ *
+ */
#define FT_BDF_H <freetype/ftbdf.h>
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_GZIP_H */
- /* */
- /* @description: */
- /* A macro used in #include statements to name the file containing */
- /* the definitions of an API to support for gzip-compressed files. */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_GZIP_H
+ *
+ * @description:
+ * A macro used in #include statements to name the file containing the
+ * definitions of an API to support for gzip-compressed files.
+ *
+ */
#define FT_GZIP_H <freetype/ftgzip.h>
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_LZW_H */
- /* */
- /* @description: */
- /* A macro used in #include statements to name the file containing */
- /* the definitions of an API to support for LZW-compressed files. */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_LZW_H
+ *
+ * @description:
+ * A macro used in #include statements to name the file containing the
+ * definitions of an API to support for LZW-compressed files.
+ *
+ */
#define FT_LZW_H <freetype/ftlzw.h>
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_WINFONTS_H */
- /* */
- /* @description: */
- /* A macro used in #include statements to name the file containing */
- /* the definitions of an API to support Windows .FNT files */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_WINFONTS_H
+ *
+ * @description:
+ * A macro used in #include statements to name the file containing the
+ * definitions of an API to support Windows FNT files.
+ *
+ */
#define FT_WINFONTS_H <freetype/ftwinfnt.h>
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_GLYPH_H */
- /* */
- /* @description: */
- /* A macro used in #include statements to name the file containing */
- /* the API of the optional glyph management component. */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_GLYPH_H
+ *
+ * @description:
+ * A macro used in #include statements to name the file containing the
+ * API of the optional glyph management component.
+ *
+ */
#define FT_GLYPH_H <freetype/ftglyph.h>
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_BITMAP_H */
- /* */
- /* @description: */
- /* A macro used in #include statements to name the file containing */
- /* the API of the optional bitmap conversion component. */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_BITMAP_H
+ *
+ * @description:
+ * A macro used in #include statements to name the file containing the
+ * API of the optional bitmap conversion component.
+ *
+ */
#define FT_BITMAP_H <freetype/ftbitmap.h>
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_BBOX_H */
- /* */
- /* @description: */
- /* A macro used in #include statements to name the file containing */
- /* the API of the optional exact bounding box computation routines. */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_BBOX_H
+ *
+ * @description:
+ * A macro used in #include statements to name the file containing the
+ * API of the optional exact bounding box computation routines.
+ *
+ */
#define FT_BBOX_H <freetype/ftbbox.h>
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_CACHE_H */
- /* */
- /* @description: */
- /* A macro used in #include statements to name the file containing */
- /* the API of the optional FreeType 2 cache sub-system. */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_CACHE_H
+ *
+ * @description:
+ * A macro used in #include statements to name the file containing the
+ * API of the optional FreeType 2 cache sub-system.
+ *
+ */
#define FT_CACHE_H <freetype/ftcache.h>
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_CACHE_IMAGE_H */
- /* */
- /* @description: */
- /* A macro used in #include statements to name the file containing */
- /* the `glyph image' API of the FreeType 2 cache sub-system. */
- /* */
- /* It is used to define a cache for @FT_Glyph elements. You can also */
- /* see the API defined in @FT_CACHE_SMALL_BITMAPS_H if you only need */
- /* to store small glyph bitmaps, as it will use less memory. */
- /* */
- /* This macro is deprecated. Simply include @FT_CACHE_H to have all */
- /* glyph image-related cache declarations. */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_CACHE_IMAGE_H
+ *
+ * @description:
+ * A macro used in #include statements to name the file containing the
+ * `glyph image' API of the FreeType 2 cache sub-system.
+ *
+ * It is used to define a cache for @FT_Glyph elements. You can also
+ * see the API defined in @FT_CACHE_SMALL_BITMAPS_H if you only need to
+ * store small glyph bitmaps, as it will use less memory.
+ *
+ * This macro is deprecated. Simply include @FT_CACHE_H to have all
+ * glyph image-related cache declarations.
+ *
+ */
#define FT_CACHE_IMAGE_H FT_CACHE_H
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_CACHE_SMALL_BITMAPS_H */
- /* */
- /* @description: */
- /* A macro used in #include statements to name the file containing */
- /* the `small bitmaps' API of the FreeType 2 cache sub-system. */
- /* */
- /* It is used to define a cache for small glyph bitmaps in a */
- /* relatively memory-efficient way. You can also use the API defined */
- /* in @FT_CACHE_IMAGE_H if you want to cache arbitrary glyph images, */
- /* including scalable outlines. */
- /* */
- /* This macro is deprecated. Simply include @FT_CACHE_H to have all */
- /* small bitmaps-related cache declarations. */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_CACHE_SMALL_BITMAPS_H
+ *
+ * @description:
+ * A macro used in #include statements to name the file containing the
+ * `small bitmaps' API of the FreeType 2 cache sub-system.
+ *
+ * It is used to define a cache for small glyph bitmaps in a relatively
+ * memory-efficient way. You can also use the API defined in
+ * @FT_CACHE_IMAGE_H if you want to cache arbitrary glyph images,
+ * including scalable outlines.
+ *
+ * This macro is deprecated. Simply include @FT_CACHE_H to have all
+ * small bitmaps-related cache declarations.
+ *
+ */
#define FT_CACHE_SMALL_BITMAPS_H FT_CACHE_H
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_CACHE_CHARMAP_H */
- /* */
- /* @description: */
- /* A macro used in #include statements to name the file containing */
- /* the `charmap' API of the FreeType 2 cache sub-system. */
- /* */
- /* This macro is deprecated. Simply include @FT_CACHE_H to have all */
- /* charmap-based cache declarations. */
- /* */
-#define FT_CACHE_CHARMAP_H FT_CACHE_H
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_CACHE_CHARMAP_H
+ *
+ * @description:
+ * A macro used in #include statements to name the file containing the
+ * `charmap' API of the FreeType 2 cache sub-system.
+ *
+ * This macro is deprecated. Simply include @FT_CACHE_H to have all
+ * charmap-based cache declarations.
+ *
+ */
+#define FT_CACHE_CHARMAP_H FT_CACHE_H
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_MAC_H */
- /* */
- /* @description: */
- /* A macro used in #include statements to name the file containing */
- /* the Macintosh-specific FreeType 2 API. The latter is used to */
- /* access fonts embedded in resource forks. */
- /* */
- /* This header file must be explicitly included by client */
- /* applications compiled on the Mac (note that the base API still */
- /* works though). */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_MAC_H
+ *
+ * @description:
+ * A macro used in #include statements to name the file containing the
+ * Macintosh-specific FreeType 2 API. The latter is used to access
+ * fonts embedded in resource forks.
+ *
+ * This header file must be explicitly included by client applications
+ * compiled on the Mac (note that the base API still works though).
+ *
+ */
#define FT_MAC_H <freetype/ftmac.h>
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_MULTIPLE_MASTERS_H */
- /* */
- /* @description: */
- /* A macro used in #include statements to name the file containing */
- /* the optional multiple-masters management API of FreeType 2. */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_MULTIPLE_MASTERS_H
+ *
+ * @description:
+ * A macro used in #include statements to name the file containing the
+ * optional multiple-masters management API of FreeType 2.
+ *
+ */
#define FT_MULTIPLE_MASTERS_H <freetype/ftmm.h>
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_SFNT_NAMES_H */
- /* */
- /* @description: */
- /* A macro used in #include statements to name the file containing */
- /* the optional FreeType 2 API used to access embedded `name' strings */
- /* in SFNT-based font formats (i.e. TrueType and OpenType). */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_SFNT_NAMES_H
+ *
+ * @description:
+ * A macro used in #include statements to name the file containing the
+ * optional FreeType 2 API used to access embedded `name' strings in
+ * SFNT-based font formats (i.e., TrueType and OpenType).
+ *
+ */
#define FT_SFNT_NAMES_H <freetype/ftsnames.h>
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_OPENTYPE_VALIDATE_H */
- /* */
- /* @description: */
- /* A macro used in #include statements to name the file containing */
- /* the optional FreeType 2 API used to validate OpenType tables */
- /* (BASE, GDEF, GPOS, GSUB, JSTF). */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_OPENTYPE_VALIDATE_H
+ *
+ * @description:
+ * A macro used in #include statements to name the file containing the
+ * optional FreeType 2 API used to validate OpenType tables (BASE, GDEF,
+ * GPOS, GSUB, JSTF).
+ *
+ */
#define FT_OPENTYPE_VALIDATE_H <freetype/ftotval.h>
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_GX_VALIDATE_H */
- /* */
- /* @description: */
- /* A macro used in #include statements to name the file containing */
- /* the optional FreeType 2 API used to validate TrueTypeGX/AAT tables */
- /* (feat, mort, morx, bsln, just, kern, opbd, trak, prop). */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_GX_VALIDATE_H
+ *
+ * @description:
+ * A macro used in #include statements to name the file containing the
+ * optional FreeType 2 API used to validate TrueTypeGX/AAT tables (feat,
+ * mort, morx, bsln, just, kern, opbd, trak, prop).
+ *
+ */
#define FT_GX_VALIDATE_H <freetype/ftgxval.h>
diff --git a/include/freetype/freetype.h b/include/freetype/freetype.h
index 53f1486..b93e0af 100644
--- a/include/freetype/freetype.h
+++ b/include/freetype/freetype.h
@@ -1087,148 +1087,157 @@
/* */
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_HAS_HORIZONTAL( face ) */
- /* */
- /* @description: */
- /* A macro that returns true whenever a face object contains */
- /* horizontal metrics (this is true for all font formats though). */
- /* */
- /* @also: */
- /* @FT_HAS_VERTICAL can be used to check for vertical metrics. */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_HAS_HORIZONTAL( face )
+ *
+ * @description:
+ * A macro that returns true whenever a face object contains
+ * horizontal metrics (this is true for all font formats though).
+ *
+ * @also:
+ * @FT_HAS_VERTICAL can be used to check for vertical metrics.
+ *
+ */
#define FT_HAS_HORIZONTAL( face ) \
( face->face_flags & FT_FACE_FLAG_HORIZONTAL )
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_HAS_VERTICAL( face ) */
- /* */
- /* @description: */
- /* A macro that returns true whenever a face object contains vertical */
- /* metrics. */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_HAS_VERTICAL( face )
+ *
+ * @description:
+ * A macro that returns true whenever a face object contains vertical
+ * metrics.
+ *
+ */
#define FT_HAS_VERTICAL( face ) \
( face->face_flags & FT_FACE_FLAG_VERTICAL )
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_HAS_KERNING( face ) */
- /* */
- /* @description: */
- /* A macro that returns true whenever a face object contains kerning */
- /* data that can be accessed with @FT_Get_Kerning. */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_HAS_KERNING( face )
+ *
+ * @description:
+ * A macro that returns true whenever a face object contains kerning
+ * data that can be accessed with @FT_Get_Kerning.
+ *
+ */
#define FT_HAS_KERNING( face ) \
( face->face_flags & FT_FACE_FLAG_KERNING )
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_IS_SCALABLE( face ) */
- /* */
- /* @description: */
- /* A macro that returns true whenever a face object contains a */
- /* scalable font face (true for TrueType, Type 1, CID, and */
- /* OpenType/CFF font formats. */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_IS_SCALABLE( face )
+ *
+ * @description:
+ * A macro that returns true whenever a face object contains a scalable
+ * font face (true for TrueType, Type 1, CID, and OpenType/CFF font
+ * formats.
+ *
+ */
#define FT_IS_SCALABLE( face ) \
( face->face_flags & FT_FACE_FLAG_SCALABLE )
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_IS_SFNT( face ) */
- /* */
- /* @description: */
- /* A macro that returns true whenever a face object contains a font */
- /* whose format is based on the SFNT storage scheme. This usually */
- /* means: TrueType fonts, OpenType fonts, as well as SFNT-based */
- /* embedded bitmap fonts. */
- /* */
- /* If this macro is true, all functions defined in @FT_SFNT_NAMES_H */
- /* and @FT_TRUETYPE_TABLES_H are available. */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_IS_SFNT( face )
+ *
+ * @description:
+ * A macro that returns true whenever a face object contains a font
+ * whose format is based on the SFNT storage scheme. This usually
+ * means: TrueType fonts, OpenType fonts, as well as SFNT-based embedded
+ * bitmap fonts.
+ *
+ * If this macro is true, all functions defined in @FT_SFNT_NAMES_H and
+ * @FT_TRUETYPE_TABLES_H are available.
+ *
+ */
#define FT_IS_SFNT( face ) \
( face->face_flags & FT_FACE_FLAG_SFNT )
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_IS_FIXED_WIDTH( face ) */
- /* */
- /* @description: */
- /* A macro that returns true whenever a face object contains a font */
- /* face that contains fixed-width (or "monospace", "fixed-pitch", */
- /* etc.) glyphs. */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_IS_FIXED_WIDTH( face )
+ *
+ * @description:
+ * A macro that returns true whenever a face object contains a font face
+ * that contains fixed-width (or `monospace', `fixed-pitch', etc.)
+ * glyphs.
+ *
+ */
#define FT_IS_FIXED_WIDTH( face ) \
( face->face_flags & FT_FACE_FLAG_FIXED_WIDTH )
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_HAS_FIXED_SIZES( face ) */
- /* */
- /* @description: */
- /* A macro that returns true whenever a face object contains some */
- /* embedded bitmaps. See the `available_sizes' field of the */
- /* @FT_FaceRec structure. */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_HAS_FIXED_SIZES( face )
+ *
+ * @description:
+ * A macro that returns true whenever a face object contains some
+ * embedded bitmaps. See the `available_sizes' field of the
+ * @FT_FaceRec structure.
+ *
+ */
#define FT_HAS_FIXED_SIZES( face ) \
( face->face_flags & FT_FACE_FLAG_FIXED_SIZES )
- /* */
+ /* */
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_HAS_FAST_GLYPHS( face ) */
- /* */
- /* @description: */
- /* Deprecated; indicates that the face contains so-called "fast" */
- /* glyph bitmaps. */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_HAS_FAST_GLYPHS( face )
+ *
+ * @description:
+ * Deprecated; indicates that the face contains so-called `fast' glyph
+ * bitmaps.
+ *
+ */
#define FT_HAS_FAST_GLYPHS( face ) \
( face->face_flags & FT_FACE_FLAG_FAST_GLYPHS )
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_HAS_GLYPH_NAMES( face ) */
- /* */
- /* @description: */
- /* A macro that returns true whenever a face object contains some */
- /* glyph names that can be accessed through @FT_Get_Glyph_Name. */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_HAS_GLYPH_NAMES( face )
+ *
+ * @description:
+ * A macro that returns true whenever a face object contains some glyph
+ * names that can be accessed through @FT_Get_Glyph_Name.
+ *
+ */
#define FT_HAS_GLYPH_NAMES( face ) \
( face->face_flags & FT_FACE_FLAG_GLYPH_NAMES )
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_HAS_MULTIPLE_MASTERS( face ) */
- /* */
- /* @description: */
- /* A macro that returns true whenever a face object contains some */
- /* multiple masters. The functions provided by */
- /* @FT_MULTIPLE_MASTERS_H are then available to choose the exact */
- /* design you want. */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_HAS_MULTIPLE_MASTERS( face )
+ *
+ * @description:
+ * A macro that returns true whenever a face object contains some
+ * multiple masters. The functions provided by @FT_MULTIPLE_MASTERS_H
+ * are then available to choose the exact design you want.
+ *
+ */
#define FT_HAS_MULTIPLE_MASTERS( face ) \
( face->face_flags & FT_FACE_FLAG_MULTIPLE_MASTERS )
@@ -2770,21 +2779,23 @@
FT_CharMap charmap );
- /*************************************************************************/
- /* */
- /* @function: */
- /* FT_Get_Charmap_Index */
- /* */
- /* @description: */
- /* Retrieve index of a given charmap. */
- /* */
- /* @input: */
- /* charmap :: A handle to a charmap. */
- /* */
- /* @return: */
- /* The index into the array of character maps within the face to */
- /* which `charmap' belongs. */
- /* */
+ /*************************************************************************
+ *
+ * @function:
+ * FT_Get_Charmap_Index
+ *
+ * @description:
+ * Retrieve index of a given charmap.
+ *
+ * @input:
+ * charmap ::
+ * A handle to a charmap.
+ *
+ * @return:
+ * The index into the array of character maps within the face to which
+ * `charmap' belongs.
+ *
+ */
FT_EXPORT( FT_Int )
FT_Get_Charmap_Index( FT_CharMap charmap );
diff --git a/include/freetype/ftcache.h b/include/freetype/ftcache.h
index 3c251d4..ca8982b 100644
--- a/include/freetype/ftcache.h
+++ b/include/freetype/ftcache.h
@@ -473,65 +473,74 @@
/* */
/*************************************************************************/
- /************************************************************************
+ /*************************************************************************
*
* @type:
- * FTC_CMapCache
+ * FTC_CMapCache
*
* @description:
- * An opaque handle used to manager a charmap cache. This cache is
- * to hold character codes -> glyph indices mappings.
+ * An opaque handle used to manager a charmap cache. This cache is to
+ * hold character codes -> glyph indices mappings.
+ *
*/
typedef struct FTC_CMapCacheRec_* FTC_CMapCache;
- /*************************************************************************/
- /* */
- /* @function: */
- /* FTC_CMapCache_New */
- /* */
- /* @description: */
- /* Create a new charmap cache. */
- /* */
- /* @input: */
- /* manager :: A handle to the cache manager. */
- /* */
- /* @output: */
- /* acache :: A new cache handle. NULL in case of error. */
- /* */
- /* @return: */
- /* FreeType error code. 0 means success. */
- /* */
- /* @note: */
- /* Like all other caches, this one will be destroyed with the cache */
- /* manager. */
- /* */
+ /*************************************************************************
+ *
+ * @function:
+ * FTC_CMapCache_New
+ *
+ * @description:
+ * Create a new charmap cache.
+ *
+ * @input:
+ * manager ::
+ * A handle to the cache manager.
+ *
+ * @output:
+ * acache ::
+ * A new cache handle. NULL in case of error.
+ *
+ * @return:
+ * FreeType error code. 0 means success.
+ *
+ * @note:
+ * Like all other caches, this one will be destroyed with the cache
+ * manager.
+ *
+ */
FT_EXPORT( FT_Error )
FTC_CMapCache_New( FTC_Manager manager,
FTC_CMapCache *acache );
- /*************************************************************************/
- /* */
- /* @function: */
- /* FTC_CMapCache_Lookup */
- /* */
- /* @description: */
- /* Translate a character code into a glyph index, using the charmap */
- /* cache. */
- /* */
- /* @input: */
- /* cache :: A charmap cache handle. */
- /* */
- /* face_id :: The source face ID. */
- /* */
- /* cmap_index :: The index of the charmap in the source face. */
- /* */
- /* char_code :: The character code (in the corresponding charmap). */
- /* */
- /* @return: */
- /* Glyph index. 0 means `no glyph'. */
- /* */
+ /************************************************************************
+ *
+ * @function:
+ * FTC_CMapCache_Lookup
+ *
+ * @description:
+ * Translate a character code into a glyph index, using the charmap
+ * cache.
+ *
+ * @input:
+ * cache ::
+ * A charmap cache handle.
+ *
+ * face_id ::
+ * The source face ID.
+ *
+ * cmap_index ::
+ * The index of the charmap in the source face.
+ *
+ * char_code ::
+ * The character code (in the corresponding charmap).
+ *
+ * @return:
+ * Glyph index. 0 means `no glyph'.
+ *
+ */
FT_EXPORT( FT_UInt )
FTC_CMapCache_Lookup( FTC_CMapCache cache,
FTC_FaceID face_id,
@@ -559,10 +568,10 @@
typedef struct FTC_ImageTypeRec_
{
- FTC_FaceID face_id;
- FT_Int width;
- FT_Int height;
- FT_Int32 flags;
+ FTC_FaceID face_id;
+ FT_Int width;
+ FT_Int height;
+ FT_Int32 flags;
} FTC_ImageTypeRec;
diff --git a/include/freetype/ftsysio.h b/include/freetype/ftsysio.h
deleted file mode 100644
index f8e4954..0000000
--- a/include/freetype/ftsysio.h
+++ /dev/null
@@ -1,195 +0,0 @@
-#ifndef __FT_SYSTEM_IO_H__
-#define __FT_SYSTEM_IO_H__
-
- /************************************************************************/
- /************************************************************************/
- /***** *****/
- /***** NOTE: THE CONTENT OF THIS FILE IS NOT CURRENTLY USED *****/
- /***** IN NORMAL BUILDS. CONSIDER IT EXPERIMENTAL. *****/
- /***** *****/
- /************************************************************************/
- /************************************************************************/
-
-
- /********************************************************************
- *
- * designing custom streams is a bit different now
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- */
-
-#include <ft2build.h>
-#include FT_INTERNAL_OBJECT_H
-
-FT_BEGIN_HEADER
-
- /*@*******************************************************************
- *
- * @type: FT_Stream
- *
- * @description:
- * handle to an input stream object. These are also @FT_Object handles
- */
- typedef struct FT_StreamRec_* FT_Stream;
-
-
- /*@*******************************************************************
- *
- * @type: FT_Stream_Class
- *
- * @description:
- * opaque handle to a @FT_Stream_ClassRec class structure describing
- * the methods of input streams
- */
- typedef const struct FT_Stream_ClassRec_* FT_Stream_Class;
-
-
- /*@*******************************************************************
- *
- * @functype: FT_Stream_ReadFunc
- *
- * @description:
- * a method used to read bytes from an input stream into memory
- *
- * @input:
- * stream :: target stream handle
- * buffer :: target buffer address
- * size :: number of bytes to read
- *
- * @return:
- * number of bytes effectively read. Must be <= 'size'.
- */
- typedef FT_ULong (*FT_Stream_ReadFunc)( FT_Stream stream,
- FT_Byte* buffer,
- FT_ULong size );
-
-
- /*@*******************************************************************
- *
- * @functype: FT_Stream_SeekFunc
- *
- * @description:
- * a method used to seek to a new position within a stream
- *
- * @input:
- * stream :: target stream handle
- * pos :: new read position, from start of stream
- *
- * @return:
- * error code. 0 means success
- */
- typedef FT_Error (*FT_Stream_SeekFunc)( FT_Stream stream,
- FT_ULong pos );
-
-
- /*@*******************************************************************
- *
- * @struct: FT_Stream_ClassRec
- *
- * @description:
- * a structure used to describe an input stream class
- *
- * @input:
- * clazz :: root @FT_ClassRec fields
- * stream_read :: stream byte read method
- * stream_seek :: stream seek method
- */
- typedef struct FT_Stream_ClassRec_
- {
- FT_ClassRec clazz;
- FT_Stream_ReadFunc stream_read;
- FT_Stream_SeekFunc stream_seek;
-
- } FT_Stream_ClassRec;
-
- /* */
-
-#define FT_STREAM_CLASS(x) ((FT_Stream_Class)(x))
-#define FT_STREAM_CLASS__READ(x) FT_STREAM_CLASS(x)->stream_read
-#define FT_STREAM_CLASS__SEEK(x) FT_STREAM_CLASS(x)->stream_seek;
-
- /*@*******************************************************************
- *
- * @struct: FT_StreamRec
- *
- * @description:
- * the input stream object structure. See @FT_Stream_ClassRec for
- * its class descriptor
- *
- * @fields:
- * object :: root @FT_ObjectRec fields
- * size :: size of stream in bytes (0 if unknown)
- * pos :: current position within stream
- * base :: for memory-based streams, the address of the stream's
- * first data byte in memory. NULL otherwise
- *
- * cursor :: the current cursor position within an input stream
- * frame. Only valid within a FT_FRAME_ENTER .. FT_FRAME_EXIT
- * block; NULL otherwise
- *
- * limit :: the current frame limit within a FT_FRAME_ENTER ..
- * FT_FRAME_EXIT block. NULL otherwise
- */
- typedef struct FT_StreamRec_
- {
- FT_ObjectRec object;
- FT_ULong size;
- FT_ULong pos;
- const FT_Byte* base;
- const FT_Byte* cursor;
- const FT_Byte* limit;
-
- } FT_StreamRec;
-
- /* some useful macros */
-#define FT_STREAM(x) ((FT_Stream)(x))
-#define FT_STREAM_P(x) ((FT_Stream*)(x))
-
-#define FT_STREAM__READ(x) FT_STREAM_CLASS__READ(FT_OBJECT__CLASS(x))
-#define FT_STREAM__SEEK(x) FT_STREAM_CLASS__SEEK(FT_OBJECT__CLASS(x))
-
-#define FT_STREAM_IS_BASED(x) ( FT_STREAM(x)->base != NULL )
-
- /* */
-
- /* create new memory-based stream */
- FT_BASE( FT_Error ) ft_stream_new_memory( const FT_Byte* stream_base,
- FT_ULong stream_size,
- FT_Memory memory,
- FT_Stream *astream );
-
- FT_BASE( FT_Error ) ft_stream_new_iso( const char* pathanme,
- FT_Memory memory,
- FT_Stream *astream );
-
-
- /* handle to default stream class implementation for a given build */
- /* this is used by "FT_New_Face" */
- /* */
- FT_APIVAR( FT_Type ) ft_stream_default_type;
-
-FT_END_HEADER
-
-#endif /* __FT_SYSTEM_STREAM_H__ */
diff --git a/include/freetype/ftsysmem.h b/include/freetype/ftsysmem.h
deleted file mode 100644
index 8de0c4d..0000000
--- a/include/freetype/ftsysmem.h
+++ /dev/null
@@ -1,202 +0,0 @@
-#ifndef __FT_SYSTEM_MEMORY_H__
-#define __FT_SYSTEM_MEMORY_H__
-
-#include <ft2build.h>
-
-FT_BEGIN_HEADER
-
- /************************************************************************/
- /************************************************************************/
- /***** *****/
- /***** NOTE: THE CONTENT OF THIS FILE IS NOT CURRENTLY USED *****/
- /***** IN NORMAL BUILDS. CONSIDER IT EXPERIMENTAL. *****/
- /***** *****/
- /************************************************************************/
- /************************************************************************/
-
-
- /*@**********************************************************************
- *
- * @type: FT_Memory
- *
- * @description:
- * opaque handle to a memory manager handle. Note that since FreeType
- * 2.2, the memory manager structure FT_MemoryRec is hidden to client
- * applications.
- *
- * however, you can still define custom allocators easily using the
- * @ft_memory_new API
- */
- typedef struct FT_MemoryRec_* FT_Memory;
-
-
- /*@**********************************************************************
- *
- * @functype: FT_Memory_AllocFunc
- *
- * @description:
- * a function used to allocate a block of memory.
- *
- * @input:
- * size :: size of blocks in bytes. Always > 0 !!
- * mem_data :: memory-manager specific optional argument
- * (see @ft_memory_new)
- *
- * @return:
- * address of new block. NULL in case of memory exhaustion
- */
- typedef FT_Pointer (*FT_Memory_AllocFunc)( FT_ULong size,
- FT_Pointer mem_data );
-
-
- /*@**********************************************************************
- *
- * @functype: FT_Memory_FreeFunc
- *
- * @description:
- * a function used to release a block of memory created through
- * @FT_Memory_AllocFunc or @FT_Memory_ReallocFunc
- *
- * @input:
- * block :: address of target memory block. cannot be NULL !!
- * mem_data :: memory-manager specific optional argument
- * (see @ft_memory_new)
- */
- typedef void (*FT_Memory_FreeFunc) ( FT_Pointer block,
- FT_Pointer mem_data );
-
-
- /*@**********************************************************************
- *
- * @functype: FT_Memory_ReallocFunc
- *
- * @description:
- * a function used to reallocate a memory block.
- *
- * @input:
- * block :: address of target memory block. cannot be NULL !!
- * new_size :: new requested size in bytes
- * cur_size :: current block size in bytes
- * mem_data :: memory-manager specific optional argument
- * (see @ft_memory_new)
- */
- typedef FT_Pointer (*FT_Memory_ReallocFunc)( FT_Pointer block,
- FT_ULong new_size,
- FT_ULong cur_size,
- FT_Pointer mem_data );
-
-
- /*@**********************************************************************
- *
- * @functype: FT_Memory_CreateFunc
- *
- * @description:
- * a function used to create a @FT_Memory object to model a
- * memory manager
- *
- * @input:
- * size :: size of memory manager structure in bytes
- * init_data :: optional initialisation argument
- *
- * @output:
- * amem_data :: memory-manager specific argument to block management
- * routines.
- *
- * @return:
- * handle to new memory manager object. NULL in case of failure
- */
- typedef FT_Pointer (*FT_Memory_CreateFunc)( FT_UInt size,
- FT_Pointer init_data,
- FT_Pointer *amem_data );
-
-
- /*@**********************************************************************
- *
- * @functype: FT_Memory_DestroyFunc
- *
- * @description:
- * a function used to destroy a given @FT_Memory manager
- *
- * @input:
- * memory :: target memory manager handle
- * mem_data :: option manager-specific argument
- */
- typedef void (*FT_Memory_DestroyFunc)( FT_Memory memory,
- FT_Pointer mem_data );
-
-
- /*@**********************************************************************
- *
- * @struct: FT_Memory_FuncsRec
- *
- * @description:
- * a function used to hold all methods of a given memory manager
- * implementation.
- *
- * @fields:
- * mem_alloc :: block allocation routine
- * mem_free :: block release routine
- * mem_realloc :: block re-allocation routine
- * mem_create :: manager creation routine
- * mem_destroy :: manager destruction routine
- */
- typedef struct FT_Memory_FuncsRec_
- {
- FT_Memory_AllocFunc mem_alloc;
- FT_Memory_FreeFunc mem_free;
- FT_Memory_ReallocFunc mem_realloc;
- FT_Memory_CreateFunc mem_create;
- FT_Memory_DestroyFunc mem_destroy;
-
- } FT_Memory_FuncsRec, *FT_Memory_Funcs;
-
-
- /*@**********************************************************************
- *
- * @type: FT_Memory_Funcs
- *
- * @description:
- * a pointer to a constant @FT_Memory_FuncsRec structure used to
- * describe a given memory manager implementation.
- */
- typedef const FT_Memory_FuncsRec* FT_Memory_Funcs;
-
-
- /*@**********************************************************************
- *
- * @function: ft_memory_new
- *
- * @description:
- * create a new memory manager, given a set of memory methods
- *
- * @input:
- * mem_funcs :: handle to memory manager implementation descriptor
- * mem_init_data :: optional initialisation argument, passed to
- * @FT_Memory_CreateFunc
- *
- * @return:
- * new memory manager handle. NULL in case of failure
- */
- FT_BASE( FT_Memory )
- ft_memory_new( FT_Memory_Funcs mem_funcs,
- FT_Pointer mem_init_data );
-
-
- /*@**********************************************************************
- *
- * @function: ft_memory_destroy
- *
- * @description:
- * destroy a given memory manager
- *
- * @input:
- * memory :: handle to target memory manager
- */
- FT_BASE( void )
- ft_memory_destroy( FT_Memory memory );
-
-/* */
-
-FT_END_HEADER
-
-#endif /* __FT_SYSTEM_MEMORY_H__ */
diff --git a/include/freetype/ftsystem.h b/include/freetype/ftsystem.h
index d1c55f7..373cf5b 100644
--- a/include/freetype/ftsystem.h
+++ b/include/freetype/ftsystem.h
@@ -4,7 +4,7 @@
/* */
/* FreeType low-level system interface definition (specification). */
/* */
-/* Copyright 1996-2001, 2002 by */
+/* Copyright 1996-2001, 2002, 2005 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -29,19 +29,19 @@
/*************************************************************************/
/* */
/* <Section> */
- /* system_interface */
+ /* system_interface */
/* */
/* <Title> */
- /* System Interface */
+ /* System Interface */
/* */
/* <Abstract> */
- /* How FreeType manages memory and i/o. */
+ /* How FreeType manages memory and i/o. */
/* */
/* <Description> */
- /* This section contains various definitions related to memory */
- /* management and i/o access. You need to understand this */
- /* information if you want to use a custom memory manager or you own */
- /* input i/o streams. */
+ /* This section contains various definitions related to memory */
+ /* management and i/o access. You need to understand this */
+ /* information if you want to use a custom memory manager or you own */
+ /* input i/o streams. */
/* */
/*************************************************************************/
@@ -53,80 +53,92 @@
/*************************************************************************/
- /*************************************************************************/
- /* */
- /* @type: */
- /* FT_Memory */
- /* */
- /* @description: */
- /* A handle to a given memory manager object, defined with a */
- /* @FT_MemoryRec structure. */
- /* */
+ /*************************************************************************
+ *
+ * @type:
+ * FT_Memory
+ *
+ * @description:
+ * A handle to a given memory manager object, defined with a
+ * @FT_MemoryRec structure.
+ *
+ */
typedef struct FT_MemoryRec_* FT_Memory;
- /*************************************************************************/
- /* */
- /* @functype: */
- /* FT_Alloc_Func */
- /* */
- /* @description: */
- /* A function used to allocate `size' bytes from `memory'. */
- /* */
- /* @input: */
- /* memory :: A handle to the source memory manager. */
- /* */
- /* size :: The size in bytes to allocate. */
- /* */
- /* @return: */
- /* Address of new memory block. 0 in case of failure. */
- /* */
+ /*************************************************************************
+ *
+ * @functype:
+ * FT_Alloc_Func
+ *
+ * @description:
+ * A function used to allocate `size' bytes from `memory'.
+ *
+ * @input:
+ * memory ::
+ * A handle to the source memory manager.
+ *
+ * size ::
+ * The size in bytes to allocate.
+ *
+ * @return:
+ * Address of new memory block. 0 in case of failure.
+ *
+ */
typedef void*
(*FT_Alloc_Func)( FT_Memory memory,
long size );
- /*************************************************************************/
- /* */
- /* @functype: */
- /* FT_Free_Func */
- /* */
- /* @description: */
- /* A function used to release a given block of memory. */
- /* */
- /* @input: */
- /* memory :: A handle to the source memory manager. */
- /* */
- /* block :: The address of the target memory block. */
- /* */
+ /*************************************************************************
+ *
+ * @functype:
+ * FT_Free_Func
+ *
+ * @description:
+ * A function used to release a given block of memory.
+ *
+ * @input:
+ * memory ::
+ * A handle to the source memory manager.
+ *
+ * block ::
+ * The address of the target memory block.
+ *
+ */
typedef void
(*FT_Free_Func)( FT_Memory memory,
void* block );
- /*************************************************************************/
- /* */
- /* @functype: */
- /* FT_Realloc_Func */
- /* */
- /* @description: */
- /* a function used to re-allocate a given block of memory. */
- /* */
- /* @input: */
- /* memory :: A handle to the source memory manager. */
- /* */
- /* cur_size :: The block's current size in bytes. */
- /* */
- /* new_size :: The block's requested new size. */
- /* */
- /* block :: The block's current address. */
- /* */
- /* @return: */
- /* New block address. 0 in case of memory shortage. */
- /* */
- /* @note: */
- /* In case of error, the old block must still be available. */
- /* */
+ /*************************************************************************
+ *
+ * @functype:
+ * FT_Realloc_Func
+ *
+ * @description:
+ * A function used to re-allocate a given block of memory.
+ *
+ * @input:
+ * memory ::
+ * A handle to the source memory manager.
+ *
+ * cur_size ::
+ * The block's current size in bytes.
+ *
+ * new_size ::
+ * The block's requested new size.
+ *
+ * block ::
+ * The block's current address.
+ *
+ * @return:
+ * New block address. 0 in case of memory shortage.
+ *
+ * @note:
+ * In case of error, the old block must still be available.
+ *
+ */
typedef void*
(*FT_Realloc_Func)( FT_Memory memory,
long cur_size,
@@ -134,23 +146,28 @@
void* block );
- /*************************************************************************/
- /* */
- /* @struct: */
- /* FT_MemoryRec */
- /* */
- /* @description: */
- /* A structure used to describe a given memory manager to FreeType 2. */
- /* */
- /* @fields: */
- /* user :: A generic typeless pointer for user data. */
- /* */
- /* alloc :: A pointer type to an allocation function. */
- /* */
- /* free :: A pointer type to an memory freeing function. */
- /* */
- /* realloc :: A pointer type to a reallocation function. */
- /* */
+ /*************************************************************************
+ *
+ * @struct:
+ * FT_MemoryRec
+ *
+ * @description:
+ * A structure used to describe a given memory manager to FreeType 2.
+ *
+ * @fields:
+ * user ::
+ * A generic typeless pointer for user data.
+ *
+ * alloc ::
+ * A pointer type to an allocation function.
+ *
+ * free ::
+ * A pointer type to an memory freeing function.
+ *
+ * realloc ::
+ * A pointer type to a reallocation function.
+ *
+ */
struct FT_MemoryRec_
{
void* user;
@@ -167,26 +184,28 @@
/*************************************************************************/
- /*************************************************************************/
- /* */
- /* @type: */
- /* FT_Stream */
- /* */
- /* @description: */
- /* A handle to an input stream. */
- /* */
+ /*************************************************************************
+ *
+ * @type:
+ * FT_Stream
+ *
+ * @description:
+ * A handle to an input stream.
+ *
+ */
typedef struct FT_StreamRec_* FT_Stream;
- /*************************************************************************/
- /* */
- /* @struct: */
- /* FT_StreamDesc */
- /* */
- /* @description: */
- /* A union type used to store either a long or a pointer. This is */
- /* used to store a file descriptor or a FILE* in an input stream. */
- /* */
+ /*************************************************************************
+ *
+ * @struct:
+ * FT_StreamDesc
+ *
+ * @description:
+ * A union type used to store either a long or a pointer. This is used
+ * to store a file descriptor or a FILE* in an input stream.
+ *
+ */
typedef union FT_StreamDesc_
{
long value;
@@ -195,30 +214,35 @@
} FT_StreamDesc;
- /*************************************************************************/
- /* */
- /* @functype: */
- /* FT_Stream_IoFunc */
- /* */
- /* @description: */
- /* A function used to seek and read data from a given input stream. */
- /* */
- /* @input: */
- /* stream :: A handle to the source stream. */
- /* */
- /* offset :: The offset of read in stream (always from start). */
- /* */
- /* buffer :: The address of the read buffer. */
- /* */
- /* count :: The number of bytes to read from the stream. */
- /* */
- /* @return: */
- /* The number of bytes effectively read by the stream. */
- /* */
- /* @note: */
- /* This function might be called to perform a seek or skip operation */
- /* with a `count' of 0. */
- /* */
+ /*************************************************************************
+ *
+ * @functype:
+ * FT_Stream_IoFunc
+ *
+ * @description:
+ * A function used to seek and read data from a given input stream.
+ *
+ * @input:
+ * stream ::
+ * A handle to the source stream.
+ *
+ * offset ::
+ * The offset of read in stream (always from start).
+ *
+ * buffer ::
+ * The address of the read buffer.
+ *
+ * count ::
+ * The number of bytes to read from the stream.
+ *
+ * @return:
+ * The number of bytes effectively read by the stream.
+ *
+ * @note:
+ * This function might be called to perform a seek or skip operation
+ * with a `count' of 0.
+ *
+ */
typedef unsigned long
(*FT_Stream_IoFunc)( FT_Stream stream,
unsigned long offset,
@@ -226,60 +250,73 @@
unsigned long count );
- /*************************************************************************/
- /* */
- /* @functype: */
- /* FT_Stream_CloseFunc */
- /* */
- /* @description: */
- /* A function used to close a given input stream. */
- /* */
- /* @input: */
- /* stream :: A handle to the target stream. */
- /* */
+ /*************************************************************************
+ *
+ * @functype:
+ * FT_Stream_CloseFunc
+ *
+ * @description:
+ * A function used to close a given input stream.
+ *
+ * @input:
+ * stream ::
+ * A handle to the target stream.
+ *
+ */
typedef void
(*FT_Stream_CloseFunc)( FT_Stream stream );
- /*************************************************************************/
- /* */
- /* @struct: */
- /* FT_StreamRec */
- /* */
- /* @description: */
- /* A structure used to describe an input stream. */
- /* */
- /* @input: */
- /* base :: For memory-based streams, this is the address of the */
- /* first stream byte in memory. This field should */
- /* always be set to NULL for disk-based streams. */
- /* */
- /* size :: The stream size in bytes. */
- /* */
- /* pos :: The current position within the stream. */
- /* */
- /* descriptor :: This field is a union that can hold an integer or a */
- /* pointer. It is used by stream implementations to */
- /* store file descriptors or FILE* pointers. */
- /* */
- /* pathname :: This field is completely ignored by FreeType. */
- /* However, it is often useful during debugging to use */
- /* it to store the stream's filename (where available). */
- /* */
- /* read :: The stream's input function. */
- /* */
- /* close :: The stream;s close function. */
- /* */
- /* memory :: The memory manager to use to preload frames. This is */
- /* set internally by FreeType and shouldn't be touched */
- /* by stream implementations. */
- /* */
- /* cursor :: This field is set and used internally by FreeType */
- /* when parsing frames. */
- /* */
- /* limit :: This field is set and used internally by FreeType */
- /* when parsing frames. */
- /* */
+ /*************************************************************************
+ *
+ * @struct:
+ * FT_StreamRec
+ *
+ * @description:
+ * A structure used to describe an input stream.
+ *
+ * @input:
+ * base ::
+ * For memory-based streams, this is the address of the first stream
+ * byte in memory. This field should always be set to NULL for
+ * disk-based streams.
+ *
+ * size ::
+ * The stream size in bytes.
+ *
+ * pos ::
+ * The current position within the stream.
+ *
+ * descriptor ::
+ * This field is a union that can hold an integer or a pointer. It is
+ * used by stream implementations to store file descriptors or FILE*
+ * pointers.
+ *
+ * pathname ::
+ * This field is completely ignored by FreeType. However, it is often
+ * useful during debugging to use it to store the stream's filename
+ * (where available).
+ *
+ * read ::
+ * The stream's input function.
+ *
+ * close ::
+ * The stream;s close function.
+ *
+ * memory ::
+ * The memory manager to use to preload frames. This is set
+ * internally by FreeType and shouldn't be touched by stream
+ * implementations.
+ *
+ * cursor ::
+ * This field is set and used internally by FreeType when parsing
+ * frames.
+ *
+ * limit ::
+ * This field is set and used internally by FreeType when parsing
+ * frames.
+ *
+ */
typedef struct FT_StreamRec_
{
unsigned char* base;
diff --git a/include/freetype/fttrigon.h b/include/freetype/fttrigon.h
index 0462265..92cf6d9 100644
--- a/include/freetype/fttrigon.h
+++ b/include/freetype/fttrigon.h
@@ -4,7 +4,7 @@
/* */
/* FreeType trigonometric functions (specification). */
/* */
-/* Copyright 2001, 2003 by */
+/* Copyright 2001, 2003, 2005 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -33,272 +33,307 @@
/*************************************************************************/
/* */
- /* @section: */
+ /* <Section> */
/* computations */
/* */
/*************************************************************************/
- /*************************************************************************/
- /* */
- /* @type: */
- /* FT_Angle */
- /* */
- /* @description: */
- /* This type is used to model angle values in FreeType. Note that */
- /* the angle is a 16.16 fixed float value expressed in degrees. */
- /* */
+ /*************************************************************************
+ *
+ * @type:
+ * FT_Angle
+ *
+ * @description:
+ * This type is used to model angle values in FreeType. Note that the
+ * angle is a 16.16 fixed float value expressed in degrees.
+ *
+ */
typedef FT_Fixed FT_Angle;
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_ANGLE_PI */
- /* */
- /* @description: */
- /* The angle pi expressed in @FT_Angle units. */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_ANGLE_PI
+ *
+ * @description:
+ * The angle pi expressed in @FT_Angle units.
+ *
+ */
#define FT_ANGLE_PI ( 180L << 16 )
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_ANGLE_2PI */
- /* */
- /* @description: */
- /* The angle 2*pi expressed in @FT_Angle units. */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_ANGLE_2PI
+ *
+ * @description:
+ * The angle 2*pi expressed in @FT_Angle units.
+ *
+ */
#define FT_ANGLE_2PI ( FT_ANGLE_PI * 2 )
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_ANGLE_PI2 */
- /* */
- /* @description: */
- /* The angle pi/2 expressed in @FT_Angle units. */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_ANGLE_PI2
+ *
+ * @description:
+ * The angle pi/2 expressed in @FT_Angle units.
+ *
+ */
#define FT_ANGLE_PI2 ( FT_ANGLE_PI / 2 )
- /*************************************************************************/
- /* */
- /* @macro: */
- /* FT_ANGLE_PI4 */
- /* */
- /* @description: */
- /* The angle pi/4 expressed in @FT_Angle units. */
- /* */
+ /*************************************************************************
+ *
+ * @macro:
+ * FT_ANGLE_PI4
+ *
+ * @description:
+ * The angle pi/4 expressed in @FT_Angle units.
+ *
+ */
#define FT_ANGLE_PI4 ( FT_ANGLE_PI / 4 )
- /*************************************************************************/
- /* */
- /* @function: */
- /* FT_Sin */
- /* */
- /* @description: */
- /* Return the sinus of a given angle in fixed point format. */
- /* */
- /* @input: */
- /* angle :: The input angle. */
- /* */
- /* @return: */
- /* The sinus value. */
- /* */
- /* @note: */
- /* If you need both the sinus and cosinus for a given angle, use the */
- /* function @FT_Vector_Unit. */
- /* */
+ /*************************************************************************
+ *
+ * @function:
+ * FT_Sin
+ *
+ * @description:
+ * Return the sinus of a given angle in fixed point format.
+ *
+ * @input:
+ * angle ::
+ * The input angle.
+ *
+ * @return:
+ * The sinus value.
+ *
+ * @note:
+ * If you need both the sinus and cosinus for a given angle, use the
+ * function @FT_Vector_Unit.
+ *
+ */
FT_EXPORT( FT_Fixed )
FT_Sin( FT_Angle angle );
- /*************************************************************************/
- /* */
- /* @function: */
- /* FT_Cos */
- /* */
- /* @description: */
- /* Return the cosinus of a given angle in fixed point format. */
- /* */
- /* @input: */
- /* angle :: The input angle. */
- /* */
- /* @return: */
- /* The cosinus value. */
- /* */
- /* @note: */
- /* If you need both the sinus and cosinus for a given angle, use the */
- /* function @FT_Vector_Unit. */
- /* */
+ /*************************************************************************
+ *
+ * @function:
+ * FT_Cos
+ *
+ * @description:
+ * Return the cosinus of a given angle in fixed point format.
+ *
+ * @input:
+ * angle ::
+ * The input angle.
+ *
+ * @return:
+ * The cosinus value.
+ *
+ * @note:
+ * If you need both the sinus and cosinus for a given angle, use the
+ * function @FT_Vector_Unit.
+ *
+ */
FT_EXPORT( FT_Fixed )
FT_Cos( FT_Angle angle );
- /*************************************************************************/
- /* */
- /* @function: */
- /* FT_Tan */
- /* */
- /* @description: */
- /* Return the tangent of a given angle in fixed point format. */
- /* */
- /* @input: */
- /* angle :: The input angle. */
- /* */
- /* @return: */
- /* The tangent value. */
- /* */
+ /*************************************************************************
+ *
+ * @function:
+ * FT_Tan
+ *
+ * @description:
+ * Return the tangent of a given angle in fixed point format.
+ *
+ * @input:
+ * angle ::
+ * The input angle.
+ *
+ * @return:
+ * The tangent value.
+ *
+ */
FT_EXPORT( FT_Fixed )
FT_Tan( FT_Angle angle );
- /*************************************************************************/
- /* */
- /* @function: */
- /* FT_Atan2 */
- /* */
- /* @description: */
- /* Return the arc-tangent corresponding to a given vector (x,y) in */
- /* the 2d plane. */
- /* */
- /* @input: */
- /* x :: The horizontal vector coordinate. */
- /* */
- /* y :: The vertical vector coordinate. */
- /* */
- /* @return: */
- /* The arc-tangent value (i.e. angle). */
- /* */
+ /*************************************************************************
+ *
+ * @function:
+ * FT_Atan2
+ *
+ * @description:
+ * Return the arc-tangent corresponding to a given vector (x,y) in
+ * the 2d plane.
+ *
+ * @input:
+ * x ::
+ * The horizontal vector coordinate.
+ *
+ * y ::
+ * The vertical vector coordinate.
+ *
+ * @return:
+ * The arc-tangent value (i.e. angle).
+ *
+ */
FT_EXPORT( FT_Angle )
FT_Atan2( FT_Fixed x,
FT_Fixed y );
- /*************************************************************************/
- /* */
- /* @function: */
- /* FT_Angle_Diff */
- /* */
- /* @description: */
- /* Return the difference between two angles. The result is always */
- /* constrained to the ]-PI..PI] interval. */
- /* */
- /* @input: */
- /* angle1 :: First angle. */
- /* */
- /* angle2 :: Second angle. */
- /* */
- /* @return: */
- /* Contrainted value of `value2-value1'. */
- /* */
+ /*************************************************************************
+ *
+ * @function:
+ * FT_Angle_Diff
+ *
+ * @description:
+ * Return the difference between two angles. The result is always
+ * constrained to the ]-PI..PI] interval.
+ *
+ * @input:
+ * angle1 ::
+ * First angle.
+ *
+ * angle2 ::
+ * Second angle.
+ *
+ * @return:
+ * Contrainted value of `value2-value1'.
+ *
+ */
FT_EXPORT( FT_Angle )
FT_Angle_Diff( FT_Angle angle1,
FT_Angle angle2 );
- /*************************************************************************/
- /* */
- /* @function: */
- /* FT_Vector_Unit */
- /* */
- /* @description: */
- /* Return the unit vector corresponding to a given angle. After the */
- /* call, the value of `vec.x' will be `sin(angle)', and the value of */
- /* `vec.y' will be `cos(angle)'. */
- /* */
- /* This function is useful to retrieve both the sinus and cosinus of */
- /* a given angle quickly. */
- /* */
- /* @output: */
- /* vec :: The address of target vector. */
- /* */
- /* @input: */
- /* angle :: The address of angle. */
- /* */
+ /*************************************************************************
+ *
+ * @function:
+ * FT_Vector_Unit
+ *
+ * @description:
+ * Return the unit vector corresponding to a given angle. After the
+ * call, the value of `vec.x' will be `sin(angle)', and the value of
+ * `vec.y' will be `cos(angle)'.
+ *
+ * This function is useful to retrieve both the sinus and cosinus of a
+ * given angle quickly.
+ *
+ * @output:
+ * vec ::
+ * The address of target vector.
+ *
+ * @input:
+ * angle ::
+ * The address of angle.
+ *
+ */
FT_EXPORT( void )
FT_Vector_Unit( FT_Vector* vec,
FT_Angle angle );
- /*************************************************************************/
- /* */
- /* @function: */
- /* FT_Vector_Rotate */
- /* */
- /* @description: */
- /* Rotate a vector by a given angle. */
- /* */
- /* @inout: */
- /* vec :: The address of target vector. */
- /* */
- /* @input: */
- /* angle :: The address of angle. */
- /* */
+ /*************************************************************************
+ *
+ * @function:
+ * FT_Vector_Rotate
+ *
+ * @description:
+ * Rotate a vector by a given angle.
+ *
+ * @inout:
+ * vec ::
+ * The address of target vector.
+ *
+ * @input:
+ * angle ::
+ * The address of angle.
+ *
+ */
FT_EXPORT( void )
FT_Vector_Rotate( FT_Vector* vec,
FT_Angle angle );
- /*************************************************************************/
- /* */
- /* @function: */
- /* FT_Vector_Length */
- /* */
- /* @description: */
- /* Return the length of a given vector. */
- /* */
- /* @input: */
- /* vec :: The address of target vector. */
- /* */
- /* @return: */
- /* The vector length, expressed in the same units that the original */
- /* vector coordinates. */
- /* */
+ /*************************************************************************
+ *
+ * @function:
+ * FT_Vector_Length
+ *
+ * @description:
+ * Return the length of a given vector.
+ *
+ * @input:
+ * vec ::
+ * The address of target vector.
+ *
+ * @return:
+ * The vector length, expressed in the same units that the original
+ * vector coordinates.
+ *
+ */
FT_EXPORT( FT_Fixed )
FT_Vector_Length( FT_Vector* vec );
- /*************************************************************************/
- /* */
- /* @function: */
- /* FT_Vector_Polarize */
- /* */
- /* @description: */
- /* Compute both the length and angle of a given vector. */
- /* */
- /* @input: */
- /* vec :: The address of source vector. */
- /* */
- /* @output: */
- /* length :: The vector length. */
- /* angle :: The vector angle. */
- /* */
+ /*************************************************************************
+ *
+ * @function:
+ * FT_Vector_Polarize
+ *
+ * @description:
+ * Compute both the length and angle of a given vector.
+ *
+ * @input:
+ * vec ::
+ * The address of source vector.
+ *
+ * @output:
+ * length ::
+ * The vector length.
+ *
+ * angle ::
+ * The vector angle.
+ *
+ */
FT_EXPORT( void )
FT_Vector_Polarize( FT_Vector* vec,
FT_Fixed *length,
FT_Angle *angle );
- /*************************************************************************/
- /* */
- /* @function: */
- /* FT_Vector_From_Polar */
- /* */
- /* @description: */
- /* Compute vector coordinates from a length and angle. */
- /* */
- /* @output: */
- /* vec :: The address of source vector. */
- /* */
- /* @input: */
- /* length :: The vector length. */
- /* angle :: The vector angle. */
- /* */
+ /*************************************************************************
+ *
+ * @function:
+ * FT_Vector_From_Polar
+ *
+ * @description:
+ * Compute vector coordinates from a length and angle.
+ *
+ * @output:
+ * vec ::
+ * The address of source vector.
+ *
+ * @input:
+ * length ::
+ * The vector length.
+ *
+ * angle ::
+ * The vector angle.
+ *
+ */
FT_EXPORT( void )
FT_Vector_From_Polar( FT_Vector* vec,
FT_Fixed length,
diff --git a/include/freetype/internal/pshints.h b/include/freetype/internal/pshints.h
index cd48f6c..a85c5d1 100644
--- a/include/freetype/internal/pshints.h
+++ b/include/freetype/internal/pshints.h
@@ -4,9 +4,9 @@
/* */
/* Interface to Postscript-specific (Type 1 and Type 2) hints */
/* recorders (specification only). These are used to support native */
-/* T1/T2 hints in the "type1", "cid" and "cff" font drivers. */
+/* T1/T2 hints in the `type1', `cid', and `cff' font drivers. */
/* */
-/* Copyright 2001, 2002, 2003 by */
+/* Copyright 2001, 2002, 2003, 2005 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -73,212 +73,233 @@
/*************************************************************************/
/*************************************************************************/
- /*************************************************************************/
- /* */
- /* @type: */
- /* T1_Hints */
- /* */
- /* @description: */
- /* This is a handle to an opaque structure used to record glyph hints */
- /* from a Type 1 character glyph character string. */
- /* */
- /* The methods used to operate on this object are defined by the */
- /* @T1_Hints_FuncsRec structure. Recording glyph hints is normally */
- /* achieved through the following scheme: */
- /* */
- /* - Open a new hint recording session by calling the "open" method. */
- /* This will rewind the recorder and prepare it for new input. */
- /* */
- /* - For each hint found in the glyph charstring, call the */
- /* corresponding method ("stem", "stem3", or "reset"). Note that */
- /* these functions do not return an error code. */
- /* */
- /* - Close the recording session by calling the "close" method. It */
- /* will return an error code if the hints were invalid or something */
- /* strange happened (e.g. memory shortage). */
- /* */
- /* The hints accumulated in the object can later be used by the */
- /* PostScript hinter. */
- /* */
+ /*************************************************************************
+ *
+ * @type:
+ * T1_Hints
+ *
+ * @description:
+ * This is a handle to an opaque structure used to record glyph hints
+ * from a Type 1 character glyph character string.
+ *
+ * The methods used to operate on this object are defined by the
+ * @T1_Hints_FuncsRec structure. Recording glyph hints is normally
+ * achieved through the following scheme:
+ *
+ * - Open a new hint recording session by calling the `open' method.
+ * This rewinds the recorder and prepare it for new input.
+ *
+ * - For each hint found in the glyph charstring, call the corresponding
+ * method (`stem', `stem3', or `reset'). Note that these functions do
+ * not return an error code.
+ *
+ * - Close the recording session by calling the `close' method. It
+ * returns an error code if the hints were invalid or something
+ * strange happened (e.g., memory shortage).
+ *
+ * The hints accumulated in the object can later be used by the
+ * PostScript hinter.
+ *
+ */
typedef struct T1_HintsRec_* T1_Hints;
- /*************************************************************************/
- /* */
- /* @type: */
- /* T1_Hints_Funcs */
- /* */
- /* @description: */
- /* A pointer to the @T1_Hints_FuncsRec structure that defines the */
- /* API of a given @T1_Hints object. */
- /* */
+ /*************************************************************************
+ *
+ * @type:
+ * T1_Hints_Funcs
+ *
+ * @description:
+ * A pointer to the @T1_Hints_FuncsRec structure that defines the API of
+ * a given @T1_Hints object.
+ *
+ */
typedef const struct T1_Hints_FuncsRec_* T1_Hints_Funcs;
- /*************************************************************************/
- /* */
- /* @functype: */
- /* T1_Hints_OpenFunc */
- /* */
- /* @description: */
- /* A method of the @T1_Hints class used to prepare it for a new */
- /* Type 1 hints recording session. */
- /* */
- /* @input: */
- /* hints :: A handle to the Type 1 hints recorder. */
- /* */
- /* @note: */
- /* You should always call the @T1_Hints_CloseFunc method in order to */
- /* close an opened recording session. */
- /* */
+ /*************************************************************************
+ *
+ * @functype:
+ * T1_Hints_OpenFunc
+ *
+ * @description:
+ * A method of the @T1_Hints class used to prepare it for a new Type 1
+ * hints recording session.
+ *
+ * @input:
+ * hints ::
+ * A handle to the Type 1 hints recorder.
+ *
+ * @note:
+ * You should always call the @T1_Hints_CloseFunc method in order to
+ * close an opened recording session.
+ *
+ */
typedef void
(*T1_Hints_OpenFunc)( T1_Hints hints );
- /*************************************************************************/
- /* */
- /* @functype: */
- /* T1_Hints_SetStemFunc */
- /* */
- /* @description: */
- /* A method of the @T1_Hints class used to record a new horizontal or */
- /* vertical stem. This corresponds to the Type 1 "hstem" and "vstem" */
- /* operators. */
- /* */
- /* @input: */
- /* hints :: A handle to the Type 1 hints recorder. */
- /* */
- /* dimension :: 0 for horizontal stems (hstem), 1 for vertical ones */
- /* (vstem). */
- /* */
- /* coords :: Array of 2 integers, used as (position,length) stem */
- /* descriptor. */
- /* */
- /* @note: */
- /* Use vertical coordinates (y) for horizontal stems (dim=0). Use */
- /* horizontal coordinates (x) for vertical stems (dim=1). */
- /* */
- /* "coords[0]" is the absolute stem position (lowest coordinate); */
- /* "coords[1]" is the length. */
- /* */
- /* The length can be negative, in which case it must be either -20 or */
- /* -21. It will be interpreted as a "ghost" stem, according to */
- /* Type 1 specification. */
- /* */
- /* If the length is -21 (corresponding to a bottom ghost stem), then */
- /* the real stem position is "coords[0]+coords[1]". */
- /* */
+ /*************************************************************************
+ *
+ * @functype:
+ * T1_Hints_SetStemFunc
+ *
+ * @description:
+ * A method of the @T1_Hints class used to record a new horizontal or
+ * vertical stem. This corresponds to the Type 1 `hstem' and `vstem'
+ * operators.
+ *
+ * @input:
+ * hints ::
+ * A handle to the Type 1 hints recorder.
+ *
+ * dimension ::
+ * 0 for horizontal stems (hstem), 1 for vertical ones (vstem).
+ *
+ * coords ::
+ * Array of 2 integers, used as (position,length) stem descriptor.
+ *
+ * @note:
+ * Use vertical coordinates (y) for horizontal stems (dim=0). Use
+ * horizontal coordinates (x) for vertical stems (dim=1).
+ *
+ * `coords[0]' is the absolute stem position (lowest coordinate);
+ * `coords[1]' is the length.
+ *
+ * The length can be negative, in which case it must be either -20 or
+ * -21. It is interpreted as a `ghost' stem, according to the Type 1
+ * specification.
+ *
+ * If the length is -21 (corresponding to a bottom ghost stem), then
+ * the real stem position is `coords[0]+coords[1]'.
+ *
+ */
typedef void
(*T1_Hints_SetStemFunc)( T1_Hints hints,
FT_UInt dimension,
FT_Long* coords );
- /*************************************************************************/
- /* */
- /* @functype: */
- /* T1_Hints_SetStem3Func */
- /* */
- /* @description: */
- /* A method of the @T1_Hints class used to record three */
- /* counter-controlled horizontal or vertical stems at once. */
- /* */
- /* @input: */
- /* hints :: A handle to the Type 1 hints recorder. */
- /* */
- /* dimension :: 0 for horizontal stems, 1 for vertical ones. */
- /* */
- /* coords :: An array of 6 integers, holding 3 (position,length) */
- /* pairs for the counter-controlled stems. */
- /* */
- /* @note: */
- /* Use vertical coordinates (y) for horizontal stems (dim=0). Use */
- /* horizontal coordinates (x) for vertical stems (dim=1). */
- /* */
- /* The lengths cannot be negative (ghost stems are never */
- /* counter-controlled). */
- /* */
+ /*************************************************************************
+ *
+ * @functype:
+ * T1_Hints_SetStem3Func
+ *
+ * @description:
+ * A method of the @T1_Hints class used to record three
+ * counter-controlled horizontal or vertical stems at once.
+ *
+ * @input:
+ * hints ::
+ * A handle to the Type 1 hints recorder.
+ *
+ * dimension ::
+ * 0 for horizontal stems, 1 for vertical ones.
+ *
+ * coords ::
+ * An array of 6 integers, holding 3 (position,length) pairs for the
+ * counter-controlled stems.
+ *
+ * @note:
+ * Use vertical coordinates (y) for horizontal stems (dim=0). Use
+ * horizontal coordinates (x) for vertical stems (dim=1).
+ *
+ * The lengths cannot be negative (ghost stems are never
+ * counter-controlled).
+ *
+ */
typedef void
(*T1_Hints_SetStem3Func)( T1_Hints hints,
FT_UInt dimension,
FT_Long* coords );
- /*************************************************************************/
- /* */
- /* @functype: */
- /* T1_Hints_ResetFunc */
- /* */
- /* @description: */
- /* A method of the @T1_Hints class used to reset the stems hints in a */
- /* recording session. */
- /* */
- /* @input: */
- /* hints :: A handle to the Type 1 hints recorder. */
- /* */
- /* end_point :: The index of the last point in the input glyph in */
- /* which the previously defined hints apply. */
- /* */
+ /*************************************************************************
+ *
+ * @functype:
+ * T1_Hints_ResetFunc
+ *
+ * @description:
+ * A method of the @T1_Hints class used to reset the stems hints in a
+ * recording session.
+ *
+ * @input:
+ * hints ::
+ * A handle to the Type 1 hints recorder.
+ *
+ * end_point ::
+ * The index of the last point in the input glyph in which the
+ * previously defined hints apply.
+ *
+ */
typedef void
(*T1_Hints_ResetFunc)( T1_Hints hints,
FT_UInt end_point );
- /*************************************************************************/
- /* */
- /* @functype: */
- /* T1_Hints_CloseFunc */
- /* */
- /* @description: */
- /* A method of the @T1_Hints class used to close a hint recording */
- /* session. */
- /* */
- /* @input: */
- /* hints :: A handle to the Type 1 hints recorder. */
- /* */
- /* end_point :: The index of the last point in the input glyph. */
- /* */
- /* @return: */
- /* FreeType error code. 0 means success. */
- /* */
- /* @note: */
- /* The error code will be set to indicate that an error occured */
- /* during the recording session. */
- /* */
+ /*************************************************************************
+ *
+ * @functype:
+ * T1_Hints_CloseFunc
+ *
+ * @description:
+ * A method of the @T1_Hints class used to close a hint recording
+ * session.
+ *
+ * @input:
+ * hints ::
+ * A handle to the Type 1 hints recorder.
+ *
+ * end_point ::
+ * The index of the last point in the input glyph.
+ *
+ * @return:
+ * FreeType error code. 0 means success.
+ *
+ * @note:
+ * The error code is set to indicate that an error occurred during the
+ * recording session.
+ *
+ */
typedef FT_Error
(*T1_Hints_CloseFunc)( T1_Hints hints,
FT_UInt end_point );
- /*************************************************************************/
- /* */
- /* @functype: */
- /* T1_Hints_ApplyFunc */
- /* */
- /* @description: */
- /* A method of the @T1_Hints class used to apply hints to the */
- /* corresponding glyph outline. Must be called once all hints have */
- /* been recorded. */
- /* */
- /* @input: */
- /* hints :: A handle to the Type 1 hints recorder. */
- /* */
- /* outline :: A pointer to the target outline descriptor. */
- /* */
- /* globals :: The hinter globals for this font. */
- /* */
- /* hint_mode :: Hinting information. */
- /* */
- /* @return: */
- /* FreeType error code. 0 means success. */
- /* */
- /* @note: */
- /* On input, all points within the outline are in font coordinates. */
- /* On output, they are in 1/64th of pixels. */
- /* */
- /* The scaling transformation is taken from the "globals" object */
- /* which must correspond to the same font as the glyph. */
- /* */
+ /*************************************************************************
+ *
+ * @functype:
+ * T1_Hints_ApplyFunc
+ *
+ * @description:
+ * A method of the @T1_Hints class used to apply hints to the
+ * corresponding glyph outline. Must be called once all hints have been
+ * recorded.
+ *
+ * @input:
+ * hints ::
+ * A handle to the Type 1 hints recorder.
+ *
+ * outline ::
+ * A pointer to the target outline descriptor.
+ *
+ * globals ::
+ * The hinter globals for this font.
+ *
+ * hint_mode ::
+ * Hinting information.
+ *
+ * @return:
+ * FreeType error code. 0 means success.
+ *
+ * @note:
+ * On input, all points within the outline are in font coordinates. On
+ * output, they are in 1/64th of pixels.
+ *
+ * The scaling transformation is taken from the `globals' object which
+ * must correspond to the same font as the glyph.
+ *
+ */
typedef FT_Error
(*T1_Hints_ApplyFunc)( T1_Hints hints,
FT_Outline* outline,
@@ -286,30 +307,37 @@
FT_Render_Mode hint_mode );
- /*************************************************************************/
- /* */
- /* @struct: */
- /* T1_Hints_FuncsRec */
- /* */
- /* @description: */
- /* The structure used to provide the API to @T1_Hints objects. */
- /* */
- /* @fields: */
- /* hints :: A handle to the T1 Hints recorder. */
- /* */
- /* open :: The function to open a recording session. */
- /* */
- /* close :: The function to close a recording session. */
- /* */
- /* stem :: The function to set a simple stem. */
- /* */
- /* stem3 :: The function to set counter-controlled stems. */
- /* */
- /* reset :: The function to reset stem hints. */
- /* */
- /* apply :: The function to apply the hints to the corresponding */
- /* glyph outline. */
- /* */
+ /*************************************************************************
+ *
+ * @struct:
+ * T1_Hints_FuncsRec
+ *
+ * @description:
+ * The structure used to provide the API to @T1_Hints objects.
+ *
+ * @fields:
+ * hints ::
+ * A handle to the T1 Hints recorder.
+ *
+ * open ::
+ * The function to open a recording session.
+ *
+ * close ::
+ * The function to close a recording session.
+ *
+ * stem ::
+ * The function to set a simple stem.
+ *
+ * stem3 ::
+ * The function to set counter-controlled stems.
+ *
+ * reset ::
+ * The function to reset stem hints.
+ *
+ * apply ::
+ * The function to apply the hints to the corresponding glyph outline.
+ *
+ */
typedef struct T1_Hints_FuncsRec_
{
T1_Hints hints;
@@ -331,100 +359,108 @@
/*************************************************************************/
/*************************************************************************/
- /*************************************************************************/
- /* */
- /* @type: */
- /* T2_Hints */
- /* */
- /* @description: */
- /* This is a handle to an opaque structure used to record glyph hints */
- /* from a Type 2 character glyph character string. */
- /* */
- /* The methods used to operate on this object are defined by the */
- /* @T2_Hints_FuncsRec structure. Recording glyph hints is normally */
- /* achieved through the following scheme: */
- /* */
- /* - Open a new hint recording session by calling the "open" method. */
- /* This will rewind the recorder and prepare it for new input. */
- /* */
- /* - For each hint found in the glyph charstring, call the */
- /* corresponding method ("stems", "hintmask", "counters"). Note */
- /* that these functions do not return an error code. */
- /* */
- /* - Close the recording session by calling the "close" method. It */
- /* will return an error code if the hints were invalid or something */
- /* strange happened (e.g. memory shortage). */
- /* */
- /* The hints accumulated in the object can later be used by the */
- /* Postscript hinter. */
- /* */
+ /*************************************************************************
+ *
+ * @type:
+ * T2_Hints
+ *
+ * @description:
+ * This is a handle to an opaque structure used to record glyph hints
+ * from a Type 2 character glyph character string.
+ *
+ * The methods used to operate on this object are defined by the
+ * @T2_Hints_FuncsRec structure. Recording glyph hints is normally
+ * achieved through the following scheme:
+ *
+ * - Open a new hint recording session by calling the `open' method.
+ * This rewinds the recorder and prepare it for new input.
+ *
+ * - For each hint found in the glyph charstring, call the corresponding
+ * method (`stems', `hintmask', `counters'). Note that these
+ * functions do not return an error code.
+ *
+ * - Close the recording session by calling the `close' method. It
+ * returns an error code if the hints were invalid or something
+ * strange happened (e.g., memory shortage).
+ *
+ * The hints accumulated in the object can later be used by the
+ * Postscript hinter.
+ *
+ */
typedef struct T2_HintsRec_* T2_Hints;
- /*************************************************************************/
- /* */
- /* @type: */
- /* T2_Hints_Funcs */
- /* */
- /* @description: */
- /* A pointer to the @T2_Hints_FuncsRec structure that defines the API */
- /* of a given @T2_Hints object. */
- /* */
+ /*************************************************************************
+ *
+ * @type:
+ * T2_Hints_Funcs
+ *
+ * @description:
+ * A pointer to the @T2_Hints_FuncsRec structure that defines the API of
+ * a given @T2_Hints object.
+ *
+ */
typedef const struct T2_Hints_FuncsRec_* T2_Hints_Funcs;
- /*************************************************************************/
- /* */
- /* @functype: */
- /* T2_Hints_OpenFunc */
- /* */
- /* @description: */
- /* A method of the @T2_Hints class used to prepare it for a new */
- /* Type 2 hints recording session. */
- /* */
- /* @input: */
- /* hints :: A handle to the Type 2 hints recorder. */
- /* */
- /* @note: */
- /* You should always call the @T2_Hints_CloseFunc method in order to */
- /* close an opened recording session. */
- /* */
+ /*************************************************************************
+ *
+ * @functype:
+ * T2_Hints_OpenFunc
+ *
+ * @description:
+ * A method of the @T2_Hints class used to prepare it for a new Type 2
+ * hints recording session.
+ *
+ * @input:
+ * hints ::
+ * A handle to the Type 2 hints recorder.
+ *
+ * @note:
+ * You should always call the @T2_Hints_CloseFunc method in order to
+ * close an opened recording session.
+ *
+ */
typedef void
(*T2_Hints_OpenFunc)( T2_Hints hints );
- /*************************************************************************/
- /* */
- /* @functype: */
- /* T2_Hints_StemsFunc */
- /* */
- /* @description: */
- /* A method of the @T2_Hints class used to set the table of stems in */
- /* either the vertical or horizontal dimension. Equivalent to the */
- /* "hstem", "vstem", "hstemhm", and "vstemhm" Type 2 operators. */
- /* */
- /* @input: */
- /* hints :: A handle to the Type 2 hints recorder. */
- /* */
- /* dimension :: 0 for horizontal stems (hstem), 1 for vertical ones */
- /* (vstem). */
- /* */
- /* count :: The number of stems. */
- /* */
- /* coords :: An array of "count" (position,length) pairs. */
- /* */
- /* @note: */
- /* Use vertical coordinates (y) for horizontal stems (dim=0). Use */
- /* horizontal coordinates (x) for vertical stems (dim=1). */
- /* */
- /* There are "2*count" elements in the "coords" aray. Each even */
- /* element is an absolute position in font units, each odd element is */
- /* a length in font units. */
- /* */
- /* A length can be negative, in which case it must be either -20 or */
- /* -21. It will be interpreted as a "ghost" stem, according to the */
- /* Type 1 specification. */
- /* */
+ /*************************************************************************
+ *
+ * @functype:
+ * T2_Hints_StemsFunc
+ *
+ * @description:
+ * A method of the @T2_Hints class used to set the table of stems in
+ * either the vertical or horizontal dimension. Equivalent to the
+ * `hstem', `vstem', `hstemhm', and `vstemhm' Type 2 operators.
+ *
+ * @input:
+ * hints ::
+ * A handle to the Type 2 hints recorder.
+ *
+ * dimension ::
+ * 0 for horizontal stems (hstem), 1 for vertical ones (vstem).
+ *
+ * count ::
+ * The number of stems.
+ *
+ * coords ::
+ * An array of `count' (position,length) pairs.
+ *
+ * @note:
+ * Use vertical coordinates (y) for horizontal stems (dim=0). Use
+ * horizontal coordinates (x) for vertical stems (dim=1).
+ *
+ * There are `2*count' elements in the `coords' aray. Each even element
+ * is an absolute position in font units, each odd element is a length
+ * in font units.
+ *
+ * A length can be negative, in which case it must be either -20 or
+ * -21. It is interpreted as a `ghost' stem, according to the Type 1
+ * specification.
+ *
+ */
typedef void
(*T2_Hints_StemsFunc)( T2_Hints hints,
FT_UInt dimension,
@@ -432,36 +468,41 @@
FT_Fixed* coordinates );
- /*************************************************************************/
- /* */
- /* @functype: */
- /* T2_Hints_MaskFunc */
- /* */
- /* @description: */
- /* A method of the @T2_Hints class used to set a given hintmask */
- /* (this corresponds to the "hintmask" Type 2 operator). */
- /* */
- /* @input: */
- /* hints :: A handle to the Type 2 hints recorder. */
- /* */
- /* end_point :: The glyph index of the last point to which the */
- /* previously defined/activated hints apply. */
- /* */
- /* bit_count :: The number of bits in the hint mask. */
- /* */
- /* bytes :: An array of bytes modelling the hint mask. */
- /* */
- /* @note: */
- /* If the hintmask starts the charstring (before any glyph point */
- /* definition), the value of "end_point" should be 0. */
- /* */
- /* "bit_count" is the number of meaningful bits in the "bytes" array; */
- /* it must be equal to the total number of hints defined so far */
- /* (i.e. horizontal+verticals). */
- /* */
- /* The "bytes" array can come directly from the Type 2 charstring and */
- /* respects the same format. */
- /* */
+ /*************************************************************************
+ *
+ * @functype:
+ * T2_Hints_MaskFunc
+ *
+ * @description:
+ * A method of the @T2_Hints class used to set a given hintmask (this
+ * corresponds to the `hintmask' Type 2 operator).
+ *
+ * @input:
+ * hints ::
+ * A handle to the Type 2 hints recorder.
+ *
+ * end_point ::
+ * The glyph index of the last point to which the previously defined
+ * or activated hints apply.
+ *
+ * bit_count ::
+ * The number of bits in the hint mask.
+ *
+ * bytes ::
+ * An array of bytes modelling the hint mask.
+ *
+ * @note:
+ * If the hintmask starts the charstring (before any glyph point
+ * definition), the value of `end_point' should be 0.
+ *
+ * `bit_count' is the number of meaningful bits in the `bytes' array; it
+ * must be equal to the total number of hints defined so far (i.e.,
+ * horizontal+verticals).
+ *
+ * The `bytes' array can come directly from the Type 2 charstring and
+ * respects the same format.
+ *
+ */
typedef void
(*T2_Hints_MaskFunc)( T2_Hints hints,
FT_UInt end_point,
@@ -469,97 +510,110 @@
const FT_Byte* bytes );
- /*************************************************************************/
- /* */
- /* @functype: */
- /* T2_Hints_CounterFunc */
- /* */
- /* @description: */
- /* A method of the @T2_Hints class used to set a given counter mask */
- /* (this corresponds to the "hintmask" Type 2 operator). */
- /* */
- /* @input: */
- /* hints :: A handle to the Type 2 hints recorder. */
- /* */
- /* end_point :: A glyph index of the last point to which the */
- /* previously defined/active hints apply. */
- /* */
- /* bit_count :: The number of bits in the hint mask. */
- /* */
- /* bytes :: An array of bytes modelling the hint mask. */
- /* */
- /* @note: */
- /* If the hintmask starts the charstring (before any glyph point */
- /* definition), the value of "end_point" should be 0. */
- /* */
- /* "bit_count" is the number of meaningful bits in the "bytes" array; */
- /* it must be equal to the total number of hints defined so far */
- /* (i.e. horizontal+verticals). */
- /* */
- /* The "bytes" array can come directly from the Type 2 charstring and */
- /* respects the same format. */
- /* */
+ /*************************************************************************
+ *
+ * @functype:
+ * T2_Hints_CounterFunc
+ *
+ * @description:
+ * A method of the @T2_Hints class used to set a given counter mask
+ * (this corresponds to the `hintmask' Type 2 operator).
+ *
+ * @input:
+ * hints ::
+ * A handle to the Type 2 hints recorder.
+ *
+ * end_point ::
+ * A glyph index of the last point to which the previously defined or
+ * active hints apply.
+ *
+ * bit_count ::
+ * The number of bits in the hint mask.
+ *
+ * bytes ::
+ * An array of bytes modelling the hint mask.
+ *
+ * @note:
+ * If the hintmask starts the charstring (before any glyph point
+ * definition), the value of `end_point' should be 0.
+ *
+ * `bit_count' is the number of meaningful bits in the `bytes' array; it
+ * must be equal to the total number of hints defined so far (i.e.,
+ * horizontal+verticals).
+ *
+ * The "bytes" array can come directly from the Type 2 charstring and
+ * respects the same format.
+ *
+ */
typedef void
(*T2_Hints_CounterFunc)( T2_Hints hints,
FT_UInt bit_count,
const FT_Byte* bytes );
- /*************************************************************************/
- /* */
- /* @functype: */
- /* T2_Hints_CloseFunc */
- /* */
- /* @description: */
- /* A method of the @T2_Hints class used to close a hint recording */
- /* session. */
- /* */
- /* @input: */
- /* hints :: A handle to the Type 2 hints recorder. */
- /* */
- /* end_point :: The index of the last point in the input glyph. */
- /* */
- /* @return: */
- /* FreeType error code. 0 means success. */
- /* */
- /* @note: */
- /* The error code will be set to indicate that an error occured */
- /* during the recording session. */
- /* */
+ /*************************************************************************
+ *
+ * @functype:
+ * T2_Hints_CloseFunc
+ *
+ * @description:
+ * A method of the @T2_Hints class used to close a hint recording
+ * session.
+ *
+ * @input:
+ * hints ::
+ * A handle to the Type 2 hints recorder.
+ *
+ * end_point ::
+ * The index of the last point in the input glyph.
+ *
+ * @return:
+ * FreeType error code. 0 means success.
+ *
+ * @note:
+ * The error code is set to indicate that an error occurred during the
+ * recording session.
+ *
+ */
typedef FT_Error
(*T2_Hints_CloseFunc)( T2_Hints hints,
FT_UInt end_point );
- /*************************************************************************/
- /* */
- /* @functype: */
- /* T2_Hints_ApplyFunc */
- /* */
- /* @description: */
- /* A method of the @T2_Hints class used to apply hints to the */
- /* corresponding glyph outline. Must be called after the "close" */
- /* method. */
- /* */
- /* @input: */
- /* hints :: A handle to the Type 2 hints recorder. */
- /* */
- /* outline :: A pointer to the target outline descriptor. */
- /* */
- /* globals :: The hinter globals for this font. */
- /* */
- /* hint_mode :: Hinting information. */
- /* */
- /* @return: */
- /* FreeType error code. 0 means success. */
- /* */
- /* @note: */
- /* On input, all points within the outline are in font coordinates. */
- /* On output, they are in 1/64th of pixels. */
- /* */
- /* The scaling transformation is taken from the "globals" object */
- /* which must correspond to the same font than the glyph. */
- /* */
+ /*************************************************************************
+ *
+ * @functype:
+ * T2_Hints_ApplyFunc
+ *
+ * @description:
+ * A method of the @T2_Hints class used to apply hints to the
+ * corresponding glyph outline. Must be called after the `close'
+ * method.
+ *
+ * @input:
+ * hints ::
+ * A handle to the Type 2 hints recorder.
+ *
+ * outline ::
+ * A pointer to the target outline descriptor.
+ *
+ * globals ::
+ * The hinter globals for this font.
+ *
+ * hint_mode ::
+ * Hinting information.
+ *
+ * @return:
+ * FreeType error code. 0 means success.
+ *
+ * @note:
+ * On input, all points within the outline are in font coordinates. On
+ * output, they are in 1/64th of pixels.
+ *
+ * The scaling transformation is taken from the `globals' object which
+ * must correspond to the same font than the glyph.
+ *
+ */
typedef FT_Error
(*T2_Hints_ApplyFunc)( T2_Hints hints,
FT_Outline* outline,
@@ -567,30 +621,37 @@
FT_Render_Mode hint_mode );
- /*************************************************************************/
- /* */
- /* @struct: */
- /* T2_Hints_FuncsRec */
- /* */
- /* @description: */
- /* The structure used to provide the API to @T2_Hints objects. */
- /* */
- /* @fields: */
- /* hints :: A handle to the T2 hints recorder object. */
- /* */
- /* open :: The function to open a recording session. */
- /* */
- /* close :: The function to close a recording session. */
- /* */
- /* stems :: The function to set the dimension's stems table. */
- /* */
- /* hintmask :: The function to set hint masks. */
- /* */
- /* counter :: The function to set counter masks. */
- /* */
- /* apply :: The function to apply the hints on the corresponding */
- /* glyph outline. */
- /* */
+ /*************************************************************************
+ *
+ * @struct:
+ * T2_Hints_FuncsRec
+ *
+ * @description:
+ * The structure used to provide the API to @T2_Hints objects.
+ *
+ * @fields:
+ * hints ::
+ * A handle to the T2 hints recorder object.
+ *
+ * open ::
+ * The function to open a recording session.
+ *
+ * close ::
+ * The function to close a recording session.
+ *
+ * stems ::
+ * The function to set the dimension's stems table.
+ *
+ * hintmask ::
+ * The function to set hint masks.
+ *
+ * counter ::
+ * The function to set counter masks.
+ *
+ * apply ::
+ * The function to apply the hints on the corresponding glyph outline.
+ *
+ */
typedef struct T2_Hints_FuncsRec_
{
T2_Hints hints;