jtackaberry / nosquint

NoSquint is a Firefox add-on that allows you to adjust the text-only and full-page zoom levels as well as color settings both globally (for all sites) and per site.
https://urandom.ca/nosquint/
The Unlicense
40 stars 16 forks source link

Zoom levels should adjust for Hi-DPI support in Firefox 22 #75

Open jfkthame opened 11 years ago

jfkthame commented 11 years ago

Firefox is going to be updated to take account of the system "logical DPI" setting on Windows, so that users who have set Windows to display at 125% or 150% (or other custom settings) will get appropriately-scaled Web content -as the default "100%" zoom level-.

See https://bugzilla.mozilla.org/show_bug.cgi?id=844604, where the preference to respect the system scaling was enabled, and the "Windows Hi-DPI support" tracking bug https://bugzilla.mozilla.org/show_bug.cgi?id=820679.

This change in behavior - currently targeted for Firefox 22, although it might be deferred to a later version if too many/severe issues remain - will mean that people using NoSquint to get suitably-zoomed web display on high-pixel-density screens will suddenly see oversized content, because the NoSquint zoom will be applied -in addition to- the new, built-in scaling based on Windows settings.

To avoid this problem, please consider making NoSquint detect when the default behavior changes (see https://bugzilla.mozilla.org/show_bug.cgi?id=858185) and either discard old zoom settings at that time, resetting to the browser's default, or perhaps scale down the extension's settings so as to maintain the same zoomed size after accounting for the system scaling that Firefox will be applying.

See https://bugzilla.mozilla.org/show_bug.cgi?id=851520 for the new nsIScreenManager.systemDefaultScale API that can be used to detect when Firefox will be applying such a scale factor.

jay commented 11 years ago

+1 for this, an adjustment will be needed to account for the new default scaling. Also it would be great if there could be an option like "Ignore Firefox's Native HighRes DPI scaling" in NoSquint to turn off the new behavior, if that's possible.

I upgraded to the latest nightly and had a similar experience. My Windows 7 display preference is set at 125% (120 dpi). My default NoSquint preference is 135%, but with the recent change "Windows: Firefox now follows display scaling options to render text larger on high-res displays" the pages are scaled up too much. I can set the default preference to 100% but I still have to deal with the custom preferences I have set.

I'd like to keep the control NoSquint gives me, and have NoSquint at 100% not be scaled at all. I'm looking for a way to revert to the previous behavior. The only thing I can think of at the moment is changing layout.css.devPixelsPerPx from auto to 1.0 but things don't look quite the same. The controls look to be the right size but the menu, tab and bookmark bar fonts are too small.

mm201 commented 11 years ago

I agree. It's essential that Firefox goes ahead with its new HiDPI behaviour, but for it to work without public backlash, we need to ease the pain of users accustomed to the old, wrong behaviour. Ideally, for users using NoSquint to scale their pages up to a normal size, the only thing they should notice when upgrading to Firefox 22 is that the UI chrome is suddenly the right size.

Right now, the super zoom it causes when used with Nosquint will be an unexpected shock, and they'll most likely blame Firefox, possibly homing in on the new DPI behaviour, misunderstanding what it does, and angrily ranting about it, potentially leading to the fix being dropped, and Firefox on Windows being perpetually stuck in a bygone era of fixed pixel layouts.

jtackaberry commented 11 years ago

I agree with mm201. I think the goal should be for users not to notice a (substantial) change in the way web content is rendered.

The implementation I'm leaning toward right now is to do a one-time adjustment of stored zoom levels (as well as the global defaults) when an upgrade to Firefox 22 is detected on Windows. I'll then add a new pref to indicate whether the zoom levels are DPI-adjusted. If Firefox is downgraded to a non-Hi-DPI capable version, the reverse adjustment will be made.

Adjustments would be snapped to a multiple of 5% so there may be a small difference in the zoom levels before/after upgrades. But I think this is small enough that it's not a problem.

One question is how to communicate this change to the user. I'm thinking of a fade-in arrow panel pointing to the NoSquint status panel (well, it wouldn't point to anything if the addon bar was hidden) explaining the change. Alternative suggestions welcome.

mm201 commented 11 years ago

On first launch, you could open up a tab to a page explaining the change.

jfkthame commented 11 years ago

Yes, the proposed solution here sounds like it should work well, and give users a smooth upgrade experience. Thanks!

Note that it's possible the change in Firefox behavior will be pushed back to a later release than FF22, as we're still working on a number of related issues; that will be a decision for the Firefox release drivers. But in any case, you should be able to use the API described in the mozilla bugs to detect whether the change is present, to avoid depending on a specific FF version number.

cubefox commented 11 years ago

I now installed Firefox 22 (with Hi-DPI) and I had exactly this shock which mm201 described...

jay commented 11 years ago

@cubefox I set layout.css.devPixelsPerPx to 1.0 (the value is a string not integer) several months ago and it's worked out pretty well. As far as I know that's all you need to do to disable the HiDPI. I also installed theme and font size changer to get the UI to look the same. You may want to try similar things in the interim.

machek commented 11 years ago

Solution - downgrade to Firefox 21 and disable automatic updates :-(

mm201 commented 11 years ago

Cubefox: simply resetting NoSquint to 100% should fix things without resorting to anything foolish. Running an old browser leaves you exposed to vulnerabilities and doesn't support the latest web technologies. It's too bad this bug's auto-migration didn't work for you.

Fixed pixel layouts (like Firefox 21) are BAD and will prevent the world from moving to high resolution screens and all their benefits. The 'recommended' fix if you don't like Firefox's new UI size is to set your Windows DPI back down to 100%. The size of Firefox's text/buttons/etc. should match that of other programs found in Windows and is best practice for the platform. IE has implemented DPI scaling since version 8 and Chrome is working on it with no promised date.

It's the worst feeling as a programmer to be stuck with a debilitating bug that you can't fix without upsetting the customer base who expect the buggy behaviour and consider it normal. In this case, it's hiDPI device owners vs. users who run in hiDPI anyway expecting "XP style" selective zoom of some things but not others.

Firefox 21 is postage stamp sized on the Retina MBP / Kirabook / legion of 2560x1440 laptops due this year.

cubefox commented 11 years ago

@jay Thanks! I'll try it out.

@mm201 I absolutely agree with you, my problem mainly is that NoSquint does not yet recognize Firefox' Hi-DPI zoom. My Win "logical DPI" is set to 150% (Asus Zenbook) so Firefox 22 correctly zooms to 150% but NoSquint still calls this "100%". For "real" 100% I would need to set NoSquint to 66.666...% (which is not possible by the way) and so on.

@machek Maybe @jay s comment will help you?