Τόσα βγάζω κι εγώ με sed. Για την ακρίβεια, 950 Lu και 984 Ll=1934. Το πρόγραμμά σου δεν θα το τεστάρω, αλλά έφτιαξα ένα αρχείο με τους κωδικούς μετατραμμένους σε χαρακτήρες, και μετά από ένα γρήγορο πέρασμα, μοιάζει να είναι οκ. Αν και το πιο "περίεργο" παράδειγμα που μπορούσα να τσεκάρω (σε γλώσσα που γνωρίζω) είναι το ß από τα Γερμανικά, το οποίο δεν πρέπει να αλλάζει μορφή όταν γράφουμε κεφαλαία. Και έχει την αναμενόμενη συμπεριφορά. Μήπως να έριχνε κάποιος μια ματιά στο Κυριλλικό αλφάβητο; Off topic1: Κατέβασα ένα πρόγραμμα που λέγεται uni2ascii για να μετατρέψω τους κωδικούς σε χαρακτήρες. Υπάρχει κάτι άλλο που θα μπορούσα να χρησιμοποιήσω; Off topic2: Αν το unicode καθορίζει διαφορετική συμπεριφορά για το capitalization (shift) και το all caps (caps lock), θεωρητικά θα μπορούσαν κάποια στιγμή να αλλάξουν στο unicode οι συμπεριφορές των τονισμένων ελληνικών χαρακτήρων. Έτσι ώστε αν επιλέγει να μετατρέψει κανείς μια πρόταση σε κεφαλαία να μην παίρνει ΑΥΤΌ, αλλά ΑΥΤΟ. Δεν ξέρω βέβαια κατά πόσο θα ήταν επιθυμητό κάτι τέτοιο. 2009/7/16 Simos Xenitellis <simos [ dot ] lists [ at ] googlemail [ dot ] com> > 2009/7/16 Jennie Petoumenou <epetoumenou [ at ] gmail [ dot ] com>: > > Σόρι, αγνοήστε το προηγούμενο, πάτησα αποστολή κατά λάθος. > > > > 2009/7/16 Jennie Petoumenou <epetoumenou [ at ] gmail [ dot ] com> > >> > >> > >> 2009/7/16 Simos Xenitellis <simos [ dot ] lists [ at ] googlemail [ dot ] com> > >>> > >>> Κάνω μια γενικότερη περίληψη για το θέμα με το τελικό σίγμα > >>> και όλα τα βήματα που χρειάζεται για να επιλύσουμε το θέμα. > >>> > >>> Στην ελληνική διάταξη στο X.Org (Linux) είχαμε πάντα το πρόβλημα, όταν > >>> το CapsLock > >>> ήταν πατημένο και πατούσαμε «ς», να παίρνουμε «ς» αντί το κεφαλαίο «Σ». > >>> Μπορείτε να το δοκιμάσετε και να επιβεβαιώσετε τώρα· > >>> 1. Πατήστε CapsLock > >>> 2. Γράψτε ελληνικά, π.χ. ΣΔΛΚΦΞΕΟΡΙΞΓ > >>> 3. Πατήστε «ς» και λαμβάνετε «ς» αντί για Σ. > >>> > >>> Η πηγή του προβλήματος είναι στον τρόπο που ο κώδικας του X.Org > >>> αξιολογεί πότε ένας χαρακτήρας > >>> είναι αλφαβητικός, ώστε για να το επιτρέπει να λειτουργεί το CapsLock. > >>> Ως τώρα, το X.Org βλέπει τους χαρακτήρες στη διάταξη, π.χ. το γ και Γ > >>> που είναι στο ίδιο πλήκτρο, > >>> και δοκιμάζει τη μετατροπή κεφαλαίο προς πεζό για «Γ». Αν πράγματι > >>> βγάλει «γ», τότε είναι αλφαβητικός χαρακτήρας > >>> και έχει και σωστή αντιστοιχία πεζού-κεφαλαίου, οπότε ενεργοποιεί τη > >>> λειτουργία CapsLock. > >>> > >>> Το «Σ» παράγει «σ», οπότε το ς/Σ αγνοείται όταν έχουμε πατημένο το > >>> CapsLock και παράγει μόνο «ς». > >>> > >>> Η πηγή του προβλήματος είναι ότι θα ήταν καλύτερο να ελέγχαμε απλά αν > >>> οι χαρακτήρες είναι απλά αλφαβητικοί αντί να επιβεβαιώνουμε ότι με > >>> κάποιο τρόπο ότι η μετατροπή από πεζό σε κεφαλαίο (και ανάποδα). > >>> Όπως είναι τώρα το X.Org δεν έχει ούτως ή άλλως τη δυνατότητα για > >>> σωστή επιβεβαίωση για πεζά/κεφαλαία διότι δεν περιλαμβάνει στις > >>> εξαρτήσεις κάποια βιβλιοθήκη Unicode. > >>> > >>> Έτσι, αρκεί να γράψουμε μια συνάρτηση σε γλώσσα C που να μπορεί να > >>> λέει αν ένας χαρακτήρας Χ είναι αλφαβητικός ή όχι. > >>> Στο πρότυπο Unicode έχουμε μια σειρά από βασικούς χαρακτήρες με κωδικό > >>> από 0-65535, και περιγράφονται στο αρχείο > >>> http://unicode.org/Public/UNIDATA/UnicodeData.txt (είναι αρχείο CSV). > >>> Όπως αναφέρθηκε παραπάνω στη συζήτηση, ένα από τα πεδία του CSV είναι > >>> Ll/Lu (Letter Lower, Letter Upper), οπότε χρειάζεται ένα πρόγραμμα > >>> εντολών που να κάνει «parsing» το CSV και να ελέγχει αν πρόκειται για > >>> Ll ή Lu, και να παράγει ένα πίνακα της μορφής > >> > >> Είχα γράψει στο προηγούμενο μέιλ: > >>> > >>> Σύμφωνα με το Unicode5.1.0 - clarification of lowercase and uppercase, > το > >>> τρίτο πεδίο κάθε κειμένου είναι Lu για κεφαλαία, Ll για πεζά, και > >>> διαφορετικό για άλλους χαρακτήρες. > >>> Νομίζω όμως ότι το πιο αξιόπιστο κριτήριο είναι ότι για τους πεζούς > >>> χαρακτήρες το 13ο και το 15ο πεδίο κάθε εγγραφής περιέχει το κεφαλαίο > που > >>> αντιστοιχεί στον χαρακτήρα. Αντίστοιχα, για τα κεφαλαία, το 14ο πεδίο > >>> περιέχει το πεζό γράμμα που τους αντιστοιχεί. Μια τέτοια κατάταξη > καλύπτει > >>> π.χ. το τελικό σίγμα: > >>> 03C2;GREEK SMALL LETTER FINAL SIGMA;Ll;0;L;;;;;N;;;03A3;; > >>> 03A3 > >>> ενώ δεν καλύπτει π.χ. αυτά: > >>> 1D703;MATHEMATICAL ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;; > >>> 1D704;MATHEMATICAL ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;; > >> > >> Δηλαδή, δεν αρκεί να διαπιστώσει κανείς αν ένας χαρακτήρας είναι π.χ. > >> αλφαβητικός και πεζός, πρέπει να επαληθεύσει και ότι έχει κεφαλαίο που > να > >> του αντιστοιχεί. Γιατί π.χ. το ελληνικό θ ως μαθηματικό σύμβολο σε > αγγλική > >> διάταξη πληκτρολογίου, δεν διαθέτει αντίστοιχο κεφαλαίο. > >> > >> Είπα να τσεκάρω και το αντίστροφο: > >> Αν ένας έχει συμπληρωμένο το 13ο/15ο πεδίο, είναι οπωσδήποτε πεζός > >> αλφαβητικός; Η απάντηση είναι όχι. Παράδειγμα: > >> 0345;COMBINING GREEK YPOGEGRAMMENI;Mn;240;NSM;;;;;N;GREEK NON-SPACING > IOTA > >> BELOW;;0399;;0399 > >> (Προφανώς, η υπογεγραμμένη δεν μπορεί να γίνει κεφαλαίο). > >> > >> Κάτι τελευταίο: > >> Αν ο χαρακτήρας είναι πεζός αλφαβητικός, το κεφαλαίο του είναι στο 13ο ή > >> 15ο πεδίο; > >> Η απάντηση είναι: στο 13ο. > >> Στο παρακάτω παράδειγμα, το 01C6 (dž) έχει το 01C4 (DŽ) στο 13ο πεδίο, > και > >> το 01C5 (Dž) στο 15ο. Άρα, το 13ο πεδίο ορίζει τη συμπεριφορά του > capslock > >> (αυτό μας ενδιαφέρει), και το 15ο του shift. > >>> > >>> 01C4;LATIN CAPITAL LETTER DZ WITH CARON;Lu;0;L;<compat> 0044 > >>> 017D;;;;N;LATIN CAPITAL LETTER D Z HACEK;;;01C6;01C5 > >>> 01C5;LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH > >>> CARON;Lt;0;L;<compat> 0044 017E;;;;N;LATIN LETTER CAPITAL D SMALL Z > >>> HACEK;;01C4;01C6;01C5 > >>> 01C6;LATIN SMALL LETTER DZ WITH CARON;Ll;0;L;<compat> 0064 > >>> 017E;;;;N;LATIN SMALL LETTER D Z HACEK;;01C4;;01C5 > >>> > >>> Από τη wikipedia (I know, αξιόπιστη πηγή): > >>> Dž (titlecase form; all-capitals form DŽ, lowercase dž) > >> > >> > >> Συμπερασματικά, εγώ νομίζω ότι οι έλεγχοι στη συνάρτηση πρέπει να είναι > ως > >> εξής: > >> > >>> > >>> > >>> > >>> static void > >>> UCSIsAlphabetic( register unsigned codepoint) > >>> { > >> > >> Αντί για αυτό: > >>> > >>> /* Check if character is alphabetic, as in Unicode Data version > 5.1.0 > >>> */ > >>> /* NB: Checks if character is either Ll or Lu (Letter lower/upper). > >>> */ > >> > >> /*Check if character is alphabetic, and if its corresponding opposite > case > >> character exists */ > >> /*If 3rd field is Ll, 13th field must be non-void*/ > >> /*If 3rd field is Lu, 14th field must be non-void*/ > >> if (character is Ll && field13 != void) > >> return 1; > >> else if (character is Lu && field14 != void) > >> > >> return 1; > >> > >> else > >> > >> return 0; > > Έφτιαξα ένα απλό πρόγραμμα που υλοποιεί τα παραπάνω, > http://github.com/simos/extract-alphabetic > και βρίσκει 1935 έγκυρους χαρακτήρες. > > Πρέπει να είναι σχετικά εύκολο να δοκιμάσει κάποιος το παραπάνω πρόγραμμα. > Αν υπάρχουν σχόλια για την ορθότητα των αποτελεσμάτων, παρακαλώ σχολιάστε, > ή και συνεχίστε με τα επόμενα βήματα. > > Σίμος > > >>> > >>> /* Currently using flat array where index corresponds to codepoint > >>> value. */ > >>> /* Value is 1 if codepoint is alphabetic, 0 otherwise. */ > >>> > >>> static unsigned char const UCSAlphabetic[] = { > >>> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, > >>> ... > >>> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, > >>> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 > >>> }; > >>> > >>> if ( UCSAlphabetic[codepoint] == 0 ) > >>> return 0; > >>> else > >>> return 1; > >>> } > >>> > >>> Τη συνάρτηση αυτή την προσθέτουμε στο ίδιο αρχείο με > >>> http://cgit.freedesktop.org/xorg/lib/libX11/tree/src/KeyBind.c#n294 > >>> > >>> Έχοντας τη συνάρτηση αυτή, τότε είμαστε σε θέση να τροποποιήσουμε τον > >>> κώδικα στο > >>> http://bugs.freedesktop.org/show_bug.cgi?id=22145#c11 > >>> ώστε να κοιτάει αν απλά οι χαρακτήρες sym[0], sym[1] (και sym[2], > >>> sym[3]) είναι αλφαβητικοί. > >>> > >>> Σίμος > >>> > >>> 2009/6/13 Simos Xenitellis <simos [ dot ] lists [ at ] googlemail [ dot ] com>: > >>> > 2009/6/13 Savvas Radevic <vicedar [ at ] gmail [ dot ] com>: > >>> >> Το UnicodeData.txt είναι και σωστά διαμορφωμένο, δείχνει το > αντίστοιχο > >>> >> κεφαλαίο γράμμα δίπλα από κάθε μικρό (και vice versa): > >>> >> > >>> >> 03A1;GREEK CAPITAL LETTER RHO;Lu;0;L;;;;;N;;;;03C1; > >>> >> 03A3;GREEK CAPITAL LETTER SIGMA;Lu;0;L;;;;;N;;;;03C3; > >>> >> > >>> >> 03C1;GREEK SMALL LETTER RHO;Ll;0;L;;;;;N;;;03A1;;03A1 > >>> >> 03C2;GREEK SMALL LETTER FINAL SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3 > >>> >> 03C3;GREEK SMALL LETTER SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3 > >>> >> > >>> >> Προσέξτε το "03A3;;03A3" στο "FINAL SIGMA" και "SIGMA". > >>> >> Επίσης, τα κεφαλαία το έχουν το αντίστοιχο μικρό στην πρότελευταια > >>> >> τιμή, ενώ > >>> >> τα μικρά έχουν το αντίστοιχο κεφαλαίο > >>> >> > >>> >> Σύμφωνα με αυτό που πρόσθεσε η Jennie ("Lu" και "Ll"), επισύναψα ένα > >>> >> καινούργιο sh/perl script: > >>> >> > >>> >> (Πρόσθεσα τα quotes "" στις τιμές για να φαίνεται η διαφορά) > >>> >> Για κεφαλαία: > >>> >>> > >>> >>> perl -nle 'print if /^.*?;.*?;Lu;/' UnicodeData.txt | perl -pe > >>> >>> 's/(.*?);(.*?);(.*?);.*;(.*?);$/"$1" "$3" "$4"/' > >>> >>> > >>> >>> "03A6" "Lu" "03C6" "GREEK CAPITAL LETTER PHI" > >>> >>> "03A7" "Lu" "03C7" "GREEK CAPITAL LETTER CHI" > >>> >>> "03A8" "Lu" "03C8" "GREEK CAPITAL LETTER PSI" > >>> >>> "03A9" "Lu" "03C9" "GREEK CAPITAL LETTER OMEGA" > >>> >>> "03AA" "Lu" "03CA" "GREEK CAPITAL LETTER IOTA WITH DIALYTIKA" > >>> >>> "03AB" "Lu" "03CB" "GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA" > >>> >>> "03CF" "Lu" "03D7" "GREEK CAPITAL KAI SYMBOL" > >>> >>> "03D2" "Lu" "" "GREEK UPSILON WITH HOOK SYMBOL" > >>> >>> "03D3" "Lu" "" "GREEK UPSILON WITH ACUTE AND HOOK SYMBOL" > >>> >>> "03D4" "Lu" "" "GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL" > >>> >> > >>> >> Για μικρά: > >>> >>> > >>> >>> perl -nle 'print if /^.*?;.*?;Ll;/' UnicodeData.txt | perl -pe > >>> >>> 's/(.*?);(.*?);(.*?);.*;(.*?)$/"$1" "$3" "$4" "$2"/' > >>> >>> > >>> >>> "03DF" "Ll" "03DE" "GREEK SMALL LETTER KOPPA" > >>> >>> "03E1" "Ll" "03E0" "GREEK SMALL LETTER SAMPI" > >>> >>> "03F0" "Ll" "039A" "GREEK KAPPA SYMBOL" > >>> >>> "03F1" "Ll" "03A1" "GREEK RHO SYMBOL" > >>> >>> "03F2" "Ll" "03F9" "GREEK LUNATE SIGMA SYMBOL" > >>> >>> "03F3" "Ll" "" "GREEK LETTER YOT" > >>> >>> > >>> >>> [...] > >>> >>> "1FE2" "Ll" "" "GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND > VARIA" > >>> >>> "1FE3" "Ll" "" "GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA" > >>> >>> "1FE4" "Ll" "" "GREEK SMALL LETTER RHO WITH PSILI" > >>> >>> "1FE5" "Ll" "1FEC" "GREEK SMALL LETTER RHO WITH DASIA" > >>> >> > >>> >> Τώρα μπορείτε εύκολα να βρείτε το αντίστοιχο κεφαλαίο/μικρό :) > >>> > > >>> > Νομίζω ότι έχουμε μια καλή εξέλιξη. > >>> > Πράγματι, φαίνεται ότι τα LI, Lu, κτλ επιτρέπουν να βρίσκουμε τους > >>> > αλφαβητικούς χαρακτήρες. > >>> > > >>> > Υπήρξε ένα ερώτημα προηγουμένως γιατί τα θέλουμε όλα αυτά. > >>> > Ο λόγος είναι για να διορθώσουμε κάτι στο X.Org για τα ελληνικά (και > >>> > μαζί με αυτό και για όλες τις άλλες γλώσσες). > >>> > Η αναφορά σφάλματος που περιγράφει το ζήτημα είναι στο > >>> > http://bugs.freedesktop.org/show_bug.cgi?id=22145 > >>> > όπως έχει αναφερθεί ήδη. > >>> > Αυτό που είναι σημαντικό είναι ότι προσωπικά δε θα ασχοληθώ με το > >>> > ζήτημα τούτο. > >>> > Αυτό που μπορώ να κάνω είναι να καθοδηγήσω κάποιους που θα ήθελαν να > >>> > βοηθήσουν, > >>> > και νομίζω ότι το όλο έργο είναι σχετικά βατό. > >>> > > >>> > Για τα > >>> >>> "03DF" "Ll" "03DE" "GREEK SMALL LETTER KOPPA" > >>> >>> "03E1" "Ll" "03E0" "GREEK SMALL LETTER SAMPI" > >>> >>> "03F0" "Ll" "039A" "GREEK KAPPA SYMBOL" > >>> >>> "03F1" "Ll" "03A1" "GREEK RHO SYMBOL" > >>> >>> "03F2" "Ll" "03F9" "GREEK LUNATE SIGMA SYMBOL" > >>> >>> "03F3" "Ll" "" "GREEK LETTER YOT" > >>> > > >>> > Θέλουμε να παράγουμε πίνακα > >>> > > >>> > int myarray[] = { > >>> > > >>> > 0x03DF, 1, // είναι αλφαβητικό > >>> > 0x03E0, 0 > >>> > 0x03E1, 1, > >>> > 0x03E2, 0, > >>> > 0x03E3, 0, > >>> > 0x03E4, 0, > >>> > 0x03E5, 0, > >>> > ... > >>> > 0x03F0, 1, > >>> > 0x03F1, 1, > >>> > 0x03F2, 1, > >>> > 0x03F3, 1 > >>> > }; > >>> > > >>> > Σίμος > >>> > > >>> _______________________________________________ > >>> Open-source mailing list > >>> Open-source [ at ] ellak [ dot ] gr > > > > >
Aa Bb Cc Dd Ee Ff Gg Hh Ii Jj Kk Ll Mm Nn Oo Pp Qq Rr Ss Tt Uu Vv Ww Xx Yy Zz aA bB cC dD eE fF gG hH iI jJ kK lL mM nN oO pP qQ rR sS tT uU vV wW xX yY zZ µΜ Àà Áá Ââ Ãã Ää Åå Ææ Çç Èè Éé Êê Ëë Ìì Íí Îî Ïï Ðð Ññ Òò Óó Ôô Õõ Öö Øø Ùù Úú Ûû Üü Ýý Þþ àÀ áÁ â ãà äÄ åÅ æÆ çÇ èÈ éÉ êÊ ëË ìÌ íÍ îÎ ïÏ ðÐ ñÑ òÒ óÓ ôÔ õÕ öÖ øØ ùÙ úÚ ûÛ üÜ ýÝ þÞ ÿŸ Āā āĀ Ăă ăĂ Ąą ąĄ Ćć ćĆ Ĉĉ ĉĈ Ċċ ċĊ Čč čČ Ďď ďĎ Đđ đĐ Ēē ēĒ Ĕĕ ĕĔ Ėė ėĖ Ęę ęĘ Ěě ěĚ Ĝĝ ĝĜ Ğğ ğĞ Ġġ ġĠ Ģģ ģĢ Ĥĥ ĥĤ Ħħ ħĦ Ĩĩ ĩĨ Īī īĪ Ĭĭ ĭĬ Įį įĮ İi ıI IJij ijIJ Ĵĵ ĵĴ Ķķ ķĶ Ĺĺ ĺĹ Ļļ ļĻ Ľľ ľĽ Ŀŀ ŀĿ Łł łŁ Ńń ńŃ Ņņ ņŅ Ňň ňŇ Ŋŋ ŋŊ Ōō ōŌ Ŏŏ ŏŎ Őő őŐ Œœ œŒ Ŕŕ ŕŔ Ŗŗ ŗŖ Řř řŘ Śś śŚ Ŝŝ ŝŜ Şş şŞ Šš šŠ Ţţ ţŢ Ťť ťŤ Ŧŧ ŧŦ Ũũ ũŨ Ūū ūŪ Ŭŭ ŭŬ Ůů ůŮ Űű űŰ Ųų ųŲ Ŵŵ ŵŴ Ŷŷ ŷŶ Ÿÿ Źź źŹ Żż żŻ Žž žŽ ſS ƀɃ Ɓɓ Ƃƃ ƃƂ Ƅƅ ƅƄ Ɔɔ Ƈƈ ƈƇ Ɖɖ Ɗɗ Ƌƌ ƌƋ Ǝǝ Əə Ɛɛ Ƒƒ ƒƑ Ɠɠ Ɣɣ ƕǶ Ɩɩ Ɨɨ Ƙƙ ƙƘ ƚȽ Ɯɯ Ɲɲ ƞȠ Ɵɵ Ơơ ơƠ Ƣƣ ƣƢ Ƥƥ ƥƤ Ʀʀ Ƨƨ ƨƧ Ʃʃ Ƭƭ ƭƬ Ʈʈ Ưư ưƯ Ʊʊ Ʋʋ Ƴƴ ƴƳ Ƶƶ ƶƵ Ʒʒ Ƹƹ ƹƸ Ƽƽ ƽƼ ƿǷ DŽdž džDŽ LJlj ljLJ NJnj njNJ Ǎǎ ǎǍ Ǐǐ ǐǏ Ǒǒ ǒǑ Ǔǔ ǔǓ Ǖǖ ǖǕ Ǘǘ ǘǗ Ǚǚ ǚǙ Ǜǜ ǜǛ ǝƎ Ǟǟ ǟǞ Ǡǡ ǡǠ Ǣǣ ǣǢ Ǥǥ ǥǤ Ǧǧ ǧǦ Ǩǩ ǩǨ Ǫǫ ǫǪ Ǭǭ ǭǬ Ǯǯ ǯǮ DZdz dzDZ Ǵǵ ǵǴ Ƕƕ Ƿƿ Ǹǹ ǹǸ Ǻǻ ǻǺ Ǽǽ ǽǼ Ǿǿ ǿǾ Ȁȁ ȁȀ Ȃȃ ȃȂ Ȅȅ ȅȄ Ȇȇ ȇȆ Ȉȉ ȉȈ Ȋȋ ȋȊ Ȍȍ ȍȌ Ȏȏ ȏȎ Ȑȑ ȑȐ Ȓȓ ȓȒ Ȕȕ ȕȔ Ȗȗ ȗȖ Șș șȘ Țț țȚ Ȝȝ ȝȜ Ȟȟ ȟȞ Ƞƞ Ȣȣ ȣȢ Ȥȥ ȥȤ Ȧȧ ȧȦ Ȩȩ ȩȨ Ȫȫ ȫȪ Ȭȭ ȭȬ Ȯȯ ȯȮ Ȱȱ ȱȰ Ȳȳ ȳȲ Ⱥⱥ Ȼȼ ȼȻ Ƚƚ Ⱦⱦ Ɂɂ ɂɁ Ƀƀ Ʉʉ Ʌʌ Ɇɇ ɇɆ Ɉɉ ɉɈ Ɋɋ ɋɊ Ɍɍ ɍɌ Ɏɏ ɏɎ ɐⱯ ɑⱭ ɓƁ ɔƆ ɖƉ ɗƊ əƏ ɛƐ ɠƓ ɣƔ ɨƗ ɩƖ ɫⱢ ɯƜ ɱⱮ ɲƝ ɵƟ ɽⱤ ʀƦ ʃƩ ʈƮ ʉɄ ʊƱ ʋƲ ʌɅ ʒƷ Ͱͱ ͱͰ Ͳͳ ͳͲ Ͷͷ ͷͶ ͻϽ ͼϾ ͽϿ Άά Έέ Ήή Ίί Όό Ύύ Ώώ Αα Ββ Γγ Δδ Εε Ζζ Ηη Θθ Ιι Κκ Λλ Μμ Νν Ξξ Οο Ππ Ρρ Σσ Ττ Υυ Φφ Χχ Ψψ Ωω Ϊϊ Ϋϋ άΆ έΈ ήΉ ίΊ αΑ βΒ γΓ δΔ εΕ ζΖ ηΗ θΘ ιΙ κΚ λΛ μΜ νΝ ξΞ οΟ πΠ ρΡ ςΣ σΣ τΤ υΥ φΦ χΧ ψΨ ωΩ ϊΪ ϋΫ όΌ ύΎ ώΏ Ϗϗ ϐΒ ϑΘ ϕΦ ϖΠ ϗϏ Ϙϙ ϙϘ Ϛϛ ϛϚ Ϝϝ ϝϜ Ϟϟ ϟϞ Ϡϡ ϡϠ Ϣϣ ϣϢ Ϥϥ ϥϤ Ϧϧ ϧϦ Ϩϩ ϩϨ Ϫϫ ϫϪ Ϭϭ ϭϬ Ϯϯ ϯϮ ϰΚ ϱΡ ϲϹ ϴθ ϵΕ Ϸϸ ϸϷ Ϲϲ Ϻϻ ϻϺ Ͻͻ Ͼͼ Ͽͽ Ѐѐ Ёё Ђђ Ѓѓ Єє Ѕѕ Іі Її Јј Љљ Њњ Ћћ Ќќ Ѝѝ Ўў Џџ Аа Бб Вв Гг Дд Ее Жж Зз Ии Йй Кк Лл Мм Нн Оо Пп Рр Сс Тт Уу Фф Хх Цц Чч Шш Щщ Ъъ Ыы Ьь Ээ Юю Яя аА бБ вВ гГ дД еЕ жЖ зЗ иИ йЙ кК лЛ мМ нН оО пП рР сС тТ уУ фФ хХ цЦ чЧ шШ щЩ ъЪ ыЫ ьЬ эЭ юЮ яЯ ѐЀ ёЁ ђЂ ѓЃ єЄ ѕЅ іІ їЇ јЈ љЉ њЊ ћЋ ќЌ ѝЍ ўЎ џЏ Ѡѡ ѡѠ Ѣѣ ѣѢ Ѥѥ ѥѤ Ѧѧ ѧѦ Ѩѩ ѩѨ Ѫѫ ѫѪ Ѭѭ ѭѬ Ѯѯ ѯѮ Ѱѱ ѱѰ Ѳѳ ѳѲ Ѵѵ ѵѴ Ѷѷ ѷѶ Ѹѹ ѹѸ Ѻѻ ѻѺ Ѽѽ ѽѼ Ѿѿ ѿѾ Ҁҁ ҁҀ Ҋҋ ҋҊ Ҍҍ ҍҌ Ҏҏ ҏҎ Ґґ ґҐ Ғғ ғҒ Ҕҕ ҕҔ Җҗ җҖ Ҙҙ ҙҘ Ққ қҚ Ҝҝ ҝҜ Ҟҟ ҟҞ Ҡҡ ҡҠ Ңң ңҢ Ҥҥ ҥҤ Ҧҧ ҧҦ Ҩҩ ҩҨ Ҫҫ ҫҪ Ҭҭ ҭҬ Үү үҮ Ұұ ұҰ Ҳҳ ҳҲ Ҵҵ ҵҴ Ҷҷ ҷҶ Ҹҹ ҹҸ Һһ һҺ Ҽҽ ҽҼ Ҿҿ ҿҾ Ӏӏ Ӂӂ ӂӁ Ӄӄ ӄӃ Ӆӆ ӆӅ Ӈӈ ӈӇ Ӊӊ ӊӉ Ӌӌ ӌӋ Ӎӎ ӎӍ ӏӀ Ӑӑ ӑӐ Ӓӓ ӓӒ Ӕӕ ӕӔ Ӗӗ ӗӖ Әә әӘ Ӛӛ ӛӚ Ӝӝ ӝӜ Ӟӟ ӟӞ Ӡӡ ӡӠ Ӣӣ ӣӢ Ӥӥ ӥӤ Ӧӧ ӧӦ Өө өӨ Ӫӫ ӫӪ Ӭӭ ӭӬ Ӯӯ ӯӮ Ӱӱ ӱӰ Ӳӳ ӳӲ Ӵӵ ӵӴ Ӷӷ ӷӶ Ӹӹ ӹӸ Ӻӻ ӻӺ Ӽӽ ӽӼ Ӿӿ ӿӾ Ԁԁ ԁԀ Ԃԃ ԃԂ Ԅԅ ԅԄ Ԇԇ ԇԆ Ԉԉ ԉԈ Ԋԋ ԋԊ Ԍԍ ԍԌ Ԏԏ ԏԎ Ԑԑ ԑԐ Ԓԓ ԓԒ Ԕԕ ԕԔ Ԗԗ ԗԖ Ԙԙ ԙԘ Ԛԛ ԛԚ Ԝԝ ԝԜ Ԟԟ ԟԞ Ԡԡ ԡԠ Ԣԣ ԣԢ Աա Բբ Գգ Դդ Եե Զզ Էէ Ըը Թթ Ժժ Իի Լլ Խխ Ծծ Կկ Հհ Ձձ Ղղ Ճճ Մմ Յյ Նն Շշ Ոո Չչ Պպ Ջջ Ռռ Սս Վվ Տտ Րր Ցց Ււ Փփ Քք Օօ Ֆֆ աԱ բԲ գԳ դԴ եԵ զԶ էԷ ըԸ թԹ ժԺ իԻ լԼ խԽ ծԾ կԿ հՀ ձՁ ղՂ ճՃ մՄ յՅ նՆ շՇ ոՈ չՉ պՊ ջՋ ռՌ սՍ վՎ տՏ րՐ ցՑ ւՒ փՓ քՔ օՕ ֆՖ Ⴀⴀ Ⴁⴁ Ⴂⴂ Ⴃⴃ Ⴄⴄ Ⴅⴅ Ⴆⴆ Ⴇⴇ Ⴈⴈ Ⴉⴉ Ⴊⴊ Ⴋⴋ Ⴌⴌ Ⴍⴍ Ⴎⴎ Ⴏⴏ Ⴐⴐ Ⴑⴑ Ⴒⴒ Ⴓⴓ Ⴔⴔ Ⴕⴕ Ⴖⴖ Ⴗⴗ Ⴘⴘ Ⴙⴙ Ⴚⴚ Ⴛⴛ Ⴜⴜ Ⴝⴝ Ⴞⴞ Ⴟⴟ Ⴠⴠ Ⴡⴡ Ⴢⴢ Ⴣⴣ Ⴤⴤ Ⴥⴥ ᵹꝽ ᵽⱣ Ḁḁ ḁḀ Ḃḃ ḃḂ Ḅḅ ḅḄ Ḇḇ ḇḆ Ḉḉ ḉḈ Ḋḋ ḋḊ Ḍḍ ḍḌ Ḏḏ ḏḎ Ḑḑ ḑḐ Ḓḓ ḓḒ Ḕḕ ḕḔ Ḗḗ ḗḖ Ḙḙ ḙḘ Ḛḛ ḛḚ Ḝḝ ḝḜ Ḟḟ ḟḞ Ḡḡ ḡḠ Ḣḣ ḣḢ Ḥḥ ḥḤ Ḧḧ ḧḦ Ḩḩ ḩḨ Ḫḫ ḫḪ Ḭḭ ḭḬ Ḯḯ ḯḮ Ḱḱ ḱḰ Ḳḳ ḳḲ Ḵḵ ḵḴ Ḷḷ ḷḶ Ḹḹ ḹḸ Ḻḻ ḻḺ Ḽḽ ḽḼ Ḿḿ ḿḾ Ṁṁ ṁṀ Ṃṃ ṃṂ Ṅṅ ṅṄ Ṇṇ ṇṆ Ṉṉ ṉṈ Ṋṋ ṋṊ Ṍṍ ṍṌ Ṏṏ ṏṎ Ṑṑ ṑṐ Ṓṓ ṓṒ Ṕṕ ṕṔ Ṗṗ ṗṖ Ṙṙ ṙṘ Ṛṛ ṛṚ Ṝṝ ṝṜ Ṟṟ ṟṞ Ṡṡ ṡṠ Ṣṣ ṣṢ Ṥṥ ṥṤ Ṧṧ ṧṦ Ṩṩ ṩṨ Ṫṫ ṫṪ Ṭṭ ṭṬ Ṯṯ ṯṮ Ṱṱ ṱṰ Ṳṳ ṳṲ Ṵṵ ṵṴ Ṷṷ ṷṶ Ṹṹ ṹṸ Ṻṻ ṻṺ Ṽṽ ṽṼ Ṿṿ ṿṾ Ẁẁ ẁẀ Ẃẃ ẃẂ Ẅẅ ẅẄ Ẇẇ ẇẆ Ẉẉ ẉẈ Ẋẋ ẋẊ Ẍẍ ẍẌ Ẏẏ ẏẎ Ẑẑ ẑẐ Ẓẓ ẓẒ Ẕẕ ẕẔ ẛṠ ẞß Ạạ ạẠ Ảả ảẢ Ấấ ấẤ Ầầ ầẦ Ẩẩ ẩẨ Ẫẫ ẫẪ Ậậ ậẬ Ắắ ắẮ Ằằ ằẰ Ẳẳ ẳẲ Ẵẵ ẵẴ Ặặ ặẶ Ẹẹ ẹẸ Ẻẻ ẻẺ Ẽẽ ẽẼ Ếế ếẾ Ềề ềỀ Ểể ểỂ Ễễ ễỄ Ệệ ệỆ Ỉỉ ỉỈ Ịị ịỊ Ọọ ọỌ Ỏỏ ỏỎ Ốố ốỐ Ồồ ồỒ Ổổ ổỔ Ỗỗ ỗỖ Ộộ ộỘ Ớớ ớỚ Ờờ ờỜ Ởở ởỞ Ỡỡ ỡỠ Ợợ ợỢ Ụụ ụỤ Ủủ ủỦ Ứứ ứỨ Ừừ ừỪ Ửử ửỬ Ữữ ữỮ Ựự ựỰ Ỳỳ ỳỲ Ỵỵ ỵỴ Ỷỷ ỷỶ Ỹỹ ỹỸ Ỻỻ ỻỺ Ỽỽ ỽỼ Ỿỿ ỿỾ ἀἈ ἁἉ ἂἊ ἃἋ ἄἌ ἅἍ ἆἎ ἇἏ Ἀἀ Ἁἁ Ἂἂ Ἃἃ Ἄἄ Ἅἅ Ἆἆ Ἇἇ ἐἘ ἑἙ ἒἚ ἓἛ ἔἜ ἕἝ Ἐἐ Ἑἑ Ἒἒ Ἓἓ Ἔἔ Ἕἕ ἠἨ ἡἩ ἢἪ ἣἫ ἤἬ ἥἭ ἦἮ ἧἯ Ἠἠ Ἡἡ Ἢἢ Ἣἣ Ἤἤ Ἥἥ Ἦἦ Ἧἧ ἰἸ ἱἹ ἲἺ ἳἻ ἴἼ ἵἽ ἶἾ ἷἿ Ἰἰ Ἱἱ Ἲἲ Ἳἳ Ἴἴ Ἵἵ Ἶἶ Ἷἷ ὀὈ ὁὉ ὂὊ ὃὋ ὄὌ ὅὍ Ὀὀ Ὁὁ Ὂὂ Ὃὃ Ὄὄ Ὅὅ ὑὙ ὓὛ ὕὝ ὗὟ Ὑὑ Ὓὓ Ὕὕ Ὗὗ ὠὨ ὡὩ ὢὪ ὣὫ ὤὬ ὥὭ ὦὮ ὧὯ Ὠὠ Ὡὡ Ὢὢ Ὣὣ Ὤὤ Ὥὥ Ὦὦ Ὧὧ ὰᾺ άΆ ὲῈ έΈ ὴῊ ήΉ ὶῚ ίΊ ὸῸ όΌ ὺῪ ύΎ ὼῺ ώΏ ᾀᾈ ᾁᾉ ᾂᾊ ᾃᾋ ᾄᾌ ᾅᾍ ᾆᾎ ᾇᾏ ᾐᾘ ᾑᾙ ᾒᾚ ᾓᾛ ᾔᾜ ᾕᾝ ᾖᾞ ᾗᾟ ᾠᾨ ᾡᾩ ᾢᾪ ᾣᾫ ᾤᾬ ᾥᾭ ᾦᾮ ᾧᾯ ᾰᾸ ᾱᾹ ᾳᾼ Ᾰᾰ Ᾱᾱ Ὰὰ Άά ιΙ ῃῌ Ὲὲ Έέ Ὴὴ Ήή ῐῘ ῑῙ Ῐῐ Ῑῑ Ὶὶ Ίί ῠῨ ῡῩ ῥῬ Ῠῠ Ῡῡ Ὺὺ Ύύ Ῥῥ ῳῼ Ὸὸ Όό Ὼὼ Ώώ Ωω Kk Åå Ⅎⅎ ⅎℲ Ↄↄ ↄↃ Ⰰⰰ Ⰱⰱ Ⰲⰲ Ⰳⰳ Ⰴⰴ Ⰵⰵ Ⰶⰶ Ⰷⰷ Ⰸⰸ Ⰹⰹ Ⰺⰺ Ⰻⰻ Ⰼⰼ Ⰽⰽ Ⰾⰾ Ⰿⰿ Ⱀⱀ Ⱁⱁ Ⱂⱂ Ⱃⱃ Ⱄⱄ Ⱅⱅ Ⱆⱆ Ⱇⱇ Ⱈⱈ Ⱉⱉ Ⱊⱊ Ⱋⱋ Ⱌⱌ Ⱍⱍ Ⱎⱎ Ⱏⱏ Ⱐⱐ Ⱑⱑ Ⱒⱒ Ⱓⱓ Ⱔⱔ Ⱕⱕ Ⱖⱖ Ⱗⱗ Ⱘⱘ Ⱙⱙ Ⱚⱚ Ⱛⱛ Ⱜⱜ Ⱝⱝ Ⱞⱞ ⰰⰀ ⰱⰁ ⰲⰂ ⰳⰃ ⰴⰄ ⰵⰅ ⰶⰆ ⰷⰇ ⰸⰈ ⰹⰉ ⰺⰊ ⰻⰋ ⰼⰌ ⰽⰍ ⰾⰎ ⰿⰏ ⱀⰐ ⱁⰑ ⱂⰒ ⱃⰓ ⱄⰔ ⱅⰕ ⱆⰖ ⱇⰗ ⱈⰘ ⱉⰙ ⱊⰚ ⱋⰛ ⱌⰜ ⱍⰝ ⱎⰞ ⱏⰟ ⱐⰠ ⱑⰡ ⱒⰢ ⱓⰣ ⱔⰤ ⱕⰥ ⱖⰦ ⱗⰧ ⱘⰨ ⱙⰩ ⱚⰪ ⱛⰫ ⱜⰬ ⱝⰭ ⱞⰮ Ⱡⱡ ⱡⱠ Ɫɫ Ᵽᵽ Ɽɽ ⱥȺ ⱦȾ Ⱨⱨ ⱨⱧ Ⱪⱪ ⱪⱩ Ⱬⱬ ⱬⱫ Ɑɑ Ɱɱ Ɐɐ Ⱳⱳ ⱳⱲ Ⱶⱶ ⱶⱵ Ⲁⲁ ⲁⲀ Ⲃⲃ ⲃⲂ Ⲅⲅ ⲅⲄ Ⲇⲇ ⲇⲆ Ⲉⲉ ⲉⲈ Ⲋⲋ ⲋⲊ Ⲍⲍ ⲍⲌ Ⲏⲏ ⲏⲎ Ⲑⲑ ⲑⲐ Ⲓⲓ ⲓⲒ Ⲕⲕ ⲕⲔ Ⲗⲗ ⲗⲖ Ⲙⲙ ⲙⲘ Ⲛⲛ ⲛⲚ Ⲝⲝ ⲝⲜ Ⲟⲟ ⲟⲞ Ⲡⲡ ⲡⲠ Ⲣⲣ ⲣⲢ Ⲥⲥ ⲥⲤ Ⲧⲧ ⲧⲦ Ⲩⲩ ⲩⲨ Ⲫⲫ ⲫⲪ Ⲭⲭ ⲭⲬ Ⲯⲯ ⲯⲮ Ⲱⲱ ⲱⲰ Ⲳⲳ ⲳⲲ Ⲵⲵ ⲵⲴ Ⲷⲷ ⲷⲶ Ⲹⲹ ⲹⲸ Ⲻⲻ ⲻⲺ Ⲽⲽ ⲽⲼ Ⲿⲿ ⲿⲾ Ⳁⳁ ⳁⳀ Ⳃⳃ ⳃⳂ Ⳅⳅ ⳅⳄ Ⳇⳇ ⳇⳆ Ⳉⳉ ⳉⳈ Ⳋⳋ ⳋⳊ Ⳍⳍ ⳍⳌ Ⳏⳏ ⳏⳎ Ⳑⳑ ⳑⳐ Ⳓⳓ ⳓⳒ Ⳕⳕ ⳕⳔ Ⳗⳗ ⳗⳖ Ⳙⳙ ⳙⳘ Ⳛⳛ ⳛⳚ Ⳝⳝ ⳝⳜ Ⳟⳟ ⳟⳞ Ⳡⳡ ⳡⳠ Ⳣⳣ ⳣⳢ ⴀႠ ⴁႡ ⴂႢ ⴃႣ ⴄႤ ⴅႥ ⴆႦ ⴇႧ ⴈႨ ⴉႩ ⴊႪ ⴋႫ ⴌႬ ⴍႭ ⴎႮ ⴏႯ ⴐႰ ⴑႱ ⴒႲ ⴓႳ ⴔႴ ⴕႵ ⴖႶ ⴗႷ ⴘႸ ⴙႹ ⴚႺ ⴛႻ ⴜႼ ⴝႽ ⴞႾ ⴟႿ ⴠჀ ⴡჁ ⴢჂ ⴣჃ ⴤჄ ⴥჅ Ꙁꙁ ꙁꙀ Ꙃꙃ ꙃꙂ Ꙅꙅ ꙅꙄ Ꙇꙇ ꙇꙆ Ꙉꙉ ꙉꙈ Ꙋꙋ ꙋꙊ Ꙍꙍ ꙍꙌ Ꙏꙏ ꙏꙎ Ꙑꙑ ꙑꙐ Ꙓꙓ ꙓꙒ Ꙕꙕ ꙕꙔ Ꙗꙗ ꙗꙖ Ꙙꙙ ꙙꙘ Ꙛꙛ ꙛꙚ Ꙝꙝ ꙝꙜ Ꙟꙟ ꙟꙞ Ꙣꙣ ꙣꙢ Ꙥꙥ ꙥꙤ Ꙧꙧ ꙧꙦ Ꙩꙩ ꙩꙨ Ꙫꙫ ꙫꙪ Ꙭꙭ ꙭꙬ Ꚁꚁ ꚁꚀ Ꚃꚃ ꚃꚂ Ꚅꚅ ꚅꚄ Ꚇꚇ ꚇꚆ Ꚉꚉ ꚉꚈ Ꚋꚋ ꚋꚊ Ꚍꚍ ꚍꚌ Ꚏꚏ ꚏꚎ Ꚑꚑ ꚑꚐ Ꚓꚓ ꚓꚒ Ꚕꚕ ꚕꚔ Ꚗꚗ ꚗꚖ Ꜣꜣ ꜣꜢ Ꜥꜥ ꜥꜤ Ꜧꜧ ꜧꜦ Ꜩꜩ ꜩꜨ Ꜫꜫ ꜫꜪ Ꜭꜭ ꜭꜬ Ꜯꜯ ꜯꜮ Ꜳꜳ ꜳꜲ Ꜵꜵ ꜵꜴ Ꜷꜷ ꜷꜶ Ꜹꜹ ꜹꜸ Ꜻꜻ ꜻꜺ Ꜽꜽ ꜽꜼ Ꜿꜿ ꜿꜾ Ꝁꝁ ꝁꝀ Ꝃꝃ ꝃꝂ Ꝅꝅ ꝅꝄ Ꝇꝇ ꝇꝆ Ꝉꝉ ꝉꝈ Ꝋꝋ ꝋꝊ Ꝍꝍ ꝍꝌ Ꝏꝏ ꝏꝎ Ꝑꝑ ꝑꝐ Ꝓꝓ ꝓꝒ Ꝕꝕ ꝕꝔ Ꝗꝗ ꝗꝖ Ꝙꝙ ꝙꝘ Ꝛꝛ ꝛꝚ Ꝝꝝ ꝝꝜ Ꝟꝟ ꝟꝞ Ꝡꝡ ꝡꝠ Ꝣꝣ ꝣꝢ Ꝥꝥ ꝥꝤ Ꝧꝧ ꝧꝦ Ꝩꝩ ꝩꝨ Ꝫꝫ ꝫꝪ Ꝭꝭ ꝭꝬ Ꝯꝯ ꝯꝮ Ꝺꝺ ꝺꝹ Ꝼꝼ ꝼꝻ Ᵹᵹ Ꝿꝿ ꝿꝾ Ꞁꞁ ꞁꞀ Ꞃꞃ ꞃꞂ Ꞅꞅ ꞅꞄ Ꞇꞇ ꞇꞆ Ꞌꞌ ꞌꞋ Aa Bb Cc Dd Ee Ff Gg Hh Ii Jj Kk Ll Mm Nn Oo Pp Qq Rr Ss Tt Uu Vv Ww Xx Yy Zz aA bB cC dD eE fF gG hH iI jJ kK lL mM nN oO pP qQ rR sS tT uU vV wW xX yY zZ 𐐀𐐨 𐐁𐐩 𐐂𐐪 𐐃𐐫 𐐄𐐬 𐐅𐐭 𐐆𐐮 𐐇𐐯 𐐈𐐰 𐐉𐐱 𐐊𐐲 𐐋𐐳 𐐌𐐴 𐐍𐐵 𐐎𐐶 𐐏𐐷 𐐐𐐸 𐐑𐐹 𐐒𐐺 𐐓𐐻 𐐔𐐼 𐐕𐐽 𐐖𐐾 𐐗𐐿 𐐘𐑀 𐐙𐑁 𐐚𐑂 𐐛𐑃 𐐜𐑄 𐐝𐑅 𐐞𐑆 𐐟𐑇 𐐠𐑈 𐐡𐑉 𐐢𐑊 𐐣𐑋 𐐤𐑌 𐐥𐑍 𐐦𐑎 𐐧𐑏 𐐨𐐀 𐐩𐐁 𐐪𐐂 𐐫𐐃 𐐬𐐄 𐐭𐐅 𐐮𐐆 𐐯𐐇 𐐰𐐈 𐐱𐐉 𐐲𐐊 𐐳𐐋 𐐴𐐌 𐐵𐐍 𐐶𐐎 𐐷𐐏 𐐸𐐐 𐐹𐐑 𐐺𐐒 𐐻𐐓 𐐼𐐔 𐐽𐐕 𐐾𐐖 𐐿𐐗 𐑀𐐘 𐑁𐐙 𐑂𐐚 𐑃𐐛 𐑄𐐜 𐑅𐐝 𐑆𐐞 𐑇𐐟 𐑈𐐠 𐑉𐐡 𐑊𐐢 𐑋𐐣 𐑌𐐤 𐑍𐐥 𐑎𐐦 𐑏𐐧