diff options
author | Owen Taylor <otaylor@redhat.com> | 2003-07-29 14:21:54 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 2003-07-29 14:21:54 +0000 |
commit | 537660728317118a8c2bd1940b2607ccf0f036ba (patch) | |
tree | 6a620b6a58eae742a160cf82631d63bda44f6602 | |
parent | 14aa651170b89e022de3e72809a0e38ee6aa7f77 (diff) | |
download | pango-537660728317118a8c2bd1940b2607ccf0f036ba.tar.gz |
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)
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | ChangeLog.pre-1-10 | 7 | ||||
-rw-r--r-- | ChangeLog.pre-1-4 | 7 | ||||
-rw-r--r-- | ChangeLog.pre-1-6 | 7 | ||||
-rw-r--r-- | ChangeLog.pre-1-8 | 7 | ||||
-rw-r--r-- | pango/opentype/ftxgdef.c | 37 |
6 files changed, 63 insertions, 9 deletions
@@ -1,3 +1,10 @@ +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) + Sat Jul 26 09:41:22 2003 Owen Taylor <otaylor@redhat.com> * pango/opentype/ftxgsub.c (Lookup_LigatureSubst): diff --git a/ChangeLog.pre-1-10 b/ChangeLog.pre-1-10 index 01163d70..32b4ca64 100644 --- a/ChangeLog.pre-1-10 +++ b/ChangeLog.pre-1-10 @@ -1,3 +1,10 @@ +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) + Sat Jul 26 09:41:22 2003 Owen Taylor <otaylor@redhat.com> * pango/opentype/ftxgsub.c (Lookup_LigatureSubst): diff --git a/ChangeLog.pre-1-4 b/ChangeLog.pre-1-4 index 01163d70..32b4ca64 100644 --- a/ChangeLog.pre-1-4 +++ b/ChangeLog.pre-1-4 @@ -1,3 +1,10 @@ +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) + Sat Jul 26 09:41:22 2003 Owen Taylor <otaylor@redhat.com> * pango/opentype/ftxgsub.c (Lookup_LigatureSubst): diff --git a/ChangeLog.pre-1-6 b/ChangeLog.pre-1-6 index 01163d70..32b4ca64 100644 --- a/ChangeLog.pre-1-6 +++ b/ChangeLog.pre-1-6 @@ -1,3 +1,10 @@ +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) + Sat Jul 26 09:41:22 2003 Owen Taylor <otaylor@redhat.com> * pango/opentype/ftxgsub.c (Lookup_LigatureSubst): diff --git a/ChangeLog.pre-1-8 b/ChangeLog.pre-1-8 index 01163d70..32b4ca64 100644 --- a/ChangeLog.pre-1-8 +++ b/ChangeLog.pre-1-8 @@ -1,3 +1,10 @@ +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) + Sat Jul 26 09:41:22 2003 Owen Taylor <otaylor@redhat.com> * pango/opentype/ftxgsub.c (Lookup_LigatureSubst): diff --git a/pango/opentype/ftxgdef.c b/pango/opentype/ftxgdef.c index e7e02f13..c1d5b797 100644 --- a/pango/opentype/ftxgdef.c +++ b/pango/opentype/ftxgdef.c @@ -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 ) + /* 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; + + /* 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 ) { - /* This is OpenType 1.2 */ - - if ( (flags & 0xFF00) != *property ) - return TTO_Err_Not_Covered; - } - else { - if ( flags & *property ) - return TTO_Err_Not_Covered; + if ( basic_glyph_class == TTO_MARK && + *property != desired_attachment_class ) + return TTO_Err_Not_Covered; } } |