SVG (Scalable Vector Graphics) je format datoteke, odnosno specifikacija koja služi za opisivanje dvodimenzionalne vektorske grafike (statične i animirane) pomoću XML jezika.
SVG je standardizovani neutralni otvoreni vektorski format, razvio ga je W3C konzorcijum (World Wide Web Consortium), poznata organizacija koja razvija i implementira standarde za internet (CSS, HTML, XHTML, XML...). Počeo je da se razvija 1999., a verzija 1.0 se pojavila 2001. SVG nije 2D CAD format, ali se u praksi često koristi za razmenu 2D geometrije tako da je korisno znati njegove osnovne osobine.
XML (Extensible Markup Language - Proširivi jezik za označavanje) je standardizovani skup opštih sintaksi za opisivanje podataka pomoću odgovarajućih etiketa (Tags) koje imaju poznato i lako razumljivo značenje. Poštovanjem XML standarda moguće je opisati razne vrste podataka t.j. napraviti specifikacije za sopstvene formate podataka koji će biti čitljivi i računaru i čoveku. Podaci specifikovani pomoću XML pravila se mogu smestiti u tekstualnu datoteku koja može služiti za skladištenje, obradu ili razmenu.

Glavni razlog nastanka SVG formata je bio prikazivanje vektorske grafike na internetu. U početku je to bila njegova glavna namena i već 2011. su skoro svi glavni veb pregledači podržavali ovaj format.
Pored vektorskih slika na internetu (logo, ikona, grafički elementi na veb trani...) SVG format se često koristi i za ilustracije, 2D konture, šare... Ovaj format je veliki zamajac dobio pojavom besplatnog softvera Inkscape i jeftinih 2,5 osnih RNU (CNC) mašina. Inkscape je danas jedan od najviše korišćenih softvera za vektorsko crtanje, a SVG format je izvorni format ovog softvera.
Početkom 2000-ih su 2,5 osne RNU mašine postale pristupačnije i počela je njihova nagla ekspanzija. Kupovali su ih male firme, zanatlije, pa čak i entuzijasti koji su pokušavali sa njima da započnu neki posao. Ovaj proces traje i dan danas. Kupovina mašine je za sve njih bio veliki izdatak i većina njih nije imala novca za kupovinu dodatnih softvera za crtanje (vektorski ili 2D CAD) i generisanje G-koda (CAM). Jedino rešenje koje su imali su bili besplatni ili jeftini softveri. Ovo je bila odlična vest za Inkscape jer je polako počela njegova ekspanzija.
Veliki broj vlasnika 2,5 osnih RNU mašina nisu znali da crtaju, što je podstaklo prodaju i razmenu dezena na internetu. Pojavili su se specijalizovani sajtovi koji su nudili kako besplatne tako i komercijalne dezene. Većinu ovih dezena su crtali entuzijasti koji takođe nisu imali novca za komercijalne 2D CAD ili vektorske softvere i bili su osuđeni na korišćenje besplatnih ili jeftinih softvera. Pošto ovi softveri imaju lošu podršku za komercijalne 2D formate kao što su DWG, AI (Adobe Illustrator) ili CDR (Corel Draw), SVG i donekle DXF format su bili jedini formati koje su mogli koristiti.

