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.