SVG

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 21 ianuarie 2019; verificările necesită 25 de modificări .
Grafică vectorială scalabilă
Extensie .svgsau.svgz
tip MIME imagine/svg+xml
Dezvoltator Consorțiul World Wide Web
Ultima lansare SVG Tiny 1.2
SVG 1.1 (Ediția a doua)
SVG 2
Tip de format Grafică vectorială
Extins din XML
format deschis ? da
Site-ul web w3.org/Graphics/SVG/svgwg.org
_
 Fișiere media la Wikimedia Commons

SVG (din limba engleză  S calable Vector G raphics  - scalable vector graphics ) este un limbaj de marcare pentru grafică vectorială scalabil creat de World Wide Web Consortium (W3C) și inclus într-un subset al limbajului de marcare extensibil XML , conceput pentru a descrie bidimensional. grafică vectorială și mixtă vectorială / raster în format XML. Suportă atât grafică interactivă, cât și grafică animată - sau, în alți termeni, declarativă și scriptată. Nu acceptă descrieri ale obiectelor tridimensionale (a nu se confunda cu simularea tridimensionalității prin clarobscur). Este un standard deschis recomandat de W3C, organizația din spatele standardelor precum HTML și XHTML . SVG se bazează pe limbajele de marcare VML și PGML . Dezvoltat din 1999. În 2001, a fost lansată versiunea 1.0, în 2011 - versiunea 1.1, care rămâne relevantă până în prezent. Versiunea 2 este în prezent în dezvoltare activă.

Caracteristici ale limbii

<path fill= "niciun" stroke= "negru" d= "M 228 238 L 328 90 L 346 250 L 201 124 L 410 150 L 228 238" />
  • Descrierea formelor geometrice de bază (poligoane, dreptunghiuri, cercuri etc.).
  • O gamă largă de proprietăți vizuale care pot fi aplicate formelor și căilor: colorare, transparență, colțuri rotunjite etc.
  • Interactivitate . Pe fiecare element individual și pe întreaga imagine, puteți agăța un handler de evenimente (click, mutare, apăsare de tastă etc.), astfel încât utilizatorul să poată controla imaginea (de exemplu, muta unele elemente cu mouse-ul [1] ).
  • Animație și scenarii. Folosind ECMAScript sau JavaScript , puteți descrie chiar și cele mai complexe scenarii legate de calculele matematice ale coordonatelor și proporțiilor formelor. Împreună cu interactivitatea și animația SMIL , aceasta oferă o gamă foarte largă de posibilități pentru dezvoltatorii de grafică web.

Avantajele

  • Format text - fișierele SVG pot fi citite și editate (cu anumite abilități) folosind editori de text obișnuiți . Când vizualizați documente care conțin grafică SVG, aveți acces pentru a vizualiza codul fișierului care este vizualizat și posibilitatea de a salva întregul document. În plus, fișierele SVG tind să fie mai mici decât imaginile JPEG sau GIF comparabile și să se comprima bine.
  • Scalable - SVG este un format vectorial . Este posibil să măriți orice parte a unei imagini SVG fără a pierde calitatea. În plus, este posibil să se aplice filtre elementelor unui document SVG - modificatori speciali pentru crearea de efecte similare cu cele utilizate la procesarea imaginilor bitmap (blurring, extrusion, complex transformation systems etc.). În textul codului SVG, filtrele sunt descrise prin etichete care sunt redate de vizualizator, ceea ce nu afectează dimensiunea fișierului sursă, oferind în același timp expresivitatea ilustrativă necesară.
  • Utilizarea graficelor bitmap în documentele SVG este disponibilă pe scară largă. Puteți insera elemente cu imagini PNG, GIF sau JPG.
  • Textul dintr-o grafică SVG este text, nu o imagine, deci poate fi selectat și copiat, este indexat de motoarele de căutare și nu este nevoie să creați metafișiere suplimentare pentru roboții de căutare .
  • Animația este implementată în SVG folosind limbajul SMIL (Synchronized Multimedia Integration Language), dezvoltat tot de consorțiul W3C. Sunt acceptate limbaje de scriptare bazate pe specificația ECMAScript . Elementele SVG pot fi manipulate cu JavaScript . Utilizarea scripturilor și a animațiilor în SVG vă permite să creați grafică dinamică și interactivă. În SVG, este furnizat un model de eveniment, evenimentele sunt urmărite ( încărcarea paginii, modificarea parametrilor acesteia, mouse-ul, evenimentele de la tastatură etc. ). Animația poate fi declanșată de un anumit eveniment (de exemplu , „onmouseover” sau „onclick” ), ceea ce face grafica interactivă. Fiecare element are propriile evenimente la care pot fi atașate scripturi individuale.
  • SVG este un standard deschis. Spre deosebire de alte formate, SVG nu este proprietar.
  • Documentele SVG sunt ușor de integrat cu documentele HTML și XHTML. SVG-urile externe sunt conectate prin eticheta <object> , valoarea atributului de date este numele fișierului cu extensia „.svg” care conține marcajul SVG și având tipul MIME image/svg+xml. Atributele lățime și înălțime definesc dimensiunile orizontale și verticale ale zonei SVG. Elementele SVG sunt compatibile cu HTML și DHTML.
  • Compatibilitate cu CSS ( Engleză  Cascading Style Sheets ). Afișarea (formatarea și decorarea) elementelor SVG poate fi controlată prin foaia de stil CSS 2.0 și extensiile acesteia, sau direct prin atributele elementului SVG.
  • SVG oferă toate beneficiile XML :
    • Abilitatea de a lucra în diverse medii.
    • Internaționalizare (suport pentru Unicode ).
    • Disponibilitate largă pentru diverse aplicații.
    • Modificare ușoară prin intermediul API -urilor standard  precum DOM . SVG acceptă modelul de obiect document W3C standardizat DOM, oferind acces la orice element, ceea ce oferă ample oportunități de a schimba dinamic elementele, atributele și evenimentele acestora.
    • Conversie ușoară cu foi de stil XSLT . Ca orice format bazat pe XML, SVG vă permite să utilizați tabele de transformare (XSLT) pentru a-l procesa. Prin conversia datelor XML în SVG folosind XSL simplu , puteți obține cu ușurință o reprezentare grafică a oricăror date, de exemplu, vizualizați molecule chimice descrise în CML .

