【免费下载链接】c64-keyboard-font
Photo-based reconstruction of classic Commodore 64 keycap lettering, with desktop fonts, webfont, editable outlines, and a specimen.
c64-keyboard-font 是一款基于经典 Commodore 64 键帽照片重建的复古键盘字体,提供 TTF、OTF、WOFF2 三种格式。它的字符集由 193 个字形(glyphs) 和 253 个字符映射(mapped characters) 构成——前者是字体里真正画出来的形状,后者是实际能敲进文字的码位。本文把 f1–f12 函数键、匈牙利语重音、£ 符号和 π 等容易被忽略的部分全部拆开讲清楚 🎹
一切字形,都来自这张老键盘的照片
这套 C64 复古字体并非凭空设计:所有字母、数字和键帽符号都出自一台中欧版 Commodore 64 的实机照片,经过裁剪、描迹后做几何归一化(统一 700 单位大写高度、88 单位竖干、80 单位横杠),修正了照片透视与磨损。
注意看第一排最右侧的 £ 键,以及右侧独立的一列 f1–f7 函数键——它们在这套 C64 字体字符集中都有一席之地。
193 个字形是怎么数出来的
把 fonts/character-map.json 里的 191 条字形记录加上 space(空格)和 .notdef(缺字占位),正好 193 个。六类构成如下:
| 类别 | 数量 | 码位范围 | 来源方式 |
|---|---|---|---|
| 字母 / 数字 / 键帽符号 | 64 | U+0030–U+005A、U+0021–U+007E 等 | 照片描迹 + 几何归一化 |
| 构造扩展标点 | 20 | \ → ↓ | _ ^ ~ { }弯引号– — − × …` | 按原风格手工构造 |
| 函数键标签 f1–f12 | 12 | U+E010–U+E01B | 由 f 字形(U+E001)组合而成 |
| 重音字母(含匈牙利语) | 32 | U+00C0–U+0178 | 基础字母 + 重音组合 |
| PETSCII 键面图形 | 63 | U+E140–U+E17F(不含 U+E160) | 平滑矢量重建 |
| space 与 .notdef | 2 | U+0020 等 | — |
| 合计 | 193 |
253 个映射:比字形多出的 62 个"别名"
253 = 191 + 26 + 33 + 3:
- 26 个小写字母别名:
a–z输入后显示为大写键面样式(复刻印刷键帽的行为); - 33 个重音小写别名:如
á é ñ õ,以及波兰语ć ń ś ź、匈牙利语ő ű; - 3 个附加映射:
π(U+03C0,与小写π共用键面字形)、space、不间断空格。
也就是说,每个可见字形背后可能有 2 个以上入口码位,这就是"字形"与"映射"数量不同的原因 ✅
码位地图:从 ASCII 到私有区
| 码位段 | 内容 | 示例 |
|---|---|---|
U+0021–U+007E | 可打印 ASCII:26 个大写、0–9、键帽标点 | ! A @ * |
U+00A3 | £ 英镑符号 | £ |
U+00C0–U+0178 | 32 个重音字母 | Á Ő Ű Ç |
U+03C0 | π(别名,指向 U+E15E 字形) | π |
U+2190–U+2193 | 方向箭头(其中 → ↓ 为构造扩展) | ← ↑ |
U+E001 | 键帽上的小写 f 符号 | f |
U+E010–U+E01B | f1–f12 函数键标签 | f1 … f12 |
U+E140–U+E17F | 63 个 PETSCII 键面图形 | 黑桃 U+E141 |
💡 f1–f12 被放在 Unicode 私有使用区(PUA),避免与标准小写
f1冲突;π 的私有区码位是U+E15E,直接敲标准π也能显示。
£ 和 f 这两个"配角"字形在 v1.106 还对照更高清的照片做过精修,见 CHANGELOG.md 的版本记录。
63 个 PETSCII 图形:一次讲清三套编码
PETSCII 键面图形(黑桃 ♠、心形、方格线框、π 等)最容易让人困惑的是它同时存在三套编码。以黑桃为例:
| 名称 | 作用 | 黑桃的取值 |
|---|---|---|
| PETSCII 字节 | C64 键盘实际产生的值 | $C1 |
| 屏幕码 | C64 显存里的字符索引 | $41 |
| 字体码位 | 本字体选字形的私有区码位 | U+E141 |
规律很好记:字体码位 = U+E100 + 屏幕码。$41 + U+E100 = U+E141。而 $60 对应的是空白格(没有印刷图形),所以被跳过,63 个图形正好落在 U+E140–U+E17F 里(不含 U+E160)。
左图例用 Commodore + 键 触发,右图例用 Shift + 键(大写/图形模式)触发;↑ 键上的 π 两种修饰键都能打出。每个图形都是"细边框 + 平滑矢量"的重建版本,而不是屏幕点阵字——细节可查 docs/PETSCII.md。
给每个字形查"身份证":关键文件路径
| 文件 | 用途 |
|---|---|
| fonts/character-map.json | 191 个字形的码位与照片来源记录 |
| fonts/C64Keyboard-Regular.ttf | 桌面字体(另有 .otf、.woff2) |
| glyphs/petscii-map.json | PETSCII 字节 / 屏幕码 / 字体码位三套编码映射 |
| glyphs/source-map.json | 原始照片裁剪区域与元数据 |
| glyphs/ | 191 个可编辑 SVG 字形轮廓 |
| glyphs/petscii/ | 63 个 PETSCII 图形 SVG 轮廓 |
| docs/BUILDING.md | 构建与校验说明(193 字形 / 253 映射的出处) |
| preview.html | 浏览器内试用页,可点选 f 键与 PETSCII 按钮插入符号 |
快速上手:3 步用上这套 C64 字符集
- 安装:把 fonts/ 里的 TTF 或 OTF 装进系统(或整包解压 C64-Keyboard.zip);
- 选字体:在应用中选择 C64 Keyboard,输入大写、f1–f12、重音字母即可;
- 插入特殊符号:打开 preview.html,点击函数键或 PETSCII 按钮把符号插入输入框,复制后粘贴——注意目标应用必须仍选中本字体,私有区字符在其它字体下可能显示为方框。
项目采用 CC0 公共领域授权,商用也无需署名。现在你可以对照上面的码位地图,把这 253 个映射逐一验证一遍——这就是完整读懂一套复古字体字符集的全部路径 ✦
【免费下载链接】c64-keyboard-font
Photo-based reconstruction of classic Commodore 64 keycap lettering, with desktop fonts, webfont, editable outlines, and a specimen.
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考







