XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFESystem

【Rust】XFE系统,基于Rust和汇编

公开
关注 0 Fork 0 Star 0
UTF-8

控制台字体

默认拉丁字体为 XFE Mono(基于 Cascadia Mono),备选为 Unifont。两者均使用项目内固定版本、 附带原始许可的 OFL-1.1 字体资源,编译时无需联网。中文继续使用 Unifont。

默认字体由真正的字体轮廓栅格化产生,保留灰度抗锯齿和共同基线。100% 缩放时每个 终端列为 12 × 20 像素,XFE Mono 字号为 16 像素,基线位于第 16 像素。 a、x 等字母止于基线,g、j、p、q、y 的下伸部分延伸到基线以下, 不会为了填满字符格而单独拉伸或将每个字母的底部对齐。Unifont 备选字体也保留下伸。

字体切换命令和全界面缩放命令见 命令说明。它们不会改变终端字符的 列宽约定;中文字符占两列,英文占一列。

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 明确区分了文档嵌入和应用、设备嵌入,并说明转换成位图不能避开相关许可要求。 因此项目没有复制或转换 C:\Windows\Fonts\consola.ttf,也没有把 Cascadia Mono 重命名成 Consolas。使用 Consolas 需要额外取得适用于该用途的字体许可。

Cascadia Mono 是微软为终端场景提供的等宽字体,也是 Windows Terminal 的默认字体。 它采用开放的 SIL Open Font License,允许随软件嵌入和分发,见 微软的 Cascadia 说明 和 项目内原始许可。

项目内原始 TTF 保持未修改。控制台使用的 ASCII 子集位图是格式转换后的派生字体, 因此采用新名称 XFE Mono。上游保留名称为 Cascadia Code;按照 SIL 官方 OFL FAQ 第 5.3、5.4 项,派生字体 的主名称还应避免使用保留名称中的单个单词。文档中的 Cascadia Mono 仅说明来源, 不会将这个子集位图冒充为原始完整字体。

离线重建与资源格式

使用 Python 3 和 Pillow 12.3.0 执行:

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 写入。 渲染器负责把整个字符格及其边距、图标、光标等界面元素一起缩放。