![如何更改xterm字体?](https://linux22.com/image/225389/%E5%A6%82%E4%BD%95%E6%9B%B4%E6%94%B9xterm%E5%AD%97%E4%BD%93%EF%BC%9F.png)
我创建了一个 .Xresources 文件并向其中添加了以下代码(我只演示了一部分,因为有很多代码):
XTerm*font:*-terminus-medium-r-normal-*-16-*-*-*-*-*-koi8-r
XTerm*eightBitInput: false
XTerm*utf8: 1
XTerm*locale: 1
! Fonts ====================================================
! set font and fontsize
XTerm*faceName: DejaVu Sans Mono
XTerm*faceSize: 16
! VT Font Menu: Unreadable
xterm*faceSize1: 8
! VT font menu: Tiny
xterm*faceSize2: 10
! VT font menu: Medium
xterm*faceSize3: 12
! VT font menu: Large
xterm*faceSize4: 16
! VT font menu: Huge
xterm*faceSize5: 22
! Ensure that your locale is set up for UTF-8. If you do not use UTF-8, you may need to force xterm to more strictly follow your locale by setting
XTerm.vt100.locale: true
...
XTerm.vt100.translations: #override \n\
Ctrl <Key> minus: smaller-vt-font() \n\
Ctrl <Key> plus: larger-vt-font() \n\
Ctrl <Key> 0: set-vt-font(d) \n\
Ctrl Shift <Key>C: copy-selection(CLIPBOARD) \n\
Ctrl Shift <Key>V: insert-selection(CLIPBOARD) \n\
Shift <Btn1Up>: exec-formatted("xdg-open '%t'", PRIMARY) \n\
<Btn1Up>: select-end(PRIMARY, CLIPBOARD, CUT_BUFFER0) \n\
<Btn2Up>: insert-selection(PRIMARY)
...
*background: #002b36
*foreground: #657b83
!!*fading: 40
*fadeColor: #002b36
*cursorColor: #93a1a1
*pointerColorBackground: #586e75
*pointerColorForeground: #93a1a1
...
我从 YouTube 上的视频中复制了这段文字,所以我不太明白它的含义。之后我将以下几行添加到 .xinitrc 中:
[[ -f ~/.Xresources ]] && xrdb -merge -I$HOME ~/.Xresources
exec i3
xterm 更改背景颜色(如 .Xresources 中指定),但字体不会更改且热键不起作用。我尝试使用 ctrl+rmouse 更改字体大小,但是当我选择任何选项时,没有任何变化。但是,当我使用启动 xterm 时
xterm-fn-终点-中-r-正常--16-----*-koi8-r
字体发生变化。我究竟做错了什么?
- 我将 arch 与 xorg、xterm、i3wm 一起使用
答案1
在示例中,xterm 使用 TrueType 字体。 xterm 有一个(很少使用的)小部件方法,用于在运行时在 VT100 小部件中设置值,但这不包括 TrueType 字体。
看VTSetValues
在源代码中:
if (xtermLoadFont(newvt,
xtermFontName(TScreenOf(newvt)->MenuFontName(TScreenOf(curvt)->menu_font_number)),
True, TScreenOf(newvt)->menu_font_number)) {
/* resizing does the redisplay, so don't ask for it here */
refresh_needed = True;
fonts_redone = True;
} else if (strcmp(NonNull(DefaultFontN(curvt)), NonNull(DefaultFontN(newvt)))) {
TScreenOf(newvt)->MenuFontName(fontMenu_default) = DefaultFontN(curvt);
}
如果这不适用于位图字体 (XLFD),那么
- 错误报告到期,或者如果如图所示使用 TrueType 字体,则
- 可以考虑功能请求。
(StackExchange 也不是讨论的合适场所)。
这个片段
XTerm*font:*-terminus-medium-r-normal-*-16-*-*-*-*-*-koi8-r
XTerm*eightBitInput: false
XTerm*utf8: 1
XTerm*locale: 1
! Fonts ====================================================
! set font and fontsize
XTerm*faceName: DejaVu Sans Mono
XTerm*faceSize: 16
似乎是说您在“Fonts = =”之前添加了行。但是,那faceName
资源覆盖font
资源,如联机帮助页中所述:
如果不
faceName
指定了资源,或者两者都不匹配TrueType普通字体和粗体字体,xterm 使用XLFD (位图)字体及相关资源。
删除带有“faceName”的行将消除该冲突。
或者,您可以添加一行来设置renderFont
资源,例如
*renderFont: false