77 |
coverage = FT_NEXT_ULONG( p ); |
coverage = FT_NEXT_ULONG( p ); |
78 |
subFeatureFlags = FT_NEXT_ULONG( p ); |
subFeatureFlags = FT_NEXT_ULONG( p ); |
79 |
|
|
80 |
GXV_TRACE(( "validate chain subtable %d/%d (%d bytes)\n", |
GXV_TRACE(( "validating chain subtable %d/%d (%d bytes)\n", |
81 |
i + 1, nSubtables, length )); |
i + 1, nSubtables, length )); |
82 |
|
|
83 |
type = coverage & 0x0007; |
type = coverage & 0x0007; |
152 |
valid->root = ftvalid; |
valid->root = ftvalid; |
153 |
valid->face = face; |
valid->face = face; |
154 |
|
|
155 |
FT_TRACE3(( "validation morx table\n" )); |
FT_TRACE3(( "validating `morx' table\n" )); |
156 |
GXV_INIT; |
GXV_INIT; |
157 |
|
|
158 |
GXV_LIMIT_CHECK( 4 + 4 ); |
GXV_LIMIT_CHECK( 4 + 4 ); |
164 |
|
|
165 |
for ( i = 0; i < nChains; i++ ) |
for ( i = 0; i < nChains; i++ ) |
166 |
{ |
{ |
167 |
GXV_TRACE(( "validate chain %d/%d\n", i + 1, nChains )); |
GXV_TRACE(( "validating chain %d/%d\n", i + 1, nChains )); |
168 |
GXV_32BIT_ALIGNMENT_VALIDATE( p - table ); |
GXV_32BIT_ALIGNMENT_VALIDATE( p - table ); |
169 |
gxv_morx_chain_validate( p, limit, valid ); |
gxv_morx_chain_validate( p, limit, valid ); |
170 |
p += valid->subtable_length; |
p += valid->subtable_length; |