static int do_codespacerange (CMap *cmap, ifreader *input, int count) { unsigned char codeLo[TOKEN_LEN_MAX], codeHi[TOKEN_LEN_MAX]; int dim; while (count-- > 0) { if (get_coderange(input, codeLo, codeHi, &dim, TOKEN_LEN_MAX) < 0) return -1; CMap_add_codespacerange(cmap, codeLo, codeHi, dim); } return check_next_token(input, "endcodespacerange"); }
static CMap * invert_cmap (CMap *cmap, unsigned char *used_slot) { CMap *icmap; unsigned char *codestr; unsigned char range_min[2] = {0x00, 0x00}; /* CID */ unsigned char range_max[2] = {0xff, 0xfe}; /* CID */ cmap = flatten_cmap(cmap); ASSERT(cmap); icmap = CMap_new(); CMap_set_type(icmap, CMAP_TYPE_CID_TO_CODE); CMap_add_codespacerange(icmap, range_min, range_max, 2); if (cmap->mapTbl) { codestr = NEW(cmap->profile.maxBytesIn, unsigned char); memset(codestr, 0, cmap->profile.maxBytesIn); add_inverse_map(icmap, cmap->mapTbl, codestr, 0, used_slot); /* top node */ RELEASE(codestr); }