# liblouis: English, U.S. grade 1 (EBAE) table
#
# -----------
#-name: U.S. English grade 1 (EBAE)
#-display-name: U.S. English (EBAE) uncontracted braille
#
#+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
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
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

