From 036978b83798fa8d14164ec3278155312c494ec5 Mon Sep 17 00:00:00 2001 From: David Luzar Date: Fri, 3 Apr 2020 21:21:40 +0200 Subject: [PATCH] fix font not rendered on init in FF (#1197) --- src/components/App.tsx | 17 +++++++++++++++++ src/global.d.ts | 6 ++++++ 2 files changed, 23 insertions(+) diff --git a/src/components/App.tsx b/src/components/App.tsx index 53d63216e8..a9ecbfa01b 100644 --- a/src/components/App.tsx +++ b/src/components/App.tsx @@ -331,6 +331,23 @@ export class App extends React.Component { } } + // rerender text elements on font load to fix #637 + try { + await Promise.race([ + document.fonts?.ready?.then(() => { + globalSceneState.getAllElements().forEach((element) => { + if (isTextElement(element)) { + invalidateShapeForElement(element); + } + }); + }), + // if fonts don't load in 1s for whatever reason, don't block the UI + new Promise((resolve) => setTimeout(resolve, 1000)), + ]); + } catch (error) { + console.error(error); + } + if (this.state.isLoading) { this.setState({ isLoading: false }); } diff --git a/src/global.d.ts b/src/global.d.ts index b86bd183a6..9c54b70bd0 100644 --- a/src/global.d.ts +++ b/src/global.d.ts @@ -1,3 +1,9 @@ +interface Document { + fonts?: { + ready?: Promise; + }; +} + interface Window { ClipboardItem: any; }