缀形正式品牌标志:纟与彡 来自原参考图的“纟”偏旁与“彡”部件组合。左侧为棕色,右侧为绿色。
缀形汉字构形工作台
0.4.0

把结构写下来,再看它如何成形。

IDS 是原文;呈现、匹配与实验性轮廓都不会替你改写它。

离线编辑 · 本机保存

选中已有汉字再拆字;选中完整 IDS 再合字。结果可撤销。

可直接输入 IDS;IDC 插入、快捷键、导入与详情均可用键盘到达。字符身份与构形呈现分开判断
产品定义与验证方案

缀形成象 · 0.4.0

关于缀形

全标题:《缀形成象——品六书之精髓,析汉字之形趣》。简称「缀形」。这是用户选定的产品名称与创作口号,不宣称是古已有之的成语,也不表示本软件已覆盖或认证全部六书学理。

0.4.0 是私有 GitHub 版本,发布范围为品牌呈现、IDC/偏旁快捷输入与一等拆字/合字。源码从 0.3.1 基线迭代;冻结交付 HTML 0.4.0-rc.9 不是本版本的精确源码构建。原有 10 项 known-gate 锚点全部通过,固定 expectation 与 SHA 锁未放宽。软件许可证仍待维护者决定;本版本不增加开源授权。

0.4.0 提供默认折叠的构形观察、17 项 IDC SVG、编辑区一等拆字/合字按钮、Alt 临时候选、Alt+Shift O 符键位图、纯 Shift+F → 扌和 61 项可选偏旁。用户明确要求忽略本机 Rime 对 Alt+Shift 的旧配置推断;没有修改输入法配置。浏览器合成按键验证了 Alt+Shift+F 与空格确认,但真实输入法和实体键盘仍未验收。

Unicode 17.0.0 全量输入集已经实际枚举:核心区 20,992 字中 2,065 个有严格唯一直接 IDS、60 个多解、18,867 个缺失或未解析;TGH 一级 3,500 字中 412 个唯一、17 个多解、3,071 个缺失或未解析。当前数据表 11,336 行、11,008 个不同汉字。多种精确 IDS 可以分别安全合字;拆一个 Unicode 字时若有多个 IDS 形式则不猜,当前尚无候选选择器。集合审计完整不等于产品覆盖完整,字体、逐字渲染、导出和全量跨浏览器仍为阻断。逐字报告见 tests/full-coverage-tools/reports/。

以下保留 0.3.0 的功能合同与验证边界。11005 个目标是当前严格数据子集,不是全汉字或全拆法;展开到底仅至有来源定义的终端,不保证到最小笔画。多路径选择 UI 与任意快捷键重绑定仍未实现。

0.4.0 UI / IDC 快捷输入

界面方向曾比较三种不同构图:丝线与墨线构成的 IDS 工作台、带标本编号的研究桌、以书写节奏为核心的编辑页。0.4.0 采用工作台:源 IDS 与只读构形观察并列,状态紧邻结果,长许可与来源内容进入可展开详情。正式品牌标志由“缀”的纟偏旁与“形”的彡部件组合而成,沿用用户提供的原始轮廓并采用棕绿双色;独立 SVG 权威资产为 app/branding/zhuixing-logo.svg,应用页内嵌相同路径以维持离线单文件使用。赭色表示当前动作强调,鼠尾草色表示工作区与焦点;部件默认中性,不以颜色断言义符、声符或历史字源。

工作台显示应用版本 0.4.0。单字身份、IDS 结构和预览方式分开陈述。可视化与布局不改写 source,不认证字形规范性。单文件离线架构、内嵌字体/数据及第三方许可说明保留。

编辑器聚焦时按住 Alt,光标旁展开全部 IDC 的 SVG 候选;按候选标签对应的方向键或助记字母插入,松开 Alt、Escape、失焦或切换只读视图即收起。Alt+←/→/↑/↓ 对应 ⿰/⿲/⿱/⿳;其余符号也有快捷提示。编辑区里的 IDC 与菜单/观察区使用同一类 SVG 图形,源文本仍为真实 Unicode IDC。用户选中已有字时,画布“拆字”将唯一 IDS 写回并选中完整结果;选中完整 IDS 后“合字”输出 Unicode 字。Alt+[ / Alt+] 是对应快捷键,结果可撤销。Alt+Shift 显示 A–Z O 符键位图,单候选直插,多候选须用数字、空格或 Enter 确认;用户指定 obf 的默认高亮项为 扌。纯 Shift+F → 扌 仍是可关闭的试验快捷键。手机仍用 17 个 SVG 按钮和常见偏旁选择。全部17项均可写入源文;最后5项目前不支持几何布局,界面明确标示。AltGraph、IME、229、重复、只读预览和非编辑器焦点不触发。

插入面板另提供常见偏旁部首选择区:61 个可插入 Unicode 字符,支持按名称/字符搜索及类别筛选;按按钮写入当前源光标位置,仍走正常原文事务,不把部件变为隐藏图形节点。

0.3.0:递归构形与按需命令

部署状态以交付记录为准。默认仍直接输入,高级递归操作及“查找命令…”留在更多入口;设置仍按需打开。以下合同优先于后面的历史版本记录。

已实现

  • 本地严格数据包含11325条无注记原行,另保留既有6条及保/呆、佨、抱、衫逐项审核定义,共11336行、11008个不同字符。来源固定 MIT yi-bai/ids commit 267e3fb5d0a32de63128e67ef2f329277cc4013c,新增行的逐项出处见 app/recursive-ids-provenance.json。没有全库剥除地域/变体标记,不将数据集内结构关系称作全球字形或字源等价。
  • 直接候选和有界递归归一候选取并集,唯一时才显示对应Unicode;多候选不自动替用户选择。规范形展开有循环检测、深度/候选数量限制,缓存包含递归深度,结果不依赖数据行排序。源码仍唯一权威。
  • ⿰亻呆⿰亻⿱口木保默认呈现保保保,复制、JSON与源码模式仍保留原输入。选区“递归合到底”才把正文真改为保保保,一次事务可撤销;“从叶端合一层”把⿰亻⿱口木先变⿰亻呆,下次再变保,不跨过尚未合成的operator子树。合到底仍可使用完整结构映射,不要求每个内部节点都有独立Unicode。
  • “拆一层”和“展开到底”分别展开一次或循环展开至本数据集能确认的叶子。多拆分路径、循环、超预算整事务保持原文。未知对象、普通混排保留;已有VS/IVS、ZWJ、Emoji_Modifier、ZWNJ与Unicode Grapheme_Extend作为附着单元保留,不能把修饰从原字迁到新末叶。含无关emoji的普通混排仍可转换其他安全对象。
  • operator内部的空白/不合法部件不是正常叶子,不完整或非法结构不因递归命令变成另一串;根级普通文本可原样混排。输入4000 UTF16上限、树深32、递归解析节点2048;每轮输出重新解析验证,超限返回原事务。查找展开预算为16深、最多32规范候选;这些是能力边界,不表示源文字丢失或未编码。
  • 匹配Unicode的显示与导出分开表述:当前原生字体显示对应字符时,“字体依赖SVG”输出同一字符的text并保留original sourceIDS元数据;不将原IDS的组装paths冒充匹配字完整轮廓。当前这一路纯轮廓导出禁用,即使局部构型素材齐全。关闭Unicode显示后可按原构型能力导出原构型,名称与状态明确。没有扩入整套字体。

命令系统

CommandSystem保存稳定ID、标题、别名、分类、上下文范围及执行器白名单。已迁移24项:四种递归拆合、三个视图、正文撤销/重做、项目打开/保存/恢复、结构检查/复制/两类SVG导出、设置打开/导入/导出/撤销/重做、动效示例/诊断、快捷提示。按钮与面板调用同一dispatch;现有编辑器快捷键通过ID桥接同一执行器,提示中的相关动作名也取自命令目录。视图设置控件继续使用唯一Store,不另存命令状态。

查找命令只查询,不执行;可按名称/别名/分类/ID过滤。无选区、只读、IME、不可用对象给出禁用原因。面板不夺取编辑器/设置或文件选择器焦点,重建自己的列表仅恢复自己的焦点;Escape关闭回到入口。只读仍禁止正文改变,项目打开维持先确认文档导航的旧保护。

执行结果区分completed、unchanged、unavailable、failed与awaiting-input。打开项目/设置文件选择器只表示等待用户选文件,不宣称已经导入。原异步revision、取消与过期结果保护保留;用户激活要求的picker同步触发,没有等待后台工作后再假点。

任意命令快捷键绑定、冲突编辑器、全局命令热键尚未实现。0.3.x 已沿用可选拆合绑定;本地 UI 候选另有固定 IDC 编辑器快捷键映射,未增加任意绑定或系统级全局热键。模态关闭、筛选清空等局部界面行为不伪装为正文事务。

验证与已知限制

候选最终18套330项通过:主程序及递归审计16套309项,独立纯引擎13项及反例8项。包含48项完整事件链受控宿主;这些仍不是浏览器实机测量。新增11005目标字符均由官方UnicodeData17逐项核对分配(包含First/Last范围),15区块只用于说明已核集合,不以区块推断分配;原9字身份保留,U+3134B负例不误标。

  • 维护中的受控DOM/WAAPI宿主实际执行主示例显示、按钮/键盘/命令面板合到底、每步/整笔undo、视图只读、焦点恢复与两种保IDS导出。同一测试不是原生浏览器事件、字体排版、中文输入法或OS文件选择器验证。
  • 独立递归反例审计保留修复证据:原有296条单步跳层归零、直接/递归候选冲突不猜、缓存深度顺序、输出树预算、修饰符、非法结构、所有数据行可解析。修复前源码快照和原候选测试日志随包,不删除失败证据换取全绿。
  • 字形视觉差异基线见独立10000例规模工作,本候选不以算法matched或SVG ready断言与任何网站/字体完全一致;此前光学护栏和复杂度回退继续使用。未知字体可能仍显示缺字框,但不影响源操作。
  • 无真实浏览器/IME/触屏/读屏/下载验收,未发布,不承诺动效丝滑。只用离线内嵌数据和代码,无外部API。

0.2.1:默认即用,按需展开

首屏移除编辑视图和编辑单位下拉;两项仍在设置页。默认行内编辑不显示冗余模式说明,仅只读/源码模式显示必要提示。空输入不显示映射诊断。功能与默认值不变。统一命令系统及可配置快捷键是下一轮设计,见源码包 COMMAND-SYSTEM-DESIGN.md,尚未全面实现。

缀形成象产品定义与验证方案

产品名称:缀形成象(简称缀形)
定位:离线优先、以真实 IDS 文本为核心的极简汉字构形编辑器。
本文合并产品探索和竞品分析两轮材料;需求、设计建议、用户故事与市场假设分别表述。产品承诺是待实现和验收的目标,不代表本次演示已具备全部能力。公开项目能力和许可应以对应版本及来源核查为准。

1 产品价值与范围

1.1 要解决的问题

古籍、族谱、地方志、姓名及特殊专业材料中,可能存在当前输入法或字体无法处理的字形。最初故事中的学者先查字典、再检索 Unicode、再试输入法,均未找到所需字,最终只能写“此处原字为某字形,暂以图片代替”。现实中应分别检查输入法找不到、字体缺字、地区字形不符和真正未编码,不能把这些原因合并判定。研究者常用图片代替,但图片难以按结构检索、复制后继续编辑,也容易丢失部件来源和构形过程。即使画出了字,后续修改、引用、交换和长期复现仍然困难。

结构组字的目标不是单次“输入后生成 SVG”,而是让一个构形经历完整生命周期:书写结构 → 解析 → 呈现 → 展开 → 修改 → 撤销 → 导出 → 保存 → 未来恢复。对象同时保留源表达式、结构关系和具体数据生成的视觉结果。

例如,研究者输入 ⿰木水。这是演示性结构表达式,不保证对应规范汉字。数据充分时可获得预览、导出 SVG,并把原表达式交给同事;发现左侧部件有误时直接修改。若缺少绘制数据,则保留表达式、说明缺失,不能假装生成了正确字形。

能力 普通文本工作流中的常见情况 产品目标
输入已编码字符 支持 保持普通文本输入
表达未编码字形结构 说明文字、图片或专用工具 直接书写 IDS
将结构转为视觉结果 通常需外部工具 对支持的数据生成字形
修改构成 重做图片或寻找原设计文件 展开源表达式,局部修改
保存构形来源 往往不完整 保存来源、依赖、版本和修订

1.2 正式产品定义

产品计划采用离线优先 PWA,以一个主要输入区域承载自然文本与 IDC 输入。解析器将源文本转为结构模型,数据适配层解析部件依赖,渲染器根据可用字形数据生成 SVG。可逆编辑不是从 SVG 猜测结构,而是恢复一直保留的原始 IDS。

第一阶段不替代完整字体编辑器、不建设公共 Wiki 或云端协作平台,不承诺任意 IDS 都可生成规范汉字,也不承诺每份表达式对应唯一字符。首要目标是证明:文本驱动的构形及可逆编辑,能够降低真实任务成本。

1.3 术语与责任边界

概念 含义及边界
IDC 描述部件相对结构的真实 Unicode 字符;快捷键仅为输入方式
IDS 用 IDC 与描述成分形成的结构序列;并非完整字义、字源或唯一字形定义
未编码字符 没有对应标准 Unicode 编码的字符;不能仅由显示失败判定
缺字 当前字体或软件无法正确显示所需字符;可能已有编码
异体字形 同一字符在地区、规范或文献场景中的不同形式
KAGE 数据及引擎 具体笔画、几何及部件引用数据与绘制机制;不是 IDS 本身
SVG 一次渲染的视觉输出;不天然包含可恢复的完整构形语义
项目文件 保存构形、来源、版本、修订与必要依赖的可编辑资产
私用区 PUA 依赖使用者约定解释的码位;不保证跨系统语义一致,也不应作为对象唯一身份

IDS 描述构件关系,不规定唯一绘制结果;相似结构不等于文字学上的同一个字。系统支持 IDC 不意味着规范要求它必须重建字形。相关 Unicode 规范版本与原文引用见第 12 节。2026-10-20 核查发现 Unicode 18 的章节可读,但版本页存在状态矛盾;不据此断言发布日期或完整实现最新标准。

2 不可混淆的产品原则

2.1 真实文本优先

逐字输入、快捷键插入、复制粘贴,最终都产生相同的 IDC 字符序列。IDC 可选择、复制、粘贴、退格删除、中间修改、撤销和重做。

不采用“快捷键创建隐藏左右节点,再把部件塞入节点”的独立命令系统。快捷键只产生普通字符插入事务,不改变表达式语义。相同有效 IDS,在同一解析器、渲染器、数据版本和配置下,应产生相同结构和构形结果。

原提案的 Ctrl+方向键 只保留为待测试候选,不写死默认映射:它可能与按词移动光标、系统或输入法操作冲突。组合输入期间不触发构形快捷键;移动端基本操作不能依赖物理键盘。

2.2 源文本与结构模型各有权威范围

源文本是构形表达的权威输入;构形树是解析后的权威结构模型。 二者不能悄悄覆盖彼此,也不能把节点 ID、缓存或隐藏状态当作源文本的替代品。

⿰⿱宀女木 的外层是左右结构,左侧为 ⿱宀女,右侧为 木:

⿰
├── ⿱
│   ├── 宀
│   └── 女
└── 木

纯文本重新解析也能实现局部修改,不应声称“没有树就做不到”。结构模型的价值是清楚关联源范围、SVG、局部重绘、历史、光标和缓存。节点按需保存稳定 ID、类型、操作符、子节点、源文本范围、语法状态、渲染状态和版本/缓存标识。

2.3 完整 可渲染 合格是不同状态

⿰氵青 可以语法完整,却缺少 KAGE 定义、递归依赖或适合目标地区的部件。不能只用一个“成功”覆盖全部阶段。

独立维度 状态示例 需要回答的问题
语法 未完成、完整、非法 操作符和操作数关系是否成立
数据 齐全、缺失、版本异常、引用异常 绘制所需依赖是否可用
渲染 未渲染、成功、失败 是否实际生成视觉结果
质量审查 未审查、待确认、已审查、已知问题 是否符合目标风格、规范和用途

结构成功不等于渲染成功,渲染成功不等于规范合格;近似结果应标明近似之处。结构完整但数据缺失时,应显示例如“结构完整,但缺少一个部件的绘制数据”,并继续保存源文本。

3 编辑与呈现体验

3.1 一个主输入区 必要时解释

默认打开即可输入,不设强制欢迎页、教程、模式切换或常驻候选栏。普通文字保持普通文本,不完整 IDS 保持可读。避免把部件选择、结构按钮、树面板、属性、候选与导出工具全部铺开,让用户为了写一个字操作复杂软件。

极简不等于无反馈。用户需要知道为何未生成、缺什么、如何展开和导出。桌面悬停或光标定位时可显示原始 IDS、部件、数据状态及操作入口;触屏使用点击或等效操作。解释按需出现,而不是要求用户理解内部引擎。

能力分三层:

  1. 核心:输入、解析、呈现、局部修改、展开、撤销、SVG 导出。
  2. 必要解释和恢复:原 IDS、部件、数据来源/状态、展开入口。
  3. 后续高级流程:项目文件、数据修订、批量构形、多字形比较、字体生产、协作与长期版本。不全部放进常驻主界面。

3.2 完整与提交分离

用户输入 ⿰,状态为缺两个操作数;输入 ⿰人,仍缺一个;输入 ⿰人木,结构完整。未完成时可以用极细虚线、淡化提示或轻微占位说明等待,但不生成错误的残缺字形。

