Setidaknya untuk xterm
, Anda dapat mengubah font saat ini dengan mencetak escape sequence. Sintaksnya adalah ESCAPE ] 50 ; FONTNAME BEL
.
Ini (versi singkat dari) skrip yang saya gunakan untuk ini; Saya menyebutnya xfont
(yang asli memiliki lebih banyak pemeriksaan kesalahan):
#!/usr/bin/perl
use strict;
use warnings;
print "\e]50;@ARGV\a";
Saya tidak tahu emulator terminal lain mana yang mengenali urutan ini. Secara khusus, saya menemukan bahwa itu tidak berfungsi di bawah screen
, meskipun screen
sesi dalam xterm
jendela.
Perhatikan bahwa Anda harus menentukan nama font ("10x20"
, "9x15"
), bukan ukurannya.
EDIT:Saya harus lebih memperhatikan tag. Di C++, itu akan menjadi seperti:
std::cout << "\x1b]50;" << font_name << "\a" << std::flush;
UPDATE:Dengan xterm
, ini tidak akan berfungsi jika Anda menggunakan font TrueType. Juga, Dúthomhas menyarankan dalam komentar:
Saya tahu ini sudah tua, tetapi semua string terminfo harus dicetak menggunakan
putp()
[atautputs()
], bahkan di C++.
putp( (std::string{ "\33]50;" } + font_name + "\a").c_str() );
Yang terbaik yang dapat Anda lakukan adalah menggunakan huruf tebal. Terminal mengemulasi terminal berbasis teks nyata sehingga tidak mendukung font yang berbeda sekaligus.