@@ -10,8 +10,10 @@ import { // eslint-disable-line
10
10
import parse from './parse.mjs' ;
11
11
import { encode } from './types.mjs' ;
12
12
13
- // I looked at https://github.com/mondeja/woff2otf/blob/master/src/woff2otf.js
14
- // but I'm using opentype.js infrastructure.
13
+ // I looked at
14
+ // https://github.com/hanikesn/woff2otf
15
+ // and https://github.com/mondeja/woff2otf
16
+ // but I'm doing it using opentype.js infrastructure.
15
17
function woff_to_otf ( buffer ) {
16
18
if ( buffer . constructor !== ArrayBuffer )
17
19
buffer = new Uint8Array ( buffer ) . buffer ;
@@ -82,47 +84,31 @@ function woff_to_otf(buffer) {
82
84
if ( ( offset % 4 ) !== 0 )
83
85
offset += 4 - ( offset % 4 ) ;
84
86
}
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];
87
+ const initialData = new Uint8Array ( out . length )
88
+ , buffers = [ initialData ]
89
+ ;
90
+ for ( let i = 0 , l = out . length ; i < l ; i ++ )
91
+ initialData [ i ] = out [ i ] ;
90
92
91
93
for ( let i = 0 ; i < numTables ; i ++ ) {
92
94
const tableEntry = tableEntries [ i ]
93
95
, table = uncompressTable ( data , tableEntry ) // => {data: view, offset: 0};
94
- // FIXME: we should rather just append the bytes to a new buffer
95
- // no need to parse into an array ...
96
- , p = new parse . Parser ( table . data , table . offset )
97
- ;
98
-
99
-
100
- offset = tableEntry . outOffset + tableEntry . length ;
101
- const padding = ( offset % 4 ) !== 0
102
- ? 4 - ( offset % 4 )
103
- : 0
96
+ , offset = tableEntry . outOffset + tableEntry . length
97
+ , padding = ( offset % 4 ) !== 0
98
+ ? 4 - ( offset % 4 )
99
+ : 0
104
100
;
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)
101
+ buffers . push (
102
+ new Uint8Array ( table . data . buffer , table . offset , tableEntry . length )
103
+ , new Uint8Array ( padding )
112
104
) ;
113
105
}
114
- const outFlat = out . flat ( ) ;
115
-
116
- // const result = new Uint8Array(buffers.reduce((accum, buffer)=>accum+buffer.byteLength, 0));
117
- // buffers.reduce((offset, buffer)=>{
118
- // result.set(buffer, offset)
119
- // return offset + buffer.byteLength
120
- // }, 0)
121
- // return result.buffer;
122
- const outArray = new Uint8Array ( outFlat . length ) ;
123
- for ( let i = 0 , l = outFlat . length ; i < l ; i ++ )
124
- outArray [ i ] = outFlat [ i ] ;
125
- return outArray . buffer ;
106
+ const result = new Uint8Array ( buffers . reduce ( ( accum , buffer ) => accum + buffer . byteLength , 0 ) ) ;
107
+ buffers . reduce ( ( offset , buffer ) => {
108
+ result . set ( buffer , offset ) ;
109
+ return offset + buffer . byteLength ;
110
+ } , 0 ) ;
111
+ return result . buffer ;
126
112
}
127
113
128
114
export {
0 commit comments