Newton Book Reader Extension Roadmap This roadmap does not yet have a formal schedule for when different features will be added; rather it (for the moment anyway) collects limitations of the current version and muses about possible fixes. Generally speaking more effort will be made initially to support all of the Newton book features enabled by Newton Press, since the vast majority of Newton books in the world were made with it. Thus things like fixed footers (although supported by Newton books) won't be given too high a priority since Newton Press can't generate them. Some of these limitations are actually due to shortcomings in CSS or the Gecko rendering engine. Obvious workarounds will be mentioned. The current version does not display pictures included within Newton books. It also doesn't display the icon image associated with the containing package in the package information window. The ugliness here is that Gecko doesn't currently handle the pict image format that Newton books embed, and probably never will. Thus it'll be up to Javascript to convert from picts to something that it does support. The Newton book displayer built into the Newton (which is of course the gold standard of all such display apps) aggressively breaks lines at hyphens. Gecko doesn't break lines at hyphens at all... This is the one thing preventing identical display between this reader and Newton Press on the majority of books; it's a known bug in Gecko and will presumably be eventually fixed and will clean up this issue accordingly. See: * https://bugzilla.mozilla.org/show_bug.cgi?id=95067 * https://bugzilla.mozilla.org/show_bug.cgi?id=56652 The current version does not handle more than one book in a package. This is an extremely rare occurrence anyway. However, it should be fairly easily fixable by just expanding the parsing loop and adding several elements to the UI. Newton books are strongly page-oriented. In fact, each page is given its own special rendering, and the way that fixed headers and fixed footers are created is based upon this rendering technique. It does not translate at all easily into a non-page- oriented medium (like this viewer). There is currently no general-purpose way to handle not only fixed headers and footers, but the whole range of "bounds" that can be employed in a book. While it's possible to treat them pretty literally and get decent results, the hyphen bug mentioned above would then cause text to occasionally get lost. Not good. Thus for now page headers (which Newton Press can generate) are rendered inline as they occur -- far from ideal but at least nothing's lost. Besides the use of bounds in Newton books, there are also templates. I've never personally seen them used in the wild, though. Theoretically they allow a book to be displayed in multiple columns. The same problems that exist for bounds exist for templates. Lines that start with small fonts but switch to larger fonts end up with the wrong line height. This is mostly due to the fact that the CSS is working by paragraph while the Newton book displayer built into the Newton is working by lines. I've not got a good fix for this in mind yet; it's a pretty rare situation and I've not thought about it too much quite honestly. Outlined fonts are rendered as small caps instead to (hopefully) convey the intent. CSS doesn't handle outlined fonts. Not even XSL-FO has any planned support (AFAIK) for outlined fonts, so we probably won't see any here for a long time. Tabs aren't handled properly. Newton books can have tab stops set on a per-paragraph basis. There's currently no good way to produce tabs with the regular XML that Gecko currently handles (I was even trying to think of ways of exploiting the new SVG support to make it happen). I think we'll have to wait until XSL-FO support in Gecko is really solid before we can do a good job with tabs. There's currently no support for bookmarks. This is a fairly straightforward (if slightly complex) addition and will be included in the fairly near future. I see this one feature as really being the only thing preventing this package from being a truly useful reader for long Newton books. There's currently no page forward / page back functionality. This is just a relatively simple addition to the UI and will be added before too long. There's currently no "open recent" functionality. This is a relatively straightforward addition that requires not just new UI elements but also persistent storage. Speaking of persistent storage, there's not currently any user preferences. It'd be good to put font size / window size overrides (at minimum, probably also link display overrides, color choices, etc.) into a preferences file. A single Newton book can conceivably have more than one rendering for the same content. I've never seen this done, but it is possible. Basically it'd enable a book to have page layouts for multiple display sizes. If this viewer encounters such a book, it'll just display the first provided rendering; it will silently ignore any others. In the odd case where it happens, it'd be nice to default to the largest supported by the current display and even make it possible to switch to one of the others. I've not yet found a way to make Mozilla recognize the Newton book MIME type (application/x-newton-compatible-pkg) and automatically run this extension. This is something that's hugely needed; if anyone has any ideas please let me know -- you can reach me at eric at my saugus.net location. The "open location" box needs lots of love and improvement, both in making it easier to use and in making it better at rejecting bad input. Integration with the new features being tested on Newton's Library has to be added. It'll eventually be possible to browse the Library directly through this viewer. The progress meters need some basic improvement to make their values better reflect reality and to give updates about what's being done when. The whole app needs nicer styling. A real "about" window should be made. The whole app needs optimization. Badly. I'm not too sure though how much speed we'll ever really be able to get out of Javascript, and the initial parsing is a bear.