在使用terminator的时候,觉得默认的terminator大小太小,特别是宽度不够,便想要去修改,在Ubuntu自带的Terminal里面可以很轻松的设置默认展示的行数和列数,但是似乎在terminator里面只能修改高和宽的像素大小,便去查资料看看像素大小和行数列数(进而引申到字号)的关系。
目录
Linux/Ubuntu 18.04 修改Terminator终端的默认大小,以及讨论字号Font Size Point和像素大小Pixel的关系
安装Terminator
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
文件修改
sudo vim ~/.config/terminator/config
我的显示如下
[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/
DPI (dots per inch) 跟 PPI (pixel per inch) 一般相等,表示每inch的像素个数。 ↩︎