我可以更改文本模式控制台的字体吗?

我安装了一个类Unix的操作系统,没有窗口环境,只有文本模式控制台,没有图形用户界面。
请问是否可以更改控制台使用的字体?
明确一点,我不是在谈论像KDE或GNOME这样的桌面环境附带的终端仿真器。

3当然可以:https://wiki.archlinux.org/index.php/Fonts#Console_fonts - Blender
2@Blender - 你好,来自2019年!该资源显然已经移动到这里:https://wiki.archlinux.org/index.php/Linux_console#Fonts - TheDudeAbides
7个回答

如果你使用Linux控制台,我发现最好的方法是:
在/etc/default/console-setup中,
例如,输入以下内容:
CHARMAP="UTF-8"
CODESET="Lat7"
FONTFACE="Terminus"
FONTSIZE="28x14"

另一种方法是使用setfont命令来自kbd包: setfont /usr/share/consolefonts/Lat7-Terminus28x14.psf 这对我的Debian有效,但你的情况可能不同。
在Debian中,你还可以运行dpkg-reconfigure -plow console-setup命令,在菜单中选择各种控制台设置。 编辑 - 我编写了一个小页面,介绍如何设置字体颜色。与本帖相关的部分标题为“Linux VTs”(也称为ttys或“控制台”)。

12dpkg-configure console-setup列出的字体大小有:6x12、8x14、8x16、10x20、11x22、12x24、14x28和16x32。 - Casey Watson
1我必须重新启动才能生效 - mt025
1我使用了dpkg-reconfigure console-setup的解决方案,之后我选择了字体选项,并修改了/etc/default/console-setup文件,并运行了update-initramfs命令(我猜测是带有-u选项)。然而,你的回答没有提到运行update-initramfs命令。这是否必要? - Alexey
1@mt025 你可以使用命令 setupcon 来应用更改。它是 console-setup 软件包的一部分。 - Pankaj Jangid
1在某些发行版(至少在Arch上),字体将位于/usr/share/kbd/consolefonts目录下。我将添加一个单独的答案来强调setfont解决方案。 - Leif Arne Storset
dpkg-configure console-setupдёӯеҲ—еҮәзҡ„жүҖжңүеӯ—дҪ“еӨ§е°ҸйғҪжҜ”жҲ‘еңЁжҲ‘зҡ„4KжҳҫзӨәеҷЁдёҠжғіиҰҒзҡ„иҰҒе°ҸгҖӮжҲ‘еёҢжңӣеӯ—дҪ“еҸҳеӨ§5еҖҚпјҒ - Lonnie Best

/etc/default/console-setup等已在systemd操作系统上被取代,尽管你会发现一些操作系统(如Debian)试图保持旧的配置系统。

在systemd操作系统上进行此操作的方法是编辑/etc/vconsole.conf文件中的字体设置。这些设置由systemd-vconsole-setup服务应用,它本质上是在登录服务启动之前运行setfontloadkeys的一种高级方式。

例如,在该文件中你可以有FONT=Uni2-Terminus28x14

请注意,服务程序允许内核命令行选项(如vconsole.font)覆盖/etc/vconsole.conf的内容。如果你正在处理GRUB内核命令行选项,请记住这一点。

进一步阅读


这种方法的问题在于它是针对systemd的,并且会改变所有用户的默认设置。 - fpmurphy
1FONT=Uni2-Terminus28x14似乎无法使用,因为我的基于Arch的系统中没有这种字体。实际上,我不关心字体本身,但我想让文本变大,因为它太小了,难以阅读。难道没有任何方法只是将控制台文本大小加倍或三倍,而不改变字体吗? - Damn Vegetables

使用Ubuntu 16.04(可能适用于所有支持的版本),我编辑了~/.bashrc文件,并在文件末尾的终端闪屏之前插入了setfont命令。
# Set font when running in console
/bin/setfont /usr/share/consolefonts/Lat2-Terminus32x16.psf.gz    

