Gemini 曾经的模型发布节奏是先 Preview,然后一点点迭代。我发现这种更新节奏似乎很适合个人博客,我可以先写一个草稿出来记录想法,再慢慢加上配图和细节。所以这是一次 Preview 尝试。

目标

2026 年了,在 windows 系统下实现有最基本的色彩管理的广色域体验仍然不是开箱即用的。你购买的广色域屏幕,大概率在 windows 下要么完全无色彩管理,要么被缩限至 sRGB 色域。

为了验证这一点,可以访问一些经典的测试网站,该网站中的图片嵌入了一个渲染意图设置为“相对比色”的 P3 色域 ICC 配置文件,相对比色会将超过目标设备色域的颜色直接裁切掉,因此如果目标设备不支持广色域,就不能看到图案。

广色域下的测试效果

需要特别注意的是,此处的“支持广色域”和“物理上广色域”是既不充分也不必要的关系:即便设备实际上不支持,但声明它是 P3 色域,也是能看到图案的;反之,即便设备是广色域的,但没有声明过它是广色域,仍然会降级到 sRGB 标记,导致只能看到一个鲜艳的纯色。

因此,我的目标是在物理意义明确的情况下,让 Windows 系统实现基础的广色域色彩管理,能够看到测试网站中的图案。MacOS 用户不需要使用文中的方法,直接恢复显示器到默认设置,插上使用即可,文中的方法在一定程度上也是在学习 MacOS 的做法。

第 0 步:关闭 ACM

Windows 在 22H2 引入了自动色彩管理(ACM)功能,该功能声称能够实现色彩管理,“确保你的应用和其他内容在此显示器上具有准确的颜色”。

开启之后,windows 首先会根据显示器的 EDID 信息,将其在软件层面缩限至 sRGB,然后在没有适配 ACM 的应用程序请求系统 ICC 时返回空,让它们自动进入默认 sRGB,从而实现色彩管理,不再会出现因为没有标识色彩空间而出现的过饱和情况。

但 Chrome 等浏览器直到 2026 年 4 月都没有正式支持 ACM,开启了 ACM 之后,Chrome 请求系统 ICC 时也会返回空,默认到 sRGB 标记。在测试页面中,只能显示 sRGB 颜色,导致不能显示出图案。ACM 以舍弃广色域为代价,实现了广色域屏幕 sRGB 内容的正确显示。

为了正常显示广色域内容,在大多数应用程序都不支持 ACM 导致缩限到 sRGB 的情况下,建议关闭 ACM。

方案 1:Display P3

要在今天挑一个最具代表性的广色域空间,大概率是 Display P3,苹果不遗余力的推广它近 10 年之后,现在各种显示器都会宣传自己的 P3 覆盖率,并在 OSD 中做一个色彩空间的选项,支持从硬件上将显示器色域缩限至 Display P3。如果你的显示器良好的支持缩限,且能够覆盖 P3 空间,可以考虑这种做法。

原理非常简单明了,将显示器硬件缩限至 Display P3 色域,然后在操作系统中用 ICC 声明它是 Display P3 空间,如此一来,支持 ICC 色彩管理的应用程序便可进行正确的色彩管理。

操作共两步:

  1. 在显示器的 OSD 中将色彩空间调整为 Display P3。
  2. 在 ICC 官网下载 Display P3 的 ICC,在 windows 的系统-屏幕-颜色管理菜单中添加它。

完成之后,在测试页面便可看到图案。看到图案是第二步加载了 ICC 的功劳,第一步则是使其具有物理意义,这种方法适用于显示器有一个很好的 Display P3 模式。

方案 2:从 EDID 创建 ICC

EDID:扩展显示器标识数据,信号源通过 DDC 通道读取显示器的分辨率,刷新率等信息,也包括基色和白点的色坐标。

EDID 中包含了显示器的基色坐标和白点信息,这些信息能够简单的描述显示器的色域。与方案 1 类似,都是用对应的数据来描述显示器的广色域状态。

当 mac 电脑外接到显示器的时候,在系统设置的显示器选项中,会出现一个以显示器名称命名的颜色描述文件,macOS 显然不可能为世界上所有的显示器都预制一个 ICC,这个颜色描述文件便是 macOS 根据显示器的 EDID 在连接时现场创建的。因此,使用 mac 连接外置显示器时,应当把显示器硬件调整到与 EDID 中一致的状态,而不要进行硬件上的色域缩限操作。

macOS 中的自动 ICC

Windows 也会读取显示器的 EDID 信息,并把它们保存到注册表里。正如 macOS 会保存所有连接过的显示器的 ICC,windows 也会保存所有连接过的显示器的 EDID。

只要读取 EDID,按照其中的信息制作一个 ICC 文件,便可实现类似 macOS 的色彩管理。

操作也是两步:

  1. 在显示器的 OSD 中将各项设置调整为与 EDID 标记的一致,一般为默认设置,或屏本体色域。
  2. 读取 EDID 并制作 ICC,在 windows 的系统-屏幕-颜色管理菜单中添加它。

完成之后,在测试页面便可看到图案(如果 EDID 中标记的色域是广色域的话)。看到图案仍是第二步加载了 ICC 的功劳,这种方法适用于显示器通道独立性和色坐标稳定性较好,且 EDID 标识准确的情况。

读取 EDID 并制作 ICC 又有 2.5 种方法,分别是 DisplayCAL 和手动操作,以及比较少见的显示器官网会提供。

DisplayCAL 是很有名的显示器校准和特征化工具,遗憾的是已经停更了很久了,通过“文件-从扩展显示器标识数据创建配置文件”选项即可完成读取 EDID 并制作 ICC。

手动操作则需要从注册表中读取 EDID 中的色坐标等信息,并按照 ICC 的规范用线性 Bradford 转至 D50 白点,最后将四个 D50 白点下的色坐标和色适应矩阵写入 ICC 文件。

完善的手动操作代码还在沉淀,可以把上面这一句直接发给 AI 试试。

未来的广色域管理

虽然对 macOS 的色彩管理系统也有不少诟病,但它确实能很无感的解决问题,至少不会出现 Windows 那样买个屏幕开箱即用等于完全无色彩管理的情况。Windows 想实现这样的广色域色彩管理,似乎只能等着各种需要广色域的应用程序支持 ACM,剩下的即使什么都不做,也可以自动回到 sRGB。

其实还有另一种非常简单的做法:开启 HDR。即便显示器实际上没有很好的 HDR 性能,开启了 HDR 之后 Windows 也可以实现准确,广泛兼容的色彩管理。不过这需要更准确的显示器信息和校准,目前来看中低价位的 LCD 显示器的 HDR 模式都还需努力。