SVG

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 21 januari 2019; kontroller kräver 25 redigeringar .
Skalbar vektorgrafik
Förlängning .svgeller.svgz
MIME -typ image/svg+xml
Utvecklaren World Wide Web Consortium
Senaste släppningen SVG Tiny 1.2
SVG 1.1 (andra upplagan)
SVG 2
Formattyp Vektorgrafik
Utökad från XML
öppet format ? Ja
Hemsida w3.org/Graphics/SVG/svgwg.org
_
 Mediafiler på Wikimedia Commons

SVG (från engelska  S calable Vector G raphics  - scalable vector graphics ) är ett skalbart märkningsspråk för vektorgrafik skapat av World Wide Web Consortium (W3C) och ingår i en delmängd av det utvidgbara märkningsspråket XML , utformat för att beskriva två- dimensionell vektor och blandad vektor / rasterdiagram i XML-format. Stöder både stillbild och animerad interaktiv grafik - eller, med andra ord, deklarativ och skriptad. Stöder inte beskrivningar av tredimensionella objekt (inte att förväxla med simuleringen av tredimensionalitet av chiaroscuro). Det är en öppen standard som rekommenderas av W3C, organisationen bakom standarder som HTML och XHTML . SVG är baserat på märkningsspråken VML och PGML . Utvecklad sedan 1999. År 2001 släpptes version 1.0, 2011 - version 1.1, som fortfarande är relevant än i dag. Version 2 är för närvarande under aktiv utveckling.

Språkfunktioner

<path fill= "ingen" stroke= "svart" d= "M 228 238 L 328 90 L 346 250 L 201 124 L 410 150 L 228 238" />
  • Beskrivning av grundläggande geometriska former (polygoner, rektanglar, cirklar, etc.).
  • Ett brett utbud av visuella egenskaper som kan appliceras på former och banor: färg, transparens, rundade hörn, etc.
  • Interaktivitet . På varje enskilt element och på hela bilden kan du hänga en händelsehanterare (klicka, flytta, tangenttryckningar etc.), så att användaren kan styra bilden (till exempel flytta vissa element med musen [1] ).
  • Animation och manus. Med hjälp av ECMAScript eller JavaScript kan du beskriva även de mest komplexa scenarierna relaterade till matematiska beräkningar av formernas koordinater och proportioner. Tillsammans med interaktivitet och SMIL- animation ger detta ett mycket brett utbud av möjligheter för webbgrafikutvecklare.

