原生富文本样式表
原生 XHTML 解码器把内部 style 元素应用到富文本字段和 FDF/XFDF 导入,把真实计算样式保留在保存的 RV 和内嵌 widget 外观中
<body xmlns="http://www.w3.org/1999/xhtml">
<style>
.notice { color: #204080; font-size: 14pt }
p > span.urgent { font-weight: bold !important }
</style>
<p class="notice">Review <span class="urgent">today</span></p>
</body>
style 元素使用 XHTML 命名空间,type 省略或指定为 text/css;media 属性与嵌套 @media 组使用显式的原生 print/screen profile
规则支持通配与类型选择器、区分大小写的 class 与 ID 名称、复合选择器、后代/子/相邻兄弟/后续兄弟组合器,以及逗号分隔的选择器组
命名空间选择器
CSS 命名空间声明与限定选择器支持具名与默认命名空间 URI、通配或空限定符、独立的 XML 前缀作用域和设界的继承属性查找
属性与结构选择器
属性选择器支持存在性、等式、空白分隔单词、连字符前缀、普通前缀、后缀和子串:[name]、[name="value"]、[name~="word"]、[name|="en"]、[name^="pre"]、[name$="end"] 和 [name*="part"]
属性值接受带引号字符串或 CSS 标识符及其转义;可选的 i 标志只折叠 ASCII 字母,s 和省略标志按区分大小写比较
无前缀属性和 [|name] 匹配无命名空间 URI 的属性;[*|name] 还匹配带该本地名的前缀属性,命名空间声明除外
兄弟组合器跳过非元素节点,并在链式选择器中保留祖先匹配
结构伪类包括 :root、:empty、:first-child、:last-child、:only-child、:first-of-type、:last-of-type 和 :only-of-type
:scope 选中根富文本元素,与 :root 等效,因为该解码器没有单独的调用方指定作用域根
静态 profile 接受 :hover、:active、:focus、:focus-visible 和 :focus-within 作为合法选择器,但它们在 PDF 外观生成期间永不匹配。其取反以及逻辑或关系组合保留常规选择器语义,因此 p:not(:hover) 可以应用样式而 p:hover 不能
@supports selector(:hover) 和等价的条件导入测试选择器语法支持并求值为 true;这不会创建指针、激活或键盘焦点状态。这六个伪类不带参数,:focus() 之类的形式仍是非法的
四个位置选择器 :nth-child()、:nth-last-child()、:nth-of-type() 和 :nth-last-of-type() 接受 odd、even、整数位置和带符号十进制系数、超出机器整数范围的 An+B 公式,前提是在配置的扫描预算内
类型位置同时比较元素本地名和命名空间 URI;:empty 规则遵循 Selectors3,空白文本节点使元素非空,注释和处理指令不算
:lang() 跟随最近的显式 xml:lang 或 lang 值,按精确值或连字符前缀做 ASCII 大小写不敏感匹配,显式空值视为阻断继承
逻辑与关系选择器列表
:is() 和 :where() 接受逗号分隔的复杂选择器,包括后代与兄弟组合器;不支持的分支被忽略,空的合法列表不匹配任何元素
:is() 取各参数中最大的 specificity,包括不匹配当前元素的合法参数;:where() 的 specificity 为零
:not() 接受非空的复杂选择器列表,所有参数都不匹配时才匹配;非法参数使完整选择器列表失效
:has() 把相对选择器锚定到当前元素,测试真实的子元素、后代或后续兄弟;每个相对参数可以以 >、+ 或 ~ 开头,后接更多受支持的组合器
嵌套 :has() 和伪元素不受支持;非法相对参数使完整 :has() 列表失效,而外围宽容的 :is() 或 :where() 列表可以保留其他合法参数
:not() 和 :has() 取合法参数中最大的 specificity,按 ID 数、class/attribute/pseudo 数和 type 数比较
:nth-child(An+B of selector-list) 和 :nth-last-child(An+B of selector-list) 只统计匹配非空复杂选择器列表并集的元素兄弟;目标元素自身也必须属于该并集
带过滤的位置选择器贡献其自身伪类 specificity 加上过滤器中最大的 specificity;of 关键字接受 CSS 标识符转义和注释边界,:nth-of-type() 和 :nth-last-of-type() 保留其不过滤的语法
p:has(> span.urgent) { color: red }
span:is(.notice, p > .urgent) { font-weight: bold }
span:nth-child(2 of .included, [data-status="ready"]) { color: blue }
CSS 注释和标识符转义在匹配之前解析,包括一至六位十六进制数字、可选的尾部 CSS 空白和增补 Unicode 标量;零、代理和越界的十六进制转义解析为 U+FFFD
声明按 importance、选择器 specificity 和文档源顺序级联,随后是对应 importance 的内联样式;元素经既有的属性专属规则继承父级计算值
所有内部 style 元素都在文本被消费之前参与,因此出现在目标之后的 style 元素同样生效;样式文本不会变成可见字段文本
声明 profile 保留字号、字重、样式和简写、配置的 family 列表、颜色、文本装饰、对齐、行高以及字符/字间距;长度换算、父级度量 strut 和指定字体准入遵循既有的原生富文本 API
保存的 RV 包含计算后的内联样式,不依赖原始 style 元素;没有待发布图变更时,重复的等价 FDF/XFDF 导入精确保留已提交字节
原生 Pascal 消费方、Windows 文件作业与原始 V1 回调、以及 Linux JSON/V1 回调共享该解码器;无需任何公开回调记录布局变更
MaxTotalCodeUnits 约束样式表扫描、提取的样式文本和聚合展开声明;MaxNodes 约束规则数、选择器名、聚合属性/伪类条件、函数式选择器列表和匹配/排序工作,包括相对遍历与过滤的兄弟扫描;MaxDepth 约束 XML 收集、选择器片段、嵌套函数和递归匹配
取消与限额失败保留解码器先前输出和导入事务已提交的文档状态;重试使用同样的原始选项与预算
非法或不受支持的顶层选择器组被整体忽略;宽容的 is/where 参数列表保留其合法分支;非法声明保留解码器既有的忽略行为,不受支持的 at 规则被跳过
导入层、更多 media 特性、伪元素、额外状态伪类与调用方指定作用域根、表格、图像和通用 CSS 布局仍是进行中的工作
原生 form 数据交换 · Linux 富回调 · Windows form 数据交换 · 富 run 间距
调用方提供的外部样式表增加链接与递归导入的 CSS,带资源 URI 解析、media 条件和选中的样式表集合
原生 supports 查询用受支持的声明与选择器 profile 接纳 @supports 组和 supports() 导入,共享边界并支持取消后恢复