Magaz, The Greek Linux Magazine
Magaz Logo

True Type Fonts σε Linux: Γιατί και πως.

Κωνσταντίνος Κοτσόκαλης C.Kotsokalis@ece.ntua.gr
Δεκέμβριος 1998

Ένα από τα σημαντικότερα προβλήματα των χρηστών Linux έχει να κάνει με τα fonts (γραμματοσειρές) των X-Windows όσον αφορά τόσο στο localization (την δυνατότητα δηλαδή να διαβάζουμε/γράφουμε σε πολλές διαφορετικές γλώσσες, όσο και την εμφάνιση των γραμματοσειρών στην οθόνη μας αλλά και τις εκτυπώσεις μας συχνά. Στο κείμενο αυτό θα προσπαθήσουμε να δώσουμε κάποιες σχετικά εύκολες λύσεις στο πρόβλημα αυτό, προτείνοντας ένα τρόπο να χρησιμοποιούνται True Type fonts (τα fonts που χρησιμοποιούν και τα MS Windows). Το ζήτημα των γραμματοσειρών, του localization, του font rendering κλπ είναι ιδιαίτερα μεγάλο και δυσεπίλυτο και εγώ δεν έχω σημαντική γνώση επάνω σε αυτό. Ενδεχομένως στο κείμενο που ακολουθεί να υπάρχουν λάθη - ελπίζω όχι χονδροειδή -, εάν βρείτε τέτοια θα παρακαλούσα να με ενημερώσετε με mail στη διεύθυνση C.Kotsokalis@ece.ntua.gr.

Υπάρχουν δύο είδη γραμματοσειρών, τα scalable και τα bitmap fonts. Τα scalable μπορούν να αλλάζουν μεγέθη ανάλογα με τις απαιτήσεις της εκάστοτε εφαρμογής χωρίς να χάνουν την ποιότητά τους, ενώ δεν έχουν τυποποιημένα μεγέθη. Αντίθετα, τα bitmap fonts υπάρχουν σε συγκεκριμένα μεγέθη (π.χ. 8,10,12,14,16,18,20,24 κλπ points). Εάν λοιπόν εσείς επιθυμείτε να χρησιμοποήσετε ένα bitmap font με μέγεθος για παράδειγμα 40 ενώ το μέγεθος αυτό δεν ορίζεται στη συγκεκριμένη γραμματοσειρά, τότε το αποτέλεσμα θα είναι πολύ άσχημο. Αυτό που θα συμβεί είναι η απλή μεγέθυνση ή σμίκρυνση του αμέσως μικρότερου ή αμέσως μεγαλύτερου font στο επιθυμητό μέγεθος και αυτό που θα δείτε στην οθόνη σας θα είναι γεμάτο ``σκαλάκια'' και καθόλου ευχάριστο οπτικά.

Ο κόσμος του Unix γενικότερα αντιμετωπίζει αυτό το πρόβλημα. Οι γραμματοσειρές Type1 ήλθαν να το λύσουν όντας scalable fonts. Παρόλα αυτά, η ποιότητά τους δεν είναι τόσο καλή όσο των True Type fonts τα οποία είναι επίσης scalable. Αν λοιπόν θέλετε να έχετε την καλύτερη δυνατή ποιότητα για τα fonts των εφαρμογών που τρέχετε, ακολουθήστε τις παρακάτω συμβουλές. Πριν ξεκινήσουμε να τονίσω πως σε γενικές γραμμές τόσο οι Type1 όσο και οι TT γραμματοσειρές είναι εμπορικές - ενώ bitmap μπορείτε να βρείτε και free. Εάν έχετε αγοράσει τα MS Windows, μπορείτε να χρησιμοποιήσετε τα fonts που έρχονται μαζί με αυτά (Κατάλογος: \windows\fonts ή \winnt\fonts). Διαφορετικά μπορείτε να αγοράσετε TTF sets από οποιοδήποτε μαγαζί με software.

Αυτό που πρέπει αναγκαία να έχουμε, είναι ένα truetype engine. Ένα τέτοιο που κάνει πολύ καλά τη δουλειά του και είναι freeware, είναι το freetype. Προμηθευτείτε το από το http://www.freetype.org και κάντε compile σύμφωνα με τις οδηγίες που έχει μέσα... Είναι το κλασσικό ./configure; make; make install. Αφού γίνει αυτό το βήμα, πρέπει να εγκαταστήσετε έναν X11 Truetype font server. Ένας τέτοιος που είναι freeware και δουλεύει τέλεια στο Redhat 5.1 σύστημά μου είναι ο xfsft που βασίζεται στην freetype. Υπάρχει και ο xfstt που είναι ανεξάρτητος της freetype engine, αλλά δεν τον έχω δοκιμάσει ακόμα. Ο xfsft είναι αυτή τη στιγμή σε beta version αλλά αυτό δεν πρέπει να σας προβληματίζει. Μπορείτε να τον κατεβάσετε από τη διευθυνση ftp://ftp.dcs.ed.ac.uk/pub/jec/programs/xfsft/beta - βρείτε την πιο πρόσφατη έκδοση, παρτε την και κάντε compiling. Υπάρχει και ένα precompiled binary gia redhat 5.x (ουσιαστικα για glibc 2). Μέσα στα sources υπάρχουν και χρήσιμα readme files οπότε καλό είναι να τα έχετε κάπου και αυτά. Ένα τελευταίο που θα χρειαστείτε είναι το ttmkfdir ή το ttinst από το ftp://ftp.dcs.ed.ac.uk/pub/jec/programs/xfsft/contrib. Αφού έχετε πάρει όλα τα παραπάνω ακολουθείτε τα εξής βήματα:

  • Εγκατάσταση της freetype
  • Αντιγραφή των windows truetype fonts σε κάποιο directory, π.χ. /usr/X11R6/lib/X11/fonts/TTF. ΜΗΝ ΞΕΧΑΣΕΤΕ ΝΑ ΣΒΗΣΕΤΕ ΟΛΑ ΤΑ ΑΡΧΕΙΑ ΠΟΥ ΔΕΝ ΕΧΟΥΝ ΚΑΤΑΛΗΞΗ .TTF (ή .ttf :-))!!!
  • Εγκατάσταση του ttmkfdir ή του ttinst. Εγώ δοκίμασα το ttmkfdir. Γίνεται compiling με gcc -o ttmkfdir ttmkfdir.c -lttf και μετά στο directory /usr/X11R6/lib/X11/fonts/TTF τρέχετε ttmkfdir < fonts.scale
  • Εγκατάσταση του xfsft, π.χ. σαν /usr/local/bin/xfs. Πρέπει να φτιάξετε και ένα configuration file, π.χ. /usr/local/etc/xfs-conf.
