Rewrite handling of IGNORE_SPECIAL_MARKS to be properly "ignore marks of
Tue Jul 29 09:58:13 2003 Owen Taylor <otaylor@redhat.com> * pango/opentype/ftxgdef.c (Check_Property): Rewrite handling of IGNORE_SPECIAL_MARKS to be properly "ignore marks of attachment type different than specified. (#118456, Kailash C. Chowksey)
This commit is contained in:
parent
8247acad79
commit
46d379596d
|
@ -1166,20 +1166,39 @@
|
|||
|
||||
if ( gdef )
|
||||
{
|
||||
FT_UShort basic_glyph_class;
|
||||
FT_UShort desired_attachment_class;
|
||||
|
||||
error = TT_GDEF_Get_Glyph_Property( gdef, index, property );
|
||||
if ( error )
|
||||
return error;
|
||||
|
||||
if ( flags & IGNORE_SPECIAL_MARKS )
|
||||
{
|
||||
/* This is OpenType 1.2 */
|
||||
/* If the glyph was found in the MarkAttachmentClass table,
|
||||
* then that class value is the high byte of the result,
|
||||
* otherwise the low byte contains the basic type of the glyph
|
||||
* as defined by the GlyphClassDef table.
|
||||
*/
|
||||
if ( *property & IGNORE_SPECIAL_MARKS )
|
||||
basic_glyph_class = TTO_MARK;
|
||||
else
|
||||
basic_glyph_class = *property;
|
||||
|
||||
if ( (flags & 0xFF00) != *property )
|
||||
return TTO_Err_Not_Covered;
|
||||
}
|
||||
else {
|
||||
if ( flags & *property )
|
||||
return TTO_Err_Not_Covered;
|
||||
/* Return Not_Covered, if, for example, basic_glyph_class
|
||||
* is TTO_LIGATURE and LookFlags includes IGNORE_LIGATURES
|
||||
*/
|
||||
if ( flags & basic_glyph_class )
|
||||
return TTO_Err_Not_Covered;
|
||||
|
||||
/* The high byte of LookupFlags has the meaning
|
||||
* "ignore marks of attachment type different than
|
||||
* the attachment type specified."
|
||||
*/
|
||||
desired_attachment_class = flags & IGNORE_SPECIAL_MARKS;
|
||||
if ( desired_attachment_class )
|
||||
{
|
||||
if ( basic_glyph_class == TTO_MARK &&
|
||||
*property != desired_attachment_class )
|
||||
return TTO_Err_Not_Covered;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue