Font Changes
From nookDevs
New Fonts on the Nook
This page previously contained instructions for changing the default display fonts for reading books, but they did not work.
Currently the only verified working font substitutions are for the font (Helvetica) used for the interface elements of the nook (excepting the Launcher buttons), and changes for individual books and PDFs involving fonts embedded or linked from the PDF or ePub file.
Before you do anything remember, be careful and take a backup!
Fonts on the Nook
The nook contains a number of true-type font files in /system/fonts, which are listed below:
- The Droid font family are free high-quality fonts created for use in the Android OS, with many glyphs covering a wide variety of scripts. It is unknown where they are used on the nook, if anywhere (Update: 14 Mar 2010: At least, Droid fonts are used for displaying webpages with Nookbrowser, and news feeds with Trook).
- DroidSans-Bold.ttf
- DroidSans.ttf
- DroidSansFallback.ttf
- DroidSansMono.ttf
- DroidSerif-Bold.ttf
- DroidSerif-BoldItalic.ttf
- DroidSerif-Italic.ttf
- DroidSerif-Regular.ttf
- Galant, a futuristic-looking font that I can't find used anywhere on the nook (thankfully).
- Galant.ttf
- Amasis is the default font for reading books. Replacing these files does not, however, change the font displayed when you select "Amasis". FWIW, The "Amasis" and "Helvetica Neue" fonts used in reader application are actually otf(OpenType Font) fonts packed in ReaderEpub.apk, thus changing the ttf files in /system/fonts wouldn't affect the appearance of the reader. The 10 and 30 files are adjusted versions of the font for displaying at smaller and larger sizes, respectively (fonts are often just scaled up or down, but typographers generally agree that ideally each font would be designed for, or at least tweaked for, the actual display size).
- amasis10.ttf
- amasis10_italic.ttf
- amasis30.ttf
- amasis30_italic.ttf
- amasis_bold.ttf
- amasis_bolditalic.ttf
- Ascender Sans Bold (and not a bitmap, whatever the filename may say). Unclear where this is used, if anywhere.
- ascsanb_bitmap.ttf
- The Helvetica family of fonts, these files are used for the interface elements of the nooks (menus, lists, titlebar, page numbers, etc.). Replacing these files changes the interface font, but be careful! If you mess up, you may end up navigating your nook blind. :) These fonts contain glyphs for a wide variety of scripts, and the nook will happily render book titles and potentially other interface elements in a variety of languages. Sadly, the display fonts for the contents of books are not so easy.
- helvetica_bold.ttf
- helvetica_bold_italic.ttf
- helvetica_medium.ttf
- helvetica_medium_italic.ttf
- helvetica_r.ttf
- helvetica_r.ttf is an exact copy of helvetica_roman.ttf. Perhaps an accidental copy/rename that made it onto the production image?
- helvetica_roman.ttf
- helvetica_roman_italic.ttf
Mysteries
- What font is “Light Classic?” It doesn't appear to be any of those residing in the /system/fonts directory.
- Where are “Light Classic” and “Helvetica Neue” stored? (/data/data/com.bravo.ereader.activities/files)
- Can the regular book fonts be replaced? How?
- Can the list of book fonts be changed or added to? How?
Instructions for Changing the Interface Font
The nook appears to look for the helvetica_* font files by name for the interface fonts, so you will have to not only copy your new font to your nook, but also rename the font files to match the helvetica_* fonts. Any font is fine, though there's no accounting for taste, ;) but it MUST be in True Type format.
- Find your nook's IP address.
- Connect to your Nook using the Android Debug Bridge command-line tool 'adb':
./adb connect NOOK_IP:5555
- You can back/copy the existing font files to your computer like this:
./adb pull /system/fonts /place/to/store/fonts
- Copy the font you want back to your nook's /system/fonts directory with the new name
- You can push a font directly like so
-
./adb push "/Library/Fonts/Courier New.ttf" /system/fonts/helvetica_roman.ttf
(for example)
- Alternatively, you might find it easier to just make all of your modifications locally and then push the whole directory over:
./adb push /modified/fonts/directory /system/fonts
- When finished, you must reboot your nook for the changes to take effect.
Instructions for changing default fonts in Reader application
- Note: To work with 2.5.x softroot ROM, the procedure explained in this paragraph does not work. Please see next paragraph in this page.
- Note: To work with 2.4.1 softroot ROM, just replace css files but don't update files in META-INF. See details below.
The application used to display books - ReaderEpub.apk - does not use system fonts. Instead it has it's own embedded fonts and these fonts only have Latin character set. You can make ReaderEpub.apk use system fonts for Amasis and Helvetica by changing .css files within .apk.
- Download Reader application:
adb pull /system/app/ReaderEpub.apk /some/where
- Replace .css files in assets/styleSheets/ within .apk. It really is a .zip file, use your favorite archiver to do it. I have pointed mine system fonts but any location will do. As an example, replace old HelveticaNeue.css:
@font-face { font-family: -ua-default; font-style: normal; font-weight: normal; src: url("HelveticaNeueLTStd-Roman.otf")} @font-face { font-family: serif; font-style: italic, oblique; font-weight: normal; src: url("HelveticaNeueLTStd-It.otf")} @font-face { font-family: serif; font-style: normal; font-weight: bold; src: url("HelveticaNeueLTStd-Md.otf")} @font-face { font-family: serif; font-style: italic, oblique; font-weight: bold; src: url("HelveticaNeueLTStd-MdIt.otf")} dtbook { display:block; } #body { margin-left: 12px; margin-right: 12px; }
with this one:
@font-face { font-family: -ua-default; font-style: normal; font-weight: normal; src: url("res:///system/fonts/helvetica_roman.ttf")} @font-face { font-family: serif; font-style: italic, oblique; font-weight: normal; src: url("res:///system/fonts/helvetica_roman_italic.ttf")} @font-face { font-family: serif; font-style: normal; font-weight: bold; src: url("res:///system/fonts/helvetica_medium.ttf")} @font-face { font-family: serif; font-style: italic, oblique; font-weight: bold; src: url("res:///system/fonts/helvetica_medium_italic.ttf")} dtbook { display:block; } #body { margin-left: 12px; margin-right: 12px; }
- Replace checksums for .css files you have changed in META-INF/BRAVO.CF and META-INF/MANIFEST.MF On linux you can generate SHA1 checksums with this command:
- Note: Ignore this step and keep old files in META-INF folder untouched to make the mod work in 2.4.1
openssl dgst -binary -sha1 YourFile.css |base64
- Upload new ReaderEpub.apk to your nook:
adb push /where/is/your/ReaderEpub.apk /system/app
- Reboot your nook.
Most of your books should be readable now:
- Light Classic is still a mystery. It is somewhere in ReaderEpub.apk but it does not have an actual font file.
- Unfortunately, Light Classic seems to be used in some books for Italic, at least with the ones made using Calibre.
Instructions for changing default fonts in Reader application (firmware 1.5.0 and 2.5.x)
UPDATE March/2011: new version available with more features on top of font changes (landscape orientations and full-screen mode)! Detailed instructions and downloads on my blog.
- Make backup copy of files that will be modified (so you can rollback to original files in case of problem):
adb pull /system/app/ReaderEpub.apk /some/where adb pull /system/lib/libpdfhost.so /some/where
- Download needed files here; please download always latest version available (17/12/2010: released v1.2 of font hack with some minor bugfix);
- Copy downloaded files into Nook:
adb push /where/is/your/downloaded/ReaderEpub.apk /system/app adb push /where/is/your/downloaded/libpdfhost.so /system/lib
- On internal Nook sd-card (i.e. the one that by default is called "Nook" in Windows explorer, and that contains folders "my documents", "my screensavers", "my wallpapers"), create folder "my fonts" (lowercase).
- Inside folder "my fonts", create 3 sub-folders: font1, font2 and font3.
- Reboot the Nook.
Now, you can use whatever fonts you like (that will replace one of the 3 default fonts) by putting the following 5 files into the 3 above mentioned folder font1 (to replace Amasis), font2 (to replace Helvetica Neue) and font3 (to replace Light Classic):
- normal.ttf : for plain text;
- bold.ttf : for bold text;
- italic.ttf : for italic text;
- bold_italic.ttf : for bold and italic text;
.fontname : this is an empty file, is displayed in font change menu of reader application;
Remarks:
- The modification introduced on libpdfhost.so toward the original one included in original firmware 1.5.0 by B&N is just on the CSS code used to manage font families, that for some reason i don't understand it is hardcoded into .so file, on this firmware version (instead that on APK file); just to be clear: i didn't replaced the .so file with the version used in previous firmware;
- Use always lowercase file name (except for
, where you can use whatever you want); - Use always ttf extension, even for otf fonts;
- In case the font files are missing on any fontX folder (or the entire folder fontX is missing), the corresponding default font is used.
- It seems that for some documents, some styles (bold or italic) are not rendered with the correct font and the "global default" font (i.e. Light Classic) is used for these styles. This is probably due to the CSS embedded in that specific document, that maybe uses features not supported by the ADE (Adobe Digital Edition) implementation included in Nook (like for instance, the small-caps style). In this case, if you send me (post it on Talk:Font_Changes) the affected CSS file (or the entire epub, if not copyrighted), i will try to understand if i can fix it with the modified EpubReader.
If you want, you can download here a sample "my fonts" folder structure. In this example, font1 folder contains "Gentium" font; font2 and font 3 are empty so the default fonts "Helvetica Neue" and "Light Classic" are used.
As a bonus feature, the modified ReaderEpub also fixes an annoying bug (at least, for me this is a bug!) introduced in Reader application of firmware 1.5.0, i.e. the fact that the chapter list of Go-To menu just considers the first-level items of the table of content. With this modified version, the chapter list will consider all items up to level 3 (i.e. the same behaviour of Reader app of firmware 1.4.x).
Instructions for Linking Built-in Unicode Fonts from ePubs
Many international users complained that fonts inside the readerAdobe-release.apk (the application used for displaying PDFs and ePubs on nook) do not support non-latin languages. You can use nook's built-in unicode fonts and modify your ePub files to use them. Please note that you do not need to softroot your nook or hack it in any way to do that.
Please note it seems only working with Calibre not other epub creators/editors
Asian Languages
For asian languages use the following style.css file for your ePubs:
@font-face { font-family: "DroidFont", serif, sans-serif; font-weight: normal; font-style: normal; src: url('res:///system/fonts/DroidSansFallback.ttf'); } @font-face { font-family: "DroidFont", serif, sans-serif; font-weight: bold; font-style: normal; src: url('res:///system/fonts/DroidSansFallback.ttf'); } @font-face { font-family: "DroidFont", serif, sans-serif; font-weight: normal; font-style: italic; src: url('res:///system/fonts/DroidSansFallback.ttf'); } @font-face { font-family: "DroidFont", serif, sans-serif; font-weight: bold; font-style: italic; src: url('res:///system/fonts/DroidSansFallback.ttf'); } body { margin-right: 8pt; font-family: 'DroidFont', serif; }
Non-Asian Languages
For non-asian languages you can use the following style.css file for your ePubs:
@font-face { font-family: "DroidFont", serif, sans-serif; font-weight: normal; font-style: normal; src: url('res:///system/fonts/DroidSerif-Regular.ttf'); } @font-face { font-family: "DroidFont", serif, sans-serif; font-weight: bold; font-style: normal; src: url('res:///system/fonts/DroidSerif-Bold.ttf'); } @font-face { font-family: "DroidFont", serif, sans-serif; font-weight: normal; font-style: italic; src: url('res:///system/fonts/DroidSerif-Italic.ttf'); } @font-face { font-family: "DroidFont", serif, sans-serif; font-weight: bold; font-style: italic; src: url('res:///system/fonts/DroidSerif-BoldItalic.ttf'); } body { margin-right: 8pt; font-family: 'DroidFont', serif; }
Instructions for Linking 3rd Party Fonts from ePubs
In addition to the instructions above you can use your own/third party unicode fonts (I highly recommend the free Liberation fonts) and modify your ePub files to use them.
Please note it seems to be only working with Calibre not other epub creators/editors
- Plug your nook to your computer.
- Create the "my fonts" folder on the nook disk, next to "my documents", "my wallpapers", etc.
- Place your unicode fonts in "my fonts" folder (you can use fonts from this zip-file for example).
- Use the following stylesheet in your ePub files (you can add it to the files generated by Calibre or use archiver program to replace the style.css file inside the OPS/ folder of your ePub file ):
@font-face { font-style: italic; font-family: 'LiberationSerif', serif, sans-serif; font-weight: normal; src: url('res:///system/media/sdcard/my fonts/LiberationSerif-Italic.ttf'); } @font-face { font-style: normal; font-family: 'LiberationSerif', serif, sans-serif; font-weight: normal; src: url('res:///system/media/sdcard/my fonts/LiberationSerif-Regular.ttf'); } @font-face { font-style: italic; font-family: 'LiberationSerif', serif, sans-serif; font-weight: bold; src: url('res:///system/media/sdcard/my fonts/LiberationSerif-BoldItalic.ttf'); } @font-face { font-style: normal; font-family: 'LiberationSerif', serif, sans-serif; font-weight: bold; src: url('res:///system/media/sdcard/my fonts/LiberationSerif-Bold.ttf'); } body { margin-right: 8pt; font-family: 'LiberationSerif', serif; }
You can grab the zip file with the fonts referenced above here or use your own fonts (don't forget to change the font filename and font-family name in the example above then).
List of softwares that support font changing
Calibre font config plug-in
A nice plugin that can change font in EPUB file in three ways mentioned above. It works with Nook, Nook Touch STR and other devices as well. follow this link to get more detail http://phanquochuy.me/?p=114