After thinking through the various cases, I think the cases where integer scaling can't provide an ideal widget size are also the cases where user's preferences are going to be split. There is also at least one usable integer scale for any given dpi.
I did a fair bit of testing to simulate the apparent scale of widgets. Everything from 140 dpi up to 210 dpi is usable at 1x. Everything between 210 dpi and 280 dpi is usable at 2x (if sometimes a bit big).
Exactly 210 dpi is usable either way, and I could see different users choosing 1x, 2x, or 1.5x depending on their preference between a) lots of screen real estate, b) big, readable text, or c) average size at the expense of broken widget rendering.
I think we can provide a usable default experience actually with just integer scaling. 140 dpi is good as the optimal target, but instead of rounding to eighths, just round to a whole integer (Scale factor or 8 or 16). The usability problems for 1x scaling begin just above 210 dpi, so above that 2x is appropriate.
That way we deliver correct widget rendering out of the box. The fractional scaling will still be there in the settings for people who prefer to optimize size and screen real estate at the cost of ugly GTK rendering.
After thinking through the various cases, I think the cases where integer scaling can't provide an ideal widget size are also the cases where user's preferences are going to be split. There is also at least one usable integer scale for any given dpi.
I did a fair bit of testing to simulate the apparent scale of widgets. Everything from 140 dpi up to 210 dpi is usable at 1x. Everything between 210 dpi and 280 dpi is usable at 2x (if sometimes a bit big).
Exactly 210 dpi is usable either way, and I could see different users choosing 1x, 2x, or 1.5x depending on their preference between a) lots of screen real estate, b) big, readable text, or c) average size at the expense of broken widget rendering.
I think we can provide a usable default experience actually with just integer scaling. 140 dpi is good as the optimal target, but instead of rounding to eighths, just round to a whole integer (Scale factor or 8 or 16). The usability problems for 1x scaling begin just above 210 dpi, so above that 2x is appropriate.
That way we deliver correct widget rendering out of the box. The fractional scaling will still be there in the settings for people who prefer to optimize size and screen real estate at the cost of ugly GTK rendering.