﻿#--------------------------------------------------------------------
# Copyright (c) 1999-2001, International Business Machines
# Corporation and others. All Rights Reserved.
#--------------------------------------------------------------------
# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/resources/Attic/Transliterator_Latin_Katakana.txt,v $
# $Date: 2001/10/20 01:33:44 $
# $Revision: 1.5 $
#--------------------------------------------------------------------

::NFD (NFC) ;
:: [:Latin:] Lower ();

# Uses modified Hepburn. Small changes to make  unambiguous.

# | Kunrei-shiki: Hepburn/MHepburn
# | ------------------------------
# | si: shi
# | si ~ya: sha
# | si ~yu: shu
# | si ~yo: sho
# | zi: ji
# | zi ~ya: ja
# | zi ~yu: ju
# | zi ~yo: jo
# | ti: chi
# | ti ~ya: cha
# | ti ~yu: chu
# | ti ~yu: cho
# | tu: tsu
# | di: ji/dji
# | du: zu/dzu
# | hu: fu

# | For foreign words:
# | -----------------
# | se ~i si
# | si ~e she
# | 
# | ze ~i zi
# | zi ~e je
# | 
# | te ~i ti
# | ti ~e che
# | te ~u tu
# | 
# | de ~i di
# | de ~u du
# | de ~i di
# | 
# | he ~u: hu
# | hu ~a fa
# | hu ~i fi
# | hu ~e he
# | hu ~o ho

# Most small forms are generated, but if necessary
# explicit small forms are given with ~a, ~ya, etc.

#------------------------------------------------------
# Variables

$vowel = [aeiou] ;
$macron = \u0304 ;

# Variables used for doubled-consonants with tsu

$kana = [\u3041-\u3094] ;

$voice = [\u3099\u309B];
$semivoice = [\u309A\u309C];

$k_start = [カキクケコかきくけこ] ;

$s_start = [サシスセソさしすせそ] ;

$j_start = [シし] $voice ;

$t_start = [タチツテトたちつてと] ;

$n_start = [ナニヌネノンなにぬねの] ;

$h_start = [ハヒヘホはひへほ] ;
$f_start = [フふ] ;

$m_start = [マミムメモまみむめも] ;

$y_start = [ヤユヨやゆよ] ;

$r_start = [ラリルレロらりるれろ] ;

$w_start = [ワヰヱヲわゐゑを] ;

$v_start = [ワヰヱヲ]゙ ;

# if ン is followed by $n_quoter, then it needs an
# apostrophe after its romaji form to disambiguate it.
# e.g., ン ア ! =  ナ, so represent as "n'a", not "na".

$n_quoter  =  [ア イ ウ エ オ ナ ニ ヌ ネ ノ ヤ ユ ヨ ン] ;

$small_y = [ャィュェョ] ;

$iteration = \u309D ;

#------------------------------------------------------
# katakana rules

# Punctuation

'.' <> 。;
',' <> 、;
# ' ' } [a-z] > ; # delete spaces before latin
# ' ' < [^' '\u30A0-\u30ff] {} ['\u30A0-\u30ff] ; #insert spaces before hiragana

# Iteration Mark
# Copy previous letter & marks

# TODO
# | $1 $1 < ($kana [[:M:]$voice$semivoice]?) $iteration

# Specials for katakana -- not shared with hiragana

va <> ヷ ;
vi <> ヸ ;
ve <> ヹ ;
vo <> ヺ ;
'~ka' <> ヵ ;
'~ke' <> ヶ ;

# ~~~ begin shared rules ~~~

#special

ya < '~'ャ;
yi < '~'ィ ;
yu < '~'ュ;
ye < '~'ェ;
yo < '~'ョ;

#normal

a <> ア ;

b | '~' < ヒ ゙} $small_y ;
by } $vowel > ビ | '~y' ;

ba <> バ ;
bi <> ビ ;
bu <> ブ ;
be <> ベ ;
bo <> ボ ;

c } i > | s ;
c } e > | s ;

da <> ダ ;
di <> ディ ;
du <> デゥ ;
de <> デ ;
do <> ド ;
dzu <> ヅ ;
dja < ヂャ ;
dji'~i' < ヂィ ; # liu
dju < ヂュ ;
dje < ヂェ ;
djo < ヂョ ;
dji <> ヂ ;
dj  } $vowel > ヂ | '~y' ;

# TODO: QUESTION: use ĵĴżŻ instead of dj, dz

cha < チャ ;
chi'~i' < チィ ; # liu
chu < チュ ;
che < チェ ;
cho < チョ ;
chi <> チ ;
ch } $vowel > チ | '~y' ;

e <> エ ;

g | '~' < ギ} $small_y ;
gy  } $vowel > ギ | '~y' ;

ga <> ガ ;
gi <> ギ ;
gu <> グ ;
ge <> ゲ ;
go <> ゴ ;

i <> イ ;

# j  } $vowel > ジ | '~y' ;

ja <> ジャ ;
ji'~i' < ジィ ; # liu
ju <> ジュ ;
je <> ジェ ;
jo <> ジョ ;
ji <> ジ ;

k | '~' < キ} $small_y ;
ky  } $vowel > キ | '~y' ;

ka <> カ ;
ki <> キ ;
ku <> ク ;
ke <> ケ ;
ko <> コ ;

m | '~' < ミ} $small_y ;
my  } $vowel > ミ | '~y' ;

ma <> マ ;
mi <> ミ ;
mu <> ム ;
me <> メ ;
mo <> モ ;