“完整”由语法决定;“提交为字形呈现”由交互策略决定。用户可能马上改部件,因此不应一完整就强制替换为难编辑的 SVG。可等待短暂停顿、允许明确提交、保留文本、随时展开,并在继续输入时根据光标及结构重判。

原材料提出约 300 毫秒提交延迟,作为实验起点而非最终标准;需测试输入速度、表达式长度和不同 IME。

3.3 动画服务理解而非游戏化指标

建议从 150–200 毫秒局部转换试验:字符与部件向中心靠拢,文字淡出,SVG 从略小尺寸显现,光标仍在合理位置。可用于说明结构完成、内层完成、缺操作数或局部修改影响。

动画必须短促、局部、可打断。连续输入更安静,不整页抖动、不强制完整播放,不增加音效、分数、连击、排行榜或奖励系统。动画不是数据更新的前提;被打断后直接进入稳定状态,不能遗留半透明节点或把新字符插错位置。

3.4 输入法 光标 撤销先于动画

不能只监听 keydown。需结合 beforeinput、input、compositionstart、compositionupdate、compositionend、选区和组合状态。规范只是基础,不能替代真实浏览器、系统和中文输入法测试。

主要风险:Alt 组合可能被浏览器、操作系统或输入法截获,尤其 Alt+方向在部分浏览器用于页面导航。候选层只在按住时出现,keyup、Escape、失焦和只读切换都要收束;组合输入期间必须过滤,中间编辑时渲染更新 DOM 还必须保留源光标,不能移到末尾。真人 IME、焦点和手感仍需实测;输入正确性优先于视觉效果。

建议验证顺序:普通文本 → 中间移动光标 → 正确插入/删除 → IME → 粘贴/替换 → SVG 后逻辑选区恢复 → 撤销/重做 → 动画。

撤销围绕用户理解的编辑事务,而非 DOM 或渲染步骤。已呈现字形应能恢复可编辑表达式,但自动视觉合并不一定单独占用一条撤销记录;输入、结构修改、展开与呈现的历史粒度仍需明确测试。不能完全依赖复杂 contenteditable 的浏览器默认历史。

4 解析 架构与数据治理

4.1 增量输入模型

解析器必须处理嵌套、中间编辑、删除操作符、不完整粘贴和结构更换,而不是只解析已完成字符串。

输入 预期解释
⿰ 缺两个操作数
⿰木 缺一个操作数,可继续输入
⿰木水 左右结构完整
⿰⿱宀女木 嵌套结构完整
修改内层 ⿱ 为 ⿰ 更新受影响结构,保留外层与其他文字

IDC 不只有左右、上下二元结构,也包括包围、三元和规范版本相关的一元形式。实现应明确采用的 IDS 语法与 IDC 集合,逐个定义元数,不把所有操作符当成等待两个操作数。只支持一部分时,应声明子集,而不是声称完整规范支持。

推荐数据流:文本事务 → 确定变更范围 → 更新解析树 → 失效受影响缓存 → 解析部件依赖 → 局部渲染 → 恢复逻辑光标。稳定节点 ID、版本与缓存用于减少重算,不限制用户直接编辑文本。

4.2 IDS KAGE SVG 分层

IDS 表达关系,KAGE 数据及绘制策略决定具体几何,SVG 记录结果。同一 IDS 可因数据、部件定义和风格不同产生不同字形。保持适配层与渲染接口稳定,有利于替换引擎和支持多风格,而不要求用户重新学习语法。

SVG 中的 data-ids 等元数据只是附加信息;外部软件可能移除它,不能据此承诺任意 SVG 可恢复结构。

4.3 三层数据治理

层 职责
原始来源 原记录、版本、来源标识和引用关系;不混入无记录人工修改
目标字形 按大陆或其他目标体系筛选、替换、修订,记录每次修改
构形映射 IDS 操作数到具体定义的映射;处理别名、缺失、引用链和版本差异

解析器不负责来源选择,渲染器不负责规范审查。不能把 GlyphWiki 全部数据直接当作已审查大陆字形全集。不同体系的部件即使能画出,也可能比例、连接、穿插或风格不协调。

正式支持的部件/结果应记录:来源、数据版本、目标字形体系、依赖关系、人工修订、审查状态、已知问题。不要没有定义测试集、标准和统计方法就宣称“准确率 97%”。

可从 30 个有意挑选的高风险样本开始,而非只测容易成功的常用字:复杂笔画、位置变体、递归引用、跨源差异、缺失/版本异常、容易混淆日本与大陆字形的样本。目标是找出自动处理、人工修订及暂不支持的边界,不是做漂亮成功率。

4.4 许可证独立核对

分别建立代码、IDS 结构数据、部件数据、字体和导出产物的许可清单。开源不等于任何组合与重新分发均被允许。

2026-10-20 核查确认 @kurgm/kage-engine 仓库明确 GPL v3;采用时仍须核对具体版本及分发义务,不能因浏览器可运行就认定适用所有发布模式。CJKVI-IDS 不同文件可能有不同许可;GlyphWiki 数据、引用内容、KAGE 引擎与最终字体也需分别审核。核查结果以第 12 节及配套核查记录为准。

4.5 保留精修出口而不提前复制字体软件

纯 IDS 无法表达所有轮廓和笔画细节。例如 ⿰女木 的左部倾角不符合目标文献时,用户可能要改一条笔画。模型可预留部件定义、局部位置调整、轮廓修订和数据版本,但第一版不必实现完整画布、控制点或大量几何参数。

5 离线 保存与交换

5.1 离线能力等级

等级 定义 产品判断
L1 已缓存界面、脚本等,页面可离线打开,部分数据缺失 早期原型目标,不能代表完整离线
L2 初始化后,解析器、渲染器、支持的字形及全部依赖本地可用;离线编辑、生成、导出 第一版合理正式目标
L3 项目独立保存、重开、跨设备导入,保留原 IDS 和版本及必要复现信息 本地优先的进一步目标

只缓存 HTML/JS 不够。断网验收必须实际完成编辑、修改、生成、导出和恢复支持范围内的项目。联网更新数据不能悄悄改变旧项目含义。

5.2 三种输出不要混为一谈

  1. SVG:用于显示、嵌入、文档、排版和视觉讨论;应有明确几何边界和兼容性。它不是标准 Unicode 语义字符,不天然参与全部文本搜索或输入,各软件支持也不同。
  2. 结构化项目:继续编辑与长期复现。建议保存原 IDS、项目结构/稳定节点 ID、部件引用、来源和数据版本、应用及渲染器版本、可选几何修订、必要 SVG 快照、生成环境和格式版本。
  3. 字体或 PUA 输出:后续专业需求,需要字体生成、码位分配和互操作设计,不是 SVG 导出的免费附属能力。

仅保存远程部件名称不足以保证几年后能重现;需定义依赖打包或可恢复的版本化引用策略,并遵守数据许可。项目对象保留稳定身份,不以 PUA 码位作为全球唯一标识。

应用版本、渲染器版本、字形数据版本、项目格式版本应分别记录。恢复时优先复现原结果,缺旧数据时说明原因;改用新数据必须提示可能变化。第一版用本地项目文件验证价值,不需要云账号与复杂项目平台。

6 六个核心用户故事

以下均为设计叙事,用于检验假设,不是已经完成的访谈或已证实的需求。

6.1 林先生首次上手

林先生是构形爱好者,不懂字体设计,曾因部件面板与选项繁多放弃工具。他打开一个输入区,输入 ⿰木水,停顿后看到字形;悬停查看 IDS,展开后把 木 改为 人,再次观察。验证首次成功时间、能否独立开始、是否理解仍可编辑,以及是否区分缺数据与未完成。

6.2 陈女士局部纠错

陈女士为教学材料输入 ⿱宀女,发现上方部件不对。她展开并替换 宀,其他文字与外层结构不变。验收目标是生成后的修改不比第一次输入复杂得多;展开依赖保存的源记录,而非图像识别。

6.3 赵先生多路径输入

赵先生粘贴同事发送的嵌套 IDS,次日使用快捷键输入同一表达式。他期待解析、结构关系和视觉输出相同。固定引擎、数据与配置,比较逐字、快捷键和粘贴路径;不一致即缺陷,不能要求用户改变习惯。

6.4 王先生遇到数据缺失

王先生输入未编码古文字形的完整 IDS,却无法预览。系统明确“结构完整,但缺少部件”,他可保留记录、稍后补数据或换已有定义。有近似输出时标注限制。验证用户能否定位问题,而不是反复删字猜测语法错误。

6.5 李女士断网工作

李女士在家完成初始化后到图书馆整理材料。网络中断,她仍能编辑已支持构形、重开本地项目并导出 SVG。网络恢复可检查数据更新,但不能自动改旧项目。此故事验证的是完整任务,不只是页面启动。

6.6 三年后的接收者

研究者保存 SVG、IDS 和版本,三年后交给另一人。接收者能了解原始表达式、所用数据、是否可复现及升级可能变化,并继续编辑。验证可交换构形记录的价值,但不据此提前建设协作平台。

