Bezpieczne renderowanie kolorowych glifów SVG
DrawRegisteredColorGlyph tłumaczy ograniczony dokument glifów OpenType SVG na ograniczony, wielokrotnego użytku PDF Form XObject, bez uruchamiania przeglądarki, silnika skryptów ani zewnętrznego runtime SVG
Profil natywny
Profil przyjmuje kontenery svg i g oraz geometrię path, rect, circle, ellipse, line, polyline i polygon
Dane ścieżek obsługują komendy absolutne i relatywne: move, line, horizontal, vertical, cubic, smooth cubic, quadratic, smooth quadratic, elliptical arc i close, przy czym segmenty kwadratowe i łuki są konwertowane do ograniczonych krzywych sześciennych PDF
Kolory jednolite i ograniczone gradienty wektorowe mogą być dziedziczone przez grupy razem z regułami wypełnienia, stylami stroke jednolitymi lub gradientowymi, nieprzezroczystością, ścieżkami clip, miękkimi maskami Alpha lub Luminosity, widocznością, transformacjami i lokalnym ponownym użyciem #id
Węzły obrazów PNG i JPEG są przyjmowane wyłącznie jako ograniczone ładunki danych Base64 i rejestrowane jako Image XObject, przy czym alpha PNG trafia do miękkiej maski
Dokumenty z tabeli SVG, zwykłe UTF-8 i kompresowane gzip, używają tej samej ograniczonej ścieżki
Bezpieczeństwo i fallback
Parser ogranicza wejście skompresowane do 8 MiB, wejście rozwinięte do 32 MiB, wygenerowane operatory PDF do 16 MiB, elementy do 4 096, zagnieżdżenie do 64, a wartości ścieżek do 100 000
Typy dokumentów, skrypty, atrybuty zdarzeń, zasoby zewnętrzne, nieobsługiwane typy mediów danych, @import, zewnętrzne referencje url(), zewnętrzne cele use i nieobsługiwane elementy kończą się błędem fail-closed przed rejestracją
Rozwijanie gradientów, lokalne ponowne użycie, maskowanie, zagnieżdżanie i wygenerowane operatory podlegają tym samym budżetom parsera; maski używają ograniczonych grup przezroczystości, odrzucają rekurencyjne referencje i dopuszczają najwyżej osiem aktywnych referencji masek
Obrazy są ograniczone do 128 węzłów, 16 384 pikseli na wymiar i łącznie 16 777 216 pikseli; pełne granice zasobów i tekstu opisuje profil Importu SVG jako Form XObject
Gdy natywna walidacja nie zwróci bezpiecznego wyniku, OnColorGlyphRasterize odbiera oryginalny zasób SVG i nadal odpowiada za szerszy zestaw funkcji SVG wymagany przez aplikację
Rozmieszczanie
Viewport SVG jest mapowany jednolitą skalą zachowującą proporcje do kwadratu żądanego rozmiaru fontu, konwertuje skierowane w dół współrzędne Y SVG na skierowane w górę Y PDF i kotwiczy Form XObject na linii bazowej glifu