v3.3.0
Breaking changes
There are some breaking changes introduced in this release to accommodate the new features, mostly the coverage of some of the EPUB 3 schema attributes previously missing in the EpubReader (due to their type incompatibility with EPUB 2 schema types). All of them are syntactical, non-functional changes, i.e. applications will need to make code changes in the way how they access this data but not how it is being used.
EpubBook.Schema.Epub2Ncx and EpubBookRef.Schema.Epub2Ncx (#60)
Head[n]→Head.Items[n];NavMap[n]→NavMap.Items[n];PageList[n]→PageList.Items[n].
EpubBook.Schema.Package and EpubBookRef.Schema.Package (#60)
Guide[n]→Guide.Items[n];Manifest[n]→Manifest.Items[n];Spine[n]→Spine.Items[n].
EpubBook.Content and EpubBookRef.Content (#62 and #69)
EpubContentFiletype →EpubLocalContentFiletype;EpubTextContentFiletype →EpubLocalTextContentFiletype;EpubByteContentFiletype →EpubLocalByteContentFiletype;EpubContentFileReftype →EpubLocalContentFileReftype;EpubTextContentFileReftype →EpubLocalTextContentFileReftype;EpubByteContentFileReftype →EpubLocalByteContentFileReftype;Html[key]→Html.Local[key];Css[key]→Css.Local[key];Images[key]→Images.Local[key];Fonts[key]→Fonts.Local[key];AllFiles[key]→AllFiles.Local[key];xxx.Local[key].FileName→xxx.Local[key].Key(the word "key" better conveys the meaning of this field in the content dictionary);xxx.Local[key].FilePathInEpubArchive→xxx.Local[key].FilePath.
EpubBook.Navigation[n] and EpubBookRef.GetNavigation()[n] (#71)
Link?.ContentFilePathInEpubArchive→Link?.ContentFilePath.
VersOne.Epub.Schema namespace
Epub3NavStructuralSemanticsPropertytype →Epub3StructuralSemanticsPropertytype (#78);EpubMetadataLinkRelationship.ACQUIRE→ none (removed in EPUB 3.3 specification; #86);EpubMetadataLinkProperty.XMP→ none (removed in EPUB 3.3 specification; #86).
EpubBook.Schema.Package.Metadata and EpubBookRef.Schema.Package.Metadata (#85)
Titles[n]→Titles[n].Title;Subjects[n]→Subjects[n].Subject;Description→Descriptions.FirstOrDefault()?.Description;Publishers[n]→Publishers[n].Publisher;Types[n]→Types[n].Type;Formats[n]→Formats[n].Format;Sources[n]→Sources[n].Source;Languages[n]→Languages[n].Language;Relations[n]→Relations[n].Relation;Coverages[n]→Coverages[n].Coverage;Rights[n]→Rights[n].Rights.
New features
- EPUB 3.3 support. EPUB 3.3 specification is currently in the Proposed Recommendation stage but it is expected to be released by the EPUB 3 Working Group within a few months (#86).
- Support for remote content files (i.e. the files referenced in the manifest by absolute URLs, e.g.
https://example.com/book/123/chapter1.htmlas opposed to the local files, e.g.Content/chapter1.htmlwhich are located within the EPUB file) with optional auto-downloading (#62 and #69). - 100% coverage for all EPUB 3 schema elements and attributes, up to the version 3.3 of the EPUB specification (#85).
- Preliminary support for the EPUB 3.2 Media Overlays (a feature to include audio narrations into EPUB books). The data parsed from the media overlays is currently exposed as a collection of EPUB schema types (accessible via the
EpubBook.Schema.MediaOverlaysandEpubBookRef.Schema.MediaOverlaysproperties). EpubReader will have a more convenient way to consume this data on theEpubBooklevel in the future (#78). - C# nullable reference type annotations (#71).
- Explicit .NET Standard 2.0 support to reduce the number of system Nuget packages being installed if the application targets .NET Framework >= 4.6.1 or .NET/.NET Core >= 2.0 (#52).
- Console demo app was migrated to .NET 7 (#72).