Home | History | Annotate | Download | only in transforms
      1 <?xml version="1.0" encoding="UTF-8" ?>
      2 <!DOCTYPE supplementalData SYSTEM "../../common/dtd/ldmlSupplemental.dtd">
      3 <!--
      4 Copyright  1991-2013 Unicode, Inc.
      5 CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
      6 For terms of use, see http://www.unicode.org/copyright.html
      7 -->
      8 <supplementalData>
      9 	<version number="$Revision: 12382 $"/>
     10 	<transforms>
     11 		<transform source="Latin" target="ConjoiningJamo" direction="both" visibility="internal">
     12 			<tRule><![CDATA[
     13 # Follows the Ministry of Culture and Tourism romanization: see http://www.korea.net/korea/kor_loca.asp?code=A020303
     14 # http://www.unicode.org/cldr/transliteration_guidelines.html#Korean
     15 #- N.B. DO NOT put any filters, NFD, etc. here -- those are aliased in
     16 #- the INDEX file.  This transliterator is, by itself, not
     17 #- instantiated.  It is used as a part of Latin-Jamo, Latin-Hangul, or
     18 #- inverses thereof.
     19 # Transliteration from Latin characters to Korean script is done in
     20 # two steps: Latin to Jamo, then Jamo to Hangul.  The Jamo-Hangul
     21 # transliteration is done algorithmically following Unicode 3.0
     22 # section 3.11.  This file implements the Latin to Jamo
     23 # transliteration using rules.
     24 # Jamo occupy the block 1100-11FF.  Within this block there are three
     25 # groups of characters: initial consonants or choseong (I), medial
     26 # vowels or jungseong (M), and trailing consonants or jongseong (F).
     27 # Standard Korean syllables are of the form I+M+F*.
     28 # Section 3.11 describes the use of 'filler' jamo to convert
     29 # nonstandard syllables to standard form: the choseong filler 115F and
     30 # the junseong filler 1160.  In this transliterator, we will not use
     31 # 115F or 1160.
     32 # We will, however, insert two 'null' jamo to make foreign words
     33 # conform to Korean syllable structure.  These are the null initial
     34 # consonant 110B (IEUNG) and the null vowel 1173 (EU).  In Latin text,
     35 # we will use the separator in order to disambiguate strings,
     36 # e.g. "kan-ggan" (initial GG) vs. "kanggan" (final NG + initial G).
     37 # We will not use all of the characters in the jamo block.  We will
     38 # only use the 19 initials, 21 medials, and 27 finals possessing a
     39 # jamo short name as defined in section 4.4 of the Unicode book.
     40 # Rules of thumb.  These guidelines provide the basic framework
     41 # for the rules.  They are phrased in terms of Latin-Jamo transliteration.
     42 # The Jamo-Latin rules derive from these, since the Jamo-Latin rules are
     43 # just context-free transliteration of jamo to corresponding short names,
     44 # with the addition of separators to maintain round-trip integrity
     45 # in the context of the Latin-Jamo rules.
     46 # A sequence of vowels:
     47 # - Take the longest sequence you can. If there are too many, or you don't
     48 #   have a starting consonant, introduce a 110B necessary.
     49 # A sequence of consonants.
     50 # - First join the double consonants: G + G - GG
     51 # - In the remaining list,
     52 # -- If there is no preceding vowel, take the first consonant, and insert EU
     53 #    after it. Continue with the rest of the consonants.
     54 # -- If there is one consonant, attach to the following vowel
     55 # -- If there are two consonants and a following vowel, attach one to the
     56 #    preceeding vowel, and one to the following vowel.
     57 # -- If there are more than two consonants, join the first two together if you
     58 #    can: L + G = LG
     59 # -- If you still end up with more than 2 consonants, insert EU after the
     60 #    first one, and continue with the rest of the consonants.
     61 #----------------------------------------------------------------------
     62 # Variables
     63 # Some latin consonants or consonant pairs only occur as initials, and
     64 # some only as finals, but some occur as both.  This makes some jamo
     65 # consonants ambiguous when transliterated into latin.
     66 
     67 #   Initial only: IEUNG BB DD JJ R
     68 #   Final only: BS GS L LB LG LH LM LP LS LT NG NH NJ
     69 #   Initial and Final: B C D G GG H J K M N P S SS T
     70 $Gi = ;
     71 $KKi = ;
     72 $Ni = ;
     73 $Di = ;
     74 $TTi = ;
     75 $Li = ;
     76 $Mi = ;
     77 $Bi = ;
     78 $PPi = ;
     79 $Si = ;
     80 $SSi = ;
     81 $IEUNG = ; # null initial, inserted during Latin-Jamo
     82 $Ji = ;
     83 $JJi = ;
     84 $CHi = ;
     85 $Ki = ;
     86 $Ti = ;
     87 $Pi = ;
     88 $Hi = ;
     89 
     90 $A = ;
     91 $AE = ;
     92 $YA = ;
     93 $YAE = ;
     94 $EO = ;
     95 $E = ;
     96 $YEO = ;
     97 $YE = ;
     98 $O = ;
     99 $WA = ;
    100 $WAE = ;
    101 $OE = ;
    102 $YO = ;
    103 $U = ;
    104 $WO = ;
    105 $WE = ;
    106 $WI = ;
    107 $YU = ;
    108 $EU = ; # null medial, inserted during Latin-Jamo
    109 $UI = ;
    110 $I = ;
    111 
    112 $Gf = ;
    113 $GGf = ;
    114 $GS = ;
    115 $Nf = ;
    116 $NJ = ;
    117 $NH = ;
    118 $Df = ;
    119 $L = ;
    120 $LG = ;
    121 $LM = ;
    122 $LB = ;
    123 $LS = ;
    124 $LT = ;
    125 $LP = ;
    126 $LH = ;
    127 $Mf = ;
    128 $Bf = ;
    129 $BS = ;
    130 $Sf = ;
    131 $SSf = ;
    132 $NG = ;
    133 $Jf = ;
    134 $Cf = ;
    135 $Kf = ;
    136 $Tf = ;
    137 $Pf = ;
    138 $Hf = ;
    139 
    140 $jamoInitial = [-];
    141 $jamoMedial = [-];
    142 $latinInitial = [bcdghjklmnprst];
    143 
    144 # Any character in the latin transliteration of a medial
    145 $latinMedial = [aeiouwy];
    146 
    147 # The last character of the latin transliteration of a medial
    148 $latinMedialEnd = [aeiou];
    149 
    150 # Disambiguation separator
    151 $sep = \-;
    152 
    153 #----------------------------------------------------------------------
    154 # Jamo-Latin
    155 #
    156 # Jamo to latin is relatively simple, since it is the latin that is
    157 # ambiguous.  Most rules are straightforward, and we encode them below
    158 # as simple add-on back rule, e.g.:
    159 #   $jamoMedial {bs}  $BS;
    160 # becomes
    161 #   $jamoMedial {bs}  $BS;
    162 #
    163 # Furthermore, we don't care about the ordering for Jamo-Latin because
    164 # we are going from single characters, so we can very easily piggyback
    165 # on the Latin-Jamo.
    166 #
    167 # The main issue with Jamo-Latin is when to insert separators.
    168 # Separators are inserted to obtain correct round trip behavior.  For
    169 # example, the sequence Ki A Gf Gi E, if transliterated to "kagge",
    170 # would then round trip to Ki A GGi E.  To prevent this, we insert a
    171 # separator: "kag-ge".  IMPORTANT: The need for separators depends
    172 # very specifically on the behavior of the Latin-Jamo rules.  A change
    173 # in the Latin-Jamo behavior can completely change the way the
    174 # separator insertion must be done.
    175 
    176 # First try to preserve actual separators in the jamo text by doubling
    177 # them.  This fixes problems like:
    178 # (Di)(A)(Ji)(U)(NG)-(IEUNG)(YEO)(Nf)(Gi)(YEO)(L) = dajung-yeongyeol
    179 # = (Di)(A)(Ji)(U)(NG)(IEUNG)(YEO)(Nf)(Gi)(YEO)(L).  This is optional
    180 # -- if we don't care about losing separators in the jamo, we can delete
    181 # this rule.
    182 $sep $sep  $sep;
    183 
    184 # Triple consonants.  For three consonants "axxx" we insert a
    185 # separator between the first and second "x" if XXf, Xf, and Xi all
    186 # exist, and we have A Xf XXi.  This prevents the reverse
    187 # transliteration to A XXf Xi.
    188 
    189 $sep  $latinMedialEnd s {} $SSi;
    190 
    191 # For vowels the rule is similar.  If there is a vowel "ae" such that
    192 # "a" by itself and "e" by itself are vowels, then we want to map A E
    193 # to "a-e" so as not to round trip to AE.  However, in the text Ki EO
    194 # IEUNG E we don't need to map to "keo-e".  "keoe" suffices.  For
    195 # vowels of the form "aei", both "ae" + "i" and "a" + "ei" must be
    196 # tested.  NOTE: These rules used to have a left context of
    197 # $latinInitial instead of [^$latinMedial].  The problem with this is
    198 # sequences where an initial IEUNG is transliterated away:
    199 #   (IEUNG)(A)(IEUNG)(EO) = aeo = (IEUNG)(AE)(IEUNG)(O)
    200 # Also problems in cases like gayeo, which needs to be gaye-o
    201 # The hard case is a chain, like aeoeu. Normally interpreted as ae oe u. So for a-eoeu, we have to insert $sep
    202 # But, we don't insert between the o and the e.
    203 #
    204 # a ae
    205 # e eo eu
    206 # i
    207 # o oe
    208 # u
    209 # ui
    210 # wa wae we wi
    211 # yae ya yeo ye yo yu
    212 
    213 # These are simple, since they can't chain. Note that we don't handle extreme cases like [ga][eo][e][o]
    214 
    215 $sep  a {} [$E $EO $EU];
    216 $sep  [^aow] e {} [$O $OE];
    217 $sep  [^aowy] e {} [$U $UI];
    218 $sep  [^ey] o {} [$E $EO $EU];
    219 $sep  [^y] u {} [$I];
    220 
    221 # Similar to the above, but with an intervening $IEUNG.
    222 
    223 $sep  [^$latinMedial] [y] e {} $IEUNG [$O $OE];
    224 $sep  [^$latinMedial] e {} $IEUNG [$O $OE $U];
    225 
    226 $sep  [^$latinMedial] [o a] {} $IEUNG [$E $EO $EU];
    227 $sep  [^$latinMedial] [w y] a {} $IEUNG [$E $EO $EU];
    228 
    229 # Single finals followed by IEUNG.  The jamo sequence A Xf IEUNG E,
    230 # where Xi also exists, must be transliterated as "ax-e" to prevent
    231 # the round trip conversion to A Xi E.
    232 $sep  $latinMedialEnd b {} $IEUNG $jamoMedial;
    233 $sep  $latinMedialEnd d {} $IEUNG $jamoMedial;
    234 $sep  $latinMedialEnd g {} $IEUNG $jamoMedial;
    235 $sep  $latinMedialEnd h {} $IEUNG $jamoMedial;
    236 $sep  $latinMedialEnd j {} $IEUNG $jamoMedial;
    237 $sep  $latinMedialEnd k {} $IEUNG $jamoMedial;
    238 $sep  $latinMedialEnd m {} $IEUNG $jamoMedial;
    239 $sep  $latinMedialEnd n {} $IEUNG $jamoMedial;
    240 $sep  $latinMedialEnd p {} $IEUNG $jamoMedial;
    241 $sep  $latinMedialEnd s {} $IEUNG $jamoMedial;
    242 $sep  $latinMedialEnd t {} $IEUNG $jamoMedial;
    243 $sep  $latinMedialEnd l {} $IEUNG $jamoMedial;
    244 
    245 # Double finals followed by IEUNG.  Similar to the single finals
    246 # followed by IEUNG.  Any latin consonant pair X Y, between medials,
    247 # that we would split by Latin-Jamo, we must handle when it occurs as
    248 # part of A XYf IEUNG E, to prevent round trip conversion to A Xf Yi E
    249 $sep  $latinMedialEnd b s {} $IEUNG $jamoMedial;
    250 $sep  $latinMedialEnd k k {} $IEUNG $jamoMedial;
    251 $sep  $latinMedialEnd g s {} $IEUNG $jamoMedial;
    252 $sep  $latinMedialEnd l b {} $IEUNG $jamoMedial;
    253 $sep  $latinMedialEnd l g {} $IEUNG $jamoMedial;
    254 $sep  $latinMedialEnd l h {} $IEUNG $jamoMedial;
    255 $sep  $latinMedialEnd l m {} $IEUNG $jamoMedial;
    256 $sep  $latinMedialEnd l p {} $IEUNG $jamoMedial;
    257 $sep  $latinMedialEnd l s {} $IEUNG $jamoMedial;
    258 $sep  $latinMedialEnd l t {} $IEUNG $jamoMedial;
    259 $sep  $latinMedialEnd n g {} $IEUNG $jamoMedial;
    260 $sep  $latinMedialEnd n h {} $IEUNG $jamoMedial;
    261 $sep  $latinMedialEnd n j {} $IEUNG $jamoMedial;
    262 $sep  $latinMedialEnd s s {} $IEUNG $jamoMedial;
    263 $sep  $latinMedialEnd ch {} $IEUNG $jamoMedial;
    264 
    265 # Split doubles.  Text of the form A Xi Xf E, where XXi also occurs,
    266 # we transliterate as "ax-xe" to prevent round trip transliteration as
    267 # A XXi E.
    268 
    269 $sep  $latinMedialEnd j {} $Ji $jamoMedial;
    270 $sep  $latinMedialEnd k {} $Ki $jamoMedial;
    271 $sep  $latinMedialEnd s {} $Si $jamoMedial;
    272 
    273 # XYY.  This corresponds to the XYY rule in Latin-Jamo.  By default
    274 # Latin-Jamo maps "xyy" to Xf YYi, to keep YY together.  As a result,
    275 # "xyy" forms that correspond to XYf Yi must be transliterated as
    276 # "xy-y".
    277 $sep  $latinMedialEnd b s {} [$Si $SSi];
    278 $sep  $latinMedialEnd g s {} [$Si $SSi];
    279 $sep  $latinMedialEnd l b {} [$Bi];
    280 $sep  $latinMedialEnd l g {} [$Gi];
    281 $sep  $latinMedialEnd l s {} [$Si $SSi];
    282 $sep  $latinMedialEnd n g {} [$Gi];
    283 $sep  $latinMedialEnd n j {} [$Ji $JJi];
    284 # $sep  $latinMedialEnd l  {} [$PPi];
    285 # $sep  $latinMedialEnd l  {} [$TTi];
    286 $sep  $latinMedialEnd l p {} [$Pi];
    287 $sep  $latinMedialEnd l t {} [$Ti];
    288 $sep  $latinMedialEnd k {} [$KKi $Ki];
    289 $sep  $latinMedialEnd p {} $Pi;
    290 $sep  $latinMedialEnd t {} $Ti;
    291 $sep  $latinMedialEnd c {} [$Hi];
    292 
    293 # Deletion of IEUNG is handled below.
    294 #----------------------------------------------------------------------
    295 # Latin-Jamo
    296 # [Basic, context-free Jamo-Latin rules are embedded here too.  See
    297 # above.]
    298 # Split digraphs: Text of the form 'axye', where 'xy' is a final
    299 # digraph, 'x' is a final (by itself), 'y' is an initial, and 'a' and
    300 # 'e' are medials, we want to transliterate this as A Xf Yi E rather
    301 # than A XYf IEUNG E.  We do NOT include text of the form "axxe",
    302 # since that is handled differently below.  These rules are generated
    303 # programmatically from the jamo data.
    304 $jamoMedial {b s} $latinMedial  $Bf $Si;
    305 $jamoMedial {g s} $latinMedial  $Gf $Si;
    306 $jamoMedial {l b} $latinMedial  $L $Bi;
    307 $jamoMedial {l g} $latinMedial  $L $Gi;
    308 $jamoMedial {l h} $latinMedial  $L $Hi;
    309 $jamoMedial {l m} $latinMedial  $L $Mi;
    310 $jamoMedial {l p} $latinMedial  $L $Pi;
    311 $jamoMedial {l s} $latinMedial  $L $Si;
    312 $jamoMedial {l t} $latinMedial  $L $Ti;
    313 $jamoMedial {n g} $latinMedial  $Nf $Gi;
    314 $jamoMedial {n h} $latinMedial  $Nf $Hi;
    315 $jamoMedial {n j} $latinMedial  $Nf $Ji;
    316 
    317 # Single consonants are initials: Text of the form 'axe', where 'x'
    318 # can be an initial or a final, and 'a' and 'e' are medials, we want
    319 # to transliterate as A Xi E rather than A Xf IEUNG E.
    320 $jamoMedial {b} $latinMedial  $Bi;
    321 $jamoMedial {ch} $latinMedial  $CHi;
    322 $jamoMedial {d} $latinMedial  $Di;
    323 $jamoMedial {g} $latinMedial  $Gi;
    324 $jamoMedial {h} $latinMedial  $Hi;
    325 $jamoMedial {j} $latinMedial  $Ji;
    326 $jamoMedial {k} $latinMedial  $Ki;
    327 $jamoMedial {m} $latinMedial  $Mi;
    328 $jamoMedial {n} $latinMedial  $Ni;
    329 $jamoMedial {p} $latinMedial  $Pi;
    330 $jamoMedial {s} $latinMedial  $Si;
    331 $jamoMedial {t} $latinMedial  $Ti;
    332 $jamoMedial {l} $latinMedial  $Li;
    333 
    334 # Doubled initials.  The sequence "axxe", where XX exists as an initial
    335 # (XXi), and also Xi and Xf exist (true of all digraphs XX), we want
    336 # to transliterate as A XXi E, rather than split to A Xf Xi E.
    337 $jamoMedial {p p} $latinMedial  $PPi;
    338 $jamoMedial {t t} $latinMedial  $TTi;
    339 $jamoMedial {j j} $latinMedial  $JJi;
    340 $jamoMedial {k k} $latinMedial  $KKi;
    341 $jamoMedial {s s} $latinMedial  $SSi;
    342 
    343 # XYY.  Because doubled consonants bind more strongly than XY
    344 # consonants, we must handle the sequence "axyy" specially.  Here XYf
    345 # and YYi must exist.  In these cases, we map to Xf YYi rather than
    346 # XYf.
    347 # However, there are two special cases.
    348 $jamoMedial {lp} p p  $LP;
    349 $jamoMedial {lt} t t  $LT;
    350 # End special cases
    351 
    352 $jamoMedial {b} s s  $Bf;
    353 $jamoMedial {g} s s  $Gf;
    354 $jamoMedial {l} b b  $L;
    355 $jamoMedial {l} g g  $L;
    356 $jamoMedial {l} s s  $L;
    357 $jamoMedial {l} t t  $L;
    358 $jamoMedial {l} p p  $L;
    359 $jamoMedial {n} g g  $Nf;
    360 $jamoMedial {n} j j  $Nf;
    361 
    362 # Finals: Attach consonant with preceding medial to preceding medial.
    363 # Do this BEFORE mapping consonants to initials.  Longer keys must
    364 # precede shorter keys that they start with, e.g., the rule for 'bs'
    365 # must precede 'b'.
    366 # [BASIC Jamo-Latin FINALS handled here.  Order irrelevant within this
    367 # block for Jamo-Latin.]
    368 $jamoMedial {bs}  $BS;
    369 $jamoMedial {b}  $Bf;
    370 $jamoMedial {ch}  $Cf;
    371 $jamoMedial {c}  $Cf;
    372 $jamoMedial {d}  $Df;
    373 $jamoMedial {kk}  $GGf;
    374 $jamoMedial {gs}  $GS;
    375 $jamoMedial {g}  $Gf;
    376 $jamoMedial {h}  $Hf;
    377 $jamoMedial {j}  $Jf;
    378 $jamoMedial {k}  $Kf;
    379 $jamoMedial {lb}  $LB;  $jamoMedial {lg}  $LG;
    380 $jamoMedial {lh}  $LH;
    381 $jamoMedial {lm}  $LM;
    382 $jamoMedial {lp}  $LP;
    383 $jamoMedial {ls}  $LS;
    384 $jamoMedial {lt}  $LT;
    385 $jamoMedial {l}  $L;
    386 $jamoMedial {m}  $Mf;
    387 $jamoMedial {ng}  $NG;
    388 $jamoMedial {nh}  $NH;
    389 $jamoMedial {nj}  $NJ;
    390 $jamoMedial {n}  $Nf;
    391 $jamoMedial {p}  $Pf;
    392 $jamoMedial {ss}  $SSf;
    393 $jamoMedial {s}  $Sf;
    394 $jamoMedial {t}  $Tf;
    395 
    396 # Initials: Attach single consonant to following medial.  Do this
    397 # AFTER mapping finals.  Longer keys must precede shorter keys that
    398 # they start with, e.g., the rule for 'gg' must precede 'g'.
    399 # [BASIC Jamo-Latin INITIALS handled here.  Order irrelevant within
    400 # this block for Jamo-Latin.]
    401 {kk} $latinMedial  $KKi;
    402 {g} $latinMedial  $Gi;
    403 {n} $latinMedial  $Ni;
    404 {tt} $latinMedial  $TTi;
    405 {d} $latinMedial  $Di;
    406 {l} $latinMedial  $Li;
    407 {m} $latinMedial  $Mi;
    408 {pp} $latinMedial  $PPi;
    409 {b} $latinMedial  $Bi;
    410 {ss} $latinMedial  $SSi;
    411 {s} $latinMedial  $Si;
    412 {jj} $latinMedial  $JJi;
    413 {j} $latinMedial  $Ji;
    414 {ch} $latinMedial  $CHi;
    415 {c} $latinMedial  $CHi;
    416 {k} $latinMedial  $Ki;
    417 {t} $latinMedial  $Ti;
    418 {p} $latinMedial  $Pi;
    419 {h} $latinMedial  $Hi;
    420 
    421 # 'r' in final position.  Because of the equivalency of the 'l' and
    422 # 'r' jamo (the glyphs are the same), we try to provide the same
    423 # equivalency in Latin-Jamo.  The 'l' to 'r' conversion is handled
    424 # below.  If we see an 'r' in an apparent final position, treat it
    425 # like 'l'.  For example, "karka" = Ki A R EU Ki A without this rule.
    426 # Instead, we want Ki A L Ki A.
    427 
    428 # Initial + Final: If we match the next rule, we have initial then
    429 # final consonant with no intervening medial.  We insert the null
    430 # vowel BEFORE it to create a well-formed syllable.  (In the next rule
    431 # we insert a null vowel AFTER an anomalous initial.)
    432 
    433 
    434 # Initial + X: This block matches an initial consonant not followed by
    435 # a medial.  We insert the null vowel after it.  We handle double
    436 # initials explicitly here; for single initial consonants we insert EU
    437 # (as Latin) after them and let standard rules do the rest.
    438 # BREAKS ROUND TRIP INTEGRITY
    439 
    440 kk  $KKi $EU;
    441 tt  $TTi $EU;
    442 pp  $PPi $EU;
    443 ss  $SSi $EU;
    444 jj  $JJi $EU;
    445 ch  $CHi $EU;
    446 ([lbdghjkmnpst])  | $1 eu;
    447 
    448 # X + Final: Finally we have to deal with a consonant that can only be
    449 # interpreted as a final (not an initial) and which is preceded
    450 # neither by an initial nor a medial.  It is the start of the
    451 # syllable, but cannot be.  Most of these will already be handled by
    452 # the above rules.  'bs' splits into Bi EU Sf.  Similar for 'gs' 'ng'
    453 # 'nh' 'nj'.  The only problem is 'l' and digraphs starting with 'l'.
    454 # For this isolated case, we could add a null initial and medial,
    455 # which would give "la" = IEUNG EU L IEUNG A, for example.  A more
    456 # economical solution is to transliterate isolated "l" (that is,
    457 # initial "l") to "r".  (Other similar conversions of consonants that
    458 # occur neither as initials nor as finals are handled below.)
    459 l  | r;
    460 
    461 # Medials.  If a medial is preceded by an initial, then we proceed
    462 # normally.  As usual, longer keys must precede shorter ones.
    463 # [BASIC Jamo-Latin MEDIALS handled here.  Order irrelevant within
    464 # this block for Jamo-Latin.]
    465 #
    466 # a e i o u
    467 # ae
    468 # eo eu
    469 # oe
    470 # ui
    471 # wa we wi
    472 # wae
    473 # yae ya yeo ye yo yu
    474 
    475 $jamoInitial {ae}  $AE;
    476 $jamoInitial {a}  $A;
    477 $jamoInitial {eo}  $EO;
    478 $jamoInitial {eu}  $EU;
    479 $jamoInitial {e}  $E;
    480 $jamoInitial {i}  $I;
    481 $jamoInitial {oe}  $OE;
    482 $jamoInitial {o}  $O;
    483 $jamoInitial {ui}  $UI;
    484 $jamoInitial {u}  $U;
    485 $jamoInitial {wae}  $WAE;
    486 $jamoInitial {wa}  $WA;
    487 $jamoInitial {wo}  $WO;
    488 $jamoInitial {we}  $WE;
    489 $jamoInitial {wi}  $WI;
    490 $jamoInitial {yae}  $YAE;
    491 $jamoInitial {ya}  $YA;
    492 $jamoInitial {yeo}  $YEO;
    493 $jamoInitial {ye}  $YE;
    494 $jamoInitial {yo}  $YO;
    495 $jamoInitial {yu}  $YU;
    496 
    497 # We may see an anomalous isolated 'w' or 'y'.  In that case, we
    498 # interpret it as 'wi' and 'yu', respectively.
    499 # BREAKS ROUND TRIP INTEGRITY
    500 $jamoInitial {w}  | wi;
    501 $jamoInitial {y}  | yu;
    502 
    503 # Otherwise, insert a null consonant IEUNG before the medial (which is
    504 # still an untransliterated latin vowel).
    505 ($latinMedial)  $IEUNG | $1;
    506 
    507 # Convert non-jamo latin consonants to equivalents.  These occur as
    508 # neither initials nor finals in jamo.  'l' occurs as a final, but not
    509 # an initial; it is handled above.  The following letters (left hand
    510 # side) will never be output by Jamo-Latin.
    511 f  | p;
    512 q  | k;
    513 v  | b;
    514 x  | ks;
    515 z  | s;
    516 r  | l;
    517 c  | k;
    518 
    519 # Delete separators (Latin-Jamo).
    520 $sep  ;
    521 
    522 # Delete null consonants (Jamo-Latin).  Do NOT delete null EU vowels,
    523 # since these may also occur in text.
    524 
    525  $IEUNG;
    526 
    527 #- N.B. DO NOT put any filters, NFD, etc. here -- those are aliased in
    528 #- the INDEX file.  This transliterator is, by itself, not
    529 #- instantiated.  It is used as a part of Latin-Jamo, Latin-Hangul, or
    530 #- inverses thereof.
    531 # eof
    532 			]]></tRule>
    533 		</transform>
    534 	</transforms>
    535 </supplementalData>
    536