使固定:

使固定:

我正在尝试永久设置我的文本控制台字体以在 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 上遇到了这个问题。

使固定:

  1. 将 中的字体文件重命名/usr/share/consolefonts为类似于 的名称<CODESET>-<FONTFACE><FONTSIZE>.psf.gz,其中CODESETFONTFACEFONTSIZE匹配 中的相应行/etc/default/console-setup
  2. 编辑适当的行/etc/default/console-setup以使其与文件名匹配。

例子:

我将字体文件从 重命名ter-powerline-v16n.psf.gzUni2-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.gzFONT/etc/default/console-setupsetupconsetfont

根据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 文件。

  1. 下载 psf 文件https://github.com/powerline/fonts/blob/master/Terminus/PSF/ter-powerline-v16n.psf.gz.该文件本身也会引起同样的问题。

  2. 解压文件:

    gzip -d ter-powerline-v16n.psf.gz
    
  3. 使用 psf2bdf 工具创建 bdf 文件:https://gist.github.com/froh/1bb10ce5752f37eefe1b

    perl psf2bdf.pl ter-powerline-v16n.psf | sudo tee ter-powerline-v16n.bdf
    
  4. 调整此 bdf 文件:在 ENDPROPERTIES 行之前添加以下行:

    FONT_ASCENT 16
    FONT_DESCENT 0
    AVERAGE_WIDTH 80
    
  5. 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
    

    (我不确定这些参数是否正确)

  6. 将此新的 psf 文件设置/etc/default/console-setup

    FONT="ter-powerline-v16n-new.psf"
    

    或 gzip 压缩

    FONT="ter-powerline-v16n-new.psf.gz"
    
  7. 执行setupconservice console-setup restart,否则reboot。字体仍然保留。当然setfont也是有效的。

我猜测新的 psf 文件与第一个文件有一些不同,但我无法理解,因为它们是二进制文件。

相关内容