如何让 gnome-terminal 使用特定字体以全宽形式显示标点符号?(·''“”)

如何让 gnome-terminal 使用特定字体以全宽形式显示标点符号?(·''“”)

我想使用SimSun(宋体)显示的字体中间点·单引号(花括号)‘’、双引号(花括号)“”他们的人物全宽表格.,因为这样很容易与(点)'(单引号) (双引号)区分开来",而这种可区分的可见性在使用输入法输入代码时尤其有用,因为输入法很容易输入·''“”字符而使代码无法编译(char *str=“will not compile”;)。

在 gedit 和 geany 和 leafpad 编辑器中,将字体设置为 SimSun 将使其按预期工作。

Geany 编辑器、SimSun 字体、全宽表格

但是在 gnome-terminal 中,将字体设置为 SimSun 并没有得到预期的结果。它似乎gnome-terminal 使用另一种字体来显示其半宽形式,或者它似乎它们只是挤在一起。

gnome-terminal、SimSun 字体、半宽表格

我也尝试了 lxterminal(LXDE)和 Terminal(xfce)和 ROXTerm,它们的显示与 gnome-terminal 相同。

如何让这些终端仿真器像 Geany 一样以全宽形式显示标点符号?

示例文本

1234567890
·“”‘’

Unicode 代码点(十六进制)

   UTF16  UTF8
· 00B7   C2B7
‘ 2018   E28098
’ 2019   E28099
“ 201C   E2809C
” 201D   E2809D

答案1

对于旧版本的 gnome-terminal,您应该VTE_CJK_WIDTH=wide在启动第一个 gnome-terminal 实例之前导出一个变量。

gnome-terminal 的较新版本(可能是 3.12 或 3.14)将其移至 UI 设置:配置文件首选项 -> 兼容性 -> 宽度不明确的字符:窄(默认)或宽(您要查找的)。

请注意,您在终端内运行的任何复杂应用程序(例如文本编辑器)也应收到有关此更改的通知,否则它将对光标的位置做出错误的假设,并且显示可能会崩溃。我不知道这方面的通用方法(可能/应该有一个语言环境,其中 wcwidth() 对这些字符返回 2 而不是 1,但我认为没有),因此您必须单独配置每个应用程序(如果它们有这样的配置选项)。不关心光标的简单实用程序,例如命令cat应该无需修改即可运行。

相关内容