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