我可以在ncurses中定义自己的自定义字符形状吗?

时间:2013-06-10 20:55:01

标签: c++ character-encoding customization ncurses

标题几乎说明了一切。曾几何时我13岁以下,我的老兄弟在BorlandPascal做了一件令我惊讶的事情。他定义了表[8] [8]的种类,其值为1和0,分别表示前景和背景。有几个这样的表,他可以以某种方式重新定义默认的ASCII字符在这些表中看起来像。我不知道它是如何完成的,但它确实有效。

我的问题是:我可以在ncurses中做类似的事情,如果我可以做怎么做呢?

2 个答案:

答案 0 :(得分:1)

简短的回答是否定的。 ncurses做的是生成由终端解释的ANSI escape codes。没有用于更改字体的代码。 (虽然已经有扩展,但没有常用的终端支持它们,也没有ncurses。)并且没有通过某种侧通道与终端通信来改变字体的通用方式。但在某些特定情况下可能存在各种方法。

如果你可以直接访问Linux控制台,例如你可以做各种各样的事情,就像在Borland Pascal中一样。但它可能会更加混乱而且不那么令人印象深刻。

答案 1 :(得分:1)

正如所选答案所解释的,NCurses无法渲染自定义字形。 ncurses仅通过转义代码(清除和重写行以实现交互性)来操纵终端屏幕状态

但是应该注意,很可能通过自定义字体在终端中使用自定义字形

这就是Powerline所做的(vim,tmux和朋友的流行终端UI状态行)https://github.com/powerline/fonts

通过修补字体,您可以将字形注入终端使用的现有字体,然后您可以通过ncurses访问和呈现任何其他字符。

当然这不是理想的解决方案,但是通过对字体的一些自动修补和仔细的测试,它可以构建一个使用自定义字形的应用程序 - 当你真正处于更具表现力的UI时比ncurses提供的工具可以提供。

进一步阅读:https://apw-bash-settings.readthedocs.io/en/latest/fontpatching.html