Navigace

Hlavnφ menu

 

Kurz SVG - text

Bez text∙ se neobejde ani XML jazyk pro grafiku a kreslenφ. Naopak, dß se dokonce °φci, ₧e nativnφ spojenφ grafiky a textovΘho obsahu, kter² je zpracovßvßn stejn²mi mechanismy jako grafika, je jednou z nejv∞tÜφch p°ednostφ Scalable Vector Graphic.

Mo₧nosti typografickΘho formßtovßnφ jsou v SVG velmi ÜirokΘ, vΦetn∞ nap°φklad umφst∞nφ textu na k°ivku nebo zßpisu japonsk²ch znak∙. Na druhΘ stran∞ SVG 1.1 nenφ p°φliÜ vhodnΘ pro zpracovßnφ velkΘho mno₧stvφ textu, to by m∞la vy°eÜit a₧ specifikace SVG 1.2. Zcela urΦit∞ ale jeÜt∞ chvφli potrvß, ne₧ se objevφ adekvßtnφ podpora v prohlφ₧eΦφch.

V tomto Φlßnku probereme textov² prvek dosti struΦn∞, uvidφte ovÜem p°i praktickΘm nasazenφ SVG, ₧e i takov² struΦn² popis pokr²vß v∞tÜinu b∞₧n²ch pot°eb.

K≤dovßnφ textu

Pro jinΘ ne₧ anglickΘ texty v°ele doporuΦuji k≤dovßnφ UTF-8, kterΘ by m∞ly um∞t vÜechny SVG prohlφ₧eΦe a nem∞li byste mφt problΘmy ani s editovßnφm takov²ch soubor∙. V²born∞ je zvlßdß nap°φklad pod MacOS editor BBEdit6+ nebo Linuxov² KWrite z KDE3+. HlaviΦka souboru by pak m∞la vypadat takto:

<?xml version="1.0" encoding="utf-8"?>

Element text

Zßkladnφm prvkem pro vklßdßnφ textu je element text. Pro formßtovßnφ se pou₧φvajφ atributy z normy CSS a takΘ mnoho dalÜφch, kterΘ zatφm pomineme.

<text x="250" y="150"
      font-family="Helvetica" font-size="55"
      fill="blue" >
  pokus
</text>

Atributy elementu text:

  • x, y - poloha textu, m∞°eno k ·Φa°φ prvnφho znaku °et∞zce (·Φa°φ je zßkladnφ linka na kterΘ "sedφ" pφsmena)
  • font-family - tento atribut nastavuje pou₧itΘ pφsmo podle pravidel obvykl²ch v CSS
  • font-style - normal, italic...
  • font-variant - normal, small-caps...
  • font-weight - "tuΦnost" pφsma
  • font-stretch - vodorovnß deformace pφsma
  • font-size - velikost pφsma
  • kerning - mezery mezi pφsmeny, bere se z definice pφsma (hodnota "auto") nebo se nastavφ na n∞jakou konstantnφ hodnotu
  • letter-spacing - tato hodnota se p°iΦφtß k automatickΘmu kerningu
  • word-spacing - mezery mezi slovy
  • text-decoration - underline, overline, line-through, blink, none

Ka₧d² textov² element zp∙sobφ vykreslenφ jednoho textovΘho °et∞zce. Je t°eba zd∙raznit zßsadnφ odliÜnost od HTML - v SVG verze 1.1 neexistuje automatickΘ p°elΘvßnφ textu v rßmci vφce °ßdek. Efektu odstavce s vφce °ßdky se dosahuje tak, ₧e se p°edem urΦφ, kterß slova se vejdou na kter² °ßdek, a potom se slova z jednoho °ßdku uzav°ou zvlßÜ¥ do elementu tspan vno°enΘho v bloku text, kter² tak supluje textov² rßmeΦek. Ka₧d² tspan se musφ ruΦn∞ odsadit pomocφ atribut∙ "x", "y", "dx" a "dy". Ned∞ste se, grafickΘ editory toto provedou zcela automaticky, bez nutnosti manußlnφch zßsah∙.

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="10cm" height="3cm" viewBox="0 0 1000 300"
     xmlns="http://www.w3.org/2000/svg" version="1.1">
   <desc>Pouziti 'tspan' s atributy 'dx' a 'dy'
         pro zobrazeni textoveho odstavce</desc>
   <g font-family="Helvetica" font-size="45" >
     <text x="200" y="150" fill="blue" >
        Ale to je text
        <tspan dx="2em" dy="-50" font-weight="bold" fill="red" >
           na vice
        </tspan>
        <tspan dy="100">
            radek!
        </tspan>
     </text>
   </g>
   <!-- obrys platna -->
   <rect x="1" y="1" width="998" height="298"
         fill="none" stroke="blue" stroke-width="2" />
</svg>
Zobrazenφ odstavcovΘho textu
Zobrazenφ odstavcovΘho textu (originßlnφ SVG, cca 1 kB)

Element tspan

Element tspan umo₧≥uje p°i°azenφ specifick²ch typografick²ch vlastnostφ ka₧dΘmu jednotlivΘmu znaku. K tomu vyu₧φvß nßsledujφcφ atributy:

dx = (posun)+
Atribut udßvß dodateΦn² (relativnφ) posun znak∙ uvnit° aktußlnφho textovΘho prvku. M∙₧ete zde uvΘst i vφce hodnot ne₧ jen jednu. Ka₧dß dalÜφ (x.) hodnota odpovφdß ruΦnφmu kerningu (odsazenφ) mezi pφsmenem na pozici (x) a (x-1).
dy = (posun)+
Tento atribut je p°esn∞ analogick² k chovßnφ atributu "dx", jenom posouvß znaky nahoru Φi dol∙ oproti jejich standardnφmu ·Φa°φ. M∙₧ete takto vytvo°it nap°φklad hornφ Φi dolnφ indexy a podobn∞.
rotate = (·hel)+
DodateΦnΘ pootoΦenφ ka₧dΘho znaku v aktußlnφm textovΘm prvku. Op∞t m∙₧e obsahovat vφce hodnot, pak analogicky (n.) hodnota pootoΦφ (n.) znak.

Nßsledujφcφ k≤d zv∞tÜφ mezipφsmennΘ mezery ve slov∞ "Latin" a slovo "Hebrew" zobrazφ s p°evrßcen²m po°adφm pφsmen:

<tspan x="5" dx="0 2 2 2 2 5 0 0 0 5 22 -12 -11 -8.5 -8.5 -12">
  Latin and Hebrew
</tspan>

<!-- SVG - vφce trik∙ ze ₧ivota -->
<tspan x="5" dy="15 0 0 0 3 3 15" rotate="0 0 0 0 25 75 0 90">
  Really cool!
</tspan>
Zobrazenφ specißlnφch formßtovacφch prvk∙ SVG textu
Zobrazenφ specißlnφch formßtovacφch prvk∙ SVG textu (originßlnφ SVG, cca 1 kB)
Hejral, Martin (20. 7. 2004)