使用C ++更改终端字体大小

问题描述 投票:8回答:2

我正在C ++(在Ubuntu 11.04中)做一个有趣的小项目,并且该程序是基于文本的(都在Gnome终端中)。我正在使用ncurses库来更改字体颜色,但我也想在终端上打印不同大小的文本,并且无法弄清楚如何使用ncurses来实现。有没有办法做到这一点(也许使用ncurses或使用其他库)?理想情况下,我希望它是与终端无关的,但是,如果它是仅在Gnome中工作的解决方案,或者仅在Ubuntu中工作,或者类似的其他限制,那总比没有好!

感谢您一如既往的帮助。


我尝试了基思·汤普森(Keith Thompson)的建议,但未能成功。这是我的代码:

cout << "\x1b]50;" << "10x20" << "\a" << flush;
cout << "test";

它只是显示为终端首选项中指定的相同字体大小。我正在使用:GNOME Terminal 2.32.1是否有帮助!

c++ linux terminal ncurses
2个回答
8
投票

至少对于xterm,您可以通过打印转义序列来更改当前字体。语法为ESCAPE ] 50 ; FONTNAME BEL

这里是我用于此目的的脚本的缩写;我称它为xfont(实际的错误检查更多):

#!/usr/bin/perl

use strict;
use warnings;

print "\e]50;@ARGV\a";

我不知道还有哪些其他终端仿真器可以识别此序列。特别是,我发现即使screen会话位于screen窗口中,它也无法在xterm下运行。

注意,您必须指定字体("10x20""9x15")的名称,而不是其大小。

编辑:我应该更加注意标签。在C ++中,它将类似于:

std::cout << "\x1b]50;" << font_name << "\a" << std::flush;

更新:使用xterm,如果您使用的是TrueType字体,则此功能将无效。另外,Dúthomhas在评论中建议:

我知道这很旧,但是所有terminfo字符串都应使用putp()[或tputs()],即使在C ++中也是如此。

putp( (std::string{ "\33]50;" } + font_name + "\a").c_str() );


1
投票

最好的办法是使用粗体。终端模仿真实的基于文本的终端,因此它一次不支持不同的字体。

© www.soinside.com 2019 - 2024. All rights reserved.