fsys.openXml.pptx.metrics 用 GDI+ 估算文字在给定宽度内的行数与高度,供 builder.check 使用;不启动 Office。
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+ 不支持中文行尾标点悬挂,中文窄栏可能多估一行。精度数据见 生成前预检。