Home | History | Annotate | Download | only in hb-old

Lines Matching defs:gdef

27 #include "harfbuzz-gdef-private.h"
38 static void Free_NewGlyphClasses( HB_GDEFHeader* gdef);
42 /* GDEF glyph classes */
59 HB_GDEFHeader* gdef;
64 if ( ALLOC( gdef, sizeof( *gdef ) ) )
67 gdef->GlyphClassDef.loaded = FALSE;
68 gdef->AttachList.loaded = FALSE;
69 gdef->LigCaretList.loaded = FALSE;
70 gdef->MarkAttachClassDef_offset = 0;
71 gdef->MarkAttachClassDef.loaded = FALSE;
73 gdef->LastGlyph = 0;
74 gdef->NewGlyphClasses = NULL;
76 *retptr = gdef;
88 HB_GDEFHeader* gdef;
97 if (( error = HB_New_GDEF_Table ( &gdef ) ))
112 /* all GDEF subtables are optional */
122 ( error = _HB_OPEN_Load_ClassDefinition( &gdef->GlyphClassDef, 5,
141 ( error = Load_AttachList( &gdef->AttachList,
160 ( error = Load_LigCaretList( &gdef->LigCaretList,
178 gdef->MarkAttachClassDef_offset = new_offset + base_offset;
180 gdef->MarkAttachClassDef_offset = 0;
182 *retptr = gdef;
187 Free_LigCaretList( &gdef->LigCaretList );
190 Free_AttachList( &gdef->AttachList );
193 _HB_OPEN_Free_ClassDefinition( &gdef->GlyphClassDef );
196 FREE( gdef );
202 HB_Error HB_Done_GDEF_Table ( HB_GDEFHeader* gdef )
204 Free_LigCaretList( &gdef->LigCaretList );
205 Free_AttachList( &gdef->AttachList );
206 _HB_OPEN_Free_ClassDefinition( &gdef->GlyphClassDef );
207 _HB_OPEN_Free_ClassDefinition( &gdef->MarkAttachClassDef );
209 Free_NewGlyphClasses( gdef );
211 FREE( gdef );
646 * GDEF API
650 static HB_UShort Get_New_Class( HB_GDEFHeader* gdef,
661 if ( glyphID >= gdef->LastGlyph )
664 count = gdef->GlyphClassDef.cd.cd2.ClassRangeCount;
665 gcrr = gdef->GlyphClassDef.cd.cd2.ClassRangeRecord;
666 ngc = gdef->NewGlyphClasses;
690 HB_Error HB_GDEF_Get_Glyph_Property( HB_GDEFHeader* gdef,
699 if ( !gdef || !property )
704 if ( gdef->MarkAttachClassDef.loaded )
706 error = _HB_OPEN_Get_Class( &gdef->MarkAttachClassDef, glyphID, &class, &index );
716 error = _HB_OPEN_Get_Class( &gdef->GlyphClassDef, glyphID, &class, &index );
723 if ( error == HB_Err_Not_Covered && gdef->NewGlyphClasses )
724 class = Get_New_Class( gdef, glyphID, index );
787 HB_Error HB_GDEF_Build_ClassDefinition( HB_GDEFHeader* gdef,
802 if ( !gdef || !glyph_array || !class_array )
805 gcd = &gdef->GlyphClassDef;
894 if ( ALLOC_ARRAY( gdef->NewGlyphClasses,
900 ngc = gdef->NewGlyphClasses;
938 gdef->LastGlyph = num_glyphs - 1;
940 gdef->MarkAttachClassDef_offset = 0L;
941 gdef->MarkAttachClassDef.loaded = FALSE;
952 FREE( gdef->NewGlyphClasses );
962 static void Free_NewGlyphClasses( HB_GDEFHeader* gdef )
968 if ( gdef->NewGlyphClasses )
970 count = gdef->GlyphClassDef.cd.cd2.ClassRangeCount + 1;
971 ngc = gdef->NewGlyphClasses;
982 _HB_GDEF_Add_Glyph_Property( HB_GDEFHeader* gdef,
995 error = _HB_OPEN_Get_Class( &gdef->GlyphClassDef, glyphID, &class, &index );
1030 count = gdef->GlyphClassDef.cd.cd2.ClassRangeCount;
1031 gcrr = gdef->GlyphClassDef.cd.cd2.ClassRangeRecord;
1032 ngc = gdef->NewGlyphClasses;
1068 _HB_GDEF_Check_Property( HB_GDEFHeader* gdef,
1075 if ( gdef )
1082 error = HB_GDEF_Get_Glyph_Property( gdef, gitem->gindex, &gitem->gproperties );
1124 _HB_GDEF_LoadMarkAttachClassDef_From_LookupFlags( HB_GDEFHeader* gdef,
1134 GDEF table -- this hack is necessary for OpenType 1.2 tables since
1135 the version field of the GDEF table hasn't been incremented.
1137 For constructed GDEF tables, we only load it if
1141 if ( gdef &&
1142 gdef->MarkAttachClassDef_offset && !gdef->MarkAttachClassDef.loaded )
1149 if ( FILE_Seek( gdef->MarkAttachClassDef_offset ) ||
1150 ( error = _HB_OPEN_Load_ClassDefinition( &gdef->MarkAttachClassDef,