# liblouis: Finnish 8 dot braille 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
# liblouis  comes with ABSOLUTELY NO WARRANTY.

# Created by Code Factory S.L.

include text_nabcc.dis

letter \x0002 1278
letter \x0003 1478
letter \x0004 14578
letter \x0005 2678
letter \x0006 12478
letter \x0007 124578
letter \x0008 12578
letter \x0009 3578
letter \x000A 24578
letter \x000B 1378
letter \x000C 12378
letter \x000D 13478
letter \x000E 134578
letter \x000F 23678
letter \x0010 123478
letter \x0011 1234578
letter \x0012 123578
letter \x0013 23478
letter \x0014 234578
letter \x0015 35678
letter \x0016 123678
letter \x0017 245678
letter \x0018 134678
letter \x0019 1345678
letter \x001A 135678
letter \x001B 345678
letter \x001C 12345678
letter \x001D 4678
letter \x001E 4578
letter \x001F 67

letter \x0020 0

space \x00a0 0
#space \t 0-0
#space \s 0

# non Capital characters 
letter a 1
letter b 12
letter c 14
letter d 145
letter e 15
letter f 124
letter g 1245
letter h 125
letter i  24
letter j  245
letter k 13
letter l 123
letter m 134
letter n 1345
letter o 135
letter p 1234
letter q 12345
letter r 1235
letter s 234
letter t  2345
letter u 136
letter v 1236
letter w  2456
letter x 1346
letter y 13456
letter z 1356

# capital characters
letter A 17
letter B 127
letter C 147
letter D 1457
letter E 157
letter F 1247
letter G 12457
letter H 1257
letter I  247
letter J  2457
letter K 137
letter L 1237
letter M 1347
letter N 13457
letter O 1357
letter P 12347
letter Q 123457
letter R 12357
letter S 2347
letter T  23457
letter U 1367
letter V 12367
letter W  24567
letter X 13467
letter Y 134567
letter Z 13567

# the decimal digits
include digits8Dots.uti



# punctuations 
punctuation ! 256
punctuation " 56
letter \x0023 3456
letter $ 2346
punctuation % 1456
punctuation & 12346
punctuation ' 5

punctuation ( 236
punctuation ) 356 
punctuation * 35
punctuation + 235
punctuation , 2 
letter - 36  
punctuation . 3
letter /  34

punctuation :  25
punctuation ;  23
punctuation < 126
punctuation = 2356
punctuation > 156
punctuation ? 26
letter @ 4

punctuation [   12356
letter \x005C  168 # escape for \
punctuation ]   23456
letter ^  457
letter _  346
letter `  1234568

punctuation {  1246
punctuation |   456
punctuation }  12456
letter ~  45
letter \x007f  7 


#Hex Dots Dec Char Description
letter \X00C2 24578 # 194Â Latin capital letter a with circumflex
letter \X00CA  1267 # 202Ê Latin capital letter e with circumflex
letter \X00CE  1467 # 206Î Latin capital letter i with circumflex
letter \X00D4  14567 # 212Ô Latin capital letter o with circumflex
letter \X00DB  1567 # 219Û Latin capital letter u with circumflex
letter \X00E2 1678 # 226â Latin small letter a with circumflex
letter \X00EA  12678 # 234ê Latin small letter e with circumflex
letter \X00EE  14678 # 238î Latin small letter i with circumflex
letter \X00F4  145678 # 244ô Latin small letter o with circumflex
letter \X00FB  15678 # 251û Latin small letter u with circumflex

# The 5 letters with a grave accent `) use the [6-0] dot combinations:

#Hex Dots Dec Char Description
letter \X00C0  235678 # 192À Latin capital letter a with grave
letter \X00C8  3578 # 200È Latin capital letter e with grave
letter \X00CC  57 # 204Ì Latin capital letter i with grave
letter \X00D2 578 # 210Ò Latin capital letter o with grave
letter \X00D9 35678 # 217Ù Latin capital letter u with grave
letter \X00E0  123568 # 224à Latin small letter a with grave
letter \X00E8  23468 # 232è Latin small letter e with grave
letter \X00EC  348 # 236ì Latin small letter i with grave
letter \X00F2 3468 # 242ò Latin small letter o with grave
letter \X00F9 234568 # 249ù Latin small letter u with grave

