ref: c6d4cd09a395a24ee993c1edf1031e5b01adddde
dir: /sys/src/libdraw/writesubfont.c/
#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; }