#
#  Copyright (C) 2011 by Peter Engström <peter.engstrom@indexbraille.com>
#  Copyright (C) 2011 by Monk Jeremiah, Manastir Decani <visokidecani@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 3 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/>.
#
# -----------------------------------------------------------------------------
#
# 	SERBIAN
#	=======
# 	Authors:	Peter Engström, Index Braille <peter.engstrom@indexbraille.com>
#				Monk Jeremiah, Manastir Decani <visokidecani@gmail.com>
#
# 	Date: 		Note:
#	2011-03-28	Initial release
#	2011-04-04	Added more signs.
#	2015-08-28	Additions and fixes by Zvonimir Stanecic
#
#---------------------------------------------------------------------------------------

#--------------------- ALL CHARS DEFINITIONS -------------------------------------------

space \t 0 tab            			# HORIZONTAL TABULATION
space \s 0 blank					# SPACE
space \X00A0 0						# NO-BREAK SPACE

punctuation ! 235					# EXCLAMATION MARK
punctuation • 3					# BULET
sign + 235							# PLUS SIGN
midnum + 235						# PLUS SIGN
punctuation ? 26					# QUESTION MARK
punctuation . 256					# FULL STOP
sign \x2026 3-3-3					# HORIZONTAL ELLIPSIS
punctuation , 2						# COMMA
punctuation ;	23					# SEMICOLON
punctuation : 25					# COLON
punctuation ­ 36
punctuation - 36					# HYPHEN-MINUS
punctuation ' 3	  					# APOSTROPHE
punctuation *	35					# ASTERISK
sign / 34							# SOLIDUS
sign \\ 16							# REVERSE SOLIDUS
punctuation ( 2356					# LEFT PARENTESIS
punctuation ) 2356					# RIGHT PARENTESIS
punctuation " 2356					# QUOTATION MARK
punctuation ” 356					# RIGHT QUOTATION MARK
punctuation – 36					# EM DASH
punctuation \x201E 236				# DOUBLE LOW-9 QUOTATION MARK
punctuation \x201C 356				# LEFT DOUBLE QUOTATION MARK