Fördelar med

  • Textformat - SVG-filer kan läsas och redigeras (med vissa kunskaper) med vanliga textredigerare . När du tittar på dokument som innehåller SVG-grafik har du tillgång till att se koden för filen som visas och möjligheten att spara hela dokumentet. Dessutom tenderar SVG-filer att vara mindre än jämförbara JPEG- eller GIF- bilder och komprimeras bra.
  • Skalbart - SVG är ett vektorformat . Det är möjligt att förstora vilken del av en SVG-bild som helst utan att förlora kvalitet. Dessutom är det möjligt att tillämpa filter på elementen i ett SVG-dokument - speciella modifierare för att skapa effekter som liknar de som används vid bearbetning av bitmappsbilder (suddar, extrudering, komplexa transformationssystem, etc.). I texten i SVG-koden beskrivs filter av taggar som renderas av tittaren, vilket inte påverkar storleken på källfilen, samtidigt som det ger den nödvändiga illustrativa uttrycksförmågan.
  • Användningen av bitmappsgrafik i SVG-dokument är allmänt tillgänglig. Du kan infoga element med PNG-, GIF- eller JPG-bilder.
  • Texten i en SVG-grafik är text, inte en bild, så den kan väljas och kopieras, den indexeras av sökmotorer och det finns inget behov av att skapa ytterligare metafiler för sökrobotar .
  • Animeringen implementeras i SVG med hjälp av SMIL -språket (Synchronized Multimedia Integration Language), också utvecklat av W3C-konsortiet. Skriptspråk baserade på ECMAScript- specifikationen stöds . SVG - element kan manipuleras med JavaScript . Användningen av skript och animationer i SVG gör att du kan skapa dynamisk och interaktiv grafik. I SVG tillhandahålls en händelsemodell, händelser spåras ( sidladdning, ändring av dess parametrar, mus, tangentbordshändelser, etc. ). Animation kan utlösas av en specifik händelse (till exempel "onmouseover" eller "onclick" ), vilket gör grafiken interaktiv. Varje element har sina egna händelser som enskilda skript kan kopplas till.
  • SVG är en öppen standard. Till skillnad från vissa andra format är SVG inte proprietärt.
  • SVG-dokument integreras enkelt med HTML- och XHTML-dokument. Externa SVG:er ansluts via taggen <object> , värdet på dataattributet är namnet på filen med filtillägget ".svg" som innehåller SVG-uppmärkningen och har MIME-typen image/svg+xml. Bredd- och höjdattributen definierar de horisontella och vertikala dimensionerna för SVG-området. SVG-element är kompatibla med HTML och DHTML.
  • Kompatibilitet med CSS ( Engelska  Cascading Style Sheets ). Visningen (formatering och dekoration) av SVG-element kan styras genom CSS 2.0-stilmall och dess tillägg, eller direkt genom SVG-elementattribut.
  • SVG ger alla fördelar med XML :
    • Förmåga att arbeta i olika miljöer.
    • Internationalisering (stöd för Unicode ).
    • Stor tillgänglighet för olika applikationer.
    • Enkel modifiering via vanliga API :er  som DOM . SVG stöder den standardiserade W3C-dokumentobjektmodellen DOM, vilket ger tillgång till alla element, vilket ger stora möjligheter att dynamiskt ändra element, deras attribut och händelser.
    • Enkel konvertering med XSLT-formatmallar . Som alla XML-baserat format låter SVG dig använda transformationstabeller (XSLT) för att bearbeta det. Genom att konvertera XML-data till SVG med enkla XSL kan du enkelt få en grafisk representation av alla data, till exempel visualisera kemiska molekyler som beskrivs i CML .

Nackdelar med formatet

  • Det finns inget stöd för 3D-grafik alls
  • SVG ärver alla nackdelar med XML , till exempel en stor filstorlek (den senare kompenseras dock av att det finns ett komprimerat SVGZ- format , men det är svårt att använda det för närvarande, eftersom SVGZ inte har sin egen MIME-typ ).
  • Svårt att använda i stora kartapplikationer på grund av att dokumentet måste läsas i sin helhet för att korrekt visa en liten del av bilden.
  • Ju fler fina detaljer i bilden, desto snabbare växer storleken på SVG-data. Ett extremfall är när bilden är vitt brus . I det här fallet erbjuder SVG inte bara någon filstorleksfördel, utan även en förlust jämfört med bitmappsformatet. I praktiken blir SVG olönsamt långt innan bilden når nivån av vitt brus.

Struktur för ett SVG-dokument

Den första raden är en vanlig XML-rubrik, en deklaration ( eng.  XML-deklaration ), som anger versionen av XML (version) ( vanligtvis "1.0" ) och teckenkodning (kodning):

<?xml version="1.0" encoding="UTF-8" fristående="nej"?>

Den andra och tredje raden bör innehålla DOCTYPE- huvudet , som definierar 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">

Tyvärr, i vissa fall när du använder Mozilla Firefox med en inbyggd SVG-visare, kan innehållet i DOCTYPE-deklarationen vara en källa till fel. Det finns rekommendationer att inte använda DOCTYPE-deklarationen i SVG version 1.0. Istället rekommenderas det att inkludera baseProfile- attributet på rotelementet <svg> med värdet "full" [2] .

Om det av någon anledning krävs en DOCTYPE-deklaration i ett dokument, rekommenderas att använda en tom deklaration, som i exemplet.

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

