SVG

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 21. januar 2019; checks kræver 25 redigeringer .
Skalerbar vektorgrafik
Udvidelse .svgeller.svgz
MIME -type image/svg+xml
Udvikler World Wide Web Consortium
Seneste udgivelse SVG Tiny 1.2
SVG 1.1 (anden udgave)
SVG 2
Formattype Vektorgrafik
Udvidet fra XML
åbent format ? Ja
Internet side w3.org/Graphics/SVG/svgwg.org
_
 Mediefiler på Wikimedia Commons

SVG (fra det engelske  S calable Vector G raphics  - scalable vector graphics ) er et skalerbart vektorgrafikopmærkningssprog skabt af World Wide Web Consortium (W3C) og inkluderet i en undergruppe af det udvidelige markupsprog XML , designet til at beskrive todimensionelt vektor og blandet vektor-/ rastergrafik i XML-format. Understøtter både stillestående og animeret interaktiv grafik - eller med andre ord deklarativ og scriptet. Understøtter ikke beskrivelser af tredimensionelle objekter (ikke at forveksle med simulering af tredimensionalitet af chiaroscuro). Det er en åben standard anbefalet af W3C, organisationen bag standarder som HTML og XHTML . SVG er baseret på opmærkningssprogene VML og PGML . Udviklet siden 1999. I 2001 blev version 1.0 udgivet, i 2011 - version 1.1, som stadig er relevant den dag i dag. Version 2 er i øjeblikket i aktiv udvikling.

Sprogfunktioner

<path fill= "ingen" streg= "sort" d= "M 228 238 L 328 90 L 346 250 L 201 124 L 410 150 L 228 238" />
  • Beskrivelse af grundlæggende geometriske former (polygoner, rektangler, cirkler osv.).
  • En bred vifte af visuelle egenskaber, der kan anvendes på former og stier: farve, gennemsigtighed, afrundede hjørner osv.
  • Interaktivitet . På hvert enkelt element og på hele billedet kan du hænge en hændelseshandler (klik, flyt, tastetryk osv.), så brugeren kan styre billedet (f.eks. flytte nogle elementer med musen [1] ).
  • Animation og scripts. Ved hjælp af ECMAScript eller JavaScript kan du beskrive selv de mest komplekse scenarier relateret til matematiske beregninger af koordinater og proportioner af former. Sammen med interaktivitet og SMIL -animation giver dette en meget bred vifte af muligheder for webgrafikudviklere.

Fordele ved

  • Tekstformat - SVG-filer kan læses og redigeres (med nogle færdigheder) ved hjælp af almindelige teksteditorer . Når du ser dokumenter, der indeholder SVG-grafik, har du adgang til at se koden for den fil, der vises, og mulighed for at gemme hele dokumentet. Derudover har SVG-filer en tendens til at være mindre end sammenlignelige JPEG- eller GIF- billeder og komprimere godt.
  • Skalerbar - SVG er et vektorformat . Det er muligt at forstørre enhver del af et SVG-billede uden at miste kvalitet. Derudover er det muligt at anvende filtre på elementerne i et SVG-dokument - specielle modifikatorer til at skabe effekter svarende til dem, der bruges ved behandling af bitmapbilleder (sløring, ekstrudering, komplekse transformationssystemer osv.). I teksten til SVG-koden er filtre beskrevet af tags, der gengives af fremviseren, hvilket ikke påvirker størrelsen af ​​kildefilen, samtidig med at det giver den nødvendige illustrative udtryksevne.
  • Brugen af ​​bitmap-grafik i SVG-dokumenter er bredt tilgængelig. Du kan indsætte elementer med PNG-, GIF- eller JPG-billeder.
  • Teksten i en SVG-grafik er tekst, ikke et billede, så den kan vælges og kopieres, den indekseres af søgemaskiner, og der er ingen grund til at oprette yderligere metafiler til søgerobotter .
  • Animationen er implementeret i SVG ved hjælp af sproget SMIL (Synchronized Multimedia Integration Language), også udviklet af W3C-konsortiet. Scriptsprog baseret på ECMAScript -specifikationen er understøttet . SVG-elementer kan manipuleres med JavaScript . Brugen af ​​scripts og animationer i SVG giver dig mulighed for at skabe dynamisk og interaktiv grafik. I SVG leveres en hændelsesmodel, hændelser spores ( sideindlæsning, ændring af dens parametre, mus, tastaturhændelser osv. ). Animation kan udløses af en specifik begivenhed (for eksempel "onmouseover" eller "onclick" ), hvilket gør grafikken interaktiv. Hvert element har sine egne begivenheder, hvortil individuelle scripts kan knyttes.
  • SVG er en åben standard. I modsætning til nogle andre formater er SVG ikke proprietær.
  • SVG-dokumenter integreres nemt med HTML- og XHTML-dokumenter. Eksterne SVG'er er forbundet via <object>-tagget , værdien af ​​dataattributten er navnet på filen med filtypenavnet ".svg", der indeholder SVG-markeringen og har MIME-typen image/svg+xml. Bredde- og højdeattributterne definerer SVG-områdets vandrette og lodrette dimensioner. SVG-elementer er kompatible med HTML og DHTML.
  • Kompatibilitet med CSS ( Engelske  Cascading Style Sheets ). Visningen (formatering og dekoration) af SVG-elementer kan styres gennem CSS 2.0-stilarket og dets udvidelser eller direkte gennem SVG-elementattributter.
  • SVG giver alle fordelene ved XML :
    • Evne til at arbejde i forskellige miljøer.
    • Internationalisering (understøttelse af Unicode ).
    • Bred tilgængelighed til forskellige applikationer.
    • Nem modifikation via standard API'er  som DOM . SVG understøtter den standardiserede W3C dokumentobjektmodel DOM, der giver adgang til ethvert element, hvilket giver rig mulighed for dynamisk at ændre elementer, deres attributter og begivenheder.
    • Nem konvertering med XSLT-stylesheets . Som ethvert XML-baseret format giver SVG dig mulighed for at bruge transformationstabeller (XSLT) til at behandle det. Ved at konvertere XML-data til SVG ved hjælp af simpel XSL kan du nemt få en grafisk repræsentation af alle data, for eksempel visualisere kemiske molekyler beskrevet i CML .

