怎样自己“缝合”一套字体?

Emacs在GUI下可以为不同字符集设置不同的字体,但TUI的字体就取决于终端的设置了,而目前的大部分终端似乎都不支持多个字体集的设置(URXVT似乎是支持的,但相应的配置有些硬核,我没折腾到底)

那能否自己“缝合”出一套字体来呢?比如,中文使用思源黑体,英文使用Fira Code,开启ligature,并且打上Nerd-fonts补丁?

要求可能比较多,主要是想知道这样集采众长的方法是否可行?

另外,比如终端字体设置的是Fira Code,不包含中文字体和glyph,那对应的Fallback机制是什么样的?

拼两个字体起来并不难,fontforge 之类的应该就可以实现。但字体这种东西,难道每次换都去拼一次吗? 终端的 fallback 取决于你的 ~/.local/share/fonts.conf 配置 (Linux).

我个人觉得,放弃终端,至少放弃折腾终端字体,连可变字体大小都没有,不好玩。

我的想法是,如果可以的话,折腾出一套自己心仪的字体之后,就把这套流程丢到github action上,这样就能定期获取最新的缝合字体用了。

终端是无奈之举,Win11的WSLg实在不给力,怪问题多多,又不想倒退回去使用Win10+X410,只能在终端先将就着了,毕竟可以的话我也想在行内预览图片、公式之类的。

urxvt 貌似不支持字体 fallback?很久之前尝试了一下,一看太复杂就放弃了。

Anyway,新终端 alacritty, kitty, wezterm,contour 等都确认支持的,随便一个都可以用。

https://github.com/alacritty/alacritty/issues/957#issue-284277809

alacritty应该不支持多字体设定,还得靠系统级的fallback

不知道。alacritty 拿来就用,一直挺顺手。基本不用配置,没仔细看过。

刚搜了一下,alacritty 配置可以指定多个字体的,有内部的 fallback 支持。

最近两天从 alacritty 转到 wezterm 了。发现 wezterm 默认开启了缺字提示,有时还挺烦的。

b82cb52a-de8d-4125-977d-eb07ea7a14e7

不过,对字体 fallback 有定制需求的人来说,这是好事。很方便调试。

我觉得在macOS中,kitty比wezterm的性能更好,bug更少。

我在 archlinux。wezterm 用了几天,目前感觉还可以。

当时是先试 kitty 的,毕竟影响力大。结果打开发现 fcitx 用不了,搜索了一下能通过设置环境变量解决。wezterm 这时已下载好,打开输入法就能用,就决定先配置 wezterm。没有意外的话,折腾其它终端的动力不会太大。

你这边有 kitty 的配置可以分享尝试一下吗?

[-]─82399 wezterm-gui                                      24 ashfinal    122M ⣀⣀⣀⣀⣀  1.2  │
 │ [-]─82411 zsh (-zsh)                                     1 ashfinal    8.4M ⣀⣀⣀⣀⣀  0.0  │
 │  │ [-]─82499 nvim                                        6 ashfinal     30M ⣀⣀⣀⣀⣀  0.4  │
 │  │  │  └─ 82562 lua-language-se (lua-language-server)    6 ashfinal     46M ⡀⣀⣀⣀⡀  0.0  │
 │ [-]─82604 zsh (-zsh)                                     1 ashfinal    8.2M ⣀⣀⣀⣀⣀  0.0  │
 │  │  └─ 82675 btop                                        3 ashfinal    5.8M ⡀⣀⣀⣀⢀  0.4  │
 │  └─ 82747 zsh (-zsh)                                     1 ashfinal    8.1M ⣀⣀⣀⣀⣀  0.0  │

这个资源占用比 alacritty 略高一点,但功能更多。配 nvim 很好使。

对不起,跑题了。

  1. wezterm的最新的stable版本在macOS里连续按一个键没反应,用最新的nightly build的版本稍微改善些,但是感觉到有点卡。比如 set -o vi,设置为vi mode后,按h键往左移动,连续按没反应,非要一个一个按。
  2. top时能看见cursor在不同位置上闪烁,正常应该在右下角处。由于cursor是红色的,闪烁的时候特别明显。
  3. tab的字体很小,不知道在哪里改。
  4. kitty的cpu比wezterm低一些。
  5. kitty和wezterm的功能不够完善。对于terminal,有密码管理的要求时,这2个都不好用,没法记住密码,很多时候没有用密钥认证,只能输入密码,ssh到服务器上正经干活时用secure crt或者mobaxterm(windows)。

都2022年了,wezterm还有这样的问题,真的无语。

kitty没有上述问题。我的配置: https://github.com/georgealbert/.config

连续按键没反应,我记得 macOS 下需要执行 default write 命令的。是不是这个原因?

其它问题没遇到。kitty 的资源占用控制不错,不过 wezterm 的功能感觉更多?有类似 tmux 的多路复用功能,tab 显示 ssh 上也能工作,不过我还没测试。有专门的 copy mode,kitty 下我没找到如何针对动态应用比如 btop 等复制。kitty 手册我非常粗略的扫了一下,没太搞清那个远程控制是什么功能,如何验证防止滥用的?否则还要用回 tmux,图片显示协议要被 tmux 生生限制住。

wezterm 也有一些小问题,比如光标显示挺丑,窗口控制功能较弱,自带字体导致二进制体积大等等,但基本还能忍受。

ssh 密码管理肯定有终端版应用的,不算很大痛点。你找找看看。

至于我的 wezterm 配置,因为好久没折腾了,我得找个地方传一下。wezterm config - Pastery

wezterm 还挺能刷存在感的。。。通常 arch 系两三天内就能得到更新。推荐入坑。

請問這是什麼程式的輸出結果?

btop htop 替代。