Изменить размер шрифта терминала с помощью C ++ - PullRequest
7 голосов
/ 16 августа 2011

Я делаю небольшой проект для удовольствия на 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 голосов
/ 16 августа 2011

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

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

#!/usr/bin/perl

use strict;
use warnings;

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

Я не знаю, какие другие эмуляторы терминала распознают эту последовательность.В частности, я считаю, что он не работает под screen, даже если сеанс screen находится в окне xterm.

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

РЕДАКТИРОВАТЬ: я должен уделять больше внимания тегам.В C ++ это было бы что-то вроде:

std::cout << "\x1b]50;" << font_name << "\a" << std::flush;
1 голос
/ 16 августа 2011

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

...