#
# 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 en-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
noback always ( 2356
postpunc ) 2356
word ) 4-2356
noback 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

