<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Digitaaliset sarjakuvat on File Format Blog</title>
    <link>https://blog.fileformat.com/fi/tag/digitaaliset-sarjakuvat/</link>
    <description>Recent content in Digitaaliset sarjakuvat on File Format Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>fi</language>
    <lastBuildDate>Tue, 28 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.fileformat.com/fi/tag/digitaaliset-sarjakuvat/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>CBZ:n sisällä - Digitaalisten sarjakuvien anatomian ymmärtäminen</title>
      <link>https://blog.fileformat.com/fi/ebook/inside-the-cbz-anatomy-of-digital-comics/</link>
      <pubDate>Tue, 28 Jul 2026 00:00:00 +0000</pubDate>
      
      <guid>https://blog.fileformat.com/fi/ebook/inside-the-cbz-anatomy-of-digital-comics/</guid>
      <description>Opi, mitä CBZ-sarjakuva-tiedosto on, sen yksinkertainen ZIP-rakenne, metatietovaihtoehdot ja nykyaikaiset kuvatiedostomuodot – avattavissa millä tahansa laitteella ilman DRM:ää.</description>
      <content:encoded><![CDATA[<p><strong>Viimeksi päivitetty</strong>: 28 heinäkuuta 2026</p>
<figure class="align-center ">
    <img loading="lazy" src="images/inside-the-cbz-anatomy-of-digital-comics.webp#center"
         alt="Inside the CBZ - Understanding the Anatomy of Digital Comics"/> 
</figure>

<p><strong>TL;DR</strong> CBZ (Comic Book Zip) ei ole muuta kuin tavallinen ZIP-arkisto, joka pakkaa peräkkäisiä kuvatiedostoja—plus valinnaista metadataa—yksiin, DRM‑vapaaseen sarjakuva‑konttiin. Koska se perustuu yleisesti käytettyyn ZIP-muotoon, mikä tahansa pakkaustyökalu voi avata sen, ja lukijat lajittelevat kuvat aakkosjärjestykseen näyttääkseen sivut oikeassa järjestyksessä. Nykyiset CBZ:t sisältävät usein <code>ComicInfo.xml</code>-tiedoston rikkaaseen kirjastotietoon, käyttävät tehokkaita kuvakodekkeja kuten WebP/AVIF, ja jopa upottavat HTML:n interaktiivisia “parannettuja” sarjakuvia varten.</p>
<hr>
<h2 id="mikä-tarkalleen-ottaen-on-cbz">Mikä tarkalleen ottaen on CBZ?</h2>
<ul>
<li><strong>Nimi</strong>: <em>Comic Book Zip</em> – ZIP‑tiedosto, jonka tiedostopääte on <code>.cbz</code>.</li>
<li><strong>MIME-tyyppi</strong>: <code>application/vnd.comicbook+zip</code> (rekisteröity IANA:ssa vuonna 2012).</li>
<li><strong>Alkuperä</strong>: Suosittui ComicRack‑yhteisön (2005‑2008) kautta avoimen lähdekoodin vaihtoehtona suljetuille formaateille kuten CBR tai PDF.</li>
<li><strong>Monialustainen</strong>: Avattavissa millä tahansa ZIP-yhteensopivalla työkalulla (7‑Zip, WinRAR, macOS Archive Utility, Linux <code>unzip</code>). Erillistä ohjelmistoa ei tarvita sisällön tarkastelemiseen.</li>
</ul>
<p>Käytännössä CBZ on vain kansio, jossa on kuvia (JPEG, PNG, WebP, jne.) pakattuna zip‑tiedostoon ja uudelleennimettynä. Tämä yksinkertaisuus on syy siihen, miksi se on de‑facto -standardi digitaalisille sarjakuville PC:illä, tableteilla ja puhelimilla.</p>
<hr>
<h2 id="cbzn-sisällä-tiedostorakenne">CBZ:n sisällä: Tiedostorakenne</h2>
<p>Hyvin muodostettu CBZ noudattaa tasapintaista hierarkiaa—ei ylimääräistä sisäkkäisyyttä—jotta lukijat voivat löytää sivut välittömästi. Alla on tyypillinen puunäkymä:</p>
<pre tabindex="0"><code>MyComic.cbz
│
├─ 001.jpg          ← first page (front cover)
├─ 002.jpg
├─ 003.jpg
│   …
├─ 050.jpg          ← last page (back cover)
├─ ComicInfo.xml    ← optional rich metadata
└─ cover.jpg        ← optional thumbnail for library views
</code></pre><h3 id="keskeiset-elementit">Keskeiset elementit</h3>
<table>
<thead>
<tr>
<th>Elementti</th>
<th>Mitä se on</th>
<th>Miksi se on tärkeä</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Peräkkäiset kuvatiedostot</strong></td>
<td>Nimetty niin, että ne lajitellaan aakkosjärjestykseen (<code>001.jpg</code>, <code>002.jpg</code>, …)</td>
<td>Varmistaa oikean sivujärjestyksen kaikissa lukijoissa.</td>
</tr>
<tr>
<td><strong>Kuvamuoto</strong></td>
<td>JPEG, PNG, GIF, WebP, AVIF, BMP, TIFF</td>
<td>Määrittää tiedoston koon, visuaalisen tarkkuuden ja laitteiden yhteensopivuuden.</td>
</tr>
<tr>
<td><strong>ComicInfo.xml</strong></td>
<td>Valinnainen XML ComicRack-skeeman mukaisesti</td>
<td>Tallentaa otsikon, tekijän, sarjan, numeron, kielen, sivutyypin liput ja jopa pikkukuvan tiedot. Mahdollistaa tehokkaan kirjaston hallinnan.</td>
</tr>
<tr>
<td><strong>Kansikuva</strong></td>
<td><code>cover.jpg</code>/<code>cover.png</code> juurihakemistossa</td>
<td>Monien sovellusten käyttämä sarjakuvan pikkukuva gallerioissa.</td>
</tr>
<tr>
<td><strong>Unicode‑tiedostonimet</strong></td>
<td>Moderni ZIP tukee UTF‑8</td>
<td>Välttämätön ei‑latinalaisille otsikoille ja kansainvälisille sarjakuville.</td>
</tr>
<tr>
<td><strong>ZIP‑keskusrekisteri</strong></td>
<td>Indeksi arkiston lopussa</td>
<td>Lukijat lukevat tätä rakentaakseen sivulistan nopeasti; korruptio tässä voi rikkoa koko CBZ:n.</td>
</tr>
</tbody>
</table>
<p>Koska arkisto pakkaa vain jo pakattuja kuvia, lopullinen koko on yleensä vain alkuperäisten tiedostojen summa plus muutama kilotavua ZIP‑ylitietoa (&lt; 5 %).</p>
<hr>
<h2 id="metatietojen-taika-comicinfoxml-ja-sivutyypin-liput">Metatietojen taika: <code>ComicInfo.xml</code> ja sivutyypin liput</h2>
<p>Vaikka CBZ toimii täydellisesti ilman ylimääräisiä tiedostoja, <code>ComicInfo.xml</code>-tiedoston lisääminen muuttaa yksinkertaisen kuvapinon haettavaksi, runsaasti kuvattavaksi sarjakuvaksi. Tässä on minimaalinen esimerkki:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#75715e">&lt;?xml version=&#34;1.0&#34; encoding=&#34;utf-8&#34;?&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">&lt;ComicInfo&gt;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;Title&gt;</span>Starship Voyager<span style="color:#f92672">&lt;/Title&gt;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;Series&gt;</span>Space Adventures<span style="color:#f92672">&lt;/Series&gt;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;Number&gt;</span>12<span style="color:#f92672">&lt;/Number&gt;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;Writer&gt;</span>Jane Doe<span style="color:#f92672">&lt;/Writer&gt;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;Penciller&gt;</span>John Smith<span style="color:#f92672">&lt;/Penciller&gt;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;Inker&gt;</span>Alex Lee<span style="color:#f92672">&lt;/Inker&gt;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;Publisher&gt;</span>Galaxy Press<span style="color:#f92672">&lt;/Publisher&gt;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;Year&gt;</span>2024<span style="color:#f92672">&lt;/Year&gt;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;LanguageISO&gt;</span>en<span style="color:#f92672">&lt;/LanguageISO&gt;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;PageCount&gt;</span>50<span style="color:#f92672">&lt;/PageCount&gt;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;Pages&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;Page</span> <span style="color:#a6e22e">Image=</span><span style="color:#e6db74">&#34;001.jpg&#34;</span> <span style="color:#a6e22e">Type=</span><span style="color:#e6db74">&#34;FrontCover&#34;</span><span style="color:#f92672">/&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;Page</span> <span style="color:#a6e22e">Image=</span><span style="color:#e6db74">&#34;002.jpg&#34;</span> <span style="color:#a6e22e">Type=</span><span style="color:#e6db74">&#34;Story&#34;</span><span style="color:#f92672">/&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;Page</span> <span style="color:#a6e22e">Image=</span><span style="color:#e6db74">&#34;025.jpg&#34;</span> <span style="color:#a6e22e">Type=</span><span style="color:#e6db74">&#34;DoublePage&#34;</span><span style="color:#f92672">/&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;Page</span> <span style="color:#a6e22e">Image=</span><span style="color:#e6db74">&#34;050.jpg&#34;</span> <span style="color:#a6e22e">Type=</span><span style="color:#e6db74">&#34;BackCover&#34;</span><span style="color:#f92672">/&gt;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;/Pages&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">&lt;/ComicInfo&gt;</span>
</span></span></code></pre></div><p><strong>Miksi vaivata?</strong></p>
<ul>
<li><strong>Kirjastotyökalut</strong> (ComicRack, Calibre, jne.) voivat järjestää, suodattaa ja hakea näiden kenttien perusteella.</li>
<li><strong>Sivutyypin liput</strong> (<code>FrontCover</code>, <code>BackCover</code>, <code>Advert</code>, <code>Deleted</code>, jne.) antavat lukijoiden piilottaa mainokset, näyttää vain tarinasivut tai näyttää mukautetun kansikuvan pikkukuvan.</li>
<li><strong>Tulevaisuudenkestävyys</strong> – Kun Digital Comics Initiative laatii CBZ v2.0 -specifikaatiota, manifestitiedosto (<code>manifest.json</code>) saattaa tulla pakolliseksi, mutta nykyiset lukijat kunnioittavat edelleen <code>ComicInfo.xml</code>-tiedostoa.</li>
</ul>
<hr>
<h2 id="cbz-tiedostojen-luominen-ja-muuntaminen-askel-askeleelta">CBZ-tiedostojen luominen ja muuntaminen (askel askeleelta)</h2>
<h3 id="1-valmistele-kuvat">1. Valmistele kuvat</h3>
<ul>
<li>Vie jokainen sarjakuvasivu kuvana.</li>
<li>Nimeä ne nollalla täytetyillä numeroilla (<code>001.jpg</code>, <code>002.jpg</code>, …) varmistaaksesi oikean lajittelun.</li>
<li>Valitse yleisöllesi sopiva koodekki: JPEG pienimmän koon saavuttamiseksi, PNG häviöttömään taiteeseen, WebP/AVIF moderniin, korkealaatuiseen pakkaamiseen.</li>
</ul>
<h3 id="2-valinnainen-luo-metatiedot">2. (Valinnainen) Luo metatiedot</h3>
<p>Työkalut kuten <strong>ComicTagger</strong>, <strong>cbr2cbz</strong> tai mukautetut skriptit voivat automaattisesti täyttää <code>ComicInfo.xml</code> OCR:n + LLM:ien avulla. Tämä vaihe on valinnainen, mutta erittäin suositeltava suurille kirjastoille.</p>
<h3 id="3-pakkaa-se">3. Pakkaa se</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#75715e"># Navigate to the folder containing the pages</span>
</span></span><span style="display:flex;"><span>cd /path/to/pages
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Create a CBZ without extra compression (JPEGs are already compressed)</span>
</span></span><span style="display:flex;"><span>zip -0 -r ../MyComic.cbz *.jpg *.png ComicInfo.xml cover.jpg
</span></span><span style="display:flex;"><span><span style="color:#75715e"># -0 = store (no compression) – speeds up the process</span>
</span></span></code></pre></div><p>Nimeä syntynyt <code>.zip</code> uudelleen <code>.cbz</code>:ksi, jos pakkausohjelmasi ei tehnyt sitä automaattisesti.</p>
<h3 id="4-tarkista-arkisto">4. Tarkista arkisto</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#f92672">import</span> zipfile<span style="color:#f92672">,</span> pathlib<span style="color:#f92672">,</span> sys
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">list_pages</span>(cbz_path: pathlib<span style="color:#f92672">.</span>Path):
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">with</span> zipfile<span style="color:#f92672">.</span>ZipFile(cbz_path, <span style="color:#e6db74">&#39;r&#39;</span>) <span style="color:#66d9ef">as</span> z:
</span></span><span style="display:flex;"><span>        <span style="color:#75715e"># Guard against zip‑bombs (max 500 MB uncompressed)</span>
</span></span><span style="display:flex;"><span>        total <span style="color:#f92672">=</span> sum(z<span style="color:#f92672">.</span>getinfo(name)<span style="color:#f92672">.</span>file_size <span style="color:#66d9ef">for</span> name <span style="color:#f92672">in</span> z<span style="color:#f92672">.</span>namelist())
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span> total <span style="color:#f92672">&gt;</span> <span style="color:#ae81ff">500</span> <span style="color:#f92672">*</span> <span style="color:#ae81ff">1024</span> <span style="color:#f92672">*</span> <span style="color:#ae81ff">1024</span>:
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">raise</span> <span style="color:#a6e22e">ValueError</span>(<span style="color:#e6db74">&#34;Archive too large&#34;</span>)
</span></span><span style="display:flex;"><span>        images <span style="color:#f92672">=</span> [n <span style="color:#66d9ef">for</span> n <span style="color:#f92672">in</span> z<span style="color:#f92672">.</span>namelist()
</span></span><span style="display:flex;"><span>                  <span style="color:#66d9ef">if</span> n<span style="color:#f92672">.</span>lower()<span style="color:#f92672">.</span>endswith((<span style="color:#e6db74">&#39;.jpg&#39;</span>, <span style="color:#e6db74">&#39;.jpeg&#39;</span>, <span style="color:#e6db74">&#39;.png&#39;</span>, <span style="color:#e6db74">&#39;.webp&#39;</span>, <span style="color:#e6db74">&#39;.avif&#39;</span>))]
</span></span><span style="display:flex;"><span>        images<span style="color:#f92672">.</span>sort()  <span style="color:#75715e"># natural alphabetical order</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> images
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> __name__ <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;__main__&#34;</span>:
</span></span><span style="display:flex;"><span>    cbz <span style="color:#f92672">=</span> pathlib<span style="color:#f92672">.</span>Path(sys<span style="color:#f92672">.</span>argv[<span style="color:#ae81ff">1</span>])
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">for</span> page <span style="color:#f92672">in</span> list_pages(cbz):
</span></span><span style="display:flex;"><span>        print(page)
</span></span></code></pre></div><p>Komennon <code>python list_pages.py MyComic.cbz</code> suorittaminen tulostaa puhtaan, järjestetyn luettelon sivutiedostonimistä.</p>
<h3 id="5-muunna-pdfksi-jos-tarvitset-tulostettavan-version">5. Muunna PDF:ksi (jos tarvitset tulostettavan version)</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>unzip -q MyComic.cbz -d tmp_pages
</span></span><span style="display:flex;"><span>convert tmp_pages/*.jpg MyComic.pdf   <span style="color:#75715e"># ImageMagick&#39;s `convert`</span>
</span></span><span style="display:flex;"><span>rm -r tmp_pages
</span></span></code></pre></div><hr>
<h2 id="trendit-turvallisuus-ja-cbzn-tulevaisuus">Trendit, turvallisuus ja CBZ:n tulevaisuus</h2>
<table>
<thead>
<tr>
<th>Trend</th>
<th>Mitä tapahtuu</th>
<th>Vaikutus CBZ:ään</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Web‑first-jakelu</strong></td>
<td>Julkaisijat isännöivät CBZ-tiedostoja pilvitallennuksessa esiallekirjoitetuilla URL-osoitteilla.</td>
<td>Nopeammat, DRM‑vapaat lataukset; helpompi itsejulkaisu.</td>
</tr>
<tr>
<td><strong>Hybrid/ interaktiiviset sarjakuvat</strong></td>
<td>Lisäämällä <code>index.html</code> + resurssit arkistoon luodaan “parannettuja” sarjakuvia (audio, video, HTML5).</td>
<td>Lukijat, jotka tukevat web-näkymää, voivat renderöidä multimedia-kerroksia.</td>
</tr>
<tr>
<td><strong>WebP- ja AVIF-tekniikoiden käyttöönotto</strong></td>
<td>~15 % uusista julkaisuista (2024) käyttää näitä koodekkeja.</td>
<td>30‑50 % koon pienennys säilyttäen laadun—tärkeä mobiililaajakaistalle.</td>
</tr>
<tr>
<td><strong>AI‑luotu metadata</strong></td>
<td>Työkalut kuten <em>ComicTagger</em> käyttävät nyt OCR:ää + LLM:itä täyttääkseen <code>ComicInfo.xml</code>.</td>
<td>Parempi löydettävyys, automaattinen merkintä ja kirjaston organisointi.</td>
</tr>
<tr>
<td><strong>Pilvi‑synkronoitavat lukusovellukset</strong></td>
<td>Chunky, Perfect Viewer ja muut synkronoivat edistymisen Firebase‑/iCloud‑palvelun kautta.</td>
<td>Saumaton lukeminen puhelimilla, tableteilla ja työpöydillä.</td>
</tr>
<tr>
<td><strong>Standardisoinnin edistäminen (CBZ v2.0)</strong></td>
<td>DCI ehdottaa pakollista <code>manifest.json</code>‑tiedostoa, moniresoluutioisia aineistoja ja <code>&lt;DRM&gt;</code>‑lippua.</td>
<td>Tekee CBZ:stä kestävämmän korkean DPI:n laitteille ja valinnaisen oikeuksien hallinnan.</td>
</tr>
<tr>
<td><strong>Turvallisuustietoisuus</strong></td>
<td>Zip‑pommi-hyökkäykset (pieni ZIP → gigatavuja purettuna) ovat todellinen uhka.</td>
<td>Lukijat asettavat nyt pakkausten purkukoon rajoituksia ja käyttävät turvallisia kirjastoja (esim. Pythonin <code>zipfile</code> tarkistuksilla).</td>
</tr>
</tbody>
</table>
<h3 id="turvallisuusvinkki-kehittäjille">Turvallisuusvinkki kehittäjille</h3>
<p>Varmista aina pakatun tiedoston kokonaispurkukoko <strong>ennen</strong> CBZ:n purkamista. Yksinkertainen tarkistus (kuten Python‑esimerkissä) estää haitallisia arkistoja kuluttamasta levytilaa tai muistia.</p>
<hr>
<h2 id="kuinka-lukija-oikeasti-renderöi-cbzn">Kuinka lukija oikeasti renderöi CBZ:n</h2>
<ol>
<li><strong>Avaa arkisto</strong> – Sovellus lukee ZIP‑keskushakemiston saadakseen nopean indeksin merkinnöistä.</li>
<li><strong>Suodata kuvatiedostot</strong> – Ei‑kuva-merkinnät (<code>ComicInfo.xml</code>, <code>__MACOSX/</code>, jne.) ohitetaan.</li>
<li><strong>Lajittele aakkosjärjestykseen</strong> – Nollilla täytetyn nimeämisen vuoksi lajiteltu lista vastaa haluttua sivujärjestystä.</li>
<li><strong>Jäsennä metatiedot</strong> – Jos <code>ComicInfo.xml</code> on olemassa, lukija poimii sivutyypin liput, otsikon, tekijän jne., ja voi piilottaa sivut, jotka on merkitty <code>Advert</code> tai <code>Deleted</code>.</li>
<li><strong>Renderöi sivut</strong> – Kuvat puretaan (usein laitteistokiihdytetyillä JPEG/WebP‑purkajilla nykyaikaisissa e‑ink‑tableteissa) ja näytetään yksi‑kerrallaan, ennakoiden seuraavat muutamat sivut sujuvaa vieritystä varten.</li>
<li><strong>Säilytä tila</strong> – Lukupaikka, kirjanmerkit ja annotaatiot tallennetaan paikallisesti tai synkronoidaan pilveen, sovelluksesta riippuen.</li>
</ol>
<p>Se on syy siihen, miksi CBZ tuntuu yhtä nopealta ja reagoivalta kuin natiivi PDF, mutta pysyy täysin avoimena ja muokattavana.</p>
<hr>
<p><strong>Yhteenveto:</strong> CBZ:n eleganssi piilee sen yksinkertaisuudessa — tavallinen ZIP, jonka kuka tahansa voi avata, muokata tai käyttää uudelleen. Valinnaisen <code>ComicInfo.xml</code> -metatiedon, nykyaikaisten kuvakoodekkien ja nousevien standardien avulla se jatkaa kehittymistään pysyen uskollisena DRM‑vapaalle, monialustaiselle alkuperälleen.</p>
<!-- raw HTML omitted -->
]]></content:encoded>
    </item>
    
  </channel>
</rss>
