cff_font_done( CFF_Font font ) { FT_Memory memory = font->memory; FT_UInt idx; cff_done_index( &font->global_subrs_index ); cff_done_index( &font->string_index ); cff_done_index( &font->font_dict_index ); cff_done_index( &font->name_index ); cff_done_index( &font->charstrings_index ); /* release font dictionaries, but only if working with */ /* a CID keyed CFF font */ if ( font->num_subfonts > 0 ) { for ( idx = 0; idx < font->num_subfonts; idx++ ) cff_subfont_done( memory, font->subfonts[idx] ); FT_FREE( font->subfonts ); } cff_encoding_done( &font->encoding ); cff_charset_done( &font->charset, font->stream ); cff_subfont_done( memory, &font->top_font ); CFF_Done_FD_Select( &font->fd_select, font->stream ); FT_FREE( font->global_subrs ); FT_FREE( font->font_name ); }
cff_font_done( CFF_Font font ) { FT_Memory memory = font->memory; FT_UInt idx; cff_index_done( &font->global_subrs_index ); cff_index_done( &font->string_index ); cff_index_done( &font->font_dict_index ); cff_index_done( &font->name_index ); cff_index_done( &font->charstrings_index ); /* release font dictionaries, but only if working with */ /* a CID keyed CFF font */ if ( font->num_subfonts > 0 ) { for ( idx = 0; idx < font->num_subfonts; idx++ ) cff_subfont_done( memory, font->subfonts[idx] ); /* the subfonts array has been allocated as a single block */ FT_FREE( font->subfonts[0] ); } cff_encoding_done( &font->encoding ); cff_charset_done( &font->charset, font->stream ); cff_subfont_done( memory, &font->top_font ); CFF_Done_FD_Select( &font->fd_select, font->stream ); if (font->font_info != NULL) { FT_FREE( font->font_info->version ); FT_FREE( font->font_info->notice ); FT_FREE( font->font_info->full_name ); FT_FREE( font->font_info->family_name ); FT_FREE( font->font_info->weight ); FT_FREE( font->font_info ); } FT_FREE( font->registry ); FT_FREE( font->ordering ); FT_FREE( font->global_subrs ); FT_FREE( font->font_name ); }
cff_font_done( CFF_Font font ) { FT_Memory memory = font->memory; FT_UInt idx; cff_index_done( &font->global_subrs_index ); cff_index_done( &font->font_dict_index ); cff_index_done( &font->name_index ); cff_index_done( &font->charstrings_index ); /* release font dictionaries, but only if working with */ /* a CID keyed CFF font */ if ( font->num_subfonts > 0 ) { for ( idx = 0; idx < font->num_subfonts; idx++ ) cff_subfont_done( memory, font->subfonts[idx] ); /* the subfonts array has been allocated as a single block */ FT_FREE( font->subfonts[0] ); } cff_encoding_done( &font->encoding ); cff_charset_done( &font->charset, font->stream ); cff_subfont_done( memory, &font->top_font ); CFF_Done_FD_Select( &font->fd_select, font->stream ); FT_FREE( font->font_info ); FT_FREE( font->font_name ); FT_FREE( font->global_subrs ); FT_FREE( font->strings ); FT_FREE( font->string_pool ); if ( font->cf2_instance.finalizer ) { font->cf2_instance.finalizer( font->cf2_instance.data ); FT_FREE( font->cf2_instance.data ); } }