SVG

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 21. ledna 2019; kontroly vyžadují 25 úprav .
Škálovatelná vektorová grafika
Rozšíření .svgnebo.svgz
MIME typ obrázek/svg+xml
Vývojář World Wide Web konsorcium
Poslední vydání SVG Tiny 1.2
SVG 1.1 (druhé vydání)
SVG 2
Typ formátu Vektorová grafika
Rozšířeno z XML
otevřený formát ? Ano
webová stránka w3.org/Graphics/SVG/svgwg.org
_
 Mediální soubory na Wikimedia Commons

SVG (z anglického  S calable Vector G raphics  - škálovatelná vektorová grafika ) je škálovatelný značkovací jazyk pro vektorovou grafiku vytvořený konsorciem World Wide Web Consortium (W3C) a zahrnutý v podmnožině rozšiřitelného značkovacího jazyka XML , navržený k popisu dvourozměrného vektorová a smíšená vektorová / rastrová grafika ve formátu XML. Podporuje jak nehybnou, tak animovanou interaktivní grafiku – nebo, jinými slovy, deklarativní a skriptovanou. Nepodporuje popisy trojrozměrných objektů (neplést se simulací trojrozměrnosti šerosvitem). Je to otevřený standard doporučený W3C, organizací za standardy jako HTML a XHTML . SVG je založeno na značkovacích jazycích VML a PGML . Vyvíjen od roku 1999. V roce 2001 byla vydána verze 1.0, v roce 2011 - verze 1.1, která je dodnes relevantní. Verze 2 je v současné době v aktivním vývoji.

Jazykové funkce

<path fill= "none" stroke= "black" d= "M 228 238 L 328 90 L 346 250 L 201 124 L 410 150 L 228 238" />
  • Popis základních geometrických tvarů (polygony, obdélníky, kruhy atd.).
  • Široká škála vizuálních vlastností, které lze použít na tvary a cesty: zbarvení, průhlednost, zaoblené rohy atd.
  • Interaktivita . Na každý jednotlivý prvek i na celý obrázek lze pověsit obslužnou rutinu události (klik, pohyb, stisk klávesy atd.), takže uživatel může ovládat obrázek (například pohybovat některými prvky myší [1] ).
  • Animace a scénáře. Pomocí ECMAScriptu nebo JavaScriptu můžete popsat i ty nejsložitější scénáře související s matematickými výpočty souřadnic a proporcí tvarů. Spolu s interaktivitou a SMIL animací to dává velmi široké možnosti pro vývojáře webové grafiky.

