# liblouis: English, U.S. grade 1 (EBAE) table
#
# -----------
#-name: U.S. English grade 1 (EBAE)
#-index-name: English, U.S., uncontracted
#-display-name: English uncontracted braille as used in the U.S.
#
#+locale:en-US
#+type:literary
#+contraction:no
#+grade:1
#+system:ebae
#
# TODO: Please correct the metadata above. It is not meant to be
# accurate nor complete. It hasn't been verified by the table
# author yet. It is merely an attempt by the liblouis maintainers
# to get some sensible initial values in place.
#
# TODO: Please add a reference to official documentation about
# the implemented braille code. Preferably submit the documents
# to https://github.com/liblouis/braille-specs.
# -----------
#
#  Based on the Linux screenreader BRLTTY, copyright (C) 1999-2006 by
#  The BRLTTY Team
#
#  Copyright (C) 2004-2006 ViewPlus Technologies, Inc. www.viewplus.com
#  Copyright (C) 2004-2006 JJB Software, Inc. www.jjb-software.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 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/>.

include en-chardefs.cti All character definition opcodes
include en-us-compbrl.uti Comp6 translation  opcodes

# Braille indicators
numsign 3456  number sign, just a dots operand
letsign 56
noletsignafter .
noletsignafter '
#capsletter 6
#capsword 6-6
#endcapsword 6-3
capsletter 6
begcapsword 6-6
endcapsword 6-3

emphclass italic
emphclass underline
emphclass bold
emphclass transnote

begemphword italic 46-3
endemphword italic 46-36
emphletter italic 46-25

begemphphrase bold 456-46-46
endemphphrase bold before 456-46
lenemphphrase bold 4
begemphword bold 456-46

begemphword underline 456-36
endemphword underline 3-6
lenemphphrase underline 3
begemphphrase underline 456-2356
endemphphrase underline after 6-3

begemph transnote 6-3
endemph transnote 6-3

begcomp 456-346
endcomp 456-156

# literary forms of the decimal digits
include litdigits6Dots.uti

# display/passthrough for unicode braille
include braille-patterns.cti

# 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
endword s' 234-3
word ? 4-236
endnum st 34
endnum nd 1345-145
endnum rd 1235-145
noback 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

