From 7b9b474484d5a30a4da862f4868e138795fafbf6 Mon Sep 17 00:00:00 2001 From: Giorgio Garasto Date: Thu, 19 Dec 2024 03:08:52 +0100 Subject: [PATCH] Fix: custom fonts support on the Browser (#2898) --- src/file/fonts/obfuscate-ttf-to-odttf.ts | 7 +++++-- ...tf-to-odtts.spec.ts => obsfuscate-ttf-to-odttf.spec.ts} | 0 2 files changed, 5 insertions(+), 2 deletions(-) rename src/file/fonts/{obsfuscate-ttf-to-odtts.spec.ts => obsfuscate-ttf-to-odttf.spec.ts} (100%) diff --git a/src/file/fonts/obfuscate-ttf-to-odttf.ts b/src/file/fonts/obfuscate-ttf-to-odttf.ts index cf11ad0b89..0213ca7b50 100644 --- a/src/file/fonts/obfuscate-ttf-to-odttf.ts +++ b/src/file/fonts/obfuscate-ttf-to-odttf.ts @@ -2,7 +2,7 @@ const obfuscatedStartOffset = 0; const obfuscatedEndOffset = 32; const guidSize = 32; -export const obfuscate = (buf: Buffer, fontKey: string): Buffer => { +export const obfuscate = (buf: Uint8Array, fontKey: string): Uint8Array => { const guid = fontKey.replace(/-/g, ""); if (guid.length !== guidSize) { throw new Error(`Error: Cannot extract GUID from font filename: ${fontKey}`); @@ -17,6 +17,9 @@ export const obfuscate = (buf: Buffer, fontKey: string): Buffer => { // eslint-disable-next-line no-bitwise const obfuscatedBytes = bytesToObfuscate.map((byte, i) => byte ^ hexNumbers[i % hexNumbers.length]); - const out = Buffer.concat([buf.slice(0, obfuscatedStartOffset), obfuscatedBytes, buf.slice(obfuscatedEndOffset)]); + const out = new Uint8Array(obfuscatedStartOffset + obfuscatedBytes.length + Math.max(0, buf.length - obfuscatedEndOffset)); + out.set(buf.slice(0, obfuscatedStartOffset)); + out.set(obfuscatedBytes, obfuscatedStartOffset); + out.set(buf.slice(obfuscatedEndOffset), obfuscatedStartOffset + obfuscatedBytes.length); return out; }; diff --git a/src/file/fonts/obsfuscate-ttf-to-odtts.spec.ts b/src/file/fonts/obsfuscate-ttf-to-odttf.spec.ts similarity index 100% rename from src/file/fonts/obsfuscate-ttf-to-odtts.spec.ts rename to src/file/fonts/obsfuscate-ttf-to-odttf.spec.ts