← На главную

Ember выпустил палитры, различимые под тёплым фильтром

09.08.2026 16:26 · hackernews

Ember — это набор цветовых палитр для терминала, графиков, heatmap и интерфейсов, которые остаются различимыми после агрессивного тёплого фильтра экрана вроде Nightshift и Redshift. Обычные палитры под таким фильтром разваливаются: цвета, которые днём далеко друг от друга, ночью сливаются. Ember моделирует тёплый фильтр как умножение каждой компоненты sRGB на свой коэффициент: red gain, green gain, blue gain. Для профиля 3400K это [1.00, 0.74, 0.53], для 2000K — [1.0000, 0.5436, 0.0868], для 1200K — [1.0000, 0.3094, 0.0000]. При 1200K синий канал в модели полностью обнуляется, поэтому цвета, различающиеся только по синему, становятся идентичными. Глубокие палитры честно уменьшают число цветовых идентичностей и помечают алиасы в ANSI-слотах.

В комплекте четыре семейства: 3400k-dark и 3400k-light для умеренного использования, примерно под максимальный эффект Nightshift на Macbook, плюс 2000k-dark и 1200k-dark для фанатов глубокого Redshift и астрономов. Светлых вариантов для 2000K и 1200K нет: отфильтрованный светлый фон превращается в большое оранжево-красное поле. Число категориальных цветов: 6, 6, 4 и 3 соответственно. Палитры экспортируются как темы для Alacritty, iTerm2, Windows Terminal, UI-роли (bg_0…bg_5 и fg_0…fg_2), категориальные цвета, последовательные 256-точечные карты и артефакты для Matplotlib/CSS/JSON/Python. Сам Ember фильтр не применяет — используйте свой.

Проект считает день и ночь двумя представлениями одного цвета и сначала решает «ночную» задачу: задаёт жёсткие цели по контрасту и минимальному перцепционному расстоянию в Oklab, а уже среди подходящих цветов выбирает умеренно насыщенный дневной набор. Обычное расстояние в sRGB плохо предсказывает ночную различимость. При 1200K изменение только синего канала вообще не влияет на преобразованный цвет, поэтому его можно использовать для улучшения дневной идентичности. Ember держит частые пиксели нейтральными: текст становится кремовым вместо чистого белого, а насыщенность приберегают для смысловых акцентов. Проверяются не только расстояния между акцентами, но и зазор с каждым уровнем текста fg_0/fg_1/fg_2, контраст ANSI-цветов к фону и монотонность лестницы фонов. Последовательные карты строятся так, чтобы шаги были равными именно после трансформации, с монотонной светлотой и 256 уникальными float-образцами.

Среди метрик релизных проверок: минимум 4.5:1 контраста для ANSI-слотов, пригодных для текста, от 5.3:1 до 6.8:1 для основного текста на тёмных поверхностях, отклонение сериализованных акцентов от целевых не более 0.15 ΔEOK и проверка четырёх ±5% углов чувствительности по зелёному и синему каналам. Цвет всё равно не заменяет структуру: для критичных данных графики стоит дополнять подписями, позицией, пунктиром, формой маркеров или текстурой. Начинать советуют с 3400k-dark, если вы не сидите на более глубоком фильтре.

Читать оригинал →