3 ms·
The why has to do with how Windows and macOS approached scaling. On macOS, to get anything above 100%, you render the whole interface at 200% (including layout
by wbond 8y ago
The why has to do with how Windows and macOS approached scaling.
On macOS, to get anything above 100%, you render the whole interface at 200% (including layout), and the OS scales the resulting pixel output to the display's scale.
On Windows, every application has to detect the scale of the monitor it is being displayed on and do layout at the exact scale. (Actually, that isn't entirely true, if you wrote an app before the high dpi additions, you always render at 100% and Window scales it up for you, which results in a blurry mess.) It is very easy for layouts at 125% to have gaps and varying width lines depending on where on the device pixels the coordinates land.
Adding mixed high DPI support to Sublime Text for Mac was very simple compared to adding it for Windows. On Mac the OS tells us when to render at 200%, and everything in regards to layout is then doubled. On Windows we have to re-layout and snap dimensions to device pixel boundaries to get something that looks crisp when moving a window from one display to another. The code changes were far more invasive for Windows.
We support high dpi on Linux, but haven't added mixed high DPI support yet. Gnome limits users to integer scales (1.0, 2.0, 3.0), but with tweak tools it is possible to get fractional scaling. All of those are fine, it is just when you need to re-layout in fractional scales on the fly that you have to expose the scale of the current display to the entire UI library, or sometimes have gaps and overlaps.