Ulemper ved formatet

  • Der er overhovedet ingen understøttelse af 3D-grafik
  • SVG arver alle ulemperne ved XML , såsom en stor filstørrelse (sidstnævnte er dog kompenseret af eksistensen af ​​et komprimeret SVGZ- format , men det er i øjeblikket vanskeligt at bruge, da SVGZ ikke har sin egen MIME-type ).
  • Svært at bruge i store kortlægningsapplikationer på grund af, at dokumentet skal læses i sin helhed for at kunne vise en lille del af billedet korrekt.
  • Jo flere fine detaljer i billedet, jo hurtigere vokser størrelsen på SVG-dataene. Et ekstremt tilfælde er, når billedet er hvid støj . I dette tilfælde giver SVG ikke kun nogen fordel i filstørrelsen, men endda et tab sammenlignet med bitmapformatet. I praksis bliver SVG urentabel længe før billedet når niveauet med hvid støj.

Struktur af et SVG-dokument

Den første linje er en standard XML-header, en erklæring ( eng.  XML-declaration ), der angiver versionen af ​​XML (version) ( normalt "1.0" ) og tegnkodning (kodning):

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

Den anden og tredje linje skal indeholde DOCTYPE -headeren , som definerer dokumenttypen ( Document Type Definitions ) DTD : 

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

Desværre, i nogle tilfælde, når du bruger Mozilla Firefox med en indbygget SVG-fremviser, kan indholdet af DOCTYPE-erklæringen være en kilde til fejl. Der er anbefalinger om ikke at bruge DOCTYPE-deklarationen i SVG versioner 1.0. I stedet anbefales det at inkludere baseProfile- attributten på root -elementet <svg> med værdien "full" [2] .

Hvis der af en eller anden grund kræves en DOCTYPE-deklaration i et dokument, anbefales det at bruge en tom erklæring, som i eksemplet.

<!DOCTYPE svg [ <!-- dine data --> ]>

Den fjerde linje er rodelementet i dokumentet med SVG - navneområdet .

<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%" >

Dernæst kommer resten af ​​teksten i dokumentet, indlejret i rodelementet, hvor de elementer, der beskriver indholdet af den kodede scene, faktisk er placeret.

Dokumentet slutter altid med det afsluttende rodmærke </svg>.

Eksempler

  • Et simpelt statisk SVG-dokument med en kvadratisk kontur på 400 px og tre halvgennemsigtige cirkler på 104 px i midten af ​​firkanten, hver cirkel forskudt fra midten af ​​firkanten med cirka en halv radius.
