#! perl -w # Copyright 2014 Ken Takusagawa # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . open FI,"georgian-small" or die; while(){ chomp; die unless /^2D[012][0-9A-F]$/; $hex=$_; $_=; $_=; chomp; die unless /^GEORGIAN SMALL LETTER (.*)/; $nus{$1}=$hex; $all{$1}=1; #$allhex{$hex}=1; } close FI; open FI,"georgian-capital" or die; while(){ chomp; die unless /^10[ABC][0-9A-F]$/; $hex=$_; $_=; $_=; chomp; die unless /^GEORGIAN CAPITAL LETTER (.*)/; $cap{$1}=$hex; $all{$1}=1; #$allhex{$hex}=1; } close FI; open FI,"georgian-mkhedruli" or die; while(){ chomp; die unless /^10[DEF][0-9A-F]$/; $hex=$_; $_=; $_=; chomp; die unless /^GEORGIAN LETTER (.*)/; $mkh{$1}=$hex; $all{$1}=1; $allhex{$hex}=1; } open FI,"georgian-mkhedruli-archaic" or die; while(){ chomp; die unless /^10[DEF][0-9A-F]$/; $hex=$_; $_=; $_=; chomp; die unless /^GEORGIAN LETTER (.*)/; $mkh{$1}=$hex; $all{$1}=1; $allhex{$hex}=1; } close FI; open FI,"georgian-mkhedruli-extra" or die; while(){ chomp; die unless /^10F[0-9A-F]$/; $hex=$_; $_=; $_=; chomp; s/GEORGIAN LETTER //g; s/GEORGIAN //g; $extra{$hex}=$_; } close FI; print << 'EOF';

Here is a table of 40 characters in the Georgian alphabet that are completely covered by all three scripts as of Unicode 7.0. Beyond the 33 modern letters, these include the 5 archaic letters HE, HIE, WE, HAR, and HOE, and the 2 additional letters YN and AEN. Currently, my computer lacks font support for AEN in all scripts, and for YN in Asomtavruli and Nuskhuri. The Unicode code points are given in hexadecimal.

EOF ; for (sort keys %all){ print ""; print ""; print ""; print ""; print "\n"; } print STDERR (scalar keys %all)," total\n"; print << 'EOF';
MkhedruliAsomtavruliNuskhuri
",lc$_,"$mkh{$_} (&#x$mkh{$_};)$cap{$_} (&#x$cap{$_};)$nus{$_} (&#x$nus{$_};)
EOF ; print "

The Mkhedruli sub-block also contains the following ",scalar(keys %extra), ' characters which do not have corresponding analogues in the other scripts. Currently, my computer lacks font support for the HARD and LABIAL SIGNS.

'; for(sort keys %extra){ print "\n"; } print "
$extra{$_}$_ (&#x$_;)
"; #font does not support these delete @allhex{qw(10FD 10CD 2D2D 10C7 2D27)}; @hlist=keys%allhex; #from "extra" push @hlist,qw(10F6 10F8 10F9 10FA); @hlist=sort@hlist; print "

Here is a random string formed from the ",scalar @hlist," printing Mkhedruli letters. It looks extremely foreign to those used to Latin letters: "; srand 0; $last=-1; for(0..999){ print "" unless $_==0; $c=int rand@hlist; redo if $c==$last; $last=$c; #print STDERR $c; print "&#x$hlist[$c];"; } print "

\n"; print <<'EOF'; EOF ; sub find_missing { for(sort keys %all){ if (defined($mkh{$_})) { print "m"; } else {print " "}; if (defined($cap{$_})) { print "a"; } else {print " "}; if (defined($nus{$_})) { print "n"; } else {print " "}; print " $_"; print "\n"; } }