39#define FT_COMPONENT trace_gxvmorx
55#define GXV_MORX_SUBTABLE_TYPE2_HEADER_SIZE \
56 ( GXV_XSTATETABLE_HEADER_SIZE + 4 + 4 + 4 )
75 GXV_TRACE((
"offset to ligActionTable=0x%08x\n",
77 GXV_TRACE((
"offset to componentTable=0x%08x\n",
79 GXV_TRACE((
"offset to ligatureTable=0x%08x\n",
110 l[0] = classTable_length_p;
111 l[1] = stateArray_length_p;
112 l[2] = entryTable_length_p;
119 GXV_TRACE((
"classTable: offset=0x%08x length=0x%08x\n",
120 classTable, *classTable_length_p ));
121 GXV_TRACE((
"stateArray: offset=0x%08x length=0x%08x\n",
122 stateArray, *stateArray_length_p ));
123 GXV_TRACE((
"entryTable: offset=0x%08x length=0x%08x\n",
124 entryTable, *entryTable_length_p ));
125 GXV_TRACE((
"ligActionTable: offset=0x%08x length=0x%08x\n",
128 GXV_TRACE((
"componentTable: offset=0x%08x length=0x%08x\n",
131 GXV_TRACE((
"ligatureTable: offset=0x%08x length=0x%08x\n",
139#define GXV_MORX_LIGACTION_ENTRY_SIZE 4
160 GXV_TRACE((
"p < lat_base (%d byte rewind)\n", lat_base -
p ));
163 else if ( lat_limit <
p )
165 GXV_TRACE((
"lat_limit < p (%d byte overrun)\n",
p - lat_limit ));
172#ifdef GXV_LOAD_UNUSED_VARS
181#ifdef GXV_LOAD_UNUSED_VARS
183 store = (
FT_UShort)( ( lig_action >> 30 ) & 1 );
186 offset = lig_action & 0x3FFFFFFFUL;
190 if ( (
offset & 0x3FFF0000UL ) == 0x3FFF0000UL )
197 GXV_TRACE((
"ligature action table includes"
198 " too negative offset moving all GID"
199 " below defined range: 0x%04x\n",
203 else if ( (
offset & 0x3FFF0000UL ) == 0x00000000UL )
208 GXV_TRACE((
"ligature action table includes"
209 " too large offset moving all GID"
210 " over defined range: 0x%04x\n",
215 GXV_TRACE((
"ligature action table includes"
216 " invalid offset to add to 16-bit GID:"
232#ifdef GXV_LOAD_UNUSED_VARS
244#ifdef GXV_LOAD_UNUSED_VARS
251 ligActionIndex = glyphOffset_p->
u;
254 GXV_TRACE((
" reserved 14bit is non-zero\n" ));
256 if ( 0 < ligActionIndex )
258 table, ligActionIndex, gxvalid );
274 GXV_NAME_ENTER(
"morx chain subtable type2 - substitutionTable" );
286 if ( lig_gid < gxvalid->
face->num_glyphs )
305 GXV_NAME_ENTER(
"morx chain subtable type2 (Ligature Substitution)" );
309 gxvalid->xstatetable.optdata =
311 gxvalid->xstatetable.optdata_load_func =
313 gxvalid->xstatetable.subtable_setup_func =
315 gxvalid->xstatetable.entry_glyphoffset_fmt =
317 gxvalid->xstatetable.entry_validate_func =
323 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
GLenum GLuint GLint GLenum face
gxv_set_length_by_ulong_offset(FT_ULong *offset, FT_ULong **length, FT_ULong *buff, FT_UInt nmemb, FT_ULong limit, GXV_Validator gxvalid)
gxv_XStateTable_validate(FT_Bytes table, FT_Bytes limit, GXV_Validator gxvalid)
#define GXV_NAME_ENTER(name)
#define GXV_SET_ERR_IF_PARANOID(err)
#define GXV_LIMIT_CHECK(_count)
static void gxv_morx_subtable_type2_opttable_load(FT_Bytes table, FT_Bytes limit, GXV_Validator gxvalid)
gxv_morx_subtable_type2_validate(FT_Bytes table, FT_Bytes limit, GXV_Validator gxvalid)
static void gxv_morx_subtable_type2_ligActionIndex_validate(FT_Bytes table, FT_UShort ligActionIndex, GXV_Validator gxvalid)
static void gxv_morx_subtable_type2_ligatureTable_validate(FT_Bytes table, GXV_Validator gxvalid)
struct GXV_morx_subtable_type2_StateOptRec_ * GXV_morx_subtable_type2_StateOptRecData
#define GXV_MORX_SUBTABLE_TYPE2_HEADER_SIZE
#define GXV_MORX_LIGACTION_ENTRY_SIZE
static void gxv_morx_subtable_type2_subtable_setup(FT_ULong table_size, FT_ULong classTable, FT_ULong stateArray, FT_ULong entryTable, FT_ULong *classTable_length_p, FT_ULong *stateArray_length_p, FT_ULong *entryTable_length_p, GXV_Validator gxvalid)
static void gxv_morx_subtable_type2_entry_validate(FT_UShort state, FT_UShort flags, GXV_StateTable_GlyphOffsetCPtr glyphOffset_p, FT_Bytes table, FT_Bytes limit, GXV_Validator gxvalid)
struct GXV_morx_subtable_type2_StateOptRec_ GXV_morx_subtable_type2_StateOptRec
GXV_XStateTable_ValidatorRec xstatetable
FT_ULong ligatureTable_length
FT_ULong ligActionTable_length
FT_ULong componentTable_length