Fixes searchRange calculation
This commit is contained in:
parent
42771159ca
commit
ab8270ae3a
@ -2224,21 +2224,6 @@ var IdentityToUnicodeMap = (function IdentityToUnicodeMapClosure() {
|
|||||||
})();
|
})();
|
||||||
|
|
||||||
var OpenTypeFileBuilder = (function OpenTypeFileBuilderClosure() {
|
var OpenTypeFileBuilder = (function OpenTypeFileBuilderClosure() {
|
||||||
function getMaxPower2(number) {
|
|
||||||
var maxPower = 0;
|
|
||||||
var value = number;
|
|
||||||
while (value >= 2) {
|
|
||||||
value /= 2;
|
|
||||||
maxPower++;
|
|
||||||
}
|
|
||||||
|
|
||||||
value = 2;
|
|
||||||
for (var i = 1; i < maxPower; i++) {
|
|
||||||
value *= 2;
|
|
||||||
}
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
|
|
||||||
function writeInt16(dest, offset, num) {
|
function writeInt16(dest, offset, num) {
|
||||||
dest[offset] = (num >> 8) & 0xFF;
|
dest[offset] = (num >> 8) & 0xFF;
|
||||||
dest[offset + 1] = num & 0xFF;
|
dest[offset + 1] = num & 0xFF;
|
||||||
@ -2274,10 +2259,15 @@ var OpenTypeFileBuilder = (function OpenTypeFileBuilderClosure() {
|
|||||||
|
|
||||||
OpenTypeFileBuilder.getSearchParams =
|
OpenTypeFileBuilder.getSearchParams =
|
||||||
function OpenTypeFileBuilder_getSearchParams(entriesCount, entrySize) {
|
function OpenTypeFileBuilder_getSearchParams(entriesCount, entrySize) {
|
||||||
var searchRange = getMaxPower2(entriesCount) * entrySize;
|
var maxPower2 = 1, log2 = 0;
|
||||||
|
while ((maxPower2 ^ entriesCount) > maxPower2) {
|
||||||
|
maxPower2 <<= 1;
|
||||||
|
log2++;
|
||||||
|
}
|
||||||
|
var searchRange = maxPower2 * entrySize;
|
||||||
return {
|
return {
|
||||||
range: searchRange,
|
range: searchRange,
|
||||||
entry: (Math.log(entriesCount) / Math.log(2)) | 0,
|
entry: log2,
|
||||||
rangeShift: entrySize * entriesCount - searchRange
|
rangeShift: entrySize * entriesCount - searchRange
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user