# Define all single-cell characters needed.
#
#  Copyright (C) 2008 JJB Software, Inc. www.jjb-software.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/>.

space \s 0
space \x000a 0
space \x000c 0
space \x000d 0
space \x001b 1b
space \x00a0 a
space \t 9
punctuation ! 5
punctuation " 4
sign # 3456
sign $ 46
sign % 123456
punctuation & 12346
punctuation ' 6
punctuation ( 236
punctuation ) 356
sign * 35
math + 235
punctuation , 2
punctuation - 36
punctuation . 3
math / 256
include digits6DotsPlusDot6.uti
punctuation : 25
punctuation ; 23
math < 56
math = 2356
math > 45
punctuation ? 26
punctuation @ 3457

include latinLetterDef8Dots.uti

punctuation [ 123567
punctuation \\ 347
punctuation ] 234567
math ^ 23467
punctuation _ 4567
sign ` 345
punctuation { 12356
sign | 34
punctuation } 23456
math ~ 2346
sign \x007f 456

noback sign \X25CF 35	# 9679 black circle
