我正在尝试永久设置我的文本控制台字体以在 Ubuntu 19.04 上使用电力线字体,但似乎无法让它坚持下去。我将字体复制到正确的目录中,如下所示:
sudo cp -r Terminus/PSF/*.psf.gz /usr/share/consolefonts
如果我跑
setfont /usr/share/consolefonts/ter-powerline-v16n.psf.gz
在控制台上,它可以正确设置字体。但是,如果我添加:
FONT="ter-powerline-v16n.psf.gz"
两者(或任一)/etc/vconsole.conf
和/或/etc/default/console-setup
似乎没有持续。当我这样做并运行
sudo setupcon -v
看起来它正在运行正确的命令来设置字体,但完成后它并没有按预期工作。以下是该命令的输出:
Configuring /dev/tty1 /dev/tty2 /dev/tty3 /dev/tty4 /dev/tty5 /dev/tty6
The charmap is UTF-8
BackSpace is ^?
executing setfont -C /dev/tty1 /etc/console-setup/ter-powerline-v16n.psf.gz /etc/console-setup/ter-powerline-v16n.psf.gz.
setfont: graphics console /dev/tty1 skipped
executing setfont -C /dev/tty2 /etc/console-setup/ter-powerline-v16n.psf.gz /etc/console-setup/ter-powerline-v16n.psf.gz.
setfont: graphics console /dev/tty2 skipped
executing setfont -C /dev/tty3 /etc/console-setup/ter-powerline-v16n.psf.gz /etc/console-setup/ter-powerline-v16n.psf.gz.
Read 512-char 8x16 font from file /etc/console-setup/ter-powerline-v16n.psf.gz
Read 512-char 8x16 font from file /etc/console-setup/ter-powerline-v16n.psf.gz
Loading 1024-char 8x16 font
Loading Unicode mapping table...
executing setfont -C /dev/tty4 /etc/console-setup/ter-powerline-v16n.psf.gz /etc/console-setup/ter-powerline-v16n.psf.gz.
Read 512-char 8x16 font from file /etc/console-setup/ter-powerline-v16n.psf.gz
Read 512-char 8x16 font from file /etc/console-setup/ter-powerline-v16n.psf.gz
Loading 1024-char 8x16 font
Loading Unicode mapping table...
executing setfont -C /dev/tty5 /etc/console-setup/ter-powerline-v16n.psf.gz /etc/console-setup/ter-powerline-v16n.psf.gz.
Read 512-char 8x16 font from file /etc/console-setup/ter-powerline-v16n.psf.gz
Read 512-char 8x16 font from file /etc/console-setup/ter-powerline-v16n.psf.gz
Loading 1024-char 8x16 font
Loading Unicode mapping table...
executing setfont -C /dev/tty6 /etc/console-setup/ter-powerline-v16n.psf.gz /etc/console-setup/ter-powerline-v16n.psf.gz.
Read 512-char 8x16 font from file /etc/console-setup/ter-powerline-v16n.psf.gz
Read 512-char 8x16 font from file /etc/console-setup/ter-powerline-v16n.psf.gz
Loading 1024-char 8x16 font
Loading Unicode mapping table...
on /dev/tty1 executing printf.
on /dev/tty2 executing printf.
on /dev/tty3 executing printf.
on /dev/tty4 executing printf.
on /dev/tty5 executing printf.
on /dev/tty6 executing printf.
on /dev/tty1 executing kbd_mode -u.
on /dev/tty2 executing kbd_mode -u.
on /dev/tty3 executing kbd_mode -u.
on /dev/tty4 executing kbd_mode -u.
on /dev/tty5 executing kbd_mode -u.
on /dev/tty6 executing kbd_mode -u.
executing loadkeys /run/tmpkbd.3ChpoS.
一切似乎都按预期运行,所以我不明白为什么它不起作用。有人有什么想法吗?
答案1
我在 Ubuntu 18.04 上遇到了这个问题。
使固定:
- 将 中的字体文件重命名
/usr/share/consolefonts
为类似于 的名称<CODESET>-<FONTFACE><FONTSIZE>.psf.gz
,其中CODESET
,FONTFACE
并FONTSIZE
匹配 中的相应行/etc/default/console-setup
- 编辑适当的行
/etc/default/console-setup
以使其与文件名匹配。
例子:
我将字体文件从 重命名ter-powerline-v16n.psf.gz
为Uni2-Terminess16n.psf.gz
。我的字体文件console-setup
包含以下几行:
CODESET="Uni2"
FONTFACE="Terminess"
FONTSIZE="16n"
解释:
正如您在输出中看到的那样,它使用以下参数sudo setupcon -v
调用: 。字体文件名出现了两次,这似乎是问题所在。如果将多个字体文件名作为的值放在中,则在调用时每个文件名都会被复制。它似乎不应该以这种方式工作,但我不确定这是否是一个错误。setfont
-C /dev/tty6 /etc/console-setup/ter-powerline-v16n.psf.gz /etc/console-setup/ter-powerline-v16n.psf.gz
FONT
/etc/default/console-setup
setupcon
setfont
根据man setfont
,如果将多个字体文件作为参数传递给setfont
,它将尝试将它们组合成一个字体并加载它。根据 的输出判断showconsolefont
,两次传递相同的文件名会导致加载具有 256 个字形的字体,而不是完整的 512 个字形。
setupcon
解决方案利用处理变量的方式FONTFACE
查找并加载与给定字体对应的字体文件。通过这种方式查找字体可以解决FONT
元素重复的问题。
答案2
您是否删除或注释掉了以下几行?
CODESET="Lat15"
FONTFACE="TerminusBold"
FONTSIZE="8x16"
我最初的设置中缺少这个。
我的 /etc/default/console-setup 现在看起来像这样,并且它可以按预期工作(tty1-tty6 中的电力线字体)。
ACTIVE_CONSOLES="/dev/tty[1-6]"
CHARMAP="UTF-8"
FONT="ter-powerline-v18n.psf.gz"
VIDEOMODE=
答案3
我在 Ubuntu 22.04.4 上遇到了同样的问题,但解决方法如下。简而言之,我重新制作了一个 psf 文件。
下载 psf 文件https://github.com/powerline/fonts/blob/master/Terminus/PSF/ter-powerline-v16n.psf.gz.该文件本身也会引起同样的问题。
解压文件:
gzip -d ter-powerline-v16n.psf.gz
使用 psf2bdf 工具创建 bdf 文件:https://gist.github.com/froh/1bb10ce5752f37eefe1b
perl psf2bdf.pl ter-powerline-v16n.psf | sudo tee ter-powerline-v16n.bdf
调整此 bdf 文件:在 ENDPROPERTIES 行之前添加以下行:
FONT_ASCENT 16 FONT_DESCENT 0 AVERAGE_WIDTH 80
bdf2psf
使用安装的重新制作 psf 文件apt
。bdf2psf --fb ter-powerline-v16n.bdf /usr/share/bdf2psf/standard.equivalents /usr/share/bdf2psf/ascii.set 256 ter-powerline-v16n-new.psf
(我不确定这些参数是否正确)
将此新的 psf 文件设置
/etc/default/console-setup
为FONT="ter-powerline-v16n-new.psf"
或 gzip 压缩
FONT="ter-powerline-v16n-new.psf.gz"
执行
setupcon
或service console-setup restart
,否则reboot
。字体仍然保留。当然setfont
也是有效的。
我猜测新的 psf 文件与第一个文件有一些不同,但我无法理解,因为它们是二进制文件。