- All text must be available in a logical reading order – Use structural markup to define the natural reading order of the primary narrative and to distinguish secondary material such as footnotes, references, figures, and other auxiliary content.
- Separate presentation and content – Visual reading is only one way of accessing content. Do not use visual-only cues such as colored text, font size or positioning as the only clue to the meaning or importance of a word or section.
- Provide complete navigation – Include a complete table of contents in the front matter and consider smaller tables of contents at the start of each section. Use <section> and <aside> tags in the content and the <itemref linear=”no”> tag in the manifest file to define a logical reading order.
- Create meaningful structure wherever possible – Create a structure by using numbered headings in a logical structure. For other tagged structures, specify their content with the epub:type attribute. For example, the tag that contains the preface of a book might look like <section epub:type=”preface”>.
- Define the content of each tag – Include semantic information to describe the content of a tag. A section tag for the table of contents would look like <section epub:type=”toc”> or a list of definitions in a glossary would be tagged with <dl epub:type=”glossary”>.
- Use images only for pictures, not for tables or text – Any content embedded in an image is not available to visually impaired readers. If the textual contents of a table or image are required for comprehension of the document, use proper and complete markup for text and tabular data, including headers and scope attributes for tables. If images of text are unavoidable, provide a description and transcription of the text and use accessible SVG.
- Use image descriptions and alt text – Every image should have a description, caption or alt text unless it is solely decorative.
- Include page numbers – Page numbers are the way many people navigate within a book. For any book with a print equivalent, use the epub:type=”pagebreak” attribute to designate page numbers.
- Define the language(s) – To make sure each word will be rendered correctly, specify the default language of the content in the root html tag. Indicate any words, phrases or passages in a different language by using the xml:lang attribute: <span xml:lang=”fr” lang=”fr”>rue Saint-Andre-des-Arts</span>.
- Use MathML – MathML makes mathematical equations accessible to everyone by eliminating the ambiguity of a verbal description of a picture.
- Provide alternative access to media content – Make sure the native controls for video and audio content are enabled by default. Provide fallback options such as captions or descriptions for video and transcripts for audio.
- Use accessibility metadata – As part of a general good practice of documenting the accessibility of your content, provide accessibility metadata in your files so end users know what features are there and search engines can discover your accessible materials.
For a more detailed study of Accessible EPUB books, please visit Top Tips for Creating Accessible EPUB 3 Files.
[This work is licensed under the Creative Commons Attribution-NonCommercial 2.5 Generic License and was originally published in a more complete form by International Digital Publishing Forum.]