Marcas de rich text entre estilos
El rich text tipado conserva el V lógico original y el RV canónico mientras posiciona una marca combinante inicial contra el glifo renderizado precedente real en la misma línea física
La base y la marca pueden usar programas de fuente suministrados distintos, regular, bold, italic o bold-italic, tamaños en puntos distintos y colores distintos
El posicionamiento lee attachments reales GPOS mark-to-base, mark-to-ligature y mark-to-mark, incluidas las lookups de extension positioning; el anchor de la base usa su propia fuente y escala, y el anchor de la marca usa su propia fuente y escala
La unión contextual árabe sigue activa entre límites de estilo, y una marca adjunta usa el glifo base unido resultante en lugar de un glifo nominal aislado
Las marcas iniciales reciben transforms hijos independientes, así adjuntar una marca no mueve el texto ordinario posterior ni cambia el avance lógico de character-spacing
Los formularios hijos rich conservan los overhangs de glifos, incluidas las marcas combinantes de origen negativo y los contornos italic; la apariencia propietaria aporta el clip del widget, la rotación y la alineación del párrafo
La tinta adjunta contribuye al ajuste de las extensiones de línea, así las marcas apiladas pueden seguir visibles en la parte superior de un campo; un cluster indivisible más alto que el widget conserva su comportamiento existente de clipping acotado
Cuando no hay cobertura de attachment coincidente, los bounds reales del glyph-header TrueType seleccionado aportan un fallback de colocación con escalas de tamaño de punto independientes y la combining class nativa de Unicode
La colocación de fallback distingue marcas above, below, attached, izquierda/derecha y dobles; las marcas del mismo lado se apilan mientras que las del lado opuesto vuelven al contorno de la base, y los anchors GPOS coincidentes siempre tienen prioridad
Las marcas combinantes dobles siguen siendo candidatas a attachment aunque su clase de salto de línea Unicode sea nonbreaking; el texto lógico, los estilos originales y el avance de character-spacing posterior permanecen intactos
El borde de fallback de una marca doble sigue el nivel bidi realmente resuelto de su elemento de texto, incluido un elemento de dirección opuesta incrustado en el párrafo
Los bounds de fallback describen el header de contorno declarado de la fuente real; la reconstrucción automática de familias de fuentes arbitrarias queda fuera de este contrato de fuentes suministradas
Las lecturas de tablas de fuente siguen acotadas a su tabla GPOS real, atienden la cancelación y comparten un presupuesto de recorrido entre todas las fuentes de estilo suministradas; los offsets de tabla inválidos fallan antes de mutar el campo del documento
Los contornos PDF unhinted usan anchors en coordenadas de diseño, sin ajustes de píxel específicos del dispositivo
Aceptación
HotPDFHeadlessRichMarkTests.pas guarda y recarga apariencias reales de marcas latinas, árabes y hebreas, marcas apiladas, una ligadura árabe genuina, tamaños y colores mezclados, wrapping, espaciado, alineación y rotación
Verify-HeadlessRichMarks.py lee los programas de fuente incrustados genuinos a través de fontTools, calcula de forma independiente los anchors GPOS, verifica los valores y estilos de origen y confirma que cada marca aporta píxeles MuPDF visibles renderizando la misma apariencia real con esa marca omitida
HotPDFHeadlessRichMarkFallbackTests.pas y Verify-HeadlessRichMarkFallback.py comprueban fuentes GPOS realmente ausentes, apariencias guardadas visibles, combining classes crudos, bounds de glifos seleccionados y cancelación; también se verifica que los anchors coincidentes conservan prioridad sobre la colocación de fallback
Bounds de glifos TrueType seleccionados · Combining classes canónicas crudas
Constructor de apariencias · Campos rich-text nativos · Ajuste de grafemas entre estilos