# -----------
#-index-name: Mongolian, uncontracted
#-display-name: Mongolian uncontracted braille
#
#+language:mn
#+type:literary
#+contraction:no
#+dots:8
# Marked as "direction:forward" by Bue Vester-Andersen
# as there are only very few backward tests.
#+direction:forward
#
# 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) 2015  Tsengel Maidar Innovation Development center of the blind at idcbinnovation@gmail.com
# Copyright (C) 2018 Tsengel Maidar EBraillesoftLLC
# Copyright (C) 2017, 2018, 2019 Angaragerdene at angaragerdene.b@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 and rules for Mongolian script.
# Contributors: Dipendra Manocha, Sreeja, Tsengel, Angaragerdene
# To report any bugs or any suggestion, please write to tsengel.braille.dev@gmail.com and angaragerdene.b@gmail.com

include mn-MN-common.cti
include en-ueb-g1.ctb

	
