FT_LOCAL_DEF void T1_Face_Done( T1_Face face ) { FT_Memory memory; T1_Font* type1 = &face->type1; if ( face ) { memory = face->root.memory; #ifndef T1_CONFIG_OPTION_NO_MM_SUPPORT /* release multiple masters information */ T1_Done_Blend( face ); face->blend = 0; #endif /* release font info strings */ { T1_FontInfo* info = &type1->font_info; FREE( info->version ); FREE( info->notice ); FREE( info->full_name ); FREE( info->family_name ); FREE( info->weight ); } /* release top dictionary */ FREE( type1->charstrings_len ); FREE( type1->charstrings ); FREE( type1->glyph_names ); FREE( type1->subrs ); FREE( type1->subrs_len ); FREE( type1->subrs_block ); FREE( type1->charstrings_block ); FREE( type1->glyph_names_block ); FREE( type1->encoding.char_index ); FREE( type1->encoding.char_name ); FREE( type1->font_name ); #ifndef T1_CONFIG_OPTION_NO_AFM /* release afm data if present */ if ( face->afm_data ) T1_Done_AFM( memory, (T1_AFM*)face->afm_data ); #endif /* release unicode map, if any */ FREE( face->unicode_map.maps ); face->unicode_map.num_maps = 0; face->root.family_name = 0; face->root.style_name = 0; } }
T42_Face_Done( FT_Face t42face ) { T42_Face face = (T42_Face)t42face; T1_Font type1; PS_FontInfo info; FT_Memory memory; if ( !face ) return; type1 = &face->type1; info = &type1->font_info; memory = face->root.memory; /* delete internal ttf face prior to freeing face->ttf_data */ if ( face->ttf_face ) FT_Done_Face( face->ttf_face ); /* release font info strings */ FT_FREE( info->version ); FT_FREE( info->notice ); FT_FREE( info->full_name ); FT_FREE( info->family_name ); FT_FREE( info->weight ); /* release top dictionary */ FT_FREE( type1->charstrings_len ); FT_FREE( type1->charstrings ); FT_FREE( type1->glyph_names ); FT_FREE( type1->charstrings_block ); FT_FREE( type1->glyph_names_block ); FT_FREE( type1->encoding.char_index ); FT_FREE( type1->encoding.char_name ); FT_FREE( type1->font_name ); FT_FREE( face->ttf_data ); #if 0 /* release afm data if present */ if ( face->afm_data ) T1_Done_AFM( memory, (T1_AFM*)face->afm_data ); #endif /* release unicode map, if any */ FT_FREE( face->unicode_map.maps ); face->unicode_map.num_maps = 0; face->root.family_name = 0; face->root.style_name = 0; }