Изменение размера шрифта терминала с помощью 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 ответа:
По крайней мере для
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;