7 用户与市场假设

7.1 六类相关市场

类别 用户任务 典型项目/替代方案 产品关系
构形查询 一个字由什么组成 CJKVI-IDS、HanziCraft 知识和入口参考
IDS 检索 哪些字有某种结构 YAIST、IDS 数据库 上游工具及相邻工作流
字形绘制编辑 调部件、笔画和轮廓 KAGE Editor、GlyphWiki 直接技术及任务竞品
字体设计 管理大量字形并生产字体 FontForge、FontLab、FontCreator 专业替代与下游
学习研究 理解、记忆和分析汉字 HanziCraft、研究工具 潜在用户来源
未编码/特殊字形处理 表达、显示、保存、分享 自定义字体、PUA、图片/SVG 核心机会假设

公开工具生态存在,不等于证明独立付费市场存在;此分析不是对所有商业、封闭或中文互联网产品的穷尽审计。差异化应靠完成任务的成本验证,不能声称市场上无人覆盖类似环节。

7.2 七类潜在用户

用户 主要可能价值 必须验证的限制
汉字文化爱好者 拆字、组合、即时反馈 新鲜感之后是否持续创作
古文字与文献研究者 准确结构、来源、追溯、长期编辑、文档可用 需求频率、准确性与付费意愿
语言学和汉字研究人员 部件分布、结构记录、批量导入/搜索/导出 数据互通可能比动画重要
教育工作者 部件关系和 IDS 互动实验 结构不是字源,练习符号不是规范字
字体与文字设计师 初始构形、减少重复操作、导入精修 是否真节省时间、轮廓质量与来源
非遗 地方文献 特殊字符整理人员 姓名、地方用字和专业材料的稳定记录传递 SVG 无法独自解决文献规范与字体兼容
独立创作者 小说、游戏、世界观和符号系统创作 不一定追求大陆规范,更重速度和自由

第一轮材料的目标人群概括为爱好者、研究教学、字体工作者;第二轮进一步细分为七类。建议验证优先级:①未编码字形创作者及特殊字符整理者;②研究者与文献工作者;③爱好者与教育工作者。这是任务验证顺序,不是市场规模排名或已选定付费客群。

7.3 任务替代比功能名称更重要

用户可能只想让地方志中的字正常打印并被别人查看。若换一个覆盖更广的字体、输入法或字符检索就能解决,不应要求他学习构形工具。只有需自行构造且未来还要改的任务,才更可能体现产品价值。

输入法、字符搜索、扩展字体、PUA 字库、插入图片和专业绘图都是任务替代。必须验证“字形如何进入真实文档,并在他人环境中继续可用”,而非只展示编辑器内效果。

8 竞品与差异化

下表归纳原材料的公开资料判断,不是当前全部功能的完整审计。产品版本、功能和许可均须结合官方来源复核;不将“非核心”解释为“完全不支持”。

8.1 逐项分析

项目 已有定位及能力概述 对结构组字的启示与边界
CJKVI-IDS 多来源汉字结构描述、编码约定及许可;例如 明 可分析为 ⿰日月 是结构知识来源,不是绘图引擎;描述可多解、包含实体引用或源差异。查到 ⿰木某 后,编辑器应能继续修改,而非止于数据库没有答案
HanziCraft 汉字层级分解、部件、拼音和释义等学习功能;如 想 的 相 与 心 借鉴逐层解释,但不做百科或常驻树面板。查询既有字与改结构生成可编辑对象不同;学习进度等具体功能待官方核查
YAIST Yet Another IDS Search Tool,静态 Web IDS 查询;原材料描述结果可含 GlyphWiki SVG、码点、笔画、区块和异体信息 ⿰木子 是在现有集合搜索;编辑器则可由 ⿰木水 改 水 为 火、再改上下关系。搜索与构造的默认任务不同,但功能可能趋同,不能断言独占优势
KAGE Editor 图形字形编辑;原材料列出选择/移动笔画和部件、控制点、尺寸、拆分、搜索插入、撤销重做、手写、网格、风格及快捷键 最直接竞品;图形精修已有基础,不能把“能编辑”当新发明。文本 ⿰人木 改 ⿰女木 或更省操作,但要用实测证明。Chrome/Firefox/Safari 测试声明和具体版本待核
GlyphWiki Wiki 式字形数据生态,KAGE 编辑及 SVG/字体生产流程 借鉴可追溯部件和维护资产,不急做账号、公共库、审核、分支与协作。先个人创建,再长期保存,最后多用户积累
文津宋体 大字符集宋体项目;原材料称结合思源宋体及衍生、GlyphWiki 和修改版 KAGE,并关注大陆字形 可参考技术与数据工程,不能证明编辑器市场。核对实际版本、覆盖与许可;它是字体而非交互编辑器。生成能力、比例风格、规范审查仍需分开
FontForge 开源字体编辑、轮廓与编码管理 适合完整字体流程;例如 ⿰某某 这样的单个特殊字形构造任务可能不需要这么大工具,但专业需求不能被轻视
FontLab 专业字形设计、格式转换和 OpenType 能力 完整字体生产的替代方案或下游精修;不能用极简工具宣称替代全部能力
FontCreator 字体创建、修改及多格式工作流 同属专业替代;原材料中文域名的官方性待核,优先核对开发商来源

8.2 竞争维度矩阵

项目 结构查询 图形编辑 文本构形角色 未编码字形潜力 完整字体生产
CJKVI-IDS 强/数据 非核心 描述数据 依赖其他工具 否
HanziCraft 强/学习 非核心 非核心 非核心 否
YAIST 核心 非核心 IDS 查询条件 受数据与功能限制 否
KAGE Editor 部件相关操作 核心 以图形编辑为主 自定义字形数据 非主要定位
GlyphWiki 字形与部件生态 支持相关流程 依赖数据和工具 相关基础设施 可参与生产生态
FontForge / FontLab 非主要定位 核心 非核心 字体制作可实现 核心
结构组字目标 适度支持 第一版有限 核心编辑对象 核心目标之一 不作初期核心

不必每项胜过竞品。关键差异待验证:输入到结果步骤、中间状态、局部修改、展开撤销、可靠保存和离线。结构组字摆脱的是对“已有字符目录”的完全依赖,不是对绘制数据的依赖。

9 机会 路线与非目标

9.1 七项后续机会

  1. 构形草稿纸/实验室:快速比较 ⿰木水 与 ⿱木水,降低试验成本。“十秒钟试验”是故事,不保证十秒生成规范字;比较多候选可先用历史快照/项目副本,而非立即增加候选栏。
  2. 可分享的构形对象:同事拿到 IDS、SVG、来源、版本、限制与依赖,能继续编辑,而不只是看图片。三小时制作的特殊字形,三个月后仍有修改价值。
  3. 教学实验:学生输入 ⿰日月 再改上下结构,学习关系、语法和构形/字形区别;可研究教学练习文件,不开发首版课程、积分或学习管理系统。
  4. 可追溯实验记录:记录初始表达式、部件替换、导致最终结果的变更和参与数据;轻量撤销与长期版本是不同需求,可共用事务基础但不等于立即造版本控制平台。
  5. 结构化符号创作:小说/游戏作者组合汉字式部件、左右和包围结构,导出到地图、道具、界面。自定义符号不自动成为标准汉字或获得编码。
  6. 一组字的共享关系:研究共同部件、局部结构、影响范围、缺数据和多版本;先建立模型,等批量真实需求出现再考虑图谱界面。
  7. 数据质量维护工具:定位缺失引用、待审规范、旧部件和版本差异;普通用户看简洁状态,维护者用独立审核工具,不把后台全部放入主界面。

9.2 首版闭环与实施次序

首版先验证一个字形的生命周期:输入 IDS → 解析 → 可用数据生成 SVG → 修改部件 → 撤销 → 展开再编辑 → 导出 SVG → 保存项目 → 离线重新打开。

路线建议:

  1. 证明真实文本驱动比现有工作流更直接。
  2. 证明生成后仍可稳定修改和恢复。
  3. 建立来源清楚、质量受控的部件数据。
  4. 再依据真实需求进入研究、教学、特殊字符处理及字体生产。

暂不追求覆盖所有汉字或自建完整数据库。拥有一万个可生成字形,不代表编辑和恢复可靠。

9.3 原方案决策表

原想法 结论 落地约束
单输入框 保留 默认主界面,必要反馈不省略
IDC 真实文本 保留 不可被隐藏命令取代
快捷键输入 修正后保留 仅插入字符,避开 IME/光标冲突
完整后自动 SVG 修正后保留 完整与视觉提交分离
俄罗斯方块式动画 克制保留 理解优先,可打断,不抢编辑控制
未完成保留文本 保留 轻量提示,不画错误残缺字形
构形树 精确定义后保留 源输入与结构模型各自负责
仅靠操作符栈 不作核心架构 明确解析完整/未完成/非法输入
直接打包 GlyphWiki 修正 来源、许可、版本、依赖和规范审查
只有 SVG 输出 扩展 本地可恢复项目也重要
最后处理 IME/光标 否决 早于动画验证
完整结构立即强制合并 否决 交互策略不等于语法规则
同一套隐藏状态驱动全部 否决 文本事务与显式模型分层
PWA 能打开即离线 否决 按真实离线任务验收

