pump da font

Page 1

Albertoni Jacopo Borghesi Valentino Crippa Michele Lorenzo


Il progetto

L’idea di partenza è stata quella di creare una font che abbia la capacità di gonfiarsi a piacimento.

Font di partenza: VAG Rounded Light

ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 1234567890 Alla font originale abbiamo accorciato ascendenti e discendenti e aumentato il colore. In alcuni casi abbiamo modificato la forma della lettera stessa. VAG Rounded Light modificato

ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 1234567890


Schizzi


Font finale

Font alla massima “gonfiezza”

ABCDEFGHIJKLM NOPQRSTUVWXYZ abcdefghijklm nopqrstuvwxyz 1234567890


Printing Segment Pen

Una volta definiti la font di partenza e la font di arrivo, tramite la printing segment pen abbiamo generato il codice che ci permette di ridisegnare i glifi importati da illustrator in fontlab. #FLM: PrintingSegment Pen from robofab.world import CurrentFont, CurrentGlyph from robofab.pens.pointPen import PrintingSegmentPen font = CurrentFont() glyph = CurrentGlyph() pen = PrintingSegmentPen() glyph.draw(pen)


Approccio 1 maniglie di controllo

Eseguire un offset del tracciato di un valore comune per tutto l’alfabeto e gestire singolarmente le maniglie di controllo di ciascun punto.

Curve

Procedura Individuare le diverse tipologie di curve che compongono la font: Viene effetuato l’offset tra- Vengono spostate le maniglie slando il tutto di un generico di controllo rimanendo sulla vettore a. retta che passa per il punto.

Angoli

Parametrizzazione h1 e h2 sono noti, si deve trovare il valore di z1 in funzione di z2 h1 h2 = z1 z2

In questo tipo di curve le Viene effetuato l’offset tra- Infine viene traslato solo il maniglie giacciono sulle slando il tutto di un generico punto di un valore a piacere linee stesse. vettore a. b lasciando fisse le maniglie.

z2 =

h2 * z1 |Ybezier1-Ypt| * z1 = h1 |Ybezier2-Ypt|

Rette

Trasformazione parametrica curveto ((bezier1+a),(bezier2+a),(punto+a+b))

Si trasla il punto e si aprono le maniglie

z1 = parametro


Approccio 2 percorso rettilineo dei punti

Individuare la retta che passa per i due punti estremi (massima e minima “gonfiezza”) e far spostare il punto sulla retta stessa. Procedura Ricalcare tramite la funzione PrintingSegmentPen dei due estremi della font, gonfio e sgonfio. Individuare la retta che passa per i due punti, questa retta indica il percorso che il punto farà nel gonfiarsi, stessa cosa viene fatta per le maniglie di controllo. Ora è possibile calcolare il coefficiente angolare m di ciascuna retta: ∆y m= ∆x

es. variabile = 50 ∆xmax = 100 ∆ymax = 50 m = 1/2 ptA xA = x + 0.5 * 100 y aumenta della metà di x

Logica di programmazione I due glifi vengono ricalcati e memorizzati in due matrici ordinate aventi la seguente struttura: [bezier1,bezier2,pt]

* il numero di pt

in una terza matrice calcolo le differenze tra max e min [(∆x,∆y) bezier1, (∆x,∆y) bezier2, (∆x,∆y) pt] tramite ciclo disegno la curva

Possiamo gestire la font inserendo una variabile che va da 0 a 100 che indicherà la percentuale di spostamento di ciascun punto e ciascuna maniglia.

curveTo (xbezier1 + rigonfiamento% * ∆xbezier2, ybezier1 + rigonfiamento% * ∆ybezier2)


Approccio scelto Per fortuna c’è interpolate!

Abbiamo adattato le font in base ai vincoli della funzione interpolate. La funzione è compatibile e funzionante con glifi che hanno lo stesso numero di punti, stesso punto di partenza e stessa direzione. Funziona con glifi composti da più tracciati

Abbiamo eliminato o aggiunto punti in modo che il loro numero fosse uguale per entrambi i tracciati.

I punti di partenza devono essere nella stessa posizione

La funzione non funziona se i due glifi sono composti da un diverso numero di tracciati

Se i glifi sono composto da più tracciati il loro ordine deve essere il medesimo.

# interpolate factor = 0.5 f[“C”].interpolate(factor, f[“C.alt1”], f[“C.alt2”]) f[“C”].update()

Gestione kerning # sistemo le coppie problematiche: kerning = f.kerning newKerning = {} newKerning[(‘V’,’A’)] =-kernSgonfio+((kernSgonfio - kernGonfio)*factor)


mmm sssss fffff xxx

gggggg

nnnnnGGGGG

tttt aaaaaa

pppppp QQQQQQ

jjj


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.