# liblouis: Welsh Grade 1 table
#
# ------------
#-display-name: Welsh uncontracted braille
#
#+locale:cy
#+type:literary
#+contraction:no
#+grade:1
#
# 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 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 \t 9 tab
space \x001b 1b escape character for html back-translation
space \x00A0 a NO-BREAK SPACE <noBreak> 0020 NON-BREAKING SPACE 
include spaces.uti

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