Výhody

  • Textový formát – soubory SVG lze číst a upravovat (s určitými dovednostmi) pomocí běžných textových editorů . Při prohlížení dokumentů obsahujících grafiku SVG máte přístup k zobrazení kódu prohlíženého souboru a možnost uložit celý dokument. Kromě toho bývají soubory SVG menší než srovnatelné obrázky JPEG nebo GIF a dobře se komprimují.
  • Scalable - SVG je vektorový formát . Je možné zvětšit jakoukoli část obrázku SVG bez ztráty kvality. Dodatečně je možné na prvky SVG dokumentu aplikovat filtry – speciální modifikátory pro vytváření efektů podobných těm, které se používají při zpracování bitmapových obrázků (rozmazání, vysunutí, složité transformační systémy atd.). V textu SVG kódu jsou filtry popsány tagy, které vykresluje prohlížeč, což neovlivňuje velikost zdrojového souboru a zároveň poskytuje potřebnou ilustrativní výraznost.
  • Použití bitmapové grafiky v dokumentech SVG je široce dostupné. Můžete vkládat prvky s obrázky PNG, GIF nebo JPG.
  • Text v grafice SVG je text, nikoli obrázek, takže jej lze vybrat a zkopírovat, je indexován vyhledávači a není potřeba vytvářet další metasoubory pro vyhledávací roboty .
  • Animace je implementována v SVG pomocí jazyka SMIL (Synchronized Multimedia Integration Language), který byl rovněž vyvinut konsorciem W3C. Podporovány jsou skriptovací jazyky založené na specifikaci ECMAScript . S prvky SVG lze manipulovat pomocí JavaScriptu . Použití skriptů a animací v SVG umožňuje vytvářet dynamickou a interaktivní grafiku. V SVG je poskytnut model událostí, události jsou sledovány ( načítání stránky, změna jejích parametrů, události myši, klávesnice atd. ). Animace může být spuštěna konkrétní událostí (například "onmouseover" nebo "onclick" ), díky čemuž je grafika interaktivní. Každý prvek má své vlastní události, ke kterým lze připojit jednotlivé skripty.
  • SVG je otevřený standard. Na rozdíl od některých jiných formátů není SVG proprietární.
  • Dokumenty SVG lze snadno integrovat s dokumenty HTML a XHTML. Externí SVG se připojují přes tag <object> , hodnota atributu data je název souboru s příponou ".svg" obsahujícího značku SVG a typu MIME image/svg+xml. Atributy width a height definují horizontální a vertikální rozměry oblasti SVG. Prvky SVG jsou kompatibilní s HTML a DHTML.
  • Kompatibilita s CSS ( anglicky  Cascading Style Sheets ). Zobrazení (formátování a zdobení) prvků SVG lze ovládat pomocí šablony stylů CSS 2.0 a jejích rozšíření nebo přímo prostřednictvím atributů prvků SVG.
  • SVG poskytuje všechny výhody XML :
    • Schopnost pracovat v různých prostředích.
    • Internacionalizace (podpora Unicode ).
    • Široká dostupnost pro různé aplikace.
    • Snadná modifikace prostřednictvím standardních API  , jako je DOM . SVG podporuje standardizovaný objektový model dokumentu W3C DOM, který poskytuje přístup k jakémukoli prvku, což poskytuje dostatek příležitostí k dynamické změně prvků, jejich atributů a událostí.
    • Snadná konverze pomocí šablon stylů XSLT . Stejně jako jakýkoli jiný formát založený na XML vám SVG umožňuje používat ke zpracování transformační tabulky (XSLT). Převedením XML dat do SVG pomocí jednoduchého XSL můžete snadno získat grafické znázornění jakýchkoli dat, například vizualizovat chemické molekuly popsané v CML .

Nevýhody formátu

  • Podpora 3D grafiky chybí vůbec
  • SVG zdědí všechny nevýhody XML , jako je velká velikost souboru (ten je však kompenzován existencí komprimovaného formátu SVGZ , ale jeho použití je v současné době obtížné, protože SVGZ nemá svůj vlastní typ MIME ).
  • Obtížné použití ve velkých mapových aplikacích kvůli skutečnosti, že dokument musí být přečten celý, aby se správně zobrazila malá část obrázku.
  • Čím více jemných detailů v obrázku, tím rychleji roste velikost dat SVG. Extrémní případ je, když je obraz bílý šum . V tomto případě SVG nejenže nenabízí výhodu velikosti souboru, ale dokonce i ztrátu ve srovnání s bitmapovým formátem. V praxi se SVG stává nerentabilním dlouho předtím, než obraz dosáhne fáze bílého šumu.

Struktura dokumentu SVG

První řádek je standardní hlavička XML, deklarace ( angl.  XML deklarace ), udávající verzi XML (verze) ( obvykle "1.0" ) a kódování znaků (kódování):

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

Druhý a třetí řádek by měl obsahovat hlavičku DOCTYPE , která definuje typ dokumentu ( Document Type Definitions ) DTD : 

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

Bohužel v některých případech při používání Mozilla Firefox s vestavěným prohlížečem SVG může být obsah deklarace DOCTYPE zdrojem chyb. Existují doporučení nepoužívat deklaraci DOCTYPE v SVG verze 1.0. Místo toho se doporučuje zahrnout atribut baseProfile do kořenového prvku <svg> s hodnotou "full" [2] .

Pokud je z nějakého důvodu v dokumentu vyžadována deklarace DOCTYPE, doporučuje se použít prázdnou deklaraci, jako v příkladu.

<!DOCTYPE svg [ <!-- vaše data --> ]>

Čtvrtý řádek je kořenový prvek dokumentu s jmenným prostorem 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 %" >

