EPUB — это формат файлов электронных книг , использующий расширение файла «.epub» . Этот термин является сокращением от электронного издания и иногда стилизован под ePub . EPUB поддерживается многими устройствами для чтения электронных книг , а совместимое программное обеспечение доступно для большинства смартфонов, планшетов и компьютеров. EPUB — это технический стандарт , опубликованный Международным форумом цифровых публикаций (IDPF). Он стал официальным стандартом IDPF в сентябре 2007 года, заменив старый стандарт Open eBook (OEB). [2]
Исследовательская группа книжной индустрии одобрила EPUB 3 в качестве предпочтительного формата для упаковки контента и заявила, что мировая книгоиздательская индустрия должна сплотиться вокруг единого стандарта. [3] Формат EPUB реализован как архивный файл, состоящий из файлов XHTML , несущих контент, а также изображений и других вспомогательных файлов. EPUB — наиболее широко поддерживаемый формат электронных книг на основе XML , независимый от поставщика; то есть он поддерживается практически всеми аппаратными считывателями. [4]
Преемник открытой структуры публикации электронных книг , EPUB 2.0 был утвержден в октябре 2007 года [5] с техническим обновлением (2.0.1), утвержденным в сентябре 2010 года. [6]
Спецификация EPUB 3.0 вступила в силу в октябре 2011 года, а в июне 2014 года ее заменило незначительное техническое обновление (3.0.1). [7] Новые основные функции включают поддержку точного макета или специализированного форматирования (документы с фиксированным макетом), например, для комиксов. , [8] и поддержка MathML . Текущая версия EPUB — 3.2, вступает в силу 8 мая 2019 г. [9] Спецификация формата (текст) подверглась реорганизации [10] и очистке; Формат поддерживает удаленно размещенные ресурсы и новые форматы шрифтов ( WOFF 2.0 и SFNT ) [11] и использует более чистый HTML и CSS . [12]
В мае 2016 года члены IDPF одобрили слияние Консорциума World Wide Web (W3C) [13] «для полного согласования издательской индустрии и основных веб-технологий». [14]
Версия EPUB 2.0 была одобрена в октябре 2007 года, а в сентябре 2010 года было утверждено техническое обновление (2.0.1), предназначенное для уточнения и исправления ошибок в спецификациях. [6] Версия EPUB 2.0.1 состоит из трех спецификаций:
.epub
в формате XML. [16]Внутри EPUB используется XHTML или DTBook (стандарт XML, предоставленный консорциумом DAISY ) для представления текста и структуры документа с содержимым, а также подмножество CSS для обеспечения макета и форматирования. XML используется для создания манифеста документа, оглавления и метаданных EPUB . Наконец, файлы объединяются в zip- файл в качестве упаковочного формата.
Файл EPUB использует XHTML 1.1 (или DTBook) для создания содержимого книги, начиная с версии 2.0.1. Это отличается от предыдущих версий (OEBPS 1.2 и более ранних), в которых использовалось подмножество XHTML. Однако на некоторые элементы есть некоторые ограничения. MIME -тип для документов XHTML в EPUB — application/xhtml+xml
. [15] [а]
Стилизация и макет выполняются с использованием подмножества CSS 2.0, называемого таблицами стилей OPS . Этот специализированный синтаксис требует, чтобы системы чтения поддерживали только часть свойств CSS и добавляли несколько пользовательских свойств. Пользовательские свойства включают oeb-page-head, oeb-page-foot,
и oeb-column-number
. Встраивание шрифта можно выполнить с помощью этого @font-face
свойства, а также включить файл шрифта в манифест OPF (см. ниже). MIME -тип для документов CSS в EPUB — text/css
. [15] [б]
EPUB также требует, чтобы изображения PNG , JPEG , GIF и SVG поддерживались с использованием mimetypes image/png, image/jpeg, image/gif, image/svg+xml
. Разрешены другие типы мультимедиа, но создатели должны включать альтернативные версии, используя поддерживаемые типы. [15] Таблицу всех необходимых mime-типов см. в разделе 1.3.7 спецификации.
Требуется Юникод , и производители контента должны использовать кодировку UTF-8 или UTF-16 . [15] Это делается для поддержки международных и многоязычных книг. Однако системы чтения не обязаны предоставлять шрифты, необходимые для отображения каждого символа Юникода, хотя они обязаны отображать хотя бы заполнитель для символов, которые не могут отображаться полностью. [15]
Пример скелета файла XHTML для EPUB выглядит следующим образом:
<?xml version="1.0"coding="UTF-8" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11 /DTD/xhtml11.dtd"> < html xmlns = "http://www.w3.org/1999/xhtml" xml:lang = "en" > < head > < мета http-equiv = "Content-Type" content = "application/xhtml+xml; charset=utf-8" /> < title > Гордость и предубеждение </ title > < ссылка rel = "таблица стилей" href = "css/main.css" type = "text/css" / > </ голова > < тело > ... </ тело > </ html >
Цель спецификации OPF — «[определить] механизм, с помощью которого различные компоненты публикации OPS связываются вместе, и обеспечить дополнительную структуру и семантику электронной публикации». [16] Это достигается с помощью двух XML-файлов с расширениями .opf
и .ncx
.
Файл OPF, традиционно называемый content.opf
, содержит метаданные книги EPUB, манифест файла и линейный порядок чтения. Этот файл имеет корневой элемент package
и четыре дочерних элемента: metadata
, manifest
, spine
и guide
. Кроме того, package
узел должен иметь unique-identifier
атрибут. MIME-тип файла .opf — application/oebps-package+xml
. [16]
Этот metadata
элемент содержит всю информацию метаданных для конкретного файла EPUB. Требуются три тега метаданных (хотя доступно гораздо больше): title
, language
и identifier
. title
содержит название книги, language
содержит язык содержания книги в формате RFC 3066 или его преемниках, таких как более новый RFC 4646 , и identifier
содержит уникальный идентификатор книги, например ее ISBN или URL-адрес . Атрибут identifier
' id
должен соответствовать unique-identifier
атрибуту элемента package
. [16] [с]
В этом manifest
элементе перечислены все файлы, содержащиеся в пакете. Каждый файл представлен элементом item
и имеет атрибуты id
, href
, media-type
. Здесь должны быть перечислены все XHTML (документы с содержимым), таблицы стилей, изображения или другие медиафайлы, встроенные шрифты и файл NCX. Не следует включать только .opf
сам файл, container.xml
файлы . [16]mimetype
В этом spine
элементе перечислены все документы содержимого XHTML в линейном порядке чтения. Кроме того, необходимо также указать любой документ с содержимым, к которому можно получить доступ посредством ссылки или оглавления. Атрибут toc
должен spine
содержать id
файл NCX, указанный в манифесте. Для каждого itemref
элемента idref
устанавливается значение id
соответствующего документа содержимого. [16]
Этот guide
элемент является необязательным и предназначен для идентификации основных структурных компонентов книги. Каждый reference
элемент имеет атрибуты type
, title
, href
. Файлы, на которые имеются ссылки, href
должны быть указаны в манифесте, и им разрешено иметь идентификатор элемента (например, #figures
в примере). [16] [д]
Пример файла OPF:
<?xml version="1.0"?> <package version= "2.0" xmlns= "http://www.idpf.org/2007/opf" unique-identifier= "BookId" > <metadata xmlns:dc= "http://purl.org/dc/elements/1.1/" xmlns:opf= "http://www.idpf.org/2007/opf" > <dc:title> Гордость и предубеждение </dc:title> <dc:language> en </dc:language> <dc:identifier id= "BookId" opf:scheme= "ISBN" > 123456789X </dc:identifier> <dc:creator opf:file- as= "Остин, Джейн" opf:role= "aut" > Джейн Остин </dc:creator> </metadata> <manifest> <item id= "chapter1" href= "chapter1.xhtml" media-type= "application/xhtml+xml" /> <item id= "appendix" href= "appendix.xhtml" media-type= "application /xhtml+xml" /> <item id= "stylesheet" href= "style.css" media-type= "text/css" /> <item id= "ch1-pic" href= "ch1-pic.png" media-type= "image/png" /> <item id= "myfont" href= "css/myfont.otf" media-type= "application/x-font-opentype" /> <item id= "ncx" href = "toc.ncx" media-type= "application/x-dtbncx+xml" /> </manifest> <spine toc= "ncx" > <itemref idref= "chapter1" /> <itemref idref= "appendix" /> </spine> <guide> <reference type= "loi" title= "Список иллюстраций" href= "appendix.xhtml#figures" /> </guide> </пакет>
Файл NCX ( файл управления навигацией для X ML), традиционно называемый toc.ncx
, содержит иерархическое оглавление для файла EPUB. Спецификация NCX была разработана для Digital Talking Book (DTB), поддерживается консорциумом DAISY и не является частью спецификации EPUB. Файл NCX имеет mime-тип application/x-dtbncx+xml
.
Следует отметить, что значения элементов docTitle
, docAuthor
и meta name="dtb:uid"
должны соответствовать их аналогам в файле OPF. Также meta name="dtb:depth"
элемент задается равным глубине элемента navMap
. navPoint
элементы могут быть вложены для создания иерархического оглавления. navLabel
Содержимое — это текст, который появляется в оглавлении, созданном системами чтения, использующими расширение .ncx. navPoint
Элемент content
указывает на документ содержимого, указанный в манифесте, а также может включать идентификатор элемента (например, #section1
). [16] [18]
Описание некоторых исключений из спецификации NCX, используемой в EPUB, находится в разделе 2.4.1 спецификации. Полную спецификацию NCX можно найти в разделе 8 «Спецификаций цифровой говорящей книги» . [18]
Пример файла .ncx:
<?xml version="1.0"coding="UTF-8"?> <!DOCTYPE ncx PUBLIC "-//NISO//DTD ncx 2005-1//EN" " http://www.daisy.org/z3986 /2005/ncx-2005-1.dtd"><ncx version= "2005-1" xml:lang= "en" xmlns= "http://www.daisy.org/z3986/2005/ncx/" > <head> <!-- Следующие четыре элемента метаданных необходимы для всех документов NCX, включая те, которые соответствуют ослабленным ограничениям OPS 2.0 --> <meta name= "dtb:uid" content= "123456789X" /> <!-- то же, что и в .opf --> <meta name= "dtb:length" content= "1" /> <!-- 1 или выше --> <meta name= "dtb:totalPageCount" content= "0" /> <!-- должно быть 0 --> <meta name= "dtb:maxPageNumber" content= "0" /> <!-- должно быть 0 --> </head> <docTitle> <text> Гордость и предубеждение </text> </docTitle> <docAuthor> <text> Остин, Джейн </text> </docAuthor> <navMap> <navPoint class= "chapter" id= "chapter1" playOrder= "1" > <navLabel><text> Глава 1 </text></navLabel> <content src= "chapter1.xhtml" /> </ navPoint> </navMap> </ncx>
Файл EPUB представляет собой группу файлов, соответствующих стандартам OPS/OPF и упакованных в ZIP-файл. [19] OCF определяет, как организовать эти файлы в ZIP-архиве, и определяет два дополнительных файла, которые должны быть включены.
Файл mimetype
должен представлять собой текстовый документ в формате ASCII, содержащий строку application/epub+zip
. Он также должен быть несжатым, незашифрованным и первым файлом в ZIP-архиве. Этот файл предоставляет приложениям более надежный способ определить mime-тип файла, чем просто .epub
расширение. [17]
Также должна существовать папка с именем META-INF
, содержащая необходимый файл container.xml
. Этот XML-файл указывает на файл, определяющий содержимое книги. Это файл OPF, хотя rootfile
допускаются дополнительные альтернативные элементы. [17]
Помимо mimetype
и META-INF/container.xml
другие файлы (OPF, NCX, XHTML, CSS и файлы изображений) традиционно помещаются в каталог с именем OEBPS
.
Пример структуры файла:
--ZIP-контейнер--мимтипМЕТА-ИНФ/ контейнер.xmlОЕВПС/ контент.opf глава1.xhtml ch1-pic.png CSS/ стиль.css myfont.otf
Пример контейнера.xml с учетом указанной выше файловой структуры:
<?xml version="1.0"coding="UTF-8" ?> <container version= "1.0" xmlns= "urn:oasis:names:tc:opendocument:xmlns:container" > <rootfiles> < полный путь к корневому файлу = "OEBPS/content.opf" media-type= "application/oebps-package+xml" /> </rootfiles> </container>
Рекомендуемая спецификация EPUB 3.0 была утверждена 11 октября 2011 г. 26 июня 2014 г. EPUB 3.0.1 был утвержден как незначительное техническое обновление EPUB 3.0. EPUB 3.0 заменяет предыдущую версию 2.0.1. [э]
EPUB 3 состоит из набора из четырех спецификаций: [20]
Формат EPUB 3.0 был предназначен для устранения следующих критических замечаний:
26 июня 2014 г. IDPF опубликовал EPUB 3.0.1 в качестве окончательной рекомендуемой спецификации. [23]
В ноябре 2014 года стандарт EPUB 3.0 был опубликован ISO / IEC как ISO/IEC TS 30135 (части 1–7). [24]
В январе 2020 года стандарт EPUB 3.0.1 был опубликован ISO / IEC как ISO/IEC 23736 (части 1–6). [25]
EPUB 3.2 был анонсирован в 2018 году, [26] а окончательная спецификация была выпущена в 2019 году . [27] Заметным изменением является удаление специализированного подмножества CSS, что позволяет использовать свойства, не имеющие префикса epub. Ссылки на стандарты HTML и SVG также обновляются до «самой последней доступной версии», а не до фиксированной версии. [28]
W3C анонсировал версию 3.3 25 мая 2023 года. [29] Изменения включали более строгие стандарты безопасности и конфиденциальности; и принятие медиаформатов WebP и Opus . [30]
Формат и многие ридеры поддерживают следующее:
Файл EPUB может содержать DRM в качестве дополнительного слоя, но это не требуется спецификациями. [35] Кроме того, в спецификации не указана какая-либо конкретная система DRM, поэтому издатели могут выбрать схему DRM по своему вкусу. Однако в будущих версиях EPUB (в частности, OCF) может быть указан формат DRM. [17]
Спецификация EPUB не навязывает и не предлагает конкретную схему DRM . Это может повлиять на уровень поддержки различных систем DRM на устройствах и портативность купленных электронных книг. Следовательно, такая несовместимость DRM может сегментировать формат EPUB по принципу систем DRM, подрывая преимущества единого стандартного формата и вводя потребителя в заблуждение. [36] [37] [38] [39] [40] [41]
Файлы EPUB с DRMed должны содержать файл, вызываемый rights.xml
в META-INF
каталоге на корневом уровне ZIP-контейнера. [17] [ нужны разъяснения ]
EPUB широко используется в программах для чтения книг, таких как Google Play Books на Android и Apple Books на iOS и macOS , а также в электронных книгах Amazon Kindle , но не в связанных приложениях для других платформ. iBooks также поддерживает собственный формат iBook, который основан на формате EPUB, но его функционирование зависит от кода приложения iBooks. [42]
EPUB — популярный формат электронного обмена данными , поскольку он может быть открытым форматом и основан на HTML, в отличие от собственного формата Amazon для устройств чтения Kindle. Популярные производители общедоступного и открытого лицензированного контента EPUB включают Project Gutenberg , Standard Ebooks , PubMed Central , SciELO и другие.
В 2022 году служба Amazon Send to Kindle отказалась от поддержки собственного формата файлов Kindle в пользу EPUB. [43] [44]
EPUB требует, чтобы читатели поддерживали форматы HTML5 , JavaScript , CSS, SVG , поэтому читатели EPUB используют ту же технологию, что и веб-браузеры.
Такие форматы связаны с различными типами проблем безопасности и нарушениями конфиденциальности, например веб-маяки , CSRF , XSHM, из-за их сложности и гибкости.
Такие уязвимости можно использовать для реализации веб-отслеживания и отслеживания между устройствами в файлах EPUB. [45] [46] [47]
Исследователи безопасности также выявили атаки, приводящие к загрузке локальных файлов и других пользовательских данных. [48] [49]
В документе «Обзор EPUB 3.1» содержится предупреждение о безопасности: [50]
Авторы должны знать, что создание сценариев в публикации EPUB может создавать проблемы безопасности, которые отличаются от сценариев в веб-браузере. Например, типичные политики одного и того же происхождения не применимы к содержимому, загруженному в локальную систему пользователя. Поэтому настоятельно рекомендуется ограничивать создание сценариев контекстами, ограниченными контейнером.
Файл EPUB представляет собой архив, который, по сути, содержит веб-сайт. Он включает в себя файлы HTML, изображения, таблицы стилей CSS и другие ресурсы. Он также содержит метаданные. EPUB 3.3 — последняя версия. Используя HTML5 , публикации могут содержать видео, аудио и интерактивность, как веб-сайты в веб-браузерах. [32]
Публикация EPUB поставляется в виде одного файла. Этот файл представляет собой незашифрованный ZIP-архив, содержащий набор взаимосвязанных ресурсов. [51]
Абстрактный контейнер OCF (открытый формат контейнера) определяет модель файловой системы для содержимого контейнера. Модель файловой системы использует один общий корневой каталог для всего содержимого контейнера. Все (неудаленные) ресурсы для публикаций находятся в дереве каталогов, возглавляемом корневым каталогом контейнера, хотя EPUB не требует для этого какой-либо конкретной структуры файловой системы. Модель файловой системы включает обязательный каталог с именем META-INF, который является прямым дочерним элементом корневого каталога контейнера. META-INF хранит файлContainer.xml.
Первым файлом в архиве должен быть файл mimetype . Он должен быть незашифрованным и несжатым, чтобы утилиты, не использующие ZIP, могли прочитать mimetype. Файл mimetype должен представлять собой файл ASCII , содержащий строку «application/epub+zip». Этот файл предоставляет приложениям более надежный способ определения mime-типа файла, чем просто расширение .epub. [51]
Пример структуры файла:
--ZIP-контейнер--мимтипМЕТА-ИНФ/ контейнер.xmlОЕВПС/ контент.opf глава1.xhtml ch1-pic.png CSS/ стиль.css myfont.otf toc.ncx
Должен существовать каталог META-INF, содержащий файлContainer.xml. Этот файл указывает на файл, определяющий содержимое книги, файл OPF, хотя допускаются дополнительные альтернативные элементы корневого файла. [51] Помимо mimetype и META-INF/container.xml, другие файлы (OPF, NCX, XHTML, CSS и файлы изображений) традиционно помещаются в каталог с именем OEBPS. Пример контейнера.xml:
<?xml version="1.0"coding="UTF-8" ?> <container version= "1.0" xmlns= "urn:oasis:names:tc:opendocument:xmlns:container" > <rootfiles> < полный путь к корневому файлу = "OEBPS/content.opf" media-type= "application/oebps-package+xml" /> </rootfiles> </container>
Контейнер ePUB должен содержать: [52]
Контейнер ePUB может содержать:
Документы содержимого включают [53] содержимое HTML 5 , навигационные документы, документы SVG , документы со сценарием и документы с фиксированным макетом. Содержимое также включает документы CSS и PLS. Навигационные документы заменяют грамматику NCX, используемую в EPUB 2.
Книги с синхронизированным звуковым сопровождением создаются в EPUB 3 с использованием документов наложения мультимедиа для описания времени предварительно записанного звукового повествования и его связи с разметкой документа содержимого EPUB. Формат файла для наложений мультимедиа определяется как подмножество SMIL . [54]
Программное обеспечение для чтения EPUB существует для всех основных вычислительных платформ, таких как Adobe Digital Editions и caliber на настольных платформах, Google Play Books и Aldiko на Android и iOS, а также Apple Books на macOS и iOS. Существует также кроссплатформенное программное обеспечение-редактор для создания файлов EPUB, включая программы с открытым исходным кодом caliber и Sigil .
Большинство современных веб-браузеров также поддерживают плагины для чтения EPUB . До сентября 2019 года в браузере Microsoft Edge была встроена функция чтения EPUB. [55]
Следующее программное обеспечение может читать и отображать файлы EPUB.
Следующее программное обеспечение может создавать файлы EPUB.
type
приведен в «Разделе 2.6», ePub OPDF 2.0.1 (проект спецификации), IDPF..