Linux/Ubuntu 18.04 安装并修改Terminator终端的默认大小(精确到每行每列显示多少个字母),以及讨论字号Font Size Point和像素大小Pixel的关系

在使用terminator的时候,觉得默认的terminator大小太小,特别是宽度不够,便想要去修改,在Ubuntu自带的Terminal里面可以很轻松的设置默认展示的行数和列数,但是似乎在terminator里面只能修改高和宽的像素大小,便去查资料看看像素大小和行数列数(进而引申到字号)的关系。

目录

  • Linux/Ubuntu 18.04 修改Terminator终端的默认大小,以及讨论字号Font Size Point和像素大小Pixel的关系
    • 安装Terminator
    • 修改Terminator终端默认大小
      • 字号Font Size Point和像素大小Pixel的关系
        • 字号 Point
        • 像素 Pixel
      • 计算并修改terminator大小
    • 参考

Linux/Ubuntu 18.04 修改Terminator终端的默认大小,以及讨论字号Font Size Point和像素大小Pixel的关系

安装Terminator

1
sudo apt-get install terminator

常用快捷键

快捷键 功能
Ctrl + Alt + T 新建一个terminator窗口
Ctrl + Shit + T 新建一个terminator标签Tab页
Ctrl + Shift + E 对当前terminator窗口垂直分割
Ctrl + Shift + O 对当前terminator窗口水平分割

更多快捷键可以打开Terminator后右键选择“Preference” -> “Keybindings"查看
在这里插入图片描述
BTW推荐使用 monospace 系列字体,保证每个字母宽度相同,在 “Preference” -> “Profiles" -> “General” 的Font里面设置。

修改Terminator终端默认大小

需要进入Terminator的 config 文件修改

1
sudo vim ~/.config/terminator/config

我的显示如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[global_config]
  title_transmit_bg_color = "#4e9a06"
[keybindings]
[layouts]
  [[default]]
    [[[child1]]]
      parent = window0
      profile = default
      type = Terminal
    [[[window0]]]
      parent = ""
      type = Window
      size = 900, 600
[plugins]
[profiles]
  [[default]]
    background_color = "#2d2d2d"
    cursor_color = "#e1e1e1"
    cursor_shape = ibeam
    font = Monospace 12
    foreground_color = "#e1e1e1"
    palette = "#000000:#cc0000:#4e9a06:#c4a000:#3465a4:#75507b:#06989a:#d3d7cf:#555753:#ef2929:#8ae234:#fce94f:#729fcf:#ad7fa8:#34e2e2:#eeeeec"
    use_system_font = False

其中 [[[window0]]] 下的 size = 900, 600 就是Terminator的宽度和高度,单位是pixel (px),如果没有可以自己添加上去。

但是这样也就有一个问题,我想要的是很简单的一行显示多少个字母的效果,这该如何设置呢?我们首先要知道字号Font Size Point和像素大小Pixel的关系。

字号Font Size Point和像素大小Pixel的关系

字号 Point

一般来说,电脑上的字体大小用字号point (pt)来表示,一般情况字号不带后面单位pt,比如用word写作的时候常用的12号字号。字号代表着一个字符的高度而不是宽度,这很容易理解,因为一般的英文字母字体中,很多字母是不等宽的,除了中文方块字是宽度相同的,并且还是等高等宽的,下面的图示可以表现。一个point等于0.352778 millimeters, 0.0138889 inches 或者1.33 pixels.

图示可以看出中文不管是横宽还是纵高,同一字号下,每个字符都是一样的,而普通的英文字母则不是,不同字母(不同大小写)不等宽,单个字母的宽度与高度也不一定相等。
在这里插入图片描述
但是那只是一般字体,像我上面提到的 monospace 系列字体,但从名字 ”单一空间“ (单一宽度)就可以知道是说的每个字母宽度相同的意思(但高度和宽度是不同的)。如下图就是 monospace regular 的表现
在这里插入图片描述

像素 Pixel

像素pixel就是屏幕表现图像的最小单元,常用显示器1920*1080的分辨率就代表了横向有1920个像素,纵向有1080个像素,总计1920*1080个像素。在一般96DPI (dots per inch)1 标准的显示屏中,一个pixel等于 0.2645835? millimeters, 0.010416675? inches, 或者 0.75 point.

字号和像素两者是有联系的,像上面说的那样,两者有个4/3的倍数关系,我们可以验证一下。

在文档软件里面用120字号(point)大小的字体书写”鬱“,繁体的中”忧郁“的”郁“,120pt对应着160px的大小,让我们用截图软件来看看这个字是否是占据了160个像素。
在这里插入图片描述
结果确实是占了160个像素,而且也很清晰的看见了汉字方块字是高宽相等的。

计算并修改terminator大小

现在我们知道了字号与像素的关系,就可以进行计算得出我们在terminator的 config 文件的 size 应该设置为多少了。设置我们的字号为12pt,也就是16px,如果我们想要每列显示m个字母(因为字号确定的时候字母高度,不是宽度,我们先从纵高入手),那么理论上,我们的terminator应该需要高 16×m 个像素大小。但是实际上并不是这样的,这是因为每行字母中间并不是紧挨的,还会有一定间隔,但是这个间隔我们目前不得而知。

但是我们还是有办法!

首先确保你的 terminator/config 里面 geometry_hinting 的值是 False 或者这个条目没有。然后打开terminator,你会发现标题栏下面有一条栏目,表示了当前terminator可以表现的字母数量(如果之前的条件没有满足则不会显示),如我的47x7,就表示横向可以展示47个字母,纵向可以展示7个字母。

根据这个特性我们就可以确定单个单个字母的长宽与terminator大小的关系,我们把 terminator/config 里面的 size 设置为 size = 1920 1080 ,尽量往大设置,可以减少误差,重启terminator,发现之前的值变成了190x52,然后我们进行一个简单的计算:1920/190 = 10.1,1080/52 = 20.8,如果愿意可以把精确度再提高,不过现在已经够了。

我们现在有了单个字母的长宽与terminator大小的关系了。假如我想要每行显示86个字母,每列显示24个人字母,那么我的terminator长就应该是 86*10.1 = 860,宽24×20.8 = 500 (取整数和抹零,小范围内不影响结果,因为terminator也是用的近似计算),设置好了,再重启terminator,发现结果正确。
在这里插入图片描述
但是这个方法有个弊端,就是如果你的字体和字号变了以后就要重新调整,所以我还是觉得自带terminal的比较好,可以一键到位,如下图
在这里插入图片描述

参考

Difference Between Pixel (Px) and Point (Pt) Font Sizes in Email Signatures, Gordan Banjac, 16/07/2019, https://blog.gimm.io/difference-between-pixel-px-and-point-pt-font-sizes-in-email-signatures/


  1. DPI (dots per inch) 跟 PPI (pixel per inch) 一般相等,表示每inch的像素个数。 ??