| #include <u.h> | 
 | #include <libc.h> | 
 | #include <draw.h> | 
 |  | 
 | static | 
 | void | 
 | packinfo(Fontchar *fc, uchar *p, int n) | 
 | { | 
 | 	int j; | 
 |  | 
 | 	for(j=0;  j<=n;  j++){ | 
 | 		p[0] = fc->x; | 
 | 		p[1] = fc->x>>8; | 
 | 		p[2] = fc->top; | 
 | 		p[3] = fc->bottom; | 
 | 		p[4] = fc->left; | 
 | 		p[5] = fc->width; | 
 | 		fc++; | 
 | 		p += 6; | 
 | 	} | 
 | } | 
 |  | 
 | int | 
 | writesubfont(int fd, Subfont *f) | 
 | { | 
 | 	char hdr[3*12+1]; | 
 | 	uchar *data; | 
 | 	int nb; | 
 |  | 
 | 	sprint(hdr, "%11d %11d %11d ", f->n, f->height, f->ascent); | 
 | 	if(write(fd, hdr, 3*12) != 3*12){ | 
 |    Err: | 
 | 		werrstr("writesubfont: bad write: %r"); | 
 | 		return -1; | 
 | 	} | 
 | 	nb = 6*(f->n+1); | 
 | 	data = malloc(nb); | 
 | 	if(data == nil) | 
 | 		return -1; | 
 | 	packinfo(f->info, data, f->n); | 
 | 	if(write(fd, data, nb) != nb) | 
 | 		goto Err; | 
 | 	free(data); | 
 | 	return 0; | 
 | } |