Style sheets de rich text nativo

El decodificador XHTML nativo aplica los style elements internos a los campos de rich text y a las importaciones FDF/XFDF, preservando los estilos calculados reales en el RV guardado y las appearances de widgets incrustadas

<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>

Los style elements usan el namespace XHTML y omiten type o especifican text/css; los atributos media y los grupos @media anidados usan el perfil nativo explícito print/screen

Las reglas soportan selectores universal y de tipo, nombres de class e ID sensibles a mayúsculas/minúsculas, selectores compuestos, combinadores descendiente, hijo, hermano adyacente y hermano posterior, y grupos de selectores separados por comas

Selectores de namespace

Las declaraciones de namespace CSS y los selectores cualificados soportan URIs de namespace con nombre y por defecto, cualificadores comodín o vacíos, ámbitos independientes de prefijos XML y búsqueda acotada de atributos heredados

Selectores de atributos y estructurales

Los selectores de atributos soportan presencia, igualdad, palabras separadas por whitespace, prefijos de guion, prefijos ordinarios, sufijos y subcadenas: [name], [name="value"], [name~="word"], [name|="en"], [name^="pre"], [name$="end"] y [name*="part"]

Los valores de atributos aceptan strings entre comillas o identificadores CSS y sus escapes; el flag opcional i solo pliega letras ASCII, mientras que s y el flag omitido comparan con distinción de mayúsculas/minúsculas

Los atributos sin prefijo y [|name] emparejan atributos sin URI de namespace; [*|name] también empareja atributos con prefijo de ese nombre local, excluyendo las declaraciones de namespace

Los combinadores de hermanos saltan los nodos que no son elementos y preservan el emparejamiento de ancestros a través de selectores encadenados

Las pseudo classes estructurales incluyen :root, :empty, :first-child, :last-child, :only-child, :first-of-type, :last-of-type y :only-of-type

:scope selecciona el elemento raíz de rich text, emparejando :root porque este decodificador no tiene scoping root separado especificado por el llamador

El perfil estático acepta :hover, :active, :focus, :focus-visible y :focus-within como selectores válidos que nunca emparejan durante la generación de appearances PDF. Sus negaciones y combinaciones lógicas o relacionales retienen la semántica normal de selectores, de modo que p:not(:hover) puede aplicar un estilo mientras que p:hover no

@supports selector(:hover) y las importaciones condicionales equivalentes comprueban el soporte de la gramática de selectores y evalúan true; esto no crea estado de puntero, activación ni foco de teclado. Estas seis pseudo classes no toman argumentos, de modo que formas como :focus() siguen siendo inválidas

Los cuatro selectores posicionales :nth-child(), :nth-last-child(), :nth-of-type() y :nth-last-of-type() aceptan odd, even, posiciones enteras y fórmulas An+B con coeficientes decimales con signo más allá de los rangos de enteros de máquina, dentro del presupuesto de escaneo configurado

Las posiciones de tipo comparan tanto el nombre local del elemento como el URI de namespace; la regla :empty sigue Selectors3, de modo que un nodo de texto de whitespace hace un elemento no vacío mientras que los comentarios y las processing instructions no

:lang() sigue el valor xml:lang o lang explícito más cercano, empareja insensiblemente a mayúsculas ASCII por un valor exacto o prefijo de guion, y trata un valor vacío explícito como corte de herencia

Listas de selectores lógicas y relacionales

:is() y :where() aceptan selectores complejos separados por comas, incluidos combinadores descendiente y de hermanos; las ramas no soportadas se ignoran y una lista válida vacía no empareja ningún elemento

:is() usa la especificidad mayor de sus argumentos, incluidos los argumentos válidos que no emparejan el elemento actual; :where() aporta especificidad cero

:not() acepta una lista no vacía de selectores complejos y empareja cuando ninguno de sus argumentos empareja; un argumento inválido invalida la lista completa de selectores

:has() ancla los selectores relativos al elemento actual y prueba hijos, descendientes o hermanos posteriores reales; cada argumento relativo puede comenzar con >, + o ~, seguido de combinadores soportados adicionales

Los :has() anidados y los pseudo elements no están soportados; un argumento relativo inválido invalida la lista :has() completa, mientras que una lista :is() o :where() forgiving circundante puede retener sus demás argumentos válidos

:not() y :has() usan la especificidad mayor de argumentos válidos, comparada por recuento de ID, recuento de class/atributo/pseudo y recuento de tipos

:nth-child(An+B of selector-list) y :nth-last-child(An+B of selector-list) cuentan solo los hermanos elementos que emparejan la unión de la lista de selectores complejos no vacía; el objetivo debe pertenecer él mismo a esa unión

Los selectores posicionales filtrados aportan su propia especificidad de pseudo class más la especificidad mayor del filtro; la palabra clave of acepta escapes de identificadores CSS y límites de comentarios, mientras que :nth-of-type() y :nth-last-of-type() retienen su gramática sin filtrar

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 }

Los comentarios CSS y los escapes de identificadores se parsean antes del emparejamiento, incluidos uno a seis dígitos hexadecimales, whitespace CSS final opcional y escalares Unicode suplementarios; los escapes hexadecimales cero, surrogate y fuera de rango resuelven a U+FFFD

Las declaraciones entran en cascada por importancia, especificidad de selector y orden de fuente del documento, seguidas por los estilos inline con su importancia correspondiente; los elementos heredan los valores calculados del padre a través de las reglas existentes específicas por propiedad

Todos los style elements internos participan antes de consumir el texto, de modo que un style element que aparece después de su objetivo sigue aplicando; el texto de estilos no se convierte en texto visible del campo

El perfil de declaraciones retiene tamaño, weight, estilo y shorthand de fuente, listas de familias configuradas, color, text decoration, alineación, line height y espaciado de letras/palabras; la conversión de longitudes, los struts de métricas del padre y la admisión de fuentes suministradas siguen las APIs nativas de rich text existentes

El RV guardado contiene los estilos inline calculados y no depende de los style elements originales; las importaciones FDF/XFDF equivalentes repetidas retienen bytes confirmados exactos cuando no hay cambios pendientes del grafo que exijan publicación

Los consumidores Pascal nativos, los file jobs de Windows y los callbacks V1 originales, y los callbacks JSON/V1 de Linux comparten el decodificador; no se requieren cambios en los layouts públicos de registros de callbacks

MaxTotalCodeUnits acota el escaneo de stylesheets, el texto de estilos extraído y las declaraciones expandidas agregadas; MaxNodes acota el recuento de reglas, los nombres de selectores, las condiciones agregadas de atributos/pseudo, las listas de selectores funcionales y el trabajo de emparejamiento/ordenación, incluidos el recorrido relativo y los escaneos de hermanos filtrados; MaxDepth acota la colección XML, las partes de selectores, las funciones anidadas y el emparejamiento recursivo

La cancelación y los fallos de límites retienen la salida previa del decodificador y el estado de documento confirmado de la transacción de importación; el reintento usa las mismas opciones y presupuestos originales

Los grupos de selectores de nivel superior inválidos o no soportados se ignoran como un todo; las listas de argumentos forgiving is/where retienen sus ramas válidas; las declaraciones inválidas retienen el comportamiento existente de ignorar del decodificador, y los at-rules no soportados se saltan

Las capas de importación, más características de medios, pseudo elements, pseudo classes de estado adicionales y scoping roots especificadas por el llamador, tablas, imágenes y layout CSS general siguen siendo trabajo activo

Intercambio nativo de form data · Callbacks rich de Linux · Intercambio de form data Windows · Espaciado de runs rich

Las style sheets externas suministradas por el llamador añaden CSS enlazado e importado recursivamente con resolución de URI de recursos, condiciones de medios y conjuntos de stylesheets seleccionados

Las consultas de soporte nativas admiten grupos @supports e importaciones supports() usando el perfil de declaraciones y selectores soportado, con bounds compartidos y recuperación de cancelación