9.4 明确不承诺

  • 任意 IDS 都生成符合大陆规范的字形,或每份结构对应唯一汉字。
  • 任意外部 SVG 自动恢复原始 IDS,或所有软件保留 SVG 元数据。
  • 首版支持所有罕见部件、完整字体生产或复杂云协作。
  • 不同数据版本始终得到相同视觉结果。
  • 自动生成即经过规范审查;IDS 即字源、字义或权威识别结果。
  • 为动画牺牲输入、光标、恢复与错误解释。

10 研究 验收与风险

10.1 三类访谈

对象 具体问题 判断用途
最近一年遇过缺字的人 最近何时、当时任务、如何解决、耗时、是否交付、长期保存要求、字体不兼容或无法再编辑经历 查真实频率和替代成本,不问空泛“喜不喜欢”
研究者和文献整理者 如何记录罕见字、保不保留结构、是否比较方案、论文/数据库用途、最耗时及最不满意环节 区分质量规范与记录/快速导出的优先级
字体设计师和文字创作者 是否接受文本构形、哪些可自动组合、哪些必手调、轮廓能否作草稿、SVG/项目能否接工作流 判断专业补充价值而非新颖程度

10.2 三种产品实验

实验 设计 观察
A 文本驱动 输入 IDS,即时解析和渲染 理解表达式/字形关系,能否修改,需要何种提示
B 增加自动合并反馈 A 加短动画与未完成提示 是否帮助理解、等待过长、妨碍连续输入、对 IDS 新手有无帮助
C 优先可逆编辑 A 加展开、局部修改和撤销 纠错速度、生成后编辑、嵌套理解

实验用于区分用户真正重视自动生成、动画还是可逆性。若可逆性更重要,不为动画延后编辑;若动画确实改善理解且无干扰,再保留。

10.3 观察任务与六项指标

至少观察 五位不熟悉项目的人,不急于指导,让他们完成左右结构输入、改部件、撤销、展开、SVG 导出和断网重开项目。反复找不存在按钮意味着反馈缺失;不懂为何失败意味着状态解释不足;怕改坏意味着可逆性没传达;把快捷键当特殊命令意味着文本模型表达失败。

指标 测量方式
首次成功时间 从打开到首个受支持表达式的可用预览或成功导出,预先统一成功定义,不以页面加载计
修改成本 改一部件的步骤、耗时、错误;是否重输、丢光标、破坏外层
结构可逆性与恢复 展开、修改、重合并、撤销重做、保存重开
失败可解释性 用户能否自行区分未完成、非法、缺部件、引用异常、渲染失败
离线完整性 初始化后断网完成构形、修改、保存、重开、导出
数据可信度 来源、版本、依赖、修订和审查是否可读、可解释

这些指标应与任务替代方案对照,而非只数功能。支持更多 IDC 但修改要重输,不一定胜过支持较少结构而编辑稳定的产品。

10.4 需求验收清单

  • [ ] 真实 IDC 可直接输入、选择、删除、复制、粘贴和中间编辑。
  • [ ] 同一最终 IDS 的逐字、快捷键、粘贴路径语义及固定条件输出一致。
  • [ ] 操作符元数和支持语法明确;不完整/非法/完整分别识别。
  • [ ] 缺数据、版本/引用异常、渲染失败、未审查不混为成功。
  • [ ] 原 IDS 始终保存,呈现后可展开,无需从图像猜测。
  • [ ] 局部修改尽量保持外层、其他文字和逻辑选区。
  • [ ] IME 组合不被快捷键/动画破坏;连续输入不丢字、不跳光标。
  • [ ] 撤销重做语义清楚,视觉转换不会制造不可理解的历史。
  • [ ] 动画短促局部可打断;断后稳定,无半透明残留。
  • [ ] SVG 边界正确、导出可用,项目保存与 SVG 明确分开。
  • [ ] 项目记录版本及依赖,能恢复;无法复现时说明原因。
  • [ ] 断网实测支持范围内全闭环,而非仅启动页面。
  • [ ] 桌面与触屏可完成基本任务,必要解释有可达入口。
  • [ ] 目标字形质量与许可按来源、版本分别审核。

10.5 五类失败风险

风险 应对
有趣但无持续需求 测真实工作、频率和重复使用,不只看演示反应
结构正确但字形差 分离解析、渲染和质量;高风险样本、目标体系审查
只生成不能编辑 可逆性与恢复纳入首版核心验收
极简导致不理解 最少但明确的分层状态、解释和恢复入口
数据来源许可不清 分代码/结构/部件/字体建清单,逐版本审核

11 商业方向与长期价值

以下都是待访谈和实际使用验证的假设,不能推导可靠市场规模、付费转化率或收入预测。

方向 可能价值 风险与前提
个人免费工具 免费构形、预览、保存和 SVG,降低试用门槛、积累反馈 缺字可能低频,持续使用不足
专业研究工作流 数据管理、项目归档、批处理,减少真实时间成本 不靠人为限制基础构形收费,需验证付费点
机构团队部署 可控数据版本、项目管理、特定字形集 需明确需求、维护能力及授权体系,不能凭想象认定成熟市场
字体与数据服务 整理部件、审核字形集、构形数据处理 维护成本和质量责任更高

先验证真实任务,再判断用户愿为编辑体验、专业数据、批量工作流还是机构维护付费,不急着锁定订阅。

长期壁垒不应只是单输入框、快捷键、150–200 毫秒动画或 KAGE/SVG 集成。更值得积累的是:可靠的嵌套编辑和中间光标模型;可追溯的来源/版本/依赖;可移植项目格式;用户真实研究和创作资产;明确范围内经过审查的目标字形数据。大陆字形支持需要长期数据工作,不是换一个数据源即可完成。

12 来源与待核事项

以下保留原材料的重要来源并移除跟踪参数。引用链接不是对当前状态的自动背书;正式采用前需核查具体版本、许可证和表述。配套的外部核查记录可补充或修正本节,不应静默把旧假设改成事实。

12.1 标准与浏览器

  • 原材料引用的 Unicode 18.0 核心规范第 18 章:页面可读,版本状态有矛盾:2026-10-20 核查时 latest 跳转 18.0.0,但版本主页同时残留 preliminary draft 提示。不能据此下发布日期定论,也不能把链接判成不存在。
  • Unicode L2/12-081 IDS 文件:历史讨论资料,不能不加区别地当成现行规范。
  • Unicode IRG PPv18:IRG 语法/流程相关资料,需核对与采用 Unicode 版本的关系。
  • W3C Input Events Level 2:输入事件参考;组合事件还需对应事件规范及设备实测。
  • PUA:原材料提到 Unicode 与微软文档但未给具体地址;待补对应官方引用,不编造链接。

12.2 引擎与结构数据

核查重点:引擎接口、真实渲染能力、GPL 版本、各数据文件许可、非 Unicode 实体引用、多种结构表达和再分发条件。

12.3 竞品与生态

12.4 2026-10-20 核查增补

本轮技术核查详见配套 research.md,范围是解析、编辑边界和部分许可,并未重做全部竞品或市场调查。

  • Unicode 17 与本次可读的 Unicode 18 第 18 章,对以下 17 个 IDC 元数一致。Demo 固定使用此表,不宣传实现全部最新版字符属性。
  • 一元:⿾(水平镜像)、⿿(旋转)。三元:⿲、⿳。二元:⿰ ⿱ ⿴ ⿵ ⿶ ⿷ ⿸ ⿹ ⿺ ⿻ ⿼ ⿽ ㇯。
  • ⿼ 是右包围,⿽ 是右下包围;㇯ 以原部件及待移除部件为两个操作数,语法完整不代表可做出有意义的减法。不以覆盖白块或重叠冒充减笔。
  • 严格 IDS 叶节点范围需按规范处理表意字符、部首、CJK 笔画 U+31C0–U+31E5、私用字符、全角问号;不把 ASCII、emoji 和普通标点悄悄当严格部件。〾 是序列外近似指示符,不是另一种一元 IDC。支持自由创作扩展时需明确声明。
  • 五个操作符 ⿼ ⿽ ⿾ ⿿ ㇯ 的引入可参见 UTC 173 决议 173-C18/C19。另见 Unicode 17 第 18 章、Unicode latest 和 Unicode 18 版本页。
  • 混排的 ⿰木木木 应是一个完整 IDS 加普通 木。空格/换行可作为明确边界;不得删除不支持字符后伪造成功。源范围应与 textarea 的 UTF-16 偏移一致,词法按码点遍历;深度/长度上限是应用限制,不是 Unicode 规定。
  • CJKVI-IDS 官方 README:ids.txt 来自 CHISE,遵其条款;ids-ext-cde.txt 非直接来自 CHISE,不受同一 GPLv2 限定,不等于公有领域;其他数据标 GPLv2。数据含 CDP 实体及地区后缀,不能整列当纯 Unicode IDS。
  • GlyphWiki 当前官方许可页读取失败,许可未完成核实:待核入口。不能断言全部数据 CC0;本次 Demo 不内嵌该数据。

