var hasShortCmap = !!cmapTable.hasShortCmap;
var toUnicode = this.toUnicode;
- if (toUnicode) {
+ if (toUnicode && toUnicode.length > 0) {
// checking if cmap is just identity map
var isIdentity = true;
for (var i = 0, ii = glyphs.length; i < ii; i++) {
}
// if it is, replacing with meaningful toUnicode values
if (isIdentity) {
+ var usedUnicodes = [], unassignedUnicodeItems = [];
for (var i = 0, ii = glyphs.length; i < ii; i++) {
- var unicode = toUnicode[i + 1] || i + 1;
+ var unicode = toUnicode[i + 1];
+ if (!unicode || usedUnicodes[unicode]) {
+ unassignedUnicodeItems.push(i);
+ continue;
+ }
glyphs[i].unicode = unicode;
+ usedUnicodes[unicode] = true;
+ }
+ var unusedUnicode = kCmapGlyphOffset;
+ for (var j = 0, jj = unassignedUnicodeItems.length; j < jj; j++) {
+ var i = unassignedUnicodeItems[j];
+ while (usedUnicodes[unusedUnicode])
+ unusedUnicode++;
+ glyphs[i].unicode = unusedUnicode++;
}
this.useToUnicode = true;
}
"pageLimit": 5,
"skipPages": [1],
"type": "eq"
+ },
+ { "id": "lista_preliminar",
+ "file": "pdfs/lista_preliminar.pdf",
+ "md5": "4eff251319eeb660ba8a7a5cfac7787d",
+ "rounds": 1,
+ "link": true,
+ "pageLimit": 3,
+ "type": "eq"
}
]