[692] | 1 | /***************************************************************************/
|
---|
| 2 | /* */
|
---|
| 3 | /* ftotval.h */
|
---|
| 4 | /* */
|
---|
| 5 | /* FreeType API for validating OpenType tables (specification). */
|
---|
| 6 | /* */
|
---|
| 7 | /* Copyright 2004, 2005 by */
|
---|
| 8 | /* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
---|
| 9 | /* */
|
---|
| 10 | /* This file is part of the FreeType project, and may only be used, */
|
---|
| 11 | /* modified, and distributed under the terms of the FreeType project */
|
---|
| 12 | /* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
---|
| 13 | /* this file you indicate that you have read the license and */
|
---|
| 14 | /* understand and accept it fully. */
|
---|
| 15 | /* */
|
---|
| 16 | /***************************************************************************/
|
---|
| 17 |
|
---|
| 18 |
|
---|
| 19 | /***************************************************************************/
|
---|
| 20 | /* */
|
---|
| 21 | /* */
|
---|
| 22 | /* Warning: This module might be moved to a different library in the */
|
---|
| 23 | /* future to avoid a tight dependency between FreeType and the */
|
---|
| 24 | /* OpenType specification. */
|
---|
| 25 | /* */
|
---|
| 26 | /* */
|
---|
| 27 | /***************************************************************************/
|
---|
| 28 |
|
---|
| 29 |
|
---|
| 30 | #ifndef __FTOTVAL_H__
|
---|
| 31 | #define __FTOTVAL_H__
|
---|
| 32 |
|
---|
| 33 | #include <ft2build.h>
|
---|
| 34 | #include FT_FREETYPE_H
|
---|
| 35 |
|
---|
| 36 | #ifdef FREETYPE_H
|
---|
| 37 | #error "freetype.h of FreeType 1 has been loaded!"
|
---|
| 38 | #error "Please fix the directory search order for header files"
|
---|
| 39 | #error "so that freetype.h of FreeType 2 is found first."
|
---|
| 40 | #endif
|
---|
| 41 |
|
---|
| 42 |
|
---|
| 43 | FT_BEGIN_HEADER
|
---|
| 44 |
|
---|
| 45 |
|
---|
| 46 | /*************************************************************************/
|
---|
| 47 | /* */
|
---|
| 48 | /* <Section> */
|
---|
| 49 | /* ot_validation */
|
---|
| 50 | /* */
|
---|
| 51 | /* <Title> */
|
---|
| 52 | /* OpenType Validation */
|
---|
| 53 | /* */
|
---|
| 54 | /* <Abstract> */
|
---|
| 55 | /* An API to validate OpenType tables. */
|
---|
| 56 | /* */
|
---|
| 57 | /* <Description> */
|
---|
| 58 | /* This section contains the declaration of functions to validate */
|
---|
| 59 | /* some OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF). */
|
---|
| 60 | /* */
|
---|
| 61 | /*************************************************************************/
|
---|
| 62 |
|
---|
| 63 |
|
---|
| 64 | /**********************************************************************
|
---|
| 65 | *
|
---|
| 66 | * @enum:
|
---|
| 67 | * FT_VALIDATE_OTXXX
|
---|
| 68 | *
|
---|
| 69 | * @description:
|
---|
| 70 | * A list of bit-field constants used with @FT_OpenType_Validate to
|
---|
| 71 | * indicate which OpenType tables should be validated.
|
---|
| 72 | *
|
---|
| 73 | * @values:
|
---|
| 74 | * FT_VALIDATE_BASE ::
|
---|
| 75 | * Validate BASE table.
|
---|
| 76 | *
|
---|
| 77 | * FT_VALIDATE_GDEF ::
|
---|
| 78 | * Validate GDEF table.
|
---|
| 79 | *
|
---|
| 80 | * FT_VALIDATE_GPOS ::
|
---|
| 81 | * Validate GPOS table.
|
---|
| 82 | *
|
---|
| 83 | * FT_VALIDATE_GSUB ::
|
---|
| 84 | * Validate GSUB table.
|
---|
| 85 | *
|
---|
| 86 | * FT_VALIDATE_JSTF ::
|
---|
| 87 | * Validate JSTF table.
|
---|
| 88 | *
|
---|
| 89 | * FT_VALIDATE_OT ::
|
---|
| 90 | * Validate all OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF).
|
---|
| 91 | *
|
---|
| 92 | */
|
---|
| 93 | #define FT_VALIDATE_BASE 0x0100
|
---|
| 94 | #define FT_VALIDATE_GDEF 0x0200
|
---|
| 95 | #define FT_VALIDATE_GPOS 0x0400
|
---|
| 96 | #define FT_VALIDATE_GSUB 0x0800
|
---|
| 97 | #define FT_VALIDATE_JSTF 0x1000
|
---|
| 98 |
|
---|
| 99 | #define FT_VALIDATE_OT FT_VALIDATE_BASE | \
|
---|
| 100 | FT_VALIDATE_GDEF | \
|
---|
| 101 | FT_VALIDATE_GPOS | \
|
---|
| 102 | FT_VALIDATE_GSUB | \
|
---|
| 103 | FT_VALIDATE_JSTF
|
---|
| 104 |
|
---|
| 105 | /* */
|
---|
| 106 |
|
---|
| 107 | /**********************************************************************
|
---|
| 108 | *
|
---|
| 109 | * @function:
|
---|
| 110 | * FT_OpenType_Validate
|
---|
| 111 | *
|
---|
| 112 | * @description:
|
---|
| 113 | * Validate various OpenType tables to assure that all offsets and
|
---|
| 114 | * indices are valid. The idea is that a higher-level library which
|
---|
| 115 | * actually does the text layout can access those tables without
|
---|
| 116 | * error checking (which can be quite time consuming).
|
---|
| 117 | *
|
---|
| 118 | * @input:
|
---|
| 119 | * face ::
|
---|
| 120 | * A handle to the input face.
|
---|
| 121 | *
|
---|
| 122 | * validation_flags ::
|
---|
| 123 | * A bit field which specifies the tables to be validated. See
|
---|
| 124 | * @FT_VALIDATE_OTXXX for possible values.
|
---|
| 125 | *
|
---|
| 126 | * @output:
|
---|
| 127 | * BASE_table ::
|
---|
| 128 | * A pointer to the BASE table.
|
---|
| 129 | *
|
---|
| 130 | * GDEF_table ::
|
---|
| 131 | * A pointer to the GDEF table.
|
---|
| 132 | *
|
---|
| 133 | * GPOS_table ::
|
---|
| 134 | * A pointer to the GPOS table.
|
---|
| 135 | *
|
---|
| 136 | * GSUB_table ::
|
---|
| 137 | * A pointer to the GSUB table.
|
---|
| 138 | *
|
---|
| 139 | * JSTF_table ::
|
---|
| 140 | * A pointer to the JSTF table.
|
---|
| 141 | *
|
---|
| 142 | * @return:
|
---|
| 143 | * FreeType error code. 0 means success.
|
---|
| 144 | *
|
---|
| 145 | * @note:
|
---|
| 146 | * This function only works with OpenType fonts, returning an error
|
---|
| 147 | * otherwise.
|
---|
| 148 | *
|
---|
| 149 | * After use, the application should deallocate the five tables with
|
---|
| 150 | * `free'. A NULL value indicates that the table either doesn't exist
|
---|
| 151 | * in the font, or the application hasn't asked for validation.
|
---|
| 152 | */
|
---|
| 153 | FT_EXPORT( FT_Error )
|
---|
| 154 | FT_OpenType_Validate( FT_Face face,
|
---|
| 155 | FT_UInt validation_flags,
|
---|
| 156 | FT_Bytes *BASE_table,
|
---|
| 157 | FT_Bytes *GDEF_table,
|
---|
| 158 | FT_Bytes *GPOS_table,
|
---|
| 159 | FT_Bytes *GSUB_table,
|
---|
| 160 | FT_Bytes *JSTF_table );
|
---|
| 161 |
|
---|
| 162 | /* */
|
---|
| 163 |
|
---|
| 164 |
|
---|
| 165 | FT_END_HEADER
|
---|
| 166 |
|
---|
| 167 | #endif /* __FTOTVAL_H__ */
|
---|
| 168 |
|
---|
| 169 |
|
---|
| 170 | /* END */
|
---|