<?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" højde = "400px" bredde = "400px " > <rect x= "0" y= "0" width= "400" height= "400" fill= "ingen" streg= "sort" streg-width= "5px" streg-opacitet= "0,5" /> <g fill-opacity= "0.6" stroke= "sort" stroke-width= "0.5px" > <cirkel cx= "200px" cy= "200px" r= "104px" fill= "rød" transform= "translate( 0,-52)" /> <cirkel cx= "200px" cy= "200px" r= "104px" fill= "blå" transform= "translate( 60, 52)" /> <cirkel cx= "200px" cy = "200px" r= "104px" fill= "grøn" transform= "translate(-60, 52)" /> </g> </svg>

Bemærk: Denne kode kører på samme måde i Mozilla Firefox 2.0.0.11 og i Internet Explorer 6.0.2900.2180 (SVG Document Adobe Systems Inc.)

  • Et andet eksempel er et rektangel med afrundede hjørner, der fylder hele visningsområdet:
<?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 = "hvid" x= "0" y= "0" width= "100%" højde= "100%" /> <rect fill= "sølv" x= "0" y= "0" width= "100% " height= "100%" rx= "1em" /> </svg>
  • gul stjerne:
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg width= "198" height= "188" viewBox= "0 0 198 188" version= "1.1" baseProfile= " fuld" 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= "lige-ulige" > <polygon id= "Star-1" stroke= "#979797" stroke-width= "3" fill= "#F8E81C" points= " 99 154 40 185 51 119 4 73 69 64 99 3 128 64 194 73 147 8 119 /polygon> </g> </svg>

SVGZ

Da SVG-koden fylder ret meget, blev der oprettet en SVGZ "wrapper", hvor SVG'en komprimeres med gzip , og den resulterende fil får filtypen ".svgz".

SVG komprimerer godt, fordi det er et XML - tekstdokument med en regulær struktur.

Browser support

browser version
Internet Explorer 9+ [3]
Mozilla Firefox 1,5+ [4]
Netscape Navigator 9,0+
Google Chrome 3,0+
safari 4,0+
Opera 8,0+

Specifikationer for standarden

Software

Ansøgninger

Værktøjer og biblioteker

  • Batik  er et Java -bibliotek til generering, gengivelse og forskellige manipulationer af billeder i SVG-format og en SVG-browser baseret på dette bibliotek - Squiggle [5] .
  • MetaPost  er et programmeringssprog, der bruges til at lave grafiske illustrationer.
  • librsvg  er et bibliotek, der bruges af MediaWiki til at arbejde med SVG'er [6] [7] .
  • SVG Viewer Extension til Windows Stifinder  er en udvidelse til Windows Stifinder , der giver dig mulighed for at se SVG-filer i den som miniaturebilleder.
  • Snap  er et JavaScript-bibliotek til at arbejde med  SVG.
  • SVG.js - Et letvægtsbibliotek til at manipulere og animere SVG-grafik, har ingen afhængigheder og sigter efter at være så lille som muligt.

Noter

  1. Et eksempel på en side, der giver dig mulighed for at oprette og redigere SVG i browseren Arkiveret 19. maj 2010 på Wayback Machine  (russisk)
  2. SVG Authoring Guidelines: Inkluder ikke en DOCTYPE-erklæring Arkiveret 14. april 2008 på Wayback Machine 
  3. Windows Internet Explorer Platform Preview Release Notes Arkiveret 19. april 2010.  (Engelsk)
  4. Brockmeier, Joe . Anmeldelse: Firefox 1.5 og Thunderbird 1.5  , Linux.com (  30. november 2005). Hentet 30. november 2009.
  5. Squiggle Arkiveret 7. november 2009 på Wayback Machine .
  6. Manual:Image Administration - MediaWiki Arkiveret 18. november 2008 på Wayback Machine 
  7. Standarddistributionen af ​​MediaWiki kommer dog med ImageMagick, som forårsager fejl i SVG til PNG-konvertering, såsom ugyldige rammer og ingen gennemsigtig baggrund i den resulterende PNG-fil. Elimineret med $wgSVGConverter = 'rsvg'.

Links

Litteratur

  • * Ben Frain. Kapitel 7 Brug af SVG til at opnå opløsningsuafhængighed // HTML5 og CSS3. Websiteudvikling til alle browsere og enheder = Responsivt webdesign med HTML5 og CSS3. anden version. PACKT udgivelse. - 2 oplag. - St. Petersborg: Peter, 2017. - S. 175-204. — 272 s. - ISBN 978-1784398934 978-5-496-02271-2.