12.5 尚未解决的决策

  • 最终 IDC/IDS 支持范围和规范版本;混合普通文本的边界与解析恢复策略。
  • 默认快捷键、提交延迟、动画参数和撤销粒度。
  • 具体字形数据源、依赖打包大小、许可证和大陆规范审核方法。
  • 项目格式及旧版数据无法复现时的迁移流程。
  • SVG 在目标文档/字体软件的真实导入行为。
  • 优先客群的重复使用需求、付费意愿和可持续商业模式。

13 对外简述

结构组字让你直接写出一个字的构成。输入 IDC 和部件,系统理解它们之间的关系,在数据允许时生成字形。你可以展开、修改、重新生成、导出 SVG,并保存为未来还能继续编辑的构形记录。

它的目标不是让用户更快得到一张汉字图片,而是让汉字结构成为可以直接书写、理解、反复修改、重新生成和长期保存的对象。是否能形成独立市场,仍需真实用户任务、竞品对照和持续使用数据证明。

14 Demo 版本与正式产品的边界

14.1 版本记录

  • 0.1.0:2026-10-20 首次交付的双视图构形工作台。按维护者本轮指定,正式归入 0.1.0;最初导出项目中 appVersion 曾写为 1.0.0,0.1.1及0.1.2仍兼容这些 formatVersion=1 的项目,不擅改已保存文件。

  • 0.1.1:同日按维护者反馈迭代为极简首屏与真实行内编辑。输入与字形在同一 contenteditable 画布排版,不用透明文本层叠加预览冒充所见即所得。

  • 0.1.2:同日增加真实构形位置驱动的可中断合成动效、选中还原IDS、155个字体轮廓(合计172部件)和12个传统IDC的内嵌字体子集。

  • 0.1.3:在不推迟源事务的前提下,自适应调整呈现等待及动效时长;直接键入/删除按节拍加速,连续IME确认提供单向加速证据,长确认作为单次批量处理。

14.2 0.1.6 的实现与边界

能力 当前实现 不可推导的承诺
首屏 弱化品牌及版本、单编辑区域、插入与更多入口 不声称复制了未经核对的 TouchAI 页面或品牌设计
行内呈现 精确匹配优先呈现已有Unicode字;否则完整可排布IDS用轮廓SVG或明确的字体回退组合;点击、触摸或实际选中时还原源文修改 未完成/未知布局保留文字;缺件但可排布时用明确字体依赖预览,不假造轮廓
源数据 唯一权威 source,DOM 和字形为派生视图;源范围采用 UTF-16 不是从任意外部 SVG 识别 IDS
解析与绘制 17 IDC 元数;12 常用布局;17旧自绘简笔+155个Noto宋体轮廓,共172部件 不是完整 Unicode 属性验证器、KAGE 集成或规范字体引擎
编辑与选区 点击原位展开;键盘及跨atom选区还原IDS,拖选在指针释放后展开;复制/剪切得到原始IDS 不用DOM夹具替代真实触屏、选区及输入法矩阵验收
合成动效 默认开启,部件从源文位置进入真实构形方框;按实际编辑节奏缩短等待/时长,极速用短非空间确认;更多菜单有关闭、三档基础节奏和边界辅助 不是粒子特效冒充解析,不承诺已实机验证丝滑
删除 退格删除源串末尾一个grapheme;Ctrl+Backspace仅在折叠光标紧邻atom末尾时整组删除;有选区按选区删除 不承诺所有设备原生删除事件完全一致
IME 组合期间保留原生 DOM 控制;旧会话回调不得结束新会话 状态机测试不等于真实中文输入法验收
保存与导入 formatVersion=1及旧demo-strokes-1保持兼容;新dataVersion=demo-components-2;过期导入不覆盖新输入 无长期任意版本迁移或跨设备实时同步
本地草稿 保存失败提示;异常旧草稿保留;检测其他页面写入后暂停自动覆盖 浏览器存储不是跨设备事务,也不是唯一备份
交付与离线 单 HTML,无运行网络依赖;文档内嵌并可下载 不是可安装 PWA;实际断网重开仍列设备验收项
质量 字体轮廓来自本机Noto Serif CJK SC 2.003,OFL1.1;整体组合仍是未规范审核的几何示意 不作为出版成品或“大陆规范字形”
信息披露 树、诊断、项目、数据边界与文档按注意范围展开 不把全量调试字段常驻首屏

约束:源文本最多 4000 个 UTF-16 单位,嵌套最多 32 层,项目最大 200 KB;展开与收起不新增文本历史,约80–300ms停顿后更新呈现(自适应初值),源编辑同步提交。拖放暂禁用,以纯文本粘贴代替,防止 HTML 或 SVG 结构污染源文。

14.3 设计与开发依据

本项目采用极简默认界面、按需披露、输入路径等价和真实状态原则;保持领域模型与 DOM 适配边界、单一变化源、异步归属与故障处理。

源模型、DOM偏移转换、浏览器事件与CompositionMotion分别组织。动画仅得到展示权限,不写source、selection或history;其几何与Core布局共用来源。旧17条部件路径逐字节保留,新增字体轮廓由构建脚本从固定SHA256字库提取。接管评估是Agent代码审阅,不代表维护者已经完成审美审批或真实接管。

14.4 动效、来源与实际验证

  • 稳定结果不依赖动画结束才成立。继续输入、选中、展开、撤销、新一轮转换、滚动、resize、页面隐藏或离开会取消旧展示,旧异步回调不能清除新会话。系统减少动态效果、缺少WAAPI或批量超过18个叶部件时直接显示稳定结果。
  • 源码仍是真实文本而非透明输入层。12个传统IDC内嵌最小WOFF子集;本机字体不含五个新IDC,不能保证它们在所有设备中显示。未知部件但布局已支持时采用明确字体回退;不支持布局仍保留原文并说明原因。
  • 字体来源为 Noto CJK官方仓库,版本、范围、SHA256见源码包的components-provenance.json,OFL全文随单HTML和源码包保留。新增宋体与旧简笔笔风不同,这是兼容旧绘制契约的代价;组合不等于规范汉字。不以形似猜测Unicode映射。
  • 48项核心、22项行内模型/DOM夹具、16项兼容/几何/动画生命周期、5项受控宿主、20项可注入时钟的自适应节奏、18项已有字/删除、6项实际keydown handler受控夹具、20项选区命令、19项完整输入流程受控宿主及15项字体回退检查通过。已用本机Inkscape实际栅格化并检查4个引擎SVG,轮廓可见、布局未裁切;这不是应用运行截图或动画验收。
  • 真实浏览器、IME、触屏、跨浏览器选区/剪贴板、下载和断网重开仍未验收。
  • 动效没有完成外部视频参考的逐帧对照验收。

14.5 自适应交互(0.1.3)

语义先行:源编辑、历史、光标和选区仍立即更新。自适应只改变“何时呈现字形”和“用多久展示归位”,不把动画完成当提交条件;新输入立即取消旧动画,不排队、不补播。

  • 直接单码点键入与删除按成功且确实改变source的事件采样。相邻间隔指数平滑,至少两个有效间隔才推断快输入;停顿按真实时间连续衰减,不把重新开始的第一个字突变为慢速模式。
  • compositionupdate及组合中的input不采样。一次有效compositionend最多记录一次确认,不把确认文本长度伪装成多次按键。短间隔连续确认只提供加速证据;长候选词选择时间不是慢打字样本。一次确认达到4个码点时作为批量,直接呈现稳定结果。
  • 粘贴、示例插入、导入和撤销不贡献打字速度证据,断开键入/确认采样链;既有速度倾向只随时间自然衰减。格式操作、未变化的source和过期IME回调不计入。
  • 手动利落/自然/慢看是基础偏好,而非阻碍快编辑的最低时长。关闭动效、减少动态效果、隐藏/离页状态优先;自适应不能将它们重新开启。

初始策略值(工程参数,尚未实机校准):正常等待300ms、最短80ms;自然动效620ms,按手动档缩放后最多压缩82%,非静态时最低80ms。95ms以内间隔视为快端、450ms为慢端,至少3个间隔且均值达到65ms以内可静态;350ms恢复宽限后以700ms时间常数平滑恢复,1600ms以上间隔不连接为同一键入链。间隔平滑权重0.35,加速0.65、直接键入慢向放松0.2;IME只取加速方向。

