缀形成象 · 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、部件、数据状态及操作入口;触屏使用点击或等效操作。解释按需出现,而不是要求用户理解内部引擎。
能力分三层:
- 核心:输入、解析、呈现、局部修改、展开、撤销、SVG 导出。
- 必要解释和恢复:原 IDS、部件、数据来源/状态、展开入口。
- 后续高级流程:项目文件、数据修订、批量构形、多字形比较、字体生产、协作与长期版本。不全部放进常驻主界面。
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 三种输出不要混为一谈
- SVG:用于显示、嵌入、文档、排版和视觉讨论;应有明确几何边界和兼容性。它不是标准 Unicode 语义字符,不天然参与全部文本搜索或输入,各软件支持也不同。
- 结构化项目:继续编辑与长期复现。建议保存原 IDS、项目结构/稳定节点 ID、部件引用、来源和数据版本、应用及渲染器版本、可选几何修订、必要 SVG 快照、生成环境和格式版本。
- 字体或 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 七项后续机会
- 构形草稿纸/实验室:快速比较
⿰木水 与 ⿱木水,降低试验成本。“十秒钟试验”是故事,不保证十秒生成规范字;比较多候选可先用历史快照/项目副本,而非立即增加候选栏。
- 可分享的构形对象:同事拿到 IDS、SVG、来源、版本、限制与依赖,能继续编辑,而不只是看图片。三小时制作的特殊字形,三个月后仍有修改价值。
- 教学实验:学生输入
⿰日月 再改上下结构,学习关系、语法和构形/字形区别;可研究教学练习文件,不开发首版课程、积分或学习管理系统。
- 可追溯实验记录:记录初始表达式、部件替换、导致最终结果的变更和参与数据;轻量撤销与长期版本是不同需求,可共用事务基础但不等于立即造版本控制平台。
- 结构化符号创作:小说/游戏作者组合汉字式部件、左右和包围结构,导出到地图、道具、界面。自定义符号不自动成为标准汉字或获得编码。
- 一组字的共享关系:研究共同部件、局部结构、影响范围、缺数据和多版本;先建立模型,等批量真实需求出现再考虑图谱界面。
- 数据质量维护工具:定位缺失引用、待审规范、旧部件和版本差异;普通用户看简洁状态,维护者用独立审核工具,不把后台全部放入主界面。
9.2 首版闭环与实施次序
首版先验证一个字形的生命周期:输入 IDS → 解析 → 可用数据生成 SVG → 修改部件 → 撤销 → 展开再编辑 → 导出 SVG → 保存项目 → 离线重新打开。
路线建议:
- 证明真实文本驱动比现有工作流更直接。
- 证明生成后仍可稳定修改和恢复。
- 建立来源清楚、质量受控的部件数据。
- 再依据真实需求进入研究、教学、特殊字符处理及字体生产。
暂不追求覆盖所有汉字或自建完整数据库。拥有一万个可生成字形,不代表编辑和恢复可靠。
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 标准与浏览器
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暂不套此规则。