【译文】我的一个练手项目:Linux TTY 上的中文表音字体
我把它作为一个练习来开发,以便更好地了解 Linux TTY 的文本渲染,或者说是一个挑战,以探索 “过时 “技术的极限。
这是什么玩意?
Linux TTY 上的字体可以通过 setfont 实用程序(通常在 kbd 软件包中)进行更改。它最多只能支持 512 个字形,但每个字形可以映射到多个 Unicode 代码点。因此,为了支持中文,我需要在这个狭小的空间里挤出成千上万个汉字。幸运的是,现代汉语普通话只有大约 400 个不同的音节(忽略声调)。我们为每个音节挑选了一个最常用的字符,用来表示所有这几百个发音相似的字符。加上 96 个可见的 ASCII 字符和一些符号,它们完全可以容纳在 512 个字形的空间里!
但为什么要弄这个玩意?
老实说,盯着那些 “错误 “的字符猜测句子的意思并不是一件令人愉快的事情。因此,我不指望有人把它作为日常驱动程序。现在是 2024 年,你应该使用自己喜欢的 Wayland 或 X 桌面,而不是 TTY。所有主流图形用户界面工具包对中文(以及所有语言)的支持都比这个黑客软件要好得多。
我把它作为一个练习来开发,以便更好地了解 Linux TTY 的文本渲染,或者说是一个挑战,以探索 “过时 “技术的极限。
一个可能的用例是在实时环境(如 ArchISO)中执行一些维护任务。你无法访问图形桌面或打补丁的内核,只能使用 TTY,但需要检查中文文件名。你需要比 “Tofu “更好的东西,但又不想安装和配置 TTY 替代品。现在,你只需安装一个小字体,就能获得这些文件名的一些 “提示”,这可能会有所帮助。
另一个有趣的想法是,它暗示了如果第二次简化汉字方案成功,中文会是什么样子。如果第二次简化汉字方案成功,中文会是什么样子?(注:本项目使用的汉字与第二版《简繁体》并不完全相同。在该方案中,尽管许多汉字都有不同的含义和来源,但它们只是根据相似的音或形被合并了。它被认为是向汉语罗马化迈出的一步。
幸运的是,它失败了。这就是为什么我们今天仍然可以使用优雅的汉子汉语。
它是怎么做出来的?
准备字体的汉字部分。
- PSF 字体最多只能包含 512 个字形,但每个字形都可以映射到多个 Unicode 编码点。在西方字体中,这一功能允许 A(拉丁文 A)和 Α(希腊文 Alpha)共用一个字形,以节省空间。
- 在这个项目中,为了节省空间,我将所有具有相同拼音(忽略声调)的汉字映射为一个 “代表”。例如,”妈麻马骂吗”(拼音:mā má mǎ mà ma)全部映射为 “马”。汉字-拼音映射是通过脚本从 fcitx/libime 的拼音数据中提取的。
- 每个字形的位图来自一个旧的公共免费字体
gb24st.bdf
。它是许可授权的中文位图字体之一,但只涵盖 GB2312 字符。 - 因此,有些拼音音节没有包含在这个项目中,如 rua(挼)、fiao(覅),因为在
gb24st.bdf
中没有任何汉字的位图使用这些拼音。但不管怎么说,它们很少被使用,腾出这些空间来包含一些符号可能是件好事。 - 代表汉字基本上是挑选的该读音的最常见的汉字。不过有少数几个是我手工挑选的,目的是避免混淆或使用一个能组成许多形声字的声旁。
- 具体的拼音和汉字列表可以在 pinyin_hanzi 文件中找到。
- 脚本
readbdf.py
随后就读取这个列表,并将代表汉字的位图从gb24st.bdf
中提取出来。输出格式为 PSF Tools 中使用的 “txt” 格式。
准备 ASCII 部分和一些其他符号。
- 它们来自 Libertinus Mono 字体。该字体为矢量字体,我使用 FontForge 将其转换到了 bdf 格式的位图字体。
- 然后通过
bdf2psf
把它转换到 psf 格式,再用 PSF Tools 中的psf2txt
转换到 txt 格式
手动将它们两个合并,然后通过 txt2psf 转换为 psf 格式。
- Linux TTY 假定第 32 个字形是 U+20(空格字符),否则该字形将用于清除背景。因此,我将 U+20 重新定位到第 32 位。
Installation / 安装
Arch Linux (AUR)
从 AUR 安装: syllazh
从 “Releases” 中下载并解压,并将 syllazh.psfu.gz 文件复制到 /usr/share/kbd/consolefonts/
目录中。
使用
在TTY里运行 setfont syllazh
。请尽情享用!
本文文字及图片出自 https://github.com/oldherl/syllazh
你也许感兴趣的:
- C 语言老将从中作梗,Rust for Linux 项目内讧升级!核心维护者愤然离职:不受尊重、热情被消耗光
- 【外评】Linux 桌面市场份额升至 4.45
- “不可变”发行版Vanilla OS 2发布稳定版:彻底重写、改变使用Linux的方式
- 【外评】Rust 版的 Linux 文件系统
- 【外评】桌面 Linux 是一座尚未开发的金矿
- 【外评】茶壶中的 Debian /tmpest
- 【外评】为什么你的 Linux 内核错误报告可能毫无结果?
- BitKeeper、Linux 和许可纠纷:Linus 如何在 14 天内写出 Git
- 【外评】英伟达™(NVIDIA®)开放式 GPU Linux 内核驱动程序即将成为“图灵”及将来 GPU 的默认设置
- 如何从 Windows 安装程序安装 Linux
你对本文的反应是: