Quentin
09c58defa3
fix(symbol): 私有区(PUA)数学符号处理修复 + 去掉 jby CDN 依赖
问题:docx 里的私有区符号(教辅排版软件把 ⊆/⇌ 等写成 PUA)输出成豆腐块。
实测语料:46 份教辅里 \ue089 共 11 处(3 份文件)全部丢失。
根因:
1. SYMBOL 数组沿用反编译产物的字面量写法 {"\\ue0fc", "\\ue100", "\\ue101"}
(反斜杠+ue0fc 共 7 字符),而文档里是 1 个 PUA 字符,replace 永远不命中
→ 整个符号占位符机制从未生效;连带 sym.substring(2) 在真字符下取不到编号。
2. 只有 3 个硬编码码位,没有通用 PUA→Unicode 映射。
修复:
- SYMBOL 改为真 PUA 字符;编号统一走 symbolCode()(%04X,与 static/symbols 文件名一致)
- 新增 PUA_TO_UNICODE(证据驱动):\ue089 → ⊆
- 新增 warnUnknownPua():扫描 E000–F8FF 未映射码位并 WARN,便于持续扩充
- 新增配置 wordparse.symbol-base-url(默认我们自己的 RustFS
https://fs.code-lab.cn/temp/wordparse-symbols/),不再引用 resource.xinjiaoyu.com
- ⇌(\ue225\ue226)替换移出循环体
验证:含真 PUA 字节的 docx 过服务后 —— E0FC/E100/E101 输出我们托管的 svg 图、
\ue089→⊆、\ue225\ue226→\(\rightleftharpoons\)、标准 ⊆ 原样保留、残留 PUA=0;
3 份受影响教辅已重新生成并覆盖线上(exercise-html3)