17dd7cddfSDavid du Colombier #include <u.h>
27dd7cddfSDavid du Colombier #include <libc.h>
37dd7cddfSDavid du Colombier #include <draw.h>
47dd7cddfSDavid du Colombier
57dd7cddfSDavid du Colombier static
67dd7cddfSDavid du Colombier void
packinfo(Fontchar * fc,uchar * p,int n)77dd7cddfSDavid du Colombier packinfo(Fontchar *fc, uchar *p, int n)
87dd7cddfSDavid du Colombier {
97dd7cddfSDavid du Colombier int j;
107dd7cddfSDavid du Colombier
117dd7cddfSDavid du Colombier for(j=0; j<=n; j++){
127dd7cddfSDavid du Colombier p[0] = fc->x;
137dd7cddfSDavid du Colombier p[1] = fc->x>>8;
147dd7cddfSDavid du Colombier p[2] = fc->top;
157dd7cddfSDavid du Colombier p[3] = fc->bottom;
167dd7cddfSDavid du Colombier p[4] = fc->left;
177dd7cddfSDavid du Colombier p[5] = fc->width;
187dd7cddfSDavid du Colombier fc++;
197dd7cddfSDavid du Colombier p += 6;
207dd7cddfSDavid du Colombier }
217dd7cddfSDavid du Colombier }
227dd7cddfSDavid du Colombier
237dd7cddfSDavid du Colombier int
writesubfont(int fd,Subfont * f)247dd7cddfSDavid du Colombier writesubfont(int fd, Subfont *f)
257dd7cddfSDavid du Colombier {
267dd7cddfSDavid du Colombier char hdr[3*12+1];
277dd7cddfSDavid du Colombier uchar *data;
287dd7cddfSDavid du Colombier int nb;
297dd7cddfSDavid du Colombier
30*b2d38b96SDavid du Colombier snprint(hdr, sizeof hdr, "%11d %11d %11d ", f->n, f->height, f->ascent);
317dd7cddfSDavid du Colombier if(write(fd, hdr, 3*12) != 3*12){
327dd7cddfSDavid du Colombier Err:
337dd7cddfSDavid du Colombier werrstr("writesubfont: bad write: %r");
347dd7cddfSDavid du Colombier return -1;
357dd7cddfSDavid du Colombier }
367dd7cddfSDavid du Colombier nb = 6*(f->n+1);
377dd7cddfSDavid du Colombier data = malloc(nb);
387dd7cddfSDavid du Colombier if(data == nil)
397dd7cddfSDavid du Colombier return -1;
407dd7cddfSDavid du Colombier packinfo(f->info, data, f->n);
417dd7cddfSDavid du Colombier if(write(fd, data, nb) != nb)
427dd7cddfSDavid du Colombier goto Err;
437dd7cddfSDavid du Colombier free(data);
447dd7cddfSDavid du Colombier return 0;
457dd7cddfSDavid du Colombier }
46