Richard Suchenwirth 2002-07-10 - Here is a tiny tool that may be helpful when dealing with Korean Hangul \ characters. You can paste in Hangul strings into the upper entry, and convert it to (approximated)
Hanglish transliteration with <Return>; or type Hanglish into the bottom entry, and convert it with <Return> to Hangul if possible. You can also visualize any Unicode in the \u.... notation, as the example shows.
proc ui {} {
set font {Helvetica 14}
label .1 -text Hangul:
entry .2 -textvar ::hangul -font $font
label .3 -text =
entry .4 -textvar ::hanglish
bind .2 <Return> {set ::hanglish [hangul2hanglish $::hangul]}
bind .4 <Return> {set ::hangul [hanglish $::hanglish]}
grid .1 .2 -sticky news
grid .3 .4 -sticky news
grid columnconfigure . 1 -weight 1
}
proc hangul2hanglish s {
set lead {g gg n d dd r m b bb s ss "" j jj c k t p h}
set vowel {a ae ya yai e ei ye yei o oa oai oi yo u ue uei ui yu w wi i}
set tail {"" g gg gs n nj nh d l lg lm lb ls lt lp lh m b bs s ss
ng j c k t p h}
set res ""
foreach c [split $s ""] {
scan $c %c cnum
if {$cnum>=0xAC00 && $cnum<0xD7A3} {
incr cnum -0xAC00
set l [expr {$cnum / (28*21)}]
set v [expr {($cnum/28) % 21}]
set t [expr {$cnum % 28}]
append res [lindex $lead $l ]
append res [lindex $vowel $v]
append res "[lindex $tail $t] "
} else {append res $c}
}
set res
}
proc hanglish2uc hanglish {
set L ""; set V "" ;# in case regexp doesn't hit
set hanglish [string map {
AE R SH S R L NG Q YE X YAI F AI R YA V YO Y YU Z VI F
} [string toupper $hanglish]]
regexp {^([GNDLMBSQJCKTPH]+)?([ARVFEIXOYUZW]+)([GNDLMBSQJCKTPH]*)$} \
$hanglish -> L V T ;# lead cons.-vowel-trail cons.
if {$L==""} {set L Q}
if {$V==""} {return $hanglish}
set l [lsearch {G GG N D DD L M B BB S SS Q J JJ C K T P H} $L]
set v [lsearch {A R V F E EI X XI O OA OR OI Y U UE UEI UI Z W WI I} $V]
set t [lsearch {"" G GG GS N NJ NH D L LG LM LB LS LT LP LH \
M B BS S SS Q J C K T P H} $T] ;# trailing consonants
if {[min $l $v $t] < 0} {return $hanglish}
format %c [expr {$l*21*28 + $v*28 + $t + 0xAC00}]
}
proc min args {lindex [lsort -real $args] 0}
proc hanglish argl {
set res ""
foreach i $argl {
foreach j [split $i -] {append res [hanglish2uc $j]}
}
append res " "
}
ui
After downloading a Hangul font, it only took to change the second line of
ui to
set font {"Baekmuk Dotum" 13 bold}
to port the above code onto my
iPAQ ;-)