# liblouis: Latvian Grade 1 Braille Table
#
#  Copyright (C) 2004-2008 ViewPlus Technologies, Inc. www.viewplus.com
#  Copyright (C) 2004-2006 JJB Software, Inc. www.jjb-software.com
#  Copyright (C) 2012 Mesar Hameed <mesar.hameed@gmail.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/>.

# Created & maintained by Leon Ungier <Leon.Ungier@ViewPlus.com>.

include text_nabcc.dis

# ----------- define all chars --------------------------------------

space \t 0 tab						#  9
space \x000A 0
space \x000D 0
space \s 0 blank					# 32
punctuation ! 235				exclamation sign 						x0021
punctuation " 356				double quote								x0022
sign # 3456							number sign									x0023
sign $ 4-256						dollar sign									x0024
sign % 25-1234					percent sign								x0025
sign & 4-12346					ampersand										z0026
punctuation ' 3					apostrophe									x0027
punctuation ( 2356			left parenthesis						x0028
punctuation ) 2356			right parenthesis						x0029
sign * 35-35						asterisk										x002A
math + 56-235						plus												002B
punctuation , 2					coma												002C
punctuation - 36			hyphen-minus								002D
punctuation . 256				point												002E
math / 34								solidus											002F

include digits6Dots.uti

punctuation : 25				colon								x003A
punctuation ; 23				semicolon						x003B
punctuation < 126				less-than sign			x003C
math = 123456						equal sign					x003D
math > 345							greater-than sign		x003E
punctuation ? 26				question mark				x003F
sign @ 3456-12456				commercial at				x0040

uplow \x0100\x0101 16			letter A with macron
uplow \x010C\x010D 146		letter C with caron
uplow \x0112\x0113 156		letter E with macron
uplow \x0122\x0123 12456	letter g with cedilla
uplow \x012A\x012B 246		letter I with macron
uplow \x0136\x0137 136		letter K with cedilla
uplow \x013B\x013C 1236		letter L with cedilla
uplow \x0145\x0146 13456	Letter N with cedilla
uplow \x014C\x014D 1356		letter O with macron
uplow \x0156\x0157 16-12346	letter T with cedilla
uplow \x0160\x0161 2346			letter S with caron
uplow \x016A\x016B 346			letter U with macron
uplow \x017D\x017E 3456			letter Z with caron

# define the dot combinations that are different from the default.
# placed before the include to take precedence.
uplow Uu 34									letter U *** Different from other langs ***
uplow Vv 2456								letter V *** Different from other langs ***
uplow Zz 345								letter Z *** Different from other langs ***
include latinLetterDef6Dots.uti

