123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- #include <u.h>
- #include <libc.h>
- #include <libg.h>
- #include <bio.h>
- #include "hdr.h"
- /*
- produces the bitmap for the designated han characters
- */
- static void usage(void);
- enum { Jis = 0, Big5, Gb_bdf, Gb_qw };
- enum { Size24 = 0, Size16 };
- struct {
- char *names[2];
- mapfn *mfn;
- readbitsfn *bfn;
- } source[] = {
- [Jis] { "../han/jis.bits", "../han/jis16.bits", kmap, kreadbits },
- [Big5] { "no 24 bit file", "../han/big5.16.bits", bmap, breadbits },
- [Gb_bdf] { "no 24 bit file", "../han/cclib16fs.bdf", gmap, greadbits },
- [Gb_qw] { "no 24 bit file", "no 16bit file", gmap, qreadbits },
- };
- void
- main(int argc, char **argv)
- {
- int from, to;
- int size = 24;
- int src = Jis;
- char *file = 0;
- long nc, nb;
- int x;
- uchar *bits;
- long *chars;
- int raw = 0;
- Bitmap *b, *b1;
- Subfont *f;
- int *found;
- ARGBEGIN{
- case 'f': file = ARGF(); break;
- case 'r': raw = 1; break;
- case '5': src = Big5; break;
- case 's': size = 16; break;
- case 'g': src = Gb_bdf; break;
- case 'q': src = Gb_qw; break;
- default: usage();
- }ARGEND
- if(file == 0)
- file = source[src].names[(size==24)? Size24:Size16];
- if(argc != 2)
- usage();
- from = strtol(argv[0], (char **)0, 0);
- to = strtol(argv[1], (char **)0, 0);
- binit(0, 0, "fontgen");
- nc = to-from+1;
- nb = size*size/8; /* bytes per char */
- nb *= nc;
- bits = (uchar *)malloc(nb);
- chars = (long *)malloc(sizeof(long)*nc);
- found = (int *)malloc(sizeof(found[0])*nc);
- if(bits == 0 || chars == 0){
- fprint(2, "%s: couldn't malloc %d bytes for %d chars\n", argv0, nb, nc);
- exits("out of memory");
- }
- if(raw){
- for(x = from; x <= to; x++)
- chars[x-from] = x;
- } else
- source[src].mfn(from, to, chars);
- memset(bits, 0, nb);
- b = source[src].bfn(file, nc, chars, size, bits, &found);
- b1 = balloc(b->r, b->ldepth);
- bitblt(b1, b1->r.min, b, b->r, S);
- f = bf(nc, size, b1, found);
- wrbitmapfile(1, b);
- wrsubfontfile(1, f);/**/
- exits(0);
- }
- static void
- usage(void)
- {
- fprint(2, "Usage: %s [-s] from to\n", argv0);
- exits("usage");
- }
|