Appearances por defecto nativas de FreeText
El fallback nativo de FreeText aplica el estado de appearance por defecto acotado al texto generado, el layout, el ajuste automático y las decoraciones
Una appearance normal suministrada tiene precedencia sobre la generación desde la appearance por defecto de FreeText y el rich text
Operadores de appearance por defecto
| Operadores | Comportamiento del fallback |
|---|---|
Tf | Selecciona el recurso de fuente original y el tamaño del texto; tamaño cero solicita ajuste automático acotado |
g rg k | Inicializa el color de relleno del texto en gris, RGB o CMYK |
Tc Tw Tz | Aplica espaciado de caracteres, espaciado de palabras y escala horizontal del texto a las mediciones de pintado y layout |
Ts TL | Aplica elevación del texto y separación explícita de la línea base, incluido interlineado 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 de clipping de texto de cero a siete |
G RG K w J j M d | Inicializa color de trazo, width, cap, join, miter y estado de dash para texto y 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; la elevación, el espaciado y la matriz lineal participan en la geometría transformada de glifos, avances y decoraciones
Este es un perfil de appearance por defecto acotado, no un intérprete general de content streams de PDF; operadores no soportados, recuentos de operandos inválidos, valores mal formados y matrices de texto repetidas producen un error de rendering
Las componentes del color de trazo deben estar en el rango de cero a uno, los valores de cap y join deben ser enteros de cero a dos, la width no debe ser negativa y el límite de miter debe ser al menos uno
Un array de dash puede contener como máximo 256 valores finos no negativos y un array no vacío debe contener un valor positivo; un array vacío selecciona trazos sólidos, un array impar se repite y la fase no debe ser negativa
Layout, ajuste de línea y colocación
La alineación de FreeText usa avances visibles para la colocación izquierda, centrada o derecha; los espacios finales codificados y sus mapeos de origen permanecen presentes cuando el stream generado conserva esos fragmentos
El ajuste por límites de palabra y los saltos de párrafo duros tienen manejo separado; un espacio de no separación no se convierte en un separador suave ASCII ordinario
La ruta de fuente cruda original conserva sus reglas acotadas de ajuste por espacios y guiones; este conjunto de aceptación no establece cada caso Unicode de salto de línea, bidireccional o de shaping complejo
El rectángulo físico de la anotación, los bounds del Form raíz y el clip interior permanecen fijos; los bounds de Forms hijos temporales tienen en cuenta 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 | Trazo | Ninguna |
| 2 | Relleno y trazo | Ninguna |
| 3 | Sin pintado de glifos | Ninguna |
| 4 | Relleno | Contornos de glifos |
| 5 | Trazo | Contornos de glifos |
| 6 | Relleno y trazo | Contornos de glifos |
| 7 | Sin pintado de glifos | Contornos de glifos |
Los modos cuatro a siete acumulan contornos de glifos entre runs generados en un objeto de texto; el clip de texto acumulado se aplica después de ese objeto de texto a las decoraciones de subrayado y tachado generadas posteriores
El clip usa contornos de glifos en lugar de la silueta expandida del trazo; el estado de pintado permanece específico de cada run y el scope de graphics state que los encierra limita la vida del clip
El estado de trazo DA inicial se aplica en el scope de decoración raíz y también en los scopes de texto; los overrides por run y el save/restore de graphics state conservan su significado
Los cuatro casos de clipping positivo son una puerta de aceptación separada con appearances de dos runs escritas a mano, decoraciones clípeadas positivas y muestras blancas fuera de la unión de glifos
Esa puerta también usa un testigo de relleno rectangular de appearance explícita para probar el clipping de texto del backend; el testigo no afirma que la generación ante appearance faltante emita el relleno rectangular
La validación de lector positiva independiente de Tr4 a Tr7 pasó los cuatro casos finos de dos runs con MuPDF 1.28.5 oficial y Poppler, incluyendo ambos interiores de glifos, decoraciones clípeadas 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; conserva los umbrales de color originales y deja el rendering normal45 en Scale1
MuPDF 1.28.2 tiene un problema de compatibilidad de bounds 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 bounds de clip acumulados
La CLI oficial de MuPDF 1.28.5 y el Poppler fijado de forma independiente aceptaron estas appearances sin cambios; las versiones de lectores y los controles positivos finos siguen siendo distintos de una garantía para cada pipeline de rendering
Ajuste automático
Un tamaño de fuente DA 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 trazo incluye el soporte transformado conservador de esquinas con cap cuadrada dash y joins de miter
La búsqueda conserva la cuantización de rutas Cairo y FreeType establecida; no promete el tamaño de fuente ideal matemáticamente mayor ni hinting idéntico entre lectores
Si ningún intento cabe antes de que la búsqueda acotada alcance su mínimo, el clip físico sigue limitando la publicación; el contenido muy largo no tiene garantía de permanecer totalmente visible
Fuentes originales y límites de recursos
El fallback de Type1C, CIDFontType0C y Type1 crudo original incrustado ya está soportado; las rutas de appearance completas de OpenType CFF y CFF2 de instancia por defecto conservan sus reglas documentadas de mapeo e incrustación
Los streams CFF2 crudos independientes y la selección de coordenadas de variación no por defecto siguen fuera de la ruta CFF2 publicada
Los límites de tokens, objetos, memoria de trabajo, operaciones, datos decodificados y salida se aplican al parsing, los recursos temporales, el ajuste y la publicación; la cancelación se consulta durante el trabajo acotado
El fallo preserva el grafo de origen y permite recuperación en el mismo documento; alcanzar un límite no convierte una appearance generada parcialmente en un resultado exitoso
Aceptación reproducible y fronteras 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-manuscrito con diferencia máxima de canal de dos, siete grupos de límites originales y geometría continua independiente de AP original con épsilon 1e-6
Los renderizados positivos de lector de AP original y las observaciones verticales conocidas de celdas de píxel se registran por separado de la geometría continua; ni la igualdad de pares ni esas observaciones finas prueban geometría arbitraria de candidatos generados ni envolturas raster transformadas arbitrarias
El modo AP fino comprueba seis controles afines y de dash de appearance explícita conservados; no reemplaza la aceptación normal, las comprobaciones de candidatos generados ni los tests de límites
Las 45 appearances generadas conservadas pasaron geometría continua independiente con épsilon 1e-6; sus 90 imágenes de lector MuPDF y Poppler fijadas también pasaron un modelo independiente de imagen completa sobre las 3.168.000 celdas de píxel con diferencia máxima de canal cero, sin imágenes omitidas ni celdas excluidas
Ese modelo fino deriva los glifos esperados, transformaciones, clipping, trazos y composición de las appearances manuscritas originales y los contornos de fuentes, usando el kernel FreeType fijado de cada lector; no aprende los 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; estos éxitos cubren el corpus conservado 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 privada de dependencias NoGUI verificada por separado y no lanza lectores de escritorio
Temas relacionados: fallback de anotaciones, decoraciones de anotaciones, espaciado de runs de rich text, appearances de fuente cruda originales y appearances de instancia por defecto OpenType CFF2