master hovercats/oakiss / pkg / terminus-font / ucstoany.awk
 1{
 2	d = 0
 3	for (i = 1; i <= length($0); ++i)
 4		d = d * 16 + index("0123456789ABCDEF", substr($0, i, 1)) - 1
 5	unimap[unimap_len++] = d
 6}
 7
 8function readchar() {
 9	name = $2
10	buf = ""
11	while (getline < font) {
12		if ($1 == "ENDCHAR")
13			break
14		if ($1 == "ENCODING")
15			encoding = $2
16		else
17			buf = buf $0 "\n"
18	}
19	names[encoding] = name
20	chars[encoding] = buf
21}
22
23function printchar(i, encoding) {
24	if (!(encoding in names))
25		exit(1)
26	print "STARTCHAR", names[encoding]
27	print "ENCODING", i
28	printf "%s", chars[encoding]
29	print "ENDCHAR"
30}
31
32END {
33	while (getline < font) {
34		if ($1 == "STARTCHAR") {
35			readchar()
36			continue
37		}
38		if ($1 == "CHARS") {
39			$2 = unimap_len
40		} else if ($1 == "FONT") {
41			sub(/-[^-]*-[^-]*$/, "-" charset, $2)
42		} else if ($1 == "ENDFONT") {
43			for (i = 0; i < unimap_len; ++i) {
44				encoding = unimap[i]
45				printchar(i >= 32 ? encoding : i, encoding)
46			}
47		}
48		print
49	}
50}