Χρήση en_US.UTF-8 αντί el_GR.UTF-8 (Compose)

Simos Xenitellis simos.lists at googlemail.com
Tue Jun 19 21:18:10 BST 2007


Στις 16-05-2007, ημέρα Τετ, και ώρα 00:29 +0300, ο/η Αλέξανδρος
Διαμαντίδης έγραψε:
> * Simos Xenitellis [2007-05-09 12:38]:
> > Πράγματι, αν δει κανείς το αρχείο 
> > http://gitweb.freedesktop.org/?p=xorg/lib/libX11.git;a=blob_plain;f=nls/en_US.UTF-8/Compose.pre
> > υπάρχουν ακολουθίες για τη γραφή χαρακτήρων που είναι ανεξάρτητοι από
> > γλώσσες. (στο παραπάνω σύνδεσμο πρέπει να αλλάξετε την κωδικοποίηση του
> > Firefox σε Προβολή/Κωδικοποίηση Χαρακτήρων/Unicode (UTF-8).
> 
> Κάτι που θυμήθηκα σχετικά με το παραπάνω: εδώ και κάποια χρόνια (από
> το XFree86 4.3 νομίζω) δε χρειάζεται η προτελευταία στήλη... Για
> παράδειγμα, αντί για:
> 
> <dead_acute> <Greek_ALPHA>     	: "Ά"   U0386
> 
> αρκεί:
> 
> <dead_acute> <Greek_ALPHA>      : U0386
> 
> Το string μέσα στα εισαγωγικά, που εξαρτάται από το τρέχον locale, παράγεται
> αυτόματα από την Xlib.

Ack. Θα το διατηρήσω όμως μιας και δεν πειράζει, διότι το κάνει πιο
ευανάγνωστο, και επιτρέπει αναζητήσεις.

> > Όπως καταλαβαίνω, από το αρχείο 
> > http://gitweb.freedesktop.org/?p=xorg/lib/libX11.git;a=blob_plain;f=nls/el_GR.UTF-8/Compose.pre
> > χρειάζεται να πάρω μόνο το κομμάτι "Part 2", να αλλάξω το στυλ σε αυτό
> > που έχει ήδη το en_US.UTF-8, και να το προσθέσω το en_US.UTF-8. Είναι
> > έτσι;
> 
> Ναι, σωστά.

Κοιτώντας το παραπάνω αρχείο βλέπω ότι υπάρχει και Part 3,
XCOMM Part 3
XCOMM
XCOMM ISO 8859-7 (Greek) multi-key and dead key definitions extracted 
XCOMM and converted from the iso8859-7/Compose file.
Το κομμάτι αυτό περιλαμβάνει το μονοτονικό, ενώ το Part 2 είναι για το
πολυτονικό.

Έκανα μια σύγκριση μεταξύ των 
http://gitweb.freedesktop.org/?p=xorg/lib/libX11.git;a=blob_plain;f=nls/el_GR.UTF-8/Compose.pre
και
http://gitweb.freedesktop.org/?p=xorg/lib/libX11.git;a=blob_plain;f=nls/en_US.UTF-8/Compose.pre
όπου παρατηρώ ότι για 
1. το (σωστό) el_GR.UTF-8/Compose.pre υπάρχουν 1475 γραμμές για
ελληνικούς χαρακτήρες
2. το πιο παλιό en_US.UTF-8/Compose.pre υπάρχουν 2008 γραμμές για
ελληνικούς χαρακτήρες

Ωστόσο, για το en_US.UTF-8/Compose.pre, από τις 2008 γραμμές με
ελληνικούς χαρακτήρες, οι 365 είναι γραμμές με "combining_xxxxxx", όπως
<combining_acute> <Greek_ALPHA>         : "Ά"   U0386 # GREEK CAPITAL
LETTER ALPHA WITH TONOS
<combining_acute> <Greek_EPSILON>       : "Έ"   U0388 # GREEK CAPITAL
LETTER EPSILON WITH TONOS
<combining_acute> <Greek_ETA>           : "Ή"   U0389 # GREEK CAPITAL
LETTER ETA WITH TONOS

Όπως είναι τώρα, θεωρώ το κομμάτι για τα ελληνικά ως blob (αχταρμάς;) το
οποίο δεν πειράζω. Έχεις φτιάξει ένα πρόγραμμα εντολών σε Perl που να
δημιουργεί αυτό το blob,
http://hal.csd.auth.gr/~vvas/i18n/xkb/polytonic-compose.pl
Το πρόγραμμα εντολών polytonic-compose.pl παράγει 1028 γραμμές ενώ
upstream υπάρχουν τουλάχιστον 1400 τέτοιες γραμμές.

Μεταγλώττισα το GTK+ με το en_US.UTF-8/Compose.pre ως πηγή και είχα
σημαντικό πρόβλημα στη γραφή ελληνικών (πολυτονικό).
Μεταγλώττισα το GTK+ με το el_GR.UTF-8/Compose.pre ως πηγή και το
αποτέλεσμα ήταν πιο θετικό.
Συγκεκριμένα,
από το /etc/X11/xkb/symbols/gr:    

key <AD11> { [      dead_tilde,     dead_diaeresis, dead_macron     ] };
key <AD12> { [      dead_iota,      VoidSymbol,     dead_breve      ] };

key <AC10> { [      dead_acute,             dead_horn       ] };
key <AC11> { [      dead_grave,             dead_ogonek     ] };

το αποτέλεσμα είναι
  dead_tilde, ᾶῧῗ
  dead_diaeresis, ϊῧῗ
  dead_macron, ΔΕΝ ΔΟΥΛΕΥΕΙ

  dead_iota, ΔΕΝ ΔΟΥΛΕΥΕΙ ΠΑΝΤΑ, ᾃᾁ:ναι, ᾼ: όχι
  dead_breve, ᾰῠῐ

  dead_acute, άἀὰἁἃἄ 
  dead_horn, άἀὰἁἃἄ
  dead_grave, άἀὰἁἃἄ 
  dead_ogonek, άἀὰἁἃἄ

Δεν μπορώ να καταλάβω γιατί δεν δουλεύουν τα dead_macron και dead_iota,
αν και υπάρχουν
<dead_macron> <Greek_alpha> : "ᾱ" U1fb1 # GREEK SMALL LETTER ALPHA WITH
MACRON
<dead_iota> <Greek_alpha> : "ᾳ"   U1fb3 # GREEK SMALL LETTER ALPHA WITH
YPOGEGRAMMENI

> > Ακόμα, κατά το νέο αρχείο Compose, τα π.χ. 
> > <dead_grave> <U0313> <Greek_alpha>                  : "ἂ"  U1f02
> > θα αντικατασταθούν με
> > <dead_grave> <U10000313> <Greek_alpha>                  : "ἂ"  U1f02
> > όπως έχει αλλάξει ήδη από στο en_UTF.UTF-8.
> 
> Αυτή η αλλαγή δεν είναι σωστή. Τα Unicode keysyms αποτελούνται από το
> γράμμα "U" ακολουθούμενο από τον κωδικό Unicode του χαρακτήρα, και είναι
> ίσα με 0x1000000 + τον κωδικό Unicode. Δηλαδή, ο χαρακτήρας U+0313 έχει
> keysym "U0313", που είναι ίσο με 0x10000313. To U10000313 δεν είναι
> έγκυρο keysym - δες ένα παράδειγμα:
> 
> $ xmodmap -e 'keycode 96 = U0313'
> 
> Το keycode 96 είναι το πλήκτρο F12. Δίνοντας την παραπάνω εντολή, το
> F12 αρχίζει να βγάζει το χαρακτήρα U+0313, COMBINING COMMA ABOVE.
> Αντίθετα...
> 
> $ xmodmap -e 'keycode 96 = U10000313'
> xmodmap:  commandline:1:  bad keysym name 'U10000313' in keysym list
> xmodmap:  1 error encountered, aborting.
> 
> Η αλλαγή που έχει γίνει στο en_US.UTF-8 πρέπει να αντιστραφεί, εκτός κι
> αν έχει αλλάξει και κάτι άλλο στην Xlib που δεν το ξέρω. Αλλά δε
> νομίζω...

Μμμμμ...
Τώρα έχει αλλάξει το en_US.UTF-8/Compose.pre με πρόσθεση 0x1000000
παντού. Είναι πιθανό το όλο οικοδόμημα γραφής γλωσσών συντηρείται λόγω
του GTK+ IM που αγνοεί το Compore.pre. Είναι παράξενο που δεν μιλάνε οι
χρήστες KDE που μιλάνε γλώσσες άλλες από αγγλικά και έχουν ρυθμισμένο το
en_US.UTF-8/Compose.pre.
Φαίνεται να το έχουμε χαλάσει ;-0

> > Εδώ πρέπει να πω ότι το όνομα του "en_US.UTF-8" δεν είναι κατάλληλο πια
> > μιας και το χρησιμοποιούν (και μπορούν να το χρησιμοποιήσουν) οι
> > υπόλοιπες γλώσσες.
> 
> Ναι, λογικό. Αλλά ποιο θα ήταν ένα καλό όνομα; Ίσως απλώς "UTF-8"; Αυτά
> θα έπρεπε να τα συζητάμε στη λίστα xorg, όχι εδώ. Μήπως έχει συζητηθεί ήδη;

Δεν γνωρίζω να έχει συζητηθεί. Νομίζω ότι είναι απλώς θέμα να κάνει
κάποιος μια αναφορά σφάλματος (bug report) με το patch.

> > Ένα πράγμα που δεν γνωρίζω είναι το αρχείο στο οποίο θα καθορίσουμε ότι
> > τα ελληνικά compose sequences βρίσκονται πια στο "en_US.UTF-8" αντί του
> > "el_GR.UTF-8".
> 
> Είναι το nls/compose.dir.pre (από το οποίο παράγεται το
> X11/locale/compose.dir που εγκαθίσταται τελικά), όπου αναφέρεται ποιο
> Compose χρησιμοποιείται ανάλογα με το locale. Τώρα λέει:
> 
> iso8859-7/Compose:		el_GR.ISO8859-7
> ...
> el_GR.UTF-8/Compose:            el_GR.UTF-8

Σε ποιο σημείο όμως πρέπει να αλλάξουμε upstream για να διορθώσουμε την
παραπάνω ρύθμιση;
Κοιτώντας στον πηγαίο κώδικα του Xorg δεν εντόπισα το σημείο. Πρέπει να
υπάρχει κάπου upstream αντί να το ρυθμίζουν κάθε φορά οι διανομές.

Φιλικά,
Σίμος




More information about the Ubuntu-gr mailing list