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.]
The answer to your last question is, no one cares. At least, not until larger screen resolutions become more widespread in use. I have large monitors, so I set my default font size at 16, just so I can read text without having to squint. Some websites handle this size well, but many do not.
The problem you mentioned with Firefox and broken layout with larger font sizes isn’t the fault of Firefox, but of poor CSS design. Most web developers seem to target their designs around 10-12pt font and (much like this blog template) fixed-size layouts. They rarely consider the possibility that other people are using larger screens. It’s not a technology issue, because the technology is there. It’s a people issue.
Yahoo UI for HTML appears to solve this through the use of % fonts http://developer.yahoo.com/yui/fonts/, but not idea how to solve in Flash. Am sure you could hack up your own solution based upon pixel width height.
Man… if the future of the web is Flash+Flex+ActionScript, count me out! I’m joining the circus!
I think this whole industry is stuck in an evolutionary backwater. What I’d love to see is a movement to redesign the ENTIRE STACK, from the way we think of computation, all the way up to the way we interact with machines and each other.
If there isn’t a ground-up refactoring (or in this case, complete reimagining) of the system, we’re just going to keep making tiny incremental changes that nudge us around in this local minima that we’re stuck in.
I hope to god that google is working on some kind of networked operating system that does what Microsoft wanted .NET wanted to do, and that it somehow uses PyPy’s code-generation techniques as the foundation. (PyPy is pretty exciting — the language is extensible, so garbage collection and memory allocation are modules, and it even has a module that allows you to extend Python’s syntax at runtime. Mmm… progress. Not ground-shattering, but tasty nonetheless. 🙂 )
“networked operating system” = “plan9”?
Actually the solution is to switch to Opera.
The scaling there is applied to the final page render
so images, flash, loayout and text all get scaled.
(You can even enjoy flash videos pseudo-full screen)
Bonus is that Opera will import all your Firefox bookmarks too
(once on first run) and its free and feature comparable too.
Nowdays image scaling is something that could/should be implemented into the graphics system and done via hardware.