#
# Copyright (C) 1995-2009 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 - Tibetan
#
# Samuel Thibault <samuel.thibault@ens-lyon.org>
#
# From "Braille without borders"

# generated by ttbtest
space	\s	0	# SPACE
punctuation	!	2358	# EXCLAMATION MARK
punctuation	"	23568	# QUOTATION MARK
punctuation	#	34568	# NUMBER SIGN
punctuation	$	12468	# DOLLAR SIGN
punctuation	%	1468	# PERCENT SIGN
punctuation	&	23468	# AMPERSAND
punctuation	'	3	# APOSTROPHE
punctuation	(	2368	# LEFT PARENTHESIS
punctuation	)	3568	# RIGHT PARENTHESIS
punctuation	*	358	# ASTERISK
punctuation	+	3468	# PLUS SIGN
punctuation	,	28	# COMMA
punctuation	-	36	# HYPHEN-MINUS
punctuation	.	2568	# FULL STOP
punctuation	/	348	# SOLIDUS
include loweredDigits6Dots.uti
punctuation	:	258	# COLON
punctuation	;	238	# SEMICOLON
punctuation	<	1268	# LESS-THAN SIGN
punctuation	=	1234568	# EQUALS SIGN
punctuation	>	3458	# GREATER-THAN SIGN
punctuation	?	268	# QUESTION MARK
punctuation	@	47	# COMMERCIAL AT
uppercase	A	178	# LATIN CAPITAL LETTER A
uppercase	B	1278	# LATIN CAPITAL LETTER B
uppercase	C	1478	# LATIN CAPITAL LETTER C
uppercase	D	14578	# LATIN CAPITAL LETTER D
uppercase	E	1578	# LATIN CAPITAL LETTER E
uppercase	F	12478	# LATIN CAPITAL LETTER F
uppercase	G	124578	# LATIN CAPITAL LETTER G
uppercase	H	12578	# LATIN CAPITAL LETTER H
uppercase	I	2478	# LATIN CAPITAL LETTER I
uppercase	J	24578	# LATIN CAPITAL LETTER J
uppercase	K	1378	# LATIN CAPITAL LETTER K
uppercase	L	12378	# LATIN CAPITAL LETTER L
uppercase	M	13478	# LATIN CAPITAL LETTER M
uppercase	N	134578	# LATIN CAPITAL LETTER N
uppercase	O	13578	# LATIN CAPITAL LETTER O
uppercase	P	123478	# LATIN CAPITAL LETTER P
uppercase	Q	1234578	# LATIN CAPITAL LETTER Q
uppercase	R	123578	# LATIN CAPITAL LETTER R
uppercase	S	23478	# LATIN CAPITAL LETTER S
uppercase	T	234578	# LATIN CAPITAL LETTER T
uppercase	U	13678	# LATIN CAPITAL LETTER U
uppercase	V	123678	# LATIN CAPITAL LETTER V
uppercase	W	245678	# LATIN CAPITAL LETTER W
uppercase	X	134678	# LATIN CAPITAL LETTER X
uppercase	Y	1345678	# LATIN CAPITAL LETTER Y
uppercase	Z	135678	# LATIN CAPITAL LETTER Z
punctuation	[	123568	# LEFT SQUARE BRACKET
punctuation	\\	168	# REVERSE SOLIDUS
punctuation	]	234568	# RIGHT SQUARE BRACKET
punctuation	^	457	# CIRCUMFLEX ACCENT
punctuation	_	456	# LOW LINE
punctuation	`	4	# GRAVE ACCENT
lowercase	a	18	# LATIN SMALL LETTER A
lowercase	b	128	# LATIN SMALL LETTER B
lowercase	c	148	# LATIN SMALL LETTER C
lowercase	d	1458	# LATIN SMALL LETTER D
lowercase	e	158	# LATIN SMALL LETTER E
lowercase	f	1248	# LATIN SMALL LETTER F
lowercase	g	12458	# LATIN SMALL LETTER G
lowercase	h	1258	# LATIN SMALL LETTER H
lowercase	i	248	# LATIN SMALL LETTER I
lowercase	j	2458	# LATIN SMALL LETTER J
lowercase	k	138	# LATIN SMALL LETTER K
lowercase	l	1238	# LATIN SMALL LETTER L
lowercase	m	1348	# LATIN SMALL LETTER M
lowercase	n	13458	# LATIN SMALL LETTER N
lowercase	o	1358	# LATIN SMALL LETTER O
lowercase	p	12348	# LATIN SMALL LETTER P
lowercase	q	123458	# LATIN SMALL LETTER Q
lowercase	r	12358	# LATIN SMALL LETTER R
lowercase	s	2348	# LATIN SMALL LETTER S
lowercase	t	23458	# LATIN SMALL LETTER T
lowercase	u	1368	# LATIN SMALL LETTER U
lowercase	v	12368	# LATIN SMALL LETTER V
lowercase	w	24568	# LATIN SMALL LETTER W
lowercase	x	13468	# LATIN SMALL LETTER X
lowercase	y	134568	# LATIN SMALL LETTER Y
lowercase	z	13568	# LATIN SMALL LETTER Z
punctuation	{	23678	# LEFT CURLY BRACKET
punctuation	|	12568	# VERTICAL LINE
punctuation	}	35678	# RIGHT CURLY BRACKET
punctuation	~	45	# TILDE
punctuation	\x00a0	0	# NO-BREAK SPACE
letter	\x0f40	13	# TIBETAN LETTER KA
letter	\x0f41	14	# TIBETAN LETTER KHA
letter	\x0f42	1245	# TIBETAN LETTER GA
letter	\x0f44	2356	# TIBETAN LETTER NGA
letter	\x0f45	1456	# TIBETAN LETTER CA
letter	\x0f46	13456	# TIBETAN LETTER CHA
letter	\x0f47	12345	# TIBETAN LETTER JA
letter	\x0f49	345	# TIBETAN LETTER NYA
letter	\x0f4f	2345	# TIBETAN LETTER TA
letter	\x0f50	23456	# TIBETAN LETTER THA
letter	\x0f51	145	# TIBETAN LETTER DA
letter	\x0f53	1345	# TIBETAN LETTER NA
letter	\x0f54	1234	# TIBETAN LETTER PA
letter	\x0f55	12346	# TIBETAN LETTER PHA
letter	\x0f56	12	# TIBETAN LETTER BA
letter	\x0f58	134	# TIBETAN LETTER MA
letter	\x0f59	1346	# TIBETAN LETTER TSA
letter	\x0f5a	1356	# TIBETAN LETTER TSHA
letter	\x0f5b	123456	# TIBETAN LETTER DZA
letter	\x0f5d	2456	# TIBETAN LETTER WA
letter	\x0f5e	146	# TIBETAN LETTER ZHA
letter	\x0f5f	234	# TIBETAN LETTER ZA
letter	\x0f60	1246	# TIBETAN LETTER -A
letter	\x0f61	245	# TIBETAN LETTER YA
letter	\x0f62	1235	# TIBETAN LETTER RA
letter	\x0f63	123	# TIBETAN LETTER LA
letter	\x0f64	156	# TIBETAN LETTER SHA
letter	\x0f66	2346	# TIBETAN LETTER SA
letter	\x0f67	125	# TIBETAN LETTER HA
letter	\x0f68	1	# TIBETAN LETTER A
letter	\x0f90	13	# TIBETAN SUBJOINED LETTER KA
letter	\x0f91	14	# TIBETAN SUBJOINED LETTER KHA
letter	\x0f92	1245	# TIBETAN SUBJOINED LETTER GA
letter	\x0f94	2356	# TIBETAN SUBJOINED LETTER NGA
letter	\x0f95	1456	# TIBETAN SUBJOINED LETTER CA
letter	\x0f96	13456	# TIBETAN SUBJOINED LETTER CHA
letter	\x0f97	12345	# TIBETAN SUBJOINED LETTER JA
letter	\x0f99	345	# TIBETAN SUBJOINED LETTER NYA
letter	\x0f9f	2345	# TIBETAN SUBJOINED LETTER TA
letter	\x0fa0	23456	# TIBETAN SUBJOINED LETTER THA
letter	\x0fa1	145	# TIBETAN SUBJOINED LETTER DA
letter	\x0fa3	1345	# TIBETAN SUBJOINED LETTER NA
letter	\x0fa4	1234	# TIBETAN SUBJOINED LETTER PA
letter	\x0fa5	12346	# TIBETAN SUBJOINED LETTER PHA
letter	\x0fa6	12	# TIBETAN SUBJOINED LETTER BA
letter	\x0fa8	134	# TIBETAN SUBJOINED LETTER MA
letter	\x0fa9	1346	# TIBETAN SUBJOINED LETTER TSA
letter	\x0faa	1356	# TIBETAN SUBJOINED LETTER TSHA
letter	\x0fab	123456	# TIBETAN SUBJOINED LETTER DZA
letter	\x0fad	2456	# TIBETAN SUBJOINED LETTER WA
letter	\x0fae	146	# TIBETAN SUBJOINED LETTER ZHA
letter	\x0faf	234	# TIBETAN SUBJOINED LETTER ZA
letter	\x0fb0	1246	# TIBETAN SUBJOINED LETTER -A
letter	\x0fb1	245	# TIBETAN SUBJOINED LETTER YA
letter	\x0fb2	1235	# TIBETAN SUBJOINED LETTER RA
letter	\x0fb3	123	# TIBETAN SUBJOINED LETTER LA
letter	\x0fb4	156	# TIBETAN SUBJOINED LETTER SHA
letter	\x0fb6	2346	# TIBETAN SUBJOINED LETTER SA
letter	\x0fb7	125	# TIBETAN SUBJOINED LETTER HA
letter	\x0fb8	1	# TIBETAN SUBJOINED LETTER A
space	\x2002	0	# EN SPACE
space	\x2003	0	# EM SPACE
space	\x2004	0	# THREE-PER-EM SPACE
space	\x2005	0	# FOUR-PER-EM SPACE
space	\x2006	0	# SIX-PER-EM SPACE
punctuation	\x2007	0	# FIGURE SPACE
space	\x2008	0	# PUNCTUATION SPACE
space	\x2009	0	# THIN SPACE
space	\x200a	0	# HAIR SPACE
punctuation	\x202f	0	# NARROW NO-BREAK SPACE
space	\x205f	0	# MEDIUM MATHEMATICAL SPACE
