Skip to content

Commit 13e53cc

Browse files
committed
Use array instead of trying to merge buffers.
1 parent 476887b commit 13e53cc

File tree

1 file changed

+26
-28
lines changed

1 file changed

+26
-28
lines changed

src/woff-to-otf.mjs

Lines changed: 26 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ function woff_to_otf(buffer) {
3232
for (let n = 0; n < 64; n++) {
3333
if (Math.pow(2, n) > numTables)
3434
break;
35-
max.splice(0, Infinity, n, Math.pow(2, n));
35+
max.splice(0, Infinity, n, 2 ** n);
3636
}
3737
const searchRange = max[1] * 16
3838
, entrySelector = max[0]
@@ -65,9 +65,9 @@ function woff_to_otf(buffer) {
6565
// });
6666
// p += 20;
6767
tableEntries[i].checksum = parse.getULong(data, pointerBase + 16);
68-
// offset += 4 * 4;
68+
offset += 4 * 4;
6969
}
70-
offset += numTables * 16;
70+
// offset += numTables * 16;
7171

7272
for (let i=0; i<numTables; i++) {
7373
const tableEntry = tableEntries[i];
@@ -82,20 +82,18 @@ function woff_to_otf(buffer) {
8282
if ((offset % 4) !== 0)
8383
offset += 4 - (offset % 4);
8484
}
85-
const buffers = []
86-
, initialData = new Uint8Array(out.length)
87-
;
88-
for (let i=0,l=out.length; i<l; i++)
89-
initialData[i] = out[i];
90-
buffers.push(initialData);
91-
85+
// const initialData = new Uint8Array(out.length)
86+
// , buffers = [initialData]
87+
// ;
88+
// for (let i=0,l=out.length; i<l; i++)
89+
// initialData[i] = out[i];
9290

9391
for (let i=0; i<numTables; i++) {
9492
const tableEntry = tableEntries[i]
9593
, table = uncompressTable(data, tableEntry) // => {data: view, offset: 0};
9694
// FIXME: we should rather just append the bytes to a new buffer
9795
// no need to parse into an array ...
98-
// , p = new parse.Parser(table.data, table.offset)
96+
, p = new parse.Parser(table.data, table.offset)
9997
;
10098

10199

@@ -104,26 +102,26 @@ function woff_to_otf(buffer) {
104102
? 4 - (offset % 4)
105103
: 0
106104
;
107-
// out.push(
108-
// ...p.parseByteList(tableEntry.length)
109-
// , ...Array(padding).fill(0) // new ArrayBuffer(padding)
110-
// );
111-
buffers.push(
112-
new DataView(table.data.buffer, table.offset, tableEntry.length)
113-
, new ArrayBuffer(padding)
105+
// buffers.push(
106+
// new DataView(table.data.buffer, table.offset, tableEntry.length)
107+
// , new ArrayBuffer(padding)
108+
// );
109+
out.push(
110+
...p.parseByteList(tableEntry.length)
111+
, ...Array(padding).fill(0) // new ArrayBuffer(padding)
114112
);
115113
}
116114

117-
const result = new Uint8Array(buffers.reduce((accum, buffer)=>accum+buffer.byteLength, 0));
118-
buffers.reduce((offset, buffer)=>{
119-
result.set(buffer, offset);
120-
return offset + buffer.byteLength;
121-
}, 0);
122-
return result.buffer;
123-
//const outArray = new Uint8Array(out.length);
124-
//for (let i=0,l=out.length; i<l; i++)
125-
// outArray[i] = out[i];
126-
//return outArray.buffer;
115+
// const result = new Uint8Array(buffers.reduce((accum, buffer)=>accum+buffer.byteLength, 0));
116+
// buffers.reduce((offset, buffer)=>{
117+
// result.set(buffer, offset)
118+
// return offset + buffer.byteLength
119+
// }, 0)
120+
// return result.buffer;
121+
const outArray = new Uint8Array(out.length);
122+
for (let i=0,l=out.length; i<l; i++)
123+
outArray[i] = out[i];
124+
return outArray.buffer;
127125
}
128126

129127
export {

0 commit comments

Comments
 (0)