The Barnes and Noble (B&N) Nook has issues reading covers for EPUB files. Not all Nooks have this issue it’s only the Color and Touch because the original Nook supported reading the cover from an external image file. The Color and Touch will only read covers from the EPUB files themselves (no cover thumbnails unfortunately). This issue with the Nook is caused by B&N not properly implementing the EPUB specification in their device.

Covers are defined by a meta element in the EPUB’s OPF file within the metadata section. The meta element needs to have two attributes, “name” which needs to be cover and “content” which points to the id of the cover item (needs to be an image) in the manifest section.

According to the OPF spec the OPF must be valid XML and conform to the OPF Package Schema. In XML the order of attributes does not matter. You can use any order for elements and they will conform to the schema.

This is where the issue with the Nook comes in. The Nook requires the attributes to be in a specific order. Namely, name followed by content. E.G.

<meta name="cover" content="id5" />

Again, the order according to the spec does not matter. Many reading device and software implement the spec correctly and do not have an issue with reading covers from EPUB files. It is only the Nook that has this peculiar requirement.

Sigil, 0.4.0, writes the attributes for elmenets in the OPF in alphabetical order. This is correct and why EPUBs created with this version of Sigil will not show a cover on the Nook. Version 0.4.1 of Sigil will include a fix for this issue.

The easiest way to deal with broken covers on the Nook is to use Sigil 0.4.1. First open the EPUB with Sigil and make sure the cover is properly set. Right click on the image in the Book Browser and under Add Semantics choose Cover Image if it is not already checked. This will add the meta element defining the cover to the OPF. Save and quit Sigil. That’s it, your done. However, be sure you’re not using Sigil version 0.4.0. You need to be using 0.4.1 or greater.

If you don’t want to use Sigil you can manually verify and if necessary add the above meta fragment to the manifest section. Remember name needs to be “cover” and content needs to be the id of the corresponding image in in the manifest section.

Next you need to edit the OPF file and change the attribute order for the meta element relating to the cover. If you’re on Windows you can use tweak_epub which is provided for free by the Atlantis Word Processor people. This allows tool will show you a list of all files within the EPUB and let you open the OPF for editing. If you’re on OS X or Linux change the .epub extension to .zip and unzip the file. This will create a folder with all of the files within the EPUB. Find the OPF, open and edit it.

You can unzip an EPUB because they are really just ZIP archives but they have some special requirements. You can’t just compress a folder and change the extension to EPUB. If you’re on OS X pdurrant on MobileRead has created an AppleScript application for rebuilding EPUBs from extracted content.

Finally, for command line people (Linux) pdurrant also provided these command line instructions for creating the archive with the zip command.

$ zip -X0 "full path to new epub file" mimetype
$ zip -rDX9 "full path to new epub file" * -x "*.DS_Store" -x mimetype

Once you have rebuilt your edited EPUB it should now have its cover appear on your Nook. If it’s not displaying properly reboot your Nook. Sometimes the Nook will not update the cover in it’s internal cache if you change it. Even if you deleted the book and put it back on the device it may not display correctly without a reboot.