There is a lot of buzz these days about “Rich Internet Applications”. People are finally realizing that HTML is incapable of supporting a sophisticated user interface. AJAX is a reeking pile of hacks and cluges that offers only a glimpse of what could be possible with a halfway-intelligent browser platform. Many people are betting this platform will be Flash. Specifically Flash 9, Flex 2, and ActionScript 3. Maybe — but there is one dirty little secret no one is talking about: Flash is resolution-dependent.
Flash, like HTML, still lives in the world of 72 pixels per inch. My screens are all at least 110 ppi, 50% denser. This archaic assumption causes text to be rendered eentsy weentsy. Firefox lets me set a minimum font size, so at least I can read web pages, even though their layout gets foobared, especially forms. But Flash offers no accommodations for modern screens. Flash apps are barely legible on my computers. They border on being completely unusable. If these apps are so rich, why can’t they spare a few pixels for my poor eyes?
I can’t be the only one with this problem. All Thinkpad and MacBook Pro computers have high res screens. The Apple Cinema displays are high res. The OS vendors are working on the problem. Windows has always had a 120 dpi option, and now Vista is fully scalable. Supposedly OS X Leopard will be following suit. But not Flash, as far as I can tell.
The irony is that Flash is a vector-based graphics engine that could be fully scalable if they wanted to. There must be some good reason, like compatibility with legacy code that is full of bitmapped fonts and assumptions on layout of bitmapped images that would break under scaling. I don’t know.
Microsoft has spent years redesigning their UI API’s from the ground up. WPF does everything in terms of physical metrics, not pixels. They are supposedly building a portable subset called WPF/E that will run in all browsers, which is tipped to be the main competitor to Flash. In this regard they have superior technology.
How can Flash be the future of the web when it is barely readable on a modern screen? Is the whole rest of the world still running at VGA resolution? It doesn’t make sense, so I must be missing something.
[Update: I have verified, in Apollo, that it is straightforward to scale the entire UI. And flash.system.Capabilities.screenDPI purports to tell you the dpi of the screen, so you could automatically scale. But it always returns 72, so you can’t. Obviously Adobe could easily fix this if they wanted to, and anyone cared. My overall conclusion is that the state of usability on the web is so abysmal that most people have become numb.]
[Further update: font scaling only works on “embedded” vector fonts. As that can substantially increase the size of the download, most flash files use the built-in fonts, which scale only between a small set of predefined point sizes. This quantization of font sizes makes scaling impractical. So the bottom line is that you can make Flash resolution independent manually, but it is not supported by the vast installed base of flash files. They will become increasingly unusable as higher res screens proliferate.]