#mao#1#Maori Uncontracted#
# liblouis: Maori Braille Table
#
# -----------
#-display-name: Maori braille
#
#+locale:mi
#+type:literary
#+contraction:no
#+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.
# -----------
#
# Based on World Braille Usage 2013
# <http://liblouis.org/braille-specs/world-braille-usage-third-edition.pdf>.
#
# Copyright (C) 2014, Greg Kearney, gkearney@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/>.

#include text_nabcc.dis All display opcodes

include en-ueb-g1.ctb

# Maori specific

always	ng	1345-1245
always	wh	156
uplow	Āā	456-1
uplow	Ēē	456-15
uplow	Īī	456-24
uplow	Ōō	456-135
uplow	Ūū	456-136
