67 lines
3.1 KiB
Markdown
67 lines
3.1 KiB
Markdown
# 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时,做以下三件事:
|
|
|
|
1. **检查段落结构**:该段落是否同时包含数字/英文前缀和中文正文?
|
|
2. **检查相邻run**:WB INS的相邻原文run(前后各一个)的hint值是什么?
|
|
3. **判断**:如果相邻原文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时:
|
|
1. **检查段落全部原文run的属性**:是否部分run有显式属性、部分没有?
|
|
2. **定位WB INS的相邻run**:前后各一个原文run的属性是什么?
|
|
3. **判断**:如果WB INS与相邻run一致,则为误报——脚本选了错误的参考run。
|
|
|
|
### 结论
|
|
|
|
脚本的"首个非trivial原文run"匹配策略在属性混合段落中可能产生误报。reviewer复核时需结合段落结构和相邻run上下文判断,不可盲信脚本输出。 |