#
# 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 - Bulgarian
#
# 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.
#  Edited on Mar 10 2013 by Rumiana Kamenska <rkamenska@gmail.com>
# to meet modern standards.
# Added latinn letters.
#
# generated by ttbtest

#Punctuation and symbols 
space \s 0		SPACE
space \t 9 tab
space \s 0 blank
space \x00a0 a unbreakable space
sign \x000a 78 newline
space \x000d 0 carriage return
punctuation ! 235		EXCLAMATION MARK
punctuation " 236		QUOTATION MARK
punctuation ' 3		APOSTROPHE
punctuation ( 126		LEFT PARENTHESIS
punctuation ) 345		RIGHT PARENTHESIS
punctuation , 2		COMMA
punctuation - 36		HYPHEN-MINUS
punctuation . 256		FULL STOP
punctuation : 25		COLON
punctuation ; 23		SEMICOLON
punctuation ? 26		QUESTION MARK
punctuation \x00a0 0		NO-BREAK SPACE
sign _ 456
math < 246
math = 2345
math > 135
sign % 356
math + 235
math ~ 346
sign ` 4
sign & 12346
sign $ 1246
punctuation { 246
punctuation [ 1235678
punctuation } 135
punctuation ] 2345678
sign ^ 34
sign @ 2346
sign # 346
sign \\ 16
sign | 1456
math / 34
sign * 35

# Digits
digit 0 3568		DIGIT ZERO
digit 1 28		DIGIT ONE
digit 2 238		DIGIT TWO
digit 3 258		DIGIT THREE
digit 4 2568		DIGIT FOUR
digit 5 268		DIGIT FIVE
digit 6 2358		DIGIT SIX
digit 7 23568		DIGIT SEVEN
digit 8 2368		DIGIT EIGHT
digit 9 358		DIGIT NINE

#Cyrillic  letters
uppercase \x0401 167		CYRILLIC CAPITAL LETTER IO
uppercase \x0410 17		CYRILLIC CAPITAL LETTER A
uppercase \x0411 127		CYRILLIC CAPITAL LETTER BE
uppercase \x0412 24567		CYRILLIC CAPITAL LETTER VE
uppercase \x0413 12457		CYRILLIC CAPITAL LETTER GHE
uppercase \x0414 1457		CYRILLIC CAPITAL LETTER DE
uppercase \x0415 157		CYRILLIC CAPITAL LETTER IE
uppercase \x0416 2457		CYRILLIC CAPITAL LETTER ZHE
uppercase \x0417 13567		CYRILLIC CAPITAL LETTER ZE
uppercase \x0418 247		CYRILLIC CAPITAL LETTER I
uppercase \x0419 134567		CYRILLIC CAPITAL LETTER SHORT I
uppercase \x041a 137		CYRILLIC CAPITAL LETTER KA
uppercase \x041b 1237		CYRILLIC CAPITAL LETTER EL
uppercase \x041c 1347		CYRILLIC CAPITAL LETTER EM
uppercase \x041d 13457		CYRILLIC CAPITAL LETTER EN
uppercase \x041e 1357		CYRILLIC CAPITAL LETTER O
uppercase \x041f 12347		CYRILLIC CAPITAL LETTER PE
uppercase \x0420 12357		CYRILLIC CAPITAL LETTER ER
uppercase \x0421 2347		CYRILLIC CAPITAL LETTER ES
uppercase \x0422 23457		CYRILLIC CAPITAL LETTER TE
uppercase \x0423 1367		CYRILLIC CAPITAL LETTER U
uppercase \x0424 1247		CYRILLIC CAPITAL LETTER EF
uppercase \x0425 1257		CYRILLIC CAPITAL LETTER HA
uppercase \x0426 147		CYRILLIC CAPITAL LETTER TSE
uppercase \x0427 123457		CYRILLIC CAPITAL LETTER CHE
uppercase \x0428 1567		CYRILLIC CAPITAL LETTER SHA
uppercase \x0429 13467		CYRILLIC CAPITAL LETTER SHCHA
uppercase \x042a 123567		CYRILLIC CAPITAL LETTER HARD SIGN
uppercase \x042b 23467		CYRILLIC CAPITAL LETTER YERU
uppercase \x042c 234567		CYRILLIC CAPITAL LETTER SOFT SIGN
uppercase \x042d 2467		CYRILLIC CAPITAL LETTER E
uppercase \x042e 12567		CYRILLIC CAPITAL LETTER YU
uppercase \x042f 12467		CYRILLIC CAPITAL LETTER YA
lowercase \x0430 1		CYRILLIC SMALL LETTER A
lowercase \x0431 12		CYRILLIC SMALL LETTER BE
lowercase \x0432 2456		CYRILLIC SMALL LETTER VE
lowercase \x0433 1245		CYRILLIC SMALL LETTER GHE
lowercase \x0434 145		CYRILLIC SMALL LETTER DE
lowercase \x0435 15		CYRILLIC SMALL LETTER IE
lowercase \x0436 245		CYRILLIC SMALL LETTER ZHE
lowercase \x0437 1356		CYRILLIC SMALL LETTER ZE
lowercase \x0438 24		CYRILLIC SMALL LETTER I
lowercase \x0439 13456		CYRILLIC SMALL LETTER SHORT I
lowercase \x043a 13		CYRILLIC SMALL LETTER KA
lowercase \x043b 123		CYRILLIC SMALL LETTER EL
lowercase \x043c 134		CYRILLIC SMALL LETTER EM
lowercase \x043d 1345		CYRILLIC SMALL LETTER EN
lowercase \x043e 135		CYRILLIC SMALL LETTER O
lowercase \x043f 1234		CYRILLIC SMALL LETTER PE
lowercase \x0440 1235		CYRILLIC SMALL LETTER ER
lowercase \x0441 234		CYRILLIC SMALL LETTER ES
lowercase \x0442 2345		CYRILLIC SMALL LETTER TE
lowercase \x0443 136		CYRILLIC SMALL LETTER U
lowercase \x0444 124		CYRILLIC SMALL LETTER EF
lowercase \x0445 125		CYRILLIC SMALL LETTER HA
lowercase \x0446 14		CYRILLIC SMALL LETTER TSE
lowercase \x0447 12345		CYRILLIC SMALL LETTER CHE
lowercase \x0448 156		CYRILLIC SMALL LETTER SHA
lowercase \x0449 1346		CYRILLIC SMALL LETTER SHCHA
lowercase \x044a 12356		CYRILLIC SMALL LETTER HARD SIGN
lowercase \x044b 2346		CYRILLIC SMALL LETTER YERU
lowercase \x044c 23456		CYRILLIC SMALL LETTER SOFT SIGN
lowercase \x044d 246		CYRILLIC SMALL LETTER E
lowercase \x044e 1256		CYRILLIC SMALL LETTER YU
lowercase \x044f 1246		CYRILLIC SMALL LETTER YA
lowercase \x0451 16		CYRILLIC SMALL LETTER IO
uppercase \x0462 3457		CYRILLIC CAPITAL LETTER YAT
lowercase \x0463 345		CYRILLIC SMALL LETTER YAT
uppercase \x046a 2467		CYRILLIC CAPITAL LETTER BIG YUS
lowercase \x046b 246		CYRILLIC SMALL LETTER BIG YUS

# Latin letters
uplow Aa 178,18
uplow Bb 1278,128
uplow Cc 1478,148
uplow Dd 14578,1458
uplow Ee 1578,158
uplow Ff 12478,1248
uplow Gg 124578,12458
uplow Hh 12578,1258
uplow Ii 2478,248
uplow Jj 24578,2458
uplow Kk 1378,138
uplow Ll 12378,1238
uplow Mm 13478,1348
uplow Nn 134578,13458
uplow Oo 13578,1358
uplow Pp 123478,12348
uplow Qq 1234578,123458
uplow Rr 123578,12358
uplow Ss 23478,2348
uplow Tt 234578,23458
uplow Uu 13678,1368
uplow Vv 123678,12368
uplow Ww 245678,24568
uplow Xx 134678,13468
uplow Yy 1345678,134568
uplow Zz 135678,13568

# Miscellaneous
noback sign \x25CF 35 BLACK CIRCLE
