Изменение размера шрифта терминала с помощью C++


Я делаю небольшой проект для развлечения на C++ (в Ubuntu 11.04), и программа основана на тексте (все в терминале Gnome). Я использую библиотеку ncurses для изменения цвета шрифта, но я также хочу печатать текст разного размера на терминале, и не могу понять, как это сделать с ncurses. Есть ли способ сделать это (возможно, с помощью ncurses или с помощью другой библиотеки)? В идеале, я бы хотел, чтобы он был независимым от терминала, но если это решение работает только в Gnome или только в Ubuntu, или какое-то другое ограничение вроде этого, тогда это лучше, чем ничего!

Спасибо за вашу помощь, как всегда.


Я попробовал предложение кита Томпсона, но не смог заставить его работать. Вот мой код:

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

Он просто отображается как тот же размер шрифта, указанный в настройках терминала. Я использую: GNOME Terminal 2.32.1, если это поможет!

2 7

2 ответа:

По крайней мере для xterm можно изменить текущий шрифт, напечатав escape-последовательность. Синтаксис - ESCAPE ] 50 ; FONTNAME BEL.

Вот (сокращенная версия) сценария, который я использую для этого; я называю его xfont (реальный имеет больше проверки ошибок):

#!/usr/bin/perl

use strict;
use warnings;

print "\e]50;@ARGV\a";
Я не знаю, какие другие эмуляторы терминалов распознают эту последовательность. В частности, я нахожу, что он не работает под screen, Даже если сеанс screen находится в окне xterm.

Обратите внимание, что вы должны указать имя шрифта ("10x20", "9x15"), не его размер.

EDIT: я должен уделять больше внимания тегам. В C++ это будет что-то вроде:

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

Лучшее, что вы можете сделать, это использовать жирный шрифт. Терминал эмулирует реальный текстовый терминал, поэтому он не поддерживает разные шрифты сразу.