Dezavantajele formatului

  • Nu există deloc suport pentru grafica 3D
  • SVG moștenește toate dezavantajele XML , cum ar fi o dimensiune mare a fișierului (cu toate acestea, aceasta din urmă este compensată de existența unui format SVGZ comprimat , dar utilizarea lui este dificilă în prezent, deoarece SVGZ nu are propriul său tip MIME ).
  • Dificil de utilizat în aplicațiile de cartografiere mari din cauza faptului că documentul trebuie citit în întregime pentru a afișa corect o mică parte a imaginii.
  • Cu cât sunt mai multe detalii fine din imagine, cu atât dimensiunea datelor SVG crește mai repede. Un caz extrem este atunci când imaginea este zgomot alb . În acest caz, SVG nu numai că nu oferă niciun avantaj în dimensiunea fișierului, ci chiar și o pierdere în comparație cu formatul bitmap. În practică, SVG devine neprofitabil cu mult înainte ca imaginea să ajungă la stadiul de zgomot alb.

Structura unui document SVG

Prima linie este un antet XML standard, o declarație (de exemplu, declarație XML )  , care indică versiunea XML (versiunea) ( de obicei „1.0” ) și codificarea caracterelor (codificare):

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

Al doilea și al treilea rând ar trebui să conțină antetul DOCTYPE , care definește tipul de document ( Definiții tip document ) DTD : 

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">

Din păcate, în unele cazuri când utilizați Mozilla Firefox cu un vizualizator SVG încorporat, conținutul declarației DOCTYPE poate fi o sursă de erori. Există recomandări de a nu folosi declarația DOCTYPE în versiunile SVG 1.0. În schimb, se recomandă includerea atributului baseProfile pe elementul rădăcină <svg> cu o valoare „full” [2] .

Dacă dintr-un anumit motiv este necesară o declarație DOCTYPE într-un document, se recomandă utilizarea unei declarații goale, ca în exemplu.

<!DOCTYPE svg [ <!-- datele dvs. --> ]>

A patra linie este elementul rădăcină al documentului cu spațiul de nume SVG .

<svg version= "1.1" baseProfile= "full" xmlns= "http://www.w3.org/2000/svg" xmlns:xlink= "http://www.w3.org/1999/xlink" xmlns: ev= "http://www.w3.org/2001/xml-events" width= "100%" height= "100%" >

Urmează restul textului documentului, imbricat în elementul rădăcină, unde se află de fapt elementele care descriu conținutul scenei codificate.

Documentul se termină întotdeauna cu eticheta rădăcină de închidere </svg>.

