Au moins pour xterm
, vous pouvez modifier la police actuelle en imprimant une séquence d'échappement. La syntaxe est ESCAPE ] 50 ; FONTNAME BEL
.
Voici (une version abrégée de) un script que j'utilise pour cela; Je l'appelle xfont
(le vrai a plus de vérification d'erreur):
#!/usr/bin/perl
use strict;
use warnings;
print "\e]50;@ARGV\a";
Je ne sais pas quels autres émulateurs de terminaux reconnaissent cette séquence. En particulier, je trouve que cela ne fonctionne pas sous screen
, même si le screen
la session est dans un xterm
fenêtre.
Notez que vous devez spécifier le nom de la police ("10x20"
, "9x15"
), pas sa taille.
EDIT :Je devrais faire plus attention aux balises. En C++, ce serait quelque chose comme :
std::cout << "\x1b]50;" << font_name << "\a" << std::flush;
MISE À JOUR :Avec xterm
, cela ne fonctionnera pas si vous utilisez des polices TrueType. De plus, Dúthomhas suggère dans un commentaire :
Je sais que c'est vieux, mais toutes les chaînes terminfo doivent être imprimées en utilisant
putp()
[outputs()
], même en C++.
putp( (std::string{ "\33]50;" } + font_name + "\a").c_str() );
Le mieux que vous puissiez faire est d'utiliser une police en gras. Le terminal émule un terminal textuel réel afin qu'il ne prenne pas en charge différentes polices à la fois.