Dále následuje zbytek textu dokumentu, vnořený do kořenového elementu, kde se skutečně nacházejí elementy popisující obsah zakódované scény.

Dokument vždy končí koncovou kořenovou značkou </svg>.

Příklady

  • Jednoduchý statický dokument SVG se čtvercovým obrysem o velikosti 400 px a třemi poloprůhlednými kruhy o velikosti 104 px ve středu čtverce, přičemž každý kruh je od středu čtverce odsazen asi o polovinu poloměru.
<?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= "none" stroke= "black" stroke-width= "5px" stroke-opacity= "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)" /> <circle cx= "200px" cy= "200px" r= "104px" fill= "modrá" transform= "translate( 60, 52)" /> <circle cx= "200px" cy = "200px" r= "104px" fill= "zelená" transform= "translate(-60, 52)" /> </g> </svg>

Poznámka: Tento kód běží stejně v Mozilla Firefox 2.0.0.11 a v Internet Exploreru 6.0.2900.2180 (SVG Document Adobe Systems Inc.)

  • Dalším příkladem je obdélník se zaoblenými rohy, který vyplňuje celou zobrazovací plochu:
<?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 %" > <přesná výplň = "bílá" x= "0" y= "0" šířka= "100 %" výška= "100 %" /> <rect fill= "stříbrná" x= "0" y= "0" šířka= "100 % " height= "100 %" rx= "1em" /> </svg>
  • žlutá hvězda:
<?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= "Stránka-1" stroke= "none" stroke-width= "1" fill= "none" fill-rule= "sudé-liché" > <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 145 8 < 89 " /polygon> </g> </svg>

SVGZ

Vzhledem k tomu, že kód SVG zabírá poměrně hodně místa, byl vytvořen SVGZ "wrapper", kde je SVG komprimováno pomocí gzip a výsledný soubor má příponu ".svgz".

SVG se dobře komprimuje , protože jde o textový dokument XML s pravidelnou strukturou.

Podpora prohlížeče

prohlížeč verze
internet Explorer 9+ [3]
Mozilla Firefox 1,5+ [4]
Netscape Navigator 9,0+
Google Chrome 3.0+
safari 4,0+
Opera 8,0+

Specifikace normy

Software

Aplikace

Nástroje a knihovny

  • Batik  je Java knihovna pro generování, vykreslování a různé manipulace s obrázky ve formátu SVG a prohlížeč SVG založený na této knihovně - Squiggle [5] .
  • MetaPost  je programovací jazyk používaný k vytváření grafických ilustrací.
  • librsvg  je knihovna používaná MediaWiki pro práci s SVG [6] [7] .
  • Rozšíření SVG Viewer pro Průzkumník Windows  je rozšíření pro Průzkumník Windows , které vám umožňuje prohlížet soubory SVG v něm jako miniatury.
  • Snap  je JavaScriptová knihovna pro práci s  SVG.
  • SVG.js – lehká knihovna pro manipulaci a animaci grafiky SVG, nemá žádné závislosti a jejím cílem je být co nejmenší.

Poznámky

  1. Příklad stránky, která umožňuje vytvářet a upravovat SVG v prohlížeči Archivováno 19. května 2010 na Wayback Machine  (ruština)
  2. Pokyny pro tvorbu SVG: Nezahrnujte prohlášení DOCTYPE Archivováno 14. dubna 2008 na Wayback Machine 
  3. Windows Internet Explorer Platform Preview Poznámky k vydání archivovány 19. dubna 2010.  (Angličtina)
  4. Brockmeier, Joe . Recenze: Firefox 1.5 a Thunderbird 1.5  , Linux.com (  30. listopadu 2005). Staženo 30. listopadu 2009.
  5. Squiggle Archived 7. listopadu 2009 na Wayback Machine .
  6. Manuál: Správa obrázků – MediaWiki Archivováno 18. listopadu 2008 na Wayback Machine 
  7. Výchozí distribuce MediaWiki však přichází s ImageMagick, což způsobuje chyby při převodu SVG do PNG, jako jsou neplatné okraje a žádné průhledné pozadí ve výsledném souboru PNG. Odstraněno pomocí $wgSVGConverter = 'rsvg'.

Odkazy

Literatura