# liblouis braille Table - Esperanto X System
#
#  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" "Ŭ"