Den fjärde raden är rotelementet i dokumentet med SVG -namnområ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%" >

Därefter kommer resten av texten i dokumentet, kapslad i rotelementet, där elementen som beskriver innehållet i den kodade scenen faktiskt finns.

Dokumentet slutar alltid med den avslutande rottaggen </svg>.

Exempel

  • Ett enkelt statiskt SVG-dokument med en kvadratisk kontur på 400 px och tre halvtransparenta cirklar på 104 px i mitten av kvadraten, varje cirkel förskjuten från kvadratens mitt med ungefär en halv radie.
<?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" height = "400px" width = "400px " > <rect x= "0" y= "0" width= "400" height= "400" fill= "ingen" stroke= "svart" stroke-width= "5px" stroke-opacitet= "0,5" /> <g fill-opacity= "0.6" stroke= "black" stroke-width= "0.5px" > <circle cx= "200px" cy= "200px" r= "104px" fill= "red" 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>

Obs: Den här koden körs på samma sätt i Mozilla Firefox 2.0.0.11 och i Internet Explorer 6.0.2900.2180 (SVG Document Adobe Systems Inc.)

  • Ett annat exempel är en rektangel med rundade hörn som fyller hela 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 = "vit" x= "0" y= "0" width= "100%" height= "100%" /> <rect fill= "silver" x= "0" y= "0" width= "100% " height= "100%" rx= "1em" /> </svg>
  • gul stjärna:
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg width= "198" height= "188" viewBox= "0 0 198 188" 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" > <g id= "Page-1" stroke= "none" stroke-width= "1" fill= "none" fill-rule= "even-udd" > <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 85 85 119 /polygon> </g> </svg>

SVGZ

Eftersom SVG-koden tar upp ganska mycket utrymme skapades en SVGZ "wrapper" där SVG komprimeras med gzip och den resulterande filen får tillägget ".svgz".

SVG komprimerar bra eftersom det är ett XML -textdokument med en vanlig struktur.

Webbläsarstöd

webbläsare 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 för standarden

Programvara

Applikationer

Verktyg och bibliotek

  • Batik  är ett Java -bibliotek för generering, rendering och olika manipulationer av bilder i SVG-format och en SVG-webbläsare baserad på detta bibliotek - Squiggle [5] .
  • MetaPost  är ett programmeringsspråk som används för att skapa grafiska illustrationer.
  • librsvg  är ett bibliotek som används av MediaWiki för att arbeta med SVG [6] [7] .
  • SVG Viewer Extension för Windows Explorer  är ett tillägg för Windows Explorer som låter dig visa SVG-filer i den som miniatyrer.
  • Snap  är ett JavaScript-bibliotek för att arbeta med  SVG.
  • SVG.js - Ett lättviktsbibliotek för att manipulera och animera SVG-grafik, har inga beroenden och syftar till att vara så litet som möjligt.

Anteckningar

  1. Ett exempel på en sida som låter dig skapa och redigera SVG i webbläsaren Arkiverad 19 maj 2010 på Wayback Machine  (ryska)
  2. SVG Authoring Guidelines: Inkludera inte en DOCTYPE-deklaration Arkiverad 14 april 2008 på Wayback Machine 
  3. Förhandsvisning av Windows Internet Explorer Platform Release Notes Arkiverad 19 april 2010.  (Engelsk)
  4. Brockmeier, Joe . Recension: Firefox 1.5 och Thunderbird 1.5  , Linux.com (  30 november 2005). Hämtad 30 november 2009.
  5. Squiggle Arkiverad 7 november 2009 på Wayback Machine .
  6. Manual:Image Administration - MediaWiki Arkiverad 18 november 2008 på Wayback Machine 
  7. Standarddistributionen av MediaWiki kommer dock med ImageMagick, vilket orsakar fel i SVG till PNG-konvertering, såsom ogiltiga ramar och ingen transparent bakgrund i den resulterande PNG-filen. Eliminerad med $wgSVGConverter = 'rsvg'.

Länkar

Litteratur