#
# Copyright (C) 1995-2008 by The BRLTTY Developers.
#
#  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/>.

# BRLTTY Text Table - Estonian
#
# Samuel Thibault <samuel.thibault@ens-lyon.org>
# 
# This table is based on the Unesco report on the progress of unification of
# braille writing « L'ÉCRITURE BRAILLE DANS LE MONDE », by Sir Clutha
# MACKENZIE: http://unesdoc.unesco.org/images/0013/001352/135251fo.pdf
# The document is dated 1954, so this table may be quite outdated.

# generated by ttbtest
space \s 0		SPACE
punctuation ! 235		EXCLAMATION MARK
punctuation " 2356		QUOTATION MARK
punctuation ' 3		APOSTROPHE
punctuation ( 236		LEFT PARENTHESIS
punctuation ) 356		RIGHT PARENTHESIS
punctuation , 2		COMMA
punctuation - 36		HYPHEN-MINUS
punctuation . 256		FULL STOP
include digits8Dots.uti
punctuation : 25		COLON
punctuation ; 23		SEMICOLON
punctuation ? 236		QUESTION MARK
uppercase A 17		LATIN CAPITAL LETTER A
uppercase B 127		LATIN CAPITAL LETTER B
uppercase C 147		LATIN CAPITAL LETTER C
uppercase D 1457		LATIN CAPITAL LETTER D
uppercase E 157		LATIN CAPITAL LETTER E
uppercase F 1247		LATIN CAPITAL LETTER F
uppercase G 12457		LATIN CAPITAL LETTER G
uppercase H 1257		LATIN CAPITAL LETTER H
uppercase I 247		LATIN CAPITAL LETTER I
uppercase J 2457		LATIN CAPITAL LETTER J
uppercase K 137		LATIN CAPITAL LETTER K
uppercase L 1237		LATIN CAPITAL LETTER L
uppercase M 1347		LATIN CAPITAL LETTER M
uppercase N 13457		LATIN CAPITAL LETTER N
uppercase O 1357		LATIN CAPITAL LETTER O
uppercase P 12347		LATIN CAPITAL LETTER P
uppercase Q 123457		LATIN CAPITAL LETTER Q
uppercase R 12357		LATIN CAPITAL LETTER R
uppercase S 2347		LATIN CAPITAL LETTER S
uppercase T 23457		LATIN CAPITAL LETTER T
uppercase U 1367		LATIN CAPITAL LETTER U
uppercase V 12367		LATIN CAPITAL LETTER V
uppercase W 24567		LATIN CAPITAL LETTER W
uppercase X 13467		LATIN CAPITAL LETTER X
uppercase Y 134567		LATIN CAPITAL LETTER Y
uppercase Z 13567		LATIN CAPITAL LETTER Z
lowercase a 1		LATIN SMALL LETTER A
lowercase b 12		LATIN SMALL LETTER B
lowercase c 14		LATIN SMALL LETTER C
lowercase d 145		LATIN SMALL LETTER D
lowercase e 15		LATIN SMALL LETTER E
lowercase f 124		LATIN SMALL LETTER F
lowercase g 1245		LATIN SMALL LETTER G
lowercase h 125		LATIN SMALL LETTER H
lowercase i 24		LATIN SMALL LETTER I
lowercase j 245		LATIN SMALL LETTER J
lowercase k 13		LATIN SMALL LETTER K
lowercase l 123		LATIN SMALL LETTER L
lowercase m 134		LATIN SMALL LETTER M
lowercase n 1345		LATIN SMALL LETTER N
lowercase o 135		LATIN SMALL LETTER O
lowercase p 1234		LATIN SMALL LETTER P
lowercase q 12345		LATIN SMALL LETTER Q
lowercase r 1235		LATIN SMALL LETTER R
lowercase s 234		LATIN SMALL LETTER S
lowercase t 2345		LATIN SMALL LETTER T
lowercase u 136		LATIN SMALL LETTER U
lowercase v 1236		LATIN SMALL LETTER V
lowercase w 2456		LATIN SMALL LETTER W
lowercase x 1346		LATIN SMALL LETTER X
lowercase y 13456		LATIN SMALL LETTER Y
lowercase z 1356		LATIN SMALL LETTER Z
punctuation \x00a0 0		NO-BREAK SPACE
uppercase \x00c4 3457		LATIN CAPITAL LETTER A WITH DIAERESIS
uppercase \x00d5 23467		LATIN CAPITAL LETTER O WITH TILDE
uppercase \x00d6 2467		LATIN CAPITAL LETTER O WITH DIAERESIS
uppercase \x00dc 12567		LATIN CAPITAL LETTER U WITH DIAERESIS
lowercase \x00e4 345		LATIN SMALL LETTER A WITH DIAERESIS
lowercase \x00f5 2346		LATIN SMALL LETTER O WITH TILDE
lowercase \x00f6 246		LATIN SMALL LETTER O WITH DIAERESIS
lowercase \x00fc 1256		LATIN SMALL LETTER U WITH DIAERESIS
