Säker SVG-färgglyfrendering

DrawRegisteredColorGlyph översätter ett begränsat OpenType-SVG-glyfdokument till ett avgränsat, återanvändbart PDF Form XObject utan att starta webbläsare, skriptmotor eller extern SVG-körtid

Inbyggd profil

Profilen accepterar svg- och g-containrar samt path-, rect-, circle-, ellipse-, line-, polyline- och polygon-geometri

Path-data stöder absoluta och relativa move-, line-, horisontella-, vertikala-, kubiska-, jämna kubiska-, kvadratiska-, jämna kvadratiska-, elliptiska båg- och close-kommandon, där kvadratiska och bågsegment konverteras till avgränsade kubiska PDF-kurvor

Helfärger och avgränsade vektorgradienter kan ärvas genom grupper tillsammans med fyllnadsregler, helfärgs- eller gradientstreckstilar, opacitet, klippbanor, mjuka Alpha- eller Luminosity-masker, synlighet, transformeringar och lokal återanvändning av #id

PNG- och JPEG-bildnoder tas endast emot som avgränsade Base64-datanyttolaster och registreras som Image XObjects, där PNG-alfa behålls i en mjuk mask

Vanliga UTF-8- och gzip-komprimerade SVG-tabelldokument använder samma avgränsade sökväg

Säkerhet och reserv

Parsern begränsar komprimerad indata till 8 MiB, expanderad indata till 32 MiB, genererade PDF-operatorer till 16 MiB, element till 4 096, nästling till 64 och path-värden till 100 000

Dokumenttyper, skript, händelseattribut, externa resurser, datamedietyper som inte stöds, @import, externa url()-referenser, externa use-mål och element som inte stöds misslyckas slutet innan registrering

Gradientexpansion, lokal återanvändning, maskning, nästling och genererade operatorer omfattas fortfarande av samma parserbudgeter; masker använder avgränsade transparensgrupper, avvisar rekursiva referenser och tillåter högst åtta aktiva maskreferenser

Bilder begränsas till 128 noder, 16 384 pixlar per dimension och totalt 16 777 216 pixlar; se profilen SVG Form XObject-import för de fullständiga resurs- och textgränserna

När den inbyggda valideringen inte returnerar något säkert resultat tar OnColorGlyphRasterize emot det ursprungliga SVG-materialet och förblir ansvarigt för den bredare SVG-funktionsuppsättning som applikationen kräver

Placering

SVG:ns visningsport mappas med en enhetlig, aspektbevarande skala in i den begärda teckenstorlekens kvadrat, SVG:ns nedåtriktade Y-koordinater konverteras till PDF:ns uppåtriktade Y-koordinater, och Form XObject:en förankras vid glyfens baslinje