static fd_entry *lookup_fontdescriptor(fo_entry * fo) { assert(fo != NULL); assert(fo->fm != NULL); assert(is_fontfile(fo->fm)); return lookup_fd_entry(fo->fm->ff_name, fo->fm->slant, fo->fm->extend); }
void register_fd_entry(fd_entry * fd) { void **aa; if (fd_tree == NULL) { fd_tree = avl_create(comp_fd_entry, NULL, &avl_xallocator); assert(fd_tree != NULL); } assert(fd != NULL && fd->fm != NULL && is_fontfile(fd->fm)); assert(lookup_fd_entry(fd->fm->ff_name, fd->fm->slant, fd->fm->extend) == NULL); /* font descriptor not yet registered */ aa = avl_probe(fd_tree, fd); assert(aa != NULL); }
fd_entry *epdf_create_fontdescriptor(fm_entry * fm) { fd_entry *fd; if ((fd = lookup_fd_entry(fm->ff_name, fm->slant, fm->extend)) == NULL) { fm->in_use = true; fd = new_fd_entry(); fd->fm = fm; register_fd_entry(fd); fd->fd_objnum = pdf_new_objnum(); assert(fm->ps_name != NULL); fd->fontname = xstrdup(fm->ps_name); /* just fallback */ /* preset_fontmetrics (fo->fd, f); */ fd->gl_tree = avl_create(comp_string_entry, NULL, &avl_xallocator); assert(fd->gl_tree != NULL); } return fd; }