Apariencias predeterminadas FreeText nativas
El fallback nativo de FreeText aplica el estado acotado de apariencia predeterminada al texto generado, el layout, el fitting automático y las decoraciones
Una apariencia normal suministrada toma precedencia sobre la generación desde la apariencia predeterminada de FreeText y el rich text
Operadores de apariencia predeterminada
| Operadores | Comportamiento de fallback |
|---|---|
Tf | Selecciona el recurso de fuente original y el tamaño del texto; tamaño cero solicita fitting automático acotado |
g rg k | Inicializa el color de relleno del texto en gris, RGB o CMYK |
Tc Tw Tz | Aplica letter spacing, word spacing y escala horizontal del texto a las mediciones de pintado y layout |
Ts TL | Aplica el rise del texto y la separación explícita de baseline, incluido un leading cero o negativo |
Tm | Acepta como máximo una matriz; su parte lineal transforma el texto generado, mientras que el layout de la anotación determina la colocación |
Tr | Selecciona los modos de pintado de glifos y clipping de texto de cero a siete |
G RG K w J j M d | Inicializa color de stroke, width, cap, join, miter y estado de dash para el texto y las decoraciones generadas |
Los operandos de traslación de la matriz se validan pero no reemplazan la colocación de FreeText dentro de su rectángulo de anotación
La escala horizontal puede ser cero o negativa; rise, spacing y la matriz lineal participan en la geometría transformada de glifos, avances y decoraciones
Este es un perfil acotado de apariencia predeterminada, no un intérprete general de content-streams PDF; operadores no soportados, conteos de operandos inválidos, valores malformed y matrices de texto repetidas producen un error de rendering
Las componentes de color de stroke deben estar en el rango de cero a uno, los valores de cap y join deben ser enteros de cero a dos, el width debe ser no negativo y el límite de miter debe ser al menos uno
Un arreglo de dash puede contener como máximo 256 valores finitos no negativos y un arreglo no vacío debe contener un valor positivo; un arreglo vacío selecciona trazos sólidos, un arreglo impar repite y la fase debe ser no negativa
Layout, wrapping y colocación
La alineación de FreeText usa avances visibles para la colocación izquierda, central o derecha; los espacios finales codificados y sus mapeos de origen permanecen presentes cuando el stream generado retiene esos fragments
El wrapping en límites de palabras y los saltos de párrafo duros tienen manejo separado; un espacio sin ruptura no se convierte en un separador suave ASCII ordinario
La ruta raw-font original retiene sus reglas acotadas de wrapping con espacio y guion; este conjunto de aceptación no establece todos los casos de line-breaking Unicode, bidireccionalidad o shaping complejo
El rectángulo físico de la anotación, los bounds del Form raíz y el clip interno permanecen fijos; los bounds temporales de Forms hijos consideran la cadena completa de ancestros y colocación
Pintado de glifos y clipping de texto
Tr | Pintado de glifos | Contribución al clip |
|---|---|---|
| 0 | Relleno | Ninguna |
| 1 | Stroke | Ninguna |
| 2 | Relleno y stroke | Ninguna |
| 3 | Sin pintado de glifos | Ninguna |
| 4 | Relleno | Contornos de glifos |
| 5 | Stroke | Contornos de glifos |
| 6 | Relleno y stroke | Contornos de glifos |
| 7 | Sin pintado de glifos | Contornos de glifos |
Los modos cuatro a siete acumulan contornos de glifos a través de los runs generados en un objeto de texto; el clip de texto acumulado se aplica después de ese objeto de texto a las decoraciones generadas posteriores de subrayado y tachado
El clip usa contornos de glifos en lugar de la silueta de stroke expandida; el estado de pintado sigue siendo específico de cada run y el alcance del graphics-state que encierra limita la vida del clip
El estado de stroke DA inicial se aplica en el alcance de decoración raíz así como en los alcances de texto; las anulaciones por run y el save y restore del graphics-state retienen su significado
Los cuatro casos de clipping positivo son una compuerta de aceptación separada con apariencias de dos runs escritas a mano, decoraciones recortadas positivas y muestras blancas fuera de la unión de glifos
Esa compuerta también usa un testigo de relleno de rectángulo de apariencia explícita para verificar el clipping de texto del backend; el testigo no afirma que la generación con apariencia faltante emite el relleno del rectángulo
La validación de lectura independiente de Tr4 a Tr7 positivos pasó los cuatro casos finitos de dos runs con el MuPDF 1.28.5 oficial y Poppler, incluidos ambos interiores de glifos, decoraciones recortadas y muestras blancas fuera de la unión de glifos
La revisión de prueba separada de solo clip usa Scale4 para seleccionar celdas de píxel completas desde puntos testigo sin cambios en espacio de página; retiene los umbrales de color originales y deja el rendering normal45 en Scale1
MuPDF 1.28.2 tiene un problema de compatibilidad de límites de clipping cuando un cambio de color vacía un run antes de un run posterior en el mismo objeto de texto; el run anterior puede quedar excluido de los límites de clip acumulados
El CLI oficial de MuPDF 1.28.5 y el Poppler fijado independientemente aceptaron estas apariencias sin cambios; las versiones de lectores y los controles finitos positivos siguen siendo distintos de una garantía para cada pipeline de rendering
Fitting automático
Un tamaño de fuente DA de cero inicia una búsqueda acotada de reducción y refinamiento desde el layout generado inicial, usando rutas de glifos transformadas, avances y decoraciones en lugar de solo una altura de línea sin transformar
La expansión del stroke incluye el soporte transformado conservador de esquinas con cap cuadrado punteadas y uniones de miter
La búsqueda retiene la cuantización de rutas establecida de Cairo y FreeType; no promete el tamaño de fuente ideal matemáticamente mayor ni un hinting idéntico entre lectores
Si ningún intento encaja antes de que la búsqueda acotada alcance su intento mínimo, el clip físico todavía acota la publicación; el contenido muy largo no tiene garantía de permanecer completamente visible
Fuentes originales y límites de recursos
El fallback original Type1C, CIDFontType0C y Type1 bare incrustado ya está soportado; las rutas de apariencia de instancia predeterminada OpenType CFF y CFF2 completas retienen sus reglas documentadas de mapeo e incrustación
Los streams CFF2 raw independientes y la selección de coordenadas de variación no predeterminadas quedan fuera de la ruta CFF2 liberada
Los límites de tokens, objetos, memoria de trabajo, operaciones, datos decodificados y salida se aplican al parsing, recursos temporales, fitting y publicación; la cancelación se consulta durante el trabajo acotado
La falla preserva el grafo de origen y permite la recuperación en el mismo documento; alcanzar un límite no convierte una apariencia parcialmente generada en un resultado exitoso
Aceptación reproducible y límites restantes
La suite pública es Tests/Linux/AnnotationDefaultAppearance/RunAnnotationDefaultAppearance.py, distribuida con sus assets y un manifiesto de archivo completo
Su modo normal ejecuta 45 pares candidato/AP-escrito-a-mano con diferencia máxima de canal de dos, siete grupos de límites originales y geometría continua original-AP independiente con épsilon 1e-6
Los renders de lectura original-AP positivos y las observaciones conocidas de celdas de píxel verticales se registran por separado de la geometría continua; ni la igualdad de pares ni esas observaciones finitas prueban geometría arbitraria de candidatos generados ni envolturas raster transformadas arbitrarias
El modo finite-AP verifica seis controles afines y de dash de apariencia explícita retenidos; no reemplaza la aceptación normal, las verificaciones de candidatos generados ni las pruebas de límites
Las 45 apariencias generadas retenidas pasaron la geometría continua independiente con épsilon 1e-6; sus 90 imágenes de lectura MuPDF y Poppler fijadas también pasaron un modelo independiente de imagen completa a través de todas las 3,168,000 celdas de píxel con diferencia máxima de canal cero, sin imágenes saltadas y sin celdas excluidas
Ese modelo finito deriva los glifos, transformaciones, clipping, trazos y composición esperados de las apariencias escritas a mano originales y los contornos de fuentes, usando el kernel FreeType fijado de cada lector; no aprende píxeles esperados de las imágenes observadas
La diferencia máxima de canal original sigue siendo dos y el umbral de tinta sigue siendo 245; estas pasadas cubren el corpus retenido y los pipelines fijados, no fuentes arbitrarias, todas las builds de renderers ni una prueba del tamaño ajustado matemáticamente mayor
Los objetivos FPC de Linux y Windows requieren FPC 3.3.1 o posterior; el FPC de Windows usa una build de dependencia NoGUI privada verificada por separado y no lanza lectores de escritorio
Temas relacionados: fallback de anotaciones, decoraciones de anotaciones, spacing de runs de rich text, apariencias raw-font originales y apariencias de instancia predeterminada OpenType CFF2