The Blio project represented a challenging technical application for WPF and even more so for the Silverlight platform. An e-reader has a surprisingly large degree of complexity around user interaction, input, and rendering.
Rendering was one of the primary focuses for implementing the e-reader. Microsoft’s XPS (XML Paper Specification) was selected as the e-book input format. XPS was chosen for its ubiquity and portable nature. While the format is in fact portable, there were some hurdles to overcome with regard the format. For example, fonts had to be dynamically handled using in-memory assemblies to avoid loss of font formatting. Additional challenges also existed with regard to hit-testing, pagination, and memory management.
Even with these technical challenges to overcome, not only could both platforms perform, but they performed well. In fact, at one point the Silverlight implementation was out-performing the WPF application. Much care was put into using virtualizing technologies, parallel processing, and intelligent memory management, allowing Blio to deliver a very rich interactive experience without sacrificing performance. These practices are showcased by the ability to search and download, process, and play aloud books at the same time without sacrificing any performance for experience.