Almeno per xterm
, è possibile modificare il carattere corrente stampando una sequenza di escape. La sintassi è ESCAPE ] 50 ; FONTNAME BEL
.
Ecco (una versione abbreviata di) uno script che uso per questo; Lo chiamo xfont
(quello vero ha più controllo degli errori):
#!/usr/bin/perl
use strict;
use warnings;
print "\e]50;@ARGV\a";
Non so quali altri emulatori di terminale riconoscano questa sequenza. In particolare, trovo che non funzioni sotto screen
, anche se screen
la sessione è in un xterm
finestra.
Tieni presente che devi specificare il nome del font ("10x20"
, "9x15"
), non le sue dimensioni.
EDIT:dovrei prestare maggiore attenzione ai tag. In C++, sarebbe qualcosa del tipo:
std::cout << "\x1b]50;" << font_name << "\a" << std::flush;
AGGIORNAMENTO:Con xterm
, questo non funzionerà se utilizzi i caratteri TrueType. Inoltre, Dúthomhas suggerisce in un commento:
So che è vecchio, ma tutte le stringhe terminfo dovrebbero essere stampate usando
putp()
[otputs()
], anche in C++.
putp( (std::string{ "\33]50;" } + font_name + "\a").c_str() );
Il meglio che puoi fare è usare il carattere in grassetto. Il terminale emula il vero terminale basato su testo, quindi non supporta caratteri diversi contemporaneamente.