[C/bash] Linux - Cambiare font del terminale da terminale

Stato
Discussione chiusa ad ulteriori risposte.

11tharmer

Utente Silver
2 Febbraio 2009
3
0
0
56
Salve a tutti, uso Ubuntu 9.04 con gnome
Ho un piccolo problema ( poi ovviamente non so se effettivamente sia grosso ), vorrei eseguire un programma in C del quale l'output sia con un Font personalizzato, con un esempio mi spiego meglio:
Il terminale ha come font standard Monospace voglio eseguire il programma con font Nimbus Roman e alla fine ripristinare Monospace.
Non credo che esistano librerie col C che permettano di fare ciò quindi stavo pensando, se dalle preferenze del profilo posso cambiare il font forse si puo fare anche con qualche comando da shell, di conseguenza con la funzione system potrei lanciare i comandi necessari all'avvio del programma e ripristinare come era prima alla fine.

Oppure esistono metodi alternativi? googlando in giro non sono riuscito a trovare nulla...
Grazie a tutti in anticipo
 
Beh effettivamente farlo via codice non è proprio "immediato" (anche se non dovrebbe essere niente di astronomico): avrai bisogno di ioctl e in particolare GIO_FONT/PIO_FONT (linux/kd.h) che probabilmente non sarà proprio una cosa documentatissima...
In alternativa potresti richiamare setfont con una fork/exec* (o se proprio ci tieni una system :/).

N.B.
La roba sopra cambierà tutto il terminale, anche quello che è già stato stampato, quindi non ti aspettare di vedere "pezzi" scritti in un modo e "pezzi" scritti in un altro. Inoltre non sono sicuro che funzioni nei terminali virtuali (anzi...sono abbastanza sicuro del contrario) ...
 
Infatti a me interessa che ciò avvenga in un terminale virtuale alla fine, per il font "spezzettato" non è un problema, ho semplicemente bisogno che un certo programma in C venga eseguito utilizzando un font diverso da quello standard. ho provato setfont, oltre che a non funzionare non serve per cambiare il "font" ma cambia la mappatura e utilizza alfabeti diversi, inoltre non legge i tipi di file *.ttf ma solo set di caratteri che è una cosa diversa.. per quella libreria che dici non c'e un piffero di documentazione (per il momento, devo cercare più approfonditamente) :(

kama ti ringrazio comunque per avermi dedicato 5 minuti della tua vita :)
 
ioctl&co fanno la stessa cosa di setfont (credo sia esattamente ciò che usa setfont), che è vero che non legge i ttf, ma è il massimo che si possa fare in consolee.
Se a te però interessa un terminale virtuale dovresti provare a guardare nella documentazione del programma che intendi usare...
 
Il problema è che lo devo fare io :) Provo ad aggiungere elementi, devo realizzare la grafica di un gioco, e devo utilizzare le ncurses, siccome con i caratteri standard la grafica lascia moolto a desiderare e non posso fare ciò che voglio, pensavo che realizzando un True type font personalizzato apposta per la grafica potevo deviare il problema. Ad esempio mappare i caratteri in modo tale che alla P corrispondesse una stellina, e così via... a meno che non posso fare questo tipo di disegni con le ncurses direttamente. (ipotesi che vedono l'utilizzo del c++ no, C only).
 
Usa ncursesw e divertiti con l'unicode.

Oppure hai semplicemente sbagliato approcio per la cosa.

E non ho capito le parentesi "(ipotesi che vedono l'utilizzo del c++ no, C only)".
 
Stato
Discussione chiusa ad ulteriori risposte.