diff --git a/src/editor/useEditor.ts b/src/editor/useEditor.ts index f4143cc..05c8639 100644 --- a/src/editor/useEditor.ts +++ b/src/editor/useEditor.ts @@ -101,6 +101,8 @@ async function addImage(src: string): Promise { originY: "center", }); c.add(img); + // 背景图永远沉到最底层,否则会盖住先加进来的文字。 + c.sendObjectToBack(img); c.setActiveObject(img); c.requestRenderAll(); return img; diff --git a/src/types.ts b/src/types.ts index cc12ead..b84d37c 100644 --- a/src/types.ts +++ b/src/types.ts @@ -32,8 +32,27 @@ export interface CanvasSize { export interface FontEntry { /** 稳定 id,用于取文件;不要假设它等于文件名。 */ id: string; - /** 用于 CSS font-family 和界面显示的字族名,如 "阿里巴巴普惠体-H"。 */ + /** + * 排版字族名,用作 CSS `font-family`。来源是字体文件 `name` 表的 **nameID 16**, + * 缺失才退回 nameID 1。**不是注册表的值名**——那是安装程序起的标签,不是字体身份。 + * + * 反例(2026-09-04 实测):阿里巴巴普惠体 H 的注册表值名是「阿里巴巴普惠体-H」, + * nameID 1 是「阿里巴巴普惠体 H」,两者在浏览器里都解析不到; + * 只有 nameID 16 的「阿里巴巴普惠体」能解析。 + * + * `name` 表里同一个 nameID 有中英两份记录(langID 2052 / 1033)。 + * 取中文那份,没有中文再取英文——本机两者都能解析,中文在下拉里更好认。 + */ family: string; + /** + * 样式名,如 `Heavy` / `Bold` / `Regular` / `斜体`。来源是 **nameID 17**, + * 缺失才退回 nameID 2。用来在下拉里区分同族多字重,并映射到 `fontWeight` / `fontStyle`。 + * + * **退回 nameID 2 是有损的**:阿里巴巴普惠体五个字重的 nameID 2 全是 `Regular`, + * 只有 nameID 17 才区分得出 Heavy / Bold / Medium / Regular / Light。 + * 退回时同族多档会塌成一个,界面上要能看出这种情况。 + */ + subfamily: string; /** 字体文件绝对路径(仅供调试与配方记录,前端不直接读)。 */ path: string; /** 文件后缀,小写不带点:ttf / otf / ttc / woff2 … */