sign # 3456							# NUMBER SIGN
sign $ 256							# DOLLAR SIGN
sign & 4-12346						# AMPERSAND
sign < 5-246						# LESS-THAN SIGN
sign = 2356							# EQUAL SIGN
sign > 135-2						# GREATER-THAN SIGN
sign @ 345							# COMMERCIAL AT
punctuation [ 2356-3				# LEFT SQUARE BRACKET
punctuation ] 6-2356				# RIGHT SQUARE BRACKET
sign ^ 56							# CIRCUMFLEX ACCENT
sign _ 6-36							# LOW LINE (UNDERSCORE)
sign ` 4							# GRAVE ACCENT
punctuation { 2356-23				# LEFT CURLY BRACKET
sign | 4-123						# VERTICAL LINE
punctuation } 56-2356				# RIGHT CURLY BRACKET
sign ~ 56							# TILDE
sign € 26							# EURO
sign \x00A2 4						# CENT SIGN
sign \x00A3 6-123					# POUND SIGN
sign \x00A4 2356-1236-2356			# CURRENCY SIGN
sign \x00A7 346						# PARAGRAPH SIGN
sign \x00A9 12356-14-23456			# COPYRIGHT
punctuation \x00AB 2346-14-3		# LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
sign \x00B0 356						# DEGREE SIGN
sign % 3456-245-356					# PERCENT SIGN
sign \x2030	3456-245-356-356		# PER MILL SIGN
sign \x00B2 34-23					# SUPERSCRIPT 2 SIGN
sign \x00B3 34-25					# SUPERSCRIPT 3 SIGN
sign \x00B9 34-2					# SUPERSCRIPT 1 SIGN
punctuation \x00BB 6-2356-2356		# RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
sign \x00BC 3456-1-1256-145			# VULGAR FRACTION ONE QUARTER
sign \x00BD 3456-1-1256-12			# VULGAR FRACTION ONE HALF
sign \x00BE 3456-14-1256-145		# VULGAR FRACTION 3 QUARTERS
math \x00D7 56-36 					# MULTIPLICATION SIGN
math \x00F7 1256 					# DIVISION SIGN

#------------- NOT ASSIGNED ---------------------------------- 
#sign \x00A5 45-13456					# YEN SIGN
#sign \x00B4 1256						# ACUTE ACCENT
#sign \x00B5 46-134						# µ MICRO SIGN
#sign \x00B6 4-1234-345					# ¶ PILCROW SIGN
#uplow	\x00D3\x00F3 346				# LATIN CAPITAL LETTER O WITH ACUTE


include digits6Dots.uti

include latinLetterDef6Dots.uti
uplow \x010C\x010D 16				# LATIN LETTER C WITH CARON
uplow \x0106\x0107 146				# LATIN LETTER C WITH ACUTE
uplow \x0110\x0111 1456				# LATIN LETTER D WITH STROKE
uplow \x0160\x0161 156				# LATIN LETTER S WITH CARON
uplow \x017D\x017E 2346				# LATIN LETTER Z WITH CARON
uplow \x008E\x009E 2346				# LATIN LETTER Z WITH CARON (ASCII)


#uplow \x00C0\x00E0 				# LATIN LETTER A WITH GRAVE
#uplow \x00C8\x00E8 				# LATIN LETTER E WITH GRAVE
#uplow \x00C9\x00E9 				# LATIN LETTER E WITH ACUTE
#uplow \x00CC\x00EC 				# LATIN LETTER I WITH GRAVE
#uplow \x00D2\x00F2 				# LATIN LETTER O WITH GRAVE
#uplow \x00DA\x00FA 				# LATIN LETTER U WITH ACUTE


#-------- SERBIAN CYRILLIC LETTERS -----------------------------------------------------


uplow \x0410\x0430 1				# CYRILLIC LETTER A
uplow \x0411\x0431 12				# CYRILLIC LETTER BE
uplow \x0426\x0446 14				# CYRILLIC LETTER TSE
uplow \x0427\x0447 16				# CYRILLIC LETTER CHE
uplow \x040B\x045B 146				# CYRILLIC LETTER TSHE
uplow \x0414\x0434 145				# CYRILLIC LETTER DE
uplow \x040F\x045F 12456			# CYRILLIC LETTER DZHE
uplow \x0402\x0452 1456				# CYRILLIC LETTER DJE
uplow \x0415\x0435 15				# CYRILLIC LETTER IE
uplow \x0424\x0444 124				# CYRILLIC LETTER EF
uplow \x0413\x0433 1245				# CYRILLIC LETTER GHE
uplow \x0425\x0445 125				# CYRILLIC LETTER HA
uplow \x0418\x0438 24				# CYRILLIC LETTER I
uplow \x0408\x0458 245				# CYRILLIC LETTER JE
uplow \x041A\x043A 13				# CYRILLIC LETTER KA
uplow \x041B\x043B 123				# CYRILLIC LETTER EL
uplow \x0409\x0459 126				# CYRILLIC LETTER LJE
uplow \x041C\x043C 134				# CYRILLIC LETTER EM
uplow \x041D\x043D 1345				# CYRILLIC LETTER EN
uplow \x040A\x045A 1246				# CYRILLIC LETTER NJE
uplow \x041E\x043E 135				# CYRILLIC LETTER O
uplow \x041F\x043F 1234				# CYRILLIC LETTER PE
uplow \x0420\x0440 1235				# CYRILLIC LETTER ER
uplow \x0421\x0441 234				# CYRILLIC LETTER ES
uplow \x0428\x0448 156				# CYRILLIC LETTER SHA
uplow \x0422\x0442 2345				# CYRILLIC LETTER TE
uplow \x0423\x0443 136				# CYRILLIC LETTER U
uplow \x0412\x0432 1236				# CYRILLIC LETTER VE
uplow \x0417\x0437 1356				# CYRILLIC LETTER ZE
uplow \x0416\x0436 2346				# CYRILLIC LETTER ZHE


#uplow \x0419\x0439 12346			# CYRILLIC LETTER SHORT I
#uplow \x0429\x0449 1346			# CYRILLIC LETTER SHCHA
#uplow \x042A\x044A 12356			# CYRILLIC LETTER HARD SIGN
#uplow \x042B\x044B 2346			# CYRILLIC LETTER YERU
#uplow \x042C\x044C 23456			# CYRILLIC LETTER SOFT SIGN
#uplow \x042D\x044D 246				# CYRILLIC LETTER E
#uplow \x042E\x044E 1256			# CYRILLIC LETTER YU
#uplow \x042F\x044F 1246 			# CYRILLIC LETTER YA
#uplow \x0401\x0451 16 				# CYRILLIC LETTER IO

#---------------------------------------------------------------------------------------
