Skip to content

Commit 5636e7e

Browse files
BalearicaConnum
authored andcommitted
Added wip kern support
1 parent b4c4b96 commit 5636e7e

File tree

4 files changed

+572
-3
lines changed

4 files changed

+572
-3
lines changed

docs/index.html

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ <h1>Free Software</h1>
7777

7878
<script type="module">
7979
import * as opentype from "/dist/opentype.mjs";
80+
globalThis.opentype = opentype;
8081

8182
const form = document.forms.demo;
8283
form.oninput = renderText;
@@ -203,11 +204,30 @@ <h1>Free Software</h1>
203204
el.innerHTML = message;
204205
}
205206

207+
globalThis.downloadFont = async (font) => {
208+
const fontArrayBuffer = font.toArrayBuffer();
209+
const blob = new Blob([fontArrayBuffer], { type: 'font/otf' });
210+
const link = document.createElement('a');
211+
link.href = URL.createObjectURL(blob);
212+
link.download = 'font.otf';
213+
document.body.appendChild(link);
214+
link.click();
215+
document.body.removeChild(link);
216+
};
217+
218+
globalThis.calcKern = (font, letter1, letter2) => (font.getKerningValue(font.charToGlyph(letter1), font.charToGlyph(letter2)));
219+
220+
221+
206222
function onFontLoaded(font) {
207223
if (window.font) {
208224
window.font.onGlyphUpdated = null
209225
}
210226
window.font = font;
227+
228+
window.fontArrayBuffer = font.toArrayBuffer();
229+
window.font2 = opentype.parse(window.fontArrayBuffer);
230+
211231
options = Object.assign({}, window.font.defaultRenderOptions);
212232
window.fontOptions = options;
213233

@@ -279,7 +299,7 @@ <h1>Free Software</h1>
279299
error = err;
280300
}
281301

282-
onFontLoaded(opentype.parse(isWoff2 ? Module.decompress(data) : data, { lowMemory: true }));
302+
onFontLoaded(opentype.parse(isWoff2 ? Module.decompress(data) : data, { lowMemory: false }));
283303
if ( !error ) showErrorMessage('');
284304
} catch (err) {
285305
showErrorMessage(err.toString());

src/opentype.mjs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -310,8 +310,12 @@ function parseBuffer(buffer, opt={}) {
310310
metaTableEntry = tableEntry;
311311
break;
312312
case 'gasp':
313-
table = uncompressTable(data, tableEntry);
314-
font.tables.gasp = gasp.parse(table.data, table.offset);
313+
try {
314+
table = uncompressTable(data, tableEntry);
315+
font.tables.gasp = gasp.parse(table.data, table.offset);
316+
} catch (e) {
317+
console.warn('Error parsing gasp table:', e);
318+
}
315319
break;
316320
case 'SVG ':
317321
table = uncompressTable(data, tableEntry);

0 commit comments

Comments
 (0)