原生 rich text 樣式表

原生 XHTML 解碼器把內部 style 元素套用到 rich text 欄位與 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 選取根 rich text 元素,與 :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 與指定字型準入遵循既有的原生 rich text API

儲存的 RV 包含計算後的內嵌樣式,不依賴原始 style 元素;沒有待發佈圖變更時,重複的等價 FDF/XFDF 匯入精確保留已提交位元組

原生 Pascal 消費端、Windows 檔案工作與原始 V1 callback、以及 Linux JSON/V1 callback 共用該解碼器;無需任何公開 callback 記錄配置變更

MaxTotalCodeUnits 約束樣式表掃描、萃取的樣式文字與彙總展開宣告;MaxNodes 約束規則數、選擇器名稱、彙總屬性/偽類條件、函式型選擇器清單與比對/排序工作,包含相對走訪與過濾的兄弟掃描;MaxDepth 約束 XML 收集、選擇器片段、巢狀函式與遞迴比對

取消與限額失敗保留解碼器先前輸出與匯入交易已提交的文件狀態;重試使用同樣的原始選項與預算

非法或不受支援的頂層選擇器群組被整體忽略;寬容的 is/where 引數清單保留其合法分支;非法宣告保留解碼器既有的忽略行為,不受支援的 at 規則被略過

匯入層、更多 media 特性、偽元素、額外狀態偽類與呼叫端指定作用域根、表格、影像與通用 CSS 排版仍是進行中的工作

原生 form 資料交換 · Linux rich callback · Windows form 資料交換 · rich run 間距

呼叫端提供的外部樣式表加入連結與遞迴匯入的 CSS,帶資源 URI 解析、media 條件與選中的樣式表集合

原生 supports 查詢用受支援的宣告與選擇器 profile 接納 @supports 群組與 supports() 匯入,共用邊界並支援取消後復原