From 4320b53d4ae9a5b9857eeb89819837adf61be60f Mon Sep 17 00:00:00 2001 From: xiaoqidun Date: Wed, 28 Oct 2026 22:07:10 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E5=AD=97=E4=BD=93=E5=A4=84=E7=90=86):=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=AD=97=E4=BD=93=E8=A1=A5=E5=85=A8=E8=AF=AF?= =?UTF-8?q?=E9=85=8D=E4=B8=8E=E5=85=B1=E4=BA=AB=E9=87=8A=E6=94=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/webui/ofdgo.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/assets/webui/ofdgo.js b/assets/webui/ofdgo.js index 4ae6794..934247e 100644 --- a/assets/webui/ofdgo.js +++ b/assets/webui/ofdgo.js @@ -4353,15 +4353,15 @@ async function validateRichText(item, model, width, fonts = []) { attempted.add(id); const original = (await callWASM("ofdgoEditorFont", id)).bytes; const [source] = await callWASM("ofdgoFontFaces", original); - if (!source?.postscriptName) throw error; + if (!source?.postscriptName || !source.familyKey) throw error; await fontManager.loadFaces(data => callWASM("ofdgoFontFaces", data)); - const candidates = fontManager.editorFonts().filter(font => !font.disabled && font.postscriptName === source.postscriptName); + const candidates = fontManager.editorFonts().filter(font => !font.disabled && font.postscriptName === source.postscriptName && font.familyKey === source.familyKey); let recovered; for (const choice of candidates) { try { const data = await readTextFont(choice, tab); const [face] = await callWASM("ofdgoFontFaces", data); - if (face?.postscriptName !== source.postscriptName) continue; + if (face?.postscriptName !== source.postscriptName || face.familyKey !== source.familyKey) continue; await callWASM("ofdgoCheckTextFont", data, model.runs.filter(run => run.format.font === id).map(run => run.text).join("")); recovered = { key: id, data, choice }; break; @@ -4376,8 +4376,9 @@ async function validateRichText(item, model, width, fonts = []) { rich.imports.set(id, recovered.data); rich.choices.set(id, recovered.choice); const previous = rich.faces.get(id); - if (previous) document.fonts.delete(previous); - rich.faces.set(id, face); document.fonts.add(face); + rich.faces.set(id, face); + if (previous && ![...rich.faces.values()].includes(previous)) document.fonts.delete(previous); + document.fonts.add(face); if (!editing.composing && !editing.saving) { rich.selection(); rich.render(); updateObjectControls(canvasEditor.selected); } } }