# liblouis: International Phonetic Alphabet

# Copyright (C) 2016 Ludovic Oger <oger.ludovic@gmail.com>

#  This file is part of liblouis.
#
#  liblouis is free software: you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as
#  published by the Free Software Foundation, either version 2.1 of the
#  License, or (at your option) any later version.
#
#  liblouis is distributed in the hope that it will be useful, but
#  WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
#  Lesser General Public License for more details.
#
#  You should have received a copy of the GNU Lesser General Public
#  License along with liblouis. If not, see
#  <http://www.gnu.org/licenses/>.


# This table contains braille codes for a part of the International Phonetic Alphabet (IPA, 2005) :
# The IPA symbols in this table do not conflict with other tables
# The others IPA symbols might conflict with other tables are inclued in the 'IPA.utb' table.
# (e.g. conflict: θ (Unicode 03B8) is the greek letter theta, french braille code is different between greek and phonetic)
 

# --------REFERENCES--------
#   - IPA Braille: An Updated Tactile Representation of the International Phonetic Alphabet
#     Print Edition
#     Edited by Robert Englebretson, Ph.D.
#     Produced by CNIB
#     For the International Council on English Braille - 2008
#     <http://www.iceb.org/icebipa.htm>
#     (this reference document is reprinted in 'World Braille Usage - Third Edition - 2013 - Copyright (C) 1954, 1990 UNESCO')
#
#   - "IPA Chart, http://www.internationalphoneticassociation.org/content/ipa-chart,
#      available under a Creative Commons Attribution-Sharealike 3.0 Unported License.
#      Copyright (C) 2015 International Phonetic Association."


# Last updated on January 23, 2018


#--------PULMONIC CONSONANTS--------
# UNICODE DOTS                 # GLYPH - TYPOGRAPHIC DESC. - ARTICULATORY DESC.
noback sign \x0288 256-2345    # ʈ - right-tail t - voiceless retroflex plosive
noback sign \x0256 256-145     # ɖ - right-tail d - voiced retroflex plosive
noback sign \x025F 35-245      # ɟ - barred dotless j - voiced palatal plosive
noback sign \x0261 1245        # ɡ - lowercase script g - voiced velar plosive
noback sign \x0262 35-1245     # ɢ - small capital g - voiced uvular plosive
noback sign \x0294 23          # ʔ - glottal stop - glottal plosive
noback sign \x0271 235-134     # ɱ - left-tail m (at right) - voiced labiodental nasal
noback sign \x0273 256-1345    # ɳ - right-tail n - voiced retroflex nasal
noback sign \x0272 123456      # ɲ - left-tail n (at left) - voiced palatal nasal
noback sign \x014B 1246        # ŋ - eng - voiced velar nasal
noback sign \x0274 35-1345     # ɴ - small capital n - voiced uvular nasal
noback sign \x0299 35-12       # ʙ - small capital b - voiced bilabial trill
noback sign \x0280 35-1235     # ʀ - small capital r - voiced uvular trill
noback sign \x027E 235-1235    # ɾ - fish-hook r - voiced alveolar tap
noback sign \x027D 256-1235    # ɽ - right-tail r - voiced retroflex flap
noback sign \x0278 46-124      # ɸ - 'phi' (latin small letter phi) - voiceless bilabial fricative (IPA Extensions here, greek phi is \x03D5)
noback sign \x00F0 12456       # ð - edh - voiced dental fricative
noback sign \x0283 156         # ʃ - esh - voiceless postalveolar fricative
noback sign \x0292 2346        # ʒ - ezh - voiced postalveolar fricative
noback sign \x0282 256-234     # ʂ - right-tail s (at left) - voiceless retroflex fricative
noback sign \x0290 256-1356    # ʐ - right-tail z - voiced retroflex fricative
noback sign \x029D 236-245     # ʝ - curly-tail j - voiced palatal fricative
noback sign \x0263 46-1245     # ɣ - 'gamma' (latin small letter gamma) - voiced velar fricative (IPA Extensions here, greek gamma is \x03B3)
noback sign \x0281 35-3456     # ʁ - inverted small capital r - voiced uvular fricative
noback sign \x0127 235-125     # ħ - barred h - voiceless pharyngeal fricative
noback sign \x0295 235-23      # ʕ - reversed glottal stop - voiced pharyngeal fricative or approximant
noback sign \x0266 236-125     # ɦ - hooktop h - voiced glottal fricative
noback sign \x026C 236-123     # ɬ - belted l - voiceless alveolar lateral fricative
noback sign \x026E 123-5-2346  # ɮ - l-ezh ligature - voiced alveolar lateral fricative
noback sign \x028B 236-1236    # ʋ - script v - voiced labiodental approximant
noback sign \x0279 3456        # ɹ - turned r - voiced alveolar approximant
noback sign \x027B 256-3456    # ɻ - turned r, right tail - voiced retroflex approximant
noback sign \x0270 236-134     # ɰ - turned m, right leg - voiced velar approximant
noback sign \x026D 256-123     # ɭ - right-tail l - voiced retroflex lateral approximant
noback sign \x028E 236-13456   # ʎ - turned y - voiced palatal lateral approximant
noback sign \x029F 35-123      # ʟ - small capital l - voiced velar lateral approximant


