30 #define FT_COMPONENT trace_otvgsub 56 OTV_TRACE((
" (format %d)\n", SubstFormat ));
58 switch ( SubstFormat )
78 if ( (
FT_UInt)idx >= valid->glyph_count )
92 OTV_TRACE((
" (GlyphCount = %d)\n", GlyphCount ));
99 for ( ; GlyphCount > 0; GlyphCount-- )
136 OTV_TRACE((
" (format %d)\n", SubstFormat ));
138 switch ( SubstFormat )
141 valid->extra1 = valid->glyph_count;
142 OTV_NEST2( MultipleSubstFormat1, Sequence );
177 OTV_TRACE((
" (format %d)\n", SubstFormat ));
179 switch ( SubstFormat )
182 valid->extra1 = valid->glyph_count;
183 OTV_NEST2( AlternateSubstFormat1, AlternateSet );
203 #define LigatureFunc otv_Ligature_validate 212 FT_UInt LigatureGlyph, CompCount;
219 if ( LigatureGlyph >= valid->glyph_count )
224 OTV_TRACE((
" (CompCount = %d)\n", CompCount ));
226 if ( CompCount == 0 )
252 OTV_TRACE((
" (format %d)\n", SubstFormat ));
254 switch ( SubstFormat )
257 OTV_NEST3( LigatureSubstFormat1, LigatureSet, Ligature );
292 OTV_TRACE((
" (format %d)\n", SubstFormat ));
294 switch ( SubstFormat )
301 valid->extra1 = valid->lookup_count;
302 OTV_NEST3( ContextSubstFormat1, SubRuleSet, SubRule );
311 OTV_NEST3( ContextSubstFormat2, SubClassSet, SubClassRule );
351 OTV_TRACE((
" (format %d)\n", SubstFormat ));
353 switch ( SubstFormat )
360 valid->extra1 = valid->lookup_count;
362 ChainSubRuleSet, ChainSubRule );
372 ChainSubClassSet, ChainSubClassRule );
412 OTV_TRACE((
" (format %d)\n", SubstFormat ));
414 switch ( SubstFormat )
427 if ( ExtensionLookupType == 0 ||
428 ExtensionLookupType == 7 ||
429 ExtensionLookupType > 8 )
432 validate = valid->type_funcs[ExtensionLookupType - 1];
433 validate(
table + ExtensionOffset, valid );
461 FT_UInt BacktrackGlyphCount, LookaheadGlyphCount, GlyphCount;
469 OTV_TRACE((
" (format %d)\n", SubstFormat ));
471 switch ( SubstFormat )
478 OTV_TRACE((
" (BacktrackGlyphCount = %d)\n", BacktrackGlyphCount ));
484 for ( ; BacktrackGlyphCount > 0; BacktrackGlyphCount-- )
489 OTV_TRACE((
" (LookaheadGlyphCount = %d)\n", LookaheadGlyphCount ));
493 for ( ; LookaheadGlyphCount > 0; LookaheadGlyphCount-- )
498 OTV_TRACE((
" (GlyphCount = %d)\n", GlyphCount ));
506 for ( ; GlyphCount > 0; GlyphCount-- )
522 otv_SingleSubst_validate,
523 otv_MultipleSubst_validate,
524 otv_AlternateSubst_validate,
525 otv_LigatureSubst_validate,
526 otv_ContextSubst_validate,
527 otv_ChainContextSubst_validate,
528 otv_ExtensionSubst_validate,
529 otv_ReverseChainSingleSubst_validate
553 FT_UInt ScriptList, FeatureList, LookupList;
556 valid->root = ftvalid;
558 FT_TRACE3((
"validating GSUB table\n" ));
570 valid->type_count = 8;
572 valid->glyph_count = glyph_count;
otv_ScriptList_validate(FT_Bytes table, FT_Bytes features, OTV_Validator valid)
#define FT_INVALID_FORMAT
otv_GSUB_validate(FT_Bytes table, FT_UInt glyph_count, FT_Validator ftvalid)
void(* OTV_Validate_Func)(FT_Bytes table, OTV_Validator valid)
otv_Coverage_get_last(FT_Bytes table)
#define FT_TRACE4(varformat)
#define OTV_NAME_ENTER(name)
typedefFT_BEGIN_HEADER struct FT_ValidatorRec_ volatile * FT_Validator
#define OTV_LIMIT_CHECK(_count)
#define FT_NEXT_USHORT(buffer)
#define FT_TRACE3(varformat)
otv_Coverage_validate(FT_Bytes table, OTV_Validator valid, FT_Int expected_count)
typedefFT_BEGIN_HEADER struct OTV_ValidatorRec_ * OTV_Validator
otv_Coverage_get_first(FT_Bytes table)
#define FT_NEXT_ULONG(buffer)
#define FT_INVALID_GLYPH_ID
#define OTV_NEST3(x, y, z)
#define FT_NEXT_SHORT(buffer)
GLenum GLsizei GLenum GLenum const GLvoid * table
otv_FeatureList_validate(FT_Bytes table, FT_Bytes lookups, OTV_Validator valid)
otv_Coverage_get_count(FT_Bytes table)
otv_LookupList_validate(FT_Bytes table, OTV_Validator valid)