Make type 1 font program decryption faster.
Discard the values first so we don't have to slice the array.
This commit is contained in:
parent
252b9d5910
commit
02331f6e33
@ -5326,15 +5326,21 @@ var Type1Parser = (function Type1ParserClosure() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function decrypt(data, key, discardNumber) {
|
function decrypt(data, key, discardNumber) {
|
||||||
var r = key | 0, c1 = 52845, c2 = 22719;
|
if (discardNumber >= data.length) {
|
||||||
var count = data.length;
|
return new Uint8Array(0);
|
||||||
|
}
|
||||||
|
var r = key | 0, c1 = 52845, c2 = 22719, i, j;
|
||||||
|
for (i = 0; i < discardNumber; i++) {
|
||||||
|
r = ((data[i] + r) * c1 + c2) & ((1 << 16) - 1);
|
||||||
|
}
|
||||||
|
var count = data.length - discardNumber;
|
||||||
var decrypted = new Uint8Array(count);
|
var decrypted = new Uint8Array(count);
|
||||||
for (var i = 0; i < count; i++) {
|
for (i = discardNumber, j = 0; j < count; i++, j++) {
|
||||||
var value = data[i];
|
var value = data[i];
|
||||||
decrypted[i] = value ^ (r >> 8);
|
decrypted[j] = value ^ (r >> 8);
|
||||||
r = ((value + r) * c1 + c2) & ((1 << 16) - 1);
|
r = ((value + r) * c1 + c2) & ((1 << 16) - 1);
|
||||||
}
|
}
|
||||||
return Array.prototype.slice.call(decrypted, discardNumber);
|
return decrypted;
|
||||||
}
|
}
|
||||||
|
|
||||||
function decryptAscii(data, key, discardNumber) {
|
function decryptAscii(data, key, discardNumber) {
|
||||||
|
Loading…
Reference in New Issue
Block a user