#--------NON-PULMONIC CONSONANTS--------
# UNICODE DOTS                 # GLYPH - TYPOGRAPHIC DESC. - ARTICULATORY DESC.
noback sign \x0253 236-12      # ɓ - hooktop b - voiced bilabial implosive
noback sign \x0257 236-145     # ɗ - hooktop d - voiced dental/alveolar implosive
noback sign \x0284 236-35-245  # ʄ - hooktop barred dotless j - voiced palatal implosive
noback sign \x0260 236-1245    # ɠ - hooktop g - voiced velar implosive
noback sign \x029B 236-35-1245 # ʛ - hooktop small capital g - voiced uvular implosive
noback sign \x0298 12346-1234  # ʘ - bull's eye - bilabial click
noback sign \x01C0 12346-1456  # ǀ - pipe - dental click
noback sign \x01C3 12346-2345  # ǃ - exclamation point - (post-)alveolar click
noback sign \x01C2 12346-156   # ǂ - double-barred pipe - palatoalveolar click
noback sign \x01C1 12346-123   # ǁ - double pipe - alveolar lateral click


#--------OTHER PULMONIC CONSONANTS--------
# UNICODE DOTS                 # GLYPH - TYPOGRAPHIC DESC. - ARTICULATORY DESC.
noback sign \x028D 235-2456    # ʍ - turned w - voiceless labial-velar fricative
noback sign \x0265 256-125     # ɥ - turned h - voiced labial-palatal approximant
noback sign \x029C 35-125      # ʜ - small capital h - voiceless epiglottal fricative
noback sign \x02A1 236-23      # ʡ - barred glottal stop - epiglottal plosive
noback sign \x02A2 35-23       # ʢ - barred reversed glottal stop - voiced epiglottal fricative
noback sign \x0267 236-1246    # ɧ - hooktop heng - simultaneous voiceless postalveolar and velar fricative
noback sign \x027A 236-3456    # ɺ - turned long-leg r - voiced alveolar lateral flap
noback sign \x0255 236-14      # ɕ - curly-tail c - voiceless alveolopalatal fricative
noback sign \x0291 236-1356    # ʑ - curly-tail z - voiced alveolopalatal fricative
noback sign \x026B 235-123     # ɫ - lowercase l with tilde - velarized voiced alveolar lateral approximant


#--------VOWELS--------
# UNICODE DOTS                 # GLYPH - TYPOGRAPHIC DESC. - ARTICULATORY DESC.
noback sign \x025B 345         # ɛ - 'epsilon' (latin small letter open e) - open-mid front unrounded vowel (IPA Extensions here, greek epsilon is \x03B5)
noback sign \x0251 16          # ɑ - script a - open back unrounded vowel
noback sign \x0254 126         # ɔ - open o - open-mid back rounded vowel
noback sign \x0276 35-246      # ɶ - small capital o-e ligature - open front rounded vowel
noback sign \x0252 235-16      # ɒ - turned script a - open back rounded vowel
noback sign \x028C 346         # ʌ - turned v (caret) - open-mid back unrounded vowel
noback sign \x0264 235-135     # ɤ - ram's horns - close-mid back unrounded vowel
noback sign \x026F 235-136     # ɯ - turned m - close back unrounded vowel
noback sign \x0268 356-24      # ɨ - barred i - close central unrounded vowel
noback sign \x0289 356-136     # ʉ - barred u - close central rounded vowel
noback sign \x026A 34          # ɪ - small capital i - near-close near-front unrounded vowel
noback sign \x028F 35-13456    # ʏ - small capital y - near-close near-front rounded vowel
noback sign \x028A 12356       # ʊ - 'upsilon' (latin small letter upsilon) - near-close near-back rounded vowel (IPA Extensions here, greek upsilon is \x03C5)
noback sign \x0259 26          # ə - schwa - mid central vowel
noback sign \x0275 356-135     # ɵ - barred o - close-mid central rounded vowel
noback sign \x0250 235-1       # ɐ - turned a - near-open central vowel
noback sign \x025C 235-345     # ɜ - reversed epsilon - open-mid central unrounded vowel
noback sign \x025A 26-5-1235   # ɚ - right-hook schwa - r-colored mid central vowel
noback sign \x025E 236-345     # ɞ - closed reversed epsilon - open-mid central rounded vowel
noback sign \x0258 235-15      # ɘ - reversed e - close-mid central unrounded vowel


