一,前言
前几天在考虑linux字符终端下怎么修改字体,我希望改变字体大小来达到保护眼睛(长期开启字符终端装逼)的目的。在网上搜索很久,发现有一个叫做setfont的命令。通过man 得知这货的确能设置字体。
下面通过我的理解来解释一下setfont命令应该怎么用吧。
二,setfont
setfont - load EGA/VGA console screen font (加载EGA/VGA终端字体)
!注意:setfont在x下没法使用,只能是在EGA/VGA字符终端下可用。
用法:setfont [font_name] [-C console_name]
典型用法:
$setfont -- 设置当前终端字体为默认字体。
$setfont font_name --设置当前终端字体为指定名称的字体。
$setfont font_file --设置当前终端的字体为指定的字体。
font_file只能是psf,psfu与psf.gz,psfu.gz稍后说明。
$sudo setfont -C /dev/tty2 [font_name] --设置指定终端的字体。
字体文件:字体文件存放在/usr/share/kbd/consolefonts,
以我的主机为例:
$ls /usr/share/kbd/consolefonts
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
eurlatgr.psfu.gz Tamsyn10x20r.psf.gz ter-i20b.psf.gz
Goha-12.psfu.gz Tamsyn5x9b.psf.gz ter-i20n.psf.gz
Goha-14.psfu.gz Tamsyn5x9r.psf.gz ter-i22b.psf.gz
Goha-16.psfu.gz Tamsyn6x12b.psf.gz ter-i22n.psf.gz
GohaClassic-12.psfu.gz Tamsyn6x12r.psf.gz ter-i24b.psf.gz
GohaClassic-14.psfu.gz Tamsyn7x13b.psf.gz ter-i24n.psf.gz
GohaClassic-16.psfu.gz Tamsyn7x13r.psf.gz ter-i28b.psf.gz
gr737a-8x8.psfu.gz Tamsyn7x14b.psf.gz ter-i28n.psf.gz
gr737a-9x14.psfu.gz Tamsyn7x14r.psf.gz ter-i32b.psf.gz
gr737a-9x16.psfu.gz Tamsyn8x15b.psf.gz ter-i32n.psf.gz
gr737b-8x11.psfu.gz Tamsyn8x15r.psf.gz ter-k12n.psf.gz
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
font_name:上述字体文件去掉.psf.gz/.psuf.gz后缀。
font_file:就是上述文件,记得切换到该目录或者使用绝对路径。
用例:setfont GohaClassic-16
setfont GohaClassic-16.psfu.gz
三,showconsolefont 查看当前所有字体。
用法,$showconsolefont
四,终端字体知识
字体常见格式:
bdf 与 bdf.gz – 点阵字体,bitmap distribution format(位图布局格式)的缩写,后者表示以 gzip 压缩的 bdf。
pcf 与 pcf.gz – 点阵字体, portable compiled font(可移植编译字体)的缩写,后者表示以 gzip 压缩的 pcf。
psf,psfu与psf.gz,psfu.gz – 点阵字体,前两者分别是 PC screen font(电脑屏幕字体)与 PC screen font Unicode(Unicode 电脑屏幕字体)的缩写。两者分别表示用 gzip 压缩的 psf 与 {{ic|psfu}(不适用于 X.Org)。
pfa 与 pfb – 矢量字体,分别是 PostScript font ASCII 与 PostScript font binary 的缩写。PostScript 字体内带有打印指令。
ttf – outline,TrueType 字体。作为 PostScript 字体的替代。
otf – outline,OpenType 字体。带有 PostScript 打印指令的 TrueType 字体。
在多数情况下,TrueType 和 OpenType 的技术差异可以忽略,一些带有 ttf 扩展的字体实际上是 OpenType 字体。
四,默认字体设置
按照wiki上的方法:/etc/vconsole.conf 的 FONT 和 FONT_MAP 变量可以用来改变默认字体
未成功。成功的同学麻烦给我说一声。。。
于是我自己想了个办法。只在字符终端下设置字体:
在.bashrc/.zshrc(根据自己使用的shell来选择)文件中加入一条判断语句,判断x环境下的某个特有变量是否等于在x下的特有值,这个变量可以通过env命令来找出。
看看我是怎么设置的:
.zshrc:
#setfont
if [ "$XDC_CURRENT_DESKTOP" != "GNOME" ];then
setfont greek-polytonic
fi
#setfont end
这样在字符终端登录时就会设置终端字体。而在x下又不会出现错误~
五,后话:
在我的主机(Thinkpad e430 ad2 笔记本 系统为archlinux 单系统),以上方法适用。
但是我在机房机器上(kali linux u盘系统)下发现没有setfont命令。具体原因不明白。
原来是想设置更大字号保护视力的,结果发现setfont greek-polytonic这货感觉真不错,
但是这货字体比默认的还小,但是行间距比较大。算了,看着舒服就好了。
参考文档:
archwiki:https://wiki.archlinux.org/index.php/Fonts_%28%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%29#.E7.BB.88.E7.AB.AF.E5.AD.97.E4.BD.93