38 #define FT_COMPONENT trace_gxvmort 47 GXV_TRACE((
"featureType %d is out of registered range, " 48 "setting %d is unchecked\n",
52 else if ( !gxv_feat_registry[f->
featureType].existence )
54 GXV_TRACE((
"featureType %d is within registered area " 55 "but undefined, setting %d is unchecked\n",
65 nSettings_max = gxv_feat_registry[f->
featureType].nSettings;
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++ )
109 gxv_mort_feature_validate( &f, valid );
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 );
248 gxv_mort_subtables_validate( p,
table + chainLength, nSubtables, valid );
270 valid->
root = ftvalid;
274 FT_TRACE3((
"validating `mort' table\n" ));
284 for (
i = 0;
i < nChains;
i++ )
286 GXV_TRACE((
"validating chain %d/%d\n",
i + 1, nChains ));
288 gxv_mort_chain_validate(
p,
limit, valid );
GLenum GLuint GLenum GLsizei length
#define FT_INVALID_FORMAT
#define GXV_NAME_ENTER(name)
#define gxv_feat_registry_length
#define GXV_SET_ERR_IF_PARANOID(err)
GLenum GLuint GLint GLenum face
#define GXV_MORT_FEATURE_OFF
#define FT_TRACE4(varformat)
#define IS_GXV_MORT_FEATURE_OFF(f)
gxv_mort_subtable_type1_validate(FT_Bytes table, FT_Bytes limit, 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_validate(FT_Bytes table, FT_Face face, FT_Validator ftvalid)
gxv_mort_subtable_type0_validate(FT_Bytes table, FT_Bytes limit, 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)
void(* GXV_Validate_Func)(FT_Bytes table, FT_Bytes limit, GXV_Validator valid)
GLenum GLsizei GLenum GLenum const GLvoid * table
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)