03-comment-je-travaille/accessibility/epub.md

EPUB - Format de documentation accessible

Vue d'ensemble

EPUB (Electronic Publication) est un format de livre numérique standardisé par l'IDPF (International Digital Publishing Forum), maintenant intégré au W3C. C'est le format privilégié pour produire de la documentation accessible.

Dans le contexte de Codexia, EPUB est utilisé pour :

  • Exporter la documentation technique du projet
  • Produire des documents accessibles conformes RGAA AA
  • Permettre une consultation multi-supports (web, liseuses, applications)

Pourquoi EPUB pour l'accessibilité ?

Avantages intrinsèques

  1. Basé sur HTML et CSS : Technologies web standard, bien maîtrisées
  2. Structuré : Sémantique HTML native (headings, lists, tables)
  3. Reflowable : Contenu adaptable à la taille d'écran (responsive)
  4. Métadonnées riches : Support natif des informations d'accessibilité
  5. Compatible : Lecture sur liseuses, tablettes, smartphones, lecteurs d'écran

Normes d'accessibilité

  • EPUB Accessibility 1.1 : SpĂ©cification du W3C pour l'accessibilitĂ© des EPUB
  • WCAG 2.1 AA : ConformitĂ© native si le contenu HTML est accessible
  • ARIA : Support des attributs ARIA pour enrichir la sĂ©mantique
  • Media Overlays : Synchronisation texte/audio pour les personnes dyslexiques

Structure d'un fichier EPUB

Un fichier EPUB est une archive ZIP contenant :

mon-livre.epub (ZIP)
├── mimetype                  # Type MIME (application/epub+zip)
├── META-INF/
│   └── container.xml         # Point d'entrée
├── OEBPS/                    # Contenu principal
│   ├── content.opf           # Manifest, métadonnées, ordre de lecture
│   ├── toc.ncx               # Table des matières (EPUB 2)
│   ├── nav.xhtml             # Table des matières HTML (EPUB 3)
│   ├── chapter1.xhtml        # Chapitres en XHTML
│   ├── chapter2.xhtml
│   ├── styles/
│   │   └── main.css          # Feuilles de style
│   └── images/
│       └── cover.jpg         # Images

Fichiers clés

mimetype

application/epub+zip

META-INF/container.xml

<?xml version="1.0" encoding="UTF-8"?>
<container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
  <rootfiles>
    <rootfile full-path="OEBPS/content.opf" media-type="application/oebps-package+xml"/>
  </rootfiles>
</container>

OEBPS/content.opf

Manifest complet du livre avec métadonnées d'accessibilité :

<?xml version="1.0" encoding="UTF-8"?>
<package xmlns="http://www.idpf.org/2007/opf" version="3.0" xml:lang="fr" unique-identifier="uid">
  <metadata xmlns:dc="http://purl.org/dc/elements/1.1/">
    <dc:title>Codexia - Documentation Technique</dc:title>
    <dc:creator>Mathieu Adrien</dc:creator>
    <dc:language>fr</dc:language>
    <dc:identifier id="uid">telaria-doc-2026</dc:identifier>
    <meta property="dcterms:modified">2026-02-20T10:00:00Z</meta>

    <!-- Métadonnées d'accessibilité -->
    <meta property="schema:accessMode">textual</meta>
    <meta property="schema:accessMode">visual</meta>
    <meta property="schema:accessModeSufficient">textual</meta>
    <meta property="schema:accessibilityFeature">structuralNavigation</meta>
    <meta property="schema:accessibilityFeature">tableOfContents</meta>
    <meta property="schema:accessibilityHazard">none</meta>
    <meta property="schema:accessibilitySummary">
      Cette publication est conforme WCAG 2.1 niveau AA.
    </meta>
  </metadata>

  <manifest>
    <item id="nav" href="nav.xhtml" media-type="application/xhtml+xml" properties="nav"/>
    <item id="chapter1" href="chapter1.xhtml" media-type="application/xhtml+xml"/>
    <item id="css" href="styles/main.css" media-type="text/css"/>
  </manifest>

  <spine>
    <itemref idref="chapter1"/>
  </spine>
</package>

Bonnes pratiques d'accessibilité

1. Structure sémantique

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
  <meta charset="UTF-8"/>
  <title>Introduction</title>
  <link rel="stylesheet" href="styles/main.css"/>
</head>
<body>
  <section epub:type="chapter" role="doc-chapter">
    <h1>Introduction Ă  Codexia</h1>
    <p>Codexia est une application de documentation...</p>

    <section>
      <h2>Objectifs du projet</h2>
      <ul>
        <li>Vitrine technique</li>
        <li>Documentation auto-générée</li>
      </ul>
    </section>
  </section>
</body>
</html>

2. Images accessibles

<!-- Image avec alternative textuelle -->
<figure>
  <img src="images/architecture.png"
       alt="Diagramme de l'architecture Codexia montrant les couches Controller, Service, Repository et Entity"/>
  <figcaption>Architecture en couches de Codexia</figcaption>
</figure>

<!-- Image décorative -->
<img src="images/decoration.png" alt="" role="presentation"/>

3. Tableaux accessibles

<table>
  <caption>Liste des modules Codexia</caption>
  <thead>
    <tr>
      <th scope="col">Module</th>
      <th scope="col">Statut</th>
      <th scope="col">Version</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Core</td>
      <td>Stable</td>
      <td>1.0.0</td>
    </tr>
  </tbody>
</table>

4. Navigation accessible

<!-- nav.xhtml : Table des matières -->
<nav epub:type="toc" role="doc-toc">
  <h1>Table des matières</h1>
  <ol>
    <li><a href="chapter1.xhtml">Introduction</a></li>
    <li>
      <a href="chapter2.xhtml">Architecture</a>
      <ol>
        <li><a href="chapter2.xhtml#backend">Backend</a></li>
        <li><a href="chapter2.xhtml#frontend">Frontend</a></li>
      </ol>
    </li>
  </ol>
</nav>

5. CSS accessible

/* Respecter les préférences utilisateur */
body {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  font-size: 1rem;
  line-height: 1.6;
  color: #1a1a1a;
  background-color: #ffffff;
}

/* Contrastes conformes WCAG AA (4.5:1) */
a {
  color: #0066cc;
}

a:hover, a:focus {
  color: #004499;
  text-decoration: underline;
}

/* Support du mode sombre (respecter prefers-color-scheme) */
@media (prefers-color-scheme: dark) {
  body {
    color: #e0e0e0;
    background-color: #1a1a1a;
  }

  a {
    color: #66b3ff;
  }
}

/* Ne pas forcer de taille de police fixe */
/* Permettre le zoom jusqu'Ă  200% sans perte de contenu */

Outils de production

Générateurs EPUB

  1. Pandoc (recommandé pour Codexia)

    pandoc input.md -o output.epub \
      --metadata title="Codexia Documentation" \
      --metadata author="Mathieu Adrien" \
      --metadata lang="fr" \
      --toc --toc-depth=2 \
      --epub-cover-image=cover.jpg
    
  2. Calibre : Interface graphique, conversion de formats

  3. Sigil : Éditeur EPUB WYSIWYG

Validation

  • EPUBCheck : Validateur officiel EPUB

    epubcheck mon-livre.epub
    
  • Ace by DAISY : Audit d'accessibilitĂ© EPUB

    ace mon-livre.epub
    

Intégration dans Codexia

Workflow de production

  1. Rédaction : Documentation en Markdown (dans /docs)
  2. Génération : Script automatisé (Pandoc) pour convertir en EPUB
  3. Validation : EPUBCheck + Ace
  4. Publication : Mise Ă  disposition du fichier EPUB sur le site

Script de génération

#!/bin/bash
# scripts/generate-epub.sh

DOCS_DIR="docs"
OUTPUT_DIR="public/downloads"
EPUB_FILE="telaria-documentation.epub"

# Concaténer les fichiers Markdown dans l'ordre
cat ${DOCS_DIR}/README.md \
    ${DOCS_DIR}/philosophie.md \
    ${DOCS_DIR}/ingenierie.md \
    > /tmp/codexia-full.md

# Générer l'EPUB
pandoc /tmp/codexia-full.md \
  -o ${OUTPUT_DIR}/${EPUB_FILE} \
  --metadata title="Codexia - Documentation Technique" \
  --metadata author="Mathieu Adrien" \
  --metadata lang="fr" \
  --toc --toc-depth=2 \
  --epub-cover-image=assets/images/cover.jpg \
  --css=assets/styles/epub.css

# Valider
epubcheck ${OUTPUT_DIR}/${EPUB_FILE}
ace ${OUTPUT_DIR}/${EPUB_FILE} -o ${OUTPUT_DIR}/ace-report

echo "EPUB généré : ${OUTPUT_DIR}/${EPUB_FILE}"

Checklist d'accessibilité EPUB

  • MĂ©tadonnĂ©es d'accessibilitĂ© prĂ©sentes dans content.opf
  • Structure sĂ©mantique HTML5 correcte (<section>, <article>, <nav>)
  • HiĂ©rarchie des titres respectĂ©e (h1 → h2 → h3, sans saut)
  • Alternatives textuelles pour toutes les images informatives
  • Images dĂ©coratives marquĂ©es alt="" ou role="presentation"
  • Tableaux avec <caption>, <th scope>, <thead>, <tbody>
  • Liens explicites (pas de "cliquez ici")
  • Contrastes conformes WCAG AA (4.5:1 pour texte normal)
  • Pas de taille de police fixe (utiliser rem, em, %)
  • Support du zoom jusqu'Ă  200% sans perte de contenu
  • Table des matières (nav.xhtml avec epub:type="toc")
  • Langue du document dĂ©clarĂ©e (xml:lang, lang)
  • Validation EPUBCheck sans erreur
  • Audit Ace sans problème critique

Ressources

Spécifications

Outils

  • Pandoc - Convertisseur universel de documents
  • EPUBCheck - Validateur EPUB
  • Ace by DAISY - Audit d'accessibilitĂ© EPUB
  • Calibre - Gestion et conversion de livres numĂ©riques
  • Sigil - Éditeur EPUB

Guides

Assistant documentaire

Posez une question sur la documentation. Les réponses citent leurs sources — un clic ouvre le document à gauche.

Loading…
Loading the web debug toolbar…
Attempt #