Bon, si ça intéresse quelqu'un (attention, c'est du contenu "expert")
J'ai pu décortiquer tout ce gros bouzin pendant 50 heures, voilà mon résumé technique. Je me suis même intéressé à la manière dont sont construits les modèles. Pour iBooks Author en lui-même, faut essayer directement, ça vaudra tous les comptes-rendus du monde.
La démarche est de comprendre comment ce format fonctionne, en quoi il diffère d'EPUB (c'est en gros un fork EPUB3) et d'offrir une base technique.
Le format iBooks
iBooks Author ne sait ni importer ni exporter de fichiers EPUB. En fait il construit un fichier .iba si tu sauvegardes ton projet ( iba pour iBooks Author). Ce qu'il t'exporte est un dossier itmsp contenant livre.ibooks + couverture au format jpeg + metadata.xml qui résume le contenu du dossier avec des metadonnées pour iTunes Connect.
Il est possible de dézipper .ibooks comme un EPUB. Aussi, on obtient :
- un dossier Meta-Inf contenant le xml display-options habituel (où option name = interactive) + un xml container qui permet de déterminer les "roots" du livre.
- un mimetype "application/x-ibooks+zip" et non pas "application/epub+zip"
- un dossier OPS qui contient les pages xhtml, le ncx et l'opf, le fichier xhtml du glossaire et un dossier assets.
Dans le dossier Assets :
- un dossier CSS contenant toutes les feuilles de style : elles sont au nombre de 3 par chapitre (pages non numérotées = portrait, pages numérotées = paysage, CSS commune)
- un dossier hints contenant des fichiers "plist" pour preference list et servent à l'orientation paysage
- un dossier images
- un xml pour étendre le fichier ncx
- un dossier search contenant deux xml "index" et "RefText"
- un dossier svg contenant des images SVG pour les chapitres
- un dossier thumbs contenant les miniatures des chapitres dans deux tailles différentes
- -un xhtml TocConfig.
En gros, tu as l'impression de voir de l'EPUB mais le contenu typique se voit ajouter nombre de petites choses pour les fonctionnalités avancées du format textbooks.
Base EPUB, partie CSS "PROPRIO"
Apparemment, le fichier est EPUB-compliant. En le passant au test EPUBCheck 3, seules les balises < object > posent problème en fait. Mais Epubcheck est très très loin de couvrir totalement les specs EPUB…
En analysant le livre avec éditeur HTML :
- Il y a 5 éléments qui permettent la mise en page : les 3 CSS qui sont manifestées par une balise <?xml-stylesheet> (pas la manière standard d'y référer mais c'est un tout petit détail), un <link> vers l'image SVG comme feuille de style (?! -> ça va à l'encontre de toute logique SVG prévue par l'IDPF et par les bonnes pratiques HTML/CSS habituelles. Techniquement, c'est détourner la fonction d'un élément qui n'a pas été prévu pour ça.) et un <link> vers une plist pour l'orientation paysage.
Bloc de code:
<?xml-stylesheet href=’assets/css/content2.css’ type=’text/css’ media=’all’?>
<?xml-stylesheet href=’assets/css/content2-paginated.css’ type=’text/css’ media=’[b]paginated[/b] and (orientation:landscape)’?>
<?xml-stylesheet href=’assets/css/content2-nonpaginated.css’ type=’text/css’ media=’[b]nonpaginated[/b] and (orientation:portrait)’?>
<link href=“../Images/content2.svg” rel=“stylesheet” [b]type=“text/xml+svg”[/b] />
<link href=“../Misc/content2-landscape.plist” media=“paginated and (orientation:landscape)” rel=“alternate” [b]type=“application/x-ibooks+linehints”[/b] />
Le tout repose sur des propriétés CSS préfixées
-ibooks-* (et pas
-webkit-* comme dans ePUB) et une approche "slot" pour le texte wrappé qui est nettement différente de celle choisie pour EPUB3 (basée sur celle d'Adobe).
Il me paraît quasi impossible de convertir cette approche CSS dans le format EPUB, d'autant plus que les balises
-ibooks-* n'ont pas d'équivalents totalement semblables CSS3.
Je vais même être encore un peu plus clair,
on a des media queries propriétaires (paginated, nonpaginated) et des choses qui ont été rajoutées au niveau de x-ibooks pour pouvoir interpréter les feuilles de style et les faire fonctionner ensemble (les type="..." en gras)
Si tu ouvres le fichier dans un lecteur EPUB ou dans Sigil, le contenu sera répété 4 fois avec des images carrément remplacées par des blocs noirs.
Remarque : il faut savoir que sur la question du CSS, même Amazon respecte davantage les spécifications EPUB avec Kindle Format 8… qui est un format propriétaire.
Les Widgets
Les widgets iBooks Author sont des widgets Mac OS X modifiés.
Ils sont fabriqués avec Daschode.
Un widget OS X, c'est du HTML, une CSS, du javascript, une plist (pour les metadonnées) et des images (miniatures, fond png, etc.)
Là, on retrouve tout sauf le javascript. Tu as du HTML, une CSS, une plist, les images. Il n'y a pas de javascript dans le livre. En gros, les widgets vont chercher le code javascript dans des bases de données inclues dans le moteur de rendu iBooks 2.
j'en conclus donc qu'iBooks 2 tourne avec deux moteurs de rendu : un pour ePUB (webkit) et l'autre pour iBooks / iba (x-ibooks).
Bref, aucun moyen de les convertir.
NB : pas eu le temps d'analyser les widgets audio et video (si balise HTML5 ou si Dashcode).
Conclusion : là, nous sommes totalement à l'opposé d'EPUB puisqu'Apple a construit une bibliothèque Javascript pour EPUB. Les widgets ibooks ne reposent pas sur cette bibliothèque Javascript => Apple fait clairement la distinction entre les deux formats.
Les modèles
Compte tenu du nombre limité de modèles (6) visant le manuel scolaire, je me suis posé la question de la création de modèles perso.
Il y a deux moyens de le faire :
- partir d'un modèle de base et le modifier en profondeur (tu peux enregistrer tes propres modèles, comme dans Mail).
- bâtir un modèle à la main
Pour accéder aux modèles :
Applications -> afficher contenu du paquet iBooks Author -> Contents -> Resources -> Templates. Les modèles vierge et texte sont des modèles .Pages. Les modèles avancés sont appelés iBateTemplate. Pour les ouvrir : afficher le contenu du paquet iBateTemplate.
Tu as une quantité ahurissante de miniatures. Tu as les images de fond, des profils couleur (si plusieurs fonds de couleurs différentes dans le template), un historique en plist, des iproj pour les langues, des index en XML zippés (gz), un dossier section pour cover, intro, table des matières, etc en xml zippés (toujours en gz).
Je ne me suis pas plus penché sur le sujet, mais ça me paraît un travail de dingue pour les faire à la main en partant de zéro (rien que les miniatures prennent des heures), vaut largement mieux détourner un modèle existant, changer les fichiers qu'il contient et le renommer tellement c'est casse-couille. À noter qu'il existe une application pour faire des modèles Mail OS X en WYSIWYG et les enregistrer sous Mail. Avec un peu de chance, le développeur ira mettre à jour son app ou en créer une autre… Je pense que des boîtes soft vont rapidement créer des modèles et les vendre en packs pour environ 30 dollars, ils le font déjà pour Mail.
Remarque finale : il semble que le format soit ultra-plantogène sur iPad1 (qui n'est peut-être pas assez puissant pour le gérer, faut espérer que ce soit un soucis d'optimisation logicielle).
Voilà voilà, c'est tout pour aujourd'hui… et c'est déjà pas mal ^^
Annexes :
- Partie widget confirmée par Liz Castro et Fake Baldur.
- Partie CSS confirmée par Fake Baldur et Glazman (chairman W3C).
- Partie EPUB confirmée par à peu près tout le monde mais gros débat sur EPUB ou pas. Que ce soit clair, celui qui dit que c'est de l'EPUB déforme complètement la réalité, même Apple n'ose pas appeler ça EPUB (toute la partie CSS est non standard et non documentée, avec des propriétés CSS préfixées -ibooks-* propriétaires + tout le modèle de rendu est bâti autour de ces extensions + cette approche diffère de celle choisie par l'IDPF pour EPUB3. Donc, ça ne peut pas être de l'EPUB, d'où le mimetype "application/x-ibooks+zip"). En fait, ce n'est même ni vraiment EPUB2, ni vraiment EPUB3. Changer l'extension en EPUB ne signifie en aucun cas que c'est de l'EPUB, ça nous indique juste qu'il y a une base commune entre ibooks et EPUB…
- Partie modèles sans confirmation, je suis un des seuls à m'y être intéressé pour le moment.
Liens utiles :
Glazman (co-chairman W3C)
Fake Baldur (il y a deux liens vers deux articles sur CSS et Widgets en intro)
Mail de Jacob, employé Apple, à la W3C Mailing List en Mars 2011 pour expliquer l'approche d'Apple sur la mise en page. Deux employés Adobe, un employé Microsoft et un employé Firefox (il me semble) ont participé à la discussion. Bref, en gros, ils ont fait le choix de forker EPUB à ce moment-là.