Compose map

Alejandros Diamandidis adia at egnatia.ee.auth.gr
Thu May 10 12:48:51 EEST 2001


On Wed, May 09, 2001 at 02:09:29AM +0100, Konstantinos Pistiolis wrote:
> Ναί αλλά δεν ξέρω αν θεωρούνται ίδιοι από τους
> επεξεργαστές κειμένου. Επίσης, θα προτιμούσες να είχες
> μόνο απλά (όχι εκτεταμένα) ελληνικά στην κονσόλα σου.
>
> Παρακαλώ όποιον μπορεί να απαντήσει: δυο ισοδύναμοι
> unicode χαρακτήρες είναι ίδιοι ή απλά απεικονίζονται
> το ίδιο;

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

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

Ακολουθούν οι τεχνικές λεπτομέρειες της λύσης όπως τις καταλαβαίνω:

Στο Unicode ορίζονται οι μορφές κανονικοποίησης C και D, και κανονικά οι
εφαρμογές πριν προσπαθήσουν να ερμηνεύσουν ένα κομμάτι κειμένου πρέπει να
το κανονικοποιήσουν. Αυτό *πρέπει* να γίνει, γιατί υπάρχουν πολλαπλοί
τρόποι να γραφτεί ένα γράμμα με τόνους και άλλα διακριτικά σημεία, και
όλοι είναι ισοδύναμοι. Στη μορφή κανονικοποίησης D (NFD) όλοι οι
μετασχηματισμοί κανονικής ισοδυναμίας (canonical equivalence mappings)
ακολουθούνται αναδρομικά, και στη συνέχεια οι συνδυαζόμενοι χαρακτήρες
(combining characters, περιλαμβάνουν τόνους και άλλα διακριτικά σημεία)
τοποθετούνται στην κανονική σειρά. Στη μορφή C (NFC) τα βήματα αυτά
ακολουθούνται από ένα βήμα επανασύνδεσης, κατά το οποίο για όσες
ακολουθίες ορίζεται συνδυασμένος χαρακτήρας, ο βασικός χαρακτήρας
συνδυάζεται με τους υπόλοιπους. Καλό είναι το κείμενο να αποθηκεύεται σε
κάποια μορφή κανονικοποίησης. Ας πούμε, στην XML καθώς και για τα ονόματα
αρχείων προτείνεται η NFC.

(Ελπίζω οι μεταφράσεις των όρων να είναι κατανοητές... Ειδικά το
"combining characters" δε μου κάθεται και πολύ καλά ως "συνδυαζόμενοι
χαρακτήρες.)

Ολα τα παραπάνω ορίζονται στο Unicode και αναπτύσσονται εκτενώς στο
Unicode Standard Annex #15:

http://www.unicode.org/unicode/reports/tr15/

Ένα παράδειγμα:

Το άλφα με ψιλή και οξεία υπάρχει ως βασικός χαρακτήρας (U+1F04). Αυτή
είναι η μορφή NFC. Μπορεί όμως και να γραφτεί ως άλφα ακολουθούμενο από
ψιλή και οξεία ξεχωριστά (<U+03B1, U+0313, U+0301>, μορφή NFD), ή ακόμα
και άλφα με ψιλή ακολουθούμενο από οξεία (<U+1F00, U+0301>). Δε θα ήταν
πρακτικό αυτές οι τρεις μορφές να απεικονίζονται ή να αντιμετωπίζονται
διαφορετικά! Ο ίδιος μηχανισμός που εξασφαλίζει την ισοδυναμία τους,
εξασφαλίζει και την ισοδυναμία των "χαρακτήρων με τόνο" και "χαρακτήρων με
οξεία".

Αλέξανδρος

-- 
Alejandros Diamandidis * adia at egnatia.ee.auth.gr



More information about the I18ngr mailing list