#--------DIACRITICS--------
# UNICODE DOTS                 # GLYPH - TYPOGRAPHIC DESC. - ARTICULATORY DESC.
noback sign \x02BC 5-3         # ʼ - apostrophe - ejective
noback sign \x0325 6-1246      # ̥  - ring below - voiceless
noback sign \x030A 4-1246      # ̊  - ring above - voiceless
noback sign \x02B0 4-125       # ʰ - superscript h - aspirated
noback sign \x0324 6-25        # ̤  - umlaut below - breathy voiced
noback sign \x0330 6-12456     # ̰  - tilde below - creaky voiced
noback sign \x033C 6-12346     # ̼  - seagull below - linguolabial
noback sign \x032A 6-1456      # ̪  - bridge below - dental
noback sign \x033A 6-235-1456  # ̺  - inverted bridge below - apical
noback sign \x033B 6-2356      # ̻  - square below - laminal
noback sign \x0339 6-135       # ̹  - right half-ring below - more rounded
noback sign \x031C 6-246       # ̜  - left half-ring below - less rounded
noback sign \x031F 6-346       # ̟  - plus below - advanced
noback sign \x0320 6-36        # ̠  - minus below - retracted
noback sign \x0308 4-25        # ̈  - umlaut above - centralized
noback sign \x033D 4-1346      # ̽  - over-cross above - mid-centralized
noback sign \x0318 6-156       # ̘  - advancing sign below - advanced tongue root
noback sign \x0319 6-234       # ̙  - retracting sign below - retracted tongue root
noback sign \x02DE 5-1235      # ˞  - right hook - rhoticity
noback sign \x02B7 4-2456      # ʷ - superscript w - labialized
noback sign \x02B2 4-245       # ʲ - superscript j - palatalized
noback sign \x02E0 4-46-1245   # ˠ - superscript gamma - velarized
noback sign \x02E4 4-235-23    # ˤ - superscript reversed glottal stop - pharyngealized
noback sign \x0303 4-12456     # ̃  - tilde above - nasalized
noback sign \x207F 4-1345      # ⁿ - superscript n - nasal release
noback sign \x02E1 4-123       # ˡ - superscript l - lateral release
noback sign \x031A 4-145       # ̚  - corner above - no audible release
noback sign \x0334 5-12456     # ̴  - superimposed tilde - velarized or pharyngealized
noback sign \x031D 6-345       # ̝  - raising sign below - raised
noback sign \x031E 6-126       # ̞  - lowering sign below - lowered
noback sign \x0329 6-23        # ̩  - vertical line below - syllabic
noback sign \x0361 5           # ͡  - top tie bar - affricate or double articulation


#--------SUPRASEGMENTALS--------
# UNICODE DOTS                 # GLYPH - TYPOGRAPHIC DESC. - ARTICULATORY DESC.
noback sign \x02C8 456-12      # ˈ - vertical stroke (superior) - (primary) stress
noback sign \x02CC 456-23      # ˌ - vertical stroke (inferior) - secondary stress
noback sign \x02D0 25          # ː - length mark - long
noback sign \x02D1 5-2         # ˑ - half-length mark - half-long
noback sign \x0306 4-12356     # ̆  - breve above - extra-short
noback sign \x203F 456-123     # ‿ - bottom tie bar - linking (absence of a break)


#--------TONES AND WORD ACCENTS--------
# UNICODE DOTS                 # GLYPH - TYPOGRAPHIC DESC. - ARTICULATORY DESC.
noback sign \x030B 4-6-34      # ̋  - double acute accent above - extra high level tone
noback sign \x0301 4-34        # ́  - acute accent above - high level tone
noback sign \x0304 4-14        # ̄  - macron above - mid level tone
noback sign \x0300 4-16        # ̀  - grave accent above - low level tone
noback sign \x030F 4-6-16      # ̏  - double grave accent above - extra low level tone
noback sign \x030C 4-236       # ̌  - wedge above - rising contour tone
noback sign \x0302 4-146       # ̂  - circumflex above - falling contour tone
noback sign \x1DC4 4-24        # ᷄ (UTF-16) - macron-acute above - high -rising contour tone
noback sign \x1DC5 4-35        # ᷅ (UTF-16) - grave-macron above - low-rising contour tone
noback sign \x1DC8 4-256       # ᷈ (UTF-16) - grave-acute- grave above - rising-falling contour tone
noback sign \xF19D 456-2346    #  - down arrow - downstep
noback sign \x02E5 456-4-14    # ˥ - extra-high (55) tone bar - extra high level tone
noback sign \x02E6 456-14      # ˦ - high (44) tone bar - high level tone
noback sign \x02E7 456-25      # ˧ - mid (33) tone bar - mid level tone
noback sign \x02E8 456-36      # ˨ - low (22) tone bar - low level tone
noback sign \x02E9 456-6-36    # ˩ - extra-low (11) tone bar - extra low level tone