# The6 letters with an acute accent ') use the [a-f] dot combinations with
# dots 3 and 6 added:

#Hex Dots Dec Char Description
letter \X00C1 28 # 193Á Latin capital letter a with acute
letter \X00C9 1234567 # 201É Latin capital letter e with acute
letter \X00CD 258 # 205Í Latin capital letter i with acute
letter \X00D3 267 # 211Ó Latin capital letter o with acute
letter \X00DA 268 # 218Ú Latin capital letter u with acute
letter \X00DD 3568 # 221Ý Latin capital letter y with acute
letter \X00E1 168 # 225á Latin small letter a with acute
letter \X00E9 123456 # 233é Latin small letter e with acute
letter \X00ED 2478 # 237í Latin small letter i with acute
letter \X00F3 13578 # 243ó Latin small letter o with acute
letter \X00FA 13678 # 250ú Latin small letter u with acute
letter \X00FD 24568 # 253ý Latin small letter y with acute

# The 6 letters with a dieresis accent ") use the [f-j] dot combinations with
# dots 3 and 6 added, and the number sign because it fits the sequence
# reasonably well):

#Hex Dots Dec Char Description
letter \X00C4 3457 # 196Ä Latin capital letter a with diaeresis
letter \X00CB 2358 # 203Ë Latin capital letter e with diaeresis
letter \X00CF 23568 # 207Ï Latin capital letter i with diaeresis
letter \X00D6  2467 # 214Ö Latin capital letter o with diaeresis
letter \X00DC  12567 # 220Ü Latin capital letter u with diaeresis
letter \X00E4 345 # 228ä Latin small letter a with diaeresis
letter \X00EB 12468 # 235ë Latin small letter e with diaeresis
letter \X00EF 124568 # 239ï Latin small letter i with diaeresis
letter \X00F6  246 # 246ö Latin small letter o with diaeresis
letter \X00FC  1256 # 252ü Latin small letter u with diaeresis
letter \X00FF 134568 # 255ÿ Latin small letter y with diaeresis

# There is no uppercase y-dieresis in the  Latin 1 character set. The German
# lowercase double-s, which also doesn't have an uppercase counterpart in the
#  Latin 1 character set, uses its representation:

#Hex Dots Dec Char Description
letter \X00DF 34568 # 223ß Latin small letter sharp s

# The remaining accented letters are:

#Hex Dots Dec Char Description
letter \X00C3 3467 # 195Ã Latin capital letter a with tilde
letter \X00D1 2567 # 209Ñ Latin capital letter n with tilde
letter \X00D5  267 # 213Õ Latin capital letter o with tilde
letter \X00C5 167 # 197Å Latin capital letter a with ring above
letter \X00C7 1578 # 199Ç Latin capital letter c with cedilla
letter \X00D8 1567 # 216Ø Latin capital letter o with stroke
letter \X00C6 47 # 198Æ Latin capital letter ae
letter \X00D0 3567 # 208Ð Latin capital letter eth
letter \X00DE 2357 # 222Þ Latin capital letter thorn
letter \X00E3 13678 # 227ã Latin small letter a with tilde
letter \X00F1 13458 # 241ñ Latin small letter n with tilde
letter \X00F5  1358 # 245õ Latin small letter o with tilde
letter \X00E5 16 # 229å Latin small letter a with ring above
letter \X00E7 1234678 # 231ç Latin small letter c with cedilla
letter \X00F8 24678 # 248ø Latin small letter o with stroke
letter \X00E6 34578 # 230æ Latin small letter ae
letter \X00F0 23458 # 240ð Latin small letter eth
letter \X00FE 12348 # 254þ Latin small letter thorn
