LGTM3

On Fri, May 30, 2025 at 1:11 PM Philip Jägenstedt <foo...@chromium.org>
wrote:

> LGTM2
>
> Thank Philip and David for elaborating on the differences between mobile
> and desktop platform that have led to this approach, and Domenic for your
> summary of the situation.
>
> Thinking about the longer term, I think it's important that the addition
> of env(preferred-text-scale) and yet other mechanisms for desktop doesn't
> doom us to different code and opt-ins for desktop and mobile. And it
> doesn't, this is Domenic's third bullet point on greenfield projects, using
> rem/em and <meta scale-ems>.
>
> On Fri, May 30, 2025 at 5:55 AM Domenic Denicola <dome...@chromium.org>
> wrote:
>
>> Thanks for the patient explanation David. I'm convinced that this is one
>> of those cases where the web has enough unfortunate legacy that we need to
>> add extra complexity. LGTM1.
>>
>> To summarize back the main points of concern I had, and how they're
>> actually OK:
>>
>>    - I was concerned about forward-compatibility due to us shipping on
>>    mobile first, and only later on desktop. This is not a problem, because 
>> the
>>    plan of record will require a separate opt-in for desktop.
>>    - I was concerned that this separate opt-in for desktop was inelegant
>>    and maybe just an artifact of our engineering prioritization. This is not
>>    the case: there are entrenched differences between desktop and mobile
>>    platforms, which we cannot fix, such that (at least for `px` users) we
>>    really do need separate pieces of functionality.
>>    - I was concerned that we were not creating a sensible path forward
>>    for web developers who wanted to do the right thing on greenfield 
>> projects.
>>    This is not the case: we will be able to tell such web developers "use
>>    `rem`s/`em`s and `<meta scale-ems>`, ignoring the `env()` stuff.
>>
>>
>> I especially appreciate that you took the time to respond to these
>> concerns, even after writing an extensive explainer which contained the
>> information in a different format.
>>
>> On Fri, May 30, 2025 at 11:12 AM David Grogan <dgro...@chromium.org>
>> wrote:
>>
>>> On Tue, May 27, 2025 at 6:37 PM Domenic Denicola <dome...@chromium.org>
>>> wrote:
>>>
>>>> Thanks for the detailed response. However, I might not be
>>>> understanding, so let me try asking the following question.
>>>>
>>>> It sounds like the proposal is to ship two opt-ins for adapting to
>>>> OS-level font-scaling, one mobile-specific and one desktop-specific:
>>>>
>>>>    - On mobile, authors would opt-in by adding `:root { font-size:
>>>>    calc(100% * env(preferred-text-scale)); text-size-adjust: none; }`
>>>>    - On desktop, authors would opt-in by adding `<meta name="viewport"
>>>>    content="width=device-width, initial-scale=1.0,
>>>>    text-scale-behavior=initial/scale-ems/none">`, and then also also adding
>>>>    the same CSS as on mobile.
>>>>
>>>> Ah, not quite.
>>>
>>>
>>>> This seems like an undesirable design to me from an interoperability
>>>> perspective. Is there any way we can require the same opt-in on both
>>>> platforms?
>>>>
>>>
>>> Yes, the proposal includes opt-ins that take effect on both desktop and
>>> mobile, namely <meta ... scale-ems or none>. We expect that scale-ems
>>> will be the most popular way for sites to incorporate OS-level font
>>> settings. If a site needs none, then the same env() stuff that worked
>>> on mobile will work on desktop.
>>>
>>>
>>>>
>>>> From what I gather from your writing below, you need the "double
>>>> opt-in" on desktop because of a Windows-specific problem. I don't quite
>>>> understand why you can't roll that into a single opt-in. But assuming that
>>>> you do need a double opt-in, I think requiring the double opt-in on both
>>>> platforms would give a better interoperability story.
>>>>
>>>
>>> The mobile and Desktop platforms are unfortunately already different
>>> enough that they have technically-different opt-in requirements. For
>>> example, if we rolled out env() to Desktop with no <meta> opt-in support
>>> (or other similar handshake mechanism), there'd be double-scaling on all
>>> Desktop OSes, not just Windows. Double scaling would happen because, since
>>> antiquity, if a user changes the UA-level font setting in a Desktop
>>> browser, the default value of rem changes. So, if a site had something
>>> like
>>>
>>> <html>
>>>
>>>   <div style="font-size: calc(100% * env(preferred-text-scale))">I'm
>>> double scaled</div>
>>>
>>> … the inner DIV gets the user's UA font setting doubly-applied, once by
>>> rem, once by env(). That's bad.
>>>
>>> The double scaling problem is exacerbated on Windows because in
>>> addition to the above UA-scaling problem, all major browsers change the
>>> ratio of device pixels : CSS pixels in response to the Windows OS-level
>>> font setting. So, with the above CSS, the user's OS font setting would
>>> be applied twice on Windows.
>>>
>>> <meta … none> would disable both the Windows device pixel scaling AND
>>> the rem effects of the Desktop UA setting, allowing sites to use env()
>>> where they see fit. This is a double opt-in (1. meta 2. env), but would
>>> have the same effect on both Desktop and mobile:
>>>
>>> <html>
>>>
>>>   <meta something="none">
>>>
>>>   <div style="font-size: calc(100% * env(preferred-text-scale))">Properly
>>> scaled!</div>
>>>
>>> Note that no <meta> is technically required on mobile because the
>>> default rem is always 16px on mobile AND no mobile OSes do the Windows
>>> device pixel change thing in response to font settings. There are no
>>> inherent built-in mechanisms on mobile browsers that would cause double
>>> scaling if left enabled.
>>>
>>> scale-ems
>>>
>>> We do have a single opt-in option, <meta scale-ems> that works the same
>>> on Desktop and mobile. We think most sites will be able to use this. If a
>>> site has been consistently coded with rem and em units, adding the
>>> single <meta something="scale-ems"> would cause the site to just start
>>> obeying the OS-level font setting. No messing with env() needed. Yay.
>>>
>>> If scale-ems is great, why provide env() at all?
>>>
>>> Because, unfortunately, not all sites are coded with (r)em. Many major
>>> sites are coded in a mix of px and rem, or even all in px. For these
>>> latter sites in particular, <meta scale-ems> would do nothing at all. Those
>>> sites need env(preferred-text-scale) because they need to surgically
>>> inflate parts of the page to respond to user font settings, e.g.
>>>
>>> .foo { font-size: calc(100% * env(preferred-text-scale)) }
>>>
>>> .bar { width: calc(200px * env(preferred-text-scale);
>>>
>>>        height: calc(150px * env(preferred-text-scale) }
>>>
>>> Then shouldn't these sites just change to use rem instead of px?
>>>
>>> That would be great! But we have to meet the web where it is today, and
>>> changing over to (r)em can take years, even for a *single* complex
>>> site. If we ever get to a future where sites are all using scale-ems
>>> and look good with various user font settings without using
>>> env(preferred-text-scale), that would be a big success.
>>>
>>>
>>>>
>>>> On Wed, May 28, 2025 at 8:47 AM David Grogan <dgro...@chromium.org>
>>>> wrote:
>>>>
>>>>>
>>>>>
>>>>> On Thu, May 22, 2025 at 7:07 PM Domenic Denicola <dome...@chromium.org>
>>>>> wrote:
>>>>>
>>>>>>
>>>>>>
>>>>>> On Fri, May 23, 2025 at 9:00 AM Chromestatus <
>>>>>> ad...@cr-status.appspotmail.com> wrote:
>>>>>>
>>>>>>> Contact emails dgro...@chromium.org, p...@chromium.org
>>>>>>>
>>>>>>> Explainer https://davidsgrogan.github.io/env-explainer.html
>>>>>>>
>>>>>>> Specification https://drafts.csswg.org/css-env-1/#text-zoom
>>>>>>>
>>>>>>> Summary
>>>>>>>
>>>>>>> Exposes a user's preferred font scale to CSS. Currently, it is not
>>>>>>> practical for a page to detect if the user has changed their preferred 
>>>>>>> font
>>>>>>> size via the Operating System's preferences. This CSS environment 
>>>>>>> variable
>>>>>>> will reflect the scale chosen by the user.
>>>>>>>
>>>>>>>
>>>>>>> Blink component Blink>Accessibility
>>>>>>> <https://issues.chromium.org/issues?q=customfield1222907:%22Blink%3EAccessibility%22>
>>>>>>>
>>>>>>> TAG review https://github.com/w3ctag/design-reviews/issues/1101
>>>>>>>
>>>>>>> TAG review status Pending
>>>>>>>
>>>>>>> Risks
>>>>>>>
>>>>>>>
>>>>>>> Interoperability and Compatibility
>>>>>>>
>>>>>>> None
>>>>>>>
>>>>>>>
>>>>>>> *Gecko*: No signal (
>>>>>>> https://github.com/mozilla/standards-positions/issues/1229)
>>>>>>>
>>>>>>> *WebKit*: No signal (
>>>>>>> https://github.com/WebKit/standards-positions/issues/499)
>>>>>>>
>>>>>>> *Web developers*: Positive (
>>>>>>> https://github.com/w3c/csswg-drafts/issues/10674) This proposal
>>>>>>> started with a request from a BBC developer
>>>>>>>
>>>>>>> *Other signals*:
>>>>>>>
>>>>>>> WebView application risks
>>>>>>>
>>>>>>> Does this intent deprecate or change behavior of existing APIs, such
>>>>>>> that it has potentially high risk for Android WebView-based 
>>>>>>> applications?
>>>>>>>
>>>>>>> None
>>>>>>>
>>>>>>>
>>>>>>> Debuggability
>>>>>>>
>>>>>>> This can be debugged using existing devtools support by connecting
>>>>>>> to a device. We have a plan for making this easier at
>>>>>>> https://crbug.com/419595584.
>>>>>>>
>>>>>>>
>>>>>>> Will this feature be supported on all six Blink platforms (Windows,
>>>>>>> Mac, Linux, ChromeOS, Android, and Android WebView)? No
>>>>>>>
>>>>>>> Initial support will be limited to Android, which has limited
>>>>>>> practical ability to respect the OS font scale today. On Windows, we 
>>>>>>> scale
>>>>>>> the entire browser in response to the OS setting, and some followup 
>>>>>>> work is
>>>>>>> needed to support this while not double-zooming.
>>>>>>>
>>>>>>
>>>>>> I'd like to learn more about this from a compat and interop
>>>>>> perspective. From skimming the explainer, this seems like a complicated
>>>>>> problem space.
>>>>>>
>>>>>
>>>>> Interop: there's a pretty simple fallback for browsers that don't
>>>>> support this env variable: env(preferred-text-scale, 1). We have 1p
>>>>> and 3p partners that have started to experiment with this variable. They
>>>>> needed a good rollout story. We are also thinking about @supports (
>>>>> https://github.com/w3c/csswg-drafts/issues/3576#issuecomment-2881619620)
>>>>> for env variables to make this easier and more powerful in the future.
>>>>>>
>>>>>>
>>>>>> If we never ship support on desktop, and authors start using this
>>>>>> feature, what will the user experience be?
>>>>>>
>>>>>
>>>>> Same as today. Users will continue to use browser zoom on desktop
>>>>> (ctrl +/-), which is not a big deal (compared to mobile) because it's
>>>>> relatively easy to use and there's usually plenty of screen space to avoid
>>>>> lawnmower swiping.
>>>>>
>>>>> Mobile is where we've heard demand for this feature because authors
>>>>> relay their users' subpar experience. We haven't heard about user pain on
>>>>> desktop.
>>>>>
>>>>> If this ends up being mobile only, that is not our desired end-state,
>>>>> but it's not catastrophic because the zoom options on desktop are less
>>>>> problematic.
>>>>>
>>>>>
>>>>>>
>>>>>> If we don't ship support on desktop for 10 milestones, but then
>>>>>> suddenly do, what will the user experience be?
>>>>>>
>>>>>
>>>>> No matter when we ship on desktop, whether today or in 10 milestones,
>>>>> we'll need to provide an opt-in for authors (explainer has a sketch
>>>>> of our opt-in proposal
>>>>> <https://github.com/w3c/csswg-drafts/blob/main/css-env-1/explainers/env-preferred-text-scale.md#new-meta-viewport-key-for-changing-text-scale>)
>>>>> to avoid definite double scaling on Windows (because of its automatic
>>>>> page zoom) and potential double scaling on the other Desktop
>>>>> platforms (because they change how font-size:medium is resolved in
>>>>> response to the UA-slider).
>>>>>
>>>>>
>>>>> Windows is the most complicated desktop platform for us to add support
>>>>> for OS-level font scaling, mainly because Chrome does a full browser
>>>>> zoom of both the browser’s UI and the web page
>>>>> <https://github.com/w3c/csswg-drafts/blob/main/css-env-1/explainers/env-preferred-text-scale.md#windows-11>in
>>>>> response to the OS font slider. We can't unilaterally disable this
>>>>> automatic scaling because users may rely on it. So if an author wants
>>>>> better control over their page scaling on Windows, they'll have to signal
>>>>> to the browser to not do this automatic scaling. When they've signaled
>>>>> that, the browser will intelligently populate the environment variable
>>>>> (meaning values other than 1 are eligible).
>>>>>
>>>>>
>>>>> The other desktop platforms are degenerate/easier cases of windows; as
>>>>> such our proposed opt-in mechanism will handle them properly as well ("for
>>>>> free"). Mobile doesn't have any potential double scaling issues (no
>>>>> UA-slider to affect font-size:medium), so no opt-in mechanism is needed.
>>>>>
>>>>>
>>>>> If we do ship the opt-in and env var on desktop in 10 milestones,
>>>>> users who have changed their OS-level font settings will get improved font
>>>>> sizes on sites that use the opt-in and env var. Sites that had used the 
>>>>> env
>>>>> var just for mobile will not change when viewed on desktop; there will be
>>>>> no spontaneous breakage.
>>>>>
>>>>>
>>>>> What we want to ship now, just the env variable on mobile, always
>>>>> populated to the value of the OS-level setting, is a small
>>>>> incremental platform change, is sufficient to fix the highest-demand
>>>>> problem, is required for some complex sites (some of our partners), and
>>>>> doesn't block later desktop work.
>>>>>
>>>>>
>>>>>>
>>>>>> You mentioned Windows, but what about macOS, Linux, ChromeOS, and
>>>>>> Android WebView?
>>>>>>
>>>>>>>
>>>>>>>
>>>>> Apologies for the omissions.
>>>>>
>>>>> Android WebView — this will also be supported at initial launch
>>>>>
>>>>> Desktop platforms including CrOS – the environment variable will be
>>>>> available with this launch but will always return a value of 1, 
>>>>> essentially
>>>>> being a no-op. As described above, we intend to later intelligently
>>>>> populate the value on desktop, which will require an opt-in.
>>>>>
>>>>>
>>>>>
>>>>>>
>>>>>>> Is this feature fully tested by web-platform-tests
>>>>>>> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>
>>>>>>> ? Yes
>>>>>>>
>>>>>>> This is tested with internal WPT tests due to lack of support for OS
>>>>>>> font scale setting in tests.
>>>>>>> https://github.com/web-platform-tests/wpt/issues/12725
>>>>>>>
>>>>>>>
>>>>>>> Flag name on about://flags None
>>>>>>>
>>>>>>> Finch feature name CSSPreferredTextScale
>>>>>>>
>>>>>>> Rollout plan Will ship enabled for all users
>>>>>>>
>>>>>>> Requires code in //chrome? False
>>>>>>>
>>>>>>> Tracking bug https://crbug.com/397737223
>>>>>>>
>>>>>>> Measurement UseCounter:
>>>>>>> https://chromestatus.com/metrics/feature/popularity#CSSEnvironmentVariable_PreferredTextScale
>>>>>>>
>>>>>>> Estimated milestones
>>>>>>> Shipping on Android 138
>>>>>>>
>>>>>>> Anticipated spec changes
>>>>>>>
>>>>>>> Open questions about a feature may be a source of future web compat
>>>>>>> or interop issues. Please list open issues (e.g. links to known github
>>>>>>> issues in the project for the feature specification) whose resolution 
>>>>>>> may
>>>>>>> introduce web compat/interop risk (e.g., changing to naming or 
>>>>>>> structure of
>>>>>>> the API in a non-backward-compatible way).
>>>>>>> https://github.com/w3c/csswg-drafts/issues/10674
>>>>>>>
>>>>>>> Link to entry on the Chrome Platform Status
>>>>>>> https://chromestatus.com/feature/5328467685801984?gate=6195643460354048
>>>>>>>
>>>>>>> Links to previous Intent discussions Intent to Prototype:
>>>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAOZbSt1dSWUwuFD%2Bu%3DwGXf-ubdgh8K%3D0oj13%3DkrvADSOM41xtw%40mail.gmail.com
>>>>>>>
>>>>>>>
>>>>>>> This intent message was generated by Chrome Platform Status
>>>>>>> <https://chromestatus.com>.
>>>>>>>
>>>>>>> --
>>>>>>> You received this message because you are subscribed to the Google
>>>>>>> Groups "blink-dev" group.
>>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>>> send an email to blink-dev+unsubscr...@chromium.org.
>>>>>>> To view this discussion visit
>>>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/682fba7d.170a0220.2aa17e.152d.GAE%40google.com
>>>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/682fba7d.170a0220.2aa17e.152d.GAE%40google.com?utm_medium=email&utm_source=footer>
>>>>>>> .
>>>>>>>
>>>>>> --
>> You received this message because you are subscribed to the Google Groups
>> "blink-dev" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to blink-dev+unsubscr...@chromium.org.
>> To view this discussion visit
>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAM0wra9SnYb4ZXPBJpnqsXzM_kKTAq8TBPjNqQM3%2Bpk8WHYNmw%40mail.gmail.com
>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAM0wra9SnYb4ZXPBJpnqsXzM_kKTAq8TBPjNqQM3%2Bpk8WHYNmw%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>>
> --
> You received this message because you are subscribed to the Google Groups
> "blink-dev" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to blink-dev+unsubscr...@chromium.org.
> To view this discussion visit
> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAARdPYd%2Bz0rQ8Hx0nENox0skEZEJWEMNw0D3MkJygGy2zo8ftQ%40mail.gmail.com
> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAARdPYd%2Bz0rQ8Hx0nENox0skEZEJWEMNw0D3MkJygGy2zo8ftQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to blink-dev+unsubscr...@chromium.org.
To view this discussion visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CADsXd2MoXOEYfY1b8Cfwb00QcrHAd6tH%2BxN8vb65M8b7Xx7JYw%40mail.gmail.com.

Reply via email to