# 共用解析层

`fsys.openXml.pptx.layout` 把形状、表格单元格与文字描述解析为规范化模型。**生成器与预检共用这一层**，因此预检看到的字号、字体、缩进、行距与内边距，和实际写入 PPTX 的完全一致。不生成 XML、不测量文字、不加载 Office 或 GDI+。

```aardio
import fsys.openXml.pptx.layout;
var model=fsys.openXml.pptx.layout.text({
    paragraphs=[{runs=[{text="Hello "},{text="你好";fontNameEa="SimHei"}]}];
    fontSize=20;fontNameLatin="Segoe UI"
},{});
var style=model.paragraphs[1].runs[2].style;
return {latin=style.latin;ea=style.ea;size=style.size;lang=model.lang};
```

- `text(shape,defaults)` 返回 `paragraphs,text,anchor,margin,fontSize,fontName,lang`；每段含 `align,level,bullet,lineSpacing,spaceBefore,spaceAfter,runs,marginLeft,hanging`，运行含 `text,style` 或 `softBreak=true`。
- `geometry(shape,kind)` 返回 `left,top,width,height,flipH,flipV`（point）；kind 为 `line` 且给出 `x2/y2` 时按两点计算边界框与翻转。
- `margins/segments/checked/emu/color/simpleText` 是单位与参数归一化工具；校验失败抛出不含库文件与行号的纯消息。

0.10.0 起 `slideShapes(slide,options,location,pageIndex)` 还添加自动页码，并为所有形状设置当前页的字段缓存上下文；pageIndex 默认1，生成与预检均传真实页序。`location` 是内部错误定位对象，可省略。`text` 返回的运行还可含 field/hyperlink；段落增加 numbering，起始基数与缩进统一解析，style 增加 underline。

0.11.0 起 `tableMerges(rowCount,columnCount,merges)` 校验矩形合并范围，返回 ranges/cells/rowCount/columnCount；每个物理槽指向其左上逻辑格。生成器、预检和编辑器共用，不涉及 DOM 或文字测量。

`hyperlink/numbering/shadow/cornerRadius` 负责新参数的纯校验与归一化。具体语义见 [页码、链接、编号与外观](../builder/details.html)。超链接不会被访问，阴影不涉及渲染。

字体继承、语言标签等输入语义见 [字体、语言、备注与线条](../builder/index.html)。本层不是通用 PPT 对象模型。
