# 控制台字体 默认拉丁字体为 **XFE Mono**(基于 Cascadia Mono),备选为 **Unifont**。两者均使用项目内固定版本、 附带原始许可的 OFL-1.1 字体资源,编译时无需联网。中文继续使用 Unifont。 默认字体由真正的字体轮廓栅格化产生,保留灰度抗锯齿和共同基线。100% 缩放时每个 终端列为 12 × 20 像素,XFE Mono 字号为 16 像素,基线位于第 16 像素。 `a`、`x` 等字母止于基线,`g`、`j`、`p`、`q`、`y` 的下伸部分延伸到基线以下, 不会为了填满字符格而单独拉伸或将每个字母的底部对齐。Unifont 备选字体也保留下伸。 字体切换命令和全界面缩放命令见 [命令说明](commands.md)。它们不会改变终端字符的 列宽约定;中文字符占两列,英文占一列。 dev.4 新增 `xfe-mono-scales.bin` / `latin-scales.rs` 和字体元数据中的 `native_scales`,从同一授权 TTF 分别栅格化 100%~400% 的十三档字号。正文直接读取对应字号,不放大小点阵;200% 对应 24×40 字符格和 32 像素字号。中文和 Unifont 备用字体继续使用原有点阵。颜色默认 `#75C9F5`,可用 `color #RRGGBB` 修改。 ## 为什么镜像没有直接包含 Consolas 本机安装了 Consolas,但安装 Windows 所获得的字体使用权限不包括把它转换为 另一套操作系统的位图字体并随镜像分发。微软的 [字体许可 FAQ](https://learn.microsoft.com/en-us/typography/fonts/font-faq) 明确区分了文档嵌入和应用、设备嵌入,并说明转换成位图不能避开相关许可要求。 因此项目没有复制或转换 `C:\Windows\Fonts\consola.ttf`,也没有把 Cascadia Mono 重命名成 Consolas。使用 Consolas 需要额外取得适用于该用途的字体许可。 Cascadia Mono 是微软为终端场景提供的等宽字体,也是 Windows Terminal 的默认字体。 它采用开放的 SIL Open Font License,允许随软件嵌入和分发,见 [微软的 Cascadia 说明](https://learn.microsoft.com/en-us/windows/terminal/cascadia-code) 和 [项目内原始许可](../assets/fonts/cascadia-mono-2407.24/OFL-1.1.txt)。 项目内原始 TTF 保持未修改。控制台使用的 ASCII 子集位图是格式转换后的派生字体, 因此采用新名称 **XFE Mono**。上游保留名称为 `Cascadia Code`;按照 [SIL 官方 OFL FAQ 第 5.3、5.4 项](https://openfontlicense.org/ofl-faq/),派生字体 的主名称还应避免使用保留名称中的单个单词。文档中的 Cascadia Mono 仅说明来源, 不会将这个子集位图冒充为原始完整字体。 ## 离线重建与资源格式 使用 Python 3 和 Pillow 12.3.0 执行: ```powershell python assets/branding/build-console-assets.py python assets/branding/test-console-fonts.py ``` `assets/branding/console/fonts.json` 记录每种字体的来源、版本、许可、哈希、字高、 基线和实际墨迹边界。每个拉丁字体 bank 包含 U+0020 到 U+007F 共 96 个槽, U+007F 为控制字符的空白槽。每槽 240 字节,按照 12 × 20 像素逐行保存 alpha8 覆盖度,0 为背景、255 为完全前景。字符位置为 `(codepoint - 32) * 240`。 使用固定的前景和背景颜色混合覆盖度,避免把文字边缘的灰度直接作为 RGB 写入。 渲染器负责把整个字符格及其边距、图标、光标等界面元素一起缩放。