/**************************************************************************** * * gxvmorx5.c * * TrueTypeGX/AAT morx table validation * body for type5 (Contextual Glyph Insertion) subtable. * * Copyright (C) 2005-2023 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, * modified, and distributed under the terms of the FreeType project * license, LICENSE.TXT. By continuing to use, modify, or distribute * this file you indicate that you have read the license and * understand and accept it fully. * */ /**************************************************************************** * * gxvalid is derived from both gxlayout module and otvalid module. * Development of gxlayout is supported by the Information-technology * Promotion Agency(IPA), Japan. * */ #include "gxvmorx.h" /************************************************************************** * * The macro FT_COMPONENT is used in trace mode. It is an implicit * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log * messages during execution. */ #undef FT_COMPONENT #define FT_COMPONENT … /* * `morx' subtable type5 (Contextual Glyph Insertion) * has format of a StateTable with insertion-glyph-list * without name. However, the 32bit offset from the head * of subtable to the i-g-l is given after `entryTable', * without variable name specification (the existence of * this offset to the table is different from mort type5). */ GXV_morx_subtable_type5_StateOptRecData; #define GXV_MORX_SUBTABLE_TYPE5_HEADER_SIZE … static void gxv_morx_subtable_type5_insertionGlyphList_load( FT_Bytes table, FT_Bytes limit, GXV_Validator gxvalid ) { … } static void gxv_morx_subtable_type5_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_type5_InsertList_validate( FT_UShort table_index, FT_UShort count, FT_Bytes table, FT_Bytes limit, GXV_Validator gxvalid ) { … } static void gxv_morx_subtable_type5_entry_validate( FT_UShort state, FT_UShort flags, GXV_StateTable_GlyphOffsetCPtr glyphOffset_p, FT_Bytes table, FT_Bytes limit, GXV_Validator gxvalid ) { … } FT_LOCAL_DEF( void ) gxv_morx_subtable_type5_validate( FT_Bytes table, FT_Bytes limit, GXV_Validator gxvalid ) { … } /* END */