# Splash Calendar and time
now

# ASCII Linux distribution display
screenfetch

现在当你按下Ctrl+Alt+F1Ctrl+Alt+F6时,会得到漂亮的大字体。
这是最大的可用字体,你可以使用ls命令查看完整列表。
$ ls /usr/share/consolefonts
Arabic-Fixed15.psf.gz             Lat15-Terminus20x10.psf.gz
Arabic-Fixed16.psf.gz             Lat15-Terminus22x11.psf.gz
Arabic-VGA14.psf.gz               Lat15-Terminus24x12.psf.gz
    (... SNIP ...)
Lat15-Terminus14.psf.gz           Vietnamese-Fixed16.psf.gz
Lat15-Terminus16.psf.gz           Vietnamese-Fixed18.psf.gz

示例屏幕

这只是一个仿真,不是来自控制台的真实屏幕截图,屏幕宽度增加了20%,背景为黑色:

Sample console fonts

更改之前,我无法在高分辨率显示器上阅读屏幕。

这与问题无关。你在图形界面中运行一个终端。 - RichieHH
3@RichieHH 当你打开终端时,~/.bashrc 也会被处理。只是因为没有运行图形界面,所以我无法截取终端会话的屏幕截图。 - WinEunuuchs2Unix
一个用户在使用https://askubuntu.com/questions/1409347/error-when-i-go-the-the-root-sudo-s时遇到了一些困扰。 - muru

如果您想使用几乎任何与X兼容的字体,可以看看David Herrman在kmscon上的工作。事实上,项目的名称稍微有些误导,因为它并不需要Kernel Mode Setting来运行,它还可以与帧缓冲设备一起工作,例如如果您正在使用专有的AMD或NVIDIA显示驱动程序。使用kmscon,您可以获得多座位会话管理、类似于xterm的键盘和UTF-8字体处理以及会话控制。可以通过/etc/kmscon/kmscon.conf或命令行选项来更改字体。

鉴于这个回答的时效性,这是有道理的。但是对于现在阅读这个答案的任何人来说,自 2014 年以来似乎没有更新 kmscon。我可以想象这样一个未得到维护的工具会存在许多安全和兼容性问题。 - éclairevoyant
项目并没有停止,只是现在的开发在不同的分支上进行:https://github.com/Aetf/kmscon 是主要的分支,而https://github.com/MacSlow/kmscon 则有许多酷炫的实验性新功能。 - the_yellow_logo

setfont 对我有用。选择一个字体;通常它们列在以下其中之一:

  • /usr/share/consolefonts
  • /usr/share/kbd/consolefonts

例如,要使用字体/usr/share/kbd/consolefonts/ter-v32n.psf.gz,您可以输入

setfont ter-v32n

一个非常简单但是不太灵活的解决方案是运行setfont -d命令,它会将当前字体的大小加倍。不过,连续运行两次并不会将字体的大小增加四倍(至少在我的系统上不会)。

一开始我以为它没有起作用,因为我使用了 sudo 运行它。我移除了 sudo 然后它就起作用了。但是这似乎仅适用于当前会话。如果我退出并重新登录,则字体将恢复到其原始大小。如何使其持久化? - Damn Vegetables
我想象将该命令放入某个在启动shell时加载的文件中,例如~/.inputrc~/.profile,将会达到那个效果。 - Jeffrey Benjamin Brown

在Linux Mint 18.1终端中:
1. 在黑色空白处右键单击。 2. 选择“配置文件”,然后选择“配置文件首选项”。 3. 在“自定义字体”框中打勾。 4. 单击旁边的大文本示例框。 5. 选择您想要的字体大小和类型。
更改将立即生效。

2我认为这个问题是关于Linux控制台tty1 -- tty8)的。 - Alexey
你在“永远学不老”看到了“无需桌面”的字样? - alamin