Zumindest für xterm , können Sie die aktuelle Schriftart ändern, indem Sie eine Escape-Sequenz drucken. Die Syntax ist ESCAPE ] 50 ; FONTNAME BEL .
Hier ist (eine abgekürzte Version) ein Skript, das ich dafür verwende; Ich nenne es xfont (der echte hat mehr Fehlerprüfung):
#!/usr/bin/perl
use strict;
use warnings;
print "\e]50;@ARGV\a";
Ich weiß nicht, welche anderen Terminalemulatoren diese Sequenz erkennen. Insbesondere finde ich, dass es unter screen nicht funktioniert , auch wenn die screen Sitzung befindet sich in einem xterm Fenster.
Beachten Sie, dass Sie den Namen angeben müssen der Schriftart ("10x20" , "9x15" ), nicht seine Größe.
EDIT:Ich sollte Tags mehr Aufmerksamkeit schenken. In C++ wäre das etwa so:
std::cout << "\x1b]50;" << font_name << "\a" << std::flush;
UPDATE:Mit xterm , funktioniert dies nicht, wenn Sie TrueType-Schriftarten verwenden. Außerdem schlägt Dúthomhas in einem Kommentar vor:
Ich weiß, das ist alt, aber alle Termininfo-Strings sollten mit putp() gedruckt werden [oder tputs() ], sogar in C++.
putp( (std::string{ "\33]50;" } + font_name + "\a").c_str() );
Das Beste, was Sie tun können, ist, Fettschrift zu verwenden. Terminal emuliert ein echtes textbasiertes Terminal, sodass es nicht gleichzeitig verschiedene Schriftarten unterstützt.