Qualche giorno fa il buon Jimmac ha postato sul suo blog uno screencast che spiega il nuovo metodo “one canvas” per disegnare le icone, ideato nell’ambito del Progetto Tango.

La novità consiste nel fatto che i sorgenti delle icone non saranno più sparpagliati nelle varie cartelle e sottocartelle dipendenti dalle dimensioni e dal contesto, insieme alle png renderizzate, ma verranno tutti contenuti in una singola cartella “svg” nella radice del tema (eventualmente anche tutti nello stesso file!), facilitandone la manutenzione.

Un grosso vantaggio di avere le varie “taglie” nella stessa tela è quello di avere sempre una visione d’insieme, facilitando la consistenza tra le differenti dimensioni. La possibilità di avere più di un’icona nello stesso file, inoltre, permette una maggiore consistenza anche tra icone differenti con parti in comune (per esempio quelle dell’attività di rete) o che comunque hanno destinazioni simili.

Una volta approntati i sorgenti, uno script (attulmente in ruby, ma so che ce ne sono in lavorazione anche in altri linguaggi) si prende cura di estrarre le porzioni giuste, renderizzarle in png e posizionarle nelle cartelle appropriate.

I file ovviamente devono essere predisposti, perché lo script funzioni: per ogni icona deve esserci un livello che abbia la stringa “plate” nel nome, al cui interno devono essere due campi di testo con etichetta “context” e “icon-name”, e tanti rettangoli quante le taglie dell’icona che vogliamo fare, quindi in generale 256×256, 48×48, 32×32, 22×22 e 16×16; la taglia 24×24 viene generata aggiungendo un rettangolo più grande di un pixel per lato intorno alla 22×22.

Lo script analizza i file svg in cerca di questi dati ed esporta in png quello che trova nel perimetro dei rettangoli (che poi sarebbero quadrati…) in base alle loro dimensioni, nella sottocartella definita dal testo “context” e col nome definito dal testo “icon-name”.
Bisogna ricordarsi di etichettare i campi di testo quando si crea un nuovo livello, e di nascondere il livello “plate” quando si salva il file, altrimenti viene renderizzato anche quello.
Per ovviare a queste noie sono in sviluppo alcune modifiche a Inkscape che dovrebbero automatizzare il tutto, ma non le ho provate personalmente quindi non so dire di più.

Lo script può essere ottenuto dal repository git col seguente comando:

git clone git://users.freedesktop.org/~jimmac/tango-lib

Insieme allo script, nella cartella svg, si ottiene anche un comodo file svg di esempio.

Questo nuovo workflow ha delle ottime potenzialità; consiglio vivamente di provarlo a tutti i disegnatori di icone là fuori, Tango e non😉