I've now read two full novels and a novella1 on my G1 using FBReaderJ. FBReaderJ is loosely a Java port of FBReader, which is a somewhat strange piece of software. Although FBReader has a fairly small (if vocal) user base in the English-speaking world, it's the de facto standard in Russia, where newly released books are even sold commercially in the FBReader-specific "Fiction Book 2" (FB2) format. The original FBReader supports most currently-used e-book formats, but FBReaderJ supports only FB2 and and EPUB.
EPUB! That means it must have a full XHTML and CSS renderer, probably integrating WebKit in some fashion, right? Actually, no, and the software is probably better for it.
In e-book formats and reading software there exists a tension between book creator and reader control of formatting features. Mobipocket and eReader (and FB2) put almost all the control in the hands of the reader. In Mobipocket, for example, the book creator can specify the paragraph alignment and indentation, but not the line spacing or base font size2. LIT strikes something of a compromise by providing a desktop reader application which respects many creator-specified properties like base font size and line-spacing, but ignores them in the PocketPC version of the software. EPUB swings the pendulum all the way in to the side of the book creator — the creator may specify a particular typeface (and embed the necessary fonts), type size, line spacing, margins, column arrangement, and so on.
In theory this aspect of EPUB is wonderful, but I've become less and less enthusiastic about it. For many reasons, please see my last post on how Mobipocket hits a worse-is-better engineering sweet spot. One I just barely touch on there is usability (in the weak sense). I've spent many many hours writing and tweaking my EPUB-conversion pipeline in order to produce what I find to be optimally-readable files for my Sony Reader. I've had to bring to bear the entirety of my engineering skill to specify the font I want, the line-spacing I want, and the margins I want. In FBReaderJ, these are just settings in the application, and I was able to sort out something pleasing and readable in about 5 minutes.
This isn't without cost, of course. FBReaderJ doesn't have a real CSS parser, and barely understand HTML. In the books I've read with it so far, this has led to completely missing significant whitespace and absent meaningful formatting (such as text emphasized with italics). This is probably pushing the tradeoff too far the counter-creator direction, but I do have to admit — rendering the text with a legible line-spacing is for more important for basic readability than a handful of blank lines and italics.
1 Richard Herley's Refuge, Cory Doctorow's Little Brother, and Doctorow and Rosenbaum's "True Names."
2 Well, mostly. Apparently there are some "large print" Kindle books out
there which use the almost unbelievably bad hack of wrapping all text in
<font/> elements and using a default @size of 5.
Commentary most sage