#include #include #include Subfont* allocsubfont(char *name, int n, int height, int ascent, Fontchar *info, Image *i) { Subfont *f, *cf; assert(height != 0 /* allocsubfont */); f = malloc(sizeof(Subfont)); if(f == 0) return 0; f->n = n; f->height = height; f->ascent = ascent; f->info = info; f->bits = i; f->ref = 1; if(name){ /* * if already caching this subfont, leave older * (and hopefully more widely used) copy in cache. * this case should not happen -- we got called * because cachechars needed this subfont and it * wasn't in the cache. */ f->name = strdup(name); if((cf=lookupsubfont(i->display, name)) == 0) installsubfont(name, f); else freesubfont(cf); /* drop ref we just picked up */ }else f->name = 0; return f; }