# liblouis: Welsh Grade 1 table
#
# Based on the braille contraction modules in BRLTTY
#
# Copyright (C) 1995-2004 by The BRLTTY Team.
# Copyright (C) 2004 ViewPlus Technologies, inc.,  www.viewplustech.com
# Copyright (C) 2004 Computers to Help People, Inc., www.chpi.org

# This file 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.

# This file 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 this file; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA

include text_nabcc.dis All display opcodes
space \s 0 blank
space \t 9 tab
space \x000a 0 newline
space \x000c 0
space \x000d 0 carriage return
space \x001b 1b escape character for html back-translation
space \x00A0 a NO-BREAK SPACE <noBreak> 0020 NON-BREAKING SPACE 
include loweredDigits6Dots.uti

include latinLetterDef8Dots.uti

punctuation ( 12356
punctuation } 12456
punctuation ] 124567
punctuation ? 1456
punctuation : 156
punctuation ) 23456
punctuation ! 2346
punctuation { 246
punctuation [ 2467
punctuation ' 3
punctuation - 36
punctuation . 46
punctuation " 5
punctuation ; 56
punctuation , 6
sign & 12346
sign $ 1246
sign | 1256
sign \\ 12567
sign % 146
sign * 16
sign # 3456
punctuation ` 4
sign _ 456
sign ^ 457
sign @ 47
math = 123456
math < 126
math / 34
math > 345
math + 346
math ~ 45

# Miscellaneous
math \x00B1 346-36 PLUS-MINUS SIGN PLUS-OR-MINUS SIGN 
math \x00B7 16 MIDDLE DOT 
math \x00BC 1456-2-34-256-3456 VULGAR FRACTION ONE QUARTER No 0031 2044 
math \x00BD 1456-2-34-23-3456 VULGAR FRACTION ONE HALF No 0031 2044 0032 
math \x00BE 1456-25-34-23-3456 VULGAR FRACTION THREE QUARTERS No 0033 
math \x00D7 4-16 MULTIPLICATION SIGN 
math \x00F7 46-34 DIVISION SIGN 
punctuation \x0092 3
punctuation \x0097 36-36
punctuation \x00A1 235 INVERTED EXCLAMATION MARK 
punctuation \x00ad 36
punctuation \x00BF 236 INVERTED QUESTION MARK 
punctuation \x2011 36
punctuation \x2013 36-36
punctuation \x2014 36-36
punctuation \x2018 6-236
punctuation \x2019 3
punctuation \x2019 356-3
punctuation \x201c 236
punctuation \x201d 356
punctuation \x2026 3
sign \x2122 45-2345 trademark sign
sign \x00A2 4-14 CENT SIGN 
sign \x00A3 3456 POUND SIGN 
sign \x00A4 1246 CURRENCY SIGN 
sign \x00A7 4-234 SECTION SIGN 
sign \x00A9 45-14 COPYRIGHT SIGN 
sign \x00AE 45-1235 REGISTERED SIGN REGISTERED TRADE MARK SIGN 
sign \x00B0 56-145-1245 DEGREE SIGN 
sign \x00B4 b4 ACUTE ACCENT 0020 0301 SPACING ACUTE 
sign \x00B5 46-134 MICRO SIGN 03BC 039C 039C
sign \x00A5 4-13456 YEN SIGN 
punctuation \x00A6 456-1256 BROKEN BAR BROKEN VERTICAL BAR 
# sign \x00A8 DIAERESIS 0020 0308 SPACING DIAERESIS 
# sign \x00AA FEMININE ORDINAL INDICATOR 0061 
# punctuation \x00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK LEFT 
# sign \x00AC NOT SIGN 
# sign \x00AF MACRON 0020 0304 SPACING MACRON 
# math \x00B2 SUPERSCRIPT TWO 0032 2 2 SUPERSCRIPT DIGIT TWO 
# math \x00B3 SUPERSCRIPT THREE 0033 3 3 SUPERSCRIPT DIGIT THREE 
sign \x00B6 1234-345 PILCROW SIGN PARAGRAPH SIGN 
# sign \x00B8 CEDILLA 0020 0327 SPACING CEDILLA 
# math \x00B9 SUPERSCRIPT ONE 0031 1 1 SUPERSCRIPT DIGIT ONE 
sign \x00BA 145-1245 MASCULINE ORDINAL INDICATOR 006F 
# punctuation \x00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK Pf Y 

punctuation \x2010 36			# 8208  hyphen
punctuation	\x201F 356		# 8223	smart double high reverse quotation mark
punctuation	\x201E 236		# 8222	smart double low quotation mark

noback sign \X25CF 16 black circle

# Braille indicators
numsign 3456  number sign, just a dots operand
multind 56-6 letsign capsletter
letsign 56
capsletter 6
begcapsword 6-6
endcapsword 6-3
emphclass italic
emphclass underline
emphclass bold
begemph italic 46
endemph italic 46-3
begemph bold 46-46
endemph bold 46-3
begcomp 6-346
endcomp 6-346

# the decimal digits
include litdigits6Dots.uti

# Letters not defined in en-chardefs
always ch 16
always th 1456

#single letter words
word a 1
word A 1
word i 24
word I 24
word o 135
word O 135
word y 13456
word Y 13456

# punctuation
prepunc " 236
postpunc " 356
always " 5
prepunc ' 6-236
postpunc ' 356-3
postpunc '' 356
postpunc ''' 356-3-356

always ' 3
midnum , 3
always , 2
midnum . 2
decpoint . 2
always . 256
always ; 23
midnum : 6-25
always : 25
endnum ! 6-235
always ! 235
always # 4-3456
midnum / 456-34-3456
always / 456-34
always ? 236
endnum % 0-25-1234
always % 25-1234
midnum ^ 346-3456
always ^ 456-126
always ~ 4-156
always & 4-12346
midnum * 0-56-236-3456
always * 35-35
repeated *** 35-35-0-35-35-0-35-35
prepunc ( 2356
postpunc ) 2356
always [ 6-2356
always ] 2356-3
always { 46-2356
always } 46-2356
always -com =
endword -to = pointed-to resource
endword -by = used-by
# always _ 78
prepunc `` 236
prepunc ` 6-236
always ` 4
always @ 2346
always \\ 5-16
always | 5-123
repeated --- 36-36-36

# repeated ___ 78-78-78
repeated ___ 46-46-46

repeated ::: 25-25-25

repeated === 56-2356-56-2356-56-2356
repeated ~~~ 4-156-4-156-4-156
always \s-\s 36-36
always \s-\scom 36-36-14-135-134
always ... 3-3-3
always .\s.\s. 3-3-3 . . .
# always  \x2026 3-3-3 # 8230			MS Word smart ellipsis

# the hyphen
# always ­ 36
repeated ­­­ 36-36-36
always \s­\s 36-36

# accented letters

uplow \x00C0\x00E0 1				# a with grave
uplow \x00C1\x00E1 1				# a with acute
uplow \x00C2\x00E2 1				# a with circumflex
#uplow \x00C3\x00E3 1				# a with tilde
uplow \x00C4\x00E4 1				# a with dieresis
#uplow \x00C5\x00E5 1				# a with ring above
uplow \x00C6\x00E6 1				# letter ae
#uplow \x00C7\x00E7 14				# c with cedilla
uplow \x00C8\x00E8 15				# e with grave
uplow \x00C9\x00E9 15				# e with acute
uplow \x00CA\x00EA 15				# e with circumflex
uplow \x00CB\x00EB 15				# e with dieresis
uplow \x00CC\x00EC 24				# i with grave above
uplow \x00CD\x00ED 24				# i with acute above
uplow \x00CE\x00EE 24				# i with circumflex
uplow \x00CF\x00EF 24				# i with dieresis
#uplow \x00D0\x00F0 15				# letter eth
#uplow \x00D1\x00F1 1345			# n with tilde
uplow \x00D2\x00F2 135			# o with grave above
uplow \x00D3\x00F3 135			# o with acute above
uplow \x00D4\x00F4 135			# o with circumflex
#uplow \x00D5\x00F5 135			# o with tilde
uplow \x00D6\x00F6 135			# o with dieresis
# \x00D7	× multiplication sign	----------------------
#uplow \x00D8\x00F8 135			# o with stroke
uplow \x00D9\x00F9 136			# u with grave above
uplow \x00DA\x00FA 136			# u with acute above
uplow \x00DB\x00FB 136			# u with circumflex above
uplow \x00DC\x00FC 136				# u with dieeresis
uplow \x00DD\x00FD 13456		# y with acute above
#uplow \x00DE\x00FE 2345			# letter thorn
letter \x00DF 2346		# small sharp s
uplow \x0174\x0175 2456 w with circumflex
uplow \x0176\x0177 13456 # y with circumflex
uplow \x0178\x00ff 13456 # y with diaeresis
uplow \x1ef2\x1ef3 13456 # y with grave

largesign \x00C0 23-1      [C0] upper a grave
largesign \x00E0   23-1      [E0] lower a grave

largesign \x00C1 25-1      [C1] upper a acute
largesign \x00E1   25-1      [E1] lower a acute

largesign \x00C2 4-1      [C2] upper a circumflex
largesign \x00E2   4-1      [E2] lower a circumflex

#largesign \x00C3 4-1      [C3] upper a tilde
#largesign \x00E3   4-1      [E3] lower a tilde

largesign \x00C4 45-1      [C4] upper a dieresis
largesign \x00E4   45-1      [E4] lower a dieresis

#largesign \x00C5 4-1      [C5] upper a ring
#largesign \x00E5   4-1      [E5] lower a ring

largesign \x00C6 1-15     [C6] upper ae
largesign \x00E6   1-15			[E6] lower ae

#largesign \x00C7 4-14     [C7] upper c cedilla
#largesign \x00E7   4-14     [E7] lower c cedilla

largesign \x00C8 23-15     [C8] upper e grave
largesign \x00E8   23-15     [E8] lower e grave

largesign \x00C9 25-15     [C9] upper e acute
largesign \x00E9   25-15     [E9] lower e acute

largesign \x00CA 4-15     [CA] upper e circumflex
largesign \x00EA   4-15     [EA] lower e circumflex

largesign \x00CB 45-15     [CB] upper e dieresis
largesign \x00EB   45-15     [EB] lower e dieresis

largesign \x00CC 23-24     [CC] upper i grave
largesign \x00EC   23-24     [EC] lower i grave

largesign \x00CD 25-24     [CD] upper i acute
largesign \x00ED   25-24     [ED] lower i acute

largesign \x00CE 4-24     [CE] upper i circumflex
largesign \x00EE   4-24     [EE] lower i circumflex

largesign \x00CF 45-24     [CF] upper i dieresis
largesign \x00EF   45-24     [EF] lower i dieresis

#largesign \x00D0 4-15     [D0] upper eth
#largesign \x00F0   4-15     [F0] lower eth

#largesign \x00D1 4-1345   [D1] upper n tilde
#largesign \x00F1   4-1345   [F1] lower n tilde

largesign \x00D2 23-135    [D2] upper o grave
largesign \x00F2   23-135    [F2] lower o grave

largesign \x00D3 25-135    [D3] upper o acute
largesign \x00F3   25-135    [F3] lower o acute

largesign \x00D4 4-135    [D4] upper o circumflex
largesign \x00F4   4-135    [F4] lower o circumflex

#largesign \x00D5 4-135    [D5] upper o tilde
#largesign \x00F5   4-135    [F5] lower o tilde

largesign \x00D6 45-135    [D6] upper o dieresis
largesign \x00F6   45-135			[F6] lower o dieresis

#largesign \x00D8 4-135    [D8] upper o slash
#largesign \x00f8   4-135    [F8] lower o slash

largesign \x00D9 23-136    [D9] upper u grave
largesign \x00F9   23-136    [F9] lower u grave

largesign \x00DA 25-136    [DA] upper u acute
largesign \x00FA   25-136    [FA] lower u acute

largesign \x00DB 4-136    [DB] upper u circumflex
largesign \x00FB   4-136    [FB] lower u circumflex

largesign \x00DC 45-136    [DC] upper u dieresis
largesign \x00FC   54-136    [FC] lower u dieresis

largesign \x00DD 25-13456  [DD] upper y acute
largesign \x00FD   25-13456  [FD] lower y acute

#largesign \x00DE 4-2345   [DE] upper t horn
#largesign \x00FE   4-2345   [FE] lower t horn

largesign \x00DF 234-234 (DF) lower ss

largesign \x0174 4-2456 lower w circumflex
largesign \x0175 4-2456 upper w circumflex

largesign \x0176 4-13456 upper y circumflex
largesign \x0177 4-13456 lower y circumflex

largesign \x0178 45-13456 upper y with dieresis
largesign \x00FF 45-13456 lower y with dieresis

largesign \x1EF2 23-13456 upper y with grave
largesign \x1EF3 23-13456 lower y with grave

hyphen 	\x2010 36		 # 8208			hyphen

# punctuation \x2011 36		 # 8209			non-breaking hyphen
punctuation \x2011 23478	# 8209  non-breaking hyphen


always	\x2013 56-36		 # 8211		smart minus sign


always	\x201C 236	 # 8220			smart opening double quote
always	\x201D 356	 # 8221			smart closing double quote
always	\x201E 236	 # 8222			smart double low quotation mark
always	\x201F 356	 # 8223			smart double high reverse quotation mark


# mathematical symbols
decpoint . 2
always < 246
joinword = 56-2356
joinnum = 56-2356
always > 135
midnum + 0-56-235-3456
joinnum + 56-235
joinword + 56-235
midnum - 36-3456
always - 36
joinnum × 56-236
joinword × 56-236
midnum ÷ 0-56-256-3456 division sign
joinnum ÷ 56-256
joinword ÷ 56-256
begnum £ 123
always £ 4-123 pounds

# other special characters
always © 45-14 copyright
sign  45-2345 trademark
sign ® 45-1235 registered
always ¶ 1234-345 paragraph
always § 234-3 section
always ° 356 degrees
begnum $ 256
always $ 4-256
always ¢ 4-14 cents
sign  4-15	euro
always  4-15	euro
always ¥ 4-13456 yen
always µ 2-134 mu

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

literal .com
literal .edu
literal .gov
literal .mil
literal .net
literal .org
 include countries.cti

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

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

literal .tar
literal .zip

