#
#  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
#	2015-08-28	Additions and fixes by Zvonimir Stanecic
#
# ---------------------------------------------------------------------------------------

include sr-chardefs.cti
include braille-patterns.cti

numsign 3456								# number sign
capsletter 46
begcapsword 45

prepunc `` 236
# --- Emphasis opcodes ---------------------------------------------------------
emphclass italic
emphclass underline
emphclass bold

endemphphrase italic after 6-3
lenemphphrase italic 1
begemphword italic 6-456
endemphword italic 6-3
emphletter italic 456

endemphphrase bold after 6-3
lenemphphrase bold 1
begemphword bold 6-456
endemphword bold 6-3
emphletter bold 456

endemphphrase underline after 6-3
lenemphphrase underline 1
begemphword underline 6-456
endemphword underline 6-3
emphletter underline 456

#----------- SPECIAL SYLLABLES ------------------------------------------------
always \x0044\x017D 12456			# LATIN CAPITAL LETTER D + LATIN CAPITAL LETTER Z WITH CARON
always \x0044\x017E 12456			# LATIN CAPITAL LETTER D + LATIN SMALL LETTER Z WITH CARON
always \x0064\x017E 12456			# LATIN SMALL LETTER D + LATIN SMALL LETTER Z WITH CARON
always LJ 126						# LJ
always Lj 126						# Lj
always lj 126						# lj
always NJ 1246						# NJ
always Nj 1246						# Nj
always nj 1246						# nj
#-----------------------------------------------------------------------------

#----------- SPECIAL WORDS ---------------------------------------------------
word injekc 24-1345-245-15-13-14
word injekt 24-1345-245-15-13-2345
word konjunk 13-135-1345-245-136-1345-13
word konjug 13-135-1345-245-136-1245
word nadživ 1345-1-145-2346-24-1236
word odživ 135-145-2346-24-1236
word predživot 1234-1235-15-145-2346-24-1236-135-2345
word tanjug 2345-1-1345-245-136-1245
#-----------------------------------------------------------------------------

# mathematical symbols
midnum ­ 36
midnum - 36
endnum % 3456-245-356 #46


# special character sequences
literal :// URLs
literal www.

literal .com
literal .edu
literal .gov
literal .mil
literal .net
literal .org

literal .doc
literal .htm
literal .html
literal .tex
literal .txt

literal .gif
literal .jpg
literal .png
literal .wav

literal .tar
literal .zip
