# -----------
#-index-name: Mongolian, contracted
#-display-name: Mongolian contracted braille
#
#+locale:mn
#+type:literary
#+contraction:full
#+dots:8
#
# 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 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 with Unified English grade 2.
# Contributors:  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-g2.ctb
