Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Given the Safari team has been the major driving force behind support for wide gamut in web browsers (for the very obvious reason that all Apple devices ship with wide-gamut displays), I am extremely suspicious of the author’s assertion that Safari is ignoring an embedded ICC profile while Chrome and Firefox are doing the right thing.

I think it’s far more likely that whatever chain of open-source image modification tools the author is using has written out pixel values in a different colorspace than the one named in the embedded ICC profile.

But if the author is absolutely confident in their analysis, they are welcome to file a bug report: https://bugs.webkit.org/



I seem to recall Safari doing the right thing for JPEGs when I was experimenting with publishing red-cyan stereograms [1] where an sRGB (255,0,0) becomes something like (187, 16, 17) on a high gamut display because the sRGB is less saturated than the P3 red. It looks right for a normal photo but for the anaglyph that little bit of blue and green leaks through and makes ghosts. Emedding a P3 profile in JPEG solves the problem. You run into the same problem with print and I ended up addressing those by applying the color profile to the R and L images, doing the anaglyph blend, then attaching the native color profile of the printer -- it probably isn't quite right but the colors are always going to be off for an anaglyph anyway and if I go back to that project I'll design a color grade that pushes the scene away from pure-red and pure-cyan-spectrum colors.

What gets me is that the image he's publishing is not really a PNG kind of image.

[1] https://cybereality.com/rendepth-red-cyan-anaglyph-filter-op... is a write up that didn't go as deep as my research


Another reader is claiming the gamma correction value is inverted and Firefox is ignoring it. Which seems plausible. I know when I implemented png I had some issues wrapping my head around the gamma correction function.


This might be true but I would hope the web standard is defined enough that browsers can also fail in the same way. Regardless of which browser is the most "correct" here


"correct" in fail, in the same way across browsers? that's hilarious. I forget that throughout the history of the internet the one thing we've been able to depend on is different browsers behaving the same way


interoperability of web features has never been this good and it's only getting better

https://wpt.fyi/interop-2025

other than the Manifest v3 fiasco, we're probably living in the golden age of web interop


Ugh, I hate toggle switches like the Stable/Experimental one. Which one is selected? I can’t tell. Which one of them has the better results?


Experimental is just the unreleased versions of the browsers. Like a beta or alpha for the next release. So ofc they're usually gonna be ahead.

Every year the major browsers get together and agree on a set of "focus areas" that are paint points for browser interoperability. They've been doing it since 2021. I posted the 2025 results. All browsers reached about 99% support for the selected features

The features are voted on by web developers. Basically anyone with a GitHub account can get involved. Here's a blog post with more info about the process https://webkit.org/blog/17320/submit-your-ideas-for-interop-...


While not disputing in any way the truth of what you're saying: I'm a product manager who leans toward Safari, while the devs I work with use Chrome almost exclusively, and we have an unwritten agreement that when it comes to display/layout issues, I'll double check in Chrome before filing the bug. It's only been Safari-exclusive a handful of times, but that's enough that it's annoying for everyone when it's just me.


