58 |
} |
} |
59 |
|
|
60 |
|
|
61 |
static void |
FT_LOCAL_DEF( void ) |
62 |
gxv_set_length_by_ushort_offset( FT_UShort* offset, |
gxv_set_length_by_ushort_offset( FT_UShort* offset, |
63 |
FT_UShort** length, |
FT_UShort** length, |
64 |
FT_UShort* buff, |
FT_UShort* buff, |
65 |
FT_UInt nmemb, |
FT_UInt nmemb, |
66 |
FT_UShort limit, |
FT_UShort limit, |
67 |
GXV_Validator valid) |
GXV_Validator valid ) |
68 |
{ |
{ |
69 |
FT_UInt i; |
FT_UInt i; |
70 |
|
|
123 |
} |
} |
124 |
|
|
125 |
|
|
126 |
static void |
FT_LOCAL_DEF( void ) |
127 |
gxv_set_length_by_ulong_offset( FT_ULong* offset, |
gxv_set_length_by_ulong_offset( FT_ULong* offset, |
128 |
FT_ULong** length, |
FT_ULong** length, |
129 |
FT_ULong* buff, |
FT_ULong* buff, |
176 |
/*************************************************************************/ |
/*************************************************************************/ |
177 |
|
|
178 |
|
|
179 |
static void |
FT_LOCAL_DEF( void ) |
180 |
gxv_array_getlimits_byte( FT_Bytes table, |
gxv_array_getlimits_byte( FT_Bytes table, |
181 |
FT_Bytes limit, |
FT_Bytes limit, |
182 |
FT_Byte* min, |
FT_Byte* min, |
205 |
} |
} |
206 |
|
|
207 |
|
|
208 |
static void |
FT_LOCAL_DEF( void ) |
209 |
gxv_array_getlimits_ushort( FT_Bytes table, |
gxv_array_getlimits_ushort( FT_Bytes table, |
210 |
FT_Bytes limit, |
FT_Bytes limit, |
211 |
FT_UShort* min, |
FT_UShort* min, |
430 |
GXV_LookupValueDesc value; |
GXV_LookupValueDesc value; |
431 |
|
|
432 |
|
|
433 |
GXV_NAME_ENTER( " LookupTable format 0" ); |
GXV_NAME_ENTER( "LookupTable format 0" ); |
434 |
|
|
435 |
GXV_LIMIT_CHECK( 2 * valid->face->num_glyphs ); |
GXV_LIMIT_CHECK( 2 * valid->face->num_glyphs ); |
436 |
|
|
507 |
GXV_LookupValueDesc value; |
GXV_LookupValueDesc value; |
508 |
|
|
509 |
|
|
510 |
GXV_NAME_ENTER( " LookupTable format 2" ); |
GXV_NAME_ENTER( "LookupTable format 2" ); |
511 |
|
|
512 |
unitSize = nUnits = 0; |
unitSize = nUnits = 0; |
513 |
gxv_BinSrchHeader_validate( p, limit, &unitSize, &nUnits, valid ); |
gxv_BinSrchHeader_validate( p, limit, &unitSize, &nUnits, valid ); |
581 |
GXV_LookupValueDesc value; |
GXV_LookupValueDesc value; |
582 |
|
|
583 |
|
|
584 |
GXV_NAME_ENTER( " LookupTable format 4" ); |
GXV_NAME_ENTER( "LookupTable format 4" ); |
585 |
|
|
586 |
unitSize = nUnits = 0; |
unitSize = nUnits = 0; |
587 |
gxv_BinSrchHeader_validate( p, limit, &unitSize, &nUnits, valid ); |
gxv_BinSrchHeader_validate( p, limit, &unitSize, &nUnits, valid ); |
678 |
GXV_LookupValueDesc value; |
GXV_LookupValueDesc value; |
679 |
|
|
680 |
|
|
681 |
GXV_NAME_ENTER( " LookupTable format 6" ); |
GXV_NAME_ENTER( "LookupTable format 6" ); |
682 |
|
|
683 |
unitSize = nUnits = 0; |
unitSize = nUnits = 0; |
684 |
gxv_BinSrchHeader_validate( p, limit, &unitSize, &nUnits, valid ); |
gxv_BinSrchHeader_validate( p, limit, &unitSize, &nUnits, valid ); |
731 |
FT_UShort glyphCount; |
FT_UShort glyphCount; |
732 |
|
|
733 |
|
|
734 |
GXV_NAME_ENTER( " LookupTable format 8" ); |
GXV_NAME_ENTER( "LookupTable format 8" ); |
735 |
|
|
736 |
/* firstGlyph + glyphCount */ |
/* firstGlyph + glyphCount */ |
737 |
GXV_LIMIT_CHECK( 2 + 2 ); |
GXV_LIMIT_CHECK( 2 + 2 ); |
778 |
GXV_Validate_Func func; |
GXV_Validate_Func func; |
779 |
|
|
780 |
|
|
781 |
GXV_NAME_ENTER(" LookupTable" ); |
GXV_NAME_ENTER( "LookupTable" ); |
782 |
|
|
783 |
/* lookuptbl_head may be used in fmt4 transit function. */ |
/* lookuptbl_head may be used in fmt4 transit function. */ |
784 |
valid->lookuptbl_head = table; |
valid->lookuptbl_head = table; |
1028 |
{ |
{ |
1029 |
FT_Bytes p = table; |
FT_Bytes p = table; |
1030 |
FT_Bytes limit = table + *length_p; |
FT_Bytes limit = table + *length_p; |
1031 |
FT_Byte class; |
FT_Byte clazz; |
1032 |
FT_Byte entry; |
FT_Byte entry; |
1033 |
|
|
1034 |
|
|
1050 |
while ( p + ( 1 + maxClassID ) <= limit ) |
while ( p + ( 1 + maxClassID ) <= limit ) |
1051 |
{ |
{ |
1052 |
(*maxState_p)++; |
(*maxState_p)++; |
1053 |
for ( class = 0; class <= maxClassID; class++ ) |
for ( clazz = 0; clazz <= maxClassID; clazz++ ) |
1054 |
{ |
{ |
1055 |
entry = FT_NEXT_BYTE( p ); |
entry = FT_NEXT_BYTE( p ); |
1056 |
*maxEntry_p = FT_MAX( *maxEntry_p, entry ); |
*maxEntry_p = FT_MAX( *maxEntry_p, entry ); |
1220 |
FT_UShort stateArray; /* offset to StateArray */ |
FT_UShort stateArray; /* offset to StateArray */ |
1221 |
FT_UShort entryTable; /* offset to EntryTable */ |
FT_UShort entryTable; /* offset to EntryTable */ |
1222 |
|
|
|
#define GXV_STATETABLE_HEADER_SIZE ( 2 + 2 + 2 + 2 ) |
|
|
#define GXV_STATEHEADER_SIZE GXV_STATETABLE_HEADER_SIZE |
|
|
|
|
1223 |
FT_UShort classTable_length; |
FT_UShort classTable_length; |
1224 |
FT_UShort stateArray_length; |
FT_UShort stateArray_length; |
1225 |
FT_UShort entryTable_length; |
FT_UShort entryTable_length; |
1413 |
{ |
{ |
1414 |
FT_Bytes p = table; |
FT_Bytes p = table; |
1415 |
FT_Bytes limit = table + *length_p; |
FT_Bytes limit = table + *length_p; |
1416 |
FT_UShort class; |
FT_UShort clazz; |
1417 |
FT_UShort entry; |
FT_UShort entry; |
1418 |
|
|
1419 |
|
|
1435 |
while ( p + ( ( 1 + maxClassID ) * 2 ) <= limit ) |
while ( p + ( ( 1 + maxClassID ) * 2 ) <= limit ) |
1436 |
{ |
{ |
1437 |
(*maxState_p)++; |
(*maxState_p)++; |
1438 |
for ( class = 0; class <= maxClassID; class++ ) |
for ( clazz = 0; clazz <= maxClassID; clazz++ ) |
1439 |
{ |
{ |
1440 |
entry = FT_NEXT_USHORT( p ); |
entry = FT_NEXT_USHORT( p ); |
1441 |
*maxEntry_p = FT_MAX( *maxEntry_p, entry ); |
*maxEntry_p = FT_MAX( *maxEntry_p, entry ); |
1561 |
FT_ULong stateArray; /* offset to StateArray */ |
FT_ULong stateArray; /* offset to StateArray */ |
1562 |
FT_ULong entryTable; /* offset to EntryTable */ |
FT_ULong entryTable; /* offset to EntryTable */ |
1563 |
|
|
|
#define GXV_XSTATETABLE_HEADER_SIZE ( 4 + 4 + 4 + 4 ) |
|
|
#define GXV_XSTATEHEADER_SIZE GXV_XSTATETABLE_HEADER_SIZE |
|
|
|
|
1564 |
FT_ULong classTable_length; |
FT_ULong classTable_length; |
1565 |
FT_ULong stateArray_length; |
FT_ULong stateArray_length; |
1566 |
FT_ULong entryTable_length; |
FT_ULong entryTable_length; |
1663 |
/*************************************************************************/ |
/*************************************************************************/ |
1664 |
/*************************************************************************/ |
/*************************************************************************/ |
1665 |
|
|
1666 |
FT_LOCAL_DEF( int ) |
static int |
1667 |
gxv_compare_ranges( FT_Bytes table1_start, |
gxv_compare_ranges( FT_Bytes table1_start, |
1668 |
FT_ULong table1_length, |
FT_ULong table1_length, |
1669 |
FT_Bytes table2_start, |
FT_Bytes table2_start, |
1706 |
|
|
1707 |
FT_LOCAL_DEF( void ) |
FT_LOCAL_DEF( void ) |
1708 |
gxv_odtect_validate( GXV_odtect_Range odtect, |
gxv_odtect_validate( GXV_odtect_Range odtect, |
1709 |
GXV_Validator valid ) |
GXV_Validator valid ) |
1710 |
{ |
{ |
1711 |
FT_UInt i, j; |
FT_UInt i, j; |
1712 |
|
|