38 #define FT_COMPONENT trace_gxvmort
47 GXV_TRACE((
"featureType %d is out of registered range, "
48 "setting %d is unchecked\n",
54 GXV_TRACE((
"featureType %d is within registered area "
55 "but undefined, setting %d is unchecked\n",
67 nSettings_max = (
FT_Byte)( 2 * nSettings_max );
74 GXV_TRACE((
"out of defined range %d", nSettings_max ));
101 for ( i = 0; i < nFeatureFlags; i++ )
115 valid->subtable_length = p -
table;
126 if ( coverage & 0x8000U )
127 GXV_TRACE((
" this subtable is for vertical text only\n" ));
129 GXV_TRACE((
" this subtable is for horizontal text only\n" ));
131 if ( coverage & 0x4000 )
132 GXV_TRACE((
" this subtable is applied to glyph array "
133 "in descending order\n" ));
135 GXV_TRACE((
" this subtable is applied to glyph array "
136 "in ascending order\n" ));
138 if ( coverage & 0x2000 )
139 GXV_TRACE((
" this subtable is forcibly applied to "
140 "vertical/horizontal text\n" ));
142 if ( coverage & 0x1FF8 )
143 GXV_TRACE((
" coverage has non-zero bits in reserved area\n" ));
172 for ( i = 0; i < nSubtables; i++ )
176 #ifdef GXV_LOAD_UNUSED_VARS
186 #ifdef GXV_LOAD_UNUSED_VARS
192 GXV_TRACE((
"validating chain subtable %d/%d (%d bytes)\n",
193 i + 1, nSubtables, length ));
194 type = coverage & 0x0007;
195 rest = length - ( 2 + 2 + 4 );
203 func = fmt_funcs_table[
type];
205 GXV_TRACE((
"morx type %d is reserved\n", type ));
207 func( p, p + rest, valid );
225 #ifdef GXV_LOAD_UNUSED_VARS
236 #ifdef GXV_LOAD_UNUSED_VARS
246 nFeatureFlags, valid );
270 valid->
root = ftvalid;
272 limit = valid->
root->limit;
274 FT_TRACE3((
"validating `mort' table\n" ));
281 if (version != 0x00010000UL)
284 for ( i = 0; i < nChains; i++ )
286 GXV_TRACE((
"validating chain %d/%d\n", i + 1, nChains ));
GLenum GLsizei GLenum GLenum const GLvoid * table
GLint GLenum GLsizei GLsizei GLsizei GLint GLenum GLenum type
static void gxv_mort_chain_validate(FT_Bytes table, FT_Bytes limit, GXV_Validator valid)
#define FT_INVALID_FORMAT
#define GXV_NAME_ENTER(name)
#define gxv_feat_registry_length
#define GXV_SET_ERR_IF_PARANOID(err)
#define GXV_MORT_FEATURE_OFF
#define FT_TRACE4(varformat)
#define IS_GXV_MORT_FEATURE_OFF(f)
static GX_Feature_RegistryRec gxv_feat_registry[]
gxv_mort_subtable_type1_validate(FT_Bytes table, FT_Bytes limit, GXV_Validator valid)
static void gxv_mort_subtables_validate(FT_Bytes table, FT_Bytes limit, FT_UShort nSubtables, GXV_Validator valid)
gxv_mort_featurearray_validate(FT_Bytes table, FT_Bytes limit, FT_ULong nFeatureFlags, GXV_Validator valid)
typedefFT_BEGIN_HEADER struct FT_ValidatorRec_ volatile * FT_Validator
#define GXV_32BIT_ALIGNMENT_VALIDATE(a)
gxv_mort_subtable_type0_validate(FT_Bytes table, FT_Bytes limit, GXV_Validator valid)
void(* GXV_Validate_Func)(FT_Bytes table, FT_Bytes limit, GXV_Validator valid)
gxv_mort_validate(FT_Bytes table, FT_Face face, FT_Validator valid)
static void gxv_mort_feature_validate(GXV_mort_feature f, GXV_Validator valid)
gxv_mort_subtable_type5_validate(FT_Bytes table, FT_Bytes limit, GXV_Validator valid)
#define FT_NEXT_USHORT(buffer)
#define FT_TRACE3(varformat)
gxv_mort_subtable_type2_validate(FT_Bytes table, FT_Bytes limit, GXV_Validator valid)
#define FT_NEXT_ULONG(buffer)
gxv_mort_subtable_type4_validate(FT_Bytes table, FT_Bytes limit, GXV_Validator valid)
#define GXV_LIMIT_CHECK(_count)
gxv_mort_coverage_validate(FT_UShort coverage, GXV_Validator valid)