date: 2001/03/17 14:11:21; author: werner; state: Exp; lines: +8 -5 More fixes for special marks. Index: ftxgdef.c =================================================================== RCS file: /cvs/freetype/freetype/lib/extend/ftxgdef.c,v retrieving revision 1.12 retrieving revision 1.13 diff -u -p -r1.12 -r1.13 --- ftxgdef.c 2001/03/06 13:55:38 1.12 +++ ftxgdef.c 2001/03/17 14:11:21 1.13 @@ -1106,14 +1106,17 @@ if ( error ) return error; - /* This is OpenType 1.2 */ - if ( flags & IGNORE_SPECIAL_MARKS ) + { + /* This is OpenType 1.2 */ + if ( (flags & 0xFF00) != *property ) return TTO_Err_Not_Covered; - - if ( flags & *property ) - return TTO_Err_Not_Covered; + } + else { + if ( flags & *property ) + return TTO_Err_Not_Covered; + } } return TT_Err_Ok; Index: ftxgpos.c =================================================================== RCS file: /cvs/freetype/freetype/lib/extend/ftxgpos.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -p -r1.10 -r1.11 --- ftxgpos.c 2001/03/06 13:55:38 1.10 +++ ftxgpos.c 2001/03/17 14:11:21 1.11 @@ -1682,7 +1682,7 @@ TTO_GPOSHeader* gpos = gpi->gpos; - if ( in->pos >= in->length ) + if ( in->pos >= in->length - 1 ) return TTO_Err_Not_Covered; /* Not enough glyphs in input */ if ( context_length != 0xFFFF && context_length < 2 ) @@ -2325,7 +2325,7 @@ if ( error ) return error; - if ( property != TTO_MARK ) + if ( !( property == TTO_MARK || property & IGNORE_SPECIAL_MARKS ) ) break; i++; @@ -2720,7 +2720,7 @@ if ( error ) return error; - if ( property != TTO_MARK ) + if ( !( property == TTO_MARK || property & IGNORE_SPECIAL_MARKS ) ) break; i++; Index: ftxgsub.c =================================================================== RCS file: /cvs/freetype/freetype/lib/extend/ftxgsub.c,v retrieving revision 1.39 retrieving revision 1.40 diff -u -p -r1.39 -r1.40 --- ftxgsub.c 2001/03/06 13:55:38 1.39 +++ ftxgsub.c 2001/03/17 14:11:21 1.40 @@ -1188,7 +1188,7 @@ if ( CHECK_Property( gdef, in->string[in->pos], flags, &property ) ) return error; - if ( property == TTO_MARK ) + if ( property == TTO_MARK || property & IGNORE_SPECIAL_MARKS ) first_is_mark = TRUE; error = Coverage_Index( &ls->Coverage, in->string[in->pos], &index ); @@ -1228,7 +1228,7 @@ break; } - if ( property != TTO_MARK ) + if ( !( property == TTO_MARK || property & IGNORE_SPECIAL_MARKS ) ) is_mark = FALSE; if ( s_in[j] != c[i - 1] )