#
# 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 - Romanian
#
# Samuel Thibault <samuel.thibault@ens-lyon.org>
# 
# Updated by Stefan Moisei <vortex37 {at} gmail {dot} com>
#
# 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 ~ 45		TILDE
punctuation | 4568		VERTICAL LINE
punctuation _ 456		LOW LINE
punctuation [ 12356		LEFT SQUARE BRACKET
punctuation \\ 176		REVERSE SOLIDUS
punctuation ] 23456		RIGHT SQUARE BRAKET
punctuation @ 47		COMMERCIAL AT
punctuation = 2356		EQUALS SIGN
punctuation # 3456		NUMBER SIGN
punctuation / 34		SOLIDUS
punctuation * 26		ASTERISK
punctuation + 235		PLUS SIGN
punctuation % 356		PERCENT SIGN
punctuation ! 235		EXCLAMATION MARK
punctuation " 2356		QUOTATION MARK
punctuation \x201e 236		LEFT QUOTE
punctuation \x201d 356		RIGHT QUOTE
punctuation ' 3		APOSTROPHE
punctuation ( 126		LEFT PARENTHESIS
punctuation ) 345		RIGHT PARENTHESIS
punctuation , 2		COMMA
punctuation - 36		HYPHEN-MINUS
punctuation . 256		FULL STOP
include digits8Dots.uti
punctuation : 25		COLON
punctuation ; 23		SEMICOLON
punctuation ? 26		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 \x00c2 1267		LATIN CAPITAL LETTER A WITH CIRCUMFLEX
uppercase \x00ce 1467		LATIN CAPITAL LETTER I WITH CIRCUMFLEX
lowercase \x00e2 126		LATIN SMALL LETTER A WITH CIRCUMFLEX
lowercase \x00ee 146		LATIN SMALL LETTER I WITH CIRCUMFLEX
uppercase \x0102 167		LATIN CAPITAL LETTER A WITH BREVE
lowercase \x0103 16		LATIN SMALL LETTER A WITH BREVE
uppercase \x015e 1567		LATIN CAPITAL LETTER S WITH CEDILLA
lowercase \x015f 156		LATIN SMALL LETTER S WITH CEDILLA
uppercase \x0162 2467		LATIN CAPITAL LETTER T WITH CEDILLA
lowercase \x0163 246		LATIN SMALL LETTER T WITH CEDILLA
uppercase \x0218 1567		LATIN CAPITAL LETTER S WITH COMMA BELOW
lowercase \x0219 156		LATIN CAPITAL LETTER S WITH COMMA BELOW
uppercase \x021a 2467		LATIN CAPITAL LETTER T WITH COMMA BELOW
lowercase \x021b 246		LATIN SMALL LETTER T WITH COMMA BELLOW
