Disegnare con Python in Fontforge su Windows
Una normale installazione di Fontforge contiene anche uno speciale interprete Python che permette di eseguire in automatico tutte le operazioni. Ad esempio, avendo i disegni delle lettere suddivisi in vari file di immagine, sarebbe possibile inserirli in automatico sullo sfondo di ciascun glifo ed eseguire per ciascuno l’autotrace. In questo modo sarebbe possibile digitalizzare in un attimo un progetto cartaceo scannerizzato, senza dover ripetere lettera per lettera tutte le operazioni.
Il problema è che questo mondo è riservato soltanto ai programmatori e agli specialisti, e mancano sul web dei tutorial in grado di spiegare con semplicità ai non iniziati le basi di questo settore.
Proviamo a sbirciare un po’, da profani.
Sul computer, in Windows, al momento dell’installazione è stata creata una cartella chiamata FontForge Builds (di solito in Programmi, se non si sceglie diversamente).
Là dentro c’è una cartella bin. Nella quale troviamo tanti file, tra cui un ffpython.
Cliccandoci sopra, si apre un interprete nel quale possiamo digitare le istruzioni.
La prima che digitiamo è:
import fontforge
Questo ci permette di attivare tutti i comandi che ci consentono di “premere” i pulsanti di FontForge usando le righe in linguaggio di programmazione.
A questo punto possiamo creare un nuovo
font generico, che chiamiamo “carattere” (è il nome della
variabile; il nome del progetto si imposta poi con l’istruzione
carattere.fontname="nome_del_font"
):
carattere=fontforge.font()
In questo file ci aggiungiamo un glifo, ad esempio la lettera I maiuscola:
carattere.createChar(ord("I"),
"I")
Il primo parametro è il valore numerico del glifo, il secondo è il suo nome(che potremmo anche scegliere diverso).
A questo punto bisogna creare un oggetto che agisce come una penna per disegnare i vari tratti. Lo chiameremo “penna” (i nomi delle variabili a sinistra dell’uguale li possiamo scegliere a piacimento, le altre parole invece sono fisse nel linguaggio di programmazione).
penna=carattere["I"].glyphPen()
Andiamo nel punto da cui vogliamo cominciare, le cui coordinate nel piano del glifo sono: x=70, y=0.
penna.moveTo((70,0))
Ora chiediamo all’interprete di tracciare tre righe, una dopo l’altra
penna.moveTo((70,700))
penna.moveTo((170,700))
penna.moveTo((170,0))
Infine chiudiamo il contorno:
penna.closePath()
Arrivati a questo punto, salviamo il progetto:
font.save("C:\\User\\Utente\\Desktop\\prova.sfd")
(Sostituire tra le virgolette l’indirizzo del Desktop sul proprio computer. Il nome del file può essere scelto a piacimento. Di solito Windows non consente di salvare file nella cartella bin di Fontforge).
Se tutto è andato per il verso giusto, sul Desktop è comparso il progetto Fonforge chiamato prova.sfd.
Aprendolo col doppio click, vediamo che l’intero tabellone è vuoto, tranne la lettera I maiuscola dove abbiamo disegnato i quattro punti del contorno.
Per disegnare una linea curva abbiamo bisogno di un’altra funzione: curveTo()
Ad esempio, così possiamo creare il punto:
font.createChar(ord("."),"period")
pen=font["period"].glyphPen()
pen.moveTo((120,0))
pen.curveTo((95,0),(70,25),(70,50))
pen.curveTo((70,75),(95,100),(120,100))
pen.curveTo((145,100),(170,75),(170,50))
pen.curveTo((170,25),(145,0), (120,0))
pen.closePath()
La funzione curveTo prende tre argomenti: il primo è contiene le coordinate dell’estremità del segmento di controllo blu, il secondo quelle del punto di controllo viola, il terzo quelle dell’altro estremo della linea di contorno.
Questa dicitura ci sembra un po’ strana, perché nella finestra delle info di ciascun punto che possiamo usare in Fontforge vengono visualizzati i parametri dei segmenti blu e viola che fanno capo allo stesso punto, mentre qui stiamo parlando dei segmenti blu e viola che stanno agli opposti capi della stessa linea, e che quindi si riferiscono a punti diversi.
Anziché digitare le istruzioni una
alla volta possiamo inserire tutto in uno script, come se fosse un
normale programma in Python. Il problema è che questo modulo non fa
parte dell’interprete di Python, ma dell’interprete che viene
distribuito con FontForge.
Quindi come si fa ad eseguire lo script? Bisogna andare nel prompt e digitare da riga di comando la parola ffpython seguita dal nome del file che vogliamo eseguire (sempre che il percorso di ffpython sia stato aggiunto ai path di sistema, altrimenti bisogna digitare per intero l’indirizzo dell’interprete). In alternativa si potrebbe cambiare l’estensione del file in un suffisso libero, ad esempio .ff, ed associarlo tramite Apri Con all’eseguibile ffpython. In questo caso basta fare doppio click sullo script per farlo partire. La controindicazione è che visto che Idle non riconosce il formato, fa sparire tutti i colori dalle varie parti del codice, complicando un po’ il lavoro di debugging. Soprattutto, se non stiamo lavorando in riga di comando un eventuale messaggio di errore sparisce istantaneamente, rendendoci impossibile capire cosa è andato storto.
A questo indirizzo c’è tutta la documentazione necessaria ai programmatori, in lingua inglese, senza tutorial e con un unico esempio, in cui si apre un progetto esistente, si copiano in automatico tutte le maiuscole presenti e le si incolla in un progetto nuovo, a cui viene assegnato un nome e che viene salvato in un nuovo file.
Commenti
Posta un commento