Renderizado seguro de glifos de color SVG

DrawRegisteredColorGlyph traduce un documento de glifo SVG de OpenType restringido a un Form XObject de PDF acotado y reutilizable, sin arrancar un navegador, un motor de scripts ni un runtime SVG externo

Perfil nativo

El perfil acepta los contenedores svg y g además de la geometría path, rect, circle, ellipse, line, polyline y polygon

Los datos de path soportan comandos absolutos y relativos de move, line, horizontal, vertical, cúbica, cúbica suave, cuadrática, cuadrática suave, arco elíptico y close, con los segmentos cuadráticos y de arco convertidos a curvas cúbicas de PDF acotadas

Los colores sólidos y los gradientes vectoriales acotados pueden heredarse a través de grupos junto con las reglas de relleno, los estilos de trazo sólidos o con gradiente, la opacidad, los clip paths, las soft masks Alpha o Luminosity, la visibilidad, las transforms y la reutilización local de #id

Los nodos de imagen PNG y JPEG se aceptan solo como payloads de datos Base64 acotados y se registran como Image XObjects, con el alpha PNG retenido en una soft mask

Los documentos de tabla SVG en UTF-8 plano y comprimidos con gzip usan la misma ruta acotada

Seguridad y fallback

El parser acota la entrada comprimida a 8 MiB, la entrada expandida a 32 MiB, los operadores PDF generados a 16 MiB, los elementos a 4,096, el anidamiento a 64 y los valores de path a 100,000

Los tipos de documento, los scripts, los atributos de evento, los recursos externos, los media types de datos no soportados, @import, las referencias url() externas, los targets use externos y los elementos no soportados fallan de forma cerrada antes del registro

La expansión de gradientes, la reutilización local, el masking, el anidamiento y los operadores generados quedan sujetos a los mismos presupuestos del parser; las masks usan transparency groups acotados, rechazan referencias recursivas y permiten como máximo ocho referencias de mask activas

Las imágenes se limitan a 128 nodos, 16,384 píxeles por dimensión y 16,777,216 píxeles en total; consulte el perfil de importación de SVG Form XObject para conocer los límites completos de recursos y texto

Cuando la validación nativa no devuelve un resultado seguro, OnColorGlyphRasterize recibe el asset SVG original y sigue siendo responsable de cualquier conjunto de características SVG más amplio que la aplicación requiera

Ubicación

El viewport del SVG se mapea con una escala uniforme que preserva la relación de aspecto hacia el cuadrado del font-size solicitado, convierte las coordenadas Y descendentes del SVG a coordenadas Y ascendentes del PDF y ancla el Form XObject en la baseline del glifo