Exemple

  • Un document SVG static simplu, cu un contur pătrat de 400 px și trei cercuri semi-transparente de 104 px în centrul pătratului, fiecare cerc decalat față de centrul pătratului cu aproximativ jumătate de rază.
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg version = "1.1" baseProfile= "full" xmlns = "http://www.w3.org/2000/svg " xmlns:xlink = "http://www.w3.org/1999/xlink" xmlns:ev = "http://www.w3.org/2001/xml-events" înălțime = "400px" lățime = "400px " > <rect x= "0" y= "0" width= "400" height= "400" fill= "none" stroke= "negru" stroke-width= "5px" stroke-opacity= "0,5" /> <g umplere-opacitate= "0.6" stroke= "negru" stroke-width= "0.5px" > <circle cx= "200px" cy= "200px" r= "104px" fill= "red" transform= "traducere( 0,-52)" /> <circle cx= "200px" cy= "200px" r= "104px" fill= "blue" transform= "translate( 60, 52)" /> <circle cx= "200px" cy = "200px" r= "104px" fill= "verde" transform= "traducere(-60, 52)" /> </g> </svg>

Notă: Acest cod rulează la fel în Mozilla Firefox 2.0.0.11 și în Internet Explorer 6.0.2900.2180 (SVG Document Adobe Systems Inc.)

  • Un alt exemplu este un dreptunghi cu colțuri rotunjite care umple întreaga zonă de afișare:
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3. org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg version= "1.1" baseProfile= "full" xmlns= "http://www.w3.org/2000/svg" xmlns:xlink= "http ://www.w3.org/1999/xlink" xmlns:ev= "http://www.w3.org/2001/xml-events" width= "100%" height= "100%" > <rect fill = "alb" x= "0" y= "0" latime= "100%" inaltime= "100%" /> <rect fill= "argintiu" x= "0" y= "0" latime= "100% " height= "100%" rx= "1em" /> </svg>
  • stea galbena:
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg width= "198" height= "188" viewBox= "0 0 198 188" version= "1.1" baseProfile= " complet" xmlns= "http://www.w3.org/2000/svg" xmlns:xlink= "http://www.w3.org/1999/xlink" xmlns:ev= "http://www.w3 .org/2001/xml-events" > <g id= "Page-1" stroke= "none" stroke-width= "1" fill= "none" fill-rule= "par-impar" > <polygon id= "Star-1" stroke= "#979797" stroke-width= "3" umplere= "#F8E81C" puncte= "99 154 40 185 51 119 4 73 69 64 99 3 128 64 194 73 147 " < 11 9 147 8 /poligon> </g> </svg>

SVGZ

Deoarece codul SVG ocupă destul de mult spațiu, a fost creat un „wrapper” SVGZ în care SVG-ul este comprimat cu gzip și fișierul rezultat primește extensia „.svgz”.

SVG se comprimă bine deoarece este un document text XML cu o structură obișnuită.

Suport browser

browser versiune
Internet Explorer 9+ [3]
Mozilla Firefox 1.5+ [4]
Netscape Navigator 9.0+
Google Chrome 3.0+
safari 4.0+
Operă 8.0+

Specificațiile standardului

Software

Aplicații

Instrumente și biblioteci

  • Batik  este o bibliotecă Java pentru generarea, randarea și diverse manipulări de imagini în format SVG și un browser SVG bazat pe această bibliotecă - Squiggle [5] .
  • MetaPost  este un limbaj de programare folosit pentru a crea ilustrații grafice.
  • librsvg  este o bibliotecă folosită de MediaWiki pentru a lucra cu SVG-uri [6] [7] .
  • Extensia SVG Viewer pentru Windows Explorer  este o extensie pentru Windows Explorer care vă permite să vizualizați fișierele SVG din acesta ca miniaturi.
  • Snap  este o bibliotecă JavaScript pentru lucrul cu  SVG.
  • SVG.js - O bibliotecă ușoară pentru manipularea și animarea graficelor SVG, nu are dependențe și își propune să fie cât mai mică posibil.

Note

  1. Un exemplu de pagină care vă permite să creați și să editați SVG în browser Arhivat 19 mai 2010 la Wayback Machine  (rusă)
  2. SVG Authoring Guidelines: Nu includeți o declarație DOCTYPE Arhivată 14 aprilie 2008 la Wayback Machine 
  3. Note de lansare Windows Internet Explorer Platform Preview Arhivat 19 aprilie 2010.  (Engleză)
  4. Brockmeier, Joe . Revizuire: Firefox 1.5 și Thunderbird 1.5  , Linux.com (  30 noiembrie 2005). Consultat la 30 noiembrie 2009.
  5. Squiggle Arhivat pe 7 noiembrie 2009 la Wayback Machine .
  6. Manual: Administrare imagini - MediaWiki Arhivat 18 noiembrie 2008 la Wayback Machine 
  7. Cu toate acestea, distribuția implicită a MediaWiki vine cu ImageMagick, care provoacă erori în conversia SVG în PNG, cum ar fi chenarele nevalide și niciun fundal transparent în fișierul PNG rezultat. Eliminat cu $wgSVGConverter = 'rsvg'.

Link -uri

Literatură