Primer dezena za isecanje ponuđenih na jednom veb sajtu
Cela ova situacija se pozitivno odrazila na SVG format jer se on počeo koristiti na totalno različit način od planiranog. Vremenom je on postao univerzalni neutralni format za razmenu kontura koje treba iseći na 2,5 osnim RNU glodalicama, mašinama za isecanje laserom, plazmom...
SVG format se može koristiti i za razmenu tehničkih crteža, ali na žalost ti crteži su sa stanovišta 2D CAD softvera mrtvi crteži. 2D CAD formati elemente tehničkih crteža (pogled, kota, pokazna oznaka...) opisuju kao posebne objekte i veliki broj 2D CAD softvera će prilikom uvoza nekog crteža automatski prepoznati ove elemente. SVG format ne zna da opiše elemente tehničkog crteža kao posebne objekte i svi oni će biti predstavljeni kao obična geometrija. Npr. Kota neće biti objekat kota već skup linija i tekst. Naravno, ovakve crteže veoma teško uređivati i oni se mogu samo pregledati, arhivirati ili štampati.
Na žalost upotreba SVG formata kao neutralnog 2D CAD formata je njegova sporedna upotreba. Organizacija W3C koja razvija ovaj format nije stručna za mašinstvo i građevinu i teško da će doći na ideju da od SVG formata napravi neutralni format za razmenu tehničkih crtaža.
Danas je SVG univerzalni 2D format i podržan je od velikog broja softvera raznih namena. Datoteke u SVG formatu možete otvoriti u softverima za uređivanje vektorske i rasterske grafike, 2D i 3D CAD softverima, CAM softverima, kancelarijskim softverskim paketima...
SVG format ima veoma široku upotrebu i danas najčešće služi:
kao format za razmenu vektorske grafike (grafički elementi na veb stranicama, ikone, elementi interfejsa, logo-i, ilustracije, dezeni, šare, dekoracije, dijagrami, grafikoni...),
kao format za razmenu kontura koje treba iseći na 2,5 osnim RNU mašinama (glodalice, laseri, plazme...),
za razne specifične namene. Na primer: najlakši način da napravite šablon za tehnički crtež u FreeCAD-u je da koristite program Inkscape i SVG format.
Postoji nekoliko verzija SVG formata:
SVG 1.0 – 4. septembra 2001,
SVG 1.1 – 14. januar 2003,
SVG Tiny 1.1 i SVG Basic (SVG format za mobilne telefone i uređaje sa smanjenim mogućnostima) – 14 January 2003,
SVG Tiny 1.2 – 22. december 2008,
SVG 1.2 je prestao da se razvija u korist SVG 2.0,
SVG 1.1 Second Edition – 16. august 2011,
SVG 2.0 – 15. septembar 2016,
SVG Tiny 1.2 Portable/Secure - 29. jul 2020.
Većina ljudi pod terminom digitalna slika smatra rastersku sliku. Rasterske (bitmapirane) slike su napravljene pomoću pravougaone mreže piksela t.j. sitnih kvadrata koji mogu imati određene boje. Što veći broj ovih kvadrata to je rezolucija slike veća t.j. bolji je kvalitet slike. Ako počnemo da uvećavamo rastersku sliku ona gubi kvalitet i na kraju će biti vidljivi čak i sami pikseli.
Vektorska grafika se razlikuje od rasterske jer ne sadrži podatke o slici piksel po piksel, već kao listu grafičkih objekata od kojih se sastoji vektorska ilustracija. Grafički objekti su unutar vektorskih formata matematički opisani tako da ne gube na kvalitetu uvećavanjem slike. Vektorski formati su mnogo sličniji 2D CAD formatima nego rasterskim.

