Con un modulo scritto in Python, quattro metodi e una trentina di righe di codice, realizzeremo un generatore di testo ASCII art in Python.
Presentazione
FIGlet è un programma dei primi anni ’90 per creare grandi scritte su terminale a partire dal testo ordinario, una forma di ASCII Art. Prende il nome dalle iniziali degli ideatori Frank, Ian e Glen.
Possiamo vedere alcuni esempi dei font supportati dalla applet nel relativo link.
Da allora, l’applicazione è stata portata anche su Python, utilizzando l’omonimo modulo figlets.
Oggi vedremo come utilizzarlo.
Uso
Il modulo è documentato nel link di pypi. Come sempre, i più curiosi potranno spulciare il sorgente per capire come funziona.
Il nostro programma, invece, è interamente contenutio In un file chiamato figlet.py che prevede zero o due argomenti della riga di comando:
- Zero se l’utente desidera visualizzare il testo in un carattere casuale.
- Due se l’utente desidera visualizzare il testo in un font specifico, nel qual caso il primo dei due dovrebbe essere -f o –font, e il secondo dei due dovrebbe essere il nome del font.
Una volta lanciato, il programma richiede all’utente una stringa di testo, per stampare quel testo nel font esteso desiderato.
Se l’utente fornisce due argomenti della riga di comando, e il primo non è -f o –font o il secondo non è il nome di un font, il programma esce tramite sys.exit con un messaggio di errore.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
import sys from pyfiglet import Figlet import random def error(): print("Invalid usage") sys.exit(1) if len(sys.argv) in [1, 3]: # Instantiate an object figlet = Figlet() # and copy the font list in a list of fonts FontList = figlet.getFonts() f = "" # 2 parameters if len(sys.argv) == 3: if sys.argv[1] in ["-f", "--font"]: f = sys.argv[2] if f not in FontList: error() else: # len(argv) == 1, load a random font a = random.randint(0, len(FontList) - 1) f = FontList[a] s = input("Input: ") # Get the name of the font from argv[1] figlet.setFont(font=f) print(figlet.renderText(s)) else: error() |
Installazione
E’ possibile installare pyfiglet con il comando:
1 |
pip install pyfiglet |
La documentazione per pyfiglet non è sempre molto chiara, ma potremo usare il modulo come segue:
1 2 3 |
from pyfiglet import Figlet figlet = Figlet() |
È quindi possibile ottenere un elenco di caratteri disponibili con codice come questo:
1 |
figlet.getFonts() |
Per impostare il carattere occorre definire f, il nome del font passato come stringa:
1 |
figlet.setFont(font=f) |
Per generare output in quel font usiamo il metodo render(s), in cui s è la stringa di testo da inviare:
1 |
print(figlet.renderText(s)) |
Lancio
Vediamo di seguito una serie di esempi di testo in ASCII Art generati con questo semplice programma in Python.
Link utili
- Pagina dei font di esempio
- Download del modulo
- Audio: Catch-it (Coma Media)
- Software (GIT Repository)
Join our groups on Telegram…