diff options
Diffstat (limited to 'src/gxvalid/gxvmort0.c')
-rw-r--r-- | src/gxvalid/gxvmort0.c | 53 |
1 files changed, 33 insertions, 20 deletions
diff --git a/src/gxvalid/gxvmort0.c b/src/gxvalid/gxvmort0.c index 4764ed00d..ddc37d29c 100644 --- a/src/gxvalid/gxvmort0.c +++ b/src/gxvalid/gxvmort0.c @@ -17,11 +17,14 @@ /***************************************************************************/ /***************************************************************************/ +/* */ /* gxvalid is derived from both gxlayout module and otvalid module. */ -/* Development of gxlayout was support of Information-technology Promotion */ -/* Agency(IPA), Japan. */ +/* Development of gxlayout is supported by the Information-technology */ +/* Promotion Agency(IPA), Japan. */ +/* */ /***************************************************************************/ + #include "gxvmort.h" @@ -35,7 +38,7 @@ #define FT_COMPONENT trace_gxvmort - static char* GXV_Mort_IndicScript_Msg [] = + static const char* GXV_Mort_IndicScript_Msg[] = { "no change", "Ax => xA", @@ -58,21 +61,26 @@ static void - gxv_mort_subtable_type0_entry_validate( FT_Byte state, - FT_UShort flags, - GXV_StateTable_GlyphOffsetDesc glyphOffset, - FT_Bytes table, - FT_Bytes limit, - GXV_Validator valid ) + gxv_mort_subtable_type0_entry_validate( + FT_Byte state, + FT_UShort flags, + GXV_StateTable_GlyphOffsetDesc glyphOffset, + FT_Bytes table, + FT_Bytes limit, + GXV_Validator valid ) { - FT_UShort markFirst; - FT_UShort dontAdvance; - FT_UShort markLast; - FT_UShort reserved; - FT_UShort verb; + FT_UShort markFirst; + FT_UShort dontAdvance; + FT_UShort markLast; + FT_UShort reserved; + FT_UShort verb; + FT_UNUSED( state ); + FT_UNUSED( table ); + FT_UNUSED( limit ); - markFirst = flags / 0x8000; + + markFirst = flags / 0x8000U; dontAdvance = ( flags & 0x4000 ) / 0x4000; markLast = ( flags & 0x2000 ) / 0x2000; reserved = flags & 0x1FF0; @@ -80,23 +88,24 @@ FT_UNUSED( GXV_Mort_IndicScript_Msg[verb] ); - GXV_TRACE(( " IndicScript MorphRule for glyphOffset 0x%04x", glyphOffset.u )); + GXV_TRACE(( " IndicScript MorphRule for glyphOffset 0x%04x", + glyphOffset.u )); GXV_TRACE(( " markFirst=%01d", markFirst )); GXV_TRACE(( " dontAdvance=%01d", dontAdvance )); GXV_TRACE(( " markLast=%01d", markLast )); GXV_TRACE(( " %02d", verb )); GXV_TRACE(( " %s\n", GXV_Mort_IndicScript_Msg[verb] )); + if ( 0 < reserved ) { GXV_TRACE(( " non-zero bits found in reserved range\n" )); FT_INVALID_DATA; } else - { GXV_TRACE(( "\n" )); - } } + static void gxv_mort_subtable_type0_validate( FT_Bytes table, FT_Bytes limit, @@ -105,7 +114,8 @@ FT_Bytes p = table; - GXV_NAME_ENTER( "mort chain subtable type0 (Indic-Script Rearrangement)" ); + GXV_NAME_ENTER( + "mort chain subtable type0 (Indic-Script Rearrangement)" ); GXV_LIMIT_CHECK( GXV_STATETABLE_HEADER_SIZE ); @@ -113,8 +123,11 @@ valid->statetable.optdata_load_func = NULL; valid->statetable.subtable_setup_func = NULL; valid->statetable.entry_glyphoffset_fmt = GXV_GLYPHOFFSET_NONE; - valid->statetable.entry_validate_func = gxv_mort_subtable_type0_entry_validate; + valid->statetable.entry_validate_func = + gxv_mort_subtable_type0_entry_validate; + gxv_StateTable_validate( p, limit, valid ); + GXV_EXIT; } |