#
# Copyright (C) 1995-2008 by The BRLTTY Developers.
#
#  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/>.

# BRLTTY Text Table - 8-dot Icelandic
#
# originally written by: Samuel Thibault <samuel.thibault@ens-lyon.org>
# Updated and maintained by Birkir R. Gunnarsson birkir@midstod.is
# last updated February 16th, 2012
# Table now compliant with the official IceBraille specifications
# which can be found at http://www.midstod.is/Pages/239

space \s 0		SPACE
punctuation ! 2357		EXCLAMATION MARK
punctuation " 56		QUOTATION MARK
sign # 3456 number sign
sign $ 14578 dollar sign
sign % 46 per cent
sign & 123468 ampersand
punctuation ' 5		APOSTROPHE
punctuation ( 236		LEFT PARENTHESIS
punctuation ) 356		RIGHT PARENTHESIS
sign * 35 asterisk
math + 235 plus sign
punctuation , 2		COMMA
punctuation - 36		HYPHEN-MINUS
punctuation . 3		FULL STOP
math / 34 slash
include digits8Dots.uti
punctuation : 25 COLON
punctuation ; 23 SEMICOLON
math < 358 less than
math = 2356 equals
math > 267 greater than
punctuation ? 26 ? questionmark
sign @ 123456 at sign
punctuation [ 12356 left bracket
sign \\ 347 backslash
punctuation ] 23456 right bracket
sign ^ 346 caret/superscript symbol
sign _ 3678 hyphen/underline
punctuation { 123567 left brace
sign | 4568 vertical bar
punctuation } 234568 right brace

# misc. punctuation and math symbols, less frequently used
sign \X2026 6 elipsis
punctuation \X201E 2378 open quotation symbol, used in Icelandic quotes
sign ~ 457 tilde
math ` 4
math ° 256 degrees
sign ¨ 38 dieresis
sign \X2022 37 bullet
punctuation \x2014 367 em dash
punctuation \X2013 368 en dash, long dash
sign © 1478 copyright
sign \X2122 234578 trademark
sign ® 123578 registerred
sign \X20AC 1578 Euro symbol
sign \x00A3 123478 pound sign
sign \X00AB 2578 cents
sign \x00A5 1345678 yen
math \X00B1 123568 plus or minus
math \x00F7 2367 divided by
noback sign \X25CF 35	# 9679 black circle

# English alphabet, Icelandic uses all of these though c, w and z are not used in the Icelandic language
uppercase A 17		LATIN CAPITAL LETTER A
uppercase B 127		LATIN CAPITAL LETTER B
uppercase C 147		LATIN CAPITAL LETTER C
uppercase D 1457		LATIN CAPITAL LETTER D
uppercase E 157		LATIN CAPITAL LETTER E
uppercase F 1247		LATIN CAPITAL LETTER F
uppercase G 12457		LATIN CAPITAL LETTER G
uppercase H 1257		LATIN CAPITAL LETTER H
uppercase I 247		LATIN CAPITAL LETTER I
uppercase J 2457		LATIN CAPITAL LETTER J
uppercase K 137		LATIN CAPITAL LETTER K
uppercase L 1237		LATIN CAPITAL LETTER L
uppercase M 1347		LATIN CAPITAL LETTER M
uppercase N 13457		LATIN CAPITAL LETTER N
uppercase O 1357		LATIN CAPITAL LETTER O
uppercase P 12347		LATIN CAPITAL LETTER P
uppercase Q 123457		LATIN CAPITAL LETTER Q
uppercase R 12357		LATIN CAPITAL LETTER R
uppercase S 2347		LATIN CAPITAL LETTER S
uppercase T 23457		LATIN CAPITAL LETTER T
uppercase U 1367		LATIN CAPITAL LETTER U
uppercase V 12367		LATIN CAPITAL LETTER V
uppercase W 24567		LATIN CAPITAL LETTER W
uppercase X 13467		LATIN CAPITAL LETTER X
uppercase Y 134567		LATIN CAPITAL LETTER Y
uppercase Z 13567		LATIN CAPITAL LETTER Z
lowercase a 1		LATIN SMALL LETTER A
lowercase b 12		LATIN SMALL LETTER B
lowercase c 14		LATIN SMALL LETTER C
lowercase d 145		LATIN SMALL LETTER D
lowercase e 15		LATIN SMALL LETTER E
lowercase f 124		LATIN SMALL LETTER F
lowercase g 1245		LATIN SMALL LETTER G
lowercase h 125		LATIN SMALL LETTER H
lowercase i 24		LATIN SMALL LETTER I
lowercase j 245		LATIN SMALL LETTER J
lowercase k 13		LATIN SMALL LETTER K
lowercase l 123		LATIN SMALL LETTER L
lowercase m 134		LATIN SMALL LETTER M
lowercase n 1345		LATIN SMALL LETTER N
lowercase o 135		LATIN SMALL LETTER O
lowercase p 1234		LATIN SMALL LETTER P
lowercase q 12345		LATIN SMALL LETTER Q
lowercase r 1235		LATIN SMALL LETTER R
lowercase s 234		LATIN SMALL LETTER S
lowercase t 2345		LATIN SMALL LETTER T
lowercase u 136		LATIN SMALL LETTER U
lowercase v 1236		LATIN SMALL LETTER V
lowercase w 2456		LATIN SMALL LETTER W
lowercase x 1346		LATIN SMALL LETTER X
lowercase y 13456		LATIN SMALL LETTER Y
lowercase z 1356		LATIN SMALL LETTER Z
# punctuation \x00a0 0		NO-BREAK SPACE

# letters specific to Icelandic (though part of the Windows 1252 set)
uppercase \x00c1 167		LATIN CAPITAL LETTER A WITH ACUTE
uppercase \x00c6 3457		LATIN CAPITAL LETTER AE
uppercase \x00c9 23467		LATIN CAPITAL LETTER E WITH ACUTE
uppercase \x00cd 1267		LATIN CAPITAL LETTER I WITH ACUTE
uppercase \x00d0 1567		LATIN CAPITAL LETTER ETH
uppercase \x00d3 14567		LATIN CAPITAL LETTER O WITH ACUTE
uppercase \x00d6 2467		LATIN CAPITAL LETTER O WITH DIAERESIS
uppercase \x00da 124567		LATIN CAPITAL LETTER U WITH ACUTE
uppercase \x00dd 123467		LATIN CAPITAL LETTER Y WITH ACUTE
uppercase \x00de 12467		LATIN CAPITAL LETTER THORN
lowercase \x00e1 16		LATIN SMALL LETTER A WITH ACUTE
lowercase \x00e6 345		LATIN SMALL LETTER AE
lowercase \x00e9 2346		LATIN SMALL LETTER E WITH ACUTE
lowercase \x00ed 126		LATIN SMALL LETTER I WITH ACUTE
lowercase \x00f0 156		LATIN SMALL LETTER ETH
lowercase \x00f3 1456		LATIN SMALL LETTER O WITH ACUTE
lowercase \x00f6 246		LATIN SMALL LETTER O WITH DIAERESIS
lowercase \x00fa 12456		LATIN SMALL LETTER U WITH ACUTE
lowercase \x00fd 12346		LATIN SMALL LETTER Y WITH ACUTE
lowercase \x00fe 1246		LATIN SMALL LETTER THORN
