|
|
|
@ -191,72 +191,75 @@ |
|
|
|
|
FT_LOCAL_DEF( void ) |
|
|
|
|
T1_Face_Done( T1_Face face ) |
|
|
|
|
{ |
|
|
|
|
if ( face ) |
|
|
|
|
{ |
|
|
|
|
FT_Memory memory = face->root.memory; |
|
|
|
|
T1_Font type1 = &face->type1; |
|
|
|
|
FT_Memory memory; |
|
|
|
|
T1_Font type1; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ( !face ) |
|
|
|
|
return; |
|
|
|
|
|
|
|
|
|
memory = face->root.memory; |
|
|
|
|
type1 = &face->type1; |
|
|
|
|
|
|
|
|
|
#ifndef T1_CONFIG_OPTION_NO_MM_SUPPORT |
|
|
|
|
/* release multiple masters information */ |
|
|
|
|
FT_ASSERT( ( face->len_buildchar == 0 ) == ( face->buildchar == NULL ) ); |
|
|
|
|
/* release multiple masters information */ |
|
|
|
|
FT_ASSERT( ( face->len_buildchar == 0 ) == ( face->buildchar == NULL ) ); |
|
|
|
|
|
|
|
|
|
if ( face->buildchar ) |
|
|
|
|
{ |
|
|
|
|
FT_FREE( face->buildchar ); |
|
|
|
|
if ( face->buildchar ) |
|
|
|
|
{ |
|
|
|
|
FT_FREE( face->buildchar ); |
|
|
|
|
|
|
|
|
|
face->buildchar = NULL; |
|
|
|
|
face->len_buildchar = 0; |
|
|
|
|
} |
|
|
|
|
face->buildchar = NULL; |
|
|
|
|
face->len_buildchar = 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
T1_Done_Blend( face ); |
|
|
|
|
face->blend = 0; |
|
|
|
|
T1_Done_Blend( face ); |
|
|
|
|
face->blend = 0; |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
/* release font info strings */ |
|
|
|
|
{ |
|
|
|
|
PS_FontInfo info = &type1->font_info; |
|
|
|
|
/* release font info strings */ |
|
|
|
|
{ |
|
|
|
|
PS_FontInfo info = &type1->font_info; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FT_FREE( info->version ); |
|
|
|
|
FT_FREE( info->notice ); |
|
|
|
|
FT_FREE( info->full_name ); |
|
|
|
|
FT_FREE( info->family_name ); |
|
|
|
|
FT_FREE( info->weight ); |
|
|
|
|
} |
|
|
|
|
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 ); |
|
|
|
|
/* release top dictionary */ |
|
|
|
|
FT_FREE( type1->charstrings_len ); |
|
|
|
|
FT_FREE( type1->charstrings ); |
|
|
|
|
FT_FREE( type1->glyph_names ); |
|
|
|
|
|
|
|
|
|
FT_FREE( type1->subrs ); |
|
|
|
|
FT_FREE( type1->subrs_len ); |
|
|
|
|
FT_FREE( type1->subrs ); |
|
|
|
|
FT_FREE( type1->subrs_len ); |
|
|
|
|
|
|
|
|
|
FT_FREE( type1->subrs_block ); |
|
|
|
|
FT_FREE( type1->charstrings_block ); |
|
|
|
|
FT_FREE( type1->glyph_names_block ); |
|
|
|
|
FT_FREE( type1->subrs_block ); |
|
|
|
|
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( type1->encoding.char_index ); |
|
|
|
|
FT_FREE( type1->encoding.char_name ); |
|
|
|
|
FT_FREE( type1->font_name ); |
|
|
|
|
|
|
|
|
|
#ifndef T1_CONFIG_OPTION_NO_AFM |
|
|
|
|
/* release afm data if present */ |
|
|
|
|
if ( face->afm_data ) |
|
|
|
|
T1_Done_Metrics( memory, (AFM_FontInfo)face->afm_data ); |
|
|
|
|
/* release afm data if present */ |
|
|
|
|
if ( face->afm_data ) |
|
|
|
|
T1_Done_Metrics( memory, (AFM_FontInfo)face->afm_data ); |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
/* release unicode map, if any */ |
|
|
|
|
/* release unicode map, if any */ |
|
|
|
|
#if 0 |
|
|
|
|
FT_FREE( face->unicode_map_rec.maps ); |
|
|
|
|
face->unicode_map_rec.num_maps = 0; |
|
|
|
|
face->unicode_map = NULL; |
|
|
|
|
FT_FREE( face->unicode_map_rec.maps ); |
|
|
|
|
face->unicode_map_rec.num_maps = 0; |
|
|
|
|
face->unicode_map = NULL; |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
face->root.family_name = NULL; |
|
|
|
|
face->root.style_name = NULL; |
|
|
|
|
} |
|
|
|
|
face->root.family_name = NULL; |
|
|
|
|
face->root.style_name = NULL; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|