# 版式预检

`fsys.openXml.pptx.check` 实现 `builder.check`：生成前估算文字溢出、表格被内容撑高、超出页面与文字重叠，不启动 Office、不写文件、不修改输入。

一般通过生成器调用即可，生成器只在调用 `check` 时才加载本模块及 GDI+，单纯生成不受影响：

```aardio
import fsys.openXml.pptx.builder;
var slides=[{shapes=[
    {kind="text";name="Title";x=40;y=40;width=300;height=40;fontSize=20;text="标题"},
    // 默认字号 24pt 时每行约需 24×1.2+6=34.8pt；高度 60 会被预检报为 tableGrow，这里给 80。
    {kind="table";name="Grid";x=40;y=120;width=400;height=80;rows=[["项目","说明"],["一","二"]]}
]}];
var report,err=fsys.openXml.pptx.builder.check(slides);
if(!report) return null,err;
return report.ok; // true
```

- `run(slides,options,checkOptions)` 与 `builder.check` 相同：参数同 `builder.write`，输入不合法返回 `null,err`，成功返回 `{ok,issues,counts,errors,warnings,missingFonts}`。
- 问题类别、忽略方式、估算原理与精度见 [生成前预检](../builder/index.html)。

0.10.0 起，自动页码与显式页码字段按该页实际显示数字参与测量；编号与bullet共用正文缩进；offSlide包含外阴影偏移及保守模糊边界，完全透明阴影不参与。阴影不影响文字重叠判定。长编号字形的悬挂宽度不属于排版模拟范围，需要显式设置合适的marginLeft/hanging并检查渲染。

0.11.0 起表格 merges 与 builder 共用拓扑；被覆盖格不单独测量，锚点按合并列宽/跨行总高测量。跨行内容不足时估算总增高量，但不保证 Office/WPS 的逐行高度分配完全一致。

结果是估算预警，不是排版引擎：只报告问题，不自动缩字、不移动形状。
