原生富文本数值运算
原生 XHTML 富文本解码器在 font-size、font 简写尺寸与斜杠行高、line-height、letter-spacing 和 word-spacing 中求值有限的 calc、min、max、clamp 表达式
<body xmlns="http://www.w3.org/1999/xhtml" style="font-size:10pt;line-height:calc(1rem + 2pt)">
<p style="letter-spacing:calc(.1em + 1pt);word-spacing:clamp(1pt, 3pt, 4pt)">Spaced text</p>
</body>
这个例子用调用方提供的字体和既有段落布局,算出 12 point 行高、2 point 字符间距和 3 point 字间距
括号算术支持加减乘除,求和要求量纲一致;乘除跟踪长度幂,calc(20pt / 10pt * 6pt) 这样的表达式内部可以相消
二元加减两侧必须有空格;min 和 max 接受兼容的逗号分隔表达式,clamp 取三个兼容表达式,边界颠倒时下限胜出
受支持长度单位为 pt、px(96 dpi)、pc、in、cm、mm、q、em、rem、vw、vh、vmin 和 vmax;十进制与指数数字使用既有的有限十进制转换
font-size 的 em 和百分比使用外层计算字号;line-height 的 em 和百分比以及间距的 em 使用声明元素继承前的最终级联字号
rem 使用 body 的计算字号;body 自身的 font-size 表达式使用 DefaultStyle.FontSize 的初始根字号,其他度量则用其最终计算字号
视口单位使用 MediaFeatures 中显式的 width 和 height 条目;这些宿主尺寸是 point 兼容长度,em 或 rem 的宿主尺寸用 MediaInitialFontSize,为零时按既有规则回退 12 point
宿主尺寸、分辨率和非零初始 media 字号保留既有的 0.000001 下限与 1000000 上限;精确下限值在所有编译器目标上一致使用共享的 Double 比较,低于下限的值仍然被拒绝
vw 需要 width,vh 需要 height,vmin 和 vmax 两者都要;缺失尺寸会让声明不被接纳,不做桌面、页面尺寸或浏览器视口推断
行高可以算出无单位继承因子或 point 长度;计算出的负数行高钳到零,font-size 保留既有正数接纳范围,间距保留带符号 point 长度
字符与字间距要求长度结果;既有的裸零语法仍然可用,百分比间距不属于本 profile
既有的按属性级联、important 优先级和显式继承照常适用;延后的行与间距运算使用胜出的最终字号,font 简写接受配对数学函数内的空格和除号
非法 font 声明保留已被接纳的回退;语法上被接纳却无法算出有限设界结果的胜出度量,会在返回 run 之前抛出 EHPDFHeadlessRichTextCodecError
转换值和存储的 binary64 运算结果量级至多 1e100,长度幂范围 -64 到 64;既有的 font-size 与度量预算仍然生效
乘除在运算前预检极端值,未被掩码的浮点溢出不会外泄;最终检查在所有编译器目标上使用相同的 Double 边界,包括次正规除数和 profile 边界值
数学扫描遵循 MaxNodes,递归表达式遵循 MaxDepth;取消保留 EHPDFOperationCancelled 且不返回部分解码 run,全新与复用的解码选项之后仍然可用
计算出的 point 值进入真实类型化外观和规范 RV 序列化;默认 profile 的富 FDF/XFDF 导入使用同一个解码器,不传输自定义视口 profile
本有限 profile 不提供其他 CSS 数学函数、数值常量、转义的数学函数或单位名、由度量导出的字体单位、逻辑或动态视口单位、自定义属性或通用 CSS 布局
算术与根相对规则遵循 CSS Values and Units Level 4 的受支持部分;上述设界受支持 profile 定义库当前的行为