@ -2,7 +2,6 @@
# include <ft2build.h>
# include FT_INTERNAL_SERVICE_H
# include FT_SERVICE_CFF_TABLE_LOAD_H
# include "psdecode.h"
# include "psobjs.h"
@ -16,42 +15,76 @@
/* ps_decoder_init */
/* */
/* <Description> */
/* Initializes a given glyph decoder. */
/* Creates a decoder for the combined Type 1 / CFF interpreter. */
/* */
/* <InOut> */
/* decoder :: A pointer to the glyph builder to initialize. */
/* */
/* <Input> */
/* face :: The current face object. */
/* */
/* size :: The current size object. */
/* */
/* slot :: The current glyph object. */
/* */
/* hinting :: Whether hinting is active. */
/* */
/* hint_mode :: The hinting mode. */
/* */
FT_LOCAL_DEF ( void )
ps_decoder_init ( PS_Decoder * decoder ,
TT_Face face ,
FT_Size size ,
CFF_GlyphSlot slot ,
FT_Byte * * glyph_names ,
PS_Blend blend ,
FT_Bool hinting ,
FT_Render_Mode hint_mode ,
PS_Decoder_Get_Glyph_Callback get_callback ,
PS_Decoder_Free_Glyph_Callback free_callback )
ps_decoder_init ( void * decoder ,
FT_Bool is_t1 ,
PS_Decoder * ps_decoder )
{
}
FT_ZERO ( ps_decoder ) ;
if ( is_t1 )
{
T1_Decoder t1_decoder = ( T1_Decoder ) decoder ;
/* this function is used to select the subfont */
/* and the locals subrs array */
FT_LOCAL_DEF ( FT_Error )
ps_decoder_prepare ( PS_Decoder * decoder ,
FT_Size size ,
FT_UInt glyph_index )
{
ps_builder_init ( & t1_decoder - > builder ,
is_t1 ,
& ps_decoder - > builder ) ;
ps_decoder - > psnames = t1_decoder - > psnames ;
ps_decoder - > num_glyphs = t1_decoder - > num_glyphs ;
ps_decoder - > glyph_names = t1_decoder - > glyph_names ;
ps_decoder - > hint_mode = t1_decoder - > hint_mode ;
ps_decoder - > blend = t1_decoder - > blend ;
/* ps_decoder->t1_parse_callback = t1_decoder->parse_callback; */
ps_decoder - > num_locals = t1_decoder - > num_subrs ;
ps_decoder - > locals = t1_decoder - > subrs ;
ps_decoder - > locals_len = t1_decoder - > subrs_len ;
ps_decoder - > locals_hash = t1_decoder - > subrs_hash ;
ps_decoder - > buildchar = t1_decoder - > buildchar ;
ps_decoder - > len_buildchar = t1_decoder - > len_buildchar ;
ps_decoder - > lenIV = t1_decoder - > lenIV ;
}
else
{
CFF_Decoder * cff_decoder = ( CFF_Decoder * ) decoder ;
ps_builder_init ( & cff_decoder - > builder ,
is_t1 ,
& ps_decoder - > builder ) ;
ps_decoder - > cff = cff_decoder - > cff ;
ps_decoder - > current_subfont = cff_decoder - > current_subfont ;
ps_decoder - > num_globals = cff_decoder - > num_globals ;
ps_decoder - > globals = cff_decoder - > globals ;
ps_decoder - > globals_bias = cff_decoder - > globals_bias ;
ps_decoder - > num_locals = cff_decoder - > num_locals ;
ps_decoder - > locals = cff_decoder - > locals ;
ps_decoder - > locals_bias = cff_decoder - > locals_bias ;
ps_decoder - > glyph_width = cff_decoder - > glyph_width ;
ps_decoder - > nominal_width = cff_decoder - > nominal_width ;
ps_decoder - > width_only = cff_decoder - > width_only ;
ps_decoder - > hint_mode = cff_decoder - > hint_mode ;
ps_decoder - > get_glyph_callback = cff_decoder - > get_glyph_callback ;
ps_decoder - > free_glyph_callback = cff_decoder - > free_glyph_callback ;
}
}