1
0
Fork 0
mirror of https://github.com/mozilla/pdf.js.git synced 2025-04-20 15:18:08 +02:00

Merge pull request #16186 from Snuffleupagus/issue-16176

Support multi-byte ToUnicode entries, when using predefined CMaps (issue 16176)
This commit is contained in:
Jonas Jenwald 2023-03-21 22:17:18 +01:00 committed by GitHub
commit 9321758d91
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 27 additions and 4 deletions

View file

@ -3632,7 +3632,8 @@ class PartialEvaluator {
fetchBuiltInCMap: this._fetchBuiltInCMapBound,
useCMap: null,
});
const toUnicode = [];
const toUnicode = [],
buf = [];
properties.cMap.forEach(function (charcode, cid) {
if (cid > 0xffff) {
throw new FormatError("Max size of CID is 65,535");
@ -3641,9 +3642,12 @@ class PartialEvaluator {
// obtained in step (d), producing a Unicode value.
const ucs2 = ucs2CMap.lookup(cid);
if (ucs2) {
toUnicode[charcode] = String.fromCharCode(
(ucs2.charCodeAt(0) << 8) + ucs2.charCodeAt(1)
);
buf.length = 0;
// Support multi-byte entries (fixes issue16176.pdf).
for (let i = 0, ii = ucs2.length; i < ii; i += 2) {
buf.push((ucs2.charCodeAt(i) << 8) + ucs2.charCodeAt(i + 1));
}
toUnicode[charcode] = String.fromCharCode(...buf);
}
});
return new ToUnicodeMap(toUnicode);