# liblouis braille Table - Esperanto X System
#
# -----------
#-index-name: Esperanto x-system
#-display-name: Esperanto x-system braille
#
#+locale:eo-xsistemo
#+type:literary
#+grade:1
#
# TODO: Please correct the metadata above. It is not meant to be
# accurate nor complete. It hasn't been verified by the table
# author yet. It is merely an attempt by the liblouis maintainers
# to get some sensible initial values in place.
#
# TODO: Please add a reference to official documentation about
# the implemented braille code. Preferably submit the documents
# to https://github.com/liblouis/braille-specs.
# -----------
#
#  Copyright (C) 2013 Aaron Cannon <cannona@fireantproductions.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/>.
#
# Created by Aaron Cannon <cannona@fireantproductions.com>
# April 14, 2013
#
# This file extends the Esperanto table with support for the X System.
# The X system is a means of writing the accented letters of Esperanto
# C-Circumflex, G-Circumflex, H-Circumflex, J-Circumflex, S-Circumflex,
# and U-Breve on systems where Unicode is either not available or not
# practical. It is especially common among blind Esperantists, as until
# recently, screen readers did not support reading the unicode
# characters that Esperanto uses.
#
# In short, in the x-system, an X is written after each letter with an
# accent.  I.E. "cx, gx, hx, jx, sx or ux".
#
# This system is not generally ambiguous because the Esperanto alphabet
# does not contain the letter X.
#
# The H-system originally proposed by L. L. Zamenhof is rarely used
# because it is ambiguous, as H is part of the Esperanto alphabet, and
#  in that system, U-circumflex is not marked at all.
	
include eo-g1.ctb
	
noback correct "cx" "ĉ"
noback correct "cX" "ĉ"
noback correct "Cx" "Ĉ"
noback correct "CX" "Ĉ"
noback correct "gx" "ĝ"
noback correct "gX" "ĝ"
noback correct "Gx" "Ĝ"
noback correct "GX" "Ĝ"
noback correct "hx" "ĥ"
noback correct "hX" "ĥ"
noback correct "Hx" "Ĥ"
noback correct "HX" "Ĥ"
noback correct "jx" "ĵ"
noback correct "jX" "ĵ"
noback correct "Jx" "Ĵ"
noback correct "JX" "Ĵ"
noback correct "sx" "ŝ"
noback correct "sX" "ŝ"
noback correct "Sx" "Ŝ"
noback correct "SX" "Ŝ"
noback correct "ux" "ŭ"
noback correct "uX" "ŭ"
noback correct "Ux" "Ŭ"
noback correct "UX" "Ŭ"
