﻿ // -*- Coding: utf-8; -*-
//--------------------------------------------------------------------
// Copyright (c) 1999-2001, International Business Machines
// Corporation and others.  All Rights Reserved.
//--------------------------------------------------------------------
// THIS IS A MACHINE-GENERATED FILE
// Tool: dumpicurules.bat
// Source: ../../text/resources/Transliterator_Latin_Jamo.txt
// Date: Tue Nov 27 17:39:12 2001
//--------------------------------------------------------------------

// Latin_Jamo

translit_Latin_Jamo {
  Rule {
//--------------------------------------------------------------------
// Copyright (c) 1999-2001, International Business Machines
// Corporation and others.  All Rights Reserved.
//--------------------------------------------------------------------

//- N.B. DO NOT put any filters, NFD, etc. here -- those are aliased in
//- the INDEX file.  This transliterator is, by itself, not
//- instantiated.  It is used as a part of Latin-Jamo, Latin-Hangul, or
//- inverses thereof.

// Transliteration from Latin characters to Korean script is done in
// two steps: Latin to Jamo, then Jamo to Hangul.  The Jamo-Hangul
// transliteration is done algorithmically following Unicode 3.0
// section 3.11.  This file implements the Latin to Jamo
// transliteration using rules.

// Jamo occupy the block 1100-11FF.  Within this block there are three
// groups of characters: initial consonants or choseong (I), medial
// vowels or jungseong (M), and trailing consonants or jongseong (F).
// Standard Korean syllables are of the form I+M+F*.

// Section 3.11 describes the use of 'filler' jamo to convert
// nonstandard syllables to standard form: the choseong filler 115F and
// the junseong filler 1160.  In this transliterator, we will not use
// 115F or 1160.

// We will, however, insert two 'null' jamo to make foreign words
// conform to Korean syllable structure.  These are the null initial
// consonant 110B (IEUNG) and the null vowel 1173 (EU).  In Latin text,
// we will use the separator in order to disambiguate strings,
// e.g. "kan-ggan" (initial GG) vs. "kanggan" (final NG + initial G).

// We will not use all of the characters in the jamo block.  We will
// only use the 19 initials, 21 medials, and 27 finals possessing a
// jamo short name as defined in section 4.4 of the Unicode book.

// Rules of thumb.  These guidelines provide the basic framework
// for the rules.  They are phrased in terms of Latin-Jamo transliteration.
// The Jamo-Latin rules derive from these, since the Jamo-Latin rules are
// just context-free transliteration of jamo to corresponding short names,
// with the addition of separators to maintain round-trip integrity
// in the context of the Latin-Jamo rules.

// A sequence of vowels:
// - Take the longest sequence you can. If there are too many, or you don't
//   have a starting consonant, introduce a 110B necessary.

// A sequence of consonants.
// - First join the double consonants: G + G -> GG
// - In the remaining list,
// -- If there is no preceding vowel, take the first consonant, and insert EU
//    after it. Continue with the rest of the consonants.
// -- If there is one consonant, attach to the following vowel
// -- If there are two consonants and a following vowel, attach one to the
//    preceeding vowel, and one to the following vowel.
// -- If there are more than two consonants, join the first two together if you
//    can: L + G => LG
// -- If you still end up with more than 2 consonants, insert EU after the
//    first one, and continue with the rest of the consonants.

//----------------------------------------------------------------------
// Variables

// Some latin consonants or consonant pairs only occur as initials, and
// some only as finals, but some occur as both.  This makes some jamo
// consonants ambiguous when transliterated into latin.
//   Initial only: IEUNG BB DD JJ R
//   Final only: BS GS L LB LG LH LM LP LS LT NG NH NJ
//   Initial and Final: B C D G GG H J K M N P S SS T

  "$Gi = \u1100;"
  "$GGi = \u1101;"
  "$Ni = \u1102;"
  "$Di = \u1103;"
  "$DD = \u1104;"
  "$R = \u1105;"
  "$Mi = \u1106;"
  "$Bi = \u1107;"
  "$BB = \u1108;"
  "$Si = \u1109;"
  "$SSi = \u110A;"
  "$IEUNG = \u110B;" // null initial, inserted during Latin-Jamo
  "$Ji = \u110C;"
  "$JJ = \u110D;"
  "$Ci = \u110E;"
  "$Ki = \u110F;"
  "$Ti = \u1110;"
  "$Pi = \u1111;"
  "$Hi = \u1112;"

  "$A = \u1161;"
  "$AE = \u1162;"
  "$YA = \u1163;"
  "$YAE = \u1164;"
  "$EO = \u1165;"
  "$E = \u1166;"
  "$YEO = \u1167;"
  "$YE = \u1168;"
  "$O = \u1169;"
  "$WA = \u116A;"
  "$WAE = \u116B;"
  "$OE = \u116C;"
  "$YO = \u116D;"
  "$U = \u116E;"
  "$WEO = \u116F;"
  "$WE = \u1170;"
  "$WI = \u1171;"
  "$YU = \u1172;"
  "$EU = \u1173;" // null medial, inserted during Latin-Jamo
  "$YI = \u1174;"
  "$I = \u1175;"

  "$Gf = \u11A8;"
  "$GGf = \u11A9;"
  "$GS = \u11AA;"
  "$Nf = \u11AB;"
  "$NJ = \u11AC;"
  "$NH = \u11AD;"
  "$Df = \u11AE;"
  "$L = \u11AF;"
  "$LG = \u11B0;"
  "$LM = \u11B1;"
  "$LB = \u11B2;"
  "$LS = \u11B3;"
  "$LT = \u11B4;"
  "$LP = \u11B5;"
  "$LH = \u11B6;"
  "$Mf = \u11B7;"
  "$Bf = \u11B8;"
  "$BS = \u11B9;"
  "$Sf = \u11BA;"
  "$SSf = \u11BB;"
  "$NG = \u11BC;"
  "$Jf = \u11BD;"
  "$Cf = \u11BE;"
  "$Kf = \u11BF;"
  "$Tf = \u11C0;"
  "$Pf = \u11C1;"
  "$Hf = \u11C2;"
  
  "$jamoInitial = [\u1100-\u1112];"

  "$jamoMedial = [\u1161-\u1175];"

  "$latinInitial = [bcdghjkmnprst];"

  // Any character in the latin transliteration of a medial
  "$latinMedial = [aeiouwy];"

  // The last character of the latin transliteration of a medial
  "$latinMedialEnd = [aeiou];"

  // Disambiguation separator
  "$sep = \\\';"

//----------------------------------------------------------------------
// Jamo-Latin

// Jamo to latin is relatively simple, since it is the latin that is
// ambiguous.  Most rules are straightforward, and we encode them below
// as simple add-on back rule, e.g.:

//   $jamoMedial {bs} > $BS;

// becomes

//   $jamoMedial {bs} <> $BS;

// Furthermore, we don't care about the ordering for Jamo-Latin because
// we are going from single characters, so we can very easily piggyback
// on the Latin-Jamo.

// The main issue with Jamo-Latin is when to insert separators.
// Separators are inserted to obtain correct round trip behavior.  For
// example, the sequence Ki A Gf Gi E, if transliterated to "kagge",
// would then round trip to Ki A GGi E.  To prevent this, we insert a
// separator: "kag-ge".  IMPORTANT: The need for separators depends
// very specifically on the behavior of the Latin-Jamo rules.  A change
// in the Latin-Jamo behavior can completely change the way the
// separator insertion must be done.

// First try to preserve actual separators in the jamo text by doubling
// them.  This fixes problems like:
// (Di)(A)(Ji)(U)(NG)-(IEUNG)(YEO)(Nf)(Gi)(YEO)(L) => dajung-yeongyeol
// => (Di)(A)(Ji)(U)(NG)(IEUNG)(YEO)(Nf)(Gi)(YEO)(L).  This is optional
// -- if we don't care about losing separators in the jamo, we can delete
// this rule.

  "$sep $sep <> $sep;"

// Triple consonants.  For three consonants "axxx" we insert a
// separator between the first and second "x" if XXf, Xf, and Xi all
// exist, and we have A Xf XXi.  This prevents the reverse
// transliteration to A XXf Xi.

  "$sep < $latinMedialEnd g {} $GGi;"
  "$sep < $latinMedialEnd s {} $SSi;"

// For vowels the rule is similar.  If there is a vowel "ae" such that
// "a" by itself and "e" by itself are vowels, then we want to map A E
// to "a-e" so as not to round trip to AE.  However, in the text Ki EO
// IEUNG E we don't need to map to "keo-e".  "keoe" suffices.  For
// vowels of the form "aei", both "ae" + "i" and "a" + "ei" must be
// tested.  NOTE: These rules used to have a left context of
// $latinInitial instead of [^$latinMedial].  The problem with this is
// sequences where an initial IEUNG is transliterated away:
//   (IEUNG)(A)(IEUNG)(EO) => aeo => (IEUNG)(AE)(IEUNG)(O)

  "$sep < [^$latinMedial] [y w] e {} [$O $OE];"
  "$sep < [^$latinMedial] e {} [$O $OE $U];"
  "$sep < [^$latinMedial] [o a] {} [$E $EO $EU];"
  "$sep < [^$latinMedial] [w y] a {} [$E $EO $EU];"

// Similar to the above, but with an intervening $IEUNG.

  "$sep < [^$latinMedial] [y w] e {} $IEUNG [$O $OE];"
  "$sep < [^$latinMedial] e {} $IEUNG [$O $OE $U];"
  "$sep < [^$latinMedial] [o a] {} $IEUNG [$E $EO $EU];"
  "$sep < [^$latinMedial] [w y] a {} $IEUNG [$E $EO $EU];"

// Single finals followed by IEUNG.  The jamo sequence A Xf IEUNG E,
// where Xi also exists, must be transliterated as "ax-e" to prevent
// the round trip conversion to A Xi E.

  "$sep < $latinMedialEnd b {} $IEUNG $jamoMedial;"
  "$sep < $latinMedialEnd c {} $IEUNG $jamoMedial;"
  "$sep < $latinMedialEnd d {} $IEUNG $jamoMedial;"
  "$sep < $latinMedialEnd g {} $IEUNG $jamoMedial;"
  "$sep < $latinMedialEnd h {} $IEUNG $jamoMedial;"
  "$sep < $latinMedialEnd j {} $IEUNG $jamoMedial;"
  "$sep < $latinMedialEnd k {} $IEUNG $jamoMedial;"
  "$sep < $latinMedialEnd m {} $IEUNG $jamoMedial;"
  "$sep < $latinMedialEnd n {} $IEUNG $jamoMedial;"
  "$sep < $latinMedialEnd p {} $IEUNG $jamoMedial;"
  "$sep < $latinMedialEnd s {} $IEUNG $jamoMedial;"
  "$sep < $latinMedialEnd t {} $IEUNG $jamoMedial;"

// Double finals followed by IEUNG.  Similar to the single finals
// followed by IEUNG.  Any latin consonant pair X Y, between medials,
// that we would split by Latin-Jamo, we must handle when it occurs as
// part of A XYf IEUNG E, to prevent round trip conversion to A Xf Yi
// E.

  "$sep < $latinMedialEnd b s {} $IEUNG $jamoMedial;"
  "$sep < $latinMedialEnd g g {} $IEUNG $jamoMedial;"
  "$sep < $latinMedialEnd g s {} $IEUNG $jamoMedial;"
  "$sep < $latinMedialEnd l b {} $IEUNG $jamoMedial;"
  "$sep < $latinMedialEnd l g {} $IEUNG $jamoMedial;"
  "$sep < $latinMedialEnd l h {} $IEUNG $jamoMedial;"
  "$sep < $latinMedialEnd l m {} $IEUNG $jamoMedial;"
  "$sep < $latinMedialEnd l p {} $IEUNG $jamoMedial;"
  "$sep < $latinMedialEnd l s {} $IEUNG $jamoMedial;"
  "$sep < $latinMedialEnd l t {} $IEUNG $jamoMedial;"
  "$sep < $latinMedialEnd n g {} $IEUNG $jamoMedial;"
  "$sep < $latinMedialEnd n h {} $IEUNG $jamoMedial;"
  "$sep < $latinMedialEnd n j {} $IEUNG $jamoMedial;"
  "$sep < $latinMedialEnd s s {} $IEUNG $jamoMedial;"

// Split doubles.  Text of the form A Xi Xf E, where XXi also occurs,
// we transliterate as "ax-xe" to prevent round trip transliteration as
// A XXi E.

  "$sep < $latinMedialEnd b {} $Bi $jamoMedial;"
  "$sep < $latinMedialEnd d {} $Di $jamoMedial;"
  "$sep < $latinMedialEnd j {} $Ji $jamoMedial;"
  "$sep < $latinMedialEnd g {} $Gi $jamoMedial;"
  "$sep < $latinMedialEnd s {} $Si $jamoMedial;"

// XYY.  This corresponds to the XYY rule in Latin-Jamo.  By default
// Latin-Jamo maps "xyy" to Xf YYi, to keep YY together.  As a result,
// "xyy" forms that correspond to XYf Yi must be transliterated as
// "xy-y".

  "$sep < $latinMedialEnd b s {} [$Si $SSi];"
  "$sep < $latinMedialEnd g s {} [$Si $SSi];"
  "$sep < $latinMedialEnd l b {} [$Bi $BB];"
  "$sep < $latinMedialEnd l g {} [$Gi $GGi];"
  "$sep < $latinMedialEnd l s {} [$Si $SSi];"
  "$sep < $latinMedialEnd n g {} [$Gi $GGi];"
  "$sep < $latinMedialEnd n j {} [$Ji $JJ];"

// Deletion of IEUNG is handled below.

//----------------------------------------------------------------------
// Latin-Jamo

// [Basic, context-free Jamo-Latin rules are embedded here too.  See
// above.]

// Split digraphs: Text of the form 'axye', where 'xy' is a final
// digraph, 'x' is a final (by itself), 'y' is an initial, and 'a' and
// 'e' are medials, we want to transliterate this as A Xf Yi E rather
// than A XYf IEUNG E.  We do NOT include text of the form "axxe",
// since that is handled differently below.  These rules are generated
// programmatically from the jamo data.

  "$jamoMedial {b s} $latinMedial > $Bf $Si;"
  "$jamoMedial {g s} $latinMedial > $Gf $Si;"
  "$jamoMedial {l b} $latinMedial > $L $Bi;"
  "$jamoMedial {l g} $latinMedial > $L $Gi;"
  "$jamoMedial {l h} $latinMedial > $L $Hi;"
  "$jamoMedial {l m} $latinMedial > $L $Mi;"
  "$jamoMedial {l p} $latinMedial > $L $Pi;"
  "$jamoMedial {l s} $latinMedial > $L $Si;"
  "$jamoMedial {l t} $latinMedial > $L $Ti;"
  "$jamoMedial {n g} $latinMedial > $Nf $Gi;"
  "$jamoMedial {n h} $latinMedial > $Nf $Hi;"
  "$jamoMedial {n j} $latinMedial > $Nf $Ji;"

// Single consonants are initials: Text of the form 'axe', where 'x'
// can be an initial or a final, and 'a' and 'e' are medials, we want
// to transliterate as A Xi E rather than A Xf IEUNG E.

  "$jamoMedial {b} $latinMedial > $Bi;"
  "$jamoMedial {c} $latinMedial > $Ci;"
  "$jamoMedial {d} $latinMedial > $Di;"
  "$jamoMedial {g} $latinMedial > $Gi;"
  "$jamoMedial {h} $latinMedial > $Hi;"
  "$jamoMedial {j} $latinMedial > $Ji;"
  "$jamoMedial {k} $latinMedial > $Ki;"
  "$jamoMedial {m} $latinMedial > $Mi;"
  "$jamoMedial {n} $latinMedial > $Ni;"
  "$jamoMedial {p} $latinMedial > $Pi;"
  "$jamoMedial {s} $latinMedial > $Si;"
  "$jamoMedial {t} $latinMedial > $Ti;"

// Doubled initials.  The sequence "axxe", where XX exists as an initial
// (XXi), and also Xi and Xf exist (true of all digraphs XX), we want
// to transliterate as A XXi E, rather than split to A Xf Xi E.

  "$jamoMedial {b b} $latinMedial > $BB;"
  "$jamoMedial {d d} $latinMedial > $DD;"
  "$jamoMedial {j j} $latinMedial > $JJ;"
  "$jamoMedial {g g} $latinMedial > $GGi;"
  "$jamoMedial {s s} $latinMedial > $SSi;"

// XYY.  Because doubled consonants bind more strongly than XY
// consonants, we must handle the sequence "axyy" specially.  Here XYf
// and YYi must exist.  In these cases, we map to Xf YYi rather than
// XYf.

  "$jamoMedial {b} s s > $Bf;"
  "$jamoMedial {g} s s > $Gf;"
  "$jamoMedial {l} b b > $L;"
  "$jamoMedial {l} g g > $L;"
  "$jamoMedial {l} s s > $L;"
  "$jamoMedial {n} g g > $Nf;"
  "$jamoMedial {n} j j > $Nf;"

// Finals: Attach consonant with preceding medial to preceding medial.
// Do this BEFORE mapping consonants to initials.  Longer keys must
// precede shorter keys that they start with, e.g., the rule for 'bs'
// must precede 'b'.

// [BASIC Jamo-Latin FINALS handled here.  Order irrelevant within this
// block for Jamo-Latin.]

  "$jamoMedial {bs} <> $BS;"
  "$jamoMedial {b} <> $Bf;"
  "$jamoMedial {c} <> $Cf;"
  "$jamoMedial {d} <> $Df;"
  "$jamoMedial {gg} <> $GGf;"
  "$jamoMedial {gs} <> $GS;"
  "$jamoMedial {g} <> $Gf;"
  "$jamoMedial {h} <> $Hf;"
  "$jamoMedial {j} <> $Jf;"
  "$jamoMedial {k} <> $Kf;"
  "$jamoMedial {lb} <> $LB;  $jamoMedial {lg} <> $LG;"
  "$jamoMedial {lh} <> $LH;"
  "$jamoMedial {lm} <> $LM;"
  "$jamoMedial {lp} <> $LP;"
  "$jamoMedial {ls} <> $LS;"
  "$jamoMedial {lt} <> $LT;"
  "$jamoMedial {l} <> $L;"
  "$jamoMedial {m} <> $Mf;"
  "$jamoMedial {ng} <> $NG;"
  "$jamoMedial {nh} <> $NH;"
  "$jamoMedial {nj} <> $NJ;"
  "$jamoMedial {n} <> $Nf;"
  "$jamoMedial {p} <> $Pf;"
  "$jamoMedial {ss} <> $SSf;"
  "$jamoMedial {s} <> $Sf;"
  "$jamoMedial {t} <> $Tf;"

// Initials: Attach single consonant to following medial.  Do this
// AFTER mapping finals.  Longer keys must precede shorter keys that
// they start with, e.g., the rule for 'gg' must precede 'g'.

// [BASIC Jamo-Latin INITIALS handled here.  Order irrelevant within
// this block for Jamo-Latin.]

  "{gg} $latinMedial <> $GGi;"
  "{g} $latinMedial <> $Gi;"
  "{n} $latinMedial <> $Ni;"
  "{dd} $latinMedial <> $DD;"
  "{d} $latinMedial <> $Di;"
  "{r} $latinMedial <> $R;"
  "{m} $latinMedial <> $Mi;"
  "{bb} $latinMedial <> $BB;"
  "{b} $latinMedial <> $Bi;"
  "{ss} $latinMedial <> $SSi;"
  "{s} $latinMedial <> $Si;"
  "{jj} $latinMedial <> $JJ;"
  "{j} $latinMedial <> $Ji;"
  "{c} $latinMedial <> $Ci;"
  "{k} $latinMedial <> $Ki;"
  "{t} $latinMedial <> $Ti;"
  "{p} $latinMedial <> $Pi;"
  "{h} $latinMedial <> $Hi;"

// 'r' in final position.  Because of the equivalency of the 'l' and
// 'r' jamo (the glyphs are the same), we try to provide the same
// equivalency in Latin-Jamo.  The 'l' to 'r' conversion is handled
// below.  If we see an 'r' in an apparent final position, treat it
// like 'l'.  For example, "karka" => Ki A R EU Ki A without this rule.
// Instead, we want Ki A L Ki A.

  "$jamoMedial {r} $latinInitial > | l;"

// Initial + Final: If we match the next rule, we have initial then
// final consonant with no intervening medial.  We insert the null
// vowel BEFORE it to create a well-formed syllable.  (In the next rule
// we insert a null vowel AFTER an anomalous initial.)

  "$jamoInitial {} [bcdghjklmnpst] > $EU;"

// Initial + X: This block matches an initial consonant not followed by
// a medial.  We insert the null vowel after it.  We handle double
// initials explicitly here; for single initial consonants we insert EU
// (as Latin) after them and let standard rules do the rest.

// BREAKS ROUND TRIP INTEGRITY

  "gg > $GGi $EU;"
  "dd > $DD $EU;"
  "bb > $BB $EU;"
  "ss > $SSi $EU;"
  "jj > $JJ $EU;"

  "([bcdghjkmnprst]) > | $1 eu;"

// X + Final: Finally we have to deal with a consonant that can only be
// interpreted as a final (not an initial) and which is preceded
// neither by an initial nor a medial.  It is the start of the
// syllable, but cannot be.  Most of these will already be handled by
// the above rules.  'bs' splits into Bi EU Sf.  Similar for 'gs' 'ng'
// 'nh' 'nj'.  The only problem is 'l' and digraphs starting with 'l'.
// For this isolated case, we could add a null initial and medial,
// which would give "la" => IEUNG EU L IEUNG A, for example.  A more
// economical solution is to transliterate isolated "l" (that is,
// initial "l") to "r".  (Other similar conversions of consonants that
// occur neither as initials nor as finals are handled below.)

  "l > | r;"

// Medials.  If a medial is preceded by an initial, then we proceed
// normally.  As usual, longer keys must precede shorter ones.

// [BASIC Jamo-Latin MEDIALS handled here.  Order irrelevant within
// this block for Jamo-Latin.]

  "$jamoInitial {ae} <> $AE;"
  "$jamoInitial {a} <> $A;"
  "$jamoInitial {eo} <> $EO;"
  "$jamoInitial {eu} <> $EU;"
  "$jamoInitial {e} <> $E;"
  "$jamoInitial {i} <> $I;"
  "$jamoInitial {oe} <> $OE;"
  "$jamoInitial {o} <> $O;"
  "$jamoInitial {u} <> $U;"
  "$jamoInitial {wae} <> $WAE;"
  "$jamoInitial {wa} <> $WA;"
  "$jamoInitial {weo} <> $WEO;"
  "$jamoInitial {we} <> $WE;"
  "$jamoInitial {wi} <> $WI;"
  "$jamoInitial {yae} <> $YAE;"
  "$jamoInitial {ya} <> $YA;"
  "$jamoInitial {yeo} <> $YEO;"
  "$jamoInitial {ye} <> $YE;"
  "$jamoInitial {yi} <> $YI;"
  "$jamoInitial {yo} <> $YO;"
  "$jamoInitial {yu} <> $YU;"

// We may see an anomalous isolated 'w' or 'y'.  In that case, we
// interpret it as 'wi' and 'yu', respectively.

// BREAKS ROUND TRIP INTEGRITY

  "$jamoInitial {w} > | wi;"
  "$jamoInitial {y} > | yu;"

// Otherwise, insert a null consonant IEUNG before the medial (which is
// still an untransliterated latin vowel).

  "($latinMedial) > $IEUNG | $1;"

// Convert non-jamo latin consonants to equivalents.  These occur as
// neither initials nor finals in jamo.  'l' occurs as a final, but not
// an initial; it is handled above.  The following letters (left hand
// side) will never be output by Jamo-Latin.

  "f > | p;"
  "q > | k;"
  "v > | b;"
  "x > | ks;"
  "z > | s;"

// Delete separators (Latin-Jamo).

  "$sep > ;"

// Delete null consonants (Jamo-Latin).  Do NOT delete null EU vowels,
// since these may also occur in text.

  "< $IEUNG;"

//- N.B. DO NOT put any filters, NFD, etc. here -- those are aliased in
//- the INDEX file.  This transliterator is, by itself, not
//- instantiated.  It is used as a part of Latin-Jamo, Latin-Hangul, or
//- inverses thereof.

// eof
  }
}
