ネイティブリッチテキストの CSS サポート照会
ネイティブ XHTML デコーダは、サポートされるリッチテキスト宣言とセレクタ文法に対して、@supports グループと supports() インポート条件を評価します
<body xmlns="http://www.w3.org/1999/xhtml">
<style><![CDATA[
@supports (font-size: calc(10pt + 5pt)) and selector(span.notice) {
span.notice { font-size: 15pt }
}
@supports not (display: grid) {
span.notice { font-weight: bold }
}
]]></style>
<p><span class="notice">Conditional text</span></p>
</body>
ネイティブプロファイルでは両グループが適用され、呼び出し側が供給したフォントで 15 ポイントの bold テキストが生成されます
宣言とセレクタの許可
宣言照会は、font-size、font-weight、font-style、text-decoration、color、text-align、font-family、line-height、フォント略記、letter-spacing、word-spacing の既存の許可ヘルパを使います
数値照会は有限の CSS 数式プロファイル、デフォルトフォントメトリクス、明示的なメディア寸法を共有します。未サポートのプロパティや許可されない値は false と評価します
font-family 照会は設定された FontFamilyNames コレクションを要求し、利用できないが有効なファミリは既存の供給ファミリフォールバックを使えます
有効な !important 注釈は、条件付きグループのカスケード優先を変えずに宣言照会で受け付けられます。余分な宣言、末尾のセミコロン、無効な優先は拒否されます
selector() は、ドキュメント要素に一致させずに、既存のネイティブセレクタ文法と現在のシートの名前空間宣言を検査します
すべてのセレクタ分岐がサポートされなければなりません。通常フォージビングな is()・where() リスト内の分岐も含まれます。未定義の名前空間接頭辞と未知の疑似クラスは false と評価します
ルートの :scope と静的な :hover、:active、:focus、:focus-visible、:focus-within 文法はサポートされます。機能照会の成功はパーサのサポートを記述します。ユーザーアクションセレクタは依然として PDF 外観に決して一致せず、:hover() のような関数形式は無効です
セレクタプローブは一時的なマッチャストレージを復元し、後続のスタイルシートマッチングを無傷のままにします。その作業は依然として共有のノード・キャンセル予算を消費します
Boolean 構文と前方互換条件
条件は not、同種の and・or 連鎖、ネストした括弧を受け付けます。and と or の混在には明示的なグループ化が必要です
コメントと CSS 識別子エスケープはデコーダの既存トークナイザに従い、not は not() 関数トークンではなく、後続の項から分離されたキーワードでなければなりません
バランスの取れた未知の関数と括弧で囲まれた general-enclosed 条件は false と評価されるため、外側の not がフォールバックを提供できます
不正な文字列、不正な引用符なし URL トークン、対にならない区切り文字は、否定の前に外側の条件を無効化します。数値寸法と引用符付き関数トークンは、それぞれ異なるトークン境界を保持します
グループ、インポート、出力
条件付きグループは実際のソース位置、セレクタ詳細度、important 優先を保持し、サポートされるメディアグループとネストできます
@import "metrics.css" supports(line-height: 18pt) print;
@import "fallback.css" supports(not selector(span:future));
インポートのオプション supports() 条件はリソース URI の後に続き、オプションのメディア条件に先行します。リソースが宣言を寄与するには、両方がそのリソースを許可しなければなりません
相対 URI 解決、サイクル処理、名前空間分離、既存のインポート順要件は、呼び出し側供給スタイルシートのもののままです
許可された宣言は、同じデコーダを通じて、実際にデコードされた run、計算された正準リッチ値、保存されたフィールド外観、デフォルトプロファイルのリッチ FDF/XFDF インポートに届きます
境界と受け入れ
条件パースとセレクタプローブは既存の MaxNodes・MaxTotalCodeUnits 上限を消費します。ネストした条件・ブロック・グループは MaxDepth を共有します
キャンセルは部分的な run を返さず EHPDFOperationCancelled を伝播し、失敗した照会や予算は、新規・再利用デコードの復元を保持します
Tests/Linux/RichTextSupports/Run.py は、宣言・セレクタ・Boolean・URL トークンの動作、ネストしたカスケードとインポート、計測されたキャンセル、実際に保存されたプレーンおよび AES 暗号化 PDF 出力を検証します
このネイティブプロファイルは、上記のサポートされる宣言・セレクタ照会を超えて、ブラウザレイアウト、インポートレイヤ、カスタムプロパティ、追加のセレクタ構文、CSS 条件機能を追加しません
条件構文は CSS Conditional Rules Level 3 と Level 4 のサポート部分に従います。ネイティブ許可プロファイルが、どの照会が成功するかを定義します