I guess the question here has to be: is this actually a bug in Safari? Or is it a bug in Chrome, that people (whether that's your people or third parties) have just been working around in a way that doesn't work in Safari?

And this is a big part of the problem with having Chrome become such a dominant force on the web: people assume that it's correct when Safari displays something differently. And people give instructions and documentation for how to do various things "in HTML/CSS/JS" when they've never tested them in anything other than Chrome, so if Chrome's behavior deviates from the spec there, someone implementing those instructions on Safari will see them fail, and assume incorrectly that it's Safari that's wrong.

Note that I am not saying this is what is happening in any specific case—but because Chrome is so dominant, enough people treat it as the de-facto standard that over time, it becomes a near-inevitability that this will happen in some cases.


I've run into Safari exclusive issues before as well around color transparency, but tbh I'm surprised it comes up that often. Modern IDEs support linters that warn you whenever you are using a CSS feature that isn't supported by all modern browsers. You can even set the year you wanna support (e.g. all major browser versions since 2023). Between that awesome tooling and rapidly improving browser support for web standards, these kinds of issues feel extremely rare.

Except for printing. Printing has and seemingly always will f'n suck. Unfortunately WPT doesn't have a good way of testing for print-related features


If I’m not mistaken, they only select a couple of features to work on every year—the ones they already agree on to begin with—and the high interoperability shown in the link only concerns those few select features.

For example, JPEG XL has been proposed for Interop a few times before, but never selected. Therefore, Safari remains the only major browser to support it so far.


Yes exactly. Voting for the 2026 focus areas is happening now btw. The next year's interop usually releases around February

https://webkit.org/blog/17320/submit-your-ideas-for-interop-...

And yes JPEG XL support is often the most requested feature and the major browsers have responded. Google and Firefox are both willing to take it on but Firefox's biggest concern is with the reference decoder which has some major security flaws. They basically want to wait until libjxl/jxl-rs is performant enough

https://github.com/mozilla/standards-positions/pull/1064

Here's the current issue for that proposal if you want to get involved

https://github.com/web-platform-tests/interop/issues/994


It took Mozilla two years to decide they were 'neutral', citing a range of vague considerations. It took them another year to say that actually their 'primary concern has long been the increased attack surface of the reference decoder', without pointing out any specific major security flaws, and that they're okay with an implementation in Rust… which had already been proposed by the JXL team many months ago. And let's not even talk about Chrome.

Hopefully they've both finally settled on a reasoning and will stick with it until the end.


Yeah I guess I wasn't following that closely but I know their previous position was that there wasn't enough benefits to .jxl to justify supporting another raster image standard.

There's been a lot of major changes since then though. Like Apple fully adopting JPEG XL and PDF announcing support as well.

I know many in the industry also think that AV2 might be a huge game changer and wanna wait and see how that ends up before choosing what standards to adopt.


You can try. I'm on Safari Version 18.6 (20621.3.11.11.3) [Seqouia 15.6.1] on my Mac, unsure of the version in my iPhone and iPad, but all of them ignore the ICC profile.


Again, my suspicion is that you are actually seeing the ICC profile being applied correctly, and it is the pixel values in your image that are incorrect.

A good test would be to run a single 100% sRGB red pixel through your image processing pipeline, and then inspecting the resulting PNG file in a hex editor to see what value is encoded.

You can also visit this web page to actively test each web browser’s respect for embedded ICC profiles: https://www.gballard.net/psd/go_live_page_profile/embeddedJP...


Another good test page for the browser: https://www.color.org/version4html.xalter


Where, for reference, Safari shows an image that matches the first one listed—meaning, at least in theory, that it fully supports ICC profiles.


Interesting: for me, the image quadrants display correctly in Safari, but there is a horizontal white line between the top and bottom left quadrants. You're not seeing that?


I see the white line on mobile, but not on desktop, though my OS versions are wildly different too, so hard to narrow down exactly what it might be there.


I see the white line on Safari, and also on Mac Firefox. No idea what the line means—it's not present in any of the reference images.


The white line is just because the four quadrants are four separate images, and the four images are HTML-aligned together to make one.


To paraphrase Steve Jobs, "you're pixeling it wrong".


Apple essentially invented color matching on personal computers back in the classic Mac OS days; it's hard to believe after all this time, they're not dealing with color correctly.

The WebKit blog from 2016:

WebKit color-matches all images on both iOS and macOS. This means that if the image has a color profile, we will make sure the colors in the image are accurately represented on the display, whether it is normal or wide gamut. This is useful since many digital cameras don’t use sRGB in their raw format, so simply interpreting the red, green and blue values as such is unlikely to produce the correct color. Typically, you won’t have to do anything to get this color-matching. Nearly all image processing software allows you to tag an image with a color profile, and many do it by default.

[1]: https://webkit.org/blog/6682/improving-color-on-the-web/




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: