--- include/freetype/tttags.h 30 Aug 2004 05:27:57 -0000 1.1.1.5 +++ include/freetype/tttags.h 18 Sep 2005 12:09:13 -0000 @@ -77,6 +77,8 @@ #define TTAG_VDMX FT_MAKE_TAG( 'V', 'D', 'M', 'X' ) #define TTAG_vhea FT_MAKE_TAG( 'v', 'h', 'e', 'a' ) #define TTAG_vmtx FT_MAKE_TAG( 'v', 'm', 't', 'x' ) +#define TTAG_SING FT_MAKE_TAG( 'S', 'I', 'N', 'G' ) +#define TTAG_META FT_MAKE_TAG( 'M', 'E', 'T', 'A' ) FT_END_HEADER --- src/sfnt/ttload.c 6 May 2005 06:26:38 -0000 1.1.1.15 +++ src/sfnt/ttload.c 18 Sep 2005 20:09:50 -0000 @@ -157,6 +157,8 @@ { FT_Error error; FT_UInt nn, has_head = 0; + FT_UInt has_sing =0; + FT_UInt has_meta =0; const FT_ULong glyx_tag = FT_MAKE_TAG( 'g', 'l', 'y', 'x' ); const FT_ULong locx_tag = FT_MAKE_TAG( 'l', 'o', 'c', 'x' ); @@ -233,8 +235,16 @@ else if ( table.Tag == TTAG_bhed ) goto head_retry; #endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */ + else if ( table.Tag == TTAG_SING ) + has_sing = 1; + else if (table.Tag == TTAG_META ) + has_meta = 1; } + /* when sing and meta are present, head is not present*/ + if ( has_sing && has_meta && has_head == 0 ) + goto Exit; + /* otherwise, treat a missing head as a failure */ if ( has_head == 0 ) goto Bad_Format;