Uvećana rasterska i vektorska slika
Prednosti SVG formata:
podržava 3 vrste grafičkih objekata: vektorske, rasterske i tekst,
Otvoreni standard - SVG format je otvoreni standard i svako može da ga koristi za svoje potrebe,
Tekstualni format - SVG format je tekstualni format tako da unutrašnjost datoteke možete pregledati i uređivati sa običnim programima za uređivanje teksta. Programski kod unutar datoteke se može kopirati, isecati, nalepiti, indeksirati, pretraživati...,
Veličina datoteteke - SVG datoteke su uglavnom manje od rasterskih datoteka (JPEG ili GIF) sličnog kvaliteta. Ovaj podatak uzmite sa rezervom, jer veličina mnogo zavisi od sadržaja slike,
Arhiviranje - SVG datoteke je moguće komprimovati pomoću GZIP algoritma za arhiviranje. U tom slučaju one imaju ekstenziju SVGZ i obično su za oko 20-50% manje od nekomprimovanih. SVG datoteke su teksualne datoteke tako da se mogu kvalitetno komprimovati i sa bilo kojim drugim algoritmom za arhiviranje 7z, zip, arj...,
Uvećavanje i kvalitet - Slika u SVG vektorskom formatu ne gubi kvalitet njenim uvećavanjem,
Podrška - Veliki broj raznih vrsta softvera podržava SVG format,
Tačnost - Pošto SVG format matematički opisuje nacrtane geometrijske elemente, konture su glatke i precizne,
Filteri - Na grafičke elemente opisane SVG formatom moguće je primenjivati razne filtere ili efekte, slično kao pri obradi rasterskih slika. U tekstu SVG koda se filteri opisuju pomoću etiketa (tagova), a za vizuelizaciju filtera je odgovoran softver sa kojim pregledate vektorsku sliku. Na ovaj način filteri veoma malo utiču na veličinu datoteke, a efekti i filteri će se razmeniti i prikazati ako ih softver podržava,
Ugradnja rasterskih slika - Postoji mogućnost ugrađivanja rasterskih slika (png, gif ili jpg) u SVG format,
Animacija - Ovaj format podržava animaciju. Animaciju je moguće realizovati pomoću SMIL (Synchronized Multimedia Integration Language) jezika, jezicima koji se baziraju na specifikaciji ECMAScript ili pomoću JavaScript,
HTML i XHTML - SVG format se lako integriše sa HTML i XHTML dokumentima,
Kompatibilnost sa CSS - Izgledom grafičkih elementa u ovom formatu je moguće upravljati pomoću CSS jezika,
XML - Zbog toga što se bazira na XML, od njega je preuzeo sve dobre osobine: rad u različitim okruženjima, podrška Unicode standardu, podrška od velikog broja programa...,
Metapodaci - SVG format podržava metapodatke, što je veoma korisno jer u softveru možete definisati ime dela, autora, autorska prava, opis, ključne reči… Meta podaci omogućavaju kvalitetni prenos određenih informacija o slici, a takođe i bolje indeksiranje i pretraživanje datoteka,
Opisivanje stranica dokumenata - Iako je SVG prevashodno namenjen za grafiku u njegovu specifikaciju je uključena osnovna podrška jezika (sličnog kao PDF) za opisivanje stranica dokumenata.
Nedostaci SVG formata:
SVG format ne podržava 3D grafiku,
Nasledio je sve nedostatke XML: opširna sintaksa sa mnogo suvišnih delova, manja čitljivost u odnosu na druge tekstualne formate kao što je npr. JSON, velike datoteke, veličina datoteke zavisi od osobe koja definiše format...,
Veličina datoteke brzo raste ako se povećava broj sitnih detalja,
Da bi se isčitao mali deo datoteke potrebno je pročitati celu datoteku. Zbog ove osobine SVG format nije moguće koristiti u softverima koji obrađuju geografske mape,
Bezbednost - Pošto SVG format može da sadrži skripte ili CSS on predstavlja bezbedonosni rizik.
Struktura SVG formata - Imao sam u planu da opišem i strukturu koda SVG datoteke, ali kad sam počeo da istražujem tu tematiku zaključio sam da od tih informacija prosečni mašinac ili građevinac baš i nema mnogo koristi. Ako nekome trebaju te informacije, verovatno se razume u programiranje i lako će samostalno naći sve što mu treba na tu temu.
Na kraju sam rešio samo da objavim dve slike na kojima se nalazi kod dve SVG datoteke koje prikazuju istu geometriju (slika ispod):
Slika 1 - Na ovoj slici je prikazan minimalni SVG kod koji je potreban da opiše pravougaonik, krug i tekst.

Ako pažljivije pogledate kod na slici primetićete da je on jednostavan i razumljiv čak i laiku. Svi podaci se nalaze unutar korenih elemenata <svg i </svg>. Podaci su pregledno poređani i prvo idu dimenzije dokumenta (width="210mm" height="297mm"), pa sledi podatak o verziji SVG specifikacije (version="1.1"), pa deklaracija o imenskom prostoru (xmlns="http://www.w3.org/2000/svg") i na kraju se ređaju podaci koji opisuju objekte. Svaki objekat ima svoju oznaku (rect, circle, text...) iza koje slede podaci koji opisuju veličinu, položaj, stil (boja i širina konture, boja unutrašnjosti...).
SVG format prepoznaje sledeće objekte:
Paths (Staza)
Basic shapes (Osnovni oblici)
Text (Tekst)
Painting (Slika)
Color (Boja)
Gradients and patterns (Prelivi i šabloni)
Clipping, masking and compositing
Filter effects (Filteri i efekti)
Interactivity
Linking (Hiperveze)
Scripting (Skripte)
Animation (Animacija)
Fonts (Fontovi)
Metadata (Meta podaci)
Slika 2 - Na ovoj slici sam prikazao kod SVG datoteke koja opisuje iste grafičke elemente, ali su oni nacrtani i sačuvani u Inkscape softveru. Ako uporedite kod ove datoteke sa prethodnim, razlika je ogromna iako su nacrtani isti elementi. U ovoj datoteci se pored najosnovnijih podataka o geometriji i stilu objekata nalaze i atributi koje je u datoteku ubacio softver Inkscape, metapodaci koje sam uneo tokom crtanja, slojevi koje sam napravio i koristio...

U specifikaciji SVG formata je podrobno opisana sintaksa t.j. način na koji SVG format opisuje sve objekte. Kompletnu specifikaciju SVG formata možete pronaći na zvaničnom W3C veb sajtu: SVG verzija 2 specifikacija