Τετάρτη 28 Οκτωβρίου 2009

ΑνθυποMetafont

(Ανάρτηση για geeks)

Λοιπόν, εδώ και καιρό ήθελα να φτιάξω μια γραμματοσειρά που να χρησιμοποιώ σε σχέση με υπότιτλους. Στην πρόσφατη εκδρομή μας στην Κόνιτσα, αφού δεν είχα και πρόσβαση στο δίκτυο, ξεκίνησα να τη φτιάχνω. Όπως ίσως ξέρετε, η δημιουργία μιας γραμματοσειράς δεν είναι κάτι που γίνεται έτσι για την πλάκα σου, θέλει αρκετή αφιέρωση χρόνου. Εγώ, ας πούμε, είχα από νωρίς στο μυαλό μου μια ιδέα για το σχήμα των γραμμάτων, αλλά η ακριβής τοποθέτηση των σημείων ελέγχου είναι μια δύσκολη διαδικασία, ειδικά όταν θέλεις να κάνεις και εφαπτόμενες (π.χ. το «δ» στη γραμματοσειρά μου) ή διάφορα άλλα περίτεχνα.

Αυτό που έκανα στην πορεία, ήταν να φτιάξω δύο σκριπτάκια σε Python όπου καλούσα συναρτήσεις για να μου υπολογίσει τομές, off-curve points κτλ σύμφωνα με τους κανόνες που ήθελα, αλλά και πάλι, έπεφτε πολύ copy-paste.

Έλεγα λοιπόν από μέσα μου: «τι ωραία που θα ήταν να μπορούσα να ενσωματώσω την Python στο ίδιο το fontforge.» Ε. Η χρονομηχανή του Guido είχε δουλέψει για πάρτη μου. Μια μέρα που ήθελα να επιλέξω το πρώτο σημείο του contour, πάτησα Ctrl-. όπως έγραφε δίπλα στο μενού. Αντί να επιλεγεί το πρώτο σημείο, μου άνοιξε dialog να γράψω εντολές, με γλώσσα να έχει προεπιλογή την Python. Συγκινήθηκα, δεν σας το κρύβω :)

Κατέβασα οδηγίες, που δεν ήταν σαφείς (ο τύπος που έχει κάνει το fontforge δεν ξέρει πολλά από Python, μόνο τα στοιχειώδη για να γράφει πράγματα, και την ενσωμάτωση την έκανε απλώς ακολουθώντας τις σχετικές οδηγίες στο www.python.org, επειδή η δημιουργία δικής του scripting language αργούσε πολύ), αλλά με δοκιμή και λάθος, προχώρησα αρκετά. Το βασικότερο είναι πως τώρα πλέον, για να σχεδιάσω έναν χαρακτήρα, διαλέγω τα βασικά σημεία και τα υπόλοιπα τα ταΐζει η βιβλιοθήκη μου στο fontforge.

Παράδειγμα: όταν πατάω το Ctrl-., έχω μονίμως αυτές τις εντολές:

From Various


Οπότε, αν για παράδειγμα έχω το B ανοιχτό, φροντίζω να έχω φτιάξει σε ένα συγκεκριμένο αρχείο κάτι τέτοιο:

def B():
l= L(_l_top, _l_bottom)
s1= Stroke()
s1.add_points(
P('3r').lt,
P('8r'),
_B_hiPHI.midpoint(_O_top).at_x(_O_right).lt.lt.towards(P.A270),
_B_hiPHI.towards(P.A180),
_B_hiPHI.at_x(_l_right),
)
s2= Stroke()
s2.add_points(
_B_hiPHI.towards(P.A0),
_B_hiPHI.midpoint(_O_bottom).at_x(_O_right).towards(P.A270),
_O_bottom.towards(P.A180),
_O_bottom.at_x(_l_bottom),
)
return l, s1, s2,


(Η ανεύρεση της σωστής συνάρτησης βάσει του υπό διόρθωση χαρακτήρα γίνεται αυτόματα, προφανώς.) Για κάποιους θα είναι πιο εύκολο το GUI, αλλά όταν ξέρω ακριβώς τι θέλω, μου είναι πιο εύκολο να το κάνω έτσι.

Ακολουθεί ένα δείγμα της παρούσας κατάστασης. Σημειώστε πως, εκτός από τον σχεδιασμό των χαρακτήρων, απαιτεί και πολύ χρόνο το kerning, δηλαδή οι ψιλοδιορθώσεις των αποστάσεων μεταξύ ζευγών γραμμάτων. Σκεφτείτε, ας πούμε, το γράμμα «Γ» ή το γράμμα «Τ» ακολουθούμενο από πεζό γράμμα, που αλλιώς τα γράφαμε στο χέρι κι αλλιώς τα έχουμε συνηθίσει από τις ξενόφερτες γραμματοσειρές.

From Various

1 σχόλιο:

  1. Ωραία δουλειά!!Σε παραδέχομαι...

    Το screenshot μου θύμισε τον Χάρρυ Κλυν στο σκετσάκι με τις απαγορευμένες λέξεις (από τον δίσκο πατάτες νομίζω) που ήταν

    Αετος, Αδράχτι, Λιμενοφύλακας , Νυχοκόπτης, Μπρελόκ, Ανεμογκάστρι, Αβεσαλώωμ , Ιστιοπλόος και Χωρίστρα (sic!)

    ΑπάντησηΔιαγραφή

Φλυαρείτε.