Exemplo n.º 1
0
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");
}
Exemplo n.º 2
0
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);
  }