[webkit-dev] Exposing CSS pixel metrics to the scripting environment

Charles Pritchard chuck at jumis.com
Fri Nov 26 17:16:18 PST 2010

Recently I brought this issue up to the WHATWG mailing list, without 
much luck.

Currently, mobile devices are given access to window.devicePixelRatio, 
used for managing what are essentially higher resolution displays. See 
the iPhone, Android, etc. Within the desktop environment, 
devicePixelRatio is not updated on zoom events. I don't think it should 
be, but it's something to consider. Such information is critical to 
adjusting the resolution of bitmaps, be they from an image source or a 
canvas source, to be as crisp as can be.

Microsoft has gone ahead in IE9 and just exposed a collection of metrics 
deviceXDPI, logicalXDPI, systemXDPI and "Y" counterparts.


The task at hand is deciding whether or not to expose this information, 
and where. Technically, it's quite simple, as it's only a few floating 
point values which are already available to the WebKit environment. Zoom 
events always trigger a 'resize' event for window, as they alter the 
innerWidth and innerHeight of the layout. That resize event is the point 
in which the scripting environment would check to see if CSS pixel 
metrics have changed, and adjust the page accordingly. I want to note, 
that I am not speaking at all about changing how zoom works, or in any 
way suggesting that zoom be controlled by the scripting environment / 
web authors.

I am recommending that we take a look at Microsoft's  .screen 
extensions, and decide whether they hold merit, and may be included in 
WebKit. Doing so would mean that an independent implementation has 
picked up the extension, and it may be on the fast track for 

I had a rough time bringing this up with Mozilla. I'm hoping for a 
little more focus here, on this mailing list. Again, I'm merely looking 
to have CSS pixel metrics exposed, and I'm suggesting the MS proposal as 
it's certain to exist in their upcoming IE9 release. Their proposal 
exposes six floating point variables in the window.screen object, and is 
sufficient for current needs.

Please let me know thoughts on the matter, and try to keep focused on 
the fact that we're just looking to expose a few floating points to the 
scripting environment, we're not looking to change any existing 
behaviors in any existing elements.


More information about the webkit-dev mailing list