2
0
Эх сурвалжийг харах

Skip fonts inlining for library items

Marcel Mraz 1 жил өмнө
parent
commit
8ee20225cf

+ 1 - 0
packages/excalidraw/components/PublishLibrary.tsx

@@ -133,6 +133,7 @@ const SingleLibraryItem = ({
           exportBackground: true,
           exportBackground: true,
         },
         },
         files: null,
         files: null,
+        skipInliningFonts: true,
       });
       });
       node.innerHTML = svg.outerHTML;
       node.innerHTML = svg.outerHTML;
     })();
     })();

+ 5 - 6
packages/excalidraw/fonts/ExcalidrawFont.ts

@@ -3,7 +3,6 @@ import { LOCAL_FONT_PROTOCOL } from "./metadata";
 import loadWoff2 from "./wasm/woff2.loader";
 import loadWoff2 from "./wasm/woff2.loader";
 import loadHbSubset from "./wasm/hb-subset.loader";
 import loadHbSubset from "./wasm/hb-subset.loader";
 
 
-// import init, * as brotli from "../../../node_modules/brotli-wasm/pkg.web/brotli_wasm.js";
 export interface Font {
 export interface Font {
   urls: URL[];
   urls: URL[];
   fontFace: FontFace;
   fontFace: FontFace;
@@ -55,7 +54,7 @@ export class ExcalidrawFont implements Font {
           "base64",
           "base64",
         ).buffer;
         ).buffer;
 
 
-        const base64 = await ExcalidrawFont.trySubsetGlyphsByCodePoints(
+        const base64 = await ExcalidrawFont.subsetGlyphsByCodePoints(
           arrayBuffer,
           arrayBuffer,
           codePoints,
           codePoints,
         );
         );
@@ -72,7 +71,7 @@ export class ExcalidrawFont implements Font {
 
 
         if (response.ok) {
         if (response.ok) {
           const arrayBuffer = await response.arrayBuffer();
           const arrayBuffer = await response.arrayBuffer();
-          const base64 = await ExcalidrawFont.trySubsetGlyphsByCodePoints(
+          const base64 = await ExcalidrawFont.subsetGlyphsByCodePoints(
             arrayBuffer,
             arrayBuffer,
             codePoints,
             codePoints,
           );
           );
@@ -104,14 +103,14 @@ export class ExcalidrawFont implements Font {
   }
   }
 
 
   /**
   /**
-   * Tries to convert a font data as arraybuffer into a dataurl (base64) with subsetted glyphs based on the specified `codePoints`.
+   * Tries to subset glyphs in a font based on the used codepoints, returning the font as daturl.
    *
    *
    * @param arrayBuffer font data buffer, preferrably in the woff2 format, though others should work as well
    * @param arrayBuffer font data buffer, preferrably in the woff2 format, though others should work as well
    * @param codePoints codepoints used to subset the glyphs
    * @param codePoints codepoints used to subset the glyphs
    *
    *
-   * @returns font with subsetted glyphs converted into a dataurl
+   * @returns font with subsetted glyphs (all glyphs in case of errors) converted into a dataurl
    */
    */
-  private static async trySubsetGlyphsByCodePoints(
+  private static async subsetGlyphsByCodePoints(
     arrayBuffer: ArrayBuffer,
     arrayBuffer: ArrayBuffer,
     codePoints: ReadonlySet<number>,
     codePoints: ReadonlySet<number>,
   ): Promise<string> {
   ): Promise<string> {

+ 3 - 0
packages/excalidraw/fonts/wasm/hb-subset.loader.ts

@@ -1,3 +1,6 @@
+/**
+ * Lazy loads wasm and respective bindings for font subsetting based on the harfbuzzjs.
+ */
 let loadedWasm: ReturnType<typeof load> | null = null;
 let loadedWasm: ReturnType<typeof load> | null = null;
 
 
 // TODO: add support for fetching the wasm from an URL (external CDN, data URL, etc.)
 // TODO: add support for fetching the wasm from an URL (external CDN, data URL, etc.)

+ 1 - 1
packages/excalidraw/fonts/wasm/hb-subset.wasm.ts

@@ -1,5 +1,5 @@
 // GENERATED CODE -- DO NOT EDIT!
 // GENERATED CODE -- DO NOT EDIT!
-/* eslint-disable prettier/prettier */
+/* eslint-disable */
 // @ts-nocheck
 // @ts-nocheck
 
 
 /**
 /**

+ 3 - 0
packages/excalidraw/fonts/wasm/woff2.loader.ts

@@ -1,3 +1,6 @@
+/**
+ * Lazy loads wasm and respective bindings for woff2 compression and decompression.
+ */
 type Vector = any;
 type Vector = any;
 
 
 let loadedWasm: ReturnType<typeof load> | null = null;
 let loadedWasm: ReturnType<typeof load> | null = null;

+ 1 - 1
packages/excalidraw/fonts/wasm/woff2.wasm.ts

@@ -1,5 +1,5 @@
 // GENERATED CODE -- DO NOT EDIT!
 // GENERATED CODE -- DO NOT EDIT!
-/* eslint-disable prettier/prettier */
+/* eslint-disable */
 // @ts-nocheck
 // @ts-nocheck
 
 
 /**
 /**

+ 1 - 0
packages/excalidraw/hooks/useLibraryItemSvg.ts

@@ -18,6 +18,7 @@ const exportLibraryItemToSvg = async (elements: LibraryItem["elements"]) => {
     },
     },
     files: null,
     files: null,
     renderEmbeddables: false,
     renderEmbeddables: false,
+    skipInliningFonts: true,
   });
   });
 };
 };