Usare gli script Python in FontForge

Se abbiamo delle lettere dell’alfabeto salvate come immagini in file diversi e vogliamo trasformarle in glifi di un font con FontForge il procedimento è molto semplice. Basta aprire il programma, aprire la finestra del glifo su cui vogliamo lavorare, ad esempio la lettera A, poi cliccare su Importa, scegliere l’immagine e premere Ok. L’immagine viene caricata nel livello di sfondo. Possiamo poi cliccare sul menù Elemento, infine su Autotrace. A questo punto il programma in automatico rileva i contorni della lettera e fissa i relativi punti di controllo. Abbiamo così un glifo che può essere visualizzato sia sul tabellone che nella finestra delle metriche.

Ripetere la stessa operazione per tutto l’alfabeto, maiuscolo e minuscolo, e per i segni di interpunzione ovviamente è un lavoro molto ripetitivo. Non può essere automatizzato? In realtà sì. FontForge ha un suo modulo per eseguire istruzioni in linguaggio Python.

Il terminale di Python dal quale si può accedere a questa funzione si chiama, in Windows, ffpython.exe e sta nella cartella FontForgeBuilds/bin.

La procedura di base è questa.

Prima di tutto bisogna importare la libreria con

import fontforge

Poi si crea un font vuoto con

font=fontforge.font()

Poi si prende un carattere, per esempio la A con

char=font.createMappedChar("a")

Si importa l’immagine con

char.importOutlines("C:\\Users\\...\\A.png")

ovviamente mettendo al posto dei puntini l’indirizzo in cui si trova il file con l’immagine che si vuole caricare.

Si avvia l’autotrace con

char.autoTrace()

(attenzione alle maiuscole).

Infine si può salvare l’intero progetto con

font.save(“C:\\Users\\...\\Nuovo_font.sfd”)

A leggere quelle poche briciole di tutorial che si trovano sul web, sarebbe facile inserire tutte queste istruzioni in un file e farlo partire. In realtà siccome il mio interprete Python non riconosce l’esistenza di FontForge, mi è toccato trovare un sistema alternativo per attivare lo script. In mancanza di istruzioni chiare, ho risolto così. Scrivo il codice normalmente usando Idle, in maniera tale che le varie parole sono colorate, ma poi lo eseguo da terminale, cioè inserisco a parte nel prompt dei comandi l’istruzione

ffpython nome_file.py

Ovviamente il sistema operativo deve riconoscere il comando ffpython, ossia bisogna inserire l’indirizzo della cartella nella variabile path che si trova tra le Proprietà di Questo Pc, in Impostazioni Di Sistema Avanzate, scheda Avanzate, pulsante Variabili D’Ambiente, riquadro Variabili Dell’Utente (se non c’è bisogna crearla nuova e poi aggiungere il valore, ossia l’indirizzo della cartella dell’ffpython di FontForge).

In questo modo posso controllare gli eventuali messaggi di errore che vengono fuori. In un secondo momento, finito il debug, posso anche trovare un sistema per eseguire lo script con un doppio click: ad esempio ci aggiungo una estensione fittizia (ad esempio .ffpy), ci clicco sopra, e quando il sistema operativo mi chiede con quale programma aprirlo vado a cercare ffpython nell’apposita cartella. Ovviamente aggiungo la spunta nella casella che chiede se usare sempre lo stesso programma per aprire il file, così non dovrò ripetere la trafila una seconda volta. Purtroppo questo sistema in caso di errore mi chiude la finestra al volo senza farmi leggere quale è il problema. Inoltre è difficilmente accessibile da Idle, che disattiva tutti i colori dalle parole, rendendo difficile la manutenzione.

Comunque, l’importante è che il sistema funzioni: a questo punto basta impostare un ciclo for, ad esempio, per ripetere la stessa operazione di autotracing per tutte le immagini contenute in una certa cartella e inserirle quindi come glifi nelle rispettive posizioni. Dopodiché lavoro a mano sui dettagli (ad esempio l’arrotondamento a intero, eccetera. Ma anche qui si potrebbe automatizzare).

Per chi non è pratico è un po’ laborioso, ma una volta capito come funziona, si possono digitalizzare quanti alfabeti si vuole in un attimo e senza nessuna fatica (beh, qui ho esagerato; diciamo che ho semplificato una parte del lavoro; non basta avere le forme delle lettere per ottenere un font funzionante; c’è da sistemare le metriche, il kerning, eccetera. Insomma è ancora parecchio lavoro). 

Commenti

Post più popolari