2011-08-16 46 views
7

Estoy haciendo un pequeño proyecto para divertirme en C++ (en Ubuntu 11.04) y el programa está basado en texto (todo en el terminal Gnome). Estoy usando la biblioteca ncurses para cambiar el color de la fuente, pero también quiero imprimir texto de diferentes tamaños en la terminal, y no puedo encontrar la manera de hacerlo con ncurses. ¿Hay alguna manera de hacer esto (quizás con ncurses o con una biblioteca diferente)? Idealmente, me gustaría que sea independiente de la terminal, pero si es una solución que solo funciona en Gnome, o solo funciona en Ubuntu, o alguna otra restricción como esa, ¡eso es mejor que nada!Cambiar tamaño de fuente del terminal con C++

Gracias por su ayuda como siempre.


He intentado con la sugerencia de Keith Thompson, pero no pude hacerlo funcionar. Aquí está mi código:

cout << "\x1b]50;" << "10x20" << "\a" << flush; 
cout << "test"; 

Simplemente aparece como el mismo tamaño de fuente especificado en las preferencias del terminal. Estoy usando: GNOME Terminal 2.32.1 si eso ayuda!

Respuesta

7

Al menos para xterm, puede cambiar la fuente actual imprimiendo una secuencia de escape. La sintaxis es ESCAPE ] 50 ; FONTNAME BEL.

Aquí hay (una versión abreviada de) un script que uso para esto; Yo llamaría xfont (el verdadero tiene más de comprobación de errores):

#!/usr/bin/perl 

use strict; 
use warnings; 

print "\e]50;@ARGV\a"; 

no sé qué otros emuladores de terminal reconocen esta secuencia. En particular, me parece que no funciona en screen, incluso si la sesión screen está en una ventana xterm.

Tenga en cuenta que se tiene que especificar el nombre de la fuente ("10x20", "9x15"), no su tamaño.

EDITAR: Debería prestar más atención a las etiquetas. En C++, sería algo así como:

std::cout << "\x1b]50;" << font_name << "\a" << std::flush; 
+0

gracias por su rápida respuesta. Tu respuesta parecía prometedora, pero no puedo hacer que funcione: /. Quizás me estoy perdiendo algo básico. – navr91

+0

Quizás el terminal Gnome no reconozca la misma secuencia de escape. Intente ejecutar una ventana xterm ('xterm &') y pruébelo desde allí. Ejecute 'xlsfonts' para obtener una lista de fuentes disponibles (hay varios miles en mi sistema). O 'xlsfonts | egrep '^ [0-9] + x [0-9] + $' 'para obtener una lista de nombres de fuentes WIDTHxHEIGHT (tengo 14 de ellas). Si funciona en xterm pero no en terminal Gnome, debe haber una solución específica de Gnome. (O puede que no sea posible; si Gnome implementó esta funcionalidad, esperaría que usara la misma sintaxis que 'xterm'.) –

+0

No pude hacer que funcione en xterm tampoco: /. Incluso probé tu ejemplo de Perl: 'print" \ e] 50; 10x20 \ a "; print "test"; 'y la fuente era del mismo tamaño en gnome y xterm. Tal vez esto es algo que ha cambiado recientemente. ¿En qué OS/terminal ejecuta su sistema xfont? – navr91

1

Lo mejor que puede hacer es usar negrita. Terminal emula una terminal real basada en texto, por lo que no admite diferentes fuentes a la vez.

Cuestiones relacionadas