InputPacing是可注入时钟的纯展示策略,不持有source/selection/history写权限;CompositionMotion通过duration注入消费结果,inline-app仍拥有语义事务。确定性单元测试验证阈值、取消资格、停顿恢复和IME分类,不证明某设备的帧率、输入延迟或“丝滑”。真实验证应观察帧间隔/掉帧及输入反馈延迟分布,不能用单一平均FPS代替体验证据。

14.6 0.1.4 已有字、字面与逐字退格

  • 普通中文和结构字使用同一字号。向量atom为1em×1em,无额外左右间距,基线偏移-.12em;仅等比裁去原SVG的7..93边缘留白,不拉伸笔画。动效目标按同一viewBox换算。已有Unicode字使用编辑器原字体、原生行内baseline;字面光学大小仍受设备字体影响,不能把em盒相同说成每笔bbox完全一致或已经实机验收。
  • 已有汉字匹配默认开启、独立于动效;菜单提供默认未勾选的“关闭已有汉字匹配”。只登记yi-bai/ids公开MIT数据中核对的6条:⿰亻二→仁、⿰亻尔→你、⿰日月→明、⿰亻木→休、⿰女子→好、⿱田力→男。原数据部分尾随默认字形标记.;本版逐条登记plain IDS别名,不对未知数据泛化删标记、不按外形猜字、不处理地区歧义。
  • 数据固定commit为267e3fb5d0a32de63128e67ef2f329277cc4013c,原始行、文件SHA及来源在unicode-matches.provenance.json,MIT许可在IDS-DATA-LICENSE.txt及单HTML内。来源:https://github.com/yi-bai/ids 。这不授予zi.tools全站字体/图片许可;未集成站点服务或执行第三方代码。
  • 展示替换不改source。复制、JSON、撤销、点选或跨字选中还原都仍是IDS。匹配允许在部件轮廓缺失时展示已有字;如“你”的尔尚无内嵌路径,0.1.6关闭匹配后仍用字体回退呈现结构,而非伪造轮廓。未匹配且可绘制仍用SVG。0.1.4已知字采用静态成字,这是默认命中时看不到动效的明确原因;0.1.5改为源部件文字归入结果字槽并轮廓确认,不伪装规范笔画变形。
  • 普通Backspace在字后删除source末尾一个grapheme(通常一个汉字),嵌套结构也不删整棵末子树;结构不完整时保留原位源码。Intl.Segmenter可用时,组合符与变体选择符一起删除;缺少该API时降级处理代理对、Mark、变体选择符、emoji modifier及ZWJ链,但不承诺完整Unicode grapheme规则。Ctrl+Backspace只有折叠光标正好在atom末尾才整组删除,其余普通文本词删除交给浏览器。有选区、前向Delete及IME保持原语义。
  • 尺寸问题已列入回归范围;尚未获得0.1.4真实浏览器/输入法/字体布局运行证据;新增测试为纯模型与源码契约,不等于键盘派发、视觉或音视频复刻验收。

14.7 0.1.5 选区命令、用户叙事与源保护

“显示已有字”仍默认开,仅派生视图;“选区合为Unicode”则真的改source。两者不混称转换。“选区拆为IDS”只用已核6字表的无歧义反向关系,不声称唯一字源;不提供删除布局符的“拆成部件”,也不猜“亻二”应左右还是上下。

  • 等价按钮位于更多菜单的选区命令区。选择多个完整对象可以批量处理,非命中文字、空格、换行、标点逐字保留。只选中半个结构或跨结构边界不完整时不改,不偷偷扩选;完整外层中的已核完整子结构可逐级合字,未完成/不支持的对象不猜。菜单焦点移出编辑区时保留源选区;转换后保留正反选择方向,一次显式命令一条可撤销事务。
  • 选区真实Unicode+VS/组合符不是裸字。显式拆合、自动合字、显示匹配共用相邻修饰符资格检查;标记、变体选择符、ZWJ不能从原叶字迁移到另一字符。选区切断代理对或紧邻附着修饰符时不执行。反向表若多个IDS对应同一字,反向转换保守留原文。
  • 快捷键默认不绑定,可选Alt+Shift+D/J或Ctrl+Alt+D/J(D拆,J合),仅编辑器焦点内且有效选区、确有修改时拦截。IME、AltGraph、重复按键、Meta及不符组合都交还宿主。不占用Ctrl/Cmd+C/V/Z等关键键;各OS/输入法可能已有自定义快捷键,遇冲突可选另一档或用等价按钮。设置只在当前页面会话生效。
  • 新开关“自动将刚输入的完整IDS转为Unicode(改变原文,可撤销)”默认关闭,与显示和动画开关独立。开启动作不追溯现有材料。只在真正insertText或IME确认完成后,处理光标前刚完成、完整且在已核表中的根结构;粘贴、导入、示例、删除、撤销、render和settle不触发。IME组合中不提交真转换。输入和自动转换分别记录历史,一次undo可还原完整IDS,不会被延时呈现再次自动合回。
  • 历史仍为当前会话最多100条,不是永久来源账本;保存转换后的Unicode项目只保存当前source,重开不恢复旧undo。研究材料应在转换前保留项目副本。超过4000UTF16上限的拆字事务在提交前失败,源文不变。
  • USER-SCENARIOS.md与selection-acceptance-candidates.json含跨领域假设故事和34项候选验收,不是访谈结果或全量已测声明。对应纯模型/受控宿主证据见测试脚本和test-results.txt;原生输入法、触屏、读屏、快捷键冲突仍待设备验收。

14.8 0.1.5 动效可见性诊断与修复

确定性根因:0.1.4动效preferences.enabled本来就是true,且不读写持久化设置;但capture明确排除了Unicode匹配,因此默认命中仁/明等时从未启动动画,不能归咎于用户关闭。其他抑制包括系统减少动态效果、页面隐藏/pagehide、无WAAPI、极速duration=0、批量预算和源DOM位置不可测。本轮没有真实浏览器画面证据,不能推断实际设备究竟命中了哪一条。

  • Unicode显示也进入真实输入→settle→capture→play链:源叶部件的文字从测得位置归入最终字槽并淡出,真实Unicode结果始终已存在;轮廓短确认表达“形成结果”。这不是把自绘几何笔画变成规范字体笔画。SVG路径归位保持原流程;继续输入/选择/撤销仍立即取消。
  • 极速策略的duration=0现在表示“无空间移动”,而不是完全无痕:110ms纯opacity轮廓确认,不移动光标/布局,不排队。位置暂不可测也退到短确认。超过18叶或18个新对象的批量、减少动态效果、隐藏页和无WAAPI仍静态。参数是工程初值,未做实机感知与帧性能校准。
  • 更多菜单提供按需“查看动效状态”,说明关闭、系统偏好、无可新收起结构、预算降级、坐标降级或正常模式;不把诊断常驻首屏。native DIV/P/BR输入树的位置映射通过DOM适配器反查源偏移,避免只遍历顶层子节点而抓错位置。
  • “演示一次合成”使用独立且有标签的小样例,从⿰亻二归入仁;采用同一个动效模块,不改编辑器source/selection/history。演示按基础节奏(非当前极速压缩)运行,但服从关闭、reduced-motion、页面可见性与宿主能力;编辑输入、源选区改变或设置切换均可取消。按钮聚焦本身不误取消演示。
  • 完整输入流程受控夹具确实执行了维护中的inline-app事件链,覆盖typing向量/Unicode、0.1.4零动画对照、原生块结构、菜单选区undo/redo、自动真转、IME单次确认、演示与取消、110ms无transform反馈、关闭与reduced-motion。它比源码正则更接近交互链,但仍不是浏览器键盘派发、真实Range排版、IME或视觉验收,不能声称已实测丝滑或复刻Alan Becker/3Blue1Brown影片。

14.9 0.1.6 功能优先的字体回退

