#afr#1#Afrikaans Uncontracted#za#Afrikaans onverkort

# liblouis: Afrikaans Braille Code (Grade 1)
#
# ------------
#-name: Afrikaans onverkort
#-index-name: Afrikaans, uncontracted
#-display-name: Afrikaans uncontracted braille
#
#+language:af
#+type:literary
#+contraction:no
#+grade:1
#+system:ubc-af
#
# "UBC" stands for "Unified Braille Code" and is a generalization of UEB.
# See https://sabrailleauthority.org.za/unified-braille-code-ubc.
# ------------
#
# Afrikaans is one of the 11 official languages in South Africa and is
# among the top 3 most widely spoken local languages. It is a language
# closely related to Dutch and uses the same alphabet, but in addition
# it makes frequent use of the following diacritic marks on vowels:
# acute and grave accent, circumflex and umlaut.
#
# The first braille system for Afrikaans was developed in about
# 1935. After the adoption of the UEB in 2004 in Toronto, Canada, we
# also unified the Afrikaans braille code according to the principles
# of the UEB. The grade 1 code is identical to grade 1 UEB. Grade 2
# has 183 contractions. Each letter of the alphabet except the letter
# u (which is a word on its own) represents a contraction in grade
# 2. As with UEB, we eliminated the contractions which could cause
# ambiguity. In one respect Afrikaans braille is simpler than UEB, but
# in another respect it is more complex: It is simpler in that it does
# not have the complexity around shortforms found in UEB grade 2. It
# is more complex because of linguistic reasons. In Afrikaans compound
# words are frequently created on the fly and this can cause
# contraction issues at word boundaries.
#
# We do not use additional codes such as Nemeth or computer braille
# codes; we use our unified Afrikaans code also for technical
# material.
#
# Copyright (C) 2014, 2019 Greg Kearney <gkearney@gmail.com>
# Copyright (C) 2019 South African Braille Authority <http://www.sabrailleauthority.org.za>
#
# 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 en-ueb-g1.ctb