punctuation [ 6-2356		left square bracket		x005B
sign \\ 3456-1256				reverse solidus				x005C
punctuation ] 356-3			right square bracket	x005D
sign ^ 45								circumflex accent			x005E
sign _ 6-36							low line							x005F
sign ` 45-4							grave accent					x0060

# a - z								# 97 - 122							x0061-x007A

punctuation { 45-236		left curly bracket		x007B
sign | 456							vertical line					x007C
punctuation } 45-356		right curly bracket		x007D
math ~ 5								tilde									x007E
sign \x0080 15-136-1235-135										x0080

space \X00A0 0		no-break space																x00A0
sign ¢ 4-14				cent sign																			x00A2
sign £ 45-123			pound sign																		x00A3
sign ¤ 45-15			currency sign																	x00A4
sign ¥ 45-13456		yen	sign																			x00A5
sign § 346				section sign																	x00A7
sign © 2356-6-14-2356		copyright																x00A9
punctuation « 236		left-pointing double angle quotation 		x00AB
punctuation \x00AD 36 soft hyphen
sign ° 4-356			degree sign																		x00B0
sign ² 4-6-126		superscript 2 sign														x00B2
sign ³ 4-6-146		superscript 3 sign														x00B3
sign µ 46-134			micro sign																		x00B5
sign ¶ 4-1234-345 pilcrow sign (paragraph)											x00B6
sign ¹ 1-27				superscript 1 sign														x00B9
punctuation » 356		right-pointing double angle quotation		x00BB
math ¼ 6-16-34-1456		vulgar fraction one quarter								x00BC
math ½ 6-16-34-126		vulgar fraction one half									x00BD
math ¾ 6-126-34-1456	vulgar fraction 3 quarters								x00BE



uplow \x00C0\x00E0 12356	letter a with grave							x00C0 / 00E0
uplow \x00C1\x00E1 16			letter a with acute									x00E1
uplow \x00C2\x00E2 16					letter a with circumflex						x00E2
uplow \x00C3\x00E3 126		letter a with tilde											x00E3
uplow Ää 345				A with diaeresis											x00C4 / 00E4
uplow Åå 16					A with ring above											x00C5 / 00E5
uplow \x00C6\x00E6 6-345	ae															x00C6
uplow Çç 12346							letter c with cedilla					x00C7 / 00E7
uplow Èè 2346								e with grave									x00C8 / 00E8
uplow \x00C9\x00E9 345			e with acute									x00E9
uplow \x00CA\x00EA 126			e with circumflex							x00EA
uplow \x00CB\x00EB 1246		e with diaeresis								x00EB
uplow \x00CD\x00ED 34			i with acute										x00ED
uplow \x00CE\x00EE 146		i with circumflex								x00EE
uplow \x00CF\x00EF 12456	i with diaeresis								x00CF / 00EF

uplow	\x00D3\x00F3	246		O with acute										x00D3 / 00F3
uplow \x00D4\x00F4 1456		o with circumflex												x00F4
uplow \x00D5\x00F5 246		o with tilde														x00F5
uplow Öö 246							O with diaeresis								x00D6 / 00F6
math × 236				multiplication sign											x00D7
uplow \x00D8\x00F8 246		o with stroke										x00D8 / 00F8

math ÷ 256				division sign										x00F7

uplow \x00DA\x00FA 346				u with acute							x00DA / 00FA
uplow \x00DB\x00FB 156				u with circumflex					x00FB
uplow \x00DC\x00FC 1256				u with diaeresis					x00FC
uplow \x00DD\x00FD 12346			y with acute							x00DD / 00FD

noback sign \X25CF 35-35			black circle

# the letter a with ogonek -----------------------------------
uplow \x0104\x0105 16

# the letter c with acute
uplow \x0106\x0107 146

uplow \x010C\x010D 146					C with caron
uplow \x010E\x010F 1456					D with caron


# the letter e with ogonek
uplow \x0118\x0119 156

uplow \x011A\x011B 126					E with caron

# the letter l with stroke
uplow \x0141\x0142 126

# the letter n with acute
uplow \x0143\x0144 1456
uplow \x0147\x0148 1246					N with caron

uplow \x0158\x0159 2456					R with caron

# the letter s	with acute
uplow \x015A\x015B 246

uplow \x0164\x0165 1256						T with caron
uplow \x016C\x016D 23456						U with breve
uplow \x016E\x016F 23456					U with ring above


# the letter z	with acute
uplow \x0179\x017A 2346

# the letter z with dot above
uplow \x017B\x017C 12346


punctuation	\x2010 36		 # 8208			hyphen
punctuation	\x2011 36		 # 8209			non-breaking hyphen
punctuation	\x2013 36		 # 8211			smart minus sign
punctuation	\x2018 3		 # 8216			smart single left quotation mark
punctuation	\x2019 3		 # 8217			smart single right quotation mark

punctuation	\x201C 236	 # 8220			smart opening double quote
punctuation	\x201D 356	 # 8221			smart closing double quote
punctuation	\x201E 236	 # 8222			smart double low quotation mark
punctuation	\x201F 356	 # 8223			smart double high reverse quotation mark
punctuation  \x2026 3-3-3 # 8230		smart ellipsis

# ------------------------------------------------------


capsletter 46				# single capital letter indicator
begcapsword 6-6			# a block of consecutive capital letters indicator


numsign 3456		#	number sign, just one operand
midnum , 6
midnum . 256
midnum + 235
midnum - 36
midnum / 256
midnum : 25
midnum = 2356

# endnum # 56-3456

prepunc " 236
postpunc " 356

prepunc ' 6-236
postpunc ' 356-3
postpunc '' 356
postpunc ''' 356-3-356

repeated *** 16-16-16

prepunc `` 236
prepunc ` 6-236


repeated --- 36-36-36

repeated ::: 25-25-25

repeated ~~~ 156-156-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 \s­\s 36-36

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

literal .com
literal .edu
literal .gov
literal .mil
literal .net
literal .org

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

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

literal .tar
literal .zip
