Prima di iniziare lo sviluppo di un eBook bisogna conoscere il suo scheletro, ovvero il file .opf, i suoi blocchi e i metadati. L’estensione .opf sta per ‘Open Packaging Format’, ovvero l’insieme di specifiche che definiscono il meccanismo con il quale sono collegate le varie componenti dell’eBook in ePub e che determinano la sua struttura e semantica. Al suo interno vengono dichiarati tutti i file utilizzati o a cui si fa riferimento nell’eBook.
L’elemento package, il root element, indica la versione dell’ePub (2 o 3) e dove si trova il rimando all’identificatore univoco del libro (solitamente l’isbn) dichiarato successivamente con un id (in questo caso BookID). All’interno di questo nodo radice troviamo tre nodi figli — è possibile trovare un ulteriore nodo il cui inserimento non è obbligatorio e non più usato da ePub versione 3 in poi.
All’interno del nodo radice
<?xml version="1.0" encoding="utf-8"?>
<package version="3.0" unique-identifier="BookId" xmlns="http://www.idpf.org/2007/opf" prefix="rendition: http://www.idpf.org/vocab/rendition/# ibooks: http://vocabulary.itunes.apple.com/rdf/ibooks/vocabulary-extensions-1.0/">
<metadata xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:opf="http://www.idpf.org/2007/opf">
<dc:language>it</dc:language>
<dc:title>Un esempio di scheletro</dc:title>
<dc:creator>Alessandro Bonalume</dc:creator>
<meta property="ibooks:specified-fonts">true</meta>
<meta property="ibooks:version">3.0</meta>
<meta property="dcterms:modified">2021-02-17T12:47:00Z</meta>
<meta property="rendition:spread">none</meta>
<meta property="rendition:layout">reflowable</meta>
<meta property="rendition:orientation">auto</meta>
<dc:identifier id="BookId">urn:uuid:a18a9e81-6d65-43fe-aaf1-cd7f045e4bfa</dc:identifier>
<meta content="1.3.0" name="Sigil version" />
<meta name="cover" content="ProvediLayout_cover.jpg" />
</metadata>
<manifest>
<item id="nav.xhtml" href="Text/nav.xhtml" media-type="application/xhtml+xml" properties="nav"/>
<item id="PaginaTitolo.xhtml" href="Text/PaginaTitolo.xhtml" media-type="application/xhtml+xml"/>
<item id="default.css" href="Styles/default.css" media-type="text/css"/>
[…]
</manifest>
<spine>
<itemref idref="cover.xhtml"/>
<itemref idref="PaginaTitolo.xhtml"/>
<itemref idref="Capitolo1.xhtml"/>
<itemref idref="nav.xhtml" linear="no"/>
</spine>
</package>
Struttura minima di un file content.opf di un eBook dal titolo “Un esempio di scheletro”.
Rappresenta un file ePub, versione 3.0, a layout fluido visualizzatile di default su una sola pagina con orientamento deciso dal lettore.
Il primo blocco del nodo radice, metadata, è la definizione dei metadati dell’eBook. Contiene cioè tutte le informazioni sull’eBook come l’identificatore univoco, il file di copertina, il titolo, l’autore, l’editorie e la lingua. Questo blocco di informazioni non va sottovalutato; è importante che venga compilato in modo il più dettagliato possibile per una corretta identificazione dell’eBook. Per altre informazioni consiglio l’eBook: I Metadati per i tuoi Ebook: edizione estesa con Amazon ADS
Il secondo elemento, manifest, è il manifesto dell’eBook. Al suo interno vanno dichiarati tutti i file che si trovano nel pacchetto, senza eccezione alcuna, come testi, immagini, font, foglio stile o indice (toc). Per ogni elemento bisognerà indicare un id (che verrà riutilizzato nello spine), la fonte e il tipo.
Infine, l’elemento spine, rappresenta l’ordine di visualizzazione dei file richiamati attraverso l’id e, attraverso la proprietà linear, se devono essere ignorati durante lo scorrimento delle pagine — tuttavia non riconosciuta da Gitden Reader o altre applicazioni di lettura.
L’elemento facoltativo guide, serve a chiarire il ruolo di alcuni file ed è richiesto da Apple Store.2 Si usa per i file più importanti, per esempio l’indice e la copertina. [aggiornamento 2021: ormai non più richiesto]
Gli editor dedicati
Sembra un’impresa scrivere tutto questo file, ma niente paura! Per il giusto inserimento dei vari elementi all’interno del file .opf, infatti, gli editor dedicati alla creazione di eBook, come Sigil, compilano in modo automatico il file .opf – una buona parte, almeno. Ma è importante conoscere tutti gli elementi e le loro caratteristiche soprattutto in caso di pubblicazione dell’eBook sulle piattaforme di distribuzione e vendita. Se vuoi vedere il tuo eBook, o distribuirlo, va assolutamente validato – per maggiori info leggi: Validare un ePub con EpubCheck. Spesso la validazione genera errori proprio all’interno del file .opf, quindi conoscere i suoi elementi è un buon punto di partenza per correggerlo in caso di errori.
Inoltre, bisogna saper compilare il blocco metadata. Per fortuna anche in questo caso ci vengono in soccorso gli editor dedicati. Ad esempio Sigil ha tra i suoi strumenti un ‘Editor dei metadati’ attraverso il quale è possibile aggiungere i metadati sviluppati da IDPF con le opportune proprietà. Per ognuno di questi Sigil ha inoltre dedicato una breve descrizione.
Consigli utili
All’interno del file content.opf io inserisco sempre i metadati property= “ibooks:specified-fonts” e property= “ibooks:version”, necessari per una corretta visualizzazione dell’eBook sui programmi Apple, e i metadati con attributo property=”role” per definire in modo specifico il metadato riferito attraverso l’id.
<dc:title id="tle1"> Titolo dell’eBook </dc:title>
<meta property="title-type" refines="#tle1"> main </meta>
<dc:title id="the"> Nome della collana </dc:title>
<meta property="title-type" refines="#tle"> collection </meta>
<dc:creator id="aut"> Autore </dc:creator>
<meta property="role" refines="#aut" scheme="marc:relators"> pht </meta>
L’intestazione è inserita per far capire a cosa corrisponde cosa.
Con il blocco meta vado a specificare l’elemento riferito dall’id. Ad esempio, la prima riga è il titolo del libro mentre la terza è il nome della collana. Come vedi entrambi i blocchi sono un dc:title ma per differenziarli inserisco un id riferito a un blocco meta specifico. Quindi la prima riga si specifica col meta dalla proprietà main (titolo principale, seconda riga) e la terza riga con la proprietà collection (collana, quarta riga). Nella sesta riga invece viene specificato il ruolo dell’autore, ovvero pht (fotografo).
L’argomento forse è un po’ noioso e difficile, ma lo ripeto: è importante avere un file .opf compilato nel modo più dettagliato possibile per avere un eBook completo e leggibile dalle applicazioni e programmi di lettura.
Fonti
Open Packaging Format (OPF), idpf, 2010
Guida all’opf, la spina dorsale dell’ePub, waytoepub, 2016