Al menos para xterm , puede cambiar la fuente actual imprimiendo una secuencia de escape. La sintaxis es ESCAPE ] 50 ; FONTNAME BEL .
Aquí hay (una versión abreviada de) un script que uso para esto; Yo lo llamo xfont (el real tiene más comprobación de errores):
#!/usr/bin/perl
use strict;
use warnings;
print "\e]50;@ARGV\a";
No sé qué otros emuladores de terminal reconocen esta secuencia. En particular, encuentro que no funciona bajo screen , incluso si el screen la sesión está en un xterm ventana.
Tenga en cuenta que debe especificar el nombre de la fuente ("10x20" , "9x15" ), no su tamaño.
EDITAR:Debería prestar más atención a las etiquetas. En C++, sería algo como:
std::cout << "\x1b]50;" << font_name << "\a" << std::flush;
ACTUALIZACIÓN:Con xterm , esto no funcionará si está utilizando fuentes TrueType. Además, Dúthomhas sugiere en un comentario:
Sé que esto es antiguo, pero todas las cadenas terminfo deben imprimirse usando putp() [o tputs() ], incluso en C++.
putp( (std::string{ "\33]50;" } + font_name + "\a").c_str() );
Lo mejor que puedes hacer es usar una fuente en negrita. Terminal emula una terminal real basada en texto, por lo que no admite diferentes fuentes a la vez.