59 |
|
|
60 |
typedef enum GXV_kern_Dialect_ |
typedef enum GXV_kern_Dialect_ |
61 |
{ |
{ |
62 |
KERN_DIALECT_MS = FT_VALIDATE_MS, |
KERN_DIALECT_UNKNOWN = 0, |
63 |
KERN_DIALECT_APPLE = FT_VALIDATE_APPLE, |
KERN_DIALECT_MS = FT_VALIDATE_MS, |
64 |
KERN_DIALECT_ANY = FT_VALIDATE_CKERN |
KERN_DIALECT_APPLE = FT_VALIDATE_APPLE, |
65 |
|
KERN_DIALECT_ANY = FT_VALIDATE_CKERN |
66 |
|
|
67 |
} GXV_kern_Dialect; |
} GXV_kern_Dialect; |
68 |
|
|
169 |
GXV_Validator valid ) |
GXV_Validator valid ) |
170 |
{ |
{ |
171 |
FT_Bytes p = table; |
FT_Bytes p = table; |
172 |
GXV_kern_fmt1_StateOptRecData optdata = valid->statetable.optdata; |
GXV_kern_fmt1_StateOptRecData optdata = |
173 |
|
(GXV_kern_fmt1_StateOptRecData)valid->statetable.optdata; |
174 |
|
|
175 |
|
|
176 |
GXV_LIMIT_CHECK( 2 ); |
GXV_LIMIT_CHECK( 2 ); |
195 |
FT_UShort *l[4]; |
FT_UShort *l[4]; |
196 |
FT_UShort buff[5]; |
FT_UShort buff[5]; |
197 |
|
|
198 |
GXV_kern_fmt1_StateOptRecData optdata = valid->statetable.optdata; |
GXV_kern_fmt1_StateOptRecData optdata = |
199 |
|
(GXV_kern_fmt1_StateOptRecData)valid->statetable.optdata; |
200 |
|
|
201 |
|
|
202 |
o[0] = classTable; |
o[0] = classTable; |
239 |
valueOffset = flags & 0x3FFF; |
valueOffset = flags & 0x3FFF; |
240 |
|
|
241 |
{ |
{ |
242 |
GXV_kern_fmt1_StateOptRecData vt_rec = valid->statetable.optdata; |
GXV_kern_fmt1_StateOptRecData vt_rec = |
243 |
|
(GXV_kern_fmt1_StateOptRecData)valid->statetable.optdata; |
244 |
FT_Bytes p; |
FT_Bytes p; |
245 |
|
|
246 |
|
|
616 |
FT_UShort* format, |
FT_UShort* format, |
617 |
GXV_Validator valid ) |
GXV_Validator valid ) |
618 |
{ |
{ |
619 |
FT_Int result = 0; |
GXV_kern_Dialect result = KERN_DIALECT_UNKNOWN; |
620 |
|
|
621 |
|
|
622 |
GXV_NAME_ENTER( "validate coverage" ); |
GXV_NAME_ENTER( "validating coverage" ); |
623 |
|
|
624 |
GXV_TRACE(( "interprete coverage 0x%04x by Apple style\n", coverage )); |
GXV_TRACE(( "interprete coverage 0x%04x by Apple style\n", coverage )); |
625 |
|
|
771 |
KERN_DIALECT( valid ) = dialect_request; |
KERN_DIALECT( valid ) = dialect_request; |
772 |
|
|
773 |
GXV_LIMIT_CHECK( 2 ); |
GXV_LIMIT_CHECK( 2 ); |
774 |
GXV_KERN_DATA( version ) = FT_NEXT_USHORT( p ); |
GXV_KERN_DATA( version ) = (GXV_kern_Version)FT_NEXT_USHORT( p ); |
775 |
GXV_TRACE(( "version 0x%04x (higher 16bit)\n", |
GXV_TRACE(( "version 0x%04x (higher 16bit)\n", |
776 |
GXV_KERN_DATA( version ) )); |
GXV_KERN_DATA( version ) )); |
777 |
|
|
796 |
|
|
797 |
for ( i = 0; i < nTables; i++ ) |
for ( i = 0; i < nTables; i++ ) |
798 |
{ |
{ |
799 |
GXV_TRACE(( "validate subtable %d/%d\n", i, nTables )); |
GXV_TRACE(( "validating subtable %d/%d\n", i, nTables )); |
800 |
/* p should be 32bit-aligned? */ |
/* p should be 32bit-aligned? */ |
801 |
gxv_kern_subtable_validate( p, 0, valid ); |
gxv_kern_subtable_validate( p, 0, valid ); |
802 |
p += valid->subtable_length; |
p += valid->subtable_length; |
824 |
GXV_kern_Dialect dialect_request; |
GXV_kern_Dialect dialect_request; |
825 |
|
|
826 |
|
|
827 |
dialect_request = dialect_flags; |
dialect_request = (GXV_kern_Dialect)dialect_flags; |
828 |
gxv_kern_validate_generic( table, face, 1, dialect_request, ftvalid ); |
gxv_kern_validate_generic( table, face, 1, dialect_request, ftvalid ); |
829 |
} |
} |
830 |
|
|