3.1 KiB
3.1 KiB
wb-ins-font-verify.py 误报场景与处理
场景:混合内容段落的参考run匹配偏差
触发条件
当段落同时包含数字/英文前缀和中文正文时,脚本的"首个非trivial原文run"匹配策略可能选错参考run。
实例(2026-06-26 朱家角可降解环保袋服务合同)
P79 段落结构:
原文run: "7.2" → hint=None (数字前缀)
原文run: "因火灾..." → hint=eastAsia
原文run: "10" → hint=eastAsia
原文run: "内" → hint=eastAsia
原文run: "提交政府..." → hint=eastAsia
WB INS: "日" → hint=eastAsia ← 插入在中文文本中间
脚本匹配到第一个非trivial原文run "7.2"(hint=None),判定WB INS "日"(hint=eastAsia)为HINT MISMATCH。
实际:"日"插入在中文文本中间,相邻run均为hint=eastAsia,格式完全正确。
判断方法
当wb-ins-font-verify.py报告HINT MISMATCH时,做以下三件事:
- 检查段落结构:该段落是否同时包含数字/英文前缀和中文正文?
- 检查相邻run:WB INS的相邻原文run(前后各一个)的hint值是什么?
- 判断:如果相邻原文run的hint与WB INS一致,则为脚本误报——WB INS的hint与周围中文文本一致是正确的。
不适用场景
以下情况NOT误报,需作为真实格式问题处理:
- 所有原文run的hint一致(如全部为eastAsia),但WB INS的hint不同
- 新增段落(无原文run可比),WB INS缺hint
- 同一段落内所有原文run字体一致,WB INS字体不同
场景二:段落内原文run属性混合(ea=None vs ea=仿宋)
触发条件(2026-06-29 卫生信息平台运维合同)
当段落由多个来源的文本拼接(如合同模板+填充内容),原文run的eastAsia/ascii/sz属性可能不一致:
原文run[ea=None sz=None]: "为了保障上海市青浦区..." (模板标题部分)
原文run[ea=None sz=None]: "维管理"
原文run[ea=仿宋 sz=21]: "服务外包的形式组织各" (正文部分)
原文run[ea=仿宋 sz=21]: "运维服务方"
del[WB]: 针
ins[WB][ea=仿宋 sz=21]: 面 ← 插入在仿宋文本中间
原文run[ea=仿宋 sz=21]: ",对上海市..."
脚本匹配到第一个非trivial原文run(ea=None sz=None),判定WB INS(ea=仿宋 sz=21)为EASTASIA/SZ MISMATCH。
实际:WB INS与相邻的仿宋run完全一致,格式正确。段落前半部分ea=None是因为那些run继承默认样式,不代表段落整体字体是None。
判断方法
当脚本报告EASTASIA/ASCII/SZ MISMATCH时:
- 检查段落全部原文run的属性:是否部分run有显式属性、部分没有?
- 定位WB INS的相邻run:前后各一个原文run的属性是什么?
- 判断:如果WB INS与相邻run一致,则为误报——脚本选了错误的参考run。
结论
脚本的"首个非trivial原文run"匹配策略在属性混合段落中可能产生误报。reviewer复核时需结合段落结构和相邻run上下文判断,不可盲信脚本输出。