1 /* This translates ps fonts in .pfb format to ASCII ps files. */
5 /* Binary bytes per output line. */
6 #define BYTES_PER_LINE (79/2)
7 #define HEX_DIGITS "0123456789ABCDEF"
9 static char *program_name
;
14 fprintf(stderr
, "%s: %s\n", program_name
, s
);
20 fprintf(stderr
, "usage: %s [-v] [pfb_file]\n", program_name
);
31 program_name
= argv
[0];
33 while ((opt
= getopt(argc
, argv
, "v")) != EOF
) {
37 extern char *version_string
;
38 fprintf(stderr
, "pfbtops groff version %s\n", version_string
);
47 if (argc
- optind
> 1)
49 if (argc
> optind
&& !freopen(argv
[optind
], "r", stdin
))
61 error("first byte of packet not 0x80");
65 if (type
!= 1 && type
!= 2)
66 error("bad packet type");
68 for (i
= 0; i
< 4; i
++)
72 error("end of file in packet header");
73 n
|= (long)c
<< (i
<< 3);
76 error("negative packet length");
83 error("end of file in text packet");
98 error("end of file in binary packet");
99 if (count
>= BYTES_PER_LINE
)
105 putchar(HEX_DIGITS
[(c
>> 4) & 0xf]);
106 putchar(HEX_DIGITS
[c
& 0xf]);