Ένα sample configuration file είναι το παρακάτω:
clone-self = off
use-syslog = off

client-limit = 20

# Εδώ βάλτε το directory με τα ttfs.
catalogue = /usr/X11R6/lib/X11/fonts/TTF

error-file = /tmp/xfs.errors

# in decipoints
default-point-size = 120

# x,y
default-resolutions = 100,100,75,75

Στη συνέχεια προσθέστε στο rc.local του υπολογιστή σας ώστε να εκτελείται κάθε φορά που ξεκινάει, τη γραμμή:
/usr/local/bin/xfs -port 7100 -config /usr/local/etc/xfs-conf &
όπου έχετε προσαρμόσει κατάλληλα τα paths και filenames, ενώ μπορείτε να την εκτελέσετε και αυτή τη στιγμή ώστε να μη χρειάζεται reboot μέχρι να απολαύσετε τα αποτελέσματα :-). Εάν είστε σε περιβάλλον X εκτελέστε την εντολή
xset +fp tcp/localhost:7100; xset fp rehash
και προσθέστε και τις δύο εντολές στο .xinitrc file σας, ώστε να εκτελούνται κάθε φορά που ξεκινάτε τα X-windows:


xset +fp tcp/localhost:7100
xset fp rehash

Αμέσως μετά από τα παραπάνω και αν τα έχετε κάνει όλα σωστά, μπορείτε να εκτελέσετε:
xlsfonts | grep microsoft
για να δείτε όλα τα standard windows fonts τα οποία μπορείτε να χρησιμοποιήσετε κανονικά στις Χ-εφαρμογές σας! Προφανώς μπορείτε να χρησιμοποιήσετε έτσι και όποια άλλα fonts για windows, όπως τα ελληνικά της magenta, ή άλλα. Περιττό να πούμε ότι ο συνδυασμός TTF και ελληνικών στο Linux δίνει τεράστια ώθηση στη χρήση του από Έλληνες. Για το πως θα γραφετε ελληνικά - ενδεχομένως εκμεταλλευόμενοι τα True Type fonts - δείτε το grkbd του Γιάννη Τσακίρη ή τα grISOxkb του Δημήτρη Μπούρα κλπ.

CREDITS: Στον Αλέξη Ζάβρα για τα πολύτιμα URLs και τις γενικότερες κατευθύνσεις που μου έδωσε.


Valid HTML 4.01!   Valid CSS!