39#define FT_COMPONENT trace_gxvmort
54#define GXV_MORT_SUBTABLE_TYPE2_HEADER_SIZE \
55 ( GXV_STATETABLE_HEADER_SIZE + 2 + 2 + 2 )
73 GXV_TRACE((
"offset to ligActionTable=0x%04x\n",
75 GXV_TRACE((
"offset to componentTable=0x%04x\n",
77 GXV_TRACE((
"offset to ligatureTable=0x%04x\n",
108 l[0] = classTable_length_p;
109 l[1] = stateArray_length_p;
110 l[2] = entryTable_length_p;
117 GXV_TRACE((
"classTable: offset=0x%04x length=0x%04x\n",
118 classTable, *classTable_length_p ));
119 GXV_TRACE((
"stateArray: offset=0x%04x length=0x%04x\n",
120 stateArray, *stateArray_length_p ));
121 GXV_TRACE((
"entryTable: offset=0x%04x length=0x%04x\n",
122 entryTable, *entryTable_length_p ));
123 GXV_TRACE((
"ligActionTable: offset=0x%04x length=0x%04x\n",
126 GXV_TRACE((
"componentTable: offset=0x%04x length=0x%04x\n",
129 GXV_TRACE((
"ligatureTable: offset=0x%04x length=0x%04x\n",
155 GXV_TRACE((
"too short offset 0x%04x: p < lat_base (%d byte rewind)\n",
156 ligActionOffset, lat_base -
p ));
161 else if ( lat_limit <
p )
163 GXV_TRACE((
"too large offset 0x%04x: lat_limit < p (%d byte overrun)\n",
164 ligActionOffset,
p - lat_limit ));
173#ifdef GXV_LOAD_UNUSED_VARS
181#ifdef GXV_LOAD_UNUSED_VARS
183 store = (
FT_UShort)( ( lig_action >> 30 ) & 1 );
187 offset = lig_action & 0x3FFFFFFFUL;
191 " 2 x offset < ligatureTable (%d byte rewind)\n",
199 " 2 x offset > ligatureTable + ligatureTable_length"
200 " (%d byte overrun)\n",
220#ifdef GXV_LOAD_UNUSED_VARS
231#ifdef GXV_LOAD_UNUSED_VARS
256 GXV_NAME_ENTER(
"mort chain subtable type2 - substitutionTable" );
286 GXV_NAME_ENTER(
"mort chain subtable type2 (Ligature Substitution)" );
290 gxvalid->statetable.optdata =
292 gxvalid->statetable.optdata_load_func =
294 gxvalid->statetable.subtable_setup_func =
296 gxvalid->statetable.entry_glyphoffset_fmt =
298 gxvalid->statetable.entry_validate_func =
303 p += gxvalid->subtable_length;
static unsigned char buff[32768]
#define FT_NEXT_USHORT(buffer)
#define FT_NEXT_ULONG(buffer)
#define FT_INVALID_OFFSET
#define FT_INVALID_GLYPH_ID
gxv_set_length_by_ushort_offset(FT_UShort *offset, FT_UShort **length, FT_UShort *buff, FT_UInt nmemb, FT_UShort limit, GXV_Validator gxvalid)
gxv_StateTable_validate(FT_Bytes table, FT_Bytes limit, GXV_Validator gxvalid)
#define GXV_32BIT_ALIGNMENT_VALIDATE(a)
#define GXV_NAME_ENTER(name)
#define GXV_SET_ERR_IF_PARANOID(err)
#define GXV_LIMIT_CHECK(_count)
static void gxv_mort_subtable_type2_opttable_load(FT_Bytes table, FT_Bytes limit, GXV_Validator gxvalid)
gxv_mort_subtable_type2_validate(FT_Bytes table, FT_Bytes limit, GXV_Validator gxvalid)
struct GXV_mort_subtable_type2_StateOptRec_ GXV_mort_subtable_type2_StateOptRec
struct GXV_mort_subtable_type2_StateOptRec_ * GXV_mort_subtable_type2_StateOptRecData
#define GXV_MORT_SUBTABLE_TYPE2_HEADER_SIZE
static void gxv_mort_subtable_type2_subtable_setup(FT_UShort table_size, FT_UShort classTable, FT_UShort stateArray, FT_UShort entryTable, FT_UShort *classTable_length_p, FT_UShort *stateArray_length_p, FT_UShort *entryTable_length_p, GXV_Validator gxvalid)
static void gxv_mort_subtable_type2_entry_validate(FT_Byte state, FT_UShort flags, GXV_StateTable_GlyphOffsetCPtr glyphOffset_p, FT_Bytes table, FT_Bytes limit, GXV_Validator gxvalid)
static void gxv_mort_subtable_type2_ligActionOffset_validate(FT_Bytes table, FT_UShort ligActionOffset, GXV_Validator gxvalid)
static void gxv_mort_subtable_type2_ligatureTable_validate(FT_Bytes table, GXV_Validator gxvalid)
GXV_StateTable_ValidatorRec statetable
FT_UShort ligatureTable_length
FT_UShort ligActionTable_length
FT_UShort componentTable_length