“尔”的路径缺失属于需要明确降级的资产覆盖问题。模型根因是0.1.5的atom资格只允许已核Unicode匹配或纯路径ready;完整且支持布局但缺路径时,也被阻止合成呈现。现在将“结构能排布”和“资产具有纯轮廓”分离:动画能力不再成为功能前提。

  • Core.status继续如实返回missing资产状态,新增previewKind区分outline/font/source;Core.layoutLeaves成为纯轮廓、字体回退和动效共用的布局几何来源。格式、rendererVersion、dataVersion及旧项目兼容规则不变,不把系统字体存成伪造路径依赖。
  • 已核⿰亻尔仍显示你,不依赖尔路径;未核但完整可排布的⿰木尔等进入字体回退atom。它是原IDS的可逆显示,不推断Unicode身份。缺件时采用全叶字形的静态SVG text预览,用本机Noto Serif CJK SC/serif字体,等比放入部件槽位;不是纯轮廓,也不是规范字形。某设备可能仍没有罕见字字体,外观/缺字取决于字体覆盖,不能保证跨设备一致。
  • 未完成、非法字符、未支持IDC布局和带不明附着修饰符的结构仍保留原文,不用回退假造解析或布局。点选、选区展开、复制IDS、保存、退格、撤销及合字命令不依赖动画;已核Unicode转换继续使用同一小表。
  • 正常反馈让源叶文字归入其真实布局槽,再以虚线轮廓确认字体回退;下方简短文字同时说明“字体回退/缺轮廓/依赖本机字体”,不只靠颜色传达,也不每次弹toast。稳定字体预览在动效期间不隐藏。极速或位置测量降级沿用短非空间确认;手动关闭、reduced-motion、隐藏、无WAAPI或API抛错时保持同一个可编辑稳定结果,不把偏好解释为失败。
  • 纯轮廓SVG导出继续受missing资产限制。另设“导出字体依赖SVG”,包含静态text、精确IDS元数据、portableOutlines=false标记及字体依赖说明,无脚本、事件属性、外链或外部字体资源。旁边说明换设备可能不同;文件名带font-dependent,不冒充纯轮廓。用户源字符和元数据统一XML转义,包括<、>、&和引号。
  • 本轮15项字体回退模型/转义/导出契约检查,以及完整inline-app宿主新增6项(总19项)覆盖未知结构与已核你两条路径、关闭匹配、off/reduced/hidden/API抛错、未支持布局、选中复制/编辑undo和实际导出handler的Blob内容。总计189项。另用标准XML解析器读过两个实际输出及转义压力样例;这只证明静态XML有效,不是字体视觉、浏览器Range、真实输入法或动效丝滑验收。
  • 0.1.5原件已备份;0.1.6不混入独立光学校正研究,也不提前塞入下一轮视图/操作单位/设置系统。用户叙事和候选矩阵依然是设计材料,不自动升级为全量通过。

14.10 0.2.0:功能优先的视图、单位、设置与本地光学引擎

本节是当前版本合同;14.2–14.9保留各历史版本的实现记录。优先级为基本组合功能 > 字形呈现 >> 动效。原文是唯一权威,字符身份、构形布局、呈现素材、动效能力分别判断。此次新增能力提升到0.2.0,不再按补丁版本表达功能增长。

14.11 0.4.0 本地 UI 候选:完整动效默认

维护者希望首次使用即可看到真实构形动效。本地候选默认启用完整动效,即使操作系统设置为“减少动态效果”也不自动静态化;设置中的“关闭构型动效”由用户显式控制。系统请求减少时,按需诊断会说明系统偏好与应用选择;若用户要静态呈现,可在设置关闭动效。页面隐藏、离页、缺少 Web Animations、超出叶数预算、位置不可测、API 失败与极速节奏等仍使用现有安全降级,稳定结果不依赖动画完成。

  • 视图轴:行内编辑live(默认)、只读预览preview、源码source。单位轴:构型原字符簇ids-grapheme(默认)与完整呈现字display-glyph。源码固定字符簇并暂停自动真转换,只读禁所有正文编辑但允许复制、导出和明确确认后的打开/恢复项目。未保存保护先提示备份,加载后仍只读;过期导入请求不能覆盖当前正文。

  • 左右、Shift选区、前后删除共用source派生边界;非空范围保持有效部分选区,不扩大为整棵IDS。普通退格与Delete对称。平台word键先按词移动再落到单位边界,不再有旧版仅Ctrl退格整atom的特例。原生竖直/行导航不假装已经跨平台校准;IME与AltGraph不被命令劫持。Intl.Segmenter优先,fallback只保证已有VS/mark/ZWJ子集,不宣称完整Unicode字素算法。

  • 点击结构字:构型模式原位展开,完整呈现字模式落在字首/尾;不猜视觉子部件光标位置。源码始终原样显示。所有atom退出逐个Tab序列;编辑器、模式选择、命令按钮、设置、搜索、导入/导出都有标准键盘入口。菜单移焦不丢源选区;预览返回编辑保留之前编辑选区。真实屏幕阅读器、触屏、原生文件选择器和系统下载尚未验收。

  • 单一Settings Store管理9项:view、unit、Unicode显示匹配、自动真转换、动效、速度、边界辅助、拆合快捷键、实验光学校正。所有控件从schema派生,搜索涵盖名称/键/说明/别名;默认分组、单项重置、全量重置预览、独立撤销/重做、配置JSON导出与导入差异预览。设置JSON不是项目JSON;格式版本1、UTF8 64KiB上限,重复解码键/危险键/未知键/版本/错误类型/访问器原子拒绝,缺省键补默认。历史最多50条,与正文历史分离。

  • 设置保存至本地,失败时仍本次生效并显示未保存,不宣称持久化成功。跨页设置只提示重新加载,不暗中覆盖当前Store;读取、预览、应用各有request/revision资格。重新打开文件框、取消、Escape或设置变化使旧异步结果失效。IME中设置请求延后,仅最后一次生效,可取消,先提交真实输入法文本再切模式。导入设置或打开自动真转换都不追溯重写旧材料。

  • OpticalGlyph已实际内嵌离线运行,不依赖API。已许可固定Noto Serif CJK SC路径及掩码179项,新增乃;不是复制字统网路径,也不声称全面达到其排布。原旧172组件/17自绘路径保持,用于几何与旧项目兼容。光学可关闭,能力不适用回退旧几何/字体。已知Unicode优先呈现仍由6条已核映射控制,SVG不是编码猜测。

  • GlyphRenderer.plan是编辑器、纯轮廓导出和动效叶目标的共同产物,返回svg/frame/leaves,光学viewBox为0 0 100 100,不能套旧7 7 86 86裁剪。动效使用同一paint/transform;Unicode命中仍走文字归槽与短确认,不假装笔画形变。光学已有的仁/你等轮廓不被旧Core缺件状态挡住。字体依赖SVG与纯路径导出继续明确区分。

  • 主程序交互预算:最多18叶、深8进入光学冷计算,其余合法结构直接几何/字体回退,不排队重试。光学能力边界16深/1024UTF16/255节点与主编辑32深/4000UTF16不同,不得缩小基本文本能力;极小投影geometry-limit回退,不把零scale丢墨迹报成功。新输入尚未settle时先呈现源文,不提前做无用光学冷算。预算是初始工程取舍,非实机延迟或帧率证明。

  • 字符身份独立状态:你明确显示“Unicode已收录·基本区(核心区)·U+4F60”,以及实际原生字体/构形轮廓/字体回退方式。单字与IDS映射均覆盖,混排采用概述,结构详情说明具体对象。已核9个字符的分配身份来自UCD17.0逐项证据;不按block范围推断已分配,表外只说身份未核对。Unicode收录不等于规范字形认证,不再给已核你套“非规范字形”总标签。

  • 复杂原串“⿺辶⿳穴⿲月⿱svg𮘎⿰svg𲈤长刂心”原样保留,svg含义不明,首个s在UTF16 offset7不属当前叶字符子集,绝不自动删除或替成外部路径。𰻝及罕见部件保留代理对/VS;候选纯IDS只作测试,不能自动认定为原串的唯一规范化或加入Unicode映射。无字体字形仍可能豆腐字,不影响复制、保存、选区和撤销;非法、不完整、缺轮廓、未支持布局不同状态。

  • 验证由纯模块、维护中的真实handler受控宿主、静态输出契约构成。候选矩阵不是全部通过证明;没有浏览器实机Range/IME/读屏/文件选择器、字体观感、冷算响应或动效“丝滑”验收,不宣称复刻Alan Becker/3Blue1Brown。原视频未观察。发布测试总数以同包test-results.txt为准。

  • 版本分层:app 0.2.0采用SemVer;本地光学引擎版本0.2.0采用独立SemVer,engineName=optical-experimental标识实验阶段;旧rendererVersion schematic-1/dataVersion demo-components-2继续作为项目兼容标识,不随新视图乱改。项目schema formatVersion1,独立设置schemaVersion1。未来破坏对应契约才提升各自版本。

  • 0.2.0快捷键提示:底部⌨按钮打开半透明按键帽面板,显式关闭/Escape返回入口;按当前模式、单位、绑定动态生成,默认不绑定拆合时显示“更多菜单”。同一EditorCommands注册表供实际键盘分派与提示。面板占据自己的文档空间不盖光标,不监听全局或按住修饰键;高对比/减少透明度有纯色降级,无入场动画。截图只参考分列与按键帽组织,不复制其他App清单。

  • 0.2.0最终主程序回归:14套269项通过,包括41项完整输入受控宿主、27项设置、16项单位策略、10项共享呈现和5项命令注册表;并非真实浏览器验收。光学源码与可重复bundle构建脚本随包,固定字体素材许可保留。

  • 交叉轴字面保护:默认参数下,未匹配的左右/三列结构以同一Noto素材equal-box结果为控制;控制占用至少45且光学不足90%并损失超过5时,整组切换同字体几何结果(same-font-geometric-fallback)。不按“乃至”硬编码,不退回混用自绘素材;最终SVG/leaf/frame/export一致。此规则修复已观察到的高度损失,不保证任意结构达到参考网站或跨字体视觉一致,其他IDC暂不套此规则。