﻿# ***************************************************************************
# *
# *  Copyright (C) 2004-2012, International Business Machines
# *  Corporation; Unicode, Inc.; and others.  All Rights Reserved.
# *
# ***************************************************************************
# File: IPA_XSampa.txt
# Generated from CLDR 
#
$t = '_'; # X-SAMPA representation of IPA tie bar.
::NFD;
ʯ ↔ 'z`_w='; # LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL
ǁ ↔ '|\|\'; # LATIN LETTER LATERAL CLICK
ʄ ↔ 'J\_<'; # LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK
ʛ ↔ 'G\_<'; # LATIN LETTER SMALL CAPITAL G WITH HOOK
ʮ ↔ 'z_w='; # LATIN SMALL LETTER TURNED H WITH FISHHOOK
\u1DC4 ↔ '_H_T'; # COMBINING MACRON-ACUTE
\u1DC5 ↔ '_B_L'; # COMBINING GRAVE-MACRON
\u1DC8 ↔ '_R_F'; # COMBINING GRAVE-ACUTE-GRAVE
ɓ ↔ 'b_<'; # LATIN SMALL LETTER B WITH HOOK
ɗ ↔ 'd_<'; # LATIN SMALL LETTER D WITH HOOK
ɠ ↔ 'g_<'; # LATIN SMALL LETTER G WITH HOOK
ɻ ↔ 'r\`'; # LATIN SMALL LETTER TURNED R WITH HOOK
↗ ↔ '<R>'; # NORTH EAST ARROW
↘ ↔ '<F>'; # SOUTH EAST ARROW
ħ ↔ 'X\'; # LATIN SMALL LETTER H WITH STROKE
ǀ ↔ '|\'; # LATIN LETTER DENTAL CLICK
ǂ ↔ '=\'; # LATIN LETTER ALVEOLAR CLICK
ǃ ↔ '!\'; # LATIN LETTER RETROFLEX CLICK
ɕ ↔ 's\'; # LATIN SMALL LETTER C WITH CURL
ɖ ↔ 'd`'; # LATIN SMALL LETTER D WITH TAIL
ɘ ↔ '@\'; # LATIN SMALL LETTER REVERSED E
ɚ ↔ '@`'; # LATIN SMALL LETTER SCHWA WITH HOOK
ɝ ↔ '3`'; # LATIN SMALL LETTER REVERSED OPEN E WITH HOOK
ɞ ↔ '3\'; # LATIN SMALL LETTER CLOSED REVERSED OPEN E
ɟ ↔ 'J\'; # LATIN SMALL LETTER DOTLESS J WITH STROKE
ɢ ↔ 'G\'; # LATIN LETTER SMALL CAPITAL G
ɦ ↔ 'h\'; # LATIN SMALL LETTER H WITH HOOK
ɧ ↔ 'x\'; # LATIN SMALL LETTER HENG WITH HOOK
ɭ ↔ 'l`'; # LATIN SMALL LETTER L WITH RETROFLEX HOOK
ɮ ↔ 'K\'; # LATIN SMALL LETTER LEZH
ɰ ↔ 'M\'; # LATIN SMALL LETTER TURNED M WITH LONG LEG
ɳ ↔ 'n`'; # LATIN SMALL LETTER N WITH RETROFLEX HOOK
ɴ ↔ 'N\'; # LATIN LETTER SMALL CAPITAL N
ɸ ↔ 'p\'; # LATIN SMALL LETTER PHI
ɹ ↔ 'r\'; # LATIN SMALL LETTER TURNED R
ɺ ↔ 'l\'; # LATIN SMALL LETTER TURNED R WITH LONG LEG
ɽ ↔ 'r`'; # LATIN SMALL LETTER R WITH TAIL
ʀ ↔ 'R\'; # LATIN LETTER SMALL CAPITAL R
ʂ ↔ 's`'; # LATIN SMALL LETTER S WITH HOOK
ʈ ↔ 't`'; # LATIN SMALL LETTER T WITH RETROFLEX HOOK
ʐ ↔ 'z`'; # LATIN SMALL LETTER Z WITH RETROFLEX HOOK
ʑ ↔ 'z\'; # LATIN SMALL LETTER Z WITH CURL
ʕ ↔ '?\'; # LATIN LETTER PHARYNGEAL VOICED FRICATIVE
ʘ ↔ 'O\'; # LATIN LETTER BILABIAL CLICK
ʙ ↔ 'B\'; # LATIN LETTER SMALL CAPITAL B
ʜ ↔ 'H\'; # LATIN LETTER SMALL CAPITAL H
ʝ ↔ 'j\'; # LATIN SMALL LETTER J WITH CROSSED-TAIL
ʟ ↔ 'L\'; # LATIN LETTER SMALL CAPITAL L
ʡ ↔ '>\'; # LATIN LETTER GLOTTAL STOP WITH STROKE
ʢ ↔ '<\'; # LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE
ʰ ↔ '_h'; # MODIFIER LETTER SMALL H
ʷ ↔ '_w'; # MODIFIER LETTER SMALL W
ʼ ↔ '_>'; # MODIFIER LETTER APOSTROPHE
ˆ ↔ '_\'; # MODIFIER LETTER CIRCUMFLEX ACCENT
ˇ ↔ '_/'; # CARON
ˑ ↔ ':\'; # MODIFIER LETTER HALF TRIANGULAR COLON
ˠ ↔ '_G'; # MODIFIER LETTER SMALL GAMMA
ˡ ↔ '_l'; # MODIFIER LETTER SMALL L
ˤ ↔ '_?\'; # MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
\u0300 ↔ '_L'; # COMBINING GRAVE ACCENT
\u0301 ↔ '_H'; # COMBINING ACUTE ACCENT
\u0302 ↔ '_F'; # COMBINING CIRCUMFLEX ACCENT
\u0304 ↔ '_M'; # COMBINING MACRON
\u0306 ↔ '_X'; # COMBINING BREVE
\u0308 ↔ '_"'; # COMBINING DIAERESIS
\u030B ↔ '_T'; # COMBINING DOUBLE ACUTE ACCENT
\u030C ↔ '_R'; # COMBINING CARON
\u030F ↔ '_B'; # COMBINING DOUBLE GRAVE ACCENT
\u0318 ↔ '_A'; # COMBINING LEFT TACK BELOW
\u0319 ↔ '_q'; # COMBINING RIGHT TACK BELOW
\u031A ↔ '_}'; # COMBINING LEFT ANGLE ABOVE
\u031C ↔ '_c'; # COMBINING LEFT HALF RING BELOW
\u031D ↔ '_r'; # COMBINING UP TACK BELOW
\u031E ↔ '_o'; # COMBINING DOWN TACK BELOW
\u031F ↔ '_+'; # COMBINING PLUS SIGN BELOW
\u0320 ↔ '_-'; # COMBINING MINUS SIGN BELOW
\u0324 ↔ '_t'; # COMBINING DIAERESIS BELOW
\u0325 ↔ '_0'; # COMBINING RING BELOW
\u032A ↔ '_d'; # COMBINING BRIDGE BELOW
\u032C ↔ '_v'; # COMBINING CARON BELOW
\u032F ↔ '_^'; # COMBINING INVERTED BREVE BELOW
\u0330 ↔ '_k'; # COMBINING TILDE BELOW
\u0334 ↔ '_e'; # COMBINING TILDE OVERLAY
\u0339 ↔ '_O'; # COMBINING RIGHT HALF RING BELOW
\u033A ↔ '_a'; # COMBINING INVERTED BRIDGE BELOW
\u033B ↔ '_m'; # COMBINING SQUARE BELOW
\u033C ↔ '_N'; # COMBINING SEAGULL BELOW
\u033D ↔ '_x'; # COMBINING X ABOVE
ᵻ ↔ 'I\'; # LATIN SMALL CAPITAL LETTER I WITH STROKE
ᵿ ↔ 'U\'; # LATIN SMALL CAPITAL LETTER U WITH STROKE
ⁿ ↔ '_n'; # MODIFIER LETTER LATIN SMALL LETTER N
ʋ ← 'v\'; # LATIN SMALL LETTER V WITH HOOK
ʲ ← '_j'; # MODIFIER LETTER SMALL H
\u0303 ← '_~'; # COMBINING TILDE
\u0329 ← '_='; # COMBINING VERTICAL LINE BELOW
c\u0327 ↔ C; # LATIN SMALL LETTER C WITH CEDILLA (decomposed)
æ ↔ '{'; # LATIN SMALL LETTER AE
ð ↔ D; # LATIN SMALL LETTER ETH
ø ↔ 2; # LATIN SMALL LETTER O WITH STROKE
ŋ ↔ N; # LATIN SMALL LETTER ENG
œ ↔ 9; # LATIN SMALL LIGATURE OE
ɐ ↔ 6; # LATIN SMALL LETTER TURNED A
ɑ ↔ A; # LATIN SMALL LETTER ALPHA
ɒ ↔ Q; # LATIN SMALL LETTER TURNED ALPHA
ɔ ↔ O; # LATIN SMALL LETTER OPEN O
ə ↔ '@'; # LATIN SMALL LETTER SCHWA
ɛ ↔ E; # LATIN SMALL LETTER OPEN E
ɜ ↔ 3; # LATIN SMALL LETTER REVERSED OPEN E
ɡ ↔ g; # LATIN SMALL LETTER SCRIPT G
ɣ ↔ G; # LATIN SMALL LETTER GAMMA
ɤ ↔ 7; # LATIN SMALL LETTER RAMS HORN
ɥ ↔ H; # LATIN SMALL LETTER TURNED H
ɨ ↔ 1; # LATIN SMALL LETTER I WITH STROKE
ɪ ↔ I; # LATIN LETTER SMALL CAPITAL I
ɫ ↔ 5; # LATIN SMALL LETTER L WITH MIDDLE TILDE
ɬ ↔ K; # LATIN SMALL LETTER L WITH BELT
ɯ ↔ M; # LATIN SMALL LETTER TURNED M
ɱ ↔ F; # LATIN SMALL LETTER M WITH HOOK
ɲ ↔ J; # LATIN SMALL LETTER N WITH LEFT HOOK
ɵ ↔ 8; # LATIN SMALL LETTER BARRED O
ɶ ↔ '&'; # LATIN LETTER SMALL CAPITAL OE
ɾ ↔ 4; # LATIN SMALL LETTER R WITH FISHHOOK
ʁ ↔ R; # LATIN LETTER SMALL CAPITAL INVERTED R
ʃ ↔ S; # LATIN SMALL LETTER ESH
ʉ ↔ '}'; # LATIN SMALL LETTER U BAR
ʊ ↔ U; # LATIN SMALL LETTER UPSILON
ʋ ↔ P; # LATIN SMALL LETTER V WITH HOOK
ʌ ↔ V; # LATIN SMALL LETTER TURNED V
ʍ ↔ W; # LATIN SMALL LETTER TURNED W
ʎ ↔ L; # LATIN SMALL LETTER TURNED Y
ʏ ↔ Y; # LATIN LETTER SMALL CAPITAL Y
ʒ ↔ Z; # LATIN SMALL LETTER EZH
ʔ ↔ '?'; # LATIN LETTER GLOTTAL STOP
ʲ ↔ \'; # MODIFIER LETTER SMALL J
ˈ ↔ '"'; # MODIFIER LETTER VERTICAL LINE
ˌ ↔ '%'; # MODIFIER LETTER LOW VERTICAL LINE
ː ↔ ':'; # MODIFIER LETTER TRIANGULAR COLON
˞ ↔ '`'; # MODIFIER LETTER RHOTIC HOOK
\u0303 ↔ '~'; # COMBINING TILDE
\u0329 ↔ '='; # COMBINING VERTICAL LINE BELOW
\u0361 ↔ $t; # COMBINING DOUBLE INVERTED BREVE
β ↔ B; # GREEK SMALL LETTER BETA
θ ↔ T; # GREEK SMALL LETTER THETA
χ ↔ X; # GREEK SMALL LETTER CHI
↑ ↔ '^'; # UPWARDS ARROW
↓ ↔ '!'; # DOWNWARDS ARROW
φ → 'p\'; # GREEK SMALL LETTER PHI
ɩ → I; # LATIN SMALL LETTER IOTA
ɷ → U; # LATIN SMALL LETTER CLOSED OMEGA
ɼ → 'r_r'; # LATIN SMALL LETTER R WITH LONG LEG
ɿ → 'z='; # LATIN SMALL LETTER REVERSED R WITH FISHHOOK
ʅ → 'z`='; # LATIN SMALL LETTER SQUAT REVERSED ESH
ʆ → S\'; # LATIN SMALL LETTER ESH WITH CURL
ʇ → '|\' ; # LATIN SMALL LETTER TURNED T
ʓ → Z\'; # LATIN SMALL LETTER EZH WITH CURL
ʖ → '|\|\'; # LATIN LETTER INVERTED GLOTTAL STOP
ʗ → '!\'; # LATIN LETTER STRETCHED C
ʚ → '3\'; # LATIN SMALL LETTER CLOSED OPEN E
ʠ → 'G\_<_0'; # LATIN SMALL LETTER Q WITH HOOK
ʣ → d $t z; # LATIN SMALL LETTER DZ DIGRAPH
ʤ → d $t Z; # LATIN SMALL LETTER DEZH DIGRAPH
ʥ → d $t 'z\'; # LATIN SMALL LETTER DZ DIGRAPH WITH CURL
ʦ → t $t s; # LATIN SMALL LETTER TS DIGRAPH
ʧ → t $t S; # LATIN SMALL LETTER TESH DIGRAPH
ʨ → t $t 's\'; # LATIN SMALL LETTER TC DIGRAPH WITH CURL
::NFC;