m } [pbfv] > ン ;

n | '~' < ニ } $small_y ;
ny  } $vowel > ニ | '~y' ;

na <> ナ ;
ni <> ニ ;
nu <> ヌ ;
ne <> ネ ;
no <> ノ ;

o <> オ ;

p | '~' < ピ } $small_y ;
py  } $vowel > ピ | '~y' ;

pa <> パ ;
pi <> ピ ;
pu <> プ ;
pe <> ペ ;
po <> ポ ;

h | '~' < ヒ } $small_y ;
hy  } $vowel > ヒ | '~y' ;

ha <> ハ ;
hi <> ヒ ;
hu <> ヘゥ ;
he <> ヘ ;
ho <> ホ ;

# f | '~' < フ } $small_y ;
# f } $vowel > フ | '~' ;

fa <> ファ ;
fi <> フィ ;
fe <> フェ ;
fo <> フォ ;
fu <> フ ;

r | '~' < リ } $small_y ;
ry  } $vowel > リ | '~y' ;

ra <> ラ ;
ri <> リ ;
ru <> ル ;
re <> レ ;
ro <> ロ ;

za <> ザ ;
zi <> ゼィ ;
zu <> ズ ;
ze <> ゼ ;
zo <> ゾ ;

sa <> サ ;
si <> セィ ;
su <> ス ;
se <> セ ;
so <> ソ ;

sha < シャ ;
shi'~i' < シィ ; # liu
shu < シュ ;
she < シェ ;
sho < ショ ;
shi <> シ ;
sh } $vowel > シ | '~y' ;

ta <> タ ;
ti <> ティ ;
tu <> テゥ ;
te <> テ ;
to <> ト ;

tsu <> ツ ;

# v  } $vowel > ヴ | '~' ;

#'v~a' < ヴァ ; # liu
#'v~i' < ヴィ ; # liu
#'v~e' < ヴェ ; # liu
#'v~o' < ヴォ ; # liu
vu <> ヴ ;

u <> ウ ;

# w  } $vowel > ウ | '~' ;

wa <> ワ ;
wi <> ヰ ;
wu > ウ ;
we <> ヱ ;
wo <> ヲ ;

ya <> ヤ ;
yi > イ ;
yu <> ユ ;
ye > エ ;
yo <> ヨ ;

# double consonants

#specials
s } sh > ッ ;
t } ch > ッ ;

#voiced

j } j <> ッ } $j_start ;
b } b <> ッ } [$h_start$f_start] $voice;
d } d <> ッ } $t_start $voice;
g } g <> ッ } $k_start $voice;
p } p <> ッ } [$h_start$f_start] $semivoice;
# v } v <> ッ } [ワヰウヱヲう]  $voice ;
z } z <> ッ } $s_start $voice;
v } v <> ッ } $v_start;

# normal

k } k <> ッ } $k_start ;
m } m <> ッ } $m_start ;
n } n <> ッ } $n_start ;
h } h <> ッ } $h_start ;
f } f <> ッ } $f_start ;
r } r <> ッ } $r_start ;
t } t <> ッ } $t_start ;
s } s <> ッ } $s_start ;

w } w  <> ッ } $w_start;
y } y <> ッ } $y_start;

# completeness 
x } x > ッ ;
c } k > ッ ;
c } c > ッ ;
c } q > ッ ;
l } l > ッ ;
q } q > ッ ;
# y } y > ッ ;
# w } w > ッ ;

# prolonged vowel mark. this indicates a doubling of
# the preceding vowel sound

#a < a { ー ; # liu
#e < e { ー ; # liu
#i < i { ー ; # liu
#o < o { ー ; # liu
#u < u { ー ; # liu

$macron <> ー ;

# small forms

'~a' <> ァ ;
'~i' <> ィ ;
'~u' <> ゥ ;
'~e' <> ェ ;
'~o' <> ォ ;
'~tsu' <> ッ ;
'~wa' <> ヮ ;
'~ya' <> ャ ;
'~yi' > ィ ;
'~yu' <> ュ ;
'~ye' > ェ ;
'~yo' <> ョ ;

# h- rule: lengthens vowel if not followed by a vowel

[aeiou] } h > ー ;

# one-way latin- > kana rules. these do not occur in
# well-formed romaji representing actual japanese text.
# their purpose is to make all romaji map to kana of
# some sort.

# the following are not really necessary, but produce
# slightly more natural results.

cy > セィ ;
dy > ディ ;
hy > ヒ ;
sy > セィ ;
ty > ティ ;
zy > ゼィ ;

h > ヘ ;

# isolated consonants listed here so as not to mask
# longer rules above.

ch > チ;
sh > シ ;
dz > ヅ ;
dj > ヂ;

b > ブ ;
d > デ ;
g > グ ;
k > ク ;
m > ム ;
n'' < ン } $n_quoter ;
n <> ン ;
p > プ ;
r > ル ;
s > ス ;
t > テ ;
y > イ ;
z > ズ ;
v > ヴ ;

f > フ;
j  > ジ;
w > ウ;

# simple substitutions using backup

c > | k ;
l > | r ;
q > | k ;
x > | ks ;

# ~~~ END shared rules ~~~

#------------------------------------------------------
# Final cleanup

'~' > ; # delete stray tildes between letters
[:Katakana:] { '' } [:Latin:] > ; # delete stray quotes between letters

:: NFC (NFD) ;

# eof
