# 文字测量

`fsys.openXml.pptx.metrics` 用 GDI+ 估算文字在给定宽度内的行数与高度，供 `builder.check` 使用；不启动 Office。

```aardio
import fsys.openXml.pptx.layout;
import fsys.openXml.pptx.metrics;
var model=fsys.openXml.pptx.layout.text({text="需要估算高度的一段文字";fontSize=18},{});
var session=fsys.openXml.pptx.metrics.session();
var m=fsys.openXml.pptx.metrics.measureText(session,model,120);
session.delete();
return {height=m.height;lines=m.lines};
```

- `session()` 缓存 GDI+ 字体，用完必须 `delete()`；`missing` 记录系统缺少、已回退到微软雅黑/宋体/Arial 的字体。
- `measureText(session,model,width)` 的 model 是 `layout.text` 的返回值，width 是文本区宽度（point，已扣除内边距）；返回 `height,lines,maxLineWidth,paragraphs`。
- 行高模型：单倍行高 = `SINGLE_LINE`（1.2）× 字号；百分比行距时首行只计入 `FIRST_LINE_EXTRA`（0.478）倍的额外行距；段前/后距照加。两个系数来自 PowerPoint 16 实测。

同一段落内多种字号按最大字号估算，偏保守；GDI+ 不支持中文行尾标点悬挂，中文窄栏可能多估一行。精度数据见 [生成前预检](../builder/index.html)。
