约一千五百年来,韩国寺庙与宫殿一直沿用同一套矿物颜料体系——丹青(단청)。深邃的靛蓝木作、朱砂红、赭石金。矿物颜料呈现生动 vivid 的色彩,却绝不刺眼如霓虹,而这恰恰是你每天凝视八小时所亟需的视觉体验。
我将这套色板转化为适用于 VS Code 及其他十二款应用的主题家族。本文着重分享我认为真正值得借鉴的核心:构建流程拒绝发布任何未通过 WCAG 对比度目标的色彩。
凭肉眼选色的弊端
每位主题作者都经历过这样的场景:在自家显示器上、特定亮度与环境光线下,反复微调十六进制色值直至“看起来顺眼”。然而,当有人在日光下的光亮笔记本屏幕上打开该主题时,你的注释文字便彻底隐形。
既然对比度可量化,我便将其设为构建门禁,而非依赖主观审美判断。
一份色板文件,十三款应用
整个主题家族仅依托单个 palette.json 文件。各变体(夜境、黎明、风暴、薄雾)分别定义背景、前景层级及强调色角色。构建脚本据此生成所有移植版本——VS Code、JetBrains、Neovim、Sublime、Obsidian、iTerm2、Alacritty、Kitty、Ghostty、Windows Terminal、Warp、tmux、Zed。4 种变体 × 13 款应用 = 52 个文件,所有平台色彩字节级完全一致。
修改任一十六进制色值并执行构建,所有移植版本同步更新,杜绝色彩漂移。
构建门禁
WCAG 对比度计算仅需约二十行 Python 代码,直接源自规范标准:
def 相对亮度(h: str) -> float:
def 校正函数(c: float) -> float:
return c / 12.92 if c <= 0.04045 else ((c + 0.055) / 1.055) ** 2.4
r, g, b = (校正函数(c) for c in 十六进制转RGB(h))
return 0.2126 * r + 0.7152 * g + 0.0722 * b
def 对比度(a: str, b: str) -> 免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。