Style sheets de rich text nativo

El decoder nativo de XHTML aplica los elementos style internos a campos de rich text e imports FDF/XFDF, preservando los estilos computados reales en el RV guardado y las apariencias incrustadas de widgets

<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 elementos style 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 universales y de tipo, nombres de clase e ID sensibles a mayú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 selectores calificados soportan URIs de namespace con nombre y default, calificadores 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 espacio, 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 cadenas entre comillas o identificadores CSS y sus escapes; el flag opcional i pliega solo letras ASCII, mientras que s y un flag omitido comparan distinguiendo mayúsculas

Los atributos sin prefijo y [|name] coinciden con atributos sin URI de namespace; [*|name] también coincide con atributos con prefijo que tengan ese nombre local, excluyendo declaraciones de namespace

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

Las pseudo clases 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, coincidiendo con :root porque este decoder no tiene una raíz de scoping separada especificada por el caller

El perfil estático acepta :hover, :active, :focus, :focus-visible y :focus-within como selectores válidos que nunca coinciden durante la generación de apariencias 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 p:hover no puede

@supports selector(:hover) y los imports condicionales equivalentes verifican el soporte de la gramática de selectores y evalúan a true; esto no crea estado de puntero, activación ni foco de teclado. Estas seis pseudo clases no toman argumentos, así 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 con espacios hace al elemento no vacío mientras que los comentarios y las instrucciones de procesamiento no

:lang() sigue el valor xml:lang o lang explícito más cercano, coincide insensiblemente a ASCII por un valor exacto o prefijo de guion, y trata un valor explícito vacío como detención de la herencia

Listas de selectores lógicas y relacionales

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

:is() usa la mayor especificidad de argumento, incluidos argumentos válidos que no coinciden con el elemento actual; :where() contribuye cero especificidad

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

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

El :has() anidado y los pseudo elementos no están soportados; un argumento relativo inválido invalida la lista completa de :has(), mientras que una lista tolerante circundante de :is() o :where() puede retener sus otros argumentos válidos

:not() y :has() usan la mayor especificidad de argumento válida, comparada por conteo de ID, conteo de clase/atributo/pseudo y conteo de tipo

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

Los selectores posicionales filtrados contribuyen su propia especificidad de pseudo-clase más la mayor especificidad del filtro; la keyword of acepta escapes de identificadores CSS y fronteras de comentarios, mientras que :nth-of-type() y :nth-last-of-type() retienen su gramática sin filtro

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 matching, incluidos uno a seis dígitos hexadecimales, espacio en blanco CSS final opcional y escalares Unicode suplementarios; los escapes hexadecimales cero, sustitutos y fuera de rango resuelven a U+FFFD

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

Todos los elementos style internos participan antes de que el texto se consuma, así que un elemento style que aparece después de su objetivo todavía se aplica; el texto de estilo no se convierte en texto visible del campo

El perfil de declaraciones retiene tamaño, peso, estilo y shorthand de fuente, listas de familias configuradas, color, decoración de texto, alineación, altura de línea y letter/word spacing; la conversión de longitudes, los struts de métricas del padre y la admisión de fuentes suministradas siguen las APIs existentes de rich text nativo

El RV guardado contiene estilos inline computados y no depende de los elementos style originales; los imports FDF/XFDF equivalentes repetidos retienen bytes confirmados exactos cuando no hay cambios de grafo pendientes que publicar

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

MaxTotalCodeUnits acota el escaneo del stylesheet, el texto de estilo extraído y las declaraciones expandidas agregadas; MaxNodes acota el conteo de reglas, nombres de selectores, condiciones agregadas de atributos/pseudo, listas de selectores funcionales y trabajo de matching/ordenamiento, incluidos el traversal relativo y los escaneos filtrados de hermanos; MaxDepth acota la colección XML, partes de selectores, funciones anidadas y matching recursivo

La cancelación y las fallas por límite retienen la salida previa del decoder y el estado de documento confirmado de la transacción de import; 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 tolerantes is/where retienen sus ramas válidas; las declaraciones inválidas retienen el comportamiento existente de ignore del decoder, y los at-rules no soportados se saltan

Capas de import, más features media, pseudo elementos, pseudo clases de estado adicionales y raíces de scoping especificadas por el caller, tablas, imágenes y layout CSS general siguen siendo trabajo activo

Intercambio de form-data nativo · Callbacks rich de Linux · Intercambio de form-data Windows · Spacing de runs rich

Los style sheets externos suministrados por el caller añaden CSS enlazado e importado recursivamente con resolución de URI de recursos, condiciones media y conjuntos de stylesheets seleccionados

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