blob: 6dcb89395e3a966977331a103a14e8ed362af34b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
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 )
;
}
|