#
# Copyright (C) 2014 National Institute for Visually Handicapped, 116, Rajpur Road, Dehradun, Uttrakhand, India
#
# 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/>.

# This table is built and maintained under an activity of Braille Council of India
# Contributors: Dipendra Manocha, Sreeja, Dinesh Kaushal, Mesar Hameed
# Last updated on May 5, 2014
# To report any bugs or any suggestion, please write to d@saksham.org and sreeja.param@gmail.com


include chardefs.cti All character definition opcodes
# Braille indicators
numsign 3456  number sign, just a dots operand
capsletter 6
begcapsword 6-6
endcapsword 6-3
emphclass italic
emphclass underline
emphclass bold
begemphphrase italic 46-46
endemphphrase italic before 46
lenemphphrase italic 4
begemphword italic 46-3
endemphword italic 46-36
emphletter italic 46-25
begemphphrase bold 456-456
endemphphrase bold before 456
lenemphphrase bold 4
begcomp 456-346
endcomp 456-156

# literary forms of the decimal digits
include litdigits6Dots.uti

# Letters are defined in chardefs.cti

# punctuation
prepunc ( 2356
word ( 4-2356
always ( 2356
postpunc ) 2356
word ) 4-2356
always ) 2356
prepunc " 236
postpunc " 356
word " 4-236
prepunc ` 6-236
prepunc ' 6-236
postpunc ' 356-3
word ' 4-3
word 'em = 
word 'tis =
word 'twas =
begnum # 456-1456 print number sign before number
midnum , 2
postpunc , 2
word , 4-2
decpoint . 46
midnum - 36
hyphen - 36
always \s--\s 36-36
always \s-\s 36-36
midnum \x00ad 36
postpunc . 256
word . 4-256
postpunc ; 23
word ; 4-23
midnum : 25
postpunc : 25
always : 4-25
postpunc ! 235
always ! 4-235
midnum / 34
always / 456-34
always < 5-13
always = 46-13
always > 46-2
always + 4-346
postpunc ? 236
word ? 4-236
endnum st 34
endnum nd 1345-145
endnum rd 1235-145
endnum 's 3-234
endnum th 1456
endnum 's 3-234
always % 4-25-1234
midnum ^ 45
always ^ 456-126
always ~ 4-156
always & 4-12346
midnum * 4-16
always * 35-35
prepunc [ 6-2356
word [ 4-6-2356
always [ 6-2356
postpunc ] 2356-3
word ] 4-2356-3
always ] 2356-3
prepunc { 56-2356
word { 4-56-2356
always { 56-2356
postpunc } 2356-23
word } 4-2356-23
always } 2356-23
always @ 4-1
always \\ 4-1256
always | 456-1256
always \s-\s 36-36
always ..." 3-3-3-356
always ... 3-3-3
always ...' 3-3-3-356-3
repeated .... 0
repeated ____ 456
repeated ---- 36
always .\s.\s." 3-3-3-356
always .\s.\s. 3-3-3 . . .
begnum $ 256
nofor begnum $ 256-3456
always $ 4-256

# special character sequences
compbrl :// URLs
compbrl ()
compbrl www.
compbrl ::
compbrl .com
compbrl .edu
compbrl .gov
compbrl .ini
compbrl .mil
compbrl .net
compbrl .org
compbrl .doc
compbrl .xml
compbrl .xsl
compbrl .htm
compbrl .html
compbrl .tex
compbrl .txt
compbrl .gif
compbrl .jpg
compbrl .png
compbrl .wav
compbrl .tar
compbrl .zip

noback context "\e"$a *
noback always \\_ 56 letter sign before Roman page numbers
noback pass2 @56-56 @56
noback pass2 @3-56 @3

