Rendering sicuro dei glifi a colori SVG

DrawRegisteredColorGlyph traduce un documento di glifi OpenType SVG ristretto in un Form XObject PDF riutilizzabile e limitato senza avviare un browser, uno script engine o un runtime SVG esterno

Profilo nativo

Il profilo accetta contenitori svg e g più geometrie path, rect, circle, ellipse, line, polyline e polygon

I dati dei path supportano comandi move, line, orizzontale, verticale, cubico, cubico smooth, quadratico, quadratico smooth, arco ellittico e close assoluti e relativi, con i segmenti quadratici e ad arco convertiti in curve cubiche PDF limitate

Colori solidi e gradienti vettoriali limitati possono essere ereditati attraverso i gruppi insieme a fill rules, stili di stroke solidi o con gradient, opacità, clip path, soft mask Alpha o Luminosity, visibilità, trasformazioni e riuso locale di #id

I nodi immagine PNG e JPEG vengono accettati solo come payload di dati Base64 limitati e vengono registrati come Image XObject, con l'alfa PNG conservato in una soft mask

I documenti della tabella SVG UTF-8 semplici e compressi con gzip usano lo stesso percorso limitato

Sicurezza e fallback

Il parser limita l'input compresso a 8 MiB, l'input espanso a 32 MiB, gli operatori PDF generati a 16 MiB, gli elementi a 4.096, l'annidamento a 64 e i valori dei path a 100.000

Tipi di documento, script, attributi di evento, risorse esterne, media type di dati non supportati, @import, riferimenti url() esterni, target use esterni ed elementi non supportati falliscono in modo chiuso prima della registrazione

Espansione dei gradienti, riuso locale, mask, annidamento e operatori generati restano soggetti agli stessi budget del parser; le mask usano transparency group limitati, rifiutano i riferimenti ricorsivi e consentono al massimo otto riferimenti mask attivi

Le immagini sono limitate a 128 nodi, 16.384 pixel per dimensione e 16.777.216 pixel in totale; consulta il profilo Importazione di SVG Form XObject per i confini completi di risorse e testo

Quando la validazione nativa non restituisce un risultato sicuro, OnColorGlyphRasterize riceve l'asset SVG originale e resta responsabile di qualunque insieme di funzionalità SVG più ampio richiesto dall'applicazione

Posizionamento

Il viewport SVG viene mappato con una scala uniforme che preserva l'aspect ratio nel quadrato della font-size richiesta, converte le coordinate Y verso il basso di SVG nelle coordinate Y verso l'alto di PDF e ancora il Form XObject alla baseline del glifo