typedef unsigned char byte; typedef unsigned int uint; typedef unsigned long ulong; typedef ulong gs_char; typedef struct gs_show_enum_s gs_show_enum; typedef struct gs_font_s gs_font; typedef struct gx_font_stack_item_s { gs_font *font; } gx_font_stack_item; typedef struct gx_font_stack_s { gx_font_stack_item items[1 + 5 ]; } gx_font_stack; struct gs_show_enum_s { gx_font_stack fstack; }; typedef enum { ft_composite = 0, } font_type; struct gs_font_s { font_type FontType; }; typedef enum { fmap_escape = 3, fmap_shift = 8 } fmap_type; typedef struct gs_type0_data_s { fmap_type FMapType; } gs_type0_data; gs_type0_next_char(register gs_show_enum *penum) { const byte *p; int fdepth; gs_font *pfont; gs_type0_data *pdata; uint fidx; gs_char chr; for (; pfont->FontType == ft_composite; ) { fmap_type fmt; switch ( fmt ) { do {} while (0); rdown: continue; case fmap_shift: p++; do {} while (0); goto rdown; } break; } up: while ( fdepth > 0 ) { switch ( pdata->FMapType ) { default: continue; case fmap_escape: fidx = *++p; do {} while (0); if ( fidx == chr && fdepth > 1 ) goto up; down: fdepth--; do {} while (0); } break; } while ( (pfont = penum->fstack.items[fdepth].font)->FontType == ft_composite ) ; }